キャッシュ・ミス頻発ロード命令を対象としたミス原因解析

Download Report

Transcript キャッシュ・ミス頻発ロード命令を対象としたミス原因解析

キャッシュ・ミス頻発ロード命令
を対象としたミス原因解析
三輪英樹†,堂後靖博‡,井上弘士¶,村上和彰¶
†九州大学 大学院システム情報科学府
‡福岡大学大学院工学研究科
¶九州大学 大学院システム情報科学研究院
2005/8/5
SWoPP 2005 (CPSY2005-22)
1
発表手順
• 研究背景
– メモリ・ウォール問題とは?
– キャッシュ・ミス頻発ロード命令 (DL 命令) とは?
– CS 命令とは?
• DL/CS命令に着目した性能向上手法
– どのような場合に妥当であると言えるか?
– そのような場合は実際にあるのか?
• まとめ
2005/8/5
SWoPP 2005 (CPSY2005-22)
2
メモリ・ウォール問題とは?
• MPUおよびDRAMの動作周波数の違い:
– Intel Pentium4: 3.8GHz
– DDR2 SDRAM: 533MHz
• 計算に必要なデータの参照時間が長い!

DRAM が MPU の性能を抑制
「メモリ・ウォール問題」
2005/8/5
SWoPP 2005 (CPSY2005-22)
3
メモリ・ウォールへの対策と問題点
• 代表的なメモリ・ウォール対策技術
– メモリ・アクセス時間の低減・隠蔽
• オンチップ・キャッシュ・メモリの搭載,
キャッシュ・プリフェッチ,ロード値予測,再計算,
アウト・オブ・オーダ実行など
– メモリ・アクセス回数の削減
• コンパイラによるアクセス回数の削減,再計算など
• 性能低下を招くオフチップ・メモリ・アクセス
(キャッシュ・ミス) を完全には解消できない.
2005/8/5
SWoPP 2005 (CPSY2005-22)
4
キャッシュ・ミスによる性能低下を
防ぐには?
• 命令のキャッシュ・ミスはなんとかなる.
• データのキャッシュ・ミスの犯人は?
– 犯人グループは少人数.(=少数のロード命令)
– くり返し犯行に及ぶ.(=何度もキャッシュ・ミス)

Delinquent Load 命令 (DL 命令)
• DL命令によるキャッシュ・ミスを防ぐことで,
性能を大幅に改善できる可能性がある!
2005/8/5
SWoPP 2005 (CPSY2005-22)
5
DL命令をやっつける方法
• プリフェッチもしくは再計算
– ロード対象アドレスに対しプリフェッチ
• Data-Driven Multithreading [Roth@Wisconsin,2001]
• Speculative Pre-Computation [Collins@Intel,2001]
– ロード対象値を再計算
• Load Data Re-Computation [三輪,2004]
アドレスもしくは値が間違っている場合,性能
は向上しない.
2005/8/5
SWoPP 2005 (CPSY2005-22)
6
正確にDL命令をやっつけるには?
• 犯人グループには黒幕が存在していた!
– DL命令がロードするデータを,メモリ・システムに
書き込んだ (ストアした) 命令.

Corresponding Store 命令 (CS命令)(*)
• CS命令に着目することで,DL命令のロード
対象データアドレスおよび値が判明!
(*) A. L. Holloway and G. S. Sohi, “Characterization of Problem Stores,”
IEEE Computer Architecture Letter, Dec. 2004.
2005/8/5
SWoPP 2005 (CPSY2005-22)
7
DL命令とCS命令との関係
オブジェクト
コード
実行された命令の履歴
(命令)
(ミス) (データアドレス) (データ値)
…
STORE1
STORE2
…
…
…
DL1
LOAD1
LOAD2
DL2
LOAD3
LOAD1
ミス アドレス1
DL1
アドレス2
LOAD2
DL2
ミス アドレス3
LOAD3
DL1
ミス アドレス4
LOAD1
値1
値2
値3
値4
知りたい!
知りたい!
知りたい!
…
2005/8/5
SWoPP 2005 (CPSY2005-22)
8
DL命令とCS命令との関係
オブジェクト
コード
CS1
STORE1
CS2
STORE2
CS1
STORE1
(ミス) (データアドレス) (データ値)
…
アドレス1
アドレス3
アドレス4
値1
値3
値4
ミス アドレス1
DL1
LOAD2
アドレス2
DL2
ミス アドレス3
DL1
ミス アドレス4
値1
値2
値3
値4
…
…
DL1
LOAD2
DL2
(命令)
…
…
CS1
STORE1
CS2
STORE2
実行された命令の履歴
知りたい!
知りたい!
知りたい!
…
DL/CS命令に着目しメモリ・システムを高性能化
2005/8/5
SWoPP 2005 (CPSY2005-22)
9
発表手順 (再)
• 研究背景
– メモリ・ウォール問題とは?
– キャッシュ・ミス頻発ロード命令 (DL 命令) とは?
– CS 命令とは?
• DL/CS命令に着目した性能向上手法
– どのような場合に妥当であると言えるか?
– そのような場合は実際にあるのか?
• まとめ
2005/8/5
SWoPP 2005 (CPSY2005-22)
10
仮定
• 32bit の RISC 型マイクロプロセッサ上で
プログラムを実行する場合を仮定.
– プログラム実行スレッド数: 1
– オンチップ・キャッシュ・メモリ階層数: 2
– 主記憶はDRAMを利用.
• DL命令
– キャッシュ・ミスを頻発させる上位16ロード命令
2005/8/5
SWoPP 2005 (CPSY2005-22)
11
DL命令およびCS命令に着目した
メモリ・システム高性能化手法
オブジェクトコード
CS 命令
DL 命令
Load a
Load b
Add c, a, b
Store c
Load c
Load x
Add z, x, c
Store z
(1) ストアした値をロード時に短時
間で参照できれば,性能向上可
能.
(2) ストア対象アドレスがロード前
に判明していれば,プリフェッチす
ることで性能向上可能.(*)
(*) A. L. Holloway and G. S. Sohi, “Characterization of Problem Stores,”
IEEE Computer Architecture Letter, Dec. 2004.
2005/8/5
SWoPP 2005 (CPSY2005-22)
12
DL命令およびCS命令に着目すること
で,本当に性能が上がるのか?
• まず,DL/CS命令に着目する妥当性を示す.
• 検討項目
1. DL命令がプログラム実行時間に及ぼす影響は
大きいのか?
2. CS命令はそもそも存在するのか?
3. DL命令とCS命令はどのように対応している
か?どのような処理か?
4. DL命令およびCS命令のアクセスパタンは?
2005/8/5
SWoPP 2005 (CPSY2005-22)
13
評価実験環境
• シミュレータ
– SimpleScalar 3.0d
– 命令セット: PISA (32bit MIPS ISA のサブセット)
• ベンチマーク・プログラム
– SPEC CPU 2000 から 15 (Int:6, Fp: 9) 種類.
– gcc-2.7.2.3 で -O2 コンパイル.
– 入力セットは ‘‘Reference’’ を利用.
2005/8/5
SWoPP 2005 (CPSY2005-22)
14
主なシミュレータの設定
• 命令発行: アウト・オブ・オーダ
• キャッシュ・メモリ容量
– L1データ$: 32KB (64B/エントリ, 2 ウェイ)
– L1命令$: 32KB (64B/エントリ, 1 ウェイ)
– L2統合: 2MB (64B/エントリ, 4 ウェイ)
• アクセスレイテンシ
– L1: 1 クロックサイクル
– L2: 16 クロックサイクル
– 主記憶: 250 クロックサイクル
2005/8/5
SWoPP 2005 (CPSY2005-22)
15
検討項目 (1)
DL命令を全て退治できたら?
2005/8/5
SWoPP 2005 (CPSY2005-22)
16
検討項目 (2)
CS命令は存在するのか?
2005/8/5
SWoPP 2005 (CPSY2005-22)
17
検討項目 (3)
DL命令とCS命令との対応状況
• 検討項目 (1) において,性能向上可能性が
高かったベンチマークについて紹介.
– 171.swim, 179.art, 188.ammp
– 181.mcf
2005/8/5
SWoPP 2005 (CPSY2005-22)
18
DL-CS対応状況 (179.art)
scanner.c:476 (2重ループ中)
Y[tj].j += f1_layer[ti].P * bus[ti][tj]
scanner.c:193
bus[j][i] += …
scanner.c:192
temp = bus[j][i]
5288271
66%
(全CS命令の発見回数: 8051663)
2005/8/5
SWoPP 2005 (CPSY2005-22)
1802134
22%
scanner.c:455
f1_layer[ti].P
=f1_layer[ti].U
+ tsum;
19
DL-CS対応状況 (188.ammp)
atoms.c:152
if (ap->next = ap) break;
atoms.c:181
if (ap == ap->next) ap=first;
atoms.c:126
last->next = new;
atoms.c:123
if (new->next == NULL)
1169021
99%
atoms.c:150
if (ap->next == NULL) brak;
(全CS命令の発見回数: 1169305)
2005/8/5
SWoPP 2005 (CPSY2005-22)
20
DL-CS対応状況 (181.mcf)
16%
mcfutil.c:85
n->pot
=n->b_a->cost
+n->pred->pot
18%
17%
(全CS命令の発見回数: 5399729)
2005/8/5
SWoPP 2005 (CPSY2005-22)
21
DL-CS対応状況 (171.swim)
23%
23%
swim.c:416 (2重ループ中)
_BLNK__1.z[i + 1 + (j + 1) * 1335 - 1336] = (fsdx * (_BLNK__1.v[i
+ 1 + (j + 1) * 1335 - 1336] - _BLNK__1.v[i + (j + 1) *
1335 - 1336]) - fsdy * (_BLNK__1.u[i + 1 + (j + 1) * 1335
- 1336] - _BLNK__1.u[i + 1 + j * 1335 - 1336])) / (
_BLNK__1.p[i + j * 1335 - 1336] + _BLNK__1.p[i + 1 + j *
1335 - 1336] + _BLNK__1.p[i + 1 + (j + 1) * 1335 - 1336]
+ _BLNK__1.p[i + (j + 1) * 1335 - 1336]);
23%
(全CS命令の発見回数:1169911)
2005/8/5
SWoPP 2005 (CPSY2005-22)
22
まとめ (1/2)
• メモリ・システム高性能化手法開発において,
DL命令およびCS命令に着目することの妥当
性を検討.
– DL命令が性能に大きな影響を与えることを確認.
– ほぼ全てのDL命令に対し,CS命令が存在.
非常に密接に関連している場合もある.
DL命令およびCS命令への着目は妥当.
• 性能向上に寄与するかどうかの検討が必要.
2005/8/5
SWoPP 2005 (CPSY2005-22)
23
まとめ (2/2)
• 今後の課題
– DL命令およびCS命令によるアクセス・パタンの
調査(済み).
– 入力を変えた場合の調査.

– キャッシュ・ミスの特徴をより詳しく解析し,
その特徴を反映した方法論の提案および評価.
2005/8/5
SWoPP 2005 (CPSY2005-22)
24
ご静聴ありがとうございました
2005/8/5
SWoPP 2005 (CPSY2005-22)
25