第 9 章 Itanium ® 2 プロセッサ向けの最適化
10.2 パフォーマンス・モニタのプログラミング・モデル
10.3.7 イベント・アドレス・レジスタ (PMC10,11/PMD0,1,2,3,17)
本項では、Itanium 2プロセッサの命令/データ・イベント・アドレス・レジスタ(EAR)のレジス タ・レイアウトを説明する。Itanium 2プロセッサは、命令キャッシュ・ミス、命令TLBミス、
データ・キャッシュ・ロード・ミス、データTLBミス、ALATミス、フロントエンド・ストール の6つのイベントの検出をサポートしている。EARは、2つのPMCレジスタ(PMC10,11)によって 設定される。パフォーマンス監視ソフトウェアは、EAR固有の単位マスクによって、イベント収 集パラメータをハードウェアに指示できる。命令アドレス、データ・アドレス、操作のレイテン シなど、収集されたイベントのパラメータは、5つのPMDレジスタ(PMD0,1,2,3,17)に格納される。
命令/データ・キャッシュEARは、収集されたキャッシュ・イベントのレイテンシを報告する。
また、レイテンシのスレッショルドに基づいて、収集されるイベントを制限できる。イベント・
アドレス・データ・レジスタ(PMD0,1,2,3,17)は、イベント収集機能がフリーズされているときにの
み(PMC0.fr=1)、有効なデータを読み出せる。イベント収集機能が有効になっている間に
PMD0,1,2,3,17を読み取った場合は、戻り値は未定義である。
イネーブルdbrp1 46 0 - 制限なし。
1 - cfg dbrp1で設定された制限 イネーブルdbrp2 47 0 - 制限なし。
1 - cfg dbrp2で設定された制限 イネーブルdbrp3 48 0 - 制限なし。
1 - cfg dbrp3で設定された制限 図 10-17. メモリ・パイプライン・イベント制限設定レジスタ(PMC13)
63 49 48 47 46 45 44 29 28 27 26 21 20 19 18 13 12 11 10 5 4 3 2 0
予約 済み
イネーブル dbrp 3 2 1 0
予約済み cfg dbrp
3
予約 済み
cfg dbrp
2
予約 済み
cfg dbrp
1
予約 済み
cfg dbrp
0 予約 済み
15 1 1 1 1 16 2 6 2 6 2 6 2 3
表 10-13. メモリ・パイプライン・イベント制限のフィールド(PMC13) (続き)
フィールド ビット 説明
10.3.7.1 命令EAR (PMC10、PMD0,1)
命令イベント・アドレス設定レジスタ(PMC10)の設定によって、L1命令キャッシュ・ミス・イベ ントまたは命令TLBミス・イベントを監視できる。図10-18と表10-14に、PMC10レジスタのレ イアウトを詳しく示す。表10-19に、PMC10に対応するイベント・アドレス・データ・レジスタ PMD0,1を示す。
図 10-19. 命令イベント・アドレス・レジスタのフォーマット(PMD0,1)
cache_tlbビット(PMC10.ct)が0にされている場合は、命令キャッシュ・ミスが監視される。
cache_tlbビットが1にセットされている場合は、命令TLBミスが監視される。umaskフィールド とパフォーマンス・モニタ・データ・レジスタPMD0,1の意味は、cache_tlbビットの設定によって 異なる。命令キャッシュの監視は、10.3.7.2項「キャッシュ・モードの命令EAR (PMC10.ct='1x)」
を参照のこと。命令TLBの監視は、10.3.7.3項「TLBモードの命令EAR (PMC10.ct=00)」を参照の こと。
図 10-18. 命令イベント・アドレス設定レジスタ(PMC10)
63 16 15 14 13 12 11 5 4 3 0
予約済み ism ct umask pm plm
2 2 7 1 4
表 10-14. 命令イベント・アドレス設定レジスタのフィールド(PMC10)
フィールド ビット 説明
plm 3:0 表10-5「パフォーマンス・モニタ設定(PMC)レジスタの制御フィールド
(PMC4,5,6,7,10,11,12)」を参照。
pm 4 表10-5「パフォーマンス・モニタ設定(PMC)レジスタの制御フィールド
(PMC4,5,6,7,10,11,12)」を参照。
umask 11:5 12:5
監視対象のイベントを選択する。
[13] =`1の場合は、[12:5]がumaskに使用される。
ct 13:12 cache_tlbビット。命令EARセレクタ。命令キャッシュまたはTLBストールを選択 する。
if =1x: デマンド命令キャッシュ・ミスを監視する。
注: ISBヒットは、考慮されるミスではない。
PMD0,1レジスタの解釈(表10-16「キャッシュ・モード (PMC10.ct='1x)の命令EAR (PMD0,1)」を参照) if =01: 何も監視されない。
if =00: L1命令TLBミスを監視する。
PMD0,1レジスタの解釈(表10-16「キャッシュ・モード (PMC10.ct='1x)の命令EAR (PMD0,1)」を参照)
ism 15:14 表10-5「パフォーマンス・モニタ設定(PMC)レジスタの制御フィールド (PMC4,5,6,7,10,11,12)」を参照。
無視 31:16
47:32
読み出し時、ビット[15:0]の値がそれぞれ返される。
63 5 4 2 1 0
命令キャッシュ・ライン・アドレス(PMD0) 予約済み stat
59 3 2
63 13 12 11 0
予約済み(PMD1) ov レイテンシ
51 1 12
10.3.7.2 キャッシュ・モードの命令EAR (PMC10.ct='1x)
PMC10.ctが1xの場合、命令イベント・アドレス・レジスタは、L1命令キャッシュ・ミスの命令 アドレスとアクセス・レイテンシを収集する。レイテンシがスレッショルドを超えたミスだけが 収集される。スレッショルドは、設定レジスタPMC10内の4ビットのumaskフィールドで指定さ
れる。表10-15は、設定可能なスレッショルドの値を示している。
表10-16に示すように、L1命令キャッシュ・ミスになった命令キャッシュ・ラインのアドレスは、
PMD0に格納される。監視対象となるイベントが1つも収集されなかった場合は、PMD0の有効 ビットは0になる。収集された命令キャッシュ・ミスのレイテンシ(CPUのクロック・サイクル単 位)は、PMD1のレイテンシ・フィールドに格納される。キャッシュ・モードでは、PMD0のTLB ミス・ビットは未定義である。
10.3.7.3 TLBモードの命令EAR (PMC10.ct=00)
PMC10.ctが`00の場合、命令イベント・アドレス・レジスタは、命令TLBミスのアドレスを収集 する。ユニット・マスクによって、特定の命令TLBミスのイベント・アドレスだけを収集するよ うに設定できる。表10-17は、命令TLBのumaskの設定をまとめたものである。マスク・ビット のすべての組み合わせがサポートされている。
表 10-15. キャッシュ・モード(PMC10.ct='1x)の命令EAR (PMC10)のumaskフィールド umask
ビット12:5
レイテンシのスレッショルド [CPUサイクル]
umask ビット12:5
レイテンシのスレッショルド [CPUサイクル] 01xxxxxx >0 (すべてL1ミス) 11100000 >=256
11111111 >=4 --- >=512
11111110 >=8 11000000 >=1024
11111100 >=16 --- >=2048
11111000 >=32 10000000 >=4096
--- >=64 その他 未定義
11110000 >=128 00000000 RABヒット
(RAB内でヒットしたすべて のL1ミス)
表 10-16. キャッシュ・モード(PMC10.ct='1x)の命令EAR (PMD0,1)
レジスタ フィールド ビット 説明
PMD0 ステータス 1:0 ステータス
x0: EARは監視対象となるイベントを収集しなかった。
x1: EARは有効なイベント・データを格納している。
命令キャッシュ・ライン のアドレス
63:5 キャッシュ・ミスの原因となった命令キャッシュ・ライン のアドレス
PMD1 レイテンシ 11:0 レイテンシ(CPUクロック単位)
オーバーフロー 12 1の場合、レイテンシ・カウンタは、データが返される前 に、1回または複数回オーバーフローしている。
表10-18に示すように、L1 ITLBミスになった命令キャッシュ・ライン・フェッチのアドレスは、
PMD0に格納される。ステータス・ビット[1]は、収集されたTLBミスが、VHPT内でヒットした か、それともソフトウェアによる処理を必要としたかを示す。監視対象となるイベントが1つも 収集されなかった場合は、PMD0の有効ビットは0になる。TLBモードでは、PMD1のレイテン シ・フィールドは未定義である。