...

コンピュータアーキテクチャ 富田眞治 京都大学情報学研究科 2004 5 21

by user

on
Category: Documents
4

views

Report

Comments

Transcript

コンピュータアーキテクチャ 富田眞治 京都大学情報学研究科 2004 5 21
コンピュータアーキテクチャ
富田眞治
京都大学情報学研究科
2004 5 21
1
コンピュータアーキテクチャ
講演内容
1 歴史
2 プロセッサの高速化技術
3 機械命令の依存関係
4 単純な時間並列性の利用:パイプライン
5 高度な命令パイプライン:乱実行
6 高度な命令パイプライン:制御投機実行
7 局所空間並列の利用:スーパスカラとVLIW
8 データ投機実行
9 大域空間並列の利用
10 将来展望
2
1 歴史
①1970年代
オンチッププロセッサの幕開け
1970: 1KbitのDRAM
1971: Intel4004
4ビットプロセッサ
2300個のトランジスタ,
1973 博士課程修了、助手
750KHz
16ピンパッケージ
アーキテクチャ研究
8μmデザインルール スタート
8KB ROM、640B RAM
命令実行時間:10.8μsec/21.6μsec
1978:Intel 8086,IA-32の始まり
DEC VAX-11/780、超CISC
3
②1980年代
1978:VAX 商用CISCコンピュータ
高級言語計算機に対抗して
RISCの時代
Patterson and Ditzel: The Case for the
Reduced Instruction Set Computer,Comp Arc
News,1980
1チッププロセッサ
高級言語の普及
コンパイル技術との協調
高級言語計算機の反省:捨ての美学
MIPS,SPARC,PA…
4
③1990年代
命令レベル並列処理の時代
1992年:DECAlpha21064
DEC社 CISCからRISCへの転換
命令パイプライン:2多重、7ステージ
168万個のトランジスタ
200MHz
431ピンパッケージ
30W
2000年:Pentium4
命令パイプライン:3多重、20ステージ
4200万個のトランジスタ
1.4GHz
478ピンパッケージ
55W
DRAM:64Mbit∼256Mbit
5
④2000年代へ
10億個のトランシスタ,10GHzの時代へ
・スーパスカラ:Pentium4
・CMP:POWER4
・VLIW:Itanium2
・SMT:Hyper Threading
・省電力化プロセッサ
6
2 プロセッサの高速化技術
(1)VLSIハードウェア技術
Mooreの法則:Tr数:2倍/1.5年
スケール則
S:スケールファクタ/3年:0.7
S:ゲートデレイ
S2:Trサイズ
S2:ゲート電力
ところが、線路RCデレイ:一定
デザインルール:0.18μm→0.13μm
7
DRAM容量 1970:1kb、2000:256Mb、10年で100倍
プロセッサ速度 1971:750KHz、2001:1.5GHz、10年で13倍
8
9
アーキテクチャ屋: デバイス、レイアウト設
計もする必要 日経マイクロデバイス、1999年4月号、p.89
10
(2)局所性の利用とメモリ階層
① 2,3階層キャッシュ
1stキャッシュ
2ndキャッシュ
3rdキャッシュ
メインメモリ(DRAM512MB)
ディスク(数10GB)
DRAMが遅いのが諸悪の根源?
11
メインメモリ
メインメモリ
γ:ミス率
β:ミス率
転送時間TL2
転送時間TL
2ndキャッシュ
β:ミス率
キャッシュ
転送時間TL1
1stキャッシュ
T=TH+ βTL=2TH
β=0.02,TH=1ns,TL=50TH
T=TH+ βTL1+β γTL2=1.3TH
γ=0.2,TL1=5TH
12
Power4の記憶階層
latency
4
12
16MB eDRAM外
付け
?
340
Pentium4の記憶階層
L1 Data 8KB レイテンシ 2
L2 256KB レイテンシ18
13
IEEE Micro, March,200314
DRAMについての私の経験
・1Kb DRAM
1974に購入(東光株式会社)
アクセスタイム 350nsec
容量256KB
価格1000万円
・256Mb DRAM
2001年にパソコンのアドオンメモリとして購入
アクセスタイム 70nsec
容量128MB
価格5000円
15
1次キャッシュ:0.25nsec、DRAM:50nsec
ギャップ:200倍!!
②分離型キャッシュ
命令とデータ:別々のキャッシュで構成
③ノンブロッキングキャッシュ
先行命令でキャッシュミス
後続命令は実行可能
④コンパイラ技術
キャッシュのデータを有効に利用
タイリング方式
16
17
(3)機械命令レベルでの並列性の利用
時間並列(パイプライン)
空間並列(スーパスカラ,VLIW,
マルチスレッド)
投機実行(制御,データ,スレッド)
(4)コンパイラとの協調
RISCの考え方
トレーススケジューリング
ソフトウェアパイプライン
ループアンローリング
18
(5)応用指向のハードウェア
マルチメディア機構
①MMX:画像処理
サブワード演算:RGB 8ビット演算
64ビットデータ:8ビットx8個
飽和演算
②SSE:グラフィックス
4つの浮動小数点演算の並列実行
AXの計算,A:4x4行列
19
3 機械命令の依存関係
命令列
先行/後続命令の並列実行を
阻むもの
①データ依存
先行命令
②制御依存
③資源競合
後続命令
20
出力依存
フロー依存
逆依存
先行命令
先行命令
R0
R0
R0
後続命令
後続命令
後続命令
先行命令
①データ依存
21
リネーミング
逆依存
出力依存
先行命令
先行命令
R0
後続命令
R1
R0
後続命令
R1
22
先行
分岐命令
ぶ つ
かり
先行命令
制御
依存
演算器
後続命令
Taken
後続命令
NotTaken
後続命令
資源
競合
②制御依存 ③資源競合
23
4 単純な時間並列性の利用
パイプライン
命令1 命令2
I D E M S I D E M S
命令パイプライン
5サイクル
命令1 I D E M S
1サイクル
命令2 I D E M S
命令3 I D E M S
I:命令フェッチ,D:デコード,E:演算,M:メモリア
クセス,S:格納
CPI: Cycles Per Instruction,理想的には1
24
命令キャッシュ
データキャッシュ
アドレス
データ
ロードバイパス
IF
D
EX
MA
S
演算器バイパス
ストアバイパス
レジスタ
ロードストア命令形式のパイプライン
25
CPIを増大させる要因
CPI=1+Cf+Cd+Cm+Ce
Cf:命令供給系
命令キャッシュミス:ほぼ0
分岐予測ミス
True/False決定
I D E M S
I D E M S 予測成功
* * I D E M S不成功
確率*予測ミス率*バブル
Cf =0.16*0.1*2=0.03(整数系)
=0.08*0.04*2=0.006(浮動小数点系)
26
Cm:データアクセス系
ロードストア命令の頻度35%
分離型キャッシュ+2階層
Cm=0.3*0.35=0.1
Cd:データ依存
①ロードデータ依存
27
ロード命令
命令1I D E M S
命令2 I D E M S
命令3 I D − E M S
待ち:バブル
ロード命令出現確率
26%(整数系),24%(浮動系)
次命令がロードデータ利用
25%(整数系),13%(浮動系)
Cd=0.065(整数系)
=0.031(浮動系)
28
②Cd:演算データ依存
整数系
1サイクル実行 影響なし Cd=0
浮動系
3サイクル,パイプライン実行
浮動小数点演算確率38%
次命令利用13%,次次命令利用無視
Cd=0.38*0.13*2=0.1
29
Ce:演算器競合
①非演算パイプライン
I D E E E M S
I D * * E M S 後続命令:必ずバブル2
Ce=0.38*2=0.76
②演算パイプライン
I D E E E M S
I D E E E M S
I D * * E M S
I D E E E M S
後続命令:整数バブル2 後続命令:浮動バブル0
Ce=0.38*0.62*2=0.47
③演算パイプライン+乱実行
I D E E E M S
I D E M S Ce=0
30
I D E M S
5 高度な命令パイプライン
(1)乱実行
順発行
6
5
前
4
2
3
R2
1
演算器
R1
命令キュー
後
6
5
4
3
2
1
R1
R1 待
ち
31
単純パイプラインの高速化 乱実行
機械命令のフェッチされた順とは異なって
実行開始する方式
先行命令と依存関係がなく,早く終了する
ものは早く終了させる
演算装置での待ち合わせ機構
連想記憶が必要
32
乱発行
後
1
R1
4
R2
3
R3
6
命令キュー
5
2
リザベーションステーション
連想メモリ
33
Tomasuloのアルゴリズム(論文1967年):
フロー依存,逆依存,出力依存解消
演算装置への待ち合わせ機構
レジスタでの連想 記憶が必要
レジスタリネーミングのハードウェア
34
Tomasulo方式
の乱実行
前
R1
6
0
5
4
3
演算器
2
1
R1
リネー
ム
1
R1
R1
4
R1
命令キュー
後
6
5
2
3
R3
リザベーションステーション
35
6高度な命令パイプライン
(2)制御投機的実行:
分岐命令を越えた命令の実行終了
①分岐予測テーブル
②複雑な,復旧可能なレジスタ構成
リオーダバッファ
リネーミングレジスタ
③Trace Cacheによる
命令フェッチ高速化
36
単純な分岐方式
命令の一括
フェッチ
分岐命令
連続番地の命令列
FALSE
TRUE
Taken
分岐先命令
Not Taken
こちら側を
選択
37
①分岐予測方式
履歴で予測
局所,大域,
連続番地の命令列
ハイブリッド
分岐命令
FALSE
TRUE
Taken
Not Taken
分岐先命令
38
NNNNTNNNN
連想メモリで構成
NTNTNTNTNTNT
NTNT→N
TNTN→T
39
単純なメモリで構成
ぶつかりによる性能低下
40
分岐予測ミスの影響
深パイプラインで深刻
深:ステージ機能低い,周波数高
浅:ステージ機能高い,周波数低
Pentium III :10段, 1GHz
Pentium 4 :20段, 1.5GHz
性能:1.2倍
41
②復旧方法
先行命令
レジスタの状態
すべて実行が終
了している命令
レジスタ:順状態
実行終了していない
命令
分岐命令
PCの指している命令
レジスタ:
先見状態
レジスタ:現状態(順状態+先見状態)
42
投機実行のメカニズム:リオーダバッファ法
リオーダバッファ
0以前すべて終了
レジスタ
0以前の状態
0以降の状態
フェッチ順に
0未了
BR
1終了
2未了
5
4未了
2未了
4未了
5終了
3
ボトム終了のとき、未了
直前まで書き込み
1
0未了
43
レジスタ
0以前すべて終了
リオーダバッファ
0以前の状態
0終了
2以降の状態
フェッチ順に
+
0と1の結果
BR
1終了
2未了
4終了
5
3
4
5終了
ボトム終了のとき、未了
直前まで書き込み
2未了
44
リオーダバッファ
レジスタ
0以前すべて
終了
0以前の状態
0終了
3以降の状態
フェッチ順に
+
0と1の結果
BR
1終了
2終了
4無効
化
5無効化
2終了
予測ミス
3未了
ボトム終了のとき、未
了直前まで書き込み
3未了
45
リオーダバッファ: 連想メモリ
⑦R6←R0,R1の実行
⑥R3←R4,R5 後方命令
⑤R0←R1,R2 R0を後方から探す
こちらを読み出す
なければレジスタから
②R0←R5,R6
①R1←R2,R3 前方命令
リオーダバッファ
46
7 局所空間並列の利用: PC近傍
①スーパスカラ
ルーツ:データフローコンピュータ
局所データフロー制御
ハードウェア指向:動的,実行時並列性検出
命令レベル互換性とスケーラビリティ
命令の並びと演算器間で多対多の
結合網必要
汎用プロセッサで利用
1990年代の主要技術 47
48
スーパスカラプロセッサの現状
GHz
49
50
②VLIW
(Very Long Instruction Word)
ルーツ:水平型マイクロプログラム制御方式 コンパイラ指向: 静的
コンパイル時並列性検出
長命令間および内にNOP操作
互換性とスケーラビリティの欠如
1970年代研究
QA-1/2,Trace,AP-120B, Cydra5
1990年代:メディアプロセッサ,
ベクトルプロセッサで利用
2000年代:IntelのItaniumに採用
51
52
ALUI
NOP
LS
ADDF
LoadR0,M R3=R4-R5
MULF
NOP
すべてNOP
長命令1
長命令2
R1=R0+R2
NOP
NOP
NOP
長命令3
R2=R1*R7
NOP
NOP
R6=R5*R3
長命令4
LS:2サイクル
ADDF:3サイクル
長命令間および内でのNOP
53
54
55
56
57
IntelのItanium
EPIC
(Explicitly Parallel
Instruction Computing)
58
バンドルの導入
純粋VLIWの欠点を解消
コンパイラ支援を得つつ,
命令長の圧縮,NOP削除
互換性の確保,拡張性の確保
128ビット命令:バンドル
41ビットx3操作+5ビットテンプレート
59
バンドル
操作1
41ビット
P OP
6 14
操作2
41ビット
Rd
7
Rs1
7
操作3
41ビット
テンプレート
5ビット
Rs2
7
60
テンプレート:5ビット
ストップビット(1ビット)
0:前バンドルと並列化可
互換性,拡張性の確保
1:前バンドルと並列化不可
長命令NOPなし 操作パターンの指定(4ビット)
3つの操作の組み合わせに制約
第2,3操作と並列化不可パターン
長命令内NOP削減
61
62
プレディケート:6ビット
プレディケートレジスタを指示
その内容が1であれば操作実行完了
True,False側同時実行と選択
レジスタ64個,6ビットで指定
投機ロードと遅延例外
63
Tst1,Tst2,Tst3
設定済み
T
F
Tst1
OP1
T
Tst2
分岐構造
OP2
長命令
T
命令2
Tst1 Tst2
- OP1 T
F
Tst3
OP3
命令1
Tst1
T
F
OP4
命令3
Tst1 Tst2
T OP2 T
命令4
Tst1 Tst3
F OP3 F
T OP4
64
T
Tst1
コンパイラが予測した
分岐パス
T
演算命令1
Tst2
F
OP2
長命令
Tst1 Tst2
T − OP1 T
分岐先 A
分岐命令2
分岐先 B
演算命令2
演算命令2
演算命令1
Tst1
分岐命令1
F
OP1
予測された分岐パス
分岐命令1 分岐命令2
Tst1
Tst1 Tst2
T OP2 F − BR A T
VLIW方式における投機実行
F BR B
65
ソフトウェアパイプライン
66
レジスタローテーション
Fr32→Fr33→→・・・Fr127
Pr16→Pr17 →→・・・Pr63
モジュロスケジュール命令を実行時
レジスタ内容が回転する
67
ループカウントチェック
エピローグCtr
次のループで
pr16=1
池井:IA-64プロセッサ、
オーム社、2000
68
通常の目的プログラム
69
ロード:4サイクル
MUL:2サイクル
br,ctop
プレディケート
モジュロスケジュール命令
70
池井:IA-64プロセッサ、
オーム社、2000
71
8 データ投機実行
データ依存を超えて
①値予測
②値再利用
72
フロー依存
同時実行
先行命令 先行命令 後続命令
先行命令実行せず
後続命令
予測値
R0
R0
値チェック
後続命令
値予測
値再利用
73
①値予測
Last-Value値、ストライド値、2レベルストライド
値などで予測
吉瀬、坂井、
田中:JSPP99
74
吉瀬、坂井、
田中:JSPP99
75
②値再利用
・同一パラメータによる関数・ループ
実行自体の省略
・事前実行による値再利用の可能性の増大化
・データ値の許容範囲設定による値再利用の
可能性の増大化
76
中島,富田:ACS2,No.SIG10,2003
77
78
9 大域空間並列の利用:
マルチスレッド/マルチプロセッサ
スーパスカラ、VLIW:単一プロセス/スレッドの
高速化
複数プロセス/スレッドの高速化
パソコン内:20個のプロセス
Intel Hyperthreading,
NEC MUSCAT, 名大 SKY,
Wisconsin Multiscalar
IBM POWER4
79
①時分割マルチスレッド
HEP(B.Smith,Tera Computer):1974
80
②SMT(Simultaneous Multi-thread)
基本命令パプライン:1つ
+複数のレジスタ、PCなど
多数のスレッドの実行
Intel Hyper Threading
15-25%性能向上、チップサイズ5%増
2スレッド実行
81
IEEE Micro 2003 March
82
83
③空間分割マルチスレッド
B1
並列実行
可能
B3
B2
B4
B6
B5
B7
84
データ
依存
情 報伝達
FORK
B4
B1
B2
B3
B6
B5
B7
FINISH
85
空間分割マルチスレッド
実行
命令パイプライン
1
B2を投機実行
B
2
B
1
レジスタ:同期機構
命令パイプライン
2
B
7
B
5
B
4
B5を投機実行
86
NEC MUSCATの例、 西ほか:JSPP 97
87
各PE:4SSと等価
8PEと32SSハー
ド規模同じ
88
SS:8多重
安藤ほか:JSPP98
89
④オンチップマルチ CMP
On Chip Multiprocessor
IBM POWER4: SMP、スヌープキャッシュ
90
Alpha21364: Core21264+1.75MB L2 Cache+通信
128台のトーラス結合、ディレクトリ方式
91
10 将来展望
10億個のTRをどう生かすか
キャッシュのみでよいか
Alpha21364:15200万Tr集積
1520万Tr21264コア
1.75MBL2キャッシュ
高速化+省電力化
キー技術:並列処理
燃料電池:試作 5時間、300CCメタノール、
900g、2004年に40時間目標(2003.7.NEC)
環境問題:情報機器の総消費電力量の増大 92
93
汎用プロセッサの到達点
・パイプライン:時間並列
・乱実行、投機実行による時間並列の高度化
・局所空間並列:スーパスカラ、VLIW
・大域空間並列: Hyper Threading
オンチップマルチプロセッサCMP
マルチスレッドSMT?
スレッドの投機実行?
・値予測?
・値再利用?
94
(1)メディアプロセッサ
CG:浮動小数点演算、4x4行列演算
SH−4:500万ポリゴン/秒
プレステ2:1600万ポリゴン/秒
6.2GFLOPS、18W
画像:MPEG
符号化:100GOPS,
復号化:10GOPS
並列処理による高速化+省電力化
95
NEC IMAP-CE
省電力車載用画像処理プロセッサ
SIMD方式
PE:8ビット、2ALU+乗算器+
アドレス演算器
96
97
(2)DRAMとロジック混載
低レイテンシと高バンド幅を利用
機能メモリ
省電力プロセッサ:三菱M32R/D
電力1/3
汎用マルチプロセッサ:九大のPPRAM
専用プロセッサ:CG、Image
ベクトルプロセッサ:バークレイのIRAM
98
(3)省電力プロセッサへの
並列処理利用
CMOSの電力消費
・動的
回路がON、OFFするとき αf CLV2
・漏れ電流 V Ileak
・貫通電流 αf tscIshortV
pMOS、nMOSがスイッチング時
同時ON
α:ゲート動作率、f:周波数、C:ゲート総容量、
V:電源電圧、tst:スイッチング時間
99
VDD
F=1のとき、
nMOS OFF
pMOS
pMOS ON:VDDにつながる
充電
出力
入力
次段のゲート
容量
nMOS
F=0のとき、
論理関数F
nMOS ON:アースにつながる
放電
pMOS OFF
100
基本式
P=αf CLV2 +V Ileak+ αf tscIshortV
Fmax∝(V-Vthreshold)2/V≒V
Ileak∝exp(-qVthreshold/kT)
各部での電力消費の割合(%)
クロック データパス メモリ I/O
組み込み系 50 33 11 6
高速プロセッサ 30 25 40 5
MPEGASIC 22
34
22 22
ATMSWASIC
20
10
6 64
101
基本的な考え方
• スイッチング回数を少なくする
• 動作をしない(と予想される)回路には
クロック供給しない
電源を供給しない
• 電源電圧を制御して、必要十分な処理速
度で実行
• 電源電圧、周波数を落として並列処理、パ
イプラインで行う
102
• デバイスレベル
低電源電圧化、低ゲート容量化、低スレッショルド化
• 回路レベル
パストランジスタ論理
ゲート付きクロック
グリッチの削減
動的電源遮断
非同期回路
• アーキテクチャレベル
データパスの最適化:必要な演算幅の決定など
並列処理、パイプライン処理
キャッシュメモリ
バス
アドレスの反射2進符号化、データ圧縮
• OS、コンパイラ、アルゴリズムレベル
符号化
ビット変化の少ないコード生成 動的電源電圧制御
動的周波数制御
103
①並列処理の導入 並列処理
パイプライン処理
電力fCV2/2
電力2(f/2C(V/2)2)
電力fCV2
fCV2/4
論理回路1/2
電源V/2
周波数f
論理回路
電源V
周波数f
論理回路
電源V/2
周波数f/2
論理回路
電源V/2
周波数f/2
論理回路2/2
電源V/2
周波数f
ラッチ
1/fごとに1つの結果
1/2fごとに2つの演算
1/fごとに1つの結果
104
②無駄なスイッチングを減らす
論理
回路
①ゲート付き
クロック
X
Y
クロック
Enable
X
②グリッチの
削除
C遅れ
Y
C
グリッチ
Z
ディレイ挿入
パイプライン化
ラッチ
FU
選択
MUX
③ガード付き計算
使わない回
路には同じ
入力
105
Mビット比較
④プレ計算
True
Nビット比較
N-mビット比較
Enable
スイッチング回数が少な
いように符号化
⑤符号化
送信側
⑥データの転送順、
処理順の変更
符号化
復号化
受信側
正の数のグループ先、負の数のグループ後
C
A
⑦パストラ
ンジスタ
C・A+~C・B
B
~C
トランジスタ数の削減
106
③スイッチングの少ない符号化
2の補数表示:符号反転操作大変
正+5 負-5
0 0101→1 1011
絶対値表示: 楽
0 0101→1 0101
カウンタ:反射2進符号
2進符号 000 001 010 011 100 101 110 111
反射2進符号 000 001 011 010 110 111 101 100 1ビットずつ変化
107
• 2進符号と反射2進符号の相互変換
(bn,bn-1,bn-2,…,b1) (gn,gn-1,gn-2,,…,g1)
bn=1, gn=1
bn=0 ,gn=0
bn=0,bn-1=0のときgn-1=0
bn=0,bn-1=1のときgn-1=1
bn=1,bn-1=0のときgn-1=1
bn=1,bn-1=1のときgn-1=0
一般に
bi ⊕ bi −1 = 0 のとき g i −1 = 0
bi ⊕ bi −1 = 1 のとき g i −1 = 1
bi ⊕ bi −1 = gi -1
108
④メモリ・キャッシュメモリの省電力化
①フィルタキャッシュ:L1キャッシュ前にバッファ設置
②メモリのバンク化
③目的別領域化
④リプレースなし領域:画像処理など
⑤選択的ウェイアクセス、投機的
109
入江ほか:日立評論、
2002年10月
110
⑤電源電圧制御
111
各メーカでの名称
・
・
・
・
Intel: SpeedStep
Transmeta: Longrun
AMD: PowerNow
VIA: LongHaul
112
文献
(1)富田眞治:コンピュータアーキテクチャ 第2版,
丸善,2000
(2)J.R.Goodman,D.Burger: Billion Transistor
Architectures,IEEE Computer, pp.46-93,
Sep.1997
(3)J.R.Goodman,D.Burger: Billion Transistor
Architectures,There and Back Again,
IEEE Computer, pp.22-28,March 2004
(4)富田眞治:計算機アーキテクチャの過去,現在,
未来,情報処理,41,5,2000
113
Fly UP