PMC.P4(3) | FreeBSD Library Functions Manual | PMC.P4(3) |
名称
pmc.p4 — Intel Pentium 4 と他の Netburst アーキテクチャ CPU のための測定イベントライブラリ
Performance Counters Library (libpmc, -lpmc)書式
#include < pmc.h>解説
Intel P4 PMC は、Intel Pentium 4 と Netburst CPU アーキテクチャを使用する Xeon プロセッサに存在しています。これらの PMC は、次に文書化されています。 IA-32 Intel(R) Architecture Software Developer's Manual, Volume 3: System Programming Guide, Order Number 245472-012, Intel Corporation, 2003. これらの PMC の使用に関する詳細は、次の文書で見つかります。 IA-32 Intel(R) Architecture Optimization Guide, Order Number 248966-009, Intel Corporation, 2003. これらのイベントのいくつかは、次の文書に記述されたプロセッサの不具合の影響を受けます。 Intel(R) Pentium(R) 4 Processor Specification Update, Document Number: 249199-059, Intel Corporation, April 2005.
PMC 機能
Intel Pentium 4 PMC は、40 ビット幅です。各 CPU は、18 個の PMC を含み、それぞれ 4、4、4 と 6 の PMC で 4 つのグループに分割されます。ハイパースレッディングサポートがあるプロセッサでは、PMC リソースは、論理的なプロセッサの間で共有されます。これらの PMC は、次のケーパビリティをサポートします:Capability | Support |
PMC_CAP_CASCADE | Yes |
PMC_CAP_EDGE | Yes |
PMC_CAP_INTERRUPT | Yes |
PMC_CAP_INVERT | Yes |
PMC_CAP_READ | Yes |
PMC_CAP_PRECISE | Unimplemented |
PMC_CAP_SYSTEM | Yes |
PMC_CAP_TAGGING | Yes |
PMC_CAP_THRESHOLD | Yes |
PMC_CAP_USER | Yes |
PMC_CAP_WRITE | Yes |
イベント修飾子
Intel P4 PMC のためのイベント指定子は、次の共通の修飾子を持つことができます:-
active=
choice -
(P4 HTT CPU で) どの論理的プロセッサがアクティブであるかに基づくイベントのカウントをフィルタリングします。
choice に許された値は、次の通りです:
-
any
- どちらかの論理的プロセッサがアクティブであるときにカウントします。
-
both
- 両方の論理的プロセッサがアクティブであるときにカウントします。
-
none
- どちらの論理的プロセッサもアクティブでないときにだけカウントします。
-
single
- 1 つの論理的プロセッサがアクティブであるときにだけカウントします。
デフォルトは、“
both
”です。 -
-
cascade
- PMC を相手に転送するように設定します。詳しい情報に関しては、下記の カスケード P4 PMC を参照してください。
-
edge
- スレッシュホールド比較出力の偽と真の遷移をカウントするためにカウンタを設定します。この修飾子は、スレッシュホールド修飾子も指定された場合にだけ、効果があります。
-
complement
- 調べられたイベントカウントが指定されたスレッシュホールド修飾子の値以下であるときにだけ、増加するためのカウンタを設定します。
-
mask=
qualifier - Intel P4 PMC のための多くのイベント指定子は、マスク修飾子を使用してさらに修飾する必要があります。これらの修飾子のために許された構文は、イベント特有であり、イベントとともに記述されます。
-
os
- プロセッサの CPL が 0 であるときにカウントするための PMC を設定します。
-
precise
- 正確なイベントに基づくサンプリングを選択します。正確なサンプリングは、制限されたイベントの組のためのハードウェアによってサポートされます。
-
tag=
value - 値 value でこのイベント指定子で他のフィールドによって選択された内部の uop にタグ付けするために PMC を設定します。この機能は、PMC をカスケードするときに使用されます。
-
threshold=
value - 調べられたイベントカウントが指定されたスレッシュホールド値 value より大きいときにだけ増加するために PMC を設定します。
-
usr
- プロセッサの CPL が 1、2 または 3 であるときにカウントするために PMC を設定します。
“ os
”または“ usr
”修飾子のどちらも指定されなかったなら、デフォルトは両方を有効にすることです。
HTT がある Intel Pentium 4 プロセッサでは、イベントは 2 つのクラスに分割されます:
- TS イベント
- は、ハードウェアが、他方で生成されたイベントから 1 つの論理的プロセッサで生成されたイベントを区別することができるところのイベントです。
- TI イベント
- は、ハードウェアがパッケージの複数の論理的プロセッサによって生成されたイベントを区別することができないところのイベントです。
TS イベントだけが、Pentium-4/HTT CPU でプロセスモード PMC で使用することが許されています。
Intel P4 PMC でサポートされたイベント指定子は、次の通りです:
-
p4-128bit-mmx-uop
[,mask=
flags] -
(TI イベント) 128 ビット SIMD オペランドを動作させる整数 SIMD SSE2 命令をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- メモリ中または XMM レジスタ中の 128 ビットの SIMD 整数オペランドですべての uops 操作をカウントします。
命令が 2 つ以上の 128 ビット MMX uop を含んでいるなら、各 uop はカウントされます。
-
-
p4-64bit-mmx-uop
[,mask=
flags] -
(TI イベント) 64 ビットの SIMD オペランドで操作する MMX 命令をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- メモリ中または XMM レジスタ中の 128 ビットの SIMD 整数オペランドですべての uop 操作をカウントします。
命令が 2 つ以上の 64 ビット MMX uop を含んでいるなら、各 uop はカウントされます。
-
-
p4-b2b-cycles
- (TI イベント) 連続 (back-to-back) バスサイクルをカウントします。このイベントのためのこれ以上の文書は利用できません。
-
p4-bnr
- (TI イベント) バス not レディ (bus-not-ready) 条件をカウントします。このイベントのためのこれ以上の文書は利用できません。
-
p4-bpu-fetch-request
[,mask=
qualifier] -
(TS イベント)
qualifier で指定された追加フラグによって修飾された命令フェッチ要求をカウントします。現時点では、1 つのフラグだけがサポートされています:
-
tcmiss
- トレースキャッシュ検索ミスをカウントします。
また、デフォルトの修飾子は“
mask=tcmiss
”です。 -
-
p4-branch-retired
[,mask=
flags] -
(TS イベント) リタイアされたブランチをカウントします。修飾子
flags は、次の‘
+
’で区切られた文字列のリストです:-
mmnp
- 取られず予測されたブランチをカウントします。
-
mmnm
- 取られず予測ミスされたブランチをカウントします。
-
mmtp
- 取られて予測されたブランチをカウントします。
-
mmtm
- 取られて予測ミスされたブランチをカウントします。
デフォルトの修飾子は、すべての 4 種類のブランチをカウントします。
-
-
p4-bsq-active-entries
[,mask=
qualifier] -
(TS イベント) BSQ で現在アクティブなエントリ (15 に切り抜く) の数をカウントします。修飾子
qualifier は、‘
+
’で区切られた次の一組のフラグです:-
req-type0
,req-type1
-
要求タイプのエンコードを選択するために使用される 2 ビットの数を形成します:
-
0
- 読み込み無効を除く読み込み
-
1
- 読み込み無効
-
2
- 書き込みバック (writeback) 以外の書き込み
-
3
- 書き込みバック (writeback)
ビット“
req-type1
”は、この 2 ビット数のための MSB です。 -
-
req-len0
,req-len1
-
要求長さエンコードを指定する 2 ビット数を形成します:
-
0
- 0 チャンク
-
1
- 1 チャンク
-
3
- 8 チャンク
ビット“
req-len1
”は、この 2 ビット数のための MSB です。 -
-
req-io-type
- 入力または出力要求である要求をカウントします。
-
req-lock-type
- バスをロックする要求をカウントします。
-
req-lock-cache
- キャッシュをロックする要求をカウントします。
-
req-split-type
- 8 バイト境界を超えて分離されるバスの 8 バイトのチャンク (塊) である要求をカウントします。
-
req-dem-type
- 設定されているなら、(プリフェッチでない) 請求 (demand) される要求をカウントします。設定されていないなら、プリフェッチされた要求をカウントします。
-
req-ord-type
- 命令される要求をカウントします。
-
mem-type0
,mem-type1
,mem-type2
-
メモリタイプエンコードを指定する 3 ビットの数を形成します:
-
0
- UC
-
1
- USWC
-
4
- WT
-
5
- WP
-
6
- WB
ビット“
mem-type2
”は、この 3 ビット数のための MSB です。 -
デフォルトの修飾子は、すべての上記のビット設定があります。
“
edge
”修飾子を使用するエッジトリガは、カウントが繰り返すとき、このイベントで使用するべきではありません。 -
-
p4-bsq-allocation
[,mask=
qualifier] -
(TS イベント) ‘
+
’で区切られた、次の一組のフラグである qualifier で指定されたフラグに従ってバスシーケンスユニットの割り付けをカウントします:-
req-type0
,req-type1
-
要求タイプのエンコードを選択するために使用される 2 ビットの数を形成します:
-
0
- 読み込み無効を除く読み込み
-
1
- 読み込み無効
-
2
- 書き込みバック (writeback) 以外の書き込み
-
3
- 書き込みバック (writeback)
ビット“
req-type1
”は、この 2 ビット数のための MSB です。 -
-
req-len0
,req-len1
-
要求長のエンコードを指定する 2 ビット数を形成します:
-
0
- 0 チャンク
-
1
- 1 チャンク
-
3
- 8 チャンク
ビット“
req-len1
”は、この 2 ビット数のための MSB です。 -
-
req-io-type
- 入力または出力要求である要求をカウントします。
-
req-lock-type
- バスをロックする要求をカウントします。
-
req-lock-cache
- キャッシュをロックする要求をカウントします。
-
req-split-type
- 8 バイト境界を超えて分離されるバスの 8 バイトのチャンク (塊) である要求をカウントします。
-
req-dem-type
- 設定されているなら、(プリフェッチでない) 請求 (demand) される要求をカウントします。設定されていないなら、プリフェッチされた要求をカウントします。
-
req-ord-type
- 命令される要求をカウントします。
-
mem-type0
,mem-type1
,mem-type2
-
メモリタイプエンコードを指定する 3 ビットの数を形成します:
-
0
- UC
-
1
- USWC
-
4
- WT
-
5
- WP
-
6
- WB
ビット“
mem-type2
”は、この 3 ビット数のための MSB です。 -
デフォルトの修飾子は、すべての上記のビット設定があります。
通常、このイベントは、複数のカウントを避けるために“
edge
”修飾子とともに使用されます。 -
-
p4-bsq-cache-reference
[,mask=
qualifier] -
(TS イベント) バスユニット (2 番目か 3 番目のレベルのキャッシュ参照) によって見られるようにキャッシュ参照をカウントします修飾子
qualifier は、‘
+
’で区切られた次のキーワードのリストです:-
rd-2ndl-hits
- 共有された状態で 2 番目のレベルキャッシュヒットをカウントします。
-
rd-2ndl-hite
- 排他的な状態で 2 番目のレベルキャッシュヒットをカウントします。
-
rd-2ndl-hitm
- 変更された状態で 2 番目のレベルキャッシュヒットをカウントします。
-
rd-3rdl-hits
- 共有された状態で 3 番目のレベルキャッシュヒットをカウントします。
-
rd-3rdl-hite
- 排他的な状態で 3 番目のレベルキャッシュヒットをカウントします。
-
rd-3rdl-hitm
- 変更された状態で 3 番目のレベルキャッシュヒットをカウントします。
-
rd-2ndl-miss
- 2 番目のレベルキャッシュミスをカウントします。
-
rd-3rdl-miss
- 3 番目のレベルキャッシュミスをカウントします。
-
wr-2ndl-miss
- 2 番目のレベルキャッシュをミスしたデータアクセスキャッシュから書き戻し (write-back) 検索をカウントします。
デフォルトは、上記のすべてのイベントをカウントすることです。
-
-
p4-execution-event
[,mask=
flags] -
(TS イベント) 実行タグ付けメカニズムを通して選択されたタグ付けをされた uop のリタイアををカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列を含むことができます:-
nbogus0
,nbogus1
,nbogus2
,nbogus3
- マークされた uop は偽物 (bogus) ではありません。
-
bogus0
,bogus1
,bogus2
,bogus3
- マークされた uop は偽物 (bogus) です。
このイベントは、必要な uop タグ付けを実行するために割り付けられる追加 (上流) イベントを必要とします。デフォルトはすべての上記のフラグを設定することです。正確なイベントに基づいているサンプリングのために、このイベントを使用することができます。
-
-
p4-front-end-event
[,mask=
flags] -
(TS イベント) フロントエンドタグ付けメカニズムを通して選択されたタグ付けをされた uop のリタイアをカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列を含むことができます:-
nbogus
- マークされた uop は偽物 (bogus) ではありません。
-
bogus
- マークされた uop は偽物 (bogus) です。
このイベントは、必要な uop タグ付けを実行するために割り付けられる追加 (上流) イベントを必要とします。デフォルトは両方の種類のイベントを選択することです。正確なイベントに基づいているサンプリングのために、このイベントを使用することができます。
-
-
p4-fsb-data-activity
[,mask=
flags] -
(TI イベント) 修飾子
flags によって選択された各 DBSY または DRDY インベントをカウントします。修飾子
flags は、‘
+
’文字で区切られた次の一組のフラグです:-
drdy-drv
- このプロセッサがバスにデータをドライブしているときにカウントします。
-
drdy-own
- このプロセッサがバスからデータを読み込んでいるときにカウントします。
-
drdy-other
- データがバス上にあるが、このプロセッサによってサンプリングされないときにカウントします。
-
dbsy-drv
- このプロセッサがデータをドライブするために次のサイクルで使用するバスを予約するときにカウントします。
-
dbsy-own
- このプロセッサがサンプリングするデータをドライブするために次のバスサイクルで使用するバスをいくつかのエージェントが予約するときにカウントします。
-
dbsy-other
- このプロセッサがサンプリングしないデータをドライブするために次のバスサイクルで使用するバスをいくつかのエージェントが予約するときにカウントします。
フラグ“
drdy-own
”と“drdy-other
”は、互いに排他的です。フラグ“dbsy-own
”と“dbsy-other
”は、互いに排他的です。 qualifier のためのデフォルト値は“drdy-drv+drdy-own+dbsy-drv+dbsy-own
”です。 -
-
p4-global-power-events
[,mask=
flags] -
(TS イベント) プロセッサが停止しない間のサイクルをカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
running
- プロセッサがアクティブであるときのサイクルをカウントします。
-
-
p4-instr-retired
[,mask=
flags] -
(TS イベント) クロックサイクルの間のリタイアした命令をカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列から成ります:-
nbogusntag
- タグ付けされなかった偽でない命令をカウントします。
-
nbogustag
- タグ付けされた偽でない命令をカウントします。
-
bogusntag
- タグ付けされなかったに偽の命令をカウントします。
-
bogustag
- タグ付けされた偽の命令をカウントします。
デフォルトの修飾子は、すべての種類の上記の命令をカウントします。
-
-
p4-ioq-active-entries
[,mask=
qualifier][,busreqtype=
req-type] -
(TS イベント) アクティブな IOQ の (15 で切り取られる) エントリの数をカウントします。イベントマスクは、修飾子
qualifier と
req-type よって指定されます。
修飾子 qualifier は、‘
+
’文字で区切られた次の一組のフラグです:-
all-read
- 読み込みエントリをカウントします。
-
all-write
- 書き込みエントリをカウントします。
-
mem-uc
- キャッシュ不可能メモリにアクセスするエントリをカウントします。
-
mem-wc
- 書き込み組み合わせメモリにアクセスするエントリをカウントします。
-
mem-wt
- 書き込みスルーメモリにアクセスするエントリをカウントします。
-
mem-wp
- 書き込みプロテクトされたメモリにアクセスするエントリをカウントします。
-
mem-wb
- 書き戻し (write-back) メモリにアクセスするエントリをカウントします。
-
own
- プロセッサによってドライブされる格納要求 (すなわち、他のプロセッサまたは DMA でない) をカウントします。
-
other
- 他のプロセッサまたは DMA によってドライブされる格納要求をカウントします。
-
prefetch
- カウントにハードウェアとソフトウェアプリフェッチ要求を含めます。
qualifier のためのデフォルト値は上記のすべてのフラグを有効にすることです。
req-type 修飾子は、5 ビットの数値で、加えて特定のバス要求タイプを選択するために使用することができます。デフォルトは、0 です。
“
edge
”修飾子は、このイベントでカウントを繰り返すとき、使用するべきではありません。このイベントの正確な振る舞いは、プロセッサのリビジョンによって決まります。 -
-
p4-ioq-allocation
[,mask=
qualifier][,busreqtype=
req-type] -
(TS イベント)
qualifier と
req-type で設定されたフラグに適合するバスで様々なタイプのトランザクションをカウントします。
修飾子 qualifier は、‘
+
’文字で区切られた次の一組のフラグです:-
all-read
- 読み込みエントリをカウントします。
-
all-write
- 書き込みエントリをカウントします。
-
mem-uc
- キャッシュ不可能メモリにアクセスするエントリをカウントします。
-
mem-wc
- 書き込み組み合わせメモリにアクセスするエントリをカウントします。
-
mem-wt
- 書き込みスルーメモリにアクセスするエントリをカウントします。
-
mem-wp
- 書き込みプロテクトされたメモリにアクセスするエントリをカウントします。
-
mem-wb
- 書き込みバック (戻し) メモリにアクセスするエントリをカウントします。
-
own
- プロセッサによってドライブされる格納要求 (すなわち、他のプロセッサまたは DMA でない) をカウントします。
-
other
- 他のプロセッサまたは DMA によってドライブされる格納要求をカウントします。
-
prefetch
- カウントにハードウェアとソフトウェアプリフェッチ要求を含めます。
qualifier のためのデフォルト値は、上記のすべてのフラグを有効にすることです。
req-type 修飾子は、5 ビットの数値で、加えて特定のバス要求タイプを選択するために使用することができます。デフォルトは 0 です。
通常、“
edge
”修飾子は、複数のカウントを防ぐためにこのイベントで使用されます。このイベントの正確な振る舞いはプロセッサのリビジョンによって決まります。 -
-
p4-itlb-reference
[ mask= qualifier] -
(TS イベント) 命令トランザクション変換索引 (look-aside) バッファを使用する変換をカウントします。
qualifier 引数は、‘
+
’文字で区切られた次の文字列のリストです。-
hit
- ITLB ヒットをカウントします。
-
miss
- ITLB ミスをカウントします。
-
hit-uc
- キャッシュ不可能な ITLB ヒットをカウントします。
qualifier が指定されないなら、デフォルトは、3 種類のすべての ITLB 変換をカウントすることです。
-
-
p4-load-port-replay
[,mask=
qualifier] -
(TS イベント) ロードポートでリプレイされたイベントをカウントします。修飾子
qualifier は、次の 1 つの値を取ることができます:
-
split-ld
- 分割ロードをカウントします。
qualifier のためのデフォルト値は“
split-ld
”です。 -
-
p4-mispred-branch-retired
[,mask=
flags] -
(TS イベント) 予測ミスした IA-32 ブランチ命令をカウントします。修飾子
flags は (デフォルトでもある) 次の値を取ることができます:
-
nbogus
- 偽でないリタイアしたブランチ命令をカウントします。
-
-
p4-machine-clear
[,mask=
flags] -
(TS イベント) プロセッサによって調べられたパイプラインをクリアする数をカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列のリストです:-
clear
- マシンが何らかの理由でクリアされているとき多くのサイクルの部分をカウントします。
-
moclear
- メモリ命令問題のためのマシンのクリアをカウントします。
-
smclear
- 自己変更コードのためのマシンのクリアをカウントします。
マシンのクリアの発生のカウントを取得するために修飾子“
edge
”を使用します。デフォルトの修飾子は“clear
”です。 -
-
p4-memory-cancel
[,mask=
event-list] -
(TS イベント) CPU のデータキャッシュアドレス制御ユニットで様々な種類の要求の取り消しをカウントします。修飾子
event-list は、‘
+
’文字で区切られた次の文字列のリストです:-
st-rb-full
- 格納要求バッファが利用可能でなかったので、キャンセルされた要求。
-
64k-conf
- 64K の整列のためのコンフリクト (衝突) した要求。
event-list が指定されないなら、デフォルトは両方の種類のイベントをカウントすることです。
-
-
p4-memory-complete
[,mask=
event-list] -
(TS イベント) ロード分割、キャッシュ不可能な分割、と修飾子
event-list によって選択されたキャッシュ不可能なロード操作の完了をカウントします。修飾子
event-list は、‘
+
’で区切られた次のフラグのリストです:-
lsc
- キャッシュ不可能であるか書き込み結合領域からのロードを除いて、完了したロード分割をカウントします。
-
ssc
- 完了した任意の分割格納をカウントします。
デフォルトは、両方の種類の操作をカウントすることです。
-
-
p4-mob-load-replay
[,mask=
qualifier] -
(TS イベント) メモリオーダバッファによってトリガされたロード再生 (replay) をカウントします。修飾子
qualifier は、‘
+
’で区切られた次のフラグのリストを指定できます:-
no-sta
- 未知の格納アドレスのためのリプレイをカウントします。
-
no-std
- 未知の格納データのためのリプレイをカウントします。
-
partial-data
- ロードと格納操作の間の部分的に重ね合わせられたデータアクセスのためのリプレイをカウントします。
-
unalgn-addr
- ロードと格納操作の下位 4 ビットでのミスマッチのためのリプレイをカウントします。
デフォルトの修飾子は、 no-sta+no-std+partial-data+unalgn-addr です。
-
-
p4-packed-dp-uop
[,mask=
flags] -
(TI イベント) パックされた倍精度 uop をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- パックされた倍精度オペランドで、すべての uop をカウントします。
-
-
p4-packed-sp-uop
[,mask=
flags] -
(TI イベント) パックされた単精度 uop をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- パックされた単精度オペランドで、すべての uop をカウントします。
-
-
p4-page-walk-type
[,mask=
qualifier] -
(TI イベント) ページミスハンドラによって実行されたページウォーク (page walk) をカウントします。修飾子
qualifier は、‘
+
’で区切られた次のキーワードのリストを指定できます:-
dtmiss
- データ TLB ミスのためのページウォークをカウントします。
-
itmiss
- 命令 TLB ミスのためのページウォークをカウントします。
qualifier のためのデフォルト値は“
dtmiss+itmiss
”です。 -
-
p4-replay-event
[,mask=
flags] -
(TS イベント) リプレイ (再生) タグ付けメカニズムを通して選択されたタグ付けをされた uop のリタイアをカウントします。修飾子
flags は、‘
+
’で区切られた次の一組の文字列を含みます:-
nbogus
- マークされた uop は偽物 (bogus) ではありません。
-
bogus
- マークされた uop は偽物 (bogus) です。
このイベントは、必要な uop タグ付けを実行するために割り付けられる追加 (上流) イベントを必要とします。デフォルト修飾子は、uop の両方の種類をカウントします。正確なイベントに基づいているサンプリングのために、このイベントを使用することができます。
-
-
p4-resource-stall
[,mask=
flags] -
(TS イベント) アロケータでストールの発生または待ち時間 (latency) をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
sbfull
- 格納バッファの不足のためのストール。
-
-
p4-response
- (TI イベント) 異なったタイプの応答をカウントします。このイベントに関するこれ以上の文書は利用できません。
-
p4-retired-branch-type
[,mask=
flags] -
(TS イベント) リタイアしたブランチをカウントします。修飾子
flags は、‘
+
’で区切られた次の文字列のリストを含みます:-
conditional
- 条件付きジャンプをカウントします。
-
call
- 直接と間接呼び出しブランチをカウントします。
-
return
- リターンブランチをカウントします。
-
indirect
- リターン、間接呼び出しまたは間接ジャンプをカウントします。
デフォルトの修飾子は、すべての上記のブランチタイプをカウントします。
-
-
p4-retired-mispred-branch-type
[,mask=
flags] -
(TS イベント) リタイアした予測ミスブランチをカウントします。修飾子
flags は、‘
+
’で区切られた次の文字列のリストを含みます:-
conditional
- 条件付きジャンプをカウントします。
-
call
- 間接呼び出しブランチをカウントします。
-
return
- リターンブランチをカウントします。
-
indirect
- リターン、間接呼び出しまたは間接ジャンプをカウントします。
デフォルトの修飾子は、すべての上記のブランチタイプをカウントします。
-
-
p4-scalar-dp-uop
[,mask=
flags] -
(TI イベント) スカラ倍精度 uop の数をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- スカラ倍精度 uop の数をカウントします。
-
-
p4-scalar-sp-uop
[,mask=
flags] -
(TI イベント) スカラ単精度 uop の数をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- スカラの単精度オペランドですべての uop 操作をカウントします。
-
-
p4-snoop
- (TI イベント) スヌープ (せんさく) トラフィックをカウントします。このイベントに関するこれ以上の文書は利用できません。
-
p4-sse-input-assist
[,mask=
flags] -
(TI イベント) アシストが SSE と SSE2 操作のためにオペランドに関する問題を取り扱うために必要とされる回数をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- すべての SSE と SSE2 uop のためのアシストをカウントします。
-
-
p4-store-port-replay
[,mask=
qualifier] -
(TS イベント) 格納ポートでリプレイされたインベントをカウントします。修飾子
qualifier は、次の 1 つの値を取ることができます:
-
split-st
- 分割格納をカウントします。
qualifier のためのデフォルト値は、“
split-st
”です。 -
-
p4-tc-deliver-mode
[,mask=
qualifier] -
(TI イベント) トレースキャッシュとデコードエンジンの操作モードのサイクルで持続時間をカウントします。必要なオペレーティングモードは、‘
+
’文字で区切られた次の文字列のリストである、 qualifier によって選択されます:-
DD
- 両方の論理的プロセッサは、配信モードです。
-
DB
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が構築モードである間、配信モードです。
-
DI
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が halt しているか、マシンクリア中か、または、長いマイクロコードフローに移行している間、配信モードです。
-
BD
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が配信モードである間、構築モードです。
-
BB
- 両方の論理的プロセッサは、構築モードです。
-
BI
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が halt しているか、マシンクリア中か、または、長いマイクロコードフローに移行している間、構築モードです。
-
ID
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が配信モードである間、halt しているか、マシンクリア中か、または、長いマイクロコードフローに移行しています。
-
IB
- 論理的プロセッサ 0 は、論理的プロセッサ 1 が構築モードである間、halt しているか、マシンクリア中か、または、長いマイクロコードフローに移行しています。
プロセッサパッケージに 1 つの論理的プロセッサしかなければ、論理的プロセッサ 1 のための修飾子は無視されます。修飾子が指定されないなら、デフォルト修飾子は“
DD+DB+DI+BD+BB+BI+ID+IB
”です。 -
-
p4-tc-ms-xfer
[,mask=
flags] -
(TI イベント) トレースキャッシュから MS ROM に変換された uop 配信回数をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
cisc
- MS 転送まで TC をカウントします。
-
-
p4-uop-queue-writes
[,mask=
flags] -
(TS イベント) uop キューに書き込まれた有効な uop の数をカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列のリストです:-
from-tc-build
- 構築モードのトレースキャッシュから書き込まれている uop をカウントします。
-
from-tc-deliver
- 配信モードのトレースキャッシュから書き込まれている uop をカウントします。
-
from-rom
- マイクロコード ROM から書き込まれている uop をカウントします。
デフォルトの修飾子は、上記のすべての種類の uop をカウントします。
-
-
p4-uop-type
[,mask=
flags] -
(TS イベント) このイベントは、ロードと格納 (load and store) uop をタグ付けするリタイアにおけるフロントエンドメカニズムに関連して使用されます。修飾子
flags は、‘
+
’文字で区切られた次の文字列から成ります:-
tagloads
- ロード操作である uop をマークします。
-
tagstores
- 格納操作である uop をマークします。
デフォルトの修飾子は、両方の種類の uop をカウントします。
-
-
p4-uops-retired
[,mask=
flags] -
(TS イベント) クロックサイクルの間のリタイアした uop をカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列から成ります:-
nbogus
- 偽でないマークされた uop をカウントします。
-
bogus
- 偽であるマークされた uop をカウントします。
デフォルトの修飾子は、両方の種類の uop をカウントします。
-
-
p4-wc-buffer
[,mask=
flags] -
(TI イベント) 書き込み組み合わせ (write-combining) バッファ操作をカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列を含みます:-
wcb-evicts
- 何らかの原因によって WC バッファの立ち退き。
-
wcb-full-evict
- WC バッファが利用可能でないために WC バッファの立ち退き。
デフォルトの修飾子は、両方の種類の eviction (立ち退き) をカウントします。
-
-
p4-x87-assist
[,mask=
flags] -
(TS イベント) 特別な取り扱いを必要とする x87 命令のリタイアをカウントします。修飾子
flags は、‘
+
’文字で区切られた次の文字列を含みます:-
fpsu
- FP スタックアンダフローを調べる命令をカウントします。
-
fpso
- FP スタックオーバフローを調べる命令をカウントします。
-
poao
- x87 出力オーバフローを調べる命令をカウントします。
-
poau
- x87 出力アンダフローを調べる命令をカウントします。
-
prea
- x87 入力アシストを必要とした命令をカウントします。
デフォルトの修飾子は、すべての上記のタイプの命令リタイアをカウントします。
-
-
p4-x87-fp-uop
[,mask=
flags] -
(TI イベント) x87 浮動小数点の uop をカウントします。修飾子
flags は、(デフォルトでもある) 次の値を取ることができます:
-
all
- すべての x87 浮動小数点の uop をカウントします。
命令が 2 つ以上の x87 浮動小数点 uop を含んでいるなら、すべての x87 浮動小数点 uop がカウントされます。このイベントは、x87 浮動小数点データ移動操作をカウントしません。
-
-
p4-x87-simd-moves-uop
[,mask=
flags] -
(TI イベント) データをロードするか、データを格納するか、またはレジスタからレジスタへの移動を実行する各 x87 FPU、MMX、SSE、または SSE2 uop をカウントします。このイベントは、整数移動 uop をカウントしません。修飾子
flags は、‘
+
’文字で区切られた次のキーワードを含みます:-
allp0
- x87 と SIMD 格納と移動 uop をカウントします。
-
allp2
- すべての x87 と SIMD ロード uop をカウントします。
デフォルトは、すべての uop をカウントすることです。 (エラッタ) このイベントはプロセッサの不具合 N43 の影響を受けます。
-
カスケード P4 PMC
PMC カスケードのサポートは、現在、不完全に実装されています。個々のイベントカウンタが、“cascade
”修飾子で割り付けられている間に、現在の API は、単一操作でカスケードされたイベントカウンタの組に必要であるすべてのリソースに名前を付けて、割り付ける能力を提供しません。
正確なイベントベースのサンプル
正確なイベントベースのサンプリングのサポートは、現在、 hwpmc(4) で実装されていません。イベント名の別名
次のテーブルは、 Performance Counters Library (libpmc, -lpmc) と使用される基本的なハードウェアイベントによってサポートされた PMC から独立している別名の間のマッピングを表示しています。Alias | Event |
branches |
p4-branch-retired,mask=mmtp+mmtm |
branch-mispredicts |
p4-mispred-branch-retired |
dc-misses |
(unsupported) |
ic-misses |
(unsupported) |
instructions |
p4-instr-retired,mask=nbogusntag+nbogustag |
interrupts |
(unsupported) |
unhalted-cycles |
p4-global-power-events |
関連項目
pmc(3), pmc.atom(3), pmc.core(3), pmc.core2(3), pmc.iaf(3), pmc.k7(3), pmc.k8(3), pmc.p5(3), pmc.p6(3), pmc.soft(3), pmc.tsc(3), pmclog(3), hwpmc(4)歴史
pmc ライブラリは、 FreeBSD 6.0 ではじめて登場しました。作者
Performance Counters Library (libpmc, -lpmc) ライブラリは、 <jkoshy@FreeBSD.org>によって書かれました。October 4, 2008 | FreeBSD |