直接映射缓存:如何确定地址分解

直接映射缓存:如何确定地址分解

假设我有一个 32 位可寻址内存和一个 4 kib 直接映射缓存。假设缓存的每个条目(行)都由一个唯一字(32 位)组成。

我们可以推断索引的大小为 10 位,因为 4*2^10 字节 / 4 = 2^10 字 = 2^10 行。

现在,由于每行只有一个字,我假设我们不需要偏移字段。因此,缓存的地址按以下方式分解:

  • 位 0 至 9 :索引
  • 位 10 至 31:标签

我的逻辑有错误吗?

答案1

我们需要 2 位作为偏移量,因为 32 位值有 4 个字节,并且每个字节可能被单独访问,因此偏移量可能是 0、1、2 或 3。

因此,直接映射缓存会将地址分解为以下形式:

  • 位 0 至 1:偏移量
  • 位 2 至 11:索引
  • 位 12 至 31:标签

答案2

一个缓存行通常为 64 个字节,偏移位 0-6 选择该行上的一个字节。

相关内容