日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5位无符号阵列乘法器设计_可变位宽的大规模矩阵乘法方法

發布時間:2025/4/16 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5位无符号阵列乘法器设计_可变位宽的大规模矩阵乘法方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

本文介紹了一種數據位寬可變的乘法方法,由于避免了DSP的使用,可以充分利用LUT資源,在DSP數量少的芯片上也可以獲得很高的計算量。這種方法更適合大矩陣乘法,矩陣越大,計算效率就會越高。

01

可變位寬乘算法

方法其實很簡單,就是利用數據的二進制表示方法。一個有符號二進制數,用二進制表示為:

這樣就將矩陣中每個數都分解成1bit數和一個權重數相乘的形式,而這個權重是2的冪次,在FPGA中可以通過簡單移位操作來實現。論文中給出了一個簡單的例子,求兩個2x2矩陣的乘法,數據位寬為2bit。如下圖1.1所示:首先將每個矩陣分解成兩個矩陣之和,然后通過因式分解分別計算4個1bit矩陣乘法,然后根據權重大小進行移位操作,再求和。乘法只是1bit數,僅僅通過與操作就可以完成了,完全不需要乘法器。但是這樣做也有一個缺點,就是延遲變大了。所以對于特大矩陣乘法來說,這些延遲可以通過增加計算量來彌補。以上方式用偽代碼可以表示為圖1.2。將這種方法進行推廣,可以想到用4進制,8進制來進行數據表示,這樣對于較大位寬數據來說可以降低延時。但是這樣的低價就是增加了LUT資源。比如對于4進制表示,乘法數據為2bit,這個就會需要更多LUT來完成了。如果表示進制更高,比如16進制,那么用乘法器實現就更合適了。但是這無疑給我們提供了一種可變位寬乘法的設計思路。

圖1.1 2x2矩陣乘法分解過程

圖1.2 可變位寬乘法算法

02

硬件架構

整體框架如圖2.1所示,基本包括三部分:fetch,execute,result。

Fetch包含一個簡單的DMA引擎,以及一個數據讀取調度器,主要用于從DDR中獲得指令和數據。數據被放于片上緩存中,片上緩存和計算單元通過大量走線互聯,走線的帶寬受到了DDR帶寬的限制,而走線帶寬取決于計算單元的算力。論文中參數化了這三個變量,可以根據不同平臺來進行適配。

圖2.1 硬件架構

Execute是最核心的計算單元,這部分由基本的DPU構成。DPU是專門處理數據乘法和累加的單元,這些DPU相互連接成二維平面結構,專門用于處理矩陣乘法。DPU結構主要由一個與門,求和,移位寄存器,累加器組成。與門和求和結構用于計算1bit矩陣乘法,移位寄存器用于乘以權重系數,累加器是用于大矩陣求和。一個大矩陣乘法是被分塊的,然后每塊乘法是用矩陣列x行的形式,這樣計算陣列中的每行和每列對應的bufer中的數據都是被多次利用的,并且以廣播形式傳播到各個單元。這種方式增加了矩陣數據利用率,能夠到達緩解搬運帶寬。這方面計算還可以參見文章《在DNN中FPGA做了什么?》每個計算單元都會出來一個最終結果,這些結果通過并串轉換分別進入result buffer。

圖2.2 計算結構

Result結構和fetch類似,只不過是寫入DDR。也是通過DMA引擎來控制對DDR寫入。

接下來介紹論文中指令架構,指令也是依據三種結構來設計成對應指令:fetch,execute,result。創新點主要在指令的pipeline設計上。其通過引入“鎖”的機制來實現不同指令之間的依賴關系。用wait來阻塞下一條指令的執行,而用signal來接觸wait,觸發下一條指令執行。三種指令主要是fetch和result相對于execute的依賴。如果fetch完成,execute可以執行,在執行的同時,fetch可以讀取下一次要用的數據,通過這樣的流水來減少execute的等待時間。用一個簡單過程來說明,如圖2.3所示:首先execute進入等待,直到fetch了L和R矩陣數據,此時通過signal來觸發execute的執行。當execute執行L*R的同時,fetch不需要等待,可以進一步下載數據。而在沒有生成最終矩陣數據結果之前,result一直處于等待中,直到完成矩陣運算,execute通過signal來觸發result的執行。

圖2.3 指令依賴關系

03

結果

矩陣大小對計算效率影響很大,矩陣越大,那么矩陣元素的復用率就高,所以計算效率也越高。

圖3.1 計算效率和矩陣大小k以及數據位寬D_k關系

資源利用和峰值算力如圖3.2,最大算力達到了3.2TOPS。主要對片上BRAM使用較多,這也是矩陣計算中受到限制的重要因素,因為通常限制計算的都是片上緩存以及帶寬。

圖3.2 資源利用

還有功耗估計如圖3.3所示。

圖3.3 功耗

總結

論文提出了一種可變位寬的計算矩陣乘法的方法,通過串行計算乘法來實現。這對于大規模矩陣乘計算比較有優勢,但是對于較小矩陣或者數據位寬較大的乘法來說,效率會比較差。所以這種方法就當做是提供了一種可變bit乘法的思路。

文獻

1. Yaman Umuroglu, L.R., Magnus Sjalander, BISMO: A Scalable Bit-Serial Matrix Multiplication Overlay for Reconfigurable Computing. arXiv preprint, 2018. 18

往期回顧

1. 在DNN中FPGA做了什么?

2. 稀疏LSTM硬件架構

總結

以上是生活随笔為你收集整理的5位无符号阵列乘法器设计_可变位宽的大规模矩阵乘法方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。