《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 浮點(diǎn)矩陣相乘IP核并行改進(jìn)的設(shè)計(jì)與實(shí)現(xiàn)
浮點(diǎn)矩陣相乘IP核并行改進(jìn)的設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第2期
張國禮,王建業(yè),肖 宇
空軍工程大學(xué) 導(dǎo)彈學(xué)院,陜西 三原713800
摘要: 基于Altera浮點(diǎn)IP核實(shí)現(xiàn)浮點(diǎn)矩陣相乘運(yùn)算時,由于矩陣階數(shù)的增大,造成消耗的器件資源雖增加但系統(tǒng)性能反而下降的問題,針對現(xiàn)有IP核存在數(shù)據(jù)加載不連貫、存儲帶寬不均勻的不足,提出采用并行化數(shù)據(jù)存儲、依據(jù)查找表加載數(shù)據(jù)和處理數(shù)據(jù)的方式對IP核進(jìn)行改進(jìn)。然后將改進(jìn)的浮點(diǎn)矩陣運(yùn)算在FPGA中實(shí)現(xiàn),經(jīng)過Quartus、Matlab軟件聯(lián)合仿真并進(jìn)行結(jié)果比對,其誤差不超過萬分之一,且節(jié)省了器件資源、提升了系統(tǒng)性能。仿真結(jié)果表明該設(shè)計(jì)可行,有利于提高諸多高性能領(lǐng)域浮點(diǎn)矩陣的運(yùn)算速度。
中圖分類號: TN47
文獻(xiàn)標(biāo)識碼: 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

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

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


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

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

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

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


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

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲视频在线免费观看| 日韩亚洲欧美一区二区三区| 在线观看视频欧美| 国产麻豆成人精品| 国产精品久久久久久久久久ktv| 欧美日韩国产黄| 欧美啪啪成人vr| 欧美激情综合五月色丁香| 欧美高清免费| 欧美激情一区二区三区不卡| 欧美成人首页| 欧美激情亚洲激情| 欧美精品一区二区三区四区| 欧美精品www| 欧美精品成人| 欧美日韩精品福利| 欧美日精品一区视频| 欧美午夜在线| 国产精品欧美久久| 国产日本亚洲高清| 国产日韩欧美中文| 国内精品久久久久久久影视蜜臀| 黑人巨大精品欧美黑白配亚洲 | 亚洲欧美视频在线| 午夜一级久久| 久久精品国产第一区二区三区最新章节| 午夜精品亚洲| 久久精品视频在线播放| 久久视频在线免费观看| 欧美成人r级一区二区三区| 欧美精品导航| 国产精品久久波多野结衣| 国产麻豆综合| 影音先锋久久| 亚洲乱码一区二区| 亚洲女ⅴideoshd黑人| 欧美一区二区高清在线观看| 亚洲国产精品va在看黑人| 日韩视频亚洲视频| 亚洲综合第一| 久久婷婷国产综合精品青草| 欧美激情四色| 国产精品久久午夜| 国产一区三区三区| 亚洲激情成人网| 亚洲香蕉伊综合在人在线视看| 午夜在线成人av| 亚洲精品五月天| 欧美亚洲系列| 欧美国产综合视频| 国产精品私房写真福利视频| 狠狠狠色丁香婷婷综合久久五月 | 国产一区久久| 亚洲精品久久久蜜桃| 亚洲午夜在线观看视频在线| 亚洲第一天堂av| 亚洲午夜小视频| 久久久久成人精品| 欧美日韩亚洲一区二区三区| 国产亚洲一区二区三区| 亚洲激情网址| 午夜精品视频一区| 亚洲伦理中文字幕| 久久成人国产| 欧美日韩国产在线观看| 国产综合久久久久久鬼色| 99pao成人国产永久免费视频| 先锋影音国产精品| 日韩亚洲一区在线播放| 久久成年人视频| 欧美日韩在线三区| 亚洲成色999久久网站| 亚洲永久在线观看| 亚洲毛片网站| 久久久噜噜噜久久久| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产成人tv| 午夜日韩视频| 中文日韩电影网站| 久久性天堂网| 国产精品你懂的在线欣赏| 亚洲黄色在线观看| 亚洲风情在线资源站| 午夜电影亚洲| 欧美日韩国产小视频在线观看| 国内外成人免费激情在线视频网站 | 亚洲高清在线观看一区| 亚洲欧美综合国产精品一区| 欧美日韩成人在线| 在线不卡亚洲| 欧美一区网站| 欧美一区久久| 国产精品免费小视频| 亚洲免费激情| 亚洲美女福利视频网站| 美女在线一区二区| 国产中文一区| 欧美一级网站| 久久不见久久见免费视频1| 欧美性一区二区| 日韩亚洲精品在线| 亚洲美女在线看| 欧美va亚洲va日韩∨a综合色| 国产婷婷精品| 亚洲欧美www| 亚洲欧美综合| 国产精品嫩草99a| 亚洲手机视频| 亚洲欧美在线磁力| 国产精品日日摸夜夜添夜夜av| 洋洋av久久久久久久一区| 中文在线资源观看视频网站免费不卡| 欧美va亚洲va国产综合| 亚洲高清av| 亚洲精品日韩欧美| 欧美国产一区二区在线观看 | 欧美日韩国产小视频在线观看| 亚洲黄一区二区三区| 亚洲啪啪91| 欧美国产日本韩| 最新国产乱人伦偷精品免费网站 | 在线一区日本视频| 欧美色123| av不卡免费看| 午夜天堂精品久久久久| 国产精品揄拍一区二区| 午夜精品一区二区三区在线| 欧美一级在线播放| 国产日韩欧美精品| 欧美专区在线播放| 卡一卡二国产精品| 亚洲国产欧美国产综合一区| 99精品欧美| 欧美色大人视频| 亚洲制服av| 久久九九热re6这里有精品| 精品999成人| 亚洲伦理自拍| 国产精品国产精品国产专区不蜜| 亚洲午夜激情| 久久久av毛片精品| 在线观看日产精品| 一区二区三区色| 国产精品福利在线观看网址| 亚洲男女毛片无遮挡| 久久久精品国产99久久精品芒果| 一区在线视频观看| 一区二区精品国产| 国产精品久久久99| 久久岛国电影| 欧美好吊妞视频| 一区二区三区四区国产| 欧美一区二区观看视频| 狠狠色噜噜狠狠狠狠色吗综合| 最新日韩中文字幕| 欧美性猛交视频| 久久精品动漫| 欧美日韩亚洲一区| 欧美在线free| 欧美乱人伦中文字幕在线| 亚洲一二三区在线| 久久先锋影音| 一本大道久久a久久精二百| 久久精品二区| 亚洲乱码久久| 久久久激情视频| 99精品欧美| 久久综合九色欧美综合狠狠| 亚洲蜜桃精久久久久久久| 欧美在线91| 亚洲精品影视| 久久久免费精品视频| 99国产精品99久久久久久粉嫩| 欧美一区二区三区婷婷月色 | 亚洲第一在线视频| 欧美三级在线视频| 久久精品视频在线播放| 欧美性大战久久久久久久| 亚洲国产你懂的| 国产精品美女久久久免费| 亚洲国产高清一区| 国产精品久在线观看| 亚洲欧洲一区| 国产亚洲va综合人人澡精品| 99精品国产99久久久久久福利| 国产欧美日韩在线| 一区二区三区四区五区视频| 狠狠干成人综合网| 亚洲欧美日韩一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲欧美日韩爽爽影院| 最新国产成人av网站网址麻豆| 久久精品国内一区二区三区| 99re66热这里只有精品3直播| 久久亚洲综合色| 亚洲欧美卡通另类91av| 欧美日韩一区二区三区四区五区| 亚洲电影在线| 国产欧美在线看| 亚洲伊人第一页|