直接映射指令高速缓存VS使用LRU替换的完全关联指令高速缓存

时间:2014-05-01 00:43:11

标签: algorithm caching computer-architecture

对于小尺寸的缓存,直接映射指令缓存有时可以使用LRU替换优于完全关联的指令缓存。

任何人都可以通过示例访问模式解释这是如何实现的吗?

1 个答案:

答案 0 :(得分:3)

对于小尺寸的缓存,可能会发生这种情况。让我们比较大小为2的缓存。

在我的例子中,直接映射的“DM”缓存将使用行A表示奇数地址,将行B表示偶数地址。

LRU缓存将使用最近最少使用的行来存储未命中的值。

我建议的访问模式是13243142(重复次数达到想要的次数)。

以下是botch缓存算法的行为细分:

H - hits
M - misses

----- time ------>>>>>

Accessed:    1 | 3 | 2 | 4 | 3 | 1 | 4 | 2
             \   \   \   \   \   \   \   \ 
LRU  A    ? | ? | 3 | 3 | 4 | 4 | 1 | 1 | 2 |
     B    ? | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 |
             M   M   M   M   M   M   M   M   

DM   A    ? | 1 | 3 | 3 | 3 | 3 | 1 | 1 | 1 |
     B    ? | ? | ? | 2 | 4 | 4 | 4 | 4 | 2 |
             M   M   M   M   H   M   H   M   

这为LRU提供了8个未命中,为直接映射提供了6个未命中。让我们看看如果这种模式永远重复会发生什么:

----- time ------>>>>>

Accessed:    1 | 3 | 2 | 4 | 3 | 1 | 4 | 2
             \   \   \   \   \   \   \   \ 
LRU  A      | 2 | 3 | 3 | 4 | 4 | 1 | 1 | 2 |
     B      | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 |
             M   M   M   M   M   M   M   M   

DM   A      | 1 | 3 | 3 | 3 | 3 | 1 | 1 | 1 |
     B      | 2 | 2 | 2 | 4 | 4 | 4 | 4 | 2 |
             H   M   H   M   H   M   H   M   

因此,直接映射的缓存将具有50%的命中率,其优于LRU的0%命中率。

这样做是因为:

  • 在此模式中重复的任何地址都没有被访问过前2次访问(这两次访问都不同),因此LRU缓存总是会丢失。
  • DM缓存有时会遗漏,因为模式的设计是为了利用上次使用相应行时存储的内容。

因此,一旦可以为更大的高速缓存大小构建类似的模式,但是高速缓存大小越大,这种模式需要的时间越长。这与直觉相对应,对于较大的缓存来说,以这种方式利用它们会更加困难。