Zynq MPSoC得到 Xen 管理程序支持
賽靈思最新 Zynq 器件采用 Xen 管理程序,但選擇這種開(kāi)源虛擬化方案的關(guān)鍵在于其支持能力。
本文引用地址:http://dyxdggzs.com/article/201601/286362.htm作者:Steven H. VanderLeest
DornerWorks 公司首席運營(yíng)官
Steve.VanderLeest@DornerWorks.com
Xen 開(kāi)源管理程序是一種功能齊全的虛擬化技術(shù),通常用于云計算,最近才進(jìn)入嵌入式系統領(lǐng)域。DornerWorks 在新型 Zynq® UltraScale+ MPSoC 器件上提供 Xen 支持,為賽靈思用戶(hù)帶來(lái)多種優(yōu)勢。Xen Zynq 管理程序不僅實(shí)現快速的軟件集成和更高的系統安全性與保密性,而且還能將企業(yè)級的云計算能力運用到嵌入式領(lǐng)域。
管理程序提供的嚴格設計分區功能有助于在計算器件上快速集成新軟件(包括整個(gè)操作系統)。同時(shí),這種隔離方式可減少甚至消除獨立軟件功能之間的意外干擾。
此外,這種隔離方式還能減少功能間的意外交互,縮小受風(fēng)險威脅的攻擊面,從而極大增強系統的安全性與保密性,進(jìn)而更容易實(shí)現安全性或保密性屬性。企業(yè)級云計算給嵌入式領(lǐng)域同樣帶來(lái)了諸多優(yōu)勢,例如只需少許修改就能將原有軟件在新的硬件上部署。
我們在具體介紹 Zynq MPSoC 上的開(kāi)源 Xen 管理程序 Xen Zynq 之前,首先簡(jiǎn)單了解一下什么是管理程序。
什么是管理程序?
管理程序是實(shí)現虛擬化的基礎軟件層。正如操作系統 (OS) 管理同時(shí)運行的多個(gè)應用程序,每個(gè)應用程序包含在一個(gè)進(jìn)程中,可以訪(fǎng)問(wèn)由操作系統管理的機器資源;管理程序管理同時(shí)運行的多個(gè)操作系統,每個(gè)操作系統包含在一個(gè)虛擬機中,可以訪(fǎng)問(wèn)由管理程序管理的機器資源。
虛擬化概念可追溯到二十世紀六十年代。Popek 和 Goldberg 在 1974 年用三個(gè)特征定義了虛擬機監視程序 (VMM) 的概念:
• VMM 程序具有與原(物理)機器相同的運行時(shí)間(虛擬)環(huán)境。
• VMM 對性能的影響可以忽略不計。
• VMM 管理系統資源。
管理程序是一種幾乎只關(guān)注基本機器管理任務(wù)的 VMM。這意味著(zhù)文件系統、圖形用戶(hù)界面和網(wǎng)絡(luò )協(xié)議棧等常見(jiàn)任務(wù)不在這層實(shí)現,而是委托給更高的層,例如運行在由管理程序托管的虛擬機上的客戶(hù)操作系統內。
如上所述,在硬件上運行的管理程序被稱(chēng)為 1 類(lèi)管理程序。相比之下,2 類(lèi)管理程序不是最低的軟件層,而是托管在操作系統上。這類(lèi)管理程序通常用來(lái)讓一種操作系統運行在另一種操作系統之上,例如,Mac 用戶(hù)利用 Parallels 在 MacBook 上運行 Windows,或者 Windows 用戶(hù)使用 VirtualBox 在虛擬機上啟動(dòng)并運行 Linux。
企業(yè)管理程序與嵌入式管理程序之間也存在重大區別。云計算和大數據是管理程序的典型企業(yè)級用例。管理程序是最近才進(jìn)入嵌入式領(lǐng)域的。隨著(zhù)具備足夠高性能和較低功耗的處理器出現才被該領(lǐng)域所采用。
嵌入式管理程序的用例具有一個(gè)共同特點(diǎn):將多個(gè)復雜功能整合到單個(gè)計算平臺中,同時(shí)保持一定間距。在航空航天領(lǐng)域,管理程序經(jīng)常用于支持集成式模塊化航空電子設備,將以前在聯(lián)合式(獨立)航空電子硬件上執行的軟件整合到單個(gè)計算平臺中。功能包括飛行控制、導航、飛行管理系統、防碰等。聯(lián)邦航空局 (FAA) 要求以前在獨立硬件上運行的軟件功能在整合后不能相互影響。這種隔離性通過(guò) DO-248C 等標準定義的嚴格的分區模式來(lái)實(shí)現。
當整合功能時(shí),FAA 考慮的是航班安全問(wèn)題,而軍用航空電子設備也同樣需要隔離以支持保密性。在單個(gè)系統上通過(guò)嚴格分區支持多個(gè)分類(lèi)等級的這種方法采用一種名為多重獨立安全等級 (MILS) 的架構。
醫療保健行業(yè)也考慮使用管理程序為高端醫療設備實(shí)現類(lèi)似的整合,例如核磁共振掃描儀、機器人(或機器人輔助)外科手術(shù)設備以及 CT 掃描儀,所有這些設備目前都包含多個(gè)獨立處理系統。整合的功能有可能包括內科醫生圖形用戶(hù)界面、圖像處理、實(shí)時(shí)電機控制、患者信息數據庫和系統管理功能。
在汽車(chē)領(lǐng)域,要想將汽車(chē)內嵌的數十個(gè)獨立微處理器和微控制器整合在一起,使用管理程序是一種不錯的方法。幾乎所有汽車(chē) OEM 廠(chǎng)商都在考慮使用管理程序將信息娛樂(lè )、駕駛員與乘客控制、高級駕駛員輔助系統 (ADAS)、儀表板、導航系統、互聯(lián)網(wǎng)連接以及實(shí)時(shí)控制等功能進(jìn)行整合。
考慮虛擬化解決方案時(shí),一定要評估 VMM 對性能的影響是否小到可以被忽略。管理程序可控制所有硬件資源(CPU、存儲器和 I/O),因此有可能影響所有資源的性能。就 CPU 而言,一項重要指標是使內核從運行一臺虛擬機切換為運行另一臺虛擬機所需的時(shí)間。該指標有時(shí)被稱(chēng)為上下文切換時(shí)間,但也稱(chēng)為分區或域切換時(shí)間,這是為了將它與操作系統在進(jìn)程間的切換這個(gè)類(lèi)似概念加以區分。還有一個(gè)相關(guān)的指標是抖動(dòng),該指標用來(lái)衡量切換時(shí)間的變化有多大,以及這種變化對于確定性和可預測性的影響。
實(shí)時(shí)任務(wù)設計人員還會(huì )測量可調度的最小時(shí)間片,這能約束 CPU 調度的最大頻率,或者換句話(huà)說(shuō),能約束給定時(shí)間內可執行的最大虛擬機數量。當測量對存儲器的影響時(shí),管理程序內核的存儲足跡由不變的基本部分以及針對每個(gè)被添加客戶(hù)機(虛擬機)的增量部分組成。累積的存儲足跡約束虛擬機的最大數量。在 I/O 性能方面,應對每個(gè)目標器件測量帶寬和時(shí)延這兩個(gè)關(guān)鍵數值,不過(guò)您也可根據一些通用指標(例如總的中斷時(shí)延或原始通信帶寬)進(jìn)行估算。
很多管理程序支持兩種 I/O 方案:即專(zhuān)用和共享。專(zhuān)用 I/O 一般開(kāi)銷(xiāo)較低。這種方式下,管理程序會(huì )提供一個(gè)可直接或唯一性地訪(fǎng)問(wèn)特定 I/O 器件的虛擬機,該 I/O 器件通常被稱(chēng)為“直通”器件。共享 I/O 開(kāi)銷(xiāo)較高,因為管理程序必須采取一些機制來(lái)實(shí)現共享方案。
開(kāi)源方面
“開(kāi)源”一詞用來(lái)描述軟件是開(kāi)放的,但不一定是免費的。開(kāi)源軟件的源代碼允許在精心制定的許可協(xié)議下修改和共享,以使軟件的自由性得到保護。最為廣泛認可的開(kāi)源許可證協(xié)議是 GNU 通用公共許可證(有效版本為 GPLv2 和 GPLv3)、GNU 寬通用公共許可證、Apache 許可證和 BSD 許可證(有多個(gè)不同版本)。
開(kāi)源不一定免費。以開(kāi)源產(chǎn)品為主的公司與傳統軟件公司有所不同,通常使用不同的收入模式,例如銷(xiāo)售產(chǎn)品支持、附件(例如印刷版用戶(hù)手冊)、培訓或定制設計服務(wù)。Red Hat 是最有名的開(kāi)源公司之一,他們圍繞開(kāi)源 Linux 操作系統打造出一家數十億美元的企業(yè)。
將 XEN 映射到新的 ZYNQ
賽靈思的最新 Zynq UltraScale+ MPSoC 可提供一個(gè)用來(lái)運行 Xen 管理程序的強大平臺。該器件具有一個(gè)四核 ARM Cortex-A53 處理器,并具有硬件虛擬化擴展和 64 位的 ARMv8 指令集。強大的硬件需要配以豐富的軟件支持,以充分利用其功能和性能。開(kāi)發(fā)新款 Zynq MPSoC 時(shí),賽靈思對各行業(yè)的主要客戶(hù)進(jìn)行了調研,包括航空航天與軍用、醫療、電信和汽車(chē)行業(yè)。結論是:大部分客戶(hù)都希望新型器件提供管理程序,其中一半希望是開(kāi)源管理程序。賽靈思選擇 Xen 作為開(kāi)源管理程序,并選擇 DornerWorks 為新的 Xen Zynq 提供支持服務(wù)。
Xen 管理程序在虛擬機中托管客戶(hù)操作系統,為它們提供底層機器的虛擬化視圖。然后,客戶(hù)操作系統及其應用程序使用虛擬化的 CPU、存儲器和 I/O,同時(shí)由 Xen 管理如何將虛擬化資源映射到物理資源。
在 Xen 中,每個(gè)虛擬機都被稱(chēng)為一個(gè)域。為了使管理程序內核盡可能小,Xen 會(huì )給一個(gè)域賦予特權。這個(gè)系統域稱(chēng)為 dom0。該域啟動(dòng)其他客戶(hù)域(每個(gè)客戶(hù)域稱(chēng)為 domU),配置由內核強制執行的調度和存儲器映射,以及管理 I/O 訪(fǎng)問(wèn)權限。為了更詳細說(shuō)明,我們考慮一下管理程序環(huán)境的的幾個(gè)視圖:?jiǎn)?dòng)順序、ARM 異常級別、運行調度和資源管理。
從加電開(kāi)始,可通過(guò)多種方式配置新型 Zynq MPSoC 上的啟動(dòng)順序,包括哪個(gè)處理器(Cortex-A53 或 Cortex-R5)先啟動(dòng)。在大多數用例中,兩個(gè)處理器都相當獨立,因此,標準 Xen Zynq 管理程序版本只運行在 Cortex-A53 上。圖 1 給出了一個(gè)典型的啟動(dòng)順序。如果第一階段引導加載程序 (FSBL)

圖 1 – 典型啟動(dòng)順序顯示直到客戶(hù)操作系統運行為止的各個(gè)階段。
Cortex-R5 用來(lái)托管獨立的非虛擬化的安全操作系統,那么它通常從簡(jiǎn)單的第一階段引導加載程序(FSBL) 中首先啟動(dòng)。R5 啟動(dòng)后,接下來(lái)接著(zhù)啟動(dòng) A53,并從其自身的 FSBL 開(kāi)始。第二階段引導加載程序(例如 U-Boot),通常用來(lái)提供更多的啟動(dòng)功能,可能包括管理程序內核鏡像的完整性檢查。
在這個(gè)階段,Xen 管理程序內核被調用。內核啟動(dòng)包括檢查有效的 dom0。接下來(lái),dom0 檢查客戶(hù)域的有效鏡像,然后在一個(gè)或多個(gè)內核上啟動(dòng)和調度它們。大多數情況下,dom0 會(huì )繼續運行,以便監控系統,提供對共享資源的管理,并處理特性系統故障。管理程序內核在每個(gè)域上下文切換期間運行,也通過(guò)超級調用來(lái)調用。超級調用與系統調用類(lèi)似,后者允許應用程序調用操作系統服務(wù),而這里則是調用管理程序服務(wù)。默認方式下,dom0 可進(jìn)行任何管理程序調用,而 domU 只能做特定的管理程序調用。不過(guò),開(kāi)發(fā)人員可以使用 Xen 模塊 XSM-FLASK 對超級調用訪(fǎng)問(wèn)實(shí)現更為精細的控制。處理器硬件強制執行由 ARM 異常級別模型定義的分類(lèi)特權。Cortex-A53 使用 ARMv8 架構,該架構定義四個(gè)異常級別,如圖 2 所示,圖中最底部的級別具有最高特權,隨著(zhù)級別上升特權降低。完整訪(fǎng)問(wèn)特權在異常級別 EL3 賦予,用于實(shí)現 ARM Trust Zone 監控。管理程序在 EL2 級上運行,以實(shí)現客戶(hù)域的虛擬化。在每個(gè)被托管的虛擬機中,托管的操作系統運行在 EL1 級上。最后,用戶(hù)應用程序在EL0 級以最低權限運行。當變?yōu)闄嘞掭^低的異常級別時(shí),虛擬機寄存器必須具有相同寬度或者更窄。這意味著(zhù)你可以使用 64 位管理程序和 32 位的客戶(hù)機,但不能顛倒。Xen Zynq 使用 ARMv8 架構的 AArch64 執行模型,從而支持 64 位或 32 位客戶(hù)機。
特權域 dom0 建立調度,以決定各域何時(shí)運行以及在哪個(gè)或哪些內核上運行。然后,管理程序內核執行配置后的調度計劃。為達到某種類(lèi)型的確定性,應配置一個(gè)調度計劃,使客戶(hù)域在它的時(shí)隙內對機器具有唯一訪(fǎng)問(wèn)權。圖 3 給出的實(shí)例中,客戶(hù)機 1(與 dom0 一起)在單個(gè)時(shí)隙內運行在多個(gè)內核上,而客戶(hù)機 2 和 3 則沒(méi)有這個(gè)限制,因此可以在其他時(shí)隙內以混合匹配的負載平衡計劃對它們進(jìn)行調度。
管理程序管理所有機器資源。CPU 內核主要進(jìn)行分時(shí)管理,如上所述。
存儲器不是通過(guò)分時(shí)進(jìn)行共享,而是分空間共享,把存儲器的一部分分配給每個(gè)客戶(hù)域。管理程序使用硬件存儲器管理單元 (MMU) 來(lái)實(shí)施存儲器布局。I/O 的管理差異很大,取決于器件的類(lèi)型。有些 I/O 器件可被直接映射到 Cortex-A53,而其他 I/O 器件必須配置后才能連通 FPGA可編程架構。

圖 2 – ARM 異常級別圖顯示了映射到 EL2 的管理程序。
客戶(hù)機對 I/O 器件的訪(fǎng)問(wèn)由 dom0 進(jìn)行配置和管理,利用對 Xen 內核進(jìn)行合適的超級調用來(lái)建立指向器件的存儲器映射。Dom0 可授權客戶(hù)域訪(fǎng)問(wèn)所需的特定 I/O 器件,也可能自己管理共享 I/O,起到網(wǎng)關(guān)的作用以實(shí)現共享機制。Xen 中的域間通信(包括 I/O)通常使用 Xen 事件通道進(jìn)行通知,使用共享存儲器來(lái)傳送數據。Xen 共享 I/O 器件驅動(dòng)程序采用分離驅動(dòng)模式,客戶(hù)域中的上一半驅動(dòng)程序將 API 提供至客戶(hù)操作系統,將用來(lái)往返傳送數據的功能提供至dom0。然后,dom0 中的下一半驅動(dòng)程序執行器件的實(shí)際 I/O 操作。
建立對 XEN ZYNQ 的支持
賽靈思針對備受期待的下一代 Zynq SoC 器件搜集的客戶(hù)反饋顯示,很多客戶(hù)期望有強大的管理程序支持,其中一半想要開(kāi)源選擇。這種支持不能停留在簡(jiǎn)單的服務(wù)臺模式上,而是要具備更多支持選項,以幫助設計可平衡各種需求(例如高帶寬、低延遲、低功耗、高可靠性)的嵌入式系統,而且能連接到嵌入式環(huán)境中的多種系統設備。賽靈思之所以選擇 DornerWorks,是因為我們具備 Xen 管理程序方面的專(zhuān)業(yè)技術(shù)以及嵌入式工程設計經(jīng)驗,而且我們是賽靈思聯(lián)盟計劃的高級成員,能為客戶(hù)提供更多支持選擇,為他們系統中的 FPGA 設計部分提供支持。
DornerWorks 與賽靈思協(xié)作完成了 Xen 與新的 Zynq MPSoC 的端口,然后通過(guò)認證和驗證測試來(lái)確認正確性。我們的測試不僅涵蓋 Xen 管理程序內核在硬件上正確運行,還包括特權域 dom0(運行 Linux)以及具有多種客戶(hù)操作系統支持的客戶(hù)域。我們將這個(gè)軟件包命名為 Xen Zynq Distribution。

圖 3–多核調度程序將客戶(hù)機 1 放在專(zhuān)有時(shí)隙中,并將客戶(hù)機 2 和 3 混合。
開(kāi)發(fā)實(shí)際硬件之前,我們要進(jìn)行附加測試。我們的硬件替代模型為 QEMU 開(kāi)源機器仿真軟件,可運行在 x86 開(kāi)發(fā)人員系統上進(jìn)行獨立的調試與測試,或者運行在我們團隊的構建服務(wù)器上進(jìn)行連續集成測試。 此外,我們還使用仿真板 Remus(不要與同名的 Xen 動(dòng)態(tài)遷移工具混淆)進(jìn)行開(kāi)發(fā),該仿真板使用六個(gè)賽靈思 Virtex®-7 FPGA 來(lái)仿真 Zynq MPSoC。
圖 4 給出了我們的連續集成方案,以構建與測試服務(wù)器為核心。服務(wù)器會(huì )定期查詢(xún)源代碼庫。如果檢測到任何變化,服務(wù)器會(huì )對構建映像的相關(guān)部分執行增量編譯。然后,它將每個(gè)測試所需的映像加載到目標機群的每個(gè)器件上,并調用測試腳本。有些測試情況下,需要對目標機群應用外部刺激。測試服務(wù)器收集并核對結果,然后通過(guò)總結面板給出測試套件的總體健康度視圖或者指出哪里有需要解決的問(wèn)題。
DornerWorks 還開(kāi)發(fā)了相應的基礎架構,以為賽靈思客戶(hù)提供全面支持,方便他們在新的 Zynq MPSoC 上使用 Xen 管理程序?;局С钟砷_(kāi)源社區積極分子推動(dòng),用戶(hù)可交換意見(jiàn)和共享信息。DornerWorks 會(huì )主持論壇并從社區收集問(wèn)題。我們將 Jira 作為跟蹤工具,用以追蹤賽靈思發(fā)現的問(wèn)題、內部檢測的問(wèn)題以及客戶(hù)(通過(guò)社區或付費訂閱)發(fā)現的問(wèn)題。為了維持 Xen 工作,我們還提供付費訂閱和定制設計支持服務(wù),即應很多客戶(hù)要求提供關(guān)鍵業(yè)務(wù)的合同式支持,以降低客戶(hù)業(yè)務(wù)風(fēng)險和確保對客戶(hù)需求的及時(shí)響應。您可登陸以下網(wǎng)址,了解支持選項的更多詳情:http:// http://xen.world。
親自測試 XEN
新的 Zynq MPSoC 器件明年初出貨,您在等待過(guò)程中可首先了解 Xen。Xen 在普通 x86 PC 上運行,既可作為 1 類(lèi)管理程序本地運行,也可托管在基于 Windows 的 VirtualBox 的內部。要嘗試嵌入式 Xen,你需要仿真的或實(shí)際的 ARM 硬件。選擇一個(gè)具有虛擬化擴展的 ARM 處理器,最理想的是 Cortex-A53,但其他處理器,例如 Cortex-A15 也能提供頗具代表性的環(huán)境。圖 5 描述了構建針對嵌入式目標的完整管理程序系統的工作流程。

圖 4–連續集成法自動(dòng)進(jìn)行 Xen Zynq 的構建與測試。
您可在網(wǎng)址http://www.xenproject.org/中找到 Xen,并了解如何構建作為 dom0 的 Linux 映像以及構建多種客戶(hù)操作系統映像。
DornerWorks 已經(jīng)發(fā)布了針對最新器件 Zynq MPSoC 的 Xen Zynq Distribution, 并在我們的網(wǎng)站上提供下載:http://dornerworks.com/services/ XilinxXen。只需添加客戶(hù)操作系統映像,就可擁有自己的嵌入式虛擬化系統。
憑借最新 Zynq MPSoC 器件上的 Xen,您可將云計算收入囊中。

圖 5–Xen 開(kāi)發(fā)工作流程
評論