Evaluating high-level language pointer-expressions can require a significant portion of the execution time and memory bandwidth in programs, especially for pointers with multiple memory accesses and address computations. Often such pointers repeatedly follow the same evaluation paths and return the same values. We present a micro-architecture technique that dynamically eliminates the execution of pointers based on results obtained from previous evaluations, without using prediction. We experiment with a benchmark set that includes continuous-speech recognition, MPEG-1 decoding, and SPECint95 ijpeg, li and go programs. Simulations of Digital Alpha 21164 microprocessor show that the eliminated pointers account for up to 11.3% of execution time, and 26% of data memory bandwidth of an entire program. Hence, the proposed microarchitecture provides substantial performance gains by significantly reducing the number of executed pointers.


The author's web site: nitzan@andrew.cmu.edu