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 の場合です。