Algorithm 直接和#xAD;映射指令缓存与使用LRU替换的完全关联指令缓存
对于小尺寸的缓存,直接映射指令缓存有时会优于使用LRU替换的完全关联指令缓存Algorithm 直接和#xAD;映射指令缓存与使用LRU替换的完全关联指令缓存,algorithm,caching,computer-architecture,Algorithm,Caching,Computer Architecture,对于小尺寸的缓存,直接映射指令缓存有时会优于使用LRU替换的完全关联指令缓存 有人能用一个示例访问模式解释一下这是如何实现的吗?对于小尺寸的缓存,这可能会发生。让我们比较大小为2的缓存 在我的示例中,直接映射的“DM”缓存将使用A行表示奇数地址,B行表示偶数地址 LRU缓存将使用最近使用最少的行来存储未命中的值 我建议的访问模式是13243142(根据需要重复多次) 下面是拙劣缓存算法的行为分类: H - hits M - misses ----- time ------>>>
有人能用一个示例访问模式解释一下这是如何实现的吗?对于小尺寸的缓存,这可能会发生。让我们比较大小为2的缓存 在我的示例中,直接映射的“DM”缓存将使用A行表示奇数地址,B行表示偶数地址 LRU缓存将使用最近使用最少的行来存储未命中的值 我建议的访问模式是
13243142
(根据需要重复多次)
下面是拙劣缓存算法的行为分类:
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次未命中,为直接映射的LRU提供了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%命中率要好
这是因为:
- 在此模式中重复的任何地址在前两次访问中都未被访问(并且两次访问都不同),因此LRU缓存将始终丢失
- DM缓存有时会丢失,因为模式的设计是为了利用上次使用相应行时存储的内容