相关疑难解决方法(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
查看次数

"C"以编程方式清除Linux机器上的L2缓存

在"C"中编写的与清除Linux OS机器上的L2缓存相关的编程步骤是什么?

/ sys/devices/system/cpu/cpu0/cache/index2/size = 6144K x 8CPU

c linux caching

5
推荐指数
1
解决办法
3281
查看次数

为什么第一次运行C程序,运行速度慢10倍

使用排序的我的C程序第一次比其他时间慢了10倍.它使用整数文件进行排序,即使我更改数字,程序仍然运行得更快.当我重新启动PC时,第一次程序运行速度慢了10倍.我time用来计算时间.

c

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

尝试刷新缓存时出现分段错误(核心转储)错误

我正在尝试一些测量机器上TLB大小的方法.我不知何故需要确保CPU不会缓存我用来测量每页平均访问时间的数组元素.所以我在循环中尝试了这个代码,使用这里的答案:

FILE *fp;
fp = fopen("/proc/sys/vm/drop_caches", "w"); 
fprintf(fp, "3"); 
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

但是,我收到了Segmentation Fault (core dumped)错误.我不知道为什么会发生这种情况.我对C不是很好,任何帮助都会受到赞赏.谢谢.

c caching tlb

0
推荐指数
1
解决办法
385
查看次数

标签 统计

c ×6

caching ×4

cpu-cache ×2

linux ×2

x86 ×2

assembly ×1

cpu ×1

flush ×1

tlb ×1

unix ×1

windows ×1