我感兴趣的是在Windows中强制CPU缓存刷新(出于基准测试的原因,我想模拟从CPU缓存中没有数据开始),最好是基本的C实现或Win32调用.
是否有一种已知的方法可以通过系统调用来执行此操作,甚至可以像执行大型操作一样偷偷摸摸地执行此操作memcpy?
英特尔i686平台(P4及以上版本也可以).
我正在写一个C程序,我需要冲洗我的记忆.我想知道是否有任何UNIX系统命令来刷新CPU缓存.
这是我的项目的一项要求,它涉及计算我的逻辑所需的时间.
我已经阅读了有关该cacheflush(char *s, int a, int b)功能的内容,但我不确定它是否合适以及在参数中传递什么.
我正在尝试在linux上使用WBINV指令来清除处理器的L1缓存.
以下程序编译,但在我尝试运行它时会产生分段错误.
int main() {asm ("wbinvd"); return 1;}
我正在使用gcc 4.4.3并在我的x86机器上运行Linux内核2.6.32-33.
处理器信息:Intel(R)Core(TM)2 Duo CPU T5270 @ 1.40GHz
我按如下方式构建了该程序:
$ gcc
$ ./a.out
分段故障
谁能告诉我我做错了什么?我如何让它运行?
PS:我正在运行一些性能测试,并希望确保处理器缓存的先前内容不会影响结果.
我在xeon服务器上运行基准测试,我重复执行2-3次.我想在重复运行时擦除L1和L2中的缓存内容.你能建议任何方法吗?