コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124

Slides:



Advertisements
Similar presentations
CPU設計と パイプライン.
Advertisements

計算機システムⅡ 命令レベル並列処理とアウトオブオーダ処理
07. 値予測 五島 正裕.
07. 値予測 五島 正裕.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機システムⅡ キャッシュと仮想記憶 和田俊和.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
計算機システムⅡ 主記憶装置とALU,レジスタの制御
計算機アーキテクチャ特論Chapter.6.6~6.9
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
テープ(メモリ)と状態で何をするか決める
コンピュータの主役はCPU(Central Processing Unit)
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
コンピュータ工学基礎 パイプラインハザード テキスト9章 115~124
小型デバイスからのデータアクセス 情報処理系論 第5回.
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
第10回 Dフリップフロップ ディジタル回路で特に重要な D-FF 仕組みを理解する タイミング図を読み書きできるようにする 瀬戸
Ibaraki Univ. Dept of Electrical & Electronic Eng.
計算機構成 第9回 POCOの性能評価と論理合成 テキスト7章
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
計算機システムⅡ 入出力と周辺装置 和田俊和.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
Advanced Computer Architecture
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
コンピュータアーキテクチャ: ここでやったこと これからやること
プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
第6回 dc_shellを使った論理合成 慶應義塾大学 理工学部 天野.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Advanced Computer Architecture
Advanced Computer Architecture
第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計
Advanced Computer Architecture
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
ディジタル回路の設計と CADによるシステム設計
計算機構成 第2回 ALUと組み合わせ回路の記述
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
08. メモリ非曖昧化 五島 正裕.
計算機構成 第8回 POCOの構造とVerilog記述 テキスト第5章-第6章
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
計算機構成 第5回 RISCの命令セットアーキテクチャ テキスト第4章
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
09. メモリ・ディスアンビギュエーション 五島 正裕.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 10 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
コンピュータアーキテクチャ 第 5 回.
パイプラインとは何か? マイクロプロセッサ(MPU)の高速化手法の一つのこと。
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
並列処理プロセッサへの 実数演算機構の開発
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124 コンピュータ工学基礎  マルチサイクル化とパイプライン化 テキスト9章 115~124 情報工学科 天野英晴

1サイクルCPUの問題点 クリティカルパスが長い 資源の共用ができない → マルチサイクル化 全ての処理を1サイクルで実行 全ての命令が最長の命令遅延に合わせる 動作周波数を上げることが難しい 資源の共用ができない ALUの使いまわし 命令メモリとデータメモリの共用 → マルチサイクル化

クリティカルパスの切断 Y S ext ext11 A B + + ext ext0 PC 7ns EX 実行 … … 命令メモリ IF ‘0’ 2:0 00 Y THB 01 S 00 01 10 pcsel ext ext11 ADD 10 A B alu_bsel + comsel zero 7:0 10:0 00 01 10 ‘1’ zero + ext ext0 7:0 rf_a rf_b 1 pcjr aadr 10:8 badr PC cadr 1 ‘7’ rf_c rwe rf_csel casel 00 01 10 7:5 idatain 7ns ddatain EX 実行 iaddr … … ddataout daddr 命令メモリ IF 命令フェッチ データメモリ we

2サイクル版POCO Y S A B ext ext0 PC … 命令・データメモリ ‘1’ 1 1 ‘7’ rwe 1 we 2:0 00 THB 01 S ADD 10 A B alu_bsel comsel 10:0 00 01 10 11 1 命令レジスタ ext ext0 ‘1’ rf_a rf_b 1 pcjr aadr 10:8 badr PC cadr 7:5 1 ‘7’ rf_c rwe 7:0 rf_csel casel 00 01 10 2:0 datain 1 IF/EX … dataout addr we 命令・データメモリ

コントローラの状態遷移 rst_n = L 命令フェッチ 実行 IF EX 共用メモリから EX(実行) 命令を取ってきて IR(命令レジスタ) に格納 EX(実行) IR中の命令に従って 実行

命令フェッチ PC+1 Y S A B ext ext0 命令 PC … 命令・データメモリ ‘1’ 1 1 ‘7’ rwe 1 we 2:0 00 Y THB 01 S ADD 10 A B alu_bsel comsel 10:0 00 01 10 11 1 命令レジスタ ext ext0 ‘1’ rf_a rf_b 1 pcjr aadr 10:8 命令 badr PC cadr 7:5 1 ‘7’ rf_c rwe 7:0 rf_csel casel 00 01 10 2:0 datain 1 IF/EX … dataout addr we 命令・データメモリ

LDI r0,#0x1 Y S A B ext ext0 PC … 命令・データメモリ ‘1’ 1 1 ‘7’ rwe 1 we 2:0 00 Y THB 01 S ADD 10 A B alu_bsel comsel 10:0 00 01 10 11 1 命令レジスタ ext ext0 ‘1’ rf_a rf_b 1 pcjr aadr 10:8 badr cadr PC 7:5 1 ‘7’ rf_c rwe 1 7:0 rf_csel casel 00 01 10 2:0 datain 1 IF/EX … dataout addr we 命令・データメモリ

LD r1,(r0) Y S A B ext ext0 1 PC 0 … 命令・データメモリ ‘1’ 1 1 ‘7’ rwe 1 we 2:0 00 Y THB 01 S ADD 10 A B alu_bsel comsel 10:0 00 01 10 11 1 命令レジスタ ext ext0 ‘1’ rf_a rf_b 1 pcjr 1 aadr 10:8 badr PC cadr 7:5 1 ‘7’ rf_c rwe 7:0 rf_csel casel 00 01 10 0 2:0 datain 1 IF/EX … dataout addr we 命令・データメモリ

BEQ r0,-3 Y S A B ext ext0 PC zero? … 命令・データメモリ ‘1’ 1 1 ‘7’ rwe 1 we 2:0 00 Y THB 01 S ADD 10 A B alu_bsel comsel 10:0 00 01 10 11 1 命令レジスタ ext ext0 ‘1’ rf_b 1 pcjr rf_a aadr 10:8 badr PC cadr 7:5 1 ‘7’ rf_c rwe 7:0 rf_csel casel 00 01 10 2:0 datain 1 IF/EX zero? … dataout addr we 命令・データメモリ

1サイクル版のクリティカルパスの計算(復習) 全体の回路で最も長いパス=クリティカルパス 動作周波数はクリティカルパスによって決まる 以下を仮定する メモリ遅延 2nsec レジスタファイル読み出し 1nsec 2入力マルチプレクサ 0.3nsec 3(4)入力マルチプレクサ 0.5nsec セットアップ時間 0.2nsec ALUの遅延 3nsec クリティカルパス候補1 2+1+0.5+3+0.5+0.2=7.2 クリティカルパス候補2 2+1+2+0.5+0.2=5.7 1/7.2nsec →138 MHzで動作! POCOの場合、1クロックに1命令実行できるので、138MIPS(Million Instruction Per Second)で動くと言える

例題 LD命令のクリティカルパスを計算してみよう レジスタファイル(1nsec)+2入力マルチプレクサ(0.3nsec)+メモリ遅延(2nsec)+3入力マルチプレクサ(0.5nsec)+セットアップ時間(0.2nsec)=4nsec

演習1 2サイクル版のPOCOのクリティカルパスを計算せよ。(ADDの場合を求めてLDの場合と比較して長い方を採用) 全ての命令は2サイクルで終了する。MIPS値を求めよ。

2サイクル版POCOの 性能面での問題 CPIが2倍になる 動作周波数は2倍にはならない → 結果として1サイクル版より遅い → 結果として1サイクル版より遅い どうすれば性能が上がるか? →パイプライン化 マルチサイクル版と違って、クリティカルパスをたくさん切る方が有利

クリティカルパスの切断 書き込み WB 実行 EX Y S ext ext11 A B + + ext ext0 PC 命令デコード ID ‘0’ 2:0 00 実行 EX Y THB 01 S 00 01 10 pcsel ext ext11 ADD 10 A B alu_bsel + comsel zero 7:0 10:0 00 01 10 ‘1’ zero + ext ext0 7:0 rf_a rf_b 1 pcjr aadr 10:8 badr PC cadr 1 ‘7’ 命令デコード ID rf_c rwe rf_csel casel 00 01 10 命令読み出し IF 7:5 idatain 7ns ddatain iaddr … … ddataout daddr 命令メモリ データメモリ we

パイプライン処理 1サイクル版 の遅延 いくつかのステージに分割 命令1 命令2 命令3 命令4 一つのステージの実行が終わったら CPI 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み いくつかのステージに分割 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令1 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令2 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令3 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令4 一つのステージの実行が終わったら すぐに次のステージの実行を開始 CPI (Clock cycles Per Instruction)は1

パイプライン処理の原則 1.なるべく均等に分割 2.なるべくたくさんのステージに分割 理想の場合、ステージ数(深さ)がdならば性能はd倍 1サイクル版 の遅延 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 1サイクル版の周期 最長 ステージの 遅延 パイプライン版の周期 1.なるべく均等に分割 2.なるべくたくさんのステージに分割 理想の場合、ステージ数(深さ)がdならば性能はd倍 しかし、、、 そうは言っても均等には切れない ステージ間の受け渡しのための損失がある

パイプライン処理と並列処理 パイプライン処理はdステージあれば理想はd倍 並列処理はnプロセッサあれば理想はn倍 しかし、 パイプライン処理は各ステージが自分に必要な資源のみを持てば良い(命令メモリ、ALU、データメモリetc.) 並列処理は全プロセッサが全資源を持つ必要がある パイプライン処理の方が簡単に性能が向上する 例)工場ではまずパイプライン処理(流れ作業) 生産が追いつかなくなると、ラインを複数にする→並列化

POCOの4段パイプライン IF:Instruciton Fetch 命令フェッチ ID:Instruction Decode 命令デコード 命令メモリから命令を取ってきて ir(命令レジスタ)に入れる ID:Instruction Decode 命令デコード ir中の命令に従って制御信号を作る レジスタファイルからデータを読み出しrega、regbに入れる EX:Execution 命令実行 ALUで命令を実行する or データメモリを読み書きする WB:Write Back 結果書き込み ALUの計算結果 or データメモリから読み出した値をレジスタファイルに書き戻す それぞれのステージ間のパイプラインレジスタに注目! 制御信号もレジスタで遅らせる必要がある

IF EX WB ID ir ‘1’ A areg S Y + creg B breg ext dreg PC ext0 データ メモリ rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

LDI r2,#2 LDI r0,#0 LDI r1,#1 IF EX WB ID ir ‘1’ A areg S Y + creg B rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

LD r3,(r0) LDI r2,#2 LDI r1,#1 LDI r0,#0 IF EX WB ID ir ‘1’ A areg 1 S rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg 1 S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

LD r3,(r0) LDI r2,#2 LDI r1,#1 ADD r0,r1 IF EX WB ID ir ‘1’ A areg 2 S rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg 2 S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

LD r3,(r0) LDI r2,#2 ADD r2,r2 ADD r0,r1 IF EX WB ID ir ‘1’ A areg S Y rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

LD r3,(r0) ADD r2,#3 ADD r0,r1 ADD r0,r1 IF EX WB ID ir ‘1’ A areg S Y rwe rwe_id rwe_ex opcode 15:11 decorder st_op st_op_id ld_op ld_op_id funct 3:0 funct 2:0 00 01 10 com_id THB ADD ir rd 10:8 rd_id rd_ex ‘1’ A rwe_ex areg S Y + creg 1 00 B rs 7:5 breg ext 01 dreg PC imm 7:0 10 ext0 alu_bsel daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we

演習2 パイプライン化POCOの各ステージの遅延を計算せよ。 例 IF:2nsec+0.2nsec=2.2nsec もっとも長い命令がクリティカルパスになる。 1命令が1クロックで終わるとすると、MIPS値はどうなるか?