CN102262525B - 基于矢量运算的矢量浮点运算装置及方法 - Google Patents

基于矢量运算的矢量浮点运算装置及方法 Download PDF

Info

Publication number
CN102262525B
CN102262525B CN201110250870.0A CN201110250870A CN102262525B CN 102262525 B CN102262525 B CN 102262525B CN 201110250870 A CN201110250870 A CN 201110250870A CN 102262525 B CN102262525 B CN 102262525B
Authority
CN
China
Prior art keywords
vector
point
floating
register
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.)
Expired - Fee Related
Application number
CN201110250870.0A
Other languages
English (en)
Other versions
CN102262525A (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.)
Sun Ruiwei
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201110250870.0A priority Critical patent/CN102262525B/zh
Publication of CN102262525A publication Critical patent/CN102262525A/zh
Application granted granted Critical
Publication of CN102262525B publication Critical patent/CN102262525B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提出的基于矢量运算的浮点运算装置,是一种新的硬件结构,包括一个矢量处理器、一个存储器、一个矢量浮点协处理器和一个矢量浮点协处理器存储器,矢量处理器与矢量浮点协处理器之间的总线接口可以采用通用的协处理器总线结构。通过采用协处理器的方式,在保证浮点所有运算的基础上,提高了浮点的运算速度及降低了设计的复杂度。

Description

基于矢量运算的矢量浮点运算装置及方法
技术领域
本发明公开一种基于矢量运算的矢量浮点运算装置及方法,提高了浮点运算的速度和精度。
背景技术
处理器为数字信号处理所做的运算主要分为两大类:定点和浮点。一般而言,先进的定点运算速度快,功耗小,成本低,但矢量浮点运算器能够在硬件方面提供更高的精度和更广的动态范围。所以在面对要求更大的数字范围或更高的分辨率的情况,就需要矢量浮点运算器。
浮点运算现有方案是英特尔公司的《用于矢量处理的可扩展并行流水线浮点单元》专利,如图1,该发明输入队列210从处理器单元、图形控制器或存储矢量输入的数据存储器获取或者存储被处理的矢量输入。每个矢量输入包括FP指令和该指令关联的矢量数据。
矢量输入选择器220从输入队列210选择矢量输入来发送到输入队列210的一个或者多个输出的多个输入。
调度器230接收矢量输入选择器220选择的矢量输入,并分配所述调度器分配的矢量输入,把矢量分配为多个标量来处理。
现有技术方案存在的不足之处为:
1、把矢量输入分配为多个标量处理,多个浮点(FP)流水线根据所述调度器分配的矢量输入的标量分量的运算来产生FP结果,之后再把FP结果组装成矢量送入输出缓冲区。在这一系列过程中,即每一个FP流水线中都必须支持浮点的所有运算。如FP加法器、FP减法器、FP除法器、FP乘法器、FP复杂数学运算函数等。这种设计增加了设计的复杂度。
2、每个矢量输入对应一次浮点运算指令,每个矢量输入包括FP指令和该指令相关联的矢量数据。所述FP指令可以是任何FP运算,诸如FP加法、FP减法、FP乘法、FP除法、FP三角函数等。其中在处理本次浮点运算指令时,不能再次响应矢量输入,并等待本次运算结束后才能相应其他的操作。这势必降低了浮点的运算速度。
为了降低矢量处理器的复杂度,本发明的矢量浮点运算装置采用协处理器的方式。协处理器是一个处理单元,该处理单元与一个主处理单元一起使用来承担通常由主处理单元执行的运算。通常协处理器在硬件中能够替代几种软件指令,从而实现代码加速。
为了提高运算速度及运算精度,在许多应用领域中,都会涉及到浮点的并行处理,因此本发明公开一种基于矢量运算的浮点运算装置。
发明内容
本发明的基于矢量运算的浮点运算装置,提出一种新的硬件结构,采用协处理器的方式,在保证浮点所有运算的基础上,提高了浮点的运算速度及降低了设计的复杂度。
本发明的基于矢量运算的浮点运算装置,如图2所示,包括一个矢量处理器、一个存储器、一个矢量浮点协处理器和一个矢量浮点协处理器存储器,矢量处理器与矢量浮点协处理器之间的总线接口可以采用通用的协处理器总线结构。
其中,矢量处理器,用于执行指令代码中的矢量处理指令,解析指令代码并执行相应的运算,矢量处理器还用于把不能执行的矢量浮点协处理器指令通过矢量浮点协处理器接口总线传送给矢量浮点协处理器。
存储器,用于存储矢量处理器的指令代码及执行指令代码所需的数据。
矢量浮点协处理器,用于执行指令代码中的矢量浮点协处理指令,解析指令代码并执行相应的矢量浮点运算。
矢量浮点协处理器存储器,用于在本地存储作为与被加载的数据字组合在一起而加以使用操作数的数据字。这种方案是考虑到许多现实中的计算情况。本特性通过在本地存储频繁需要的数据字而将其拓展,从而使得在矢量处理器和矢量浮点协处理之间所需要的数据通道容量被有益的减少。
所述的矢量处理器包括指令存储单元、数据存储单元、指令读取和分发单元、矢量数据处理单元、矢量寄存器组;
所述的矢量浮点协处理器,如图3所示,包括矢量浮点协处理器接口、指令队列和分发单元、矢量数据处理单元、矢量浮点寄存器组及转发单元,其中:
矢量浮点协处理器接口,用于把矢量处理器与矢量浮点协处理器连接起来,本接口可以采用局部总线协议,如AMBA(高级微控制器总线结构)总线、APU(高级外设总线)总线等。
指令队列和分发单元,用于将接收矢量处理器送来的指令代码,解析指令代码并发送给所有的矢量数据处理单元;
矢量数据处理单元,用于执行矢量浮点的各种运算,由矢量浮点加减法处理单元,矢量浮点乘法处理单元,矢量浮点除法单元,矢量浮点三角函数处理单元组成。
矢量浮点加减法处理单元,该单元用来执行浮点的加减法运算;
矢量浮点乘法处理单元,该单元用来执行浮点的乘法运算;
矢量浮点除法处理单元,该单元用来执行浮点的除法运算;
矢量浮点三角函数单元,该单元用于执行浮点的三角函数运算;
矢量浮点寄存器组及转发单元,包含矢量浮点寄存器VRS0,VRS1,···VRSn,用于存放来自矢量浮点加减法处理单元、矢量浮点乘法处理单元、矢量浮点除法处理单元、矢量浮点三角函数单元的运算数据及运算结果数据,其转发单元则从矢量浮点寄存器组中读写数据并传递到矢量处理器的矢量寄存器组中;
下面详细介绍每个单元的具体功能:
所述指令队列和分发单元,其中,所述指令队列接收矢量处理器送来的指令代码,所述分发单元把指令代码分发给所有的执行单元。
所述指令代码包括:
把矢量寄存器中的数据传送到矢量浮点寄存器中;
把矢量浮点寄存器中的数据加载到矢量浮点协处理器中;
把矢量浮点寄存器中的数据传送到矢量寄存器中;
矢量浮点的加减法指令;
矢量浮点的减法指令;
矢量浮点的乘法指令;
矢量浮点的除法指令;
矢量浮点的三角函数指令;
所述矢量浮点加减法处理单元,是当指令队列和分发单元接收矢量处理器送来的矢量浮点运算指令代码,如矢量浮点的加法和减法指令,读取矢量浮点加减法指令,然后分发给所述矢量浮点加减法处理单元;所述矢量浮点加减法处理单元根据所述矢量浮点加或减指令将矢量浮点寄存器组中源的寄存器的内容相加减,结果存入目的寄存器中,所述矢量浮点寄存器组源的寄存器为矢量浮点寄存器组中的一个或者几个寄存器,所述目的寄存器为矢量浮点寄存器组的一个或者几个寄存器。
所述矢量浮点乘法处理单元,是当指令队列和分发单元接收矢量处理器送来的矢量浮点运算指令代码,读取矢量浮点乘法指令,然后分发给所述矢量浮点乘法处理单元;所述矢量浮点乘法处理单元根据所述矢量浮点乘法指令将矢量寄存器组中源的寄存器的内容相乘,结果存入目的寄存器中,所述矢量浮点寄存器组中源的寄存器为矢量浮点寄存器组中的一个或者几个寄存器,所述目的寄存器为矢量浮点寄存器组的一个或者几个寄存器。
所述矢量浮点除法处理单元,指令队列和分发单元接收矢量处理器送来的矢量浮点运算指令代码,读取矢量浮点除法指令,然后分发给所述矢量浮点除法处理单元;所述矢量浮点除法处理单元根据所述矢量浮点除法指令将矢量寄存器组中源的寄存器的内容相除,结果存入目的寄存器中,所述矢量浮点寄存器组中源的寄存器为矢量浮点寄存器组中的一个或者几个寄存器,所述目的寄存器为矢量浮点寄存器组的一个或者几个寄存器。 
所述矢量浮点三角函数单元,指令队列和分发单元接收矢量处理器送来的矢量浮点运算指令代码,读取矢量浮点三角指令,然后分发给所述矢量浮点三角函数处理单元;所述矢量浮点三角函数处理单元根据所述矢量浮点三角函数指令将矢量寄存器组中源的寄存器的内容做三角运算,结果存入目的寄存器中,所述矢量浮点寄存器组中源的寄存器为矢量浮点寄存器组中的一个或者几个寄存器,所述目的寄存器为矢量浮点寄存器组的一个或者几个寄存器。 
所述矢量浮点寄存器组及转发单元,包含矢量浮点寄存器VRS0,VRS1,···VRSn,用于存放来自矢量数据处理单元的运算数据及运算结果数据,其转发单元则从矢量寄存器组中读写数据并传递到矢量处理器的矢量寄存器组中;矢量浮点寄存器组的内容可以通过矢量寄存器转发,或者通过矢量浮点寄存器加载。在转发时,矢量浮点寄存器组的内容可以通过特定指令,把矢量浮点寄存器中的数据传送到矢量处理器的矢量寄存器中,或者存入矢量浮点寄存器中。
 本发明另外提供一种基于矢量运算的浮点运算方法,以256BIT的矢量宽度为例,如图4,包括以下步骤:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送
通过矢量寄存器到矢量浮点协处理器的数据传送指令,把要执行操作的矢量数据传送到矢量浮点协处理器的矢量浮点寄存器中;
步骤二、把浮点运算指令传送到矢量浮点协处理器中
矢量处理器不能执行的指令,通过协处理器总线传送到矢量浮点协处理器的指令队列和分发单元。所述指令队列和分发单元对指令代码进行解析,分发给所述矢量浮点协处理的矢量数据处理单元。所述矢量浮点协处理器的矢量数据处理单元根据所述浮点运算指令完成相应的操作。其中包括矢量浮点和的加减法操作,矢量浮点的乘法操作,矢量浮点的除法的操作,矢量浮点的三角函数操作等,结果存入矢量浮点寄存器中,所述矢量浮点寄存器的指定是由所述浮点运算指令中的目的寄存器决定的。
步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送给矢量处理器的矢量寄存器中
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量寄存器的指令,把矢量浮点协处理器的矢量浮点寄存器的数据传输到矢量寄存器中。
步骤四、把矢量处理器的矢量寄存器中的数据存入存储器中。
其中,所述的步骤一包括:
A) 在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中;
B) 在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中;
C) 完成矢量寄存器到矢量浮点协处理器的数据传送;
所述的步骤二包括:
A) 把加、减、乘、除、三角函数操作矢量浮点运算指令传送到矢量浮点协处理器中的指令队列和分发单元;
B) 所述矢量浮点处理单元根据浮点运算指令完成矢量浮点的加、减、乘、除、三角函数运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的;
矢量浮点运算单元根据其内部的单元完成矢量浮点加、减、乘、除、三角函数运算。两浮点数相乘,其乘积的阶码应为相乘两数的阶码之和,其乘积的尾数应为两相乘两数的尾数之积;即:
1.阶码相加,阶码补码相加;
2.尾数相乘,若VRS0,VRS1寄存器的尾数值不为0,则对其尾数相乘;
3.尾数结果规格化。
附图说明
图1为现有技术英特尔方案;
图2为本发明基于矢量运算的矢量浮点运算装置的系统图;
图3为本发明矢量浮点协处理器的结构图;
图4为本发明基于矢量运算的浮点运算方法的步骤图;
图5为本发明基于矢量运算的并行浮点乘法运算的步骤图;
图6为本发明矢量处理器与矢量浮点协处理器之间的连接方式示意图;
图7为本发明基于矢量运算的并行浮点加法运算的步骤图;
图8为本发明基于矢量运算的并行浮点减法运算的步骤图;
图9为本发明基于矢量运算的并行浮点除法运算的步骤图。
具体实施方式
本发明提供一种基于矢量运算的浮点运算装置,如图2所示,包括一个矢量处理器、一个存储器、一个矢量浮点协处理器和一个矢量浮点协处理器存储器。该装置通过协处理器总线把矢量处理器与矢量浮点协处理器连接起来。
所述的矢量浮点协处理器存储器,用于在本地存储作为与被加载的数据字组合在一起而加以使用操作数的数据字。这种方案是考虑到许多现实中的计算情况。本特性通过在本地存储频繁需要的数据字而将其拓展,从而使得在矢量处理器和矢量浮点协处理之间所需要的数据通道容量被有益的减少。
所述的矢量处理器包括指令存储单元、数据存储单元、指令读取和分发单元、矢量数据处理单元、矢量寄存器组;
所述的矢量浮点协处理器,如图3所示,包括矢量浮点协处理器接口、指令队列和分发单元、矢量数据处理单元、矢量浮点寄存器组及转发单元,其中
矢量浮点协处理器接口,用于把矢量处理器与矢量浮点协处理器连接起来,本接口可以采用局部总线协议,如AMBA总线,APU总线等。
指令队列和分发单元,该单元将接收矢量处理器送来的指令代码,解析指令代码并发送给所有的矢量数据处理单元;
矢量浮点加减法处理单元,该单元用来执行浮点的加减法运算;
矢量浮点乘法处理单元,该单元用来执行浮点的乘法运算;
矢量浮点除法处理单元,该单元用来执行浮点的除法运算;
矢量浮点三角函数单元,该单元用于执行浮点的三角函数运算;
矢量浮点加减法处理单元,矢量浮点乘法处理单元,矢量浮点除法单元组成矢量数据处理单元。
矢量浮点寄存器组及转发单元,包含矢量浮点寄存器VRS0,VRS1,···VRSn,用于存放来自矢量数据处理单元的运算数据及运算结果数据,其转发单元则从矢量浮点寄存器组中读写数据并传递到矢量处理器的矢量寄存器中;
当然在本发明的矢量浮点运算装置中还可以加入其他的浮点协处理器等,如滤波协处理器等。该装置设计的数据位宽可以是64bit,128bit,256bit,512bit,1024bit,2048bit,4096bit等。
基于矢量处理器与矢量浮点协处理器之间的连接有很多种方案,本发明基于矢量运算的浮点运算装置,着重讲解矢量浮点协处理器,矢量处理器与矢量浮点协处理器之间的连接不在本发明之列,但为了大家容易理解,本发明给出其中的2种连接方案,如图2,图6所示。
 本发明提供的基于矢量运算的浮点运算装置,以浮点乘法、矢量宽度为256BIT为例,具体实施步骤如图5所示:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送
A) 在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元,加载到源矢量寄存器组VR0中,所述源的寄存器指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中;
B) 在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元加载到源的矢量寄存器组中,所述源的寄存器的指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中; 
C) 完成矢量寄存器到矢量浮点协处理器的数据传送
通过矢量寄存器到矢量浮点协处理器的数据传送指令,分别把矢量处理器中矢量寄存器VR0,VR1中的数据传送到矢量浮点协处理器的矢量浮点寄存器VRS0,VRS1中。
 步骤二、把浮点运算指令传送到矢量浮点协处理器中
A) 把矢量浮点乘法指令传送到矢量浮点协处理器中的指令队列和分发单元
矢量处理器不能执行矢量浮点运算指令,通过数据总线传送到矢量浮点协处理器的指令队列及分发单元。所述指令队列及分发单元对指令代码进行解析,分发给所述矢量浮点乘法处理单元;
B) 所述矢量浮点乘法处理单元根据所述浮点运算指令完成矢量浮点的乘法运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的。
矢量浮点乘法运算单元根据其内部的单元完成矢量浮点乘法运算。两浮点数相乘,其乘积的阶码应为相乘两数的阶码之和,其乘积的尾数应为两相乘两数的尾数之积。即:
1.阶码相加,阶码补码相加;
2.尾数相乘,若VRS0,VRS1寄存器的尾数值不为0,则对其尾数相乘;
3.尾数结果规格化。
 步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送到矢量处理器的矢量寄存器中。
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量处理器的矢量寄存器指令,把矢量浮点协处理的矢量浮点寄存器VRS2的内容传送到到矢量处理器的矢量寄存器VR2中。
 步骤四、把矢量处理器的矢量寄存器中的数据存入存储器中。
以矢量浮点寄存器为256BIT为例,所述矢量浮点乘法的运算中可以看出,一次可以完成8个32位浮点乘法运算,4个双精度浮点乘法运算。同时在执行矢量浮点乘法运算中,还可以执行其他的矢量浮点运算,即浮点运算可以并行处理,这种矢量浮点单元协处理器的架构为浮点的并行运算及浮点运算指令的并行运算提供的基础。
以浮点加法、矢量宽度为256BIT为例,具体实施步骤如图7所示:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送
A) 在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元,加载到源的矢量寄存器组VR0中,所述源的寄存器指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中;
B) 在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元加载到源的矢量寄存器组中,所述源的寄存器的指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中; 
C) 完成矢量寄存器到矢量浮点协处理器的数据传送
通过矢量寄存器到矢量浮点协处理器的数据传送指令,分别把矢量处理器中矢量寄存器VR0,VR1中的数据传送到矢量浮点协处理器的矢量浮点寄存器VRS0,VRS1中。
步骤二、把浮点运算指令传送到矢量浮点协处理器中
A) 把矢量浮点加法指令传送到矢量浮点协处理器中的指令队列和分发单元
矢量处理器不能执行矢量浮点运算指令,通过数据总线传送到矢量浮点协处理器的指令队列及分发单元。所述指令队列及分发单元对指令代码进行解析,分发给所述矢量浮点加法处理单元;
B) 所述矢量浮点加法处理单元根据所述浮点运算指令完成矢量浮点的加法运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的。
矢量浮点加法运算单元根据其内部的单元完成矢量浮点加法运算。两浮点数相加,  
 1、0操作数的检查判断两个操作数中是否有一个为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省时间。
2、比较阶码大小并完成对阶
3、尾数求和运算
4、结果规格化
步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送到矢量处理器的矢量寄存器中。
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量处理器的矢量寄存器指令,把矢量浮点协处理的矢量浮点寄存器VRS2的内容传送到到矢量处理器的矢量寄存器VR2中。
步骤四、把矢量处理器的矢量寄存器中的数据存入存储器中。
 以浮点减法、矢量宽度为256BIT为例,具体实施步骤如图8所示:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送
A) 在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元,加载到源的矢量寄存器组VR0中,所述源的寄存器指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中;
B) 在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元加载到源矢量寄存器组中,所述源寄存器的指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中; 
C) 完成矢量寄存器到矢量浮点协处理器的数据传送
通过矢量寄存器到矢量浮点协处理器的数据传送指令,分别把矢量处理器中矢量寄存器VR0,VR1中的数据传送到矢量浮点协处理器的矢量浮点寄存器VRS0,VRS1中。
 步骤二、把浮点运算指令传送到矢量浮点协处理器中
A) 把矢量浮点减法指令传送到矢量浮点协处理器中的指令队列和分发单元
矢量处理器不能执行矢量浮点运算指令,通过数据总线传送到矢量浮点协处理器的指令队列及分发单元。所述指令队列及分发单元对指令代码进行解析,分发给所述矢量浮点减法处理单元;
B) 所述矢量浮点减法处理单元根据所述浮点运算指令完成矢量浮点的减法运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的。
矢量浮点加法运算单元根据其内部的单元完成矢量浮点减法运算。两浮点数相减,  
 1、0操作数的检查判断两个操作数中是否有一个为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省时间。
2、比较阶码大小并完成对阶
3、尾数求减运算
4、结果规格化
步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送到矢量处理器的矢量寄存器中。
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量处理器的矢量寄存器指令,把矢量浮点协处理的矢量浮点寄存器VRS2的内容传送到到矢量处理器的矢量寄存器VR2中。
步骤四、把矢量处理器的矢量寄存器中的数据存入存储器中。
 以浮点除法、矢量宽度为256BIT为例,具体实施步骤如图9所示:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送
A) 在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元,加载到源的矢量寄存器组VR0中,所述源的寄存器指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中;
B) 在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中,矢量寄存器都是256BIT;
指令队列和分发单元从所述矢量处理器的矢量寄存器中读取矢量加载指令,然后分发给所述矢量数据处理单元,所述矢量数据处理单元根据所述矢量加载指令执行矢量加载操作;即所述矢量数据处理单元根据所述矢量加载指令将待加载数据队列从所述矢量处理器的数据存储单元加载到源矢量寄存器组中,所述源寄存器的指定是由所述矢量加载存储指令决定的,所述矢量数据处理单元存储参与运算的数据,可以通过加载及存储指令把数据处理单元的数据加载到矢量寄存器组当中; 
C) 完成矢量寄存器到矢量浮点协处理器的数据传送
通过矢量寄存器到矢量浮点协处理器的数据传送指令,分别把矢量处理器中矢量寄存器VR0,VR1中的数据传送到矢量浮点协处理器的矢量浮点寄存器VRS0,VRS1中。
 步骤二、把浮点运算指令传送到矢量浮点协处理器中
A) 把矢量浮点减法指令传送到矢量浮点协处理器中的指令队列和分发单元
矢量处理器不能执行矢量浮点运算指令,通过数据总线传送到矢量浮点协处理器的指令队列及分发单元。所述指令队列及分发单元对指令代码进行解析,分发给所述矢量浮点除法处理单元;
B) 所述矢量浮点除法处理单元根据所述浮点运算指令完成矢量浮点的除法运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的。
矢量浮点除法运算单元根据其内部的单元完成矢量浮点除法运算。两浮点数相除,  
 1、检测操作数是否为0,并置结果符合为两个操作数的异或。
2、尾数调整,使|被除数尾数|<|除数尾数|
3、减阶:两数阶码相减得商的阶码。
4、两数的尾数做定点除法,得到商的尾数。
5、结果规格化
步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送到矢量处理器的矢量寄存器中。
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量处理器的矢量寄存器指令,把矢量浮点协处理的矢量浮点寄存器VRS2的内容传送到到矢量处理器的矢量寄存器VR2中。
步骤四、把矢量处理器的矢量寄存器中的数据存入存储器中。
 基于浮点并行运算的矢量浮点协处理单元中,还涉及到一些矢量浮点协处理器指令代码,具体如下所示:
把矢量浮点协处理存储器中的数据加载到矢量浮点协处理器中;
把矢量处理器中的矢量寄存器数据传送到矢量浮点协处理的矢量浮点寄存器中;
把矢量浮点协处理中的矢量浮点寄存器的数据传送到矢量处理器中矢量寄存器;
矢量浮点的加法指令;
矢量浮点的减法指令;
矢量浮点的乘法指令;
矢量浮点的除法指令;
矢量浮点的三角函数指令。
上述实施例是以浮点乘法、矢量宽度256BIT为例进行的矢量浮点运算,但所述256BIT,只是为了在举例中容易说明,但不仅限于256BIT,也可以为64bit,128bit,256bit,512bit,1024bit,2048bit,4096bit等。

Claims (6)

1.一种基于矢量运算的浮点运算装置,其特征在于,包括一个矢量处理器、一个存储器、一个矢量浮点协处理器和一个矢量浮点协处理器存储器,其中矢量处理器与矢量浮点协处理器之间的总线接口采用通用的协处理器总线结构,其中,
所述的矢量处理器,用于执行指令代码中的矢量处理指令,解析指令代码并执行相应的运算,以及把不能执行的矢量浮点协处理器指令通过矢量浮点协处理器接口总线传送给矢量浮点协处理器;
所述的存储器,用于存储矢量处理器的指令代码及执行指令代码所需的数据;
所述的矢量浮点协处理器,用于执行指令代码中的矢量浮点协处理指令,解析指令代码并执行相应的矢量浮点运算;
所述的矢量浮点协处理器存储器,用于在本地存储作为与被加载的数据字组合在一起而加以使用操作数的数据字;通过在本地存储频繁需要的数据字而将其拓展,从而使得在矢量处理器和矢量浮点协处理之间所需要的数据通道容量被有益的减少;
其中,所述的矢量处理器包括指令存储单元、数据存储单元、指令读取和分发单元、矢量数据处理单元、矢量寄存器组;所述的矢量浮点协处理器,包括矢量浮点协处理器接口、指令队列和分发单元、矢量数据处理单元、矢量浮点寄存器组及转发单元;
其中,
所述的矢量浮点协处理器接口,用于把矢量处理器与矢量浮点协处理器连接起来,本接口采用局部总线协议;
所述的指令队列和分发单元,用于将接收矢量处理器送来的指令代码,解析指令代码并发送给所有的矢量数据处理单元;
所述的矢量数据处理单元,用于执行矢量浮点的各种运算,由矢量浮点加减法处理单元,矢量浮点乘法处理单元,矢量浮点除法单元,矢量浮点三角函数处理单元组成;
所述的矢量浮点寄存器组及转发单元,包含矢量浮点寄存器VRS0,VRS1,···VRSn,用于存放来自矢量浮点加减法处理单元、矢量浮点乘法处理单元、矢量浮点除法处理单元、矢量浮点三角函数单元的运算数据及运算结果数据,其转发单元则从矢量浮点寄存器组中读写数据并传递到矢量处理器的矢量寄存器组中;
其中,所述的指令代码包括:
把矢量寄存器中的数据传送到矢量浮点寄存器中;
把矢量浮点寄存器中的数据加载到矢量浮点协处理器中;
把矢量浮点寄存器中的数据传送到矢量寄存器中;
矢量浮点的加减法指令;
矢量浮点的减法指令;
矢量浮点的乘法指令;
矢量浮点的除法指令;
矢量浮点的三角函数指令。
2.根据权利要求1所述的基于矢量运算的浮点运算装置,其中所述的矢量浮点协处理器接口采用的局部总线协议为高级局部总线总线或APU总线。
3.根据权利要求1所述的基于矢量运算的浮点运算装置,其中,
所述的矢量浮点加减法处理单元,该单元用来执行浮点的加减法运算;
所述的矢量浮点乘法处理单元,该单元用来执行浮点的乘法运算;
所述的矢量浮点除法处理单元,该单元用来执行浮点的除法运算;
所述的矢量浮点三角函数单元,该单元用于执行浮点的三角函数运算。
4.根据权利要求1所述的基于矢量运算的浮点运算装置,其中所述的浮点运算装置中加入滤波协处理器。
5.一种基于矢量运算的浮点运算方法,所述矢量宽度为256BIT,其特征在于,包括以下步骤:
步骤一、完成矢量寄存器到矢量浮点协处理器的数据传送:
通过矢量寄存器到矢量浮点协处理器的数据传送指令,把要执行操作的矢量数据传送到矢量浮点协处理器的矢量浮点寄存器中;
步骤二、把浮点运算指令传送到矢量浮点协处理器中:
矢量处理器不能执行的指令,通过协处理总线传送到矢量浮点协处理器的指令队列和分发单元;所述指令队列和分发单元对指令代码进行解析,分发给所述矢量浮点协处理的矢量数据处理单元;所述矢量浮点协处理器的矢量数据处理单元根据所述浮点运算指令完成相应的操作;其中包括矢量浮点的加减法操作,矢量浮点的乘法操作,矢量浮点的除法的操作,矢量浮点的三角函数操作,结果存入矢量浮点寄存器中,所述矢量浮点寄存器的指定是由所述浮点运算指令中的目的寄存器决定的;
步骤三、把矢量浮点协处理器的矢量浮点寄存器的数据传送给矢量处理器的矢量寄存器中:
通过矢量浮点协处理器的矢量浮点寄存器传送到矢量寄存器的指令,把矢量浮点协处理器的矢量浮点寄存器的数据传输到矢量寄存器中;
步骤四、把矢量处理器的矢量寄存器中的数据存入浮点运算装置的存储器中。
6.根据权利要求5所述的基于矢量运算的浮点运算方法,其中,
所述的步骤一包括:
A)在矢量处理器中,从存储器把参与运算的矢量数据A加载到矢量寄存器VR0中;
B)在矢量处理器中,把参与运算的矢量数据B加载到矢量寄存器VR1中;
C)完成矢量寄存器到矢量浮点协处理器的数据传送;
所述的步骤二包括:
A)把加、减、乘、除、三角函数操作矢量浮点运算指令传送到矢量浮点协处理器中的指令队列和分发单元;
B)矢量数据处理单元根据浮点运算指令完成矢量浮点的加、减、乘、除、三角函数运算,256BIT的矢量浮点寄存器,可以看作为8个32位标量寄存器,结果存入目的寄存器即矢量浮点协处理器的矢量浮点寄存器VRS2中,所述目的寄存器的指定是由所述矢量浮点运算指令中的目的寄存器决定的;
矢量数据处理单元根据其内部的单元完成矢量浮点加、减、乘、除、三角函数运算,两浮点数相乘,其乘积的阶码应为相乘两数的阶码之和,其乘积的尾数应为两相乘两数的尾数之积;即:
1.阶码相加,阶码补码相加;
2.尾数相乘,若VRS0,VRS1寄存器的尾数值不为0,则对其尾数相乘;
3.尾数结果规格化。
CN201110250870.0A 2011-08-29 2011-08-29 基于矢量运算的矢量浮点运算装置及方法 Expired - Fee Related CN102262525B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110250870.0A CN102262525B (zh) 2011-08-29 2011-08-29 基于矢量运算的矢量浮点运算装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110250870.0A CN102262525B (zh) 2011-08-29 2011-08-29 基于矢量运算的矢量浮点运算装置及方法

Publications (2)

Publication Number Publication Date
CN102262525A CN102262525A (zh) 2011-11-30
CN102262525B true CN102262525B (zh) 2014-11-19

Family

ID=45009163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110250870.0A Expired - Fee Related CN102262525B (zh) 2011-08-29 2011-08-29 基于矢量运算的矢量浮点运算装置及方法

Country Status (1)

Country Link
CN (1) CN102262525B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI625635B (zh) * 2015-09-25 2018-06-01 上海兆芯集成電路有限公司 三角函數計算方法以及裝置
EP3451159A4 (en) * 2016-04-26 2020-04-01 Cambricon Technologies Corporation Limited APPARATUS AND METHOD FOR IMPLEMENTING VECTOR LOGIC OPERATION

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155282A (zh) * 2015-03-31 2016-11-23 联想(北京)有限公司 一种电子设备及信息处理方法
CN105335130B (zh) * 2015-09-28 2018-06-26 深圳市中兴微电子技术有限公司 一种处理器及其处理任务的方法
CN111580865B (zh) * 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
CN107315717B (zh) 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
CN111651200B (zh) * 2016-04-26 2023-09-26 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN107315567B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN111651206B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
CN107992486A (zh) * 2017-10-30 2018-05-04 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN108108190B (zh) * 2017-12-15 2020-01-24 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108037908B (zh) * 2017-12-15 2021-02-09 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108108189B (zh) * 2017-12-15 2020-10-30 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN107977231B (zh) * 2017-12-15 2020-10-27 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108021393B (zh) * 2017-12-15 2020-10-27 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108121688B (zh) * 2017-12-15 2020-06-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1349159A (zh) * 2001-11-28 2002-05-15 中国人民解放军国防科学技术大学 微处理器向量处理方法
CN101819516A (zh) * 2010-01-22 2010-09-01 北京龙芯中科技术服务中心有限公司 能够复用浮点操作用构件和向量操作用构件的处理器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202331425U (zh) * 2011-08-29 2012-07-11 江苏中科芯核电子科技有限公司 基于矢量运算的矢量浮点运算装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1349159A (zh) * 2001-11-28 2002-05-15 中国人民解放军国防科学技术大学 微处理器向量处理方法
CN101819516A (zh) * 2010-01-22 2010-09-01 北京龙芯中科技术服务中心有限公司 能够复用浮点操作用构件和向量操作用构件的处理器

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
APU Floating-Point Unit V3.0;XLINIX;《http://www.xinlix.com/products/intellectual-property/floating-fp》;20070426;第一部分-第二部分,图1,2 *
XLINIX.APU Floating-Point Unit V3.0.《http://www.xinlix.com/products/intellectual-property/floating-fp》.2007,第一部分-第二部分,图1,2. *
多核处理器及其对系统结构设计的影响;谢向辉等;《计算机科学与探索》;20081231;641-650 *
谢向辉等.多核处理器及其对系统结构设计的影响.《计算机科学与探索》.2008,641-650. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI625635B (zh) * 2015-09-25 2018-06-01 上海兆芯集成電路有限公司 三角函數計算方法以及裝置
EP3451159A4 (en) * 2016-04-26 2020-04-01 Cambricon Technologies Corporation Limited APPARATUS AND METHOD FOR IMPLEMENTING VECTOR LOGIC OPERATION

Also Published As

Publication number Publication date
CN102262525A (zh) 2011-11-30

Similar Documents

Publication Publication Date Title
CN102262525B (zh) 基于矢量运算的矢量浮点运算装置及方法
US8990282B2 (en) Apparatus and method for performing fused multiply add floating point operation
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
CN110168493B (zh) 在128位宽的操作数上的融合乘加浮点运算
EP3719639B1 (en) Systems and methods to perform floating-point addition with selected rounding
US8838664B2 (en) Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
JP4232838B2 (ja) 再構成可能なsimd型プロセッサ
WO2009035185A1 (en) Reconfigurable array processor for floating-point operations
US20170220344A1 (en) Stochastic rounding floating-point add instruction using entropy from a register
CN105335127A (zh) Gpdsp中支持浮点除法的标量运算单元结构
US9870200B2 (en) Decimal and binary floating point rounding
US20100125621A1 (en) Arithmetic processing device and methods thereof
CN202331425U (zh) 基于矢量运算的矢量浮点运算装置
US9703626B2 (en) Recycling error bits in floating point units
US9477442B2 (en) Processor and control method of processor
US10445066B2 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
US10387118B2 (en) Arithmetic operation unit and method of controlling arithmetic operation unit
US20220156567A1 (en) Neural network processing unit for hybrid and mixed precision computing
Fiolhais et al. An efficient exact fused dot product processor in FPGA
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
EP1936492A1 (en) SIMD processor with reduction unit
EP3118737B1 (en) Arithmetic processing device and method of controlling arithmetic processing device
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
JP2019159440A (ja) ベクトルプロセッサ、演算実行方法、プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SUN RUIWEI

Free format text: FORMER OWNER: SUN RUICHEN

Effective date: 20140715

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100191 HAIDIAN, BEIJING TO: 100085 CHANGPING, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20140715

Address after: 100085, room 533, amber world, No. 85, West Street, Changping District, Beijing, Huilongguan

Applicant after: Sun Ruiwei

Address before: 100191 Beijing city Haidian District No. 2 Huayuan Road Jinshang Jiayuan 2 Building 3 unit 406

Applicant before: Sun Ruichen

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141119

Termination date: 20200829

CF01 Termination of patent right due to non-payment of annual fee