运算加速器制造技术

技术编号:20118014 阅读:49 留言:0更新日期:2019-01-16 12:06
本发明专利技术公开了一种运算加速器,涉及数据计算技术领域,旨在降低处理两个N*N的矩阵乘法运算的时间。该运算加速器包括:第一存储器、第二存储器、运算电路和控制器,其中,运算电路与第一存储器和第二存储器可以通过总线进行数据通信,运算电路用于提取第一存储器和第二存储器中的矩阵数据并进行乘法运算,控制器用于依据预设的程序或者指令控制运算电路完成乘法运算。该运算加速器可以用于对两个矩阵进行相乘运算。

Operational Accelerator

The invention discloses an arithmetic accelerator, which relates to the technical field of data computing, aiming at reducing the time of processing two N*N matrix multiplication operations. The arithmetic accelerator includes a first memory, a second memory, an arithmetic circuit and a controller, in which the arithmetic circuit can communicate with the first memory and the second memory through a bus, and the arithmetic circuit is used to extract matrix data from the first memory and the second memory and perform multiplication operations. The controller is used to control the arithmetic electricity according to preset programs or instructions. The path completes the multiplication operation. The accelerator can be used to multiply two matrices.

【技术实现步骤摘要】
运算加速器
本申请涉及数据计算
,尤其涉及一种运算加速器。
技术介绍
目前,要计算两个矩阵A和B的乘积,可以通过以下两种方式中的任意一种方式进行计算:方式一、通过向量处理器进行计算。假设C=A*B,向量处理器可同时计算的元素个数为M个,参见图1,向量处理器会将矩阵A的第i行向量(包括元素Ai1、Ai2、…、Ai(M-1)、AiM)加载到源寄存器Reg0中,再将矩阵B的第j列向量(包括元素Bj1、Bj2、…、Bj(M-1)、BjM)加载到寄存器Reg1中,可以实现Reg0与Reg1各对应元素之间的乘法,最后通过加法树来完成累加操作,计算出矩阵C的第i行第j列的数据Cij,进行多次计算则可以得到矩阵C。方式二、为了进一步提高计算速度,可以通过二维的计算阵列来完成矩阵的乘法运算。例如,二维的计算阵列可以为N*N的脉动阵列,通过这样的一个脉动阵列,在每一个时钟周期可以完成一个向量与一个矩阵相乘的运算。在方式一中,完成两个N*N的矩阵乘法运算,需要N^3次乘法操作,由于向量处理器每个时钟周期可以计算M个元素之间的乘法,因此完成一次乘法运算所需时长为N^3/M个时钟周期。在方式二中,完成两个N*N的矩阵乘法运算,需要N^3次乘法操作,由于脉动阵列有N^2个运算单元,那么完成一次矩阵运算所需时长为N^3/N^2=N个时钟周期。方式一和方式二完成N*N的矩阵乘法运算耗费的时间都很长。
技术实现思路
本申请实施例提供了一种运算加速器,旨在降低处理两个N*N的矩阵乘法运算的时间。为达到上述目的,本申请实施例提供如下技术方案:第一方面,提供了一种运算加速器,包括:第一存储器,用于存储第一矩阵,第一矩阵为M*N矩阵;第二存储器,用于存储第二矩阵,第二矩阵为N*K矩阵;与第一存储器和第二存储器连接的运算电路,运算电路包括矩阵乘法电路和加法电路;矩阵乘法电路包括M个由运算块组成的运算组,每个运算组中包括K个运算块,每个运算块包括N个运算单元,运算单元设有两路输入,分别用于接收第一存储器和第二存储器发送的数据,并将两路数据相乘;加法电路用于对属于同一运算块的运算单元的计算结果进行累加得到每个运算块的计算结果;与运算电路连接的控制器,控制器用于执行以下动作:将第二矩阵的K个列向量分别写入每个运算组的K个运算块中,其中,第二矩阵的第g列向量中的第j个数据写入K个运算块中的第g个运算块中的第j个运算单元;将第一矩阵的M个行向量分别发送给M个运算组,其中,第一矩阵的第i个行向量被发送至M个运算组中的第i个运算组、且第i个运算组中的每个运算块中的第j个运算单元接收第i个行向量中的第j个数据;使得M个运算组中的每个运算单元对其接收的两路数据进行乘法运算,并使得加法电路将每个运算块中的运算单元的计算结果进行累加得到第三矩阵,第三矩阵为第一矩阵和第二矩阵的乘积,第三矩阵中的第i行第g列元素为第i个运算组中的第g个运算块的计算结果,M、N和K均为大于0的整数,i为大于0小于M+1的整数,g为大于0小于K+1的整数,j为大于0小于N+1的整数。第一方面提供的方法,由于M个运算组中包括M*N*K个运算单元,因此,在一个时钟周期内,运算加速器可以进行M*N*K次乘法运算,则运算加速器可以计算一个M*N矩阵和N*K矩阵的乘积,与现有技术相比,可以大大的降低矩阵乘法运算所需的时间。在一种可能的设计中,加法电路包括M*K个加法树,一个加法树对应一个运算块,一个加法树与对应的运算块中的N个运算单元连接,一个加法树用于对连接的N个运算单元的计算结果进行累加。在该种可能的设计中,具体提供了一种加法电路的组成结构。在一种可能的设计中,运算单元包括:存储单元,用于存储写入存储单元的数据;与存储单元连接的乘法电路,用于计算接收到的数据和存储单元中存储的数据的乘积。在该种可能的设计中,具体提供了一种运算单元的组成结构。在一种可能的设计中,运算单元包括:多个存储单元、乘法电路、与多个存储单元连接的第一选择电路和与多个存储单元和乘法电路连接的第二选择电路;多个存储单元,用于存储数据;第一选择电路,用于在乘法电路进行乘法运算之前在多个存储单元中选择存储乘法电路进行乘法运算时使用的数据的存储单元;第二选择电路,用于在乘法电路进行乘法运算时选择存储乘法电路进行乘法运算时使用的数据的存储单元;乘法电路,用于计算接收到的数据和第二选择电路选择出的存储单元中存储的数据的乘积。在该种可能的设计中,存储单元可以被分为两个block(块),当运算单元中包括多个存储单元时,若运算单元根据一个存储单元中的一个block中的数据进行乘法运算时,控制器还可以在多个存储单元中的其他存储单元或在参与乘法运算的存储单元中的另一个block中写入数据,从而提高运算单元的工作效率。在一种可能的设计中,第一存储器和运算电路通过第一总线连接,第一总线的位宽为Wi*N*M;第二存储器和运算电路通过第二总线连接,第二总线的位宽为Wi*N,Wi为运算单元允许的输入数据的最大位宽。在一种可能的设计中,运算加速器还包括与第一存储器、第二存储器和控制器连接的存储单元访问控制器;存储单元访问控制器用于在控制器的控制下获取第一矩阵和第二矩阵,并将第一矩阵存储在第一存储器,将第二矩阵存储在第二存储器。在一种可能的设计中,运算加速器还包括:第三存储器,用于存储第一矩阵的源数据;与第一存储器、第二存储器、第三存储器和控制器连接的存储单元访问控制器,存储单元访问控制器用于在控制器的控制下获取第一矩阵的源数据和第二矩阵,并将第一矩阵的源数据存储在第三存储器,将第二矩阵存储在第二存储器;与第一存储器、第三存储器和控制器连接的向量计算单元,向量计算单元用于在控制器的控制下将第一矩阵的源数据转换为第一矩阵后存储在第一存储器。在该种可能的设计中,运算加速器还具备通过第一矩阵的源数据获取第一矩阵的能力。在一种可能的设计中,第三存储器与运算电路单元连接,第三存储器还用于存储第三矩阵。在一种可能的设计中,运算加速器还包括:与运算电路、向量计算单元和控制器连接的累加器;累加器用于在控制器的控制下将第三矩阵和第四矩阵中的对应位置的元素进行累加得到第五矩阵;向量计算单元还用于在控制器的控制下将第五矩阵存储在第三存储器;其中,第三矩阵为第一矩阵和第二矩阵的乘积,第一矩阵包括第一待计算矩阵的第一部分,第一待计算矩阵的第一部分为第一待计算矩阵的第1至第N列元素,第二矩阵为第二待计算矩阵的第一部分,第二待计算矩阵的第一部分为第二待计算矩阵的第1至第N行元素,第一待计算矩阵包括M行元素,第二待计算矩阵包括K列元素,第四矩阵为第一待计算矩阵的第二部分和第二待计算矩阵的第二部分的乘积,第一待计算矩阵的第二部分为第一待计算矩阵中的除第一部分之外的其他部分,第二待计算矩阵的第二部分为第二待计算矩阵中的除第一部分之外的其他部分。在一种可能的设计中,运算加速器还包括:与控制器连接的取指存储器,用于存储控制器使用的指令;与取指存储器、存储单元访问控制器和外部存储器连接的总线接口单元,用于取指存储器从外部存储器获取指令,还用于存储单元访问控制器从外部存储器获取第一矩阵的源数据、第一矩阵和第二矩阵中的至少一个。附图说明图1为现有技术中的计算两个矩阵乘积的过程示意图;图2为现本文档来自技高网...

【技术保护点】
1.一种运算加速器,其特征在于,包括:第一存储器,用于存储第一矩阵,所述第一矩阵为M*N矩阵;第二存储器,用于存储第二矩阵,所述第二矩阵为N*K矩阵;与所述第一存储器和所述第二存储器连接的运算电路,所述运算电路包括矩阵乘法电路和加法电路;所述矩阵乘法电路包括M个由运算块组成的运算组,每个运算组中包括K个运算块,每个运算块包括N个运算单元,所述运算单元设有两路输入,分别用于接收所述第一存储器和第二存储器发送的数据,并将所述两路数据相乘;所述加法电路用于对属于同一运算块的运算单元的计算结果进行累加得到每个运算块的计算结果;与所述运算电路连接的控制器,所述控制器用于执行以下动作:将所述第二矩阵的K个列向量分别写入每个运算组的K个运算块中,其中,所述第二矩阵的第g列向量中的第j个数据写入所述K个运算块中的第g个运算块中的第j个运算单元;将所述第一矩阵的M个行向量分别发送给所述M个运算组,其中,所述第一矩阵的第i个行向量被发送至所述M个运算组中的第i个运算组、且所述第i个运算组中的每个运算块中的第j个运算单元接收所述第i个行向量中的第j个数据;使得所述M个运算组中的每个运算单元对其接收的两路数据进行乘法运算,并使得所述加法电路将每个运算块中的运算单元的计算结果进行累加得到第三矩阵,所述第三矩阵为所述第一矩阵和所述第二矩阵的乘积,所述第三矩阵中的第i行第g列元素为所述第i个运算组中的第g个运算块的计算结果,M、N和K均为大于0的整数,i为大于0小于M+1的整数,g为大于0小于K+1的整数,j为大于0小于N+1的整数。...

【技术特征摘要】
1.一种运算加速器,其特征在于,包括:第一存储器,用于存储第一矩阵,所述第一矩阵为M*N矩阵;第二存储器,用于存储第二矩阵,所述第二矩阵为N*K矩阵;与所述第一存储器和所述第二存储器连接的运算电路,所述运算电路包括矩阵乘法电路和加法电路;所述矩阵乘法电路包括M个由运算块组成的运算组,每个运算组中包括K个运算块,每个运算块包括N个运算单元,所述运算单元设有两路输入,分别用于接收所述第一存储器和第二存储器发送的数据,并将所述两路数据相乘;所述加法电路用于对属于同一运算块的运算单元的计算结果进行累加得到每个运算块的计算结果;与所述运算电路连接的控制器,所述控制器用于执行以下动作:将所述第二矩阵的K个列向量分别写入每个运算组的K个运算块中,其中,所述第二矩阵的第g列向量中的第j个数据写入所述K个运算块中的第g个运算块中的第j个运算单元;将所述第一矩阵的M个行向量分别发送给所述M个运算组,其中,所述第一矩阵的第i个行向量被发送至所述M个运算组中的第i个运算组、且所述第i个运算组中的每个运算块中的第j个运算单元接收所述第i个行向量中的第j个数据;使得所述M个运算组中的每个运算单元对其接收的两路数据进行乘法运算,并使得所述加法电路将每个运算块中的运算单元的计算结果进行累加得到第三矩阵,所述第三矩阵为所述第一矩阵和所述第二矩阵的乘积,所述第三矩阵中的第i行第g列元素为所述第i个运算组中的第g个运算块的计算结果,M、N和K均为大于0的整数,i为大于0小于M+1的整数,g为大于0小于K+1的整数,j为大于0小于N+1的整数。2.根据权利要求1所述的运算加速器,其特征在于,所述加法电路包括M*K个加法树,一个加法树对应一个运算块,一个加法树与对应的运算块中的N个运算单元连接,一个加法树用于对连接的N个运算单元的计算结果进行累加运算电路。3.根据权利要求1或2所述的运算加速器,其特征在于,所述运算单元包括:存储单元,用于存储写入所述存储单元的数据;与所述存储单元连接的乘法电路,用于计算接收到的数据和所述存储单元中存储的数据的乘积。4.根据权利要求1或2所述的运算加速器,其特征在于,所述运算单元包括:多个存储单元、乘法电路、与所述多个存储单元连接的第一选择电路和与所述多个存储单元和所述乘法电路连接的第二选择电路;所述多个存储单元,用于存储数据;所述第一选择电路,用于在所述乘法电路进行乘法运算之前在所述多个存储单元中选择存储所述乘法电路进行乘法运算时使用的数据的存储单元;所述第二选择电路,用于在所述乘法电路进行乘法运算时选择存储所述乘法电路进行乘法运算时使用的数据的存储单元;所述乘法电路,用于计算接收到的数据和所述第二选择电路选择出的存储单元中存储的数据的乘积。5.根据权利要求1-4任一项所述的运算加速器,其特征在于,所述第一存储器和所述运算电路通过第一总线...

【专利技术属性】
技术研发人员:廖恒刘虎汪昊
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1