特斯拉自動駕駛FSD芯片NPU詳解

2019-09-23 13:34:21 來源:EETOP
特斯拉的FSD芯片是在年度IEEE Hot Chips大會上眾多出色的演講之一。特斯拉在今年4月首次公開了其全自駕(FSD)芯片。在最近的“ Hot Chips 31”會議上,特斯拉對芯片的一些關鍵組件提供了更多的解析。

特斯拉工程師為FSD芯片和平臺制定了許多主要目標。他們希望在功率范圍內盡可能多地封裝TOPS。出于安全原因,芯片的主要設計要點是批量使用一個芯片時,更好的提高芯片的利用率。值得注意的是,FSD芯片隨附了一組用于通用處理的CPU和一個用于后處理的輕量級GPU,這不在本文的討論范圍之內。

 


NPU

盡管芯片上的大多數邏輯都使用經過行業驗證的IP塊來降低風險并加快開發周期,但Tesla FSD芯片上的神經網絡加速器(NPU)是由Tesla硬件團隊完全定制設計的。它們也是FSD芯片上最大的組件,也是最重要的邏輯部分。
 

特斯拉談論的一個有趣的花絮是仿真。在開發過程中,特斯拉希望通過運行自己的內部神經網絡來驗證其NPU性能。因為他們沒有盡早進行仿真,所以需要借助于使用開源的Verilator驗證模擬器,其運行速度比商業模擬器快50倍。“我們廣泛使用Verilator來證明我們的設計非常出色,”特斯拉自動駕駛硬件高級總監Venkataramanan說。
 

每個FSD芯片內部有兩個相同的NPU –在物理上彼此相鄰集成。當被問及擁有兩個NPU實例而不是一個更大的單元的原因時,特斯拉指出,每個NPU的大小都是物理設計(時序,面積,布線)的最佳選擇。

 

指令集(ISA)


NPU是具有亂序內存子系統的有序計算機??傮w設計有點像是一種狀態機。指令集比較簡單,只有8條指令:DMA Read,DMA Write,Convolution,Deconvolution,Inner-product,Scale,Eltwidth,Stop。NPU只是運行這些命令,直到碰到停止命令為止。還有一個額外的參數slots ,可以更改指令的屬性(例如,卷積運算的不同變體)。有一個標志slots ,用于數據依賴性處理。還有另一個擴展slots 。該slots 存儲了整個微程序命令序列,每當有一些復雜的后處理時,這些序列就會發送到SIMD單元。因為這,指令從32字節一直到非常長的256字節不等。稍后將更詳細地討論SIMD單元。


 

初始操作
 

NPU的程序最初駐留在內存中。它們被帶入NPU,并存儲在命令隊列中。NPU本身是一個非?;ㄉ诘臓顟B機,旨在顯著減少控制開銷。來自命令隊列的命令連同需要從中獲取數據的一組地址一起解碼為原始操作-包括權重和數據。例如,如果傳感器是新拍攝的圖像傳感器照片,則輸入緩沖區地址將指向該位置。一切都存儲在NPU內部的超大緩存中,不需要與DRAM交換數據。
 

高速緩存的容量為32 MB,有一個完善的bank仲裁程序,與一些編譯器提示一起,用于減少bank沖突。每個周期中,最多可以將256個字節的數據讀取到數據緩沖區中,并且最多可以將128個字節的權重讀取到權重緩沖區中。根據步幅,NPU可能在操作開始之前將多條線路帶入數據緩沖區,以實現更好的數據重用。每個NPU的組合讀取帶寬為384B/周期,其本地緩存的峰值讀取帶寬為786GB/s。特斯拉表示,這使他們能夠非常接近維持其MAC所需的理論峰值帶寬,通常利用率至少為80%,而很多時候則要達到更高的利用率。

 

MAC陣列


CNN的主要操作當然是卷積,占特斯拉軟件在NPU上執行的所有操作的98.1%,而反卷積又占1.6%。在優化MAC上花費了大量的精力。
 

MAC陣列中的數據重用很重要,否則,即使每秒1 TB的帶寬也無法滿足要求。在某些設計中,為了提高性能,可以一次處理多個圖像。但是,由于出于安全原因,延遲是其設計的關鍵屬性,因此它們必須盡快處理單個圖像。特斯拉在這里做了許多其他優化。NPU通過合并輸出通道中X和Y維度上的輸出像素,在多個輸出通道上并行運行。這樣一來,他們可以并行處理工作,并同時處理96個像素。換句話說,當它們作用于通道中的所有像素時,所有輸入權重將被共享。此外,它們還交換輸出通道和輸入通道循環(請參見下圖的代碼段)。這使它們能夠依次處理所有輸出通道,共享所有輸入激活,而無需進一步的數據移動。這是帶寬需求的另一個很好的降低。

通過上述優化,可以簡化MAC陣列操作。每個陣列包括9,216個MAC,并排列在96 x 96的獨立單周期MAC反饋環路的單元中(請注意,這不是脈動陣列,單元間沒有數據移位)。為了簡化其設計并降低功耗,它們的MAC由8x8位整數乘法和32位整數加法組成。特斯拉自己的模型在發送給客戶時都經過了預先量化,因此芯片只將所有數據和權重存儲為8位整數。

 

在每個周期中,將在整個MAC陣列中廣播輸入數據的底行和權重的最右列。每個單元獨立執行適當的乘法累加運算。在下一個循環中,將輸入數據向下推一行,而將權重網格向右推一行。在整個數組中廣播輸入數據的最底行和權重的最右列,重復此過程。單元繼續獨立執行其操作。全點積卷積結束時,MAC陣列一次向下移動一行96個元素,這也是SIMD單元的吞吐量。


NPU本身實際上可以在2 GHz以上的頻率上運行,盡管特斯拉根據2 GHz時鐘引用了所有數字,所以大概是生產時鐘。在2 GHz的頻率下,每個NPU可獲得36.86 teraOPS(Int8)的最高計算性能。NPU的總功耗為7.5 W,約占FSD功耗預算的21%。這使它們的性能功率效率約為4.9 TOPs / W,這是我們迄今為止在出貨芯片中看到的最高功率效率之一–與英特爾最近宣布的NNP-I(Spring Hill)推理加速器配合使用。盡管特斯拉NPU在實際中的通用性有點疑問。請注意,每個芯片上有兩個NPU,它們消耗的總功率預算略超過40%。

 

SIMD單元

從MAC陣列,將一行壓入SIMD單元。SIMD單元是可編程執行單元,旨在為Tesla提供一些額外的靈活性。為此,SIMD單元為諸如sigmoid, tanh, argmax和其他各種功能提供支持。它帶有自己豐富的指令集,這些指令由從機指令定序器執行。從指令定序器從前面描述的指令的擴展槽中獲取操作。特斯拉表示,它支持在普通CPU中可以找到的大多數典型指令。除此之外,SIMD單元還配備了可執行歸一化,縮放和飽和的點狀量化單元。

將結果從SIMD單元轉發到合并單元,或直接轉發到寫組合,在其中以128B /周期的速度將其有機會寫回到SRAM。該單元進行2×2和3×3合并,在conv單元中進行更高階的處理。它可以進行max pooling 和 average pooling。對于average pooling,使用基于2×2/3×3的常量的定點乘法單元替換除法。由于特斯拉最初對MAC陣列的輸出通道進行了交錯處理,因此它們會首先進行適當的重新對齊以進行校正。


總而言之,特斯拉實現了其性能目標。FSD計算機(HW 3.0)與上一代產品(HW 2.5)相比,性能提高了21倍,而功耗僅提高了25%。


由于時間所限,翻譯水平有限,如需更詳細了解請查看英文原版:

https://fuse.wikichip.org/news/2707/inside-teslas-neural-processor-in-the-fsd-chip/

  1. EETOP 官方微信

  2. 創芯大講堂 在線教育

  3. 創芯老字號 半導體快訊

相關文章

全部評論

  • 最新資訊
  • 最熱資訊
@2003-2021 EETOP

京ICP備10050787號   京公網安備:11010502037710

X
免费大片一级a一级久久