Memory latency, the time required to retrieve a specified datum from memory, is currently the largest limitation for high-performance
computers. Memory prefetching attempts to reduce the memory latency bymoving data from memory closer to the processor. Different
prefetching mechanisms attempt to model access patterns that may be used by programs. For example, a stride or stream prefetcher
assumes that programs will access memory in a linear pattern. In applications that utilize a large number of dynamically allocated
objects, the memory access patterns can become very irregular, and difficult to model.
This paper proposes content-based prefetching, a method of data prefetching that attempts to overcome the problems introduced by the irregular memory access patterns seen
in pointer-intensive applications, thus allowing prefetches of “pointer chasing” references. Content-based prefetching works
by examining the content of data as it is moved from memory to the caches. Data values that are likely to be addresses are
then translated and pushed to a prefetch buffer. Content-based prefetching has the capability to prefetch sparse data structures,
including graphs, lists and trees.
In this paper we examine the issues that are critical to the performance and practicality of content-base prefetching. The
potential of the content-aware prediction mechanism is demonstrated and compared to traditional stride prefetching techniques.