一种用于并行FFT计算的数据存取方法及装置制造方法及图纸

技术编号:7287566 阅读:274 留言:0更新日期:2012-04-22 04:10
本发明专利技术提供一种用于并行FFT计算的数据存取方法及装置。该方法将FFT计算数据和旋转因子存放在多粒度并行存储器中,并用统一的蝶形表达式对整个计算过程中的FFT数据和对应的旋转因子进行分组,每分组数据包含多个蝶形,可并行计算;同时根据该蝶形表达式,可方便生成各个分组的数据地址和旋转因子系数地址,利用不同的读写粒度,可从多粒度存储器中并行读写数据和对应的旋转因子。本发明专利技术还提供一种用于并行FFT计算的数据存取装置。利用本发明专利技术,数据的读写过程中不会产生存储器冲突,也不需要额外的步骤再对读写数据进行排序,同时,本发明专利技术可根据具体实现灵活指定并行粒度。

【技术实现步骤摘要】

本专利技术主要涉及数据存取领域,尤其是一种用于并行FFT计算的数据存取方法及直ο
技术介绍
信号处理系统经常需要将信号内容在时域和频域进行转换,快速傅立叶变换算法 (FFT)可进行时域和频域间的信号转换。相对于其它转换算法来说,快速傅立叶变换算法具有结构统一、计算量少的优点,因此广泛应用于信号处理系统中。FFT算法输入N个数据,输出N个数据;一般称时域至频域的变换为正向变换,而频域至时域的变换变逆向变换。FFT算法有多种实现方式,但都由库利-图基算法演变而来。对于N个数据点,基2的库利-图基算法包括Iog2N个计算级。每个计算级输入N个数,输出N个数;前一计算级的输出经过一定的排序后作为后一计算级的输入。第一级输入为原始数据,最后一级输出为FFT计算结果,计算流程如图1所示,图中假定数据点长度为 8,整个计算过程需要三个计算级103 :S0、S1、S2。每个计算级103由N/2个蝶形102组成,蝶形的计算流程如图2所示。每个蝶形输入两个数据点A和B,以及一个旋转因子W,经过蝶形计算后得到两个计算结果A+BW和 A-BW。每个蝶形计算中,输入数据A和B的序号具有确定的对应关系,该对应关系由蝶形所在的计算级以及输入数据A或B的序号来确定;同时,旋转因子W的值由当前蝶形所在的计算级103、输入数据A或B的序号、FFT数据长度确定。如图1中SO计算级中的第1个数据必定与第O个数据构成一蝶形,并且第O个数据为蝶形输入的A,第1个数据为蝶形输入的 B,而W的值为1。而Sl计算级中的第1个数据必定与第3个数据构成一蝶形,并且第1个数据为蝶形输入的A,第3个数据为蝶形输入的B,而W的值为1。计算级之间存在数据相关,后一计算级必须等待前一计算级完成以后才能开始计算。因此,每级计算完成后都需要将结果存放在存储器中,下一级计算从存储器中读取上一级的计算结果作为本级计算的输入。计算级内的蝶形相互独立,蝶形的计算顺序不影响计算结果,但每个蝶形所读取的数据A、B和旋转因子W必须满足内在的对应关系。在并行FFT计算中,运算部件从多粒度并行存储器中读取多个蝶形所需数据及对应的旋转因子,并行计算多个、多级蝶形,然后将计算结果并行写入存储器,以便进行一下级计算,如图4所示。图中假定数据长度为64,并行粒度为4,即多粒度并行存储器400 — 次可读写4个数据。此时,两相邻计算级中存在数据相关的4个蝶形403构成一个蝶形组 402,两相邻计算级中的蝶形组构成一计算节401。蝶形计算模块301从存储器300或302 中并行读取一个蝶形组所需数据点,从存储器303中并行读取所需旋转因子,完成一个蝶形组计算后,再将计算结果并行写回存储器300或320,如图3所示。在蝶形组402中,每个蝶形的输入A、B、W仍必须满足其内在的对应关系,因此,并行FFT算法中必须考虑计算数据和旋转因子在存储器中的分布,以及每个蝶形组402的读写地址和读写方式,以保证蝶形计算模块每次都能并行读取所需数据和旋转因子。大部分并行FFT算法相关的专利都着重讨论如何将长序列的FFT数据分解成多个短序列的FFT,利用多个处理器并行计算各个短序列的FFT,最后对多个短序列的 FFT进行交织计算,得到最终的长序列FFT结果,如美国专利US 6,792,441B2 (Parallel Multiprocessing For Fast Fourier Transform With Pipeline Architecture)。这一类算法都没考虑多个处理单元同时访问存储器时的冲突问题,以及多个处理器如何交织多个短序列FFT结果;而实际应用中,存储器访问冲突以及处理器之间的同步和通信效率将严重影响 FFT 的计算效率。美国专利 US 6,304,887B1 (FFT-Based Parallel System For Array Processing With Low Latency)讨论了 FFT算法中数据并行读写的问题,该专利将 FFT数据存放在多个存储器中,利用多个数据缓冲区、多个选择器对数据进行排序,以保证每次读写的数据分布在不同的存储器中,实现并行读写。该专利需要专用的存储器、数据缓冲区和选择器,读写地址计算复杂,难以实现不同数据长度、不同读写粒度的并行FFT算法。
技术实现思路
为了解决上述问题,本专利技术提出一种用于并行FFT计算的数据存取方法及装置。本专利技术所提出的一种用于并行FFT蝶形计算的数据存取方法,其特征在于,该方法包括以下步骤步骤1,按照2b的并行粒度,将长度为N的初始FFT数据,分为2e个数据组,其中, G = Iog2N-B ;并将2g个数据组存放在多粒度并行存储器300或302中的2B个存储块804 的各个存储行805中,每个存储块804包含2g_b个数据组,占用2g_b个存储行805 ;步骤2,将每个蝶形组402计算需要的2B_1个旋转因子依次存放在多粒度并行存储器303的存储行中;步骤3,读取多粒度并行存储器300或302中第i个存储块804的第j个存储行 805中存储的FFT蝶形计算所需的数据,读取粒度为2B,其中,i、j的初始值均为0 ;并以2b 的粒度从多粒度并行存储器303中按照存储行的顺序依次读取FFT蝶形计算所需的旋转因子;步骤4,根据读取出的旋转因子,按2b的粒度对读出的第j个存储行805所存储的数据进行并行蝶形计算;步骤5,按1的粒度将蝶形计算结果数据并行写回到多粒度并行存储器300或302 中,当步骤3中从存储器300读取数据时,步骤5将蝶形计算结果数据写回到存储器302中, 反之亦然;步骤6,判断当前存储行号j是否满足j < 2",如果满足,则将j加1后返回到步骤3;否则将j置0,跳到步骤7;步骤7,判断当前存储块号i是否满足i < 2B,如果满足,则将i加1后跳到步骤 3,否则结束。另一方面,本专利技术还提出一种用于并行FFT计算的数据存取装置,其特征在于,该装置包括多粒度并行存储器300、302,多粒度并行存储器303和蝶形计算模块301,其中,多粒度并行存储器300、302构成乒乓结构,交替存放一个计算级401的输入数据或输出数据;多粒度并行存储器303用于存放计算级401所需的旋转因子;蝶形计算模块301用于根据所述多粒度并行存储器303中存放的旋转因子对于从多粒度并行存储器300、302中交替取出的待处理数据进行蝶形计算,并将计算得到的结果交替存放在多粒度并行存储器300、302中;多粒度并行存储器300与蝶形计算模块301之间的连线包括数据线306、地址线 310和存取粒度指示线309 ;多粒度并行存储器302与蝶形计算模块301之间的连线包括数据线305、地址线 312和存取粒度指示线311 ;多粒度并行存储器303与蝶形计算模块301之间的连线包括数据线304、地址线 308和存取粒度指示线307 ;其中,如果从多粒度并行存储器300中读取数据,进行蝶形计算,那么计算得到的结果数据写回到多粒度并行存储器302中,反之亦然。本专利技术方法将FFT数据和旋转因子存放在多粒度并行存储器中,并用统一的蝶形表达式对整个计算过程中的FFT数据和对应的旋转因子进行分组。每分组数据包含多个蝶形,可并行计算;同时根据该蝶形表达式,可本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:谢少林林啸蒿杰薛晓军汪涛尹磊祖
申请(专利权)人:中国科学院自动化研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术