对于内存中超过缓存大小的矩阵,如何计算理论上的缓存未命中数?

How to count # of cache misses in theory for a matrix in memory exceeding cache size?

我目前正在考虑 n x n 矩阵 M 的 64 位整数元素以行优先顺序存储在主内存中。我有一个 L1 数据 缓存 的 16KB 分成 64B 块(没有 L2 或 L3)。我的代码旨在通过按行优先顺序或列优先顺序遍历矩阵,一次打印出数组的每个元素。

n = 16(即 16 x 16 矩阵)的情况下,自从矩阵 M 完全适合 16KB 缓存(它永远不需要跳转到主内存来获取元素)。我将如何处理 n = 256(64 位整数的 256 x 256 矩阵)的情况;即当 M 不完全适合缓存时?我是将所有不适合的整数都算作未命中,还是可以以某种方式利用空间局部性?假设缓存最初是空的。

“0 次缓存未命中”似乎假设您从缓存中已经存在的 M 开始。这已经有点可疑了,但是没关系。

对于 256x256 的情况,您需要模拟缓存的行为方式。您必须有缓存未命中才能引入丢失的条目。每个缓存未命中不仅会带来请求的 int,还会带来 7 个相邻的 int。