Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
投機的実行
安藤 秀樹
名古屋大学大学院 工学研究科 電子情報学専攻
http://www.shimada.nuee.nagoya-u.ac.jp/~ando/index.html
富士通 1999 1 安藤秀樹
ILP と投機的実行
実行時間 = 実行命令数 × CPI × サイクル時間
■ より低い CPI(より高い IPC)の実現• ILP利用
■ なぜ ILPか?• 整数系プログラム• 大きな粒度の利用不能
• 解析困難:複雑な制御構造、不規則なデータ依存、ポインタアクセス
• 並列化困難:あらゆるところに存在するデータ依存
■ 投機的実行• プログラムより ILPを引き出す 1つの技術• 制約を違反して実行• 制御依存制約やデータ依存制約を緩和
富士通 1999 2 安藤秀樹
性能のトレンド1.6x / year
富士通 1999 3 安藤秀樹
1990 1991 1992 1993 1994 1995 1996 1997 1998
Year
0.1
1.0
10.0
100.0
SP
EC
int9
5
R3000
SPARC
i486
PA
S-SPARC
PA7100
R4000
21064
21064A
Pentium
R4400
PPC604
PPC604e
PA8000
PA8200
21164
U-SPARC
U-SPARC2
R10000
PPro
Pentium II
Power3
21264
クロック速度
富士通 1999 4 安藤秀樹
1990 1991 1992 1993 1994 1995 1996 1997 1998
Year
10
100
1,000
Clo
ck R
ate
(MH
z)
R3000
SPARC
i486
PA
S-SPARC
PA7100
R4000
21064
21064A
Pentium
R4400
PPC604
PPC604e
PA8000
PA8200
21164
U-SPARC
U-SPARC2
R10000
PPro
Pentium II
Power3
21264
命令レベル並列ILP: Instruction-Level Parallelism
富士通 1999 5 安藤秀樹
1990 1991 1992 1993 1994 1995 1996 1997 1998
Year
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
(SP
EC
int9
5/M
Hz)
*50
R3000
SPARC
i486
PA
S-SPARC
PA7100
R4000
21064
21064A
Pentium
R4400
PPC604
PPC604e
PA8000
PA8200
21164
U-SPARC
U-SPARC2
R10000
PPro
Pentium II
Power3
21264
富士通 1999 6 安藤秀樹
内容
■ ILP利用へのアプローチ• ソフトウェア• ハードウェア• 統合
■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測
■ 今後のアーキテクチャ• VLIW
• MP
■ まとめ
ILP 限界
■ ILP < 2
• many 1.1− 1.3
• Jouppi 1989 < 2
■ ILP > 2
• Smith 1989 2 − 3
• Butler 1991 2 − 4
• Wall 1992 4 − 5
• Lam 1992 7
■ 制御依存• 最も大きな制約• 投機的実行
富士通 1999 7 安藤秀樹
ILP への 3つのアプローチ
■ ソフトウェア主体• VLIW
• 静的命令スケジューリング
■ ハードウェア主体• スーパスカラ・プロセッサ• 動的命令スケジューリング
■ ソフトウェア + 投機的実行支援ハードウェア
富士通 1999 8 安藤秀樹
ソフトウェア主体
■ コンパイラによる高度な命令スケジューリング• ループ
• e.g. loop unrolling, software pipelining
• DAG
• e.g.trace scheduling [Fisher 1981]
■ 長所• 広い命令ウィンドウ• クリティカル・パスの利用• 実行時オーバヘッドなし
■ 短所• バイナリ非互換• 投機的実行に対する制約が大きい• 補償コードによるオーバヘッド• 不正確な静的分岐予測に大きく依存
富士通 1999 9 安藤秀樹
ハードウェア主体
■ フェッチした命令から独立な命令を探す• out-of-order実行スーパスカラ・プロセッサ• スコアボーディング [Thornton 1964]
• Tomasuloのアルゴリズム [Tomasulo 1967]
• レジスタ・リネーミング [Keller 1975]
■ 投機的実行• 分岐予測 [Lee 1984]
• リオーダ・バッファ [Smith 1985]
• チェック・ポイント・リペア [Hwu 1987]
■ 長所• バイナリ互換• 強力な投機的実行
富士通 1999 10 安藤秀樹
■ 短所• アドホックなスケジューリング• 複雑なハードウェア
ソフトウェア + 投機的実行支援ハードウェア
■ 投機的実行のハードウェア支援• プロセッサ状態管理• 投機的例外に対する機構• プレディケート実行
■ 例• boosting [Smith 1990]
• sentinel scheduling [Mahlke 1992]
• predicating [Ando 1995]
■ 長所• 投機的実行への制約除去• 高度なスケジューリング
■ 短所• バイナリ非互換
富士通 1999 11 安藤秀樹
時代はスーパスカラ・プロセッサ
■ 絶対的強み• バイナリ互換
■ 悲観的観測• RISC思想に反する考え
• IPC向上 − 複雑さによるクロック低下 < 0
• 設計困難→ 高い設計コスト + 市場投入時期の遅れ• 1.6x / year
• 例:Moto MC88110
■ 別の追い風• VLIWで実現可能な IPCはたいして高くない
• Multiflow倒産
富士通 1999 12 安藤秀樹
富士通 1999 13 安藤秀樹
内容
■ ILP利用へのアプローチ
■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測
■ 今後のアーキテクチャ• VLIW
• MP
■ まとめ
高性能化への 2つの方向
実行時間 = 実行命令数 × CPI × サイクル時間
■ クロック速度の向上• 深いパイプライン
■ IPC向上• 資源増加• 命令ウィンドウ拡大• 命令発行バンド幅拡大
■ 要求• 非常に正確な分岐予測機構• ハードウェアの単純化
富士通 1999 14 安藤秀樹
パイプライン
■ 複雑な処理• 仕事が多い• パイプライン・ステージ数増加
■ 処理を細分化• さらに深く
富士通 1999 15 安藤秀樹
Fetch Rename Dispatch Register Execute Write
Fetch Execute WriteDecodeRegister
Decode
スカラ・プロセッサ
スーパスカラ・プロセッサ
深いパイプラインの欠点
■ 高いコスト• パイプライン・レジスタ
■ より多くの独立な命令が必要• パイプライン・バブル• ILP向上が必要
■ ALU実行はパイプライン化したくない• 頻繁• クロック速度の上限を抑える• バイパスによる実行ステージの遅延の増大 [Hara 1996]
■ 分岐予測ミス・ペナルティの増加• スカラ・プロセッサ:1~2サイクル• Pentium Pro:10~12サイクル
富士通 1999 16 安藤秀樹
要求される分岐予測精度
■ Amdahlの法則:CPIideal が小さい⇒ミスによる性能への影響大
■ 分岐ペナルティ rを 10%以下にするためには、分岐予測ミスは?
penaltybranch = %branch×penaltymispredicted ×%misprediction
penaltybranch / CPIideal < r
→ %misprediction < ( r ×CPIideal ) / ( %branch × penaltymispredicted )
• スカラ%mispredictionscalar < ( 0.1×1 ) / ( 0.2 ×1 ) = 0.5
⇒ delayed branch
• 4-issue スーパスカラ%mispredictionsuperscalar < ( 0.1×0.25 ) / ( 0.2 ×10 ) = 0.00125
■ 分岐予測ミス 10%による性能低下率は?penaltybranch = 0.2×10 × 0.1 = 0.2
degradation = penaltybranch / CPIideal = 0.2 / 0.25 = 0.8
富士通 1999 17 安藤秀樹
IPC向上への課題
■ 高いコスト• FU, D-Cache Ports, Register Ports, Reservation Station, etc
■ ハードウェアの複雑化• 広い発行バンド幅と大きな命令ウィンドウ• データ依存解析:O (n × w) ~ O (n2)
■ 非常に正確な分岐予測機構が必要• 非常に正確な命令ウィンドウを形成• 非常に正確な分岐予測が必要
• 16命令 (PPC 604e)⇒連続 2分岐正解 → 1/3正解 → 予測精度 67%
• 128命令(ILP Mania)⇒連続 25分岐正解 → 1/26正解 → 予測精度 96%
富士通 1999 18 安藤秀樹
命令ウィンドウの大きさと ILP
[Wall 1991]より
富士通 1999 19 安藤秀樹
4 8 16 32 64 128 256 512
Window Size
0.0
5.0
10.0
15.0
20.0
25.0
30.0
35.0
ILP
gcc
espresso
li
複雑さ
■ オペランド・バイパス• 大きな FO
• operands/instruction × window size
• e.g. 2 × 64 = 128
• 長い配線• 配線遅延 >> ゲート遅延
■ 命令発行• 大きな FO
• 多数の比較器• log(tag length) × issue width × operands/instruction
× window size
• e.g. 6 × 8 × 2 × 64 = 6144
• 長い配線• windowの die area ∼ 20% @PA-8000 (4-issue, 56-inst win)
富士通 1999 20 安藤秀樹
スカラ・プロセッサのバイパス回路
[Hara 1996]より
富士通 1999 21 安藤秀樹
tri-state buffer latch
register file
WRS
RT
ALU
EXC MEM WB
branchloadstore
スーパスカラ・プロセッサのバイパス回路
[Hara 1996]より
富士通 1999 22 安藤秀樹
ALU
shifter
resu
lt bu
s3
result
source register
source selector
operand selector
reservation station
selector
to other reservation stations
resu
lt bu
s2re
sult
bus1
resu
lt bu
s0
ALU 実行時間 + バイパスの遅延時間
[Hara 1996]より
• Mitsubishi, 0.5µm CMOS, 3-metal
• 37%遅い
富士通 1999 23 安藤秀樹
ALU (5.46) RS+RBD
0 5.46OS+
7.67
SS(22) SS(2.21) (0.71)
ALU (5.18)
0 5.18
(0.58)Scalar SBD
5.76ns
8.38ns
RBD: result bus driveRS: result select OS: operand select
SS: source select
SBD: source bus drive
命令発行
[Palacharla 1997]より
富士通 1999 24 安藤秀樹
ready
resulttag
instruction windowentry
operand/tagt/v
==
OR
operation t/voperand/tag
prio
ritiz
ed s
elec
tion
ready
grant
grant
=
=
OR
命令発行の遅延時間
[Hara 1996]より
• reservation station entires = 2 × #FU
• 162%遅い• 集中ウィンドウでは発行命令の選択にもっと時間がかかる
富士通 1999 25 安藤秀樹
0 4.702.51 6.44ns
(2.51)
result bus arbitration +tag drive (1.43)
tag compare OAC
Scalarregister number
compare(1.58)
0 1.58 2.46ns
SS(22)
FSS(0.88)
FSS: forwarding source select
SSC(1.74)
OAC: operand availability check
(0.76)
3.94
SSC: source selector control
複雑化の抑制
■ クラスタリング [Palacharla 1997](Alpha 21264)• 問題の分割• ローカル・レジスタ• ローカル・バイパス• ステアリング
• 依存のある命令を同一のクラスタに発行
■ 性能• 2x4-issue, 64-inst win
• 1-cycle intra-cluster
penalty
• IPC = 0.94x
• cycle time = 0.8x
• speedup over 8-issue
= 1.17x
富士通 1999 26 安藤秀樹
stearing
instructions
cluster
registerfile
FU FU
registerfile
FU FU
cluster
富士通 1999 27 安藤秀樹
内容
■ ILP利用へのアプローチ
■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測
■ 今後のアーキテクチャ• VLIW
• MP
■ まとめ
2ビット・カウンタ予測
■ 将来の分岐方向は過去の方向の頻度と相関がある• 21164, R10000, PPC604e, U-SPARC,...
• 予測ミス率:14%(SPECint92, 4 Kbits)[Gloy 1996]
富士通 1999 28 安藤秀樹
分岐命令のアドレス
予測
2ビット飽和型アップダウンカウンタ
分岐すると強く予測
分岐すると弱く予測
分岐しないと弱く予測
分岐しないと強く予測
11 10 01 00
taken
not taken
2レベル適応型方式
■ PAs(per-address)[Yeh 1992]
• 分岐のパターンの繰り返しを検出• ローカル履歴• Pentium Pro
■ GAs [Yeh 1992][Pan 1992], gshare [McFarling 1993]
• 他の分岐との相関を利用• グローバル履歴• US-3
■ ハイブリッド• ローカル履歴予測とグローバル履歴予測の組み合わせ• 予測器選択の予測器• 21264
富士通 1999 29 安藤秀樹
PAs
■ 分岐のパターンの繰り返しを検出
• 1つの分岐に対しても、パターン毎に 2bcを持つ
TTTNTTTN...
{TTTN} {TTNT} {TNTT} {NTTT}それぞれに対して 2bcを持つ
■ 短い繰り返し回数のループに有効
4回繰り返すループの分岐
分岐方向 TTTNTTTN
2bc TTTTTTTT → 予測ミス率 = 25% !
PAs TTTNTTTN → 予測ミス率 = 0% !
富士通 1999 30 安藤秀樹
PAs の構成
• BHT(Branch History Table):分岐毎の履歴パターン• PHT(Pattern History Table):2bcの配列• Pentium Pro: (i,j,k) = (9,9,4)
• 予測ミス率 = 7%(64 Kbits, SPECint92)[Gloy 1996]
富士通 1999 31 安藤秀樹
PHTBHT
分岐命令のアドレス
予測
jビット
iビット
kビット
2bc
gshare
■ 他の分岐の方向と自分の分岐方向が相関を持つif (aa == 2) aa = 0;
if (bb == 2) bb = 0;
if (aa != bb) ...;
■ PHTのインデクス• address XOR history
• 例:U-SPARC3: (m,n) = (12,2)
• 予測ミス率 = 6%(64 Kbits, SPECint92 )[Gloy 1996]
富士通 1999 32 安藤秀樹
gshare の構成
富士通 1999 33 安藤秀樹
m bits n bits
分岐命令アドレス
m bits
分岐履歴
PHTのインデクス (m + n) bits
PHT
予測
予測精度の比較
富士通 1999 34 安藤秀樹
com
pres
s
espr
esso
gcc li
sc
mea
n
SPECint92
0
5
10
15
20
25
30
分岐予測ミス率
[%]
2bc(15)
PA(14,10,3)
GA(6,9)
gshare(15,15)
[Gloy 1996]より
履歴長と予測精度
• 履歴を長くすれば予測精度は改善• 長くしすぎると低下→ 競合
富士通 1999 35 安藤秀樹
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
履歴長 [bits]
6.0
6.5
7.0
7.5
8.0
8.5
9.0
9.5
10.0
10.5
分岐予測ミス率
[%]
real_gcc
[野口 1999]より
PHTでの競合
■ 競合(aliasing)• 異なるアドレスと履歴の組が PHTの同一のカウンタに対応• 過去の振る舞いが混合され予測精度低下
富士通 1999 36 安藤秀樹
Branch 1
1 0History
Address
0 0
0 1 1 0
1 1 01Index
.
.
.
.
.
.
Branch 2
1
0History
Address0
00
1
1
0
1 1 01Index
PHT
Aliasing
履歴長と競合
■ トレードオフ• 長い履歴ほど多くの情報• 長い履歴ほど多くの競合
富士通 1999 37 安藤秀樹
0 1 2 3 4 5 6 7 8 9 10 11 12
履歴長 [bits]
0.0
2.0
4.0
6.0
8.0
10.0
12.0
14.0
16.0
予測ミス率
[%] または
競合率
[%]
real misprediction
ideal misprediction
destructive rate
gcc
[森 1998]より
競合の内訳
• 破壊的競合 >> 建設的競合
富士通 1999 38 安藤秀樹
0 2 4 6 8 10 12 14
履歴長 [bits]
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
競合率
[%]
破壊的
無害
建設的
real_gcc
[野口 1999]より
破壊的競合の削減
■ 2レベル分岐予測はなぜ当たるのか?• 動的分岐流をアドレスと履歴で分類• 各分岐流の多くは一方に偏っている
■ 偏った分岐流同士の競合• 無害か破壊的
■ sgshare [野口 1997](bi-mode gshare [Lee 1997])• 破壊的競合を無害な競合に変える• 同一方向に偏った分岐流同士を競合させる• 新たな分類器
• 分岐自身の偏り
富士通 1999 39 安藤秀樹
sgshare
富士通 1999 40 安藤秀樹
XOR分岐命令アドレス
分岐履歴
Tテーブル
Nテーブル
分岐偏りテーブルBBHT
分離PHT
予測
セレクタ
sgshare 予測精度
• PHT: 32K (gshare) vs. 16K + 16K (sgshare)エントリ• BBHT: 1 bit × 8K エントリ
富士通 1999 41 安藤秀樹
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
履歴長 [bits]
6.0
6.5
7.0
7.5
8.0
8.5
9.0
9.5
10.0
10.5
分岐予測ミス率
[%]
gshare
sgshare
real_gcc
[野口 1999]より
sgshare 競合率
• 競合の総量は増加 ← 容量性競合増加による• 履歴が長ければ、破壊的競合は減少• 履歴が長ければ、無害な競合は増加
富士通 1999 42 安藤秀樹
0 2 4 6 8 10 12 14
履歴長 [bits]
0.0
2.0
4.0
6.0
8.0
10.0
12.0
競合率
[%]
破壊的
無害
建設的
[野口 1999]より
コスト性能比
• 良いコスト対性能比
富士通 1999 43 安藤秀樹
1 10 100
ハードウェア・コスト [Kbytes]
4.0
5.0
6.0
7.0
8.0
9.0
10.0
分岐予測ミス率
[%]
gshare
sgshare
real_gcc
プロセッサ性能の向上率
■ 性能向上• 0.05~0.89%予測精度向上(平均予測精度 97%)• 0.3~13%性能向上
富士通 1999 44 安藤秀樹
grof
f
gs
jpeg
_pla
y
mpe
g_pl
ay
nrof
f
real
_gcc
sdet
veril
og
vide
o_pl
ay
0.0
2.0
4.0
6.0
8.0
10.0
12.0
14.0
性能向上率
[%]
■ gshare
• 15-bit index
• 9-bit history
■ sgshare
• 14-bit index
• 11-bit history
■ superscalar
• 8-issue
• 10-cycle misprediction
penalty
[野口 1999]より
完全予測による性能向上率
• 予測精度はさらに改善する必要がある
富士通 1999 45 安藤秀樹
grof
f
gs
jpeg
_pla
y
mpe
g_pl
ay
nrof
f
real
_gcc
sdet
veril
og
vide
o_pl
ay
0.0
10.0
20.0
30.0
40.0
50.0
60.0
70.0
80.0
性能向上率
[%]
[野口 1999]より
この他の分岐予測機構
■ gskew [Michaud 1997]
• 3つの PHTを用意• 異なるハッシュ関数• 多数決• 容量性競合
■ agree-mode gshare [Sprangle 1997]
• 破壊的競合の削減• PHT:静的分岐予測(それに替わるもの)に対して
• agree / disagree
• 容量性競合の犠牲がない• 分類は動的に変化しない
富士通 1999 46 安藤秀樹
富士通 1999 47 安藤秀樹
内容
■ ILP利用へのアプローチ
■ 既存のアーキテクチャでの高性能化
■ 今後のアーキテクチャ• VLIW
• MP
■ まとめ
VLIW
■ コンパイラがスケジューリング• ソース・プログラム → 機械語のプログラム → スケジューリング• 同時実行する命令を並べる
■ ハードウェア• 同時にフェッチした命令を同時に実行する• 依存解析なし• スケジューリングなし• VLIW(Very Long Instruction Word)マシン
• Intel/HP IA-64, Merced @Mid-2000?
■ 互換性なし• 既存のコード
• H/W translator • S/W translator • Superscalar + VLIW (e.g. Merced, IA-32 + IA-64 )
• 拡張性• グルーピング情報 (e.g. IA-64)
富士通 1999 48 安藤秀樹
トレース・スケジューリング [Fisher 1981]
■ 命令ウィンドウ設定• トレース =静的分岐予測パス
■ トレースをリスト・スケジューリング
■ 補償コード挿入
富士通 1999 49 安藤秀樹
A
B
C
D
E
F
G
スケジュール表
利点と欠点
■ 利点• 広域命令移動の一般的な枠組み• 広域な先行制約情報による heuristics
• 隣り合うブロック間での命令移動(e.g. Percolation [Nicolau
1985])の繰り返しによるアルゴリズムに勝る
■ 欠点• 静的分岐予測に大きく依存
• 静的予測精度 = 80~90%:不十分• トレース外の補償コード
• 性能低下• コード量増大
• 補償コード生成が複雑 + 一般的最適化が困難(計算量が多い)
富士通 1999 50 安藤秀樹
EPIC
■ Explicit Parallel Instruction Computing• Intel/HP の IA-64命令セットの特徴• Merced:IA-64を実現する最初のチップのコード名• 商業上の固有名詞
• 1970~1980年代の VLIWとは機能的には違う• しかし VLIWと思想は同じ• 普通は(学会では)VLIWと呼ぶ
■ 特徴• プレディケート実行 ⇒分岐除去• 多くのレジスタ(128) ⇒ レジスタ・リネーミング• センティネル・スケジューリング ⇒投機的実行• グルーピング情報 ⇒コード圧縮
■ Defacto Standard• (いやだけど)たぶん• 他のメーカの多くは撤退を宣言
富士通 1999 51 安藤秀樹
分岐除去
■ 制御依存情報
• 通常の命令によるプログラム• 命令に明示されてはいない• プログラムの「流れ」で表現
• プレディケート:命令に明示
■ 分岐を命令にエンコード
• 複数の制御の流れを 1つにする
富士通 1999 52 安藤秀樹
if (c1) { ... if(!c2) { r1 = r2 + r3; ...
p1 = c1 & !c2;
r1 = r2 + r3 if p1;
通常のコード プレディケート付き命令
ハイパブロック・スケジューリング [Mahlke 1992]
■ 実行頻度の比較的高いブロックをウィンドウ• プロファイル• トレース・スケジューリングの複数のパスへの拡張
■ ウィンドウ内命令をスケジューリング
富士通 1999 53 安藤秀樹
A
B
C
E
X
D
スケジュール表
投機的実行実現における問題点
■ 不正
• プログラムの意味の破壊
• 生きている値の破壊
• 記憶場所での衝突の回避
■ 危険
• 例外発生
• 不正な停止、性能低下
• 投機的例外:実行結果が真に必要と分
かるまで処理を延期
富士通 1999 54 安藤秀樹
r2 = r1 ... r1 = r2 & r3
r1 = ... r1 = load r2
レジスタ・リネーミング
■ 書込みレジスタの変更
• レジスタの live解析 [Aho 1986]
• 空のレジスタを書込み先にする• 制御が確定したら元のレジスタにコピー
■ 得失• 簡単• レジスタが多く必要
• IA-64: 128レジスタ
富士通 1999 55 安藤秀樹
r2 = r1 ... r1 = r2 & r3 r2 = r1 ...
r2 = r2 & r3
r1 = r2
Non-excepting [Colwel 1987]
■ エンコード• 投機的例外を起こす可能性のあることを命令にエンコード
• non-excepting命令• e.g. load.ne
• 例外を生じても即座に例外処理を行うことはしない
■ 書込みレジスタへのタグ付け• 書込みレジスタに
• 自分の命令アドレスを書き込む• マークする
■ 例外処理• マークされたレジスタを参照したら例外を処理する
• 処理(+例外命令の再実行)• マークされたレジスタを(non-excepting命令でない)普通の命令が上書きする時、マークをリセット
富士通 1999 56 安藤秀樹
Sentinel Scheduling [Mahlke 1992]
■ エンコード• 投機的命令は全てラベリング
■ 書込みレジスタへのタグ付け
■ タグの伝搬• タグの付いたレジスタを投機的命令が参照したとき
• 例外を処理しない• 実行もしない• 書込みレジスタに参照レジスタの内容をコピーしマーク
■ 例外処理• マークされたレジスタを非投機的命令が参照したら例外を処理し、例外を検出した命令まで全て再実行
• マークされたレジスタを非投機的命令が上書きする時、マークをリセット
富士通 1999 57 安藤秀樹
VLIW の課題
■ 互換性• エミュレータ→我慢できないくらい遅い• トランスレータ(e.g. Digital FX!32)→いらいらする• ローダ→起動が非常に遅い• H/W トランスレータ(e.g. x86 互換性ユニット)→高い
■ 拡張性 H/Wの性能向上の恩恵をどうやって享受するか?• H/Wに合わせてコードを生成しないと性能は引き出せない• Merced:次のバンドルのどの命令までグルーピングできるか?
■ 動的変動による性能低下をどう防ぐか?• データ・キャッシュ・ミス→ ?
■ 本当にスーパスカラより高速なのか?• 40%高速 [Hara 1996]
• しかしスーパスカラの技術は依然進歩を続けている• 分岐予測、トレース・キャッシュ、クラスタリング等
富士通 1999 58 安藤秀樹
Superscalar vs. VLIW (サイクル数)
富士通 1999 59 安藤秀樹
com
pres
s
eqnt
ott
espr
esso
grep
li
nrof
f
g-m
ean
1.0
1.5
2.0
2.5
3.0
3.5
Cyc
le C
ount
Spe
edup
superscalar
simple VLIW
predicating
[Ando 1995][Hara 1996]
■ スーパスカラ• 4 issue
• 22 RSs
• 2bc
• 3-cycle BMP
■ Simple VLIW
• 4 issue
• trace scheduling+
• no predicate
• no speculation
• 2bc, 2-cycle BMP
■ Predicating
• 4 issue
• hyperblock sched+
• predicate
• speculation
• 2bc, 2-cycle BMP
superscalar/VLIW = 1.18x
predicating/VLIW = 1.29x
predicating/super = 1.09x
Superscalar vs. VLIW (サイクル時間)
■ 見積方法• Mitsubishi, 0.5µm CMOS, 3M
• クリティカル・パス候補を選出し、論理設計• FO、配線長を見積り、負荷を付けて静的遅延解析ツールで測定• トランジスタのサイジング、論理回路最適化• キャッシュ(6.0ns)と加算器(3.9ns)はライブラリ• レジスタ・ファイルはレイアウト設計
■ クリティカル・パス• simple VLIW: ALU
• predicating: (ALU → condition → predicate calc→ RF read) / 2
~ ALU
• superscalar: ALU(optimistic)
富士通 1999 60 安藤秀樹
superscalar simple VLIW predicating
9.2ns 6.9ns 7.1ns
1.33x 1.00x 1.03x
Superscalar vs. VLIW (性能)
富士通 1999 61 安藤秀樹
com
pres
s
eqnt
ott
espr
esso
grep
li
nrof
f
g-m
ean
1.0
1.5
2.0
2.5
3.0
3.5P
erfo
rman
cesuperscalar
simple VLIW
predicating
superscalar/VLIW = 0.89x
predicating/VLIW = 1.25x
predicating/super = 1.41x
Superscalar vs. EPIC
• スーパスカラと EPICの IPCはほとんど変わらない
• 性能はクロック速度の違いから来る
富士通 1999 62 安藤秀樹
com
pres
s95
ijpeg
li
m88
ksim
vort
ex
gmea
n
1.0
1.5
2.0
2.5
3.0
3.5
4.0
IPC
8-issue superscalar
6-issue EPIC
• EPIC
• August (1998)の論文の Figure 5
• 基本マシンの IPC
= 1.56
• 6 issue
• static, 6-cycle BMP
• 4 ALU, 2 MEM,
1 Branch
• HP-7100
• superscalar
• 8 issue
• full FUs
• 64 RSs
• 1024 4-history PAp
4-cycle BMP
• MIPS R2000
富士通 1999 63 安藤秀樹
内容
■ ILP利用へのアプローチ
■ 既存のアーキテクチャでの高性能化
■ 今後のアーキテクチャ• VLIW
• MP
■ まとめ
規模拡大による見返り
• 16-issue 4~13% 性能向上 over 8-issue
• 投資に対する見返りが小さい
富士通 1999 64 安藤秀樹
com
pres
s95
gcc
go
ijpeg
li
m88
ksim
perl
vort
ex
0
2
4
6
8
10
12
14
Spe
edup
[%]
規模拡大の問題
■ 少ない見返り• 多大なる投資• 10%程度の性能向上
■ 大きな犠牲• 複雑度向上• コスト増加• クロック速度低下• 開発期間増加
富士通 1999 65 安藤秀樹
単一チップ MP
■ 伝統的アーキテクチャ(メモリ・ベース)• Hydra [Hammond 1998]
• L2キャッシュ共有• L1キャッシュのコヒーレント制御• スレッド投機• ループや関数で分割• 0.62 ~ 1.04x (+ jpeg:1.51x) w/ 4 procs over 1 proc
■ 伝統的アーキテクチャ(レジスタ・ベース)• MAP [Keckler 1998]
• 3 x 3-issue VLIWs
• L1キャッシュ共有• レジスタ・ベースの通信と同期 → メモリ操作を削減
• リモート・レジスタへの書き込みによる通信• full/empty ビットによる同期
• 1.2~2.1x (fp app) fine grain
富士通 1999 66 安藤秀樹
単一チップ MP(cont’d )
■ SMT (Simultaneous Multithreading) [Tullsen 1995]
• 実行ユニット共有— 遅い• multitasking — 用途が狭い
■ Multiscalar [Sohi 1995]
• 単純なスレッド実行モデル
→ スレッド並列実行のオーバヘッドの削減• 逐次スレッド、結合なし• スレッド生成:数サイクル• スケジューリングなし
• レジスタ通信:結合レジスタ・ファイル• レジスタ同期:full/empty ビット• 類似の研究
• MUSCAT [鳥居 1997] — レジスタ一括転送、ユニット共有• SKY [小林 1997] — window-based, nonblocking sync
富士通 1999 67 安藤秀樹
SKY 性能向上率
• 2-issue 2 proc SKYは 16-issueと同等のハードウェア量で IPC
を大幅向上• 低い複雑さ
富士通 1999 68 安藤秀樹
com
pres
s95
gcc
go
ijpeg
li
m88
ksim
perl
vort
ex
-10
0
10
20
30
40
50
60
70
Spe
edup
[%]
16-issue 1 processor
8-issue 2 processors
8-issue 4 processors
[Kobayashi 1999]より
まとめ
■ ILP• 投機的実行:プログラムに存在する ILPを増加させる技術• 3つのアプローチ
■ スーパスカラ・プロセッサ• ハードウェア・アプローチ• 複雑さの抑制• 高精度分岐予測
■ VLIW• ソフトウェア・アプローチ• 必須の投機的支援ハードウェア• 単純さによるクロックの高速化
■ MP• 整数系応用への挑戦• 低性能な伝統的アーキテクチャ• スレッド並列実行のオーバヘッドを最小化• レジスタ通信
富士通 1999 69 安藤秀樹