Virtualization Technology for Mobile Platforms

虛擬化技術與行動平台虛擬化

台灣大學資訊工程研究所 黃子維 魏潔紋 洪崇耕

台灣大學網路與多媒體研究所/資訊工程研究所 施吉昇副教授

1. 前言

虛擬化(Virtualization)技術在近幾年獲得許多系統工程師與系統軟體研究人員的青睞,將其使用在個人電腦,雲端伺服器與行動通訊平台上,以提昇其硬體資源的使用率與行動平台的即時性。

虛擬化技術的基本概念在於將計算機系統的硬體資源之實體模型(Physical Model/Physical representation)與邏輯模型(Logical model/Logical representation)區分為兩個不同的模型,且邏輯模型中所代表的資源可能不完全與實體模型一致,其可能為實體模型的一部分,亦可能代表較實體模型代表更多的資源。在此,我們統稱所有在硬體元件為資源,可包含處理器、記憶體、輸出入裝置等硬體元件。

虛擬化技術的起源應可回溯至1950年代。在1950年代初期,計算機系統開始支援多工(multiprogramming)系統。但是,在同一系統上的所有的程式必須共享系統的記憶體。在當時系統記憶體已經捉襟見肘的情形下,在切割共享之後,每個程式都因記憶體不足以及缺乏記憶體保護,而使程式的開發受到很大的限制。因此,記憶體不足與缺乏記憶體保護的問題一直是當時所有的工程師最大的困擾。當時的系統軟體工程師與研究人員為了有效且安全的利用系統的記憶體,提出了虛擬記憶體(Virtual Memory)的概念。歷經十年的時間,第一部具有虛擬記憶體的商用系統直到1961才由 Burroughs 公司開發成功。但是,因為需要硬體的支援,虛擬記憶體的技術並不普及,連20年後的DOS都未能支援虛擬記憶體。虛擬記憶體利用暫存器以及轉址暫存表 (Translation Look-aside Buffer, TLB)為每一個程式建構一個虛擬的記憶體空間,並利用硬碟等儲存媒介,將暫時不使用的記憶體內容儲存至非記憶體之儲存空間。簡而言之,虛擬記憶體採取以『時間換取空間』的策略,利用記憶體位址轉換所需的時間換取每一個程式擁有一個不受侵犯獨立的記憶體空間。然而也因為此一策略,許多關鍵系統(Mission critical systems)以及嵌入式系統(embedded systems)均因為虛擬記憶體帶給系統效能的不確定性,而對虛擬記憶體敬謝不敏。

近年來由於硬體計算能力日益強大,在大部份的系統中都可以忽略因為虛擬化所造成的效能不確定性,因此,其成為一門相當重要的技術。透過虛擬化技術的運用,可以讓軟體系統的開發與執行不受限於硬體的開發時程與架構,並可以對硬體資源進行更靈活的運用。

目前虛擬化技術的應用範圍相當廣泛,包含伺服器虛擬化、儲存裝置虛擬化、應用程式虛擬化等等,從系統軟體至應用軟體,皆可運用虛擬化技術。雖然運用不同層面,但這些虛擬化技術有一些共同的特性。

其一,透過虛擬化技術所提供的介面,基於虛擬層界面執行的軟體單元運用其虛擬層所提供的資源時,並不會受到實體資源(Physical resource)的變動所影響。以記憶體虛擬化技術為例,應用程式使用記憶體時,可用的虛擬記憶體大小並不受實體記憶體大小的限制,而是透過虛擬層來處理虛擬記憶體與實體記憶體的位址轉換,以及實體記憶體與硬碟之間的載入與卸載,以提供一個虛擬記憶體的介面。但,系統效能會因進行位址轉換以及資料卸載而降低。

其二,透過虛擬化技術,系統可以更有效率運用其所虛擬化的資源。以伺服器虛擬化為例,由於各種不同伺服器的使用率並不一樣,某些伺服器平時負載很小,若為了讓系統可以承受尖峰時期的最大負載,而配備可觀的運算資源,但是大部分時間卻是閒置的,將無法有效利用資源。如果將多個虛擬化伺服器運作在同一個硬體平台上,虛擬化技術可將運算資源分配給較繁忙的伺服器運用,且不影響其他伺服器的運作,以達到最有效率的資源運用。

其三,透過虛擬化技術所提供的界面執行的各個軟體元件,彼此都是獨立的個體,彼此不會互相影響。以伺服器虛擬化為例,在虛擬層上的各個伺服器都是一個獨立的伺服器,萬一其中一個伺服器故障,並不會影響到其他伺服器的運作。

2. 虛擬機器之虛擬化技術

在眾多的虛擬化技術之中,虛擬機器(Virtual Machine)是相當重要的一門技術。虛擬機器主要是在底層的硬體平台之上建構一虛擬層,此一虛擬層提供一個完整的虛擬硬體平台,因此在一虛擬層執行的作業系統或軟體可以不受限於底層的實際硬體平台運行。例如:透過虛擬化技術,可以在x86的處理器上運行ARM的虛擬機器,這樣可以加速嵌入式系統的開發。此外,在Android平台之DalVik虛擬機器[1]則可讓在智慧型手機的應用程式不再受限於智慧型手機使用的硬體平台,同一個軟體可以順利的在不同的硬體平台上執行。圖1說明在Android平台的軟體架構,期中Android Runtime即是一個虛擬機器,應用程式透過虛擬機器轉換其程式碼,而執行在Linux作業系統中。

圖1 Android軟體架構[1]

虛擬機器的設計有幾個基本原則。首先,必須讓運行於虛擬層之上的虛擬機器,運行起來就如同運行在實際平台一樣。此外,由於虛擬層之上的每個個體必須彼此獨立不影響,因此有些具有高度權限的指令必須被虛擬層進行特殊處理,以免造成整體系統的崩潰,進而影響其他虛擬機器。

虛擬機器的技術可分為許多類型,包含全虛擬化(Full virtualization)、半虛擬化(Para-virtualization)、硬體輔助虛擬化(Hardware-assisted virtualization)。

全虛擬化技術,是指虛擬層完全模擬出硬體平台的全部功能,運行於其上的Guest OS可以完全不需經過修改,就跟運行在真實的硬體平台上一樣。使用全虛擬化技術之虛擬器,需要將Guest OS對硬體平台的指令進行Binary Translate轉換為實體平台可執行的指令。由於Guest OS可能會執行一些需要特殊權限的敏感指令,虛擬層必須偵測出此類敏感指令並攔截下來,接著進行處理,因此效能較低。圖2以Intel公司之x86處理器為例,說明不同的虛擬機器技術。圖2的最底部為硬體平台以及原生系統軟體,全虛擬化技術的虛擬機器(圖中之Ring 0)安裝於原生系統軟體的環境中。虛擬機器負責指令的Binary Translation以及相容性指令之執行。運用全虛擬化技術的例子有VMware Virtual Machine[2]及Virtual PC[3]。

圖2 x86全虛擬化[4]

運用半虛擬化技術時,必須修改Guest OS的核心程式碼,將敏感指令取代成虛擬層提供的Hyper call,因此虛擬層可以免去偵測敏感指令所需的時間,效能比全虛擬化技術佳,圖3說明運用半虛擬化技術之系統架構。在此架構中,虛擬機器提供特殊設計Hyper Call以提供系統服務給Guest OS。使用半虛擬化的技術有Xen Hypervisor[5]以及Hyper-V[6]。


圖3 x86半虛擬化[4]

硬體輔助虛擬化技術,顧名思義就是透過修改硬體架構來達成虛擬層的目的。與前兩者的主要差異在於,硬體輔助虛擬化技術透過硬體來幫助提供虛擬層偵測敏感指令的功能,因此可以不必修改Guest OS的程式碼,也不在虛擬層花太多時間檢查指令,因此效能跟作業系統的可移植性都較好,但是缺點是修改硬體成本極高。使用硬體輔助的虛擬化技術有Intel的VT-X[7]以及AMD-V[8]。


圖4 x86硬體輔助虛擬化[4]

3. 應用於行動通訊平台與嵌入式系統之虛擬化技術

嵌入式系統與行動通訊平台,相較於個人運算以及科學運算等,對系統的穩定性(Robustness),即時性(Timeliness)以及系統的可移植性(Portability),有相當嚴苛的需求。而虛擬化技術因為具有提供一個獨立的軟體執行且不受實體硬體變更影響的執行空間,因此,對達成這些需求有其可行性。因此,近年來許多研究人員均致力於嵌入式系統與行動通訊平台的虛擬化技術研究。以下,我們介紹目前世界上兩個較新的技術,以及未來的挑戰。

3.1 Embedded Multi-Core Processing for Mobile Communications (eMuCo)

Embedded Multi-Core Processing for Mobile Communications (eMuCo)[9]是由歐洲的大學提議並和許多先進的智慧型行動通訊平台公司合作,以開拓嵌入式市場的目標所提出的計畫,希望以多核心和虛擬化技術作為解決方案,在智慧型行動通訊平台上提供更高的計算性能和低耗能。

圖5 智慧型行動通訊平台之軟體架構[10]

在現今智慧型行動通訊平台中的軟體系統,可大致分為應用軟體子系統(Application subsystem)以及通訊子系統(Modem Subsystem),應用軟體子系統上的執行的程式就類似像個人電腦上應用程式,而通訊子系統則負責通訊的工作,在目前這類型的實作,就類似圖5中的左半部,會讓不同的運算核心(core)負責個別子系統的工作並和其他運算核心互動交換資料。這樣的架構上擴展性(scalability)不高且不具有彈性(inflexible),因此eMuCo中提出以virtualization的概念改善這些問題[10]。

eMuCo提出在多核心的平台上,有效的利用L4 micro-kernel、負載平衡器和虛擬化技術。圖6的架構圖上分成三層

(1)The micro-kernel:只提供一些基本的kernel functionality並提供項一些IPC(Inter Process Communication)、Address space和Thread handling等機制。建立這一層的好處在於讓上方的所有subsystem都能達到安全及獨立的特性。

(2) The resource layer:這一層主要是在管理硬體資源,例如一些輸出裝置之驅動程式,而Load balancer主要是負責監控那些task/thread的執行情況來調整執行時候的負載,最後的adaptability sub-layer則是負責與硬體平台無關之驅動程式。

(3) The application layer:即是使用者的希望執行的應用程式。

圖6 eMuCo之軟體架構[10]

3.2 OKL4 Microvisor

過去的嵌入式裝置都只有單一的目標及簡易的功能,沒有太複雜的使用者介面以及缺乏與外界通訊的設備,裝置上運行的軟體在出廠時完成安裝,並且在整個生命週期都不會有變動。現在的行動裝置與過去有很大的不同,它們有著吸引人的圖型化使用者界面,有著許多的週邊裝置及功能,使用者甚至可以在其上自行安裝應用程式。

雖然嵌入式/行動裝置的虛擬化與桌上型/企業型虛擬化的概念類似,但是它們的設計需求不同,嵌入式裝置的記憶體容量較小,因此Hypervisor的footprint不能太大,才有辦法載入嵌入式裝置上。嵌入式裝置通常都有即時性(real-time)需求,此需求在企業型虛擬化技術並不存在。因此Open Kernel Lab針對嵌入式/行動裝置設計了Microvisor[11]。

圖7 MicroVisor 之軟體架構[11]

Microvisor是一個基於micro kernel架構的虛擬化平台,此平台提供的虛擬機器可以運行完整的作業系統、驅動程式及獨立執行的軟體,且每一個虛擬機器都有自己獨立且隔離的Cell,在Cells裡的程式在非特權的模式執行。每一個Cell的資源管理都是獨立的,可以指派資源給特定Cell以及讓一組Cells共享,讓資源有更有效的利用。對於有高度安全需求的程式或服務,平台也提供了Trusted Computing Base,以滿足設計需求。Microvisor的footprint很小,即使是系統資源很有限的行動裝置也能運行,為了支援即時性的需求,OKL4針對context switch,inter process communication等影響反應時間的因素做了最佳化,以提供更好的支援。

3.3 異質多核心之虛擬平台及未來挑戰

3.3.1 行動通訊之異質多核心平台

異質多核心是指系統上包含多顆處理單元(Processing unit),且這些處理單元由兩種以上不同的處理單元所組成,或者雖然是同型號但是用不同的頻率處理運算。異質多核心為現今常被使用的架構,許多平台都屬於異質多核心平台。市售的智慧型手機內通常包含了至少一顆處理資料的CPU,一顆處理聲音用的DSP以及一顆圖型運算的GPU,在嵌入式系統上,ARM公司的處理器(如Cortex A8, A9)常被用來搭配其他DSP或GPU來完成一件複雜的工作,常見的平台有Texas Instruments公司所生產的DaVinci系列、OMAP系列等,OMAP系列[12]包含了Cortex A8、C64+ DSP及SGX Graphics Accelerator,除了有實驗用的開發板外,在智慧型手機上也可以見到使用OMAP晶片的產品,如Motorola的Droid Pro[13]。

虛擬平台常被用來加速產品的開發流程,在虛擬平台上開發及進行測試,可以減少安裝實驗板上及除錯的時間,當虛擬結果正確無誤後,才會安裝到實體平台上執行及測試。異質多核心之虛擬平台還需要面對許多挑戰,克服這些問題後,才能提供更完整的異質多核心之虛擬平台。

3.3.2 待解決之問題及未來挑戰

在異質多核心的虛擬平台環境中,仍有許多的挑戰待解決。以下我們討論幾個目前最具挑戰的計個研究課題:

高效能核心間通訊協定: 當底層為異質核心時,上層的虛擬平台如何設計及使用高效能的核心間通訊來達到兩端的core做資料交換以及程式同步。這一個通訊協定雖然在多處理器以及分散式系統中均曾討論過,但是,在異質多核心平台因為系統的記憶體架構不同,目前應用於多處理器以及分散式系統的通訊協定並不適用於異質多核心平台。此外,核心間通訊協定觸發事件的方式適合使用系統中斷(interrupt)還是使用詢問模式(polling-base)的協定,對通訊效能有決定性的影響。所以有更好的設計取代系統中斷(interrupt)來達到符合在嵌入式且異質多核心的平台來使用,則是通訊協定中一個重要的議題。

負載分享以及負載平衡: 在多核心系統中,各個核心的負載不一定都相同,以達到最佳的系統資源分配以及最佳系統效能。因為虛擬化的特性,在虛擬層上執行的系統軟體以及應用軟體可以不受實體硬體變更的影響,而改變其執行方式。動態負載分享可以完全由虛擬層來完成,如此,可大幅降低軟體開發的困難度,以大幅提升系統的效能。因此,如何在系統運行時,動態的分配負載,甚至將一個核心的負載轉移至另一個核心,以達到負載平衡的目標,是虛擬化技術應用於異質多核心平台的挑戰之一。

虛擬行動平台: 虛擬化技術在行動通訊平台的應用,也朝向結合雲端運算的資源,以提升系統效能以及降低能源的使用。虛擬行動平台的觀念是將行動通訊平台的軟體以及硬體以虛擬化的方式複製一份在雲端伺服器。部分的計算工作以及檔案的儲存可以委由雲端伺服器之虛擬手機平台完成,再將計算結果傳回行動通訊平台即可,以減少行動通訊平台的電源消耗,亦可提升其效能。但是,如何同步實體手機平台與虛擬手機平台的系統狀態,並不是一個容易的研究議題。行動通訊的有限頻寬以及網路連結的不穩定性,都讓虛擬行動平台的研究深具挑戰。

4. 虛擬化技術於個人以及伺服器運算之應用

虛擬化技術除了在行動通訊平台的應用獲得很大的重視外,在個人運算平台以及伺服器運算平台,也有很多的應用。

4.1 個人運算平台之虛擬化技術應用

個人運算平台之虛擬化的目的主要是希望可以在同一台個人電腦執行多個不同的作業系統,且可以在不必重新開機的情形下同時使用。除此之外,個人電腦之虛擬化也讓不同硬體架構的作業系統運行在個人電腦上,例如x86上運行ARM的作業系統,加速嵌入式系統的開發。

通常是用個人電腦虛擬化時,會有一個Host OS運行跑在硬體平台上,而虛擬層運行在Host OS之上,而其他的Guest OS則是同時運行在虛擬層所提供的虛擬硬體平台上。這一類的虛擬化例子有VMware、Parallels、Virtual PC 以及VirtualBox。

4.2 伺服器虛擬化

隨著網路越來越發達,網路所提供的服務也越來越多,因此伺服器增加的速度越來越快速,隨著伺服器數目的增加,所需的電力、空間也越來越龐大,造成相當可觀的成本。因此伺服器虛擬化變得相當重要。

由於伺服器並不是隨時處於忙碌狀態,但是為了讓伺服器可以承受巔峰時期的負擔,必須要提供足夠大的資源給伺服器使用,因此造成大部分的時間資源閒置,造成不必要的浪費。伺服器虛擬化技術在一台實體伺服器上,透過虛擬層掌控實體資源,讓多台虛擬伺服器運行於其上,可以有效分配運算資源,並且虛擬伺服器彼此仍保有獨立性。

圖 8 Hyper-V之虛擬技術[14]

Hyper-V Server[14]是微軟所推出的伺服器虛擬化技術。相較於微軟過去所推出的Virtual Server,Hyper-V直接在將虛擬層運行於硬體平台上,虛擬機器運行的速度較高。然而由於還是有虛擬層的存在,仍會影響到虛擬機器的運行效能。根據微軟官方測試,IO存取效能可到達實體機器的92~93%,而CPU的使用率則多出9~12%,虛擬化後效能還在可以接受的範圍。

5. 參考資料

[1] Google Android Architecture, http://developer.android.com/guide/basics/what-is-android.html

[2] Vmware Virtual Machine, http://www.vmware.com/virtualization/virtual-machine.html

[3] Microsoft Virtual PC 2007, http://www.microsoft.com/windows/virtual-pc/support/virtual-pc-2007.aspx

[4] Understanding Full Virtualization, Paravirtualization, and Hardware Assist, http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf

[5] Xen Community Platforms Xen Hypervisor, http://www.xen.org/products/xenhyp.html

[6] Microsoft® Hyper-V™ Server 2008 R2, http://www.microsoft.com/downloads/en/details.aspx?FamilyID=48359dd2-1c3d-4506-ae0a-232d0314ccf6&displaylang=en

[7] Gil Neiger, Amy Santoni, Felix Leung, Dion Rodgers, Rich Uhlig. (2006, Aug, 10). Intel® Virtualization Technology: Hardware support for efficient processor virtualization.

http://www.intel.com/technology/itj/2006/v10i3/1-hardware/1-abstract.htm

[8] AMD® AMD Virtualization (AMD-V™) Technology, http://sites.amd.com/us/business/it-solutions/virtualization/Pages/amd-v.aspx

[9] Embedded Multi-Core Processing for Mobile Communications, http://www.computescotland.com/emuco-multicore-virtualisation-phones-3565.php

[10] Gonzalez, M.E.; Bilgic, A.; Lackorzynski, A.; Tudor, D.; Matus, E.; Badr, I., “ICT-Emuco. An innovative solution for future smart phones” in Multimedia and Expo, 2009. ICME 2009. , New York, NY, June 28 2009-July 3 2009, pp. 1821 – 1824

[11] OKL4 Microvisor, http://www.ok-labs.com/products/okl4-microvisor

[12] Texas Instruments OMAP applications processors, http://focus.ti.com/general/docs/wtbu/wtbugencontent.tsp?contentId=4638&navigationId=11988&templateId=6123

[13] Motorola Droid Pro Specification, http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/ci.Motorola-DROID-PRO-US-EN.alt

[14] Microsoft Hyper-V server 2008, http://www.microsoft.com/hyper-v-server/

(本文發表於網路通訊國家型科技計畫簡訊, 第 2010年11月/21 期, )

Advertisements
This entry was posted in Researches and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s