背景技术
快速傅立叶变换(FFT)是数字信号处理(DSP)中最重要的算法之一,可以加速离散傅立叶变换(DFT)并有效地处理离散信号。基于其低计算复杂度的显着优点,FFT已被广泛地用于例如无线通信系统【1】和压缩系统【2】中。我们注意到有应用程序具有以下两个特征:
1.FFT与快速傅立叶逆变换(IFFT)成对出现,比如先进行FFT,然后将获得的结果进行IFFT,或者反过来;
2.两种变换在时间或空间上是分离的,并且先进行的变换受到更宽松的约束。
在这些场景中,FFT和IFFT成对出现,并且一个接一个地执行,这将带来数据依赖性。连续的转换面临不同的约束,即在非对称情况下,这使我们可以重新分配计算成本并使用数据相关性优化硬件电路。例如,在基于正交频分复用(OFDM)的无线通信系统中【1】,执行IFFT的发射机和执行FFT的接收机在空间上是分开的。发射器通常是连接到电源的地面设备,因此可以将系统设计为可承受更高的功耗和更大的面积。另一方面,接收器通常是轻量级的移动设备,这对设计中的功耗和资源消耗施加了严格的约束。我们可以在发送部分执行更多的计算,以简化接收部分的硬件实现。另一个例子是全息视频压缩(HVC)系统【2】。FFT编码和IFFT解码在时间上是分开的,可以容忍编码操作中的时间开销,但是解码操作需要仔细处理。因此,在编码部分执行更多计算以优化解码是可行的。
最近,近似计算(AC)被认为是解决能效问题的良好解决方案。流行的AC技术之一是在数字信号处理或机器学习系统中使用定点算法进行低精度计算。这种技术总是需要浮点到定点的转换,以优化定点字长,以在成本和质量要求之间取得良好的平衡。此过程称为字长优化(WLO),占设计时间的25-50%【3】。解决WLO的方法可分为两类:解析方法和基于模拟的方法。解析方法针对凸性放宽WLO问题,然后应用一些凸优化算法来直接获得最佳解决方案【4】、【5】。尽管可以快速处理WLO,但这些方法需要将精度建模为凸函数,而凸函数通常无法通过分析构建。基于模拟的方法通过使用模拟【6】-【10】的迭代搜索来解决WLO。
为了获得更高的性能,已有针对定点FFT的VLSI实现的广泛的研究【11-13】。值得注意的是,动态范围增长的问题伴随着使用固定位宽表示数据值的定点FFT。最常见的定点硬件设计要么在每个阶段后将位宽增加一位【14】,要么将所有数据向右移一位(以1/2标度缩放)【15】。众所周知的是,当数据通过每个阶段时,数据的平均大小会增加【16】。基于此,增加每个阶段的位宽会造成严重的资源浪费,而在每个阶段将所有数据向右移一位会带来巨大的准确性损失。其他自适应缩放方法(例如,块浮点数【17】)可通过确定每个阶段是否需要缩放来极大地提高准确性并避免不必要的截断。但是,输出信号的质量取决于输入信号的块大小和特性。这还将带来不可忽视的硬件成本,特别是对于流水线FFT架构,因为数据依赖性难以解决,并且数据存储/缓冲区的成本很高。对于基于解析的解决方案,过于保守和运行时间过长是不容忽视的问题。这些方法在设计阶段消耗了大量时间。此外,他们无法充分考虑待处理数据的特性,因此会选择较为保守的位宽。
参考文献:
【1】He,Shousheng,and Mats Torkelson."Designing pipeline FFT processorfor OFDM(de)modulation."1998URSI International Symposium on Signals,Systems,and Electronics.Conference Proceedings(Cat.No.98EX167).IEEE,1998.
【2】Muhamad,Raees Kizhakkumkara,et al."Exact global motioncompensation for holographic video compression."Applied optics 58.34(2019):G204-G217.
【3】M.Clark et al.,"Accelerating fixed-point design for mb-ofdm uwbsystems",CommsDesign,vol.4,January 2005.
【4】S.-C.Chan and K.M.Tsui,"Wordlength optimization of linear time-invariant systems with multiple outputs using geometric programming",IEEETrans.on Circ.and Syst.,vol.54,no.4,pp.845-854,2007.
【5】P.D.Fiore,"Efficient approximate wordlength optimization",IEEETrans.on Computers,vol.57,no.11,pp.1561-1570,2008.
【6】M.-A.Cantin,Y.Savaria,D.Prodanos and P.Lavoie,"An automatic wordlength determination method",IEEE Int.Symp.on Circuits and Systems(ISCAS),vol.5,pp.53-56,2001.
【7】G.A.Constantinides,P.Y.Cheung and W.Luk,"Wordlength optimizationfor linear digital signal processing",IEEE Trans.on CAD of Int.Circ.andSyst.,vol.22,no.10,pp.1432-1442,2003.
【8】K.Han,I.Eo,K.Kim and H.Cho,"Numerical word-length optimization forcdma demodulator",IEEE Int.Symp.on Circuits and Systems(ISCAS),vol.4,pp.290-293,2001.
【9】D.-U.Lee,A.A.Gaffar,R.C.Cheung,O.Mencer,W.Luk andG.A.Constantinides,"Accuracy-guaranteed bit-width optimization",IEEE Trans.onCAD of Integrated Circuits and Systems,vol.25,no.10,pp.1990-2000,2006.
【10】H.-N.Nguyen,D.Ménard and O.Sentieys,"Novel algorithms for word-length optimization",19th European Signal Processing Conf.,pp.1944-1948,2011.
【11】Ganjikunta,Ganesh Kumar,and Subhendu Kumar Sahoo."An area-efficient and low-power 64-point pipeline Fast Fourier Transform for OFDMapplications."Integration 57(2017):125-131.
【12】Mahdavi,Hossein,and Somayeh Timarchi."Area–time–power efficientFFT architectures based on binary-signed-digit CORDIC."IEEE Transactions onCircuits and Systems I:Regular Papers 66.10(2019):3874-3881.
【13】Mohanty,Basant K.,and Pramod Kumar Meher."Area–Delay–EnergyEfficient VLSI Architecture for Scalable In-Place Computation of FFT on RealData."IEEE Transactions on Circuits and Systems I:Regular Papers 66.3(2018):1042-1050.
【14】Chang,Wei-Hsin,and Truong Q.Nguyen."On the fixed-point accuracyanalysis of FFT algorithms."IEEE Transactions on Signal Processing 56.10(2008):4673-4682.
【15】Milder,Peter,et al."Computer generation of hardware for lineardigital signal processing transforms."ACM Transactions on Design Automationof Electronic Systems(TODAES)17.2(2012):1-33.
【16】Koutsoyannis,Robert,et al."Improving fixed-point accuracy of FFTcores in O-OFDM systems."2012IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP).IEEE,2012.
【17】Welch,P."A fixed-point fast Fourier transform error analysis."IEEE Transactions on Audio and Electroacoustics 17.2(1969):151-157.
发明内容
本发明的目的是:提供一种有效的缩放方法,以缓解动态范围增长的问题。
为了达到上述目的,本发明的一个技术方案是提供了一种系统中缩放信息传播方法,所述系统同时包含线性可分解变换过程及该线性可分解变换过程的逆过程,该线性可分解变换过程的逆过程定义为线性可分解变换逆过程;在时间或空间上,线性可分解变换过程与线性可分解变换逆过程是分离的,则线性可分解变换过程或者线性可分解变换逆过程中的任意一个过程能够先进行,则剩余的另外一个过程随后进行;进一步将先进行的线性可分解变换过程或者线性可分解变换逆过程定义为线性可分解变换一,将后进行的可分解变换逆过程或线性可分解变换过程定义为线性可分解变换二,其特征在于,所述缩放信息传播方法用于实现数字信号处理DSP中线性可分解变换的位宽优化和节能的硬件实现,包括以下步骤:
在系统设计阶段:
将线性可分解变换二中每个阶段的操作取反作为线性可分解变换一的相应阶段的操作;
为线性可分解变换二的每个阶段设计比特位宽;
在线性可分解变换一中插入缩放信息收集模块和缩放决策模块,在线性可分解变换二中插入多路复用器。
在系统运行阶段:
线性可分解变换一运行时,通过缩放信息收集模块收集并计算线性可分解变换二每个阶段可能所需的位宽和饱和成本;缩放决策模块基于每个阶段的所需的位宽和饱和成本判断是否需要缩放,以获得最佳缩放策略,包括以下步骤:
若当前阶段所需的位宽小于预先设计的比特位宽,则缩放决策模块判断当前阶段不需要进行缩放;若当前阶段所需的位宽大于预先设计的比特位宽,则进一步判断饱和成本是否大于定值超参数n,约定量化误差为一个定值超参数n,若饱和成本小于定值超参数n,则缩放决策模块判断当前阶段不需要进行缩放,若饱和成本大于定值超参数n,则缩放决策模块判断当前阶段需要进行缩放;
线性可分解变换二运行时,在每个阶段,由多路复用器执行缩放决策模块输出的缩放决策。
优选地,在系统设计阶段,为线性可分解变换二的每个阶段设计比特位宽时,所选择的比特位宽在保证饱和误差为小于n的前提下尽可能最小。
优选地,所述缩放决策模块将缩放决策表达成一串位宽与阶段数相同的比特序列,设线性可分解变换一以及线性可分解变换二共有M个阶段,则比特序列的长度为M,比特序列中的第m位元素的值为0或者1,代表不需要缩放或需要缩放,m=1,2,......,M。
优选地,由多个输入数据序列组成一个数据块,整个数据块共享相同的缩放决策,通过调整数据块大小,能够获得更密集和更优化的比例尺决策,或者能够获得稀疏和更保守的比例尺决策。
优选地,所述线性可分解变换一与所述线性可分解变换二相邻,或者在所述线性可分解变换一与所述线性可分解变换二之间插入其他对称的数据处理组件。
本发明的另一个技术方案是提供了一种上述的系统中缩放信息传播方法在定点FFT的VLSI实现中的应用,其特征在于,所述线性可分解变换过程为快速傅立叶变换,所述线性可分解变换逆过程为快速傅立叶逆变换,则所述线性可分解变换一为先进行的快速傅立叶变换或快速傅立叶逆变换,所述线性可分解变换二为后进行的快速傅立叶逆变换或快速傅立叶变换;
所述为线性可分解变换二的每个阶段设计比特位宽时,该比特位宽为VLSI设计中预计的比特位宽;
所述线性可分解变换二运行时,在每个阶段,在线性可分解变换二的VLSI架构上,由多路复用器执行缩放决策模块输出的缩放决策,从而使得缩放决策模块输出的缩放决策服务于所述线性可分解变换二的定点VLSI实现。
若关注的系统同时包含包括FFT和IFFT在内的任何一对线性变换,目前流行的缩放方法仅关注当前的FFT或IFFT,以减轻动态范围增长的问题,这带来了更多的决策负担。例如,块浮点将收集缩放信息和制定和使用缩放决策放在同一个转换中,这带来了更多的资源开销。FFT和IFFT互为逆变换的事实促使我们探索在先前的转换中采用缩放策略并在后续的转换中执行的可能性。本发明描述了一个缩放框架,该框架在先前的转换中获取缩放决策并在后续的转换中执行它们。值得注意的是,在本发明提出的缩放框架下,任何缩放策略都可以无缝集成,例如确保丢失的位数不超过m,或者确保在当前阶段全部的饱和误差不超过n。本发明提供的框架分离了提取缩放信息并做出缩放决策,从而带来了更多的设计空间来探索缩放策略。
本发明可以节省例如FFT之类的线性可分解变换操作和缓冲区所消耗的大量能量和面积,而在额外的缩放因子实现中仅增加可忽略的面积。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
动态范围增长的问题伴随着使用固定位宽表示数据值的定点FFT。由定点FFT操作的每个阶段的动态范围增长引起的信息丢失问题源于以下两个主要误差源。
量化误差:由包含输入数据和旋转因子的定点数精度不足引起的误差称为量化误差。此外,在计算期间由右移操作引起的精度损失也称为量化误差。在给定的位宽下,很难减少由输入数据的位宽限制和旋转因子引起的误差,但是可以通过仅在需要的时候进行右移来优化由右移操作引起的误差。
饱和误差:在FFT中,加、减和乘法运算不可避免地需要使用更多位宽来储存结果,以确保不损失精度。这些操作需要截断(或饱和)获得的数据,以将资源消耗限制在可控制的范围内,这会导致溢出。换句话说,如果保存的数据超出了给定位宽可以表示的范围,则会发生溢出。溢出的解决方案可以分别分为截断和饱和。前者丢弃最高位并造成毁灭性后果,而后者舍入为特定值并造成有限的损失。在本发明中,由于截断的灾难性后果是不可接受的,因此我们仅使用饱和运算。因此,我们把由溢出引起的误差称为饱和误差。
当前大多数流行的缩放方法都试图通过右移操作来避免任何溢出。值得注意的是,向右移动可消除上溢,但不可避免地会丢失最后一位,从而导致更多的量化误差。因此,在这项工作中,本发明提出了特定的算法来提取缩放信息并为SIP做出缩放决策,从而可以平衡饱和误差和量化误差。在这里,本发明使用饱和和移位操作来处理可能的溢出问题。饱和操作会用当前使用的位宽表示的最大值替换原始值,这将导致饱和误差。右移操作丢失了最后一位,将导致量化错误。本发明在线性可分解变换过程的每个阶段都进行缩放决策,以确定哪些溢出是可以容忍的(饱和操作),以及哪些溢出需要避免(右移操作)。
本发明所关注的系统同时包含线性可分解变换过程及该线性可分解变换过程的逆过程,该线性可分解变换过程的逆过程定义为线性可分解变换逆过程。在时间或空间上,线性可分解变换过程与线性可分解变换逆过程是分离的。线性可分解变换过程或者线性可分解变换逆过程中的任意一个过程可以先进行,则剩余的另外一个过程随后进行。本发明中,进一步将先进行的线性可分解变换过程或者线性可分解变换逆过程定义为线性可分解变换一,将后进行的线性可分解变换逆过程或线性可分解变换过程定义为线性可分解变换二。
基于上述定义,本发明公开了一种系统中缩放信息传播方法,该方法用于实现数字信号处理(DSP)中线性可分解变换的位宽优化和节能的硬件实现,包括以下步骤:
在系统设计阶段:
将线性可分解变换二中每个阶段的操作取反来作为线性可分解变换一的每个阶段的操作。因为线性可分解变换一与线性可分解变换二是线性的,通过该步骤允许我们从线性可分解变换一操作中直接观察线性可分解变换二每个阶段的全部数据,并从中收集缩放信息,根据相应阶段策略制定缩放决策,以服务于线性可分解变换二。
为线性可分解变换二的每个阶段设计比特位宽,所选择的比特位宽在可以保证饱和误差为小于n的前提下尽可能最小,其中,约定量化误差为一个定值超参数n。本实施例中,为每一个阶段选择一个比特位宽(用以存储运算结果)。
在线性可分解变换一中插入缩放信息收集模块和缩放决策模块,在线性可分解变换二中插入多路复用器。
在系统运行阶段:
线性可分解变换一运行时,通过缩放信息收集模块收集并计算线性可分解变换二每个阶段可能所需的位宽和饱和成本。缩放决策模块基于每个阶段的所需的位宽和饱和成本判断是否需要缩放,以获得最佳缩放策略,包括以下步骤:
若当前阶段所需的位宽小于预先设计的比特位宽,则缩放决策模块判断当前阶段不需要进行缩放。若当前阶段所需的位宽大于预先设计的比特位宽,则进一步判断饱和成本是否大于定值超参数n,若饱和成本小于定值超参数n,则缩放决策模块判断当前阶段不需要进行缩放,若饱和成本大于定值超参数n,则缩放决策模块判断当前阶段需要进行缩放。
缩放决策模块将缩放决策表达成一串位宽与阶段数相同的比特序列,假设线性可分解变换一以及线性可分解变换二共有M个阶段,则比特序列的长度为M,比特序列中的第m位元素的值为0或者1,若为1,则代表需要缩放(右移操作),若为0,则代表不需要缩放(饱和操作),m=1,2,......,M。这串比特序列将随数据本身进行存储或传输,用以指导线性可分解变换二的运算。
线性可分解变换二运行时,在每个阶段,由多路复用器执行缩放决策模块输出的缩放决策。
可分解变换过程与可分解变换逆过程可以是包括FFT和IFFT在内的任何线性变换。在本发明中,我们根据变换与逆变换之间的线性关系,从前一变换中提取缩放信息,传递给后续变换使用,从而实现计算复杂度的转移。需要注意的是,两个连续的变换不需要相邻,只要插入的组件是对称的,就可以在两个转换之间插入其他额外的数据处理组件。将扩展信息整合到后续改造中,从而实现比最新解决方案更高的资源和能源效率。
以下以将上述系统中缩放信息传播方法应用在定点FFT的VLSI实现为例对本发明做进一步说明:
如果首先进行FFT,然后进行IFFT。通过本发明提供的方法可以通过将IFFT过程中每个阶段的操作取反来作为FFT每个阶段的操作,这允许我们从先前的FFT操作中直接观察IFFT每个阶段的全部数据,并从中收集缩放信息,根据相应阶段策略制定缩放决策,以服务于后续IFFT过程的定点VLSI实现。在运行阶段,在后续线性可分解变换过程的VLSI架构上,由多路复用器执行最优缩放策略。
因为量化误差取决于每项数据比特序列的最低一位,而这极易被噪声淹没,因此本发明不在FFT中估计量化误差,而仅估计饱和误差。在IFFT中,本发明为每一个阶段选择一个比特位宽(用以存储运算结果),所选择的位宽在可以保证饱和误差为小于n的前提下尽可能最小。随后本发明计算相邻阶段所需比特位宽,如果所需比特位宽的增长快于VLSI设计中预计的比特位宽增长,则在尽量靠后的阶段运算结束后进行一次缩放。这项缩放决策可以被表达成一串位宽与阶段数相同的比特序列,在该比特序列中,0代表不需要缩放,1代表需要缩放。这串比特序列将随数据本身进行存储或传输,用以指导后续IFFT运算。
另外我们提出的方法可以基于一个数据块,该数据块由数个需要变换的比特序列组成,整个数据块共享相同的缩放决策。通过调整数据块大小,可以获得更密集和更优化的比例尺决策,或者获得稀疏和更保守的比例尺决策。例如,在额外的比特存储或传输更昂贵的情况下,增加数据块大小会降低所需的额外数据传输量,并获得稍次的结果。
图1是整个系统的流程示意图。FFT和IFFT对称分布在编码/发送和解码/接收部分。在临界线性变换之前或之后可以有其他对称的处理分量。缩放信息在编码/发送阶段被提取和处理。缩放决策与数据本身一起存储或传输,并在解码/接收阶段使用。
图2是更详细的示意图。假设我们先进行FFT,再进行IFFT,先选择IFFT架构,如图2所示。然后我们根据选择的IFFT硬件架构得到对应的FFT架构。在运行过程中,我们收集缩放信息并在FFT需要缩放的位置做出缩放决策,然后将其应用到IFFT的相应位置。从图2中可以看出数据流向。
使用System Verilog描述了FFT/IFFT运算核,并通过Design Compiler在55nm标准库下进行了编译和测试。除了用于ASIC设计,本发明同样适用于基于FPGA的FFT/IFFT硬件实现。
图3将不同缩放方法的信噪比与位宽的变化进行了比较。线条requirment的需求是EGMC系统的最低SNR要求,以确保可接受的质量。双精度线double指示使用双精度进行运算的精度上限。从图中可以看出,为了达到20dB的SNR,本发明提出的方法需要7位,而Force和Directive方法则需要10位和16位。
图4显示了在不同缩放方法下,位宽与最终BER之间的关系。双精度线double表示使用双精度的比较的错误,这表明在选定的参数配置和通道条件下,BER可以低至0。随着使用的位宽逐渐增加,其他缩放方法可以达到双精度的参考误差结果。当Directive需要11位而Force需要13位时,本发明提出的SIP方法首先在10位实现可以认为是0的BER。可以看出,在给定的BER要求下,本发明提出的方法可以实现最低的位宽。