|
|
Persistent Code Caching: Exploiting Code Reuse Across Executions and Applications
Vijay Janapa Reddi, Robert Cohn, Michael Smith, Daniel A. Connors.
Proceedings of the 5th International Conference on Code Generation and Optimization (CGO).
March,
2007.
|
Run-time compilation systems are challenged with the task of translating a
program's instruction stream while maintaining low overhead. While software
managed code caches are utilized to amortize translation costs, they are
ineffective for programs with short run times, or large amounts of cold code.
Such program characteristics are prevalent in real-life computing environments,
ranging from Graphical User Interface (GUI) programs to large-scale
applications such as database management systems. Persistent code
caching} addresses these issues and is evaluated in an
industry-strength dynamic binary instrumentation system -- Pin. The proposed
approach improves the intra-execution model of code reuse by storing
and reusing translations across executions, thereby achieving
inter-execution persistence. Dynamically linked programs leverage
inter-application persistence by using persistent translations of
library code generated by other programs. New translations discovered across
executions are automatically accumulated into the persistent code caches,
thereby improving performance over time. Inter-execution persistence improves
the performance of GUI applications by nearly 90%, while inter-application persistence achieves a 59% improvement. In more specialized
uses, the SPEC2K INT benchmark suite experiences a 26% improvement
under dynamic binary instrumentation. Finally, a 400% speedup is achieved in
translating the Oracle database in a regression testing environment.
|
| [ PDF ] |
|