3 - Processor (Single Cycle)
3 - Processor (Single Cycle)
Single-cycle Processor
(C0mputer Organization: Chapter 4)
Yanyan Shen
Department of Computer Science
and Engineering
1
Fundamentals
3
Fundamentals
4
Fundamentals
5
Fundamentals
7
Fundamentals
p Combinational Elements
p Storage Elements
m Clocking methodology
8
Fundamentals
MUX
Adder
Sum Y
32 32
B
B Carry 32
32
OP
p ALU
A
32
ALU
Result
32
B
32
9
Fundamentals
11
Fundamentals
clock
. . . .
. . . .
. . . .
p All storage elements are clocked by the same clock edge
p Cycle Time = CLK-to-Q + Longest Delay Path + Setup + Clock Skew
13
Fundamentals
14
Fundamentals
registers
rd
instruction
memory
PC
rs
memory
ALU
Data
rt
+4 imm
mux
15
Fundamentals
Fetching Instructions
p Fetching instructions involves
m reading the instruction from the Instruction Memory M[PC]
m updating the PC value to be the address of the next
(sequential) instruction PC ← PC + 4
clock
Add
Fetch 4
PC = PC+4
Instruction
Memory
Exec Decode
PC Read Instruction
Address
Decoding Instructions
p Decoding instructions involves
m sending the fetched instruction’s opcode and function field
bits to the control unit
Fetch Control
PC = PC+4 Unit
Exec Decode
Read Addr 1
Read
Instruction Read Addr 2 Data 1
17
Fundamentals
18
Fundamentals
Datapath of RR R-type
31 26 21 16 11 6 0
op rs rt rd shamt func
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
rd rs rt
RegWr 5 5 ALUctr add/sub
5
busA
Rw Ra Rb
busW 32 32-bit 32 Result
ALU
32 Registers 32
Clk busB
32
20
Fundamentals
21
Fundamentals
Datapath of Immediate Instruction
p R[rt] ← R[rs] op ZeroExt[imm16]] Example: ori rt, rs, imm16
31 26 21 16 0
op rs rt immediate
6 bits 5 bits 5 bits 16 bits
Write the results of R-Type
instruction to Rd Why need multiplexor here?
Rd Rt
RegDst 0 Mux 1 Don’t Care
Rs (Rt) ALUctr
RegWr 5 5 5
busA
Rw Ra Rb
busW 32 Result
32 32-bit
ALU
32 Registers 32
Clk busB
0
32 Mux
ZeroExt
1
imm16
16 32
ALUSrc
Ori control signals RegDst= RegWr= ALUctr= ALUSrc=
Ori control signals RegDst=1 RegWr=1 ALUctr=or ALUSrc=1 22
Fundamentals
23
Fundamentals
ALU
0
32 32
Mux
Registers
Clk busB 0 MemWr 32
32 1
Mux
WrEn Adr
1 Data In
Ext
imm16 32 Data
16 32
Clk Memory
ALUSrc
SW instruction
31 26 21 16 11 6 0
p ADD and subtract op rs rt rd shamt func
m add rd, rs, rt 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
m sub rd, rs, rt
p OR Immediate: 31 26 21 16 0
m ori rt, rs, imm16 op rs rt immediate
p LOAD and STORE 6 bits 5 bits 5 bits 16 bits
m lw rt, rs, imm16
m sw rt, rs, imm16
p BRANCH:
m beq rs, rt, imm16
p JUMP:
m j target
31 26 0
op target address
6 bits 26 bits
26
Fundamentals
27
Fundamentals
Datapath for SW
p M[ R[rs] + SignExt[imm16] ] R[rt] Example: sw rt, rs, imm16
31 26 21 16 0
op rs rt immediate
6 bits 5 bits 5 bits 16 bits
Rd Rt
RegDst
0 Mux 1 Why add this?
Rs
Rt ALUctr
RegWr 5 5 5 MemWr MemtoReg
busA
Rw Ra Rb
busW 32
32 32-bit
ALU
0
32 32
Mux
Registers busB
Clk 0 32
Mux
32 Data In 1
WrEn Adr
1 32
Ext
imm16 32 Data
16 Memory
ALUSrc Clk
ExtOp
RegDst=x, RegWr=0, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=1, MemtoReg=x
28
Fundamentals
Beq
31 26 21 16 11 6 0
p ADD and subtract op rs rt rd shamt func
m add rd, rs, rt 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
m sub rd, rs, rt
p OR Immediate: 31 26 21 16 0
m ori rt, rs, imm16 op rs rt immediate
p LOAD and STORE 6 bits 5 bits 5 bits 16 bits
m lw rt, rs, imm16
m sw rt, rs, imm16
p BRANCH:
m beq rs, rt, imm16
p JUMP:
m j target
31 26 0
op target address
6 bits 26 bits
29
Fundamentals
m M[PC]
m Cond ← R[rs] - R[rt] Compare rs and rt
m if (COND eq 0) Calculate the next instruction’s address
PC ← PC + 4 + ( SignExt(imm16) x 4 )
else
PC ← PC + 4
30
Fundamentals
Datapath for beq
p beq rs, rt, imm16 We need to compare Rs and Rt !
31 26 21 16 0
op rs rt immediate
6 bits 5 bits 5 bits 16 bits
Branch
Rd Rt Next Addr
RegDst imm16
0 Mux 1 Logic
Rs Rt 16
RegWr 5 5 5 ALUctr
busA PC
Rw Ra Rb Clk
busW 32
ALU
32 32-bit Zero
32
Clk Registers busB To Instruction
0
32 Memory
Mux
32
16
ExtOp ALUSrc
Inst
Memory Instruction<31:0>
Branch Adr
Zero
MUX ctrl
Rs Rt ALUctr
RegWr 5 5 5
4 busA
Rw Ra Rb Zero
busW
Adder
32
ALU
32 32-bit
00
0 32
Clk Registers busB
Mux
32
PC
Adder
1
PC Ext
imm16
clk
32
Fundamentals
Jump Operation
31 26 21 16 11 6 0
p ADD and subtract op rs rt rd shamt func
m add rd, rs, rt 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
m sub rd, rs, rt
p OR Immediate: 31 26 21 16 0
m ori rt, rs, imm16 op rs rt immediate
p LOAD and STORE 6 bits 5 bits 5 bits 16 bits
m lw rt, rs, imm16
m sw rt, rs, imm16
p BRANCH:
m beq rs, rt, imm16
p JUMP:
m j target
31 26 0
op target address
6 bits 26 bits
33
Fundamentals
Add
4
4
Jump
Instruction Shift address
Memory 28
left 2
PC Read Instruction
Address 26
34
Fundamentals
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
35
Fundamentals
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
37
Fundamentals
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
38
Fundamentals
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
39
Fundamentals
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 Data 1 zero
Read Data
PC Instr[31-0] 0 File ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
40
Fundamentals
<21:25>
<21:25>
<16:20>
<11:15>
<0:15>
Memory
Adr
Op Fun Rt Rs Rd Imm16
Decoder
DATA PATH
41
Fundamentals
A Summary of the Control Signals
func 10 0000 10 0010 We Don’t Care :-)
op 00 0000 00 0000 00 1101 10 0011 10 1011 00 0100 00 0010
add sub ori lw sw beq jump
RegDst 1 1 0 0 x x x
ALUSrc 0 0 1 1 1 0 x
MemtoReg 0 0 0 1 x x x
RegWrite 1 1 1 1 0 0 0
MemWrite 0 0 0 0 1 0 0
Branch 0 0 0 0 0 1 0
Jump 0 0 0 0 0 0 1
ExtOp x x 0 1 1 x x
ALUctr<2:0> Add Subtr Or Add Add Subtr xxx
31 26 21 16 11 6 0
R-type op rs rt rd shamt func add, sub
42
Fundamentals
The Concept of Local Decoding
Two levels of decoding: Main Control and ALU Control
op 00 0000 00 1101 10 0011 10 1011 00 0100 00 0010
R-type ori lw sw beq jump
RegDst 1 0 0 x x x
ALUSrc 0 1 1 1 0 x
MemtoReg 0 0 1 x x x
RegWrite 1 1 1 0 0 0
MemWrite 0 0 0 1 0 0
Branch 0 0 0 0 1 0
Jump 0 0 0 0 0 1
ExtOp x 0 1 1 x x
ALUctr Add/Subtr Or Add Add Subtr xxx
ALUctr is
func determined by
ALU ALUctr
op Main 6 ALUop and
ALUop Control 3 func, while
6 Control (Local) other control
N=?
signals are
ALU
How many bits will N need? 3, why? determined by
op
R, or, +, -, and, …
43
Fundamentals
31 26 21 16 11 6 0
R-type 000000 rs rt rd shamt func
10 0101 or 110 Or
10 1010 set-on-less-than 001 Subtract
44
Fundamentals
45
Fundamentals
ALUop func
bit<2> bit<1> bit<0> bit<3> bit<2> bit<1> bit<0> ALUctr<0>
0 x 1 x x x x 1
1 x x 0 0 1 0 1
1 x x 1 0 1 0 1
46
Fundamentals
ALUop func
bit<2> bit<1> bit<0> bit<3> bit<2> bit<1> bit<0> ALUctr<1>
0 1 0 x x x x 1
1 x x 0 1 0 0 1
1 x x 0 1 0 1 1
47
Fundamentals
ALUop func
bit<2> bit<1> bit<0> bit<3> bit<2> bit<1> bit<0> ALUctr<2>
0 1 0 x x x x 1
1 x x 0 1 0 1 1
48
Fundamentals
49
Fundamentals
The “Truth Table” for the Main Control
RegDst
func
ALUSrc ALUctr
op 6 ALU
Main :
Control 3
6 Control ALUop
(Local)
Output of Main Control 3
Input of main control
op 00 0000 00 1101 10 0011 10 1011 00 0100 00 0010
R-type ori lw sw beq jump
RegDst 1 0 0 x x x
ALUSrc 0 1 1 1 0 x
MemtoReg 0 0 1 x x x
RegWrite 1 1 1 0 0 0
MemWrite 0 0 0 1 0 0
Branch 0 0 0 0 1 0
Jump 0 0 0 0 0 1
ExtOp x 0 1 1 x x
ALUop (Symbolic) R-type” Or Add Add Subtr xxx
ALUop <2> 1 0 0 0 0 x
ALUop <1> x 1 0 0 x x
ALUop <0> x 0 0 0 1 x
50
Fundamentals
Decoder
51
Fundamentals
ALUSrc
RegDst
MemtoReg
MemWrite
Branch
Jump
ExtOp
ALUop<2>
ALUop<1>
ALUop<0>
52
Fundamentals
<21:25>
<16:20>
<11:15>
<0:15>
Jump
Rd Rt Fetch Unit
RegDst Clk
1 Mux 0
Rs Rt Rt Rs Rd Imm16
RegWr 5 5 5 ALUctr
MemtoReg
busA Zero MemWr
Rw Ra Rb
busW 32
32 32-bit
ALU
32 0
Registers busB 0 32
Mux
32
Mux
Clk 32
32
WrEn Adr 1
1 Data In
Ext
imm16 Data
32
Instr<15:0> 16 Clk Memory
ALUSrc
ExtOp
53