如果您不知道关联级别和缓存本身的大小,是否有任何方法可以保证只访问映射到n路组关联缓存中相同集合的块?我知道,无论给定级别的关联性还是高速缓存大小,都可以这样做,但在这种特殊情况下,我所得到的只是对缓存大小的低估计。我已经考虑了一段时间了,我开始相信这是不可能的,但我并不确定。
为了这个问题,请假设无法以任何方式获得关联级别或缓存大小。
这样做的原因是我试图定量地确定关联性水平,但我用来定量确定缓存大小的算法只给出了2的幂的缓存大小的精确结果,它给出了最近的幂否则两个估计。不幸的是,我目前正在运行的机器有3MB L2缓存。
答案 0 :(得分:0)
在做了更多研究并询问计算机体系结构教授之后,如果您不知道缓存大小或缓存的关联性,似乎没有万无一失的方法可以保证只访问映射到同一集合的块
给定高速缓存大小N,您可以访问由N个字节或N个字节的任意倍数分隔的数组元素,随后被拉入的每个块将映射到同一个集合。这是保证只访问映射到同一组的块的最简单方法。
如果你不知道缓存大小,你可以做的最好是估计。例如,如果访问以32MB分隔的数组元素,则可以保证只访问映射到同一集合的块,这些块的任何高速缓存大小为2的幂,最大为32MB。奇数大小的缓存不具备相同的保证。