手把手教你從零設(shè)計一款算力超過 1000Tops 的智能駕駛芯片
智能駕駛已經(jīng)逐漸成為汽車的標(biāo)配。智駕芯片當(dāng)然是智能駕駛的算力基石,而這玩意也常常被車企拿來宣傳。如今,已經(jīng)有車企開始宣傳研發(fā)了 1000Tops 的智駕芯片。智駕芯片就如同汽車的大腦,非常的重要。那么,開發(fā)一款智駕芯片也是非常具有極高的技術(shù)含量的。
本文引用地址:http://2s4d.com/article/202503/468849.htm今天,本文手把手教大家從零設(shè)計一款算力 1000Tops 的智駕芯片。
一、煉氣期(L1)——算力的概念
那我們就先搞清楚這個智駕芯片算力 1000Tops 意味著什么?熟悉計算機的同學(xué)說這還不簡單,
OPS 的意思就是 Operations Per Second。每秒鐘操作多少次。計算機每秒鐘算一次為 1ops。
那么 1T ops 需要計算機算多少次?
1Tops
=1000Gops
=1000,000Mops
=1000,000,000Kops
=1000,000,000,000ops
計算完畢,每秒鐘操作 10 的十二次方次,也就是 1Tops。我們假設(shè)有一個單發(fā)射 1Ghz 的 CPU,如果要達到 1Tops 的話,基本上需要 1000 個這樣的 CPU。如果要是達到 100Tops 的處理性能,則需要 100000 個,也就是 10 萬個這樣的 CPU 才行。如果是達到 1000Tops,則需要 1,000,000,也就是 100 萬個 1Ghz 的處理器。
這意味著什么?
意味著,我們可以買 100 萬個處理器,將這么多 CPU 堆起來,實現(xiàn) 1000Tops。這么多處理器,至少需要一個火車車廂才能裝下。也就是,通過 CPU 堆疊的方式實現(xiàn) 1000Tops 的算力,至少需要一個車廂。看來,在普通汽車上,通過堆 CPU 的方式來實現(xiàn)這么大的算力不太可能。
那么就需要另外想辦法了。
二、筑基期(L2)——矩陣乘法
辦法從哪里開始考慮。我們從最本質(zhì)的地方來考慮?智駕芯片解決什么問題?智駕芯片的本身是運行人工智能的算法。人工智能算法最核心的操作就是矩陣乘法。那么矩陣乘法的計算,就是智駕芯片要解決的核心問題。
我們用一點時間把矩陣乘法梳理一下。
例如,我們有兩個原始矩陣。
矩陣 A,m 行,n 列。
矩陣 B,n 行,P 列
然后,我們計算矩陣 C=A*B;
C 是矩陣 A 和矩陣 B 的乘法結(jié)果:m 行,p 列
也可以寫作:
我們舉一個例子
兩個 2X2 的矩陣相乘,可以如下所示。
對于一個 NN 的矩陣,那么總共需要 N(NN)次乘法和 N(N*(N-1))次加法。
所以,對于一個 2*2 的矩陣,里面一共用到了 8 次乘法,4 次加法,才能得到答案。
三、金丹期(L3)——乘累加器
根據(jù)上面的分析,我們可以看到,矩陣相乘,需要的最小的算子單元就是乘法和加法。
所以你可以設(shè)計一種電路。先做兩個值的乘法,例如 a11 與 b11。在上面的例子中,就是 1X5=5;然后開始算,a12*b21;在上面的例子中,就是 2X7=14;然后與上一次的乘法結(jié)果(5)加起來。2X7 + 5 = 19
每次都可以把上一次的結(jié)果與當(dāng)次乘法的結(jié)果加起來,這樣就可以實現(xiàn)矩陣一行與一列的先相乘后求和的過程。
恭喜你,你就得到了一個乘累加器。每個 MAC 就是一個乘累加器(Multiply Accumulate)。但是,現(xiàn)在問題又來了。一個乘累加器,只能計算一個點的。如果要并行,一個 NXN 的矩陣,那么就需要 NXN 個乘累加器。這樣可以并行來計算。那如果計算這個 2X2 的矩陣,我們可以用 2X2,一共 4 個乘累加單元。這樣可以并行來計算。
下圖就是這個乘累加矩陣,一共 4 個,可以同時進行計算。
通過上圖,眼尖的你,一定發(fā)現(xiàn)了規(guī)律。
矩陣 A 和矩陣 B 相乘。如同矩陣 A 從左往后移動,先向左移動 1,3,再移動 2,4而矩陣 B 從上往下移動,先往下移動 5,6,再移動 7,8;然后進行相乘。那么根據(jù)這個規(guī)律,就可以采用另一種叫做脈動陣列的方式來計算。這個脈動和某飲品沒有啥關(guān)系。完全體現(xiàn)了數(shù)據(jù)的移動規(guī)律,如箭頭方向所示。
第一步,按照規(guī)律,往右移動移動 1 和以及往下移動 5;
第二步,以此類推
第三步,
第四步,
第五步,
這樣我們就得到了最終的矩陣相乘的值。通過累加器的脈動陣列,可以減少芯片內(nèi)部的連接,因為每個累加器的輸入只來自左邊和右邊。這樣就可以放置很多的累加器,累加器比較容易做的很大。
于是,把累加器從 2X2 擴展一下,可以做的很大,如下圖所示:
到此,你就設(shè)計了一個矩陣乘法處理單元;
上面和左面的緩存中分為存儲了原始的數(shù)據(jù)矩陣 A 和 B。在人工智能算法中,一個一般代表了權(quán)重矩陣(weight fifo),另一個代表激活矩陣。這樣你就設(shè)計了一個面向人工智能應(yīng)用的處理器(NPU)最核心的單元。矩陣乘法以及存儲矩陣輸入和輸出的緩存。
四、元嬰期(L4)——NPU
那么這個矩陣的行和列分別設(shè)置為多少合適?由于神經(jīng)網(wǎng)絡(luò)的每一層的計算都比較多。那么可以把行和列都設(shè)置成 8,16,32,64,96 或者更大。那我們就先把行和列設(shè)置成 96。那我們就得到了一個 96X96=9216 乘累加單元。為了存儲要計算的矩陣數(shù)據(jù),給這些數(shù)據(jù)設(shè)計了一個緩存(例如 32Mbyte)。對于矩陣乘法后的數(shù)據(jù),還需要進行池化,激活函數(shù),歸一化等操作。在矩陣完成運算后。數(shù)據(jù)會被轉(zhuǎn)移到激活硬件、池化硬件,并最終進入寫入緩沖區(qū)以匯總結(jié)果。還要支持多種激活函數(shù),包括修正線性單元(ReLU)、Sigmoid 線性單元(SiLU)和 TanH。于是在矩陣的輸出結(jié)果后面又加上了 SIMD 單元可編程的處理以及池化,deconv 等模塊。
這樣,恭喜你,你現(xiàn)在就設(shè)計完畢了一個 NPU。
如下圖所示:
設(shè)計完畢后,馬老板就提出了一個問題,這個 NPU 的性能是多少?有了前面的基礎(chǔ),這個問題就簡單了。芯片的核心算力是這個 96X96 的矩陣計算單元(黃色部分)得來的。總計 9,216 個 MAC(乘累加)。
一次乘加算兩次操作。
乘+加,所以是兩次
所以,這個矩陣每次 hz 就是 18,432 次操作。做成芯片,這個 NPU 運行頻率是 2Ghz。
也就是 2GX18432 = 36864Gops=36.864Tops。
是不是很簡單又清楚。
五、大乘期(L5)——智能駕駛芯片
這個時候,馬老板突然說了。才 37Tops 性能,這性能也太差了。你剛要解釋一下,功耗,面積,編程友好,利用率這些原因。馬老板才不管那套。性能至少翻倍,不能討價還價。于是,你立馬想到了。可以放兩個 NPU,不就可以性能翻倍了嗎?于是,你在一個 SOC 內(nèi)部,放上了兩個 NPU(黃色部分),這樣,這個芯片的性能一下子就能從 76.86Tops 到 73.72Tops。四舍五入,就是 74Tops
當(dāng)然,除了提供核心算力的 NPU 之外。還有系統(tǒng)控制作用的 CPU,3 個四核 Cortex-A72 集群,總共 12 個 CPU,運行頻率為 2.2GHz;還有圖像處理作用的 GPU,一個 Mali G71 MP12 GPU,運行頻率為 1GHz至此,恭喜你,你設(shè)計了特斯拉的智駕芯片,F(xiàn)SD 芯片。然后,這個芯片采用了三星的 14nm 工藝,整個芯片 260 mm2 die size(20 mm x 13 mm die size)這是最后的芯片版圖。
可以看到,整個提供算力的 NPU,幾乎占了芯片面積的 50%左右。這玩意占面積也占成本。結(jié)果,芯片設(shè)計出來,馬老板立馬說,74Tops,這個性能指標(biāo)還是太低。出去不好吹牛。至少要大于 100Tops。有了前面的經(jīng)驗,聰明的你立馬想到了。直接在板子上放兩顆不就行了。那么最后方案上,我們可以看到。
系統(tǒng)采用了兩顆 FSD 芯片,智駕系統(tǒng)的總的算力,也達到了 148TOPS。這樣,算力立馬達到了高階智駕的門檻。即使是這樣,也沒有達到 1000Tops 的算力。如果要達到 1000Tops 的算力。根據(jù)上面的計算,增加算力,可以加多個 NPU,也可以增加乘累加矩陣(MAC array)的面積。更大的矩陣乘法單元帶來了更大的算力。看來,只要是簡單的堆乘累加矩陣就可以了?這個看起來很簡單。例如,128*128 個 MAC 的 NPU,單個 NPU 如果 2Ghz 處理能力,其算力就能>64Tops。一個芯片四個 NPU,單芯片就能達到 256T 處理能力。板載 4 個芯片就能達到 1024Tops 的處理能力。
所以,有了前面的基礎(chǔ),看起來不費勁。
不要笑,
可能有人問?
算力怎么能這么粗暴的疊加。
要知道,某家車企就是用了四顆智駕芯片(orin-X),宣稱達到了 1024Tops。
我很懷疑,他們是不是把算力都用上了,是不是扣到兩顆芯片發(fā)現(xiàn)智駕也能工作。
其實,即使大家沒有智駕軟件的基礎(chǔ)。
也能明白:智駕軟件用到的算力不等于實際硬件提供的能力。通過小學(xué)數(shù)學(xué)也能知道,無限擴大這個乘累加器矩陣,最終的利用率就會不斷降低。例如,我們算一個 96X96 的矩陣,而用 128X128 的硬件單元算,或者 256X256 的矩陣單元算。就有一大部分都空閑。這個就是硬件利用率的問題。
所以,有句老話說的好,算力不是萬能的。但是光有算力也是萬萬不能的。
看的見是智駕芯片的算力,看不見的是智駕芯片上跑的軟件和算法。這些軟件和算法的能力,其實更是制約各家智駕水平的差異的地方。
所以說:芯片的算力,算法的智力,系統(tǒng)的合力,唯有三者形成合力,才能驅(qū)動智能駕駛突破現(xiàn)有邊界。穿梭三界(全地形全天候)亦如履平地,至此方證“無人駕駛”天道。
后記:
本來,除了 FSD 還要寫另外兩款典型的智駕芯片英偉達的 orin-x 和華為的昇騰 610,但是篇幅太長了,等下次再補上。
END
評論