Chapter 6: Enhancing Performance with Pipelining

Similar documents
Computer Organization and Components

CS352H: Computer Systems Architecture

Computer organization

Solutions. Solution The values of the signals are as follows:

Q. Consider a dynamic instruction execution (an execution trace, in other words) that consists of repeats of code in this pattern:

Instruction Set Architecture. or How to talk to computers if you aren t in Star Trek

Instruction Set Architecture

PROBLEMS #20,R0,R1 #$3A,R2,R4

Design of Pipelined MIPS Processor. Sept. 24 & 26, 1997

Pipeline Hazards. Structure hazard Data hazard. ComputerArchitecture_PipelineHazard1

Review: MIPS Addressing Modes/Instruction Formats

INSTRUCTION LEVEL PARALLELISM PART VII: REORDER BUFFER

Solution: start more than one instruction in the same clock cycle CPI < 1 (or IPC > 1, Instructions per Cycle) Two approaches:

Pipeline Hazards. Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. Based on the material prepared by Arvind and Krste Asanovic


WAR: Write After Read

Design of Digital Circuits (SS16)

EE282 Computer Architecture and Organization Midterm Exam February 13, (Total Time = 120 minutes, Total Points = 100)

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180B Lab 7: MISP Processor Design Spring 1995

Central Processing Unit (CPU)

Overview. CISC Developments. RISC Designs. CISC Designs. VAX: Addressing Modes. Digital VAX

Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2

A single register, called the accumulator, stores the. operand before the operation, and stores the result. Add y # add y from memory to the acc

CPU Organisation and Operation

VLIW Processors. VLIW Processors

Instruction Set Design

Computer Architecture Lecture 2: Instruction Set Principles (Appendix A) Chih Wei Liu 劉 志 尉 National Chiao Tung University

Pipelining Review and Its Limitations

COMP 303 MIPS Processor Design Project 4: MIPS Processor Due Date: 11 December :59

CS:APP Chapter 4 Computer Architecture. Wrap-Up. William J. Taffe Plymouth State University. using the slides of

Chapter 2 Basic Structure of Computers. Jin-Fu Li Department of Electrical Engineering National Central University Jungli, Taiwan

Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers

Introducción. Diseño de sistemas digitales.1

Reduced Instruction Set Computer (RISC)

MICROPROCESSOR. Exclusive for IACE Students iacehyd.blogspot.in Ph: /422 Page 1

l C-Programming l A real computer language l Data Representation l Everything goes down to bits and bytes l Machine representation Language

PART B QUESTIONS AND ANSWERS UNIT I

Addressing The problem. When & Where do we encounter Data? The concept of addressing data' in computations. The implications for our machine design(s)

Giving credit where credit is due

PROBLEMS. which was discussed in Section

Execution Cycle. Pipelining. IF and ID Stages. Simple MIPS Instruction Formats

CS521 CSE IITG 11/23/2012

(Refer Slide Time: 00:01:16 min)

Software Pipelining. for (i=1, i<100, i++) { x := A[i]; x := x+1; A[i] := x

Chapter 4 Lecture 5 The Microarchitecture Level Integer JAVA Virtual Machine

TIMING DIAGRAM O 8085

Intel 8086 architecture

CHAPTER 7: The CPU and Memory

Chapter 4 Register Transfer and Microoperations. Section 4.1 Register Transfer Language

COMPUTER ORGANIZATION ARCHITECTURES FOR EMBEDDED COMPUTING

CPU Organization and Assembly Language

Module: Software Instruction Scheduling Part I

A FPGA Implementation of a MIPS RISC Processor for Computer Architecture Education

CPU Performance Equation

Stack machines The MIPS assembly language A simple source language Stack-machine implementation of the simple language Readings:

Course on Advanced Computer Architectures

MACHINE ARCHITECTURE & LANGUAGE

Lecture: Pipelining Extensions. Topics: control hazards, multi-cycle instructions, pipelining equations

Microprocessor & Assembly Language

The Microarchitecture of Superscalar Processors

Instruction Set Architecture. Datapath & Control. Instruction. LC-3 Overview: Memory and Registers. CIT 595 Spring 2010

Exceptions in MIPS. know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine

Let s put together a Manual Processor

CHAPTER 4 MARIE: An Introduction to a Simple Computer

Generating MIF files

StrongARM** SA-110 Microprocessor Instruction Timing

Assembly Language Programming

An Introduction to the ARM 7 Architecture

MICROPROCESSOR AND MICROCOMPUTER BASICS

Instruction Set Architecture (ISA)

Chapter 2 Topics. 2.1 Classification of Computers & Instructions 2.2 Classes of Instruction Sets 2.3 Informal Description of Simple RISC Computer, SRC

In the Beginning The first ISA appears on the IBM System 360 In the good old days

IA-64 Application Developer s Architecture Guide

CS 61C: Great Ideas in Computer Architecture Finite State Machines. Machine Interpreta4on

Chapter 2 Logic Gates and Introduction to Computer Architecture

CHAPTER 11: Flip Flops

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

The AVR Microcontroller and C Compiler Co-Design Dr. Gaute Myklebust ATMEL Corporation ATMEL Development Center, Trondheim, Norway

EE361: Digital Computer Organization Course Syllabus

A Lab Course on Computer Architecture

Chapter 1 Computer System Overview

BASIC COMPUTER ORGANIZATION AND DESIGN

Summary of the MARIE Assembly Language

Using Graphics and Animation to Visualize Instruction Pipelining and its Hazards

MIPS Assembler and Simulator

A s we saw in Chapter 4, a CPU contains three main sections: the register section,

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-12: ARM

Computer Architecture TDTS10

Data Dependences. A data dependence occurs whenever one instruction needs a value produced by another.

Quiz for Chapter 1 Computer Abstractions and Technology 3.10

OAMulator. Online One Address Machine emulator and OAMPL compiler.

Figure 1: Graphical example of a mergesort 1.

An Overview of Stack Architecture and the PSC 1000 Microprocessor

Week 1 out-of-class notes, discussions and sample problems

1 Classical Universal Computer 3

CSE 141 Introduction to Computer Architecture Summer Session I, Lecture 1 Introduction. Pramod V. Argade June 27, 2005

1 Computer hardware. Peripheral Bus device "B" Peripheral device. controller. Memory. Central Processing Unit (CPU)

Chapter 9 Computer Design Basics!

The Little Man Computer

Introduction to Cloud Computing

Transcription:

Chapter 6: Enhancing Performance with Pipelining

Overview of Pipelining Basic Philosophy Assembly Line Operations (factory) Goal Enhance Performance by increasing throughput Our Goal: Improve performance by increasing the instruction throughput per clock cycle Computer Architecture CS 35101-002 2

Single-Cycle Performance Recall (for a single- cycle clock implementation): Instruction Class Major Functional Units used by Instruction Operation Times Period Instruction Memory Register Read ALU Operation Data Memory Register Write R-type 200 100 200 0 100 600 ps Load word 200 100 200 200 100 800 ps Store word 200 100 200 200 700 ps Branch 200 100 200 0 500 ps Assume Critical Machine Operation Times: Memory Unit ~ 200 ps, ALU and adders ~ 200ps, Register file (read/write) ~ 100 ps. Estimate clock cycle for the machine Single Clock cycle determined by longest instruction period = 800 ps Computer Architecture CS 35101-002 3

Pipelined Datapath Basic Idea: Problem (single-cycle) Decomposition : Instruction fetch : Instruction decode/ register file read : Execute/ address calculation : Memory access : Write back 4 Add Shift left 2 ADD Add result PC Address Instruction Instruction memory Read register 1 Read register 2 Write register Write data Registers Read data 1 Read data 2 ALU Zero ALU result Address Read data Data Memory Write data 16 Sign 32 extend Computer Architecture CS 35101-002 4

Single Cycle Execution Time 800 1600 2400 Prog. Exec. Order lw $1, 100($0) Instructi on fetch Re g ALU Data Access Reg lw $2, 100($0) lw $3, 100($0) Instructi on fetch Re g ALU Data Access Reg Instructi on fetch Re g ALU Data Access Reg Computer Architecture CS 35101-002 5

Pipelined Execution Time 200 800 1600 Prog. Exec. Order lw $1, 100($0) Instructi on fetch Reg ALU Data Access Reg lw $2, 100($0) Instructi on fetch Re g ALU Data Access Reg lw $3, 100($0) Instruct ion fetch R e g ALU Data Access Reg Computer Architecture CS 35101-002 6

Single-cycle vs. pipelined execution Time 800 1600 2400 Prog. Exec. Order lw $1, 100($0) Instructi on fetch Re g ALU Data Access Reg lw $2, 100($0) Instructi on fetch Re g ALU Data Access Reg Instructi on fetch Re g ALU Data Access Reg lw $3, 100($0) Time 200 800 1600 Prog. Exec. Order lw $1, 100($0) Instructi on fetch Reg ALU Data Access Reg lw $2, 100($0) Instructi on fetch Re g ALU Data Access Reg lw $3, 100($0) Instruct ion fetch R e g ALU Data Access Reg Computer Architecture CS 35101-002 7

Pipelining What makes it easy? all MIPS instructions are the same length ( fetch) just a few instruction formats ( rs, rt fields are invariant) memory operands appear only in loads and stores What makes it hard? structural hazards: suppose we had only one memory control hazards: need to worry about branch instructions data hazards: an instruction depends on a previous instruction We ll talk about data hazard and forwarding, stalls and branch hazards We ll talk about exception handling Computer Architecture CS 35101-002 8

Pipelining Increases the number of simultaneous executing instruction Increases the rate at which instructions are executed Improves instruction throughput Computer Architecture CS 35101-002 9

A Pipelined Datapath Five-stage Pipeline Five-stage Pipeline Up to five instructions can be executed in a clock cycle Single-cycle datapath can be divided into five stages (refer to Fig 6.9): 1. : Instruction Fetch 2. : Instruction Decode and register file read 3. : Execution and Address Calculation 4. : Data memory Access 5. : Write Back How does information flow in typical auto assembly plant? Computer Architecture CS 35101-002 10

A Pipelined Datapath Five-stage Pipeline Refer to Slide 4 Information Flow: In general from Left to Right (1->2->3->4->5) The stage of step 5 writes data into register file of the stage in step 2 5 -> 2 The stage of step 4 controls the multiplexor in the stage of step1 4 -> 1 Computer Architecture CS 35101-002 11

A Pipelined Datapath Five-stage Pipeline Five stages are interconnected by 4 Pipeline Registers (latches) Registers must be wide enough store information / / / / Computer Architecture CS 35101-002 12

A Pipelined Datapath Five-stage Pipeline Example: lw $s1, 100 ($s0) lw $s2, 200 ($s0) lw $s3, 300 ($s0) Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 lw $s1, 100 ($s0) lw $s2, 200 ($s0) lw $s3, 300 ($s0) Computer Architecture CS 35101-002 13

A Pipelined Datapath Five-stage Pipeline 1. stage: Fetches the first, second and third lw instructions in cycles CC1, CC2 and CC3 resp. 2. stage: Reads the rs register ($s0) for the first, second and third instructions in cycles CC2, CC3 and CC4 respectively 3. stage: Calculates the memory address for the first, second and third instructions during clock cycles CC3, CC4, and CC5 respectively 4. stage: Fetches memory words at addresses 100, 200, and 300 during clock cycles CC4, CC5, and CC6, respectively 5. stage: Copies the memory words into registers $s1, $s2, and $s3 during clock cycles CC5, CC6, and CC7, respectively Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 lw $s1, 100 ($s0) lw $s2, 200 ($s0) lw $s3, 300 ($s0) Each instruction execution takes 5 clock cycles in the pipeline The 3 lw instructions take 7 clock cycles to execute Computer Architecture CS 35101-002 14

A Pipelined Datapath Five-stage Pipeline Registers / Latch: Holds fetched instruction and incremented PC Allows the stage to decode instruction 1, while stage fetches instruction 2 / Latch: Stores the sign-extended immediate value and values fetched from register rs and rt Allows stage to utilize stored values, while the stage decodes Inst. 2 and the stage fetches register for instruction 3 / Latch: Stores the branch target address, the ALU result, ALU output bit and value in the rt register Allows stage to use stored values, while and stage execute the following instructions / Latch: Stores ALU result and Data read from memory Allows stage to use stored data, while data memory fetches data for the following Instruction Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 lw $s1, 100 ($s0) lw $s2, 200 ($s0) lw $s3, 300 ($s0) Computer Architecture CS 35101-002 15

Pipeline Datapath Single Cycle / / / / P C S rc A d d M ux 4 A d d A L U re s u lt S h ift le ft 2 P C R e a d a d d re s s In s tru c tio n In s tru c tio n m e m o ry R e a d re g is te r 1 R e a d re g is te r 2 R e g is te rs W rite re g is te r W rite d a ta R e g W rite R e a d d a ta 1 R e a d d a ta 2 A L U S rc M ux 4 A L U A L U o p e ra tio n Z e ro A L U re s u lt A d d re s s W rite d a ta M e m W rite R e a d d a ta D a ta m e m o ry M e m to R e g M ux 1 6 S ig n 3 2 ex te n d M e m R e a d Computer Architecture CS 35101-002 16

Pipelined Control What needs to be controlled in the auto assembly plant environment? Use a Distributed control Strategy: Instruction Fetch and PC Increment (control signal always asserted) Instruction Decode / Register Fetch Execution Stage: Set RegDst, ALUOp, and ALUSrc ( Refer to Fig. 6.23 and 6.24) Memory Stage: Set MemRead and MemWrite to control data memory (Fig. 6.24) Write Back MemtoReg controls the multiplexor and RegWrite stores the multiplexor output in the register file Pass control signals along just like data (Refer to Fig 6.26) Computer Architecture CS 35101-002 17

Data Hazard and Forwarding Consider the following sequence of Instructions: sub $2,$1,$3 # writes a new value into $2 and $12,$2,$5 # uses new value in $2 or $13,$6,$2 # uses new value in $2 add $14,$2,$2 # uses new value in $2 sw $15,100($2) # uses new value in $2 Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $13,$6,$2 sw $15,100($2) Computer Architecture CS 35101-002 18

Data Hazard and Forwarding When does $2 receive the new value computed by the sub instruction? When the stage writes $2 during CC5. When does the and instruction read $2? When the stage fetches $2 during CC3. The and instruction will actually read the incorrect old value stored in $2 instead of the new value computed by the sub instruction. The or instruction will also read the incorrect old value in $2. Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $13,$6,$2 sw $15,100($2) Computer Architecture CS 35101-002 19

Data Hazard The add instruction reads register $2 during CC5 - does it read the old value or the new value? It depends on the design of the register file. We assume the new value is written into $2 by the stage before the stage reads $2 so the add instruction reads the correct value. The sw instruction will also read the correct new value in $2 during CC6. Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Computer Architecture CS 35101-002 20

Data Hazard In this example, the and and or instructions have encountered data hazards They read a register (or two) too early, i.e., before previous instructions have loaded the register(s) with the correct value(s). Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Computer Architecture CS 35101-002 21

Data Hazard Solution #1: insert two nop instructions between the sub and and instruction: Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC10 CC11 sub $2,$1,$3 nop nop and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Inserting the nop instructions delays the and and or instructions two clock cycles Eliminates the data hazard for the and and or instructions. Performance cost of two extra clock cycles. Computer Architecture CS 35101-002 22

Data Hazards and Forwarding Forwarding The sub instruction result is stored in the / pipeline register at the end of CC3 The add instruction could read the $2 value from the / pipeline register and use it during CC4 The or instruction could read the $2 value from the / pipeline register and use it during CC5 Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 sub $2,$1,$3 add $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Use Temporary Results. Don t wait for results to be written Computer Architecture CS 35101-002 23

Data Hazards and Forwarding Can t always Forward Consider the following sequence of Instructions: lw $2, 20($1) # load a new value into $2 and $4,$2,$5 # uses new value in $2 or $8,$2, $6 # uses new value in $2 add $9,$4,$2 # uses new value in $2 slt $1, $6,$7 Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 lw $2, 20($1) and $4,$2,$5 or $8,$2, $6 add $9,$4,$2 slt $1, $6,$7 Computer Architecture CS 35101-002 24

Data Hazards and Stalls Hardware solution Load Word can cause a hazard Instruction reads a register following a load instruction that writes to the same register Need a hazard detection unit to stall the load instruction Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 lw $2, 20($1) nop and $4,$2,$5 or $8,$2, $6 add $9,$4,$2 slt $1, $6,$7 Computer Architecture CS 35101-002 25

Data Hazards and Stalls Load Delay Load Delay load word is immediately followed by Arithmetic Instruction (e.g., add, subtract) that uses loaded operand load word is immediately followed by instruction using the loaded operand to compute memory address Compiler re-arranges code to eliminate as many load delays as possible Computer Architecture CS 35101-002 26

Data Hazards and Stalls Load Delay Solution Software Approach Compiler inserts a nop instruction after the load Hardware Pipeline control creates a stall How does hardware detect load delay? Computer Architecture CS 35101-002 27

Data Hazards and Stalls Hardware Load Delay Solution Load Delay Detection The MemRead control signal in / register is set to 1 AND RegisterRT index in the / register == RegisterRS index AND/OR RegisterRT index in the / register == RegisterRt index in the / register To stall an instruction (in a pipeline stage) Inhibit clock pulse to pipeline register before stage The register keeps old instruction instead of next Instruction in front of pipeline must also be stalled Instructions in rear of pipeline continue to flow to create a gap (bubble) Computer Architecture CS 35101-002 28

Data Hazards and Stalls Installing stall Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 lw $1, 0($4) add $2,$1,$1 sub $3,$0, $ Clock Cycle CC1 lw CC2 add lw CC3 sub stall add-stall lw CC4 sub add (gap) lw CC5 sub add (gap) lw CC6 sub add (gap) CC7 sub add sub Computer Architecture CS 35101-002 29

Branch Hazards When we decide to branch, other instructions are in the pipeline! Consider: beq $s1, $s3, Load and S12, $2, $5 or $13, $6, $2 add $14, $2, $2. Load lw $4, 50($7) If $1!= $3 Machine executes fall-thru If $1 == $3 Machine sends control to the branch target address (the lw instruction) Suppose branch is taken ($1 == $3) Computer Architecture CS 35101-002 30

Branch Hazards Example: Branch taken beq $s1, $s3, Load and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 Load: lw $4, 50(7) Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 beq and or add lw CC3: Stage $s1? $s3 CC4: Stage sets PC to branch Target address.. CC5: Stage fetches the lw instruction Pipeline incorrectly executes leading instructions before executing branch Branch Hazard Computer Architecture CS 35101-002 31

Branch Hazards Solution Assume Branch will not be Taken Allow the fall-thru instructions to execute sequentially Flush the instructions if stage discovers that branch should be taken (change instruction to a nop in a pipeline) Reducing Delay of Branches Add hardware to stage to test branch condition and compute target address Penalty is only one cycle instead of three cycles Dynamic Branch Prediction Add branch-target-buffer (BTB) to hardware Records target address of every taken branch + address of branch instr. the PC equals an address in BTB entry The stage sets PC to branch target address in BTB for the following cycle Instructions from BTB flow thru pipeline immediately; and flushed if branch is not taken Fall-thru Instructions, follow the pipeline, and are flushed if branch is taken Computer Architecture CS 35101-002 32

Dynamic Branch Prediction 2 Bit Prediction Scheme Two bits are used to encode the four states in the system Update to Taken Not taken Predict taken 00 01 Taken Predict Weakly taken Taken Not taken Predict not taken 10 11 Predict Weakly not taken Not taken Taken Update to Not Taken Computer Architecture CS 35101-002 33

Dynamic Branch Prediction 2 Bit Prediction Scheme (More Stable) Two bits are used to encode the four states in the system Update to Taken Not taken Predict taken 00 01 Taken Predict Weakly taken Not taken Taken Predict not taken Not taken Taken Predict Weakly not taken 11 10 Update to Not Taken Computer Architecture CS 35101-002 34

Exceptions Exception Any unexpected change in program control flow Interrupt: Exception caused by an external event (I/O device) Used to detect overflow Examples of events that trigger exception Event Type I/O Device Request Invoke OS from User program Arithmetic Overflow Using an undefined Instruction Hardware Malfunctions Scenario Interrupt Exception Exception Exception Exception Computer Architecture CS 35101-002 35

How Exceptions are Handled MIPS Triggers: Using undefined Instructions Arithmetic Overflow Actions Processor saves address of offending instruction in EPC Processor transfers control to OS OS Performs appropriate action depending on event Predefine action in response to overflow or Stops execution of program and report error OS either terminates program or returns control to Processor Processor uses EPC to restart program execution (fetch the next Instruction) Computer Architecture CS 35101-002 36

Exceptions in a Pipelined Computer Consider an Arithmetic Overflow: add $1, $2, $1 Pipeline Stages Instruction fetch () Instruction decode/register fetch () Execution, address computation, branch/jump completion () Memory access or R-type completion () Action for R-type Instructions ALUOut <= A op B IR <= Memory[PC] PC <= PC + 4 A <= Reg [IR[25:21]] B <= Reg [IR[20:16]] ALUOut <= PC + (sign-extend (IR[15:0]) << 2) Reg [IR[15:11]] <= ALUOut Memory read completion () Overflow detected in the Stage Computer Architecture CS 35101-002 37

Exceptions in a Pipelined Computer Suppose add $1, $2, $1 causes overflow Exception routine must be invoked; But: CC3: CC4: CC4: / Pipeline Register is contaminated Trailing instruction (sub $3, $2, $1) references corrupt data in stage Trailing instruction (add $4, $1, $5) references corrupt data in stage Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 add $1, $2, $1 sub $3, $2, $1 add $4,$1,$5 or $8,$2, $6 add $9,$4,$2 slt $1, $6,$7 Computer Architecture CS 35101-002 38

Exceptions in a Pipelined Computer Actions Processor transfers control to exception routine Flush Instruction in stage (Control:.Flush Or ed HDU Stall Signal ) Flush Instruction in stage (Control:.Flush) Flush instruction in Stage (nop) Save offending address (+ 4 bytes) in EPC Computer Architecture CS 35101-002 39

Exceptions in a Pipelined Computer Assume Overflow Exception occurs in add $1, $2, $1 Exception Routines for arithmetic Instructions 8000 0180 hex : sw $25, 1000($0) 8000 0184 hex : sw $26, 1004($0) Inst. Time (in clock cycles) -------------- CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC9 add $1, $2, $1 nop nop sw $25, 1000($0) sw $26, 1004($0) sub $3, $2, $1 add $4,$1,$5 Save address of the interrupted add instruction in EPC, then start at new address Computer Architecture CS 35101-002 40

Advanced Pipelining Extracting More Performance 1. Increase depth of pipeline to overlap more instructions (Instruction Level Parallelism) Move from 5-stage to an n-stage (n>5) Increases throughput per clock cycle Computer Architecture CS 35101-002 41

Advanced Pipelining Extracting More Performance 2. Launch more than one instruction () per clock cycle (multiple issue) Replicate internal components in datapath (hardware cost) Computer Architecture CS 35101-002 42

Extracting more Performance in Pipeline Architecture E.g., Two-issue code scheduling Consider code: loop: lw $t0, 0($s1) # $t0 = array element addu $t0, $t0, $s2 # add scalar in $s2 sw $t0, 0($s1) # store result addi $s1, $s1, -4 # decrement pointer bne $s1, $zero, Loop # branch $s1!= 0 Scheduled Code : Loop: ALU or Branch (1) addi $s1, $s1, -4 addu $t0, $t0, $s2 bne $s1, $zero, Loop Data Transfer (2) lw $t0, 0($s1) sw $t0, 0($s1) Clock Cycle CC1 CC2 CC3 CC4 Original Code re-ordered to avoid stalls Computer Architecture CS 35101-002 43

Advanced Pipelining Extracting More Performance from Loops 3. Loop Unrolling Better scheduling of sequential and iterative access to an array Make several copies of the loop body and re-schedule in a single step (copies must be independent) Computer Architecture CS 35101-002 44

Extracting more Performance in Pipeline Architecture E.g., Loop Unrolling Consider code: loop: lw $t0, 0($s1) # $t0 = array element addu $t0, $t0, $s2 # add scalar in $s2 sw $t0, 0($s1) # store result addi $s1, $s1, -4 # decrement pointer bne $s1, $zero, Loop # branch $s1!= 0 Scheduled Code (Assume 4 copies): ALU or Branch (1) Data Transfer (2) Clock Cycle Loop: addi $s1, $s1, -16 lw $t0, 0($s1) CC1 lw $t1, 12($s1) CC2 addu $t0, $t0, $s2 lw $t2, 8($s1) CC3 addu $t1, $t1, $s2 lw $t3, 4($s1) CC4 addu $t2, $t2, $s2 sw $t0, 16($s1) CC5 addu $t3, $t3, $s2 sw $t1, 12($s1) CC6 sw $t2, 8($s1) CC7 bne $s1, $zero, Loop sw $t3, 4($s1) CC8 Computer Architecture CS 35101-002 45

Advanced Pipelining Extracting More Performance 4. Dynamic Multiple-Issue Processor (Superscalar) Compiled instructions are scheduled in order Processor determines dynamically whether zero, one or more instructions can be executed in a given clock cycle (dependency) All modern processors are superscalar and issue multiple instructions usually with some limitations (e.g., n -stage pipeline with m instruction issue) Computer Architecture CS 35101-002 46

Extracting More Performance Dynamically Scheduled Pipeline Instruction Fetch & Decode unit In-order issue Reservation station Reservation station Reservation station Reservation station Functional Units: Integer Integer Float lw/sw Out-of-order execute Commit Unit In-order commit To Register Computer Architecture CS 35101-002 47

Example Problem Forwarding Exercise Show the forwarding paths needed to execute the following instructions: add $1, $2, $6 sub $3, $1, $4 lw $7, $100 ($3) add $8, $7, $4 Computer Architecture CS 35101-002 48

Example Problem Forwarding Inst Time (in clock cycles) --> CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 add $1, $2, $6 sub $3, $1, $4 lw $7, $100 ($3) add $8, $7, $4 Computer Architecture CS 35101-002 49

Example Problem Forwarding Inst Time (in clock cycles) --> CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 add $1, $2, $6 sub $3, $1, $4 lw $7, $100 ($3) nop add $8, $7, $4 Computer Architecture CS 35101-002 50