A Virtual Instruction Set Interface for Operating System Kernels
In this paper, we propose and evaluate a virtual instruction set interface
between an operating system (OS) kernel and a general purpose processor
architecture. This interface is a set of operations added to a previously
proposed virtual instruction set architecture called LLVA (Low Level Virtual
Architecture) and can be implemented on existing processor hardware. The
long-term benefits of such an interface include
richer OS-information for hardware,
greater flexibility in evolving hardware,
sophisticated analysis and optimization capabilities for kernel code,
across the application-kernel boundary transformations.
Our interface design (LLVA-OS) contains
several novel features for machine-independence and performance, including
efficient saving and restoring of (hidden) native state,
mechanisms for error recovery, and several primitive
abstractions that expose semantic information to the underlying translator and
hardware. We describe the design, a prototype implementation of LLVA-OS
on x86, and our experience porting the Linux 2.4.22 kernel to LLVA-OS.
We perform a performance evaluation of this kernel, identifying and
explaining the root causes of key sources of virtualization overhead.
"A Virtual Instruction Set Interface for Operating System Kernels", John Criswell, Brent Monroe, and Vikram Adve.
Workshop on the Interaction between Operating Systems and Computer Architecture (WIOSCA '06), Boston, Massachusetts, 2006.