專利名稱:面向向量處理器的浮點(diǎn)復(fù)數(shù)塊fir的向量化實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及FIR濾波器向量化領(lǐng)域,特指一種浮點(diǎn)復(fù)數(shù)塊FIR向量化實(shí)現(xiàn)方法。
背景技術(shù):
隨著4G無線通信、雷達(dá)信號(hào)處理、高清視頻和數(shù)字圖像處理等計(jì)算密集型應(yīng)用的計(jì)算需求越來越高,單芯片難以滿足應(yīng)用需求,多核處理器尤其是其中的向量處理器得到了廣泛的應(yīng)用。如圖1所示,是向量處理器的一般結(jié)構(gòu)示意圖,向量處理器一般由P個(gè)處理單元(PE)組成,通常支持基于向量的數(shù)據(jù)加載和存儲(chǔ)。每個(gè)PE包含獨(dú)立的多個(gè)功能部件,一般包括移位部件(BP)、算術(shù)部件(ALU)、乘法部件(MUL)等,每個(gè)PE包行一組局部寄存器,所有PE的同一編號(hào)的局部寄存器在邏輯上又組成一個(gè)向量寄存器。例如圖1所示 PEO-PV1的RO寄存器在邏輯上組成了向量寄存器VR0,每個(gè)PE所對(duì)應(yīng)的RO稱為向量寄存器的一個(gè)元素。向量處理器采用SIMD的方式,在同一條向量指令的控制下,ρ個(gè)PE同時(shí)對(duì)各自的局部寄存器進(jìn)行相同操作,用以開發(fā)應(yīng)用程序的數(shù)據(jù)級(jí)并行性。每個(gè)PE對(duì)應(yīng)多個(gè)存儲(chǔ)體(bankO,bankl, bank2, bank3),數(shù)據(jù)映射到不同的存儲(chǔ)體能夠避免存儲(chǔ)沖突。向量處理器包含大量功能單元,適合處理包含大量高密集運(yùn)算的任務(wù),如矩陣分解、FFT運(yùn)算、HR(Finite Impulse Response)濾波運(yùn)算等。然而,很多高密集運(yùn)算的任務(wù)由于算法本身的特性,向量化處理困難,如何將這些算法高效的映射到向量處理器,即這些算法的向量化方法,是提高向量處理器使用效率的關(guān)鍵。例如,浮點(diǎn)復(fù)數(shù)塊FIR的向量化, 浮點(diǎn)復(fù)數(shù)的實(shí)部與虛部都是32位,如果按照通常的實(shí)部與虛部相間隔的方法放置數(shù)據(jù),那么,一個(gè)復(fù)數(shù)的實(shí)部與虛部被分別加載到不同PE的局部寄存器,后續(xù)的復(fù)數(shù)乘法和累加非常困難,系數(shù)長(zhǎng)度與PE數(shù)量的不匹配導(dǎo)致不能充分利用向量處理器所有可并行的運(yùn)算資源。HR濾波器是輸入信號(hào)流χ [η]與沖擊響應(yīng)h[n]的離散卷積,一個(gè)系數(shù)長(zhǎng)度為ν的 FIR濾波器計(jì)算公式如下
ν-1yn=Yjhxn_k(1)
k 二 Q其中hk(0彡k彡V-1)是濾波器系數(shù),xn_k是輸入信號(hào)。每一輸出7 的計(jì)算需要V 次乘法和V-I次加法。HR濾波器的計(jì)算包括兩層循環(huán),通常的向量化方法是向量化內(nèi)循環(huán),即計(jì)算每個(gè)輸出值所需要的內(nèi)循環(huán)計(jì)算向量化,分配到各個(gè)PE并行執(zhí)行,將方程(1)展開得到方程(2) 所示yn = XA+Xn-^+...+Xn-L1V1(2)其中的xnhQ,Xn^h1,…,Xn^1Iv1分別在每個(gè)PE并行執(zhí)行,執(zhí)行完以后,對(duì)所有PE 執(zhí)行規(guī)約求和操作,得到一個(gè)輸出值yn。這種方法的優(yōu)點(diǎn)是程序簡(jiǎn)單,只有一層循環(huán),尤其是當(dāng)系數(shù)長(zhǎng)度ν是PE數(shù)量P的整數(shù)倍時(shí),且向量處理器提供規(guī)約求和操作,能夠取得較高效的計(jì)算性能。但是,存在的缺點(diǎn)是非常明顯的(1)向量處理器一般只支持定點(diǎn)加法規(guī)約,而浮點(diǎn)加法規(guī)約的硬件成本高,一般不支持;( 對(duì)于浮點(diǎn)復(fù)數(shù)濾波數(shù)據(jù),由于復(fù)數(shù)的實(shí)部與虛部在不同PE的局部寄存器中,實(shí)現(xiàn)復(fù)數(shù)的乘法和累加困難;(3)當(dāng)系數(shù)ν不是PE數(shù)量ρ的整數(shù)倍時(shí),難以充分發(fā)揮全部PE的并行計(jì)算能力,編程控制和軟件流水困難,限制了許多FIR的應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種原理簡(jiǎn)單、操作方便、能夠高效計(jì)算并能縮短整個(gè)算法的運(yùn)算時(shí)間、提高處理器計(jì)算資源使用效率的面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案一種面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,包括以下步驟(1)輸入向量數(shù)據(jù)X、系數(shù)數(shù)據(jù)h ;將所述向量數(shù)據(jù)χ的虛部和實(shí)部分別連續(xù)存放, 將所述系數(shù)數(shù)據(jù)h的虛部和實(shí)部分別連續(xù)存放;所述向量處理器包括ρ個(gè)處理單元;(2)將向量數(shù)據(jù)χ的實(shí)部和虛部、系數(shù)數(shù)據(jù)h的實(shí)部和虛部并行加載到向量處理器的同一個(gè)處理單元的不同局部寄存器中;(3)所述ρ個(gè)處理單元中的每個(gè)處理單元在本單元內(nèi)執(zhí)行向量數(shù)據(jù)χ和系數(shù)數(shù)據(jù) h的復(fù)數(shù)乘法并將乘法的結(jié)果進(jìn)行累加;個(gè)處理單元的計(jì)算完成,輸出ρ個(gè)結(jié)果。作為本發(fā)明的進(jìn)一步改進(jìn)所述向量數(shù)據(jù)χ的實(shí)部存放在地址VARl開始的連續(xù)區(qū)域;輸入向量數(shù)據(jù)χ的虛部存放在地址VAR2開始的連續(xù)區(qū)域;系數(shù)數(shù)據(jù)h的實(shí)部存放在地址VAR3開始的連續(xù)區(qū)域,并且每個(gè)實(shí)部重復(fù)存儲(chǔ)P個(gè);系數(shù)數(shù)據(jù)h的虛部存放在地址VAR4開始的連續(xù)區(qū)域,并且每個(gè)虛部重復(fù)存儲(chǔ)P個(gè),所述VAR1、VAR2、VAR3和VAR4分別映射到不同的存儲(chǔ)體中。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于1、本發(fā)明的面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,能夠適用于各種系數(shù)長(zhǎng)度的HR計(jì)算,不受限于系數(shù)長(zhǎng)度是否是PE數(shù)量的整數(shù)倍,不受限于向量處理器是否支持PE間的加法歸約,能夠充分挖掘向量處理器的指令級(jí)和數(shù)據(jù)級(jí)并行性,發(fā)揮向量處理器的所有處理單元的并行計(jì)算性能,縮短浮點(diǎn)復(fù)數(shù)塊FIR的計(jì)算時(shí)間,可高效的支持各種系數(shù)長(zhǎng)度的浮點(diǎn)復(fù)數(shù)塊FIR向量化;2、本發(fā)明的面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,實(shí)現(xiàn)簡(jiǎn)單、成本低廉、操作十分方便、可靠性好;在實(shí)現(xiàn)相同功能的情況下,可降低硬件的功耗。
圖1是向量處理器的一般結(jié)構(gòu)示意圖;圖2是本發(fā)明具體實(shí)施例的總流程示意圖;圖3是本發(fā)明的向量數(shù)據(jù)χ和系數(shù)數(shù)據(jù)h的初始存放地址示意圖;圖4是本發(fā)明的向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR向量化的偽代碼段。
具體實(shí)施方式
以下將結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。如圖2所示,本發(fā)明的面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,包括以下步驟1、輸入向量數(shù)據(jù)X,長(zhǎng)度為η ;系數(shù)數(shù)據(jù)h,長(zhǎng)度為ν ;將向量數(shù)據(jù)χ的虛部和實(shí)部分別連續(xù)存放,將系數(shù)數(shù)據(jù)h的虛部和實(shí)部分別連續(xù)存放;向量處理器包括P個(gè)處理單元,每個(gè)處理單元對(duì)應(yīng)多個(gè)存儲(chǔ)體;如圖3所示,向量數(shù)據(jù)χ的實(shí)部存放在地址VARl開始的連續(xù)區(qū)域;輸入向量數(shù)據(jù) χ的虛部存放在地址VAR2開始的連續(xù)區(qū)域;系數(shù)數(shù)據(jù)h的實(shí)部存放在地址VAR3開始的連續(xù)區(qū)域,并且每個(gè)實(shí)部重復(fù)存儲(chǔ)ρ個(gè),如圖3中的連續(xù)ρ個(gè)h
. r ;系數(shù)數(shù)據(jù)h的虛部存放在地址VAR4開始的連續(xù)區(qū)域,并且每個(gè)虛部重復(fù)存儲(chǔ)ρ個(gè),即圖3中的連續(xù)ρ個(gè)h W]. i ; VAR1、VAR2、VAR3和VAR4分別映射到不同的存儲(chǔ)體中。VAR1、VAR2、VAR3和VAR4的計(jì)算方法為圖3顯示每一行的數(shù)據(jù)寬度是ρ個(gè)字,即 4*ρ字節(jié),假定每個(gè)PE對(duì)應(yīng)b個(gè)存儲(chǔ)體(圖1中的bank數(shù)量),則與的第1個(gè)存儲(chǔ)體地址對(duì)齊的地址為4p^3*s,其中s是整數(shù)。選擇合適的整數(shù)s使得如郵補(bǔ)是空閑的存儲(chǔ)地址。由此確定VARl = 4s*p*b,使得VARl是空閑的,且與的第1個(gè)存儲(chǔ)體地址對(duì)齊。VARl作為輸入向量數(shù)據(jù)χ的實(shí)部存放在地址;VAR2作為輸入向量數(shù)據(jù)χ的虛部存放在地址,它與VARl的間隔至少是輸入向量數(shù)據(jù)X的實(shí)部數(shù)據(jù)長(zhǎng)度4*n,為確保VARl與VAR2對(duì)應(yīng)到的不同存儲(chǔ)體,可選擇一定的偏移量 4*! ,即 VAR2 = VARl+4*n+4*m1 = VAR1+4* (n+m》;VAR3作為系數(shù)數(shù)據(jù)h的實(shí)部存放在地址,它與VARl的間隔至少是輸入向量數(shù)據(jù)χ 的虛部數(shù)據(jù)長(zhǎng)度4*η,即VAR3 = VAR2+4*n ;VAR4作為系數(shù)數(shù)據(jù)h的虛部存放在地址,它與VAR3的間隔至少是系數(shù)數(shù)據(jù)h的實(shí)部數(shù)據(jù)長(zhǎng)度4*v*p,為確保VAR4與VAR3對(duì)應(yīng)到的不同存儲(chǔ)體,可選擇一定的偏移量 4氺m2,艮口 VAR4 = VAR3+4*v*p+4*m2 = VAR3+4* (v*p+m2)。設(shè)置外循環(huán)計(jì)數(shù)器n,其初值為輸入數(shù)據(jù)χ的長(zhǎng)度n,外循環(huán)計(jì)數(shù)器用于控制HR 計(jì)算是否結(jié)束,每次外循環(huán)一次,計(jì)算出P個(gè)結(jié)果,令η = Π-Ρ。2、設(shè)置內(nèi)循環(huán)計(jì)數(shù)器k(內(nèi)循環(huán)計(jì)數(shù)器k用于控制每一批FIR計(jì)算所需要的向量乘法次數(shù),每次內(nèi)循環(huán)開始時(shí),設(shè)置k的初值為k = v,v是系數(shù)h的長(zhǎng)度。每一次循環(huán),令 k = k-Ι ;直至k = 0時(shí),重新賦初值k = ν),設(shè)置k的初值為系數(shù)h的長(zhǎng)度ν ;輸入向量數(shù)據(jù)χ的實(shí)部和虛部地址指針、系數(shù)數(shù)據(jù)h的實(shí)部和虛部地址指針,四者的地址指針分別為上述得到的 VARl,VAR2, VAR3, VAR4。3、更新向量數(shù)據(jù)χ的實(shí)部和虛部地址指針、系數(shù)數(shù)據(jù)h的實(shí)部和虛部地址指針,每次更新地址指針如下VARl = VARl+p ;VAR2 = VAR2+p ;VAR3 = VAR3+p ;VAR4 = VAR4+p。4、向量處理器將向量數(shù)據(jù)χ的實(shí)部和虛部、系數(shù)數(shù)據(jù)h的實(shí)部和虛部并行加載到向量處理器的同一個(gè)處理單元的不同局部寄存器中;
如圖4所示,可用下面的偽代碼段實(shí)現(xiàn)一次數(shù)據(jù)加載VLDffVARl, ROVLDWVAR2, RlVLDWVAR3, R2VLDWVAR4, R3加載數(shù)據(jù)以后,每個(gè)PE的R0,Rl分別存放Xi的實(shí)部與虛部,每個(gè)PE的R2,R3分別存放比的實(shí)部與虛部。即for(i ==0,i< P,i++) {
PEi,.RO=Xi. 實(shí)部
PEi,.Rl=Xi.. 虛部
PEi,.R2=h. 實(shí)部
PEi,.R3=h.. 虛部}5、p個(gè)處理單元中的每個(gè)處理單元在本單元內(nèi)執(zhí)行向量數(shù)據(jù)χ和系數(shù)數(shù)據(jù)h的復(fù)數(shù)乘法并將乘法的結(jié)果進(jìn)行累加;如圖4所示,下面的偽代碼片段可實(shí)現(xiàn)復(fù)數(shù)乘法與結(jié)果累加VFMULS R0, R2, R4VFMULS Rl,R3,R5VFMULS R0, R3, R6VFMULS Rl,R2,R7VFSUBS R5, R4, R5VFADDS R6, R7, R6VFADDS R8, R5, R8VFADDS R9, R6, R9則每個(gè)處理單元在R8,R9分別保存輸出值的實(shí)部與虛部。6、更新內(nèi)循環(huán)計(jì)數(shù)器,即令k = k-Ι,返回步驟4 ;當(dāng)內(nèi)循環(huán)計(jì)數(shù)器k等于0時(shí),向量處理器的每個(gè)處理單元并行輸出P個(gè)計(jì)算結(jié)果。由于每次內(nèi)循環(huán)結(jié)束,可同時(shí)計(jì)算出P 個(gè)結(jié)果,所以輸出P個(gè)計(jì)算結(jié)果時(shí),更新外循環(huán)計(jì)算器n,即令n = n-p,若n不等于0,則返回步驟2 ;當(dāng)外循環(huán)計(jì)算器η = 0時(shí),結(jié)束計(jì)算。如圖3所示,下面的偽代碼片段示例向量處理器并行輸出ρ個(gè)計(jì)算結(jié)果VSTff R8, VAR5VSTff R9, VAR6其中ρ個(gè)輸出值實(shí)部保存在VAR5起始的連續(xù)區(qū)域,ρ個(gè)輸出值虛部保存在VAR6起始的連續(xù)區(qū)域。綜上,本發(fā)明的方法,可以充分發(fā)揮向量處理器的全部PE的并行計(jì)算能力,有效避免存儲(chǔ)體訪問沖突,不受限于向量處理器是否支持加法規(guī)約,不受限于系數(shù)是否是PE數(shù)量的整數(shù)倍,提高了浮點(diǎn)復(fù)數(shù)塊FIR等算法在向量處理器中的執(zhí)行效率。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,其特征在于包括以下步驟(1)輸入向量數(shù)據(jù)χ、系數(shù)數(shù)據(jù)h;將所述向量數(shù)據(jù)χ的虛部和實(shí)部分別連續(xù)存放,將所述系數(shù)數(shù)據(jù)h的虛部和實(shí)部分別連續(xù)存放;所述向量處理器包括ρ個(gè)處理單元;(2)將向量數(shù)據(jù)χ的實(shí)部和虛部、系數(shù)數(shù)據(jù)h的實(shí)部和虛部并行加載到向量處理器的同一個(gè)處理單元的不同局部寄存器中;(3)所述ρ個(gè)處理單元中的每個(gè)處理單元在本單元內(nèi)執(zhí)行向量數(shù)據(jù)χ和系數(shù)數(shù)據(jù)h的復(fù)數(shù)乘法并將乘法的結(jié)果進(jìn)行累加;P個(gè)處理單元的計(jì)算完成,輸出ρ個(gè)結(jié)果。
2.根據(jù)權(quán)利要求1所述的面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,其特征在于所述向量數(shù)據(jù)χ的實(shí)部存放在地址VARl開始的連續(xù)區(qū)域;輸入向量數(shù)據(jù)χ的虛部存放在地址VAR2開始的連續(xù)區(qū)域;系數(shù)數(shù)據(jù)h的實(shí)部存放在地址VAR3開始的連續(xù)區(qū)域,并且每個(gè)實(shí)部重復(fù)存儲(chǔ)P個(gè);系數(shù)數(shù)據(jù)h的虛部存放在地址VAR4開始的連續(xù)區(qū)域,并且每個(gè)虛部重復(fù)存儲(chǔ)P個(gè),所述VAR1、VAR2、VAR3和VAR4分別映射到不同的存儲(chǔ)體中。
全文摘要
本發(fā)明公開了一種面向向量處理器的浮點(diǎn)復(fù)數(shù)塊FIR的向量化實(shí)現(xiàn)方法,包括以下步驟(1)輸入向量數(shù)據(jù)x,系數(shù)數(shù)據(jù)h;將向量數(shù)據(jù)x的虛部和實(shí)部分別連續(xù)存放,將系數(shù)數(shù)據(jù)h的虛部和實(shí)部分別連續(xù)存放;向量處理器包括p個(gè)處理單元;(2)將向量數(shù)據(jù)x的實(shí)部和虛部、系數(shù)數(shù)據(jù)h的實(shí)部和虛部并行加載到向量處理器的同一個(gè)處理單元的不同局部寄存器中;(3)p個(gè)處理單元中的每個(gè)處理單元在本單元內(nèi)執(zhí)行向量數(shù)據(jù)x和系數(shù)數(shù)據(jù)h的復(fù)數(shù)乘法并將乘法的結(jié)果進(jìn)行累加;(4)p個(gè)處理單元的計(jì)算完成,輸出p個(gè)結(jié)果。本發(fā)明具有原理簡(jiǎn)單、操作方便、能夠高效計(jì)算并能縮短整個(gè)算法的運(yùn)算時(shí)間、能提高處理器計(jì)算資源使用效率等優(yōu)點(diǎn)。
文檔編號(hào)H03H17/02GK102231624SQ201110213358
公開日2011年11月2日 申請(qǐng)日期2011年7月28日 優(yōu)先權(quán)日2011年7月28日
發(fā)明者萬江華, 劉仲, 孫海燕, 郭陽, 陽柳, 陳書明, 陳海燕, 陳勝剛, 陳躍躍, 龔國(guó)輝 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)