前言:有许多不同的设计模式对缓存的整体性能很重要。下面列出了不同直接映射缓存设计的参数。
缓存数据大小:32 kib 缓存块大小:2个字 缓存访问时间:1个周期
问题:假设32位地址,计算上面列出的缓存所需的位数。给定总大小,找到具有相同大小或更大的16字块的最近的直接映射高速缓存的总大小。解释为什么第二个缓存尽管数据量较大,但可能会提供第一个缓存的较慢性能。
以下是公式: 高速缓存中的位数2 ^ n X(块大小+标签大小+有效字段大小)
以下是我的内容:
65536(1 + 14X(32X2)..这是正确的吗?感谢任何帮助。
答案 0 :(得分:2)
使用:(2^index bits) * (valid bits + tag bits + (data bits * 2^offset bits))
我得到的第一个:
total bits = 2^15 (1+14+(32*2^1)) = 2588672 bits
对于包含16个字块的缓存,我得到:
total bits = 2^13(1 +13+(32*2^4)) = 4308992
16个字块和32位地址的下一个最小缓存为2158592位,小于第一个缓存。
答案 1 :(得分:1)
我也遇到了同样的问题,但我得到了第一部分的答案。
计算所需的总位数
将它们插入此公式。
(2^(index bits)) * ((tag bits)+(valid bits)+(data size))
提示:在这种情况下数据大小为64位,有效位为1.所以只需查找索引和标记位。
我认为你的答案是对的。我没有检查,但我可以看到你正在乘以1 + 14和(32x2)而不是添加它们。
答案 2 :(得分:0)
我认为您使用的公式是正确的。根据我的教科书“计算机组织和设计硬件,第5版”,直接映射缓存中的总位数为:
2^indext bits * (block size + tag size + valid field size).