• 検索結果がありません。

イベント・アドレス・レジスタ (PMC10,11/PMD0,1,2,3,17)

第 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のレイテン シ・フィールドは未定義である。