你真的了解什么是智能座艙么(域控制器篇)
Warning: file_get_contents(): SSL: connection timeout in /var/www/html/www.edw.com.cn/www/rootapp/controllerssitemanage/ManagecmsController.php on line 2025 Warning: file_get_contents(): Failed to enable crypto in /var/www/html/www.edw.com.cn/www/rootapp/controllerssitemanage/ManagecmsController.php on line 2025 Warning: file_get_contents(https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e99577845c5141b79ce7b1edbe9eaf7b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1715046859&x-signature=YuapJD%2F9VMkC9EwYb8EDAEfzjNY%3D): failed to open stream: operation failed in /var/www/html/www.edw.com.cn/www/rootapp/controllerssitemanage/ManagecmsController.php on line 2025
本文引用地址:http://www.ex-cimer.com/article/202404/458245.htm人生沒有最優(yōu)解,我們可以有多種活法,拒絕自我設(shè)限。加入本知識星球可以拓展您的圈層,打破您的認(rèn)知邊界,鏈接到4W+的汽車賽道“局內(nèi)人”,交換職場信息,打破職場信息差,遇見同行伙伴,共同探索技術(shù)交流和職業(yè)發(fā)展。
要說奧迪A4L憑什么這么受歡迎,能夠在銷量上領(lǐng)先奔馳和寶馬,我覺得“科技”是非常重要的一點,這也是奧迪品牌一向的標(biāo)簽,像是儀表盤這項汽車上古時代的配置,奧迪就重新將其定義,打造出了“虛擬座艙”,帶給了用戶革命性的
創(chuàng)新體驗。每一位奧迪A4L的用戶,無不稱贊其虛擬座艙帶來的科技與便利性。而近日上市的全新奧迪A4L也不出所望,再次將“創(chuàng)新科技”四個字詮釋的淋漓盡致。
看看媒體都是怎么評論的,這次奧迪A4L就帶來了最新一代MMI系統(tǒng),該系統(tǒng)可以說是目前最好用的車機系統(tǒng)之一。因為它完全符合中國消費者的使用習(xí)慣,要知道,與其他操作系統(tǒng)依據(jù)國外使用習(xí)慣不同,最新一代的MMI信息娛樂系統(tǒng)是基于安卓平臺開發(fā),并專為中國用戶打造的應(yīng)用體系,值得一提的是,這也首款引入安卓平臺的豪華品牌車型。安卓平臺最大的優(yōu)點就是“開放”性,這意味著奧迪A4L的車機系統(tǒng),不再像其他車型的車機一樣,局限于僅有的幾個功能,而是可以根據(jù)用戶的使用需求,自主下載,選擇APP。
而這里的全新奧迪A4L的智能座艙使用的就是高通820A芯片做的域控制器,簡單來說就是一顆主芯片既輸出給中控導(dǎo)航,又輸出液晶儀表信息,而且兩個產(chǎn)品在同一個芯片上跑不同的軟件系統(tǒng),那我們來嘮嗑一下什么是域控制器。
01
域控制器的發(fā)展歷程
智能座艙發(fā)展經(jīng)歷了整體基礎(chǔ) 智能座艙發(fā)展經(jīng)歷了整體基礎(chǔ) -細(xì)分產(chǎn)品 細(xì)分產(chǎn)品 -融合方案的格局變化。先是整體電子器架構(gòu)和操作系統(tǒng)出現(xiàn),隨后各細(xì)分產(chǎn)品逐漸裝載到車上,如今的趨勢是各產(chǎn)品的協(xié)同整合。
可以看到2018年偉世通才出現(xiàn)基于座艙產(chǎn)品的域控制器,主要是整合了車載中控和儀表,還沒有整合更多的ADAS功能的產(chǎn)品,比如360環(huán)視、LDWS等功能進(jìn)去,說明這個域控制器有一定的難度。
博世將整車電子電氣架構(gòu)發(fā)展分為6 個階段:模塊化階段、功能集成階段、中央域控制器階段、跨域融合階段、車載中央電腦和區(qū)域控制器階段、車載云計算階段,目前大多數(shù)整車廠商開始從模塊化向功能集成階段邁進(jìn),而特斯拉已經(jīng)達(dá)到了第五個車載中央電腦和區(qū)域控制器階段。目前汽車的電氣架構(gòu)絕大部分都是處于第一階段,模塊化的階段。
模塊化階段整車OTA升級不方便
隨著汽車工業(yè)的飛速發(fā)展,汽車電子電氣系統(tǒng)變得十分復(fù)雜,一輛普通汽車的電子控制單元(ECU)已經(jīng)多達(dá)70-80 個,代碼約一億行,且各個ECU 往往來源于供應(yīng)鏈中不同的tier1,有著不同的嵌入式軟件和底層邏輯,各個ECU 往往獨立運行,整車廠沒有權(quán)限也沒有能力維護(hù)更新ECU,因此傳統(tǒng)汽車的軟件更新幾乎與汽車生命周期同步,整車企業(yè)以O(shè)TA 方式更新軟件系統(tǒng)受限,目前僅僅局限于娛樂信息系統(tǒng)更新。
模塊化階段成本優(yōu)勢不明顯:
傳統(tǒng)座 艙,儀表、娛樂、中控等系統(tǒng)相互獨立,主要由單一芯片驅(qū)動單個功能/系統(tǒng),通信開銷大,就比如中控和儀表間進(jìn)行地圖的通訊,傳統(tǒng)座艙需要增加2個LVDS芯片+2個LVDS座子+高速信號線材,既增加了通訊的成本,而且通訊時間也增加了。
一芯多屏”模式采用一顆芯片支持多個操作系統(tǒng),不僅解決了系統(tǒng)之間高成本的 通信開銷問題,同時縮短了通信時間,而且減少了單個AP及外圍的成本,隨著量產(chǎn)數(shù)量的增加,不斷降低域控制器的芯片成本。
多重因素發(fā)展促進(jìn)域控制的出現(xiàn):
1、新能源汽車以及動力電池技術(shù)發(fā)展迅猛。車身電子電器架構(gòu)正在進(jìn)行深度升級,由傳統(tǒng)的分布式向中心演變,不同操作系統(tǒng)之間通過虛擬機打;同時三元鋰離子電池能量密度已經(jīng)突破300wh/kg,為智能座艙各功提供能量基礎(chǔ)。
在新能源車的發(fā)展過程中你會看到很多同傳統(tǒng)車不一樣的先進(jìn)技術(shù)在這方面使用,由于新能源車本身的架構(gòu)和傳統(tǒng)燃油就有很大的不同,對比于燃油車,新能源汽車的結(jié)構(gòu)更簡單。目前的燃油車結(jié)構(gòu)比新能源汽車更復(fù)雜,特別是動力總成系統(tǒng)部分,要比新能源汽車復(fù)雜得多。新能源汽車的車輛結(jié)構(gòu)較為簡單,主要部件為動力電池組、電機和EMS組成的三電系統(tǒng),因此在新能源汽車上開發(fā)或者使用自動駕駛技術(shù),那么出現(xiàn)概率的情況要比燃油車低得多。與此同時,從操控上來說,新能源汽車也要比燃油車更好操控——控制電壓電流的大小以及輸出,遠(yuǎn)比控制傳統(tǒng)內(nèi)燃機來得容易得多。
所以比如一些ADAS的設(shè)備、TBOX、以太網(wǎng)、還有一些域控制器都是在優(yōu)先在新能源車上出現(xiàn),然后逐步使用到燃油車上。
2、芯片的運算能力呈指數(shù)級提升,可以滿足一些域控制器的基本硬件條件,甚至可以滿足自動駕駛的算力要求,各大芯片廠商都推出了算力匹配的主控芯片,同時自動駕駛的技術(shù)成熟使得人們從駕駛場景解放出來,更多的注意力放在智能座艙場景里面去,所以這方面的芯片的推動也是巨大的。
3、云計算和5G的鋪設(shè)速度加快,云平臺的計算、存儲能力和5G的傳輸速度為智能座艙的預(yù)控器的大數(shù)據(jù)量、低延遲需求提供了保障。
從分布式到集中式,域控制以及未來計算平臺將成為智能駕駛最大的增量。過去汽車的控制器主要以分布式為主,每個控制器針對一個功能。隨著汽車智能化等級的提升,原本的多個控制器將集成為域控制。
車內(nèi)電子架構(gòu)將來會劃分為5個域:駕駛輔助/自動駕駛域、智能座艙控制域、車身控制域、車身控制域、動力總成域。而其中駕駛輔助/自動駕駛域、智能座艙域為汽車未來核心,也是未來車企差異化競爭,實現(xiàn)軟硬件分離從而實現(xiàn)軟件盈利的關(guān)鍵核心點。
02
域控制器的架構(gòu)優(yōu)點
域控制器階段是以以太網(wǎng)為骨干網(wǎng),面向服務(wù)的架構(gòu),按功能劃分的集中化可以加速軟硬件分離,節(jié)約整機的成本,具體的優(yōu)點如下:
1)硬件架構(gòu)升級:
a.減少內(nèi)部算力的冗余,避免ECU數(shù)量膨脹,減少設(shè)計算力總需求;
b.傳統(tǒng)分布式架構(gòu)難以實現(xiàn)實時交互,集中式架構(gòu)可以統(tǒng)一交互,并實現(xiàn)整車功能協(xié)同;
c.集中式架構(gòu)后,線束縮短,整車質(zhì)量減輕
2)軟件架構(gòu)升級:
a.分布式架構(gòu)軟硬一體,整車企業(yè)并沒有權(quán)限去維護(hù)和更新ECU,因此無法通過后續(xù)OTA更新解決問題。變成集中式架構(gòu)后,軟硬解耦,可以通過系統(tǒng)升級(OTA)持續(xù)地改進(jìn)車輛功能,軟件一定程度上實現(xiàn)了傳統(tǒng)4S店的功能,可以持續(xù)地為提供車輛交付后的運營和服務(wù);
b.整體形成感知層后,采集的數(shù)據(jù)信息可共用。軟硬解耦后,可實現(xiàn)多個應(yīng)用共用一套硬件裝置,有效減少硬件數(shù)量。
3)通信架構(gòu)升級。采用高速以太網(wǎng)取代CAN總線,為未來汽車添加更多車聯(lián)網(wǎng)、ADAS功能提供支撐。
a.高實時性:數(shù)十微秒的確定性傳輸延遲和亞微秒級的節(jié)點時間同步精度
b.高帶寬:百倍傳輸,滿足大量非結(jié)構(gòu)化數(shù)據(jù)(視頻、圖片)的傳輸
03
智能座艙域控制器的CPU芯片市場
a.傳統(tǒng)的汽車芯片廠家遇到消費領(lǐng)域巨頭芯片廠家的挑戰(zhàn)
根據(jù)專業(yè)調(diào)查數(shù)據(jù),在2015年以前都是以瑞薩、NXP、TI等傳統(tǒng)汽車芯片主導(dǎo)市場,前面三家的芯片就占據(jù)市場60%的份額,從2015年開始,越來越多的消費級芯片巨頭參與汽車芯片生產(chǎn)商重組并購。
智能座艙域控制器芯片 市場的主要參與者包括 NXP、德州儀器、瑞薩電子等傳統(tǒng)汽車芯片廠商,主要面向中低 端市場,此外手機領(lǐng)域的廠商如聯(lián)發(fā)科、三星、高通等也加入市場競爭中,主要面向高端市場,這個市場越來越好看,越來越好玩。
由于域控制器芯片市場仍處于行業(yè)萌芽期,目前國內(nèi)搭載座艙域控制器芯片的 車型絕大部分仍然采用的是德州儀器的Jacinto6 和 NXP 的 i.mx6 等上一代產(chǎn)品。國內(nèi)競 爭者主要有華為、地平線等。根據(jù)偉世通數(shù)據(jù),2019 年全球座艙域控制器出貨量約為 40 萬套,預(yù)計 2025 年出貨量將超過 1300 萬套,2019-2025 年均增長 79%。
b. 相對于消費級芯,車規(guī)級芯片對于可靠性、安全性的要求更高
從上圖可以看到,車規(guī)級芯片在溫度、濕度、碰撞等多個維度范圍更寬,需要承受的極限條件更苛刻,此外,由于開發(fā)需求的復(fù)雜化,在芯片設(shè)計、測試等環(huán)節(jié)投入更高的成本和時間,所以在市場中可以看到車機芯片的更新?lián)Q代速度相對較慢(有的車型一賣就是七八年),車機芯片升級的動力不足,態(tài)度更加謹(jǐn)慎,這兩年車機芯片的運行速度已經(jīng)和消費級芯片大幅縮小了。
汽車座艙領(lǐng)域迭代速度也開始像手機一樣快速,產(chǎn)品的生命周期越來越短,競爭越來越激烈,原本手機領(lǐng)域的廠家如聯(lián)發(fā)科、三星、高通都加入陣營,未來華為還有紫光展銳也會加入。手機領(lǐng)域的廠家主要著眼點在于研發(fā)成果的最大限度利用。而原本傳統(tǒng)的汽車SoC芯片廠家NXP、瑞薩和德州儀器壓力大增。
c. 智能座艙域控制器芯片未來3-5年的玩家
智能座艙芯片:高端以高通、英特爾、瑞薩為主(還要看其第四代產(chǎn)品競爭力),高通領(lǐng)先
CPU性能對比:高通820A CPU性能與英特爾、瑞薩基本一致。但8155具備全方面的性能優(yōu)勢,8.5萬DMIPS同代產(chǎn)品領(lǐng)先。
GPU性能:目前浮點性能上,高通相比于瑞薩、英特爾領(lǐng)先較多,比如820A的GPU性能為588GFLOPS,而英特爾為216GFLOPS,瑞薩為115.2GFLOPS。
中低端玩家:恩智浦(i.MX6/i.MX8)、德州儀器(Jacinto 6/ Jacinto 8)
低端產(chǎn)品:意法半導(dǎo)體(A5/A6)
待進(jìn)入玩家還有華為、三星、聯(lián)發(fā)科。
d. 域控制芯片的簡單粗暴解說
英特爾在2015年將Atom系列拓展到汽車領(lǐng)域,即Apollo Lake,也就是3900系列,2017年為強化低端市場,特別推出低價位的A3920,其性能實際與3900系列旗艦A3960相差不多,但價格是3900系列中最低的。價格低,但性能絲毫不低,不過截止2019年7月,A3920還未通過AEC-Q100認(rèn)證,這是基礎(chǔ)的車規(guī)級認(rèn)證,但這并不影響其市場,目前已經(jīng)有車廠在導(dǎo)入A3920。
特斯拉為A3950做了活廣告。國內(nèi)紅旗和長城也開始采用英特爾的SoC,國際上則有寶馬和沃爾沃兩大客戶。英特爾的強大支撐還有開源的ACRN虛擬機,這是其他廠家望塵莫及的。其他家的虛擬機方案一般只能選擇Xen或收費的QNX,目前英特爾最新的車規(guī)級AEC-Q100芯片是A3960,這個還在推廣中。
聯(lián)發(fā)科也以高性價比的MT2712主打市場,目前已通過偉世通打入大眾供應(yīng)鏈,可能會用在下一代帕薩特上。也有消息說可能上到豐田的低端車上,偉世通的主打平臺就是聯(lián)發(fā)科和高通。
NXP的i.mx系列曾經(jīng)是中控領(lǐng)域的霸主,不過高通未能成行的收購打亂了NXP的節(jié)奏,導(dǎo)致NXP的產(chǎn)品跳票多次,也缺乏高端產(chǎn)品。NXP的i.mx8QM一波三折,跳票了多次,不過目前已經(jīng)基本解決問題。
不過NXP為了穩(wěn)定客戶,已經(jīng)向大客戶宣傳更高端的i.mx8.5和i.mx10x系列產(chǎn)品了,具體情況未公開,可能也有采用A76和A55,但是估計最快也要到2021年底才有樣片。
德州儀器對嵌入式處理器領(lǐng)域似乎越來越不感興趣,因為模擬器件錢太好賺了,一個產(chǎn)品可以賣上30 甚至40 年。德州儀器的Jacinto7 系列一直未公開, 目前已知最接近的是DRA804M 和TDA4V,前者采用4核A53,主要做汽車網(wǎng)關(guān),后者則針對汽車視覺處理,特別是AVP,有2-4核的A72,考慮到TDA產(chǎn)品線和座艙的Jacinto產(chǎn)品線重合度高,推測Jacinto7應(yīng)該接近TDA4V。和i.mx8QM一樣都采取硬件隔離的形式,做虛擬機時可以省掉不少軟件研發(fā)費用。德州儀器跟奧迪、大眾合作緊密,預(yù)計下一代奧迪或大眾會有車型使用Jacinto7。在國內(nèi),德州儀器主要合作伙伴是德賽西威。
瑞薩的R-CAR H3也經(jīng)歷一波三折,多次推遲量產(chǎn)。這款芯片在2015年12月首次推出,在當(dāng)時是相當(dāng)先進(jìn)的芯片,但在4年后,雖然仍然不落伍,但考慮到它高昂的售價,性價比明顯是偏低了,不過H3是唯一一個在推出之時就通過高等級的ASIL-B級認(rèn)證的。瑞薩跟日系車合作非常緊密,通常都是和整車廠一起開發(fā)芯片,豐田毫無疑問會使用瑞薩的R-CAR H3系列產(chǎn)品。
實際上,在國內(nèi)市場都是高端車型,絕大部分車型中控和儀表仍然是德州儀器的Jacinto6和NXP的i.mx6,域控制器的芯片就已經(jīng)城頭變換大王旗嘍。
e. 高通820A芯片在高端車域控制器上所向披靡
4月10日,中期改款的奧迪A4 L上市,這款車在外觀和動力部分沒太多的改動,不過車機系統(tǒng)的變化卻很明顯。中控娛樂屏幕從此前的非觸控屏升級為觸控屏,車機芯片從驍龍602A升級為驍龍820A,系統(tǒng)也換成了安卓Pie(安卓9)。這里不能跟手機比,手機都到安卓11了,以前手機在安卓9的時候,車機系統(tǒng)還是安卓4.4左右。得益于車機的安卓系統(tǒng),奧迪A4 L可以在車機內(nèi)安裝導(dǎo)航、天氣、音樂等第三方應(yīng)用程序,較此前奧迪的MMI系統(tǒng)可謂是產(chǎn)生了質(zhì)的變化。
不過,在軟件背后還有更厲害的高通驍龍820A,正是這顆芯片的加入,讓車機能夠流暢運行安卓系統(tǒng)和各種應(yīng)用。820A是高通此前在移動設(shè)備上的旗艦芯片驍龍820的車規(guī)版本。
汽車智能化浪潮興起以來,高通、英特爾、英偉達(dá)等企業(yè),就一直希望以高算力芯片為核心,以車機系統(tǒng)和自動駕駛為突破點,切入汽車半導(dǎo)體市場。但在過去幾年里,這些玩家的動作往往是雷聲大雨點小——簽約合作站臺不少,實際落地的品牌一兩個,車型若干臺,并不成氣候。
高通于2014推出了第一代智能座艙SOC是602A車機芯片,雖然早在2014年就跟奧迪等車企簽署了合作,但是一直都是雷聲大雨點小,實際落地車型寥寥無幾,幾乎沒有什么反應(yīng)。
在2016年把手機領(lǐng)域的820沒做太多修改,推廣到汽車領(lǐng)域,型號變?yōu)?20a,a就代表汽車版?,F(xiàn)階段新出的車型內(nèi)部屏幕是越來越大,越來越多,清晰度也是越來越高,甚至可以說就是在車內(nèi)裝了幾個平板電腦,原來就是旗艦級移動設(shè)備芯片的驍龍820A,自然是目前車企可選擇的最強產(chǎn)品。
但到了2020年,最終在經(jīng)過四五年的等待之后,820A芯片終于迎來一波爆發(fā)。高通820A卻借著奧迪A4L、領(lǐng)克05、小鵬P7,還有去年上市的理想ONE等熱門車型,一下成了行業(yè)熱詞、旗艦標(biāo)配。
上表是高通820A與幾個老玩家的王牌車機芯片對比表,可以非常直觀地看到性能差距。
從制程上來說,恩智浦i.MX8、瑞薩的H3都落后于高通820A的16nm,德儀的J6甚至還用的是28nm的老技術(shù)。要知道,目前消費電子領(lǐng)域的芯片制程已經(jīng)在普及7nm,甚至向著5nm前進(jìn)了。CPU主頻也是如此,除了820A,其它三個產(chǎn)品的主頻都是2GHz以下,性能上自然落了下風(fēng)。
在圖形處理器(GPU)方面,驍龍820A采用Adreno 530 GPU,核心速度為624MHz,14nm制程,在四款芯片中處理性能排名第一。瑞薩電子的R-Car H3采用PowerVR GX6650 GPU排名第二,核心速度450MHz,采用28nm的制程。
德州儀器Jacinto 6采用SGX544 GPU,核心速度為384MHz,采用45nm制程,圖形處理性能排名第三。恩智浦的i.MX 8采用GC 7000XSVX GPU,根據(jù)Notebook Check網(wǎng)站公布的數(shù)據(jù),這顆GPU的處理性能和Adreno 305相近,性能比瑞薩電子和德州儀器的芯片都要弱。CPU的性能直接決定了車機在處理3D地圖導(dǎo)航、語音交互等大型應(yīng)用時反應(yīng)是否足夠流暢,而GPU則決定了車機屏幕的分辨率是否足夠清晰,以及各種動畫效果的顯示是否流暢。如果GPU性能較弱,高分辨率的圖像、復(fù)雜的動畫都無法流暢渲染。一旦每秒渲染的畫面低于24幀,人們就會覺得車機“卡成PPT”。
此外,高通作為移動芯片領(lǐng)域的老大,其820A SoC芯片還有一個明顯的優(yōu)勢,就是內(nèi)嵌了4G LTE調(diào)制解調(diào)器,直接可以實現(xiàn)4G通信,而選擇其他芯片玩家的產(chǎn)品,則還得外掛一顆通信芯片。
此前幾十年,汽車芯片市場,基本都被恩智浦、德州儀器、瑞薩半導(dǎo)體等汽車芯片巨頭所壟斷,外來者鮮有機會可以入局。但到了2020年這個節(jié)點,高通820A終于在汽車產(chǎn)業(yè)上撕開一個缺口,也意味著傳統(tǒng)玩家們在這領(lǐng)域,已經(jīng)被高通殺到了家門口。
驍龍820A在車機芯片市場玩得風(fēng)生水起,可這一市場此前一直都是德州儀器、恩智浦、瑞薩電子這些傳統(tǒng)廠商的天下,為什么高通突然在2020年火起來了呢?
汽車作為工業(yè)產(chǎn)品,設(shè)計生命周期一般都在10年以上,與消費電子類產(chǎn)品相比顯然更長,同時對穩(wěn)定性的要求也就更高。因此,傳統(tǒng)汽車芯片企業(yè)從研發(fā)和成本兩個方面考量,決定用已經(jīng)成熟的制造技術(shù)造汽車芯片,這樣既能控制成本,也能讓芯片的穩(wěn)定性更高。
也正是這種原因,上述老玩家的產(chǎn)品在性能上才會集體敗給高通,而高通820A芯片本身,也已經(jīng)是多年前的產(chǎn)品,在手機芯片領(lǐng)域,已經(jīng)進(jìn)入了865時代。
04
域控制器的底層操作系統(tǒng)競爭格局
a.車載操作系統(tǒng):QNX 、Linux 平分秋色,微軟逐漸淘汰
操作系統(tǒng),這是軟件運行的底層基礎(chǔ),也是目前我國還未能攀越的技術(shù)高峰。PC時代的微軟、移動智能手機時代的蘋果和谷歌,這些企業(yè)不管是市值還是社會影響力都是頂級的存在。
他們的共同特征也為世人所熟知,那便是掌握了當(dāng)下時代的操作系統(tǒng)主導(dǎo)權(quán)?,F(xiàn)在,誰能掌控汽車操作系統(tǒng),便有機會獲得下一輪科技巨頭圓桌會議的入場券。
汽車操作系統(tǒng)主要分為安全相關(guān)的車控操作系統(tǒng)和與用戶體驗相關(guān)的車載操作系統(tǒng)兩大部分。其中,車載操作系統(tǒng)應(yīng)用于導(dǎo)航、信息娛樂、藍(lán)牙語音等。
底層車載操作系統(tǒng)形成 QNX、Linux、Android 三大陣營,WinCE 即將退出市場。QNX、Linux是車載操作系統(tǒng)的鼻祖。QNX 具有安全性高等優(yōu)點,主要應(yīng)用于儀表,但 其并非開源,因此存在開發(fā)難度大、成本高等問題。
與 QNX 相比,Linux 為免費的開 源系統(tǒng),具備定制開發(fā)靈活、成本較低等特點,主要應(yīng)用于信息娛樂系統(tǒng)。谷歌 Android 是基于 Linux 系統(tǒng)內(nèi)核開發(fā)而來,應(yīng)用生態(tài)優(yōu)于 QNX、Linux,并逐漸成為新的一級。
國內(nèi)企業(yè)也紛紛加入操作系統(tǒng)競爭市場,阿里基于 Linux 系統(tǒng)內(nèi)核開發(fā)出 AliOS,上汽 榮威所搭載的斑馬智行系統(tǒng)即基于 AliOS 打造。此外,鴻蒙系統(tǒng)(Harmony OS)同樣 基于 Linux 系統(tǒng)內(nèi)核開發(fā)。
WinCE 由微軟開發(fā),但現(xiàn)階段開發(fā)者和應(yīng)用已經(jīng)非常少,微 軟計劃 2021 年 3 月終止對它的技術(shù)服務(wù)。
b.各大車企以底層操作系統(tǒng)為基礎(chǔ),進(jìn)行二次開發(fā)
從車企角度看,絕大多數(shù)外企車廠、零部件供應(yīng)商(如奔馳、寶馬、博世等)和國內(nèi)造車新勢力(如小鵬、蔚來等)選擇自建技術(shù)團(tuán)隊,在底層操作系統(tǒng)基礎(chǔ)上進(jìn)行定制化開發(fā),形成自己獨有的車載系統(tǒng)。部分國內(nèi)主機廠(如上汽榮威)則選擇和互聯(lián)網(wǎng)公司合作,開發(fā)一定的權(quán)限,直接搭載合作伙伴所開發(fā)的車載系統(tǒng)。
各大車企均基于底層操作系統(tǒng)開發(fā)其專屬操作系統(tǒng)。大部分車企會在底層操作系統(tǒng)基礎(chǔ)之上進(jìn)行定制化開發(fā)其專屬的車載操作系統(tǒng)。例如基于 QNX 底層操作系統(tǒng)的車企 有福特、奔馳、奧迪、寶馬、大眾、沃爾沃等,基于 Linux 底層操作系統(tǒng)的車企有特斯 拉、豐田、雪佛蘭等。國內(nèi)能提供定制專屬操作系統(tǒng)的上市企業(yè)包括:中科創(chuàng)達(dá)、東軟集團(tuán)、誠邁科技、四維圖新以及德賽等車機系統(tǒng) Tier 1 級供應(yīng)商等。
車企開發(fā)自主車載系統(tǒng)方式主要分為三種,標(biāo)準(zhǔn)的定制化操作系統(tǒng),從系統(tǒng)內(nèi)核到應(yīng)用程序?qū)蛹夁M(jìn)行深度重構(gòu),將硬件資源進(jìn)行整合優(yōu)化,ROM方式,基于需求定制化汽車服務(wù)及以上層級,下層則基于Android等系統(tǒng)自有架構(gòu),超級APP方式,只在應(yīng)用層調(diào)系統(tǒng)已有接口實現(xiàn)相關(guān)功能,其余層級則完全沿用已有系統(tǒng)架構(gòu)。
c. 操作系統(tǒng)介紹
幾個操作系統(tǒng)的區(qū)別:
在說說QNX的虛擬化之前,作為硬件的理解程度來說說QNX操作系統(tǒng)和Linux的有哪些區(qū)別。
雖然現(xiàn)有的操作系統(tǒng)有很多,從內(nèi)核的角度來分類,基本可以分為三種架構(gòu),單一內(nèi)核,宏內(nèi)核和微內(nèi)核。
單一內(nèi)核結(jié)構(gòu)將內(nèi)核模塊、驅(qū)動和用戶程序都放到內(nèi)核空間中,直接通過物料地址來訪問內(nèi)存,具有最快的訪問速度和信息傳遞,缺點是如果用戶程序出現(xiàn)溢出或者錯誤指針,可能會破壞其他程序,導(dǎo)致系統(tǒng)崩潰,代表是vxworks5.5及以前的版本。
宏內(nèi)核架構(gòu)將用戶程序放在用戶空間中,內(nèi)核和驅(qū)動程序以核心形式運行,這種避免了應(yīng)用程序?qū)τ趦?nèi)核的破壞,同時保留了較快的訪問速度,Linux,Windows均屬于這一類型,在嵌入式系統(tǒng)應(yīng)用中,芯片結(jié)構(gòu)更加多樣化,外圍接口更加復(fù)雜,驅(qū)動程序一般都需要自己開發(fā),在宏內(nèi)核架構(gòu)中,如果某個驅(qū)動程序出現(xiàn)故障,這可能會導(dǎo)致整個系統(tǒng)崩潰,因此該架構(gòu)需要reset命令重啟操作系統(tǒng),而在安全性比較高的場合,重啟是不允許的,因此,車輛核心安全控制領(lǐng)用一般也不用此架構(gòu)。
微內(nèi)核是指為了提高可靠性,將操作系統(tǒng)分成小的模塊,只有一個微內(nèi)核模塊在核心態(tài)運行,其他功能模塊作為服務(wù)進(jìn)程在用戶空間運行,由于把設(shè)備驅(qū)動程序和文件系統(tǒng)也作為普通用戶進(jìn)程運行,當(dāng)出現(xiàn)故障時,雖然模塊本身崩潰,但不會使整個系統(tǒng)死機。微內(nèi)核系統(tǒng)具有清晰的模塊化結(jié)構(gòu),只要接口符合規(guī)范,操作系統(tǒng)可以很方便的添加和刪除模塊,系統(tǒng)具有很好的靈活性和擴展性。此外,微內(nèi)核結(jié)構(gòu)的內(nèi)核非常小,一般只有幾十到幾百kb,只保留了一些最基本的功能,包括任務(wù)管理,任務(wù)調(diào)度,任務(wù)間通信等。
QNX是典型的微內(nèi)核結(jié)構(gòu)操作系統(tǒng), 有一個非常小的微內(nèi)核Neutrino 約為12K。內(nèi)核提供了中斷處理,定時器處理,線程的建立與調(diào)度等任務(wù)。另外有一個進(jìn)程process manager來負(fù)責(zé)進(jìn)程的建立和地址空間管理的功能, 與內(nèi)核運行在內(nèi)核空間。其他功能模塊運行在用戶空間。QNX對所有的進(jìn)程均提供了內(nèi)存保護(hù), 包括文件系統(tǒng), 資源管理器, 應(yīng)用程序等。QNX的結(jié)構(gòu)如圖2-1。
QNX操作系統(tǒng)的幾個優(yōu)點
1、高級的調(diào)度方式
為了滿足不同應(yīng)用的需要,在多個線程具有相同優(yōu)先級并處于就緒狀態(tài)時,QNX提供了三種調(diào)度方法:先進(jìn)先出(First-In First-Out, FIFO) 調(diào)度、輪轉(zhuǎn)(RoundRobin, RR) 調(diào)度和自適應(yīng)調(diào)度。
(1)先進(jìn)先出調(diào)度在先進(jìn)先出的調(diào)度方式下,一個線程直到它被更高優(yōu)先級的線程搶占或者運行結(jié)束,才會交出控制權(quán)。相同優(yōu)先級的任務(wù)不能打斷該線程。當(dāng)線程完成后,內(nèi)核會去尋找處于就緒狀態(tài)相同優(yōu)先級的線程,如果不存在, 則尋找低優(yōu)先級線程。FIFO調(diào)度本身實現(xiàn)了數(shù)據(jù)的互斥, 在線程運行的時間內(nèi)其他相同優(yōu)先級線程無法進(jìn)行資源搶占。
(2)時間片輪轉(zhuǎn)調(diào)度在時間片輪轉(zhuǎn)(RR)調(diào)度下,一個線程放棄內(nèi)核有三種情況:運行結(jié)束,被更高級優(yōu)先級搶占或者消耗完自己的時間片。時間片是線程運行的最小時間單元,由操作系統(tǒng)預(yù)先設(shè)定。當(dāng)時間片用完時,該線程自動交出控制權(quán), 之后內(nèi)核會按照和FIFO相同的方式搜索下一個工作線程。輪轉(zhuǎn)調(diào)度可以防止某一個任務(wù)連續(xù)占用太多的資源,而導(dǎo)致其他線程信息得不到及時處理。缺點是輪轉(zhuǎn)調(diào)度會增大由于任務(wù)切換而導(dǎo)致的開銷。
(3)自適應(yīng)調(diào)度自適應(yīng)調(diào)度是一種可實現(xiàn)自我優(yōu)先級調(diào)整的調(diào)度方式。正在運行的線程放棄CPU的情況與輪轉(zhuǎn)調(diào)度相同。當(dāng)線程用完自己的時間片后,如果沒有高優(yōu)先級或者同優(yōu)先級的任務(wù)搶占,其優(yōu)先級減1,即優(yōu)先級衰減。當(dāng)優(yōu)先級衰減后,即使再次用完時間片,其優(yōu)先級不會發(fā)生變化。當(dāng)其被更高優(yōu)先級搶占后,恢復(fù)至原來的優(yōu)先級。自適應(yīng)調(diào)度主要應(yīng)用在計算量較大的線程中,為避免頻繁的數(shù)據(jù)切換,需要較高的優(yōu)先級,同時為了避免太長時間占用CPU, 所以采用優(yōu)先級衰減的方式來保持對其他任務(wù)的響應(yīng)能力。
2、安全的消息傳遞實現(xiàn)
在QNX系統(tǒng)下, 消息傳遞的體系結(jié)構(gòu)可以簡單的描述為:服務(wù)器建立一個接收數(shù)據(jù)的通道,客戶端連接到該通道并發(fā)送服務(wù)請求,服務(wù)器接收到請求后進(jìn)行數(shù)據(jù)處理,將數(shù)據(jù)處理結(jié)果返回客戶端。
為防止死鎖,信息的傳遞是單向的,按照優(yōu)先級順序從低向高發(fā)送,兩個線程不相互發(fā)送。為防止優(yōu)先級倒置現(xiàn)象的發(fā)生,消息傳遞采用客戶驅(qū)動優(yōu)先級機制,當(dāng)某個客戶端向服務(wù)器發(fā)送服務(wù)請求后,服務(wù)器優(yōu)先級與客戶端一致,直到服務(wù)完成之后,服務(wù)器恢復(fù)原來的優(yōu)先級,當(dāng)更高優(yōu)先級的線程要求服務(wù)時,可以中斷該線程而進(jìn)行高優(yōu)先級的服務(wù),防止了低優(yōu)先級線程對資源的占用。
根據(jù)上述對QNX操作系統(tǒng)的分析, 對常用嵌入式系統(tǒng)做對比, 操作系統(tǒng)的對比資料見表2-3。
(1)uC/OS-Ⅱ不支持輪轉(zhuǎn)調(diào)度,在該系統(tǒng)下,所有的任務(wù)被分配了不同的優(yōu)先級,因此在并行任務(wù)較多的情況下,需要進(jìn)行頻繁的任務(wù)切換工作,會導(dǎo)致系統(tǒng)的工作效率低下。uC/OS-Ⅱ本身是一個系統(tǒng)內(nèi)核,僅提供了包括任務(wù)調(diào)度,時間管理在內(nèi)的最基本的工作。各類驅(qū)動,文件系統(tǒng),協(xié)議棧等均需要開發(fā)者完成,導(dǎo)致工作量增大。并且該系統(tǒng)并未提供良好的開發(fā)環(huán)境。
(2) Linux主要缺點在于內(nèi)核是非搶占式的, 所以在對硬實時性要求比較高的場合, 需要對其內(nèi)核進(jìn)行一些修改。在安全性方面, linux的驅(qū)動程序位于核心態(tài),當(dāng)驅(qū)動程序發(fā)生故障時,系統(tǒng)會崩潰,而這在對安全性能要求較高的場合是不能接受的,Android采用了Linux的內(nèi)核,也會出現(xiàn)該問題。
機哥你說了QNX這么好,那域控制器一芯多屏的方案全部都采用QNX系統(tǒng)那就解決問題了,這里就會涉及中控操作的舒適性以及應(yīng)用軟件的擴展性,比如2013年的卡宴就是同構(gòu)操作系統(tǒng),系統(tǒng)穩(wěn)定性好,升級不方便,而且應(yīng)用不好擴展,比如中控上增加一些導(dǎo)航、購物、音樂等APP沒有安卓系統(tǒng)方便。
d. 域控制器操作軟件介紹QNX Hypervisor
虛擬化:
虛擬化其實是從服務(wù)器來的概念,為什么汽車也會有這個需求?兩點原因:現(xiàn)在的中控芯片有一個趨勢,集成儀表盤,降低成本。以前的儀表盤通常是用微控制器做的,圖形界面也較簡單。而現(xiàn)在的系統(tǒng)越來越炫,甚至需要圖形處理器來參與。很自然的,這就使得中控和儀表盤合到單顆芯片內(nèi)。它們跑的是不同的操作系統(tǒng),虛擬化能更好的實現(xiàn)軟件隔離。當(dāng)然,有些廠商認(rèn)為虛擬化還不夠,需要靠物理隔離才放心,另一個趨勢是中控本身需要同時支持多個屏幕,每個屏幕分屬于不同的虛擬機和操作系統(tǒng),這樣能簡化軟件設(shè)計,提高軟件的可靠性。
這里主要是儀表和中控,主要是從安全性,實時性幾個方面導(dǎo)致的不同,儀表和自動駕駛系統(tǒng)都是實時操作系統(tǒng),要把最新的車身動力信息隨時體現(xiàn)出來,而且娛樂屏不需要。同一顆芯片跑不同的操作系統(tǒng),異構(gòu)操作系統(tǒng)可以讓安卓的響應(yīng)速度非???,而且可以實現(xiàn)畫中畫的功能,而且安全性也能得到保障。
根據(jù)ISO 26262標(biāo)準(zhǔn)規(guī)定, 儀表盤的關(guān)鍵數(shù)據(jù)和代碼與娛樂系統(tǒng)屬于不同安全等級。因此, 虛擬機(Hypervisor) 管理的概念被引入智能座艙操作系統(tǒng), 虛擬機可以允許符合車規(guī)級安全標(biāo)準(zhǔn)的QNX與Linux共同運行。
如何在硬件上實現(xiàn)虛擬化呢
1、介紹一下MMU管理系統(tǒng):
在ARM存儲系統(tǒng)中,使用MMU實現(xiàn)虛擬地址到實際物理地址的映射。為何要實現(xiàn)這種映射?
首先就要從一個嵌入式系統(tǒng)的基本構(gòu)成和運行方式著手。系統(tǒng)上電時,處理器的程序指針從0x0(或者是由0Xffff_0000處高端啟動)處啟動,順序執(zhí)行程序,在程序指針(PC)啟動地址,屬于非易失性存儲器空間范圍,如ROM、FLASH等。然而與上百兆的嵌入式處理器相比,F(xiàn)LASH、ROM等存儲器響應(yīng)速度慢,已成為提高系統(tǒng)性能的一個瓶頸。而SDRAM具有很高的響應(yīng)速度,為何不使用SDRAM來執(zhí)行程序呢?
為了提高系統(tǒng)整體速度,可以這樣設(shè)想,利用FLASH、ROM對系統(tǒng)進(jìn)行配置,把真正的應(yīng)用程序下載到SDRAM中運行,這樣就可以提高系統(tǒng)的性能。然而這種想法又遇到了另外一個問題,當(dāng)ARM處理器響應(yīng)異常事件時,程序指針將要跳轉(zhuǎn)到一個確定的位置,假設(shè)發(fā)生了IRQ中斷,PC將指向0x18(如果為高端啟動,則相應(yīng)指向0vxffff_0018處),而此時0x18處仍為非易失性存儲器所占據(jù)的位置,則程序的執(zhí)行還是有一部分要在FLASH或者ROM中來執(zhí)行的。那么我們可不可以使程序完全都SDRAM中運行那?
答案是肯定的,這就引入了MMU,利用MMU,可把SDRAM的地址完全映射到0x0起始的一片連續(xù)地址空間,而把原來占據(jù)這片空間的FLASH或者ROM映射到其它不相沖突的存儲空間位置。例如,F(xiàn)LASH的地址從0x0000_0000-0x00ff_ffff,而SDRAM的地址范圍是0x3000_0000-0x31ff_ffff,則可把SDRAM地址映射為0x0000_0000-0x1fff_ffff而FLASH的地址可以映射到0x9000_0000-0x90ff_ffff(此處地址空間為空閑,未被占用)。映射完成后,如果處理器發(fā)生異常,假設(shè)依然為IRQ中斷,PC指針指向0x18處的地址,而這個時候PC實際上是從位于物理地址的0x3000_0018處讀取指令。通過MMU的映射,則可實現(xiàn)程序完全運行在SDRAM之中。
在實際的應(yīng)用中,可能會把兩片不連續(xù)的物理地址空間分配給SDRAM。而在操作系統(tǒng)中,習(xí)慣于把SDRAM的空間連續(xù)起來,方便內(nèi)存管理,且應(yīng)用程序申請大塊的內(nèi)存時,操作系統(tǒng)內(nèi)核也可方便地分配。通過MMU可實現(xiàn)不連續(xù)的物理地址空間映射為連續(xù)的虛擬地址空間。
操作系統(tǒng)內(nèi)核或者一些比較關(guān)鍵的代碼,一般是不希望被用戶應(yīng)用程序所訪問的。通過MMU可以控制地址空間的訪問權(quán)限,從而保護(hù)這些代碼不被破壞。
MMU的實現(xiàn)過程,實際上就是一個查表映射的過程。建立頁表(translate table)是實現(xiàn)MMU功能不可缺少的一步。頁表是位于系統(tǒng)的內(nèi)存中,頁表的每一項對應(yīng)于一個虛擬地址到物理地址的映射。每一項的長度即是一個字的長度(在ARM中,一個字的長度被定義為4字節(jié))。頁表項除完成虛擬地址到物理地址的映射功能之外,還定義了訪問權(quán)限和緩沖特性等。
MMU通常是CPU的一部分,本身有少量存儲空間存放從虛擬地址到物理地址的匹配表。此表稱作TLB(轉(zhuǎn)換旁置緩沖區(qū))。所有數(shù)據(jù)請求都送往MMU,由MMU決定數(shù)據(jù)是在RAM內(nèi)還是在大容量存儲器設(shè)備內(nèi)。如果數(shù)據(jù)不在存儲空間內(nèi),MMU將產(chǎn)生頁面錯誤中斷。
MMU的兩個主要功能是:
1. 將虛地址轉(zhuǎn)換成物理地址。
2. 控制存儲器存取允許。MMU關(guān)掉時,虛地址直接輸出到物理地址總線。
在實踐中,使用MMU解決了如下幾個問題:
①使用DRAM作為大容量存儲器時,如果DRAM的物理地址不連續(xù),這將給程序的編寫調(diào)試造成極大不便,而適當(dāng)配置MMU可將其轉(zhuǎn)換成虛擬地址連續(xù)的空間。
②ARM內(nèi)核的中斷向量表要求放在0地址,對于ROM在0地址的情況,無法調(diào)試中斷服務(wù)程序,所以在調(diào)試階段有必要將可讀寫的存儲器空間映射到0地址。
③系統(tǒng)的某些地址段是不允許被訪問的,否則會產(chǎn)生不可預(yù)料的后果,為了避免這類錯誤,可以通過MMU匹配表的設(shè)置將這些地址段設(shè)為用戶不可存取類型。啟動程序中生成的匹配表中包含地址映射,存儲頁大小(1M,64K,或4K)以及是否允許存取等信息。
有了上述的MMU的概念再來了解虛擬化就比較容易了。
2、汽車芯片如何設(shè)計虛擬化(本章節(jié)是參考芯片設(shè)計內(nèi)容)
虛擬化在硬件上有什么具體要求,這并沒有明確定義。可以依靠處理器自帶的二階內(nèi)存管理單元( s2MMU ), 實現(xiàn)軟件虛擬機; 也可以在內(nèi)存控制器前放一個硬件防火墻, 對訪問內(nèi)存的地址進(jìn)行檢查和過濾,不做地址重映射;還可以使用系統(tǒng)內(nèi)存管理單元SMMU實現(xiàn)完整的硬件虛擬化,這是我們要重點介紹的。
如上圖黃色框所示,每個主設(shè)備和總線之間,都加了一個MMU600。為什么每個主設(shè)備后都要加?很簡單,如果不加,那必然存在安全漏洞,和軟件虛擬化無異。那為何不用防火墻?防火墻的的實現(xiàn)方法,通常是用一個片上內(nèi)存來存放過濾表項。如果做到4K字節(jié)的顆粒度,那4G字節(jié)內(nèi)存就需要1百萬項,每項8位,總共1MB的片上內(nèi)存,這是個不小的成本。另外一個原因是,防火墻方案的物理地址空間對軟件是不透明的,采用系統(tǒng)內(nèi)存管理器SMMU600對上層軟件透明,更貼近虛擬化的需求。
當(dāng)處理器發(fā)起一次地址虛實轉(zhuǎn)換請求,內(nèi)存管理單元會在內(nèi)部的TLB緩存和Table Walk緩存查找最終頁表項和中間表項。如果在內(nèi)部緩存沒找到,那就需要去系統(tǒng)緩存或者內(nèi)存讀取。在最差情況下, 每一階的4 層中間表可能都是未命中, 4x4+4=20 , 最終會需要20 次內(nèi)存讀取。對于系統(tǒng)內(nèi)存管理器,情況可能更糟。如上圖所示,由于SMMU本身還需引入多級描述符來映射多個頁表,最極端情況需要36次的訪存才能找到最終頁表項。如果所有訪問都是這個延遲,顯然無法接受。
Arm傳統(tǒng)的設(shè)計是添加足夠大的多級TLB緩存和table walk緩存,然后把兩個主設(shè)備連到接口,進(jìn)行地址較為隨機的訪問??梢钥吹剑髟O(shè)備的5萬次訪問,在經(jīng)過SMMU后,產(chǎn)生了近5 萬次未命中。這意味著訪問的平均延遲等于訪存延遲, 150ns 以上。另一方面, 處理器開了虛擬機后,它的隨機訪存效率,和未開虛擬機比,卻能做到80%以上,這是為什么呢?答案很簡單,處理器內(nèi)部的MMU,會把中間頁表的物理地址繼續(xù)發(fā)到二級或者三級緩存,利用緩存來減少平均延遲。而SMMU就沒有這么幸運,在Arm先前的手機處理器參考設(shè)計中,并沒有系統(tǒng)緩存。這種情況下,即使對于延遲不太敏感的主設(shè)備,比如圖形處理器,打開虛擬化也會造成性能損失,可能高達(dá)9%,這不是一個小數(shù)目。
怎么解決這個問題?在Arm服務(wù)器以及下一代手機芯片參考設(shè)計中,會引入網(wǎng)狀結(jié)構(gòu)總線,而不是之前的crossbar結(jié)構(gòu)的一致性總線。網(wǎng)狀結(jié)構(gòu)總線的好處,主要是提升了頻率和帶寬,并且,在提供多核一致性的同時,也可以把系統(tǒng)緩存交給各個主設(shè)備使用。不需要緩存的主設(shè)備還是可以和以前一樣發(fā)出非緩存的的數(shù)據(jù)傳輸,避免額外占用緩存,引起頻繁的緩存替換;同時,SMMU可以把頁表和中間頁表項放在緩存,從而縮短延遲。
Arm 的SMMU600 還做了一點改進(jìn), 可以把TLB 緩存貼近各個主設(shè)備做布局, 在命中的情況下, 一個時鐘周期就可以完成翻譯;同時, 把table walk 緩存放到另一個地方, TLB 緩存和table walk 緩存通過內(nèi)部總線互聯(lián)。幾個主設(shè)備可以同時使用一個table walk 緩存, 減少面積,便于布線的同時,又不失效率。其結(jié)構(gòu)如下圖
如果我們讀一下Arm 的SMMU3.x 協(xié)議, 會發(fā)現(xiàn)它是支持雙向頁表維護(hù)信息廣播的, 這意味著除了緩存數(shù)據(jù)一致性外, 所有的主設(shè)備, 只要遵循SMMU3.x 協(xié)議, 可以和處理器同時使用一張頁表。在輔助駕駛芯片設(shè)計時,如果需要,把重要的加速器加入同一張頁表,可以避免軟件頁表更新操作,進(jìn)一步提高異構(gòu)計算的效率。不過就SMU600而言,它僅僅支持單向的廣播,接了SMU600的主設(shè)備,本身的緩存和頁表操作并不能廣播到處理器,反過來是可以的。
對于當(dāng)前的汽車芯片,如果沒有系統(tǒng)緩存,那如何減少設(shè)備虛擬化延遲呢?辦法也是有的。汽車的虛擬機應(yīng)用較為特殊, 目前8 個虛擬機足夠應(yīng)付所有的分屏和多系統(tǒng)需求, 并且一旦分配,運行階段無需反復(fù)刪除和生成。我們完全可以利用這點,把二階段的SMMU頁表變大,比如1GB,固定分配給某個虛擬機。這樣,設(shè)備在進(jìn)行二階段地址映射時,只需少數(shù)幾項TLB表項,就可以做到一直命中,極大降低延遲。需要注意的是,一旦把二階映射的物理空間分配給某設(shè)備,就不能再收回并分給其他設(shè)備。不然,多次回收后,就會出現(xiàn)物理地址離散化,無法找到連續(xù)的大物理地址了。
SMMU接受的是從主設(shè)備發(fā)過來的物理地址,那它是怎么來區(qū)分虛擬機呢?靠的是同樣從主設(shè)備發(fā)送過來的vmid/streamid 。如果主設(shè)備本身并不支持虛擬化, 那就需要對它進(jìn)行時分復(fù)用, 讓軟件來寫入vmid/streamid 。當(dāng)然, 這個軟件必須運行在hypervisor 或者是securemonitor,不然會有安全漏洞。具體的做法,是在虛擬機切換的時候,hypervisor修改寄存器化的vmid/streamid,提供輸入給SMMU即可。如果訪問時的id和預(yù)設(shè)的不符,SMMU會報異常給hypervisor。
如果主設(shè)備要實現(xiàn)硬件的方式支持虛擬化,那本身需要根據(jù)多組寄存器設(shè)置,主動發(fā)出不同的vmid/streamid 。為了對軟件兼容, 可以把不同組按照4KB 邊界分開, 這樣在二階地址映射時,可以讓相同的實地址訪問不同組的寄存器,而對驅(qū)動透明。同時,對于內(nèi)部的資源也要做區(qū)分, 不能讓數(shù)據(jù)互相影響。如果用到緩存, 那緩存還必須對vmid 敏感, 相同地址不同vmid的情況,必須識別為未命中。
前面說到,有些廠商認(rèn)為虛擬化還不夠,有些場景要物理隔離。虛擬化的時候,硬件資源還是共享的,只不過對軟件是透明。這樣其實并不能完全防止硬件的沖突和保證優(yōu)先級。請注意,硬件隔離是separation , 而不是分區(qū)partition , Partition 是用MPU 來做的。在中控的系統(tǒng)框架圖內(nèi),我們把采用物理隔離的紅色部分單獨列出來,如下圖
此時的處理器A55和圖形處理器G31,獨立于作為信息娛樂域的處理器A76/A55和圖形處理器G76之外,擁有自己的電源,時鐘和電壓。作為優(yōu)化,紅色部分可以和其余的處理器用一致性總線連接起來,在不作為儀表盤應(yīng)用的時候,作為SMP的一部分來使用。而需要隔離的時候,用多路選擇連接到NoC或者內(nèi)存控制器。這樣既節(jié)省了面積,又實現(xiàn)了隔離。
這里可以看到飛思卡爾8就是硬件上的隔離,保障了安全性
3、目前常見的Hypervisor 實現(xiàn)方式
Hypervisor 允許多個操作系統(tǒng)和應(yīng)用共享軟件。Hypervisor(又稱虛擬機監(jiān)視器) 是一種運行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層。由于智能座艙需要同步支持 QNX、Android、Linux 等多操作系統(tǒng),因此在物理硬件之上需要一個虛擬化平臺(Hypervisor)以支持各操作系統(tǒng)的運行。Hypervisors 即可協(xié)調(diào)著硬件資源的訪問,也 可在各個虛擬機(VM)之間施加防護(hù)。當(dāng)服務(wù)器啟動并執(zhí)行 Hypervisor 時,它會加載 各虛擬機客戶端的操作系統(tǒng),同時會分配給各虛擬機適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤等資源。
Hypervisor主要有兩種類型:裸機型和宿主型。
裸機型Hypervisor最為常見, 直接安裝在硬件計算資源之上, 操作系統(tǒng)安裝并運行在Hypervisor之上。典型的裸機型有IBM的Power VM、VMware的ESX Server、Citrix的Xen Server、Microsoft的Hyper-Ⅴ以及開源的KVM等虛擬化軟件。
宿主型Hypervisor(又稱基于操作系統(tǒng)虛擬化) 將虛擬化層安裝在傳統(tǒng)的操作系統(tǒng)中, 虛擬化軟件以應(yīng)用程序進(jìn)程形式運行在Windows和Linux等主機操作系統(tǒng)中。典型的宿主型Hypervisor有VMware Workstation和Virtual Box。
QNX虛擬機是裸機型
這里我們車載上使用最多的QNX的虛擬機,它是裸機型虛擬機。QNX是目前唯一一個能達(dá)到Asil-D等級的操作系統(tǒng)(包含Hypervisor)。如果需要實現(xiàn)Asil-D 級別的系統(tǒng), 必須把現(xiàn)有的軟件從Linux 系統(tǒng)移植到QNX 。
所幸的是, QNX 也是符合Posix 標(biāo)準(zhǔn)的, 尤其是圖形處理器的驅(qū)動, 移植起來會省事一些。QNX 不是所有的模塊都是Asil-D 級, 移植過去的驅(qū)動, 其實是沒有安全等級的。QNX 依靠Asil-D 級的核心軟件模塊和Hypervisor,保證99%以上的失效覆蓋率。如果子模塊出了問題,那只能重啟子模塊。
評論