神经网络运算装置及应用其进行运算的方法制造方法及图纸

技术编号:18237685 阅读:30 留言:0更新日期:2018-06-17 00:53
本公开提供一种神经网络运算装置和方法,其中装置包括:运算部分,用于完成所述卷积运算,包含多个运算单元组,多个所述运算单元组呈X行Y列的阵列式分布,运算单元组间以S形方向和/或逆S形方向传递数据,其中X和Y分别为正整数;缓存,用于向所述运算单元组传送数据以及接收运算单元组运算后的数据。通过采用S形和逆S形在运算单元中完成数据的传递,从而能够有效加速神经网络运算的同时,降低了权值的反复读取和部分和反复存取所带来的访存功耗。 1

Neural network operation device and method for calculating operation thereof

The present disclosure provides a neural network operation device and method in which the device comprises an operation section for completing the convolution operation, including a plurality of operation unit groups, a plurality of operation unit groups in an array type distribution of X row Y columns, and the operation unit groups transfer data in the direction of S shaped and / or inverse S form, of which X and Y are respectively. It is a positive integer; buffer is used to transfer data to the operation unit group and receive data after operation unit group operation. Through the use of S and inverse S, the transmission of data is completed in the operation unit, which can effectively speed up the operation of neural network, and reduce the repeated reading of weights and the memory access power brought by partial and repeated access. One

【技术实现步骤摘要】
神经网络运算装置及应用其进行运算的方法
本公开涉及计算机领域,进一步涉及人工智能领域。
技术介绍
深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络被应用在了生活的各个方面。但是,深度神经网络的运算量巨大,一直制约着其更快速的发展和更广泛的应用。当考虑运用加速器设计来加速深度神经网络的运算时,巨大的运算量,必然会带了很大的能耗开销,同样制约着加速器的进一步的广泛应用。现有常用的方法是使用通用处理器(CPU)。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持神经网络算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另一种已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,片上缓存较小,使得片外带宽成为了主要性能瓶颈,带来了巨大的功耗开销。
技术实现思路
(一)要解决的技术问题有鉴于此,本公开的目的在于提供一种可重构的S形运算装置及运算方法,以解决以上所述的至少部分技术问题。(二)技术方案根据本公开的一方面,提供一种神经网络运算装置,用于进行卷积运算,包括:运算部分,用于完成所述卷积运算,包含多个运算单元组,多个所述运算单元组呈X行Y列的阵列式分布,运算单元组间以S形方向和/或逆S形方向传递数据,其中X和Y分别为正整数;缓存,用于向所述运算单元组传送数据以及接收运算单元组运算后的数据。在进一步的实施方案中,还包括控制部分,用于对所述运算部分和缓存进行控制,使两者能够相互协作,完成所需功能。在进一步的实施方案中,每个所述运算单元组包括:多个所述运算单元,呈M行N列的阵列式分布,运算单元间以S形方向和/或逆S形方向传递数据,其中M和N分别为正整数。在进一步的实施方案中,每个所述运算单元组包括:两个或以上乘法器;两个或以上加法器;所述运算单元内设置有至少一内部存储部分,该内部存储部分与所述乘法器和/或加法器连接。在进一步的实施方案中,每个运算单元组还包含两个选择器,用于跳过该运算单元中的乘法器和加法器:当该运算单元需要进行运算的时候,选择器选择加法器的结果作为运算单元的输出;或者当该运算单元无需进行运算的时候,选择器直接将输入数据输出。在进一步的实施方案中,每个运算单元组还用于单独传递数据给缓存部分,还用于在控制部分的控制下,选择不同的输出通路,以实现串行工作或并行工作。根据本公开的另一方面,提供应用以上任一所述神经网络运算装置进行卷积运算的方法,包括:设定卷积核,卷积核大小为大于一个运算单元组中的运算单元个数;将多个运算单元组组合成为一个运算单元族,使得运算单元族内的运算单元组按照串行的运算方式进行数据传递和运算,运算单元族间按照并行的运算方式进行数据的传递和运算。在进一步的实施方案中,还包括:将输出特征图对应的权值数据送入各运算单元的内部存储部分;将待运算的神经元分别送入运算单元中进行乘法和加法运算;进行加法后的运算结果按所述S形或逆S形方向传递给下一运算单元进行运算。在进一步的实施方案中,当一运算单元组中运算单元的个数等于卷积核大小时,将运算结果进一步进行激活操作。在进一步的实施方案中,当一运算单元组中运算单元的个数小于卷积核大小时,将运算结果作为临时的数据,送入下一运算单元组继续运算。(三)有益效果(1)本公开的神经网络运算装置采用S形和逆S形在运算单元中完成数据的传递,同时结合神经网络“权值共享”的特性,从而能够有效加速神经网络运算的同时,降低了权值的反复读取和部分和反复存取所带来的访存功耗。(2)本公开的神经网络运算装置具有多个运算单元组,运算单元组可以支持并行计算,从而可以使各运算单元组读取并共享同一组神经元数据,同时计算多个输出特征图的数据,提高了神经元数据的利用率和运算效率。(3)本公开的神经网络运算装置可以将多个运算单元组进行组合,在控制部分的控制下调整运算数据和结果数据的传递方式。在运算过程中,能够满足同一个运算网络中具有不同权值规模的情况,近一步扩大了运算部分的适用范围,提高了装置中运算单元的利用率,加快了神经网络的运算速度。附图说明图1是本公开一实施例的神经网路运算装置的示意图。图2是本公开一实施例神经网络运算装置数据流动方向示意图。图3是本公开另一实施例神经网络运算装置数据流动方向示意图。图4是图1中运算单元组的示意图。图5是图1中含一运算单元组的示意图。图6为将三个运算单元组进行组合成为一个运算单元族的示意图。图7为图1中一运算单元的示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。本公开的主要结构如图1所示,其主要分为运算部分、存储部分。运算部分用于完成运算,包含多个运算单元组,每个运算单元组中包含多个运算单元和2个或以上算术逻辑单元(ALU)。存储部分用于保存数据,包括外部存储部分和内部存储部分,外部存储部分在运算单元外部,可以分为多个区域,分别用于保存输入数据、输出数据、临时缓存;内部存储部分位于运算部分内部,用于保存待运算数据。优选的情况还包括控制部分,用于对该装置的各个部分的控制,使其能够相互协作,完成所需功能。运算部分包含X*Y个运算单元组,包括X*Y(X、Y均为任意正整数)个运算单元组,呈X行Y列的二维阵列形式排布,运算单元组间以S形方向或逆S形方向传递数据。每个运算单元组可以传递数据给缓存部分,在控制部分的控制下,选择不同的输出通路,从而运算单元组可以串行工作或并行工作。即,每个运算单元组可以串行工作,即接收来自左/右侧运算单元组传递而来的数据,运算完毕后,将输出数据向右/左侧的运算单元组传递。最后一个运算单元组将最终结果经过缓存后,传入存储模块中进行保存,其数据流动方向如图2所示。运算单元组之间也可以并行工作,即初始数据通过原s形路径传递至各运算单元组中,运算单元组共享运算数据,并进行运算。每个运算单元组将自己的运算结果直接传送到缓存中缓存并整理,待运算完毕后,缓存中的数据输出至存储模块中进行保存,其数据流动方向如图3所示。如图4所示,每个运算单元组中包括M*N(M、N均为正整数,优选的M=N=3或M=N=5)个运算单元,呈M行N列的二维阵列形式排布,运算单元间以S形方向或逆S形方向传递数据。每个运算单元包括两个或以上乘法器(用“X1”“X2”等表示第一个乘法器、第二个乘法器等)和两个或以上加法器(用“+1”“+2”等表示第一个加法器、第二个加法器等),一个内部存储单元。每个运算单元中的乘法器每次从外界读取数据,和内部存储单元中的数据进行相乘,乘积送入加法器中。加法器将沿S形或逆S形传来的数据和乘法器的乘积相加,结果沿S形或逆S形传递到下一运算单元的加法器中。其中非奇数号(即第零个、第二个……)加法器接受S形方向传递来的数据进行加法运算,并将结果按照S形方向继续传递;奇数号(即第一个、第三个……)加法器接受来自逆S形传递来的数据,并将结果继续按逆S形传递。当本文档来自技高网...
神经网络运算装置及应用其进行运算的方法

【技术保护点】
1.一种神经网络运算装置,用于进行卷积运算,其特征在于,包括:

【技术特征摘要】
1.一种神经网络运算装置,用于进行卷积运算,其特征在于,包括:运算部分,用于完成所述卷积运算,包含多个运算单元组,多个所述运算单元组呈X行Y列的阵列式分布,运算单元组间以S形方向和/或逆S形方向传递数据,其中X和Y分别为正整数;每个运算单元组包括多个所述运算单元,呈M行N列的阵列式分布,运算单元间以S形方向和/或逆S形方向传递数据,其中M和N分别为正整数。缓存,用于向所述运算单元组传送数据以及接收运算单元组运算后的数据。2.根据权利要求1所述的神经网络运算装置,其特征在于,还包括控制部分,用于对所述运算部分和缓存进行控制,使两者能够相互协作,完成所需功能。3.根据权利要求1所述的神经网络运算装置,其特征在于,每个所述运算单元组包括:两个或以上乘法器;两个或以上加法器;所述运算单元内设置有至少一内部存储部分,该内部存储部分与所述乘法器和/或加法器连接。4.根据权利要求3所述的神经网络运算装置,其特征在于,每个运算单元组还包含两个选择器,用于跳过该运算单元中的乘法器和加法器:当该运算单元需要进行运算的时候,选择器选择加法器的结果作为运算单元的输出;或者当该运算单元无需进行运算的时候,选择器直接将输入数据输出。5.根据权利要求1所述的神经网络运算装置,其特征在于,每个运算单元组还用于单独传递数据给缓存部分,还用于在控制部分的控制下,选择不同的输出通路...

【专利技术属性】
技术研发人员:周聖元陈云霁陈天石刘少礼郭崎杜子东刘道福
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1