In this dissertation, we study a middleware system that supports a shared memory programming model designed to facilitate the sharing of state in such applications. As a complement to Remote Procedure Call or Remote Method Invocation (RPC/RMI) the system, which we call InterWeave, allows processes to access shared state of strongly-typed, pointer-rich data structures with ordinary writes and reads.
InterWeave employs a variety of aggressive optimizations to improve the performance of distributed state in the Internet environment. In this dissertation, we focus on InterWeave's support for high-level coherence specifications, its multi-level coherence protocol, and its support for Java applications. The high-level coherence specifications allow programmers to relax application coherence requirement in order to optimize communication traffic. The multi-level shared memory protocol helps accommodate hardware coherence and consistency within multiprocessors (level-1 sharing), software distributed shared memory (S-DSM) within tightly coupled clusters (level-2 sharing), and version-based coherence and consistency across the Internet (level-3 sharing). The provision of an InterWeave for the Java language presents special implementation challenge and allows Java applications to use InterWeave to share information with other languages efficiently.
Experiments on microbenchmarks show that the current InterWeave implementation is efficient and scalable. We have experimented with InterWeave on a variety of applications, including interactive and incremental datamining, time-image sharing in an intelligent environment, web proxy caching, multi-player games, and remote scientific simulation and visualization. Our experience demonstrates the ease of use of the InterWeave programming model. Experiments with these applications reveal that various InterWeave optimizations bring significant performance benefits in low bandwidth high latency network environments like the Internet.