我已经阅读了有关此主题的几个主题,但我无法得到答案。所以我的问题是:
1)如何计算块偏移量?
我想知道的不是公式,而是它的概念。据我所知,一个块可以存储地址的数量。例如,如果存在具有8字节存储的块并且必须存储2字节地址。它的块偏移是2位吗?(因此有4种情况来存储地址(下图可能更容易看到我在说什么)。
答案 0 :(得分:0)
块偏移量简单地计算为 log 2 cache_line_size 。
原因是我所知道的所有系统都是字节可寻址的。因此,您需要足够的位来索引块中的任何字节。虽然大多数系统的字长大于单个字节,但它们仍然支持单字节逐行性的偏移,即使这不是常见情况。
因此,对于您提到的具有2字节字的8字节块大小的示例,您仍然需要3位才能访问任何字节。如果您的系统不是字节可寻址的,那么您只能使用2位来进行块偏移。但实际上,我所知道的所有系统都是字节可寻址的。