发明名称 微处理器向量处理方法
摘要 本发明公开了一种微处理器向量处理方法,在满足硬件实现简单、功耗低、成本低的前提下实现微处理器向量处理。本发明利用微处理器原有的流水线结构,设计向量指令集,增加向量寄存器组和向量控制逻辑,在译码段增加对向量指令的译码支持,用硬件执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器对向量处理的支持。向量指令集包括向量访存、向量运算、向量长度寄存器操作三类指令;向量寄存器组包括4个向量寄存器和1个向量长度寄存器;在译码段中设计一个有限状态机来完成对向量指令的控制。本发明不需专门的多功能部件实现了微处理器对向量处理的支持,硬件复杂度小,成本低,向量处理效率高,可靠性高。
申请公布号 CN1142484C 申请公布日期 2004.03.17
申请号 CN01131568.7 申请日期 2001.11.28
申请人 中国人民解放军国防科学技术大学 发明人 王志英;戴葵;陆洪毅;鲁建壮;赵学秘;宋辉;侯方勇;徐虎
分类号 G06F9/38 主分类号 G06F9/38
代理机构 湖南兆弘专利事务所 代理人 赵洪
主权项 1.一种微处理器向量处理方法,采用它设计的微处理器拥有与一般微 处理器相同的流水线结构、功能部件和控制信号,其特征在于: a.设计向量指令集,增加包括4个向量寄存器和1个向量长度寄存器 VLR,向量指令集包括向量访存指令、向量运算指令以及向量长度寄 存器操作指令三类向量指令: 1)向量访存指令主要在存储器和向量寄存器之间互相传递向量, 向量分量在向量寄存器中从第1个寄存器开始顺序存储,它包括: LDVVd,Rd功能是将Rd寄存器给出的地址对应的向量装载入Vd 向量寄存器; STVVd,Rd功能是将Vd向量寄存器给出的向量存储入Rd寄存器 给出的地址对应的存储器中; 2)向量运算指令用于在两个向量之间或者在一个向量与一个标量 之间进行运算,并将计算结果存储到目标向量寄存器中;向量运算指 令有向量逻辑运算指令和向量算术运算指令及向量分量按位操作指 令;所有向量逻辑运算指令和向量算术运算指令要求在两个等长的向 量之间或者在一个向量与一个标量之间进行运算;向量逻辑运算指令 包括:向量与、向量或、向量异或;向量算术运算指令包括:向量加、 向量减、向量乘、向量无符号乘、向量标量加、向量标量减、向量标 量乘、向量标量无符号乘;向量分量按位操作主要指向量赋值;向量 运算指令具体格式为: ANDVVd,Vn,Vs,功能是向量与,向量寄存器Vn和Vs中的各个分 量分别进行逻辑与操作后赋值到向量寄存器Vd,即Vd:={(Vn)AND (Vs)}; ORRVVd,Vn,Vs,功能是向量或,向量寄存器Vn和Vs中的各个分 量分别进行逻辑或操作后赋值到向量寄存器Vd,即Vd:={(Vn)OR (Vs)}; EORVVd,Vn,Vs,功能是向量异或,向量寄存器Vn和Vs中的各个 分量分别进行逻辑异或操作后赋值到向量寄存器Vd,即Vd:={(Vn) EOR(Vs)}; SUBVVd,Vn,Vs,功能是向量减,将向量寄存器Vn中的各个分量 分别减去Vs中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vn)- (Vs)}; RSBVVd,Vn,Vs,功能是向量反向减,将向量寄存器Vs中的各个 分量分别减去Vn中的各个分量后赋值到向量寄存器Vd,即Vd:={(Vs) -(Vn)}; ADDVVd,Vn,Vs,功能是向量加,向量寄存器Vn和Vs中的各个分 量分别进行加操作后赋值到向量寄存器Vd,即Vd:={(Vn)+(Vs)}; MULVVd,Vn,Vs,功能是向量乘,向量寄存器Vn和Vs中的各个分 量分别进行乘操作后赋值到向量寄存器Vd,即Vd:={(Vn)*(Vs)}; UMULVVd,Vn,Vs,功能是向量无符号乘,向量寄存器Vn和Vs中 的各个分量分别进行无符号乘操作后赋值到向量寄存器Vd,即Vd:= {(Vn)*(Vs)}; ADDSVVd,Vn,Rd,功能是向量标量加,向量寄存器Vn中的各个分 量分别加上标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn +(Rd); SUBSVVd,Vn,Rd,功能是向量标量减,向量寄存器Vn中的各个分 量分别减去标量寄存器Rd的值之后赋值到向量寄存器Vd,即Vd:=Vn -(Rd); RSBSVVd,Vn,Rd,功能是向量标量反向减,标量寄存器Rd的值减 去向量寄存器Vn中的各个分量后赋值到向量寄存器Vd,即Vd:=(Rd) -Vn; MULSVVd,Vn,Rd,功能是向量标量乘,向量寄存器Vn中的各个分 量分别和标量寄存器Rd的值进行乘操作后赋值到向量寄存器Vd,即 Vd:=Vn*(Rd); UMULSVVd,Vn,Rd,功能是向量标量无符号乘,向量寄存器Vn中 的各个分量分别和标量寄存器Rd的值进行无符号乘操作后赋值到向 量寄存器Vd,即Vd:=Vn*(Rd); MOVVVd,Vn,功能是向量赋值,将向量寄存器Vn的各个分量赋值 到向量寄存器Vd中,即Vd:=Vn; 3)向量长度寄存器操作指令是在向量长度寄存器VLR和一个通用 标量寄存器之间互相传递数据或者将一个立即数传递到向量长度寄 存器VLR中,用于决定向量访存、向量逻辑运算、向量算术运算、向 量赋值的有效向量分量的个数;向量长度寄存器操作指令格式为: MOVI2SRd功能是将标量寄存器Rd的低6位传送到VLR中; MOVI2S#S功能是将立即数S的低6位传送到VLR中; MOVS2IRd功能是将VLR传送到标量寄存器Rd的低6位中。 b.增加向量控制逻辑,在译码段增加对向量指令的译码支持,用硬件 执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器 对向量处理的支持,具体实现过程是:译码段中设计了一个有限状态 机来完成对多周期的向量指令的控制,由向量长度寄存器VLR来控制 一条向量指令中相同操作重复执行的次数;有限状态机产生复杂指令 控制信号来控制多周期的向量指令执行:如果是向量指令,首先从 VLR得到向量长度的值以决定向量操作的向量分量的个数;然后区分 该指令是乘法指令、访存指令还是ALU运算指令,并根据VLR的值, 由译码段循环产生相应的控制信号;若在微处理器中乘法操作与ALU 操作分离实现,则对于乘法指令,则进入标量乘法状态并产生用于控 制标量乘法的微控制信号,完成一个向量分量的乘法操作后,再开始 第二个向量分量的乘法操作;如果是访存指令,则译码段发出第一个 向量分量的访存请求控制信号,当第一个向量分量的访存请求完成之 后,再进行第二个向量分量的访存请求的控制;如果是ALU运算指令, 则根据运算的类型,由译码段产生单个向量分量的运算控制微信号, 当完成一个向量分量的运算之后,再开始第二个向量分量的运算;此 时,有限状态机进入多个状态的循环,并发出互锁流水线信号,停止 取指段的后续取指操作;有限状态机的状态转变由向量长度寄存器 VLR控制,如果向量分量操作的次数达到向量长度寄存器的值,则将 状态转变回开始状态,否则继续处理下一个向量分量;如果是向量长 度传输指令,则按照标量寄存器传输指令处理方法进行处理,即在一 个标量寄存器和VLR之间进行传输,或者将一个立即数传递入VLR中; 如果是标量指令、中断指令这样的一般指令,则译码段产生一般指令 的微控制信号。
地址 410073湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院