如何关闭Windows中缓存的预取?

How to close the prefetch of cache in windows?

提问人:MainID 提问时间:3/8/2010 更新时间:3/18/2010 访问量:684

问:

在C/C++程序中,Windows系统中每个内核的预取如何关闭?

C++ Windows 缓存 预取

评论

3赞 Nikolai Fetissov 3/8/2010
嗯。。。可能会在这里使用更好的措辞。您的意思是禁用来自特定地址的预取吗?别的?你想完成什么?

答:

0赞 t0mm13b 3/8/2010 #1

我已经在一些代码中看到过这个技巧,虽然我不能 100% 确定这个技巧是否是你要找的,但是,代码是这样的

Sleep(0);

通过使用 ,您将清除 CPU 指令并导致上下文切换...现在你确实说了“对于每个内核”,我认为你不能明确地选择一个内核来做到这一点,因为你怎么知道哪个内核正在运行需要关闭缓存预取的代码......Sleep(0)

评论

0赞 Nikolai Fetissov 3/9/2010
Sleep()不保证上下文切换。此外,上下文切换是一种停止预取的残酷方法。
0赞 t0mm13b 3/9/2010
@Nikolai: 啊...k....没有问题,所以......我不太确定......感谢您的输入!:)
3赞 rep_movsd 3/18/2010 #2

有一个 Windows API 调用 FlushInstructionCache()

也许这就是你需要的?它通常由自我修改代码使用,以确保对 RAM 中代码的更改对处理器可见。