Introduction to CPU Design
CS 154: Computer Architecture Lecture #10
Winter 2020
Ziad Matni, Ph.D.
Dept. of Computer Science, UCSB
Administrative
Exam on Wednesday, 2/12 No new lab this week
Lab#5isdueonThursday,2/13(by11:59PM)
2/10/20 Matni, CS154, Wi20 2
Midterm Exam (Wed. 2/12)
Whats on It?
Everything weve done so far from start to Monday, 2/10 NO CPU DESIGN MATERIAL IN EXAM!
What Should I Bring?
Your pencil(s), eraser, MIPS Reference Card (on 1 page)
You can bring 1 sheet of hand-written notes (turn it in with exam). 2 sides ok.
What Else Should I Do?
IMPORTANT: Come to the classroom 5-10 minutes EARLY
If you are late, I may not let you take the exam
IMPORTANT: Use the bathroom before the exam once inside, you cannot leave
Random seat assignments
Bring your UCSB ID
2/10/20 Matni, CS154, Wi20 3
Lecture Outline
Some examples using F-P Instructions Intro to CPU Design
Understanding the Fetch-Execute Cycle in the Hardware
2/10/20 Matni, CS154, Wi20 4
MIPS FP Instructions
Single-Precision Double-Precision
Addition add.s add.d
Subtraction sub.s sub.d
Multiplication mul.s mul.d
Division div.s div.d
Comparisons c.xx.s c.xx.d Where xx can be eq, neq, lt, gt, le, ge
Example: c.eq.s
Load lwc1 lwd1
Store swc1 swd1
Also, F-P branch, true (bc1t) and branch, false (bc1f)
2/10/20 Matni, CS154, Wi20 5
MIPS FP Instructions
Programs generally dont do integer ops on FP data, or vice versa
FP instructions operate only on FP registers
There are 32 FP registers separate from the regular CPU
registers
More registers with minimal code-size impact
2/10/20 Matni, CS154, Wi20 6
The Floating Point Registers
MIPS has 32 separate registers for floating point: $f0, $f1, etc
Paired for double-precision $f0/$f1, $f2/$f3, etc
Example MIPS assembly code:
lwc1 $f4, 0($sp) # Load 32b F.P. number into F4
lwc1 $f6, 4($sp) # Load 32b F.P. number into F6 add.s $f2, $f4, $f6 # F2 = F4 + F6 single precision swc1 $f2, 8($sp) # Store 32b F.P. number from F2
2/10/20
Matni, CS154, Wi20 7
Example Code
C++ code:
float f2c (float fahr) {
return ((5.0/9.0)*(fahr 32.0)); }
Assume:
fahr in $f12, result in $f0, constants in global memory space (i.e. defined in .data)
Compiled MIPS code:
2/10/20
Matni, CS154, Wi20 8
f2c:
lwc1 $f16, const5
lwc1 $f18, const9
div.s $f16, $f16, $f18
lwc1 $f18, const32
sub.s $f18, $f12, $f18
mul.s $f0, $f16, $f18
jr $ra
2/10/20 Matni, CS154, Wi20 9
Implementing the Design of a CPU
CPU performance factors
Instruction count: Determined by ISA and compiler CPI and Cycle time: Determined by CPU hardware
We will examine two MIPS implementations A simplified version
A more realistic pipelined version
Simple subset, shows most aspects
Memory reference: lw, sw
Arithmetic/logical: add, sub, and, or, slt
Control transfer: beq, j
2/10/20
Matni, CS154, Wi20 10
The Fetch-Execute Cycle
Execute Instruction
In the ALU
Store
In Control Unit a
Decode Instruction
In registers OR In memory
2/10/20
Matni, CS154, Wi20
11
Fetch Instruction
From memory
The Instruction Fetch-Execute Cycle
For any instruction, do these 2 things first:
1. Send PC to the memory where instruction is & fetch it
2. Read 1 or 2 registers per rs/rt codes OR
Read 1 register (for lw/sw instructions)
What happens next depends on the instruction class
There are 3 instruction classes:
1. memory-reference 2. arithmetic-logical 3. branches
2/10/20 Matni, CS154, Wi20 12
The Instruction Fetch-Execute Cycle
Depending on instruction class
ALU is almost always the next step.
Use ALU to calculate:
Some arithmetic result using Regs
Memory address for load/store (again, using Regs) Branch target address (not so much using Regs)
Then, the different instruction classes need different things done
2/10/20 Matni, CS154, Wi20 13
The Instruction Fetch-Execute Cycle
Per the instruction class
Memory-reference type:
Access data memory for load/store
Arithmetic-Logical (or load instruction)
Write data from the ALU or memory back into a register
Branching
Change next instruction address based on branch outcome
Otherwise, the PC = PC + 4
2/10/20 Matni, CS154, Wi20 14
General (and Simplified) CPU Hardware Design
2/10/20 Matni, CS154, Wi20 15
REMEMBER: This is drawn in abstract blocks, NOT in the exact way the logic hardware actually is!!
General (and Simplified) CPU Hardware Design
The PC could get either one of these adder outputs
Adder (part of the ALU) to add 4 to PC
This is actually decoded and used to control all other blocks
Adder (part of the ALU) for branch addressing
ALU out could go to 2 different places
This ALU input could come from 2 different sources
2/10/20
Matni, CS154, Wi20
16
REMEMBER: This is drawn in abstract blocks, NOT in the exact way the logic hardware actually is!!
A Little More Detail (Remember Multiplexers?)
2/10/20 Matni, CS154, Wi20 17
Now showing Muxes and Control Lines
2/10/20 Matni, CS154, Wi20 18
YOUR TO-DOs for the Week
Study for the midterm! Current lab due on Thursday
No new Lab this week!
Next week:
NO CLASS ON MONDAY (University Holiday)
Wednesday (2/19) we resume CPU Design (Ch. 4)
2/10/20 Matni, CS154, Wi20 19
2/10/20 Matni, CS154, Wi20 20
Reviews
There are no reviews yet.