Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 1
コンピュータアーキテクチャComputer Architecture
8. パイプラインプロセッサPipelined Processor
Ver. 2020-10-30a2020年度版
Course number: CSC.T363
吉瀬 謙二 情報工学系Kenji Kise, Department of Computer Sciencekise _at_ c.titech.ac.jp
www.arch.cs.titech.ac.jp/lecture/CA/Tue 14:20 - 16:00, 16:15 - 17:55Fri 14:20 - 16:00
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 2
A Typical Memory Hierarchy
Second
Level
Cache
(SRAM)
Control
Datapath
Secondary
Memory
(Disk)
On-Chip Components
RegF
ile
Main
Memory
(DRAM)Da
ta
Cache
Instr
Ca
ch
e
ITL
BD
TL
B
Speed (%cycles): ½’s 1’s 10’s 100’s 1,000’s
Size (bytes): 100’s K’s 10K’s M’s G’s to T’s
Cost: highest lowest
❑ By taking advantage of the principle of locality (局所性)
Present much memory in the cheapest technology
at the speed of fastest technology
TLB: Translation Lookaside Buffer
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 3
プロセッサが命令を処理するための5つのステップの修正
• IF (Instruction Fetch)メモリから命令をフェッチする.
• ID (Instruction Decode)命令をデコード(解読)しながら,レジスタの値を読み出す.
分岐命令である可能性を考慮し,読み出されたレジスタの間で一致比較を行う.命令のオフセットフィールドを符号拡張し,インクリメントされたPCに符号拡張されたオフセットを足し合わせて分岐先のアドレスを計算する.条件が成立した場合には分岐先アドレスをPCにセットして,このステージで分岐命令を完了させる.
• EX (Execution)命令操作の実行またはアドレスの生成を行う.
• MEM (Memory Access)必要であれば,データ・メモリ中のオペランドにアクセスする.
• WB (Write Back)必要であれば,結果をレジスタに書き込む.
3
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 4
プロセッサのデータパス(パイプライン処理)
4Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 5
リファレンスデザイン(project_25)のプロセッサがサポートする命令
• コンテストでは,define.v に定義される次の命令から,必要ない命令の処理を削除してよい.
`define J________ 6'd24`define JAL______ 6'd25`define BEQ______ 6'd26`define BNE______ 6'd27`define ADDI_____ 6'd28`define ADDIU____ 6'd29`define SLTI_____ 6'd30`define SLTIU____ 6'd31`define ANDI_____ 6'd32`define ORI______ 6'd33`define XORI_____ 6'd34`define LUI______ 6'd35`define LW_______ 6'd38`define SW_______ 6'd43`define BLEZ_____ 6'd44`define BGTZ_____ 6'd45`define BLTZ_____ 6'd46`define BGEZ_____ 6'd47
`define SLL______ 6'd02 `define SRL______ 6'd03 `define SRA______ 6'd04 `define SLLV_____ 6'd05 `define SRLV_____ 6'd06 `define SRAV_____ 6'd07 `define JR_______ 6'd08`define JALR_____ 6'd09 `define ADD______ 6'd14`define ADDU_____ 6'd15`define SUB______ 6'd16`define SUBU_____ 6'd17`define AND______ 6'd18`define OR_______ 6'd19`define XOR______ 6'd20`define NOR______ 6'd21`define SLT______ 6'd22`define SLTU_____ 6'd23
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 6
リファレンスデザインに含まれるプロセッサ
• Operating frequency: 50MHz
• リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.
m_regfile
m_regs
(32bit x 32)
+
w_rs
IMEM
m_imem
32
32
5
5
5
ID EX MEM
16
SignExtIm
m
Mu
x
Mu
x
DRAM
m_dmem
WB
Mu
x
32
32
12
32
32
+
pc
4 32
32
IF
Pipeline register
IfId IdEx ExMe MeWb
5
+
Shift
left 2
32
32
Mu
x
32
!=
1
Mu
xM
ux
IfId_npc
IfId_
ir
Source code will be available in /home/tu_kise/ca/src/mipscore/
mipscore.vdefine.v
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 7
プロセッサMIPSCORE: インタフェース
• メモリアクセスステージでロード,ストア命令が処理される時にDRAMにアクセスする.この時,STALL信号が1となり,その間はプロセッサの処理をストールさせる.
• STAT はプロセッサの状態を出力するために使用する.
• I_ADDR, I_IN は命令をフェッチするために使用する.I_ADDR は pc の値.
• D_ADDR, D_IN, D_OUT, D_OE, D_WE はデータメモリのリード,ライトのために使う.
• IO_IN はメモリマップドIOからの入力のために用いるが,このデザインでは使用しない.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 8
プロセッサMIPSCORE: パイプラインレジスタ
• IfId_ から始まるレジスタは命令フェッチ(If)とデコード(Id)の間のパイプラインレジスタ
• IdEx_ から始まるレジスタはデコード(Id)と実行(Ex)の間のパイプラインレジスタ
• 同様に、ExMa_ と MaWb_ が定義される.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 9
プロセッサMIPSCORE: 命令フェッチ
• If から始まるワイヤは命令フェッチ(If)で生成されるもの.他のステージも同様.
• IdTPC, IdC, IdB はレジスタとして宣言されているが,実際にはワイヤとなる.
• PSTALL はDRAMアクセスによるプロセッサのストール
• bstallは?
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 10
Hazards make pipelining hard
• 命令を適切なサイクルで実行できないような状況が存在する.これをハザード(hazard)と呼ぶ.
• 構造ハザード (structural hazard)
• オーバラップ実行する命令の組み合わせをハードウェアがサポートしていない場合.資源不足により生じる.
• データ・ハザード(data hazard)
• データの受け渡しの制約によって生じるハザード
• 制御ハザード(control hazard)
• 分岐命令,ジャンプ命令によって生じるハザード
• まずは,データ・ハザードと制御ハザードが無いものとしてパイプラインプロセッサを構築する.その後,これらに対応するための修正を加える.
10
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 11
分岐命令,ジャンプ命令によって生じるハザード
11Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
• 上は分岐命令が分岐不成立 (Untaken) の場合の命令実行の様子
• 下は分岐命令が分岐成立 (Taken) の場合の命令実行の様子
• 分岐成立の場合に,1サイクルの無駄が生じる.
• 分岐命令がフェッチされてから,分岐の成立/不成立が確定するまでの間のサイクル数が増えると無駄が増加する点に注意 (bstallにも注意).
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 12
戦略4: 遅延分岐 (delayed branch), MIPSが採用
• 分岐命令の後続の幾つかの命令を実行した後に,分岐する.1サイクルの遅延を持つ命令実行順は次の通り.
• 分岐命令を実行
• 分岐命令の次アドレスの命令を実行
• 分岐成立では,飛び先アドレスの命令を実行(不成立では,分岐命令の次の次のアドレスの命令を実行)
• 分岐命令の後続の幾つかの命令を実行した後に分岐.分岐命令によるストールは生じない.
12Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 13
リファレンスデザインに含まれるプロセッサ
• Operating frequency: 50MHz
• リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.
m_regfile
m_regs
(32bit x 32)
+
w_rs
IMEM
m_imem
32
32
5
5
5
ID EX MEM
16
SignExtIm
m
Mu
x
Mu
x
DRAM
m_dmem
WB
Mu
x
32
32
12
32
32
+
pc
4 32
32
IF
Pipeline register
IfId IdEx ExMe MeWb
5
+
Shift
left 2
32
32
Mu
x
32
!=
1
Mu
xM
ux
IfId_npc
IfId_
ir
Source code will be available in /home/tu_kise/ca/src/mipscore/
mipscore.vdefine.v
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 14
Hazards make pipelining hard
• 命令を適切なサイクルで実行できないような状況が存在する.これをハザード(hazard)と呼ぶ.
• 構造ハザード (structural hazard)
• オーバラップ実行する命令の組み合わせをハードウェアがサポートしていない場合.資源不足により生じる.
• データ・ハザード(data hazard)
• データの受け渡しの制約によって生じるハザード
• 制御ハザード(control hazard)
• 分岐命令,ジャンプ命令によって生じるハザード
• まずは,データ・ハザードと制御ハザードが無いものとしてパイプラインプロセッサを構築する.その後,これらに対応するための修正を加える.
14
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 15
Data Hazard
• sub命令が生成した$2を後続の命令が利用する場合にデータの受け渡しの制約が生じる.
15Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 16
Data Hazard and Stall
16
stallstall
Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 17
フォワーディングによるデータハザードの回避
17Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 18
フォワーディングによるデータハザードの回避
18
IfId
IdEx
ExMe
MeWb
Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 19
フォワーディングによるデータハザードの回避
19
IfId
IdEx
ExMe
MeWb
Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
IfId
IdEx
ExMe
MeWb
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 20
フォワーディングのための変更点
20Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 21
データハザードによって生じるストール
21Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 22
プロセッサMIPSCORE: 命令デコード
• ビットの切り出し.
• 命令番号 IdOPNの設定.
• 書き込みレジスタ番号 IdDSTの設定.
• この実装では,IdATTR は利用しない.
• レジスタファイルにアクセスしてオペランド IdRRS, IdRRT をフェッチする.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 23
プロセッサMIPSCORE: 命令デコード
• 分岐命令の実行.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 24
プロセッサMIPSCORE: 実行
• データフォワーディングと実行
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 25
プロセッサMIPSCORE: 実行
• データフォワーディングと実行
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 26
Data Memory (DRAM, m_dram)
• プロセッサMIPSCOREはストアすべきデータD_OUTを出力し,それがメモリコントローラDRAMの入力i_dataとなる.また,プロセッサはストアすべきデータのアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_WEにより,DRAMへのデータのストアを指示する.
• プロセッサはロードするアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_OEにより,DRAMへのデータのリードを指示する.DRAMから得られたデータがo_dataに出力され,それがプロセッサの入力D_INとなる.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 27
プロセッサMIPSCORE: メモリアクセス
• コンテストでは,バイト単位のメモリアクセス (LB, SB),ハーフワード単位のメモリアクセス(LH, SH) は実装しなくても良い.LW, SW がアクセスするアドレスは4バイト単位で整列されている.
赤線の処理は不要.次の記述でよい.wire [31:0] MaLDD = D_IN;
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 28
リファレンスデザインに含まれるプロセッサ
• Operating frequency: 50MHz
• リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.
m_regfile
m_regs
(32bit x 32)
+
w_rs
IMEM
m_imem
32
32
5
5
5
ID EX MEM
16
SignExtIm
m
Mu
x
Mu
x
DRAM
m_dmem
WB
Mu
x
32
32
12
32
32
+
pc
4 32
32
IF
Pipeline register
IfId IdEx ExMe MeWb
5
+
Shift
left 2
32
32
Mu
x
32
!=
1
Mu
xM
ux
IfId_npc
IfId_
ir
Source code will be available in /home/tu_kise/ca/src/mipscore/
mipscore.vdefine.v
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 29
Reference Design (project_25)
• Modules
• PLOADER, IMEM, MIPSCORE, m_7segcon, UartTx, DRAM, clk_wiz_0
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 30
Program loader (PLOADER)
• シリアル通信でRXDからデータを受け取る.
• 32ビットの1つの命令を受け取ると,書き込みアドレスをADDR, 受け取った命令 をDATAを設定し,書き込み信号WE を1にすることで命令メモリIMEM に書き込む.
• 命令メモリに書き込むのは受信する512KBのデータの最初の64KBのみ.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 31
Instruction Memory (IMEM)
• プロセッサ(MIPSCORE)が命令アドレスI_ADDRを出力し,それが命令メモリIMEMの入力INST_ADDRとなる.
• 命令メモリは指定されたアドレスに格納されている命令をINST_OUTに出力して,それがプロセッサの入力I_INとなる.これらが命令フェッチに対応する.
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 32
Data Memory (DRAM, m_dram)
• プロセッサMIPSCOREはストアすべきデータD_OUTを出力し,それがメモリコントローラDRAMの入力i_dataとなる.また,プロセッサはストアすべきデータのアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_WEにより,DRAMへのデータのストアを指示する.
• プロセッサはロードするアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_OEにより,DRAMへのデータのリードを指示する.DRAMから得られたデータがo_dataに出力され,それがプロセッサの入力D_INとなる.