Chapter 4 The Processor 1. Chapter 4A. The Processor

Similar documents
The Processor. Z. Jerry Shi Department of Computer Science and Engineering University of Connecticut. CSE3666: Introduction to Computer Architecture

Chapter 4. The Processor

COMPUTER ORGANIZATION AND DESIGN

Lecture 3: The Processor (Chapter 4 of textbook) Chapter 4.1

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 4. The Processor

Chapter 4. Instruction Execution. Introduction. CPU Overview. Multiplexers. Chapter 4 The Processor 1. The Processor.

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 4. The Processor

Chapter 4. The Processor

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. 5 th. Edition. Chapter 4. The Processor

Chapter 4. The Processor

Processor (I) - datapath & control. Hwansoo Han

Chapter 4. The Processor

COMPUTER ORGANIZATION AND DESIGN

Pipelining Analogy. Pipelined laundry: overlapping execution. Parallelism improves performance. Four loads: Non-stop: Speedup = 8/3.5 = 2.3.

The Processor (1) Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Processor (II) - pipelining. Hwansoo Han

The Processor: Datapath and Control. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Full Datapath. Chapter 4 The Processor 2

LECTURE 3: THE PROCESSOR

Chapter 4. The Processor. Instruction count Determined by ISA and compiler. We will examine two MIPS implementations

COMPUTER ORGANIZATION AND DESIGN. The Hardware/Software Interface. Chapter 4. The Processor: A Based on P&H

Chapter 4. The Processor Designing the datapath

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

Determined by ISA and compiler. We will examine two MIPS implementations. A simplified version A more realistic pipelined version

MIPS Pipelining. Computer Organization Architectures for Embedded Computing. Wednesday 8 October 14

Computer Architecture Computer Science & Engineering. Chapter 4. The Processor BK TP.HCM

Department of Computer and IT Engineering University of Kurdistan. Computer Architecture Pipelining. By: Dr. Alireza Abdollahpouri

COMPUTER ORGANIZATION AND DESIGN

Full Datapath. Chapter 4 The Processor 2

3/12/2014. Single Cycle (Review) CSE 2021: Computer Organization. Single Cycle with Jump. Multi-Cycle Implementation. Why Multi-Cycle?

Systems Architecture

Chapter 4. The Processor

CSEE 3827: Fundamentals of Computer Systems

Chapter 4. The Processor

ECS 154B Computer Architecture II Spring 2009

Chapter 4. The Processor. Computer Architecture and IC Design Lab

Chapter 4. The Processor

EIE/ENE 334 Microprocessors

CENG 3420 Lecture 06: Pipeline

14:332:331 Pipelined Datapath

Pipeline Hazards. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Computer Architecture Computer Science & Engineering. Chapter 4. The Processor BK TP.HCM

Pipelining. CSC Friday, November 6, 2015

Lecture 7 Pipelining. Peng Liu.

Lecture Topics. Announcements. Today: Data and Control Hazards (P&H ) Next: continued. Exam #1 returned. Milestone #5 (due 2/27)

CPE 335 Computer Organization. Basic MIPS Architecture Part I

The Processor (3) Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

COSC 6385 Computer Architecture - Pipelining

Introduction. Datapath Basics

Chapter 4 The Processor 1. Chapter 4B. The Processor

ECE331: Hardware Organization and Design

CENG 3420 Lecture 06: Datapath

Chapter 4. The Processor

Chapter 4. The Processor. Jiang Jiang

Computer Architecture. Lecture 6.1: Fundamentals of

The MIPS Processor Datapath

CSCI 402: Computer Architectures. Fengguang Song Department of Computer & Information Science IUPUI. Today s Content

Lecture 9. Pipeline Hazards. Christos Kozyrakis Stanford University

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface 5 th Edition. Chapter 4. The Processor

CENG 3420 Computer Organization and Design. Lecture 06: MIPS Processor - I. Bei Yu

Thomas Polzer Institut für Technische Informatik

Full Datapath. CSCI 402: Computer Architectures. The Processor (2) 3/21/19. Fengguang Song Department of Computer & Information Science IUPUI

CPE 335 Computer Organization. Basic MIPS Pipelining Part I

Pipelined datapath Staging data. CS2504, Spring'2007 Dimitris Nikolopoulos

ELEC 5200/6200 Computer Architecture and Design Spring 2017 Lecture 4: Datapath and Control

ECE260: Fundamentals of Computer Engineering

4. The Processor Computer Architecture COMP SCI 2GA3 / SFWR ENG 2GA3. Emil Sekerinski, McMaster University, Fall Term 2015/16

ECE260: Fundamentals of Computer Engineering

TDT4255 Computer Design. Lecture 4. Magnus Jahre. TDT4255 Computer Design

ECE473 Computer Architecture and Organization. Pipeline: Data Hazards

ECE232: Hardware Organization and Design

Review: Abstract Implementation View

Outline Marquette University

Introduction. Chapter 4. Instruction Execution. CPU Overview. University of the District of Columbia 30 September, Chapter 4 The Processor 1

Chapter 4 (Part II) Sequential Laundry

ECE 154A Introduction to. Fall 2012

CO Computer Architecture and Programming Languages CAPL. Lecture 18 & 19

EE557--FALL 1999 MIDTERM 1. Closed books, closed notes

zhandling Data Hazards The objectives of this module are to discuss how data hazards are handled in general and also in the MIPS architecture.

ENGN1640: Design of Computing Systems Topic 04: Single-Cycle Processor Design

LECTURE 5. Single-Cycle Datapath and Control

Lecture Topics. Announcements. Today: Single-Cycle Processors (P&H ) Next: continued. Milestone #3 (due 2/9) Milestone #4 (due 2/23)

COMP2611: Computer Organization. The Pipelined Processor

COMPUTER ORGANIZATION AND DESI

CS 110 Computer Architecture. Pipelining. Guest Lecture: Shu Yin. School of Information Science and Technology SIST

Lecture 6 Datapath and Controller

Pipelined Processor Design

ELE 655 Microprocessor System Design

Computer and Information Sciences College / Computer Science Department Enhancing Performance with Pipelining

Computer Architecture

Mark Redekopp and Gandhi Puvvada, All rights reserved. EE 357 Unit 15. Single-Cycle CPU Datapath and Control

COSC121: Computer Systems. ISA and Performance

Single Cycle Datapath

University of Jordan Computer Engineering Department CPE439: Computer Design Lab

COMPUTER ORGANIZATION AND DESIGN. 5 th Edition. The Hardware/Software Interface. Chapter 4. The Processor

MIPS An ISA for Pipelining

CS 251, Winter 2018, Assignment % of course mark

Lecture 4: Review of MIPS. Instruction formats, impl. of control and datapath, pipelined impl.

ECE260: Fundamentals of Computer Engineering

Single Cycle Datapath

Transcription:

Chapter 4 The Processor 1 Chapter 4A The Processor

Chapter 4 The Processor 2 Introduction CPU performance factors Instruction count Determined by ISA and compiler CPI and Cycle time Determined by CPU hardware We will examine two MIPS implementations A simplified version A more realistic pipelined version Simple subset, shows most aspects Memory reference: lw, sw Arithmetic/logical: add, sub, and, or, slt Control transfer: beq, j 4.1 Introduction

MIPS Microarchitecture Building blocks Registers Memories (instruction, data) s Muxes Wires Chapter 4 The Processor 3

Instruction Execution PC instruction memory, fetch instruction Register numbers register file, read registers Depending on instruction class Use to calculate Arithmetic result Memory address for load/store Branch target address Access data memory for load/store PC target address or PC + 4 Exec Fetch PC = PC+4 Decode Chapter 4 The Processor 4

CPU Overview Chapter 4 The Processor 5

Multiplexers Can t just join wires together Use multiplexers Chapter 4 The Processor 6

Logic Design Basics Information encoded in binary Low voltage = 0, High voltage = 1 One wire per bit Multi-bit data encoded on multi-wire buses Combinational element Operate on data Output is a function of input State (sequential) elements Store information 4.2 Logic Design Conventions Chapter 4 The Processor 7

Combinational Elements AND-gate Y = A & B Adder Y = A + B A B + Y A B I0 I1 M u x S Y Multiplexer Y = S? I1 : I0 Y Arithmetic/Logic Unit Y = F(A, B) A Y B F Chapter 4 The Processor 8

Sequential Elements Register: stores data in a circuit Uses a clock signal to determine when to update the stored value Edge-triggered: update when Clk changes from 0 to 1 D Clk Q Clk D Q Chapter 4 The Processor 9

Chapter 4 The Processor 10 Sequential Elements Register with write control Only updates on clock edge when write control input is 1 Used when stored value is required later Clk D Write Clk Q Write D Q

Chapter 4 The Processor 11 Clocking Methodology Combinational logic transforms data during clock cycles Between clock edges Input from state elements, output to state element Longest delay determines clock period

Building a Datapath Datapath Elements that process data and addresses in the CPU Registers, s, mux s, memories, We will build a MIPS datapath incrementally Refining the overview design 4.3 Building a Datapath Chapter 4 The Processor 12

Fetching Instructions Fetching instructions involves reading the instruction from the Instruction Memory updating the PC to hold the address of the next instruction 4 Add Instruction Memory PC Read Address Instruction PC is updated every cycle, so it does not need an explicit write control signal Instruction Memory is read every cycle, so it doesn t need an explicit read control signal Chapter 4 The Processor 13

Chapter 4 The Processor 14 Decoding Instructions Decoding instructions involves sending the fetched instruction s opcode and function field bits to the control unit Control Unit Instruction Read Addr 1 Register Read Addr 2 File Write Addr Write Data Read Data 1 Read Data 2 reading two values from the Register File Register File addresses are contained in the instruction

R-Format Instructions Read two register operands Perform arithmetic/logical operation Write register result Chapter 4 The Processor 15

Chapter 4 The Processor 16 Executing R-type Operations R format operations (add, sub, slt, and, or) R-type: 31 25 20 15 10 5 0 op rs rt rd shamt funct perform the (op and funct) operation on values in rs and rt store the result back into the Register File (into location rd) RegWrite control Instruction Read Addr 1 Register Read Addr 2 File Write Addr Write Data Read Data 1 Read Data 2 overflow zero The Register File is not written every cycle (e.g. sw), so we need an explicit write control signal for the Register File

Chapter 4 The Processor 17 Load/Store Instructions Read register operands Calculate address using 16-bit offset Use, but sign-extend offset Load: Read memory and update register Store: Write register value to memory

Chapter 4 The Processor 18 Executing lw/sw Operations Load and store operations involves compute memory address by adding the base register (read from the Register File during decode) to the 16-bit signed-extended offset field in the instruction store value (read from the Register File during decode) written to the Data Memory load value, read from the Data Memory, written to the Register File RegWrite control MemWrite Instruction Read Addr 1 Register Read Addr 2 File Write Addr Write Data Read Data 1 Read Data 2 overflow zero Address Data Memory Write Data Read Data Sign 16 Extend 32 MemRead

Branch Instructions Read register operands Compare operands Use, subtract and check Zero output Calculate target address Sign-extend displacement Shift left 2 places (word displacement) Add to PC + 4 Already calculated by instruction fetch Chapter 4 The Processor 19

Executing Branch Operations Branch operations involves compare registers + compute branch target 4 Add Shift left 2 Add Branch target address control PC Instruction Read Addr 1 Register Read Addr 2 File Write Addr Write Data Read Data 1 Read Data 2 zero (to branch control logic) Sign 16 Extend 32 Chapter 4 The Processor 20

Executing Jump Operations Jump operation involves replace the lower 28 bits of the PC with the lower 26 bits of the fetched instruction shifted left by 2 bits Add 4 4 PC Read Address Instruction Memory Instruction 26 Shift left 2 28 Jump address Chapter 4 The Processor 21

Composing the Elements First-cut data path does an instruction in one clock cycle Each datapath element can only do one function at a time Hence, we need separate instruction and data memories Use multiplexers where alternate data sources are used for different instructions Chapter 4 The Processor 22

Chapter 4 The Processor 23 Assembling the Parts Assemble the datapath segments and add control lines and multiplexors as needed Single cycle design fetch, decode and execute each instructions in one clock cycle no datapath resource can be used more than once per instruction, so some must be duplicated (e.g., separate Instruction Memory and Data Memory, several adders) multiplexors needed at the input of shared elements with control lines to do the selection write signals to control writing to the Register File and Data Memory

Chapter 4 The Processor 24 Fetching, Register, and Memory Access Portions PC 4 Read Address Add Instruction Memory Instruction Read Addr 1 Register Read Addr 2 File Write Addr Write Data RegWrite Read Data 1 Read Data 2 Src control ovf zero MemWrite Address Data Memory Write Data Read Data MemtoReg Sign 16 Extend 32 MemRead

Control used for Load/Store: F = add Branch: F = subtract R-type: F depends on funct field control Function 0000 AND 0001 OR 0010 add 0110 subtract 0111 set-on-less-than 1100 NOR 4.4 A Simple Implementation Scheme Chapter 4 The Processor 25

Control Assume 2-bit Op derived from opcode Combinational logic derives control opcode Op Operation funct function control lw 00 load word XXXXXX add 0010 sw 00 store word XXXXXX add 0010 beq 01 branch equal XXXXXX subtract 0110 R-type 10 add 100000 add 0010 subtract 100010 subtract 0110 AND 100100 AND 0000 OR 100101 OR 0001 set-on-less-than 101010 set-on-less-than 0111 Chapter 4 The Processor 26

Chapter 4 The Processor 27 The Main Control Unit Control signals derived from instruction R-type Load/ Store Branch 0 rs rt rd shamt funct 31:26 25:21 20:16 15:11 10:6 5:0 35 or 43 rs rt address 31:26 25:21 20:16 15:0 4 rs rt address 31:26 25:21 20:16 15:0 base register opcode always read read, except for load write for R-type and load sign-extend and add

Chapter 4 The Processor 28 Datapath With Control opcode rs rt rd imm funct

Chapter 4 The Processor 29 R-Type Instruction R-type 0 rs rt rd shamt funct 31:26 25:21 20:16 15:11 10:6 5:0

Chapter 4 The Processor 30 Load Instruction base register Load 35 rs rt address 31:26 25:21 20:16 15:0 rs rt 1

Chapter 4 The Processor 31 Store Instruction base register Store 43 rs rt address 31:26 25:21 20:16 15:0 rs rt 1

Chapter 4 The Processor 32 Branch-on-Equal Instruction Branch 4 rs rt address 31:26 25:21 20:16 15:0

Implementing Jumps Jump 2 address Jump uses word address Update PC with concatenation of Top 4 bits of old PC 26-bit jump address 00 31:26 25:0 Need an extra control signal decoded from opcode Chapter 4 The Processor 33

Chapter 4 The Processor 34 Datapath With Jumps Added Jump 2 address 31:26 25:0

Performance Issues Longest delay determines clock period Critical path: load instruction lw: Instruction memory register file data memory register file Not feasible to vary period for different instructions Violates design principle Making the common case fast We will improve performance by pipelining Chapter 4 The Processor 35

Pipelining Analogy Pipelined laundry: overlapping execution Parallelism improves performance Four loads: Speedup = 8/3.5 = 2.3 Non-stop: Speedup = 2n/(0.5n + 1.5) 4 = number of stages 4.5 An Overview of Pipelining Chapter 4 The Processor 36

MIPS Pipeline Five stages, one step per stage 1. IF: Instruction fetch from memory 2. ID: Instruction decode & register read 3. EX: Execute operation or calculate address 4. MEM: Access memory operand 5. WB: Write result back to register Chapter 4 The Processor 37

Pipeline Performance Assume time for stages is 100ps for register read or write 200ps for other stages Compare pipelined datapath with single-cycle datapath Instr Instr fetch Register read op Memory access Register write Total time lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps Chapter 4 The Processor 38

Chapter 4 The Processor 39 Pipeline Performance Single-cycle (T c = 800ps) Pipelined (T c = 200ps) read write

Pipeline Speedup If all stages are balanced i.e., all take the same time Time between instructions pipelined = Time between instructions nonpipelined Number of stages If not balanced, speedup is less Speedup due to increased throughput Latency (time for each instruction) does not decrease Chapter 4 The Processor 40

Chapter 4 The Processor 41 Pipelining and ISA Design MIPS ISA designed for pipelining All instructions are 32-bits Easier to fetch and decode in one cycle c.f. x86: 1- to 17-byte instructions Few and regular instruction formats Can decode and read registers in one step Load/store addressing Can calculate address in 3 rd stage, access memory in 4 th stage Alignment of memory operands Memory access takes only one cycle

Other Pipeline Structures What about the (slow) multiply operation? Make the clock twice as slow or let it take two cycles (since it doesn t use the DM stage) MUL IM Reg DM Reg What if the data memory access is twice as slow as the instruction memory? make the clock twice as slow or let data memory access take two cycles (and keep the same clock rate) IM Reg DM1 DM2 Reg Chapter 4 The Processor 42

Chapter 4 The Processor 43 Sample Pipeline Alternatives ARM7 IM Reg EX PC update IM access decode reg access op DM access shift/rotate commit result (write back) StrongARM-1 IM Reg DM Reg XScale PC update BTB access start IM access IM1 IM2 Reg DM1 Reg SHFT DM2 IM access decode reg 1 access op shift/rotate reg 2 access DM write reg write start DM access exception

MIPS Pipeline Datapath What do we need to add/modify in our MIPS datapath? State registers between each pipeline stage to isolate them IF:IFetch ID:Dec EX:Execute MEM: MemAccess WB: WriteBack PC 4 Instruction Memory Read Address Add IFetch/Dec Read Addr 1 Register Read Read Addr Data 2 1 File Write Addr Read Data 2 Write Data Dec/Exec Shift left 2 Add Exec/Mem Address Write Data Data Memory Read Data Mem/WB Sign 16 Extend 32 System Clock What is wrong here? Chapter 4 The Processor 44

Chapter 4 The Processor 45 (Pipeline) Hazards Situations that prevent starting the next instruction in the next cycle Structure hazards A required resource is busy Data hazard Need to wait for previous instruction to complete its data read/write Control (branch) hazard Deciding on control action depends on previous instruction

Structure Hazards Conflict for use of a resource In MIPS pipeline with a single memory Load/store requires data access Instruction fetch would have to stall for that cycle Would cause a pipeline bubble Hence, pipelined datapaths require separate instruction/data memories Or separate instruction/data caches Chapter 4 The Processor 46

Chapter 4 The Processor 47 A Single Memory?! Time (clock cycles) I n s t r. O r d e r lw Inst 1 Inst 2 Inst 3 Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Reading data from memory Inst 4 Reading instruction from memory Mem Reg Mem Reg A structure hazard!

Chapter 4 The Processor 48 Dual Memory: I$, D$! Time (clock cycles) I n s t r. lw Inst 1 I$ Reg D$ Reg I$ Reg D$ Reg O r d e r Inst 2 Inst 3 I$ Reg D$ Reg I$ Reg D$ Reg Inst 4 I$ Reg D$ Reg Fix with separate instrution and data memories (I$ and D$)

How About Register File Access? Time (clock cycles) I n s t r. O r d e r add $1, Inst 1 Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg writing data to a register IM Reg DM Reg Reading data from a register Another structure hazard! Chapter 4 The Processor 49

A solution! Is it OK? Time (clock cycles) I n s t r. add $1,.. Inst 1 IM Reg DM Reg IM Reg DM Reg Fix register file access hazard by writing in the first half of the cycle and reading in the second half O r d e r Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg clock edge that controls register reading clock edge that controls reading of pipeline state registers and register writing Chapter 4 The Processor 50

Another solution! Is it OK? Time (clock cycles) I n s t r. add $1,.. Inst 1 IM Reg DM Reg IM Reg DM Reg Fix register file access hazard by writing in the second half of the cycle and reading in the first half O r d e r Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg clock edge that controls register writing clock edge that controls reading of pipeline state registers and register file Chapter 4 The Processor 51

Data Hazards An instruction depends on completion of data access by a previous instruction add $s0, $t0, $t1 sub $t2, $s0, $t3 write read Chapter 4 The Processor 52

Forwarding (aka Bypassing) Use result when it is computed Don t wait for it to be stored in a register Requires extra connections in the datapath Chapter 4 The Processor 53

Chapter 4 The Processor 54 Data Forwarding (Bypassing) Take the result from the earliest point that it exists in any of the pipeline state registers and forward it to the functional units (e.g., the ) that need it that cycle For functional unit: the inputs can come from any pipeline register rather than just from ID/EX by adding multiplexors to the inputs of the connecting the Rd write data in EX/MEM or MEM/WB to either (or both) of the EX s stage Rs and Rt mux inputs adding the proper control hardware to control the new muxes Other functional units may need similar forwarding logic (e.g., the DM) With forwarding can achieve a CPI of 1 even in the presence of data dependencies

Chapter 4 The Processor 55 Forwarding Hardware PCSrc IF/ID Control ID/EX EX/MEM PC 4 Instruction Memory Read Address Add Read Addr 1 Register Read Read Addr Data 2 1 File 00 01 10 B A Write Addr Read 00 Data 2 Write Data 01 16 Sign 32 10 Extend rt rd ID/EX.RegisterRt rs ID/EX.RegisterRs Shift left 2 Add cntrl Forward Unit Branch Data Memory Address Read Data Write Data EX/MEM.RegisterRd MEM/WB.RegisterRd MEM/WB

Chapter 4 The Processor 56 Forwarding Control Conditions EX hazard: if (EX/MEM.RegWrite and (EX/MEM.RegisterRd!= 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10 if (EX/MEM.RegWrite and (EX/MEM.RegisterRd!= 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10 MEM hazard: if (MEM/WB.RegWrite and (MEM/WB.RegisterRd!= 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd!= 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01 Forwards the result from the previous instr. to either input of the Will be explained again later! Forwards the result from the second previous instr. to either input of the

What if both instructions are accessing the same register? Time (clock cycles) I n s t r. O r d e r add $1,.. Inst 1 Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg A data hazard? Must read after write (RAW) Chapter 4 The Processor 57

What if both instructions are accessing the same register? Time (clock cycles) I n s t r. O r d e r add $1,.. Inst 1 Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg A data hazard? Must read after write (RAW) Chapter 4 The Processor 58

How About Register File Access? Time (clock cycles) I n s t r. O r d e r add $1, Inst 1 Inst 2 add $2,$1, IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg Today: Register reads/writes take a whole cycle! So in this case we need to bypass the data from the write to the read in the same cycle. Chapter 4 The Processor 59

Chapter 4 The Processor 60 Loads Can Cause Data Hazards I n s t r. O r d e r lw $1,4($2) sub $4,$1,$5 and $6,$1,$7 or $8,$1,$9 xor $4,$1,$5 IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg IM Reg DM Reg Load-use data hazard

Load-Use Data Hazard Can t always avoid stalls by forwarding If value not computed when needed Can t forward backward in time! Chapter 4 The Processor 61

Code Scheduling to Avoid Stalls Reorder code to avoid use of load result in the next instruction C code for A = B + E; C = B + F; stall stall lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 13 cycles lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 cycles Chapter 4 The Processor 62

Chapter 4 The Processor 63 Types of Data Hazards RAW (read after write): true dependency only hazard for fixed pipelines later instruction must read after earlier instruction writes WAW (write after write): output dependency only hazard for variable-length pipeline later instruction must write after earlier instruction writes WAR (write after read): anti dependency or name dependency only hazard for pipelines with late read later instruction must write after earlier instruction reads RAR (read after read): no hazard F R X M W F R X M W F R 1 2 3 F R 1 2 3 F R X M W F R X M W 4 W 4 R 5 W