APT-GET: profile-guided timely software prefetching

Appeared in Proceedings of the Seventeenth European Conference on Computer Systems (EuroSys '22).


Prefetching which predicts future memory accesses and preloads them from main memory, is a widely-adopted technique to overcome the processor-memory performance gap. Unfortunately, hardware prefetchers implemented in today's processors cannot identify complex and irregular memory access patterns exhibited by modern data-driven applications and hence developers need to rely on software prefetching techniques. We investigate the challenges of enabling effective, automated software data prefetching. Our investigation reveals that the state-of-the-art compiler-based prefetching mechanism falls short in achieving high performance due to its static nature. Based on this insight, we design APT-GET, a novel profile-guided technique that ensures prefetch timeliness by leveraging dynamic execution time information. APT-GET leverages efficient hardware support such as Intel's Last Branch Record (LBR), for collecting application execution profiles with negligible overhead to characterize the execution time of loads. APT-GET then introduces a novel analytical model to find the optimal prefetch-distance and prefetch injection site based on the collected profile to enable timely prefetches. We study APT-GET in the context of 10 real-world applications and demonstrate that it achieves a speedup of up to 1.98× and of 1.30× on average. By ensuring prefetch timeliness, APT-GET improves the performance by 1.25× over the state-of-the-art software data prefetching mechanism.

Publication date:
March 2022

Saba Jamilan
Tanvir Ahmed Khan
Grant Ayers
Baris Kasikci
Heiner Litz


Available media

Full paper text: PDF

Bibtex entry

  author       = {Saba Jamilan and Tanvir Ahmed Khan and Grant Ayers and Baris Kasikci and Heiner Litz},
  title        = {{APT}-{GET}: profile-guided timely software prefetching},
  booktitle    = {Proceedings of the Seventeenth European Conference on Computer Systems (EuroSys '22)},
  pages        = {747–764},
  month        = mar,
  year         = {2022},
Last modified 21 Feb 2023