在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文讀懂汽車芯片設(shè)計(jì)!

電子工程師 ? 來(lái)源:lq ? 2019-05-05 16:32 ? 次閱讀

時(shí)隔一年,終于有機(jī)會(huì)再攢一顆芯片。這一次,是熱點(diǎn)中的汽車芯片。

記得兩年前,在中國(guó)找不出幾家做前裝汽車芯片的公司。而兩年后的今天,突然如雨后春筍般的涌現(xiàn)出十多家,其范圍涵蓋了輔助駕駛,中控,儀表盤(pán),T-Box,網(wǎng)關(guān),車身控制,電池管理,硬件加解密,激光雷達(dá),毫米波雷達(dá)圖像傳感器和圖像信號(hào)處理器等,八仙過(guò)海各顯神通。

全球范圍內(nèi),汽車芯片一年銷售額大致是400億刀,其中數(shù)字芯片100億刀:信息娛樂(lè)(中控)芯片約25億刀,均價(jià)在25刀;MCU約60億刀,30億片,均價(jià)2刀;輔助駕駛約17億刀。全球一年大約賣一億輛車,每輛車平均100刀的數(shù)字芯片。其中輔助駕駛芯片處于快速增長(zhǎng)階段。汽車芯片的主要供應(yīng)商,恩智浦,瑞薩數(shù)字部分較多,英飛凌德州儀器模擬部分較多。汽車芯片是僅存的幾個(gè)利潤(rùn)還不錯(cuò)的市場(chǎng),技術(shù)門(mén)檻也并非不可逾越,更不存在絕對(duì)的生態(tài)閉環(huán)。只是量沒(méi)有消費(fèi)電子那么大,一年出個(gè)幾百萬(wàn)片就不錯(cuò)了。在這個(gè)領(lǐng)域里,新造車勢(shì)力方興未艾,傳統(tǒng)造車勢(shì)力追求差異化,又趕上5G自動(dòng)駕駛人工智能的熱點(diǎn),于是汽車芯片成了繼虛擬現(xiàn)實(shí),礦機(jī),NB-IOT,人工智能之后新的投資方向。

上圖是一個(gè)典型的汽車電子系統(tǒng)框架。這個(gè)系統(tǒng)分為幾個(gè)域,車身,動(dòng)力總成,底盤(pán),信息娛樂(lè),輔助駕駛,網(wǎng)關(guān)和T-Box。每個(gè)域有著各自的域控制器,通過(guò)車載以太網(wǎng)Can總線互聯(lián)。我們就以架構(gòu)上最復(fù)雜的中控和輔助駕駛芯片為例,展開(kāi)探討其設(shè)計(jì)思路與方法。

新一代的中控芯片的架構(gòu)如下圖,主要由處理器,圖形處理器,多媒體,圖像處理,安全(Security)管理,功能安全(Safety),片上調(diào)試和總線等子系統(tǒng)構(gòu)成。它和通常的應(yīng)用處理器區(qū)別主要在于虛擬化,功能安全,實(shí)時(shí)性和車規(guī)級(jí)電氣標(biāo)準(zhǔn)。

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

虛擬化在硬件上有什么具體要求?這并沒(méi)有明確定義。可以依靠處理器自帶的二階內(nèi)存管理單元(s2MMU),實(shí)現(xiàn)軟件虛擬機(jī);也可以在內(nèi)存控制器前放一個(gè)硬件防火墻,對(duì)訪問(wèn)內(nèi)存的地址進(jìn)行檢查和過(guò)濾,不做地址重映射;還可以使用系統(tǒng)內(nèi)存管理單元SMMU實(shí)現(xiàn)完整的硬件虛擬化,這是我們要重點(diǎn)介紹的。

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

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

Arm傳統(tǒng)的設(shè)計(jì)是添加足夠大的多級(jí)TLB緩存和table walk緩存,效果如下:

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

怎么解決這個(gè)問(wèn)題?在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可以把頁(yè)表和中間頁(yè)表項(xiàng)放在緩存,從而縮短延遲。

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

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

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

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

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

如果主設(shè)備本身不支持虛擬化,并且本身特別復(fù)雜,那還需要定制驅(qū)動(dòng)。以Arm的圖形處理器為例,到目前為止,硬件上還沒(méi)有正式支持虛擬化,如果軟件要支持,可能會(huì)有以下幾種方案:

假設(shè)我們用的Hypervisor是Xen,它運(yùn)行于Arm處理器的EL2,虛擬機(jī)運(yùn)行于EL0/1。正常的圖形處理器驅(qū)動(dòng)會(huì)分成用戶空間與核心空間兩部分。要實(shí)現(xiàn)虛擬化,時(shí)分復(fù)用圖形處理器,Xen上本身不可能跑驅(qū)動(dòng),因?yàn)槟壳膀?qū)動(dòng)只支持Linux。所以就只能讓虛擬機(jī)來(lái)跑原先的驅(qū)動(dòng),而沒(méi)有辦法在hypervisor上再運(yùn)行一個(gè)驅(qū)動(dòng)來(lái)進(jìn)行訪問(wèn)控制。同時(shí),重映射圖形處理器在CPU上的二階段地址,讓寄存器訪問(wèn)和數(shù)據(jù)通路處于‘穿透’的模式,不引起異常,提高效率。相應(yīng)的,讓虛擬機(jī)直接訪問(wèn)寄存器,那訪問(wèn)控制就實(shí)現(xiàn)不了了。為了實(shí)現(xiàn)多虛擬機(jī)的調(diào)度,我們可以在hypervisor里面實(shí)現(xiàn)一個(gè)調(diào)度器,并且在核心態(tài)的驅(qū)動(dòng)部分開(kāi)放接口,讓hypervisor可以主動(dòng)調(diào)度。示意圖如下:

這個(gè)實(shí)現(xiàn)的優(yōu)點(diǎn)很明顯,改動(dòng)較少,實(shí)現(xiàn)簡(jiǎn)單,無(wú)論是Xen和KVM都可以適配。缺點(diǎn)是主動(dòng)權(quán)并不掌握在hypervisor,如果某個(gè)虛擬機(jī)上渲染任務(wù)過(guò)于繁重,一直不把控制權(quán)交給調(diào)度器,那只有強(qiáng)制重啟。另一個(gè)明顯的缺點(diǎn)是,無(wú)法在圖形處理器同時(shí)運(yùn)行兩個(gè)虛擬機(jī)上的任務(wù)。這就需要另一種虛擬機(jī)的實(shí)現(xiàn)方式,如下圖:

在這種實(shí)現(xiàn)下,虛擬機(jī)里只跑驅(qū)動(dòng)的用戶空間,所有涉及核心空間的調(diào)用全都扔到Hypervisor。這要求hypervisor本身是Linux,只有KVM符合這個(gè)要求。Arm的Mali圖形處理器,硬件上是支持指定某個(gè)渲染核心跑特定任務(wù)的,也就是可以把某個(gè)虛擬機(jī)的任務(wù)運(yùn)行在特定渲染核心的。這樣,如果有實(shí)時(shí)性的操縱系統(tǒng)要跑,比如儀表盤(pán),可以保留出一個(gè)核來(lái),不被其他虛擬機(jī)搶占,來(lái)實(shí)現(xiàn)一定程度的QoS。此時(shí),圖形處理器是真正同時(shí)跑兩個(gè)虛擬機(jī)任務(wù)的,而不是時(shí)分復(fù)用。至于輸出的frame buffer,不同的任務(wù)是可以放到不同物理地址的,只是沒(méi)法區(qū)分SteamID,沒(méi)法做隔離。

Arm支持硬件虛擬化的圖形處理器估計(jì)還要一年才會(huì)出來(lái)。具體到細(xì)節(jié),虛擬化除了需要寄存器分組,緩存對(duì)vmid敏感之外,通用的一些單元也需要支持分組。

關(guān)于虛擬機(jī)的效率,還有兩點(diǎn)需要注意:

Arm現(xiàn)有的中斷控制器GIC600,受限于GICv3.x協(xié)議,是沒(méi)有辦法繞過(guò)hypervisor,直接把虛擬中斷送到Guest OS的。外部中斷送進(jìn)來(lái),還是得經(jīng)由hypervisor權(quán)限設(shè)置寄存器,產(chǎn)生一個(gè)虛擬中斷到Guest OS。中斷直接送到Guest OS要到GICv4才會(huì)改進(jìn)。

Armv8.1及之后的CPU,都支持一個(gè)叫VHE的機(jī)制,可以加速2型虛擬機(jī)的切換。具體原理是,KVM等2型虛擬機(jī),Hypervisor就在Linux核心里面,而Linux需要完整的2階3/4層頁(yè)表。另外一方面,Armv8.1之前的處理器EL2沒(méi)有對(duì)應(yīng)的頁(yè)表。如果沒(méi)有VHE,那這個(gè)Hypervisor必須把一部分駐留在EL2做高權(quán)限操作,而Host Linux還是運(yùn)行在EL1。這樣,很多操作需要從EL1陷入EL2,改完再回到EL1的Linux核心,多了一層跳轉(zhuǎn)。有了VHE,那么Host Linux核心直接運(yùn)行在EL2,可以操作EL1的4層頁(yè)表的頁(yè)表寄存器,軟件上不用做修改。硬件上,這些訪問(wèn)會(huì)被重定向到EL2,以保證權(quán)限。

對(duì)于1型虛擬機(jī),比如Xen,這個(gè)改動(dòng)沒(méi)有影響。這里我們要提一下QNX的虛擬機(jī),它是1型虛擬機(jī)。QNX是目前唯一一個(gè)能達(dá)到Asil-D等級(jí)的操作系統(tǒng)(包含Hypervisor)。如果需要實(shí)現(xiàn)Asil-D級(jí)別的系統(tǒng),必須把現(xiàn)有的軟件從Linux系統(tǒng)移植到QNX。所幸的是,QNX也是符合Posix標(biāo)準(zhǔn)的,尤其是圖形處理器的驅(qū)動(dòng),移植起來(lái)會(huì)省事一些。QNX不是所有的模塊都是Asil-D級(jí),移植過(guò)去的驅(qū)動(dòng),其實(shí)是沒(méi)有安全等級(jí)的。QNX依靠Asil-D級(jí)的核心軟件模塊和Hypervisor,保證99%以上的失效覆蓋率。如果子模塊出了問(wèn)題,那只能重啟子模塊。

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

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

同樣的,圖形處理器也有物理隔離的需求。實(shí)現(xiàn)其實(shí)并不復(fù)雜,比支持硬件虛擬化要直接,如下圖:

由于圖形處理器面積最大的是渲染核心SC,這部分不動(dòng)。其余的硬件模塊,每組核都復(fù)制一份,組和組之間用內(nèi)部總線ASN互聯(lián)。當(dāng)拆成多個(gè)圖形處理器的時(shí)候,每個(gè)冗余模塊分別控制自己的資源。此時(shí),每組GPU需要獨(dú)立運(yùn)行一個(gè)驅(qū)動(dòng)。而把所有資源融合運(yùn)行的時(shí)候,冗余的部分自動(dòng)關(guān)閉,由一個(gè)模塊集中調(diào)度。此時(shí),某些公用資源可能會(huì)遇到性能瓶頸,但汽車通常只會(huì)要求物理隔離兩個(gè)組,分別給儀表盤(pán)和信息娛樂(lè),并且儀表盤(pán)所需資源較少,融合的時(shí)候,可以啟用信息娛樂(lè)的共享單元,從而避免瓶頸。對(duì)于系統(tǒng)中其余的主設(shè)備,也可以利用類似的設(shè)計(jì)思路來(lái)實(shí)現(xiàn)隔離。

有了同時(shí)支持虛擬化和硬件隔離的圖形處理器,我們的中控芯片構(gòu)架會(huì)有如下改動(dòng):

此時(shí)圖形處理器的物理隔離和硬件虛擬化可以同時(shí)啟用,跑多份驅(qū)動(dòng),滿足前文的需求。

至此,虛擬化和隔離結(jié)束,開(kāi)始討論車規(guī)。

目前我們說(shuō)的車規(guī)分兩個(gè),功能安全和電氣標(biāo)準(zhǔn)。前者由ISO26262定義,后者由AEC-Q100定義。

功能安全在芯片上的設(shè)計(jì)原則是要盡可能多的找出芯片上的失效場(chǎng)景并糾正。失效又分為系統(tǒng)和隨機(jī)兩種,前者依靠設(shè)計(jì)時(shí)的流程規(guī)范來(lái)保證,后者依賴于芯片設(shè)計(jì)上采取的種種失效探測(cè)機(jī)制來(lái)保證。我們?cè)谶@主要談后者。

簡(jiǎn)單來(lái)說(shuō),芯片的失效率,是基于單個(gè)晶體管在某個(gè)工藝節(jié)點(diǎn)的失效概率,推導(dǎo)出片上邏輯或者內(nèi)存的失效概率。面積越大,晶體管越多,相應(yīng)的失效率越大。ISO26262把安全等級(jí)做了劃分,常見(jiàn)的有ASIL-B和ASIL-D級(jí)。ASIL-B要求芯片能夠覆蓋90%的單點(diǎn)失效場(chǎng)景,而ASIL-D則是99%。這其實(shí)是個(gè)非常高的要求。一個(gè)晶體管的失效概率雖低,可是通常一個(gè)復(fù)雜芯片是上億個(gè)晶體管組成的,如果不采取任何措施,那任何一點(diǎn)的錯(cuò)誤都可能造成功能失效,失效率很高。

ISO26262手冊(cè)第五篇的附件D,詳細(xì)描述了硬件失效的探測(cè)手段。在這部分,硬件系統(tǒng)被分為幾個(gè)模塊:輸入端有傳感器,連接件,中繼,數(shù)模接口;處理部分包含處理單元,各類內(nèi)存閃存。系統(tǒng)層面有總線,電源和時(shí)鐘。系統(tǒng)框架如下圖:

針對(duì)每一單元,ISO26262手冊(cè)定義了一些方法,來(lái)檢測(cè)這些單元是否失效,并給出每一種方法的可靠度。比如傳輸線,可以有校驗(yàn)碼,超時(shí),計(jì)數(shù)器,發(fā)送測(cè)試向量等。再比如處理單元,可以使用軟硬件自檢,冗余加比較,額外硬件模塊監(jiān)測(cè)等方法。這些方法并不能簡(jiǎn)單的應(yīng)用于芯片功能安全設(shè)計(jì)。那芯片上怎么辦?我們采用自底向上的方法,先從晶體管開(kāi)始分析,再到IP模塊級(jí),然后到芯片系統(tǒng)級(jí),再討論幾個(gè)典型場(chǎng)景,最后自頂向下分析。

在芯片的隨機(jī)錯(cuò)誤中,有一類是永久錯(cuò)誤,比如邏輯或者片上內(nèi)存的某一位一直粘在0或者1,或者干脆短路及斷路。對(duì)于這一類錯(cuò)誤,在芯片封測(cè)的時(shí)候,我們可以使用邊界掃描和MBIST來(lái)發(fā)現(xiàn)壞掉的晶體管。這樣,問(wèn)題就轉(zhuǎn)換為怎樣提高DFT的覆蓋率。這一塊,業(yè)界已經(jīng)有成熟的方法了。

僅僅有出廠測(cè)試是不夠的,晶體管會(huì)在使用過(guò)程中慢慢老化損壞。因此,我們需要在每次開(kāi)機(jī)的時(shí)候都進(jìn)行自檢,提前發(fā)現(xiàn)問(wèn)題,減少在系統(tǒng)運(yùn)行狀態(tài)下出錯(cuò)的可能。此時(shí),我們需要使用LBIST和MBIST。其原理和出廠測(cè)試很像,也是利用掃描鏈,不同的是芯片里需要LBIST/MBIST控制器,用來(lái)運(yùn)行測(cè)試向量和模板。自然,這會(huì)引入額外的成本。覆蓋率越高,成本相應(yīng)越大。

有了LBIST/MBIST也還不夠,我們需要在晶體管失效發(fā)生后幾個(gè)時(shí)鐘周期就探測(cè)到錯(cuò)誤,而不是開(kāi)機(jī)時(shí)候發(fā)現(xiàn)。對(duì)于邏輯來(lái)說(shuō),為了做到這點(diǎn),最直接的方法莫過(guò)于采用冗余設(shè)計(jì),也就是把邏輯復(fù)制一份,然后用硬件比較器比較輸出。通常這被稱為鎖步設(shè)計(jì)(Lock-Step)。理論上,對(duì)于有限狀態(tài)機(jī),只要輸入一致,時(shí)鐘周期一致,輸出一定一致。通常數(shù)字部分不存在真隨機(jī)單元,哪怕是緩存替換算法,也是偽隨機(jī)的,所以上述條件可以滿足。冗余的結(jié)果是邏輯面積增加一倍,比較器也會(huì)引入一些額外的面積開(kāi)銷和時(shí)序影響。

這么簡(jiǎn)單就實(shí)現(xiàn)了功能安全?并沒(méi)有,有幾個(gè)問(wèn)題需要解決:

第一個(gè)問(wèn)題是,比較器到底比哪些信號(hào)?以處理器為例,如果我們只是在對(duì)總線的接口上增加比較器,芯片內(nèi)部的很多模塊,比如寫(xiě)緩沖,并不能在較短且確定的時(shí)間內(nèi)把影響傳遞到對(duì)外接口,被比較器發(fā)現(xiàn)。此時(shí),處理器可能是處于失效狀態(tài)而并沒(méi)有被探測(cè)出來(lái)。那我們就不能說(shuō)當(dāng)前冗余機(jī)制能覆蓋此類失效。為此,我們需要把比較器連到內(nèi)部子模塊接口處,并且分析是不是能在較短時(shí)間內(nèi)看到影響。這需要在設(shè)計(jì)階段就考慮,具體做法如下圖:

對(duì)于任何一個(gè)寄存器,一定可以找到影響它的組合邏輯和上一級(jí)寄存器。在這條通路上任何一位出了問(wèn)題,那么在一個(gè)時(shí)鐘周期后,我們就可以看到寄存器輸出與其冗余的模塊產(chǎn)生不一致。把這個(gè)節(jié)點(diǎn)記為1,然后再以1的輸入寄存器為新起點(diǎn),找到節(jié)點(diǎn)2。依次類推,我們可以往前找出一條沒(méi)有循環(huán)的通路,這條通路上的任何一點(diǎn)發(fā)生問(wèn)題,在確定的較短時(shí)間內(nèi),一定會(huì)在最終輸出上反應(yīng)出來(lái)。我們把這個(gè)通路記為模塊X。通過(guò)一定的EDA工具,我們可以在芯片內(nèi)找出若干個(gè)模塊X,如下圖的例子:

這里,IP模塊被劃為存取單元(A門(mén)),標(biāo)志單元(B門(mén)),計(jì)算單元(C門(mén))和寄存器組(D門(mén))。從輸出端看,于上一級(jí)寄存器間連線所覆蓋的組合邏輯為門(mén)數(shù),一個(gè)寄存器算10個(gè)門(mén)。如上圖,存取單元的地址寄存器輸出受24個(gè)組合邏輯門(mén)外加2個(gè)寄存器的影響,那共存在44種單點(diǎn)錯(cuò)誤會(huì)引起失效。依此類推,寄存器組的1號(hào)輸出,受28個(gè)門(mén)影響,而2號(hào)受49個(gè)門(mén)影響。加起來(lái)總共121種可能。簡(jiǎn)單計(jì)算可知,存取單元失效率44/121=36.4%,寄存器組合計(jì)77/121=63.6%。是其中有些門(mén)被統(tǒng)計(jì)了多次,比如圖中的G1,這一點(diǎn)會(huì)反映在總的概率里面。

基于上述的思想,我們來(lái)看處理器是怎么做的。在EDA工具的幫助下,我們將它劃分為幾個(gè)大模塊:內(nèi)存管理單元,寫(xiě)緩沖,取指單元,數(shù)據(jù)處理單元,程序追蹤緩沖, 數(shù)據(jù)/指令緩存,總線接口單元, 時(shí)鐘和重置控制單元, ECC/奇偶校驗(yàn)控制單元, 中斷接口, 監(jiān)聽(tīng)控制單元。此處,我們沒(méi)有把片上內(nèi)存包含進(jìn)去,即使是討論緩存,也指的是控制邏輯部分。

每一個(gè)單元內(nèi),又可以細(xì)分成很多子模塊。以數(shù)據(jù)處理單元為例, 又分為通用寄存器組,存取單元,浮點(diǎn)單元,浮點(diǎn)寄存器組,解碼單元,調(diào)試單元,控制信號(hào)單元,系統(tǒng)寄存器組,分支執(zhí)行單元等。每一個(gè)子單元又可以再一次細(xì)分。細(xì)分的目的是判斷在晶體管失效時(shí),受其影響的寄存器是不是會(huì)失效,并且這個(gè)失效能被外部比較器探測(cè)到。這就需要把內(nèi)部信號(hào)拉到外面。那到底怎么決定哪些信號(hào)拉出去哪些不拉?覆蓋率是不是足夠?工具給的節(jié)點(diǎn)和模塊信息只能作為參考,設(shè)計(jì)人員還是要一個(gè)個(gè)檢查來(lái)做最后決定。通常會(huì)有很多信號(hào)被拉出來(lái),比如Cortex-R5,20多萬(wàn)門(mén)的邏輯,最終送到比較器的信號(hào)數(shù)達(dá)2000多個(gè),平均每100門(mén)就有一個(gè)信號(hào)。

在芯片過(guò)認(rèn)證的時(shí)候,如果IP本身沒(méi)有過(guò)經(jīng)過(guò)認(rèn)證,或者以前沒(méi)有被廣泛采用,認(rèn)證機(jī)構(gòu)可能會(huì)需要一條條的和芯片公司討論,看看連出來(lái)的的管腳是不是能提供足夠的失效檢測(cè)覆蓋率。通常這些設(shè)計(jì)相關(guān)的信息,IP公司并不會(huì)提供給芯片公司,所以認(rèn)證公司可能會(huì)要和IP設(shè)計(jì)公司拿這些信息,導(dǎo)致更長(zhǎng)的認(rèn)證時(shí)間。相應(yīng)的,如果是廣泛使用的IP模塊,這個(gè)時(shí)間可以縮短。

解決了冗余設(shè)計(jì)覆蓋率的問(wèn)題,還有第二個(gè)問(wèn)題。如果遭受電磁沖擊或者射線影響,即使用了冗余設(shè)計(jì),也可能兩個(gè)模塊同一時(shí)間產(chǎn)生一樣的錯(cuò)誤。這個(gè)比較容易處理,只要把兩個(gè)同樣的邏輯,輸入錯(cuò)開(kāi)幾拍就可以。在輸出的時(shí)候,錯(cuò)開(kāi)相同的拍數(shù),使得比較器還是看到相同的結(jié)果。

第三個(gè)問(wèn)題,復(fù)制了一份邏輯,并且比較器發(fā)現(xiàn)了錯(cuò)誤,能把他糾正過(guò)來(lái)嗎?很可惜,不能。除非復(fù)制兩分邏輯,三個(gè)同時(shí)比較。這樣的代價(jià)就是再增加原先100%的邏輯部分面積,對(duì)于大的處理器設(shè)計(jì),基本沒(méi)人這么做。如果是小的處理邏輯,比如看門(mén)狗電路,倒是可以。

第四,邏輯比較器本身,也是可能出錯(cuò)的。這類錯(cuò)誤已經(jīng)被ISO26262定義,也就是所謂的潛藏錯(cuò)誤Latent Fault。如果發(fā)現(xiàn)比較器本身的失效覆蓋率不夠,那同樣可以對(duì)比較器采用冗余設(shè)計(jì),做比較器的比較器,提高它的覆蓋率。對(duì)于Asil-D來(lái)說(shuō),潛藏錯(cuò)誤覆蓋率需要達(dá)到90%,而Asil-B是60%。

以上都是對(duì)于邏輯錯(cuò)誤的分析。還有一類是內(nèi)存錯(cuò)誤。這里內(nèi)存指的是片上內(nèi)存,也包含嵌入式閃存。內(nèi)存的錯(cuò)誤比較容易發(fā)現(xiàn),通常ECC就可以做到99%覆蓋率,1位糾正多位報(bào)錯(cuò)。有些內(nèi)存,比如一級(jí)指令緩存,只支持奇偶校驗(yàn),不支持糾正。

對(duì)于邏輯的冗余和內(nèi)存的ECC,為了驗(yàn)證探測(cè)機(jī)制本身是不是能達(dá)到設(shè)計(jì)的要求,芯片里面需要加入錯(cuò)誤注入。請(qǐng)注意,錯(cuò)誤注入機(jī)制本身并不是為了驗(yàn)證芯片里單點(diǎn)錯(cuò)誤失效和多點(diǎn)錯(cuò)誤失效率,只是為了驗(yàn)證錯(cuò)誤探測(cè)機(jī)制。

綜上所述,邏輯冗余和內(nèi)存ECC是幫助我們達(dá)到Asil-B/D等級(jí)的必要手段。沒(méi)有冗余設(shè)計(jì)的時(shí)候,把一個(gè)程序在一個(gè)核上運(yùn)行兩遍,然后比較結(jié)果,也是一種通向高等級(jí)安全的辦法,但僅僅適用于簡(jiǎn)單的,實(shí)時(shí)性要求不高的運(yùn)算。如果存在永久錯(cuò)誤,這個(gè)方法就會(huì)失效。同樣,用兩個(gè)非冗余處理器同時(shí)做相同運(yùn)算,也是一種方法。但如果計(jì)算很復(fù)雜,這樣做不但會(huì)增加系統(tǒng)延遲和帶寬,成本也并不低。

上述兩種方法并不能從本質(zhì)上改善安全等級(jí),如果最終安全等級(jí)需要Asil-D,這兩種方法會(huì)要求拆解后也得達(dá)到Asil-B。而Asil-B的單點(diǎn)90%覆蓋率,不用冗余機(jī)制同樣很難達(dá)到。還有一種方法,單路計(jì)算,另一路判斷其結(jié)果是不是合理。作為監(jiān)測(cè)的這一路提高到Asil-D。這只有在特定場(chǎng)景才有可能應(yīng)用,我們后面會(huì)討論到。

綜上所述,要做通用的Asil-B/D,最好從設(shè)計(jì)開(kāi)始就使用邏輯冗余和內(nèi)存ECC。

實(shí)際設(shè)計(jì)中,特別是對(duì)于處理器,在冗余設(shè)計(jì)之外,還有一套錯(cuò)誤發(fā)現(xiàn)和糾正機(jī)制。Arm把它稱作RAS (Reliability,Availability,Serviceability)。RAS并不能代替冗余設(shè)計(jì)來(lái)實(shí)現(xiàn)Asilb-B/D,畢竟它的覆蓋率太低。但有些場(chǎng)景,比如ECC報(bào)錯(cuò),指令報(bào)錯(cuò),這套機(jī)制可以在不重啟核心的情況下糾正錯(cuò)誤,或者阻止錯(cuò)誤在糾正前被擴(kuò)散(Data Poisoning),又或者記錄下錯(cuò)誤時(shí)的上下文。這是它的優(yōu)點(diǎn),在沒(méi)有冗余設(shè)計(jì)的芯片里也是有一些用處的。

讓我們結(jié)合ISO26262文檔,來(lái)看看Arm的面向汽車應(yīng)用的IP是怎么實(shí)現(xiàn)高等級(jí)功能安全的。

上面是A76AE配置圖,也就是面向汽車的A76,它引入了Split-Lock的設(shè)計(jì)。正常情況下,可以當(dāng)4核SMP用,在冗余模式下,核心內(nèi)所有的邏輯和內(nèi)存都復(fù)制兩份,互為備份。這兩種模式需要重啟來(lái)進(jìn)行切換,不能動(dòng)態(tài)切換,對(duì)于汽車應(yīng)用來(lái)說(shuō)足夠。核心內(nèi)部添加的比較器,約占5%的面積,頻率也會(huì)有5%左右的損失。

新的A76AE是Armv8.2架構(gòu),如上圖所示,一個(gè)處理器組之內(nèi),包含了DSU做三級(jí)緩存和內(nèi)部互聯(lián)。和核心部分不同,這里采用的是傳統(tǒng)的鎖步模式,只復(fù)制邏輯,內(nèi)存還是一份。省了大面積的緩存開(kāi)銷。通常DSU里面邏輯只占很小一部分,并且面積利用率還很低,所以最終額外的面積并不大,15%左右。

Arm還有一個(gè)支持汽車Asil-D等級(jí)的處理器A65AE,可以作為小核,放在不同的處理器組,并和大核通過(guò)CMN600AE總線互聯(lián),提供高能效比的異構(gòu)計(jì)算。A65AE支持單核雙線程,通過(guò)增加一個(gè)寄存器組,使得兩個(gè)軟件線程可以在一個(gè)物理核上共享流水線,并且對(duì)軟件透明。這其實(shí)最初來(lái)自于網(wǎng)絡(luò)處理器的需求,執(zhí)行單元經(jīng)常等待高延遲的讀傳輸。為了提高流水線利用率,A65AE增加了5%左右的硬件寄存器,提高了20%左右的總性能。

下圖是輔助駕駛芯片里A76AE和A65AE的各種組合。在汽車上,尤其是在輔助駕駛的領(lǐng)域,同樣存在同時(shí)需要大小核的場(chǎng)景:大核跑決策,單線程性能要求高;小核跑計(jì)算,能效比要求高。

接下來(lái)看看Arm新的實(shí)時(shí)處理器Cortex-R52,通常它被當(dāng)作安全島來(lái)使用,是整個(gè)芯片的安全設(shè)計(jì)基石。在R52上,各種安全機(jī)制均有所體現(xiàn),包括鎖步,實(shí)時(shí)虛擬化,地址隔離,內(nèi)存ECC,總線ECC,在線MBIST,LBIST,在線軟件測(cè)試庫(kù),RAS,如下圖所示:

R52的同時(shí)支持鎖步和Split-Lock模式。鎖步模式下,只有一個(gè)核,冗余部分僅僅復(fù)制邏輯,不復(fù)制內(nèi)存,邏輯就是額外的成本,沒(méi)法省掉。Split-Lock模式,配置完整的兩套核,包括邏輯與內(nèi)存,平時(shí)作為Split模式使用,相當(dāng)于兩個(gè)AMP,在進(jìn)入Lock模式時(shí),其中一套的內(nèi)存不起作用。此外,由于采用的是MPU的虛擬化,地址并沒(méi)有重映射,只是多了一層訪問(wèn)檢查。這也就意味著地址對(duì)軟件不透明,不同的虛擬機(jī)可以看到別人的地址,只不過(guò)沒(méi)法訪問(wèn)。

R52的最大亮點(diǎn)是實(shí)現(xiàn)了實(shí)時(shí)虛擬化,這是為了軟件達(dá)到更高的安全等級(jí)而準(zhǔn)備的。和A系列基于MMU的虛擬化不同,它是在原來(lái)的EL1 MPU基礎(chǔ)上,添加了EL2 2MPU。同時(shí),為了保證R系列的實(shí)時(shí)性,避免我們前文提到的SMMU訪內(nèi)延遲極大增加的問(wèn)題,R52沒(méi)有采用內(nèi)存映射,也不轉(zhuǎn)換地址,而是用片上內(nèi)存,做兩層的權(quán)限檢查。用戶可以指定幾十個(gè)區(qū)域,顆粒度可以不同,但是沒(méi)法做到頁(yè)表那么多的條數(shù)。在R52上,由于沒(méi)有A系列的EL3,安全啟動(dòng)就需要先進(jìn)入EL2,然后再建立信任鏈,流程和A系列類似。

另一個(gè)重要的安全設(shè)計(jì)是支持在線的MBIST和SBIST。在線MBIST原理并不復(fù)雜,它在片上內(nèi)存接口前添加控制邏輯,不斷探測(cè)是不是有處理器那邊發(fā)過(guò)來(lái)的傳輸。如果沒(méi)有,那就趁空閑時(shí)間讀寫(xiě)內(nèi)存并做測(cè)試。SBIST就是針對(duì)處理器IP的在線軟件測(cè)試。我們可以把這個(gè)測(cè)試運(yùn)行在某個(gè)虛擬機(jī)上,通過(guò)中斷來(lái)周期性的切換,花5%的時(shí)間來(lái)不停檢測(cè)硬件。當(dāng)然,必須把虛擬機(jī)切軟硬件換時(shí)間保證在較小范圍內(nèi),不影響實(shí)時(shí)任務(wù)的調(diào)度。

這兩種在線測(cè)試,可以作為開(kāi)機(jī)自檢的補(bǔ)充,也可以作為在鎖步/ECC機(jī)制但點(diǎn)錯(cuò)誤覆蓋率不夠時(shí)的補(bǔ)充,更可以作為發(fā)現(xiàn)潛藏錯(cuò)誤的補(bǔ)充。但是在高等級(jí)的安全設(shè)計(jì)中,尤其是在安全島的設(shè)計(jì)里,僅僅靠這兩種在線測(cè)試發(fā)現(xiàn)單點(diǎn)錯(cuò)誤還是不夠的,也只能作為補(bǔ)充。

其他方面,R52還對(duì)MPU編程做了優(yōu)化,不是像以前需要針對(duì)一個(gè)CP15寄存器填,填完再用內(nèi)存壁壘指令確保寫(xiě)入次序。現(xiàn)在采用多組寄存器方式,基本20-30時(shí)鐘周期就可以完成虛擬機(jī)切換的寄存器編程。此外中斷寄存器放到了cluster內(nèi)部,不用再通過(guò)AXI口出去,減少一些延遲。

再來(lái)看看中斷控制器GIC600AE。以AE結(jié)尾的IP表示在原有的基礎(chǔ)上做了功能安全設(shè)計(jì),可以支持到Asil-D。GIC600AE結(jié)構(gòu)如下圖:

和處理器一樣,GIC600AE的邏輯部分是靠鎖步來(lái)支持Asil-B/D,內(nèi)存部分是ECC。不同的是,不像處理器是一個(gè)單一硬核,GIC600AE是一個(gè)分布式的結(jié)構(gòu),布局布線可以分開(kāi),只是在中心有個(gè)分配器(Distributor)。每個(gè)處理器附近的子分配器(Redistributor)和分配器之間,就需要安全總線協(xié)議設(shè)計(jì),這就是新的AMBA點(diǎn)對(duì)點(diǎn)功能安全擴(kuò)展:

可以看到的是,各類AMBA的地址和數(shù)據(jù)線,接口上均添加了奇偶校驗(yàn),這也是ISO26262所要求的傳輸線安全措施之一;對(duì)于重置和時(shí)鐘,P/Q通道等信號(hào),大多采用復(fù)制的方式來(lái)保護(hù);而對(duì)于AXIS端口,則采用負(fù)載加上CRC的方法,免去添加管腳。由于中斷控制器不像處理器,可以有中斷系統(tǒng)來(lái)處理各類錯(cuò)誤和失效,因此GIC600AE在分配器中添加了一個(gè)錯(cuò)誤管理單元,可以把我們所提及的各類錯(cuò)誤做集中管理,記錄并上報(bào)。此外,在分配器與子分配器之間,GIC600AE還添加了看門(mén)狗,防止超時(shí)未響應(yīng)。

由于目前GIC600AE還比較新,對(duì)于一些老的設(shè)計(jì),可能并沒(méi)有與之匹配的中斷控制器可用。這種情況下,就只能把和安全相關(guān)的工作用輪詢來(lái)完成,避免走中斷通道。輪詢的對(duì)象可以是一段ECC保護(hù)的內(nèi)存,也可以是有冗余設(shè)計(jì)的硬件鎖或者外置exclusive monitor。

MMU600AE也是類似的安全設(shè)計(jì),在此我們不深入討論。對(duì)于Coresight這樣的片上調(diào)試系統(tǒng),由于本身并不涉及安全,它的錯(cuò)誤被稱作safe fault,不計(jì)入考慮范圍。 我們接下去看看CMN600AE。

CMN600是Arm服務(wù)器總線IP,它最大的特點(diǎn)是網(wǎng)狀拓?fù)浣Y(jié)構(gòu),對(duì)外支持AMBA CHI接口,內(nèi)部改用路由結(jié)構(gòu)轉(zhuǎn)發(fā)數(shù)據(jù),并提供硬件一致性和系統(tǒng)緩存,還支持多芯片互聯(lián)。CMN600在T16FFC上可以做到2Ghz,極大的拓展了帶寬,非常適合ADAS這類有大量異構(gòu)計(jì)算的應(yīng)用。

CMN600AE做了功能安全設(shè)計(jì),引入了完整的端到端的失效探測(cè)機(jī)制。如上圖,整個(gè)總線被分成三類模塊,主設(shè)備,總線,從設(shè)備。主設(shè)備與總線,總線與從設(shè)備之間,總線內(nèi)部,會(huì)有錯(cuò)誤探測(cè)編碼,也就是EDC。各處的EDC策略可以是不同的。

這是主設(shè)備與總線,總線與從設(shè)備接口處的EDC,和GCI600AE的有些相似,只不過(guò)更全。對(duì)于一些控制類信號(hào),采用復(fù)制的方法,有時(shí)候把兩根線正負(fù)反轉(zhuǎn);對(duì)于數(shù)據(jù)線和地址線,采取添加奇偶位的做法。

在總線內(nèi)部,由于網(wǎng)狀總線的特點(diǎn)是把傳輸轉(zhuǎn)成管腳更少的包FLIT傳輸,所以在每個(gè)包后面,加了CRC-8數(shù)據(jù)作為校驗(yàn),而不是添加管腳。對(duì)于總線處理模塊,仍舊采用邏輯鎖步和內(nèi)存ECC來(lái)做安全設(shè)計(jì)。此外,CMN600在傳輸上加了計(jì)數(shù)器,如果從設(shè)備端超時(shí)不響應(yīng),那就報(bào)異常。

除了鎖步,ECC和傳輸線保護(hù),有一類IP模塊設(shè)計(jì),可以使用簡(jiǎn)單一些的方法,來(lái)達(dá)到一定的安全等級(jí)。下圖是一個(gè)簡(jiǎn)單的圖像信號(hào)處理單元,從前到后,流水分別是Raw域,RGB域,YUV域,每個(gè)域都包含了各自的子模塊。模塊之間,包括到DDR的傳輸,使用傳輸線安全設(shè)計(jì)。而子模塊內(nèi)部,如果輸出結(jié)果是單調(diào)遞增,單調(diào)遞減或者在某一區(qū)域內(nèi)的,就可以用帶冗余的簡(jiǎn)單邏輯做硬件監(jiān)控,來(lái)實(shí)現(xiàn)Asil-B/D等級(jí)。

我們?nèi)GB域上的Local Tome Mapping為例。Local Tome Mapping的本意是,對(duì)于高動(dòng)態(tài)HDR或者標(biāo)準(zhǔn)動(dòng)態(tài)范圍SDR的圖,可以把局部的亮度調(diào)整到一個(gè)合適范圍內(nèi),效果如下圖。基于這個(gè)假設(shè),我們可以寫(xiě)簡(jiǎn)單邏輯,看某個(gè)區(qū)域的像素是不是顏色保持不變,而亮度和原來(lái)比有合理提高。這個(gè)簡(jiǎn)單的邏輯,可以使用鎖步來(lái)確保高等級(jí)功能安全。根據(jù)功能安全的功能分解原則,Asil-D可以分解為Asil-D的監(jiān)控模塊和QM的功能模塊,這樣,還是能保證整個(gè)Local Tome Mapping子模塊的高安全等級(jí)。

以上是IP模塊級(jí)別對(duì)于安全設(shè)計(jì)的考量,接下來(lái)我們談下模塊級(jí)實(shí)時(shí)性設(shè)計(jì)。

所謂實(shí)時(shí)性,是在一個(gè)確定的,比較小的時(shí)間內(nèi)處理完任務(wù)。很多時(shí)候,我們其實(shí)并不是真的需要實(shí)時(shí)性,而只是需要一個(gè)比較高的平均性能。Arm的R系列專門(mén)為嚴(yán)格的實(shí)時(shí)性設(shè)計(jì):確定的幾十ns的中斷響應(yīng)時(shí)間;緊耦合內(nèi)存保證流水線在一個(gè)時(shí)鐘周期就能訪問(wèn)指令和數(shù)據(jù);內(nèi)部總線具有QoS保證優(yōu)先級(jí);不存在頁(yè)表,MPU做在核心內(nèi)部,無(wú)需外部訪問(wèn)。真實(shí)的應(yīng)用場(chǎng)景可能并不需要納秒級(jí)的響應(yīng)時(shí)間,哪怕是馬達(dá)控制,系統(tǒng)響應(yīng)在毫秒級(jí)也足夠了。而毫秒與納秒差了1百萬(wàn)倍。這就給了Arm的A系列機(jī)會(huì)。

A系列最大的不確定性來(lái)自于訪問(wèn)外部?jī)?nèi)存時(shí)的延遲。我們前面在討論虛擬機(jī)的時(shí)候分析過(guò),最差情況下,一次頁(yè)表讀取,可能需要20倍的訪存時(shí)間,差不多是3us。為了使A系列有可能用于實(shí)時(shí)性任務(wù),軟件上的優(yōu)化是必須的,包括虛擬機(jī)上下文切換等。硬件上,可以縮短特權(quán)級(jí)切換時(shí)間,也可以采取固定分配來(lái)提高頁(yè)表查找命中率,還可以固定分配某塊緩存或者片上內(nèi)存給某處理器。方法很多,不一一列出。

以上的優(yōu)化可以減少單個(gè)處理單元的延遲。但是復(fù)雜系統(tǒng)里有很多主設(shè)備,它們之間共享內(nèi)存和其他從設(shè)備,是有可能產(chǎn)生阻塞和死鎖的。死鎖可以在設(shè)計(jì)流程過(guò)程中通過(guò)充分的驗(yàn)證來(lái)發(fā)現(xiàn),而阻塞就得靠?jī)?yōu)先級(jí)QoS設(shè)計(jì)來(lái)避免了。下面我們看看CMN600AE是如何處理的。

實(shí)時(shí)處理最簡(jiǎn)單的方案是給傳輸分優(yōu)先級(jí)。芯片中的總線和從設(shè)備根據(jù)優(yōu)先級(jí)來(lái)決定先后處理。但是僅僅采用優(yōu)先級(jí)會(huì)有個(gè)問(wèn)題,就是某些內(nèi)部資源,比如緩沖,表項(xiàng)已經(jīng)被低優(yōu)先級(jí)的傳輸占用了。此時(shí)如果來(lái)一個(gè)高優(yōu)先級(jí)的傳輸,由于之前的還沒(méi)有完成,就會(huì)出現(xiàn)高優(yōu)先級(jí)被低優(yōu)先級(jí)阻塞的情況。怎么辦?可以預(yù)先保留相應(yīng)的資源給高優(yōu)先級(jí)。

如上圖,在每個(gè)與主設(shè)備的接口處,都有一個(gè)QoS模塊,里面包含了一個(gè)優(yōu)先級(jí)定義,可以被軟件編程。這個(gè)優(yōu)先級(jí)會(huì)隨著傳輸?shù)娇偩€的每一個(gè)部分,每個(gè)部分都根據(jù)優(yōu)先級(jí)來(lái)給它相應(yīng)的資源。有時(shí)候,同樣高優(yōu)先級(jí)的請(qǐng)求過(guò)多,超過(guò)了系統(tǒng)資源的承受范圍。這時(shí)候,CMN600AE的內(nèi)部模塊,會(huì)告訴請(qǐng)求傳輸?shù)哪K重傳,并給它一個(gè)籌碼。每請(qǐng)求一次,籌碼加一。下次這個(gè)籌碼就會(huì)隨著新的請(qǐng)求一起傳過(guò)來(lái),只要資源有空閑,那么擁有最高籌碼的請(qǐng)求將被允許。QoS模塊還負(fù)責(zé)統(tǒng)計(jì)它所管理的傳輸,看看平均延遲是多少,傳輸間隔是多少,然后動(dòng)態(tài)調(diào)整其優(yōu)先級(jí)。

CMN600AE另一個(gè)很重要的特性是支持片間硬件一致性互聯(lián)。對(duì)于輔助駕駛芯片,當(dāng)面積大到一定程度,比如400mm^2@16nm,良率會(huì)迅速下跌。這時(shí)候,進(jìn)一步增加面積不是一個(gè)好的選擇。應(yīng)對(duì)的辦法是實(shí)現(xiàn)片間互聯(lián),減少單個(gè)die的面積。當(dāng)然,實(shí)現(xiàn)高速的PHY本身也會(huì)引入相當(dāng)大的面積,TSMC16FFC上一個(gè)支持PCIe Gen4x16的PHY就要6個(gè)平方毫米,相當(dāng)于四核A55加DSU,這里需要做好取舍。片間互聯(lián)也會(huì)引入額外的片間延遲,可能會(huì)達(dá)到50ns。

如上圖,有了CMN600AE和片間互聯(lián)協(xié)議CML,我們就可以把MMU600AE和GIC600AE全部串聯(lián)起來(lái),實(shí)現(xiàn)片間虛擬化和中斷系統(tǒng),對(duì)軟件完全透明。其中,MMU600AE訪存的實(shí)時(shí)性靠固定分配虛擬機(jī),以及使用大頁(yè)表來(lái)保證,目的是消除頁(yè)表項(xiàng)的未命中。對(duì)于中斷系統(tǒng)的實(shí)時(shí)性,片內(nèi)的話使用傳統(tǒng)的SPI/PPI,問(wèn)題不大,片外的話,只能使用PCIe的消息中斷機(jī)制MSI了。支持消息中斷需要ITS表,類似于頁(yè)表,也存放在內(nèi)存中,也有類似緩存的設(shè)計(jì)。只要保證ITS緩存條目足夠多,映射的設(shè)備數(shù)量不太多,也是可以消除未命中,提高實(shí)時(shí)性的。

以上是關(guān)于保證實(shí)時(shí)性的一些考量。接著來(lái)看看AEC-Q100,和芯片設(shè)計(jì)相關(guān)的是溫度和電壓。

溫度設(shè)計(jì)相對(duì)簡(jiǎn)單,只要工藝允許,標(biāo)準(zhǔn)庫(kù)和內(nèi)存單元支持,那只需在做后端時(shí)加入溫度限制條件即可。現(xiàn)在新的中控和輔助駕駛多用TSMC16FFC,可以支持-40C~150C的節(jié)溫,相當(dāng)于環(huán)境-40C~125C,其代價(jià)是犧牲一定的頻率和面積。

ESD測(cè)試是對(duì)接口的要求,包括2000V+的HBM和6A+的CDM。和封裝相關(guān),也和芯片IO設(shè)計(jì)相關(guān)。和數(shù)字部分IP一樣,PHY和GPIO也需要使用IP來(lái)支持AEC-Q100。此處的GPIO指的是200Mhz以下的低速I(mǎi)O,包括但并不限于SPI/PWM/I2C等接口協(xié)議。

以GPIO為例,車載設(shè)備通常需要支持3.3V和1.8V。為了符合AEC-Q100,GPIO在設(shè)計(jì)時(shí)就能承受額外的電流,并分析各種情況,看看是不是每一條電路分支都能被覆蓋到。通常對(duì)于車用GPIO,僅僅用仿真來(lái)保證設(shè)計(jì)的可靠度還不夠,還必須真正流片,用測(cè)試芯片做HTOL/LTOL測(cè)試,不斷變化溫度,做滿2600小時(shí)。否則,會(huì)發(fā)生仿真通過(guò)但是測(cè)試芯片過(guò)不了測(cè)試的問(wèn)題。一旦測(cè)試失效,那必須做失效分析,看看是哪里的電流承載不了,然后修bug重新流片測(cè)試。

同時(shí),GPIO本身同樣需要支持功能安全,也就是要加入探測(cè)電路,對(duì)各類可能產(chǎn)生的失效報(bào)警。相對(duì)來(lái)說(shuō),模擬電路失效種類較少,比較容易做到Asil-D。相應(yīng)的,IP還得提供FMEA和FMEDA報(bào)告,供芯片公司過(guò)認(rèn)證。

上圖是集成在芯片內(nèi)部的GPIO,集成時(shí),除了要插入一些特殊的單元來(lái)完成不同電壓的IO模塊隔離,還需要注意一定的IO上電次序。

至此,IP模塊分析完畢。接下去我們從芯片系統(tǒng)層面開(kāi)始分析中控和輔助駕駛芯片。

讓我們回頭看看上面的中控芯片結(jié)構(gòu)圖。最重要的是紅色框內(nèi)的安全島,由R52和緊耦合內(nèi)存,中斷控制器,總線,內(nèi)存控制器,以及DMA控制器,硬件鎖,SRAM等組成。理想情況下,每一個(gè)模塊都需要是Asil-B/D的。如果做不到,那么至少R52,緊耦合內(nèi)存和硬件鎖做到。由它們構(gòu)成安全的基石,用來(lái)輪詢其余模塊是否發(fā)生故障。同時(shí),這個(gè)安全島還可以作為系統(tǒng)控制器,來(lái)控制其余模塊的電源,電壓和時(shí)鐘狀態(tài);否則,還需要一個(gè)Asil-B/D的電源管理的有限狀態(tài)機(jī)來(lái)做這件事情,具體可以參考CMN600AE里時(shí)鐘,P/Q通道和重置信號(hào)的設(shè)計(jì)。

作為信息娛樂(lè)域的處理器,多媒體,加解密,總線,中斷控制器,調(diào)試系統(tǒng)等均無(wú)需安全等級(jí),出錯(cuò)不影響駕駛。需要安全等級(jí)的是儀表盤(pán),Asil-B級(jí)。由于我們這里已經(jīng)做了隔離設(shè)計(jì),所以不需要考慮信息娛樂(lè)域的大小核以及其他主設(shè)備對(duì)其產(chǎn)生的影響。內(nèi)存控制器雖然是共享的,但只要做好了類似CMN600AE的QoS,保留出相應(yīng)的資源,也不用擔(dān)心被低優(yōu)先級(jí)阻塞。

黃色框內(nèi)作為儀表盤(pán)處理器的A55,很難被替換成R52,因?yàn)閳D形處理器通常需要支持MMU的操作系統(tǒng)。此處的操作系統(tǒng),可以是Asil-B/D級(jí)的QNX等,也可以是Asil-B/D級(jí)虛擬機(jī)之上建立的實(shí)時(shí)操作系統(tǒng)。另一方面,A55雖然有ECC和RAS機(jī)制,但并不支持鎖步,很難做到通用場(chǎng)景下的Asil-B等級(jí)。至于同樣被隔離的圖形處理器G31,更沒(méi)有安全設(shè)計(jì)。那怎么把儀表盤(pán)做到Asil-B?一旦發(fā)生故障,比如儀表盤(pán)畫(huà)不出正確的圖層,或者干脆不響應(yīng),我們可以把A55和G31排除在安全狀態(tài)之外,讓R52驅(qū)動(dòng)外置LED燈告知駕駛員錯(cuò)誤信息。這樣,就把問(wèn)題歸到了怎樣用Asil-D級(jí)的安全島探測(cè)錯(cuò)誤。這個(gè)就相對(duì)要簡(jiǎn)單多了。可以計(jì)算每一幀r的CRC,看看是不是連續(xù)幾幀不變;也可以定期讓A55響應(yīng)中斷或者喂狗,又或者同時(shí)采用。

在這里,我們引入了一個(gè)概念,出錯(cuò)處理。在失效發(fā)生后,系統(tǒng)需要在失效容忍時(shí)間間隔(FTTI)內(nèi)進(jìn)入安全狀態(tài)。所謂的安全狀態(tài),可以是之前的正常運(yùn)行狀態(tài),也可以是應(yīng)急的處理狀態(tài)。之前儀表盤(pán)的錯(cuò)誤警告LED就是一種應(yīng)急處理的安全狀態(tài)。

對(duì)于鎖步設(shè)計(jì),最簡(jiǎn)單的做法就是重置整個(gè)邏輯。如果是處理器,那就需要重啟相應(yīng)的處理器核心。而這個(gè)重啟,必須在失效容忍時(shí)間間隔內(nèi)完成,否則,還是要被視作失效。通常,這個(gè)最短容忍時(shí)間是10毫秒到100毫秒,和系統(tǒng)應(yīng)用場(chǎng)景有關(guān)。

對(duì)于簡(jiǎn)單的微控制器,100毫秒甚至10毫秒重啟并不困難。但對(duì)于一個(gè)復(fù)雜的處理器,重啟就是麻煩事了。如果按照傳統(tǒng)的開(kāi)機(jī)流程,那幾秒鐘是需要的,沒(méi)法符合要求。那我們就只剩下兩條路,第一個(gè)是使用虛擬機(jī)。如果發(fā)生失效的并不是Hypervisor所運(yùn)行的處理器核,可以只重啟某個(gè)虛擬機(jī)來(lái)實(shí)現(xiàn)加速。對(duì)于重要的高實(shí)時(shí)任務(wù),還可以兩個(gè)虛擬機(jī)跑同一個(gè)業(yè)務(wù),互為備份,一個(gè)出問(wèn)題那立刻切另外一路;也可以用一個(gè)虛擬機(jī)待機(jī),看其余哪個(gè)虛擬機(jī)重啟,立刻開(kāi)始接手那個(gè)虛擬機(jī)的業(yè)務(wù)。如果是Hypervisor所運(yùn)行的處理器核重啟,那優(yōu)化重啟過(guò)程,保存當(dāng)前上下文環(huán)境至內(nèi)存,并且盡量調(diào)整驅(qū)動(dòng)啟動(dòng)步驟,做到最先使用的主設(shè)備優(yōu)先初始化。可以參考手機(jī)上的Suspend To Ram機(jī)制,手機(jī)基本上可以做到休眠時(shí)全芯片下電,數(shù)據(jù)保留在DDR,喚醒時(shí)處理器起來(lái)調(diào)用顯示模塊,先顯示之前保存的圖層,再啟動(dòng)圖形處理器渲染新的幀,做到無(wú)明顯感覺(jué)。利用這種機(jī)制,對(duì)于儀表盤(pán)失效,可以先告警,然后在毫秒級(jí)的時(shí)間內(nèi)完成相應(yīng)子系統(tǒng)重啟。

再來(lái)看看媒體部分的安全設(shè)計(jì)問(wèn)題。上圖中是倒車后視的子系統(tǒng),圖像信號(hào)處理是C71(Asil-B),R52(Asil-D),總線NIC450(QM),DMA330(QM),SRAM(帶ECC),顯示模塊D71(QM)。子系統(tǒng)要求做到Asil-B等級(jí)。由于并不是所有模塊都做到了Asil-B,我們需要對(duì)其做失效樹(shù)分析。真正出現(xiàn)失效的場(chǎng)景,在于顯示畫(huà)面凍結(jié)在某一幀。瞬時(shí)錯(cuò)誤引起的一些問(wèn)題,比如某幀畫(huà)面有壞點(diǎn),并不構(gòu)成失效。因此,我們要做的事情就變成兩件:先用R52從顯示模塊獲取每一幀的CRC,看看是不是連續(xù)多幀都不變,如果出錯(cuò),立刻亮燈告警,這個(gè)計(jì)算必須在失效容忍時(shí)間間隔內(nèi)完成;其次,開(kāi)機(jī)或者周期性運(yùn)行LBIST/MBIST,看看是不是存在永久錯(cuò)誤,有的話也需要告警。只要圖像的源頭C71有Asil-B,R52高于Asil-B,我i們可以放松對(duì)其余幾個(gè)模塊探測(cè)瞬時(shí)錯(cuò)誤的要求。

接下來(lái)我們看輔助駕駛的芯片框架圖,和中控不同,輔助駕駛需要感知和決策,是一個(gè)復(fù)雜的實(shí)時(shí)運(yùn)算過(guò)程,沒(méi)有辦法通過(guò)安全島監(jiān)測(cè)來(lái)達(dá)到高等級(jí)安全,只能通過(guò)處理器本身來(lái)保證。所以這里的處理器全部換成了帶冗余設(shè)計(jì)的A76AE和A65AE。虛擬化在這個(gè)系統(tǒng)里并不是必須,MMU600AE僅僅是為了虛實(shí)地址轉(zhuǎn)換。由于沒(méi)有采用虛擬機(jī),各個(gè)處理單元之間的數(shù)據(jù)隔離可以靠CMN600AE的MPU來(lái)完成。沒(méi)有經(jīng)過(guò)CMN600AE的設(shè)備,需要在和總線之間添加MPU來(lái)實(shí)行地址保護(hù),并且所有的MPU配置要保持一致。另一方面,使用MPU也限制了分區(qū)不能太多,否則就需要映射到內(nèi)存。到底使用虛擬機(jī)還是MPU進(jìn)行隔離需要看應(yīng)用來(lái)決定。另外,如果需要片間互聯(lián),那所有主設(shè)備都應(yīng)該通過(guò)NoC AE形成子網(wǎng)連到CMN600AE。

這個(gè)框架的計(jì)算流是這樣的:C71(Asil-B)把數(shù)據(jù)從傳感器收集,做固定的圖像信號(hào)處理,把結(jié)果放到DDR;A65AE讀取數(shù)據(jù),進(jìn)行車道檢測(cè)等傳統(tǒng)的矢量運(yùn)算。相對(duì)于大核,A65AE提供了高能效比的運(yùn)算能力,適合多路并行計(jì)算。也可以把任務(wù)丟到圖形處理器來(lái)運(yùn)算,延遲稍大,能效比也很高。如果涉及神經(jīng)網(wǎng)絡(luò)運(yùn)算,那A76AE會(huì)把任務(wù)調(diào)度到AI加速器上,同時(shí)在算子不足的情況下負(fù)責(zé)部分計(jì)算。也可以調(diào)度到圖形處理器,不存在算子不支持的問(wèn)題。當(dāng)然,對(duì)于神經(jīng)網(wǎng)絡(luò)計(jì)算,能效比還是趕不上專用加速器。A76AE作為大核,具有很高的單線程性能,可以用來(lái)做決策。

CMN600AE作為橋梁,連接了所有設(shè)備,并提供高帶寬,硬件一致性以及系統(tǒng)緩存。受布局布線的限制,還是需要NoC把帶寬和延遲需求不高的設(shè)備通過(guò)子網(wǎng)連到CMN600AE。

最后劃一下重點(diǎn)。汽車芯片的關(guān)鍵是實(shí)時(shí)性,功能安全,電氣,虛擬化。功能安全最復(fù)雜,需要IP級(jí)就開(kāi)始支持。如果不符合,那需要場(chǎng)景分析做分解,用最少的代價(jià)實(shí)現(xiàn)安全。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19336

    瀏覽量

    230195
  • 圖像傳感器
    +關(guān)注

    關(guān)注

    68

    文章

    1906

    瀏覽量

    129591
  • 汽車芯片
    +關(guān)注

    關(guān)注

    10

    文章

    865

    瀏覽量

    43399

原文標(biāo)題:行業(yè) | 一文讀懂汽車芯片設(shè)計(jì)!

文章出處:【微信號(hào):wc_ysj,微信公眾號(hào):旺材芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    讀懂接口模塊的組合應(yīng)用有哪些?

    讀懂接口模塊的組合應(yīng)用有哪些?
    發(fā)表于 05-17 07:15

    讀懂如何去優(yōu)化AC耦合電容?

    讀懂如何去優(yōu)化AC耦合電容?
    發(fā)表于 06-08 07:04

    讀懂什么是NEC協(xié)議

    讀懂什么是NEC協(xié)議?
    發(fā)表于 10-15 09:22

    讀懂中斷方式和輪詢操作有什么區(qū)別嗎

    讀懂中斷方式和輪詢操作有什么區(qū)別嗎?
    發(fā)表于 12-10 06:00

    讀懂NB-IoT 的現(xiàn)狀、挑戰(zhàn)和前景

    讀懂 NB-IoT 的現(xiàn)狀、挑戰(zhàn)和前景
    的頭像 發(fā)表于 02-28 15:42 ?6414次閱讀

    讀懂MCU的特點(diǎn)、功能及如何編寫(xiě)

    讀懂MCU的特點(diǎn)、功能及如何編寫(xiě)
    發(fā)表于 12-05 09:51 ?24次下載
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>MCU的特點(diǎn)、功能及如何編寫(xiě)

    讀懂汽車芯片—圖像傳感器芯片

    安裝數(shù)量為1-3個(gè),即對(duì)應(yīng)為單目、雙目和三目的方案,配置上可滿足更寬的視野、更深度的感知能力,并具有高動(dòng)態(tài)范圍。以三目方案為例,分別為前視寬視野、主視野、窄視野的方式(搭配不同HFOV鏡頭)。
    的頭像 發(fā)表于 07-06 16:42 ?1061次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>汽車</b><b class='flag-5'>芯片</b>—圖像傳感器<b class='flag-5'>芯片</b>

    讀懂汽車芯片—圖像傳感器芯片

    根據(jù)應(yīng)用安裝位置的不同,車載CMOS圖像傳感器芯片(CMOSImageSensor/CIS,以下均以CIS縮寫(xiě)代稱)分類整體可歸納為兩個(gè)應(yīng)用區(qū)域,即艙外和艙內(nèi)。1.艙外用圖像傳感器(1)前視感知類
    的頭像 發(fā)表于 07-06 16:37 ?1338次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>汽車</b><b class='flag-5'>芯片</b>—圖像傳感器<b class='flag-5'>芯片</b>

    讀懂汽車芯片—電源轉(zhuǎn)換類芯片

    電源芯片是指對(duì)電源進(jìn)行變換或者控制,為負(fù)載正常工作提供合適的電壓或者電流的集成電路芯片
    發(fā)表于 07-10 09:03 ?784次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>汽車</b><b class='flag-5'>芯片</b>—電源轉(zhuǎn)換類<b class='flag-5'>芯片</b>

    讀懂汽車芯片—激光雷達(dá)

    激光雷達(dá)的物理原理本質(zhì)上就是“距離=速度*時(shí)間”,通過(guò)測(cè)量激光信號(hào)的信號(hào)差和相位差來(lái)確定距離。相較于發(fā)射電磁波的毫米波雷達(dá)和發(fā)射機(jī)械波的超聲波雷達(dá),激光雷達(dá)主動(dòng)發(fā)射波長(zhǎng)約為900-1,500nm的激光射線,利用多普勒成像技術(shù),創(chuàng)建出目標(biāo)清晰的3D圖像,是其它傳感器無(wú)法比擬的感知能力。
    的頭像 發(fā)表于 07-11 16:21 ?2982次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b><b class='flag-5'>汽車</b><b class='flag-5'>芯片</b>—激光雷達(dá)

    讀懂,什么是BLE?

    讀懂,什么是BLE?
    的頭像 發(fā)表于 11-27 17:11 ?2337次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>,什么是BLE?

    讀懂車規(guī)級(jí)AEC-Q認(rèn)證

    讀懂車規(guī)級(jí)AEC-Q認(rèn)證
    的頭像 發(fā)表于 12-04 16:45 ?981次閱讀

    讀懂微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢(shì)

    讀懂微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢(shì)
    的頭像 發(fā)表于 11-30 09:08 ?598次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢(shì)

    讀懂新能源汽車的功能安全

    電子發(fā)燒友網(wǎng)站提供《讀懂新能源汽車的功能安全.pdf》資料免費(fèi)下載
    發(fā)表于 09-04 09:22 ?3次下載

    讀懂單燈控制器工作原理

    讀懂單燈控制器工作原理
    的頭像 發(fā)表于 11-11 13:13 ?279次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>單燈控制器工作原理
    主站蜘蛛池模板: 手机看片国产福利| 福利视频网站| 在线视频 亚洲| 一级福利视频| 天天操天天玩| www五月| 手机在线黄色网址| 特级毛片a级毛免费播放| 色老二精品视频在线观看| 七月婷婷在线视频综合| 欧美a一| 福利片欧美| 天天射天天射天天射| 久久久久久久国产精品影院| 夜夜夜爽爽爽久久久| 天天爽夜夜爽人人爽免费| 狠狠干狠狠插| 免费jlzzjlzz在线播放视频| 久久国产影视| 91视频三级| 啪啪免费网| 日本不卡视频一区二区三区| 真实偷清晰对白在线视频| 男人j进女人j免费视频视频| a中文字幕1区| 国色天香精品亚洲精品| 热99精品| 性欧美高清强烈性视频| 欧美伊人久久大香线蕉综合69| 国产综合图区| 天天草夜夜骑| h视频在线免费看| 亚洲日本三级| 美女黄色在线| 五月天婷五月天综合网在线| 天天干天天干天天插| 插插天天| 99热成人精品热久久669| 日韩欧美一区二区三区视频| 七月婷婷在线视频综合| 成年视频在线观看|