浮點(diǎn)矩陣相乘IP核并行改進(jìn)的設(shè)計(jì)與實(shí)現(xià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所示。
浮點(diǎn)矩陣相乘IP核并行改進(jìn)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論