During the 1920s and 1930s, the world embraced a design style called "Art Deco." It is characterized by the seemingly contradictory notions of sophistication and streamlining (or simplification). Code optimization exemplifies these same diverse traits: sophisticated analyses, often using detailed profile information, are performed in an attempt to simplify a program's instruction sequences and streamline its execution.
The current separation of code analysis and profile gathering from program execution has allowed the compiler community to develop and employ relatively expensive analyses and profiling passes. I'll begin my talk with an overview of two machine-specific optimizations that we have developed at Harvard. A key aspect of these optimizations is that they each make use of temporal-profile information; a temporal profile provides more information about program execution than a traditional profile but is much less expensive to analyze and store than a full program trace. Though we can reduce program run-times by the use of these and other traditional optimizations, this very static approach to code optimization has faults, especially when one considers the future direction of computing.
In the spirit of the Art Deco movement, we are currently working toward a more unified approach to code optimization. This approach is an eclectic blend of compile-time and run-time optimization. In the second part of my talk, I will describe our current efforts to build a system for dynamic code optimization --- a project we call Deco. This work encompasses new efforts in predicting program behavior and in the development of fast algorithms to solve sophisticated optimization problems like register allocation.
Back to LESSLast modified: November 18, 1998