Memory hierarchies are fundamental to both sequential and parallel computer systems, with memory access costs often being the primary determinant of overall application performance. Traditional techniques for memory hierarchy management tend to be reactive, relying on on-demand data movement to the higher levels of the hierarchy (e.g., on a cache miss). However, such techniques are unlikely to remain effective given technology trends which indicate a widening gap between processor and memory performance, particularly in parallel and distributed systems where access costs to local and remote memory differ by several orders of magnitude.

This widening gap motivates a proactive approach, driven by application requirements, which provides the memory system with enough slack to hide memory access costs from the computation. While several researchers have demonstrated the effectiveness of application-driven proactive techniques in parallel systems, most such approaches have been ad hoc and require a large degree of programmer involvement.

The InSight project focuses on developing integrated language, compiler, and run-time techniques that would enable automatic use of application-driven proactive memory hierarchy management techniques in general programming contexts. Our efforts are focused on efficient software support of the shared object space required by programs expressed in a concurrent object-oriented language (e.g., Java) when executing on a distributed cluster of commodity workstations. More recently we have also been looking at use of application information to permit distributed applications to adapt to the performance and security properties of their execution environments.

Funding

The InSight project is supported by the National Science Foundation under CAREER Award CCR-9876128.