[177019] |
Title: Control Flow Optimization by Loop Nest Splitting at the Source Code Level. |
Written by: Heiko Falk |
in: October (2002). |
Volume: Number: (#773), |
on pages: |
Chapter: |
Editor: |
Publisher: |
Series: 20021018-report-773-falk.pdf |
Address: Dortmund / Germany |
Edition: |
ISBN: |
how published: 02-85 Falk02 Dortmund |
Organization: |
School: University of Dortmund |
Institution: Faculty of Computer Science |
Type: Technical Report |
DOI: |
URL: |
ARXIVID: |
PMID: |
Note: hfalk, ESD
Abstract: In recent years, the application of optimization techniques at the level of program source codes has increasingly attracted interest due to the high effectiveness and the inherent retargetability of such approaches. In this report, a novel source code transformation technique for control flow optimization called loop nest splitting is presented. The goal of this optimization is to reduce runtimes and energy consumption by minimizing the number of if-statements executed in loop nests of typical embedded multimedia applications. Complementary to already known optimizations in this area, we explicitly focus on the optimization of loop-variant if-statements. The analysis techniques required for performing loop nest splitting are illustrated in detail. They base on precise mathematic models combined with genetic algorithms. The analysis is done statically at compile time and does not rely on profiling.<br /> For a detailed evaluation of the benefits of loop nest splitting, the effects of our optimization with respect to instruction pipeline and cache behavior, runtimes, energy consumption and code sizes are shown. The application of our implemented tools for loop nest splitting to three real-life multimedia benchmarks leads to average reductions of pipeline stalls between 19.7% and 64.8% and an average decrease of instruction cache misses between 8.9% and 45.3%. Measurements on a variety of different programmable processors show average speed-ups between 23.6% and 62.1% of the benchmarks, whereas reductions of energy dissipation between 19.2% and 57.6% are observed.