【问题标题】:Direct Mapped Cache Bits直接映射缓存位
【发布时间】:2018-05-24 09:22:13
【问题描述】:

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

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

我相信我需要 6 个索引位 (2^6 = 64 (# of blocks)) 和 5 个偏移位(2^5 = 32(缓存块大小)) 我只是无法弄清楚所需的其余部分。

【问题讨论】:

    标签: caching assembly memory cpu-architecture


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-24
      • 2014-06-04
      • 2020-04-18
      • 2012-07-09
      • 1970-01-01
      • 2022-01-21
      • 2015-07-07
      • 2012-04-11
      相关资源
      最近更新 更多