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

名称

pmc.sandybridgexeonIntel Sandy Bridge Xeon ファミリ CPU のための測定イベント

ライブラリ

Performance Counters Library (libpmc, -lpmc)

書式

#include < pmc.h>

解説

Intel Sandy Bridge Xeon CPU は、 Intel 性能測定アーキテクチャのバージョン 2 に適合する PMC を含んでいます。これらの CPU は、2 つまでのクラスの PMC を含んでいます:
PMC_CLASS_IAF
1 つのカウンタごとに 1 つのハードウェアイベントだけカウントする固定関数カウンタ。
PMC_CLASS_IAP
定義されたハードウェアイベントのセットの 1 つをカウントするために設定されるプログラマブルカウンタ。

各クラスで利用可能な PMC の数とそれらの幅は、 pmc_cpuinfo(3) を呼び出すことによって実行時に決定される必要があります。

Intel Sandy Bridge Xeon PMC は、次に文書化されています。 Volume 3B: System Programming Guide, Part 2, Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Order Number: 253669-043US, Intel Corporation, August 2012.

SANDYBRIDGE XEON 固定関数 PMC

これらの PMC とそれらのサポートイベントは、 pmc.iaf(3) に文書化されています。

SANDYBRIDGE XEON プログラマブル PMC

プログラマブル PMC は、次のケーパビリティをサポートしています:
ケーパビリティ サポート
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

イベント修飾子

これらの PMC のためのイベント指定子は、次の共通の修飾子をサポートしています:
rsp= value
オフコアレスポンス (Off-core Response) ビットを設定します。
REQ_DMND_DATA_RD
デマンドデータページテーブルエントリキャッシュラインの読み込みと同様に、デマンドと十分な DCU プリフェッチデータ読み込みと部分的なキャッシュラインの数をカウントします。 L2 データ読み込みプリフェッチまたは命令フェッチをカウントしません。
REQ_DMND_RFO
デマンドとデータキャッシュラインへの書き込みによって生成される所有権 (RFO) 要求のための DCU プリフェッチ読み込みをカウントします。 L2 RFO プリフェッチをカウントしません。
REQ_DMND_IFETCH
デマンドと DCU プリフェッチ命令キャッシュライン読み込みをカウントします。 L2 コード読み込みプリフェッチをカウントしません。
REQ_WB
(排他的に修正される) ライトバックトランザクションの数をカウントします。
REQ_PF_DATA_RD
L2 プリフェッチャによって生成されるデータキャッシュライン読み込みの数をカウントします。
REQ_PF_RFO
L2 プリフェッチャによって生成される RFO 要求の数をカウントします。
REQ_PF_IFETCH
L2 プリフェッチャによって生成されるコード読み込みの数をカウントします。
REQ_PF_LLC_DATA_RD
ロードのための L3 への L2 プリフェッチャ。
REQ_PF_LLC_RFO
L2 プリフェッチャによって生成される RFO 要求.
REQ_PF_LLC_IFETCH
命令フェッチのための L3 への L2 プリフェッチャ。
REQ_BUS_LOCKS
バスロックとスプリット (split) ロック要求。
REQ_STRM_ST
ストリーミング格納要求。
REQ_OTHER
I/O を含む、IDI をクロスする他の要求。
RES_ANY
任意の応答タイプのためのすべての値をキャッチする。
RES_SUPPLIER_NO_SUPP
利用可能なサプライヤ情報なし。
RES_SUPPLIER_LLC_HITM
L3 の M-状態の初期検索 stat。
RES_SUPPLIER_LLC_HITE
E-状態。
RES_SUPPLIER_LLC_HITS
S-状態。
RES_SUPPLIER_LLC_HITF
F-状態。
RES_SUPPLIER_LOCAL
ローカル DRAM コントローラ。
RES_SNOOP_SNP_NONE
snoop 関連の情報の詳細なし、
RES_SNOOP_SNP_NO_NEEDED
snoop は、要求を満たすために必要ではありませんでした。
RES_SNOOP_SNP_MISS
snoop は、必要で、それは、すべての snoop されたキャッシュをミスしました。 -LLC ヒットについて、ReslHitl は、すべてのコアによって返されました。 -LLC ミスについて、Rspl は、すべてのソケットによって返され、データは、DRAM から返されました。
RES_SNOOP_HIT_NO_FWD
snoop は、必要でした、それは、少なくとも 1 つの snoop されたキャッシュでヒットします。ヒットは、キャッシュラインが snoop 効果の前に有効だったことを示します。これは、次のものを含んでいます: -Snoop Hit w/ Invalidation (LLC Hit, RFO)。 -Snoop Hit, Left Shared (LLC Hit/Miss, IFetch/Data_RD)。 -Snoop Hit w/ Invalidation と No Forward (LLC Miss, RFO Hit S)。 LLC ミスの場合に、データは、DRAM から返されます。
RES_SNOOP_HIT_FWD
snoop は、必要でした、データは、リモートのソケットから転送されました。これは、次のものを含んでいます: -Snoop Forward Clean, Left Shared (LLC Hit/Miss, IFetch/Data_RD/RFT)。
RES_SNOOP_HITM
snoop は、必要とされました、それは、ローカルまたはリモートキャッシュで HitM でした。 HitM は、キャッシュラインが snoop の結果として効果の前に修正された状態だったことを示します。これは、次のものを含んでいます: -Snoop HitM w/ WB (LLC miss, IFetch/Data_RD)。 -Snoop Forward Modified w/ Invalidation (LLC Hit/Miss, RFO)。 -Snoop MtoS (LLC Hit, IFetch/Data_RD)。
RES_NON_DRAM
ターゲットは、非 DRAM システムアドレスでした。これは、MMIO トランザクションを含んでいます。
cmask= value
1 サイクルで測定されたイベントを設定する数が value 以上である場合のみ、増加する PMC を設定します。
edge
他の修飾子によって表現された条件のアサートされた遷移にデアサートの数をカウントする PMC を設定します。指定されるなら、カウンタは、条件が真である間のロックの数に関係なく、条件が真になるときはいつでも一度だけ増加されます。
inv
サイクルごとのイベントの数が“ cmask”修飾子によって指定された値未満であるとき、カウンタを増加させ、“ cmask”修飾子が存在するとき、比較の意味を逆にします。
os
プロセッサの特権レベル 0 で起こるイベントをカウントするための PMC を設定します。
usr
特権レベル 1、2 または 3 で起こるイベントをカウントするための PMC を設定します。

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

イベント指定子 (プログラマブル PMC)

Sandy Bridge Xeon プログラマブル PMC は、次のイベントをサポートします:
LD_BLOCKS.DATA_UNKNOWN
(Event 03H, Umask 01H) 未知のデータでブロックされたバッファを格納するためのブロックされたロード。
LD_BLOCKS.STORE_FORWARD
(Event 03H, Umask 02H) 転送されない格納バッファでオーバラップすることによってブロックされたロード。
LD_BLOCKS.NO_SR
(Event 03H, Umask 08H) 利用可能でないリソースのためにブロックされたスプリットのロードの数。
LD_BLOCKS.ALL_BLOCK
(Event 03H, Umask 10H) 任意のロードがブロックされるが、DCU ミスがない場合の数。
MISALIGN_MEM_REF.LOADS
(Event 05H, Umask 01H) L1D にディスパッチされた投機的なキャッシュラインのスプリットロード uops。
MISALIGN_MEM_REF.STORES
(Event 05H, Umask 02H) L1D にディスパッチされた投機的なキャッシュラインのスプリット格納アドレス uops。
LD_BLOCKS_PARTIAL.ADDRESS_ALIAS
(Event 07H, Umask 01H) アドレスの部分的な比較のための MOB の誤りの依存性。
LD_BLOCKS_PARTIAL.ALL_STALL_BLOCK
(Event 07H, Umask 08H) ロード演算が、まだ知られていないアドレスでより古い格納のために一時的にブロックされる回数。ロード演算は、このタイプの 2 つ以上のブロックを incur (増加?) します。
TLB_LOAD_MISSES.MISS_CAUSES_A_WALK
(Event 08H, Umask 01H) 任意のページサイズのページウォークを引き起こす、すべての TLB レベルでのミス。
TLB_LOAD_MISSES.WALK_COMPLETED
(Event 08H, Umask 02H) 任意のサイズの完了したページウォークを引き起こす、すべての TLB レベルのミス。
DTLB_LOAD_MISSES.WALK_DURATION
(Event 08H, Umask 04H) サイクル PMH は、ウォークでビジー (busy)。
DTLB_LOAD_MISSES.STLB_HIT
(Event 08H, Umask 10H) キャッシュロード STLB ヒットの数。ページウォークなし。
INT_MISC.RECOVERY_CYCLES
(Event 0DH, Umask 03H) マシンクリア (Machine Clears) または EClear の後の復旧するためにウェートするサイクル。 Cmask=1 に設定します。
INT_MISC.RAT_STALL_CYCLES
(Event 0DH, Umask 40H) サイクル RAT external ストール (stall) は、このスレッドのために IDQ に送られます。
UOPS_ISSUED.ANY
(Event 0EH, Umask 01H) RAT から RS によって発行された Uops の各サイクルの数を増加します。このコアのストールされたサイクルをカウントするために、 Cmask=1、Inv=1、Any=1 を設定します。
FP_COMP_OPS_EXE.X87
(Event 10H, Umask 01H) 実行された X87 uops の数をカウントします。
FP_COMP_OPS_EXE.SSE_FP_PACKED_DOUBLE
(Event 10H, Umask 10H) 実行された SSE* 倍精度 FP パックされた uops の数をカウントします。
FP_COMP_OPS_EXE.SSE_FP_SCALAR_SINGLE
(Event 10H, Umask 20H) 実行された SSE* 単精度 FP スカラ uops の数をカウントします。
FP_COMP_OPS_EXE.SSE_PACKED_SINGLE
(Event 10H, Umask 40H) 実行された SSE* 単精度 FP パックされた uops の数をカウントします。
FP_COMP_OPS_EXE.SSE_SCALAR_DOUBLE
(Event 10H, Umask 80H) 実行された SSE* 倍精度 FP スカラ uops の数をカウントします。
SIMD_FP_256.PACKED_SINGLE
(Event 11H, Umask 01H) 256 ビットパックされた単精度浮動小数点命令をカウントします。
SIMD_FP_256.PACKED_DOUBLE
(Event 11H, Umask 02H) 256 ビットパックされた倍精度浮動小数点命令をカウントします。
ARITH.FPU_DIV_ACTIVE
(Event 14H, Umask 01H) INT と FP を含んで、除算器 (divider) がアクティブであるサイクル。除算器の数をカウントするために 'edge=1, cmask=1' に設定します。
INSTS_WRITTEN_TO_IQ.INSTS
(Event 17H, Umask 01H) IQ のすべてのサイクルに書き込まれた命令の数をカウントします。
L2_RQSTS.DEMAND_DATA_RD_HIT
(Event 24H, Umask 01H) L2 キャッシュをヒットするデマンドデータ読み込み (Demand Data Read) 要求。
L2_RQSTS.ALL_DEMAND_DATA_RD
(Event 24H, Umask 03H) あらゆる要求と L2 への L1 HW プリフェッチデータロードをカウントします。
L2_RQSTS.RFO_HITS
(Event 24H, Umask 04H) L2 キャッシュをヒットする格納 RFO 要求の数をカウントします。
L2_RQSTS.RFO_MISS
(Event 24H, Umask 08H) L2 キャッシュをミスする格納 RFO 要求の数をカウントします。
L2_RQSTS.ALL_RFO
(Event 24H, Umask 0CH) すべての L2 格納 RFO 要求をカウントします。
L2_RQSTS.CODE_RD_HIT
(Event 24H, Umask 10H) L2 キャッシュをヒットする命令フェッチの数。
L2_RQSTS.CODE_RD_MISS
(Event 24H, Umask 20H) L2 キャッシュをミスした命令フェッチの数。
L2_RQSTS.ALL_CODE_RD
(Event 24H, Umask 30H) すべての L2 コード要求をカウントします。
L2_RQSTS.PF_HIT
(Event 24H, Umask 40H) L2 をヒットした L2 ハードウェアプリフェッチャからの要求。
L2_RQSTS.PF_MISS
(Event 24H, Umask 80H) L2 をミスした L2 ハードウェアアプリフェッチャからの要求。
L2_RQSTS.ALL_PF
(Event 24H, Umask C0H) L2 ハードウェアプリフェッチャからの任意の要求。
L2_STORE_LOCK_RQSTS.MISS
(Event 27H, Umask 01H) キャッシュラインをミスした RO。
L2_STORE_LOCK_RQSTS.HIT_E
(Event 27H, Umask 04H) E 状態でキャッシュラインをヒットした RFO。
L2_STORE_LOCK_RQSTS.HIT_M
(Event 27H, Umask 08H) M 状態でキャッシュラインをヒットした RFO。
L2_STORE_LOCK_RQSTS.ALL
(Event 27H, Umask 0FH) あらゆる状態でキャッシュラインをアクセスする RFO。
L2_L1D_WB_RQSTS.MISS
(Event 28H, Umask 01H) L2 をミスした L1D から L2 キャッシュラインまでリジェクトされたライトバックなし。
L2_L1D_WB_RQSTS.HIT_S
(Event 28H, Umask 02H) S 状態の L1D から L2 キャッシュラインまでリジェクトされないライトバック。
L2_L1D_WB_RQSTS.HIT_E
(Event 28H, Umask 04H) E 状態の L1D から L2 キャッシュラインまでリジェクトされないライトバック。
L2_L1D_WB_RQSTS.HIT_M
(Event 28H, Umask 08H) M 状態の L1D から L2 キャッシュラインまでリジェクトされないライトバック。
L2_L1D_WB_RQSTS.ALL
(Event 28H, Umask 0FH) L1D から L2 キャッシュまでのリジェクトされないライトバック。
LONGEST_LAT_CACHE.REFERENCE
(Event 2EH, Umask 4FH) このイベントは、最後のレベルのキャッシュのキャッシュラインを参照するコアから始まる要求をカウントします。
LONGEST_LAT_CACHE.MISS
(Event 2EH, Umask 41H) このイベントは、最後のレベルのキャッシュへの参照のための各キャッシュミス条件をカウントします。
CPU_CLK_UNHALTED.THREAD_P
(Event 3CH, Umask 00H) スレッドが停止 (halt) 状態でない間にスレッドのサイクルの数をカウントします。スレッドは、HLT 命令を実行しているとき、停止 (halt) 状態に入ります。コア周波数は、電源または熱の絞りのために時々変わるかもしれません。
CPU_CLK_THREAD_UNHALTED.REF_XCLK
(Event 3CH, Umask 01H) 停止 (halt) されなかったとき、XCLK (100MHz) の周波数を増加します。
L1D_PEND_MISS.PENDING
(Event 48H, Umask 01H) すべてのサイクルの未解決の L1D ミスの数を増加します。発生をカウントするために Cmaks=1 と Edge=1 を設定します。
DTLB_STORE_MISSES.MISS_CAUSES_A_WALK
(Event 49H, Umask 01H) あらゆるページサイズ (4K/2M/4M/1G) のページウォーク (page walk) を引き起こすすべての TLB レベルのミス。
DTLB_STORE_MISSES.WALK_COMPLETED
(Event 49H, Umask 02H) あらゆるページサイズ (4K/2M/4M/1G) の完了するページウォーク (page walk) を引き起こすすべての TLB レベルのミス。
DTLB_STORE_MISSES.WALK_DURATION
(Event 49H, Umask 04H) サイクル PMH は、このウォークでビジーです。
DTLB_STORE_MISSES.STLB_HIT
(Event 49H, Umask 10H) 最初の TLB レベルをミスする格納演算ですが、second をヒットし、ページウォークを引き起こさしません。
LOAD_HIT_PRE.SW_PF
(Event 4CH, Umask 01H) S/W プリフェッチのための割り付けられた満杯のバッファをヒットする SW プリフェッチでないロードのディスパッチ。
LOAD_HIT_PER.HW_PF
(Event 4CH, Umask 02H) H/W プリフェッチのための割り付けられた満杯のバッファをヒットする SW プリフェッチでないロードのディスパッチ。
HW_PRE_REQ.DL1_MISS
(Event 4EH, Umask 02H) L1D キャッシュをミスするハードウェアプリフェッチ要求。要求は、ブロックが適用可能であるなら、または例えば、満杯のバッファをヒットするならを含んで、キャッシュをアクセスし、それをミスするたびにカウントされます。
L1D.REPLACEMENT
(Event 51H, Umask 01H) L1 データキャッシュにもたらされるラインの数をカウントします。
L1D.ALLOCATED_IN_M
(Event 51H, Umask 02H) 修正された L1D キャッシュラインの割り付けの数をカウントします。
L1D.EVICTION
(Event 51H, Umask 04H) 置換のために L1 データキャッシュから退去された修正されたラインの数をカウントします。
L1D.ALL_M_REPLACEMENT
(Event 51H, Umask 08H) Snoop HitM または汚いライン置換のために L1D の退去された M 状態のキャッシュライン。
PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP
(Event 59H, Umask 0CH) フライト (flight) の各サイクルで、フラグマージ (flags-merge) uops の数を増加します。サイクルをカウントするために Cmask=1 に設定します。
PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW
(Event 59H, Umask 0FH) 少なくとも割り付けられた 1 つの遅い LEA uop があるサイクル。
PARTIAL_RAT_STALLS.MUL_SINGLE_UOP
(Event 59H, Umask 40H) 割り付けられた乗算 (Multiply) のパックされた/スカラ単精度 uops の数。
RESOURCE_STALLS2.ALL_FL_EMPTY
(Event 5BH, Umask 0CH) 空のリストを解放するためにストールされたサイクル。
RESOURCE_STALLS2.ALL_PRF_CONTROL
(Event 5BH, Umask 0FH) 物理的なレジスタのために満杯の制御を構造のためにストール (stall) したサイクル。
RESOURCE_STALLS2.BOB_FULL
(Event 5BH, Umask 40H) Cycles Allocator は、Branch Order Buffer のためにストール (stall) されました。
RESOURCE_STALLS2.OOO_RSRC
(Event 5BH, Umask 4FH) 満杯のリソースの異常のためにストール (stall) したサイクル。
CPL_CYCLES.RING0
(Event 5CH, Umask 01H) スレッドがリング 0 にあるとき、停止されていないコアサイクル。
CPL_CYCLES.RING123
(Event 5CH, Umask 02H) スレッドがリング 0 にないとき、停止されていないコアサイクル。
RS_EVENTS.EMPTY_CYCLES
(Event 5EH, Umask 01H) RS がスレッドのために空であるサイクル。
OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD
(Event 60H, Umask 01H) uncore への SQ の Offcore 未解決 Demand Data Read トランザクション。サイクルをカウントするために Cmask=1 に設定します。
OFFCORE_REQUESTS_OUTSTANDING.DEMAND_RFO
(Event 60H, Umask 04H) uncore への SQ の Offcore 未解決 RFO 格納トランザクション。サイクルをカウントするために Cmask=1 に設定します。
OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD
(Event 60H, Umask 08H) uncore への SQ の Offcore 未解決キャッシュ可能なデータ読み込みトランザクション。サイクルをカウントするために Cmask=1 に設定します。
LOCK_CYCLES.SPLIT_LOCK_UC_LOCK_DURATION
(Event 63H, Umask 01H) UC ロックまたは split ロックのために L1D と L2 がロックされるサイクル。
LOCK_CYCLES.CACHE_LOCK_DURATION
(Event 63H, Umask 02H) L1D がロックされるサイクル。
IDQ.EMPTY
(Event 79H, Umask 02H) IDQ が空であるサイクルをカウントします。
IDQ.MITE_UOPS
(Event 79H, Umask 04H) MITE パスから IDQ に配信された uops の各サイクルの数を増加します。サイクルをカウントするために Cmask=1 に設定します。
IDQ.DSB_UOPS
(Event 79H, Umask 08H) 各サイクルを増加します。 DSB パスから IDQ に配信される uops の数。サイクルをカウントするために Cmask=1 に設定します。
IDQ.MS_DSB_UOPS
(Event 79H, Umask 10H) DSB によって MS ビジーのとき、IDQ に配信された uops の各サイクルの数を増加します。 MS がビジーのサイクルをカウントするために Cmask=1 に設定します。 MS の活性化をカウントするために Cmask=1 と Edge=1 に設定します。
IDQ.MS_MITE_UOPS
(Event 79H, Umask 20H) MITE によって MS がビジーのとき、IDQ に配信された uops の各サイクルの数を増加します。サイクルをカウントするために Cmask=1 に設定します。
IDQ.MS_UOPS
(Event 79H, Umask 30H) DSB または MITE のいずれかによって MS から IDQ に配信された uops の各サイクルの数を増加します。サイクルをカウントするために Cmask=1 に設定します。
ICACHE.MISSES
(Event 80H, Umask 02H) Instruction Cache、Streaming Buffer と Victim Cache Misses の数。 UC アクセスを含みます。
ITLB_MISSES.MISS_CAUSES_A_WALK
(Event 85H, Umask 01H) ページウォーク (page walk) を引き起こす、すべての ITLB レベルのミス。
ITLB_MISSES.WALK_COMPLETED
(Event 85H, Umask 02H) 完了したページウォーク (page walk) を引き起こす、すべての ITLB レベルのミス。
ITLB_MISSES.WALK_DURATION
(Event 85H, Umask 04H) PMH がウォーク (page walk) でビジーのサイクル。
ITLB_MISSES.STLB_HIT
(Event 85H, Umask 10H) キャッシュロード STLB ヒットの数。ページウォーク (page walk) なし。
ILD_STALL.LCP
(Event 87H, Umask 01H) 命令の接頭辞の長さの変更により引き起こされたストール (stall)。
ILD_STALL.IQ_FULL
(Event 87H, Umask 04H) IQ が満杯のためにストール (stall) したサイクル。
BR_INST_EXEC.COND
(Event 88H, Umask 01H) 実行された条件 near 分岐命令を制限しますが、必ずしもリタイア (retire) しません。
BR_INST_EXEC.DIRECT_JMP
(Event 88H, Umask 02H) call と間接分岐を除いて、すべての無条件の near 分岐命令を制限します。
BR_INST_EXEC.INDIRECT_JMP_NON_CALL_RET
(Event 88H, Umask 04H) call でも return でもない、実行される間接 near 分岐命令を制限します。
BR_INST_EXEC.RETURN_NEAR
(Event 88H, Umask 08H) return ニーモニックがある間接 near 分岐を制限します。
BR_INST_EXEC.DIRECT_NEAR_CALL
(Event 88H, Umask 10H) 実行された call 分岐でないものを除いて、無条件の near call 分岐命令を制限します。
BR_INST_EXEC.INDIRECT_NEAR_CALL
(Event 88H, Umask 20H) 実行されたレジスタとメモリ間接の両方を含んでいる間接 near call を制限します。
BR_INST_EXEC.NONTAKEN
(Event 88H, Umask 40H) 実行された non-taken near 分岐を制限します。
BR_INST_EXEC.TAKEN
(Event 88H, Umask 80H) 実行された taken near 分岐を制限します。
BR_INST_EXE.ALL_BRANCHES
(Event 88H, Umask FFH) (必ずしもリタイアされない) 実行されたすべての near 分岐をカウントします
BR_MISP_EXEC.COND
(Event 89H, Umask 01H) 予測ミスされた条件付き near 分岐命令を制限します。
BR_MISP_EXEC.INDIRECT_JMP_NON_CALL_RET
(Event 89H, Umask 04H) call でも return でもない、予測ミスされた間接 near 分岐命令を制限します。
BR_MISP_EXEC.RETURN_NEAR
(Event 89H, Umask 08H) return ニーモニックがある予測ミスされた間接 near 分岐を制限します。
BR_MISP_EXEC.DIRECT_NEAR_CALL
(Event 89H, Umask 10H) 実行された、non call 分岐を除いて、予測ミスされた無条件 near call 分岐命令を制限します。
BR_MISP_EXEC.INDIRECT_NEAR_CALL
(Event 89H, Umask 20H) 実行された、レジスタとメモリ間接の両方を含めて、予測ミスされた間接 near call を制限します。
BR_MISP_EXEC.NONTAKEN
(Event 89H, Umask 40H) 実行された予測ミスされた non-taken near 分岐を制限します。
BR_MISP_EXEC.TAKEN
(Event 89H, Umask 80H) 実行された予測ミスされた taken near 分岐を制限します。 umask 01H、02H、04H、08H、10H、20H と組み合わせなければなりません。
BR_MISP_EXEC.ALL_BRANCHES
(Event 89H, Umask FFH) (必ずしもリタイアされない) すべての near 実行された分岐をカウントします。
IDQ_UOPS_NOT_DELIVERED.CORE
(Event 9CH, Umask 01H) スレッドごとの RAT に配信されない uops の数をカウントします。
UOPS_DISPATCHED_PORT.PORT_0
(Event A1H, Umask 01H) Uop がポート 0 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_1
(Event A1H, Umask 02H) Uop がポート 1 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_2_LD
(Event A1H, Umask 04H) ロード uop がポート 2 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_2_STA
(Event A1H, Umask 08H) 格納アドレス uop がポート 2 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_2
(Event A1H, Umask 0CH) Uop がポート 2 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_3_LD
(Event A1H, Umask 10H) ロード uop がポート 3 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_3_STA
(Event A1H, Umask 20H) 格納アドレス uop がポート 3 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_3
(Event A1H, Umask 30H) Uop がポート 3 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_4
(Event A1H, Umask 40H) Uop がポート 4 でディスパッチされるサイクル。
UOPS_DISPATCHED_PORT.PORT_5
(Event A1H, Umask 80H) Uop がポート 5 でディスパッチされるサイクル。
RESOURCE_STALLS.ANY
(Event A2H, Umask 01H) 割り付けが Resource Related の理由のためにストールされたサイクル。
RESOURCE_STALLS.LB
(Event A2H, Umask 01H) ロードバッファの不足のためのストールのサイクルをカウントします。
RESOURCE_STALLS.RS
(Event A2H, Umask 04H) 利用可能な適任でない RS エントリのためにストールされたサイクル。
RESOURCE_STALLS.SB
(Event A2H, Umask 08H) 利用可能な格納バッファがないためにストールされたサイクル。 (ドレイン (drain) 形式 sync を含まない)。
RESOURCE_STALLS.ROB
(Event A2H, Umask 10H) re-order バッファ満杯のためにストールされたサイクル。
RESOURCE_STALLS.FCSW
(Event A2H, Umask 20H) FPU 制御ワードを書き込むためにストールされたサイクル。
RESOURCE_STALLS.MXCSR
(Event A2H, Umask 40H) 前の MXCSR 改名をクローズするために生じる MXCSR レジスタ改名のためにストールされたサイクル。
RESOURCE_STALLS.OTHER
(Event A2H, Umask 80H) 実行が、他のリソース問題のためにストールされた間にストールされたサイクル。
CYCLE_ACTIVITY.CYCLES_L2_PENDING
(Event A3H, Umask 01H) 未解決の L2 ミスロードがあるサイクル。コアごとにカウントするために AnyThread を設定します。
CYCLE_ACTIVITY.CYCLES_L1D_PENDING
(Event A3H, Umask 02H) コアごとにカウントするために未解決の L1 キャッシュミス loads.Set AnyThread があるサイクル。
CYCLE_ACTIVITY.CYCLES_NO_DISPATCH
(Event A3H, Umask 04H) ディスパッチストールののサイクル。コアごとにカウントするために AnyThread を設定します。
DSB2MITE_SWITCHES.COUNT
(Event ABH, Umask 01H) MITE スイッチへの DSB の数。
DSB2MITE_SWITCHES.PENALTY_CYCLES
(Event ABH, Umask 02H) 遅延を引き起こした MITE スイッチへの DSB のサイクル。
DSB_FILL.OTHER_CANCEL
(Event ACH, Umask 02H) 異常な方法の制限のためでない有効な DSB 満杯の取り消しの状況。
DSB_FILL.EXCEED_DSB_LINES
(Event ACH, Umask 08H) > 3 DSB ラインに遭遇した DSB Fill。
DSB_FILL.ALL_CANCEL
(Event ACH, Umask 0AH) 異常な方法の制限のためでない有効な Decode Stream Buffer (DSB) 満杯の取り消しの状況。
ITLB.ITLB_FLUSH
(Event AEH, Umask 01H) 4k/2M/4M ページを含む、ITLB フラッシュの数をカウントします。
OFFCORE_REQUESTS.DEMAND_DATA_RD
(Event B0H, Umask 01H) uncore に送られたデマンドデータ読み込み要求。
OFFCORE_REQUESTS.DEMAND_RFO
(Event B0H, Umask 04H) 正規の RFO、locks、ItoM を含む、uncore に送られたデマンド RFO 読み込み要求。
OFFCORE_REQUESTS.ALL_DATA_RD
(Event B0H, Umask 08H) uncore に送られたデータ読み込み要求 (デマンドとプリフェッチ)。
UOPS_DISPATCHED.THREAD
(Event B1H, Umask 01H) ディスパッチされたスレッドごとの各サイクルのための uops の合計数をカウントします。ストールサイクルをカウントするために Cmask=1, INV=1 に設定します。
UOPS_DISPATCHED.CORE
(Event B1H, Umask 02H) ディスパッチされた core ごとの各サイクルのために uops の合計数をカウントします。
OFFCORE_REQUESTS_BUFFER.SQ_FULL
(Event B2H, Umask 01H) このスレッドコアのためにより多くのエントリをとることができない Offcore 要求バッファ。
AGU_BYPASS_CANCEL.COUNT
(Event B6H, Umask 01H) すべての次の特性がある実行された load 演算をカウントします: 1. format [base + offset] のアドレシング、 2. オフセットは、1 と 2047 の間です、 3. ベースレジスタで指定されたアドレスは、1 つのページにあり、アドレス [base+offset] は、別のページにあります。
OFF_CORE_RESPONSE_0
(Event B7H, Umask 01H) Off-core Response Performance Monitoring (Off-core レスポンス性能監視)。 PMC0 のみ。プログラミング MSR 01A6H を要求します。
OFF_CORE_RESPONSE_1
(Event BBH, Umask 01H) Off-core Response Performance Monitoring (Off-core レスポンス性能監視)。 PMC3 のみ。プログラミング MSR 01A7H を要求します。
TLB_FLUSH.DTLB_THREAD
(Event BDH, Umask 01H) スレッド特有のエントリの DTLB フラッシュの試み。
TLB_FLUSH.STLB_ANY
(Event BDH, Umask 20H) STLB フラッシュの試みの数をカウントします。
L1D_BLOCKS.BANK_CONFLICT_CYCLES
(Event BFH, Umask 05H) ディスパッチされたロードが他のロードポートと矛盾する L1D bank のために取り消されるときのサイクル。
INST_RETIRED.ANY_P
(Event C0H, Umask 00H) リタイアメント (retirement) での命令の数。
INST_RETIRED.ALL
(Event C0H, Umask 01H) IP 配信の PEBS shadow の影響を縮小する HW がある正確な命令リタイアされたイベント。
OTHER_ASSISTS.ITLB_MISS_RETIRED
(Event C1H, Umask 02H) ITLB ミスを経験した命令。
OTHER_ASSISTS.AVX_STORE
(Event C1H, Umask 08H) 256 ビットの AVX 格納演算に関連するアシストの数。
OTHER_ASSISTS.AVX_TO_SSE
(Event C1H, Umask 10H) 適用可能なペナルティのとき、AVX-256 から古い SSE までの遷移の数。
OTHER_ASSISTS.SSE_TO_AVX
(Event C1H, Umask 20H) 適用可能なペナルティのとき、SSE から AVX-256 までの遷移の数。
UOPS_RETIRED.ALL
(Event C2H, Umask 01H) リタイアされた micro-ops の数をカウントします。 cmask=1 を使用し、アクティブなサイクルまたはストールされたサイクルのカウントを逆にします。
UOPS_RETIRED.RETIRE_SLOTS
(Event C2H, Umask 02H) 各サイクルを使用するスロットのリタイアメントの数をカウントします。
MACHINE_CLEARS.MEMORY_ORDERING
(Event C3H, Umask 02H) メモリ順序が矛盾するためにクリアするマシンの数をカウントします。
MACHINE_CLEARS.SMC
(Event C3H, Umask 04H) プログラムがコードセクションに書き込む回数をカウントします。
MACHINE_CLEARS.MASKMOV
(Event C3H, Umask 20H) 0 に設定されたマスクビットがある不正なアドレス範囲を参照する実行された AVX のマスクされた load 演算の数をカウントします。
BR_INST_RETIRED.ALL_BRANCH
(Event C4H, Umask 00H) リタイアメントでの分岐命令。
BR_INST_RETIRED.CONDITIONAL
(Event C4H, Umask 01H) リタイアされた条件分岐命令の数をカウントします。
BR_INST_RETIRED.NEAR_CALL
(Event C4H, Umask 02H) リタイアされた直接と間接 near call 命令。
BR_INST_RETIRED.ALL_BRANCHES
(Event C4H, Umask 04H) リタイアされた分岐命令の数をカウントします。
BR_INST_RETIRED.NEAR_RETURN
(Event C4H, Umask 08H) リタイアされた near return 命令の数をカウントします。
BR_INST_RETIRED.NOT_TAKEN
(Event C4H, Umask 10H) リタイアされた not taken 分岐命令の数をカウントします。
BR_INST_RETIRED.NEAR_TAKEN
(Event C4H, Umask 20H) リタイアされた near taken 分岐の数。
BR_INST_RETIRED.FAR_BRANCH
(Event C4H, Umask 40H) リタイアされた far 分岐の数。
BR_MISP_RETIRED.ALL_BRANCHES
(Event C5H, Umask 00H) リタイアメントでの予測ミスされた分岐命令。
BR_MISP_RETIRED.CONDITIONAL
(Event C5H, Umask 01H) リタイアされた予測ミスされた条件分岐命令。
BR_MISP_RETIRED.NEAR_CALL
(Event C5H, Umask 02H) リタイアされた直接と間接の予測ミスされた near call 命令。
BR_MISP_RETIRED.ALL_BRANCHES
(Event C5H, Umask 04H) リタイアされた予測ミスされた macro 分岐命令。
BR_MISP_RETIRED.NOT_TAKEN
(Event C5H, Umask 10H) リタイアされた予測ミスされた not taken 分岐命令。
BR_MISP_RETIRED.TAKEN
(Event C5H, Umask 20H) リタイアされた予測ミスされた taken 分岐命令。
FP_ASSIST.X87_OUTPUT
(Event CAH, Umask 02H) 値を出力するための X87 アシストの数。
FP_ASSIST.X87_INPUT
(Event CAH, Umask 04H) 値を入力するための X87 アシストの数。
FP_ASSIST.SIMD_OUTPUT
(Event CAH, Umask 08H) 値を出力するための SIMD FP アシストの数。
FP_ASSIST.SIMD_INPUT
(Event CAH, Umask 10H) 値を入力するための SIMD FP アシストの数。
FP_ASSIST.ANY 1EH
(Event CAH, Umask) あらゆる入力/出力 SSE* または FP アシストがあるサイクル。
ROB_MISC_EVENTS.LBR_INSERTS
(Event CCH, Umask 20H) ハードウェアによって新しい LBR レコードを保存する状況をカウントします。
MEM_TRANS_RETIRED.LOAD_LATENCY
(Event CDH, Umask 01H) 指定されたレイテンシ (latency) しきい値があるサンプルのロード。 PMC3 のみ。
MEM_TRANS_RETIRED.PRECISE_STORE
(Event CDH, Umask 02H) PEBS レコードによってサンプル格納と collect precise 格納演算。 PMC3 のみ。
MEM_UOP_RETIRED.LOADS
(Event D0H, Umask 10H) ロードされるリタイアされたメモリ uops を制限します。 umask 10H、20H、40H、80H と組み合わせます。
MEM_UOP_RETIRED.STORES
(Event D0H, Umask 02H) 格納されるリタイアされたメモリ uops を制限します。 umask 10H、20H、40H、80H と組み合わせます。
MEM_UOP_RETIRED.STLB_MISS
(Event D0H, Umask) STLB ミスがあるリタイアされたメモリ uops を制限します。カウントを生成するために umask 01H、02H と組み合わせなければなりません。
MEM_UOP_RETIRED.LOCK
(Event D0H, Umask) ロックがあるリタイアされたメモリ uops を制限します。カウントを生成するために umask 01H、02H と組み合わせなければなりません。
MEM_UOP_RETIRED.SPLIT
(Event D0H, Umask) ラインスピリット (split) があるリタイアされたメモリ uops を制限します。カウントを生成するために umask 01H、02H と組み合わせなければなりません。
MEM_UOP_RETIRED_ALL
(Event D0H, Umask) あらゆるリタイアされたメモリ uops を制限します。カウントを生成するために umask 01H、02H と組み合わせなければなりません。
MEM_LOAD_UOPS_RETIRED.L1_HIT
(Event D1H, Umask 01H) データソースとして L1 キャッシュヒットがあるリタイアされたロード uops。
MEM_LOAD_UOPS_RETIRED.L2_HIT
(Event D1H, Umask 02H) データソースとして L2 キャッシュヒットがあるリタイアされたロード uops。
MEM_LOAD_UOPS_RETIRED.LLC_HIT
(Event D1H, Umask 04H) データソースが要求された snoop がない LLC の data ヒットであったリタイアされたロード uops。
MEM_LOAD_UOPS_RETIRED.LLC_MISS
(Event D1H, Umask 20H) データソースがデータミスされた LLC (未知のデータソース以外の) であったリタイアされたロード uops。
MEM_LOAD_UOPS_RETIRED.HIT_LFB
(Event D1H, Umask 40H) レディ (ready) でないデータがある同じキャッシュラインへのミスに先行するためにデータソースがロード uops ミスされた L1 であるがヒット FB であるリタイアされたロード uops。
MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS
(Event D4H, Umask 02H) ロードをサービスするキャッシュのデータソースとしての未知情報があるリタイアされたロード uops。
BACLEARS.ANY
(Event E6H, Umask 01H) 主として BPU が正確な予測を提供することができないとき、フロントエンドが再操縦される回数をカウントします、またこれは、フロントエンドでのメカニズムを扱う他の分岐によって修正されます。
L2_TRANS.DEMAND_DATA_RD
(Event F0H, Umask 01H) L2 キャッシュをアクセスする Demand Data Read 要求。
L2_TRANS.RFO
(Event F0H, Umask 02H) L2 キャッシュをアクセスする RFO 要求。
L2_TRANS.CODE_RD
(Event F0H, Umask 04H) 命令をフェッチするとき、アクセスする L2 キャッシュ。
L2_TRANS.ALL_PF
(Event F0H, Umask 08H) L2 キャッシュをアクセスする L2 または LLC の HW プリフェッチ。
L2_TRANS.L1D_WB
(Event F0H, Umask 10H) L2 キャッシュをアクセスする L1D ライトバック (writeback)。
L2_TRANS.L2_FILL
(Event F0H, Umask 20H) L2 キャッシュをアクセスする L2 満杯要求。
L2_TRANS.L2_WB
(Event F0H, Umask 40H) L2 キャッシュをアクセスする L2 ライトバック (writeback)。
L2_TRANS.ALL_REQUESTS
(Event F0H, Umask 80H) L2 パイプにアクセスするトランザクション。
L2_LINES_IN.I
(Event F1H, Umask 01H) I 状態 filling L2 の L2 キャッシュライン。
L2_LINES_IN.S
(Event F1H, Umask 02H) S 状態 filling L2 の L2 キャッシュライン。
L2_LINES_IN.E
(Event F1H, Umask 04H) E 状態 filling L2 の L2 キャッシュライン。
L2_LINES-IN.ALL
(Event F1H, Umask 07H) L2 キャッシュライン filling L2。
L2_LINES_OUT.DEMAND_CLEAN
(Event F2H, Umask 01H) demand によって退去さられたクリーン L2 キャッシュライン。
L2_LINES_OUT.DEMAND_DIRTY
(Event F2H, Umask 02H) demand によって立ち退かせられた汚い L2 キャッシュライン。
L2_LINES_OUT.PF_CLEAN
(Event F2H, Umask 04H) L2 プリフェッチによって退去されたクリーン L2 キャッシュライン。
L2_LINES_OUT.PF_DIRTY
(Event F2H, Umask 08H) L2 プリフェッチによって退去さられた汚い L2 キャッシュライン。
L2_LINES_OUT.DIRTY_ALL
(Event F2H, Umask 0AH) 汚い L2 キャッシュライン filling L2。
SQ_MISC.SPLIT_LOCK
(Event F4H, Umask 10H) SQ のスプリット (split) ロック。

歴史

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

作者

Performance Counters Library (libpmc, -lpmc) ライブラリは、 Joseph Koshy <jkoshy@FreeBSD.org>によって書かれました。 Sandy Bridge Xeon マイクロアーキテクチャのサポートとは、 Hiren Panchasara <hiren.panchasara@gmail.com>によって書かれました。
October 18, 2012 FreeBSD