引言

隨著機器學習演算法的研究,其變得越來越複雜和多樣性。計算密集性對計算資源和存儲以及帶寬提出了更高的要求,複雜性更要求硬體要有很好的靈活性。CPU是一個標量處理單元,對於處理過程複雜的演算法很靈活,比如決策樹和大量的圖像或者機器學習演算法。GPU和DSP集成了大量的運算單元,能夠並行處理大量計算,但是功耗較大。FPGA具有並行計算優點,以及靈活的可編程特性,但是在處理計算密集的過程時,依然受到存儲和帶寬限制,而且FPGA開發過程時間較長。Xilinx的ACAP將這三者結合起來,目標是能夠解決計算密集和帶寬瓶頸以及開發週期問題。本篇在網路上能搜索到的信息的基礎上,對ACAP的架構進行一個簡單的介紹,因為保密原因不能介紹內部文件對其描述,所以特此聲明。

1. 功能介紹

ACAP是Xilinx推出的一種革命性異構計算架構。它將標量計算,可編程邏輯還有矢量計算結合在一起,充分利用各自的優勢,不僅僅增強了針對各種機器學習演算法的適用性,也提高了計算密度和存儲帶寬。其中AI engine和NoC是新穎的設計,FPGA和CPU的結合早在zynq系列中已經應用。AI engine優點類似於GPU的結構,由多個DSP和BRAM以及DMA等構成,可以處理創新的超長指令字和單指令,多個數據指令。AI engine之間相互互聯,可以提供高達100Tb/s的存儲帶寬。NoC是一種片上網路,實現CPU,FPGA,AI engine之間的互聯。CPU是採用的雙核arm cortex-A72,與賽靈思上一代A53核相比,每核單線程相比性能提高了2倍。FPGA部分保留了原有設計,其內部的存儲器可以用於多層級cache。

圖1.1 ACAP結構

Xilinx自適應加速平臺(ACAP)結合了矢量、標量、自適應硬體單元,提供了三大引人注目的優勢:

1 軟體可編程特性;

2 異構加速

3 靈活應變能力

2. AI engine結構

一個AI engine是一個小型運算單元,其由用於計算的DSP,指令控制單元,搬運數據的DMA引擎,局部存儲單元等組成。每個相鄰AI engine之間存在cascade的連線,以及memory的連接,可以實現級聯的運算以及存儲轉運。比如多個AI engine之間可以級聯,實現矩陣運算。計算數據向前傳遞到下一個AI engine進行進一步累加或者其他運算。

圖2.1 AI engine架構

大量的AI engine排列成陣列結構,走線之間通過switch結構進行數據交換。連接方式有三種,一種是不同AI engine的存儲之間可以連接,不同計算核心(AI core)形成cascade連接,還有AI core和存儲之間的連接。這些連接為計算任務提供了更高的靈活性。

圖2.2 AI engine之間的連接
AI engine的計算單元相當於一個CPU結構,有32bit的RISC指令的標量計算單元。還有集成了多個DSP的用於處理矢量運算的矢量單元,其可以處理512bit的矢量運算,支持8bit,16bit以及32bit浮點運算。包含兩個load和一個save單元用於數據傳遞。還有一個指令控制單元,可以解析超長指令字和精簡指令字。局部存儲有32KB大小。

AI engine的計算單元相當於一個CPU結構,有32bit的RISC指令的標量計算單元。還有集成了多個DSP的用於處理矢量運算的矢量單元,其可以處理512bit的矢量運算,支持8bit,16bit以及32bit浮點運算。包含兩個load和一個save單元用於數據傳遞。還有一個指令控制單元,可以解析超長指令字和精簡指令字。局部存儲有32KB大小。

圖2.3 AI core結構

3. HBM和NoC

HBM和NoC是為瞭解決存儲和帶寬瓶頸問題提出的新型結構,比較通俗的理解就是把DRAM直接放到片上來,一是解決了PCB布線對引腳的限制以及對時鐘頻率的限制,因為放到片上後,HBM和FPGA之間的連線寬度就很小,就可以支持更多引腳連接,目前一個HBM有1024個數據引腳。三星的HBM最大帶寬可以達到307GB/s,是GDDR5的10倍,xilinx的U50有兩塊HBM2,可以提供460GB/s帶寬。HBM的使用可以為計算提供較高的帶寬,對於像RNN,MLP(多層感知機)這樣arithmetic intensity(每byte數據可以支持多少次運算)很大的運算來說,可以大大緩解帶寬瓶頸。因為在RNN和MLP中,大量的權重數據僅僅用一次就要更新。這不像CNN,權重會被一幅feature map運算多次。數據共享次數小,就造成了帶寬需求高。

圖3.1 不同器件的roofline

上圖是不同器件的roofline對比,使用了HBM的Alveo在針對RNN和MLP有更好的表現。

NoC 有助於每個硬體組件和軟 IP 模塊間輕鬆地相互訪問,或通過存儲器映射介面訪問軟體。它提供了一個標準化的、可擴展的硬體框架,使異構引擎和介面邏輯之間能夠進行高效通信,總帶寬為1Tb/s。

總結

本篇對xilinx的ACAP結構做了簡單介紹,這個系列的器件確實是很大的一個改進。其支持軟體編程,相信可以更加易用和靈活。不禁讓我們做FPGA的擔心,越來越軟體化,我們將何去何從?

往期回顧

1 在DNN中FPGA做了什麼?

2 LSTM稀疏硬體架構


推薦閱讀:
相關文章