从Intel VT-X和HAXM看CPU虚拟化

一:简介

在虚拟化中有两个重要的虚拟化加速技术不得不提,CPU虚拟化和内存虚拟化
本文基于HAXM和intel的VT-X技术,分析cpu虚拟化的加速如何实现。

二:Intel VT-X技术介绍

VT-x是intel运用Virtualization虚拟化技术中的一个指令集,是CPU的硬件虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的安全性。

VT-x扩展了传统的x86处理器架构,它引入了两种操作模式:VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),统称为VMX操作模式。VMX root operation是VMM运行所处的模式, 设计给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同,而VMX non-root operation则是客户机运行所处的模式,在VMM控制之下的IA32/64环境。所有的模式都能支持所有的四个Privileges levels。

由此,GDT、IDT、LDT、TSS等这些指令就能正常地运行于虚拟机内部了,而在以往,这些特权指令需要模拟运行。 而VMM也能从模拟运行特权指令当中解放出来,这样既能解决Ring Aliasing问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大地提升运行效率。Ring Compression问题的解决,也就解决了64bit客户操作系统的运行问题。

为了建立这种两个操作模式的架构,VT-x设计了一个Virtual-Machine Control Structure(VMCS,虚拟机控制结构)的数据结构,并提供了VM entry(VMLAUNCH)和VM exit两种操作在虚拟机与VMM之间切换,用户可以通过在VMCS的执行控制区域里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题。

VMCS分为以下六个区域:
(1)客户机状态区域: 保存客户机状态,如各个寄存器值、中断向量号、当前指令地址等
(2)宿主机状态区域: 保存宿主机状态,主要为各个寄存器值
(3)VM执行控制区域: 最复杂的区域,控制了虚拟机的大部分执行流程,如msr是否陷出、中断注入方式、EPT页表地址等
(4)VM退出控制区域: 控制guest退出到VMM时需执行的操作
(5)VM进入控制区域: 控制进入guest时执行的操作,中断号可以在这个区域带入
(6)VM退出信息区域: VM exit 的原因和类型

VT-X模式下虚拟机指令执行流程大致如下:
image

三:HAXM整体结构

image

posted @ 2022-05-13 17:53  Edver  阅读(572)  评论(0编辑  收藏  举报