面向向量处理器的基于SIMD的FFT并行计算方法技术

技术编号:7199892 阅读:471 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种面向向量处理器的基于SIMD的FFT并行计算方法,包括以下步骤:根据FFT变换的长度N和向量处理单元的数目M,确定迭代级数L和混洗级数K,并计算蝶形因子数目(N+M×(K-2));其中N=2L,M=2K;在向量存储体中分配两块存储区,其中,第一块存储区的大小为N×W,第二块存储区的大小为(N+M×(K-2))×W;从ASRAM中将待运算数据加载到第一块存储区,蝶形因子加载到第二块存储区;取出待运算数据和相应的蝶形因子,前(L-K)级,进行蝶形运算后结果返回到原存储位置,后K级数据经混洗后进行一级蝶形运算,再混洗,结果返回原存储位置。本发明专利技术原理简单且操作方便,能提高计算速度。

【技术实现步骤摘要】

本专利技术涉及向量处理器以及数字信号处理领域,尤其涉及一种用于向量处理器的基于SIMD的FFT并行计算方法。
技术介绍
随着4G无线通信技术,高清视频图像处理技术的发展,向量处理器得到了广泛的应用。图1为向量处理器的一般性结构示意图,其中向量处理器一般由M个向量处理单元 (PE)组成,每个PE包含数个功能单元,一般包括ALU (算术逻辑单元)、MAC (乘法单元)、 BP(移位单元)等,这些功能部件可以读写一组局部寄存器每个PE包含一组局部寄存器, 所有PE的同一编号的局部寄存器在逻辑上又组成一个向量寄存器。例如图1中ΡΕ_0 PE_ M-I的所有Rtl寄存器在逻辑上组成了向量寄存器VRtl,每个PE所对应的Rtl称为向量寄存器 VR。的一个元素。向量处理器采用SIMD(单指令流多数据流,Single Instruction stream Multiple Data streams)的方式,在同一条向量指令的控制下,M个PE同时对各自同一编号的局部寄存器进行相同的操作,用以开发应用程序的数据级并行性,其高效性在解决运算密集型的应用中具有很大的优势。而VLIW (Very Long Instruction Word,超长指令字) 是指一种非常长的指令组合,它把许多条指令连在一起,增加了运算速度。FFT (Fast Fourier ^Transform,快速傅里叶变换)算法大大减少了离散傅里叶变换(DFT)的计算量。例如,N点DFT变换,其计算量为N2,基2的FFT的计算量为Nlo&N,因此被经常被用来实现数据从时域到频域的转换,是OFDM (Orthogonal Frequency Division Multiplexing,正交频分复用)解调、图像信号处理、GPS卫星定位等许多系统中的核心算法,得到了越来越广泛的应用。传统的FFT算法的实现方法多种多样,一般采用通用处理器或单独的数字信号处理器来串行进行FFT运算。FFT对运算速度和数据的吞吐能力都有很高的要求,如何高效实现FFT算法一直是业界研究的热点问题。根据FFT算法的特点,在每一级的所有FFT蝶形单元中,前后两个待运算数据是等间隔的,并进行同样结构的基本蝶形运算,如图2为按频率抽取基2FFT基本蝶形图,蝶形单元的数据间隔为N/2,且两数之和存回第一个数据的原位置,两数之差与蝶形因子的积存回第二个数据的原位置,这个特性非常适合进行数据的并行处理,因此提出一种在向量处理器上基于SIMD实现FFT并行计算的方法。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术存在的问题,本专利技术提供一种原理简单、操作方便、能充分利用向量处理器的多级并行性特点,提高计算速度的面向向量处理器的基于SBffi的FFT并行计算方法。为解决上述技术问题,本专利技术采用以下技术方案一种面向向量处理器的基于SIMD的FFT并行计算方法,其特征在于包括以下步骤(1)根据FFT变换的长度N和向量处理单元的数目M,确定迭代级数L和混洗级数 K,并计算蝶形因子数目J ;其中N = 2S M = 2K (2)在向量存储体中分配两块存储区,其中,第一块存储区的大小为NXW,第二块存储区的大小为JXW,其中W为待运算数据宽度;从ASRAM中将待运算数据加载到第一块存储区,蝶形因子加载到第二块存储区;(3)从向量存储体中取出待运算数据和相应的蝶形因子,判断是否为前(L-K)级, 若是,则基于VLIW和SIMD对待运算数据进行一级蝶形运算,并将运算结果返回到向量存储体中的原存储位置,转到步骤(5),否则,转到步骤;(4)将待运算数据进行混洗操作,基于VLIW和SIMD对待运算数据进行一级蝶形运算,对运算结果进行混洗操作,并将操作结果返回到向量存储体中的原存储位置;(5)判断是否已运算了 L级,若没有,则返回步骤(3);若是,则完成并结束计算。作为本专利技术的进一步改进所述向量存储体包括M个存储块,所述M个存储块与M个向量处理单元依次一一对应;M个存储块统一编址,按BANK交叉存放(指第一个字在第一个BANK存放,第二个字在第二个BANK存放,...,直到第M个字在第M个BANK存放。然后第M+1个字又在第一个 BANK存放,...,依次类推);每个存储块分成上存储区和下存储区并支持同时进行两个向量访存操作。所述步骤O)中将待运算数据加载到第一块存储区,具体包括以下步骤将待运算数据平均分为第一部分数据和第二部分数据,所述第一部分数据的存储地址结束于所述上存储区的最后端,所述第二部分数据的存储地址开始于所述下存储区的最前端,所述第一部分数据和第二部分数据的存储地址连续。所述基于VLIW和SIMD对待运算数据进行蝶形运算时,采用3重循环控制,第1重循环控制迭代级数,第2重循环控制相同子序列个数,第3重控制单个子序列运算次数。当第3重循环次数少于循环填充次数(循环体之外的填充次数)时,所述第2重循环和第3重循环的顺序互换。所述步骤O)中将蝶形因子加载到第二块存储区时,前(L-K)级蝶形因子连续存储,最后K级的蝶形因子存储时每级存储M个,蝶形因子数为M/2个的蝶形因子连续存储2 次、蝶形因子数为M/4个的蝶形因子连续存储4次……依此类推,最后一级的蝶形因子不存储;则蝶形因子数目J = N+MX (K-2)。前(L-K)级的蝶形因子存储时,只存储奇数级的蝶形因子;计算时,偶数级的蝶形因子与前一级的蝶形因子共用;最后K级的蝶形因子存储时每级存储M个,蝶形因子数为M/2个的蝶形因子连续存储2次、蝶形因子数为M/4个的蝶形因子连续存储4 次……依此类推,最后一级的蝶形因子不存储;当(L-K)为偶数时,蝶形因子数目J = 2X (N-M)/3+MX (K-I);当(L-K)为奇数时,蝶形因子数目 J = 2X (N_M/2)/3+MX (K-I)。与现有技术相比,本专利技术的优点在于1、本专利技术的面向向量处理器的基于SIMD的FFT并行计算方法,每次前后连续取M 个数据,M个PE并行进行蝶形运算,这种基于SIMD的面向向量处理器的向量化实现方法是提高FFT计算性能的有效方法。能够充分利用向量处理器的向量计算特点、挖掘向量处理器的多级并行性,充分开发了 FFT算法的数据并行性,能够大幅度提高FFT的运算速度。2、本专利技术的面向向量处理器的基于SIMD的FFT并行计算方法,待运算数据的存储方式,既保持了待运算数据前后部分的连续存储,便于数据共享和程序的循环控制,又最大程度减少了访存冲突,避免了不必要的开销。蝶形因子的存储方式,利用蝶形因子的可重用性,减少了蝶形因子的数量,节省了存储空间。待运算数据和蝶形因子在向量存储器中连续存储,且与向量处理单元的ΡΕ_0 PE_M-1 —一对应,为M个PE提供高带宽的数据访问提高支持。附图说明图1是现有的向量处理器的结构示意图。图2是本专利技术的按频率抽取基2FFT基本蝶形图。图3是本专利技术的总流程图。图4是本专利技术的向量存储体的结构示意图。图5是本专利技术具体实施例的数据存储示意图。图6是本专利技术具体实施例中以N = 8点FFT为例的FFT运算的迭代示意图。图7是本专利技术的混洗方式示意图。图8是本专利技术具体实施例的混洗方式示意图。具体实施例方式以下将结合说明书附图和具体实施例对本专利技术作进一步详细说本文档来自技高网
...

【技术保护点】
1.一种面向向量处理器的基于SIMD的FFT并行计算方法,其特征在于包括以下步骤:(1)根据FFT变换的长度N和向量处理单元的数目M,确定迭代级数L和混洗级数K,并计算蝶形因子数目J;其中N=2L,M=2K;(2)在向量存储体中分配两块存储区,其中,第一块存储区的大小为N×W,第二块存储区的大小为J×W,其中W为待运算数据宽度;从ASRAM中将待运算数据加载到第一块存储区,蝶形因子加载到第二块存储区;(3)从向量存储体中取出待运算数据和相应的蝶形因子,判断是否为前(L-K)级,若是,则基于VLIW和SIMD对待运算数据进行一级蝶形运算,并将运算结果返回到向量存储体中的原存储位置,转到步骤(5),否则,转到步骤(4);(4)将待运算数据进行混洗操作,基于VLIW和SIMD对待运算数据进行一级蝶形运算,对运算结果进行混洗操作,并将操作结果返回到向量存储体中的原存储位置;(5)判断是否已运算了L级,若没有,则返回步骤(3);若是,则完成并结束计算。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘仲陈书明刘衡竹黄君辉陈跃跃龚国辉陈海燕孙永节万江华
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43

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

1