2012-04-13 77 views
2

我試圖禁用硬件預取程序以在Intel核心i5 2500上運行一些內存基準測試。問題是,在我的BIOS中沒有任何選項來啓用或禁用預取程序。所以我正在嘗試使用msr-tools禁用預取程序。但是msr-tool無法將一些特定值寫入所需的寄存器(0x1a0h)。無法禁用硬件預取程序

$ rdmsr -p 0 0x1a0 
850089 

$ wrmsr -p 0 0x1a0 0x850289 
wrmsr: CPU 0 cannot set MSR 0x000001a0 to 0x0000000000850289 

這對於所有的cpus都是一樣的。但是,如果我嘗試寫入值0x850088(僅用於測試),它將成功寫入該值。

任何人都可以指出問題出在哪裏以及解決方案是什麼?

另外我覺得很奇怪,在我的BIOS中沒有預取器禁用選項。這是一些版本的BIOS的情況嗎?

謝謝。

+0

是這是一個編程問題? – jadarnel27 2012-04-13 17:58:03

+0

不完全。這是一個與禁用硬件預取程序相關的問題,但可能會完成。 – 2012-04-13 18:10:40

+0

啊,好的。如果你不知道它在那裏,你可能對[SU]有更好的運氣。它位於同一個網站系列,更適合我相信的這類問題。 – jadarnel27 2012-04-13 18:26:31

回答

0
sudo modprobe msr 
sudo rdmsr -p $i 0x1a0 -f 3:0 

L2硬件預提取器 - 位0

L2相鄰的高速緩存線預取器 - 位1

DCU預取 - 位2

DCU IP預取器 - 第3位

[1 ]

我得到9作爲迴應。如果該位設置爲預取程序關閉。 L2硬件預取程序和DCU IP預約程序關閉。 要切換它們:

$ sudo rdmsr -p 0 0x1a0 
850089 
# now we update bits 0 and 3 
$ sudo wrmsr -p 0 0x850080 # 0b1001 = 0x9 wheras 0b0000 = 0x0 
# check it took 
$ sudo rdmsr -p 0 0x1a0 
850080 

現在所有的預取都在

關閉它們很相似 $ sudo的WRMSR -p0 0x85008f #這個失敗對我來說,我可以設置位1,因此L2 adacent高速緩存行預取停留在 $ suod WRMSR -p0 0x85008d #別人可以關掉

[1] https://software.intel.com/en-us/articles/disclosure-of-hw-prefetcher-control-on-some-intel-processors

相關問題