芯片輔助虛擬化:AMD PK 英特爾 |
發(fā)布時間: 2012/6/21 14:34:47 |
在過去的近20年間,X86處理器的核心指令集沒有什么變化,但AMD和Intel卻在處理器中加入了許多創(chuàng)新功能,如64位內存擴展技術、圖像處理指令、浮點運算指令以及多核心技術等等。這兩年,AMD和Intel又在CPU中加入了芯片輔助虛擬化技術,這一創(chuàng)新有望將虛擬化從夢想推向現(xiàn)實。
芯片輔助為虛擬化鋪平道路
基于Hypervisor的服務器虛擬化和操作系統(tǒng)分區(qū)(OS partITioning)是當前的兩大主要軟件虛擬化方法,但前者面臨的問題更多。操作系統(tǒng)分區(qū)可以讓宿主操作系統(tǒng)(host OS)訪問所有的硬件資源,消除了hypervisor固有的許多問題,但對操作系統(tǒng)的種類數(shù)量有限制。
而基于Hypervisor的虛擬化在支持多操作系統(tǒng)方面的靈活性更好,但在CPU、內存和I/O資源分配方面卻產(chǎn)生了大量的技術問題,需要通過大量的軟件手段來調配。Vmware之所以成為X86虛擬化領域的領導者,不僅僅因為它是最早的廠商,更重要是因為Vmware能夠克服這些硬件問題,從而為大規(guī)模虛擬化提供可行的管理環(huán)境。
但從架構上來說,傳統(tǒng)的X86平臺并不是為支持多操作系統(tǒng)并行而設計的。因此,AMD和Intel需要重新設計CPU,增加虛擬化特性,以解決上述問題。
ring轉換:Intel VT-x和AMD-V異曲同工
在傳統(tǒng)的x86運行環(huán)境下,操作系統(tǒng)運行在CPU中受保護的ring 0位置。在沒有處理器輔助的虛擬化中,ring 0還需要運行VMM(virtual machine monITor,虛擬機監(jiān)控器)或Hypervisor,以幫助VM(虛擬機)及其VOS(虛擬操作系統(tǒng))管理硬件資源。
因此,芯片廠商引入了一個新的、具有超級特權和受保護的ring -1位置來運行虛擬機監(jiān)控器(VMM)。這個新位置可以讓VOS和平共存于ring 0,而通信改道于ring -1,并且,VOS并不知道正在和同一系統(tǒng)的其他OS共享物理資源。
芯片上的這一重要創(chuàng)新消除了操作系統(tǒng)的ring轉換問題,降低了虛擬化門檻,支持任何操作系統(tǒng)的虛擬化而無須修改OS內核或run-time。Intel和AMD分別推出了VT-x和 AMD-V(即Pacifica)芯片輔助技術,并得到了虛擬化軟件廠商的支持。
Intel VT-x技術是在芯片內創(chuàng)建新的ring -1,并且提供了新的指令集,用來建立、管理和退出各種VM。在帶有虛擬化功能的芯片中,Hypervisor處于ring-1位置,它生成一個VM控制結構來支持每個新VM?梢,這提供了一種機制,可以根據(jù)需要來啟動、恢復和退出VM,并且在VMM和大量的VM之間提供了內容交換框架(framework for context-swITching)。
對VM的控制,Intel稱之為VMXs,而AMD稱之為SVMs(secure VMs),雖然名稱不同,但兩家芯片的處理方式是比較相似的。更重要的是,都允許客機操作系統(tǒng)(guest OS)進駐ring 0,從而消除了ring轉換問題。由于許多指令對位置具有敏感性(location-sensITive),而且被設計為只能在ring 0和ring 3之間轉化,因此,如果VOS運行在ring 0之外的地方,就可能會導致關鍵進程的運行出現(xiàn)無法預知的錯誤,或者在應該出錯的時候卻沒有出錯。
以往,虛擬化廠商都是通過軟件機制來截取和糾正相應問題,F(xiàn)在,由于虛擬機可以安全地運行在ring 0位置,因此,這一軟件機制也就無須再考慮了。當VM發(fā)生錯誤時,處理器可以將控制權轉給受保護的VMM,從而解決問題和重新控制VM,或者終止出錯進程但不影響同一系統(tǒng)上的其他VM。
內存管理:AMD和Intel的不同之處
Intel和AMD的不同之處在于:Intel處理器使用外部內存控制器,因此VT-x技術不提供虛擬內存管理功能,這就意味著仍然需要通過軟件來解決物理/虛擬內存資源之間的地址轉換問題。這種方法雖然有效,但不是最好的。
集成內存控制器的AMD Opteron 處理器,增加處理器數(shù)量就能增加內存帶寬
Intel平臺上的所有Xeon處理器都共享一個外部內存控制器
而AMD的處理器集成了內存控制器,所以AMD-V虛擬化技術引入了獨特的新指令,可以實現(xiàn)獨特的內存模式和特性。其中大部分指令都是針對MMU(內存管理單元 memory management unIT)設計的,可以進行內存分配。在虛擬化環(huán)境下,當需要映射多操作系統(tǒng)和運行多個應用程序時,MMU可以對物理內存尋址進行大量有效的跟蹤協(xié)調。AMD-V提供了更高級的內存特性,如Tagged Translation Look-Aside Buffers,可通過幫助VM識別最近訪問的內存頁表來提升性能。AMD-V還提供了Paged Real Mode,支持某些需要在虛擬環(huán)境下以真實模式(real-mode)進行尋址的應用程序。
另外,最有意思的特性可能是AMD對各種嵌套頁表(NPT,nested page table)的支持。與Intel的軟件方法不同,NPT允許每個VM通過獨立于硬件、虛擬的CR3內存寄存器對其內部內存管理進行更有力的控制。雖然使用NPT增加了內存查找的數(shù)量,但NPT卻消除了VT-x必須的軟件層。這種方法通過硬件管理內存的方式大大提高了VM的內存性能。在內存密集型應用,特別是在多個VM共存的環(huán)境下,這一方法的效果最為明顯。
I/O:芯片/硬件廠商的共同困境
CPU和VMM內存管理只是問題的一部分。對于硬件廠商來說,下一個巨大挑戰(zhàn)是要改善共享I/O設備的內存交互和安全性?赡茏钇D巨的任務會落在I/O硬件廠商身上,需要開發(fā)可以在多個VM之間共享存取通道的設備。當前的存儲、網(wǎng)絡和圖形卡等設備都只能向OS提供單一接口界面。這意味著,對于具有多個VM的系統(tǒng)來說,只有通過軟件方法來處理IRQ中斷、內存和記時器功能,除非I/O硬件可以支持多個功能性接口。
從處理器的角度來看,挑戰(zhàn)在于要為共享設備開發(fā)處理器級的架構。目前,AMD和Intel已經(jīng)制定了非常相似的規(guī)劃,已在06年春季公布,并得到了虛擬化廠商的支持。
在這方面,AMD可能率先推出IOMMU(I/O memory mapping unit ,I/O內存映射單元)技術,可以提供額外的指令來支持硬件虛擬化。相應的新特性可以改進DMA(direct memory access,直接內存讀取)映射和硬件設備的訪問,取代當前的圖形尋址機制,支持VM對設備的直接控制,同時在VM中可以直接訪問相應用戶的I/O。
Intel的VT-d(Virtualization Technology for Directed I/O,定向I/O虛擬化技術)標準也非常關注直接設備訪問和內存保護的問題。跟IOMMU相似,VT-d提供了在多個VM和I/O設備之間進行直接通信的架構。
不過,就目前來說,這些對于推動虛擬化應用還是有名無實,因為I/O虛擬化本身還在探討中。當前的I/O設備還不能管理共享VM對硬件資源的訪問。實際上,現(xiàn)在連通過PCI總線來實現(xiàn)設備共享的合適標準還沒有?赡苄枰(jīng)過2-4年,普遍的、基于設備的I/O硬件虛擬化解決方案才會出現(xiàn)。到那時,虛擬化廠商需要提供一個提取層,來支持對存儲、網(wǎng)絡和其他設備的共享訪問。
總的來說,虛擬化象旋風一樣席卷全球IT市場。特別是在Intel和AMD在各自新推出的x86處理器中內置了虛擬化功能,更是為X86平臺虛擬化的廣泛普及鋪平了道路。我們認為AMD的虛擬化策略可能比Intel的更具潛力。微軟和XEN開源廠商推出的基于hypervisor的虛擬化產(chǎn)品都會建立在這種芯片輔助技術之上,但VMware仍會繼續(xù)支持沒有芯片輔助的老系統(tǒng)。 本文出自:億恩科技【mszdt.com】 |