任何人都可以帮我,并提供一些关于计算缓存标签大小的提示,并给出以下数据:
我找到了以下公式:
Stag = log2(Smemory * A / Scache),
其中:
Stag - 缓存标记的大小,以位为单位
Smemory - 可缓存的操作内存范围,以字节为单位
Scache - 缓存内存的大小,以字节为单位
A - 缓存内存的相关性。
然而,我没有得到Smemory。有没有可能的方法使用给定的数据来计算它?
问候!
答案 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是字大小,以字节为单位