缓存计算块偏移和索引

Cache calculating block offset and index

我已经阅读了几个关于这个主题的主题,但我无法得到答案。所以我的问题是:

1) block offset是怎么计算的?

我想知道的不是公式,而是它的概念。据我所知,一个块可以存储地址的案例数量。例如,如果有一个 8 字节存储的块,必须存储 2 字节地址。它的block offset是2bit吗?(所以有4种情况来存储地址(下图可能更容易理解我在说什么)

块偏移简单计算为log2 cache_line_size.

原因是我所知道的所有系统都是字节可寻址的。所以你需要足够的位来索引块中的任何字节。尽管大多数系统的字长都大于单个字节,但它们仍然支持单个字节梯度的偏移量,即使这不是常见情况。

因此,对于您提到的 8 字节块大小和 2 字节字的示例,您仍然需要 3 位才能访问任何字节。如果您有一个不可字节寻址的系统,那么您可以只使用 2 位作为块偏移量。但实际上我所知道的所有系统都是字节可寻址的。