《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 浮點矩陣相乘IP核并行改進的設計與實現
浮點矩陣相乘IP核并行改進的設計與實現
來源:電子技術應用2012年第2期
張國禮,王建業,肖 宇
空軍工程大學 導彈學院,陜西 三原713800
摘要: 基于Altera浮點IP核實現浮點矩陣相乘運算時,由于矩陣階數的增大,造成消耗的器件資源雖增加但系統性能反而下降的問題,針對現有IP核存在數據加載不連貫、存儲帶寬不均勻的不足,提出采用并行化數據存儲、依據查找表加載數據和處理數據的方式對IP核進行改進。然后將改進的浮點矩陣運算在FPGA中實現,經過Quartus、Matlab軟件聯合仿真并進行結果比對,其誤差不超過萬分之一,且節省了器件資源、提升了系統性能。仿真結果表明該設計可行,有利于提高諸多高性能領域浮點矩陣的運算速度。
中圖分類號: TN47
文獻標識碼: A
文章編號: 0258-7998(2012)02-0043-04
The design and implementation of IP-core parallel improvement in floating-point matrix multiplication
Zhang Guoli,Wang Jianye,Xiao Yu
Missile Institute,Air Force Engineering University,Sanyuan 713800,China
Abstract: This Paper is based on the problem of increasing appliance resource consumed and decreasing systematic performance with the increasing of matrix ranks when floating IP-Core of Altera is carrying out the floating-matrix multiplication. With the aim to making up with the shortcomings of incoherent of IP-Core’s data-loading and less-regularity of memory bandwidth, we take measures such as parallelizing data storage, loading and dealing with data in the LUT to improve the IP core. Then we realize the improved floating-matrix operation by FPGA, as well as emulate it by Quartus and Matlab software. Compared with the results we can find that the error is less than one ten thousandth, the appliance resource is saved off and the systematic performance is improved. The simulation investigates that the design is feasibility and it is profitable in many high-level fields.
Key words : floating-point matrix multiplication;embedded;IP-core;FPGA

    嵌入式計算作為新一代計算系統的高效運行方式,應用于多個高性能領域,如陣列信號處理、核武器模擬、計算流體動力學等。在這些科學計算中,需要大量的浮點矩陣運算。而目前已實現的浮點矩陣運算是直接使用VHDL語言編寫的浮點矩陣相乘處理單元[1],其關鍵技術是乘累加單元的設計,這樣設計的硬件,其性能依賴于設計者的編程水平。此外,FPGA廠商也推出了一定規模的浮點矩陣運算IP核[2],雖然此IP核應用了本廠家的器件,并經過專業調試和硬件實測,性能穩定且優于手寫代碼,但仍可對其進行改進,以進一步提高運算速度。

1 Altera浮點矩陣相乘IP核原理
    Altera公司推出的浮點矩陣相乘IP核ALTFP_MATRIX_MULT,是在Quartus軟件9.1版本以上的環境中使用,能夠進行一定規模的浮點矩陣相乘運算,包含A、B矩陣數據輸入,數據浮點乘加,數據緩存及相加輸出四大部分。其中最能體現浮點計算性能的是浮點乘加部分,而周圍的控制電路及輸出則影響到系統的最高時鐘頻率,間接地影響系統整體性能。
    整個矩陣相乘電路原理是將輸入的單路數據(A、B矩陣共用數據線),通過控制器產生A、B矩陣地址信號,控制著A矩陣數據輸出和B矩陣數據輸出,并將數據并行分段輸出到浮點乘加模塊進行乘加運算,之后串行輸出到一個緩存器模塊中,再以并行方式輸出到浮點相加模塊,最后獲得計算結果。從其原理可以看出,在數據輸入輸出方面仍有許多可改進的地方。
2 IP核存在的缺陷及改進
2.1 存在缺陷
    (1)輸入數據帶寬的不均衡性。在矩陣A、B的數據輸入時,Altera的IP核將A矩陣數據存于M144K的Block RAM中,而將B矩陣數據存于M9K的Block RAM中,導致IP核中A矩陣數據的帶寬小于B矩陣數據的帶寬,并需要一定數量的寄存器組使A矩陣數據帶寬能夠匹配于B矩陣數據帶寬。由此可見,A、B矩陣數據的存儲受到器件限制和存儲約束,同時由于在浮點乘加模塊的輸入端(A、B矩陣數據)帶寬不同,造成A矩陣數據的輸入需要額外的處理時間。
    (2)加載數據的不連貫性。在矩陣數據加載時,IP核通過將數據分段成等分的幾部分,用于向量相乘。由于矩陣A存儲帶寬窄需要4步寄存(由Blocks決定),在第3個周期時才加載數據B用于計算,送到一個FIFO中存儲;在第6個時鐘周期時加載矩陣A分段的第二部分進行各自的第二部分計算,最后當計算到第15個周期時,才可通過浮點相加,計算出矩陣C的第一個值,之后計算出矩陣C的其他值C11。從上述結構可見,在分段相乘之后,采用先對一個FIFO進行存儲,存滿后再對下一個數據FIFO進行存儲,造成時間上浪費過多。
2.2 設計改進
    鑒于上述缺陷,在輸入A、B矩陣的存儲方式上,進行串行輸入到并行輸入的改進,使得兩個矩陣能同步輸入到浮點乘加模塊。在數據加載方式上,將A矩陣用3個周期加載完畢,再處理相乘運算;將分段相乘結果進行直接存儲相加,獲得C矩陣的第一個值,縮減運算時間。設計的改進框圖如圖1所示。


    將A、B矩陣數據加載模塊設計成同步加載的方式,即在loadaa為高電平時,對A的第一組數據進行初始化,加載到雙口RAM模塊存儲;在loadbb為高電平時,加載B矩陣的數據,也進行雙口RAM存儲。然后依據ROM存儲的地址信號表,在控制模塊的控制下輸出A、B矩陣地址相對應的數據,進行浮點乘加運算,之后串行緩存,并行輸出到浮點相加模塊,進行輸出。計算時序如圖2所示。
    在時序上要求初始化加載A矩陣的第一行數據A1、A2、A3之后,加載B矩陣的第一列數據,當分段E1加載后立即進行分段第一組數據相乘A1×E1。以此類推,當加載A的第二行數據時,即可立即與B矩陣的第一列數據相乘。總體而言,只需要在ROM模塊中存儲一定的地址信號,即可使浮點乘加模塊的輸入端具有并行連貫的數據輸入,縮短了運算時間。
3 浮點矩陣相乘實現
3.1 模塊總體實現

    按照上述改進方案,ROM地址表在控制模塊的控制下產生一組地址信號控制雙口RAM組進行并行輸出,保證了浮點乘加模塊計算的準確性。其中控制模塊為設計的關鍵部分,用于產生所有模塊的控制信號,實現同步計算。分為a_cntrl、b_cntrl、cache、outcntrl四部分控制信號以及一路計數信號用于ROM地址查詢,內部由一個狀態機和邏輯單元組成,狀態機用于產生矩陣A、B的read開始、latch鎖存、地址疊加信號的轉換。控制模塊的時序仿真如圖3所示。

    圖3在全局同步信號時鐘sysclk、復位reset、使能enable的作用下,當calcmatrix信號為‘1’時,開始計算并生成輸出控制信號。其中a_cntrl部分用于控制矩陣A數據加載模塊,主要包含地址信號readaa和鎖存信號latchaa,來一個鎖存高電平則存儲A矩陣數據readaa;b_cntrl部分則對應于矩陣B的控制,輸入B矩陣數據readbb;cache部分用于控制數據緩存部分串行輸入并行輸出,包含著相應的讀地址信號cacherdadd、寫地址信號cachewradd、cache選擇信號cachemesel,三者同步控制并行輸出;outcntrl部分是整個系統的輸出控制部分,在準備信號ready之后,出現outvalid高電平,表示輸出數據有效,同時完成信號done為低電平。為使矩陣A、B數據能同時加載到浮點乘加模塊上,需要使一個readaa值對應于readbb的columnsbb個數據。在本設計中使用的是A9×16數據與B16×8數據進行計算,生成的outvalid有9個脈沖,每個脈沖包含8個矩陣輸出數據。
    對于A、B矩陣的數據加載,采用的是串行輸入并行輸出的控制器,由移位寄存器組成,當計數器計數到端口輸出值時(如端口并行輸出8個數則計數到8),并行輸出數據。
    浮點乘加模塊采用并行相乘、并行相加的方式。由于考慮到精度問題,采用浮點位數轉換,將32 bit的輸入數據進行浮點擴展為42 bit,再進行乘加運算,最后再將42 bit數據轉換為32 bit數據。采用三級流水線的方式,進行并行乘加運算,提高設計系統性能。
    在雙口RAM組的實現上,是將一組simple dualport ram[3]并列成一個RAM組。輸入由矩陣A、B的數據信號和ROM輸出的地址信號組成;輸出就是一路矩陣A數據和一路矩陣B數據,數據深度與vectorsize等同。其中每一個RAM的深度為rowsaa×columnsbb/vectorsize,保證數據的可重用性,同時相對應的ROM中存儲的地址信號分別為:
    A:1 2 1 2 3 3 1 2 3 4 4 4 1 2 3 4 5 5 5 5 1 2 3 4 5 6 6 6 6 6 ……
    B:1 1 2 2 1 2 3 3 3 1 2 3 4 4 4 4 1 2 3 4 5 5 5 5 5 1 2 3 4 5 ……
    以此類推即可得到相應的地址信號查找表。
    在數據緩存模塊的設計上也采用串行輸入并行輸出的方式。使用移位寄存器的方式實現,在并行浮點相加部分類似于上述的并行乘加[4]計算,采用多級流水線并行相加的方式完成。
3.2 計算結果仿真
    對改進的設計進行仿真,采用A9×16數據與B16×8數據相乘,獲得計算結果仿真如圖4所示。

    從圖4可見,loadaa、loadbb、calcimatrix三者的時序滿足浮點矩陣運算的時序要求,在前兩者數據加載后,加載calcimatrix上升沿,進行矩陣相乘。在outvalid為高電平時輸出數據,同時完成信號done輸出低電平。在輸出結果上,共分為9個大組,各大組有8個數據,共組成72個數據結果,其中顯示了第一部分輸出結果,獲得與Matlab仿真相近的計算結果,在精度上相差不到萬分之一。


    從表1中可以看出,改進后的IP核在處理時間上縮短了807個周期,同時在最高運行時鐘上提升了15%,系統整體的持續性能增加了7.2 Gflops。
    依據改進前后的IP核,使用Quartus9.1軟件進行綜合布局布線,映射到Stratix Ⅲ EP3SE110F780C2器件中,可獲得相應的資源對比圖如圖5所示。由于采用的都是并行浮點乘加運算,所以在乘法器資源的消耗上不變;同時由于只是在存儲器的存儲方式上作出變動,所以二者的存儲資源相等。從而只需要對圖中顯示的矩陣階數、vectorsize大小進行比較即可,而浮點計算性能與最高時鐘頻率變化方向相同,所以只對ALM數量及最高時鐘頻率進行對比。
    從圖5中資源消耗對比可見,當設定vectorsize為固定值8(圖5左半部)時,隨著矩陣階數的增加,改進后的IP核在ALM資源消耗上較改進前數量上有一定的減少,在最高時鐘頻率上都有小幅度提升,這是因為矩陣輸入時消耗時間過長;當設定矩陣階數為192×192(圖5右半部)時,隨著vectorsize值的增加,改進后IP核在ALM數量上有所減小,在最高時鐘頻率上則有小幅度提升,且波動幅度在3.4%左右。可見,改進后IP核比原Altera的IP核綜合性能有所提升。

參考文獻
[1] 田翔,周凡,陳耀武,等.基于FPGA的實時雙精度浮點矩陣乘法器設計[J].浙江大學學報(工學版),2008(9).
[2] Altera Corp.Floating-point megafunctions user guide.2011.
[3] 胡小龍,朱艷亮.基于FPGA的圖像輸入緩存機制研究[J].微計算機信息,2010(2).
[4] 蔡敏,閔言燦.全流水線結構雙精度浮點乘加單元的設計[J].微電子學與計算機,2010(1).
[5] STRICKLAND M.FPGA協處理的進展[J].今日電子,2010(4).

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 免费看午夜高清性色生活片 | 色天网站| 黄 片影 院 | 午夜视频体验区 | 国产精品青草久久 | 欧美人与动欧交视频 | 最近最新视频中文字幕4 | 黄网在线观看免费 | 日本欧美不卡一区二区三区在线 | 在线中文字幕网站 | 亚洲伦理影院 | 午夜免费一级片 | 欧美精品一区二区三区在线播放 | 丝袜美女足淫美足美脚网站 | 免费国产小视频 | 91小视频在线观看免费版高清 | 甜性涩爱免费在线观看 | 搞黄网站在线观看 | 亚洲黄色小视频 | 亚洲精品高清久久 | 黄色片免费观看 | 亚洲波多野结衣日韩在线 | 久草免费在线播放 | 欧美伊人久久 | 成年网在线观看免费观看网址 | 日韩高清不卡 | 欧美一区二区三区四区视频 | 国产不卡a| 亚洲国产三级 | 国产99r视频精品免费观看 | 久草久草久草久草 | 中文字幕视频在线观看 | 人人做天天爱夜夜爽中字 | 永久免费看毛片 | 国产成人精品免费视频大全麻豆 | 欧美日韩一区二区三区高清不卡 | 99精品在线播放 | 免费国产不卡午夜福在线观看 | free性欧美极度另类性性欧美 | 欧美成人激情 | 欧美精品午夜久久久伊人 |