相关疑难解决方法(0)

如何在x86 Windows中执行CPU缓存刷新?

我感兴趣的是在Windows中强制CPU缓存刷新(出于基准测试的原因,我想模拟从CPU缓存中没有数据开始),最好是基本的C实现或Win32调用.

是否有一种已知的方法可以通过系统调用来执行此操作,甚至可以像执行大型操作一样偷偷摸摸地执行此操作memcpy

英特尔i686平台(P4及以上版本也可以).

c windows cpu x86 cpu-cache

46
推荐指数
2
解决办法
3万
查看次数

如何从C程序中刷新Linux中的CPU缓存?

我正在写一个C程序,我需要冲洗我的记忆.我想知道是否有任何UNIX系统命令来刷新CPU缓存.

这是我的项目的一项要求,它涉及计算我的逻辑所需的时间.

我已经阅读了有关该cacheflush(char *s, int a, int b)功能的内容,但我不确定它是否合适以及在参数中传递什么.

c unix linux caching flush

9
推荐指数
3
解决办法
3万
查看次数

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 L1和L2缓存

我在xeon服务器上运行基准测试,我重复执行2-3次.我想在重复运行时擦除L1和L2中的缓存内容.你能建议任何方法吗?

caching

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×3

caching ×3

cpu-cache ×2

x86 ×2

assembly ×1

cpu ×1

flush ×1

linux ×1

unix ×1

windows ×1