gpt4 book ai didi

caching - 组关联缓存的缓存命中率 : I don't understand this diagram

转载 作者:行者123 更新时间:2023-12-02 11:13:13 32 4
gpt4 key购买 nike

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

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

<小时/>

任务:

We have a direct mapped cache with following access frequency on main memory blocks:

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

What's the hitting quote (aka hit rate) if the cache is a set-associative cache with set size 4 and FIFO?

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

我想像编程一样:0-3是数组1,其他0-3是数组2。我们取出缓存的第一个数字 2 并将其放入 array1 中,因此它位于 array1[0] 中。然后我们对下一个数字执行相同的操作,取 5 并将其放入 array2[0] 中。现在取出下一个数字 0 并将其放入数组[1]中。

但是看起来模式是错误的,直到表的第 4 行为止都是正确的,但随后就错误了......

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

解决方案:enter image description here

最佳答案

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

请注意,真正的四路组关联缓存并不总是使用完整的 block 范围 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 位置不匹配之外:根据替换策略,它们在每组中被赋予任意位置。

关于caching - 组关联缓存的缓存命中率 : I don't understand this diagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308430/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com