CN107533667A - 神经网络处理器中的向量计算单元 - Google Patents

神经网络处理器中的向量计算单元 Download PDF

Info

Publication number
CN107533667A
CN107533667A CN201680019810.9A CN201680019810A CN107533667A CN 107533667 A CN107533667 A CN 107533667A CN 201680019810 A CN201680019810 A CN 201680019810A CN 107533667 A CN107533667 A CN 107533667A
Authority
CN
China
Prior art keywords
value
circuit
normalization
activation
pond
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.)
Granted
Application number
CN201680019810.9A
Other languages
English (en)
Other versions
CN107533667B (zh
Inventor
格雷戈里·米歇尔·索尔森
克里斯托弗·阿伦·克拉克
达恩·刘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to CN202110718015.1A priority Critical patent/CN113392964A/zh
Publication of CN107533667A publication Critical patent/CN107533667A/zh
Application granted granted Critical
Publication of CN107533667B publication Critical patent/CN107533667B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用于对包含多层的神经网络进行神经网络计算的电路,该电路包括:激活电路,该激活电路被配置为接收累加值的向量,并且被配置为将函数应用到每个累加值以生成激活值的向量;以及归一化电路,该归一化电路连接到激活电路,并且被配置为从每个激活值生成各自的归一化值。

Description

神经网络处理器中的向量计算单元
背景技术
本说明书涉及在硬件中计算神经网络推理。
神经网络是一种机器学习模型,其采用一个或多个层以对于接收到的输入生成例如分类的输出。一些神经网络除了输出层之外,还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层,即,网络的下一个隐藏层或者输出层的输入。网络中的每个层根据各自的参数组的当前值从接收到的输入生成输出。
发明内容
通常地,本说明书描述了一种专用硬件电路,其计算神经网络推理。
通常地,在本说明书中的主题的一个创新性的方面能够被实施为对包含多层的神经网络进行神经网络计算的电路,该电路包括:激活电路,该激活电路被配置为接收累加值的向量,并且被配置为将函数应用到每个累加值以生成激活值的向量;以及归一化电路,该归一化电路耦合到激活电路,并且被配置为生成用于每个激活值的各自的归一化值(respective normalized value)。
实现能够包括一个或多个以下特征。激活电路从电路中的脉动阵列(systolicarray)接收累加值的向量。归一化电路包括多个归一化寄存器列,每个归一化寄存器列包括串联连接的多个归一化寄存器,每个归一化寄存器列被配置为接收相异的激活值(distinct activation value),归一化寄存器列中的各自的归一化单元被配置为计算各自的归一化值。每个归一化寄存器被配置为将相异的激活值传送到相邻的归一化单元。每个归一化单元被配置为:接收各自的激活值;根据各自的激活值生成各自的中间归一化值;以及将各自的中间归一化值发送至一个或多个相邻的归一化单元。生成各自的中间归一化值包括生成各自的激活值的平方。每个归一化单元进一步被配置为:从一个或多个相邻的归一化单元接收根据激活值生成的一个或多个中间归一化值;对每个中间归一化值求和,以生成索引(index);使用索引以从查找表读取一个或多个值;根据一个或多个值以及索引生成缩放因子;以及根据缩放因子以及各自的激活值生成各自的归一化值。池化电路被配置为接收归一化值,并且被配置为池化归一化值以生成池化值。池化电路被配置为将多个归一化值存储在多个寄存器以及多个存储器单元中,其中,多个寄存器和多个存储器单元串联连接,其中,每个寄存器分别存储一个归一化值,并且每个存储器单元分别存储多个归一化值,其中,池化电路被配置为在每个时钟周期之后将给定归一化值移位至随后的寄存器或者存储器单元,并且其中,池化电路被配置为根据归一化值生成池化值。池化电路被配置为接收激活值,并且被配置为池化激活值以生成池化值。池化电路被配置为将多个激活值存储在多个寄存器以及多个存储器单元中,其中,多个寄存器和多个存储器单元串联连接,其中,每个寄存器存储一个归一化值,并且每个存储器单元存储多个激活值,其中,池化电路被配置为在每个时钟周期之后将给定激活值移位至随后的寄存器或者存储器单元,并且其中,池化电路被配置为根据激活值生成池化值。
本说明书中描述的主题的特定实施方式能够被实施为实现以下优势效果中的一者以上。在给定的时钟周期期间,能够计算神经网络的每个神经网络层的多个激活值。可选地,处理器能够根据另一给定的时钟周期期间的激活值生成多个归一化值。可选地,处理器还能够根据归一化值或激活值生成池化值。处理器能够在每个时钟周期内采用新的累加总和,并且在每个时钟周期内产生激活结果、归一化结果和池化结果,从而使计算流水线化。
本发明还提供了运算神经网络的相应的方法。
本说明书的主题的一个或多个实施方式的细节将在下面的附图和说明书中提出。本主题的其他特征、方面和优势效果将由于说明书、附图和权利要求而清晰。
附图说明
图1是对神经网络的给定层进行计算的示例性方法的流程图。
图2示出了示例性的神经网络处理系统。
图3示出了包括矩阵计算单元的示例性架构。
图4示出了在脉动阵列内的cell的示例性架构。
图5示出了向量计算单元的示例性架构。
图6示出了归一化电路的示例性架构。
图7示出了具有采样激活值的归一化电路的另一个示例性架构。
图8示出了在归一化电路内的归一化单元的示例性架构。
图9示出了池化电路的示例性架构。
在各个附图中的相同的参考符号和名称表示相同的元素。
具体实施方式
具有多层的神经网络能够用于计算推理。例如,给定输入,则神经网络能够计算对于该输入的推理。神经网络通过经由神经网络的每个层处理输入而计算该推理。特别地,能够依次布置神经网络的层,每个层具有各自的权重组。每个层接收输入,并且根据用于该层的权重组处理该处理,以生成输出。
因此,为了根据接收到的输入而计算推理,神经网络接收输入,并且通过序列中的每个神经网络层处理该输入,以生成推理,来自一个神经网络层的输出被提供为下一个神经网络层的输入。到神经网络层的数据输入,例如,或者是到神经网络的输入,或者是到神经网络层的序列中的该层之下的层的输出能够被称为到该层的激活输入。
在一些实现中,神经网络的层在有向图中布置。即,任何特定层能够接收多个输入、多个输出或者这两者。神经网络的层还能够被布置为使得层的输出能够作为到前一层的输入而被送回。
一些神经网络使来自一个或多个神经网络层的输出归一化,以产生被用作到随后的神经网络层的输入的归一化值。使输出归一化能够有助于确保归一化值维持在对于随后的神经网络层的输入所期望的域内。这能够减小推理计算的误差。
一些神经网络使来自一个或多个神经网络层的输出池化,以产生用作到随后的神经网络层的输入的池化值。在一些实现中,神经网络通过确定一组输出的最大值或者平均值并且将该最大值或平均值用作该组的池化输出,而池化一组输出。池化输出能够维持一定的空间不变性,因此在各种配置中布置的输出能够被处理为具有相同的推理。池化输出还能够在维持输出在池化之前的期望的特性的同时,降低在随后的神经网络层处接收到的输入的维度,这能够提高效率,而不显著地危害由神经网络所产生的推理的质量。
本说明书描述了专用硬件电路,其任选地对一个或多个神经网络层的输出执行归一化、池化或者这两者。
图1是利用专用硬件电路对神经网络的给定层进行计算的示例性处理100的流程图。为了便于说明,将针对执行方法100的具有一个或多个电路的系统而描述方法100。为了根据接收到的输入而计算推理,能够对每个层神经网络执行方法100。
系统接收用于给定层的权重输入组(步骤102)和激活输入组(步骤104)。权重输入组和激活输入组能够分别从专用硬件电路的动态存储器和统一缓存器(unified buffer)接收到。在一些实现中,权重输入组和激活输入组两者均能够从统一缓存器接收到。
系统利用专用硬件电路的矩阵乘积单元而根据权重输入和激活输入生成累加值(步骤106)。在一些实现中,累加值可以是权重输入组与激活输入组的点积。即,对于作为层中的所有权重的子集的一组权重,系统能够使每个权重输入与每个激活输入相乘,并且将乘积相加到一起以构成累加值。然后系统能够计算其他组的权重与其他组的激活输入的点积。
系统能够利用专用硬件电路的向量计算单元而根据累加值生成层输出(步骤108)。在一些实现中,向量计算单元将激活函数应用到累加值,下文将参考图5而进一步描述。层的输出能够存储在统一缓存器中,用作到神经网络中的随后的层的输入,或者能够用于确定推理。当已经通过神经网络的每个层而处理接收到的输入以生成用于接收到的输入的推理时,系统完成神经网络的处理。
图2示出了用于执行神经网络计算的示例性的专用集成电路200。系统200包括主机接口202。主机接口202能够接收指令,该指令包括用于神经网络计算的参数。参数可包括以下中的一者以上:应当要处理多少层;对于模型的每个层的相应组的权重输入;激活输入的初始设定,即,根据其而计算推理的神经网络的输入;每个层的相应输入和输出尺寸;神经网络计算的步长值;以及要处理的层的类型,例如,卷积层或者全连接层。
主机接口202能够将指令发送到定序器206,该定序器206将指令转换为低电平控制信号,该低电平控制信号控制电路执行神经网络计算。在一些实现中,控制信号规定电路中的数据流动,例如,使权重输入组和激活输入组如何流过电路。定序器206能够将控制信号发送至统一缓存器208、矩阵计算单元212和向量计算单元214。在一些实现中,定序器206还将控制信号发送到直接存储器存取引擎(direct memory access engine)204和动态存储器210。在一些实现中,定序器206是生成控制信号的处理器。定序器206能够在适当的时间利用控制信号的定时以将控制信号发送至电路200的每个部件。在一些其他实现中,主机接口202传递来自外部处理器的控制信号。
主机接口202能够将权重输入组和激活输入的初始设定发送到直接存储器存取引擎204。直接存储器存取引擎204能够存储统一缓存器208处的激活输入组。在一些实现中,直接存储器存取将权重组存储到可作为存储器单元的动态存储器210。在一些实现中,动态存储器位于电路之外。
统一缓存器208是存储器缓存器。该统一缓存器208能够用于存储来自直接存储器存取引擎204的激活输入组以及向量计算单元214的输出。下文将参考图5更加详细地描述向量计算单元。直接存储器存取引擎204还能够从统一缓存器208读取向量计算单元214的输出。
动态存储器210和统一缓存器208能够分别将权重输入组和激活输入组发送到矩阵计算单元212。在一些实现中,矩阵计算单元212是二维脉动阵列。矩阵计算单元212还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其他电路。在一些实现中,矩阵计算单元212是通用矩阵处理器。
矩阵计算单元212能够处理权重输入和激活输入,并且将输出的向量提供至向量计算单元214。在一些实施中,矩阵计算单元将输出的向量发送到统一缓存器208,该统一缓存器208将输出的向量发送到向量计算单元214。向量计算单元能够处理输出的向量,并且将处理好的输出的向量存储至统一缓存器208。处理好的输出向量能够被用作到矩阵计算单元212的激活输入,例如,用于在神经网络中的随后的层中使用。下文将分别参考图3和图5而更加详细地描述矩阵计算单元212和向量计算单元214。
图3示出了包括矩阵计算单元的示例性架构300。矩阵计算单元是二维脉动阵列306。阵列306包括多个cell 304。在一些实现中,脉动阵列306的第一维度320对应于cell的列,并且脉动阵列306的第二维度322对应于cell的行。脉动阵列能够具有比列多的行,比行多的列或者具有相等数量的行和列。
在图示的实例中,数值加载器302将激活输入发送到阵列306的行,并且权重读取器接口(weight fetcher interface)308将权重输入发送到阵列306的列。然而,在一些其他实现中,激活输入被传送到阵列306的列,并且权重输入被传送到阵列306的行。
数值加载器302能够从例如图2的统一缓存器208这样的统一缓存器接收激活输入。每个数值加载器302能够将相应的激活输入发送到阵列306的相异的最左cell。例如,数值加载器312能够将激活输入发送到cell 314。数值加载器还能够将激活输入发送到相邻的数值加载器,并且激活输入能够用在阵列306的另一个最左cell。这使得激活输入被移位,以在阵列306的另一个特定cell中使用。
权重读取器接口308能够从例如图2的动态存储器210这样的存储器单元接收权重输入。权重读取器接口308将相应的权重输入发送到阵列306的相异的最顶部cell。例如,权重读取器接口308能够将权重输入发送到cell 314和316。
在一些实现中,主机接口,例如,图2的主机接口202沿着一个维度,例如向右遍及阵列306地移位激活输入,与此同时,沿着另一个维度,例如向底部遍及阵列306地移位权重输入。例如,在一个时钟周期中,在cell 314处的激活输入能够移位至位于cell 314的右侧的cell 316中的激活寄存器。相似的,在cell 316处的权重输入能够移位至在cell 314的下方的cell 318处的权重寄存器。
在每个时钟周期期间,每个cell能够处理给定权重输入、给定激活输入以及来自相邻cell的累加输出,以生成累加输出。累加输出也能够沿着与给定权重输入相同的维度而传送到相邻的cell。下文将参考图4进一步描述单个cell。
累加输出能够沿着与权重输入相同的列而传送,例如,朝向阵列306中的列的底部。在一些实现中,在每个列的底部处,阵列306能够包括累加器单元310,该累加器单元310当利用具有比行多的激活输入的层而执行计算时,存储并且累加来自每个列的每个累加输出。在一些实现中,每个累加器单元存储多个并行累加。下文将参考图6进一步描述。累加器单元310能够累加每个累加输出,以生成最终的累加值。最终累加值能够被传送至向量计算单元,例如,图5的向量计算单元502。在一些其他实现中,累加器单元310当利用具有比行少的激活输入的层处理层时,将累加值传送到向量计算单元,而不进行任何累加。
图4示出了在例如图3的脉动阵列306这样的脉动阵列内的cell的示例性架构400。
cell可包括存储激活输入的激活寄存器406。激活寄存器能够依据脉动阵列内的cell的位置,而接收来自左侧相邻的cell,即,位于给定cell的左侧的相邻cell或者来自统一缓存器的激活输入。cell能够包括存储权重输入的权重寄存器402。依据脉动阵列内的cell的位置,权重输入能够从顶部相邻cell或者从权重读取器接口传送。cell还可包括总和寄存器(sum in register)404。总和寄存器404能够存储来自顶部相邻cell的累加值。乘法电路408能够用于将来自权重寄存器402的权重输入乘以来自激活寄存器406的激活输出。乘法电路408能够将乘积输出到总和电路410。
总和电路能够将该乘积与来自总和寄存器404的累加值相加,以生成新的累加值。然后,总和电路410能够将新的累加值发送到位于底部相邻cell处的寄存器中的另一个总和寄存器。新的累加值能够用作底部相邻cell中的总和的操作数。
cell还能够将权重输入和激活输入移位至相邻cell用以处理。例如,权重寄存器402能够将权重输入发送至在底部相邻cell中的另一个权重寄存器。激活寄存器406能够将激活输入发送到位于右侧相邻cell中的另一个激活寄存器。因此,权重输入和激活输入这两者能够在随后的时钟周期处被阵列中的其他cell再利用。
在一些实现中,cell还包括控制寄存器。控制寄存器能够存储控制信号,该控制信号确定cell应当将权重输入移位至相邻cell,还是应当将激活输入移位至相邻cell。在一些实现中,将权重输入或者激活输入移位占用一个或多个时钟周期。控制信号还能够确定是激活输入还是权重输入被传送至乘法电路408,或者能够确定乘法电路408对激活输入还是权重输入运算。控制信号还能够例如利用电线而被传送到一个或多个相邻cell。
在一些实现中,权重被预移位至权重路径寄存器412中。权重路径寄存器412能够从例如顶部相邻cell接收权重输入,并且基于控制信号而将权重输入传送到权重寄存器402。在多个时钟周期期间,权重寄存器402能够静态地存储权重输入,使得在激活输入例如通过激活寄存器406而传送到cell时,权重输入保留在cell内并且不被传送至相邻的cell。因此,权重输入能够利用例如乘法电路408而应用到多个激活输入,并且各自的累加值能够被传送到相邻cell。
图5示出了向量计算单元502的示例性架构500。向量计算单元502能够接收来自例如参考图2描述的矩阵计算单元这样的矩阵计算单元的累加值的向量。
向量计算单元502能够处理激活单元404处的累加值的向量。在一些实现中,激活单元包括这样的电路,该电路将非线性函数应用到每个累加值,以生成激活值。例如,非线性函数可以是tanh(x),其中,x是累加值。
可选地,向量计算单元502能够在归一化电路506中使激活值归一化,该归一化电路506根据激活值而生成归一化值。
还可选地,向量计算单元502能够利用池化电路508而池化或者是激活值或者是归一化值这样的值。池化电路508能够将聚集函数应用到归一化值中的一个或多个,以生成池化值。在一些实现中,聚集函数是返回归一化值或者归一化值的子集中的最大值、最小值或者平均值的函数。
控制信号510能够被例如图2的定序器206传送,并且能够规定向量计算单元502如何处理累加值的向量。即,控制信号510能够规定激活值是被池化、被归一化还是两者均有。控制信号501还能够使激活函数、归一化函数或者池化函数以及用于归一化和池化的例如步长值这样的其他参数具体化。
向量计算单元502能够将例如激活值、归一化值或者池化值这样的值发送到统一缓存器,例如图2的统一缓存器208。
在一些实现中,池化单元508而不是归一化电路506接收激活值,并且将池化值存储在统一缓存器中。在一些实现中,池化单元508将池化值发送至归一化电路506,该归一化电路506生成要存储在统一缓存器中的归一化值。
图6示出了例如图5的归一化电路506这样的归一化电路的示例性架构600。归一化电路能够对每个时钟周期均接收来自例如图5的激活电路504这样的激活电路602的激活值的向量。基于系统参数的值,归一化电路可以将激活值的向量传送到池化电路,即,不使激活值归一化,或者根据激活值的向量而生成归一化值的向量。例如,如果由例如用户提供的系统参数指示电路将激活值的向量传送到池化电路,例如,如果用户不想要使值归一化,则系统参数可以是到多路器(multiplexor)的信号,该多路器将值直接传送到池化电路,并且跳过归一化电路。
在一些实现中,激活值的向量包括这样的激活值,通过将激活函数应用到基于权重输入组而根据激活输入所生成的累加值,以生成该激活值。
在一些其他实现中,因为当使激活输入和权重输入移位时所产生的延迟,所以用于权重输入组的激活值被在多个激活值的向量之间错开。例如,矩阵计算单元能够根据来自内核A的激活输入组和权重输入组而生成累加值A0-An,根据来自内核B的激活输入组和权重输入组而生成累加值B0-Bn,并且根据来自内核C的激活输入组和权重输入组而生成累加值C0-Cn。因为在计算相应的累加值之前,权重输入和激活输入在矩阵计算单元中移位,所以累加值A0-An和B0-Bn能够在随后的时钟周期中被生成,如上面参考图4所述。A0能够在时钟周期0处生成,A1和B0能够在时钟周期1处生成,A2、B1和C0能够在时钟周期2处生成,An、Bn-1和Cn-2能够在时钟周期n处生成,以此类推。矩阵计算单元能够生成包括用于时钟周期X的A0和B0的累加值的向量,以及包括用于时钟周期X+1的A1和B1的累加值的另一个向量。因此,用于给定内核的累加值,例如来自内核A的A0-An能够以错开方式扩展至随后的时钟周期的累加值的多个向量。
结果,累加值的多个向量能够例如在利用图5的激活电路504处理之后而变为激活值的多个向量,并且激活值的多个向量中的每个能够被分别发送至相异的归一化寄存器列。特别地,激活电路602能够将来自激活值的向量的每个激活值发送至相异的归一化寄存器列604-610。特别地,归一化寄存器616-622能够分别接收到各自的激活值。归一化寄存器列可包括串联连接的一组归一化寄存器。即,列中的第一归一化寄存器的输出能够作为输入而发送到列中的第二归一化寄存器。在一些实现中,每个归一化寄存器存储激活值。在一些其他实现中,每个归一化寄存器还存储激活值的平方。在一些实现中,归一化电路具有与激活电路或者脉动阵列中的列同样多的归一化寄存器列。
在一些实现中,在向归一化寄存器列提供激活值的向量之前,电路将向量发送到求平方单元。该求平方单元能够计算每个激活值的平方,用于下面进一步描述的在计算归一化值中使用。求平方单元能够生成平方激活值的向量,即,对每个激活值的向量均如此,并且将平方激活值的向量发送至归一化寄存器列。在一些其他实现中,求平方单元将激活值的向量以及平方激活值的向量两者均发送到归一化寄存器列。
在一些实现中,归一化电路基于归一化半径参数而形成错开群(staggeredgroups),例如,错开群624和628。归一化半径参数能够表示来自当计算归一化值时使用的周围的归一化寄存器的输出的数量。输出的数量能够等于归一化半径参数的二倍。通过图示,错开群624和628由1的归一化半径参数形成。错开群624包括归一化单元632和618,并且还包括零寄存器636。当计算在归一化电路的边缘处的归一化值时,零寄存器636能够总是输出0的值,并且能够用作缓存器。零寄存器635和638能够包括在零寄存器612的列中。下文将参考图7进一步描述在错开群内的值的实例。
在一些实现中,归一化单元,例如归一化单元626、630使用来自错开群的输出,以生成用于计算归一化值的相应的组分,例如,在错开群的寄存器内的激活值的平方。例如,组分能够用于生成所有激活值的平方的总和。归一化单元能够使用平方的总和以计算归一化值,这将在下文进一步描述。在一些实现中,存在用于每个错开群的相应的归一化单元。
归一化电路能够基于错开群而生成用于激活值的归一化值。例如,存储在归一化寄存器632中的用于激活值的归一化值能够存储在归一化单元626中。特别地,基于错开群624,归一化电路能够利用例如总和电路而计算由错开群624中的归一化寄存器生成的所有平方的总和。该总和能够被存储在归一化单元626中。总和可以是与激活值相对应的归一化值。归一化电路能够继续生成用于错开群628的另一个相应的归一化值,该错开群628包括归一化寄存器634、640和零寄存器620,并且相应的归一化值能够存储在归一化单元630中。
归一化电路能够根据例如能够存储在归一化单元中的生成的归一化值而形成归一化值的向量,并且如果由神经网络参数确定,能够将归一化值的向量发送到池化电路,或者发送到统一缓存器。
图7示出了归一化寄存器内的具有采样激活值的归一化电路的另一个示例性架构700。归一化半径参数可以是1,如在错开群724和728所示例的。特别地,错开群724包括归一化寄存器732和718以及零寄存器736。错开群728包括零寄存器738和归一化寄存器734和740。
归一化寄存器716-720、732、734和740可以存储例如与来自脉动阵列的列相对应的激活值。归一化寄存器740的记法AX,Y,例如A0,0表示与时钟周期Y中的列X相对应的激活值。
如在附图中示例的,激活值以错开的方式加载。例如,在时钟周期0,可以计算激活值A0,0、A1,0和A2,0,然而归一化电路在三个时钟周期期间加载这三个激活值。在一些实现中,激活值以非错开的方式加载。即,可以在一个时钟周期内加载A0,0、A1,0和A2,0。
N0可以是用于存储在归一化寄存器726中的A0,1的归一化值。N0可以基于A0,1、A1,1和0(来自零寄存器736)的平方的总和而计算,下文将参考图8描述。相似地,N1可以是用于A0,0的归一化值,基于A0,0、A1,0和A2,0(来自寄存器720)的平方的总和而计算N1。
归一化电路可以利用半径1而计算用于每个激活值的归一化值。可以是其他半径。如果归一化电路尚未加载归一化计算所需的激活值,则归一化电路可以将激活值移位至随后的归一化寄存器,直至加载需要的激活值。例如,计算用于存储在归一化寄存器716中的激活值A0,2的归一化值要求依照半径1的激活值A1,2。激活值A1,2可以在随后的时钟周期加载到归一化寄存器718中,此时,归一化电路可以计算用于激活值A0,2的归一化值。
图8示出了在归一化电路内的归一化单元的示例性架构800。归一化单元可以接收激活值802。在一些实现中,例如当电路确定激活值802处于错误位置时,即,激活值需要存储在随后的用于归一化计算的归一化单元时,激活值802通过多路器814而传送到随后的归一化单元。归一化电路可以将控制信号发送到多路器814,以传递特定输出,例如,归一化值或者不受影响的激活值。
在一些实现中,激活值传递到平方电路804。平方电路804可以生成平方激活值808,即,产生激活值的二次方。平方电路804可以将平方激活值808发送到相邻的归一化单元,例如,在归一化单元的相同的错开群中的其他归一化单元。
在一些实现中,接收到的激活值在被提供至归一化寄存器列之前已经被平方化,如上面参考图6所述。
归一化单元还可以在总和电路806处接收到来自相邻的归一化单元的平方激活值810。总和电路806可以生成平方激活值808和接收到的平方激活值810的总和。
该总和可以被发送至存储器单元812。在一些实现中,存储器单元812包括查找表和插值单元。归一化单元可以使用该总和的一部分,例如,总和的一组高位作为地址而查找由系统参数提供的一个或多个系数。存储器和插值单元812可以基于平方激活值的系数和总和而生成归一化缩放因子。归一化缩放因子可以被发送至乘法单元816。
在一些实现中,平方的总和是12位值。归一化单元可以使用平方的总和的最高4位作为到查找表的索引。最高4位可以用于从查找表读取例如由用户指定的系数。在一些实现中,最高4位读取到2个12位系数:A&B。底部的八位可以是在计算归一化缩放因子的方程中使用的delta。利用缩放因子而给出示例性方程=minimum(1048575,[A*delta+B*256+2^7])>>8,其中,minimum处理两个自变量,并且返回具有最小值的自变量。
归一化单元可以利用乘法单元816而将归一化缩放因子乘以激活值802,以生成归一化值。在一些实现中,归一化值然后被发送至例如图5的池化电路508这样的池化电路。
图9示出了池化电路的示例性架构900。池化电路可以将聚集函数应用到一个或多个归一化值或者激活值以生成池化值。通过图示,架构900可以进行激活值或者归一化值的4x 4组的池化。虽然图9所示的池化具有方形区域,即,4x 4,但是还可以是长方形区域。例如,如果该区域具有n x m的窗口,则架构900可以具有n*m个寄存器,即,n列和m行。
池化电路可以从例如图5的归一化电路506接收来自归一化值的向量的元素序列。例如,该序列可以代表图像的8x8部分的像素,并且池化电路架构900可以池化来自8x8部分中的4x4子集的值。在一些实现中,归一化值一旦被耦合到池化电路的归一化电路计算出则被添加到该序列。在一些实现中,神经网络处理器包括多个并行的池化电路。在每个时钟周期期间,每个池化电路可以从归一化电路接收到来自归一化值的向量的各自的元素。每个池化电路可以将从归一化电路接收到的元素解释为以栅格顺序到达的二维图像。
池化电路可以包括一系列寄存器和存储器单元。每个寄存器可以将输出发送到聚集电路906,该聚集电路906将聚集函数应用至寄存器内存储的值。聚集函数可以返回来自一组值的最小值、最大值或者平均值。
第一归一化值可以被发送至并且存储在寄存器902中。在随后的时钟周期处,第一归一化值可以移位到随后的寄存器908并且被存储在存储器904中,并且第二归一化值可以被发送至并且存储在寄存器902内。
在四个时钟周期之后,四个归一化值被存储在首先的四个寄存器902、908-912内。在一些实现中,存储器单元904在先进先出(FIFO)下运行。每个存储器单元可以存储直至八个归一化值。在存储器单元904包含完整的像素行之后,存储器单元904可以将归一化值发送到寄存器914。
在任意给定的时间点处,聚集电路906可以从每个寄存器读取归一化值。寄存器中的归一化值应当代表图像的4x 4部分的归一化值。
池化电路可以通过使用聚集电路906而根据读取到的归一化值而生成池化值,例如,最大的、最小的或者平均的归一化值。池化值可以被发送到统一缓存器,例如,图2的统一缓存器208。
在生成第一池化值之后,池化电路可以通过利用每个寄存器使归一化值移位,使得新的归一化值被存储在寄存器内并且可以被聚集电路906所池化,而继续生成池化值。例如,在架构900中,池化电路可以在另外4个时钟周期中移位归一化值,从而将存储器单元中的归一化值移位到寄存器中。在一些实现中,池化电路使新的归一化值移位,直至新的归一化值被存储在最后的最顶部寄存器,例如,寄存器916中。
聚集电路(aggregation circuitry)906然后可以池化存储在寄存器中的新的归一化值。
在一些实现中,池化电路接收激活值的向量,而不是接收归一化值的向量,如上面参考图5所述的。
本说明书中描述的主题的实施方式和功能性操作可以在以下中实施:数字电子电路,有形实施的计算机软件或者固件,计算机硬件,包括本说明书中公开的结构及其结构等同体,或者上述中的一者以上的组合。本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序,即,一个或多个有形非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用以被数据处理设备执行或者控制数据处理设备的操作。作为替代或者附加,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电信号、光信号或者电磁信号,上述信号被生成为编码信息以传递到用数据处理设备执行的适当的接收器设备。计算机存储介质可以是机器可读存储装置、机器可读的存储基片、随机或者串行存取存储器装置或者上述装置中的一种或多种的组合。
术语“数据处理设备”包含所有种类的用于处理数据的设备、装置以及机器,作为实例,包括可编程处理器、计算机或者多重处理器或者多重计算机。设备可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。设备除了包括硬件之外,还可以包括创建相关计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一种或多种的组合代码。
计算机程序(还可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或者代码)可以以任意形式的编程语言而被写出,包括编译语言或者解释语言或者声明性语言或过程式语言,并且计算机程序可以以任意形式展开,包括作为独立程序或者作为模块、组件、子程序或者适于在计算环境中使用的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以被存储在保存其他程序或者数据的文件的一部分中,例如,存储在如下中的一个或多个脚本:在标记语言文档中;在专用于相关程序的单个文件中;或者在多个协同文件中,例如,存储一个或多个模块、子程序或者代码部分的文件。计算机程序可以被展开为执行在一个计算机或者多个计算机上,所述计算机位于一处,或者分布至多个场所并且通过通信网络而互相连接。
在本说明书中描述的处理和逻辑流程可以由一个或多个可编程计算机执行,该计算机通过运算输入数据并且生成输出而执行一个或多个的计算机程序,以运行函数。处理和逻辑流程还可以由专用逻辑电路,例如,FPGA(可现场编程门阵列)或者ASIC(专用集成电路)执行,并且设备也可以被实施为专用逻辑电路。
适于实行计算机程序的计算机包括并且示例性地可以基于通用微处理器或者专用微处理器或者上述处理器两者,或者任意其他种类的中央处理单元。通常地,中央处理单元将接收来自只读存储器或者随机存取存储器或者这两者的指令和数据。计算机的主要元件是用于运行或者执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。通常地,计算机还将包括或者是可操作性地耦合,以从用于存储数据的一个或多个大容量存储装置接收数据或者传递数据到大容量存储装置,或者接收和传递两者,该大容量存储器例如为磁盘、磁光盘或者光盘。然而,计算机不必须具有这样的装置。此外,计算机可以被嵌入到另一装置中,例如,移动电话、个人数字助理(PDA)、移动音频或者视频播放器、游戏主控台、全球定位系统(GPS)接收器或者可移动存储设备,例如,通用串行总线(USB)闪存盘等。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器、介质和存储器装置,作为实例,包括:半导体存储器装置,例如,EPROM、EEPROM和闪速存储器装置;磁盘,例如,内置硬盘或者可移动磁盘;磁光盘;CD-ROM和DVD-ROM盘。处理器和存储器可以补充以或者并入至专用逻辑电路。
为了发送与用户的交互,本说明书中描述的主题的实施方式可以被实施在计算机上,该计算机具有:显示装置,例如,CRT(阴极射线管)或者LCD(液晶显示器)监控器,用于向用户显示信息;以及键盘和例如鼠标或者追踪球这样的定位装置,用户利用它们可以将输入发送到计算机。其他种类的装置也可以用于发送与用户的交互;例如,提供给用户的反馈可以是任意形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;以及来自用户的输入可以以任意形式接收到,包括声响输入、语音输入或者触觉输入。另外,计算机可以通过将文档发送至由用户使用的装置并且接收来自该装置的文档而与用户交互;例如,通过响应于接收到的来自网络浏览器的请求,而将网页发送到用户的客户端装置上的网络浏览器。
本说明书中描述的主题的实施方式可以在计算系统中实施,该计算系统包括例如数据服务器这样的后端组件,或者包括例如应用服务器这样的中间组件,或者包括例如客户端计算机这样的前端组件,该客户端计算机具有图形用户界面或者网络浏览器,用户可以通过图形用户界面或者网络浏览器而与本说明书中描述的主题的实施进行交互,或者该计算机系统包括一个或多个这种后端组件、中间组件或者前端组件的任意组合。系统中的组件可以通过例如通信网络的任意形式或介质的数字数据通信而互相连接。通信网络的实例包括局域网络(“LAN”)和广域网络(“WAN”),例如,因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络而交互。客户端与服务器之间的关系利用在各自的计算机上运行并且具有彼此之间的客户端-服务器关系的计算机程序而产生。
虽然本说明书包含很多具体的实施细节,但是这些不应当被解释为对任何发明的范围或者对可以要求保护的内容的范围的限制,而是作为可以使特定发明的特定实施方式具体化的特征的说明。在独立的实施方式的语境中的本说明书中描述的特定特征还可以与单个实施方式组合地实施。相反地,在单个实施方式的语境中描述的各种特征还可以独立地在多个实施方式中实施,或者在任何合适的子组合中实施。此外,虽然以上可以将特征描述为组合作用并且甚至最初这样要求,但是来自要求的组合的一个或多个特征在一些情况下可以从该组合去掉,并且要求的组合可以转向子组合或者子组合的变形。
相似地,虽然以特定顺序在附图中描述了操作,但是不应当理解为:为了实现期望的结果,要求这样的操作以示出的特定顺序或者以顺序次序而执行,或者所有图示的操作都被执行。在特定情况下,多任务处理和并行处理可以是有利的。此外,上述实施方式中的各种系统模块和组件的分离不应当理解为在所有实施方式中要求这样的分离,并且应当理解程序组件和系统可以通常被一体化在单个软件产品中或者打包至多个软件产品中。
已经描述了主题的特定实施方式。其他实施方式在以下权利要求的范围内。例如,在权利要求中记载的活动可以以不同的顺序执行并且仍旧实现期望的结果。作为一个实例,为了实现期望的结果,附图中描述的处理不必须要求示出的特定顺序或者顺序次序。在特定实现中,多任务处理和并行处理可以是有优势的。

Claims (12)

1.一种用于对包含多层的神经网络进行神经网络计算的电路,所述电路包括:
激活电路,所述激活电路被配置为接收累加值的向量,并且被配置为将函数应用到每个累加值以生成激活值的向量;以及
归一化电路,所述归一化电路耦合到所述激活电路,并且被配置为生成用于每个激活值的各自的归一化值。
2.根据权利要求1所述的电路,其中,所述激活电路从所述电路中的脉动阵列接收所述累加值的向量。
3.根据权利要求1或2所述的电路,其中,所述归一化电路包括多个归一化寄存器列,每个归一化寄存器列包括串联连接的多个归一化寄存器,每个归一化寄存器列被配置为接收各自的激活值,其中所述归一化电路被配置为在一个或多个归一化寄存器周围形成群,每个群对应于归一化单元,并且每个归一化单元被配置为计算用于所述各自的激活值的各自的归一化值。
4.根据权利要求3所述的电路,其中,每个归一化寄存器被配置为将相异的激活值传送到相邻的归一化列。
5.根据权利要求3或4所述的电路,其中,每个群利用归一化半径参数而形成。
6.根据权利要求3至5中任一项所述的电路,其中,每个归一化单元被配置为:
接收所述各自的激活值;
根据所述各自的激活值来生成各自的中间归一化值;以及
将所述各自的中间归一化值发送至一个或多个相邻的归一化单元。
7.根据权利要求6所述的电路,其中,生成所述各自的中间归一化值包括生成所述各自的激活值的平方。
8.根据权利要求6或7所述的电路,其中,每个归一化单元进一步被配置为:
从一个或多个相邻的归一化单元接收根据激活值生成的一个或多个中间归一化值;
对每个中间归一化值求和,以生成索引;
使用所述索引以从查找表读取一个或多个值;
根据所述一个或多个值以及所述索引来生成缩放因子;以及
根据所述缩放因子以及所述各自的激活值来生成所述各自的归一化值。
9.根据权利要求1至8中任一项所述的电路,进一步包括池化电路,所述池化电路被配置为接收所述归一化值,并且被配置为池化所述归一化值以生成池化值。
10.根据权利要求9所述的电路,其中,所述池化电路被配置为将多个归一化值存储在多个寄存器以及多个存储器单元中,
其中,所述多个寄存器和所述多个存储器单元串联连接,其中每个寄存器存储一个归一化值,并且每个存储器单元存储多个归一化值,
其中,所述池化电路被配置为在每个时钟周期之后将给定归一化值移位至随后的寄存器或者存储器单元,以及
其中,所述池化电路被配置为根据所述归一化值来生成所述池化值。
11.根据权利要求1至8中任一项所述的电路,进一步包括池化电路,所述池化电路被配置为接收所述激活值,并且被配置为池化所述激活值以生成池化值。
12.根据权利要求11所述的电路,其中,所述池化电路被配置为将多个激活值存储在多个寄存器以及多个存储器单元中,
其中,所述多个寄存器和所述多个存储器单元串联连接,其中每个寄存器存储一个归一化值,并且每个存储器单元存储多个激活值,
其中,所述池化电路被配置为在每个时钟周期之后将给定激活值移位至随后的寄存器或者存储器单元,以及
其中,所述池化电路被配置为根据所述激活值来生成所述池化值。
CN201680019810.9A 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元 Active CN107533667B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110718015.1A CN113392964A (zh) 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562165022P 2015-05-21 2015-05-21
US62/165,022 2015-05-21
US14/845,117 US10192162B2 (en) 2015-05-21 2015-09-03 Vector computation unit in a neural network processor
US14/845,117 2015-09-03
PCT/US2016/029986 WO2016186813A1 (en) 2015-05-21 2016-04-29 Vector computation unit in a neural network processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110718015.1A Division CN113392964A (zh) 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元

Publications (2)

Publication Number Publication Date
CN107533667A true CN107533667A (zh) 2018-01-02
CN107533667B CN107533667B (zh) 2021-07-13

Family

ID=56069218

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680019810.9A Active CN107533667B (zh) 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元
CN202110718015.1A Pending CN113392964A (zh) 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110718015.1A Pending CN113392964A (zh) 2015-05-21 2016-04-29 神经网络处理器中的向量计算单元

Country Status (12)

Country Link
US (3) US10192162B2 (zh)
EP (2) EP3298545B1 (zh)
JP (4) JP6615902B2 (zh)
KR (4) KR102379700B1 (zh)
CN (2) CN107533667B (zh)
DE (2) DE202016107442U1 (zh)
DK (1) DK3298545T3 (zh)
FI (1) FI3298545T3 (zh)
GB (2) GB2600290A (zh)
HK (1) HK1245954A1 (zh)
TW (2) TWI638272B (zh)
WO (1) WO2016186813A1 (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN108874744A (zh) * 2017-05-08 2018-11-23 辉达公司 矩阵乘积累加运算的广义加速
CN109273035A (zh) * 2018-08-02 2019-01-25 北京知存科技有限公司 闪存芯片的控制方法、终端
CN110020723A (zh) * 2018-01-09 2019-07-16 三星电子株式会社 神经网络处理单元及包括该神经网络处理单元的片上系统
CN110415157A (zh) * 2018-04-26 2019-11-05 华为技术有限公司 一种矩阵乘法的计算方法及装置
WO2020147612A1 (zh) * 2019-01-16 2020-07-23 阿里巴巴集团控股有限公司 一种基于图的卷积网络训练方法、装置及系统
CN111742331A (zh) * 2018-02-16 2020-10-02 多伦多大学管理委员会 神经网络加速器
CN112055862A (zh) * 2018-05-04 2020-12-08 苹果公司 可扩展神经网络处理引擎
CN112204579A (zh) * 2018-06-19 2021-01-08 国际商业机器公司 运行时可重新配置的神经网络处理器核
CN112992248A (zh) * 2021-03-12 2021-06-18 西安交通大学深圳研究院 一种基于fifo的可变长循环移位寄存器的pe计算单元结构
CN113344193A (zh) * 2020-02-18 2021-09-03 爱思开海力士有限公司 计算电路和包括计算电路的深度学习系统
CN114654884A (zh) * 2020-12-22 2022-06-24 精工爱普生株式会社 印刷条件设定方法、印刷条件设定系统
US11816481B2 (en) 2017-05-08 2023-11-14 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
US10037490B2 (en) * 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
US10032110B2 (en) * 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10521488B1 (en) 2016-12-30 2019-12-31 X Development Llc Dynamic partitioning
JP6740920B2 (ja) * 2017-02-01 2020-08-19 株式会社デンソー 演算処理装置
CA3051990C (en) * 2017-02-23 2021-03-23 Cerebras Systems Inc. Accelerated deep learning
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
US10108581B1 (en) 2017-04-03 2018-10-23 Google Llc Vector reduction processor
JP6854473B2 (ja) 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
WO2018193377A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Control wavelet for accelerated deep learning
KR102661910B1 (ko) 2017-05-17 2024-04-26 구글 엘엘씨 특수 목적 뉴럴 네트워크 트레이닝 칩
CN110447010B (zh) * 2017-05-17 2023-09-26 谷歌有限责任公司 在硬件中执行矩阵乘法
CN109997132B (zh) 2017-05-17 2023-05-23 谷歌有限责任公司 低时延矩阵乘法部件
CN107146616B (zh) * 2017-06-13 2020-05-08 Oppo广东移动通信有限公司 设备控制方法及相关产品
CN109284821B (zh) * 2017-07-19 2022-04-12 华为技术有限公司 一种神经网络运算装置
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11409692B2 (en) * 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
TWI653584B (zh) 2017-09-15 2019-03-11 中原大學 利用非揮發性記憶體完成類神經網路訓練的方法
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks
KR102586173B1 (ko) 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
KR102424962B1 (ko) 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
US10599975B2 (en) * 2017-12-15 2020-03-24 Uber Technologies, Inc. Scalable parameter encoding of artificial neural networks obtained via an evolutionary process
US11360930B2 (en) * 2017-12-19 2022-06-14 Samsung Electronics Co., Ltd. Neural processing accelerator
US20190205738A1 (en) * 2018-01-04 2019-07-04 Tesla, Inc. Systems and methods for hardware-based pooling
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
US11494582B2 (en) 2018-02-08 2022-11-08 Western Digital Technologies, Inc. Configurable neural network engine of tensor arrays and memory cells
US11164074B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Multi-core systolic processor system for neural network processing
US11907834B2 (en) 2018-02-14 2024-02-20 Deepmentor Inc Method for establishing data-recognition model
TWI659324B (zh) * 2018-02-14 2019-05-11 倍加科技股份有限公司 電路規劃結果產生方法與系統
US11487846B2 (en) 2018-05-04 2022-11-01 Apple Inc. Performing multiply and accumulate operations in neural network processor
US10440341B1 (en) * 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
DE102018115902A1 (de) 2018-07-01 2020-01-02 Oliver Bartels SIMD-Prozessor mit CAM zur Operandenauswahl nach Mustererkennung
TWI667576B (zh) * 2018-07-09 2019-08-01 國立中央大學 機器學習方法及機器學習裝置
US11636319B2 (en) 2018-08-22 2023-04-25 Intel Corporation Iterative normalization for machine learning applications
US11328207B2 (en) 2018-08-28 2022-05-10 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
WO2020044208A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Isa enhancements for accelerated deep learning
KR102637733B1 (ko) 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
JP7315317B2 (ja) 2018-11-09 2023-07-26 株式会社Preferred Networks プロセッサおよびプロセッサのデータ転送方法
US11188085B2 (en) * 2019-03-22 2021-11-30 Ford Global Technologies, Llc Vehicle capsule networks
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
US10733016B1 (en) 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions
US11853890B2 (en) * 2019-05-02 2023-12-26 Macronix International Co., Ltd. Memory device and operation method thereof
TWI698810B (zh) * 2019-06-14 2020-07-11 旺宏電子股份有限公司 類神經計算裝置
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
KR20210014902A (ko) 2019-07-31 2021-02-10 삼성전자주식회사 프로세서 및 그 제어 방법
CN110610235B (zh) * 2019-08-22 2022-05-13 北京时代民芯科技有限公司 一种神经网络激活函数计算电路
US11836624B2 (en) 2019-08-26 2023-12-05 D5Ai Llc Deep learning with judgment
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
US11829729B2 (en) 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices
US11693657B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
KR20210050243A (ko) * 2019-10-28 2021-05-07 삼성전자주식회사 뉴로모픽 패키지 장치 및 뉴로모픽 컴퓨팅 시스템
KR102139229B1 (ko) * 2019-10-30 2020-07-29 주식회사 뉴로메카 인공신경망을 이용한 로봇 매니퓰레이터의 충돌을 감지하는 방법 및 시스템
KR102357168B1 (ko) * 2019-10-30 2022-02-07 주식회사 뉴로메카 인공신경망을 이용한 로봇 매니퓰레이터의 충돌을 감지하는 방법 및 시스템
WO2021199386A1 (ja) 2020-04-01 2021-10-07 岡島 義憲 曖昧検索回路
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems
US20220277190A1 (en) * 2021-02-28 2022-09-01 Anaflash Inc. Neural network engine with associated memory array
US11544213B2 (en) 2021-03-04 2023-01-03 Samsung Electronics Co., Ltd. Neural processor
US11714556B2 (en) * 2021-09-14 2023-08-01 quadric.io, Inc. Systems and methods for accelerating memory transfers and computation efficiency using a computation-informed partitioning of an on-chip data buffer and implementing computation-aware data transfer operations to the on-chip data buffer
KR20230066697A (ko) * 2021-11-08 2023-05-16 한국전자기술연구원 딥러닝 가속기를 위한 풀링 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799134A (en) * 1995-03-13 1998-08-25 Industrial Technology Research Institute One dimensional systolic array architecture for neural network
CN102665049A (zh) * 2012-03-29 2012-09-12 中国科学院半导体研究所 基于可编程视觉芯片的视觉图像处理系统
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3761876A (en) * 1971-07-28 1973-09-25 Recognition Equipment Inc Recognition unit for optical character reading system
US3777132A (en) * 1972-02-23 1973-12-04 Burroughs Corp Method and apparatus for obtaining the reciprocal of a number and the quotient of two numbers
FR2595891B1 (fr) * 1986-03-11 1988-06-10 Labo Electronique Physique Procede de renforcement des contours de signaux numeriques et dispositif de traitement pour la mise en oeuvre dudit procede
JPS63206828A (ja) 1987-02-23 1988-08-26 Mitsubishi Electric Corp 最大値ストレツチ回路
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
EP0411341A3 (en) * 1989-07-10 1992-05-13 Yozan Inc. Neural network
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
JP2756170B2 (ja) 1990-03-05 1998-05-25 日本電信電話株式会社 ニューラルネットワーク学習回路
US5146543A (en) 1990-05-22 1992-09-08 International Business Machines Corp. Scalable neural array processor
US5337395A (en) 1991-04-08 1994-08-09 International Business Machines Corporation SPIN: a sequential pipeline neurocomputer
JPH04290155A (ja) 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
WO1993008538A1 (en) * 1991-10-17 1993-04-29 Kawasaki Steel Corporation Processor for neural network
US5903454A (en) 1991-12-23 1999-05-11 Hoffberg; Linda Irene Human-factored interface corporating adaptive pattern recognition based controller apparatus
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
JPH11177399A (ja) 1997-12-15 1999-07-02 Mitsubishi Electric Corp クロック遅延回路およびこれを用いた発振回路、位相同期回路、クロック生成回路
GB9902115D0 (en) 1999-02-01 1999-03-24 Axeon Limited Neural networks
US7054850B2 (en) * 2000-06-16 2006-05-30 Canon Kabushiki Kaisha Apparatus and method for detecting or recognizing pattern by employing a plurality of feature detecting elements
JP3613466B2 (ja) * 2001-04-06 2005-01-26 旭化成株式会社 データ演算処理装置及びデータ演算処理プログラム
US7245767B2 (en) 2003-08-21 2007-07-17 Hewlett-Packard Development Company, L.P. Method and apparatus for object identification, classification or verification
US7693585B2 (en) 2004-09-30 2010-04-06 Rockwell Automation Technologies, Inc. Enabling object oriented capabilities in automation systems
US7634137B2 (en) 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
WO2008067676A1 (en) 2006-12-08 2008-06-12 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
JP5376920B2 (ja) 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
EP2259214B1 (en) * 2009-06-04 2013-02-27 Honda Research Institute Europe GmbH Implementing a neural associative memory based on non-linear learning of discrete synapses
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
TW201331855A (zh) 2012-01-19 2013-08-01 Univ Nat Taipei Technology 具自由回饋節點的高速硬體倒傳遞及回饋型類神經網路
JP5834997B2 (ja) * 2012-02-23 2015-12-24 株式会社ソシオネクスト ベクトルプロセッサ、ベクトルプロセッサの処理方法
US9081608B2 (en) * 2012-05-19 2015-07-14 Digital System Research Inc. Residue number arithmetic logic unit
ES2820537T3 (es) * 2012-07-12 2021-04-21 Nokia Technologies Oy Cuantificación vectorial
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
US20140280989A1 (en) 2013-03-14 2014-09-18 Thomas J. Borkowski System and method for establishing peer to peer connections through symmetric nats
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
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
JP6107531B2 (ja) 2013-08-15 2017-04-05 富士ゼロックス株式会社 特徴抽出プログラム及び情報処理装置
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
JP6314628B2 (ja) * 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
CN104035751B (zh) 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
US9886948B1 (en) * 2015-01-05 2018-02-06 Amazon Technologies, Inc. Neural network processing of multiple feature streams using max pooling and restricted connectivity
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
US10102481B2 (en) * 2015-03-16 2018-10-16 Conduent Business Services, Llc Hybrid active learning for non-stationary streaming data with asynchronous labeling
US9552510B2 (en) * 2015-03-18 2017-01-24 Adobe Systems Incorporated Facial expression capture for character animation
EP3274909A4 (en) * 2015-03-27 2018-11-21 Intel Corporation Low-cost face recognition using gaussian receptive field features
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
GB2558271B (en) * 2016-12-23 2021-09-08 Imagination Tech Ltd Median determination

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799134A (en) * 1995-03-13 1998-08-25 Industrial Technology Research Institute One dimensional systolic array architecture for neural network
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法
CN102665049A (zh) * 2012-03-29 2012-09-12 中国科学院半导体研究所 基于可编程视觉芯片的视觉图像处理系统

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816481B2 (en) 2017-05-08 2023-11-14 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
CN108874744B (zh) * 2017-05-08 2022-06-10 辉达公司 用于执行矩阵乘积和累加运算的处理器、方法及存储介质
US11816482B2 (en) 2017-05-08 2023-11-14 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
CN108874744A (zh) * 2017-05-08 2018-11-23 辉达公司 矩阵乘积累加运算的广义加速
US11797301B2 (en) 2017-05-08 2023-10-24 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11797302B2 (en) 2017-05-08 2023-10-24 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11797303B2 (en) 2017-05-08 2023-10-24 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
CN110020723A (zh) * 2018-01-09 2019-07-16 三星电子株式会社 神经网络处理单元及包括该神经网络处理单元的片上系统
CN108182471B (zh) * 2018-01-24 2022-02-15 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN111742331A (zh) * 2018-02-16 2020-10-02 多伦多大学管理委员会 神经网络加速器
CN110415157A (zh) * 2018-04-26 2019-11-05 华为技术有限公司 一种矩阵乘法的计算方法及装置
CN110415157B (zh) * 2018-04-26 2024-01-30 华为技术有限公司 一种矩阵乘法的计算方法及装置
CN112055862A (zh) * 2018-05-04 2020-12-08 苹果公司 可扩展神经网络处理引擎
CN112055862B (zh) * 2018-05-04 2024-05-07 苹果公司 可扩展神经网络处理引擎
US11989640B2 (en) 2018-05-04 2024-05-21 Apple Inc. Scalable neural network processing engine
CN112204579A (zh) * 2018-06-19 2021-01-08 国际商业机器公司 运行时可重新配置的神经网络处理器核
CN109273035A (zh) * 2018-08-02 2019-01-25 北京知存科技有限公司 闪存芯片的控制方法、终端
WO2020147612A1 (zh) * 2019-01-16 2020-07-23 阿里巴巴集团控股有限公司 一种基于图的卷积网络训练方法、装置及系统
CN113344193B (zh) * 2020-02-18 2024-05-31 爱思开海力士有限公司 计算电路和包括计算电路的深度学习系统
CN113344193A (zh) * 2020-02-18 2021-09-03 爱思开海力士有限公司 计算电路和包括计算电路的深度学习系统
CN114654884A (zh) * 2020-12-22 2022-06-24 精工爱普生株式会社 印刷条件设定方法、印刷条件设定系统
CN114654884B (zh) * 2020-12-22 2023-06-06 精工爱普生株式会社 印刷条件设定方法、印刷条件设定系统
CN112992248A (zh) * 2021-03-12 2021-06-18 西安交通大学深圳研究院 一种基于fifo的可变长循环移位寄存器的pe计算单元结构

Also Published As

Publication number Publication date
US20190228301A1 (en) 2019-07-25
KR20200077614A (ko) 2020-06-30
KR20220041962A (ko) 2022-04-01
KR20170126997A (ko) 2017-11-20
JP7346510B2 (ja) 2023-09-19
CN107533667B (zh) 2021-07-13
GB2600290A (en) 2022-04-27
TWI638272B (zh) 2018-10-11
US10192162B2 (en) 2019-01-29
JP2018518731A (ja) 2018-07-12
EP4276690A1 (en) 2023-11-15
JP7000387B2 (ja) 2022-01-19
HK1245954A1 (zh) 2018-08-31
GB2553055A (en) 2018-02-21
DE202016107442U1 (de) 2017-01-18
GB2553055B (en) 2022-05-11
GB201715525D0 (en) 2017-11-08
KR102127524B1 (ko) 2020-06-26
EP3298545A1 (en) 2018-03-28
TWI591490B (zh) 2017-07-11
JP2023169224A (ja) 2023-11-29
DE112016002296T5 (de) 2018-02-15
US20170103315A1 (en) 2017-04-13
TW201706873A (zh) 2017-02-16
DK3298545T3 (da) 2024-01-02
WO2016186813A1 (en) 2016-11-24
TW201729124A (zh) 2017-08-16
US20230206070A1 (en) 2023-06-29
JP2022000782A (ja) 2022-01-04
US11620508B2 (en) 2023-04-04
EP3298545B1 (en) 2023-10-25
KR102516092B1 (ko) 2023-03-29
KR102379700B1 (ko) 2022-03-25
FI3298545T3 (fi) 2024-01-11
CN113392964A (zh) 2021-09-14
JP2020017281A (ja) 2020-01-30
JP6615902B2 (ja) 2019-12-04
US10074051B2 (en) 2018-09-11
US20160342889A1 (en) 2016-11-24
KR20230048449A (ko) 2023-04-11

Similar Documents

Publication Publication Date Title
CN107533667A (zh) 神经网络处理器中的向量计算单元
EP3373210B1 (en) Transposing neural network matrices in hardware
US11049016B2 (en) Neural network processor
CN108073983B (zh) 在硬件中执行核心跨越
CN107622302B (zh) 用于卷积神经网络的超像素方法
CN110543939B (zh) 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置
US12014272B2 (en) Vector computation unit in a neural network processor

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
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1245954

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant