我知道这两种方法可以使LRU算法错过100%。
答案 0 :(得分:1)
LRU可能会考虑我们访问数据的频率,例如:
Data 1 1 2 2 3 4
Cache1 1(1) 1(2) 1(2) 1(2) 1(2) 1(2)
Cache2 2(1) 2(2) 2(2) 2(2)
Cache3 3(1) 4(1)
圆括号中有一个计数器,每当有一个缓存命中到相应的块时它就会增加。因此,由于我们在开始时两次访问块1和2,因此块3从缓存中被逐出,尽管它最近比块1和2使用了。
因此“访问具有不同访问频率的块”基本上可能如下所示:
Data 1 1 2 2 3 4 3 4
Cache1 1(1) 1(2) 1(2) 1(2) 1(2) 1(2) 1(2) 1(2)
Cache2 2(1) 2(2) 2(2) 2(2) 2(2) 2(2)
Cache3 3(1) 4(1) 3(1) 4(1)
因此,尽管我们仅使用3和4,但LRU仍然更喜欢将1和2保持为更频繁使用。
另一个例子可能就像你之前的例子一样:我们应该只访问一次块,所以计数器永远不会增加,即:
Data 1 2 3 4 1 2 3
Cache1 1(1) 1(1) 1(1) 4(1) 4(1) 4(1) 3(1)
Cache2 2(1) 2(1) 2(1) 1(1) 1(1) 1(1)
Cache3 3(1) 3(1) 3(1) 2(1) 2(1)
希望能回答你的问题。