Professional Documents
Culture Documents
HW3
Assigned
Due:
June
2,
4:30pm,
via
homework
dropbox
Computer! Processor! ! Control! (brain)! Datapath! (brawn)! Memory! ! ! (where " programs, " data " live when" running)! Devices! Input!
Output!
Display, Printer"
Control
ALU
Clk
Datapath
Select set of datapath components and establish clocking methodology Assemble datapath meeUng requirements Analyze implementaUon of each instrucUon to determine se]ng of control points that eects the register transfer. Assemble the control logic
op
6 bits
31
26
op
6 bits
31
26
op
6 bits
rs
5 bits
21
rs
5 bits
rt
5 bits
16
rt
5 bits
rd
5 bits
shamt
5 bits
op: operaUon (opcode) of the instrucUon rs, rt, rd: the source and desUnaUon register speciers shamt: shic amount funct: selects the variant of the operaUon in the op eld address / immediate: address oset or immediate value target address: target address of jump instrucUon
ori rt,rs,imm16
31
BRANCH:
31
26
op
6 bits
21
rs
5 bits
16
rt
5 bits
immediate
16 bits
beq rs,rt,imm16
Register
Transfer
Language
RTL
gives
the
meaning
of
the
instrucUons
{op , rs , rt , rd , shamt , funct} = MEM[ PC ]
All
start
by
fetching
the
instrucUon
inst ADDU SUBU ORI LOAD
Register Transfers
R[rd] = R[rs] + R[rt];
R[rd] = R[rs] R[rt];
R[rt] = R[rs] | zero_ext(Imm16);
PC = PC + 4
PC = PC + 4
PC = PC + 4
PC = PC + 4
PC = PC + 4
, rs , rt ,
{op
Imm16}
= MEM[ PC ]
R[rt] = MEM[ R[rs] + sign_ext(Imm16)];
STORE
MEM[ R[rs] + sign_ext(Imm16) ] = R[rt];
Steps
again
Analyze
ISA
Select
components
Assemble
datapath
Determine
control
points
Build
control
logic
PC Extender (sign extend) Add and Sub register or extended immediate Add 4 or extended immediate to PC
Select
32
32
MUX
32
32
Adder
OP
A
32
MUX
ALU
32
Result
32
ALU
Address selects the word to put on Data Out Write Enable = 1: address selects the memory word to be wrigen via the Data In bus
Write
Enable:
negated
(or
deasserted)
(0):
Data
Out
will
not
change
asserted
(1):
Data
Out
will
become
Data
In
RA (number) selects the register to put on busA (data) RB (number) selects the register to put on busB (data) RW (number) selects the register to be wrigen via busW (data) when Write Enable is 1
Step 3: Assemble DataPath meeUng requirements Register Transfer Requirements Datapath Assembly InstrucUon Fetch Read Operands and Execute OperaUon
Address
Instruction
Memory
Instruction Word
32
3b:
Add
&
Subtract
R[rd]
=
R[rs]
op
R[rt]
Ex.:
addU rd,rs,rt
Ra,
Rb,
and
Rw
come
from
instrucUons
Rs,
Rt,
and
Rd
31
26
21
16
11
6
0
elds
op
rs
rt
rd
shamt
funct
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
ALUctr
and
RegWr:
control
logic
acer
decoding
the
instrucUon
Rd
Rs
Rt
RegWr
5
5
5
busA
32
busB
32
ALUctr
busW
32
Clk
Rw
Ra
Rb
32 32-bit
Registers
ALU
Result
32
Already
rt
immediate
5 bits
16
15
rd?
16 bits
immediate
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Rd
Rt
RegDst
16 bits
16 bits
Mux
Rt register read??! Rs
Rt?
What about ALUct RegWr
5
5
5
r
busA
Rw
Ra
Rb
busW
32
Result
32 32-bit
32
Registers
32
busB
Clk
32
ALU
Mux
ZeroExt
imm16
16
32
ALUSrc
Already
ALUctr
W_Src
Rw
Ra
Rb
32 32-bit
Registers
32
MemWr
WrEn
Adr
Mux
Mux
Extender
imm16
??
ALUSrc
16
Data In
32
Clk
Data
Memory
32
ExtOp
W_Src
busA
Rw
Ra
Rb
32
32 32-bit
Registers
busB
32
32
Extender
32
Mux
Mux
imm16
16
WrEn
Adr
Data In
32
32 Data
Clk
Memory
ALUSrc
ExtOp
else
PC
=
PC
+
4
Datapath
for
Branch
OperaUons
beq
rs,
rt,
imm16
Datapath
g26 enerates
condiUon
(equal)
31
21
16
op
6 bits
rs
rt
immediate
5 bits
5 bits
16 bits
Inst Address
RegWr
5
5
00
32
busW
Clk
Rs
Rt
5
busA
Rw
Ra
Rb
32
32 32-bit
Registers
busB
32
0
Cond
4
Adder
Adder
imm16
PC Ext
nPC_sel
Clk
Already
Equal?
Mux
PC
Rs
Rt
Rd
Imm16
nPC_sel
RegDst
ALUctr
MemWr
MemtoReg
Equal
Rt
Rd
1
0
Rs
Rt
RegWr
5
5
5
busA
Rw
Ra
Rb
=
busW
32
32 32-bit
0
32
32
Registers
busB
0
32
Clk
32
WrEn
Adr
1
1
Data In
Data
imm16
32
Clk
16
Clk
Memory
00
ALU
Mux
PC
Mux
Mux
Extender
ExtOp
ALUSrc
4
Adder
Adder
PC Ext
imm16
Control
ALU
Clk
Datapath
1: 2: 3: 4: 5: 6: 7: 8: