Abstract
Memory access in procedure boundaries has proven to
be one of the bottlenecks in modern architectures. While
compiler optimizations have addressed this problem,
many of these optimizations require heavy analyses on
the program code and data. This is the case, for
example, with inter-procedural optimizations for
procedure boundaries. In this work we present a novel
approach, in the form of four new light weight
optimizations, for optimizing procedure boundaries.
These new optimizations eliminate saves and restores of
callee-saved registers in frequently executed functions’
prologs and epilogs without the need for complicated
data structures such as control or data flow graphs. In
order to demonstrate their simplicity and efficiency, in
both time and space, we implemented them at post-link
level. The optimizations are guided by profile
information and the results obtained for SPECint95
benchmarks demonstrate their benefit
be one of the bottlenecks in modern architectures. While
compiler optimizations have addressed this problem,
many of these optimizations require heavy analyses on
the program code and data. This is the case, for
example, with inter-procedural optimizations for
procedure boundaries. In this work we present a novel
approach, in the form of four new light weight
optimizations, for optimizing procedure boundaries.
These new optimizations eliminate saves and restores of
callee-saved registers in frequently executed functions’
prologs and epilogs without the need for complicated
data structures such as control or data flow graphs. In
order to demonstrate their simplicity and efficiency, in
both time and space, we implemented them at post-link
level. The optimizations are guided by profile
information and the results obtained for SPECint95
benchmarks demonstrate their benefit
Original language | Undefined/Unknown |
---|---|
Title of host publication | м |
Subtitle of host publication | FDDO4 Workshop |
Number of pages | 12 |
State | Published - 2001 |
Externally published | Yes |