1 / 21

Dynamic Branch Prediction

Dynamic Branch Prediction. Why does prediction work? Underlying algorithm has regularities Data that is being operated on has regularities Instruction sequence has redundancies that are artifacts of way that humans/compilers think about problems

alima
Download Presentation

Dynamic Branch Prediction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dynamic Branch Prediction • Why does prediction work? • Underlying algorithm has regularities • Data that is being operated on has regularities • Instruction sequence has redundancies that are artifacts of way that humans/compilers think about problems • Is dynamic branch prediction better than static branch prediction? • Seems to be • There are a small number of important branches in programs which have dynamic behavior Lec4 ILP

  2. Dynamic Branch Prediction • Performance = ƒ(accuracy, cost of misprediction) • Branch History Table: Lower bits of PC address index table of 1-bit values • Says whether or not branch taken last time • No address check • Problem: in a loop, 1-bit BHT will cause two mispredictions (avg is 9 iteratios before exit): • End of loop case, when it exits instead of looping as before • First time through loop on next time through code, when it predicts exit instead of looping Lec4 ILP

  3. T Predict Taken Predict Taken T NT NT NT Predict Not Taken Predict Not Taken T T NT Dynamic Branch Prediction • Solution: 2-bit scheme where change prediction only if get misprediction twice • Red: stop, not taken • Green: go, taken • Adds hysteresis to decision making process Lec4 ILP

  4. BHT Accuracy • Mispredict because either: • Wrong guess for that branch • Got branch history of wrong branch when index the table • 4096 entry table: Integer Lec4 ILP Floating Point

  5. Correlating Branch Predictor • It may possible to improve the accuracy if we look at the behavior of other branches. if (aa == 2) aa = 0; if (bb == 0) bb = 0; if (aa != bb) The behavior of b3 is correlated with the behavior of b1 and b2.

  6. Correlating Predictors • Two-level predictors if (d == 0) d = 1; if (d == 1)

  7. 1-bit Predictor (Initialized to NT)

  8. (1,1) Predictor • Every branch has two separate prediction bits. • First bit: the prediction if the last branch in the program is not taken. • Second bit: the prediction if the last branch in the program is taken. • Write the pair of prediction bits together.

  9. Combinations & Meaning

  10. (1,1) Predictor Example Initial prediction bits are nt/nt Initial last branch is nt Used prediction bit is colored with red

  11. Correlated Branch Prediction Idea: record m most recently executed branches as taken or not taken, and use that pattern to select the proper n-bit branch history table In general, (m,n) predictor means record last m branches to select between 2m history tables, each with n-bit counters Thus, old 2-bit BHT is a (0,2) predictor Global Branch History: m-bit shift register keeping T/NT status of last m branches. Each entry in table has mn-bit predictors. 12 10/15/2014 Lec4 ILP

  12. Correlating Branches (2,2) predictor – Behavior of recent branches selects between four predictions of next branch, updating just that prediction Branch address 4 2-bits per branch predictor Prediction 2-bit global branch history Lec4 ILP

  13. Accuracy of Different Schemes 20% 4096 Entries 2-bit BHT Unlimited Entries 2-bit BHT 1024 Entries (2,2) BHT 18% 16% 14% 12% 11% Frequency of Mispredictions 10% 8% 6% 6% 6% 6% 5% 5% 4% 4% 2% 1% 1% 0% 0% nasa7 matrix300 tomcatv doducd spice fpppp gcc expresso eqntott li 4,096 entries: 2-bits per entry Unlimited entries: 2-bits/entry 1,024 entries (2,2) Lec4 ILP

  14. Tournament Predictors • Multilevel branch predictor • Use n-bit saturating counter to choose between predictors • Usual choice between global and local predictors Lec4 ILP

  15. Tournament Predictors Tournament predictor using, say, 4K 2-bit counters indexed by local branch address. Chooses between: • Global predictor • 4K entries index by history of last 12 branches (212 = 4K) • Each entry is a standard 2-bit predictor • Local predictor • Local history table: 1024 10-bit entries recording last 10 branches, index by branch address • The pattern of the last 10 occurrences of that particular branch used to index table of 1K entries with 3-bit saturating counters Lec4 ILP

  16. Comparing Predictors • Advantage of tournament predictor is ability to select the right predictor for a particular branch • Particularly crucial for integer benchmarks • A typical tournament predictor will select the global predictor almost 40% of the time for the SPEC integer benchmarks and less than 15% of the time for the SPEC FP benchmarks 2-bit BHT SPEC89 Lec4 ILP

  17. Pentium 4 Misprediction Rate (per 1000 instructions, not per branch) 6% misprediction rate per branch SPECint (19% of INT instructions are branch) 2% misprediction rate per branch SPECfp(5% of FP instructions are branch) SPECint2000 SPECfp2000 Lec4 ILP

  18. Branch Target Buffers (BTB) Branch target calculation is costly and stalls the instruction fetch. BTB stores PCs the same way as caches The PC of a branch is sent to the BTB When a match is found the corresponding Predicted PC is returned If the branch was predicted taken, instruction fetch continues at the returned predicted PC

  19. Branch PC Predicted PC Branch Target Buffers PC of instruction FETCH Yes: inst is branch, Next PC = predicted PC =? Extra Prediction state bits No: proceed normally (Next PC = PC+4)

  20. Dynamic Branch Prediction Summary • Prediction becoming important part of execution • Branch History Table: 2 bits for loop accuracy • Correlation: Recently executed branches correlated with next branch • Either different branches (GA) • Or different executions of same branches (PA) • Tournament predictors take insight to next level, by using multiple predictors • usually one based on global information and one based on local information, and combining them with a selector • In 2006, tournament predictors using  30K bits are in processors like the Power5 and Pentium 4 • Branch Target Buffer: include branch address & prediction Lec4 ILP

More Related