解説
Intel Sandy Bridge CPU は、 Intel 性能測定アーキテクチャのバージョン 3 に適合する PMC を含んでいます。これらの CPU は、2 つの PMC のクラスを含んでいます:
-
PMC_CLASS_UCF
-
カウンタごとのたった 1 つのハードウェアのイベントをカウントする固定関数のカウンタ。
-
PMC_CLASS_UCP
-
ハードウェアのイベントの定義された設定のうちの 1 つをカウントするように設定されるプログラマブルカウンタ。
各クラスにの利用可能な PMC の数と pmc_cpuinfo(3) を呼び出すことによって実行時に決定する必要があるそれらの幅。
Intel Sandy Bridge PMC は、次に文書化されています: Volume 3B: System Programming Guide, Part 2, Intel(R) 64 and IA-32 Architectures Software Developers Manual, Order Number: 253669-039US, Intel Corporation, May 2011.
SANDYBRIDGE UNCORE 固定関数 PMC
これらの PMC とそれらのサポートされたインベントは、
pmc.ucf(3) に文書化されています。このファミリのすべての CPU が、固定関数のカウンタを実装しているとは限りません。
SANDYBRIDGE UNCORE プログラマブル PMC
プログラマブル PMC は、次のケーパビリティをサポートしています:
ケーパビリティ |
サポート |
PMC_CAP_CASCADE |
No |
PMC_CAP_EDGE |
Yes |
PMC_CAP_INTERRUPT |
No |
PMC_CAP_INVERT |
Yes |
PMC_CAP_READ |
Yes |
PMC_CAP_PRECISE |
No |
PMC_CAP_SYSTEM |
No |
PMC_CAP_TAGGING |
No |
PMC_CAP_THRESHOLD |
Yes |
PMC_CAP_USER |
No |
PMC_CAP_WRITE |
Yes |
イベント修飾子
これらの PMC のためのイベント指定子は、次の共通の修飾子をサポートします:
-
cmask=
value
-
1 サイクルで測定されたイベントを設定する数が
value 以上である場合のみ、増加する PMC を設定します。
-
edge
-
他の修飾子によって表現された条件のアサートされた遷移にデアサートの数をカウントする PMC を設定します。指定されるなら、カウンタは、条件が真である間のロックの数に関係なく、条件が真になるときはいつでも一度だけ増加されます。
-
inv
-
サイクルごとのイベントの数が“
cmask
”修飾子によって指定された値未満であるとき、カウンタを増加させ、“
cmask
”修飾子が存在するとき、比較の意味を逆にします。
イベント指定子 (プログラマブル PMC)
Sandy Bridge プログラマブル PMC は、次のイベントをサポートします:
-
CBO_XSNP_RESPONSE.RSPIHITI
-
(Event 22H, Umask 01H) プロセッサのコアこの Cbox によって初期化された要求まで受信された応答をスヌープ (snoop) します。 20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_XSNP_RESPONSE.RSPIHITFSE
-
(Event 22H, Umask 02H) 20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_XSNP_RESPONSE.RSPSHITFSE
-
(Event 22H, Umask 04H) 20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_XSNP_RESPONSE.RSPSFWDM
-
(Event 22H, Umask 08H)
-
CBO_XSNP_RESPONSE.RSPIFWDM
-
(Event 22H, Umask 01H)
-
CBO_XSNP_RESPONSE.AND_EXTERNAL
-
(Event 22H, Umask 20H) クロスコア (cross-core) のフィルタは、外部のスヌープ要求の結果をスヌープ (snoop) します。 01H、02H、04H、08H、10H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_XSNP_RESPONSE.AND_XCORE
-
(Event 22H, Umask 40H) クロスコア (cross-core) のフィルタは、コア要求の結果をスヌープ (snoop) します。 01H、02H、04H、08H、10H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_XSNP_RESPONSE.AND_XCORE
-
(Event 22H, Umask 80H) クロスコア (cross-core) のフィルタは、LLC 追い立て (eviction) の結果をスヌープ (snoop) します。 01H、02H、04H、08H、10H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.M
-
(Event 34H, Umask 01H) アクセスキャッシュと M-状態のラインを見つける LLC 検索要求。 10H、20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.E
-
(Event 34H, Umask 02H) アクセスキャッシュと E-状態のラインを見つける LLC 検索要求。 10H、20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.S
-
(Event 34H, Umask 04H) アクセスキャッシュと S-状態のラインを見つける LLC 検索要求。 10H、20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.I
-
(Event 34H, Umask 08H) アクセスキャッシュと I-状態のラインを見つける LLC 検索要求。 10H、20H、40H、80H の umask 値のうちの 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.AND_READ
-
(Event 34H, Umask 10H) プロセッサのコアの初期化されたキャッシュ可能な読み込み要求のフィルタ。 01H、02H、04H、08H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP_AND_READ2
-
(Event 34H, Umask 20H) プロセッサのコアの初期化されたキャッシュ可能な書き込み要求のフィルタ。 01H、02H、04H、08H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.AND_EXTSNP
-
(Event 34H, Umask 40H) 外部スヌープ (snoop) 要求のフィルタ。 01H、02H、04H、08H の少なくとも 1 つと組み合わせなければなりません。
-
CBO_CACHE_LOOKUP.AND_ANY
-
(Event 34H, Umask 80H) キャッシュ不可能なノンコヒーレント (noncoherent) 要求を含む任意の IRQ または IPQ の初期化された要求のフィルタ。 01H、02H、04H、08H の少なくとも 1 つと組み合わせなければなりません。
-
IMPH_CBO_TRK_OCCUPANCY.ALL
-
(Event 80H, Umask 01H) コア発信 (core-outgoing) の有効なエントリの数によって重みつけられたサイクルをカウントします。有効なエントリは、IDIO または DRSO のメッセージの最初への割り付けの間です。コヒーレント (coherent) とインコヒーレント (incoherent) のトラフィックのためのアカウント。カウンタ 0 のみ。
-
IMPH_CBO_TRK_REQUEST.ALL
-
(Event 81H, Umask 01H) コア発信 (core-outgoing) エントリの数をカウントします。コヒーレント (coherent) とインコヒーレント (incoherent) のトラフィックのためのアカウント。
-
IMPH_CBO_TRK_REQUEST.WRITES
-
(Event 81H, Umask 20H) 全部 (full)、部分的 (partial) と追い立て (eviction) を含む割り付けられた書き込みエントリの数をカウントします。
-
IMPH_CBO_TRK_REQUEST.EVICTIONS
-
(Event 81H, Umask 80H) 割り付けられた追い立て (eviction) の数をカウントします。
-
IMPH_COH_TRK_OCCUPANCY.ALL
-
(Event 83H, Umask 01H) コヒーレント (coherent) トラッカ (tracker) キューのコア発信 (core-outgoing) の有効なエントリの数によって重み付けられたサイクルをカウントします。カウンタ 0 のみ。
-
IMPH_COH_TRK_REQUEST.ALL
-
(Event 84H, Umask 01H) コヒーレント (coherent) トラッカ (tracker) キューのコア発信 (core-outgoing) のエントリの数をカウントします。