一种神经网络加速器及其运算方法

文档序号:10534461阅读:486来源:国知局
一种神经网络加速器及其运算方法
【专利摘要】本发明适用于神经网络算法领域,提供了一种神经网络加速器及其运算方法,该神经网络加速器包括片内存储介质、片内地址索引模块、核心计算模块以及多ALU装置,片内存储介质,用于存储外部传来的数据或用于存储计算过程中产生的数据;片内数据索引模块,用于执行运算时根据输入的索引映射至正确的存储地址;核心计算模块用于执行神经网络运算;多ALU装置用于从核心计算模块或片内存储介质获取输入数据执行核心计算模块无法完成的非线性运算。本发明在神经网络加速器中引入多ALU设计,从而提升非线性运算的运算速度,使得神经网络加速器更加高效。
【专利说明】
一种神经网络加速器及其运算方法
技术领域
[0001]本发明涉及神经网络算法领域,属于一种神经网络加速器及其运算方法。
【背景技术】
[0002]在大数据时代,越来越多的设备需要对于真实世界的实时输入进行越来越复杂的处理,如工业机器人、自动驾驶无人汽车以及移动设备等等。这些任务大多数偏向于机器学习领域,其中大部分运算为向量运算或者矩阵运算,具有极高的并行度。相较于传统通用的GPU/CPU加速方案,硬件ASIC加速器是目前最受欢迎的加速方案,一方面可以提供极高的并行度可以实现极高的性能,另外一方面具有极高的能效性。
[0003]常见的神经网络算法中,包括最为流行的多层感知神经网络(Mu111-LayerPerceptron,MLP)、卷积神经网络(Convolut1nal Neural Network,CNN)和深度神经网络(Deep Neural Network,DNN),多为非线性神经网络。而其中的非线性来自激活函数,如sigmoid函数、tanh函数,或者非线性层如ReLU等。通常这些非线性的运算都独立于其他操作,也即输入输出为一一映射;且位于输出神经元最后阶段,也即非线性运算完成后才能进行下一层神经网络的计算,其运算速度深切的影响了神经网络加速器的性能。神经网络加速器中,这些非线性的运算都采用单个ALU(Arithmetic Logic Unit,算术逻辑运算单元)或者简化的ALU进行运算。然而这种方式降低了神经网络加速器的性能。
[0004]综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。

【发明内容】

[0005]针对上述的缺陷,本发明的目的在于提供一种神经网络加速器及其运算方法,其在神经网络加速器中引入多ALU设计,从而提升非线性运算的运算速度,使得神经网络加速器更加高效。
[0006]为了实现上述目的,本发明提供一种神经网络加速器,包括片内存储介质、片内地址索引模块、核心计算模块以及多ALU装置,所述片内存储介质,用于存储由神经网络加速器外部传来的数据或用于存储计算过程中产生的数据;所述片内数据索引模块,用于执行运算时根据输入的索引映射至正确的存储地址;所述核心计算模块用于执行神经网络运算中的线性运算;所述多ALU装置用于从所述核心计算模块或所述片内存储介质获取输入数据执行所述核心计算模块无法完成的非线性运算。
[0007]根据本发明的神经网络加速器,所述计算过程中产生的数据包括计算结果或中间结算结果。
[0008]根据本发明的神经网络加速器,所述多ALU装置包括输入映射单元、多个算数逻辑运算单元以及输出映射单元,
[0009]所述输入映射单元用于将从所述片内存储介质或所述核心计算模块获得的输入数据映射到多个算数逻辑运算单元;
[0010]所述算数逻辑运算单元,用于根据所述输入数据执行逻辑运算,所述逻辑运算包括非线性运算;
[0011]输出映射单元,用于将所述多个算数逻辑运算单元得到的计算结果整合映射成为正确的格式,为后续存储或者其他模块使用。
[0012]根据本发明的神经网络加速器,所述输入映射单元将所述输入数据分配至所述多个算数逻辑运算单元分别执行不同的运算或者将多个输入数据一一映射至所述多个算数逻辑运算单元执行运算。
[0013]根据本发明的神经网络加速器,所述多个算数逻辑运算单元为同构设计或异构设
i+o
[0014]根据本发明的神经网络加速器,单个所述算数逻辑运算单元包括多个执行不同函数功能的子运算单元。
[0015]根据本发明的神经网络加速器,所述多ALU装置还用于在计算时根据控制信号配置各算数逻辑运算单元所执行的运算功能。
[0016]根据本发明的神经网络加速器,所述片内存储介质为静态随机存储器、动态随机存储器、增强动态随机存取存储器、寄存器堆或非易失存储器。
[0017]本发明相应提供一种采用如上所述的神经网络加速器的运算方法,包括:
[0018]根据控制信号选择进入多ALU装置运算或进入核心计算模块进行计算;
[0019]若进入所述核心计算模块则从片内存储介质获取数据执行线性运算;
[0020]若进入所述多ALU装置运算则从所述片内存储介质或所述核心计算模块获取输入数据执行所述核心计算模块无法完成的非线性运算。
[0021]根据本发明的神经网络加速器的运算方法,进入所述多ALU装置运算的步骤还包括:所述多ALU装置根据控制信号配置各算数逻辑运算单元所执行的运算功能
[0022]本发明通过在神经网络加速器中加入了多ALU装置,用于从所述核心计算模块或片内存储介质获取输入数据执行核心计算模块无法完成的运算,这些运算主要包括非线性运算。相对于现有的神经网络加速器设计,提升非线性运算的运算速度,使得神经网络加速器更加高效。
【附图说明】
[0023]图1是本发明一种神经网络加速器的结构框图;
[0024]图2是本发明一种实施例的多ALU装置的结构框图;
[0025]图3是本发明一种实施例中单个算数逻辑运算单元功能实现框图;
[0026]图4是本发明一种实施例中多个算数逻辑运算单元功能分布框图;
[0027]图5是如图1所示的神经网络加速器进行神经网络运算的流程图;
[0028]图6是本发明神经网络加速器一种实施例的核心计算模块组织框图;
[0029]图7是本发明神经网络加速器另一实施例的核心计算模块组织框图。
【具体实施方式】
[0030]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0031]如图1所示,本发明提供了一种神经网络加速器100,包括片内存储介质10、片内地址索引模块20、核心计算模块30以及多ALU装置40。其中片内地址索引模块20与片内存储介质1连接,片内地址索引模块20、核心计算模块30以及多ALU装置40两两连接。
[0032]片内存储介质10,用于存储神经网络加速器外部传来的数据或用于存储计算过程中产生的数据。该计算过程中产生的数据包括计算过程中产生的计算结果或中间结果。这些结果可能来自加速器的片内核心运算模块30,也可能来自其他运算部件,如本发明中多ALU装置40。该片内存储介质10可以是静态随机存储器(Static Random Access Memory,SRAM),动态随机存储器(Dynamic Random Access Memory,DRAM),增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,e_DRAM),寄存器堆(Register file,RF)等常见存储介质,也可以是新型的存储器件,如非易失存储器(Non-Volatile Memory,NVM)或者3D存储器件等等。
[0033]片内地址索引模块20,用于在执行运算时根据输入的索引映射至正确的存储地址。从而使得数据和片上存储模块可以正确的交互。这里的地址映射过程包括直接映射,算术变换等。
[0034]核心计算模块30,用于执行神经网络运算中的线性运算。具体的,核心计算模块30完成神经网络算法中的大部分运算,即向量乘加操作。
[0035]多ALU装置40,用于从核心计算模块或片内存储介质获取输入数据执行核心计算模块无法完成的非线性运算。在本发明中,该多ALU装置主要用于非线性运算。以提升非线性运算的运算速度,使得神经网络加速器更加高效。在本发明中,核心计算模块30、多ALU装置40与片内存储介质1的数据通路包括但不局限于H-TREE,或者FAT-TREE等互联技术。
[0036]如图2所示,多ALU装置40包括输入映射单元41、多个算数逻辑运算单元42以及输出映射单元43。
[0037]输入映射单元41,用于将从片内存储介质或核心计算模块获得的输入数据映射到多个算数逻辑运算单元42。在不同的加速器设计中可能存在不同的数据分配原则,根据不同分配原则,输入映射单元41将输入数据分配至多个算数逻辑运算单元42分别执行不同的运算或者将多个输入数据一一映射至多个算数逻辑运算单元42执行运算。这里的输入数据来源包括直接从片内存储介质10获得和核心计算模块30获得。
[0038]多个算数逻辑运算单元42,用于分别根据输入数据执行逻辑运算,逻辑运算包括非线性运算。其中单个算数逻辑运算单元42包括多个执行不同函数功能的子运算单元,如图3所示,单个算数逻辑运算单元42的功能包括乘法,加法,比较,除法,移位操作等等,也包括复杂的函数功能,如指数操作等等,单个算数逻辑运算单元42包括执行前述不同函数的一个或多个子运算单元。同时,算数逻辑运算单元42的功能应有神经网络加速器功能决定,而不局限于特定的算法操作。
[0039]多个算数逻辑运算单元42之间为同构设计或异构设计,也即算数逻辑运算单元42可以实现相同的函数功能,也可实现不同的函数功能。在如图4所示的实施例中,多个算数逻辑运算单元42的功能异构化,上面2个ALU实现乘法和加法的操作,其他ALU分别实现其他复杂功能。异构设计有利于有效的平衡ALU的功能性和开销。
[0040]输出映射单元43,用于将多个算数逻辑运算单元42得到的计算结果整合映射成为正确的格式,为后续存储或者其他模块使用。
[0041]图5是如图1所示的神经网络加速器进行神经网络运算的流程图;该流程包括:
[0042]步骤S501,根据控制信号判断是否进入多ALU装置进行计算,若是则进入步骤S502,否则进入步骤S503。本发明的控制信号由控制指令实现、直接信号实现等方式。
[0043]步骤S502,从片内存储介质或核心计算模块获取输入数据。本步骤完成后进入步骤S504。一般的,在核心计算完成后的非线性运算则片内从核心计算模块获取输入数据,如果计算的输入为缓存在片内存储介质的中间结果则从片内存储介质获取输入数据。
[0044]步骤S503,进入核心计算模块进行计算。具体的,该核心计算模块30从片内存储介质获取数据执行线性运算,核心计算模块30完成神经网络算法中的大部分运算,即向量乘加操作。
[0045]步骤S504,判断是否对ALU功能进行配置。若是则进入步骤S505,否则直接进入步骤S506。具体的,多ALU装置40也需要根据控制信号判断装置自身是否需要进行相关配置以控制各个算数逻辑运算单元42的运算功能,例如算数逻辑运算单元42需要完成特定的功能。也即,多ALU装置40还用于在计算时根据控制信号配置各算数逻辑运算单元所执行的运算功能。
[0046]步骤S505,从片内存储介质获取参数进行配置。配置完成后进入步骤S506。
[0047]步骤S506,多ALU装置进行计算。多ALU装置40用于执行核心计算模块30无法完成的非线性运算。
[0048]步骤S507,判断所有计算是否完成,是则结束,否则回到步骤S501继续进行计算。
[0049]在本发明的一个是实施例中,核心计算模块30的结构可以多种,例如图6中的一维PE(processing element,处理单元)实现方式,图7中的二维PE实现方式。在图6中,多个PE(处理单元)同时进行计算,通常为同构运算,常见的向量运算加速器即为此类实现方式。在图7的二维PE实现方式中,多个PE通常为同构计算,然而多个PE在两个维度上都有可能存在数据传递,常见的矩阵类加速器即为此类实现方式,如二维Systol ic结构。
[0050]综上所述,本发明通过在神经网络加速器中加入了多ALU装置,用于从所述核心计算模块或片内存储介质获取输入数据执行核心计算模块无法完成的非线性运算。本发明提升非线性运算的运算速度,使得神经网络加速器更加高效。
[0051]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【主权项】
1.一种神经网络加速器,其特征在于,包括片内存储介质、片内地址索引模块、核心计算模块以及多ALU装置, 所述片内存储介质,用于存储由神经网络加速器外部传来的数据或用于存储计算过程中产生的数据; 所述片内数据索引模块,用于执行运算时根据输入的索引映射至正确的存储地址; 所述核心计算模块用于执行神经网络运算中的线性运算; 所述多ALU装置用于从所述核心计算模块或所述片内存储介质获取输入数据执行所述核心计算模块无法完成的非线性运算。2.根据权利要求1所述的神经网络加速器,其特征在于,所述计算过程中产生的数据包括计算结果或中间结算结果。3.根据权利要求1所述的神经网络加速器,其特征在于,所述多ALU装置包括输入映射单元、多个算数逻辑运算单元以及输出映射单元, 所述输入映射单元用于将从所述片内存储介质或所述核心计算模块获得的输入数据映射到多个算数逻辑运算单元; 所述算数逻辑运算单元,用于根据所述输入数据执行逻辑运算,所述逻辑运算包括非线性运算; 输出映射单元,用于将所述多个算数逻辑运算单元得到的计算结果整合映射成为正确的格式,为后续存储或者其他模块使用。4.根据权利要求3所述的神经网络加速器,其特征在于,所述输入映射单元将所述输入数据分配至所述多个算数逻辑运算单元分别执行不同的运算或者将多个输入数据一一映射至所述多个算数逻辑运算单元执行运算。5.根据权利要求3所述的神经网络加速器,其特征在于,所述多个算数逻辑运算单元为同构设计或异构设计。6.根据权利要求3所述的神经网络加速器,其特征在于,单个所述算数逻辑运算单元包括多个执行不同函数功能的子运算单元。7.根据权利要求3所述的神经万络加速器,其特征在于,所述多ALU装置还用于在计算时根据控制信号配置各算数逻辑运算单元所执行的运算功能。8.根据权利要求1所述的神经网络加速器,其特征在于,所述片内存储介质为静态随机存储器、动态随机存储器、增强动态随机存取存储器、寄存器堆或非易失存储器。9.一种如权利要求1?8任一项所述的神经网络加速器的运算方法,其特征在于,包括: 根据控制信号选择进入多ALU装置运算或进入核心计算模块进行计算; 若进入所述核心计算模块则从片内存储介质获取数据执行线性运算; 若进入所述多ALU装置运算则从所述片内存储介质或所述核心计算模块获取输入数据执行所述核心计算模块无法完成的非线性运算。10.根据权利要求9所述的神经网络加速器的运算方法,其特征在于,进入所述多ALU装置运算的步骤还包括: 所述多ALU装置根据控制信号配置各算数逻辑运算单元所执行的运算功能。
【文档编号】G06F7/575GK105892989SQ201610183040
【公开日】2016年8月24日
【申请日】2016年3月28日
【发明人】杜子东, 郭崎, 陈天石, 陈云霁
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1