專利名稱:一種大點(diǎn)數(shù)fft在處理器上的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種改進(jìn)型快速傅立葉變換(FFT)算法在處理器上實(shí)現(xiàn)大點(diǎn)數(shù)FFT的方法,屬于信號(hào)處理領(lǐng)域。
背景技術(shù):
快速傅里葉變換(FFT)廣泛應(yīng)用于雷達(dá)、通信和圖像處理等科學(xué)技術(shù)領(lǐng)域,這使得FFT的工程實(shí)現(xiàn)具有十分重要的意義。特別是,在雷達(dá)系統(tǒng)中高分辨大測(cè)繪帶寬的合成孔徑雷達(dá)的飛速發(fā)展,對(duì)信號(hào)處理系統(tǒng)大數(shù)據(jù)的高速實(shí)時(shí)處理提出了更高的要求,這就需要信號(hào)處理中大點(diǎn)數(shù)FFT的快速實(shí)現(xiàn)。在實(shí)際應(yīng)用中,一般采用專用數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)。TS201是美國(guó)模擬器件公司的一款高性能、高并行的靜態(tài)超標(biāo)量處理器。在TS201處理器中,其內(nèi)部嵌入了 24Mbit的嵌入式DRMA,整個(gè)DRAM劃分為6個(gè)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊都通過(guò)交叉連接器分別連接4套128位寬的內(nèi)部總線,因此處理器能夠在同一個(gè)時(shí)鐘內(nèi)實(shí)現(xiàn)對(duì)4個(gè)存儲(chǔ)塊的訪問(wèn)。這些交叉連接器包含預(yù)取數(shù)緩沖、讀緩沖、回存緩沖和高速緩沖,其連接
圖1所示。TS201通過(guò)地址總線和數(shù)據(jù)總線對(duì)DRAM進(jìn)行讀寫數(shù)據(jù)操作時(shí),首先會(huì)將數(shù)據(jù)緩存到緩沖區(qū)(Cache)內(nèi),內(nèi)核在讀取數(shù)據(jù)時(shí)會(huì)先直接從Cache中讀取數(shù)據(jù),如果不能在Cache中命中數(shù)據(jù),再?gòu)腄RAM中讀取數(shù)據(jù)。因此,通過(guò)Cache的預(yù)緩存作用可以提高內(nèi)核對(duì)DRAM的讀寫效率。但是Cache的大小有限,當(dāng)進(jìn)行大點(diǎn)數(shù)FFT處理時(shí),Cache不能容納整個(gè)序列的數(shù)據(jù),那么一部分在Cache中另一部分在DRAM中,將會(huì)帶來(lái)讀取速度較慢,以及訪問(wèn)錯(cuò)誤等問(wèn)題?,F(xiàn)有多種FFT算法在TS201上實(shí)現(xiàn),例如Winograd算法?,F(xiàn)將該算法介紹如下:設(shè)FFT變換前的序列為X (n),F(xiàn)FT變換后的序列為X (k):
權(quán)利要求
1.一種大點(diǎn)數(shù)FFT在處理器上的實(shí)現(xiàn)方法,其特征在于,包括: 步驟一、將待處理的一維序列x(n)分L段存儲(chǔ)為L(zhǎng)XM的二維矩陣,L為列的長(zhǎng)度,M為行的長(zhǎng)度;設(shè)定后續(xù)步驟二中每次讀取i列數(shù)據(jù),i為正整數(shù),則在保證Z ^ cacheYngth的基礎(chǔ)上,使行長(zhǎng)度M小于或等于CacheLength ;CacheLength為處理器所用Cache的容量; 步驟二、處理器進(jìn)行列FFT ; 處理器每次從LXM 二維矩陣中讀取i列數(shù)據(jù),通過(guò)Cache的緩存放入內(nèi)存的指定空間,然后從指定空間讀取數(shù)據(jù)并進(jìn)行列FFT,并將結(jié)果原位存回LXM 二維矩陣;假設(shè)根據(jù)處理器數(shù)據(jù)寬度的限制,處理器每次處理數(shù)據(jù)量為w列,則i的取值為w的整數(shù)倍;讀取的i列數(shù)據(jù)分I次處理;處理器共讀取I次數(shù)據(jù)并進(jìn)行列FFT,從而實(shí)現(xiàn)M次L點(diǎn)的列FFT ; 步驟三、處理器進(jìn)行行FFT ; 處理器每次從步驟二處理后的L X M 二維矩陣中讀取一行數(shù)據(jù),通過(guò)Cache的緩存放入內(nèi)存的指定空間,然后從指定空間讀取緩存數(shù)據(jù)并進(jìn)行行FFT,并將結(jié)果按照列方向輸出;處理器共讀取L次數(shù)據(jù)并進(jìn)行行FFT,從而實(shí)現(xiàn)L次M點(diǎn)的行FFT ; 本步驟的行FFT運(yùn)算時(shí)第b級(jí)蝶形運(yùn)算所用的旋轉(zhuǎn)因子W(b,u)由下式確定:W(b,u) = W^(b)-W^其中,Wn=e~2 n,P(b) = N/2c_b, Q(b) = M/2c_b ; b表示FFT算法中蝶形運(yùn)算的當(dāng)前級(jí)數(shù);` c表示FFT算法中所包含蝶形運(yùn)算的總級(jí)數(shù),c = 1g2 (M); U表示b級(jí)蝶形運(yùn)算輸出序列的序號(hào),取值范圍是u = 0,1,...,Q(b)-1 ; k0為當(dāng)前進(jìn)行FFT變換的行數(shù)據(jù)的行序號(hào)。
全文摘要
本發(fā)明公開了一種大點(diǎn)數(shù)FFT在處理器上的實(shí)現(xiàn)方法,能夠解決傳統(tǒng)FFT算法在處理器上實(shí)現(xiàn)大點(diǎn)數(shù)快FFT時(shí)沒(méi)有充分考慮Cache丟失對(duì)執(zhí)行效率影響的問(wèn)題,改進(jìn)了傳統(tǒng)Winograd算法處理速度有限的問(wèn)題。該方法包括將一維序列存儲(chǔ)為二維矩陣;處理器先列FFT每次從二維矩陣中讀取i列數(shù)據(jù),讀取的i列數(shù)據(jù)分次處理,則處理器共讀取并處理次;其中,在保證列長(zhǎng)度的基礎(chǔ)上,使行長(zhǎng)度M小于或等于處理器所用Cache的容量;處理器再進(jìn)行行FFT,一次一行,且采用新的旋轉(zhuǎn)因子,并將結(jié)果按照列方向輸出。
文檔編號(hào)G06F17/14GK103106181SQ20131003481
公開日2013年5月15日 申請(qǐng)日期2013年1月29日 優(yōu)先權(quán)日2013年1月29日
發(fā)明者高立寧, 劉峰, 馬瀟, 劉騰飛 申請(qǐng)人:北京理工大學(xué)