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

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

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

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

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

インテル® VTune™ Amplifier は、インテル® oneAPI ベース・ツールキット向けのバージョンからインテル® VTune™ プロファイラーに名称が変更されました。インテル® VTune™ プロファイラーは、スタンドアロン・バージョンとインテル® Parallel Studio XE またはインテル® System Studio に同梱されたバージョンが提供されます。

どのように動作するか

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

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

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

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

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

解析の設定と実行

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

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

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

    [解析の設定] ウィンドウが開きます。

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

  3. 次のオプションを構成してください。

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

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

    設定可能な値は、1 - 1000 です。

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

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

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

    表示する最上位のメトリックを選択することで、データ収集量を減らすことができます。この場合、インテル® VTune™ プロファイラーは粒度レベルを拡張し、選択したトップレベルに属するサブメトリックのみを収集します。例えば、メモリー依存のトップレベル・メトリックを選択すると、インテル® VTune™ プロファイラーは追加データを収集し、メモリー依存のサブメトリック (DRAM 依存、ストア依存など) を表示します。これにより、解析を特定のマイクロアーキテクチャー・レベルに限定することができます。

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

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

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

    このオプションは、デフォルトで無効に設定されています。

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

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

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

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

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

    [詳細] ボタン

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

  4. 解析を実行するには 開始ボタンをクリックします。

データを表示

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

関連情報