CN104063357B - 处理器以及处理方法 - Google Patents
处理器以及处理方法 Download PDFInfo
- Publication number
- CN104063357B CN104063357B CN201410041737.8A CN201410041737A CN104063357B CN 104063357 B CN104063357 B CN 104063357B CN 201410041737 A CN201410041737 A CN 201410041737A CN 104063357 B CN104063357 B CN 104063357B
- Authority
- CN
- China
- Prior art keywords
- data
- input
- multiplier
- group
- output
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种处理器以及处理方法。在该处理器中包括有多个乘法器和多个加法器以执行矩阵乘积处理,算术处理中涉及的输入矢量数据的每个数据被用于两个乘法器中,从而使用单一指令来执行在矩阵乘积运算中的不同行和不同列的元素的算术处理,这使得能够共享输入数据以减少在整个矩阵乘积处理中数据移动的次数并且减少功率消耗。
Description
技术领域
本文中所讨论的实施例涉及处理器以及处理方法。
背景技术
由于工艺技术的进步,已经逐渐在硅芯片上集成许多晶体管。另一方面,在算术处理中32位(bit)或64位的处理精度通常是足够的。因此,广泛使用SIMD(SingleInstruction Multiple Data,单指令多数据)方法作为高效地使用许多晶体管的处理方法,该方法通过使用单一指令并行驱动许多算术单元来处理多条数据(例如,参考专利文献1)。
在SIMD方法中,例如,将多条32位或64位的数据存储在128位或256位矢量寄存器中。以下述方式执行矢量数据的四则运算,即:作为示例,如图9所示,将用于四则运算的多个算术单元排成一行,并且算术单元进行多条对应的数据的四则运算。作为示例,图9示出了具有四个乘法器101-i(i=1,2,3,4)并且计算矢量数据的乘积的处理单元100,每个矢量数据具有四个元素。乘法器101-i接收数据a(i-1)和数据b(i-1)并且输出数据a(i-1)与数据b(i-1)的乘积作为成为输出矢量数据c的一个元素的数据c(i-1),其中,数据a(i-1)和数据b(i-1)分别是输入矢量数据a、b的一个元素。
当前可用的SIMD方法通常用于在一个周期内向多个算术单元提供数据,并且被称为短矢量SIMD方法,这是因为其矢量寄存器长度最大为几百位,这短于为几千位的传统矢量寄存器的长度。矢量运算适合用于高效地处理通常用于科学技术计算中的矩阵运算。在下文中,作为示例,将给出对其中关于二维N×N(N是大于或等于2的整数)矩阵A、矩阵B、矩阵C来说将矩阵A和矩阵B的乘积加至矩阵C的算术处理的描述。
图10是表示其中通过标量处理将矩阵A与矩阵B的乘积加至矩阵C的处理的示例的流程图。当处理开始时,在步骤S301中,变量j的值被初始化为0。接着,在步骤S302中,检查变量j的值,并且当变量j的值小于N时,处理进行至步骤S303,否则,处理结束。在步骤S303中,变量i的值被初始化为0。接着,在步骤S304中,检查变量i的值,并且当变量i的值小于N时,处理进行至步骤S305,否则,在步骤S310中,将变量j的值加1,并且处理进行至步骤S302。在步骤S305中,变量k的值被初始化为0。接着,在步骤S306中,检查变量k的值,并且当变量k的值小于N时,处理进行至步骤S307,否则,在步骤S309中,将变量i的值加1,并且处理进行至步骤S304。在步骤S307中,执行下述算术运算:将矩阵A的第(j+1)行且第(k+1)列处的数据A[j][k]与矩阵B的第(k+1)行且第(i+1)列处的数据B[k][i]的乘积加至矩阵C的第(j+1)行且第(i+1)列处的数据C[j][i],并且将相加结果设置为矩阵C的第(j+1)行且第(i+1)列处的数据。接着,在步骤S308中,将变量k的值加1,并且处理进行至步骤S306。当通过标量处理执行处理时,如图10所示,通过对变量i、j、k进行三重循环处理进行了N3次乘积和求和的计算。图10中所表示的指令或处理的数目是N3。
图11是表示其中通过四个元素的矢量处理将矩阵A与矩阵B的乘积加至矩阵C的处理的示例的流程图。图11所表示的步骤S401至步骤S406以及步骤S408和步骤S409的处理对应于图10所表示的步骤S301至步骤S306以及步骤S308和步骤S309的处理。处理的内容相同,并且因此,将省略其描述。在步骤S406中,当变量k的值小于N时,处理进行至步骤S407,在步骤S407中,执行下述算术运算:将矩阵A的第(j+x+1)行且第(k+1)列处的数据A[j+x][k](x=0,1,2,3)与矩阵B的第(k+1)行且第(i+1)列处的数据B[k][i]的乘积加至矩阵C的第(j+x+1)行且第(i+1)列处的数据C[j+x][i],并且将相加结果设置为矩阵C的第(j+x+1)行且第(i+1)列处的数据。也就是说,在图11所表示的示例中,使用单一指令执行用于连续的四个元素的矢量乘积运算和矢量求和运算。在步骤S404中,当变量i的值不小于N时,处理进行至步骤S410,在步骤S410中,将变量j的值加4并且处理进行至步骤S402。当通过图11所表示的矢量处理执行处理时,对连续的四个元素执行矢量乘积运算和矢量求和运算,并且因此,由(N3/4)个指令执行N3次乘积运算和求和运算。
提出了一种处理器,该处理器通过如下方式执行处理:将同一矢量寄存器的不同元素的数据提供给能够执行相同处理的多个矢量算术单元,从而高效地使用未被使用的矢量算术单元以增加每个循环中所处理的元素的数目,使得处理能力能够改善(例如,参考专利文献2)。
[专利文献1]国际专利申请的翻译版本的国家公开No.2008-519349
[专利文献2]日本公开专利公报No.10-312374
在半导体集成电路中,在现有处理技术下,即使电源电压不从约1V降低,由于集成在半导体集成电路中的晶体管的数量逐渐增加,功率消耗已经成为问题。特别地,硅芯片上的数据移动消耗大量功率,并且已变得重要的是减少至数据存储单元如寄存器的输入和从数据存储单元的输出的数目以及将数据存储单元与处理单元设置为彼此接近。获得两个矩阵的乘积的矩阵乘积运算是涉及在其中存储有矩阵的数据的数据存储单元与处理单元之间的许多数据移动的处理中的一个处理。在关于一个元素的算术运算中,矩阵乘积运算不使用相同的数据,并且因此,即使例如当矢量运算被用作涉及一个元素的算术运算时,向处理单元输入数据的次数不会减少,并且不能减少执行矩阵乘积处理的处理器的功率消耗。
发明内容
一方面,本实施例的目标是通过减少在执行矩阵乘积处理的处理器中的整个算术处理中数据移动的次数来减少功率消耗。
根据实施例的一个方面,一种处理器包括:多个乘法器,所述乘法器接收第一组的四条输入数据和第二组的四条输入数据;以及多个加法器,每个加法器将乘法器中的多个乘法器的输出相加以输出相加的结果作为输出数据。第一组的第一输入数据与第二组的第一输入数据的乘积和第一组的第二输入数据与第二组的第三输入数据的乘积之和被输出作为第一输出数据。第一组的第二输入数据与第二组的第四输入数据的乘积和第一组的第一输入数据与第二组的第二输入数据的乘积之和被输出作为第二输出数据。第一组的第三输入数据与第二组的第一输入数据的乘积和第一组的第四输入数据与第二组的第三输入数据的乘积之和被输出作为第三输出数据。第一组的第四输入数据与第二组的第四输入数据的乘积和第一组的第三输入数据与第二组的第二输入数据的乘积之和被输出作为第四输出数据。
附图说明
图1是示出了第一实施例中的处理器的配置示例的图;
图2是示出了该实施例中的处理器的配置示例的图;
图3是表示该实施例中由处理器执行的算术处理的示例的流程图;
图4是示出了第二实施例中的处理器的配置示例的图;
图5是示出了第三实施例中的处理器的配置示例的图;
图6是示出了第四实施例中的处理器的配置示例的图;
图7是示出了第四实施例中的处理器的另一配置示例的图;
图8是示出了第四实施例中的处理器的又一配置示例的图;
图9是示出了传统处理器的配置示例的图;
图10是表示传统矩阵处理(标量处理)的示例的流程图;以及
图11是表示传统矩阵处理(矢量处理)的示例的流程图。
具体实施方式
在下文中,将参考附图描述实施例。
如上所述,在关于一个元素的算术运算中,矩阵乘积运算不使用相同的数据。因此,即使在通过矢量运算完成关于一个元素的算术运算时,在数据存储单元与处理单元之间移动数据的次数没有减少。然而,在对不同行且相同列中的元素的算术运算中,使用相同列的数据,并且在对不同列且相同行中的元素的算术运算中,使用相同行的数据。在本实施例中,使用单一指令执行矩阵乘积运算中的不同行且不同列中的元素的算术处理,从而使得能够共享输入数据以减少在数据存储单元与处理单元之间移动数据的次数。
(第一实施例)将描述第一实施例。图1是示出了第一实施例中的处理器所包括的处理单元的配置示例的图。处理单元10A是下述矩阵乘积算术单元,该矩阵乘积算术单元采用两个2×2矩阵作为其输入并且给出这些输入矩阵的矩阵乘积作为其输出。第一输入矩阵是具有数据a0、数据a1、数据a2、数据a3作为其元素的矢量数据a。第二输入矩阵是具有数据b0、数据b1、数据b2、数据b3作为其元素的矢量数据b。输出矩阵是具有数据c0、数据c1、数据c2、数据c3作为其元素的矢量数据c。数据a0、数据b0、数据c0分别是各个矩阵中的每个矩阵的第一行且第一列处的数据,数据a1、数据b1、数据c1分别是各个矩阵中的每个矩阵的第一行且第二列处的数据,数据a2、数据b2、数据c2分别是各个矩阵中的每个矩阵的第二行且第一列处的数据,并且数据a3、数据b3、数据c3分别是各个矩阵中的每个矩阵的第二行且第二列处的数据。数据a0至数据a3、数据b0至数据b3、数据c0至数据c3是数值数据,并且数据的类型是任意的。数据a0至数据a3、数据b0至数据b3、数据c0至数据c3的数据类型例如是浮点数类型、定点数类型、整数类型等。
处理单元10A包括八个乘法器11-1至11-8和四个加法器12-1至12-4。将作为具有四个元素的输入矢量数据a的第一元素的数据a0输入至第一乘法器11-1的第一输入端,并且将作为具有四个元素的输入矢量数据b的第一元素的数据b0输入至第一乘法器11-1的第二输入端。第一乘法器11-1输出数据a0与数据b0的乘积。将作为输入矢量数据a的第二元素的数据a1输入至第二乘法器11-2的第一输入端,并且将作为输入矢量数据b的第三元素的数据b2输入至第二乘法器11-2的第二输入端。第二乘法器11-2输出数据a1与数据b2的乘积。第一加法器12-1将第一乘法器11-1的输出与第二乘法器11-2的输出相加并且输出相加结果作为成为具有四个元素的输出矢量数据c的第一元素的数据c0。
将输入矢量数据a的数据a1输入至第三乘法器11-3的第一输入端,并且将作为输入矢量数据b的第四元素的数据b3输入至第三乘法器11-3的第二输入端。第三乘法器11-3输出数据a1与数据b3的乘积。将输入矢量数据a的数据a0输入至第四乘法器11-4的第一输入端,并且将作为输入矢量数据b的第二元素的数据b1输入至第四乘法器11-4的第二输入端。第四乘法器11-4输出数据a0与数据b1的乘积。第二加法器12-2将第三乘法器11-3的输出与第四乘法器11-4的输出相加,并且输出相加结果作为成为输出矢量数据c的第二元素的数据c1。
将作为输入矢量数据a的第三元素的数据a2输入至第五乘法器11-5的第一输入端,并且将输入矢量数据b的数据b0输入至第五乘法器11-5的第二输入端。第五乘法器11-5输出数据a2与数据b0的乘积。将作为输入矢量数据a的第四元素的数据a3输入至第六乘法器11-6的第一输入端,并且将输入矢量数据b的数据b2输入至第六乘法器11-6的第二输入端。第六乘法器11-6输出数据a3与数据b2的乘积。第三加法器12-3将第五乘法器11-5的输出与第六乘法器11-6的输出相加,并且输出相加结果作为成为输出矢量数据c的第三元素的数据c2。
将输入矢量数据a的数据a3输入至第七乘法器11-7的第一输入端,并且将输入矢量数据b的数据b3输入至第七乘法器11-7的第二输入端。第七乘法器11-7输出数据a3与数据b3的乘积。将输入矢量数据a的数据a2输入至第八乘法器11-8的第一输入端,并且将输入矢量数据b的数据b1输入至第八乘法器11-8的第二输入端。第八乘法器11-8输出数据a2与数据b1的乘积。第四加法器12-4将第七乘法器11-7的输出与第八乘法器11-8的输出相加,并且输出相加结果作为成为输出矢量数据c的第四元素的数据c3。
以这种方式,将作为输入矢量数据a的第一元素的数据a0输入至第一乘法器11-1和第四乘法器11-4。将作为输入矢量数据a的第二元素的数据a1输入至第二乘法器11-2和第三乘法器11-3。将作为输入矢量数据a的第三元素的数据a2输入至第五乘法器11-5和第八乘法器11-8。将作为输入矢量数据a的第四元素的数据a3输入至第六乘法器11-6和第七乘法器11-7。
此外,将作为输入矢量数据b的第一元素的数据b0输入至第一乘法器11-1和第五乘法器11-5。将作为输入矢量数据b的第二元素的数据b1输入至第四乘法器11-4和第八乘法器11-8。将作为输入矢量数据b的第三元素的数据b2输入至第二乘法器11-2和第六乘法器11-6。将作为输入矢量数据b的第四元素的数据b3输入至第三乘法器11-3和第七乘法器11-7。
以这种方式,在关于矩阵乘积运算的算术处理的执行中,从数据存储单元如寄存器中读取的数据a0至数据a3、数据b0至数据b3分别被用于乘法器11-1至乘法器11-8中的两个乘法器中。因此,与传统方法的矩阵乘积处理相比,可以将向处理单元10A输入数据的次数减少到1/2,使得能够减少功率消耗。
图2是示出了本实施例中的处理器的配置示例的图。本实施例中的处理器包括数据存储单元31、处理控制单元32和矩阵算术单元33。数据存储单元31例如是寄存器或存储器并且存储算术处理等中涉及的数据。在数据存储单元31中,存储矩阵算术单元33中的矩阵运算所涉及的输入数据和输出数据。处理控制单元32执行各种关于算术处理的控制。例如,处理控制单元32发出指令并且控制数据交换。本实施例中矩阵算术单元33包括处理单元10A并且根据处理控制单元32的控制执行矩阵乘积处理。顺便提及,数据存储单元31和矩阵算术单元33可以被配置成能够直接交换数据。
图3是表示使用本实施例中的处理器的处理单元10A进行的N×N矩阵的矩阵乘积处理的示例的流程图。当开始处理时,在步骤S201中,处理控制单元32将变量j的值初始化为0。接着,在步骤S202中,处理控制单元32检查变量j的值,并且当变量j的值小于N时,处理控制单元32进行至步骤S203,否则,处理控制单元32结束处理。在步骤S203中,处理控制单元32将变量i的值初始化为0。接着,在步骤S204中,处理控制单元32检查变量i的值,并且当变量i的值小于N时,处理控制单元32进行至步骤S205,否则,在步骤S210中处理控制单元32将变量j的值加2并且进行至步骤S202。在步骤S205中,处理控制单元32将变量k的值初始化为0。接着,在步骤S206中,处理控制单元32检查变量k的值,并且当变量k的值小于N时,处理控制单元32进行至步骤S207,否则,在步骤S209中处理控制单元32将变量i的值加2并且进行至步骤S204。
在步骤S207中,处理控制单元32从数据存储单元31读取矩阵A的第(j+1)行且第(k+1)列处的数据A[j][k]、第(j+1)行且第(k+2)列处的数据A[j][k+1]、第(j+2)行且第(k+1)列处的数据A[j+1][k]以及第(j+2)行且第(k+2)列处的数据A[j+1][k+1]。处理控制单元32从数据存储单元31读取矩阵B的第(k+1)行且第(i+1)列处的数据B[k][i]、第(k+1)行且第(i+2)列处的数据B[k][i+1]、第(k+2)行且第(i+1)列处的数据B[k+1][i]以及第(k+2)行且第(i+2)列处的数据B[k+1][i+1]。然后,处理控制单元32给矩阵算术单元33的处理单元10A提供所读取的数据A[j][k]、数据A[j][k+1]、数据A[j+1][k]、数据A[j+1][k+1]作为数据a0、数据a1、数据a2、数据a3以及所读取的数据B[k][i]、数据B[k][i+1]、数据B[k+1][i]、数据B[k+1][i+1]作为数据b0、数据b1、数据b2、数据b3。
矩阵算术单元33的处理单元10A输出数据a0、数据b0的乘积与数据a1、数据b2的乘积之和(A[j][k]×B[k][i]+A[j][k+1]×B[k+1][i])作为数据c0。处理单元10A输出数据a1、数据b3的乘积与数据a0、数据b1的乘积之和(A[j][k+1]×B[k+1][i+1]+A[j][k]×B[k][i+1])作为数据c1。处理单元10A输出数据a2、数据b0的乘积与数据a3、数据b2的乘积之和(A[j+1][k]×B[k][i]+A[j+1][k+1]×B[k+1][i])作为数据c2。处理单元10A输出数据a3、数据b3的乘积与数据a2、数据b1的乘积之和(A[j+1][k+1]×B[k+1][i+1]+A[j+1][k]×B[k][i+1])作为数据c3。
此外,矩阵算术单元33将数据c0加至矩阵C的第(j+1)行且第(i+1)列处的数据C[j][i]以将结果设置为矩阵C的第(j+1)行且第(i+1)列处的数据。矩阵算术单元33将数据c1加至矩阵C的第(j+1)行且第(i+2)列处的数据C[j][i+1]以将结果设置为矩阵C的第(j+1)行且第(i+2)列处的数据。矩阵算术单元33将数据c2加至矩阵C的第(j+2)行且第(i+1)列处的数据C[j+1][i]以将结果设置为矩阵C的第(j+2)行且第(i+1)列处的数据。矩阵算术单元33将数据c3加至矩阵C的第(j+2)行且第(i+2)列处的数据C[j+1][i+1]以将结果设置为矩阵C的第(j+2)行且第(i+2)列处的数据。
接着,在步骤S208中,处理控制单元32将变量k的值加2并且进行至步骤S206。以这种方式,通过将作为算术处理目标的N×N输入矩阵划分成2×2子矩阵来执行N×N矩阵的矩阵乘积处理。在矩阵乘积处理中,通过顺序地提供第一N×N输入矩阵中的算术目标的第(j+1)行及第(j+2)行中的多个2×2子矩阵的数据并且还顺序地提供第二N×N输入矩阵中的算术目标的第(i+1)列及第(i+2)列中的多个2×2子矩阵的数据来执行算术处理。
如上所述,根据本实施例,如图3所示,对于所有变量i、j、k,循环处理次数是(N/2)次,并且步骤S207中的处理的执行次数是(N3/8)。由于在步骤S207中每个处理使用八条数据,所以在N×N矩阵的整个矩阵乘积处理中输入数据移动的次数是N3次。另一方面,在传统方法中,在N×N矩阵的整个矩阵乘积处理中输入数据移动的次数是2N3次。因此,可以将数据在数据存储单元31与处理单元10A之间移动的次数减少到二分之一,这可以减少功率消耗。此外,与其中由标量处理执行的情况相比,用于执行N×N矩阵的矩阵乘积处理的指令的数目是其八分之一,这可以缩短处理时间。
(第二实施例)接着,将描述第二实施例。在下述第二实施例至第四实施例中,由于处理器的整体配置以及由处理器进行的N×N矩阵的矩阵乘积处理与第一实施例中的那些相同,所以将省略其描述,并且将描述处理器所包括的处理单元的配置。
图4是示出了第二实施例中的处理器所包括的处理单元的配置示例的图。在图4中,用相同的附图标记和符号表示与图1所示出的那些构成元素具有相同功能的构成元素,并且将省略对其过多的描述。处理单元10B是使用两个2×2矩阵作为其输入并且给出第一输入矩阵与转置的第二输入矩阵的矩阵乘积作为其输出的矩阵乘积算术单元。处理单元10B与图1所示的处理单元10A的不同之处在于:输入矢量数据b的数据b1输入至乘法器11-2、乘法器11-6的第二输入端,并且输入矢量数据b的数据b2输入至乘法器11-4、乘法器11-8的第二输入端。
矩阵乘积的处理是各个矩阵中的一个矩阵的行方向的数据与另一矩阵的列方向的数据的相乘。例如,如果两个矩阵的数据以相同的方式存储在数据存储单元中以使得数据按照行在行方向上从头到尾连续地存储,并且在行方向的末端,用于数据存储的行移动至下一行,作为输入矢量数据b读取的数据不是存储在连续的区域中而是存储在不连续的区域中。因此,从数据存储单元读取数据的系统开销变大。另一方面,根据第二实施例,对作为第二输入矩阵的矢量数据b的数据b0、数据b1、数据b2、数据b3进行与矩阵的转置类似的互换,并且因此,即使在以同样的方式存储两个矩阵的数据时,也可以减少从数据存储单元读取数据的系统开销。
(第三实施例)接着,将描述第三实施例。图5是示出了第三实施例中的处理器所包括的处理单元的配置示例的图。在图5中,用相同的附图标记和符号表示具有与图1所示出的构成元素的功能相同功能的构成元素,并且将省略对其过多的描述。处理单元10C是使用两个2×2矩阵及控制信号(交换信号)T作为其输入、根据控制信号T选择是否转置第二输入矩阵并且输出两个输入矩阵的矩阵乘积的矩阵乘积算术单元。
处理单元10C除了包括八个乘法器11-1至11-8及四个加法器12-1至12-4之外还包括四个选择器13-1至13-4。将输入矢量数据b的数据b1、数据b2和控制信号T输入至选择器13-1至选择器13-4。第一选择器13-1和第三选择器13-3在控制信号T被切断(例如,0)时输出数据b2,并且在控制信号T被接通(例如,1)时输出数据b1。第二选择器13-2与第四选择器13-4在控制信号T被切断(例如,0)时输出数据b1,并且在控制信号T被接通(例如,1)时输出数据b0。
将第一选择器13-1的输出输入至第二乘法器11-2的第二输入端。将第二选择器13-2的输出输入至第四乘法器11-4的第二输入端。将第三选择器13-3的输出输入至第六乘法器11-6的第二输入端。将第四选择器13-4的输出输入至第八乘法器11-8的第二输入端。
上述配置使得可以通过根据数据存储单元中输入矩阵的矢量数据的存储方法适当地选择是否转置第二输入矩阵来执行矩阵乘积处理。
(第四实施例)接着,将描述第四实施例。图6是示出了第四实施例中的处理器所包括的处理单元的配置示例的图。在图6中,用相同的附图标记和符号表示具有与图1所示出的构成元素的功能相同功能的构成元素,并且将省略对其过多的描述。第四实施例中的处理单元是使用3个2×2矩阵作为其输入并且给出两个输入矩阵(第一输入矩阵和第二输入矩阵)的矩阵乘积与一个输入矩阵(第三输入矩阵)之和作为其输出的矩阵乘积算术单元。
第一输入矩阵是具有数据a0、数据a1、数据a2、数据a3作为其元素的矢量数据a。第二输入矩阵是具有数据b0、数据b1、数据b2、数据b3作为其元素的矢量数据b。第三输入矩阵是具有数据c0、数据c1、数据c2、数据c3作为其元素的矢量数据c。输出矩阵是具有数据d0、数据d1、数据d2、数据d3作为其元素的矢量数据d。数据a0、数据b0、数据c0、数据d0分别是各个矩阵中的每个矩阵中的第一行且第一列处的数据,数据a1、数据b1、数据c1、数据d1分别是各个矩阵中的每个矩阵中的第一行且第二列处的数据,数据a2、数据b2、数据c2、数据d2分别是各个矩阵中的每个矩阵中的第二行且第一列处的数据,以及数据a3、数据b3、数据c3、数据d3分别是各个矩阵中的每个矩阵中的第二行且第二列处的数据。数据a0至数据a3、数据b0至数据b3、数据c0至数据c3、数据d0至数据d3是数值数据,并且数据的类型是任意的。数据a0至数据a3、数据b0至数据b3、数据c0至数据c3、数据d0至数据d3的数据类型例如是浮点数类型、定点数类型、整数类型等。
处理单元20A与图1所示的处理单元10A的不同之处在于:处理单元20A除了包括八个乘法器11-1至11-8和四个加法器12-1至12-4之外还包括四个加法器21-1至21-4。第五加法器21-1将第一加法器12-1的输出与作为输入矢量数据c的第一元素的数据c0相加,并且输出相加结果作为成为输出矢量数据d的第一元素的数据d0。第六加法器21-2将第二加法器12-2的输出与作为输入矢量数据c的第二元素的数据c1相加,并且输出相加结果作为成为输出矢量数据d的第二元素的数据d1。
第七加法器21-3将第三加法器12-3的输出与作为输入矢量数据c的第三元素的数据c2相加,并且输出相加结果作为成为输出矢量数据d的第三元素的数据d2。第八加法器21-4将第四加法器12-4的输出与作为输入矢量数据c的第四元素的数据c3相加,并且输出相加结果作为成为输出矢量数据d的第四元素的数据d3。
因此,通过设置加法器21-1至加法器21-4以及输入矩阵A、输入矩阵B、输入矩阵C的数据作为输入矢量数据a、输入矢量数据b、输入矢量数据c,并且将输出矢量数据d设置为矩阵C的数据,处理单元20A可以使用单一指令执行图3的步骤S207所表示的算术运算。
在上述描述中,描述了其中在图1所示的第一实施例中的处理单元中设置四个加法器21-1至21-4的示例,但是也可以将四个加法器21-1至21-4设置在图7和图8所示的第二实施例和第三实施例中的处理单元中。
图7是示出第四实施例中的处理器所包括的处理单元的另一配置示例的图。在图7中,用相同的附图标记和符号表示具有与图1、图4和图6所示出的构成元素的功能相同功能的构成元素,并且将省略对其过多的描述。对图7所示的处理单元20B进行配置以使四个加法器21-1至21-4设置在图4所示的第二实施例中的处理单元中。
此外,图8是第四实施例中的处理器所包括的处理单元的又一配置示例。在图8中,用相同的附图标记和符号表示具有与图1、图5和图6所示出的构成元素的功能相同功能的构成元素,并且将省略对其过多的描述。对图8所示的处理单元20C进行配置以使四个加法器21-1至21-4设置在图5所示的第三实施例中的处理单元中。
通过提供两个输入矩阵的数据作为第一组的输入数据和第二组的输入数据,输入数据中的每个输入数据被提供给两个乘法器,这可以减少在整个矩阵乘积处理中数据移动的次数以减少处理器的功率消耗。
Claims (6)
1.一种处理器,包括:
第一乘法器,所述第一乘法器在第一输入端处接收第一组的四条输入数据中的第一输入数据并在第二输入端处接收第二组的四条输入数据中的第一输入数据,并且输出两个所述输入数据的乘积;
第二乘法器,所述第二乘法器在第一输入端处接收所述第一组的第二输入数据并在第二输入端处接收所述第二组的第三输入数据,并且输出两个所述输入数据的乘积;
第三乘法器,所述第三乘法器在第一输入端处接收所述第一组的所述第二输入数据并在第二输入端处接收所述第二组的第四输入数据,并且输出两个所述输入数据的乘积;
第四乘法器,所述第四乘法器在第一输入端处接收所述第一组的所述第一输入数据并在第二输入端处接收所述第二组的第二输入数据,并且输出两个所述输入数据的乘积;
第五乘法器,所述第五乘法器在第一输入端处接收所述第一组的第三输入数据并在第二输入端处接收所述第二组的所述第一输入数据,并且输出两个所述输入数据的乘积;
第六乘法器,所述第六乘法器在第一输入端处接收所述第一组的第四输入数据并在第二输入端处接收所述第二组的所述第三输入数据,并且输出两个所述输入数据的乘积;
第七乘法器,所述第七乘法器在第一输入端处接收所述第一组的所述第四输入数据并在第二输入端处接收所述第二组的所述第四输入数据,并且输出两个所述输入数据的乘积;
第八乘法器,所述第八乘法器在第一输入端处接收所述第一组的所述第三输入数据并在第二输入端处接收所述第二组的所述第二输入数据,并且输出两个所述输入数据的乘积;
第一加法器,所述第一加法器将所述第一乘法器的输出与所述第二乘法器的输出相加以输出所述相加的结果作为第一输出数据;
第二加法器,所述第二加法器将所述第三乘法器的输出与所述第四乘法器的输出相加以输出所述相加的结果作为第二输出数据;
第三加法器,所述第三加法器将所述第五乘法器的输出与所述第六乘法器的输出相加以输出所述相加的结果作为第三输出数据;
第四加法器,所述第四加法器将所述第七乘法器的输出与所述第八乘法器的输出相加以输出所述相加的结果作为第四输出数据;
多个选择器,每个所述选择器根据控制信号选择并且输出所述第二组的所述第二输入数据或所述第三输入数据,其中:
所述第二乘法器和所述第六乘法器在第二输入端处接收第一选择器的输出;以及
所述第四乘法器和所述第八乘法器在第二输入端处接收第二选择器的输出,所述第二选择器在所述第一选择器根据所述控制信号输出所述第二输入数据时输出所述第三输入数据以及在所述第一选择器根据所述控制信号输出所述第三输入数据时输出所述第二输入数据。
2.根据权利要求1所述的处理器,还包括:
第五加法器,所述第五加法器将第三组的四条输入数据中的第一输入数据与所述第一加法器的输出相加以输出所述相加的结果作为所述第一输出数据;
第六加法器,所述第六加法器将所述第三组的第二输入数据与所述第二加法器的输出相加以输出所述相加的结果作为所述第二输出数据;
第七加法器,所述第七加法器将所述第三组的第三输入数据与所述第三加法器的输出相加以输出所述相加的结果作为所述第三输出数据;以及
第八加法器,所述第八加法器将所述第三组的第四输入数据与所述第四加法器的输出相加以输出所述相加的结果作为所述第四输出数据。
3.根据权利要求1所述的处理器,其中:
所述第二乘法器和所述第六乘法器在第二输入端处接收所述第二组的所述第二输入数据;以及
所述第四乘法器和所述第八乘法器在第二输入端处接收所述第二组的所述第三输入数据。
4.根据权利要求1所述的处理器,还包括处理控制单元,所述处理控制单元从其中存储了多组的输入数据的数据储存单元读取输入数据并且将所读取的输入数据提供给乘法器。
5.根据权利要求4所述的处理器,其中:
存储在所述数据存储单元中的所述多组中的每组的输入数据是N×N矩阵被划分成的2×2子矩阵中的四条数据;以及
所述处理控制单元向乘法器顺序地提供与所述N×N矩阵中作为算术运算目标的行对应的第一N×N矩阵中的多个2×2子矩阵中的四条数据作为所述第一组的输入数据,并且所述处理控制单元向乘法器顺序地提供与作为算术运算目标的行对应的第二N×N矩阵中的多个2×2子矩阵中的四条数据作为所述第二组的输入数据。
6.一种由包括有多个乘法器、多个加法器、多个选择器的处理器进行的处理方法,所述处理方法包括:
由所述处理器的第一乘法器输出第一组的四条输入数据中的第一输入数据与第二组的四条输入数据中的第一输入数据的乘积;
由所述处理器的第二乘法器输出所述第一组的第二输入数据与所述第二组的第三输入数据的乘积;
由所述处理器的第三乘法器输出所述第一组的所述第二输入数据与所述第二组的第四输入数据的乘积;
由所述处理器的第四乘法器输出所述第一组的所述第一输入数据与所述第二组的第二输入数据的乘积;
由所述处理器的第五乘法器输出所述第一组的第三输入数据与所述第二组的所述第一输入数据的乘积;
由所述处理器的第六乘法器输出所述第一组的第四输入数据与所述第二组的所述第三输入数据的乘积;
由所述处理器的第七乘法器输出所述第一组的所述第四输入数据与所述第二组的所述第四输入数据的乘积;
由所述处理器的第八乘法器输出所述第一组的所述第三输入数据与所述第二组的所述第二输入数据的乘积;
由所述处理器的第一加法器输出所述第一乘法器的输出与所述第二乘法器的输出之和作为第一输出数据;
由所述处理器的第二加法器输出所述第三乘法器的输出与所述第四乘法器的输出之和作为第二输出数据;
由所述处理器的第三加法器输出所述第五乘法器的输出与所述第六乘法器的输出之和作为第三输出数据;
由所述处理器的第四加法器输出所述第七乘法器的输出与所述第八乘法器的输出之和作为第四输出数据;以及
由所述处理器的多个选择器中的每个所述选择器根据控制信号选择并且输出所述第二组的所述第二输入数据或所述第三输入数据,其中:
所述第二乘法器和所述第六乘法器在第二输入端处接收第一选择器的输出;以及
所述第四乘法器和所述第八乘法器在第二输入端处接收第二选择器的输出,所述第二选择器在所述第一选择器根据所述控制信号输出所述第二输入数据时输出所述第三输入数据以及在所述第一选择器根据所述控制信号输出所述第三输入数据时输出所述第二输入数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013-060018 | 2013-03-22 | ||
JP2013060018A JP6003744B2 (ja) | 2013-03-22 | 2013-03-22 | 演算処理装置及び演算処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104063357A CN104063357A (zh) | 2014-09-24 |
CN104063357B true CN104063357B (zh) | 2017-04-12 |
Family
ID=51551074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410041737.8A Active CN104063357B (zh) | 2013-03-22 | 2014-01-28 | 处理器以及处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9361065B2 (zh) |
JP (1) | JP6003744B2 (zh) |
CN (1) | CN104063357B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6003744B2 (ja) * | 2013-03-22 | 2016-10-05 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
CN107305538B (zh) * | 2016-04-22 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种子矩阵运算装置及方法 |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
JP6604393B2 (ja) | 2018-03-08 | 2019-11-13 | 日本電気株式会社 | ベクトルプロセッサ、演算実行方法、プログラム |
CN110415157B (zh) * | 2018-04-26 | 2024-01-30 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US10754649B2 (en) * | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5021987A (en) * | 1989-08-31 | 1991-06-04 | General Electric Company | Chain-serial matrix multipliers |
US5204830A (en) * | 1992-02-13 | 1993-04-20 | Industrial Technology Research Institute | Fast pipelined matrix multiplier |
JPH1063647A (ja) * | 1996-08-23 | 1998-03-06 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
JPH10312374A (ja) | 1997-05-13 | 1998-11-24 | Kofu Nippon Denki Kk | ベクトル演算処理装置 |
US6427159B1 (en) * | 1999-08-03 | 2002-07-30 | Koninklijke Philips Electronics N.V. | Arithmetic unit, digital signal processor, method of scheduling multiplication in an arithmetic unit, method of selectively delaying adding and method of selectively adding during a first or second clock cycle |
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
US20050240646A1 (en) * | 2004-04-23 | 2005-10-27 | The Research Foundation Of State University Of New York | Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits |
JP5748935B2 (ja) | 2004-11-03 | 2015-07-15 | インテル コーポレイション | Simd命令をサポートするプログラマブルデータ処理回路 |
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
JP2009245381A (ja) * | 2008-03-31 | 2009-10-22 | Fujitsu Ltd | 積和演算回路、その設計装置、プログラム |
US8239442B2 (en) * | 2008-08-08 | 2012-08-07 | Analog Devices, Inc. | Computing module for efficient FFT and FIR hardware accelerator |
US8984043B2 (en) * | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
JP5765280B2 (ja) * | 2012-03-27 | 2015-08-19 | カシオ計算機株式会社 | 行列計算装置およびプログラム |
US8959136B1 (en) * | 2012-05-08 | 2015-02-17 | Altera Corporation | Matrix operations in an integrated circuit device |
US9201848B2 (en) * | 2012-07-27 | 2015-12-01 | The United States Of America As Represented By The Secretary Of The Air Force | Floating point matrix multiplication co-processor |
JP6003744B2 (ja) * | 2013-03-22 | 2016-10-05 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
-
2013
- 2013-03-22 JP JP2013060018A patent/JP6003744B2/ja active Active
-
2014
- 2014-01-21 US US14/159,728 patent/US9361065B2/en active Active
- 2014-01-28 CN CN201410041737.8A patent/CN104063357B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
Non-Patent Citations (2)
Title |
---|
"一种用于通用处理器结构优化的矩阵乘法性能模型";朱海涛 等;《小型微型计算机系统》;20120531;第33卷(第5期);981-986 * |
"基于FPGA的实时双精度浮点矩阵乘法器设计";田翔 等;《浙江大学学报(工学版)》;20080930;第42卷(第9期);1611-1615 * |
Also Published As
Publication number | Publication date |
---|---|
US20140289300A1 (en) | 2014-09-25 |
US9361065B2 (en) | 2016-06-07 |
CN104063357A (zh) | 2014-09-24 |
JP6003744B2 (ja) | 2016-10-05 |
JP2014186461A (ja) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104063357B (zh) | 处理器以及处理方法 | |
JP7166389B2 (ja) | ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 | |
CN114238204B (zh) | 可重构并行处理 | |
US4241411A (en) | FFT Parallel processor having mutually connected, multiple identical cards | |
EP0329023A2 (en) | Apparatus for performing digital signal processing including fast fourier transform radix-4 butterfly computations | |
CN104572011A (zh) | 基于fpga的通用矩阵定点乘法器及其计算方法 | |
JPS6044696B2 (ja) | 浮動小数点デ−タ処理装置 | |
CN111353126A (zh) | 分块矩阵乘法运算系统 | |
KR100390326B1 (ko) | 고속푸리에변환처리장치,고속푸리에변환처리시스템및고속푸리에변환처리방법 | |
CN105224505B (zh) | 基于矩阵转置操作的fft加速器装置 | |
EP0074401A4 (en) | METHOD AND DEVICE FOR SEQUENCING THE ADDRESSES OF A ROW OF FOURIER FAST TRANSFORMATIONS. | |
CN109426483A (zh) | 并发多位加法器 | |
WO2020230374A1 (ja) | 演算装置および演算システム | |
CN114781632B (zh) | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 | |
EP3951637A1 (en) | Convolutional computation device | |
JPS6125188B2 (zh) | ||
WO2018027706A1 (zh) | Fft处理器及运算方法 | |
CN108664447A (zh) | 一种矩阵与矢量的乘法运算方法及装置 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
US6598061B1 (en) | System and method for performing modular multiplication | |
JP5146449B2 (ja) | アレイプロセッサ型データ処理装置 | |
US20230289182A1 (en) | Hardware accelerator | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN110750249B (zh) | 一种快速傅里叶变换代码的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |