一种向量浮点运算装置及方法
技术领域
本发明涉及微处理器内的浮点运算技术领域,涉及微处理器向量浮点部件的加/减运算通路及与其相关的操作的处理,确切地说,是涉及一种向量浮点运算装置及方法。
背景技术
计算机发展的主要目的是为了满足大型科学计算的需求,随着科学计算对计算机性能需求的不断增长计算机技术也迅速发展起来。向量类运算在数字信号算法中具有非常重要的地位,传统处理器通过标量的操作实现现代信号处理算法中大量的向量运算。由于芯片主频已经达到极限,以标量为计算单位的单核处理器很难满足性能要求。
因此,在硬件结构上设计支持向量处理,增加向量运算部件,在硬件体系结构层次实现对向量处理的支持在很大程度上能够改进向量类运算的运算速度,减少运算时间,增加数字信号处理的吞吐量,以在数字信号处理领域,比如现代雷达信号处理,星载卫星图像处理,高清电视等,满足处理大量数据的高实时性、高速和高可靠性要求。
2004年3月17日公开的申请号为01131568.7的中国发明专利《微处理器向量处理方法》,发明人:王志英等,公开了一种微处理向量处理方法,在满足硬件实现简单、功耗低、成本低的前提下实现微处理器向量处理。该发明利用微处理器原有的流水线结构,设计向量指令集,增加向量寄存器和向量控制逻辑,在译码阶段增加对向量指令的译码支持,用硬件执行循环过程,利用标量流水线功能部件和控制信号,实现微处理器对向量处理的支持。该种结构实现简单,但是进行循环以实现向量运算的方法使得运算速度较低,不能满足高实时性、高速和高可靠性的要求。
2011年8月31日公开申请号为200910241614.8的中国发明专利《浮点向量乘加运算装置和方法》,发明人:胡伟武等,公开了一种浮点向量乘加运算装置和方法。该装置包括一个乘法选择单元,n个乘法单元和n个加法单元。其中,乘数选择单元用于根据第四源操作数的值m,选择第二源操作数浮点向量的第m+1部分输出到n个乘法单元,m≤n-1;乘法单元用于将所选择的第二源操作数浮点向量的第m+1部分与第三源操作数浮点向量的n个部分分别进行相乘操作,并将相乘操作的运算结果输出到相应的n个加法单元;加法单元用于将相乘操作运算结果的n个部分和第一远操作数浮点向量的n个部分分别进行加法操作,得到乘加结果。该发明提出了一种向量乘加的装置及方法,但是对于其他类型的向量运算并没有给出设计和实现方法,应用范围比较窄。
2010年11月25日公开的申请号为201010559406.5的中国发明专利《一种可扩展向量运算簇》,发明人:陈书明等,公开了一种可扩展向量运算簇,包括向量处理阵列、支持压缩指令的向量译码器、用于存放多种数据类型的局部向量寄存器文件/累加器以及支持行列访问的矩阵寄存器文件,所述向量处理阵列包括2~64个同构向量处理单元,所述每个向量处理单元拥有独立的局部向量寄存器文件/累加器并共享矩阵寄存器;所述局部向量寄存器文件/累加器和矩阵寄存器文件提供指令操作的数据来源和目的。该发明统一执行流水对应的功能部件共享相同的数据通路,带来的问题就是需引入旁路以及互锁机制,设计相对复杂。
2007年6月20日公开的申请号为200610063927.5的中国发明专利《用于矢量处理的可扩展并行流水线浮点单元》,发明人:D.多诺夫里奥等,公开了一种为矢量处理执行浮点运算的技术,输入对来捕获多个矢量输入,电镀漆跟配所述矢量输入,多个浮点流水线根据对所述调度器分配的矢量输入的标量分量的运算来产生浮点结果。仲裁器和组装单元仲裁输出部件的使用并组装所述浮点结果以写入所述输出部件。该种技术支持异步方式进行处理,这样计算的结果可能会不同步,从而需设计复杂的仲裁机制以避免死锁现象的发生。
通过上面分析可知,向量运算在当今的数字信号处理领域非常普遍,高速有效而且代价比较小的向量运算设计非常重要,而基于标量运算部件设计实现向量运算单元是一种可行的设计方法。如何基于标量运算单元设置和构建简单高效可重构的向量运算单元是本发明所要研究的主要内容。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提出一种基于标量运算单元实现可重构向量浮点运算单元的方法和装置,以实现向量与向量间运算以及向量与标量间运算。
(二)技术方案
为达到上述目的,本发明提供了一种向量浮点运算装置,用于实现向量与标量以及向量与向量之间的各种浮点运算,包括:
指令译码单元11,用于对接收自外部的指令进行译码,得到操作类型信息、舍入方式信息、向量-向量或向量-标量的操作指示信息,将操作类型信息和舍入方式信息输出给向量浮点运算核心单元13,将操作类型信息输出给标志位更新逻辑单元14,将向量-向量或者向量-标量的操作指示信息输出给数据分发单元12;
数据分发单元12,用于接收外部输入的512位宽的第一操作数和第二操作数,并根据指令译码单元11提供的操作指示信息确定进行分发的数据,将第一操作数和第二操作数分发给向量浮点运算核心单元13;
向量浮点运算核心单元13,用于接收来自指令译码单元11提供的操作类型信息和舍入方式信息,以及数据分发单元12提供的第一操作数和第二操作数,并且根据操作类型信息和舍入方式信息并行的对数据进行处理,得到计算结果信息,将该计算结果信息分别输出给标志位更新逻辑单元14和结果收集单元15;
标志位更新逻辑单元14,用于根据指令译码单元11提供的操作类型信息,以及向量浮点运算核心单元13提供的计算结果信息进行标志位的更新;以及
结果收集单元15,用于对接收自向量浮点运算核心单元13的计算结果信息进行收集和整理,输出512位宽的向量浮点运算结果。
为达到上述目的,本发明还提供了一种利用向量浮点运算装置进行向量浮点运算的方法,包括:
指令译码单元11对接收自外部的指令进行译码,得到操作类型信息、舍入方式信息、向量-向量或向量-标量的操作指示信息,将操作类型信息和舍入方式信息输出给向量浮点运算核心单元13,将操作类型信息输出给标志位更新逻辑单元14,将向量-向量或者向量-标量的操作指示信息输出给数据分发单元12;
数据分发单元12接收外部输入的第一操作数和第二操作数,并根据指令译码单元11提供的操作指示信息确定进行分发的数据,将第一操作数和第二操作数分发给向量浮点运算核心单元13;
向量浮点运算核心单元13接收来自指令译码单元11提供的操作类型信息和舍入方式信息,以及数据分发单元12提供的第一操作数和第二操作数,并且根据操作类型信息和舍入方式信息并行的对数据进行处理,得到计算结果信息,将该计算结果信息分别输出给标志位更新逻辑单元14和结果收集单元15;
标志位更新逻辑单元14根据指令译码单元11提供的操作类型信息,以及向量浮点运算核心单元13提供的计算结果信息进行标志位的更新;以及
结果收集单元15对接收自向量浮点运算核心单元13的计算结果信息进行收集和整理,输出向量浮点运算结果。
(三)有益效果
本发明提供的向量浮点运算装置及方法,该向量浮点运算装置包括N个标量运算单元、指令译码单元、数据分发单元、结果收集单元以及标志位更新逻辑单元,其中N的大小可以根据设计而定,支持向量-向量,向量-标量间的多种运算。本发明的向量浮点运算装置及方法具有设计简单高效,扩展性和可重构性好,并行性高等优点。
附图说明
图1是依照本发明实施例采用16个32位标量浮点运算单元实现的512位向量浮点运算装置的结构示意图;
图2是依照本发明实施例利用图1所示的512位向量浮点运算装置进行向量浮点运算的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。本领域的技术人员可以利用本实施例及其他实施例在不背离本发明范围的前提下进行改变。所以,下面的描述不是限制性的,本发明的范围由所附权利要求定义。
本发明的装置包括:N个标量运算单元,指令译码单元,数据分发单元,结果收集单元以及计算状态标志位更新单元,其中N为大于1的自然数,其大小可以根据设计而定,具有高度可重构性,一般可以为4、8、16或32等。在具体实施方式中的实施例中,取N=16,由16个32位浮点标量运算单元实现512位的向量浮点运算单元。
图1示出依照本发明实施例采用16个32位标量浮点运算单元实现的512位向量浮点运算装置10的结构示意图,该向量浮点运算装置10用于实现向量与标量,向量与向量间的各种浮点运算。该向量浮点运算装置包括:指令译码单元11、数据分发单元12、向量浮点运算核心单元13(由16个标量浮点运算单元组成)、标志位更新逻辑单元14和结果收集单元15。
其中,指令译码单元11,用于对接收自外部的指令进行译码,得到操作类型信息、舍入方式信息、向量-向量或向量-标量的操作指示信息,将操作类型信息和舍入方式信息输出给向量浮点运算核心单元13,将操作类型信息输出给标志位更新逻辑单元14,将向量-向量或者向量-标量的操作指示信息输出给数据分发单元12。
数据分发单元12用于接收外部输入的512位宽的第一操作数和第二操作数,并根据指令译码单元11提供的操作指示信息确定进行分发的数据,将第一操作数和第二操作数分别分发给向量浮点运算核心单元13中的16个同构的标量浮点运算单元,以进行并行向量浮点运算。
向量浮点运算核心单元13包括16个同构的标量浮点运算单元,其中每个单元都由两级流水实现,其分别接收来自指令译码单元11提供的操作类型信息和舍入方式信息,以及数据分发单元12提供的第一操作数和第二操作数,并且根据操作类型信息和舍入方式信息并行的对数据进行处理,得到相应的计算结果信息,将该计算结果信息分别输出给标志位更新逻辑单元14和结果收集单元15。
标志位更新逻辑单元14根据指令译码单元11提供的操作类型信息,以及向量浮点运算核心单元13中的16个标量浮点运算单元的计算结果信息进行标志位的更新,进行更新的标志位包括:零标志(AZ),下溢标志(AU),负数标志(AN),上溢标志(AV),无效标志(AI),浮点标志(AF)。当16个标量浮点运算单元中产生为0的计算结果时,AZ置1;当16个标量浮点运算单元的计算结果中存在小于输出格式所能表示的最小值时,AU置1;当16个标量浮点运算单元的计算结果中存在负数时,AN置1;当16个标量浮点运算部件的计算结果中存在上溢的结果时,AV置1;当输入操作数是无效数,或者符号相反的两个无穷值相加,或者符号相同的两个无穷值相减,或者浮点转定点时发生溢出,或者对无穷值进行浮点转定点转换时,AI置1;当最近一次运算为浮点运算时,AF置1。
结果收集单元15,用于对接收自向量浮点运算核心单元13中的16个标量浮点运算单元的计算结果信息进行收集和整理,输出512位宽的向量浮点运算结果,完成整个向量浮点运算的计算。
基于图1所示的依照本发明实施例采用16个32位标量浮点运算单元实现的512位向量浮点运算装置的结构示意图,图2示出了依照本发明实施例利用图1所示的512位向量浮点运算装置进行向量浮点运算的方法流程图,该方法包括以下步骤:
步骤21,指令译码单元11对接收自外部的指令进行译码,得到操作类型信息、舍入方式信息、向量-向量或向量-标量的操作指示信息,将操作类型信息和舍入方式信息输出给向量浮点运算核心单元13,将操作类型信息输出给标志位更新逻辑单元14,将向量-向量或者向量-标量的操作指示信息输出给数据分发单元12。
步骤22,数据分发单元12接收外部输入的512位宽的第一操作数和第二操作数,并根据指令译码单元11提供的操作指示信息确定进行分发的数据,将第一操作数和第二操作数分别分发给向量浮点运算核心单元13中的16个同构的标量浮点运算单元。
步骤23,向量浮点运算核心单元13中的16个同构的标量浮点运算单元,分别接收来自指令译码单元11提供的操作类型信息和舍入方式信息,以及数据分发单元12提供的第一操作数和第二操作数,并且根据操作类型信息和舍入方式信息并行的对数据进行处理,得到相应的计算结果信息,将该计算结果信息分别输出给标志位更新逻辑单元14和结果收集单元15。
步骤24,标志位更新逻辑单元14根据指令译码单元11提供的操作类型信息,以及向量浮点运算核心单元13中的16个标量浮点运算单元的计算结果信息进行标志位的更新,可更新的标志位包括:零标志,下溢标志,负数标志,上溢标志,无效标志和浮点标志。
步骤25,结果收集单元15对接收自向量浮点运算核心单元13中的16个标量浮点运算单元的计算结果信息进行收集和整理,输出512位宽的向量浮点运算结果,完成整个向量浮点运算的计算。
本发明采用多个标量浮点运算单元,外加:指令译码单元,数据分发单元,标志位更新逻辑单元以及结果收集单元实现对向量浮点并行运算的支持,结构简单,其中标量浮点运算单元的个数并不限于本发明实施例中提及的16个,其个数可以根据实际应用需要进行选取,可复用性高,是一种简单高效的设计方法。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。