Comments
Description
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