CSSE232 Computer Architecture I Mul5cycle Control Groups - - PowerPoint PPT Presentation
CSSE232 Computer Architecture I Mul5cycle Control Groups - - PowerPoint PPT Presentation
CSSE232 Computer Architecture I Mul5cycle Control Groups GroupA: Megan, Chris, Zach, Michael, Chase GroupB: Gary, Heather, Brodie, Philip, Joe GroupC:
Groups ¡
- GroupA: ¡Megan, ¡Chris, ¡Zach, ¡Michael, ¡Chase ¡
- GroupB: ¡Gary, ¡Heather, ¡Brodie, ¡Philip, ¡Joe ¡
- GroupC: ¡Brian, ¡Abby, ¡Aus5n, ¡Gordon ¡
- GroupD: ¡Francis, ¡Aler, ¡L.E., ¡Alvin, ¡MaJhew ¡
Outline ¡
- Control ¡lines ¡
- Finite ¡state ¡machine ¡
- Project ¡review ¡
Mul5cycle ¡Datapath ¡with ¡Control ¡
Complete multicycle MIPS datapath (with branch and jump capability) and showing the main control block and all control lines
Shift left 2 PC M u x 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Instruction [15– 11] M u x 1 M u x 1 4 Instruction [15– 0] Sign extend 32 16 Instruction [25– 21] Instruction [20– 16] Instruction [15– 0] Instruction register ALU control ALU result ALU Zero Memory data register A B
IorD MemRead MemWrite MemtoReg PCWriteCond PCWrite IRWrite ALUOp ALUSrcB ALUSrcA RegDst PCSource RegWrite Control Outputs Op [5– 0]
Instruction [31-26] Instruction [5– 0]
M u x 2 Jump address [31-0]
Instruction [25– 0] 26 28
Shift left 2 PC [31-28]
1 1 M u x 3 2 M u x 1 ALUOut Memory MemData Write data Address
New multiplexor New gates For the jump address
Mul5cycle ¡Control ¡Step ¡(1): ¡ Fetch ¡
- IR = Memory[PC];
- PC = PC + 4; ¡
1 1 1 X X 010 1
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Control ¡Step ¡(2): ¡ Instruc5on ¡Decode ¡& ¡Register ¡Fetch ¡
A = Reg[IR[25-21]]; (A = Reg[rs]) B = Reg[IR[20-15]]; (B = Reg[rt]) ALUOut = (PC + sign-extend(IR[15-0]) << 2); ¡ X X 3 X X 010
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Control ¡Step ¡(3): ¡ ALU ¡Instruc5on ¡(R-‑Type) ¡
- ALUOut = A op B; ¡
X X X 1 X ???
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
1 X X XXX X X 1 1
5 ¡ 5 ¡
RD1 ¡ RD2 ¡ RN1 ¡ RN2 ¡ WN ¡ WD ¡ RegWrite ¡
Registers ¡
Operation ¡
ALU ¡
3 ¡
E ¡ X ¡ T ¡ N ¡ D ¡
16 ¡ 32 ¡
Zero ¡ RD ¡ WD ¡ MemRead ¡
Memory ¡
ADDR ¡ MemWrite ¡
5 ¡
Instruction ¡ I ¡
32 ¡
ALUSrcB ¡
<<2 ¡ PC ¡
4 ¡ RegDst ¡
5 ¡
I ¡ R ¡ M ¡ D ¡ R ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡ 2 ¡ 3 ¡
M ¡ U ¡ X ¡
1 ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡
A ¡ B ¡
ALU ¡ OUT ¡
0 ¡ 1 ¡ 2 ¡
M ¡ U ¡ X ¡
<<2 ¡
CONCAT ¡
28 ¡ 32 ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡ ALUSrcA ¡ jmpaddr ¡
I[25:0] ¡
rd ¡
MUX ¡
0 ¡ 1 ¡ rt ¡ rs ¡ immediate ¡ PCSource ¡ MemtoReg ¡ IorD ¡ PCWr* ¡ IRWrite ¡
Mul5cycle ¡Control ¡Step ¡(4): ¡ ALU ¡Instruc5on ¡(R-‑Type) ¡
- Reg[IR[15:11]] = ALUOut;
- (Reg[Rd] = ALUOut)
X
Mul5cycle ¡Control ¡Step ¡(3): ¡ Memory ¡Reference ¡Instruc5ons ¡
- ALUOut = A + sign-extend(IR[15-0]); ¡
X 2 X 1 X 010
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Execu5on ¡Steps ¡(4) ¡ Memory ¡Access ¡-‑ ¡Write ¡(sw) ¡
- Memory[ALUOut] = B; ¡
X X X 1 1 X X XXX
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Control ¡Step ¡(4): ¡ Memory ¡Access ¡-‑ ¡Read ¡(lw) ¡
- MDR = Memory[ALUOut]; ¡
X X X 1 1 X X XXX
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Execu5on ¡Steps ¡(5) ¡ Memory ¡Read ¡Comple5on ¡(lw) ¡
- Reg[IR[20-16]] = MDR; ¡
1 X X X X XXX
5 ¡ 5 ¡
RD1 ¡ RD2 ¡ RN1 ¡ RN2 ¡ WN ¡ WD ¡ RegWrite ¡
Registers ¡
Operation ¡
ALU ¡
3 ¡
E ¡ X ¡ T ¡ N ¡ D ¡
16 ¡ 32 ¡
Zero ¡ RD ¡ WD ¡ MemRead ¡
Memory ¡
ADDR ¡ MemWrite ¡
5 ¡
Instruction ¡ I ¡
32 ¡
ALUSrcB ¡
<<2 ¡ PC ¡
4 ¡ RegDst ¡
5 ¡
I ¡ R ¡ M ¡ D ¡ R ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡ 2 ¡ 3 ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡
A ¡ B ¡
ALU ¡ OUT ¡
0 ¡ 1 ¡ 2 ¡
M ¡ U ¡ X ¡
<<2 ¡
CONCAT ¡
28 ¡ 32 ¡
M ¡ U ¡ X ¡
0 ¡ 1 ¡ ALUSrcA ¡ jmpaddr ¡
I[25:0] ¡
rd ¡
MUX ¡
0 ¡ 1 ¡ rt ¡ rs ¡ immediate ¡ PCSource ¡ MemtoReg ¡ IorD ¡ PCWr* ¡ IRWrite ¡
1 if Zero=1
Mul5cycle ¡Control ¡Step ¡(3): ¡ Branch ¡Instruc5ons ¡
- if (A == B) PC = ALUOut; ¡
X X X 1 1 011
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Mul5cycle ¡Execu5on ¡Step ¡(3): ¡ Jump ¡Instruc5on ¡
- PC = PC[21-28] concat (IR[25-0] << 2);
X X X 1 X X 2 XXX
5 5
RD1 RD2 RN1 RN2 WN WD RegWrite
Registers
Operation
ALU
3
E X T N D
16 32
Zero RD WD MemRead
Memory
ADDR MemWrite
5
Instruction I
32
ALUSrcB
<<2 PC
4 RegDst
5
I R M D R
M U X
1 2 3
M U X
1
M U X
1
A B
ALU OUT
1 2
M U X
<<2
CONCAT
28 32
M U X
1 ALUSrcA jmpaddr
I[25:0]
rd
MUX
1 rt rs immediate PCSource MemtoReg IorD PCWr* IRWrite
Implemen5ng ¡Control ¡
- Value ¡of ¡control ¡signals ¡is ¡dependent ¡upon: ¡
– what ¡instruc5on ¡is ¡being ¡executed ¡ – which ¡step ¡is ¡being ¡performed ¡ ¡
- Use ¡the ¡informa5on ¡we ¡have ¡accumulated ¡to ¡specify ¡a ¡finite ¡state ¡
machine ¡
– specify ¡the ¡finite ¡state ¡machine ¡graphically, ¡or ¡ – use ¡microprogramming ¡ ¡
- Implementa5on ¡is ¡then ¡derived ¡from ¡the ¡specifica5on ¡
¡
Review: ¡Finite ¡State ¡Machines ¡
- Finite ¡state ¡machines ¡(FSMs): ¡
– a ¡set ¡of ¡states ¡and ¡ ¡ – next ¡state ¡func5on, ¡determined ¡by ¡current ¡state ¡and ¡the ¡input ¡ – output ¡func5on, ¡determined ¡by ¡current ¡state ¡and ¡possibly ¡input ¡
¡ ¡ ¡ ¡ ¡
– We’ll ¡use ¡a ¡Moore ¡machine ¡– ¡output ¡based ¡only ¡on ¡current ¡state ¡
Next-state function Current state Clock Output function Next state Outputs Inputs
FSM ¡Control: ¡Memory ¡Reference ¡ ¡
MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 RegWrite MemtoReg = 1 RegDst = 0 Memory address computation (Op = 'LW') or (Op = 'SW') Memory access Write-back step (Op = 'SW') (Op = 'LW') 4 2 5 3 From state 1 To state 0 (Figure 5.37) Memory access
FSM control for memory-reference has 4 states
FSM ¡Control: ¡R-‑type ¡Instruc5on ¡ ¡
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 RegDst = 1 RegWrite MemtoReg = 0 Execution R-type completion 6 7 (Op = R-type) From state 1 To state 0 (Figure 5.37)
FSM control to implement R-type instructions has 2 states
¡ FSM ¡Control: ¡Branch ¡Instruc5on ¡ ¡
Branch completion 8 (Op = 'BEQ') From state 1 To state 0 (Figure 5.37) ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01
FSM control to implement branches has 1 state
FSM ¡Control: ¡Jump ¡Instruc5on ¡
Jump completion 9 (Op = 'J') From state 1 To state 0 (Figure 5.37) PCWrite PCSource = 10
FSM control to implement jumps has 1 state
FSM ¡Control: ¡Complete ¡View ¡ ¡
PCWrite PCSource = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 RegDst = 1 RegWrite MemtoReg = 0 MemWrite IorD = 1 MemRead IorD = 1 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 RegDst=0 RegWrite MemtoReg=1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 Instruction fetch Instruction decode/ register fetch Jump completion Branch completion Execution Memory address computation Memory access Memory access R-type completion Write-back step (Op = 'LW') or (Op = 'SW') (Op = R-type) (Op = 'BEQ') (Op = 'J') (Op = 'SW') (Op = 'LW') 4 1 9 8 6 2 7 5 3 Start
The complete FSM control for the multicycle MIPS datapath: refer Multicycle Datapath with Control Labels on arcs are conditions that determine next state
IF ¡ ID ¡ EX ¡ MEM ¡ WB ¡
Review ¡and ¡Ques5ons ¡
- Control ¡lines ¡
- Finite ¡state ¡machine ¡