Exposing Memory Access Regularities Using Object-Relative Memory Profiling [abstract] (ACM DL, PDF)
Qiang Wu, Artem Pyatakov, Alexey N. Spiridonov, Easwaran Raman, Douglas W. Clark, and David I. August
Proceedings of the Second International Symposium on Code
Generation and Optimization (CGO), March 2004.
Memory profiling is the process of characterizing a program's memory
behavior by observing and recording its response to specific input
sets. Relevant aspects of the program's memory behavior may then be
used to guide memory optimizations in an aggressively optimizing
compiler. In general, memory access behavior has eluded meaningful
characterization because of confounding artifacts from memory
allocators, linker data layout, and OS memory management. Since these
artifacts may change from run to run, memory access patterns may
appear different in each run even for the same input set. Worse,
regular memory access behavior such as linked list traversals appear
to have no structure. In this paper we present object-relative translation and
decomposition techniques to eliminate these artifacts and to expose
previously obscured memory access patterns. To demonstrate the
potential of these ideas, we implement two different memory profilers
targeted at different sets of applications. These profilers
outperform the existing ones in terms of profile size and useful
information per byte of data. The first profiler is a lossless
profiler, called WHOMP, which uses object-relativity to achieve a 22%
better compression than the previously best known scheme. The second
profiler, called LEAP, uses lossy compression to get highly compact
profiles while providing useful information to the targeted
applications. LEAP correctly characterizes the memory alias rates for
56% more instruction pairs than the previously best known scheme with
a practical running time.