7.9. Intel虚拟化技术

7.9.1. CPU虚拟化技术VT-X

Intel增加了虚拟机扩展指令集 VMX(Virtual Machine Extensions),该指令集包含了十条左右新增指令来支持与虚拟机向相关的操作,简称Intel VT-x技术。

VT-x引入了根模式和非根模式两种操作模式,统称为VMX操作模式。

根模式是VMM所处的模式。所有指令都可运行,行为与正常IA32一样。兼容所有原有软件。 非根模式是客户机所处模式。所有敏感指令都会被重定义,使得他们不经虚拟化就直接运行或者通过陷入再模拟的方式处理。

VT-x的VMCS能更好的支持虚拟化,VMCS保存在本地内存中的数据结构,包括

  • vCPU标识信息:标识vCPU属性

  • 虚拟寄存器信息:上下文环境保存

  • vCPU状态细信息

  • 额外寄存器/部件信息

  • 其他信息:优化字段等

每个VMCS对应一个vCPU,CPU每发生VM-Exit和VM-Entry时会自动查询和更新VMCS。VMM也可以通过指令来配置VMCS而影响vCPU。

7.9.2. 扩展页表

EPT(Extended Page Table)扩展页表用于搭配VT-x使用。

EPT页表存放在VMM内核空间,由VMM维护,当一个逻辑CPU处于非根模式下运行客户机代码时,使用的地址是客户机虚拟地址,而访问这个虚拟地址时,同样会发生地址的转换,这里的转换还没有设计到VMM层,和正常的系统一样,这里依然是采用CR3作为基址,利用客户机页表进行地址转换,只是到这里虽然已经转换成物理地址,但是由于是客户机物理地址,不等同于宿主机的物理地址,所以并不能直接访问,需要借助于第二次的转换,也就是EPT的转换。

不管是32位客户机还是64位客户机,统一按照64位物理地址来寻址。EPT页表是4级页表,页表的大小仍然是一个页即4KB,但是一个表项是8个字节,所以一张表只能容纳512个表项,需要9位来定位具体的表项。

7.9.3. CPU虚拟化技术VT-d

Intel VT-d技术通过在北桥MCH引入DMA重映射硬件,以提供设备重映射和设备直接分配的功能。在启动VT-d的平台上,设备所有的DMA传输都会被DMA重映射硬件截获。根据设备对应的IO页表,硬件可以对DMA中的地址进行转换,使设备只能访问到规定的内存。