Caching 强制性失误和冲突性失误能否同时发生?

Caching 强制性失误和冲突性失误能否同时发生?,caching,mapping,Caching,Mapping,这是我的知识: 第一次访问块时,会发生强制未命中 当缓存中存在其他空块时,会发生冲突未命中,但由于映射策略而发生冲突,因此必须替换块(直接映射和设置关联映射缓存) 假设有两个块(0和1)。我们有一个直接映射的缓存,传入的请求是0,128 对0的请求是强制未命中(映射到块0时为0%2=0) 128的请求是强制未命中(因为它是第一次访问)。但它与0冲突(因为128%2=0)。我的困惑是,这不也是一个冲突吗?你的事实是正确的 在这种情况下,如果128和0都映射到相同的集合索引(假设为0), 只能有

这是我的知识:

  • 第一次访问块时,会发生强制未命中

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

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

对0的请求是强制未命中(映射到块0时为0%2=0)

128的请求是强制未命中(因为它是第一次访问)。但它与0冲突(因为128%2=0)。我的困惑是,这不也是一个冲突吗?

你的事实是正确的

在这种情况下,如果128和0都映射到相同的集合索引(假设为0), 只能有一种类型的未命中

假设您首先希望从内存中获取地址0,然后缓存会注意到地址0应在缓存的集合0中填充,但有效标志为
false(0)
-这是一个强制未命中(或冷未命中),因为此缓存集合中没有数据块。0集现在由内存地址0的块填充,有效标志设置为
true(1)

当缓存检查地址128时,它也会将集合索引计算为0,但现在集合0的有效标志为
true(1)
,因为它由地址0的内存块填充。现在,缓存比较集合的
标记
字段,看它是否匹配地址128,而不是。因此,该集合的数据块被地址128处内存中的数据块覆盖。这是一次冲突性的失误,而不是冷淡的失误


也许这些链接可以帮助您:

    • 你的事实是正确的

      在这种情况下,如果128和0都映射到相同的集合索引(假设为0), 只能有一种类型的未命中

      假设您首先希望从内存中获取地址0,然后缓存会注意到地址0应在缓存的集合0中填充,但有效标志为
      false(0)
      -这是一个强制未命中(或冷未命中),因为此缓存集合中没有数据块。0集现在由内存地址0的块填充,有效标志设置为
      true(1)

      当缓存检查地址128时,它也会将集合索引计算为0,但现在集合0的有效标志为
      true(1)
      ,因为它由地址0的内存块填充。现在,缓存比较集合的
      标记
      字段,看它是否匹配地址128,而不是。因此,该集合的数据块被地址128处内存中的数据块覆盖。这是一次冲突性的失误,而不是冷淡的失误


      也许这些链接可以帮助您: