CN112182496B - 用于矩阵乘法的数据处理方法及装置 - Google Patents
用于矩阵乘法的数据处理方法及装置 Download PDFInfo
- Publication number
- CN112182496B CN112182496B CN202011019241.2A CN202011019241A CN112182496B CN 112182496 B CN112182496 B CN 112182496B CN 202011019241 A CN202011019241 A CN 202011019241A CN 112182496 B CN112182496 B CN 112182496B
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- vector general
- instruction
- multiplication
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种用于矩阵乘法的数据处理方法、装置、设备和存储介质。其中,该数据处理方法包括:获取矩阵乘法指令和数据选择指令;基于矩阵乘法指令和数据选择指令,确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器;基于数据选择指令,在第二操作矩阵的第二数量的操作数据中确定目标操作数据;将第一操作矩阵的第一数量的操作数据分别提供至第一数量的乘法器作为第一乘法因子,并且将目标操作数据提供至第一数量的乘法器作为第二乘法因子。
Description
技术领域
本公开涉及数据处理领域,并且更具体地,涉及用于矩阵乘法的数据处理方法及装置。
背景技术
图形处理器(GPU)中包括大量数据处理单元,每个数据处理单元是单指令多数据流结构,通过执行一条指令同时控制多个线程上执行相同的操作,每个单指令多数据流结构中都有其专用的一组向量通用寄存器和大量可并行执行的运算单元,比如乘法单元。因为单指令多数据流结构具有高度的并行性,所以单指令多数据流结构被广泛应用于矩阵运算。
目前在进行矩阵运算时,特别是进行矩阵乘法运算时,由于矩阵乘法的特性,常常需要通过多次读取矩阵数据来实现矩阵对应元素相乘,并且在将矩阵数据读入寄存器后,该寄存器的所有通路上传送的数据都相同,线程间的数据存在大量冗余,还会造成额外的功耗。现有的数据处理手段可通过执行特定指令实现线程间数据的复制,但所用的指令并不适用于矩阵运算操作,而且操作线程间数据的指令都是作为独立于运算指令的单独指令存在,这对于实际数据处理来说仍然效率较低。
因此,需要一种适用于矩阵运算、能够有效减少读取次数、并且高效的数据处理方法。
发明内容
为了解决上述问题,本公开的实施例提供了一种用于矩阵乘法的数据处理方法,包括:获取矩阵乘法指令和数据选择指令;基于所述矩阵乘法指令和所述数据选择指令,确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器,其中,所述第一向量通用寄存器和所述第二向量通用寄存器具有相同数量的通路,其中所述第一操作矩阵的第一数量的操作数据对应于所述第一向量通用寄存器的第一数量的通路,所述第二操作矩阵的第二数量的操作数据对应于所述第二向量通用寄存器的第二数量的通路;基于所述数据选择指令,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据;将所述第一操作矩阵的第一数量的操作数据经由所述第一向量通用寄存器的第一数量的通路分别提供至所述第一数量的乘法器作为第一乘法因子,并且将所述目标操作数据经由所述第二向量通用寄存器的第一数量的通路提供至所述第一数量的乘法器作为第二乘法因子。
根据本公开的实施例,其中,所述方法还包括:基于所述矩阵乘法指令,确定用于存储所述矩阵乘法运算结果的第三向量通用寄存器;所述第一数量的乘法器中的各个乘法器分别基于其对应的所述第一乘法因子和所述第二乘法因子执行乘法运算,得到运算结果;以及将所述运算结果存储到所述第三向量通用寄存器中。
根据本公开的实施例,其中,所述矩阵乘法指令包含所述第一数量的线程,并且所述第一数量的乘法器对应于所述第一数量的线程,所述第一数量的线程中的每一线程分别对应于所述第一向量通用寄存器的相应通路和所述第二向量通用寄存器的相应通路;其中,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据包括:基于所述数据选择指令,在所述第二向量通用寄存器的所述第二数量的通路中选择一个通路,并将该通路所对应的操作数据作为目标操作数据;其中,将所述目标操作数据提供至所述第一数量的乘法器作为第二乘法因子包括:对于所述第一数量的线程中与所述第二向量通用寄存器的所述通路相对应的所述线程,将所述目标操作数据提供至其对应的乘法器作为第二乘法因子;以及对于所述第一数量的线程中的其余线程,将所述目标操作数据复制到所述其余线程的与所述第二向量通用寄存器连接的通路,并分别提供至对应的乘法器作为第二乘法因子。
根据本公开的实施例,其中,所述第一操作矩阵为列矩阵,所述第一数量的操作数据为所述第一操作矩阵的列数据;以及所述第二操作矩阵为行矩阵,所述第二数量的操作数据为所述第二操作矩阵的行数据。
根据本公开的实施例,其中,获取矩阵乘法指令和数据选择指令包括:获取矩阵乘法指令,所述矩阵乘法指令包括第一操作矩阵字段,第二操作矩阵字段,其中所述第一操作矩阵字段用于指示存储有所述第一操作矩阵的第一向量通用寄存器;以及在所述第二操作矩阵字段为预定义的值时,获取数据选择指令,所述数据选择指令包括操作矩阵字段和数据选择字段,其中所述操作矩阵字段用于指示存储有所述第二操作矩阵的第二向量通用寄存器,所述数据选择字段用于指示选择所述第二操作矩阵的第二数量的操作数据中的特定数据作为所述目标操作数据。
本公开的实施例提供了一种执行用于矩阵乘法的数据处理的装置,包括:取指单元,用于获取矩阵乘法指令和数据选择指令;译码单元,被配置为从所述取指单元接收所述矩阵乘法指令和所述数据选择指令,并对其进行译码,以确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器,并且获得数据选择信息,其中,所述第一向量通用寄存器和所述第二向量通用寄存器具有相同数量的通路,其中所述第一操作矩阵的第一数量的操作数据对应于所述第一向量通用寄存器的第一数量的通路,所述第二操作矩阵的第二数量的操作数据对应于所述第二向量通用寄存器的第二数量的通路;数据选择控制单元,被配置为从所述译码单元接收所述数据选择信息,并基于所述数据选择信息,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据;读操作数单元,被配置为将所述第一操作矩阵的第一数量的操作数据经由所述第一向量通用寄存器的第一数量的通路分别提供至所述第一数量的乘法器作为第一乘法因子,并且将所述目标操作数据经由所述第二向量通用寄存器的第一数量的通路提供至所述第一数量的乘法器作为第二乘法因子。
根据本公开的实施例,其中,所述译码单元还基于所述译码结果,确定用于存储所述矩阵乘法运算结果的第三向量通用寄存器,并且所述装置还包括:乘法单元,被配置为包括所述第一数量的乘法器,所述第一数量的乘法器中的各个乘法器分别基于其对应的所述第一乘法因子和所述第二乘法因子执行乘法运算,得到运算结果;运算写回单元,被配置为将所述运算结果存储到第三向量通用寄存器中。
根据本公开的实施例,其中,所述矩阵乘法指令包含所述第一数量的线程,并且所述第一数量的乘法器对应于所述第一数量的线程,所述第一数量的线程中的每一线程分别对应于所述第一向量通用寄存器的相应通路和所述第二向量通用寄存器的相应通路;其中,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据包括:基于所述数据选择指令,在所述第二向量通用寄存器的所述第二数量的通路中选择一个通路,并将该通路所对应的操作数据作为目标操作数据;其中,将所述目标操作数据提供至所述第一数量的乘法器作为第二乘法因子包括:对于所述第一数量的线程中与所述第二向量通用寄存器的所述通路相对应的所述线程,将所述目标操作数据提供至其对应的乘法器作为第二乘法因子;以及对于所述第一数量的线程中的其余线程,将所述目标操作数据复制到所述其余线程的与所述第二向量通用寄存器连接的通路,并分别提供至对应的乘法器作为第二乘法因子。
根据本公开的实施例,其中,所述第一操作矩阵为列矩阵,所述第一数量的操作数据为所述第一操作矩阵的列数据;以及所述第二操作矩阵为行矩阵,所述第二数量的操作数据为所述第二操作矩阵的行数据。
根据本公开的实施例,其中,获取矩阵乘法指令和数据选择指令包括:获取矩阵乘法指令,所述矩阵乘法指令包括第一操作矩阵字段,第二操作矩阵字段,其中所述第一操作矩阵字段用于指示存储有所述第一操作矩阵的第一向量通用寄存器;以及在所述第二操作矩阵字段为预定义的值时,获取数据选择指令,所述数据选择指令包括操作矩阵字段和数据选择字段,其中所述操作矩阵字段用于指示存储有所述第二操作矩阵的第二向量通用寄存器,所述数据选择字段用于指示选择所述第二操作矩阵的第二数量的操作数据中的特定数据作为所述目标操作数据。
本公开的实施例提供了一种数据处理设备,包括:处理器;和存储器,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如上所述的方法。
本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如上所述的方法。
本公开的实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的数据处理方法。
本公开的实施例提供了一种用于矩阵乘法的数据处理方法、装置、设备和存储介质。本公开的实施例提供的用于矩阵乘法的数据处理方法通过首先将整个矩阵读入向量通用寄存器,然后对向量通用寄存器的多个通路进行选择,将所选择的通路对应的数据复制到该向量通用寄存器的其他通路作为乘法因子以参与对应线程的乘法运算,充分利用了矩阵特性,在线程之间有效地复用数据,减少了数据的读取次数,降低了功耗。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出了根据本公开实施例的用于矩阵乘法的数据处理方法100的示意性流程图。
图2示出了根据本公开实施例的执行矩阵运算的线程与向量通用寄存器的通路之间的对应关系的示意图。
图3示出了根据本公开实施例的示例矩阵乘法的数据处理的示意图。
图4示出了根据本公开实施例的执行用于矩阵乘法的数据处理的示例装置400的示意图。
图5示出了根据本公开实施例的数据处理后半部分所涉及的示例数据选择控制单元403和读操作数单元404的工作示意图。
图6示出了根据本公开实施例的数据处理设备600的示意图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参考附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
在本说明书和附图中,基本上相同或相似的步骤和元素用相同或相似的附图标记来表示,并且对这些步骤和元素的重复描述将被省略。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性或排序。
在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方便解释而无意将本公开限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下文另有明确说明。
GPU的单指令多数据流结构处理单元通过执行矩阵运算指令来同时控制多个线程上执行相同的操作,以实现矩阵读取、运算操作、结果存入等。例如,对于单指令多数据流32结构,执行一条指令可以同时控制32个线程的数据操作,每个单指令多数据流32结构中都有其专用的一组向量通用寄存器,每个向量通用寄存器具有32个通路。下表1示出了通用的矩阵运算指令,其是单指令多数据流结构中执行矩阵运算操作时采用的传统指令,其包括指示存储有第一操作矩阵的第一向量通用寄存器的第一操作矩阵(VSRCA)字段,指示存储有第二操作数的第二向量通用寄存器的第二操作数(SRCB)字段,指示用于存储矩阵运算结果的第三向量通用寄存器的目的向量通用寄存器(VDST)字段,指示该矩阵运算指令所执行的具体操作的操作码(OP)字段,以及指示确定执行该矩阵运算指令的指令选择(Type)字段。其中,通过将矩阵运算指令中的OP字段设置为指示乘法操作的相应值,可以获得矩阵乘法指令。
Type | OP | VDST | VSRCA | SRCB |
表1
在单指令多数据流32结构下采用通用矩阵运算指令格式的矩阵乘法指令来执行矩阵乘法A*B,其中矩阵A是32×1的列矩阵,即A(:,1)包含32个数据,矩阵B是1×4的行矩阵,即B(1,:)包含4个数据。
对于上述矩阵乘法运算,常采用的现有技术是将矩阵数据从双倍数据速率同步动态随机存取存储器(DDRSDRAM)逐个读入向量通用寄存器。首先将矩阵A读入向量通用寄存器0中,然后将矩阵B的四个矩阵数据分别读入四个向量通用寄存器(分别称为向量通用寄存器1、向量通用寄存器2、向量通用寄存器3和向量通用寄存器4)中,每次运算将向量通用寄存器0的32个通路对应的数据,与向量通用寄存器1、向量通用寄存器2、向量通用寄存器3或向量通用寄存器4的32个通路对应的数据送至单指令多数据流结构中对应的乘法器进行乘法运算。此过程涉及多次从DDRSDRAM中读取数据,比如在此运算中读取次数为5次,造成了不必要的数据冗余以及额外功耗。
因此,为了解决上述问题,本公开提出对操作矩阵仅进行单次读取(即,将整个第二操作矩阵一次性读入第二向量通用寄存器),并相应地在原矩阵乘法指令的基础上增加一部分指令用于指导矩阵内数据的有序相乘操作。
下面将结合附图对本公开的实施例进行进一步描述。
图1示出了根据本公开实施例的用于矩阵乘法的数据处理方法100的示意性流程图。
如图1所示,首先,在步骤101中,获取矩阵乘法指令和数据选择指令。例如,可以从存储器(比如DDRSDRAM等)中获取矩阵乘法指令和数据选择指令。
根据本公开的实施例,在原有的矩阵乘法指令的基础上,增加一段操作线程间数据的指令部分,以指导矩阵乘法过程中第二操作矩阵内参与运算的数据的选择与复制,本公开中将上述增加的指令部分称为数据选择指令,如表2所示。将原本用于指示第二向量通用寄存器的SRCB字段作为获取数据选择指令的入口,由数据选择指令来指示存储有第二操作矩阵的第二向量通用寄存器。数据选择指令可以包括用于指示第二向量通用寄存器的第二操作矩阵(VSRCB)字段,以及用于指示数据选择的数据选择(SVF_MODE)字段。应了解,根据本公开的实施例,矩阵乘法指令和数据选择指令可以作为两个分离指令存在,或者可以作为一个指令的两个部分存在。在下面的描述中,用于矩阵乘法的数据处理方法100所采用的单指令多数据流指令包括上述矩阵乘法指令和数据选择指令两部分。
保留字段 | SVF_MODE | VSRCB |
表2
根据本公开的实施例,例如,单指令多数据流指令的长度可以为64比特,其前32比特为矩阵运算指令部分,矩阵运算指令中各比特域的定义及相关描述如表3所示;其后32比特为数据选择指令部分,数据选择指令中各比特域的定义及相关描述如表4所示。
参见表3,在此单指令多数据流指令的矩阵运算指令部分中,第0至8比特为SRCB字段,此字段可指示存储有第二操作数的第二向量通用寄存器(例如,当SRCB值等于90或267等值时),当SRCB值等于预定义的值时,此字段指示进入数据选择,获取数据选择指令(例如,当SRCB值等于209时)。第9至16比特为VSRCA字段。第17至24比特为VDST字段。第25至30比特为OP字段,对于矩阵乘法指令,OP字段为特定的多个值之一。第31比特为Type字段,用于指示确定执行此矩阵运算指令。
表3
参见表4,在此单指令多数据流指令的数据选择指令部分中,第32至39比特为VSRCB字段。第40至44比特为SVF_MODE字段,长度为5比特的SVF_MODE可用于指示32个线程间数据的复制操作。其余比特为指令的保留字段,可保留用于后续实现其他操作。
表4
在步骤102中,可以基于矩阵乘法指令和数据选择指令,确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器。
根据本公开的实施例,可以根据矩阵乘法指令中的VSRCA字段和数据选择指令中的VSRCB字段,获得存储有第一操作矩阵的第一向量通用寄存器以及存储有第二操作矩阵的第二向量通用寄存器的地址信息,该地址信息可以是该向量通用寄存器在该单指令多数据流结构处理单元的所有向量通用寄存器中的索引。
根据本公开实施例,可以预先将第一操作矩阵存储到第一向量通用寄存器中,并预先将第二操作矩阵存储到第二向量通用寄存器中,其中,第一向量通用寄存器和第二向量通用寄存器具有相同数量的通路,其中第一操作矩阵的第一数量的操作数据对应于第一向量通用寄存器的第一数量的通路,第二操作矩阵的第二数量的操作数据对应于第二向量通用寄存器的第二数量的通路。
根据本公开的实施例,通过将第一操作矩阵和第二操作矩阵分别存储到第一向量通用寄存器和第二向量通用寄存器中,单指令多数据流结构处理单元可以根据所获得的第一向量通用寄存器和第二向量通用寄存器的地址信息,对于第一操作矩阵的第一数量的操作数据与第二操作矩阵的第二数量的操作数据进行乘法运算,第一操作矩阵的第一数量的操作数据对应于第一向量通用寄存器的第一数量的通路,第二操作矩阵的第二数量的操作数据对应于第二向量通用寄存器的第二数量的通路。根据本公开的实施例,例如,对于单指令多数据流32结构,第一向量通用寄存器和第二向量通用寄存器都具有32个通路,因此向量通用寄存器可以同时提供所存储的矩阵中的最多32个数据参与运算。
根据本公开的实施例,例如,对于矩阵乘法A*B,其中第一操作矩阵A为32×1的列矩阵,第一数量的操作数据为A(:,1)的32个列数据,第二操作矩阵B为1×4的行矩阵,第二数量的操作数据为B(1,:)的4个行数据。存储有矩阵A的向量通用寄存器A的32个通路分别对应于矩阵A中A(:,1)的32个数据,而存储有矩阵B的向量通用寄存器B的32个通路中的前4个通路分别对应于矩阵B中B(1,:)的4个数据,向量通用寄存器B的其他通路不与任何数据对应。
图2示出了根据本公开实施例的执行矩阵运算的线程与向量通用寄存器的通路之间的对应关系的示意图。
根据本公开的实施例,矩阵乘法指令包含第一数量的线程,其中每一线程分别对应于第一向量通用寄存器的相应通路和第二向量通用寄存器的相应通路。
如图2所示,上述矩阵乘法指令包含与A(:,1)的32个列数据对应的32个线程,图2示出了各线程分别对应于第一向量通用寄存器的相应通路和第二向量通用寄存器的相应通路,例如,线程0对应于第一向量通用寄存器的通路0和第二向量通用寄存器的通路0,线程1对应于第一向量通用寄存器的通路1和第二向量通用寄存器的通路1,以此类推。其中,以线程0为例,线程0对应的第二向量通用寄存器的通路0对应于B(1,:)的第一个数据B(1,1),经过将第二向量通用寄存器的通路0对应的数据B(1,1)复制到32个线程中的其余线程所对应的第二向量通用寄存器的31个通路,32个线程所对应的第二向量通用寄存器的32个通路对应的数据都为B(1,1)。
接下来,回到图1,在步骤103中,可以基于数据选择指令,在第二操作矩阵的第二数量的操作数据中确定目标操作数据。
根据本公开的实施例,基于数据选择指令,可根据SVF_MODE值确定其所指示的第二向量通用寄存器的通路,并将该通路所对应的操作数据作为目标操作数据,例如,当SVF_MODE=1时,将第二向量通用寄存器的通路1所对应的操作数据确定为目标操作数据。
在步骤104中,可以将第一操作矩阵的第一数量的操作数据经由第一向量通用寄存器的第一数量的通路分别提供至第一数量的乘法器作为第一乘法因子,并且将目标操作数据经由第二向量通用寄存器的第一数量的通路提供至第一数量的乘法器作为第二乘法因子。
根据本公开的实施例,矩阵乘法指令可包含第一数量的线程,并且第一数量的乘法器对应于第一数量的线程。对于第一数量的线程中与第二向量通用寄存器的通路相对应的线程,可将目标操作数据提供至其对应的乘法器作为第二乘法因子,而对于第一数量的线程中的其余线程,可通过将目标操作数据复制到其余线程所对应的第二向量通用寄存器的通路,来将目标操作数据提供至对应的乘法器作为第二乘法因子,例如,当SVF_MODE=1时,将线程1对应的第二向量通用寄存器的通路1所对应的目标操作数据提供至线程1对应的乘法器的输入端,并将此目标操作数据复制到其余线程对应的第二向量通用寄存器的通路所连接的乘法器的输入端以进行乘法运算。
根据本公开的实施例,可以基于矩阵乘法指令来确定用于存储矩阵乘法运算结果的第三向量通用寄存器,该第三向量通用寄存器具有与第一向量通用寄存器和第二向量通用寄存器相同数量的通路,第一数量的乘法器中的各个乘法器可以分别基于其对应的第一乘法因子和第二乘法因子来执行乘法运算,得到运算结果之后,将运算结果经由对应的第一数量的通路存储到第三向量通用寄存器中。
图3示出了根据本公开实施例的示例矩阵乘法的数据处理的示意图。
如图3所示,本实施例中单指令多数据流示例为单指令多数据流32结构,每个向量通用寄存器包括32个通路,在此结构下执行矩阵乘法A*B=C,其中第一操作矩阵A为32×1的列矩阵,第二操作矩阵B为1×4的行矩阵,相应地,结果矩阵C为32×4的矩阵,涉及的硬件通用矩阵算法为
存储有矩阵A的向量通用寄存器A的各个通路分别对应矩阵A的列向量中的各个数据,存储有矩阵B的向量通用寄存器B的各个通路分别对应矩阵B的行向量中的各个数据,各线程上分别执行向量通用寄存器A的相应通路所对应的数据与向量通用寄存器B中的目标操作数据的乘法操作。
本实施例中具体操作如下:
向量通用寄存器A的32个通路分别对应矩阵A的列向量A(:,1)的32个数据A(1,1),A(2,1),…,A(32,1);
SVF_MODE=0时,将B(1,1)复制到向量通用寄存器B的32个通路(图3中用一个虚线箭头表示此过程),向量通用寄存器A和向量通用寄存器B的各通路所对应的数据相应地相乘,所得结果分别经由向量通用寄存器C的对应的32个通路存入向量通用寄存器,得到矩阵C的列向量C(:,1);
以此类推,SVF_MODE=1时,将B(1,2)复制到向量通用寄存器B的32个通路,向量通用寄存器A和向量通用寄存器B的各通路所对应的数据相应地相乘,得到矩阵C的列向量C(:,2);
SVF_MODE=2时,将B(1,3)复制到向量通用寄存器B的32个通路,向量通用寄存器A和向量通用寄存器B的各通路所对应的数据相应地相乘,得到矩阵C的列向量C(:,3);
SVF_MODE=3时,将B(1,4)复制到向量通用寄存器B的32个通路,向量通用寄存器A和向量通用寄存器B的各通路所对应的数据相应地相乘,得到矩阵C的列向量C(:,4),从而求得矩阵C。
下面,具体描述根据本公开的实施例的用于矩阵乘法的数据处理过程的具体操作。
首先,将用于矩阵乘法的操作矩阵分别读入指定向量通用寄存器,然后在用于矩阵乘法的矩阵乘法指令和数据选择指令中给出所述指定向量通用寄存器,并且相应地改变SVF_MODE值。由此,无需多次执行数据读取和存储,仅通过一次数据读取即可完成列矩阵和行矩阵的矩阵乘法。例如,本公开所述方法的部分汇编指令示例可表示如下:
buffer_load_b32 v0,v_addr_0;
buffer_load_b32 v80,v_addr_1;
v_mul_u32 v100,v0,v80,SVF_MODE=0;
v_mul_u32 v101,v0,v80,SVF_MODE=1;
v_mul_u32 v102,v0,v80,SVF_MODE=2;
v_mul_u32 v103,v0,v80,SVF_MODE=3;
具体地,在上述汇编指令中,首先,通过buffer_load_b32指令,将矩阵A从地址v_addr_0读入寄存器v0中,通过buffer_load_b32指令,将矩阵B从地址v_addr_1读入寄存器v80中,寄存器v0和v80均能存储32个数据。
接下来,基于寄存器v0和v80,对这两个寄存器中的数据进行矩阵操作。具体地,通过指令“v_mul_u32 v100,v0,v80,SVF_MODE=0”,定义了根据本公开实施例的表3和表4中的参数OP、VDST、VSRCA、VSRCB、以及SVF_MODE。其中,v_mul_u32为操作码,其指示了32位乘法操作,其中,v0指示了第一操作矩阵A的寄存器,v80指示了第二操作矩阵B的寄存器,通过改变SVF_MODE值来选择第二操作矩阵B中的目标操作数据,v100/v101/v102/v103指示用于存储第一操作矩阵A和目标操作数据的乘法结果的中间寄存器,从而实现了单指令多数据流结构下基于单次读取操作矩阵的矩阵乘法运算。
应当理解,单指令多数据流结构以及参与乘法运算的矩阵不限于上述举例,而是本领域技术人员可以根据实际情况进行调整,在此不一一举例。
图4示出了根据本公开实施例的执行用于矩阵乘法的数据处理的示例装置400的示意图。
如图4所示,根据本公开实施例的执行用于矩阵乘法的数据处理的装置400可以包括:取指单元401、译码单元402、数据选择控制单元403、以及读操作数单元404。
取指单元401可以被配置用于获取矩阵乘法指令和数据选择指令。例如取指单元401可以将指令从诸如DDRSDRAM的存储器取到指令寄存器。
译码单元402可以被配置为从取指单元401接收矩阵乘法指令和数据选择指令,并对这些指令进行译码,以确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器,并且获得数据选择信息,其中,第一向量通用寄存器和第二向量通用寄存器具有相同数量的通路,第一操作矩阵的第一数量的操作数据对应于第一向量通用寄存器的第一数量的通路,第二操作矩阵的第二数量的操作数据对应于第二向量通用寄存器的第二数量的通路。译码单元402按照预定的指令格式来对取得的指令进行拆分和解释,获得诸如向量通用寄存器地址和操作等信息,此外,基于数据选择指令还可以获得相应的数据选择信息,可用诸如数据选择信号(SVF_MODE)的形式来传送该信息,以指导后续第二操作矩阵中的数据选择操作。
数据选择控制单元403可以被配置为从译码单元402接收数据选择信息,并基于该数据选择信息,在第二操作矩阵的第二数量的操作数据中确定目标操作数据。例如,数据选择控制单元403中,可将第二操作矩阵的第二数量的操作数据通过由数据选择信息(例如,SVF_MODE)控制的选择器以选出目标操作数据。
读操作数单元404可以被配置为将第一操作矩阵的第一数量的操作数据经由第一向量通用寄存器的第一数量的通路分别提供至第一数量的乘法器作为第一乘法因子,并且将目标操作数据经由第二向量通用寄存器的第一数量的通路提供至第一数量的乘法器作为第二乘法因子。读操作数单元404可将目标操作数据复制到第二向量通用寄存器的通路中与上述第一数量的乘法器连接的第一数量的通路上,以提供至对应的乘法器作为第二乘法因子。
根据本公开的实施例,译码单元402还可以被配置为基于译码结果,确定用于存储矩阵乘法运算结果的第三向量通用寄存器。
根据本公开的实施例,如图4所示,执行用于矩阵乘法的数据处理方法的装置400还可以包括:乘法单元405,其可以被配置为包括第一数量的乘法器,其中各个乘法器分别基于其对应的第一乘法因子和第二乘法因子执行乘法运算,得到运算结果;以及运算写回单元406,其可以被配置为将乘法运算结果存储到第三向量通用寄存器中。
图5示出了根据本公开实施例的数据处理后半部分所涉及的示例数据选择控制单元403和读操作数单元404的工作示意图。
如图5所示,数据选择控制单元403基于从译码单元402所接收的数据选择控制信息(由SVF_MODE作为数据选择信号),在向量通用寄存器B的32个通路上,将矩阵B的32个第二操作数据经过一个32选1的选择器,选出向量通用寄存器B的指定通路所对应的第二操作数据(即,目标操作数据)。之后,由读操作数单元404将矩阵A的32个第一操作数据分别经由向量通用寄存器A的32个通路提供至32个乘法器的第一输入端,将目标操作数据提供至向量通用寄存器B的指定通路所连接的乘法器的第二输入端,并将目标操作数据复制到向量通用寄存器B的其余通路,然后提供至其余乘法器的第二输入端。
图6示出了根据本公开实施例的数据处理设备600的示意图。
如图6所示,根据本公开实施例的数据处理设备600可以包括处理器601以及存储器602,其可以通过总线603进行互联。
处理器601可以根据存储在存储器602中的程序或代码执行各种动作和处理。具体地,处理器601可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中公开的各种方法、步骤、流程及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或者是ARM架构等。
存储器602存储有可执行指令,该指令在被处理器601执行时用于实现根据本公开实施例的数据处理方法。存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DRRAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,该计算机指令被处理器执行时可以实现根据本公开实施例的数据处理方法。类似地,本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的数据处理方法。
本公开的实施例提供了一种用于矩阵乘法的数据处理方法、装置、设备和存储介质。本公开的实施例提供的用于矩阵乘法的数据处理方法通过首先将整个矩阵读入向量通用寄存器,然后对向量通用寄存器的多个通路进行选择,将所选择的通路对应的数据复制到该向量通用寄存器的其他通路作为乘法因子以参与对应线程的乘法运算,充分利用了矩阵特性,在线程之间有效地复用数据,减少了数据的读取次数,降低了功耗。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。
Claims (12)
1.一种用于矩阵乘法的数据处理方法,包括:
获取矩阵乘法指令和数据选择指令;
基于所述矩阵乘法指令和所述数据选择指令,确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器,其中,所述第一向量通用寄存器和所述第二向量通用寄存器具有相同数量的通路,其中所述第一操作矩阵的第一数量的操作数据对应于所述第一向量通用寄存器的第一数量的通路,所述第二操作矩阵的第二数量的操作数据对应于所述第二向量通用寄存器的第二数量的通路;
基于所述数据选择指令,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据;
将所述第一操作矩阵的第一数量的操作数据经由所述第一向量通用寄存器的第一数量的通路分别提供至所述第一数量的乘法器作为第一乘法因子,并且将所述目标操作数据经由所述第二向量通用寄存器的第一数量的通路提供至所述第一数量的乘法器作为第二乘法因子,其中,所述第二向量通用寄存器的第一数量的通路包括所述目标操作数对应的指定通路,且所述目标操作数据被复制到所述第二向量通用寄存器的第一数量的通路中除所述指定通路外的其余通路,以分别提供至对应的乘法器作为所述第二乘法因子。
2.如权利要求1所述的方法,还包括:
基于所述矩阵乘法指令,确定用于存储所述矩阵乘法运算结果的第三向量通用寄存器;
所述第一数量的乘法器中的各个乘法器分别基于其对应的所述第一乘法因子和所述第二乘法因子执行乘法运算,得到运算结果;以及
将所述运算结果存储到所述第三向量通用寄存器中。
3.如权利要求1所述的方法,其中,所述矩阵乘法指令包含所述第一数量的线程,并且所述第一数量的乘法器对应于所述第一数量的线程,所述第一数量的线程中的每一线程分别对应于所述第一向量通用寄存器的相应通路和所述第二向量通用寄存器的相应通路;
其中,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据包括:
基于所述数据选择指令,在所述第二向量通用寄存器的所述第二数量的通路中选择一个通路,并将该通路所对应的操作数据作为目标操作数据;
其中,将所述目标操作数据提供至所述第一数量的乘法器作为第二乘法因子包括:
对于所述第一数量的线程中与所述第二向量通用寄存器的所述通路相对应的所述线程,将所述目标操作数据提供至其对应的乘法器作为第二乘法因子;以及
对于所述第一数量的线程中的其余线程,将所述目标操作数据复制到所述其余线程的与所述第二向量通用寄存器连接的通路,并分别提供至对应的乘法器作为第二乘法因子。
4.如权利要求1所述的方法,其中,
所述第一操作矩阵为列矩阵,所述第一数量的操作数据为所述第一操作矩阵的列数据;以及
所述第二操作矩阵为行矩阵,所述第二数量的操作数据为所述第二操作矩阵的行数据。
5.如权利要求1所述的方法,其中获取矩阵乘法指令和数据选择指令包括:
获取矩阵乘法指令,所述矩阵乘法指令包括第一操作矩阵字段,第二操作矩阵字段,其中所述第一操作矩阵字段用于指示存储有所述第一操作矩阵的第一向量通用寄存器;以及
在所述第二操作矩阵字段为预定义的值时,获取数据选择指令,所述数据选择指令包括操作矩阵字段和数据选择字段,其中所述操作矩阵字段用于指示存储有所述第二操作矩阵的第二向量通用寄存器,所述数据选择字段用于指示选择所述第二操作矩阵的第二数量的操作数据中的特定数据作为所述目标操作数据。
6.一种用于矩阵乘法的数据处理的装置,包括:
取指单元,用于获取矩阵乘法指令和数据选择指令;
译码单元,被配置为从所述取指单元接收所述矩阵乘法指令和所述数据选择指令,并对其进行译码,以确定存储有第一操作矩阵的第一向量通用寄存器,以及存储有第二操作矩阵的第二向量通用寄存器,并且获得数据选择信息,其中,所述第一向量通用寄存器和所述第二向量通用寄存器具有相同数量的通路,其中所述第一操作矩阵的第一数量的操作数据对应于所述第一向量通用寄存器的第一数量的通路,所述第二操作矩阵的第二数量的操作数据对应于所述第二向量通用寄存器的第二数量的通路;
数据选择控制单元,被配置为从所述译码单元接收所述数据选择信息,并基于所述数据选择信息,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据;
读操作数单元,被配置为将所述第一操作矩阵的第一数量的操作数据经由所述第一向量通用寄存器的第一数量的通路分别提供至所述第一数量的乘法器作为第一乘法因子,并且将所述目标操作数据经由所述第二向量通用寄存器的第一数量的通路提供至所述第一数量的乘法器作为第二乘法因子,其中,所述第二向量通用寄存器的第一数量的通路包括所述目标操作数对应的指定通路,且所述目标操作数据被复制到所述第二向量通用寄存器的第一数量的通路中除所述指定通路外的其余通路,以分别提供至对应的乘法器作为所述第二乘法因子。
7.如权利要求6所述的装置,其中,所述译码单元还基于译码结果,确定用于存储所述矩阵乘法运算结果的第三向量通用寄存器,并且所述装置还包括:
乘法单元,被配置为包括所述第一数量的乘法器,所述第一数量的乘法器中的各个乘法器分别基于其对应的所述第一乘法因子和所述第二乘法因子执行乘法运算,得到运算结果;
运算写回单元,被配置为将所述运算结果存储到第三向量通用寄存器中。
8.如权利要求6所述的装置,其中:
所述矩阵乘法指令包含所述第一数量的线程,并且所述第一数量的乘法器对应于所述第一数量的线程,所述第一数量的线程中的每一线程分别对应于所述第一向量通用寄存器的相应通路和所述第二向量通用寄存器的相应通路;
其中,在所述第二操作矩阵的第二数量的操作数据中确定目标操作数据包括:
基于所述数据选择指令,在所述第二向量通用寄存器的所述第二数量的通路中选择一个通路,并将该通路所对应的操作数据作为目标操作数据;
其中,将所述目标操作数据提供至所述第一数量的乘法器作为第二乘法因子包括:
对于所述第一数量的线程中与所述第二向量通用寄存器的所述通路相对应的所述线程,将所述目标操作数据提供至其对应的乘法器作为第二乘法因子;以及
对于所述第一数量的线程中的其余线程,将所述目标操作数据复制到所述其余线程的与所述第二向量通用寄存器连接的通路,并分别提供至对应的乘法器作为第二乘法因子。
9.如权利要求6所述的装置,其中:
所述第一操作矩阵为列矩阵,所述第一数量的操作数据为所述第一操作矩阵的列数据;以及
所述第二操作矩阵为行矩阵,所述第二数量的操作数据为所述第二操作矩阵的行数据。
10.如权利要求6所述的装置,其中获取矩阵乘法指令和数据选择指令包括:
获取矩阵乘法指令,所述矩阵乘法指令包括第一操作矩阵字段,第二操作矩阵字段,其中所述第一操作矩阵字段用于指示存储有所述第一操作矩阵的第一向量通用寄存器;以及
在所述第二操作矩阵字段为预定义的值时,获取数据选择指令,所述数据选择指令包括操作矩阵字段和数据选择字段,其中所述操作矩阵字段用于指示存储有所述第二操作矩阵的第二向量通用寄存器,所述数据选择字段用于指示选择所述第二操作矩阵的第二数量的操作数据中的特定数据作为所述目标操作数据。
11.一种数据处理设备,包括:
处理器;和
存储器,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如权利要求1-5中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019241.2A CN112182496B (zh) | 2020-09-24 | 2020-09-24 | 用于矩阵乘法的数据处理方法及装置 |
PCT/CN2020/122168 WO2022062004A1 (zh) | 2020-09-24 | 2020-10-20 | 用于矩阵乘法的数据处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019241.2A CN112182496B (zh) | 2020-09-24 | 2020-09-24 | 用于矩阵乘法的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112182496A CN112182496A (zh) | 2021-01-05 |
CN112182496B true CN112182496B (zh) | 2022-09-16 |
Family
ID=73943664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011019241.2A Active CN112182496B (zh) | 2020-09-24 | 2020-09-24 | 用于矩阵乘法的数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112182496B (zh) |
WO (1) | WO2022062004A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722669B (zh) * | 2021-11-03 | 2022-01-21 | 海光信息技术股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN115880132B (zh) * | 2023-02-06 | 2023-05-23 | 南京砺算科技有限公司 | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
CN106445471B (zh) * | 2016-10-13 | 2018-06-01 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
GB2563878B (en) * | 2017-06-28 | 2019-11-20 | Advanced Risc Mach Ltd | Register-based matrix multiplication |
US10534838B2 (en) * | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
CN111198670B (zh) * | 2018-11-20 | 2021-01-29 | 华为技术有限公司 | 执行矩阵乘法运算的方法、电路及soc |
CN111079081B (zh) * | 2019-12-16 | 2021-02-12 | 海光信息技术股份有限公司 | 一种矩阵乘法器、数据处理方法、集成电路器件及处理器 |
CN111124492B (zh) * | 2019-12-16 | 2022-09-20 | 成都海光微电子技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
-
2020
- 2020-09-24 CN CN202011019241.2A patent/CN112182496B/zh active Active
- 2020-10-20 WO PCT/CN2020/122168 patent/WO2022062004A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN112182496A (zh) | 2021-01-05 |
WO2022062004A1 (zh) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669330B2 (en) | Method for performing random read access to a block of data using parallel LUT read instruction in vector processors | |
US5864703A (en) | Method for providing extended precision in SIMD vector arithmetic operations | |
US7042466B1 (en) | Efficient clip-testing in graphics acceleration | |
US9760375B2 (en) | Register files for storing data operated on by instructions of multiple widths | |
CN112182496B (zh) | 用于矩阵乘法的数据处理方法及装置 | |
CN107766079B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
US20110320765A1 (en) | Variable width vector instruction processor | |
US4314333A (en) | Data processor | |
US20180060069A1 (en) | Apparatus and methods related to microcode instructions | |
US6006315A (en) | Computer methods for writing a scalar value to a vector | |
JP3747936B2 (ja) | データプロセッサの結果レジスタの選択したサブワード位置に結果を送る並列サブワード命令 | |
US20190347099A1 (en) | Arithmetic operation with shift | |
US20080215855A1 (en) | Execution unit for performing shuffle and other operations | |
US20190196831A1 (en) | Memory apparatus and method for controlling the same | |
WO2023077769A1 (zh) | 数据处理方法、装置以及设备和计算机可读存储介质 | |
CN113722669B (zh) | 数据处理方法、装置、设备及存储介质 | |
US9652686B2 (en) | Optimized fast feature detection for vector processors | |
US6904510B1 (en) | Data processor having a respective multiplexer for each particular field | |
US4812970A (en) | Microprogram control system | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
US11385897B2 (en) | Merge execution unit for microinstructions | |
US11354126B2 (en) | Data processing | |
US8001358B2 (en) | Microprocessor and method of processing data including peak value candidate selecting part and peak value calculating part | |
JP2006293741A (ja) | プロセッサ | |
JPS61123967A (ja) | メモリ回路 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |