Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 直接和#xAD;映射指令缓存与使用LRU替换的完全关联指令缓存_Algorithm_Caching_Computer Architecture - Fatal编程技术网

Algorithm 直接和#xAD;映射指令缓存与使用LRU替换的完全关联指令缓存

Algorithm 直接和#xAD;映射指令缓存与使用LRU替换的完全关联指令缓存,algorithm,caching,computer-architecture,Algorithm,Caching,Computer Architecture,对于小尺寸的缓存,直接映射指令缓存有时会优于使用LRU替换的完全关联指令缓存 有人能用一个示例访问模式解释一下这是如何实现的吗?对于小尺寸的缓存,这可能会发生。让我们比较大小为2的缓存 在我的示例中,直接映射的“DM”缓存将使用A行表示奇数地址,B行表示偶数地址 LRU缓存将使用最近使用最少的行来存储未命中的值 我建议的访问模式是13243142(根据需要重复多次) 下面是拙劣缓存算法的行为分类: H - hits M - misses ----- time ------>>>

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


有人能用一个示例访问模式解释一下这是如何实现的吗?

对于小尺寸的缓存,这可能会发生。让我们比较大小为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缓存有时会丢失,因为模式的设计是为了利用上次使用相应行时存储的内容
因此,once可以为更大的缓存大小构建类似的模式,但缓存大小越大,这种模式需要的时间就越长。这符合这样一种直觉,即对于更大的缓存,以这种方式利用它们会更困难