了解缓存中的块偏移位

问题描述 投票:0回答:2
我一直在阅读 Bryant 和 O'Hallaron 所著的《计算机系统:程序员的视角》中有关高速缓存的章节,并且我无法理解有关块偏移位的内容。这是书中的快照:

在此示例中,他们假设单词长度为 4 个字节,这是直接映射,每行包含 8 个字节。他们使用 3 位来决定距最左侧单元格的偏移量,因此根据我的理解,如果块偏移量为 010,则缓存会将数据从 w2 返回到 w5。但我不明白如果块偏移量为 100 会发生什么,块中没有第 8 个单元,因此我们无法返回从 w5 开始的 4 字节字,因此仅使用 2 位会更有意义块偏移。我在这里犯了什么错?

caching memory block
2个回答
0
投票
你说得对。

无法返回从 w5 开始的 4 字节字。

但是该图的二进制位为 100 -> 2^2 -> w4。所以你从 w4 开始。数到 w7,你会得到 4 个字节,也就是一个单词,它由 w_4、w_5、w_6、w_7 组成字节。


0
投票
您的理解略有缺陷,如果块偏移量为010,则缓存不会返回4个字的范围。相反,它只返回第二个索引处 4 个字节长的单个单词。

它一行中有多个单词的原因是受益于空间局部性的概念。如果您提供的下一个地址与相同的标签匹配,但具有不同的偏移量,则可以看到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.