芯片辅助虚拟化:AMD PK 英特尔
在过去的近20年间,X86处理器的核心指令集没有什么变化,但AMD和Intel却在处理器中加入了许多创新功能,如64位内存扩展技术、图像处理指令、浮点运算指令以及多核心技术等等。这两年,AMD和Intel又在CPU中加入了芯片辅助虚拟化技术,这一创新有望将虚拟化从梦想推向现实……
在过去的近20年间,X86处理器的核心指令集没有什么变化,但AMD和Intel却在处理器中加入了许多创新功能,如64位内存扩展技术、图像处理指令、浮点运算指令以及多核心技术等等。这两年,AMD和Intel又在CPU中加入了芯片辅助虚拟化技术,这一创新有望将虚拟化从梦想推向现实。
芯片辅助为虚拟化铺平道路
基于Hypervisor的服务器虚拟化和操作系统分区(OS partitioning)是当前的两大主要软件虚拟化方法,但前者面临的问题更多。操作系统分区可以让宿主操作系统(host OS)访问所有的硬件资源,消除了hypervisor固有的许多问题,但对操作系统的种类数量有限制。
而基于Hypervisor的虚拟化在支持多操作系统方面的灵活性更好,但在CPU、内存和I/O资源分配方面却产生了大量的技术问题,需要通过大量的软件手段来调配。Vmware之所以成为X86虚拟化领域的领导者,不仅仅因为它是最早的厂商,更重要是因为Vmware能够克服这些硬件问题,从而为大规模虚拟化提供可行的管理环境。
但从架构上来说,传统的X86平台并不是为支持多操作系统并行而设计的。因此,AMD和Intel需要重新设计CPU,增加虚拟化特性,以解决上述问题。
ring转换:Intel VT-x和AMD-V异曲同工
在传统的x86运行环境下,操作系统运行在CPU中受保护的ring 0位置。在没有处理器辅助的虚拟化中,ring 0还需要运行VMM(virtual machine monitor,虚拟机监控器)或Hypervisor,以帮助VM(虚拟机)及其VOS(虚拟操作系统)管理硬件资源。
因此,芯片厂商引入了一个新的、具有超级特权和受保护的ring -1位置来运行虚拟机监控器(VMM)。这个新位置可以让VOS和平共存于ring 0,而通信改道于ring -1,并且,VOS并不知道正在和同一系统的其他OS共享物理资源。
芯片上的这一重要创新消除了操作系统的ring转换问题,降低了虚拟化门槛,支持任何操作系统的虚拟化而无须修改OS内核或run-time。Intel和AMD分别推出了VT-x和 AMD-V(即Pacifica)芯片辅助技术,并得到了虚拟化软件厂商的支持。
Intel VT-x技术是在芯片内创建新的ring -1,并且提供了新的指令集,用来建立、管理和退出各种VM。在带有虚拟化功能的芯片中,Hypervisor处于ring-1位置,它生成一个VM控制结构来支持每个新VM。可见,这提供了一种机制,可以根据需要来启动、恢复和退出VM,并且在VMM和大量的VM之间提供了内容交换框架(framework for context-switching)。
对VM的控制,Intel称之为VMXs,而AMD称之为SVMs(secure VMs),虽然名称不同,但两家芯片的处理方式是比较相似的。更重要的是,都允许客机操作系统(guest OS)进驻ring 0,从而消除了ring转换问题。由于许多指令对位置具有敏感性(location-sensitive),而且被设计为只能在ring 0和ring 3之间转化,因此,如果VOS运行在ring 0之外的地方,就可能会导致关键进程的运行出现无法预知的错误,或者在应该出错的时候却没有出错。
以往,虚拟化厂商都是通过软件机制来截取和纠正相应问题。现在,由于虚拟机可以安全地运行在ring 0位置,因此,这一软件机制也就无须再考虑了。当VM发生错误时,处理器可以将控制权转给受保护的VMM,从而解决问题和重新控制VM,或者终止出错进程但不影响同一系统上的其他VM。
- 本文关键词:

