CN114116012A - 基于混洗操作的fft码位反序算法向量化实现方法及装置 - Google Patents

基于混洗操作的fft码位反序算法向量化实现方法及装置 Download PDF

Info

Publication number
CN114116012A
CN114116012A CN202111417834.9A CN202111417834A CN114116012A CN 114116012 A CN114116012 A CN 114116012A CN 202111417834 A CN202111417834 A CN 202111417834A CN 114116012 A CN114116012 A CN 114116012A
Authority
CN
China
Prior art keywords
data
shuffle
vector
rule
vector data
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.)
Granted
Application number
CN202111417834.9A
Other languages
English (en)
Other versions
CN114116012B (zh
Inventor
王耀华
扈啸
郭阳
刘胜
文梅
陈照云
时洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202111417834.9A priority Critical patent/CN114116012B/zh
Publication of CN114116012A publication Critical patent/CN114116012A/zh
Application granted granted Critical
Publication of CN114116012B publication Critical patent/CN114116012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种基于混洗操作的FFT码位反序算法向量化实现方法及装置,本发明方法包括将需要进行“码位反序”处理的数据加载到向量处理部件VPU的p个向量处理单元VPE中各自的q个寄存器中形成向量数据;配置混洗模式存储器,生成多条混洗规则以指示当前位置的数据来源的位置;遍历选择每一条当前混洗模式:基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中各自q个寄存器中的向量数据进行混洗操作直至遍历完所有的混洗规则;最终将混洗操作得到的向量数据输出。本发明实现方法简单、实现效率高、功耗小且效果好,能够充分发挥向量处理部件的计算性能实现简单高效的FFT“码位反序”的计算。

Description

基于混洗操作的FFT码位反序算法向量化实现方法及装置
技术领域
本发明涉及信号处理领域,具体涉及一种基于混洗操作的FFT码位反序算法向量化实现方法及装置。
背景技术
傅里叶变换是时域-频域变换分析中最基本的方法之一,离散傅里叶变换(DFT:Discrete Fourier Transform)是许多数字信号处理方法的基础。FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform)。
FFT基本上可分为两类:时间抽取法和频率抽取法,最常见的是Coolly—Tukey提出的基2时间抽取和频率抽取算法。所谓抽选,就是把长序列分为短序列,通过短序列的DFT来实现长序列的DFT的过程。时间抽取(DIT:Decimation In Time)方法是在时域将长序列逐次按奇偶分解为两个短序列,由两个短序列的DIT逐次合成相应长序列的DIT,使得输入时域序列x[k]为倒序排列,输出的频域序列X[m]为顺序排列。
图1展示的是以8点的基2时间抽取算法流图,输入的时域序列顺序为:
(x[0],x[4],x[2],x[6],x[1],x[5],x[3],x[7]),
输出的频域序列顺序为:
(X[1],X[2],X[3],X[4],X[5],X[6],X[7])。
这里首先将8点的基2时间抽取分解为2个4点的DIT,再由2个4点的DIT分解为4个2点的DIT,最后由4个2点的DIT合成为8点的DIT。频率抽取(DIF:Decimation In Frequence)方法是在时域将长序列按前后顺序分解为两个短序列,由两个短序列的DIF逐次合成相应长序列的DIF,使得输入时域序列x[k]按自然顺序排列,输出的频域序列X[m]奇偶顺序排列。
图2展示的是以8点的基2频率抽取算法流图,输入的时域序列顺序为:
(x[1],x[2],x[3],x[4],x[5],x[6],x[7]),
输出的频域序列顺序为:
(X[0],X[4],X[2],X[6],X[1],X[5],X[3],X[7])。
这里首先将8点的基2DIF为2个4点的DIF,再由2个4点的DIT分解为4个2点的DIF,最后由4个2点的DIF合成为8点的DIF。
FFT算法结构具有原位计算和序数重排的特点,原位计算是当数据输入到存储器中以后,每一级运算的结果仍然储存在同一组存储器中,直到最后输出,中间无需其它存储器。序数重排是指对于FFT算法变换过程输入时域序列和输出频域序列存在一种倒序的规律,以基2时间抽取FFT算法为例,当原位运算完毕时,输出存储单元A(1)、A(2),…,A(8)位置中的结果正好是顺序存放着结果X(0),X(1),X(2),…,X(7),因此可直接按顺序输出。但这种原位运算的输入x(n)却不能按这种自然顺序存入存储单元中,而是按x(0),x(4),x(2),x(6),…,x(7)的顺序存入输入存储单元A(1)、A(2),…,A(8)的位置,这种顺序看起来相当杂乱,然而它也是有规律的。当用二进制表示这个顺序时,它正好是“码位倒置”的顺序。
图1中,以通式
Figure BDA0003375793550000021
表示旋转因子。旋转因子是指在Cooley-Tukey快速傅里叶变换算法的蝴蝶形运算中所乘上的复数常数,因此常数在复数平面上位于单位圆之上,对于被乘数在复数平面上面会有旋转的效果,故名为旋转因子。旋转因子
Figure BDA0003375793550000022
的表达式为
Figure BDA0003375793550000023
Figure BDA0003375793550000024
其中N为当前需要进行快速傅里叶变换的蝴蝶形运算中的总点数,kn为当前蝴蝶形运算中点数后半部分的位置信息,kn的范围为0~N/2。
向量处理部件是一种新颖的体系结构,能够在保持较低功耗的同时,具有强大的计算能力,适合加速傅里叶变换计算。如图3所示,向量处理部件通常包括标量处理部件(Scalar Processing Unit,SPU)和向量处理部件(Vector Processing Unit,VPU),SPU负责标量任务计算和流控,VPU负责向量计算,提供主要的计算能力,包括若干同构的向量处理单元(Vector Processing Element,VPE)以及混洗/归约部件构成,每个VPE包含MAC、ALU、BP等多个运算功能部件实现程序计算,包含若干个寄存器用于存储向量数据。SPU和VPU之间提供数据传输和交换机制,实现标、向量数据的共享和通信。向量数据访问单元支持向量数据的Load/Store,提供大容量的专用向量阵列存储器(Array Memory,AM)。混洗单元主要用于向量部件不同VPE之间的数据交互,可按半字或字粒度进行混洗。混洗模式存储器是由p个功能部件组成,每个功能部件里面的数据代表着新向量当前位置的数据来源序号,每次混洗可以对2p个数据进行位置重排,2p个数据编号的范围为0-(2p-1)。混洗地址寄存器中的数据对应混洗模式存储器中的相应模式,用于选择当前混洗模式。
在目前的实际应用当中,一般是通过设计软件算法或者是硬件电路结构实现变址运算来得到数据倒序排列。“雷德算法”是一种传统实现码位倒置的软件算法,具体方法是先把每一个需要倒序的元素用程序变量取出,计算出其倒序后的位置,按照倒序后的位置存回内存地址。硬件电路结构通过设计逻辑门组合实现按位取反的功能,通常是设计一个单独的外设器件或者是作为处理器的一部分嵌入到处理器芯片中。目前实现的现有技术存在的问题:(1)软件算法运算速度取决于逆序数的计算效率以及存取数据所需要花费的时间,对于数据量大的情况下不仅倒序算法执行效率低,而且需要占用处理器内存空间。(2)硬件电路结构实现功能单一,常作为专用的“码位倒序”处理器使用,不适合处理其他结构的算法,同时其实现需要一定的物理开销,成本高。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于混洗操作的FFT码位反序算法向量化实现方法及装置,本发明实现方法简单、实现效率高、功耗小且效果好,能够充分发挥向量处理部件的计算性能实现简单高效的FFT“码位反序”的计算。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于混洗操作的FFT码位反序算法向量化实现方法,包括:
1)将需要进行“码位反序”处理的数据加载到向量处理部件VPU的p个向量处理单元VPE中各自的x个寄存器中形成向量数据;
2)配置混洗模式存储器,往混洗模式存储器的第i个地址中写入包含p位数值的第i条混洗规则Di,第i条混洗规则Di中的每一位数值表示当前位置的数据来源的位置;
3)遍历选择一条混洗规则作为当前混洗模式;
4)基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中的x个寄存器中的向量数据进行混洗操作;
5)判断是否所有的混洗规则已经遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤4);否则,跳转执行下一步;
6)将混洗操作得到的向量数据存储到向量处理部件中阵列存储器AM的数据缓冲区中;
7)判断需要进行“码位反序”处理的数据是否遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤1);否则将存储到向量处理部件中阵列存储器AM的数据缓冲区中的向量数据作为最终结果输出,结束并退出。
可选地,步骤1)包括:
1.1)从需要进行“码位反序”处理的数据中遍历选择x*p个数据,其中p为向量处理部件的向量处理单元VPE个数;
1.2)针对遍历选择得到的x*p个数据,以p个数据为粒度分散加载到p个向量处理单元VPE的q个寄存器中的x个寄存器中(q为每个向量处理单元VPE的寄存器个数,x的数值范围为1~q,x*p<=q*p),使得每p个VPE的同一序号的寄存器中的数据组成一个向量数据,使得任意一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n个寄存器,且下一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n+1个寄存器。
可选地,步骤1.2)中以p个数据为粒度分散加载到p个向量处理单元VPE中的x个寄存器中时,还包括对于不足p的倍数的数据采取补零的方式处理的步骤。
可选地,向量处理部件VPU包含16个向量处理单元VPE,每一个向量处理单元VPE包含64个寄存器,且采用64点基2频域抽取方法的快速傅立叶变换,步骤1)中形成的向量包括Vec1~Vec4四个向量数据,且Vec1~Vec4四个向量数据分别为:
Vec1:X[0],X[32],X[16],X[48],X[8],X[40],X[24],X[56],X[4],X[36],X[20],X[52],X[12],X[44],X[28],X[60];
Vec2:X[2],X[34],X[18],X[50],X[10],X[42],X[26],X[54],X[6],X[38],X[22],X[54],X[14],X[46],X[30],X[62];
Vec3:X[1],X[33],X[17],X[49],X[9],X[41],X[25],X[57],X[5],X[37],X[21],X[53],X[13],X[45],X[29],X[61];
Vec4:X[3],X[35],X[19],X[51],X[11],X[43],X[27],X[55],X[7],X[39],X[23],X[55],X[15],X[47],X[31],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
可选地,步骤2)中往混洗模式存储器写入的混洗规则包括4条混洗规则D1~D4
混洗规则D1:(0,16,8,24,4,20,12,28,2,18,10,26,6,32,14,30);
混洗规则D2:(1,17,9,25,5,21,13,29,3,19,11,27,7,33,15,31);
混洗规则D3:(0,1,16,17,2,3,18,19,4,5,20,21,6,7,22,23);
混洗规则D4:(8,9,24,25,10,11,26,27,12,13,28,29,14,15,30,31);
所述4条混洗规则D1~D4中,数值为0~15表示当前位置的数据对应来源于第一个向量数据中的第1~16个数据,数值为16~31表示当前位置的数据对应来源于第二个向量数据中的第1~16个数据。
可选地,步骤4)中基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中的x个寄存器中的向量进行混洗操作时,若当前混洗模式对应的混洗规则为混洗规则D1,则基于混洗规则D1对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec5,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec7;若当前混洗模式对应的混洗规则为混洗规则D2,则基于混洗规则D2对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec6,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec8;若当前混洗模式对应的混洗规则为混洗规则D3,则基于混洗规则D3对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec9,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec10;若当前混洗模式对应的混洗规则为混洗规则D4,则基于混洗规则D4对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec11,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec12。
可选地,步骤4)中得到的向量数据Vec5~向量数据Vec12的表达式为:
Vec5:X[0],X[1],X[4],X[5],X[8],X[9],X[12],X[13],X[16],X[17],X[20],X[21],X[24],X[25],X[28],X[29];
Vec6:X[32],X[33],X[36],X[37],X[40],X[41],X[44],X[45],X[48],X[49],X[52],X[53],X[56],X[57],X[60],X[61];
Vec7:X[2],X[3],X[6],X[7],X[10],X[11],X[14],X[15],X[18],X[19],X[22],X[23],X[26],X[27],X[30],X[31];
Vec8:X[34],X[35],X[38],X[39],X[42],X[43],X[46],X[47],X[50],X[51],X[54],X[55],X[58],X[59],X[62],X[63];
Vec9:X[0],X[1],X[2],X[3],X[4],X[5],X[6],X[7],X[8],X[9],X[10],X[11],X[12],X[13],X[14],X[15];
Vec10:X[32],X[33],X[34],X[35],X[36],X[37],X[38],X[39],X[40],X[41],X[42],X[43],X[44],X[45],X[46],X[47];
Vec11:X[16],X[17],X[18],X[19],X[20],X[21],X[22],X[23],X[24],X[25],X[26],X[27],X[28],X[29],X[30],X[31];
Vec12:X[48],X[49],X[50],X[51],X[52],X[53],X[54],X[55],X[56],X[57],X[58],X[59],X[60],X[61],X[62],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
可选地,步骤6)中将混洗操作得到的向量数据存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中具体是指得到的向量数据Vec9~向量数据Vec12存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中。
此外,本发明还提供一种基于混洗操作的FFT码位反序算法向量化实现装置,包括相互连接的微处理器和存储器,所述微处理器中包含向量处理部件VPU,所述微处理器被编程或配置以执行前述基于混洗操作的FFT码位反序算法向量化实现方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于混洗操作的FFT码位反序算法向量化实现方法的计算机程序。
和现有技术相比,本发明主要具有下述优点:
1、本发明可以实现FFT码位反序算法向量化,不再需要编写复杂的软件程序实现数据位置的重新排列,可以节省数据拷贝所需要的时间和空间。
2、本发明不需要单独设计专用硬件电路,本发明中使用的混洗硬件还可以作为向量化操作中的数据交换,可以节约硬件资源。
3.、本发明能够支持时间抽取和频域抽取两种方式的码位反序计算,可以满足不同类型FFT算法的需要。
4、本发明使用向量化的处理方式可一次处理p个数据,可加快数据处理的速度。
附图说明
图1为现有技术的8点基2DIF的FFT流图。
图2为现有技术的8点基2DIT的FFT流图。
图3为现有技术的向量处理部件的结构示意图。
图4为本发明实施例方法的基本流程示意图。
图5为本发明实施例中“码位反序”的实现流程示例图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图4所示,本实施例基于混洗操作的FFT码位反序算法向量化实现方法包括:
1)将需要进行“码位反序”处理的数据加载到向量处理部件VPU的p个向量处理单元VPE中各自的x个寄存器中形成向量数据;
2)配置混洗模式存储器,往混洗模式存储器的第i个地址中写入包含p位数值的第i条混洗规则Di,第i条混洗规则Di中的每一位数值表示当前位置的数据来源的位置;
3)遍历选择一条混洗规则作为当前混洗模式;
4)基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中x个寄存器中的向量数据进行混洗操作;
5)判断是否所有的混洗规则已经遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤4);否则,跳转执行下一步;
6)将混洗操作得到的向量数据存储到向量处理部件中阵列存储器AM的数据缓冲区中;
7)判断需要进行“码位反序”处理的数据是否遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤1);否则将存储到向量处理部件中阵列存储器AM的数据缓冲区中的向量数据作为最终结果输出,结束并退出。
本实施例首先将需要进行位码置换的数据按照当前顺序连续存储在向量处理器的阵列存储器AM的数据缓冲区中。进行向量数据加载时分别按照处理前数据的当前顺序加载到p个VPE中。每一次向量操作是对p个VPE中相同的寄存器进行同样的操作,每个向量变量由p个数据组成,这p个数据来自于p个VPE中的序号相同的一个寄存器。具体地,本实施例中的步骤1)包括:
1.1)从需要进行“码位反序”处理的数据中遍历选择x*p个数据,其中p为向量处理部件的向量处理单元VPE个数;
1.2)针对遍历选择得到的x*p个数据,以p个数据为粒度分散加载到p个向量处理单元VPE中的q个寄存器的x个寄存器中(q为每个向量处理单元VPE的寄存器个数,x的数值范围为1~q,x*p<=q*p),使得每p个VPE的同一序号的寄存器中的数据组成一个向量数据,使得任意一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n个寄存器,且下一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n+1个寄存器。
本实施例中,步骤1.2)中以p个数据为粒度分散加载到p个向量处理单元VPE中的x个寄存器中时,还包括对于不足p的倍数的数据采取补零的方式处理的步骤。
需要说明的是,步骤2)配置混洗模式存储器时,混洗规则与输入数据的形式以及的FFT算法的抽取方式相关。为了对本实施例进行进一步的详细说明,本实施例中进行FFT计算的点数为64,当前使用的为基2频域抽取FFT算法,对FFT计算输出结果进行码位反序变换。
对于64点输出结果,其计算结果频域输出顺序为输入自然顺序的二进制码位倒序:(X[0],X[32],X[16],X[48],……,X[15],X[47],X[31],X[63]),需要将其顺序调整为自然顺序:(X[0],X[1],X[2],X[3],……,X[60],X[61],X[62],X[63])。第1-第p个数据存储在p个VPE的每个VPE上的第n个寄存器中,第(p+1)-第(2*p)个数据存储在p个VPE的每个VPE的第n+1个寄存器,第(64-p+1)-第64个数据存储在p个VPE的每个VPE的第64/p个寄存器中,每p个VPE的同一序号寄存器数据组成一个向量数据。每一次混洗可以对2p个数据进行数据的位置交换,设p=16,64个输出数据结果可以用4个向量表示,每个VPE用4个寄存器存储输出数据结果。如图5所示,本实施例中向量处理部件VPU包含16个向量处理单元VPE,且采用64点基2频域抽取方法的快速傅立叶变换,步骤1)中形成的向量包括Vec1~Vec4四个向量数据,且Vec1~Vec4四个向量数据分别为:
Vec1:X[0],X[32],X[16],X[48],X[8],X[40],X[24],X[56],X[4],X[36],X[20],X[52],X[12],X[44],X[28],X[60];
Vec2:X[2],X[34],X[18],X[50],X[10],X[42],X[26],X[54],X[6],X[38],X[22],X[54],X[14],X[46],X[30],X[62];
Vec3:X[1],X[33],X[17],X[49],X[9],X[41],X[25],X[57],X[5],X[37],X[21],X[53],X[13],X[45],X[29],X[61];
Vec4:X[3],X[35],X[19],X[51],X[11],X[43],X[27],X[55],X[7],X[39],X[23],X[55],X[15],X[47],X[31],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
混洗模式存储器中需要提前写入对2p个数据进行位置重新排布的p个规则数据。p个数据的数值大小范围为0~(2p-1),其中每一个数据的含义为新的向量对应位的位置信息。
步骤2)中配置混洗模式存储器时,根据需要进行的混洗操作计算出混洗模式数据,将混洗模式数据依次加载到混洗模式存储器中。每一个混洗模式数据的长度为p,每1位数据代表目的向量变量数据构成信息,每p位数据占据混洗模式存储器的一个地址单元。根据已有的混洗模式存储器中的混洗模式数据,通过配置混洗模式地址寄存器选择此次需要进行的混洗模式,混洗模式地址寄存器中的数据对应混洗模式存储器中相应地址单元存储的混洗模式数据。本实施例步骤2)中往混洗模式存储器写入的混洗规则包括4条混洗规则D1~D4
混洗规则D1:(0,16,8,24,4,20,12,28,2,18,10,26,6,32,14,30);
混洗规则D2:(1,17,9,25,5,21,13,29,3,19,11,27,7,33,15,31);
混洗规则D3:(0,1,16,17,2,3,18,19,4,5,20,21,6,7,22,23);
混洗规则D4:(8,9,24,25,10,11,26,27,12,13,28,29,14,15,30,31);
4条混洗规则D1~D4中,数值为0~15表示当前位置的数据对应来源于第一个向量数据中的第1~16个数据,数值为16~31表示当前位置的数据对应来源于第二个向量数据中的第1~16个数据。对于混洗规则D1而言操作向量数据Vec1和向量数据Vec3的时候,如果混洗规则D1中的数据如果是(0-15),代表着当前位置的数据来源于向量数据Vec1中的第(1-16)个数据;如果混洗规则D1中的数据如果是(16-31),代表着当前位置的数据来源于向量数据Vec3中的第(1-16)个数据。混洗规则D1的第1位是“0”,代表混洗之后新的向量Vec5第1位数据来自于向量Vec1的第1个数据X[0];混洗规则D1的第2位是“16”,代表混洗之后新的向量Vec5的第2位数据来自于向量Vec3的第1个数据X[1]。这里对向量Vec1、Vec3进行规则为混洗规则D1的模式混洗,首先选择混洗规则D1对应的混洗模式1,然后对向量Vec1、Vec3进行混洗规则D1对应的混洗模式1的混洗操作。
步骤3)用于遍历选择一条混洗规则作为当前混洗模式,即前文的混洗规则D1~混洗规则D4。进行数据混洗时,首先选择两个向量数据(原始输入的向量数据或者上一步的混洗操作得到),根据上述步骤3)中选择的p位混洗模式数据,确定出目的向量变量当前位置的数据编号,该数据编号对应以上两个向量变量的p个数据中的一个,将选中的数据存入对应的目的向量变量中。当p位数据全部遍历完成后完成以上两个向量变量2p个数据的位置交换和数据抽取得到顺序重排的目的向量。
本实施例中,混洗规则D1用于对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec5,混洗规则D1用于对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec7;混洗规则D2用于对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec6,混洗规则D2用于对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec8;混洗规则D3用于对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec9;混洗规则D3用于对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec10;混洗规则D4用于对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec11,混洗规则D4用于对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec12。步骤4)中基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中的x个寄存器中的向量进行混洗操作时,若当前混洗模式对应的混洗规则为混洗规则D1,则基于混洗规则D1对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec5,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec7;若当前混洗模式对应的混洗规则为混洗规则D2,则基于混洗规则D2对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec6,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec8;若当前混洗模式对应的混洗规则为混洗规则D3,则基于混洗规则D3对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec9,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec10;若当前混洗模式对应的混洗规则为混洗规则D4,则基于混洗规则D4对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec11,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec12。
如图5所示,本实施例步骤4)中得到的向量数据Vec5~向量数据Vec12的表达式为:
Vec5:X[0],X[1],X[4],X[5],X[8],X[9],X[12],X[13],X[16],X[17],X[20],X[21],X[24],X[25],X[28],X[29];
Vec6:X[32],X[33],X[36],X[37],X[40],X[41],X[44],X[45],X[48],X[49],X[52],X[53],X[56],X[57],X[60],X[61];
Vec7:X[2],X[3],X[6],X[7],X[10],X[11],X[14],X[15],X[18],X[19],X[22],X[23],X[26],X[27],X[30],X[31];
Vec8:X[34],X[35],X[38],X[39],X[42],X[43],X[46],X[47],X[50],X[51],X[54],X[55],X[58],X[59],X[62],X[63];
Vec9:X[0],X[1],X[2],X[3],X[4],X[5],X[6],X[7],X[8],X[9],X[10],X[11],X[12],X[13],X[14],X[15];
Vec10:X[32],X[33],X[34],X[35],X[36],X[37],X[38],X[39],X[40],X[41],X[42],X[43],X[44],X[45],X[46],X[47];
Vec11:X[16],X[17],X[18],X[19],X[20],X[21],X[22],X[23],X[24],X[25],X[26],X[27],X[28],X[29],X[30],X[31];
Vec12:X[48],X[49],X[50],X[51],X[52],X[53],X[54],X[55],X[56],X[57],X[58],X[59],X[60],X[61],X[62],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
本实施例中,步骤6)中将混洗操作得到的向量数据存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中具体是指得到的向量数据Vec9~向量数据Vec12存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中,即:将目的向量数据按照混洗之后的顺序存储到向量处理器的阵列存储器AM的数据缓冲区中。
此外,本实施例还提供一种基于混洗操作的FFT码位反序算法向量化实现装置,包括相互连接的微处理器和存储器,所述微处理器中包含向量处理部件VPU,所述微处理器被编程或配置以执行前述基于混洗操作的FFT码位反序算法向量化实现方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于混洗操作的FFT码位反序算法向量化实现方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,包括:
1)将需要进行“码位反序”处理的数据加载到向量处理部件VPU的p个向量处理单元VPE中各自的q个寄存器中形成向量数据;
2)配置混洗模式存储器,往混洗模式存储器的第i个地址中写入包含p位数值的第i条混洗规则Di,第i条混洗规则Di中的每一位数值表示当前位置的数据来源的位置;
3)遍历选择一条混洗规则作为当前混洗模式;
4)基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中的q个寄存器中的向量数据进行混洗操作;
5)判断是否所有的混洗规则已经遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤4);否则,跳转执行下一步;
6)将混洗操作得到的向量数据存储到向量处理部件中阵列存储器AM的数据缓冲区中;
7)判断需要进行“码位反序”处理的数据是否遍历选择完毕,如果尚未遍历选择完毕,则跳转执行步骤1);否则将存储到向量处理部件中阵列存储器AM的数据缓冲区中的向量数据作为最终结果输出,结束并退出。
2.根据权利要求1所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤1)包括:
1.1)从需要进行“码位反序”处理的数据中遍历选择x*p个数据,其中p为向量处理部件的向量处理单元VPE个数;
1.2)针对遍历选择得到的x*p个数据,以p个数据为粒度分散加载到p个向量处理单元VPE中的q个寄存器的x个寄存器中,其中q为每个向量处理单元VPE的寄存器个数,x的数值范围为1~q,x*p<=q*p,使得每p个VPE的同一序号的寄存器中的数据组成一个向量数据,使得任意一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n个寄存器,且下一次取出的p个数据并分别存储到向量处理部件的p个向量处理单元VPE中的第n+1个寄存器。
3.根据权利要求2所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤1.2)中以p个数据为粒度分散加载到p个向量处理单元VPE中的q个寄存器的x个寄存器中时,还包括对于不足p的倍数的数据采取补零的方式处理的步骤。
4.根据权利要求1所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,向量处理部件VPU包含16个向量处理单元VPE,每一个向量处理单元VPE包含64个寄存器,且采用64点基2频域抽取的快速傅立叶变换方法,步骤1)中形成的向量包括Vec1~Vec4四个向量数据,且Vec1~Vec4四个向量数据分别为:
Vec1:X[0],X[32],X[16],X[48],X[8],X[40],X[24],X[56],X[4],X[36],X[20],X[52],X[12],X[44],X[28],X[60];
Vec2:X[2],X[34],X[18],X[50],X[10],X[42],X[26],X[54],X[6],X[38],X[22],X[54],X[14],X[46],X[30],X[62];
Vec3:X[1],X[33],X[17],X[49],X[9],X[41],X[25],X[57],X[5],X[37],X[21],X[53],X[13],X[45],X[29],X[61];
Vec4:X[3],X[35],X[19],X[51],X[11],X[43],X[27],X[55],X[7],X[39],X[23],X[55],X[15],X[47],X[31],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
5.根据权利要求4所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤2)中往混洗模式存储器写入的混洗规则包括4条混洗规则D1~D4
混洗规则D1:(0,16,8,24,4,20,12,28,2,18,10,26,6,32,14,30);
混洗规则D2:(1,17,9,25,5,21,13,29,3,19,11,27,7,33,15,31);
混洗规则D3:(0,1,16,17,2,3,18,19,4,5,20,21,6,7,22,23);
混洗规则D4:(8,9,24,25,10,11,26,27,12,13,28,29,14,15,30,31);
所述4条混洗规则D1~D4中,数值为0~15表示当前位置的数据对应来源于第一个向量数据中的第1~16个数据,数值为16~31表示当前位置的数据对应来源于第二个向量数据中的第1~16个数据。
6.根据权利要求5所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤4)中基于当前混洗模式对应的混洗规则,对加载到向量处理部件VPU的p个向量处理单元VPE中的x个寄存器的的向量数据进行混洗操作时,若当前混洗模式对应的混洗规则为混洗规则D1,则基于混洗规则D1对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec5,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec7;若当前混洗模式对应的混洗规则为混洗规则D2,则基于混洗规则D2对向量数据Vec1、Vec3进行混洗操作得到向量数据Vec6,对向量数据Vec2、Vec4进行混洗操作得到向量数据Vec8;若当前混洗模式对应的混洗规则为混洗规则D3,则基于混洗规则D3对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec9,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec10;若当前混洗模式对应的混洗规则为混洗规则D4,则基于混洗规则D4对向量数据Vec5、Vec7进行混洗操作得到向量数据Vec11,对向量数据Vec6、Vec8进行混洗操作得到向量数据Vec12。
7.根据权利要求6所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤4)中得到的向量数据Vec5~向量数据Vec12的表达式为:
Vec5:X[0],X[1],X[4],X[5],X[8],X[9],X[12],X[13],X[16],X[17],X[20],X[21],X[24],X[25],X[28],X[29];
Vec6:X[32],X[33],X[36],X[37],X[40],X[41],X[44],X[45],X[48],X[49],X[52],X[53],X[56],X[57],X[60],X[61];
Vec7:X[2],X[3],X[6],X[7],X[10],X[11],X[14],X[15],X[18],X[19],X[22],X[23],X[26],X[27],X[30],X[31];
Vec8:X[34],X[35],X[38],X[39],X[42],X[43],X[46],X[47],X[50],X[51],X[54],X[55],X[58],X[59],X[62],X[63];
Vec9:X[0],X[1],X[2],X[3],X[4],X[5],X[6],X[7],X[8],X[9],X[10],X[11],X[12],X[13],X[14],X[15];
Vec10:X[32],X[33],X[34],X[35],X[36],X[37],X[38],X[39],X[40],X[41],X[42],X[43],X[44],X[45],X[46],X[47];
Vec11:X[16],X[17],X[18],X[19],X[20],X[21],X[22],X[23],X[24],X[25],X[26],X[27],X[28],X[29],X[30],X[31];
Vec12:X[48],X[49],X[50],X[51],X[52],X[53],X[54],X[55],X[56],X[57],X[58],X[59],X[60],X[61],X[62],X[63];
其中,X表示输入的时域数据x经过FFT变换得到的频域数据,X[0]~X[63]分别表示数据X的第1~64位。
8.根据权利要求7所述的基于混洗操作的FFT码位反序算法向量化实现方法,其特征在于,步骤6)中将混洗操作得到的向量数据存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中具体是指得到的向量数据Vec9~向量数据Vec12存储到向量处理部件VPU的阵列存储器AM的数据缓冲区中。
9.一种基于混洗操作的FFT码位反序算法向量化实现装置,包括相互连接的微处理器和存储器,所述微处理器中包含向量处理部件VPU,其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述基于混洗操作的FFT码位反序算法向量化实现方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~8中任意一项所述基于混洗操作的FFT码位反序算法向量化实现方法的计算机程序。
CN202111417834.9A 2021-11-25 2021-11-25 基于混洗操作的fft码位反序算法向量化实现方法及装置 Active CN114116012B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111417834.9A CN114116012B (zh) 2021-11-25 2021-11-25 基于混洗操作的fft码位反序算法向量化实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111417834.9A CN114116012B (zh) 2021-11-25 2021-11-25 基于混洗操作的fft码位反序算法向量化实现方法及装置

Publications (2)

Publication Number Publication Date
CN114116012A true CN114116012A (zh) 2022-03-01
CN114116012B CN114116012B (zh) 2022-11-11

Family

ID=80373802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111417834.9A Active CN114116012B (zh) 2021-11-25 2021-11-25 基于混洗操作的fft码位反序算法向量化实现方法及装置

Country Status (1)

Country Link
CN (1) CN114116012B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295084A (zh) * 2016-09-29 2017-01-04 北京华如科技股份有限公司 面向服务的可扩展组合式仿真引擎
CN113111479A (zh) * 2020-01-13 2021-07-13 深圳顺丰泰森控股(集团)有限公司 一种仓库管理系统的仿真方法、装置及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295084A (zh) * 2016-09-29 2017-01-04 北京华如科技股份有限公司 面向服务的可扩展组合式仿真引擎
CN113111479A (zh) * 2020-01-13 2021-07-13 深圳顺丰泰森控股(集团)有限公司 一种仓库管理系统的仿真方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王军等: "面向指挥信息流的组件式仿真模型框架", 《指挥控制与仿真》 *

Also Published As

Publication number Publication date
CN114116012B (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
EP3974959B1 (en) Hardware accelerated machine learning
US7640284B1 (en) Bit reversal methods for a parallel processor
Savage Extending the Hong-Kung model to memory hierarchies
US8566382B2 (en) Method and apparatus for improved calculation of multiple dimension fast fourier transforms
US20080140750A1 (en) Apparatus and method for performing rearrangement and arithmetic operations on data
EP2513818A1 (en) Information processing apparatus, control method thereof, program, and computer-readable storage medium
US20140330880A1 (en) Methods and devices for multi-granularity parallel fft butterfly computation
US9098449B2 (en) FFT accelerator
US9582474B2 (en) Method and apparatus for performing a FFT computation
JP2015503785A (ja) Fft/dftの逆順ソーティングシステム、方法およびその演算システム
Al Badawi et al. Faster number theoretic transform on graphics processors for ring learning with errors based cryptography
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置
GB2425860A (en) Multi-dimensional fast fourier transform
EP1076296A2 (en) Data storage for fast fourier transforms
EP3066583B1 (en) Fft device and method for performing a fast fourier transform
WO2013097235A1 (zh) 并行位反序装置和方法
JP2007004542A (ja) 半導体信号処理装置
Li et al. An area-efficient large integer NTT-multiplier using discrete twiddle factor approach
CN113890508A (zh) 一种批处理fir算法的硬件实现方法和硬件系统
CN115328440A (zh) 一种基于2d脉动阵列的通用稀疏矩阵乘法实现方法及装置
CN117407640A (zh) 一种矩阵计算方法及装置
KR20230078131A (ko) 반복 배열 ntt를 이용한 동형 암호 연산 장치 및 방법
Du Pont et al. Hardware Acceleration of the Prime-Factor and Rader NTT for BGV Fully Homomorphic Encryption
CN113569190B (zh) 一种快速傅立叶变换旋转因子计算系统和方法
Hanif et al. Memgans: Memory management for energy-efficient acceleration of complex computations in hardware architectures for generative adversarial networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant