从VT-x到VT-d Intel虚拟化技术发展蓝图

作者:IT168评测中心 Lucifer  2007-08-25   
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

IT168评测中心】当前非常热门的Virtualization虚拟化技术的出现和应用其实已经有数十年的历史了,在早期,这个技术主要应用在服务器以及大型主机上面,现在,随着PC性能的不断增长,Virtualization也开始逐渐在x86架构上流行起来。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
虚拟化技术将各种资源虚拟出多台主机,以提高这些资源的共享率和利用率
  虚拟化可以将IT环境改造成为更加强大、更具弹性、更富有活力的架构。通过把多个操作系统整合到一台高性能服务器上,最大化利用硬件平台的所有资源,用更少的投入实现更多的应用,还可以简化IT架构,降低管理资源的难度,避免IT架构的非必要扩张。客户虚拟机的真正硬件无关性还可以实现虚拟机的运行时迁移,可以实现真正的不间断运行,从而最大化保持业务的持续性,而不用为购买超高可用性平台而付出高昂的代价。
  和Sun上的虚拟化技术(CPU分区)比起来,x86上的虚拟化要落后不少的,然而确实在不断进步着,在数年前,x86上还没有什么硬件支持,甚至连指令集都不是为虚拟化而设计,这时主要靠完全的 软件 来实现虚拟化,当时的代表是VMware的产品,以及尚未被Microsoft收购Connectix开发的Virtual PC,在服务器市场上应用的主要是VMware的产品,包括GSX Server和稍后的ESX Server,这些软件虚拟化产品在关键指令上都采用了二进制模拟/翻译的方法,开销显得比较大,后期出现了Para-Virtualization部分虚拟化技术,避免了一些二进制转换,性能得到了提升,不过仍然具有隔离性的问题。
  今天,虚拟化技术的各方面都有了进步,虚拟化也从纯软件逐深入到处理器级虚拟化,再到平台级虚拟化乃至输入/输出级虚拟化,代表性技术就是Intel Virtualization Technology for Directed I/O,简写为Intel VT-d,在介绍这个Intel VT-d之前,我们先来看看x86硬件虚拟化的第一步:处理器辅助虚拟化技术,也就是Intel Virtualization Technology,分为对应Itanium平台的VT-i和对应x86平台的VT-x两个版本。AMD公司也有对应的技术AMD-V,用于x86平台。我们介绍的是x86平台上的VT-x技术,VT-i技术原理上略为相近。
软件虚拟化主要的问题是性能和隔离性。Full Virtuali z ation完全虚拟化技术可以提供较好的客户操作系统独立性,不过其性能不高,在不同的应用下,可以消耗掉主机10%~30%的资源。而OS Virtualization可以提供良好的性能,然而各个客户操作系统之间的独立性并不强。无论是何种软件方法,隔离性都是由Hypervisor软件提供的,过多的隔离必然会导致性能的下降。
  这些问题主要跟x86设计时就没有考虑虚拟化有关。我们先来看看x86处理器的Privilege特权等级设计。
  x86架构为了保护指令的运行,提供了指令的4个不同Privilege特权级别,术语称为Ring,从Ring 0Ring 3Ring 0的优先级最高,Ring 3最低。各个级别对可以运行的指令有所限制,例如,GDTIDTLDTTSS等这些指令就只能运行于Privilege 0,也就是Ring 0要注意Ring/Privilege级别和我们通常认知的进程在操作系统中的优先级并不同。
  操作系统必须要运行一些Privilege 0的特权指令,因此Ring 0是被用于运行操作系统内核,Ring 1Ring 2是用于操作系统服务,Ring 3则是用于应用程序。然而实际上并没有必要用完4个不同的等级,一般的操作系统实现都仅仅使用了两个等级,即Ring 0Ring 3,如图所示:
  也就是说,在一个常规的x86操作系统中,系统内核必须运行于Ring 0,而VMM软件以及其管理下的Guest OS却不能运行于Ring 0——因为那样就无法对所有虚拟机进行有效的管理,就像以往的协同式多任务操作系统(如,Windows 3.1)无法保证系统的稳健运行一样。在没有处理器辅助的虚拟化情况下,挑战就是采用Ring 0之外的等级来运行VMM (Virtual Machine Monitor,虚拟机监视器)Hypervisor,以及Guest OS
  现在流行的解决方法是Ring Deprivileging(暂时译为特权等级下降),并具有两种选择:客户OS运行于Privilege 10/1/3模型),或者Privilege 30/3/3模型)。
  无论是哪一种模型,客户OS都无法运行于Privilege 0,这样,如GDTIDTLDTTSS这些特权指令就必须通过模拟的方式来运行,这会带来很明显的性能问题。特别是在负荷沉重、这些指令被大量执行的时候。
  同时,这些特权指令是真正的“特权”,隔离不当可以严重威胁到其他客户OS,甚至主机OSRing Deprivileging技术使用IA32架构的Segment Limit(限制分段)和Paging(分页)来隔离VMMGuest OS不幸的是EM64T64bit模式并不支持Segment Limit模式,要想运行64bit操作系统,就必须使用Paging模式。
  对于虚拟化而言,使用Paging模式的一个致命之处是它不区分Privileg 0/1/2模式,因此客户机运行于Privileg 3就成为了必然(0/3/3模型),这样Paging模式才可以将主机OS和客户OS隔离开来,然而在同一个Privileg模式下的不同应用程序(如,不同的虚拟机)是无法受到Privileg机构保护的,这就是目前IA32带来的隔离性问题,这个问题被称为Ring Compression
IA32不支持VT,就无法虚拟64-bit客户操作系统
  这个问题的实际表现是:VMware在不支持Intel VTIA32架构CPU上无法虚拟64-bit客户操作系统,因为无法在客户OS之间安全地隔离。
作为一个芯片辅助(Chip-Assisted)的虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的 安全 性,下面我们就来看看Intel VT带来了什么架构上的变迁。我们谈论的主要是IA32上的VT技术,一般称之为VT-x,而在Itanium平台上的VT技术,被称之为VT-i
  VT-xIA32CU操作扩展为两个forms(窗体):VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),VMX root operation设计来供给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同,而VMX non-root operation则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持所有的四个Privileges levels,这样在VMX non-root operation环境下运行的虚拟机就能完全地利用Privilege 0等级。
两个世界:VMX non-rootVMX root
  和一些文章认为的很不相同,VT同时为VMMGuest OS提供了所有的Privilege运行等级,而不是只让它们分别占据一个等级:因为VMMGuest OS运行于不同的两个forms
  由此,GDTIDTLDTTSS等这些指令就能正常地运行于虚拟机内部了,而在以往,这些特权指令需要模拟运行。而VMM也能从模拟运行特权指令当中解放出来,这样既能解决Ring Aliasing问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大地提升运行效率。Ring Compression问题的解决,也就解决了64bit客户操作系统的运行问题。
  为了建立这种两个虚拟化窗体的架构,VT-x设计了一个Virtual-Machine Control StructureVMCS,虚拟机控制结构)的数据结构,包括了Guest-State Area(客户状态区)和Host-State Area(主机状态区),用来保存虚拟机以及主机的各种状态参数,并提供了VM entryVM exit两种操作在虚拟机与VMM之间切换,用户可以通过在VMCSVM-execution control fields里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题。
作为一个芯片辅助(Chip-Assisted)的虚拟化技术,VT可以同时提升虚拟化效率和虚拟机的安全性,下面我们就来看看Intel VT带来了什么架构上的变迁。我们谈论的主要是IA32上的VT技术,一般称之为VT-x,而在Itanium平台上的VT技术,被称之为VT-i
  VT-xIA32CU操作扩展为两个forms(窗体):VMX root operation(根虚拟化操作)和VMX non-root operation(非根虚拟化操作),VMX root operation设计来供给VMM/Hypervisor使用,其行为跟传统的IA32并无特别不同,而VMX non-root operation则是另一个处在VMM控制之下的IA32环境。所有的forms都能支持所有的四个Privileges levels,这样在VMX non-root operation环境下运行的虚拟机就能完全地利用Privilege 0等级。
两个世界:VMX non-rootVMX root
  和一些文章认为的很不相同,VT同时为VMMGuest OS提供了所有的Privilege运行等级,而不是只让它们分别占据一个等级:因为VMMGuest OS运行于不同的两个forms
  由此,GDTIDTLDTTSS等这些指令就能正常地运行于虚拟机内部了,而在以往,这些特权指令需要模拟运行。而VMM也能从模拟运行特权指令当中解放出来,这样既能解决Ring Aliasing问题(软件运行的实际Ring与设计运行的Ring不相同带来的问题),又能解决Ring Compression问题,从而大大地提升运行效率。Ring Compression问题的解决,也就解决了64bit客户操作系统的运行问题。
  为了建立这种两个虚拟化窗体的架构,VT-x设计了一个Virtual-Machine Control StructureVMCS,虚拟机控制结构)的数据结构,包括了Guest-State Area(客户状态区)和H ost -State Area(主机状态区),用来保存虚拟机以及主机的各种状态参数,并提供了VM entryVM exit两种操作在虚拟机与VMM之间切换,用户可以通过在VMCSVM-execution control fields里面指定在执行何种指令/发生何种事件的时候,VMX non-root operation环境下的虚拟机就执行VM exit,从而让VMM获得控制权,因此VT-x解决了虚拟机的隔离问题,又解决了性能问题。
I/O虚拟化的关键在于解决I/O设备与虚拟机数据交换的问题,而这部分主要相关的是DMA直接 内存 存取,以及IRQ中断请求,只要解决好这两个方面的隔离、保护以及性能问题,就是成功的I/O虚拟化。
  和处理器上的Intel VT-iVT-x一样,Intel VT-d技术是一种基于North Bridge北桥芯片(或者按照较新的说法:MCH)的硬件辅助虚拟化技术,通过在北桥中内置提供DMA虚拟化和IRQ虚拟化硬件,实现了新型的I/O虚拟化方式,Intel VT-d能够在虚拟环境中大大地提升 I/O 的可靠性、灵活性与性能。
  传统的IOMMUsI/O memory management unitsI/O内存管理单元)提供了一种集中的方式管理所有的DMA——除了传统的内部DMA,还包括如AGP GARTTPTRDMA over TCP/IP等这些特别的DMA,它通过在内存地址范围来区别设备,因此容易实现,却不容易实现DMA隔离,因此VT-d通过更新设计的IOMMU架构,实现了多个DMA保护区域的存在,最终实现了DMA虚拟化。这个技术也叫做DMA Remapping
  I/O设备会产生非常多的中断请求,I/O虚拟化必须正确地分离这些请求,并路由到不同的虚拟机上。传统设备的中断请求可以具有两种方式:一种将通过I/O中断控制器路由,一种是通过DMA写请求直接发送出去的MSImessage signaled interrupts,消息中断),由于需要在DMA请求内嵌入目标内存地址,因此这个架构须要完全访问所有的内存地址,并不能实现中断隔离。
  VT-d实现的中断重映射(interrupt-remapping)架构通过重新定义MSI的格式来解决这个问题,新的MSI仍然是一个DMA写请求的形式,不过并不嵌入目标内存地址,取而代之的是一个消息ID,通过维护一个表结构,硬件可以通过不同的消息ID辨认不同的虚拟机区域。VT-d实现的中断重映射可以支持所有的I/O源,包括IOAPICs,以及所有的中断类型,如通常的MSI以及扩展的MSI-X
  VT-d进行的改动还有很多,如硬件缓冲、地址翻译等,通过这些种种措施,VT-d实现了北桥芯片级别的I/O设备虚拟化。VT-d最终体现到虚拟化模型上的就是新增加了两种设备虚拟化方式:
左边是传统的I/O模拟虚拟化,右边是直接I/O设备分配
直接I/O设备分配:虚拟机直接分配物理I/O设备给虚拟机,这个模型下,虚拟机内部的 驱动 程序直接和硬件设备直接 通信 ,只需要经过少量,或者不经过VMM的管理。为了系统的健壮性,需要硬件的虚拟化支持,以隔离和保护硬件资源只给指定的虚拟机使用,硬件同时还需要具备多个I/O容器分区来同时为多个虚拟机服务,这个模型几乎完全消除了在VMM中运行驱动程序的需求。例如CPU,虽然CPU不算是通常意义的I/O设备——不过它确实就是通过这种方式分配给虚拟机,当然CPU的资源还处在VMM的管理之下。
I/O设备共享:这个模型是I/O分配模型的一个扩展,对硬件具有很高的要求,需要设备支持多个功能接口,每个接口可以单独分配给一个虚拟机,这个模型无疑可以提供非常高的虚拟化性能表现。
  运用VT-d技术,虚拟机得以使用直接I/O设备分配方式或者I/O设备共享方式来代替传统的设备模拟/额外设备接口方式,从而大大提升了虚拟化的I/O性能。
主流双路Xeon Stoakley平台将支持Intel VT-d技术
高端四路Caneland平台也会支持VT-d功能
  根据资料表明,不日发布的Stoakley平台和Caneland平台上将包含VT-d功能,Stoakley平台是现在的Bensley的下一代产品,用于双路Xeon处理器,而Caneland则是Truland的继任者,用于四路Xeon处理器,这些芯片组都能支持最新的45nm Penryn处理器。
  从Intel虚拟化技术发展路线图来看,虚拟化无疑是从处理器逐渐扩展到其他设备的,从VT-i/VT-xVT-d就非常体现了这个过程,对于关注I/O性能的企业级应用而言,完成了处理器的虚拟化和I/O的虚拟化,整个平台的虚拟化就接近完成了,因此在未来,Intel将会持续地开发VT-d技术,将各种I/O设备中加入虚拟化特性,从而提供一个强大的虚拟化基础架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值