CN109388427A - 向量处理方法、向量处理单元和微处理器 - Google Patents
向量处理方法、向量处理单元和微处理器 Download PDFInfo
- Publication number
- CN109388427A CN109388427A CN201710685530.8A CN201710685530A CN109388427A CN 109388427 A CN109388427 A CN 109388427A CN 201710685530 A CN201710685530 A CN 201710685530A CN 109388427 A CN109388427 A CN 109388427A
- Authority
- CN
- China
- Prior art keywords
- vector
- metadata
- wide
- divided
- source
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 468
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000005055 memory storage Effects 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000006462 rearrangement reaction Methods 0.000 description 1
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/3001—Arithmetic instructions
-
- 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
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种向量处理方法、向量处理单元和微处理器,其中该方法包括:响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。本发明提供的技术方案通过一条指令即完成了一个向量寄存器中存储的向量元数据的求和运算,大幅加速了向量寄存器中向量元数据求和运算的速度。
Description
技术领域
本发明涉及处理器指令技术领域,尤其涉及一种向量处理方法、向量处理单元和微处理器。
背景技术
处理器的指令可以分为两大类:标量指令和向量指令。其中,标量指令规定处理器在同一时间内只处理一个或一对操作数;向量指令的操作对象是向量,一个向量中可以包含多个或多对操作数,向量指令规定处理器按同一操作同时处理向量中的所有操作数。对于数据量大,同样的操作要对多个数据实施的处理器应用领域,例如:多媒体应用领域,相比执行标量指令的标量处理技术,执行向量指令的向量处理技术可以有效的提高处理器的数据处理性能。
目前的微处理器一般都提供了向量指令和位操作指令来加速一些比较规整的图形图像编解码计算,比如:向量加法指令,其可以将一个通用寄存器或者向量指令专用寄存器中的数据看做一个数组进行加法计算,且不同的向量加法指令可以将两个寄存器中不同位宽的元数据进行成组的加法计算。另外,为了在进行向量计算时快速的对一个向量寄存器中的元数据进行位置重排,一般提供了向量指令的微处理器也都提供了混洗指令用于实现存储了向量数据的寄存器中的元数据重排和移位。现有的单个向量寄存器中向量元数据的求和运算就是通过混洗指令和向量加法指令进行多次混洗相加实现的,向量寄存器的位宽越高,所需要的混洗和相加的次数越多。
而目前,处理器的向量寄存器位宽已经从64比特、128比特发展到256比特甚至更大的512比特的宽度,因此,如果仍然采用混洗指令和向量加法指令的组合来进行向量元数据的求和运算的话就需要更多次的混洗和相加,也即更多的指令,这样会明显降低向量元数据求和运算的速度。
发明内容
有鉴于此,本发明提供一种向量处理方法、向量处理单元和微处理器,用于提高向量元数据求和运算的速度。
为了实现上述目的,第一方面,本发明提供一种向量处理方法,该方法包括:
响应于向量指令中的向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;
对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
作为本发明一种可选的实施方式,向量等分加法指令包括指令码、源向量寄存器地址以及目标向量寄存器地址;指令码指示了向量元数据的数据类型和对向量元数据进行等分时的指定位宽;源向量寄存器地址指示了用于存储向量元数据的源向量寄存器的地址;目标向量寄存器地址指示了用于存储等宽元数据的目标向量寄存器的地址;
响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,包括:
根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,向量元数据的数据类型为有符号数或无符号数。
作为本发明一种可选的实施方式,根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,包括:
当指令码为第一操作码时,将源向量寄存器内存储的向量元数据按照字节等分为多个无符号等宽元数据;
当指令码为第二操作码时,将源向量寄存器内存储的向量元数据按照字节等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,包括:
当指令码为第三操作码时,将源向量寄存器内存储的向量元数据按照半字等分为多个无符号等宽元数据;
当指令码为第四操作码时,将源向量寄存器内存储的向量元数据按照半字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,包括:
当指令码为第五操作码时,将源向量寄存器内存储的向量元数据按照字等分为多个无符号等宽元数据;
当指令码为第六操作码时,将源向量寄存器内存储的向量元数据按照字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,包括:
当指令码为第七操作码时,将源向量寄存器内存储的向量元数据按照双字等分为多个无符号等宽元数据;
当指令码为第八操作码时,将源向量寄存器内存储的向量元数据按照双字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,包括:
当指令码为第九操作码时,将源向量寄存器内存储的向量元数据按照四字等分为多个无符号等宽元数据;
当指令码为第十操作码时,将源向量寄存器内存储的向量元数据按照四字等分为多个有符号等宽元数据。
第二方面,本发明提供一种向量处理单元,包括:
执行模块,用于响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;
求和模块,用于对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
作为本发明一种可选的实施方式,执行模块,具体用于:
根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,向量元数据的数据类型为有符号数或无符号数。
第三方面,本发明提供一种微处理器,包括上述第二方面任一实施方式的向量处理单元和多个向量寄存器,源向量寄存器和目标向量寄存器均为多个向量寄存器中的任意一个向量寄存器。
本发明提供的向量处理方法、向量处理单元和微处理器,向量处理单元响应于向量等分加法指令后,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,然后对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中;通过一条指令即完成了一个向量寄存器中存储的向量元数据的求和运算,大幅加速了向量寄存器中向量元数据求和运算的速度。
附图说明
图1为本发明实施例提供的向量处理方法的流程示意图;
图2为本发明实施例提供的一种向量寄存器等分结构示意图;
图3为本发明实施例提供的另一种向量寄存器等分结构示意图;
图4为本发明实施例提供的又一种向量寄存器等分结构示意图;
图5为本发明实施例提供的又一种向量寄存器等分结构示意图;
图6为本发明实施例提供的又一种向量寄存器等分结构示意图;
图7为本发明实施例提供的向量处理单元的结构示意图;
图8为本发明实施例提供的微处理器的结构示意图。
附图标记说明:
10-执行模块;
20-求和模块;
100-向量处理单元;
200-向量寄存器。
具体实施方式
针对现有技术中,单个向量寄存器中向量元数据的求和运算通过混洗指令和向量加法指令进行多次混洗相加实现,向量寄存器的位宽越高,所需要的混洗和相加的次数越多,导致向量元数据求和运算的速度越低的技术问题,本发明提供一种向量处理方法和微处理器,主要是通过一种新的能够将单个向量寄存器中的数据按照指定位宽等分为多个等宽元数据后相加求和的向量等分加法指令,由一条向量等分加法指令完成一个向量寄存器中存储的向量元数据的求和运算,来提高向量元数据求和运算的速度。
下面结合附图,对本发明的实施例进行描述。
图1为本发明实施例提供的向量处理方法的流程示意图,如图1所示,本实施例提供的方法包括如下步骤:
S101、响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据。
具体的,本实施例提供的方法可以应用于微处理器,微处理器包括向量处理单元和多个向量寄存器,向量处理单元可以运行向量指令,并根据向量指令访问向量寄存器。向量寄存器可以是通用寄存器、浮点寄存器和向量指令专用寄存器中的任意一种寄存器。本实施例中,源向量寄存器为多个向量寄存器中的任意一个向量寄存器。向量寄存器的位宽可以是64比特、128比特、256比特、512比特,甚至更大位宽,向量寄存器的具体位宽本实施例不做特别限定。
本实施例中,向量处理单元响应于向量等分加法指令后(即向量指令),可以从向量等分加法指令中获取源向量寄存器的地址,然后到该地址指示的源向量寄存器中取得向量元数据,按照向量等分加法指令的指示将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据。
在对源向量寄存器中的向量元数据按照指定位宽等分时,可以按照字节、半字、字、双字或四字,甚至更大位宽进行等分,当然,指令位宽也可以是其他整数个字节,如三字、五字等,具体可以根据图形图像编解码支持的宽度信息进行选择,本实施例不做特别限定。
另外,源向量寄存器中的向量元数据可以是无符号数,也可以是有符号数,对应的,等分后的等宽元数据可以是无符号数,也可以是有符号数。
需要说明的是,本实施例中,向量等分加法指令只是用于表示向量处理单元响应于该条指令后执行本实施例提供的向量元数据求和运算,该指令也可以是其他名称。
作为向量等分加法指令的一种具体实现方式,向量等分加法指令可以包括指令码、源向量寄存器地址以及目标向量寄存器地址;其中,指令码指示了向量元数据的数据类型和对向量元数据进行等分时的指定位宽;源向量寄存器地址指示了用于存储向量元数据的源向量寄存器的地址;目标向量寄存器地址指示了用于存储等宽元数据的目标向量寄存器的地址。
则,本步骤中具体的,向量处理单元根据指令码确定源向量寄存器内存储的向量元数据类型并将向量元数据等分为多个指定位宽的等宽元数据,其中,向量元数据类型为有符号数或无符号数。向量处理单元在执行向量等分加法指令时,从源向量寄存器地址指示的源向量寄存器中取向量元数据,向目标向量寄存器地址指示的目标向量寄存器中存储等宽元数据。
其中,向量等分加法指令中的指令码可以包括多种操作码:
当指令码为第一操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照字节等分为多个无符号等宽元数据;
当指令码为第二操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照字节等分为多个有符号等宽元数据;
当指令码为第三操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照半字等分为多个无符号等宽元数据;
当指令码为第四操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照半字等分为多个有符号等宽元数据;
当指令码为第五操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照字等分为多个无符号等宽元数据;
当指令码为第六操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照字等分为多个有符号等宽元数据;
当指令码为第七操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照双字等分为多个无符号等宽元数据;
当指令码为第八操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照双字等分为多个有符号等宽元数据;
当指令码为第九操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照四字等分为多个无符号等宽元数据;
当指令码为第十操作码时,向量处理单元将源向量寄存器内存储的向量元数据按照四字等分为多个有符号等宽元数据。
S102、对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
具体的,向量处理单元将源向量寄存器中的向量元数据等分为多个等宽元数据后,则对该多个等宽元数据同时进行求和运算,然后将求和的结果存入向量等分加法指令指示的目标向量寄存器中。这样无需进行多次的混洗和相加,从而可以大幅提高向量寄存器中向量元数据求和运算的速度。
目标向量寄存器与源向量寄存器可以为同一个向量寄存器,也可以为不同的向量寄存器。与源向量寄存器类似,目标向量寄存器也可以为多个向量寄存器中的任意一个向量寄存器。
下面通过举例来详细说明本发明的技术方案:
举例1:
图2所示是一个存储了16个以字节为单位元数据的128比特位宽的向量寄存器,通过本发明提供的向量等分加法指令可以将这16个字节的向量元数据,按照字节(8比特)均分为16个8比特的等宽元数据后,将16个等宽元数据当做无符号数或有符号数进行求和,然后将求和的结果存入目标向量寄存器中。向量等分加法指令具体的汇编指令形式如下:
BVADDU$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;BVADDU(即第一操作码)表示将$SRC向量寄存器中的向量元数据按照字节均分,把每个字节的等宽元数据当做无符号数看待,对均分后的所有无符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
BVADDS$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;BVADDS(即第二操作码)表示将$SRC向量寄存器中的向量元数据按照字节均分,把每个字节的等宽元数据当做有符号数看待,对均分后的所有有符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
举例2:
与举例1一样,图3所示是一个存储了16个以字节为单位元数据的128比特位宽的向量寄存器。与上述举例1所示的将向量寄存器中的向量元数据按照字节均分为16个等宽元数据不同,本举例2中,通过本发明提供的向量等分加法指令可以将这16个字节的向量元数据,按照半字(16比特)均分为8个16比特的等宽元数据,然后将8个等宽元数据当做无符号数或有符号数进行求和,并将求和的结果存入目标向量寄存器中。向量等分加法指令具体的汇编指令形式如下:
HVADDU$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;HVADDU(即第三操作码)表示将$SRC向量寄存器中的向量元数据按照半字均分,把每个16比特的等宽元数据当做无符号数看待,对均分后的所有无符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
HVADDS$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;HVADDS(即第四操作码)表示将$SRC向量寄存器中的向量元数据按照半字均分,把每个16比特的等宽元数据当做有符号数看待,对均分后的所有有符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
举例3:
举例1和举例2的向量寄存器位宽为128比特,如前所述,本发明不限定向量寄存器的位宽。图4所示是一个存储了16个以半字为单位元数据的256比特位宽的向量寄存器,通过本发明提供的向量等分加法指令可以将这个向量寄存器中的向量元数据,按照字(32比特)均分为8个等宽元数据后,将8个32比特的等宽元数据当做无符号数或有符号数进行求和,然后将求和的结果存入目标向量寄存器中。向量等分加法指令具体的汇编指令形式如下:
WVADDU$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;WVADDU(即第五操作码)表示将$SRC向量寄存器中的向量元数据按照字均分,把每个32比特的等宽元数据当做无符号数看待,对均分后的所有无符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
WVADDS$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;WVADDS(即第六操作码)表示将$SRC向量寄存器中的向量元数据按照字均分,把每个32比特的等宽元数据当做有符号数看待,对均分后的所有有符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
举例4:
与举例3一样,图5所示是一个存储了16个以半字为单位元数据的256比特位宽的向量寄存器。与上述举例3所示的将向量寄存器中的向量元数据按照字均分为8个等宽元数据不同,本举例4中,通过本发明提供的向量等分加法指令可以将向量寄存器中的向量元数据,按照双字(64比特)均分为4个64比特的等宽元数据,然后将4个等宽元数据当做无符号数或有符号数进行求和,将求和的结果存入目标向量寄存器中。向量等分加法指令具体的汇编指令形式如下:
DVADDU$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;DVADDU(即第七操作码)表示将$SRC向量寄存器中的向量元数据按照双字均分,把每个64比特的等宽元数据当做无符号数看待,对均分后的所有无符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
DVADDS$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;DVADDS(即第八操作码)表示将$SRC向量寄存器中的向量元数据按照双字均分,把每个64比特的等宽元数据当做有符号数看待,对均分后的所有有符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
举例5:
与举例4一样,图6所示是一个存储了16个以半字为单位元数据的256比特位宽的向量寄存器。与上述举例4所示的将向量寄存器中的向量元数据按照双字均分为4个等宽元数据不同,本举例5中,通过本发明提供的向量等分加法指令可以将向量寄存器中的向量元数据,按照四字(128比特)均分为2个128比特的等宽元数据后,将2个等宽元数据当做无符号数或有符号数进行求和,然后将求和的结果存入目标向量寄存器中。向量等分加法指令具体的汇编指令形式如下:
QVADDU$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;QVADDU(即第九操作码)表示将$SRC向量寄存器中的向量元数据按照四字均分,把每个128比特的等宽元数据当做无符号数看待,对均分后的所有无符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
QVADDS$DST,$SRC
其中,SRC表示源向量寄存器,DST表示目标向量寄存器;QVADDS(即第十操作码)表示将$SRC向量寄存器中的向量元数据按照四字均分,把每个128比特的等宽元数据当做有符号数看待,对均分后的所有有符号等宽元数据进行求和,求和的结果存入$DST寄存器中。
需要说明的是,上述各向量等分加法指令的指令码名称,即BVADDU、BVADDS、HVADDU、HVADDS、WVADDU、WVADDS、DVADDU、DVADDS、QVADDU、QVADDS,只是本发明提供的一种示例,具体也可以是其他名称,本实施例不做特别限定。
本实施例提供的向量处理方法,向量处理单元响应于向量指令中的向量等分加法指令后,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,然后对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中;通过一条指令即完成了一个向量寄存器中存储的向量元数据的求和运算,大幅加速了向量寄存器中向量元数据求和运算的速度。
图7为本发明实施例提供的向量处理单元的结构示意图,如图7所示,本实施例提供的向量处理单元包括:执行模块10和求和模块20;其中:
执行模块10,用于响应于向量指令中的向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;
求和模块20,用于对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
作为本发明一种可选的实施方式,向量等分加法指令包括指令码、源向量寄存器地址以及目标向量寄存器地址;指令码指示了向量元数据的数据类型和对向量元数据进行等分时的指定位宽;源向量寄存器地址指示了用于存储向量元数据的源向量寄存器的地址;目标向量寄存器地址指示了用于存储等宽元数据的目标向量寄存器的地址。
则执行模块10具体用于:
根据指令码确定源向量寄存器内存储的向量元数据的数据类型并将向量元数据等分为多个指定位宽的等宽元数据,向量元数据的数据类型为有符号数或无符号数。
作为本发明一种可选的实施方式,执行模块10具体用于:
当指令码为第一操作码时,将源向量寄存器内存储的向量元数据按照字节等分为多个无符号等宽元数据;
当指令码为第二操作码时,将源向量寄存器内存储的向量元数据按照字节等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,执行模块10具体用于:
当指令码为第三操作码时,将源向量寄存器内存储的向量元数据按照半字等分为多个无符号等宽元数据;
当指令码为第四操作码时,将源向量寄存器内存储的向量元数据按照半字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,执行模块10具体用于:
当指令码为第五操作码时,将源向量寄存器内存储的向量元数据按照字等分为多个无符号等宽元数据;
当指令码为第六操作码时,将源向量寄存器内存储的向量元数据按照字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,执行模块10具体用于:
当指令码为第七操作码时,将源向量寄存器内存储的向量元数据按照双字等分为多个无符号等宽元数据;
当指令码为第八操作码时,将源向量寄存器内存储的向量元数据按照双字等分为多个有符号等宽元数据。
作为本发明一种可选的实施方式,执行模块10具体用于:
当指令码为第九操作码时,将源向量寄存器内存储的向量元数据按照四字等分为多个无符号等宽元数据;
当指令码为第十操作码时,将源向量寄存器内存储的向量元数据按照四字等分为多个有符号等宽元数据。
本实施例提供的向量处理单元,可以执行上述图1所示实施例中的方法,其工作原理和技术效果类似,此处不再赘述。
本实施例提供的向量处理单元,响应于向量指令中的向量等分加法指令后,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,然后对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中;通过一条指令即完成了一个向量寄存器中存储的向量元数据的求和运算,大幅加速了向量寄存器中向量元数据求和运算的速度。
图8为本发明实施例提供的微处理器的结构示意图,如图8所示,本实施例提供的微处理器包括上述图7所示的实施例中的向量处理单元100和多个向量寄存器200,源向量寄存器和目标向量寄存器均为多个向量寄存器中的任意一个向量寄存器。
本发明实施例提供的微处理器,可以执行上述方法实施例,其实现原理和技术效果类似,此处不再赘述。
值得说明的是,所述多个向量寄存器包括:通用寄存器、浮点寄存器和向量指令专用寄存器。
本实施例提供的微处理器,其中的向量处理单元响应于向量指令中的向量等分加法指令后,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,然后对多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中;通过一条指令即完成了一个向量寄存器中存储的向量元数据的求和运算,大幅加速了向量寄存器中向量元数据求和运算的速度。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种向量处理方法,其特征在于,包括:
响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;
对所述多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
2.根据权利要求1所述的方法,其特征在于,所述向量等分加法指令包括指令码、源向量寄存器地址以及目标向量寄存器地址;所述指令码指示了所述向量元数据的数据类型和对所述向量元数据进行等分时的指定位宽;所述源向量寄存器地址指示了用于存储所述向量元数据的源向量寄存器的地址;所述目标向量寄存器地址指示了用于存储所述等宽元数据的目标向量寄存器的地址;
所述响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据,包括:
根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,所述向量元数据的数据类型为有符号数或无符号数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,包括:
当所述指令码为第一操作码时,将所述源向量寄存器内存储的向量元数据按照字节等分为多个无符号等宽元数据;
当所述指令码为第二操作码时,将所述源向量寄存器内存储的向量元数据按照字节等分为多个有符号等宽元数据。
4.根据权利要求2所述的方法,其特征在于,所述根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,包括:
当所述指令码为第三操作码时,将所述源向量寄存器内存储的向量元数据按照半字等分为多个无符号等宽元数据;
当所述指令码为第四操作码时,将所述源向量寄存器内存储的向量元数据按照半字等分为多个有符号等宽元数据。
5.根据权利要求2所述的方法,其特征在于,所述根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,包括:
当所述指令码为第五操作码时,将所述源向量寄存器内存储的向量元数据按照字等分为多个无符号等宽元数据;
当所述指令码为第六操作码时,将所述源向量寄存器内存储的向量元数据按照字等分为多个有符号等宽元数据。
6.根据权利要求2所述的方法,其特征在于,所述根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,包括:
当所述指令码为第七操作码时,将所述源向量寄存器内存储的向量元数据按照双字等分为多个无符号等宽元数据;
当所述指令码为第八操作码时,将所述源向量寄存器内存储的向量元数据按照双字等分为多个有符号等宽元数据。
7.根据权利要求2所述的方法,其特征在于,所述根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,包括:
当所述指令码为第九操作码时,将所述源向量寄存器内存储的向量元数据按照四字等分为多个无符号等宽元数据;
当所述指令码为第十操作码时,将所述源向量寄存器内存储的向量元数据按照四字等分为多个有符号等宽元数据。
8.一种向量处理单元,其特征在于,包括:
执行模块,用于响应于向量等分加法指令,将源向量寄存器中的向量元数据按照指定位宽等分为多个等宽元数据;
求和模块,用于对所述多个等宽元数据进行求和,将求和的结果存入目标向量寄存器中。
9.根据权利要求8所述的向量处理单元,其特征在于,所述执行模块,具体用于:
根据所述指令码确定所述源向量寄存器内存储的向量元数据的数据类型并将所述向量元数据等分为多个指定位宽的等宽元数据,所述向量元数据的数据类型为有符号数或无符号数。
10.一种微处理器,其特征在于,包括权利要求8或9所述的向量处理单元和多个向量寄存器,源向量寄存器和目标向量寄存器均为多个所述向量寄存器中的任意一个向量寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710685530.8A CN109388427A (zh) | 2017-08-11 | 2017-08-11 | 向量处理方法、向量处理单元和微处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710685530.8A CN109388427A (zh) | 2017-08-11 | 2017-08-11 | 向量处理方法、向量处理单元和微处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109388427A true CN109388427A (zh) | 2019-02-26 |
Family
ID=65413935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710685530.8A Pending CN109388427A (zh) | 2017-08-11 | 2017-08-11 | 向量处理方法、向量处理单元和微处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388427A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
CN115826910A (zh) * | 2023-02-07 | 2023-03-21 | 成都申威科技有限责任公司 | 一种向量定点的alu处理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064651A (zh) * | 1995-08-31 | 2013-04-24 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
CN103119579A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于向量整数乘加指令的功能单元 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
CN104866278A (zh) * | 2014-02-21 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 用于浮点复数平行加减的装置和方法 |
-
2017
- 2017-08-11 CN CN201710685530.8A patent/CN109388427A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064651A (zh) * | 1995-08-31 | 2013-04-24 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
CN103119579A (zh) * | 2010-09-24 | 2013-05-22 | 英特尔公司 | 用于向量整数乘加指令的功能单元 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN104866278A (zh) * | 2014-02-21 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 用于浮点复数平行加减的装置和方法 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
CN115826910A (zh) * | 2023-02-07 | 2023-03-21 | 成都申威科技有限责任公司 | 一种向量定点的alu处理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111213125B (zh) | 使用simd指令进行高效的直接卷积 | |
CN104303142B (zh) | 使用索引阵列和有限状态机的分散 | |
CN104077107B (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN115562729A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN109992304A (zh) | 用于加载片寄存器对的系统和方法 | |
CN110300957A (zh) | 数据处理装置中的加宽算数 | |
CN104133748B (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
US6212618B1 (en) | Apparatus and method for performing multi-dimensional computations based on intra-add operation | |
US9965275B2 (en) | Element size increasing instruction | |
CN109416633B (zh) | 用于执行重新排列操作的设备及方法 | |
CN107111484A (zh) | 四维莫顿坐标转换处理器、方法、系统和指令 | |
CN107667345A (zh) | 打包数据对齐加计算指令、处理器、方法和系统 | |
CN107111485A (zh) | 三维莫顿坐标转换处理器、方法、系统和指令 | |
CN109388427A (zh) | 向量处理方法、向量处理单元和微处理器 | |
US9256434B2 (en) | Generalized bit manipulation instructions for a computer processor | |
US20080288756A1 (en) | "or" bit matrix multiply vector instruction | |
JP2008108220A (ja) | 演算装置 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
CN114746840A (zh) | 用于乘法和累加操作的处理器单元 | |
US8732437B2 (en) | Low-overhead misalignment and reformatting support for SIMD | |
KR102649933B1 (ko) | 벡터 자리올림이 있는 가산 명령 | |
ES2905697T3 (es) | Sistemas, aparatos y métodos para generar un índice por orden de clasificación y reordenar elementos basándose en el orden de clasificación | |
CN112230993A (zh) | 数据处理方法及装置、电子设备 | |
CN109416634B (zh) | 数据处理设备和用于制造该设备的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190226 |
|
RJ01 | Rejection of invention patent application after publication |