强制L1缓存未命中

时间:2016-05-08 11:45:07

标签: x86

我想强制我的程序每次(或几乎每次)都错过缓存L1。

所以,我的IvyBridge有32 KB L1缓存,它是8路。因此,每组包含8行,每行包含64个字节。要设置的前6位地址映射,最后7位映射到行中的偏移,其他位确定标记。

如何错过缓存?我应该在同一套装中使用8(每组有8行)不同的加载操作吗?

1 个答案:

答案 0 :(得分:4)

是的,你走在正确的轨道上。使用将在同一组中的所有地址将允许您使用最少的不同地址测试L1缓存未命中。

然而,8个不同的地址显然是不够的,因为它们都可以装入一组。你最好的选择是将它翻倍或翻两倍,让LRU驱逐算法有很多机会在你回到它之前逐出一条线。

如果在太多页面上使用太多不同的地址,请注意TLB未命中。 2MB大页面可以帮到这里。