Modularizing CPU Semantics for Virtualization
Hardware-assisted virtualization simplifies \textit{implementing} virtual machine monitors (VMM), but verifying a VMM using hardware virtualization requires a precise model of the virtualization. A natural specification for a VMM is that it refines the bare-metal hardware \emph{specification}; however, a simple backwards simulation on the processor semantics would require case distinction on all instructions, showing that they refine the non-virtualized counterparts. This case analysis is prohibitively expensive for modern architectures. Further, correctness of hardware virtualization is mainly the responsibility of the ISA architects, not the VMM implementer. In this paper, we propose a modularization of hardware semantics that succinctly captures the difference between the ``bare-metal'' behavior and hardware-virtualized behavior of a processor. We illustrate how this helped us modularize the verification of our VMM.
(vmm.pdf) | 344KiB |
slides (PriSC'24 -- Modularizing CPU Semantics for Virtualization.pdf) | 1.14MiB |
Sat 20 JanDisplayed time zone: London change
14:00 - 15:30 | |||
14:00 22mTalk | Compiler Support for Control-Flow Linearization Using Architectural Mimicry PriSC File Attached | ||
14:22 22mTalk | Modularizing CPU Semantics for Virtualization PriSC Paolo G. Giarrusso BedRock Systems, Abhishek Anand BedRock Systems, Gregory Malecha BedRock Systems, František Farka BedRock Systems, Hoang-Hai Dang BedRock Systems File Attached | ||
14:45 22mTalk | All the Binaries Together: A Semantic Approach to Application Binary Interfaces PriSC File Attached | ||
15:07 22mTalk | Short Talks PriSC |