Professional Documents
Culture Documents
edu/~cs61c
CS61C : Machine Structures
Lecture 29 – RISC-V Datapath I
Instructors
Dan Garcia and Bora Nikolic
2018-10-29
Processor Memory
Enable? Input
Read/Write
Control
Cache Program
Datapath Memory (including
Address cache) organized
PC Bytes around blocks,
which are typically
Write multiple words
Registers Data
Processor organized
around words and bytes
Processor‐Memory Interface I/O‐Memory Interfaces
rd
Reg[ ]
PC
rs1
IMEM
DMEM
ALU
rs2
+4 imm
mux
•Combinational Elements
OP
CarryIn Select
A A
32 A 32
Adder
32
MUX
ALU
Sum Result
32 Y 32
32
B CarryOut B B
32 32 32
Not in CS61C
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB DataB ALU
clk
IMEM Reg [ ]
Inst[31:0] clk
RegWriteEnable (RegWEn)
=1
Control logic
31 25 24 20 19 15 14 12 11 76 0
0000000 rs2 rs1 000 rd opcode
add 5 5 add 5 Reg-Reg OP
CS61C L29 Datapath I 18 Garcia, Nikolić, Fall 2018 © UCB
Timing Diagram for add
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
+
Inst[24:20] Reg[rs2]
AddrB DataB ALU
clk
IMEM Reg [ ]
clock
Inst[31:0] clk
RegWEn
time
Clock
PC 1000 1004
PC+4 1004 1008
inst[31:0] add x1,x2,x3 add x6,x7,x9
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB DataB ALU
clk
IMEM Reg [ ]
clk
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB DataB ALU
clk
IMEM Reg [ ]
clk
Immediate should
be here
Inst[31:0] RegWEn ALUSel
(1=Write, 0=NoWrite) (add=0/sub=1)
Control logic
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB DataB 0 ALU
clk
IMEM Reg [ ] 1
clk
Imm[31:0]
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB DataB 0 ALU
clk
IMEM Reg [ ] 1
Inst Bsel = 1
[31:20] clk
Imm.
Gen Imm[31:0]
------inst[31]-(sign-extension)------- inst[30:20]
imm[31:0]
inst[31:20] imm[31:0] • High 12 bits of instruction (inst[31:20]) copied
Imm.
Gen to low 12 bits of immediate (imm[11:0])
• Immediate is sign-extended by copying value
ImmSel=I of inst[31] to fill the upper 20 bits of the
immediate value (imm[31:12])
CS61C L29 Datapath I 27 Garcia, Nikolić, Fall 2018 © UCB
R+I Datapath
+4
Add
DataD
Inst[11:7]
PC AddrD Reg[rs1]
addr Inst[19:15]
pc+4 inst AddrA DataA alu
Inst[24:20] Reg[rs2]
+
AddrB ALU
clk DataB 0
Works for all other I-format
IMEM Reg [ ] 1
arithmetic instructions
Inst
[31:20] Imm.
clk (slti,sltiu,andi,
Gen Imm[31:0] ori,xori,slli,srli,
srai) just by
changing ALUSel
Inst<31:0> ImmSel RegWEn BSel ALUSel
Control logic