CN102012802B - 面向向量处理器数据交换的方法及装置 - Google Patents
面向向量处理器数据交换的方法及装置 Download PDFInfo
- Publication number
- CN102012802B CN102012802B CN 201010559387 CN201010559387A CN102012802B CN 102012802 B CN102012802 B CN 102012802B CN 201010559387 CN201010559387 CN 201010559387 CN 201010559387 A CN201010559387 A CN 201010559387A CN 102012802 B CN102012802 B CN 102012802B
- Authority
- CN
- China
- Prior art keywords
- content
- local register
- vector
- mode
- instruction
- 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
Images
Abstract
一种面向向量处理器数据交换的方法及装置,该方法为:通过向量指令EXC完成两个向量寄存器之间指定部分内容的互相交换,向量指令EXC的指令格式为EXC mode VRiVRj,VRi和VRj用以指定要进行数据交换的两个向量寄存器,mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,一般为2的整数次幂。该装置包括译码逻辑单元、两路选择器以及时钟信号单元。本发明具有原理简单、操作方便、能够快速完成特殊数据交换、缩短整个算法的运算时间、提高执行效率、可满足运算密集型应用需求等优点。
Description
技术领域
本发明主要涉及到向量处理器的设计领域,特指一种面向向量处理器数据交换的方法及装置。
背景技术
随着4G无线通信技术和高清视频图像处理技术的发展,向量处理器得到了广泛的应用。参见图1,为向量处理器的一般结构示意图。向量处理器一般由N个处理单元PE组成,每个PE包含数个功能单元,一般包括移位部件、ALU部件、乘法部件等,这些功能部件可以读写一组局部寄存器,每个PE包行一组局部寄存器,所有PE的同一编号的局部寄存器寄存器在逻辑上又组成一个向量寄存器。例如图示PE1—PEN的R0寄存器在逻辑上组成了向量寄存器VR0,每个PE所对应的R0称为向量寄存器的一个元素。向量处理器采用SIMD的方式,在同一条向量指令的控制下,N个PE同时对各自的局部寄存器进行相同操作,用以开发应用程序的数据级并行性。
无线通信和视频图像处理算法中包含着大量高密集运算的子任务,如FFT/IFFT运算、矩阵求逆运算等。这些运算过程在映射到向量处理器上时,往往需要充分利用所有可并行的运算资源,以便于使其满足在功耗、实时行等方面的要求。然而,由于算法本身的特性和向量数据通路的限制,算法在执行过程中不同的处理单元之间不可避免地要进行数据交换。例如在基2FFT/IFFT算法中,本级蝶形运算所需要的数据并非和前一级蝶形运算的结果顺序对应。因此,在进行本级蝶形运算之前就需要将前一级的结果交换到需要它的PE中,以方便本级蝶形运算。参见图2,为16点基2FFT算法的4级蝶形运算示意图。图中所示x0-x15为位反序输入,X0-X15为顺序输出。图中每一级运算输入点之间的交叉箭头指示了要进行蝶形运算的一对输入点,在每一级蝶形运算中,每个点只参加一次蝶形运算。对于N点FFT共需要log2N级蝶形运算,每一级共进行N/2次蝶形运算,产生N个结果被下一级蝶形运算使用。每一级蝶形运算所使用的一对输入点之间的距离都是前一级的2倍,如第一级是每两个连续的输入点之间做蝶形运算,即输入点之间的距离为1,第二级每个蝶形运算的两个输入点之间的距离为2,第三级每个蝶形运算的两个输入点之间的距离为4,依次类推,直至第log2N级蝶形运算做完之后得到顺序输出的结果。
实现PE间的数据交换通常有两种途径:1.利用共享向量存储器;2.使用数据混洗单元。这两种方法在实现一般的数据交换时,效率是相当的。在实际应用中如FFT/IFFT、矩阵求逆等又往往大量需要如下这种特殊的数据交换方式:在数据交换完成后,要保证每个向量寄存器最终的内容既有一部分保持不变,又有一部分来自于其它向量寄存器。要用传统的方法实现上述的特殊数据交换,第一种方法需要向量处理器支持屏蔽字技术,所谓屏蔽字技术是指通过配置屏蔽字寄存器来控制某些PE不执行当前指令,在此基础上,还需要数条配置屏蔽字寄存器的指令和两条访问共享向量存储器的指令;第二种方法则需要多条混洗指令。这两种方法都增加了每次交换的时间和所使用的指令条数。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、操作方便、能够快速完成特殊数据交换、缩短整个算法的运算时间、提高执行效率的面向向量处理器数据交换的方法及装置,以满足运算密集型应用的需求。
为解决上述技术问题,本发明采用以下技术方案:
一种面向向量处理器数据交换的方法,其特征在于:通过向量指令EXC完成两个向量寄存器之间指定部分内容的互相交换,所述向量指令EXC的指令格式为EXC mode VRi VRj,所述VRi和VRj用以指定要进行数据交换的两个向量寄存器,所述mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,所述mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,为2的整数次幂。
作为本发明的进一步改进:
当mode的值为1时,表明该指令要执行的操作为将PEk中的局部寄存器Ri中的内容和PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2、4…N;当mode的值为2时,表明该指令要执行的操作为将PEk:PEk+1中的局部寄存器Ri中的内容和PEk-2:PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中K=3、7…N-1;当mode的值为s时,表明该指令要执行的操作为将中的局部寄存器Ri中的内容和 中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
本发明进一步提供一种面向向量处理器数据交换的装置,其特征在于:包括译码逻辑单元、两路选择器以及时钟信号单元,所述译码逻辑单元根据向量指令EXC的mode域进行译码,每次译码后产生N/2个有效的使能信号,每个使能信号分别连接至两个两路选择器的使能端;所述两路选择器的输入来自将要发生数据交换的两个局部寄存器的读端口;当使能信号有效时,两路选择器控制两个局部寄存器的内容各自写回到交换目的地所对应的局部寄存器写端口,当时钟信号有效时,完成两个局部寄存器内容的相互交换。
所述向量指令EXC的指令格式为EXC mode VRi VRj,所述VRi和VRj用以指定要进行数据交换的两个向量寄存器,所述mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,所述mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,为2的整数次幂。
当mode的值为1时,表明该指令要执行的操作为将PEk中的局部寄存器Ri中的内容和PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2、4…N;当mode的值为2时,表明该指令要执行的操作为将PEk:PEk+1中的局部寄存器Ri中的内容和PEk-2:PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中K=3、7…N-1;当mode的值为s时,表明该指令要执行的操作为将中的局部寄存器Ri中的内容和 中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
与现有技术相比,本发明的优点在于:本发明面向向量处理器数据交换的方法及装置,可支持在向量寄存器间进行特殊方式数据交换,并设计完成该功能的相应指令。通过本方法和装置能够减小FFT/IFFT和矩阵求逆等算法在向量处理器中的执行时间,有效压缩了代码长度。采用本发明设计的指令比传统的混洗单元实现代价低,在实现相同功能的情况下,降低了功耗。另外,本发明的装置,结构简单紧凑、成本低廉、操作十分方便、可靠性好。
附图说明
图1是向量处理器的一般结构示意图;
图2是16点FFT算法的4级蝶形运算示意图;
图3是本发明方法的执行流程示意图;
图4是本发明装置的结构原理示意图;
图5是本发明在8数据通路的向量处理器上的执行过程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图3所示,为本发明面向向量处理器数据交换的方法执行时的流程示意图,本发明通过向量指令EXC完成两个向量寄存器(由2N个局部寄存器组成)之间指定部分内容的互相交换,每次发生数据交换的局部寄存器有N个,即N/2对局部寄存器进行数据交换,内容保持不变的局部寄存器也为N个。向量指令EXC的指令格式为EXC mode VRi VRj,VRi和VRj用以指定要进行数据交换的两个向量寄存器,mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,一般为2的整数次幂。即,执行时,首先根据指令EXC的操作数域VRi和VRj向寄存器发送读请求,将得到的数据记为VRi’和VRj’,然后根据mode域的数值对VRi’和VRj’进行部分数据互换,最后将得到的数值VRi’和VRj’重新写回到寄存器VRi和VRj中。
当mode的值为1时,表明该指令要执行的操作为将PEk中的局部寄存器Ri中的内容和PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2、4…N;当mode的值为2时,表明该指令要执行的操作为将PEk:PEk+1中的局部寄存器Ri中的内容和PEk-2:PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中K=3、7…N-1;当mode的值为s时,表明该指令要执行的操作为将中的局部寄存器Ri中的内容和 中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
如图4所示,本发明面向向量处理器数据交换的装置,包括译码逻辑单元、两路选择器以及时钟信号单元,译码逻辑单元根据向量指令EXC的mode域进行译码,每次译码后产生N/2个有效的使能信号,每个使能信号分别连接至两个两路选择器的使能端,这两个两路选择器的输入都来自与要执行数据交换的两个局部寄存器Ri和Rj的读端口,当使能信号为高电平时,Ri和Rj的数据被两个两路选择器分别选中到Rj和Ri的写端口,当时钟信号有效时,即实现了两个局部寄存器内容的相互交换。当使能信号为低电平时,Ri和Rj的内容则保持不变。
如图5所示,本发明在8数据通路的向量处理器上的执行过程示意图。对于8数据通路的向量处理器,EXC指令的mode域的取值可以为1、2、3,即EXC指令一共可以完成三种特殊类型的数据交换。下面将结合图2所示的16点基2FFT算法对本发明进行详细的说明。16点FFT共需4级蝶形运算,每一级要进行8个蝶形运算。
当mode值为1时,该指令执行的操作为将PE2、PE4、PE6、PE8中局部寄存器Ri中的内容分别与PE1、PE3、PE5、PE7中局部寄存器Rj中的内容相互交换,PE1、PE3、PE5、PE7中局部寄存器Ri和PE2、PE4、PE6、PE8中局部寄存器Rj的内容则保持不变。执行完此条指令后,每个PE内的局部寄存器Ri和Rj中的数据即为图2所示的16点FFT第一级蝶形运算所需要的输入数据。仅需要一条指令进行数据交换之后,就可以在8个PE上并行进行8个蝶形运算。
当mode值为2时,该指令执行的操作为将PE3、PE4、PE7、PE8中局部寄存器Ri中的内容分别与PE1、PE2、PE5、PE6中局部寄存器Rj中的内容相互交换,PE1、PE2、PE5、PE6中局部寄存器Ri和PE3、PE4、PE7、PE8中局部寄存器Rj的内容则保持不变。执行完此条指令后,每个PE内的局部寄存器Ri和Rj中的数据即为图2所示的16点FFT第二级蝶形运算所需要的输入数据。仅需要一条指令进行数据交换之后,就可以在8个PE上并行进行8个蝶形运算。
当mode值为3时,该指令执行的操作为将PE5、PE6、PE7、PE8中局部寄存器Ri中的内容分别与PE1、PE2、PE3、PE4中局部寄存器Rj中的内容相互交换,PE1、PE2、PE3、PE4中局部寄存器Ri和PE5、PE6、PE7、PE8中局部寄存器Rj的内容则保持不变。执行完此条指令后,每个PE内的局部寄存器Ri和Rj中的数据即为图2所示的16点FFT第二级蝶形运算所需要的输入数据。仅需要一条指令进行数据交换之后,就可以在8个PE上并行进行8个蝶形运算。
综上所述,通过本发明所实现的数据交换,可以最大限度的开发FFT算法在向量处理器上的并行度,有效提高了该算法在向量处理器中的执行效率。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (2)
1.一种面向向量处理器数据交换的方法,其特征在于:通过向量指令EXC完成两个向量寄存器之间指定部分内容的互相交换,所述向量指令EXC的指令格式为EXC mode VRi VRj,所述VRi和VRj用以指定要进行数据交换的两个向量寄存器,所述mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,所述mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,为2的整数次幂;当mode的值为1时,表明该指令要执行的操作为将PEk中的局部寄存器Ri中的内容和PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2、4…N;当mode的值为2时,表明该指令要执行的操作为将PEk:PEk+1中的局部寄存器Ri中的内容和PEk-2:PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中K=3、7…N-1;当mode的值为s时,表明该指令要执行的操作为将中的局部寄存器Ri中的内容和中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
2.一种面向向量处理器数据交换的装置,其特征在于:包括译码逻辑单元、两路选择器以及时钟信号单元,所述译码逻辑单元根据向量指令EXC的mode域进行译码,每次译码后产生N/2个有效的使能信号,每个使能信号分别连接至两个两路选择器的使能端;所述两路选择器的输入来自将要发生数据交换的两个局部寄存器的读端口;当使能信号有效时,两路选择器控制两个局部寄存器的内容各自写回到交换目的地所对应的局部寄存器写端口,当时钟信号有效时,完成两个局部寄存器内容的相互交换;
所述向量指令EXC的指令格式为EXC mode VRi VRj,所述VRi和VRj用以指定要进行数据交换的两个向量寄存器,所述mode为一个立即数,用来指定这两个向量寄存器之间数据交换的模式,所述mode的取值为1、2、3……Log2N,其中N为向量处理器中处理单元PE的数目,为2的整数次幂;
当mode的值为1时,表明该指令要执行的操作为将PEk中的局部寄存器Ri中的内容和PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2、4…N;当mode的值为2时,表明该指令要执行的操作为将PEk:PEk+1中的局部寄存器Ri中的内容和PEk-2:PEk-1中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中K=3、7…N-1;当mode的值为s时,表明该指令要执行的操作为将中的局部寄存器Ri中的内容和 中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010559387 CN102012802B (zh) | 2010-11-25 | 2010-11-25 | 面向向量处理器数据交换的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010559387 CN102012802B (zh) | 2010-11-25 | 2010-11-25 | 面向向量处理器数据交换的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102012802A CN102012802A (zh) | 2011-04-13 |
CN102012802B true CN102012802B (zh) | 2013-01-16 |
Family
ID=43842978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010559387 Active CN102012802B (zh) | 2010-11-25 | 2010-11-25 | 面向向量处理器数据交换的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102012802B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2856303B1 (en) * | 2012-05-30 | 2017-08-02 | Intel Corporation | Vector and scalar based modular exponentiation |
CN104699465B (zh) * | 2015-03-26 | 2017-05-24 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN105828071B (zh) * | 2016-03-31 | 2019-05-24 | 中国人民解放军国防科学技术大学 | 面向向量处理器的去块滤波向量化实现方法 |
CN108388446A (zh) | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349159A (zh) * | 2001-11-28 | 2002-05-15 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090928B2 (en) * | 2002-06-28 | 2012-01-03 | Intellectual Ventures I Llc | Methods and apparatus for processing scalar and vector instructions |
-
2010
- 2010-11-25 CN CN 201010559387 patent/CN102012802B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349159A (zh) * | 2001-11-28 | 2002-05-15 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102012802A (zh) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3651017B1 (en) | Systems and methods for performing 16-bit floating-point matrix dot product instructions | |
EP3602277B1 (en) | Systems, methods, and apparatuses for dot production operations | |
US11714875B2 (en) | Apparatuses, methods, and systems for instructions of a matrix operations accelerator | |
US20240078285A1 (en) | Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements | |
EP3629157B1 (en) | Systems for performing instructions for fast element unpacking into 2-dimensional registers | |
US10942985B2 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
EP3629158B1 (en) | Systems and methods for performing instructions to transform matrices into row-interleaved format | |
US10866786B2 (en) | Systems and methods for performing instructions to transpose rectangular tiles | |
EP3623941B1 (en) | Systems and methods for performing instructions specifying ternary tile logic operations | |
US20230229446A1 (en) | Systems and methods to load a tile register pair | |
EP3798823A1 (en) | Apparatuses, methods, and systems for instructions of a matrix operations accelerator | |
JP2012174016A (ja) | データ処理装置およびそのデータ処理方法 | |
EP4170486A1 (en) | Systems and methods for implementing chained tile operations | |
CN107533460B (zh) | 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 | |
EP3719638A2 (en) | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator | |
CN102508643A (zh) | 一种多核并行数字信号处理器及并行指令集的运行方法 | |
US11579883B2 (en) | Systems and methods for performing horizontal tile operations | |
CN102012802B (zh) | 面向向量处理器数据交换的方法及装置 | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
US20220206800A1 (en) | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator | |
CN103235717B (zh) | 具有多态指令集体系结构的处理器 | |
CN102298568B (zh) | 一种动态可重构阵列的配置信息切换方法及装置 | |
US20220206854A1 (en) | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator | |
EP3757822A1 (en) | Apparatuses, methods, and systems for enhanced matrix multiplier architecture | |
US20210406012A1 (en) | Loading and storing matrix data with datatype conversion |
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 |