CN119836622A - 多外积指令 - Google Patents
多外积指令 Download PDFInfo
- Publication number
- CN119836622A CN119836622A CN202380064200.0A CN202380064200A CN119836622A CN 119836622 A CN119836622 A CN 119836622A CN 202380064200 A CN202380064200 A CN 202380064200A CN 119836622 A CN119836622 A CN 119836622A
- Authority
- CN
- China
- Prior art keywords
- source vector
- outer product
- source
- vector operand
- operand
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30109—Register structure having multiple operands in a single register
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
一种多外积指令指定多个第一源向量操作数、至少一个第二源向量操作数和与该第二源向量操作数相关联的相关性信息,每个向量操作数包括多个数据元素,并且该相关性信息对给定第二源向量操作数的每个数据元素指示对应第一源向量操作数。响应于该多外积指令,指令解码器电路(50)控制处理电路(60)执行计算以实施外积运算,这些外积运算包括对给定第一源向量操作数执行该第一源向量操作数与该第二源向量操作数的数据元素的子集的相关联外积。该处理电路取决于该相关性信息来为该第二源向量操作数的每个数据元素选择待在执行该相关联外积运算时使用的对应第一源向量操作数。
Description
本技术涉及数据处理领域。
数据处理装置可包括能够执行其中计算两个向量的外积的外积运算的处理电路。处理电路可进一步被布置成在不同对的向量上执行多个外积运算,以将两个矩阵乘在一起。
外积和矩阵乘法具有若干个应用。例如,人工神经网络(ANN)的执行一般涉及矩阵乘法。
然而,乘法运算可是相对缓慢的,并且每个外积运算(更不用说每个矩阵乘法)一般涉及大数目的乘法运算(例如,输入向量中的每对数据元素一个乘法)。因此,可存在与执行外积运算相关联的显著性能影响,并且因此提供更有效率地执行外积运算的技术,尤其在将执行多个外积运算的情况中,将是所欲的。
在本技术的第一示例中,提供一种装置,该装置包括:
处理电路,该处理电路用以执行向量运算;和
指令解码器电路,该指令解码器电路解码来自一组指令的指令以控制该处理电路执行由这些指令指定的这些向量运算,
其中:
该组指令包括指定多个第一源向量操作数、至少一个第二源
向量操作数和与该至少一个第二源向量操作数相关联的相关性信
息的多外积指令,其中每个向量操作数包括多个数据元素,并且对
于给定第二源向量操作数,该相关性信息被布置成对该给定第二源
向量操作数的每个数据元素指示对应第一源向量操作数;
该指令解码器电路响应于该多外积指令来控制该处理电路执
行多个计算以实施多个外积运算,其中该多个外积运算包括对给定
第一源向量操作数执行相关联外积运算以计算该给定第一源向量
操作数与该至少一个第二源向量操作数的数据元素的子集的外积;
并且
该处理电路被配置成取决于该相关性信息来为该至少一个第
二源向量操作数的每个数据元素选择待在执行该相关联外积运算
时使用的对应第一源向量操作数。
在本技术的第二示例中,提供一种方法,该方法包括:
使用处理电路执行向量运算;
解码来自一组指令的指令以控制该处理电路执行由这些指令指定的这些向量运算,
其中:
该组指令包括指定多个第一源向量操作数、至少一个第二源
向量操作数和与该至少一个第二源向量操作数相关联的相关性信
息的多外积指令,其中每个向量操作数包括多个数据元素,并且对
于给定第二源向量操作数,该相关性信息被布置成对该给定第二源
向量操作数的每个数据元素指示对应第一源向量操作数;
该方法包括响应于该多外积指令来执行多个计算以实施多个
外积运算,其中该多个外积运算包括对给定第一源向量操作数执行
相关联外积运算以计算该给定第一源向量操作数与该至少一个第
二源向量操作数的数据元素的子集的外积;并且
取决于该相关性信息来为该至少一个第二源向量操作数的每
个数据元素选择待在执行该相关联外积运算时使用的对应第一源
向量操作数。
在本技术的第三示例中,提供一种包括指令的计算机程序,这些指令在计算机上执行时控制该计算机以提供:
处理程序逻辑,该处理程序逻辑用以执行向量运算;和
指令解码器程序逻辑,该指令解码器程序逻辑解码来自一组目标指令的目标指令,以控制该处理程序逻辑执行由这些目标指令指定的这些向量运算,
其中:
该组指令目标包括指定多个第一源向量操作数、至少一个第
二源向量操作数和与该至少一个第二源向量操作数相关联的相关
性信息的多外积指令,其中每个向量操作数包括多个数据元素,并
且对于给定第二源向量操作数,该相关性信息被布置成对该给定第
二源向量操作数的每个数据元素指示对应第一源向量操作数;
该指令解码器程序逻辑响应于该多外积指令来控制该处理程
序逻辑执行多个计算以实施多个外积运算,其中该多个外积运算包
括对给定第一源向量操作数执行相关联外积运算以计算该给定第
一源向量操作数与该至少一个第二源向量操作数的数据元素的子
集的外积;并且
该处理程序逻辑被配置成取决于该相关性信息来为该至少一
个第二源向量操作数的每个数据元素选择待在执行该相关联外积
运算时使用的对应第一源向量操作数。
在一些示例中,上文描述的该计算机程序存储在计算机可读存储介质上。该计算机可读存储介质可是暂态或非暂态的。
本技术的进一步方面、特征和优点将由于结合附图阅读的以下示例描述而显而易见,在这些附图中:
图1示出数据处理装置的框图;
图2展示可提供在装置内的包含用于存储向量操作数的向量寄存器和用于存储数据元素的2D阵列的阵列寄存器的架构寄存器的示例,包含阵列寄存器的物理具体实施的示例;
图3A和图3B示意地示出可如何对阵列存储装置内的方形2D阵列执行存取;
图4A示出外积运算;
图4B示出矩阵乘法运算;
图5、图6A和图6B示出矩阵中的N:M结构化稀疏性;
图7展示使用乘法-累加(MAC)阵列将激活矩阵乘以权重矩阵的示例;
图8A和图8B示出可如何压缩具有2:4和4:8结构化稀疏性的矩阵;
图9示出待相乘的输入矩阵中的一个输入矩阵是经压缩矩阵的矩阵乘法;
图10是数据处理装置的框图,示出处理电路如何用以执行外积运算;
图11A和图11B示出经生成的外积结果可如何用以更新阵列存储装置的2D阵列内的相关联存储元件;
图12示意地示出可提供在多外积指令内的字段;
图13至图15示出多个外积指令的示例和相关性信息可如何表示的示例;
图16和图17示出用于执行外积和运算的电路的示例;
图18是示出在解码多外积指令时所执行的步骤的流程图;并且
图19示出可使用的模拟器具体实施。
在参照附图讨论示例具体实施之前,提供以下示例具体实施和相关联优点的描述。
根据一个示例配置,提供一种装置,该装置包括处理电路和指令解码器电路。该指令解码器电路(在本文中也称为解码器电路或指令解码器)被布置成解码来自一组指令的指令,并控制该处理电路以执行由这些指令指定的这些向量运算。例如,指令解码器电路可响应于该组指令中的指令以生成控制信号,并且这些控制信号可控制处理电路以执行向量运算。
向量运算是在向量操作数上执行的运算——例如,包括多个数据元素的操作数。向量运算可包含涉及至少一个向量操作数的任何运算,例如用以从/向存储位置(例如,存储器或高速缓存)加载/存储向量的加载或存储运算,或在向量操作数上执行的算术运算(例如,加法、乘法)。在本技术中,处理电路能够执行包含至少外积运算的向量运算。例如,向量操作数可(但不一定需要)存储在向量寄存器中,其中单一向量寄存器可存储整个向量操作数,或其中单一向量操作数可分散在多个向量寄存器之间(并且因此单一向量寄存器可存储来自多个向量操作数的元素)。
指令解码器电路被配置成解码以用于由处理电路执行的该组指令包含至少“多外积”(MOP)指令。MOP指令定义在指令集架构(ISA)中,并标识(直接或间接地,例如,通过标识存储对应数据值的寄存器,例如,标识指令的相应字段中的)至少以下:
·多个(例如,两个或更多个)第一源向量操作数;
·至少一个(例如,一个或多个)第二源向量操作数;和
·与该至少一个第二源向量操作数相关联的相关性信息。
应注意到,用语“第一”和“第二”仅是标记,并且第一和第二源向量操作数不一定需要是由指令分别指定的第一和第二操作数(的群组)。相反地,第一和第二源向量操作数(的群组)可以任何顺序由MOP指令标识。
每个源向量操作数(例如,该第二源向量操作数和该多个第一源向量操作数的每个第一源向量操作数)包括多个数据元素,并且对于给定第二源向量操作数,该相关性信息被布置成对该给定第二源向量操作数中的每个数据元素指示(例如,标识,直接或间接地)对应第一源向量操作数。相关性信息还可(可选地)标识用于由指令标识的任何其它第二源向量操作数中的数据元素的对应第一源向量操作数(例如,如果一个以上第二源向量操作数由MOP指令标识)。因此,相关性信息标识第二源向量操作数中的与个别第一源向量操作数相关联的任何数据元素。
该指令解码器电路响应于该MOP指令来控制该处理电路执行多个计算以实施多个外积运算——例如,响应于由指令解码器电路解码的单一MOP指令,处理电路被配置成执行生成等效于执行两个或更多个外积运算的结果的计算。响应于经解码MOP指令来待由处理电路执行的多个外积运算包括用于通过该MOP指令标识的第一源向量操作数的至少子集中的每个的外积运算。更明确地说,处理电路对给定第一操作数执行相关联外积运算以计算该第一源向量操作数与至少一个第二源向量操作数的数据元素的子集(例如,这可是真子集——例如,一些而非全部数据元素)的外积。至少一个第二源向量操作数的待用于每个外积运算的数据元素的子集是基于相关性信息来标识的——具体来说,基于相关性信息来为至少一个第二源向量操作数的每个数据元素选择待在执行相关联外积运算时使用的对应第一源向量操作数。(应注意到,外积运算不一定需要对第一源向量操作数的每一个,或对至少一个第二源向量操作数的每一个子集执行。)
以此方式,通过提供相关性信息以使第一源向量操作数与至少一个第二源向量操作数中的数据元素相关联,即使仅有一个第二源向量操作数由该指令指定,响应于单一指令来执行多个外积运算。这与一般(例如,“单一”)外积运算成对比,其中单一外积运算是通过将一个源向量的每个数据元素乘以另一源向量的每个数据元素来执行的。
通过定义使多个外积运算能够响应于该指令的单一实例来执行的指令(MOP指令),由处理电路执行的指令的通量可显著改善。因此,本技术的MOP指令允许改善处理电路的性能。实际上,在一个示例具体实施中,这些多个外积运算可并行地执行,甚至进一步改善通量。
除了增加通量外,提供相关性信息以使至少一个第二源向量操作数中的数据元素的子集与个别的第一源向量操作数相关联允许该至少一个第二源向量操作数经定义成使得多个向量有效地压缩至一个源向量操作数中。此外,以此方式使用相关性信息在如何将多个向量压缩至单一第二源向量操作数上提供自由度——例如,相关性信息允许多个向量经压缩使得来自该多个向量的任一个的数据元素可占据至少一个第二源向量操作数中的任何数据元素位置——包含连续和/或非连续数据元素。
提供支持基于源向量操作数执行多个外积运算的指令在若干个情境中可是有利的,该源向量操作数可包括来自已压缩至较小数目的源向量操作数中的多个向量的数据元素。在一个特定非限制性示例中,这可允许包括一个或多个“零”元素的向量以更紧密形式表示。
例如,因为外积运算依赖乘法——例如,将一个向量中的每个数据元素乘以另一向量中的每个数据元素——并且因为任何数目乘以零是零,通过移除一些或所有的零元素来有效地压缩用于外积运算的输入向量是可行的。因为结果向量的其它对应元素(例如,其将具有零值)可从所得外积移除(导致不正确的结果),可假设在执行外积运算之前必需将等于零的向量元素重插入至输入向量中。然而,本技术的方法——其中使用相关性信息以标识哪些第一源向量操作数与一个或多个第二源向量操作数中的哪些元素相关联——可允许等于零的输入向量元素从一个或多个源向量操作数移除而不改变外积运算的结果。
因此,本技术可允许此类向量以使得这些向量可在存储经压缩操作数的任何数据存储结构中占用较少空间的方式表示(例如,通过从向量移除等于零的数据元素,使得待记录的数据元素的总数目——并且因此存储结构中存储这些结构所需的空间——降低)。降低在存储装置中占用的空间量提供许多优点,包含如果数据存储在易失性存储装置中,则降低能量消耗,并且在加载、操控和存储向量时降低延迟和功率消耗。进一步地,通过降低源向量的一个或多个中的数据元素的数目、待执行的乘法的总数目降低,导致与运算相关联的整体延迟降低且增加数据通量。
因此,在指令集架构(ISA)中提供对MOP指令的支持可在数据处理装置中在性能上提供显著改善。
应理解,至少一个第二源向量操作数表示多个向量的经压缩形式或这些多个向量在一个或多个数据元素中包括零不是必要的。这仅是MOP指令可如何用以改善性能以及降低功率消耗的一个示例。
应理解,虽然通过执行MOP指令生成的结果等效于计算多个外积运算,当执行MOP指令时,每个向量操作数的个别数据元素由处理电路使用/消耗的顺序取决于具体实施。例如,外积运算不一定需要一次执行一个(例如,通过依次考虑每个第一源向量操作数)。取而代之,在本技术的至少一些示例具体实施中,可依次考虑至少一个第二源向量操作数中的每个数据元素(例如,为至少一个第二源向量操作数中的给定数据元素选择适当的第一源向量操作数)。在其它具体实施中,可并行地考虑至少一个第二源向量中的所有数据元素,其中并行地为第二源操作数的每个元素选择对应第一源向量操作数。这些方法——其中为至少一个第二源向量中的每个数据元素选择第一源向量操作数——可是更有效率的,因为它们可能仅需要产生单一回合的每个第二源向量操作数,而非必须扫描过每个第二源向量操作数多次(由于如果外积运算一次执行一个,可能有此情形)。然而,将理解,其它具体实施也可用以生成等效结果。
在一些示例中,该装置包括阵列存储电路,该阵列存储电路包括存储数据元素的存储元件,该阵列存储电路被布置成存储当执行这些向量运算时可由该处理电路存取的数据元素的至少一个二维(2D)阵列。在此类示例中,该多外积指令可将数据元素的给定二维阵列指定在形成目的地操作数的该阵列存储装置内,并且该处理电路可被配置成通过将给定第一源向量操作数的每个数据元素乘以该至少一个第二源向量操作数的该数据元素的子集中的每个数据元素以生成多个外积结果元素,并且使用每个外积结果元素更新保持在该存储元件的给定二维阵列内的相关联存储元件中的值来执行该给定第一源向量操作数的该相关联外积运算。
阵列存储电路(其可例如包括一组阵列寄存器)可提供用于执行某些类型的运算(例如外积运算)的有用机制。具体来说,由于执行外积运算而产生的数据元素矩阵可存储在表示在阵列存储电路中的2D阵列的相关联数据元素内。
然而,本技术的发明人在一些示例使用情形中认知到,如上文提及的,当使用两个源向量执行外积运算时,可有源向量的一个或两个中的一些元素是零的情形。这可导致2D阵列的存储元件的无效率使用,因为相当数目的这些存储元件接着不可使用或仅将用以存储零值,并且还可导致形成处理电路(其可能能够执行计算以产生用于存储元件中的每个存储元件的结果)的硬件组件的资源的无效率使用。然而,根据本文描述的技术,可定义单一指令(即,上文讨论的MOP指令),通过将至少一个第二源向量操作数中的数据元素的子集与对应的第一源向量操作数相关联的相关性信息的使用,使多外积运算能够执行,其中每个外积运算的结果是存储在二维(2D)阵列的相关联存储元件内。这可显著改善通量(如上文提到的),同时还使阵列存储装置内的可用存储元件更有效率地使用。
应注意到,每个外积结果与2D阵列中的相关联存储元件之间不一定需要是1:1相关。例如,在一些情形中,多个外积结果可用以确定保持在给定存储元件中的值,其中额外运算(例如累加(加法)运算)经执行以组合多个外积结果。
在一些示例中,该处理电路包括在执行多个外积运算时生成每个外积结果的乘法电路,和与该乘法电路相关联的复用器电路,该复用器电路在该相关性信息的控制下选择待相乘的该多个第一源向量操作数的经选择数据元素和该至少一个第二源向量操作数的经选择数据元素以生成相关联外积结果元素。
例如,乘法电路可包含乘法器电路——例如,这可是用于将两个值乘在一起的简单乘法器,或将两个值乘在一起并将结果加至累加值的乘法-累加(MAC)电路——该乘法器电路与存储元件的2D阵列中的每个存储元件相关联。在MAC电路的情形中,相同的MAC电路可将经选择数据元素乘在一起以生成相关联外积结果,并将相关联外积结果加至目前存储在阵列存储电路的相关联存储元件中的值(其可是零)。然而,每个乘法器电路或MAC电路与2D阵列中的每个存储元件之间可不一定是1:1相关——例如,每存储元件可有一个乘法器/MAC(在该情形中,外积结果存储在待并行地计算的每个存储元件中是可行的),或每存储元件可有少于一个乘法器/MAC(在该情形中,每个乘法器/MAC用以串行地计算多个存储元件的外积结果)。
然而,提供许多乘法器电路,提供与乘法电路相关联的复用器电路允许选择用于每个乘法运算的数据元素,因此促成本技术的MOP指令的具体实施。
在一些示例中,该相关性信息包括至少一组索引,并且该至少一组索引包括将该给定第二源向量操作数的每个数据元素与该对应第一源向量操作数相关联的索引。
例如,可为给定第二源向量操作数的每个数据元素提供索引。替代地,每个索引可与给定第二源向量操作数中的多个数据元素相关联。
在一些示例中,该相关性信息是由该多外积指令所指定的至少一个相关性源操作数提供的,并且给定相关性源操作数针对该给定第二源向量操作数的每个数据元素包括对应元素,该对应元素包括将该给定第二源向量操作数的该数据元素与该对应第一源向量操作数相关联的该索引。
在形成相关性信息的一组索引中对至少一个第二源向量的每个数据元素提供索引提供用于确定哪个索引对应于该第二源向量操作数的哪个数据元素的简单机制,其可继而简化处理且因此提供性能上的改善。
作为特定示例,该组索引可存储为多位可扩缩值(例如,在标量寄存器或谓词寄存器中),其中每个位与一个或多个向量寄存器的一个向量寄存器中的不同向量元素相关联。在另一示例中,该组索引可存储为向量(例如,在向量寄存器中),其中该向量中的每个数据元素保持用于至少一个第二源向量操作数中的对应数据元素的一个或多个索引。将理解,这些仅是该组索引可如何存储的一些示例,并且其它示例也是可行的。
在一些示例中,该相关性信息包括用于每个第二源向量操作数的一组索引。
例如,如果MOP指令指定多个第二源向量操作数,其也可为每个第二源向量操作数标识单独的一组索引。因此,索引组的数目可至少与第二源向量操作数的数目一样大。
在一些示例中,该至少一组索引包括提供用于多个第二源向量操作数的该相关性信息的一组索引。
因此,取代为每个第二源向量操作数指示一组索引,由MOP指令标识的每一组索引为一个以上第二源操作数提供相关性信息也是可行的。因此,在此示例中,索引组的数目可小于第二源向量的数目。有利地,在所使用的寄存器的尺寸/宽度是固定且相对大的具体实施中,这允许降低由相关性信息占用的存储空间量。
在一些示例中,该相关性信息是由该多外积指令所指定的至少一个相关性源操作数提供的,并且给定相关性源操作数的每个元素包括多个索引,该多个索引包括用于该多个第二源向量操作数的每个第二源向量操作数的对应数据元素的索引。
因此,在这些示例中,给定相关性源操作数的每个元素提供多个索引,包含每个第二源向量的至少一个索引。在特定示例中,给定元素中的顶部位可提供用于第一源向量的数据元素的索引,而底部位提供用于第二源向量的数据元素的索引。此方法利用索引可各自以比存在于相关性源操作数的每个元素中的空间更少的位形成的事实。因此,多个索引可存储在相关性源操作数的每个元素中,使得需要较少的存储空间来存储相关性信息。
在一些示例中,由该处理电路执行的每个外积运算基于该至少一个第二源向量操作数的数据元素的不同子集。
例如,至少一个第二源向量操作数的数据元素的每个子集可包括与每个其它子集不同的数据元素(例如,每个外积运算可基于第二源向量操作数的不同数据元素)。在这些示例中,至少一个第二源向量操作数的用于外积运算的任两个的数据元素的子集以至少一个数据元素相异。应注意到,“数据元素”通常是指向量操作数中的特定数据元素位置,而非保持在该位置中的特定数值。因此,不同子集中的数据元素的数值可能不一定相异,因为给定源向量操作数中的多个数据元素保持具有相同数值的数据是可能的。进一步地,应注意到,子集可以一个以上数据元素相异——作为特定示例,至少一个第二源向量操作数中的每个数据元素可是至多一个数据元素的子集的部分。
以此方式,多个向量可表示在每个第二源向量操作数中,其中每个子集表示不同向量,并且多个外积运算可基于多个向量执行。
在一些示例中,该多外积指令包括外积和指令,使得多个外积结果在该存储元件的给定二维阵列内具有相同的相关联存储元件,并且该处理电路被配置成组合这些多个外积结果以更新保持在该相关联存储元件中的该值。
存在MOP指令的许多可能应用,但在此示例中,MOP指令是外积和指令(其也可称为“多外积和指令(SMOP)”),其执行涉及将多个外积结果累加至2D阵列的单一存储元件中。由于MOP指令的此变化允许响应于单一指令来将两个矩阵乘在一起,其可是有利的。
在一些示例中,该装置包括一组向量寄存器,该组向量寄存器可由该处理电路存取,其中每个向量寄存器被布置成存储包括多个数据元素的向量,并且该多个第一源向量操作数和该至少一个第二源向量操作数包括该组向量寄存器的向量寄存器内所含的向量。
向量是包括多个(一个以上)数据元素的一维(1D)阵列。在数学上,一维阵列可将数据元素向量表示为单一列或单一行的数据元素;在数据处理系统(例如此示例中的装置)中,向量的数据元素存储在单一向量寄存器内。因为每个标量操作数包括单一数据项目(例如,向量中的每个数据元素可是标量操作数),向量操作数与标量操作数成对比。由于允许并行地在多个数据元素上操作(例如,使用单指令多数据(SIMD)处理),存储和操纵呈向量形式的数据元素(在其上执行运算)是有利的。这可大幅改善性能,尤其当在大数据阵列上执行运算(例如,矩阵乘法)时,其中响应于单一指令来在多个数据元素上操作的能力可通过增加通量而显著地改善性能。
在一些示例中,该装置包括能够由该处理电路存取的一组谓词寄存器,其中每个谓词寄存器被布置成存储包括多个元素的谓词信息,每个元素提供谓词值,并且该相关性信息存储在该组谓词寄存器中的至少一个谓词寄存器内。
数据处理系统——例如此示例的装置——可具备一组谓词寄存器以存储谓词(例如,谓词信息)。例如,每个谓词可是使用在向量处理中的真/伪(例如,1/0)值的掩码——例如,谓词可指示应或不应在向量中的哪些数据元素上操作。此示例将谓词寄存器用于另一目的:存储相关性信息。如果数据元素的每个子集已提供在一个单独向量寄存器中(例如,以断定零值),此方法由于其使用可能已用以执行外积运算的电路(谓词寄存器)而是有利的。因此,此方法提供相关性信息而不需要占用额外存储空间(例如,占用额外架构寄存器,或存储器、高速缓存、或一些其它存储结构中的额外空间)。
在一些示例中,每个第二源向量操作数中的这些数据元素表示来自源矩阵的多个行和多个列的数据值。
如上文提及的,存在本技术的MOP指令可是有用的若干个情境。然而,在特定示例中,MOP指令可使用在矩阵乘法中。在此示例中,至少一个第二源向量操作数中的数据元素的每个子集可表示源矩阵的不同行/列,并且因此本技术提供矩阵的更紧密表示。
在一些示例中,该给定相关性源操作数的每个元素被布置成使该源矩阵能够从该至少一个第二源向量操作数重建。
例如,给定相关性源操作数的每个元素可指示第二源向量操作数的一个或多个对应元素来自原始矩阵的哪个行/列。作为特定示例,每个元素可是1和0的位映像,指示原始矩阵的哪些行/列保持非零值(例如,如果原始矩阵具有两个行且第一位映像是(1,0),这可指示给定第二源向量操作数中的第一数据元素表示矩阵的第一行的第一数据元素)。此方法的优点在于其捕获与原始矩阵格式有关的信息,所以简单地将第二源向量操作数解压缩回原始矩阵。
在一些示例中,每个第二源向量操作数中的每个数据元素与该源矩阵中的对应第一维相关联,其中该对应第一维包括该源矩阵中的对应行或对应列,并且每个第二源向量操作数中的每个数据元素提供从该源矩阵中的该对应第一维中的这些数据值中选择的数据值。
例如,给定第二源向量操作数中的第一数据元素可是源矩阵的给定行/列中的第一数据元素,并且相关性信息可指示该数据元素来自哪个行/列。因此,以此方式,由多个行/列(例如,多个向量)组成的矩阵可压缩至较小数目的向量操作数中。
在一些示例中,源矩阵包括具有N:M结构化稀疏性的矩阵,其中源矩阵中的经定义的M个数据值的每个群组包括至多N个非零数据值。
在具有结构化稀疏性的矩阵中,特定(例如,经定义)的M个数据元素群组经限制为具有至多N个非零值。这可是“修剪”ANN的结果,其可导致以零置换矩阵中的一些数据元素。N和M的值是具体实施相依的——例如,2:4和4:8的比率是常见的;更一般来说,可使用M=2N的比率,或只要N小于M(N<M),可使用任何其它比率。
当矩阵具有结构化稀疏性时,通过移除零值压缩矩阵以占用较少存储空间是可行的;以此方式,降低由矩阵所占用的存储空间量(其导致性能改善和降低功率消耗,尤其当加载/存储数据元素时)。可能认为此方法的不利因素是在数据元素上执行任何数据处理操作(例如,外积运算)之前需要将第二源向量解压缩回源矩阵的额外处理。然而,本发明人认知到,这些经压缩矩阵可与指示数据元素来自源矩阵的哪些行或列的相关性信息组合而使用为MOP指令的操作数。以此方式,不仅由矩阵占用的存储空间量降低,因为多个外积运算可响应于单一MOP指令来执行,也改善在执行矩阵乘法时所涉及的延迟(导致性能的进一步改善)。
应注意到,源矩阵中的M个数据元素的每个群组是经定义/特定群组——不是源矩阵中的任何M个元素群组皆可使用。例如,给定的M个元素群组可在一个维度(例如,行或列)上取得并对准(例如,如果M=4,给定行中的前四个元素可形成一个群组)。
在一些示例中,源矩阵包括在人工神经网络(ANN)执行时使用的权重矩阵或激活矩阵。
如上文提到的,ANN的节点一般表示为权重矩阵,并且这些矩阵可是大的。类似地,输入至ANN的节点的数据一般采取激活矩阵的形式。因为这些矩阵可是大的,并且ANN中的节点的数目一般是非常大的,一般需要相当的数据量以表示ANN。因此,通过清除权重矩阵中的一些数据元素(例如,将它们设置为零)以修剪神经网络可是有用的。具体来说,这可根据经定义N:M稀疏性以结构化方式完成。这允许将表示ANN的矩阵压缩至较小数目的向量操作数中,提供上文讨论的所有优点(例如,数据存储装置的更有效率的使用、更佳性能、和较低的功率消耗)。将理解,当执行ANN时,假定涉及大量数据,这些优点尤其显著。
上文讨论的技术可实施在具有实施上述处理电路、指令解码器电路、和其它装置特征的支持作为由解码电路和处理电路所支持的本地指令集架构的部分的多外积(MOP)指令的电路硬件的硬件装置中。
然而,在另一示例中,相同技术可实施在计算机程序(例如,架构模拟器或模型)中,其可提供用于控制主机数据处理装置以提供用于来自目标代码的指令的执行的指令执行环境。计算机程序可包含指令解码程序逻辑以用于解码目标代码的指令,以控制主机数据处理装置执行包含执行向量运算的数据处理。因此,指令解码程序逻辑仿真如上文讨论的硬件装置的指令解码器(指令解码器电路)的功能性。程序还可包含处理程序逻辑以当在主机数据处理装置上执行时执行数据处理(且因此仿真上述处理电路的功能性)。再者,程序可包含维护表示(仿真)由该程序模拟的指令集架构的架构寄存器的数据结构(在主机装置的存储器或架构寄存器内)的寄存器维护程序逻辑——例如,这些架构寄存器可包含任何或所有的向量寄存器、标量寄存器、阵列寄存器、和谓词寄存器。指令解码程序逻辑包含对MOP指令的支持,该MOP指令具有与上文针对硬件示例的描述相同的功能性。因此,此类模拟器计算机程序可对在模拟器计算机程序上执行的目标代码呈现与将由能够直接执行目标指令集的实际硬件装置提供的环境类似的指令执行环境,即使在正在执行模拟器程序的主机计算机上可能不存在提供这些特征的任何实际硬件。因此,通过提供上述装置的模拟,模拟器计算机程序提供于上文讨论的相关于该装置的所有优点。另外,模拟对于在不实际支持一个指令集架构的主机平台上执行针对该架构编写的代码可是有用的。再者,在软件开发与支持新架构的硬件设备的开发并行地执行的同时,模拟器在开发新版本的指令集架构的软件的期间可是有用的。这可允许软件在模拟器上开发和测试,使得软件开发可在支持新架构的硬件设备可用之前开始。
模拟器程序可存储于存储介质上,并且该存储介质可是暂态或非暂态的。
现在将参考附图描述特定实施方案。
图1示意地示出数据处理系统10,该数据处理系统包括耦合至存储器30的处理器20,该存储器存储数据值32和程序指令34。处理器20包含用于从存储器30提取程序指令34并将这些经提取程序指令供应至指令解码器电路50的指令提取单元40。解码器电路50解码这些经提取程序指令,并生成控制信号以控制处理电路60对寄存器存储装置65的存储元件内所保持的数据值执行处理计算,如由这些经解码向量指令所指定。如图1所示,寄存器存储装置65可由多个不同块形成。例如,可提供标量寄存器文件70,该标量寄存器文件包括可通过指令指定的多个标量寄存器,并且类似地,可提供向量寄存器文件80,该向量寄存器文件包括可通过指令指定的多个向量寄存器。
如图1所示,处理器20可存取阵列存储装置90。在图1所示的示例中,阵列存储装置90经提供作为处理器20的部分,但这非必要。在各种示例中,该阵列存储装置可实施为以下中的任一者或多者:架构上可寻址寄存器;非架构上可寻址寄存器;高速暂存存储器;和高速缓存。
在示例具体实施中,处理电路60可包括向量处理电路和标量处理电路两者。标量处理与向量处理之间的大致区别如下。向量处理可涉及将单一向量处理指令施加至数据向量的数据元素,该数据向量在数据向量中的相应位置处具有多个数据元素。该处理电路还可执行向量处理以对存储在阵列存储装置90内的二维阵列数据元素(其也可称为子阵列)内的多个向量执行运算。标量处理有效地对单一数据元素进行运算,但非对数据向量。向量处理可用于其中对待处理的数据的许多不同实例实行处理操作的实例中。在向量处理布置中,单一指令可同时施加于(数据向量的)多个数据元素。相较于标量处理,这可改善数据处理的效率和产出量。
处理器20可被布置成处理存储在阵列存储装置90中的二维阵列数据元素。在至少一些示例中,该二维阵列可作为一维向量数据元素在多个方向存取。在示例具体实施中,阵列存储装置90可被布置成存储一个或多个二维阵列数据元素,并且每个二维阵列数据元素可在存储器中形成较大或甚至较高维阵列数据元素的方形阵列部分。
寄存器存储装置65还包含谓词寄存器文件75。这存储谓词信息(例如,掩码)以用于在数据处理操作中使用(例如,以掩盖掉向量的某些数据元素,使得它们从特定处理操作排除)。
图2展示在示例具体实施中可提供的处理器20的架构寄存器65的示例。架构寄存器(如指令集架构(ISA)中所定义的)可包含一组标量寄存器(未图示)和用于存储谓词信息的一组谓词寄存器100。谓词寄存器还可存储用于执行多外积(MOP)指令的相关性信息,如将在下文讨论的。例如,可存在一定数目的谓词寄存器100,在此示例中,提供例如16个寄存器P0至P15。谓词寄存器可具有固定尺寸,尽管取决于存储在谓词寄存器中的元素的数据类型,可能不一定使用每个元素中的一些位。
再者,可供由解码器50支持的ISA中的程序指令选择的架构寄存器可包含一定数目个向量寄存器105(在此示例中标记为Z0至Z31)。当然,提供图2所示的该数目个谓词/向量寄存器不是必要的,并且其它示例可提供可由程序指令指定的不同数目个寄存器。每个向量寄存器可存储包括可变数目个数据元素的向量操作数,其中每个数据元素可表示独立数据值。响应于向量处理(SIMD)指令,处理电路可对存储在寄存器中的向量操作数执行向量处理以生成结果。例如,向量处理可包含逐通道计算,其中对应计算是对一个或多个操作数向量中的每个元素通道执行以生成结果向量的元素的对应结果。当执行向量或SIMD处理时,每个向量寄存器可具有一定的向量长度VL,其中向量长度是指在给定向量寄存器中的位数目。用于向量处理模式中的向量长度VL对于给定硬件具体实施可是固定的或可是可变的。由处理器20支持的ISA可支持可变向量长度,使得可选择不同处理器具体实施以实施不同大小的向量寄存器,但ISA是向量长度无关的,使得指令经设计以使得代码可正确地作用而无论在执行该程序的给定CPU上实施的特定向量长度。
向量寄存器Z0至Z31还可作用为用于存储向量操作数的操作数寄存器,它们提供输入至由处理电路60对存储在阵列存储装置90内的二维阵列数据元素执行的处理和累加运算。
如图2所示,架构寄存器还包含形成先前提及的阵列存储装置90(ZA0至ZA(NA-1))的一定数目NA个阵列寄存器110。可将每个阵列寄存器视为用于存储单一2D阵列数据元素(例如,处理和累加运算的结果)的一组寄存器存储装置。然而,处理和累加运算可能不是唯一可使用阵列寄存器的运算。阵列寄存器还可用于存储方形阵列,同时执行存储器中的阵列结构的行/列方向的转置。当程序指令参照阵列寄存器110中的一个时,将其参照为使用阵列标识符ZAi的单一实体,但一些类型的指令(例如,数据传输指令)还可通过定义选择阵列的一部分的索引值来选择该阵列的子部分(例如,一个水平/竖直元素群组)。
实际上,对应于阵列寄存器的寄存器存储装置的物理具体实施可包括一定数目NR个阵列向量寄存器ZAR0至ZAR(NR-1),如图2所示。形成阵列寄存器存储装置110的阵列向量寄存器ZAR可是与用于SIMD处理和至阵列处理的向量输入的向量寄存器Z0至Z31不同的一组寄存器。阵列向量寄存器ZAR中的每个可具有向量长度VL,所以每个阵列向量寄存器ZAR可存储长度VL的1D向量,该向量可逻辑地分割成可变数目的数据元素。例如,如果VL是512个位,则这可是一组64个8位元素、32个16位元素、16个32位元素、8个64位元素、或4个128位元素。应理解,并非所有这些选项均需要在给定具体实施中支持。通过支持可变元件大小,这提供处置涉及不同精确度的数据结构的计算的灵活性。为表示2D数据阵列,可在逻辑上将阵列向量寄存器ZAR0至ZAR(NR-1)群组视为是指派阵列寄存器标识符ZA0至ZA(NA-1)的给定一者的单一实体,使得2D阵列以在对应于阵列的一维的单一向量寄存器内延伸的元素和在阵列的横跨多个向量寄存器条串化的另一维中的元素形成。
如上文所讨论,处理电路60被布置成在由解码器电路50所解码的指令的控制下存取标量寄存器70、向量寄存器80、和/或阵列存储装置90。现在将参考图3A描述此后一布置的进一步细节,其仅提供如何可存取阵列存储装置的一个说明性示例,尤其考虑存取在阵列存储装置内的方形2D阵列。
在所说明的示例中,阵列存储装置90内的方形2D阵列经布置为n×n个存储元件/位置200的阵列205,其中n是大于1的整数。在本示例中,n是16,其暗示在水平或竖直的阵列方向任一者上,对存储位置200的存取粒度是2D阵列的总存储的1/16。
从处理电路的观点来说,n×n个位置的阵列是可存取为在第一方向(例如,如所示出的水平方向)上的n个线性(一维)向量以及在第二阵列方向(例如,如所示出的竖直方向)上的n个线性向量。因此,从处理电路60的观点,能够将n×n个存储位置存取为各自具有n个数据元素的2n个线性向量。
在与至少处理电路60和可选地与解码器电路50通信的控制电路250的控制下,存储位置200的阵列能够由存取电路210、220、列选择电路230和行选择电路240存取。
参照图3B,在指定为“ZA1”(应注意,如下文讨论的,可有一个以上此类2D阵列提供在阵列存储装置90内,例如,ZA0、ZA1、ZA2,并依此类推)的示例方形2D阵列的情形中,第一方向(如所示出的水平或“H”方向)上的n个线性向量各有16个数据元素0……F(以十六进制标记法表示),并且在此示例中可参考为ZA1H0……ZA1H15。存储在阵列存储装置90的256个条目(16×16个条目)中(即图3B的ZA1)的相同基本数据可替代地在第二方向(如所示出的竖直或“V”方向)上参照为ZA1V0……ZA1V15。应注意,例如,数据元素260是参照为ZA1H0的项目F,而非ZA1V15的项目0。应注意,“H”和“V”的使用并不表示关于组成阵列存储装置90的数据元素的存储的任何空间或物理布局需求,也不具有阵列存储装置内的2D阵列在任何示例应用中是否存储行数据或列数据的任何相关性。
图4A示出外积运算。外积运算将可如上文讨论地存储在向量寄存器文件中的两个向量A和B取为输入。外积运算的结果是矩阵(例如,2D阵列)如图所示,输出矩阵中的每个数据元素是通过将每个输入向量中的对应数据元素乘在一起来确定的——例如,结果矩阵中的左上元素是通过将向量A的元素a0和向量B的元素b0乘在一起来计算的。在填充结果矩阵时,向量A中的每个数据元素乘以向量B中的每个数据元素;因此,计算n个元素的向量与m个元素的向量的外积运算的结果是n×m矩阵。
图4B示出矩阵乘法运算。具体来说,图4B展示涉及将两个矩阵C和D(它们可例如存储在向量寄存器中(例如,一行或一列保持在每个寄存器中)或在阵列存储电路中)乘在一起以生成矩阵CD的运算。如可从附图见到的,将两个n×n矩阵乘在一起的结果是n×n矩阵(更一般来说,n×k矩阵乘以k×m矩阵将导致n×m矩阵)。
存在计算输出矩阵CD的元素的数种方式,但一般由处理器采用的技术是执行多个外积运算并将结果累加(相加)在一起。例如,为执行示出于图4B中的矩阵乘法,处理电路可首先计算矩阵A的最左侧列i与矩阵B的顶部行w的外积以生成16个外积结果,并使用这些外积结果填充阵列存储装置中的4×4阵列。处理电路可接着计算矩阵A的次一列j与D的次一行x的外积,以生成加至已存储在阵列中的外积结果的另外16个外积结果。此过程接着可对最后两对向量重复(和),以生成最终结果CD。
因此,可看出,矩阵乘法可通过执行多个外积运算并累加结果来实行——例如,这可通过执行一个或多个多外积指令来执行。应注意到,这些向量对乘在一起的顺序不限于上述顺序——外积可以任何顺序计算。另外,外积运算不需要相继地执行。
如可从图4B中的示例见到的,矩阵乘法涉及执行相当数目的运算——例如,可执行每个外积运算涉及多个乘法运算的多个外积运算。因此,矩阵乘法可尤其是时间消耗和能量消耗过程。这在执行例如人工神经网络(ANN)的情况中尤其如此,其可包括执行相当数目的矩阵乘法。因此,对改善矩阵乘法运算的性能感兴趣。
图5展示具有N:M结构化稀疏性的矩阵。在图5所示的矩阵中,阴影元素表示非零元素,而空白(无阴影)元素表示零元素。在图5所示的特定示例中,展示具有3:5稀疏性的10×11矩阵。更具体地说,将十个数据元素的各列视为包括M=5个连续数据元素的两个群组,这些连续数据元素至多N=3个是非零的(例如,阴影数据元素)。
如上文解释的,可将结构化稀疏性引入矩阵中(例如,通过将其元素的一些清除/设置为零),以降低该矩阵中的将在该矩阵上执行的至少一些矩阵运算中所涉及的数据元素的数目。另外,本发明人认知到(如下文更详细地讨论的),将结构化稀疏性引入至矩阵中可允许将矩阵压缩至较小数目的向量操作数中,其降低由矩阵所占用的空间量。
图6A和图6B展示用于信息的稀疏矩阵的进一步示例——如图5,阴影元素表示非零元素,而空白(无阴影)元素表示零元素。具体地说,图6A展示具有2:4结构化稀疏性的矩阵(N=2,M=4),并且图6B展示具有4:8结构化稀疏性的矩阵(N=4,M=8)。应注意到,虽然图6A与图6B两者展示每列至多四个数据元素是非零的8×8矩阵,将展示于图6A中的矩阵进一步限制成列中的4个数据元素的每个群组(例如,列中的前四个元素或列中的最末四个元素)具有至多两个非零元素。这可通过比较例如每个矩阵的最左侧列而见到——例如,在图6B的矩阵中,最左侧列中的前四个数据元素皆是非零的;这在具有2:4结构化稀疏性的矩阵中是不受允许的,其中这些四个元素的至多2个可是非零(如图6A中的矩阵的最左侧列中所示)。
数据处理操作可正如同它们可在其它矩阵上执行般地在稀疏矩阵上执行。例如,图7示出乘法-累加(MAC)单元的阵列可如何用以计算8×4激活矩阵乘以4×8权重矩阵(具有2:4稀疏性)(例如,在ANN的给定节点的权重)的结果。例如,谓词信息可用以将零值掩盖掉。
然而,如上文解释的,本发明人认知到,将稀疏矩阵压缩至较小数目的向量操作数中有数个优点。此情形的示例展示于图8A中,其中具有2:4稀疏性的4×8矩阵经压缩至两个向量操作数中。具体来说,图8展示最初占用四个向量寄存器(Z8,Z9,Z10,Z11)的矩阵可如何压缩至每个向量寄存器存储来自源矩阵的一个或多个行的数据元素的两个向量寄存器(Z4,Z5)中。这释放向量寄存器文件中的两个向量寄存器(和/或存储器和/或另一数据存储装置中的等效空间量)。
为经压缩源向量操作数中的每个经压缩源向量操作数保持一组索引Id,其可用以重建源矩阵。例如,索引可指示Z4或Z5中的每个元素来自源矩阵的哪个行。
稀疏矩阵可如何压缩至较小数目的向量操作数中的另一示例展示于图8B中,其中将8×8稀疏矩阵(具有4:8结构化稀疏性)压缩至四个向量操作数中。
一旦稀疏矩阵已压缩,本发明人认知到,多外积(MOP)运算可在所得向量操作数上执行而无需首先解压缩它们以形成原始矩阵。这展示于图9中,其中使用乘法电路255将8×4激活矩阵乘以2×8经压缩权重矩阵(例如,这可是MAC阵列)。例如,这可执行为一个基于Z4且一个基于Z5的两个MOP运算,或执行为外积和(SMOP)运算。
执行四个外积运算以将矩阵乘在一起。这些运算涉及计算激活矩阵的各列(例如,向量Z0、Z1、Z2、Z3)与Z4和Z5中的具有相同阴影的数据元素的外积。例如,这意味着来自Z5中左侧的第一、第二、第四和第六数据元素乘以Z3中的对应元素;来自Z5中左侧的第三、第5和第7元素与来自Z4中左侧的第一元素乘以Z2中的对应元素,并依此类推。索引可用以标识第二向量操作数(Z4:Z5)群组中的每个数据元素应乘以第一向量操作数(Z0:Z3)群组中的哪个向量。
展示于图9中的乘法电路255包括每个复用器将输入提供至对应乘法器电路(未图示)的若干个复用器270。在此特定示例中,提供复用器270的8×8阵列,包含用于待执行每个乘法的复用器(和对应乘法器)。每个复用器将来自激活向量Z0至Z3的每一者中的对应位置的数据元素取为输入,并基于相关性信息选择这些数据元素的用于与Z4或Z5中的对应位置上的数据元素相乘的一者。然而,将理解,在其它示例中,可存在较少的复用器和乘法器,其中每个复用器/乘法器对是用以执行数个待执行乘法运算。
因此,如上文讨论的,本技术的装置被配置成支持多外积(MOP)指令的执行,该多外积指令将多个第一向量操作数(例如,此情形中是向量寄存器Z0:Z3)、至少一个第二源向量操作数(例如,Z4和/或Z5)、和相关性信息(例如,索引组中的一个或两个)标识为输入。
应注意到,虽然附图展示权重矩阵是经压缩稀疏矩阵的示例,替代权重矩阵或除了权重矩阵外,激活矩阵为经压缩稀疏矩阵是同等可行的。更一般来说(因为将激活和权重矩阵相乘仅是本技术的一个示例使用情形),由MOP指令指定的第一向量操作数(的群组)或第二向量操作数(的群组)的哪一者代表经压缩稀疏矩阵并不重要——其可是任一者或两者。
图10是根据一个示例具体实施的装置的框图,其示出如何使用处理电路以执行外积运算。向量寄存器文件80提供可用以存储数据元素的向量的多个向量寄存器。如早先讨论的,MOP指令可被布置成标识多个第一源向量操作数300和至少一个第二源向量操作数320。至少一个第二源向量操作数320(且也可选地为多个第一源向量操作数300)包括数据元素的多个子集,其中每个子集用于不同的外积运算。应注意到,本文使用的参考至两个源向量操作数(的群组)的用语“第一”和“第二”纯粹使用为标记以在它们之间区分,并且不暗示关于这些操作数如何由指令指定的任何特定排序。因此,指令的源操作数字段的任一个可用以指定上文所指称的第一源向量操作数,并且源操作数字段的另一个将接着用以指定上文所指称的第二源向量操作数。
进一步地,虽然根据本文描述的这些技术,两个源向量操作数中的至少一个将包括数据元素的多个子集以在不同的外积运算中使用,并且另一源向量操作数可不如此,在一些示例具体实施中还可有两个源向量操作数皆包括数据元素的多个子集的情形。类似地,除了指定多个第一源向量操作数外,可指定一个以上第二源向量操作数320。另外,由MOP指定的第一源向量操作数的数目和第二源向量操作数的数目不限于一个向量操作数或两个向量操作数,而实际上可指定两个以上第一/第二向量操作数(例如,四个向量操作数或八个向量操作数等)。
MOP指令还指定相关性信息,该相关性信息标识至少一个第二源向量操作数320中的哪些数据元素将乘以多个第一向量操作数中的哪些向量操作数。在此示例中,相关性信息存储在谓词寄存器文件75中的谓词寄存器325中,并且因此MOP指令还标识一个或多个谓词寄存器325。
处理电路60依据从解码器电路(解码器)50接收的控制信号受控制,并且当解码器电路50解码早先提及的MOP指令时,其将控制信号发送至处理电路以控制处理电路执行多个计算以实施多个外积运算,其中该多个外积运算包括对给定第一源向量操作数执行相关联外积运算,以计算该给定第一源向量操作数与至少一个第二源向量操作数的数据元素的子集的外积。作为此过程的部分,那些控制信号将控制由处理电路60提供的选择电路340,以选择待由每个外积运算处理的适当数据元素。每个外积运算包括将至少一个第二源向量操作数中的相关联数据元素的子集的每个数据元素乘以相关联第一源向量操作数中的每个数据元素,并且接着使用每个外积结果元素更新保持在阵列存储装置90内的存储元件的给定二维阵列380内的相关联存储元件中的值。
选择电路340可依各种方式组织,但在一个示例具体实施中包括为用以从两个输入数据元素生成外积结果的多个乘法器的每个乘法器提供的复用器电路,该复用器电路用以为每个乘法器选择适当的两个输入数据元素。
接着,经选择的输入数据元素被转发至乘法电路350,其如上文所提及,在示例具体实施中可包括用于将被产生的每个外积结果的乘法器电路。每个外积结果元素是通过将提供至乘法电路350内的对应乘法器的两个输入数据元素相乘来产生的。外积结果元素可直接提供至阵列更新电路370,该阵列更新电路用以更新2D阵列380内的存储元件,每个外积结果元素具有在2D阵列380内的相关联存储元件且用以更新保持在该相关联存储元件中的值。然而,通常的情形是所执行的外积运算是累加运算,并且所生成的每个外积结果元素使用可选的累加电路360与存储在2D阵列380的相关联存储元件中的现有值组合(例如,通过将外积结果加至现有值或从现有值减去外积结果)。尽管乘法电路350和可选的累加电路360在图10中展示为分开框,在一个示例具体实施中,它们可提供作为由乘法累加电路形成的组合框。
阵列更新电路370用以控制2D阵列380内的相关存储元件的存取,以确保由阵列更新电路接收的每个值用以更新2D阵列380内的相关联存储元件。
外积运算有效地使用在针对多种不同原因的数据处理系统内,并且因此响应于单一指令来执行多个外积运算的能力可提供显著性能/通量改善,以及使由阵列存储装置90内的二维阵列提供的可用存储资源更有效使用。关于可如何使用外积运算,仅举示例来说,其可用以实施矩阵乘法运算。矩阵乘法可例如涉及将第一m×k数据元素矩阵乘以k×n数据元素矩阵以产生m×n数据元素矩阵结果。此运算可分解成多个外积运算(更明确地说,k个外积运算,其中k可称为深度),其中每个外积运算涉及执行一连串乘法累加运算,以将来自第一矩阵的m个数据元素向量的每个数据元素乘以来自第二矩阵的n个数据元素向量的每个数据元素,以产生存储在2D阵列内的m×n结果数据元素矩阵。多个外积运算的结果可累加在相同的2D阵列内,以产生已通过执行早先提及的矩阵乘法来生成的m×n矩阵。
矩阵乘法具有若干个潜在应用。除了如上文提到的执行ANN的应用外,矩阵乘法可使用在例如图像处理中。
图11A示出外积结果元素可如何与2D阵列中的特定存储元件相关联。在图11A的示例中,使用乘法功能574将来自第一源向量操作数的数据元素570乘以来自第二源向量操作数的数据元素572,产生外积结果元素,该外积结果元素接着受累加功能576的累加运算,以将该外积结果加至存储在相关联存储元件578中的目前值(或从存储在相关联存储元件578中的目前值减去该外积结果),以产生接着存储在相关联存储元件中的更新值。
图11B示出外积运算的和,其中两个外积结果元素与2D阵列内的相同存储元件相关联。在此示例中,使用乘法功能584将来自第一源向量操作数的数据元素580乘以来自第二源向量操作数的数据元素582,以产生第一外积结果元素。类似地,通过乘法功能590将来自第一源向量操作数的数据元素586与来自第二源向量操作数的数据元素588相乘,以产生第二外积结果元素。接着使用加法功能592将两个外积结果加在一起,并且执行累加功能594,以产生用于存储在相关联存储元件596中的更新数据值。因此,将理解,在一些具体实施中,可存在与2D阵列中的相同存储元件相关联的一个以上外积结果元素。
图12是示意地示出根据一个示例具体实施可提供在MOP指令内的字段的图。操作码字段605用以标识指令的类型,在此情形中,标识出该指令是MOP指令。
可提供一个或多个控制信息字段610,例如,以标识如早先提及的一个或多个谓词。另外,字段615标识待使用在操作中的相关性信息——例如,这可是存储相关性信息的寄存器(例如,谓词寄存器)的标识符。应注意到,这与保持在控制信息字段610中的任何谓词信息分开,谓词信息在操作中将使用为谓词/掩码。字段620接着用以标识多个第一源向量操作数(例如,通过指定向量寄存器文件80内的向量寄存器,其中一个或多个向量操作数隐含地与经标识寄存器相关联)。类似地,字段625可用以标识一个或多个第二源向量操作数,例如,再度通过指定在向量寄存器文件80内的一个或多个向量寄存器。应注意到,这仅是一个示例,并且实际上字段620、625的任一者可用以指定早先提及的第一源向量操作数,其中另一字段则指定第二源向量操作数。最后,字段630可用以标识在阵列存储装置90内的目的地2D阵列,该目的地2D阵列被用以存储作为执行由多外积指令指定的多个外积运算的结果所生成的矩阵。
如上文提到的,存在相关性信息可以其表示的多种方式。图13至图15示出相关性信息可如何表示在一个或多个谓词寄存器中的一些示例。
图13展示每个谓词寄存器P0、P1保持用于对应向量寄存器Z4、Z5的一组索引的第一示例,每一组索引形成用于其的对应向量寄存器的相关性信息。此示例中的每个索引标识对应数据元素所来自的源矩阵的寄存器(并且因此间接标识源矩阵的行),其中第一(底部)行是行“0”且第四(顶部)行是行“3”。例如,谓词寄存器P0中的最左侧元素(在此示例中,其保持向量寄存器Z4的相关性信息)是“2”,指示向量寄存器Z4中的对应元素(最左侧元素)是来自源矩阵的第3行(例如,在此示例中,来自向量寄存器Z10)。
图13的右侧展示MOP指令在此示例中可如何表示(在此情形中,标识为“FMOPA”指令)。在此示例中,对向量寄存器Z4、Z5的每一者执行单独MOP指令,其中每个MOP指令标识:
·目的地阵列(ZAi),由处理电路计算的外积结果将写至其;
·谓词寄存器(P0或P1),保持待在执行MOP指令时使用的索引;
·多个第一源向量寄存器(Z0至Z3),保持多个第一源向量操作数;
和
·第二源向量寄存器(Z4或Z5),保持第二源向量操作数以用于该运算。
图14展示相关性可如何表示的另一示例;在此示例中,使用相同的索引,但用于Z4和Z5两者的索引存储在相同的谓词寄存器P0中。此示例利用表示每个索引所需的位数目一般显著地小于谓词寄存器的各元素中的可用位数目的事实——例如,此示例中的索引是至多2位长(索引0、1、2和3分别以二进制表示为00、01、10和11),然而谓词寄存器的每个元素中的位数目可是4或更多。因此,本发明人认知到,可将两个向量寄存器Z4、Z5的索引包装至单一谓词寄存器中,降低由相关性信息占用的谓词寄存器的数目。具体来说,如图14所示,每个数据元素的上半部(例如,顶部的两个位)可用以存储向量寄存器的一个的对应数据元素的索引(例如,最左侧元素的上半部存储值“3”,其是Z5中的最左侧元素的索引),而每个数据元素的下半部(例如,底部的两个位)可用以存储向量寄存器的另一个的对应数据元素的索引(例如,最左侧元素的下半部存储值“2”,其是Z4中的最左侧元素的索引)。
因此,如图14的右侧的指令组合语言语法所示,此示例需要两个略微不同的MOP指令(即,“FMOPA1”指令和“FMOPA2”指令),其中两者皆标识相同的谓词寄存器P0,但一者导致处理电路读取每个元素的顶部两个位,并且另一者导致处理电路读取每个元素的底部两个位。为在两种类型的MOP指令之间区分,两个MOP指令的每个MOP指令可例如具有不同的操作码。替代地,两个指令的编码可某种程度地不同。
因此,图14中的每个MOP指令指示:
·目的地阵列(ZAi);
·相同的谓词寄存器(P0);
·多个第一源向量寄存器(Z0至Z3),保持多个第一源向量操作数;
和
·第二源向量寄存器(Z4或Z5),保持第二源向量操作数以用于该运算。
图15展示相关性信息可如何表示的另一示例,其中两个向量寄存器Z4、Z5的相关性信息经压缩至单一谓词寄存器P0中。在此示例中,谓词寄存器P0中的每个数据元素保持指示源矩阵的对应行中的哪些数据元素保持非零值的位映像。例如,谓词寄存器中的最左侧数据元素读取为“1100”,指示在源矩阵的最左侧列的顶部两个行中存在非零元素,并且零在相同列的底部两个行中。可从此确定向量寄存器Z4、Z5中的最左侧数据元素是来自源矩阵的顶部两个(第2和第3)行。
当执行此示例中的MOP指令时,因此,处理电路确定对应位映像中的第一个或第两个“1”其中一者的位置以标识第一源向量的哪一个应在相关联外积运算中使用。
每个指令指定:
·目的地阵列(ZAi);
·相同的谓词寄存器(P0);
·多个第一源向量寄存器(Z0至Z3),保持多个第一源向量操作数;
和
·第二源向量寄存器(Z4或Z5),保持第二源向量操作数以用于该运算。
应注意,虽然图14和图15展示对每个第二向量操作数(Z4,Z5)执行单独MOP指令的示例,定义指定第二向量操作数两者的单一MOP指令也是可行的。
如上文解释的,结构化稀疏性是用于神经网络模型的推断(且不用于它们的训练)的优化技术。因此,支持使用呈脑浮点(Brain Floating Point)(bfloat16/BF16)格式且使用为有正负号8位整数(int8)的数据的模型是有利的。由于2路数据交错一般使用在一些数据处理器中以用于bf16数据的外积,例如,图9中的两个权重向量(Z4,Z5)经包装至bf16元素的单一向量寄存器(Zm)中,如图16所示。类似地,将4个激活向量(Z0:Z3)包装至2个向量寄存器(Zn,Zn+1)中。图16示出使用bf16元素的多寄存器外积和方案的原理。谓词寄存器可含有如图14所示的索引列表或如图15所示的位映像。
如图16所示,此示例中的MOP指令是用于执行基本2路点乘积运算的外积和(SMOPA)指令。此示例中SMOPA指令指定:
·目的地阵列(ZAi);
·谓词寄存器(Pi);
·多个第一源向量寄存器(Zn,Zn+1),保持多个第一向量操作数;和
·第二源向量寄存器(Zm),保持多个第二源向量操作数。
在8位数据类型(int8或uint8)的情形中,基本指令是具有在32位上的累加的外积和指令。基本操作是在4路交错数据上操作的4路点乘积。如图17所示,在本发明的在8位数据上操作的变体中,2个源寄存器用于激活(左侧操作数)且一个源寄存器用于权重(右侧操作数)。由于4个元素是在指令的此变体中的8个元素中选择(例如,2乘以4个中的2个元素),使用两个谓词寄存器。将8位4对1复用器提供在每个乘法器前方,以实现每循环一个操作的通量。
图17的右侧示出MOP指令的此变体的形式。如图所示,此示例中的MOP指令是外积和指令(SMOPA),其指定:
·目的地阵列(ZAi);
·谓词寄存器(P0,P1);
·多个第一源向量寄存器(Zn,Zn+1),保持多个第一向量操作数;和
·第二源向量寄存器(Zm),保持多个第二源向量操作数。
虽然图17假设使用2:4稀疏性模式,在指令的替代变体中,4:8稀疏性模式与位映像一起使用以选择左操作数的源元素。此变体将需要8对1而非4对1复用器。然而,指令的替代变体的形式将与图17所示的形式相同,因为操作数将是相同的。
就指令的使用来说,以下是示出指令可如何使用的代码片段:
LD1B{Z0-Z3},p0/Z,[&activations]
LD1B{Z4-Z5},p1/Z,[&weights]
LDR p2,[&indexes]
LDR p3,[&indexes]
SMOPA ZA0.S,P2,{Z0.H-Z1.H},Z4.H
SMOPA ZA1.S,P3,{Z0.H-Z1.H},Z5.H
SMOPA ZA2.S,P2,{Z2.H-Z3.H},Z4.H
SMOPA ZA3.S,P3,{Z2.H-Z3.H},Z5.H
图18是示出根据一个示例具体实施的在解码多外积指令时执行的步骤的流程图。在步骤650处,确定是否已遇到MOP指令。如果否,则在步骤655处执行相关指令的标准解码,其中处理电路接着被控制以执行由该指令界定的所需操作。
然而,如果遇到MOP指令,则在步骤660处,该指令经解码以标识源向量操作数(例如,多个第一源向量操作数和至少一个第二源向量操作数)、目的地2D阵列、相关性信息和待执行的外积的形式(例如,是否正执行累加外积,或正执行非累加变体,以及例如是否将执行正常外积运算或将执行外积和运算)。
接着,在步骤665处,控制处理电路以执行所需外积运算,并执行对2D阵列存储元件的所需更新。作为此过程的部分,控制选择电路以取决于相关性信息来选择用于每个乘法运算的数据元素。
图19示出可使用的模拟器具体实施。虽然稍早所述的实施方案以用于操作支持所关注技术的特定处理硬件的装置和方法来实施本发明,但还可能根据本文所述的实施方案提供指令执行环境,其是通过使用计算机程序实施。此类计算机程序常称为模拟器,因为它们提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包含仿真器、虚拟机、模型、和二进制转换器(包含动态二进制转换器)。一般来说,模拟器具体实施可在可选地运行主机操作系统710、支持模拟器程序705的主机处理器715上运行。在一些布置中,在硬件与所提供的指令执行环境和/或相同的主机处理器上提供的多个相异指令执行环境之间可有多层模拟。历史上,已需要强大的处理器来提供模拟器具体实施,其以合理速度执行,但此种方法在某些情况下可是有正当理由的,例如当因为兼容性或再使用原因而需要执行另一处理器本地的代码时。例如,模拟器具体实施可提供具有不为主机处理器硬件所支持的额外功能性的指令执行环境,或提供一般与不同的硬件架构相关联的指令执行环境。模拟的综述是在“一些高效架构模拟技术(Some Efficient Architecture SimulationTechniques)”中给出,Robert Bedichek,Winter 1990USENIX Conference,页数53至63。
在先前已参照特定硬件架构或特征来描述实施方案的情况下,在模拟实施方案中,可通过合适的软件架构或特征提供等效功能。例如,特定电路可在模拟实施方案中实施为计算机程序逻辑——例如,模拟器程序705可包括:处理程序逻辑720,该处理程序逻辑用以仿真上文描述的处理电路的行为;和指令解码程序逻辑,该指令解码程序逻辑用以仿真上文描述的指令解码器电路的行为。类似地,存储器硬件(例如,寄存器或高速缓存)可在模拟实施方案中实施为软件数据结构——在此特定示例中,提供阵列存储仿真程序逻辑722以仿真上文描述的阵列存储装置。在先前描述实施方案中提及的硬件元件的一个或多个存在于主机硬件(例如,主机处理器715)上的布置中,一些模拟实施方案可在适当时利用主机硬件。
模拟器程序705可存储在计算机可读存储介质(其可是非暂态介质)上,并提供程序接口(指令执行环境)给目标代码700(其可包含应用程序、操作系统和超管理器),该程序接口与通过模拟器程序705建模的硬件架构的接口相同。因此,包含上述MOP的目标代码700的程序指令可使用模拟器程序705在指令执行环境内执行,使得实际上不具有上述装置的硬件特征的主机计算机715可仿真这些特征。
在本申请中,用语“被配置成……”是用以意指装置的元件具有能够实行经定义操作的配置。在此上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有专用硬件,其提供经定义操作,或者处理器或其它处理设备可被编程以执行该功能。“被配置成”并不意味着装置元件需要以任何方式改变以提供经定义操作。
虽然本文已参照附图详细地描述本发明的说明性实施方案,但应了解,本发明不限于这些精确实施方案,并且所属领域的一般技术人员可在其中实行各种变化与修改,而不脱离如随附权利要求书所定义的本发明的范围。
Claims (20)
1.一种装置,所述装置包括:
处理电路,所述处理电路用以执行向量运算;和
指令解码器电路,所述指令解码器电路用以解码来自一组指令的指令以控制所述处理电路执行由所述指令指定的所述向量运算,其中:
所述一组指令包括指定多个第一源向量操作数、至少一个第二源向量操作数和与所述至少一个第二源向量操作数相关联的相关性信息的多外积指令,其中每个向量操作数包括多个数据元素,并且对于给定第二源向量操作数,所述相关性信息被布置成对所述给定第二源向量操作数的每个数据元素指示对应第一源向量操作数;
所述指令解码器电路响应于所述多外积指令来控制所述处理电路执行多个计算以实施多个外积运算,其中所述多个外积运算包括对给定第一源向量操作数执行相关联外积运算以计算所述给定第一源向量操作数与所述至少一个第二源向量操作数的数据元素的子集的外积;并且
所述处理电路被配置成取决于所述相关性信息来为所述至少一个第二源向量操作数的每个数据元素选择待在执行所述相关联外积运算时使用的对应第一源向量操作数。
2.根据权利要求1所述的装置,所述装置包括
阵列存储电路,所述阵列存储电路包括存储数据元素的存储元件,所述阵列存储电路被布置成存储在执行所述向量运算时能够由所述处理电路存取的数据元素的至少一个二维阵列,
其中:
所述多外积指令将数据元素的给定二维阵列指定在形成目的地操作数的阵列存储装置内;并且
所述处理电路被配置成通过将给定第一源向量操作数的每个数据元素乘以所述至少一个第二源向量操作数的数据元素的所述子集中的每个数据元素以生成多个外积结果元素,并且使用每个外积结果元素更新保持在存储元件的所述给定二维阵列内的相关联存储元件中的值来执行所述给定第一源向量操作数的所述相关联外积运算。
3.根据权利要求2所述的装置,其中所述处理电路包括:
乘法电路,所述乘法电路用以在执行所述多个外积运算时生成每个外积结果;和
复用器电路,所述复用器电路与所述乘法电路相关联,所述复用器电路在所述相关性信息的控制下选择待相乘的所述多个第一源向量操作数的经选择数据元素和所述至少一个第二源向量操作数的经选择数据元素以生成相关联外积结果元素。
4.根据任一前述权利要求所述的装置,其中:
所述相关性信息包括至少一组索引;并且
所述至少一组索引包括将所述给定第二源向量操作数的每个数据元素与所述对应第一源向量操作数相关联的索引。
5.根据权利要求4所述的装置,其中:
所述相关性信息是由所述多外积指令所指定的至少一个相关性源操作数提供的;并且
给定相关性源操作数针对所述给定第二源向量操作数的每个数据元素包括对应元素,所述对应元素包括将所述给定第二源向量操作数的所述数据元素与所述对应第一源向量操作数相关联的所述索引。
6.根据权利要求4或权利要求5所述的装置,其中
所述相关性信息包括每个第二源向量操作数的一组索引。
7.根据权利要求4或权利要求5所述的装置,其中
所述至少一组索引包括提供用于多个第二源向量操作数的所述相关性信息的一组索引。
8.根据权利要求7所述的装置,其中:
所述相关性信息是由所述多外积指令所指定的至少一个相关性源操作数提供的;并且
给定相关性源操作数的每个元素包括多个索引,所述多个索引包括用于所述多个第二源向量操作数中的每个第二源向量操作数的对应数据元素的索引。
9.根据任一前述权利要求所述的装置,其中
由所述处理电路执行的每个外积运算基于所述至少一个第二源向量操作数的数据元素的不同子集。
10.根据任一前述权利要求所述的装置,当从属于权利要求2时,其中:
所述多外积指令包括外积和指令;并且
多个外积结果在存储元件的所述给定二维阵列内具有相同的所述相关联存储元件,并且所述处理电路被配置成组合所述多个外积结果以更新保持在所述相关联存储元件中的所述值。
11.根据任一前述权利要求所述的装置,所述装置包括:
一组向量寄存器,所述一组向量寄存器能够由所述处理电路存取,其中:
每个向量寄存器被布置成存储包括多个数据元素的向量;并且
所述多个第一源向量操作数和所述至少一个第二源向量操作数包括所述一组向量寄存器的向量寄存器内所含的向量。
12.根据权利要求11所述的装置,其包括
一组谓词寄存器,所述一组谓词寄存器能够由所述处理电路存取,其中:
每个谓词寄存器被布置成存储包括多个元素的谓词信息,每个元素提供谓词值;并且
所述相关性信息存储在所述一组谓词寄存器中的至少一个谓词寄存器内。
13.根据任一前述权利要求所述的装置,其中
每个第二源向量操作数中的所述数据元素表示来自源矩阵的多个行或多个列的数据值。
14.根据权利要求13所述的装置,当从属于权利要求8时,其中
所述给定相关性源操作数的每个元素被布置成使所述源矩阵能够从所述至少一个第二源向量操作数重建。
15.根据权利要求13或权利要求14所述的装置,其中:
每个第二源向量操作数中的每个数据元素与所述源矩阵中的对应第一维相关联,其中所述对应第一维包括所述源矩阵中的对应行或对应列;并且
每个第二源向量操作数中的每个数据元素提供从所述源矩阵中的所述对应第一维中的所述数据值中选择的数据值。
16.根据权利要求13至15中任一项所述的装置,其中
所述源矩阵包括具有N:M结构化稀疏性的矩阵,其中所述源矩阵中的经定义的M个数据值的每个群组包括至多N个非零数据值。
17.根据权利要求13至16中任一项所述的装置,其中
所述源矩阵包括用于在执行人工神经网络时使用的权重矩阵或激活矩阵。
18.一种方法,所述方法包括:
使用处理电路执行向量运算;
解码来自一组指令的指令以控制所述处理电路执行由所述指令指定的所述向量运算,
其中:
所述一组指令包括指定多个第一源向量操作数、至少一个第二源向量操作数和与所述至少一个第二源向量操作数相关联的相关性信息的多外积指令,其中每个向量操作数包括多个数据元素,并且对于给定第二源向量操作数,所述相关性信息被布置成对所述给定第二源向量操作数的每个数据元素指示对应第一源向量操作数;
所述方法包括响应于所述多外积指令来执行多个计算以实施多个外积运算,其中所述多个外积运算包括对给定第一源向量操作数执行相关联外积运算以计算所述给定第一源向量操作数与所述至少一个第二源向量操作数的数据元素的子集的外积;以及
取决于所述相关性信息来为所述至少一个第二源向量操作数的每个数据元素选择待在执行所述相关联外积运算时使用的对应第一源向量操作数。
19.一种包括指令的计算机程序,所述指令在计算机上执行时控制所述计算机以提供:
处理程序逻辑,所述处理程序逻辑用以执行向量运算;和
指令解码器程序逻辑,所述指令解码器程序逻辑用以解码来自一组目标指令的目标指令,以控制所述处理程序逻辑执行由所述目标指令指定的所述向量运算,
其中:
所述一组目标指令包括指定多个第一源向量操作数、至少一个第二源向量操作数和与所述至少一个第二源向量操作数相关联的相关性信息的多外积指令,其中每个向量操作数包括多个数据元素,并且对于给定第二源向量操作数,所述相关性信息被布置成对所述给定第二源向量操作数的每个数据元素指示对应第一源向量操作数;
所述指令解码器程序逻辑响应于所述多外积指令来控制所述处理程序逻辑执行多个计算以实施多个外积运算,其中所述多个外积运算包括对给定第一源向量操作数执行相关联外积运算以计算所述给定第一源向量操作数与所述至少一个第二源向量操作数的数据元素的子集的外积;并且
所述处理程序逻辑被配置成取决于所述相关性信息来为所述至少一个第二源向量操作数的每个数据元素选择待在执行所述相关联外积运算时使用的对应第一源向量操作数。
20.一种计算机可读存储介质,所述计算机可读存储介质存储根据权利要求19所述的计算机程序。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB2213475.3A GB2622581B (en) | 2022-09-14 | 2022-09-14 | Multiple-outer-product instruction |
| GB2213475.3 | 2022-09-14 | ||
| PCT/GB2023/051858 WO2024056984A1 (en) | 2022-09-14 | 2023-07-14 | Multiple-outer-product instruction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119836622A true CN119836622A (zh) | 2025-04-15 |
Family
ID=83945083
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202380064200.0A Pending CN119836622A (zh) | 2022-09-14 | 2023-07-14 | 多外积指令 |
Country Status (8)
| Country | Link |
|---|---|
| EP (1) | EP4587916A1 (zh) |
| JP (1) | JP2025529316A (zh) |
| KR (1) | KR20250067861A (zh) |
| CN (1) | CN119836622A (zh) |
| GB (1) | GB2622581B (zh) |
| IL (1) | IL318943A (zh) |
| TW (1) | TW202411860A (zh) |
| WO (1) | WO2024056984A1 (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2622581B (en) * | 2022-09-14 | 2025-06-18 | Advanced Risc Mach Ltd | Multiple-outer-product instruction |
| CN119002865B (zh) * | 2024-10-22 | 2025-03-07 | 上海壁仞科技股份有限公司 | 数据结构转换方法与电子装置 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018125250A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
| US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
| US20200159810A1 (en) * | 2018-11-15 | 2020-05-21 | Hewlett Packard Enterprise Development Lp | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures |
| US10929503B2 (en) * | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
| GB2594971B (en) * | 2020-05-13 | 2022-10-05 | Advanced Risc Mach Ltd | Variable position shift for matrix processing |
| US11429394B2 (en) * | 2020-08-19 | 2022-08-30 | Meta Platforms Technologies, Llc | Efficient multiply-accumulation based on sparse matrix |
| CN116888591A (zh) * | 2021-03-31 | 2023-10-13 | 华为技术有限公司 | 一种矩阵乘法器、矩阵计算方法及相关设备 |
| GB2622581B (en) * | 2022-09-14 | 2025-06-18 | Advanced Risc Mach Ltd | Multiple-outer-product instruction |
-
2022
- 2022-09-14 GB GB2213475.3A patent/GB2622581B/en active Active
-
2023
- 2023-07-14 KR KR1020257011553A patent/KR20250067861A/ko active Pending
- 2023-07-14 EP EP23748299.7A patent/EP4587916A1/en active Pending
- 2023-07-14 IL IL318943A patent/IL318943A/en unknown
- 2023-07-14 CN CN202380064200.0A patent/CN119836622A/zh active Pending
- 2023-07-14 WO PCT/GB2023/051858 patent/WO2024056984A1/en not_active Ceased
- 2023-07-14 JP JP2025513673A patent/JP2025529316A/ja active Pending
- 2023-08-18 TW TW112131068A patent/TW202411860A/zh unknown
Also Published As
| Publication number | Publication date |
|---|---|
| GB2622581B (en) | 2025-06-18 |
| KR20250067861A (ko) | 2025-05-15 |
| WO2024056984A1 (en) | 2024-03-21 |
| EP4587916A1 (en) | 2025-07-23 |
| JP2025529316A (ja) | 2025-09-04 |
| IL318943A (en) | 2025-04-01 |
| GB2622581A (en) | 2024-03-27 |
| TW202411860A (zh) | 2024-03-16 |
| GB202213475D0 (en) | 2022-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10656944B2 (en) | Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array | |
| US20210389948A1 (en) | Mixed-element-size instruction | |
| CN119836622A (zh) | 多外积指令 | |
| CN112149050A (zh) | 用于增强的矩阵乘法器架构的装置、方法和系统 | |
| KR20250162859A (ko) | 동적으로 공간적으로 그리고 동적으로 시간적으로 분할가능한 아키텍처에서의 행렬 곱셈 | |
| US20250362909A1 (en) | Technique for performing outer product operations | |
| US12504973B2 (en) | Technique for handling data elements stored in an array storage | |
| US20250173146A1 (en) | Technique for handling data elements stored in an array storage | |
| US20250173148A1 (en) | Technique for handling data elements stored in an array storage | |
| TW202305588A (zh) | 用於向量組合指令之處理設備、方法、及電腦程式 | |
| IL323028A (en) | A technique for efficient multiplication of vectors of complex numbers | |
| KR20250160200A (ko) | 동적으로 공간적으로 그리고 동적으로 시간적으로 분할가능한 아키텍처에서의 행렬 곱셈 | |
| CN121195233A (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 |