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