cs161 – design and architecture of computer systemskkhas001/3-singlecycle-cs161f16.pdfcs161 –...
TRANSCRIPT
![Page 1: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/1.jpg)
CS161 – Design and Architecture of Computer Systems Single Cycle CPU Design
![Page 2: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/2.jpg)
CPU Organization ! We will build a CPU to implement our subset of
the MIPS ISA ! Memory Reference Instructions:
! Load Word (LW) ! Store Word (SW)
! Arithmetic and Logic Instructions: ! ADD, SUB, AND, OR, SLT
! Branch and Jump Instructions: ! Branch if equal (BEQ) ! Jump unconditional (J)
! These basic instructions exercise a majority of the necessary datapath and control logic for a more complete implementation
2
![Page 3: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/3.jpg)
Generic Implementation ! Use program counter (PC) to supply
instruction address ! Get instruction from memory ! Read registers ! Use instruction to decide exactly what to do
3
![Page 4: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/4.jpg)
CPU Implementations ! Single-cycle CPU (CPI = 1)
! All instructions execute in a single, long clock cycle
! Multi-cycle CPU (CPI = n) ! Instructions can take a different number of short
clock cycles to execute
4
![Page 5: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/5.jpg)
Single-Cycle Datapath Fetch: Use PC address to fetch
instruction
Decode & Register/Operand Fetch:
Determine instruction type and fetch any register operands
needed
ALU instructions: Perform Add, Sub, etc. and write result back to
register
LW/SW: Calculate address and perform
memory access
BEQ/J: Update PC (possibly based on
comparison)
5
![Page 6: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/6.jpg)
Abstract/Simplified View
! Two types of functional units: ! Elements that operate on data values
(combinational) ! Elements that contain state (sequential)
6
RegistersRegister #
Data
Register #
Data memory
Address
Data
Register #
PC Instruction ALU
Instruction memory
Address
![Page 7: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/7.jpg)
State Elements ! Unclocked vs clocked ! Clocks used in synchronous logic
7
cycle time rising edge
falling edge
![Page 8: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/8.jpg)
Unclocked State Element ! Set-reset latch
! Output depends on present inputs and also on past inputs
8
![Page 9: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/9.jpg)
Latches and Flip-flops ! Output is equal to the stored value inside the element
(don't need to ask for permission to look at the value) ! Change of state (value) is based on the clock
! Latches: whenever the inputs change, and the clock is asserted
! Flip-flop: state changes only on a clock edge (edge-triggered methodology)
9
![Page 10: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/10.jpg)
D-latch ! Two inputs:
! the data value to be stored (D) ! the clock signal (C) indicating when to read & store D
! Two outputs: ! the value of the internal state (Q) and it's complement
10
Q
C
D
_Q
D
C
Q
![Page 11: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/11.jpg)
D flip-flop (Register) ! Output changes only on the clock edge
11
_Q
Q
_Q
D latch
D
C
D latch
DD
C
C
D
C
Q
![Page 12: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/12.jpg)
Our Implementation ! An edge triggered methodology ! Typical execution:
! Read contents of some state elements, ! Send values through some combinational logic ! Write results to one or more state elements
12
Clock cycle
State element
1Combinational logic
State element
2
![Page 13: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/13.jpg)
Register File ! Built using D flip-flips
13
M u x
Register 0Register 1
Register n – 1Register n
M u x
Read data 1
Read data 2
Read register number 1
Read register number 2
Read register number 1 Read
data 1
Read data 2
Read register number 2
Register fileWrite register
Write data Write
![Page 14: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/14.jpg)
Register File ! Note: We still use the real clock to determine
when to write
14
n-to-1 decoder
Register 0
Register 1
Register n – 1C
C
D
DRegister n
C
C
D
D
Register number
Write
Register data
01
n – 1n
Read register number 1 Read
data 1
Read data 2
Read register number 2
Register fileWrite register
Write data Write
![Page 15: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/15.jpg)
Simple Implementation ! Include the functional units we need for each instruction ! Think of this as a puzzle! J
15
PC
Instruction memory
Instruction address
Instruction
a. Instruction memory b. Program counter
Add Sum
c. Adder
ALU control
RegWrite
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
ALU result
ALU
Data
Data
Register numbers
a. Registers b. ALU
Zero5
5
5 3
16 32Sign
extend
b. Sign-extension unit
MemRead
MemWrite
Data memory
Write data
Read data
a. Data memory unit
Address
![Page 16: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/16.jpg)
Instruction Ordering ! Identify which components each instruction type would
use and in what order: ALU-Type, LW, SW, BEQ
16
PC
Instruction memory
Instruction address
Instruction
a. Instruction memory b. Program counter
Add Sum
c. Adder
PC
Instruction memory
Instruction address
Instruction
a. Instruction memory b. Program counter
Add Sum
c. Adder
ALU control
RegWrite
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
ALU result
ALU
Data
Data
Register numbers
a. Registers b. ALU
Zero5
5
5 3
16 32Sign
extend
b. Sign-extension unit
MemRead
MemWrite
Data memory
Write data
Read data
a. Data memory unit
Address
ALU control
RegWrite
RegistersWrite register
Read data 1
Read data 2
Read register 1
Read register 2
Write data
ALU result
ALU
Data
Data
Register numbers
a. Registers b. ALU
Zero5
5
5 3
ALU-Type (ADD R3, R2, R1) 1. PC 2. I-Mem 3. Registers 4. ALU 5. WB to Reg.
LW (LW R2, 4(R1)) 1. PC 2. I-Mem 3. Base. Reg. 4. ALU 5. Read Mem 6. WB to Reg.
SW (SW R2, 8(R1)) 1. PC 2. I-Mem 3. Base. Reg 4. ALU 5. Write Mem
BEQ (BEQ R3, R1, displace) 1. PC 2. I-Mem 3. Register Access 4. Compare 5. If Zero,
Update PC = PC+disp
![Page 17: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/17.jpg)
Fetch Components ! Required operations
! Taking address from PC and reading instruction from memory ! Incrementing PC to point at next instruction
! Components ! PC register ! Instruction Memory / Cache ! Adder to increment PC value
17
![Page 18: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/18.jpg)
Fetch Datapath ! PC value serves as address to instruction memory while
also being incremented by 4 using the adder ! Instruction word is returned by memory after some delay ! New PC value is clocked into PC register at end of clock
cycle
18
![Page 19: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/19.jpg)
Fetch Datapath Example ! The PC and adder operation is shown
! The PC doesn’t update until the end of the current cycle
! The instruction being read out from the instruction memory ! We have shown “assembly” syntax and the field by field machine
code breakdown
19
![Page 20: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/20.jpg)
Modified Fetch Datapath ! Support for branch instruction added
20
![Page 21: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/21.jpg)
Modified Fetch Example ! Mux provides a path for branch target
address
21
![Page 22: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/22.jpg)
Decode ! Opcode and func. field are decoded to produce other control signals ! Execution of an ALU instruction (ADD $3,$1,$2) requires reading 2
register values and writing the result to a third ! REGWrite is an enable signal indicating the write data should be
written to the specified register
22
![Page 23: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/23.jpg)
ALU Datapath ! ALU takes inputs from register file and
performs the add, sub, and, or, slt operations ! Result is written back to dest. register
23
![Page 24: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/24.jpg)
Memory Access Datapath ! Operands are read from register file while offset is sign extended ! ALU calculates effective address ! Memory access is performed ! If LW, read data is written back to register
24
![Page 25: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/25.jpg)
Branch Datapath ! BEQ requires…
! ALU for comparison (examine ‘zero’ output) ! Sign extension unit for branch offset ! Adder to add PC and offset
! Need a separate adder since ALU is used to perform comparison
25
![Page 26: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/26.jpg)
Memory Access ! LW and SW require:
! Sign extension unit for address offset ! ALU to compute (add) base address + offset ! Data memory
26
![Page 27: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/27.jpg)
Combining Datapaths ! Combine all datapaths into one
! We can have multiple options for certain inputs
! Use muxes to select appropriate input for a given instruction
! Generate control bits to control mux
27
![Page 28: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/28.jpg)
ALUSrc Mux ! Mux controlling second input to ALU
! ALU instruction provides Read Register 2 data to the 2nd input of ALU ! LW/SW uses 2nd input of ALU as an offset to form effective address
28
![Page 29: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/29.jpg)
MemtoReg Mux ! Mux controlling writeback value to register file
! ALU instructions use the result of the ALU ! LW uses the read data from data memory
29
![Page 30: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/30.jpg)
PCSrc Mux ! Next instruction can either be PC+4, or the
branch target address, PC+Offset
30
![Page 31: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/31.jpg)
RegDst Mux ! Different destination register ID fields for ALU and LW instructions
31
![Page 32: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/32.jpg)
Single Cycle CPU Datapath
32
![Page 33: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/33.jpg)
Control ! We now have data path in place, but how do
we control which path an instruction will take? ! Single-Cycle Design:
! Instruction takes exactly one clock cycle ! Datapath units used only once per cycle ! Writable state updated at end of cycle
! What must be “controlled”? ! Muxes ! Writeable state elements: RF, Mem ! ALU
33
![Page 34: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/34.jpg)
Control ! Single-Cycle Design: everything happens
in one clock cycle ! until next falling edge of clock,
processor just one big combinational circuit!!! ! control is just a combinational circuit
(output, just function of inputs) ! outputs? control points in datapath ! inputs? the current instruction! (opcode, funct control everything)
34
![Page 35: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/35.jpg)
Datapath + Control
35
![Page 36: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/36.jpg)
Defining Control ! Most control signals are a function of the
opcode (i.e. LW/SW, R-Type, Branch, Jump)
36
![Page 37: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/37.jpg)
Defining Control ! Funct field only present in R-type instruction
! Funct controls ALU only ! To simplify control, define Main and ALU
control separately
37
![Page 38: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/38.jpg)
ALU Control ! ALU Control needs to know what instruction type it is:
! R-Type (op. depends on func. code) ! LW/SW (op. = ADD) ! BEQ (op. = SUB)
! Let main control unit produce ALUOp[1:0] to indicate instruction type, then use function bits if necessary to tell the ALU what to do
38
![Page 39: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/39.jpg)
ALU Control
ALUCon ALU function Instruction supported 0000 AND R-format (AND) 0001 OR R-format (OR) 0010 Add R-format (Add), lw, sw 0110 Subtract R-format (Sub), beq 0111 Set on less than R-format (Slt) 1100 NOR R-format (Nor)
39
ALUcon
A L U
Zero Result
A B Note: We don’t use NOR.
Ignore MSB in ALUCon.
![Page 40: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/40.jpg)
ALU Control Truth Table ! ALUControl[2:0] is a function of ALUOp[1:0] and Func[5:0]
40
Instruc. Instruction Operation
Desired ALU Action
ALUOp[1:0] Func[5:0] ALUControl
LW Load Word Add 00 X 010 SW Store Word Add 00 X 010 Branch BEQ Subtract 01 X 110 R-Type AND And 10 100100 000 R-Type OR Or 10 100101 001 R-Type Add Add 10 100000 010 R-Type Sub Subtract 10 100010 110 R-Type SLT Set on less
than 10 101010 111
![Page 41: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/41.jpg)
Simplified ALUControl Truth Table ! We can simplify using don’t cares ! Can turn into gates
! ALUControl2 = ALUOp0 OR (ALUOp1 AND F1) ! ALUControl1 = ALUOp1 NOR F2 ! ALUControl0 = ALUOp1 AND (F3 OR F0)
41
ALUOp Funct Field ALUCont.
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0
0 0 X X X X X X 010
X 1 X X X X X X 110
1 X X X 0 0 0 0 010
1 X X X 0 0 1 0 110
1 X X X 0 1 0 0 000
1 X X X 0 1 0 1 001
1 X X X 1 0 1 0 111
![Page 42: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/42.jpg)
Fully Minimized ALU Control
42
O p e r a t i o n 2
O p e r a t i o n 1
O p e r a t i o n 0
A L U O p 1
F 3
F 2
F 1
F 0
A L U O p 0
A L U O p
ALUcon 4th bit=0
funct
![Page 43: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/43.jpg)
Datapath + Control
43
![Page 44: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/44.jpg)
Main Control Signals ! Main control signals are function of opcode
44
Could generate each control signal by writing full truth table of the 6-bit opcode
Simpler for humans to design if we decode the opcode and then use instruction signals
to generate desired control signals
![Page 45: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/45.jpg)
Main Control Signal Logic
45
![Page 46: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/46.jpg)
Main Control Signal Truth Table
46
![Page 47: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/47.jpg)
Review – R-type Instructions
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction memory
Read address
Instruction [31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
RegWrite
4
16 32Instruction [15– 0]
0Registers
Write registerWrite data
Write data
Read data 1
Read data 2
Read register 1Read register 2
Sign extend
ALU result
Zero
Data memory
Address Read data M
u x
1
0
M u x
1
0
M u x
1
0
M u x
1
Instruction [15– 11]
ALU control
Shift left 2
PCSrc
ALU
Add ALU result
![Page 48: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/48.jpg)
Review – Lw Instruction
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction memory
Read address
Instruction [31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
RegWrite
4
16 32Instruction [15– 0]
0Registers
Write registerWrite data
Write data
Read data 1
Read data 2
Read register 1Read register 2
Sign extend
ALU result
Zero
Data memory
Address Read data M
u x
1
0
M u x
1
0
M u x
1
0
M u x
1
Instruction [15– 11]
ALU control
Shift left 2
PCSrc
ALU
Add ALU result
![Page 49: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/49.jpg)
Review – Branch Instructions
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction memory
Read address
Instruction [31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
RegWrite
4
16 32Instruction [15– 0]
0Registers
Write registerWrite data
Write data
Read data 1
Read data 2
Read register 1Read register 2
Sign extend
ALU result
Zero
Data memory
Address Read data M
u x
1
0
M u x
1
0
M u x
1
0
M u x
1
Instruction [15– 11]
ALU control
Shift left 2
PCSrc
ALU
Add ALU result
![Page 50: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/50.jpg)
Jump Instruction ! JAL (Jump and Link) for function calls ! How do we add JAL to datapath?
! 1. Place PC+4 (return address) into $ra ! 2. Extend RegDst mux to include 31 ($ra) ! 3. Extend MemtoReg mux at write data input to
have PC+4 as input
50
![Page 51: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/51.jpg)
Jump Instruction Implementation
51
What changes are needed to support JAL?
![Page 52: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter](https://reader031.vdocuments.mx/reader031/viewer/2022022518/5b0de0867f8b9a8b038e558b/html5/thumbnails/52.jpg)
Acknowledgements ! Slide sources from:
! UCR CS161 ! Walid Najjar ! Laxmi Bhuyan
! USC EE457 ! Mark Redekopp ! Gandhi Puvvada
52