义务和冲突可以一起发生吗?

时间:2017-02-20 08:09:02

标签: caching mapping

这是我的知识:

A)强制错过:第一次访问该块时会发生

B)冲突失误:当缓存中存在其他空块时发生,但由于映射策略而发生冲突,因此必须替换块(直接映射和设置关联映射缓存)。

假设有两个块(0和1)。我们有一个直接映射缓存,传入请求是:0,128。

0:强制Miss(映射到块0为0%2 = 0)

128:强制性错过(因为它是第一次访问)。但它与0碰撞(128%2 = 0)。我的困惑是,它不应该也是一个冲突错过吗?

1 个答案:

答案 0 :(得分:0)

你的事实是对的。 在这种情况下,如果128和0都映射到相同的集合索引(假设为0), 只有一种类型的错过。 假设您首先要从内存中获取地址0,然后您的缓存通知地址0应该在缓存中的集合0中填充,但有效标记为false(0) - 它是强制未命中(或冷未命中) 。由于此缓存集中没有数据块。 0设置现在由来自内存地址0的块填充,有效标志设置为true(1)

当缓存检查地址128时,它也计算设置索引为0,但现在set 0的有效标志为true(1),因为它填充了地址0的内存块。现在,缓存比较集合的tag字段以查看它是否与地址128匹配,它确实没有。因此,该组的数据块被来自地址128处的存储器的数据块覆盖。这就是冲突未命中而不是冷未命中。

也许此链接可以帮助您: Concerning Caches what's the difference between conflict miss and capacity miss