1

如果您不知道关联性级别或缓存本身的大小,是否有任何方法可以保证您仅访问映射到 n 路集关联缓存中相同集的块?我知道给定关联级别或缓存大小都可以做到这一点,但在这种特殊情况下,我所得到的只是对缓存大小的低估计。我已经考虑了一段时间,我开始相信这是不可能的,但我不确定。

为了这个问题,请假设不可能通过任何方式获得关联级别或缓存大小。

这样做的原因是我试图定量确定关联性的级别,但是我用来定量确定缓存大小的算法只给出了缓存大小的精确结果,它是 2 的幂,它给出了最接近的 2 的幂估计否则。不幸的是,我目前正在运行的机器有一个 3MB L2 缓存。

4

1 回答 1

0

在进行更多研究并询问计算机体系结构教授之后,似乎没有万无一失的方法来保证如果您不知道缓存大小或缓存的关联性,您只会访问映射到同一组的块。

给定缓存大小 N,您可以访问由 N 字节或 N 字节的任意倍数分隔的数组元素,并且随后拉入的每个块都将映射到同一个集合。这是保证您只访问映射到同一集合的块的最简单方法。

如果你不知道缓存大小,你能做的最好的就是估计。例如,如果您访问以 32MB 分隔的数组元素,那么您可以保证仅访问映射到相同集合的任何缓存大小的块,该缓存大小是 2 的幂,最大为 32MB。奇数大小的缓存不会有同样的保证。

于 2012-11-27T01:46:22.127 回答