CN115993951A - 用于重用乘法累加运算的矩阵乘法的装置、方法和系统 - Google Patents
用于重用乘法累加运算的矩阵乘法的装置、方法和系统 Download PDFInfo
- Publication number
- CN115993951A CN115993951A CN202211268517.XA CN202211268517A CN115993951A CN 115993951 A CN115993951 A CN 115993951A CN 202211268517 A CN202211268517 A CN 202211268517A CN 115993951 A CN115993951 A CN 115993951A
- Authority
- CN
- China
- Prior art keywords
- register
- matrix
- instruction
- matrix data
- data
- 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
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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Detection And Correction Of Errors (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种装置,包括:多个寄存器;解码电路,被配置为解码第一指令;以及执行电路,被配置为:基于经解码的第一指令来识别模式、对第一矩阵数据进行存储的第一寄存器、对第二矩阵数据进行存储的第二寄存器、以及对第三矩阵数据进行存储的第三寄存器,基于模式来选择第一矩阵数据的列和第二矩阵数据的行,以及基于第一矩阵数据的所选列、第二矩阵数据的所选行和第三矩阵数据来执行乘法累加(MAC)运算。
Description
相关申请的交叉引用
本申请基于并要求于2021年10月19日向韩国知识产权局提交的韩国专利申请No.10-2021-0139115的优先权,该申请的公开通过全文引用合并于此。
技术领域
本发明构思涉及矩阵乘法,并且更具体地涉及用于重用乘法累加(MAC)运算的矩阵乘法的装置、方法和系统。
背景技术
矩阵乘法可以用于各种应用。例如,矩阵乘法可以用于计算机视觉和/或神经网络,并且也可以用于虚拟现实和/或增强现实中的几何计算。应用的性能和效率可能取决于矩阵乘法的性能和效率,因此可能需要用于以高速和/或高效率执行矩阵乘法的结构和方法。
发明内容
本发明构思提供了同时表现出高性能和高效率的用于矩阵乘法的装置、方法和系统。
根据本发明构思的一个方面,提供了一种装置,包括:多个寄存器;解码电路,被配置为解码第一指令;以及执行电路,被配置为:基于经解码的第一指令来识别模式、多个寄存器中的存储第一矩阵数据的第一寄存器、多个寄存器中的存储第二矩阵数据的第二寄存器、以及多个寄存器中的存储第三矩阵数据的第三寄存器,基于模式来选择第一矩阵数据的列和第二矩阵数据的行,以及基于第一矩阵数据的所选列、第二矩阵数据的所选行和第三矩阵数据来执行乘法累加(MAC)运算。
根据本发明构思的另一方面,提供了一种方法,包括:由解码电路解码第一指令;由执行电路基于经解码的第一指令来识别模式、存储第一矩阵数据的第一寄存器、存储第二矩阵数据的第二寄存器以及存储第三矩阵数据的第三寄存器;由执行电路基于所识别的模式来选择第一矩阵数据的列和第二矩阵数据的行;以及由执行电路基于第一矩阵数据的所选列、第二矩阵数据的所选行和第三矩阵数据来执行乘法累加(MAC)运算。
根据本发明构思的另一方面,提供了一种非暂时性计算机可读存储介质,包括能够由处理器执行的指令,其中,该指令包括第一指令,该第一指令被配置为:当由处理器执行时指示处理器执行矩阵乘法,该矩阵乘法包括:解码第一指令;基于经解码的第一指令来识别模式、存储第一矩阵数据的第一寄存器、存储第二矩阵数据的第二寄存器以及存储第三矩阵数据的第三寄存器;基于所识别的模式来选择第一矩阵数据的列和第二矩阵数据的行;以及基于第一矩阵数据的所选列、第二矩阵数据的所选行和第三矩阵数据来执行乘法累加(MAC)运算。
附图说明
根据以下结合附图的具体实施方式将更清楚地理解本发明构思的实施例,在附图中:
图1是示出了根据一些示例实施例的装置的框图;
图2和图3是示出了根据比较例的矩阵乘法的图;
图4是示出了根据一些示例实施例的执行电路的框图;
图5A至图5D是示出了根据一些示例实施例的矩阵乘法的图;
图6A和图6B是示出了根据一些示例实施例的指令的示例的图;
图7A和图7B是示出了根据一些示例实施例的用于矩阵乘法的伪代码的示例的图;
图8A和图8B是示出了根据一些示例实施例的执行电路的示例的框图;
图9是根据一些示例实施例的用于矩阵乘法的方法的流程图;
图10A和图10B是示出了根据一些示例实施例的用于矩阵乘法的方法的示例的流程图;
图11是根据一些示例实施例的用于矩阵乘法的方法的流程图;
图12是示出了根据一些示例实施例的系统的框图;以及
图13是示出了根据一些示例实施例的计算系统的框图。
具体实施方式
图1是示出了根据一些示例实施例的装置10的框图。详细地,图1的框图示出了被配置为执行指令的装置10的一部分。如图1所示,装置10可以包括解码电路12、执行电路14和多个寄存器16。在一些实施例中,如稍后参考图12所描述的,装置10还可以包括除了图1所示的组件之外的用于执行指令的附加组件。
装置10可以指被配置为执行指令的任何硬件。例如,装置10可以包括在可编程硬件(例如中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、神经处理单元(NPU)等)中。在一些实施例中,装置10可以包括在通过半导体工艺而制造的集成电路中,其中解码电路12、执行电路14和/或多个寄存器16可以彼此集成(例如,在一个管芯上)或者可以分别集成在两个或更多个管芯上。在一些实施例中,装置10可以被称为处理器和/或处理电路。
装置10可以执行用于矩阵乘法的第一指令INS1。例如,如图1所示,装置10可以通过执行第一指令INS1而执行存储在寄存器16中的第一矩阵A和第二矩阵B的乘法的至少一部分,来生成第三矩阵C,并将第三矩阵C存储在寄存器16中。在本文中,将描述通过执行作为4×4矩阵的第一矩阵A与第二矩阵B的乘法来生成作为4×4矩阵的第三矩阵C的示例,但是示例实施例不限于此。例如,示例实施例还可以应用于维度低于或高于4×4的矩阵的乘法,并且还可以应用于不是方矩阵的矩阵的乘法(例如,M×N矩阵的乘法,其中M和N是大于0的整数)。在本文中,矩阵也可以被称为矩阵数据。
如稍后将参考图2描述的,矩阵乘法可以包括矩阵中所包括的元素之间的多次乘法,其中乘法的操作数可以分别与位于矩阵中的不同位置(例如,索引)处的元素相对应。因此,矩阵乘法可以包括向以硬件实现的乘法器提供适当的输入。如稍后将参考图2和图3描述的,当用于重排列数据的指令用于矩阵乘法时,矩阵乘法所需的时间可能会延长,并且可能使用用于临时存储数据的资源(例如,寄存器)。
在由图1的装置10执行的矩阵乘法中,用于数据重排列的硬件(例如,图1的14_2)可以与用于执行乘法的硬件(例如,图1的14_4)组合。因此,可以省略指令的执行,结果是,可以高速执行矩阵乘法。此外,由装置10中的其他指令使用的硬件(例如,图1的14_4)可以在矩阵乘法中共享,因此可以限制高速矩阵乘法的成本(例如,功耗和面积)的增加。此外,可以减少装置10中用于矩阵乘法的资源(例如,寄存器),因此可以通过用于执行其他指令的寄存器来提高包括装置10或由装置10执行的应用的性能。
解码电路12可以接收第一指令INS1,并且可以通过对第一指令INS1进行解码来生成经解码的第一指令INS1'。例如,解码电路12可以从第一指令INS1中提取操作码和/或至少一个参数。在一些实施例中,解码电路12可以基于从第一指令INS1中提取的操作码的值,来从第一指令INS1中提取至少一个参数。经解码的第一指令INS1'可以包括从第一指令INS1中提取的操作码和/或至少一个参数,并且可以被提供给执行电路14。如稍后将描述的,第一指令INS1可以指示多个模式之一。在一些示例实施例中,解码电路12不仅可以对第一指令INS1进行解码,还可以对包括在可由装置10执行的指令集中的指令进行解码。
执行电路14可以从解码电路12接收经解码的第一指令INS1',并且可以基于经解码的第一指令INS1’来执行矩阵乘法的至少一部分。例如,执行电路14可以访问寄存器16中的存储第一矩阵A的寄存器(在本文中可以被称为第一寄存器)、存储第二矩阵B的寄存器(在本文中可以被称为第二寄存器)、以及存储第三矩阵C的寄存器(在本文中可以被称为第三寄存器)。如图1所示,执行电路14可以包括多个多路复用器(MUX)14_2和多个乘法累加(MAC)运算器14_4。
多路复用器14_2可以根据模式来选择第一矩阵A的元素和第二矩阵B的元素。例如,执行电路14可以基于经解码的第一指令INS1'来识别模式,并且多路复用器14_2可以根据所识别的模式被控制。在一些实施例中,多路复用器14_2之一可以基于所识别的模式来选择第一矩阵A的列,并且多路复用器14_2中的另一个可以基于所识别的模式来选择第二矩阵B的行。多路复用器14_2可以向MAC运算器14_4提供所选元素。在一些实施例中,多路复用器14_2可以仅用于矩阵乘法。例如,多路复用器14_2可以响应于第一指令INS1而被启用,并且可以响应于其他指令而被禁用(和/或被旁路)。
MAC运算器14_4可以各自接收三个输入,并且可以执行将两个输入的乘积与其他一个输入相加的运算。例如,MAC运算器可以将由多路复用器14_2选择的第一矩阵A的元素和第二矩阵B的元素的乘积与第三矩阵C的元素相加。这样,将两个值的乘积累加的运算可以被称为MAC运算。MAC运算器14_4可以分别针对第一矩阵A、第二矩阵B和第三矩阵C的元素的不同组合来并行地执行MAC运算。MAC运算器14_4可以不仅响应于用于矩阵乘法的指令(例如,第一指令INS1),而且响应于其他指令来分别并行地执行MAC运算。例如,解码电路12可以接收并解码用于同时并行处理多个数据的指令(例如,单指令多数据(SIMD)指令,并且执行电路14的MAC运算器14_4可以并行执行与经解码的SIMD指令相对应的MAC运算)。因此,MAC运算器14_4可以由包括第一指令INS1的SIMD指令共享,并且矩阵乘法可以重用MAC运算器14_4。因此,可以省略用于高速矩阵乘法的专用乘法器和加法器。
寄存器16可以由执行电路14访问,并且可以存储由执行电路14执行的运算的输入数据和/或输出数据。寄存器16可以具有能够存储数据的结构,并且执行电路14可以同时访问两个或多个寄存器16。在一些实施例中,寄存器16可以被称为寄存器文件。
图2和图3是示出了根据比较例的矩阵乘法的图。详细地,图2示出了第一矩阵A与第二矩阵B的乘法以及用于该乘法的伪代码20,并且图3示出了由图2的伪代码20计算的第一矩阵A、第二矩阵B和第三矩阵C的元素。在图2中,伪代码20可以对应于汇编代码。
参考图2,第一矩阵A可以包括多个元素A01至A16,第二矩阵B可以包括多个元素B01至B16,并且第三矩阵C可以包括多个元素C01至C16。伪代码20可以包括在执行MAC运算之前重排列向MAC运算器提供的输入的指令。例如,如图2所示,伪代码20可以包括用于生成MAC运算的输入(例如,X和Y)的指令(例如,“混洗(shuffle)”),其中在执行第13行中的用于MAC运算的指令之前,在第11行和第12中对第一矩阵A和第二矩阵B的元素进行重排列。
参考图3,在第一运算OP1中,可以执行第一矩阵A的第一列中包括的元素A01、A05、A09和A13与第二矩阵B的第一行中包括的元素B01至B04之间的乘法,并且可以将其乘积分别与第三矩阵C的元素C01至C16求和。例如,第一矩阵A的第一列中包括的元素A01、A05、A09和A13可以通过图2的第11行中的“shuffle”来存储在变量(或寄存器)“X”中,并且如图3所示,可以在变量“X”中重复元素A01、A05、A09和A13。此外,第二矩阵B的第一行中包括的元素B01至B04可以通过图2的第12行中的“shuffle”来存储在变量“Y”中,并且如图3所示,可以在变量“Y”中重复元素B01至B04。通过第13行中的“MAC”,变量“X”的元素、变量“Y”的元素和第三矩阵C的元素可以并行进行MAC运算。
在第二操作OP2中,可以执行第一矩阵A的第二列中包括的元素A02、A06、A10和A14与第二矩阵B的第二行中包括的元素B05至B08之间的乘法,并且可以将其乘积分别与第三矩阵C的元素C01至C16求和。例如,第一矩阵A的第二列中包括的元素A02、A06、A10和A14可以通过图2的第14行的“shuffle”来存储在变量“X”中,并且如图3所示,可以在变量“X”中重复元素A02、A06、A10和A14。此外,第二矩阵B的第二行中包括的元素B05至B08可以通过图2的第15行中的“shuffle”来存储在变量“Y”中,并且如图3所示,可以在变量“Y”中重复元素B05至B08。通过第16行中的“MAC”,变量“X”的元素、变量“Y”的元素和第三矩阵C的元素可以并行进行MAC运算。
在第三操作OP3中,可以执行第一矩阵A的第三列中包括的元素A03、A07、A11和A15与第二矩阵B的第三行中包括的元素B09至B12之间的乘法,并且可以将其乘积分别与第三矩阵C的元素C01至C16求和。例如,第一矩阵A的第三列中包括的元素A03、A07、A11和A15可以通过图2的第17行的“shuffle”来存储在变量“X”中,并且如图3所示,可以在变量“X”中重复元素A03、A07、A11和A15。此外,第二矩阵B的第三行中包括的元素B09至B12可以通过图2的第18行中的“shuffle”来存储在变量“Y”中,并且如图3所示,可以在变量“Y”中重复元素B09至B12。通过第19行中的“MAC”,变量“X”的元素、变量“Y”的元素和第三矩阵C的元素可以并行进行MAC运算。
在第四操作OP4中,可以执行第一矩阵A的第四列中包括的元素A04、A08、A12和A16与第二矩阵B的第四行中包括的元素B13到B16之间的乘法,并且可以将其乘积分别与第三矩阵C的元素C01至C16求和。例如,第一矩阵A的第四列中包括的元素A04、A08、A12和A16可以通过图2的第20行中的“shuffle”来存储在变量“X”中,并且如图3所示,可以在变量“X”中重复元素A04、A08、A12和A16。此外,第二矩阵B的第四行中包括的元素B13至B16可以通过图2的第21行中的“shuffle”来存储在变量“Y”中,并且如图3所示,可以在变量“Y”中重复元素B13至B16。通过第22行中的“MAC”,变量“X”的元素、变量“Y”的元素和第三矩阵C的元素可以并行进行MAC运算。
如上所述,伪代码20可以包括总共12个指令(例如,8个“shuffle”和4个“MAC”)以执行4×4矩阵的乘法,因此伪代码20可能包括比下面参考图7A和图7B描述的示例更多的指令。此外,为了执行4×4矩阵的乘法,除了存储第一矩阵A和第二矩阵B的寄存器之外,伪代码20还可能使用附加的寄存器(例如,X和Y)。当连续地执行4个“MAC”以不同地流水线化MAC运算时(如图2所示),可能需要8个寄存器来预先针对4个“MAC”准备输入。因此,伪代码20可能使用比下面参考图7A和图7B描述的示例更多的资源。
图4是示出了根据一些示例实施例的执行电路40的框图。详细地,图4的框图示出了图1的执行电路14的运算的示例,该图1的执行电路14执行4×4矩阵的乘法。如图4所示,执行电路40可以包括第一多路复用器41、第二多路复用器42和多个MAC运算器43。
第一多路复用器41和第二多路复用器42可以接收模式信号MD。在一些示例实施例中,模式信号MD可以包括在图1的经解码的第一指令INS1'中,并且执行电路40的模式可以根据模式信号MD来设置。执行电路40的模式可以确定由MAC运算器43执行的乘法的操作数。例如,第一多路复用器41可以基于模式信号MD来选择第一矩阵A的列之一,并且可以输出所选列中包括的元素。此外,第二多路复用器42可以基于模式信号MD来选择第二矩阵B的行之一,并且可以输出所选行中包括的元素。
可以向两个或更多个MAC运算器提供由第一多路复用器41和第二多路复用器42输出的每个元素。例如,如图4所示,可以重复由第一多路复用器41输出的4个元素,并且可以分别向16个MAC运算器提供经重复的16个元素。此外,如图4所示,可以重复由第二多路复用器42输出的4个元素,并且可以分别向16个MAC运算器提供经重复的16个元素。
MAC运算器43可以各自将第一多路复用器41输出的元素乘以第二多路复用器42输出的元素,并将其乘积与第三矩阵C的元素相加。如上面参考图1所描述的,MAC运算符43不仅可以被用于矩阵乘法的第一指令INS1使用,还可以被其他指令(例如,SIMD指令)使用。
图5A到图5D是示出了根据一些示例实施例的矩阵乘法的图。详细地,图5A至图5D示出了由图4的执行电路40计算的第一矩阵A、第二矩阵B和第三矩阵C的元素。
参考图5A,模式信号MD可以指示第一模式。在第一模式中,第一多路复用器51可以选择第一矩阵A的第一列,并且可以输出第一列中包括的元素A01、A05、A09和A13。此外,在第一模式中,第二多路复用器52可以选择第二矩阵B的第一行,并且可以输出第一行中包括的元素B01、B02、B03和B04。如图5A所示,由第一多路复用器51输出的元素A01、A05、A09和A13以及由第二多路复用器52输出的元素B01、B02、B03和B04可以被重复,并且可以与第三矩阵C的元素C01至C16进行MAC运算。
参考图5B,模式信号MD可以指示第二模式。在第二模式中,第一多路复用器51可以选择第一矩阵A的第二列,并且可以输出第二列中包括的元素A02、A06、A10和A14。此外,在第二模式中,第二多路复用器52可以选择第二矩阵B的第二行,并且可以输出第二行中包括的元素B05、B06、B07和B08。如图5B所示,由第一多路复用器51输出的元素A02、A06、A10和A14和由第二多路复用器52输出的元素B05、B06、B07和B08可以被重复,并且可以与第三矩阵C的元素C01至C16进行MAC运算。
参考图5C,模式信号MD可以指示第三模式。在第三模式中,第一多路复用器51可以选择第一矩阵A的第三列,并且可以输出第三列中包括的元素A03、A07、A11和A15。此外,在第三模式中,第二多路复用器52可以选择第二矩阵B的第三行,并且可以输出第三行中包括的元素B09、B10、B11和B12。如图5C所示,由第一多路复用器51输出的元素A03、A07、A11和A15以及由第二多路复用器52输出的元素B09、B10、B11和B12可以被重复,并且可以与第三矩阵C的元素C01至C16进行MAC运算。
参考图5D,模式信号MD可以指示第四模式。在第四模式中,第一多路复用器51可以选择第一矩阵A的第四列,并且可以输出第四列中包括的元素A04、A08、A12和A16。此外,在第四模式中,第二多路复用器52可以选择第二矩阵B的第四行,并且可以输出第四行中包括的元素B13、B14、B15和B16。如图5D所示,由第一多路复用器51输出的元素A04、A08、A12和A16和由第二多路复用器52输出的元素B13、B14、B15和B16可以被重复,并且可以与第三矩阵C的元素C01至C16进行MAC运算。
如上面参考图5A至图5D所描述的,可以仅用一个指令来重排列数据,该指令指示通过第一多路复用器51和第二多路复用器52执行MAC运算。因此,可以省略用于重排列数据的指令(例如,图2的“shuffle”)的使用以及用于存储经重排列的数据的单独寄存器的使用。
图6A和图6B是示出了根据一些示例实施例的指令的示例的图。详细地,图6A和图6B分别示出了图1的用于矩阵乘法的第一指令INS1的示例。如上面参考附图所描述的,第一指令INS1可以指示模式,并且图1的执行电路14可以根据所指示的模式来不同地操作。在下文中,将参考图1来描述图6A和图6B。
参考图6A,第一指令INS1可以包括操作码OP和第一参数PAR1至第三参数PAR3。在一些实施例中,第一指令INS1可以包括与图6A所示的顺序不同的操作码OP和第一参数PAR1至第三参数PAR3。操作码OP可以具有指示矩阵乘法的值。解码电路12可以基于从第一指令INS1中提取的操作码OP的值来识别矩阵乘法,并且识别在操作码OP之后的第一参数PAR1至第三参数PAR3。此外,操作码OP可以具有指示矩阵乘法的模式的值,并且基于从第一指令INS1中提取的操作码的值,解码电路12可以向执行电路14提供模式信号(例如,图4的MD)。因此,在图6A的示例中,在4×4矩阵乘法的情况下,操作码OP可以具有分别与四种模式相对应的四个不同值之一。
第一参数PAR1可以具有指示寄存器(例如,第一寄存器)的地址(索引或指针)的值,第一矩阵A作为矩阵乘法的操作数被存储在该寄存器中。第二参数PAR2可以具有指示寄存器(例如,第二寄存器)的地址(索引或指针)的值,第二矩阵B作为矩阵乘法的操作数被存储在该寄存器中。第三参数PAR3可以具有指示寄存器(例如,第三寄存器)的地址(索引或指针)的值,第三矩阵C作为矩阵乘法的操作数被存储在该寄存器中。如上面参考图1所描述的,第一矩阵A、第二矩阵B和第三矩阵C可以分别存储在寄存器16中包括的寄存器中,并且第一参数PAR1至第三参数PAR3可以分别指示存储了第一矩阵A、第二矩阵B和第三矩阵C的寄存器。稍后将参考图7A来描述通过使用图6A的第一指令INS1来执行矩阵乘法的示例。
参考图6B,第一指令INS1可以包括操作码OP和第一参数PAR1至第四参数PAR4。在一些实施例中,第一指令INS1可以包括与图6B所示的顺序不同的操作码OP和第一参数PAR1至第四参数PAR4。操作码OP可以具有指示矩阵乘法的值。解码电路12可以基于从第一指令INS1中提取的操作码的值来识别矩阵乘法,并且识别在操作码OP之后的第一参数PAR1至第四参数PAR4。与上述图6A的示例不同,在图6B的示例中,矩阵乘法的模式可以由稍后将描述的第四参数PAR4而不是操作码OP来指示。因此,矩阵乘法中使用的第一指令INS1可以包括具有恒定值的操作码OP。稍后将参考图7B描述通过使用图6B的第一指令INS1来执行矩阵乘法的示例。
图7A和图7B是示出了根据一些示例实施例的用于矩阵乘法的伪代码的示例的图。详细地,图7A示出了包括图6A的第一指令INS1的伪代码70a,并且图7B示出了包括图6B的第一指令INS1的伪代码70b。图7A的伪代码70a和图7B的伪代码70b可以对应于汇编代码。在下文中,将参考图6A和图6B来描述图7A和图7B。
参考图7A,伪代码70a可以包括分别表示不同模式的指令。如上面参考图6A所描述的,第一指令INS1可以包括指示模式的操作码OP,因此伪代码70a可以包括分别指示用于4×4矩阵乘法的第一至第四模式的四个指令。例如,如图7A所示,第21行中的指令“MatMultMode1”可以指示第一模式,第22行中的指令“MatMultMode2”可以指示第二模式,第23行中的指令“MatMultMode3”可以指示第三模式,并且第24行中的指令“MatMultMode4”可以指示第四模式。此外,第21行至第24行中的指令可以具有作为图6A的第一参数PAR1到第三参数PAR3的共同的值“A”、“B”和“C”。与图2的伪代码20相比,图7A的伪代码70a可以包括更少的指令,并且可以使用更少的寄存器。
参考图7B,伪代码70b可以包括具有分别指示不同模式的参数的指令。如上面参考图6B所描述的,第一指令INS1可以包括指示模式的第四参数PAR4,因此伪代码70b可以包括分别具有第四参数PAR4的四个值的四个指令,该第四参数PAR4的四个值指示用于4×4矩阵乘法的第一至第四模式。例如,如图7B所示,第41行中的指令“MatMult”可以包括具有指示第一模式的值“1”的第四参数PAR4,第42行中的指令“MatMult”可以包括具有指示第二模式的值“2”的第四参数PAR4,第43行中的指令“MatMult”可以包括具有指示第三模式的值“3”的第四参数PAR4,并且第44行中的指令“MatMult”可以包括具有指示第四模式的值“4”的第四参数PAR4。在一些实施例中,指示第一至第四模式的第四参数PAR4的四个值可以与图7B中所示的不同。此外,第41行至第44行中的指令可以具有作为图6B的第一参数PAR1到第三参数PAR3的共同的值“A”、“B”和“C”。因此,与图2的伪代码20相比,图7B的伪代码70b可以包括更少的指令,并且可以使用更少的寄存器。
如上面参考图1所描述的,用于矩阵乘法的MAC运算器可以由其他指令(例如,SIMD指令)共享。例如,响应于图7A的第31行中的指令“MAC”(在本文中可以被称为第二指令),执行电路可以使用由第21行至第24行中的指令使用的多个MAC运算器,以将由“D”指示的寄存器的值(例如,矢量数据)和由“E”指示的寄存器的值(例如,矢量数据)的乘积与由“F”指示的寄存器的值(例如,矢量数据)相加。此外,响应于图7B的指令“MAC”,执行电路可以使用由第41行至第44行中的指令使用的多个MAC运算器,以将由“D”指示的寄存器的值(例如,矢量数据)和由“E”指示的寄存器的值(例如,矢量数据)的乘积与由“F”指示的寄存器的值(例如,矢量数据)相加。
图8A和图8B是示出了根据一些示例实施例的执行电路的示例的框图。如上面参考附图所描述的,图8A的执行电路80a和图8B的执行电路80b可以响应于第一指令INS1来执行矩阵乘法的至少一部分。将省略对图8A和图8B的彼此相同的描述。
参考图8A,执行电路80a可以包括第一输入寄存器81a至第三输入寄存器83a、第一多路复用器84a、第二多路复用器85a以及多个MAC运算器88a。第一输入寄存器81a可以连接到第一多路复用器84a,第二输入寄存器82a可以连接到第二多路复用器85a,并且第三输入寄存器83a可以连接到MAC运算器88a。执行电路80a可以响应于第一指令INS1来将矩阵乘法的操作数(例如,第一矩阵A和第二矩阵B)复制到第一输入寄存器81a和第二输入寄存器82a。例如,执行电路80a可以基于第一指令INS1中包括的第一参数PAR1和第二参数PAR2的值来识别用于存储第一矩阵A的寄存器和用于存储第二矩阵B的寄存器,并将第一矩阵A和第二矩阵B从所识别的寄存器复制到第一输入寄存器81a和第二输入寄存器82a。
第一输入寄存器81a和第一多路复用器84a可以彼此连接,使得根据模式来选择存储在第一输入寄存器81a中的第一矩阵A的列。例如,在4×4矩阵的乘法中,第一多路复用器84a可以用作4:1多路复用器,并且第一多路复用器84a的四个输入可以连接到第一输入寄存器81a,以分别接收与第一矩阵A的四个列相对应的位。类似地,第二输入寄存器82a和第二多路复用器85a可以彼此连接,使得根据模式来选择存储在第二输入寄存器82a中的第二矩阵B的行。例如,在4×4矩阵的乘法中,第二多路复用器85a可以用作4:1多路复用器,并且第二多路复用器85a的四个输入可以连接到第二输入寄存器82a,以分别接收与第二矩阵B的四个行相对应的位。
第一多路复用器84a可以连接到MAC运算器88a,使得第一多路复用器84a的输出(例如,第一矩阵A的所选列中包括的元素)被重复,如上面参考附图所描述的。此外,第二多路复用器85a可以连接到MAC运算器88a,使得第二多路复用器85a的输出(例如,第二矩阵B的所选行中包括的元素)被重复,如上面参考附图所描述的。
执行电路80a可以将矩阵乘法的结果(例如,第三矩阵C)复制到第三输入寄存器83a。例如,执行电路80a可以基于第一指令INS1中包括的第三参数PAR3的值来识别存储第三矩阵C的寄存器,并将第三矩阵C从所识别的寄存器复制到第三输入寄存器83a。第三输入寄存器83a和MAC运算器88a可以彼此连接,使得向MAC运算器88a分别提供第三矩阵C的元素。
参考图8B,执行电路80b可以包括第一输入寄存器81b至第三输入寄存器83b、第一多路复用器84b、第二多路复用器85b、第一重排列寄存器86b、第二重排列寄存器87b以及多个MAC运算器88b。与图8A的执行电路80a相比,图8B的执行电路80b还可以包括第一重排列寄存器86b和第二重排列寄存器87b。第一输入寄存器81b可以连接到第一多路复用器84b,第二输入寄存器82b可以连接到第二多路复用器85b,并且第三输入寄存器83b可以连接到MAC运算器88b。
第一重排列寄存器86b和第二重排列寄存器87b可以生成用于MAC运算的输入(例如,通过对分别从第一多路复用器84b和第二多路复用器85b接收的输出进行混洗)。例如,第一多路复用器84b可以连接到第一重排列寄存器86b,使得第一多路复用器84b的输出(例如,第一矩阵A的所选列中包括的元素)被重复,如上面参考附图所描述的。第一重排列寄存器86b和MAC运算器88b可以彼此连接,使得向MAC运算器88b分别提供存储在第一重排列寄存器86b中的元素。此外,第二多路复用器85b可以连接到第二重排列寄存器87b,使得第二多路复用器85b的输出(第二矩阵B的所选行中包括的元素)被重复,如上面参考附图所描述的。第二重排列寄存器87b和MAC运算器88b可以彼此连接,使得向MAC运算器88b分别提供存储在第二重排列寄存器87b中的元素。
图9是根据一些示例实施例的用于矩阵乘法的方法的流程图。如图9所示,用于矩阵乘法的方法可以包括多个操作S20、S40、S60和S80。在一些实施例中,图9的方法可以由图1的装置10来执行。下面将参考图1来描述图9。
参考图9,可以在操作S20中解码第一指令INS1。例如,解码电路12可以接收第一指令INS1,并且可以通过解码第一指令INS1来生成经解码的第一指令INS1'。解码电路12可以从第一指令INS1中提取操作码和/或至少一个参数,并且经解码的第一指令INS1'可以包括所提取的操作码和/或至少一个参数。稍后将参考图10A和图10B来描述操作S20的示例。
在操作S40中,可以识别模式和寄存器。例如,执行电路14可以接收经解码的第一指令INS1',并且可以基于经解码的第一指令INS1'来识别模式和寄存器。在一些实施例中,如上面参考图6A所描述的,可以通过第一指令INS1中包括的操作码来识别模式。在一些实施例中,如上面参考图6B所描述的,可以通过第一指令INS1中包括的参数(例如,图6B的PAR4)的值来识别模式。此外,执行电路14可以基于经解码的第一指令INS1'中包括的参数的值来识别寄存器。例如,执行电路14可以基于参数的值来识别对矩阵乘法的操作数进行存储的寄存器和对矩阵乘法的结果进行存储的寄存器。
在操作S60中,可以选择行和列。例如,执行电路14中包括的多路复用器14_2可以根据在操作S40中识别的模式来选择第一矩阵A的列和第二矩阵B的行。因此,可以通过第一指令INS1指示的模式来确定数据重排列,并且可以省略用于数据重排列的指令的使用。
在操作S80中,可以执行MAC运算。例如,执行电路14中包括的MAC运算器14_4可以生成从多路复用器14_2接收的元素的乘积,并将该乘积与第三矩阵C的元素分别求和。MAC运算符14_4不仅可以用于第一指令INS1,还可以用于其他指令。因此,可以省略用于矩阵乘法的附加乘法器和加法器。
图10A和图10B是示出了根据一些示例实施例的用于矩阵乘法的方法的示例的流程图。详细地,图10A和图10B示出了图9的操作S20的示例。如上面参考图9所描述的,在图10A的操作S20a和图10B的操作S20b中,可以解码第一指令INS1。在下文中,将参考图6A和图6B来描述图10A和图10B。
参考图10A,操作S20a可以包括操作S22和S24。在一些实施例中,如上面参考图6A所描述的,第一指令INS1可以包括操作码OP和第一参数PAR1至第三参数PAR3。因此,可以在操作S22中提取操作码OP,并且可以在操作S24中提取第一参数PAR1至第三参数PAR3。在操作S22中提取的操作码OP不仅可以指示矩阵乘法,还可以指示矩阵乘法的模式,并且解码电路12可以接收并解码四种类型的第一指令INS1,所述四种类型的第一指令INS1分别具有用于4×4矩阵的乘法的四种不同的操作码。在操作S24中提取的第一参数PAR1至第三参数PAR3可以分别指示对矩阵乘法的操作数进行存储的位置和对矩阵乘法的结果进行存储的位置。
参考图10B,操作S20b可以包括操作S26和S28。在一些实施例中,如上面参考图6B所描述的,第一指令INS1可以包括操作码OP和第一参数PAR1至第四参数PAR4。因此,可以在操作S26中提取操作码OP,并且可以在操作S28中提取第一参数PAR1至第四参数PAR4。在操作S26中提取的操作码OP可以指示矩阵乘法。在操作S28中提取的第一参数PAR1至第三参数PAR3可以分别指示对矩阵乘法的操作数进行存储的位置,并且第四参数PAR4可以指示矩阵乘法的模式。因此,解码电路12可以接收并解码四个第一指令INS1,所述四个第一指令INS1具有用于4×4矩阵的乘法的第四参数PAR4的四个不同的值。
图11是根据一些示例实施例的用于矩阵乘法的方法的流程图。在一些实施例中,可以在图9的操作S20和S40之间执行图11的操作S30。如图11所示,操作S30可以包括操作S31和S32。在一些实施例中,操作S30可以由图8A的执行电路80a执行,并且下面将参考图8A来描述图11。
参考图11,可以在操作S31中将第一矩阵数据复制到第一输入寄存器81a。例如,执行电路80a可以基于第一指令INS1中包括的第一参数PAR1来识别存储了第一矩阵A的寄存器,并将第一矩阵A从所识别的寄存器复制到第一输入寄存器81a。
在操作S32中,可以将第二矩阵数据复制到第二输入寄存器82a。例如,执行电路80a可以基于第一指令INS1中包括的第二参数PAR2来识别存储了第二矩阵B的寄存器,并将第二矩阵B从所识别的寄存器复制到第二输入寄存器82a。
在一些实施例中,操作S30可以仅在矩阵乘法的多个模式之一中执行。例如,如上面参考图7A和图7B所描述的,用于矩阵乘法的指令可以具有相同的参数,因此可以响应于初始指令(例如,指示第一模式的指令(例如图7A的第21行中的指令或图7B的第41行中的指令))来执行将第一矩阵数据复制到第一输入寄存器81a和将第二矩阵数据复制到第二输入寄存器82a的操作。
图12是示出了根据一些示例实施例的系统120的框图。如图12所示,系统120可以包括处理器121和存储器122。处理器121可以执行如上面参考附图所描述的矩阵乘法。
系统120可以指处理器121通过执行存储器122中存储的指令来执行功能的任何硬件。例如,系统120可以是如下面参考图13所描述的独立计算系统。此外,系统120可以是包括在更高级别系统中的组件,并且可以是例如处理器121和存储器122彼此集成在一个芯片上的片上系统(SoC)、和/或包括处理器121、存储器122和安装有处理器121和存储器122的板在内的模块。
处理器121可以与存储器122通信,读取存储在存储器122中的指令和/或数据,和/或将数据写入存储器122。如图12所示,处理器121可以包括地址发生器121_1、指令高速缓存121_2、获取电路1213、解码电路121_4、执行电路121_5和多个寄存器121_6。
地址发生器121_1可以生成用于读取指令和/或数据的地址,并且可以向存储器122提供所生成的地址。例如,地址发生器121_1可以接收解码电路121_4通过解码指令而提取的信息,并且可以基于所接收的信息来生成地址。
指令高速缓存121_2可以从存储器122的与由地址发生器121_1生成的地址相对应的区域接收指令,并且临时存储所接收的指令。由于执行了预先存储在指令高速缓存121_2中的指令,因此可以减少执行指令所需的总时间。
获取电路121_3可以获取存储在指令高速缓存121_2中的指令中的至少一个,并且向解码电路121_4提供所获取的指令。如上面参考附图所描述的,获取电路121_3可以获取用于执行矩阵乘法的至少一部分的指令(例如,图1的第一指令INS1),并且向解码电路121_4提供第一指令INS1。
解码电路121_4可以从获取电路121_3接收所获取的指令,并且可以解码所获取的指令。例如,解码电路121_4可以从获取电路121_3接收第一指令INS1,并且解码第一指令INS1。如图12所示,解码电路1214可以向地址发生器121_1和执行电路121_5提供通过解码所获取的指令而提取的信息(例如,图1的经解码的第一指令INS1’)。
执行电路121_5可以从解码电路121_4接收经解码的指令,并且可以访问寄存器121_6。例如,执行电路121_5可以从解码电路121_4接收经解码的第一指令INS1',并且基于经解码的第一指令INS1’来访问寄存器121_6中的至少一个,并执行矩阵乘法的至少一部分。如上面参考附图所描述的,经解码的第一指令INS1'可以指示多个模式之一,并且执行电路121_5可以基于该模式来选择输入到MAC运算的数据。因此,在矩阵乘法中,可以省略用于数据对齐的单独指令,因此可以消除附加资源的使用。
寄存器121_6可以由执行电路121_5访问。例如,寄存器121_6可以响应于执行电路121_5的访问来向执行电路121_5提供数据,并且响应于执行电路121_5的访问来存储由执行电路121_5提供的数据。此外,寄存器121_6可以存储从存储器122读取的数据,或者存储要存储在存储器122中的数据。例如,寄存器121_6可以从存储器122的与由地址发生器121_1生成的地址相对应的区域接收数据,并且存储所接收的数据。此外,寄存器121_6可以向存储器122提供数据,该数据是要写入存储器122的与由地址发生器121_1生成的地址相对应的区域的数据。
存储器122可以具有用于存储指令和/或数据的结构。例如,存储器122可以包括易失性存储器(例如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM))和/或非易失性存储器(例如闪存和电阻式随机存取存储器(RRAM))。
图13是示出了根据一些示例实施例的计算系统130的框图。在一些实施例中,上面参考附图所描述的用于矩阵乘法的方法可以由图13的计算系统130来执行。
计算系统130可以是固定计算系统(例如台式计算机、工作站和/或服务器),或者可以是便携式计算系统(例如膝上型计算机)。如图13所示,计算系统130可以包括至少一个处理器131、输入/输出(I/O)接口132、网络接口133、存储器子系统134、存储装置135和总线136;并且至少一个处理器131、输入/输出接口132、网络接口133、存储器子系统134和存储装置135可以通过总线136彼此通信。
至少一个处理器131可以被称为至少一个处理单元,并且可以是可编程处理器(例如CPU、GPU、NPU和/或DSP)。例如,至少一个处理器131可以经由总线136访问存储器子系统134,并且执行存储在存储器子系统134中的指令。在一些实施例中,计算系统130还可以包括加速器,该加速器是设计为高速执行特定功能的专用硬件。在一些实施例中,至少一个处理器131可以执行上面参考附图所描述的第一指令INS1,从而减少矩阵乘法所需的时间和资源。
输入/输出接口132可以包括或提供对输入设备(例如键盘、触摸板、麦克风、指示设备等)和/或输出设备(例如显示设备、扬声器、打印机等)的访问。用户可以通过输入/输出接口132触发程序135_1的执行和/或数据135_2的加载,并且还可以检查程序135_1的执行结果。
网络接口133可以提供对计算系统130外部的网络的访问。例如,网络可以包括多个计算系统和通信链路,并且通信链路可以包括有线链路、光链路、无线链路和/或任何其他类型的链路。
存储器子系统134可以存储用于上面参考附图所描述的矩阵乘法的程序135_1(或其至少一部分),并且至少一个处理器131可以执行存储器子系统134中存储的程序(或指令),以执行包括在用于矩阵乘法的方法中的至少一些操作。存储器子系统134可以包括只读存储器(ROM)、随机存取存储器(RAM)等。
存储装置135可以是非暂时性计算机可读存储介质,使得即使当供应给计算系统130的电力被切断时,所存储的数据也可以不丢失。例如,存储装置135可以包括非易失性存储设备或存储介质,例如磁带、光盘、磁盘等。在一些示例实施例中,存储装置135可以从计算系统130可拆卸。如图13所示,存储装置135可以存储程序135_1和数据135_2。
程序135_1的至少一部分在被至少一个处理器131执行之前可以被加载到存储器子系统134中。程序135_1可以包括一系列指令,并且该一系列指令可以包括用于矩阵乘法的至少一个第一指令INS1。在一些实施例中,存储装置135可以存储以程序语言编写的文件,并且可以将通过编译器等从文件生成的程序135_1或者程序135_1的至少一部分加载到存储器子系统134。
数据135_2可以包括与矩阵乘法相关的数据。例如,数据135_2可以包括矩阵乘法的操作数,例如第一矩阵A和第二矩阵B,并且可以包括矩阵乘法的结果,例如第三矩阵C。
在本公开中,除非另有明确指示,否则表示处理(和/或执行)至少一个功能或操作的元件的功能块可以被包括在处理电路中和/或实现为处理电路(和/或实现在处理电路中),处理电路例如是硬件、软件或硬件和软件的组合。例如,处理电路更具体地可以包括(和/或包括在)但不限于处理器(和/或多个处理器)、中央处理单元(CPU)、控制器、算术逻辑单元(ALU)、数字信号处理器、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等。
尽管已参考本发明构思的实施例具体示出和描述了本发明构思,但是应当理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (20)
1.一种运算装置,包括:
多个寄存器;
解码电路,被配置为解码第一指令;以及
执行电路,被配置为:
基于经解码的第一指令来识别模式、所述多个寄存器中的存储第一矩阵数据的第一寄存器、所述多个寄存器中的存储第二矩阵数据的第二寄存器、以及所述多个寄存器中的存储第三矩阵数据的第三寄存器,
基于所述模式来选择所述第一矩阵数据的列和所述第二矩阵数据的行,以及
基于所述第一矩阵数据的所选列、所述第二矩阵数据的所选行和所述第三矩阵数据来执行乘法累加MAC运算。
2.根据权利要求1所述的装置,其中,所述执行电路包括:
第一多路复用器,被配置为基于所述模式来输出与所述第一矩阵数据的所选列相对应的数据;以及
第二多路复用器,被配置为基于所述模式来输出与所述第二矩阵数据的所选行相对应的数据。
3.根据权利要求2所述的装置,其中,所述执行电路还包括:
第一输入寄存器,连接到所述第一多路复用器的输入;以及
第二输入寄存器,连接到所述第二多路复用器的输入,并且
所述执行电路被配置为:基于所述经解码的第一指令,将所述第一矩阵数据从所述第一寄存器复制到所述第一输入寄存器,并将所述第二矩阵数据从所述第二寄存器复制到所述第二输入寄存器。
4.根据权利要求1所述的装置,其中,所述执行电路包括多个MAC运算器,所述多个MAC运算器被配置为:分别对所述第一矩阵数据的所选列中包括的元素与所述第二矩阵数据的所选行中包括的元素的乘积与所述第三矩阵数据中包括的元素求和。
5.根据权利要求4所述的装置,其中,
向所述多个MAC运算器中的两个或更多个MAC运算器提供所述第一矩阵数据的所选列中包括的元素,
向所述多个MAC运算器中的两个或更多个MAC运算器提供所述第二矩阵数据的所选行中包括的元素,以及
向所述多个MAC运算器中的一个MAC运算器提供所述第三矩阵数据中包括的元素。
6.根据权利要求1所述的装置,其中,所述解码电路被配置为:从所述第一指令中提取指示矩阵乘法的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数、指示所述第三寄存器的第三参数、以及指示所述模式的第四参数。
7.根据权利要求1所述的装置,其中,所述解码电路被配置为:从所述第一指令中提取指示矩阵乘法和所述模式的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数、以及指示所述第三寄存器的第三参数。
8.根据权利要求1所述的装置,其中,
所述解码电路还被配置为解码第二指令,并且
所述执行电路被配置为:基于经解码的第二指令来识别存储第一矢量数据的第四寄存器、存储第二矢量数据的第五寄存器和存储第三矢量数据的第六寄存器,并且基于所述第一矢量数据、所述第二矢量数据和所述第三矢量数据来执行MAC运算。
9.一种运算方法,包括:
由解码电路来解码第一指令;
由执行电路基于经解码的第一指令来识别模式、存储第一矩阵数据的第一寄存器、存储第二矩阵数据的第二寄存器以及存储第三矩阵数据的第三寄存器;
由所述执行电路基于所识别的模式来选择所述第一矩阵数据的列和所述第二矩阵数据的行;以及
由所述执行电路基于所述第一矩阵数据的所选列、所述第二矩阵数据的所选行和所述第三矩阵数据来执行乘法累加MAC运算。
10.根据权利要求9所述的方法,其中,所述执行电路包括多个MAC运算器,
执行所述MAC运算包括:由所述多个MAC运算器中的MAC运算器对所述第一矩阵数据的所选列中包括的元素与所述第二矩阵数据的所选行中包括的元素的乘积与所述第三矩阵数据中包括的元素求和,并且
所述多个MAC运算器相对于所述第三矩阵数据中包括的元素并行运算。
11.根据权利要求10所述的方法,其中,执行所述MAC运算包括:
向所述多个MAC运算器中的两个或更多个MAC运算器提供所述第一矩阵数据的所选列中包括的元素,
向所述多个MAC运算器中的两个或更多个MAC运算器提供所述第二矩阵数据的所选行中包括的元素,以及
向所述多个MAC运算器中的一个MAC运算器提供所述第三矩阵数据中包括的元素。
12.根据权利要求10所述的方法,还包括:
由所述解码电路解码第二指令;以及
由所述多个MAC运算器基于经解码的第二指令来执行基于第一矢量数据、第二矢量数据和第三矢量数据的MAC运算。
13.根据权利要求9所述的方法,其中,解码所述第一指令包括:由所述解码电路从所述第一指令中提取指示矩阵乘法的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数、指示所述第三寄存器的第三参数以及指示所述模式的第四参数。
14.根据权利要求9所述的方法,其中,解码所述第一指令包括:由所述解码电路从所述第一指令中提取指示矩阵乘法和所述模式的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数以及指示所述第三寄存器的第三参数。
15.一种非暂时性计算机可读存储介质,包括能够由处理器执行的指令,其中,所述指令包括第一指令,所述第一指令被配置为:当由所述处理器执行时指示所述处理器执行矩阵乘法,所述矩阵乘法包括:
解码所述第一指令;
基于经解码的第一指令来识别模式、存储第一矩阵数据的第一寄存器、存储第二矩阵数据的第二寄存器以及存储第三矩阵数据的第三寄存器;
基于所识别的模式来选择所述第一矩阵数据的列和所述第二矩阵数据的行;以及
基于所述第一矩阵数据的所选列、所述第二矩阵数据的所选行和所述第三矩阵数据来执行乘法累加MAC运算。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述第一指令包括指示矩阵乘法的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数、指示所述第三寄存器的第三参数以及指示所述模式的第四参数。
17.根据权利要求16所述的非暂时性计算机可读存储介质,
其中,所述指令包括至少一个指令,以针对所述第一参数的相同值、所述第二参数的相同值、所述第三参数的相同值以及所述第四参数的不同值来重复地执行所述第一指令。
18.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述第一指令包括:指示矩阵乘法和所述模式的操作码、指示所述第一寄存器的第一参数、指示所述第二寄存器的第二参数以及指示所述第三寄存器的第三参数。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中,所述指令包括至少一个指令,所述至少一个指令包括各自具有与所述第一指令相同的值的所述第一参数、所述第二参数和所述第三参数,并且对应于与所述第一指令的模式不同的模式。
20.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述指令包括第二指令,所述第二指令被配置为:在由所述处理器执行时指示所述处理器执行矢量乘法,并且所述矢量乘法包括:
解码所述第二指令;以及
基于经解码的第二指令来执行基于第一矢量数据、第二矢量数据和第三矢量数据的MAC运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210139115A KR20230055573A (ko) | 2021-10-19 | 2021-10-19 | Mac 연산을 재사용하는 행렬 곱셈을 위한 장치, 방법 및 시스템 |
KR10-2021-0139115 | 2021-10-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115993951A true CN115993951A (zh) | 2023-04-21 |
Family
ID=85982702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211268517.XA Pending CN115993951A (zh) | 2021-10-19 | 2022-10-17 | 用于重用乘法累加运算的矩阵乘法的装置、方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230118082A1 (zh) |
KR (1) | KR20230055573A (zh) |
CN (1) | CN115993951A (zh) |
TW (1) | TW202324146A (zh) |
-
2021
- 2021-10-19 KR KR1020210139115A patent/KR20230055573A/ko unknown
-
2022
- 2022-10-17 CN CN202211268517.XA patent/CN115993951A/zh active Pending
- 2022-10-17 US US17/967,279 patent/US20230118082A1/en active Pending
- 2022-10-19 TW TW111139665A patent/TW202324146A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW202324146A (zh) | 2023-06-16 |
US20230118082A1 (en) | 2023-04-20 |
KR20230055573A (ko) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110770701B (zh) | 基于寄存器的矩阵乘法 | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
US10338925B2 (en) | Tensor register files | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
EP3451162B1 (en) | Device and method for use in executing matrix multiplication operations | |
US10372456B2 (en) | Tensor processor instruction set architecture | |
CN109661647B (zh) | 数据处理装置和方法 | |
EP1586991A2 (en) | Processor with plurality of register banks | |
KR20090050977A (ko) | 병렬 프로세서 아키텍쳐를 이용하여 단일-비트 값의 시퀀스에 대하여 스캔 연산을 실행하기 위한 시스템, 방법 및 컴퓨터 판독 가능 기록 매체 | |
WO2010051167A1 (en) | Dynamically-selectable vector register partitioning | |
KR102425668B1 (ko) | 데이터 처리장치에서의 곱셈-누적 | |
CN111752530A (zh) | 对块稀疏度的机器学习架构支持 | |
EP3931688B1 (en) | Data processing | |
US11321092B1 (en) | Tensor-based memory access | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
JP2018521422A (ja) | ベクトル長クエリ命令 | |
CN115993951A (zh) | 用于重用乘法累加运算的矩阵乘法的装置、方法和系统 | |
US20220179924A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
WO2020246598A1 (ja) | 演算装置、演算方法、および演算プログラム | |
WO2023242531A1 (en) | Technique for performing outer product operations | |
TW202305588A (zh) | 用於向量組合指令之處理設備、方法、及電腦程式 | |
TW202411860A (zh) | 多外積指令 | |
US20080072010A1 (en) | Data processor and methods thereof | |
KR20230069952A (ko) | 공유 피연산자들의 수직 및 수평 브로드캐스트 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |