【问题标题】:Set Associative Cache - How many memory blocks map to a set?设置关联缓存 - 有多少内存块映射到一组?
【发布时间】:2023-03-25 11:46:02
【问题描述】:

我正在准备期末考试,我有以下教授回答的示例问题:

问题

指令缓存(I-cache)的存储容量为 524288 字节 并采用 128 字节高速缓存行。缓存所在的内存 使用的大小为 209715200 字节。多少个不同的内存块 可能会映射到 4 路集合关联中的集合 10 缓存?

回答

块号的第 16 位到第 7 位等于的任何内存块 0000001010 将映射到设置 10。由于内存为 209715200 字节 大小(= 0xC800000),因此只有地址的低 28 位将永远是 非零。也就是说,最多需要 28 位来指定任何地址 记忆中。所以上面的 28-10-7 = 11 位将决定如何 许多不同的块映射到一个单独的集合。上层的值 11 位范围从 0 到 11000111111 = decimal1599。所以 1600 不同 块映射到 4 路集合关联缓存中的集合 10。

谁能解释这个答案?我对以下项目特别困惑。我认为高 11 位是标签。为什么这与它是否映射到集合 10 有关。我也不明白 1100111111 的 11 位的上限来自哪里?

【问题讨论】:

    标签: caching architecture


    【解决方案1】:

    你是对的。标签是高 11 位。但是措辞不好的解释是物理内存对应的标签永远不会映射到大于11000111111,因为大小为0xC800000的物理内存有这个数字的上限。也就是说,大于 11000111111 的标签会映射到 0xC800001 或更大的物理地址。

    本质上要找到一个集合可以映射到的块数,只需计算可以给定物理内存大小以及集合位和偏移位大小的标记可能性的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 2016-04-06
      相关资源
      最近更新 更多