第 9 章 Itanium ® 2 プロセッサ向けの最適化
11.14 パフォーマンス監視イベント・リスト
この節では、Itanium 2プロセッサのパフォーマンス監視イベントを列挙する。
注: 特に断りのない限り、命令アドレス範囲で制限できるイベントは、IBRP0でしか制限できな
い。
ALAT_CAPACITY_MISS
• タイトル: 置き換えられたALATエントリ
• カテゴリ: 命令実行 IAR/DAR/OPC: Y/Y/Y
• イベント・コード: 0x58、最大Inc/Cyc: 2
• 定義: アドバンスト・ロード(ld.a、ld.as、ldfp.a、またはldfp.as)、または使用されな
くなったld.c.ncが、同じレジスタidを持たないALAT内の有効なエントリを強制的に追い 出した回数、あるいは最後の1〜2つの無効なエントリを置き換えた回数について情報を提供 する。
BACK_END_BUBBLE
• タイトル: メイン・パイプ内のフル・パイプ・バブル
• カテゴリ: ストール・イベント IAR/DAR/OPC: N/N/N
• イベント・コード: 0x00、最大Inc/Cyc: 1
• 定義: 5つのイベント(FPU/L1D、RSE、EXE、分岐/例外、またはフロントエンド)のいずれか が原因でストールしたメイン・パイプ内のフル・パイプ・バブルの数をカウントする。このイ ベントは、1つのイベント・ユニット・マスクによりさらに制限される。また、4つのカウンタ を使用してすべての情報を容易に収集するために、いくつかの詳細情報が提供される。
表 11-37. ALAT_CAPACITY_MISSのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
--- bxx00 (* 何もカウントされない *)
INT bxx01 整数命令のみ
FP bxx10 浮動小数点命令のみ
ALL bxx11 整数命令と浮動小数点命令の両方
表 11-38. BACK_END_BUBBLEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL bxx00 例外/分岐の予測ミスが原因である、フロントエンド、
RSE、EXE、FPU/L1Dストール、またはパイプライン・フ ラッシュ
FE bxx01 フロントエンド
L1D_FPU_RSE bxx10
--- bxx11 (* 何もカウントされない *)
BE_BR_MISPRED_DETAIL
• タイトル: バックエンド分岐予測ミスの詳細
• カテゴリ: 分岐イベント IAR/DAR/OPC: Y/N/Y
• イベント・コード: 0x61、最大Inc/Cyc: 1
• 定義: 予測結果、stg、rot、またはpfsのバックエンド予測ミスに基づいて、リタイアした分岐
の数をカウントする。これらの予測は、分岐当たりではなく、バンドル当たりのものである。
• 注: これらのイベントがカウントされるのは、分岐に関連するパス予測ミスがない場合に限ら
れる。パス予測ミスは、stg/rot/pfsの予測ミスを保証するからである。
BE_EXE_BUBBLE
• タイトル: 実行ユニット・ストールが原因のメイン・パイプ内のフル・パイプ・バブル
• カテゴリ: ストール・イベント IAR/DAR/OPC: N/N/N
• イベント・コード: 0x02、最大Inc/Cyc: 1
• 定義: 実行ユニットにより引き起こされたストールが原因である、メイン・パイプ内のフル・
パイプ・バブルの数をカウントする。
• 注: このイベントの別の原因には優先順位が付けられない。なぜなら、その必要がないからで ある(原因は独立しており、そのいくつかは同時に発生する。原因はすべてカウントする)。 表 11-39. BE_BR_MISPREDICT_DETAILのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ANY bxx00 任意のバックエンド予測ミス
STG bxx01 バックエンド・ステージ予測ミスのみ
ROT bxx10 バックエンド・ローテート予測ミスのみ
PFS bxx11 実行された分岐のバックエンドpfs予測ミスのみ
表 11-40. BE_EXE_BUBBLEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL b0000 exeによってストールされた。
GRALL b0001 GR/GRまたはGR/ロードの依存関係が原因で、バックエ
ンドがexeによってストールされた。
FRALL b0010 FR/FRまたはFR/ロードの依存関係が原因で、バックエン
ドがexeによってストールされた。
PR b0011 PRの依存関係が原因で、バックエンドがexeによってス
トールされた。
ARCR b0100 ARまたはCRの依存関係が原因で、バックエンドがexe
によってストールされた。
GRGR b0101 GR/GRの依存関係が原因で、バックエンドがexeによっ
てストールされた。
CANCEL b0110 キャンセルされたロードが原因で、バックエンドがexeに
よってストールされた。
BANK_SWITCH b0111 バンク切り替えが原因で、バックエンドがexeによってス
トールされた。
BE_FLUSH_BUBBLE
• タイトル: フラッシュが原因のメイン・パイプ内のフル・パイプ・バブル
• カテゴリ: ストール・イベント IAR/DAR/OPC: N/N/N
• イベント・コード: 0x04、最大Inc/Cyc: 1
• 定義: フラッシュが原因であるメイン・パイプ内のフル・パイプ・バブルの数をカウントする。
• 注: XPNは、BRUよりも優先順位が高い。
BE_L1D_FPU_BUBBLE
• タイトル: FPまたはL1Dキャッシュが原因のメイン・パイプ内のフル・パイプ・バブル
• カテゴリ: ストール・イベント/L1Dキャッシュ・セット2 IAR/DAR/OPC: N/N/N
• イベント・コード: 0xca、最大Inc/Cyc: 1
• 定義: 浮動小数点ユニットまたはL1Dキャッシュにより引き起こされたストールが原因であ
る、メイン・パイプ内のフル・パイプ・バブルの数をカウントする。
• 注: 制限付きのセット2 L1Dキャッシュ・イベントである。このイベントを計測するには、こ
のセット内のイベントの1つをPMD5で計測しなければならない。このイベントの別の原因に は優先順位が付けられない。なぜなら、その必要がないからである(原因は独立しており、その いくつかは同時に発生する。原因はすべてカウントする)。
ARCR_PR_CANCEL_BANK b1000 ARCR、PR、CANCEL、またはBANK_SWITCH
--- b1001-b1111 (* 何もカウントされない *)
表 11-40. BE_EXE_BUBBLEのユニット・マスク (続き)
拡張子 PMC.umask
[19:16] 説明
表 11-41. BE_FLUSH_BUBBLEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL bxx00 例外/割り込みまたは分岐予測ミス・フラッシュが原因で、
バックエンドがストールされた。
BRU bxx01 分岐予測ミス・フラッシュが原因で、バックエンドがス
トールされた。
XPN bxx10 例外/割り込みフラッシュが原因で、バックエンドがス
トールされた。
--- bxx11 (* 何もカウントされない *)
表 11-42. BE_L1D_FPU_BUBBLEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL b0000 L1DまたはFPUによって、バックエンドがストールされ
た。
FPU b0001 FPUによって、バックエンドがストールされた。
L1D b0010 L1Dによって、バックエンドがストールされた。これには、
L1パイプラインによって引き起こされたストールがすべて 含まれる(これは、メイン・パイプのDETステージに相当 する、L1パイプラインのL1Dステージで生成される)。
BE_LOST_BW_DUE_TO_FE
• タイトル: BEがその他の理由でストールされていない場合の無効なバンドル
• カテゴリ: ストール・イベント IAR/DAR/OPC: N/N/N
• イベント・コード: 0x72、最大Inc/Cyc: 2
• 定義: バックエンドがその他の理由でストールしていない場合に限って、命令バッファからの
無効なバンドルの数を出口でカウントする。
• 注: このイベントで、帯域幅が失われた原因には、次の順序で優先順位が付けられる: FEFLUSH、TLBMISS、IMISS、PLP、BR_ILOCK、BRQ、BI、FILL_RECIRC、BUBBLE、
IBFULL、UNREACHED。この優先順位付けでは、いくつかのストール条件が同時に存在する場 合、最も優先順位の高いものだけがカウントされる。バンドルが「到達不可」と見なされる場 合は2つある。実行された分岐がバンドル0に含まれる場合、またはバンドル0は無効である がIP[4]に1が設定されている場合、バンドル1は到達されない。
L1D_FULLSTBUF b0011 ストア・バッファがいっぱいであるために、バックエンド
がL1Dによってストールされた。
L1D_DCURECIR b0100 DCU再循環が原因で、バックエンドがL1Dによってス
トールされた。
L1D_HPW b0101 ハードウェア・ページ・ウォーカが原因で、バックエンド
がL1Dによってストールされた。
--- b0110 (* カウントは未定義 *)
L1D_FILLCONF b0111 リターン・フィルと競合するストアが原因で、バックエン
ドがL1Dによってストールされた。
L1D_DCS b1000 ストールを要求しているdcsが原因で、バックエンドが
L1Dによってストールされた。
L1D_L2BPRESS b1001 L2バック・プレッシャが原因で、バックエンドがL1Dに
よってストールされた。
L1D_TLB b1010 L2DTLBからL1DTLBへの転送が原因で、バックエンドが
L1Dによってストールされた。
L1D_LDCONF b1011 アーキテクチャ上の並べ替えの競合が原因で、バックエン
ドがL1Dによってストールされた。
L1D_LDCHK b1100 ロード・チェックの並べ替えの競合が原因で、バックエン
ドがL1Dによってストールされた。
L1D_NAT b1101 再循環NaT生成が必要なL1Dデータ・リターンが原因で、
バックエンドがL1Dによってストールされた。
L1D_STBUFRECIR b1110 再循環が必要なストア・バッファ・キャンセルが原因で、
バックエンドがL1Dによってストールされた。
L1D_NATCONF b1111 unatに書き込まれていないst8.spillとld8.fillの競合が原因 で、バックエンドがL1Dによってストールされた。
表 11-42. BE_L1D_FPU_BUBBLEのユニット・マスク (続き)
拡張子 PMC.umask
[19:16] 説明
表 11-43. BE_LOST_BW_DUE_TO_FEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL b0000 原因に関わらずカウントする。
FEFLUSH b0001 フロントエンド・フラッシュが発生原因である場合のみ
--- b0010 (* カウントは未定義 *)
--- b0011 (* 不正な選択 *)
BE_RSE_BUBBLE
• タイトル: RSEストールが原因であるメイン・パイプ内のフル・パイプ・バブル
• カテゴリ: ストール・イベント IAR/DAR/OPC: N/N/N
• イベント・コード: 0x01、最大Inc/Cyc: 1
• 定義: レジスタ・スタック・エンジンにより引き起こされたストールが原因である、メイン・
パイプ内のフル・パイプ・バブルの数をカウントする。
• 注: AR_DEPの優先順位は、OVERFLOW、UNDERFLOW、LOADRSよりも高い。ただし、こ
れは、実装された唯一の優先順位付けである。OVERFLOW、UNDERFLOW、またはLOADRS をカウントするには、AR_DEPを偽にする必要がある。
UNREACHED b0100 到達不可バンドルが発生原因である場合のみ
IBFULL b0101 (* このイベントでは無効 *)
IMISS b0110 命令キャッシュ・ミスのストールが発生原因である場合の
み
TLBMISS b0111 TLBストールが発生原因である場合のみ
FILL_RECIRC b1000 キャッシュ・ライン・フィル操作の再循環が発生原因であ
る場合のみ
BI b1001 分岐初期設定のストールが発生原因である場合のみ
BRQ b1010 分岐リタイアメント・キューのストールが発生原因である
場合のみ
PLP b1011 完全なループ予測のストールが発生原因である場合のみ
BR_ILOCK b1100 分岐インターロックのストールが発生原因である場合のみ
BUBBLE b1101 分岐リステア・バブルのストールが発生原因である場合の
み
--- b1110-b1111 (* 不正な選択 *)
表 11-43. BE_LOST_BW_DUE_TO_FEのユニット・マスク (続き)
拡張子 PMC.umask
[19:16] 説明
表 11-44. BE_RSE_BUBBLEのユニット・マスク
拡張子 PMC.umask
[19:16] 説明
ALL bx000 RSEによって、バックエンドがストールされた。
BANK_SWITCH bx001 バンク切り替えが原因で、バックエンドがRSEによって
ストールされた。
AR_DEP bx010 ARの依存関係が原因で、バックエンドがRSEによってス
トールされた。
OVERFLOW bx011 スピルが必要であるため、バックエンドがRSEによって
ストールされた。
UNDERFLOW bx100 フィルが必要であるため、バックエンドがRSEによって
ストールされた。
LOADRS bx101 loadrs計算が原因で、バックエンドがRSEによってス
トールされた。
--- bx110-bx111 (* 何もカウントされない *)