Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 高速缓存和内存_Memory_Mips - Fatal编程技术网

Memory 高速缓存和内存

Memory 高速缓存和内存,memory,mips,Memory,Mips,首先,这不是语言标签垃圾邮件,但这个问题不是特定于一种语言的,我认为这个stackexchange网站最适合我的问题 我正在研究缓存和内存,试图了解它是如何工作的。 我不明白的是这句话(粗体,不在图片中): 在MIPS体系结构中,因为单词是四的倍数 字节,当选择一个 街区里的字 假设我有两个地址: [1........0]10 [1........0]00 ^ | same 30 bits for boths [31-12] for th

首先,这不是语言标签垃圾邮件,但这个问题不是特定于一种语言的,我认为这个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)
据我所知,第一个缓存将导致未命中(我假设初始缓存为空)。因此,缓存中的一个插槽将被位于该内存地址中的数据填充

现在,我们使用第二个,因为它有相同的30位,它将导致缓存命中,因为我们访问相同的插槽(因为相同的10位),并且地址的20位等于存储在标记字段中的20位

因此,结果是数据位于内存
[1…….0]10
,而不是
[1…….0]00
,这是错误的

所以我想这和我上面引用的句子有关。谁能解释一下为什么我的推理是错误的

图中的缓存:

在MIPS体系结构中,因为单词是四的倍数 字节,则在选择 街区里的字

这只是意味着在记忆中,我的话是这样排列的:

因此,当选择一个单词时,我不应该关心最后两位,因为我将加载一个单词


当执行加载字节(
lb
)指令时,这最后两位将对处理器有用,以便正确地移动数据以获得位于正确字节位置的数据

您是在进行单字节访问还是单字访问?您忽略了“在块中选择字时”。在确定需要缓存的内容时,并不总是忽略最后到位。实际的内存访问使用完整地址。@PeterLawrey如果是一个字,我理解这将导致相同的结果,我不应该关心字节偏移量。是吗?@KerrekSB所以当我做
lw
时,最后两位被忽略,当我使用
lb
获得正确的字节时,会有一个以字节偏移量作为控制信号的多路复用器?@PeterLawrey,我想我理解正确。我的回答有意义吗?我认为这是正确的。