インテル® VTune™ プロファイラー・ユーザーガイド

分岐予測ミス

メトリックの説明

分岐予測がミスしても、誤って予測されたパスの命令はパイプラインを移動し続けます。これらの命令で実行されるワークはすべてリソースを浪費し、本来実行されるべきものでないため無駄になります。このメトリックは、分岐予測ミスによって CPU が無駄にしたスロットの割合を表します。これらのスロットは、誤って推測されたプログラムの実行パスからフェッチされた uOps によって浪費されるか、マシンのアウトオブオーダー機能が投機的なパスから状態をリカバリーする場合にストールします。

考えられる問題

かなりの分岐が誤って予測され、マシンが投機的なパスから状態を回復する必要があるため、非常に多くの無駄なワークやバックエンドのストールを引き起こしています。

ヒント

1. 過度な分岐予測ミスを特定して、アルゴリズムの分岐を予測しやすくするか、分岐の数を減らすことを検討してください。if 文にさらに多くのワークを追加し、早期実行のためコードフロー中でそれらを上位に移動できます。'switch' と 'case' 文を使用する場合、多く実行される case 文を最初に配置します。頻繁に実行される呼び出しに仮想関数ポインターを使用しないでください。

2. コンパイラーのプロファイルに基づく最適化を使用します。

詳細は、『インテル® 64 および IA-32 プロセッサー・アーキテクチャー最適化リファレンス・マニュアル』の「サイクルのドリルダウンと分岐予測ミス」を参照してください。

関連情報