7

Core i7 システムでハードウェア プリフェッチャーを無効にしようとすると、エラーが発生します。リンクの方法に従っていますハードウェアのプリフェッチをプログラムで無効にするにはどうすればよいですか?

私のシステムでは

grep -i msr /boot/config-$(uname -r)

CONFIG_X86_DEBUGCTLMSR=y

CONFIG_X86_MSR=y

CONFIG_SCSI_ARCMSR=m

ここに私のエラーメッセージがあります

root@ ./rdmsr 0x1a0

850089

[root@ ./wrmsr -p 0 0x1a0 0x850289 (Core i7 でハードウェア プリフェッチャーを無効にするため)

wrmsr:pwrite: 入出力エラー

Adjacent cache line prefetcherを無効にしても同じエラーが発生します

この問題を解決する方法はありますか? 前もって感謝します 。

4

2 に答える 2

4

MSR 仕様は、Intel Architectures Software Developer Manualsの第 35 章で説明されているように、Intel プロセッサ ファミリに固有のものです。結果として、最初に MSR を介して CPU のプリフェッチャーを無効にできることを確認し、次にどのレジスタのどのビットを切り替える必要があるかを確認する必要があります。そのために。

私のプロセッサである Intel Xeon 5650 (06_2CH ファミリ) のマニュアルでは、アドレス 0x1A0 にあるレジスタ IA32_MISC_ENABLE のビット 10 ~ 8 が予約されていると指定されています。これは、MSR を介してプリフェッチャーのオンとオフを切り替えることができないことを意味していると思います。ここのインテルの従業員からの回答によると:"Intel has not disclosed how to disable the prefetchers on processors from Nehalem onward. You'll need to disable the prefetchers using options in the BIOS."

私のワークステーションで、実行中

sudo wrmsr -p 0 0x1a0 0x850289

結果:

wrmsr: CPU 0 cannot set MSR 0x000001a0 to 0x0000000000850289

しかし

sudo wrmsr -p 0 0x1a0 0x850088

動作します。

これは、MSR を使用してプリフェッチを無効にできないことを確認しているようです。このエラーはあなたのものとは異なることに注意してください。上記の Intel マニュアルの 35.9 章を読んだ後、お使いのプロセッサでは MSR でプリフェッチャーを無効にできないようです。同じエラー メッセージが表示されない理由がわかりません。 msr モジュールと Linux カーネルのバージョンは何ですか? ( modinfo msr)

結果として、BIOS がさまざまなプリフェッチャーを無効にする唯一の方法である可能性があります。これは、私の Xeon 5650 の場合です。

于 2014-01-27T14:12:02.870 に答える