Procedure Boundary Elimination for EPIC Compilers
Spyridon Triantafyllis, Manish Vachharajani, and David
I. August (Princeton University)
Traditional compilation frameworks compile using procedures as the
basic unit of compilation. While this approach has yielded good
results in the past it is a hindrance on modern EPIC machines. This is
because EPIC compilers need a large optimization scope in order to
produce quality code and extract sufficient ILP; procedure boundaries
limit this scope. To address this problem, researchers have proposed
interprocedural analysis and inlining. Interprocedural analysis
exposes more information for use in optimization and can be employed
extensively provided that compile time permits. Inlining not only
exposes more code to analysis, but allows callee code to be
specialized for a particular call site via optimization. Furthermore,
callee code can be scheduled with caller code, enhancing ILP.
Unfortunately aggressively inlining to exploit these benefits can
lead to instruction cache penalties due to code growth as well as
compile time slowdown.
In this paper we propose a novel compilation strategy called Procedure
Boundary Elimination (PBE). The PBE approach eliminates procedure
boundaries without causing any code growth and then employs targeted
code specialization to create more optimization opportunities, as
inlining did, but only for hot code limiting code growth. In this way,
PBE can expand the optimization scope in EPIC compilers to aid in
extracting ILP while avoiding the code size and instruction cache
penalties associated with inlining.