この資料の対象：ソフトウェア開発者
アプリケーションのパフォーマンス最適化に注目する開発者
 パフォーマンスのエキスパートである必要はなりません しかし、アプリケーション自体のことは熟知していることが前提です

第 6 世代インテル® Core™ プロセッサー・プラットフォームを対象とする
インテル® VTune™ Amplifier XE パフォーマンス・アナライザー
を使用する
 ここで紹介するパフォーマンスに関する情報は、他のツールにも適用できますが、
ここでは VTune Amplifier XE に注目します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

このスライドの使い方
一度スライドを読み通して、データ収集時に再度見てください
パフォーマンス解析は、何度かの繰り返しで達成されることを忘れないでください
ソフトウェアの最適化は、以下を行ってから始めてください： 任意のコンパイラー最適化オプションを適用（/O2、/QxAVX2 など）
 適切なワークロードを選択 基準となるパフォーマンスの測定© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

第 6 世代インテル® Core™ プロセッサー・ファミリー向けのソフトウェア最適化にインテル® VTune™ Amplifier XE を使用する
ソフトウェア & サービスグループ
Ver.1.0© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

内容
 インテル® VTune™ Amplifier XE
 ソフトウェア最適化サイクル
 ホットスポットを特定
 効率を判定する方法
 主なボトルネックを特定
 一般的な効率を損ねる原因:
 その他のチューニングの推奨事項© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

第 6 世代インテル® Core™ プロセッサー
統合グラフィックス

コア

LLC

コア

LLC

コア

LLC

256KB
L2

コア

LLC

コア

LLC

コア

コア

LLC

32KB
L1D
32KB
L1I

SNB

共有

システム・エージェント
メモリーと I/O

GPU

DRAM

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE
インテル® VTune™ Amplifier XE の機能：
 複数の収集タイプ
 ホットスポット（統計呼び出しツリー） スレッドの並行性

 ロックと待機の分析 イベント・ベース・サンプリング 全ての解析タイプをタイムライン表示
へ統合 ソースとアセンブリー表示
 C/C++、Fortran、Java、アセンブリー、.NET との互換性
 Visual Studio* への統合、コマンドラインでの利用、もしくは Windows® と Linux*
向けスタンドアロン・インターフェイスを利用© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE の事前定義プロファイル"General Exploration（一般的な調査）" プロ
ファイルは、インテル® マイクロアーキテクチャー・コード名 Skylake ファミリーにおける潜在的な問題をトップレベルで解析するために使用します。このガイドの対象となります

必要なイベントは全て事前定義されているため、使用に際し調査の必要ありません。
[Start (開始)] をクリックして、簡単に解析を開始します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

拡張 General Exploration 表示
General Exploration 表示が選択され（デフォルト）、General Exploration プロファイルを実行すると、拡張表示が有効になります

収集されたすべてのデータは、計算済みの測定基準によって階層形式（次のスライドを参照）で表示されます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

拡張 General Exploration 表示
階層データの表示は、各コアのパイプライン
で実行スロットがどのように利用されているか示します

パイプラインの利用率のカテゴリーに関連する内訳を見るためカラムを拡張します：リタイアメント、投機の問題、バックエンドもし
くはフロントエンドのパイプライン・スロット© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

拡張 General Exploration 表示

パイプライン利用率の各カテゴリーに表示される事前計算された測定基準は、利用者の解析時間を軽減します

ホットスポットがピンク色のセルで強調されている場合、その値は VTune Amplifier XE が持つしきい値を超えており、調査の必要があることを意味します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

パフォーマンス計測の複雑性
第 6 世代インテル® Core™ プロセッサー・ファミリーには、パフォーマン
ス計測に大きな影響を与える 2 つの機能があります: インテル® ハイパースレッディング・テクノロジー
 インテル® ターボ・ブースト・テクノロジー 2.0
これらの機能が有効にされている場合、パフォーマンス・データを計測して解釈するのが難しくなります: 大部分のイベントはスレッドごとにカウントされますが、いくつかのイ
ベントはコアごとにカウントされます。
 特定のイベントについては、インテル® VTune™ Amplifier XE のヘルプをご覧ください。
一部の専門家は、これらの機能を無効にしてパフォーマンスを解析し、最適化が終了した後に再度有効にする手法を取ります© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ホットスポットの特定
ホットスポットとは：アプリケーションが多くの時間を費やしている
コード中の場所

なぜ重要なのか：そこに最適化の労力を費やすべきです！
 アプリケーションの実行時間の 2% にしか満たない関数を改善する必要があるか？

どのように検出するか：インテル® VTune™ Amplifier XE の、"Basic Hotspots" か "Advanced Hotspots" 解析タイプを利用 通常ホットスポットは、CPU_UNHALTED.THREAD イベント（別名"clockticks"）で定義されます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 1: リタイアしたパイプライン・スロットの比率（％）
なぜ重要なのか：アプリケーションがプロセッサーを使用する効率を理解するのに役立ちます。

どのように検出するか：General Exploration プロファイルの測定基準：

Retiring（リタイアした比率）
何を行うか：

 特定のホットスポットの場合：
 75% 以上のパイプライン・
スロットがリタイアした場合（.75 以上）、3 番目の効率法に進み、ベクトル化によってパフォーマンスを向上できるか確認するには、
コードスタディー 1 を参照
 それ以外は、次のスライドに進みます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 1: リタイアしたパイプライン・スロットの比率（％）
何を行うか：パイプライン・スロットのリタイア比率が 70% 以下のホットス
ポットは、効率を判断する際にアプリケーションのタイプを考慮してください。ホットスポットが期待される範囲以下である場合、それは非効率であると言えます各カテゴリーのパイプライン・スロットの期待される範囲（うまく最適化されたホットスポット向け）：

カテゴリー

リタイア

クライアントおよびデスクトップ向
けアプリケーション
20-50%

サーバー、データベー
スおよび分散型アプリ
ケーション

ハイパフォーマンス・
コンピューティング（
HPC）アプリケーション

10-30%

30-70%

詳しい情報は以下をご覧ください：http://software.intel.com/en-us/articles/how-to-tuneapplications-using-a-top-down-characterization-of-microarchitectural-issues© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 2: 命令あたりのサイクル数（CPI）の変化
なぜ重要なのか：2 つのデータセットを比較する際に役立つ、もう一つの効率の尺度 アプリケーションのワークロードの 1 部を実行する命令の平均クロックを表示します。

どのように検出するか：General Exploration プロファイルの測定基
準：CPI Rate
何を行うか：
 CPI は、アプリケーションとプラットフォームに依存し大きく変化します コードサイズが変わらないなら、最適化では
CPI を減らすことに注目すべきです© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 3: コードを調査
なぜ重要なのか：効率法の 1 と 2 では、実行される命令の時間を測定しました。非効率である他の原因は、非常に多くの命令を実行することです。
どのように検出するか：インテル® VTune™ Amplifier XE のソースと逆アセンブリー表示を利用します
何を行うか：

 最新の命令を利用しないとコードサイズが大きくなります 潜在的な問題については、
次のスライドを見てください© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 3、コードスタディー 1：旧式の浮動小数点もしくは整数コー
ドをインテル® アドバンスト・ベクトル拡張 （AVX と AVX2） に変換
します
なぜ重要なのか：SIMD 命令を使用することで、浮動小数点演算のパフォー

マンスを大幅に向上できます。既存の FP もしくは整数 SSE コードを AVX 命令に変換すると、広いベクトルデータ （256 ビットまで） のサポート、NDS 操作を可能にする 3 もしくは 4 オペランドの構文、そして電力節約などいくつかの利点がありますどのように検出するか：既存の SSE 命令 （xmm レジスターを検索）、MMX

命令 （mm レジスターを検索）、もしくは x87 浮動小数点命令のアセンブリー・
コードを調査します。パック操作を行っていない （faddp、fmul、や addss などのスカラー SSE 命令） コードを特定します

何を行うか：
 インテル® コンパイラーの /QxCORE-AVX2 (Windows®) や -xCORE-AVX2(Linux*) オプションを使用
 GCC: -march=core-avx2

 AVX への最適化に関しては、 インテル® 64 および IA-32 アーキテクチャー最適化リファレンス・マニュアル の、第 11 章をご覧ください© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 3、コードスタディー 2：Fused Multiply Add (FMA) 命令の利点を活用する
なぜ重要なのか： インテル・マイクロプロセッサー (コード名: Skylake) の

FMA 命令は、FP 乗算命令とレイテンシーは同じです。新たな 2 つの FMA ユ
ニットは、2倍のピーク FLOPs/サイクルを可能にします

どのように検出するか： r=(x*y)+z、r=(x*y)-z、r=-(x*y)+z、もしくは r=-(x*y)z 形式の操作を行うソースコードを探します。該当するアセンブリーコードを見て、FMA 命令が使用されているか調べます。FMA 命令は、VFM（VFMADD132PD や VFMSUBADD132PD のように） もしくは VFNM
(VFNMADD132PD のように） という名前で始まります

何を行うか： FMA を生成するため、コンパイラーのオプションを使用します（精度のゆるい浮動小数点モデルを利用した方がいいでしょう）
 インテル® コンパイラー：-fma もしくは /Qfma と CORE-AVX2 以上の引数を持
つ -x か /Qx 、または -march (Linux*) か /arch (Windows®) オプション

 GCC: -xfma もしくは -march=core-avx2© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

主なボトルネックを特定
コードが非効率であるかどうかを調べるため、方法の 1 もしくは 2 を適用している場合、最初に主要なボトルネックを見つけます。
“General Exploration” で実装されるトップダウンの階層は、アプリ
ケーションの利用率を CPU コアの 4 つのカテゴリーに分類します：
 フロントエンド依存 バックエンド依存 投機の問題 リタイア

主要なボトルネックは、パイプラインの断片化が高く、最初に調査しなければいけません© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

問題の分類
パイプライン・スロットは、抽象的なコンセプトであり、1 つのマイクロオペレーションを操作するために必要なハードウェアのリソースを表します
このプロセッサーでは、各コアごとに各サイクルで ４ つのパイプライン・スロットがあります
アプリケーションやホットスポットで利用可能な各パイプライン・スロットで何が起こっているかに応じて、パフォーマンスは分類されます
μop は割り当てら
れたか?

Yes

No
バックエンドμop はリタイ

はストールし

アしたか?

Yes

No

リタイア

投機の問題

Yes

ているか?

No

バックエン

フロントエンド依存依存© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ボトルネックの調査
どのカテゴリーが主要なボトルネックであるかを判断し、次にそのカテゴリーを以下の表と比較します。
 コードのホットスポットの比率（%）が範囲外であれば、そのカテゴリーから問題を調査します。
各カテゴリーのパイプライン・スロットの期待される範囲（うまく最適化されたホットスポット向け）：
カテゴリー

要点:

リタイア

クライアントおよび
デスクトップ向けア
プリケーション
20-50%

サーバー、データ
ベースおよび分散型アプリケーション
10-30%

ハイパフォーマンス・コ
ンピューティング（HPC）アプリケーション
30-70%

バックエンド依存

20-40%

20-60%

20-40%

フロントエンド依存

5-10%10-25%

5-10%

投機の問題

5-10%

5-10%

1-5%

高い値が良い低い値が良い© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

非効率であるアーキテクチャー上の理由を見つけます： 問題のスライド問題はカテゴリー別にリストされ、カテゴリーごとに説明されます
潜在的なそれぞれの問題ごとに、いくつかの重要な情報が示されます
なぜ重要なのか：なぜ潜在的な問題について考えなければいけないのか

どのように検出するか： インテル® VTune™ Amplifire XE のどのプロファイルと測定基準を使用するか。表示項目がハイライトされている場合、その項目を調査する必要があります
何を行うか：問題を最適化するのに役立ちます。調査を続行、もしくは最適化すべき提案を提示します:イベント名と測定基準の式は別途示されます。インテル® VTune Amplifier XE のロジックに組み込まれているため、このスライドには含まれません。GUI の測定基準の列にカーソルを移動すると表示されます。開発者は、事前定義されたプロファイルと測定基準のみを使用して、問題があるかどうかを指摘されるだけです© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

フロントエンド依存のカテゴリーを
チューニング
パイプラインのフロントエンド•••

命令をフェッチ
命令をマイクロオペレーションにデコード
サイクルごとに最大 4 マイクロオペレーションをバックエンドへ供給© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

フロントエンド依存の概要
フロントエンド
命令の
フェッチと
デコード、
分岐予測

バックエンド
Ø
Ø
Ø

実行コア
命令の
リオーダーと実行µ-op

リタイアメント

結果を
メモリーへ
書き込み

フロントエンドが、4つのパイプライン・スロット全てにマイクロオペレーションを供給できない時に発生 ;一般に、コードのフェッチや命令デコードの遅延が原因© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE におけるフロントエンド階層のブレークダウン フロントエンド依存のカラムを展開して、マイクロオペレーションが供給されなかった "Front-End
Latency" と 4 マイクロオペレーション以下が供給された "Front-End
Bandwidth" に分類されるフロントエンド依存の比率を確認できます

フロントエンド依存が主要なボトルネックである場
合、フロントエンド・レイテ
ンシーに注目します。このカテゴリー下のハイライト
された問題を解決します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

フロントエンド依存

フロントエンドのレイテンシー
なぜ重要なのか： フロントエンド・レイテンシーは、バックエンドで実行するマ
イクロオペレーションが不足する原因となります（命令スタベーション）

どのように検出するか：”General Exploration” プロファイル、”フロントエン
ド・レイテンシー” のサブカテゴリ―、測定基準:

ITLB Overhead、ICache Misses、Length-Changing Prefixes

何を行うか：ホットスポットでこれらの測定基準がハイライトされている場合、より良いコード配置と生成テクニックを試みます：

 コンパイラーのプロファイルに基づく最適化（PGO)を試してください。
 リンカーの順序付けテクニックを使用します（Microsoft リンカーでは/ORDER、GCC ではリンカースクリプト）

 コードサイズを減らすには、/O1 や /Os オプションを使用します 動的に生成されたコードは、ホットなコードを同じ場所に配置し、間接呼び出しを回避するようにしましょう© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存のカテゴリーをチューニング
パイプラインのバックエンド
•
•
•
•
•

フロントエンドからの μ オペレーションを受け取る
実行ユニット内の実行をスケジュールするため、必要に応じて命令をリオーダー（入れ替え）する
メモリーから必要なオペランドを取り込む
操作を実行
結果をメモリーへ書き込み© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

フロントエンド依存の概要
フロントエンド
命令の
フェッチと
デコード、
分岐予測

バックエンド
µ-op
µ-op
µ-op

実行コア
命令の
リオーダーと実行µ-op

リタイアメント

結果を
メモリーへ
書き込み

バックエンドが 4 つのパイプライン・スロット全てにマイクロオペレーションを受け入れることができない時に発生;
通常、内部構造がすべてマイクロオペレーションで埋まっていてデータ待ちの状態© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE におけるバックエンド階層のブレークダウン
バックエンド依存のカラムを展開して、多くのメモリー操
作が実行中であるためバックエンドが新しいマイクロオ
ペレーションを受け入れることができない "Memory
Bound" と実行ポートの飽和問題 "Core Bound" に分類されるバックエンドの全ての比率を確認します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE におけるバックエンド階層のブレークダウン"Memory Bound" のカテゴリーを展開して、メモリー
階層の各レベルに関連する問題を確認します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

キャッシュミス
なぜ重要なのか： キャッシュミスは、アプリケーションの CPI を高めます。レベル 2 もしくは 3 ミスによる長いレイテンシーのデータに注目します

どのように検出するか： “General Exploration” プロファイル、”メモリー依存” のサブカテゴリ―、測定基準:

L3 Bound>L3 Latency、DRAM Bound>Memory Latency>LLC Miss

何を行うか： ホットスポットでどちらの測定基準もハイライトされている場合、ミスを減らすことを考慮します：








データストレージを減らすためアルゴリズムを変更
キャッシュに収まるようにブロック化してデータをアクセス共有の問題を調査（アクセス競合を参照）
ベクトル化のためデータをアライメント（そしてコンパイラーにそれを知らせます）
キャッシュライン入れ換え解析の概要に関しては、 インテル® 64 および IA-32 アー
キテクチャー最適化リファレンス・マニュアル の B.3.4.2 節をご覧ください。
ストリーミング・ストアを利用
ソフトウェア・プリフェッチ命令を利用© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

Contested Accesses (競合するアクセス)
なぜ重要なのか： コア間にまたがって（L2 レベルで）共有されるデータの変更
は、データアクセスのレイテンシーを増加させます

どのように検出するか： “General Exploration” プロファイル、”メモリー依存”のサブカテゴリ―、測定基準:
Contested Accesses (競合するアクセス)

何を行うか： ホットスポットでこの測定基準がハイライトされた場合、ソース表

示から HITM を生成しているソースコードの行を見つけます: HITM を生成した命令の次の命令にタグ付けされる
MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM_PS イベントを探します。
 コードを詳しく調べて、真の共有か偽りの共有化を判断して、適切な対策を施
します：



真の共有に対しては、共有の要求を減らします
偽りの共有には、キャッシュライン境界にパディングを挿入します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

Data Sharing (データ共有)
なぜ重要なのか： （L2 レベルで）コア間のクリーンなデータ共有（読み込み
共有）は、一貫性を維持するため少なくとも最初の参照でペナルティーが発生します

どのように検出するか： “General Exploration” プロファイル、”メモリー依存” のサブカテゴリ―、測定基準:
Data Sharing (データ共有)

何を行うか： ホットスポットでこの測定基準がハイライトされた場合、ソース
表示から HIT を生成しているソースコードの行を見つけます: HITM を生成した命令の次の命令にタグ付けされる
MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT_PS イベントを探します。
 コードを詳しく調べて、真の共有か偽りの共有化を判断して、適切な対策を
施します：



真の共有に対しては、共有の要求を減らします
偽りの共有には、キャッシュライン境界にパディングを挿入します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

その他のデータアクセスの問題：ストア・フォ
ワードが行われないことによるロードのブロック
なぜ重要なのか： ストアの結果がパイプラインを介してフォワードできない場
合、依存するロードがブロックされることがあります

どのように検出するか： “General Exploration” プロファイル、”メモリー依存” のサブカテゴリ―、測定基準: Loads Blocked by Store Forwarding (ストアフォワードでブロックされたロード)

何を行うか： ホットスポットで測定基準がハイライトされている場合、以下を調査します：

ソースを参照し、LD_BLOCKS_STORE_FORWARD イベントを探します。通常このイベントは、ブロックされたロードの次の命令にタグ付けされます。ロード命令の位置を確認し、フォワードできないストア命令を探します。通常 10 -15 命令以内にあります。もっとも一般的なケースは、同じアドレスに対するロードよりも小さな断片をストアする場合です。後続のロードと同じもしくは大きなサイズのデータをストアすることで問題を解決します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

その他のデータアクセスの問題：4K エイリアス
なぜ重要なのか： エイリアスの競合により、ロードを再発行しなければいけません

どのように検出するか： “General Exploration” プロファイル、”メモリー依存” のサブカテゴリ―、測定基準: 4K エイリアス

何を行うか： ホットスポットでこの測定基準がハイライトされている場合、ソースコード・レベルで測定基準を識別して調査します：

ロードのアライメントを変更することで、この問題を解決します。入力と出力
バッファー間のオフセットを変更することで（可能であれば）、データを 32 バ
イトにアライメントするか、32 バイトにアライメントされていないメモリーへのアクセスに 16 バイトのメモリーアクセスを使用します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

その他のデータアクセスの問題：DTLB ミス
なぜ重要なのか： 最初のレベルの DTLB ロードミス（STLB にヒット）は、レイ
テンシーのペナルティーがかかります。第 2 レベルのミスではページウォークが必要となり、アプリケーションのパフォーマンスに影響します

どのように検出するか： “General Exploration” プロファイル、”メモリー依存” のサブカテゴリ―、測定基準: DTLB Overhead

何を行うか： ホットスポットでこの測定基準がハイライトされている場合、ソースコード・レベルで測定基準を識別して調査します:

この問題を解決するには、より優れたメモリー割り当て機能を利用したり、プロファイル・ガイド最適化により、ターゲットデータの局所性を TLB のサイズに合わせるか、仮想化システムでは拡張ページテーブル（EPT) を使用するか、ラージページを使用するか、（データベースやサーバー・アプリケーションのみで）、データの局所性を高めます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE におけるバックエンド階層のブレークダウン
コア依存カテゴリーを展開
して、実行コアに関連する問題を確認します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

バックエンド依存

Divider (除算器)
なぜ重要なのか： 除算命令は、他の算術命令よりレイテンシーが長く、限定されたポートでしか実行できません

どのように検出するか： “General Exploration” プロファイル、”コア依存” のサブカテゴリ―、測定基準: Divider
何を行うか： ホットスポットでこの測定基準がハイライトされた場合、ソース表
示から除算を生成しているソースコードの行を見つけます:

ARITH.DIVIDER_ACTIVE イベントを探します
最適化を有効にして、除算コードがコンパイルされていることを確認します
ベクトル化された除算命令を使用します
可能であれば、逆数除算を使用します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

投機の問題のカテゴリーをチューニング
投機が行われる場合：••

マイクロオペレーションは、それがリタイアするかどうかにかかわらず実行が許可されます
これは、アウト・オブ・オーダー・パイプラインで高い命令レベルの並列性をもたらします© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

投機の問題の概要
フロントエンド
命令の
フェッチと
デコード、
分岐予測

x

µ-op
実行コア
µ-op
命令の
リオーダーと
µ-op
実行

x

µ-op

バックエンドリタイアメント

結果を
メモリーへ
書き込み

マイクロオペレーションガバックエンドから削除され、リタイアしない場合に発生© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

投機の問題

分岐予測ミス
なぜ重要なのか： 誤って予測された分岐は、無駄な処理や命令スタベーション（新しい命令がフェッチされるまで待機するため）により、パイプラインの効率を低下させます

どのように検出するか： “General Exploration” プロファイル、測定基準：
Branch Mispredict

何を行うか： ホットスポットでどちらの測定基準もハイライトされている場合、予測ミスを減らすことを考慮します：

コンパイラー・オプションやプロファイル・ガイド最適化によってコード生成を改選します

分岐文において、もっとも分岐するターゲットが主な命令フローとなるように手動で調整します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

投機の問題マシンクリア
なぜ重要なのか： マシンクリアは、パイプラインをフラッシュし、ストアバッ
ファーを空にするため、大幅なレイテンシーのペナルティーとなります

どのように検出するか： “General Exploration” プロファイル、測定基準：
Machine Clears

何を行うか： ホットスポットでこの測定基準がハイライトされている場合、幾つかのイベントを使用して原因を特定します：


MACHINE_CLEARS.MEMORY_ORDERING イベントが多い場合、ソースコード・レベルで調査します。これは、4K エリアス競合やロック競合によって引き起こされます

MACHINE_CLEARS.SMC イベントが多い場合、自己修正コードによる原因です。
これは避けるべきです© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

リタイア・カテゴリーのチューニング
リタイアメントは：•••マイクロオペレーション実行の完了を示します
マイクロオペレーションが命令を構成する最後のオペレーションであれば、命令実行の完了を意味します命令の実行結果は、アーキテクチャー状態（キャッシュ、メモリーなど）にコミットされます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

リタイアの概要
バックエンド

フロントエンド

命令の
フェッチと
デコード、
分岐予測

実行コア
命令の
リオーダーと実行µ-op
リタイアメント
µ-op
結果を
µ-op
メモリーへ
書き込み
µ-op

パイプライン・スロットがマイクロオペレーションで満たされた時に発生します。
これは望ましいカテゴリーです。しかし、いくつかの問題もあります© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE におけるリ"General
タイア階層のブレークダウン 最良のケースである
Retirement" とマイクロコード・

シーケンサーから生成されたマイクロオペレーションのリタイアである"Microcode Sequencer" で区分されるリタイアスロットの比率を見るには、リタイアを展開表示します

パフォーマンスの問題を解決することで、ほとん
どの場合 「General Retirement」 に分類される
μops は増加します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

リタイア

FP 算術演算なぜ重要なのか： 非効率な浮動小数点演算は高いコストにつながります
どのように検出するか： “General Exploration” プロファイル、測定基準：
FP Arithmetic、FP x87、FP Scalar、FP Vector
何を行うか： FP x87 または FP スカラー測定基準が顕著な場合、ベクトル化の効率を高めてください:

インテル® コンパイラーの /QxCORE-AVX2 (Windows®) や -xCORE-AVX2(Linux*) オプションを使用



GCC: -march=core-avx2



AVX への最適化に関しては、 インテル® 64 および IA-32 アーキテクチャー最適化リファレンス・マニュアル の、第 11 章をご覧ください。

© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

リタイア

マイクロコード・アシスト
なぜ重要なのか： マイクロコード・シーケンサーからのアシストには、長いレ
イテンシーのペナルティーが伴います

どのように検出するか： “General Exploration” プロファイル、測定基準：
Microcode Sequencer

何を行うか： ホットスポットでこの測定基準がハイライトされた場合、他のア
シストイベントを使用して原因を特定するため再度サンプリングを行います:

もし、FP_ASSISTS.ANY / INST_RETIRED.ANY がかなり多いようであれば、浮動小数点演算のデノーマルを調べてください。SSE/AVX 命令を使用している場合、FTZ と（もしくは） DAZ を有効にするか、演算をスケールアップもしくはダウンすることで解決できます((OTHER_ASSISTS.AVX_TO_SSE_NP*75) / CPU_CLK_UNHALTED.THREAD)
もしくは、((OTHER_ASSISTS.SSE_TO_AVX_NP*75) / CPU_CLK_UNHALTED.THREAD)
が、.1 より大きければ SSE と AVX コード間の移行を減らします。詳細はhttp://software.intel.com/en-us/articles/avoiding-avx-sse-transitionpenalties を参照してください© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
もし十分でなければ：


–
–
–

主なボトルネックを特定非効率であるアーキテクチャー上の理由を見つけます
問題を最適化します

繰り返します!
目立ったホットスポットが無くなるまで繰り返すと、リタイアのパイプライン・スロットは期待どうりとなるでしょう© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック: メモリーアクセス
なぜ重要なのか： 帯域幅のボトルネックは、キャッシュミスが発生した時にレイテンシーを増加させます

どのように検出するか： “メモリーアクセス” のプロファイル
何を行うか：


プラットフォームのソケットごとにメモリーの理論的な最大帯域幅を GB/秒で計算します: (<MT/秒> * 8 バイト/クロック * <チャンネル数>) / 1000



アプリケーションを実行してで帯域幅を計測します。ソケットごとの総帯域幅が75% 以上である場合、アプリケーションには（高い）ロード・レイテンシーがある可能性があります

適切であれば、システムチューニングの調整を行います（メモリー DIMM のアップグレードやバランス調整、ハードウェア・プリフェッチャーの無効化）

 可能であれば帯域幅の利用を軽減します：非効率な SW プリフェッチの削除、デー
タ領域や共有を減らすアルゴリズムの変更、データ更新の軽減、ソケットに分散する
メモリーアクセス・バランスの調整などが考えられます© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック: メモリー帯域幅

時間軸でソケットごとのメモリー読み込み、書き込み帯域幅と総帯域を観察します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック: TSX Exploration (TSX の調査)

TSX 部分で費やされているサイクル数
TSX Exploration 解析タイプを選択します

アボートされている TSX 部分で費やされているサイクル数© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック: TSX Exploration (TSX の調査)

アボートタイプをブレークダウンして、コードの変更がインテル® TSXのパフォーマンスを改善できるかどうかを判断します© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック:
Metric Reliability (測定基準の信頼性)

グレー表示された測定基準は、グリッド内の各値の信頼性が高くないことを示しています。
© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ありがとうございます！
より詳しい情報について：インテル® VTune™ Amplifier XE 向けビデオ、フォーラムおよびリソース
http://www.isus.jp/intel-vtune-amplifier-xe/
インテル® 64 アーキテクチャーおよび
IA-32 アーキテクチャー・ソフトウェア開発マニュアル:
http://www.intel.com/products/processor/manuals/index.htm
他のマイクロ・アーキテクチャー向けのインテル® VTune™ Amplifier XE のチューニング・ガイド：
http://www.isus.jp/products/vtune/processor-specific-performanceanalysis-papers/
統合グラフィック・コントローラーの最適化：
www.intel.co.jp/jp/software/products© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

法務的な免責事項
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商品適格性、あらゆる特許権、著作権、その他知的財産権の非侵害性への保証を含む) に関してもいかなる責任も負いません。

インテルによる書面での合意がない限り、インテル製品は、その欠陥や故障によって人身事故が発生するようなアプリケーションでの使用を想定した設計は行われていません。
インテル製品は、予告なく仕様や説明が変更されることがあります。機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。この情報は予告なく変更されることがあります。この情報だけに基づいて設計を最終的なものとしないでください。
本書で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
最新の仕様をご希望の場合や製品をご注文の場合は、お近くのインテルの営業所または販売代理店にお問い合わせください。
本資料で紹介されている資料番号付きのドキュメントや、インテルのその他の資料を入手するには、1-800-548-4725 (アメリカ合衆国) までご連絡いただく
か、インテルの Web サイトを参照してください。
1 インテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) には、インテル® HT テクノロジー対応のインテル® プロセッサー、チップ
セット、BIOS、およびオペレーティング・システム (OS) を搭載したコンピューター・システムが必要です。パフォーマンスは、ご使用のハードウェアおよびソフをご覧くださトウェアによって異なる場合があります。プロセッサーによってサポートされる HT テクノロジーの詳細を含む情報は、こちら

い。

インテル® バーチャリゼーション・テクノロジーには、インテル® プロセッサー、BIOS、仮想マシンモニター (VMM) が有効なコンピューター・システムが必要です。機能性、性能もしくはその他のバーチャライゼーション・テクノロジーの特長は、使用するハードウェアやソフトウェアの構成によって異なり、BIOS の更新が必要になる可能性があります。ご利用になる OS によっては、ソフトウェア・アプリケーションとの互換性がない場合があります。詳細については、アプリ
ケーションの開発元にお問い合わせください。
インテル・アーキテクチャー上の 64 ビット・コンピューティングには、インテル® 64 アーキテクチャー向けのプロセッサー、チップセット、BIOS、オペレーティ
ング・システム、デバイスドライバー、アプリケーションとコンピューター・システムが必要です。パフォーマンスは、使用するハードウェアおよびソフトウェアによって異なる場合があります。詳細については、システムベンダーにお問い合わせください。
インテル® ターボ・ブースト・テクノロジーを利用するには、同テクノロジーに対応したプロセッサーを搭載したシステムが必要です。インテル® ターボ・ブー
スト・テクノロジーのパフォーマンスは、ハードウェア、ソフトウェア、およびシステム全体の構成によって異なります。利用するシステムがインテル® ターボ・
ブースト・テクノロジーをサポートしているかどうかは、PC の製造元にお問い合わせください。詳細は、 http://www.intel.com/technology/turboboost を参照ください。
Intel、インテル、Intel ロゴ、Look Inside、Look Inside ロゴは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標または登録商標です。
*その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

最適化に関する注意事項
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル®
ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3(インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リ
ファレンス・ガイドを参照してください。
改訂 #20110804© 2017, Intel Corporation. 無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項