相关疑难解决方法(0)

有没有办法检查最近是否已刷新处理器缓存?

在i386 linux上.如果可能的话,最好在c /(c/posix std libs)/ proc中.如果没有,是否有任何组装或第三方库可以做到这一点?

编辑:我正在尝试开发测试内核模块是否清除缓存行或整个proccesor(使用wbinvd()).程序以root身份运行,但如果可能的话,我宁愿留在用户空间.

linux cpu flush hardware-interface cpu-cache

10
推荐指数
1
解决办法
2884
查看次数

WBINVD指令用法

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

c x86 assembly caching cpu-cache

7
推荐指数
2
解决办法
8598
查看次数

标签 统计

cpu-cache ×2

assembly ×1

c ×1

caching ×1

cpu ×1

flush ×1

hardware-interface ×1

linux ×1

x86 ×1