第 9 章 Itanium ® 2 プロセッサ向けの最適化
11.8 メモリ階層
11.8.3 L2 ユニファイド・キャッシュ・イベント
表11-16は、Itanium 2プロセッサのL2キャッシュ監視用に提供されているイベントをまとめたも
のである。
L2キャッシュ・イベントは、6つのセットに分割されている。同時に計測できるのは、同じセッ ト内のイベント(またはL2以外のイベント)のみである。各セットは、PMC4に設定されたイベ ント・コードによって選択される(すなわち、このセット内のイベントを計測したい場合、そのう ちの1つはPMD4で計測しなければならない)。セット内には、PMD4でしか計測できないイベン トもある。また、特定の同類のL2イベントのumaskを1次イベント(PMD4を使用するL2イベン ト)が指示するようなumaskについては、いくつかの制限が存在する場合がある。これらの制限 は、セットごとに示される。各セットに属するモニタについては、次の節で詳しく説明する。
表 11-15. L1Dキャッシュ・セット4のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
MISALIGNED_STORES_RETIRED 0xd2 Y Y Y 2 リタイアしたアライメントの合ってい ないストア命令
STORES_RETIRED 0xd1 Y Y Y 2 リタイアしたストア
UC_STORES_RETIRED 0xd0 Y Y Y 2 リタイアしたキャッシュ不可ストア
表 11-16. L2ユニファイド・キャッシュ・イベントのパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_BAD_LINES_SELECTED 0xb9 Y Y Y 4 無効なラインが使用可能なときに置き
換えられた有効なライン
L2_BYPASS 0xb8 Y Y Y 1 バイパスをカウントする。
L2_DATA_REFERENCES 0xb2 Y Y Y 4 L2へのデータ読み出し/書き込みア
クセス
L2_FILLB_FULL 0xbf N N N 1 L2Dフィル・バッファがいっぱい
L2_FORCE_RECIRC 0xb4 Y Y Y 4 強制された再循環
L2_GOT_RECIRC_IFETCH 0xba Y Y Y 1 L2Dが受け取った命令フェッチ再循環
L2_GOT_RECIRC_OZQ_ACC 0xb6 Y Y Y 1 L1Dに再循環されたOZQアクセスの 数をカウントする。
L2_IFET_CANCELS 0xa1、
0xa5、
0xa9、
0xad
Y Y Y 1 L2による命令フェッチのキャンセル
L2_ISSUED_RECIRC_IFETCH 0xb9 Y Y Y 1 L2Dが発行した命令フェッチ再循環
L2_ISSUED_RECIRC_OZQ_ACC 0xb5 Y Y Y 1 再循環発行を試行したが、先読みされ
なかった回数をカウントする。
L2_L3ACCESS_CANCEL 0xb0 Y Y Y 1 キャンセルされたL3アクセス
L2_MISSES 0xcb Y Y Y 1 L2ミス
L2_OPS_ISSUED 0xb8 Y Y Y 4 L2Dが発行した別の演算
L2_OZDB_FULL 0xbd N N N 1 L2D OZデータ・バッファがいっぱい
L2_MISS_RATIOは、重要な評価基準である。セマフォはL2_REFERENCESで一度カウントされ るが、スヌープされバスから再要求されているキャッシュ・ラインが原因で、L2_MISSESが複数 発生するときがある。そのため、セマフォにより、この評価基準が100%より大きくなる場合があ ることに注意する。これは、順方向の進行が再開するまで、何度も繰り返される可能性がある。
L2_MISSESとL2_REFERENCESは5サイクル・バイパスのみで遅れずに整列するため、この評価 基準では、ある程度のエラーが発生することになる(この問題を回避するには、mf.a命令に続け てsync.i命令、srlz.i命令を使用し、その後でカウンタを読み取ればよい)。
L2_OZQ_ACQUIRE 0xa2、
0xa6、
0xaa、
0xae
N N N 1 L2 OZQ内に存在する獲得順序属性に
関するクロック
L2_OZQ_CANCELS0 0xa0 Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_CANCELS1 0xac Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_CANCELS2 0xa8 Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_FULL 0xbc N N N 1 L2D OZQがいっぱい
L2_OZQ_RELEASE 0xa3、
0xa7、
0xab、
0xaf
N N N 1 L2 OZQ内に存在する解放順序属性に
関するクロック
L2_REFERENCES 0xb1 Y Y Y 4 L2から発行された要求
L2_STORE_HIT_SHARED 0xba Y Y Y 2 ストアが共用ラインをヒットした。
L2_SYNTH_PROBE 0xb7 Y Y Y 1 合成されたプローブ
L2_VICTIMB_FULL 0xbe N N N 1 L2Dビクティム・バッファがいっぱい
表 11-16. L2ユニファイド・キャッシュ・イベントのパフォーマンス・モニタ (続き)
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
表 11-17. L2ユニファイド・キャッシュ・イベントの派生モニタ
シンボル名 説明 式
L2_DATA_RATIO L2に発行されたデータ要求率 L2_DATA_REFERENCES.L2_ALL / L2_REFERENCES
L2_DATA_READS L2データ読み出し要求 L2_DATA_REFERENCES.L2_DATA_
READS
L2_DATA_WRITES L2データ書き込み要求 L2_DATA_REFERENCES.L2_DATA_
WRITES
L2_INST_REFERENCES L2に発行された命令要求 L2_INST_DEMAND_READS - L1I_FETCH_ISB_HIT + L2_INST_PREFETCHES
L2_INST_FETCHES デマンド命令フェッチが原因で
L2に発行された要求
L2_INST_DEMAND_READS + L2_INST_PREFETCHES
L2_MISS_RATIO L2ミスのパーセント L2_MISSES/L2_REFERENCES
L2_RECIRC_ATTEMPTS L2発行ロジックが再循環の発行 を試行した回数
L2_ISSUED_RECIRC_OZQ_ACC + L2_OZQ_CANCELS2.DIDNT_RECIRC
11.8.3.1 L2キャッシュ・イベント(セット0)
L2_OZQ_CANCELS*イベント、またはL2_IFET_CANCELSは、PMD4で計測しなければならな い。これらのイベントは、同じumaskを使用する。一度に計測できるのは、3つある
L2_OZQ_CANCELS*イベントの1つだけである。
11.8.3.2 L2キャッシュ・イベント(セット1)
L2_L3ACCESS_CANCELは、PMD4で計測しなければならない。
11.8.3.3 L2キャッシュ・イベント(セット2)
L2_FORCE_RECIRCは、PMD4で計測しなければならない。
表 11-18. L2キャッシュ・セット0のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_IFET_CANCELS 0xa1、
0xa5、
0xa9、
0xad
Y Y Y 1 L2による命令フェッチのキャンセル
L2_OZQ_ACQUIRE 0xa2、
0xa6、
0xaa、
0xae
N N N 1 L2 OZQ内に存在する獲得順序属性に
関するクロック
L2_OZQ_CANCELS0 0xa0 Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_CANCELS1 0xac Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_CANCELS2 0xa8 Y Y Y 4 L2 OZQのキャンセル
L2_OZQ_RELEASE 0xa3、
0xa7、
0xab、
0xaf
N N N 1 L2 OZQ内に存在する解放順序属性に
関するクロック
表 11-19. L2キャッシュ・セット1のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_DATA_REFERENCES 0xb2 Y Y Y 4 L2へのデータ読み出し/書き込みア
クセス
L2_L3ACCESS_CANCEL 0xb0 Y Y Y 1 キャンセルされたL3アクセス
L2_REFERENCES 0xb1 Y Y Y 4 L2から発行された要求
表 11-20. L2キャッシュ・セット2のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_FORCE_RECIRC 0xb4 Y Y Y 4 強制された再循環
L2_ISSUED_RECIRC_OZQ_ACC 0xb5 Y Y Y 1 再循環発行を試行したが、先読みされ
なかった回数をカウントする。
11.8.3.4 L2キャッシュ・イベント(セット3)
L2_BAD_LINES_SELECTED、L2_BYPASS、L2_STORE_HIT_SHAREDは、同じumaskを共用す る。
11.8.3.5 L2キャッシュ・イベント(セット4)
L2_OPS_ISSUED、L2_ISSUED_RECIRC_IFETCH、またはL2_GOT_RECIRC_IFETCHは、PMD4で 計測しなければならない。これらの3つのイベントは、同じumaskを共用する。
11.8.3.6 L2キャッシュ・イベント(セット5)
L2_OZQ_FULL、L2_OZDB_FULL、L2_VICTIMB_FULL、またはL2_FILLB_FULLは、PMD4で計 測しなければならない。これらの4つのイベントは、同じumaskを共用する。
L2_GOT_RECIRC_OZQ_ACC 0xb6 Y Y Y 1 L1Dに再循環されたOZQアクセスの 数をカウントする。
L2_SYNTH_PROBE 0xb7 Y Y Y 1 合成されたプローブ
表 11-20. L2キャッシュ・セット2のパフォーマンス・モニタ (続き)
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
表 11-21. L2キャッシュ・セット3のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_BAD_LINES_SELECTED 0xb9 Y Y Y 4 無効なラインが使用可能なときに置き
換えられた有効なライン
L2_BYPASS 0xb8 Y Y Y 1 バイパスをカウントする。
L2_STORE_HIT_SHARED 0xba Y Y Y 2 ストアが共用ラインをヒットした。
表 11-22. L2キャッシュ・セット4のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_GOT_RECIRC_IFETCH 0xba Y Y Y 1 L2Dが受け取った命令フェッチ再循環
L2_ISSUED_RECIRC_IFETCH 0xb9 Y Y Y 1 L2Dが発行した命令フェッチ再循環
L2_OPS_ISSUED 0xb8 Y Y Y 4 L2Dが発行した別の演算
表 11-23. L2キャッシュ・セット5のパフォーマンス・モニタ
シンボル名 イベント・
コード I A R
D A R
O P C
最大 インクリ
メント/ サイクル
説明
L2_OZQ_FULL 0xbc N N N 1 L2D OZQがいっぱい
L2_OZDB_FULL 0xbd N N N 1 L2D OZデータ・バッファがいっぱい
L2_VICTIMB_FULL 0xbe N N N 1 L2Dビクティム・バッファがいっぱい
L2_FILLB_FULL 0xbf N N N 1 L2Dフィル・バッファがいっぱい