并行位反序装置和方法

文档序号:6444889阅读:281来源:国知局
专利名称:并行位反序装置和方法
技术领域
本发明属于集成电路设计中的位反序数据存储与排列,与快速傅立叶变换(FFT) 算法、集成电路结构紧密相关,具体涉及ー种并行位反序装置和并行位反序方法。
背景技术
信号处理系统经常需要将信号内容在时域和频域进行转换,快速傅立叶变换算法 (FFT)可进行时域和频域间的信号转换。相对于其它转换算法来说,快速傅立叶变換算法具有结构统一、计算量少的优点,因此广泛应用于信号处理系统中。FFT算法输入N个数据,输出N个数据;一般称时域至频域的变换为正向变换,而频域至时域的变换变逆向变换。我们称时域数据按采样时间排列的顺序为“自然序”,即每个数据点的采样时间是递增的;同样称频域数据按频率高低排列的順序“自然序”,即每个数据点对应的频率是递增的。与“自然序”对应的是“位反序”,即将自然序中的每个数据点的索引写成ニ进制的形式,将该ニ进制索引镜像反序后,得到的索引值即为该数据点在“位反序”中的索引值。假设我们可以用:3bit表示索引值,自然序中索引值3表示成ニ进制为 (011)2,进行镜像反序后,其ニ进制值为(110)2,即十进制中的6,因此,“6”即为位反序排列后该数据对应的索引值。FFT算法有多种实现方式,一般可分成按时域抽取和按频域抽取两种。图1示出了按频域抽取的算法,原始数据100为自然序排序,在进行计算前必须经过位反序操作103对数据进行序列变换,使其按位反序排列,反序后数据101经计算后的输出数据102为自然序排列。在时间抽取算法中,输入数据为自然序排列,但输出数据是位反序排列;因此,在对输出数据作进一步处理前,需要对输出数据进行序列变换,使其按自然序排列。已有ー些专利实现了位反序数据排列,如美国专利US 2003/0028571A1 (Real-time metnod for oit-reversal of large size arrays)米用两步骤反序方法第一步骤利用DMA在外部存储器与片上存储器之间进行大尺寸反序排列, 第二步骤利用处理器实现小尺寸内部的数据反序排列。该方法存在的问题是在利用处理器实现小尺寸内部的数据反序排列吋,一、内部排序需要多次迭代,对于长度为N的数据,需要Iog2N-I次迭代;ニ、每次迭代只能以标量为单位读写数据,无法实现多个数据并行排序。 因此,该专利描述的位反序数据排列方法效率很低。美国专利 US 7,640, 284B1 (Bit Reversal Methods for a Parallel Processor) 描述了 nVidia公司利用图形处理器(GPU)中多处理核或SIMD执行部件实现并行位反序排列的方法。该发明虽然实现了并行位反序排列,但仍存在以下问题一、每个处理核或执行部件在计算位反序地址时,需要多次访问查找表并进行多次移位操作,仅仅计算位反地址时就需要多个时钟周期,执行效率低;ニ、正如该专利第21页第10行所述,该方法只能减少而无法消除多个处理器或SIMD功能部件的存储访问冲突,存储访问冲突进ー步降低了位反序排列操作的执行效率。

发明内容
(一)要解决的技术问题本发明所述解决的技术问题是提高并行位反序排列操作的执行效率,以对多粒度并行FFT计算装置更好的支持。( ニ )技术方案本发明提出一种并行位反序装置,包括并行位反序単元、蝶形计算与控制单元和存储器,所述蝶形计算与控制单元通过数据总线与所述存储器相连,所述并行位反序単元用于对所述蝶形计算与控制单元所计算的蝶形组数据进行位反序;所述并行位反序単元包括地址反序逻辑,地址反序逻辑与蝶形计算与控制单元相连,用于对来自蝶形计算与控制单元读取地址进行镜像反序和右移操作;所述并行位反序单元还包括多粒度并行存储器、 地址选择器;所述多粒度并行存储器与地址选择器相连接,用于接收所述地址选择器输出的地址;所述该多粒度并行存储器还与所述蝶形计算与控制单元相连接,用于接收蝶形计算与控制单元输出的写数据和读写粒度值。所述并行位反序单元还包括数据反序网络,所述数据反序网络与所述多粒度并行存储器相连接,以接收来自所述多粒度并行存储器的读数据。所述数据反序网络用于蝶形组组内数据的位反序排列。所述地址选择器分別与所述蝶形计算与控制单元和所述地址反序逻辑相连接,用于选择输出到存储器的读写地址。本发明还提出一种并行位反序方法,用于并行位反序装置中,所述并行位反序装置包括并行位反序単元和存储器,所述并行位反序単元包括多粒度并行存储器,所述方法包括如下步骤步骤200、将数据从所述存储器搬运至所述多粒度并行存储器,搬运后自然序列数据等分成2n个组,依次存放在多粒度并行存储器的2n个存储块中,其中η为正整数; 步骤201保持数据组内索引不变,将数据组索引反序;步骤202、保持数据组内索引不变,数据组索引也不变,将组内索引移至高位;步骤203、保持数据组索引不变,将组内索引反序。所述并行位反序装置还包括蝶形计算与控制单元,所述方法的步骤在所述蝶形计算与控制単元的控制下进行。所述并行位反序单元还包括地址反序逻辑和地址选择器;蝶形计算与控制单元通过移位指示线和读取地址线与地址反序逻辑相连接。在步骤201中,移位指示线的值设为Α-η,其中A为读取地址线的位宽,同时将读写地址线上的读取地址设为数据组索引,地址选择器选择地址反序逻辑的输出,作为存储器的读写地址。在步骤203中,从多粒度并行存储器中读取的数据经过数据反序网络的位反序排列后,输出到蝶形计算与控制单元。在步骤203之后,所述数据反序网络的输出端得到2"个数位反序排序后的数据, 以直接进行蝶形计算。(三)有益效果本发明将自然序数据存放在支持多粒度并行读写的存储器中,根据地址递增的顺序并行读取多个经位反序排序后数据。该方法首先对需要排序的数据进行分組,利用三个原理对数据进行排序1.利用存储器多粒度读写特性实现组内数据与数据组之间的反序排列;2.利用硬件逻辑部件实现组内数据的反序排;3.利用不同读写地址,实现数据组之间的反序排序。本发明的整个位反序操作过程只需读取一次存储器,不存在迭代过程,处理器可直接对读取的位反序数据进行ー下步操作,如FFT中的蝶形计算;同时,本发明的主法在并行读取存储器时不存在访问冲突,读取和排序过程可深度流水,具有极高的执行效率; 另外,本发明可根据具体实现灵活指定并行粒度。


图1是数据长度为8吋,按频率抽取的基2FFT算法流程图;图2是本发明的并行位反序方法的流程图;图3是本发明的并行位反序装置的结构示意图;图4是当并行粒度为4,数据长度为32吋,位反序操作前各个数据在存储器中的分布示意图;图5是本发明的多粒度并行存储器的逻辑结构示意图;图6是本发明的的多粒度并行存储器在不同读写粒度下,存储器的编址方式和逻辑Bank划分的示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并參照附图,对本发明进ー步详细说明。为了实现并行位反序排列,首先定义并行粒度W = 2η,(η为正整数),并行粒度指从存储器并行读取并排序的数据个数。在进行位反序操作之前,我们先对数据进行分組,每 W个数据构成一組。对于数据长度N= 2Τ的数据来说,每个数据索引需要T个比特位来表示;数据分组后,数据索引的组分成两部分数据组索引g和组内数据索引b。当并行粒度为 2n吋,对于2T个数据,一共可分成2T_n个数据組。令T-n = G,则需要G个比特位来表示数据组索引g,即g = g^. . . glgo;需要η个比特位来表示组内索引地址b,即b = Iv1. . . bib。。 每个数据索引的ニ进制表示由g和b拼接而成,在自然序排列中,数据组索引在高位,组内索引b在低位,即
自然序数据地址=(gc-!· · · R1Robn-!. . . Nb。)(表达式1)而对应的位反序数据地址为
位反序数据地址=Cbob1. . . bn_lgogl. . . g^)(表达式2)图3示出了根据本发明的并行位反序装置的ー个具体实施例的结构示意图。该并行位反序装置包括并行位反序単元314、蝶形计算与控制单元309和大容量存储器311。其中,蝶形计算与控制单元309通过数据总线310与大容量存储器311相连。并行位反序単元314包括多粒度并行存储器300、地址反序逻辑306、地址选择器308、数据反序网络301。当并行粒度设定为2n吋,多粒度并行存储器300由2n个存储块组成。多粒度并行存储器300具有地址线313,该地址线313与地址选择器308的输出端
6相连,用于接收地址选择器输出的地址。该多粒度并行存储器300还具有写使能信号线307、写数据线316和读写粒度指示线304,三者均与所述蝶形计算与控制单元309相连,分别用于接收来自蝶形计算与控制单元309输出的写使能信号、写数据和读写粒度值。该多粒度并行存储器300还具有读数据线312,其与数据反序网络301的输入端相连,用于向数据反序网络输出读数据。数据反序网络301的输出端302与蝶形计算与控制单元309相连,用于组内数据的反序排列。当并行位反序装置314的并行粒度为2n吋,数据反序网络301的读数据线312 上的输入数据的个数为2n,输出端302上的输出数据的个数也为2n。如果定义输入数据向量为X,从左至右的索引值为i (0 < i < n),X[i]表示第i个输入数据;输出数据向量为Y, 从左至右的索引值为j (0 ^ j < η), Y[j]表示第j个输出数据;br (i)表示对i进行镜像位反序,则数据反序网络(301)中X与Y的对应关系为
Y[i] =X[br(i)]地址选择器308的一个输入端与蝶形计算与控制单元309的读写地址线303相连,另一输入端与地址反序逻辑306的输出端相连,用于择输出到存储器300的读写地址。地址反序逻辑306的一输入端与蝶形计算与控制单元309的移位指示线305相连,另ー输入端与蝶形计算与控制单元309的读写地址线303相连,用于对读写地址线303 输入的读取地址的ニ进制表示按位进行镜像反序和右移操作。读取地址具有固定的位宽, 该位宽由并行位反序単元314能支持的最大数据长度M以及并行粒度2n決定,即读取地址的位宽A= (Iog2M-Ii)。当数据组位宽g小于A吋,高位补0形成读取地址。接着,地址反序逻辑306对镜像反序后结果进行右移操作,移位距离=A-g。如假定读取地址303的位宽A = 16,而数据组位宽g = 3,即表示成g = g2glgo,则读取地址303的输入为(0000 0000 0000 0&glg。),镜像反序后为(goglg20 0000 0000 0000),移位距离=13,移位后为(0000 0000 0000 0gQg1&),移位后数据即为地址反序逻辑306的输出。位反序排序操作的过程可以抽象成数据地址(gy. . . &g(lbnY··bA)的变化,原始的数据地址如(表达式1)所示,而反序排序后的数据地址如(表达式2、所示。对于自然序数据地址(gy. . . ^gciIv1. . . b^o)进行并行位反序的方法可分解成四个步骤,如图2所示步骤200、初始化。蝶形计算与控制单元309将数据从大容量存储器311搬运至多粒度并行存储器300。搬运时利用数据总线310和写数据线315传送数据。此时,地址选择器308选择读写地址线303上的读取地址作为输出,读写粒度指示线304上的粒度为2n,写使用信号线307上的数据电平为高。搬运后自然序列数据等分成2n个组,依次存放在多粒度并行存储器300的2n存储块400中,如图4所示。图4中假定数据长度N = 32,并行粒度为4。步骤201、数据组间反序。该步骤将数据组索引反序,使数据地址由g = (gG-lgl. · · g(lノ 变成(g0gl- · · gG-l)。该过程中,蝶形计算与控制单元309将移位指示线305的值设为A_n,其中A为读取地址线303的位宽。同时将读写地址线303上的读取地址设为数据组索引g = (gG-lgl. . . g0);地址选择器308选择地址反序逻辑306的输出,作为存储器300的读写地址。步骤202、数据组与数据组之间反序。该步骤保持数据组内索引不变,数据组索引也不变,但将组内索引移至高位,使数据地址由g= ( ... gy)变成g = Ov1... bA g0gl- · · gG-l)。该过程中,将图3中读取粒度指示线304上的粒度设为1,写使能信号线307上的数据电平设为低,根据地址线313的地址从存储器中读取一組数据。该操作的效果即将组内索引g移至高位。取得这ー效果的原理可解释如下自然序列数据是分成2n份,存放在2"个存储块500中,因此,每个存储块500中相同位置的数据的自然序索引值相差N/2n = 2e。当读取粒度304设为1读取数据时,其行为是从各个存储块(500)中相同位置的存储单元各读取1个数据,拼成ー个数据组;该行为相当于从自然序数据中,每隔N/2n = 2e个数据抽取1个数据,拼成一个数据組。假设读取数据的组内编号为b = Iv1. . . Id1,抽取的起始址为g = gogl. . . gy,每隔2e个数据抽取1个数据即相当于每个数据的抽取地址为该表达式即步骤201中期望的数据地址Ov1. · · b^o gogl. · · g^)。步骤203、组内数据反序。该步骤保持数据组索引不变,将组内索引反序,使数据地址由 g = Ov1. . . Id1Idci g^g” . . g^i)变成 g = OdciId1. . . Iv^Qg1. . . g^i)。该步骤利用了所述数据反序网络301,从多粒度并行存储器300中通过读数据线 312读取的数据经过数据反序网络301后,数据地址即变为(Kb1. . . Ivigtlgl. . . gy),经过输出端302直接输出至蝶形计算与控制单元309,完成2"个数据的并行位反序操作。步骤203之后,输出端302得到的2n个数据即位反序排序后的数据,可直接进行蝶形计算。多粒度并行存储器以下參照图5和图6具体描述本发明并行位反序装置中所包括的的多粒度并行存储器300的具体结构。为便于说明,各个数据位宽以存储单元为单位来度量,存储单元定义为存储器的编址单位,也是存储器可读写的最小数据位宽。描述过程中出现包含“位宽为W”的语句都需要理解成W个存储単元的比特位(bit)。如存储单元为8bit的字节类型时,读写端ロ位宽为4的存储器实际位宽为4X8 = 32bit。同吋,所有对象从0开始,从左至右编号。另外,如前所述,“粒度”是指地址连续的存储单元的个数。在以下的描述过程中,约定以下符号■ W 存储器读写端ロ位宽,必须为2的幂次方(即W为2的η次方,η为自然数);■ K :K = Iog2W, Κ+l表示存储器支持的读写粒度种类;■ k 存储器读写粒度參数,为自然数,且0≤k≤K,实际读写粒度为g = 2k ;_8堪=215,存储器读写粒度,1≤8≤1;
■ N:—个存储块的大小。本发明示意图中均假定W = 4,但本发明适用于W为2的幂次方的其它情况。如图5所示,多粒度并行存储器由W个存储块505和一个数据选通网络502构成。每个存储块505是由存储单元503构成的二维阵列,该阵列中的存储行504必须包含W个存储单元503,每个存储块一次可读写一个存储行504。数据选通网络502在逻辑上根据读写地址和读写粒度从W个存储块505中选择W个存储单元503作为读写对象。本发明的存储器支持多种读写粒度,在不同的读写粒度下,每个存储块505的起始地址各不相同。我们以参数k来表征不同的读写粒度,实际的读写粒度g = 2k。图6示出了 W = 4时,存储器在不同读写粒度下每个存储块605的编址。对于读写粒度g,每g个相邻的存储块605拼接成一个逻辑Bank 606,所有逻辑Bank 606的起始地址相同;逻辑Bank 606内的存储块605起始地址前后相接,每个逻辑Bank 606的寻址范围为0 gN-Ι,整个存储器的寻址范围为0 gN-1。存储器在进行读操作时,将读写地址和读写粒度发送给每个逻辑Bank 406,每个逻辑Bank 406读取g个存储单元并通过数据选通网络502传递给存储器读写端口 501,W/g个逻辑Bank 606所读取的数据按从左到右的顺序拼接成位宽为W的输出数据。存储器在进行写操作时,将存储器读写端口 501传递过来的数据拆分成g份,每份数据位宽为W/g,通过数据选通网络502将第i份数据发送给第i个逻辑Bank 406(0 ( i<g),同时将读写地址和读写粒度发送给每个逻辑Bank 606。每个逻辑Bank 406写入g个存储单元。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种并行位反序装置,包括并行位反序単元(314)、蝶形计算与控制单元(309)和存储器(311),所述蝶形计算与控制单元(309)通过数据总线(310)与所述存储器(311)相连,其特征在干所述并行位反序単元(314)用于对所述蝶形计算与控制单元(309)所计算的蝶形组数据进行位反序;所述并行位反序単元(314)包括地址反序逻辑(306),地址反序逻辑(306)与蝶形计算与控制单元(309)相连,用于对来自蝶形计算与控制单元(309)读取地址进行镜像反序和右移操作;所述并行位反序単元(314)还包括多粒度并行存储器(300)、地址选择器(308);所述多粒度并行存储器(300)与地址选择器(308)相连接,用于接收所述地址选择器 (308)输出的地址;所述该多粒度并行存储器(300)还与所述蝶形计算与控制单元(309)相连接,用于接收蝶形计算与控制单元(309)输出的写数据和读写粒度值。
2.如权利要求1所述的并行位反序装置,其特征在干,所述并行位反序単元(314)还包括数据反序网络(301),所述数据反序网络(301)与所述多粒度并行存储器(300)相连接,以接收来自所述多粒度并行存储器(300)的读数据。
3.如权利要求2所述的并行位反序装置,其特征在干,所述数据反序网络(301)用于蝶形组组内数据的位反序排列。
4.如权利要求2所述的并行位反序装置,其特征在干,所述地址选择器(308)分別与所述蝶形计算与控制单元(309)和所述地址反序逻辑 (306)相连接,用于选择输出到存储器(300)的读写地址。
5.一种并行位反序方法,用于并行位反序装置中,所述并行位反序装置包括并行位反序単元(314)和存储器(311),所述并行位反序単元(314)包括多粒度并行存储器(300), 其特征在干,所述方法包括如下步骤步骤000)、将数据从所述存储器(311)搬运至所述多粒度并行存储器(300),搬运后自然序列数据等分成2n个组,依次存放在多粒度并行存储器(300)的2"个存储块中,其中 η为正整数;步骤(201)保持数据组内索引不变,将数据组索引反序;步骤002)、保持数据组内索引不变,数据组索引也不变,将组内索引移至高位;步骤Ο03)、保持数据组索引不变,将组内索引反序。
6.如权利要求5所述的并行位反序方法,其特征在干,所述并行位反序装置还包括蝶形计算与控制单元(309),所述方法的步骤在所述蝶形计算与控制单元(309)的控制下进行。
7.如权利要求6所述的并行位反序方法,其特征在干,所述并行位反序単元(314)还包括地址反序逻辑(306)和地址选择器(308);蝶形计算与控制单元(309)通过移位指示线(305)和读取地址线(303)与地址反序逻辑(306)相连接。
8.如权利要求7所述的并行位反序方法,其特征在干,在步骤O01)中,移位指示线(305)的值设为A-n,其中A为读取地址线(303)的位宽, 同时将读写地址线(30;3)上的读取地址设为数据组索引,地址选择器(308)选择地址反序逻辑(306)的输出,作为存储器(300)的读写地址。
9 如权利要求8所述的并行位反序方法,其特征在干,在步骤O03)中,从多粒度并行存储器(300)中读取的数据经过数据反序网络(301) 的位反序排列后,输出到蝶形计算与控制单元(309)。
10.如权利要求9所述的并行位反序方法,其特征在干,在步骤(203)之后,所述数据反序网络(301)的输出端得到2"个数位反序排序后的数据,以直接进行蝶形计算。
全文摘要
本发明公开了一种并行位反序装置及方法,其中所述并行位反序装置包括并行位反序单元(314)、蝶形计算与控制单元(309)和存储器(311),所述蝶形计算与控制单元(309)通过数据总线(310)与所述存储器(311)相连,所述并行位反序单元(314)用于对所述蝶形计算与控制单元(309)所计算的蝶形组数据进行位反序。所述并行位反序单元(314)包括地址反序逻辑(306),地址反序逻辑(306)与蝶形计算与控制单元(309)相连,用于对来自蝶形计算与控制单元(309)读取地址进行镜像反序和右移操作。
文档编号G06F12/06GK102591796SQ20111045991
公开日2012年7月18日 申请日期2011年12月31日 优先权日2011年12月31日
发明者尹磊祖, 汪涛, 蒿杰, 谢少林 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1