Caching 直接映射缓存位

Caching 直接映射缓存位,caching,assembly,memory,cpu-architecture,Caching,Assembly,Memory,Cpu Architecture,因此,我很难理解直接映射缓存的某些部分。我有一个字节寻址的内存系统,有64KB的内存和2KB的直接映射缓存。缓存块是32字节 根据我的理解,如果我错了,请纠正我,我有2048B/32B=64个缓存块。我需要计算出每个缓存条目需要多少位(标记、“脏”位等) 我相信我需要6个索引位(2^6=64(#个块)) 和5个偏移位(2^5=32(缓存块大小)) 我只是很难找出所需的其余部分。物理地址的位可以分为3组-确定“缓存块内字节偏移量”且不需要存储在标记中的最低有效位组,确定“缓存块内缓存块索引”的中间

因此,我很难理解直接映射缓存的某些部分。我有一个字节寻址的内存系统,有64KB的内存和2KB的直接映射缓存。缓存块是32字节

根据我的理解,如果我错了,请纠正我,我有2048B/32B=64个缓存块。我需要计算出每个缓存条目需要多少位(标记、“脏”位等)

我相信我需要6个索引位(2^6=64(#个块)) 和5个偏移位(2^5=32(缓存块大小))
我只是很难找出所需的其余部分。

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

使用64kib的物理地址空间,一个物理地址将有16位;如果缓存是2048字节,那么(对于“直接映射”),最低有效位组和中间位组的总和必须达到11位。这意味着最高有效位组(必须存储在标记中)需要为5位(因为16位-11位=5位)

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