當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化

摘 要: 基于Altera浮點(diǎn)IP核實(shí)現(xiàn)浮點(diǎn)矩陣相乘運(yùn)算時(shí),由于矩陣階數(shù)的增大,造成消耗的器件資源雖增加但系統(tǒng)性能反而下降的問(wèn)題,針對(duì)現(xiàn)有IP核存在數(shù)據(jù)加載不連貫、存儲(chǔ)帶寬不均勻的不足,提出采用并行化數(shù)據(jù)存儲(chǔ)、依據(jù)查找表加載數(shù)據(jù)和處理數(shù)據(jù)的方式對(duì)IP核進(jìn)行改進(jìn)。然后將改進(jìn)的浮點(diǎn)矩陣運(yùn)算在FPGA中實(shí)現(xiàn),經(jīng)過(guò)Quartus、Matlab軟件聯(lián)合仿真并進(jìn)行結(jié)果比對(duì),其誤差不超過(guò)萬(wàn)分之一,且節(jié)省了器件資源、提升了系統(tǒng)性能。仿真結(jié)果表明該設(shè)計(jì)可行,有利于提高諸多高性能領(lǐng)域浮點(diǎn)矩陣的運(yùn)算速度。
關(guān)鍵詞: 浮點(diǎn)矩陣相乘;嵌入式;IP核;現(xiàn)場(chǎng)可編程門(mén)陣列

嵌入式計(jì)算作為新一代計(jì)算系統(tǒng)的高效運(yùn)行方式,應(yīng)用于多個(gè)高性能領(lǐng)域,如陣列信號(hào)處理、核武器模擬、計(jì)算流體動(dòng)力學(xué)等。在這些科學(xué)計(jì)算中,需要大量的浮點(diǎn)矩陣運(yùn)算。而目前已實(shí)現(xiàn)的浮點(diǎn)矩陣運(yùn)算是直接使用VHDL語(yǔ)言編寫(xiě)的浮點(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)過(guò)專業(yè)調(diào)試和硬件實(shí)測(cè),性能穩(wěn)定且優(yōu)于手寫(xiě)代碼,但仍可對(duì)其進(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)的最高時(shí)鐘頻率,間接地影響系統(tǒng)整體性能。
整個(gè)矩陣相乘電路原理是將輸入的單路數(shù)據(jù)(A、B矩陣共用數(shù)據(jù)線),通過(guò)控制器產(chǎn)生A、B矩陣地址信號(hào),控制著A矩陣數(shù)據(jù)輸出和B矩陣數(shù)據(jù)輸出,并將數(shù)據(jù)并行分段輸出到浮點(diǎn)乘加模塊進(jìn)行乘加運(yùn)算,之后串行輸出到一個(gè)緩存器模塊中,再以并行方式輸出到浮點(diǎn)相加模塊,最后獲得計(jì)算結(jié)果。從其原理可以看出,在數(shù)據(jù)輸入輸出方面仍有許多可改進(jìn)的地方。
2 IP核存在的缺陷及改進(jìn)
2.1 存在缺陷
(1)輸入數(shù)據(jù)帶寬的不均衡性。在矩陣A、B的數(shù)據(jù)輸入時(shí),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ù)帶寬。由此可見(jiàn),A、B矩陣數(shù)據(jù)的存儲(chǔ)受到器件限制和存儲(chǔ)約束,同時(shí)由于在浮點(diǎn)乘加模塊的輸入端(A、B矩陣數(shù)據(jù))帶寬不同,造成A矩陣數(shù)據(jù)的輸入需要額外的處理時(shí)間。
(2)加載數(shù)據(jù)的不連貫性。在矩陣數(shù)據(jù)加載時(shí),IP核通過(guò)將數(shù)據(jù)分段成等分的幾部分,用于向量相乘。由于矩陣A存儲(chǔ)帶寬窄需要4步寄存(由Blocks決定),在第3個(gè)周期時(shí)才加載數(shù)據(jù)B用于計(jì)算,送到一個(gè)FIFO中存儲(chǔ);在第6個(gè)時(shí)鐘周期時(shí)加載矩陣A分段的第二部分進(jìn)行各自的第二部分計(jì)算,最后當(dāng)計(jì)算到第15個(gè)周期時(shí),才可通過(guò)浮點(diǎn)相加,計(jì)算出矩陣C的第一個(gè)值,之后計(jì)算出矩陣C的其他值C11。從上述結(jié)構(gòu)可見(jiàn),在分段相乘之后,采用先對(duì)一個(gè)FIFO進(jìn)行存儲(chǔ),存滿后再對(duì)下一個(gè)數(shù)據(jù)FIFO進(jìn)行存儲(chǔ),造成時(shí)間上浪費(fèi)過(guò)多。
2.2 設(shè)計(jì)改進(jìn)
鑒于上述缺陷,在輸入A、B矩陣的存儲(chǔ)方式上,進(jìn)行串行輸入到并行輸入的改進(jìn),使得兩個(gè)矩陣能同步輸入到浮點(diǎn)乘加模塊。在數(shù)據(jù)加載方式上,將A矩陣用3個(gè)周期加載完畢,再處理相乘運(yùn)算;將分段相乘結(jié)果進(jìn)行直接存儲(chǔ)相加,獲得C矩陣的第一個(gè)值,縮減運(yùn)算時(shí)間。設(shè)計(jì)的改進(jìn)框圖如圖1所示。


將A、B矩陣數(shù)據(jù)加載模塊設(shè)計(jì)成同步加載的方式,即在loadaa為高電平時(shí),對(duì)A的第一組數(shù)據(jù)進(jìn)行初始化,加載到雙口RAM模塊存儲(chǔ);在loadbb為高電平時(shí),加載B矩陣的數(shù)據(jù),也進(jìn)行雙口RAM存儲(chǔ)。然后依據(jù)ROM存儲(chǔ)的地址信號(hào)表,在控制模塊的控制下輸出A、B矩陣地址相對(duì)應(yīng)的數(shù)據(jù),進(jìn)行浮點(diǎn)乘加運(yùn)算,之后串行緩存,并行輸出到浮點(diǎn)相加模塊,進(jìn)行輸出。計(jì)算時(shí)序如圖2所示。
在時(shí)序上要求初始化加載A矩陣的第一行數(shù)據(jù)A1、A2、A3之后,加載B矩陣的第一列數(shù)據(jù),當(dāng)分段E1加載后立即進(jìn)行分段第一組數(shù)據(jù)相乘A1×E1。以此類推,當(dāng)加載A的第二行數(shù)據(jù)時(shí),即可立即與B矩陣的第一列數(shù)據(jù)相乘??傮w而言,只需要在ROM模塊中存儲(chǔ)一定的地址信號(hào),即可使浮點(diǎn)乘加模塊的輸入端具有并行連貫的數(shù)據(jù)輸入,縮短了運(yùn)算時(shí)間。
3 浮點(diǎn)矩陣相乘實(shí)現(xiàn)
3.1 模塊總體實(shí)現(xiàn)
按照上述改進(jìn)方案,ROM地址表在控制模塊的控制下產(chǎn)生一組地址信號(hào)控制雙口RAM組進(jìn)行并行輸出,保證了浮點(diǎn)乘加模塊計(jì)算的準(zhǔn)確性。其中控制模塊為設(shè)計(jì)的關(guān)鍵部分,用于產(chǎn)生所有模塊的控制信號(hào),實(shí)現(xiàn)同步計(jì)算。分為a_cntrl、b_cntrl、cache、outcntrl四部分控制信號(hào)以及一路計(jì)數(shù)信號(hào)用于ROM地址查詢,內(nèi)部由一個(gè)狀態(tài)機(jī)和邏輯單元組成,狀態(tài)機(jī)用于產(chǎn)生矩陣A、B的read開(kāi)始、latch鎖存、地址疊加信號(hào)的轉(zhuǎn)換。控制模塊的時(shí)序仿真如圖3所示。

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

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


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

參考文獻(xiàn)
[1] 田翔,周凡,陳耀武,等.基于FPGA的實(shí)時(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).

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉