A Framework for Balancing Control Flow and Predication [abstract] (IEEE Xplore, PDF, PostScript)
David I. August, Wen-mei W. Hwu, and Scott A. Mahlke
Proceedings of the 30th International Symposium on
Microarchitecture (MICRO), December 1997.
Selected as an "outstanding paper" for inclusion
in a special issue of the International Journal of Parallel
Programming (IJPP) by the Program Committee.
Predicated execution is a promising architectural feature
for exploiting instruction-level parallelism in the presence of
control flow. Compiling for predicated execution involves converting
program control flow into conditional, or predicated,
instructions. This process is known as if-conversion. In order to
effectively apply if-conversion, one must address two major issues:
what should be if-converted and when the if-conversion should be
applied. A compiler's use of predication as a representation is most
effective when large amounts of code are if-converted and
if-conversion is performed early in the compilation procedure. On the
other hand, the final code generated for a processor with predicated
execution requires a delicated balance between control flow and
predication to achieve efficient execution. The appropriate balance is
tightly coupled with scheduling decisions and detailed processor
characteristics. This paper presents an effective compilation
framework that allows the compiler to maximize the benefits of
predication as a compiler representation while delaying the final
balancing of control flow and predication to schedule
time.