神经网络运算模块和方法与流程

文档序号:17938533发布日期:2019-06-18 22:50阅读:206来源:国知局
神经网络运算模块和方法与流程

本发明涉及神经网络领域,尤其涉及一种神经网络运算模块和方法。



背景技术:

人工神经网络(artificialneuralnetworks,anns)简称为神经网络(neuralnetworks,nns)。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系,从而达到处理信息的目的。

神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量。都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。

现有技术中,gpu在执行图形图像运算以及科学计算时会涉及稀疏神经网络的计算,但是由于gpu是专门用来执行图形图像运算以及科学计算的设备,没有对稀疏的卷积神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行稀疏的人工神经网络运算,带来了大量的额外开销。另外gpu只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。



技术实现要素:

本发明实施例提供一种神经网络运算模块及方法,通过对神经网络数据进行处理,减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。

第一方面,本发明实施例提供了一种神经网络运算模块,包括:

映射单元,用于接收到输入数据的连接关系数据后,根据所述输入数据的连接关系数据获取处理后的输入数据,所述输入数据包括输入神经元和权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值;具体包括:所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以列表的列表lil的形式表示,以所述lil的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的输入数据的列索引和绝对值大于预设阈值的输入数据的值,所述映射单元具体用于:

根据所述lil中的每个记录获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以坐标列表coo的形式表示,以所述coo形式表示的连接关系数据由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行号、列号和该绝对值大于预设阈值的输入数据的值,所述映射单元具体用于:

根据所述坐标列表中的每个元组获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏行csr的形式表示,以所述csr的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第二数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列索引,所述第三数组用于累加存储所述输入数据矩阵中每一行绝对值大于预设阈值的输入数据的个数,并且所述第三数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述映射单元具体用于:

根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏列csc的形式表示,以所述csc的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第五数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行索引,所述第六数组用于累加存储所述输入数据矩阵中每一列绝对值大于预设阈值的输入数据的个数,并且所述第六数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述映射单元具体用于:

根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以ell的形式表示,以所述ell的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的输入数据的值,所述映射单元具体用于:

根据所述第一矩阵和所述第二矩阵获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以混合hyb的形式表示,以所述hyb形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述输入数据矩阵中的任一行相对于其他行多出来输入数据的行号,列号和该输入数据的值,所述映射单元具体用于:

根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中;

运算单元,用于根据微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到运算结果。

在一种可行的实施例中,所述神经网络运算模块还包括:

与所述映射单元相连接的存储单元,与所述存储单元相连接的直接存储访问单元、与所述直接存储访问单元相连接的指令缓存单元、第一输入缓存单元、第二输入缓存单元和输出缓存单元;与所述指令缓存单元相连接的指令控制单元;所述指令缓存单元、所述第一输入缓存单元、所述第二输入缓存单元和所述输出缓存单元均与所述运算单元相连接;

所述存储单元,用于存储所述处理后的输入神经元和所述处理后的权值、神经网络运算指令和所述运算单元进行人工神经网络运算的运算结果;

所述直接存储访问单元,用于在所述存储单元与所述指令缓存单元、所述映射单元、所述第一输入缓存单元、所述第二输入缓存单元和所述输出缓存单元之间进行数据交换;

所述指令缓存单元,用于通过所述直接存储访问单元从所述存储单元获取所述神经网络运算指令,并缓存所述神经网络运算指令;

所述第一输入缓存单元,用于缓存所述处理后的输入神经元或所述处理后的权值;

所述第二输入缓存单元,用于缓存所述处理后的输入神经元或所述处理后的权值,且所述第二输入缓存单元缓存的数据与所述第一输入缓存单元缓存的数据不一致;

指令控制单元,用于从所述指令缓存单元获取所述神经网络运算指令后,将所述神经网络运算指令译码成所述运算单元执行的微指令;

所述输出缓存单元,用于缓存所述运算结果。

在一种可行的实施例中,所述神经网络运算模块还包括:

与所述映射单元相连接的直接存储访问单元、第一输入缓存单元和第二输入缓存单元;与所述直接存储访问单元相连接的存储单元、指令缓存单元和输出缓存单元;与所述指令缓存单元相连接的指令控制单元;所述指令控制单元、所述第一输入缓存单元、所述第二输入缓存单元和输出缓存单元均与所述运算单元相连接;

所述存储单元,用于存储输入数据的连接关系数据、神经网络运算指令和所述运算单元进行人工神经网络运算的运算结果;

所述直接存储访问单元,用于在所述存储单元与指令缓存单元、第一输入缓存单元、第二输入缓存单元和指令缓存单元之间进行数据交换;

所述指令缓存单元,用于从通过所述直接存储访问单元从所述存储单元中获取所述神经网络运算指令,并缓存所述神经网络运算指令;

所述第一输入缓存单元,用于缓存所述处理后的输入神经元或所述处理后的权值;

所述第二输入缓存单元,用于缓存所述处理后的输入神经元或所述处理后的权值,且所述第二输入缓存单元缓存的数据与所述第一输入缓存单元缓存的数据不一致;

所述指令控制单元,用于从所述指令缓存单元获取所述神经网络运算指令,并将所述神经网络运算指令译码成所述运算单元执行的微指令;

所述输出缓存单元,用于缓存所述运算结果。

第二方面,本发明实施例提供了一种神经网络运算方法,包括:

根据输入数据的连接关系数据获取处理后的输入数据,所述输入数据包括输入神经元和权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值;具体包括:

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以列表的列表lil的形式表示,以所述lil的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的输入数据的列索引和绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述lil中的每个记录获取所述处理后的输入数据,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以列表的列表lil的形式表示,以所述lil的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的输入数据的列索引和绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述lil中的每个记录获取所述处理后的输入数据,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以坐标列表coo的形式表示,以所述coo形式表示的连接关系数据由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行号、列号和该绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述坐标列表中的每个元组获取所述处理后的输入数据,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏行csr的形式表示,以所述csr的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第二数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列索引,所述第三数组用于累加存储所述输入数据矩阵中每一行绝对值大于预设阈值的输入数据的个数,并且所述第三数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的输入数据,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏列csc的形式表示,以所述csc的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第五数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行索引,所述第六数组用于累加存储所述输入数据矩阵中每一列绝对值大于预设阈值的输入数据的个数,并且所述第六数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的输入数据,或者;

所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以ell的形式表示,以所述ell的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以混合hyb的形式表示,以所述hyb形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述输入数据矩阵中的任一行相对于其他行多出来输入数据的行号,列号和该输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的输入数据处理后的输入数据,包括:

根据所述第一矩阵和所述第二矩阵获取所述处理后的输入数据;

获取神经网络运算指令,将所述神经网络运算指令译码成微指令;

根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到运算结果。

第三方面,本发明实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个第一方面所述的神经网络运算模块。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过i/o接口传递给其他处理装置;

当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行链接并传输数据;

其中,多个所述神经网络运算模块通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算模块共享内存或者拥有各自的内存;多个所述神经网络运算模块的互联方式是任意互联拓扑。

第四方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的神经网络处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。

第五方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的神经网络运算模块、上述第三方面所述的神经网络运算装置或者上述第四方面所述的组合处理装置。

第六方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;

第七方面,本发明实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。

第八方面,本发明实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第七方面所述的板卡。

可以看出,在本发明实施例的方案中,映射单元接收到输入神经元的连接关系数据和权值的连接关系数据后,根据输入神经元的连接关系数据和权值的连接关系数据分别获取处理后的输入神经元和处理后的权值,运算单元获取处理后的输入神经元和处理后的权值后,根据指令控制单元对神经网络运算指令进行译码得到的微指令对处理后的输入神经元和处理后的权值进行人工神经网络运算。与现有技术相比,采用本发明实施例减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a为本发明实施例提供的一种稀疏神经网络结构示意图;

图1b为本发明实施例提供的一种神经网络运算模块的结构示意图;

图2为本发明实施例提供的一种神经网络示意图;

图3为本发明实施例提供的另一种神经网络示意图;

图4为本发明实施例提供的另一种神经网络示意图;

图5为本发明实施例提供的另一种神经网络示意图;

图6为本发明实施例提供的另一种神经网络运算模块的结构示意图;

图7为本发明实施例提供的另一种神经网络运算模块的结构示意图;

图8a为本发明实施例提供的一种组合处理装置的结构示意图;

图8b为本发明实施例提供的另一种组合处理装置的结构示意图;

图9为本发明实施例提供的一种板卡的结构示意图;

图10为本发明实施例提供的一种神经网络芯片封装结构的示意图;

图11为本发明实施例提供的另一种神经网络芯片封装结构的示意图;

图12为本发明实施例提供的另一种神经网络芯片封装结构的示意图;

图13为本发明实施例提供的一种神经网络运算方法的流程示意图。

具体实施方式

以下分别进行详细说明。

本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参见图1、图1为本发明实施例提供的一种神经网络运算模块的结构示意图。如图1所示,该神经网络运算模块包括:

映射单元101,用于接收到输入数据的连接关系数据后,根据所述输入数据的连接关系数据获取处理后的输入数据,所述输入数据包括输入神经元和权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以列表的列表lil的形式表示,以所述lil的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的输入数据的列索引和绝对值大于预设阈值的输入数据的值,所述映射单元101具体用于:

根据所述lil中的每个记录获取所述处理后的输入数据。

具体地,以lil的形式表示具体是将上述输入数据矩阵的每一行中绝对值大于预设阈值的输入数据的信息存储在一个列表中,该列表中的每个记录包括绝对值大于预设阈值的输入数据的列索引及该绝对值大于预设阈值的输入数据的值。

举例说明,假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为则该权值的连接关系数据用lil的形式表示为((1,x1),(2,x4),((1,x2),(2,x5)),(1,x3))。该权值的连接关系数据中有4个列表,表示该权值矩阵对应的输入神经元的数量为4个,分别为i1,i2,i3和i4。上述lil中列表中最多有两个记录,由此可知该权值矩阵对应的输出神经元个数为2,分别为o1和o2。上述第一个列表中的记录(1,x1)表示输入神经元i1与输出神经元o1之间的权值为x1,上述第二个列表中的记录(2,x4)表示输入神经元i2与输出神经元o2之间的权值为x4,上述第三个列表中的记录(1,x2)表示输入神经元i3与输出神经元o1之间的权值为x2,记录(2,x5)表示输入神经元i3与输出神经元o1之间的权值为x5,上述第四个列表中的记录(1,x3)表示输入神经元i4与输出神经元o1之间的权值为x3。因此由上述lil可得到如图2所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

上述以lil的形式表示上述输入数据(输入神经元或权值)的连接关系数据的优点在于简单,可快速构造矩阵,方便修改(按照列索引的大小顺序存储记录时),支持灵活的切片操作。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以坐标列表(coordinatelist,coo)的形式表示,以所述coo形式表示的连接关系数据由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行号、列号和该绝对值大于预设阈值的输入数据的值,所述映射单元101具体用于:

根据所述坐标列表中的每个元组获取所述处理后的输入数据。

具体地,该坐标列表为由至少一个元组构成的列表,该元组包括绝对值大于预设阈值的输入数据在上述输入数据矩阵中的行号,列号和该绝对值大于预设阈值的输入数据的值组成的。当上述输入数据为权值时,上述坐标列表中的每个元组表示序号为行号的输入神经元与序号为列号的输出神经元之间的权值为该元组对应的非零权值。并且坐标列表的元组中的最大行号值为权值矩阵对应的输入神经元的个数,最大列号值为权值矩阵对应的输出神经元的个数。

换句话说,上述坐标列表中每个元组表示绝对值大于预设阈值的输入数据在输入数据矩阵的位置信息。

举例说明,假设假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为则该权值矩阵的连接关系数据以coo的形式表示为(1,1,x1),(2,2,x4),(3,1,x2),(3,2,x5),(4,1,x3),该coo的元组中最大行号值为4和最大的列号值为2,该权值矩阵对应的输入神经元个数为4和输出神经元的个数为2,分别为输入神经元i1,i2,i3、i4和输出神经元o1,o2,由元组(1,1,x1)可知输入神经元i1与输出神经元o1之间的权值为x1,由元组(2,2,x4)可知输入神经元i2与输出神经元o2之间的权值为x4,由元组(3,1,x2)可知输入神经元i3与输出神经元o1之间的权值为x2,由元组(3,2,x5)可知输入神经元i3与输出神经元o2之间的权值为x5,由元组(4,1,x3)可知输入神经元i4与输出神经元o1之间的权值为x3。由上述坐标列表可得到如图2所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

上述以coo的形式表示上述输入数据的连接关系数据的优点在于简单,可以快速构建矩阵,方便修改。这种方法在矩阵特别稀疏的时候最适用,不管一个矩阵有多么巨大,若它只有一个非零元素,使用coo只需要3个数字,配合原矩阵的大小即可重建原矩阵,支持快速地与其他格式互相转化。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏行(compressedsparserow,csr)的形式表示,以所述csr的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第二数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列索引,所述第三数组用于累加存储所述输入数据矩阵中每一行绝对值大于预设阈值的输入数据的个数,并且所述第三数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述映射单元101具体用于:

根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的输入数据。

具体地,采用csr的形式是把上述输入数据矩阵的行的信息压缩存储了,只显式保留每行第一个绝对值大于预设阈值的输入数据的位置。将上述输入数据矩阵通过三个数组表示:

上述第一数组存储上述输入数据矩阵中的所有绝对值大于预设阈值的输入数据的值,其顺序按照从左至右、从上到下的行遍历方式排列元素,该第一数组记作a。该第一数组的长度即输入数据矩阵中绝对值大于预设阈值的输入数据的个数;

上述第二数组存储上述第一数组a中的每个元素分别在输入数据矩阵中的列索引(即列号),因而第二数组的长度与数组a的长度相同,记此数组为ja。

上述第三数组记作ia,该数组ia的长度为输入数据矩阵的行数加1。该数组ia中的元素累加存储上述输入数据矩阵中每一行绝对值大于预设阈值的输入数据的个数,具体可通过如下递归方法获取,并在该数组ia中的最后一个元素中保存整个输入数据矩阵中绝对值大于预设阈值的输入数据的个数

若上述三个数组的序号与输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组ia:

ia[0]=0

ia[i]=ia[i-1]+输入数据矩阵中第i-1行的绝对值大于预设阈值的输入数据个数(i>0)

举例说明,假设假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为由于上述第一数组a存储权值矩阵的所有非零权值的值,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该第一数组a=[5,8,3,6];第二数组ja存储上述数组a中每个元素分别在上述权值矩阵中的列索引(即列号),则该数组ja=[0,1,2,1]。在第三数组ia中累加存储上述权值矩阵中每一行的非零权值的个数,根据上述递归方式确定该数组ia=[0,0,2,3,4]。

由上述第一数组a可知上述权值矩阵包括4个非零权值,分别为5,3,8,6。由上述第二数组ja可知上述4个非零权值在上述权值矩阵中的列索引,即权值5在上述权值矩阵中的第一列,权值8在上述权值矩阵中的第二列,权值3在上述权值矩阵中的第三列,权值6在上述权值矩阵中的第二列,由上述第三数组ia及其定义可知上述权值矩阵的第一行没有非零权值,第二行有2个非零权值,第三行和第四行各有1个非零权值;由上述信息可得到上述权值矩阵以坐标列表的形式表示为:(1,0,5),(1,1,8),(2,2,3),(3,1,6),进一步可确定上述权值矩阵。由该权值矩阵的形式可知,该矩阵的第一行和第四列的元素的值均为0,因此可确定该矩阵对应的输入神经元为3个,分别为i2,i3和i4;该权值矩阵对应的输出神经元分别为o1,o2和o3。最终可确定上述输入神经元i2与输出神经元o1之间的权值为5,上述输入神经元i2与输出神经元o2之间的权值为8,上述输入神经元i3与输出神经元o3之间的权值为3,上述输入神经元i4与输出神经元o2之间的权值为6,最终可得到如图3所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值5,其对应输入神经元i2;对于上述输出神经元o2,上述映射单元101输出权值8和6,其分别对应输入神经元i2和i4;对于上述输出神经元o3,上述映射单元101输出权值3,其对应输入神经元i3。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

上述以csr的形式表示上述输入数据的连接关系数据与coo的形式表示相比压缩了行索引的信息,并且采用csr形式在存储稀疏矩阵时非零元素平均使用的字节数最为稳定。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏列(compressedsparsecolumn,csc)的形式表示,以所述csc的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第五数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行索引,所述第六数组用于累加存储所述输入数据矩阵中每一列绝对值大于预设阈值的输入数据的个数,并且所述第六数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述映射单元101具体用于:

根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的输入数据,并将所述处理后的输入数据存储到所述第一输入缓存单元中。

具体地,采用csc的形式是把上述输入数据矩阵的列的信息压缩存储了,只显式保留每列第一个绝对值大于预设阈值的输入数据的位置。将上述输入数据矩阵用三个数组表示:

上述第四数组存储上述输入数据矩阵中的所有绝对值大于预设阈值的输入数据的值,其顺序按照从上至下、从左到右的列遍历方式排列元素,该第四数组记作a’,其长度即输入数据矩阵中绝对值大于预设阈值的输入数据的个数;

上述第五数组存储上述第一数组a’中的每个元素分别在输入数据矩阵中的行索引(即行号),因而其长度与第一数组a’相同,记此数组为ja’。

上述第六数组记作ia’,该数组的长度为上述输入数据矩阵的列数加1。该数组ia’中的元素累加存储上述输入数据矩阵中每一列绝对值大于预设阈值的输入数据的个数,具体可通过如下递归方法获取,并且在该数组ia’累加整个输入数据矩阵中每一列中绝对值大于预设阈值的输入数据的个数。

若上述三个数组的序号与输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组ia’:

ia’[0]=0

ia’[j]=ia’[j-1]+输入数据矩阵中第j-1列的绝对值大于预设阈值的输入数据个数(j>0)

举例说明,假设假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为由于上述第四数组a’存储权值矩阵的所有非零权值的数,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该数组a’=[4,6,1,3,5,2,7,8];上述第五数组ja’存储上述数组a’中每个元素分别在上述权值矩阵中的行索引(即行号),则该数组ja’=[0,3,1,3,2,0,2,3];根据上述递归方式确定数组ia’=[0,2,4,5,8]。

由上述数组a’可知上述权值矩阵包括8个非零权值,分别为4,6,1,3,5,2,7,8。由上述数组ja’可知上述8个非零权值在上述权值矩阵中的行索引,即权值4在上述权值矩阵中的第一列,权值6在上述权值矩阵中的第4列,权值1在上述权值矩阵中的第二列,权值3在上述权值矩阵中的第四列,权值5在上述权值矩阵中的第三列,权值2在上述权值矩阵中的第一列,权值7在上述权值矩阵中的第三列,权值8在上述权值矩阵中的第四列,由上述数组ia’及其定义可知上述权值矩阵的第一列和第二列各有2个非零权值,第三列有1个非零权值,第四行有3个非零权值;由上述信息可得到上述权值矩阵以坐标列表的形式表示为:(0,0,4),(3,0,6),(1,1,1),(3,1,3),(2,2,5),(0,3,2),(2,3,7),(3,3,8),进一步可确定上述权值矩阵。由该权值矩阵的形式可知,该矩阵的每一行和每一列均有非零权值,因此可确定该矩阵对应的输入神经元为4个,分别为i1,i2,i3和i4;该权值矩阵对应的输出神经元分别为o1,o2,o3和o4。最终可确定上述输入神经元i1与输出神经元o1之间的权值为4,上述输入神经元i1与输出神经元o4之间的权值为2,上述输入神经元i2与输出神经元o2之间的权值为1,上述输入神经元i3与输出神经元o3之间的权值为5,上述输入神经元i3与输出神经元o4之间的权值为7,上述输入神经元i4与输出神经元o1之间的权值为6,上述输入神经元i4与输出神经元o2之间的权值为3,上述输入神经元i4与输出神经元o4之间的权值为8,最终可得到如图4所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值5和4,其分别对应输入神经元i1和i4;对于上述输出神经元o2,上述映射单元101输出权值1和3,其分别对应输入神经元i2和i4;对于上述输出神经元o3,上述映射单元101输出权值5,其对应输入神经元i3;对于上述输出神经元o3,上述映射单元101输出权值2,7和8,其对应输入神经元i1,i3和i4。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

上述以csc的形式表示上述输入数据的连接关系数据与coo的形式表示相比压缩了列索引的信息,对于算术运算、列切片、矩阵与向量的点乘都很有效。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以ell的形式表示,以所述ell的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的输入数据的值,所述映射单元101具体用于:

根据所述第一矩阵和所述第二矩阵获取所述处理后的输入数据。

具体地,该方式采用两个与输入数据矩阵的行数相同矩阵存储该权值矩阵中绝对值大于预设阈值的输入数据的信息。上述第一矩阵存储上述输入数据矩阵中非零权值的列号,上述第二矩阵存储上述输入数据矩阵中绝对值大于预设阈值的输入数据的值,行号就不存了,用自身所在的行来表示;这两个矩阵每一行都是从头开始放,如果没有元素了就用个结束标志(比如*)结束。

举例说明,假设假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为则该权值矩阵的连接关系数据用ell的形式表示为:

第一矩阵为:第二矩阵为

由上述第一矩阵和第二矩阵的行数可知,上述权值矩阵对应的输入神经元的个数为4,分别为输入神经元i1,i2,i3和i4;由上述第一矩阵和第二矩阵的列数可知,上述权值矩阵对应的输出神经元的个数为2,分别为输出神经元o1和o2。根据上述第一矩阵和第二矩阵可知,上述输入神经元i1与输出神经元o1之间的权值为x1,输入神经元i2与输出神经元o2之间的权值为x4,输入神经元i3与输出神经元o1之间的权值为x2,输入神经元i3与输出神经元o2之间的权值为x5,输入神经元i4与输出神经元o1之间的权值为x3。由上述ell表示的连接关系数据可得到如图2所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值x1,x2和x3,该权值x1,x2和x3分别对应输入神经元i1,i3和i4;对于上述输出神经元o2,上述映射单元101输出权值x4和x5,该权值x4和x5分别对应输入神经元i2和i3。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

对于通过ell方式表示的连接关系数据,当输入数据矩阵的任一行的绝对值大于预设阈值的输入数据多余其他行时,在第一矩阵中的结尾处会存在多个结束标志,浪费缓存资源。为了解决该问题,可采用以下形式表示上述连接关系数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以混合(hybird,hyb)的形式表示,以所述hyb形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述输入数据矩阵中的任一行相对于其他行多出来输入数据的行号,列号和该输入数据的值,所述映射单元101具体用于:

根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的输入数据。

具体地,该方式可以看成上述ell和coo方式的组合。采用coo的方式存储输入数据矩阵中某一行相对于其他行多出来的绝对值大于预设阈值的输入数据。采用ell的方式存储权值矩阵中每一行最大相同数量的绝对值大于预设阈值的输入数据。

举例说明,假设假设上述输入数据为权值,输入数据的矩阵为权值矩阵,该权值矩阵为:则上述ell中的第三矩阵为第四矩阵为上述coo形式的元组为(2,3,9)。由上述第三矩阵和第四矩阵的行数可知,上述权值矩阵对应的输入神经元的个数为4,分别为

输入神经元i1,i2,i3和i4;根据上述坐标列表中的列号(3)可知上述权值矩阵对应的输出神经元的个数为4,分别为输出神经元o1,o2,o3和o4。由上述第一矩阵,第二矩阵和坐标列表可知:输入神经元i1与输出神经元o1之间的权值为1,输入神经元i1与输出神经元o2之间的权值为7,输入神经元i2与输出神经元o2之间的权值为2,输入神经元i2与输出神经元o3之间的权值为8,输入神经元i3与输出神经元o1之间的权值为5,输入神经元i3与输出神经元o3之间的权值为3,输入神经元i3与输出神经元o4之间的权值为9,输入神经元i4与输出神经元o2之间的权值为6,输入神经元i4与输出神经元o4之间的权值为4,可以得到如图5所示的神经网络结构。

对于上述输出神经元o1,上述映射单元101输出权值1和5,分别对应输入神经元i1和i3;对于上述输出神经元o2,上述映射单元101输出权值7和2,分别对应输入神经元i1和i2;对于上述输出神经元o3,上述映射单元101输出权值8和3,分别对应输入神经元i2和i3;对于上述输出神经元o4,上述映射单元101输出权值9和4,分别对应输入神经元i3和i4。

需要指出的是,当上述输入数据为输入神经元,上述输入数据的连接关系数据为输入神经元的连接关系数据时,上述映射单元101可根据上述方法获取上述处理后的输入神经元。

总而言之,这六种形式(lil、coo、csc、csr、ell、hyb)在稀疏度越高的情况下越能占用更少的存储空间。lil根据具体实现结构的不同,占用稍多于2*nnz个存储单元,空间代价优于其他方法。如果非零元素数量小于行数\列数,那么使用coo比使用csr/csc更加经济,反之则使用csr/csc更加经济。如果每行的非零元素数目比较均匀,即矩阵中的每一行的非零元素个数差别不大,这样非零元素最多的行中的非零元素数目,与不均匀的矩阵中相应非零元素最多行相比,显然会更少,那么可以考虑使用ell。在极端均匀的情况下,即每一行的非零元素个数都一样,ell所占存储单元个数是2*nnz,比coo和csr、csc都要少。但是稀疏神经网络并不能保证有这样的特性。也许有某些特定的稀疏神经网络模型会有这样的特性,那么使用ell比较好。对于矩阵中每一行稀疏元素个数较统一的情况,采用ell形式的表示最佳,其次是hyb(ell+coo)。

在并行方面,coo是可以并行生成的,csr与csc的3个数组中的2个也是可以并行生成的。在做运算时,coo、lil、ell均可按行并行计算,而csc、csr、hyb则需要更多的预处理。

csr擅长稀疏矩阵左乘向量,而csc擅长于稀疏矩阵右乘向量转置。这两种表示形式可以通过转置互相转换。在神经网络的传播过程中可以使用这两种方法以及coo。ell格式在进行稀疏矩阵-矢量乘积(sparsematrix-vectorproducts)时效率最高。

运算单元102,用于根据微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到运算结果。

在一种可行的实施例中,如图6所示,上述神经网络运算模块还包括:

与所述映射单元101相连接的存储单元103,与所述存储单元103相连接的直接存储访问单元104、与所述直接存储访问单元104相连接的指令缓存单元105、第一输入缓存单元106、第二输入缓存单元107和输出缓存单元109;与所述指令缓存单元105相连接的指令控制单元108;所述指令缓存单元105、所述第一输入缓存单元106、所述第二输入缓存单元107和所述输出缓存单元109均与所述运算单元102相连接;

所述存储单元103,用于存储所述处理后的输入神经元和所述处理后的权值、神经网络运算指令和所述运算单元102进行人工神经网络运算得到的运算结果;

所述直接存储访问单元104,用于在所述存储单元103与所述指令缓存单元105、所述映射单元101、所述第一输入缓存单元106、所述第二输入缓存单元107和所述输出缓存单元109之间进行数据交换;

所述指令缓存单元105,用于通过所述直接存储访问单元104从所述存储单元103获取所述神经网络运算指令,并缓存所述神经网络运算指令;

所述第一输入缓存单元106,用于缓存所述处理后的输入神经元或所述处理后的权值;

所述第二输入缓存单元107,用于缓存所述处理后的输入神经元或所述处理后的权值,且所述第二输入缓存单元107缓存的数据与所述第一输入缓存单元106缓存的数据不一致;

指令控制单元108,用于从所述指令缓存单元105获取所述神经网络运算指令后,将所述神经网络运算指令译码成所述运算单元102执行的微指令;

所述输出缓存单元109,用于缓存所述运算结果。

在一种可行的实施例中,如图7所示,上述神经网络运算模块还包括:

与所述映射单元101相连接的直接存储访问单元104、第一输入缓存单元106和第二输入缓存单元107;与所述直接存储访问单元104相连接的存储单元103、指令缓存单元105和输出缓存单元109;与所述指令缓存单元105相连接的指令控制单元108;所述指令控制单元108、所述第一输入缓存单元106、所述第二输入缓存单元107和输出缓存单元109均与所述运算单元102相连接;

所述存储单元103,用于存储输入数据的连接关系数据、神经网络运算指令和所述运算单元102进行人工神经网络运算得到的运算结果;

所述直接存储访问单元104,用于在所述存储单元103与指令缓存单元105、第一输入缓存单元106、第二输入缓存单元107和指令缓存单元105之间进行数据交换;

所述指令缓存单元105,用于从通过所述直接存储访问单元104从所述存储单元103中获取所述神经网络运算指令,并缓存所述神经网络运算指令;

所述第一输入缓存单元106,用于缓存所述处理后的输入神经元或所述处理后的权值;

所述第二输入缓存单元107,用于缓存所述处理后的输入神经元或所述处理后的权值,且所述第二输入缓存单元107缓存的数据与所述第一输入缓存单元106缓存的数据不一致;

所述指令控制单元108,用于从所述指令缓存单元105获取所述神经网络运算指令,并将所述神经网络运算指令译码成所述运算单元102执行的微指令;

所述输出缓存单元109,用于缓存所述运算结果。

可以看出,在本发明实施例的方案中,映射单元接收到输入神经元的连接关系数据和权值的连接关系数据后,根据输入神经元的连接关系数据和权值的连接关系数据分别获取处理后的输入神经元和处理后的权值,运算单元获取处理后的输入神经元和处理后的权值后,根据指令控制单元对神经网络运算指令进行译码得到的微指令对处理后的输入神经元和处理后的权值进行人工神经网络运算。与现有技术相比,采用本发明实施例减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。

需要指出的是,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有l层,k=1,2,3…l-1,对于第k层和第k+1层来说,第k层被称为输入层,该层中的神经元为上述输入神经元,第k+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。

上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述神经网络处理装置中的运算单元可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。上述存储单元、指令缓存单元,第一输入缓存单元、第二输入缓存单元和输出缓存单元均可以是任何适当的磁存储介质或者磁光存储介质,比如rram,dram,sram,edram,hbm,hmc等等。

在一种可行的实施例中,本发明实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或多个如图1b、图6或图7所示实施例所述的神经网络运算模块,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过i/o接口传递给其他处理装置;

当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;

其中,多个所述神经网络运算模块通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算模块共享内存或者拥有各自的内存;多个所述神经网络运算模块的互联方式是任意互联拓扑。

该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

在一种可行的实施例中,本发明实施例提供了一种组合处理装置,该组合装置包括如上述神经网络运算装置,通用互联接口和其他处理装置。

上述神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图8a,图8a为本发明实施例提供的一种组合处理装置的结构示意图。如图8a所示,该组合处理装置包括上述神经网络运算装置801、通用互联接口802和其他处理装置803。

其中,上述其他处理装置803包括中央处理器(centralprocessingunit)、图形处理器(graphicsprocessingunit,gpu)、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置803所包括的处理器数量不做限制。其他处理装置803作为神经网络运算装置801与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置803也可以和神经网络运算装置801协作共同完成运算任务。

上述通用互联接口802,用于在所述神经网络运算装置801与其他处理装置803间传输数据和控制指令。该神经网络运算装置801从其他处理装置803中获取所需的输入数据,写入神经网络运算装置801片上的存储装置;可以从其他处理装置803中获取控制指令,写入神经网络运算装置801片上的控制缓存;也可以读取神经网络运算装置801的存储模块中的数据并传输给其他处理装置803。

可选的,如图8b所示,上述组合处理装置还包括存储装置804,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置801或其他处理装置803的内部存储中无法全部保存的数据。

上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。

在一种可行的实施例中,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括如图1b、图6或图7所示实施例所述的神经网络运算模块,或者上述神经网络运算装置或者上述组合处理装置。

在一种可行的实施例中,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。

在一种可行的实施例中,本发明实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。该板卡可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personalcomputer,pc)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

请参照图9,图9为本发明实施例提供的一种板卡的结构示意图。如图9所示,上述板卡900包括神经网络芯片封装结构901、第一电气及非电气连接装置902和第一基板(substrate)903。

对于神经网络芯片封装结构901的具体结构不作限定,可选的,如图10所示,上述神经网络芯片封装结构901包括:神经网络芯片9011、第二电气及非电气连接装置9012、第二基板9013。

本发明所涉及的神经网络芯片9011的具体形式不作限定,上述的神经网络芯片9011包含但不限于将神经网络处理器集成的神经网络晶片上,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。

本发明对于第一基板903和第二基板9013的类型不做限定,可以是印制电路板(printedcircuitboard,pcb)或(printedwiringboard,pwb),还可能为其它电路板。对pcb的制作材料也不做限定。

本发明所涉及的第二基板9013用于承载上述神经网络芯片9011,通过第二电气及非电气连接装置9012将上述的神经网络芯片9011和第二基板9013进行连接得到的神经网络芯片封装结构901,用于保护神经网络芯片9011,便于将神经网络芯片封装结构901与第一基板903进行进一步封装。

对于上述具体的第二电气及非电气连接装置9012的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(flipchipballgridarraypackage,fcbgap),薄型四方扁平式封装(low-profilequadflatpackage,lqfp)、带散热器的四方扁平封装(quadflatpackagewithheatsink,hqfp)、无引脚四方扁平封装(quadflatnon-leadpackage,qfn)或小间距四方扁平式封装(fine-pitchballgridpackage,fbga)等封装方式。

倒装芯片(flipchip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(wirebonding)的封装方式,减少成本,提高封装结构的灵活性。

球栅阵列(ballgridarray),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(pingridarray,pga)、零插拔力(zeroinsertionforce,zif)、单边接触连接(singleedgecontactconnection,secc)、触点阵列(landgridarray,lga)等来代替。

可选的,采用倒装芯片球栅阵列(flipchipballgridarray)的封装方式对神经网络芯片9011和第二基板9013进行封装,具体的神经网络芯片封装结构901的示意图可参照图11。如图11所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。

其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。

引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡900上的第一基板903)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本发明也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。

可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。

其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。

可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。

举例来说,如图12所示,上述神经网络芯片封装结构901包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。

可选的,上述神经网络芯片封装结构901还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。

其中,补强结构可以是金属线结构或柱状结构,在此不做限定。

本发明对于第一电气及非电气装置902的具体形式也不作限定,可参照第二电气及非电气装置9012的描述,即通过焊接的方式将神经网络芯片封装结构901进行封装,也可以采用连接线连接或插拔方式连接第二基板9013和第一基板903的方式,便于后续更换第一基板903或神经网络芯片封装结构901。

可选的,第一基板903包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(synchronousdynamicrandomaccessmemory,sdram)、双倍速率同步动态随机存储器(doubledateratesdram,ddr)等,通过扩展内存提高了神经网络处理器的处理能力。

第一基板903上还可包括快速外部设备互连总线(peripheralcomponentinterconnect-express,pci-e或pcie)接口、小封装可热插拔(smallform-factorpluggable,sfp)接口、以太网接口、控制器局域网总线(controllerareanetwork,can)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。

将神经网络处理器封装为神经网络芯片9011,将神经网络芯片9011封装为神经网络芯片封装结构901,将神经网络芯片封装结构901封装为板卡900,可填补目前神经网络的空缺,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用板卡900实现神经网络处理器的功能,并保护神经网络芯片9011。且板卡900上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。

在一种可行的实施例中,本发明实施例提供了一种电子装置,该电子装置包括上述板卡。

其中,该电子装置包括:机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

参见图13,图13为本发明实施例提供的一种神经网络运算方法的流程示意图。如图13所示,该方法包括:

s1301、神经网络运算模块根据输入数据的连接关系数据获取处理后的输入数据。

其中,上述输入数据包括输入神经元或者权值。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以列表的列表lil的形式表示,以所述lil的形式表示的连接关系数据包括至少一个列表,所述至少一个列表中的每个列表包括至少一个记录,所述记录包括绝对值大于预设阈值的输入数据的列索引和绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述lil中的每个记录获取所述处理后的输入数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以坐标列表coo的形式表示,以所述coo形式表示的连接关系数据由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行号、列号和该绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述坐标列表中的每个元组获取所述处理后的输入数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏行csr的形式表示,以所述csr的形式表示的连接关系数据包括三个数组,分别为第一数组,第二数组和第三数组,所述第一数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第二数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列索引,所述第三数组用于累加存储所述输入数据矩阵中每一行绝对值大于预设阈值的输入数据的个数,并且所述第三数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第一数组,所述第二数组和所述第三数组获取所述处理后的输入数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以压缩稀疏列csc的形式表示,以所述csc的形式表示的连接关系数据包括三个数组,分别为第四数组,第五数组和第六数组,所述第四数组存储输入数据矩阵中的绝对值大于预设阈值的输入数据的值,所述第五数组存储所述输入数据矩阵中的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的行索引,所述第六数组用于累加存储所述输入数据矩阵中每一列绝对值大于预设阈值的输入数据的个数,并且所述第六数组中的最后一个元素存储所述输入数据矩阵中绝对值大于预设阈值的输入数据的个数,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第四数组,所述第五数组和所述第六数组获取所述处理后的输入数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以ell的形式表示,以所述ell的形式表示的连接关系数据包括两个矩阵,分别为第一矩阵和第二矩阵,所述第一矩阵用于存储所述输入数据矩阵中绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述第二矩阵存储所述绝对值大于预设阈值的输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第一矩阵和所述第二矩阵获取所述处理后的输入数据。

在一种可行的实施例中,所述输入数据是以矩阵的形式表示的,所述输入数据是以矩阵的形式表示的,所述输入数据的连接关系数据以混合hyb的形式表示,以所述hyb形式表示的连接关系数据包括第三矩阵、第四矩阵和至少一个元组,所述第四矩阵存储输入数据矩阵中每一行最大相同数量的绝对值大于预设阈值的输入数据,所述第三矩阵存储在所述第四矩阵中存储的绝对值大于预设阈值的输入数据在所述输入数据矩阵中的列号,所述至少一个元组中的每个元组用于存储所述输入数据矩阵中的任一行相对于其他行多出来输入数据的行号,列号和该输入数据的值,所述根据所述输入数据的连接关系数据获取处理后的输入数据,包括:

根据所述第三矩阵、所述第四矩阵和所述至少一个元组获取所述处理后的输入数据。

s1302、神经网络运算模块获获取神经网络运算指令,将所述神经网络运算指令译码成微指令。

s1303、神经网络运算模块根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到运算结果。

需要说明的是,上述步骤s1301-1303的描述可参见上述图1b所示实施例的相关描述,在此不再叙述。

本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种神经网络运算方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1