一种高性能超长点数浮点FFT加速器设计

王 谛 石 嵩 吴铁彬 刘 亮 谭弘兵 郝子宇 过 锋 李宏亮

(江南计算技术研究所 江苏无锡 214083)

(wangdi_csarch@126.com)

摘 要 快速傅里叶变换(fast Fourier transform,FFT)在数字信号处理中占据核心地位.随着高性能超长点数FFT需求的增长,数字信号处理器(digital signal processor,DSP)的计算能力越来越难以满足需求,集成FFT加速器成为重要的发展趋势.为了支持超长点数FFT,将2维分解算法推广到多维,提出一种可集成于DSP的高性能超长点数FFT加速器结构.该结构通过基于素数个存储体的无冲突体编址方法实现了3维转置运算;通过递推算法实现了高效铰链因子生成;使用单精度浮点二项融合点积运算和融合加-减运算,对FFT运算电路进行了精细化设计.实现了对4G点数单精度浮点FFT计算的支持.综合结果表明:FFT加速器运行频率能够达到1 GHz以上,性能达到640Gflop/s.在支持的点数和性能方面都较已有研究成果取得大幅提升.

关键词 快速傅里叶变换;多维分解算法;3维转置运算;铰链因子生成;加速器

离散傅里叶变换(discrete Fourier transform,DFT)作为时域和频域转换的基本运算,在数字信号处理中占据核心地位[1],应用领域十分广泛.快速傅里叶变换[2](fast Fourier transform,FFT)是DFT的快速算法,FFT的提出促进了数字信号处理的发展,被评选为20世纪科学和工程界最具影响力的十大算法之一[3].随着高速采样和实时信号处理技术的发展,高性能超长点数FFT的需求迅速增长[4].由于FFT的算法复杂度为O(N lg N),FFT和以FFT为基础的各类时-频变换算法的计算占比愈发凸显.例如,在国际大科学工程——平方公里阵列(square kilometer array,SKA)射电望远镜项目中,FFT的计算占比达40%[5].目前已有FFT计算架构的最大吞吐率能达到100 GS/s量级[6],并且吞吐率需求以指数级速度增长,大概每5年增长10倍[7].

数十年来发展出数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field programmable gate array,FPGA)和专用集成电路(application specific integrated circuit,ASIC)等多种数字信号处理平台.DSP具有强大的运算能力和良好的可编程性,在满足性能需求的条件下,DSP是构建数字信号处理系统的首选器件.但受到指令串行执行和处理器寻址模式的限制,传统DSP的FFT运算能力低于FPGA和ASIC实现[8].

“通用核心+加速器”的结构在获得通用处理器可编程性和灵活性的同时又能提升特定应用的性能与功耗效率,是未来处理器发展的重要方向.为了提高DSP的FFT处理能力,在DSP中集成FFT加速器成为必然选择,已有大量理论研究[9]和实际产品[10]出现.现有研究成果存在2点不足:1)与DSP核心相比,FFT加速器的峰值性能没有体现出明显优势;2)对于超长点数FFT的支持能力有限.

本文针对集成于DSP的FFT加速器开展研究工作.注意到将FFT的2维分解算法推广到多维后,可以将每一维的点数控制在16个点以内,从而能用固定的小点数FFT实现几乎任意长度的FFT,本文在此基础上提出面向超长点数FFT的多维分解算法.针对FFT多维分解算法中的转置和铰链因子生成这2种核心运算开展研究,提出了素数体片上3维转置存储器结构解决访存带宽利用率低的问题,提出了铰链因子递推生成算法解决坐标旋转数字计算机(coordinate rotational digital computer,CORDIC)算法迭代计算周期长的问题.最后,对每一维处理中的小点数FFT进行了精细化电路设计.本文设计的FFT加速器能够实现最长4G点数的单精度浮点FFT计算,运行频率能够达到1 GHz以上,性能达到640 Gflop/s.在点数和性能方面都较已有研究成果取得大幅提升.

1 相关研究

经过数十年的研究,FFT算法发展了许多种类.根据运算形式的不同可以将FFT分为时间抽选(decimation in time,DIT)和频率抽选(decimation in frequency,DIF).根据基本蝶形运算单元的粒度则可以将FFT分为基2、基4、基8、基16、多基和素数基等.与此同时,大量的流水化和并行化FFT实现结构也被提出,例如阵列并行结构、单路延时置换(single-path delay commutator,SDC)结构、单路延时反馈(single-path delay feedback,SDF)结构、多路延时置换(multi-path delay commutator,MDC)结构和多通路延时反馈(multi-path delay feedback,MDF)结构等[9].

许多研究针对基本运算单元进行精细化设计.例如,采用基22算法[1],对偶序号使用基2算法,对奇序号使用基4算法,减少运算量;采用不同实现方式的乘法器[11]获得较小的开销;以CORDIC算法为基础,将复数乘法与旋转因子求值统一到一个迭代运算中[12],减少蝶形运算复杂度;通过运算过程中的动态位宽调整[13],减少资源开销和功耗;采用二项融合点积(fused dot product,FDP)运算和融合加-减(fused add-subtract,FAS)运算[14],实现高效的浮点复数运算.这些研究在小点数FFT计算中普遍取得明显的优势,然而,提升长点数FFT计算效率需要超出基本运算单元的范畴进行考虑.

对于长点数FFT,计算的中间结果无法全部存储在芯片内部.Winograd傅里叶变换算法[15](Winograd Fourier transform algorithm,WFTA)利用旋转因子特性对FFT进行分解,使用规模较小的2维FFT模拟实现规模较大的一维FFT,是一种高效且资源占用相对较少的FFT实现方法.在处理器[16-17]和FPGA[4,18]上对长点数FFT的实现普遍采用了这种2维分解算法.

长点数FFT加速器的研究大多在2维分解算法基础上进行改进.Yang等人[19]采用一种支持基2、基4、基8、基16可重构运算单元,实现FFT运算中蝶形运算单元的灵活配置,达到最佳的能效.Tang等人[20]提出一种基数灵活可配的MDF结构,适用于可变长度多路FFT.Chen等人[21]提出一种基于CORDIC算法的可重构浮点FFT加速器结构,通过旋转方向预测减少硬件开销,通过旋转角度的实时生成节省存储需求.于东等人[22]在FFT处理器中将缓存划分成32个体,通过对缓存的灵活调度实现“乒乓”操作,提高长点数FFT的运算性能.雷元武等人[9]设计了一种基于矩阵转置操作的可变长度FFT加速器结构,提出“乒乓”多体数据存储器、基于基本块的快速矩阵转置算法、结合查表和基于CORDIC算法的混合旋转因子产生策略等优化方法.在这些研究中,运算量的精简、旋转因子高效生成和提高存储访问效率始终是关注的重点.

2 算法分析

2.1 FFT算法介绍

N点序列{x 0,x 1,…,x n}的DFT定义为

其中,k∈[0,N-1],旋转因子

Cooley-Tukey算法[2]是目前应用最为广泛的FFT算法.根据旋转因子在计算过程中的位置分为DIT和DIF两类.

以基2 DIT算法为例进行简要说明[23].当N为偶数时,令x 0,nx 2n,x 1,nx 2n+1(0≤nN/2-1,n为整数).若X 0,k=DFT(x 0,n),X 1,k=DFT(x 1,n),(0≤kN/2-1,k为整数),则:

式(2)表明:若将任何一偶数点序列按n的奇偶性分成2个子序列,则原序列的DFT可由2个子序列DFT的线性组合得到.

按照式(1)直接进行N点DFT计算,需要N 2次复数乘法和N(N-1)次复数加法,而采用式(2)的蝶形运算方法则只需(N lb N)/2次复数乘法和N lb N次复数加法.FFT算法极大缩减了DFT的运算量.

2.2 多维分解FFT算法

观察式(2)可以发现,每一级蝶形运算的输入数据都是上一级蝶形运算输出数据混洗的结果.而且,随着蝶形运算级数的增加,混洗的范围越来越大.这就导致,当FFT的点数长到无法在加速器内部一次性加载所有输入数据的时候,将会产生大量的非连续访存,这与半导体存储器采用并行总线方式提高带宽的机制不兼容.对于超长点数FFT运算需要找到访存连续性较好的算法.

假设NL×M,由式(1)得:

其中,p∈[0,L-1],q∈[0,M-1].

从式(3)可以看出,N点DFT分解为了2维.第1维是独立的LM点DFT(其结果需要乘以铰链因子W lqN),第2维是独立的ML点DFT.所以,可以将长点数FFT转化为小点数FFT的2维分解[4]:1)将N点的数据分解为LM列的矩阵;2)对所有行分别做M点的FFT;3)将所有元素与各自的铰链因子相乘;4)进行矩阵转置,得到ML列的矩阵;5)对所有行分别做L点的FFT;6)再次进行矩阵转置,得到结果.

将上述2维分解进一步推广.假设NB d,由式(3)得:

其中,n 0,n 1,…,n d-1∈[0,B-1];k 0,k 1,…,k d-1∈[0,B-1].根据式(4)可以得到基础FFT点数为Bd维分解算法.

算法1.FFT的多维分解算法.

FFT_MD(d;x 0,x 1,…,x B d-1):/∗递归定义,B点FFT作为基本运算,参数d为维度∗/

算法1总共进行d轮,每轮完成B d-1B点FFT.每个元素读、写各d次,参与B点FFT运算d次,乘铰链因子d-1次.

如果存储器的访问粒度为B个点,则算法1中的访存将是“按维连续”的.最基本的运算单元就是B点FFT,每次运算都是在相应的维上连续的B个数据参与运算.采用第3节中将要介绍的3维转置存储器则可以将“按维连续”的访存转换为连续访存,从而解决了超长点数FFT运算的访存连续性问题.

另外,在算法1中计算顺序是按照第d维到第1维进行的,计算第i维(1≤id)的B d-1B点FFT的过程是相互独立的.当其他维坐标固定时,第i维和第i-1维构成一个B×B的矩阵.如果以这样的矩阵为基本处理单元,则2维处理可以合并,读、写B d-2B 2个元素可以进行B d-2×2BB点FFT运算.运算次数不变的情况下,读、写次数还能减半.

3 设计实现

考虑到超长点数FFT的精度要求,本文选择单精度浮点作为基本数据表示.在此基础上,选择16点FFT作为基本运算.

3.1 数据流处理

从根本上说,FFT计算过程中需要以2的幂为步长交叉访问数据,这与存储器的连续访问机制不匹配,导致存储带宽利用率低,计算性能无法充分发挥.3维转置运算搭建了连续访问数据与跨步交叉访问数据之间的桥梁.在此基础上,通过2维转置实现算法1中2维处理的合并,进一步减少访存量.

3.1.1 3维转置运算

假设存储器的访问粒度为B个点,则意味着FFT加速器每次必须按第1维的B个点进行读、写.为了存储一个第i维和第i-1维构成的B×B矩阵,需要具备存储B 3个点的能力.因为,读入B 3个点才能同时得到B个完整的第i维和第i-1维构成的B×B矩阵.此时,如果能够按照第i维或第i-1维同时将B个数据取出,则实现了无带宽损失的3维转置运算.

存储器的访问粒度按照16个点设计,具备存储163=4 096个点的能力,容量为32 KB,使用静态随机访问存储器(static random access memory,SRAM)实现.SRAM无法进行任意方向的读写,即便采用2维SRAM阵列[24](每个存储单元变成了2个端口,增大了SRAM的面积)仍然难以实现3维转置运算.因此,本文采用基于SRAM的无冲突体编址技术实现3维转置运算.

根据高庆狮等人[25]对素数存储系统的研究,对于跨步为2的幂的访问,采用素数个存储体,即可消除存储体访问冲突.假设访问地址为a,a+2r,a+2×2r,…,a+15×2r,采用17个存储体.令2r mod 17=t,则各地址所在的体为a mod 17,(at)mod 17,(a+2t)mod 17,…,(a+15t)mod 17.如果第i个地址和第j个地址落在同一个体,即(ait)mod 17=(ajt)mod 17,则(ij)t mod 17=0,只有ij等式才能成立.

3维转置运算的存储体可以存储一个多维张量中按照某3维截取的一个立方体.由于采用17个体在跨步为2的幂访问时不存在体冲突,可以并行读入该立方体,并且对任意2维并行转置读出.作为转置用存储器,每个体需要存储个点,即每个体宽度为64 b(8 B)、深度为241.

按照3维编址进行分析.初始状态下,第1组写入地址为(0,0,0)~(0,0,15),第2组写入地址为(0,1,0)~(0,1,15),依次类推,当写入地址为(15,15,0)~(15,15,15)时,完成全部4 096个点的写入.在完成地址(15,0,0)~(15,0,15)的写入后,即可读出转置后的第1组地址(0,0,0)~(15,0,0).所以,当4 096个点完全写入时,已读出多组数据,下一批4 096个点可以流水写入.

新的4 096个点第1组写入地址为(0,0,0)~(15,0,0),第2组写入地址为(0,1,0)~(15,1,0),依次类推,当写入地址为(0,15,15)~(15,15,15)时,完成全部4 096个点的写入.在完成地址(0,0,15)~(15,0,15)的写入后,即可读出转置后的第1组地址(0,0,0)~(0,0,15).

根据读/写的维序即可计算读/写操作下一拍的3维编址(z,y,x).

根据3维编址得到体地址与体内地址为

并不需要对所有地址进行计算,每次读/写的16个地址,只需要先计算出第1个所在的体地址和体内地址,其余15个可以快速得到.另外,对于以2的幂加1为除数的除法和模运算存在快速硬件实现方法[25].

从式(5)所显示的体地址规律可以看出,第1维和第3维都是连续循环递增的,第2维是连续循环递减的.无论是输入数据还是输出数据,可以根据地址计算出移位位数.分别对输入/输出的16个数据进行顺序和逆序排列之后移位,移位采用2级对数移位器.总体结构如图1所示:

Fig.1 Structure of 3-dimensional transposition operation module
图1 3维转置运算模块结构

3.1.2 2维转置运算

2维转置运算采用行向输入、列向输出的存储器阵列实现.需要存储162=256个点,存储容量为2 KB.芯片中容量较小的存储器阵列可以采用触发器、SRAM或锁存器实现.SRAM的面积和功耗开销最小,但是由于2维转置运算对存储器有特殊要求,需要按行写入、按列读出,标准SRAM不支持该功能,因此需要采用定制设计[24],开发周期长且不利于扩展.触发器的面积和功耗开销最大.因此,选择锁存器作为基本存储单元.2维转置运算的存储器如图2所示.

通过2个这样的锁存器阵列来实现转置处理的流水化,如图3所示.读选择信号和写选择信号互为反相,根据读、写次数来进行判断.

3.2 铰链因子处理

对FFT运算点数的支持并不需要无限大,超出主存容量是没有意义的.加速器按照最大支持4G点FFT设计,则存储容量需要32 GB,基本达到当前内存容量的极限.更长点数FFT则依赖于软件方法实现.

Fig.2 Memory for two-dimensional transposition operation
图2 2维转置运算的存储器

Fig.3 Structure of 2-dimensional transposition operation module
图3 2维转置运算模块结构

在许多研究中采用CORDIC算法生成铰链因子,需要进行十几个甚至几十个时钟周期的流水化迭代处理.CORDIC算法可以生成任意角度的坐标值,对于有限集合而言则过于强大.我们注意到,即便对于4G点FFT,也只需要根据算法1进行8维分解,铰链因子是一个有限集合,而且每一组铰链因子与前一组铰链因子存在递推关系,因此,可以使用较为简便的方法实现铰链因子生成.

假设数据组织为8维维序结构,以处理第4维铰链因子为例.x n 7,n 6,n 5,n 4,n 3,n 2,n 1,n 0需要的铰链因子为.由于同时处理n 3=0~15,需要同时生成.在算法1中,处理的第1组点为铰链因子均为处理的第2组点为铰链因子分别为…;处理的第16组点为铰链因子分别为;处理的第17组点为,铰链因子分别为,依次类推.对于同时处理的16个铰链因子中的第k个,可以采用算法2递推生成.

算法2.铰链因子生成算法.

输入:上一个铰链因子W pre、上一个计数值C pre、铰链因子的维度d;

输出:铰链因子W、计数值C.

初始状态W=1,C=0;

为了并行执行,铰链因子处理需要16个铰链因子生成模块和16个单精度浮点复数乘法器.维度控制逻辑根据FFT命令解析出当前运算的维度,发送给每个铰链因子生成模块.

铰链因子生成模块结构如图4所示.控制逻辑根据处理的维度和计数值生成选择信号.寄存器0用于存储当前的铰链因子,寄存器1用于存储上一个计数值整除16时的铰链因子.控制逻辑根据算法2实现.基础旋转因子包括W k16,W k162,…,W k 168为常数,接入固定电平即可.

Fig.4 Twiddle factor generation module
图4 铰链因子生成模块

从算法2和图4可以看出,铰链因子生成的延迟与乘法运算的延迟相同,较传统的CORDIC算法有明显优势.但是,该方法也带来了单精度浮点复数乘法器的额外开销.

3.3 基本运算

本文采用IEEE 754-2008标准[26]单精度浮点作为基本数据表示.以Swartzlander等人[14]提出的FDP运算和FAS运算作为基本的浮点运算来构造单精度浮点复数运算.对于复数aa Re+i a Imbb Re+i b Im,其乘积cc Re+i c Ima×b=(a Re+i a Im)×(b Re+i b Im)=(a Re b Rea Im b Im)+i(a Re b Ima Im b Re).FDP实现4个单精度浮点数a 0,a 1,a 2,a 3a 0a 1a 2a 3运算或a 0a 1a 2a 3运算.2个FDP(分别配置为加和减)则恰好能够实现一个复数乘法.FAS运算同时完成蝶形运算中的加法和减法运算.

16点FFT运算采用基4 DIT算法实现,总体结构如图5所示,包括3个混洗单元、8个4点蝶形运算单元和8个旋转因子乘法单元.

Fig.5 Sixteen-point FFT operation module
图5 16点FFT运算模块

混洗单元内部只有连线,实现地址反序输出,如图6所示:

Fig.6 Shuffle unit
图6 混洗单元

4点蝶形运算单元完成的运算为

采用图7所示结构实现,其中,Re和Im分别表示一个复数的实部和虚部.

旋转因子都是常数,包括,使用单精度浮点FDP实现旋转因子的复数乘法运算.

Fig.7 Four-point butterfly unit
图7 4点蝶形运算单元

3.4 控制结构

FFT加速器总体结构如图8所示,包括命令队列、读/写控制器、读/写缓冲、3维转置存储器、16点FFT运算模块、铰链因子处理模块和2维转置存储器等.

Fig.8 Overall structure of FFT accelerator
图8 FFT加速器总体结构

命令队列从DSP核心的指令流水线接收命令并进行解析,生成各模块控制信号.读/写控制器根据命令队列解析的地址对读/写缓冲和3维转置存储器进行控制.读/写缓冲与存储器交互,用于读/写数据的平滑.

FFT加速器的执行方式为:1)DSP核心通过写特殊存储空间或特殊寄存器方式对FFT加速器进行配置,包括原始数据地址、计算结果地址、计算规模等;2)DSP核心发出异步FFT指令;3)FFT加速器从存储器中读取数据进行FFT计算,并将计算结果写入指定存储器地址中;4)通过中断或回答字机制返回FFT完成信号给DSP核心.

整个FFT加速器通过命令队列和读/写控制器进行管理,工作流程为:1)DSP核心的指令流水线向命令队列发出FFT指令;2)命令队列对FFT指令进行解析,解析出读/写命令;3)读/写控制器生成读/写地址,发送给读/写缓冲;4)读缓冲从存储器中读数据;5)读缓冲将数据发送给输入3维转置存储器;6)输入3维转置存储器根据维序将转置后数据发送给16点FFT运算模块;7)FFT计算后结果经过铰链因子处理,送入2维转置存储器;8)2维转置存储器输出送入另一个16点FFT运算模块;9)FFT计算后结果经过铰链因子处理,送入输出3维转置存储器;10)输出3维转置存储器根据维序将转置后数据发送给写缓冲;11)写缓冲根据写地址将数据写回存储器.

4 实验与分析

4.1 综合结果

本文使用Verilog语言对FFT加速器进行了完整实现.其中,单精度浮点FDP和FAS都采用4级流水线设计.

使用物理信息相关的DCG综合流程[27],对各模块和整个FFT加速器采用TT Corner工艺进行综合,关键路径延时为954 ps(运行频率能够达到1 GHz以上),面积为462 100μm2,功耗为1 210 m W.FFT总体及各模块综合结果如表1所示.

表1中同时列出了一个4级流水的单精度浮点融合乘加(fused multiply-add,FMA)部件的综合结果作为对比.可以看出,整个FFT加速器的面积大致相当于500个单精度浮点FMA部件.本文提出的加速器结构中,4点蝶形运算含有8个FAS,16点FFT运算含有8个4点蝶形运算和8个旋转因子乘法,铰链因子处理中含有32个复数乘法器.可以看出,各子部件单独综合结果与总体综合结果基本吻合.3维转置存储器中使用的每个SRAM存储器的面积为2 500μm2,SRAM的总面积为34×2 500μm2=85 000μm2,占整个FFT加速器的18.39%.

Table 1 Synthesis Result
表1 综合结果

?

本文还对FFT加速器进行了FPGA实现,其中,器件型号为XCVU440-FLGA2892.时钟频率可以达到136.6 MHz,资源消耗情况如表2所示,占用了177 875个REG、657 790个LUT和34个Block RAM.从综合结果来看,本文设计的FFT加速器具有较强的可实现性.

Table 2 FPGA Resources Consumption of Realization
表2 FPGA实现资源消耗

?

4.2 比较与分析

4.2.1 性能与开销

以基2 DIT算法作为性能计算的标准,一个蝶形运算及其完成的基本操作需要4个乘法操作和6个加/减法操作,共10个操作[9].对于N点FFT,总共需要0.5N lb N个蝶形运算,所以总的计算量为5N lb N个操作.

根据综合结果,本文设计的FFT加速器可以运行在1 GHz,内部包含2个16点FFT运算模块,性能能够达到2×5×16×(lb16)flop×1 GHz=640 Gflop/s.

Table 3 Performance Comparison of FFT Accelerator
表3 FFT加速器性能与开销对比

?

表3中对比了若干种长点数FFT加速器的性能和开销.可以看出,采用综合实现方式,本文提出的FFT加速器与现有研究中的浮点FFT加速器相比,能够取得1~2个数量级的性能提升.在与现有研究中的定点FFT加速器比较时,性能上也有优势.得益于多维分解算法的使用,本文将单维处理点数固定为16,从而可以高密度集成16点FFT运算部件.同样得益于多维分解算法的使用,本文设计的FFT加速器能够支持到4G个点,远远超过其他实现方法.

由于不同研究者采用的工艺或FPGA型号不同,难以给出一个统一的开销标准.我们既给出了综合结果,也给出了FPGA实现结果,便于进行开销对比.与其他综合实现的研究相比,本文设计的FFT加速器的面积和功耗开销较高,但是性能面积比和性能功耗比都具有优势.

4.2.2 存储带宽

假设FFT加速器的计算性能为P com,基本处理点数为M(对于本文设计的FFT加速器P com=640Gflop/s,M=162=256).对于N点FFT(NM,存储器中能够容纳N个点数据),计算量A com=5N lb N flop,访存量A mem=16N(lb N/lb M)B.存储器带宽B mem需满足:

所以,本文设计的FFT加速器,需要的存储器带宽为0.4×640 GB/s=256 GB/s.对于使用DDR存储器的高端处理器,这个带宽是可以满足的.对于使用GDDR和HBM存储器的处理器,存储带宽更高.

对于主存带宽受限的情况(以128 GB/s为例),则可以通过设置缓存的方式来达到对计算能力的支持.缓存的带宽需要满足256 GB/s(对于片上SRAM是容易实现的),缓存能够容纳的点数M可以视作主存视角的基本处理点数.则lb M≥(3.2×640)/128=16,M≥216,即缓存容量需要达到512 KB,对于处理器而言也是容易实现的.

对于主存带宽较低的情况(以32 GB/s为例,假设片上缓存容量为2 MB),点数小于256 K时能够达到峰值计算性能,点数大于256 K时的计算性能

4.2.3 计算效率

本文设计的FFT加速器以256点为基本处理单位,当计算的总点数为256的幂时,性能可以得到充分发挥,其他情况下计算效率难以达到100%.

对256点到4G点FFT的计算效率进行模拟测试,结果如图9所示.可以看出,对于点数不是256幂的情况,点数较小时计算效率降幅较大,而点数较大时计算效率降幅则较小.这是由于,当点数较大时,在大部分情况下都能选择出完整的2个维度进行FFT计算.

Fig.9 Computing efficiency of FFT accelerator
图9 FFT加速器的计算效率

在本文设计的FFT加速器中提高小点数FFT的计算效率仍然需要进一步探索.

5 总 结

本文提出一种可集成于DSP的高性能超长点数FFT加速器结构.通过基于素数体的片上3维转置存储器、高效铰链因子生成技术和精细化FFT运算电路设计,实现了超长点数FFT的多维分解算法.对于4G以内点数的单精度浮点FFT计算,能够达到640 Gflop/s的性能,大幅提升了FFT加速器的性能和支持的点数.

参考文献

[1]Sun Jingyu.The design of 1024-points float pipelined FFT IP core[D].Harbin:Harbin Institute of Technology,2015(in Chinese)(孙敬宇.1024点浮点流水线型FFT IP核设计[D].哈尔滨:哈尔滨工业大学,2015)

[2]Cooley J W,Tukey J W.An algorithm for the machine calculation of complex Fourier series[J].Mathematics of Computation,1965,19(90):297301

[3]Li Yan,Zhang Yunquan.An automatic performance tuning framework for FFT on heterogenous platforms[J].Journal of Computer Research and Development,2014,51(3):637 649(in Chinese)(李焱,张云泉.异构平台上性能自适应FFT框架[J].计算机研究与发展,2014,51(3):637649)

[4]Guo Xiao,Zhang Yue,Chen Zengping,et al.Design and implementation of ultra long points FFT[J].Journal of Signal Processing,2013,29(11):14881494(in Chinese)(郭骁,张月,陈曾平,等.超长点数FFT的设计与实现技术[J].信号处理,2013,29(11):14881494)

[5]Chen Tun,Li Zhihao,Jia Haipeng,et al.Multi-dimensional FFT implementation and optimization on ARMv8 platform[J].Chinese Journal of Computers,2019,42(11):2384 2402(in Chinese)(陈暾,李志豪,贾海鹏,等.基于ARMv8平台的多维FFT实现与优化研究[J].计算机学报,2019,42(11):2384 2402)

[6]Garrido M,Moller K,Kumm M.World"s fastest FFT architectures:Breaking the barrier of 100 GS/s[J].IEEE Transactions on Circuits and Systems I:Regular Papers,2019,66(4):15071516

[7]Garrido M.Evolution of the performance of pipelined FFT architectures through the years[C]//Proc of 2020 XXXV Conf on Design of Circuits and Integrated Systems.Piscataway,NJ:IEEE,2020:1 6

[8]Chung E S,Milder P A,Hoe J C,et al.Single-chip heterogeneous computing:Does the future include custom logic,FPGAs,and GPU?[C]//Proc of the 43rd Annual Int Symp on Microarchitecture.Piscataway,NJ:IEEE,2010:225236

[9]Lei Yuanwu,Chen Xiaowen,Peng Yuanxi.A high energy efficiency FFT accelerator on DSP chip[J].Journal of Computer Research and Development,2016,53(7):1438 1446(in Chinese)(雷元武,陈小文,彭元喜.DSP芯片中的高能效FFT加速器[J].计算机研究与发展,2016,53(7):14381446)

[10]Texas Instruments,Inc.Digitalsignal processor(DSP)overview[EB/OL].[2021-01-20].https://www.ti.com/processors/digital-signal-processors/overview.html

[11]Ajay A,Lourde R M.VLSI implementation of an improved multiplier for FFT computation in biomedical applications[C]//Proc of the 2015 IEEE Computer Society Annual Symp on VLSI.Piscataway,NJ:IEEE,2015:6873

[12]Yang Jun,Guo Yuedong,Ding Jun.Design and implementation of high-speed and real-time floating-point butterfly unit[J].Chinese Journal of Scientific Instrument,2010,31(3):519524(in Chinese)(杨军,郭跃东,丁俊.一种高速实时浮点蝶形运算单元的设计与实现[J].仪器仪表学报,2010,31(3):519524)

[13]Rangachari S,Balakrishnan J,Chandrachoodan N.Scalable low power FFT/IFFT achitecture with dynamic bit width configurability[C]//Proc of the 27th Int Conf on VLSI Design and the 13th Int Conf on Embedded Systems.Piscataway,NJ:IEEE,2014:359364

[14]Swartzlander E E,Saleh H H M.FFT implementation with fused floating-point operations[J].IEEE Transactions on Computers,2012,61(2):284288

[15]Silverman H.An introduction to programming the Winograd Fourier transform algorithm(WFTA)[J].IEEE Transactions on Acoustics,Speech,and Signal Processing,1977,25(2):152 165

[16]Ma Xiao,Gao Lining,Liu Tengfei,et al.Cache-optimized implementation of long sequences FFT on TS201[J].Journal of Electronics and Information Technology,2013,35(7):17741778(in Chinese)(马潇,高立宁,刘腾飞,等.基于Cache优化的大点数FFT在TS201上的实现[J].电子与信息学报,2013,35(7):17741778)

[17]Xia Jijin,Liang Zhiyong,Cui Liuzheng.Large point FFT and IFFT design based on multicore parallel processing[J].Fire Control Radar Technology,2016,45(1):6468(in Chinese)(夏际金,梁之勇,崔留争.多核并行的大点数FFT、IFFT设计[J].火控雷达技术,2016,45(1):6468)

[18]Li Wei,Sun Jinping,Wang Jun,et al.Implementation of 32K points ultra high speed FFT processor based on FPGA devices[J].Journal of Beijing University of Aeronautics and Astronautics,2007,33(12):14401443(in Chinese)(李伟,孙进平,王俊,等.一种基于FPGA的超高速32K点FFT处理器[J].北京航空航天大学学报,2007,33(12):14411443)

[19]Yang C H,Yu T H,Markovic D.Power and area minimization of reconfigurable FFT processors:A 3GPPLTE example[J].IEEE Journal of Solid-State Circuits,2012,47(3):757768

[20]Tang S N,Liao C H,Chang T Y.An area-and energyefficient multimode FFT processor for WPAN/WLAN/WMAN systems[J].IEEE Journal of Solid-State Circuit,2012,47(6):14191435

[21]Chen Jiyang,Lei Yuanwu,Peng Yuanxi,et al.Configurable floating-point FFT accelerator on FPGA based multiplerotation CORDIC[J].Chinese Journal of Electronics,2016,25(6):10631070

[22]Yu Dong,Li Li,Han Feng,et al.A high-precision FFT processor supporting 2D FFT algorithm[J].Modern Radar,2016,38(5):1621(in Chinese)(于东,李丽,韩峰,等.一种高精度的大点数二维FFT处理器设计[J].现代雷达,2016,38(5):1621)

[23]Leng Jianhua.Fourier Transform[M].Beijing:Tsinghua University Press,2004(in Chinese)(冷建华.傅里叶变换[M].北京:清华大学出版社,2004)

[24]Wang Runze,Wang Ying,Yang Dongyi.The design of a two-dimension SRAM for parallel computing of large scale FFT[J].Journal of the Graduate School of the Chinese Academy of Sciences,2008,25(1):123128(in Chinese)(王润泽,王颖,杨栋毅.大规模FFT并行计算中二维SRAM的设计[J].中国科学院研究生院学报,2008,25(1):123128)

[25]Gao Qingshi,Liu Zhiyong.A prime memory system scheme based on the Chinese Remainder Theorem[J].Journal of Computer Research and Development,1995,32(5):17(in Chinese)(高庆狮,刘志勇.一个基于孙子定理的素数存储系统方案[J].计算机研究与发展,1995,32(5):1 7)

[26]IEEE Computer Society.IEEE Standard for Floating-Point Arithmetic(IEEE Std 754-2008)[S].Piscataway,NJ:IEEE,2008

[27]Shang Lixia.Logic synthesis and LEC verification of LTE module based on 28nm[D].Xi"an:Xidian University,2017(in Chinese)(尚利霞.基于28nm LTE模块的逻辑综合及等价性验证[D].西安:西安电子科技大学,2017)

[28]Guo Lei,Tang Yuhua,Lei Yuanwu,et al.Transpose-free variable size FFT accelerator based on-chip SRAM[J].IEICE Electronics Express,2014,11(15):1 8

[29]Gao Zhenbin,Wan Hongxing,Chen He,et al.An ultra long point FFT processor for various-size data[J].Telecommunication Engineering,2005,45(4):9296(in Chinese)(高振斌,万红星,陈禾,等.超长可变点数FFT处理器设计与实现[J].电讯技术,2005,45(4):9295)

[30]Zhan Xichun,Cai Feiyang,Wang Wei.FPGA based implementation technologies of multi-channel parallel FFT algorithm[J].Modern Electronics Technique,2015,38(19):3339(in Chinese)(占席春,蔡费杨,王伟.多路并行FFT算法的FPGA实现技术[J].现代电子技术,2015,38(19):33 39)

A High Performance Accelerator Design for Ultra-Long Point Floating-Point FFT

Wang Di,Shi Song,Wu Tiebin,Liu Liang,Tan Hongbing,Hao Ziyu,Guo Feng,and Li Hongliang
(Jiangnan Institute of Computing Technology,Wuxi,Jiangsu 214083)

Abstract Fast Fourier transform(FFT)plays a key role in digital signal processing.With the increasing demand of high performance ultra-long point FFT,digital signal processor(DSP)is becoming more and more difficult to meet the demand,so integrated FFT accelerators have become an important development trend.In order to support ultra-long point FFT,this paper extends the twodimensional decomposition algorithm of FFT to multi-dimensional,and we propose a high performance ultra-long point FFT accelerator architecture which can be integrated into DSP.In this architecture,three-dimensional transposition operation is realized by using collision-free addressing method with prime number memory banks;efficient twiddle factor generation is realized by recursive algorithm;FFT operation circuit is refined by using single precision floating-point fused dot product and fused add-subtract operation.Finally,this paper realizes the single precision floating-point FFT calculation within 4G points.The synthesis result shows that the proposed FFT accelerator can run at a frequency of more than 1GHz and its performance can reach 640Gflop/s,which has been greatly improved in terms of points and performance compared with the existing research.

Key words fast Fourier transform(FFT);multi-dimensional decomposition algorithm;threedimensional transposition operation;twiddle factor generation;accelerator

收稿日期:2021-01-20;

修回日期:2021-04-23

基金项目:“核高基”国家科技重大专项基金项目(2018ZX01028-102)This work was supported by the National Science and Technology Major Projects of Hegaoji(2018ZX01028-102).

通信作者:李宏亮(hongliangli@263.net)

中图法分类号 TP332

Wang Di,born in 1987.PhD candidate,engineer.His main research interest is computer architecture.

,1987年生.博士研究生,工程师.主要研究方向为计算机系统结构.

Shi Song,born in 1990.MSc,engineer.His main research interest is computer architecture.

,1990年生.硕士,工程师.主要研究方向为计算机系统结构.

Wu Tiebin,born in 1987.PhD,engineer.His main research interest is computer architecture.

吴铁彬,1987年生.博士,工程师.主要研究方向为计算机系统结构.

Liu Liang,born in 1988.MSc,engineer.His main research interest is computer architecture.

,1988年生.硕士,工程师.主要研究方向为计算机系统结构.

Tan Hongbing,born in 1993.MSc,engineer.His main research interest is computer architecture.

谭弘兵,1993年生.硕士,工程师.主要研究方向为计算机系统结构.

Hao Ziyu,born in 1978.PhD,senior engineer.His main research interests include high performance computing and algorithms.

郝子宇,1978年生.博士,高级工程师.主要研究方向为高性能计算与算法.

Guo Feng,born in 1977.PhD,senior engineer.His main research interest is computer architecture.

,1977年生.博士,高级工程师.主要研究方向为计算机系统结构.

Li Hongliang,born in 1975.PhD,professor,Ph D supervisor.His main research interest is computer architecture.

李宏亮,1975年生.博士,研究员,博士生导师.主要研究方向为计算机系统结构.