基於fpga的通用矩陣浮點乘法器的製作方法
2023-10-20 00:31:37
專利名稱:基於fpga的通用矩陣浮點乘法器的製作方法
技術領域:
本發明涉及的是 一 種微處理器技術領域的乘法器,具體是 一 種基於 FPGA (Field-Programmable Gate Array的縮寫,現場可編程門陣列)的通用矩陣浮點乘法 器。
背景技術:
矩陣乘法操作是科學計算中的一個基本操作,在工業控制、模式識別、數位訊號處 理等領域廣泛存在,特別是在可攜式設備中,經常涉及模式識別、圖像處理的操作,這些操 作都是有大量的矩陣運算來完成的,而可攜式設備通常計算配置較低,矩陣乘法也就稱為 計算過程中最為耗時的關鍵操作。矩陣乘法的時間複雜度較高,通常為0(N3),其計算性能 直接影響系統的整體性能。 以前的矩陣乘法器通常採用通用數位訊號處理器(Digital Signal Processor, DSP)實現。DSP具有技術成熟,實現工具完善、編程簡單等優點,但由於其內部結構的限制, 在進行計算時經常會出現緩存(Cache Miss)撲空等現象,影響計算性能。基於DSP技術的 涉及通常持續時間只能維持在其峰值計算性能的10% 33%,無法取得很高的計算性能。
近年來的FPGA技術取得了飛速發展,已經從最初只能面向純邏輯代替的應用轉 變為能夠面向複雜的計算密集型應用。最新的FPGA器件,不僅邏輯資源門極其豐富,而且 還包括了大量面向高計算性能的DSP單元、塊狀RAM(Block RAM,BRAM)等。同時為方便FPGA 的調試,各FPGA廠商還提供了各種片內邏輯分析工具(如Xilinx公司的ChipScope),在軟 硬體上均保證了 FPGA實現高性能計算的可能性。 經對現有文獻檢索發現,中國專利申請號為200710069954. 8,名稱為基於單 FPGA的矩陣乘法器裝置,該技術包括P2個計算單元PE,由P2個計算單元PE排列形成的P 行X P列的PE陣列,數據輸入輸出接口和數據預處理單元。但是該技術邏輯資源消耗太高, 每一個浮點向量乘法器單元要消耗多個DSP48和FIFO單元,對於晶片要求太高,導致成本 增加,且不利於實際應用。
發明內容
本發明的目的在於克服現有技術的上述不足,提供一種基於FPGA的通用矩陣浮 點乘法器。本發明採用並行流水線結構,可以進行任意維數的矩陣浮點乘法運算,並且多個 矩陣浮點乘法器可以並行工作,進一步提高計算效率和計算精度。
本發明是通過以下技術方案實現的 本發明包括若干並行的矩陣浮點乘法器,每個矩陣浮點乘法器包括控制管理 模塊、運算模塊和存儲模塊,其中控制管理模塊與運算模塊相連傳輸累加器清零信號,控 制管理模塊與存儲模塊相連傳輸數據地址信號和結果有效信號,運算模塊與存儲模塊相連 傳輸待運算數據信號和運算結果信號。 所述的控制管理模塊生成控制信號以控制運算模塊和存儲模塊,該模塊包括數據地址控制子模塊、結果有效控制子模塊和累加器清零控制子模塊,其中數據地址控制子
模塊與存儲模塊相連傳輸數據地址控制信號,結果有效控制子模塊與存儲模塊相連傳輸結
果有效信號,累加器清零控制子模塊與運算模塊相連傳輸累加器清零信號。
所述的運算模塊執行矩陣數據的乘法和累加操作,該模塊包括乘法器、浮點_定
點轉換器、累加器和定點-浮點轉換器,其中乘法器與存儲模塊相連傳輸待運算數據信
號,累加器與控制管理模塊相連傳輸累加器清零信號,乘法器與浮點_定點轉換器相連傳
輸浮點乘法信號,浮點_定點轉換器與累加器相連傳輸定點乘法信號,累加器與定點_浮點
轉換器相連傳輸浮點累加信號,定點_浮點轉換器與存儲模塊相連傳輸運算結果信號。 所述的存儲模塊緩存待運算矩陣的數據和結果矩陣的數據,並提供總線訪問接口
使外部其他設備與本發明裝置進行數據交換,該模塊包括乘數矩陣存儲單元、被乘數矩陣
存儲單元、結果矩陣存儲單元、總線數據接口和內部數據接口,其中乘數矩陣存儲單元與
控制管理模塊相連傳輸乘數地址信號,被乘數矩陣存儲單元與控制管理模塊相連傳輸被乘
數地址信號,結果矩陣存儲單元與控制管理模塊相連傳輸結果有效信號,乘數矩陣存儲單
元分別與總線數據接口和內部數據接口相連傳輸待運算的乘數信息,被乘數矩陣存儲單元
分別與總線數據接口和內部數據接口相連傳輸待運算的被乘數信息,結果矩陣存儲單元分
別與總線數據接口和內部數據接口相連傳輸運算結果信息,總線數據接口與外部其他設備
相連傳輸待運算的乘數信息、待運算的被乘數信息和運算結果信息,內部數據接口與運算
模塊相連傳輸待運算的乘數信息、待運算的被乘數信息和運算結果信息。 本發明的工作過程 步驟A,將待運算的數據通過總線數據接口寫入存儲模塊; 步驟B,向控制管理模塊提供矩陣維數信息,並給出開始運算信號; 步驟C,控制管理模塊將矩陣乘法分解為多個向量內積的過程,並生成周期性控制
信號,發送給運算模塊和存儲模塊; 步驟D,運算模塊根據控制信號讀取數據,進行浮點乘法和累加運算,存儲模塊根 據控制信號將運算結果寫入緩存; 步驟E,控制管理模塊生成運算結束信號,總線設備從存儲模塊中讀出運算結果。
與現有技術相比,本發明的有益效果是每個矩陣浮點乘法器之間相互獨立,可同 時運算,互不影響,計算的時間大大減小,且計算的精度高達10—4,效率提高十倍以上,且裝 置簡單,成本低。
具體實施例方式
以下對本發明的實施例作進一步描述本實施例在以本發明技術方案為前提下進 行實施,給出了詳細的實施方式和具體的操作過程,但本發明的保護範圍不限於下述的實 施例。 實施例 本實施例採用Xilinx的Virtex IV(XC4VFX12-10-ffg668)晶片實現兩個15X 15 的矩陣的浮點乘法運算。 本實施例包括四個並行的矩陣浮點乘法器,每個矩陣浮點乘法器包括控制管 理模塊、運算模塊和存儲模塊,其中控制管理模塊與運算模塊相連傳輸累加器清零信號,控制管理模塊與存儲模塊相連傳輸數據地址信號和結果有效信號,運算模塊與存儲模塊相 連傳輸待運算數據信號和運算結果信號。 所述的控制管理模塊生成控制信號以控制運算模塊和存儲模塊,該模塊包括數
據地址控制子模塊、結果有效控制子模塊和累加器清零控制子模塊,其中數據地址控制子
模塊與存儲模塊相連傳輸數據地址控制信號,結果有效控制子模塊與存儲模塊相連傳輸結
果有效信號,累加器清零控制子模塊與運算模塊相連傳輸累加器清零信號。 本實施例中控制管理模塊由XC4VFX12-10-ffg668晶片的數字邏輯電路實現。
所述的運算模塊執行矩陣數據的乘法和累加操作,該模塊包括乘法器、浮點_定
點轉換器、累加器和定點-浮點轉換器,其中乘法器與存儲模塊相連傳輸待運算數據信
號,累加器與累加器清零控制模塊相連傳輸累加器清零信號,乘法器與浮點_定點轉換器
相連傳輸浮點乘法信號,浮點-定點轉換器與累加器相連傳輸定點乘法信號,累加器與定
點-浮點轉換器相連傳輸浮點累加信號,定點-浮點轉換器與存儲模塊相連傳輸運算結果信號。 本實施例中運算模塊由XC4VFX12-10-ffg668晶片的DSP運算單元實現。 所述的存儲模塊緩存待運算矩陣的數據和結果矩陣的數據,並提供總線訪問接口
使外部其他設備與本發明裝置進行數據交換,該模塊包括乘數矩陣存儲單元、被乘數矩陣
存儲單元、結果矩陣存儲單元、總線數據接口和內部數據接口,其中乘數矩陣存儲單元與
數據地址控制子模塊相連傳輸乘數地址信號,被乘數矩陣存儲單元與數據地址控制子模塊
相連傳輸被乘數地址信號,結果矩陣存儲單元與結果有效控制子模塊相連傳輸結果有效信
號,乘數矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸待運算的乘數信息,
被乘數矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸待運算的被乘數信息,
結果矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸運算結果信息,總線數據
接口與外部其他設備相連傳輸待運算的乘數信息、待運算的被乘數信息和運算結果信息,
內部數據接口與乘法器相連傳輸待運算的乘數信息和待運算的被乘數信息,內部數據接口 與定點_浮點轉換器相連傳輸運算結果信息。 本實施例中存儲模塊由XC4VFX12-10-ffg668晶片的Block-RAM實現。
本實施例的工作過程具體是
1、復位後實施例裝置處於空閒狀態; 2、實施例裝置等待總線設備將待運算數據寫入存儲模塊; 3、實施例裝置等待總線設備將矩陣維數和是否需要轉置信息發送給控制管理模 塊,並給出開始運算信號; 4、控制管理模塊收到開始運算信號後,根據矩陣的維數信息,將待運算矩陣拆分 成15個行向量或列向量的組合,以向量為單位將數據交由運算模塊進行乘加運算;
5、由控制管理模塊給出運算使能信號,運算開始後,運算模塊不斷讀入數據,進行 乘法累加運算; 6、當一組數據計算完畢以後,輸出計算結果,並將累加器清零; 7、運算模塊判斷是否有新的數據需要計算,如有,則轉到運算狀態;否則,轉到空 閒狀態; 8、向量運算結束後,控制管理模塊發出結果有效信號,控制存儲模塊寫入計算結果; 9、全部運算完成以後,控制管理模塊生成運算結束信號,乘法器回復到空閒狀態。
當採用現有的FPGA的FPU (Float Process Unit)處理該矩陣乘法要96341時鐘 周期,而採用本實施例裝置則需要8784個時鐘周期,並且計算精度可達10—4,又通過對各種 維數的矩陣進行對比運算,發現採用本實施例裝置比採用FPU計算矩陣乘法的效率普遍高 十倍以上。
權利要求
一種基於FPGA的通用矩陣浮點乘法器,其特徵在於,包括若干並行的矩陣浮點乘法器,每個矩陣浮點乘法器包括控制管理模塊、運算模塊和存儲模塊,其中控制管理模塊與運算模塊相連傳輸累加器清零信號,控制管理模塊與存儲模塊相連傳輸數據地址信號和結果有效信號,運算模塊與存儲模塊相連傳輸待運算數據信號和運算結果信號。
2. 根據權利要求1所述的基於FPGA的通用矩陣浮點乘法器,其特徵是,所述的控制管理模塊生成控制信號以控制運算模塊和存儲模塊,該模塊包括數據地址控制子模塊、結果有效控制子模塊和累加器清零控制子模塊,其中數據地址控制子模塊與存儲模塊相連傳輸數據地址控制信號,結果有效控制子模塊與存儲模塊相連傳輸結果有效信號,累加器清零控制子模塊與運算模塊相連傳輸累加器清零信號。
3. 根據權利要求1所述的基於FPGA的通用矩陣浮點乘法器,其特徵是,所述的運算模塊執行矩陣數據的乘法和累加操作,該模塊包括乘法器、浮點_定點轉換器、累加器和定點-浮點轉換器,其中乘法器與存儲模塊相連傳輸待運算數據信號,累加器與控制管理模塊相連傳輸累加器清零信號,乘法器與浮點_定點轉換器相連傳輸浮點乘法信號,浮點_定點轉換器與累加器相連傳輸定點乘法信號,累加器與定點_浮點轉換器相連傳輸浮點累加信號,定點_浮點轉換器與存儲模塊相連傳輸運算結果信號。
4. 根據權利要求1所述的基於FPGA的通用矩陣浮點乘法器,其特徵是,所述的存儲模塊緩存待運算矩陣的數據和結果矩陣的數據,並提供總線訪問接口使外部其他設備與本發明裝置進行數據交換,該模塊包括乘數矩陣存儲單元、被乘數矩陣存儲單元、結果矩陣存儲單元、總線數據接口和內部數據接口 ,其中乘數矩陣存儲單元與控制管理模塊相連傳輸乘數地址信號,被乘數矩陣存儲單元與控制管理模塊相連傳輸被乘數地址信號,結果矩陣存儲單元與控制管理模塊相連傳輸結果有效信號,乘數矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸待運算的乘數信息,被乘數矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸待運算的被乘數信息,結果矩陣存儲單元分別與總線數據接口和內部數據接口相連傳輸運算結果信息,總線數據接口與外部其他設備相連傳輸待運算的乘數信息、待運算的被乘數信息和運算結果信息,內部數據接口與運算模塊相連傳輸待運算的乘數信息、待運算的被乘數信息和運算結果信息。
全文摘要
一種計算機微處理器設計技術領域的基於FPGA的通用矩陣浮點乘法器,包括若干並行的矩陣浮點乘法器,每個矩陣浮點乘法器包括控制管理模塊、運算模塊和存儲模塊,其中控制管理模塊包括數據地址控制子模塊、結果有效控制子模塊和累加器清零控制子模塊;運算模塊包括乘法器、浮點-定點轉換器、累加器和定點-浮點轉換器;存儲模塊包括乘數矩陣存儲單元、被乘數矩陣存儲單元、結果矩陣存儲單元、總線數據接口和內部數據接口。本發明中每個矩陣浮點乘法器之間相互獨立,可同時運算,互不影響,計算的時間大大減小,且計算的精度高達10-4,效率提高十倍以上,且裝置簡單,成本低。
文檔編號G06F7/57GK101794210SQ20101013987
公開日2010年8月4日 申請日期2010年4月7日 優先權日2010年4月7日
發明者蘭建, 席裕庚, 李德偉, 楊楠, 王立禾, 韓慧婷 申請人:上海交通大學