加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

設(shè)計(jì)一款自動(dòng)駕駛系統(tǒng)芯片挑戰(zhàn)Mobileye和英偉達(dá)

2022/01/27
459
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

設(shè)計(jì)一款自動(dòng)駕駛芯片挑戰(zhàn)Mobileye英偉達(dá)是不是有點(diǎn)不自量力?

未必,目前自動(dòng)駕駛系統(tǒng)芯片即SoC設(shè)計(jì)大都是搭積木的方式,各種第三方IP就是積木,只要搭配得當(dāng),還是有可能挑戰(zhàn)Mobileye和英偉達(dá)的,關(guān)鍵不在于技術(shù),而在于有持續(xù)不斷的巨量資金注入,這是一場(chǎng)馬拉松比賽,堅(jiān)持到最后就是勝利。

Mobileye的優(yōu)勢(shì)是軟硬一體,開發(fā)周期最短,開發(fā)成本最低,技術(shù)成熟穩(wěn)定,缺點(diǎn)是產(chǎn)品同質(zhì)化明顯,無法凸顯整車廠的特色。MIPS指令集導(dǎo)致其系統(tǒng)封閉,升級(jí)能力差,無法適應(yīng)快速演進(jìn)的傳感器技術(shù),特別是激光雷達(dá)的大量出現(xiàn)。

英偉達(dá)的優(yōu)勢(shì)是AI算力極其強(qiáng)大,留有足夠的算力冗余,能適應(yīng)各種算法,也能滿足未來3-6年的算法演變。GPU的浮點(diǎn)算力也很強(qiáng)大,算力冗余足夠,視覺感知能力強(qiáng)。英偉達(dá)提供完整的軟件棧,系統(tǒng)也有點(diǎn)封閉,但算力很強(qiáng)大,整車廠還是能做出特色。缺點(diǎn)是GPU占裸晶面積大,硬件成本居高不下。

實(shí)際自動(dòng)駕駛雷聲大雨點(diǎn)小,在2017和2018年,眾多科技類企業(yè)或整車廠都信誓旦旦要在2020年或2021年推出L4級(jí)車,沒有方向盤和剎車踏板,最終都不了了之。2021年則是很多廠家推出號(hào)稱L3/L4的量產(chǎn)車,但年銷量都很難上千,究其原因主要是性價(jià)比太低,所謂L3/L4就是加強(qiáng)版的自適應(yīng)巡航或堵車時(shí)的自動(dòng)跟車,但代價(jià)卻很高。目前L3/L4的技術(shù)條件遠(yuǎn)未成熟,未達(dá)到量產(chǎn)上路的地步,比如感知領(lǐng)域,突然出現(xiàn)的靜止目標(biāo),非標(biāo)障礙物,嬰兒和小孩低矮目標(biāo)探測(cè)與識(shí)別,光強(qiáng)度的迅速變化等挑戰(zhàn),以及決策領(lǐng)域的允許加塞或不允許等。此外,基礎(chǔ)條件也不具備,如高精度地圖和定位,紅綠燈的V2X等。

未來10年內(nèi),L2+還是市場(chǎng)主流,至少占到90%的市場(chǎng)。高AI算力在L2+領(lǐng)域沒有用武之地,所謂AI算力,只是卷積加速器,只是視覺分類的一個(gè)功能。遇上突然出現(xiàn)的靜止目標(biāo)、非標(biāo)障礙物、嬰兒和小孩低矮目標(biāo),即使再高的AI算力,還是要出事故,但硬件廠家的推波助瀾,讓消費(fèi)者誤以為高算力就是高等級(jí)自動(dòng)駕駛。

要提高安全性不是提高AI算力就能做到的,激光雷達(dá)或立體雙目能提供原生3D感知的傳感器應(yīng)用才能提高安全性,同時(shí)也要基于傳統(tǒng)可解釋可預(yù)測(cè)算法才能提高安全性。深度學(xué)習(xí)是個(gè)黑盒子,無法預(yù)測(cè)結(jié)果,無法解釋,無法提高安全性。立體雙目技術(shù)門檻太高,只有奔馳豐田大廠才玩得轉(zhuǎn),這是內(nèi)部培養(yǎng)了十幾年人才的成果。大部分企業(yè)都只能選擇激光雷達(dá)。

激光雷達(dá)對(duì)SoC運(yùn)算資源的需求CPU就可以完成,避免使用高成本的GPU。

圖片來源:互聯(lián)網(wǎng)

LiDAR通過激光反射可以測(cè)出與物體之間的距離distance,因?yàn)榧す獾拇怪苯嵌仁枪潭ǖ?,記做a,這里我們可以直接求出z軸坐標(biāo)為sin(a)*distance。由cos(a)*distance我們可以得到distance在xy平面的投影,記做xy_dist。LiDAR在記錄反射點(diǎn)距離的同時(shí)也會(huì)記錄下當(dāng)前LiDAR轉(zhuǎn)動(dòng)的水平角度b,根據(jù)簡(jiǎn)單的集合轉(zhuǎn)換,可以得到該點(diǎn)的x軸坐標(biāo)和y軸坐標(biāo)分別為cos(b)*xy_dist和sin(b)*xy_dist。

Velodyne VLP-16的數(shù)據(jù)包

圖片來源:互聯(lián)網(wǎng)

激光雷達(dá)的數(shù)據(jù)處理主要是兩部分,第一部分是坐標(biāo)變換,包括極坐標(biāo)到直角坐標(biāo)XYZ之間的變換,激光雷達(dá)坐標(biāo)系與車輛坐標(biāo)系的變換,這其中主要是三角函數(shù)變換。第二部分是點(diǎn)云配準(zhǔn)。去噪音等預(yù)處理可以看做點(diǎn)云配準(zhǔn)的一部分工作。

早期乘法運(yùn)算和浮點(diǎn)運(yùn)算資源奇缺,因此J. Volder于1959年提出了一種快速算法,稱之為CORDIC(COordinateRotation DIgital Computer) 坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算算法,這個(gè)算法只利用移位和加減運(yùn)算,就能計(jì)算常用三角函數(shù)值,如Sin,Cos,Sinh,Cosh等函數(shù)。J. Walther于1974年在這種算法的基礎(chǔ)上進(jìn)一步改進(jìn),使其可以計(jì)算出多種超越函數(shù),進(jìn)一步擴(kuò)展了Cordic 算法的應(yīng)用。因?yàn)镃ordic 算法只用了移位和加法,很容易用CPU來實(shí)現(xiàn)。Cordic算法首先用于導(dǎo)航系統(tǒng),使得矢量的旋轉(zhuǎn)和定向運(yùn)算不需要做查三角函數(shù)表、乘法、開方及反三角函數(shù)等復(fù)雜運(yùn)算。

CORDIC用不斷的旋轉(zhuǎn)求出對(duì)應(yīng)的正弦余弦值,是一種近似求解法。旋轉(zhuǎn)的角度很講求,每次旋轉(zhuǎn)的角度必須使得正切值近似等于 1/(2^N)。旋轉(zhuǎn)的目的是讓Y軸趨近于0。把每次旋轉(zhuǎn)的角度累加,即得到旋轉(zhuǎn)的角度和即為正切值。比如Y軸旋轉(zhuǎn)45度,則值減小1/2,再旋轉(zhuǎn)26.56505°,再減少1/4,再旋轉(zhuǎn)角度14.03624º,再減少1/8,依次減少1/16,1/32......,最后Y軸的值無限小,趨近于0 。要避免浮點(diǎn)運(yùn)算也很簡(jiǎn)單,我們用256表示1度(即8比特)。這樣的話就可以精確到1/256=0.00390625度了,這對(duì)于大多數(shù)的情況都是足夠精確的了。256表示1度,那么45度就是 45*256 = 115200。其他的度數(shù)以此類推。只取整數(shù)運(yùn)算,避免了浮點(diǎn)運(yùn)算。

第二部分運(yùn)算量比較大的,也是程序員們比較關(guān)注的,一般三角函數(shù)計(jì)算坐標(biāo)變換都是激光雷達(dá)廠家提供SDK的。

說到點(diǎn)云配準(zhǔn),就繞不開PCL庫。PCL庫源自ROS,即機(jī)器人操作系統(tǒng),機(jī)器人系統(tǒng)經(jīng)常用到激光雷達(dá)3D影像,為了減少重復(fù)開發(fā),打通各個(gè)平臺(tái),ROS推出了PCL庫。PCL(Point Cloud Library)是在吸收了前人點(diǎn)云相關(guān)研究基礎(chǔ)上建立起來的大型跨平臺(tái)開源C++編程庫,它實(shí)現(xiàn)了大量點(diǎn)云相關(guān)的通用算法和高效數(shù)據(jù)結(jié)構(gòu),涉及到點(diǎn)云獲取、濾波、分割、配準(zhǔn)、檢索、特征提取、識(shí)別、追蹤、曲面重建、可視化等。支持多種操作系統(tǒng)平臺(tái),可在Windows、Linux、Android、MacOSX、部分嵌入式實(shí)時(shí)系統(tǒng)上運(yùn)行。如果說OpenCV是2D信息獲取與處理的結(jié)晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權(quán)方式,可以免費(fèi)進(jìn)行商業(yè)和學(xué)術(shù)應(yīng)用。其背后主要是慕尼黑大學(xué)(TUM - Technische Universität München)和斯坦福大學(xué)(Stanford University)。工業(yè)領(lǐng)域除了所有激光雷達(dá)廠家都支持PCL庫外,豐田和本田也是PCL庫的贊助者。

PCL庫建立于2013年,那個(gè)時(shí)代,CPU是最主要的運(yùn)算資源,因此PCL庫針對(duì)CPU做了優(yōu)化,PCL中的底層數(shù)據(jù)結(jié)構(gòu)大量使用了SSE(可以看作是SIMID)優(yōu)化。其大部分?jǐn)?shù)學(xué)運(yùn)算的實(shí)現(xiàn)是基于Eigen(一個(gè)開源的C++線性代數(shù)庫)。此外,PCL還提供了對(duì)OpenMP和英特爾線程構(gòu)建模塊(TBB)庫的支持,以實(shí)現(xiàn)多核并行化??焖僮罱徦阉魉惴ǖ闹鞲墒怯蒄LANN提供(一個(gè)執(zhí)行快速近似最近鄰搜索的庫)。PCL中的所有模塊和算法均通過使用Boost共享指針的傳遞數(shù)據(jù),因此避免重新復(fù)制系統(tǒng)中已經(jīng)存在的數(shù)據(jù)。

點(diǎn)云配準(zhǔn)最常用的兩種方法一個(gè)是迭代最近點(diǎn)算法ICP (Iterative Closest Point),KD樹可看做是ICP的高維版,一個(gè)是正態(tài)分布變換NDT (Normal Distribution Transform)。這兩種算法自然都在PCL庫里。英特爾則在2020年推出類似PCL庫的Open3D開源庫,不用說,自然也有對(duì)CPU的優(yōu)化。

現(xiàn)在讓我們?cè)倩氐阶詣?dòng)駕駛芯片,要應(yīng)對(duì)不斷增加分辨率的激光雷達(dá),就要增強(qiáng)CPU算力,CPU的裸晶面積一般遠(yuǎn)小于GPU,這就意味著CPU性價(jià)比更高。考慮到芯片的設(shè)計(jì)周期與應(yīng)用量產(chǎn)周期有2-3年,因此性能要盡可能地強(qiáng)大,同時(shí)為了保持足夠的開放性,ARM架構(gòu)是必須使用的。

圖片來源:互聯(lián)網(wǎng)

ARM在2019年3月針對(duì)服務(wù)器HPC市場(chǎng)推出Neoverse平臺(tái),按照計(jì)劃最初是Ares,即希臘神話里的戰(zhàn)神,2020年是Zeus,即希臘神話中的宙斯,2022年是Poseidon。V1是ARM目前算力最強(qiáng)的CPU架構(gòu)。

圖片來源:互聯(lián)網(wǎng)

考慮到臺(tái)積電的產(chǎn)能緊張,價(jià)格高昂,即便是特斯拉這樣的知名客戶,也被臺(tái)積電拒之門外,因?yàn)樘厮估牧刻土?,臺(tái)積電的資源都給大客戶了,小客戶的排期遙遙無期。從性價(jià)比和供應(yīng)鏈的角度,三星是唯一選擇,三星產(chǎn)能充足,價(jià)格也遠(yuǎn)低于臺(tái)積電,缺點(diǎn)是5納米工藝不夠成熟,因此只能選擇7納米的V1。

為什么說V1是最強(qiáng)的?

影響CPU算力最關(guān)鍵的參數(shù)是Decode Wide譯碼寬度,譯碼寬度可簡(jiǎn)單等同于每周期指令數(shù)量即IPC,即每個(gè)周期完成多少個(gè)指令。

圖片來源:互聯(lián)網(wǎng)

譯碼寬度的增加是非常困難的,不是想多少就多少的,簡(jiǎn)單來說每增加一位寬度,系統(tǒng)復(fù)雜度會(huì)提高15%左右,裸晶面積也就是成本會(huì)增加15-20%左右。如果簡(jiǎn)單地增加譯碼寬度,那么成本也會(huì)增加,廠家就缺乏更新的動(dòng)力,所以ARM的做法是配合臺(tái)積電和三星的先進(jìn)工藝,利用晶體管密度的提升來減少裸晶面積降低成本,因此ARM的每一次譯碼寬度升級(jí)都需要先進(jìn)制造工藝的配合,否則成本增加比較多。同時(shí)ARM也從商業(yè)角度考慮,每年小升級(jí)一次,年年都有提升空間。8位寬度是目前的極限,蘋果一次到位使用8位寬度,缺點(diǎn)是必須使用臺(tái)積電最先進(jìn)的制造工藝。

此外,RISC和CISC還有區(qū)別,CISC增加寬度更難,但CISC的1位寬度基本可頂RISC的1.2-1.5位。英特爾是有實(shí)力壓制蘋果的,就是制造工藝不如臺(tái)積電。CISC指令的長(zhǎng)度不固定,RISC則是固定的。因?yàn)殚L(zhǎng)度固定,可以分割為8個(gè)并行指令進(jìn)入8個(gè)解碼器,但CISC就不能,它不知道指令的長(zhǎng)度。因此CISC的分支預(yù)測(cè)器比RISC要復(fù)雜很多,當(dāng)然目前RISC也有長(zhǎng)度可變的指令。遇到有些長(zhǎng)指令,CISC可以一次完成,RISC因?yàn)殚L(zhǎng)度固定,就像公交車站,一定要在某站停留一下,肯定不如CISC快。也就是說,RISC一定要跟指令集,操作系統(tǒng)做優(yōu)化,RISC是以軟件為核心,針對(duì)某些特定軟件做的硬件,而CISC相反,他以硬件為核心,針對(duì)所有類型的軟件開發(fā)的。

V1的寬度是可變的,最高8位

圖片來源:互聯(lián)網(wǎng)

ARM Neoverse V1的微架構(gòu)

圖片來源:互聯(lián)網(wǎng)

除了譯碼寬度,后端的分布和發(fā)射(Dispatch與Issue)寬度和ALU也要跟得上,否則前端很忙,后端很閑,也是沒用,通常提升方法是增加發(fā)射寬度。分布方面,ARM Cortex-A77是10位,V1是10位,蘋果M1的大核Firestorm據(jù)說是13位,三星貓鼬M4/M5是12位。不過V1的發(fā)射單元比較多,有15位。后端的運(yùn)算單元ALU也比較多,有8個(gè),4個(gè)整數(shù),4個(gè)浮點(diǎn)或SIMD。

圖片來源:互聯(lián)網(wǎng)

V1是針對(duì)HPC開發(fā)的,推薦32核以上配置,但車載肯定不能這樣做,功耗太高,12核V1足夠,算力基本上能與16核的ARM Cortex-A78AE相當(dāng),甚至還要更高。浮點(diǎn)運(yùn)算也不弱。

圖片來源:互聯(lián)網(wǎng)

Neoverse V1的機(jī)器學(xué)習(xí)性能和浮點(diǎn)運(yùn)算性能也很強(qiáng)。

圖片來源:互聯(lián)網(wǎng)

機(jī)器學(xué)習(xí)性能,V1是N1的4倍,浮點(diǎn)運(yùn)算性能是N1的2倍,典型的N1是華為的鯤鵬系列服務(wù)器CPU,也就是華為稱之為泰山V110內(nèi)核。

ARM最近引入2代SVE,NEON指令集是ARM64架構(gòu)的單指令多數(shù)據(jù)流(SIMD)的標(biāo)準(zhǔn)實(shí)現(xiàn)。SVE(可擴(kuò)展矢量指令Scalable Vector Extension)是針對(duì)高性能計(jì)算(HPC)和機(jī)器學(xué)習(xí)等領(lǐng)域開發(fā)的一套全新的矢量指令集,它是下一代SIMD指令集實(shí)現(xiàn),而不是NEON指令集的簡(jiǎn)單擴(kuò)展。

SVE指令集中有很多概念與NEON指令集類似,例如矢量、通道、數(shù)據(jù)元素等。SVE指令集也提出了一個(gè)全新的概念:可變矢量長(zhǎng)度編程模型(VectorLength Agnostic,VLA)。

傳統(tǒng)的SIMD指令集采用固定大小的向量寄存器,例如NEON指令集采用固定的128位長(zhǎng)度的矢量寄存器。而支持VLA編程模型的SVE指令集則支持可變長(zhǎng)度的矢量寄存器。這樣允許芯片設(shè)計(jì)者根據(jù)負(fù)載和成本來選擇一個(gè)合適的矢量長(zhǎng)度。SVE指令集的矢量寄存器的長(zhǎng)度最小支持128位,最大可以支持2048位,以128位為增量。SVE設(shè)計(jì)確保同一個(gè)應(yīng)用程序可以在支持不同矢量長(zhǎng)度的SVE指令機(jī)器上運(yùn)行,而不需要重新編譯代碼,這是VLA編程模型的精髓。

SVE指令集是在A64指令集的基礎(chǔ)上新增的一組指令集,而SVE2是在ARMv9架構(gòu)上發(fā)布的,它是SVE指令集的一個(gè)超集和擴(kuò)充。SVE指令集包含了幾百條指令,它們可以分成如下幾大類:加載存儲(chǔ)指令以及預(yù)取指令,向量移動(dòng)指令,整數(shù)運(yùn)算指令,位操作指令,浮點(diǎn)數(shù)運(yùn)算指令,預(yù)測(cè)操作指令,數(shù)據(jù)元素操作指令。

簡(jiǎn)單地說,針對(duì)8位精度,如果SVE用理想狀態(tài)下的2048位指令,那么相當(dāng)于同時(shí)256個(gè)核并行計(jì)算,如果是16位精度就是128核。如果處理器有12核,那么做深度學(xué)習(xí)時(shí)可近似為256*12=3072個(gè)核心運(yùn)行,與GPU相差無幾。當(dāng)然如此寬的數(shù)據(jù)操作編譯器自動(dòng)矢量化無能為力,為難開發(fā)者手動(dòng)匯編也不好做。并且需要足夠的緩存和寄存器數(shù)量來配合,成本會(huì)暴增。不過256或512位還是問題不大,英特爾的AVX512指令就是如此。一般推理用的就是8位整數(shù)精度,512位就是近似64核。

簡(jiǎn)單算一下,假設(shè)是512位寬,12核心,那么就是64*12=768個(gè)核心,運(yùn)行頻率2GHz,理想狀態(tài)下就是768*2=1526GOPs的算力。

選擇CPU后就是選擇GPU。GPU實(shí)際上就是針對(duì)并行數(shù)據(jù)的浮點(diǎn)運(yùn)算器,也就是針對(duì)計(jì)算機(jī)視覺的,激光雷達(dá)的大量使用有助于降低對(duì)視覺的依賴,而計(jì)算機(jī)視覺是最耗費(fèi)浮點(diǎn)算力的,激光雷達(dá)的大量使用是未來可以確定的事實(shí),加上GPU最耗費(fèi)成本,且很難做得過英偉達(dá),因此不需要太高。

選擇ARM的MALI G710,16核配置650MHz下可以獲得1174GFLOPS的算力。

G710可能是ARM最成功的GPU架構(gòu)。與英偉達(dá)桌面級(jí)GPU比,ARM的架構(gòu)差異比較大。ARM采用大核設(shè)計(jì),一般寫為MALI G710 MPX或MCX,X代表核心數(shù),MALI的核心就是渲染核即Shader Core,可以近似于英偉達(dá)的SM流多處理器。渲染核里有執(zhí)行引擎,可以算是CPU領(lǐng)域的ALU。 

MALI G710渲染核

圖片來源:互聯(lián)網(wǎng)

早期ARM是SIMD設(shè)計(jì),近期變?yōu)镚PU常用的SIMT。G710的執(zhí)行引擎比G77翻倍,有兩個(gè)執(zhí)行引擎,每個(gè)執(zhí)行引擎包含兩個(gè)簇,執(zhí)行16位寬的線程,等于是64個(gè)ALU,G710支持7-16核設(shè)計(jì),也就是最高1024個(gè)ALU。

MALIG710執(zhí)行引擎

圖片來源:互聯(lián)網(wǎng)

G710的執(zhí)行核,前端沒有透露具體信息,應(yīng)該和G77一樣,是64個(gè)warp或1024個(gè)線程。每個(gè)處理單元都有三個(gè)ALU:FMA(混合的乘積累加計(jì)算)和CVT(Convert)單元是16-wide,而SFU(特殊功能單元)是4-wide。每個(gè)FMA每周期可以做16次運(yùn)算,運(yùn)算數(shù)據(jù)精度為FP32,換成FP16就是32次,8位整數(shù)INT8就是64次,像英偉達(dá)的桌面級(jí)GPU,F(xiàn)P16和FP32是分開計(jì)算的,也就是說可以同時(shí)計(jì)算,但移動(dòng)級(jí)的MALI不需要這樣設(shè)計(jì)。Convert單元處理基本整數(shù)操作和自然類型轉(zhuǎn)換操作,并充當(dāng)分支端口。

ARMMALI GPU CSF

圖片來源:互聯(lián)網(wǎng)

G710最大的變化,添加了CSF。G710首次把Mali的jobmanager換成了所謂的Command Stream Frontend。這個(gè)CSF負(fù)責(zé)處理調(diào)度和draw call,CSF這個(gè)模塊由CPU、HW和固件構(gòu)成。Arm表示,HW本身是全新設(shè)計(jì)的;而固件層的引入,能夠針對(duì)一些比較復(fù)雜的圖形負(fù)載提供更具彈性的性能,而且能夠減少驅(qū)動(dòng)開銷、提升效率;對(duì)諸如Vulkan等API提供更簡(jiǎn)捷的支持等。固件處理來自host的請(qǐng)求和通知,負(fù)責(zé)硬件資源調(diào)度,減少諸如protected mode進(jìn)出的開銷,還能通過指令模擬來提供硬件原本不具備的特性。

ARM MALI系列GPU最被人詬病的就是draw call開銷太大,實(shí)際性能與理論性能差別很大,特別是玩3D游戲時(shí),此時(shí)CPU和GPU都很費(fèi)資源,CPU優(yōu)先處理內(nèi)部需求,對(duì)于GPU的draw call處理不夠及時(shí),導(dǎo)致幀率下降。

接下來是AI加速器,計(jì)算機(jī)視覺依賴AI加速器,但激光雷達(dá)不需要太多AI加速。傳統(tǒng)AI加速器靠堆砌MAC數(shù)量,數(shù)量越多,理論算力越強(qiáng),非常簡(jiǎn)單粗暴,缺點(diǎn)是成本高,效率低。特別是效率低下,雖然理論算力數(shù)字非常漂亮,做到幾百TOPS很容易,但實(shí)際使用中,內(nèi)存墻的瓶頸,算力會(huì)大打折扣,還有算法模型的適配性,有時(shí)候只有理論算力的10%,而車載芯片受限于成本,又不可能使用高帶寬HBM內(nèi)存。

典型的AI加速器其核心是基于流水線的指令并行,即當(dāng)前處理單元的結(jié)果不寫回緩存,而直接作為下一級(jí)處理單元的輸入,取代了當(dāng)前處理單元結(jié)果回寫和下一處理單元數(shù)據(jù)讀取的存儲(chǔ)器訪問。這就是所謂脈動(dòng)陣列,基本上AI加速器都是如此。這實(shí)際上兩維的超寬SIMD,一個(gè)橫向,一個(gè)縱向,2個(gè)維度最大化復(fù)用數(shù)據(jù),從上傳下PE(計(jì)算單元)間復(fù)用權(quán)重和partial sum,從左到左傳PE間復(fù)用輸入特征圖。從相鄰PE拿數(shù)據(jù),前后門傳一下就行,不需要去共享大型SRAM取數(shù)據(jù),省掉大量尋址邏輯,數(shù)據(jù)能耗更低??刂七壿嬈D難,布線簡(jiǎn)單,裸晶面積小,功耗低,頻率可以做到2-3GHz,同時(shí)架構(gòu)易擴(kuò)展,常見的有4096和8192兩種。有些如華為和英偉達(dá),做成了3維,實(shí)際和2維度相差不大,最后那一維是前兩維的延伸,本質(zhì)上還是兩維。

這種架構(gòu)的缺點(diǎn)就是除非數(shù)據(jù)完全符合脈動(dòng)陣列的規(guī)模,否則延遲明顯,如TPU的256x256脈動(dòng)陣列,當(dāng)遇到FC層輸入輸出節(jié)點(diǎn)少、1x1的卷積核等情況,還是要空轉(zhuǎn)256個(gè)周期才能有第一個(gè)計(jì)算結(jié)果,效率急速降低,解決辦法很簡(jiǎn)單,軟硬一體,確保讓陣列都能滿負(fù)荷運(yùn)轉(zhuǎn)。不過嘛,這就徹底封閉了,等于把靈魂都給芯片廠家了。

卷積的運(yùn)算也有兩種,一種是脈動(dòng)陣列最合適的矩陣乘加累積,另一種是滑動(dòng)窗口,轉(zhuǎn)換成矩陣乘的好處之一就是方便支持各種奇奇怪怪的卷積,在轉(zhuǎn)換階段就做了dialation擴(kuò)張、stride步長(zhǎng)、deform變形、pad、非對(duì)稱卷積核等處理,但會(huì)多幾個(gè)數(shù)據(jù)轉(zhuǎn)換和額外的內(nèi)存讀寫。直接滑窗可能不需要變形和額外內(nèi)存讀寫,但優(yōu)化起來卷積方式相對(duì)受限,如果在卷積階段調(diào)整步長(zhǎng)或dialation等邏輯,會(huì)引起流水線中斷,降低效率。不過似乎可以用VLIW指令做對(duì)應(yīng)約束。

除此之外,AI加速器還是標(biāo)準(zhǔn)的馮諾依曼架構(gòu),數(shù)據(jù)和程序指令共用一個(gè)總線,雖然可以分開存儲(chǔ),像今天大多數(shù)CPU的L1緩存都是指令和數(shù)據(jù)分開存儲(chǔ),但尋址總線還是共用的,仍然是標(biāo)準(zhǔn)的馮諾依曼架構(gòu),這在AI加速器上非常不合適,AI加速器有著天量的數(shù)據(jù)存取,消耗大量時(shí)間,產(chǎn)生大量功耗,即便是脈動(dòng)陣列數(shù)據(jù)大量復(fù)用,但是指令和數(shù)據(jù)還是共用總線,數(shù)據(jù)還是要頻繁地讀出和寫入,這就是存儲(chǔ)墻問題。解決辦法有多種,一種是增加SRAM容量,SRAM速度最快,還在Die內(nèi)部,物理距離最近,但成本會(huì)暴增,除了訓(xùn)練用,推理階段絕對(duì)不會(huì)有人用。HBM退而求其次的辦法,是一種解決辦法,HBM帶寬高,容量遠(yuǎn)大于SRAM,且與計(jì)算單元物理距離很近,在每次計(jì)算的兩個(gè)值中,一個(gè)是權(quán)值Weight,一個(gè)是輸入Activation。如果有足夠大的片上緩存,結(jié)合適當(dāng)?shù)奈粚拤嚎s方法,將所有Weight都緩存在片上,每次僅輸入Activation,就可以在優(yōu)化數(shù)據(jù)復(fù)用之前就將帶寬減半。不過HBM必須用3D封裝或者說Chiplet,基本上就只有臺(tái)積電一家能做,且價(jià)格高昂,車載芯片用不起。未來如果持續(xù)縮小權(quán)重模型,使用HBM量降低,或許會(huì)出現(xiàn)車載的HBM。

最合適的解決辦法是哈佛架構(gòu),哈佛架構(gòu)可以一定程度上減少存儲(chǔ)墻的問題,它的指令和數(shù)據(jù)是不同的總線,讀取指令同時(shí)也可以讀取數(shù)據(jù),沒有等待的間隙。DSP是典型的哈佛架構(gòu)。缺點(diǎn)是通常要配合VLIW,編譯器寫起來很麻煩,再有就是DSP無法做到多核,算力難以大幅度提升。

本文這款芯片更多考慮性價(jià)比、高效率以及對(duì)激光雷達(dá)的支持,因此不需要太高的AI算力,選擇CEVA的NeuPro M。用于車載AI加速的DSP IP供應(yīng)商不少,如新思科技的DesignWare ARC處理器系列,Cadence的Tensilica Vision Q7,VeriSilicon(芯原微電子)的Vivante Vision IP,Imagination的NNA。DSPIP最大的還是CEVA,并且第一大汽車邏輯芯片廠家瑞薩在其下一代自動(dòng)駕駛SoC中就有采用CEVA的DSP IP,極有可能就是NeuProM。

圖片來源:互聯(lián)網(wǎng)

2022年1月初CES大展期間,CEVA推出第三代AI加速器IP,即NeuPro-M,最高算力達(dá)1200TOPS,且每瓦就可達(dá)到24TOPS算力,效率大約是高通AI100的2倍,英偉達(dá)Orin的2.5倍,特斯拉FSD的4-5倍。

圖片來源:互聯(lián)網(wǎng)

針對(duì)汽車市場(chǎng),CEVA提供NeuPro-M內(nèi)核及其CEVA深度神經(jīng)網(wǎng)絡(luò) (CDNN)深度學(xué)習(xí)編譯器和軟件工具包,不僅符合汽車ISO26262 ASIL-B功能安全標(biāo)準(zhǔn),并滿足嚴(yán)格的質(zhì)量保證標(biāo)準(zhǔn)IATF16949和 ASPICE要求。

NeuPro-M內(nèi)部框架圖

圖片來源:互聯(lián)網(wǎng)

第二代產(chǎn)品NeuPro-S的框架圖

圖片來源:互聯(lián)網(wǎng)

上圖為第二代產(chǎn)品NeuPro-S的框架圖,其實(shí)際是CEVA-XM6 DSP與NeuPro-S引擎的復(fù)合體,雖然NeuPro-M內(nèi)部框架圖未再提及XM6,但看AXI主從分布,XM6應(yīng)該只是換了個(gè)名字叫NPM Common子系統(tǒng)。NeuPro-S引擎有點(diǎn)類似于一個(gè)脈動(dòng)陣列的AI加速器,以NeuPro-S 4000擁有4096個(gè)整數(shù)8比特精度MAC單元,上圖為其單核框架圖。NeuPro-M也是4096個(gè)MAC,不過精度從2位整數(shù)到16位浮點(diǎn)都有。NeuPro-M 架構(gòu)中創(chuàng)新功能,同時(shí)使用 Winograd變換正交機(jī)制、Sparsity引擎和低分辨率 4x4位激活,可將網(wǎng)絡(luò)(如Resnet50和YoloV3)的循環(huán)次數(shù)減少三倍以上。

XM6的內(nèi)部框架

圖片來源:互聯(lián)網(wǎng)

NeuPro–M系列處理器初始包含以下預(yù)配置內(nèi)核:• NPM11 –單個(gè)NeuPro-M引擎,在 1.25GHz下算力高達(dá)20 TOPS,• NPM18 – 8 個(gè)NeuPro-M 引擎,在1.25GHz下算力高達(dá)160 TOPS,這里的TOPS對(duì)應(yīng)都應(yīng)該是8比特整數(shù)位精度。估計(jì)制造工藝是7納米,5納米運(yùn)行頻率可以再提高,本設(shè)計(jì)中用單核NPM11就足夠,功耗低于1瓦,也更容易過車規(guī),成本也比較低。 子系統(tǒng)不多,特別是AI加速器只是單核,因此片上網(wǎng)絡(luò)NoC也可以不用,總線就足夠,ARM的CMN700就夠用。

設(shè)計(jì)一款性能足以挑戰(zhàn)英偉達(dá)Orin和Mobileye EyeQ6H的芯片不是什么難事,最大的問題是資金從哪來,供應(yīng)鏈如何確保。至于配套的軟件部分,只要舍得花錢招人,不是什么難事。

英偉達(dá)

英偉達(dá)

NVIDIA(中國(guó)大陸譯名:英偉達(dá),港臺(tái)譯名:輝達(dá)),成立于1993年,是一家美國(guó)跨國(guó)科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計(jì)業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長(zhǎng)為一家提供全棧計(jì)算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計(jì)算解決方案提供支持。

NVIDIA(中國(guó)大陸譯名:英偉達(dá),港臺(tái)譯名:輝達(dá)),成立于1993年,是一家美國(guó)跨國(guó)科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計(jì)業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長(zhǎng)為一家提供全棧計(jì)算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計(jì)算解決方案提供支持。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄