首先,这不是语言标签垃圾邮件,但这个问题并不特定于某种语言,我认为这个堆栈交换网站是我最常用的问题。
我正在研究缓存和内存,试图了解它是如何工作的。 我不明白的是这句话(粗体,不在图片中):
在MIPS架构中,由于单词对齐为四的倍数 选择a时,字节,忽略最低有效两位 块中的字。
所以,让我说我有两个地址:
[1........0]10
[1........0]00
^
|
same 30 bits for boths [31-12] for the tag and [11-2] for the index (see figure below)
据我所知,第一个将导致MISS(我假设初始缓存为空)。因此,缓存中的一个插槽将填充位于此内存地址中的数据。
现在,我们采用了第二个,因为它具有相同的30位,它将导致高速缓存中的HIT,因为我们访问相同的时隙(因为相同的10位)并且地址的20位是等于标记字段中存储的20位。
因此,在结果中,我们将数据放在内存[1........0]10
而不是[1........0]00
,这是错误的!
所以我认为这与我上面引用的句子有关。谁能解释我为什么我的推理错了?
图中的缓存:
答案 0 :(得分:1)
在MIPS架构中,由于单词对齐为四的倍数 在选择a时,忽略最不重要的两位 块中的字。
这只是意味着在记忆中,我的话语是这样对齐的:
所以当选择一个单词时,我不应该关心最后两位,因为我会加载一个单词。
当执行加载字节(lb
)指令时,这两个最后一位对处理器非常有用,可以正确地移位数据以获得正确字节位置的数据。