CPU カウンタと Windows カウンタ
更新 : 2007 年 11 月
Visual Studio 2008 プロファイラを使用すると、オペレーティング システムが生成するパフォーマンス データ (Windows カウンタ) と、プロセッサ ユニットが生成するパフォーマンス データ (CPU カウンタ) を収集することができます。CPU カウンタを、サンプルを使用してプロファイリングを行うときのサンプリング間隔の生成に使用するイベントとして選択することもできます。
Windows カウンタ
Windows カウンタは、オペレーティング システムまたはアプリケーション、サービス、またはドライバのパフォーマンスに関する情報を提供する Windows 診断インフラストラクチャの一部です。Windows カウンタは現在のコンピュータの構成に依存し、他のコンピュータでは使用できない場合があります。
CPU カウンタ
CPU カウンタは、ハードウェア関連のイベントのカウントを格納するコンピュータの CPU の機能です。Visual Studio 2008 プロファイラを使用すると、インストルメンテーションを使用してプロファイリングを行う場合に、これらのイベント カウントをサンプリング間隔として使用でき、イベント カウントを収集できます。
パフォーマンス カウンタは CPU に固有です。CPU のモデルとバージョンによって、同じパフォーマンス カウンタを有効にするための構成設定が大きく異なる場合があります。Visual Studio 2008 プロファイラの汎用性のあるイベントを使用すると、共通するパフォーマンス カウンタの一部を特定のプロセッサから分離し、汎用的なパフォーマンス イベントを収集またはサンプリングすることができます。
L2 キャッシュ ミスなど、プロファイリング時に特定のイベントをカウントする場合、ユーザーはそのイベント ソースに基づいてパフォーマンス セッションを作成できます。これは、L2 キャッシュ搭載の CPU で実行できます。パフォーマンス セッションは、変更せずに、プラットフォーム間を移動できます。
Visual Studio 2008 プロファイラは、特定のプラットフォームに対する特定のイベントを引き続きサポートします。たとえば、Pentium 4 プラットフォームの開発者が NetBurst アーキテクチャ固有のイベントをカウントする場合があります。このイベントは汎用性がありませんが、開発者は、特定のプラットフォーム上の特定のパフォーマンス セッションに対して引き続き使用できます。
汎用性のあるイベントとプラットフォーム イベント
汎用性のあるイベントとは、特定の CPU に限定されないカウンタのグループです。他のすべてのカウンタはプラットフォーム イベントと呼ばれ、プラットフォームによってはサポートされない場合もあります。
汎用性のあるイベントとプラットフォーム イベントの両方ともカウンタは .XML ファイルで定義されています。ここでは、カウンタに関連する特定の値が指定されています。たとえば、Intel CPU と AMD CPU のデータは異なるため、各 CPU のための複数のファイルがあります。Visual Studio 2008 プロファイラは、この情報を使用して、パフォーマンスの測定に適したカウンタ (移植性の高いカウンタおよびプラットフォーム カウンタ) をユーザーに提供します。
汎用性のあるイベント
汎用性のあるイベントには、次のイベントが含まれます。
一般的なイベント
イベント名 |
イベントの説明 |
---|---|
Instructions Retired |
完了するまで実行された命令数を表します。 |
Non Halted Cycles |
I/O 待ち状態など、プロセッサが停止されていないサイクルのみを表します。 |
フロントエンド イベント
イベント名 |
イベントの説明 |
---|---|
ITLB Misses |
ミスになった ITLB (Instruction Translation Look-aside Buffer) のルックアップ数を表します。 |
分岐イベント
イベント名 |
イベントの説明 |
---|---|
Branches Retired |
完了するまで実行された分岐命令数を表します。 |
Mis-predicted Branches |
プロセッサが誤ったパスを予測したことによって発生した分岐予測ミスを表します。プロセッサがすべての作業を破棄し、正しいパスで再実行する必要があるため、分岐予測ミスはパフォーマンスに影響を与えます。 |
メモリ イベント
イベント名 |
イベントの説明 |
---|---|
L2 Cache Read Misses |
2 次キャッシュの読み取りミスの数を表します。 |
L2 Cache Read References |
2 次キャッシュの読み取りの参照数を表します。ロード ミスと RFO ミス、およびヒットが含まれます。 |
Pentium IV イベント
Pentium IV イベントとしては、次のようなイベントがあります。
メモリ イベント
イベント名 |
イベントの説明 |
---|---|
64K Alias Conflicts |
64K エイリアスの競合数を表します。競合は、仮想メモリ アドレスが、既に L1 キャッシュ内に存在する他のキャッシュ ラインとは別の、モジュロ 64K バイトのキャッシュ ラインを参照した場合に発生します。 |
Page Walk DTLB Misses |
DTLB (Data Translation Look-aside Buffer) ミスに起因するページ ウォークのリクエスト数を表します。Page Walk DTLB Miss により、ページ フォールトが発生します。これによって、オペレーティング システムは必要なページをテーブルに読み込むことができます。 |
L3 Cache Read Misses |
3 次キャッシュの読み取りミスの数を表します。ロード ミスおよび RFO (Read For Ownership) ミスが含まれます。 |
L3 Cache Read References |
3 次キャッシュの読み取りの参照数を表します。ロード ミスと RFO ミス、およびヒットが含まれます。 |
All MOB Load Replays |
ストア ツー ロード フォワーディング (Store-to-Load Forwarding) の制限が守られなかったために、メモリ オーダー バッファ (MOB) リプレイの対象となったロード命令の数を表します。 |
Load/Store Splits Completed |
ロード分割とストア分割の数を表します。データの分割はパフォーマンスの低下を招きます。これは、プロセッサが、2 つのキャッシュ ラインに対して別々に読み取り/書き込みを行い、2 つに分割されたデータを再び元に戻す必要があるためです。 |
フロントエンド イベント
イベント名 |
イベントの説明 |
---|---|
Page Walk ITLB Misses |
ITLB ミスに起因するページ ウォーク リクエストの数を表します。 |
ITLB References |
ITLB (Instruction Translation Look-aside Buffer) キャッシュへのアクセスを表します。 |
分岐イベント
イベント名 |
イベントの説明 |
---|---|
Trace Cache Lookup Misses |
トレース キャッシュのルックアップ ミスによって生じた命令のデコードとトレースの構築に伴う遅延を表します。 |
浮動小数点ユニット
イベント名 |
イベントの説明 |
---|---|
64-bit MMX Micro-Ops Retired |
リタイアした 64 ビット MMX マイクロ オペレーションの数を表します。アセンブリ命令は、1 つまたは複数のマイクロ オペレーションに分割できます。 |
X87 SIMD Micro-Ops Retired |
リタイアした X87 SIMD (Single Instruction Multiple Data) マイクロ オペレーションの数を表します。アセンブリ命令は、1 つまたは複数のマイクロ オペレーションに分割できます。 |
X87 Floating Point Micro-Ops Retired |
リタイアした X87 浮動小数点マイクロ オペレーションの数を表します。アセンブリ命令は、1 つまたは複数のマイクロ オペレーションに分割できます。 |
Packed Single Precision Micro-Ops Retired |
リタイアした PS (Packed Single Precision) マイクロ オペレーションの数を表します。データをアンパックするには、追加の命令が必要となります。 |
Scalar Single Precision Micro-Ops Retired |
リタイアした SS (Scalar Single Precision) マイクロ オペレーションの数を表します。 |
Packed Double Precision Micro-Ops Retired |
リタイアした PD (Packed Double Precision) マイクロ オペレーションの数を表します。データをアンパックするには、追加の命令が必要となります。 |
Scalar Double Precision Micro-Ops Retired |
リタイアした SD (Scalar Double Precision) マイクロ オペレーションの数を表します。 |
128-bit MMX Micro-Ops Retired |
リタイアした 128 ビット MMX マイクロ オペレーションの数を表します。アセンブリ命令は、1 つまたは複数のマイクロ オペレーションに分割できます。 |
SSE Input Assists |
SSE/SSE2 浮動小数点演算の例外状況を処理するために必要なアシスト数を表します。 |
使用できるカウンタの表示
Visual Studio UI
現在のプラットフォームでサポートされているすべての CPU パフォーマンス カウンタの一覧を表示するには、パフォーマンス セッションのプロパティ ページを開き、次のいずれかを行います。
[サンプリング] を選択し、[サンプリング イベント] 一覧から [パフォーマンス カウンタ] を選択します。
または
[CPU カウンタ] を選択し、[CPU カウンタの収集] を選択します。
現在のプラットフォームでサポートされている Windows パフォーマンス カウンタの一覧を表示するには、パフォーマンス セッションのプロパティ ページを開き、[Windows カウンタ] を選択します。
[コマンド ライン]
VSPerfCmd.exe の /querycounters オプションを使用して、現在のプラットフォームでサポートされているすべての CPU パフォーマンス カウンタの一覧を印刷します。