My research was a concerned with gaining an understanding of some program constructs which
create "hard to predict" branches, and figuring out how to use data-value
information to predict branches. I started with a low-level investigation of the
source-level constructs corresponding to the static branches with the most misses. Next, I
investigated the predictability of register values leading up to these branches. I
constructed several predictors for some particular branches in an effort to improve accuracy by
utilizing available program information.
Data-values have the potential to help branch prediction accuracies a great deal - even
more than 20% accuracy improvement over gshare for particular branches - though work
remains to be done to determine an implementable, efficient method for exploiting this
potential.
This research was meant to provide
some basic insight into the problem so that further, more complete, studies could be
done. The purpose of my research was not to be a comprehensive study, but instead a
time-effective investigation of possible heuristics to aid branch-prediction.
Finally, I contributed to a study of an implementable scheme
which used data-values to aid branch prediction.