https://ieeexplore.ieee.org/document/1410068
次に性能評価について:
以下の表に示すように、SPEC2000のベンチマーク・スイートのサブセットを使用した。
SPECfp | SPECint |
---|---|
ammp | mcf |
art | tolf |
wupwise | vpr |
swim | praser |
lucas | gap |
mgrid | bzip2 |
applu | |
galgel | |
apsi | |
シミュレータはSimpleScalar3.0を使用し、最初の10億命令をスキップした後に次の10億命令のデータを収集した。シミュレータの構成は以下に示す。
Issue Width | 4 instructions |
---|---|
Load/Store Queue | 64 entries |
RUUsize | 128 entries |
Level 1 D-Cache | 16-Kbyte, 2-way set-associative |
Level 1 I-Cache | 16-Kbyte, 2-way set-associative |
Level 2 cache | 512-Kbyte, 4-way set-associative |
Memory latency | 140 cycles |
性能評価では以下の方式を評価した:
- G/DC方式(従来のディスタンス・プリフェッチとGHBの両方
- グローバル・アドレスを使用してインデックスし、テーブルに差分を保存する
- プリフェッチ度について、幅と深さの2つのコンポーネントを使用する
- 深さ(d):長さdの一連のプリフェッチをトリガする
- PC/CSおよびGHB PC/DC
- PCをインデックスとし、定数ストライドをテーブルに保存する
テーブルの構成は以下のようになっている:
Prefetching method | Table configuration | Size (Kbytes) |
---|---|---|
Conventional distance prefetching (G/DC) | 512 table entries | 18 |
GHB G/DC | 512 IT entries \times 512 GHB entries | 8 |
Conventional stride prefetching (PC/CS) | 256 table entries | 6 |
GHB PC/DC | 256 IT entries \times 256 GHB entries | 4 |
評価結果
図3は、GHBベースのプリフェッチの方法を、従来のテーブルベースの方式と比較した性能向上を示している。図3aは、プリフェッチ度の範囲での平均性能向上を示し、図3bは、命令ごとのメモリトラフィックの算術平均増加を示している。
- G/DC方式:従来のディスタンス方式は、G/DCの全体的な潜在能力を出し切れていない。深さのプリフェッチは、幅のプリフェッチよりも約10%程優れている。さらにハイブリッドプリフェッチは10%優れている。
- しかし、ハイブリッドプリフェッチはメモリトラフィックが増加する。約50%程度メモリトラフィックが増加しており、適切な深さと幅のコンポーネントを選択する必要がある。
古いテーブルデータの振る舞いを解析するために、ディスタンス・プリフェッチの相関テーブルの各エントリの年齢を分析した。
- 年齢手は、エントリが最後に触れられてからのサイクル数
- 年齢グループを作成する:第1のグループは、16サイクル未満、第2のグループは16~256サイクル、とする
- 各年齢グループから生成されたプリフェッチの数を監視し、プリフェッチが生成されると、シミュレータが各年齢グループからの成功したプリフェッチの数を監視し、のちにキャッシュヒットとなるものを見つける。
図4が示すのは、年齢が4Kサイクル未満のエントリによって生成されたプリフェッチは16K年齢サイクル以上のエントリによって生成されたプリフェッチよりも10倍性格に生成できていることが分かる。
全体的に、PCインデックス付きの方法はG/DC方式よりも優れた性能を持ち、帯域幅を削減することができる。
- 従来のストライド・プリフェッチよりも7%高い性能を示し、メモリ・トラフィックはほぼ同一である。
- 従来のストライド・プリフェッチは、テーブルエントリは特定のロード命令に関連付けられている。
- GHBは G/DCはディスタンスプリフェッチと比較して20%のIPC向上を示し、メモリトラフィックを90%削減することができる。
- GHB PC/DCは、ストライドプリフェッチと比較して7%のIPC向上を示し、同じだけのメモリトラフィックを生成する。