直接映射的缓存位

时间:2017-12-10 20:14:27

标签: caching assembly memory cpu-architecture

所以我无法理解某些部分来指导映射缓存。我有一个字节寻址的内存系统,具有64KB内存和2KB直接映射缓存。高速缓存块是32个字节。

根据我的理解,请纠正我,如果我错了,我有2048B / 32B = 64个缓存块。我需要弄清楚每个缓存条目需要多少总位数(标记,"脏"位等)。

我相信我需要6个索引位(2 ^ 6 = 64(块数)) 和5个偏移位(2 ^ 5 = 32(高速缓存块的大小)) 我只是在找出所需的其余部分时遇到了麻烦。

1 个答案:

答案 0 :(得分:3)

物理地址的位可以分为3组 - 最低有效位组,用于确定“高速缓存块内字节的偏移”,不需要存储在标签中,中间的一组位确定“缓存中缓存块的索引”并且不需要存储在标记中,并且最重要的位组用于检查缓存中的数据是否是您想要的数据,必须存储在标签。

物理地址空间为64 KiB,物理地址为16位;如果你的缓存是2048字节,那么(对于“直接映射”)最低有效位组和中间组位组合必须加起来总共11位。这意味着最重要的位组(必须存储在标签中)需要为5位(因为16位--11位= 5位)。

其他位;你总是需要一些东西来表明这个条目是用还是空;如果缓存是“回写”,则需要一个脏位,但如果缓存是“直写”,则不需要;如果存在多个CPU和高速缓存一致性,则需要更多位(例如,独占/共享);如果存在任何类型的错误检测或纠正,则需要更多位(例如“奇偶校验位”)。这意味着总标签大小至少为6位(但可能更多)。