基于 《计算机体系结构:量化研究方法》2.2 缓存性能的10种高级优化方法
因为CPU和主存的性能差距越来越大,所以在CPU和主存之间增加了多级高速缓存,如L1 cache、L2 cache,来提升性能。
缓存设计时需要考虑以下度量
- 命中时间:在缓存中找到指定的数据的时间。
- 缺失率:当缓存中未找到指定数据的概率。
- 缺失代价:当缓存未命中恢复到缓存命中的代价
- 功耗
- 缓存带宽
可以通过一些方法来针对这些度量进行优化,将这10种方法分为5类
- 缩短命中时间:小而简单的第一级缓存和路预测。这两种技术通常还能降低功耗。
- 增加缓存带宽:流水化缓存、多组缓存和无阻塞缓存。这些方法对功耗有不确定影响
- 降低缺失代价:关键字优化,合写缓冲区。这两种优化方法对功耗影响很小
- 降低缺失率:编译器优化。该方法可以降低功耗
- 通过并行降低缺失代价或缺失率:硬件预取和编译器预取。这些方法会增加功耗,主要是因为提前取出了未用到的数据。
小而简单的第一级缓存
大容量的L1 cache会影响时钟频率,因此L1 cache的容量涨幅很小,甚至根本没有增长。L1 cache大小有限,就无法和主存地址一一映射,因此必然需要一个地址映射方式,即将主存地址转换为cache的地址,而映射方式的选择会影响命中时间。
了解到以下几种映射方式
- 全相联:主存的任一地址能映射到任意cache地