すべての AMD ファミリ 10h プロセッサ (バルセロナとイスタンブールを含む) には、2 つの異なるハードウェア プリフェッチャーがあります。
<オール>1 つ目は、昇順または降順のキャッシュ ライン アクセスの連続ストリームを認識する従来のデータ キャッシュ プリフェッチャーです。 MSRC001_1022 のビット 13 を "1" にすることで無効にできます。
もう 1 つのハードウェア プリフェッチャーは、「メモリ コントローラー プリフェッチャー」です。これはやや一般的なプリフェッチャーですが、メモリ コントローラー内でのみ動作します (つまり、プリフェッチされたデータをコアに送信するのではなく、コアが要求したときにメモリ コントローラーがより迅速にデータを返せるようにするだけです)。
- このプリフェッチャーの主な制御は、PCI 構成空間、機能 2、オフセット 11Ch にあります。追加の制御は機能 2、オフセット 1B0h のバルセロナの後のプロセッサにあります。
- /dev/mem デバイス ドライバーを介して PCI 構成空間の値を更新することにより、「ライブ」バルセロナ システムでこのプリフェッチャーを無効にして再度有効にすることに成功しました。 (家でこれを試さないでください!)
- メモリ コントローラー プリフェッチャーのアクティビティは、ハードウェア パフォーマンス カウンター イベント 1F0h によって示され、UnitMask は 02 と 04 です。
- Shanghai/Istanbul/MagnyCours のメモリ コントローラ プリフェッチャーは「コヒーレント」に動作する (キャッシュ コヒーレンス プローブ操作がメモリ プリフェッチと一緒に発行される) のに対し、バルセロナのメモリ コントローラ プリフェッチャーはキャッシュ コヒーレンス オペレーションを発行しないことに注意してください (これらはキャッシュ ラインに対するコアの要求がメモリ コントローラーに到達するまで発行されません)。
上記の内容は、ファミリ 10h プロセッサの BIOS およびカーネル開発者ガイドに記載されています:http://support.amd.com/us/Processor_TechDocs/31116.pdf