首页 / 专利库 / 微电子学 / 四方扁平无引脚封装 / 神经网络处理器板卡及相关产品

神经网络处理器板卡及相关产品

阅读:959发布:2020-05-11

专利汇可以提供神经网络处理器板卡及相关产品专利检索,专利查询,专利分析的服务。并且本披露提供一种神经网络处理器板卡及相关产品,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一 基板 ;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接。本披露提供的技术方案具有计算量小,功耗低的优点。,下面是神经网络处理器板卡及相关产品专利的具体信息内容。

1.一种神经网络处理器板卡,其特征在于,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一基板;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接;
所述神经网络芯片包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;所述主处理电路通过所述第二电气及非电气连接装置与所述第二基板连接;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及与所述基础处理电路传输数据;
所述多个基础处理电路,用于依据所述主处理电路传输的数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。
2.根据权利要求1所述的神经网络处理器板卡,其特征在于,所述神经网络芯片封装结构还包括:散热装置。
3.根据权利要求1所述的神经网络处理器板卡,其特征在于,所述神经网络芯片封装结构的封装结构为下述封装的任意一种:
倒装芯片球栅阵列封装、薄型四方扁平式封装、带散热器的四方扁平封装、无引脚四方扁平封装、小间距四方扁平式封装。
4.根据权利要求1所述的神经网络处理器板卡,其特征在于,所述神经网络芯片还包括:分支处理电路,所述分支处理电路设置在主处理电路与至少一个基础处理电路之间;
所述分支处理电路,用于在主处理电路与至少一个基础处理电路之间转发数据。
5.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述主处理电路,用于获取待计算的数据以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述分发数据块和所述广播数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块、处理后的广播数据块以及该广播数据块关联的标识数据块;将所述处理后分发数据块和该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块以及所述广播数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据块对所述基本数据块以及所述广播数据块进行处理,对处理后的基本数据块以及处理后的广播数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令所对应的指令结果。
6.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述主处理电路,用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述分发数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,或者启动所述第一映射电路根据预存所述分发数据块关联的标识数据块对所述分发数据块进行处理得到处理后的分发数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;将所述广播数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块对所述广播数据块进行处理,对处理后的广播数据块以及所述基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
7.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述主处理电路,用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述广播数据块进行处理得到处理后的广播数据块以及该广播数据块关联的标识数据块,或者启动所述第一映射电路依据预存的所述广播数据块关联的标识数据块对所述广播数据块进行处理得到处理后的广播数据块;将所述分发数据块进行拆分得到多个基本数据块;将所述多个基本数据分发至与其连接的基础处理电路;将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,用于启动所述第二映射电路依据所述广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述处理后的广播数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令所对应的指令结果。
8.根据权利要求5-7中任一项所述的神经网络处理器板卡,其特征在于,所述主处理电路,具体用于将所述处理后的广播数据块以及该广播数据块关联的标识数据块进行拆分得到多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述处理后的广播数据块;
所述基础处理电路,具体用于启动所述第二映射电路依据所述部分广播数据块关联的标识数据块以及所述基本数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据块对所述部分广播数据块以及所述基本数据块进行处理得到处理后的广播数据块以及处理后的基本数据块;对所述处理后的广播数据块以及处理后的基本数据块执行内积运算;
或者,所述基础处理电路,具体用于启动所述第二映射电路依据所述部分广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块,对所述处理后的基本数据以及所述部分广播数据块执行内积运算。
9.根据权利要求5-7中任一项所述的神经网络处理器板卡,其特征在于,所述基础处理电路,具体用于将该部分广播数据块与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路;或者,
所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与n个该基本数据块的内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
10.根据权利要求5-7中任一项所述的神经网络处理器板卡,其特征在于,所述基础处理电路,具体用于对该基本数据块与该广播数据块执行内积处理得到内积结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述待计算的数据块以及运算指令所对应的指令结果。
11.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-10任意一项所述的神经网络处理器板卡。
12.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求11所述的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。

说明书全文

神经网络处理器板卡及相关产品

技术领域

[0001] 本披露涉及神经网络领域,尤其涉及一种神经网络处理器板卡及相关产品。

背景技术

[0002] 人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。
发明内容
[0003] 本披露实施例提供了一种神经网络处理器板卡及相关产品,可提升计算装置的处理速度,提高效率。
[0004] 第一方面,提供一种神经网络处理器板卡,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一基板;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接;
[0005] 所述神经网络芯片包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;所述主处理电路通过所述第二电气及非电气连接装置与所述第二基板连接;
[0006] 所述主处理电路,用于执行神经网络运算中的各个连续的运算以及与所述基础处理电路传输数据;
[0007] 所述多个基础处理电路,用于依据所述主处理电路传输的数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。
[0008] 第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的神经网络处理器板卡。
[0009] 第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
[0010] 所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
[0011] 可以看出,通过本披露实施例,提供映射电路将数据压缩处理后再进行运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。附图说明
[0012] 图1a是一种神经网络芯片结构示意图。
[0013] 图1b是另一种神经网络芯片结构示意图。
[0014] 图1c是一种基础处理电路的结构示意图。
[0015] 图2为一种矩阵乘以向量流程示意图。
[0016] 图2a是矩阵乘以向量的示意图。
[0017] 图2b为一种矩阵乘以矩阵流程示意图。
[0018] 图2c是矩阵Ai乘以向量B的示意图。
[0019] 图2d是矩阵A乘以矩阵B的示意图。
[0020] 图2e是矩阵Ai乘以矩阵B的示意图。
[0021] 图3a为神经网络训练示意图。
[0022] 图3b为卷积运算示意图。
[0023] 图4a为神经网络正向运算示意图。
[0024] 图4b为神经网络反向运算示意图。
[0025] 图4c为本披露还揭露了一个组合处理装置结构示意图。
[0026] 图4d为本披露还揭露了一个组合处理装置另一种结构示意图。
[0027] 图5a为神经网络另一种正向运算示意图。
[0028] 图5b为神经网络另一种反向运算示意图。
[0029] 图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图;
[0030] 图5d为本披露实施例流提供的一种神经网络芯片封装结构的结构示意图;
[0031] 图5e为本披露实施例流提供的一种神经网络芯片的结构示意图;
[0032] 图6为本披露实施例流提供的一种神经网络芯片封装结构的示意图;
[0033] 图6a为本披露实施例流提供的另一种神经网络芯片封装结构的示意图。
[0034] 图7a-图7b为本申请实施例提供的两种映射电路的结构示意图。

具体实施方式

[0035] 为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
[0036] 在第一方面提供的板卡中,所述神经网络芯片封装结构还包括:散热装置。
[0037] 在第一方面提供的板卡中,所述神经网络芯片封装结构的封装结构为下述封装的任意一种:
[0038] 倒装芯片球栅阵列封装、薄型四方扁平式封装、带散热器的四方扁平封装、无引脚四方扁平封装、小间距四方扁平式封装。
[0039] 在第一方面提供的板卡中,所述神经网络芯片还包括:分支处理电路,所述分支处理电路设置在主处理电路与至少一个基础处理电路之间;所述分支处理电路,用于在主处理电路与至少一个基础处理电路之间转发数据。
[0040] 在第一方面提供的板卡中,所述主处理电路用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;将所述分发数据块和预存的所述分发数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;将所述广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路。其中,所述标识数据块具体可用直接索引或者步长索引的方式来表示,可选的还可用列表的列表(List of Lists,LIL)、坐标列表(Coordinate list,COO)、压缩稀疏行(Compressed Sparse Row,CSR)、压缩稀疏列(Compressed Sparse Column,CSC)、(ELL Pack,ELL)以及混合(Hybird,HYB)等方式表示,本申请不做限定。
[0041] 以所述标识数据块用直接索引的方式表示为例,所述标识数据块具体可为是由0和1构成的数据块,其中,0表示数据块中包含的数据(如权值或输入神经元)的绝对值小于或等于第一阈值,1表示数据块中包含的数据(如权值或输入神经元)的绝对值大于第一阈值,第一阈值为用户侧或装置侧自定义随机设置的,例如0.05、0等等。
[0042] 为节省数据传输量、提高数据传输效率,在所述主处理电路向所述基础处理电路发送数据的过程中,具体可将所述多个基本数据块中的目标数据以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;可选,还可将所述处理后的广播数据块中的目标数据以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路。其中,所述目标数据是指数据块中绝对值大于第一阈值的数据,或者是指数据块(这里具体可为处理后的分发数据块或处理后的广播数据块)中的非0数据。
[0043] 相应地,所述基础处理电路用于启动所述第二映射电路根据所述广播数据块关联的标识数据块和所述基本数据块关联的标识数据获得连接标识数据块;根据所述连接标识数据块对所述广播数据块和所述基本数据块进行处理得到处理后的广播数据块和基本数据块;对所述处理后的广播数据块和基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
[0044] 所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
[0045] 例如,分发数据块为M1行N1列的矩阵,基本数据块为M2行N2列的矩阵,其中M1>M2,N1>N2。相应地,该分发数据块关联的标识数据块同样也为M1行N1列的矩阵,该基本数据块关联的标识数据块同样为M2行N2列的矩阵。以基本数据块为2*2的矩阵为例,设为 第一阈值为0.05,则该基本数据块关联的标识数据块为 关于第一映射电路和第二映射电路对数据块的处理将在后文进行具体阐述。
[0046] 在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述分发数据块和所述广播数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,处理后的广播数据块以及该广播数据块关联的标识数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
[0047] 所述基础处理电路,用于启动所述第二映射电路根据所述广播数据块关联的标识数据块和所述基本数据块关联的标识数据获得连接标识数据块;根据所述连接标识数据块对所述广播数据块和所述基本数据块进行处理得到处理后的广播数据块和基本数据块;对所述处理后的广播数据块和基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
[0048] 所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
[0049] 在可选实施例中,所述主处理电路,还具体用于将所述广播数据块或处理后的广播数据块以及该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。
[0050] 相应地,所述基础处理电路,具体用于启动所述第二映射电路根据所述部分广播数据块关联的标识数据块以及所述基本数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据对所述部分广播数据块以及所述基本数据块进行处理得到处理后的部分广播数据块以及处理后的基本数据块;对所述处理后的部分广播数据块以及所述处理后的基本数据块执行内积运算。
[0051] 其中,该连接标识数据块是通过对所述基本数据块关联的标识数据块和所述部分广播数据块关联的标识数据块进行逐元素与操作而获得的数据块。可选的,该连接标识数据块用于表示两个数据块(具体为基本数据块以及广播数据块)中数据均大于绝对值的数据。具体在后文进行详述。
[0052] 例如,分发数据块关联的标识数据块为2*3的矩阵 部分广播数据块关联的标识数据块为2*2的矩阵 则对应获得的连接标识数据块为
[0053] 在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述分发数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述分发数据块关联的标识数据块对所述分发数据块进行处理得到处理后的分发数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块广播至与其连接的基础处理电路;
[0054] 所述基础处理电路,用于启动所述第二映射电路根据所述基本数据块关联的标识数据块对所述广播数据块进行处理,得到处理后的广播数据块;对所述处理后的广播数据块和所述处理后的基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
[0055] 所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
[0056] 在可选实施例中,所述主处理电路,还具体用于将所述广播数据块进行拆分处理得到多个部分广播数据块;将所述多个部分广播数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。
[0057] 相应地,所述基础处理电路具体用于根据所述基本数据块关联的标识数据块对所述部分广播数据块进行处理得到处理后的部分广播数据块;对所述基本数据块以及所述处理后的部分广播数据块执行内积运算。
[0058] 在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据所述运算指令将所述待计算的数据块划分为分发数据块和广播数据块;启动所述第一映射电路对所述广播数据块进行处理,得到处理后的广播数据块以及该广播数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述广播数据块关联的标识数据块对所述广播数据块进行处理得到处理后的广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块;将所述多个基本数据块分发至与其连接的基础处理电路,将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;
[0059] 所述基础处理电路,用于启动所述第二映射电路根据所述广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的广播数据块和所述处理后的基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
[0060] 所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
[0061] 在可选实施例中,所述主处理电路,还具体用于将所述处理后的广播数据块和该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。
[0062] 相应地,所述基础处理电路具体用于根据所述部分广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分广播数据块执行内积运算。
[0063] 在第一方面提供的装置中,所述主处理电路,具体用于将该广播数据块(具体可为所述广播数据块或者处理后的广播数据块)通过一次广播发送至与其连接的所述基础处理电路。
[0064] 在第一方面提供的装置中,所述基础处理电路,具体用于将该基本数据块(同理可为所述基本数据块或处理后的基本数据块)与该广播数据块执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路。
[0065] 在第一方面提供的装置中,所述主处理电路,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述待计算的数据块以及运算指令的指令结果。
[0066] 在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述广播数据块。
[0067] 在第一方面提供的装置中,所述基础处理电路,具体用于将该部分广播数据块(具体可为部分广播数据块或者处理后的部分广播数据块)与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。
[0068] 在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
[0069] 在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
[0070] 所述基础处理电路包括:基本寄存器或基本片上缓存电路。
[0071] 在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、第一映射电路或数据重排电路中的一种或任意组合。
[0072] 在第一方面提供的装置中,所述分支处理电路包含多个分支处理电路,所述主处理电路与所述多个分支处理电路分别连接,每个分支处理电路与至少一个基础处理电路连接。
[0073] 在第一方面提供的装置中,所述基础处理电路,还具体用于将该广播数据块和基本数据块转发给其他基础处理电路以先进行数据处理再执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;
[0074] 所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
[0075] 在第一方面提供的装置中,所述数据块可用张量表示,其具体可为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
[0076] 在第一方面提供的装置中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;
[0077] 如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。
[0078] 在第六方面提供的方法中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
[0079] 参阅图1a,图1a为一种集成电路芯片装置的结构示意图,如图1a所示,该芯片装置包括:主处理电路、基本处理电路和分支处理电路(可选的)。其中,
[0080] 主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路;
[0081] 可选的,主处理电路可以包括:第一映射电路,第一映射电路可以用于对接收或发送的数据进行处理,以得到处理后的数据以及该数据关联的标识mask数据,该标识mask数据用于指示该数据的绝对值是否大于预设阈值,可选的,该mask数据可为0或1,其中0表示数据的绝对值小于或等于预设阈值;反之,1表示数据的绝对值大于预设阈值。该预设阈值为用户侧或终端设备侧自定义设置的,例如0.1或0.05等等。在实际应用中,通过第一映射电路可将数据为0或者不大于预设阈值(如0.1)的数据进行剔除,或将这些数据置为0。其优点是,减少主处理电路向基础处理电路传输的数据量、减少基础处理电路中数据运算的计算量,提升数据处理效率。本发明并不限制上述第一映射电路的具体形式。关于所述第一映射电路的具体实现将在下文进行阐述。
[0082] 例如,主处理电路的输入数据为矩阵数据块 经过第一映射电路处理后可获得处理后的矩阵数据块为 该矩阵数据块关联的标识数据
块为 关于第一映射电路的具体处理将在后文进行详述。
[0083] 相应地,在主处理电路向基础处理电路分发数据时,可仅发送1和0.5这两个数据,并非发送处理后的矩阵数据块,8个数据;同时还需将该矩阵数据块关联的标识数据块一起发送给基础处理电路,以便基础处理电路根据接收的标识数据块和接收的两个数据(1和0.5),对应获知这两个数据位于原矩阵数据块的位置。即是,所述基础处理电路可根据接收的标识数据块以及接收的数据,对应还原出主处理电路中处理后的矩阵数据块。
[0084] 主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
[0085] 在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
[0086] 具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据。
[0087] 可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
[0088] 每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
[0089] 该芯片装置可选的还可以包括一个或多个分支处理电路,如具有分支处理电路时,其中主处理电路与分支处理电路连接,该分支处理电路与基本处理电路连接,该基本处理电路的内积运算器电路用于执行数据块之间的内积运算,该主处理电路的控制电路控制数据接收电路或数据发送电路收发外部数据,以及通过控制电路控制数据发送电路将外部数据分发至分支处理电路,该分支处理电路用于收发主处理电路或基本处理电路的数据。如图1a所示的结构适合复杂数据的计算,因为对于主处理电路来说,其连接的单元的数量有限,所以需要在主处理电路与基本处理电路之间添加分支处理电路以实现更多的基本处理电路的接入,从而实现对复杂数据块的计算。分支处理电路和基础处理电路的连接结构可以是任意的,不局限在图1a的H型结构。可选的,主处理电路到基础处理电路是广播或分发的结构,基础处理电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下,对于分发或广播结构,此时的基础处理电路的数量大于主处理电路,即1个主处理电路对应多个基础处理电路,即从主处理电路到多个基础处理电路为广播或分发的结构,反之,从多个基础处理电路到主处理电路可以为收集结构。
[0090] 基础处理电路,接收主处理电路分发或者广播的数据保存到基础处理电路的片上缓存中,可以进行运算产生结果,可以向主处理电路发送数据。可选的,基础处理电路还可先对接收的数据进行处理,将处理后的数据保存至片上缓存中,还可利用处理后的数据进行运算产生结果,可选的还可将处理后的数据发送给其他基础处理电路或主处理电路等,本申请不做限定。
[0091] 可选的,每个基础处理电路均可以包括第二映射电路,也可以在部分基础处理电路中配置第二映射电路;第二映射电路可以用于对接收或发送的数据进行处理(即压缩处理)。本发明并不限制上述第二映射电路的具体形式。关于第二映射电路的具体实施将在下文进行详述。
[0092] 可选的,该基础处理电路的向量运算器电路可以对两个向量(两个向量中的任一个或两个均可为处理后的向量)执行的向量运算,当然在实际应用中,基础处理电路的内积运算器电路可以对两个向量执行内积运算,累加器电路也可以对内积运算的结果进行累加。
[0093] 在一种可选方案中,两个向量可以存放在片上缓存和/或寄存器中,基础处理电路可以根据实际计算的需要提取两个向量执行运算。该运算包括但不限于:内积运算、乘法运算、加法运算或其他的运算。
[0094] 在一种可选方案中,内积运算的结果可以累加到片上缓存和/或寄存器上;其可选方案的优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
[0095] 在一种可选方案中,内积运算的结果不进行累加,直接作为结果传输;此技术方案的优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
[0096] 在一种可选方案中,每个基础处理电路可以执行多组两个向量的内积运算,也可以对多组内积运算的结果分别进行累加;
[0097] 在一种可选方案中,多组的两个向量数据可以存放在片上缓存和/或寄存器中;
[0098] 在一种可选方案中,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
[0099] 在一种可选方案中,各组内积运算的结果可以不进行累加,直接作为结果传输;
[0100] 在一种可选方案中,每个基础处理电路可以执行同一个向量与多个向量分别进行内积运算的操作(“一对多”内积,即多组内积里每组的两个向量中有一个向量是共享的),并将每个向量对应的内积结果分别进行累加。此技术方案可以实现同一套权值对不同的输入数据进行多次计算,增加了数据复用,减少基础处理电路内部数据的数据传输量,提高计算效率,降低功耗。
[0101] 具体地,计算内积使用的数据中,各组共享的向量和每组的另一个向量(即每组之间不同的那个向量)的数据来源可以不同:
[0102] 在一种可选方案中,在计算内积时,各组共享的向量来自主处理电路或者分支处理电路的广播或者分发;
[0103] 在一种可选方案中,在计算内积时,各组共享的向量来自片上缓存;
[0104] 在一种可选方案中,在计算内积时,各组共享的向量来自寄存器;
[0105] 在一种可选方案中,在计算内积时,每组的另一个非共享向量来自主处理电路或者分支处理电路的广播或者分发;
[0106] 在一种可选方案中,在计算内积时,每组的另一个非共享向量来自从片上缓存;
[0107] 在一种可选方案中,在计算内积时,每组的另一个非共享向量来自寄存器;
[0108] 在一种可选方案中,在进行多组的内积运算时,每组共享的向量在基础处理电路的片上缓存和/寄存器中保留任意份数;
[0109] 在一种可选方案中,共享向量可以对应每组内积各保留一份;
[0110] 在一种可选方案中,共享向量可以只保留一份;
[0111] 具体地,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
[0112] 具体地,各组内积运算的结果可以不进行累加,直接作为结果传输;
[0113] 在一种可选方案中,基础处理电路中涉及的向量或矩阵可为经过第二映射电路处理后的向量或矩阵,具体将在后文阐述。
[0114] 参阅图1a所示的结构,其包含一主处理电路(可以执行向量操作),多基础处理电路(可以执行内积操作)。这样组合的好处是:装置不仅能使用基础处理电路执行矩阵和向量乘法运算,也能使用主处理电路执行其他任意的向量运算,使装置在有限的硬件电路的配置下,能够更快的完成更多的运算,减少了与装置外部进行数据传输的次数,提高了计算效率,降低了功耗。另外,本芯片在主处理电路中可设置第一映射电路,以执行神经网络中数据的处理,如将小于或等于预设阈值的第一输入数据剔除,同时还可得到该第一输入数据对应关联的标识mask数据,该mask数据用于表示第一输入数据的绝对值是否大于预设阈值。具体可参见前述实施例所述,这里不再赘述。这样设计的优点,可减少向基础处理电路传输的数据量,减少基础处理电路数据的计算量,提高数据处理速率、降低功耗。
[0115] 在基础处理电路中可设置第二映射电路,以执行神经网络中数据的处理,例如根据第一输入数据关联的mask数据对第二输入数据进行处理或者根据第一输入数据关联的mask数据和第二输入数据关联的mask数据选取绝对值大于预设阈值的第一输入数据和第二输入数据执行相应的运算操作的等等。关于第一映射电路和第二映射电路对数据的具体处理可参见后文详述。
[0116] 可选的,所述第一映射电路和所述第二映射电路均用于对数据进行处理,其具体可设计到以下电路中的任一项或多项中:主处理电路、分支处理电路以及基础处理电路等。这样在进行神经网络计算时能够减少计算的数据量,并且本芯片可以依据各个电路(主要是主处理电路和基础处理电路)的运算量(即负载量)动态的分配由哪个电路来进行数据压缩处理,这样能够减少数据计算的复杂程序,降低功耗,并且动态的分配数据处理能够实现不影响芯片的计算效率。该分配的方式包括但不限于:负载均衡、负载最小值分配等等方式。
[0117] 参阅图1b所示的装置,图1b所示的装置为无分支处理电路的计算装置,如图1b所示的装置,其包括:主处理电路以及N个基础处理电路,其中,主处理电路(具体的结构如图1c所示)与N个基础处理电路可以直接或间接连接,如为间接连接的方式时,一种可选的方案如图1a所示可以包括N/4个分支处理电路,每个分支处理电路分别连接4个基础处理电路,对于主处理电路以及N个基础处理电路分别包含的电路可以参见上述如图1a所示的描述,这里不再赘述,这里需要说明的是,上述基础处理电路还可以设置在分支处理电路内,另外,每个分支处理电路连接基础处理电路的数量也可以不局限于4个,厂家可以根据实际需要进行配置。该上述主处理电路和N个基础处理电路中可分别设计有第一映射电路和第二映射电路,具体的,可以是主处理电路包括第一映射电路,所述N个基础处理电路或其中的一部分包括第二映射电路;也可以是主处理电路包括第一映射电路和第二映射电路,还可以是指所述N个基础处理电路或其中的一部分包括第一映射电路和第二映射电路。上述主处理电路可以根据神经网络计算指令动态的分配数据压缩处理步骤的操作实体,具体的,主处理电路可以根据自身的负载确定是否对接收到的数据执行压缩处理步骤,具体的,可以将负载的值设置多个区间,每个区间对应分配数据压缩处理步骤的执行主体,例如,以
3个区间为例,区间1的负载值较低,可以由N个基础处理电路执行数据压缩处理步骤。主处理电路单独执行数据压缩处理步骤,区间2负载值位于区间1以及区间3之间,可以由主处理电路单独执行数据压缩处理步骤,区间3负载值较高,可以由主处理电路或N个基础处理电路共同执行数据压缩处理步骤。对此,可以以明示的方式来执行,例如主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据压缩处理步骤,如基础处理电路未接收到特殊指示或指令时,确定不执行数据压缩处理步骤。又如,可以以暗示的方式来执行,例如,基础处理电路接收到稀疏数据(即含0,或包括小于预设阈值的数据大于预设数量)且确定需要执行内积运算时,将该稀疏数据进行压缩处理。
[0118] 本申请涉及的数据压缩处理具体在前文所述的第一映射电路和第二映射电路中执行。应理解的,由于神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。特别是,针对权值较小(如为0,或小于设定数值的权值)的情况下,为提高计算速率、减小开销需对这些权值较小的数据进行压缩处理。在实际应用中,数据压缩处理在稀疏神经网络中应用,效果最为明显,如减小数据计算的工作量、减小数据额外开销,提高数据计算速率等。
[0119] 以输入数据为例,阐述数据压缩处理涉及的具体实施例。所述输入数据包括但不限于至少一个输入神经元和/或至少一个权值。
[0120] 第一实施例中:
[0121] 第一映射电路接收到第一输入数据(具体可为主处理电路发送的待计算的数据块,如分发数据块或者广播数据块等)后,所述第一映射电路可对所述第一输入数据进行处理,以获得处理后的第一输入数据以该第一输入数据关联的标识mask数据,该mask数据用于指示该第一输入数据的绝对值是否大于第一阈值,如0.5、0等等。
[0122] 具体的,当所述第一输入数据的绝对值大于第一阈值,则保留该输入数据;否则删除该第一输入数据或将该第一输入数据置为0。例如,输入的矩阵数据块为第一阈值为0.05,则经过第一映射电路处理后可获得处理后的矩阵
数据块 与该矩阵数据块关联的标识数据块(也可称为mask矩阵)为
[0123] 进一步地,为减少数据传输量,所述主处理电路再向与其连接的基础处理电路中分发数据时,可发送所述处理后的矩阵数据块中的目标数据(本例中即为1,0.06和0.5)以及该矩阵数据块关联的标识数据块。具体实施时,所述主处理电路可按照设定规则将所述处理后的矩阵数据块中的目标数据分发至基础处理电路中,例如按照行顺序依次发送或者按照列顺序依次等等,本申请不做限定。相应地,基础处理电路在接收到所述目标数据以及该目标数据对应关联的标识数据块后,按照设定规则(例如行顺序)将其还原为处理后的矩阵数据块。例如本例中,基础处理电路可根据接收的数据(1,0.06和0.5)以及标识数据块可获知该数据对应的矩阵数据块(即主处理电路中第一映射电路处理后的矩阵数据块)为
[0124] 在本发明实施例中,该第一输入数据可为分发数据块和/或广播数据块。
[0125] 相应地,第二映射电路可利用第一输入数据关联的标识数据对第二输入数据进行处理,从而获得处理后的第二输入数据;其中第一输入数据与所述第二输入数据不同。例如当所述第一输入数据为至少一个权值时,则所述第二输入数据可为至少一个输入神经元;或者,当所述第一输入数据为至少一个输入神经元时,则所述第二输入数据可为至少一个权值。
[0126] 在本发明实施例中,该第二输入数据与所述第一输入数据不同,所述第二输入数据可为以下中的任一个:分发数据块、基本数据块、广播数据块以及部分广播数据块。
[0127] 例如,当所述第一输入数据为分发数据块时,则第二输入数据为部分广播数据块。假设第二输入数据为矩阵数据块 相应地利用上例中mask矩阵
处理后,获得处理后的部分广播数据块为 由于在实际应用中,
输入数据涉及的矩阵数据块维数较大,本申请这里仅为示意,本不构成限定。
[0128] 第二实施例中:
[0129] 所述第一映射电路可用于对第一输入数据和第二输入数据进行处理,以得到处理后的第一输入数据以及所述第一输入数据关联的第一标识mask数据、处理后的第二输入数据以及所述第二输入数据关联的第二标识mask数据。其中,所述第一mask数据或者第二mask数据用于指示第一或第二输入数据的绝对值是否大于第二阈值,该第二阈值为用户侧或装置侧自定义设置的,例如0.05、0等等。
[0130] 所述处理后的第一输入数据或第二输入数据可为处理后的输入数据,也可为未处理前的输入数据。例如,第一输入数据为分发数据块,如上述例子中的矩阵数据块经过第一映射电路处理后可获得处理后的分发数据块,这里处理后的分发数据块可为原矩阵数据块 也可为压缩处理后的矩阵数据块
应理解的,本申请为减少数据量的传输以及基础处理电路中数据处理效
率,优选地所述处理后的输入数据(如处理后的基本数据块或部分广播数据块等)应为压缩处理后的数据。优选地,主处理电路向基础处理电路中发送的数据,具体可为所述处理后的输入数据中的目标数据,该目标数据具体可为绝对值大于预设阈值的数据,也可为非0数据等等。
[0131] 相应地在基础处理电路中,第二映射电路可根据所述第一输入数据关联的第一标识数据以及所述第二输入数据关联的第二标识数据得到连接标识数据;该连接标识数据用于指示所述第一输入数据和所述第二输入数据中绝对值均大于第三阈值的数据,其中第三阈值为用户侧或装置侧自定义设置的,如0.05、0等。进一步地,所述第二映射电路可根据所述连接标识数据分别对接收的第一输入数据和第二输入数据进行处理,从而获得处理后的第一输入数据和处理后的第二输入数据。
[0132] 例如,第一输入数据为矩阵数据块 第二输入数据块同样也为矩阵数据块 经过第一映射电路处理后可获得该第一输入数据关
联的第一标识数据块 以及处理后的第一输入数据块 相应地
获得该第二输入数据关联的第二标识数据块 处理后的第二输入数据块为
相应地,为提高数据传输速率,主处理电路中仅可将处理后的第一输入
数据块中的目标数据1,0.06和0.5、以及该第一输入数据块关联的第一标识数据块发送给基础处理电路;同时,将处理后的第二输入数据块中的目标数据1,1.1,0.6,0.3和0.5,以及该第二输入数据块关联的第二标识数据块发送给基础处理电路。
[0133] 相应地,基础处理电路在接收到上述数据后,可通过第二映射电路对上述第一标识数据块和第二标识数据块进行逐元素与操作,得到连接标识数据块 相应地,第二映射电路利用该连接标识数据块分别对所述处理后的第一输入数据块和处理后的第二输入数据块分别进行处理,从而获得处理后的第一输入数据块为 处
理后的第二输入数据块为 其中,在基础处理电路中可根据第一标识数据块
以及接收的第一数据块中的目标数据,确定出该目标数据对应所在的第一数据块(即经过第一映射电路处理后的第一数据块);相应地,根据第二标识数据块以及接收的第二数据块中的目标数据,确定出该目标数据对应所在的第二数据块(即经过第一映射电路处理后的第二数据块);然后,在第二映射电路获知连接标识数据块后,利用该连接标识数据块分别与确定的第一数据块和确定的第二数据块进行逐元素与操作,以获得经由第二映射电路处理后的第一数据块和处理后的第二数据块。
[0134] 第三实施例中:
[0135] 所述主处理电路中并不会设置第一映射电路,但所述主处理电路可将第三输入数据以及预存的所述第三输入数据关联的第三标识数据发送至与其连接的基础处理电路中。该基础处理电路中设置有第二映射电路。下面阐述第二映射电路涉及的数据压缩处理的具体实施例。
[0136] 应理解的,所述第三输入数据包括但不限于基础数据块、部分广播数据块、广播数据块等。同样地,在神经网络处理器中,该第三输入数据也可为至少一个权值,和/或至少一个输入神经,本申请不做限定。
[0137] 在第二映射电路中,所述第二映射电路可根据接收的第三输入数据关联的第三标识数据对所述第三输入数据进行处理,从而获得处理后的第三输入数据,以便后续对处理后的第三输入数据执行相关运算操作,如内积运算等。
[0138] 例如,第二映射电路接收的第三输入数据为矩阵数据块 相应地预存的该第三输入数据关联的第三标识数据块(也成mask矩阵数据块)为
进一步地,第二映射电路根据第三标识数据块对第三输入数据块进行处理得
到处理后的第三输入数据块具体为
[0139] 此外,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
[0140] 第四实施中:
[0141] 所述主处理电路中并不设置映射电路,在所述基础处理电路中设置有第一映射电路和第二映射电路。关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。
[0142] 可选的,还存在第五实施例。第五实施例中,所述基础处理电路中并不设置映射电路,将所述第一映射电路和第二映射电路均设置在主处理电路中,关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。即是,主处理电路中完成数据的压缩处理,将处理后的输入数据发送给基础处理电路,以便基础处理电路利用处理后的输入数据(具体可为处理后的神经元和处理后权值)执行相应地的运算操作。
[0143] 下面阐述本申请涉及映射电路的具体结构示意图。如图7a和5b示出两种可能的映射电路。其中,如图7a所示的映射电路包括比较器和选择器。关于所述比较器和选择器的数量本申请不做限定。如图7a示出一个比较器和两个选择器,其中,所述比较器用于判定输入数据是否满足预设条件。该预设条件可为用户侧或设备侧自定义设置的,例如本申请上述的所述输入数据的绝对值大于或等于预设阈值。如果满足预设条件,则比较器可确定允许输出该输入数据,该输入数据对应关联的标识数据为1;否则可确定不输出该输入数据,或者默认该输入数据为0。相应地,此时该输入数据对应关联的标识数据为0。也即是,经过该比较器后,可获知输入数据关联的标识数据。
[0144] 进一步地,所述比较器对输入数据进行预设条件的判定后,可将获得的标识数据输入至选择器中,以便选择器利用该标识数据来决定是否输出相应地的输入数据,即获得处理后的输入数据。
[0145] 如图7a,以所述输入数据为矩阵数据块为例,经过比较器可对该矩阵数据块中的每个数据进行预设条件的判定,从而可获得该矩阵数据块关联的标识数据块(mask矩阵)。进一步地,在第一选择器中可利用该标识数据块对所述矩阵数据块进行筛选,将所述矩阵数据块中绝对值大于或等于预设阈值(即满足预设条件)的数据进行保留,其余数据进行删除,以输出处理后的矩阵数据块。可选的,在第二选择器中还可利用该标识数据块对其他输入数据(例如第二矩阵数据块)进行处理,例如进行逐元素与操作,以将该第二矩阵数据块中绝对值大于或等于预设阈值的数据进行保留,以输出处理后的第二矩阵数据块。
[0146] 应理解的,对应于上述第一和第二实施例中,所述第一映射电路的具体结构可包括至少一个比较器和至少一个选择器,例如上例中图7a中的比较器和第一选择器;所述第二映射电路的具体结果可包括一个或多个选择器,例如上例中图7a的第二选择器。
[0147] 如图7b,示出另一种映射电路的结构示意图。如图7b,所述映射电路包括选择器,所述选择器的数量不做限定,可为一个,也可为多个。具体的,所述选择器用于根据输入的输入数据所关联的标识数据来对输入的所述输入数据进行选择,以将所述输入数据中绝对值大于或等于预设阈值的数据进行输出,其余数据进行删除/不输出,从而获得处理后的输入数据。
[0148] 以所述输入数据为矩阵数据块为例,向所述映射电路输入该矩阵数据块以及该矩阵数据块关联的标识数据块,选择器可根据该标识数据块对所述矩阵数据块进行选择,将其绝对值大于或等于0的数据进行输出,其余数据不予输出,从而输出处理后的矩阵数据块。
[0149] 应理解的,如图7b所示的结构可应用于上述第三实施例中的第二映射电路,即是上述第三实施例中的第二映射电路的具体结果可包括至少一个选择器。同理,对于主处理电路和基础处理电路中设计的第一映射电路和第二映射电路可按照如图7a和图7b所示的功能部件进行交叉组合或部件拆分,本申请不做限定。
[0150] 下面提供一种采用如图1a所示神经网络的正向运算,神经网的装置实现计算的方法,该计算的方法具体可以为神经网络的计算方式,例如络的训练,在实际应用中,正向运算依据不同的输入数据可以执行矩阵乘矩阵、卷积运算、激活运算、变换运算等等运算,上述运算均可以采用如图1a所示的装置实现。
[0151] 主处理电路的第一映射电路先对数据进行压缩处理然后由控制电路传输给基础处理电路运算,例如,主处理电路的第一映射电路可以对数据进行压缩处理后再传输给基础处理电路,其优点是可以减少传输数据的数据量,减少传输的总比特数量,基础处理电路执行数据运算的效率也更高,功耗更低。
[0152] 主处理电路将待计算的数据传输到全部或者一部分基础处理电路上;以矩阵乘以向量计算为例,主处理电路的控制电路可以将矩阵数据拆分每列作为一个基础数据,例如m*n矩阵,可以拆分成n个m行的向量,主处理电路的控制电路将拆分后的n个m行的向量分发给多个基础处理电路。对于向量,主处理电路的控制电路可以将向量整体广播给每个基础处理电路。如果m的值比较大,那么控制电路可以先将m*n矩阵拆分成x*n个向量,以x=2为例,具体的可以拆分成,2n个向量,每个向量包含m/2行,即将n个m行的向量中每个向量均分成2个向量,以第一行为例,如n个m行的向量的第一个向量为1000行,那么均分成2个向量可以为,将前500行组成第一向量,将后500行组成第二向量,控制电路通过2个广播将2个向量广播给多个基础处理电路。
[0153] 所述数据传输的方式可以是广播或者分发,或者其他任何可能的传输方式;
[0154] 基础处理电路接收到数据后,先通过第二映射电路对数据进行处理,再执行运算,得到运算结果;
[0155] 基础处理电路将运算结果传输回主处理电路;
[0156] 所述运算结果可以是中间运算结果,也可以是最终运算结果。
[0157] 使用如图1a所示装置可完成张量乘张量的运算,所述张量和前文所述的数据块相同,其可为矩阵、向量、三维数据块、四位数据块以及高维数据块中的任一项或多项的组合;下面如图2和2b分别示出矩阵乘向量和矩阵乘矩阵运算的具体实现方法。
[0158] 使用如图1a所示装置完成矩阵乘向量的运算;(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)[0159] 下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2a所示,(矩阵S中的每一行与向量P长度相同,他们中的数据按位置一一对应)所述神经网络计算装置拥有K个基础处理电路:
[0160] 参阅图2,图2提供了一种矩阵乘向量的实现方法,具体可以包括:
[0161] 步骤S201、主处理电路的第一映射电路将对输入矩阵S中的每一行数据进行压缩处理,对应得到压缩处理后的矩阵S以及该输入矩阵S关联的第一标识矩阵(mask矩阵),主处理电路的控制电路将压缩处理后矩阵S中的数据以及第一标识矩阵分发到K个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;
[0162] 具体的,第一映射电路对输入矩阵S进行压缩处理得到压缩处理后的矩阵S。例如,将输入矩阵S和矩阵P中数据为指定数值(如0)和/或绝对值小于或等于预设阈值(如0.1)所对应的数据剔除,具体实现时可根据矩阵S和矩阵P各自对应的mask矩阵来剔除,例如剔除mask矩阵中数据为0时对应的相同位置上矩阵S/P中的数据,具体可参见前述关于数据压缩处理实施例中的相关阐述,这里不再赘述。应理解的,这里的矩阵S和矩阵P也可对应理解为前述实施例中的输入神经元(也可称为输入神经原矩阵)和权值(也可称为权值矩阵)等。
[0163] 所述主处理电路在向所述基础处理电路发送数据时,具体将所述压缩处理后的矩阵S中绝对值大于预设阈值的数据或者非0数据,发送给基础处理电路,以降低数据传输量。
[0164] 在一种可选方案中,如果矩阵S的行数M<=K则,主处理电路的控制电路给K个基础处理电路分别分发S矩阵的一行以及第一mask矩阵中与之对应关联的一行;例如矩阵S为2*2,控制电路向第一个基础处理电路发矩阵S中第一行的数据,同时需将该矩阵S关联的mask矩阵中的第一行的mask数据发送给第一个基础处理电路。
[0165] 在一种可选方案中,如果矩阵S的行数M>K,则主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据以及第一mask矩阵中对应一行或几行的标识数据。
[0166] 分发到第i个基础处理电路的S中的行的集合为Ai,共有Mi个行,如图2c表示第i个基础处理电路上将要执行的计算。相应地,分发到第i个基础处理电路中与该集合Ai对应关联的标识矩阵为Bi,大于或等于Mi行。
[0167] 在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据以及该分发数据关联的标识数据,例如矩阵Ai以及该Ai关联的标识mask矩阵Bi保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。
[0168] 步骤S202、主处理电路的第一映射电路将输入向量P进行压缩处理得到压缩处理后的向量P以及该输入向量P关联的第二标识矩阵(mask向量),主处理电路的控制电路将压缩处理后的向量P以及第二标识矩阵中的各部分以广播的方式传输给K个基础处理电路;关于输入向量P的压缩处理以及压缩处理后的向量P的数据发送具体可参见S201步骤的相关阐述,这里不再赘述。
[0169] 在一种可选方案中,主处理电路的控制电路可以将向量P(具体为压缩处理后的向量P)以及第二标识矩阵中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量P的重复传输的数据传输量,提高执行效率,降低传输功耗。
[0170] 在一种可选方案中,主处理电路的控制电路可以将向量P以及第二标识矩阵中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量P的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。
[0171] 在一种可选方案中,主处理电路的控制电路可以将向量P以及第二标识矩阵中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。
[0172] 步骤S203、K个基础处理电路的内积运算器电路计算矩阵S和向量P的数据的内积,例如第i个基础处理电路,计算矩阵Ai的数据和向量P的数据的内积;
[0173] 具体的,K个基础处理电路中的第二映射电路依据各自接收的第一标识矩阵中的数据和第二标识矩阵中的数据,获得关系标识矩阵;然后利用该关系标识矩阵计算向量P和矩阵S中的数据的内积运算。例如,第i个基础处理电路,利用矩阵Ai的标识矩阵Bi和向量P的第二标识矩阵,获得关系连接矩阵;然后利用关联连接矩阵分别对矩阵Ai和向量P进行处理,以获得处理后的矩阵Ai和处理后的向量P,如利用关联标识矩阵从矩阵Ai和向量P中选择出同一位置上非0的数据,后续再利用内积运算器电路计算非0数据间的内积。
[0174] 步骤S204、K个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果传输回主处理电路。
[0175] 在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那么部分和可以为:F1*G1+F2*G2+F3*G3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
[0176] 在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
[0177] 在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
[0178] 参阅图2b,使用如图1a所示的装置完成矩阵乘矩阵的运算;
[0179] 下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2d所示)所述神经网络计算装置拥有K个基础处理电路:
[0180] 步骤S201b、主处理电路的控制电路将矩阵S中的每一行数据以及第一标识矩阵中对应关联的标识数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;该第一标识矩阵为矩阵S的标识矩阵,其可预先存储的,也可通过第一映射电路处理获得,本申请不做限定。
[0181] 在一种可选方案中,矩阵S为经过压缩处理后得到的矩阵。具体的,主处理电路的第一映射电路将对输入矩阵S进行压缩处理,以对应获得压缩处理后的矩阵S和该输入矩阵S关联的第一标识矩阵。关于数据的压缩处理可参见前述实施例中的相关阐述,这里不再赘述。
[0182] 在一种可选方案中,如果S的行数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发S矩阵的一行以及第一mask矩阵中与之对应关联的一行;
[0183] 在一种可选方案中,如果S的行数M>K,主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据以及第一mask矩阵中对应一行或几行的标识数据。
[0184] S中有Mi行分发到第i个基础处理电路,这Mi行的集合称为Ai,如图2e表示第i个基础处理电路上将要执行的计算。相应地,分发到第i个基础处理电路中与该集合Ai对应关联的标识矩阵为Bi,Bi的行数大于或等于Mi行。
[0185] 在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:接收的由主处理电路分发的矩阵Ai以及该矩阵Ai关联的标识矩阵,将矩阵Ai以及关联的标识矩阵保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。
[0186] 步骤S202b、主处理电路的控制电路将矩阵P中各部分以及第二标识矩阵中对应关联的标识数据以广播的方式传输给各个基础处理电路;该第二标识数据为矩阵P的标识矩阵,其可预先存储的,也可通过第一映射电路处理获得。
[0187] 在一种可选方案中,矩阵P为经过压缩处理后得到的矩阵。具体的,主处理电路的第一映射电路将对输入矩阵P进行压缩处理,以对应获得压缩处理后的矩阵P和该输入矩阵P关联的第二标识矩阵。关于数据的压缩处理可参见前述实施例中的相关阐述,这里不再赘述。
[0188] 在一种可选方案中,可以将矩阵P中的各部分以及在第二标识矩阵中对应关联的标识数据只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵P的数据的复用,可以是对矩阵P的数据在多次使用。
[0189] 在一种可选方案中,主处理电路的控制电路可以将矩阵P中的各部分以及在第二标识矩阵中对应关联的标识数据多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;
[0190] 在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分以及在第二标识矩阵中对应关联的标识数据多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;
[0191] 在一种可选方案中,每个基础处理电路的内积运算器计算矩阵S和矩阵P的数据的内积,例如第i个基础处理电路,计算矩阵Ai的数据和矩阵P的数据的内积;
[0192] 具体的,每个基础处理电路可根据接收的第一标识矩阵的数据和第二标识矩阵的数据获得关系标识矩阵,然后利用该关系标识矩阵对矩阵S和矩阵P的数据进行处理,再对处理后的矩阵S和处理后的矩阵P的数据执行内积运算。例如,第i个基础处理电路,利用矩阵Ai对应关联的标识矩阵Bi和矩阵P关联的第二标识矩阵,获得关系连接矩阵;然后利用关联连接矩阵分别对矩阵Ai和矩阵P进行处理,以获得处理后的矩阵Ai和处理后的矩阵P,如利用关联标识矩阵从矩阵Ai和矩阵P中选择出同一位置上非0的数据,再利用内积运算器电路计算处理后的矩阵Ai和处理后的矩阵P的数据的内积。
[0193] 步骤S203b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。
[0194] 在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
[0195] 在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
[0196] 在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。
[0197] 参阅图3a,使用如图1a所示的装置完成全连接运算:
[0198] 如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用方法一执行如图2所示的矩阵乘向量的运算;
[0199] 如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本作为batch的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的使用如图2c所示的矩阵乘矩阵的执行运算;
[0200] 参阅图3b,使用如图1a所示的装置完成卷积运算:
[0201] 对于一个卷积层,记其卷积核的数量为M;
[0202] 步骤S301、主处理电路的控制电路将卷积层权值中的每一个卷积核的权值以及第一标识矩阵中对应关联的标识数据分发到K个基础处理电路中的某一个上,保存在基础处理电路的片上缓存和/或寄存器中;该第一标识矩阵为卷积层权值的标识矩阵,可为预先存储的,也可为通过主处理电路中的第一映射电路处理获得。
[0203] 在一种可选方案中,所述卷积层权值中的每一个卷积核的权值是经过压缩处理后得到的权值。具体的,主处理电路的第一映射电路对卷积层权值中的每一个卷积核的权值进行压缩处理,以对应得到压缩处理后的所述卷积层权值中的每一个卷积核的权值以及该卷积层权值所关联的第一标识矩阵。关于数据的压缩处理可参见前述实施例中的相关阐述,这里不再赘述。
[0204] 在一种可选方案中,如果卷积核的个数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发一个卷积核的权值以及该卷积核对应在第一标识矩阵中关联的标识数据;
[0205] 在一种可选方案中,如果卷积核的个数M>K,主处理电路的控制电路给每个基础处理电路分别分发一个或多个卷积核的权值以及该卷积核对应在第一标识矩阵中关联的一行或多行标识数据。
[0206] 共有Mi个卷积核分发到第i个基础处理电路,这些卷积核权值的集合称为Ai。相应地,该Mi个卷积核各自对应在第一标识矩阵中关联的标识数据也同样分发到第i个基础处理电路中,这些标识矩阵中的标识数据的集合可称为Bi,即Ai对应关联的标识矩阵Bi。
[0207] 在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:将收到的由主处理电路分发的卷积核权值Ai以及该Ai对应关联的标识矩阵Bi保存在其寄存器和/或片上缓存中;
[0208] 步骤S302、主处理电路的控制电路将输入数据P中各部分以及第二标识矩阵中对应关联的标识数据以广播的方式传输给各个基础处理电路;
[0209] 在一种可选方案中,所述输入数据P是经过压缩处理后得到的输入神经元。具体的,主处理电路的第一映射电路对输入数据P进行压缩处理,以对应得到压缩处理后的输入数据P以及该输入数据P对应关联的标识数据,然后再利用控制电路将压缩处理后的输入数据P中的各部分以及对应关联的标识数据以广播的方式传输给各个基础处理电路。关于数据的压缩处理可参见前述实施例中的相关阐述,这里不再赘述。
[0210] 在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分以及对应关联的标识数据只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的输入数据P的数据进行充分地复用,完成对应与Ai中每一个卷积核的内积运算;
[0211] 在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分以及各部分各自对应关联的标识数据多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据P的数据不进行复用,分次完成对应于Ai中的每一个卷积核的内积运算;
[0212] 步骤S303、每个基础处理电路计算卷积核和输入数据P的数据内积,例如第i个基础处理电路,计算Ai的每一个卷积核和输入数据P的数据的内积;
[0213] 具体的,每个基础处理电路中的第二映射电路依据接收的卷积核关联的标识数据(即第一标识矩阵中的标识数据)和输入数据P关联的标识数据(即第二标识矩阵中的标识数据)获得关系连接矩阵,然后利用该关系连接矩阵对接收的卷积核和输入数据进行处理,再对处理后的卷积核和处理后的输入数据执行内积运算。例如,第i个基础处理电路,利用卷积核Ai关联的标识矩阵Bi和输入数据P关联的第二标识矩阵(即标识数据),获得关系连接矩阵;然后利用关联连接矩阵分别对矩阵Ai和输入数据P进行处理,以获得处理后的矩阵Ai和处理后的输入数据P,如利用关联标识矩阵从矩阵Ai和输入数据P中选择出同一位置上非0的数据,后续再利用内积运算器电路计算非0数据间的内积。
[0214] 步骤S304、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路:
[0215] 在一种可选方案中,可基础处理电路以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
[0216] 在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
[0217] 在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;
[0218] 使用如图1a所示的装置更新权值的方法:
[0219] 利用主处理电路的向量运算器电路实现神经网络训练过程中的权值更新功能,具体地,权值更新是指使用权值的梯度来更新权值的方法。
[0220] 在一种可选方案中,使用主处理电路的向量运算器电路对权值和权值梯度这两个向量进行加减运算得到运算结果,该运算结果即为更新权值。
[0221] 在一种可选方案中,使用主处理电路的向量运算器电路在权值以及权值梯度乘以或除以一个数得到中间权值和中间权值梯度值,向量运算器电路对中间权值和中间权值梯度值进行加减运算得到运算结果,该运算结果即为更新权值。
[0222] 在一种可选方案中,可以先使用权值的梯度计算出一组动量,然后再使用动量与权值进行加减计算得到更新后的权值;
[0223] 使用如图1a所示的装置实现全连接层的反向运算的方法
[0224] 全连接层的反向运算可以分成两部分,如下图4a所示,实线箭头表示全连接层的正向计算过程,如图4b所示,表示全连接层的反向计算过程。
[0225] 图4a、图4b所示的全连接层的反向运算,可以使用如图1a所示的装置如图2b所示的矩阵乘矩阵方法来完成;
[0226] 使用如图1a所示的装置实现卷积层的反向运算;
[0227] 卷积层的反向运算可以分成两部分,如下图5a中,实线箭头表示卷积层的正向计算过程,如图5b所示,表示卷积层的反向计算过程。
[0228] 图5a、图5b所示的卷积层的反向运算,可以使用如图1a所示装置采用如图3b所示的方法完成卷积层的反向运算。
[0229] 使用如图1a所示的装置实现BLAS(Basic Linear Algebra Subprograms)函数的方法
[0230] GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,S和P为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的S和P的宽高;
[0231] 使用如图1a的装置实现GEMM计算的步骤包括:
[0232] 主处理电路的数据类型转换运算电路可以对矩阵S以及矩阵P进行数据类型转换;
[0233] 主处理电路的转换电路对输入矩阵S和矩阵P进行各自相应的op操作;
[0234] 在一种可选方案中,op可以为矩阵的转置操作;可以利用主处理电路的矩阵转置电路实现该矩阵转置操作;
[0235] 在一种可选方案中,在执行完矩阵S和矩阵P的OP操作以后,还可以由主处理电路的数据转换运算电路执行数据类型转换操作,即数据转换运算电路将op(S)以及op(P)的数据类型由浮点类型数据转换成定点类型数据,然后执行如图2b所示的矩阵乘法运算。
[0236] 在一种可选方案中,某个矩阵的op可以为空,op操作不进行;
[0237] 用如图1a所示的装置的使用如图2b中所述矩阵乘矩阵的计算方法完成op(S)与op(P)之间的矩阵乘法计算;
[0238] 利用主处理电路的算术逻辑单元对op(S)*op(P)的结果中的每一个值进行乘以alpha的操作;
[0239] 在一种可选方案中,alpha为1的情况下乘以alpha的操作不进行;
[0240] 利用主处理电路的算术逻辑单元实现beta*C的运算;
[0241] 在一种可选方案中,beta为1的情况下,不进行乘以beta的操作;
[0242] 利用主处理电路的向量运算器电路实现矩阵alpha*op(s)*op(P)和beta*C之间对应位置相加的步骤得到GEMM计算的结果。
[0243] 在一种可选方案中,beta为0的情况下,不进行这步操作;
[0244] GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作;
[0245] 使用如图1a的装置实现GEMV计算的步骤为:
[0246] 主处理电路的数据类型转换运算电路可以对输入矩阵S以及矩阵P进行数据类型转换;
[0247] 主处理电路的转换电路对输入矩阵S进行相应的op操作;
[0248] 在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的转换电路实现矩阵转置操作;
[0249] 在一种可选方案中,某个矩阵的op可以为空,转置操作不进行;
[0250] 用如图1a所示装置使用如图2a中所述矩阵乘向量的计算方法完成矩阵op(S)与向量P之间的矩阵-向量乘法计算;
[0251] 利用主处理电路的算术逻辑单元对op(S)*P的结果中的每一个值进行乘以alpha的操作;
[0252] 在一种可选方案中,alpha为1的情况下乘以alpha的操作不进行;
[0253] 利用主处理电路的算术逻辑单元实现beta*C的运算;
[0254] 在一种可选方案中,beta为1的情况下,不进行乘以beta的操作;
[0255] 利用主处理电路的向量运算器电路实现矩阵alpha*op(S)*P和beta*C之间对应位置相加的步骤得到GEMV的结果。
[0256] 在一种可选方案中,beta为0的情况下,不进行相加的步骤操作;
[0257] 使用如图1a的装置实现激活函数的方法
[0258] 利用主处理电路的激活电路输入一向量,计算出该向量的激活向量;
[0259] 在一种可选方案中,主处理电路激活电路将输入向量中的每一个值通过一个激活函数(激活函数的输入是一个数值,输出也是一个数值),计算出一个数值输出到输出向量的对应位置;
[0260] 在一种可选方案中,激活函数可以是:y=max(m,x),其中x是输入数值,y是输出数值,m是一个常数;
[0261] 在一种可选方案中,激活函数可以是:y=tanh(x),其中x是输入数值,y是输出数值;
[0262] 在一种可选方案中,激活函数可以是:y=sigmoid(x),其中x是输入数值,y是输出数值;
[0263] 在一种可选方案中,激活函数可以是一个分段线性函数;
[0264] 在一种可选方案中,激活函数可以是任意输入一个数,输出一个数的函数。
[0265] 在一种可选方案中,输入向量的来源有(包括但不限于):
[0266] 所述装置的外部数据来源;
[0267] 在一种可选方案中,输入数据来自所述装置进行矩阵乘向量的运算结果;
[0268] 在一种可选方案中,输入数据来自所述装置进行矩阵乘矩阵的运算结果;
[0269] 所述装置的主处理电路计算结果;
[0270] 在一种可选方案中,输入数据来自所述装置主处理电路实现加偏置之后的计算结果。
[0271] 需要说明的是,上述激活操作可以由主处理电路内的算数逻辑电路和累加器电路来实现,也可以在主处理电路单独增加一个激活电路来实现激活操作。
[0272] 使用如图1a的装置实现加偏置操作:
[0273] 利用主处理电路的向量运算器电路可以实现两个向量或者两个矩阵相加的功能;
[0274] 利用主处理电路的向量运算器电路可以实现把一个向量加到一个矩阵的每一行上,或者每一个列上的功能。
[0275] 在一种可选方案中,所述矩阵可以来自所述装置执行矩阵乘矩阵运算的结果;
[0276] 在一种可选方案中,所述矩阵可以来自所述装置执行矩阵乘向量运算的结果;
[0277] 在一种可选方案中,所述矩阵可以来自所述装置的主处理电路从外部接受的数据。
[0278] 在一种可选方案中,所述向量可以来自所述装置的主处理电路从外部接受的数据。
[0279] 包括但不限于以上这些数据来源。
[0280] 本发明还提供一种芯片,该芯片包含计算装置,该计算装置包括:
[0281] 包括一个主处理电路,主处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。在一种可选方案中,主处理电路包括第一映射电路;
[0282] 在一种可选方案中,主处理电路包括执行数据处理的向量运算单元;
[0283] 具体地,包含接收输入数据的数据输入接口;在一种可选方案中,所述接收的数据来源可以是:所述神经网络运算电路装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;
[0284] 在一种可选方案中,所述数据输入接口可以有多个;具体地,可以包含输出数据的数据输出接口;在一种可选方案中,所述输出的数据的去向可以是:所述神经网络运算装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;在一种可选方案中,所述数据输出接口可以有多个;
[0285] 在一种可选方案中,所述主处理电路包括片上缓存和/或寄存器;
[0286] 在一种可选方案中,所述主处理电路中包含运算单元,可以执行数据运算;
[0287] 在一种可选方案中,所述主处理电路中包含算术运算单元;
[0288] 在一种可选方案中,所述主处理电路中包含向量运算单元,可以同时对一组数据执行运算;具体地,所述算术运算和/或向量运算可以是任意类型的运算,包括但不限于:两个数相加减乘除,一个数与常数加减乘除,对一个数执行指数运算,幂次运算,对数运算,以及各种非线性运算,对两个数执行比较运算,逻辑运算等。两个向量相加减乘除,一个向量中的每一个元素与常数加减乘除,对向量中的每一个元素执行指数运算,幂次运算,对数运算,以及各种非线性运算等,对一个向量中的每两个对应的元素执行比较运算,逻辑运算等。
[0289] 在一种可选方案中,所述主处理电路包括数据重排列单元,用于按照一定的顺序向基础处理电路传输数据,或者按照一定的顺序原地重新排列数据;
[0290] 在一种可选方案中,所述数据排列的顺序包括:对一个多维数据块进行维度顺序的变换;所述数据排列的顺序还可以包括:对一个数据块进行分块以发送到不同的基础处理电路。
[0291] 该计算装置还包括多个基础处理电路:每一个基础处理电路用于计算两个向量的内积,计算的方法是,基础处理电路收到的两组数,将这两组数中的元素对应相乘,并且将相乘的结果累加起来;内积的结果传输出去,这里传输出去根据基础处理电路的位置,有可能传输给其他基础处理电路,也可以直接传输给主处理电路。
[0292] 基础处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。
[0293] 在一种可选方案中,基础处理电路包括第二映射电路;
[0294] 在一种可选方案中,基础处理电路包括执行数据处理的向量运算单元;
[0295] 具体地,包括由片上缓存和/或寄存器构成的存储单元;
[0296] 具体地,包括一个或多个接收数据的数据输入接口;在一种可选方案中,包括两个数据输入接口,每次从两个数据输入接口处可以分别获得一个或多个数据;在一种可选方案中,基础处理电路可以将从数据输入接口接收到输入数据后保存在寄存器和/或片上缓存中;上述数据输入接口接收数据的来源可以是:其他基础处理电路和/或主处理电路。
[0297] 所述神经网络运算电路装置的主处理电路;所述神经网络运算电路装置的其他基础处理电路(所述神经网络运算电路装置拥有多个基础处理电路);具体地,包括一个或多个传输输出数据的数据输出接口;在一种可选方案中,可以将一个或多个数据从数据输出接口传输出去;具体地,通过数据输出接口传输出去的数据可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果或内积运算器运算结果中的一种或任意组合。
[0298] 在一种可选方案中,包含三个数据输出接口,其中的两个分别对应于两个数据输入接口,每一层出上一层从数据输入接口接收到的数据,第三个数据输出接口负责输出运算结果;
[0299] 具体地,所述数据输出接口传输数据的去向可以是:上文数据来源和此处的数据去向决定了基础处理电路在装置中的连接关系。
[0300] 所述神经网络运算电路装置的主处理电路;
[0301] 所述神经网络运算电路装置的其他基础处理电路,所述神经网络运算电路装置拥有多个基础处理电路;
[0302] 具体地,包括算术运算电路:该算术运算电路具体可以为:一个或多个乘法器电路、一个或多个累加器电路、一个或多个执行两组数内积运算的电路中的一个或任意组合。
[0303] 在一种可选方案中,可以执行两个数的乘法运算,其结果可以保存在片上缓存和/或寄存器上,也可以直接累加到寄存器和/或片上缓存中;
[0304] 在一种可选方案中,可以执行两组数据的内积运算,其结果可以保存在片上缓存和/或寄存器中,也可以直接累加到寄存器和/或片上缓存中;
[0305] 在一种可选方案中,可以执行数据的累加运算,将数据累加到片上缓存和或寄存器中;
[0306] 具体地,累加器电路被累加的数据,可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果、内积运算器运算结果中的一个或任意组合。
[0307] 需要说明的是,上述对基础处理电路的描述中所用到的“数据输入接口”和“数据输出接口”是指每一个基础处理电路的数据输入与输出接口,而不是整个装置的数据输入与输出接口。
[0308] 本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图1a或如图1b所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标键盘,网卡,wifi接口,服务器。当包含一个以上神如图1a或如图1b所示的芯片时,如图1a或如图1b所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
[0309] 该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
[0310] 本披露还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置(即通用处理装置)。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。如4c下图为组合处理装置的示意图。
[0311] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
[0312] 通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
[0313] 如图4d所示,可选的,该结构还包括存储装置,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
[0314] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0315] 本披露实施例提供了一种神经网络处理器板卡,可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personal computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0316] 请参照图5c,图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图。如图5c所示,上述神经网络处理器板卡10包括神经网络芯片封装结构11、第一电气及非电气连接装置12和第一基板(substrate)13。
[0317] 本披露对于神经网络芯片封装结构11的具体结构不作限定,可选的,如图5d所示,上述神经网络芯片封装结构11包括:神经网络芯片111、第二电气及非电气连接装置112、第二基板113。
[0318] 本披露所涉及的神经网络芯片111的具体形式不作限定,上述的神经网络芯片111包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
[0319] 本披露对于神经网络芯片111的具体结构不作限定,可选的,请参照图1a或图1b所示的装置。
[0320] 本披露对于第一基板13和第二基板113的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
[0321] 本披露所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。
[0322] 对于上述具体的第二电气及非电气连接装置112的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封装(Low-profile Quad Flat Package,LQFP)、带散热器的四方扁平封装(Quad Flat Package with Heat sink,HQFP)、无引脚四方扁平封装(Quad Flat Non-lead Package,QFN)或小间距四方扁平式封装(Fine-pitch Ball Grid Package,FBGA)等封装方式。
[0323] 倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
[0324] 球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
[0325] 可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片111和第二基板113进行封装,具体的神经网络芯片封装结构的示意图可参照图6。如图6所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
[0326] 其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。
[0327] 引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡10上的第一基板13)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本披露也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
[0328] 可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
[0329] 其中,绝缘填充物的材料可以是氮化硅、化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
[0330] 可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,扇。
[0331] 举例来说,如图6a所示,神经网络芯片封装结构11包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。
[0332] 可选的,上述神经网络芯片封装结构11还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
[0333] 其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
[0334] 本披露对于第一电气及非电气装置12的具体形式也不作限定,可参照第二电气及非电气装置112的描述,即通过焊接的方式将神经网络芯片封装结构11进行封装,也可以采用连接线连接或插拔方式连接第二基板113和第一基板13的方式,便于后续更换第一基板13或神经网络芯片封装结构11。
[0335] 可选的,第一基板13包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
[0336] 第一基板13上还可包括快速外部设备互连总线(Peripheral  Component Interconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factor Pluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
[0337] 将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
[0338] 在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。
[0339] 电子装置包括数据处理装置、机器人、电脑、打印机扫描仪平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0340] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0341] 以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈