[发明专利]运算加速器有效
申请号: | 201710553286.X | 申请日: | 2017-07-07 |
公开(公告)号: | CN109213962B | 公开(公告)日: | 2020-10-09 |
发明(设计)人: | 廖恒;刘虎;汪昊 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/16 | 分类号: | G06F17/16;G06F7/523 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 运算 加速器 | ||
本发明公开了一种运算加速器,涉及数据计算技术领域,旨在降低处理两个N*N的矩阵乘法运算的时间。该运算加速器包括:第一存储器、第二存储器、运算电路和控制器,其中,运算电路与第一存储器和第二存储器可以通过总线进行数据通信,运算电路用于提取第一存储器和第二存储器中的矩阵数据并进行乘法运算,控制器用于依据预设的程序或者指令控制运算电路完成乘法运算。该运算加速器可以用于对两个矩阵进行相乘运算。
技术领域
本申请涉及数据计算技术领域,尤其涉及一种运算加速器。
背景技术
目前,要计算两个矩阵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的整数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710553286.X/2.html,转载请声明来源钻瓜专利网。