The focus of this research is to develop an effective caching infrastructure for the design and implementation of caches in modular systems. Caching is a well-known technique for exploiting locality to improve performance; unfortunately, caches are often added to systems in an ad-hoc fashion. The caching infrastructure will improve cache development in the following ways. First, it will define a set of practical and efficient external cache interfaces for integrating caching into modular systems, such as object-oriented operating systems. Second, it will allow the functions of the cache itself to be modularized, defining internal interfaces that allow the functions to be easily modified and replaced. The flexibility this affords will allow the cache infrastructure to serve as a test-bed for caching, enabling different cache algorithms to be easily implemented and studied. Third, the use of a common cache infrastructure will allow global resource allocation decisions to be made among caches that are competing for resources, thus optimizing overall system performance. This resource management functionality will also include mechanisms for efficiently transferring resources, such as data blocks, between caches. Finally, the caching infrastructure will contain a toolkit to enable the cache control functions, such as the cache coherency protocol, to be defined via a high-level specification which can be verified and compiled into an efficient implementation. ***