LRU算法何时会错过100%?

时间:2017-09-03 14:30:39

标签: algorithm caching lru page-replacement

我知道这两种方法可以使LRU算法错过100%。

  1. 循环访问数据集,该数据集略大于缓存大小。
  2. enter image description here

    1. 访问不经常访问的数据集的任意突发,通过替换更常用的条目来污染缓存。
    2. enter image description here

      红色表示缓存未命中。

      但它有另一种方式“访问具有不同访问频率的块”。

      我不知道如何用一个例子来描述它。

1 个答案:

答案 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)

希望能回答你的问题。