Operating system support for modern memory hierarchies

The demands of large applications and the rapid development of microprocessor and high-density memory technology over the last years have motivated the design of new memory hierarchies for uniprocessors and parallel architectures. This dissertation presents the study of three such memory hierarchy alternatives: large memory extensions for uniprocessors, cache coherence schemes for multiprocessors based on virtual memory support, and memory servers for multicomputers. Large memory extensions for uniprocessors provide extensive amounts of physical memory to support the efficient execution of applications that use very large data structures. My work studies architectures with large amounts of memory on a secondary memory bus. On such computers, the processor can either access the additional memory directly or can use it as a cache between primary memory and disks. Analytical and empirical results show that many applications can benefit significantly from using an extended memory system, and that the direct approach outperforms the caching approach in most cases. In the second part of this dissertation, I study a new class of software cache coherence schemes for multiprocessors. Currently, most multiprocessors are based on bus interconnections. However, bus-based multiprocessors have limited memory bandwidth. Other approaches, such as directory-based schemes and compiler-based software schemes, require hardware support and are complex. The software cache coherence schemes I propose are based on virtual memory (VM) support and can be implemented on very simple multiprocessors, built with distributed memories and arbitrary interconnects. Trace-driven simulation results show that VM-based cache coherence is an economical and practical approach to build simple shared-memory multiprocessors. The third component of this dissertation presents a virtual memory management technique for multicomputers called memory servers. Multicomputers can provide very high levels of computing power and storage capacity at relatively low cost. However, it is difficult to exploit the available peak performance and capacity of existing multicomputers. The memory server model extends the memory hierarchy of multicomputers by introducing a remote memory server layer, which can be viewed as a distributed cache for disk backing stores. Results from a prototype implementation show that the memory server mechanism is an effective way to use multicomputer memory resources.