46
Multi-Cycle Datapath Lecture notes from MKP, H. H. Lee and S. Yalamanchili

Multi-Cycle Datapath

Embed Size (px)

DESCRIPTION

Multi-Cycle Datapath. Lecture notes from MKP, H. H. Lee and S. Yalamanchili. Reading. Appendices B .7, D.3, D.4, D.5. Single Cycle Datapath. What are the performance limitations of this datapth ?. Why Multi-Cycle?. Single cycle datapath Design for the worst case - PowerPoint PPT Presentation

Citation preview

Page 1: Multi-Cycle Datapath

Multi-Cycle Datapath

Lecture notes from MKP, H. H. Lee and S. Yalamanchili

Page 2: Multi-Cycle Datapath

(2)

Reading

• Appendices A.7, D.3, D.4, D.5

• Practice Problems: 15, 16, 22

Page 3: Multi-Cycle Datapath

(3)

Single Cycle Datapath

What are the performance limitations

of this datapth?

clk

cycle time

Page 4: Multi-Cycle Datapath

(4)4

Why Multi-Cycle?

Instruction Class

Instruction Fetch

Register Read

ALU Operation

Data Access

Register Write

Total Time

Load word 2ns 1ns 2ns 2ns 1ns 8ns

Store word

2ns 1ns 2ns 2ns 7ns

R-format 2ns 1ns 2ns 1ns 6ns

Branch 2ns 1ns 2ns 5ns

• Single cycle datapath Design for the worst case Need to make the cycle time = 8ns per cycle

• Multi-cycle datapth Design for each individual instruction class For the above example: cycle time = 2ns Lw=10ns (5 cycles), sw=8ns (4 cycles), R-format=8ns(4 cycles),

beq=6ns (3 cycles)

Page 5: Multi-Cycle Datapath

(5)

• Break up the instructions into steps, each step takes a clock cycle Balance the amount of work to be done Restrict each cycle to use only one major functional

unit

• At the end of a cycle Store values for use in later cycles (easiest thing to do) Introduce additional “internal” registers

Multi-Cycle Approach

Page 6: Multi-Cycle Datapath

(6)

Instruction Execution Steps

Fetch Instruction

Decode Instruction

ALU Operation

Write Register

Fetch Instruction

Decode Instruction

Branch Test & PC Update

Fetch Instruction

Decode Instruction

Address Calculation

Memory Read

Write Register

Register-Register Instruction

Memory Read Instruction

Fetch Instruction

Decode Instruction

Address Calculation

Memory Write

Memory Write Instruction

Branch Instruction Different instructions

perform different operations at this step

Page 7: Multi-Cycle Datapath

(7)

Multi-Cycle Datapath

Shiftleft 2

MemtoReg

IorD MemRead MemWrite

PC

Memory

MemData

Writedata

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

ALUOpALUSrcB

RegDst RegWrite

Instruction[15–0]

Instruction [5– 0]

Signextend

3216

Instruction[25–21]

Instruction[20–16]

Instruction[15– 0]

Instructionregister

1 Mux

0

3

2

ALUcontrol

Mux

0

1ALU

resultALU

ALUSrcA

ZeroA

B

ALUOut

IRWrite

Address

Memorydata

register

New internal registers

Fetch Instruction

Decode Instruction

Address Calculation

Memory Read

Write Register

clk

cycle time

Start instruction fetch Complete

instruction fetch

Page 8: Multi-Cycle Datapath

(8)

Functional Behavior

IF

ID

Addr

MRd

RWr

ALU

MWr

RWr

Br J

Instruction Fetch

Instruction Decode

Instruction Execute

Memory

Register Writeback

Page 9: Multi-Cycle Datapath

(9)

Complete Control Lines

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

What to writeWhen to write

Page 10: Multi-Cycle Datapath

(10)

• Instruction Fetch (IF)

• Instruction Decode and Register Fetch (ID)

• Execution, Memory Address Computation, or Branch Completion (EX)

• Memory Access or R-type instruction completion (MEM)

• Write-back step (WB)

Five Execution Steps

Page 11: Multi-Cycle Datapath

(11)

Instruction Fetch Control IR = Memory[PC]; PC+=4

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 12: Multi-Cycle Datapath

(12)

• Use PC to get instruction and put it in the Instruction Register.• Increment the PC by 4 and put the result back in the PC.• Can be described succinctly using RTL "Register-Transfer

Language"

IR = Memory[PC];PC = PC + 4;

Can we figure out the values of the control signals?

• IR = Memory[PC]; MemRead=1; IRWrite=1; IorD=0; • PC = PC + 4; ALUSrcA=0; ALUSrcB=01; ALUOp=00

(add); PCSource=00; PCWrite=1

Instruction Fetch (IF)

Page 13: Multi-Cycle Datapath

(13)

ID Stage: Assign A and B; Calculate Branch Address

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 14: Multi-Cycle Datapath

(14)

• Still do not have any idea what instruction it is.• Read registers rs and rt in case we need them• Compute the branch address (used in next

cycle in case the instruction is a branch)• RTL:

A = Reg[IR[25-21]];B = Reg[IR[20-16]];ALUOut = PC + (sign-extend(IR[15-0]) <<

2);

ALUSrcA = 0; ALUSrcB = 11; ALUOp = 00 (add); (for branch target)

Instruction Decode and Register Fetch (ID)

Page 15: Multi-Cycle Datapath

(15)

Execute: Memory TypeALUOut = A + offset (address)

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 16: Multi-Cycle Datapath

(16)

Execute: R- TypeALUOut = A op B

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 17: Multi-Cycle Datapath

(17)

Execute: Branch Typeif (A==B) PC=ALUOut

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 18: Multi-Cycle Datapath

(18)

Execute: Jump Type (New PC)

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 19: Multi-Cycle Datapath

(19)

• The first cycle, the operation is determined by the instruction class

• ALU is performing one of the following functions, based on instruction type

• Memory Reference:ALUOut = A + sign-extend(IR[15-0]);ALUSrcA=1; ALUSrcB=10; ALUop=00 (add)

• R-type:ALUOut = A op B;ALUSrcA=1; ALUSrcB=00; ALUop=10 (funct, inst[5:0],

decides op) • Branch:

if (A==B) PC = ALUOut;PCSource=01; ALUSrcA=1; ALUSrcB=00; ALUop=01

(sub); PCWriteCond=1; PCWrite=0; • Jump:

PC = {PC[31:28] || IR[25:0] || 2‘b00};PCSource=10; PCWrite=1;

Execute, memory or branch (EX: instruction dependent)

Page 20: Multi-Cycle Datapath

(20)

MEM: Load

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 21: Multi-Cycle Datapath

(21)

• Loads and stores access memory

MDR = Memory[ALUOut];IorD=1; MemRead=1;

orMemory[ALUOut] = B; IorD=1; MemWrite=1

• R-type instructions finish

Reg[IR[15-11]] = ALUOut; RegDst=1; MemtoReg=0;

RegWrite =1

Memory Access or R-Type

Page 22: Multi-Cycle Datapath

(22)

MEM: Store

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 23: Multi-Cycle Datapath

(23)

R-Type Completion

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 24: Multi-Cycle Datapath

(24)

WB for Load

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 25: Multi-Cycle Datapath

(25)

• Reg[IR[20-16]]= MDR; MemtoReg=1; RegWrite=1; RegDst=0;

What about all the other instructions?

Write-back for load operation

Page 26: Multi-Cycle Datapath

(26)

Summary

Step nameAction for R-type

instructionsAction for memory-reference

instructionsAction for branches

Action for jumps

Instruction fetch IR = Memory[PC]PC = PC + 4

Instruction A = Reg [IR[25-21]]decode/register fetch B = Reg [IR[20-16]]

ALUOut = PC + (sign-extend (IR[15-0]) << 2)

Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] IIcomputation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)jump completion

Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut]completion ALUOut or

Store: Memory [ALUOut] = B

Memory read completion Load: Reg[IR[20-16]] = MDR

Example:

Page 27: Multi-Cycle Datapath

(27)

Multi-Cycle Datapath

• Programs take only as long as they need to Variable timing per instruction Pick a base cycle time

• Re-use hardware Avoid unnecessary duplication of hardware

• Revisit control Combinational vs. state machine design

Page 28: Multi-Cycle Datapath

(28)

• How many cycles will it take to execute this code? lw $t2, 0($t3)lw $t3, 4($t3)beq $t2, $t3, Label #assume notadd $t5, $t2, $t3sw $t5, 8($t3)

Label: ...

• What is going on during the 8th cycle of execution?• In what cycle does the actual addition of $t2 and $t3

takes place?

Simple Questions

Example:

Page 29: Multi-Cycle Datapath

(29)

• Value of control signals is dependent upon: What instruction is being executed Which step is being performed

• Use the information we have accumulated to specify a finite state machine Specify the finite state machine graphically, or Use microprogramming

• Implementation can be derived from specification

Implementing the Control (D.3)

Page 30: Multi-Cycle Datapath

(30)

Graphical Specification of FSM

PCWritePCSource = 10

ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond

PCSource = 01

ALUSrcA =1ALUSrcB = 00ALUOp= 10

RegDst = 1RegWrite

MemtoReg = 0

MemWriteIorD = 1

MemReadIorD = 1

ALUSrcA = 1ALUSrcB = 10ALUOp = 00

RegDst = 0RegWrite

MemtoReg=1

ALUSrcA = 0ALUSrcB = 11ALUOp = 00

MemReadALUSrcA = 0

IorD = 0IRWrite

ALUSrcB = 01ALUOp = 00

PCWritePCSource = 00

Instruction fetchIn struction decode/

register fetch

Jumpcompletion

BranchcompletionExecution

Memory addresscomputation

Memoryaccess

Memoryaccess R-type completion

Write-back step

(Op = 'LW') or (Op = 'SW') (Op = R-

type)

(Op

= 'B

EQ')

(Op

= ' J

')

(Op = 'SW

')

(Op

= 'L

W')

4

0 1

9862

753

Start

Page 31: Multi-Cycle Datapath

(31)

Finite State Machine for ControlPCW rite

PCW riteCond

IorD

M em toReg

PCSource

ALUOp

ALUSrcB

ALUSrcA

RegW rite

RegDst

NS3NS2NS1NS0

Op5

Op4

Op3

Op2

Op1

Op0

S3

S2

S1

S0

S ta te register

IRW rite

M em Read

M em W rite

Instruction registeropcode field

Control Logic

Inputs

Outputs

Alternatives for implementing the control logic?

Page 32: Multi-Cycle Datapath

(32)

PLA ImplementationOp5

Op4

Op3

Op2

Op1

Op0

S3

S2

S1

S0

IorD

IRWrite

MemReadMemWrite

PCWritePCWriteCond

MemtoRegPCSource1

ALUOp1

ALUSrcB0ALUSrcARegWriteRegDstNS3NS2NS1NS0

ALUSrcB1ALUOp0

PCSource0

control signal and next state truth tables

Page 33: Multi-Cycle Datapath

(33)

ROM ImplementationPCW rite

PCW riteCond

IorD

M em toReg

PCSource

ALUOp

ALUSrcB

ALUSrcA

RegW rite

RegDst

NS3NS2NS1NS0

Op5

Op4

Op3

Op2

Op1

Op0

S3

S2

S1

S0

S ta te register

IRW rite

M em Read

M em W rite

Instruction registeropcode field

210x20 bit ROM

Inputs

Outputs

• Very inefficient implementation Mostly redundant

entries

• Dominated by next state function Adding pipelined

of FP instructions

Page 34: Multi-Cycle Datapath

(34)

Sequencer Implementation (D.4)

• Sequence through the state machine What are my

options?• Control branches

in the state machine via dispatch tables

Page 35: Multi-Cycle Datapath

(35)

Control Flow

PCWritePCSource = 10

ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond

PCSource = 01

ALUSrcA =1ALUSrcB = 00ALUOp= 10

RegDst = 1RegWrite

MemtoReg = 0MemWriteIorD = 1

MemReadIorD = 1

ALUSrcA = 1ALUSrcB = 10ALUOp = 00

RegDst=0RegWrite

MemtoReg=1

ALUSrcA = 0ALUSrcB = 11ALUOp = 00

MemReadALUSrcA = 0

IorD = 0IRWrite

ALUSrcB = 01ALUOp = 00

PCWritePCSource = 00

Instruction fetchIn struction decode/

register fetch

Jumpcompletion

BranchcompletionExecution

Memory addresscomputation

Memoryaccess

Memoryaccess R-type completion

Write-back step

(Op = 'LW') or (Op = 'SW') (Op = R

Sequencing Options

Page 36: Multi-Cycle Datapath

(36)

Control Implementation

Page 37: Multi-Cycle Datapath

(37)

Final Contents of Control ROM

Separation of control flow and data

Page 38: Multi-Cycle Datapath

(38)

Specifying Control

• Specifying all of the control bits for each state is tedious and error prone

• Use a symbolic language Each state is a microinstruction

Organize the control bits into fields microinstruction

• Microprograms, microcode, and micropgramming

ALU Control SRC Control REG Control MEM Control PC Control Sequencing

Page 39: Multi-Cycle Datapath

(39)

Exceptions (A.7)

• Distinguish between internal and external events that cause an unexpected change in flow of control Exceptions vs. interrupts I/O, service, OS traps, errors

• Updates to the data path Recording the cause of the exception and transferring

control to the OS Consider the impact of hardware modifications on the

critical path

Page 40: Multi-Cycle Datapath

(40)

Exception Handling: Control

• Record the cause of the exception MIPS uses the a status register referred to as the

cause register Record the return address in the exception program

counter (EPC)o Of the offending instruction or the following instruction

• Transfer control To a fixed address exception handler decodes the

cause Vectored exceptions target address encodes the

cause

Page 41: Multi-Cycle Datapath

(41)

Exception Handling: Operations

• Add two registers to the datapath EPC and Cause registers

• Add a state for each exception condition Use the ALU to compute the EPC contents Write the Cause register with exception condition Update the PC with OS handler address Generate control signals for each operation

• See Appendix B.7 for details of MIPS 2000/3000 implementation

Page 42: Multi-Cycle Datapath

(42)

The OS Interactions

• The MIPS 32 Status and Cause Registers

01481531

int

enab

le

Exc

ep

level

Use

r m

od

e

Interrupt Mask

02681531

Exception CodePending Interrupts Branch Delay

• Operating System handlers interrogate these registers• Manage all state saving requirements• Read example in B.7

Status Register

Cause Register

Page 43: Multi-Cycle Datapath

(43)

Exception Handling: State Machine

PCWritePCSource = 10

ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCond

PCSource = 01

ALUSrcA =1ALUSrcB = 00ALUOp= 10

RegDst = 1RegWrite

MemtoReg = 0

MemWriteIorD = 1

MemReadIorD = 1

ALUSrcA = 1ALUSrcB = 10ALUOp = 00

RegDst = 0RegWrite

MemtoReg=1

ALUSrcA = 0ALUSrcB = 11ALUOp = 00

MemReadALUSrcA = 0

IorD = 0IRWrite

ALUSrcB = 01ALUOp = 00

PCWritePCSource = 00

Instruction fetchInstruction decode/

register fetch

Jumpcompletion

BranchcompletionExecution

Memory addresscomputation

Memoryaccess

Memoryaccess R-type completion

Write-back step

(Op = 'LW') or (Op = 'SW') (Op = R-type)

(Op

= 'B

EQ')

(Op

= ' J

')

(Op = 'SW

')

(Op

= 'L

W')

4

01

9862

753

Start

Intcause = 1CauseWriteALUSrcA = 0ALUSrcB = 01ALUOp = 01EPCWritePCWritePCSource = 11

Intcause = 0CauseWriteALUSrcA = 0ALUSrcB = 01ALUOp = 01EPCWritePCWritePCSource = 11

Illegal InstructionOverflow

Page 44: Multi-Cycle Datapath

(44)

Exception Handling: Datapath

Shiftleft 2

PCMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWrite

Control

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

3

2

Mux

0

1ALU Out

Memory

MemData

Writedata

Address

EPC

CauseMux

0

1

0

1

30x80000180

IntCause

Causewrite

EPCWrite

Page 45: Multi-Cycle Datapath

(45)

Study Guide

• Given a MIPS 32 instruction sequence Reproduce the sequence of states generated by the

controller Compute the execution time in cycles Determine all control signal values if the system is

frozen at an arbitrary clock cycle• Modify the datapath and state machine to

Add new exception conditions New instructions Extend the memory system where an access takes 2

cycles instead of 1 cycle• Modify microcode to add instructions• Draw the multicycle datapath from memory

Page 46: Multi-Cycle Datapath

(46)

Glossary

• Dispatch table• Exception • Finite State

Machine • Instruction decode• Instruction fetch• Microinstruction

• Microprogramming• Microcode• Multi-Cycle

datapath• Sequencer• ROM