アプリケーションのハードウェア利用の問題を順位付けするため、マイクロアーキテクチャー全般解析 (以前の全般解析) を使用します。
ホットスポット解析によりコード内のホットスポットを特定したら、マイクロアーキテクチャー全般解析を使用してコードがコアのパイプラインでどの程度効率的に実行されているかを理解できます。マイクロアーキテクチャー全般解析中、インテル® VTune™ プロファイラーは一般的なクライアント・アプリケーションを解析するため、リスト中のすべてのイベントを収集します。そして、メトリックに使用される事前定義された比率を計算して、ハードウェア・レベルのパフォーマンスの問題を特定するのが容易になります。
インテル® VTune™ プロファイラーは、インテル® VTune™ Amplifier の後継バージョンであり、名称が変更されました。
マイクロアーキテクチャー全般解析の方針はマイクロアーキテクチャーによって異なります。インテル® マイクロアーキテクチャー・コード名 Ivy Bridge 以降のマイクロアーキテクチャーでは、マイクロアーキテクチャー全般解析は、トップダウン特性方法論を用いたトップダウン・マイクロアーキテクチャー解析法に基づいています。
スーパースカラー・プロセッサーは、概念的に命令をフェッチしてそれらを構成する操作にデコードする 'フロントエンド' と、要求される計算を実行する 'バックエンド' に分かれています。各サイクルで、フロントエンドはこれらの操作を最大 4 つ生成します。それらはバックエンドを通過するパイプライン・スロットに配置されます。そのため、クロックサイクルの一定の実行期間において、その期間にリタイアすることができる有用なワークを含むパイプライン・スロットの最大数を知ることは容易です。しかし、有用なワークを含むリタイアしたパイプライン・スロットの実際の数が、この最大数になることはほとんどありません。これにはいくつかの要因が関連します。フロントエンドが時間内に命令をフェッチもしくはデコードできなかったり (フロントエンド依存の実行)、バックエンドが特定の種類の操作を受け入れる準備ができていない (バックエンド依存の実行) ことにより、パイプライン・スロットを有用なワークで埋めることができないなどが考えられます。さらに、パイプライン・スロットが有用なワークを含んでいても、投機の問題によりリタイアしない可能性があります。フロントエンド依存の実行は、大きなコードのワーキングセット、不適切なコード配置、またはマイクロコード・アシストが原因であると考えられます。バックエンド依存の実行は、長いレイテンシーの操作や実行リソースのその他の競合が原因です。投機の問題のほとんどは分岐予測ミスに由来します。
各サイクルで、それぞれのコアは最大 4 つのパイプライン・スロットを有効な操作で満たすことができます。したがって、ある時間範囲に発行および埋めることができるパイプライン・スロットの最大数を特定することが可能です。この解析では、この推測を基にパイプライン・スロットを 4 つのカテゴリーに分類します。
発行されリタイアされた有用なワークを含むパイプライン・スロット (リタイア)
発行されキャンセルされた有用なワークを含むパイプライン・スロット (投機の問題)
フロントエンドの問題により、有用なワークで埋められなかったパイプライン・スロット (フロントエンド依存)
バックエンドでのバックアップにより、有用なワークで埋められなかったパイプライン・スロット (バックエンド依存)
マイクロアーキテクチャー全般解析を行うには、最初にどの上位レベルのカテゴリーが注目するホットスポットを占めているか特定します。次にそのカラムを展開して、直接影響するカテゴリーを調査します。そこで特定のカテゴリーに関連する、多くの問題を検出できる可能性があります。
マイクロアーキテクチャー全般解析に関するチューニング方法論の詳細と、この解析の複雑性については、「インテル® VTune™ プロファイラーの全般解析がどのように動作するかを理解する」を参照してください。
アーキテクチャー固有のチューニング・ガイドについては、https://www.isus.jp/products/vtune/processor-specific-performance-analysis-papers/ (英語) を参照してください。
次のようにマイクロアーキテクチャー全般解析のオプションを設定します。
要件: プロジェクトを作成して解析ターゲットを指定します。
インテル® VTune™ プロファイラー・ツールバーの (スタンドアロン GUI)/
(Visual Studio* IDE) [解析の設定] ボタンをクリックします。
[解析の設定] ウィンドウが表示されます。
[どのように] ペインで、 [実行する解析タイプを選択] ボタンをクリックして、[マイクロアーキテクチャー全般] を選択します。
次のオプションを設定します。
[CPU サンプリング間隔 (ミリ秒)] スピンボックス |
CPU 間のサンプリング間隔を指定します (ミリ秒)。 設定可能な値は、1 - 1000 です。 デフォルト値は 1 ms です。 |
[上位レベルのメトリックの粒度を拡張] 選択領域 |
デフォルトで、インテル® VTune™ プロファイラーは、上位レベルのメトリック (フロントエンド依存、投機の問題、メモリー依存、コア依存、およびリタイヤ) とすべてのサブメトリックを計算するのに必要なデータを収集します。 特定の上位レベルのメトリックを選択することで、データ収集を制限できます。この場合、インテル® VTune™ プロファイラーは粒度レベルを拡張し、選択したトップレベルに属するサブメトリックのみを収集します。例えば、メモリー依存のトップレベル・メトリックを選択すると、インテル® VTune™ プロファイラーは追加データを収集し、メモリー依存のサブメトリック (DRAM依存、ストア依存など) を表示します。これにより、解析を特定のマイクロアーキテクチャー・レベルに限定することができます。 同時に収集するデータ量を制限すると多重化が少なくなるためプロファイルの精度が向上することがあります。これは、実行時間の短いアプリケーションや、短いフェーズのアプリケーションでは特に有効です。 |
[メモリー帯域幅を解析] チェックボックス |
メモリー帯域幅を計算するのに必要なデータを収集します。 このオプションは、デフォルトで無効になっています。 |
[DRAM の最大帯域幅を評価] チェックボックス |
収集を開始する前に、達成可能な最大 DRAM 帯域幅を評価します。このデータは、タイムライン上で帯域幅メトリックをスケールし、しきい値を計算するために使用されます。 このオプションは、デフォルトで有効になります。 |
[収集モード] ドロップダウン・メニュー |
関数またはほかのホットスポット別にデータの内訳を表示するには、詳細サンプリングベース収集モード (デフォルト) を選択します。プロファイル実行全体の概要には、サマリー・カウンティングベース・モードを使用します。このモードは、収集のオーバーヘッドが低く、高速に後処理を行うことができます。 |
[詳細] ボタン |
この解析タイプのデフォルトの編集不可設定のリストを展開/折りたたみます。解析の設定を変更したり、追加の設定を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。 |
特定のマイクロアーキテクチャーのマイクロアーキテクチャー全般解析で収集されるイベントの詳細は、「インテル® プロセッサー・イベントのリファレンス」を参照してください。
下部の [コマンドライン] ボタンを使用して、この設定のコマンドラインを生成できます。
[開始] ボタンをクリックして解析を実行します。
収集されたデータを解析するには、トップダウン・マイクロアーキテクチャー解析法に基づいた高レベルのパフォーマンス概要を提供する、デフォルトのマイクロアーキテクチャー全般ビューポイントを使用します。最適化の労力を集中すべき、マイクロアーキテクチャー・パイプラインの非効率な場所を理解するには、マイクロアーキテクチャー・パイプから開始します。