Beruflich Dokumente
Kultur Dokumente
ECE437: Introduction to
Digital Computer Design
Output
Control
Mithuna Thottethodi
Chapter 4
Memory
Datapath
Input
Fall 2014
ECE437, Fall 2014
Outline
(2)
Control
(3)
(4)
Storage Elements
CarryIn
A
Adder
Adder
32
32
Sum
Carry
32
32
ALU
ALU
32
(5)
busW
32
Clk
Memory
Selec
t
32
MUX
32
busA
32
32 32-bit
32 bit
Registers busB
Write Enable
1 input bus
1 output bus
Not bidirectional
Data In
32
Clk
32
ECE437, Fall 2014
Data Out
N
Clk
RW RARB
Write Enable 5 5 5
for PC
32 registers
2 read ports/buses
1 write port/bus
Result
32
Mux
ECE437, Fall 2014
Register
Register file
O
P
Write Enable
Data In
N
Address
DataOut
32
(6)
Processor Implementation
This Lecture: Datapath
Storage
Output
Control
Comb. Logic
Memory
Datapath
Storage elements
Input
Combinational elements
ALUs, Adders, Muxes
(7)
Rs
nPC_sel
Rs
Rt
5
busA
Rw Ra
R
R Rb
32
32 32-bit
You will busB
design this
Registers
0
32
Clk
Clk
imm16
16
Extender
Adder
(9)
Outline
Datapath - single cycle
Control
32
Data In
32
Clk
32
WrEn Adr
Data
Memory
ALUSrc
(10)
= MEM[ PC ]
Register Transfers
ADDU
PC < PC + 4
SUBU
PC < PC + 4
ORi
PC < PC + 4
LOAD
STORE
BEQ
(11)
!!
inst
MemtoReg
Mux
00
ExtOp
ECE437, Fall 2014
ALUctr MemWr
Equal
ALU
32
Imm16
Mux
PC
Mux
busW
Rd
RegWr 5
Add
der
PC Ext
imm16
Rt
Rd Rt
1
RegDst
Instruction<31:0>
<0:15>
Adr
<11:15>
Inst
Memory
<16:20>
<21:25>
Datapath - 1 CPI
(8)
A Simple Implementation
ADD and SUB
31
OR Immediate:
21
rs
5 bits
16
rt
5 bits
31
26
21
16
31
op
6 bits
26
op
6 bits
rs
5 bits
21
rs
5 bits
rt
5 bits
16
rt
5 bits
31
26
BRANCH:
21
op
6 bits
rs
5 bits
11
rd
5 bits
6
shamt
5 bits
0
funct
6 bits
0
immediate
16 bits
0
Next Address
Logic
PC
Clk
immediate
16 bits
16
rt
5 bits
Address
immediate
16 bits
Instruction Word
Instruction
Memory
32
(13)
ALU Instructions
R[rd] <- R[rs] op R[rt] Example: addU
(14)
rd, rs, rt
31
Ra, Rb, and Rw come from instructions rs, rt, and rd fields
ALUctr and RegWr: control logic after decoding the
instruction
31
26
21
op
6 bits
16
rs
5 bits
11
rt
5 bits
rd
5 bits
RegDst
funct
6 bits
32
32
32
imm16
16
Result
32
Mux
busB
32
ZeroExt
busB
immediate
16 bits
ALUctr
32 32-bit
Registers
32
Clk
Result
busA
ALU
32
Rs
5
5
Rw Ra Rb
busW
ALU
busW
32
Clk
11
16
rt
immediate
5 bits
16 bits
rd?
16 15
Mux
ALUctr
busA
Rw Ra Rb
32 32-bit
Registers
21
rs
5 bits
0000000000000000
16 bits
Rt
Rd
RegWr 5
Rd Rs Rt
RegWr 5 5
5
26
op
6 bits
31
shamt
5 bits
Next Address
Logic
Adder
LOAD and
STORE Word
26
op
6 bits
Fetch Instructions
32
ALUSrc
(15)
(16)
Load Instruction
26
21
op
Rd
RegDst
Mux
RegWr 5
26
op
6 bits
immediate
5 bits
rd
16 bits
Rd
Rs
5
5
b A
busA
Data
Memory
ALUctr
MemWr
W_Src
32
Clk
Rs
5
Rt
5
Rw Ra Rb
32 32-bit
Registers
32
imm16
16
busA
32
busB
32
32
WrEn Adr
Data In 32
32
Mux
Data In
32
Clk
0
immediate
16 bits
Mux
WrEn Adr
16
rt
5 bits
Rt
Extender
ALUSrc
Mux
Mux
Extender
32
busW
32
MemWr
21
rs
5 bits
Mux
RegWr 5
W S
W_Src
32
busB
32
16
RegDst
ALUctr
Rw Ra Rb
32 32-bit
Registers
imm16
ALU
32
Clk
5 bits
Store Instruction
rt, imm16(rs)
11
16
rt
ALU
busW
rs
6 bits
Rt
Example: lw
Clk
Data
Memory
32
ExtOp
ECE437, Fall 2014
(17)
(18)
21
op
16
rs
6 bits
5 bits
rt
immediate
5 bits
16 bits
26
op
6 bits
A
Adder
32
Data In
32
00
ExtOp
Clk
32
busA
32
busB
32
00
Clk
(20)
0
Mux
16
ALU
imm16
Rw Ra Rb
32 32-bit
Registers
Logical
L i l vs. arithmetic
ith ti ops
=
32
Mux
imm16
Rt
Extender
PC Ext
Adder
Clk
MemtoReg
busA
Rw Ra
R
R Rb
32 32-bit
Registers
busB
32
Clk
PC
Mux
Rs
5
Adder
<0:15>
<11:15>
Mux
PC
Add
der
32
ALUctr MemWr
busW
Rt
ORI
Imm16
Equal
RegWr 5
Rs
Clk
Instruction<31:0>
RegWr 5
busW
Rd
Rd Rt
1
Rt
Cond
32
<16:20>
<21:25>
Rs
RegDst
PCSrc
PC Ext
imm16
(19)
Adr
immediate
16 bits
PCSrc
What is this?
Inst
Memory
16
rt
5 bits
Inst Address
21
rs
5 bits
Equal?
31
beq
WrEn Adr
Data
Memory
ALUSrc
(21)
Exercise
(22)
Worksheet
The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
Add
B
Beq
Sw
Lw
(23)
(24)
4
00
imm16
16
Exercise
32
Data In
32
Mux
Clk
Clk
(25)
MemtoReg
=
32
ALU
32
Extender
imm16
Rs Rt
5
5
busA
Rw Ra
R
R Rb
32 32-bit
Registers
busB
32
WrEn Adr
32
Clk
ExtOp
ECE437, Fall 2014
ALUctr MemWr
Equal
Mux
Adder
PC Ext
busW
PC
Mux
Controls : later
Imm16
RegWr 5
Add
der
Rd
Rd Rt
1
To add instructions
Rt
Instruction<31:0>
<0:15>
Rs
RegDst
PCSrc
<11:15>
Adr
<16:20>
Inst
Memory
<21:25>
Summary
Data
Memory
ALUSrc
(26)
Rt
op
Imm16
target address
(27)
Textbook version
Equal
jump
See worksheet #1
ECE437, Fall 2014
Rd
Control
Rs
<0:15>
Op Fun
j Addr
RTL
<11:15>
Adr
<16:20>
<21:25>
<21:25>
Inst
Memory
DATA PATH
(28)
RegWr = 1 5
ALUctr = Add
Rt
Rt
32
Imm16
1
32
MemWr = 0
0
32
32
WrEn Adr
Data In 32
Clk
Mux
ALU
16
Extender
imm16
Zero
Mux
Rw Ra Rb
32 32-bit
Registers
busB
32
32
Clk
Rd
MemtoReg = 0
busA
busW
Rs
<0:15>
Clk
Rs
<11:15>
Rt
1 Mux 0
<16:20>
Rd
RegDst = 1
Instruction
Fetch Unit
<21:25>
PCSrc= +4
Data
Memory
ALUSrc = 0
ExtOp = x
ECE437, Fall 2014
(29)
(30)
zero, sign
0 => regB; 1 => immed
add, sub, or
Inst
Memory
RegDst
Rs
16
00
=
32
0
ALUSrc
(32)
Instruction<31:0>
5
busA
RegWr = 1 5
32
busA
Rw Ra Rb
32 32-bit
Registers
busB
32
32
Clk
WrEn Adr
Data In 32
Data
Memory
Clk
imm16
16
LW Controls
Clk
Instruction<31:0>
16
1
32
Rd
32
32
WrEn Adr
Data In 32
Clk
Imm16
MemWr =
Mux
imm16
32
Rs
<0:15>
Rw Ra Rb
32 32-bit
Registers
busB
32
32
Clk
Zero
<11:15>
32
Rt
ALUctr =
ALU
Data
Memory
Rt
Mux
Clk
WrEn Adr
Data In 32
Rs
busA
busW
0
32
Clk
1 Mux 0
RegWr =
<16:20>
MemWr = 0
RegDst =
Instruction
Fetch Unit
<21:25>
Imm16
MemtoReg = 1
Rt
Extender
32
Rd
Mux
Rs
Rd
Data
Memory
ALUSrc =
ALUSrc = 1
ExtOp =
ExtOp = 1
ECE437, Fall 2014
Data
Memory
Zero
ALU
16
Extender
imm16
Data In 32
PCSrc=
<11:15>
Rt
Mux
32
Clk
WrEn Adr
SW Controls: Worksheet
<16:20>
ALUctr
= Add
Rt
busA
Rw Ra Rb
32
32 32-bit
Registers
busB
0
32
busW
<21:25>
Instruction
Fetch Unit
Clk
1 Mux 0
RegWr = 1 5
32
(34)
Instruction<31:0>
PCSrc= +4
Rs
MemWr = 0
ExtOp = 0
Rt
Imm16
MemtoReg = 0
32
32
(33)
Rd
Rd
ALUSrc = 1
ExtOp =
RegDst = 0
Rs
Zero
32
ALUSrc =
Rt
ALUctr = Or
Mux
32
Rt
ALU
Clk
Rs
Mux
1
32
MemWr =
Rt
1 Mux 0
Extender
16
MemtoReg =
Rd
RegDst = 0
busW
ALU
Extender
imm16
Zero
32
Mux
32
Clk
Imm16
Mux
Rw Ra Rb
32 32-bit
Registers
busB
32
busW
Rd
<0:15>
ALUctr =
Rs
<11:15>
Rt
Instruction
Fetch Unit
<16:20>
RegWr =
Rt
PCSrc= +4
<21:25>
Rs
<0:15>
Clk
1 Mux 0
Instruction<31:0>
<11:15>
Rt
<21:25>
Rd
RegDst =
Instruction
Fetch Unit
<16:20>
PCSrc=
Data
Memory
Clk
(31)
WrEn Adr
32
ExtOp
ECE437, Fall 2014
32
Data In
32
Mux
imm16
Rt
ALU
Adder
PC Ext
imm16
Clk
Mux
Clk
RegDst:
Extender
Mux
PC
Adder
32
busA
Rw Ra Rb
32 32-bit
Registers
busB
32
busW
1 => Mem
RegWr 5
4
write memory
MemtoReg:
RegWr:
write dest register
ALUctr MemWr MemtoReg
Equal
Rd Rt
1
Addr
PCSrc
MemWr:
(35)
(36)
SW Controls: Solution
BEQ Controls
if (R[rs] - R[rt] == 0) then Zero <- 1 ; else Zero <- 0
Data
Memory
imm16
16
1
32
Imm16
MemtoReg = x
32
32
WrEn Adr
Data In 32
Clk
Data
Memory
ExtOp = x
(37)
(38)
Control Logic
Register Transfer
ADD
R[rd] < R[rs] + R[rt];
PC < PC + 4
ALUsrc = RegB, ALUctr = add, RegDst = rd, RegWr, PCSrc = +4
SUB
R[rd] < R[rs] R[rt];
PC < PC + 4
ALUsrc = RegB, ALUctr = sub, RegDst = rd, RegWr, PCSrc = +4
ORi
R[rt] < R[rs] + zero_ext(Imm16);
PC < PC + 4
ALUsrc = Im
Im, Extop = Z
Z , ALUctr = or
or , RegDst = rt
rt, RegWr,
RegWr PCSrc =
+4
LOAD
R[rt] < MEM[ R[rs] + sign_ext(Imm16)]; PC < PC + 4
ALUsrc = Im, Extop = Sn, ALUctr = add,
MemtoReg, RegDst = rt, RegWr, PCSrc = +4
STORE MEM[ R[rs] + sign_ext(Imm16)] < R[rs]; PC < PC + 4
ALUsrc = Im, Extop = Sn, ALUctr = add, MemWr, PCSrc = +4
First:
Equations in terms of opcodes
Next
Equations in terms of instruction bits
BEQ
if ( R[rs] == R[rt] ) then PC < PC + sign_ext(Imm16)] || 00 else PC
< PC + 4;
ALUsrc = RegB, PCSrc = Beq AND ZERO, ALUctr = sub
ECE437, Fall 2014
(39)
Rd
ALUSrc = 0
ExtOp = 1
inst
32
Rs
M W =0
MemWr
Mux
Rw Ra Rb
32 32-bit
Registers
busB
32
32
Clk
ALUSrc = 1
Rt
Z
Zero
<0:15>
ALUctr =
Subtract
<11:15>
Clk
Mux
WrEn Adr
Data In 32
32
Rt
b A
busA
busW
32
Rs
Extender
RegWr = 0
32
Clk
1 Mux 0
M W =1
MemWr
Mux
RegDst = x
Imm16
Instruction
Fetch Unit
ALU
32
ALU
16
Extender
imm16
Z
Zero
Mux
Rw Ra Rb
32 32-bit
Registers
busB
32
32
Clk
Rd
MemtoReg = x
busA
busW
Rs
Rt
<16:20>
Rt
PCSrc= Br
Rd
<21:25>
ALUctr
= Add
Rt
<0:15>
Rs
Instruction<31:0>
<11:15>
Clk
1 Mux 0
RegWr = 0 5
Instruction
Fetch Unit
<16:20>
RegDst = x
Rt
<21:25>
PCSrc= +4
Rd
PCSrc
(40)
PCSrc
ALUsrc
ALUctr
else
l sign
i
ALUsrc
ALUctr
ExtOp
<= _____________
E tO
ExtOp
MemWr
<= _____________
MemWr
MemtoReg
<= _____________
MemtoReg
RegWr:
<= _____________
RegWr:
RegDst:
<= _____________
RegDst:
(41)
(42)
RegDst
ALUSrc
MemtoReg
RegWrite
1
0
0
1
1
0
0
1
0
1
0
1
0
1
1
1
x
1
x
0
x
0
x
0
x
x
x
0
MemWrite
PCSrc
0
0
0
0
0
0
0
0
1
0
0
1
0
0
Jump
ExtOp
0
x
0
x
0
0
0
1
0
1
0
x
1
x
Add
Subtract
Or
Add
Add
Subtract
xxx
ALUctr<2:0>
31
26
21
16
R-type
op
rs
rt
I-type
op
rs
rt
J-type
op
11
rd
ALUctr
31
26
R-type
21
op
funct
RegDst
ALUSrc
MemtoReg
RegWrite
MemWrite
Branch
Jump
ExtOp
ALUop<N:0>
0
1
0
1
0
1
1
1
x
1
x
0
x
0
x
0
x
x
x
0
0
0
0
x
R-type
0
0
0
0
Or
0
0
0
1
Add
1
0
0
1
Add
0
1
0
x
0
0
1
x
xxx
6
ALUop
(44)
func
Subtract
op
00 0000
lw
sw
beq
jump
RegDst
ALUSrc
MemtoReg
RegWrite
1
0
0
0
1
0
0
1
1
x
1
x
x
0
x
x
x
x
MemWrite
Branch
Jump
ExtOp
ALUop<2:0>
0
0
0
0
0
0
1
0
0
1
0
0
0
x
R-type
(100)
0
0
Or
(010)
0
1
Add
(000)
0
1
Add
(000)
0
x
1
x
xxx
Main
Control
func
6
ALUop
(47)
lw
Add
0 00
sw
Add
0 00
beq
jump
xxx
xxx
Subtract
0 01
(46)
op
00 0000
R-type
ori
lw
sw
beq
jump
RegWrite
..
op<5>
<0>
..
op<5>
<0>
..
..
op<5>
<0>
..
..
op<5>
<0>
op<5>
<0>
op<0>
ALUctr
3
R-type
ori
lw
sw
beq
jump
RegWrite
ALU
ALU
Control
(Local)
Subtract
(001)
ori
Or
0 10
R-type
R-type
1 00
R-type
op
(2) Or, (3) Add, (4) Subtract, and (5) And (Example: andi)
ALUop (Symbolic)
ALUop<2:0>
(45)
ALUctr
3
ALUctr
ALU
Control
(Local)
ALU
Control
(Local)
6
ALUop
N
Main
Control
ALU
funct
Encoding
1
0
0
1
Main
Control
shamt
jump
func
op
rd
11
rt
add, sub
immediate
(43)
op
16
rs
shamt
target address
(48)
op<5>
..
PLA implementation
..
..
op<5>
<0>
op<5>
<0>
R-type
op<5>
..
<0>
ori
lw
op<5>
..
<0>
sw
op<5>
beq
PLA Representation
..
<0>
op<0>
jump
RegWrite
ALUSrc
RegDst
MemtoReg
MemWrite
Branch
Jump
ExtOp
ALUop<2>
ALUop<1>
ALUop<0>
(49)
op
6
Instr<31:26>
RegDst
Main
Control
func
Instr<5:0> 6
ALUSrc
32
MemtoReg
MemWr
0
32
32
WrEn Adr
Data In 32
Clk
Imm16
Mux
Rd
<0:15>
Extender
16
Zero
Rs
<11:15>
busA
Rw Ra Rb
32
32 32-bit
Registers
busB
0
32
imm16
Instr<15:0>
Rt
ALUctr
Mux
32
Clk
Rt
5
ALU
busW
Rs
5
<16:20>
Instruction
Fetch Unit
Clk
1 Mux 0
RegWr
g
5
ALUctr
Instruction<31:0>
nPC_sel
Rt
ALU
Control
<21:25>
Rd
RegDst
Data
Memory
ALUSrc
ECE437, Fall 2014
ExtOp
(50)
(51)
Including jump
ECE437, Fall 2014
Cycletime
(52)
Storage
Setup time
Comb. Logic
Clk-to-Q
New Value
Old Value
Old Value
ALUctr
Old Value
RegWr
Old Value
(53)
New Value
Old Value
busW
Old Value
Rd Rs Rt
RegWr 5 5
5
busW
32
Clk
ECE437, Fall 2014
Rw Ra Rb
32 32-bit
Registers
ALUctr
Register Write
Occurs Here
busA
32
busB
32
ALU
busA, B
Result
32
(54)
lw Instruction
Longer critical path
Instruction
Rd Rs
5
5
Instruction
Address
Rt
5
Imm
16
A
Rw Ra Rb
32 32-bit
Registers
PC
32
32
32
ALU
Next Address
Data
Address
Data In
Ideal
Data
Memory
Old Value
ALUctr
Old Value
ExtOp
Old Value
New Value
ALUSrc
Old Value
New Value
MemtoReg
Old Value
New Value
RegWr
Old Value
New Value
busA
Old Value
Delay through Extender & Mux
Old Value
busB
Register
Write Occurs
New Value
ALU Delay
Clk
Clk
32
Clk
(55)
Cycle Time
Performance
f
Implications
p
Minimize all three
Insts/prog fixed -- f(interface,compiler)
CPI = 1 : As good as it gets (*)
Clock cycle time : high, lw critical path
(57)
Old Value
New Value
Data Memory Access Time
New
(56)
CPI
Inst. Count
Address
busW
Old Value
ECE437, Fall 2014
Single-cycle Datapath
Clk-to-Q
New Value
Old Value
PC
Clk
Load
PC
Store
PC
Branch
PC
Reg File
mux
ALU
Inst Memory
mux
Reg File
Critical Path
ALU
Data Mem
Inst Memory
Reg File
ALU
Data Mem
Inst Memory
Reg File
mux
cmp
mux
setup
mux setup
mux
(58)
10