Litcius/Paper detail

RPG <sup>2</sup> : Robust Profile-Guided Runtime Prefetch Generation

Yuxuan Zhang, Nathan Sobotka, S. Park, Saba Jamilan, Tanvir Ahmed Khan, Baris Kasikci, Gilles Pokam, Heiner Litz, Joseph Devietti

202410 citationsDOI

Abstract

Data cache prefetching is a well-established optimization to overcome the limits of the cache hierarchy and keep the processor pipeline fed with data. In principle, accurate, well-timed prefetches can sidestep the majority of cache misses and dramatically improve performance. In practice, however, it is challenging to identify which data to prefetch and when to do so. In particular, data can be easily requested too early, causing eviction of useful data from the cache, or requested too late, failing to avoid cache misses. Competition for limited off-chip memory bandwidth must also be balanced between prefetches and a program's regular "demand" accesses. Due to these challenges, prefetching can both help and hurt performance, and the outcome can depend on program structure, decisions about what to prefetch and when to do it, and, as we demonstrate in a series of experiments, program input, processor microarchitecture, and their interaction as well.

Topics & Concepts

Instruction prefetchComputer scienceCacheParallel computingCache pollutionMemory hierarchySmart CacheCache algorithmsCPU cachePipeline (software)MicroarchitectureCache invalidationMemory bandwidthOperating systemParallel Computing and Optimization TechniquesAdvanced Data Storage TechnologiesDistributed systems and fault tolerance