我目前正在考虑一个n x n矩阵m,它包含按行主顺序存储在主存储器中的64位整数元素。我有一个L1数据缓存,16KB,分为64B块(没有L2或L3(。我的代码旨在通过按行第一顺序或列第一顺序遍历矩阵,一次打印出数组的每个元素。
在n=16(即16 x 16矩阵(的情况下,我使用行第一顺序和列第一顺序计算了0次缓存未命中,因为矩阵M完全适合16KB的缓存(它从不需要跳转到主内存来获取元素(。我将如何处理n=256(64位整数的256 x 256矩阵(的情况;即当M不完全适合缓存时?我是把所有不适合的int都算作未命中,还是可以以某种方式利用空间局部性?假设缓存最初是空的。
;0个缓存未命中";似乎假设您从缓存中的M开始。这已经有点可疑了,但还好。
对于256x256的情况,需要模拟缓存的行为。您必须有缓存未命中才能引入丢失的条目。每个缓存未命中不仅会带来请求的int,还会带来7个相邻的int。