嚴(yán) 剛,肖 堃,褚文博
(1.合肥工業(yè)大學(xué),合肥 230009; 2.電子科技大學(xué),成都 610054;3.國汽(北京)智能網(wǎng)聯(lián)汽車研究院有限公司,國家智能網(wǎng)聯(lián)汽車創(chuàng)新中心,北京 100176)
在汽車行業(yè)“智能化、網(wǎng)聯(lián)化、電動化和出行方式共享化”背景下,自動駕駛成為產(chǎn)業(yè)競爭的焦點(diǎn),汽車電子的產(chǎn)業(yè)鏈和技術(shù)鏈面臨重構(gòu)。尤其是在當(dāng)前復(fù)雜多變的國際產(chǎn)業(yè)競爭形勢下,加強(qiáng)智能網(wǎng)聯(lián)汽車計算平臺的研究,具有十分重要的戰(zhàn)略意義和現(xiàn)實(shí)意義[1]。
計算平臺在硬件層實(shí)現(xiàn)多處理器整合的同時打破了傳統(tǒng)汽車電子架構(gòu)中基于總線和網(wǎng)關(guān)的物理保護(hù)屏障,使得不同安全級別的應(yīng)用共享計算能力;在軟件層基于自動駕駛操作系統(tǒng)系統(tǒng)軟件運(yùn)行具有不同功能安全及信息安全等級和實(shí)時性要求的應(yīng)用軟件。保證差異化功能安全和信息安全要求的同時滿足性能要求是自動駕駛操作系統(tǒng)系統(tǒng)軟件設(shè)計的關(guān)鍵[1]。其中,虛擬化軟件層(Hypervisor)作為支持多個操作系統(tǒng)內(nèi)核和應(yīng)用系統(tǒng)同時運(yùn)行的基礎(chǔ)模塊被提出,成為自動駕駛操作系統(tǒng)系統(tǒng)軟件中保護(hù)系統(tǒng)安全的核心組件[2]。
當(dāng)前,Hypervisor已經(jīng)在部分零部件中得到了應(yīng)用,但其研究都是針對特定的硬件平臺和具體的應(yīng)用場景,缺乏針對計算平臺虛擬化技術(shù)的普適性研究。本文中提出一種能適應(yīng)多種硬件平臺和多種應(yīng)用場景的虛擬化軟件層架構(gòu),該架構(gòu)能實(shí)現(xiàn)虛擬機(jī)之間的資源共享與分區(qū)隔離,提供多種容錯和保護(hù)機(jī)制,建立虛擬機(jī)間的高效通信機(jī)制和虛擬化性能優(yōu)化機(jī)制,滿足功能安全和信息安全的設(shè)計需求;并對該架構(gòu)進(jìn)行了原型開發(fā)與驗證。
計算平臺需要強(qiáng)大的硬件運(yùn)算資源,能基于攝像頭、毫米波雷達(dá)、激光雷達(dá)、導(dǎo)航定位系統(tǒng)、高精度地圖和V2X通信等多信息融合實(shí)現(xiàn)環(huán)境感知定位、智能決策規(guī)劃和車輛運(yùn)動控制等,滿足智能網(wǎng)聯(lián)汽車駕駛系統(tǒng)高性能和高安全性的控制要求。圖1為典型的智能網(wǎng)聯(lián)汽車計算平臺基礎(chǔ)軟件架構(gòu)。安全MCU運(yùn)行符合ISO 26262規(guī)范的Safety OS,實(shí)現(xiàn)高安全級別的車輛控制和車內(nèi)通信等。高性能片上系統(tǒng)(SoC)芯片借助虛擬化技術(shù)實(shí)現(xiàn)支持以Linux為代表的全功能量級操作系統(tǒng)和Safety OS在多個虛擬機(jī)上同時運(yùn)行[3],實(shí)現(xiàn)環(huán)境感知定位、路徑?jīng)Q策規(guī)劃等核心算法及人機(jī)接口處理算法。
圖1 計算平臺系統(tǒng)架構(gòu)
Hypervisor需求支持多種異構(gòu)處理器和多種操作系統(tǒng)類型,因此計算平臺選擇使用直接運(yùn)行于硬件系統(tǒng)之上的Type 1型Hypervisor,采用全虛擬化和硬件輔助虛擬化技術(shù),突出高安全性、高實(shí)時性和高可靠性。全虛擬化可支持客戶機(jī)操作系統(tǒng)無須修改而在Hypervisor上運(yùn)行,兼容性更好。但使用全虛擬化技術(shù)可能導(dǎo)致系統(tǒng)的I/O性能下降,因此須通過硬件輔助虛擬化技術(shù)對外設(shè)進(jìn)行硬件加速,以滿足系統(tǒng)性能要求。
本文中遵循簡潔、高內(nèi)聚和低耦合的原則完成了Hypervisor架構(gòu)設(shè)計。主要模塊包含設(shè)備驅(qū)動與模擬、CPU與中斷虛擬化、設(shè)備虛擬化、內(nèi)存管理、調(diào)度管理和客戶機(jī)操作系統(tǒng)管理等。Hypervisor的總體架構(gòu)如圖2所示。
依據(jù)ISO26262標(biāo)準(zhǔn)對自動駕駛功能安全需求進(jìn)行分解[4],表明 Hypervisor須滿足 ASIL-D的要求。本文中從安全性保障、可靠性保障和實(shí)時性保障3個方面對Hypervisor的實(shí)現(xiàn)進(jìn)行闡述,全開發(fā)流程遵循了ISO26262過程管理要求。
Hypervisor在不同分區(qū)之間實(shí)現(xiàn)了處理器資源、內(nèi)存資源和外設(shè)資源的隔離與共享,并通過訪問控制機(jī)制進(jìn)一步保證了使用共享資源時不會對其他客戶機(jī)操作系統(tǒng)或其他任務(wù)造成影響。
圖2 Hypervisor總體架構(gòu)
2.1.1 處理器資源分區(qū)隔離和共享
Hypervisor支持多個客戶機(jī)操作系統(tǒng)共享同一個處理器核心。在共享核上,Hypervisor通過時間分區(qū)對各客戶機(jī)操作系統(tǒng)進(jìn)行調(diào)度,確保分區(qū)的時間隔離。每個分區(qū)占用固定的運(yùn)行時間,在分區(qū)內(nèi)的客戶機(jī)操作系統(tǒng)可按照自己的調(diào)度方式進(jìn)行調(diào)度;時間額度滿后Hypervisor會強(qiáng)制切換到下一個客戶機(jī)操作系統(tǒng)上運(yùn)行。
計算平臺硬件系統(tǒng)中高性能CPU一般為對稱多處理器架構(gòu),Hypervisor調(diào)度器可根據(jù)處理器的親和性綁定設(shè)置讓客戶機(jī)操作系統(tǒng)在指定的處理器核心上運(yùn)行,通過這種方式實(shí)現(xiàn)處理器資源的分區(qū)隔離,如圖3所示。
圖3 Hypervisor CPU資源分區(qū)隔離
2.1.2 內(nèi)存資源分區(qū)隔離和共享
由Hypervisor對系統(tǒng)的所有可用內(nèi)存實(shí)施統(tǒng)一管理,將其內(nèi)存資源劃分為靜態(tài)可配置的池子集,在啟動時將其分配到不同資源分區(qū)中。此機(jī)制確保了分區(qū)之間的嚴(yán)格隔離,因為一個資源分區(qū)中的任務(wù)出現(xiàn)故障,只能耗盡分配給它的內(nèi)存,且無法訪問其他資源分區(qū)的內(nèi)存池。在系統(tǒng)啟動期間,Hypervisor將創(chuàng)建包含相應(yīng)內(nèi)存頁的地址空間并將其分配給每個分區(qū),分區(qū)中的程序只能訪問和管理它擁有的地址空間,可避免某個客戶機(jī)操作系統(tǒng)非法訪問或篡改其他客戶機(jī)操作系統(tǒng)的關(guān)鍵數(shù)據(jù)或流程,也避免客戶機(jī)操作系統(tǒng)間故障相互波及影響。
Hypervisor還支持細(xì)粒度的內(nèi)存管理方式,不僅可以把多個內(nèi)存段分配給一個資源分區(qū),也可以將一個內(nèi)存段按區(qū)域分配給多個資源分區(qū)。
2.1.3 外設(shè)資源分區(qū)隔離和共享
Hypervisor支持外設(shè)被客戶機(jī)操作系統(tǒng)獨(dú)占的技術(shù)方案,例如將外設(shè)直接透傳給某個客戶機(jī)操作系統(tǒng)使用,此時其他客戶機(jī)操作系統(tǒng)無法訪問其資源。也支持通過設(shè)備仿真的方式實(shí)現(xiàn)外設(shè)資源的共享,以存儲資源為例其技術(shù)方案如圖4所示。
圖4 Hypervisor存儲資源共享
在Hypervisor中運(yùn)行物理磁盤的驅(qū)動程序,在每個客戶機(jī)操作系統(tǒng)運(yùn)行虛擬磁盤驅(qū)動。它可掛載為物理磁盤的一個分區(qū),這樣不同客戶機(jī)操作系統(tǒng)可使用相同的物理磁盤,通過Hypervisor保證客戶機(jī)操作系統(tǒng)的磁盤空間相互隔離,不會出現(xiàn)越界訪問?;谙嗤乃枷耄琀ypervisor還可以支持網(wǎng)絡(luò)、SPI、I2C、UART等外設(shè)的資源分區(qū)的隔離和共享。
2.1.4 訪問控制
如前所述,Hypervisor保證客戶機(jī)操作系統(tǒng)之間互相隔離??蛻魴C(jī)操作系統(tǒng)須通過使用Hypercall(Hypervisor提供給客戶機(jī)操作系統(tǒng)的編程接口,與系統(tǒng)調(diào)用類似)來請求Hypervisor提供服務(wù)[5]。Hypervisor會為每個客戶機(jī)操作系統(tǒng)分配訪問權(quán)限和通信權(quán)限,以限制和監(jiān)視其對Hypercall的訪問。
每個權(quán)限都允許客戶機(jī)操作系統(tǒng)訪問特定的一個或多個Hypercall,同時Hypervisor還會檢查客戶機(jī)操作系統(tǒng)的每個Hypercall,以確保它不會占用過多的內(nèi)核資源或修改系統(tǒng)設(shè)置??蛻魴C(jī)操作系統(tǒng)的權(quán)限存儲在相應(yīng)的描述符表中,且不能在客戶機(jī)操作系統(tǒng)的生命周期內(nèi)進(jìn)行更改或擴(kuò)展。
2.2.1 健康監(jiān)控
在計算平臺中運(yùn)行多個客戶機(jī)操作系統(tǒng),當(dāng)客戶機(jī)操作系統(tǒng)發(fā)生異常時,應(yīng)被實(shí)時監(jiān)控并在最小影響范圍內(nèi)恢復(fù)正常,Hypervisor通過健康監(jiān)控技術(shù)實(shí)現(xiàn)系統(tǒng)狀態(tài)實(shí)時監(jiān)控。
Hypervisor提供看門狗服務(wù),各客戶機(jī)操作系統(tǒng)的監(jiān)控組件注冊到看門狗服務(wù)中,當(dāng)監(jiān)控組件發(fā)生異常時可主動通過看門狗發(fā)送異常信息和處理方法。當(dāng)監(jiān)控組件無法響應(yīng)看門狗服務(wù)時,Hypervisor也能強(qiáng)制對組件執(zhí)行錯誤處理操作使系統(tǒng)恢復(fù)正常運(yùn)行。
Hypervisor健康監(jiān)控支持對任務(wù)的正常狀態(tài)監(jiān)控,包括周期性的定時?;畋O(jiān)控。當(dāng)應(yīng)用程序正確運(yùn)行時,Hypervisor會收到應(yīng)用程序周期性的保活信息,當(dāng)應(yīng)用程序異?;驘o法響應(yīng)時,周期性的保活信息被中斷,Hypervisor可發(fā)送消息獲取任務(wù)當(dāng)前狀態(tài)和控制流程,如果應(yīng)用程序還無法響應(yīng),Hypervisor將會執(zhí)行異常處理程序。
Hypervisor架構(gòu)還通過定義明確的服務(wù)邊界來有效地隔離故障。由于服務(wù)之間互相依賴,所以任何組件都可能出錯導(dǎo)致用戶不能訪問。為盡可能減少局部異常帶來的影響,還須構(gòu)建容錯能力強(qiáng)的異常處理技術(shù),以從容應(yīng)對發(fā)生的某些異常。
Hypervisor提供多級異常處理技術(shù),包括任務(wù)級、分區(qū)級、系統(tǒng)級和硬件級等。當(dāng)任意一級出現(xiàn)異常時,Hypervisor能獲取到當(dāng)前系統(tǒng)整體健康狀態(tài),并在最小影響范圍內(nèi)進(jìn)行錯誤處理,保障系統(tǒng)持續(xù)可用。例如,當(dāng)客戶機(jī)操作系統(tǒng)某個應(yīng)用異常時選擇只重啟應(yīng)用,當(dāng)客戶機(jī)操作系統(tǒng)內(nèi)核異常時選擇重啟客戶機(jī)操作系統(tǒng)。
2.2.2 系統(tǒng)冗余備份
Hypervisor支持系統(tǒng)冗余備份功能。如前所述,在計算平臺中客戶機(jī)操作系統(tǒng)可能是全功能操作系統(tǒng),運(yùn)行著非常關(guān)鍵的自動駕駛業(yè)務(wù),但是全功能操作系統(tǒng)往往存在著隱藏且難以發(fā)現(xiàn)的故障,一旦業(yè)務(wù)出現(xiàn)異??赡軙?dǎo)致嚴(yán)重的事故。
Hypervisor支持運(yùn)行2或3個相同的客戶機(jī)操作系統(tǒng)鏡像和業(yè)務(wù)模型,并實(shí)時監(jiān)控所有系統(tǒng)的健康狀態(tài)。配合運(yùn)行業(yè)務(wù)決策程序選擇使用其中一個客戶機(jī)操作系統(tǒng)作為用戶系統(tǒng)。這樣既能防止某個客戶機(jī)操作系統(tǒng)異常導(dǎo)致不可預(yù)計的后果,也能在多個客戶機(jī)操作系統(tǒng)中對比選擇最優(yōu)的結(jié)果進(jìn)行業(yè)務(wù)決策。
2.3.1 高效客戶機(jī)操作系統(tǒng)的通信機(jī)制
Hypervisor支持客戶機(jī)操作系統(tǒng)間多種通信方式,包括虛擬以太網(wǎng)、共享內(nèi)存和遠(yuǎn)程消息機(jī)制等。客戶機(jī)操作系統(tǒng)可根據(jù)需要選擇合適的通信方法與其他客戶機(jī)操作系統(tǒng)通信。
根據(jù)計算平臺的典型架構(gòu),環(huán)境感知算法和決策規(guī)劃算法可能部署在不同的處理器上,因此Hypervisor支持在一個SoC上運(yùn)行的客戶機(jī)操作系統(tǒng)通過以太網(wǎng)與其他SoC通信;通過虛擬以太網(wǎng)通信技術(shù),可讓Hypervisor作為一個虛擬交換機(jī),支持多個客戶機(jī)操作系統(tǒng)之間的以太網(wǎng)通信,以及實(shí)現(xiàn)客戶機(jī)操作系統(tǒng)與外界網(wǎng)絡(luò)的通信。
Hypervisor還支持通過共享內(nèi)存方式在客戶機(jī)操作系統(tǒng)間共享數(shù)據(jù),避免了多個客戶機(jī)操作系統(tǒng)間通信時的內(nèi)存拷貝操作,比以太網(wǎng)通信具有較好的通信性能。但共享內(nèi)存只提供數(shù)據(jù)共享的通道,多個客戶機(jī)操作系統(tǒng)間需要有控制消息來保證對共享內(nèi)存的互斥訪問。因此Hypervisor還支持基于Virtio(通用I/O設(shè)備虛擬化程序)遠(yuǎn)程消息方式進(jìn)行控制消息(RPMSG)的通信;當(dāng)客戶機(jī)操作系統(tǒng)之間不需要進(jìn)行大容量數(shù)據(jù)通信時也可直接使用RPMSG進(jìn)行通信,如圖5所示。
2.3.2 虛擬化性能優(yōu)化
決定虛擬化性能的因素主要包括CPU處理性能、中斷處理性能、內(nèi)存訪問性能和設(shè)備模擬性能等。其中CPU處理性能、中斷處理性能和內(nèi)存訪問性能是決定虛擬化性能的關(guān)鍵[6]。
圖5 Hypervisor遠(yuǎn)程消息通信
借助于硬件虛擬化技術(shù),Hypervisor為客戶機(jī)操作系統(tǒng)提供了一套完整的硬件系統(tǒng)環(huán)境,在客戶機(jī)操作系統(tǒng)看來其所擁有的CPU即是vCPU(virtual CPU)。Hypervisor支持vCPU和中斷親和性設(shè)置,可將其中一個vCPU設(shè)置為客戶機(jī)操作系統(tǒng)或后臺進(jìn)程獨(dú)占。物理機(jī)中斷也可設(shè)置到一個指定的CPU上,通過中斷親和性設(shè)置能提高客戶機(jī)操作系統(tǒng)透傳設(shè)備驅(qū)動的I/O性能。為獲得更好的客戶機(jī)操作系統(tǒng)性能,Hypervisor還優(yōu)化了中斷和異常處理時間,將其盡快分發(fā)到客戶機(jī)操作系統(tǒng)上運(yùn)行。
在內(nèi)存訪問性能優(yōu)化方面,Hypervisor在內(nèi)存分配中實(shí)現(xiàn)頁面著色優(yōu)化,通過為每個客戶機(jī)操作系統(tǒng)分配不同顏色,同時配合性能監(jiān)控單元對內(nèi)存的分配和使用策略進(jìn)行調(diào)整,如圖6所示。
圖6 Hypervisor內(nèi)存訪問性能優(yōu)化
基于上述架構(gòu)和關(guān)鍵技術(shù)在NXP IMX8QM MEK開發(fā)板實(shí)現(xiàn)了Hypervisor原型,可同時運(yùn)行Linux 4.19與FreeRTOS兩種客戶機(jī)操作系統(tǒng)。為驗證Hypervisor原型的性能,分別進(jìn)行了CPU和I/O的性能測試。其中CPU性能測試的方法是分別在虛擬機(jī)和物理硬件上的Linux系統(tǒng)的單核中運(yùn)行排序、傅里葉變換、浮點(diǎn)運(yùn)算和霍夫曼編碼等測試程序,通過測試程序在固定時間內(nèi)的運(yùn)行次數(shù)(Iterations/sec)來綜合對比CPU性能。測試結(jié)果如表1所示。
表1 CPU性能測試結(jié)果
使用FIO工具對磁盤的I/O性能進(jìn)行對比測試,磁盤的每秒讀寫次數(shù)(IOPS)和平均 IO帶寬(BW)的測試結(jié)果如表2所示。
表2 I/O性能測試結(jié)果
由表可見,在虛擬機(jī)中運(yùn)行的Linux的性能比在物理硬件上運(yùn)行的Linux稍顯遜色,但基本相當(dāng);其I/O性能的下降比CPU性能的下降略為明顯,但仍在可接受的范圍內(nèi)。
(1)針對智能網(wǎng)聯(lián)汽車計算平臺,本文中提出了一種能適應(yīng)多種硬件架構(gòu)和多種應(yīng)用場景的虛擬化軟件層架構(gòu)。
(2)完成了Hypervisor原型系統(tǒng)開發(fā),從安全性、可靠性和實(shí)時性3個方面提供了保障機(jī)制。
(3)試驗表明,該系統(tǒng)原型未導(dǎo)致性能的明顯下降,能滿足智能網(wǎng)聯(lián)汽車計算平臺高性能、高安全性和高實(shí)時性的要求,為智能網(wǎng)聯(lián)汽車自主可控自動駕駛操作系統(tǒng)關(guān)鍵核心技術(shù)的研發(fā)奠定了基礎(chǔ)。