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

ハードウェアの問題向けのマイクロアーキテクチャー全般解析

アプリケーションのハードウェア利用の問題を順位付けするため、マイクロアーキテクチャー全般解析 (以前の全般解析) を使用します。

ホットスポット解析によりコード内のホットスポットを特定したら、マイクロアーキテクチャー全般解析を使用してコードがコアのパイプラインでどの程度効率的に実行されているかを理解できます。マイクロアーキテクチャー全般解析中、インテル® VTune™ プロファイラーは一般的なクライアント・アプリケーションを解析するため、リスト中のすべてのイベントを収集します。そして、メトリックに使用される事前定義された比率を計算して、ハードウェア・レベルのパフォーマンスの問題を容易に特定できるようにします。

マイクロアーキテクチャー全般ビューポイント: [ボトムアップ] ウィンドウ

インテル® VTune™ プロファイラーは、インテル® VTune™ Amplifier の後継バージョンであり名称が変更されています。

どのように動作するか

マイクロアーキテクチャー全般解析の方針はマイクロアーキテクチャーによって異なります。インテル® マイクロアーキテクチャー開発コード名 Ivy Bridge 以降の現代のマイクロアーキテクチャーでは、マイクロアーキテクチャー全般解析は、トップダウン特性方法論を用いたトップダウン・マイクロアーキテクチャー解析法に基づいています。

スーパースカラー・プロセッサーは、概念的に命令をフェッチしてそれらを構成する操作にデコードする 'フロントエンド' と、要求される計算を実行する 'バックエンド' に分かれています。各サイクルで、フロントエンドはこれらの操作を最大 4 つ生成します。それらはバックエンドを通過するパイプライン・スロットに配置されます。そのため、クロックサイクルの一定の実行期間において、その期間にリタイアすることができる有用なワークを含むパイプライン・スロットの最大数を知ることは容易です。しかし、有用なワークを含むリタイアしたパイプライン・スロットの実際の数が、この最大数になることはほとんどありません。これにはいくつかの要因が関連します。フロントエンドが時間内に命令をフェッチもしくはデコードできなかったり (フロントエンド依存の実行)、バックエンドが特定の種類の操作を受け入れる準備ができていない (バックエンド依存の実行) ことにより、パイプライン・スロットを有用なワークで埋めることができないなどが考えられます。さらに、パイプライン・スロットが有用なワークを含んでいても、投機の問題によりリタイアしない可能性があります。フロントエンド依存の実行は、大きなコードのワーキングセット、不適切なコード配置、またはマイクロコード・アシストが原因であると考えられます。バックエンド依存の実行は、長いレイテンシーの操作や実行リソースのその他の競合が原因です。投機の問題のほとんどは分岐予測ミスに由来します。

各サイクルで、それぞれのコアは最大 4 つのパイプライン・スロットを有効な操作で満たすことができます。したがって、ある時間範囲に発行および埋めることができるパイプライン・スロットの最大数を特定することが可能です。この解析では、この推測を基にパイプライン・スロットを 4 つのカテゴリーに分類します。

マイクロアーキテクチャー全般解析を行うには、最初にどの上位レベルのカテゴリーが注目するホットスポットを占めているか特定します。次にそのカラムを展開して、直接影響するカテゴリーを調査します。そこで特定のカテゴリーに関連する、多くの問題を検出できる可能性があります。

また、インテル® VTune™ プロファイラーのトップダウン法でカバーされないほかのマイクロアーキテクチャーで、マイクロアーキテクチャー全般解析を行うこともできます。

解析の設定と実行

次のようにマイクロアーキテクチャー全般解析のオプションを設定します。

必要条件: プロジェクトを作成し、解析ターゲットを指定します。

  1. インテル® VTune™ プロファイラー・ツールバーの (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックします。

    [解析の設定] ウィンドウが表示されます。

  2. [どのように] ペインで、 [実行する解析タイプを選択] ボタンをクリックして、[マイクロアーキテクチャー全般] を選択します。

  3. 次のオプションを設定します。

    [CPU サンプリング間隔 (ミリ秒)] スピンボックス

    CPU サンプル間の間隔を指定します (ミリ秒)。

    設定可能な値は 1-1000 の間の整数値です。

    デフォルト値は 1 ミリ秒です。

    [上位レベルのメトリックの粒度を拡張] 選択領域

    デフォルトで、インテル® VTune™ プロファイラーは、上位レベルのメトリック (フロントエンド依存投機の問題メモリー依存コア依存、およびリタイヤ) とすべてのサブメトリックを計算するのに必要なデータを収集します。

    特定の上位レベルのメトリックを選択することで、データ収集を制限できます。この場合、インテル® VTune™ プロファイラーは選択した上位レベルのメトリックについてのみ粒度レベルを拡張して追加のサブメトリックを収集します。例えば、メモリー依存上位レベルメトリックを選択した場合、インテル® VTune™ プロファイラーは追加データを収集して、解析を特定のマイクロアーキテクチャー・レベルに絞り込むのに役立つメモリー依存サブメトリック (DRAM 依存、ストア依存、その他) を提供します。

    同時に収集するデータ量を制限すると、多重化が少なくなるためプロファイルの精度が向上することがあります。この制限は、実行時間が短いアプリケーションや短いフェーズを含むアプリケーションで特に役立ちます。

    [メモリー帯域幅を解析] チェックボックス

    メモリー帯域幅を計算するのに必要なデータを収集します。

    このオプションは、デフォルトで無効になっています。

    [DRAM の最大帯域幅を評価] チェックボックス

    収集を開始する前に、達成可能な最大 DRAM 帯域幅を評価します。このデータは、タイムライン上で帯域幅メトリックをスケールし、しきい値を計算するために使用されます。

    このオプションは、デフォルトで有効になります。

    [収集モード] ドロップダウン・メニュー

    関数またはほかのホットスポット別にデータの内訳を表示するには、詳細サンプリングベース収集モード (デフォルト) を選択します。プロファイル実行全体の概要には、サマリー・カウンティングベース・モードを使用します。このモードは、収集のオーバーヘッドが低く、高速に後処理を行うことができます。

    [詳細] ボタン

    この解析タイプのデフォルトの編集不可設定のリストを展開/折りたたみます。解析の設定を変更したり、追加の設定を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。

  4. [開始] ボタンをクリックして解析を実行します。

データを表示

収集されたデータを解析するには、トップダウン・マイクロアーキテクチャー解析法に基づいた高レベルのパフォーマンス概要を提供する、デフォルトのマイクロアーキテクチャー全般ビューポイントを使用します。最適化の労力を集中すべき、マイクロアーキテクチャー・パイプラインの非効率な場所を理解するには、マイクロアーキテクチャー・パイプから開始します。

関連情報