アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン 五島 2015/10/1 講義の内容 1. 2. 3. 4. RISC 命令セット 非パイプライン実装 命令パイプライン 2 RISC とは CISC: Complex Instruction Set Computer 複合 (?) 命令セット計算機 アーキテクチャの進化 = 高機能な命令の追加 RISC: Reduced Instruction Set Computer 縮小命令セット計算機 複雑な機能は,基本的な命令の組み合わせで コンパイラ アーキテクチャの進化 = システムの高効率化 3 RISC の位置づけ Reduced: ごく基本的な命令のみ とにかく HW が簡単/高効率になるように 最近のほとんどすべてのプロセッサの基礎 RISC スーパースカラ VLIW x86 スーパースカラ(RISC ではない!) Java プロセッサ/アクセラレータ (RISC ではない!) etc. RISC 以前のことは,忘れてもよい (?) 少なくとも,RISC を下敷きに議論し直したほうがよい. 4 RISC アーキテクチャ Reduced: ごく基本的な命令のみ とにかく HW が簡単/高効率になるように 商用 RISC アーキテクチャの例: i860, M88000, PA-RISC SPARC, MIPS, POWER/PowerPC どれも,似たりよったり 5 RISC の特徴 Reduced: ごく基本的な命令のみ とにかく HW が簡単/高効率になるように 固定長命令 32b 大容量の汎用レジスタ・ファイル 汎用レジスタ (General Purpose Reg: GPR) x32 #0 レジスタは「0 レジスタ」 ロード/ストア・アーキテクチャ 演算は,レジスタに対してのみ 6 ロード/ストア・アーキテクチャ 演算器 演算器 演算 RF RF ロード ストア 主記憶 主記憶 非 ロード/ストア ― ロード/ストア ― 7 講義の内容 1. 2. 3. 4. RISC 命令セット 非パイプライン実装 命令パイプライン 8 命令の種類 数え方にもよるが,数十種くらい. ロード/ストア 演算命令 算術論理演算 (ALU: Arithmetic Logic Unit) シフト 浮動小数点演算 制御命令 分岐 (branch) 命令 :PC 相対 ジャンプ命令 :絶対 その他 システム・コール コプロセッサ制御 9 命令フォーマット op 31 Rs 25 op 31 Rt 20 Rs 25 15 Rt 20 op 31 Rd func 10 0 immediate 15 0 jump_target 25 op : op code 0 Rs : source reg # Rt : target reg # Rd : destination reg # 10 演算命令 算術論理演算 (ALU, Arithmetic Logic Unit) 命令 r[Rd] = r[Rs] + r[Rt], … r[Rt] = r[Rs] + immediate, … シフト命令 r[Rd] = r[Rs] << shamt, … op 31 Rs 25 op 31 Rt 20 Rs 25 Rd 15 Rt 20 shamt func 10 0 immediate 15 0 11 ロード/ストア命令 ロード命令 r[Rt] = *(r[Rs] + immediate); ストア命令 *(r[Rs] + immediate) = r[Rt]; op 31 Rs 25 Rt 20 immediate 15 0 12 制御命令 (分岐命令) (条件)分岐命令 if (cond) PC = PC + immediate; branch on register cond: R[Rs] == 0, R[Rs] > 0, … compare and branch cond: R[Rs] == R[Rt], R[Rs] != R[Rt] op 31 Rs 25 Rt 20 immediate 15 0 13 制御命令 (ジャンプ命令) ジャンプ命令 (絶対) PC = jump_target; ジャンプ命令(レジスタ間接) PC = r[Rs]; op 31 Rs 25 op 31 Rt 20 immediate 15 0 jump_target 25 0 14 講義の内容 1. 2. 3. 4. RISC 命令セット 非パイプライン実装 命令パイプライン 15 命令の実行フェーズ 命令フェッチ 命令デコード/レジスタ読み出し 実行 メモリ・アクセス レジスタ書き戻し (Write-Back) 1. 2. 3. 4. 5. IF ID EX MEM WB 名称は歴史的(esp. ID) 16 100 IF PC IR 0 200 ID Rs Rt Reg File EX MEM WB DR MDR MA MD 100 104 12 8 add 23 1 208 1000 ld Main Memory 17 実行例 100 ld r2 = *(r1 + 8) 104 add r3 = r2 + 1 18 100 104 IF PC IR ld 0 200 ID 12 8 Rs Rt Reg File EX MEM WB DR MDR MA MD 100 104 12 8 add 23 1 208 1000 ld Main Memory 19 104 IF PC IR ld 0 200 ID 12 8 Rs Rt Reg File 200 WB DR 12 8 add 23 1 208 1000 ld 8 EX MEM 100 104 MDR MA MD Main Memory 20 104 IF PC IR ld 0 200 ID 12 8 Rs Rt Reg File 200 100 104 12 8 add 23 1 208 1000 ld 8 EX 208 MEM WB DR MDR MA MD Main Memory 21 104 IF PC IR ld 0 200 ID 12 8 Rs Rt Reg File 200 100 104 12 8 add 23 1 208 1000 ld 8 EX 208 MEM DR MDR 1000 WB MA MD Main Memory 22 104 IF PC IR ld ID 0 200 1000 Reg File 200 12 8 Rs Rt 100 104 12 8 add 23 1 208 1000 ld 8 EX 208 MEM DR MDR 1000 WB MA MD Main Memory 23 104 108 IF PC IR add 23 ID 0 200 1000 Reg File 1 Rs Rt EX MEM WB DR MDR MA MD 100 104 12 8 add 23 1 208 1000 ld Main Memory 24 108 IF PC IR add 23 ID 0 200 1000 Reg File 1000 1 Rs Rt WB DR 12 8 add 23 1 208 1000 ld 1 EX MEM 100 104 MDR MA MD Main Memory 25 108 IF PC IR add 23 ID 0 200 1000 Reg File 1000 1 Rs Rt 100 104 12 8 add 23 1 208 1000 ld 1 EX 1001 MEM WB DR MDR MA MD Main Memory 26 108 IF PC IR add 23 ID 0 200 1000 Reg File 1000 1 Rs Rt 100 104 12 8 add 23 1 208 1000 ld 1 EX 1001 MEM DR MDR 1001 WB MA MD Main Memory 27 108 IF PC IR add 23 ID 0 200 1000 1001 Reg File 1000 1 Rs Rt 100 104 12 8 add 23 1 208 1000 ld 1 EX 1001 MEM DR MDR 1001 WB MA MD Main Memory 28 講義の内容 1. 2. 3. 4. RISC 命令セット 非パイプライン実装 命令パイプライン 29 非命令パイプライン I1 IF ID EX MEM WB IF ID EX MEM WB I0 30 命令パイプライン I1 I0 IF ID EX MEM WB パイプライン・ステージ 31 命令パイプラインの表現 I1 I0 IF I0 I1 I2 I3 I4 I5 IF ID EX MEM WB cycle ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 32 パイプライン化 パイプライン化 (pipelining) の効果 レイテンシ (latency) 1命令の処理時間 変わらない(か,やや延びる) スループット (throughput) 単位時間当たりの処理量 (ステージ数)倍になる 使い勝手がよい技 「手」が余っているときには,やってみるとよい. 33 CPI CPI : Cycles Per Instruction スループット 命令パイプラインの効率を計る指標 (性能) = (クロック速度)÷ (CPI) cycle I0 IF ID EX MEM WB I1 IF ID I2 EX MEM CPI = 5 WB IF ID EX MEM WB cycle I0 I1 I2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM CPI = 1 WB 34 パイプライン・ハザード パイプライン・ハザード (hazard) パイプライン動作を妨げる要因 1. 構造ハザード (structural hazard) HW の資源の不足が原因 2. 非構造ハザード SW の持つ依存関係が原因 1. データ・ハザード (data hazard) データ依存 2. 制御ハザード (control hazard) 制御依存,分岐命令の実行 35 構造ハザードの例 メモリのポートの不足 cycle LD I1 I2 I3 I4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM IF ID EX 36 W M IF 100 PC ID IR 0 200 5 Reg File Rs LD 1 2 10 100 Rt EX MEM WB 1000 DR MDR MA MD 210 Main Memory 37 構造ハザードの例 メモリのポートの不足 cycle LD I1 I2 I3 I4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM IF ID EX 38 W M ちなみに… ステージ間で,使用する資源が異なる cycle LD ADD I2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 39 データ・ハザード 命令間のデータ依存 cycle add r4 = r1 + r2 add r5 = r4 + r3 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 40 制御ハザード 分岐命令の実行 cycle BE I1 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 41 インターロック と バブル パイプライン・ハザード (hazard) パイプライン動作を妨げる要因 パイプライン・インターロック (interlock) によって対処 パイプライン・バブル (bubble) が発生 「パイプラインが乱れる」 42 ロード命令 と バブル I4 I3 I2 I1 LD IF ID EX MEM WB 43 ロード/ストア命令 と バブル I4 I3 I2 I1 LD IF インターロック ID EX MEM WB 44 バブルの表現 cycle LD I1 I2 I3 I4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 45 アーキテクチャ的対処 インターロックする ⇒ バブルが発生 ⇒ 性能低下 インターロックする機会を減らすことが重要! 構造ハザード 資源の不足が原因 資源の追加で消える 例えば,メモリ・ポートの場合, 命令キャッシュとデータ・キャッシュの分離 (separate) 非構造ハザード プログラムが原因 原理的に消えない バブルの削減 46 バブルの削減 (データ・ハザード) cycle add r4 = r1 + r2 IF add r5 = r4 + r3 add r4 = r1 + r2 add r5 = r4 + r3 EX MEM WB IF IF add r5 = r4 + r3 add r4 = r1 + r2 ID OR ID EX OR IF OR EX OR M MEM WB IF IF EX EX MEM WB MEM WB EX MEM WB バイパス 47 バイパス 同じもの: オペランド・バイパス レジスタ・バイパス 結果 (result) バイパス (データ)フォワーディング (forwarding) 48 IF 100 PC ID IR 0 200 5 Reg File Rs LD 1 2 10 100 Rt EX MEM WB 1000 DR MDR MA MD 210 Main Memory 49 バブルの削減(制御ハザード) cycle I0 IF be ID EX MEM WB IF ID EX MEM WB I1 I0 be I1 IF IF ID EX MEM IF nPC EX MEM WB IF OR ID EX MEM WB EX MEM WB next PC 計算器 50 W インターロックの排除(制御ハザード) cycle I0 IF be ID EX MEM WB IF ID EX MEM WB I1 I0 IF IF be ID EX MEM IF nPC EX MEM WB IF OR I1 be I0 I1 IF nPC IF EX OR IF ID EX MEM WB EX MEM WB MEM WB EX OR MEM WB EX 遅延分岐 MEM WB 51 W 遅延分岐 遅延分岐 (delayed branch) 分岐命令の実行が(1サイクル)遅延される(遅れる) 遅延スロット (delay slot) 分岐命令の次の命令(を置く場所) 「遅延スロットに置かれた命令は(分岐の成立/不成立にかか わらず)必ず実行される」 遅延スロットに入れる命令 本来の分岐の上流にあたる部分から探す 見つからなければ,nop を入れる 52 インターロックの排除(データ・ハザード) cycle I0 IF ld ID EX MEM WB IF ID EX MEM I1 I0 IF IF ld OR IF I1 ld I0 I1 WB EX OR ID OR IF EX OR IF MEM WB MEM WB EX バイパス MEM WB IF IF EX OR EX MEM WB MEM WB EX OR MEM WB EX 遅延ロード MEM WB 53 遅延ロード 遅延ロード (delayed load) ロード命令の実行が(1サイクル)遅延される(遅れる) 遅延スロット (delay slot) ロード命令の次の命令(を置く場所) 「遅延スロットに置かれた命令は,ロード命令の結果を使うこ とができない」 遅延スロットに入れる命令 まわりから探す 見つからなければ,nop を入れる 54 遅延分岐,遅延ロード プログラムに対して制約を課す HW を簡単化するため インターロック機構の排除 性能のため 遅延スロットを埋めることができれば,性能は向上する (コンパイラなら)多くの場合 埋められる MIPS (Tech. inc./Architecture) Microprocessor w/o Interlocked Pipeline Stages パイプライン・マシンのため スーパースカラ化すると負の遺産に… 55 バック・エッジ もろもろの元凶は,パイプラインのバック・エッジ バック・エッジ 逆向きの信号の流れ 56 IF 100 PC ID IR 0 200 5 Reg File Rs LD 1 2 10 100 Rt EX MEM WB 1000 DR MDR MA MD 210 Main Memory 57 バック・エッジ長 と バブルの量 cycle BE I1 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 58 まとめ RISC 現在のアーキテクチャの基礎 命令パイプライン パイプライン・ハザード 構造ハザード: HW の追加で消せる 非構造ハザード: 原理的に消えない 非構造ハザード バック・エッジが元凶 59 今後の予定 次回 休み 次々回 スーパースカラ・プロセッサ Out-of-Order 実行 それ以降 投機:バック・エッジを消す?! 60
© Copyright 2024 ExpyDoc