Download presentation
Presentation is loading. Please wait.
1
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124 情報工学科 天野英晴
2
1サイクルCPUの問題点 クリティカルパスが長い 資源の共用ができない → マルチサイクル化 全ての処理を1サイクルで実行
全ての命令が最長の命令遅延に合わせる 動作周波数を上げることが難しい 資源の共用ができない ALUの使いまわし 命令メモリとデータメモリの共用 → マルチサイクル化
3
クリティカルパスの切断 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
4
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 命令・データメモリ
5
コントローラの状態遷移 rst_n = L 命令フェッチ 実行 IF EX 共用メモリから EX(実行) 命令を取ってきて
IR(命令レジスタ) に格納 EX(実行) IR中の命令に従って 実行
6
命令フェッチ 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 命令・データメモリ
7
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 命令・データメモリ
8
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 命令・データメモリ
9
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 命令・データメモリ
10
1サイクル版のクリティカルパスの計算(復習)
全体の回路で最も長いパス=クリティカルパス 動作周波数はクリティカルパスによって決まる 以下を仮定する メモリ遅延 2nsec レジスタファイル読み出し 1nsec 2入力マルチプレクサ 0.3nsec 3(4)入力マルチプレクサ 0.5nsec セットアップ時間 0.2nsec ALUの遅延 3nsec クリティカルパス候補1 =7.2 クリティカルパス候補2 =5.7 1/7.2nsec →138 MHzで動作! POCOの場合、1クロックに1命令実行できるので、138MIPS(Million Instruction Per Second)で動くと言える
11
例題 LD命令のクリティカルパスを計算してみよう
レジスタファイル(1nsec)+2入力マルチプレクサ(0.3nsec)+メモリ遅延(2nsec)+3入力マルチプレクサ(0.5nsec)+セットアップ時間(0.2nsec)=4nsec
12
演習1 2サイクル版のPOCOのクリティカルパスを計算せよ。(ADDの場合を求めてLDの場合と比較して長い方を採用)
全ての命令は2サイクルで終了する。MIPS値を求めよ。
13
2サイクル版POCOの 性能面での問題 CPIが2倍になる 動作周波数は2倍にはならない → 結果として1サイクル版より遅い
→ 結果として1サイクル版より遅い どうすれば性能が上がるか? →パイプライン化 マルチサイクル版と違って、クリティカルパスをたくさん切る方が有利
14
クリティカルパスの切断 書き込み 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
15
パイプライン処理 1サイクル版 の遅延 いくつかのステージに分割 命令1 命令2 命令3 命令4 一つのステージの実行が終わったら CPI
命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み いくつかのステージに分割 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令1 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令2 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令3 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 命令4 一つのステージの実行が終わったら すぐに次のステージの実行を開始 CPI (Clock cycles Per Instruction)は1
16
パイプライン処理の原則 1.なるべく均等に分割 2.なるべくたくさんのステージに分割 理想の場合、ステージ数(深さ)がdならば性能はd倍
1サイクル版 の遅延 命令読み出し 制御信号生成 レジスタ読み出し 演算 データアクセス レジスタ 書き込み 1サイクル版の周期 最長 ステージの 遅延 パイプライン版の周期 1.なるべく均等に分割 2.なるべくたくさんのステージに分割 理想の場合、ステージ数(深さ)がdならば性能はd倍 しかし、、、 そうは言っても均等には切れない ステージ間の受け渡しのための損失がある
17
パイプライン処理と並列処理 パイプライン処理はdステージあれば理想はd倍 並列処理はnプロセッサあれば理想はn倍 しかし、
パイプライン処理は各ステージが自分に必要な資源のみを持てば良い(命令メモリ、ALU、データメモリetc.) 並列処理は全プロセッサが全資源を持つ必要がある パイプライン処理の方が簡単に性能が向上する 例)工場ではまずパイプライン処理(流れ作業) 生産が追いつかなくなると、ラインを複数にする→並列化
18
POCOの4段パイプライン IF:Instruciton Fetch 命令フェッチ ID:Instruction Decode 命令デコード
命令メモリから命令を取ってきて ir(命令レジスタ)に入れる ID:Instruction Decode 命令デコード ir中の命令に従って制御信号を作る レジスタファイルからデータを読み出しrega、regbに入れる EX:Execution 命令実行 ALUで命令を実行する or データメモリを読み書きする WB:Write Back 結果書き込み ALUの計算結果 or データメモリから読み出した値をレジスタファイルに書き戻す それぞれのステージ間のパイプラインレジスタに注目! 制御信号もレジスタで遅らせる必要がある
19
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
20
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
21
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
22
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
23
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
24
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
25
演習2 パイプライン化POCOの各ステージの遅延を計算せよ。 例 IF:2nsec+0.2nsec=2.2nsec
もっとも長い命令がクリティカルパスになる。 1命令が1クロックで終わるとすると、MIPS値はどうなるか?
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.