CN117389622A - 向量寄存器数据处理方法、装置和电子设备 - Google Patents
向量寄存器数据处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN117389622A CN117389622A CN202311115465.7A CN202311115465A CN117389622A CN 117389622 A CN117389622 A CN 117389622A CN 202311115465 A CN202311115465 A CN 202311115465A CN 117389622 A CN117389622 A CN 117389622A
- Authority
- CN
- China
- Prior art keywords
- instruction
- vector register
- data
- complex multiplication
- butterfly
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims abstract description 82
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000000034 method Methods 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种向量寄存器数据处理方法、装置和电子设备,属于计算机技术领域。方法包括:基于第一加载指令对向量寄存器输入计算初始数据;重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对计算初始数据的复数乘法运算和蝶形运算。本发明通过复数乘法指令和蝶形运算指令的拓展指令构建超长指令字,通过一条超长指令字实现向量寄存器上计算初始数据的复数乘法运算和蝶形运算的并行执行,本发明提高快速傅里叶变换的计算效率,实现快速傅里叶变换加速。
Description
技术领域
本发明涉及计算机技术领域,具体地涉及一种向量寄存器数据处理方法、一种向量寄存器数据处理装置和一种电子设备。
背景技术
FFT(fast Fourier transform,快速傅立叶变换)算法在数字信号处理中具有重要的作用,特别是在物联网的应用中,传感器(如摄像头,毫米波雷达等)收集到的模拟信号经过ADC(Analog-to-Digital Converter,模数转换器)转换为数字信号后通常需要进行快速傅里叶变换将时域信号转换到频域以便进行特征提取。
现有的快速傅立叶变换加速方法中提供一种第一形式复数乘法指令和第二形式复数乘法指令以在包含多个数据元素的第一操作数向量和第二操作数向量上运算,这些多个数据元素包括表示复数的实部的至少一个实数据元素和表示该复数的虚部的至少一个虚元素。第一形式指令和第二形式指令中的一者指向目的地向量的至少一个实元素而另一者指向至少一个虚元素。通过执行每个指令的一个,形式(a+ib)*(c+id)的复数乘法可使用相对少指令来计算,并利用仅两个向量寄存器读取端口,实现DSP(DigitalSignalProcessing,数字信号处理)算法。但是该方法在实现复数乘法时使用两条指令,效率较低,导致快速傅立叶变换加速的效果不佳。
发明内容
本发明实施例的目的是提供一种向量寄存器数据处理方法、一种向量寄存器数据处理装置和一种电子设备,用以解决现有的快速傅立叶变换加速方法在实现复数乘法时使用两条指令,效率较低,导致快速傅立叶变换加速的效果不佳的缺陷。
为了实现上述目的,本发明实施例提供一种向量寄存器数据处理方法,包括:
基于第一加载指令对向量寄存器输入计算初始数据;
重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
可选的,所述基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,包括:
基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
所述计算初始数据包括输入数据和旋转因子;所述第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;所述第三加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;所述存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
可选的,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
可选的,在每一次执行基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算之前,还包括:
基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换;
所述序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
可选的,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
可选的,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
另一方面,本发明实施例还提供一种向量寄存器数据处理装置,包括:
数据加载模块,用于基于第一加载指令对向量寄存器输入计算初始数据;
快速傅里叶变换运算模块,用于重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
可选的,所述基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,包括:基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
所述计算初始数据包括输入数据和旋转因子;所述第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;所述第三加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;所述存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
可选的,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
可选的,所述向量寄存器数据处理装置,还包括:
顺序交换模块,用于基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换;
所述序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
可选的,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
可选的,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
另一方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述向量寄存器数据处理方法。
另一方面,本发明还提供一种芯片,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述向量寄存器数据处理方法。
另一方面,本发明还提供一种机器可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述向量寄存器数据处理方法。
另一方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述向量寄存器数据处理方法。
通过上述技术方案,相比现有方法在实现复数乘法时使用两条指令,本发明基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对计算初始数据的复数乘法运算和蝶形运算,即通过复数乘法指令和蝶形运算指令的拓展指令构建超长指令字,通过一条超长指令字实现向量寄存器上计算初始数据的复数乘法运算和蝶形运算的并行执行,本发明提高快速傅里叶变换的计算效率,实现快速傅里叶变换加速。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明提供的向量寄存器数据处理方法的流程示意图之一;
图2是本发明提供的复数乘法指令的结构示意图;
图3是本发明提供的超长指令字的结构示意图;
图4是本发明提供的蝶形运算指令的结构示意图;
图5是本发明提供的向量寄存器数据处理方法的流程示意图之二;
图6是本发明提供的序列交换指令的结构示意图;
图7是本发明提供的向量寄存器数据处理装置的结构示意图;
图8是本发明提供的电子设备的结构示意图;
图9是本发明提供的电子设备的处理器的电路原理图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
方法实施例
请参照图1,本发明实施例提供一种向量寄存器数据处理方法,包括:
步骤100、基于第一加载指令对向量寄存器输入计算初始数据。
其中,第一加载指令可以是立即数加载指令等加载指令。电子设备利用立即数加载指令从随机存取存储器(Random Access Memory,RAM)中提取计算初始数据,并将计算初始数据输入向量寄存器。
本发明实施例中通过向量寄存器存储用于进行快速傅里叶变换的计算初始数据。其中,向量寄存器根据实际需要可选择各种长度的寄存器。例如可以选择64位,128位的向量寄存器。计算初始数据包括输入数据和旋转因子。
步骤300、重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算。
其中,由于RISC-V是基于精简指令集原则的开源指令集架构的特性,本发明实施例中可基于RISC-V拓展复数乘法指令和蝶形运算指令。
复数乘法指令功能是将旋转因子与通用寄存器的rv1中对应的数据复数相乘将结果写回通用寄存器的rvd中。根据快速傅里叶变换的运算方式和向量寄存器的数据存储方式,可设计不同复数乘法运算形式。本发明实施例可通过位于通用寄存器上的第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式。
例如,一个实施例中可通过32位的通用寄存器中的[14:12](即第12位到14位)的二进制编码来表示向量寄存器上不同位置的计算初始数据之间的复数乘法运算形式。例如,在一个实施例中,请参照图2,可通过通用寄存器中的第12位到14位的三种编码100,101,110表示不同的复数乘法运算形式。如图2所示,当第一编码为100时,表征旋转因子与向量寄存器的data3的向量元素位置的输入数据进行复数相乘,同时表征旋转因子/>与向量寄存器的data1的向量元素位置的输入数据进行复数相乘;当第一编码为101时,表征旋转因子/>与向量寄存器的data2的向量元素位置的输入数据进行复数相乘,同时表征旋转因子/>与向量寄存器的data3的向量元素位置的输入数据进行复数相乘;当第一编码为110时,表征旋转因子/>与向量寄存器的data0的向量元素位置的输入数据进行复数相乘,同时表征旋转因子/>与向量寄存器的data1的向量元素位置的输入数据进行复数相乘,同时表征旋转因子/>与向量寄存器的data2的向量元素位置的输入数据进行复数相乘,同时表征旋转因子/>与向量寄存器的data3的向量元素位置的输入数据进行复数相乘。需要说明的是,通过第12位到14位的三位二进制编码最多可表征8种不同的指定位置的计算初始数据之间的复数乘法运算形式。在其它实施例中,可根据实际需要设置不同的编码,对应不同的复数乘法运算形式。
复数乘法指令是蝶形运算前的一步操作,和蝶形加法运算配合可以构成快速傅里叶变换的蝶形运算的功能。蝶形加法指令的功能是在复数相乘之后,将对应的数据进行交叉加减法的计算。在I-type的译码模式下,源操作数只有通用寄存器的rv1,此时需要将通用寄存器的rv1的数据进行运算,写回通用寄存器的rvd。根据快速傅里叶变换的算法需要,蝶形运算指令可通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。例如,一个实施例中可通过32位的通用寄存器中的[27:25](即第25位到27位)的二进制编码来表示向量寄存器上不同位置的计算初始数据之间的蝶形运算形式。需要说明,通过第25位到27位的三位二进制编码最多可表征8种不同的指定位置的计算初始数据之间的蝶形运算形式。
本发明基于复数乘法指令和蝶形运算指令组成的超长指令字,并行执行对计算初始数据的复数乘法运算和蝶形运算。即超长指令字的复数乘法指令和蝶形运算指令中的每一条指令并行执行取指、译码、执行过程。通过超长指令字实现对向量寄存器的计算初始数据的复数乘法指令和蝶形运算指令的并行执行,从而通过一个指令实现向量寄存器上计算初始数据的复数乘法运算和蝶形运算的并行执行,实现提高快速傅里叶变换计算速度,提高计算效率。
相比现有方法在实现复数乘法时使用两条指令,本发明基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对计算初始数据的复数乘法运算和蝶形运算,即通过复数乘法指令和蝶形运算指令的拓展指令构建超长指令字,通过一条超长指令字实现向量寄存器上计算初始数据的复数乘法运算和蝶形运算的并行执行,本发明提高快速傅里叶变换的计算效率,实现快速傅里叶变换加速。
在本发明实施例的其他方面,请参照图3,步骤300中基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,具体包括:基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算。
进一步的,在一个实施例中,可在嵌入式RISV-V标准流水线的基础上构建5个执行槽(5个指令可以并行执行)的超长指令字。请参照图3,超长指令字可以是第二加载指令(记为load A,简称LDA)、第三加载指令(记为load C,简称LDC)、复数乘法指令(记为multiply,简称MPY)、蝶形运算指令(记为butterfly,简称BFLY)以及存储指令(记为store B,简称STB)组成的超长指令字。其中,第二加载指令、第三加载指令和存储指令用于访问内部RAM存储。并且第二加载指令和第三加载指令中包括next_bfly寻址模式(bly的每级地址计算)指令,用于计算下一个读的数据地址。
其中,计算初始数据包括输入数据和旋转因子。第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;第二加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
在第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字执行时,在一条指令中同时执行如下几个操作:
1.第二加载指令LDA将输入数据从随机存取存储器输入至向量寄存器,同时计算下一个读的数据地址(next_bfly寻址模式指令)。
2.第三加载指令LDC将旋转因子从随机存取存储器输入至向量寄存器,同时计算下一个读的旋转因子地址(next_bfly寻址模式指令)。
3.复数乘法指令MPY对第二加载指令LDA和第三加载指令LDC输入到向量寄存器里的内容进行复数运算。
4.蝶形运算指令BFLY对复数运算结果进行蝶形运算。
5.存储指令STB把蝶形运算的结果存储到对应的随机存取存储器中。
需要说明的是,除了超长指令字并行的使用cpu的运算单元外,还增加使用了地址自动运算,省去了每次地址运算的指令,使得快速傅里叶变化不能可以在规整的指令块内循环。在一个实施例中,五个指令组成的超长指令字执行流程如表1所示:
表1
需要说明的是,第1-4指令和第6-9指令分别是循环准备和循环退出时执行一次,第5条指令即本发明实施例的超长指令字在一次快速傅里叶变换运算时循环执行,直到算完为止。
通过构建基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,并行执行第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令的五个指令,即超长指令字的第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令中的每一条指令并行执行取指、译码、执行过程。从而进一步指令增强,通过使用超长指令字使得五个指令并行执行,进一步提高快速傅里叶变换的计算效率。
在本发明实施例的其他方面,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
本发明实施例的第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成流水线。请参照表1,在指令5循环执行之前以及之后,第1-4指令是循环准备时执行一次,第6-9指令是循环退出时执行一次。可见第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令中的任一个指令槽均可添加nop指令,通过设置超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令,以增加超长指令字执行的灵活性。
在本发明实施例的其他方面,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
具体的,可通过通用寄存器中的第25位到27位的两种编码000,001表示不同的蝶形运算形式。如图4所示,当第二编码为000时,表征向量寄存器上相邻向量元素的数据之间的蝶形运算,例如当第二编码为000时,表征向量寄存器的data3的向量元素位置的数据,与向量寄存器的data2的向量元素位置的数据进行蝶形运算,形成新的数据new data3和newdata2放置在向量寄存器。同时,表征向量寄存器的data1的向量元素位置的数据,与向量寄存器的data0的向量元素位置的数据进行蝶形运算,形成新的数据newdata1和new data0放置在向量寄存器。
请参照图4,当第二编码为001时,表征向量寄存器上间隔一个向量元素的数据之间的蝶形运算,例如当第二编码为001时,表征向量寄存器的data3的向量元素位置的数据,与向量寄存器的data1的向量元素位置的数据进行蝶形运算,形成新的数据new data3和new data1放置在向量寄存器。同时,表征向量寄存器的data2的向量元素位置的数据,与向量寄存器的data0的向量元素位置的数据进行蝶形运算,形成新的数据new data2和newdata0放置在向量寄存器。需要说明的是,当需要进行更高层次的蝶形运算时,可进一步丰富第二编码的类型(如增加010、011等),实现第二编码表征向量寄存器上间隔多个向量元素的数据之间的蝶形运算。
在本发明实施例的其他方面,请参照图5,在每一次执行步骤300、基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算之前,还包括:
步骤200、基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换。
由于快速傅里叶变换的计算的需要,通过序列交换指令将输入的向量寄存器上的计算初始数据交换顺序,使得输出的数据是指定顺序的。序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
本发明实施例可将步骤100至步骤300通过内联汇编的形式编写成C语言函数,通过交叉编译的方式生成RISC-V处理器可以运行的可执行文件,即可利用快速傅里叶变换扩展的RISC-V处理器核进行快速傅里叶变换的运算。
进一步的,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
具体的,可通过通用寄存器中的第20位到24位的两种编码00000,00001表示不同的顺序交换形式。如图6所示,当第三编码为00000时,表征向量寄存器上相邻向量元素的数据之间的顺序交换,例如当第三编码为00000时,表征向量寄存器的data3的向量元素位置的数据,与向量寄存器的data2的向量元素位置的数据进行顺序交换,同时表征向量寄存器的data1的向量元素位置的数据,与向量寄存器的data0的向量元素位置的数据进行顺序交换;当第三编码为00001时,表征向量寄存器的data3的向量元素位置的数据,与向量寄存器的data1的向量元素位置的数据进行顺序交换,同时表征向量寄存器的data2的向量元素位置的数据,与向量寄存器的data0的向量元素位置的数据进行顺序交换。需要说明的是,在其他实施例中,可进一步丰富第三编码的类型(如增加00010、00011等),实现第三编码表征向量寄存器上间隔多个向量元素的计算初始数据之间的顺序交换。
装置实施例
请参照图7,另一方面,本发明实施例还提供一种向量寄存器数据处理装置,包括:
数据加载模块701,用于基于第一加载指令对向量寄存器输入计算初始数据;
快速傅里叶变换运算模块702,用于重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
本发明实施例的向量寄存器数据处理装置,相比现有方法在实现复数乘法时使用两条指令,本发明基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对计算初始数据的复数乘法运算和蝶形运算,即通过复数乘法指令和蝶形运算指令的拓展指令构建超长指令字,通过一条超长指令字实现向量寄存器上计算初始数据的复数乘法运算和蝶形运算的并行执行,本发明提高快速傅里叶变换的计算效率,实现快速傅里叶变换加速。
可选的,所述基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,包括:基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
所述计算初始数据包括输入数据和旋转因子;所述第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;所述第三加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;所述存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
可选的,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
可选的,所述向量寄存器数据处理装置,还包括:
顺序交换模块,用于基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换;
所述序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
可选的,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
可选的,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
所述向量寄存器数据处理装置包括处理器和存储器,上述数据加载模块701和快速傅里叶变换运算模块702等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行向量寄存器数据处理方法,该方法包括:基于第一加载指令对向量寄存器输入计算初始数据;重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
请参照图9,在一个实施例中,处理器中的FFT计算单元可实现上述向量寄存器数据处理方法,FFT计算单元作为一个独立的模块放在流水线的执行级,进行本发明实施例的扩展指令(即复数乘法指令、蝶形运算指令以及序列交换指令)的执行。具体的,FFT计算单元可以有二个乘法器,用于并行执行复数乘法指令;四个加法器,用于蝶形加法指令的计算。处理器并在译码级识别本发明实施例的扩展指令,并将FFT计算单元的结果进行数据的存取。
另一方面,本发明还提供一种芯片,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述向量寄存器数据处理方法。该方法包括:基于第一加载指令对向量寄存器输入计算初始数据;重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在机器可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行向量寄存器数据处理方法,该方法包括:基于第一加载指令对向量寄存器输入计算初始数据;重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
又一方面,本发明还提供一种机器可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行向量寄存器数据处理方法,该方法包括:基于第一加载指令对向量寄存器输入计算初始数据;重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1.一种向量寄存器数据处理方法,其特征在于,包括:
基于第一加载指令对向量寄存器输入计算初始数据;
重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
2.根据权利要求1所述的向量寄存器数据处理方法,其特征在于,所述基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,包括:
基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
所述计算初始数据包括输入数据和旋转因子;所述第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;所述第三加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;所述存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
3.根据权利要求2所述的向量寄存器数据处理方法,其特征在于,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
4.根据权利要求1所述的向量寄存器数据处理方法,其特征在于,在每一次执行基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算之前,还包括:
基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换;
所述序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
5.根据权利要求4所述的向量寄存器数据处理方法,其特征在于,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
6.根据权利要求2所述的向量寄存器数据处理方法,其特征在于,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
7.一种向量寄存器数据处理装置,其特征在于,包括:
数据加载模块,用于基于第一加载指令对向量寄存器输入计算初始数据;
快速傅里叶变换运算模块,用于重复执行以下步骤直至完成快速傅里叶变换运算:基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
其中,所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的计算初始数据之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的计算初始数据之间的蝶形运算形式。
8.根据权利要求7所述的向量寄存器数据处理装置,其特征在于,所述基于复数乘法指令和蝶形运算指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算,包括:基于第二加载指令、第三加载指令、复数乘法指令、蝶形运算指令以及存储指令组成的超长指令字,执行对所述计算初始数据的复数乘法运算和蝶形运算;
所述计算初始数据包括输入数据和旋转因子;所述第二加载指令表征将所述输入数据从随机存取存储器输入至所述向量寄存器;所述第三加载指令表征将所述旋转因子从随机存取存储器输入至所述向量寄存器;所述复数乘法指令通过第一编码,表征向量寄存器上指定位置的所述输入数据和所述旋转因子之间的复数乘法运算形式;所述蝶形运算指令通过第二编码,表征向量寄存器上指定位置的数据的蝶形运算形式;所述存储指令表征将所述蝶形运算指令的计算结果存储至所述随机存取存储器。
9.根据权利要求8所述的向量寄存器数据处理装置,其特征在于,所述向量寄存器上指定位置的数据的蝶形运算形式包括:向量寄存器上相邻向量元素的数据之间的蝶形运算,或者向量寄存器上间隔一个或多个向量元素的数据之间的蝶形运算。
10.根据权利要求7所述的向量寄存器数据处理装置,其特征在于,所述向量寄存器数据处理装置,还包括:
顺序交换模块,用于基于序列交换指令对向量寄存器上的计算初始数据,执行顺序交换;
所述序列交换指令通过第三编码,表征向量寄存器上指定位置的计算初始数据之间的顺序交换形式。
11.根据权利要求10所述的向量寄存器数据处理装置,其特征在于,所述向量寄存器上指定位置的计算初始数据之间的顺序交换形式包括:向量寄存器上相邻向量元素的计算初始数据之间的顺序交换,或者向量寄存器上间隔一个或多个向量元素的计算初始数据之间的顺序交换。
12.根据权利要求8所述的向量寄存器数据处理装置,其特征在于,在所述超长指令字处于非流水线流动状态情况下,所述第二加载指令、所述第三加载指令、所述复数乘法指令、所述蝶形运算指令以及所述存储指令中的任一指令包括空指令。
13.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6中任一项所述的向量寄存器数据处理方法。
14.一种机器可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的向量寄存器数据处理方法。
15.一种芯片,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6中任一项所述的向量寄存器数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311115465.7A CN117389622A (zh) | 2023-08-31 | 2023-08-31 | 向量寄存器数据处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311115465.7A CN117389622A (zh) | 2023-08-31 | 2023-08-31 | 向量寄存器数据处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117389622A true CN117389622A (zh) | 2024-01-12 |
Family
ID=89470925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311115465.7A Pending CN117389622A (zh) | 2023-08-31 | 2023-08-31 | 向量寄存器数据处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117389622A (zh) |
-
2023
- 2023-08-31 CN CN202311115465.7A patent/CN117389622A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
US8443170B2 (en) | Apparatus and method for performing SIMD multiply-accumulate operations | |
US6467035B2 (en) | System and method for performing table look-ups using a multiple data fetch architecture | |
US7836116B1 (en) | Fast fourier transforms and related transforms using cooperative thread arrays | |
US7640284B1 (en) | Bit reversal methods for a parallel processor | |
US20200210516A1 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
CN107077334A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
CN113537481A (zh) | 用于执行lstm神经网络运算的装置和运算方法 | |
CN111027690B (zh) | 执行确定性推理的组合处理装置、芯片和方法 | |
US20110302394A1 (en) | System and method for processing regular expressions using simd and parallel streams | |
CN104133748B (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
CN112650471A (zh) | 用于处理掩蔽数据的处理器和方法 | |
JPH06242953A (ja) | データ・プロセッサ | |
CN111459546B (zh) | 一种实现操作数位宽可变的装置及方法 | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
CN117389622A (zh) | 向量寄存器数据处理方法、装置和电子设备 | |
CN111158757A (zh) | 并行存取装置和方法以及芯片 | |
JP2007004542A (ja) | 半導体信号処理装置 | |
CN109478199B (zh) | 分段线性逼近的系统及方法 | |
CN114237705A (zh) | 验证方法、装置、电子设备和计算机可读存储介质 | |
CN116382782A (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
US11669489B2 (en) | Sparse systolic array design | |
CN114116012B (zh) | 基于混洗操作的fft码位反序算法向量化实现方法及装置 | |
US7788471B2 (en) | Data processor and methods thereof | |
Takala | General-purpose DSP processors |
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 |