Stride prefetching by dynamically inspecting objects

  • Authors:
  • Tatsushi Inagaki;Tamiya Onodera;Hideaki Komatsu;Toshio Nakatani

  • Affiliations:
  • IBM Tokyo Research Laboratorym Shimotsuruma, Yamato-shi, Kanagawa-ken 242-8502, Japan;IBM Tokyo Research Laboratorym Shimotsuruma, Yamato-shi, Kanagawa-ken 242-8502, Japan;IBM Tokyo Research Laboratorym Shimotsuruma, Yamato-shi, Kanagawa-ken 242-8502, Japan;IBM Tokyo Research Laboratorym Shimotsuruma, Yamato-shi, Kanagawa-ken 242-8502, Japan

  • Venue:
  • PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software prefetching is a promising technique to hide cache miss latencies, but it remains challenging to effectively prefetch pointer-based data structures because obtaining the memory address to be prefetched requires pointer dereferences. The recently proposed stride prefetching overcomes this problem, but it only exploits inter-iteration stride patterns and relies on an off-line profiling method.We propose a new algorithm for stride prefetching which is intended for use in a dynamic compiler. We exploit both inter- and intra-iteration stride patterns, which we discover using an ultra-lightweight profiling technique, called object inspection. This is a kind of partial interpretation that only a dynamic compiler can perform. During the compilation of a method, the dynamic compiler gathers the profile information by partially interpreting the method using the actual values of parameters and causing no side effects.We evaluated an implementation of our prefetching algorithm in a production-level Java just-in time compiler. The results show that the algorithm achieved up to an 18.9% and 25.1% speedup in industry-standard benchmarks on the Pentium 4 and the Athlon MP, respectively, while it increased the compilation time by less than 3.0%.