EN JA
PMC.P6(3)
PMC.P6(3) FreeBSD Library Functions Manual PMC.P6(3)

名称

pmc.p6Intel Pentium Pro, P-II, P-III ファミリ CPU のための測定イベント

ライブラリ

Performance Counters Library (libpmc, -lpmc)

書式

#include < pmc.h>

解説

Intel P6 PMC は、Intel Pentium Pro, Pentium II, Celeron, Pentium III と Pentium M プロセッサに存在しています。

それらは、次に文書化されています。 IA-32 Intel(R) Architecture Software Developer's Manual, Volume 3: System Programming Guide, Order Number 245472-012, Intel Corporation, 2003.

これらのイベントのいくつかは、次に説明されたプロセッサのエラッタ (不具合) によって影響を受けます。 Intel(R) Pentium(R) III Processor Specification Update, Document Number: 244453-054, Intel Corporation, April 2005.

PMC 機能

これらの CPU には、各 40 ビット幅の 2 つのカウンタがあります。いくつかのイベントは、特有のカウンタで使用されるだけであり、いくつかのイベントは、特有のプロセッサモデルでのみ定義されています。これらの PMC は、次のケーパビリティをサポートします:
Capability Support
PMC_CAP_CASCADE No
PMC_CAP_EDGE Yes
PMC_CAP_INTERRUPT Yes
PMC_CAP_INVERT Yes
PMC_CAP_READ Yes
PMC_CAP_PRECISE No
PMC_CAP_SYSTEM Yes
PMC_CAP_TAGGING No
PMC_CAP_THRESHOLD Yes
PMC_CAP_USER Yes
PMC_CAP_WRITE Yes

イベント修飾子

Intel P6 PMC のためのイベント指定子は、次の共通の修飾子を持つことができます:
cmask= value
1 つのサイクルで測定される設定されたイベントの数が、 value 以上の場合のみ、増加するように PMC を設定します。
edge
他の修飾子によって表現された状態のアサートされた遷移をアサート停止する数をカウントするように PMC を設定します。指定されているなら、状態が真のままで残っている間クロックの数にかかわらず、状態が真になるときはいつも、カウンタは一度だけ増加します。
inv
cmask”修飾子が存在しているとき、比較の意味を逆にし、サイクルごとのイベントの数が、“ cmask”修飾子によって指定された値より小さいときに、カウンタを増加します。
os
特権レベル 0 で起こるイベントをカウントするように、PMC を設定します。
umask= value
この修飾子は、選択されたイベントをさらに修飾するために使用されます (下記参照)。
usr
特権レベル 1, 2 または 3 で起こるイベントをカウントするように、 PMC を設定します。

os”または“ usr”修飾子のどちらも指定されなかったなら、デフォルトは、両方を有効にすることです。

Intel P6 PMC でサポートされたイベント指定子は、次の通りです:

p6-baclears
(Event E6H) BTB には予測がなかったので、静的な分岐予測が分岐デコーダによって行われた回数をカウントします。
p6-br-bac-missp-exec
(Event 8AH, Pentium M) Front End (BAC) で予測ミスされたところで実行された分岐命令の数をカウントします。
p6-br-bogus
(Event E4H) 偽の分岐の数をカウントします。
p6-br-call-exec
(Event 92H, Pentium M) 実行された呼び出し命令の数をカウントします。
p6-br-call-missp-exec
(Event 93H, Pentium M) 予測ミスされ実行された呼び出し命令をカウントします。
p6-br-cnd-exec
(Event 8BH, Pentium M) 実行された条件分岐命令の数をカウントします。
p6-br-cnd-missp-exec
(Event 8CH, Pentium M) 予測ミスされ実行された条件分岐命令の数をカウントします。
p6-br-ind-call-exec
(Event 94H, Pentium M) 実行された間接呼び出し命令の数をカウントします。
p6-br-ind-exec
(Event 8DH, Pentium M) 実行された間接分岐命令の数をカウントします。
p6-br-ind-missp-exec
(Event 8EH, Pentium M) 予測ミスされ実行された間接分岐命令の数をカウントします。
p6-br-inst-decoded
(Event E0H) デコードされた分岐命令の数をカウントします。
p6-br-inst-exec
(Event 88H, Pentium M) 実行された間接分岐命令の数をカウントしますが、必ずリタイアしたものです。
p6-br-inst-retired
(Event C4H) リタイアした分岐命令の数をカウントします。
p6-br-miss-pred-retired
(Event C5H) リタイアし予測ミスした分岐命令の数をカウントします。
p6-br-miss-pred-taken-ret
(Event C9H) リタイアして取られた予測ミスした分岐の数をカウントします。
p6-br-missp-exec
(Event 89H, Pentium M) 実行で予測ミスされた実行された分岐命令の数をカウントします。
p6-br-ret-bac-missp-exec
(Event 91H, Pentium M) Front End (BAC) で予測ミスされ実行されたリターン命令の数をカウントします。
p6-br-ret-exec
(Event 8FH, Pentium M) 実行したリターン命令の数をカウントします。
p6-br-ret-missp-exec
(Event 90H, Pentium M) 実行で予測ミスされ実行されたリターン命令の数をカウントします。
p6-br-taken-retired
(Event C9H) リタイアして取られたブランチの数をカウントします。
p6-btb-misses
(Event E2H) BTB が予測を生産しなかったブランチの数をカウントします。
p6-bus-bnr-drv
(Event 61H) このプロセッサが BNR# ピンをドライブしている間のバスクロックサイクルの数をカウントします。
p6-bus-data-rcv
(Event 64H) このプロセッサがデータを受け取っている間のバスクロックサイクルの数をカウントします。
p6-bus-drdy-clocks [ ,umask=qualifier]
(Event 62H) DRDY# がアサートされている間のクロックの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されたトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-hit-drv
(Event 7AH) このプロセッサが HIT# ピンをドライブしている間のバスクロックサイクルの数をカウントします。
p6-bus-hitm-drv
(Event 7BH) このプロセッサが HITM# ピンをドライブしている間のバスクロックサイクルの数をカウントします。
p6-bus-lock-clocks [ ,umask=qualifier]
(Event 63H) LOCK# が外部のシステムバスでアサートされる間のクロックの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されるトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成される操作をカウントすることです。

p6-bus-req-outstanding
(Event 60H) 任意の与えられたサイクルで顕著なバス要求の数をカウントします。
p6-bus-snoop-stall
(Event 7EH) バスがスヌープ (snoop) ストールされる間のクロックサイクルの数をカウントします。
p6-bus-tran-any [ ,umask=qualifier]
(Event 70H) 任意の種類の完了したバストランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-brd [ ,umask=qualifier]
(Event 65H) バースト読み込みトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-burst [ ,umask=qualifier]
(Event 6EH) 完了したバーストトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-def [ ,umask=qualifier]
(Event 6DH) 完了した据え置きトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-ifetch [ ,umask=qualifier]
(Event 68H) 完了した命令フェッチトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-inval [ ,umask=qualifier]
(Event 69H) 完了した無効にされたトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-mem [ ,umask=qualifier]
(Event 6FH) 完了したメモリトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-pwr [ ,umask=qualifier]
(Event 6AH) 完了したパーシャル書き込みトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-tran-rfo [ ,umask=qualifier]
(Event 66H) 完了した所有者読み込み (read-for-ownership) トランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-trans-io [ ,umask=qualifier]
(Event 6CH) 完了した I/O トランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-trans-p [ ,umask=qualifier]
(Event 6BH) 完了したパーシャルトランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-bus-trans-wb [ ,umask=qualifier]
(Event 67H) 完了した書き戻し (write-back) トランザクションの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

any
バス上で任意のエージェントによって生成されたトランザクションをカウントします。
self
このプロセッサによって生成されるトランザクションをカウントします。

デフォルトは、このプロセッサによって生成された操作をカウントすることです。

p6-cpu-clk-unhalted
(Event 79H) プロセッサが halt しなかった間のサイクルの数をカウントします。

(Pentium M) プロセッサが halt しないで、温度のトリップしなかった間のサイクルの数をカウントします。

p6-cycles-div-busy
(Event 14H) 除算器 (divider) がビジーで新しい除算を受け付けることができない間のサイクルの数をカウントします。このイベントは、カウンタ 0 でのみ割り付けられます。
p6-cycles-int-pending-and-masked
(Event C7H) 割り込みが無効にされ割り込みがペンディングされているプロセッササイクルの数をカウントします。
p6-cycles-int-masked
(Event C6H) 割り込みが無効にされているプロセッササイクルの数をカウントします。
p6-data-mem-refs
(Event 43H) 内部の再試行を含み、任意のメモリタイプを使用してすべてのロード (load) と格納 (store) をカウントします。分割された格納 (store) 各部分は別々にカウントされます。
p6-dcu-lines-in
(Event 45H) データキャッシュユニットに割り付けられた合計ラインをカウントします。
p6-dcu-m-lines-in
(Event 46H) データキャッシュユニットに割り付けられた M 状態ラインの数をカウントします。
p6-dcu-m-lines-out
(Event 47H) データキャッシュユニットから取り戻された M 状態ラインの数をカウントします。
p6-dcu-miss-outstanding
(Event 48H) いつでも顕著なキャッシュミスの数によって増加される、データキャッシュユニットミスが顕著なあいだのサイクルの数をカウントします。
p6-div
(Event 13H) 論理的な除算を含む整数と浮動小数点の除算の数を数えます。このイベントは、カウンタ 1 でのみ割り付けられます。
p6-emon-esp-uops
(Event D7H, Pentium M) マイクロオペレーション (ops) の合計数をカウントします。
p6-emon-est-trans [ ,umask=qualifier]
(Event 58H, Pentium M) Enhanced Intel SpeedStep 遷移の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つを指定できます:

all
すべての遷移をカウントします。
freq
周波数遷移だけをカウントします。

デフォルトは、すべての遷移をカウントすることです。

p6-emon-fused-uops-ret [ ,umask=qualifier]
(Event DAH, Pentium M) リタイアして熔融されたマイクロオペレーション (ops) の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つです:

all
すべての熔融されたマイクロオペレーション (ops) をカウントします。
loadop
load と op マイクロオペレーション (ops) だけをカウントします。
stdsta
STD/STA のマイクロオペレーション (ops) だけをカウントします。

デフォルトは、すべての熔融されたマイクロオペレーション (ops) をカウントすることです。

p6-emon-kni-comp-inst-ret
(Event D9H, Pentium III) リタイアした SSE 計算命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

packed-and-scalar
パックとスカラの操作をカウントします。
scalar
スカラの操作だけをカウントします。

デフォルトは、パックとスカラの操作をカウントすることです。

p6-emon-kni-inst-retired [ ,umask=qualifier]
(Event D8H, Pentium III) リタイアした SSE 命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

packed-and-scalar
パックとスカラの操作をカウントします。
scalar
スカラの操作だけをカウントします。

デフォルトは、パックとスカラの操作をカウントすることです。

p6-emon-kni-pref-dispatched [ ,umask=qualifier]
(Event 07H, Pentium III) SSE プリフェッチ、または、(推論的なプリフェッチを含んで) 弱く順序付けられた命令ディスパッチの数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

nta
一時的でないプリフェッチをカウントします。
t1
L1 までのプリフェッチをカウントします。
t2
L2 までのプリフェッチをカウントします。
wos
弱く順序付けられた格納をカウントします。

デフォルトは、一時的でないプリフェッチをカウントすることです。

p6-emon-kni-pref-miss [ ,umask=qualifier]
(Event 4BH, Pentium III) すべてのキャッシュをミスした、プリフェッチ、または、弱く順序付けられた命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

nta
一時的でないプリフェッチをカウントします。
t1
L1 までのプリフェッチをカウントします。
t2
L2 までのプリフェッチをカウントします。
wos
弱く順序付けられた格納をカウントします。

デフォルトは、一時的でないプリフェッチをカウントすることです。

p6-emon-pref-rqsts-dn
(Event F8H, Pentium M) 発行された下向プリフェッチの数をカウントします。
p6-emon-pref-rqsts-up
(Event F0H, Pentium M) 発行された上向プリフェッチの数をカウントします。
p6-emon-simd-instr-retired
(Event CEH, Pentium M) リタイアした MMX 命令の数をカウントします。
p6-emon-sse-sse2-comp-inst-retired [ ,umask=qualifier]
(Event D9H, Pentium M) リタイアした計算 SSE 命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つを指定できます:

sse-packed-single
SSE パック単一命令をカウントします。
sse-scalar-single
SSE スカラ単一命令をカウントします。
sse2-packed-double
SSE2 パック二重命令をカウントします。
sse2-scalar-double
SSE2 スカラ二重命令をカウントします。

デフォルトは、SSE パック単一命令をカウントすることです。

p6-emon-sse-sse2-inst-retired [ ,umask=qualifier]
(Event D8H, Pentium M) リタイアした SSE 命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つを指定できます:

sse-packed-single
SSE パック単一命令をカウントします。
sse-packed-single-scalar-single
SSE パック単一命令とスカラ単一命令をカウントします。
sse2-packed-double
SSE2 パック二重命令をカウントします。
sse2-scalar-double
SSE2 スカラ二重命令をカウントします。

デフォルトは、SSE パック単一命令をカウントすることです。

p6-emon-synch-uops
(Event D3H, Pentium M) シンク (sync) マイクロオペレーション (ops) の数をカウントします。
p6-emon-thermal-trip
(Event 59H, Pentium M) サーマルトリップ (thermal trips) の持続時間か発生をカウントします。サーマルトリップの発生をカウントするために“ edge”修飾子を使用します。
p6-emon-unfusion
(Event DBH, Pentium M) リオーダ (reorder) バッファの非溶融イベントの数をカウントします。
p6-flops
(Event C1H) リタイアした計算の浮動小数点操作の数をカウントします。このイベントは、カウンタ 0 でのみ割り付けられます。
p6-fp-assist
(Event 11H) マイクロコードによって取り扱われる浮動小数点例外の数をカウントします。このイベントは、カウンタ 1 でのみ割り付けられます。
p6-fp-comps-ops-exe
(Event 10H) 実行された計算の浮動小数点操作の数をカウントします。このイベントは、カウンタ 0 でのみ割り付けられます。
p6-fp-mmx-trans [ ,umask=qualifier]
(Event CCH, Pentium II, Pentium III) MMX と浮動小数点命令の間の遷移の数をカウントします。追加の修飾子が指定されるかもしれません、そして次のキーワードの 1 つから成ります:

mmxtofp
MMX 命令から浮動小数点命令までの遷移をカウントします。
fptommx
浮動小数点命令から MMX 命令までの遷移をカウントします。

デフォルトは、浮動小数点の遷移までの MMX をカウントすることです。

p6-hw-int-rx
(Event C8H) 受け付けられたハードウェア割り込みの数をカウントします。
p6-ifu-ifetch
(Event 80H) キャッシュ可能とキャッシュ不可能の両方の、命令のフェッチの数をカウントします。
p6-ifu-ifetch-miss
(Event 81H) 命令のフェッチミス (すなわち、メモリアクセスを起こすもの) の数をカウントします。
p6-ifu-mem-stall
(Event 86H) 命令フェッチが何らかの理由でストールしたサイクルの数をカウントします。
p6-ild-stall
(Event 87H) 命令長のデコーダがストールしたサイクルの数をカウントします。
p6-inst-decoded
(Event D0H) デコードされた命令の数をカウントします。
p6-inst-retired
(Event C0H) リタイアした命令の数をカウントします。
p6-itlb-miss
(Event 85H) TLB ミスの命令の数をカウントします。
p6-l2-ads
(Event 21H) L2 アドレスストローブの数をカウントします。
p6-l2-dbus-busy
(Event 22H) L2 キャッシュデータバスがビジーであった間のサイクルの数をカウントします。
p6-l2-dbus-busy-rd
(Event 23H) L2 からプロセッサまでの読み込みデータの転送で L2 キャッシュデータバスがビジーであった間のサイクルの数をカウントします。
p6-l2-ifetch [ ,umask=qualifier]
(Event 28H) L2 命令のフェッチの数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

e
E (排他的な) 状態の線に影響する操作をカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
s
S (共有された) 状態の線に影響する操作をカウントします。

デフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。

p6-l2-ld [ ,umask=qualifier]
(Event 29H) L2 データロードの数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

both
(Pentium M) ハードウェアのプリフェッチされた線と非ハードウェアのプリフェッチされた線の両方をカウントします。
e
E (排他的な) 状態の線に影響する操作をカウントします。
hw
(Pentium M) ハードウェアのプリフェッチされた線だけをカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
nonhw
(Pentium M) ハードウェアのプリフェッチされた線を排除します。
s
S (共有された) 状態の線に影響する操作をカウントします。

Pentium M プロセッサ以外のプロセッサのデフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。 Pentium M プロセッサのデフォルトは、すべての (MESI) 状態の線でハードウェアのプリフェッチと非ハードウェアのプリフェッチ操作の両方をカウントすることです。 (エラッタ) このイベントは、プロセッサの不具合 E53 の影響を受けます。

p6-l2-lines-in [ ,umask=qualifier]
(Event 24H) 割り付けられた L2 線の数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

both
(Pentium M) ハードウェアのプリフェッチされた線と非ハードウェアのプリフェッチされた線の両方をカウントします。
e
E (排他的な) 状態の線に影響する操作をカウントします。
hw
(Pentium M) ハードウェアのプリフェッチされた線だけをカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
nonhw
(Pentium M) ハードウェアのプリフェッチされた線を排除します。
s
S (共有された) 状態の線に影響する操作をカウントします。

Pentium M プロセッサ以外のプロセッサのデフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。 Pentium M プロセッサのデフォルトは、すべての (MESI) 状態の線でハードウェアのプリフェッチと非ハードウェアのプリフェッチ操作の両方をカウントすることです。 (エラッタ) このイベントはプロセッサの不具合 E45 の影響を受けます。

p6-l2-lines-out [ ,umask=qualifier]
(Event 26H) 退去させられた (evicted) L2 線の数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

both
(Pentium M) ハードウェアのプリフェッチされた線と非ハードウェアのプリフェッチされた線の両方をカウントします。
e
E (排他的な) 状態の線に影響する操作をカウントします。
hw
(Pentium M) ハードウェアのプリフェッチされた線だけをカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
nonhw
(Pentium M のみ) ハードウェアのプリフェッチされた線を排除します。
s
S (共有された) 状態の線に影響する操作をカウントします。

Pentium M プロセッサ以外のプロセッサのデフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。 Pentium M プロセッサのデフォルトは、すべての (MESI) 状態の線でハードウェアのプリフェッチと非ハードウェアのプリフェッチ操作の両方をカウントすることです。 (エラッタ) このイベントはプロセッサの不具合 E45 の影響を受けます。

p6-l2-m-lines-inm
(Event 25H) L2 キャッシュで割り付けられた変更された線の数をカウントします。
p6-l2-m-lines-outm [ ,umask=qualifier]
(Event 27H) 退去させられた (evicted) M 状態線の数をカウントします。

(Pentium M) これらのプロセッサでは、追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

both
ハードウェアのプリフェッチされた線と非ハードウェアのプリフェッチされた線の両方をカウントします。
hw
ハードウェアのプリフェッチされた線だけをカウントします。
nonhw
ハードウェアのプリフェッチされた線を排除します。

デフォルトは、ハードウェアのプリフェッチ操作と非ハードウェアのプリフェッチ操作の両方をカウントすることです。 (エラッタ) このイベントはプロセッサの不具合 E53 の影響を受けます。

p6-l2-rqsts [ ,umask=qualifier]
(Event 2EH) L2 要求の合計数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

e
E (排他的な) 状態の線に影響する操作をカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
s
S (共有された) 状態の線に影響する操作をカウントします。

デフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。

p6-l2-st
(Event 2AH) L2 データ格納の数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

e
E (排他的な) 状態の線に影響する操作をカウントします。
i
I (無効の) 状態の線に影響する操作をカウントします。
m
M (変更された) 状態の線に影響する操作をカウントします。
s
S (共有された) 状態の線に影響する操作をカウントします。

デフォルトは、すべての (MESI) 状態の線に影響する操作をカウントすることです。

p6-ld-blocks
(Event 03H) バッファブロックを格納するのために遅れたロード操作の数をカウントします。
p6-misalign-mem-ref
(Event 05H) (64 ビット境界を横断する) 整列ミスのデータメモリ参照の数をカウントします。
p6-mmx-assist
(Event CDH, Pentium II, Pentium III) 実行した MMX アシストの数をカウントします。
p6-mmx-instr-exec
(Event B0H) (Celeron, Pentium II) レジスタからメモリまで格納する MOVQ と MOVD を除いて、実行された MMX の数をカウントします。
p6-mmx-instr-ret
(Event CEH, Pentium II) リタイアした MMX 命令の数をカウントします。
p6-mmx-instr-type-exec [ ,umask=qualifier]
(Event B3H, Pentium II, Pentium III) 実行した MMX 命令の数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

pack
MMX パック操作命令をカウントします。
packed-arithmetic
MMX パックした算術命令をカウントします。
packed-logical
MMX パックした論理命令をカウントします。
packed-multiply
MMX パックした乗算命令をカウントします。
packed-shift
MMX パックしたシフト命令をカウントします。
unpack
MMX アンパック操作命令をカウントします。

デフォルトは、すべての操作をカウントすることです。

p6-mmx-sat-instr-exec
(Event B1H, Pentium II, Pentium III) 実行した MMX 飽和命令の数をカウントします。
p6-mmx-uops-exec
(Event B2H, Pentium II, Pentium III) 実行した MMX マイクロオペレーション (ops) の数をカウントします。
p6-mul
(Event 12H) 論理的な乗算を含む整数と浮動小数点の乗数の数を数えます。このイベントは、カウンタ 1 でのみ割り付けられます。
p6-partial-rat-stalls
(Event D2H) 部分的なストールのためのサイクルまたはイベントの数をカウントします。
p6-resource-stalls
(Event A2H) 任意の種類のストールに関連するリソースがあったサイクルの数をカウントします。
p6-ret-seg-renames
(Event D6H, Pentium II, Pentium III) リタイアしたイベントの名前を変えたセグメントレジスタの数をカウントします。
p6-sb-drains
(Event 04H) 格納バッファが消耗するサイクルの数をカウントします。
p6-seg-reg-renames [ ,umask=qualifier]
(Event D5H, Pentium II, Pentium III) 名前を変えたセグメントレジスタの数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

ds
セグメントレジスタ DS の改名をカウントします。
es
セグメントレジスタ ES の改名をカウントします。
fs
セグメントレジスタ FS の改名をカウントします。
gs
セグメントレジスタ GS の改名をカウントします。

デフォルトは、すべてのセグメントレジスタに影響する操作をカウントすることです。

p6-seg-rename-stalls
(Event D4H, Pentium II, Pentium III) セグメントレジスタ改名のストールの数をカウントします。追加の修飾子が指定されるかもしれません、そして‘ +’文字で区切られた次のキーワードのリストから成ります:

ds
セグメントレジスタ DS のストールをカウントします。
es
セグメントレジスタ ES のストールをカウントします。
fs
セグメントレジスタ FS のストールをカウントします。
gs
セグメントレジスタ GS のストールをカウントします。

デフォルトは、すべてのセグメントレジスタに影響する操作をカウントすることです。

p6-segment-reg-loads
(Event 06H) セグメントレジスタロードの数をカウントします。
p6-uops-retired
(Event C2H) リタイアしたマイクロオペレーション (ops) の数をカウントします。

イベント名の別名

次のテーブルは、 Performance Counters Library (libpmc, -lpmc) と使用される基本的なハードウェアイベントによってサポートされた PMC から独立している別名の間のマッピングを表示しています。
Alias Event
branches p6-br-inst-retired
branch-mispredicts p6-br-miss-pred-retired
dc-misses p6-dcu-lines-in
ic-misses p6-ifu-fetch-miss
instructions p6-inst-retired
interrupts p6-hw-int-rx
unhalted-cycles p6-cpu-clk-unhalted

歴史

pmc ライブラリは、 FreeBSD 6.0 ではじめて登場しました。

作者

Performance Counters Library (libpmc, -lpmc) ライブラリは、 Joseph Koshy <jkoshy@FreeBSD.org>によって書かれました。
October 4, 2008 FreeBSD