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的矩阵乘法运算的时间。为达到上述目的,本申请实施例提供如下技术方案:第一方面,提供了一种运算加速器,包括:第一存储器, ...
【技术保护点】
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个运算组中的每个运算单元对其接收的两路数据 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。