CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 –...

52
CS161 – Design and Architecture of Computer Systems Single Cycle CPU Design

Transcript of CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 –...

Page 1: CS161 – Design and Architecture of Computer Systemskkhas001/3-singlecycle-cs161f16.pdfCS161 – Design and Architecture of ... ALU instructions: Perform Add, ... Program counter

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

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

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

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

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

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

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

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

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

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

D flip-flop (Register) ! Output changes only on the clock edge

11

QQ

_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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Acknowledgements ! Slide sources from:

! UCR CS161 ! Walid Najjar ! Laxmi Bhuyan

! USC EE457 ! Mark Redekopp ! Gandhi Puvvada

52