Presentation is loading. Please wait.

Presentation is loading. Please wait.

Multicycle Implementation

Similar presentations


Presentation on theme: "Multicycle Implementation"— Presentation transcript:

1 Multicycle Implementation
The Processor: Multicycle Implementation

2 Reminder: Single-Cycle Datapath

3 Multicycle Approach Break up the instructions into steps, each step takes a cycle balance the amount of work in cycles only one major functional unit is used in each cycle At the end of each cycle store values for use in later cycles introduce additional “internal” registers We will be recycling functional units ALU used to compute branch address and to increment PC The same memory used for instruction and data We will use finite state machine for control

4 Multicycle Implementation
buffer registers between functional units which will be updated every clock cycle IR: Instruction register MDR: Memory Data register A and B registers to hold register operand values read from register file ALUOut: to hold output of ALU

5 Datapath with Control Signals

6 Handling PC Multiplexor for selecting the source for the PC
ALU output after PC+4 ALU output after branch target address calculation New address with jump instructions (26 bits of IR) Control signals for writing PC Unconditionally after a normal instruction and jump - PCWrite Conditionally overwritten if a branch is taken When PCWriteCond and zero are asserted, the branch address at the output of ALU is written into the PC.

7 Handling PC PC 1 IorD PC+4, jump address, branch address Address
PCWrite PCWriteCond zero PC PC+4, jump address, branch address 1 Address Memory MemData IorD write data from ALUOut

8 Complete Datapath & Control

9 Five Execution Steps Instruction Fetch
Instruction Decode and Register Fetch Execution, Memory Address Computation, or Branch Completion Memory Access or R-type instruction completion Write-back step INSTRUCTIONS TAKE CYCLES!

10 Step 1: Instruction Fetch
Use PC to get the instruction and put it in IR. Increment the PC by 4 and put the result back in the PC. Can be described succinctly using RTL IR <= Memory[PC]; PC <= PC + 4; The ALU is used for incrementing PC Control signals MemRead = ? IRWrite = ? PCWrite = ? IorD = ? ALUSrcA = ? ALUSrcB = ?? ALUOp = ?? PCSource = ??

11 Step 2: Instruction Decode & Register Fetch
Read registers rs and rt in case we need them Compute the branch address in case the instruction is a branch A <= Reg[IR[25-21]]; B <= Reg[IR[20-16]]; ALUOut <= PC + (sign-extend(IR[15-0])<<2); We aren't setting any control lines based on the instruction type yet ALUSrcA = ? (PC) ALUSrcB = ?? (sign-extended & shifted offset) ALUOp = ?? (add)

12 Step 3 (Instruction Dependent)
ALU performs for one of the four functions Memory Reference: ALUOut <= A + sign-extend(IR[15-0]); ALUSrcA = ?, ALUSrcB = ??, ALUOp = ?? R-type: ALUOut <= A op B; ALUSrcA = ?, ALUSrcB = ??, ALUOp = ?? Branch: if (A == B) PC <= ALUOut; ALUSrcA = ?, ALUSrcB = ??, ALUOp = ??, PCWriteCond = ?, PCSource = ?? Jump: PC <= PC[31:28]||(IR[25:0]<<2) PCWrite = ?, PCSource = ??

13 Step 4 (R-type or Memory-Access)
Load and store instructions access memory lw: MDR <= Memory[ALUOut]; MemRead = ?, IorD = ? sw: Memory[ALUOut] <= B; MemWrite = ?, IorD = ? R-type instructions finish Reg[IR[15-11]] <= ALUOut; RegDst = ?, RegWrite = ?, MemtoReg = ?

14 Write-Back Step Memory read completion step
Reg[IR[20-16]] <= MDR; RegDst = ?, RegWrite = ?, MemtoReg = ? What about all the other instructions?

15 Actions for memory-access
Summary of the Steps Step Name Actions for R-type Actions for memory-access Action for branch Action for jump Instruction Fetch IR <= Memory[PC]; PC <= PC + 4; Instruction decode / register fetch A <= Reg[IR[25-21]]; B <= Reg[IR[20-16]]; ALUOut <= PC + (sign-extend(IR[15-0]) << 2); Execution, address calculations, branch / jump completion ALUOut <= A op B; ALUOut <= A + sign-extend(IR[15-0]); if (A==B) PC <= ALUOut; PC <= PC[31:28]|| (IR[25:0]<<2) Memory access / R-type completion Reg[IR[15- 11]] <= ALUOut; Load: MDR <= Memory[ALUOut]; Store: Memory[ALUOut] <= B; Memory read completion Reg[IR[20-16]] <= MDR;

16 Instructions in Multicycle Implementation
Loads: 5, Stores: 4, ALU Instructions: 4, Branch: 3, Jump: 3 Example: From SPECINT2000, instruction mix: 25 % loads (1% load byte + 24% load word) 10% stores (1% store byte + 9% store word) 11 % branches (6% beq + 5% bne) 2 % jumps (1% jal + 1% jr) 52% ALU operations CPI = formula = 4.12

17 Example How many cycles does it take to execute this code? lw $t2, 0($t3) lw $t3, 4($t3) beq $t2, $t3, Label #assume not taken add $t5, $t2, $t3 sw $t5, 8($t3) Label: ... What exactly is happening during the 8th cycle of execution? In what cycle does the actual addition of $t2 and $t3 take place?

18 Implementing the Control
A control unit that will assert control signals at the right time determine the next step Value of control signals is dependent upon: which instruction is being executed which step is being performed (implies sequential logic) Two specification methods State diagrams Microprogramming Implementation can be derived from this specification

19 Review: Finite State Machines
a finite set of states and next state function (determined by current state and input) output function (determined by current state and possibly input) We’ll use a Moore machine (output based only on current state)

20 Finite State Machines Inputs Mealy Outputs Moore Outputs Next state
Output Function Mealy Outputs Next State Function Combinational Network State Elements state Next state clk Output Function Moore Outputs Combinational Network

21 State Diagram for Fetch & Decode
start MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 S0 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 S1 op = ‘lw’ or ‘sw’ Memory Reference FSM op = R-type R-type FSM op = ‘beq’ Branch FSM op = ‘j’ Jump FSM

22 State Diagram for Memory-Access
ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 Op = ‘lw’ or ‘sw’ S2 From state S1 memory address calculation memory access MemRead IorD = 1 lw S3 MemWrite IorD = 1 sw S5 memory access RegDst = 0 RegWrite MemtoReg = 1 S4 memory read completion To state S0

23 State Diagram for R-type
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 Op = R-type S6 From state S1 Execution RegDst = 1 RegWrite MemtoReg = 0 S7 R-type completion To state S0

24 State Diagram for Branch
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 Op = beq Branch completion From state S1 To state S0

25 State Diagram for Jump From state S1 S9 To state S0 Op = j PCWrite
PCSource = 10 Op = j Jump completion From state S1 S9 To state S0

26 Complete State Diagram
MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 S0 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 S1 How many state bits are needed? ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 Op = ‘lw’ or ‘sw’ S2 start ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 Op = R-type S6 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 Op = beq S8 PCWrite PCSource = 10 Op = j S9 MemWrite IorD = 1 sw S5 MemRead IorD = 1 lw S3 RegDst = 1 RegWrite MemtoReg = 0 S7 RegDst = 0 RegWrite MemtoReg = 1 S4

27 Implementing the Control
outputs datapath control outputs Combinational control logic inputs state next state inputs from instruction FFs Moore or Mealy machine?

28 Complete Datapath & Control

29 Exceptions or Interrupts
Unintentional change of normal flow of instructions Exception is an unexpected event from within the processor, e.g arithmetic overflow. An interrupt may come from outside of the processor. These terms are observed to be used interchangeably (IA32 uses interrupts for both) Our simplified MIPS architecture can generate two exceptions: Arithmetic overflow Undefined instruction.

30 Interrupt or Exception?
Type of event From where? MIPS terminology I/O device request External Interrupt Invoke the OS from the user program Internal Exception Arithmetic overflow Undefined instruction Hardware malfunctions Either Exception or interrupt

31 When an Exception Occurs 1/2
Exception program counter (EPC) PC of the current instruction (i.e. PC-4) in EPC Transfer the control to OS at some specified address. The OS does what needs to be done, it either Stops the execution of the program and reports an error Provides a service to the user program (e.g a predefined action to an overflow) and return to the point of origin of exception using EPC

32 When an Exception Occurs 2/2
The OS must know the reason for the exception An exception is handled using two approaches: cause register contains the reason for exception (MIPS). Vectored interrupt: For each interrupt type, a separate vector is stored and each interrupt vector targets at the appropriate piece of code.

33 Vectored Interrupts For each cause of the interrupt, the control goes to a different location in memory to handle the exception Exception type exception vector address (in hex) Undefined instruction 0xC Arithmetic overflow 0xC

34 How MIPS Handles Exceptions
Registers EPC Cause register: individual bits are used to encode the cause of exceptions (e.g. 0 in the LSB for undefined instruction 1 for overflow) Control Signals CauseWrite EPCWrite IntCause: 1-bit signals to set the appropriate bit of Cause register Exception address: 0x (SPIM uses 0x )

35 MIPS Memory Allocation
0x sp  7fff fffc Stack Dynamic Data Static Data gp  Text pc  Reserved

36 The Multicycle Datapath with Exception Handling
overflow 0x

37 What is New? ALU 1 2 3 1 PCSource jump address 0x8000 0180 Zero
1 jump address 2 0x 3 Zero EPCWrite OF ALUOut ALU EPC PC-4 IntCause CauseWrite Cause 1 1

38 To state S0 to begin next instruction
Exception States IntCause = 1 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp = 01 EPCWrite PCWrite PCSource=11 S11 IntCause = 0 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp = 01 EPCWrite PCWrite PCSource=11 S10 To state S0 to begin next instruction

39 Complete State Diagram with Exceptions S0 S1 start Op = J Op = beq
MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 S1 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 IntCause = 0 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp = 01 EPCWrite PCWrite PCSource=11 Op = other S10 start Op = J Op = R-type Op = beq Op = ‘lw’ or ‘sw’ S2 S9 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 PCWrite PCSource = 10 S6 S8 sw lw S3 S7 S5 MemRead IorD = 1 MemWrite IorD = 1 RegDst = 1 RegWrite MemtoReg = 0 IntCause = 1 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp = 01 EPCWrite PCWrite PCSource=11 Overflow S11 S4 RegDst = 0 RegWrite MemtoReg = 1

40 Hardware/Software Interface
ISA Assembly Microarchitecture

41 Control with Microprogramming
Simpler instructions to implement (macro) instructions Microinstructions are kept in ROM addressable Not visible to programmers Microinstruction format ALU Control SRC1 SRC2 Reg. Cont. Memory PC Write Cont. Sequencing Control signals are directly embedded in microinstructions

42 Fields of Microinstructions
Field name Function of field ALU Control Specify the operation being performed by the ALU during this clock, the result is always written in ALUOut SRC1 Specify the source for the first ALU operand SRC2 Specify the source for the second ALU operand Register Control Specify read or write for the register file, and the source of the value for a write Memory Specify read or write, and the source for the memory. For a read specify the destination register PCWrite Control Specify the writing of the PC Sequencing Specify how to choose the next microinstruction

43 Choosing Next Microinstruction
Next instruction Seq (sequential behavior) Branch to the microinstruction that starts execution of the next MIPS instruction Fetch is the label of the initial microinstruction Next microinstruction is chosen based on the input (dispatching, dispatch tables) In MIPS, two dispatch tables: one from S1 and the other from S2. Dispatch i

44 Microprogram for the Control Unit
Sequencing PCWrite control Memory Register control SRC2 SRC1 ALU control Label 1 2 3 4 5 6 7 8 9 Seq ALU Read PC 4 PC Add Fetch Dispatch 1 Read Extshft PC Add

45 Dispatch Tables Microcode dispatch table 1 Opcode field Opcode name
Value (0) R-format Rformat1 (2) jmp JUMP1 (4) beq BEQ1 (35) lw Mem1 (43) sw Microcode dispatch table 2 Opcode field Opcode name value (35) lw LW2 (43) sw SW2

46 Microprogram for the Control Unit
Label ALU control SRC1 SRC2 Register control Memory PCWrite control Sequencing 1 2 3 4 5 6 7 8 9 Seq ALU Read PC 4 PC Add Fetch Dispatch 1 Read Extshft PC Add Dispatch 2 Extend A Add Mem1 Seq Read ALU LW2 Fetch Write MDR Fetch Write ALU SW2 Fetch Write ALU Seq B A Func code Rformat1 Fetch ALUOut-cond B A Sub BEQ1 Fetch Jump address JUMP1

47 Implementing Microprogram
Microcode storage datapath control outputs outputs input Sequencing control 1 microprogram counter adder address select logic Dispatch tables


Download ppt "Multicycle Implementation"

Similar presentations


Ads by Google