4路组相连cache设计_计算机体系结构——十项优化Cache性能的高级方法

本文翻译摘录自“ComputerArchitecture : A Quantitative Approach (6th Edition)”。

本文介绍十项优化Cache性能的高级方法,将这些方法分为如下的五类:

1. 减少命中时间——小的简单的一级Cache和路预测技术,这两项技术还可以降低功耗。

2. 增加Cache带宽——流水线Cache、多Bank Cache和非阻塞Cache,这些技术对功耗有不同的影响。

3. 减少Cache缺失代价——关键字优先、合并写缓存技术,这两项技术对功耗的影响很小。

4. 降低Cache缺失率——编译器优化技术,显然可以减少编译时间,降低功耗。

5. 通过并行技术降低缺失代价和缺失率——硬件预取、编译器预取,这些方法通常会增加功耗,主要是预取到了一些不使用的数据。

通常,上述这些优化项会增加硬件的复杂度。同时,有几个优化方法需要采用高级编译器技术,最后一个需要依赖HBM。下面对这十项优化Cache性能的高级方法进行详细介绍。

一、利用小而简单的一级Cache来降低命中时间和功耗

高速时钟频率和低功耗的限制均促使对一级Cache大小的限制,类似的,使用较低级别的相联度,也可以减少命中时间和功耗,尽管这种权衡更为复杂一些。

Cache命中过程的关键时间路径包括3个步骤:使用地址中的索引确定Tag存储器的地址;比较读取到的Tag值和地址;如果Cache为组相联,则设置多路选择器来选择正确的数据项。直接映射的Cache可以将Tag检查与数据传输重叠进行,有效减少命中时间。此外,低级别的相联度通常也将降低功耗,因为减少了必须访问的Cacheline。

尽管在新的各代微处理器中片上Cache的数量不断增加,但一级Cache大小的涨幅最近趋缓,甚至没有增长,这是因为大容量一级Cache带来的时钟频率的影响。在最近的许多处理器中,设计者通常是对相联度进行更多的优化,而不是大小。选择相联度时的另一个考虑因素是消除地址别名的可能性,对此后文有介绍。

一种可以在制造芯片前判断各项选择对命中时间和功耗影响的方法是使用CAD工具。CACTI是一个用于估算CMOS微处理器上各种Cache结构的访问时间和能耗的程序。对于一个给定的最小工艺尺寸,CACTI估算在不同Cache大小、不同相联度、不同读写端口数,等更复杂的参数条件下的Cache命中时间。下图展示了Cache大小和相联度对命中时间的影响。对于这些参数,直接映射的命中时间略快于2路组相联,2路组相联是4路组相联Cache的1.2倍,4路组相联是8路组相联Cache的1.4倍。

d7f16f25722380af27c310f5178cee8f.png

示例:参考上图和下表中的数据,判断一个32KB的4路组相联一级Cache访问时间是否快于32KB的2路组相联一级Cache。假设二级Cache的缺失代价是一级Cache访问时间的15倍。忽略二级Cache之外的缺失。

aeacc1e5ef9c87d2eb745ea9d8dcb833.png

假设2路组相联Cache的访问时间为1,那么对于2路Cache结构:

43de7929664a5e50950d341b3c101afd.png

对于4路Cache,访问时间是2路的1.4倍。缺失代价占用的时间为15 / 1.4 = 10.1,简单起见,这里假设为10。那么对于4路Cache结构:

efe6dd669a7b22c4eaa9258554064a2e.png

通过以上结果可以看出,较高相联度是一种较为糟糕的权衡选择。然而,由于在现代处理器中,Cache访问通常是流水线化的,所以很难评估对时钟周期时间的影响。

功耗在选择Cache大小和相联度时也是一个需要考虑的因素,如下图所示。在128KB或256KB Cache中,当从直接映射变为2路组相联时,高相联度的能耗比从大于2到可以忽略。

fc5998edaf44114d1fec6bcc506a5eca.png

当功耗变的比较严重时,设计者会集中于寻找降低Cache访问的功耗。在Cache访问中,决定功耗的另一个关键因素是Cache中块(block)的数量,因为它决定了所访问的“行”的个数。设计者通常会在保持Cache大小不变的情况下,增加块的大小来降低“行”的个数,但这会增加缺失率,尤其是在比较小的一级Cache中。

另一种选择是将Cache组织为Banks,以便仅访问Cache的一部分,即所需块所在的Bank。多Bank Cache的主要用途是增加带宽。多Bank还减少了功耗,因为访问了更少的Cache。许多多核处理器中的3级Cache存在逻辑上是统一的,但在物理上是分布式的,并有效地充当多Bank的Cache。根据请求的地址,实际上只有一个物理3级Cache(一个Bank)被访问。

在最近的设计中,有三种除了功耗和访问时间消耗之外的其他因素使得在1级Cache中使用较高的相联度。第一,许多处理器在访问Cache时至少需要两个时钟周期,因此命中时间较长可能不会产生太严重的影响。第二,将TLB排除在关键路径之外(TLB带来的延迟可能要大于高相联度导致的延迟),几乎所有的一级Cache都是虚拟寻址的,这就将Cache的大小限制为页大小与相联度的乘积,这是因为只有页内的位才能用于索引。在完成虚拟地址到物理地址转换之前对Cache进行索引的问题还有另外一些解决方法,但提高相联度还有其他一些好处,更具吸引力。第三,在引入多线程之后,冲突缺失会增加,从而提高相联度更具吸引力。

二、通过路预测技术来降低命中时间

这是另一种可以减少冲突缺失,同时又能保持直接映射Cache命中速度的方法。在路预测技术中,多余的一些位被保存在Cache中,用于预测下一次Cache访问组(set)中的路(way)或块(block)。这种预测意味着比较早的设定多路选择器,以选择所需要的块,在并行读取Cache数据的这一时钟周期内,只有一个tag比较被执行。如果缺失,则会在

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值