A Comparative Analysis of Branch Prediction Schemes
Future Work
There are a number of ways that this study can be extended.
- First, a large number of parameters were not fully
explored here. These parameters include the sizes
of the branch prediction tables, number of address bits or
history bits used, the organization of the branch history
tables, and in the case of selective prediction scheme, the choice of
the two predictors. For example, we have mentioned that for some
programs the correlation between branches is very high such as
the integer programs, especially go from SPEC95int-beta,
and for some other programs it is not as high such as the floating
point programs. To work well in both cases, the predictor
should be able to adapt to a specific program's branch behavior.
It is a good idea to use a predictor that works well
for both highly correlated programs and less correlated
programs since for general-purpose applications the branch behavior
of different programs may vary dramatically.
- Second, other sources of information such as the target address
and the opcode of the branch instruction might be usefully added
to increase prediction accuracy. Some type of conditional branch
instructions are likely to have higher taken tendencies than others.
- Third, we observe that with increased branch buffer size,
it is beneficial to increase the history depth,
i.e. the number of bits used for global branch history.
However, branch history tables are often sparse when the number
of rows in a branch prediction table is large. It will be helpful
to have a way either to compress the branch history tables or to map
the branches more uniformly into the branch tables, such as using a
good hashing function, thus can potentially increase the size
of the branch buffer.
- Fourth, branch prediction accuracy is not an accurate metric. The time
to make a prediction should also be considered. Thus it would be interesting
do a study on the timing cost of each prediction scheme.
- Fifth, information from a compiler with profile support might be used
in combination with some of the dynamic predictors to yield higher
prediction accuracy.
- Finally, one of the design philosophy is that whether we should tune
the system performance to one category of programs or balance it for
more general cases. Current branch prediction research is closely
tied to popular benchmark programs and simplified environment
assumptions such as single process assumption. We have shown
the impacts of different application programs and operating
system. It would be interesting to further explore the branch
prediction accuracy impacts due to the interaction between
architecture and higher level computer system including the
operation system and application programs.
Project Home
|
Previous Section: Results Analysis
|
Next Section: Conclusion