缓存和内存

时间:2013-12-15 11:13:59

标签: memory mips

首先,这不是语言标签垃圾邮件,但这个问题并不特定于某种语言,我认为这个堆栈交换网站是我最常用的问题。

我正在研究缓存和内存,试图了解它是如何工作的。 我不明白的是这句话(粗体,不在图片中):

  

在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,这是错误的!

所以我认为这与我上面引用的句子有关。谁能解释我为什么我的推理错了?

图中的缓存:

enter image description here

1 个答案:

答案 0 :(得分:1)

  

在MIPS架构中,由于单词对齐为四的倍数   在选择a时,忽略最不重要的两位   块中的字。

这只是意味着在记忆中,我的话语是这样对齐的:

enter image description here

所以当选择一个单词时,我不应该关心最后两位,因为我会加载一个单词。

当执行加载字节(lb)指令时,这两个最后一位对处理器非常有用,可以正确地移位数据以获得正确字节位置的数据。