一种基于指令级并行ILP和数据级并行DLP的FFT浮点优化方法技术

技术编号:13986941 阅读:68 留言:0更新日期:2016-11-13 04:28
本发明专利技术公开了一种基于指令级并行ILP和数据级并行DLP的FFT浮点优化方法,其特征是按如下步骤进行:1,确定迭代层数,并将其划分成三层结构;2,通过使用位反序指令等操作,完成入度层计算;3,完成入度层计算后,对即将进行的中间层计算进行分类,对奇数层与偶数层两种情况进行分别运算,并得到中间层计算结果;4,采用模拟宏间传输操作,将中间层计算结果进行调整,并完成出度层计算。本发明专利技术能解决算法中所存在的指令相干与结构限制的问题,并充分发挥运算部件负载效能,从而大幅度提高瓶颈资源的平均利用率。

【技术实现步骤摘要】

本专利技术属于向量处理机以及数字信号处理领域,具体涉及基于ILP和DLP的硬件平台上浮点版本FFT实现高效计算的方法。
技术介绍
离散傅里叶变换(Discrete Fourier Transform,DFT)在现代信号处理系统领域里应用广泛,如雷达信号处理、SAR图像处理、声呐计算、视频图像算法、频谱分析、语音识别等。傅里叶变化计算是典型的计算密集和访存密集型应用,例如N点的DFT变换的计算复杂度为O(N2)。1965年Cooley和Turkey提出一种快速傅里叶变换(Fast Fourier Transform,FFT)计算方法,可显著地减少运算量,计算复杂度由原来的O(N2)降到了O(Nlog2N)。信号处理应用通常对计算的实时性要求很高,FFT计算效率越高,信号处理的实时性就越好。指令级并行(Instruction Level Parallelism,ILP)是指处理器在同一个指令周期内发射多条并行执行的指令。数据级并行(Data Level Parallelism,DLP)是指能够在同一时刻对不同数据进行并行计算的体系结构。基于ILP与DLP的硬件平台通常都会采用VLIW与SIMD技术,使其能够进行大规模的高效的运算。由于ILP与DLP技术相结合的硬件平台较为复杂,基于其的快速傅里叶变换的研究并没有得到展开。
技术实现思路
本专利技术为克服现有技术存在的不足之处,提出一种基于ILP和DLP的FFT浮点优化方法,以期能解决算法中指令相干及结构的限制,并充分发挥运算部件负载效能,从而大幅度提高瓶颈资源的平均利用率。为了解决上述技术问题,本专利技术采用以下技术方案:本专利技术一种基于ILP和DLP的FFT浮点优化方法的特点是按如下步骤进行:步骤1、假设所要计算的FFT输入向量的长度为M,根据所述长度M确定迭代层数为N;其中M=2N;M、N为正整数,且N≥6;定义迭代层数N的前四层为入度层,第五层到第N-2层为中间层;第N-1层和第N层为出度层;步骤2、使用位反序指令,将所述FFT输入向量反序读取到寄存器中,并将入度层所对应的FFT旋转因子读入到相应的寄存器中;步骤3、对存入寄存器中的FFT输入向量和FFT旋转因子进行入度层蝶形计算,得到的入度层计算结果存入暂存空间中;步骤4、将N–4赋值给n;步骤5、判断n是否为奇数,若是,则执行步骤6,否则,执行步骤8;步骤6、从所述暂存空间中读取入度层计算结果与第N-n+1层所对应的旋转因子并进行蝶形计算,得到第N-n+1层计算结果覆盖存储到输入向量空间中;步骤7、将n-1赋值给n;判断n=2是否成立,若成立,则执行步骤10,否则,执行步骤8;步骤8、从所述暂存空间读取计算结果以及第N-n+1层到第N-n+5层所对应的旋转因子并进行蝶形计算,得到计算结果覆盖存储到所述暂存空间中;步骤9、将n-4赋值给n;判断n=2是否成立,若成立,则执行步骤10,否则,执行步骤8;步骤10、通过模拟宏间传输操作,将所述暂存空间中的计算结果转置重排,并读取出度层所对应的旋转因子到相应的寄存器中;步骤11、对转置重排后的计算结果和出度层所对应的旋转因子进行出度层蝶形计算,得到出度层计算结果存储到输出内存空间中;从而完成FFT浮点优化方法。本专利技术所述的基于ILP和DLP的FFT浮点优化方法的特点也在于,所述步骤10中的模拟宏间传输操作是按如下步骤进行:步骤10.1、定义处理器存在K个执行宏,其中,第i个执行宏记为Pi;1≤i≤K;K为正整数;则将连续的K行指令作为一个K×K的模拟宏间传输操作组;步骤10.2、初始化j=1;步骤10.3、初始化i=1;步骤10.4、将第j行指令中第i个执行宏Pi内的数据存储至第j行指令中第(i+j-1)mod K个执行宏P(i+j-1)mod K内;从而将同一个执行宏中不同指令行的数据调整到对应指令行的不同执行宏中;1≤j≤K;步骤10.5、将i+1赋值给i;并判断i>K是否成立,若成立,则执行步骤10.6;否则,返回步骤10.4;步骤10.6、将j+1赋值给j;并判断j>K是否成立,若成立,则完成计算结果的转置重排;否则,返回步骤10.3。与已有技术相比,本专利技术有益效果体现在:1、本专利技术提出一种新的浮点版本FFT优化方法,以适应ILP与DLP硬件平台的特点,通过调整基二Cooley-Tukey算法结构,压缩其计算层数的同时,采用模拟宏间传输操作、内存乒乓操作和高速缓存操作等技术,对基于ILP与DLP技术的硬件平台,进行快速傅里叶变换的高效部署;有效的降低了运行时钟开销,从而提高了硬件平台对于快速傅里叶变换计算的效率;2、由于本专利技术采用三层计算结构模型,使得原本多层结构的计算,变成了三层;从而减少了内外层循环之间调度所导致的寄存器内容刷新与流水线清空所造成的时钟开销;3、由于本专利技术采用了内存乒乓操作,使原本读数与取数存储于一个内存块之中,分成了两块乒乓内存进行存储;从而避免了对于内存同时读写造成的时钟开销,提高了计算效率;4、本专利技术模拟宏间传输操作是采用指令并行技术将数据级并行技术造成的不同执行分簇中的数据,调整到相同执行分簇之中,以保证后续的计算;该操作有效的避免了内存Bank冲突,并且提高了各个执行宏间数据调整的效率;5、本专利技术进一步的发掘蝶形因子的对称性,减少了运算中蝶形因子的预取个数,以达到减少寄存器使用的目的;该操作可以减少近一半的旋转因子,在降低了内存使用空间的同时,减少了寄存器被旋转因子所占用的个数;6、经过实验验证,本专利技术方法在32位浮点版本复数傅里叶变换中,对其1024点输入的运算成功的将时钟周期压缩到了980;各层计算结构中的瓶颈功能部件使用率分别达到了96.68%,98.25%和100%。附图说明图1是本专利技术的总流程图;图2是本专利技术中模拟宏间传输操作流程图;图3是本专利技术中间层计算用到的四层模型。具体实施方式本专利技术的目的是提出一种适用于ILP和DLP硬件平台的浮点版本FFT的优化方法,以期能在其提供的硬件基础设施之上进行高性能的优化。下述的具体实施方式仅以BWDSP104x平台作为实例进行优化方法的讨论,然而本专利技术中优化技术和方法并不仅局限于BWDSP104x平台。任何ILP和DLP的硬件平台都适用于本专利技术的优化方案中。BWDSP104x平台拥有4个执行宏(x,y,z,t),每个宏中有8个算术逻辑单元(ALU),8个乘法器(MUL),4个移位器(SHIFT),1个超算器和一组包含128个寄存器的通用寄存器组。其共有11级流水线,每个指令行最多可同时并行16字指令。本实施例中,一种基于ILP和DLP的FFT浮点优化方法是按如下步骤进行:步骤1、假设所要计算的FFT输入向量的长度为M,根据所述长度M确定迭代层数为N;本实施方案中以输入向量长度为1024为例进行说明,其它长度可按相似方案进行实施;其中M=2N;M、N为正整数,且N≥6;此时的M=10,N=1024;定义迭代层数N的前四层为入度层,第五层到第N-2层为中间层;第N-1层和第N层为出度层;图一为本FFT计算过程的流程图,图中第1-4步描绘了入度层计算过程、第5-7步描绘了中间层计算过程、第8-10步描绘了出度层计算过程;步骤2、使用位反序指令,将所述FFT输入向量反序读取到寄存器本文档来自技高网...

【技术保护点】
一种基于ILP和DLP的FFT浮点优化方法,其特征是按如下步骤进行:步骤1、假设所要计算的FFT输入向量的长度为M,根据所述长度M确定迭代层数为N;其中M=2N;M、N为正整数,且N≥6;定义迭代层数N的前四层为入度层,第五层到第N‑2层为中间层;第N‑1层和第N层为出度层;步骤2、使用位反序指令,将所述FFT输入向量反序读取到寄存器中,并将入度层所对应的FFT旋转因子读入到相应的寄存器中;步骤3、对存入寄存器中的FFT输入向量和FFT旋转因子进行入度层蝶形计算,得到的入度层计算结果存入暂存空间中;步骤4、将N–4赋值给n;步骤5、判断n是否为奇数,若是,则执行步骤6,否则,执行步骤8;步骤6、从所述暂存空间中读取入度层计算结果与第N‑n+1层所对应的旋转因子并进行蝶形计算,得到第N‑n+1层计算结果覆盖存储到输入向量空间中;步骤7、将n‑1赋值给n;判断n=2是否成立,若成立,则执行步骤10,否则,执行步骤8;步骤8、从所述暂存空间读取计算结果以及第N‑n+1层到第N‑n+5层所对应的旋转因子并进行蝶形计算,得到计算结果覆盖存储到所述暂存空间中;步骤9、将n‑4赋值给n;判断n=2是否成立,若成立,则执行步骤10,否则,执行步骤8;步骤10、通过模拟宏间传输操作,将所述暂存空间中的计算结果转置重排,并读取出度层所对应的旋转因子到相应的寄存器中;步骤11、对转置重排后的计算结果和出度层所对应的旋转因子进行出度层蝶形计算,得到出度层计算结果存储到输出内存空间中;从而完成FFT浮点优化方法。...

【技术特征摘要】
1.一种基于ILP和DLP的FFT浮点优化方法,其特征是按如下步骤进行:步骤1、假设所要计算的FFT输入向量的长度为M,根据所述长度M确定迭代层数为N;其中M=2N;M、N为正整数,且N≥6;定义迭代层数N的前四层为入度层,第五层到第N-2层为中间层;第N-1层和第N层为出度层;步骤2、使用位反序指令,将所述FFT输入向量反序读取到寄存器中,并将入度层所对应的FFT旋转因子读入到相应的寄存器中;步骤3、对存入寄存器中的FFT输入向量和FFT旋转因子进行入度层蝶形计算,得到的入度层计算结果存入暂存空间中;步骤4、将N–4赋值给n;步骤5、判断n是否为奇数,若是,则执行步骤6,否则,执行步骤8;步骤6、从所述暂存空间中读取入度层计算结果与第N-n+1层所对应的旋转因子并进行蝶形计算,得到第N-n+1层计算结果覆盖存储到输入向量空间中;步骤7、将n-1赋值给n;判断n=2是否成立,若成立,则执行步骤10,否则,执行步骤8;步骤8、从所述暂存空间读取计算结果以及第N-n+1层到第N-n+5层所对应的旋转因子并进行蝶形计算,得到计算结果覆盖存储到所述暂存空间中;步骤9、将n-4赋值给n;判断n=2是否成立,若成立,则执行步骤10...

【专利技术属性】
技术研发人员:顾乃杰任开新叶鸿周文博
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:安徽;34

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

1