X86 强制一级缓存未命中

X86 强制一级缓存未命中,x86,X86,我希望每次(或几乎每次)都强制我的程序错过缓存L1 所以,我的IvyBridge有32 KB的一级缓存,它是8路的。因此,每组包含8行,每行有64个字节。要设置的地址映射的前6位,行中偏移的最后7位,以及其他位确定标记 如何错过缓存?我是否应该从同一组中使用8(每组有8行)不同的加载操作 是的,你走对了。使用将全部放在同一集中的地址,可以使用最少的不同地址测试一级缓存未命中 然而,8个不同的地址显然是不够的,因为它们都可以放在一个集合中。你最好的选择是加倍或四倍,给LRU逐出算法足够的机会在你返

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

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


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

是的,你走对了。使用将全部放在同一集中的地址,可以使用最少的不同地址测试一级缓存未命中

然而,8个不同的地址显然是不够的,因为它们都可以放在一个集合中。你最好的选择是加倍或四倍,给LRU逐出算法足够的机会在你返回之前逐出一行


但是,如果您在太多的页面上使用了太多不同的地址,请注意TLB未命中。2MB的hugepages在这方面有帮助。

这还不清楚。缓存未命中的最简单方法是加载当前不在缓存中的地址。顺便说一下,一级缓存线是64字节。为什么要尝试这样做?你想完成什么?