直接映射缓存,命中还是错过?

时间:2017-07-08 15:40:51

标签: caching cpu-architecture

我的运动有问题:

缓存DM。高速缓存大小 - 64kB,单行大小 - 64B。处理完毕后,处理者已阅读地址:

  • 0x00000
  • 0x0003C
  • 0x0013C
  • 0xF0038
  • 0x00015
  • 0x00130

我不得不说,什么时候会错过,什么时候会被击中。我找到了一些类似练习的例子,但我不知道如何处理十六进制的地址。我知道:Cache address = Memory Address **mod** Cache Size,但我不知道如何解决这个问题。 先感谢您。

1 个答案:

答案 0 :(得分:0)

回答此类问题的一种方法是找到给定缓存设计的tagindexoffset位。然后将地址访问模式映射到相应的标签,索引以获得命中/未命中信息。

例如,考虑访问地址0xF0038

Cache Size  = 64kB
Line Size   = 64B
Offset bits = log2(64) = 6
Index bits  = log2(6kB/64B) = 10
Considering 20-bit address line
Tag bits    = 20 - 10 - 6 = 4
Address accessed  - 0xF0038
Converting into bits - 
1111_0000_0000_0011_1000
Tag - 1111
Index - 0000_0000_00
Offset - 11_1000

现在,您知道访问权是将0x0标记为0xF。根据之前的访问,它将是一个未命中或命中。同样,您可以为所有其他地址执行此操作。