郁 媛,李沛君,王光奇,張德兵,張 春
(清華大學(xué) 集成電路學(xué)院,北京 100084)
同步定位與建圖(VSLAM)系統(tǒng)主要由前端視覺里程計、后端優(yōu)化、回環(huán)檢測、建圖4個部分構(gòu)成。其中,視覺里程計和回環(huán)檢測部分都需要進(jìn)行特征提取與匹配。已經(jīng)有許多研究[1,2]結(jié)果表明,使用合適的卷積神經(jīng)網(wǎng)絡(luò)(CNN)特征提取代替?zhèn)鹘y(tǒng)方法在精度有明顯提升,因此在VLSAM特征提取部分采用CNN方法,并將其部署在FPGA平臺上。
當(dāng)前CNN加速器的相關(guān)研究主要從模型壓縮、架構(gòu)訪存優(yōu)化、計算單元設(shè)計等方向展開。Guo K等提出了一種指令驅(qū)動的CNN加速器,并對模型進(jìn)行了剪枝、量化和編碼,減少了模型的體積[3]。Han S等提出了一種新的編碼方法,并為其設(shè)計了新的處理單元,提高了處理速度[4]。Chen Y H等討論了調(diào)度策略與數(shù)據(jù)排列策略,充分利用片上數(shù)據(jù)提高了加速器的功耗效率[5]。Wei X等在FPGA上實現(xiàn)了脈動陣列,并通過改變數(shù)據(jù)復(fù)用模式提高了計算單元的利用率[6]。Shi F等將Winograd算法運用于小規(guī)模的脈動陣列架構(gòu)以減少乘法數(shù)量,得到了明顯的性能提升[7]。Zhang C等將全連接層采用與卷積層統(tǒng)一的表示方法,提高了資源利用率[8]。Hasan I等將池化層運算融入到卷積層中,增加了加速器的吞吐量[9]。Chen X等提出了動態(tài)配置行緩沖區(qū)深度和塊緩沖區(qū)高度,提高了硬件資源效率[10]。
本文采用數(shù)據(jù)分塊與復(fù)用策略設(shè)計了加速器,基于不同延時情況設(shè)計了片上緩沖以減小總延時,提出了Pack/Unpack模塊并對重新排列了權(quán)重參數(shù)以提高傳輸效率,最終部署在資源量較小的Ultra96開發(fā)板上,實現(xiàn)了高效低能耗目標(biāo),為基于CNN的VSLAM系統(tǒng)加速提供了新的可能。
SuperPoint網(wǎng)絡(luò)[11]是Magic Leap團(tuán)隊提出的一種用于特征提取與匹配的卷積神經(jīng)網(wǎng)絡(luò),它采用傳統(tǒng)的編解碼(encode-decode)結(jié)構(gòu),網(wǎng)絡(luò)模型如圖1所示。相比著名的特征提取匹配方法包括傳統(tǒng)方法ORB、SIFT和深度學(xué)習(xí)方法LIFT,SuperPoint在特征提取上有著更高的精度,并且受天氣、光照變化影響小,適用于VSLAM系統(tǒng)。
圖1 SuperPoint網(wǎng)絡(luò)模型
原CNN系統(tǒng)中采用32 bit浮點數(shù)的Pytorch架構(gòu),考慮到移動平臺的面積需求與VLSAM系統(tǒng)的速度需求,采用SuperPoint網(wǎng)絡(luò)進(jìn)行特征提取時,先對網(wǎng)絡(luò)參數(shù)進(jìn)行量化,這意味著可能需要犧牲一些精度,但由于VLSAM系統(tǒng)對物體追蹤的可靠性要求,在提升速度的同時,必須保證一定的準(zhǔn)確性。
對于已經(jīng)訓(xùn)練好的權(quán)重和偏置參數(shù)以及第一層特征輸入圖,在網(wǎng)絡(luò)計算前分別采用Q表示法的定點量化。定點數(shù)xfixed表示的十進(jìn)制數(shù)為
(1)
其中,bw表示定點數(shù)位寬,q表示定點數(shù)階碼,Bi∈{0,1}。
浮點數(shù)xfloat轉(zhuǎn)換為定點數(shù)xfixed
xfixed=(int)(xfloat×2q)
(2)
定點數(shù)xfixed轉(zhuǎn)換回浮點數(shù)x′float
x′float=(float)(xfixed×2-q)
(3)
在給定位寬bw的條件下,求原浮點數(shù)和轉(zhuǎn)換后浮點數(shù)的絕對誤差和最小的階碼q
q=argminq∑|Xfloat-X′float|
(4)
對于第一層以外的特征圖參數(shù)則需要先經(jīng)過每一層運算,再對計算得到的輸出特征圖量化。需要注意的是,無論是權(quán)重偏置參數(shù)還是特征圖參數(shù),由于層與層之間數(shù)據(jù)范圍差距較大,如果全部采用相同的Q值會造成較大的誤差,因此需要根據(jù)每層的結(jié)果動態(tài)計算各自的最佳Q值。
文獻(xiàn)[12]中加速器采用8 bit位寬量化,取得了較高的吞吐量,但8 bit位寬量化的最大表示范圍為-127~128,SuperPoint網(wǎng)絡(luò)中權(quán)重參數(shù)取值范圍為-192.08~197.24,若采用8 bit量化會有很大誤差,而16 bit位寬量化的最大表示范圍為-32 768~32 767,可以滿足參數(shù)范圍需求。采用16 bit位寬對權(quán)重偏置以及各特征圖層動態(tài)量化,量化系數(shù)見表1。可以看出采用16 bit量化產(chǎn)生的誤差不超過0.15%,幾乎不影響網(wǎng)絡(luò)描述子的準(zhǔn)確性,并且在滿足精度要求的前提下,將網(wǎng)絡(luò)參數(shù)空間壓縮了一半,同時可以提高計算效率,適用于對精度速度要求都很高的VSLAM系統(tǒng)。
表1 網(wǎng)絡(luò)各層參數(shù)量化系數(shù)
FPGA上的主要資源包括BRAM、DSP、LUT和FF,應(yīng)用于CNN加速時,BRAM主要用來存儲特征圖與權(quán)重參數(shù),DSP和LUT主要用于乘加單元計算,此外LUT還可以用于形成數(shù)據(jù)調(diào)度需要的簡單邏輯如選擇器和累加器,而FF主要用于存儲一些中間結(jié)果。
然而無論是存儲資源還是計算資源,F(xiàn)PGA片上的資源都較為有限,難以滿足網(wǎng)絡(luò)計算需求,往往需要采用循環(huán)分塊、數(shù)據(jù)復(fù)用等手段高效利用FPGA資源。
卷積運算是CNN網(wǎng)絡(luò)中計算量最大的部分,一般的三維卷積由六重循環(huán)構(gòu)成。但如前所述,不能把六重循環(huán)中數(shù)據(jù)全部放到BRAM當(dāng)中,因此需要在其中一些維度分塊。其中卷積核長、寬兩個維度由于自身尺寸較小一般沒有分塊的必要,分塊主要在輸入特征圖通道維度、輸出特征圖通道維度、輸出特征圖長、寬共4個維度進(jìn)行。外層循環(huán)需要按照分塊尺寸,分別讀入輸入特征圖、權(quán)重偏置參數(shù),以及傳出輸出特征圖。
為了減少片內(nèi)外訪存次數(shù),對輸出特征圖的中間結(jié)果進(jìn)行復(fù)用,將不同塊不同通道的中間結(jié)果累加后再輸出。
分塊后除了外層的四重循環(huán),在內(nèi)部還有針對圖塊卷積操作的六重循環(huán)。結(jié)合FPGA上計算資源數(shù)量,在輸入特征圖通道和輸出特征圖通道兩個維度展開多個并行的乘加運算。
在輸入特征圖通道維度以展開度TChin展開時,需要TChin個乘法器、一個深度為log2(TChin) 的加法器;在輸出特征圖通道維度以TChout展開時,需要TChout個乘法器和TChout個累加器。綜上,在輸入和輸出特征圖通道兩個維度展開時,需要TChout×TChin個乘法器、TChout個log2(TChout) 深度的加法樹和TChout個2輸入選擇器和累加器,如圖2所示。
圖2 計算單元展開
為了匹配片上計算速度與片內(nèi)外傳輸速度,在片上設(shè)置行緩沖區(qū)域,用于緩沖片內(nèi)外交互的數(shù)據(jù)。為了減少加速器總時延,可以采用雙緩沖方式將它們相互重疊。
若計算延時大于傳輸延時,僅對塊緩沖采用雙緩沖策略,緩沖電路如圖3(a)所示,Buffer0參與計算陣列運算的同時,Buffer1從DRAM中讀取下一次計算需要的數(shù)據(jù),當(dāng)Buffer0的運算完成,計算陣列無需等待直接處理Buffer1數(shù)據(jù),Buffer0讀取新的數(shù)據(jù)。
若傳輸延時大于計算延時,則對塊緩沖和行緩沖同時采用雙緩沖策略,緩沖電路如圖3(b)所示,Tile_Buffer0參與計算陣列運算時,若DRAM到Line_Buffer1的片內(nèi)外傳輸完成,即進(jìn)行Line_Buffer1到Tile_Buffer1的片上傳輸,DRAM到Line_Buffer0的片內(nèi)外傳輸也并行開展。
為了充分利用片上存儲資源,對于不同圖層,應(yīng)該能夠?qū)υO(shè)計的輸入輸出的塊緩沖及行緩沖實現(xiàn)分時復(fù)用。而當(dāng)輸出特征圖塊尺寸相同時,卷積和池化層的輸入特征圖塊大小需求不同。
考慮卷積層的四周填充(padding),輸入特征圖的長和寬應(yīng)該分別是輸出特征圖的長和寬加2,而對于2x2的最大池化層,輸入特征圖的場和寬則應(yīng)該分別是輸出特征圖的長和寬乘2。但復(fù)用的輸入特征圖尺寸不能是簡單取二者最大值的關(guān)系,需要考慮實際讀取數(shù)據(jù)的初始位置,如圖4所示,輸入特征圖的長寬應(yīng)分別設(shè)置為輸出特征圖的長寬的2倍加1。
圖4 特征圖塊尺寸
需要注意的是,運算速度的提高未必能直接反映到系統(tǒng)整體處理速度上,因為系統(tǒng)處理速度還受到數(shù)據(jù)傳輸速度的影響,適當(dāng)增加傳輸帶寬、降低片外訪存的次數(shù)可以減少數(shù)據(jù)傳輸時間。
特征圖參數(shù)總參數(shù)量較大,各層輸入數(shù)據(jù)依賴于上層的輸出數(shù)據(jù),又由于片內(nèi)外數(shù)據(jù)傳輸與片內(nèi)計算并行開展,不能直接令輸出數(shù)據(jù)覆蓋原輸入數(shù)據(jù)地址,否則可能導(dǎo)致錯誤。
因此,特征圖存儲空間大小的確定應(yīng)該參考輸入特征圖加上輸出特征圖參數(shù)量最大的圖層,在此處應(yīng)該是表1中的Conv1b層。首先將初始輸入圖片存入存儲空間首部,并將經(jīng)過卷積的第一層輸出特征圖存入存儲空間尾部,其指針指向的位置取決于這一層輸出特征圖的數(shù)據(jù)量,而下一層輸入指針即為這一層的輸出指針,下一層的輸出指針重新指向存儲空間首部,之后的圖層指針則按照此規(guī)律在存儲空間首尾交替賦值,并結(jié)合各層的數(shù)據(jù)量確定。
需要注意的是ConvPa層與ConvDa層的輸入同為Conv4b層的輸出,因此Conv4b后的各層特征圖指針時應(yīng)避免覆蓋Conv4b層的輸出特征圖數(shù)據(jù),此外由于ConvPb層的輸出數(shù)據(jù)后續(xù)還要用于網(wǎng)絡(luò)特征點的計算,也應(yīng)避免被其它數(shù)據(jù)覆蓋。最終各層特征圖指針如圖5所示。
圖5 特征圖指針
特征圖數(shù)據(jù)與權(quán)重偏置數(shù)據(jù)的片內(nèi)外傳輸采取AXI4接口的突發(fā)傳輸機制。相比于AXI4-Lite接口,AXI4接口數(shù)據(jù)傳輸具有高效性、吞吐量大的優(yōu)點。
根據(jù)文獻(xiàn)[8]可知,在傳輸數(shù)據(jù)量相同的情況下,數(shù)據(jù)的連續(xù)性越強,傳輸帶寬越大。不難得知在分塊之后,傳輸?shù)膮?shù)連續(xù)性變差,如權(quán)重參數(shù),在輸入特征圖通道維度的連續(xù)性從Chin變成TChin,并因此在輸出特征圖通道維度失去連續(xù)性。而權(quán)重參數(shù)作為已知參數(shù),可以在傳輸前重新排布增強其連續(xù)性,并且不占用加速器處理時間。
如圖6所示,圖左側(cè)為分塊后的權(quán)重參數(shù),其中Chin和TChin分別為分塊前后的輸入通道數(shù),Chout和TChout分別為分塊前后的輸出通道數(shù),圖右上側(cè)為未重排的權(quán)重參數(shù)排列,依次在權(quán)重長寬維度K2、輸入通道維度Chin、輸出通道維度Chout排列,分塊導(dǎo)致連續(xù)數(shù)據(jù)數(shù)僅為K2×TChin。圖右下側(cè)為重排序后的權(quán)重參數(shù)排列,依次在輸入通道維度Chin、輸出通道維度Chout、權(quán)重長寬維度K2排列,可以將分塊后一次傳輸?shù)倪B續(xù)數(shù)據(jù)從K2×TChin增加到K2×TChin×TChout,也就是連續(xù)性最大提高到原來的TChout倍,當(dāng)TChout取值較大時,有著顯著的效果。當(dāng)然,連續(xù)傳輸?shù)臄?shù)據(jù)量不應(yīng)該超過AXI4總線數(shù)據(jù)傳輸允許的最大長度256,如果超過則應(yīng)考慮分次突發(fā)傳輸。
圖6 權(quán)重參數(shù)重排
特征圖與權(quán)重偏置數(shù)據(jù)定點量化為16 bit數(shù)據(jù),根據(jù)AXI4接口突發(fā)傳輸?shù)奶匦钥芍?,如果傳輸?shù)臄?shù)據(jù)位寬小于總線允許位寬,總線不會自動拼接數(shù)據(jù),而是屏蔽多余數(shù)據(jù)線,僅使用部分?jǐn)?shù)據(jù)線進(jìn)行傳輸。AXI4突發(fā)傳輸最大支持到1024 bit位寬,而實驗選取的開發(fā)板HP接口的物理數(shù)據(jù)位寬是128 bit,因此最大支持128 bit位寬的數(shù)據(jù)傳輸,如果直接傳輸此數(shù)據(jù)則浪費了AXI總線與開發(fā)板芯片HP接口所允許的最大傳輸位寬。
為了充分利用帶寬,提高帶寬利用率,理論上當(dāng)一次突發(fā)傳輸?shù)拈L度與AXI4總線傳輸?shù)淖畲箝L度保持一致、位寬與開發(fā)板對應(yīng)芯片HP接口的物理位寬保持一致時可以達(dá)到最大的傳輸帶寬。而要實現(xiàn)更大的傳輸位寬,首先需要先對數(shù)據(jù)進(jìn)行拼接。
在實際應(yīng)用中,一方面,數(shù)據(jù)拼接需要考慮到對齊問題,如果數(shù)據(jù)量不能被拼接個數(shù)整除,則會出現(xiàn)數(shù)據(jù)覆蓋導(dǎo)致的錯誤;另一方面,數(shù)據(jù)傳輸?shù)膸拺?yīng)與加速器PE單元能達(dá)到的計算速度相匹配,否則這樣的帶寬提高就失去了意義。結(jié)合當(dāng)前加速器的分塊尺寸,將兩個16 bit數(shù)據(jù)拼接成32 bit數(shù)據(jù)進(jìn)行傳輸,在滿足數(shù)據(jù)對齊要求的前提下將原來的傳輸速度提高了兩倍。
為實現(xiàn)數(shù)據(jù)拼接,在讀寫模塊里添加“pack”和“unpack”模塊?!皃ack”模塊用于將輸出緩沖中數(shù)據(jù)的截斷和兩兩拼接,再傳遞到輸出行緩沖中等待輸出數(shù)據(jù)的突發(fā)傳輸;“unpack”模塊則用于將輸入行緩沖中的每個數(shù)據(jù)分割成兩個數(shù)據(jù)存儲到輸入緩沖中的相應(yīng)位置,如圖7所示。
圖7 輸出特征圖數(shù)據(jù)通路
圖7為輸出特征圖數(shù)據(jù)通路,其中output buffer為經(jīng)過片上計算單元得到的輸出特征圖數(shù)據(jù),數(shù)據(jù)位寬為32 bit,是由多個16 bit輸入數(shù)據(jù)經(jīng)過乘累加運算的結(jié)果。為了保持下一層輸入數(shù)據(jù)仍為16 bit定點數(shù),Pack模塊需要將32 bit輸出數(shù)據(jù)截斷為16 bit數(shù)據(jù),為了增加片內(nèi)外數(shù)據(jù)交互位寬,Pack需要將兩個經(jīng)過截斷的16 bit數(shù)據(jù)再次拼接為新的32 bit數(shù)據(jù),并將它們分發(fā)到輸出行緩沖line buffer中。當(dāng)行緩沖的數(shù)據(jù)全部收集完畢,將根據(jù)計算的片外指針地址進(jìn)行一次突發(fā)傳輸,將行緩沖數(shù)據(jù)存儲到片外DRAM相應(yīng)的位置。此外圖中的兩個通道為多通道數(shù)據(jù)傳輸,它們可以并行進(jìn)行片內(nèi)數(shù)據(jù)截斷和拼接以及突發(fā)傳輸過程,多通道傳輸將在下一小節(jié)詳述。
如上文所述,在開發(fā)板上資源被較好利用的情況下,假設(shè)計算效率保持在一定的水平,最可能影響到加速器效率的關(guān)鍵因素則為片內(nèi)外傳輸效率。因此需要合理提高帶寬利用率,使得數(shù)據(jù)傳輸速度與計算速度盡可能地匹配。
如果在輸出與輸入特征圖數(shù)維度分別以TChout和TChin為展開因子展開,則加速器至少需要TChout×TChin個乘加單元用于卷積運算。當(dāng)TChout=32,TChin=4時,乘加單元個數(shù)為128。
根據(jù)式(5),當(dāng)加速器工作頻率為150 M時,128個乘加單元每秒能處理19.2 G個16位定點數(shù),即計算速率達(dá)到了38.4 GB/s
Scompute=f×NMAC×wcompute
(5)
其中,f為加速器工作頻率,NMAC為乘加單元數(shù),wcompute為計算數(shù)據(jù)位寬。
但需要注意的是這些計算單元中有大量相同數(shù)據(jù),其中,相同的輸入特征圖數(shù)據(jù)同時進(jìn)行了TChout次運算,因此為了讓傳輸速率與計算速率相匹配,實際輸入特征圖的帶寬需求為38.4GB/s ÷32=1.2GB/s。
根據(jù)式(6),對于150 M頻率下32 bit位寬傳輸?shù)囊粋€AXI接口最高所能達(dá)到的帶寬為32bit/8bit*150M=0.6 GB/s,至少需要兩個AXI接口,但考慮到突發(fā)傳輸長度有限,實際能達(dá)到的帶寬僅為計算帶寬的60%,因此這里采用4個AXI接口
BWtrans=f×wtrans
(6)
其中,f為加速器工作頻率,wtrans為傳輸數(shù)據(jù)位寬。
綜上,加速器合適的數(shù)據(jù)傳輸?shù)耐ǖ纻€數(shù)計算如下式
(7)
其中,uBW為帶寬利用率,TChout為輸出特征圖通道展開度。
圖8為包括PS(processing system)和PL(progarmmable logic)端的SoC系統(tǒng)架構(gòu),DRAM為片外主要存儲單元,BRAM為片上主要存儲單元。CPU需要從DDR中讀取數(shù)據(jù)并將其傳遞給PL端。SuperPoint加速器對外有5個AXI4 Master接口和一個AXI-Lite Slave接口,分別對應(yīng)于PS端的4個AXI HP Slave接口和一個AXI HPM Master接口,當(dāng)PS端的Slave接口與SuperPoint加速IP的Master接口數(shù)不匹配時可以采用AXI互聯(lián)模塊拓展接口。AXI4總線接口用于輸入特征圖、權(quán)重參數(shù)的讀取,由于AXI4接口讀寫通道獨立,輸出特征圖的寫回也采用其中兩個AXI4接口完成,AXI-Lite接口主要用于傳輸一些狀態(tài)和控制信號。加速器內(nèi)部主要由各數(shù)據(jù)的行緩沖、塊緩沖、計算陣列以及Pack和Unpack模塊構(gòu)成。
圖8 SoC系統(tǒng)架構(gòu)
采用Avnet Ultra96-V2作為SoC系統(tǒng)驗證平臺,如圖9所示。Ultra96-V2采用Xilinx Zynq UltraScale+ MPSoC ZU3EG A484芯片,PS部分搭載ARM Cortex-A53處理器,工作頻率為1.5 GHz;PL端為基于16 nm FinFET+工藝的可編程邏輯陣列。開發(fā)板大小為85mm×54mm,相比于其它FPGA平臺具有面積小、便攜的優(yōu)勢,平臺資源包括有2 GB的LPDDR4存儲、7.6 Mbit的BRAM存儲、1.8 Mbit分布式存儲、360個DSP資源。通過J1-USB3 Device接口連接開發(fā)板與計算機,計算機即可采用串口連接方式訪問開發(fā)板系統(tǒng)終端,或采用Jupyter界面訪問系統(tǒng)。
圖9 Avnet Ultra96-V2 FPGA平臺
為了提高開發(fā)效率,本文采用了相比傳統(tǒng)設(shè)計更加自動化的高層次綜合工具。首先采用C++語言實現(xiàn)SuperPoint網(wǎng)絡(luò)并在軟件端驗證其功能,然后添加編譯指令以約束硬件結(jié)構(gòu),采用Vivado HLS平臺將其綜合為RTL級硬件代碼,并將其打包為一個IP。將加速器模塊IP與Zynq開發(fā)板添加到vivado平臺的Block Design界面,設(shè)置開發(fā)板的HP接口參數(shù)并連接到加速器模塊的相應(yīng)數(shù)據(jù)和控制信號接口,添加時鐘復(fù)位模塊、AXI互聯(lián)模塊等。如圖10為SoC系統(tǒng)連接示意圖,在Vivado平臺連接好SoC系統(tǒng)后,再依次進(jìn)行綜合與布局布線,最后生成整個系統(tǒng)的比特流文件。
圖10 SoC系統(tǒng)連接
實驗采用TUM RGB-D數(shù)據(jù)集進(jìn)行網(wǎng)絡(luò)推理,由于SuperPoint網(wǎng)絡(luò)的輸入是單通道圖片,因此對于非灰度圖片如RGB三通道圖片需要首先轉(zhuǎn)換成灰度圖。其次,對于不同的初始輸入圖像尺寸,應(yīng)調(diào)整到某一固定尺寸,經(jīng)過軟件端測試,將尺寸固定為1*480*320,此時的系統(tǒng)精度以及速度達(dá)到了較好的平衡,完成一張圖片的推理計算量為26.063 GOPs。為了方便網(wǎng)絡(luò)各層不同尺寸的特征圖在FPGA上同一空間存儲,將三維特征圖轉(zhuǎn)換成一維數(shù)組。
將Vivado生成的比特流文件燒錄到FPGA開發(fā)板上,編寫PS端控制程序以載入加速器IP,完成圖片預(yù)處理與數(shù)據(jù)量化,即可調(diào)用IP計算完成網(wǎng)絡(luò)推理。
表2是加速器在不同平臺的性能比較,包括Intel I5的CPU平臺、U96開發(fā)板上的ARM A53 CPU平臺以及U96異構(gòu)平臺,其中,在僅使用CPU運行的兩個平臺上,采用了最優(yōu)編譯選項-O3??梢钥吹?,U96異構(gòu)平臺上的加速器延時要遠(yuǎn)低于這兩個CPU平臺,性能達(dá)到了每秒25.63 G次運算,約為ARM-A53的100倍、Intel Core的15倍。
表2 不同設(shè)備性能對比
表3是本文提出的加速器與其它相似工作的比較。由于不同F(xiàn)PGA平臺的計算資源與存儲資源有較大差異,這里采取了常用的結(jié)合相應(yīng)資源的性能指標(biāo)。其中,BRAM效率被定義為每個BRAM塊的平均吞吐量,DSP效率被定義為每個DSP單元的平均吞吐量,功耗效率被定義為每單位功耗的平均吞吐量。性能密度被定義為FPGA上每面積單元(SLICE)的平均吞吐量,可以代表與FPGA平臺無關(guān)的加速器設(shè)計效率。
表3 與其它工作的性能對比
由于本文采用的FPGA板上資源數(shù)較少,加速器的吞吐量低于表中前兩項工作,但從表中的最后4行可以看出,無論是BRAM效率、DSP效率、性能密度還是功耗效率,本文都明顯優(yōu)于其它工作,并且滿足了低功耗的需求。
本文針對VSLAM系統(tǒng)中的SuperPoint模型,提出了一種基于16位動態(tài)定點量化的CNN加速器并構(gòu)建了包含ARM處理器在內(nèi)的SoC系統(tǒng)。通過循環(huán)分塊、數(shù)據(jù)復(fù)用、計算單元展開、雙緩沖策略提高了片上資源利用率,并提出了在不同類型圖層間復(fù)用片上緩存。為提高突發(fā)傳輸帶寬,采用了多個通道傳輸,提出了Pack模塊和Unpack模塊,并預(yù)先重排數(shù)據(jù)增加了突發(fā)傳輸長度。整個SoC系統(tǒng)部署在Ultra96-V2平臺上達(dá)到了可觀的吞吐量,并滿足了低功耗需求,為VLSAM系統(tǒng)在FPGA上的部署提供了新的思路。