【问题标题】:Cache hit rate for a set-associative cache: I don't understand this diagram组关联缓存的缓存命中率:我看不懂这个图
【发布时间】:2016-07-11 13:37:48
【问题描述】:

标题可能不太好,但我找不到更好的。

我们有作业要做,我没有交,因为我不明白。现在因为它结束了,我们得到了解决方案......现在我正在尝试使用解决方案来理解任务,因为尝试理解我们教授的复杂脚本对我来说是浪费时间。


任务:

我们有一个直接映射的缓存,在 main 上具有以下访问频率 内存块:

2 5 0 13 2 5 10 8 0 4 5 2

如果缓存是 集大小为 4 和 FIFO 的集关联缓存?

my last question about direct-mapped caches,我学会了如何计算热门报价,顺便说一句非常感谢。 我唯一的问题是我不明白这些数字是如何放在表格中的。

我想编程可能是:0-3 是 array1,其他 0-3 是 array2。 我们取缓存的第一个数字 2 并将其放入 array1 中,因此它位于 array1[0] 中。然后我们对下一个数字做同样的事情,取 5 并将其放入 array2[0]。现在取下一个数字 0 并放入 array[1]

但是看起来模式是错误的,直到表格的第 4 行它是正确的,但是它是错误的......

为什么表格中的数字是这样排列的?

解决方案:

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题。这是一个计算机体系结构问题。
  • 奇怪,因为我的另一个主题还没有关闭,而且我在堆栈溢出时看到了几个类似的主题。
  • 您没有提供足够的信息,但看起来偶数地址映射到第一列,奇数地址映射到第二列。在每一列中,它只是一个 FIFO。假设这是正确的,那么您不明白的具体是什么?
  • 哦,谢谢小丑!好吧,您可能很容易清楚地看到这一点,但对我来说却不是! :) 也许让你的评论成为答案,这样我就可以给你 + 和绿色标记。
  • 所以你有一个任务。你参加了一些课程来完成这项任务。我假设教授或了解他们所教内容的人进行了一些讲座。你当时没问。然后你没有完成任务。去了另一个或更多的班级,当时没有问,得到了答案(上课时?),然后没有问,没有追问?我是否正确理解这一点?教育你至少是这些人的一部分工作。如果他们不做他们的工作,我会认真考虑你是否应该在那里支付学费......

标签: caching memory cpu-architecture


【解决方案1】:

您可能想知道为什么数字不与地址对齐,就像直接映射的情况一样。此图中发生的情况是,项目从左到右放入集合中,仅此而已,因为集合最初是空的。值 2、0、10 和 8 映射到最左边的集合。 2 首先出现,因此它位于最左侧的列中。然后 0 被放置在下一个可用位置。 2 再次出现,这是括号中指示的“命中”。然后出现 10 并进入第三个位置。 8 转到第四个位置,缓存块现在已满。 0 重复出现,并且有一个命中,因为它仍在缓存中,在第二个位置。现在出现4。缓存集已满:必须踢出一些东西。 2 被踢出(可能是由于最近最少使用 (LRU) 替换策略)并被 4 替换。这就是为什么 4 在最左边的列中;它已经取代了 2。现在 2 再次出现并且不再在缓存中,因为它刚刚被踢出。现在最近最少使用的缓存项是 0,所以 it 被踢出,现在 2 位于第二个位置。

请注意,真正的四路组关联缓存并不总是使用完整的块级 LRU 替换策略,因为需要进一步简化以加快速度。

顺便说一下,地址是根据简单的模4分配到集合中的。不是偶数地址去左边集合而奇数地址去右边:

    set 0             set 1
0   1   2   3  |   0   1   2   3    <-   addr modulo 4
---------------+-----------------
0   1   2   3  |   4   5   6   7    <-   full addr
8   9  10  11  |  12  13  14  15  

如您所见,这与表格中的内容一致;当然,除了地址与它们的模 4 位置不匹配:根据替换策略,它们在每组中被赋予任意位置。

【讨论】:

  • 非常感谢这个答案,它让我大开眼界,之前我什至没有想过/不知道之前的数字会发生什么以及为什么某些数字(如 2 和 5)放在同一个专栏,现在明白了。对我来说似乎有点不清楚的是你在 mod 4 中提到的最后一部分。所以即使地址在左边,右边也不均匀,这不是真的?
  • 没关系,明白了,一切都清楚了! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 2017-09-15
  • 2013-01-17
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多