3.1 Cache Coherency

CacheCoherency产生的原因是在一个处理器系统中,不同的CacheMemory可能具有同一个数据的多个副本,在仅有一个数据副本的处理器系统中不存在Coherency问题。维护Cache Coherency的关键在于跟踪每一个Cache Block的状态,并根据CPU Core的读写操作及总线上的相应Transaction,更新Cache Block的状态,借此维护Cache CoherencyCache Coherency可以使用软件或者硬件方式保证。

在使用软件方式维护时,CPU需要提供专门的显式操作Cache的指令,包括Cache Block CopyMoveEvictionInvalidate等指令,多数微架构都提供了这样的指令,如PowerPC处理器设置的dcbtdcbfdcba等指令[43]

程序员可以使用这些指令,维护处理器系统的Cache Coherency。在进行DMA操作之前,可以将数据区域与主存储器通过软件指令保证Cache Coherency,进行DMA操作时,不需要硬件来维护Cache Coherency。在某种情况下,使用这种方式可以提高数据传送效率。

软件维护CacheCoherency的优点是硬件开销小,缺点在多数情况下对性能有较大影响,而且需要程序员的介入。多数情况下Cache Coherency由硬件维护。不同的处理器使用不同的Cache Coherency Protocol实现Cache Coherency。这些Protocol维护一个有限状态机FSM(Finite State Machine),根据存储器读写指令或者Bus Transaction,进行状态迁移和相应的Cache Block操作,隐式保证Cache Coherency,不需要程序员的介入。

根据Cache CoherencyProtocol维护Cache Block状态方法的不同,处理器可以使用Bus SnoopingDirectory这两大类机制。这两类机制的主要区别在于Directory机制全局统一管理不同Cache的状态;而在Bus Snooping机制中,每个Cache分别管理自身Cache Block的状态,并通过Interconnection进行不同Cache间的状态同步。

无论采用哪种机制,CoherencyProtocol所要求的Cache Block操作都可以通过InvalidateUpdate或者Read Snarfing策略完成。UpdateRead Snarfing策略需要更多的总线操作,对带宽和延迟都有很大影响,多数Cache Coherency Protocol采用了Invalidate策略。

最为经典的总线监听协议Write-Once[60]James Goodman1983年提出,是在x86ARMPower处理器中大行其道的MESI Protocol(也叫Illinois Protocol)的前身和一种变体,或者说是一种具体实现。

Write-OnceProtocol的实现关键在于其使用的特殊的Cache回写机制,即Write OnceWrite-OnceWrite-BackWrite-Through的综合。当使用这种机制时,对一个Cache Block进行第一次回写时,采用Write-Through策略将数据同时回写到Cache和主存储器,之后的写操作采用Write-Back,只回写到Cache而不回写到主存储器。

这种设计有利于在带宽和CoherencyProtocol的复杂度之间取得均衡。Write-Back机制能够有效节约带宽,但是由于主存储器中并没有最新的数据副本,增加了维护Cache Coherency的开销。Write-Through则相反。有关Write-BackWrite-Through的详细信息可以继续阅读本篇的后续章节。

通过之前的描述可以发现,在任何一种CacheCoherency Protocol中,每个Cache Block都有自己的一个状态字段。而维护Cache Coherency的关键在于维护每个Cache Block的状态域。Cache Controller通常使用一个状态机来维护这些状态域。

使用Write-Once回写机制实现Cache Coherency时,每一个CPU Core中的Cache Block需要设置4个状态位,用以识别当前Cache Block的状态,处于这些状态的Cache Block在收到不同的输入后,将进行状态迁移,以保证Cache Coherency

  • Invalid
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值