Accession Number : ADA326916

Title :   Effects of Loop Unrolling and Loop Fusion on Register Pressure and Code Performance.

Descriptive Note : Final rept. Nov 96-Jan 97,

Corporate Author : ARMY RESEARCH LAB ABERDEEN PROVING GROUND MD

Personal Author(s) : Shires, Dale

PDF Url : ADA326916

Report Date : JUN 1997

Pagination or Media Count : 34

Abstract : Many of today's high-performance computer processors are super-scalar. They can dispatch multiple instructions per cycle and, hence, provide what is commonly referred to as instruction-level parallelism. This super-scalar capability, combined with software pipelining, can increase processor throughput dramatically. Achieving maximum throughput, however, is nontrivial. Compilers must engage in aggressive optimization techniques, such as loop unrolling, speculative code motion, etc., to structure code to take full advantage of the underlying computer architecture. The phase-ordering implications of these optimizations are not well understood and are the subject of continuing research. Of particular interest are optimizations that enhance instruction-level parallelism. Two of these are loop unrolling and loop fusion. These are source-level optimizations that can be performed by either the programmer or the compiler. These optimizations have dramatic effects on the compiler's instruction scheduler. Performed too aggressively, these optimizations can increase register pressure and result in costly memory references. This paper details experiments performed to measure the effects of these source-level code transformations and how they influenced register pressure and code performance.

Descriptors :   *PARALLEL PROCESSING, *COMPILERS, ALGORITHMS, SOFTWARE ENGINEERING, OPTIMIZATION, DATA MANAGEMENT, DISTRIBUTED DATA PROCESSING, COMPUTER COMMUNICATIONS, MULTIPROCESSORS, SYSTEMS ANALYSIS, EXECUTIVE ROUTINES, C PROGRAMMING LANGUAGE.

Subject Categories : Computer Programming and Software

Distribution Statement : APPROVED FOR PUBLIC RELEASE