Control Flow driven Code Hoisting at the Source Code Level

This paper presents a novel source code optimization technique called advanced code hoisting. It aims at moving portions of code from inner loops to outer ones. In contrast to existing code motion techniques, this is done under consideration of control flow aspects. Depending on the conditions of if -statements, moving an expression can lead to an increased number of executions of this expression. This paper contains formal descriptions of the polyhedral models used for control flow analysis so as to suppress a code motion in such a situation. Due to the inherent portability of source code transformations, a very detailed benchmarking using 8 different processors was performed. The application of our implemented techniques to real-life multimedia benchmarks leads to average speed-ups of 25.5%–52% and energy savings of 33.4%–74.5%. Furthermore, advanced code hoisting leads to improved pipeline and cache behavior and smaller code sizes.

[1]  Vincent Loechner,et al.  Parametric Analysis of Polyhedral Iteration Spaces , 1996, Proceedings of International Conference on Application Specific Systems, Architectures and Processors: ASAP '96.

[2]  Heiko Falk,et al.  Combined Data Partitioning and Loop Nest Splitting for Energy Consumption Minimization , 2004, SCOPES.

[3]  Vincent Loechner,et al.  Precise Data Locality Optimization of Nested Loops , 2004, The Journal of Supercomputing.

[4]  Peter Marwedel,et al.  An Accurate and Fine Grain Instruction-Level Energy Model Supporting Software Optimizations , 2007 .

[5]  Doran Wilde,et al.  A LIBRARY FOR DOING POLYHEDRAL OPERATIONS , 2000 .

[6]  Rajiv Gupta,et al.  Path profile guided partial redundancy elimination using speculation , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[7]  Jingling Xue,et al.  Optimal and efficient speculation-based partial redundancy elimination , 2003, International Symposium on Code Generation and Optimization, 2003. CGO 2003..

[8]  Peter Marwedel,et al.  Source Code Optimization Techniques for Data Flow Dominated Embedded Software , 2004, Springer US.

[9]  Erik Brockmeyer,et al.  Data Access and Storage Management for Embedded Programmable Processors , 2002, Springer US.

[10]  Miss A.O. Penney (b) , 1974, The New Yale Book of Quotations.

[11]  Marc E. Pfetsch,et al.  Some Algorithmic Problems in Polytope Theory , 2003, Algebra, Geometry, and Software Systems.

[12]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[13]  Tsuyoshi Murata,et al.  {m , 1934, ACML.

[14]  Vincent Loechner PolyLib: A Library for Manipulating Parameterized Polyhedra , 1999 .

[15]  R. N. Horspool,et al.  Partial redundancy elimination driven by a cost-benefit analysis , 1997, Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering.

[16]  Hugo De Man,et al.  Memory Size Reduction Through Storage Order Optimization for Embedded Parallel Multimedia Applications , 1997, Parallel Comput..

[17]  Steven W. K. Tjiang,et al.  An overview of the suif compiler system , 1990 .

[18]  M. Bister,et al.  Automated segmentation of cardiac MR images , 1989, [1989] Proceedings. Computers in Cardiology.

[19]  Danna Zhou,et al.  d. , 1840, Microbial pathogenesis.

[20]  Francky Catthoor,et al.  Analysis of high-level address code transformations for programmable processors , 2000, DATE '00.

[21]  P. Marwedel,et al.  Control flow driven splitting of loop nests at the source code level , 2003, 2003 Design, Automation and Test in Europe Conference and Exhibition.

[22]  Hugo De Man,et al.  Formalized methodology for data reuse: exploration for low-power hierarchical memory mappings , 1998, IEEE Trans. Very Large Scale Integr. Syst..

[23]  David F. Bacon,et al.  Compiler transformations for high-performance computing , 1994, CSUR.