999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多核處理器BWDSP1042的FFT性能優(yōu)化 *

2021-07-02 06:30:20藺麗華張美春王佳儀
電訊技術(shù) 2021年6期
關(guān)鍵詞:指令優(yōu)化

藺麗華,李 敏 ,蘇 濤,張美春,王佳儀

(1.西安科技大學(xué) 通信與信息工程學(xué)院,西安 710054;2.西安電子科技大學(xué) 雷達(dá)信號(hào)處理國(guó)家重點(diǎn)實(shí)驗(yàn)室,西安 710126)

0 引 言

快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)廣泛應(yīng)用于信號(hào)、音頻、圖像等領(lǐng)域的科學(xué)計(jì)算與處理,是這些領(lǐng)域時(shí)頻轉(zhuǎn)換的基本研究工具[1]。FFT算法性能的優(yōu)劣代表著DSP芯片處理能力的高低,F(xiàn)FT運(yùn)算時(shí)間作為表征芯片性能的重要參數(shù),各領(lǐng)域?qū)τ贔FT計(jì)算與處理的實(shí)時(shí)性要求也越來(lái)越高[1-2]。

為響應(yīng)國(guó)家大力發(fā)展國(guó)內(nèi)集成電路產(chǎn)業(yè)的號(hào)召,打破國(guó)外的高計(jì)算性能領(lǐng)域的核心技術(shù)對(duì)我國(guó)的壟斷,中國(guó)電科38所自主研發(fā)了一款具有自主知識(shí)產(chǎn)權(quán)的BWDSP產(chǎn)品。BWDSP1042[3]是一款運(yùn)算速度快、功耗低、實(shí)時(shí)性強(qiáng)、便攜的高性能雙核DSP,又名“魂芯二號(hào)“,其底層架構(gòu)、指令集和集成開(kāi)發(fā)環(huán)境ECS都是38所自主設(shè)計(jì)與研發(fā)的。BWDSP1042是在第一代產(chǎn)品BWDSP100[4]的基礎(chǔ)上所開(kāi)發(fā)的,仍然是16條發(fā)射超長(zhǎng)指令字(Very Long Instruction Word,VLIW)和4路單指令流多數(shù)據(jù)流(Single Instruction Multiple Data,SIMD)混合架構(gòu)的數(shù)字信號(hào)處理器,但內(nèi)核升級(jí)為eC104+,擴(kuò)展了指令集,優(yōu)化了存儲(chǔ)空間,執(zhí)行部件提升了運(yùn)算性能,在物理存儲(chǔ)空間上劃分了程序空間和數(shù)據(jù)空間。

本文基于BWDSP1042的體系結(jié)構(gòu)和指令編排,在開(kāi)發(fā)環(huán)境ECS下完成FFT帶有C程序調(diào)用接口的匯編程序,基于按時(shí)間抽選的基-2 FFT[5]算法進(jìn)行結(jié)構(gòu)優(yōu)化,通過(guò)多階合并、指令并行、循環(huán)展開(kāi)、軟件流水和高效尋址指令等方式進(jìn)行并行計(jì)算,使用匯編程序的實(shí)際運(yùn)行周期來(lái)衡量算法優(yōu)化程度,并與BWDSP100和TMS320C6678函數(shù)庫(kù)中的FFT做對(duì)比,使用Matlab程序驗(yàn)證本文匯編程序的正確性,按照誤差閾值來(lái)判定FFT算法功能編寫(xiě)是否準(zhǔn)確。研究結(jié)果表明,512點(diǎn)、1 024點(diǎn)、2 048點(diǎn)定點(diǎn)復(fù)數(shù)FFT算法的實(shí)際運(yùn)行周期分別為571、991、2 112,比BWDSP100函數(shù)庫(kù)中的FFT分別提升了1.12倍、1.18倍、1.27倍,比C6678函數(shù)庫(kù)中的FFT分別提升了1.32倍、1.40倍、1.88倍。本文研究的基于BWDSP1042的FFT算法計(jì)算速度快,實(shí)時(shí)性高,對(duì)支持國(guó)產(chǎn)芯片BWDSP1042的商業(yè)應(yīng)用具有一定的實(shí)際意義。

1 基于BWDSP的FFT算法優(yōu)化

1.1 基-2時(shí)間抽取FFT算法

快速傅里葉變換是離散傅里葉變換(Discrete Fourier Transform,DFT)的一種快速計(jì)算形式,可以很明顯地減少計(jì)算量和運(yùn)算時(shí)間。DFT正變換公式如式(1)所示:

(1)

(2)

N點(diǎn)的FFT算法一共有m階的蝶形運(yùn)算,每一階都有N/2形結(jié)構(gòu)參與運(yùn)算,每個(gè)蝶形運(yùn)算(a+bj)(wr+jwi)需要一次復(fù)數(shù)乘法和兩次復(fù)數(shù)加法,如圖1所示,每一階的蝶形運(yùn)算共需要N/2次復(fù)數(shù)乘法和N次復(fù)數(shù)加法,所以一個(gè)N點(diǎn)的完整FFT運(yùn)算需要(N/2)m=(N/2)lbN次復(fù)數(shù)乘法和NlbN次復(fù)數(shù)加法,時(shí)間復(fù)雜度為o(NlbN)。但是參與蝶形運(yùn)算的數(shù)據(jù)需要從內(nèi)存中讀取兩個(gè)輸入數(shù)據(jù)和相應(yīng)的旋轉(zhuǎn)因子,然后將計(jì)算結(jié)果寫(xiě)入到寄存器中,讀取和存放的數(shù)據(jù)量是一樣的,并不能充分使用BWDSP硬件資源,運(yùn)算時(shí)間也得不到減少。

圖1 基-2時(shí)間抽取FFT蝶形運(yùn)算單元

1.2 并行結(jié)構(gòu)FFT優(yōu)化

在按時(shí)間抽選的基-2 FFT算法中,每級(jí)任意兩個(gè)蝶形運(yùn)算都是互相獨(dú)立的,在正確讀取其旋轉(zhuǎn)因子的情況下,蝶形運(yùn)算單元順序可以并行執(zhí)行。為了充分利用BWDSP1042的SIMD和VLIW混合架構(gòu),減少FFT算法的運(yùn)算時(shí)間,在時(shí)間抽選的基-2 FFT算法基礎(chǔ)上進(jìn)行結(jié)構(gòu)調(diào)整,使用倒位序輸入、自然序輸出的FFT算法進(jìn)行蝶形運(yùn)算單元的并行處理,如圖2所示。BWDSP中數(shù)據(jù)存儲(chǔ)器劃分為6個(gè)block,每個(gè)block大小為256 KB。把旋轉(zhuǎn)因子與輸入數(shù)據(jù)保存到不同的 block 塊中,并且使用復(fù)數(shù)指令、位反序?qū)ぶ分噶睢?shù)據(jù)存儲(chǔ)器讀寫(xiě)指令等高效指令的特性來(lái)充分利用其帶寬,有效減少旋轉(zhuǎn)因子重復(fù)計(jì)算或訪存,在充分發(fā)揮處理器優(yōu)勢(shì)的同時(shí)又能提高FFT算法性能。按時(shí)間抽選的基-2FFT實(shí)現(xiàn)的并行計(jì)算流程圖如圖3所示。

圖2 倒位序輸入、自然序輸出8點(diǎn)FFT流圖

圖3 并行結(jié)構(gòu)FFT流程圖

1.2 1 024點(diǎn)的定點(diǎn)FFT算法優(yōu)化實(shí)現(xiàn)

1.2.1 尋址方式選擇

前四階的蝶形運(yùn)算合并時(shí)使用位反序?qū)ぶ纷x操作、模八雙字寫(xiě)操作的方式來(lái)優(yōu)化。位反序?qū)ぶ冯p字讀訪存指令來(lái)讀取輸入數(shù)據(jù),讀取指令為r7:6=br(N)[u0+=1,1]。

在以上這一條讀取指令中,在寄存器r7:6前沒(méi)有指定宏,則默認(rèn)是使用4個(gè)執(zhí)行宏{x,y,z,t}同時(shí)讀數(shù),一條指令能夠讀取8個(gè)定點(diǎn)數(shù),利用4個(gè)執(zhí)行宏同時(shí)讀數(shù)可顯著提高運(yùn)行效率。位反序?qū)ぶ分噶钍菍iT(mén)為FFT算法設(shè)計(jì)的,它能夠?qū)0的基地址若干位前后顛倒,生成算法所需要的實(shí)際地址來(lái)進(jìn)行后續(xù)的數(shù)據(jù)訪存操作,但是,一旦修改過(guò)的基地址不參與反序操作,這種位反序方式能夠保證數(shù)據(jù)訪存的正確性,也提高了數(shù)據(jù)高效訪存的效率。位反序的位數(shù)N是基于N點(diǎn)FFT算法的蝶形運(yùn)算階數(shù)lbN,當(dāng)階數(shù)是偶數(shù)階時(shí)進(jìn)行合并前四階,當(dāng)階數(shù)是奇數(shù)階時(shí),前四階合并結(jié)束后單獨(dú)執(zhí)行第五階運(yùn)算,其余均是采用兩階合并。

模八尋址方式將前四階合并的計(jì)算結(jié)果按照順序?qū)懭氲刂芳拇嫫髦校0藢ぶ分噶顬閙[v0+=v10,v11]=xr41:40yr45:44zr43:42tr47:46

數(shù)據(jù)的寫(xiě)入是根據(jù)運(yùn)算宏通用寄存器堆中的數(shù)據(jù)按照宏{x,y,z,t}確定好的順序存儲(chǔ)到數(shù)據(jù)存儲(chǔ)器中的,每條指令中4個(gè)宏中的通用寄存器堆的序號(hào)可以按照指令確定的數(shù)據(jù)各不相同。通過(guò)模八尋址寫(xiě)入的方式,能夠改變不同宏之間不同的通用寄存器的值來(lái)改變前四階合并結(jié)束后計(jì)算結(jié)果的順序,從而保證輸出的順序是自然序。所以,本文在前四階使用位反序?qū)ぶ纷x操作、模八雙字寫(xiě)操作,其他階采用線性雙字讀寫(xiě)操作。只通過(guò)優(yōu)化前四階的尋址方式,是因?yàn)橐呀?jīng)將倒位序輸入的數(shù)據(jù)通過(guò)模八雙字寫(xiě)入的操作將數(shù)據(jù)調(diào)整順序,后面的蝶形運(yùn)算將會(huì)按照模八尋址的寫(xiě)入數(shù)據(jù)順序進(jìn)行計(jì)算,所以前四階尋址方式優(yōu)化足以保證輸出順序是自然序,滿足算法要求。

1.2.2 復(fù)數(shù)運(yùn)算指令充分利用宏資源

BWDSP1042處理器提供了高效的16位定點(diǎn)復(fù)數(shù)同時(shí)做加/減以及除2操作指令,專門(mén)為定點(diǎn)數(shù)據(jù)運(yùn)算設(shè)定的一種操作方式,大大減少了復(fù)數(shù)操作的指令周期。

{x,y,z,t}CHRm_Rn =(CHRm +/-CHRn),

{x,y,z,t}CHRm_Rn=(CHRm +/-CHRn)/2。

一個(gè)16位定點(diǎn)復(fù)數(shù)同另一個(gè)16位定點(diǎn)復(fù)數(shù)進(jìn)行加/減運(yùn)算,運(yùn)算結(jié)果直接送到結(jié)果存儲(chǔ)器,或者除2后送到結(jié)果寄存器。通過(guò)定點(diǎn)復(fù)數(shù)指令來(lái)實(shí)現(xiàn)定點(diǎn)的蝶形運(yùn)算。xCHRm_Rn=(CHRm+/-CHRn)這條指令只能完成1個(gè)定點(diǎn)復(fù)數(shù)的加減運(yùn)算,結(jié)果存入到xCHRm_Rn寄存器中,而指令CHRs=(CHRm +/- CHRn)能夠計(jì)算4個(gè)定點(diǎn)復(fù)數(shù),分別將結(jié)果存入到4個(gè)執(zhí)行宏{x,y,z,t}CHRm_Rn中。對(duì)比可知,定點(diǎn)復(fù)數(shù)進(jìn)行蝶形運(yùn)算時(shí),充分利用4個(gè)執(zhí)行宏計(jì)算可顯著提高運(yùn)行效率。

2.2.3 多階合并

傳統(tǒng)算法中,計(jì)算完每一階的結(jié)果將保存到寄存器中,在下一階運(yùn)算時(shí)通過(guò)處理器的尋址方式再將結(jié)果讀取出來(lái),在中間結(jié)果的寫(xiě)入和讀取期間進(jìn)行了大量的數(shù)據(jù)訪存過(guò)程,占用了運(yùn)行算法大量時(shí)間。所以,為了實(shí)現(xiàn)高效的訪存,采用多階合并的方式來(lái)提升運(yùn)算效率,減少數(shù)據(jù)輸入輸出的操作。N點(diǎn)FFT共有l(wèi)bN階,每階有N/2個(gè)蝶形運(yùn)算,每個(gè)蝶形運(yùn)算需要完成一次復(fù)數(shù)乘法,兩次復(fù)數(shù)加法。由于1 024點(diǎn)FFT算法共有10階運(yùn)算,前四階的旋轉(zhuǎn)因子較為特殊,不占用乘法器資源,所以蝶形運(yùn)算只是使用加法器即可。

假設(shè)點(diǎn)數(shù)N是大于等于64點(diǎn)的,在這里簡(jiǎn)單介紹一下多階合并的思路:首先合并前四階,然后根據(jù)N點(diǎn)FFT的階數(shù)進(jìn)行分支,若是偶數(shù)階,直接跳轉(zhuǎn)到兩階合并的模塊;若是奇數(shù)階,先計(jì)算第五階的蝶形運(yùn)算,再繼續(xù)進(jìn)行兩階合并模塊。基于這個(gè)思路,1 024點(diǎn)定點(diǎn)FFT匯編實(shí)現(xiàn)就是將前四階合并運(yùn)算寫(xiě)入一次,第五、六階合并寫(xiě)入一次,七、八階合并寫(xiě)入一次,九、十階合并寫(xiě)入一次,即前四階合并,其余兩階合并后將結(jié)果寫(xiě)入內(nèi)存。簡(jiǎn)單說(shuō)明前四階蝶形運(yùn)算合并思路:

xr3=n||u2=u0+4||u4=u0+8||u6=u0+12

xr4=r3lshift -7

lc3=xr4

_cfft4:

讀||定義旋轉(zhuǎn)因子

讀||定義旋轉(zhuǎn)因子||計(jì)算

_cfftloop4:

讀||寫(xiě)||計(jì)算

if lc3 b _cfftloop4

由于前四階每次計(jì)算128個(gè)定點(diǎn)數(shù),所以N點(diǎn)FFT算法所需要前四階計(jì)算的循環(huán)次數(shù)是xr4=N/128。在_cfft4模塊中,首先讀取128個(gè)定點(diǎn)數(shù),定義旋轉(zhuǎn)因子,并進(jìn)行合并第一次四階蝶形運(yùn)算。在_cfftloop4模塊中繼續(xù)讀取輸入,并行把在_cfft4模塊中合并第一次四階蝶形運(yùn)算結(jié)果寫(xiě)入到存儲(chǔ)器中,同時(shí)也并行讀取的下一組128個(gè)定點(diǎn)數(shù)的蝶形運(yùn)算。if lc3 b _cfftloop4基于零開(kāi)銷循環(huán)寄存器lc3的條件跳轉(zhuǎn)指令,只要lc3不等于0,零開(kāi)銷循環(huán)寄存器lc3就自動(dòng)減1,而且將跳轉(zhuǎn)到_cfftloop4模塊循環(huán)執(zhí)行四階合并;若lc3等于0,說(shuō)明N點(diǎn)的四階合并已經(jīng)全部完成,就順序向下執(zhí)行,不再執(zhí)行跳轉(zhuǎn)。用零開(kāi)銷循環(huán)來(lái)判斷N點(diǎn)的四階合并是否全部已經(jīng)完成,可以大大減少代碼量,同時(shí)增加程序循環(huán)執(zhí)行的效率。其余的兩階合并與前四階合并的思路是一致的,利用多階合并的方式比每一階都將中間結(jié)果寫(xiě)入內(nèi)存中節(jié)省了輸入輸出的訪存時(shí)間。

1.2.4 指令并行、軟件流水、循環(huán)展開(kāi)

在FFT算法優(yōu)化時(shí),指令并行、軟件流水、循環(huán)展開(kāi)這三種優(yōu)化方法一般都是交叉使用的,在這里把兩階合并后的結(jié)果與旋轉(zhuǎn)因子合并運(yùn)算的匯編程序來(lái)具體介紹這三種優(yōu)化方法。

(1)指令并行

r5:4=[u0+=u10,u11]

r7:6=[u0+=u10,u11]r11:10=[w0+=w5,w6]

chr17=chr7*chr11

chr16=chr6*chr10

chr23=(chr5+chr17)/2

chr22=(chr4+chr16)/2

考慮到指令并行的原則,將程序優(yōu)化為

r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]

r7:6=[u0+=u10,u11]

chr17=chr7*chr11||chr16=chr6*chr10

chr23=(chr5+chr17)/2||chr22=(chr4+chr16)/2

由此可見(jiàn),原來(lái)占用7行指令行的程序現(xiàn)在值占用4行,一個(gè)蝶形運(yùn)算就減少了3個(gè)實(shí)際運(yùn)行周期。

(2)軟件流水、循環(huán)展開(kāi)

由編排規(guī)則可知,計(jì)算結(jié)果和讀訪存指令結(jié)果需要隔兩行使用,等待寫(xiě)入寄存器的數(shù)據(jù)需要提前兩行準(zhǔn)備好,所以在這個(gè)規(guī)則下,僅僅進(jìn)行指令并行遠(yuǎn)遠(yuǎn)不夠,會(huì)存在許多氣泡行使流水線出現(xiàn)卡拍問(wèn)題。為了沖掉中間的氣泡行使得流水線盡量不出現(xiàn)停頓,減少實(shí)際運(yùn)行周期,程序基于軟件流水、循環(huán)展開(kāi)繼續(xù)優(yōu)化。

r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]

r7:6=[u0+=u10,u11]

r13:12=[u0+=u10,u11]||r9:8=[w0+=w5,w6]||

chr17=chr7*chr11||chr16=chr6*chr10

r15:14=[u0+=u10,u11]||chr23=(chr5+chr17)/2||chr22=(chr4+chr16)/2

r35:34=[u0+=u10,u11]||r3:2=[w0+=w5,w6]||chr19=chr15*chr9||chr18=chr14*chr8

r37:36=[u0+=u10,u11]||chr25=(chr13+chr19)/2||chr24=(chr12+chr18)/2

r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]||chr21=chr37*chr3||chr20=chr36*chr2

r7:6=[u0+=u10,u11]||chr27=(chr37+chr21)/2||chr26=(chr36+chr20)/2

_cfft1loop:

[v0+=v10,v11]=r23:22||r13:12=[u0+=u10,u11]||r9:8=[w0+=w5,w6]||chr17=chr7*chr11||chr16=chr6*chr10

[v0+=v10,v11]=r25:24||r15:14=[u0+=u10,u11] ||chr23=(chr5+chr17)/2||chr22=(chr4+chr16)/2

[v0+=v10,v11]=r27:26||r35:34=[u0+=u10,u11]||r3:2=[w0+=w5,w6]||chr19=chr15*chr9||chr18=chr14*chr8

r37:36=[u0+=u10,u11]||chr25=(chr13+chr19)/2||chr24=(chr12+chr18)/2

chr21=chr37*chr3||chr20=chr36*chr2

chr27=(chr37+chr21)/2||chr26=(chr36+chr20)/2

.code_align 16

If lc0 b _cfft1loop||r5:4=[u0+=u10,u11]||11:10=[w0+=w5,w6]

優(yōu)化后代碼的指令并行性大大提高,充分利用核內(nèi)的4個(gè)執(zhí)行宏,循環(huán)核心代碼并行執(zhí)行寫(xiě)入結(jié)果指令,讀取下一循環(huán)所用數(shù)據(jù)指令和點(diǎn)乘、疊加運(yùn)算指令,充分利用了硬件資源,大大提高了程序運(yùn)行效率。

2 實(shí)驗(yàn)與分析

實(shí)驗(yàn)平臺(tái)為BWDSP1042,Win10系統(tǒng),Matlab版本為32位Matlab2012a,VS版本為VS2010,ECS版本為ECS 2.0。不同點(diǎn)數(shù)的輸入數(shù)據(jù)來(lái)自于Matlab程序產(chǎn)生的數(shù)據(jù)文件以及相應(yīng)的旋轉(zhuǎn)因子文件。

2.1 實(shí)驗(yàn)結(jié)果及分析

匯編程序優(yōu)化之前編寫(xiě)C語(yǔ)言程序,根據(jù)測(cè)試無(wú)誤的C語(yǔ)言程序框架進(jìn)行FFT匯編。本文重點(diǎn)介紹FFT基于BWDSP1042底層優(yōu)化,C語(yǔ)言相關(guān)操作不再贅述。在BWDSP1042配套的集成開(kāi)發(fā)環(huán)境ECS 2.0中完成匯編程序,使用Matlab產(chǎn)生數(shù)據(jù)以及生成誤差圖。

使用Matlab程序來(lái)驗(yàn)證FFT算法編寫(xiě)的正確性。將Matlab程序產(chǎn)生的輸入數(shù)據(jù)和旋轉(zhuǎn)因子加載到ECS中運(yùn)行FFT匯編程序,將FFT匯編輸出結(jié)果導(dǎo)出到一個(gè)指定的文本文件output.txt中,然后使用Matlab讀取txt文件中存放的匯編輸出數(shù)據(jù),進(jìn)行圖形可視化,如圖4所示。同時(shí),Matlab調(diào)用自身FFT函數(shù)讀取同樣的輸入數(shù)據(jù),將計(jì)算結(jié)果進(jìn)行可視化,如圖5所示。

圖4 FFT匯編結(jié)果圖

圖5 Matlab結(jié)果圖

由于Matlab中的函數(shù)庫(kù)都已被廣泛使用,其正確性毋庸置疑,所以將Matlab輸出結(jié)果作為匯編優(yōu)化函數(shù)的基本參照標(biāo)準(zhǔn),將本文研究的算法與Matlab中FFT函數(shù)的輸出結(jié)果進(jìn)行對(duì)比,觀察圖4和圖5,結(jié)果幾乎一致,說(shuō)明本文算法功能正確。為了進(jìn)一步確定匯編算法的正確性,進(jìn)行計(jì)算相對(duì)誤差,如圖6所示。

圖6 相對(duì)誤差圖

觀察圖6可知,F(xiàn)FT匯編程序的輸出結(jié)果與在Matlab中運(yùn)行FFT函數(shù)的誤差,大部分輸入的計(jì)算結(jié)果基本一致,誤差在0附近,在1 350點(diǎn)左右出現(xiàn)-0.004左右偏差。由于輸入數(shù)據(jù)都是Matlab隨機(jī)生成的浮點(diǎn)數(shù),需要通過(guò)格式轉(zhuǎn)換為定點(diǎn)數(shù),實(shí)現(xiàn)定點(diǎn)數(shù)FFT匯編,在數(shù)據(jù)轉(zhuǎn)換時(shí)也會(huì)出現(xiàn)些許誤差,對(duì)輸出誤差也有相應(yīng)影響。由圖可知,輸出誤差在10-3級(jí)別,也在函數(shù)開(kāi)發(fā)誤差要求范圍之內(nèi),說(shuō)明基于BWDSP1042的FFT算法匯編正確。測(cè)試基于不同點(diǎn)數(shù)的FFT實(shí)際運(yùn)行周期,并與BWDSP100、TMS320C6678函數(shù)對(duì)比,結(jié)果如表1所示。

表1 BWDSP1042實(shí)際周期比較

由周期指標(biāo)可知,基于BWDSP1042的FFT算法實(shí)際運(yùn)行周期應(yīng)小于理論時(shí)鐘周期的1.5倍。由表1可知,512點(diǎn)、1 024點(diǎn)、2 048點(diǎn)的FFT的實(shí)際運(yùn)行周期分別為571拍、991拍、2 112拍,經(jīng)計(jì)算該算法不同輸入點(diǎn)數(shù)均滿足函數(shù)庫(kù)開(kāi)發(fā)要求。本文將基于BWDSP1042的FFT算法與BWDSP100和TMS320C6678這兩款高性能芯片應(yīng)用函數(shù)庫(kù)中的FFT算法的實(shí)際運(yùn)行周期進(jìn)行比較,運(yùn)算效率均提升一倍以上,說(shuō)明本文所研究的FFT算法在BWDSP1042的性能優(yōu)化同時(shí)也體現(xiàn)了算法的實(shí)用性和優(yōu)越性。

2.2 硬件資源成本

本文實(shí)現(xiàn)的N點(diǎn)的32位定點(diǎn)復(fù)數(shù)FFT共有l(wèi)b(N)階,每階有N/2個(gè)蝶形運(yùn)算,每個(gè)蝶形運(yùn)算需要完成一次復(fù)數(shù)乘法、兩次復(fù)數(shù)加法,所以完成一個(gè)蝶形運(yùn)算需要4個(gè)加法器和4個(gè)乘法器。FFT函數(shù)主要是蝶形運(yùn)算,從蝶形運(yùn)算角度說(shuō)明硬件資源消耗情況,如表2所示。

表2 硬件資源消耗說(shuō)明

BWDSP1042中有4個(gè)增強(qiáng)的運(yùn)算宏eC104+,每個(gè)宏中內(nèi)部有8個(gè)加法器和8個(gè)乘法器,所以N/2個(gè)蝶形運(yùn)算需要利用這些乘法器和加法器完成計(jì)算,大點(diǎn)數(shù)FFT運(yùn)算對(duì)資源消耗的硬件成本更多。另外,F(xiàn)FT算法在實(shí)時(shí)性方面有一定要求,進(jìn)而對(duì)BWDSP1042硬件性能具有較高要求,增加了硬件成本。

3 結(jié)束語(yǔ)

本文基于BWDSP1042的體系架構(gòu)以及指令特點(diǎn),改進(jìn)了基-2時(shí)間抽取FFT算法結(jié)構(gòu),減少了FFT算法運(yùn)算時(shí)間,優(yōu)化了性能。定點(diǎn)格式的FFT算法由于進(jìn)行了數(shù)據(jù)縮放,導(dǎo)致精度降低,雖然并不影響正確性,但應(yīng)用于要求高精度的領(lǐng)域仍需繼續(xù)提升精度指標(biāo)。本文研究不僅對(duì)數(shù)字信號(hào)處理相關(guān)應(yīng)用領(lǐng)域時(shí)頻轉(zhuǎn)換時(shí)間有一定的改善,而且對(duì)國(guó)產(chǎn)化芯片BWDSP1042的商業(yè)化應(yīng)用以及走向工程應(yīng)用具有實(shí)際意義。高性能FFT運(yùn)算是芯片走向?qū)嶋H應(yīng)用的重要一環(huán),接下來(lái)的工作是在本研究基礎(chǔ)之上,開(kāi)發(fā)國(guó)產(chǎn)多核處理器BWDSP1042具有通用標(biāo)準(zhǔn)參數(shù)的高效率底層其他優(yōu)化算法函數(shù)庫(kù),實(shí)現(xiàn)函數(shù)庫(kù)與軟件開(kāi)發(fā)環(huán)境的集成,滿足大多數(shù)用戶使用,為DSP核心器件國(guó)產(chǎn)化打下基礎(chǔ),為該芯片成功推向民用市場(chǎng)奠定基礎(chǔ)。

猜你喜歡
指令優(yōu)化
聽(tīng)我指令:大催眠術(shù)
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
由“形”啟“數(shù)”優(yōu)化運(yùn)算——以2021年解析幾何高考題為例
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
殺毒軟件中指令虛擬機(jī)的脆弱性分析
基于低碳物流的公路運(yùn)輸優(yōu)化
主站蜘蛛池模板: 亚洲国产看片基地久久1024| 四虎AV麻豆| 国产精品自在在线午夜区app| 最新无码专区超级碰碰碰| 亚洲日本www| 日韩一级二级三级| 99热这里只有精品免费| 国产小视频免费| 国产日韩精品欧美一区灰| 亚洲熟女中文字幕男人总站| 久草热视频在线| 国产99热| 国内精品自在自线视频香蕉| 国产欧美视频一区二区三区| 亚洲区第一页| 99激情网| 九九热视频在线免费观看| 国产手机在线ΑⅤ片无码观看| 国产精品成人一区二区不卡| 成人国产精品一级毛片天堂| 亚洲第一在线播放| 欧洲在线免费视频| 天天综合色天天综合网| 秋霞一区二区三区| 亚洲国产一成久久精品国产成人综合| 日本精品影院| 中文字幕欧美日韩高清| 狠狠综合久久| 性网站在线观看| 久久99久久无码毛片一区二区| 精品久久国产综合精麻豆| 国产美女精品人人做人人爽| 久草中文网| 亚洲天天更新| 99九九成人免费视频精品 | 久久午夜夜伦鲁鲁片不卡| P尤物久久99国产综合精品| 精品国产一区二区三区在线观看| 国产精品自在在线午夜区app| 一级看片免费视频| 99热这里只有精品免费| 老司机精品久久| 亚洲欧美日韩天堂| 日本一区二区三区精品视频| 国产免费网址| 国产一级毛片高清完整视频版| 全部免费毛片免费播放| 国产农村妇女精品一二区| 国产成人夜色91| 日韩av手机在线| 久久成人国产精品免费软件| 欧美无专区| 免费va国产在线观看| 国产成人AV综合久久| 视频一区视频二区中文精品| 国产福利免费观看| 久久精品中文无码资源站| 国产男女免费完整版视频| 国产精品一区不卡| 福利在线不卡一区| 伊人色天堂| 美女无遮挡免费视频网站| 免费观看成人久久网免费观看| 日韩不卡免费视频| 欧美国产日韩在线观看| 九九热精品视频在线| 欧洲精品视频在线观看| 亚洲成年网站在线观看| 亚洲第一成网站| 午夜福利无码一区二区| 国产麻豆另类AV| 欧美亚洲一区二区三区导航| 久久国产精品电影| 九九这里只有精品视频| 天天激情综合| 欧美不卡视频在线| 在线国产资源| 99国产在线视频| 国产欧美日韩在线一区| 人妻精品久久久无码区色视| 国产成人无码久久久久毛片| 99久久精品免费观看国产|