从理论上讲,如何为超过内存大小的内存矩阵计算高速缓存未命中次数?

问题描述

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

n = 16 (即16 x 16矩阵)的情况下,由于矩阵M完全适合于16KB缓存(它无需跳转到主内存即可获取元素)。我该如何处理 n = 256 (256 x 256的64位整数矩阵)的情况;即当M不能完全容纳在缓存中时?我是否会将所有不适合的整数都算作遗漏,还是可以通过某种方式利用空间局部性?假设缓存最初是空的。

解决方法

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

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