language: en

Dynamic Procedure Placement Through Cache Windowing

Carleton Miyamoto
CS 252/265 Spring 98
University of California, Berkeley

Abstract The relative slowdown of DRAMs with respect to processor speeds and the widespread use of SMP machines have bolstered the reliance on processor caches to provide good performance. As a result, optimizing machines and software for caches have recently received more attention. In addition, with the popularity of extensible computing, which includes the object oriented programming style, shared libraries, and Java based computing, creating effective compilers has become more challenging, with an increased reliance on more dynamic techniques, such as profiling and runtime code generation. This paper proposes a dynamic optimization method called cache windowing to reduce conflict misses in L1 instruction caches. Using a combination of hardware and software support, cache windowing integrates a RollCache (a direct-mapped cache enhanced to support dynamic cache configuration) and a software implemented FIFO caching policy. Together, both allow a program to reposition procedures, dynamically and efficiently, to eliminate cache conflicts. Experiments show that this type of caching scheme can achieve miss rates competitive to a 2-way set associative cache for various programs. Currently, a high software overhead exists to support a software caching policy, though different compiler optimizations, such as inlining, may help to reduce this. Such a system provides a more robust runtime architecture that, potentially, may adapt better to a wider variety of environments.

1 Introduction