This paper introduces a new architectural approach that supports
compilers-synthesized branch prediction. In compiler-synthesized
dynamic branch prediction, the compiler generates code sequences
that, when executed, digest relevant state information and execution
statistics into a condition bit, or predicate. The Hardware then
utilizes this information to make predictions. Two categories of
such architectures are proposed and evaluated. In Predicate Only
Prediction (POP), the hardware simply uses the condition generated
by the code sequence as a prediction. In Predicate Enhanced Prediction
(PEP), the hardware uses the generated condition to enhance the
accuracy of conventional branch prediction hardware.
The IMPACT compiler currently provides a minimal level of compiler
support for the proposed approach. Experiments based on current
predicated code show that the proposed predictors achieve better
performance than conventional branch predictors. Furthermore,
they enable future compiler techniques which have the potential to
achieve extremely high branch prediction accuracies. Several such
compiler techniques are proposed in this paper.