我正在尝试使用 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:我正在运行一些性能测试,并希望确保处理器缓存的先前内容不会影响结果。