CN107454966B - 用于神经网络处理器的预取权重 - Google Patents
用于神经网络处理器的预取权重 Download PDFInfo
- Publication number
- CN107454966B CN107454966B CN201680020202.XA CN201680020202A CN107454966B CN 107454966 B CN107454966 B CN 107454966B CN 201680020202 A CN201680020202 A CN 201680020202A CN 107454966 B CN107454966 B CN 107454966B
- Authority
- CN
- China
- Prior art keywords
- weight
- cell
- register
- input
- dimension
- 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 81
- 230000004913 activation Effects 0.000 claims abstract description 108
- 238000000605 extraction Methods 0.000 claims abstract description 10
- 239000011159 matrix material Substances 0.000 claims description 50
- 238000000034 method Methods 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 25
- 238000004260 weight control Methods 0.000 claims description 21
- 238000001994 activation Methods 0.000 description 91
- 238000004590 computer program Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000035508 accumulation Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009028 cell transition Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- 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/002—Biomolecular computers, i.e. using biomolecules, proteins, cells
-
- 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/048—Activation functions
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Chemical & Material Sciences (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Organic Chemistry (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Multi Processors (AREA)
Abstract
一种用于对神经网络执行神经网络计算的电路,该电路包括:脉动阵列,该脉动阵列包括多个单元格;权重提取单元,对于多个神经网络层的每个神经网络层,该权重提取单元被配置为:对于该神经网络层,将多个权重输入发送到沿着脉动阵列的第一维度的单元格;以及多个权重定序器单元,每个权重定序器单元均耦合到沿着脉动阵列的第一维度的不同的单元格,对于多个神经网络层中的每个神经网络层,多个权重定序器单元被配置为:对于该神经网络层,在多个时钟周期中将多个权重输入转移到沿着脉动阵列的第二维度的单元格,并且其中各个单元格被配置为使用乘法电路计算激活输入与相应的权重输入的乘积。
Description
技术领域
本说明书涉及在硬件上计算神经网络推理。
背景技术
神经网络是机器学习模型,其采用一层或多层模型来为接收的输入生成输出,例如分类。除了输出层以外,一些神经网络包括一个以上的隐藏层。各个隐藏层的输出被用作网络中下一层的输入,即网络的下一隐藏层或者输出层。网络的各层根据相应组的参数的当前值,从接收的输入生成输出。
一些神经网络包括一个或多个卷积神经网络层。各个卷积神经网络层具有相关的一组核。各个核包括通过用户创建的神经网络模型所建立的值。在一些实现中,核识别特定的图像轮廓、形状或颜色。核能够被表示为权重输入的矩阵结构。各个卷积层还可以处理一组激活输入。所述一组激活输入也能够被表示为矩阵结构。
一些现有的系统在软件中对给定的卷积层进行计算。例如,软件能够将用于层的各个核应用到所述一组激活输入。即,对于各个核,软件能够将能够多维地表示的核覆盖在能够多维地表示的激活输入的第一部分上。软件然后能够从重叠的元素中计算点积。点积能够对应于单个的激活输入,例如在重叠的多维空间中具有上左方位置的激活输入元素。例如,使用滑动窗,软件然后能够将核转移为覆盖激活输入的第二部分,并且计算与另一激活输入对应的另一点积。软件能够重复地执行该过程,直到各个激活输入具有对应的点积。在一些实现中,点积被输入到生成激活值的激活函数。激活值能够在发送到神经网络的下一层之前被组合,例如被合并。
卷积计算的一种计算方式需要在大尺寸空间中的大量矩阵乘法。处理器能够通过穷举法计算矩阵乘法。例如,尽管是计算密集型的和时间密集型的,但处理器可以重复计算用于卷积计算的各个总和及乘积。由于该架构,限制了处理器的并行计算的程度。
发明内容
大体上,本说明书描述了一种计算神经网络推理的专用的硬件电路。
大体上,本说明书中描述的本主题的一个创新性方面能够体现在用于对包括多个层的神经网络执行神经网络计算的电路中,所述电路包括:脉动阵列,该脉动阵列包括多个单元格;权重提取单元,对于多个神经网络层中的每个神经网络层,该权重提取单元被配置为:对于该神经网络层,将多个权重输入发送到沿着所述脉动阵列的第一维度的单元格;以及多个权重定序器单元,每个权重定序器单元均耦合到沿着所述脉动阵列的所述第一维度的不同的单元格,对于所述多个神经网络层中的每个神经网络层,所述多个权重定序器单元被配置为:对于该神经网络层,在多个时钟周期中将所述多个权重输入转移到沿着所述脉动阵列的第二维度的单元格,其中各个权重输入被存储在沿着所述第二维度的相应的单元格内,并且其中各个单元格被配置为使用乘法电路计算激活输入与相应的权重输入的乘积。
实现可以包括以下中的一个或多个。值定序器单元,其配置为,对于所述多个神经网络层的每个神经网络层,将多个激活输入发送到沿着所述神经网络层的所述脉动阵列的所述第二维度的单元格。所述脉动阵列的所述第一维度对应于所述脉动阵列的行,并且其中所述脉动阵列的所述第二维度对应于所述脉动阵列的列。各个单元格被配置为将权重控制信号传递到相邻的单元格,所述权重控制信号使得相邻单元格中的电路为所述相邻单元格转移或加载权重输入。权重路径寄存器,其被配置为存储被转移到所述单元格的所述权重输入;权重寄存器,其耦合到所述权重路径寄存器;权重控制寄存器,其被配置为判定是否将所述权重输入存储在所述权重寄存器中;激活寄存器,其被配置为存储激活输入,并且被配置为将所述激活输入发送到沿着所述第一维度的第一相邻单元格中的另一激活寄存器;乘法电路,其耦合到所述权重寄存器和所述激活寄存器,其中,所述乘法电路被配置为输出所述权重输入与所述激活输入的乘积;加法电路,其耦合到所述乘法电路,并且被配置为接收所述乘积以及来自沿着所述第二维度的第二相邻单元格的第一局部和,其中,所述加法电路被配置为输出所述乘积与所述第一局部和的第二局部和;以及局部和寄存器,其耦合到所述加法电路,并且被配置为存储所述第二局部和,所述局部和寄存器被配置为将所述第二局部和发送到沿着所述第二维度的第三相邻单元格中的另一加法电路。各个权重定序器单元包括:暂停计数器,该暂停计数器与耦合到所述权重定序器单元的对应的单元格中的所述权重控制寄存器相对应;以及递减电路,该递减电路被配置为将到所述权重定序器单元的输入递减,以生成递减的输出,并且将所述递减的输出发送到所述暂停计数器。各个暂停计数器中的值是相同的,并且各个权重定序器单元被配置为将对应的权重输入加载到所述脉动阵列的对应的不同单元格,其中所述加载包括将所述权重输入发送到所述乘法电路。各个暂停计数器中的值达到了预定值,以使得多个权重定序器单元暂停多个权重输入沿着所述第二维度的转移。所述脉动阵列被配置为,对于所述多个神经网络层的每个神经网络层,从各个乘积生成用于所述神经网络层的累加输出。
可以实现本说明书中描述的主题的特定实施例,以实现以下一个或多个优点。预取权重使神经网络处理器能够更有效地执行计算。处理器可以使用权重提取单元和权重定序器单元将加载权重输入协调到脉动阵列中,从而消除将外部存储器单元耦合到脉动阵列中的每个单元格的需要。处理器可以暂停,即,“冻结”,权重输入的转移,以同步执行多次卷积计算。
本说明书的主题的一个或多个实施例的细节在附图和下面的描述中阐述。通过说明书、附图和权利要求,本主题的其它特征、方面和优点将变得显而易见。
附图说明
图1是用于对神经网络的给定层执行计算的示例性方法的流程图。
图2示出示例性神经网络处理系统。
图3示出包括矩阵计算单元的实例性架构。
图4示出脉动阵列内部的单元格的示例性架构。
图5示出具有空间维度和特征维度的示例性矩阵结构。
图6示出如何将核矩阵结构发送到脉动阵列的示例性图示。
图7示出在三个时钟周期之后,单元格内部的权重输入的示例性图示。
图8是控制信号如何使得激活输入被转移或加载的示例性图示。
相同的附图标记和标号表示相同的元件。
具体实施方式
具有多层的神经网络能够用于计算推理。例如,给定一个输入,神经网络能够计算该输入的推理。神经网络通过处理通过神经网络的各个层的输入来计算该推理。特别地,神经网络的层按顺序排列,分别具有相应的一组权重。各个层接收输入,并且根据用于该层的一组权重处理输入以生成输出。
因此,为了从接收的输入计算推理,神经网络接收输入并且按顺序经过各个神经网络层处理该输入以产生推理,来自一个神经网络层的输出作为输入提供给下一神经网络层。输入到神经网络层的数据,例如或者是到神经网络的输入或者是按顺序在该层之下的层的、到神经网络层的输出,可以被称为对层的激活输入。
在一些实现当中,神经网络的层布置在有向的图中。即,任何特定层都能够接收多个输入、多个输出或者二者均有。神经网络的层还能够布置成使得层的输出能够被作为输入发送回到在前的层。
图1是使用专用的硬件电路执行对神经网络的给定层的计算的示例性过程100的流程图。为了方便,将关于具有执行方法100的一个或多个电路的系统来描述方法100。能够对神经网络的各层执行方法100,以便从接收的输入计算推理。
系统接收给定层的权重输入的组(步骤102)以及激活输入的组(步骤104)。权重输入的组和激活输入的组能够分别从专用的硬件电路的动态存储器和统一缓冲器来接收。在一些实现中,权重输入的组和激活输入的组均从统一缓冲器接收。
系统使用专用硬件电路的矩阵乘法单元,从权重输入和激活输入生成累加值(步骤106)。在一些实现中,累加值是权重输入的组以及激活输入的组的点积。即对于一组权重,系统能够使各个权重输入与各个激活输入相乘,并且将乘积加在一起以形成累加值。然后,系统能够计算其它组的权重与其它组的激活输入的点积。
系统能够使用专用硬件电路的矢量计算单元,从累加值生成层输出(步骤108)。在一些实现中,矢量计算单元对累加值应用激活函数。该层的输出能够存储在统一缓冲器中,用作对神经网络中的后续层的输入,或者能够用于确定推理。当接收的输入已经通过神经网络的各个层而被处理以生成用于接收的输入的推理时,系统完成了对神经网络的处理。
图2示出用于执行神经网络计算的示例性专用集成电路200。系统200包括主机接口202。主机接口202能够接收包括用于神经网络计算的参数的指令。参数可以包括以下中的至少一个或多个:应该处理多少个层;用于所述层中的各个层的、对应的权重输入的组;激活输入的初始组,即到要从其计算推理的神经网络的输入;各个层的对应的输入大小和输出大小;用于神经网络计算的跨步值;以及要处理的层的类型,例如卷积层或者完全连接层。
主机接口202能够向定序器206发送指令,该定序器206将指令转换成控制电路执行神经网络计算的低电平控制信号。在一些实现中,控制信号调节电路中的数据流,例如权重输入的组和激活输入的组如何通过电路流动。定序器206能够将控制信号发送到统一缓冲器208、矩阵计算单元212以及矢量计算单元214。在一些实现中,定序器206还向直接内存存取引擎204和动态存储器210发送控制信号。在一些实现中,定序器206是生成时钟信号的处理器。定序器206能够使用时钟信号的定时,以在适当的时刻将控制信号发送到电路200中的各个组件。在其它一些实现中,主机接口202中经过来自外部处理器的时钟信号。
主机接口202能够将权重输入的组和激活输入的初始组发送到直接内存存取引擎204。直接内存存取引擎204能够将激活输入的组存储在统一缓冲器208中。在一些实现中,直接内存访问将权重的组存储到可以是存储单元的动态存储器210中。在一些实现中,动态存储器位于电路的外部。
统一缓冲器208是存储缓冲器。其能够用于存储来自直接内存存取引擎204的激活输入的组以及矢量计算单元214的输出。直接内存存取引擎204还能够从统一缓冲器208读取矢量计算单元214的输出。
动态存储器210和统一缓冲器208能够分别将权重输入的组和激活输入的组发送到矩阵计算单元212。在一些实现中,矩阵计算单元212是二维脉动阵列。矩阵计算单元212还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,矩阵计算单元212是通用的矩阵处理器。
矩阵计算单元212能够处理权重输入和激活输入,并且向矢量计算单元214提供输出的矢量。在一些实现中,矩阵计算单元将所述输出的矢量发送到统一缓冲器208,统一缓冲器208将所述输出的矢量发送到矢量计算单元214。矢量计算单元能够处理输出的矢量,并且将经处理的输出的矢量存储到统一缓冲器208。例如,矢量计算单元214可以将非线性函数应用到矩阵计算单元的输出,例如累加值的矢量,用以生成激活值。在一些实现中,矢量计算单元214生成归一化的值、合并值,或二者均有。处理过的输出的矢量能够用作到矩阵计算单元212的激活输入,例如用于在神经网络中的后续层中的使用。下面将参考图3和图4详细描述矩阵计算单元212。
图3示出包括矩阵计算单元的示例性架构300。矩阵计算单元是二维的脉动阵列306。阵列306包括多个单元格304。在一些实现中,脉动阵列306的第一维度320对应于单元格的列,并且脉动阵列306的第二维度322对应于单元格的行。脉动阵列的行可以多于列,列可以多于行,或者行与列数量相等。
在图示的实例中,值加载器302将激活输入发送到阵列306的行,并且权重提取接口308将权重输入发送到阵列306的列。然而在其它一些实现中,激活输入传递到阵列306的列,并且权重输入被传递到阵列306的行。
值加载器302可以从统一缓冲器(例如图2的统一缓冲器208)接收激活输入。各个值加载器能够将对应的激活输入发送到阵列306的不同的最左的单元格。最左的单元格可以是沿着阵列306的最左列的单元格。例如,值加载器312可以将激活输入发送到单元格314。值加载器还可以将激活输入发送到相邻的值加载器,并且能够在阵列306的另一最左的单元格处使用该激活输入。这允许激活输入被转移以用于阵列306的另一特定单元格。
权重提取接口308能够从存储单元(例如图2的动态存储器210)接收权重输入。权重提取接口308能够将对应的权重输入发送到阵列306的不同的最顶部的单元格。最顶部的单元格可以是沿着阵列306的最顶部的行的单元格。例如,权重提取接口308能够将权重输入发送到单元格314和316。
在一些实现中,主机接口,例如图2的主机接口202,沿着一个维度、例如向右遍历阵列306地转移激活输入,同时沿着另一维度、例如向下遍历阵列306地转移权重输入。例如,在一个时钟周期过程中,单元格314处的激活输入可以转移到单元格314的右侧的单元格316中的激活寄存器。相似地,单元格316处的权重输入可以转移到单元格314下方的单元格318处的权重寄存器。
在各个时钟周期中,各个单元格能够处理给定的权重输入和给定的激活输入,以生成累加输出。累加输出还能够沿着与给定的权重输入相同的维度传递相邻的单元格。下面参考图4进一步描述单独的单元格。
在一些实现中,在给定的时钟周期期间,权重和激活被转移多于一个单元格,以从一个卷积计算转换到另一个卷积计算。
累加输出能够沿着与权重输入相同的列,例如朝着阵列306的列的底部被传递。在一些实现中,在各个列的底部,阵列306能够包括累加器单元310,当对权重输入多于列的层或对激活输入多于行的层执行计算时,该累加器单元310存储和累加来自各个列的各个累加输出。在一些实现中,各个累加器单元存储多个并行的累加。这将在下文参考图6进一步描述。累加器单元310能够累加各个累加输出,以生成最终的累加值。最终的累加值能够传递到矢量计算单元。在其它一些实现中,当处理权重输入比列少的层或激活输入比行少的层时,累加器单元310将累加值传递到矢量计算单元,而不执行任何累加。
随着激活输入和权重输入流通电路,电路能够“冻结”或暂停一组权重输入的流动,以准确地计算积加值。即,电路能够使一组权重输入暂停,使得特定的一组权重输入能够应用于特定的一组激活输入。
在一些实现中,权重定序器324配置权重输入是否移动到相邻单元格。权重定序器326能够从主机(例如,图2的主机接口202)或从外部处理器接收控制值。各个权重定序器能够将控制值传递到阵列306中的对应的单元格。特别地,控制值能够存储在单元格中的权重控制寄存器中,例如图4的权重控制寄存器414。控制值能够判定权重输入是沿着阵列的维度转移还是加载,这将在下文参考图8描述。权重定序器还能够将控制值发送到相邻的权重定序器,这能够调整用于对应的单元格的、对应的权重输入的转移或加载。
在一些实现中,控制值表示为整数。各个权重定序器可以包括存储该整数的暂停计数寄存器。权重定序器还可以在将控制值存储在暂停计数寄存器之前,递减该整数。在将控制值存储在暂停计数寄存器之后,权重定序器能够将该整数发送到相邻的权重定序器,并且将该整数发送到对应的单元格。例如,各个权重定序器可以具有配置为从控制值生成递减的整数的递减电路。递减的整数可以存储在暂停计数寄存器中。存储的控制值能够用于协调跨阵列的整个列的、同时的转移暂停,这将在下面参考图8进一步描述。
在一些实现中,在电路中暂停权重使得开发人员能够调试电路。
其它暂停权重的方法是可行的。例如,代替于将暂停计数寄存器内的值传递到相邻的暂停计数寄存器,控制值可以使用树来传递。即,在给定的单元格处,信号能够传递到所有的相邻单元格,并且不是仅一个相邻的单元格,从而使得信号快速遍历脉动阵列地传播。
图4示出脉动阵列内部的单元格的示例性架构400,例如图3中的脉动阵列306。
单元格可以包括存储激活输入的激活寄存器406。激活寄存器能够依据在脉动阵列内的单元格的位置,从左侧相邻单元格、即位于给定单元格的左侧的相邻单元格或从统一缓冲器,接收激活输入。单元格可以包括存储权重输入的权重寄存器402。依据在脉动阵列内的单元格的位置,权重输入能够从顶部的相邻单元格或从权重提取接口传递。单元格还可以包括总和寄存器(sum in registor)404。总和寄存器404可以存储来自顶部相邻单元格的累加值。乘法电路408能够用于使来自权重寄存器402的权重输入与来自激活寄存器406的激活输入相乘。乘法电路408能够将乘积输出到加法电路410。
加法电路能够对乘积与来自总和寄存器404的累加值求和,以生成新的累加值。然后,加法电路410能够将新的累加值发送到位于底部的相邻单元格的另一总和寄存器。新的累加值能够用作底部的相邻单元格中求和的操作数。
在一些实现中,单元格还包括通用控制寄存器。该控制寄存器能够存储判定单元格是否应将权重输入还是应该将激活输入或激活输入转移到相邻单元格的控制信号。在一些实现中,转移权重输入或激活输入需要多于一个时钟周期。控制信号还能够判定是否将激活输入或权重输入传递到乘法电路408,或者能够判定乘法电路408是否对激活输入或权重输入进行运算。控制信号还能够例如使用导线被传递到一个以上的相邻单元格。
在一些实现中,权重被预先转移到权重路径寄存器412。权重路径寄存器412能够例如从顶部的相邻单元格接收权重输入,并且基于控制信号将权重输入传递到权重寄存器402。权重寄存器402能够静态地存储权重输入,使得当在多个时钟周期的过程中、激活输入例如通过激活寄存器406传递到单元格时,权重输入保留在单元格中,不被传递到相邻单元格。因此,能够使用乘法电路408将权重输入应用到多个激活输入,并且相应的累加值能够传递到相邻单元格。
在一些实现中,权重控制寄存器414控制权重输入是否存储在权重寄存器402中。例如,如果权重控制寄存器414存储为0的控制值,则权重寄存器402能够存储由权重路径寄存器412发送的权重输入。在一些实现中,将权重输入存储到权重寄存器402中被称为加载权重输入。一旦加载了权重输入,权重输入就能够被发送到乘法电路408,进行处理。如果权重控制寄存器414存储了非零的控制值,则权重寄存器402能够忽略由权重路径寄存器412发送的权重输入。存储在权重控制寄存器414中的控制值能够被传递到一个以上的相邻单元格,例如对于给定的单元格,控制值能够被发送到位于给定单元格的右侧的单元格中的权重控制寄存器。
单元格还能够将权重输入和激活输入转移到相邻单元格。例如,权重路径寄存器412能够将权重输入发送到底部的相邻单元格中的另一权重路径寄存器。激活寄存器406能够将激活输入发送到右侧的相邻单元格中的另一激活寄存器。因此,权重输入以及激活输入均能够在随后的时钟周期中,被阵列中的其它单元格再次使用。
图5示出具有空间维度和特征维度的示例性矩阵结构500。矩阵结构500能够表示一组激活输入或一组权重输入。在该说明书中,将用于一组激活输入的矩阵结构称为激活矩阵结构,并且在该说明书中,将用于一组权重输入的矩阵结构称为核矩阵结构。矩阵结构500具有三个维度:两个空间维度和一个特征维度。
在一些实现中,空间维度对应于一组激活输入的空间或位置。例如,如果神经网络正在处理具有两个维度的图像,则矩阵结构能够具有与图像的空间坐标、即XY坐标相对应的两个空间维度。
特征维度对应于激活输入的特征。各个特征维度能够具有深度级;例如,矩阵结构500具有深度级502、504和506。作为例示,如果矩阵结构500表示作为一组激活输入发送到第一层的3×3×3图像,则图像的X维度和Y维度(3×3)可以是空间维度,而Z维度(3)可以是与R、G和B值相对应的特征维度。即,深度级502可以对应于九个“1”激活输入的特征,例如红色值,深度级504可以对应于九个“2”激活输入的特征,例如绿色值,并且深度级506可以对应于九个“3”激活输入的特征,例如蓝色值。
虽然在图5的实例中,仅图示了特征维度的三个深度级,但是给定的特征维度能够具有大数量的、例如上百个的特征维度。类似地,虽然仅示出了一个特征维度,但是给定的矩阵结构能够具有多个特征维度。
为使用矩阵结构500对卷积层进行计算,系统需要将卷积计算转换为二维矩阵乘法。
图6示出了如何在给定的卷积层处由脉动阵列606处理图5的矩阵结构500的示例性图示。矩阵结构600可以是一组激活输入。一般地,神经网络处理器能够将激活输入(例如,矩阵结构600中的元素)以及权重输入(例如,核A-D 610)分别发送到阵列的行和列。激活输入和权重输入能够分别向脉动阵列的右侧和底部转移,并且必须到达特定位置,例如,特定单元格处的特定寄存器。一旦例如通过检查控制信号而确定这些输入到位,则处理器能够使用存储在单元格中的输入进行计算,以生成给定层的输出。
如上所述,神经网络处理器在将结构600的一部分发送到脉动阵列的行之前,使矩阵结构600“平坦化”。即,神经网络处理器能够分离矩阵结构600的深度层602,例如图6的深度层602、604和606,并且将各个深度层发送到不同的单元格。在一些实现中,各个深度层被发送到脉动阵列606的不同行上的单元格。例如,处理器能够将来自第一深度层的激活输入,例如九个“1”激活输入的矩阵,发送到脉动阵列606的第一行处的最左侧的单元格,将第二深度层,例如九个“2”激活输入的矩阵,发送到第二行处的最左侧的单元格,将第三深度层,例如九个“3”激活输入的矩阵,发送到第三行处的最左侧的单元格,等等。
给定层可以具有多个核,例如核A-D 610。核A-D 610可以具有维度3×3×10的矩阵结构。处理器可以将各个核矩阵结构发送到脉动阵列606的不同列处的单元格。例如,核A可以发送到第一列中的顶部的单元格,核B可以发送到第二列中的顶部的单元格,等等。
当矩阵结构发送到单元格时,矩阵的第一元素可以在一个时钟周期期间存储在单元格中。在下一个时钟周期,下一个元素可以存储在单元格中。存储的第一元素可以转移到相邻的单元格,如以上参考图4所述。输入的转移可以持续进行,直到矩阵结构的所有元素都存储在脉动阵列606中。激活输入和权重输入二者均可以在一个以上的时钟周期后遍历每个单元格转移。下面将参考图7进一步描述脉动阵列中的输入的转移。
图7示出三个时钟周期之后,在示例性3×3脉动阵列的单元格内的权重输入的示例性图示700。各个单元格能够存储权重输入和激活输入,如以上参考图5所述。权重输入能够发送到脉动阵列的不同列,以用于卷积计算,如以上参考图7所述。作为例示,系统将具有1、2和4的权重输入的第一核矩阵结构发送到脉动阵列的第一列。系统将具有3、5和7的权重输入的第二核结构发送到第二列。系统将具有6、8和10的权重的第三核结构发送到第三列。在每个时钟周期之后,权重输入能够在一个维度上转移,例如从顶部向底部转移,同时,激活输入能够在另一个维度上转移(未示出),例如从左侧向右侧转移。
权重输入能够以交错方式存储在单元格中。即,第一时钟周期702之后的脉动阵列的状态在顶部左侧单元格中显示“1”。“1”代表存储在单元格中的权重输入“1”。在下一个时钟周期704,“1”转移到顶部左侧单元格下方的单元格,并且来自核的另一个权重输入“2”存储在顶部左侧单元格中,以及权重输入“3”存储在第二列的最顶部单元格处。
在第三时钟周期706,再次转移各个权重。在第一列中,最底部单元格存储权重输入“1”,权重输入“2”被存储于在上一个周期中存储权重输入“1”的位置,并且权重输入“4”存储在最顶部左侧的单元格中。类似地,在第二列中,“3”向下转移,并且权重输入“5”存储在顶部中间的单元格中。在第三列中,权重输入“6”存储在最顶部右侧的单元格中。
在一些实现中,判定是否应该转移权重输入的、用于权重输入的控制信号也与权重输入一起转移。
激活输入可以以相似的方式在其它维度上转移,例如,从左侧向右侧转移。
一旦激活输入和权重输入就位,则处理器可以例如通过使用单元格中的乘法电路和加法电路进行卷积计算,以生成要在矢量计算单元中使用的一组累加值。
虽然以权重输入发送到阵列的列以及激活输入发送到阵列的行来描述了系统,但在一些实现中,权重输入被发送到阵列的行,而激活输入被发送到阵列的列。
图8是控制值如何能够使得权重输入被转移或加载的示例性图示。控制值806能够由主机发送,并且能够由权重定序器存储,如以上参考图3所述。在每个时钟周期802的基础上,图中的值表示存储在分别与脉动阵列的行1-4 804相对应的权重定序器808-814中的控制值。
在一些实现中,如果给定的权重定序器中的控制值为非零值,则在脉动阵列的对应的单元格中的权重输入将被转移到相邻单元格。如果给定的权重定序器中的控制值是零,则权重输入能够被加载到对应的单元格中,并用于计算与单元格中的激活输入的乘积。
作为例示,主机能够确定四个权重输入应该在加载之前被转移。在时钟周期0中,主机能够将控制值5发送到权重定序器808,即与行1对应的权重定序器。权重定序器808包括递减电路,该递送电路花费一个时钟周期以基于控制值5输出控制值4。因此,控制值4在随后的时钟周期、即时钟周期1中,被存储在权重定序器808中。
在时钟周期1中,主机将控制值4发送到权重定序器808。因此,在时钟周期2中,权重定序器808例如使用递减电路存储控制值3。在时钟周期1中,权重定序器808能够将控制值4发送到权重定序器810。因此,在时钟周期2中,在利用权重定序器810的递减电路处理控制值4之后,权重定序器810能够存储控制值3。
相似地,主机能够分别在时钟周期2、3和4中发送控制值3、2和1。因为当递减控制值时,各个权重定序器808-814中的递减电路产生延迟,所以在各个时钟周期中递减控制值806能够最终使得每个权重定序器存储相同的控制值,即时钟周期4中的控制值1,以及时钟周期5中的控制值0。
在一些实现中,当各个权重定序器输出控制值0时,脉动阵列暂停权重输入的转移,并且在各个单元格中加载权重输入。即,通过加载权重输入,脉动阵列使得权重输入能够用作点积计算中的操作数,从而开始处理神经网络中的层。
在一些实现中,在完成计算之后,为了重新开始转移权重,主机将控制值变成非零值,例如在时钟周期7期间发送控制值5。转移过程能够如上所述地参考时钟周期0重复。
在一些实现中,控制值以另一偏置、例如1开始。
本说明书中描述的主题和功能操作的实施例能够以数字电路实现,以有形实现的计算机软件或固件实现,以计算机硬件、包括本说明书中公开的结构及其结构等同物实现,或者以它们中的一个或多个的组合实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,其用于由数据处理设备执行或者控制数据处理设备的操作。代替地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电信号、光信号或电磁信号,该传播信号被生成以对信息进行编码,用于传输到合适的接收机设备,以由数据处理设备执行。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或串行存取存储装置,或它们中的一个或多个的组合。
术语“数据处理设备”包含所有种类的用于处理数据的设备、装置和机器,例如包括可编程处理器、计算机,或多个处理器或计算机。该设备可以包括专用逻辑电路,例如FPGA(现场可编程门阵列),或ASIC(专用集成电路)。除了硬件之外,该设备还可以包括为相关的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
可以以任何形式的编程语言,包括编译语言或解释语言或者纯粹功能性语言或声明性语言或程序性语言,来编写计算机程序(其也可以被称为程序、软件、软件应用程序、模块、软件模块、脚本或代码),并且该计算机程序可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适用于计算环境的其它单元来部署。计算机程序可以但不必需对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本,可以存储在专用于该程序的单个文件中,或者可以存储在多个协调的文件中,例如存储一个或多个模块、子程序或代码部分的文件。可以将计算机程序部署为在一台计算机上或在多台计算机上执行,所述多台计算机位于一个站点上或在分布在多个站点上并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并产生输出来执行功能。所述处理和逻辑流程也可以由专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路),来执行,并且装置也可以被实现为专用逻辑电路。
例如,适用于执行计算机程序的计算机包括可以基于通用微处理器或专用微处理器或者这两者,或者基于任何其它类型的中央处理单元。一般地,中央处理单元将从只读存储器或随机存取存储器或从这两者接收指令和数据。计算机的基本要素是用于执行或运行指令的中央处理单元,以及用于存储指令和数据的一个或多个存储器件。一般地,计算机还会包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者在操作上耦合到该大容量存储设备,以从该大容量存储设备接收数据或者将数据传递到该大容量存储设备,或者二者。然而,计算机不必需具有这样的设备。而且,计算机可以嵌入在另一设备中,例如仅举几例,移动电话、个人数字助理(PDA)、移动音频播放器或移动视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器件,例如包括:半导体存储器件,例如EPROM、EEPROM和闪速存储器件;磁盘,例如内部硬盘,或可移动磁盘;磁光盘;以及CD ROM盘和DVD-ROM盘。处理器和存储器可由专用逻辑电路来补充,或集成在其中。
为发送与用户交互,本说明书中描述的主题的实施例可以在一计算机上实现,该计算机具有:显示设备,例如CRT(阴极射线管)监视器,或LCD(液晶显示器)监视器,以用于将信息显示给用户;以及键盘和指点设备,例如鼠标或轨迹球,用户可以利用该设备向计算机发送输入。也可以使用其它类型的设备发送,以用于与用户交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音输入、语音输入或触觉输入。此外,计算机可以通过向用户使用的设备发送文档或从用户使用的设备接收文档,来与用户进行交互;利用,通过响应于从网络浏览器接收到的请求,将网页发送到用户的客户端设备上的网络浏览器。
本说明书中描述的主题的实施例能够在包括例如作为数据服务器的后端组件的计算系统中实现;或者在包括中间件组件、例如应用服务器的计算系统中实现;或者在包括前端组件的计算系统中实现,所述前端组件例如是具有图形用户界面或网络浏览器的客户端计算机,用户可以通过该界面或浏览器与本说明书中描述的主题的实现进行交互;或者在包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合的计算系统中实现。系统的组件可以通过任何形式或媒介的数字数据通信、例如通信网络互连。通信网络的实例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常互相远离,并且通常通过通信网络交互。客户端与服务器之间的关系借助于在相应的计算机上运行且彼此间具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体的实现细节,但是这些不应被解释为限制任何发明的或可能要求保护内容的范围,而应被解释为对特定发明的特定实施例的具体特征的描述。本说明书中在分别实施例的上下文中描述的一些特征也可以在单个实施例中以组合方式实现。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适子组合的形式在多个实施例中实现。此外,虽然以上可以将特征描述为以一些组合的方式起作用,并且甚至最初要求这样进行保护,但要求保护的组合中的一个或多个特征在一些情况下可以从组合中去除,并且所要求的组合可以涉及子组合或子组合的变化。
类似地,虽然这些操作在附图中以特定顺序示出,但是这不应被理解成为实现期望的结果,需要这些操作以所示特定顺序或按次序来执行,或者需要执行所有所示的操作。在一些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都要求这样的分离,而应理解,所述的程序组件和系统通常可以一起集成在单个软件产品中,或打包成多个软件产品。
已经描述了主题的特定实施例。其它的实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同顺序执行,并且仍然实现期望的结果。作为一个示例,附图中所描绘的过程不一定要求所示的特定顺序或次序来实现期望的结果。在一些实现中,多任务和并行处理可能是有利的。
Claims (20)
1.一种用于对包括多个层的神经网络执行神经网络计算的电路,所述电路包括:
硬件矩阵计算单元,包括用于脉动阵列的电路,所述脉动阵列包括多个单元格,所述多个单元格中的每个单元格包括设置在该单元格内以用于存储从该单元格外部的源接收到的权重输入的的权重寄存器;
用于权重提取单元的硬件电路,对于所述多个神经网络层中的每个神经网络层,所述权重提取单元被配置为:
对于该神经网络层,将多个权重输入发送到沿着所述脉动阵列的第一维度的单元格;以及
用于设置在所述多个单元格中的每个单元格外部的多个权重定序器单元的硬件电路,每个所述权重定序器单元均耦合到沿着所述脉动阵列的所述第一维度的不同的单元格,对于所述多个神经网络层中的每个神经网络层,所述多个权重定序器单元中的每个权重定序器单元被配置为:
提供控制值以用于在设置在耦合到所述权重定序器单元的所述不同的单元格内的控制寄存器中存储,所述控制值用于对于该神经网络层在多个时钟周期中将所述多个权重输入转移到沿着所述脉动阵列的第二维度的单元格,其中各个权重输入被存储在使用所述权重寄存器并且沿着所述第二维度的相应的单元格内,并且其中各个所述单元格被配置为使用乘法电路来计算激活输入与相应的权重输入的乘积。
2.根据权利要求1所述的电路,还包括:
值定序器单元,对于所述多个神经网络层中的每个神经网络层,所述值定序器单元被配置为:对于该神经网络层,将多个激活输入发送到沿着所述脉动阵列的所述第二维度的单元格。
3.根据权利要求1所述的电路,其中所述脉动阵列的所述第一维度对应于所述脉动阵列的行,并且其中所述脉动阵列的所述第二维度对应于所述脉动阵列的列。
4.根据权利要求1所述的电路,其中每个单元格被配置为将权重控制信号传递到相邻的单元格,所述权重控制信号使得相邻单元格中的电路为所述相邻单元格转移或加载权重输入。
5.根据权利要求1所述的电路,其中各个单元格包括用于以下的硬件电路:
设置在所述单元格内并且耦合到所述权重寄存器的权重路径寄存器,所述权重路径寄存器被配置为存储被转移到所述单元格的权重输入;
设置在所述单元格内并且用于至少存储由所述权重定序器提供的控制值或由相邻单元格传递的权重控制信号的权重控制寄存器,所述权重控制寄存器被配置为判定是否将所述权重输入存储在所述权重寄存器中;
激活寄存器,所述激活寄存器被设置在所述单元格内并且被配置为存储激活输入,并且被配置为将所述激活输入发送到沿着所述第一维度的第一相邻单元格中的另一激活寄存器;
乘法电路,所述乘法电路被设置在所述单元格内并且耦合到所述权重寄存器和所述激活寄存器,其中所述乘法电路被配置为输出所述权重输入与所述激活输入的乘积;
加法电路,所述加法电路被设置在所述单元格内并且耦合到所述乘法电路,并且被配置为接收所述乘积以及来自沿着所述第二维度的第二相邻单元格的第一局部和,其中,所述加法电路被配置为输出所述乘积与所述第一局部和的第二局部和;以及
局部和寄存器,所述局部和寄存器被设置在所述单元格内并且耦合到所述加法电路,并且被配置为存储所述第二局部和,所述局部和寄存器被配置为将所述第二局部和发送到沿着所述第二维度的第三相邻单元格中的另一加法电路。
6.根据权利要求5所述的电路,其中,每个权重寄存器单元包括:
暂停计数器,所述暂停计数器对应于耦合到所述权重定序器单元的对应单元格中的所述权重控制寄存器;以及
递减电路,所述递减电路被配置为将到所述权重定序器单元的输入递减,以生成递减的输出,并且将所述递减的输出发送到所述暂停计数器。
7.根据权利要求6所述的电路,其中,各个暂停计数器中的值是相同的,并且各个权重定序器单元被配置为将对应的权重输入加载到所述脉动阵列的对应的不同单元格,其中所述加载包括将所述权重输入发送到所述乘法电路。
8.根据权利要求6所述的电路,其中各个暂停计数器中的值是不同的,并且各个权重定序器单元被配置为将对应的权重输入转移到沿着所述第二维度的相邻的权重定序器单元。
9.根据权利要求6所述的电路,其中各个暂停计数器中的值达到预定值,以使所述多个权重定序器单元暂停多个权重输入沿着所述第二维度的转移。
10.根据权利要求1所述的电路,其中,所述脉动阵列被配置为:对于所述多个神经网络层中的每个神经网络层,从各个乘积生成用于所述神经网络层的累加输出。
11.一种用于对包括多个层的神经网络执行神经网络计算的方法,所述方法包括对于多个神经网络层中的每个神经网络层:
在权重提取单元处向包括用于脉动阵列的电路的硬件矩阵计算单元发送沿着包括多个单元格的所述脉动阵列中的第一维度的单元格的多个权重输入;
在设置在沿着所述脉动阵列的第一维度的所述多个单元格中的每个单元格内的相应权重寄存器中存储所述多个权重输入;以及
使用用于多个权重定序器单元中的每个权重定序器单元的硬件电路提供控制值以用于在设置在沿着所述脉动阵列的所述第一维度的特定单元格内的控制寄存器中存储,其中,所述控制值使得在多个时钟周期中将所述多个权重输入转移到沿着所述脉动阵列的第二维度的单元格,其中,每个权重定序器单元被设置在所述多个单元格中的每个单元格外部并且耦合到沿着所述脉动阵列的所述第一维度的不同的单元格,其中每个权重输入被存储在使用所述权重寄存器并且沿着所述第二维度的相应的单元格内,并且其中每个单元格被配置为使用乘法电路计算激活输入与相应的权重输入的乘积。
12.根据权利要求11所述的方法,还包括:
在值定序器单元处,将多个激活输入发送到沿着所述神经网络层的所述脉动阵列的所述第二维度的单元格。
13.根据权利要求11所述的方法,其中所述脉动阵列的所述第一维度对应于所述脉动阵列的行,并且其中所述脉动阵列的所述第二维度对应于所述脉动阵列的列。
14.根据权利要求11所述的方法,还包括:对于各个单元格,将权重控制信号传递到相邻单元格,所述权重控制信号使得所述相邻单元格中的电路为所述相邻单元格转移或加载权重输入。
15.根据权利要求11所述的方法,其中各个单元格包括用于以下的硬件电路:
设置在所述单元格内并且耦合到所述权重寄存器的权重路径寄存器,所述权重路径寄存器被配置为存储被转移到所述单元格的所述权重输入;
设置在所述单元格内并且用于至少存储由所述权重定序器提供的控制值或由相邻单元格传递的权重控制信号的权重控制寄存器,所述权重控制寄存器被配置为判定是否将所述权重输入存储在所述权重寄存器中;
激活寄存器,所述激活寄存器被设置在所述单元格内并且被配置为存储激活输入,并且被配置为将所述激活输入发送到沿着所述第一维度的第一相邻单元格中的另一激活寄存器;
乘法电路,所述乘法电路被设置在所述单元格内并且耦合到所述权重寄存器和所述激活寄存器,其中,所述乘法电路被配置为输出所述权重输入与所述激活输入的乘积;
加法电路,所述加法电路被设置在所述单元格内并且耦合到所述乘法电路,并且被配置为接收所述乘积以及来自沿着所述第二维度的第二相邻单元格的第一局部和,其中,所述加法电路被配置为输出所述乘积与所述第一局部和的第二局部和;以及
局部和寄存器,所述局部和寄存器被设置在所述单元格内并且耦合到所述加法电路,并且被配置为存储所述第二局部和,所述局部和寄存器被配置为将所述第二局部和发送到沿着所述第二维度的第三相邻单元格中的另一加法电路。
16.根据权利要求15所述的方法,还包括:
在各个权重定序器单元中的递减电路处,将到所述权重定序器单元的相应的输入递减,以生成相应的递减的输出;
对于各个权重定序器单元,将所述相应的递减的输出发送到相应的暂停计数器,所述相应的暂停计数器对应于耦合到所述权重定序器单元的对应的单元格中的权重控制寄存器。
17.根据权利要求16所述方法,其中,各个暂停计数器中的值是相同的,并且所述方法还包括:在各个权重定序器单元处,将对应的权重输入加载到所述脉动阵列的对应的不同单元格,其中所述加载包括将所述权重输入发送到所述乘法电路。
18.根据权利要求16所述方法,其中,各个暂停计数器中的值是不同的,并且所述方法还包括:在各个权重定序器单元处,将对应的权重输入转移到沿着所述第二维度的相邻的权重定序器单元中。
19.根据权利要求16所述方法,其中各个暂停计数器中的值达到预定值,以使所述多个权重定序器单元暂停沿着所述第二维度转移所述多个权重输入。
20.根据权利要求11所述的方法,还包括:在用于所述多个神经网络层中的每个神经网络层的脉动阵列处,从各个乘积生成用于所述神经网络层的相应的累加输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011278833.6A CN112465132A (zh) | 2015-05-21 | 2016-04-29 | 用于神经网络处理器的预取权重 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562164981P | 2015-05-21 | 2015-05-21 | |
US62/164,981 | 2015-05-21 | ||
US14/844,670 US10049322B2 (en) | 2015-05-21 | 2015-09-03 | Prefetching weights for use in a neural network processor |
US14/844,670 | 2015-09-03 | ||
PCT/US2016/029965 WO2016186810A1 (en) | 2015-05-21 | 2016-04-29 | Prefetching weights for use in a neural network processor |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011278833.6A Division CN112465132A (zh) | 2015-05-21 | 2016-04-29 | 用于神经网络处理器的预取权重 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107454966A CN107454966A (zh) | 2017-12-08 |
CN107454966B true CN107454966B (zh) | 2020-12-04 |
Family
ID=56081550
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680020202.XA Active CN107454966B (zh) | 2015-05-21 | 2016-04-29 | 用于神经网络处理器的预取权重 |
CN202011278833.6A Pending CN112465132A (zh) | 2015-05-21 | 2016-04-29 | 用于神经网络处理器的预取权重 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011278833.6A Pending CN112465132A (zh) | 2015-05-21 | 2016-04-29 | 用于神经网络处理器的预取权重 |
Country Status (11)
Country | Link |
---|---|
US (6) | US10049322B2 (zh) |
EP (2) | EP3298546B1 (zh) |
JP (5) | JP6689878B2 (zh) |
KR (4) | KR102641283B1 (zh) |
CN (2) | CN107454966B (zh) |
DE (2) | DE112016002298T5 (zh) |
DK (1) | DK3298546T3 (zh) |
GB (2) | GB2553052B (zh) |
HK (1) | HK1245462A1 (zh) |
TW (1) | TWI636368B (zh) |
WO (1) | WO2016186810A1 (zh) |
Families Citing this family (113)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10846591B2 (en) * | 2015-12-29 | 2020-11-24 | Synopsys, Inc. | Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks |
US10360496B2 (en) * | 2016-04-01 | 2019-07-23 | Intel Corporation | Apparatus and method for a digital neuromorphic processor |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
EP4160449A1 (en) * | 2016-12-30 | 2023-04-05 | Intel Corporation | Deep learning hardware |
US10521488B1 (en) | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US10146768B2 (en) * | 2017-01-25 | 2018-12-04 | Google Llc | Automatic suggested responses to images received in messages using language model |
JP6823495B2 (ja) * | 2017-02-27 | 2021-02-03 | 株式会社日立製作所 | 情報処理装置および画像認識装置 |
US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
US10909447B2 (en) | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
US10241972B2 (en) * | 2017-03-16 | 2019-03-26 | International Business Machines Corporation | Matrix multiplication on a systolic array |
KR102414583B1 (ko) * | 2017-03-23 | 2022-06-29 | 삼성전자주식회사 | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 |
US10331999B2 (en) * | 2017-04-03 | 2019-06-25 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10546234B2 (en) | 2017-04-03 | 2020-01-28 | Gyrfalcon Technology Inc. | Buffer memory architecture for a CNN based processing unit and creation methods thereof |
US10534996B2 (en) | 2017-04-03 | 2020-01-14 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10552733B2 (en) | 2017-04-03 | 2020-02-04 | Gyrfalcon Technology Inc. | Memory subsystem in CNN based digital IC for artificial intelligence |
US10824938B2 (en) * | 2017-04-24 | 2020-11-03 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
BR112019022916A2 (pt) * | 2017-05-17 | 2020-05-26 | Google Llc | Unidade de multiplicação de matrizes de baixa latência |
US10019668B1 (en) * | 2017-05-19 | 2018-07-10 | Google Llc | Scheduling neural network processing |
US11328037B2 (en) * | 2017-07-07 | 2022-05-10 | Intel Corporation | Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers |
CN109284827A (zh) * | 2017-07-19 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 神经网络计算方法、设备、处理器及计算机可读存储介质 |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11157287B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
WO2019057281A1 (en) * | 2017-09-21 | 2019-03-28 | Huawei Technologies Co., Ltd. | MULTI-WIRE SYSTOLIC NETWORK |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
CN107832839B (zh) * | 2017-10-31 | 2020-02-14 | 南京地平线机器人技术有限公司 | 执行卷积神经网络中的运算的方法和装置 |
GB2568086B (en) * | 2017-11-03 | 2020-05-27 | Imagination Tech Ltd | Hardware implementation of convolution layer of deep neutral network |
US11551065B2 (en) * | 2017-11-06 | 2023-01-10 | Imagination Technologies Limited | Neural network architecture using control logic determining convolution operation sequence |
KR102424962B1 (ko) | 2017-11-15 | 2022-07-25 | 삼성전자주식회사 | 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈 |
CN107909148B (zh) * | 2017-12-12 | 2020-10-20 | 南京地平线机器人技术有限公司 | 用于执行卷积神经网络中的卷积运算的装置 |
US10803379B2 (en) | 2017-12-12 | 2020-10-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
WO2019118363A1 (en) * | 2017-12-12 | 2019-06-20 | Amazon Technologies, Inc. | On-chip computational network |
CN111160541B (zh) * | 2017-12-14 | 2023-05-19 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
KR102637735B1 (ko) * | 2018-01-09 | 2024-02-19 | 삼성전자주식회사 | 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 |
WO2019136764A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 卷积器及其所应用的人工智能处理装置 |
CN108364063B (zh) * | 2018-01-24 | 2019-09-27 | 福州瑞芯微电子股份有限公司 | 一种基于权值分配资源的神经网络训练方法和装置 |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
CN108416434B (zh) * | 2018-02-07 | 2021-06-04 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
US11164074B2 (en) | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Multi-core systolic processor system for neural network processing |
US11769042B2 (en) | 2018-02-08 | 2023-09-26 | Western Digital Technologies, Inc. | Reconfigurable systolic neural network engine |
US11468302B2 (en) | 2018-03-13 | 2022-10-11 | Recogni Inc. | Efficient convolutional engine |
WO2019183095A1 (en) * | 2018-03-22 | 2019-09-26 | Amazon Technologies, Inc. | Processing for multiple input data sets |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
US10621489B2 (en) * | 2018-03-30 | 2020-04-14 | International Business Machines Corporation | Massively parallel neural inference computing elements |
US11188814B2 (en) * | 2018-04-05 | 2021-11-30 | Arm Limited | Systolic convolutional neural network |
US20190332924A1 (en) * | 2018-04-27 | 2019-10-31 | International Business Machines Corporation | Central scheduler and instruction dispatcher for a neural inference processor |
US11537838B2 (en) * | 2018-05-04 | 2022-12-27 | Apple Inc. | Scalable neural network processing engine |
WO2019222135A1 (en) | 2018-05-16 | 2019-11-21 | Benevis Informatics, Llc | Systems and methods for review of computer-aided detection of pathology in images |
SG11202011824PA (en) * | 2018-06-05 | 2020-12-30 | Lightelligence Inc | Optoelectronic computing systems |
US20190392287A1 (en) | 2018-06-22 | 2019-12-26 | Samsung Electronics Co., Ltd. | Neural processor |
US10839894B2 (en) * | 2018-06-29 | 2020-11-17 | Taiwan Semiconductor Manufacturing Company Ltd. | Memory computation circuit and method |
US20200019836A1 (en) * | 2018-07-12 | 2020-01-16 | International Business Machines Corporation | Hierarchical parallelism in a network of distributed neural network cores |
US10643119B2 (en) * | 2018-07-24 | 2020-05-05 | Sandisk Technologies Llc | Differential non-volatile memory cell for artificial neural network |
CN110751276A (zh) * | 2018-07-24 | 2020-02-04 | 闪迪技术有限公司 | 在nand存储器阵列中实现具有三值输入和二值权重的神经网络 |
US11954573B2 (en) | 2018-09-06 | 2024-04-09 | Black Sesame Technologies Inc. | Convolutional neural network using adaptive 3D array |
CN109543140B (zh) * | 2018-09-20 | 2020-07-10 | 中国科学院计算技术研究所 | 一种卷积神经网络加速器 |
US10817042B2 (en) * | 2018-09-27 | 2020-10-27 | Intel Corporation | Power savings for neural network architecture with zero activations during inference |
US11443185B2 (en) * | 2018-10-11 | 2022-09-13 | Powerchip Semiconductor Manufacturing Corporation | Memory chip capable of performing artificial intelligence operation and method thereof |
US11636325B2 (en) | 2018-10-24 | 2023-04-25 | Macronix International Co., Ltd. | In-memory data pooling for machine learning |
KR102637733B1 (ko) | 2018-10-31 | 2024-02-19 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법 |
JP7315317B2 (ja) * | 2018-11-09 | 2023-07-26 | 株式会社Preferred Networks | プロセッサおよびプロセッサのデータ転送方法 |
US11537687B2 (en) | 2018-11-19 | 2022-12-27 | Groq, Inc. | Spatial locality transform of matrices |
US11562229B2 (en) * | 2018-11-30 | 2023-01-24 | Macronix International Co., Ltd. | Convolution accelerator using in-memory computation |
US11494645B2 (en) | 2018-12-06 | 2022-11-08 | Egis Technology Inc. | Convolutional neural network processor and data processing method thereof |
TWI766193B (zh) * | 2018-12-06 | 2022-06-01 | 神盾股份有限公司 | 卷積神經網路處理器及其資料處理方法 |
US20200183837A1 (en) | 2018-12-07 | 2020-06-11 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
US11934480B2 (en) | 2018-12-18 | 2024-03-19 | Macronix International Co., Ltd. | NAND block architecture for in-memory multiply-and-accumulate operations |
CN109857024B (zh) * | 2019-02-01 | 2021-11-12 | 京微齐力(北京)科技有限公司 | 人工智能模块的单元性能测试方法和系统芯片 |
CN109933371A (zh) * | 2019-02-01 | 2019-06-25 | 京微齐力(北京)科技有限公司 | 其单元可访问本地存储器的人工智能模块和系统芯片 |
CN109902064A (zh) * | 2019-02-01 | 2019-06-18 | 京微齐力(北京)科技有限公司 | 一种二维脉动阵列的芯片电路 |
CN109919321A (zh) * | 2019-02-01 | 2019-06-21 | 京微齐力(北京)科技有限公司 | 单元具有本地累加功能的人工智能模块及系统芯片 |
US11544525B2 (en) | 2019-02-04 | 2023-01-03 | Sateesh Kumar Addepalli | Systems and methods for artificial intelligence with a flexible hardware processing framework |
US20200249996A1 (en) * | 2019-02-04 | 2020-08-06 | Pathtronic Inc. | Systems and methods for artificial intelligence hardware processing |
US11507662B2 (en) | 2019-02-04 | 2022-11-22 | Sateesh Kumar Addepalli | Systems and methods of security for trusted artificial intelligence hardware processing |
US11150720B2 (en) | 2019-02-04 | 2021-10-19 | Sateesh Kumar Addepalli | Systems and methods for power management of hardware utilizing virtual multilane architecture |
US11423454B2 (en) | 2019-02-15 | 2022-08-23 | Sateesh Kumar Addepalli | Real-time customizable AI model collaboration and marketplace service over a trusted AI model network |
JP7297468B2 (ja) | 2019-02-28 | 2023-06-26 | キヤノン株式会社 | データ処理装置及びその方法 |
KR20200107295A (ko) * | 2019-03-07 | 2020-09-16 | 에스케이하이닉스 주식회사 | 시스톨릭 어레이 및 프로세싱 시스템 |
US10929058B2 (en) | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11783176B2 (en) | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US11671111B2 (en) | 2019-04-17 | 2023-06-06 | Samsung Electronics Co., Ltd. | Hardware channel-parallel data compression/decompression |
US11880760B2 (en) | 2019-05-01 | 2024-01-23 | Samsung Electronics Co., Ltd. | Mixed-precision NPU tile with depth-wise convolution |
CN111985628B (zh) * | 2019-05-24 | 2024-04-30 | 澜起科技股份有限公司 | 计算装置及包括所述计算装置的神经网络处理器 |
KR102351087B1 (ko) | 2019-06-04 | 2022-01-14 | 주식회사 딥엑스 | 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 |
US11514300B2 (en) | 2019-06-14 | 2022-11-29 | Macronix International Co., Ltd. | Resistor circuit, artificial intelligence chip and method for manufacturing the same |
US11233049B2 (en) | 2019-06-14 | 2022-01-25 | Macronix International Co., Ltd. | Neuromorphic computing device |
TWI698810B (zh) * | 2019-06-14 | 2020-07-11 | 旺宏電子股份有限公司 | 類神經計算裝置 |
CN110210615B (zh) * | 2019-07-08 | 2024-05-28 | 中昊芯英(杭州)科技有限公司 | 一种用于执行神经网络计算的脉动阵列系统 |
CN110543934B (zh) * | 2019-08-14 | 2022-02-01 | 北京航空航天大学 | 一种用于卷积神经网络的脉动阵列计算结构及方法 |
US11842169B1 (en) | 2019-09-25 | 2023-12-12 | Amazon Technologies, Inc. | Systolic multiply delayed accumulate processor architecture |
CN114930351A (zh) * | 2019-11-26 | 2022-08-19 | 格罗克公司 | 使用仅单个侧从多维阵列加载操作数并输出结果 |
US11816446B2 (en) | 2019-11-27 | 2023-11-14 | Amazon Technologies, Inc. | Systolic array component combining multiple integer and floating-point data types |
KR20210065605A (ko) | 2019-11-27 | 2021-06-04 | 한국전자통신연구원 | 선인출 정보를 이용한 메모리 제어 방법 및 장치 |
US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
US11586889B1 (en) * | 2019-12-13 | 2023-02-21 | Amazon Technologies, Inc. | Sensory perception accelerator |
US11669733B2 (en) | 2019-12-23 | 2023-06-06 | Marvell Asia Pte. Ltd. | Processing unit and method for computing a convolution using a hardware-implemented spiral algorithm |
TWI733334B (zh) * | 2020-02-15 | 2021-07-11 | 財團法人工業技術研究院 | 卷積神經網路運算裝置及其運算的方法 |
US20210312266A1 (en) * | 2020-04-01 | 2021-10-07 | Microsoft Technology Licensing, Llc | Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations |
CN113496117B (zh) * | 2020-04-02 | 2024-03-12 | 北京庖丁科技有限公司 | 交叉检查表格中单元格数字内容的方法和电子设备 |
US11507817B2 (en) | 2020-04-17 | 2022-11-22 | Samsung Electronics Co., Ltd. | System and method for performing computations for deep neural networks |
KR20230005348A (ko) * | 2020-06-05 | 2023-01-09 | 주식회사 퓨리오사에이아이 | 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치 |
US11422773B1 (en) | 2020-06-29 | 2022-08-23 | Amazon Technologies, Inc. | Multiple busses within a systolic array processing element |
US11308027B1 (en) | 2020-06-29 | 2022-04-19 | Amazon Technologies, Inc. | Multiple accumulate busses in a systolic array |
CN111737193B (zh) * | 2020-08-03 | 2020-12-08 | 深圳鲲云信息科技有限公司 | 数据存储方法、装置、设备和存储介质 |
CN112580787B (zh) * | 2020-12-25 | 2023-11-17 | 北京百度网讯科技有限公司 | 神经网络加速器的数据处理方法、装置、设备及存储介质 |
US11656988B2 (en) * | 2021-04-16 | 2023-05-23 | Macronix International Co., Ltd. | Memory device and operation method thereof |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0422348A2 (en) * | 1989-10-10 | 1991-04-17 | Hnc, Inc. | Two-dimensional systolic array for neural networks, and method |
CN1150847A (zh) * | 1994-05-02 | 1997-05-28 | 摩托罗拉公司 | 使用神经网络的计算机和使用该神经网络的方法 |
CN1126318C (zh) * | 1997-12-15 | 2003-10-29 | 三菱电机株式会社 | 时钟延迟电路和使用其的振荡电路、相位同步电路 |
CN1781076A (zh) * | 2003-04-04 | 2006-05-31 | 爱特梅尔股份有限公司 | 组合多项式和自然乘法的乘法器架构 |
CN103109262A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 在半导体芯片上实现的向量逻辑归约操作 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU8698582A (en) | 1981-08-14 | 1983-02-17 | Rca Corp. | Digital air filter |
JPS6028345A (ja) | 1983-07-26 | 1985-02-13 | Fujitsu Ltd | 並列計算機における通信方式 |
JPS63293668A (ja) | 1987-05-27 | 1988-11-30 | Matsushita Electric Ind Co Ltd | 並列計算機の通信方法 |
US5014235A (en) | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
US5136717A (en) | 1988-11-23 | 1992-08-04 | Flavors Technology Inc. | Realtime systolic, multiple-instruction, single-data parallel computer system |
US5337395A (en) | 1991-04-08 | 1994-08-09 | International Business Machines Corporation | SPIN: a sequential pipeline neurocomputer |
US5146543A (en) | 1990-05-22 | 1992-09-08 | International Business Machines Corp. | Scalable neural array processor |
US5274832A (en) * | 1990-10-04 | 1993-12-28 | National Semiconductor Corporation | Systolic array for multidimensional matrix computations |
JP2760170B2 (ja) | 1990-11-29 | 1998-05-28 | 松下電器産業株式会社 | 学習機械 |
JP2749725B2 (ja) | 1991-03-18 | 1998-05-13 | 富士通株式会社 | 並列計算機の通信方法 |
JPH04290155A (ja) | 1991-03-19 | 1992-10-14 | Fujitsu Ltd | 並列データ処理方式 |
US5903454A (en) | 1991-12-23 | 1999-05-11 | Hoffberg; Linda Irene | Human-factored interface corporating adaptive pattern recognition based controller apparatus |
JPH05346914A (ja) | 1992-06-16 | 1993-12-27 | Matsushita Electron Corp | ニューロプロセッサ |
US5465041A (en) | 1993-09-17 | 1995-11-07 | Penberthy, Inc. | Bipolar tracking current source/sink with ground clamp |
JPH0823874B2 (ja) * | 1993-11-18 | 1996-03-06 | 株式会社ジーデイーエス | シストリックアレイプロセサー |
DE4414821A1 (de) | 1994-04-28 | 1995-11-02 | Vorwerk Co Interholding | Küchenmaschine mit einem Rührgefäß und einem Antrieb für ein Rührwerk in dem Rührgefäß |
US5799134A (en) | 1995-03-13 | 1998-08-25 | Industrial Technology Research Institute | One dimensional systolic array architecture for neural network |
US5812993A (en) | 1996-03-07 | 1998-09-22 | Technion Research And Development Foundation Ltd. | Digital hardware architecture for realizing neural network |
US6038337A (en) | 1996-03-29 | 2000-03-14 | Nec Research Institute, Inc. | Method and apparatus for object recognition |
KR100189195B1 (ko) | 1996-04-04 | 1999-06-01 | 박래홍 | 단일화된 시스톨릭어레이 구조에 의한 2차원 dct/dst/dht의 수행장치 |
GB9902115D0 (en) | 1999-02-01 | 1999-03-24 | Axeon Limited | Neural networks |
KR100450750B1 (ko) * | 2002-04-17 | 2004-10-01 | 한국전자통신연구원 | 향상된 선형 궤환 시프트 레지스터 구조의 유한체 승산기 |
JP4314017B2 (ja) | 2002-11-06 | 2009-08-12 | キヤノン株式会社 | 階層処理装置 |
US7197721B2 (en) | 2002-12-17 | 2007-03-27 | Intel Corporation | Weight compression/decompression system |
US7245767B2 (en) | 2003-08-21 | 2007-07-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for object identification, classification or verification |
US7634137B2 (en) | 2005-10-14 | 2009-12-15 | Microsoft Corporation | Unfolded convolution for fast feature extraction |
EP2122542B1 (en) | 2006-12-08 | 2017-11-01 | Medhat Moussa | Architecture, system and method for artificial neural network implementation |
US8184696B1 (en) | 2007-09-11 | 2012-05-22 | Xilinx, Inc. | Method and apparatus for an adaptive systolic array structure |
TW200923803A (en) | 2007-11-26 | 2009-06-01 | Univ Nat Taipei Technology | Hardware neural network learning and recall architecture |
TWI417798B (zh) | 2008-11-21 | 2013-12-01 | Nat Taipei University Oftechnology | High - speed reverse transfer neural network system with elastic structure and learning function |
JP5376920B2 (ja) | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
US8442927B2 (en) | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
TWI525558B (zh) | 2011-01-17 | 2016-03-11 | Univ Nat Taipei Technology | Resilient high - speed hardware reverse transfer and feedback type neural network system |
US8924455B1 (en) | 2011-02-25 | 2014-12-30 | Xilinx, Inc. | Multiplication of matrices using systolic arrays |
US9111222B2 (en) * | 2011-11-09 | 2015-08-18 | Qualcomm Incorporated | Method and apparatus for switching the binary state of a location in memory in a probabilistic manner to store synaptic weights of a neural network |
TW201331855A (zh) | 2012-01-19 | 2013-08-01 | Univ Nat Taipei Technology | 具自由回饋節點的高速硬體倒傳遞及回饋型類神經網路 |
US9477925B2 (en) | 2012-11-20 | 2016-10-25 | Microsoft Technology Licensing, Llc | Deep neural networks training for speech and pattern recognition |
US9811775B2 (en) | 2012-12-24 | 2017-11-07 | Google Inc. | Parallelizing neural networks during training |
US9190053B2 (en) | 2013-03-25 | 2015-11-17 | The Governing Council Of The Univeristy Of Toronto | System and method for applying a convolutional neural network to speech recognition |
CN104035751B (zh) | 2014-06-20 | 2016-10-12 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
EP3064130A1 (en) | 2015-03-02 | 2016-09-07 | MindMaze SA | Brain activity measurement and feedback system |
US20160267111A1 (en) | 2015-03-11 | 2016-09-15 | Microsoft Technology Licensing, Llc | Two-stage vector reduction using two-dimensional and one-dimensional systolic arrays |
-
2015
- 2015-09-03 US US14/844,670 patent/US10049322B2/en active Active
-
2016
- 2016-04-29 JP JP2017550913A patent/JP6689878B2/ja active Active
- 2016-04-29 DE DE112016002298.0T patent/DE112016002298T5/de not_active Ceased
- 2016-04-29 KR KR1020227021145A patent/KR102641283B1/ko active IP Right Grant
- 2016-04-29 GB GB1715437.8A patent/GB2553052B/en active Active
- 2016-04-29 EP EP16725266.7A patent/EP3298546B1/en active Active
- 2016-04-29 CN CN201680020202.XA patent/CN107454966B/zh active Active
- 2016-04-29 GB GB2112401.1A patent/GB2597611B/en active Active
- 2016-04-29 KR KR1020207011552A patent/KR102413522B1/ko active IP Right Grant
- 2016-04-29 CN CN202011278833.6A patent/CN112465132A/zh active Pending
- 2016-04-29 KR KR1020177028188A patent/KR102105128B1/ko active IP Right Grant
- 2016-04-29 WO PCT/US2016/029965 patent/WO2016186810A1/en active Application Filing
- 2016-04-29 DE DE202016107439.8U patent/DE202016107439U1/de active Active
- 2016-04-29 EP EP21205423.3A patent/EP3968232A1/en active Pending
- 2016-04-29 DK DK16725266.7T patent/DK3298546T3/da active
- 2016-04-29 KR KR1020247005904A patent/KR20240029112A/ko active Application Filing
- 2016-05-20 TW TW105115866A patent/TWI636368B/zh active
- 2016-12-22 US US15/389,273 patent/US9805304B2/en active Active
-
2018
- 2018-04-03 HK HK18104415.9A patent/HK1245462A1/zh unknown
- 2018-08-02 US US16/053,305 patent/US11281966B2/en active Active
-
2020
- 2020-03-23 US US16/826,466 patent/US10878316B2/en active Active
- 2020-04-08 JP JP2020069854A patent/JP6953577B2/ja active Active
- 2020-12-28 US US17/134,936 patent/US11853865B2/en active Active
-
2021
- 2021-09-29 JP JP2021159352A patent/JP7071577B2/ja active Active
-
2022
- 2022-05-06 JP JP2022076581A patent/JP7383757B2/ja active Active
-
2023
- 2023-11-01 US US18/386,037 patent/US20240062055A1/en active Pending
- 2023-11-08 JP JP2023190654A patent/JP2024016196A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0422348A2 (en) * | 1989-10-10 | 1991-04-17 | Hnc, Inc. | Two-dimensional systolic array for neural networks, and method |
CN1150847A (zh) * | 1994-05-02 | 1997-05-28 | 摩托罗拉公司 | 使用神经网络的计算机和使用该神经网络的方法 |
CN1126318C (zh) * | 1997-12-15 | 2003-10-29 | 三菱电机株式会社 | 时钟延迟电路和使用其的振荡电路、相位同步电路 |
CN1781076A (zh) * | 2003-04-04 | 2006-05-31 | 爱特梅尔股份有限公司 | 组合多项式和自然乘法的乘法器架构 |
CN103109262A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 在半导体芯片上实现的向量逻辑归约操作 |
Non-Patent Citations (1)
Title |
---|
S.Y.KUNG.VLSI Array processors.《IEEE ASSP MAGAZINE》.1985,第2卷(第3期), * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107454966B (zh) | 用于神经网络处理器的预取权重 | |
US11227216B2 (en) | Batch processing in a neural network processor | |
US11170291B2 (en) | Rotating data for neural network computations | |
US11586920B2 (en) | Neural network processor | |
US11361051B1 (en) | Dynamic partitioning |
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 | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1245462 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |