基于Intel-VT技术的Smart-VM 第3章 Intel-VT技术

1.1 IA-32 架构

IA-32 处理器提供了四种处理器模式来支持系统的运行,这四种处理器模式分别是:

a)        实模式:实模式是 16 位的运行模式,跟早期的 8086 处理器兼容。处理器一开始启动的时候,进入的就是实模式。程序可以通过实模式进入保护模式和系统管理模式;

b)        保护模式:保护模式是 32 位的运行模式,它扩展了地址位数,同时提供了丰富的保护机制(权限管理机制,包括段保护机制和页保护机制),以及向后兼容机制;

3 . 1 四种模式状态图

c)        虚拟 8086 模式:在保护模式下提供的兼容 8086 的模式,使处理器在保护模式下能够更好地运行 16 位程序;

d)       系统管理模式:特殊的模式,操作系统可以进入该模式进行电源管理;

四种处理器模式的转换关系如图 3.1[9] 所示:

1.2 Intel-VT 技术

IA-32 上的虚拟化技术,最早可以追溯到虚拟内存管理。虚拟内存管理机制为程序提供了远大于真实内存的虚拟内存。后来,为了能够在保护模式下更好的支持早期的在实模式下的程序的运行,英特尔又加入了虚拟 8086 模式。虽然虚拟 8086 模式并不能完全兼容真实的实模式程序,但是也算是英特尔处理器虚拟化的一次尝试。

Intel-VT 技术,是英特尔公司设计出的硬件辅助虚拟化的一套解决方案。 Intel-VT 具体包括分别针对处理器的 VT-X/VT-I 、芯片组的 VT-D 和网络的 VT-C 技术:

a)        处理器虚拟化 (VTx/VTi) :包括英特尔虚拟化灵活迁移技术( Intel VT FlexMigration )、英特尔 VT FlexPriority 、英特尔 VT 扩展页表( Extended Page Tables ):

                        i.              英特尔 VT FlexPriority :当处理器执行任务时,往往会收到需要注意的其它设备或应用发出的请求或 “ 中断 ” 命令。为了最大程度减少对性能的影响,处理器内的一个专用寄存器将对任务优先级进行监控。如此一来,只有优先级高于当前运行任务的中断才会被及时关注。英特尔 FlexPriority 可创建 TPR6 的一个虚拟副本,该虚拟副本可读取,在某些情况下,如在无需干预时,还可由客户操作系统进行更改。上述举措可以使频繁使用 TPR 的 32 位操作系统获得显著的性能提升。(例如,能够将在 Windows Server* 2000 上运行的应用的性能提高 35% )。

                      ii.              英特尔虚拟化灵活迁移技术( Intel VT FlexMigration ):虚拟化的一个重要优势是能够在无需停机的情况下,将运行中的应用在物理服务器之间进行迁移。英特尔虚拟化灵活迁移技术 ( Intel VT FlexMigration )旨在实现基于英特尔处理器的当前服务器与未来服务器之间的无缝迁移,即使新的系统可能包括增强的指令集也不例外。借助此项技 术,管理程序能够在迁移池内的所有服务器中建立一套一致的指令,实现工作负载的无缝迁移。这便生成了可在多代硬件中无缝运行的更加灵活、统一的服务器资源池。

                    iii.              扩展页表( Extended Page Tables , EPT ):为了减少实现内存虚拟化(跟影子页表相比)的难度和提升内存虚拟化的性能, VT-X 提供了 EPT 技术,直接在硬件上支持客户虚拟地址 -> 客户物理地址 -> 主机物理地址的两次转换。

b)        芯片组虚拟化 (VTd) :如果没有 VTd 技术,虚拟机监控器必须直接参与 I/O 交易,这不仅会减缓数据传输速度,还会由于频繁的 VMM 活动而增大处理器的负载。 VTd 提供了客户操作系统直接访问真实硬件的机制,极大的减少了服务器处理器的负载。

c)        网络虚拟化 (VTc) :英特尔 VT-c 可针对虚拟化进一步优化网络。从本质上来说,这套技术组合的功能与邮局非常相似:将收到的信件、包裹及信封分门别类,然后投递到各自的目的地。通过在专用网络芯片上执行这些功能,英特尔 VT-c 大幅提高了交付速度,减少了 VMM 与服务器处理器的负载。 VTc 包括虚拟机设备队列 (VMDq) 和虚拟机直接互连 (VMDc) :

                        i.              借助虚拟机设备队列( VMDq )最大限度提高 I/O 吞吐率:在传统服务器虚拟化环境中, VMM 必须对每个单独的数据包进行分类,并将其发送到为其分配的虚拟机。这样会占用大量的处理器周期。而借助 VMDq ,该分类功能可由英特尔服务器网卡内的专用硬件来执行, VMM 只需负责将预分类的数据包组发送到适当的客户操作系统。这将减缓 I/O 延迟,使处理器获得更多的可用周期来处理业务应用。英特尔 VT-c 可将 I/O 吞吐量提高一倍以上,使虚拟化应用达到接近本机的吞吐率。每台服务器将整合更多应用,而 I/O 瓶颈则会更少;

                      ii.              借助虚拟机直接互连( VMDc )大幅提升虚拟化性能:借助 PCI-SIG 单根 I/O 虚拟化( SR-IOV )标准,虚拟机直接互连 (VMDc )支持虚拟机直接访问网络 I/O 硬件,从而显著提升虚拟性能。如前所述,英特尔 VT-d 支持客户操作系统与设备 I/O 端口之间的直接通信信道。通过支持每个 I/O 端口的多条直接通信信道, SR-IOV 可对此进行扩展。例如,通过单个英特尔万兆位服务器网卡,可为 10 个客户操作系统中的每个操作系统分配一个受保护的、 1Gb/ 秒的专用链路。这些直接通信链路绕过了 VMM 交换机,可进一步提升 I/O 性能并减少服务器处理器的负载;

1.3 Intel-VTx/VTi

1.3.1 VMX(virtual-machine extensions) 架构

VMX 主要针对两类软件提供支持:

a)        虚拟机监控器:在 VMX 的支持下,虚拟机监控器能够获取处理器的最高权限;

b)        客户软件: VMX 提供一套敏感指令,当客户软件在执行的过程中遇到敏感指令的时候,就会将控制权交给虚拟机监控器;

3 . 2 VMX 转换

针对这两类软件, VMX 提供了两类操作模式:根操作模式和非根操作模式。虚拟机监控器运行在根操作模式下,客户软件运行在非根操作模式下。两种模式的转换称为 VMX 转换 ( 如图 3.2[10] 和图 3.3[11] ) 。

3 . 3 Intel-VT 在操作期间的转换

图 3.3 :白色的区域代表 VMM 在根操作模式下,而交叉阴影和黑点的区域代表两个活动虚拟机的运行阶段。

软件在 VMX 的生命周期:

a)        软件通过 VMXON 指令激活 VMX 模式,当处理器激活 VMX 模式时,是处在根操作模式下;

b)        当处理器处于根操作模式下,通过执行 VMLAUNCH 和 VMRESUME 指令(如图 3.5 ),处理器能够进入非根操作模式;

c)        从 VMX 非根操作模式退出到根操作模式的原因很多,基本上分为条件退出和无条件退出两大类;

d)       当处理器处于根操作模式下时,软件可以通过执行 VMOFF 指令,退出 VMX 模式;

1.3.1.1 根操作模式

处理器在 VMX 模式下的行为基本等同于处理器在保护模式下的行为,除了以下几点:

a)        VMX 根操作模式有一套新的指令 (VMON,VMOFF 等 )

b)        在 VMX 根操作模式下, CR0 和 CR4 的某些值是不支持的;

c)        如果一个逻辑处理器是在 A20 模式下,那么 VMX 开启就会失败;

d)       INIT 信号在 VMX 根操作模式下是阻塞的;

1.3.1.2 非根操作模式

客户操作系统在非根操作模式下运行。当客户操作系统遇到一些预先设定的条件时,会自动退出到根操作模式下。

从非根操作模式退出到根操作模式下,主要分为两种情况:

1.      无条件退出:即遇到某一个事件的时候,直接退出;

2.      有条件退出:即遇到某一个事件的时候,根据 VMCS 的控制执行域的设置来决定是否退出;

1.3.1.3 虚拟机控制结构 (VMCS)

针对 VMX 操作, Intel 定义了虚拟机控制结构。这个结构只能够被 VMCLEAR, VMPTRLD, VMREAD, 和 VMWRITE 操作。

在逻辑上,虚拟机控制结构被划分为 6 部分:

a)        GUEST-STATE 域:虚拟机从根操作模式进入非根操作模式时,处理器所处的状态;

b)        HOST-STATE 域:虚拟机从非根操作模式退出到根操作模式时,处理器所处的状态;

c)        VM 执行控制域:虚拟机在非根操作模式运行的时候,控制处理器非根操作模式退出到根操作模式;

d)       VM 退出控制域:虚拟机从非根操作模式下退出时,需要保存的信息;

e)        VM 进入控制域:虚拟机从根操作模式进入非根操作模式时,需要读取的信息;

f)         VM 退出信息域:虚拟机从非根操作模式退出到根操作模式时,将退出的原因保存到该域中。

1.3.2 内存虚拟化

第一代的 Intel-VT 技术,并没有提供硬件支持的内存虚拟化技术。因此,内存虚拟化一般采用影子页表(这里不做详细介绍)。

第二代的 Intel-VT 技术,提供了硬件支持的内存虚拟化技术: VPID 和 EPT 。

1.3.2.1 VPID

VPID 是一种硬件级的对 TLB 资源管理的优化。通过在硬件上为每个 TLB 项增加一个标志,来标识不同的虚拟处理器地址空间,从而区分开虚拟机监控器以及不同虚拟机的不同处理器的 TLB 。

在软件上使用 VPID 非常简单,主要做两件:

a)        为每个 VMCS 分配一个 VPID ,且这个 VPID 只要是非 0 的,且和其他 VMCS 的 VPID 不同就可以了;

b)        在 VMCS 中将 Enable VPID 置 1 ;

1.3.2.2 EPT

3 . 4 EPT 原理图

EPT 是在原有的 CR3 控制寄存器页表地址映射的基础上,引入了 EPT 页表的另一次映射。这样, GVA (客户操作系统的虚拟地址) ->GPA (客户操作系统的物理地址) ->HPA (宿主操作系统的物理地址)两次地址转换都由 CPU 硬件自动完成。

图 3.4[12] 是 EPT 原理图。这里假设客户机页表和 EPT 页表都是 4 级页表, CPU 完成一次地址转换的基本过程:

1.        CPU 从 Guest CR3 指向的 L4 页表。由于 Guest CR3 指向的是 GPA ,因此 CPU 需要通过 EPT 页表来实现 Guest CR3 GPA->HPA 的转换。 CPU 首先会查看硬件的 EPT TLB ,如果没有对应的转换, CPU 会进一步查找 EPT 页表,如果还没有, CPU 则抛出 EPT Violation 异常由虚拟机监控器来处理;

2.        获得 L4 页表地址后, CPU 根据 GVA 和 L4 页表项的内容,来获取 L3 页表项的 GPA 。如果 L4 页表中 GVA 对应的表项显示为“缺页”,那么 CPU 产生 Page Fault ,直接交由 Guest Kernel 处理。注意,这里不会产生 VM-Exit 。获得 L3 页表项的 GPA 后, CPU 同样要通过查询 EPT 页表来实现 L3 GPA->HPA 的转换,过程和上面一样。 CPU 会依次查看 L2 , L1 页表,最后获得 GVA 对应的 GPA ;

3.        获取 GPA 之后, CPU 通过查询 EPT 页表获得 HPA ;

1.3.3 中断虚拟化

在虚拟的环境下,虚拟机有诸多的设备,包括虚拟机监控器模拟的虚拟设备和直接分配给客户机的物理设备,这些设备都需要发送中断给 VCPU ,以便得到处理。因此,虚拟机监控器也需要提供中断虚拟化的支持。

图 3.5[12] 展示了物理平台的中断架构。首先, I/O 设备通过中断控制器( I/O APIC 或者 PIC )发出中断请求,中断请求经由 PCI 总线发送到系统总线上,最后目标 CPU 的 local APIC 部件接收中断, CPU 开始处理中断。

在虚拟机的环境中,虚拟机监控器也需要为客户操作系统展现一个与物理中断架构类似的虚拟中断架构。如图 3.6[12] 所示。和物理平台相比,每个 VCPU 都对应一个虚拟 Local APIC 用于接收中断。虚拟平台也包含了虚拟 I/O APIC 或者虚拟 PIC 用于发送中断。

3 . 5 物理平台的中断架构

3 . 6 虚拟机中断架构

1.4 Intel-VTd

由于现在操作系统跟外设有大量的交互,因此虚拟机监控器必须支持客户操作系统的 I/O 请求,即 I/O 虚拟化。 I/O 虚拟化的支持必须采用以下几种模型之一 [13] :

a)        仿真:虚拟机监控器为客户操作系统模拟一个设备。 I/O 虚拟化可以提供很好的兼容性,但是在性能上也受到了很大的限制;

b)        新的软件接口:这种模型类似于 I/O 仿真,不同之处在于虚拟机监控器提供的是针对客户软件设计的设备接口。

c)        直接分配:虚拟机监控器直接分配设备给客户软件。这种模型需要额外的硬件设备支持。

d)       I/O 设备分享:这种模型是直接分配模型的扩展。一个 I/O 设备支持多个接口,每个接口分配给一个虚拟机。

1.4.1 I/O 虚拟化

为了实现直接 I/O 分配, Intel-VT 为虚拟机监控器提供了以下几种功能 [13] :

a)        I/O 设备直接分配:分配 I/O 设备给虚拟机,扩展虚拟机的保护和隔离属性;

b)        DMA 重映射:从硬件的直接内存访问,提供独立的地址转换;

c)        中断重映射:支持中断路由给合适的虚拟机;

d)       可靠性:记录和报告中断错误给系统 DMA ;

1.4.1.1 DMA 重映射

DMA 重映射为设备访问内存提供硬件隔离。通过不同的 I/O 页表,使得每个硬件设备分配到特定的域。当设备尝试访问系统内存是, DMA 拦截访问,并且判断是否允许该访问,同时他还决定真实的访问位置。频繁的使用 I/O 表数据结构,该数据结构能够被缓存。 DMA 重映射机制能够被每个设备独立的配置。

1.4.1.2 中断重映射

中断重映射提供重映射和路由从 I/O 设备的中断请求。

1.5 本章小结

Intel-VT 技术是英特尔公司推出的旨在提高虚拟机安全性和性能,降低开发虚拟机难度的硬件辅助虚拟化方案。 Intel-VT 包括处理器虚拟化,芯片组虚拟化和网络虚拟化。

Intel 处理器在保护模式的基础上,提供了 VMX 模式,以支持 Intel-VT 技术。 VMX 模式又分为根操作模式和非根操作模式两种子模式。虚拟机监控器运行在根操作模式下,客户操作系统运行在非根操作模式下。

虚拟机控制结构是处理器专门为 VMX 设计的一种数据结构,用来支持根操作模式和非根操作模式之间的切换。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值