Chapter 4
Chapter 4
Chapter 4: Microarchitecture
S=0→C=A
S=1→C=B
• Hardware components:
• ID
IF ID & WB
EXE MEM
Computer Architecture (c) Cuong Pham-Quoc@HCMUT 9
Instruction fetch
• Main operations:
– Write values back to Registers (arithmetic/load)
• Result:
– N/A
• Registers:
– Read register 1 ⇐ rs (instruction[25:21])
– Read register 2 ⇐ rt (instruction[20:16])
– Write register ⇐ rt/rd → need a multiplexer
• Sign-extend0⇐ address
rs
(instruction[15:0])
rt rd shamt funct
R-type
31:26 25:21 20:16 15:11 10:6 5: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
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
• 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
Single-cycle(Tc = 800ps)
Pipeline(Tp = 200ps)
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
– 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
• Answer (cont.):
and $s7,$s2,$s5
IM REG ALU DM REG
– Delay:
• 1 stall with forwarding or 2 stalls without forwarding
Computer Architecture (c) Cuong Pham-Quoc@HCMUT 61
Detecting data hazards
1a. ID/EX.rs
IF/ID
= EX/MEM.rd ID/EX EX/MEM MEM/WB
Memory [25:21]
ID/EX.rs
[20:16]
ID/EX.rt
0 EX/MEM.rd MEM/WB.rd
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/MEM.rd
MUX
MEM/WB.rd
[15:11] 1
ID/EX.rt
Forwarding
ID/EX.rs unit EX/MEM.RegWrite
Mem/WB.RegWrite
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/EX.MemRead WB
MUX
Hazard LU-hazard M
WB
detection 0 (1) ALUSrc
EX (2) RegDst M
IF/ID.rs&rt
ID/EX.rt (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/MEM.rd
MUX
MEM/WB.rd
[15:11] 1
ID/EX.rt
Forwarding
ID/EX.rs unit EX/MEM.RegWrite
Mem/WB.RegWrite