【发布时间】:2014-05-01 00:43:11
【问题描述】:
对于小型缓存,直接映射指令缓存有时可以胜过使用 LRU 替换的完全关联指令缓存。
谁能通过示例访问模式解释这如何实现?
【问题讨论】:
标签: algorithm caching computer-architecture
对于小型缓存,直接映射指令缓存有时可以胜过使用 LRU 替换的完全关联指令缓存。
谁能通过示例访问模式解释这如何实现?
【问题讨论】:
标签: algorithm caching computer-architecture
这可能发生在小型缓存中。让我们比较一下大小为 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% 命中率。
之所以如此,是因为:
因此,曾经可以为更大的缓存大小构建类似的模式,但缓存大小越大,这种模式需要的时间就越长。这对应于直觉,对于更大的缓存,以这种方式利用它们会更难。
【讨论】: