CN110210615B - 一种用于执行神经网络计算的脉动阵列系统 - Google Patents
一种用于执行神经网络计算的脉动阵列系统 Download PDFInfo
- Publication number
- CN110210615B CN110210615B CN201910609315.9A CN201910609315A CN110210615B CN 110210615 B CN110210615 B CN 110210615B CN 201910609315 A CN201910609315 A CN 201910609315A CN 110210615 B CN110210615 B CN 110210615B
- Authority
- CN
- China
- Prior art keywords
- matrix
- array
- unit
- weight matrix
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 50
- 238000004364 calculation method Methods 0.000 title claims abstract description 39
- 239000011159 matrix material Substances 0.000 claims abstract description 448
- 238000012545 processing Methods 0.000 claims abstract description 98
- 210000002569 neuron Anatomy 0.000 claims abstract description 91
- 230000005540 biological transmission Effects 0.000 claims abstract description 73
- 230000010349 pulsation Effects 0.000 claims abstract description 45
- 230000017105 transposition Effects 0.000 claims abstract description 23
- 230000008878 coupling Effects 0.000 claims abstract description 18
- 238000010168 coupling process Methods 0.000 claims abstract description 18
- 238000005859 coupling reaction Methods 0.000 claims abstract description 18
- 238000003491 array Methods 0.000 claims abstract description 15
- 238000012546 transfer Methods 0.000 claims description 13
- 238000007667 floating Methods 0.000 claims description 12
- 238000007781 pre-processing Methods 0.000 claims description 9
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 2
- 230000003139 buffering effect Effects 0.000 abstract description 3
- 230000010485 coping Effects 0.000 abstract 1
- 239000008358 core component Substances 0.000 abstract 1
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 238000005457 optimization Methods 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 57
- 238000000034 method Methods 0.000 description 50
- 239000010410 layer Substances 0.000 description 28
- 230000008569 process Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 24
- 238000013461 design Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例公开了一种神经网络乘加的系统和设备,本公开基于脉动阵列系统建立,核心组成包括:脉动阵列单元,用于数据传输和乘加计算,由若干相同的处理单元耦合而成;存储阵列,用于将传输脉动阵列单元的矩阵进行暂存和缓存处理,存储阵列包括与权值数据和神经元数据相关的多种性质数据对应的不同存储阵列。通过存储阵列与脉动阵列单元的相对位置优化,实现了数据矩阵在脉动阵列单元内部的可控转置。另一方面,多种存储阵列的存在,使得在采用本发明实施例时,能够解决现有脉动阵列系统难以实现的高效流水作业,提高了装置运行效率,还使脉动阵列系统具有能够应对多个不同权值矩阵的灵活性。
Description
技术领域
本发明涉及人工智能技术,尤其涉及一种实施神经网络矩阵乘加运算方法和装置。
背景技术
当下来自物联网、互联网的可用数码数据呈指数增长,这驱动了对高性能数据分析算法的需求,在众多算法中又以深度神经网络(Deep Neural Network,DNN)尤为突出,其应用领域包括目标识别、自动驾驶和无人机导航等。但深度神经网络的实现需要进行大量数据的传输和计算,传统处理架构在面对复杂度高且数量巨大的数据传输和运算时无法实现平衡且高效运行,主要体现在海量的数据传输、载入、计算在使用传统的处理架构时存在资源占用多、运算速度慢、能量消耗大等问题。因此,一个能提高计算效率且能高传输数据流的方法对于实现深度神经网络计算至关重要。
脉动阵列(Systolic Array)结构是一种由多个处理单元耦合形成的网络,每个重复的处理单元可以独立地进行计算,并将结果传递给周围的处理单元。脉动阵列的结构特性使它能够在消耗较小的内存带宽的基础上实现高的运算吞吐量,这恰好满足了深度神经网络计算的特点需求。脉动阵列使数据传输在阵列内部进行,通过使数据在处理单元间不断流动,降低了系统的负担。此外,由于脉动阵列具有复用计算单元的特性,还以较小带宽实现了较高的运算吞吐率。但目前的脉动阵列灵活性较差且不能在脉动阵列中实现矩阵变换,例如在深度神经网络运算中除了载入最常用的权值矩阵,在核心的反向传播运算中需要载入转置的权值矩阵时需要停止数据流动,求出转置的权值矩阵后再载入网络。另一方面,目前的脉动矩阵仅支持将权值固定在阵列中再进行运算的形式,这使得每次载入新的权值矩阵时均需要停止数据流动,造成较大的时滞。
发明内容
本发明的目的之一在于提供一种基于脉动阵列的神经网络计算装置,以解决现有脉动阵列灵活性差、运算涉及多个权值矩阵时效率较低等技术问题。
为实现上述目的,根据本发明的第一方面,提供了一种用于执行神经网络计算的脉动阵列系统。该系统提供有输入矩阵,输入矩阵包括权值矩阵和神经元数据矩阵,该脉动阵列系统包括脉动阵列单元、存储阵列、运算单元和控制单元。其中脉动阵列单元由若干结构相同的处理单元构成二维矩阵形式,每个处理单元至少包括一个内置的运算器和两个内置的寄存器,每个处理单元在脉动阵列单元的行方向上和列方向上与相邻的处理单元耦合。每个处理单元接收控制单元指令,并使用内置的运算器对输入矩阵中的元素执行相关运算得到结果矩阵,每个处理单元还使用内置的寄存器将接收到的输入矩阵的元素或结果矩阵的元素沿对应矩阵的传动方向传递给下一个处理单元。其中运算单元由处理单元中的运算器耦合而成。
具体的,存储阵列包括转置权值矩阵存储阵列,转置权值矩阵存储阵列设有输入端阵列,该输入端阵列为第一输入端阵列,转置权值矩阵存储阵列的输入端为第二输入端阵列。第一输入端阵列与脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,与第一输入端阵列相连的脉动阵列单元外边缘与输入矩阵的传入方向平行。
存储阵列还包括神经元数据矩阵存储阵列,神经元数据矩阵存储阵列的输入端阵列为第二输入端阵列,第二输入端阵列与脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,脉动阵列单元中与第一输入端阵列和第二输入端阵列连接处的两条外边缘相邻或平行;
存储阵列用于接收外部传入脉动阵列单元的上述输入矩阵,并按照先进先出规则将其输出到运算单元进行运算得到结果矩阵。
本发明通过使输入端阵列相互正交的存储阵列改变权值矩阵流向从而实现转置,与现有的通过算法变换预处理实现矩阵转置再输入脉动阵列不同,本发明通过简单改变存储阵列输入端位置来实现矩阵转置的形式更为优越。这不仅不会增加每个运算单元的设计逻辑复杂度和布局布线的复杂度,还消除了外部进行转置所需的预处理成本,减少了额外输入转置矩阵所需的传输成本,降低了功耗。同时,仅传输权值矩阵的并存储的同时将转置矩阵存储于系统中,避免了现有技术方案中存在的多次传入矩阵导致的操作复杂问题,提升了脉动阵列系统的效率和实用性。这种利用改变矩阵传输方向来实现矩阵转置的方法在深度神经网络中最适用于对权值矩阵进行转置,但这种方法也适用于其他需要转置的矩阵。
优选地,向脉动阵列系统中传入的输入矩阵呈平行四边形排布,将平行四边形矩阵中与脉动阵列单元的侧边缘平行的一组对边作为平行边,平行边中最先传入脉动阵列单元的一条为前锋平行边,另一组对边作为斜边,斜边中最先传入脉动阵列单元的一条为前锋斜边。
当使用平行四边形排布的阵列时,无需在脉动阵列内部进行矩阵形状调整,从而可以减少控制信号输入,降低传动系统的复杂度。
更为优选地,脉动阵列单元中还包括载入网络,载入网络由搭载了载入网络单元的处理单元耦合而成,载入网络单元至少包括一个权值矩阵转置选择器和一个神经元数据传送选择器。具体地,载入网络用于将输入矩阵加到脉动阵列单元并储存到相应存储阵列中。载入网络的引入将数据载入过程使用的寄存器网络与数据传动运算过程使用的寄存器网络分开使用,从物理层面上确保了数据载入和传动运算过程在同时进行的时候不会出现寄存器读写错误,并且可以实现数据载入和传动运算的并行运行,提高了系统效率。
更为优选地,存储阵列还包括权值矩阵存储阵列,权值矩阵存储阵列设有输入端阵列,该输入端阵列为第三输入端阵列,第三输入端阵列与脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,脉动阵列单元中与第一输入端阵列和第三输入端阵列连接处的两条外边缘相邻;
当载入网络用于接收外部传入的权值矩阵时,控制单元控制权值矩阵沿传入方向进入载入网络并以此为第一方向流动,权值矩阵控制信号与权值矩阵同步传入脉动阵列单元,当权值矩阵的前锋斜边流动到与脉动阵列单元的一条对角线重合的位置时,控制单元根据权值矩阵控制信号进行如下操作:
若接收到的权值矩阵控制信号为矩阵无需转置信号,控制单元则控制权值矩阵继续沿第一方向流动,最终进入权值矩阵存储阵列;
若接收到的权值矩阵控制信号为矩阵转置信号,控制单元则将权值矩阵流动方向转到正交于第一方向并以转置权值矩阵存储阵列为终点的第二方向,然后沿此方向继续流动,直至进入转置权值矩阵存储阵列。
以上方法通过改变菱形矩阵传输方向和矩阵存储阵列的位置实现了矩阵的转置,在深度神经网络中该方法最适用于对权值矩阵进行转置。同样地,该方法还实现了权值矩阵及其转置矩阵的同步存储。显然,这种方法还可以对权值矩阵之外的其他矩阵进行转置。
更为优选地,脉动阵列单元还包括传动运算网络,传动运算网络由搭载了传动运算网络单元的处理单元耦合而成,传动运算网络单元至少包括一个权值矩阵数据选择器、一个乘加器、一个部分结果加法器、一个神经元数据流水寄存器、一个部分结果寄存器。传动运算网络在控制单元的控制下接收权值矩阵或转置权值矩阵中的一个,并接收神经元数据矩阵,接收后将上述两矩阵流动至处理单元中进行运算,最后将计算出的结果矩阵经传动运算网络传出脉动阵列单元。
传动运算网络配合原矩阵/转置矩阵的设计,进行矩阵流水移动和运算,形成在原矩阵/转置矩阵之间可以灵活选择的可配置式的脉动阵列,相比现有技术更具灵活性。同样地,这种设计并不限于对权值矩阵及其转置矩阵的选择和运算。
更为优选地,上述传动运算网络接收来自相应存储阵列的权值矩阵或转置权值矩阵,由控制单元控制权值矩阵沿第一方向的反方向流动,或控制转置权值矩阵沿第二方向的反方向流动。当权值矩阵或转置的权值矩阵中前锋平行边上的所有矩阵元素完全进入传动运算网络并经其输出到处理单元之后,控制单元控制神经元数据矩阵输入到传动运算网络并沿传入方向流动,然后将神经元数据矩阵中的元素传输到相应处理单元并与权值矩阵或转置权值矩阵中的元素进行运算。当权值矩阵或转置权值矩阵无需复用时,在传入传动运算网络后即固化在第二存储单元的权值寄存器或转置权值寄存器中。当存在多个不同的权值矩阵及相应的转置权值矩阵时,在上一个权值矩阵或转置权值矩阵的第一个元素进入传动运算网络之后,将下一个权值矩阵立即输入载入网络。
传动运算网络与载入网络的配合,改变了现有技术中每当需要加载新的权值矩阵或转置权值矩阵时将脉动矩阵停止流动后,再重新传入矩阵数据这种延时大、能耗多的方案。本发明的技术方案使得流水传动无需停止即可加载新的矩阵。此外,新矩阵加载可以与旧矩阵传送良好衔接,使得脉动阵列系统中的存储单元与存储阵列的空置减少到最低,实现流水化传动。
优选地,脉动阵列系统中还包括输入输出总线,输入矩阵和结果矩阵均由同一输入输出总线进出脉动阵列系统。
用同一输入输出总线完成矩阵传输的设计使得数据出入布线极为简便,而在总线中使用不同输入输出通道使得数据出入所用传输系统分离,数据间传输不会相互影响。
优选地,每个处理单元中还包括数据预处理单元,当输入矩阵的数据类型均为浮点数或均为整数时,直接输入运算单元进行计算;当输入矩阵的数据类型为浮点数和整数混合时,运算单元通过数据预处理单元将整数转换为浮点数,然后再进入运算单元进行计算。
该设计对现有技术中仅支持同类型数据计算的脉动阵列系统进行了改进,增设了支持浮点数与整数混合数据的直接运算。混合数据无需在进入脉动阵列系统前耗费软硬件系统进行数据统一化处理,在深度神经网络实际应用中提高了数据运算效率。
优选地,当输入矩阵的大小大于脉动阵列单元的大小时,控制单元根据待输入脉动阵列单元的大小将输入矩阵分块,并映射到多个脉动阵列单元中;当输入矩阵小于脉动阵列单元的大小时,仅启动该矩阵大小范围内的运算器进行运算,其余运算器自动关闭并输出零。
本发明中的脉动阵列系统,能够对与脉动阵列单元大小不同的输入矩阵进行处理和运算。另外,在输入比脉动阵列单元更小的矩阵并进行运算时,通过关闭该情形下冗余的计算器,实现了系统节能。
根据本发明的第二方面,提供了一种神经网络处理设备。该设备至少包括如上第一方面所描述的脉动阵列系统。
本发明在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种使用硬件电路执行对神经网络给定层的计算实例性过程的流程图。
图2是本发明实施例提供的一种脉动阵列系统的结构示意图。
图3是本发明实施例提供的另一种脉动阵列系统的结构示意图。
图4是本发明实施例提供的一种处理单元内部的载入网络单元的结构示意图。
图5是本发明实施例提供的一种处理单元内部的传动运算网络单元的结构示意图。
图6是本发明实施例提供的一种示例的采用本发明脉动阵列系统进行神经网络处理的执行流程示意图。
图7是本发明实施例提供的一种脉动阵列系统中权值矩阵与神经元数据矩阵相乘的示例图。
图8是本发明实施例提供的一种权值矩阵传入和权值矩阵转置选择的过程示意图。
图9是本发明实施例提供的一种权值矩阵和转置权值矩阵进入存储阵列以及到达存储位置的过程示意图。
图10是本发明实施例提供的一种神经元数据矩阵进入存储阵列并到达最终位置的过程示意图。
图11是本发明实施例提供的一个神经元数据矩阵读取、传输并与权值矩阵计算的前半部分过程示意图。
图12是本发明实施例提供的一个神经元数据矩阵读取、传输并与权值矩阵计算的后半部分过程示意图。
图13是本发明是提供的一种矩阵乘加处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序,或者不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面,对本发明实施例一种用于执行神经网络计算的脉动阵列系统涉及的相关实施例进行具体说明,其中,“脉动阵列”与“脉动阵列单元”、“FIFO存储阵列”与“FIFO”常可被互换使用。
具有多层的神经网络能够用于计算推理。例如,给定一个输入,神经网络能够计算该输入的推理。神经网络通过处理各个层的输入并将其进行层间传递来计算该推理。特别的,神经网络的层按顺序排列,分别具有相应的一组或多组权值。各个层接收输入,且每一层均由多个神经元节点构成,本层神经元节点的输出值(本文称为神经元数据)根据用于该层的其中一组权值处理以生成该层输出。
因此,为了从接收的输入计算出推理,神经网络接受神经元数据并且按顺序经过各个神经网络层处理该输入以产生推理,来自一个神经网络层的输出作为输入提供给下一神经网络层。
在一些实现当中,神经网络的层布置在有向的图中。即任何特定层都能够接收单个输入、多个输出或者二者均有。在一些实现中,神经网络的层还能够布置成使得层的输出能够被作为输入发送回到在前的层。
图1是本发明实施例提供的一种使用硬件电路执行对神经网络给定层的计算实例性过程100的流程图。为了方便,使用能够执行方法100的一个或多个电路的系统来描述方法100,从而能够对神经网络各层执行方法100,以便从接受的输入计算推理。
系统接收给定层的权值矩阵(步骤101)以及神经元数据矩阵(步骤102)。权值矩阵和神经元数据矩阵能够分别从专用硬件电路的外部传入并使用内部存储结构来接收,权值矩阵和神经元数据均从内部存储结构中接收也是一种实现方式。在一些深度神经网络(DNN)的实现中,给定层可能存在上行的认知权值矩阵和下行的生成权值矩阵等多个权值矩阵,且层间权重在生成过程中需要不断修改使得待输入的不同权值矩阵数量庞大。
系统使用硬件电路的矩阵乘法单元,从权值矩阵和神经元数据矩阵生成累加值(步骤103)。通常地,累加值是权值矩阵和神经元数据矩阵的点积。即对于一个权值矩阵,系统能够使其中各个元素与各个神经元数据矩阵中的元素相乘,并将乘积全部加和以生成累加值。然后,系统还能够计算其权值矩阵与其他神经元矩阵的点积。在一些实现中,权值矩阵还可以是初始权值矩阵的转置矩阵。
系统能够使用硬件电路的矢量计算单元,从累加值生成层输出(步骤104)。在一些实现中,计算单元对累加值应用激活函数得到该层的输出,为神经元引入非线性元素。该层的输出能够存储在存储结构中,用作对神经网络中的后续层的输入,或者能够用于确定推理。当接收的输入已经通过神经网络各个层而被处理以生成其推理时,系统完成了对神经网络的处理。
为了提高神经网络的处理和运算速度,可采用定制的脉动阵列系统来实现神经网络中的运算,参见图2中本发明实施例提供的一种脉动阵列系统的结构示意图。
整体而言,该实施例中的脉动阵列系统200是由处理单元240耦合而成的,以二维形式存在的脉动阵列单元,其工作原理主要基于存储-控制-计算的基本结构。其中存储结构主要是存储阵列,用于存储参与计算的神经元数据矩阵、神经网络权值矩阵及其转置矩阵等;控制结构主要用于解析操作指令,生成控制信号,并将信号用于控制脉动阵列单元内部数据的调度和存储以及神经网络的计算过程;计算结构用于在脉动阵列单元中实现神经网络的计算操作,保证神经元数据在计算单元中能够正确地与相应权值进行计算。存储结构、控制结构和计算结构之间可以互相通信。
如图2所示,存储阵列进一步细分为权值矩阵存储阵列211,转置权值矩阵存储阵列212和神经元数据矩阵存储阵列213。
其中,权值矩阵存储阵列211用于存储外部输入脉动阵列系统的神经网络权值矩阵;转置权值矩阵存储阵列212用于存储经脉动阵列系统内部将权值矩阵转置后得到的矩阵;神经元数据矩阵存储阵列213用于存储参与计算的神经元数据,包括原始特征数据和参与中间层计算的数据。通过将存储阵列进行细分,可将不同性质的矩阵数据集中存储,以便选择合适的存储介质并可简化寻址操作等。本发明的存储阵列最常见的实现方式是先进先出储存器(FIFO,First In First Out),FIFO是一种被广泛用于数据缓冲和时钟隔离的电路器件,常用于高速数据采集、多处理器接口和通信中的高速缓冲等领域。本发明所使用的存储阵列可以是静态随机存储器(SRAM)、动态随机存储器(DRAM)、寄存器堆等常见存储介质、也可以是3D存储器件等新型的存储类型。
矩阵数据向存储阵列的写入和读取都被控制单元220所调度来实现,存储阵列中的数据最终都参与神经网络计算并由计算单元230完成。
控制单元220负责指令解析、数据调度,过程控制等。例如将指令译码并控制存储阵列写入或输出数据,以及使用解析得到的控制信号调度数据并控制计算机单元进行神经网络计算。在本发明的一些实现中,将参与神经网络运算的输入数据根据脉动矩阵的数据承载力分割成不同大小的矩阵,由控制单元控制根据指令要求加载、转置、传送和存储参与运算的涵盖权值矩阵和数据矩阵的不同性质矩阵。具体地,在本发明的一个实施例中,
首先,控制单元控制了权值矩阵的转置。若权值矩阵需要转置,则将权值矩阵经过脉动阵列单元底部的输入输出总线250输入脉动阵列单元,并转向传送至位于脉动阵列单元侧面的转置权值矩阵存储阵列212;若权值矩阵无需转置,则将权值矩阵经脉动阵列单元传送至其顶部的权值矩阵存储阵列211。此设计中的亮点无疑是仅通过改变权值的传送路径就将其成功进行转置,无需外部提前预处理且不影响脉动阵列的流水运行,更进一步地,还实现了转置矩阵乘法和非转置矩阵乘法的混合运行
然后,在权值矩阵进入相应存储阵列后,控制单元还控制其中先进先出(FIFO)存储阵列中的读写指针,并指示对应FIFO存储阵列进行读写操作。对于本实施例中的向权值矩阵FIFO写入矩阵操作,由控制单元控制权值矩阵从权值矩阵存储FIFO下方进入,并最终流水移动至矩阵完全进入该FIFO;相应地,对于转置权值矩阵向转置权值矩阵FIFO中写入的操作,将转置后的权值矩阵从转置权值FIFO左边流水移动到右边,直至矩阵完全进入该FIFO。
此外,控制单元还控制权值矩阵从存储阵列中的读取以及向运算单元的流水移动。当权值矩阵完全进入对应FIFO完成缓冲以后,需要将权值矩阵从FIFO中取出并载入到脉动阵列单元中以最终进入相应运算单元进行计算。当载入发生时,控制单元根据控制信号选择从权值矩阵FIFO或转置权值矩阵FIFO中取出目标矩阵,并将取出的目标矩阵在原FIFO中的存储位置标记为空。
在脉动阵列系统中可以包括一个或多个计算单元(如计算单元230表示了每个计算单元的基本结构),每个计算单元230可根据从控制单元220获取的控制信号将执行相应的神经网络计算。计算单元230与各个存储阵列相连,以获得数据进行计算并将结果写入到存储阵列。在本发明的一个具体实施中,权值矩阵存储阵列211的输入端阵列位于计算单元230上方,转置权值矩阵存储阵列212的输入端阵列和神经元数据矩阵存储阵列213的输入端阵列均位于计算单元230左侧,存储阵列的数量并没有特别限制。各个计算单元230的内部构架子单元通常采用相同的结构,也可以采用不同结构,可以执行相同的计算,也可以执行不同的计算。在本发明的一个具体实施中提供的计算单元230由多个运算器耦合而成,运算器是以脉动阵列形式组织的处理单元240中的一个器件。其中运算器对收到的神经元数据和权重进行运算,将结果从脉动阵列下方输出。但应理解的是,脉动阵列中也可以包括以其其他形式进行计算的运算单元,可以由控制单元根据实际需求选择不用计算单元来处理数据。此外,本文中的“左”,“右”,“上”,“下”等实质本发明的各个部分,这些术语指的是图中所示出的相应方向,不应解释为对本发明物理实现的限制。
在图2的实施例中,处理单元240采用二维矩阵组织方式偶合成脉动阵列单元,包括行阵列和列阵列,且每个处理单元只与相邻的处理单元相连并只与其进行通信,不同类型的数据可以从不通过方向输入脉动阵列单元。例如,在图2中权值矩阵可以从上方的权值矩阵存储阵列211中输入脉动阵列单元,并在列方向上进行脉动传播,而神经元数据矩阵或转置权值矩阵从左侧的相应的神经元数据矩阵存储阵列213和转置权值矩阵存储阵列212输入并控制其在行方向上进行脉动传播。
在脉动阵列系统中的一个可选的实施方案中还包括输入输出总线250,不同权值矩阵和神经元数据矩阵经输入输出总线250传入脉动阵列单元,由计算单元计算得到的结果矩阵由输入输出总线250传出脉动阵列单元。
示例性地,请参见图3中本发明实施例提供的另外一种脉动阵列系统300的结构示意图。在实际应用中,转置权值矩阵存储阵列312的输入端阵列和神经元数据矩阵存储阵列313的输入端阵列部署的位置还可以根据实际需求调整到计算单元330的右侧,具体部署数量并不做限定,可根据实际需求进行调整。在实际应用中,转置权值矩阵存储阵列312的输入端阵列和神经元数据矩阵存储阵列313的输入端阵列并不限于布置在计算单元同侧,上述两种矩阵的输入端可以根据实际需求分别布置在计算单元左侧或右侧。对于神经元数据矩阵存储阵列313的输入端阵列,在实际情况需要时还可以布置在计算单元的上方,此时需要对神经元数据矩阵进行预处理,将矩阵转换成适合该存储矩阵结构方式的处理后的神经元数据矩阵。
如图3所示的脉动阵列系统300包括转置权值矩阵存储阵列312、神经元数据矩阵存储阵列313、控制单元320、计算单元330、由处理单元340耦合而成的脉动阵列单元和输入输出总线350。计算单元330可参照图2所述实施例中的相关阐述,是由处理单元内部的计算器耦合而成的,而处理单元340耦合后形成了脉动阵列单元,因此计算单元330可以看做是脉动阵列单元下的一个子系统,与脉动阵列单元在物理层面上一样由处理单元340耦合而成,但仅使用了其中耦合的运算器部分。
相比图2中的脉动阵列系统,脉动阵列系统300更适于处理权值矩阵不发生变化或发生变化的频率很低的神经网络计算。脉动阵列系统300选择将权值矩阵直接传入到脉动阵列单元中,在每个处理单元内部的权值寄存器中存储(处理单元内部结构见图4),从而可以不引入权值矩阵存储阵列做缓存处理,使得装置整体在空间利用上效率更高。这一选择处理更显示了本发明中脉动阵列系统的设计灵活性以及对不同实际应用情形的良好适应性。
通过存储阵列位置的改变,不同类型的数据可以从与图2实施例中不同的方向输入脉动阵列单元。例如,在图3中权值矩阵可以从下方的输入输出总线350直接输入脉动阵列单元,在列方向上进行脉动传播并最终存储到相应处理单元的寄存器中,而神经元数据矩阵或转置权值矩阵从右侧的相应的转置权值矩阵存储阵列312和神经元数据矩阵存储阵列313输入并控制其在行方向上进行脉动传播。可以理解地,在本发明的具体实施中,按照不同的实际需求,矩阵的初始传播方向由矩阵传入脉动阵列单元的方向所决定,而非固定不变的。
其他未讨论的如控制单元320、计算单元330和处理单元340与图2中给出的功能和结构并无本质区别,此处不再赘述。
本装置的数据传输系统可以划分为两种,载入网络和传动运算网络。载入网络负责将接收从外部传入的矩阵并将其经过脉动阵列单元传入矩阵类型对应的存储阵列中;传动运算网络则将内部或外部存储装置传入的矩阵进行数据流动,最终将矩阵中的元素传送至目标处理单元的寄存器中以进行后续计算。
请参见图4中本发明实施例提供的一种处理单元内部的载入网络单元的结构示意图。单个载入网络单元400包括权值矩阵转置选择器411和神经元数据传送选择器412,这两个不同的选择器分别用于权值矩阵和神经元数据矩阵的传输和方向改变。权值矩阵转置选择器411接收上一个处理单元的权值矩阵转置选择器输出的权值或转置权值数据,将权值数据或者转置权值数据发送给下一个处理单元中的权值矩阵转置选择器;神经元数据传送选择器412能对神经元数据起到类似的传递作用。权值矩阵转置选择器411在具体的实施中,可以由两个寄存器和一个逻辑判断单元构成,以实现选择数据传递方向和数据寄存的功能,使用其他类似或相近的结构实现上述功能的,也能够作为矩阵转置选择器。类似地,该种结构和功能也对神经元数据传送选择器412适用。此外,以上两种选择器均具有将数据流向顺时针或逆时针转向作用,以实现不同矩阵能够向不同设计情况下位于不同位置的相应存储阵列流动并最终写入其中。其中转置选择器,也就是对一组矩阵进行转向90度和向前传播的选择装置,在我们查找的资料中,从未有应用于脉动阵列系统的先例。
以图2中神经元数据矩阵存储阵列和转置权值矩阵存储阵列输入端均位于脉动阵列单元左侧,权值矩阵存储阵列输入端位于脉动阵列单元上方的情形为例。当传入矩阵为权值矩阵时,权值矩阵数据的传输应该是从下到上的,对应到图4中即位于权值矩阵转置选择器411上方和下方箭头所示的方向,以进入位于脉动阵列单元上方的权值矩阵存储阵列;当权值矩阵需要做转置处理时,转置矩阵数据传输方向变为从右到左,即图4中位于权值矩阵转置选择器411左侧和右侧箭头所示的方向,以使转置权值矩阵能够进入转置权值矩阵存储阵列;对于神经元数据矩阵,当矩阵从下方传入脉动阵列单元后,传输方向应为从下到上,如图4中神经元数据输入/输出1所示的方向,当矩阵需要进入神经元数据矩阵存储阵列时,数据传输方向应变为从右到左,即图4中神经元数据输入/输出2所示的方向。可以理解的是,以上表述中的传输方向仅为相对方向,不应以此作为物理上实施的限制,且传输方向可以根据最终需要输入的存储阵列所在的具体方位而调整。
如图5中本发明的实施例提供的一种处理单元内部的传动运算网络单元的结构示意图。图5所示的传动运算网络500包括权值矩阵数据选择器513、乘加器521、部分结果加法器522、神经元数据流水寄存器531以及部分结果寄存器532。具体的,以图2中神经元数据矩阵存储阵列和转置权值矩阵存储阵列输入端均位于脉动阵列单元左侧,权值矩阵存储阵列输入端位于脉动阵列单元上方的情形为例。其中,权值矩阵数据选择器513将从存储阵列中传出的权值矩阵或者转置权值矩阵中的数据存储或传输到下一个处理单元的权值矩阵数据选择器,乘加器521接收神经元数据流水寄存器531和权值矩阵数据选择器513传入的数据并对其进行乘加运算,然后将结果输出到部分结果加法器522中进行与累加输入数据进行累加运算,得到的累加运算结果存储于部分结果寄存器532中。
具体的,以图2中神经元数据矩阵存储阵列和转置权值矩阵存储阵列输入端均位于脉动阵列单元左侧,权值矩阵存储阵列输入端位于脉动阵列单元上方的情形为例。当权值矩阵数据选择器513在接收到自脉动阵列单元上方存储阵列传入的权值矩阵数据时,若该处理单元是给定权值数据目标单元,则将其暂存等待神经元数据输入后一同进入乘加器521中运算,若该处理单元不是给定权值数据的目标单元,则继续向下方传输。相似的,权值矩阵数据选择器513在接收到自脉动阵列单元左侧存储阵列传入的转置权值矩阵数据时,也根据给定数据做相应的暂存或向右传输处理。在单次脉动阵列单元计算中,仅会根据实际需求传输一个权值矩阵或转置权值矩阵。在此给定情形下,对于后续的累加运算,部分累加数据则从上方传入部分结果加法器522中,并经部分结果寄存器532向下传输,直至从脉动阵列单元底部的输入输出总线向外部输出。
在本实施例一个应用情形中,当输入矩阵的数据类型为浮点数与整数混合时,在进入乘加器521前还使用数据预处理单元进行数据格式转换,即通过数据预处理单元内置的前导零检测器、加法器和移位器的转换将整数转化为浮点数之后,再进入乘加器521进行后续计算。
图6示出了根据本发明一个示例的采用本发明脉动阵列系统进行神经网络处理的执行流程示意图。在矩阵数据由控制单元操控传入脉动阵列单元时首先对输入矩阵的大小进行判断,当输入矩阵行或者列的长度大于脉动阵列单元行或者列的长度时,根据脉动阵列单元大小将矩阵分拆为多个合适大小的矩阵并分别送到多个脉动阵列单元中;对于行或者列的长度小于脉动阵列单元行或列的矩阵,仅启动符合该矩阵大小且位于矩阵目标处理单元范围内的计算器进行运算,同时关闭其余运算器并输出零以达到节能的效果。当数据进入脉动阵列单元后,沿着各自通道向指定方向传送并由控制单元进行方向控制。
当权值矩阵需要复用时,则将新传入的权值矩阵以权值矩阵存储阵列的输入端为终点方向传输;当权值矩阵无需复用时,需要进一步判断权值矩阵是否需要转置,不需要转置时则还是以权值矩阵存储阵列的输入端为终点方向传输,需要转置时则将权值矩阵传输方向改变,然后以转置权值矩阵存储阵列的输入端为终点方向传输。
控制单元此时从相应存储阵列中读取并向脉动阵列单元载入权值矩阵或转置权值矩阵,然后将神经元数据矩阵载入脉动阵列单元中,并进入各目标处理单元中与神经元数据或其他单元传递的数据进行运算。处理单元会将运算结果向输入输出总线方向传送并最终结果矩阵输出。
图6仅为基于本公开前述脉动阵列系统的一种示意其用于神经网络系统运算的流程图。在实际应用中,脉动阵列系统可参照前述图1-图5所述实施例中的描述,各部件可对应执行相关实施例中描述的技术内容,以获得新的神经网络乘加运算装置和方法,并不限定。
参见图7,本发明实施例提供的一种脉动阵列系统中权值矩阵与神经元数据矩阵相乘的示例图。图7展示了一个普通矩阵乘法,神经元数据矩阵(2×2)与权值矩阵(2×2)相乘得到结果矩阵(2×2)。矩阵传输、存储和计算过程在以下图中给出具体的示例。
请参见图8本发明实施例提供的一种权值矩阵传入和权值矩阵转置选择的过程示意图。权值矩阵以平行四边形形式排布且原矩阵经过上下颠倒处理之后,以图8(a)中的呈现的方式从脉动阵列单元下方经输入输出总线传入脉动阵列单元中,并以图8(b)呈现的示例紧贴脉动阵列左边缘向上移动,这种移动是以图4中的载入网络为载体的。对于平行四边形排布的矩阵,其中一组与脉动阵列单元侧边缘平行的对边作为平行边,平行边中最先传入脉动阵列单元的一条为前锋平行边,另一组对边作为斜边,斜边中最先传入脉动阵列单元的一条为前锋斜边。当权值矩阵的前锋斜边的位置移动到与脉动阵列左上到右下的对角线上重合时,根据权值矩阵是否需要转置对运动方向进行如图8(c)中示例的选择,若权值矩阵需要转置,则将矩阵传送方向转向左边,以转置权值矩阵存储阵列的输入端为终点移动;若权值矩阵不需要转置,则继续向上传输,以权值矩阵存储阵列的输入端为终点移动。在选择运动方向之后,权值矩阵与转置后的权值矩阵下一步的移动如图9所示。
请参见图9,是本发明实施例提供的一种权值矩阵和转置权值矩阵进入存储阵列并到达最终位置的过程示意图。在本实施例中,存储阵列均采用了FIFO来存储权值矩阵和转置权值矩阵。在本实施例的一个具体设计方案中,为了不在水平方向增加不必要的面积,本实施例中的FIFO存储架构复制了脉动阵列单元处理单元的耦合形式,在空间上形成与脉动阵列单元中处理单元一一对应的多层设计,可以据此理解图9中矩阵进入FIFO存储阵列时的传输规律。
权值矩阵进入权值矩阵存储阵列是从图9(a)开始的,权值矩阵最上方的第一个元素W10首先通过权值矩阵FIFO输入端阵列进入到权值矩阵FIFO中,图9(a)中左边的正方形上边界即为权值矩阵存储阵列的输入端阵列设置的位置,此时对W10所在位置即FIFO左上角位置施加向下传输控制信号,这样可以在下一个周期中实现W10的向下传输。在图9(b)中矩阵在脉动阵列单元中继续向上传送了一行,即元素W00与W11离开脉动阵列单元进入到权值矩阵FIFO中,此步骤中仍需在图9(a)中所示的FIFO左上角位置施加向下控制信号同时增加一个使控制信号向右偏移的指令,则位于第二列的W11在下一周期中能向下移动到目标位置。在图9(c)中,第一列W10与W00的元素不再移动,但第二列的W11接收到向右传送的向下控制信号,移动到了与W10平行的位置,此时整个矩阵移动结束并存储在权值矩阵FIFO中。
权值矩阵向左转向完成转置后继续向前传送,在图9(d)中显示了转置权值矩阵进入转置权值矩阵FIFO时的情况,转置后平行四边形的最左边第一个元素W10经过转置权值矩阵FIFO的输入端阵列首先进入FIFO中,此时对W10所在位置即FIFO左上角位置施加向右传输的控制信号,使该矩阵元素能够进入到目标位置。在图9(e)中平行四边形矩阵的第二列W00与W11进入转置权值矩阵FIFO中,此步骤中仍需在图9(d)中W10所在的FIFO左上角位置施加一个使控制信号向下移动一个单位的指令,这样在下一周期中,转置权值矩阵第一行将保持不动,而第二行将由移动到第二行第一列所在位置的控制信号控制其元素向右移动一个单位。如图9(f)中,通过上述控制信号的操控,实现了2×2转置权值矩阵向转置权值矩阵FIFO中的载入和存储。该实施例的目的仅在提供一种权值矩阵以及转置权值矩阵的传输存储方式,在实际应用中,应当根据是否存在权值矩阵存储阵列,以及权值矩阵/转置权值矩阵存储阵列输入端的具体布设方式决定是否需要将权值矩阵传入存储阵列以及符合实际的权值矩阵传输路径。
图10所示是本发明实施例提供的一种神经元数据矩阵进入存储阵列并到达最终位置的过程示意图。神经元数据矩阵呈平行四边形矩阵排布,此时仅将第二列整体下移一个单位与第一列做错位处理,无需进行其他处理即可输入脉动阵列单元中。神经元数据矩阵传输路径与图9中转置权值矩阵相似,都在前锋平行边与脉动阵列单元对角线重合后转向左边,此处就不再赘述。需要注意的是,在物理上神经元数据矩阵使用的是载入网络中专用的神经元数据选择器系统,且最终传入的是神经元数据的专用存储阵列。该实施例的目的仅在提供一种神经元矩阵的传输存储方式,在实际应用中,应当根据神经元数据存储阵列输入端的具体布设方式决定其传输路径。
图11所示是本发明实施例提供的一个神经元数据矩阵读取、传输并与权值矩阵计算的前半部分过程示意图。在图11和图12中的数据在脉动阵列单元中的流动均由传动运算网络作为物理支撑完成,而其中不同性质的矩阵又使用了独立的对应寄存器网络。图中略去了用作示例的权值矩阵传入脉动阵列单元的过程,主要是鉴于该过程仅涉及数据在处理单元间的流动,过程较为简单。在本实施例一个实际的应用场景中,矩阵流水输入极限衔接情况为:权值矩阵或转置权值矩阵中的前锋平行边所在的行或列中所有矩阵元素全部进入脉动阵列单元之后,即该行或列的最后一个元素进入处理单元的时刻之后,神经元矩阵第一个元素可以开始进入脉动阵列单元中。这样既可以保证乘加运算不因为读到空的数据值而出错,又可以最大限度缩短矩阵传动所占用的时间。
在图11的第一周期中,神经元数据遵循先进先出原则从存储阵列中写入到脉动阵列单元,因此最先传入存储阵列的A00元素最先被读出,进入到脉动阵列单元左上角的处理单元中与W00相乘。此时神经元数据矩阵将保持从右向左流动并载入目标处理单元,不做整体上下移动而经过各个存储有权值矩阵的处理单元进行计算。矩阵乘加计算结果在第一周底部的方框中显示,结果矩阵向下方流动最终传出脉动阵列单元,结果流动到下方单元时与该单元乘法计算结果相加。
在图11的第二周期中,已存在脉动阵列单元中的神经元数据矩阵元素神经元数据矩阵A00元素继续向右传送至第一行第二列位置并与预先载入其中的权值W01相乘得到A00*W01,已存在的A00*W00计算结果向下传动至第第二行第一列的位置;此时存储阵列中第二列的A10和A01被分别写入脉动阵列的单元第第一行第一列和第二行第一列的位置,然后与预先载入其中的W00和W10分别相乘得到A10*W00和A01*W10。其中第二行第一列的乘法结果A01*W10还要与上一周期算出的乘法结果A00*W00相加。
图12所示是本发明实施例提供的一个神经元数据矩阵读取、传输并与权值矩阵计算的后半部分过程示意图。图12中的第三周期是图11中第二周期的延续。
第三周期中神经元数据矩阵的最后一个元素A11进入脉动矩阵单元中第二行第一列的位置并与预存的权值矩阵元素W10相乘得到A11*W10。第二周期传入的元素A10和A01随着神经元数据向右传动进入了脉动阵列单元第二列的位置并与其中预存的权值矩阵元素W01和W11相乘分别得到A10*W01和A01*W11;第一周期传入的A00此时已经超出脉动阵列单元物理边界,不再参与运算。第二周期中的加法结果A01*W10+A00*W00向下移动后进入空的处理单元,之后结果保持不变直至从脉动阵列单元输出。第二周期中第一行第一列的乘法结果A10*W00向下传到第二行第一列并与本周期乘法结果A11*W10相加得到A10*W00+A11*W10,第二周期中第一行第二列的乘法结果A00*W01向下传送到第二行第二列并与本周期乘法结果A01*W11相加得到A00*W01+A01*W11;以上位于第二行的两个加法结果继续向下传送且保持不变直至从脉动阵列单元输出。
图12中第四周期中,神经元数据矩阵元素仅有A11还存在于脉动阵列单元中,此时随着神经元数据的传送,A11到达第二行第二列的位置并与预存的权值矩阵元素W11相乘得到A11*W11,此乘法结果与第三周期中从第一行第二列传送至此的乘法结果A10*W01相加得到A11*W11+A10*W01并向下传送;至此,利用脉动阵列的神经元数据与权值矩阵数据乘加运算共得到4个先乘后加计算结果,组成了完整的如图7中的结果矩阵。
为了便于理解,本方法仅使用了两个2×2矩阵进行乘加运算演示脉动阵列的运行机理。在实际应用中,其应用对象可以拓展至符合矩阵乘加规则的多类型与格式的输入矩阵。
结合图7-图12中脉动矩阵运行的机理,当存在多个不同的所述权值矩阵或相应的所述转置权值矩阵时,可以通过对载入网络和传动运算网络给出并行指令以实现真正意义上的矩阵流水,即在上一个权值矩阵或转置权值矩阵的第一个元素进入传动运算网络之后,将下一个权值矩阵立即输入载入网络,实现无缝隙流水,在对传动网络和存储阵列的充分利用的同时避免了数据读写错误。
请参见图13,是本发明实施例提供的一种矩阵乘加处理设备的结构示意图。如图13所示的处理设备1300包括一个或多个处理器1301、通信接口1302和存储器1303,处理器1301、通信接口1302和存储器1303可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线1304连接为例其中,该存储器1303用于存储指令,该处理器1301具有前述图1-图12实施例中揭示的脉动阵列结构,用于执行该存储器1303存储的指令。该存储器1303存储程序代码,且处理器1301可以调用存储器1303中存储的程序代码实现如图中矩阵乘加处理设备1300的相关功能,具体可参见前述图1-图12实施例中的相关阐述,这里不再赘述。
应当理解,在本发明实施例中,所称处理器1301可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口1302可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口1302具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器1303可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现如上乘加器10的相关功能。
需要说明的,图13仅仅是本发明实施例的一种可能的实现方式,实际应用中,处理设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及实施步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理设备中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种用于执行神经网络计算的脉动阵列系统,提供有输入矩阵,所述输入矩阵包括权值矩阵和神经元数据矩阵,所述脉动阵列系统包括脉动阵列单元、存储阵列、运算单元和控制单元,所述脉动阵列单元由若干结构相同的处理单元构成二维矩阵形式,每个处理单元至少包括一个内置的运算器和两个内置的寄存器,每个处理单元在所述脉动阵列单元的行方向上和列方向上与相邻的处理单元耦合,每个处理单元接收控制单元指令,并使用所述运算器对接收到的所述输入矩阵元素执行相关运算得到结果矩阵,每个处理单元还使用所述寄存器将接收到的所述输入矩阵的元素或所述结果矩阵的元素沿对应矩阵的传动方向传递给下一个处理单元,所述运算单元由处理单元中的运算器耦合而成;
其特征在于,所述存储阵列包括转置权值矩阵存储阵列,所述转置权值矩阵存储阵列设有输入端阵列,所述转置权值矩阵存储阵列的输入端阵列为第一输入端阵列,所述第一输入端阵列与所述脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,与所述第一输入端阵列相连的所述脉动阵列单元外边缘与所述输入矩阵的传入方向平行;
所述存储阵列还包括神经元数据矩阵存储阵列,所述神经元数据矩阵存储阵列的输入端阵列为第二输入端阵列,第二输入端阵列与脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,所述脉动阵列单元中与所述第一输入端阵列和所述第二输入端阵列连接处的两条外边缘相邻或平行;
所述存储阵列用于接收外部传入脉动阵列单元的所述输入矩阵,并按照先进先出规则将其输出到所述运算单元进行运算得到所述结果矩阵;
向所述脉动阵列系统中传入的所述输入矩阵呈平行四边形排布,所述平行四边形矩阵中与脉动阵列单元侧边缘平行的一组对边作为平行边,所述平行边中最先传入脉动阵列单元的一条为前锋平行边,另一组对边作为斜边,所述斜边中最先传入脉动阵列单元的一条为前锋斜边;
所述脉动阵列系统还包括输入输出总线,所述输入矩阵和所述结果矩阵均由同一输入输出总线进出脉动阵列系统。
2.根据权利要求1所述的脉动阵列系统,其特征在于,所述脉动阵列单元还包括载入网络,所述载入网络由搭载了载入网络单元的所述处理单元耦合而成,所述载入网络单元至少包括一个权值矩阵转置选择器和一个神经元数据传送选择器,所述载入网络用于将所述输入矩阵加载到所述脉动阵列单元并储存到相应存储阵列中。
3.根据权利要求2所述的脉动阵列系统,其特征在于,所述存储阵列还包括权值矩阵存储阵列,所述权值矩阵存储阵列设有输入端阵列,所述权值矩阵存储阵列的输入端阵列为第三输入端阵列,所述第三输入端阵列与所述脉动阵列单元中由处理单元耦合而成的一条外边缘相连接,所述脉动阵列单元中所述第一输入端阵列和所述第三输入端阵列连接处的两条外边缘相邻;
所述载入网络用于接收外部传入的权值矩阵时,控制单元控制所述权值矩阵沿传入方向进入所述载入网络并以此为第一方向流动,所述权值矩阵控制信号与所述权值矩阵同步传入所述脉动阵列单元,当所述权值矩阵的所述前锋斜边流动到与所述脉动阵列单元的一条对角线重合的位置时,所述控制单元根据所述权值矩阵控制信号进行如下操作:
若接收到的所述权值矩阵控制信号为矩阵无需转置信号,所述控制单元则控制所述权值矩阵继续沿第一方向流动,最终进入所述权值矩阵存储阵列;
若接收到的所述权值矩阵控制信号为矩阵转置控制信号,所述控制单元则将所述权值矩阵流动方向转到正交于第一方向并以所述转置权值矩阵存储阵列为终点的第二方向,然后沿此方向继续流动,直至进入所述转置权值矩阵存储阵列。
4.根据权利要求1所述的脉动阵列系统,其特征在于,所述脉动阵列单元还包括传动运算网络,所述传动运算网络由搭载了传动运算网络单元的所述处理单元耦合而成,所述运算网络单元至少包括一个权值矩阵数据选择器、一个乘加器、一个部分结果加法器、一个神经元数据流水寄存器、一个部分结果寄存器,所述传动运算网络在控制单元的控制下接收所述权值矩阵或所述转置权值矩阵中的任意一个,并接收神经元数据矩阵,接收后将上述权值矩阵或转置权值矩阵中的任意一个、神经元数据矩阵流动至所述处理单元中进行运算,最后将计算出的所述结果矩阵经所述传动运算网络传出所述脉动阵列单元。
5.根据权利要求4所述的脉动阵列系统,其特征在于,所述传动运算网络接收来自相应存储阵列的所述权值矩阵或所述转置权值矩阵,由所述控制单元控制所述权值矩阵沿第一方向的反方向流动,或控制转置权值矩阵沿第二方向的反方向流动,当所述权值矩阵或所述转置权值矩阵的所述前锋平行边上的所有矩阵元素完全进入所述传动运算网络并由所述传动运算网络传输到处理单元之后,所述控制单元控制所述神经元数据矩阵输入到所述传动运算网络并沿传入方向流动,然后将神经元数据矩阵中的元素传输到相应所述处理单元并与所述权值矩阵或所述转置权值矩阵中的元素进行运算,所述权值矩阵或所述转置权值矩阵在无需复用时,在传入所述传动运算网络后即固化在第二存储单元的权值寄存器或转置权值寄存器中,当存在多个不同的所述权值矩阵或相应的所述转置权值矩阵时,在上一个所述权值矩阵或所述转置权值矩阵的第一个元素进入传动运算网络之后,将下一个所述权值矩阵立即输入载入网络。
6.根据权利要求1所述的脉动阵列系统,其特征在于,每个处理单元中还包括数据预处理单元,当所述输入矩阵的数据类型均为浮点数或均为整数时,直接输入所述运算单元进行计算,当所述输入矩阵的数据类型为浮点数与整数混合时,运算单元通过所述数据预处理单元将整数转换为浮点数,然后再进入运算单元进行计算。
7.根据权利要求1所述的脉动阵列系统,其特征在于,当所述输入矩阵大于所述脉动阵列单元的大小时,控制单元将所述输入矩阵根据待输入数据的所述脉动阵列单元大小分块,并映射到多个所述脉动阵列单元中;当所述输入矩阵小于所述脉动阵列单元的大小时,仅启动该矩阵大小内的所述运算器进行运算,其余运算器自动关闭并输出零。
8.一种处理设备,其特征在于,包括如权利要求1至权利要求7任一项所述的脉动阵列系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910609315.9A CN110210615B (zh) | 2019-07-08 | 2019-07-08 | 一种用于执行神经网络计算的脉动阵列系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910609315.9A CN110210615B (zh) | 2019-07-08 | 2019-07-08 | 一种用于执行神经网络计算的脉动阵列系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110210615A CN110210615A (zh) | 2019-09-06 |
CN110210615B true CN110210615B (zh) | 2024-05-28 |
Family
ID=67796707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910609315.9A Active CN110210615B (zh) | 2019-07-08 | 2019-07-08 | 一种用于执行神经网络计算的脉动阵列系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110210615B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704024B (zh) * | 2019-09-28 | 2022-03-08 | 中昊芯英(杭州)科技有限公司 | 一种矩阵处理装置、方法及处理设备 |
CN112712172B (zh) * | 2019-10-25 | 2023-12-26 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
CN112711738A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
CN110780849B (zh) * | 2019-10-29 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 矩阵处理方法、装置、设备及计算机可读存储介质 |
US20210201118A1 (en) * | 2019-12-26 | 2021-07-01 | Industrial Technology Research Institute | Deep neural networks (dnn) hardware accelerator and operation method thereof |
CN111582467B (zh) * | 2020-05-14 | 2023-12-22 | 上海商汤智能科技有限公司 | 人工智能加速器和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5083285A (en) * | 1988-10-11 | 1992-01-21 | Kabushiki Kaisha Toshiba | Matrix-structured neural network with learning circuitry |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN108573304A (zh) * | 2017-03-09 | 2018-09-25 | 谷歌有限责任公司 | 硬件中转置神经网络矩阵 |
CN109937416A (zh) * | 2017-05-17 | 2019-06-25 | 谷歌有限责任公司 | 低时延矩阵乘法部件 |
CN210295181U (zh) * | 2019-07-08 | 2020-04-10 | 深圳芯英科技有限公司 | 一种用于执行神经网络计算的脉动阵列系统及处理设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239984B2 (en) * | 2012-12-21 | 2016-01-19 | International Business Machines Corporation | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a neural network |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
-
2019
- 2019-07-08 CN CN201910609315.9A patent/CN110210615B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5083285A (en) * | 1988-10-11 | 1992-01-21 | Kabushiki Kaisha Toshiba | Matrix-structured neural network with learning circuitry |
CN108573304A (zh) * | 2017-03-09 | 2018-09-25 | 谷歌有限责任公司 | 硬件中转置神经网络矩阵 |
CN109937416A (zh) * | 2017-05-17 | 2019-06-25 | 谷歌有限责任公司 | 低时延矩阵乘法部件 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN210295181U (zh) * | 2019-07-08 | 2020-04-10 | 深圳芯英科技有限公司 | 一种用于执行神经网络计算的脉动阵列系统及处理设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110210615A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110210615B (zh) | 一种用于执行神经网络计算的脉动阵列系统 | |
CN107689948B (zh) | 应用于神经网络硬件加速系统的高效数据访存管理装置 | |
US12057834B2 (en) | Application specific integrated circuit accelerators | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN114781632B (zh) | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
CN210295181U (zh) | 一种用于执行神经网络计算的脉动阵列系统及处理设备 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
US11308388B2 (en) | Electronic circuit, particularly for the implementation of neural networks with multiple levels of precision | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
CN111178492B (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
CN112561943B (zh) | 一种基于脉动阵列卷积运算数据复用的图像处理方法 | |
CN110704024B (zh) | 一种矩阵处理装置、方法及处理设备 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN109583577B (zh) | 运算装置及方法 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
US12073216B1 (en) | Transposition of left-hand-side operand to systolic matrix multiplication | |
CN111367567A (zh) | 一种神经网络计算装置和方法 | |
CN113592067B (zh) | 一种用于卷积神经网络的可配置型卷积计算电路 | |
CN117252241A (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
CN115700605A (zh) | 一种应用于卷积神经网络训练的可重构硬件加速器 | |
CN116150556A (zh) | 执行卷积运算的计算装置、方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210209 Address after: 311201 No. 602-11, complex building, 1099 Qingxi 2nd Road, Hezhuang street, Qiantang New District, Hangzhou City, Zhejiang Province Applicant after: Zhonghao Xinying (Hangzhou) Technology Co.,Ltd. Address before: 518057 5-15, block B, building 10, science and technology ecological park, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: Shenzhen Xinying Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |