2.6 Cache Never Block

本文深入探讨了现代微架构中非阻塞缓存(Non-Blocking Cache)的重要性,它对于提高Superscalar处理器的并行度起到了关键作用。非阻塞缓存通过Miss Status Holding Registers (MSHRs) 和 Address Stack 实现,允许处理器在处理缓存未命中时保持流水线运行,避免阻塞。作者还回顾了Tomasulo算法在指令流水线中的地位,并指出非阻塞缓存设计的挑战与演进,包括处理存储器访问延迟、提高带宽以及应对各种异常情况。
摘要由CSDN通过智能技术生成

在一个微架构中,有两条值得重点关注的流水线,一个是指令流水线。另一个是Cache Controller使用的流水线,下文将其简称为Cache流水线。这两条流水线的实现对于微架构的性能至关重要。指令流水线的设计与Cache流水线相关,反之亦然。

19676月,来自IBMROBERT MACRO TOMASULO先生发明了最后以自己名字命令的算法[48],这个算法最终使得Alpha处理器,MIPS处理器,Power处理器,x86处理器,ARM系列处理器,所有采用OOO技术的处理器成为可能。1997Eckert-Mauchly Award正式授予TOMASULO先生, for the ingenious Tomasulo's algorithm, whichenabled out-of-order execution processors to beimplemented.

200843日,TOMASULO先生永远离开我们。他的算法也历经了多轮改进。即便在针对ILP的优化因为Memory Stall而处境艰难,TOMASULO算法也并不过时。虽然本篇文章的重点并不在SuperscalarOOO,仍然建议所有读者务必能够清晰地理解TOMASULO算法和Superscalar指令流水的细节。为节约篇幅,本篇不会对这些知识做进一步的说明。

而在Cache流水线中,Non-Blocking几乎等同于TOMASULO算法在指令流水中的地位。在现代处理器中,几乎所有Cache Hierarchy的设计都采用了Non-Blocking策略。Non-Blocking Cache实现为Superscalar处理器能够进一步发展提供了可能。

假设在一个Superscalar处理器中,一个时钟周期能够发射n条指令。这要求该处理器需要设置多个执行部件,提供充分的并行性。假设在这个处理器中,某类功能部件x所能提供的带宽为BWX,此处的带宽是借用存储器的概念,如果该功能部件需要4拍才能完成一次操作,那么该功能部件为指令流水线所提供的带宽为1/4

在一个应用的执行过程中使用这类功能部件所占的百分比为fX。那么只有当BWX/fX不小于n时,Superscalar处理器才能够充分的并行,否则该功能部件必将成为瓶颈。因此在微架构的设计中,通常并行设置多个执行较慢的功能部件以提高BWX参数,当然还有一个方法是缩小fX参数。如何缩小fX参数并不是微架构的关注领域,因为在一个给定的应用中,从微架构设计的角度上看,fX参数没有太大的变化空间。

我们可以将BWX/fX公式扩展到存储器读写指令。假设BWS为提供给指令流水线的存储器访问带宽,而fM为存储器读写指令所占的比例,那么只有在BWS/fM不小于n时,存储器访问单元才不会成为指令流水线的瓶颈。

为此我们建立一个基本的存储器访问模型。为简化起见,假设在一个Superscalar处理器中,存储器结构的最顶层为L1 Cache,其中L1 Cache由指令和数据Cache两部分组成,并使用Write Back方式进行回写,L1 Cache通过L1-L2 BusL2 Cache连接。L2 Cache与主存储器系统直接连接。处理器在访问存储器时,首先通过L1 Cache之后再经过L2 Cache,最后到达主存储器系统。该模型也可以进一步扩展到L3 Cache和更多的Cache层次,但是为了简化起见,我们仅讨论L1L2 Cache的情况。在这个前提之下,我们讨论与Cache相关的延时与带宽,重点关注Cache Hierarchy为指令流水提供的有效带宽,即BWS参数。

当微架构进行存储器访问时,将首先访问L1Cache,此时有HitMiss两种情况。如果为HitL1 Cache将直接提供数据;如果为MissL1 Cache将产生一个Miss请求,并通过L1-L2 BusL2 Cache中获得数据。

通常情况下CacheMiss会引发Cache BlockReplacement,如果被替换的Cache BlockDirty时,还需要向L1-L2 Bus提交Writeback请求,此时L1 Cache Controller将向L2 Cache发送两类数据请求,一个是Cache Miss Request,一个是Write Back Request。为了提高Miss Request的处理效率,在绝大多数微架构中首先向L2 Cache发送Cache Miss Request,之后再发送Write Back Request

由上文的分析可以发现,BWS参数不能通过简单的计算迅速得出,必须要考虑整个Cache Hierarchy的实现方式。BWS参数与L1-L2 B

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值