高级计算机体系结构设计及其在数据中心和云计算的应用Multiple Branch PredictionPCALI-InoLSBsofPCsizeof($-line)Target PredDir PredLSBs of PCNNNTaddrOladdraddr2addr3Scan forst"T"0
高级计算机体系结构设计及其在数据中心和云计算的应用 Multiple Branch Prediction Target Pred Dir Pred L1-I LSBs of PC sizeof($-line) no LSBs of PC PC Target Pred Dir Pred addr0 addr1 addr2 addr3 N N N T Scan for 1st “T” 0 1 + LSBs of PC sizeof($-line)
高级计算机体系结构设计及其在数据中心和云计算的应用Direction vs. Target PredictionDirection:0or1Target:32-or64-bit valueTurns out targets are generally easier to predict Don't need to predict N-t target- T target doesn't usually change: Only need to predict taken-branch targetsTargetPredPrediction is really just a “"cache"-BranchTargetBuffer (BTB)sizeof(inst)PC
高级计算机体系结构设计及其在数据中心和云计算的应用 Direction vs. Target Prediction • Direction: 0 or 1 • Target: 32- or 64-bit value • Turns out targets are generally easier to predict – Don’t need to predict N-t target – T target doesn’t usually change • Only need to predict taken-branch targets • Prediction is really just a “cache” – Branch Target Buffer (BTB) Target Pred + sizeof(inst) PC
高级计算机体系结构设计及其在数据中心和云计算的应用Branch Target Buffer (BTB)BranchInstructionBranch PCAddress (Tag)BIABTABranchTargetAddressValid Bit+NextFetchPC+Hit?
高级计算机体系结构设计及其在数据中心和云计算的应用 Branch Target Buffer (BTB) V BIA BTA Branch PC Branch Target Branch Instruction Address (Tag) Address = Valid Bit Hit? Next Fetch PC
高级计算机体系结构设计及其在数据中心和云计算的应用Set-Associative BTBPCVVVtagtagtargettagtargettargetNextPC
高级计算机体系结构设计及其在数据中心和云计算的应用 Set-Associative BTB V tag target PC V tag target V tag target = = = Next PC
高级计算机体系结构设计及其在数据中心和云计算的应用MakingBTBsCheaperBranch prediction is permitted to be wrong- Processor has ways to detect mispredictions- Correctness of execution is alwayspreserved-PerformancemaybeaffectedCan tune BTB accuracybased on cost
高级计算机体系结构设计及其在数据中心和云计算的应用 Making BTBs Cheaper • Branch prediction is permitted to be wrong – Processor has ways to detect mispredictions – Correctness of execution is always preserved – Performance may be affected Can tune BTB accuracy based on cost