CN103699516A - 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 - Google Patents

向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 Download PDF

Info

Publication number
CN103699516A
CN103699516A CN201410014700.6A CN201410014700A CN103699516A CN 103699516 A CN103699516 A CN 103699516A CN 201410014700 A CN201410014700 A CN 201410014700A CN 103699516 A CN103699516 A CN 103699516A
Authority
CN
China
Prior art keywords
butterfly computation
data
fft
vector
ifft
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410014700.6A
Other languages
English (en)
Other versions
CN103699516B (zh
Inventor
刘衡竹
陈艇
张剑锋
张波涛
刘冬培
周理
吴铁彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201410014700.6A priority Critical patent/CN103699516B/zh
Publication of CN103699516A publication Critical patent/CN103699516A/zh
Application granted granted Critical
Publication of CN103699516B publication Critical patent/CN103699516B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开一种向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法及装置,该方法将N点蝶形运算分为多段执行,每段包含多个独立蝶形运算组,每个蝶形运算组的每一级蝶形运算采用固定模式进行数据混洗后与对应的常复系数相乘,再将每相邻两个数据进行加和减运算,使用单条指令就能实现向量数据的混洗、复数乘法以及蝶形运算,实现方法简单、执行效率高、蝶形运算组内无需独立的复数乘法,能够有效减少处理器的功耗;该装置包括向量寄存器文件、固定模式混洗网络、常复系数乘法器阵列、蝶形运算阵列以及FFT/IFFT控制寄存器,通过顺序执行即可实现并行蝶形运算,减少了硬件及运算的复杂度,可以进一步方便硬件的扩展。

Description

向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法及装置
技术领域
本发明涉及数字信号处理以及向量处理器领域,尤其涉及一种向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法及装置。
背景技术
FFT(Fast Fourier Transformation,快速傅里叶变换),是离散傅里叶变换(Discrete FourierTransformation,DFT)的快速实现算法。现代无线通信和数字信号处理等应用领域中需要进行大量的FFT和IFFT(inverse fast Fourier Transformation,快速反傅立叶变换)运算,比如在4G通信中的OFDM调制和解调、MIMO的信道估计以及信号处理中的频谱分析等。FFT可以将一个时域信号转换成对应的频域信号,与此相反,IFFT则可以把一个频域信号转换成相应的时域信号,因此FFT/IFFT通常用于数字信号的频谱分析、信号的调制与解调等应用中。普通离散傅立叶变换要求的计算量比较大,例如一个N点的复数列进行DFT运算分别需要进行N*N次复数乘法和N*N次复数加法,当N比较大时,处理器可能因为运算量过大而无法满足实时性要求。FFT/IFFT是DFT/IDFT的一种快速实现方式,能够大大降低了运算复杂度,其输入数据点数N必须是2的整数次幂。
如图1所示,一个基-2蝶形运算单元运算流程,包括两个输入和两个输出,其中一个输入与旋转因子相乘之后再与另外一个输入数据做加和减操作,即一个蝶形运算单元包括一个复数乘法、一个复数加法和一个复数减法操作。一个N=2n点基-2的FFT算法结构由n级基-2蝶形运算组成,级间的数据需要经过一定方式的混洗排序之后才能输入到下一级进行运算。每一级有N/2个基-2蝶形运算单元,而每个基-2蝶形运算单元需要一个的复数乘法和两个的复数加法运算,因此总的运算量大大地减少了。
FFT/IFFT算法是一种数据密集型算法,并且数据处理具有较大的并行性,一个N点基-2FFT算法的每一级都有N/2个可并行执行的基-2蝶形运算和N/2个可并行执行的复数乘法,因此面向FFT/IFFT应用的向量处理器通常采用SIMD(Single Instruction Multiple Data,单指令流多数据流)和VLIW(Very Long Instruction Word,超长指令字)体系结构,通过设置向量运算指令、向量寄存器文件、向量处理阵列以及向量数据加载单元来开发数据和指令的并行性,加快数据处理的速度。向量处理器主要包括一个标量单元和一个向量单元。标量单元主要完成取指、指令译码、指令派发、标量运算、程序流的控制以及向量单元的控制寄存器的配置工作。向量单元一般至少有一个向量存储器,一个向量数据加载单元和一个向量数据处理单元组成,其均工作在SIMD模式下。向量处理器执行向量操作时,其指令译码部件完成指令译码,并将执行何种指令操作、原操作数位置、以及目的操作数位置等译码结果发送到向量寄存器文件和向量数据处理部件。原操作数从向量寄存器文件读出并送往向量数据处理部件中进行运算,运算结果被写入由译码结果指定的目的向量寄存器文件当中,需要时,向量寄存器文件中的向量数据可以通过向量数据加载指令和向量数据加载单元访问片内向量储存器。单条向量指令可以同时触发向量单元对多个向量数据同时进行运算。
如图2所示,SIMD向量处理器结构,主要包括一个标量单元和一个向量单元,标量单元主要完成取指、指令译码、指令派发、标量运算、程序流的控制以及向量单元的控制寄存器的配置工作。向量单元一般由至少一个向量储存器、一个向量数据加载单元和至少一个向量数据处理单元构成,其中向量数据处理单元一般包含向量复数乘法单元和向量复数加法单元等,且均工作在SIMD模式下。向量处理器执行向量操作时,其指令译码部件完成指令译码,并将执行何种指令操作、原操作数位置、以及目的操作数位置等译码结果发送到向量寄存器文件和向量处理部件。原操作数从向量寄存器文件读出并送往向量处理部件中进行运算,运算结果被写入由译码结果指定的目的向量寄存器当中。需要时,向量寄存器文件中的向量数据可以通过向量数据加载指令和向量数据加载单元访问片内向量储存器。向量存储器(Vector memory,VM)一般分成多个存储体实现向量数据的读写,向量数据加载单元一般包含一个数据混洗网络,实现数据加载时的初始数据排列与对齐操作。
如图3所示,一个传统的32点FFT信号流程(参考文献Shousheng He和Torkelson M.的“A New Approach to Pipeline FFT Processor,Parallel Processing Symposium,pp.766-770,15-19Apr.1996”),将32点FFT分成两段,第一段包含3级的蝶形运算,第二段包含2级的蝶形运算,段间采用复数乘法。每一级蝶形运算都包含可并行执行的16个基-2蝶形运算单元,同时第一段包括4个独立基-23蝶形运算组,第二段包含8个独立基-22蝶形运算组。
传统的数字信号处理器执行FFT运算时,级间的复数乘法使用复数乘法器完成,造成处理器的功耗增大;且传统的蝶形运算组内每一级蝶形运算需要不同的数据混洗方式,在并行蝶形运算过程中每一级蝶形数据计算完成之后需要对结果数据进行重排列,增加了硬件的复杂度和计算的复杂度,而且不方便硬件的扩展。
发明内容
本发明要解决的技术问题是:针对现有技术存在的技术问题,本发明提供一种实现方法简单、蝶形运算组内无需独立的复数乘法及复杂的混洗操作、功耗低、硬件及运算的复杂度低的向量处理器中基于SIMD的并行FFT蝶形运算方法及装置。
为解决上述技术问题,本发明提出的技术方案为:
一种向量处理器中基于SIMD的并行FFT/IFFT蝶形运算的方法,步骤为:
(1)将待运算的N=2n点存储在向量存储器中,按照蝶形运算总级数n将N点FFT蝶形运算分成多个段,每段分成2N/M个蝶形运算组,每个蝶形运算组包括多级蝶形运算;其中N为待计算的FFT点数,M为SIMD向量处理器的宽度;
(2)每次从向量存储器中加载一个蝶形运算组进行运算并将结果存储回向量存储器中,其中每一级的蝶形运算并行执行;执行每一级蝶形运算时,将目的寄存器中的向量数据以固定模式进行混洗后与对应的常复数系数进行相乘,相乘后的结果进行复数的加和减运算,得到一级蝶形运算的运算结果;
(3)将2N/M个蝶形运算组的运算结果进行级联,构成一段蝶形运算结果并作为下一段蝶形运算的数据输入,返回执行步骤(2)直至完成所有段的蝶形运算。
作为本发明方法的进一步改进:所述步骤(1)的具体实施步骤为:
(1.1)将N=2n点FFT蝶形运算分成H段,其中前1~H-1段中每段包含N/2M个基-2b目标蝶形运算组,每个目标蝶形运算组包含b=log22M级蝶形运算,第H段包含N/2d个基-2d蝶形运算组,且每个蝶形运算组包含d=n-(H-1)*b级蝶形运算,其中d<b;
(1.2)将第H段中的N/2d个基-2d蝶形运算组分为N/2M个目标蝶形运算组,每2M/2d个基-2d蝶形运算组组成一个目标蝶形运算组,每个目标蝶形运算组包含d级蝶形运算。
作为本发明方法的进一步改进:所述步骤(2)的具体实施步骤为:
(2.1)设置运算模式参数L,当执行FFT运算时,L=0;当执行IFFT运算时,L=1,每个目标蝶形运算组输入2M个数据且输出2M个数据;
(2.2)加载向量存储器中第一个目标蝶形运算组的2M个数据至第一目的寄存器中;
(2.3)将第一目的寄存器中的向量数据以固定模式进行混洗后与对应的常复数系数进行相乘,相乘后的结果中每相邻两个数据进行复数的加和减运算后将结果写入第一目的寄存器中,完成一级蝶形运算;返回步骤(2.3)执行下一级蝶形运算,总计循环执行NUM次后转入执行步骤(2.4),其中当处于第1~H-1段运算时,NUM=log22M,当处于第H段运算时,NUM=n-(H-1)*b;
(2.4)加载段间复数旋转因子并存储到第二目的寄存器中,将第一目的寄存器和第二目的寄存器中数据进行复数乘法并将结果存储到第一目的寄存器中,完成一个目标蝶形运算组内的蝶形运算,并将第一目的寄存器中的2M个计算结果存储回向量存储器中。
作为本发明方法的进一步改进:所述步骤(2)中采用一条指令完成一个蝶形运算组内的一级蝶形运算,每条指令指定每级蝶形运算对应的常复系数,顺序执行NUM条指令后完成一个蝶形运算组内的蝶形运算,其中当处于第1~H-1段运算时,NUM=log22M,当处于第H段运算时,NUM=n-(H-1)*b。
作为本发明方法的进一步改进:所述步骤(2)中固定模式进行混洗的方法为:将输入数据按照0~2M-1顺序编号并进行重排序,将编号为m的数据调整至编号为[(2m+m/M)mod2M]的位置,其中m/M为取整运算,mod表示取模运算。
作为本发明方法的进一步改进:所述步骤(2)中向量数据进行混洗后与对应常复数系数进行相乘的具体方法为:将经过混洗后的输出数据中编号为奇数的数据分别乘以一个常复系数、编号为偶数的数据的值不变,得到相乘后的结果;其中,当进行FFT运算时第J级蝶形运算第s个所述常复系数的值为
Figure BDA0000456394020000041
当进行IFFT运算时第J级蝶形运算第s个常复系数的值为
Figure BDA0000456394020000042
的共轭值,且W2M=e-j2π/2M,J为当前蝶形运算组的蝶形运算级数且0<=J<=log22M-1,inv(s)为s mod2J结果的位反序。
作为本发明方法的进一步改进:所述向量处理器为宽度为8、16或32的向量处理器中的一种。
一种用来实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置,包括:
向量寄存器文件,用来从向量存储器中加载待运算数据,每次加载2M个复数数据并将数据输出至固定模式混洗网络;
固定模式混洗网络,用来将向量寄存器文件输出的2M个数据以固定模式进行混洗,输出2M个混洗后的数据至常复系数乘法器阵列;
常复系数乘法器阵列,用来将经过混洗后的数据与对应的常复系数进行相乘,输出结果至蝶形运算阵列;
蝶形运算阵列,用来将常复系数乘法器阵列输出的相乘后的结果中每相邻的两个数据进行复数的加法和减法运算,将运算结果输出至向量寄存器文件中作为待运算的数据或输出作为最后的运算结果;
FFT/IFFT控制寄存器,用来设置运算模式参数L,控制常复系数乘法器阵列的常复系数取值;当进行FFT运算时,L=0,进行IFFT运算时,L=1。
作为本发明装置的进一步改进:所述固定模式混洗网络将输入端数据从对应的输出端输出,所述固定模式混洗网络包括编号为0~2M-1的输入端和编号为0~2M-1的输出端,编号为m的所述输入端对应连接编号为[(2m+m/M)mod2M]的所述输出端,其中m/M为取整运算,mod表示取模运算。
作为本发明装置的进一步改进:所述常复系数乘法器阵列包括M个常复系数乘法器、编号为0~2M-1的输入端和编号为0~2M-1的输出端,每个奇数编号的所述输入端对应连接一个常复系数乘法器,每个偶数编号的所述输入端与对应输出端相连;其中FFT/IFFT控制寄存器设置L=0时,第J级蝶形运算第s个所述常复系数乘法器的值为
Figure BDA0000456394020000051
FFT/IFFT控制寄存器设置L=1时,第J级蝶形运算第s个所述常复系数乘法器的值为
Figure BDA0000456394020000052
的共轭值,其中W2M=e-j2π/2M,J为当前蝶形运算组的蝶形运算级数且0<=J<=log22M-1,inv(s)为s mod2J结果的位反序。
与现有技术相比,本发明的优点在于:
(1)本发明利用SIMD处理器并行执行FFT/IFFT蝶形运算,将FFT蝶形运算的数据混洗、复数乘法和复数加减法三个步骤融合成一个操作,大大减少运算的复杂度;使用常复数乘法器来完成蝶形运算组内的复数乘法,而只有段间使用独立的复数乘法,使用单条向量蝶形运算指令就能实现向量数据的混洗、复数乘法以及复数的加和减运算,实现方法简单、执行效率高同时能够有效减少处理器的功耗;
(2)本发明在蝶形运算组内的每一级蝶形运算采用固定模式的数据混洗方式,无需独立的混洗操作,大大方便程序的映射、加快了运算的执行速度,减少了硬件及运算的复杂度,可以进一步方便硬件的扩展。
附图说明
图1是一个基-2蝶形运算单元运算流程示意图。
图2是SIMD向量处理器结构示意图。
图3是一个传统的32点FFT信号流程示意图。
图4是本实施例向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法流程示意图。
图5是本发明用于实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置结构示意图。
图6是本发明具体实施例(N=128)中执行FFT运算时第一段的信号流程。
图7是本发明具体实施例(N=128)执行第二段一个蝶形运算组的信号流程。
图8是本发明具体实施例(N=128)用于实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置结构示意图。
图9是本发明在具体实施例(N=128)中常复系数乘法器阵列的取值对应关系示意图。
图例说明
1、向量寄存器文件;2、固定模式混洗网络;3、常复系数乘法器阵列;4、蝶形运算阵列;5、FFT/IFFT控制寄存器。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
采用向量处理器并行执行FFT运算时,为了减少存储器访问次数,向量处理器每次加载一个或者多个蝶形运算组的数据到寄存器当中参与运算,由于蝶形运算组内的复数旋转因子只有有限的几组复系数,通常可以事先将其保存在寄存器当中。蝶形运算组内每一级蝶形运算可以并行执行,运算过程中先将每个蝶形运算单元中的其中一个数据和旋转因子通过向量处理器中的复数乘法器相乘得到中间向量结果,并将中间向量结果存储在寄存器当中,然后将每个蝶形运算单元中的另一个输入数据与中间向量结果做复数加和减运算。
以下以本发明采用SIMD向量处理器并行执行N=2n点蝶形运算为例进行说明,运算过程中所有的临时变量存储在寄存器当中,当整个蝶形运算组的操作计算完成之后,将结果数据存回存储器当中,蝶形运算组内的每一级蝶形运算并行执行。
如图4所示,本实施例向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,步骤为:(1)将N=2n点FFT蝶形运算分成H段,前1~H-1段中每段包含N/2M个基-2b目标蝶形运算组,每个目标蝶形运算组包含b=log22M级蝶形运算,第H段包含N/2d个基-2d蝶形运算组,每个蝶形运算组包含d=n-(H-1)*b级蝶形运算,其中d<b;将第H段中的N/2d个基-2d蝶形运算组分为N/2M个目标蝶形运算组,每2M/2d个基-2d蝶形运算组组成一个目标蝶形运算组,每个目标蝶形运算组包含d级蝶形运算;每个目标蝶形运算组输入2M个数据并输出2M个数据,设置运算模式参数L,当执行FFT运算时,L=0;当执行IFFT运算时,L=1;其中N为待计算的FFT点数,M为SIMD向量处理器的宽度;
(2)加载向量存储器中第一个目标蝶形运算组的2M个数据至第一目的寄存器中;
(3)将第一目的寄存器中的向量数据以固定模式进行混洗后与对应的常复数系数进行相乘,相乘后的结果中每相邻两个数据进行复数的加和减运算后将结果写入第一目的寄存器中,完成一级蝶形运算;返回步骤(3)执行下一级蝶形运算,总计循环执行NUM次后转入执行步骤(4),其中当处于第1~H-1段运算时,NUM=log22M,当处于第H段运算时,NUM=n-(H-1)*b;
(4)加载段间复数旋转因子并存储到第二目的寄存器中,将第一目的寄存器和第二目的寄存器中数据进行复数乘法并将结果存储到第一目的寄存器中,完成一个蝶形运算组内的蝶形运算,转入执行步骤(5);
(5)将第一目的寄存器中的2M个计算结果存储回向量存储器中,增加向量存储器地址偏移量,加载下一个目标蝶形运算组到第一目的寄存器中,返回执行步骤(3);总计循环执行N/2M次后,完成一段蝶形运算;
(6)判断当前是否执行了H段蝶形运算,若为是,输出最终的蝶形运算结果;若为否,返回步骤(2)执行下一段蝶形运算。
为了减少数据从存储器当中加载次数,根据Xuan Guan等人的“Hierarchical Design of anpplication-Specific Instruction Set Processor for High-Throughput and Scalable FFT Processing,IEEE Transactions on Very Large Scale Integration(VLSI)Systems,vol.20,no.3,pp.551-563,March2012”,FFT蝶形算法通常分成多个段(epoch),每个段包括多个蝶形运算组(group)。数据只有在每个蝶形运算组的开始和计算结束之后才访问存储器,而在蝶形运算组内的计算产生的中间结果存储在向量寄存器当中。蝶形运算组一般是由一个基-4,基-8,基-16或者更高基的蝶形运算集合构成,同时,基-4,基-8和基-16蝶形运算组又可以进一步分解成基-22,基-23和基-24的蝶形运算组,以减少算法的运算量。
本实施例中,将存储于向量存储器中待运算的N=2n点FFT分成H段,分段的方法为:使得前1~H-1段中每段包含b=log22M级蝶形运算,第H段包含d=n-(H-1)*b级蝶形运算,且d<b。每段蝶形运算分成N/2M个独立的蝶形运算组,每个蝶形运算组输入2M个数据,得到2M个数据输出,输出结果存储在原输入数据在向量存储器中的位置。通过设置执行模式参数L,可以执行FFT运算或IFFT运算,当L=0时,执行FFT运算,当L=1时,则执行IFFT运算。
本实施例中,由向量处理器的向量加载单元每次加载一个蝶形运算组的数据,即2M个数据,进行蝶形运算。执行前1~H-1段的蝶形运算时,由于前1~H-1段中每段包含b级蝶形运算,每次加载的2M个数据需要执行b级蝶形运算,前级的输出作为后一级的输入,执行完b级蝶形运算后与段间复数因子相乘,以此完成一个蝶形运算组的运算。N/2M个蝶形运算组执行完后,由N/2M个蝶形运算组的结果级联得到一段的蝶形运算结果。第H-1段的输出作为第H段的数据输入,执行第H段的蝶形运算时,由于第H段包含N/2d个基-2d蝶形运算组,每个蝶形运算组包含d级蝶形运算,将N/2d个基-2d蝶形运算组中相邻的2M/2d个蝶形运算重新交叉组成一个目标蝶形运算组,共构成N/2M个目标蝶形运算组,每个目标蝶形运算组包含d级蝶形运算;进行运算时每次加载2M个数据进行d级蝶形运算,执行N/2M个蝶形运算组的加载及执行后完成第H段的蝶形运算。
蝶形运算组执行每一级蝶形运算时,由于每一级数据相关性不一样,需要通过混洗操作对数据进行重新排列和对齐之后才能进行第二级并行蝶形运算。因此传统的并行蝶形运算方法一般需要复数乘法、复数加减法以及向量数据混洗三步操作才能完成一级并行蝶形运算,增加了运算和硬件的复杂度。
本实施例中,蝶形运算组执行每一级蝶形运算时采用固定模式的混洗方式进行混洗,即按照一定的混洗方式对输入数据进行重排列,固定模式进行混洗的方法为:将输入的2M个数据按0~2M-1顺序进行编号,将编号为m的数据调整至编号为[(2m+m/M)mod2M]的位置,即处于第m位的数据调整为第[(2m+m/M)mod2M]位,其中m=0、1,……,2M-1,m/M为取整运算,mod表示取模运算。
本发明在蝶形运算组内的每一级蝶形运算采用固定模式的数据混洗方式,蝶形运算组内无需独立的混洗操作,大大方便程序的映射、加快了运算的执行速度,减少了硬件及运算的复杂度,可以进一步方便硬件的扩展。
由于每段蝶形运算内的每个蝶形运算组的流程是相同的,并且一个基-2a蝶形运算组内的复数旋转因子只有有限的a组,因此可以使用常复数乘法来完成蝶形运算组内的复数乘法,而只有段间的复数乘法使用独立的复数乘法器。
本实施例中,蝶形运算组执行每一级蝶形运算时,将向量数据经过固定模式的混洗后与对应常复数系数进行相乘,具体方法为:将经过混洗后的输出数据中编号为奇数的数据分别乘以一个常复系数,编号为偶数的数据的值不变,得到相乘后的结果。当L=0时,即进行FFT运算时,第J级蝶形运算第s个常复系数的值为
Figure BDA0000456394020000081
当L=1时,即进行IFFT运算时,一个蝶形运算组中第J级蝶形运算的第s个常复系数的值为
Figure BDA0000456394020000082
的共轭值,其中W2M=e-j2π/2M,J为当前蝶形运算组的蝶形运算级数且0<=J<=log22M-1,inv(s)为s mod2J的位反序。当进行FFT运算时,若s=5,J=2,由于5mod4的值为1,1的二进制数01的位反序为10,其十进制数为2,则inv(5)=2,得到第2级第5个的常复系数的值为
本实施例中采用常复数系数乘法器来完成蝶形运算组内的复数乘法,而只有段间的复数乘法使用独立的复数乘法器,蝶形运算组内无需独立的复数乘法,有效减少处理器的功耗。
本实施例中,蝶形运算组执行每一级蝶形运算可以通过设置一条相应的指令来实现,计算一个基-2a蝶形运算组时,可以设置对应的a条指令操作码R2BFJ,加上源寄存器src和目的寄存器dst实现,其中J为执行的蝶形级数且J=0,1,…,a-1。使用指令R2BFJ src1,src2,dst0:dst1表示进行第J级蝶形运算,源寄存器的编号分别为src1和src2,向量寄存器将编号为src1和src2寄存器中的值输出进行固定模式的混洗后与对应的常复数乘法进行相乘,由指令操作码R2BFJ控制和选择第J组对应的常复系数,将完成常复数乘法后的数据进行复数的加和减运算。顺序执行完J+1条指令后完成一个蝶形运算组内的蝶形运算,当处于第1~H-1段蝶形运算时,顺序执行log22M条指令后完成一个蝶形运算组内的蝶形运算,当处于第H段运算时,顺序执行完n-(H-1)*b条指令后完成一个蝶形运算组内的蝶形运算。
本发明利用SIMD处理器并行执行FFT/IFFT蝶形运算,将FFT蝶形运算的数据混洗、复数乘法和复数加减法三个步骤融合成一个操作,大大减少运算的复杂度;使用单条向量蝶形运算指令就能实现向量数据的混洗、复数乘法以及蝶形运算中加法和减法操作,实现方法简单、执行效率高同时能够有效减少处理器的功耗。
如图5所示,本发明用于实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置,包括:
向量寄存器文件1,用来从向量存储器中加载待运算数据,每次读取2M个复数数据并将数据输出至固定模式混洗网络2;
固定模式混洗网络2,用来将向量寄存器文件1输出的2M个数据以固定模式进行混洗,输出2M个混洗后的数据至常复系数乘法器阵列3;
常复系数乘法器阵列3,用来将经过混洗后的数据与对应的常复系数进行相乘,输出结果至蝶形运算阵列4;
蝶形运算阵列4,用来将常复系数乘法器阵列3输出的相乘后的结果中每相邻的两个数据进行加和减运算,将运算结果输出至向量寄存器文件1中作为待运算的数据或输出作为最后的运算结果;
FFT/IFFT控制寄存器5,用来设置运算模式参数L,当进行FFT运算时,L=0,当进行IFFT运算时,L=1。
其中,向量寄存器文件1、固定模式混洗网络2、常复系数乘法器阵列3与蝶形运算阵列4依次连接,蝶形运算阵列4的另一端连接向量寄存器文件1输入端,FFT/IFFT控制寄存器5与常复系数乘法器阵列3相连。
本实施例中,用来实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置执行一次完成一级蝶形运算,由指令控制选择对应的常复系数。向量寄存器文件1包括两个向量寄存器组,由每个向量寄存器组写入或输出M个复数数据。
本实施例中,固定模式混洗网络2将输入端数据从对应输出端输出,固定模式混洗网络2包含2M个输入端和输出端,将2M个输入端和输出端按0~2M-1顺序进行编号,编号为m的输入端对应连接编号为[(2m+m/M)mod2M]的输出端,其中m/M取其整数部分,mod表示取模运算。
本实施例中,常复系数乘法器阵列3包含M个常复系数乘法器、编号为0~2M-1的输入端以及编号为0~2M-1的输出端,其中每个编号为奇数的输入端连接一个常复系数乘法器,每个编号为偶数的输入端直接连接输出端。当FFT/IFFT控制寄存器5的值L为0时,即进行FFT运算,第J级蝶形运算第s个常复数乘法器的常复系数值为
Figure BDA0000456394020000091
其中W2M=e-j2π/2M,inv(s)是s mod2J的位反序;当FFT/IFFT控制寄存器5的值L为1时,即进行IFFT运算,常复系数乘法器阵列3中的第J级蝶形运算第s个常复数乘法器的常复系数是L为0时的常复系数的共轭值。
工作时,向量寄存器文件1根据指令当中指定的原操作数位置,每次从向量寄存器文件1的两个向量寄存器中读出2M个复数数据,并将数据输出到固定模式混洗网络2的2M个输入端;固定模式混洗网络2接收向量寄存器输出的数据,将2M个输入数据经过一定方式的混洗之后输出2M个混洗后的数据到常复系数乘法器阵列3当中;常复系数乘法器阵列3接收混洗网络输出的2M个数据,并对输出编号为奇数的输入分别乘以一个常复系数之后输出,而编号为偶数的输入的值不变,直接输出到蝶形运算阵列4;对常复系数乘法器阵列3输出的2M个复数中每两个相邻的数进行相加和相减操作,同时产生2M个运算结果,并将2M个数据写入指令中指定的目的向量寄存器当中,完成一级蝶形运算。
本实施例中,可以通过对蝶形运算组内的每一级蝶形运算设置一条相应的指令,计算一个基-2a蝶形运算组时可以设置对应的a条指令操作码R2BFJ加上源寄存器src和目的寄存器dst实现,其中J=0,1,…,a-1,指令R2BFJ src1,src2,dst0:dst1表示进行第J级蝶形运算,源寄存器的编号分别为src1和src2。向量寄存器文件1将编号为src1和src2寄存器中的值输出固定模式混洗网络2进行混洗操作,数据经过混洗之后输出到常复系数乘法器阵列3进行常复数乘法,由指令操作码R2BFJ控制和选择常复系数乘法器阵列3对应的常复系数取值。常复系数乘法器阵列3输出结果到蝶形运算阵列4进行运算,并将结果存储到编号为dst0和dst1寄存器组当中,完成一次蝶形运算。
执行N点的FFT蝶形运算时,将蝶形运算分成H段,第1~H-1段包含N/2M个基-2b蝶形运算组,每个蝶形运算组执行b=log22M级蝶形运算;第H段包含N/2d基-2d蝶形运算组,每个蝶形运算组执行d=n-(H-1)*b级蝶形运算,其中d<b。执行第H段的蝶形运算时,将N/2d个基-2d蝶形运算组中每相邻的2M/2d个蝶形运算重新交叉组成一个蝶形运算组,共构成N/2M个待运算的目标蝶形运算组,每个目标蝶形运算组包含d级蝶形运算。进行运算时,每次由向量寄存器文件1加载2M个数据进行一个蝶形运算组的蝶形运算,每个蝶形运算组执行b条R2BFJ src1,src2,dst0:dst1指令后与段间复数相乘,N/2M个蝶形运算组执行完后完成一段蝶形运算,当处于第H段的蝶形运算时,每个蝶形运算组则控制执行d条R2BFJ src1,src2,dst0:dst1指令。
本发明采用固定混洗方式进行数据混洗,且段内采用常复数乘法器完成复数乘法,而仅在段间采用复数乘法进行计算,每个蝶形运算组内的运算无需独立的复数乘法和复杂的数据混洗操作,大大加快了程序的执行速度,减少了硬件的复杂度。
以下以宽度为8的向量处理器计算128点FFT/IFFT为具体实施例进行说明,即N=128,M=8。
如图6、7所示,本发明具体实施例(N=128)中执行FFT运算时的信号流程,将N=128点FFT分成了两个段,第一段包含4级蝶形运算,第二段包含3级蝶形运算,段间采用复数乘法。如图6所示,本发明具体实施例(N=128)中执行FFT运算时第一段的信号流程,第一段包括n=0~7共8个独立的基-24蝶形运算组,通过调整其输入数据和中间运算结果的位置,每一级蝶形运算的数据混洗模式是固定相同的。每个蝶形运算组执行4级蝶形运算后与段间复数相乘,得到一个蝶形运算组的16个运算结果n1=0~15,8个蝶形运算组的运算结果级联作为第二段的数据输入,每个蝶形运算组的相邻两个运算结果作为一组,组成n1=0、1,n1=2、3,……,n1=14、15共8个数据组。
第二段包括16个基-23蝶形运算组,将相邻两个基-23蝶形运算组进行交叉组合得到了与第一段基-24蝶形运算组的前三级相同信号流程的蝶形运算组,即组合得到8个新的蝶形运算组,每个新的蝶形运算组包含3级蝶形运算,同样其输入和输出都是16点,每一级的数据混洗模式也是相同的。如图7所示,本发明具体实施例(N=128)中执行第二段一个蝶形运算组的信号流程,其中n1=14、15且虚线表示目标蝶形运算组中n1=14的基-23蝶形运算组,实线表示目标蝶形运算组中n1=15的基-23蝶形运算组。n1=14和n1=15的两个基-23蝶形运算组交叉组合成目标蝶形运算组,目标蝶形运算组经过3级蝶形运算输出16个运算结果,其中3级蝶形运算与第一段的前三级信号流程相同。
同理,若为其他点数的FFT蝶形运算可以分解成包含多个基-24蝶形运算的段以及一个包含多个基-23或基-22或基-21蝶形运算的段。
本实施例中,执行N=128点FFT蝶形运算的具体工作流程为:
首先将N=128点的FFT蝶形运算划分为H段,H段共包含n=7级蝶形运算,由于需满足:前1~H-1段中每段包含b=log22M级蝶形运算、第H段包含d=n-(H-1)*b级蝶形运算,因此将N=2n=27点FFT分成H=2段,其中第1段包含b=log22M=4级蝶形运算,第H=2段包含d=n-(H-1)*b=3级蝶形运算,每段蝶形运算分成N/2M=8个独立的蝶形运算组,每个蝶形运算组输入2M=16个数据。设置FFT/IFFT控制寄存器5的值L为0,从第1段开始执行蝶形运算。
执行第一段的第一个蝶形运算组的运算,由向量数据加载单元从片上向量存储器当中取出第一个蝶形运算组的2M个数据到向量寄存器VR0和VR1。将从向量寄存器VR0、VR1中取出的第一个蝶形运算组向量数据进行固定混洗模式的混洗后与对应的常复数乘法相乘,相乘后结果进行复数的加和减操作,并将加和减的2M个结果存储回向量寄存器VR0和VR1中,完成第一个蝶形运算组的第一级蝶形运算。以第一级蝶形运算的输出结果作为第二级蝶形运算的输入数据,同样的方法得到第二级的蝶形运算结果,依次类推,完成4级蝶形运算后完成第一段第一个蝶形运算组所有级蝶形运算。通过使用4(R2BFJ,J=0,1,2,3)条R2BFJ指令完成一个蝶形运算组内的4级蝶形运算。
由向量数据加载单元加载段间复数旋转因子,存储到向量寄存器VR2和VR3当中。通过向量处理器中的复数乘法器完成段间复数乘法,将向量寄存器VR0*VR2的结果存储到向量寄存器VR0当中,将向量寄存器VR1*VR3的结果存储到VR1当中,完成第一段第一个蝶形运算组运算。
将向量寄存器VR0和VR1中的结果存储到向量存储器中原输入数据的位置,增加地址偏移量,从向量存储器中取出第二个蝶形运算组的2M=16个数据到向量寄存器VR0、VR1中,按照上述蝶形运算组的执行方法执行;依次类推,执行完8个蝶形运算组的蝶形运算后完成第一段的蝶形运算。
同样的方法执行第二段的蝶形运算,不同之处在于第二段的每个蝶形运算组内只有3级蝶形运算,只需使用3(R2BFJ,J=0,1,2)条指令完成一个蝶形运算组内的蝶形计算。
本实施例中,固定模式混洗方法为:按照一定的混洗方式对16个数据进行排列,对其16个输入和16个输出分别从0~15的进行编号,编号为m的输入与编号为(2m+m/8)mod16的输出相连,其中m/8取其整数,mod为取模操作。
如图8所示,本发明具体实施例(N=128)用于实施向量处理器中基于SIMD的并行FFT蝶形运算方法的装置,包括依次连接的向量寄存器文件1、固定模式混洗网络2、常复系数乘法器阵列3以及蝶形运算阵列4,且均具有2M=16个输入端和2M=16个输出端。其中一个向量寄存器包含8个复数数据,一个复数数据由32bit表示,低16bit是实部,高16bit是虚部,因此向量寄存器的宽度为8*32bit。向量寄存器分成两个体,因此每个时钟周期可以读取和写入16个复数数据。
工作时,向量寄存器文件1与固定模式混洗网络2相连,根据源寄存器的位置向量寄存器文件1每次可以同时从两个存储体当中读出16个复数数据,并将数据输出到固定模式混洗网络2的16个输入端。固定模式混洗网络2按照一定的混洗方式对16个数据进行排列,对其16输入和16输出分别从0~15的进行编号,其混洗模式为:编号为m的输入与编号为(2m+m/8)mod16的输出相连,其中m/8取其整数,mod为取模操作。数据经过混洗之后输出到常复系数乘法器阵列3,常复系数乘法器阵列3将奇数号端口的输入数据分别乘以一个对应的复数因子。
如图9所示,本发明在具体实施例(N=128)中常复系数乘法器阵列的取值对应关系,共包含有四组常复系数,每一组对应一条指令操作码。执行时由指令译码单元指定使用对应组的常复系数,例如第二条指令R2BF1VR0,VR1,VR0:VR1使用第二组常复系数[1,-j,1,-j,1,-j,1,-j,1,-j]。当FFT/IFFT控制寄存器5为1时,即进行IFFT操作,需要对每组常复系数因子取共轭操作作为IFFT运算时的常复系数。
本实施例中,使用指令R2BF0VR0,VR1,VR0:VR1进行第一级蝶形运算组运算,之后接着使用R2BF1VR0,VR1,VR0:VR1进行第二级蝶形运算,R2BF2VR0,VR1,VR0:VR1进行第三级蝶形运算,一直到使用R2BFJ VR0,VR1,VR0:VR1进行第b-1级蝶形运算,其中J=b-1,到此完成一个蝶形运算组内的蝶形运算。
本实施例中,执行一个基-24蝶形运算组的运算步骤为:
(1)通过向量数据加载单元将一个基-24蝶形运算组的16个数据按顺序分别存储在向量寄存器VR0和VR1当中。
(2)顺序使用R2BF0VR0,VR1,VR0:VR1,R2BF1VR0,VR1,VR0:VR1,R2BF2VR0,VR1,VR0:VR1和R2BF3VR0,VR1,VR0:VR1四条指令即可以完成一个基-24蝶形运算组内4级并行蝶形运算。每条指令读取向量寄存器VR0和VR1的数据并将其输出到固定模式混洗网络2对输入数据进行混洗,混洗后的数据输出到常复系数乘法器阵列3与相应的常复系数进行相乘;
(3)将数据结果输入到蝶形运算阵列4当中进行复数加法和减法操作,并将结果存储到VR0和VR1寄存器当中。
执行两个基-23蝶形运算组则只需要使用R2BF0VR0,VR1,VR0:VR1,R2BF1VR0,VR1,VR0:VR1,R2BF2VR0,VR1,VR0:VR1三条指令就可以完成。
本实施例中,128点的FFT蝶形运算可以通过执行两段蝶形运算完成,第一段循环8次执行基-24蝶形运算组,第二段循环执行8次两个基-23蝶形运算既可完成128点FFT运算。
本发明用于实施向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法的装置可以直接替换向量处理器中的其中一个向量数据处理单元,接收译码器发来的指令,进行并行FFT/IFFT蝶形运算,并将结果存储回由指令译码结果指定的目的向量寄存器当中。
本发明利用SIMD处理器并行执行FFT蝶形运算,使用单条向量蝶形运算指令就能实现向量数据的混洗、复数乘法以及蝶形运算,实现方法简单、执行效率高同时能够有效减少处理器的功耗。
本发明还可扩展于宽度M=16、32甚至更宽的SIMD向量处理器执行FFT/IFFT运算,具有很强的实用性,其工作原理与上述相同,在此不再进行赘述。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (10)

1.一种向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于,步骤为:
(1)将待运算的N=2n点存储在向量存储器中,按照蝶形运算总级数n将N点FFT蝶形运算分成多个段,每段分成2N/M个蝶形运算组,每个蝶形运算组包括多级蝶形运算;其中N为待计算的FFT点数,M为SIMD向量处理器的宽度;
(2)每次从向量存储器中加载一个蝶形运算组进行运算并将结果存储回向量存储器中,其中每一级的蝶形运算并行执行;执行每一级蝶形运算时,将目的寄存器中的向量数据以固定模式进行混洗后与对应的常复数系数进行相乘,相乘后的结果进行复数的加和减运算,得到一级蝶形运算的运算结果;
(3)将2N/M个蝶形运算组的运算结果进行级联,构成一段蝶形运算结果并作为下一段蝶形运算的数据输入,返回执行步骤(2)直至完成所有段的蝶形运算。
2.根据权利要求1所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于,所述步骤(1)的具体实施步骤为:
(1.1)将N=2n点FFT蝶形运算分成H段,其中前1~H-1段中每段包含N/2M个基-2b目标蝶形运算组,每个目标蝶形运算组包含b=log22M级蝶形运算,第H段包含N/2d个基-2d蝶形运算组,且每个蝶形运算组包含d=n-(H-1)*b级蝶形运算,其中d<b;
(1.2)将第H段中的N/2d个基-2d蝶形运算组分为N/2M个目标蝶形运算组,每2M/2d个基-2d蝶形运算组组成一个目标蝶形运算组,每个目标蝶形运算组包含d级蝶形运算。
3.根据权利要求2所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于,所述步骤(2)的具体实施步骤为:
(2.1)设置运算模式参数L,当执行FFT运算时,L=0;当执行IFFT运算时,L=1,每个目标蝶形运算组输入2M个数据且输出2M个数据;
(2.2)加载向量存储器中第一个目标蝶形运算组的2M个数据至第一目的寄存器中;
(2.3)将第一目的寄存器中的向量数据以固定模式进行混洗后与对应的常复数系数进行相乘,相乘后的结果中每相邻两个数据进行复数的加和减运算后将结果写入第一目的寄存器中,完成一级蝶形运算;返回步骤(2.3)执行下一级蝶形运算,总计循环执行NUM次后转入执行步骤(2.4),其中当处于第1~H-1段运算时,NUM=log22M,当处于第H段运算时,NUM=n-(H-1)*b;
(2.4)加载段间复数旋转因子并存储到第二目的寄存器中,将第一目的寄存器和第二目的寄存器中数据进行复数乘法并将结果存储到第一目的寄存器中,完成一个目标蝶形运算组内的蝶形运算,并将第一目的寄存器中的2M个计算结果存储回向量存储器中。
4.根据权利要求3所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于:所述步骤(2)中采用一条指令完成一个蝶形运算组内的一级蝶形运算,每条指令指定每级蝶形运算对应的常复系数,顺序执行NUM条指令后完成一个蝶形运算组内的蝶形运算,其中当处于第1~H-1段运算时,NUM=log22M,当处于第H段运算时,NUM=n-(H-1)*b。
5.根据权利要求1所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于,所述步骤(2)中固定模式进行混洗的方法为:将输入数据按照0~2M-1顺序编号并进行重排序,将编号为m的数据调整至编号为[(2m+m/M)mod2M]的位置,其中m/M为取整运算,mod表示取模运算。
6.根据权利要求5所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于,所述步骤(2)中向量数据进行混洗后与对应常复数系数进行相乘的具体方法为:将经过混洗后的输出数据中编号为奇数的数据分别乘以一个常复系数、编号为偶数的数据的值不变,得到相乘后的结果;其中,当进行FFT运算时第J级蝶形运算第s个所述常复系数的值为
Figure FDA0000456394010000021
当进行IFFT运算时第J级蝶形运算第s个常复系数的值为
Figure FDA0000456394010000022
的共轭值,且W2M=e-j2π/2M,J为当前蝶形运算组的蝶形运算级数且0<=J<=log22M-1,inv(s)为s mod2J结果的位反序。
7.根据权利要求1~6中任意一项所述的向量处理器中基于SIMD的并行FFT/IFFT蝶形运算方法,其特征在于:所述向量处理器为宽度为8、16或32的向量处理器中的一种。
8.一种用来实施上述权利要求1~6任意一项所述运算方法的装置,其特征在于,包括:
向量寄存器文件(1),用来从向量存储器中加载待运算数据,每次加载2M个复数数据并将数据输出至固定模式混洗网络(2);
固定模式混洗网络(2),用来将向量寄存器文件(1)输出的2M个数据以固定模式进行混洗,输出2M个混洗后的数据至常复系数乘法器阵列(3);
常复系数乘法器阵列(3),用来将经过混洗后的数据与对应的常复系数进行相乘,输出结果至蝶形运算阵列(4);
蝶形运算阵列(4),用来将常复系数乘法器阵列(3)输出的相乘后的结果中每相邻的两个数据进行复数的加法和减法运算,将运算结果输出至向量寄存器文件(1)中作为待运算的数据或输出作为最后的运算结果;
FFT/IFFT控制寄存器(5),用来设置运算模式参数L,控制常复系数乘法器阵列(3)的常复系数取值;当进行FFT运算时,L=0,进行IFFT运算时,L=1。
9.根据权利要求8所述的装置,其特征在于:所述固定模式混洗网络(2)将输入端数据从对应的输出端输出,所述固定模式混洗网络(2)包括编号为0~2M-1的输入端和编号为0~2M-1的输出端,编号为m的所述输入端对应连接编号为[(2m+m/M)mod2M]的所述输出端,其中m/M为取整运算,mod表示取模运算。
10.根据权利要求8所述的装置,其特征在于:所述常复系数乘法器阵列(3)包括M个常复系数乘法器、编号为0~2M-1的输入端和编号为0~2M-1的输出端,每个奇数编号的所述输入端对应连接一个常复系数乘法器,每个偶数编号的所述输入端与对应输出端相连;其中FFT/IFFT控制寄存器(5)设置L=0时,第J级蝶形运算第s个所述常复系数乘法器的值为FFT/IFFT控制寄存器(5)设置L=1时,第J级蝶形运算第s个所述常复系数乘法器的值为
Figure FDA0000456394010000032
的共轭值,其中W2M=e-j2π/2M,J为当前蝶形运算组的蝶形运算级数且0<=J<=log22M-1,inv(s)为s mod2J结果的位反序。
CN201410014700.6A 2014-01-13 2014-01-13 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 Active CN103699516B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410014700.6A CN103699516B (zh) 2014-01-13 2014-01-13 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410014700.6A CN103699516B (zh) 2014-01-13 2014-01-13 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置

Publications (2)

Publication Number Publication Date
CN103699516A true CN103699516A (zh) 2014-04-02
CN103699516B CN103699516B (zh) 2017-02-15

Family

ID=50361048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410014700.6A Active CN103699516B (zh) 2014-01-13 2014-01-13 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置

Country Status (1)

Country Link
CN (1) CN103699516B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902505A (zh) * 2014-04-12 2014-07-02 复旦大学 一种基于开关网络的可配置fft处理器电路结构
CN104699465A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法
CN104820581A (zh) * 2015-04-14 2015-08-05 广东工业大学 一种fft和ifft逆序数表的并行处理方法
CN104880694A (zh) * 2015-06-04 2015-09-02 南车株洲电力机车研究所有限公司 一种信号处理的方法及系统
CN107408102A (zh) * 2015-02-02 2017-11-28 优创半导体科技有限公司 配置成使用数字信号处理指令对可变长度向量进行操作的向量处理器
CN110780842A (zh) * 2019-10-25 2020-02-11 无锡恒鼎超级计算中心有限公司 基于神威架构的船舶三维声弹性模拟计算的并行优化方法
CN111352894A (zh) * 2018-12-20 2020-06-30 深圳市中兴微电子技术有限公司 一种单指令多核系统、指令处理方法及存储介质
CN111737638A (zh) * 2020-06-11 2020-10-02 Oppo广东移动通信有限公司 基于傅里叶变换的数据处理方法及相关装置
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质
CN116431219A (zh) * 2023-06-13 2023-07-14 无锡国芯微高新技术有限公司 用于fft计算的risc-v扩展架构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000231552A (ja) * 1999-02-08 2000-08-22 Nec Corp 高速フーリエ変換方法
US20070106718A1 (en) * 2005-11-04 2007-05-10 Shum Hoi L Fast fourier transform on a single-instruction-stream, multiple-data-stream processor
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN103440228A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种基于融合乘加指令加速fft计算的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000231552A (ja) * 1999-02-08 2000-08-22 Nec Corp 高速フーリエ変換方法
US20070106718A1 (en) * 2005-11-04 2007-05-10 Shum Hoi L Fast fourier transform on a single-instruction-stream, multiple-data-stream processor
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN103440228A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种基于融合乘加指令加速fft计算的方法

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
HE S,ET AL.,: "A new approach to pipeline FFT processor", 《PROCESSING SYMPOSIUM, 1996., PROCEEDINGS OF IPPS’96, THE 10TH INTERNATIONAL》 *
JAMIESON L H, ET AL.,: "FFT algorithms for SIMD parallel processing systems", 《JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING》 *
TANNO K,ET AL.,: "Parallel FFT algorithms using radix 4 butterfly computation on an eight-neighbor processor array", 《PARALLEL COMPUTING》 *
ZAPATA E L,ET AL.,: "Multidimensional fast Fourier transform into SIMD hypercubes", 《IEE PROCEEDINGS E (COMPUTERS AND DIGITAL TECHNIQUES)》 *
ZHANG K,ET AL.,: "Accelerating the data shuffle operations for FFT algorithms on SIMD DSPs", 《2011 IEEE 9TH INTERNATIONAL CONFERENCE ON ASIC (ASICON 2011)》 *
吴铁彬等: "一种快速SIMD浮点乘加器的设计与实现", 《计算机工程与科学》 *
杨博涵等: "一种基于SIMD-MCC计算机的二维FFT并行算法", 《微电子学与计算机》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902505A (zh) * 2014-04-12 2014-07-02 复旦大学 一种基于开关网络的可配置fft处理器电路结构
US10733140B2 (en) 2015-02-02 2020-08-04 Optimum Semiconductor Technologies Inc. Vector processor configured to operate on variable length vectors using instructions that change element widths
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10922267B2 (en) 2015-02-02 2021-02-16 Optimum Semiconductor Technologies Inc. Vector processor to operate on variable length vectors using graphics processing instructions
US10846259B2 (en) 2015-02-02 2020-11-24 Optimum Semiconductor Technologies Inc. Vector processor to operate on variable length vectors with out-of-order execution
US10824586B2 (en) 2015-02-02 2020-11-03 Optimum Semiconductor Technologies Inc. Vector processor configured to operate on variable length vectors using one or more complex arithmetic instructions
CN107408102A (zh) * 2015-02-02 2017-11-28 优创半导体科技有限公司 配置成使用数字信号处理指令对可变长度向量进行操作的向量处理器
CN104699465B (zh) * 2015-03-26 2017-05-24 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法
CN104699465A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法
CN104820581B (zh) * 2015-04-14 2017-10-10 广东工业大学 一种fft和ifft逆序数表的并行处理方法
CN104820581A (zh) * 2015-04-14 2015-08-05 广东工业大学 一种fft和ifft逆序数表的并行处理方法
CN104880694A (zh) * 2015-06-04 2015-09-02 南车株洲电力机车研究所有限公司 一种信号处理的方法及系统
CN111352894A (zh) * 2018-12-20 2020-06-30 深圳市中兴微电子技术有限公司 一种单指令多核系统、指令处理方法及存储介质
CN110780842A (zh) * 2019-10-25 2020-02-11 无锡恒鼎超级计算中心有限公司 基于神威架构的船舶三维声弹性模拟计算的并行优化方法
CN111737638A (zh) * 2020-06-11 2020-10-02 Oppo广东移动通信有限公司 基于傅里叶变换的数据处理方法及相关装置
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质
CN116431219A (zh) * 2023-06-13 2023-07-14 无锡国芯微高新技术有限公司 用于fft计算的risc-v扩展架构
CN116431219B (zh) * 2023-06-13 2023-08-22 无锡国芯微高新技术有限公司 用于fft计算的risc-v扩展架构

Also Published As

Publication number Publication date
CN103699516B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN103699516A (zh) 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置
KR102443546B1 (ko) 행렬 곱셈기
CN111213125B (zh) 使用simd指令进行高效的直接卷积
CN102375805B (zh) 面向向量处理器的基于simd的fft并行计算方法
US8255446B2 (en) Apparatus and method for performing rearrangement and arithmetic operations on data
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
US9965275B2 (en) Element size increasing instruction
KR102649933B1 (ko) 벡터 자리올림이 있는 가산 명령
GB2444811A (en) Apparatus and method for performing reordering and arithmetic operations on data in a SIMD processor.
WO2017168118A1 (en) Complex multiply instruction
CN102200964A (zh) 基于并行处理的fft装置及其方法
WO2013056980A1 (en) Vector processing system comprising a replicating subsystem and method
CN114746840A (zh) 用于乘法和累加操作的处理器单元
EP3655851B1 (en) Register-based complex number processing
CN104050148A (zh) 快速傅里叶变换加速器
CN112074810B (zh) 并行处理设备
CN202217276U (zh) 基于并行处理的fft装置
CN110008436B (zh) 基于数据流架构的快速傅里叶变换方法、系统和存储介质
US20210049230A1 (en) Half-precision floating-point arrays at low overhead
CN110750249A (zh) 一种快速傅里叶变换代码的生成方法及装置
US9582419B2 (en) Data processing device and method for interleaved storage of data elements
Liu et al. Vector Memory-Access Shuffle Fused Instructions for FFT-Like Algorithms
Zekri Restructuring and implementations of 2D matrix transpose algorithm using SSE4 vector instructions
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant