AMC: Access to Miss Correlation Prefetcher for Evolving Graph Analytics
<|reference_start|>AMC: Access to Miss Correlation Prefetcher for Evolving Graph Analytics: Modern memory hierarchies work well with applications that have good spatial locality. Evolving (dynamic) graphs are important applications widely used to model graphs and networks with edge and vertex changes. They exhibit irregular memory access patterns and suffer from a high miss ratio and long miss penalty. Prefetching can be employed to predict and fetch future demand misses. However, current hardware prefetchers can not efficiently predict for applications with irregular memory accesses. In evolving graph applications, vertices that do not change during graph changes exhibit the same access correlation patterns. Current temporal prefetchers use one-to-one or one-to-many correlation to exploit these patterns. Similar patterns are recorded in the same entry, which causes aliasing and can lead to poor prefetch accuracy and coverage. This work proposes a software-assisted hardware prefetcher for evolving graphs. The key idea is to record the correlations between a sequence of vertex accesses and the following misses and then prefetch when the same vertex access sequence occurs in the future. The proposed Access-to-Miss Correlation (AMC) prefetcher provides a lightweight programming interface to identify the data structures of interest and sets the iteration boundary to update the correlation table. For the evaluated applications, AMC achieves a geomean speedup of 1.5x as compared to the best-performing prefetcher in prior work (VLDP). AMC can achieve an average of 62% accuracy and coverage, whereas VLDP has an accuracy of 31% and coverage of 23%.<|reference_end|>
@article{singh2024amc:,
    title={AMC: Access to Miss Correlation Prefetcher for Evolving Graph Analytics},
    author={Abhishek Singh, Christian Schulte, Xiaochen Guo},
    journal={arXiv preprint arXiv:2406.14008},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.14008},
    primaryClass={cs.AR}
}