Zynq MPSoC得到 Xen 管理程序支持
賽靈思最新 Zynq 器件采用 Xen 管理程序,但選擇這種開源虛擬化方案的關鍵在于其支持能力。
本文引用地址:http://www.biyoush.com/article/201601/286362.htm作者:Steven H. VanderLeest
DornerWorks 公司首席運營官
Xen 開源管理程序是一種功能齊全的虛擬化技術,通常用于云計算,最近才進入嵌入式系統(tǒng)領域。DornerWorks 在新型 Zynq® UltraScale+ MPSoC 器件上提供 Xen 支持,為賽靈思用戶帶來多種優(yōu)勢。Xen Zynq 管理程序不僅實現(xiàn)快速的軟件集成和更高的系統(tǒng)安全性與保密性,而且還能將企業(yè)級的云計算能力運用到嵌入式領域。
管理程序提供的嚴格設計分區(qū)功能有助于在計算器件上快速集成新軟件(包括整個操作系統(tǒng))。同時,這種隔離方式可減少甚至消除獨立軟件功能之間的意外干擾。
此外,這種隔離方式還能減少功能間的意外交互,縮小受風險威脅的攻擊面,從而極大增強系統(tǒng)的安全性與保密性,進而更容易實現(xiàn)安全性或保密性屬性。企業(yè)級云計算給嵌入式領域同樣帶來了諸多優(yōu)勢,例如只需少許修改就能將原有軟件在新的硬件上部署。
我們在具體介紹 Zynq MPSoC 上的開源 Xen 管理程序 Xen Zynq 之前,首先簡單了解一下什么是管理程序。
什么是管理程序?
管理程序是實現(xiàn)虛擬化的基礎軟件層。正如操作系統(tǒng) (OS) 管理同時運行的多個應用程序,每個應用程序包含在一個進程中,可以訪問由操作系統(tǒng)管理的機器資源;管理程序管理同時運行的多個操作系統(tǒng),每個操作系統(tǒng)包含在一個虛擬機中,可以訪問由管理程序管理的機器資源。
虛擬化概念可追溯到二十世紀六十年代。Popek 和 Goldberg 在 1974 年用三個特征定義了虛擬機監(jiān)視程序 (VMM) 的概念:
• VMM 程序具有與原(物理)機器相同的運行時間(虛擬)環(huán)境。
• VMM 對性能的影響可以忽略不計。
• VMM 管理系統(tǒng)資源。
管理程序是一種幾乎只關注基本機器管理任務的 VMM。這意味著文件系統(tǒng)、圖形用戶界面和網(wǎng)絡協(xié)議棧等常見任務不在這層實現(xiàn),而是委托給更高的層,例如運行在由管理程序托管的虛擬機上的客戶操作系統(tǒng)內。
如上所述,在硬件上運行的管理程序被稱為 1 類管理程序。相比之下,2 類管理程序不是最低的軟件層,而是托管在操作系統(tǒng)上。這類管理程序通常用來讓一種操作系統(tǒng)運行在另一種操作系統(tǒng)之上,例如,Mac 用戶利用 Parallels 在 MacBook 上運行 Windows,或者 Windows 用戶使用 VirtualBox 在虛擬機上啟動并運行 Linux。
企業(yè)管理程序與嵌入式管理程序之間也存在重大區(qū)別。云計算和大數(shù)據(jù)是管理程序的典型企業(yè)級用例。管理程序是最近才進入嵌入式領域的。隨著具備足夠高性能和較低功耗的處理器出現(xiàn)才被該領域所采用。
嵌入式管理程序的用例具有一個共同特點:將多個復雜功能整合到單個計算平臺中,同時保持一定間距。在航空航天領域,管理程序經(jīng)常用于支持集成式模塊化航空電子設備,將以前在聯(lián)合式(獨立)航空電子硬件上執(zhí)行的軟件整合到單個計算平臺中。功能包括飛行控制、導航、飛行管理系統(tǒng)、防碰等。聯(lián)邦航空局 (FAA) 要求以前在獨立硬件上運行的軟件功能在整合后不能相互影響。這種隔離性通過 DO-248C 等標準定義的嚴格的分區(qū)模式來實現(xiàn)。
當整合功能時,F(xiàn)AA 考慮的是航班安全問題,而軍用航空電子設備也同樣需要隔離以支持保密性。在單個系統(tǒng)上通過嚴格分區(qū)支持多個分類等級的這種方法采用一種名為多重獨立安全等級 (MILS) 的架構。
醫(yī)療保健行業(yè)也考慮使用管理程序為高端醫(yī)療設備實現(xiàn)類似的整合,例如核磁共振掃描儀、機器人(或機器人輔助)外科手術設備以及 CT 掃描儀,所有這些設備目前都包含多個獨立處理系統(tǒng)。整合的功能有可能包括內科醫(yī)生圖形用戶界面、圖像處理、實時電機控制、患者信息數(shù)據(jù)庫和系統(tǒng)管理功能。
在汽車領域,要想將汽車內嵌的數(shù)十個獨立微處理器和微控制器整合在一起,使用管理程序是一種不錯的方法。幾乎所有汽車 OEM 廠商都在考慮使用管理程序將信息娛樂、駕駛員與乘客控制、高級駕駛員輔助系統(tǒng) (ADAS)、儀表板、導航系統(tǒng)、互聯(lián)網(wǎng)連接以及實時控制等功能進行整合。
考慮虛擬化解決方案時,一定要評估 VMM 對性能的影響是否小到可以被忽略。管理程序可控制所有硬件資源(CPU、存儲器和 I/O),因此有可能影響所有資源的性能。就 CPU 而言,一項重要指標是使內核從運行一臺虛擬機切換為運行另一臺虛擬機所需的時間。該指標有時被稱為上下文切換時間,但也稱為分區(qū)或域切換時間,這是為了將它與操作系統(tǒng)在進程間的切換這個類似概念加以區(qū)分。還有一個相關的指標是抖動,該指標用來衡量切換時間的變化有多大,以及這種變化對于確定性和可預測性的影響。
實時任務設計人員還會測量可調度的最小時間片,這能約束 CPU 調度的最大頻率,或者換句話說,能約束給定時間內可執(zhí)行的最大虛擬機數(shù)量。當測量對存儲器的影響時,管理程序內核的存儲足跡由不變的基本部分以及針對每個被添加客戶機(虛擬機)的增量部分組成。累積的存儲足跡約束虛擬機的最大數(shù)量。在 I/O 性能方面,應對每個目標器件測量帶寬和時延這兩個關鍵數(shù)值,不過您也可根據(jù)一些通用指標(例如總的中斷時延或原始通信帶寬)進行估算。
很多管理程序支持兩種 I/O 方案:即專用和共享。專用 I/O 一般開銷較低。這種方式下,管理程序會提供一個可直接或唯一性地訪問特定 I/O 器件的虛擬機,該 I/O 器件通常被稱為“直通”器件。共享 I/O 開銷較高,因為管理程序必須采取一些機制來實現(xiàn)共享方案。
開源方面
“開源”一詞用來描述軟件是開放的,但不一定是免費的。開源軟件的源代碼允許在精心制定的許可協(xié)議下修改和共享,以使軟件的自由性得到保護。最為廣泛認可的開源許可證協(xié)議是 GNU 通用公共許可證(有效版本為 GPLv2 和 GPLv3)、GNU 寬通用公共許可證、Apache 許可證和 BSD 許可證(有多個不同版本)。
開源不一定免費。以開源產品為主的公司與傳統(tǒng)軟件公司有所不同,通常使用不同的收入模式,例如銷售產品支持、附件(例如印刷版用戶手冊)、培訓或定制設計服務。Red Hat 是最有名的開源公司之一,他們圍繞開源 Linux 操作系統(tǒng)打造出一家數(shù)十億美元的企業(yè)。
將 XEN 映射到新的 ZYNQ
賽靈思的最新 Zynq UltraScale+ MPSoC 可提供一個用來運行 Xen 管理程序的強大平臺。該器件具有一個四核 ARM Cortex-A53 處理器,并具有硬件虛擬化擴展和 64 位的 ARMv8 指令集。強大的硬件需要配以豐富的軟件支持,以充分利用其功能和性能。開發(fā)新款 Zynq MPSoC 時,賽靈思對各行業(yè)的主要客戶進行了調研,包括航空航天與軍用、醫(yī)療、電信和汽車行業(yè)。結論是:大部分客戶都希望新型器件提供管理程序,其中一半希望是開源管理程序。賽靈思選擇 Xen 作為開源管理程序,并選擇 DornerWorks 為新的 Xen Zynq 提供支持服務。
Xen 管理程序在虛擬機中托管客戶操作系統(tǒng),為它們提供底層機器的虛擬化視圖。然后,客戶操作系統(tǒng)及其應用程序使用虛擬化的 CPU、存儲器和 I/O,同時由 Xen 管理如何將虛擬化資源映射到物理資源。
在 Xen 中,每個虛擬機都被稱為一個域。為了使管理程序內核盡可能小,Xen 會給一個域賦予特權。這個系統(tǒng)域稱為 dom0。該域啟動其他客戶域(每個客戶域稱為 domU),配置由內核強制執(zhí)行的調度和存儲器映射,以及管理 I/O 訪問權限。為了更詳細說明,我們考慮一下管理程序環(huán)境的的幾個視圖:啟動順序、ARM 異常級別、運行調度和資源管理。
從加電開始,可通過多種方式配置新型 Zynq MPSoC 上的啟動順序,包括哪個處理器(Cortex-A53 或 Cortex-R5)先啟動。在大多數(shù)用例中,兩個處理器都相當獨立,因此,標準 Xen Zynq 管理程序版本只運行在 Cortex-A53 上。圖 1 給出了一個典型的啟動順序。如果第一階段引導加載程序 (FSBL)
圖 1 – 典型啟動順序顯示直到客戶操作系統(tǒng)運行為止的各個階段。
Cortex-R5 用來托管獨立的非虛擬化的安全操作系統(tǒng),那么它通常從簡單的第一階段引導加載程序(FSBL) 中首先啟動。R5 啟動后,接下來接著啟動 A53,并從其自身的 FSBL 開始。第二階段引導加載程序(例如 U-Boot),通常用來提供更多的啟動功能,可能包括管理程序內核鏡像的完整性檢查。
在這個階段,Xen 管理程序內核被調用。內核啟動包括檢查有效的 dom0。接下來,dom0 檢查客戶域的有效鏡像,然后在一個或多個內核上啟動和調度它們。大多數(shù)情況下,dom0 會繼續(xù)運行,以便監(jiān)控系統(tǒng),提供對共享資源的管理,并處理特性系統(tǒng)故障。管理程序內核在每個域上下文切換期間運行,也通過超級調用來調用。超級調用與系統(tǒng)調用類似,后者允許應用程序調用操作系統(tǒng)服務,而這里則是調用管理程序服務。默認方式下,dom0 可進行任何管理程序調用,而 domU 只能做特定的管理程序調用。不過,開發(fā)人員可以使用 Xen 模塊 XSM-FLASK 對超級調用訪問實現(xiàn)更為精細的控制。處理器硬件強制執(zhí)行由 ARM 異常級別模型定義的分類特權。Cortex-A53 使用 ARMv8 架構,該架構定義四個異常級別,如圖 2 所示,圖中最底部的級別具有最高特權,隨著級別上升特權降低。完整訪問特權在異常級別 EL3 賦予,用于實現(xiàn) ARM Trust Zone 監(jiān)控。管理程序在 EL2 級上運行,以實現(xiàn)客戶域的虛擬化。在每個被托管的虛擬機中,托管的操作系統(tǒng)運行在 EL1 級上。最后,用戶應用程序在EL0 級以最低權限運行。當變?yōu)闄嘞掭^低的異常級別時,虛擬機寄存器必須具有相同寬度或者更窄。這意味著你可以使用 64 位管理程序和 32 位的客戶機,但不能顛倒。Xen Zynq 使用 ARMv8 架構的 AArch64 執(zhí)行模型,從而支持 64 位或 32 位客戶機。
特權域 dom0 建立調度,以決定各域何時運行以及在哪個或哪些內核上運行。然后,管理程序內核執(zhí)行配置后的調度計劃。為達到某種類型的確定性,應配置一個調度計劃,使客戶域在它的時隙內對機器具有唯一訪問權。圖 3 給出的實例中,客戶機 1(與 dom0 一起)在單個時隙內運行在多個內核上,而客戶機 2 和 3 則沒有這個限制,因此可以在其他時隙內以混合匹配的負載平衡計劃對它們進行調度。
管理程序管理所有機器資源。CPU 內核主要進行分時管理,如上所述。
存儲器不是通過分時進行共享,而是分空間共享,把存儲器的一部分分配給每個客戶域。管理程序使用硬件存儲器管理單元 (MMU) 來實施存儲器布局。I/O 的管理差異很大,取決于器件的類型。有些 I/O 器件可被直接映射到 Cortex-A53,而其他 I/O 器件必須配置后才能連通 FPGA可編程架構。
圖 2 – ARM 異常級別圖顯示了映射到 EL2 的管理程序。
客戶機對 I/O 器件的訪問由 dom0 進行配置和管理,利用對 Xen 內核進行合適的超級調用來建立指向器件的存儲器映射。Dom0 可授權客戶域訪問所需的特定 I/O 器件,也可能自己管理共享 I/O,起到網(wǎng)關的作用以實現(xiàn)共享機制。Xen 中的域間通信(包括 I/O)通常使用 Xen 事件通道進行通知,使用共享存儲器來傳送數(shù)據(jù)。Xen 共享 I/O 器件驅動程序采用分離驅動模式,客戶域中的上一半驅動程序將 API 提供至客戶操作系統(tǒng),將用來往返傳送數(shù)據(jù)的功能提供至dom0。然后,dom0 中的下一半驅動程序執(zhí)行器件的實際 I/O 操作。
建立對 XEN ZYNQ 的支持
賽靈思針對備受期待的下一代 Zynq SoC 器件搜集的客戶反饋顯示,很多客戶期望有強大的管理程序支持,其中一半想要開源選擇。這種支持不能停留在簡單的服務臺模式上,而是要具備更多支持選項,以幫助設計可平衡各種需求(例如高帶寬、低延遲、低功耗、高可靠性)的嵌入式系統(tǒng),而且能連接到嵌入式環(huán)境中的多種系統(tǒng)設備。賽靈思之所以選擇 DornerWorks,是因為我們具備 Xen 管理程序方面的專業(yè)技術以及嵌入式工程設計經(jīng)驗,而且我們是賽靈思聯(lián)盟計劃的高級成員,能為客戶提供更多支持選擇,為他們系統(tǒng)中的 FPGA 設計部分提供支持。
DornerWorks 與賽靈思協(xié)作完成了 Xen 與新的 Zynq MPSoC 的端口,然后通過認證和驗證測試來確認正確性。我們的測試不僅涵蓋 Xen 管理程序內核在硬件上正確運行,還包括特權域 dom0(運行 Linux)以及具有多種客戶操作系統(tǒng)支持的客戶域。我們將這個軟件包命名為 Xen Zynq Distribution。
圖 3–多核調度程序將客戶機 1 放在專有時隙中,并將客戶機 2 和 3 混合。
開發(fā)實際硬件之前,我們要進行附加測試。我們的硬件替代模型為 QEMU 開源機器仿真軟件,可運行在 x86 開發(fā)人員系統(tǒng)上進行獨立的調試與測試,或者運行在我們團隊的構建服務器上進行連續(xù)集成測試。 此外,我們還使用仿真板 Remus(不要與同名的 Xen 動態(tài)遷移工具混淆)進行開發(fā),該仿真板使用六個賽靈思 Virtex®-7 FPGA 來仿真 Zynq MPSoC。
圖 4 給出了我們的連續(xù)集成方案,以構建與測試服務器為核心。服務器會定期查詢源代碼庫。如果檢測到任何變化,服務器會對構建映像的相關部分執(zhí)行增量編譯。然后,它將每個測試所需的映像加載到目標機群的每個器件上,并調用測試腳本。有些測試情況下,需要對目標機群應用外部刺激。測試服務器收集并核對結果,然后通過總結面板給出測試套件的總體健康度視圖或者指出哪里有需要解決的問題。
DornerWorks 還開發(fā)了相應的基礎架構,以為賽靈思客戶提供全面支持,方便他們在新的 Zynq MPSoC 上使用 Xen 管理程序?;局С钟砷_源社區(qū)積極分子推動,用戶可交換意見和共享信息。DornerWorks 會主持論壇并從社區(qū)收集問題。我們將 Jira 作為跟蹤工具,用以追蹤賽靈思發(fā)現(xiàn)的問題、內部檢測的問題以及客戶(通過社區(qū)或付費訂閱)發(fā)現(xiàn)的問題。為了維持 Xen 工作,我們還提供付費訂閱和定制設計支持服務,即應很多客戶要求提供關鍵業(yè)務的合同式支持,以降低客戶業(yè)務風險和確保對客戶需求的及時響應。您可登陸以下網(wǎng)址,了解支持選項的更多詳情:http:// http://xen.world。
親自測試 XEN
新的 Zynq MPSoC 器件明年初出貨,您在等待過程中可首先了解 Xen。Xen 在普通 x86 PC 上運行,既可作為 1 類管理程序本地運行,也可托管在基于 Windows 的 VirtualBox 的內部。要嘗試嵌入式 Xen,你需要仿真的或實際的 ARM 硬件。選擇一個具有虛擬化擴展的 ARM 處理器,最理想的是 Cortex-A53,但其他處理器,例如 Cortex-A15 也能提供頗具代表性的環(huán)境。圖 5 描述了構建針對嵌入式目標的完整管理程序系統(tǒng)的工作流程。
圖 4–連續(xù)集成法自動進行 Xen Zynq 的構建與測試。
您可在網(wǎng)址http://www.xenproject.org/中找到 Xen,并了解如何構建作為 dom0 的 Linux 映像以及構建多種客戶操作系統(tǒng)映像。
DornerWorks 已經(jīng)發(fā)布了針對最新器件 Zynq MPSoC 的 Xen Zynq Distribution, 并在我們的網(wǎng)站上提供下載:http://dornerworks.com/services/ XilinxXen。只需添加客戶操作系統(tǒng)映像,就可擁有自己的嵌入式虛擬化系統(tǒng)。
憑借最新 Zynq MPSoC 器件上的 Xen,您可將云計算收入囊中。
圖 5–Xen 開發(fā)工作流程
評論