2:
Ziad Matni, Ph.D.
Dept. of Computer Science, UCSB
CPU
Single Cycle
Datapaths
CS 154: Computer Architecture Lecture #12
Winter 2020
Administrative
Talk next week must attend Details to follow
2/24/2020 Matni, CS154, Wi20 2
Reviewing Your Midterm Exams
You can review your midterm with a TA during office hours
Last name: A thru L George T. Tu 10:30 am 12:30 pm
Lastname: MthruZ SidS. Mo3:00pm5:00pm
If you cant go to these o/hs, you can see me instead, but let me know
many days ahead of time first so I can get your exam from the TA
When reviewing your exams:
Do not take pictures, do not copy the questions
TA cannot change your grade
If you have a legitimate case for grade change, the prof. will decide Legitimate = When we graded, we added the total points wrong
Not legitimate = Why did you take off N points on this question????
2/24/2020 Matni, CS154, Wi20 3
2/24/2020 Matni, CS154, Wi20 4
Lecture Outline
A Simplified Datapath for all Instructions Single Cycle
ALU Design and Control
FYI: Read the appendix section B.5 (pp. B-26 thru B-38) for review / reference
2/24/2020
Matni, CS154, Wi20 5
Load/Store Instructions
Read register operands
Calculate address using 16-bit offset (immediate) First take the offset and sign-extend it to 32-bits
Then use ALU
Load: Read memory and update register Store: Write register value to memory
Well also need
2/24/2020
Matni, CS154, Wi20 6
includes lw, sw
e.g.: lw $t0, 4($sp)
Branch Instructions
Read register operands Compare operands
Use ALU, subtract
and check Zero output
Calculate target address
Sign-extend displacement
Shift left 2 places
AddtoPC+4 (already calculated by instruction fetch)
2/24/2020
includes beq, bne
e.g.: beq $t1, $t2, Label
Matni, CS154, Wi20 7
Putting the Elements Together
These simple data paths perform
one instruction in one clock cycle
Each datapath element can only do one function at a time
Hence, we need separate instruction and data memories
In the next lesson(s), we will see how we can perform parallel-like processing, i.e. pipelining
Use multiplexers where alternate data sources are used for different instructions
2/24/2020 Matni, CS154, Wi20 8
R-Type / Load/Store Datapath
EXAMPLE:
sub $t0, $t1, $t2
R[rd] = R[rs] R[rt]
rs = $t1 code rt = $t2 code
rd = $t0 code
rs rt
sub
0
rt
rt
X
rs
rs rt
X 0 rs rt
0
1
2/24/2020
Matni, CS154, Wi20
9
rs rt
R-Type / Load/Store Datapath
EXAMPLE:
sw $t0, 0($t1)
R[rs]+SignExtImm = R[rt]
rs = $t1 code rt = $t0 code
add
1
rt
0 0
Immed (0)
in 32 b
rs
Immed (0) in 16 b
1
0
rt
rs + 0
Value @
(rs + 0) = rt X
2/24/2020
Matni, CS154, Wi20
10
R-Type / Load/Store Datapath
EXAMPLE:
lw $t0, 0($t1)
R[rt] = R[rs]+SignExtImm
rs = $t1 code rt = $t0 code
Value at (rs + 0) from mem.
1
add
1
X
0
0
Immed (0)
in 32 b
Value at (rs + 0)
rs
rs + 0
Value @ (rs + 0)
1
Immed (0) in 16 b
0
2/24/2020
from memory
Matni, CS154, Wi20
11
Full Datapath (add Jump)
PCold
PCnew
1
EXAMPLE:
j label
PC = JumpAddr
PCnew = (PCold + 4)
+ label * 4
PCold
PCold + 4
PCold + 4
label label * 4
2/24/2020
Matni, CS154, Wi20
12
label
PCnew
What Does This Logic Block Do?
AB
OP
S
0 1
Y OUT
2/24/2020
Matni, CS154, Wi20
13
What Does This Logic Block Do?
Ainv Binv OP[1:0] Result
0
0
00
AND
1
1
00
NOR
0
1
00
A.!B^
1
0
00
!A.B^
0
0
01
OR
1
1
01
NAND
0
0
10
add
0
1
10
subtract*
^ Unpopular combo not used much * To do this, Cin has to be 1
2/24/2020 Matni, CS154, Wi20 15
What Does This Logic Block Do?
Ainv Binv OP[1:0] Result
0
0
00
AND
1
1
00
NOR
0
0
01
OR
1
1
01
NAND
0
0
10
add
0
1
10
subtract
X
1
11
less*
* less: as in a flag for set-if-less-than. Note that Binv has to be 1 when using this
2/24/2020 Matni, CS154, Wi20 16
What Does This Logic Block Do?
Same as previous block, but now with
overflow detection
and with another output, set, used only with slt
2/24/2020
Matni, CS154, Wi20 17
A 32-bit ALU Using 1-bit ALUs as building blocks
Important Notes/Observations:
1. slt and overflow are decisions made in bit 31 (MSB)
2. Bits CarryIn and Binvert work the same way (redundant) and so can be combined into one bit called Bnegate
3. To support branching ops, we need an equality function. This can be done by doing subtraction and seeing if the result is zero(i.e. a=bab=0)
So, we need an output that says the answer at the Result is Zero.
Best done as:
Zero = (Result1 + Result2 + + Result31)
2/24/2020 Matni, CS154, Wi20 18
MIPS ALU Control
ALU when used for
Load/Store:
Branch:
R-type:
ALU_CONTROL[3:0] is Ainv, Bnegate, OP1, OP0 (in that order)
F = add
F = subtract
F depends on funct field
ALU_CONTROL[3:0]
FUNCTION
0000
AND
0001
OR
0010
add
0110
subtract
0111
set-on-less-than
1100
NOR
2/24/2020 Matni, CS154, Wi20 19
Generating the ALU_Control
We get ALUOp from a decode of the opcode field of the instruction
We can further refine choices by looking at funct field
2/24/2020 Matni, CS154, Wi20 20
The Main Control Unit
Control signals derived (i.e. decoded) from instruction
opcode
always read
write
2/24/2020 Op[5:0] Matni, CS154, Wi20 21
write
sign extend and add
Full Datapath showing 7 Control Signals
See Fig. 4.16 in book (p.264) for a description of each signal
2/24/2020 Matni, CS154, Wi20 22
YOUR TO-DOs for the Week
Lab 6 due soon
2/24/2020 Matni, CS154, Wi20 23
2/24/2020 Matni, CS154, Wi20 24
Reviews
There are no reviews yet.