Caching 计算缓存中的位数
前言:有许多不同的设计模式对缓存的整体性能很重要。下面列出了的参数 不同的直接映射缓存设计Caching 计算缓存中的位数,caching,computer-science,cpu-architecture,cpu-cache,Caching,Computer Science,Cpu Architecture,Cpu Cache,前言:有许多不同的设计模式对缓存的整体性能很重要。下面列出了的参数 不同的直接映射缓存设计 缓存数据大小:32千字节 缓存块大小:2个字 缓存访问时间:1个周期 问题:假设32位地址,计算上面列出的缓存所需的位数。给定总大小,找到 最近的直接映射缓存的总大小(包含16个字块) 大小相等或更大。解释为什么第二个缓存 数据量越大,性能可能会比第一个版本慢 缓存 下面是公式: 缓存中的位数2^n X(块大小+标记大小+有效字段大小) 以下是我得到的:65536(1+14X(32X2)。 这是正确的
- 缓存数据大小:32千字节
- 缓存块大小:2个字
- 缓存访问时间:1个周期
缓存中的位数2^n X(块大小+标记大小+有效字段大小) 以下是我得到的:
65536(1+14X(32X2)
。这是正确的吗?我也被困在同一个问题上,但我有第一部分的答案 计算所需的总位数
(2^(index bits)) * ((tag bits)+(valid bits)+(data size))
(2^索引位)*(有效位+标记位+(数据位*2^偏移位))
对于第一个,我得到:
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位,比第一个缓存小。我认为您使用的公式是正确的。根据我的教科书“计算机组织与设计硬件,第五版”,直接映射缓存中的总位数为:
2^indext bits * (block size + tag size + valid field size).
- 块大小由以下问题给出:2个字=32位
- 标记大小:32-偏移量(位)-索引(位)
- 有效字段大小通常为1个有效位
2^15个块
?由于缓存数据大小为32KiB
,并且有2个字/块
,32*2^10字节/8字节
导致2^12个块
。问题没有指定字的大小,但如果地址大小是32位的话,很好的猜测是字的大小=32-位。(因此指针是一个单词,就像一个典型的32位RISC)。比您假设的16位单词大小更可能。更好的问题应该指定单词大小,而不是让回答者猜测。可能是OP遗漏的某些上下文暗示了这一点。