張平



特斯拉是全球新能源汽車產業的領先者之一,旗下的電動汽車不但提供了獨特的駕乘體驗,還帶給駕駛者充分的科技感受。尤其是在自動駕駛領域,以激進著稱的特斯拉為旗下所有車型都提供了自動駕駛套包的選配,算是對自動駕駛最為看好、貫徹自動駕駛技術最為徹底的車企之一。不過自動駕駛作為—項全新技術,對計算能力要求極高。特斯拉從研發自動駕駛技術開始,就非常注重自家的知識產權和技術獨立性。在換用了多家廠商的方案后,特斯拉在2016年走上了自研自動駕駛芯片的道路。經過數年的研發,特斯拉的自動駕駛芯片和方案目前處于什么狀況?本文將為你解答這個問題。
如果說在自動駕駛領域,誰的定價最為隨心所欲,那一定是特斯拉了。2019年5月,特斯拉宣稱旗下全自動駕駛功能FsD漲價,從5000美元漲價到6000美元。兩個月后,又宣布FsD降價至3000美元。這還沒完,僅僅在一個月之后,特斯拉又將該功能的選配價格上漲了1000美元。如此頻繁地調整價格,讓人們在這個新能源車企的身上看到了一絲IT行業廠商的影子。甚至有網友問馬斯克:“你是打算半年漲價一次嗎”馬斯克則回答:“不,我們打算2-4個月調整一次價格,這將取決于我們的技術開發情況而定。”
特斯拉反復的調價、卻依舊有消費者對其自動駕駛功能趨之若鶩,這無疑反映了一個事實:特斯拉在自動駕駛的方案上有硬貨,消費者就吃這套。那么,特斯拉在自動駕駛領域有什么獨特的設計和方案呢?
從買到造,特斯拉決定自己來做
特斯拉在自動駕駛領域已有多年的積累。早在2014年,特斯拉就聯合Mobileye推出了第一代自動駕駛產品。兩年后,特斯拉與Mobileye結束合作,轉而采用英偉達旗下的產品。不過在這項合作開始的同時,特斯拉就已經開始招兵買馬準備自己的芯片了。2016年,特斯拉啟動自研芯片的項目,2017年流片完成,2019年4月份特斯拉FSD,也就是Full Self Driving全自動駕駛芯片正式以量產的形式發布,特斯拉在自動駕駛硬件方面已經發展到第三代。2019年9月,特斯拉在業內著名的芯片會議HotChip上公布了芯片設計和架構的大量細節,一時間業內都為之側目。
說起特斯拉自研的自動駕駛芯片,人們都會驚嘆于特斯拉強大的技術研發實力。不過在自研芯片的背后,是極高的技術風險和巨額投資。那么特斯拉為什么放棄外購,而啟動自研芯片的計劃呢?說來說去,還是一個投入和收益的問題。
特斯拉的目標是在每一輛自家汽車上都搭載自動駕駛功能,但是會根據用戶是否付費來開啟或者關閉這一功能。目前特斯拉汽車的全球年銷量大約在15萬輛左右,并且這個數據每年的增速都很高。這意味著特斯拉會面對一個巨大且不斷增長的芯片市場。除此之外,追求技術自主也是特斯拉的一貫風格。之前特斯拉購買的芯片來自Hobileye和英偉達,而這兩家芯片廠商的產品都并非專門為特斯拉定制設計,因此不一定可以滿足特斯拉未來的需求。并且這兩家廠商的產品為了普適性和廣泛的兼容性,還會加入很多在特斯拉看起來并不需要的設計。因此,綜合考慮了銷量、市場和自己掌握技術的能力之后,特斯拉開啟了自研芯片之路,并且在2019年4月推出了這款產品。
初探特斯拉FSD:專為自動駕駛設計的SOC
特斯拉FsD芯片是一款專門為自動駕駛功能設計的產品,它的架構比較特殊,不但有傳統的cPu和GPU部分,還加入了特別定制的NNA、ISP等部分,共同組成了一個龐大的SoC芯片。
先來看看特斯拉Fs D的基礎情況。特斯拉FSD采用的是三星在得克薩斯州奧斯汀工廠的14nmFinFETT藝,面積大約為260mm2,集成了60億晶體管,封裝尺寸為37.5mmx37.5mm,底座采用了FcBGA設計整體設計支持AEC-Q100汽車零部件可靠性驗證規范。
芯片內部設計方面,特斯拉采用了完全定制的獨享方案,因此很多之前在其他芯片中集成的功能要么被弱化,要么干脆去掉。計算方面,FsD芯片中包含了三個能夠提供計算性能的模塊,分別是cPu、GPu和NNA(Neural Network Accelerator神經網絡加速單元)。其中cPu采用的是cortex-A72架構,三組、每組4個核心,一共有12個核心,最高運行頻率為2.2GHz,這部分處理器核心用于通用的計算和任務。GPU方面,特斯拉設計了一個支持FP32和FP64的GPu模塊,主頻最高1GHz,最高計算能力約為600GFLPS。NNA方面,特斯拉采用了自研的架構,設計了2個NNA核心,每個核心都可以執行8位整數計算,運行頻率為2GHz,單個NNA的峰值計算能力為36.86TOPs,2個NNA的總能力為73.73TOPS。
除了三大計算性能模塊外,還有一個模塊值得注意,那就是圖像信號處理器IsP。特斯拉設計了一個專用的、帶有內部24bit流水線設計IsP,這個IsP專門針對特斯拉汽車上配備的八個HDR傳感器而設計,可以每秒鐘處理十億像素的圖像信息。在處理中還加入了色調映射等功能,并且允許芯片自主處理陰影、亮點、暗點等細節,還加入了降噪設計。可以說,IsP是特斯拉FsD中除了計算核心外面積最大、功能最復雜的輔助功能模塊。
除此之外,特斯拉FsD的其余輔助功能模塊設計也頗有特點。特斯拉FsD包含了一個安全模塊和一個加密模塊。其中安全模塊中包含了一組雙核心同步的cPu,用于執行汽車信息的仲裁。它可以決定FSD整個模塊上2個FsD芯片發出的執行計劃是否匹配、以及驅動執行器的過程是否安全。換句話來說,由于特斯拉FsD模塊上包合了兩個FsD芯片,這兩個芯片在處理過程中可能出現信息、執行不同步的情況,當這種情況出現時,判斷就交由安全模塊完成并給出最終的判定,以保證信息的同步和無沖突。安全模塊之外,加密模塊執行的功能是確保整個FSD系統只執行經過特斯拉簽名授權的代碼,而不是任何其他代碼,保證系統的安全性。
視頻處理方面,和常見的soc支持大量的視頻格式處理和編解碼不同的是,特斯拉FSD只集成了支持H.265(HEVC)的視頻編碼器,可以用于備用攝像機顯示、行車記錄儀、剪輯視頻等內容,其余諸如MPEG、H.264等一概不支持,精簡了不少規模。其他輸入輸出模塊方面,FsD系統還擁有一個攝像頭串行接口CSI,最高可以支持輸入并處理每秒25億像素。
在內存方面,特斯拉FsD芯片采用了比較廉價的雙通道LPDDR4-2133的方案,位寬為128bit,帶寬為63.58GB/s。這應該是特斯拉權衡過成本和性能后得出的最佳方案,畢竟內存控制器一向是芯片中的面積大戶,并且事關性能又輕易削減不得,性能和規模的平衡處理非常重要。
從特斯拉FSD芯片的整個設計來看,特斯拉采用了非常個性化和定制化的方案,完全不考慮其通用性(也沒必要考慮),只針對特斯拉旗下汽車的使用。這樣一來,小小的60億晶體管的芯片就能釋放出大量的計算資源,令人側目。
特斯拉定制的NNA:恰到好處
說完了整體架構,再來看看特斯拉定制的NNA核心。這也是特斯拉在Hotchip以及之前數次發布會上提及的重要內容。
特斯拉FsD芯片內包含了2個NNA,每個NNA中有一個96x96的MAC矩陣,包含了32HB的內置sRAM,整體工作頻率為2GHz。所以在理想的情況下,一個NNA的計算能力是96x96x20Psx2GHz=36.86TOPS,兩個核心加起來就是73.73 TOPS。一個FSD系統有2個FsD芯片,整板計算能力就是144TOPS。
這里需要注意的是,特斯拉設計的NNA根據目前的情況來看,由于神經網絡計算并不需要太高的精度,因此特斯拉設計的芯片只能支持8位整數計算,并且整個計算周期設計也很簡單。在每個計算周期,NNA都會從內置的32MB SRAM中讀取256bit的激活數據和另外128bjt的權重數據組合在一起進入乘法累加,也就是MAC陣列,后者可以執行96x96的MAc操作,總共可移植性9216個MAC和18432個操作。在這里,NNA只支持8位乘以8位整數乘法和32位整數乘法,完全不支持任何浮點計算,也無需支持任何其他格式,比如16位或者4位計算等,這都大大降低了核心的設計難度。并且這樣專用而直接的設計,還可以在很大程度上降低功耗,舉例來說,支持浮點運算的32位加法器功耗大約是支持整數計算的32位加法器的9倍。在完成了MAC的乘法累加操作后,數據將會被轉移到激活(Activations)以及池化部分(Pooling),并等待寫入緩沖區匯總結果。FsD支持很多激活功能,包括整流線性單元ReLU、Sigmoid線性單元(SiLU)和TanH。每個周期,NNA都可以將128字節的結果寫回sRAM,所有的操作同時和連續的進行。直到整個計算完成。
除了上述計算過程外,特斯拉在NNA的設計中還偏向于將硬件簡化,并復雜化軟件,這樣做可以降低芯片成本。比如軟件可以映射和分配單個sRAM庫,在特斯拉的神經網絡編譯器的幫助下,還可以執行層融合操作,通過耦合conv-scale-act-pooling操作允許數據重用。編譯器還可以通過執行層平滑處理來確保數據一致的內存訪問操作,還可以加入代碼壓縮、cRc校驗等功能,保證數據的可靠性。
除了架構設計之外,特斯拉NNA另一個值得注意的點就是32M B的片上sRAM緩存。這是迄今為止見過的最大規模的片上sRAM緩存了,相比其計算能力,這個容量可以說相當搶眼。其他典型的芯片比如谷歌初代TPU,采用了256x256的MAC,也只是在片上設計了24MB的sRAM。從特斯拉給出的芯片圖樣來看,sRAM占據了NNA面積的75%以上,耗費了大量的晶體管。對于這種特殊的設計,特斯拉解釋這樣做是為了讓數據盡可能地在片內周轉,而不用頻繁地與內存或者其他模塊進行讀寫操作。這樣做不但可以提高性能,還可以有效降低功耗。特斯拉宣稱整個NNA的片上操作大概需要1TB/s帶寬,所有數據都在片上完成,這樣SRAM就可以滿足其需求。
在指令方面,特斯拉認為之前一些神經網絡處理器的設計在緩存、寄存器以及邏輯控制方面消耗了大量能量,因此NNA需要盡可能多地降低這方面的耗費。于是特斯拉干脆簡化邏輯控制,將資源集中在計算方面。特斯拉NNA的指令集非常簡單,只有8條指令包括DMA Read、DMA Write、Convolution、Deconvolution、Inner-product、Scale、Eltwidth、Stop,流程控制更是只需要配置4個信息,進一步簡化了操作。
有關這個芯片的實際性能,特斯拉給出的數據是2300幀/秒,72W功耗。特斯拉還給出了一些示例網絡,每秒大約需要80TOPs,恰好滿足芯片的計算需求,2個芯片的話也僅有55%利用率,還存在很大的空余性能。另外,馬斯克宣稱這個芯片的性能是之前英偉達方案的21倍之多,并且更為安全。不過馬斯克沒有給出具體的指標和計算方法。FSD系統:雙倍安全
除了FsD芯片外,特斯拉還給出了FSD系統的相關消息。整個FSD系統上布置了2個FsD芯片,特斯拉還給出了一些示意圖,顯示FSD芯片在整個系統中的工作情況。
從特斯拉給出的信息來看,兩個FsD芯片以獨立的方式工作,當一顆芯片出現問題時,另一顆芯片可以完全接管。為了安全,特斯拉還設計了冗余的電源、重疊的攝像機視野部分、各種向后兼容的連接器和接口。在一般操作中,當整車信息通過雷達、攝像頭等傳感器發送至FSD系統時,兩顆芯片都會處理并給出方案,然后由之前提及的芯片上的模塊進行平衡和仲裁、驗證,最后發送給傳動裝置Ecu并驅動汽車進行操作。特斯拉宣稱,FsD系統的故障率非常低,甚至比人失去意識的可能性還要低一個數量級。
其他方面,特斯拉FsD系統板載了8顆LP DDR4內存,每個芯片有4顆,另外每個芯片各有一顆NAND顆粒用于存儲操作系統和數據。不過這些存儲芯片的容量和規格目前還沒有披露出來。散熱方面,整體方案采用水冷設計,確保整個工作過程的安全和穩定。功耗方面,特斯拉FsD系統的每英里功耗僅為250W,大概只有之前硬件的七分之一,成本也是之前硬件的七分之一。不得不說,特斯拉走上自研芯片這條道路還是非常正確的,不但節省了大量的資金耗費,同時也帶來了新的利潤增長點。
特斯拉FsD系統和芯片已經正式運行了一段時間,總的來看,它帶來了諸如交通信號燈識別、自動泊車、自動輔助變道、城市內自動輔助駕駛、自動輔助導航駕駛、停車召喚等功能,讓汽車的自主能力提升了一個臺階。不僅如此,在這一代FsD芯片發布后,特斯拉也沒有停下腳步,而是加快進度,研發下一代FSD芯片。目前有消息顯示,新FsD芯片的性能起碼會再翻一番,未來它還能帶給用戶怎樣的功能與體驗,令人十分期待。