極智AI | Nvidia Jetson DLA 硬體系統架構

語言: CN / TW / HK

歡迎關注我的公眾號 [極智視界],獲取我的更多筆記分享

  大家好,我是極智視界,本文介紹一下 NVIDIA Jetson DLA 硬體系統架構。

  NV 的硬體應用廣泛,不限於3D圖形渲染、AI計算等,而 Jetson 系列是 NV 邊緣計算領域的裝置主力軍。在 Jetson AGX Xavier、Jetson NX 等裝置上有 DLA 模組,DLA 全稱 Deep Learning Accelerator,是專門用於卷積神經網路前向推理加速的模組,它能夠分擔一部分邊緣端 GPU 的計算壓力,以提升系統能力處理能力。所以在這些裝置上,你可選擇的演算法加速方式有 GPU 加速 和 DLA 加速。這裡咱們專門來講講 NVDLA。

1 總體架構介紹

  DLA 的系統架構分為 Small NVDLA System 和 Large NVDLA System,如下。其中 Small NVDLA System 主要面向成本敏感的物聯網裝置場景,而當更加強調高效能時,Large NVDLA System 會是更加好的選擇。可以看到兩者最大的區別在 SRAM 和 Microcontroller,Large NVDLA 的訪存介面有 SRAM 和 DRAM,其中 SRAM 介面獨立存在,可以進一步提升 DLA 的運算能力,這是由於 DRAM 的訪存延時相對較長,且與片上眾多處理器共享頻寬,這個時候這塊獨立的 SRAM 可以有效降低系統頻寬壓力,提高處理效率。

  更細的,面向卷積神經網路的加速,NVDLA 可以細化成如下模組:

  • Convolution Core:優化的高效能卷積引擎;
  • Single Data Processor:用於啟用函式單點查詢引擎;
  • Planar Data Processor:用於池化 pooling 平面平均引擎;
  • Channel Data Processor:用於歸一化 normalization 多通道平均引擎;
  • 專用的 Memory and Data Reshape Engines:用於張量整形、複製操作的記憶體到記憶體轉換加速引擎;

  DLA 核心的一個清晰的硬體架構差不多是這樣的:

2 功能模組介紹

2.1 Convolution Core

  Convolution Pipeline 有五個階段,分別是:Convolution DMA、Convolution Buffer、Convolution Sequence Controller、Convolution MAC 和 Convolution Accumulator,支援 direct convolution、Winograd 卷積加速、Deconvolution、Multi-Batch Mode 等。其中:

  • Convolution DMA:用於從 SRAM/DRAM 中獲取資料進行卷積操作,並按照卷積引擎所需的順序將其儲存到緩衝區 (CBUF) 中;

  • Convolution Buffer:卷積緩衝區(CBUF)它總共包含 512KB 的 SRAM。SRAM 快取來自 CDMA 模組的

輸入畫素資料、特徵資料、權重資料,並由 CSC 模組讀取,CBUF 有兩個寫埠和三個讀埠;

  • Convolution Sequence Controller:卷積序列控制器(CSC)負責從 CBUF 載入輸入特徵資料、畫素資料和權重資料,並將其傳送到卷積 MAC 單元;

  • Convolution MAC:用於從卷積序列控制器(CSC)接收輸入資料和權重,執行乘法和加法,並將結果輸出到卷積累加器,CMAC 有 16 個 MAC 單元,每個 MAC 單元包含 64 個用於 int16/fp16 的 16 位乘法器,另外它還包含 72 個用於 int16/fp16 的加法器;

  • Convolution Accumulator:用於從卷積 MAC 累加部分和,並在傳送到 SDP 之前對結果進行四捨五入 (The final result of accumulator in CACC is 48bits for INT16 and 34bits for INT8);

2.2 Single Point Data Processor

  支援 Bias addition、non-linear function,如 sigmoid function、relu、hyperbolic tangent、BN、elementwise 等,有幾個功能塊,每個功能塊都有不同的用途:

  • 可以從 MEM 或 Conv Core 中選擇輸入資料;
  • Block X1/X2 具有相同的架構;
  • Block Y 主要是為 element-wise 設計的,但它也能夠支援 Bias add,PReLU 和一個額外的 LUT 操作,可以在輸出之前選擇以實現任何非線性操作;
  • Block C1/C2 用於額外的縮放和偏移以節省位,同時保持高精度;

2.3 Planar Data Processor

  PDP 支援最大、最小和平均池化方法。一個平面內的幾個相鄰輸入元素將被髮送到一個非線性函式用於計算一個輸出元素。

2.4 Cross Channel Data Processor

  通道處理旨在解決區域性響應歸一化 (LRN) 層。區域性響應歸一化通過沿通道方向對區域性輸入區域進行歸一化來執行一種橫向抑制。歸一化函式如下所示:

  上面兩個方程可以通過程式設計相應的暫存器來繞過,以便將 CDP 視為獨立的查詢表 (LUT) 。

2.5 RUBIK

  RUBIK 模組類似於 BDMA。它在不進行任何資料計算的情況下轉換資料對映格式:

  • contract data cube (deconv);
  • split feature data cube into multi-planar formats;
  • merge multi-planar formats to data cube;

2.6 BDMA

  為了利用片上 SRAM,NVDLA 需要在外部 DRAM 和 SRAM 之間移動資料,可以使用 BDMA 來滿足這一目的。有兩種移動的路徑,一種是將資料從外部 DRAM 複製到內部 SRAM,另一種是將資料從內部 SRAM 複製到外部 DRAM,當然這兩個方向是不能同時工作的。

  BDMA 還可以將資料從外部 DRAM 移動到外部 DRAM,或從內部 SRAM 移動到內部 SRAM。為了移動立方體中的所有資料,BDMA 支援行重複,可以在多行之間進行跳轉。


  好了,以上分享了 NV Jetson DLA 硬體系統架構,希望我的分享能對你的學習有一點幫助。


 【公眾號傳送】

《極智AI | NVIDIA Jetson DLA 硬體系統架構》


logo_show.gif