This award is funded under the American Recovery and Reinvestment Act of 2009 (Public Law 111-5).
The goal of this proposal is to devise and implement a scalable virtual machine that includes scalable garbage collectors, profilers and just-in-time (JIT) compilers.
As hardware vendors deliver chip multiprocessors (CMPs) as the next-generation general-purpose computing substrate, programmers are increasingly choosing managed languages for their next generation applications. The virtual machine (VM) stands between the two, integrating them together. However, VMs are not yet capable of providing scalable performance to applications on parallel systems composed of CMPs. VMs are limited in part because key features, such as dynamic profiling, compilation, and garbage collection, are often not themselves scalable. This VM scalability bottleneck is an impediment to application scaling. For example, because VMs are oblivious to application data partitioning, they can introduce unnecessary communication such as false sharing.
This project seeks to solve this problem by designing and implementing scalable virtual machine (SVM) services. SVM includes novel dynamic profilers, just-in-time (JIT) compilers, and garbage collectors that are themselves scalable and support parallel applications. The project explores how to design and build a framework for parallel dynamic analysis, JIT compilation, and garbage collection that uses novel cost models of the application, analysis, JIT, and collector work to optimize for scalable high-performance. In particular, analysis, JIT, and garbage collector work is divided and scheduled in novel ways to mirror application partitions and threads.
SVM will be developed within a Java Virtual Machine, but the algorithms will apply to other managed languages such as C#, JavaScript, Python, and Ruby. The investigators will make both SVM and parallel applications publicly available, adding to the national research infrastructure.