Jinturkar, Sanjay, Department of Computer Science, University of Virginia
Martin, Worthy, Department of Computer Science, University of Virginia
Optimizing compilers capable of producing efficient code play an important role in improving the performance of computer systems. A comprehensive suite of code optimizations applied to unoptimized code can often yield a significant reduction in execution time. However, the ability of a compiler to apply code optimizations is often limited due to the unavailability or inaccuracy of compile-time information about the operands in a source program. In absence of requisite information, the compiler forgoes an opportunity to apply an optimization so that the semantics of the program are not jeopardized. This thesis proposes and analyses a set of code optimization techniques called data-specific optimizations, which use information available at program execution time. These techniques are practical to implement and provide substantial performance increase without any additional hardware. This thesis describes data-specific optimizations related to three areas 1) optimization to minimize control dependences (loop unrolling) 2) optimization to exploit memory bandwidth (memory-access coalescing) and 3) optimization to exploit instruction-level parallelism. The thesis shows that aggressive loop unrolling can improve the performance of programs by approximately 10 percent. It also shows that when loop unrolling is used to facilitate memory-access coalescing, the memory loads and stores in a program can be reduced by as much as 225%. Also, when loop unrolling is applied in conjunction with dynamic memory disambiguation, the instruction-level parallelism in loops can be increased by as much as 300 percent.
PHD (Doctor of Philosophy)
All rights reserved (no additional license for public reuse)