|
在電子電氣系統(tǒng)架構(gòu)從分布式向域集中式演進(jìn)的大背景下,各種功能模塊都集中到少數(shù)幾個(gè)域控制器中,以前需要N個(gè)ECU(Electronic Control Unit,電子控制單元)實(shí)現(xiàn)各種功能,現(xiàn)在只需要一個(gè)DCU(Domain Control Unit,域控制器),節(jié)省了大量的線束和接插件,減輕了車身整體重量。 但是,在汽車電子電氣系統(tǒng)中,不同的ECU提供不同的服務(wù),具有不同的優(yōu)先級,對底層操作系統(tǒng)的要求也不一樣。例如,根據(jù)ISO 26262標(biāo)準(zhǔn),汽車儀表系統(tǒng)與娛樂信息系統(tǒng)屬于不同的安全等級,具有不同的處理優(yōu)先級。汽車儀表系統(tǒng)與動(dòng)力系統(tǒng)密切相關(guān),要求具有高實(shí)時(shí)性、高可靠性和強(qiáng)安全性,以QNX操作系統(tǒng)為主,而信息娛樂系統(tǒng)主要為車內(nèi)人機(jī)交互提供控制平臺(tái),追求多樣化的應(yīng)用與服務(wù),以Linux和Android為主。 要使不同類型的操作系統(tǒng)運(yùn)行在同一個(gè)計(jì)算平臺(tái),最直接的技術(shù)路徑就是虛擬化。虛擬化作為一項(xiàng)底層IT核心技術(shù)一直被廣泛應(yīng)用于云計(jì)算領(lǐng)域,它的作用是通過Hypervisor軟件模擬出一個(gè)具有完整硬件系統(tǒng)功能、運(yùn)行在一個(gè)完全隔離環(huán)境中的計(jì)算機(jī)系統(tǒng)。 虛擬化的概念被引入到車載操作系統(tǒng)之后,供應(yīng)商不再需要設(shè)計(jì)多個(gè)硬件來實(shí)現(xiàn)不同的功能需求,而只需要在車載主芯片上進(jìn)行虛擬化的軟件配置,形成多個(gè)虛擬機(jī),在每個(gè)虛擬機(jī)上運(yùn)行相應(yīng)的軟件即可滿足需求。 虛擬化(Hypervisor)解決方案提供了在同一硬件平臺(tái)上承載異構(gòu)操作系統(tǒng)的靈活性,同時(shí)實(shí)現(xiàn)了良好的高可靠性和故障控制機(jī)制, 以保證關(guān)鍵任務(wù)、硬實(shí)時(shí)應(yīng)用程序和一般用途、不受信任的應(yīng)用程序之間的安全隔離,實(shí)現(xiàn)了車載計(jì)算單元整合與算力共享。 云虛擬化 vs 物虛擬化如果說“云“虛擬化是過去20年的技術(shù)風(fēng)口,那么”物“虛擬化將會(huì)是下一個(gè)20年不容錯(cuò)過的技術(shù)風(fēng)口。雖然兩種技術(shù)同根同源,但是,基于嵌入式的物虛擬化與傳統(tǒng)的云計(jì)算虛擬化還是有其不同的地方。
車載虛擬化的技術(shù)要求車載虛擬化操作系統(tǒng)首先是一個(gè)穩(wěn)定可靠、性能良好、具備實(shí)時(shí)響應(yīng)能力的微內(nèi)核,承載在虛擬機(jī)上的應(yīng)用程序按照預(yù)先設(shè)定的優(yōu)先級運(yùn)行,確保在高優(yōu)先級虛擬機(jī)中運(yùn)行的實(shí)時(shí)進(jìn)程能夠及時(shí)獲得對計(jì)算資源的必要訪問,無論低優(yōu)先級虛擬機(jī)執(zhí)行的繁忙程度如何,同時(shí),強(qiáng)制性地將關(guān)鍵應(yīng)用程序和實(shí)時(shí)操作系統(tǒng)與非關(guān)鍵應(yīng)用程序和普通操作系統(tǒng)安全隔離。 小知識(shí) 所謂微內(nèi)核(Microkernel),是指內(nèi)核進(jìn)程僅提供最基本的服務(wù),例如進(jìn)程調(diào)度、進(jìn)程間通信、信號、時(shí)鐘、中斷等,而其它的服務(wù)(例如文件系統(tǒng)、內(nèi)存管理、設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)協(xié)議棧等)都獨(dú)立于內(nèi)核以單獨(dú)的進(jìn)程運(yùn)行,它們與內(nèi)核進(jìn)程和其它進(jìn)程之間通過內(nèi)核提供的消息傳遞機(jī)制進(jìn)行通信。 微內(nèi)核是相對于宏內(nèi)核而言的,Linux是典型的宏內(nèi)核,除了時(shí)鐘、中斷、進(jìn)程調(diào)度、進(jìn)程間通信外,文件系統(tǒng)、內(nèi)存管理、設(shè)備驅(qū)動(dòng)管理等都由內(nèi)核完成。 一般而言,車載虛擬化操作系統(tǒng)要求具備三點(diǎn)技術(shù)要求:
1、資源分區(qū)
2、任務(wù)調(diào)度機(jī)制 常見的操作系統(tǒng)任務(wù)調(diào)度機(jī)制有兩種:
車載虛擬化系統(tǒng)同時(shí)承載實(shí)時(shí)車控系統(tǒng)和非實(shí)時(shí)娛樂系統(tǒng),這兩種系統(tǒng)對于任務(wù)的時(shí)間響應(yīng)要求有著本質(zhì)的不同:
車載虛擬化內(nèi)核應(yīng)該具備靈活的時(shí)間調(diào)度機(jī)制,既支持基于優(yōu)先級的任務(wù)調(diào)度方式,又支持基于時(shí)間片的任務(wù)調(diào)度方式。
Hypervisor在對虛擬機(jī)進(jìn)行嚴(yán)格安全隔離的同時(shí),也需要支持不同虛擬機(jī)進(jìn)程之間以受控方式相互通信。最基本的進(jìn)程間通信包括同步消息傳遞和共享內(nèi)存兩種方式。
在車載虛擬化領(lǐng)域,主流的虛擬機(jī)技術(shù)提供商包括BlackBerry QNX Hypervisor(閉源)及Intel與Linux基金會(huì)主導(dǎo)的ACRN(開源)。但截至目前,只有QNX Hypervisor應(yīng)用到量產(chǎn)車型,它也是目前市場上唯一被認(rèn)可功能安全等級達(dá)到ASIL D級的虛擬化操作系統(tǒng)。 BlackBerry:QNX HypervisorQNX是由加拿大QSSL公司(QNX Software System Ltd.)開發(fā)的實(shí)時(shí)操作系統(tǒng),既能運(yùn)行于以Intel x86、Pentium等CPU為核心的硬件環(huán)境,也能運(yùn)行于以PowerPC、MIPS等CPU為核心的硬件環(huán)境。 小知識(shí) 2004年,全球領(lǐng)先的音響產(chǎn)品制造商哈曼國際工業(yè)集團(tuán)(Harman International Industries)收購QNX,2010年4月,BlackBerry母公司RIM以2億美元從哈曼國際手中收購QNX。 QNX操作系統(tǒng)的應(yīng)用范圍極廣,包括控制保時(shí)捷跑車的音樂和媒體功能、核電站、美國陸軍無人駕駛坦克的控制系統(tǒng)、BlackBerry PlayBook平板電腦等。 2021年2月,BlackBerry正式發(fā)布QNX Hypervisor 2.2版本,該版本基于QNX Neutrino實(shí)時(shí)操作系統(tǒng)(RTOS)7.1。 QNX Hypervisor是基于Type-1(直接運(yùn)行于裸機(jī))、實(shí)時(shí)優(yōu)先級的微內(nèi)核管理程序,符合IEC 61508 SIL-3(用于工業(yè)安全),IEC 62304(用于醫(yī)療設(shè)備軟件)和ISO 26262 ASIL-D(用于汽車安全)等標(biāo)準(zhǔn)。 整個(gè)QNX操作系統(tǒng)是由微內(nèi)核調(diào)度管理的一組進(jìn)程的集合,與硬件總線結(jié)構(gòu)非常相似,稱之為“軟件總線”。 QNX是一個(gè)基于優(yōu)先級搶占的操作系統(tǒng),線程優(yōu)先級用0\~255的數(shù)字表示,數(shù)字越大,優(yōu)先級越高。優(yōu)先級0是內(nèi)核中的IDLE線程。同時(shí),優(yōu)先級64是一個(gè)分界嶺,優(yōu)先級1\~63是非特權(quán)優(yōu)先級,一般用戶都可以用,而64\~255必須是有Root權(quán)限的線程才可以設(shè)置。調(diào)度程序在選擇下一個(gè)運(yùn)行的線程時(shí),將檢查每個(gè)處于就緒狀態(tài)的線程的優(yōu)先級,具有高優(yōu)先級的線程將被優(yōu)先執(zhí)行。 QNX基本的任務(wù)調(diào)度算法使用的是按優(yōu)先級搶占的調(diào)度方法。這種方法保證在任何時(shí)刻都是優(yōu)先級最高的任務(wù)占用CPU時(shí)間。優(yōu)先級最高的任務(wù)可以中斷當(dāng)前運(yùn)行的任務(wù)。這種方法適用于工業(yè)實(shí)時(shí)性要求較高的場合。 在基本調(diào)度算法的基礎(chǔ)上,當(dāng)兩個(gè)或更多具有相同優(yōu)先級的線程同時(shí)處于就緒狀態(tài),并且都是當(dāng)前就緒隊(duì)列中最高優(yōu)先級的任務(wù)時(shí),QNX提供了四種調(diào)度方法來解決問題:
當(dāng)線程的優(yōu)先級降低到Low Priority時(shí),它可能會(huì)被執(zhí)行,也可能不被執(zhí)行,取決于系統(tǒng)當(dāng)時(shí)其它線程的優(yōu)先級。一旦一個(gè)Replenishment Period(T)到來,該線程的優(yōu)先級立即升至Normal Priority,這樣,只要適當(dāng)配置系統(tǒng)中各線程的C和T,就可以使每個(gè)線程都可以在每個(gè)T內(nèi)被執(zhí)行C時(shí)間值。 零星調(diào)度將一個(gè)線程需要執(zhí)行的時(shí)間分拆成若干段進(jìn)行執(zhí)行(這也是“零星調(diào)度”名稱的由來),這種算法適用于一個(gè)周期內(nèi)具有執(zhí)行時(shí)間上限的線程,可以使一個(gè)線程對非周期事件進(jìn)行服務(wù),而不用擔(dān)心影響其它硬實(shí)時(shí)線程的執(zhí)行期限。 Intel & Linux基金會(huì):ACRNACRN由Linux基金會(huì)于2018年3月在“Linux嵌入式大會(huì)”上發(fā)布,是一款靈活、開源的(BSD-3-Clause License)、輕量級Hypervisor參考軟件。Intel開源技術(shù)中心為ACRN項(xiàng)目的發(fā)布貢獻(xiàn)了源代碼,早期支持者包括Intel、ADLink(凌華科技)、Aptiv、LG和東軟等。 2020年6月,ACRN v2.0正式發(fā)布,采用**“Partition Mode”+“Sharing Mode”的“**Hybrid Mode”架構(gòu)設(shè)計(jì)。
Hybrid Mode架構(gòu)具有兩個(gè)特點(diǎn):
為了保持ACRN Hypervisor代碼庫盡可能精簡且高效,大部分設(shè)備模塊的實(shí)現(xiàn)都駐留在Service VM,Service VM可以運(yùn)行Clear Linux(Intel基于GPL協(xié)議的開源項(xiàng)目),也支持其它Linux發(fā)行版或者專有RTOS作為Service OS。如果沒有Partition Mode中的Pre-launched VM,Service VM是ACRN Hypervisor創(chuàng)建的第一個(gè)虛擬環(huán)境,以系統(tǒng)最高優(yōu)先級的虛擬機(jī)形式存在,通過Device Model模塊向Guest OS提供I/O模擬操作。 ACRN Hypervisor基于Intel IA-32處理器的硬件輔助虛擬化技術(shù)(Intel VT-x)。 Intel VT-x引入了一種新的CPU操作,稱為VMX(Virtual Machine eXtensions),以及兩種新的CPU工作模式和10條新的虛擬專用指令(VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUNCH、VMRESUME、VMXOFF和VMXON)。兩種工作模式分別為VMX root operation(根虛擬化操作)和VMX non-root operation(非根虛擬化操作),其中,VMX root operation被設(shè)計(jì)用于給Hypervisor使用,VMX non-root operation則由Guest OS使用。兩種工作模式都支持Ring 0~Ring 3,因此,Hypervisor和Guest OS可以自由選擇它們所期望的運(yùn)行級別。 硬件輔助虛擬化技術(shù)就是通過在VMX root operation和VMX non-root operation兩種工作模式之間相互切換實(shí)現(xiàn)的。 運(yùn)行在VMX root operation模式下的Hypervisor通過顯式調(diào)用VMLAUNCH或VMRESUME指令切換到VMX non-root operation模式,硬件自動(dòng)加載Guest OS的上下文,于是Guest OS獲得運(yùn)行,這種轉(zhuǎn)換稱為VM entry。Guest OS運(yùn)行過程中遇到需要Hypervisor處理的事件,例如外部中斷或缺頁異常,或者主動(dòng)調(diào)用VMCALL指令請求Hypervisor的服務(wù)的時(shí)候(與系統(tǒng)調(diào)用類似),硬件自動(dòng)掛起Guest OS,切換到VMX root operation模式,恢復(fù)Hypervisor的運(yùn)行,這種轉(zhuǎn)換稱為VM exit。VMX root operation模式下,軟件的行為與在沒有VT-x技術(shù)的處理器上的行為基本一致;而VMX non-root operation模式則有很大不同,最主要的區(qū)別是此時(shí)運(yùn)行某些指令或遇到某些事件時(shí),發(fā)生VM exit。 ACRN Device Model是一個(gè)類似QEMU的硬件設(shè)備模擬軟件,依賴以下三個(gè)子系統(tǒng)協(xié)同工作: 1、設(shè)備仿真(Device Emulation) Device Model為User VM中的設(shè)備驅(qū)動(dòng)提供設(shè)備仿真例程(Routines),用來模擬各種不同種類的硬件設(shè)備,這些設(shè)備仿真例程將各自的I/O處理程序注冊到I/O調(diào)度器(Dispatcher)。當(dāng)User VM產(chǎn)生I/O設(shè)備訪問請求時(shí),I/O調(diào)度器將這些請求分發(fā)到相應(yīng)的設(shè)備仿真例程,實(shí)現(xiàn)硬件模擬。 2、VHM(Virtio and Hypervisor Service Module) 以Service OS的內(nèi)核模塊形式存在,作為ACRN Hypervisor與Device Model之間的橋梁,為設(shè)備模擬提供必要的服務(wù),具體的服務(wù)流程如下:
3、I/O請求(I/O Path) 下圖展示了ACRN中訪問一個(gè)虛擬I/O的流程。
VirtIO標(biāo)準(zhǔn)Hypervisor介乎于底層DCU硬件和上層OS軟件之間,與標(biāo)準(zhǔn)化服務(wù)器(x86)+標(biāo)準(zhǔn)化OS(Windows和Linux)的云虛擬化應(yīng)用場景不同,汽車嵌入式環(huán)境中的虛擬化技術(shù)面臨的挑戰(zhàn)是Hypervisor往往需要定制適配底層DCU硬件和上層OS軟件,這一點(diǎn)對于Hypervisor的大規(guī)模商用與普及是一個(gè)非常大的技術(shù)障礙。 2016年3月,OASIS(Organization for the Advancement of Structured Information Standards,結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織)正式標(biāo)準(zhǔn)化VirtIO項(xiàng)目,旨在提供一種通用的框架和標(biāo)準(zhǔn)接口,減少Hypervisor對底層不同硬件和上層不同軟件的適配開發(fā)工作量。 目前,VirtIO標(biāo)準(zhǔn)得到了眾多科技巨頭的支持,包括Apple、Google、ARM、Intel、Red Hat、華為等。Google也計(jì)劃在Android Automotive OS中集成對VirtIO的支持。 VirtIO是一套易維護(hù)和易擴(kuò)展的通用設(shè)備仿真接口,由前端驅(qū)動(dòng)程序(Front-End Driver)、后端驅(qū)動(dòng)程序(Back-End Driver)和VirtIO虛擬隊(duì)列(Virtual Queue)構(gòu)成。 前端驅(qū)動(dòng)程序由Guest OS實(shí)現(xiàn),后端驅(qū)動(dòng)程序由Hypervisor實(shí)現(xiàn),虛擬隊(duì)列通常使用環(huán)形緩沖,在Hypervisor和Guest OS之間傳輸數(shù)據(jù),每個(gè)驅(qū)動(dòng)可以有0個(gè)或多個(gè)隊(duì)列,取決于實(shí)際需要。例如,網(wǎng)絡(luò)驅(qū)動(dòng)(virtio-net)可能使用了兩個(gè)虛擬隊(duì)列(分別用于接收和發(fā)送),而塊存儲(chǔ)驅(qū)動(dòng)(virtio-blk)可能只需要一個(gè)。 除了網(wǎng)卡、PCI、塊存儲(chǔ)、控制臺(tái)、輸入等常用設(shè)備之外,傳感器、CAN網(wǎng)絡(luò)、媒體編解碼設(shè)備等汽車領(lǐng)域的一些特殊類型硬件,可能是未來VirtIO標(biāo)準(zhǔn)完善的方向。 結(jié)束語汽車電子電氣架構(gòu)從分布式向域集中式發(fā)展的趨勢已成定局,越來越多的功能被整合到少數(shù)幾個(gè)域控制器中,從而出現(xiàn)了多種不同的功能復(fù)用同一個(gè)硬件平臺(tái)的需求。 Hypervisor虛擬化為同一個(gè)硬件平臺(tái)承載多種不同類型的操作系統(tǒng)、不同時(shí)間響應(yīng)要求的業(yè)務(wù)應(yīng)用提供了關(guān)鍵的技術(shù)支撐。借助Hypervisor虛擬化技術(shù),既消除了硬件冗余,簡化了總體設(shè)計(jì),降低了整車重量,又滿足了資源復(fù)用、算力共享、安全隔離的需求。 當(dāng)前,大多數(shù)的Hypervisor都需要與指定的底層硬件和上層Guest OS配合使用,隨著越來越多的Hypervisor提供商和Guest OS供應(yīng)商遵循VirtIO標(biāo)準(zhǔn),以及VirtIO標(biāo)準(zhǔn)對特定汽車硬件的虛擬化支持,Hypervisor將進(jìn)一步解耦車載軟硬件,車載系統(tǒng)供應(yīng)商將更容易在不同的DCU硬件平臺(tái)上支撐不同的Guest OS和應(yīng)用程序,從而真正實(shí)現(xiàn)軟件定義汽車。 作者:歐珊瑚 |
|
|