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

名称

pmcハードウェアの性能モニタリングカウンタにアクセスするためのライブラリ

ライブラリ

Performance Counters Library (libpmc, -lpmc)

書式

#include < pmc.h>

解説

Intel Pentium PMC は、Intel Pentium と Pentium MMX プロセッサに存在しています。これらの PMC は、次に文書化されています。 Intel 64 and IA-32 Intel(R) Architectures Software Developer's Manual, Volume 3B: System Programming Guide, Part 2, Order Number 253669-024US, Intel Corporation, August 2007.

PMC 機能

これらの CPU は、各 40 ビット幅の 2 つの PMC を含んでいます。これらの PMC は、次のケーパビリティをサポートしています:
Capability Support
PMC_CAP_CASCADE No
PMC_CAP_EDGE No
PMC_CAP_INTERRUPT No
PMC_CAP_INVERT No
PMC_CAP_READ Yes
PMC_CAP_PRECISE No
PMC_CAP_SYSTEM Yes
PMC_CAP_TAGGING No
PMC_CAP_THRESHOLD No
PMC_CAP_USER Yes
PMC_CAP_WRITE Yes

イベント修飾子

Intel Pentium PMC のためのイベント指定子は、次の共通の修飾子を持つことができます:
duration
イベントの持続時間 (クロック単位の) をカウントします。デフォルトは、イベントをカウントすることです。
os
特権レベル 0, 1 と 2 でイベントを測定します。
overflow
カウンタオーバフローでのカウンタに関連している外部のプロセッサピンについてアサートします。
usr
特権レベル 3 でイベントを測定します。

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

いくつかのイベントは、特定のカウンタで使用されるだけであり、いくつかのイベントは、MMX 命令セットをサポートするプロセッサでのみ定義されます。これらの PMC には、CPU を割り込む能力がないことに注意してください。

Intel Pentium イベント指定子

Intel Pentium PMC によってサポートされたイベント指定子は、次の通りです:
p5-any-segment-register-loaded
(Event 0FH) LDTR, GDTR, TR と IDTR を含む、任意のセグメントレジスタに書き込む数。特権レベル変更に伴う far (遠い) 制御転送とタスクスイッチは、このイベントを二度カウントします。
p5-bank-conflicts
(Event 0AH) 実際のバンク競合の数。
p5-branches
(Event 12H) 分岐、ジャンプ、call (呼び出し)、ソフトウェア割り込み、と割り込み return を含む取られる分岐と取られなかった分岐の数。
p5-breakpoint-match-on-dr0-register
(Event 23H) DR0 ブレークポイントレジスタでマッチした数。
p5-breakpoint-match-on-dr1-register
(Event 24H) DR1 ブレークポイントレジスタでマッチした数。
p5-breakpoint-match-on-dr2-register
(Event 25H) DR2 ブレークポイントレジスタでマッチした数。
p5-breakpoint-match-on-dr3-register
(Event 26H) DR3 ブレークポイントレジスタでマッチした数。
p5-btb-false-entries
(Event 3AH, Pentium MMX) BTB の偽のエントリの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-btb-hits
(Event 13H) 分岐テーブルバッファでヒットして実行された分岐の数。
p5-btb-miss-prediction-on-not-taken-branch
(Event 3AH, Pentium MMX) トークンとして取られなかった分岐を予測した BTB の回数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-bus-cycle-duration
(Event 18H) バスサイクルが進行中である間のサイクルの数。
p5-bus-ownership-latency
(Event 2AH, Pentium MMX) 要求されているバスの所有権から許可されている所有権までの時間。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-bus-ownership-transfers
(Event 2AH, Pentium MMX) バスの所有権の転送の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-bus-utilization-due-to-processor-activity
(Event 2EH, Pentium MMX) バスが、プロセッサの自体の活動のためにビジーであるクロックの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-cache-line-sharing
(Event 2CH, Pentium MMX) L1 キャッシュの共有データの線の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-cache-m-state-line-sharing
(Event 2CH, Pentium MMX) 別のプロセッサによってメモリアクセスのために M-状態の線にヒットする数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-code-cache-miss
(Event 0EH) 内部のコードのキャッシュをミスする読み込み命令の数。キャッシュ可能なミスとキャッシュ不可能なミスの両方がカウントされます。
p5-code-read
(Event 0CH) キャッシュ可能とキャッシュ不可能な領域の両方の読み込み命令の数。
p5-code-tlb-miss
(Event 0DH) 命令 TLB をミスする読み込み命令の数。キャッシュ可能とキャッシュ不可能な読み戻し (unread) がカウントされます。
p5-d1-starvation-and-fifo-is-empty
(Event 33H, Pentium MMX) FIFO が空であったので、D1 ステージの回数は、何の命令も発行できません。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-d1-starvation-and-only-one-instruction-in-fifo
(Event 33H, Pentium MMX) FIFO には、1 つの命令レディがあるので、 D1 ステージの回数は、1 つの命令だけを発行するかもしれません。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-data-cache-lines-written-back
(Event 06H) 内部と外部のスヌープ (詮索) によって引き起こされたものを含んで、書き戻される (write back) データキャッシュ線の数。
p5-data-cache-tlb-miss-stall-duration
(Event 30H, Pentium MMX) パイプラインが、データキャッシュ TLB ミスのためにストールするクロックの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-data-read
(Event 00H) 内部のデータキャッシュのヒットとミスをカウントするメモリデータ読み込みの数。 TLB ミス処理のための I/O とメモリアクセスは、含まれません。分割 (split) サイクルの読み込みは、個別にカウントされます。
p5-data-read-miss
(Event 03H) キャッシュ可能とキャッシュ不可能なアクセスをカウントする、データキャッシュをミスするメモリ読み込みアクセスの数。 TLB ミス処理の一部であるデータアクセスは、含まれません。 I/O アクセスは、含まれません。
p5-data-read-miss-or-write-miss
(Event 29H) キャッシュ可能とキャッシュ不可能なアクセスをカウントする、内部のデータキャッシュをミスするデータの読み込みと書き込みの数。 TLB ミス処理のためのデータアクセスは、カウントされません。
p5-data-read-or-write
(Event 28H) 内部のデータキャッシュのヒットとミスを含むデータの読み込みと書き込みの数。 TLB ミス処理のためのデータ読み込みは、カウントされません。
p5-data-tlb-miss
(Event 02H) データキャッシュ変換索引バッファへのミスの数。
p5-data-write
(Event 01H) 内部のデータキャッシュのヒットとミスをカウントするメモリデータ書き込みの数。 I/O は、含まれなくて、分割サイクル書き込みは、個別にカウントされます。
p5-data-write-miss
(Event 04H) キャッシュ可能とキャッシュ不可能なアクセスをカウントする、データキャッシュをミスするメモリ書き込みアクセスの数。 I/O アクセスは、カウントされません。
p5-emms-instructions-executed
(Event 2DH, Pentium MMX) 実行された EMMS 命令の数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-external-data-cache-snoop-hits
(Event 08H) 有効な線、または、データライン fill バッファ、または、書き戻し (write back) バッファの 1 つをヒットする、データキャッシュへの外部のスヌープ (snoop) の数。
p5-external-snoops
(Event 07H) コードキャッシュのヒット、データキャッシュのヒットとどちらもヒットしないスヌープ (snoop) 含む、受け付けられた外部のスヌープ (snoop) 要求の数。
p5-floating-point-stalls-duration
(Event 32H, Pentium MMX) パイプラインが、浮動小数点のフリーズのためにストールするサイクルの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-flops
(Event 22H) 浮動小数点の加算、減算、乗算、除算と平方根の数。複数の回のこのイベントをトリガする超越数 (transcendental) 命令。 0 除算を生成する命令、負の平方根、特別なオペランドとスタック例外は、カウントされません。 x87 FPU を使用する整数乗算命令は、カウントされます。
p5-full-write-buffer-stall-duration-while-executing-mmx-instructions
(Event 3BH, Pentium MMX) MMX 命令を実行するとき、パイプラインが完全な書き込みバッファのためにストールするクロックの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-hardware-interrupts
(Event 27H) 取られた INTR と NMI の割り込みの数。
p5-instructions-executed
(Event 16H) 実行された命令の数。繰り返しの前に置かれた命令は、一度だけカウントされます。 HLT 命令は、halt している状態で費やされたサイクルの数にかかかりなく、一度だけカウントされます。すべてのハードウェアとソフトウェア例外は、命令としてカウントされ、また、 fault ハンドラの呼び出しも、命令としてカウントされます。
p5-instructions-executed-v-pipe
(Event 17H) V パイプで実行した命令の数。
p5-io-read-or-write-cycle
(Event 1DH) I/O 空間に向けられたバスサイクルの数。
p5-locked-bus-cycle
(Event 1CH) ロック接頭辞、LOCK 命令、ページテーブル更新と記述子テーブル更新の理由で生じるロックされたバスサイクルの数。
p5-memory-accesses-in-both-pipes
(Event 09H) 両方のパイプで対にされた、データメモリ読み込みまたは読み込みの数。
p5-misaligned-data-memory-or-io-references
(Event 0BH) 自然な境界で整列されない、メモリ、または、I/O 読み込み、または書き込みの数。 2 バイトと 4 バイトのアクセスは、それらが、4 バイト境界と交差しているなら、整列ミスとしてカウントされます。
p5-misaligned-data-memory-reference-on-mmx-instructions
(Event 36H, Pentium MMX) MMX 命令を実行するとき、整列ミスしたデータメモリの参照の数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-mispredicted-or-unpredicted-returns
(Event 37H, Pentium MMX) 不正に予測された return または、そうでない、return の数、 RET 命令のみカウントされます。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-mmx-instruction-data-read-misses
(Event 31H, Pentium MMX) MMX 命令示データ読み込みミスの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-mmx-instruction-data-reads
(Event 31H, Pentium MMX) MMX 命令示データ読み込みの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-mmx-instruction-data-write-misses
(Event 34H, Pentium MMX) MMX 命令によって引き起こされたデータ書き込みミスの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-mmx-instruction-data-writes
(Event 34H, Pentium MMX) MMX 命令によって引き起こされたデータ書き込みの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-mmx-instructions-executed-u-pipe
(Event 2BH, Pentium MMX) U パイプで実行された MMX 命令の数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-mmx-instructions-executed-v-pipe
(Event 2BH, Pentium MMX) B パイプで実行された MMX 命令の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-mmx-multiply-unit-interlock
(Event 38H, Pentium MMX) 前の MMX 乗算の宛先は、準備ができていないので、パイプラインをストールしたクロックの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-movd-movq-store-stall-due-to-previous-mmx-operation
(Event 38H, Pentium MMX) 前の MMX 命令のためにパイプラインの D2 ステージでストールされた MOVD/MOVQ 命令のクロックの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-noncacheable-memory-reads
(Event 1EH) LB ミスによって引き起こされたサイクルを含む、キャッシュ不可能命令またはデータ読み込みのためのバスサイクルの数。
p5-number-of-cycles-not-in-halt-state
(Event 30H, Pentium MMX) プロセッサが、HLT 命令のためにアイドルでないサイクルの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-pipeline-agi-stalls
(Event 1FH) アドレス生成インタロックストールの数。同じクロックで U と V パイプラインの両方に起こる AGI は、イベントのシグナルを二度発生します。
p5-pipeline-flushes
(Event 15H) 生じるパイプラインフラッシュの数。パイプラインのフラッシュは、分岐、予測ミス、例外、割り込み、いくつかのセグメントレジスタロード、と BTB ミスによって引き起こされます。シリアライズ命令のためのプリフェッチキューのフラッシュは、カウントされません。
p5-pipeline-flushes-due-to-wrong-branch-predictions
(Event 35H, Pentium MMX) パイプラインの E または WB ステージのいずれかで、解決された間違った分岐予測のためのパイプラインフラッシュの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-pipeline-flushes-due-to-wrong-branch-predictions-resolved-in-wb-stage
(Event 35H, Pentium MMX) パイプラインのステージで、解決された間違った分岐予測のためのパイプラインフラッシュの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-pipeline-stall-for-mmx-instruction-data-memory-reads
(Event 36H, Pentium MMX) MMX データメモリ読み込みを待つことによって引き起こされたパイプラインストールの間のクロックの数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-predicted-returns
(Event 37H, Pentium MMX) 正確であろうと不正確であろうと予測された return の数。このカウンタは、RET 命令のみをカウントします。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-returns
(Event 39H, Pentium MMX) 実行した RET 命令の数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-saturating-mmx-instructions-executed
(Event 2FH, Pentium MMX) 実行した飽和 MMX 命令の数。このイベントは、カウンタ 0 でのみ割り付けられます。
p5-saturations-performed
(Event 2FH, Pentium MMX) 少なくとも結果の 1 つが実際に飽和したとき、実行された飽和 MMX 命令の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-stall-on-mmx-instruction-write-to-e-o-m-state-line
(Event 3BH, Pentium MMX) E または M 状態のキャッシュ線に書き込む MMX 命令でストールの間のクロックの数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-stall-on-write-to-an-e-or-m-state-line
(Event 1BH) 排他的であるか、または変更されたデータキャッシュ線への書き込みでのストールの数。
p5-taken-branch-or-btb-hit
(Event 14H) BTB のヒット、すなわち、取られた分岐または BTB ヒットのいずれか、を引き起こすイベントの数。
p5-taken-branches
(Event 32H, Pentium MMX) 取られた分岐の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-transitions-between-mmx-and-fp-instructions
(Event 2DH, Pentium MMX) MMX と浮動小数点命令の間の、そして、逆もまた同様の遷移の数。このイベントは、カウンタ 1 でのみ割り付けられます。
p5-waiting-for-data-memory-read-stall-duration
(Event 1AH) パイプラインが、データメモリ読み込みのために待つことでストールしたクロックの数。データ TLB ミスの処理は、このカウントに含まれます。
p5-write-buffer-full-stall-duration
(Event 19H) パイプラインが、書き込みバッファが満杯のためにストールした間のクロックの数。
p5-write-hit-to-m-or-e-state-lines
(Event 05H) データキャッシュで排他的または変更された線をヒットする書き込みの数。
p5-writes-to-noncacheable-memory
(Event 2EH, Pentium MMX) TLB ミスと I/O 書き込みによって引き起こされた書き込みサイクルを含む、キャッシュ不可能メモリへの書き込みの数。このイベントは、カウンタ 1 でのみ割り付けられます。

イベント名の別名

次のテーブルは、 Performance Counters Library (libpmc, -lpmc) と使用される基本的なハードウェアイベントによってサポートされた PMC から独立している別名の間のマッピングを表示しています。
Alias Event
branches p5-taken-branches
branch-mispredicts (unsupported)
dc-misses p5-data-read-miss-or-write-miss
ic-misses p5-code-cache-miss
instructions p5-instructions-executed
interrupts p5-hardware-interrupts
unhalted-cycles p5-number-of-cycles-not-in-halt-state

歴史

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

作者

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