Skip to main content
eScholarship
Open Access Publications from the University of California

Automated record layout for dynamic data structures

Abstract

As the gap between processor power and memory speed continues to widen, cache performance of modern processors is becoming increasingly important for program performance. Lately, compilers have addressed this problem by prefetching data ahead of time, by changing the memory layout of program data, or by changing the control structure of a program. While most of these techniques work well for array-based numeric programs, their potential for component-based and object-oriented applications that use dynamic pointer-based data structures is fairly limited.

In this paper, we present and evaluate a simple, yet efficient optimization technique that increases cache performance for pointer-based applications. Based on temporal profiling data, our algorithm reorders and aligns individual record fields in dynamically allocated objects to increase spatial and temporal locality. It also takes advantage of modern hardware features such as data cache line-fill buffer forwarding.

Our results demonstrate that the proposed algorithm significantly increases performance of pointer-based applications. It increases program speed by as much as 15% and reduces data cache miss rates by up to 30%.

Main Content
For improved accessibility of PDF content, download the file to your device.
Current View