投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 =...

69
投機的実行 安藤 秀樹 名古屋大学大学院 工学研究科 電子情報学専攻 [email protected] http://www.shimada.nuee.nagoya-u.ac.jp/~ando/index.html 富士通 1999 1 安藤秀樹

Transcript of 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 =...

Page 1: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

投機的実行

安藤 秀樹

名古屋大学大学院 工学研究科 電子情報学専攻

[email protected]

http://www.shimada.nuee.nagoya-u.ac.jp/~ando/index.html

富士通 1999 1 安藤秀樹

Page 2: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ILP と投機的実行

実行時間 = 実行命令数 × CPI × サイクル時間

■ より低い CPI(より高い IPC)の実現• ILP利用

■ なぜ ILPか?• 整数系プログラム• 大きな粒度の利用不能

• 解析困難:複雑な制御構造、不規則なデータ依存、ポインタアクセス

• 並列化困難:あらゆるところに存在するデータ依存

■ 投機的実行• プログラムより ILPを引き出す 1つの技術• 制約を違反して実行• 制御依存制約やデータ依存制約を緩和

富士通 1999 2 安藤秀樹

Page 3: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

性能のトレンド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

Page 4: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

クロック速度

富士通 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

Page 5: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

命令レベル並列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

Page 6: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

富士通 1999 6 安藤秀樹

内容

■ ILP利用へのアプローチ• ソフトウェア• ハードウェア• 統合

■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測

■ 今後のアーキテクチャ• VLIW

• MP

■ まとめ

Page 7: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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 安藤秀樹

Page 8: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ILP への 3つのアプローチ

■ ソフトウェア主体• VLIW

• 静的命令スケジューリング

■ ハードウェア主体• スーパスカラ・プロセッサ• 動的命令スケジューリング

■ ソフトウェア + 投機的実行支援ハードウェア

富士通 1999 8 安藤秀樹

Page 9: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ソフトウェア主体

■ コンパイラによる高度な命令スケジューリング• ループ

• e.g. loop unrolling, software pipelining

• DAG

• e.g.trace scheduling [Fisher 1981]

■ 長所• 広い命令ウィンドウ• クリティカル・パスの利用• 実行時オーバヘッドなし

■ 短所• バイナリ非互換• 投機的実行に対する制約が大きい• 補償コードによるオーバヘッド• 不正確な静的分岐予測に大きく依存

富士通 1999 9 安藤秀樹

Page 10: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ハードウェア主体

■ フェッチした命令から独立な命令を探す• out-of-order実行スーパスカラ・プロセッサ• スコアボーディング [Thornton 1964]

• Tomasuloのアルゴリズム [Tomasulo 1967]

• レジスタ・リネーミング [Keller 1975]

■ 投機的実行• 分岐予測 [Lee 1984]

• リオーダ・バッファ [Smith 1985]

• チェック・ポイント・リペア [Hwu 1987]

■ 長所• バイナリ互換• 強力な投機的実行

富士通 1999 10 安藤秀樹

■ 短所• アドホックなスケジューリング• 複雑なハードウェア

Page 11: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ソフトウェア + 投機的実行支援ハードウェア

■ 投機的実行のハードウェア支援• プロセッサ状態管理• 投機的例外に対する機構• プレディケート実行

■ 例• boosting [Smith 1990]

• sentinel scheduling [Mahlke 1992]

• predicating [Ando 1995]

■ 長所• 投機的実行への制約除去• 高度なスケジューリング

■ 短所• バイナリ非互換

富士通 1999 11 安藤秀樹

Page 12: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

時代はスーパスカラ・プロセッサ

■ 絶対的強み• バイナリ互換

■ 悲観的観測• RISC思想に反する考え

• IPC向上 − 複雑さによるクロック低下 < 0

• 設計困難→ 高い設計コスト + 市場投入時期の遅れ• 1.6x / year

• 例:Moto MC88110

■ 別の追い風• VLIWで実現可能な IPCはたいして高くない

• Multiflow倒産

富士通 1999 12 安藤秀樹

Page 13: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

富士通 1999 13 安藤秀樹

内容

■ ILP利用へのアプローチ

■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測

■ 今後のアーキテクチャ• VLIW

• MP

■ まとめ

Page 14: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

高性能化への 2つの方向

実行時間 = 実行命令数 × CPI × サイクル時間

■ クロック速度の向上• 深いパイプライン

■ IPC向上• 資源増加• 命令ウィンドウ拡大• 命令発行バンド幅拡大

■ 要求• 非常に正確な分岐予測機構• ハードウェアの単純化

富士通 1999 14 安藤秀樹

Page 15: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

パイプライン

■ 複雑な処理• 仕事が多い• パイプライン・ステージ数増加

■ 処理を細分化• さらに深く

富士通 1999 15 安藤秀樹

Fetch Rename Dispatch Register Execute Write

Fetch Execute WriteDecodeRegister

Decode

スカラ・プロセッサ

スーパスカラ・プロセッサ

Page 16: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

深いパイプラインの欠点

■ 高いコスト• パイプライン・レジスタ

■ より多くの独立な命令が必要• パイプライン・バブル• ILP向上が必要

■ ALU実行はパイプライン化したくない• 頻繁• クロック速度の上限を抑える• バイパスによる実行ステージの遅延の増大 [Hara 1996]

■ 分岐予測ミス・ペナルティの増加• スカラ・プロセッサ:1~2サイクル• Pentium Pro:10~12サイクル

富士通 1999 16 安藤秀樹

Page 17: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

要求される分岐予測精度

■ 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 安藤秀樹

Page 18: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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 安藤秀樹

Page 19: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

命令ウィンドウの大きさと 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

Page 20: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

複雑さ

■ オペランド・バイパス• 大きな 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 安藤秀樹

Page 21: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

スカラ・プロセッサのバイパス回路

[Hara 1996]より

富士通 1999 21 安藤秀樹

tri-state buffer latch

register file

WRS

RT

ALU

EXC MEM WB

branchloadstore

Page 22: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

スーパスカラ・プロセッサのバイパス回路

[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

Page 23: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 24: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

命令発行

[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

Page 25: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

命令発行の遅延時間

[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

Page 26: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

複雑化の抑制

■ クラスタリング [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

Page 27: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

富士通 1999 27 安藤秀樹

内容

■ ILP利用へのアプローチ

■ 既存のアーキテクチャでの高性能化• 深いパイプライン• 広い命令発行バンド幅• 分岐予測

■ 今後のアーキテクチャ• VLIW

• MP

■ まとめ

Page 28: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

2ビット・カウンタ予測

■ 将来の分岐方向は過去の方向の頻度と相関がある• 21164, R10000, PPC604e, U-SPARC,...

• 予測ミス率:14%(SPECint92, 4 Kbits)[Gloy 1996]

富士通 1999 28 安藤秀樹

分岐命令のアドレス

予測

2ビット飽和型アップダウンカウンタ

分岐すると強く予測

分岐すると弱く予測

分岐しないと弱く予測

分岐しないと強く予測

11 10 01 00

taken

not taken

Page 29: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

2レベル適応型方式

■ PAs(per-address)[Yeh 1992]

• 分岐のパターンの繰り返しを検出• ローカル履歴• Pentium Pro

■ GAs [Yeh 1992][Pan 1992], gshare [McFarling 1993]

• 他の分岐との相関を利用• グローバル履歴• US-3

■ ハイブリッド• ローカル履歴予測とグローバル履歴予測の組み合わせ• 予測器選択の予測器• 21264

富士通 1999 29 安藤秀樹

Page 30: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

PAs

■ 分岐のパターンの繰り返しを検出

• 1つの分岐に対しても、パターン毎に 2bcを持つ

TTTNTTTN...

{TTTN} {TTNT} {TNTT} {NTTT}それぞれに対して 2bcを持つ

■ 短い繰り返し回数のループに有効

4回繰り返すループの分岐

分岐方向 TTTNTTTN

2bc TTTTTTTT → 予測ミス率 = 25% !

PAs TTTNTTTN → 予測ミス率 = 0% !

富士通 1999 30 安藤秀樹

Page 31: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 32: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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 安藤秀樹

Page 33: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

gshare の構成

富士通 1999 33 安藤秀樹

m bits n bits

分岐命令アドレス

m bits

分岐履歴

PHTのインデクス (m + n) bits

PHT

予測

Page 34: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

予測精度の比較

富士通 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]より

Page 35: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

履歴長と予測精度

• 履歴を長くすれば予測精度は改善• 長くしすぎると低下→ 競合

富士通 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]より

Page 36: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 37: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

履歴長と競合

■ トレードオフ• 長い履歴ほど多くの情報• 長い履歴ほど多くの競合

富士通 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]より

Page 38: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

競合の内訳

• 破壊的競合 >> 建設的競合

富士通 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]より

Page 39: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

破壊的競合の削減

■ 2レベル分岐予測はなぜ当たるのか?• 動的分岐流をアドレスと履歴で分類• 各分岐流の多くは一方に偏っている

■ 偏った分岐流同士の競合• 無害か破壊的

■ sgshare [野口 1997](bi-mode gshare [Lee 1997])• 破壊的競合を無害な競合に変える• 同一方向に偏った分岐流同士を競合させる• 新たな分類器

• 分岐自身の偏り

富士通 1999 39 安藤秀樹

Page 40: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

sgshare

富士通 1999 40 安藤秀樹

XOR分岐命令アドレス

分岐履歴

Tテーブル

Nテーブル

分岐偏りテーブルBBHT

分離PHT

予測

セレクタ

Page 41: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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]より

Page 42: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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]より

Page 43: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

コスト性能比

• 良いコスト対性能比

富士通 1999 43 安藤秀樹

1 10 100

ハードウェア・コスト [Kbytes]

4.0

5.0

6.0

7.0

8.0

9.0

10.0

分岐予測ミス率

[%]

gshare

sgshare

real_gcc

Page 44: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

プロセッサ性能の向上率

■ 性能向上• 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]より

Page 45: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

完全予測による性能向上率

• 予測精度はさらに改善する必要がある

富士通 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]より

Page 46: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

この他の分岐予測機構

■ gskew [Michaud 1997]

• 3つの PHTを用意• 異なるハッシュ関数• 多数決• 容量性競合

■ agree-mode gshare [Sprangle 1997]

• 破壊的競合の削減• PHT:静的分岐予測(それに替わるもの)に対して

• agree / disagree

• 容量性競合の犠牲がない• 分類は動的に変化しない

富士通 1999 46 安藤秀樹

Page 47: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

富士通 1999 47 安藤秀樹

内容

■ ILP利用へのアプローチ

■ 既存のアーキテクチャでの高性能化

■ 今後のアーキテクチャ• VLIW

• MP

■ まとめ

Page 48: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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 安藤秀樹

Page 49: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

トレース・スケジューリング [Fisher 1981]

■ 命令ウィンドウ設定• トレース =静的分岐予測パス

■ トレースをリスト・スケジューリング

■ 補償コード挿入

富士通 1999 49 安藤秀樹

A

B

C

D

E

F

G

スケジュール表

Page 50: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

利点と欠点

■ 利点• 広域命令移動の一般的な枠組み• 広域な先行制約情報による heuristics

• 隣り合うブロック間での命令移動(e.g. Percolation [Nicolau

1985])の繰り返しによるアルゴリズムに勝る

■ 欠点• 静的分岐予測に大きく依存

• 静的予測精度 = 80~90%:不十分• トレース外の補償コード

• 性能低下• コード量増大

• 補償コード生成が複雑 + 一般的最適化が困難(計算量が多い)

富士通 1999 50 安藤秀樹

Page 51: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

EPIC

■ Explicit Parallel Instruction Computing• Intel/HP の IA-64命令セットの特徴• Merced:IA-64を実現する最初のチップのコード名• 商業上の固有名詞

• 1970~1980年代の VLIWとは機能的には違う• しかし VLIWと思想は同じ• 普通は(学会では)VLIWと呼ぶ

■ 特徴• プレディケート実行 ⇒分岐除去• 多くのレジスタ(128) ⇒ レジスタ・リネーミング• センティネル・スケジューリング ⇒投機的実行• グルーピング情報 ⇒コード圧縮

■ Defacto Standard• (いやだけど)たぶん• 他のメーカの多くは撤退を宣言

富士通 1999 51 安藤秀樹

Page 52: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

分岐除去

■ 制御依存情報

• 通常の命令によるプログラム• 命令に明示されてはいない• プログラムの「流れ」で表現

• プレディケート:命令に明示

■ 分岐を命令にエンコード

• 複数の制御の流れを 1つにする

富士通 1999 52 安藤秀樹

if (c1) { ... if(!c2) { r1 = r2 + r3; ...

p1 = c1 & !c2;

r1 = r2 + r3 if p1;

通常のコード プレディケート付き命令

Page 53: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

ハイパブロック・スケジューリング [Mahlke 1992]

■ 実行頻度の比較的高いブロックをウィンドウ• プロファイル• トレース・スケジューリングの複数のパスへの拡張

■ ウィンドウ内命令をスケジューリング

富士通 1999 53 安藤秀樹

A

B

C

E

X

D

スケジュール表

Page 54: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

投機的実行実現における問題点

■ 不正

• プログラムの意味の破壊

• 生きている値の破壊

• 記憶場所での衝突の回避

■ 危険

• 例外発生

• 不正な停止、性能低下

• 投機的例外:実行結果が真に必要と分

かるまで処理を延期

富士通 1999 54 安藤秀樹

r2 = r1 ... r1 = r2 & r3

r1 = ... r1 = load r2

Page 55: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

レジスタ・リネーミング

■ 書込みレジスタの変更

• レジスタの live解析 [Aho 1986]

• 空のレジスタを書込み先にする• 制御が確定したら元のレジスタにコピー

■ 得失• 簡単• レジスタが多く必要

• IA-64: 128レジスタ

富士通 1999 55 安藤秀樹

r2 = r1 ... r1 = r2 & r3 r2 = r1 ...

r2 = r2 & r3

r1 = r2

Page 56: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

Non-excepting [Colwel 1987]

■ エンコード• 投機的例外を起こす可能性のあることを命令にエンコード

• non-excepting命令• e.g. load.ne

• 例外を生じても即座に例外処理を行うことはしない

■ 書込みレジスタへのタグ付け• 書込みレジスタに

• 自分の命令アドレスを書き込む• マークする

■ 例外処理• マークされたレジスタを参照したら例外を処理する

• 処理(+例外命令の再実行)• マークされたレジスタを(non-excepting命令でない)普通の命令が上書きする時、マークをリセット

富士通 1999 56 安藤秀樹

Page 57: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

Sentinel Scheduling [Mahlke 1992]

■ エンコード• 投機的命令は全てラベリング

■ 書込みレジスタへのタグ付け

■ タグの伝搬• タグの付いたレジスタを投機的命令が参照したとき

• 例外を処理しない• 実行もしない• 書込みレジスタに参照レジスタの内容をコピーしマーク

■ 例外処理• マークされたレジスタを非投機的命令が参照したら例外を処理し、例外を検出した命令まで全て再実行

• マークされたレジスタを非投機的命令が上書きする時、マークをリセット

富士通 1999 57 安藤秀樹

Page 58: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

VLIW の課題

■ 互換性• エミュレータ→我慢できないくらい遅い• トランスレータ(e.g. Digital FX!32)→いらいらする• ローダ→起動が非常に遅い• H/W トランスレータ(e.g. x86 互換性ユニット)→高い

■ 拡張性 H/Wの性能向上の恩恵をどうやって享受するか?• H/Wに合わせてコードを生成しないと性能は引き出せない• Merced:次のバンドルのどの命令までグルーピングできるか?

■ 動的変動による性能低下をどう防ぐか?• データ・キャッシュ・ミス→ ?

■ 本当にスーパスカラより高速なのか?• 40%高速 [Hara 1996]

• しかしスーパスカラの技術は依然進歩を続けている• 分岐予測、トレース・キャッシュ、クラスタリング等

富士通 1999 58 安藤秀樹

Page 59: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 60: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 61: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 62: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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

Page 63: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

富士通 1999 63 安藤秀樹

内容

■ ILP利用へのアプローチ

■ 既存のアーキテクチャでの高性能化

■ 今後のアーキテクチャ• VLIW

• MP

■ まとめ

Page 64: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

規模拡大による見返り

• 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

[%]

Page 65: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

規模拡大の問題

■ 少ない見返り• 多大なる投資• 10%程度の性能向上

■ 大きな犠牲• 複雑度向上• コスト増加• クロック速度低下• 開発期間増加

富士通 1999 65 安藤秀樹

Page 66: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

単一チップ 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 安藤秀樹

Page 67: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

単一チップ MP(cont’d )

■ SMT (Simultaneous Multithreading) [Tullsen 1995]

• 実行ユニット共有— 遅い• multitasking — 用途が狭い

■ Multiscalar [Sohi 1995]

• 単純なスレッド実行モデル

→ スレッド並列実行のオーバヘッドの削減• 逐次スレッド、結合なし• スレッド生成:数サイクル• スケジューリングなし

• レジスタ通信:結合レジスタ・ファイル• レジスタ同期:full/empty ビット• 類似の研究

• MUSCAT [鳥居 1997] — レジスタ一括転送、ユニット共有• SKY [小林 1997] — window-based, nonblocking sync

富士通 1999 67 安藤秀樹

Page 68: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

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]より

Page 69: 投機的実行 - 名古屋大学ando/talk/fujitsu99.pdfILP と投機的実行 実行時間 = 実行命令数 × CPI × サイクル時間 より低いCPI(より高いIPC)の実現

まとめ

■ ILP• 投機的実行:プログラムに存在する ILPを増加させる技術• 3つのアプローチ

■ スーパスカラ・プロセッサ• ハードウェア・アプローチ• 複雑さの抑制• 高精度分岐予測

■ VLIW• ソフトウェア・アプローチ• 必須の投機的支援ハードウェア• 単純さによるクロックの高速化

■ MP• 整数系応用への挑戦• 低性能な伝統的アーキテクチャ• スレッド並列実行のオーバヘッドを最小化• レジスタ通信

富士通 1999 69 安藤秀樹