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

名称

pmc.k7AMD Athlon (K7 ファミリ) CPU のための測定イベント

ライブラリ

Performance Counters Library (libpmc, -lpmc)

書式

#include < pmc.h>

解説

AMD K7 PMC は、 AMD Athlon シリーズの CPU に存在し、次に文書化されています: AMD Athlon Processor x86 Code Optimization Guide, Publication No. 22007, Advanced Micro Devices, Inc., February 2002.

PMC の機能

AMD K7 PMC は、48 ビット幅です。各 K7 CPU は、次のケーパビリティある 4 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

イベント修飾子

AMD K7 PMC のためのイベント指定子は、次のオプションの修飾子を持つことができます:
count= value
1 つのサイクルで測定される設定されたイベントの数が、 value 以上の場合のみ、増加するようにカウンタを設定します。
edge
他の修飾子よって表現された条件の否定アサート (negated-to-asserted) 遷移のみをカウントするように設定します。言い換えれば、条件が真のままで残っている間のクロックの数にかかわりなく、与えられた条件が真になるときはいつも、カウンタは一度だけ増加します。
inv
count”修飾子が存在しているとき、比較の意味を逆にし、サイクルごとのイベントの数が、“ count”修飾子によって指定された値より小さいときに、カウンタを増加します。
os
特権レベル 0 で起こるイベントをカウントするように、PMC を設定します。
unitmask= mask
この修飾子は、選択されたわずかなイベント、“ k7-dc-refills-from-l2”, “ k7-dc-refills-from-system”と“ k7-dc-writebacks”をさらに修飾するために使用されます。ここで、 mask は、省略可能な‘ +’文字で区切られた次の文字列です:

m
“Modified” (変更された) 状態の線のための操作をカウントします。
o
“Owner” (所有者) 状態の線のための操作をカウントします。
e
“Exclusive” (排他的な) 状態の線のための操作をカウントします。
s
“Shared” (共有された) 状態の線のための操作をカウントします。
i
“Invalid” (不正な) 状態の線のための操作をカウントします。

unitmask”修飾子が指定されていないなら、デフォルトは、上記の状態のいずれかでキャッシュ線のためのイベントをカウントすることです。

usr
特権レベル 1, 2 または 3 で起こるイベントをカウントするように、 PMC を設定します。

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

AMD K7 イベント指定子

AMD K7 PMC でサポートされたイベント指定子は、次の通りです:
k7-dc-accesses
(Event 40H) データキャッシュアクセスをカウントします。
k7-dc-misses
(Event 41H) データキャッシュミスをカウントします。
k7-dc-refills-from-l2 [ ,unitmask=mask]
(Event 42H) L2 キャッシュからデータキャッシュリフィル (補充) をカウントします。このイベントは、“ unitmask”修飾子を使用してさらに修飾されるかもしれません。
k7-dc-refills-from-system [ ,unitmask=mask]
(Event 43H) システムメモリからデータキャッシュリフィル (refill) をカウントします。このイベントは、“ unitmask”修飾子を使用してさらに修飾されるかもしれません。
k7-dc-writebacks [ ,unitmask=mask]
(Event 44H) データキャッシュ書き戻し (writeback) をカウントします。このイベントは、“ unitmask”修飾子を使用してさらに修飾されるかもしれません。
k7-hardware-interrupts
(Event CFH) 取られたハードウェア割り込みの数をカウントします。
k7-ic-fetches
(Event 80H) 命令キャッシュフェッチをカウントします。
k7-ic-misses
(Event 81H) 命令キャッシュミスをカウントします。
k7-interrupts-masked-cycles
(Event CDH) プロセッサの IF フラグが 0 であったときのサイクルの数をカウントします。
k7-interrupts-masked-while-pending-cycles
(Event CEH) プロセッサの IF フラグが 0 であるために、ペンディングの間マスクされた割り込みのサイクルの数をカウントします。
k7-l1-and-l2-dtlb-misses
(Event 46H) L1 と L2 DTLB ミスをカウントします。
k7-l1-dtlb-miss-and-l2-dtlb-hits
(Event 45H) L1 DTLB ミスと L2 DTLB ヒットをカウントします。
k7-l1-itlb-misses
(Event 84H) L2 ITLB ヒットである L1 ITLB ミスをカウントします。
k7-l1-l2-itlb-misses
(Event 85H) L1 (と L2) ITLB ミスをカウントします。
k7-misaligned-references
(Event 47H) 整列ミスのデータ参照をカウントします。
k7-retired-branches
(Event C2H) すべてのリタイアした分岐 (条件付き、無条件、例外と割り込み) をカウントします。
k7-retired-branches-mispredicted
(Event C3H) すべての予測ミスしてリタイアした分岐をカウントします。
k7-retired-far-control-transfers
(Event C6H) リタイアした far (遠い) 制御転送をカウントします。
k7-retired-instructions
(Event C0H) すべてのリタイア命令をカウントします。
k7-retired-ops
(Event C1H) リタイアしたオペレーション (ops) をカウントします。
k7-retired-resync-branches
(Event C7H) リタイアした再同期 (resync) した分岐 (非制御転送分岐) をカウントします。
k7-retired-taken-branches
(Event C4H) リタイアして取られた分岐をカウントします。
k7-retired-taken-branches-mispredicted
(Event C5H) リタイアして予測ミスして取られた分岐をカウントします。

イベント名の別名

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

歴史

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

作者

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