MIPS Microarchitecture Overview
MIPS Microarchitecture Overview
Chapter 4: Microarchitecture
Introduction
• CPU performance factors
– Instruction count
• Determined by ISA and compiler
– CPI and Cycle time
• Determined by CPU hardware
• We will examine two MIPS implementations
– A simplified version: CPI = 1
– A more realistic pipelined version: CPI ≈ 1
• Simple subset, shows most aspects
– Memory reference: lw, sw
– Arithmetic/logical: add, sub, and, or, slt
– Control transfer: beq, j
Instruction execution
Execution stages
Datapath - controller
Datapath overview
S=0→C=A
S=1→C=B
Controller overview
• Hardware components:
• ID
IF ID & WB
EXE MEM
Computer Architecture (c) Cuong Pham-Quoc/HCMUT 9
Instruction fetch
Instruction decode
• Main operations: Extract machine instructions • Results:
– R-format, branch, and store: rs, rt → – Values (32-bit) for the next stage
Registers → values
– I-format: rs → Registers → values &
immediate → sign-extend
add $s0, $s1, $s2
0|17|18|16|0|32
Instruction execution
• Main operation • Results:
– Calculate the arithmetic operations/ – Arithmetic result/memory address (ALU-
result)
address of memory/register comparison
– Comparison result (zero-output)
• R-format and bne&beq: both
operands collected from Registers
• I-format (except bne&beq): one
operands collected from Registers and
one from sign-extend
Memory access
Write back
• Main operations:
– Write values back to Registers (arithmetic/load)
• Result:
– N/A
Full datapath
Building controller
Extracting bits
• Registers:
– Read register 1 ⇐ rs (instruction[25:21])
– Read register 2 ⇐ rt (instruction[20:16])
– Write register ⇐ rt/rd → need a multiplexer
• Sign-extend ⇐ address (instruction[15:0])
Load/ 35 or 43 rs rt address
Store
31:26 25:21 20:16 15:0
Branch 4 rs rt address
31:26 25:21 20:16 15:0
Full microarchitecture
0 32 bit
MUX
Shift left 2
1
32 bit Add
PCSrc
Add
4
Branch
[31:26] Control
unit
RegWrite
MemtoReg
[25:21] 32 bit
Instruction Read register 1 Read oprd 1
PC 32 bit address data 1
ALUSrc
32 bit [20:16] zero MemWrite
Instruction Read register 2
0 ALU Read 32 bit 1
Instruction 32 bit
MUX
MUX
memory [15:11] Write register Read 0 result
1 32 bit
MUX
data 2 oprd 2 32 bit Write 0
Write data data Data
RegD 1
Register 4 bit memory
st
ALU Operation MemRead
[5:0] 6 bit
Pipelining analogy
• Pipeline laundry:
– Overlapping execution
– Improving performance
(time for entire group)
• Four loads
– Speed-up = 2.3×
– Not impressive
• Non-stop (#loads → ∞)
– Speed-up?
– Number of stages
Computer Architecture (c) Cuong Pham-Quoc/HCMUT 26
MIPS pipeline
Pipeline performance
Pipeline performance
Single-cycle(Tc = 800ps)
Pipeline(Tp = 200ps)
Pipeline datapath
Pipeline registers
Barriers in wholesale markets ⇔ Registers in digital circuits
Shift left 2
Add
Add
4
[25:21]
0 Instruction Read register 1 Read oprd1
MemtoReg
MUX
data 1 MemWrite
PC 32 bit address [20:16] zero
Instruction Read register 2 ALUSrc
1 0 ALU
Read 1
Instruction
MUX
MUX
[15:11] Write register
PCSrc Memory Read 0
1
MUX
data 2 Write 0
Write data oprd2
data Data
RegDst Registers 1 4 bit Memory
RegWrite ALU Operation MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0] 32 bit
Shift left 2
Add
Add
4
[25:21]
0 Instruction Read register 1 Read oprd1
MemtoReg
MUX
MUX
[15:11] Write register
PCSrc Memory Read 0
1 Write
MUX
data 2 oprd2 0
Write data data Data
RegDst Registers 1 4 bit Memory
[5:0] 32 bit
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd 1
Address MemtoReg
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 11
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd 2 Write 00
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend Control
16 bit 32 bit ALUOp
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd1
Address MemtoReg
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd1
Address MemtoReg
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd1
Address MemtoReg
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd1
Address MemtoReg
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
Shift left 2
Add
Add
4
[25:21]
0 Read register 1 Read oprd1
Address
MUX
PC data 1 MemWrite
32 bit [20:16] zero
Instruction Read register 2 ALUSrc
1 ALU Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
RegWrite ALU Operation
MemRead
[15:0] Sign ALU
extend ALUOp Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
RegDst
WB
Control
M WB
EX M WB
2 bit
MemtoReg
MemWrite
MemRead
RegWrite
ALUSrc
RegDst
ALUOp
Branch
IF/ID ID/EX EX/MEM MEM/WB
Control M WB
IF/ID WB
EX M
[31:26]
Branch
Shift left 2
Add
Add
4 RegWrite
MemtoReg
[25:21]
0 Instruction Read register 1 Read oprd1
MUX
PC address data 1
32 bit [20:16] MemWrite
ALUSrc
Instruction Read register 2 zero
1 ALU
Read 1
Instruction Write register Result Address data
MUX
PCSrc Memory Read 0
MUX
data 2 oprd2 Write 0
Write data data Data
Registers 1 4 bit Memory
MemRead
ALUOp
[15:0] Sign ALU
RegDst
extend Control
16 bit 32 bit
[5:0]
0
MUX
[20:16] [15:11]
1
Structure hazards
Data hazards
Control hazards
Code re-scheduling
Example
• Question: given the following sequence of MIPS instructions
1: lw $t1, 0($t0) 1: lw $t1, 0($t0)
2: lw $t2, 4($t0) 2: lw $t2, 4($t0)
3: add $t3, $t1, $t2 5: lw $t4, 8($t0)
4: sw $t5, 12($t0) 7: addi $t6, $t0, 4
5: lw $t4, 8($t0) 3: add $t3, $t1, $t2
6: add $t5, $t1, $t4 4: sw $t5, 12($t0)
7: addi $t6, $t0, 4 6: add $t5, $t1, $t4
Stalls insertion
Example
– Identify data hazards and solve them by the stalls insertion method;
how many cycles needed for the sequence?
• Answer:
– Data hazards (2) - (3) & (3) - (4)
rd th
– Insert two stalls for the 3 instruction & two stalls for the 4
instruction
– 12 cycles needed
Computer Architecture (c) Cuong Pham-Quoc/HCMUT 55
Example (cont.)
CK1 CK2 CK3 CK4 CK5 CK6 CK7 CK8 CK9 CK10 CK11 CK12
Stall Stall
Stall Stall
Example
Example (cont.)
• Answer (cont.):
and $s7,$s2,$s5
IM REG ALU DM REG
– Delay:
• 1 stall with forwarding or 2 stalls without forwarding
EX hazard conditions
Control
[31:26] unit
Instruction
address
Instruction
Instruction
Inst[31:0]
Memory [25:21]
ID/[Link]
[20:16]
ID/[Link]
0 EX/[Link] MEM/[Link]
MUX
[15:11]
1
RegDst
WB
WB
Control M
IF/ID Unit WB
(1) ALUSrc
EX (2) RegDst M
(3) ALUop
[31:26]
Shift left 2
Branch
Add
Add
4 RegWrite
MemtoReg
MemWrite
[25:21]
MUX
0 Instruction Read register 1 oprd 1
MUX
MUX
Memory
MUX
PCSrc 0
MUX
oprd 2 Write 0
Write data Read data 2
data Data
Registers 1 ALU 4 bit Memory
Operation MemRead
F1
F2
[15:0] (3) ALU
Sign
extend Control
16 bit 32 bit
[5:0] (2)
0
EX/[Link]
MUX
MEM/[Link]
[15:11] 1
ID/[Link]
Forwarding
ID/[Link] unit EX/[Link]
Mem/[Link]
Mux values
Source Explanation
(binary)
F1 = 00 ID/EX The first ALU operand comes from the registers file
The first ALU operand is forwarded from the prior ALU
F1 = 10 EX/MEM
result
The first ALU operand is forwarded from data memory
F1 = 01 MEM/WB
of an earlier ALU result
F2 = 00 ID/EX The second ALU operand comes from the registers file
The second ALU operand is forwarded from the prior
F2 = 10 EX/MEM
ALU result
The second ALU operand is forwarded from data
F2 = 01 MEM/WB
memory of an earlier ALU result
1 WB
Write 0 ID/[Link] WB
MUX
Hazard LU-hazard M
WB
detection 0 (1) ALUSrc
EX (2) RegDst M
IF/[Link]&rt
ID/[Link] (3) ALUop
IF/ID
Control
unit
[31:26]
Shift left 2
Branch
Add
Add
4
MemtoReg
MemWrite
RegWrite
[25:21]
MUX
0 Instruction Read register 1 oprd1
MUX
MUX
Memory
MUX
PCSrc 0
MUX
oprd2 Write 0
Write data Read data 2 data Data
Registers 1 Memory
ALU 4 bit
F1 Operation MemRead
F2
[15:0] (3) ALU
Sign
extend control
16 bit 32 bit
[5:0] (2)
0
EX/[Link]
MUX
MEM/[Link]
[15:11] 1
ID/[Link]
Forwarding
ID/[Link] unit EX/[Link]
Mem/[Link]
Branch prediction
Concluding remarks
The end