CN102012802B - 面向向量处理器数据交换的方法及装置 - Google Patents

面向向量处理器数据交换的方法及装置 Download PDF

Info

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
Application number
CN 201010559387
Other languages
English (en)
Other versions
CN102012802A (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 CN 201010559387 priority Critical patent/CN102012802B/zh
Publication of CN102012802A publication Critical patent/CN102012802A/zh
Application granted granted Critical
Publication of CN102012802B publication Critical patent/CN102012802B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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时,表明该指令要执行的操作为将
Figure GDA00001732216700021
中的局部寄存器Ri中的内容和
Figure GDA00001732216700022
Figure GDA00001732216700023
中的局部寄存器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时,表明该指令要执行的操作为将
Figure GDA00001732216700031
中的局部寄存器Ri中的内容和
Figure GDA00001732216700032
Figure GDA00001732216700033
中的局部寄存器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时,表明该指令要执行的操作为将
Figure GDA00001732216700041
中的局部寄存器Ri中的内容和
Figure GDA00001732216700042
Figure GDA00001732216700043
中的局部寄存器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时,表明该指令要执行的操作为将
Figure FDA00001732216600011
中的局部寄存器Ri中的内容和
Figure FDA00001732216600012
中的局部寄存器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时,表明该指令要执行的操作为将
Figure FDA00001732216600013
中的局部寄存器Ri中的内容和
Figure FDA00001732216600014
Figure FDA00001732216600015
中的局部寄存器Rj中的内容相互交换,没有进行数据互换的局部寄存器中的内容保持不变,其中k=2s-1+1、2s-1+2s……N-2s-1+1。
CN 201010559387 2010-11-25 2010-11-25 面向向量处理器数据交换的方法及装置 Active CN102012802B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1349159A (zh) * 2001-11-28 2002-05-15 中国人民解放军国防科学技术大学 微处理器向量处理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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