专利名称:一种支持fft加速的simd向量处理器的制作方法
技术领域:
本发明涉及一种支持FFT加速的SIMD向量处理器及其设计方法,具体地说是一种支持可变点数,对FFT/IFFT运算加速效率较高而整体硬件开销较低的SIMD向量处理器及其设计方法。
背景技术:
快速傅里叶变换(Fast Fourier Transformation, FFT)运算一般都通过专用硬件加速器(称为FFT处理器)或DSP处理器完成。专用硬件加速器能获得较高的加速效率,但是会占用较多额外资源,包括片上存储资源和片上计算逻辑资源,特别是当变换的长度极大时,专用硬件加速器所占用的额外资源将无法承受。用DSP处理器软件编程的方式完成 FFT运算虽然不会占用额外的硬件资源且具有很大的灵活性,但是其处理速度相对较慢,满足不了某些应用的实时性要求。
在一些数字信号处理算法,如距离-多普勒算法中,涉及大量各种长度的向量处理,最长可达到16K甚至更长。对这些向量的处理既包括规则的向量运算(向量加减法、向量乘法等)也包括FFT/IFFT运算。SIMD向量处理器可用来加速规则的向量运算,但是尚未出现同时能够直接加速FFT运算(加速效率和专用加速器相当)的SIMD向量处理器,在这种情况下,还需要另外使用FFT硬件加速器来加速各种点数的FFT/IFFT运算,额外的片上资源将会被占用。发明内容
为了加速大点数FFT的运算效率,同时避免使用专门硬件加速器所带来的额外硬件开销,本发明的目的是提供一种支持FFT加速的SIMD向量处理器。该SIMD向量处理器能够直接加速FFT运算,还可提供和专用硬件加速器加速效率相当的FFT运算加速,在保证性能的同时避免额外的硬件开销。
本发明的目的是通过以下技术方案来实现的一种支持FFT加速的SIMD向量处理器,其特征在于该处理器包括控制单元、计算单元、存储器子系统、存储交织单元和地址产生单元;所述计算单元支持各种向量运算的快速处理,所述存储器子系统包括存放操作数的存储器组A、存放系数的存储器组B和存放运算结果的存储器组C,且存储器组A、存储器组B和存储器组C内的单个存储体的位宽为一个复数字,支持4路数据并行的复数向量运算和8路数据并行的实数向量运算;计算单元、地址产生单元和存储交织单元均与控制单元连接;地址产生单元根据运算类型、运算的数据并行度及向量的长度产生所需的操作数地址序列、系数地址序列、结果地址序列;存储交织单元与地址产生单元和计算单元连接,并实现存储体的地址映射。
本发明中,存储器组A、存储器组B和存储器组C均为4个存储体。存储交织单元实现存储器组A、存储器组B和存储器组C内部4个存储体的地址映射,使同时读取的4个操作数位于4个不同的存储体,且同时写入的4个运算结果位于4个不同的存储体;通过可编程地址映射方法,支持各种长度向量的规则向量运算和FFT/IFFT运算。
所述可编程地址映射方法是可通过软件编程方式设置向量长度,对于不同的向量长度,地址映射方法也相应变化,且在各向量长度下,均能保证规则向量运算和FFT/IFFT 运算无冲突读写。
计算单元包括2个复数乘法器和4个复数加法器,支持2路数据并行的复数乘法、 卷积运算,4路数据并行的复数加减法、累加运算,4路数据并行的复数模方运算,4路数据并行的FFT/IFFT运算,以及8路数据并行的实数乘法、卷积、加减法、累加运算。对于上述的η路数据并行的向量运算,平均每个时钟周期处理η个向量单元(不考虑处理每个向量前的流水线填充时间)。其加速效率与专用硬件加速器相当,且支持可变点数,因此在保障系统计算效率的同时,节省了在设计中因使用FFT专用硬件加速单元而带来的巨额片上存储资源与逻辑资源开销。
本发明中的存储子系统包括三个存储器组,分别存放操作数、系数和运算结果,每组存储器分为4个存储体,存储体的位宽为一个复数字,以支持4路数据并行的复数向量运算和8路数据并行的实数向量运算。地址产生单元,能够根据运算类型(规则运算、FFT/ IFFT运算)、运算的数据并行度(2、4、8)、向量的长度等产生所需的操作数地址序列、系数地址序列(对某些运算不需要,如累加运算和复数模方运算)、结果地址序列。
本发明能够直接加速FFT运算的SIMD向量处理器,除了能够加速规则向量运算之外,还可提供和专用硬件加速器加速效率相当的FFT运算加速,在保证性能的同时避免额外的硬件开销。
本发明的有益效果是通过向SIMD向量处理器添加FFT加速指令的方式,取得了和专用硬件加速器相当的加速效率,而避免了使用专用硬件加速所带来的额外硬件开销。 本发明可以有效地应用于具有大量超长向量运算(包括规则向量运算与FFT/IFFT)的实时信号处理系统。
图1是本发明的整体架构示意图;图2是传统的radix-2 DIT FFT运算数据流图; 图3是本发明的radix-2 DIT FFT运算数据流图。
具体实施方式
下面结合附图对本发明支持FFT加速的SIMD向量处理器进行详细的说明。
一种支持FFT加速的SIMD向量处理器,见图1,该处理器包括控制单元、计算单元、 存储器子系统、存储交织单元和地址产生单元。
计算单元支持各种向量运算的快速处理,计算单元包括2个复数乘法器和4个复数加法器,支持2路数据并行的复数乘法、卷积运算,4路数据并行的复数加减法、累加运算,4路数据并行的复数模方运算,4路数据并行的FFT/IFFT运算,以及8路数据并行的实数乘法、卷积、加减法、累加运算。对于上述的η路数据并行的向量运算,平均每个时钟周期处理η个向量单元(不考虑处理每个向量前的流水线填充时间)。其加速效率与专用硬件加速器相当,且支持可变点数,因此在保障系统计算效率的同时,节省了在设计中因使用FFT专用硬件加速单元而带来的巨额片上存储资源与逻辑资源开销。
存储器子系统包括三个存储器组,分别为存放操作数的存储器组A、存放系数的存储器组B和存放运算结果的存储器组C,且每个存储器组内均为4个存储体。单个存储体的位宽为一个复数字,支持4路数据并行的复数向量运算和8路数据并行的实数向量运算, 使同时读取的4个操作数位于4个不同的存储体,且同时写入的4个运算结果位于4个不同的存储体;通过可编程地址映射方法,支持各种长度向量的规则向量运算和FFT/IFFT运算。计算单元、地址产生单元和存储交织单元均与控制单元连接。
地址产生单元根据运算类型、运算的数据并行度及向量的长度产生所需的操作数地址序列、系数地址序列、结果地址序列;存储交织单元与地址产生单元和计算单元连接, 并实现存储体的地址映射。存储交织单元与三个存储器组相适配,也包括存储交织单元A、 存储交织单元BT和存储交织单元C三个部分。
可编程地址映射方法是可通过软件编程方式设置向量长度,对于不同的向量长度,地址映射方法也相应变化,且在各向量长度下,均能保证规则向量运算和FFT/IFFT运算无冲突读写。
如前所述,使支持规则向量运算的SIMD处理器支持FFT直接加速的最大障碍在于地址冲突。在FFT专用硬件加速器设计中同样会面临这个问题,并已经有很成熟的解决方法,一般可以通过灵活的设计存储系统和地址映射来避免。但是,在这里问题就更复杂了, 因为需要在添加FFT加速指令之后仍能支持其他规则向量运算的加速。
本发明应用新的radix-2 DIT FFT运算数据流图,并提出了一种地址映射方法同时支持规则向量运算与FFT/IFFT的无冲突存储器存取,而且其可编程性支持各种长度向量的运算。
图2是传统的radix-2 DIT FFT运算数据流图(输入数据已经进行过地址的比特位反转)。基于该数据流图进行计算时,操作数的地址序列与结果的地址序列是相同的,但对于每一级运算地址序列都是不同的,见表1。
表1每个操作数/结果数据通道的地址序列(对于长度为8的FFT)
权利要求
1.一种支持FFT加速的SIMD向量处理器,其特征在于该处理器包括控制单元、计算单元、存储器子系统、存储交织单元和地址产生单元;所述计算单元支持各种向量运算的快速处理,所述存储器子系统包括存放操作数的存储器组A、存放系数的存储器组B和存放运算结果的存储器组C,且存储器组A、存储器组B和存储器组C内的单个存储体的位宽为一个复数字,支持4路数据并行的复数向量运算和8路数据并行的实数向量运算;计算单元、 地址产生单元和存储交织单元均与控制单元连接;地址产生单元根据运算类型、运算的数据并行度及向量的长度产生所需的操作数地址序列、系数地址序列、结果地址序列;存储交织单元与地址产生单元和计算单元连接,并实现存储体的地址映射。
2.根据权利要求1所述的支持FFT加速的SIMD向量处理器,其特征在于存储器组A、 存储器组B和存储器组C均为4个存储体。
3.根据权利要求2所述的支持FFT加速的SIMD向量处理器,其特征在于存储交织单元实现存储器组A、存储器组B和存储器组C内部4个存储体的地址映射,使同时读取的4 个操作数位于4个不同的存储体,且同时写入的4个运算结果位于4个不同的存储体;通过可编程地址映射方法,支持各种长度向量的规则向量运算和FFT/IFFT运算。
4.根据权利要求3所述的支持FFT加速的SIMD向量处理器,其特征在于所述可编程地址映射方法是可通过软件编程方式设置向量长度,对于不同的向量长度,地址映射方法也相应变化,且在各向量长度下,均能保证规则向量运算和FFT/IFFT运算无冲突读写。
5.根据权利要求1所述的支持FFT加速的SIMD向量处理器,其特征在于计算单元包括2个复数乘法器和4个复数加法器,支持2路数据并行的复数乘法、卷积运算,4路数据并行的复数加减法、累加运算,4路数据并行的复数模方运算,4路数据并行的FFT/IFFT运算, 以及8路数据并行的实数乘法、卷积、加减法、累加运算。
全文摘要
本发明公开了一种支持FFT加速的SIMD向量处理器。包括控制单元、计算单元、存储子系统、存储交织单元和地址产生单元计算单元支持各种向量运算的快速处理;存储器子系统包括三个存储器组,每个存储器组包括四个存储体且存储器组内的单个存储体的位宽为一个复数字,支持4路数据并行的复数向量运算和8路数据并行的实数向量运算;计算单元、地址产生单元和存储交织单元均与控制单元连接;地址产生单元产生所需的操作数地址序列、系数地址序列、结果地址序列;存储交织单元与地址产生单元和计算单元连接,并实现存储体的地址映射。本发明对FFT/IFFT运算的加速效率和专用硬件加速器相当,却避免了使用专用硬件加速器所带来的巨大的额外开销,适用于具有大量长向量运算的实时信号处理系统中。
文档编号G06F9/34GK102495721SQ20111039371
公开日2012年6月13日 申请日期2011年12月2日 优先权日2011年12月2日
发明者孙敏敏, 李丽, 李伟, 沙金, 潘红兵, 王佳文, 郑维山 申请人:南京大学