📜  基本缓存优化技术

📅  最后修改于: 2022-05-13 01:55:52.457000             🧑  作者: Mango

基本缓存优化技术

通常,在任何设备中,大(就容量而言)、快速且负担得起的存储器是首选。但是这三种品质不能同时达到。内存的成本取决于它的速度和容量。使用分层记忆系统,可以同时实现这三者。

内存层次结构

内存层次结构

高速缓存是位于 CPU 旁边的层次结构的一部分。它用于存储经常使用的数据和指令。它通常非常昂贵,即高速缓存越大,成本越高。因此,它以较小的容量使用以最小化成本。为了弥补其不足的容量,必须确保充分利用其潜力。

缓存性能的优化可确保以非常有效的方式充分利用其潜力。

平均内存访问时间(AMAT):

AMAT有助于分析高速缓存内存及其性能。 AMAT越小,性能越好。 AMAT 可以计算为,

AMAT = Hit Ratio * Cache access time + Miss Ratio * Main memory access time
     = (h * tc) + (1-h) * (tc  + tm)

注意:仅当发生高速缓存未命中时才访问主存储器。因此,高速缓存时间也包含在主存储器访问时间中。

示例 1:缓存命中率为 75%,缓存访问时间为 3 ns,主存访问时间为 110 ns 的机器的平均内存访问时间是多少。

解决方案:

Average Memory Access Time(AMAT) =  (h * tc) + (1-h) * (tc  + tm)
Given,
Hit Ratio(h) = 75/100 = 3/4 = 0.75
Miss Ratio (1-h) = 1-0.75 = 0.25
Cache access time(tc) = 3ns

Main memory access time(effectively) = tc  +  tm = 3 + 110 = 113 ns
Average Memory Access Time(AMAT) = (0.75 * 3) + (0.25 * (3+110))
                                 =  2.25 + 28.25
                                 =  30.5 ns
Note: AMAT can also be calculated as Hit Time + (Miss Rate * Miss Penalty)

示例 2:当 Hit Time 为 0.9 ns、Miss Rate 为 0.04、Miss Penalty 为 80 ns 时计算 AMAT。

解决方案 :

Average Memory Access Time(AMAT) =  Hit Time + (Miss Rate * Miss Penalty)
Here, Given,
Hit time = 0.9 ns
Miss Rate = 0.04
Miss Penalty = 80 ns
Average Memory Access Time(AMAT) = 0.9 + (0.04*80)
                                 = 0.9 + 3.2
                                 = 4.1 ns

因此,如果减少命中时间、未命中率和未命中惩罚,则 AMAT 会减少,从而确保缓存的最佳性能。

减少命中时间、未命中率和未命中惩罚的方法:

减少命中时间的方法:

1. 小而简单的缓存:如果实现缓存所需的硬件较少,则由于通过硬件的关键路径较短,因此会减少命中时间。

2. 在索引期间避免地址转换:使用物理地址进行索引的缓存称为物理缓存。使用虚拟地址进行索引的缓存称为虚拟缓存。使用虚拟缓存可以避免地址转换。因此,它们有助于减少命中时间。

降低错过率的方法:

1. 更大的块大小:如果块大小增加,则可以有效地利用空间局部性,从而降低未命中率。但这可能会导致未命中处罚的增加。大小不能超过某个点,因为它会对增加丢失率的点产生负面影响。因为较大的块大小意味着较少数量的块,这会导致增加的冲突未命中。

2.更大的缓存大小:增加缓存大小导致容量未命中的减少,从而降低未命中率。但是,它们会增加命中时间和功耗。

3.更高的关联性:更高的关联性导致冲突未命中的减少。因此,它有助于降低未命中率。

减少错过惩罚的方法:

1. 多级缓存:如果 只有一级缓存,那么我们需要在保持缓存大小以减少命中时间或使其更大以降低未命中率之间做出决定。两者都可以通过在下一级引入缓存来同时实现。

假设,如果考虑二级缓存:

  • 一级缓存体积更小,时钟周期更快,可与 CPU 相媲美。
  • 二级缓存比一级缓存大,但与主存相比具有更快的时钟周期。这种大尺寸有助于避免对主存储器的大量访问。因此,它还有助于减少未命中惩罚。
内存的分层表示

内存的分层表示

2. 关键字优先和早期重启:通常,处理器一次需要块的一个字。因此,在发送请求的字之前,无需等到整个块加载完毕。这是通过以下方式实现的:

  • 关键词优先:也称为请求词优先。在这种方法中,从内存中请求所需的确切字,一旦它到达,它就会被发送到处理器。这样,实现了两件事,处理器继续执行,同时读取块中的其他字。
  • Early Restart:在此方法中,单词按正常顺序获取。当请求的字到达时,它立即被发送到处理器继续执行请求的字。

 这些是优化缓存性能的基本方法。