双向组关联缓存命中/未命中检查

时间:2015-12-31 02:12:25

标签: computer-architecture cpu-cache

我有256个块,每个块16个字节。我试图根据双向组关联缓存来定义未命中或命中十六进制地址。我怀疑第二个可以错过因为双向组关联?我觉得很受欢迎,但我不确定。

2ABC10A2

2ABC10A7

4BBC10A0

2ABC10A9

所以如果我每个块有16个字节,那么我有2^4,然后是4位,这意味着我的偏移量分别为2, 7, 0, 9。如果我有256个块,我有2^8然后8位索引,这意味着0A遗骸是标签。我想我到了这里。所以我得到了桌子,但我不是因为小姐/命中部分。他们是对的吗?如果有错误,你能解决吗?我想学习。感谢。

TAG          INDEX              BLOCK DATA                                HIT/MISS

2ABC1         0A         2ABC10A0 + 16 BYTE  (2ABC10A0  - 2ABC10AF )        MISS
2ABC1         0A               2ABC10A0 + 16 BYTE                           HIT
4BBC1         0A                4BBC10A0 + 16 BYTE                          MISS
2ABC1         0A                2ABC10A0 + 16 BYTE                          HIT

1 个答案:

答案 0 :(得分:0)

未命中/命中部分是正确的。

索引位宽度为7而不是8.对于256个块的2路组关联高速缓存,索引位宽度为log 2 (256/2)= 7。

为了更准确,假设所有访问都是加载(读操作),则未命中/命中部分是正确的。如果包含存储(写入操作),则它取决于缓存写入策略的选择。