Professional Documents
Culture Documents
http://www.comp.nus.edu.sg/~cs2100/
Assembly
Language
Processor:
Datapath
Processor:
Control
Processor Datapath
Generic Execution
Stages
MIPS Execution Stages
Constructing Datapath
Pipelining
Cache
Processor: Datapath
Datapath
Control
Processor: Datapath
lw, sw
Branches
beq, bne
Left as exercises
Processor: Datapath
Next Instruction
Instruction
Fetch
Instruction
Decode
Fetch:
Decode:
Operand
Fetch
Result
Write
Execute:
Operand Fetch:
Execute
Fetch &
Decode
Operand
Fetch
Execute
Result
Write
lw $3, 20( $1 )
standard
standard
standard
Result stored in $3
if (Taken)
PC = Target
opr = Operand
MemAddr = Memory Address
Processor: Datapath
Design changes:
Fetch
lw $3, 20( $1 )
Decode &
oRead [$1] as opr1
Operand
oRead [$2] as opr2
Fetch
ALU
Memory
Access
Result
Write
Processor: Datapath
if (Taken)
PC = Target
Read
address
Instruction
Instruction
Instruction
memory
Decode Stage
A register
Memory which
stores program
instructions
Processor: Datapath
10
Instruction
Address
Instruction
Instruction
Memory
Memory
2048
..
add $3, $1, $2
Processor: Datapath
2056
..
11
Element: Adder
Inputs:
Add
Sum
Output:
A+B
12
Magic of clock:
Add
4
In
PC
Time
Read
address
Clk
Instruction
Instruction
memory
PC
In
100
104
Processor: Datapath
104
108
108
112
112
116
13
1.
2.
Instruction to be executed
Processor: Datapath
14
Inst.
Read
register 1
Read
register 2
Write
register
Read
data 1
Register
File
Data
Operands
Read
data 2
Execute Stage
Register
Number
Collection of
registers, known
as register file
Processor: Datapath
15
A collection of 32 registers:
Writing of register
1(True) = Write, 0 (False) = No Write
Register
Number
Read
register 1
Read
register 2
Data
Write
register
Write
data
Read
data 1
Register
File
Data
Read
data 2
RegWrite
Processor: Datapath
16
000000
rs
25:21
01001
Inst [25:21]
01010
rt
20:16
Read
register 1
Read
register 2
Write
register
Read
data 1
content of
register $9
Register
File
rd
15:11
01000
shamt
10:6
00000
Write
data
Read
data 2
content of
register $10
RegWrite
100000
funct
5:0
Result to be
stored
(produced by later
stage)
Notation:
Inst [Y:X]
= bits X to Y in Instruction
Processor: Datapath
17
001000
rs
25:21
10110
Inst [25:21]
10101
rt
20:16
Read
register 1
Read
register 2
Write
register
Read
data 1
Content of
register $22
Register
File
Immediate
15:0
Write
data
Read
data 2
RegWrite
Problems:
- Destination $21 is in the "wrong position"
- Read Data 2 is an immediate value, not from register
Processor: Datapath
18
001000
rs
25:21
10110
Inst [25:21]
10101
rt
20:16
Read
register 1
Read
register 2
Immediate
15:0
Inst [15:11]
M
U
X
Write
register
Write
data
RegDst
RegDst:
A control signal to choose
either Inst[20:16] or Inst[15:11]
as the write register number
Read
data 1
Register
File
Read
data 2
Processor: Datapath
19
Recap: Multiplexer
Function:
Control
m
Inputs:
.
.
.
inn-1
Control:
in0
out
m bits where n = 2m
Control=0 select in0
Control=3 select in3
Output:
M
U
X
Processor: Datapath
20
001000
rs
25:21
10110
10101
rt
20:16
Read
register 1
Read
register 2
Immediate
15:0
Inst [15:11]
M
U
X
Write
register
Read
data 1
Register
File
Read
data 2
Write
data
RegWrite
M
U
X
RegDst
Inst [15:0]
16
Sign
Extend
32
ALUSrc
ALUSrc:
A control signal to
choose either
"Read data 2" or
the sign extended
Inst[15:0] as the
second operand
21
opcode
31:26
100011
rs
25:21
10110
Inst [25:21]
10101
rt
20:16
Read
register 1
Read
register 2
Immediate
15:0
Inst [15:11]
M
U
X
Write
register
Read
data 1
Register
File
Read
data 2
Write
data
RegWrite
M
U
X
RegDst
Inst [15:0]
16
Sign
Extend
32
Processor: Datapath
ALUSrc
22
opcode
31:26
000100
rs
25:21
01001
Inst [25:21]
00000
rt
20:16
Read
register 1
Read
register 2
Immediate
15:0
Inst [15:11]
M
U
X
Write
register
Read
data 1
Register
File
Read
data 2
Write
data
RegWrite
RegDst
Inst [15:0]
16
Sign
Extend
32
Processor: Datapath
M
U
X
ALUSrc
23
Inst[31:0]
Inst [15:11]
Read
register 1
Read
register 2
Write
register
M
U
X
Read
data 1
Registers
Write
data
Read
data 2
RegWrite
RegDst
Inst [15:0]
16
Operand 1
Sign
Extend
32
Processor: Datapath
M
U
X
Operand 2
ALUSrc
24
Calculation result
Processor: Datapath
25
ALU
Memory Stage
Decode Stage
Operands
ALU
result
Logic to perform
arithmetic and
logical operations
Processor: Datapath
26
isZero?
ALU
result
A op B
Control:
(A op B) == 0?
ALU
ALUcontrol
Inputs:
Outputs:
Processor: Datapath
ALUcontrol
Function
0000
AND
0001
OR
0010
add
0110
subtract
0111
slt
1100
NOR
27
000000
rs
25:21
01001
Inst [25:21]
01010
rt
20:16
rd
15:11
01000
shamt
10:6
00000
Inst [15:11]
Read
register 1
Read
register 2
Write
register
M
U
X
Write
data
ALUcontrol
Read
data 1
isZero?
Register
File
Read
data 2
RegWrite
RegDst
100000
funct
5:0
Inst [15:0]
ALU
ALU
result
M
U
X
ALUSrc
16
Sign
Extend
32
Processor: Datapath
ALUcontrol:
Set using opcode + funct
field (more in next lecture)
28
29
Add
M
U
X
Add
opcode
31:26
000100
rs
25:21
01001
Left Shift
2-bit
ALUcontrol
Inst [25:21]
00000
rt
20:16
Immediate
15:0
Inst [15:11]
Read
register 1
Read
register 2
Write
register
M
U
X
Write
data
Read
data 1
Read
data 2
RegDst
16
Sign
Extend
Register
File
RegWrite
Inst [15:0]
PCSrc
32
PCSrc:
Control Signal
to select
between
(PC+4) or
Branch Target
isZero?
ALU
ALU
result
M
U
X
ALUSrc
30
31
Result
Write
Data
Read
Data
Data
Memory
Result Store
Stage
ALU Stage
Address
MemRead
Memory which
stores data
values
Processor: Datapath
32
Inputs:
Memory Address
Data to be written (Write Data) for store
instructions
Read and Write controls; only one can be
asserted at any point of time
Read
Data
Data
Memory
MemRead
Output:
Address
Write
Data
Control:
MemWrite
Processor: Datapath
33
lw $21, -50($22)
opcode
31:26
100011
000100
rs
25:21
10110
01001
ALUcontrol
Inst [25:21]
10101
00000
rt
20:16
5
5
Immediate
15:0
1111
0000 1111
0000 1100
0000 1110
0011
Inst [15:11]
M
U
X
4
RR1
RD1
MemWrite
RR2
Registers
ALU
WR
RD2
M
U
X
WD
RegWrite
RegDst
Inst [15:0]
16
Sign
Extend
32
ALUSrc
Processor: Datapath
ALU
result
Address
Data
Memory
Write
Data
Read
Data
MemRead
34
opcode
31:26
101011
000100
rs
25:21
10110
01001
ALUcontrol
Inst [25:21]
10101
00000
rt
20:16
5
5
Immediate
15:0
1111
0000 1111
0000 1100
0000 1110
0011
Inst [15:11]
M
U
X
4
RR1
RD1
MemWrite
RR2
Registers
ALU
WR
RD2
M
U
X
WD
RegWrite
16
Address
Data
Memory
Write
Data
RegDst
Inst [15:0]
ALU
result
Sign
Extend
32
Processor: Datapath
Read
Data
MemRead
35
000000
rs
25:21
01001
ALUcontrol
Inst [25:21]
01010
rt
20:16
5
5
01000
rd
15:11
Inst [15:11]
M
U
X
4
RR1
RD1
MemWrite
RR2
Registers
ALU
WR
RD2
00000
shamt
10:6
M
U
X
WD
RegWrite
100000
funct
5:0
16
Address
Data
Memory
Write
Data
RegDst
Inst [15:0]
ALU
result
Sign
Extend
Read
Data
32
MemToReg:
Processor: Datapath
M
U
X
MemToReg
36
37
Result
Read
register 1
Read
register 2
Write
register
Write
data
Read
data 1
Registers
Read
data 2
38
000000
rs
25:21
01001
ALUcontrol
Inst [25:21]
01010
rt
20:16
5
5
01000
rd
15:11
Inst [15:11]
M
U
X
4
RR1
RD1
MemWrite
RR2
Registers
ALU
WR
RD2
WD
00000
shamt
10:6
RegWrite
M
U
X
ALU
result
Address
Data
Memory
Write
Data
100000
funct
5:0
Inst [15:0]
Sign
Extend
Processor: Datapath
Read
Data
MemToReg
M
U
X
39
40
Complete Datapath
Instruction
Memory
PC
Instruction
Add
Add
Left Shift
2-bit
Address
M
U
X
opcode
31:26
000000
rs
25:21
01001
PCSrc
ALUcontrol
Inst [25:21]
01010
rt
20:16
5
5
rd
15:11
01000
shamt
10:6
00000
Inst [15:11]
M
U
X
RegDst
100000
funct
5:0
Inst [15:0]
4
RR1
RD1
is0?
RR2
Registers
WR
RD2
WD
RegWrite
ALUSrc
M
U
X
MemWrite
ALU
ALU
result
Address
Data
Memory
Write
Data
Sign
Extend
Read
Data
MemToReg
M
U
X
MemRead
Processor: Datapath
41
Reading Assignment
Processor: Datapath
42
End
Processor: Datapath
43