Skip to Main Content
A virtual machine (VM) uses software to support a virtual instruction set architecture on a hardware platjonn executing a native instruction set. By co-designing the hardware and software elements of a VM, and by using an implementation-dependent native instruction set, there will be many new opportunities for improved performance and flexibility. Because the hardware-supported instruction set is implementation dependent, performance optimizations can be more easily passed from software through to hardware, and performance feedback infonnation can be more easily passed from hardware up to the software. Furthermore, optimizations can be performed by software dynamically, as the program runs. A codesigned virtual machine may include adaptive hardware Performance features, continuous hardware performance feedback, and on-the-fly optimizing re-compilation by the VM. Hardware and software can cooperate in jinding instruction level parallelism across large blocks of dynamic instructions, and can eflciently implement of a number of advanced microarchitecture techniques involving control independence, prediction, speculation, and cache hierarchy management.