Wish Branches Combining Conditional Branching and Predication for Adaptive Predicated Execution

Predicated execution has been used to reduce the number of branch mispredictions by eliminating hard-to-predict branches. However, the additional instruction overhead and additional data dependencies due to predicated execution sometimes offset the performance advantage of having fewer misprediction...

Full description

Saved in:
Bibliographic Details
Published in38th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO'05) pp. 43 - 54
Main Authors Kim, Hyesoon, Mutlu, Onur, Stark, Jared, Patt, Yale N.
Format Conference Proceeding
LanguageEnglish
Published Washington, DC, USA IEEE Computer Society 12.11.2005
IEEE
SeriesACM Conferences
Subjects
Online AccessGet full text
ISBN9780769524405
0769524400
ISSN1072-4451
DOI10.1109/MICRO.2005.38

Cover

More Information
Summary:Predicated execution has been used to reduce the number of branch mispredictions by eliminating hard-to-predict branches. However, the additional instruction overhead and additional data dependencies due to predicated execution sometimes offset the performance advantage of having fewer mispredictions. We propose a mechanism in which the compiler generates code that can be executed either as predicated code or non-predicated code (i.e., code with normal conditional branches). The hardware decides whether the predicated code or the non-predicated code is executed based on a run-time confidence estimation of the branch's prediction. The code generated by the compiler is the same as predicated code, except the predicated conditional branches are NOT removed - they are left intact in the program code. These conditional branches are called wish branches. The goal of wish branches is to use predicated execution for hard-to-predict dynamic branches and branch prediction for easy-to-predict dynamic branches, thereby obtaining the best of both worlds. We also introduce a class of wish branches, called wish loops, which utilize predication to reduce the misprediction penalty for hard-to-predict backward (loop) branches. We describe the semantics, types, and operation of wish branches along with the software and hardware support required to generate and utilize them. Our results show that wish branches decrease the average execution time of a subset of SPEC INT 2000 benchmarks by 14.2% compared to traditional conditional branches and by 13.3% compared to the best-performing predicated code binary.
Bibliography:SourceType-Conference Papers & Proceedings-1
ObjectType-Conference Paper-1
content type line 25
ISBN:9780769524405
0769524400
ISSN:1072-4451
DOI:10.1109/MICRO.2005.38