APT-GET: profile-guided timely software prefetching
Appeared in Proceedings of the Seventeenth European Conference on Computer Systems (EuroSys '22).
Abstract
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
Authors:
Saba Jamilan
Tanvir Ahmed Khan
Grant Ayers
Baris Kasikci
Heiner Litz
Projects:
Available media
Full paper text: PDF
Bibtex entry
@inproceedings{apt-get-jamilan22, 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}, }