標籤: 暫無標籤

虛擬化是一個廣義的術語,在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬體的容量,簡化軟體的重新配置過程。CPU的虛擬化技術可以單CPU模擬多CPU并行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

1 虛擬化技術 -概述

虛擬化技術虛擬化技術

 虛擬化技術與多任務以及超線程技術是完全不同的。多任務是指在一個操作系統中多個程序同時并行運行,而在虛擬化技術中,則可以同時運行多個操作系統,而且每一個操作系統中都有多個程序運行,每一個操作系統都運行在一個虛擬的CPU或者是虛擬主機上;而超線程技術只是單CPU模擬雙CPU來平衡程序運行性能,這兩個模擬出來的CPU是不能分離的,只能協同工作。

虛擬化技術也與目前VMware Workstation等同樣能達到虛擬效果的軟體不同,是一個巨大的技術進步,具體表現在減少軟體虛擬機相關開銷和支持更廣泛的操作系統方面。

純軟體虛擬化解決方案存在很多限制。「客戶」操作系統很多情況下是通過VMM(Virtual Machine Monitor,虛擬機監視器)來與硬體進行通信,由VMM來決定其對系統上所有虛擬機的訪問。(注意,大多數處理器和內存訪問獨立於VMM,只在發生特定事件時才會涉及VMM,如頁面錯誤。)在純軟體虛擬化解決方案中,VMM在軟體套件中的位置是傳統意義上操作系統所處的位置,而操作系統的位置是傳統意義上應用程序所處的位置。這一額外的通信層需要進行二進位轉換,以通過提供到物理資源(如處理器、內存、存儲、顯卡和網卡等)的介面,模擬硬體環境。這種轉換必然會增加系統的複雜性。此外,客戶操作系統的支持受到虛擬機環境的能力限制,這會阻礙特定技術的部署,如64位客戶操作系統。在純軟體解決方案中,軟體堆棧增加的複雜性意味著,這些環境難於管理,因而會加大確保系統可靠性和安全性的困難。

而CPU的虛擬化技術是一種硬體方案,支持虛擬技術的CPU帶有特別優化過的指令集來控制虛擬過程,通過這些指令集,VMM會很容易提高性能,相比軟體的虛擬實現方式會很大程度上提高性能。虛擬化技術可提供基於晶元的功能,藉助兼容VMM軟體能夠改進純軟體解決方案。由於虛擬化硬體可提供全新的架構,支持操作系統直接在上面運行,從而無需進行二進位轉換,減少了相關的性能開銷,極大簡化了VMM設計,進而使VMM能夠按通用標準進行編寫,性能更加強大。另外,在純軟體VMM中,目前缺少對64位客戶操作系統的支持,而隨著64位處理器的不斷普及,這一嚴重缺點也日益突出。而CPU的虛擬化技術除支持廣泛的傳統操作系統之外,還支持64位客戶操作系統。

虛擬化技術是一套解決方案。完整的情況需要CPU、主板晶元組、BIOS和軟體的支持,例如VMM軟體或者某些操作系統本身。即使只是CPU支持虛擬化技術,在配合VMM的軟體情況下,也會比完全不支持虛擬化技術的系統有更好的性能。

兩大CPU巨頭Intel和AMD都想方設法在虛擬化領域中佔得先機,但是AMD的虛擬化技術在時間上要比Intel落後幾個月。Intel自2005年末開始便在其處理器產品線中推廣應用Intel Virtualization Technology(Intel VT)虛擬化技術。目前,Intel已經發布了具有Intel VT虛擬化技術的一系列處理器產品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,還有Core Duo系列和Core Solo系列中的部分產品,以及伺服器/工作站平台上的Xeon LV系列、Xeon 5000系列、Xeon 5100系列、Xeon MP 7000系列以及Itanium 2 9000系列;同時絕大多數的Intel下一代主流處理器,包括Merom核心移動處理器,Conroe核心桌面處理器,Woodcrest核心伺服器處理器,以及基於Montecito核心的Itanium 2高端伺服器處理器都將支持Intel VT虛擬化技術。

而AMD方面也已經發布了支持AMD Virtualization Technology(AMD VT)虛擬化技術的一系列處理器產品,包括Socket S1介面的Turion 64 X2系列以及Socket AM2介面的Athlon 64 X2系列和Athlon 64 FX系列等等,並且絕大多數的AMD下一代主流處理器,包括即將發布的Socket F介面的Opteron都將支持AMD VT虛擬化技術。

2 虛擬化技術 -歷史

虛擬化技術虛擬化技術

 虛擬化(Virtualization)技術最早出現在 20 世紀 60 年代的 IBM 大型機系統,在70年代的 System 370 系列中逐漸流行起來,這些機器通過一種叫虛擬機監控器(Virtual Machine Monitor,VMM)的程序在物理硬體之上生成許多可以運行獨立操作系統軟體的虛擬機(Virtual Machine)實例。隨著近年多核系統、集群、網格甚至雲計算的廣泛部署,虛擬化技術在商業應用上的優勢日益體現,不僅降低了 IT 成本,而且還增強了系統安全性和可靠性,虛擬化的概念也逐漸深入到人們日常的工作與生活中。

虛擬化是一個廣義的術語,對於不同的人來說可能意味著不同的東西,這要取決他們所處的環境。在計算機科學領域中,虛擬化代表著對計算資源的抽象,而不僅僅局限於虛擬機的概念。例如對物理內存的抽象,產生了虛擬內存技術,使得應用程序認為其自身擁有連續可用的地址空間(Address Space),而實際上,應用程序的代碼和數據可能是被分隔成多個碎片頁或段),甚至被交換到磁碟、快閃記憶體等外部存儲器上,即使物理內存不足,應用程序也能順利執行。

3 虛擬化技術 -分類

虛擬化技術主要分為以下幾個大類 :
虛擬化技術虛擬化技術

1.平台虛擬化(Platform Virtualization),針對計算機和操作系統的虛擬化。 

2.資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,比如內存、存儲、網路資源等。 

3.應用程序虛擬化(Application Virtualization),包括模擬、模擬、解釋技術等。 

我們通常所說的虛擬化主要是指平台虛擬化技術,通過使用控制程序(Control Program,也被稱為 Virtual Machine Monitor 或 Hypervisor),隱藏特定計算平台的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境(稱為虛擬機)。虛擬機中運行的操作系統被稱為客戶機操作系統(Guest OS),運行虛擬機監控器的操作系統被稱為主機操作系統(Host OS),當然某些虛擬機監控器可以脫離操作系統直接運行在硬體之上(如 VMWARE 的 ESX 產品)。運行虛擬機的真實系統我們稱之為主機系統。


平台虛擬化技術又可以細分為如下幾個子類:

1.全虛擬化(Full Virtualization) 
全虛擬化是指虛擬機模擬了完整的底層硬體,包括處理器、物理內存、時鐘、外設等,使得為原始硬體設計的操作系統或其它系統軟體完全不做任何修改就可以在虛擬機中運行。操作系統與真實硬體之間的交互可以看成是通過一個預先規定的硬體介面進行的。全虛擬化 VMM 以完整模擬硬體的方式提供全部介面(同時還必須模擬特權指令的執行過程)。舉例而言,x86 體系結構中,對於操作系統切換進程頁表的操作,真實硬體通過提供一個特權 CR3 寄存器來實現該介面,操作系統只需執行 "mov pgtable,%%cr3" 彙編指令即可。全虛擬化 VMM 必須完整地模擬該介面執行的全過程。如果硬體不提供虛擬化的特殊支持,那麼這個模擬過程將會十分複雜:一般而言,VMM 必須運行在最高優先順序來完全控制主機系統,而 Guest OS 需要降級運行,從而不能執行特權操作。當 Guest OS 執行前面的特權彙編指令時,主機系統產生異常(General Protection Exception),執行控制權重新從 Guest OS 轉到 VMM 手中。VMM 事先分配一個變數作為影子 CR3 寄存器給 Guest OS,將 pgtable 代表的客戶機物理地址(Guest Physical Address)填入影子 CR3 寄存器,然後 VMM 還需要 pgtable 翻譯成主機物理地址(Host Physical Address)並填入物理 CR3 寄存器,最後返回到 Guest OS中。隨後 VMM 還將處理複雜的 Guest OS 缺頁異常(Page Fault)。比較著名的全虛擬化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。

2.超虛擬化(Paravirtualization) 
這是一種修改 Guest OS 部分訪問特權狀態的代碼以便直接與 VMM 交互的技術。在超虛擬化虛擬機中,部分硬體介面以軟體的形式提供給客戶機操作系統,這可以通過 Hypercall(VMM 提供給 Guest OS 的直接調用,與系統調用類似)的方式來提供。例如,Guest OS 把切換頁表的代碼修改為調用 Hypercall 來直接完成修改影子 CR3 寄存器和翻譯地址的工作。由於不需要產生額外的異常和模擬部分硬體執行流程,超虛擬化可以大幅度提高性能,比較著名的 VMM 有 Denali、Xen。

3.硬體輔助虛擬化(Hardware-Assisted Virtualization) 
硬體輔助虛擬化是指藉助硬體(主要是主機處理器)的支持來實現高效的全虛擬化。例如有了 Intel-VT 技術的支持,Guest OS 和 VMM 的執行環境自動地完全隔離開來,Guest OS 有自己的「全套寄存器」,可以直接運行在最高級別。因此在上面的例子中,Guest OS 能夠執行修改頁表的彙編指令。Intel-VT 和 AMD-V 是目前 x86 體系結構上可用的兩種硬體輔助虛擬化技術。

4.部分虛擬化(Partial Virtualization) 
VMM 只模擬部分底層硬體,因此客戶機操作系統不做修改是無法在虛擬機中運行的,其它程序可能也需要進行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑,最早出現在第一代的分時系統 CTSS 和 IBM M44/44X 實驗性的分頁系統中。

5.操作系統級虛擬化(Operating System Level Virtualization) 
在傳統操作系統中,所有用戶的進程本質上是在同一個操作系統的實例中運行,因此內核或應用程序的缺陷可能影響到其它進程。操作系統級虛擬化是一種在伺服器操作系統中使用的輕量級的虛擬化技術,內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不了解對方的存在。比較著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。

這種分類並不是絕對的,一個優秀的虛擬化軟體往往融合了多項技術。例如 VMware Workstation 是一個著名的全虛擬化的 VMM,但是它使用了一種被稱為動態二進位翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的 Trap-And-Emulate 的處理方式,這與超虛擬化相似,只不過超虛擬化是靜態地修改程序代碼。對於超虛擬化而言,如果能利用硬體特性,那麼虛擬機的管理將會大大簡化,同時還能保持較高的性能。

4 虛擬化技術 -原理及挑戰

純軟體虛擬化技術的原理及面臨的挑戰,虛擬機監控器應當具備的條件

1974 年,Popek 和 Goldberg 在《Formal Requirements for Virtualizable Third Generation Architectures》 論文中提出了一組稱為虛擬化準則的充分條件,滿足這些條件的控制程序可以被稱為虛擬機監控器(Virtual Machine Monitor,簡稱 VMM):

1.資源控制。控制程序必須能夠管理所有的系統資源。
2.等價性。在控制程序管理下運行的程序(包括操作系統),除時序和資源可用性之外的行為應該與沒有控制程序時的完全一致,且預先編寫的特權指令可以自由地執行。
3.效率性。絕大多數的客戶機指令應該由主機硬體直接執行而無需控制程序的參與。
儘管基於簡化的假設,但上述條件仍為評判一個計算機體系結構是否能夠有效支持虛擬化提供了一個便利方法,也為設計可虛擬化計算機架構給出了指導原則。

原理簡介

我們知道,傳統的 x86 體系結構缺乏必要的硬體支持,任何虛擬機監控器都無法直接滿足上述條件,所以不是一個可虛擬化架構,但是我們可以使用純軟體實現的方式構造虛擬機監控器。

虛擬機是對真實計算環境的抽象和模擬,VMM 需要為每個虛擬機分配一套數據結構來管理它們狀態,包括虛擬處理器的全套寄存器,物理內存的使用情況,虛擬設備的狀態等等。VMM 調度虛擬機時,將其部分狀態恢復到主機系統中。並非所有的狀態都需要恢復,例如主機 CR3 寄存器中存放的是 VMM 設置的頁表物理地址,而不是 Guest OS 設置的值。主機處理器直接運行 Guest OS 的機器指令,由於 Guest OS運行在低特權級別,當訪問主機系統的特權狀態(如寫 GDT 寄存器)時,許可權不足導致主機處理器產生異常,將運行權自動交還給 VMM。此外,外部中斷的到來也會導致 VMM 的運行。VMM 可能需要先將 該虛擬機的當前狀態寫回到狀態數據結構中,分析虛擬機被掛起的原因,然後代表 Guest OS 執行相應的特權操作。最簡單的情況,如Guest OS 對 CR3 寄存器的修改,只需要更新虛擬機的狀態數據結構即可。一般而言,大部分情況下,VMM 需要經過複雜的流程才能完成原本簡單的操作。最後 VMM 將運行權還給 Guest OS,Guest OS 從上次被中斷的地方繼續執行,或處理 VMM 「塞」入的虛擬中斷和異常。這種經典的虛擬機運行方式被稱為 Trap-And-Emulate,虛擬機對於 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設計會比較複雜,系統整體性能受到明顯的損害。 

面臨的挑戰

在設計純軟體 VMM 的時候,需要解決如下挑戰 :

1.確保 VMM 控制所有的系統資源。 
x86 處理器有 4 個特權級別,Ring 0 ~ Ring 3,只有運行在 Ring 0 ~ 2 級時,處理器才可以訪問特權資源或執行特權指令;運行在 Ring 0 級時,處理器可以訪問所有的特權狀態。x86 平台上的操作系統一般只使用 Ring 0 和 Ring 3 這兩個級別,操作系統運行在 Ring 0 級,用戶進程運行在 Ring 3 級。為了滿足上面的第一個充分條件-資源控制,VMM 自己必須運行在 Ring 0 級,同時為了避免 Guest OS 控制系統資源,Guest OS 不得不降低自身的運行級別,運行在 Ring 1 或 Ring 3 級(Ring 2 不使用)。

2.特權級壓縮(Ring Compression)。 
VMM 使用分頁或段限制的方式保護物理內存的訪問,但是 64 位模式下段限制不起作用,而分頁又不區分 Ring 0, 1, 2。為了統一和簡化 VMM的設計,Guest OS 只能和 Guest 進程一樣運行在 Ring 3 級。VMM 必須監視 Guest OS 對 GDT、IDT 等特權資源的設置,防止 Guest OS 運行在 Ring 0級,同時又要保護降級后的 Guest OS 不受 Guest 進程的主動攻擊或無意破壞。

3.特權級別名(Ring Alias)。 
特權級別名是指 Guest OS 在虛擬機中運行的級別並不是它所期望的。VMM 必須保證 Guest OS 不能獲知正在虛擬機中運行這一事實,否則可能打破等價性條件。例如,x86 處理器的特權級別存放在 CS 代碼段寄存器內,Guest OS 可以使用非特權 push 指令將 CS 寄存器壓棧,然後 pop 出來檢查該值。又如,Guest OS 在低特權級別時讀取特權寄存器 GDT、LDT、IDT 和 TR,並不發生異常,從而可能發現這些值與自己期望的不一樣。為了解決這個挑戰,VMM 可以使用動態二進位翻譯的技術,例如預先把 「push %%cs」 指令替換,在棧上存放一個影子 CS 寄存器值;又如,可以把讀取 GDT 寄存器的操作「sgdt dest」改為「movl fake_gdt, dest」。

4.地址空間壓縮(Address Space Compression)。 
地址空間壓縮是指 VMM 必須在Guest OS 的地址空間中保留一部分供其使用。例如,中斷描述表寄存器(IDT Register)中存放的是中斷描述表的線性地址,如果 Guest OS 運行過程中來了外部中斷或觸發處理器異常,必須保證運行權馬上轉移到 VMM 中,因此 VMM 需要將 Guest OS 的一部分線性地址空間映射成自己的中斷描述表的主機物理地址。VMM 可以完全運行在 Guest OS 的地址空間中,也可以擁有獨立的地址空間,後者的話,VMM 只佔用 Guest OS 很少的地址空間,用於存放中斷描述表和全局描述符表(GDT)等重要的特權狀態。無論如何哪種情況,VMM 應該防止 Guest OS 直接讀取和修改這部分地址空間。

5.處理 Guest OS 的缺頁異常。 
內存是一種非常重要的系統資源,VMM 必須全權管理,Guest OS 理解的物理地址只是客戶機物理地址(Guest Physical Address),並不是最終的主機物理地址(Host Physical Address)。當 Guest OS 發生缺頁異常時,VMM 需要知道缺頁異常的原因,是 Guest 進程試圖訪問沒有許可權的地址,或是客戶機線性地址(Guest Linear Address)尚未翻譯成 Guest Physical Address,還是客戶機物理地址尚未翻譯成主機物理地址。一種可行的解決方法是 VMM 為 Guest OS 的每個進程的頁表構造一個影子頁表,維護 Guest Linear Address 到 Host Physical Address 的映射,主機 CR3 寄存器存放這個影子頁表的物理內存地址。VMM 同時維護一個 Guest OS 全局的 Guest Physical Address 到 Host Physical Address 的映射表。發生缺頁異常的地址總是Guest Linear Address,VMM 先去 Guest OS 中的頁表檢查原因,如果頁表項已經建立,即對應的Guest Physical Address 存在,說明尚未建立到 Host Physical Address的映射,那麼 VMM 分配一頁物理內存,將影子頁表和映射表更新;否則,VMM 返回到 Guest OS,由 Guest OS 自己處理該異常。

6.處理 Guest OS 中的系統調用。 
系統調用是操作系統提供給用戶的服務常式,使用非常頻繁。最新的操作系統一般使用 SYSENTER/SYSEXIT 指令對來實現快速系統調用。SYSENTER 指令通過IA32_SYSENTER_CS,IA32_SYSENTER_EIP 和 IA32_SYSENTER_ESP 這 3 個 MSR(Model Specific Register)寄存器直接轉到 Ring 0級;而 SYSEXIT 指令不在 Ring 0 級執行的話將觸發異常。因此,如果 VMM 只能採取 Trap-And-Emulate 的方式處理這 2 條指令的話,整體性能將會受到極大損害。

7.轉發虛擬的中斷和異常。 
所有的外部中斷和主機處理器的異常直接由VMM 接管,VMM 構造必需的虛擬中斷和異常,然後轉發給 Guest OS。VMM 需要模擬硬體和操作系統對中斷和異常的完整處理流程,例如 VMM 先要在 Guest OS 當前的內核棧上壓入一些信息,然後找到 Guest OS 相應處理常式的地址,並跳轉過去。VMM 必須對不同的 Guest OS 的內部工作流程比較清楚,這增加了 VMM 的實現難度。同時,Guest OS 可能頻繁地屏蔽中斷和啟用中斷,這兩個操作訪問特權寄存器 EFLAGS,必須由 VMM 模擬完成,性能因此會受到損害。 Guest OS 重新啟用中斷時,VMM 需要及時地獲知這一情況,並將積累的虛擬中斷轉發。

8.Guest OS 頻繁訪問特權資源。 
Guest OS對特權資源的每次訪問都會觸發處理器異常,然後由 VMM 模擬執行,如果訪問過於頻繁,則系統整體性能將會受到極大損害。比如對中斷的屏蔽和啟用,cli(Clear Interrupts)指令在 Pentium 4 處理器上需要花費 60 個時鐘周期(cycle)。又如,處理器本地高級可編程中斷處理器(Local APIC)上有一個操作系統可修改的任務優先順序寄存器(Task-Priority Register),IO-APIC 將外部中斷轉發到 TPR 值最低的處理器上(期望該處理器正在執行低優先順序的線程),從而優化中斷的處理。TPR 是一個特權寄存器,某些操作系統會頻繁設置(Linux Kernel只在初始化階段為每個處理器的 TPR 設置相同的值)。

軟體 VMM 所遇到的以上挑戰從本質上來說是因為 Guest OS 無法運行在它所期望的最高特權級,傳統的 Trap-And-Emulate 處理方式雖然以透明的方式基本解決上述挑戰,但是帶來極大的設計複雜性和性能下降。當前比較先進的虛擬化軟體結合使用二進位翻譯和超虛擬化的技術,核心思想是動態或靜態地改變 Guest OS 對特權狀態訪問的操作,盡量減少產生不必要的硬體異常,同時簡化 VMM 的設計。

5 虛擬化技術 -Intel虛擬化技術

虛擬化技術虛擬化技術

 當前非常熱門的Virtualization虛擬化技術的出現和應用其實已經有數十年的歷史了,在早期,這個技術主要應用在伺服器以及大型主機上面,現在,隨著PC性能的不斷增長,Virtualization也開始逐漸在x86架構上流行起來。

虛擬化可以將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 Virtualization完全虛擬化技術可以提供較好的客戶操作系統獨立性,不過其性能不高,在不同的應用下,可以消耗掉主機10%~30%的資源。而OS Virtualization可以提供良好的性能,然而各個客戶操作系統之間的獨立性並不強。無論是何種軟體方法,隔離性都是由Hypervisor軟體提供的,過多的隔離必然會導致性能的下降。

這些問題主要跟x86設計時就沒有考慮虛擬化有關。我們先來看看x86處理器的Privilege特權等級設計。

虛擬化技術虛擬化技術

x86架構為了保護指令的運行,提供了指令的4個不同Privilege特權級別,術語稱為Ring,從Ring 0~Ring 3。Ring 0的優先順序最高,Ring 3最低。各個級別對可以運行的指令有所限制,例如,GDT,IDT,LDT,TSS等這些指令就只能運行於Privilege 0,也就是Ring 0。要注意Ring/Privilege級別和我們通常認知的進程在操作系統中的優先順序並不同。

操作系統必須要運行一些Privilege 0的特權指令,因此Ring 0是被用於運行操作系統內核,Ring 1和Ring 2是用於操作系統服務,Ring 3則是用於應用程序。然而實際上並沒有必要用完4個不同的等級,一般的操作系統實現都僅僅使用了兩個等級,即Ring 0和Ring 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 1(0/1/3模型),或者Privilege 3(0/3/3模型)。

無論是哪一種模型,客戶OS都無法運行於Privilege 0,這樣,如GDT,IDT,LDT,TSS這些特權指令就必須通過模擬的方式來運行,這會帶來很明顯的性能問題。特別是在負荷沉重、這些指令被大量執行的時候。

同時,這些特權指令是真正的「特權」,隔離不當可以嚴重威脅到其他客戶OS,甚至主機OS。Ring Deprivileging技術使用IA32架構的Segment Limit(限制分段)和Paging(分頁)來隔離VMM和Guest OS,不幸的是EM64T的64bit模式並不支持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 VT的IA32架構CPU上無法虛擬64-bit客戶操作系統,因為無法在客戶OS之間安全地隔離。

作為一個晶元輔助(Chip-Assisted)的虛擬化技術,VT可以同時提升虛擬化效率和虛擬機的安全性,下面我們就來看看Intel VT帶來了什麼架構上的變遷。我們談論的主要是IA32上的VT技術,一般稱之為VT-x,而在Itanium平台上的VT技術,被稱之為VT-i。

VT-x將IA32的CU操作擴展為兩個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-root和VMX root

和一些文章認為的很不相同,VT同時為VMM和Guest OS提供了所有的Privilege運行等級,而不是只讓它們分別佔據一個等級:因為VMM和Guest OS運行於不同的兩個forms。

由此,GDT、IDT、LDT、TSS等這些指令就能正常地運行於虛擬機內部了,而在以往,這些特權指令需要模擬運行。而VMM也能從模擬運行特權指令當中解放出來,這樣既能解決Ring Aliasing問題(軟體運行的實際Ring與設計運行的Ring不相同帶來的問題),又能解決Ring Compression問題,從而大大地提升運行效率。Ring Compression問題的解決,也就解決了64bit客戶操作系統的運行問題。

為了建立這種兩個虛擬化窗體的架構,VT-x設計了一個Virtual-Machine Control Structure(VMCS,虛擬機控制結構)的數據結構,包括了Guest-State Area(客戶狀態區)和Host-State Area(主機狀態區),用來保存虛擬機以及主機的各種狀態參數,並提供了VM entry和VM exit兩種操作在虛擬機與VMM之間切換,用戶可以通過在VMCS的VM-execution control fields裡面指定在執行何種指令/發生何種事件的時候,VMX non-root operation環境下的虛擬機就執行VM exit,從而讓VMM獲得控制權,因此VT-x解決了虛擬機的隔離問題,又解決了性能問題。

可以看到,Inter VT的出現,可以解決了重要的虛擬處理器架構問題,讓純軟體虛擬化解決方案的性能問題得以大大緩解。然而要做的事情還有很多。

對於伺服器而言,很重要的一個組成部分就I/O,CPU的計算能力提升雖然可以更快地處理數據,但是前提是數據能夠順暢的到達CPU,因此,無論是存儲,還是網路,以及圖形卡、內存等,I/O能力都是企業級架構的一個重要部分。為此,人們不但在傳輸帶寬上投資(比如從百兆乙太網到千兆乙太網再到萬兆乙太網),還在各種系統和架構上進行了大量的投入(比如吞吐量更高的RAID系列、多層數據中心)。

在虛擬化技術中,隨著整體處理器資源的利用效率的提升,對數據I/O也提出了更高的要求。

VMM虛擬機管理器必須提供I/O虛擬化來支持處理來自多個客戶機的I/O請求,當前的虛擬化技術採用下列的方式來處理I/O虛擬化。


模擬I/O設備:VMM對客戶機摸擬一個I/O設備,通過完全模擬設備的功能,客戶機可以使用對應真實的驅動程序,這個方式可以提供完美的兼容性(而不管這個設備事實上存不存在),但是顯然這種模擬會影響到性能。作為例子,各種虛擬機在使用軟盤映像提供虛擬軟碟機的時候,就運行在這樣的方式,以及Virtual PC的模擬的真實的S3 Virge 3D顯卡,VMware系列模擬的Sound Blaster 16音效卡,都屬於這種方式。
虛擬化技術虛擬化技術

額外軟體界面:這個模型比較像I/O模擬模型,VMM軟體將提供一系列直通的設備介面給虛擬機,從而提升了虛擬化效率,這有點像Windows操作系統的DirectX技術,從而提供比I/O模擬模型更好的性能,當然兼容性有所降低,例如VMware模擬的VMware顯卡就能提供不錯的顯示速度,不過不能完全支持DirectDraw技術,Direct3D技術就更不用想了。相似的還有VMware模擬的千兆網卡,等等,這些品牌完全虛擬的設備(例如,VMware牌顯卡,VMware牌網卡)需要使用特製的驅動程序部分直接地和主機、硬體通信,比起以前完全模擬的通過虛擬機內的驅動程序訪問虛擬機的十兆百兆網卡,可以提供更高的吞吐量。

現在的I/O設備虛擬化主要是採用模擬方式或者軟體介面方式,因此性能上很容易成為瓶頸——畢竟傳統的機器上,I/O設備都很容易成為瓶頸,因此Intel就適時提出了Intel Virtualization Technology for Directed I/O,簡稱為Intel VT-d。

I/O虛擬化的關鍵在於解決I/O設備與虛擬機數據交換的問題,而這部分主要相關的是DMA直接內存存取,以及IRQ中斷請求,只要解決好這兩個方面的隔離、保護以及性能問題,就是成功的I/O虛擬化。

虛擬化技術虛擬化技術

和處理器上的Intel VT-i和VT-x一樣,Intel VT-d技術是一種基於North Bridge北橋晶元(或者按照較新的說法:MCH)的硬體輔助虛擬化技術,通過在北橋中內置提供DMA虛擬化和IRQ虛擬化硬體,實現了新型的I/O虛擬化方式,Intel VT-d能夠在虛擬環境中大大地提升 I/O 的可靠性、靈活性與性能。

傳統的IOMMUs(I/O memory management units,I/O內存管理單元)提供了一種集中的方式管理所有的DMA——除了傳統的內部DMA,還包括如AGP GART、TPT、RDMA over TCP/IP等這些特別的DMA,它通過在內存地址範圍來區別設備,因此容易實現,卻不容易實現DMA隔離,因此VT-d通過更新設計的IOMMU架構,實現了多個DMA保護區域的存在,最終實現了DMA虛擬化。這個技術也叫做DMA Remapping。I/O設備會產生非常多的中斷請求,I/O虛擬化必須正確地分離這些請求,並路由到不同的虛擬機上。傳統設備的中斷請求可以具有兩種方式:一種將通過I/O中斷控制器路由,一種是通過DMA寫請求直接發送出去的MSI(message 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性能。

根據資料表明,不日發布的Stoakley平台和Caneland平台上將包含VT-d功能,Stoakley平台是現在的Bensley的下一代產品,用於雙路Xeon處理器,而Caneland則是Truland的繼任者,用於四路Xeon處理器,這些晶元組都能支持最新的45nm Penryn處理器。

從Intel虛擬化技術發展路線圖來看,虛擬化無疑是從處理器逐漸擴展到其他設備的,從VT-i/VT-x到VT-d就非常體現了這個過程,對於關注I/O性能的企業級應用而言,完成了處理器的虛擬化和I/O的虛擬化,整個平台的虛擬化就接近完成了,因此在未來,Intel將會持續地開發VT-d技術,將各種I/O設備中加入虛擬化特性,從而提供一個強大的虛擬化基礎架構。

6 虛擬化技術 -AMD虛擬化技術

虛擬化技術虛擬化技術
簡言之,AMD Virtualization技術是一項基於硬體的技術,該技術支持虛擬軟體在一台基於AMD皓龍處理器的物理伺服器上運行多個操作系統和應用,有助於伺服器實現更高的效率和利用率。你無需再採用「一個操作系統、一個應用和一台伺服器」這種運行模式。AMD的Virtualization技術使你能更好地利用自己的資源,你的伺服器和工作站將變得更加高效,數據中心的運轉也更加有效。

例如,當今的伺服器在以不足15%的容量運行時,其能耗和散熱仍保持在24×7的水平。AMD Virtualization技術具有快速虛擬化索引的功能,這就意味著AMD四核皓龍處理器能夠簡化數據中心,實現更高的利用率。

AMD的片內安全和虛擬技術代號分別稱作Presidio和Pacifica,據其官員表示將出現在明年的Opteron處理器中。「每個人都預見到虛擬和安全技術能解決到數據中心的某些問題,」AMD的微處理器業務部總經理Marty Seyer說。

在安全方面,Presidio將利用到微軟即將推出的Windows Vista中某些功能。但AMD更吸引人的一項舉措是讓其內存控制器更「虛擬智能化」——讓晶元在一台虛擬機的不同虛擬地址之間建起一道堅固的壁壘。另外,這樣還能讓Presidio阻止某些黑客攻擊。這類攻擊通常會強迫機器借某張CD或某個分區上的操作系統啟動並使用特別工具讀取機器內存中的內容。

AMD稱Presidio會不斷改進以包含其他保護技術,例如加固鍵鼠等輸入設備與操作系統之間通訊通道等。由於這種保護技術需要操作系統的幫助,微軟為此已經計劃為Vista添加多種類型的安全技術。

AMD的官員還表示將在明年的處理器中添加對信用平台模塊(Trusted Platform Module) 1.2等Windows機器以外技術的支持。事實上,AMD正和開放信任運算機構合作開發Linux平台上的可信賴運算標準,預計集成TPM的伺服器將在2007年上市。

至於用於減輕VMware等虛擬軟體部分工作負擔的Pacifica技術,AMD稱也會不斷改善並最終包含輸入/輸出虛擬技術。AMD已經開始這項Xen計劃的研究工作,不過他們不願透露相應產品何時上市。

AMD的Presidio和Pacifica技術和Intel的虛擬技術及"LaGrande"安全技術十分相似。雖然Intel一直稱到明年首季才會向系統廠商推廣使用新的雙核奔騰D處理器"resler",但其實他們已經開始供貨部分集成虛擬技術的奔騰四處理器,而LaGrande安全功能也會在明年出現於Intel處理器中。

比較值得我們關注的應該是Pacifica虛擬技術,這將可以大大提高台式處理器的運行能力。Pacifica技術最突出的地方在於對內存控制器的改進方面。「Pacifica」通過Direct Connect Architecture(直接互連架構)和在處理器和內存控制器中引入一個新模型和功能來提高CPU的虛擬應用。

與過去的方法來進行虛擬應用不同,這項新的技術能夠減少程序的複雜性,提高虛擬系統的安全性,並通過兼容現有的虛擬系統管理軟體來減少花費在虛擬管理系統上的費用。例如,用戶能在一部機器上輕易地創建多個獨立且互相隔離的分區,從而減少了分區之間病毒傳播的危險。不過,AMD在虛擬化技術方面仍比Intel慢了一步。

AMD表示其IO虛擬化技術規範已經成型,且技術授權完全免費,並將鼓勵軟硬體廠商採納該技術並集成進PC中。

虛擬化技術AMD AM2處理器

目前AMD已經和VMware、Xensource以及微軟等公司結盟推廣其虛擬化技術。

AMD的虛擬化技術之前的開發代號為Pacifica,這種技術將在AMD今年的64位CPU核心邏輯以及晶元組兩個層面得以實現。

項目 數據
中央處理器(CPU)
CPU 類型 DualCore AMD Athlon 64 X2 Black Edition, 2600 MHz (13 x 200) 5000+
CPU 別名 Brisbane
CPU 步進 BH-G2
指令集 x86, x86-64, MMX, 3DNow!, SSE, SSE2, SSE3
原始時鐘頻率 2600 MHz
CPU 最低/最高倍頻 4x / 25x
Engineering Sample 否
L1 代碼緩存 64 KB per core (Parity)
L1 數據緩存 64 KB per core (ECC)
L2 緩存 512 KB per core (On-Die, ECC, Full-Speed)

Multi CPU
主板 ID OEM00000 PROD00000000
CPU #1 AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, 2812 MHz
CPU #2 AMD Athlon(tm) 64 X2 Dual Core Processor 5000+, 2812 MHz

CPU 物理信息
封裝類型 940 Pin uOPGA
封裝大小 4.00 cm x 4.00 cm
晶體管數量 154 百萬
工藝技術 10Mi, 65 nm, CMOS, Cu, DSL SOI
核心晶元大小 126 mm2
核心工作電壓 1.100 - 1.375 V
輸入/輸出介面電壓 1.2 V + 2.5 V
最大功耗 65 - 76 W (取決於時鍾頻率)

CPU 製造商
公司名稱 Advanced Micro Devices, Inc.

CPU 使用率
CPU 1/核心 1 1 %
CPU 1/核心 2 0 %

倍頻在CPU-Z里和優化大師里測出都為13,我在BIOS里設置的是14怎麼不對啊
我的電腦右擊屬性里主頻顯示的也是2.81G
還有就是外頻和倍頻設多少合適
主板名稱 Biostar TF570 SLI A2+

電腦的超頻就是通過人為的方式將CPU、顯卡等硬體的工作頻率提高,讓它們在高於其額定的頻率狀態下穩定工作。以Intel P4C 2.4GHz的CPU為例,它的額定工作頻率是2.4GHz,如果將工作頻率提高到2.6GHz,系統仍然可以穩定運行,那這次超頻就成功了。

CPU超頻的主要目的是為了提高CPU的工作頻率,也就是CPU的主頻。而CPU的主頻又是外頻和倍頻的乘積。例如一塊CPU的外頻為100MHz,倍頻為8.5,可以計算得到它的主頻=外頻×倍頻=100MHz×8.5 = 850MHz。

提升CPU的主頻可以通過改變CPU的倍頻或者外頻來實現。但如果使用的是Intel CPU,你盡可以忽略倍頻,因為IntelCPU使用了特殊的製造工藝來阻止修改倍頻。AMD的CPU可以修改倍頻,但修改倍頻對CPU性能的提升不如外頻好。

而外頻的速度通常與前端匯流排、內存的速度緊密關聯。因此當你提升了CPU外頻之後,CPU、系統和內存的性能也同時提升了。

CPU超頻主要有兩種方式:
  
一個是硬體設置,一個是軟體設置。其中硬體設置比較常用,它又分為跳線設置和BIOS設置兩種。

1.跳線設置超頻
早期的主板多數採用了跳線或DIP開關設定的方式來進行超頻。在這些跳線和DIP開關的附近,主板上往往印有一些表格,記載的就是跳線和DIP開關組合定義的功能。在關機狀態下,你就可以按照表格中的頻率進行設定。重新開機后,如果電腦正常啟動並可穩定運行就說明我們的超頻成功了。
比如一款配合賽揚1.7GHz使用的Intel 845D晶元組主板,它就採用了跳線超頻的方式。在電感線圈的下面,我們可以看到跳線的說明表格,當跳線設定為1-2的方式時外頻為100MHz,而改成2-3的方式時,外頻就提升到了133MHz。而賽揚1.7GHz的默認外頻就是100MHz,我們只要將外頻提升為133MHz,原有的賽揚1.7GHz就會超頻到2.2GHz上工作,是不是很簡單呢:)。

另一塊配合AMD CPU使用的VIA KT266晶元組主板,採用了DIP開關設定的方式來設定CPU的倍頻。多數AMD的倍頻都沒有鎖定,所以可以通過修改倍頻來進行超頻。這是一個五組的DIP開關,通過各序號開關的不同通斷狀態可以組合形成十幾種模式。在DIP開關的右上方印有說明表,說明了DIP開關在不同的組合方式下所帶來不同頻率的改變。

例如我們對一塊AMD 1800+進行超頻,首先要知道,Athlon XP 1800+的主頻等於133MHz外頻×11.5倍頻。我們只要將倍頻提高到12.5,CPU主頻就成為133MHz×12.5≈1.6GHz,相當於Athlon XP 2000+了。如果我們將倍頻提高到13.5時,CPU主頻成為1.8GHz,也就將Athlon XP 1800+超頻成為了Athlon XP2200+,簡單的操作換來了性能很大的提升,很有趣吧。

2.BIOS設置超頻
現在主流主板基本上都放棄了跳線設定和DIP開關的設定方式更改CPU倍頻或外頻,而是使用更方便的BIOS設置。

例如升技(Abit)的SoftMenu III和磐正(EPOX)的PowerBIOS等都屬於BIOS超頻的方式,在CPU參數設定中就可以進行CPU的倍頻、外頻的設定。如果遇到超頻后電腦無法正常啟動的狀況,只要關機並按住INS或HOME鍵,重新開機,電腦會自動恢復為CPU默認的工作狀態,所以還是在BIOS中超頻比較好。

這裡就以升技NF7主板和Athlon XP 1800+ CPU的組合方案來實現這次超頻實戰。目前市場上BIOS的品牌主要有兩種,一種是PHOENIX-Award BIOS,另一種是AMI BIOS,這裡以Award BIOS為例。

首先啟動電腦,按DEL鍵進入主板的BIOS設定界面。從BIOS中選擇Soft Menu III Setup,這便是升技主板的SoftMenu超頻功能。

進入該功能后,我們可以看到系統自動識別CPU為1800+。我們要在此處回車,將默認識別的型號改為User Define(手動設定)模式。設定為手動模式之後,原有灰色不可選的CPU外頻和倍頻現在就變成了可選的狀態。

如果你需要使用提升外頻來超頻的話,就在External Clock:133MHz這裡回車。這裡有很多外頻可供調節,你可以把它調到150MHz或更高的頻率選項上。由於升高外頻會使系統匯流排頻率提高,影響其它設備工作的穩定性,因此一定要採用鎖定PCI頻率的辦法。

Multiplier Factor一項便是調節CPU倍頻的地方,回車後進入選項區,可以根據CPU的實際情況來選擇倍頻,例如12.5、13.5或更高的倍頻。

菜鳥:如果CPU超頻后系統無法正常啟動或工作不穩定,我聽說可以通過提高CPU的核心電壓來解決,有這個道理嗎?

阿萌:對啊。因為CPU超頻后,功耗也就隨之提高。如果供應電流還保持不變,有些CPU就會因功耗不足而導致無法正常穩定的工作。而提升了電壓之後,CPU就獲得了更多的動力,使超頻變得更容易成功和穩定。

在BIOS中可以設置和調節CPU的核心電壓(如圖7)。正常的情況下可以選擇Default(默認)狀態。如果CPU超頻后系統不穩定,就可以給CPU核心加電壓。但是加電壓的副作用很大,首先CPU發熱量會增大,其次電壓加得過高很容易燒毀CPU,所以加電壓時一定要慎重,一般以0.025V、0.05V或者0.1V步進向上加就可以了。

3.用軟體實現超頻
顧名思義,就是通過軟體來超頻。這種超頻更簡單,它的特點是設定的頻率在關機或重新啟動電腦後會復原,菜鳥如果不敢一次實現硬體設置超頻,可以先用軟體超頻試驗一下超頻效果。最常見的超頻軟體包括SoftFSB和各主板廠商自己開發的軟體。它們原理都大同小異,都是通過控制時鐘發生器的頻率來達到超頻的目的。

SoftFSB是一款比較通用的軟體,它可以支持幾十種時鐘發生器。只要按主板上採用的時鐘發生器型號進行選擇后,點擊GET FSB獲得時鐘發生器的控制權,之後就可以通過頻率拉杆來進行超頻的設定了,選定之後按下保存就可以讓CPU按新設定的頻率開始工作了。不過軟體超頻的缺點就是當你設定的頻率讓CPU無法承受的時候,在你點擊保存的那一剎那導致死機或系統崩潰。

7 虛擬化技術 -CPU超頻秘技

1.CPU超頻和CPU本身的「體質」有關
很多朋友們說他們的CPU加壓超頻以後還是不穩定,這就是「體質」問題。對於同一個型號的CPU在不同周期生產的可超性不同,這些可以從處理器編號上體現出來。

2.倍頻低的CPU好超
大家知道提高CPU外頻比提高CPU倍頻性能提升快,如果是不鎖倍頻的CPU,高手們會採用提高外頻降低倍頻的方法來達到更好的效果,由此得出低倍頻的CPU具備先天的優勢。比如超頻健將AMD Athlon XP1700+/1800+以及Intel Celeron 2.0GHz等。

3.製作工藝越先進越好超
製作工藝越先進的CPU,在超頻時越能達到更高的頻率。比如Intel新推出就贏得廣泛關注的Intel Celeron D處理器,採用90納米的製造工藝,Prescott核心。已經有網友將一快2.53GHz的Celeron D超到了4.4GHz。

4.溫度對超頻有決定性影響
大家知道超頻以後CPU的溫度會大幅度的提高,配備一個好的散熱系統是必須的。這裡不光指CPU風扇,還有機箱風扇等。另外,在CPU核心上塗抹薄薄一層硅脂也很重要,可以幫助CPU良好散熱。

5.主板是超頻的利器
一塊可以良好支持超頻的主板一般具有以下優點:

(1)支持高外頻。

(2)擁有良好供電系統。如採用三相供電的主板或有CPU單路單項供電的主板。

(3)有特殊保護的主板。如在CPU風扇停轉時可以立即切斷電源,部分主板把它稱為「燒不死技術」。

(4)BIOS中帶有特殊超頻設置的主板。

(5) 做工優良,最好有6層PCB板。

8 虛擬化技術 -虛擬機遷移

 虛擬機遷移技術為伺服器虛擬化提供了便捷的方法。目前流行的虛擬化工具如 VMware,Xen,HyperV,KVM 都提供了各自的遷移組件。遷移伺服器可以為用戶節省管理資金、維護費用和升級費用。以前的 x86 伺服器,體積比較「龐大」;而現在的伺服器,體積已經比以前小了許多,遷移技術使得用戶可以用一台伺服器來同時替代以前的許多台伺服器,這樣就節省了用戶大量的機房空間。另外,虛擬機中的伺服器有著統一的「虛擬硬體資源」,不像以前的伺服器有著許多不同的硬體資源(如主板晶元組不同,網卡不同,硬碟,RAID 卡,顯卡不同)。遷移后的伺服器,不僅可以在一個統一的界面中進行管理,而且通過某些虛擬機軟體,如 VMware 提供的高可用性工具,在這些伺服器因為各種故障停機時,可以自動切換到網路中另外相同的虛擬伺服器中,從而達到不中斷業務的目的。總之,遷移的優勢在於簡化系統維護管理, 提高系統負載均衡,增強系統錯誤容忍度和優化系統電源管理。 

 

9 虛擬化技術 -未來虛擬化技術的發展

我們可以看到,硬體輔助虛擬化技術必然是未來的方向。Intel-VT目前還處在處理器級虛擬化技術的初級階段,尚需在如下方面進行發展:

1.提高操作模式間的轉換速度。 
兩種操作模式間的轉換髮生之如此頻繁,如果不能有效減少其轉換速度,即使充分利用硬體特性,虛擬機的整體性能也會大打折扣。早期的支持硬體輔助虛擬化技術的 Pentium 4 處理器需要花費 2409 個時鐘周期處理 VM entry,花費 508 個時鐘周期處理由缺頁異常觸發的 VM exit,代價相當高。隨著 Intel 技術的不斷完善,在新的 Core 架構上,相應時間已經減少到 937 和 446 個時鐘周期。未來硬體廠商還需要進一步提高模式的轉換速度,並提供更多的硬體特性來減少不必要的轉換。

2.優化翻譯後援緩衝器(TLB)的性能。 
每次 VM entry 和 VM exit 發生時,由於需要重新載入CR3 寄存器,因此 TLB(Translation Lookaside Buffer)被完全清空。虛擬化系統中操作模式的轉換髮生頻率相當高,因此系統的整體性能受到明顯損害。一種可行的方案是為 VMM 和每個虛擬機分配一個全局唯一 ID,TLB 的每一項附加該 ID 信息來索引線性地址的翻譯。

3.提供內存管理單元(MMU)虛擬化的硬體支持。 
即使使用 Intel-VT 技術,VMM 還是得用老辦法來處理 Guest OS 中發生的缺頁異常以及Guest OS 的客戶機物理地址到主機物理地址的翻譯,本質原因是 VMM 完全控制主機物理內存,因此 Guest OS 中的線性地址的翻譯同時牽涉到 VMM 和 Guest OS 的地址空間,而硬體只能看到其中的一個。Intel 和 AMD 提出了各自的解決方案,分別叫做 EPT(Extended Page Table)和 Nested Paging。這兩種技術的基本思想是,無論何時遇到客戶機物理地址,硬體自動搜索 VMM 提供的關於該 Guest OS 的一個頁表,翻譯成主機物理地址,或產生缺頁異常來觸發 VM exit。

4.支持高效的 I/O 虛擬化。 
I/O 虛擬化需要考慮性能、可用性、可擴展性、可靠性和成本等多種因素。最簡單的方式是 VMM為虛擬機模擬一個常見的 I/O 設備,該設備的功能由 VMM 用軟體或復用主機 I/O 設備的方法實現。例如 Virtual PC 虛擬機提供的是一種比較古老的 S3 Trio64顯卡。這種方式提高了兼容性,並充分利用 Guest OS 自帶的設備驅動程序,但是虛擬的 I/O 設備功能有限且性能低下。為了提高性能,VMM 可以直接將主機 I/O 設備分配給虛擬機,這會帶來兩個主要挑戰:1. 如果多個虛擬機可以復用同一個設備,VMM 必須保證它們對設備的訪問不會互相干擾。2. 如果 Guest OS 使用 DMA 的方式訪問 I/O 設備,由於 Guest OS 給出的地址並不是主機物理地址,VMM 必須保證在啟動 DMA 操作前將該地址正確轉換。Intel 和 AMD 分別提出了各自的解決方案,分別稱為 Direct I/O(VT-d)和 IOMMU,希望用硬體的手段解決這些問題,降低 VMM 實現的難度。

上一篇[騎士團長]    下一篇 [北斗星]

相關評論

同義詞:暫無同義詞