访问和更新具有相同标记和偏移位的双向关联缓存

时间:2016-08-15 04:10:10

标签: caching cpu-architecture

我对如何在双向关联缓存上访问数据感到困惑。

例如,C = ABS

C = 32KB
A = 2
B = 32bits
S = 256

offset = lg(B) = 5
index = lg(S) = 8
tag = 32 - offset - index = 19

说我有以下地址

tag                    | index    | offset
1000 0000 0000 0000 000|0 0000 000|1 0000
1000 0000 0000 0000 000|0 0000 000|0 0000
1000 0000 0000 0000 000|0 0000 000|1 1010

我的缓存看起来像

index   valid dirty tag      data            valid dirty tag     data
0:      1     0     0x80...   some data1     1     0     0x80... some data2
1:         .                                     .
2:         .                                     .  
3:         .                                     .

当索引和标记位相同时,如何确定两个缓存数组中的哪一个应该从(data1 vs data2)获取数据?

同样,当我需要使用相同的索引和标记位更新缓存时,如何确定我应该将两个数组中的哪些数据踢出来?

我认为它与偏移位有关,但我不太清楚如何使用偏移位或它们在缓存数组中表示或映射到底是什么。

0 个答案:

没有答案
相关问题