首页 / 专利库 / 商用车 / 重型载货汽车 / 行车记录仪 / 神经网络运算装置及方法

神经网络运算装置及方法

阅读:378发布:2022-02-16

专利汇可以提供神经网络运算装置及方法专利检索,专利查询,专利分析的服务。并且本公开提供了一种神经网络运算装置及方法。该神经网络运算装置包括:控制单元、存储单元、稀疏选择单元和神经网络运算单元;其中:控制单元,用于产生分别对应各个单元的微指令,并将微指令发送至相应单元;稀疏选择单元,用于根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的 位置 信息,在存储单元存储的神经网络数据中选择与有效权值相对应的神经网络数据参与运算;以及神经网络运算单元,用于根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果。本公开可以提升神经网络运算装置处理不同数据类型的能 力 ,加快神经网络运算速度的同时降低功耗。,下面是神经网络运算装置及方法专利的具体信息内容。

1.一种神经网络运算装置,其特征在于,包括:控制单元、稀疏选择单元和神经网络运算单元;所述神经网络运算装置用于处理神经网络数据,所述神经网络数据包括稀疏神经网络数据、离散神经网络数据以及通用网络数据,其中:
所述控制单元,用于产生分别对应所述稀疏选择单元和神经网络运算单元的微指令,并将微指令发送至相应单元;
稀疏选择单元,用于根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的位置信息,在神经网络数据中选择与有效权值相对应的神经网络数据参与运算;
神经网络运算单元,用于根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果;
所述神经网络运算装置还包括:离散神经网络数据拆分单元,用于确定离散神经网络数据中实数值的个数N,将离散神经网络数据的神经网络模型拆分成N个稀疏表示的子网络,每个子网络中只包含一种实数,其余权值都为0;
当所述神经网络数据为离散神经网络数据时,令所述离散神经网络数据拆分单元工作,所述稀疏选择单元和神经网络运算单元将每个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;以及
所述神经网络运算单元还用于将N个子网络的运算结果求和,从而得到所述离散神经网络数据的神经网络运算结果。
2.根据权利要求1所述的神经网络运算装置,其特征在于,还包括:
存储单元,用于存储所述神经网络数据;
其中,所述控制单元还用于产生对应所述存储单元的微指令,并将所述微指令发送至所述存储单元。
3.根据权利要求1所述的神经网络运算装置,其特征在于,所述N=2或4。
4.根据权利要求2所述的神经网络运算装置,其特征在于,还包括:
数据类型判断单元,用于判断所述神经网络数据的类型;
所述控制单元用于:
(a)当所述神经网络数据为稀疏神经网络数据,令所述稀疏选择单元依照稀疏数据表示的位置信息,在存储单元中选择与有效权值相对应的神经网络数据;令所述神经网络运算单元对稀疏选择单元获取的神经网络数据执行神经网络运算,得到运算结果;
(b)当所述神经网络数据为离散神经网络数据时,令所述离散神经网络数据拆分单元工作,将离散神经网络数据的神经网络模型拆分成N个子网络;令所述稀疏选择单元和神经网络运算单元工作,将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;
令所述神经网络运算单元工作,将N个子网络的运算结果求和,得到所述离散神经网络数据的神经网络运算结果。
5.根据权利要求4所述的神经网络运算装置,其特征在于,所述控制单元还用于:
(c)当所述神经网络数据为通用神经网络数据时,令所述稀疏选择单元不工作,令所述神经网络运算单元对通用神经网络数据执行神经网络运算,得到运算结果。
6.根据权利要求2所述的神经网络运算装置,其特征在于,所述控制单元包括:
指令缓存模,用于存储待执行的神经网络指令,所述神经网络指令包含待处理神经网络数据的地址信息;
取指模块,用于从所述指令缓存模块中获取神经网络指令;
译码模块,用于对神经网络指令进行译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,所述微指令中包含相应神经网络数据的地址信息;
指令队列,用于对译码后的微指令进行存储;
标量寄存器堆,用于存储所述待处理神经网络数据的地址信息;
依赖关系处理模块,用于判断指令队列中的微指令与前一微指令是否访问相同的数据,若是,将该微指令存储在一存储队列中,待前一微指令执行完毕后,将存储队列中的该微指令发射至相应单元;否则,直接将该微指令发射至相应单元。
7.根据权利要求6所述的神经网络运算装置,其特征在于,在执行过程中,所述神经网络指令同时也被缓存在指令缓存模块中,当一条神经网络指令执行完之后,如果该神经网络指令同时也是指令缓存模块中未被提交指令中最早的一条指令,该神经网络指令将被提交,一旦提交,该神经网络指令进行的操作对所述神经网络运算装置状态的改变将无法撤销。
8.根据权利要求6所述的神经网络运算装置,其特征在于,所述指令缓存模块为重排序缓存模块。
9.根据权利要求6所述的神经网络运算装置,其特征在于,还包括:输入输出单元,用于将神经网络数据存储于所述存储单元;或者,从所述存储单元中获取神经网络运算结果。
10.根据权利要求1至9中任一项所述的神经网络运算装置,其特征在于,应用于以下场景中:电子产品、交通工具、家用电器或医疗设备,其中:
所述电子产品为以下群组中的一种:数据处理机器人、电脑、打印机扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备;
所述交通工具为以下群组中的一种:飞机、轮船、车辆;
所述家用电器为以下群组中的一种:电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机;
所述医疗设备为以下群组中的一种:核磁共振仪、B超、心电图仪。
11.一种电子设备,包括权利要求1-10任一所述的神经网络运算装置。
12.一种神经网络运算装置的神经网络数据处理方法,所述神经网络运算装置包括控制单元、稀疏选择单元和神经网络运算单元,其特征在于,所述神经网络运算装置用于处理神经网络数据,所述神经网络数据包括稀疏神经网络数据、离散神经网络数据以及通用网络数据,所述方法包括:
所述控制单元产生分别对应所述稀疏选择单元和所述神经网络运算单元的微指令,并将微指令发送至相应单元;
所述稀疏选择单元根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的位置信息,在神经网络数据中选择与有效权值相对应的神经网络数据参与运算;
所述神经网络运算单元根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果;
所述神经网络运算装置还包括:离散神经网络数据拆分单元,所述方法还包括:所述离散神经网络数据拆分单元将离散神经网络数据的神经网络模型拆分成N个稀疏表示的子网络,每个子网络中只包含一种实数,其余权值都为0;
当所述神经网络数据为离散神经网络数据时,所述离散神经网络数据拆分单元工作,所述稀疏选择单元和神经网络运算单元将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;以及
所述神经网络运算单元将N个子网络的运算结果求和,得到所述离散神经网络数据的神经网络运算结果,神经网络数据处理结束。
13.根据权利要求12所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述神经网络运算装置还包括存储有所述神经网络数据的存储单元,所述方法还包括:
所述控制单元还产生对应所述存储单元的微指令,并将所述微指令发送至所述存储单元。
14.根据权利要求12所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述N=2或4。
15.根据权利要求13所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述神经网络运算装置还包括:数据类型判断单元;
所述方法还包括:所述数据类型判断单元判断所述神经网络数据的类型:
当所述神经网络数据为稀疏神经网络数据,所述控制单元令所述稀疏选择单元依照稀疏数据表示的位置信息,在存储单元中选择与有效权值相对应的神经网络数据;所述控制单元令所述神经网络运算单元对稀疏选择单元获取的神经网络数据执行神经网络运算,得到运算结果;
当所述神经网络数据为离散神经网络数据时,所述控制单元令所述离散神经网络数据拆分单元工作,将离散神经网络数据的神经网络模型拆分成N个子网络;所述控制单元令所述稀疏选择单元和神经网络运算单元工作,将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;所述控制单元令所述神经网络运算单元工作,将N个子网络的运算结果求和,得到所述离散神经网络数据的神经网络运算结果。
16.根据权利要求15所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述方法还包括:
所述数据类型判断单元判断神经网络数据的类型:
如果神经网络数据为稀疏神经网络数据,所述稀疏选择单元依照稀疏数据表示的位置信息,在存储单元中选择与有效权值相对应的神经网络数据,所述神经网络运算单元对稀疏选择单元获取的神经网络数据执行神经网络运算,得到稀疏神经网络数据的运算结果,神经网络数据处理结束;
如果神经网络数据为离散神经网络数据,所述离散神经网络数据拆分单元将离散神经网络数据的神经网络模型拆分成N个稀疏表示的子网络,每个子网络中只包含一种实数,其余权值都为0;所述稀疏选择单元和神经网络运算单元将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;所述神经网络运算单元将N个子网络的运算结果求和,得到所述离散神经网络数据的神经网络运算结果,神经网络数据处理结束;
如果神经网络数据为通用神经网络数据,所述神经网络运算单元对通用神经网络数据执行神经网络运算,得到运算结果,神经网络数据处理结束。
17.根据权利要求13所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述控制单元包括:指令缓存模块、取指模块、译码模块和指令队列和标量寄存器堆和依赖关系处理模块;
在所述数据类型判断单元判断神经网络数据的类型之前,还包括:
取指模块由指令缓存模块中取出神经网络指令,并将所述神经网络指令送往译码模块;
译码模块对所述神经网络指令译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,并将各微指令送往指令队列;
之后微指令从标量寄存器堆里获取所述微指令的神经网络运算操作码和神经网络运算操作数,之后的微指令送给依赖关系处理单元;
依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在依赖关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在依赖关系为止之后微指令送往神经网络运算单元、稀疏选择单元、存储单元。
18.根据权利要求17所述的神经网络运算装置的神经网络数据处理方法,其特征在于,在执行过程中,所述神经网络指令同时也被缓存在指令缓存模块中,当一条神经网络指令执行完之后,如果该神经网络指令同时也是指令缓存模块中未被提交指令中最早的一条指令,该神经网络指令将被提交,一旦提交,该神经网络指令进行的操作对所述神经网络运算装置状态的改变将无法撤销。
19.根据权利要求17所述的神经网络运算装置的神经网络数据处理方法,其特征在于,所述神经网络运算装置还包括:输入输出单元;所述方法还包括:
所述输入输出单元将神经网络数据存储于所述存储单元;或者
所述输入输出单元从所述存储单元中获取神经网络运算结果。

说明书全文

神经网络运算装置及方法

技术领域

[0001] 本公开涉及信息技术领域,尤其涉及一种兼容通用神经网络数据、稀疏神经网络数据和离散神经网络数据的神经网络运算装置及方法。

背景技术

[0002] 人工神经网络(ANNs),简称神经网络(NNs),是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。目前,神经网络在智能控制、机器学习等很多领域均获得长足发展。随着深度学习技术的不断发展,当前神经网络的模型规模越来越大,对运算性能以及访存带宽需求越来越高,已有的神经网络运算平台(CPU,GPU,传统神经网络加速器)已无法满足用户需求。
[0003] 为了提高神经网络运算平台的运算效率,在通用神经网络数据的基础上,发展出稀疏神经网络数据和离散神经网络数据。然而,目前的神经网络运算平台针对每一种类型的神经网络数据均需要设立单独的处理模进行处理,造成计算资源紧张,并连带产生了访存带宽不够、功耗过高等问题。
[0004] 公开内容
[0005] (一)要解决的技术问题
[0006] 鉴于上述技术问题,本公开提供了一种神经网络运算装置及方法,以提升神经网络数据处理的复用化程度,节省计算资源。
[0007] (二)技术方案
[0008] 根据本公开的一个方面,提供了一种神经网络运算装置。该神经网络运算装置包括:控制单元、稀疏选择单元和神经网络运算单元;其中:控制单元,用于产生分别对应稀疏选择单元和神经网络运算单元的微指令,并将微指令发送至相应单元;稀疏选择单元,用于根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的位置信息,在神经网络数据中选择与有效权值相对应的神经网络数据参与运算;以及神经网络运算单元,用于根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果。
[0009] 根据本公开的另一个方面,还提供了一种电子设备,包括上述的神经网络运算装置。
[0010] 根据本公开的另一个方面,还提供了一种神经网络运算装置的神经网络数据处理方法,所述神经网络运算装置包括稀疏选择单元和神经网络运算单元,所述方法包括:产生分别对应所述稀疏选择单元和所述神经网络运算单元的微指令,并将微指令发送至相应单元;根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的位置信息,在神经网络数据中选择与有效权值相对应的神经网络数据参与运算;以及根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果。
[0011] (三)有益效果
[0012] 从上述技术方案可以看出,本公开神经网络运算装置及方法至少具有以下有益效果其中之一:
[0013] (1)通过复用稀疏选择单元,同时高效支持稀疏神经网络以及离散数据表示的神经网络运算,实现了减少运算需要的数据量,增加运算过程中的数据复用,从而解决了现有技术中存在的运算性能不足、访存带宽不够、功耗过高等问题;
[0014] (2)通过依赖关系处理单元,本装置可以判断数据是否有相互依赖关系,例如下一步计算使用的输入数据是上一步计算执行结束之后的输出结果,这样没有盘算数据依赖关系模块,下一步计算不等待上一步计算结束就开始计算,会引发计算结果不正确。通过依赖关系处理单元判断数据依赖关系从而控制装置等待数据进行下一步计算,从而保证了装置运行的正确性和高效性。附图说明
[0015] 图1为本公开第一实施例神经网络运算装置的结构示意图;
[0016] 图2为稀疏神经网络权值模型数据的示意图;
[0017] 图3为将N=4的离散神经网络数据拆分为两个子网络的示意图;
[0018] 图4为将N=2的离散神经网络数据拆分为两个子网络的示意图;
[0019] 图5为本公开第二实施例神经网络运算装置的结构示意图;
[0020] 图6为本公开第三实施例神经网络运算装置的结构示意图;
[0021] 图7为本公开第四实施例神经网络数据处理方法的流程图
[0022] 图8为本公开第五实施例神经网络数据处理方法的流程图;
[0023] 图9为本公开第六实施例神经网络数据处理方法的流程图;
[0024] 图10为本公开第七实施例神经网络数据处理方法的流程图。

具体实施方式

[0025] 在对本公开进行介绍之前,首先对三种类型的神经网络数据-通用神经网络数据、稀疏神经网络数据和离散神经网络数据进行说明。
[0026] 本公开中,通用神经网络数据指代的是通用的计算机数据,也就是计算机中常用的数据类型,例如32位浮点数据、16位浮点数据、32位定点数据等等。
[0027] 本公开中,离散神经网络数据表示为:部分数据或全部数据是用离散数据表示的计算机数据。不同于通用神经网络数据中32位浮点、16位浮点的数据表示,离散神经网络数据指参与运算的全部数据只是某几个离散的实数组成的集合,神经网络中的数据包括输入数据和神经网络模型数据。包括以下几种类型:
[0028] (1)输入数据和神经网络模型数据全部由这几个实数组成叫做全部离散数据表示;
[0029] (2)神经网络中的数据只有神经网络模型数据(全部神经网络层或某几个神经网络层)由这几个实数组成,输入数据用通用神经网络数据叫做模型离散数据表示;
[0030] (3)神经网络中的数据只有输入数据由这几个实数组成,神经网络模型数据用原始通用神经网络数据叫做输入离散数据表示。
[0031] 本公开中的离散数据表示指代了包括上述三种离散数据表示方式。例如输入数据是原始通用的神经网络数据,可以是一张RGB图像数据,神经网络模型数据是离散数据表示的,既某几层的权值数据只有-1/+1两种值,此既为离散神经网络数据表示的神经网络。
[0032] 本公开中,稀疏神经网络数据为:位置上不连续的数据,具体包括数据和数据位置信息这两部分。例如一个神经网络的模型数据是稀疏的,首先我们通过1个长度与整个模型数据大小相同的01比特串反映了数据位置信息。具体为01反应了相应位置上的模型数据是否有效,0表示该位置数据无效既稀疏掉,1表示该位置数据有效。最后,存储时我们只存储有效位置上的数据成为我们的数据信息。这样真实存储的数据信息和01比特串存储的位置信息共同组成了我们的稀疏神经网络数据,本公开中这种数据表示方式也叫做稀疏数据表示。
[0033] 本公开提供的神经网络运算装置及方法通过复用稀疏选择单元,同时支持稀疏神经网络数据以及离散神经网络数据的神经网络运算。
[0034] 本公开可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
[0035] 为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
[0036] 一、第一实施例
[0037] 在本公开的第一个示例性实施例中,提供了一种神经网络运算装置。请参照图1,本实施例神经网络运算装置包括:控制单元100、存储单元200、稀疏选择单元300和神经网络运算单元400。其中,存储单元200用于存储神经网络数据。控制单元100用于产生分别对应所述稀疏选择单元和神经网络运算单元的微指令,并将微指令发送至相应单元。稀疏选择单元300用于根据控制单元下发的对应稀疏选择单元的微指令,依照其中的稀疏数据表示的位置信息,在存储单元存储的神经网络数据中选择与有效权值相对应的神经网络数据参与运算。神经网络运算单元400用于根据控制单元下发的对应神经网络运算单元的微指令,对稀疏选择单元选取的神经网络数据执行神经网络运算,得到运算结果。
[0038] 以下分别对本实施例神经网络运算装置的各个组成部分进行详细描述。
[0039] 存储单元200用于存储三种类型的神经网络数据-通用神经网络数据、稀疏神经网络数据和离散神经网络数据,在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的数据规模;本公开将必要的计算数据暂存在高速暂存存储器(Scratchpad Memory)上,使本运算装置在进行神经网络运算过程中可以更加灵活有效地支持不同规模的数据。存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
[0040] 控制单元100用于产生分别对应所述稀疏选择单元和神经网络运算单元的微指令,并将微指令发送至相应单元。其中,在本公开中,控制单元可以支持多种不同类型的神经网络算法,包括但不限于CNN/DNN/DBN/MLP/RNN/LSTM/SOM/RCNN/FastRCNN/Faster-RCNN等。
[0041] 稀疏选择单元300用于根据稀疏神经网络数据的位置信息选择与有效权值相对应的神经元参与运算。在处理离散神经网络数据时,我们同样通过稀疏选择单元处理相应的离散数据。
[0042] 神经网络运算单元400用于根据控制单元生成的微指令,从存储单元中获取输入数据,执行一般神经网络或稀疏神经网络或离散数据表示的神经网络运算,得到运算结果,并将运算结果存储至存储单元中。
[0043] 在上述介绍的基础上,以下重点对本实施例中的稀疏选择单元进行详细说明。请参照图1,该稀疏选择单元可以对稀疏数据表示和离散数据表示进行处理,具体为:稀疏选择单元根据稀疏数据的位置信息,既01比特串,来选择与该位置相对应的神经网络每一层的输入数据送入到神经网络运算单元。01比特串中,每1位对应神经网络模型中的一个权值数据,0表示对应的权值数据无效,既不存在。1表示对应的权值数据有效,既存在。稀疏数据表示中的数据部分只存储有效的数据。例如,我们有图2所示的稀疏神经网络权值模型数据。稀疏选择模块将稀疏数据表示的有效权值部分直接送入神经网络运算单元,之后根据01字符串选择其中1既有效位的位置对应的输入神经元的数据送入神经网络运算单元。图2中,稀疏选择模块将把与权值位置1/2/3/7/9/11/15(该数字对应图2中位置信息数字1的从左到右位置,相当于数组序号)相对应的输入神经元送入神经网络运算单元。
[0044] 本公开的一大特点是将稀疏选择模块300复用于离散神经网络数据中。具体地,对离散神经网络数据,由几个实数值便当做几个稀疏神经网络数据进行运算。准备神经网络模型数据时,通过将神经网络模型拆分成N个子网络。该子网络与原离散神经网络数据的尺寸相同。每个子网络中只包含一种实数,其余权值都为0,这样每个子网络都类似于上述稀疏表示。与上述稀疏数据的唯一区别在于,子网络在神经网络运算单元计算完毕后,需要外部一条指令控制神经网络运算单元将子网络计算结果求和得到最终结果。
[0045] 请继续参照图1,本实施例中,神经网络运算装置还包括:离散神经网络数据拆分单元500。该离散神经网络数据拆分单元500用于:
[0046] (1)确定离散神经网络数据中实数值的个数N;
[0047] (2)将离散神经网络模型数据的神经网络模型拆分成N个子网络,每个子网络中只包含一种实数,其余权值都为0;
[0048] 其中,稀疏选择单元300和神经网络运算单元400将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果。所述神经网络运算单元还用于将N个子网络的运算结果求和,从而得到所述离散神经网络数据的神经网络运算结果。
[0049] 如图3所示,神经网络模型数据中某一层的权值数据由离散数据表示。我们的离散数据由4个实数值组成(N=4),既只有-1/1/2/-2四种权值,按照这四种权值拆成了四个稀疏表示的子网络。具体执行过程中,外部准备好这四个子网络,稀疏选择模块依次读入4个子网络,之后的处理方式与稀疏神经网络数据相同,均是选择与权值位置信息相对应的输入数据送到运算单元。唯一区别在于,运算单元计算完成后,需要外部一条指令控制神经网络运算单元将4个子网络的运算结果求和。
[0050] 当量化值个数N=2时,可以将两个稀疏表示合并成一个(稀疏表示中的0和1分别表示两个不同的量化值,不再表示有效和非有效)。如图4所示,特别的当N=2时,我们可以将两个稀疏表示的子网络的位置信息2串比特串合并为1串比特串,比特串指数字01组成的序列。此时的0/1不表示是否稀疏的位置信息,而分别表示1/-1权值的位置信息。稀疏选择模块会选择输入数据两次,分别与权值1和权值-1的位置信息相对应的输入数据输入到运算单元中。同样,最后需要外部一条指令控制运算单元将2个子网络输出结果求和。
[0051] 二、第二实施例
[0052] 在本公开的第二个示例性实施例中,提供了一种神经网络运算装置。如图5所示,与第一实施例相比,本实施例神经网络运算装置的区别在于:增加了数据类型判断单元600来判断神经网络数据的类型。
[0053] 本公开的神经网络数据类型在指令中指定。控制单元通过数据类型判断单元的输出结果控制了稀疏选择单元和运算单元工作方式:
[0054] (a)针对稀疏神经网络数据,稀疏选择模块根据位置信息选择对应输入数据送入神经网络运算单元;
[0055] 具体而言,当所述神经网络数据为稀疏神经网络数据,令所述稀疏选择单元依照稀疏数据表示的位置信息,在存储单元中选择与有效权值相对应的神经元参与运算;令所述神经网络运算单元对稀疏选择单元获取的神经网络数据执行神经网络运算,得到运算结果。
[0056] (b)针对离散神经网络数据,稀疏选择模块根据位置信息选择相对应的输入数据送入运算单元,运算单元根据外部运算指令对计算结果求和;
[0057] 具体而言,当所述神经网络数据为离散神经网络数据时,令所述离散神经网络数据拆分单元工作,将离散神经网络数据的神经网络模型拆分成N个子网络;令所述稀疏选择单元和神经网络运算单元工作,将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;令所述神经网络运算单元工作,将N个子网络的运算结果求和,得到所述离散神经网络数据的神经网络运算结果。
[0058] (c)针对一般神经网络数据,既稀疏选择模块不工作,不会根据位置信息选择。
[0059] 具体而言,当所述神经网络数据为通用神经网络数据时,令所述稀疏选择单元不工作,令所述神经网络运算单元对通用神经网络数据执行神经网络运算,得到运算结果。
[0060] 三、第三实施例
[0061] 在本公开的第三个示例性实施例中,提供了一种神经网络运算装置。与第二实施例相比,本实施例神经网络运算装置的区别在于:在控制单元中增加了依赖关系处理功能。
[0062] 请参照图6,根据本公开的一种实施方式,控制单元100包括:指令缓存模块110,用于存储待执行的神经网络指令,所述神经网络指令包含待处理神经网络数据的地址信息;取指模块120,用于从所述指令缓存模块中获取神经网络指令;译码模块130,用于对神经网络指令进行译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,所述微指令中包含相应神经网络数据的地址信息;指令队列140,用于对译码后的微指令进行存储;标量寄存器堆150,用于存储所述待处理神经网络数据的地址信息;依赖关系处理模块160,用于判断指令队列中的微指令与前一微指令是否访问相同的数据,若是,将该微指令存储在一存储队列中,待前一微指令执行完毕后,将存储队列中的该微指令发射至相应单元;否则,直接将该微指令发射至相应单元。
[0063] 其中,指令缓存模块用于存储待执行的神经网络指令。指令在执行过程中,同时也被缓存在指令缓存模块中,当一条指令执行完之后,如果该指令同时也是指令缓存模块中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存模块可以是重排序缓存。
[0064] 除此之外,本实施例神经网络运算装置还包括:输入输出单元,用于将数据存储于存储单元,或者,从存储单元中获取神经网络运算结果。其中,直接存储单元,负责从内存中读取数据或写入数据。
[0065] 四、第四实施例
[0066] 基于第三实施例的神经网络运算装置,本公开还提供一种通用神经网络数据(通用神经网络指数据不采用离散数据表示或者稀疏化表示的神经网络)处理方法,用于根据运算指令执行一般神经网络运算。如图7所示,本实施例通用神经网络数据的处理方法包括:
[0067] 步骤S701,取指模块由指令缓存模块中取出神经网络指令,并将所述神经网络指令送往译码模块;
[0068] 步骤S702,译码模块对所述神经网络指令译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,并将各微指令送往指令队列;
[0069] 步骤S703,从标量寄存器堆里获取所述微指令的神经网络运算操作码和神经网络运算操作数,之后的微指令送给依赖关系处理单元;
[0070] 步骤S704,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在依赖关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在依赖关系为止之后微指令送往神经网络运算单元和存储单元;
[0071] 步骤S705,神经网络运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据(包括输入数据,神经网络模型数据等)。
[0072] 步骤S706,然后在神经网络运算单元中完成所述运算指令对应的神经网络运算,并将神经网络运算得到的结果写回存储单元。
[0073] 至此,本公开第四实施例通用神经网络数据处理方法介绍完毕。
[0074] 五、第五实施例
[0075] 基于第三实施例的神经网络运算装置,本公开还提供一种稀疏神经网络数据处理方法,用于根据运算指令执行稀疏神经网络运算。如图8所示,本实施例稀疏神经网络数据的处理方法包括:
[0076] 步骤S801,取指模块由指令缓存模块中取出神经网络指令,并将所述神经网络指令送往译码模块;
[0077] 步骤S802,译码模块对所述神经网络指令译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,并将各微指令送往指令队列;
[0078] 步骤S803,从标量寄存器堆里获取所述微指令的神经网络运算操作码和神经网络运算操作数,之后的微指令送给依赖关系处理单元;
[0079] 步骤S804,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在依赖关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在依赖关系为止之后微指令送往神经网络运算单元和存储单元;
[0080] 步骤S805,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据(包括输入数据,神经网络模型数据,神经网络稀疏表示数据),然后稀疏选择模块根据稀疏表示,选择出有效神经网络权值数据对应的输入数据;
[0081] 例如,输入数据采用一般数据表示,神经网络模型数据采用稀疏表示。稀疏选择模块根据神经网络模型数据的01比特串选择与权值相对应的输入数据,01比特串的长度等于神经网络模型数据的长度,如图2所示,在比特串数字为1的位置选择该位置权值相对应的输入数据输入装置,为0的位置不输入权值相对应的输入数据。如此,我们根据输入稀疏化表示的权值的位置信息01比特串选择了与稀疏权值位置相对应输入数据。
[0082] 步骤S806,在运算单元中完成所述运算指令对应的神经网络运算,并将神经网络运算得到的结果写回存储单元。
[0083] 至此,本公开第五实施例稀疏神经网络数据处理方法介绍完毕。
[0084] 六、第六实施例
[0085] 基于第三实施例的神经网络运算装置,本公开还提供一种离散神经网络数据处理方法,用于根据运算指令执行离散数据表示的神经网络运算。
[0086] 如图9所示,本实施例离散神经网络数据处理方法包括:
[0087] 步骤S901,取指模块由指令缓存模块中取出神经网络指令,并将所述神经网络指令送往译码模块;
[0088] 步骤S902,译码模块对所述神经网络指令译码,得到分别对应存储单元、稀疏选择单元和神经网络运算单元的微指令,并将各微指令送往指令队列;
[0089] 步骤S903,从标量寄存器堆里获取所述微指令的神经网络运算操作码和神经网络运算操作数,之后的微指令送给依赖关系处理单元;
[0090] 步骤S904,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在依赖关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在依赖关系为止之后微指令送往神经网络运算单元和存储单元;
[0091] 步骤S905,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据(包括输入数据,如上文所述的多个子网络的模型数据,每个子网络仅包含一种离散表示的权值,以及每个子网络的稀疏表示,然后稀疏选择模块根据每个子网络的稀疏表示,选择出该子网络的有效权值数据对应的输入数据。离散数据的存储方式例如图3、图4所示,稀疏选择模块与上文中的操作类似,根据稀疏表示的01比特串表示的位置信息,选择相对应的输入数据从高速暂存存储器中取出到装置中)
[0092] 步骤S906,然后在运算单元中完成所述运算指令对应的子神经网络的运算(此过程也与上文中的计算过程类似,唯一的不同在于,例如像图2和图3的差别,稀疏表示方法中模型数据只有一个稀疏化表示,而离散数据数据表示可能会从一个模型数据中产生出多个子模型,运算过程中需要对所有子模型的运算结果做累加和),并将各个子网络的运算结果相加,并将运算得到的最终结果写回存储单元。
[0093] 至此,本公开第六实施例稀疏神经网络数据处理方法介绍完毕。
[0094] 七、第七实施例
[0095] 基于第三实施例的神经网络运算装置,本公开还提供一种神经网络数据处理方法。请参照图10,本实施例神经网络数据处理方法包括:
[0096] 步骤A,数据类型判断单元判断神经网络数据的类型,如果神经网络数据为稀疏神经网络数据,执行步骤B,如果神经网络数据为离散神经网络数据,执行步骤D;如果神经网络数据为通用神经网络数据,执行步骤G;
[0097] 步骤B,稀疏选择单元依照稀疏数据表示的位置信息,在存储单元中选择与有效权值相对应的神经网络数据;
[0098] 步骤C,神经网络运算单元对稀疏选择单元获取的神经网络数据执行神经网络运算,得到稀疏神经网络数据的运算结果,神经网络数据处理结束;
[0099] 步骤D,离散神经网络数据拆分单元将离散神经网络数据的神经网络模型拆分成N个稀疏表示的子网络,每个子网络中只包含一种实数,其余权值都为0;
[0100] 步骤E,稀疏选择单元和神经网络运算单元将每一个子网络按照稀疏神经网络数据进行处理,分别得到运算结果;以及
[0101] 步骤F,神经网络运算单元将N个子网络的运算结果求和,得到离散神经网络数据的神经网络运算结果,神经网络数据处理结束;
[0102] 步骤G,神经网络运算单元对通用神经网络数据执行神经网络运算,得到运算结果,神经网络数据处理结束。
[0103] 至此,本公开第七实施例稀疏神经网络数据处理方法介绍完毕。
[0104] 需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:离散数据、稀疏数据.一般普通神经网络数据三种数据的混合使用,输入数据是一般神经网络数据,神经网络模型数据中某几层数据采用离散数据、某几层数据采用稀疏数据。因为本公开装置中的基本流程是以一层神经网络运算为例的,真实使用的神经网络往往是多层的,所以真实使用中这种每一层采取不同数据类型的方式是常见的。
[0105] 还需要说明的是,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
[0106] 本公开实施例还提供了一种电子设备,其包括了上述的神经网络运算装置。
[0107] 电子设备可包括但不限于机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
[0108] 所述交通工具可包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0109] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0110] 综上所述,本公开通过复用稀疏选择单元,同时高效支持稀疏神经网络以及离散数据表示的神经网络运算,实现了减少运算需要的数据量,增加运算过程中的数据复用,从而解决了现有技术中存在的运算性能不足、访存带宽不够、功耗过高等问题。同时,通过依赖关系处理模块,达到了保证神经网络正确运行的同时提高了运行效率缩短运行时间的效果,在多个领域均有广泛的应用,具有极强的应用前景和较大的经济价值。
[0111] 以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
相关专利内容
标题 发布/更新时间 阅读量
行车记录仪 2020-05-11 36
行车记录仪 2020-05-12 671
行车记录仪 2020-05-12 918
行车记录仪 2020-05-12 874
一种行车记录仪 2020-05-12 715
一种行车记录仪 2020-05-12 153
一种行车记录仪 2020-05-12 720
一种行车记录仪 2020-05-12 395
行车记录仪 2020-05-11 877
行车记录仪 2020-05-11 867
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈