5

Core 2 Duoプロセッサのプリフェッチ命令を使用した経験のある人はいますか?

一連のP4マシンで(標準?)プリフェッチセット(prefetchntaprefetcht1など)を使用して成功しましたが、Core 2 Duoでコードを実行すると、prefetcht(i)命令は何も実行せず、prefetchnta命令は少ないようです。効果的。

パフォーマンスを評価するための私の基準は、ベクトルサイズがキャッシュ外の動作に十分な大きさである場合の、BLAS 1ベクトル-ベクトル(axpy)操作のタイミング結果です。

Intelは新しいプリフェッチ命令を導入しましたか?

4

3 に答える 3

4

Intel 64 および IA-32 アーキテクチャに関するIntel リファレンス ドキュメントの 163 ページと 77 ページを参照してください。

Pentium 4 および Intel NetBurst マイクロアーキテクチャに基づく Intel Xeon プロセッサは、ソフトウェア プリフェッチに加えてハードウェア プリフェッチを導入しました。ハードウェア プリフェッチャーは透過的に動作し、プログラマの介入を必要とせずにメモリからデータと命令ストリームをフェッチします。その後のマイクロアーキテクチャでは、ハードウェアのプリフェッチ メカニズムが改善され、機能が追加されています。ハードウェア プリフェッチ メカニズムの以前の実装では、メモリから L2 へのデータと命令のプリフェッチに重点が置かれていました。最近の実装では、L2 から L1 にデータをプリフェッチする追加機能が提供されています。Intel NetBurst マイクロアーキテクチャでは、ハードウェア プリフェッチャーは 8 つの独立したストリームを追跡できます。

Pentium M プロセッサは、データ用のハードウェア プリフェッチャーも提供します。順方向に 12 の個別のストリーム、逆方向に 4 つのストリームを追跡できます。プロセッサの PREFETCHNTA 命令も、第 2 レベルのキャッシュを汚染することなく、第 1 レベルのデータ キャッシュに 64 バイトをフェッチします。

Intel Core Solo および Intel Core Duo プロセッサは、Pentium M プロセッサよりも高度なデータ用ハードウェア プリフェッチャーを提供します。主な違いを表 2-10 にまとめます。

于 2009-11-16T13:34:53.230 に答える
1

私はこれをタイトなループで一度試しましたが、4つのdoubleをロードし、ループごとに約15の浮動小数点演算を実行するように最適化しようとしていました。コア2デュオにプラスの効果をもたらすには、コードの少なくとも16ループ先にプリフェッチを設定する必要があり、古いプロセッサーの場合は4ループ先に設定するだけで十分であることがわかりました。

于 2012-02-10T11:12:16.477 に答える
1

コードの問題かどうかはわかりませんが、キャッシュ ライン サイズ (プリフェッチ命令で使用するストライド サイズを決定する) は、プロセッサによって異なる可能性があることを考慮してください。したがって、異なるキャッシュ ライン サイズを前提として最適化されたコードを、この前提が満たされない CPU で使用すると、パフォーマンスが低下することは間違いありません。

この質問はここで、プリフェッチ キャッシュ ラインのサイズを決定する方法を尋ねました。

于 2009-11-18T19:46:09.010 に答える