直接映射cache的组织结构

直接映射cache是计算机系统中使用的最简单的cache内存组织形式。

在直接映射的cache中,每个主存数据块都映射到特定的cacheline。直接映射cache的特点是其直接映射的结构和快速访问时间,但当多个内存数据块映射到同一cacheline时,可能会出现冲突。

22e833f6795e1656e582bfd483a761f6.jpeg

上图显示了4 kB(2^12)cache,其中包含64(2^6)cacheline ,每个cacheline有16(2^4)个字,每个字4个字节。 因此,cache大小为2^6 × 2^4 × 2^2B = 2^12B = 4kB。 

为了访问cache中的数据,CPU提供了一个32位内存地址。 cache控制器查找此地址,以确定请求的数据是否存在于任何cacheline中。 

CPU提供的内存地址分为三个主要部分:标签tag、索引index和偏移offset。 分解一下这些概念在我们的4 KB cache中的工作原理,有64行cacheline,每行有16个32bit(4字节)的字。

偏移量offset指定正在访问的cacheline中的字。 我们需要四个位来表示偏移量,因为我们在cacheline中有16个字。 由于每个内存字是32位(4字节),因此地址中的两个最小地址位被忽略(始终为零)。

索引index确定正在访问cache中的哪条cacheline。 由于我们的cache包含64条cacheline,我们需要六个位来索引。  在实践中。

标签tag包含内存地址的高位,唯一标识主存中的特定内存块。 从总地址大小中减去索引和偏移量,这里我们需要20位用于标签tag(地址大小-索引大小-偏移大小-字大小。=32位-6位-4位-2位。=20位tag)。

直接映射cache中的读操作

当CPU需要读取或写入数据时,它会提供一个内存地址。 内存地址分为tag、index和offset。 

使用tag在cache中执行搜索。 索引index用于选择cache中与请求的内存地址相对应的特定cacheline。 偏移offset从cacheline中选择搜索的字。 同时,将地址中的tag与存储在该cacheline中的tag进行比较。 

如果tag匹配,则为cache命中。 cacheline包含请求的数据,cacheline中已经存在的数据可以快速访问。 如果tag不匹配,则为cache未命中。 内存层次结构中下一级所需的内存数据块被加载到由索引位确定的cacheline中。 cacheline的tag更新为来自地址的新tag,使其为将来的访问做好准备。 

cache miss通常会触发异常,相应的中断处理程序会触发任务切换。 因此,CPU继续执行另一个任务,不会等待数据块被填充(linefill)到cacheline中。

在直接映射cache中处理写

写操作的主要问题是数据应该写到哪里:在cache中还是在主存中? 这是一个重要问题,因为cache是CPU私有的,只有L3在各种CPU之间共享。 如果数据的最新副本保存在L1或L2cache中,其他CPU可能不知道最新的副本存在于主存之外。 这被称为cache一致性问题。 

cache一致性要求存储在不同级别的内存层次结构(例如cache和主存)中的特定数据的所有副本必须保持同步。 

确保cache的一致性是一项复杂的任务,因为它需要有效的机制来跟踪和管理数据状态,并同步跨多个cache级别的访问。 然而,它对现代计算机系统的可靠性、可预测性和性能至关重要,特别是在多核和多处理器环境中。

在直接映射cache中,write策略是指如何在cache中管理write。在直接映射cache中处理write有两种主要策略:write through和write back。在write through cache中,当CPU执行写入操作时,数据不仅写入cache,而且立即写入主存中的相应位置。此策略确保主存始终包含最新数据,使其与cache中的数据一致。write through cache的优点是数据一致性以及简单可预测的行为,缺点是写入延迟(因为写入cache和主存都会带来一些延迟)和内存流量增加。

在write back cache中,当执行写入操作时,数据仅写入cache,主存中的相应位置稍后更新,通常当cacheline被驱逐或替换时。在此策略中,cache为每条cacheline维护一个dirty位,以跟踪修改后的数据。write backcache具有更低的写入延迟并减少内存流量。主要缺点是复杂性,因为管理dirty位并确保修改后的数据最终写回主内存,增加了cache管理的复杂性。

这些写入策略之间的选择取决于系统的具体要求及其愿意做出的权衡。write through更简单,确保数据一致性,但引入了更大的写入延迟。writeback提供更好的性能,但需要更复杂的cache管理来保持数据一致性。一些系统使用这两种策略的组合,允许cache在write back模式下运行,同时定期确保修改后的数据写回主内存以保持一致性。这种方法结合了这两种策略的优势,同样也增加了cache管理的复杂性。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值