Stream chaining: exploiting multiple levels of correlation in data prefetching

Pedro Diaz, Marcelo Cintra

Research output: Chapter in Book/Report/Conference proceedingConference contribution


Data prefetching has long been an important technique to amortize the effects of the memory wall, and is likely to remain so in the current era of multi-core systems. Most prefetchers operate by identifying patterns and correlations in the miss address stream. Separating streams according to the memory access instruction that generates the misses is an effective way of filtering out spurious addresses from predictable streams. On the other hand, by localizing streams based on the memory access instructions, such prefetchers both lose the complete time sequence information of misses and can only issue prefetches for a single memory access instruction at a time.

This paper proposes a novel class of prefetchers based on the idea of linking various localized streams into predictable chains of missing memory access instructions such that the prefetcher can issue prefetches along multiple streams. In this way the prefetcher is not limited to prefetching deeply for a single missing memory access instruction but can instead adaptively prefetch for other memory access instructions closer in time.

Experimental results show that the proposed prefetcher consistently achieves better performance than a state-of-the-art prefetcher -- 10% on average, being only outperformed in very few cases and then by only 2%, and outperforming that prefetcher by as much as 55% -- while consuming the same amount of memory bandwidth.
Original languageEnglish
Title of host publicationProceedings of the 36th annual international symposium on Computer architecture
Place of PublicationNew York, NY, USA
Number of pages12
ISBN (Print)978-1-60558-526-0
Publication statusPublished - 2009


  • data prefetching


Dive into the research topics of 'Stream chaining: exploiting multiple levels of correlation in data prefetching'. Together they form a unique fingerprint.

Cite this