Recent trends are rapidly shifting developer and user expectations of programming languages and application programs. Firstly, growing program complexity is increasing the demand for higher-level programming languages. Secondly, growing availability and accessibility of the Internet is driving the demand for a portable distribution format for software, along with a safe and secure runtime environment. High-level managed languages along with their associated runtimes are ideally suited to deliver the features required for future software systems. Managed language runtimes provide their features by performing a number of auxiliary tasks during program execution. However, these tasks often also interfere with normal program execution, create stalls, and ultimately result in degrading program performance. As future applications necessitate even more expensive features to improve speed and protect against more sophisticated software attacks, the overhead of performing such inline auxiliary tasks is likely to become prohibitive.
This research develops a new virtual machine framework to exploit the opportunities provided by multiprocessor systems to effectively parallelize inline auxiliary tasks, and enable unhindered execution of the main program thread at runtime. The framework implements a novel parallelization model for virtual machines to allow each auxiliary task to execute in its own thread, and on a separate processing core. Each auxiliary thread is generated using program slicing to only calculate the state necessary for its correct execution. Thus, auxiliary threads execute independently, concurrently, and communicate their results to the main thread before they are due. Relieved of the stalls caused by the auxiliary tasks, the framework can allow accelerated program completion, and support even more beneficial and expensive tasks for future programs.