Accelerating object-oriented applications using method lookup caches and register windowing
Architectural support for accelerating applications written in alternate programming paradigms have been well explored in the past. We focus on architectural support for object-oriented languages. We first describe the various runtime structures required by a typical implementation of an object-oriented language and identify areas that can benefit from dedicated architectural support. The ability to quickly bind a logical reference to a method and to quickly allocate a context for the invoked method is critical to the performance of dynamically bound object-oriented applications. In this paper we examine how a method lookup cache (MLC) and a register windowing mechanism can be easily incorporated in a contemporary scalar pipeline (the "base machine") to speed up method binding and context allocation. Our study departs from previous studies along similar lines in its use of a more contemporary pipeline and the consideration of efficient pipelining with the inclusion of these artifacts for acceleration. A detailed register level simulation of the proposed scheme, for a range of parameters for the MLC and the register windowing mechanism, driven by a set of fairly intensive object-oriented applications was done. The simulation results indicate that a relatively small method lookup cache with only 64 or 128 entries reduces the average execution time of the applications by about 50%. The inclusion of a register windowing mechanism with four register windows in the register file also accelerates method invocation as expected. The use of register windowing without a MLC results in a 72% reduction in the execution time with respect to the base machine. Together, the register windowing and the MLC, results in the reduction of execution time by 76%-87% with respect to the base machine for the programs we have used. (C) 1999 Elsevier Science B.V. All rights reserved.
method lookup caches register windowing pipelining dynamic binding