When Prefetching Works, When It Doesn't, and Why
In emerging and future high-end processor systems, tolerating increasing cache miss latency and properly managing memory bandwidth will be critical to achieving high performance. Prefetching, in both hardware and software, is among the authors' most important available techniques for doing so; yet, their claim that prefetching is perhaps also the least well-understood. Thus, the goal of this paper is to develop a novel, foundational understanding of both the benefits and limitations of hardware and software prefetching. Their study includes: source code-level analysis, to help in understanding the practical strengths and weaknesses of compiler- and software-based prefetching; a study of the synergistic and antagonistic effects between software and hardware prefetching; and an evaluation of hardware prefetching training policies in the presence of software prefetching requests.