EI209 Chapter 4D.1Haojin Zhu, CSE, 2015 EI 209 Computer Organization Fall 2015 Chapter 4D: Pipeline Hazard [Adapted from Computer Organization and Design,

Slides:



Advertisements
Similar presentations
Pipeline Control Hazards: Detection and Circumvention Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005, and from slides kindly.
Advertisements

Pipeline Hazards CS365 Lecture 10. D. Barbara Pipeline Hazards CS465 2 Review  Pipelined CPU  Overlapped execution of multiple instructions  Each on.
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Computer Organization Pipelined Processor.
Part 2 - Data Hazards and Forwarding 3/24/04++
Review: MIPS Pipeline Data and Control Paths
ENEE350 Ankur Srivastava University of Maryland, College Park Based on Slides from Mary Jane Irwin ( )
ENEE350 Ankur Srivastava University of Maryland, College Park Based on Slides from Mary Jane Irwin ( )
ENEE350 Ankur Srivastava University of Maryland, College Park Based on Slides from Mary Jane Irwin ( )
John Lazzaro (
CS 152 L12 RAW Hazards, Interrrupts (1)Fall 2004 © UC Regents CS152 – Computer Architecture and Engineering Lecture 12 – Pipeline Wrap up: Control Hazards,
©UCB CS 162 Computer Architecture Lecture 3: Pipelining Contd. Instructor: L.N. Bhuyan
1 Stalling  The easiest solution is to stall the pipeline  We could delay the AND instruction by introducing a one-cycle delay into the pipeline, sometimes.
Chapter 6 Pipelining to Increase Effective Computer Speed.
 The actual result $1 - $3 is computed in clock cycle 3, before it’s needed in cycles 4 and 5  We forward that value to later instructions, to prevent.
Computer Organization Lecture Set – 06 Chapter 6 Huei-Yung Lin.
Control Hazards.1 Review: Datapath with Data Hazard Control Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register.
1 Stalls and flushes  So far, we have discussed data hazards that can occur in pipelined CPUs if some instructions depend upon others that are still executing.
Chapter 4B: The Processor, Part B. Review: Why Pipeline? For Performance! I n s t r. O r d e r Time (clock cycles) Inst 0 Inst 1 Inst 2 Inst 4 Inst 3.
1 Pipelining Reconsider the data path we just did Each instruction takes from 3 to 5 clock cycles However, there are parts of hardware that are idle many.
Pipeline Data Hazards: Detection and Circumvention Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005, and from slides kindly.
Pipelined Datapath and Control
CPE432 Chapter 4B.1Dr. W. Abu-Sufah, UJ Chapter 4B: The Processor, Part B-2 Read Section 4.7 Adapted from Slides by Prof. Mary Jane Irwin, Penn State University.
Chapter 4 CSF 2009 The processor: Pipelining. Performance Issues Longest delay determines clock period – Critical path: load instruction – Instruction.
CSE 340 Computer Architecture Summer 2014 Basic MIPS Pipelining Review.
Basic Pipelining & MIPS Pipelining Chapter 6 [Computer Organization and Design, © 2007 Patterson (UCB) & Hennessy (Stanford), & Slides Adapted from: Mary.
CS.305 Computer Architecture Enhancing Performance with Pipelining Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005, and from.
1 Designing a Pipelined Processor In this Chapter, we will study 1. Pipelined datapath 2. Pipelined control 3. Data Hazards 4. Forwarding 5. Branch Hazards.
Computer Architecture and Design – ELEN 350 Part 8 [Some slides adapted from M. Irwin, D. Paterson. D. Garcia and others]
CMPE 421 Parallel Computer Architecture Part 2: Hardware Solution: Forwarding.
CECS 440 Pipelining.1(c) 2014 – R. W. Allison [slides adapted from D. Patterson slides with additional credits to M.J. Irwin]
CSIE30300 Computer Architecture Unit 04: Basic MIPS Pipelining Hsin-Chou Chi [Adapted from material by and
1 (Based on text: David A. Patterson & John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 3 rd Ed., Morgan Kaufmann,
CSE431 L07 Overcoming Data Hazards.1Irwin, PSU, 2005 CSE 431 Computer Architecture Fall 2005 Lecture 07: Overcoming Data Hazards Mary Jane Irwin (
University of Texas at Austin CS352H - Computer Systems Architecture Fall 2009 Don Fussell CS352H: Computer Systems Architecture Topic 9: MIPS Pipeline.
CSIE30300 Computer Architecture Unit 05: Overcoming Data Hazards Hsin-Chou Chi [Adapted from material by and
CSE431 L06 Basic MIPS Pipelining.1Irwin, PSU, 2005 MIPS Pipeline Datapath Modifications  What do we need to add/modify in our MIPS datapath? l State registers.
Adapted from Computer Organization and Design, Patterson & Hennessy, UCB ECE232: Hardware Organization and Design Part 13: Branch prediction (Chapter 4/6)
CMPE 421 Parallel Computer Architecture Part 3: Hardware Solution: Control Hazard and Prediction.
CSIE30300 Computer Architecture Unit 06: Containing Control Hazards
Designing a Pipelined Processor
CPE432 Chapter 4B.1Dr. W. Abu-Sufah, UJ Chapter 4B: The Processor, Part B-1 Read Sections 4.7 Adapted from Slides by Prof. Mary Jane Irwin, Penn State.
Pipelining: Implementation CPSC 252 Computer Organization Ellen Walker, Hiram College.
CSE 340 Computer Architecture Spring 2016 Overcoming Data Hazards.
Exceptions Another form of control hazard Could be caused by…
Computer Organization CS224
Stalling delays the entire pipeline
Mary Jane Irwin ( ) [Adapted from Computer Organization and Design,
Note how everything goes left to right, except …
Lecture 08: Control Hazards
Appendix C Pipeline implementation
Morgan Kaufmann Publishers The Processor
Chapter 4 The Processor Part 4
ECS 154B Computer Architecture II Spring 2009
ECS 154B Computer Architecture II Spring 2009
ECE232: Hardware Organization and Design
Processor Design: Pipeline Handling Hazards
Forwarding Now, we’ll introduce some problems that data hazards can cause for our pipelined processor, and show how to handle them with forwarding.
Chapter 4 The Processor Part 3
Review: MIPS Pipeline Data and Control Paths
Morgan Kaufmann Publishers The Processor
Peng Liu Lecture 9 Pipeline Peng Liu
EI 209 Computer Organization Fall 2017
The processor: Pipelining and Branching
The Processor Lecture 3.6: Control Hazards
The Processor Lecture 3.5: Data Hazards
CSC3050 – Computer Architecture
Pipelining (II).
Stalls and flushes Last time, we discussed data hazards that can occur in pipelined CPUs if some instructions depend upon others that are still executing.
©2003 Craig Zilles (derived from slides by Howard Huang)
ELEC / Computer Architecture and Design Spring 2015 Pipeline Control and Performance (Chapter 6) Vishwani D. Agrawal James J. Danaher.
Presentation transcript:

EI209 Chapter 4D.1Haojin Zhu, CSE, 2015 EI 209 Computer Organization Fall 2015 Chapter 4D: Pipeline Hazard [Adapted from Computer Organization and Design, 4 th Edition, Patterson & Hennessy, © 2012, MK]

EI209 Chapter 4D.2Haojin Zhu, CSE, 2015 Assignment for Chapter IV  Assignment IV: 4.10, 4.11, 4.12, 4.13, 4.16  Due: Dec. 31

EI209 Chapter 4D.3Haojin Zhu, CSE, 2015 Review: Why Pipeline? For Performance! I n s t r. O r d e r Time (clock cycles) Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg Once the pipeline is full, one instruction is completed every cycle, so CPI = 1 Time to fill the pipeline

EI209 Chapter 4D.4Haojin Zhu, CSE, 2015 Review: MIPS Pipeline Data and Control Paths Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data ALU Shift left 2 Add Data Memory Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB Control ALU cntrl RegWrite MemWriteMemRead MemtoReg RegDst ALUOp ALUSrc Branch PCSrc How many bits wide is each pipeline register?

EI209 Chapter 4D.5Haojin Zhu, CSE, 2015 Review: Can Pipelining Get Us Into Trouble?  Yes: Pipeline Hazards l structural hazards: attempt to use the same resource by two different instructions at the same time l data hazards: attempt to use data before it is ready -An instruction’s source operand(s) are produced by a prior instruction still in the pipeline l control hazards: attempt to make a decision about program control flow before the condition has been evaluated and the new PC target address calculated -branch and jump instructions, exceptions  Pipeline control must detect the hazard and then take action to resolve hazards

EI209 Chapter 4D.6Haojin Zhu, CSE, 2015 Review: Register Usage Can Cause Data Hazards ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg  Read before write data hazard add $1, sub $4,$1,$5 and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9 Value of $ /

EI209 Chapter 4D.7Haojin Zhu, CSE, 2015 stall One Way to “Fix” a Data Hazard I n s t r. O r d e r add $1, ALU IM Reg DMReg sub $4,$1,$5 and $6,$1,$7 ALU IM Reg DMReg ALU IM Reg DMReg Can fix data hazard by waiting – stall – but impacts CPI

EI209 Chapter 4D.8Haojin Zhu, CSE, 2015 Another Way to “Fix” a Data Hazard I n s t r. O r d e r add $1, ALU IM Reg DMReg sub $4,$1,$5 and $6,$1,$7 ALU IM Reg DMReg ALU IM Reg DMReg Fix data hazards by forwarding results as soon as they are available to where they are needed xor $4,$1,$5 or $8,$1,$9 ALU IM Reg DMReg ALU IM Reg DMReg

EI209 Chapter 4D.9Haojin Zhu, CSE, 2015 Another Way to “Fix” a Data Hazard ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg Fix data hazards by forwarding results as soon as they are available to where they are needed ALU IM Reg DMReg ALU IM Reg DMReg I n s t r. O r d e r add $1, sub $4,$1,$5 and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9

EI209 Chapter 4D.10Haojin Zhu, CSE, 2015 Data Forwarding (aka 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 ALU) that need it that cycle  For ALU functional unit: the inputs can come from any pipeline register rather than just from ID/EX by l adding multiplexors to the inputs of the ALU l connecting the Rd write data in EX/MEM or MEM/WB to either (or both) of the EX’s stage Rs and Rt ALU mux inputs l 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

EI209 Chapter 4D.11Haojin Zhu, CSE, 2015 Data Forwarding Control Conditions 1. EX Forward Unit: 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 Forwards the result from the previous instr. to either input of the ALU Forwards the result from the second previous instr. to either input of the ALU 2. MEM Forward Unit: 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 //It’s a reg write operation //The dest reg is not null //The dest reg = Ex. Src reg

EI209 Chapter 4D.12Haojin Zhu, CSE, 2015 Forwarding Illustration I n s t r. O r d e r add $1, sub $4,$1,$5 and $6,$7,$1 ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg EX forwardingMEM forwarding

EI209 Chapter 4D.13Haojin Zhu, CSE, 2015 Datapath with Forwarding Hardware PCSrc ID/EX.RegisterRt ID/EX.RegisterRs EX/MEM.RegisterRd MEM/WB.RegisterRd

EI209 Chapter 4D.14Haojin Zhu, CSE, 2015 Yet Another Complication! I n s t r. O r d e r add $1,$1,$2 ALU IM Reg DMReg add $1,$1,$3 add $1,$1,$4 ALU IM Reg DMReg ALU IM Reg DMReg  Another potential data hazard can occur when there is a conflict between the result of the WB stage instruction and the MEM stage instruction – which should be forwarded?

EI209 Chapter 4D.15Haojin Zhu, CSE, 2015 Corrected Data Forwarding Control Conditions 2. MEM Forward Unit: if (MEM/WB.RegWrite and (MEM/WB.RegisterRd != 0) and (EX/MEM.RegisterRd != ID/EX.RegisterRs) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 if (MEM/WB.RegWrite and (MEM/WB.RegisterRd != 0) and (EX/MEM.RegisterRd != ID/EX.RegisterRt) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = EX Forward Unit: 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 Forwards the result from the previous instr. to either input of the ALU Forwards the result from the previous or second previous instr. to either input of the ALU

EI209 Chapter 4D.16Haojin Zhu, CSE, 2015 Forwarding with Load-use Data Hazards I n s t r. O r d e r lw $1,4($2) and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9 ALU IM Reg DMReg ALU IM Reg DM ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg sub $4,$1,$5

EI209 Chapter 4D.17Haojin Zhu, CSE, 2015 stall Forwarding with Load-use Data Hazards I n s t r. O r d e r lw $1,4($2) sub $4,$1,$5 and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9 ALU IM Reg DMReg ALU IM Reg DM ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg sub $4,$1,$5 and $6,$1,$7 xor $4,$1,$5 or $8,$1,$9  Will still need one stall cycle even with forwarding

EI209 Chapter 4D.18Haojin Zhu, CSE, 2015 Load-use Hazard Detection Unit  Need a Hazard detection Unit in the ID stage that inserts a stall between the load and its use 1. ID Hazard detection Unit: if (ID/EX.MemRead and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))) stall the pipeline  The first line tests to see if the instruction now in the EX stage is a lw ; the next two lines check to see if the destination register of the lw matches either source register of the instruction in the ID stage (the load-use instruction)  After this one cycle stall, the forwarding logic can handle the remaining data hazards

EI209 Chapter 4D.19Haojin Zhu, CSE, 2015 Hazard/Stall Hardware  Along with the Hazard Unit, we have to implement the stall  Prevent the instructions in the IF and ID stages from progressing down the pipeline – done by preventing the PC register and the IF/ID pipeline register from changing Hazard detection Unit controls the writing of the PC ( PC.write ) and IF/ID ( IF/ID.write ) registers  Insert a “bubble” between the lw instruction (in the EX stage) and the load-use instruction (in the ID stage) (i.e., insert a noop in the execution stream) Set the control bits in the EX, MEM, and WB control fields of the ID/EX pipeline register to 0 ( noop ). The Hazard Unit controls the mux that chooses between the real control values and the 0’s.  Let the lw instruction and the instructions after it in the pipeline (before it in the code) proceed normally down the pipeline

EI209 Chapter 4D.20Haojin Zhu, CSE, 2015 Adding the Hazard/Stall Hardware Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data ALU Shift left 2 Add Data Memory Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB Control ALU cntrl Branch PCSrc Forward Unit Hazard Unit 0 1

EI209 Chapter 4D.21Haojin Zhu, CSE, 2015 Adding the Hazard/Stall Hardware Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data ALU Shift left 2 Add Data Memory Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB Control ALU cntrl Branch PCSrc Forward Unit Hazard Unit 0 1 ID/EX.RegisterRt 0 ID/EX.MemRead PC.Write IF/ID.Write

EI209 Chapter 4D.22Haojin Zhu, CSE, 2015 Control Hazards  When the flow of instruction addresses is not sequential (i.e., PC = PC + 4); incurred by change of flow instructions Unconditional branches ( j, jal, jr ) Conditional branches ( beq, bne ) l Exceptions  Possible approaches l Stall (impacts CPI) l Move decision point as early in the pipeline as possible, thereby reducing the number of stall cycles l Delay decision (requires compiler support) l Predict and hope for the best !  Control hazards occur less frequently than data hazards, but there is nothing as effective against control hazards as forwarding is for data hazards

EI209 Chapter 4D.23Haojin Zhu, CSE, 2015 Datapath Branch and Jump Hardware ID/EX Read Address Instruction Memory Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data ALU Data Memory Address Write Data Read Data IF/ID Sign Extend EX/MEM MEM/WB Control ALU cntrl Forward Unit Branch PCSrc Shift left 2 Add Shift left 2 Jump PC+4[31-28]

EI209 Chapter 4D.24Haojin Zhu, CSE, 2015 flush Jumps Incur One Stall I n s t r. O r d e r j j target ALU IM Reg DMReg ALU IM Reg DMReg  Fortunately, jumps are very infrequent – only 3% of the SPECint instruction mix  Jumps not decoded until ID, so one flush is needed To flush, set IF.Flush to zero the instruction field of the IF/ID pipeline register (turning it into a noop ) Fix jump hazard by waiting – flush ALU IM Reg DMReg

EI209 Chapter 4D.25Haojin Zhu, CSE, 2015 Two “Types” of Stalls  Noop instruction (or bubble) inserted between two instructions in the pipeline (as done for load-use situations) l Keep the instructions earlier in the pipeline (later in the code) from progressing down the pipeline for a cycle (“bounce” them in place with write control signals) Insert noop by zeroing control bits in the pipeline register at the appropriate stage l Let the instructions later in the pipeline (earlier in the code) progress normally down the pipeline  Flushes (or instruction squashing) were an instruction in the pipeline is replaced with a noop instruction (as done for instructions located sequentially after j instructions) l Zero the control bits for the instruction to be flushed

EI209 Chapter 4D.26Haojin Zhu, CSE, 2015 Supporting ID Stage Jumps 0

EI209 Chapter 4D.27Haojin Zhu, CSE, 2015 Review: Branch Instr’s Cause Control Hazards I n s t r. O r d e r lw Inst 4 Inst 3 beq ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg  Dependencies backward in time cause hazards

EI209 Chapter 4D.28Haojin Zhu, CSE, 2015 flush One Way to “Fix” a Branch Control Hazard I n s t r. O r d e r beq ALU IM Reg DMReg beq target ALU IM Reg DMReg ALU Inst 3 IM Reg DM Fix branch hazard by waiting – flush – but affects CPI ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg

EI209 Chapter 4D.29Haojin Zhu, CSE, 2015 flush Another Way to “Fix” a Branch Control Hazard I n s t r. O r d e r beq beq target ALU IM Reg DMReg Inst 3 ALU IM Reg DM Fix branch hazard by waiting – flush ALU IM Reg DMReg  Move branch decision hardware back to as early in the pipeline as possible – i.e., during the decode cycle ALU IM Reg DMReg

EI209 Chapter 4D.30Haojin Zhu, CSE, 2015 Delayed Branches  If the branch hardware has been moved to the ID stage, then we can eliminate all branch stalls with delayed branches which are defined as always executing the next sequential instruction after the branch instruction – the branch takes effect after that next instruction l MIPS compiler moves an instruction to immediately after the branch that is not affected by the branch (a safe instruction) thereby hiding the branch delay  With deeper pipelines, the branch delay grows requiring more than one delay slot l Delayed branches have lost popularity compared to more expensive but more flexible (dynamic) hardware branch prediction l Growth in available transistors has made hardware branch prediction relatively cheaper

EI209 Chapter 4D.31Haojin Zhu, CSE, 2015 Static Branch Prediction  Resolve branch hazards by assuming a given outcome and proceeding without waiting to see the actual branch outcome 1. Predict not taken – always predict branches will not be taken, continue to fetch from the sequential instruction stream, only when branch is taken does the pipeline stall l If taken, flush instructions after the branch (earlier in the pipeline) -in IF, ID, and EX stages if branch logic in MEM – three stalls -In IF and ID stages if branch logic in EX – two stalls -in IF stage if branch logic in ID – one stall l ensure that those flushed instructions haven’t changed the machine state – automatic in the MIPS pipeline since machine state changing operations are at the tail end of the pipeline (MemWrite (in MEM) or RegWrite (in WB)) l restart the pipeline at the branch destination

EI209 Chapter 4D.32Haojin Zhu, CSE, 2015 Flushing with Misprediction (Not Taken) 4 beq $1,$2,2 I n s t r. O r d e r ALU IM Reg DMReg ALU IM Reg DMReg 8 sub $4,$1,$5  To flush the IF stage instruction, assert IF.Flush to zero the instruction field of the IF/ID pipeline register (transforming it into a noop )

EI209 Chapter 4D.33Haojin Zhu, CSE, 2015 flush Flushing with Misprediction (Not Taken) 4 beq $1,$2,2 I n s t r. O r d e r ALU IM Reg DMReg 16 and $6,$1,$7 20 or r8,$1,$9 ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg 8 sub $4,$1,$5  To flush the IF stage instruction, assert IF.Flush to zero the instruction field of the IF/ID pipeline register (transforming it into a noop )

EI209 Chapter 4D.34Haojin Zhu, CSE, 2015 Static Branch Prediction, con’t  Resolve branch hazards by assuming a given outcome and proceeding 2. Predict taken – predict branches will always be taken l Predict taken always incurs one stall cycle (if branch destination hardware has been moved to the ID stage) l Is there a way to “cache” the address of the branch target instruction ??  As the branch penalty increases (for deeper pipelines), a simple static prediction scheme will hurt performance. With more hardware, it is possible to try to predict branch behavior dynamically during program execution 3. Dynamic branch prediction – predict branches at run- time using run-time information

EI209 Chapter 4D.35Haojin Zhu, CSE, 2015 Dynamic Branch Prediction  A branch prediction buffer (aka branch history table (BHT)) in the IF stage addressed by the lower bits of the PC, contains bit(s) passed to the ID stage through the IF/ID pipeline register that tells whether the branch was taken the last time it was execute l Prediction bit may predict incorrectly (may be a wrong prediction for this branch this iteration or may be from a different branch with the same low order PC bits) but the doesn’t affect correctness, just performance -Branch decision occurs in the ID stage after determining that the fetched instruction is a branch and checking the prediction bit(s) l If the prediction is wrong, flush the incorrect instruction(s) in pipeline, restart the pipeline with the right instruction, and invert the prediction bit(s) -A 4096 bit BHT varies from 1% misprediction (nasa7, tomcatv) to 18% (eqntott)

EI209 Chapter 4D.36Haojin Zhu, CSE, 2015 Branch Target Buffer  The BHT predicts when a branch is taken, but does not tell where its taken to! l A branch target buffer (BTB) in the IF stage caches the branch target address, but we also need to fetch the next sequential instruction. The prediction bit in IF/ID selects which “next” instruction will be loaded into IF/ID at the next clock edge -Would need a two read port instruction memory  If the prediction is correct, stalls can be avoided no matter which direction they go l Or the BTB can cache the branch taken instruction while the instruction memory is fetching the next sequential instruction Read Address Instruction Memory PC 0 BTB

EI209 Chapter 4D.37Haojin Zhu, CSE, bit Prediction Accuracy  A 1-bit predictor will be incorrect twice when not taken  For 10 times through the loop we have a 80% prediction accuracy for a branch that is taken 90% of the time l Assume predict_bit = 0 to start (indicating branch not taken) and loop control is at the bottom of the loop code 1. First time through the loop, the predictor mispredicts the branch since the branch is taken back to the top of the loop; invert prediction bit (predict_bit = 1) 2. As long as branch is taken (looping), prediction is correct 3. Exiting the loop, the predictor again mispredicts the branch since this time the branch is not taken falling out of the loop; invert prediction bit (predict_bit = 0) Loop: 1 st loop instr 2 nd loop instr. last loop instr bne $1,$2,Loop fall out instr

EI209 Chapter 4D.38Haojin Zhu, CSE, bit Predictors  A 2-bit scheme can give 90% accuracy since a prediction must be wrong twice before the prediction bit is changed Predict Taken Predict Not Taken Predict Taken Predict Not Taken Taken Not taken Taken Loop: 1 st loop instr 2 nd loop instr. last loop instr bne $1,$2,Loop fall out instr

EI209 Chapter 4D.39Haojin Zhu, CSE, bit Predictors  A 2-bit scheme can give 90% accuracy since a prediction must be wrong twice before the prediction bit is changed Predict Taken Predict Not Taken Predict Taken Predict Not Taken Taken Not taken Taken Loop: 1 st loop instr 2 nd loop instr. last loop instr bne $1,$2,Loop fall out instr wrong on loop fall out right 9 times right on 1 st iteration 0  BHT also stores the initial FSM state

EI209 Chapter 4D.40Haojin Zhu, CSE, 2015 Dealing with Exceptions  Exceptions (aka interrupts) are just another form of control hazard. Exceptions arise from l R-type arithmetic overflow l Trying to execute an undefined instruction l An I/O device request l An OS service request (e.g., a page fault, TLB exception) l A hardware malfunction  The pipeline has to stop executing the offending instruction in midstream, let all prior instructions complete, flush all following instructions, set a register to show the cause of the exception, save the address of the offending instruction, and then jump to a prearranged address (the address of the exception handler code)  The software (OS) looks at the cause of the exception and “deals” with it

EI209 Chapter 4D.41Haojin Zhu, CSE, 2015 Two Types of Exceptions  Interrupts – asynchronous to program execution l caused by external events l may be handled between instructions, so can let the instructions currently active in the pipeline complete before passing control to the OS interrupt handler l simply suspend and resume user program  Traps (Exception) – synchronous to program execution l caused by internal events l condition must be remedied by the trap handler for that instruction, so much stop the offending instruction midstream in the pipeline and pass control to the OS trap handler l the offending instruction may be retried (or simulated by the OS) and the program may continue or it may be aborted

EI209 Chapter 4D.42Haojin Zhu, CSE, 2015 Where in the Pipeline Exceptions Occur  Arithmetic overflow  Undefined instruction  TLB or page fault  I/O service request  Hardware malfunction ALU IM Reg DMReg Stage(s)?Synchronous?

EI209 Chapter 4D.43Haojin Zhu, CSE, 2015 Where in the Pipeline Exceptions Occur  Arithmetic overflow  Undefined instruction  TLB or page fault  I/O service request  Hardware malfunction ALU IM Reg DMReg Stage(s)?Synchronous? EX yes no  Beware that multiple exceptions can occur simultaneously in a single clock cycle ID IF, MEM any

EI209 Chapter 4D.44Haojin Zhu, CSE, 2015 Multiple Simultaneous Exceptions I n s t r. O r d e r Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg  Hardware sorts the exceptions so that the earliest instruction is the one interrupted first

EI209 Chapter 4D.45Haojin Zhu, CSE, 2015 Multiple Simultaneous Exceptions I n s t r. O r d e r Inst 0 Inst 1 Inst 2 Inst 4 Inst 3 ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg ALU IM Reg DMReg D$ page fault arithmetic overflow undefined instruction I$ page fault  Hardware sorts the exceptions so that the earliest instruction is the one interrupted first

EI209 Chapter 4D.46Haojin Zhu, CSE, 2015 Additions to MIPS to Handle Exceptions (Fig 6.42)  Cause register (records exceptions) – hardware to record in Cause the exceptions and a signal to control writes to it ( CauseWrite )  EPC register (records the addresses of the offending instructions) – hardware to record in EPC the address of the offending instruction and a signal to control writes to it ( EPCWrite ) l Exception software must match exception to instruction  A way to load the PC with the address of the exception handler l Expand the PC input mux where the new input is hardwired to the exception handler address - (e.g., hex for arithmetic overflow)  A way to flush offending instruction and the ones that follow it

EI209 Chapter 4D.47Haojin Zhu, CSE, 2015 Datapath with Controls for Exceptions hex Cause EPC EX.Flush 0 0 ID.Flush

EI209 Chapter 4D.48Haojin Zhu, CSE, 2015 Summary  All modern day processors use pipelining for performance (a CPI of 1 and fast a CC)  Pipeline clock rate limited by slowest pipeline stage – so designing a balanced pipeline is important  Must detect and resolve hazards l Structural hazards – resolved by designing the pipeline correctly l Data hazards -Stall (impacts CPI) -Forward (requires hardware support) l Control hazards – put the branch decision hardware in as early a stage in the pipeline as possible -Stall (impacts CPI) -Delay decision (requires compiler support) -Static and dynamic prediction (requires hardware support)  Pipelining complicates exception handling

EI209 Chapter 4D.49Haojin Zhu, CSE, 2015 Group Discussion into sum (int N) { int i, j, sum=0; for (i=0; i < N; i++) for (j=0; j <N; j++) sum=sum+1; return sum; } We choose 2-bit branch prediction and set the initial state is T*N. What is the prediction accuracy when N=10 or 100? What conclusion you can achieve from this example?

EI209 Chapter 4D.50Haojin Zhu, CSE, 2015 举例:双重循环的两位动态预测 into sum (int N) { int i, j, sum=0; for (i=0; i < N; i++) for (j=0; j <N; j++) sum=sum+1; return sum; } … Loop-i: beq $t1,$a0, exit-i # 若 ( i=N) 则跳出外循环 add $t2, $zero, $zero #j=0 Loop-j: beq $t2, $a0, exit-j # 若 (j=N) 则跳出内循环 addi $t2, $t2, 1 # j=j+1 addi $t0, $t0, 1 #sum=sum+1 j Loop-j exit-j: addi $t1, $t1, 1 # i=i +1 j Loop-i exit-i: … … BACK 外循环中的分支指令共执行 N+1 次, 内循环中的分支指令共执行 N×(N+1) 次。 预测位初始为 T*N ,外循环只有最后一次预测错误;跳出内循环时预测 位变为 01 ,再进入内循环时,第一次预测正确,只有最后一次预测错误 ,因此,总共有 N 次预测错误。 N 越大准确率越高! N=10, 分别 90.9% 和 90.9% N=100, 分别 99% 和 99%