【问题标题】:Calculating the position and the tag of an memory address in the cache计算缓存中内存地址的位置和标签
【发布时间】:2019-01-18 19:28:27
【问题描述】:

我想知道我是否正确解决了这个关于直接映射缓存的问题。我需要计算块在缓存中的位置并找到它的标签。

假设 CACHE 有 1024 个 BLOCK,每个 BLOCK 有 64 个字节,那么地址 5C892D0(hex) 将存储在 CACHE 的哪个位置?

二进制码地址5C892D0为:

101 1100 1000 1001 0010 1101 0000.

由于每个块中有 512 位,我知道最右边的 9 位 (2^9 = 512) 是 MAIN MEMORY 中的位置,前 10 位 (2^10=1024) 是 CACHE 中的位置.其余位形成 TAG。

所以这个地址的CACHE中的block位置是0001001001或者CACHE中的第73个BLOCK,TAG是10111001。

【问题讨论】:

    标签: caching memory tags


    【解决方案1】:

    你的计算有一个小错误

    因为每个块中有 512 位我知道最右边的 9 位 (2^9 = 512)

    块是 64 字节。最低位用于指示块内字节位置的偏移量,只需要 6 位。您考虑了位数 (512=64x8),但地址是 byte 地址并且不正确。

    你是对的,接下来的 10 位是在直接映射缓存中的 1024 个块中选择一个块的索引。

    而标签由剩余的位组成

    因此偏移量= 01 0000

    索引=1001001011=587

    标签=0101 1100 1000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多