首先,这不是语言标记垃圾邮件,但这个问题并不特定于某种语言,特别是我认为这个stackexchange站点是最适合我的问题。缓存和内存
我正在处理缓存和内存,试图了解它是如何工作的。 我不明白的是这句话(粗体,不是在图片):
在MIPS架构,因为字对齐四个 字节,最低显著两位被忽略的倍数当在块中选择一个 单词时。
所以我们可以说我有这个两不会忽略:
[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
这是错误的!
所以我认为这与我上面引用的句子有关。任何人都可以解释为什么我的推理是错误的吗?
在图中的高速缓存:
你在做单字节或单字访问吗? –
你忽略了“在块中选择一个单词时”。在确定需要缓存的内容时,最后的位不会被忽略。实际的内存访问使用完整地址。 –
@PeterLawrey如果它是一个字我明白这将导致相同的,我不应该关心字节偏移量。对 ? – user2336315