如何计算缓存标签大小?

时间:2014-06-15 21:50:22

标签: caching cpu computer-architecture cpu-architecture

任何人都可以帮我,并提供一些关于计算缓存标签大小的提示,并给出以下数据:

  1. 高速缓冲存储器的相关性,方式= 4
  2. 缓存大小= 512kB
  3. 每行的大小= 128字节
  4. 每个子集的行之间的最小距离= 16kB
  5. 我找到了以下公式:

    Stag = log2(Smemory * A / Scache),

    其中:

    Stag - 缓存标记的大小,以位为单位

    Smemory - 可缓存的操作内存范围,以字节为单位

    Scache - 缓存内存的大小,以字节为单位

    A - 缓存内存的相关性。

    然而,我没有得到Smemory。有没有可能的方法使用给定的数据来计算它?

    问候!

1 个答案:

答案 0 :(得分:0)

你必须在这里做两个假设。首先是关于地址宽度的假设,这就是为什么你的公式要求Smemory。第二个假设是一个字的字节数,以及是否具有字寻址能力或字节寻址能力。让我举个例子。我们假设一个32位地址和字节可寻址性。然后,您将拥有:

# of index bits = log2(512K / 4) = 17
# of tag bits = 32 - 17 = 15

使用您的公式

  

log2((2 ^ 32)* 4 / 512K)= 15

如果你只有32位字的字可寻址性,那么你得到:

# of index bits = log2(512K / 4) = 17
# of tag bits = 32 - 17 - log2(4) = 13

你必须调整你的公式才能得到相同的结果:

  

log2((2 ^ 32)* 4 /(512K * 4))= 13

你的公式应如下:

  

Stag = log2(Smemory * A /(Scache * Sword)),

其中:

Sword是字大小,以字节为单位

相关问题