新聞中心

EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 你真的了解什么是智能座艙么(域控制器篇)

你真的了解什么是智能座艙么(域控制器篇)

作者:阿寶 時(shí)間:2024-04-30 來源:公眾號阿寶1990 收藏

人生沒有最優(yōu)解,我們可以有多種活法,拒絕自我設(shè)限。加入本知識星球可以拓展您的圈層,打破您的認(rèn)知邊界,鏈接到4W+的汽車賽道“局內(nèi)人”,交換職場信息,打破職場信息差,遇見同行伙伴,共同探索技術(shù)交流和職業(yè)發(fā)展。

本文引用地址:http://m.butianyuan.cn/article/202404/458245.htm

要說奧迪A4L憑什么這么受歡迎,能夠在銷量上領(lǐng)先奔馳和寶馬,我覺得“科技”是非常重要的一點(diǎn),這也是奧迪品牌一向的標(biāo)簽,像是儀表盤這項(xiàng)汽車上古時(shí)代的配置,奧迪就重新將其定義,打造出了“虛擬座艙”,帶給了用戶革命性的

創(chuàng)新體驗(yàn)。每一位奧迪A4L的用戶,無不稱贊其虛擬座艙帶來的科技與便利性。而近日上市的全新奧迪A4L也不出所望,再次將“創(chuàng)新科技”四個(gè)字詮釋的淋漓盡致。

看看媒體都是怎么評論的,這次奧迪A4L就帶來了最新一代MMI系統(tǒng),該系統(tǒng)可以說是目前最好用的車機(jī)系統(tǒng)之一。因?yàn)樗耆现袊M(fèi)者的使用習(xí)慣,要知道,與其他操作系統(tǒng)依據(jù)國外使用習(xí)慣不同,最新一代的MMI信息娛樂系統(tǒng)是基于安卓平臺開發(fā),并專為中國用戶打造的應(yīng)用體系,值得一提的是,這也首款引入安卓平臺的豪華品牌車型。安卓平臺最大的優(yōu)點(diǎn)就是“開放”性,這意味著奧迪A4L的車機(jī)系統(tǒng),不再像其他車型的車機(jī)一樣,局限于僅有的幾個(gè)功能,而是可以根據(jù)用戶的使用需求,自主下載,選擇APP。

而這里的全新奧迪A4L的使用的就是高通820A芯片做的域控制器,簡單來說就是一顆主芯片既輸出給中控導(dǎo)航,又輸出液晶儀表信息,而且兩個(gè)產(chǎn)品在同一個(gè)芯片上跑不同的軟件系統(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è)域控制器有一定的難度。

博世將整車電子電氣架構(gòu)發(fā)展分為6 個(gè)階段:模塊化階段、功能集成階段、中央域控制器階段、跨域融合階段、車載中央電腦和區(qū)域控制器階段、車載云計(jì)算階段,目前大多數(shù)整車廠商開始從模塊化向功能集成階段邁進(jìn),而特斯拉已經(jīng)達(dá)到了第五個(gè)車載中央電腦和區(qū)域控制器階段。目前汽車的電氣架構(gòu)絕大部分都是處于第一階段,模塊化的階段。

模塊化階段整車OTA升級不方便

隨著汽車工業(yè)的飛速發(fā)展,汽車電子電氣系統(tǒng)變得十分復(fù)雜,一輛普通汽車的電子控制單元(ECU)已經(jīng)多達(dá)70-80 個(gè),代碼約一億行,且各個(gè)ECU 往往來源于供應(yīng)鏈中不同的tier1,有著不同的嵌入式軟件和底層邏輯,各個(gè)ECU 往往獨(dú)立運(yùn)行,整車廠沒有權(quán)限也沒有能力維護(hù)更新ECU,因此傳統(tǒng)汽車的軟件更新幾乎與汽車生命周期同步,整車企業(yè)以O(shè)TA 方式更新軟件系統(tǒng)受限,目前僅僅局限于娛樂信息系統(tǒng)更新。

模塊化階段成本優(yōu)勢不明顯:

傳統(tǒng)座 艙,儀表、娛樂、中控等系統(tǒng)相互獨(dú)立,主要由單一芯片驅(qū)動(dòng)單個(gè)功能/系統(tǒng),通信開銷大,就比如中控和儀表間進(jìn)行地圖的通訊,傳統(tǒng)座艙需要增加2個(gè)LVDS芯片+2個(gè)LVDS座子+高速信號線材,既增加了通訊的成本,而且通訊時(shí)間也增加了。

一芯多屏”模式采用一顆芯片支持多個(gè)操作系統(tǒng),不僅解決了系統(tǒng)之間高成本的 通信開銷問題,同時(shí)縮短了通信時(shí)間,而且減少了單個(gè)AP及外圍的成本,隨著量產(chǎn)數(shù)量的增加,不斷降低域控制器的芯片成本。

多重因素發(fā)展促進(jìn)域控制的出現(xiàn):

1、新能源汽車以及動(dòng)力電池技術(shù)發(fā)展迅猛。車身電子電器架構(gòu)正在進(jìn)行深度升級,由傳統(tǒng)的分布式向中心演變,不同操作系統(tǒng)之間通過虛擬機(jī)打;同時(shí)三元鋰離子電池能量密度已經(jīng)突破300wh/kg,為智能座艙各功提供能量基礎(chǔ)。

在新能源車的發(fā)展過程中你會(huì)看到很多同傳統(tǒng)車不一樣的先進(jìn)技術(shù)在這方面使用,由于新能源車本身的架構(gòu)和傳統(tǒng)燃油就有很大的不同,對比于燃油車,新能源汽車的結(jié)構(gòu)更簡單。目前的燃油車結(jié)構(gòu)比新能源汽車更復(fù)雜,特別是動(dòng)力總成系統(tǒng)部分,要比新能源汽車復(fù)雜得多。新能源汽車的車輛結(jié)構(gòu)較為簡單,主要部件為動(dòng)力電池組、電機(jī)和EMS組成的三電系統(tǒng),因此在新能源汽車上開發(fā)或者使用自動(dòng)駕駛技術(shù),那么出現(xiàn)概率的情況要比燃油車低得多。與此同時(shí),從操控上來說,新能源汽車也要比燃油車更好操控——控制電壓電流的大小以及輸出,遠(yuǎn)比控制傳統(tǒng)內(nèi)燃機(jī)來得容易得多。

所以比如一些ADAS的設(shè)備、TBOX、以太網(wǎng)、還有一些域控制器都是在優(yōu)先在新能源車上出現(xiàn),然后逐步使用到燃油車上。

2、芯片的運(yùn)算能力呈指數(shù)級提升,可以滿足一些域控制器的基本硬件條件,甚至可以滿足自動(dòng)駕駛的算力要求,各大芯片廠商都推出了算力匹配的主控芯片,同時(shí)自動(dòng)駕駛的技術(shù)成熟使得人們從駕駛場景解放出來,更多的注意力放在智能座艙場景里面去,所以這方面的芯片的推動(dòng)也是巨大的。

3、云計(jì)算和5G的鋪設(shè)速度加快,云平臺的計(jì)算、存儲能力和5G的傳輸速度為智能座艙的預(yù)控器的大數(shù)據(jù)量、低延遲需求提供了保障。

從分布式到集中式,域控制以及未來計(jì)算平臺將成為智能駕駛最大的增量。過去汽車的控制器主要以分布式為主,每個(gè)控制器針對一個(gè)功能。隨著汽車智能化等級的提升,原本的多個(gè)控制器將集成為域控制。

車內(nèi)電子架構(gòu)將來會(huì)劃分為5個(gè)域:駕駛輔助/自動(dòng)駕駛域、智能座艙控制域、車身控制域、車身控制域、動(dòng)力總成域。而其中駕駛輔助/自動(dòng)駕駛域、智能座艙域?yàn)槠囄磥砗诵模彩俏磥碥嚻蟛町惢偁?,?shí)現(xiàn)軟硬件分離從而實(shí)現(xiàn)軟件盈利的關(guān)鍵核心點(diǎn)。

02

域控制器的架構(gòu)優(yōu)點(diǎn)

域控制器階段是以以太網(wǎng)為骨干網(wǎng),面向服務(wù)的架構(gòu),按功能劃分的集中化可以加速軟硬件分離,節(jié)約整機(jī)的成本,具體的優(yōu)點(diǎn)如下:

1)硬件架構(gòu)升級:

a.減少內(nèi)部算力的冗余,避免ECU數(shù)量膨脹,減少設(shè)計(jì)算力總需求;

b.傳統(tǒng)分布式架構(gòu)難以實(shí)現(xiàn)實(shí)時(shí)交互,集中式架構(gòu)可以統(tǒng)一交互,并實(shí)現(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)車輛功能,軟件一定程度上實(shí)現(xiàn)了傳統(tǒng)4S店的功能,可以持續(xù)地為提供車輛交付后的運(yùn)營和服務(wù);

b.整體形成感知層后,采集的數(shù)據(jù)信息可共用。軟硬解耦后,可實(shí)現(xiàn)多個(gè)應(yīng)用共用一套硬件裝置,有效減少硬件數(shù)量。

3)通信架構(gòu)升級。采用高速以太網(wǎng)取代CAN總線,為未來汽車添加更多車聯(lián)網(wǎng)、ADAS功能提供支撐。

a.高實(shí)時(shí)性:數(shù)十微秒的確定性傳輸延遲和亞微秒級的節(jié)點(diǎn)時(shí)間同步精度

b.高帶寬:百倍傳輸,滿足大量非結(jié)構(gòu)化數(shù)據(jù)(視頻、圖片)的傳輸

03

智能座艙域控制器的CPU芯片市場

a.傳統(tǒng)的汽車芯片廠家遇到消費(fèi)領(lǐng)域巨頭芯片廠家的挑戰(zhàn)

根據(jù)專業(yè)調(diào)查數(shù)據(jù),在2015年以前都是以瑞薩、NXP、TI等傳統(tǒng)汽車芯片主導(dǎo)市場,前面三家的芯片就占據(jù)市場60%的份額,從2015年開始,越來越多的消費(fèi)級芯片巨頭參與汽車芯片生產(chǎn)商重組并購。

智能座艙域控制器芯片 市場的主要參與者包括 NXP、德州儀器、瑞薩電子等傳統(tǒng)汽車芯片廠商,主要面向中低 端市場,此外手機(jī)領(lǐng)域的廠商如聯(lián)發(fā)科、三星、高通等也加入市場競爭中,主要面向高端市場,這個(gè)市場越來越好看,越來越好玩。

由于域控制器芯片市場仍處于行業(yè)萌芽期,目前國內(nèi)搭載座艙域控制器芯片的 車型絕大部分仍然采用的是德州儀器的Jacinto6 和 NXP 的 i.mx6 等上一代產(chǎn)品。國內(nèi)競 爭者主要有華為、地平線等。根據(jù)偉世通數(shù)據(jù),2019 年全球座艙域控制器出貨量約為 40 萬套,預(yù)計(jì) 2025 年出貨量將超過 1300 萬套,2019-2025 年均增長 79%。

b. 相對于消費(fèi)級芯,車規(guī)級芯片對于可靠性、安全性的要求更高

從上圖可以看到,車規(guī)級芯片在溫度、濕度、碰撞等多個(gè)維度范圍更寬,需要承受的極限條件更苛刻,此外,由于開發(fā)需求的復(fù)雜化,在芯片設(shè)計(jì)、測試等環(huán)節(jié)投入更高的成本和時(shí)間,所以在市場中可以看到車機(jī)芯片的更新?lián)Q代速度相對較慢(有的車型一賣就是七八年),車機(jī)芯片升級的動(dòng)力不足,態(tài)度更加謹(jǐn)慎,這兩年車機(jī)芯片的運(yùn)行速度已經(jīng)和消費(fèi)級芯片大幅縮小了。

汽車座艙領(lǐng)域迭代速度也開始像手機(jī)一樣快速,產(chǎn)品的生命周期越來越短,競爭越來越激烈,原本手機(jī)領(lǐng)域的廠家如聯(lián)發(fā)科、三星、高通都加入陣營,未來華為還有紫光展銳也會(huì)加入。手機(jī)領(lǐng)域的廠家主要著眼點(diǎn)在于研發(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性能:目前浮點(diǎn)性能上,高通相比于瑞薩、英特爾領(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年為強(qiáng)化低端市場,特別推出低價(jià)位的A3920,其性能實(shí)際與3900系列旗艦A3960相差不多,但價(jià)格是3900系列中最低的。價(jià)格低,但性能絲毫不低,不過截止2019年7月,A3920還未通過AEC-Q100認(rèn)證,這是基礎(chǔ)的車規(guī)級認(rèn)證,但這并不影響其市場,目前已經(jīng)有車廠在導(dǎo)入A3920。

特斯拉為A3950做了活廣告。國內(nèi)紅旗和長城也開始采用英特爾的SoC,國際上則有寶馬和沃爾沃兩大客戶。英特爾的強(qiáng)大支撐還有開源的ACRN虛擬機(jī),這是其他廠家望塵莫及的。其他家的虛擬機(jī)方案一般只能選擇Xen或收費(fèi)的QNX,目前英特爾最新的車規(guī)級AEC-Q100芯片是A3960,這個(gè)還在推廣中。

聯(lián)發(fā)科也以高性價(jià)比的MT2712主打市場,目前已通過偉世通打入大眾供應(yīng)鏈,可能會(huì)用在下一代帕薩特上。也有消息說可能上到豐田的低端車上,偉世通的主打平臺就是聯(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,但是估計(jì)最快也要到2021年底才有樣片。

德州儀器對嵌入式處理器領(lǐng)域似乎越來越不感興趣,因?yàn)槟M器件錢太好賺了,一個(gè)產(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一樣都采取硬件隔離的形式,做虛擬機(jī)時(shí)可以省掉不少軟件研發(fā)費(fèi)用。德州儀器跟奧迪、大眾合作緊密,預(yù)計(jì)下一代奧迪或大眾會(huì)有車型使用Jacinto7。在國內(nèi),德州儀器主要合作伙伴是德賽西威。

瑞薩的R-CAR H3也經(jīng)歷一波三折,多次推遲量產(chǎn)。這款芯片在2015年12月首次推出,在當(dāng)時(shí)是相當(dāng)先進(jìn)的芯片,但在4年后,雖然仍然不落伍,但考慮到它高昂的售價(jià),性價(jià)比明顯是偏低了,不過H3是唯一一個(gè)在推出之時(shí)就通過高等級的ASIL-B級認(rèn)證的。瑞薩跟日系車合作非常緊密,通常都是和整車廠一起開發(fā)芯片,豐田毫無疑問會(huì)使用瑞薩的R-CAR H3系列產(chǎn)品。

實(shí)際上,在國內(nèi)市場都是高端車型,絕大部分車型中控和儀表仍然是德州儀器的Jacinto6和NXP的i.mx6,域控制器的芯片就已經(jīng)城頭變換大王旗嘍。

e. 高通820A芯片在高端車域控制器上所向披靡

4月10日,中期改款的奧迪A4 L上市,這款車在外觀和動(dòng)力部分沒太多的改動(dòng),不過車機(jī)系統(tǒng)的變化卻很明顯。中控娛樂屏幕從此前的非觸控屏升級為觸控屏,車機(jī)芯片從驍龍602A升級為驍龍820A,系統(tǒng)也換成了安卓Pie(安卓9)。這里不能跟手機(jī)比,手機(jī)都到安卓11了,以前手機(jī)在安卓9的時(shí)候,車機(jī)系統(tǒng)還是安卓4.4左右。得益于車機(jī)的安卓系統(tǒng),奧迪A4 L可以在車機(jī)內(nèi)安裝導(dǎo)航、天氣、音樂等第三方應(yīng)用程序,較此前奧迪的MMI系統(tǒng)可謂是產(chǎn)生了質(zhì)的變化。

不過,在軟件背后還有更厲害的高通驍龍820A,正是這顆芯片的加入,讓車機(jī)能夠流暢運(yùn)行安卓系統(tǒng)和各種應(yīng)用。820A是高通此前在移動(dòng)設(shè)備上的旗艦芯片驍龍820的車規(guī)版本。

汽車智能化浪潮興起以來,高通、英特爾、英偉達(dá)等企業(yè),就一直希望以高算力芯片為核心,以車機(jī)系統(tǒng)和自動(dòng)駕駛為突破點(diǎn),切入汽車半導(dǎo)體市場。但在過去幾年里,這些玩家的動(dòng)作往往是雷聲大雨點(diǎn)小——簽約合作站臺不少,實(shí)際落地的品牌一兩個(gè),車型若干臺,并不成氣候。

高通于2014推出了第一代智能座艙SOC是602A車機(jī)芯片,雖然早在2014年就跟奧迪等車企簽署了合作,但是一直都是雷聲大雨點(diǎn)小,實(shí)際落地車型寥寥無幾,幾乎沒有什么反應(yīng)。

在2016年把手機(jī)領(lǐng)域的820沒做太多修改,推廣到汽車領(lǐng)域,型號變?yōu)?20a,a就代表汽車版?,F(xiàn)階段新出的車型內(nèi)部屏幕是越來越大,越來越多,清晰度也是越來越高,甚至可以說就是在車內(nèi)裝了幾個(gè)平板電腦,原來就是旗艦級移動(dòng)設(shè)備芯片的驍龍820A,自然是目前車企可選擇的最強(qiáng)產(chǎn)品。

但到了2020年,最終在經(jīng)過四五年的等待之后,820A芯片終于迎來一波爆發(fā)。高通820A卻借著奧迪A4L、領(lǐng)克05、小鵬P7,還有去年上市的理想ONE等熱門車型,一下成了行業(yè)熱詞、旗艦標(biāo)配。

上表是高通820A與幾個(gè)老玩家的王牌車機(jī)芯片對比表,可以非常直觀地看到性能差距。

從制程上來說,恩智浦i.MX8、瑞薩的H3都落后于高通820A的16nm,德儀的J6甚至還用的是28nm的老技術(shù)。要知道,目前消費(fèi)電子領(lǐng)域的芯片制程已經(jīng)在普及7nm,甚至向著5nm前進(jìn)了。CPU主頻也是如此,除了820A,其它三個(gè)產(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的性能直接決定了車機(jī)在處理3D地圖導(dǎo)航、語音交互等大型應(yīng)用時(shí)反應(yīng)是否足夠流暢,而GPU則決定了車機(jī)屏幕的分辨率是否足夠清晰,以及各種動(dòng)畫效果的顯示是否流暢。如果GPU性能較弱,高分辨率的圖像、復(fù)雜的動(dòng)畫都無法流暢渲染。一旦每秒渲染的畫面低于24幀,人們就會(huì)覺得車機(jī)“卡成PPT”。

此外,高通作為移動(dòng)芯片領(lǐng)域的老大,其820A SoC芯片還有一個(gè)明顯的優(yōu)勢,就是內(nèi)嵌了4G LTE調(diào)制解調(diào)器,直接可以實(shí)現(xiàn)4G通信,而選擇其他芯片玩家的產(chǎn)品,則還得外掛一顆通信芯片。

此前幾十年,汽車芯片市場,基本都被恩智浦、德州儀器、瑞薩半導(dǎo)體等汽車芯片巨頭所壟斷,外來者鮮有機(jī)會(huì)可以入局。但到了2020年這個(gè)節(jié)點(diǎn),高通820A終于在汽車產(chǎn)業(yè)上撕開一個(gè)缺口,也意味著傳統(tǒng)玩家們在這領(lǐng)域,已經(jīng)被高通殺到了家門口。

驍龍820A在車機(jī)芯片市場玩得風(fēng)生水起,可這一市場此前一直都是德州儀器、恩智浦、瑞薩電子這些傳統(tǒng)廠商的天下,為什么高通突然在2020年火起來了呢?

汽車作為工業(yè)產(chǎn)品,設(shè)計(jì)生命周期一般都在10年以上,與消費(fèi)電子類產(chǎn)品相比顯然更長,同時(shí)對穩(wěn)定性的要求也就更高。因此,傳統(tǒng)汽車芯片企業(yè)從研發(fā)和成本兩個(gè)方面考量,決定用已經(jīng)成熟的制造技術(shù)造汽車芯片,這樣既能控制成本,也能讓芯片的穩(wěn)定性更高。

也正是這種原因,上述老玩家的產(chǎn)品在性能上才會(huì)集體敗給高通,而高通820A芯片本身,也已經(jīng)是多年前的產(chǎn)品,在手機(jī)芯片領(lǐng)域,已經(jīng)進(jìn)入了865時(shí)代。

04

域控制器的底層操作系統(tǒng)競爭格局

a.車載操作系統(tǒng):QNX 、Linux 平分秋色,微軟逐漸淘汰

操作系統(tǒng),這是軟件運(yùn)行的底層基礎(chǔ),也是目前我國還未能攀越的技術(shù)高峰。PC時(shí)代的微軟、移動(dòng)智能手機(jī)時(shí)代的蘋果和谷歌,這些企業(yè)不管是市值還是社會(huì)影響力都是頂級的存在。

他們的共同特征也為世人所熟知,那便是掌握了當(dāng)下時(shí)代的操作系統(tǒng)主導(dǎo)權(quán)?,F(xiàn)在,誰能掌控汽車操作系統(tǒng),便有機(jī)會(huì)獲得下一輪科技巨頭圓桌會(huì)議的入場券。

汽車操作系統(tǒng)主要分為安全相關(guān)的車控操作系統(tǒng)和與用戶體驗(yàn)相關(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)點(diǎn),主要應(yīng)用于儀表,但 其并非開源,因此存在開發(fā)難度大、成本高等問題。

與 QNX 相比,Linux 為免費(fèi)的開 源系統(tǒng),具備定制開發(fā)靈活、成本較低等特點(diǎn),主要應(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)非常少,微 軟計(jì)劃 2021 年 3 月終止對它的技術(shù)服務(wù)。


b.各大車企以底層操作系統(tǒng)為基礎(chǔ),進(jìn)行二次開發(fā)

從車企角度看,絕大多數(shù)外企車廠、零部件供應(yīng)商(如奔馳、寶馬、博世等)和國內(nèi)造車新勢力(如小鵬、蔚來等)選擇自建技術(shù)團(tuán)隊(duì),在底層操作系統(tǒng)基礎(chǔ)上進(jìn)行定制化開發(fā),形成自己獨(dú)有的車載系統(tǒng)。部分國內(nèi)主機(jī)廠(如上汽榮威)則選擇和互聯(lián)網(wǎng)公司合作,開發(fā)一定的權(quán)限,直接搭載合作伙伴所開發(fā)的車載系統(tǒng)。

各大車企均基于底層操作系統(tǒng)開發(fā)其專屬操作系統(tǒng)。大部分車企會(huì)在底層操作系統(tǒng)基礎(chǔ)之上進(jìn)行定制化開發(fā)其專屬的車載操作系統(tǒng)。例如基于 QNX 底層操作系統(tǒng)的車企 有福特、奔馳、奧迪、寶馬、大眾、沃爾沃等,基于 Linux 底層操作系統(tǒng)的車企有特斯 拉、豐田、雪佛蘭等。國內(nèi)能提供定制專屬操作系統(tǒng)的上市企業(yè)包括:中科創(chuàng)達(dá)、東軟集團(tuán)、誠邁科技、四維圖新以及德賽等車機(jī)系統(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)已有接口實(shí)現(xiàn)相關(guān)功能,其余層級則完全沿用已有系統(tǒng)架構(gòu)。

c. 操作系統(tǒng)介紹

幾個(gè)操作系統(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ū)動(dòng)和用戶程序都放到內(nèi)核空間中,直接通過物料地址來訪問內(nèi)存,具有最快的訪問速度和信息傳遞,缺點(diǎn)是如果用戶程序出現(xiàn)溢出或者錯(cuò)誤指針,可能會(huì)破壞其他程序,導(dǎo)致系統(tǒng)崩潰,代表是vxworks5.5及以前的版本。

宏內(nèi)核架構(gòu)將用戶程序放在用戶空間中,內(nèi)核和驅(qū)動(dòng)程序以核心形式運(yùn)行,這種避免了應(yīng)用程序?qū)τ趦?nèi)核的破壞,同時(shí)保留了較快的訪問速度,Linux,Windows均屬于這一類型,在嵌入式系統(tǒng)應(yīng)用中,芯片結(jié)構(gòu)更加多樣化,外圍接口更加復(fù)雜,驅(qū)動(dòng)程序一般都需要自己開發(fā),在宏內(nèi)核架構(gòu)中,如果某個(gè)驅(qū)動(dòng)程序出現(xiàn)故障,這可能會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰,因此該架構(gòu)需要reset命令重啟操作系統(tǒng),而在安全性比較高的場合,重啟是不允許的,因此,車輛核心安全控制領(lǐng)用一般也不用此架構(gòu)。

微內(nèi)核是指為了提高可靠性,將操作系統(tǒng)分成小的模塊,只有一個(gè)微內(nèi)核模塊在核心態(tài)運(yùn)行,其他功能模塊作為服務(wù)進(jìn)程在用戶空間運(yùn)行,由于把設(shè)備驅(qū)動(dòng)程序和文件系統(tǒng)也作為普通用戶進(jìn)程運(yùn)行,當(dāng)出現(xiàn)故障時(shí),雖然模塊本身崩潰,但不會(huì)使整個(gè)系統(tǒng)死機(jī)。微內(nèi)核系統(tǒng)具有清晰的模塊化結(jié)構(gòu),只要接口符合規(guī)范,操作系統(tǒng)可以很方便的添加和刪除模塊,系統(tǒng)具有很好的靈活性和擴(kuò)展性。此外,微內(nèi)核結(jié)構(gòu)的內(nèi)核非常小,一般只有幾十到幾百kb,只保留了一些最基本的功能,包括任務(wù)管理,任務(wù)調(diào)度,任務(wù)間通信等。

QNX是典型的微內(nèi)核結(jié)構(gòu)操作系統(tǒng), 有一個(gè)非常小的微內(nèi)核Neutrino 約為12K。內(nèi)核提供了中斷處理,定時(shí)器處理,線程的建立與調(diào)度等任務(wù)。另外有一個(gè)進(jìn)程process manager來負(fù)責(zé)進(jìn)程的建立和地址空間管理的功能, 與內(nèi)核運(yùn)行在內(nèi)核空間。其他功能模塊運(yùn)行在用戶空間。QNX對所有的進(jìn)程均提供了內(nèi)存保護(hù), 包括文件系統(tǒng), 資源管理器, 應(yīng)用程序等。QNX的結(jié)構(gòu)如圖2-1。

QNX操作系統(tǒng)的幾個(gè)優(yōu)點(diǎn)

1、高級的調(diào)度方式

為了滿足不同應(yīng)用的需要,在多個(gè)線程具有相同優(yōu)先級并處于就緒狀態(tài)時(shí),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)度方式下,一個(gè)線程直到它被更高優(yōu)先級的線程搶占或者運(yùn)行結(jié)束,才會(huì)交出控制權(quán)。相同優(yōu)先級的任務(wù)不能打斷該線程。當(dāng)線程完成后,內(nèi)核會(huì)去尋找處于就緒狀態(tài)相同優(yōu)先級的線程,如果不存在, 則尋找低優(yōu)先級線程。FIFO調(diào)度本身實(shí)現(xiàn)了數(shù)據(jù)的互斥, 在線程運(yùn)行的時(shí)間內(nèi)其他相同優(yōu)先級線程無法進(jìn)行資源搶占。

(2)時(shí)間片輪轉(zhuǎn)調(diào)度在時(shí)間片輪轉(zhuǎn)(RR)調(diào)度下,一個(gè)線程放棄內(nèi)核有三種情況:運(yùn)行結(jié)束,被更高級優(yōu)先級搶占或者消耗完自己的時(shí)間片。時(shí)間片是線程運(yùn)行的最小時(shí)間單元,由操作系統(tǒng)預(yù)先設(shè)定。當(dāng)時(shí)間片用完時(shí),該線程自動(dòng)交出控制權(quán), 之后內(nèi)核會(huì)按照和FIFO相同的方式搜索下一個(gè)工作線程。輪轉(zhuǎn)調(diào)度可以防止某一個(gè)任務(wù)連續(xù)占用太多的資源,而導(dǎo)致其他線程信息得不到及時(shí)處理。缺點(diǎn)是輪轉(zhuǎn)調(diào)度會(huì)增大由于任務(wù)切換而導(dǎo)致的開銷。

(3)自適應(yīng)調(diào)度自適應(yīng)調(diào)度是一種可實(shí)現(xiàn)自我優(yōu)先級調(diào)整的調(diào)度方式。正在運(yùn)行的線程放棄CPU的情況與輪轉(zhuǎn)調(diào)度相同。當(dāng)線程用完自己的時(shí)間片后,如果沒有高優(yōu)先級或者同優(yōu)先級的任務(wù)搶占,其優(yōu)先級減1,即優(yōu)先級衰減。當(dāng)優(yōu)先級衰減后,即使再次用完時(shí)間片,其優(yōu)先級不會(huì)發(fā)生變化。當(dāng)其被更高優(yōu)先級搶占后,恢復(fù)至原來的優(yōu)先級。自適應(yīng)調(diào)度主要應(yīng)用在計(jì)算量較大的線程中,為避免頻繁的數(shù)據(jù)切換,需要較高的優(yōu)先級,同時(shí)為了避免太長時(shí)間占用CPU, 所以采用優(yōu)先級衰減的方式來保持對其他任務(wù)的響應(yīng)能力。

2、安全的消息傳遞實(shí)現(xiàn)

在QNX系統(tǒng)下, 消息傳遞的體系結(jié)構(gòu)可以簡單的描述為:服務(wù)器建立一個(gè)接收數(shù)據(jù)的通道,客戶端連接到該通道并發(fā)送服務(wù)請求,服務(wù)器接收到請求后進(jìn)行數(shù)據(jù)處理,將數(shù)據(jù)處理結(jié)果返回客戶端。

為防止死鎖,信息的傳遞是單向的,按照優(yōu)先級順序從低向高發(fā)送,兩個(gè)線程不相互發(fā)送。為防止優(yōu)先級倒置現(xiàn)象的發(fā)生,消息傳遞采用客戶驅(qū)動(dòng)優(yōu)先級機(jī)制,當(dāng)某個(gè)客戶端向服務(wù)器發(fā)送服務(wù)請求后,服務(wù)器優(yōu)先級與客戶端一致,直到服務(wù)完成之后,服務(wù)器恢復(fù)原來的優(yōu)先級,當(dāng)更高優(yōu)先級的線程要求服務(wù)時(shí),可以中斷該線程而進(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ù)切換工作,會(huì)導(dǎo)致系統(tǒng)的工作效率低下。uC/OS-Ⅱ本身是一個(gè)系統(tǒng)內(nèi)核,僅提供了包括任務(wù)調(diào)度,時(shí)間管理在內(nèi)的最基本的工作。各類驅(qū)動(dòng),文件系統(tǒng),協(xié)議棧等均需要開發(fā)者完成,導(dǎo)致工作量增大。并且該系統(tǒng)并未提供良好的開發(fā)環(huán)境。

(2) Linux主要缺點(diǎn)在于內(nèi)核是非搶占式的, 所以在對硬實(shí)時(shí)性要求比較高的場合, 需要對其內(nèi)核進(jìn)行一些修改。在安全性方面, linux的驅(qū)動(dòng)程序位于核心態(tài),當(dāng)驅(qū)動(dòng)程序發(fā)生故障時(shí),系統(tǒng)會(huì)崩潰,而這在對安全性能要求較高的場合是不能接受的,Android采用了Linux的內(nèi)核,也會(huì)出現(xiàn)該問題。

機(jī)哥你說了QNX這么好,那域控制器一芯多屏的方案全部都采用QNX系統(tǒng)那就解決問題了,這里就會(huì)涉及中控操作的舒適性以及應(yīng)用軟件的擴(kuò)展性,比如2013年的卡宴就是同構(gòu)操作系統(tǒng),系統(tǒng)穩(wěn)定性好,升級不方便,而且應(yīng)用不好擴(kuò)展,比如中控上增加一些導(dǎo)航、購物、音樂等APP沒有安卓系統(tǒng)方便。

d. 域控制器操作軟件介紹QNX Hypervisor

虛擬化:

虛擬化其實(shí)是從服務(wù)器來的概念,為什么汽車也會(huì)有這個(gè)需求?兩點(diǎn)原因:現(xiàn)在的中控芯片有一個(gè)趨勢,集成儀表盤,降低成本。以前的儀表盤通常是用微控制器做的,圖形界面也較簡單。而現(xiàn)在的系統(tǒng)越來越炫,甚至需要圖形處理器來參與。很自然的,這就使得中控和儀表盤合到單顆芯片內(nèi)。它們跑的是不同的操作系統(tǒng),虛擬化能更好的實(shí)現(xiàn)軟件隔離。當(dāng)然,有些廠商認(rèn)為虛擬化還不夠,需要靠物理隔離才放心,另一個(gè)趨勢是中控本身需要同時(shí)支持多個(gè)屏幕,每個(gè)屏幕分屬于不同的虛擬機(jī)和操作系統(tǒng),這樣能簡化軟件設(shè)計(jì),提高軟件的可靠性。

這里主要是儀表和中控,主要是從安全性,實(shí)時(shí)性幾個(gè)方面導(dǎo)致的不同,儀表和自動(dòng)駕駛系統(tǒng)都是實(shí)時(shí)操作系統(tǒng),要把最新的車身動(dòng)力信息隨時(shí)體現(xiàn)出來,而且娛樂屏不需要。同一顆芯片跑不同的操作系統(tǒng),異構(gòu)操作系統(tǒng)可以讓安卓的響應(yīng)速度非??欤铱梢詫?shí)現(xiàn)畫中畫的功能,而且安全性也能得到保障。

根據(jù)ISO 26262標(biāo)準(zhǔn)規(guī)定, 儀表盤的關(guān)鍵數(shù)據(jù)和代碼與娛樂系統(tǒng)屬于不同安全等級。因此, 虛擬機(jī)(Hypervisor) 管理的概念被引入智能座艙操作系統(tǒng), 虛擬機(jī)可以允許符合車規(guī)級安全標(biāo)準(zhǔn)的QNX與Linux共同運(yùn)行。

如何在硬件上實(shí)現(xiàn)虛擬化呢

1、介紹一下MMU管理系統(tǒng):

在ARM存儲系統(tǒng)中,使用MMU實(shí)現(xiàn)虛擬地址到實(shí)際物理地址的映射。為何要實(shí)現(xiàn)這種映射?

首先就要從一個(gè)嵌入式系統(tǒng)的基本構(gòu)成和運(yùn)行方式著手。系統(tǒng)上電時(shí),處理器的程序指針從0x0(或者是由0Xffff_0000處高端啟動(dòng))處啟動(dòng),順序執(zhí)行程序,在程序指針(PC)啟動(dòng)地址,屬于非易失性存儲器空間范圍,如ROM、FLASH等。然而與上百兆的嵌入式處理器相比,F(xiàn)LASH、ROM等存儲器響應(yīng)速度慢,已成為提高系統(tǒng)性能的一個(gè)瓶頸。而SDRAM具有很高的響應(yīng)速度,為何不使用SDRAM來執(zhí)行程序呢?

為了提高系統(tǒng)整體速度,可以這樣設(shè)想,利用FLASH、ROM對系統(tǒng)進(jìn)行配置,把真正的應(yīng)用程序下載到SDRAM中運(yùn)行,這樣就可以提高系統(tǒng)的性能。然而這種想法又遇到了另外一個(gè)問題,當(dāng)ARM處理器響應(yīng)異常事件時(shí),程序指針將要跳轉(zhuǎn)到一個(gè)確定的位置,假設(shè)發(fā)生了IRQ中斷,PC將指向0x18(如果為高端啟動(dòng),則相應(yīng)指向0vxffff_0018處),而此時(shí)0x18處仍為非易失性存儲器所占據(jù)的位置,則程序的執(zhí)行還是有一部分要在FLASH或者ROM中來執(zhí)行的。那么我們可不可以使程序完全都SDRAM中運(yùn)行那?

答案是肯定的,這就引入了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處的地址,而這個(gè)時(shí)候PC實(shí)際上是從位于物理地址的0x3000_0018處讀取指令。通過MMU的映射,則可實(shí)現(xiàn)程序完全運(yùn)行在SDRAM之中。

在實(shí)際的應(yīng)用中,可能會(huì)把兩片不連續(xù)的物理地址空間分配給SDRAM。而在操作系統(tǒng)中,習(xí)慣于把SDRAM的空間連續(xù)起來,方便內(nèi)存管理,且應(yīng)用程序申請大塊的內(nèi)存時(shí),操作系統(tǒng)內(nèi)核也可方便地分配。通過MMU可實(shí)現(xiàn)不連續(xù)的物理地址空間映射為連續(xù)的虛擬地址空間。

操作系統(tǒng)內(nèi)核或者一些比較關(guān)鍵的代碼,一般是不希望被用戶應(yīng)用程序所訪問的。通過MMU可以控制地址空間的訪問權(quán)限,從而保護(hù)這些代碼不被破壞。

MMU的實(shí)現(xiàn)過程,實(shí)際上就是一個(gè)查表映射的過程。建立頁表(translate table)是實(shí)現(xiàn)MMU功能不可缺少的一步。頁表是位于系統(tǒng)的內(nèi)存中,頁表的每一項(xiàng)對應(yīng)于一個(gè)虛擬地址到物理地址的映射。每一項(xiàng)的長度即是一個(gè)字的長度(在ARM中,一個(gè)字的長度被定義為4字節(jié))。頁表項(xiàng)除完成虛擬地址到物理地址的映射功能之外,還定義了訪問權(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)生頁面錯(cuò)誤中斷。

MMU的兩個(gè)主要功能是:

1. 將虛地址轉(zhuǎn)換成物理地址。

2. 控制存儲器存取允許。MMU關(guān)掉時(shí),虛地址直接輸出到物理地址總線。

在實(shí)踐中,使用MMU解決了如下幾個(gè)問題:

①使用DRAM作為大容量存儲器時(shí),如果DRAM的物理地址不連續(xù),這將給程序的編寫調(diào)試造成極大不便,而適當(dāng)配置MMU可將其轉(zhuǎn)換成虛擬地址連續(xù)的空間。

②ARM內(nèi)核的中斷向量表要求放在0地址,對于ROM在0地址的情況,無法調(diào)試中斷服務(wù)程序,所以在調(diào)試階段有必要將可讀寫的存儲器空間映射到0地址。

③系統(tǒng)的某些地址段是不允許被訪問的,否則會(huì)產(chǎn)生不可預(yù)料的后果,為了避免這類錯(cuò)誤,可以通過MMU匹配表的設(shè)置將這些地址段設(shè)為用戶不可存取類型。啟動(dòng)程序中生成的匹配表中包含地址映射,存儲頁大小(1M,64K,或4K)以及是否允許存取等信息。

有了上述的MMU的概念再來了解虛擬化就比較容易了。

2、汽車芯片如何設(shè)計(jì)虛擬化(本章節(jié)是參考芯片設(shè)計(jì)內(nèi)容)

虛擬化在硬件上有什么具體要求,這并沒有明確定義??梢砸揽刻幚砥髯詭У亩A內(nèi)存管理單元( s2MMU ), 實(shí)現(xiàn)軟件虛擬機(jī); 也可以在內(nèi)存控制器前放一個(gè)硬件防火墻, 對訪問內(nèi)存的地址進(jìn)行檢查和過濾,不做地址重映射;還可以使用系統(tǒng)內(nèi)存管理單元SMMU實(shí)現(xiàn)完整的硬件虛擬化,這是我們要重點(diǎn)介紹的。

如上圖黃色框所示,每個(gè)主設(shè)備和總線之間,都加了一個(gè)MMU600。為什么每個(gè)主設(shè)備后都要加?很簡單,如果不加,那必然存在安全漏洞,和軟件虛擬化無異。那為何不用防火墻?防火墻的的實(shí)現(xiàn)方法,通常是用一個(gè)片上內(nèi)存來存放過濾表項(xiàng)。如果做到4K字節(jié)的顆粒度,那4G字節(jié)內(nèi)存就需要1百萬項(xiàng),每項(xiàng)8位,總共1MB的片上內(nèi)存,這是個(gè)不小的成本。另外一個(gè)原因是,防火墻方案的物理地址空間對軟件是不透明的,采用系統(tǒng)內(nèi)存管理器SMMU600對上層軟件透明,更貼近虛擬化的需求。

當(dāng)處理器發(fā)起一次地址虛實(shí)轉(zhuǎn)換請求,內(nèi)存管理單元會(huì)在內(nèi)部的TLB緩存和Table Walk緩存查找最終頁表項(xiàng)和中間表項(xiàng)。如果在內(nèi)部緩存沒找到,那就需要去系統(tǒng)緩存或者內(nèi)存讀取。在最差情況下, 每一階的4 層中間表可能都是未命中, 4x4+4=20 , 最終會(huì)需要20 次內(nèi)存讀取。對于系統(tǒng)內(nèi)存管理器,情況可能更糟。如上圖所示,由于SMMU本身還需引入多級描述符來映射多個(gè)頁表,最極端情況需要36次的訪存才能找到最終頁表項(xiàng)。如果所有訪問都是這個(gè)延遲,顯然無法接受。

Arm傳統(tǒng)的設(shè)計(jì)是添加足夠大的多級TLB緩存和table walk緩存,然后把兩個(gè)主設(shè)備連到接口,進(jìn)行地址較為隨機(jī)的訪問??梢钥吹?,主設(shè)備的5萬次訪問,在經(jīng)過SMMU后,產(chǎn)生了近5 萬次未命中。這意味著訪問的平均延遲等于訪存延遲, 150ns 以上。另一方面, 處理器開了虛擬機(jī)后,它的隨機(jī)訪存效率,和未開虛擬機(jī)比,卻能做到80%以上,這是為什么呢?答案很簡單,處理器內(nèi)部的MMU,會(huì)把中間頁表的物理地址繼續(xù)發(fā)到二級或者三級緩存,利用緩存來減少平均延遲。而SMMU就沒有這么幸運(yùn),在Arm先前的手機(jī)處理器參考設(shè)計(jì)中,并沒有系統(tǒng)緩存。這種情況下,即使對于延遲不太敏感的主設(shè)備,比如圖形處理器,打開虛擬化也會(huì)造成性能損失,可能高達(dá)9%,這不是一個(gè)小數(shù)目。

怎么解決這個(gè)問題?在Arm服務(wù)器以及下一代手機(jī)芯片參考設(shè)計(jì)中,會(huì)引入網(wǎng)狀結(jié)構(gòu)總線,而不是之前的crossbar結(jié)構(gòu)的一致性總線。網(wǎng)狀結(jié)構(gòu)總線的好處,主要是提升了頻率和帶寬,并且,在提供多核一致性的同時(shí),也可以把系統(tǒng)緩存交給各個(gè)主設(shè)備使用。不需要緩存的主設(shè)備還是可以和以前一樣發(fā)出非緩存的的數(shù)據(jù)傳輸,避免額外占用緩存,引起頻繁的緩存替換;同時(shí),SMMU可以把頁表和中間頁表項(xiàng)放在緩存,從而縮短延遲。

Arm 的SMMU600 還做了一點(diǎn)改進(jìn), 可以把TLB 緩存貼近各個(gè)主設(shè)備做布局, 在命中的情況下, 一個(gè)時(shí)鐘周期就可以完成翻譯;同時(shí), 把table walk 緩存放到另一個(gè)地方, TLB 緩存和table walk 緩存通過內(nèi)部總線互聯(lián)。幾個(gè)主設(shè)備可以同時(shí)使用一個(gè)table walk 緩存, 減少面積,便于布線的同時(shí),又不失效率。其結(jié)構(gòu)如下圖

如果我們讀一下Arm 的SMMU3.x 協(xié)議, 會(huì)發(fā)現(xiàn)它是支持雙向頁表維護(hù)信息廣播的, 這意味著除了緩存數(shù)據(jù)一致性外, 所有的主設(shè)備, 只要遵循SMMU3.x 協(xié)議, 可以和處理器同時(shí)使用一張頁表。在輔助駕駛芯片設(shè)計(jì)時(shí),如果需要,把重要的加速器加入同一張頁表,可以避免軟件頁表更新操作,進(jìn)一步提高異構(gòu)計(jì)算的效率。不過就SMU600而言,它僅僅支持單向的廣播,接了SMU600的主設(shè)備,本身的緩存和頁表操作并不能廣播到處理器,反過來是可以的。

對于當(dāng)前的汽車芯片,如果沒有系統(tǒng)緩存,那如何減少設(shè)備虛擬化延遲呢?辦法也是有的。汽車的虛擬機(jī)應(yīng)用較為特殊, 目前8 個(gè)虛擬機(jī)足夠應(yīng)付所有的分屏和多系統(tǒng)需求, 并且一旦分配,運(yùn)行階段無需反復(fù)刪除和生成。我們完全可以利用這點(diǎn),把二階段的SMMU頁表變大,比如1GB,固定分配給某個(gè)虛擬機(jī)。這樣,設(shè)備在進(jìn)行二階段地址映射時(shí),只需少數(shù)幾項(xiàng)TLB表項(xiàng),就可以做到一直命中,極大降低延遲。需要注意的是,一旦把二階映射的物理空間分配給某設(shè)備,就不能再收回并分給其他設(shè)備。不然,多次回收后,就會(huì)出現(xiàn)物理地址離散化,無法找到連續(xù)的大物理地址了。

SMMU接受的是從主設(shè)備發(fā)過來的物理地址,那它是怎么來區(qū)分虛擬機(jī)呢?靠的是同樣從主設(shè)備發(fā)送過來的vmid/streamid 。如果主設(shè)備本身并不支持虛擬化, 那就需要對它進(jìn)行時(shí)分復(fù)用, 讓軟件來寫入vmid/streamid 。當(dāng)然, 這個(gè)軟件必須運(yùn)行在hypervisor 或者是securemonitor,不然會(huì)有安全漏洞。具體的做法,是在虛擬機(jī)切換的時(shí)候,hypervisor修改寄存器化的vmid/streamid,提供輸入給SMMU即可。如果訪問時(shí)的id和預(yù)設(shè)的不符,SMMU會(huì)報(bào)異常給hypervisor。

如果主設(shè)備要實(shí)現(xiàn)硬件的方式支持虛擬化,那本身需要根據(jù)多組寄存器設(shè)置,主動(dòng)發(fā)出不同的vmid/streamid 。為了對軟件兼容, 可以把不同組按照4KB 邊界分開, 這樣在二階地址映射時(shí),可以讓相同的實(shí)地址訪問不同組的寄存器,而對驅(qū)動(dòng)透明。同時(shí),對于內(nèi)部的資源也要做區(qū)分, 不能讓數(shù)據(jù)互相影響。如果用到緩存, 那緩存還必須對vmid 敏感, 相同地址不同vmid的情況,必須識別為未命中。

前面說到,有些廠商認(rèn)為虛擬化還不夠,有些場景要物理隔離。虛擬化的時(shí)候,硬件資源還是共享的,只不過對軟件是透明。這樣其實(shí)并不能完全防止硬件的沖突和保證優(yōu)先級。請注意,硬件隔離是separation , 而不是分區(qū)partition , Partition 是用MPU 來做的。在中控的系統(tǒng)框架圖內(nèi),我們把采用物理隔離的紅色部分單獨(dú)列出來,如下圖

此時(shí)的處理器A55和圖形處理器G31,獨(dú)立于作為信息娛樂域的處理器A76/A55和圖形處理器G76之外,擁有自己的電源,時(shí)鐘和電壓。作為優(yōu)化,紅色部分可以和其余的處理器用一致性總線連接起來,在不作為儀表盤應(yīng)用的時(shí)候,作為SMP的一部分來使用。而需要隔離的時(shí)候,用多路選擇連接到NoC或者內(nèi)存控制器。這樣既節(jié)省了面積,又實(shí)現(xiàn)了隔離。

這里可以看到飛思卡爾8就是硬件上的隔離,保障了安全性

3、目前常見的Hypervisor 實(shí)現(xiàn)方式

Hypervisor 允許多個(gè)操作系統(tǒng)和應(yīng)用共享軟件。Hypervisor(又稱虛擬機(jī)監(jiān)視器) 是一種運(yùn)行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層。由于智能座艙需要同步支持 QNX、Android、Linux 等多操作系統(tǒng),因此在物理硬件之上需要一個(gè)虛擬化平臺(Hypervisor)以支持各操作系統(tǒng)的運(yùn)行。Hypervisors 即可協(xié)調(diào)著硬件資源的訪問,也 可在各個(gè)虛擬機(jī)(VM)之間施加防護(hù)。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行 Hypervisor 時(shí),它會(huì)加載 各虛擬機(jī)客戶端的操作系統(tǒng),同時(shí)會(huì)分配給各虛擬機(jī)適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤等資源。

Hypervisor主要有兩種類型:裸機(jī)型和宿主型。

裸機(jī)型Hypervisor最為常見, 直接安裝在硬件計(jì)算資源之上, 操作系統(tǒng)安裝并運(yùn)行在Hypervisor之上。典型的裸機(jī)型有IBM的Power VM、VMware的ESX Server、Citrix的Xen Server、Microsoft的Hyper-Ⅴ以及開源的KVM等虛擬化軟件。

宿主型Hypervisor(又稱基于操作系統(tǒng)虛擬化) 將虛擬化層安裝在傳統(tǒng)的操作系統(tǒng)中, 虛擬化軟件以應(yīng)用程序進(jìn)程形式運(yùn)行在Windows和Linux等主機(jī)操作系統(tǒng)中。典型的宿主型Hypervisor有VMware Workstation和Virtual Box。

QNX虛擬機(jī)是裸機(jī)型

這里我們車載上使用最多的QNX的虛擬機(jī),它是裸機(jī)型虛擬機(jī)。QNX是目前唯一一個(gè)能達(dá)到Asil-D等級的操作系統(tǒng)(包含Hypervisor)。如果需要實(shí)現(xiàn)Asil-D 級別的系統(tǒng), 必須把現(xiàn)有的軟件從Linux 系統(tǒng)移植到QNX 。

所幸的是, QNX 也是符合Posix 標(biāo)準(zhǔn)的, 尤其是圖形處理器的驅(qū)動(dòng), 移植起來會(huì)省事一些。QNX 不是所有的模塊都是Asil-D 級, 移植過去的驅(qū)動(dòng), 其實(shí)是沒有安全等級的。QNX 依靠Asil-D 級的核心軟件模塊和Hypervisor,保證99%以上的失效覆蓋率。如果子模塊出了問題,那只能重啟子模塊。




關(guān)鍵詞: 智能座艙

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉