根据IDC六月份终端用户调查报告显示,2007新购买的x86服务器中有40%被用于了虚拟化应用,还预计今年部署了虚拟化应用的服务器会占所有服务器数量的10%,到2010年的时候可能会接近20%,虚拟化市场已经开始成熟。Intel自然也不会放过这个市场。Intel认为具有卓越的性能、高度的可靠性平台将会有助于推动虚拟化应用的进一步普及,现在,新的45nm处理器搭载了多种虚拟化方面的增强技术。
![]() |
从VT-x/VT-i到VT-d,再到I/O AT/VMDq
Intel将其虚拟化战略分为三步走。用于X86架构的VT-x和用于安腾架构的VT-i都是基于CPU的虚拟化技术,它们都是在CPU中增加了专门的硬件辅助电路,帮助提升虚拟化的效率。VT-d虚拟化技术则着眼于整个平台,芯片组和相关的I/O设备也加入了进来。第三步则是在I/O层面上的虚拟化,I/OAT2技术已经初步的实现了部分功能。
![]() |
虚拟机平台的组成
在Intel没有推出虚拟化技术之前,所有虚拟机VM的各种请求(比如逻辑处理器、逻辑I/O设备)都需要经过VMM软件的转换和维护,这个过程是纯软件的过程,因此占用系统资源高,效率低下。更要命的是,所有的内存存取都经过VMM控制会有安全隐患,产生错误的几率也会增加,影响了虚拟化的隔离性和可靠性。
![]() |
Intel VT-x技术和VT-d技术
在VT-x技术中增加了两个全新的执行模式VMX Root模式(用于VMM)和No-Root模式(用于Guest OS),这样可以让虚拟机上的操作系统直接运行在Ring 0上。此外还增加了VM Entry和VM Exit两种转换模式。VM Entry进程包括从VMM向Guest传输指令或者数据,进入到Non-Root模式,从VMCS载入Guest状态和VM Exit条件。VM Exit进程包括从Guest向VMM传输指令或者数据,进入到Root模式,在VMCS保存Guest状态并且重新载入Guest状态。这些功能的实现主要借助基于硬件的VMCS(VM Control Structure)来实现。

45nm处理器平台上的虚拟化改进
在上一代的VT-x技术基础上,45nm Penryn的虚拟化性能也获得了持续的改进:VM Exit/VM Entry性能获得了25%~75%的提升,在虚拟化应用中,虚拟机切换是很频繁的,VM Exit/VM Enry的执行也就很是频繁,这方面的改进可以明显地改进虚拟机(特别是多虚拟机)下的性能。

VT-d技术是包含在芯片组中的虚拟化技术
VT-d则是在平台层面上实现了I/O虚拟化(主要体现在整合于芯片组内的专用电路),它定义了一个用于DMA重映射的架构,可直接将I/O设备分配给未经修改的VMs或者半虚拟化VMs。不仅Stoakley平台会支持VT-d,未来更多的Intel服务器平台都会支持这些功能。关于VT-d的更详细的解析,可以参看:从VT-x到VT-d Intel虚拟化技术发展蓝图。
I/OAT2平台级I/O优化方案
随着新45nm处理器的升级,Intel也计划全面升级Xeon DP和Xeon MP服务器平台,无论是定位于嵌入式应用的Cranberry Lake平台、还是定位于主流双路处理器的Stoakley平台、或者是定位于多路处理器的Caneland平台,都将会支持新一代的I/OAT2技术(代号Crystal Beach2),I/OAT技术是和虚拟化技术紧密相关的。
I/OAT2有两个主要的设计目的,第一个是进一步增强数据中心网络I/O能力,第二个继续保持Intel I/OAT的无状态架构优势。同样,I/OAT2依然是一个平台级的I/O优化方案,涉及到了CPU、芯片组、网卡控制器、等多个方面。

I/OAT2在整个平台上都进行了提升:Direct Cache Access
第一代的I/OAT通过增强软件接口、软件预取到CPU、优化数据流等措施,实现对于TCP协议栈的优化处理。新一代的I/OAT2利用DCA(Direct Cache Access,直接高级缓存访问)技术,进一步降低频繁存取内存对系统性能所造成的负面影响。I/OAT2通过芯片组支持QuickData技术,该技术通过直接将网络数据放入内存中无需处理器参与,从而加速了标准网络数据的传送过程。Intel在此基础上增加了DCA和MSI-X等功能,以提升数据传输和复制的效率。
支持IOAT2的网卡控制器不仅支持无状态卸载,TCP分配&效验和卸载,优化多队列&数据流,分离头部/有效负载等功能,还通过增加对于DCA、MSI-X、中断快速响应、头部分离/复制等功能的支持,提升IO效能。

根据不同的负载,DCA工作具有两种方式
可以看到DCA和MSI-X两个功能是此次IOAT2所带来的主要改进。DCA(Direct Cache Access,直接高级缓存访问)基本工作原理是使得CPU高速缓存中的数据可以被网络控制器优先访问,一方面充分利用缓存中的数据,另外一个方面利用高速缓存低延迟的特性,来避免CPU频繁的访问内存,降低系统开销。DCA有两种基本的工作模式,当处理小型I/O任务的时候,甚至不需要芯片组中QuickData引擎的参与,只有当处理大型I/O任务的时候才需要。
MSI-X(Extended Message Signaled Interrupts,扩展消息信号中断)是MSI(消息信号中断)的增强版本,是PCIe 1.1规范中增加的新特性,可以将PCIe总线中的数据封包进行更灵活的分割,满足不同应用的需求。在I/OAT2中结合了直接内存访问、选择性中断行为的流量区别等功能,提供了更快的中断速度。
I/OAT2还支持头部分离/复制这一新特性。头部分离是TCP/IP协议处理过程中一个必不可少的过程,I/OAT2将来自数据/有效负载的TCP、IP头部放入不同的内存缓冲中。头部复制动作则是将头部进行拷贝并放置于不同的缓冲中,然后将整个数据包放入另一个缓冲中。头部复制可用于处理更长的头部。

I/OAT2附带的虚拟化功能
在服务器虚拟化应用中,由于多个VMs共享一个网口,会由于VMM软件的开销影响而导致I/O性能损失非常的大。支持I/OAT2的平台会在平台和网卡硬件上都进行相应的改进,可提供更高效的网络数据传输,比如VM、VMM网络协议栈处理效率均可受益,该技术还可以加速数据从网络NIC硬件队列到虚拟NIC的移动。此外还利用了VMDq(NIC使用多硬件队列给VMM软交换机加速)来提升虚拟化应用的效能。
I/OAT2附带的虚拟化功能
VMDq通过排序和分类封包来提升虚拟机应用中共享网卡的效率。如上图所示,在发送数据的时候,实行轮叫发送队列服务,确保公平发送,防止出现线头阻塞(Head-of-line blocking, HOL)现象。在接收数据的时候,VMDq部分将属于不同VMs的封包分类,然后由VMM成组的发送到VM,从而减少VMM交换机代码执行的次数,以获得较高的效率。
经过了1年多的推广,I/OAT技术已经得到了业界广泛的支持,比如MS Server 2003 SNP、Linux Kernel 2.6.18、SuSE Enterprise Linux Server 10、Redhat Enterprise Linux 5.0都已经支持I/OAT技术,VMWare也计划在下半年推出的VMWare ESX Server 3.5中增加对这一功能的支持。
| 功能 | IOAT1(Bensley) | IOAT2(Stoakley/Caneland) | IOAT3(Next Gen Platform) |
| Intel QuickData Tech(Data Movement engine)BW | 2GB/s | 2GB/s | 4GB/s |
| DMA通道数量 | 4 | 4 | 8 |
| LAN stateless offloads (Header/data split, Receive Side Scaling, TX/RX checksums, TCP segmentation) | 支持 | 支持 | 支持 |
| Message Signaled Interrupts | MSI | MSI-X | MSI-X |
| Direct Cache Access | 支持 | 支持 | |
| Low Latency Interrupt | 支持 | 支持 | |
| Optimized Header-Splitting / Replication | 支持 | 支持 | |
| Multi-VM Direct Assignment of Data Movement Engine | 支持 | ||
| Required LAN Si | IOAT1 | IOAT2 | IOAT3 |
| Gilgal Dual GbE PHY | 支持 | ||
| Zoar Dual GbE MAC/PHY | 支持 | 支持 | 支持 |
| Kawela(Adoram) Dual GbE MAC/PHY | 支持 | 支持 | 支持 |
| Oplin Dual 10 GbE MAC | 支持 | 支持 | 支持 |
| Niantic(Hadar) Dual 10 GbE MAC | 支持 | 支持 | 支持 w/RSC |
I/OAT系列特性对比
从VT-x到VT-d,再配合I/OAT2,45nm服务器平台提供了完善的虚拟化能力和IO能力,这些都可以实质性地提升最终产品的能力。