Question:
correlating branch predictor uses the behavior of the most recent m executed branches to choose from 2m predictors, each of which is an nbit predictor. A two-level local predictor works in a similar fashion, but only keeps track of the past behavior of each individual branch to predict future behavior. There is a design trade-off involved with such predictors: Correlating predictors require little memory for history which allows them to maintain 2-bit predictors for a large number of individual branches (reducing the probability of branch instructions reusing the same predictor), while local predictors require substantially more memory to keep history and are thus limited to tracking a relatively small number of branch instructions. For this exercise, consider a (1,2) correlating predictor that can track four branches (requiring 16 bits) versus a (1,2) local predictor that can track two branches using the same amount of memory. For the following branch outcomes, provide each prediction, the table entry used to make the prediction, any updates to the table as a result of the prediction, and the final misprediction rate of each predictor. Assume that all branches up to this point have been taken. Initialize each predictor to the following:
Transcribed Image Text:
Correlating predictor Branch Prediction Entry Last outcome T with one misprediction т NT NT 1 т NT 3 NT т 4 5 NT NT with one misprediction 6. NT 3 NT Local predictor Entry Branch Last 2 outcomes (right is most recent) Prediction T,T T with one misprediction T,NT NT NT,T NT 3 NT т 4 T,T 5 T,NT T with one misprediction 6. NT,T NT NT,NT NT