CN1142484C - 微处理器向量处理方法 - Google Patents
微处理器向量处理方法 Download PDFInfo
- Publication number
- CN1142484C CN1142484C CNB011315687A CN01131568A CN1142484C CN 1142484 C CN1142484 C CN 1142484C CN B011315687 A CNB011315687 A CN B011315687A CN 01131568 A CN01131568 A CN 01131568A CN 1142484 C CN1142484 C CN 1142484C
- Authority
- CN
- China
- Prior art keywords
- vector
- component
- instruction
- registor
- scalar
- 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.)
- Expired - Fee Related
Links
- 239000013598 vector Substances 0.000 title claims abstract description 328
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 230000008901 benefit Effects 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000013461 design Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 38
- 230000000737 periodic effect Effects 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 3
- 230000008520 organization Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000013604 expression vector Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种微处理器向量处理方法,在满足硬件实现简单、功耗低、成本低的前提下实现微处理器向量处理。本发明利用微处理器原有的流水线结构,设计向量指令集,增加向量寄存器组和向量控制逻辑,在译码段增加对向量指令的译码支持,用硬件执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器对向量处理的支持。向量指令集包括向量访存、向量运算、向量长度寄存器操作三类指令;向量寄存器组包括4个向量寄存器和1个向量长度寄存器;在译码段中设计一个有限状态机来完成对向量指令的控制。本发明不需专门的多功能部件实现了微处理器对向量处理的支持,硬件复杂度小,成本低,向量处理效率高,可靠性高。
Description
技术领域:本发明涉及微处理器设计中向量处理方法,尤其是要求低功耗、低成本、高性能的嵌入式微处理器设计中向量处理方法。
背景技术:随着信息处理进程的加快,越来越多的领域开始使用微处理器。其中,很大一部分应用领域如信息家电、移动通信、GPS系统等等要求处理器具有低功耗、低成本的特点,这些应用领域统称为嵌入式领域,在这些应用领域使用的微处理器统称为嵌入式微处理器。越来越多的多媒体应用如可视电话、PDA等对嵌入式微处理器的性能提出了更高的要求。这些应用的特点是数据量大、要求处理速度高,一般采用嵌入式微处理器负责运算和控制,采用其它专用芯片如数字信号处理芯片(DSP)等完成多媒体处理部分,系统中拥有多个芯片,成本较高。
对于数据量大,同样的操作要对多个数据实施的应用领域如多媒体应用领域,向量处理是一种提高处理器成批数据处理性能的有效方法,通过将用于处理相同操作的循环语句向量化,不仅可以减少程序的代码量,还能将循环迭代之间的相关性隐藏到向量指令中,提高硬件的执行效率。
长期以来,通用微处理器中的向量处理一般是采用多功能部件,如加法器、乘法器或向量协处理器来实现的,如Intel公司在http://www.intel.com网址公布的x86系列处理器中的多媒体增强指令集(MMX)体系结构以及后来的SSE、SSE2体系结构即流SIMD(单指令多数据)扩展指令集体系结构等,硬件设计复杂、消耗大量的芯片资源、功耗高、成本也比较高,不适合在要求低功耗、低成本的嵌入式应用领域中使用。英国的ARM公司虽然在http://www.arm.com网址公布了ARM系列嵌入式微处理器,并且于2001年下半年在微处理器论坛上展示了第一款支持SIMD的ARM V6体系结构的嵌入式处理器,但投产至少需要等到2002年。其他公司的嵌入式微处理器产品还没有看到对SIMD或者向量运算的支持。对于嵌入式微处理器向量处理的方法国内外尚无公开出版的技术资料。
发明内容:本发明所要解决的技术问题是在满足硬件实现简单、功耗低、成本低、不提高硬件复杂度的前提下,不须采用其它多功能部件,实现微处理器向量处理,尤其是实现嵌入式微处理器向量处理,相对于非向量化的处理流程,获得较高性能加速比。
本发明的技术方案是:利用微处理器原有的流水线结构,设计向量指令集,增加向量寄存器组和向量控制逻辑,在译码段增加对向量指令的译码支持,用硬件执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器对向量处理的支持。
向量处理的实现,需要提供给程序员可以见到的接口,这就是向量指令。程序员可以利用这些指令,编制出支持向量处理的程序和应用。
本发明在指令集中增设了向量指令集,它包括三类向量指令:向量访存指令、向量运算指令以及向量长度寄存器操作指令。
向量访存指令主要在存储器和向量寄存器之间互相传递向量,向量分量在向量寄存器中从第1个寄存器开始顺序存储。向量访存指令包括:
LDV Vd,Rd功能是将Rd寄存器给出的地址对应的向量装载入Vd向量寄存器;
STV Vd,Rd功能是将Vd向量寄存器给出的向量存储入Rd寄存器给出的地址对应的存储器中。
向量运算指令用于在两个向量之间或者在一个向量与一个标量之间进行运算,并将计算结果存储到目标向量寄存器中。本发明设计的向量运算指令有向量逻辑运算指令和向量算术运算指令及向量传输操作指令。所有向量逻辑运算指令和向量算术运算指令要求在两个等长的向量之间或者在一个向量与一个标量之间进行运算。向量逻辑运算指令包括:向量与、向量或、向量异或;向量算术运算指令包括:向量加、向量减、向量乘、向量无符号乘、向量标量加、向量标量减、向量标量乘、向量标量无符号乘;向量传输操作主要指向量赋值。向量运算指令具体格式为:
ANDV Vd,Vn,Vs,功能是向量与,向量寄存器Vn和Vs中的各个分量分别进行逻辑与操作后赋值到向量寄存器Vd,即Vd:={(Vn)AND(Vs)};
ORRV Vd,Vn,Vs,功能是向量或,向量寄存器Vn和Vs中的各个分量分别进行逻辑或操作后赋值到向量寄存器Vd,即Vd:={(Vn)OR(Vs)};
EORV Vd,Vn,Vs,功能是向量异或,向量寄存器Vn和Vs中的各个分量分别进行逻辑异或操作后赋值到向量寄存器Vd,即Vd:={(Vn)EOR(Vs)};
SUBV Vd,Vn,Vs,功能是向量减,将向量寄存器Vn中的各个分量分别减去Vs中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vn)-(Vs)};
RSBV Vd,Vn,Vs,功能是向量反向减,将向量寄存器Vs中的各个分量分别减去Vn中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vs)-(Vn)};
ADDV Vd,Vn,Vs,功能是向量加,向量寄存器Vn和Vs中的各个分量分别进行加操作后赋值到向量寄存器Vd,即Vd:={(Vn)+(Vs)};
MULV Vd,Vn,Vs,功能是向量乘,向量寄存器Vn和Vs中的各个分量分别进行乘操作后赋值到向量寄存器Vd,即Vd:={(Vn)*(Vs)};
UMULV Vd,Vn,Vs,功能是向量无符号乘,向量寄存器Vn和Vs中的各个分量分别进行无符号乘操作后赋值到向量寄存器Vd,即Vd:={(Vn)*(Vs)};
ADDSV Vd,Vn,Rd,功能是向量标量加,向量寄存器Vn中的各个分量分别加上标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn+(Rd);
SUBSV Vd,Vn,Rd,功能是向量标量减,向量寄存器Vn中的各个分量分别减去标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn-(Rd);
RSBSV Vd,Vn,Rd,功能是向量标量反向减,标量寄存器Rd的值减去向量寄存器Vn中的各个分量后赋值到向量寄存器Vd,即Vd:=(Rd)-Vn;
MULSV Vd,Vn,Rd,功能是向量标量乘,向量寄存器Vn中的各个分量分别和标量寄存器Rd的值进行乘操作后赋值到向量寄存器Vd,即Vd:=Vn*(Rd);
UMULSV Vd,Vn,Rd,功能是向量标量无符号乘,向量寄存器Vn中的各个分量分别和标量寄存器Rd的值进行无符号乘操作后赋值到向量寄存器Vd,即Vd:=Vn*(Rd);
MOVV Vd,Vn,功能是向量赋值,将向量寄存器Vn的各个分量赋值到向量寄存器Vd中,即Vd:=Vn;
向量长度寄存器操作指令是在向量长度寄存器VLR和一个通用标量寄存器之间互相传递数据或者将一个立即数传递到向量长度寄存器VLR中,用于决定向量访存、向量逻辑运算、向量算术运算、向量赋值的有效向量分量的个数。向量长度寄存器操作指令格式为:
MOVI2S Rd功能是将标量寄存器Rd的低6位传送到VLR中;
MOVI2S #S功能是将立即数S的低6位传送到VLR中;
MOVS2I Rd功能是将VLR传送到标量寄存器Rd的低6位中。
本发明所设计的向量指令集中的指令最多同时涉及到3个向量寄存器,为了降低微处理器实现的复杂度,增加微处理器的可扩展性,尽量降低耗费的芯片面积,降低功耗,本发明在嵌入式微处理器中设计4个向量寄存器V0、V1、V2、V3和1个向量长度寄存器VLR。经过模拟,在每个向量拥有64个分量的时候,既能满足向量应用数据量大的特点,又不占用太大的芯片面积,具有较好的性能价格比,因此本发明每个向量寄存器拥有64个向量分量。与此相应,向量长度寄存器VLR的长度设置成6位,只有低6位有效,可以设置为0到63的值,表示向量操作涉及到的向量分量个数是1到64个。当本发明在32位微处理器中应用时每个向量分量设计为32位,当本发明在64位微处理器中应用时每个向量分量设计为64位,向量分量的长度可随着微处理器的字长变化。
向量指令执行的过程与微处理器的流水线有关,微处理器的流水线有几段,则向量指令执行有几步,一般都包括取指、译码、执行等,这与标量指令的执行过程是一样的。由于向量指令的操作数是包括若干向量分量的向量寄存器,因此它的译码过程与标量指令的译码过程不同。本发明在译码段中设计一个有限状态机来完成对多周期的向量指令的控制,由向量长度寄存器VLR来控制一条向量指令中相同操作重复执行的次数。有限状态机产生复杂指令控制信号来控制多周期的向量指令执行:如果是向量指令,首先从VLR得到向量长度的值以决定向量操作的向量分量的个数;然后区分该指令是乘法指令、访存指令还是ALU运算指令(即向量逻辑运算指令和不包括乘法、无符号乘法指令的向量算术运算指令以及向量传输指令),并根据VLR的值,由译码段循环产生相应的控制信号;若在微处理器中乘法操作与ALU操作分离实现,则对于乘法指令,进入标量乘法状态并产生用于控制标量乘法的微控制信号,完成一个向量分量的乘法操作后,再开始第二个向量分量的乘法操作;如果是访存指令,则译码段发出第一个向量分量的访存请求控制信号,当第一个向量分量的访存请求完成之后,再进行第二个向量分量的访存请求的控制;如果是ALU运算指令,则根据运算的类型,由译码段产生单个向量分量的运算控制微信号,当完成一个向量分量的运算之后,再开始第二个向量分量的运算;此时,有限状态机进入多个状态的循环,并发出互锁流水线信号,停止取指段的后续取指操作;有限状态机的状态转变由向量长度寄存器VLR控制,如果向量分量操作的次数达到向量长度寄存器的值,则将状态转变回开始状态,否则继续处理下一个向量分量。如果是向量长度传输指令,则按照标量寄存器传输指令处理方法进行处理,即在一个标量寄存器和VLR之间进行传输,或者将一个立即数传递入VLR中;如果是一般指令(包括标量指令),则译码段产生一般指令的微控制信号。译码段向量控制逻辑采用有限状态机实现了对多周期的向量指令的控制,消除了多重有限状态机嵌套可能导致的毛刺现象,用简单的时序逻辑实现了复杂的循环控制,提高了微处理器的可靠性。
本发明硬件上实现了向量指令和标量指令混合译码,可以支持向量、标量指令的混合执行,不需要特殊的处理就可以在标量指令和向量指令之间进行切换,降低了程序的复杂度。
使用本发明能达到以下有益效果:
1.利用嵌入式微处理器的流水线结构,增加向量寄存器组和向
量控制逻辑,增加对向量指令的译码支持,用硬件执行循环
过程,利用已有的标量流水线功能部件和控制信号,实现了
微处理器对向量处理的支持,硬件复杂度小,不需专门协处
理器、多功能部件等实现向量处理,系统实现简单,成本低。
2.设计的向量指令集功能齐全,囊括了所有常用的向量操作,
向量处理效率高。
3.本发明设计4个向量寄存器,每个向量寄存器拥有64个向量
分量,向量分量的长度可随着微处理器字长相应变化,占用
较小的芯片面积就能实现向量所有操作,降低了微处理器实
现的复杂度,增加了微处理器的可扩展性,满足嵌入式微处
理器功耗低、复杂度低、成本低的特点。
4.本发明支持向量指令、标量指令的混合执行,向量指令和标
量指令的混合执行无需特殊操作,有利于降低程序复杂度。
5.译码段设计了一个有限状态机来完成对多周期的向量指令的
控制,消除了多重有限状态机嵌套可能导致的毛刺现象,用
简单的时序逻辑实现了复杂的循环控制,提高了微处理器的
可靠性。
6.本发明将循环迭代之间的相关性隐藏到向量指令中,程序的
代码少,有效提高了处理器成批数据处理性能,提高了硬件
的执行效率,本发明不仅适用于嵌入式微处理器,也适用于
通用微处理器。相对于非向量化的处理流程,可以达到较高
的性能加速比。
附图说明:
图1是本发明在银河TS-1嵌入式微处理器中向量寄存器的设置示意图;
图2是本发明在银河TS-1嵌入式微处理器中向量指令执行的流水线示意图;
图3是本发明在银河TS-1嵌入式微处理器中译码段向量处理状态转换图;
图4是向量处理流程和非向量处理流程的性能评价结果对照表(VLR是向量长度);
具体实施方式:本发明已应用在国防科学技术大学自行研制的银河TS-1嵌入式微处理器中。如图1所示,本发明在银河TS-1中设置了V0、V1、V2、V3共4个向量寄存器,它们可以存贮64个向量分量,银河TS-1嵌入式微处理器是32位字长,因此每个向量分量长32位。
图2是银河TS-1指令执行的流水线,包括取指段、译码段、操作数准备段、执行段、数据访问段、写回段六个流水段。向量指令在银河TS-1中的执行过程是:
1.取指:流水线的取指段的地址发生器产生新的指令地址,根据新的指令地址先查询指令Cache中是否有所需指令,如果有,则将Cache中指令返回给取指段,否则从存贮器中取指令,取得的指令放于指令寄存器中。
2.译码:译码段将指令寄存器中指令进行译码,形成微控制信号并将读出的源操作数一起存放在译码段的锁存器中,译码段中设计一个有限状态机来完成对多周期的向量指令的控制。
3.操作数准备:操作数准备段根据译码段锁存器中内容,也即译码段形成的微控制信号和源操作数,对操作数进行移位或者传递等准备动作。如果是向量乘法指令,还要对源操作数进行乘法操作。操作数准备段形成的微控制信号以及结果存放在操作数准备段锁存器中。
4.ALU执行:ALU执行段根据操作数准备段锁存器中的内容,对操作数准备段形成的结果进行ALU运算操作,即向量逻辑运算和不包括乘法、无符号乘法的向量算术运算以及向量传输操作。ALU执行段形成的微控制信号以及结果存放在ALU执行段锁存器中。
5.数据访问:数据访问段将ALU执行段锁存器中的内容根据需要更新到数据Cache中。当检测到需要进行写数据的存贮器访问请求时,数据访问段向数据Cache发出访存请求,将数据写到数据Cache中,再由数据Cache将数据更新到存贮器中。如果指令没有数据Cache访问请求,则将微控制信号以及结果存放到数据访问段锁存器中。
6.写回:写回段根据数据访问段锁存器中的内容,将指令操作结果写入到向量寄存器中。写回段根据向量寄存器地址、向量分量地址,产生相应的写向量寄存器控制信号,将结果写入到向量寄存器中。
图3是本发明译码段向量处理状态转换图,它是一个有限状态机,图中的圆圈表示译码段所处的状态,在任意一个时钟周期内,译码段只能处于其中一种状态;图中的箭头表示状态之间的转换,箭头上的文字表示进行状态转换所需满足的条件。由向量长度寄存器VLR控制一条向量指令中相同操作重复执行的次数。有限状态机产生复杂指令控制信号来控制多周期的向量指令执行:如果是向量指令,首先从VLR得到向量长度的值以决定向量操作的向量分量的个数;然后区分该指令是乘法指令、访存指令还是ALU运算指令(即向量逻辑运算指令和不包括乘法、无符号乘法指令的向量算术运算指令以及向量传输指令),并根据VLR的值,由译码段循环产生相应的控制信号;若在微处理器中乘法操作与ALU操作分离实现,则对于乘法指令,则进入标量乘法状态并产生用于控制标量乘法的微控制信号,完成一个向量分量的乘法操作后,再开始第二个向量分量的乘法操作;如果是访存指令,则译码段发出第一个向量分量的访存请求控制信号,当第一个向量分量的访存请求完成之后,再进行第二个向量分量的访存请求的控制;如果是ALU运算指令,则根据运算的类型,由译码段产生单个向量分量的运算控制微信号,当完成一个向量分量的运算之后,再开始第二个向量分量的运算;此时,有限状态机进入多个状态的循环,并发出互锁流水线信号,停止取指段的后续取指操作;有限状态机的状态转变由向量长度寄存器VLR控制,如果向量分量操作的次数达到向量长度寄存器的值,则将状态转变回开始状态,否则继续处理下一个向量分量。如果是向量长度传输指令,则按照标量寄存器传输指令处理方法进行处理,即在一个标量寄存器和VLR之间进行传输,或者将一个立即数传递入VLR中;如果是一般指令(如标量指令、中断指令等),则译码段产生一般指令的微控制信号。
图4是向量处理流程和非向量处理流程的性能评价结果对照表,其中的VLR表示向量长度寄存器的取值,也即在向量操作中涉及的向量分量的个数。例如,非向量版本的程序需要10条指令,而向量版本的程序需要7条指令;当向量长度为32的时候,非向量版本程序需要2282个时钟周期执行完毕,而向量版本程序仅需要666个时钟周期执行完毕,向量版本程序相对于非向量版本程序的加速比为3.43。当向量长度为64的时候,非向量版本程序需要4554个时钟周期执行完毕,而向量版本程序只需要1272个时钟周期执行完毕,向量版本程序相对于非向量版本程序的加速比为3.58。
Claims (2)
1.一种微处理器向量处理方法,采用它设计的微处理器拥有与一般微处理器相同的流水线结构、功能部件和控制信号,其特征在于:
a.设计向量指令集,增加包括4个向量寄存器和1个向量长度寄存器VLR,向量指令集包括向量访存指令、向量运算指令以及向量长度寄存器操作指令三类向量指令:
1)向量访存指令主要在存储器和向量寄存器之间互相传递向量,向量分量在向量寄存器中从第1个寄存器开始顺序存储,它包括:
LDV Vd,Rd功能是将Rd寄存器给出的地址对应的向量装载入Vd向量寄存器;
STV Vd,Rd功能是将Vd向量寄存器给出的向量存储入Rd寄存器给出的地址对应的存储器中;
2)向量运算指令用于在两个向量之间或者在一个向量与一个标量之间进行运算,并将计算结果存储到目标向量寄存器中;向量运算指令有向量逻辑运算指令和向量算术运算指令及向量分量按位操作指令;所有向量逻辑运算指令和向量算术运算指令要求在两个等长的向量之间或者在一个向量与一个标量之间进行运算;向量逻辑运算指令包括:向量与、向量或、向量异或;向量算术运算指令包括:向量加、向量减、向量乘、向量无符号乘、向量标量加、向量标量减、向量标量乘、向量标量无符号乘;向量分量按位操作主要指向量赋值;向量运算指令具体格式为:
ANDV Vd,Vn,Vs,功能是向量与,向量寄存器Vn和Vs中的各个分量分别进行逻辑与操作后赋值到向量寄存器Vd,即Vd:={(Vn)AND(Vs)};
ORRV Vd,Vn,Vs,功能是向量或,向量寄存器Vn和Vs中的各个分量分别进行逻辑或操作后赋值到向量寄存器Vd,即Vd:={(Vn)OR(Vs)};
EORV Vd,Vn,Vs,功能是向量异或,向量寄存器Vn和Vs中的各个分量分别进行逻辑异或操作后赋值到向量寄存器Vd,即Vd:={(Vn)EOR(Vs)};
SUBV Vd,Vn,Vs,功能是向量减,将向量寄存器Vn中的各个分量分别减去Vs中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vn)-(Vs)};
RSBV Vd,Vn,Vs,功能是向量反向减,将向量寄存器Vs中的各个分量分别减去Vn中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vs)-(Vn)};
ADDV Vd,Vn,Vs,功能是向量加,向量寄存器Vn和Vs中的各个分量分别进行加操作后赋值到向量寄存器Vd,即Vd:={(Vn)+(Vs)};
MULV Vd,Vn,Vs,功能是向量乘,向量寄存器Vn和Vs中的各个分量分别进行乘操作后赋值到向量寄存器Vd,即Vd:={(Vn)*(Vs)};
UMULV Vd,Vn,Vs,功能是向量无符号乘,向量寄存器Vn和Vs中的各个分量分别进行无符号乘操作后赋值到向量寄存器Vd,即Vd:={(Vn)*(Vs)};
ADDSV Vd,Vn,Rd,功能是向量标量加,向量寄存器Vn中的各个分量分别加上标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn+(Rd);
SUBSV Vd,Vn,Rd,功能是向量标量减,向量寄存器Vn中的各个分量分别减去标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn-(Rd);
RSBSV Vd,Vn,Rd,功能是向量标量反向减,标量寄存器Rd的值减去向量寄存器Vn中的各个分量后赋值到向量寄存器Vd,即Vd:=(Rd)-Vn;
MULSV Vd,Vn,Rd,功能是向量标量乘,向量寄存器Vn中的各个分量分别和标量寄存器Rd的值进行乘操作后赋值到向量寄存器Vd,即Vd:=Vn*(Rd);
UMULSV Vd,Vn,Rd,功能是向量标量无符号乘,向量寄存器Vn中的各个分量分别和标量寄存器Rd的值进行无符号乘操作后赋值到向量寄存器Vd,即Vd:=Vn*(Rd);
MOVV Vd,Vn,功能是向量赋值,将向量寄存器Vn的各个分量赋值到向量寄存器Vd中,即Vd:=Vn;
3)向量长度寄存器操作指令是在向量长度寄存器VLR和一个通用标量寄存器之间互相传递数据或者将一个立即数传递到向量长度寄存器VLR中,用于决定向量访存、向量逻辑运算、向量算术运算、向量赋值的有效向量分量的个数;向量长度寄存器操作指令格式为:
MOVI2S Rd功能是将标量寄存器Rd的低6位传送到VLR中;
MOVI2S #S功能是将立即数S的低6位传送到VLR中;
MOVS2I Rd功能是将VLR传送到标量寄存器Rd的低6位中。b.增加向量控制逻辑,在译码段增加对向量指令的译码支持,用硬件执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器对向量处理的支持,具体实现过程是:译码段中设计了一个有限状态机来完成对多周期的向量指令的控制,由向量长度寄存器VLR来控制一条向量指令中相同操作重复执行的次数;有限状态机产生复杂指令控制信号来控制多周期的向量指令执行:如果是向量指令,首先从VLR得到向量长度的值以决定向量操作的向量分量的个数;然后区分该指令是乘法指令、访存指令还是ALU运算指令,并根据VLR的值,由译码段循环产生相应的控制信号;若在微处理器中乘法操作与ALU操作分离实现,则对于乘法指令,则进入标量乘法状态并产生用于控制标量乘法的微控制信号,完成一个向量分量的乘法操作后,再开始第二个向量分量的乘法操作;如果是访存指令,则译码段发出第一个向量分量的访存请求控制信号,当第一个向量分量的访存请求完成之后,再进行第二个向量分量的访存请求的控制;如果是ALU运算指令,则根据运算的类型,由译码段产生单个向量分量的运算控制微信号,当完成一个向量分量的运算之后,再开始第二个向量分量的运算;此时,有限状态机进入多个状态的循环,并发出互锁流水线信号,停止取指段的后续取指操作;有限状态机的状态转变由向量长度寄存器VLR控制,如果向量分量操作的次数达到向量长度寄存器的值,则将状态转变回开始状态,否则继续处理下一个向量分量;如果是向量长度传输指令,则按照标量寄存器传输指令处理方法进行处理,即在一个标量寄存器和VLR之间进行传输,或者将一个立即数传递入VLR中;如果是标量指令、中断指令这样的一般指令,则译码段产生一般指令的微控制信号。
2.根据权利要求1所述的微处理器向量处理方法,其特征在于所述向量寄存器组的4个向量寄存器设计为最大拥有64个向量分量,向量长度寄存器VLR的长度设置成6位,只有低6位有效,向量分量的长度可随着微处理器的字长变化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011315687A CN1142484C (zh) | 2001-11-28 | 2001-11-28 | 微处理器向量处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011315687A CN1142484C (zh) | 2001-11-28 | 2001-11-28 | 微处理器向量处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1349159A CN1349159A (zh) | 2002-05-15 |
CN1142484C true CN1142484C (zh) | 2004-03-17 |
Family
ID=4670693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011315687A Expired - Fee Related CN1142484C (zh) | 2001-11-28 | 2001-11-28 | 微处理器向量处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1142484C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100447777C (zh) * | 2004-11-22 | 2008-12-31 | 索尼株式会社 | 处理器 |
CN101840323A (zh) * | 2010-03-25 | 2010-09-22 | 北京龙芯中科技术服务中心有限公司 | 支持标量复用的非全流水向量除法开方装置及方法 |
WO2017185385A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
WO2017185384A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
EP4354303A3 (en) * | 2017-03-20 | 2024-06-26 | Intel Corporation | Systems, methods, and apparatuses for matrix add, subtract, and multiply |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833468B (zh) * | 2010-04-28 | 2013-05-08 | 中国科学院自动化研究所 | 在高性能计算系统中生成向量处理指令集结构的方法 |
CN102012802B (zh) * | 2010-11-25 | 2013-01-16 | 中国人民解放军国防科学技术大学 | 面向向量处理器数据交换的方法及装置 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
CN102200964B (zh) * | 2011-06-17 | 2013-05-15 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102411773B (zh) * | 2011-07-28 | 2013-03-27 | 中国人民解放军国防科学技术大学 | 面向向量处理器的去均值归一化积相关系数的向量化实现方法 |
CN102262525B (zh) * | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
CN102508776B (zh) * | 2011-11-03 | 2014-09-17 | 中国人民解放军国防科学技术大学 | 多线程交叉双精度短向量结构的评测激励自动构造方法 |
CN102750133B (zh) * | 2012-06-20 | 2014-07-30 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
US9489199B2 (en) * | 2012-12-28 | 2016-11-08 | Intel Corporation | Vector compare instructions for sliding window encoding |
GB2519108A (en) | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
US10691463B2 (en) | 2015-07-30 | 2020-06-23 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
CN106990940B (zh) * | 2016-01-20 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 一种向量计算装置及运算方法 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN107315717B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
CN107315568B (zh) * | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量逻辑运算的装置 |
CN111857822B (zh) * | 2016-08-05 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
CN109117184A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
CN107861757B (zh) * | 2017-11-30 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 运算装置以及相关产品 |
-
2001
- 2001-11-28 CN CNB011315687A patent/CN1142484C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100447777C (zh) * | 2004-11-22 | 2008-12-31 | 索尼株式会社 | 处理器 |
CN101840323A (zh) * | 2010-03-25 | 2010-09-22 | 北京龙芯中科技术服务中心有限公司 | 支持标量复用的非全流水向量除法开方装置及方法 |
CN101840323B (zh) * | 2010-03-25 | 2012-02-08 | 龙芯中科技术有限公司 | 支持标量复用的非全流水向量除法开方装置及方法 |
WO2017185385A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
WO2017185384A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
EP4354303A3 (en) * | 2017-03-20 | 2024-06-26 | Intel Corporation | Systems, methods, and apparatuses for matrix add, subtract, and multiply |
Also Published As
Publication number | Publication date |
---|---|
CN1349159A (zh) | 2002-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1142484C (zh) | 微处理器向量处理方法 | |
EP3726389A1 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
US10445250B2 (en) | Apparatus, methods, and systems with a configurable spatial accelerator | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
CN109791488B (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
EP3776229A1 (en) | Apparatuses, methods, and systems for remote memory access in a configurable spatial accelerator | |
EP3776228A1 (en) | Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
WO2019194918A1 (en) | Apparatuses, methods, and systems for conditional queues in a configurable spatial accelerator | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
US20200004690A1 (en) | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator | |
US12086080B2 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
TW201802668A (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
CN1402843A (zh) | 在一个周期内处理乘累加运算 | |
WO2020005447A1 (en) | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
CN102103487A (zh) | 用于在单个指令中执行移位和异或运算的方法和装置 | |
CN108292220B (zh) | 用于加速图形分析的装置和方法 | |
EP3757814A1 (en) | Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator | |
CN102508643A (zh) | 一种多核并行数字信号处理器及并行指令集的运行方法 | |
CN101178644A (zh) | 一种基于复杂指令集计算机结构的微处理器架构 | |
JP2019197531A (ja) | 連鎖タイル演算を実施するためのシステムおよび方法 | |
KR101856833B1 (ko) | 레지스터들의 세트를 복수의 소형 레지스터들 또는 조합된 대형 레지스터들로서 액세스하는 프로세서들, 방법들, 및 시스템들 | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
US11907713B2 (en) | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |