2010-03-08 48 views
4

在C/C++程序中,如何關閉Windows系統中每個內核的預取?如何在Windows中關閉高速緩存的預取?

+3

嗯......可能會在這裏使用更好的措辭。你的意思是禁用特定地址的預取?還有別的嗎?你想達到什麼目的? – 2010-03-08 15:52:58

回答

0

我已經看到了一些代碼中提到這一招,雖然我不是100%肯定,如果這一招是你在找什麼,但是,代碼是這樣的

 
Sleep(0); 

使用Sleep(0),你正在清理CPU指令並導致上下文切換...現在你確實說'對於每個核心',我不認爲你可以明確地選擇一個核心來做到這一點,因爲你如何知道哪個核心正在運行需要的代碼關閉預取緩存....

+0

Sleep()不保證上下文切換。另外,上下文切換也是停止預取的一種殘酷的方式。 – 2010-03-08 16:06:51

+0

@Nikolai:Ahhh ... k ....沒有概率,所以....我真的不知道....感謝您的輸入! :) – t0mm13b 2010-03-08 16:27:51

3

有一個Windows API調用FlushInstructionCache()

也許這就是你需要的?它通常由自修改代碼使用,以確保對RAM中代碼的更改對處理器可見。