【问题标题】:Direct-­mapped instruction cache VS fully associative instruction cache using LRU replacement直接映射指令缓存 VS 使用 LRU 替换的完全关联指令缓存
【发布时间】:2014-05-01 00:43:11
【问题描述】:

对于小型缓存,直接映射指令缓存有时可以胜过使用 LRU 替换的完全关联指令缓存。

谁能通过示例访问模式解释这如何实现?

【问题讨论】:

    标签: algorithm caching computer-architecture


    【解决方案1】:

    这可能发生在小型缓存中。让我们比较一下大小为 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% 命中率。

    之所以如此,是因为:

    • 在此模式中重复的任何地址在前 2 次访问中都没有被访问过(而且这两次访问都不同),因此 LRU 缓存总是会丢失。
    • DM 缓存有时会丢失,因为该模式被设计为利用上次使用相应行时存储的内容。

    因此,曾经可以为更大的缓存大小构建类似的模式,但缓存大小越大,这种模式需要的时间就越长。这对应于直觉,对于更大的缓存,以这种方式利用它们会更难。

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 2021-03-25
      • 2018-06-24
      • 2012-07-09
      • 2018-05-24
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多