應用於CNN中卷積運算的LUT乘法器設計

2020-12-08 電子發燒友

應用於CNN中卷積運算的LUT乘法器設計

AI加速微信公眾號 發表於 2020-11-30 11:45:21

卷積佔據了CNN網絡中絕大部分運算,進行乘法運算通常都是使用FPGA中的DSP,這樣算力就受到了器件中DSP資源的限制。比如在zynq7000器件中,DSP資源就較少,神經網絡的性能就無法得到提升。利用xilinx器件中LUT的結構特徵,設計出的乘法器不但能靈活適應數據位寬,而且能最大限度降低LUT資源使用。

Xilinx ultrascale器件LUT結構
在這裡簡要介紹一下ultrascale系列器件中的LUT結構,有助於後邊對乘法器設計思路的理解。CLB(configuratble logic block)是主要的資源模塊,其包含了8個LUT,16個寄存器,carry邏輯,以及多路選通器等。其中LUT可以用作6輸入1輸出,或者兩個5輸入LUT,但是這兩個LUT公用輸入,具有不同輸出。每個LUT輸出可以連接到寄存器或者鎖存器,或者從CLB輸出。LUT可以用於64x1和32X2的分布式RAM,一個CLB內最大可以支持512X1大小的RAM。RAM的讀寫地址和輸入的讀寫數據是共享的,數據通道可以使用x和I接口。LUT還可以配置用於4:1選通器,CLB最大能夠支持到32:1的選通器。CLB中的carry邏輯含有異或門和產生進位的門,用於生成進位數據。

 

 

圖1.1 LUT結構

LUT還可以被動態配置成32bit移位寄存器,這個功能在乘法器設計中可以用於改變乘法器的乘數和被乘數。在寫入LUT數據的時候,每個時鐘周期從D接口進入數據,依次寫入32bit數據。讀數據的時候,可以通過地址來定位任何32bit中的數據。這樣就可以配置成任何小於32bit的移位寄存器。移位輸出Q31可以進入下一級LUT用於串聯產生更大移位寄存器。在一個CLB中最大可以串聯產生256bit移位寄存器。

 

 

圖1.2 移位寄存器配置

LUT乘法器原理
首先假設我們處理整數乘法,小數乘法也可以用這樣的方法。基本思想就是將m bit大小的數據進行分割表示:

 

 

這樣就將兩個數據乘法分解成低bit數據乘法,結果是一個常數K和di相乘,然後再進行移位求和。M bit數據分解後的低bit數據位寬通常都適配LUT輸入寬度,這樣能最大利用LUT資源。現在乘法只有K*di,由於bit位寬較小,這部分可以用LUT查找表的形式來。預先將0K到(2^q-1)K的數據存儲到LUT中,然後通過di來選擇對應的數據。如果是負數乘法,那麼數據使用補碼表示,那麼LUT中存儲的數據是從-2^(q-1)K到(2^(q-1)-1)K。針對以上介紹的ultrascale器件的LUT6,q可以選擇為5。但是在本論文中使用的是LUT4器件,其只有4輸入,因此選擇了q=3,為什麼沒有選擇4呢?另外1bit是為了用於半加器的實現。

基本結構
實現上述累加的方法有很多種,論文中採用了進位鏈加法器。圖2.1中是m bit和n bit數據乘法,每個E結構計算di*K,並且和上一個結構求和,輸出的低3bit直接作為最終結果,而n bit傳輸到下一級進行計算。q=3的計算單元E有[m/3]個。K*di是有n+3bit的查找表實現的。查找表的結果由di選擇,然後再通過一個求和器和之前數據求和。這是一個最基本的結構,論文又針對這個結構做了優化,用一個LUT同時實現了一個查找表和半加器。具體來講,其中3bit輸入用於di,還有1bit用於上一次輸出,LUT中存放數據是di*K和上一次結果第j bit的半加結果,實際上是第j bit數據LUT中結果的異或。而進位數據由CLB中相應的carry邏輯來計算。相比於粗暴的進行數據求和,這樣精確的來控制LUT能夠大大節省資源。

 

 

圖2.2 LUT實現乘法和半加,外圍carry邏輯實現進位

動態配置LUT內容
Xilinx的LUT結構允許在運行過程中改變LUT中的內容,這樣的乘法器就能改變被乘數據K。這可以實現在神經網絡計算中需要更新權重參數。論文中使用的是LUT4,所以一個LUT可以被配置成16bit移位寄存器。通過這16bit寄存器可以來配置LUT中的內容,每個時鐘周期更新1bit數據,16個時鐘周期可以完成一個LUT中數據更新。是否進行LUT內容更新通過CE使能信號控制。

如何產生LUT中數據的值呢?如果上一次輸出數據對應bit為0,那麼LUT中就存放0*K到7*K的值,如果上一次對應bit為1,那麼存放值為對以上數據取反。圖4.1表示了獲得LUT中內容的電路圖。首先數據被初始化為0*K,下一次對應著求和進位為1的情況,取反,然後再加K得到1*K的值,這樣每隔兩個時鐘周期就得到下一個乘法的數據值,依次對LUT進行更新。上述中針對的是正整數,如果對於負數乘法更新,可以在上述求整數乘法的電路基礎上做一下改進,如圖4.2。當最高位為0的時候,輸出結果就是之前求得的乘法結果。如果最高位是1,那麼負數的補碼表示是乘法的原碼結果減去最高位數值。

 

 

圖4.2 負數乘法結果更新電路

結果分析
最後我們來看看這種乘法器的實現效果,圖5.1表示對多級進位不適用pipeline結構的時鐘頻率隨著被乘數K位寬變化,可以看到隨著級數E的增加,頻率降低很多,這主要是進位鏈邊長導致。而隨著K位寬增加,頻率也有降低,這主要是因為實現di*K乘法的LUT資源增加導致。

 

 

圖5.1 沒有pipeline下頻率MHz

圖5.2是不同乘法位寬下的使用slice數量。論文中考慮了兩種極端情況,一種是完全pipeline下,即每級計算單元都經過寄存器,另外一種是完全沒有pipeline,所有級E都是串聯。

 

 

圖5.2 slice資源

結論
上述通過LUT來設計乘法器的方法,可以應用於CNN中的卷積運算當中,因為權重可以被當做被乘數,用於LUT內容的配置,在更換權重時,可以對LUT內容更新,這樣就能避免了DSP資源的限制,不失為一種增加算力的方法。

文獻
1. Hormigo, J.C., Gabriel Oliver, Juan P.Boemo, Eduardo, Self-Reconfigurable Constant Multiplier for FPGA. ACM Transactions on Reconfigurable Technology and Systems, 2013. 6

編輯:hfy

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於FPGA的高速流水線浮點乘法器設計與實現
    3.1 指數處理模塊(E_Adder)設計  32位浮點數格式如文獻【2】中定義。對於32位的浮點乘法器而言,其指數為8位,因而 本設計採用帶進位輸出的8位超前進位加法器完成指數相加、去偏移等操作,具體過程如下。
  • 使用verilogHDL實現乘法器
    本文採用Verilog HDL語言來設計實現4-2和5-2混合壓縮器構成的乘法器的設計,並與另外實現的兩種乘法器從速度,面積和硬體資源佔用率等方面進行了性能比較,得出用這種改進壓縮器要比兩位陣列乘法器和傳統的4-2壓縮器構成的乘法器速度提高了10%,硬體資源佔用減少了2%。 2 兩位陣列乘法器 陣 列乘法器基於移位與求和算法。
  • 一位中國博士把整個CNN都給可視化了,可交互有細節,每次卷積ReLU...
    而且,這個網頁工具還可以實現交互,只要點擊其中任何一個格子——就是CNN中的「神經元」,就能顯示它的輸入是哪些、經過了怎樣細微的變化。甚至,連每一次卷積運算都能看得清。看清卷積這個CNN解釋器的使用方式也非常簡單:滑鼠戳戳戳就好了。
  • 一種基於存儲的乘法器查找表的近似優化方法
    0 引言  基於存儲的乘法器的工作原理是利用乘法係數(乘數)固定的特性,將所有輸入(被乘數)會產生的可能乘法結果預存儲在LUT中。如此,乘法運算過程轉換為了從LUT中讀取數據的過程,因此基於存儲的乘法器無論在運算速度還是動態功耗上相較於傳統的乘法器都有著顯著的優勢。
  • 【HDL系列】乘法器(4)——圖解Wallace樹
    參考往期文章《進位保存加法器原理與設計》以下是加數W1-W39的Wallace結構例子:                加法樹:來自《A Suggestion for a FastMultiplier》在乘法器中,乘法的積為許多個部分和之和。Wallace結構可以加快乘法器的計算速度。
  • 加法器和乘法器簡介及設計
    加法器和乘法器屬於數據通道部分。 一般對數據通道有如下要求:首先是規整性以優化版圖,其次是局域性(時間、空間,算子相鄰布置)以使版圖緊湊,正交性(數據流、控制流)以便規整布線,另外還需要層次化和模塊化。
  • 數字掃頻儀中衰減電路設計
    數字掃頻儀中衰減電路設計 馬知遠,範 越,鄧 發表於 2011-05-27 10:20:33     數字掃頻儀在現代電子教學實驗和工業測量中應用廣泛,它是一種專門用於測量電子設備中某些電路頻率特性的專用儀器
  • 四象限乘法器/除法器在伽瑪相機中的應用
       1AD734的基本結構及功能  AD734是一個高精度、高速四象限模擬乘法器/除法器,他與符合工業標準的模擬乘法器/除法器AD534引腳互相兼容,其傳遞函數為W=XY/U。他具有以下特點:  (1) 高精度:0.1%的典型誤差。
  • mc1496模擬乘法器構成的調幅器電路圖
    打開APP mc1496模擬乘法器構成的調幅器電路圖 本站 發表於 2009-03-22 11:25:35 mc1496模擬乘法器構成的調幅器電路圖MC1496
  • 數學運算(二)——無符號數乘法器結構
    數學運算(一)—— 無符號數加法器數學運算(二)——無符號數乘法器結構數學運算(三)——無符號數除法器(待更)
  • cnn.com網站被封
    cnn.com網站被封 美亞 00年10月19日 【原創】 作者: 中關村在線     CNN(美國有線電視新聞網)是全球最大也是最盈利的新聞機構之一,在全球有非常高的知名度
  • 在多目標識別方面,maskr-cnn已經取得了一些進展
    maskr-cnn是業界首款實用的全卷積神經網絡模型,為計算機視覺中的多目標識別與自動對焦,開創性的成為計算機視覺發展的新方向。無論是基於計算機視覺的自動對焦系統、模式識別系統,還是圖像識別,maskr-cnn都是有標誌性意義的。它強調平滑準確的計算輸入、檢測框和定位點,訓練過程與特徵提取過程採用多級感受野融合技術進行自動優化提高目標解析度及精度,以及做出精度更高的語義推理判斷。
  • 基於FPGA的24點離散傅立葉變換結構設計
    模塊僅僅需要14個實數乘法器,布局布線後仿真工作時鐘頻率可達200 MHz。離散傅立葉變換(Discrete Fourier Transform,DFT),尤其對應的快速傅立葉變換(Fast Fourier Transform,FFT),是數位訊號處理中的一種基本變換。基於FPGA的FFT設計和實現是眾多應用中的一個重要環節,是眾多FPGA晶片廠商和研究工作者一直致力研究的內容。
  • EdgeBoard多並發高性能通用CNN架構剖析
    2.3 卷積計算加速單元的設計思路作為CNN網絡中比重最大、最為核心的卷積計算加速單元,是CNN軟核性能加速的關鍵,也佔用了FPGA晶片的大部分算力分配和邏輯資源消耗。下面將針對EdgeBoard卷積計算加速單元的設計思路進行簡要介紹,此章節也是理解CNN軟核算力彈性配置的技術基礎。
  • 使用跨導運算放大器的乘法器除法器
    使用跨導運算放大器的乘法器除法器
  • 應用於手機中的WLAN三頻帶天線設計解析
    打開APP 應用於手機中的WLAN三頻帶天線設計解析 工程師2 發表於 2018-05-03 11:10:00 即在極為有限的空間內設計出符合要求的天線,這使得天線的設計難度增大。微帶天線由於其尺寸小、低剖面、質量輕、易加工、成本低等特點,在手機中被廣泛應用。人們根據微帶天線的特性,進行一系列的改進。包括利用共面波導饋電,多層結構,縫隙加載技術來實現帶寬增加和天線尺寸減小。
  • 基於小波變換的視頻應變測量系統設計與實現
    實際中通常採用機械式引伸計夾持在工件上,對工件施加載荷的同時進行測量。在材料拉伸試驗的背景下,設計並採用視頻應變測量系統間接測量材料拉伸試驗中實時變化的應變。該應變測量系統既要滿足試驗的測量精度,又要保證測量的實時性。文中在材料拉伸試驗應變測量的精密邊緣檢測算[2,3]法進行了深入研究,在成熟的小波變換理論下,創新地將小波變換期望亞像素算法應用於視頻應變測量系統設計中。
  • 計算機輔助設計如何應用於山地光伏項目中
    原標題:計算機輔助設計如何應用於山地光伏項目中   山地光伏電站不同於荒漠大型地面電站。
  • 入門| CNN也能用於NLP任務,一文簡述文本分類任務的7個模型
    lr_word = LogisticRegression(solver= 'sag', verbose= 2) lr_word.fit(tfidf_matrix_word_train, y_train) 一旦訓練好模型後,就可以將其應用於測試數據以獲得預測值。