4.6 Cache Write Policy

本文探讨了缓存层次结构中处理写操作的两种主要策略:Write Through和Write Back,以及它们对性能和错误容忍度的影响。Write Through策略通过同时更新缓存和内存来降低Write Traffic,但可能导致更高的总线带宽占用;而Write Back策略在缓存中暂存更改,减少了总线流量,但增加了Cache Coherence的复杂性。文章指出,选择哪种策略取决于具体微架构和设计目标,且高端处理器常采用Write Back策略配合Write Coalescing Cache来优化Write Traffic。
摘要由CSDN通过智能技术生成

如果有可能,我愿意放弃使用Write操作,Write操作不是在进行单纯地进行写,而是将Read建立的千辛万苦异常小心地毁于一旦,是Cache Hierarchy设计苦难的发源地。没有写操作在Cache Block中就不会有这么多状态,更没有复杂的Memory Consistency模型。

很多人都不喜欢写操作,这并不能阻挡它的真实存在。绝大多数人痛恨写操作,也不愿意去研究如何提高写操作的效率,写虽然非常讨厌,但是很少在速度上拖累大家,只是写太快了,带来了许多副作用经常影响大家。不允许写操作使用Cache貌似是个方法,却几乎没有程序员能够做到这一点。过分的限制写操作也并非良策,凡事总有适度。

这使得在CacheHierarchy设计中读写操作得到了区别对待。读的资质差了一些,有很多问题亟待解决,最Critical的是如何提高Load-Use Latency;对于写,只要不给大家添乱就已经足够,Cache BusBandwidth能少用点就少用点,能降低一点Bus Traffic就算一点,实在不能少用,就趁着别人不用的时候再用。从总线带宽的角度上看,LoadStore重要一些,在进行Cache优化时,更多的人关心读的效率。

在一个程序的执行过程中不可能不使用Write操作。如何在保证Memory Consistency的前提下,有效降低Write操作对Performance的影响,如何减少Write Traffic,是设计的重中之重。在一个处理器系统中,Write操作需要分两种情况分别讨论,一个是Write Hit,另一个是Write MissWrite Hit指在一次Write操作在进行Probe的过程中在当前CMPCache Hierarchy中命中,而Write Miss指没有命中。

我们首先讨论WriteHit,从直觉上看Write Hit相对较为容易,与此相关的有些概念几乎是常识。Write Hit时常用的处理方法有两种,一个是Write Through,另一个是Write Back[1]。相信绝大部分读者都明白这两种方法。Write Through方法指进行写操作时,数据同时进入当前Cache,和其下的一级Cache或者是主存储器;Write Back方法指进行写操作时,数据将直接写入当前Cache,而不会继续传递,当发生Cache Block Replace时,被改写的数据才会更新到其下的Cache或者主存储器中。

很多人认为Write-Back在降低Write Traffic上优于Write-Though策略,只是Write-Back的实现难于Write-Though,所以有些低端处理器使用了Write-Though策略,多数高端处理器采用Write-Back策略。

这种说法可能并不完全正确,也必将引发无尽的讨论。在没有拿到一个微架构的全部设计,在没有对这个微架构进行系统研究与分析之前,并不能得出其应该选用Write-Through或者是Write-Back策略的结论。即便拿到了所有资料,进行了较为系统的Qualitative ResearchQuantitative Analysis之后,你也很难得出有说服力的结论。

在目前已知的高端处理器中,SUNNiagaraNiagara 2微架构的L1 Cache使用Write-Through策略[81]AMD最新的Bulldozer微架构也在L1 Cache中使用Write-Through策略[74]IntelNehalemSandy Bridge微架构使用Write-Back策略。Write-ThroughWrite-Back策略各有其优点和不足,孰优孰劣很难说清。

Norman P.Jouppi列举了Write-Through策略的3大优点,一是有利于提高CPU CoreL1 Cache的总线带宽;二是Store操作可以集成在指令流水线中;三是Error-Tolerance [97]。这篇文章发表与1993年,但是绝大部分知识依然是Cache Write Policies的基础,值得借鉴。

其中前两条优点针对DirectMapped方式,非本节的重点,读者可参考[97]获得细节。制约Cache容量进一步增大的原因除了成本之外,还有Hit Time。如上文已经讨论过的,随着Cache容量的增加,Hit Time也随之增大。而Cache很难做到相对较大,这使得选择Direct Mapped方式时需要挑战JohnDavid2:1 Cache Rule of Thumb,目前在多处处理器系统中都不在使用Direct Mapped方式。

对这些Rule ofThumb的挑战都非一蹴而就。在某方面技术取得变革时,首先要Challenge的恰是之前的Rule of Thumb。善战者择时而动,而善战者只能攻城掠地,建立一个与旧世界类同的新世界,不会带来真正的改变。

革新者远在星辰之外,经得住大悲大喜,大耻大辱,忍受得住Stay Hungry Stay Foolish所带来的孤单寂寞。是几千年前孟子说过的“富贵不能淫,贫贱不能移,威武不能屈。居天下之广居,立天下之正位,行天下之大道。得志,与民由之,不得志,独行其道”。几千年祖辈的箴言真正习得是西方世界。

忽略以上这段文字。我们继续讨论Norma

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值