Branch Prediction

BOOM Front-end

Fig. 6 The BOOM Front-end

This chapter discusses how BOOM predicts branches and then resolves these predictions.

BOOM uses two levels of branch prediction - a fast Next-Line Predictor (NLP) and a slower but more complex Backing Predictor (BPD) [1]. In this case, the NLP is a Branch Target Buffer and the BPD is a more complicated structure like a GShare predictor.

[1]Unfortunately, the terminology in the literature gets a bit muddled here in what to call different types and levels of branch predictor. Literature has references to different structures; “micro-BTB” versus “BTB”, “NLP” versus “BHT”, and “cache-line predictor” versus “overriding predictor”. Although the Rocket core calls its own predictor the “BTB”, BOOM refers to it as the Next-Line Predictor (NLP) , to denote that it is a combinational predictor that provides single-cycle predictions for fetching “the next line”, and the Rocket BTB encompasses far more complexity than just a “branch target buffer” structure. Likewise, the name Backing Predictor (BPD) was chosen to avoid being overly descriptive of the internal design (is it a simple BHT? Is it tagged? Does it override the NLP ?) while being accurate. If you have recommendations for better names, feel free to reach out!