CN102652315B - 信息处理设备及其控制方法 - Google Patents
信息处理设备及其控制方法 Download PDFInfo
- Publication number
- CN102652315B CN102652315B CN200980162964.3A CN200980162964A CN102652315B CN 102652315 B CN102652315 B CN 102652315B CN 200980162964 A CN200980162964 A CN 200980162964A CN 102652315 B CN102652315 B CN 102652315B
- Authority
- CN
- China
- Prior art keywords
- data elements
- data
- address
- storage
- fft
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 46
- 230000015654 memory Effects 0.000 claims abstract description 90
- 239000013598 vector Substances 0.000 claims description 89
- 230000010365 information processing Effects 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 abstract description 14
- 238000013480 data collection Methods 0.000 abstract 1
- 239000000872 buffer Substances 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000003775 Density Functional Theory Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010977 unit operation Methods 0.000 description 2
- 101100391172 Dictyostelium discoideum forA gene Proteins 0.000 description 1
- 241000255777 Lepidoptera Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供用于通过小的存储器实现高速快速傅立叶变换(FFT)算法的技术。用于对数据序列执行基2FFT的信息处理设备包括存储部件、读取部件、多个蝶式运算部件、写入部件及控制部件,其中,FFT运算的每一级包括多个运算步骤,并且在每个运算步骤,控制部件控制每个部件,使得:读取部件从存储部件读取存储地址A、A+1、A+2m和A+2m+1指引的数据元素集,多个蝶式运算部件对集中的数据元素执行基2蝶式运算,以及写入部件将结果数据集写入存储地址A、A+1、A+2m和A+2m+1指引的存储区域。
Description
技术领域
本发明涉及信息处理设备及其控制方法、程序和计算机可读存储媒体,并且具体涉及但不限于使用小容量存储器来提供快速傅立叶变换。
背景技术
快速傅立叶变换(FFT)是计算离散傅立叶变换(DFT)及其逆的有效算法。假设 是N个复数。DFT由公式定义,其中,。直接对此定义求值要求O(N 2)个运算:有N个输出X(k),并且每个输出要求N项之和。FFT是用O(NlogN)个运算来计算相同结果的任何方法。
(库利-图基算法)
库利-图基(Cooley-Tukey)算法是最常用的FFT算法。它递归地根据大小N 1和N 2的更小DFT来重新表达任意复合大小N=N 1 N 2的DFT以便为高复合N(平滑数)将计算时间减少到O(NlogN)。
基2时间抽取(DIT) FFT是库利-图基算法的最简单和最常用形式。基2 DIT通过每个递归级将大小为N的DFT分割成大小为N/2的两个交织DFT(因此名称为“基2”)。基2 DIT首先计算偶数索引数和奇数索引数的傅立叶变换,然后组合那两个结果以产生整个序列的傅立叶变换。
更明确地说,让我们将偶数索引数x(2m)的DFT标记为X E (k),并且将奇数索引数x(2m+1)的DFT标记为X O (k),则得出:
其中,。因此,用于原始数据序列x(i)的DFT X(k)表示为:
。
基2 DIT DFT通过递归地应用上述过程到每个X E (k)和X O (k)而得以实现。
图1示出基2 DIT-FFT的信号流程图(N=16)。如图1中所示,DIT-FFT包括比特反转运算(bit-reverse operation)和多个蝶式运算(butterfly operation)。
比特反转运算是置换输入数据序列的运算。在置换期间,输入数据序列被分割成偶数索引数据序列和奇数索引数据序列,并且随后奇数索引数据序列级联到偶数索引数据序列。即,在此级联后,生成级联的数据序列。接着,为级联数据序列的第一半和第二半递归运行类似的运算。此处所述置换对应于将输入数据序列重新排序,使得其索引由二进制表示中的表示的数据序列被置换到的位置。为此,此置换称为“比特反转”运算。图2示出比特反转运算的示例(N=128)。例如,在图1中,诸如 、 、等每对输入数据序列在比特反转运算中相互置换。
图3示出基2 DIT FFT的蝶式运算。在图3的蝶式运算中,根据以下公式,通过预确定系数W,使用输入数据A和B计算输出数据P和Q:
P = A + WB
Q = A - WB
其中,W的定义已经在上面描述。如图1中所示,给定FFT包括多个上述蝶式运算。例如,在图1中的0级运算中,得出:
,,
,,
,,
,,
,,
,,
,,以及
,。
如本领域技术人员所熟知的一样,可以用许多其它形式来实现FFT。例如,可通过在频率中抽取样本数据序列而不是在时间中抽取它们来实现基2 FFT。图4示出基2频率抽取(DIF) FFT的信号流程图(N=16)。如图4中所示,DIF FFT也包括比特反转运算和多个蝶式运算,而DIF-FFT的蝶式运算由图5示出。
能够通过相对于资源的顺序线性的并行化因子轻松地并行化蝶式运算。但通过标准实现难以并行化比特反转运算。
图4中的比特反转运算可如图6中一样重新安置。在此情况下,用于蝶式运算的系数将混排成如图7中一样的比特反转格式。此方法经常在DSP(数字信号处理器)软件中使用,这是因为能够轻松地从阵列中取得系数而不跳过不必要的元素。用于n级的系数表示为用于n-1级的第一半系数。
可将比特反转运算分割成多个比特交换操作,并且在蝶式运算之间运行比特交换运算。图8示出每级两个索引比特的交换(N=128)。图9示出实现比特交换运算的基2 DIF-FFT的信号流程图(N=16)。在图9中,在运行0级的蝶式运算前,置换输入数据序列,使得交换索引比特的MSB(最高有效比特)和LSB(最低有效比特)。在运行0级的蝶式运算后,进一步置换数据序列,使得交换索引比特的第二MLB和第二MSB,并将其输入1级的蝶式运算中。例如,在图9中,在0级的蝶式运算前,在比特交换运算中将诸如 等每对输入数据序列相互置换。类似地,在1级的蝶式运算前,在比特交换运算中将诸如 和 等每对数据序列相互置换。
基2蝶式运算在一个级中执行次。为log2N个级重复此处理。因此,除比特反转运算外,库利-图基算法还要求个蝶式运算以完成DFT。
(斯托克汉姆算法)
图10示出根据斯托克汉姆(Stockham)自动排序算法的阵列解释(array interpretation)(参阅1991年工业与应用数学学会(Society for Industrial and Applied Mathematics)的查尔斯·范·罗恩(Charles Van Loan)所著“Computational Frameworks for the Fast Fourier Transform”)。在斯托克汉姆算法中,每个数据序列与二维阵列的每个元素相关联,其中,,,以及。
使用基2蝶式运算来计算,如下:
,
,并且
,
其中,
则获得DFT结果:
,。
基2蝶式运算在一个级中执行次,并且为log2N个级重复此处理。因此,斯托克汉姆算法要求个蝶式运算以完成DFT 。在蝶式运算期间隐含执行比特反转运算,并且因此不要求用于比特反转运算的额外计算时间。
图11以示意图方式示出为N=16个点(即,p=4)FFT应用的数据处理的示例。如本领域技术人员所熟知的一样,斯托克汉姆算法也表示比特反转运算和蝶式运算的组合。图12示出如何为每个级执行比特反转。从存储器取得两行,并且为每个元素执行蝶式运算。接着,在将两个流复用为一行后,将结果存储到存储器。
(基n算法)
库利-图基算法能够应用到基n DIT-FFT。对于基2 FFT,库利-图基算法计算用于偶数索引数x(2m)和奇数索引数x(2m+1)的DFT。该算法改为为基n FFT计算数x(nm)、x(nm+1)、...和x(nm+(n-1))的DFT。
对于基n DIT-FFT,执行数位反转(digit-reverse)处理以置换用基n数的输入数据序列。数位反转被定义为二进制(基数2)比特反转到通用基数的扩展。
在数位反转运算中,置换输入数据序列使得以与在比特反转中相同的方式交换索引数位的MSD(最高有效数位)和LSD(最低有效数位)。
(混合基算法)
对于每个级,可改变基。可使用混合基数来执行用于混合基的数位反转。混合基数意味着基数对于每个数位不同。
例如,下文将说明带有混合基2、3和5的30点DIF-FFT。
30点DFT定义如下:
,其中。
此处,我们定义为:
假设和,则得出:
相应地,得出:
图13A和13B示出上述运算的信号流程图。如图13A和13B中所示,DIT-FFT包括数位反转运算和多个蝶式运算。在这些图中,我们将用于输入数据的索引的混合基数标记为l 2 m 3 n 5,并且将数位反转后的索引表示为n 5 m 3 l 2,其中,此处在每个数位的下标中标记基数,即,l是基5(五进制)数,m是基3(三进制)数,以及n是基2(二进制)数。
对于诸如LTE(长期演进)、LTE高级、WiMAX、无线HD(WirelessHD)等利用OFDM(正交频分复用)的高速无线通信,对于FFT所要求的处理速度在逐年增大。然而,在基带芯片上时钟频率的改进已慢于要求的处理速度。因此,要求通过并行化改进FFT速度。
在标准FFT算法中,并行化比特反转运算是困难(或成本高)的。通常,逐元素执行比特反转运算,并且这在FFT中造成瓶颈。
在斯托克汉姆自动排序算法中,由于算法混排所有数据,因此,输入和输出缓冲器不能共享。这导致计算所要求的存储器大小加倍。例如,在通过32比特复值计算2048点FFT时,标准算法要求8 KB的存储器,而斯托克汉姆自动排序算法要求16 KB的存储器。要求的存储器大小随着高速通信的部署而增大。
发明内容
相应地,本发明提供用于通过小的存储器来实现高速快速傅立叶变换算法的技术。
根据本发明的一方面,一种用于对数据序列执行基2快速傅立叶变换(FFT)的信息处理设备包括:
存储部件,用于包括多个存储区域,其中每个存储要处理的多个数据元素并被指派存储地址;
读取部件,用于从存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
多个蝶式运算部件,用于对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从存储部件读取的多个集中;
写入部件,用于将包括多个结果数据的集写入存储部件中;以及
控制部件,用于在FFT运算的每一级控制每个部件以对存储媒体中存储的所有数据元素执行蝶式运算,
其中,FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,控制部件控制每个部件,使得:
读取部件从存储部件读取第一存储地址A指引的数据元素的第一集、第二存储地址A+1指引的数据元素的第二集、第三存储地址A+2 m 指引的数据元素的第三集及第四存储地址A+2 m +1指引的数据元素的第四集,
多个蝶式运算部件对第一集中包括的数据元素和第三集中包括的数据元素执行基2蝶式运算,以计算结果数据的第一和第三集,并且对第二集中包括的数据元素和第四集中包括的数据元素执行基2蝶式运算,以计算结果数据的第二和第四集,以及
写入部件将结果数据的第一集写入第一存储地址A指引的存储区域,将结果数据的第二和第三集之一写入第二存储地址A+1指引的存储区域,以及将结果数据的第二和第三集中的另一集写入第三存储地址A+2 m 指引的存储区域,以及将结果数据的第四集写入第四存储地址A+2 m +1指引的存储区域,
其中,A是为每个运算步骤确定的零或正整数,以及m是为每个级确定的正整数。
根据本发明的另一方面,一种用于对数据序列执行基2快速傅立叶变换(FFT)的信息处理设备包括:
存储部件,用于包括多个存储区域,其中每个存储要处理的多个数据元素并被指派存储地址;
读取部件,用于从存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
多个蝶式运算部件,用于对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从存储部件读取的多个集中;
写入部件,用于将包括多个结果数据的集写入存储部件中;以及
控制部件,用于在FFT运算的每一级控制每个部件以对存储媒体中存储的所有数据元素执行蝶式运算,
其中,FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,控制部件控制每个部件,使得:
读取部件从存储部件读取第一存储地址A指引的数据元素的第一集、第二存储地址A+1指引的数据元素的第二集、第三存储地址A+2 m 指引的数据元素的第三集及第四存储地址A+2 m +1指引的数据元素的第四集,
多个蝶式运算部件对第一集中包括的数据元素和第三集中包括的数据元素执行基2蝶式运算,以计算结果数据的第一和第三集,并且对第二集中包括的数据元素和第四集中包括的数据元素执行基2蝶式运算,以计算结果数据的第二和第四集,以及
写入部件将结果数据的第一集写入第一存储地址A指引的存储区域,将结果数据的第二和第三集之一写入第二存储地址A+1指引的存储区域,以及将结果数据的第二和第三集中的另一集写入第三存储地址A+2 m 指引的存储区域,以及将结果数据的第四集写入第四存储地址A+2 m +1指引的存储区域,
其中,A是为每个运算步骤确定的零或正整数,以及m是为每个级确定的正整数。
根据本发明的又一方面,一种用于对数据序列执行基2快速傅立叶变换(FFT)的信息处理设备的控制方法,其中信息处理设备包括用于包括多个存储区域的存储部件,每个存储区域存储要处理的多个数据元素并被指派存储地址,该控制方法包括以下步骤:
在读取部件,从存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
在执行部件,对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从存储部件读取的多个集中;
在写入部件,将包括多个结果数据的集写入存储部件中;以及
在控制部件,在FFT运算的每一级控制所述信息处理设备的每个部件以对存储媒体中存储的所有数据元素执行蝶式运算,
其中,FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,控制每个部件使得:
读取部件从存储部件读取第一存储地址A指引的数据元素的第一集、第二存储地址A+1指引的数据元素的第二集、第三存储地址A+2 m 指引的数据元素的第三集及第四存储地址A+2 m +1指引的数据元素的第四集,
蝶式运算部件对第一集中包括的数据元素和第三集中包括的数据元素执行基2蝶式运算,以计算结果数据的第一和第三集,并且对第二集中包括的数据元素和第四集中包括的数据元素执行基2蝶式运算,以计算结果数据的第二和第四集,以及
写入部件将结果数据的第一集写入第一存储地址A指引的存储区域,将结果数据的第二和第三集之一写入第二存储地址A+1指引的存储区域,以及将结果数据的第二和第三集中的另一集写入第三存储地址A+2 m 指引的存储区域,以及将结果数据的第四集写入第四存储地址A+2 m +1指引的存储区域,
其中,A是为每个运算步骤确定的零或正整数,以及m是为每个级确定的正整数。
参照附图,根据示范实施例的下面描述,本发明的另外特征将变得明显。
附图说明
图1示出基2时间抽取快速傅立叶变换的信号流程图。
图2示出比特反转运算的示例。
图3示出用于基2时间抽取快速傅立叶变换的蝶式运算。
图4示出基2频率抽取快速傅立叶变换的信号流程图。
图5示出用于基2频率抽取快速傅立叶变换的蝶式运算。
图6示出基2频率抽取快速傅立叶变换的另一信号流程图。
图7示出用于蝶式运算的系数的示例。
图8示出在每一级的两个索引比特的交换运算的示例。
图9示出实现比特交换运算的基2时间抽取快速傅立叶变换的信号流程图。
图10示出根据斯托克汉姆自动排序算法的阵列解释。
图11示出根据斯托克汉姆自动排序算法的数据处理的示例。
图12示出根据斯托克汉姆自动排序算法的比特反转运算的示例。
图13A和图13B示出混合基快速傅立叶变换的信号流程图。
图14示出快速傅立叶变换设备的示范硬件配置。
图15示出根据本发明的一实施例的比特交换处理的算法。
图16示出根据本发明的一实施例的交换运算的示例。
图17示出根据本发明的一实施例的交换运算的示例。
图18示出根据本发明的一实施例的交换运算的示例。
图19示出根据本发明的一实施例的交换运算的示例。
图20示出根据本发明的一实施例的交换运算的示例。
图21示出使用计数器比特的用于存储器的读取/写入端口的地址生成的示例。
图22示出比特交换地址生成器的示例。
图23示出用于0级的蝶式运算的系数的示例。
图24示出通道交换模式的示例。
图25示出用于通道交换电路的数据流的示例。
图26示出根据本发明的一实施例的交换运算的示例。
图27以示意图方式示出在存储器读取操作后运行的存储器写入操作。
图28示出根据本发明的一实施例的在快速傅立叶变换设备中执行的快速傅立叶变换运算的流程图。
图29示出快速傅立叶变换设备的另一示范硬件配置。
图30示出带有单端口RAM的存储器访问方案。
图31示出带有单端口RAM的存储器访问方案。
图32示出根据本发明的一实施例的交换运算的示例。
图33示出快速傅立叶变换设备的另一示范硬件配置。
图34示出根据本发明的一实施例的交换运算的示例。
图35示出根据本发明的一实施例的交换运算的示例。
图36示出根据本发明的一实施例的交换运算的示例。
图37描绘用于带有混合基的快速傅立叶变换的向量存储器访问。
图38示出根据本发明的一实施例的交换运算的示例。
图39描绘用于0级的比特交换和通道交换。
图40描绘用于1级的比特交换和通道交换。
图41描绘虚拟RAM地址和真实RAM地址的关系。
具体实施方式
现在将参照附图描述本发明的实施例。下述每个实施例将有助于理解从通用到更特定的各种各样的概念。应注意的是,本发明的技术范围由权利要求书定义,并且不限于下述每个实施例。另外,在实施例中所述特征的所有组合并非始终对本发明是必不可少的。
<第一实施例>
(快速傅立叶变换设备)
图14示出根据本发明的第一实施例的快速傅立叶变换(FFT)设备(信息处理设备)100的示范硬件配置。在此实施例中,FFT设备执行基2时间抽取(DIT) FFT。在图14中,FFT设备100包括控制器110、带有两个读取寄存器122和两个写入寄存器124的RAM(随机存取存储器)120、蝶式运算单元130及通道交换(lane swap)单元140。
控制器110控制FFT设备100的整体操作。控制器110可包括CPU(中央处理单元)。在每个级中,控制器110确定用于从RAM 120读取要处理的数据元素(数据序列)的数据地址。如后面将详细描述的一样,通过数据地址的“比特交换”处理来进行数据地址的确定,这是本发明的特性。控制器110随后控制蝶式运算单元130以运行用于从RAM 120读取的数据的蝶式运算。根据控制器110的控制,从蝶式运算单元130输出的数据元素在通道交换单元140中交换,并且写入RAM 120中。
RAM 120是用于保留要处理的数据元素和在FFT处理中的中间值的工作存储器。在此实施例中,RAM 120存储用于每个RAM地址的128比特数据(RAM地址的长度是5比特,即,RAM 120的大小是512字节)。每个128比特数据项包含四个32比特复值x(i),每个复值是要处理的数据元素。即,一个RAM地址指向要处理的四个数据元素。四个数据元素的集称为“向量”,并且通过“向量地址”标识向量中的每个数据元素。如后面将描述的一样,RAM地址和向量地址级联成“数据地址”,这要通过比特交换运算来执行。RAM 120包括分别保留包含四个数据元素的128比特读取数据的两个读取寄存器122和分别将128比特写入数据保留到RAM 120中的两个写入寄存器124,已为128比特写入数据运行蝶式运算和通道交换运算。
蝶式运算单元140包括复数乘法器单元132、复数累加器单元134和只读存储器(ROM) 136。ROM 136存储系数,N=64,k=0、1、...、63。通道交换单元140包括两个交换单元142和144。蝶式运算和交换运算的细节将在后面描述。
根据此实施例的FFT设备100分别应用不同的比特交换运算到用于RAM地址比特和向量地址比特二者的向量内操纵和仅用于向量地址比特的向量间操纵。对于向量间操纵,FFT设备100使用类似于斯托克汉姆自动排序算法的方法,并且与图12中类似地执行部分地址比特的左移位。在0级中,地址比特b 1和b 0如图19中一样左移位,这对应于通过交替和复用来自两个向量的每个元素而使向量地址加倍。在1级中,仅地址比特b 0如图19中一样左移位,这对应于交替和复用来自两个向量的每两个元素。
作为在此实施例中的基本运算,FFT设备100从RAM 120最多取得两个向量,每个向量包括要处理的四个数据元素,并随后执行蝶式运算和复用。随后,FFT设备100生成两个向量,每个向量包括四个数据元素,并且将它们存储到RAM 120。FFT设备100通过调换要处理的两个向量的地址来执行比特交换。根据此运算,FFT设备100不象斯托克汉姆自动排序算法一样要求双倍缓冲。
(比特交换处理)
如上所述,为由RAM地址和向量地址(在向量中的数据地址)的数据地址执行比特交换运算。
首先,我们定义符号和假设:
- 我们定义R为数据地址中地址比特的总数量,v为在向量地址中比特的数量,以及R-v为在RAM地址中比特的数量。用基2来执行FFT时,比特交换运算的级的数量也是R。
- 级联运算符
我们将我们的比特级联运算符定义为。
- 我们将存储器中的向量数据(多个数据元素的集)称为MEM[p],其中,p是RAM地址。
- 我们将MEM[P]中的复数据元素称为MEM[p][q],其中,q是向量地址。
- 我们也将存储器中的复数据元素称为D[u],其中,u是数据地址。即,,并且。
- 蝶式比特
在为执行在存储器数据与之间的蝶式运算时,b i 称为蝶式比特。
- 对比特i的蝶式运算
在为执行在存储器数据与之间的蝶式运算时,我们说执行对比特i的蝶式运算。
- 我们假设比特i的原始位置是b i ,并且在比特交换处理后,d i 将放置在比特i中。因此,得出。
- 我们将FFT设备100中的计数器值称为,其在每个级周期递增。
图15示出根据此实施例的比特交换处理的算法,并且图16-18以示意图方式示出根据此实施例的比特交换处理。在此实施例中,FFT设备100利用用于向量内和向量间操纵的不同方法。对于向量内操纵,FFT设备100使用诸如斯托克汉姆自动排序算法等方法,并且如图16中一样执行部分地址比特一个位置的左移。此地址移位对应于将地址的值加倍,这对应于复用两个元素。
部分地址的移位促使:
1)地址比特由于移位而清空(在图16中由161标记)。在此情况下,蝶式比特应移到此空位置。
2)地址比特由于移位而被推开(在图16中由162标记)。
在图17中,可从如173标记的以前地址比特搜索要移到171标记的比特位置的蝶式比特。比特173的移动形成空比特174。因此,可能将额外的比特172移到174以填充空比特。类似地,在图18中,可从如182标记的以前地址比特搜索要移到181标记的比特位置的蝶式比特。在此情况下,比特182的移动形成空比特183。因此,可能移动比特184以填充空比特。
对于在向量地址中包括的地址比特,即,对于,基本比特交换处理如下。我们将在运行比特交换过程前蝶式比特的比特位置称为f,并且在运行比特交换过程后的比特位置称为s。FFT设备100为所有执行以下操作1)到6)。此处,应注意的是,此公式的左侧不包括比特。
1) FFT设备100从RAM 120读取两个向量,其中,每个向量由l=0、1、2、3的四个复元素组成,如下:
2) FFT设备100为在A[l]与B[l]之间的所有元素(l=0、1、2、3)运行蝶式运算,并且获得如P[l]和Q[l]的结果。
3) FFT设备100从RAM 120读取两个向量,并且每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
4) FFT设备100将在2)中获得的两个结果向量写入到RAM 120,其中,每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
5) FFT设备100为在A[l]与B[l]之间的所有元素(l=0、1、2、3)运行蝶式运算,并获得如P[l]和Q[l]的结果。
6) FFT设备100将在5)中获得的两个结果向量写入到RAM 120,并且每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
流程图28中的步骤S153到S155被包括在运算1)到6)中以阐明延迟写入。即,用于步骤2n的存储器写入操作必须在用于步骤2n+1的存储器读取操作之后,其中,n=0、1、2、...、7。
对于,不必移位部分地址。如果移动蝶式比特(即,f>s)是必要的,则如下表示基本比特交换处理。FFT设备100为所有执行以下操作1)到6)。此处,应注意的是,此公式的左侧不包括比特。
1) FFT设备100从RAM 120读取两个向量,其中,每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
2) FFT设备100为在A[l]与B[l]之间的所有元素(l=0、1、2、3)运行蝶式运算,并获得如P[l]和Q[l]的结果。
3) FFT设备100从RAM 120读取两个向量,并且每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
4) FFT设备100将在2)中获得的两个结果向量写入到RAM 120,并且每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
5) FFT设备100为在A[l]与B[l]之间的所有元素(l=0、1、2、3)运行蝶式运算,并获得如P[l]和Q[l]的结果。
6) FFT设备100将在5)中获得的两个结果向量写入到RAM 120,并且每个向量由四个复元素组成,如下:
,其中,l= 0、1、2、3。
如用于的情况一样,流程图28中的步骤S153到S155被包括在操作1)到6)中。
对于,如果不必移动蝶式比特(即,在f=s并且蝶式比特已经在目标位置时),则基本比特交换处理表示如下。FFT设备100为所有执行以下操作1)到3)。此处,应注意的是,此公式的左侧不包括比特。
1) FFT设备100从RAM 120读取如下两个向量:
,其中,l= 0、1、2、3。
2) FFT设备100为在A[l]与B[l]之间的所有元素(l=0、1、2、3)运行蝶式运算,并获得如P[l]和Q[l]的结果。
3) FFT设备100将如下结果写入到RAM 120:
,其中,l= 0、1、2、3。
在根据此实施例的FFT设备100(图14)中,RAM地址的比特大小是5比特,并且向量地址的比特大小是2比特。如图19中以示意图方式示出在FFT设备100中的比特交换处理。
对于包括RAM地址是3比特长并且向量地址是4比特长的RAM的FFT设备,如图20中以示意图方式示出在FFT设备中的比特交换处理。
如上所提及的一样,根据上述方法,在一个级中只交换RAM地址中的两个比特(如果,则和,否则,和p 0)。剩余比特能够移到循环索引。即,如果,则根据此实施例的FFT设备100为所有执行计算,否则为所有执行计算。在循环中,FFT设备100为四个组合(如果,则,否则,)从RAM 120读取这两个向量,执行蝶式运算和通道交换运算,并且将结果数据存储到RAM 120,在其中交换地址中的两个比特。根据此实施例的FFT设备100要求用于只存储四个向量的临时缓冲器。此类临时缓冲器可通过被包括在FFT设备100的功能单元中的现有寄存器实现,如读取寄存器122、写入寄存器124、通道交换单元140或复数累加器单元134。因此,根据此实施例,在FFT设备100中RAM 120的大小与根据库利-图基算法的大小一样大。另一方面,在斯托克汉姆自动排序算法中,所有RAM地址被移位,并且根据斯托克汉姆自动排列算法的FFT运算没有能够用作上述循环索引的比特。因此,根据斯托克汉姆自动排序算法的FFT运算要求用于存储所有RAM数据的临时缓冲器,这使要求的RAM量加倍。
(用于RAM的读取/写入端口的地址生成)
经两个读取寄存器122(A和B)读取基本的四个向量,并且在管道中将其写入两个写入寄存器124(P和Q)。由于在四个向量内执行调换,因此,在蝶式过程中保持管道等待时间以便在读取前不损坏要处理的数据是必要的。
FFT运算由7个级组成,并且用16个步骤来运行一个级。每个步骤由4比特计数器值标识。图21示出使用计数器比特的端口A、B、C和D的地址生成。在图21中,标号211和212表示要经读取寄存器A和B 122从RAM 120读取的向量的RAM地址;标号213和214表示要经写入寄存器P和Q 124写入到RAM 120的向量的RAM地址;标号215表示系数数据的ROM地址,系数数据存储在ROM 135中,并且要用于蝶式运算。ROM模式216标识用于选择蝶式运算的系数的ROM模式。后面将参照图23,描述读取蝶式运算的系数的细节。通道交换模式217标识通道交换140的模式。通道交换运算将参照图24和25详细描述。
例如,在1级中,对于每个计数器值,经两个读取寄存器A、B 122从RAM 120读取RAM地址为和的两个向量。随后,使用通过ROM地址和ROM模式3从ROM 136读取的系数,为这两个向量运行碟式运算。接着,根据通道交换模式B在通道交换140执行通道交换,并且经写入寄存器P和Q 124将结果两个向量写入到RAM 120的RAM地址和。
(比特交换的地址生成器)
图22示出比特交换地址生成器的示例。通过如图22中一样置换计数器比特c7、c6、…、c2、c1及c0来执行地址生成。如图22中所示,配置数据被提供到地址生成器中以指示每个输出比特的原始比特位置。例如,通过IO提供配置数据(7,6,5,4,2,1,0,3),其指示每个输出比特的原始比特位置,并且随后根据此配置数据来交换计数器比特c3、c2、c1和c0。在此之后,用于第一向量的RAM地址(存储地址)被添加为基址。结果数据表示用于读取或写入数据的RAM地址。
(蝶式运算)
使用系数C(0)、C(1)、C(2)和C(3)并行执行四个基2蝶式运算,每个系数被输入到图14中的复数乘法器单元132中。图23示出用于0级的蝶式运算的系数的示例。在图23中,2301表示ROM地址。标号2302表示用于模式1、2和3中的每个模式的系数。注意,。系数被初步计算并存储在ROM 136中。例如,对于模式=2和ROM地址,得出和。
(通道交换)
在0级中,选择在图24和图25中的通道交换模式A。运行此操作用于如图26中一样分别将源地址比特0移到目的地地址比特1,比特1移到比特2,比特2移到比特6,以及比特6移到比特0。对于步骤2n,在图39中,,并且,分别从RAM 120的MEM [2n] [0]、MEM [2n] [1]、MEM [2n] [2]、MEM [2n] [3]、MEM [2n+16] [0]、MEM [2n+16] [1]、MEM [2n+16] [2]及MEM [2n+16] [3]读取A[0]、A[1]、A[2]、A[3]、B[0]、B[1]、B[2]及B[3]。在蝶式运算后,A'[0]、B'[0]、A'[1]、B'[1]、A'[2]、B'[2]、A'[3]及B'[2]分别作为P[0]、P[1]、P[2]、P[3]、Q[0]、Q[1]、Q[2]及Q[3]路由,并且存储在MEM [2n] [0]、MEM [2n] [1]、MEM [2n] [2]、MEM [2n] [3]、MEM [2n+1] [0]、MEM [2n+1] [1]、MEM [2n+1] [2]及MEM [2n+1] [3]中。对于步骤2n+1,在图39中,,分别从RAM 120的MEM [2n+1] [0]、MEM [2n+1] [1]、MEM [2n+1] [2]、MEM [2n+1] [3]、MEM [2n+17] [0]、MEM [2n+17] [1]、MEM [2n+17] [2]及MEM [2n+17] [3]读取A[0]、A[1]、A[2]、A[3]、B[0]、B[1]、B[2]及B[3]。在蝶式运算后,A' [0]、B' [0]、A' [1]、B' [1]、A' [2]、B' [2]、A' [3]及B' [2]分别作为P[0]、P[1]、P[2]、P[3]、Q[0]、Q[1]、Q[2]及Q[3]路由,并存储在MEM [2n+16] [0]、MEM [2n+16] [1]、MEM [2n+16] [2]、MEM [2n+16] [3]、MEM [2n+17] [0]、MEM [2n+17] [1]、MEM [2n+17] [2]及MEM [2n+17] [3]中。注意,如图27中以示意图方式所示,在步骤2n中的存储器写入操作是在步骤2n+1中的存储器读取操作后执行,并且n=0、1、2、...、7。
在1级中,选择在图24和图25中的通道交换模式B。此操作是如图19中所示,用于分别将源地址比特1移到比特2,比特2移到比特5,以及比特5移到比特1。对于步骤2n,在图40中,,并且,分别从RAM 120的MEM [2n] [0]、MEM [2n] [1]、MEM [2n] [2]、MEM [2n] [3]、MEM [2n+8] [0]、MEM [2n+8] [1]、MEM [2n+8] [2]及MEM [2n+8] [3]读取A[0]、A[1]、A[2]、A[3]、B[0]、B[1]、B[2]及B[3]。在蝶式运算后,A' [0]、A' [1]、B' [0]、B'[1]、A' [2]、A' [3]、B' [3]及B' [2]分别作为P[0]、P[1]、P[2]、P[3]、Q[0]、Q[1]、Q[2]及Q[3]路由,并且存储在RAM 120的MEM [2n] [0]、MEM [2n] [1]、MEM [2n] [2]、MEM [2n] [3]、MEM [2n+1] [0]、MEM [2n+1] [1]、MEM [2n+1] [2]及MEM [2n+1] [3]中。对于步骤2n+1,在图40中,并且,分别从RAM 120的MEM [2n+1] [0]、MEM [2n+1] [1]、MEM [2n+1] [2]、MEM [2n+1] [3]、MEM [2n+9] [0]、MEM [2n+9] [1]、MEM [2n+9] [2]及MEM [2n+9] [3]读取A[0]、A[1]、A[2]、A[3]、B[0]、B[1]、B[2]及B[3]。在蝶式运算后,A' [0]、A' [1]、B' [0]、B' [1]、A' [2]、A' [3]、B' [3]及B' [2]分别作为P[0]、P[1]、P[2]、P[3]、Q[0]、Q[1]、Q[2]及Q[3]路由,并存储在MEM [2n+8] [0]、MEM [2n+8] [1]、MEM [2n+8] [2]、MEM [2n+8] [0]、MEM [2n+9] [0]、MEM [2n+9] [1]、MEM [2n+9] [2]及MEM [2n+9] [3]中。注意,如图27中以示意图方式所示,在步骤2n中的存储器写入操作是在步骤2n+1中的存储器读取操作后执行,并且n=0、1、2、...、7。
在剩余的级中,选择图24和图25中的通道交换模式C,并不执行通道交换。
(处理流程)
图28示出由FFT设备100运行的FFT运算的整体处理流程。FFT运算由7个级组成,并且用16个步骤来执行一个级。运行在S151、S152、S156、S157、S158及S159中的处理以实现此二维循环。
在S151中,级标识符通过设为0来初始化。接着,步骤标识符通过在S152中设为0来初始化。
在S153中,从RAM 120取得要处理的数据A和B,并且从ROM 136取得系数C的集。在S154中,使用这些数据A、B和系数C来执行蝶式运算。蝶式运算的结果数据设为P和Q。在S155中,结果P和Q写入到RAM 120。在S156中,步骤标识符递增1。接着,在S157中确定步骤标识符是否等于16。如果确定步骤标识符等于16,则过程移到S158,否则返回到S153。
在S158中,级标识符递增1。接着,在S159中确定级标识符是否等于7。如果确定级标识符等于7,则过程结束,否则,它返回到S152。
基2蝶式运算在一个级中执行次,并且我们为log2N个级重复此运算。因此,此方法要求个蝶式运算。在蝶式运算期间隐含执行比特反转运算,并且不要求用于比特反转运算的额外计算时间,与通过斯托克汉姆算法相同。
斯托克汉姆算法要求缓冲器空间加倍以便在处理前不损坏源数据。相反,根据本发明,如在图17或图18中一样,比特交换最多只更改两个RAM地址比特。也就是说,在源与目的地RAM地址之间只有两个比特不同。在写入结果前,FFT设备100从RAM 120读取两个向量,其中,RAM地址对应于这两个比特的所有组合。相应地,根据本发明的FFT设备在处理前和在执行比特交换运算时不损坏源数据,从而与斯托克汉姆自动排序算法相比,允许它将要求的RAM量减半。此外,如图14中所示,根据本发明的FFT设备并行执行多个蝶式运算。
<第二实施例>
图14中的2读取+2写入端口RAM可替代为如图29中一样带有四倍宽度的单端口RAM。图29示出运行带有单端口RAM的RAM访问方案的FFT设备。在3级中,使用RAM访问模式B,并且在其它级中,使用RAM访问模式A。
在图30中所示的RAM访问模式A中,可通过一次RAM读取访问取得用于端口A或B的步骤4n、4n+1、4n+2和4n+3的四个源数据,或者可通过一次RAM写入访问存储用于端口P或Q的步骤4n、4n+1、4n+2和4n+3的四个结果数据,其中,n=0、1、2、3。例如,让我们考虑步骤0、1、2和3。在1个周期中,使用1端口RAM取得用于端口A的MEM [0]、MEM [1]、MEM [2]和MEM [3]。在另一周期中取得用于端口B的MEM [16]、MEM [17]、MEM [18]和MEM [19]。用于端口P的结果数据可在另一周期中存储在MEM [0]、MEM [1]、MEM [2]和MEM [3]中。用于端口Q的结果数据可在另一周期中存储在MEM [16]、MEM [17]、MEM [18]和MEM [19]中。步骤0、1、2和3可通过1端口RAM在4个周期中执行,这是与2读取+2写入端口RAM相同的性能。
在图31中所示的RAM访问模式B中,可在一次RAM读取访问中取得用于端口A和B两者的步骤2n和2n+1的四个源数据,或者可在一次RAM写入访问中存储用于端口P和Q的步骤2n和2n+1的四个结果数据,其中,n是从0到7的任何整数。例如,让我们考虑步骤0和1。在1个周期中,使用1端口RAM取得用于端口A的MEM [0]和MEM [1]及用于端口B的MEM [2]和MEM [3]。在另一周期中,用于端口P的结果数据存储为MEM [0]和MEM [1],并且用于端口Q的结果数据存储为MEM [2]和MEM [3]。步骤0和1可通过1端口RAM在2个周期中执行,这是与2读取+2写入端口RAM相同的性能。
如上所提及的一样,通过使用四倍的RAM的宽度,四次RAM访问可合并成一次RAM访问。即使将2读取+2写入端口RAM替代为带有四倍宽度的1端口RAM,性能也不会有损失。相反,多端口RAM的比特成本比1端口RAM更昂贵,这是因为多个线需要路由到比特单元用于同时访问。因此,将2读取+2写入端口RAM替代为1端口RAM能够减少RAM的成本。
我们能够将1端口RAM和寄存器堆(register file)考虑为虚拟2读取+2写入端口RAM,这是因为以与第一实施例中相同的顺序执行蝶式运算。除合并四个RAM访问的寄存器外,根据此实施例的FFT设备如在第一实施例中一样要求只存储四个向量的临时缓冲器(或管道寄存器)。
<第三实施例>
在前面实施例中描述的方法可扩展到通用基FFT。在第三实施例中,FFT设备执行用于通用基的FFT运算,其中,相同基用于所有级。
图34示出用于基3 FFT的比特交换运算。在此实施例中,RAM地址表示为三进制(基3)数。根据此实施例的FFT设备使用其向量大小(即,在一个向量中包括的数据元素的数量)为32=9的向量。比特交换运算扩展到三进制中的数位交换。如图34中所示,我们可应用与图15中算法类似的算法以确定在此实施例中的数位交换模式。
以与在第一实施例中相同的方式,在此实施例中在一个级中只交换RAM地址中作为三进制数的两个数位(如果,则和p f ,否则,和p 0)。剩余数位可移到循环索引。即,如果,则根据此实施例的FFT设备为所有执行蝶式运算,否则为所有执行蝶式运算。在每个级中,根据此实施例的FFT设备为八个组合(如果,则,否则,)从RAM读取该向量,然后执行蝶式运算,并且将其结果数据存储到RAM,在其中交换地址中的这两个数位。在此实施例中,FFT设备要求在用于蝶式运算的寄存器堆(或在FFT设备的功能单元中的管道寄存器)中的临时缓冲器以存储八个向量。可能使用如在第二实施例中一样的RAM访问的合并方案,以使用宽度宽的1端口RAM,并且这要求在寄存器文件中的一些附加寄存器。
根据此实施例的FFT设备,可能通过使用带有三进制(基3)寻址的RAM的小存储器来实现有效的FFT算法。
<第四实施例>
在第四实施例中,FFT设备执行用于通用基的FFT运算,其中,对于所有级,基是2的相同整数次幂。
图32以示意图方式示出通过合并两个级的基4 FFT的比特交换运算。在此情况下,在一个级中存在两个蝶式比特,并且最多混排3个地址比特。作为基本运算,FFT设备从存储器(RAM)取得十六个向量,为取得的向量执行蝶式运算,并且将其最多十六个结果向量存储到存储器。相应地,FFT设备不必包括双倍的存储器。通过使用更高基,可能减少RAM访问的数量和级的数量以及处理时间。
可通过单端口RAM构建通用基FFT硬件,如图33中所示。
我们可将两个比特考虑为基4数位。在此方法中,在一个级中只交换RAM地址中以基4数编码的两个数位(如果,则和p f ,否则,和p 0),并且因此我们可以用与在第三实施例中相同的方式来考虑这两个数位。在循环中,根据此实施例的FFT设备为十六个组合(如果,则,否则,)从RAM读取该向量,为读取的数据执行蝶式运算,并且在RAM中存储其结果数据。在运算的每个级中,交换地址的这两个数位。除寄存器堆中用于合并四次RAM访问的寄存器外,还要求寄存器堆(或FFT设备的功能单元中的管道寄存器)中的临时缓冲器以存储十六个向量。通过将基4数位分割成二进制的两个比特,可使用带有二进制地址的RAM。
<第五实施例>
在第五实施例中,FFT设备执行用于混合基(即二的次幂数与几个其它质数的乘积)的FFT运算。
如果FFT大小(即,要处理的数据元素的数量)是22V 的倍数,则易于执行带有的大小的向量计算,其中,2 V 是向量大小,即在一个向量中包括的数据元素的数量。
图38示出比特交换运算的示例,其中,FFT大小是,并且向量大小是4。必须通过混合基数表示地址,其中,使用基2数来对称地指派两个最高有效数位和两个最低有效数位。
如图38中所示,也根据图15中所示的算法来运行用于混合基的数位交换运算。在运行数位交换运算的所有步骤后,两个最高有效数位被移到两个最低有效数位,并且这适合向量运算。
LTE(长期演进)要求用于混合基的FFT,其是二的次幂数和几个其它质数的乘积。相应地,根据此实施例的FFT设备优选应用到LTE。
以与第三实施例相同的方式,在此方法中在一个级中只交换RAM地址中作为混合基数的两个数位(如果,则是和,否则,是和p 0)。在循环中,在要求最大大小的缓冲器的2级中,从RAM读取用于所有的向量,并在计算后在RAM中存储它,在其中交换地址中的这两个数位。除用于合并四次RAM访问的寄存器外,根据此实施例的FFT运算要求临时缓冲器(或管道寄存器)以存储十个向量。
通过将混合基数中的地址转换为二进制数,FFT设备可使用带有二进制寻址的RAM。例如,通过用二进制计算,给出在1级后的RAM地址,其中,通过某些比特用二进制表示d 0、d 1、d 2或d 3。FFT设备要求能够存储360个复元素的RAM,其数量是复元素数量的1.5倍。这是因为MSD在过程期间可以是三进制数,而原始MSD是二进制数。应注意的是,与斯托克汉姆自动排序算法要求的存储器大小相比,这是小量的存储器。
<第六实施例>
在第六实施例中,FFT设备执行用于混合基的FFT运算,而未使用向量的调整(alignment)和蝶式运算。
在FFT中的所有基是3时,通过三进制(基3)数寻址RAM,并且向量大小是3n。在此情况下,过程是直接的。如图34中所示,FFT设备可为用三进制数编码的数据执行混合数位交换(而不是比特交换)。当使用带有不同整数的混合基时,也可能扩展发明的算法。
在方法1(图35)中,使用双倍存储器的计算数据的大小是必要的。在方法2(图36)中,FFT设备可通过1.5倍存储器执行计算,但在最终级执行压缩(将数据移位)是必要的。
用于一个级而不考虑向量的调整的算法如下所述。为所有级重复以下算法:
1) FFT设备为所有整数从RAM将pq个复元素读取为,其中,A是为每个运算步骤确定的零或正整数,B是大于一且为每个级确定的整数,p是作为要在此级中执行的蝶式运算的基数的整数。
2) FFT设备为每个对数据元素集执行基p蝶式运算以计算结果数据集。
3) 在级中执行数位交换时,FFT设备将结果数据Q i,j 作为写入RAM中。如果数位反转未执行,则结果数据作为存储到原始地址。
图37中示出用于混合基2、5和3的存储器访问和蝶式运算的示例。
在0级,FFT设备并行执行作为单元运算的三个基2蝶式运算(或如果它不能并行化时按顺序执行),其对应于数位交换(基2来自d2,并且基3来自用于d0的基3)。即,p=2,q=3,B=3,并且结果作为存储到RAM。
在1级,数位交换不执行,并且FFT设备执行2个蝶式运算,这是因为在LSD(最低有效数位)上的d2对应于基2。即,p=5,q=2,B=3,并且结果作为存储到RAM。
在2级,数位交换不执行,并且FFT设备执行2个蝶式运算,这是因为在LSD上的d2对应于基2。即,p=3,q=2,B=3,并且结果作为存储到RAM。
通过使用这些单元运算,存储器访问可变换成作为批过程(batch process)的几个突发访问。
在0级,生成从地址0和15开始的两个突发访问。将读取的数据D [0]和D [15]提供到第一基2蝶式运算,并且将D [1]和D [16]提供到第二蝶式运算,并以此类推。第一基2蝶式运算生成写入数据D [0]、D [15]和D [30],并且第二蝶式运算生成写入数据D [1]、D [16]和D [31],并以此类推。通过从地址0、15和30开始的三次突发写入操作将这些数据存储到存储器。
在1级,生成从地址0开始的一次突发访问。将读取的数据D [0]、D [3]、D [6]、D [9]及D [12]提供到第一基5蝶式运算,并且将D [1]、D [4]、D [7]、D [9]及D [12]提供到第二蝶式运算,并以此类推。第一基5蝶式运算生成写入数据D [0]、D [3]、D [6]、D [9]及D [12],并且第二蝶式运算生成写入数据D [1]、D [4]、D [7]、D [9]及D [12],并以此类推。通过从地址0开始的一次突发写入操作在存储器中存储这些数据。
在2级,生成从地址0、15和30开始的三次突发访问。将读取的数据D [0]、D [15]和D [30]提供到第一基3蝶式运算,并且将D [1]、D [16]和D [31]提供到第二蝶式运算,并以此类推。第一基3蝶式运算生成写入数据D [0]、D [15]和D [30],并且第二蝶式运算生成写入数据D [1]、D [16]和D [31],并以此类推。通过从地址0、15和30开始的三次突发写入操作在存储器中存储这些数据。
通过允许对宽向量存储器的交替访问和对数据排队,能够提供这些突发数据而不拖延。
在此方法中,我们考虑可以在可变混合基数中表示地址的虚拟RAM。寻址方案和数据宽度可根据用于读取或写入的RAM访问类型或级而更改。图41描绘用于0级读取访问的虚拟RAM地址和真实RAM地址的关系。
在我们考虑虚拟RAM访问时,它类似于第五实施例,并且在一个级中只交换虚拟RAM地址中的混合基数中的两个数位(和,或者和p 0)。注意的是,v能够取决于用于读取或写入的RAM访问类型或级。在循环中,在要求最大缓冲器的某个级中,为上述两个数位中的所有组合从虚拟RAM读取向量,并且在计算后将它存储在虚拟RAM中,在其中交换地址中的这两个数位。FFT设备要求在数位交换中用于此最大情况的临时缓冲器(或管道寄存器)。
可以通过带有二进制地址的真实RAM构建上述虚拟RAM。然而,二进制RAM地址不对应于混合基数中的虚拟RAM地址。因此,FFT设备要求将对虚拟RAM的一次访问分割成如405中的两次真实RAM访问。另一方面,能够通过对真实RAM的一次读取访问而获得用于401和402的数据。此方案能够通过一些缓冲寄存器实现。FFT设备要求能够存储45个复元素的RAM,其是复元素数量的1.5倍。这是因为MSD在过程期间可以是三进制数,而原始MSD是二进制数。然而,与斯托克汉姆自动排序算法的存储器大小相比,这是小量。
如上所述,已详细描述本发明的实施例。然而,除信息处理设备外,实施例可能涉及方法,其中,计算机运行上述处理,或者作为在存储媒体上的程序,该程序存储在该存储媒体中。
虽然已参照示范实施例描述本发明,但要理解的是,本发明不限于公开的示范实施例。要给予以下权利要求书的范围最广泛的解释,以便涵盖所有此类修改和等效结构与功能。
Claims (7)
1.一种用于对数据序列执行基2快速傅立叶变换(FFT)的信息处理设备,包括:
存储部件,包括多个存储区域,其中每个存储区域存储要处理的多个数据元素并被指派存储地址;
读取部件,用于从所述存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
多个蝶式运算部件,用于对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从所述存储部件读取的多个集中;
写入部件,用于将包括所述多个结果数据的集写入所述存储部件中;以及
控制部件,用于在FFT运算的每一级控制所述部件中的每个部件以对所述存储部件中存储的所有数据元素执行所述蝶式运算,
其中所述FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,所述控制部件控制所述部件中的每个部件,使得:
所述读取部件从所述存储部件读取第一存储地址A指引的数据元素的第一集、第二存储地址A+1指引的数据元素的第二集、第三存储地址A+2 m 指引的数据元素的第三集及第四存储地址A+2 m +1指引的数据元素的第四集,
所述多个蝶式运算部件对所述第一集中包括的数据元素和所述第三集中包括的数据元素执行基2蝶式运算,以计算所述结果数据的第一和第三集,并且对所述第二集中包括的数据元素和所述第四集中包括的数据元素执行基2蝶式运算,以计算所述结果数据的第二和第四集,以及
所述写入部件将所述结果数据的第一集写入所述第一存储地址A指引的存储区域中,将所述结果数据的第二和第三集之一写入所述第二存储地址A+1指引的存储区域中,以及将所述结果数据的第二和第三集中的另一集写入所述第三存储地址A+2 m 指引的存储区域中,以及将所述结果数据的第四集写入所述第四存储地址A+2 m +1指引的存储区域中,
其中,A是为每个运算步骤确定的零或正整数,以及m是为每个级确定的正整数,
其中,数据元素的每个集称为向量,并且所述设备分别把不同的比特交换运算应用到用于存储部件的地址比特和向量地址比特二者的向量内操纵和仅用于向量地址比特的向量间操纵。
2.根据权利要求1所述的信息处理设备,其中所述读取部件包括用于保留从所述存储部件读取的数据元素的集的第一保留部件,以及其中所述写入部件包括用于保留所述结果数据的集的第二保留部件。
3.根据权利要求2所述的信息处理设备,其中所述读取部件包括用于所述数据元素的每个集的多个所述第一保留部件,并且所述写入部件包括用于所述结果数据的每个集的多个所述第二保留部件。
4.一种用于对数据序列执行混合基或单基快速傅立叶变换(FFT)的信息处理设备,包括:
存储部件,包括多个存储区域,其中每个存储区域存储要处理的多个数据元素并被指派存储地址;
读取部件,用于从所述存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
多个蝶式运算部件,用于对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从所述存储部件读取的多个集中;
写入部件,用于将包括所述多个结果数据的集写入所述存储部件中;以及
控制部件,用于在FFT运算的每一级控制所述部件中的每个部件以对所述存储部件中存储的所有数据元素执行所述蝶式运算,
其中所述FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,所述控制部件控制所述部件中的每个部件,使得:
其中A是为每个运算步骤确定的零或正整数,B是大于一且为每个级确定的整数,p是作为要在每个级中执行的蝶式运算的基数且为每个级确定的整数,以及q是整数且作为要在所述级之一中执行的蝶式运算的基数,
所述读取部件为所有整数 从所述存储部件读取存储地址指引的数据元素D i,j ,
所述多个蝶式运算部件为每个对所述数据元素的集执行基p蝶式运算,以计算结果数据的集,以及
所述写入部件将所述结果数据Q i,j 写入存储地址或指引的存储区域中,
其中,数据元素的每个集称为向量,并且所述设备分别把不同的比特交换运算应用到用于存储部件的地址比特和向量地址比特二者的向量内操纵和仅用于向量地址比特的向量间操纵。
5.一种用于对数据序列执行基2快速傅立叶变换(FFT)的信息处理设备的控制方法,其中所述信息处理设备包括存储部件,所述存储部件包括多个存储区域,每个存储区域存储要处理的多个数据元素并被指派存储地址,所述控制方法包括以下步骤:
在读取部件,从所述存储部件读取多个集,每个集包括在相同存储区域中存储的多个数据元素;
在执行部件,对多个数据元素分别通过预确定的系数执行蝶式运算以分别计算多个结果数据,每个数据元素被包括在从所述存储部件读取的多个集中;
在写入部件,将包括所述多个结果数据的集写入所述存储部件中;以及
在控制部件,在FFT运算的每一级控制所述信息处理设备的每个部件以对所述存储部件中存储的所有数据元素执行所述蝶式运算,
其中所述FFT运算的每个级包括多个运算步骤,并且在每一运算步骤,控制所述部件中的每个部件使得:
所述读取部件从所述存储部件读取第一存储地址A指引的数据元素的第一集、第二存储地址A+1指引的数据元素的第二集、第三存储地址A+2 m 指引的数据元素的第三集及第四存储地址A+2 m +1指引的数据元素的第四集,
所述蝶式运算部件对所述第一集中包括的数据元素和所述第三集中包括的数据元素执行基2蝶式运算,以计算所述结果数据的第一和第三集,并且对所述第二集中包括的数据元素和所述第四集中包括的数据元素执行基2蝶式运算,以计算所述结果数据的第二和第四集,以及
所述写入部件将所述结果数据的第一集写入所述第一存储地址A指引的存储区域中,将所述结果数据的第二和第三集之一写入所述第二存储地址A+1指引的存储区域中,以及将所述结果数据的第二和第三集中的另一集写入所述第三存储地址A+2 m 指引的存储区域中,以及将所述结果数据的第四集写入所述第四存储地址A+2 m +1指引的存储区域中,
其中,A是为每个运算步骤确定的零或正整数,以及m是为每个级确定的正整数,
其中,数据元素的每个集称为向量,并且所述设备分别把不同的比特交换运算应用到用于存储部件的地址比特和向量地址比特二者的向量内操纵和仅用于向量地址比特的向量间操纵。
6.一种根据权利要求1到4中任一项所述的信息处理设备,其中所述比特交换最多只更改所述存储部件的两个地址比特。
7.一种根据权利要求5所述的控制方法,其中所述比特交换最多只更改所述存储部件的两个地址比特。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/071357 WO2011074128A1 (en) | 2009-12-16 | 2009-12-16 | Information processing apparatus, control method thereof, program, and computer-readable storage medium |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102652315A CN102652315A (zh) | 2012-08-29 |
CN102652315B true CN102652315B (zh) | 2015-10-21 |
Family
ID=44166916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980162964.3A Active CN102652315B (zh) | 2009-12-16 | 2009-12-16 | 信息处理设备及其控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8880575B2 (zh) |
EP (1) | EP2513818A1 (zh) |
CN (1) | CN102652315B (zh) |
WO (1) | WO2011074128A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186476B (zh) * | 2011-12-30 | 2017-07-28 | 上海贝尔股份有限公司 | 一种用于多流的数据缓存方法和装置 |
US9311274B2 (en) * | 2013-10-17 | 2016-04-12 | Texas Instruments Incorporated | Approach for significant improvement of FFT performance in microcontrollers |
US9805000B1 (en) * | 2015-07-29 | 2017-10-31 | Mbit Wireless, Inc. | Method and apparatus for reordering mixed radix fast Fourier transform outputs |
US10339200B2 (en) * | 2015-10-09 | 2019-07-02 | Signalchip Innovations Private Limited | System and method for optimizing mixed radix fast fourier transform and inverse fast fourier transform |
US10713333B2 (en) * | 2015-12-21 | 2020-07-14 | Apple Inc. | Fast Fourier transform architecture |
CN106933777B (zh) * | 2017-03-14 | 2019-03-19 | 中国科学院软件研究所 | 基于国产申威26010处理器的基2一维fft的高性能实现方法 |
CN107451097B (zh) * | 2017-08-04 | 2020-02-11 | 中国科学院软件研究所 | 国产申威26010众核处理器上多维fft的高性能实现方法 |
CN107844451B (zh) * | 2017-10-23 | 2020-11-20 | 复旦大学 | 一种级联板间流水线的“蝶式”传输方法 |
US10783216B2 (en) * | 2018-09-24 | 2020-09-22 | Semiconductor Components Industries, Llc | Methods and apparatus for in-place fast Fourier transform |
CN112667959B (zh) * | 2020-12-30 | 2024-02-23 | 上海金卓科技有限公司 | 混合基dft处理方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290613A (zh) * | 2007-04-16 | 2008-10-22 | 卓胜微电子(上海)有限公司 | Fft处理器的数据存储***和方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4138730A (en) * | 1977-11-07 | 1979-02-06 | Communications Satellite Corporation | High speed FFT processor |
US4723258A (en) * | 1985-03-18 | 1988-02-02 | Nec Corporation | Counter circuit |
JPS62150466A (ja) * | 1985-12-23 | 1987-07-04 | Nec Corp | アドレス制御装置 |
US5091875A (en) * | 1990-03-23 | 1992-02-25 | Texas Instruments Incorporated | Fast fourier transform (FFT) addressing apparatus and method |
US5293330A (en) * | 1991-11-08 | 1994-03-08 | Communications Satellite Corporation | Pipeline processor for mixed-size FFTs |
US6081821A (en) * | 1993-08-05 | 2000-06-27 | The Mitre Corporation | Pipelined, high-precision fast fourier transform processor |
US6334219B1 (en) * | 1994-09-26 | 2001-12-25 | Adc Telecommunications Inc. | Channel selection for a hybrid fiber coax network |
JP3749022B2 (ja) * | 1997-09-12 | 2006-02-22 | シャープ株式会社 | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム |
KR100481852B1 (ko) * | 2002-07-22 | 2005-04-11 | 삼성전자주식회사 | 고속 푸리에 변환 장치 |
KR100518797B1 (ko) * | 2004-01-07 | 2005-10-05 | 삼성전자주식회사 | 처리속도가 향상된 고속 퓨리에 변환 장치 및 그의 처리방법 |
JP4755610B2 (ja) * | 2007-01-31 | 2011-08-24 | 三菱電機株式会社 | 高速フーリエ変換装置 |
JP2008217359A (ja) * | 2007-03-02 | 2008-09-18 | Fujitsu Ltd | 高速フーリエ変換装置及び高速フーリエ変換処理方法 |
-
2009
- 2009-12-16 CN CN200980162964.3A patent/CN102652315B/zh active Active
- 2009-12-16 WO PCT/JP2009/071357 patent/WO2011074128A1/en active Application Filing
- 2009-12-16 EP EP09852318A patent/EP2513818A1/en not_active Withdrawn
- 2009-12-16 US US13/514,334 patent/US8880575B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290613A (zh) * | 2007-04-16 | 2008-10-22 | 卓胜微电子(上海)有限公司 | Fft处理器的数据存储***和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2011074128A1 (en) | 2011-06-23 |
EP2513818A1 (en) | 2012-10-24 |
US20120254273A1 (en) | 2012-10-04 |
CN102652315A (zh) | 2012-08-29 |
US8880575B2 (en) | 2014-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102652315B (zh) | 信息处理设备及其控制方法 | |
JP5689282B2 (ja) | 行列をsimdマルチコア・プロセッサ・アーキテクチャ上で転置するためのコンピュータ実装方法、コンピュータ可読ストレージ媒体及びシステム | |
JP4022546B2 (ja) | 高速フーリエ変換を用いた混合−基数方式の変調装置 | |
KR101162649B1 (ko) | 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치 | |
US20100128818A1 (en) | Fft processor | |
JP4755610B2 (ja) | 高速フーリエ変換装置 | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
JP2002351858A (ja) | 処理装置 | |
JP5601327B2 (ja) | データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法 | |
KR20230141045A (ko) | 암호 프로세서 장치 및 이를 채용하는 데이터 처리 장치 | |
Chen et al. | Energy-efficient architecture for stride permutation on streaming data | |
Sorokin et al. | Conflict-free parallel access scheme for mixed-radix FFT supporting I/O permutations | |
JP5486226B2 (ja) | ルリタニアマッピングを用いるpfaアルゴリズムに従って種々のサイズのdftを計算する装置及び方法 | |
JP2015503785A (ja) | Fft/dftの逆順ソーティングシステム、方法およびその演算システム | |
Chen et al. | Faster multiplication for long binary polynomials | |
US6728742B1 (en) | Data storage patterns for fast fourier transforms | |
CN111221501B (zh) | 一种用于大数乘法的数论变换电路 | |
Järvinen et al. | Stride permutation networks for array processors | |
Li et al. | An area-efficient large integer NTT-multiplier using discrete twiddle factor approach | |
KR20230078131A (ko) | 반복 배열 ntt를 이용한 동형 암호 연산 장치 및 방법 | |
TWI506457B (zh) | 折疊式蝶形模組、管線式快速傅利葉轉換處理器及控制方法 | |
CN109753629B (zh) | 多粒度并行fft计算装置 | |
US8572148B1 (en) | Data reorganizer for fourier transformation of parallel data streams | |
Du Pont et al. | Hardware Acceleration of the Prime-Factor and Rader NTT for BGV Fully Homomorphic Encryption | |
TWI402695B (zh) | ***基數-2/8快速傅立葉轉換裝置及方法 |
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 |