MIPS MC Extended
MIPS MC Extended
• The Processor and Main Memory System are still the same
Address
Data
Control
CPU Memory
• However, CPU will be designed differently
• Will use the same blocks but somewhat differently
• We will focus on reuse of blocks and adjust timing
These slides are based on the course taught by Dr. Somani at Iowa State University using
the textbook by Patterson and Hennessey titled “Computer Organization and Design.” It uses
a combination of slides provide with the teaching aids with the book and their variation
created by Dr. Somani over multiple years, before and after the adoption of the book.
Simple Implementation
PC Address Read
Instruction Add Sum data 16 32
Sign
Instruction extend
Write Data
memory data memory
ALU control
5 Read 3
register 1
Read
Register 5 data 1
Read
numbers register 2 Zero
Registers Data ALU ALU
5 Write result
register
Read
Write data 2
Data data
RegWrite
a. Registers b. ALU
2
A Single-Cycle Datapath for Basic Instructions
1
Add M
u
x
4 ALU 0
Add result
RegWrite Shift
left 2
ALUOp
Instruction
register
Data
PC Address
A
Register #
Instruction
Memory or data Registers ALU ALUOut
Memory Register #
data B
Data register Register #
4
MIPS Instruction Format Again
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 11 10 6 5 0
4.
5
6
Multicycle Approach
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
RD2 M
U WA WD R 4
U
Add X X
15-11 BR
MEM Data COND
Out D Sign Shift
15-00
R Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
8
Five Execution Steps
• Instruction Fetch
• Write-back step
IR = Memory[PC];
PC = PC + 4;
10
Step 2: Instruction Decode and Register Fetch
A = Reg[IR[25-21]];
B = Reg[IR[20-16]];
ALUOut = PC + (sign-extend(IR[15-0]) << 2);
11
• Memory Reference:
ALUOut = A + sign-extend(IR[15-0]);
• R-type:
ALUOut = A op B;
• Branch:
if (A==B) PC = ALUOut;
12
Step 4 (R-type or memory-access)
MDR = Memory[ALUOut];
or
Memory[ALUOut] = B;
Reg[IR[15-11]] = ALUOut;
The write actually takes place at the end of the cycle on the edge
13
Write-back step
• Reg[IR[20-16]]= MDR;
14
Summary:
Action for R-type Action for memory-reference Action for Action for
Step name instructions instructions branches jumps
Instruction fetch IR = Memory[PC]
PC = PC + 4
Instruction A = Reg [IR[25-21]]
decode/register fetch B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] II
computation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)
jump completion
Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut]
completion ALUOut or
Store: Memory [ALUOut] = B
15
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
RD2 M
U WA WD R 4
U
Add X X
15-11 BR
MEM Data COND
Out D Sign Shift
15-00
R Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
16
LW Operation on Multi-Cycle Data Path: C1
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
17
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
18
LW Operation on Multi-Cycle Data Path: C3
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
19
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
20
LW Operation on Multi-Cycle Data Path: C5
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
21
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
22
SW Operation on Multi-Cycle Data Path: C2
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
23
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
24
SW Operation on Multi-Cycle Data Path: C4
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
25
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
26
R-TYPE Operation on Multi-Cycle Data Path: C2
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
27
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
28
R-TYPE Operation on Multi-Cycle Data Path: C4
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
29
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
30
BR Operation on Multi-Cycle Data Path: C2
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
31
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
32
JUMP Operation on Multi-Cycle Data Path: C1
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
33
M
U
25-00 X
PC 25-21 M
M RA1 A
RD1 U
U 20-16 R
I RA2 REG X
X R A
FILE ALU
L
M B U
M
U WA WD RD2 R 4
U
Add X X
15-11 BR
MEM Data D COND
Out R 15-00 Sign Shift
Ext Left 2 BNE
Data In M ALU
CON BEQ
U 05-00
X
ALUOP JUMP
31-26
CONTROL
34
Simple Questions
lw $t2, 0($t3)
lw $t3, 4($t3)
beq $t2, $t3, Label #assume not
add $t5, $t2, $t3
sw $t5, 8($t3)
Label: ...
35
36
Deciding the Control
• In each clock cycle, decide all the action that needs to be taken
• The control signal can be 0 and 1 or x (don’t care)
• Make a signal an x if you can reduce control
• An action that may destroy any useful value be not allowed
• Control Signal required
– ALU: SRC1 (1 bit), SRC2(2 bits),
– operation (Add, Sub, or from FC)
– Memory: address (I or D), read, write, data in IR or MDR
– Register File: address rt/rd, data (MDR/ALUOUT), read, write
– PC: PCwrite, PCwrite-conditional, Data (PC+4, branch, jump)
• Control signal can be implied (register file read are values in A
and B registers (actually A and B need not be registers at all)
• Explicit control vs indirect control (derived based on input like
instruction being executed, or function code field) bits
37
1
register fetch
ALUSrcA = 0
IorD = 0 ALUSrcA = 0
Start IRWrite ALUSrcB = 11
ALUSrcB = 01 ALUOp = 00
- How many ALUOp = 00
PCWrite
state bits PCSource = 00
e)
)
-typ
'
EQ
(Op = 'J')
=R
will we
'B
(Op
=
= Branch Jump
(O
computation (Op
need? 2 (Op
= 'L
W')
or
6
Execution
8
completion
9
completion
ALUSrcA = 1
ALUSrcA = 1 ALUSrcA =1 ALUSrcB = 00
ALUSrcB = 10 PCWrite
ALUSrcB = 00 ALUOp = 01
PCSource = 10
- 4 bits. ALUOp = 00 ALUOp= 10 PCWriteCond
PCSource = 01
(O
(Op = 'LW')
p
=
- Why?
'S
W
')
Memory Memory
access access R-type completion
3 5 7
RegDst = 1
MemRead MemWrite RegWrite
IorD = 1 IorD = 1 MemtoReg = 0
Write-back step
4
RegDst = 0
RegWrite
MemtoReg =1
38
Finite State Machine: Control Implementation
PCWrite
PCWriteCond
IorD
MemRead
MemWrite
IRWrite
Control logic
MemtoReg
PCSource
ALUOp
Outputs ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3
NS2
NS1
Inputs NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
Instruction register State register
opcode field
39
40