Tolerating Latency by Prefetching Java Objects

In recent years, processor speed has become increasingly faster than memory speed. One technique for improving memory performance is data prefetching which is successful in array-based codes but only now are researchers applying to pointer-based codes. In this paper, we evaluate a data prefetching technique, called greedy prefetching, for tolerating latency in Java programs. In greedy prefetching, when a loop or recursive method updates an object o, we prefetch objects to which o refers. We describe inter- and intraprocedural algorithms for computing objects to prefetch and we present preliminary results showing its effectiveness on a few, small Java programs. Prefetching improves performance, but there is significant room for further improvement.

[1]  Gurindar S. Sohi,et al.  Effective jump-pointer prefetching for linked data structures , 1999, ISCA.

[2]  James R. Larus,et al.  Cache-conscious structure definition , 1999, PLDI '99.

[3]  Anne Rogers,et al.  Software caching and computation migration in Olden , 1995, PPOPP '95.

[4]  T. Ozawa,et al.  Cache miss heuristics and preloading techniques for general-purpose programs , 1995, Proceedings of the 28th Annual International Symposium on Microarchitecture.

[5]  Ken Kennedy,et al.  Software prefetching , 1991, ASPLOS IV.

[6]  Michael Rodeh,et al.  Virtual Cache Line: A New Technique to Improve Cache Exploitation for Recursive Data Structures , 1999, CC.

[7]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.

[8]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[9]  Michael Wolfe,et al.  Beyond induction variables , 1992, PLDI '92.

[10]  James R. Larus,et al.  Using generational garbage collection to implement cache-conscious data placement , 1998, ISMM '98.

[11]  François Bodin,et al.  Improving cache behavior of dynamically allocated data structures , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[12]  Todd C. Mowry,et al.  Compiler-based prefetching for recursive data structures , 1996, ASPLOS VII.

[13]  Ken Kennedy,et al.  Compiler support for software prefetching , 1998 .

[14]  Anoop Gupta,et al.  Design and evaluation of a compiler algorithm for prefetching , 1992, ASPLOS V.

[15]  James R. Larus,et al.  Cache-conscious structure layout , 1999, PLDI '99.

[16]  Chandra Krintz,et al.  Cache-conscious data placement , 1998, ASPLOS VIII.

[17]  Sarita V. Adve,et al.  RSIM Reference Manual: Version 1.0 , 1997 .

[18]  David Bernstein,et al.  Compiler techniques for data prefetching on the PowerPC , 1995, PACT.