如何提高CPU Cache性能 By E课网

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CPU CacheII

-William Gu

在本期的文章里,作者从Cache性能出发,帮助大家进一步了解CPU Cache这一设计实现。

通常比较合适用来评价Cache性能的参数指标为平均访问时间,其定义如下:

平均访问时间=命中时间+缺失率x缺失代价

由以上公式,可以从三个方面进行改进:

✓降低缺失率

✓减小缺失代价

✓减小命中时间

1.1 三种类型的缺失(3C)

强制缺失(Compulsory miss):当第一次访问一个块时,该块不在cache中,需要从下一级存储器中调入Cache

✓优化方法:增加块大小,预取

容量缺失(Capacity miss):程序运行时所需的块不能全部调入Cache中,当某些块被替换后,若被重新访问就会发生容量缺失

✓优化方法:增加缓存容量

冲突缺失(Conflict miss):在组相联或直接映射的Cache中,若太多的块映射到同一组中,则会出现该组中某个块被别的块所代替(即使别的组或块有空闲位置),然

后又被重新访问。

✓优化方法:提高相联度(理想情况:全相联)

1.2 基本的Cache优化方法:

✓降低缺失率——较大的块,较大的缓存,较高的关联度

✓降低缺失代价——多级缓存,为读取操作设设定高于写入操作的优先级

✓缩短在缓存中命中的时间——在索引缓存时避免地址转换

1.2.1 增加块的大小以降低缺失率

当Cache的容量一定时,块的大小对命中率的影响非常大。下图表示随着Cache块由小到大的变化,命中率H上升和下降的规律。

命中率随着块大小的变化曲线

1.2.2 提高相联度

相联度越高,Cache的空间利用率就越高,块冲突概率就越低,因而Cache的缺失率就会降低。但是提高相联度可能会增加命中时间。

缺失率与相联度的关系

1.2.3 增加Cache容量

增加Cache容量是降低容量缺失最明显的方法。Cache容量越大,命中率也就越高,但是可能延长命中时间,增加成本和功耗。

1.2.4 采用多级缓存降低缺失代价

若采用两级Cache,L2的平均访问时间为:

平均访问时间=命中时间L1+缺失率L1x(命中时间L2+缺失率L2x缺失代价L2)

局部缺失率=该级Cache的缺失次数/到达该级Cache的访问次数

全局缺失率=该级Cache的缺失次数/CPU发出的访问总次数

全局缺失率L2=缺失率L1x缺失率L2

对于第二级Cache可以总结为:

✓在第二级Cache比第一级Cache大得多的情况下,两级Cache的全局缺失率和容量与第二级Cache相同的单级Cache的缺失率非常接近;

✓局部缺失率不是衡量第二级Cache的一个好指标,在评价第二级Cache应用全局缺失率。

1.2.5读缺失的优先级高于写缺失优先级降低缺失代价

在write-back Cache的情况下,提高读优先级的好处(example):

假定一次读取缺失将替换一个脏块,我们不是将这个脏块写到存储器中,然后再读取存储器,而是将这个脏块复制到缓冲区中,然后读存储器,然后再写存储器。这样处理器的读取操作将会很快结束。和前一种情况类似,如果发生了读取缺失,处理器停顿直到缓冲区为空,或者检查缓冲区中各个字的地址,以了解是否存在冲突。

1.3 高级缓存优化方法

✓缩短命中时间——小而简单的第一级缓存和路预测。(可降低功耗)

✓增加缓存带宽——流水化缓存、多组缓存和无阻塞缓存。(对功耗影响不确定)✓降低缺失代价——关键字优化,合并写缓冲区。(对功耗影响很小)

✓降低缺失率——编译器优化。(缩短编译时间可降低功耗)

✓通过并行降低确实代价或缺失率——硬件预取和编译器预取。(提前取出了未用到的数据,增大功耗)

相关文档
最新文档