集成电路芯片装置及相关产品转让专利

申请号 : CN201711455388.4

文献号 : CN109978152B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 中科寒武纪科技股份有限公司

摘要 :

本披露提供一种集成电路芯片装置及相关产品,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。本披露提供的技术方案具有计算量小,功耗低的优点。

权利要求 :

1.一种集成电路芯片装置,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路与所述多个基础处理电路物理连接;所述主处理电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;

所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;

所述主处理电路,用于获取输入数据块、权值数据块以及乘法指令,通过所述数据类型运算电路将所述输入数据块、所述权值数据块转换成定点类型的输入数据块、权值数据块,依据该乘法指令对定点类型的输入数据块划分成分发数据块,将定点类型的权值数据块划分成广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块有选择的分发至和与所述主处理电路相连的基础处理电路中的至少一个基础处理电路,将所述广播数据块广播至和与所述主处理电路相连的基础处理电路;

所述多个基础处理电路,用于依据定点类型的广播数据块和定点类型的基本数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;

所述主处理电路,用于将所述运算结果处理得到所述乘法指令的指令结果。

2.根据权利要求1所述的集成电路芯片装置,其特征在于,

所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行乘法运算得到定点数据类的乘积结果,将该乘积结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;

所述主处理电路,用于通过所述数据类型运算电路将定点数据类的乘积结果转换成浮点类型的乘积结果,对该浮点类型的乘积结果执行累加运算得到累加结果,将累加结果进行排序得到所述指令结果。

3.根据权利要求1所述的集成电路芯片装置,其特征在于,

所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行内积运算得到定点数据类的内积结果,将该内积结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;

所述主处理电路,用于通过所述数据类型运算电路将该内积结果转换成浮点类型的内积结果,将所述内积结果进行排序得到所述指令结果。

4.根据权利要求1-3任意一项所述的集成电路芯片装置,其特征在于,所述主处理电路,具体用于将所述广播数据块通过一次广播至与所述主处理电路连接的基础处理电路。

5.根据权利要求1-3任意一项所述的集成电路芯片装置,其特征在于,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至与所述主处理电路连接的基础处理电路。

6.根据权利要求5所述的集成电路芯片装置,其特征在于,

所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点数据类型执行一次内积处理后得到内积处理结果,将所述内积处理结果发送至所述主处理电路。

7.根据权利要求5所述的集成电路芯片装置,其特征在于,

所述基础处理电路,具体用于复用p次该部分广播数据块执行该部分广播数据块与p个基本数据块分别执行内积运算得到p个部分处理结果,将所述p个部分处理结果发送至主处理电路,所述p为大于等于2的整数。

8.根据权利要求1所述的集成电路芯片装置,其特征在于,

所述主处理电路包括:主寄存器或主片上缓存电路;

所述基础处理电路包括:基本寄存器或基本片上缓存电路。

9.根据权利要求8所述的集成电路芯片装置,其特征在于,

所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。

10.根据权利要求1所述的集成电路芯片装置,其特征在于,

所述输入数据块为:向量或矩阵;

所述权值数据块为:向量或矩阵。

11.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-10任意一项所述的集成电路芯片装置。

12.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求11所述的神经网络运算装置、通用互联接口和通用处理装置;

所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。

13.一种芯片,其特征在于,所述芯片集成如权利要求1-12任意一项所述的装置。

14.一种电子设备,其特征在于,所述电子设备包括如权利要求13所述的芯片。

15.一种神经网络的运算方法,其特征在于,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:如权利要求1-10任意一项所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的矩阵乘矩阵运算、矩阵乘向量运算或向量乘向量运算。

说明书 :

集成电路芯片装置及相关产品

技术领域

[0001] 本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。

背景技术

[0002] 人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。

发明内容

[0003] 本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
[0004] 第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括:数据类型运算电路;所述数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;
[0005] 所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;
[0006] 所述主处理电路,用于获取输入数据块、权值数据块以及乘法指令,通过所述数据类型运算电路将所述输入数据块、所述权值数据块转换成定点类型的输入数据块、权值数据块,依据该乘法指令对定点类型的输入数据块划分成分发数据块,将定点类型的权值数据块划分成广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至和与所述主处理电路相连的基础处理电路中的至少一个基础处理电路,将所述广播数据块广播至和与所述主处理电路相连的基础处理电路;
[0007] 所述多个基础处理电路,用于依据定点类型的广播数据块和定点类型的基本数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。
[0008] 第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
[0009] 第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
[0010] 所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
[0011] 第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
[0012] 第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
[0013] 第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。
[0014] 可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。

附图说明

[0015] 图1a是一种集成电路芯片装置结构示意图。
[0016] 图1b是另一种集成电路芯片装置结构示意图。
[0017] 图1c是一种基础处理电路的结构示意图。
[0018] 图1d是一种主处理电路的结构示意图。
[0019] 图1e为一种定点数据类型的示意结构图。
[0020] 图2a是一种基础处理电路的使用方法示意图。
[0021] 图2b是一种主处理电路传输数据示意图。
[0022] 图2c是矩阵乘以向量的示意图。
[0023] 图2d是一种集成电路芯片装置结构示意图。
[0024] 图2e是又一种集成电路芯片装置结构示意图。
[0025] 图2f是矩阵乘以矩阵的示意图。
[0026] 图3为本披露还揭露了一个组合处理装置结构示意图。
[0027] 图4为本披露还揭露了一个组合处理装置另一种结构示意图。
[0028] 图5a为本披露实施例提供的一种神经网络处理器板卡的结构示意图;
[0029] 图5b为本披露实施例流提供的一种神经网络芯片封装结构的结构示意图;
[0030] 图5c为本披露实施例流提供的一种神经网络芯片的结构示意图;
[0031] 图6为本披露实施例流提供的一种神经网络芯片封装结构的示意图;
[0032] 图6a为本披露实施例流提供的另一种神经网络芯片封装结构的示意图。

具体实施方式

[0033] 为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
[0034] 在第一方面提供的装置中,所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行乘法运算得到定点数据类的乘积结果,将该乘积结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;
[0035] 所述主处理电路,用于通过所述数据类型运算电路将定点数据类的乘积结果转换成浮点类型的乘积结果,对该浮点类型的乘积结果执行累加运算得到累加结果,将累加结果进行排序得到所述指令结果。
[0036] 在第一方面提供的装置中,所述多个基础处理电路,具体用于将所述广播数据块以及接收到的基本数据块以定点数据类型执行内积运算得到定点数据类的内积结果,将该内积结果作为运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;
[0037] 所述主处理电路,用于通过所述数据类型运算电路将该内积结果转换成浮点类型的内积结果,将所述内积结果进行排序得到所述指令结果。
[0038] 在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块通过一次广播至与所述主处理电路连接的基础处理电路。
[0039] 在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至与所述主处理电路连接的基础处理电路。
[0040] 在第一方面提供的装置中,所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点数据类型执行一次内积处理后得到内积处理结果,将所述内积处理结果发送至所述主处理电路。上述内积处理具体可以为:如部分广播数据块的元素为矩阵B的前2个元素,即为b10和b11;该基本数据块为输入数据矩阵A的第一行的前2个元素,即a10和a11,则内积=a10*b10+a11*b11。
[0041] 在第一方面提供的装置中,所述基础处理电路,具体用于复用p次该部分广播数据块执行该部分广播数据块与该p个基本数据块分别执行内积运算得到p个部分处理结果,将所述p个部分处理结果发送至主处理电路,所述p为大于等于2的整数。
[0042] 在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;所述基础处理电路包括:基本寄存器或基本片上缓存电路。
[0043] 在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
[0044] 在第一方面提供的装置中,所述输入数据块为:向量或矩阵;所述权值数据块为:向量或矩阵。
[0045] 参阅图1a,图1a为本披露提供的一种集成电路芯片装置,该集成电路芯片装置包括:主处理电路和多个基础处理电路,所述多个基础处理电路呈阵列排布(m*n阵列),其中,m、n的取值范围为大于等于1的整数且m、n中至少有一个值大于等于2。对于m*n阵列分布的多个基础处理电路,每个基础处理电路与相邻的基础处理电路连接,所述主处理电路连接多个基础处理电路的k个基础处理电路,所述k个基础处理电路可以为:第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。如图1a所示的集成电路芯片装置,主处理电路和/或多个基础处理电路可以包括数据类型转换运算电路,具体的多个基础处理电路中可以有部分基础处理电路包括数据类型转换电路,例如,在一个可选的技术方案中,可以将k个基础处理电路配置数据类型转换电路,这样n个基础处理电路可以分别负责对本列的m个基础处理电路的数据进行数据类型转换步骤。此设置能够提高运算效率,降低功耗,因为对于第1行的n个基础处理电路来说,由于其最先接收到主处理电路发送的数据,那么将该接收到的数据转换成定点类型的数据可以减少后续基础处理电路的计算量以及与后续基础处理电路的数据传输的量,同理,对于第一列的m个基础处理电路配置数据类型转换电路也具有计算量小和功耗低的优点。另外,依据该结构,主处理电路可以采用动态的数据发送策略,例如,主处理电路向第1列的m个基础处理电路广播数据,主处理电路向第1行的n个基础处理电路发送分发数据,此优点是,通过不同的数据输入口传递不同的数据到基础处理电路内,这样基础处理电路可以不区分该接收到的数据是何种数据,只需要确定该数据从哪个接收端口接收即可以获知其属于何种数据。
[0046] 所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述基础处理电路传输数据;上述连续的运算但不限于:累加运算、ALU运算、激活运算等等运算。
[0047] 所述多个基础处理电路,用于依据传输的数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。上述并行方式执行神经网络中的运算包括但不限于:内积运算、矩阵或向量乘法运算等等。
[0048] 主处理电路可以包括:数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的,如卷积运算,卷积运算的卷积输入数据需要发送给所有的基础处理电路,所有其为广播数据,卷积核需要有选择的发送给部分基础数据块,所以卷积核为分发数据。分发数据具体的选择发送给那个基础处理电路的方式可以由主处理电路依据负载以及其他分配方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本披露具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
[0049] 主处理电路(如图1d所示)可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
[0050] 每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
[0051] 可选的,对于第m行n个基础处理电路的累加器电路可以执行内积运算的累加运算,因为对于第m行基础处理电路来说,其能够接收到本列所有的基础处理电路的乘积结果,而将内积运算的累加运算通过第m行的n个基础处理电路执行内积运算的累加运算,这样能够对计算资源进行有效的分配,具有节省功耗的优点。此技术方案尤其对于m数量较大时更为适用。
[0052] 对于数据类型转换可以由主处理电路来分配执行的电路,具体的,可以通过显示或隐式的方式来分配执行的电路,对于显示方式,主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据类型转换,如基础处理电路未接收到特殊指示或指令时,确定不执行数据类型转换。又如,可以以暗示的方式来执行,例如,基础处理电路接收到数据类型为浮点类型的数据且确定需要执行内积运算时,将该数据类型转换成定点类型的数据。对于显示配置的方式,特殊指令或指示可以配置一个递减序列,该递减序列的每经过一个基础处理电路,数值减1,基础处理电路读取该递减序列的值,如该值大于零,则执行数据类型转换,如该值等于或小于零,则不执行数据类型转换。此设置是依据阵列分配的基础处理电路所配置的,例如对于第i列的m个基础处理电路来说,主处理电路需要前面5个基础处理电路执行数据类型转换,则主处理电路下发一个特殊指令,该特殊指令包含有递减序列,该递减序列的初始值可以为5,则每经过一个基础处理电路,递减序列的值即减1,到第5个基础处理电路时,该递减序列的值为1,到第6个基础处理电路时,该递减序列为0,此时第6个基础处理电路将不在执行该数据类型转换,此种方式可以使得主处理电路可以动态的配置数据类型转换的执行主体以及执行次数。
[0053] 所述主处理电路,用于获取输入数据块、权值数据块以及乘法指令,通过所述数据类型运算电路将所述输入数据块、所述权值数据块转换成定点类型的输入数据块、权值数据块,依据该乘法指令对定点类型的输入数据块划分成分发数据块,将定点类型的权值数据块划分成广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至和与所述主处理电路相连的基础处理电路中的至少一个基础处理电路,将所述广播数据块广播至和与所述主处理电路相连的基础处理电路;
[0054] 所述多个基础处理电路,用于依据定点类型的广播数据块和定点类型的基本数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。
[0055] 本披露一个实施例提供一种集成电路芯片装置,包括一个主处理电路(也可以称为主单元)和多个基础处理电路(也可以称为基础单元);实施例的结构如图1b所示;其中,虚线框中是所述神经网络运算装置的内部结构;灰色填充的箭头表示主处理电路和基础处理电路阵列之间的数据传输通路,空心箭头表示基础处理电路阵列中各个基础处理电路(相邻基础处理电路)之间的数据传输通路。其中,基础处理电路阵列的长宽长度可以不同,即m、n的取值可以不同,当然也可以相同,本披露并不限制上述取值的具体值。
[0056] 基础处理电路的电路结构如图1c所示;图中虚线框表示基础处理电路的边界,与虚线框交叉的粗箭头表示数据输入输出通道(指向虚线框内是输入通道,指出虚线框是输出通道);虚线框中的矩形框表示存储单元电路(寄存器和/或片上缓存),包括输入数据1,输入数据2,乘法或内积结果,累加数据;菱形框表示运算器电路,包括乘法或内积运算器,加法器。
[0057] 本实施例中,所述神经网络运算装置包括一个主处理电路和16个基础处理电路(16个基础处理电路仅仅为了举例说明,在实际应用中,可以采用其他的数值);
[0058] 本实施例中,基础处理电路有两个数据输入接口,两个数据输出接口;在本例的后续描述中,将横向的输入接口(图1b中指向本单元的横向箭头)称作输入0,竖向的输入接口(图1b中指向本单元的竖向箭头)称作输入1;将每一个横向的数据输出接口(图1b中从本单元指出的横向箭头)称作输出0,竖向的数据输出接口(图1b中从本单元指出的竖向箭头)称作输出1。
[0059] 每一个基础处理电路的数据输入接口和数据输出接口可以分别连接不同的单元,包括主处理电路与其他基础处理电路;
[0060] 本例中,基础处理电路0,4,8,12(编号见图1b)这四个基础处理电路的输入0与主处理电路的数据输出接口连接;
[0061] 本例中,基础处理电路0,1,2,3这四个基础处理电路的输入1与主处理电路的数据输出接口连接;
[0062] 本例中,基础处理电路12,13,14,15这四个基础处理电路的输出1与主处理电路的数据输入接口相连;
[0063] 本例中,基础处理电路输出接口与其他基础处理电路输入接口相连接的情况见图1b所示,不再一一列举;
[0064] 具体地,S单元的输出接口S1与P单元的输入接口P1相连接,表示P单元将可以从其P1接口接收到S单元发送到其S1接口的数据。
[0065] 本实施例包含一个主处理电路,主处理电路与外部装置相连接(即由输入接口也有输出接口),主处理电路的一部分数据输出接口与一部分基础处理电路的数据输入接口相连接;主处理电路的一部分数据输入接口与一部分基础处理电路的数据输出接口相连。
[0066] 集成电路芯片装置的使用方法
[0067] 本披露提供的使用方法中所涉及到的数据可以是任意数据类型的数据,例如,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据。
[0068] 该定点类型数据的一种结构示意图如图1e所示,如图1e所示,为一种定点类型数据的表达方法,对于计算系统,1个浮点数据的存储位数为32bit,而对于定点数据,尤其是采用如图1e所示的浮点类型的数据进行数据的表示,其1个定点数据的存储位数可以做到16Bit以下,所以对于此转换来说,可以极大的减少计算器之间的传输开销,另外,对于计算器来说,较少比特位的数据存储的空间也较小,即存储开销会较小,计算量也会减少,即计算开销会减少,所以能够减少计算开销以及存储的开销,但是对于数据类型的转换也是需要有部分的开销的,下面简称转换开销,对于计算量大,数据存储量大的数据,转换开销相对于后续的计算开销、存储开销以及传输开销来说几乎可以忽略不计,所以对于计算量大,数据存储量大的数据,本披露采用了将数据类型转换成定点类型的数据的技术方案,反之,对于计算量小,数据存储量小的数据,此时由于本身计算开销、存储开销以及传输开销就比较小,此时如果使用定点数据,由于定点数据的精度会略低于浮点数据,在计算量较小的前提下,需要保证计算的精度,所以这里将定点类型的数据转换成浮点数据,即通过增加较小的开销来提高计算的精度的目的。
[0069] 需要在基础处理电路中完成的运算,可以使用下述方法进行:
[0070] 主处理电路先对数据的类型进行转换然后再传输给基础处理电路运算(例如,主处理电路可以将浮点数转换成位宽更低的定点数再传输给基础处理电路,其优点是可以减少传输数据的位宽,减少传输的总比特数量,基础处理电路执行地位宽定点运算的效率也更高,功耗更低)
[0071] 基础处理电路可以收到数据后先进行数据类型转化然后再进行计算(例如,基础处理电路收到主处理电路传输过来的浮点数,然后转换为定点数进行运算,提高运算效率,降低功耗)。
[0072] 基础处理电路计算出结果之后可以先进行数据类型转换然后再传输给主处理电路(例如,基础处理电路计算出的浮点数运算结果可以先转换为低位宽的定点数然后再传输给主处理电路,其好处是降低了传输过程的数据位宽,效率更高,而且节约了功耗)。
[0073] 基础处理电路的使用方法(如图2a);
[0074] 主处理电路从装置外部接收待计算的输入数据;
[0075] 可选地,主处理电路利用本单元的各种运算电路,向量运算电路,内积运算器电路、累加器电路等对数据进行运算处理;
[0076] 主处理电路通过数据输出接口向基础处理电路阵列(把所有基础处理电路的集合称作基础处理电路阵列)发送数据(如图2b所示);
[0077] 此处的发送数据的方式可以是向一部分基础处理电路直接发送数据,即多次广播方式;
[0078] 此处发送数据的方式可以向不同的基础处理电路分别发送不同的数据,即分发方式;
[0079] 基础处理电路阵列对数据进行计算;
[0080] 基础处理电路接收到输入数据后进行运算;
[0081] 可选地,基础处理电路接收到数据后将该数据从本单元的数据输出接口传输出去;(传输给其他没有直接从主处理电路接收到数据的基础处理电路。)
[0082] 可选地,基础处理电路将运算结果从数据输出接口传输出去;(中间计算结果或者最终计算结果)
[0083] 主处理电路接收到从基础处理电路阵列返回的输出数据;
[0084] 可选地,主处理电路对从基础处理电路阵列接收到的数据继续进行处理(例如累加或激活操作);
[0085] 主处理电路处理完毕,将处理结果从数据输出接口传输给装置外部。
[0086] 使用所述电路装置完成矩阵乘向量运算;
[0087] (矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)
[0088] 下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2c所示。
[0089] 此方法用到所述神经网络计算装置的全部或者一部分基础处理电路,假设用到了K个基础处理电路;
[0090] 主处理电路将矩阵S的部分或全部行中的数据发送到k个基础处理电路中的每个基础处理电路;
[0091] 在一种可选的方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于每次发送一个数,可以为对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者对于每次发送一部分数,第1次发送第3行前两个数(即第1、2个数),第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
[0092] 在一种可选的方案中,主处理电路的控制电路将矩阵S中某几行的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第
4个数,第三次发送第3,4,5行每行第5和第6个数……。)
[0093] 主处理电路的控制电路将向量P中的数据逐次发送到第0个基础处理电路;
[0094] 第0个基础处理电路接收到向量P的数据之后,将该数据发送给与其相连接的下一个基础处理电路,即基础处理电路1;
[0095] 具体的,有些基础处理电路不能直接从主处理电路处获得计算所需的所有的数据,例如,图2d中的基础处理电路1,只有一个数据输入接口与主处理电路相连,所以只能直接从主处理电路获得矩阵S的数据,而向量P的数据就需要依靠基础处理电路0输出给基础处理电路1,同理,基础处理电路1也要收到数据后也要继续把向量P的数据输出给基础处理电路2。
[0096] 每一个基础处理电路对接收到的数据进行运算,该运算包括但不限于:内积运算、乘法运算、加法运算等等;
[0097] 在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
[0098] 在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
[0099] 基础处理电路计算出结果后,将结果从数据输出接口传输出去(即传输给与其连接的其他基础处理电路);
[0100] 在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
[0101] 基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
[0102] 主处理电路接收到各个基础处理电路内积运算的结果,将该结果处理得到最终结果(该处理可以为累加运算或激活运算等等)。
[0103] 采用上述计算装置实现矩阵乘向量方法的实施例:
[0104] 在一种可选方案中,方法所用到的多个基础处理电路按照如下图2d或者图2e所示的方式排列;
[0105] 如图2c所示,主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;主处理单元的控制电路将矩阵S的M行数据分成K组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Ai)的运算;
[0106] 此处对M行数据进行分组的方法是任意不会重复分配的分组方式;
[0107] 在一种可选方案中,采用如下分配方式:将第j行分给第j%K(%为取余数运算)个基础处理电路;
[0108] 在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
[0109] 主处理电路的控制电路每次将矩阵S中部分或全部行中的数据依次发送给对应的基础处理电路;
[0110] 在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的一行数据中的一个或多个数据;
[0111] 在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的部分或全部行中的每行的一个或多个数据;
[0112] 主处理电路的控制电路将向量P中的数据依次向第1个基础处理电路发送;
[0113] 在一种可选方案中,主处理电路的的控制电路每次可以发送向量P中的一个或多个数据;
[0114] 第i个基础处理电路接收到向量P的数据之后发送给与其相连的第i+1个基础处理电路;
[0115] 每个基础处理电路接收到来自矩阵S中某一行或者某几行中的一个或多个数据以及来自向量P的一个或多个数据后,进行运算(包括但不限于乘法或加法);
[0116] 在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
[0117] 在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
[0118] 在一种可选方案中,基础处理电路接收到的数据也可以是中间结果,保存在寄存器和或片上缓存上;
[0119] 基础处理电路将本地的计算结果传输给与其相连接的下一个基础处理电路或者主处理电路;
[0120] 在一种可选方案中,对应于图2d的结构,只有每列的最后一个基础处理电路的输出接口与主处理电路相连接的,这种情况下,只有最后一个基础处理电路可以直接将本地的计算结果传输给主处理电路,其他基础处理电路的计算结果都要传递给自己的下一个基础处理电路,下一个基础处理电路传递给下下个基础处理电路直至全部传输给最后一个基础处理电路,最后一个基础处理电路将本地的计算结果以及接收到的本列的其他基础处理电路的结果执行累加计算得到中间结果,将中间结果发送至主处理电路;当然还可以为最后一个基础处理电路可以将本列的其他基础电路的结果以及本地的处理结果直接发送给主处理电路。
[0121] 在一种可选方案中,对应于图2e的结构,每一个基础处理电路都有与主处理电路相连接的输出接口,这种情况下,每一个基础处理电路都直接将本地的计算结果传输给主处理电路;
[0122] 基础处理电路接收到其他基础处理电路传递过来的计算结果之后,传输给与其相连接的下一个基础处理电路或者主处理电路。
[0123] 主处理电路接收到M个内积运算的结果,作为矩阵乘向量的运算结果。
[0124] 使用所述电路装置完成矩阵乘矩阵运算;
[0125] 下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2f所示)
[0126] 本方法使用所述装置如图1b所示的实施例进行说明;
[0127] 主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;
[0128] 主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中最上方的灰色填充的竖向数据通路);
[0129] 在一种可选方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)[0130] 在一种可选方案中,主处理电路的控制电路将矩阵S中某几行的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第
3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)
[0131] 主处理电路的控制电路将矩阵P中的部分或全部列中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中基础处理电路阵列左侧的灰色填充的横向数据通路);
[0132] 在一种可选方案中,主处理电路的控制电路将矩阵P中某列的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)[0133] 在一种可选方案中,主处理电路的控制电路将矩阵P中某几列的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第
3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
[0134] 基础处理电路接收到矩阵S的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
[0135] 每一个基础处理电路对接收到的数据进行运算;
[0136] 在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
[0137] 在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
[0138] 基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
[0139] 在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
[0140] 具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
[0141] 基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
[0142] 向着能够直接向主处理电路输出的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
[0143] 主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
[0144] “矩阵乘矩阵”方法的实施例:
[0145] 方法用到按照如图1b所示方式排列的基础处理电路阵列,假设有h行,w列;
[0146] 主处理电路的数据转换运算电路将矩阵S和矩阵P转换成定点类型的数据;
[0147] 主处理电路的控制电路将矩阵S的h行数据分成h组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Hi)的运算;
[0148] 此处对h行数据进行分组的方法是任意不会重复分配的分组方式;
[0149] 在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%h个基础处理电路;
[0150] 在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
[0151] 主处理电路的控制电路将矩阵P的W列数据分成w组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Wi)的运算;
[0152] 此处对W列数据进行分组的方法是任意不会重复分配的分组方式;
[0153] 在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%w个基础处理电路;
[0154] 在一种可选方案中,对于不能平均分组的情况也可以先对一部分列平均分配,对于剩下的列以任意方式分配。
[0155] 主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到基础处理电路阵列中每行的第一个基础处理电路;
[0156] 在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的一行数据中的一个或多个数据;
[0157] 在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的部分或全部行中的每行的一个或多个数据;
[0158] 主处理电路的控制电路将矩阵P的部分或全部列中的数据发送到基础处理电路阵列中每列的第一个基础处理电路;
[0159] 在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Wi中的一列数据中的一个或多个数据;
[0160] 在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Ni中的部分或全部列中的每列的一个或多个数据;
[0161] 基础处理电路接收到矩阵S的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
[0162] 每一个基础处理电路对接收到的数据进行运算;
[0163] 在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
[0164] 在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
[0165] 基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
[0166] 在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
[0167] 具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
[0168] 基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
[0169] 向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
[0170] 主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
[0171] 以上描述中使用的“横向”,“竖向”等词语只是为了表述图1b所示的例子,实际使用只需要区分出每个单元的“横向”“竖向”接口代表两个不同的接口即可。
[0172] 使用所述电路装置完成全连接运算:
[0173] 如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用矩阵乘以向量方法执行运算;
[0174] 如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的矩阵乘以矩阵执行运算;
[0175] 使用所述电路装置完成激活函数运算的方法:
[0176] 利用主处理电路的激活电路,输入一向量,计算出该向量的激活向量;
[0177] 在一种可选方案中,主处理电路的激活电路将输入向量中的每一个值通过一个激活函数(激活函数的输入是一个数值,输出也是一个数值),计算出一个数值输出到输出向量的对应位置;
[0178] 在一种可选方案中,激活函数可以是:y=max(m,x),其中x是输入数值,y是输出数值,m是一个常数;
[0179] 在一种可选方案中,激活函数可以是:y=tanh(x),其中x是输入数值,y是输出数值;
[0180] 在一种可选方案中,激活函数可以是:y=sigmoid(x),其中x是输入数值,y是输出数值;
[0181] 在一种可选方案中,激活函数可以是一个分段线性函数;
[0182] 在一种可选方案中,激活函数可以是任意输入一个数,输出一个数的函数。
[0183] 在一种可选方案中,输入向量的来源有(包括但不限于):
[0184] 所述装置的外部数据来源;
[0185] 在一种可选方案中,输入数据来自所述装置进行矩阵乘向量的运算结果;
[0186] 在一种可选方案中,输入数据来自所述装置进行矩阵乘矩阵的运算结果;
[0187] 所述装置的主处理电路计算结果;
[0188] 在一种可选方案中,输入数据来自所述装置主处理电路实现加偏置之后的计算结果。
[0189] 使用所述装置实现BLAS(Basic Linear Algebra Subprograms)的方法;
[0190] GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,A和B为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的A和B的宽高;
[0191] 使用所述装置实现GEMM计算的步骤为:
[0192] 主处理电路在进行OP操作之前可以将输入矩阵S和矩阵P进行数据类型的转换;
[0193] 主处理电路的转换电路对输入矩阵S和矩阵P进行各自相应的op操作;
[0194] 在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的向量运算功能或者数据重排列功能(前面提到了主处理电路具有数据重排列的电路),实现矩阵转置操作,当然在实际应用中,上述OP也可以直接通过转换电路来实现,例如矩阵转置操作时,直接通过矩阵转置电路来实现OP操作;
[0195] 在一种可选方案中,某个矩阵的op可以为空,OP操作不进行;
[0196] 利用矩阵乘矩阵的计算方法完成op(S)与op(P)之间的矩阵乘法计算;
[0197] 利用主处理电路的算术逻辑电路对op(S)*op(P)的结果中的每一个值进行乘以alpha的操作;
[0198] 在一种可选方案中,alpha为1的情况下乘以alpha操作不进行;
[0199] 利用主处理电路的算术逻辑电路实现beta*C的运算;
[0200] 在一种可选方案中,beta为1的情况下,不进行乘以beta操作;
[0201] 利用主处理电路的算术逻辑电路,实现矩阵alpha*op(S)*op(P)和beta*C之间对应位置相加的步骤;
[0202] 在一种可选方案中,beta为0的情况下,不进行相加操作;
[0203] GEMV计算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作;
[0204] 使用所述装置实现GEMV计算的步骤为:
[0205] 主处理电路在进行OP操作之前可以将输入矩阵S和矩阵P进行数据类型的转换;
[0206] 主处理电路的转换电路对输入矩阵S进行相应的op操作;
[0207] 在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的矩阵转置电路实现矩阵转置操作;
[0208] 在一种可选方案中,某个矩阵的op可以为空,op操作不进行;
[0209] 用矩阵乘向量的计算方法完成矩阵op(S)与向量P之间的矩阵-向量乘法计算;
[0210] 利用主处理电路的算术逻辑电路对op(S)*P的结果中的每一个值进行乘以alpha的操作;
[0211] 在一种可选方案中,alpha为1的情况下乘以alpha操作不进行;
[0212] 利用主处理电路的算术逻辑电路,实现beta*C的运算;
[0213] 在一种可选方案中,beta为1的情况下,不进行乘以beta操作;
[0214] 利用主处理电路的算术逻辑电路,实现矩阵alpha*op(S)*P和beta*C之间对应位置相加的步骤;
[0215] 在一种可选方案中,beta为0的情况下,不进行相加操作;
[0216] 实现数据类型转换
[0217] 利用主处理电路的数据类型转换运算电路实现将数据类型的转换;
[0218] 在一种可选方案中,数据类型转化的形式包括但不限于:浮点数转定点数和定点数转浮点数等;
[0219] 本披露还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置(即通用处理装置)。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。如图3为组合处理装置的示意图。
[0220] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
[0221] 通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
[0222] 如图4所示,可选的,该结构还包括存储装置,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
[0223] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0224] 本披露实施例提供了一种神经网络处理器板卡,可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personal computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0225] 请参照图5a,图5a为本披露实施例提供的一种神经网络处理器板卡的结构示意图。如图5a所示,上述神经网络处理器板卡10包括神经网络芯片封装结构11、第一电气及非电气连接装置12和第一基板(substrate)13。
[0226] 本披露对于神经网络芯片封装结构11的具体结构不作限定,可选的,如图5b所示,上述神经网络芯片封装结构11包括:神经网络芯片111、第二电气及非电气连接装置112、第二基板113。
[0227] 本披露所涉及的神经网络芯片111的具体形式不作限定,上述的神经网络芯片111包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
[0228] 本披露对于神经网络芯片111的具体结构不作限定,可选的,请参照图1a或图1b所示的装置。
[0229] 本披露对于第一基板13和第二基板113的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
[0230] 本披露所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。
[0231] 对于上述具体的第二电气及非电气连接装置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)等封装方式。
[0232] 倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
[0233] 球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
[0234] 可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片111和第二基板113进行封装,具体的神经网络芯片封装结构的示意图可参照图6。如图6所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
[0235] 其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。
[0236] 引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡10上的第一基板13)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本披露也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
[0237] 可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
[0238] 其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
[0239] 可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。
[0240] 举例来说,如图6a所示,神经网络芯片封装结构11包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。
[0241] 可选的,上述神经网络芯片封装结构11还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
[0242] 其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
[0243] 本披露对于第一电气及非电气装置12的具体形式也不作限定,可参照第二电气及非电气装置112的描述,即通过焊接的方式将神经网络芯片封装结构11进行封装,也可以采用连接线连接或插拔方式连接第二基板113和第一基板13的方式,便于后续更换第一基板13或神经网络芯片封装结构11。
[0244] 可选的,第一基板13包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
[0245] 第一基板13上还可包括快速外部设备互连总线(Peripheral  Component Interconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factor Pluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
[0246] 将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
[0247] 在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。
[0248] 电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0249] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0250] 以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。