一种面向通用处理器的fft计算地址产生方法

文档序号:6377795阅读:389来源:国知局
专利名称:一种面向通用处理器的fft计算地址产生方法
技术领域
本发明属于计算机技术领域,涉及数字信号处理领域的算法实现。
背景技术
通用处理器通常都具有专门的地址产生模块,用于处理器访存操作时产生操作数的地址,地址产生模块支持多种寻址模式,可根据处理器指令中指定的寻址方式快速产生操作数的地址。为了便于对一块存储区间进行循环操作,大多数通用处理器都支持循环寻址模式,地址产生模块根据循环寻址的范围产生一定区间的操作数地址。循环寻址需要关注两个信息基地址和偏移地址,基地址通常指向一块存储体或存储区间,偏移地址表示操作数·在指定存储区间内的相对位置。进行循环寻址时,地址产生模块根据循环区间的大小对偏移地址进行取模操作,并产生最终的操作数地址。常用的取模循环操作可以满足大多数计算的寻址需求,但是在进行一些复杂计算时则显得不够灵活,比如进行数字信号处理时常用的FFT (Fast Fourier Transform:快速傅里叶变换)计算。FFT计算通常被分解为M级的基2蝶形运算,级数由FFT计算的点数N确定M =Iog2N-I ;每一级FFT计算都选取N/2组操作数对进行蝶形运算。常用的基于时域抽取的基2 FFT算法,其蝶形运算的公式如下
—i-V- i I ( ") = (厂)+(")八+ 1\公式 I
Uw (《)=xm O) - WnrXm {q)式中为蝶形运算的旋转因子,一般通过查找表的方式获得。式中p、q为选取的一组操作数对,对于N点FFT计算,每一级计算都要选取N/2组操作数对进行公式I的计算,其P、Q满足公式q-p = 2m公式 2以8点FFT计算为例,其进行第一级蝶形运算的操作数对为(0、2)、(1、3)、(4、6)、(5、7);进行第二级蝶形运算的操作数对为(0、4)、( 1、5)、(2、6)、(3、7),可见其操作数地址的排列顺序不具备递增性。正是由于每次选取的操作数对P、q不具备递增性,因此通用处理器在进行每一级FFT计算时,无法通过常用的取模循环寻址方式连续产生操作数的地址,而需要频繁插入寄存器赋值指令更改操作数地址,这就增加了通用处理器进行FFT计算的复杂度,降低了 FFT计算的效率。针对FFT计算的地址产生方法已经有很多方面的研究,例如将蝶形运算的操作数地址分为高位地址和低位地址,通过引入隐含位并增加移位计数器实现操作数地址的快速产生。这一类地址产生方法可应用于专用的FFT计算模块,但由于不能有效利用通用处理器地址产生模块已有的资源,在通用处理器中实现的代价比较大,因此有必要设计一种通用处理器进行FFT计算时的地址产生方法,使得通用处理器能够连续快速地产生FFT计算时的操作数地址。

发明内容
为了克服现有技术操作数地址产生比较复杂的不足,本发明提供一种面向通用处理器的FFT计算地址产生方法,能优化FFT计算时操作数的排列顺序,扩展通用处理器中常用的循环寻址模式,使得通用处理器可以连续产生FFT计算的操作数地址。本发明解决其技术问题所采用的技术方案包括以下步骤I.优化FFT计算中蝶形运算操作数的选 取顺序每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为(Pt,qt) ,0 彡 t 彡 N/2-1 ;第M级FFT计算的操作数对从地址O开始选取,目卩Ptl = O ;pt、qt 满足 qt-pt = 2m ;操作数的选取满足公式
[qt+2mqt+2m <N-lP,+ι = I
l((i/,.+2")m0d(,V —1)) + 1qt+2m>N-l·2.扩展通用处理器的循环寻址模式增加循环超界地址加一、循环超界地址加二和循环超界地址加四;3.通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址通用处理器进行第M级的N点FFT计算时都从地址O开始选取操作数对进行蝶形运算,并按照偏移量为2m、循环界限为N-I的循环超界地址加一模式顺序产生操作数地址。本发明的有益效果是本发明优化了 FFT计算中蝶形运算操作数对的选取顺序,扩展了通用处理器的循环寻址模式,使通用处理器可以连续、快速的产生FFT计算的操作数地址,提高了通用处理器进行所述复杂运算的执行效率,可应用于通用处理器的地址产生模块。


图I是进行基于时域抽取的8点FFT计算的流程图。
具体实施例方式本发明采用如下的技术解决方案I.优化FFT计算中蝶形运算操作数的选取顺序每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为(pt,qt),其中O彡t彡N/2-1。第M级FFT计算的操作数对从地址O开始选取,目卩Ptl = O ;pt、qt的选取依然满足公式2 qt-pt = 2m ;操作数的选取满足公式
\qt+TCJt+2m <N-Irx jpM公式 3
Ι( /, -I-1") rnocK N - Π) +1 if q; -r 2 > N -1
公式3说明每次选取的一组操作数中的pt+1由上一次选取的一组操作数中的qt决定,两者相差2m,如果qt+2m超过了 FFT计算的点数N_l,则按照取模mod(N-l)加一的方法
产生Pt+1。优化后的操作数P的地址由上一组操作数q的地址偏移加2m决定,而操作数q的地址由本组操作数P的地址偏移加2m产生,这就使每一级FFT计算操作数的排列顺序具备了一定的递增性。2.扩展通用处理器常用的循环寻址模式通用处理器常用的循环寻址方式为取模循环,为了实现上述优化后的蝶形运算操作数对的选取顺序,便于通用处理器连续产生FFT计算操作数的地址,需要扩展通用处理器已有的循环寻址模式,增加循环超界地址加一、循环超界地址加二和循环超界地址加四这三种模式,其中后两种模式是为了实现基于频域抽取的FFT计算的地址产生。扩展的循环寻址模式如表I所示。3.通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址通用处理器进行第M级的N点FFT计算时都从‘0’地址开始选取操作数对进行蝶形运算,并按照偏移量为2m、循环界限为N-I的循环超界地址加一模式顺序产生操作数地址。 下面结合附图和实施例对本发明进一步说明。图I是进行基于时域抽取的8点FFT计算的流程图。8点FFT计算分为三级(第O级、第I级、第2级),每一级FFT计算中蝶形运算操作数对的地址按照优化后的顺序选取,其中第O级的选取顺序为(0、1)、(2、3)、(4、5)、(6、7);第I级的选取顺序为(0、2)、(4、6)、(1、3)、(5、7);第 2 级的选取顺序为(0、4)、(1、5)、(2、6)、(3、7)。通用处理器在进行所述8点FFT计算时,地址产生模块按照循环超界地址加一的模式顺序产生操作数地址。地址产生模块通常维护三种与寻址相关的寄存器地址寄存器(AR)、偏移量寄存器(IR)、循环寻址寄存器(IRM)。所述寄存器均可由处理器通过指令写入数据,地址寄存器(AR)还可由地址产生模块更新写入数据。进行第O级FFT计算时,处理器通过指令设定起始地址AR为O、偏移量IR为2° =I、循环界限IRM为8-1=7,并通过连续8次普通循环寻址顺序产生4对操作数的地址(0、1)、(2、3)、(4、5)、(6、7)。在进行第I级FFT计算时,如表2所示,处理器通过指令设定起始地址AR为O、偏移量IR为21 = 2、循环界限IRM为8-1 = 7,并通过连续8次循环超界地址加一的寻址模式顺序产生优化后的4对操作数地址(0、2)、(4、6)、(1、3)、(5、7)。在进行第2级FFT计算时,如表3所示,处理器通过指令设定起始地址AR为O、偏移量IR为22 = 4、循环界限IRM为8-1=7,并通过连续8次循环超界地址加一的寻址模式顺序产生优化后的4对操作数地址(0、4)、(1、5)、(2、6)、(3、7)。通用处理器采用本发明设计的循环寻址方式进行N点FFT计算时,只需在每一级FFT计算之前通过指令设定一次寻址寄存器组,地址产生模块便可根据扩展的循环寻址模式顺序产生蝶形运算操作数对的地址。若不采用本发明设计的寻址方式,除第O级以外的其他各级FFT计算,由于操作数地址不具备递增性,处理器均无法通过普通的循环寻址模式顺序产生操作数地址,因此需要通过指令设定N/2次寄存器组,当进行点数较多(例1024点)的FFT计算时,处理器的控制将更加复杂,计算效率大大降低。表I
助记符_w__助记符__mm_
addr = ARnaddr = ARn
普通余A如
ARn = (ARn+IRm)mod(IRMm)ARn = (ARn-IRm)myd(!RMiii)
循环·
寻址
addr = ARnaddr = ARn
^ARn++(IRin)%l 如果循环超界_果循环超界
ARn = ARii-IRm-IRMm+l ^ARii-{IRm)%lARn = ARii-IRm+IRMm-l
如果循环农超界如果循环未超界
ARn = ARn +IRmARn=ARn-IRm
^ ARn++ 扩展 addr = ARnaddr =ARn
.. ^ 如果循环超界如栗循环超界
傭外 ^ARn-H-{IRm3%2 ARn = ARn-IRm-IRMm+2 *ARn-(IRm)%2ARn = ARn-IRm+IRMra-2
如果循环未超界如果循环未超界
ARn = ARii + IRmARii = ARii — Irm
addr = Al<naddr=Alln
如果循环超界如果循环超界
ψ ARn-H-( IRib) %4 ARn - ARn-IRm-IRMm+4 liiARji-(IRin)1MARn 二 ARn-IRm+IRMm-4
如果循环未起界如果閛环未超羿
ARn ^ ARii + IRmARn = ARn - Imi
如果循环超界 '' 如果循环超界
普通 addr = ARn+IRra-IRMmad4r ^ ARn-IRm+IRMm
ARn = ARn-TRm-IRMmARn = ARn-lRm+iRMm
*++ARn(IRni)0Zo ( ^ *--ARn(IRm)%, ,
如果循环宋超界如果循坏未超界
addr = AKn+lllmaddr = ARn-IRm
寻址 ARn = ARn-IRmARii = ARn - Iim
如果循环超界kmmm-fr
^4-4-A^n
addr - ARn+IRm-IRMm+1addr = ARn-IRm+IRMm-1
ARii 二 ARii-lRm-IRMm+lARn 二 ARn-iRm+lRMm-1
如果循坏未超界如果衛斗+超界
addr = ARn+IRinaddr 二 ARn-IRm
扩展 ARn = AKn~MRmAKn = ARn-Irm
極钚如果循环超界果循环超界
aAir = ARn+iRm-iRMin+2addr — ARn-!Rm+fRMm-2
,, ^ ARn = ARn-IRm-IRMm十2 .ARii =ARii-IRm+IRMm-2 寻址*++她_ )%2如果循环宋超界 *--ARn卿)%2 _循环宋超界
addr = ARn+IRmaddr = ARn-IRni
ARii = ARii + IRinARii = ARii-Irai
如果循坏超羿·如果循坏超界
addr = ARn+IRm-IRMm+4uddr = ARn-IRm+IRMra-4
m ARn = ARn- IRm-IRMm+4m 11 ARn = ARn-IRm+IRMm-4
s^ARn(IRm)0ZWARn{iRm)%4 t
' } 如果循环未超界} 如果循环+超界
addr = ARn+IRmaddr = ARn-IRm
ARn = ARn + IRtriARn = ARn - Irm表权利要求
1.一种面向通用处理器的FFT计算地址产生方法,其特征在于包括下述步骤I)优化FFT计算中蝶形运算操作数的选取顺序每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为 (pt,qt),0 彡 t 彡 N/2-1 ;第M级FFT计算的操作数对从地址O开始选取,即Ptl = O ;Pt、Qt 两足 Qt-Pt = 2m ;操作数的选取满足公式2)扩展通用处理器的循环寻址模式增加循环超界地址加一、循环超界地址加二和循环超界地址加四;3)通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址通用处理器进行第M级的N点FFT计算时都从地址O开始选取操作数对进行蝶形运算, 并按照偏移量为2m、循环界限为N-I的循环超界地址加一模式顺序产生操作数地址。
全文摘要
本发明提供了一种面向通用处理器的FFT计算地址产生方法,首先优化FFT计算中蝶形运算操作数的选取顺序,然后扩展通用处理器的循环寻址模式,最后通过扩展的循环寻址模式产生每一级FFT计算操作数的地址。本发明优化了FFT计算中蝶形运算操作数对的选取顺序,扩展了通用处理器的循环寻址模式,使通用处理器可以连续、快速的产生FFT计算的操作数地址,提高了通用处理器进行所述复杂运算的执行效率,可应用于通用处理器的地址产生模块。
文档编号G06F9/34GK102929582SQ20121036393
公开日2013年2月13日 申请日期2012年9月26日 优先权日2012年9月26日
发明者杨靓, 于飞, 王丹 申请人:中国航天科技集团公司第九研究院第七七一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1