天天看點

FPGA在卷積神經網絡中的雙倍算力應用——Supertile技術分析

作者:IC墨魚仔

近年來随着智慧安防、生物醫療、汽車電子等強實時性應用開始快速興起,各類AI模型層出不窮,神經網絡結構日益複雜,所需算力也越來越大,這使得神經網絡的硬體加速成為近幾年的熱點研究,不論是工業界還是學術屆,AI的硬體加速方案層出不窮,但主要分為FPGA和ASIC兩類。

FPGA不像ASIC,可以通過堆疊大量的計算單元來提升闆卡算力,是以在FPGA上進行算力提升更受局限,本文将介紹一種基于Xilinx FPGA平台中DSP單元的supertile技術,該技術可以将DSP的計算效率提升兩倍。

什麼是Supertile技術

Supertile其本質是一種多周期路徑技術(multi-path)的衍生,Xilinx在實際晶片内将兩塊18K的BRAM和兩個DSP Slice組成的DSP tile平行放置,高度相同,以此定制專用的高速DSP。具體結構如下圖所示,BRAM和DSP之間配置設定了五個CLB(Configurable logic block)垂直排布,用來完成一些外圍邏輯。

FPGA在卷積神經網絡中的雙倍算力應用——Supertile技術分析

在這種結構中,圍繞DSP的邏輯布局布線的時序限制将十分寬松,能更容易提高計算電路的主頻,使緩存資料能以更快的速度在DSP和BRAM間傳輸,大大提高了計算單元的處理速度。

Xilinx FPGA DSP内部由一個預加法器(Pre-adder)、一個27-bits(25-bits)×18-bits乘法器與一個算數邏輯單元(ALU)組成,配合Xilinx官方設計的内部流水線結構,以及多樣化的計算模式配置,使其能完成大部分數學運算。甚至通過多DSP級聯,可以實作更複雜,規模更大的算法,根據Xilinx官方文檔描述,DSP最高頻率可以達到661MHz,具體DSP内部結構如下:

FPGA在卷積神經網絡中的雙倍算力應用——Supertile技術分析

我們可以利用DSP超高頻率的特點,将DSP頻率設定為系統主頻的2倍,以此實作multi-path,在一個系統時鐘周期内,完成兩次乘加的計算,如上圖A×B和D×B的datapath。

需要注意的是,每個DSP周圍的資源是有限的,如果超過限制,那麼可能達不到設計者的預期效果。

Supertile的應用

了解了Supertile究竟是怎麼一回事後,接下來具體分析一下,Supertile是如何在卷積神經網絡中進行算力提升。

  • 假設FPGA中系統主頻為200MHz,可以利用Supertile将DSP主頻設定在400MHz;
  • 同時将卷積核的值從記憶體中取出,并分别發送到DSP的兩個預加法端口A、D上,将特征值發送到DSP的乘數端口B上;
  • 在5ns的系統時鐘周期中,DSP将進行AD的切換,在前2.5ns中,DSP計算了AB;後2.5ns中,計算DB;
  • 以此在不影響主頻的前提下,完成兩個卷積的操作,具體流程如下圖:
FPGA在卷積神經網絡中的雙倍算力應用——Supertile技術分析

此外,卷積神經網絡的計算還需要多通道和卷積核中不同行列值的乘累加,這樣都可以通過DSP的級聯進行實作,在本文就不詳細展開了。

繼續閱讀