2002 · 14 citations · 14 references
EngineeringComputer EngineeringComputer ScienceComputer ArchitectureData StructuresParallel ComputingData ParallelismMemory HierarchyMemory Hierarchy DesignCache PrefetchingLatency ToleranceMemory Access LatencyMemory LatencyMemory Latency ReductionPrefetchingPrefetching MechanismsSpeculative Prefetching
Presents multi-chain prefetching, a technique that utilizes offline analysis and a hardware prefetch engine to prefetch multiple independent pointer chains simultaneously, thus exploiting inter-chain memory parallelism for the purpose of memory latency tolerance. This paper makes three contributions. First, we introduce a scheduling algorithm that identifies independent pointer chains in pointer-chasing codes and computes a prefetch schedule that overlaps serialized cache misses across separate chains. Our analysis focuses an static traversals. We also propose using speculation to identify independent pointer chains in dynamic traversals. Second, we present the design of a prefetch engine that traverses pointer-based data structures and overlaps multiple pointer chains according to our scheduling algorithm. Finally, we conduct an experimental evaluation of multi-chain prefetching and compare its performance against two existing techniques: jump pointer prefetching and prefetch arrays. Our results show that multi-chain prefetching improves the execution time by 40% across six pointer-chasing kernels from the Olden benchmark suite and by 8% across four SPECInt CPU2000 benchmarks. Multi-chain prefetching also outperforms jump pointer prefetching and prefetch arrays by 28% on Olden, and by 12% on SPECInt. Furthermore, speculation can enable multi-chain prefetching for some dynamic traversal codes, but our technique loses its effectiveness when the pointer-chain traversal order is unpredictable. Finally, we also show that combining multi-chain prefetching with prefetch arrays can potentially provide higher performance than either technique alone.
14
David Callahan, Ken Kennedy, Allan Porterfield · 1991 · 489 citations
Compiler-based prefetching for recursive data structures
Chi-Keung Luk, Todd C. Mowry · 1996 · 399 citations · Full text