CN109389214A - 具有驻留在芯片上的参数的神经网络加速器 - Google Patents

具有驻留在芯片上的参数的神经网络加速器 Download PDF

Info

Publication number
CN109389214A
CN109389214A CN201810908471.0A CN201810908471A CN109389214A CN 109389214 A CN109389214 A CN 109389214A CN 201810908471 A CN201810908471 A CN 201810908471A CN 109389214 A CN109389214 A CN 109389214A
Authority
CN
China
Prior art keywords
memory group
parameter
tile
memory
calculating
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.)
Pending
Application number
CN201810908471.0A
Other languages
English (en)
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
Publication of CN109389214A publication Critical patent/CN109389214A/zh
Pending legal-status Critical Current

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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • 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/045Combinations of networks
    • 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

Landscapes

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

Abstract

本申请涉及具有驻留在芯片上的参数的神经网络加速器。加速器的一个实施例包括:计算单元;第一存储器组,其用于输入激活,和第二存储器组,其用于存储在执行计算中使用的参数,第二存储器组被配置成将足够数量的神经网络参数存储在该计算单元上以允许低于指定水平的延时以及高于指定水平的吞吐量。该计算单元包括至少一个cell,其包括至少一个乘法累加运算器,其从第二存储器组接收参数并且执行计算。该计算单元还包括第一遍历单元,其将控制信号提供到第一存储器组以使得输入激活被提供到由乘法累加运算器可访问的数据总线。该计算单元执行与数据阵列的至少一个元素相关联的计算、该一个或多个计算由乘法累加运算器所执行。

Description

具有驻留在芯片上的参数的神经网络加速器
相关申请的交叉引用
本申请要求于2017年8月11日提交的题为“Neural Network Accelerator withParameters Resident on Chip”的美国专利申请No.62/544,171的提交日期的优先权,并且其通过引用并入本文。
技术领域
本申请涉及具有驻留在芯片上的参数的神经网络加速器。
背景技术
本说明书大体涉及用于深度神经网络(“DNN”)层的计算的神经网络(“NN”)计算瓦片(tile)。
发明内容
一般而言,在本说明书中所描述的主题的一个创新方面能够被包含在将神经网络的参数存储在加速器上。神经网络偏离典型的计算工作量,因为其工作集即对于全部计算所要求的总存储量是实际上有限的。该工作集主要地对应于参数的数量,通常地从几十万到几十亿。该存储量与现有的硬件存储技术兼容。
虽然这样,当前的加速器包含用于参数的本地存储,其中参数穿过本地存储转送,即参数未永久地驻留在芯片上。反而是,对于每个新推理,参数都从外部存储器流输(stream)。
外部存储器带宽因此是所有神经网络(“NN”)加速器的关键限制。在本说明书中所描述的实施例利用用于参数的永久存储替换用于参数的暂时性本地存储,即,实施例保持NN的所有参数驻留在加速器,并且使它们不再从外部存储器流输。
将参数存储在芯片上的益处包括:克服NN加速器的性能限制;显著促进乘法累加(“MAC”)运算器的数量的增加,因为性能限制已经被克服;并且提供低功率神经网络加速器,因为外部存储器访问通常需要比本地存储器访问至少高一个数量级的能量。
在某些实施例中,加速器包括计算单元。该计算单元包括:第一存储器组,其用于存储输入激活或者输出激活;第二存储器组,其用于存储在执行计算中使用的神经网络参数,第二存储器组被配置成将足够数量的所述神经网络参数存储在计算单元上以允许针对给定NN模型和架构的低于指定水平的延时以及高于指定水平的吞吐量;至少一个cell,其包括至少一个MAC运算器,其从第二存储器组接收参数并且执行计算;至少与所述第一存储器组数据通信的第一遍历单元,第一遍历单元被配置成将控制信号提供到第一存储器组以使得输入激活被提供到由MAC运算器可访问的数据总线;并且其中,加速器执行与数据阵列的至少一个元素相关联的一个或多个计算,一个或多个计算由MAC运算器执行,并且部分地包括从数据总线接收到的输入激活和从第二存储器组接收到的参数的乘法运算。如果用于参数的存储足以保持所有神经网络参数,则加速器的性能将不由存储器带宽确定。在该情况下,每周期利用参数馈送所有MAC是可能的。
本说明书中所描述的主题的另一创新方面能够被包含在用于加速张量计算的计算机实现的方法中。该计算机实现的方法包括:由第一存储器组响应于第一存储器组接收到控制信号而发送第一输入激活,其中,第一输入激活由数据总线传送;通过至少一个MAC运算器从用于存储在执行计算中使用的神经网络参数的第二存储器组接收一个或多个参数,第二存储器组将足够数量的神经网络参数存储在计算单元上以允许针对给定NN模型和架构的低于指定阈值的延时和高于指定阈值的吞吐量;并且通过MAC运算器执行与数据阵列的至少一个元素相关联的一个或多个计算,其中,一个或多个计算部分地包括至少从数据总线访问的第一输入激活和从第二存储器组接收到的至少一个参数的乘法运算。
本说明书中所描述的主题的另一创新方面能够被包含在用于加速计算的方法中。该方法包括:在执行之前,将神经网络权重参数加载到神经网络加速器;并且在执行期间,基本上在未访问加速器外部的神经网络权重参数的情况下,处理对加速器的输入。该方法还能够包括:如果神经网络权重参数的数量太大以致于不能适配在单个加速器模具上,则将神经网络权重参数加载到多个紧密连接的加速器模具中;并且基本上在未访问在紧密连接的加速器模具外部的神经网络权重参数的情况下,处理对加速器模具的输入。
本说明书中所描述的主题能够被实现在特定实施例中以便实现以下优点中的一个或多个。使用寄存器跟踪存储器地址值允许程序利用一个指令迭代深度嵌套循环。在单个计算瓦片中从窄存储器和宽存储器单元可访问的张量基于从寄存器所检索的存储器地址值来遍历。存储器地址值对应于张量的元素。张量计算基于深度循环嵌套的执行在单独的计算瓦片中发生。计算能够跨多个瓦片分布。计算效率基于跨若干计算瓦片分布用于多层神经网络的张量计算来增强和加速。张量能够被遍历并且张量计算能够利用减少数量的指令来执行。
本说明书中所描述的实施例对神经网络(“NN”)加速器操作和设计产生影响。实施例对神经网络加速器设计的显著限制和低延时和高吞吐量的组合中的一个起作用。给定高吞吐量和给定NN模型和架构,在芯片上驻留放置参数则显著地减少延时。加速器不需要高存储器带宽并且能量下降。
具有如在本说明书中所描述的瓦片布置提供编译类型本地性。例如,靠近SRAM放置完全连接的模型导致对比高速缓存模型更大的内部带宽。本说明书中所描述的实施例比常规神经网络加速器更快地操作。某些实施例具有更多运算器;为了馈送运算器,加速器需要更多内部带宽。为了解决该需要,所述架构分布存储器并且将参数带到加速器上。
本说明书中所描述的主题也可能被实现在特定实施例中以便实现其它优点。例如,通过采用将窄低带宽存储器与高带宽宽存储器耦合的存储器层次,能够针对非常不同的尺寸和位置的DNN层实现MAC运算器的高利用率。窄低带宽存储器能够允许以任何次序遍历多维阵列的寻址灵活性。
该方面和其它方面的其它实施方式包括对应的系统、装置和计算机程序,其被配置成执行在计算机存储设备上编码的方法的动作。一个或多个计算机的系统可以借助于在操作中使得系统执行动作的被安装在系统上的软件、固件、硬件或其组合这样配置。一个或多个计算机程序可以借助于具有当由数据处理装置执行时使得装置执行动作的指令这样配置。
在附图和以下描述中阐述本说明书中所描述的主题的一个或多个实现的细节。主题的其它潜在特征、方面和优点将从描述、附图和权利要求变得显而易见。
附图说明
图1是示例计算系统的块图。
图2图示了示例神经网络计算瓦片。
图3图示了示例张量遍历单元(TTU)结构。
图4图示了包括将输入激活提供到一个或多个乘法累加(MAC)运算器的窄存储器单元的示例架构。
图5图示了包括将输出激活提供到图2和图4的窄存储器单元的输出总线的示例架构。
图6是用于使用图2的神经网络计算瓦片执行张量计算的过程的示例流程图。
图7是计算系统的替选实施例。
图8是神经网络计算瓦片的替选实施例。
图9是用于通过将神经网络权重参数加载到神经网络加速器加速计算的过程的示例流程图。
各附图中的相同附图标记和标号指示相同元件。
具体实施方式
本说明书中所描述的主题涉及用于加速计算的方法。方法包括:在执行之前,将神经网络权重参数加载到神经网络加速器,并且在执行期间,基本上在未访问加速器外部的神经网络权重参数的情况下,处理对加速器的输入。方法还能够包括:如果神经网络权重参数的数量太大以致于不能适配在单个加速器模具上,则将神经网络权重参数加载到多个紧密连接的加速器模具中;并且基本上在未访问在紧密连接的加速器模具外部的神经网络权重参数的情况下,处理对加速器模具的输入。
加速器的一个实施例包括:计算单元;第一存储器组,其用于输入激活,和第二存储器组,其用于存储在执行计算中使用的参数,第二存储器组被配置成将足够数量的所述神经网络参数存储在计算单元上以允许低于指定水平的延时以及高于指定水平的吞吐量。计算单元包括至少一个cell,其包括至少一个乘法累加(“MAC”)运算器,其从第二存储器组接收参数并且执行计算。计算单元还包括第一遍历单元,其将控制信号提供到第一存储器组以使得输入激活被提供到由MAC运算器可访问的数据总线。计算单元执行与数据阵列的至少一个元素相关联的计算、由MAC运算器所执行的一个或多个计算。
本说明书中所描述的主题还涉及硬件计算系统,包括被配置成加速神经网络层的机器学习推理工作量的多个计算单元。硬件计算系统的每个计算单元是自含式并且能够独立地执行由给定多层神经网络层所要求的计算。本说明书大体涉及用于具有驻留在芯片上的参数的深度神经网络(“DNN”)层的计算的神经网络(“NN”)计算瓦片以允许针对给定NN模型和架构的低于指定水平的延时以及高于指定水平的吞吐量。
具有多层的神经网络能够被用于计算推理。例如,给定输入,神经网络能够计算用于输入的推理。神经网络通过通过神经网络层中的每一个处理输入来计算该推理。特别地,神经网络层每个具有相应的权重集。每层接收输入并且根据用于层的权重集处理输入以生成输出。
因此,为了根据接收到的输入计算推理,神经网络接收输入并且通过神经网络层中的每一个处理其以便生成推理,并且来自一个神经网络层的输出被提供作为下一神经网络层的输入。与神经网络层相关联的数据输入或者输出、例如或者神经网络的输入或者按顺序的层下面的层的输出能够被称为用于层的激活。
在一些实施方式中,神经网络层按顺序布置。在其它实施方式中,层按有向图布置。即,任何特定层能够接收多个输入、多个输出或者二者。神经网络层还能够被布置使得层的输出能够被发送回作为先前层的输入。
本说明书中所描述的硬件计算系统能够通过跨多个计算瓦片分布张量计算执行神经网络层的计算。在神经网络层内执行的计算过程可以包括包括输入激活的输入张量与包括权重的参数张量的乘法。计算包括将输入激活与一个或多个周期上的权重相乘并且执行许多周期上的积的累加。
张量是多维几何对象并且示例多维几何对象包括度量和数据阵列。一般而言,过程由计算瓦片执行以通过处理嵌套循环以遍历N维张量来执行张量计算。在一个示例计算过程中,每个循环可以负责遍历N维张量的特定维度。对于给定张量构建而言,计算瓦片可以要求对特定张量的元素的访问来执行与张量相关联的多个点积计算。计算当由窄存储器结构所提供的输入激活与由宽存储器结构所提供的参数或者权重相乘时发生。由于张量被存储在存储器中,因而张量索引集合可以要求转译到存储器地址集合。一般而言,计算瓦片的张量遍历单元执行控制操作,其提供与张量相关联的每个维度的索引和索引元素被遍历以执行计算的次序。张量计算当乘法结果被写入到输出总线并且被存储在存储器中时结束。
图1示出了用于加速与深度神经网络(DNN)相关联的示例计算系统100的块图。系统100通常包括控制器102、主机接口108、输入/输出(I/O)链路110、包括第一瓦片集112和第二瓦片集114的多个瓦片、分类器部分116和在总线图118中所标识的数据总线(其出于清晰而示出,但是未被包括在系统100中)。控制器102通常包括数据存储器104、指令存储器106和至少一个处理器,其被配置成执行被编码在计算机可读存储介质中的一个或多个指令。指令存储器106可以存储由控制器102的一个或多个处理器可执行的一个或多个机器可读指令。数据存储器104可以是用于存储并且随后地访问与在系统100内发生的计算有关的各种数据的任何各种数据存储介质。
控制器102被配置成执行与系统100内的张量计算有关的一个或多个指令,包括被存储在指令存储器106中的指令。在一些实施方式中,数据存储器104和指令存储器106是(一个或多个)易失性存储单元。在一些其它实施方式中,数据存储器104和指令存储器106是(一个或多个)非易失性存储单元。数据存储器104和指令存储器106还可以以计算机可读介质的另一形式,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似固态存储设备或设备阵列,包括存储区域网络或其他配置中的设备。在各种实施方式中,控制器102还可以被参考或被称为核心管理器102。
如所描绘的,主机接口108被耦合到I/O链路110、控制器102和分类器部分116。主机接口108从I/O链路110接收指令和数据参数并且将指令和参数提供到控制器102。环形总线一般而言,指令能够通过指令总线124(在下文中描述)被提供到系统100中的一个或多个设备并且参数能够通过环形总线128(在下文中描述)被提供到系统100中的一个或多个设备。在一些实施方式中,指令在初始时间处从主机接口118由控制器102接收并且在稍后时间处被存储在指令存储器106中用于由控制器102执行。
分类器部分116同样地被耦合到控制器102和第二瓦片集114的瓦片7。在一些实施方式中,分类器部分116被实现为系统100内的分离的瓦片。在替选实施方式中,分类器部分116被布置或者定位在控制器102内作为控制器102的子电路或者子设备。分类器部分116通常被配置成在累积预激活值上执行一个或多个函数,其被接收作为完全连接层的输出。完全连接层可以跨瓦片集112和114中的瓦片划分。因此,每个瓦片被配置成产生可以被存储在瓦片的(一个或多个)存储器单元中的预激活值(即,线性输出)的子集。分类结果总线120提供从分类器部分116到控制器102的数据路径。包括后函数值(即,结果)的数据经由分类结果总线120从分类器部分116被提供到控制器102。
总线图118示出了提供第一瓦片集112和第二瓦片集114的瓦片之间的一个或多个相互连接的数据通信路径的数据总线。总线图118提供用于标识分类结果总线120、CSR/主机总线122、指令总线124、网状总线126和环形总线128的图例,如在图1中所描绘的。一般而言,瓦片是系统100的加速器架构内的核心部件并且是在系统中发生的张量计算的焦点。每个瓦片是单独的计算单元,其与系统中的其它瓦片合作以跨多层神经网络的一个或多个层加速计算。虽然瓦片集112、114中的瓦片能够共享与给定指令相关联的执行,但是单独的计算单元是自含式计算部件,其被配置成相对于瓦片集112、114内的其它对应的瓦片独立地执行张量计算的子集。
CSR总线122是单主多从总线,其使得控制器102能够传送设定程序配置和读取与一个或多个瓦片相关联的状态寄存器的一个或多个指令。CSR总线122可以在单个菊链配置中与一个主机总线段和多个从总线段连接。如在图1中所示,CSR总线122通过将瓦片集112、114中的瓦片和环中的控制器102连接到主机接口110的总线数据路径,提供通信耦合。在一些实施方式中,主机接口110是CSR总线的单主机并且整个CSR总线地址空间是被映射到主机接口110中的存储器空间的存储器。
CSR总线122可以由主机接口110用于执行一个或多个操作,包括例如将控制器102中的存储器缓冲器指针编程为使得控制器102能够开始从指令存储器106获取指令、更新/编程在一个或多个计算期间保持静态的各种瓦片设置(例如,用于多项式近似计算的系数表)和/或将固件加载/重新加载到分类部分116。在一个示例中,固件重新加载可以包括待应用到线性输出(即,预激活值)的新函数。因此,具有对CSR总线122的访问的每个从机将具有被绑定到从机并且标识其的不同的节点标识符(节点ID)。节点ID将是指令地址的一部分并且将由CSR从机(即,控制器102、瓦片112、114和分类器116)使用、检查或以其它方式检验以确定CSR分组是否被寻址到从机。
在一些实施方式中,一个或多个指令能够通过控制器102由主机接口102传送。指令可以例如是32位宽,并且前7位包括指示将接收和执行指令的指令地址/目的地的头部信息。头部的前7位可以包含表示特定节点ID的数据参数。CSR总线环上的从机(例如,每个瓦片)可以因此检查指令的头部以确定由主机(主机接口110)造成的请求是否被寻址到检查头部的瓦片。如果头部的节点ID未指示目的地是检查瓦片,则检查瓦片将输入CSR指令分组复制到连接到下一瓦片的CSR总线输入用于由下一瓦片检查。
指令总线124起源于控制器102,并且与CSR总线122类似,还通过将环中的瓦片集112、114的瓦片连接回到控制器102的总线数据路径提供通信耦合。在一个实施方式中,控制器102经由指令总线124广播一个或多个指令。由控制器102广播的指令可以与经由CSR总线122提供的指令不同。然而,瓦片接收和/或消费或者执行经由总线124接收到的指令的方式可以与用于执行经由CSR总线122接收到的指令的过程类似。
在一个示例中,指令的头部(即,位图)向接收瓦片指示接收瓦片需要基于与指令相关联的位图消费特定指令。位图可以具有根据位定义的特定宽度。指令通常地基于指令的参数从一个瓦片转发到下一瓦片。在一个实施方式中,指令总线124的宽度可以被配置成小于指令的大小/宽度。因此,在这样的配置中,指令的传输将在若干周期上并且指令总线124的总线停止将使解码器将在瓦片处接收到的指令放置在与该瓦片相关联的适当的目标指令缓冲器中。
如下面进一步描述的,瓦片集112、114中的瓦片通常被配置成支持两个大类的指令。两个大类还可以被称为指令类型。指令类型包括张量操作(TensorOp)指令和直接存储器访问(DMAOp)指令。在一些实施方式中,DMAOp指令具有允许并发的一个或多个特殊化。一个或多个特殊化可以被称为DMAOp指令子类型或者操作码。在一些情况下,每个唯一和/或有效DMAOp指令类型/子类型元组将具有特定瓦片内的分离的指令缓冲器。
在瓦片112、114的特定瓦片处,与指令总线124相关联的总线停止将检验头部位图以确定指令类型/子类型。指令可以由瓦片接收并且在由瓦片执行指令之前随后地被写入到瓦片的指令缓冲器。指令被写入到的瓦片的指令缓冲器可以由指令的类型/子类型指示器/字段确定。指令缓冲器可以包括先进先出(FIFO)控制方案,其给予一个或多个相关指令的消费优先级。因此,在该FIFO控制方案下,相同类型/子类型的指令将总是以指令到达指令总线的次序执行。
瓦片内的不同的指令缓冲器是TensorOp指令缓冲器和DMAOp指令缓冲器。如上文所指示的,指令类型包括TensorOp指令和DMAOp指令。关于DMAOp指令,指令子类型(指示“写入”缓冲器位置)包括以下各项:1)网状入站指令缓冲器;2)网状出站指令缓冲器;3)窄宽DMA指令缓冲器;4)宽窄DMA指令缓冲器;和5)环形总线DMA指令缓冲器。下面将参考图2更详细地描述这些缓冲器位置。宽和窄指定贯穿说明书被使用并且通常指代一个或多个存储器单元的宽度(位/字节)方面的近似大小。如本文所使用的,“窄”可以指代每个具有小于16位的大小或者宽度的一个或多个存储器单元并且“宽”可以指代每个具有16位与64位之间的大小或者宽度的一个或多个存储器单元。
网状总线126提供与CSR总线122、指令总线124和环形总线128(在下文中描述)不同的数据通信路径。如在图1中所描绘的,网状总线126提供在X和Y维度两者上将每个瓦片耦合或者连接到其对应的相邻瓦片的通信路径。在各种实施方式中,网状总线126可以被用于在相邻瓦片中的一个或多个窄存储器单元之间运输输入激活量。如所示,网状总线126不允许将输入激活数据直接转发到非相邻瓦片。
在各种实施方式中,网状总线126和经由网状总线126连接的各种瓦片可以具有以下配置。网状的四个角瓦片具有两个出站端口和两个入站端口。网状的四个边缘瓦片具有三个入站端口和三个出站端口。所有非边缘非角瓦片具有四个入站端口和四个出站端口。一般而言,给定示例N x N瓦片布局,边缘瓦片是具有仅三个相邻瓦片的瓦片,同时角瓦片是具有两个相邻瓦片的瓦片。关于经由网状总线126的数据流方法论,一般而言,经由用于特定瓦片的网状总线126到达的每个输入激活必须被提交到瓦片的一个或多个窄存储器单元。而且,对于具有小于四个入站端口的瓦片配置而言,DMAOp指令可以将零值写入到瓦片的窄存储器中的位置而不是等待缺席输入端口上的数据。同样地,对于具有小于四个出站端口的瓦片配置而言,DMAOp指令将不执行与针对任何缺席端口的传送有关的窄存储器读取和端口写入。
在一些实施方式中,特定输入激活将被写入到或者从其读取的(一个或多个)窄存储器单元的位置或者地址将基于经由网状总线126所提供的入站/出站DMAOp由张量遍历单元(在下文中“TTU”)生成。入站DMAOp和出站DMAOp可以并发地执行并且任何所要求的同步将通过由控制器102施行的同步标志控制方案管理。下面将参考图2和图3更详细地描述TTU。
环形总线128起源于控制器102,并且与CSR总线122和指令总线124类似,也通过将环中的瓦片112、114连接回到控制器102的总线数据路径提供通信耦合。在各种实施方式中,环形总线128通常连接或者耦合所有瓦片112、114中的所有宽存储器单元(下面参考图2更详细地描述的)。因此,环形总线128的有效载荷宽度对应于被布置在瓦片集112、114的每个瓦片内的宽存储器单元的宽度。如上文所讨论的,环形总线128还包括指示需要消费包括经由环形总线128传递的指令或者参数的有效载荷数据的瓦片的位图头部。
关于经由环形总线128在特定瓦片处接收到的数据(即,有效载荷),响应于接收到信息,每个瓦片将在将数据转发到另一瓦片上之前调零(即,清除)对于接收瓦片唯一的位图头部中所指示的位置数据。因此,当头部位图不具有指示将接收有效载荷的特定瓦片的剩余位集合数据时,将有效载荷转发到另一瓦片将停止。有效载荷数据通常指代在基于深度嵌套循环的执行所执行的张量计算期间由一个或多个瓦片使用的激活和权重。
在一些实施方式中,控制器102可以被描述为环形总线128的一部分。在一个示例中,对于在特定瓦片内执行的DMAOp指令而言,控制器102可以被用于从环形总线停止弹出数据/有效载荷并且将有效载荷转发到环中的下一瓦片中的环形总线停止。如果这样的动作由位图头部中的指令要求,则控制器102还可以使得有效载荷数据被提交到瓦片的一个或多个宽存储器单元。数据需要被写入到的一个或多个宽存储器单元的地址可以由特定瓦片内的DMAOp指令生成。
在各种实施方式中,瓦片集112、114的每个瓦片能够是或者有效载荷数据的生产者或者有效载荷数据的消费者。当瓦片是有效载荷数据的生产者时,瓦片从其宽存储器单元中的一个或多个读取数据并且通过环形总线128多播数据用于由一个或多个其它瓦片消费。当瓦片是有效载荷数据的消费者时,瓦片将数据接收并且写入到瓦片内的一个或多个宽存储器单元并且转发有效载荷数据用于由一个或多个其它瓦片消费。关于经由环形总线128的有效载荷数据的移动,通常地在任何给定时间处在环形总线128上仅存在数据的一个生产者/主机。所有瓦片中的DMAOp指令执行次序(例如,FIFO控制方案)将确保在给定时间处在环形总线128上仅存在数据的一个生产者/主机。
在一些实施方式中,控制器102使用同步标志控制架构确保在给定时间处在环形总线128上仅存在有效载荷数据的一个生产者/主机。在一个示例中,由瓦片对环形输出的每个写入将触发对应的同步标志计数的增量。控制器102可以检验有效载荷数据以确定包括有效载荷的数据块或段的数量。控制器102然后监视由瓦片造成的执行以确保在另一瓦片在主模式中执行之前期望数量的数据段由瓦片转发和/或消费。
当存在经由在环形总线上没有重叠区域的环形总线128连接的局部多播组时,发生例外以确保在给定时间处在环形总线128上仅存在数据的一个生产者/主机。例如,瓦片0(主机)可以多播(即,产生数据)到瓦片0-瓦片3分组中的瓦片,而瓦片4(主机)可以对瓦片4-瓦片7分组中的瓦片这样做。该双主机多播方法的重要要求在于,不同的多播组必须不被允许看到彼此的数据分组,因为分组重叠可能发生并且导致一个或多个数据计算误差。
如在图1中所示,控制器102提供将瓦片集112、114中的瓦片耦合或者连接到I/O110的通信数据路径,并且包括若干核心功能。控制器102的核心功能通常包括:将一个或多个I/O输入激活馈送到瓦片集112、114中的瓦片,将从I/O 110接收到的一个或多个输入激活和参数馈送到瓦片,将从I/O 110接收到的一个或多个指令馈送到瓦片,将I/O输出激活发送到主机接口108,并且用作用于CSR总线122以及环形总线128的环形停止。如下面更详细地描述的,第一瓦片集112和第二瓦片集114每个包括被用于执行基于包括内循环和外循环的深度循环嵌套执行的一个或多个张量计算的多个瓦片。
系统100通常操作如下。主机接口108将一个或多个指令提供到控制器102,其定义针对给定计算发生的直接存储器访问操作(DMAOp)。与馈送到控制器102的指令相关联的描述符将包括由控制器要求以促进与多维数据阵列(张量)相关联的大规模点积计算的信息。一般而言,控制器102从主机接口108接收输入激活、瓦片指令和模型参数(即,权重)用于执行用于神经网络的给定层的张量计算。控制器102可以然后使得指令以由(一个或多个)指令定义的数据流方式被多波到瓦片112、114。如上文所讨论的,消费指令的瓦片可以然后基于指令头部中的位图数据将新/后续指令广播到另一瓦片。
关于数据流,输入激活和参数经由环形总线128被传送到瓦片集112、114的瓦片。瓦片112、114中的每一个将存储计算被分配到该特定瓦片的输出激活的子集需要的输入激活的子集。瓦片的DMAOp将使得输入激活从宽存储器被移动到窄存储器。当所要求的输入激活、参数/权重和计算指令(TTU操作、存储器地址等)在瓦片中可用时,瓦片内的计算开始。当由指令集和预激活函数定义的瓦片完整所有点积操作内的MAC运算器(在下文中描述)被应用到乘法运算的结果(即,输出激活)时在瓦片内发生的计算结束。
一个或多个张量计算的结果包括将计算层的输出激活写入到执行计算的瓦片的(一个或多个)窄存储器单元。对于某些张量计算而言,将存在经由网状总线126将输出边缘激活传送到相邻瓦片。当计算跨多个层时,要求将输出边缘激活传送到相邻瓦片以计算用于后续层的输出激活。当对所有层的计算完成时,DMAOp将通过环形总线128将最后激活移动到分类器瓦片116。控制器102将然后从分类器瓦片116读取最后激活并且执行DMAOp以将最后激活移动到主机接口108。在一些实施方式中,分类器部分116执行NN的输出层(即,最后一层)的计算。在其它实施方式中,NN的输出层是分类器层、回归层或者通常与神经网络相关联的另一层类型中的一个。
图2图示了示例神经网络(NN)计算瓦片200。通常地,示例瓦片200可以对应于参考图1上文所讨论的第一瓦片集112和第二瓦片集114内的瓦片中的任一个。在各种实施方式中,计算瓦片200还可以被参考或被称为计算单元200。每个计算瓦片200是自含式计算单元,其被配置成相对于瓦片集112、114内的其它对应的瓦片独立地执行指令。如上文简要讨论的,每个计算瓦片200执行两种类型的指令,TensorOp指令和DMAOp指令。一般而言,每个指令类型将包括与深度循环嵌套相关联的计算操作并且因此每个指令类型将通常在多个时刻上执行以确保所有循环迭代的完成。
如下面更详细地讨论的,不同的指令类型由通过在计算瓦片200内管理的同步标志控制在数据上同步的计算瓦片200内的独立控制单元执行。同步标志控制管理计算瓦片200内的不同的指令类型的执行之间的并发性。与每个指令类型相关联的每个计算操作将以发布的严格的次序(即,先进先出)执行。关于两个指令类型(TensorOP和DMAOp),在这些不同的指令类型不存在排序保证并且每个类型由计算瓦片200被处理为控制的分离的线程。
关于数据流构建,计算瓦片200通常包括数据路径202和数据类型205,其每个提供用于进入和离开计算瓦片200的数据流的通信路径。如上文所描述的,系统100包括以环形配置布局的三个不同的数据总线结构——CSR总线122、指令总线124和环形总线128。参考图2,数据路径205对应于指令总线124,而数据路径202通常对应于CSR总线122和环形总线128中的一个。如所示,数据路径202包括提供用于数据离开计算瓦片200的输出路径的环形输出203和提供用于数据进入计算瓦片200的输入路径的环形输入204。
计算瓦片200还包括:TensorOp控制206,其包括TensorOp张量遍历单元(TTU)226;和DMAOp控制208,其包括DMAOp TTU 228。TensorOp控制206通常管理写入和读取TensorOpTTU寄存器232并且施行遍历操作用于由TensorOp TTU 226执行。同样地,DMAOp控制208通常管理写入和读取DMAOp TTU寄存器234并且施行遍历操作用于由DMAOp TTU 228执行。TTU寄存器232包括用于存储一个或多个指令的指令缓冲器,包括在由TensorOp控制206执行指令时待由TensorOP TTU 226执行的操作。同样地,TTU寄存器234包括用于存储一个或多个指令的指令缓冲器,包括在由DMAOp控制208执行指令时待由TensorOP TTU 208执行的操作。如下面进一步描述的,TTU由计算瓦片200被用于遍历通常驻留在窄存储器210和宽存储器212中的一个或多个张量的阵列元素。
在一些实施方式中,用于由计算瓦片200执行的某些指令经由数据路径205(即,指令总线124的一部分)到达瓦片。计算瓦片200将检验头部位图以确定指令类型(TensorOp或者DMAOp)和指令子类型(读操作或者写操作)。由计算瓦片200接收到的(一个或多个)指令取决于指令类型而随后地被写入到特定指令。一般而言,指令在由计算瓦片200的部件执行指令之前被接收并且被存储(即,被写入到缓冲器)。如在图2中所示,指令缓冲器(即,TensorOp TTU寄存器232和DMAOp TTU寄存器234)可以每个包括先进先出(FIFO)控制方案,其给予一个或多个相关指令的消费(执行)。
如上文简要讨论的,张量是多维几何对象并且示例多维几何对象包括度量和数据阵列。包括深度嵌套循环的算法可以由计算瓦片200执行以通过迭代一个或多个嵌套循环以遍历N维张量执行张量计算。在一个示例计算过程中,循环嵌套的每个循环可以负责遍历N维张量的特定维度。如本文所描述的,TensorOp控制206通常施行一个或多个张量操作,其驱动特定张量构建的维度元素被遍历并且访问以完成由深度嵌套循环定义的计算的序列。
计算瓦片200还包括窄存储器210和宽存储器212。窄和宽指定通常指代窄存储器210和宽存储器212的存储器单元的宽度(比特/字节)的大小。在一些实施方式中,窄存储器210包括每个具有小于16位的大小或者宽度的存储器单元,并且宽存储器212包括每个具有小于32位的大小或者宽度的存储器单元。通常地,计算瓦片200经由数据路径205接收输入激活,并且DMA控制208执行将输入激活写入到窄存储器210中的操作。同样地,计算瓦片200经由数据路径202接收参数(权重),并且DMA控制208执行将参数写入到宽存储器212中的操作。在一些实施方式中,窄存储器210能够包括存储器仲裁器,其通常被使用在共享存储器系统中以针对每个存储器周期决定将允许哪个控制设备(例如,TensorOp控制206或者DMAOp控制208)访问窄存储器210的共享存储器单元。
计算瓦片200还包括输入激活总线216和MAC阵列214,包括多个cell,其每个包括MAC运算器215以及求和寄存器220。一般而言,MAC阵列214跨多个cell使用MAC运算器215以及求和寄存器220执行包括与点积计算有关的算术运算的张量计算。输入激活总线216提供在其中输入激活针对由MAC阵列214的每个MAC运算器215造成的相应访问逐个由窄存储器210提供的数据路径。因此,基于输入激活的逐个广播,特定单元的单个MAC运算器215将每个接收输入激活。由MAC阵列214的MAC运算器执行的算术运算通常包括将由窄存储器210所提供的输入激活与从宽存储器212访问的参数相乘以产生单个输出激活值。
在算术运算期间,部分和可以被累计并且被存储在对应的例如求和寄存器220中或者被写入到宽存储器212并且由MAC阵列214的特定cell重新访问以完成后续乘法运算。张量计算能够被描述为第一部分和第二部分。第一部分当例如通过完成输入激活和参数的乘法以生成输出激活乘法运算产生输出激活时被完成。第二部分包括将非线性函数应用到输出激活,并且第二部分当输出激活在函数的应用之后被写入到窄存储器210时被完成。
计算瓦片200还包括:输出激活总线218;非线性单元(NLU)222,包括输出激活流水线224;NLU控制238;和参考图230,其指示计算瓦片200中的部件的核心属性。参考图230出于清晰而示出,但是未被包括在计算瓦片200中。核心属性包括特定部件是否是单元、存储设备、运算器、控制设备或者数据路径。一般而言,在完成张量计算的第一部分时,输出激活经由输出激活总线218从MAC阵列214被提供到NLU 222。在到达NLU 222之后,经由激活流水线224接收到的指定激活函数的数据被应用到输出激活并且输出激活然后被写入到窄存储器210。在一些实施方式中,输出激活总线218包括至少一个流水线移位寄存器236并且完成张量计算的第二部分包括使用激活总线218的移位寄存器236使输出激活向窄存储器210移位。
关于例如用于单个计算瓦片200的两个二维数据阵列的点积计算,MAC阵列214提供鲁棒的单指令多数据(SIMD)功能。SIMD通常意味着所有并行单元(多个MAC运算器215)共享相同指令(基于深度循环嵌套),但是每个MAC运算器215在不同的数据元素上执行指令。在一个基本示例中,在一个周期中逐元素地添加数组[1,2,3,4]和[5,6,7,8]以获得数组[6,8,10,12]将通常地要求四个算术单元在每个元素上执行运算。通过使用SIMD,四个单元能够共享相同指令(例如,“add”)并且并行执行计算。因此,系统100和计算瓦片200提供超过先前方法的张量计算中的增强的加速和并行性。
在一个示例中,并且如下面更详细地描述的,单个指令能够由控制器102提供到多个计算瓦片200(参见图1的瓦片集112、114)用于由多个MAC阵列214消费。一般而言,神经网络层能够包括多个神经元并且输出神经元能够被划分,使得与输出神经元的子集相关联的张量计算能够被分配到瓦片集112、114的特定瓦片。瓦片集112、114的每个瓦片能够然后在用于给定层的不同组神经元上执行相关张量计算。计算瓦片200能够因此提供并行性的至少两个形式:1)一个形式包括在瓦片集112、114的多个瓦片中间划分输出激活(对应于输出神经元的子集);和2)另一形式包括瓦片集112、114的瓦片中基于划分的输出神经元的多个子集的同时计算(利用单个指令)。
图3图示了示例张量遍历单元(TTU)结构300,包括要跟踪的四个张量,每个具有八的深度。TTU 300通常包括计数器张量302、步幅张量304、初始化张量306和限制张量308。TTU 300还包括加法器组310和张量地址索引312。如上文所描述的,张量是多维几何对象,并且为了访问张量的元素必须被提供每个维度的索引。由于张量被存储在窄存储器210和宽存储器212中,因而张量索引集必须被转译为存储器地址集。在一些实施方式中,将索引转译为存储器地址通过使存储器经由张量地址索引312寻址索引和反映地址的线性组合来完成。
在计算瓦片200中每控制线存在程TTU并且每指令类型(TensorOP和DMAOp)存在控制线程。因此,如上文所讨论的,在计算瓦片200中存在两个TTU集:1)TensorOp TTU 226;和2)DMAOp TTU 228。在各种实施方式中,TensorOp控制206将使得TTU 300在特定张量操作的开始加载TensorOp TTU计数器302、限制308和步幅值304并且将不在指令被止用之前改变寄存器值。两个TTU中的每个TTU将需要为计算瓦片200中的以下存储器地址端口生成地址:1)宽存储器212地址端口,和2)窄存储器210,其具有被呈现为四个地址端口的四个独立仲裁组。
如上文所讨论的,在一些实施方式中,窄存储器210能够包括存储器仲裁器,其通常被使用在共享存储器系统中以针对每个存储器周期决定哪个控制设备(例如,TensorOp控制206或者DMAOp控制208)将被允许访问窄存储器210的共享存储器资源。在一个示例中,不同的指令类型(TensorOp和DMAOp)是请求需要被仲裁的存储器访问的独立控制线程。当特定控制线程将张量元素提交到存储器时,控制线程增量被提交到存储器的张量参考的计数器302。
在一个示例中,当TensorOp控制206执行用于访问张量的特定元素的指令时,TTU300能够确定张量的特定元素的地址,使得控制206可以访问存储装置例如窄存储器以读取表示特定元素的激活值的数据。在一些实施方式中,程序可以包括嵌套循环并且控制206可以执行指令以根据与嵌套循环相关联的当前索引变量值访问嵌套循环内的二维数组变量的元素。
TTU 300可以同时针对给定(一个或多个)张量针对多达X数量的TTU行保持遍历状态。并发地驻留在TTU 300中的每个张量占用专用硬件张量控制描述符。硬件控制描述符能够包括每行位置X数量的TTU计数器302、步幅304和支持具有每行维度多达X数量的TTU计数器的张量的限制寄存器308。在一些实施方式中,行数和每行计数器数能够是不同的。
对于给定位置寄存器而言,从包括将位置寄存器添加在一起的加法运算计算最后存储器地址。基础地址被包含到计数器302中。针对驻留在相同存储器中的张量参考共享一个或多个加法器。在一个实施方式中,由于在周期中在任何给定端口上能够仅存在单个负载/存储,因而确保驻留在相同窄或者宽存储器中的多个张量参考不使其计数器在任何给定周期上增量将是循环嵌套控制的功能。在于2016年2月3日提交的题为“MatrixProcessing Apparatus”的专利申请序列号15/014,265中更详细地描述了用于计算包括偏移值的确定的存储器访问地址值的寄存器的使用,其全部公开内容在本文中以其整体通过引用明确地并入本文。
以下提供可以被用于实例化特殊化TTU 300的模板参数:1)X数量的TTU行;2)X数量的每行TTU计数器;3)X数量的TTU加法器单元;4)每TTU行指示共享加法器参考;和5)每计数器指示X计数器大小[TTU][行][深度]。所有TTU寄存器是架构上可见的。需要被访问用于计算的特定张量元素的地址(即,张量地址312)是计数器的相加的结果。当增量信号从控制线程被发布到TTU的行时,TTU 300执行单循环操作并且通过该维度的步幅304增量最内部的维度并且通过所有深度传播翻转。
一般而言,TTU 300确定与一个或多个张量相关联的状态。状态能够包括循环界限值、当前循环索引变量值、用于计算存储器地址值的维度乘法器和/或用于处理分支循环界限的程序计数器值。TTU 300能够包括一个或多个张量状态元件和算术逻辑单元。张量状态元件中的每一个可以是存储元件,例如寄存器或者任何其它适合的存储电路。在一些实施方式中,张量状态元件可以物理地或者逻辑地被布置到不同组中。
图4图示了包括经由输入总线216将激活404广播到一个或多个乘法累加(MAC)运算器的窄存储器210的示例架构。移位寄存器404提供移位功能,其中,激活404一次一个地被发送到输入总线216用于由MAC cell 410中的一个或多个MAC运算器215接收。一般而言,MAC cell 410(包括MAC运算器215)能够被定义为计算部分和的计算单元,并且在一些实施方式中,被配置成将部分和数据写入到输出总线218。如所示,cell 410可以包括一个或多个MAC运算器。在一个实施方式中,MAC cell 410中的MAC运算器215的数量被称为单元的发布宽度。作为示例,双发布单元指代具有两个MAC运算器的单元,其能够计算两个激活值(来自窄存储器)和两个参数(来自宽存储器212)的乘法并且执行两个乘法器的结果与当前部分和之间的加法。
如上文所描述的,输入总线216是广播总线,其将输入激活提供到线性单元(即,MAC阵列214)的MAC运算器215。在一些实施方式中,在所有MAC运算器215之间共享相同输入。输入总线216的宽度必须足够宽以将广播输入供应到针对给定MAC阵列214的对应的数量的单元。考虑以下示例以图示输入总线216的结构。当线性单元中的单元的数量等于四并且激活宽度等于八位时,输入总线216能够被配置成每周期提供多达四个输入激活。在该示例中,MAC阵列214中的每个单元将仅访问广播的四个激活中的一个。
基于由计算瓦片200接收到的指令的TensorOp字段设置,MAC阵列214的单元可能需要使用相同输入激活执行计算。这可以被称为MAC阵列214的单元内的Zout划分。同样地,当MAC阵列214的单元需要不同的激活来执行计算时,发生单元内的Zin划分。在前面的情况下,单个输入激活被复制四次并且从窄存储器210读取的四个激活在四个周期期间广播。在后面的情况下,每周期要求窄存储器210的读取。对于前述示例而言,TensorOp控制206基于从控制器102接收到的指令的执行统筹该广播方法。
图5图示了包括将输出激活提供到图2和图4的窄存储器单元210的输出总线218的示例架构。一般而言,计算瓦片200中的MAC阵列214的每个MAC cell 215计算不同的输出激活。然而,关于输出特征阵列,在其中输出特征深度小于计算瓦片200中的MAC cell 215的数量的情况下,单元可以被分组以形成一个或多个cell组。单元组中的所有MAC cell 215计算相同输出(即,对于输出特征图而言),然而,每个单元仅计算对应于Zin维度的子集的输出的子集。因此,MAC cell215的输出现在是部分和而非最后线性输出。在一些实施方式中,NLU222将基于由NLU控制238提供到NLU 222的控制信号,将这些部分和合计到最后线性输出中。
如上文所讨论的,输出总线218是流水线化移位寄存器。在各种实施方式中,当张量计算的第一部分结束并且TensorOp控制205指示(通过执行指令)部分和需要被写出时,将存在提供到输出总线218的部分和的并行负载。并行负载的数量将对应于计算瓦片200中的MAC cell的数量。TensorOp控制206将然后使得部分和量被移位输出并且通过非线性流水线发送。在一些实施方式中,可以存在其中并非瓦片中的所有MAC cell实际上被用于执行计算的情况。在这样的情况下,被移位到输出总线上的并非所有部分和将是有效的。在该示例中,TensorOp控制206可以将控制信号提供到MAC阵列214以指示应当移位出的有效单元的数量。被加载到输出总线218的并行负载量将仍然对应于计算瓦片中的MAC cell的数量,然而,仅有效值将被移位出并且被提交到窄存储器210。
图6是用于使用神经网络(NN)计算瓦片诸如图2的计算瓦片200执行张量计算的过程600的示例流程图。通过将足够的参数加载到芯片上的第二存储器以允许针对给定NN模型和架构的低于指定水平的延时和高于指定水平的吞吐量,过程600在块602处开始。吞吐量是在大量的请求/推理下实现的最大性能。延时是计算单个请求花费的最小时间。过程600在块604处继续并且计算瓦片200的窄存储器210将激活逐个发送(即,广播)到输入激活数据总线216上。激活值被存储在窄存储器210中。窄存储器210能够是静态随机存取存储器(SRAM)组的集合,其许可寻址到特定存储器位置用于访问输入量。从存储器210读取的激活经由输入激活总线216被广播到MAC阵列214的线性单元(即,线性单元),其包括多个MAC运算器215以及求和寄存器220。在过程600的块606处,计算瓦片200的MAC运算器215每个接收两个输入——一个输入(激活)从输入激活总线216接收;并且另一输入(参数)从宽存储器212接收。因此,激活馈送每个MAC运算器215的输入中的一个并且MAC阵列214的cell中的每个MAC运算器215从宽存储器212得到其第二乘法器输入。
在过程600的块608处,计算瓦片200的MAC阵列214执行张量计算,包括基于从存储器访问的数据阵列结构的元素的点积计算。宽存储器212能够具有以位为单位的宽度,其等于线性单元的宽度(例如,32位)。因此,线性单元(LU)是SIMD向量算术逻辑单元(“ALU”)单元,其从向量存储器(即,宽存储器212)接收数据。在一些实施方式中,MAC运算器215还可以也从宽存储器212得到累加器输入(部分和)。在一些实施方式中,存在相对于用于与两个不同的操作数(参数和部分和)有关的读取和/或写入的宽存储器212端口的时间共享。一般而言,为了优化面积,宽存储器212可以具有有限数量的端口。因此,当需要同时从宽存储器212读取操作数(例如,参数)并且将操作数(例如,部分和)写入到宽存储器212时,与特定操作数相关联的流水线能够被阻滞。
在块610处,计算瓦片200的计算单元(具有MAC运算器215以及求和寄存器220)基于由MAC/计算单元所执行的乘法运算,产生至少一个输出激活。MAC cell操作的结果包括或者被写入回到存储器(在部分和算术运算期间)的部分和或者被发送到输出总线218的输出激活。计算瓦片200的NLU 222能够将非线性激活函数应用到输出激活并且将激活写入到窄存储器210。在一些实施方式中,输出总线218是移位寄存器并且可以累加来自MAC运算器215的结果/输出激活的并行负载,并且使它们一次一个地移位出用于将非线性函数和写操作应用到相同瓦片的窄存储器210。
说明书中所描述的实施例利用以下双层观察:1)大多数现有神经网络(NN)加速器的瓶颈是加载NN权重(还被称为参数)所要求的存储器带宽;和2)即使生产模型中的参数的数量是大的,即从几KB到几GB,并且大多数从几MB变化到几百MB,这些数量在例如使用跨瓦片分布的存储器在包括片上存储器的硬件中能够实现的范围内。
仅将大型存储器例如高速缓存或者暂存器添加在芯片上以包含所有参数是不够的。克服存储器带宽限制的目标是扩展架构的性能。那意味着增加运算器、通常是MAC的数量。但是为了实现高性能,人们必须能够利用参数每个周期馈送这些运算器。将“性能”理解为不仅吞吐量而且延时也是重要的,其是针对许多用户面对的应用的情况。
换句话说,在神经网络(NN)加速器中,一次一层地加载参数是非常昂贵的。如果一个能够将参数预加载在芯片上,那么所有需要加载是运行时间处的激活。换句话说,实施例包括大规模片上存储器。
本说明书中所描述的实施例对神经网络(NN)加速器操作和设计产生影响。实施例对神经网络加速器设计的显著限制和低延时和高吞吐量的组合中的一个起作用。考虑NN加速器旨在表示整个神经网络。在输入处是一些数据,例如,小图像或者声音。NN加速器一个接一个地执行层。在性能和能耗方面昂贵的是,一个接一个地加载层的参数。NN加速器加载层的参数、完成计算、保持层的输出并且然后加载下一层的参数;其在其中大多数存储器带宽被消费的该过程中。
给定高吞吐量和给定NN模型和架构,在芯片上驻留放置参数显著地减少延时。加速器仅需要加载声音的几字节,然后加速器能够极其快速地运行。加速器不需要高存储器带宽,并且能量下降。
其中存储器从存储器被加载到CPU的冯诺依曼模型是常见架构。对于大量的运算器而言,其中存储器驻留在模具的一端并且计算运算器在模具的另一端的这样的典型冯诺依曼状架构将是不实际的(如果不是不可能的话),因为其将隐含大量的接线以将数据从存储器(或者存储器组)路由到运算器。相反,本发明的实施例利用NN计算的存储器本地性质以平铺的(tiled)组织布置架构(如在图2和图8中所示),其中存储器跨瓦片分布。
NN是大但是非巨大的,因此人们能够接近于其中人们能够有效地适配芯片上的一个或几个NN的所有参数的点。NN加速器正移动到自含式的架构。给定瓦片架构,人们能够对芯片内的存储器进行划分。取代具有芯片的一个角中的一个大SRAM,实施例将正确的SRMA分配到每个瓦片并且也避免片上带宽问题。在某些实施例中,每个瓦片中的宽存储器包含参数,并且宽环(粗略地具有与宽存储器类似的带宽)在高带宽处馈送宽存储器。本说明书中所描述的实施例预期架构变型。取决于NN层性质,实施例能够具有至少以下两个NN架构。
对于主要地由完全连接层组成的神经网络而言,存在跨层的参数的较少的重用。完全连接层中的神经元具有前一层中的所有激活的完全连接。考虑其中参数未重用的完全连接神经网络(考虑非批处理的情况,例如实时应用)。如果所有参数未被包含在宽存储器内,则参数必须经由环形总线从外部存储器获取。在该情况下,总体设计的性能变为由外部存储器带宽限制。如果所有参数驻留在宽存储器中,那么未要求外部存储器访问,并且所有运算器每周期利用参数馈送,实现最大性能。取代仅使用用于获取参数的外部存储器,本说明书中所描述的实施例保持参数驻留在宽存储器中。
作为示例,考虑完全连接层中的50M参数(或者为了简明,50MB)的模型。考虑具有在1GHz处操作的16384个MAC的加速器。考虑模型的输入是16KB。所有值对于当前应用是合理的。最大性能对应于在:50*10^6/(16384*10^9)=3.05*10^-6秒内执行模型。那进而对应于(50*10^6+16,384)/(3.05*10^-6)=16.40TB/s的存储器带宽。作为比较点,典型的DRAM芯片提供大约10GB/s的量级,现有技术高带宽存储器(HBM)提供大约256GB/s。
卷积神经网络将参数从一个瓦片传递到另一个。对于主要地由卷积层组成的神经网络而言,其中,跨神经元(还被称为激活)重用参数,存储器带宽要求是不太高的,但是仍然通常比典型的外部存储器更高。假如其被连接到与环形相同的带宽的大片上存储器,环形带宽能够足以将参数加载到瓦片。换句话说,对于每个推理而言,瓦片需要访问/加载模型的所有参数;这对于任何模型是真实的。仅神经网络中的完全连接层的差异在于,每个参数仅在一个推理期间被使用一次;对于卷积层而言,参数在层内被使用多次。
作为示例,考虑具有卷积层中的50M参数的模型。这些层中的一些能够结束是相当小的,其它是大的,因此参数的重用是变化;跨模型的合理平均是~100重用每参数。因此,使用与上文相同的推理,带宽要求将下降到16.40TB/s/100~164GB/s。带宽要求针对成本效益DRAM仍然保持高。然而,利用以上架构,被连接到相同带宽的大容量存储器的164*8=1312位宽环能够以适当的速度服务瓦片。
考虑其中存储器足够大以将层的所有参数包含在完全连接模型中的第一实施例。如果所有瓦片将在一个层上同时工作,则参数需要跨瓦片分布。实施例跨瓦片划分每个层的输出神经元/激活;在执行期间,每个瓦片处理层的子集,计算对应的部分和,并且将其传递到其邻居,即,部分和在环周围旋转,并且在完全旋转之后,瓦片产生最后和。
第二实施例包括预加载/高速缓存所有瓦片中的(当前使用的)参数的相同子集,因为瓦片同时使用相同参数。在执行期间,参数(子集)而非部分激活总和围绕环旋转。
瓦片的数量是比例因子。个人能够通过使用本说明书中所描述的实施例通过在不增加存储器要求的情况下改进延时和吞吐量实现强缩放比例。然而,将瓦片一起分批以缩放计算能力增加存储器要求和需要的距离的数量。在未增加存储器带宽超过常规存储器选项的情况下完成分批类型缩放是困难的。分批常常包含实时应用并且包含延时和吞吐量要求二者。
值得注意的是,具有高速缓存中的参数与作为瓦片布置的一部分的宽存储器中的参数不同。具有如在本说明书中所描述的瓦片布置提供编译类型本地性。例如,靠近SRAM放置完全连接的模型导致更大的内部带宽对高速缓存模型。
本说明书中所描述的实施例比常规神经网络加速器更快地操作。某些实施例具有更多运算器;以便馈送运算器加速器需要更多内部带宽。为了解决该需要,架构分布存储器并且将参数带到加速器上。
最大当前芯片是大约650平方毫米。因此,存在关于一个可以在芯片上具有多少SRAM的限制。实施例包括使用给定空间约束中的密集存储器,包括使用3D堆叠。
本说明书中所描述的实施例适用于推理(后训练的)模式和训练模式二者。
作为添加的细微差别,存在另一层层次;存在存储器层次并且还通常地存在寄存器文件层次。参数被加载到寄存器中并且然后寄存器被重用以实现存储器带宽扩展;在寄存器文件中以及在存储器中存在存储器带宽。换句话说,存在添加的成本节省,即从存储器到寄存器文件并且然后从寄存器文件到计算的接线中的降低。在本说明书中所描述的实施例中,存在与寄存器文件相关联的减少的接线成本;参数对SRAM直接地消费到寻址。换句话说,存储器直接地馈送ALU。
图7示出了用于加速与深度神经网络(DNN)相关联的张量计算的计算系统700的替选实施例的块图。系统700通常包括控制器/非核心702、存储器接口708、多个瓦片,包括第一瓦片集712和第二瓦片集714。控制器702通常包括数据存储器704、指令存储器706和至少一个处理器,其被配置成执行被编码在计算机可读存储介质中的一个或多个指令。指令存储器706可以存储由控制器702的一个或多个处理器可执行的一个或多个机器可读指令。数据存储器704可以是用于存储并且随后地访问与在系统700内发生的计算有关的各种数据的任何各种数据存储介质。
控制器702被配置成执行与系统700内的张量计算有关的一个或多个指令,包括被存储在指令存储器706中的指令。在一些实施方式中,数据存储器704和指令存储器706是一个或多个易失性存储单元。在一些其它实施方式中,数据存储器704和指令存储器706是一个或多个非易失性存储单元。数据存储器704和指令存储器706还可以以计算机可读介质的另一形式,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似固态存储设备或设备阵列,包括存储区域网络或其他配置中的设备。在各种实施方式中,控制器702还可以被参考或被称为核心管理器702。
存储器接口708从I/O链路接收指令和数据参数并且将指令和参数提供到控制器702。一般而言,指令能够通过指令总线(控制器与瓦片之间的指令总线未被示出)被提供到系统700中的一个或多个设备并且参数能够通过环形总线728被提供到系统700中的一个或多个设备。在一些实施方式中,指令在初始时间处从主机接口708由控制器702接收并且在稍后时间处被存储在指令存储器706中用于由控制器702执行。
环形总线728起源于控制器102并且通过将环中的瓦片712、714连接回到控制器702的总线数据路径提供通信耦合。在各种实施方式中,环形总线728通常连接或者耦合所有瓦片712、714中的所有宽存储器单元。因此,环形总线728的有效载荷宽度对应于被布置在瓦片集712、714的每个瓦片内的宽存储器单元的宽度。如上文所讨论的,环形总线728还包括指示需要消费包括经由环形总线728传递的指令或者参数的有效载荷数据的瓦片的位图头部。
关于经由环形总线728在特定瓦片处接收到的数据(即,有效载荷),响应于接收到信息,每个瓦片在将数据转发到另一瓦片上之前将调零(即,清除)对于接收瓦片唯一的位图头部中所指示的位置数据。因此,当头部位图不具有指示将接收有效载荷的特定瓦片的剩余位集合数据时,将有效载荷转发到另一瓦片将停止。有效载荷数据通常指代在基于深度嵌套循环的执行所执行的张量计算期间由一个或多个瓦片使用的激活和权重。
在一些实施方式中,控制器702可以被描述为环形总线728的一部分。在一个示例中,对于在特定瓦片内执行的DMAOp指令而言,控制器702可以被用于从环形总线停止弹出数据/有效载荷并且将有效载荷转发到环中的下一瓦片中的环形总线停止。如果这样的动作由位图头部中的指令要求,则控制器702还可以使得有效载荷数据被提交到瓦片的一个或多个宽存储器单元。数据需要被写入到的一个或多个宽存储器单元的地址可以由特定瓦片内的DMAOp指令生成。
在各种实施方式中,瓦片集712、714的每个瓦片能够是或者有效载荷数据的生产者或者有效载荷数据的消费者。当瓦片是有效载荷数据的生产者时,瓦片从其宽存储器单元中的一个或多个读取数据并且通过环形总线728多播数据用于由一个或多个其它瓦片消费。当瓦片是有效载荷数据的消费者时,瓦片接收数据并且将数据写入到瓦片内的一个或多个宽存储器单元并且转发有效载荷数据用于由一个或多个其它瓦片消费。关于经由环形总线728的有效载荷数据的移动,通常地在任何给定时间处在环形总线728上仅存在数据的一个生产者/主机。所有瓦片中的DMAOp指令执行次序(例如,FIFO控制方案)将确保在给定时间处在环形总线728上仅存在数据的一个生产者/主机。
在一些实施方式中,控制器702使用同步标志控制架构确保在给定时间处在环形总线728上仅存在有效载荷数据的一个生产者/主机。在一个示例中,由瓦片对环形输出的每个写入将触发对应的同步标志计数的增量。控制器702可以检验有效载荷数据以确定包括有效载荷的数据块或段的数量。控制器702然后监视由瓦片造成的执行以确保在另一瓦片在主机模式中执行之前由瓦片转发和/或消费期望数量的数据段。
当存在经由在环形总线上没有重叠区域的环形总线728连接的局部多播组时,发生例外以确保在给定时间处在环形总线728上仅存在数据的一个生产者/主机。该双主多播方法学的重要要求在于,不同的多播组必须不被允许看到彼此的数据分组,因为分组重叠可能发生并且导致一个或多个数据计算误差。
与图1相反,图7的瓦片以之字形或者蛇形方式通过环形总线连接,同时瓦片自身形成正方形图案。在所图示的实施例中,加速器分别地包括8个和16个瓦片。在替选实施例中,加速器能够包括更多瓦片。
图8是图2的计算瓦片的简化图示。
图9是用于使用神经网络(NN)计算瓦片(诸如图2的计算瓦片200)执行张量计算的过程900的示例流程图。过程900通过例如在执行之前将NN权重参数加载到NN加速器在块902处开始。过程900通过基本上在未访问加速器外部的神经网络权重参数的情况下处理加速器的输入在块904处继续。在块906处,过程基于处理对加速器的输入,产生至少一个输出激活。
能够在数字电子电路中、在有形实现的计算机软件或固件中、在计算机硬件中实现本说明书中所描述的主题和功能操作的实施例,包括本说明书中所公开的结构和其结构等同物或者其中的一个或多个的组合。本说明书中所描述的主题的实施例能够被实现为一个或多个计算机程序,即被编码在有形非暂态程序载体上用于由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。替选地或者附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电气、光学或电磁信号,其被生成以编码用于传输到适合的接收器装置用于由数据处理装置执行的信息。计算机存储介质能够是机器可读存储设备、机器可读存储衬底、随机或串行访问存储器设备或它们中的一个或多个的组合。
本说明书中所描述的过程和逻辑流可以通过一个或多个可编程处理器执行,其通过对输入数据进行操作并且生成(一个或多个)输出执行一个或多个计算机程序以执行动作。过程和逻辑流还能够通过专用逻辑电路例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或者GPGPU(通用图形处理单元)来执行,并且装置还能够被实现为专用逻辑电路例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路)或者GPGPU(通用图形处理单元)。
通过示例,适于计算机程序的执行的计算机包括可以基于通用微处理器或者专用微处理器或者二者,或者任何其他种类的中央处理单元。一般地,中央处理单元将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的关键元件是用于执行或者运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机将还包括或操作性地耦合以从用于存储数据的一个或多个海量存储设备例如磁性、磁光盘或者光盘接收数据、传送数据到其或者两者。然而,计算机不需要具有这样的设备。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括通过示例半导体存储器设备例如EPROM、EEPROM和闪速存储器设备;磁盘例如内部硬盘或者可移除磁盘。处理器和存储器能够由专用逻辑电路补充或者并入专用逻辑电路中。
虽然本说明书包含许多特定实施方式细节,但是这些不应该被解释为对任何发明或可以主张什么的范围的限制,而是可以特定于特定发明的特定实施例的特征的描述。在分离的实施例的上下文中在该说明书中所描述的某些特征还能够组合被实现在单个实施例中。相反地,在单个实施例中的上下文中所描述的各种特征还能够分离地或者以任何适合的子组合被实现在多个实施例中。而且,尽管特征可以上文描述为在某些组合中作用并且甚至如此初始地要求保护,但是在一些情况下,可以从组合切除所要求保护的组合的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变型。
类似地,虽然操作以特定次序在附图中描绘,但是这不应该被理解为要求这样的操作以所示的特定次序或者以顺序次序执行,或者全部所图示的操作被执行以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。而且,上文所描述的实施例中的各种系统模块和部件的分离不应该被理解为要求所有实施例中的这样的分离,并且应该理解的是,所描述的程序部件和系统可以一般地一起集成在单个软件产品或者封装到多个软件产品中。
已描述本主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中所记载的动作能够以不同的次序执行并且仍然实现期望的结果。作为一个示例,附图中所描绘的处理不必要求所示的特定次序或顺序次序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。

Claims (17)

1.一种用于加速张量计算的加速器,包括:
a.计算单元;
b.第一存储器组,用于存储输入激活或者输出激活中的至少一个;
c.第二存储器组,用于存储在执行计算中使用的神经网络参数,所述第二存储器组被配置成将足够数量的所述神经网络参数存储在所述计算单元上以允许针对给定神经网络模型和架构的低于指定水平的延时以及高于指定水平的吞吐量;
d.至少一个cell,包括至少一个乘法累加运算器,所述至少一个乘法累加运算器从所述第二存储器组接收参数并且执行计算;
e.第一遍历单元,所述第一遍历单元至少与所述第一存储器组数据通信,所述第一遍历单元被配置成将控制信号提供到所述第一存储器组以使得输入激活被提供到由所述至少一个乘法累加运算器可访问的数据总线;以及
f.其中,所述加速器执行与数据阵列的至少一个元素相关联的一个或多个计算,所述一个或多个计算由所述至少一个乘法累加运算器执行并且部分地包括从所述数据总线接收到的所述输入激活和从所述第二存储器组接收到的参数的乘法运算。
2.根据权利要求1所述的加速器,其中,所述第二存储器组被配置成存储超过100,000个参数。
3.根据权利要求1所述的加速器,其中,所述第二存储器组被配置成存储超过1,000,000个参数。
4.根据权利要求1所述的加速器,其中,所述第二存储器组被配置成存储超过100,000,000个参数。
5.根据权利要求1所述的加速器,其中,所述第二存储器组包括SRAM或3D SRAM。
6.一种用于加速张量计算的加速器,其中,所述加速器包括多个计算单元,每个计算单元包括:
a.第一存储器组,用于存储输入激活或者输出激活中的至少一个;
b.第二存储器组,用于存储在执行计算中使用的神经网络参数,所述第二存储器组被配置成将足够数量的所述神经网络参数存储在所述计算单元上以允许针对给定神经网络模型和架构的低于指定水平的延时以及高于指定水平的吞吐量;
c.至少一个cell,包括至少一个乘法累加运算器,所述至少一个乘法累加运算器从所述第二存储器组接收参数并且执行计算;
d.第一遍历单元,所述第一遍历单元至少与所述第一存储器组数据通信,所述第一遍历单元被配置成将控制信号提供到所述第一存储器组以使得输入激活被提供到由所述至少一个乘法累加运算器可访问的数据总线;以及
e.其中,所述计算单元执行与数据阵列的至少一个元素相关联的一个或多个计算,所述一个或多个计算由所述至少一个乘法累加运算器执行并且部分地包括从所述数据总线接收到的所述输入激活和从所述第二存储器组接收到的参数的乘法运算。
7.一种用于加速张量计算的计算机实现的方法,包括:
a.由第一存储器组响应于所述存储器组从第一遍历单元接收到控制信号而发送第一输入激活,所述第一存储器组被布置在计算单元中,并且其中,所述第一输入激活通过由所述计算单元的至少一个cell可访问的数据总线提供;
b.由所述至少一个cell从用于存储在执行计算中使用的神经网络参数的第二存储器组接收一个或多个参数,所述第二存储器组将足够数量的所述神经网络参数存储在所述计算单元上以允许针对给定神经网络模型和架构的低于指定阈值的延时以及高于指定阈值的吞吐量,并且其中,所述至少一个cell包括至少一个乘法累加运算器;以及
c.由所述至少一个乘法累加运算器执行与数据阵列的至少一个元素相关联的一个或多个计算,其中,所述一个或多个计算部分地包括至少从所述数据总线访问的所述第一输入激活和从所述第二存储器组接收到的至少一个参数的乘法运算。
8.根据权利要求7所述的方法,其中,所述第二存储器组被配置成存储超过100,000个参数。
9.根据权利要求7所述的方法,其中,所述第二存储器组被配置成存储超过1,000,000个参数。
10.根据权利要求7所述的方法,其中,所述第二存储器组包括SRAM或者3D SRAM。
11.根据权利要求7所述的方法,还包括将在执行计算中使用的所述神经网络参数加载到所述第二存储器组中。
12.一种用于加速张量计算的计算机实现的方法,包括:
a.由第一存储器组响应于所述第一存储器组接收到控制信号而发送第一输入激活,其中,所述第一输入激活由数据总线传送;
b.由至少一个乘法累加运算器从用于存储在执行计算中使用的神经网络参数的第二存储器组接收一个或多个参数,所述第二存储器组将足够数量的所述神经网络参数存储在所述计算单元上以允许针对给定神经网络模型和架构的低于指定阈值的延时和高于指定阈值的吞吐量;以及
c.由所述至少一个乘法累加运算器执行与数据阵列的至少一个元素相关联的一个或多个计算,其中,所述一个或多个计算部分地包括至少从所述数据总线访问的所述第一输入激活和从所述第二存储器组接收到的至少一个参数的乘法运算。
13.根据权利要求12所述的方法,其中,所述第二存储器组被配置成存储超过100,000个参数。
14.根据权利要求12所述的方法,其中,所述第二存储器组被配置成存储超过1,000,000个参数。
15.根据权利要求12所述的方法,其中,所述第二存储器组被配置成存储超过100,000,000个参数。
16.根据权利要求12所述的方法,其中,所述第二存储器组包括SRAM或者3D SRAM。
17.根据权利要求12所述的方法,还包括将在执行计算中使用的所述神经网络参数加载到所述第二存储器组中。
CN201810908471.0A 2017-08-11 2018-08-10 具有驻留在芯片上的参数的神经网络加速器 Pending CN109389214A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762544171P 2017-08-11 2017-08-11
US62/544,171 2017-08-11

Publications (1)

Publication Number Publication Date
CN109389214A true CN109389214A (zh) 2019-02-26

Family

ID=63449663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810908471.0A Pending CN109389214A (zh) 2017-08-11 2018-08-10 具有驻留在芯片上的参数的神经网络加速器

Country Status (9)

Country Link
US (4) US10504022B2 (zh)
EP (1) EP3665622A1 (zh)
JP (2) JP7171622B2 (zh)
KR (3) KR102456464B1 (zh)
CN (1) CN109389214A (zh)
DE (2) DE102018119513A1 (zh)
GB (1) GB2568776B (zh)
TW (2) TWI737145B (zh)
WO (1) WO2019032808A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
WO2020172829A1 (zh) * 2019-02-27 2020-09-03 华为技术有限公司 一种神经网络模型处理方法及装置
CN112199036A (zh) * 2019-07-08 2021-01-08 爱思开海力士有限公司 数据存储装置、数据处理系统及其加速装置
CN112541581A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 一种加速计算单元和加速计算系统
CN112990450A (zh) * 2019-12-17 2021-06-18 爱思开海力士有限公司 数据处理系统及其加速器
CN113806246A (zh) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN115244909A (zh) * 2020-10-14 2022-10-25 谷歌有限责任公司 机器学习加速器中的队列分配
CN115586885A (zh) * 2022-09-30 2023-01-10 晶铁半导体技术(广东)有限公司 一种存内计算单元和加速方法
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366328B2 (en) * 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10832753B2 (en) * 2017-07-31 2020-11-10 General Electric Company Components including structures having decoupled load paths
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
US11620490B2 (en) * 2017-10-17 2023-04-04 Xilinx, Inc. Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions
US10936942B2 (en) * 2017-11-21 2021-03-02 Google Llc Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies
US10803379B2 (en) 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
US10846621B2 (en) 2017-12-12 2020-11-24 Amazon Technologies, Inc. Fast context switching for computational networks
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US11144316B1 (en) 2018-04-17 2021-10-12 Ali Tasdighi Far Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning
US11966835B2 (en) 2018-06-05 2024-04-23 Nvidia Corp. Deep neural network accelerator with fine-grained parallelism discovery
US11640533B2 (en) 2018-08-03 2023-05-02 Arm Limited System, method and apparatus for training neural networks using multiple datasets
US20210201124A1 (en) * 2018-08-27 2021-07-01 Neuralmagic Inc. Systems and methods for neural network convolutional layer matrix multiplication using cache memory
US10747845B2 (en) * 2018-08-31 2020-08-18 Arm Limited System, method and apparatus for computationally efficient data manipulation
US11769040B2 (en) 2018-09-10 2023-09-26 Nvidia Corp. Scalable multi-die deep learning system
CN109359732B (zh) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法
US20200117988A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Networks for distributing parameters and data to neural network compute cores
US10970201B2 (en) 2018-10-24 2021-04-06 Arm Limited System, method and apparatus for data manipulation
EP3674982A1 (en) * 2018-12-27 2020-07-01 IMEC vzw Hardware accelerator architecture for convolutional neural network
US11410014B2 (en) * 2019-02-11 2022-08-09 Apple Inc. Customizable chip for AI applications
US11061738B2 (en) * 2019-02-28 2021-07-13 Movidius Limited Methods and apparatus to store and access multi dimensional data
US11270197B2 (en) * 2019-03-12 2022-03-08 Nvidia Corp. Efficient neural network accelerator dataflows
CN110032374B (zh) * 2019-03-21 2023-04-07 深兰科技(上海)有限公司 一种参数提取方法、装置、设备及介质
US10534747B2 (en) * 2019-03-29 2020-01-14 Intel Corporation Technologies for providing a scalable architecture for performing compute operations in memory
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN111782577B (zh) 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
KR102550451B1 (ko) * 2019-04-04 2023-06-30 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 처리방법과 장치 및 관련 제품
CN111985628B (zh) * 2019-05-24 2024-04-30 澜起科技股份有限公司 计算装置及包括所述计算装置的神经网络处理器
CN112148391A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 生成基于芯片的计算功能的方法、装置、设备和存储介质
US11941512B2 (en) * 2019-06-26 2024-03-26 Western Digital Technologies, Inc. Neural network engine utilizing a serial bus
EP3994621A1 (en) * 2019-07-03 2022-05-11 Huaxia General Processor Technologies Inc. Instructions for operating accelerator circuit
EP3994573A4 (en) * 2019-07-03 2022-08-10 Huaxia General Processor Technologies Inc. SYSTEM AND ARCHITECTURE OF A PURE FUNCTIONAL NEURAL NETWORK ACCELERATOR
US10915298B1 (en) 2019-10-08 2021-02-09 Ali Tasdighi Far Current mode multiply-accumulate for compute in memory binarized neural networks
DE102019127795A1 (de) * 2019-10-15 2021-04-15 Infineon Technologies Ag Schaltung und ein Verfahren zum Bestimmen einer Lage eines Magneten und Joystick
US11341086B2 (en) * 2019-11-22 2022-05-24 Rambus Inc. Compute accelerator with 3D data flows
US11127442B2 (en) * 2019-12-06 2021-09-21 Xilinx, Inc. Data transfers between a memory and a distributed compute array
CN114424174A (zh) * 2019-12-18 2022-04-29 谷歌有限责任公司 用于神经网络加速器的参数高速缓存
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11922292B2 (en) 2020-01-27 2024-03-05 Google Llc Shared scratchpad memory with parallel load-store
DE102020201182A1 (de) * 2020-01-31 2021-08-05 Robert Bosch Gesellschaft mit beschränkter Haftung Hardwarebeschleunigte Berechnung von Faltungen
CN115104108A (zh) * 2020-03-05 2022-09-23 华为云计算技术有限公司 用于分布式系统推理的深度学习模型的划分和位宽分配的方法和系统
WO2021195104A1 (en) * 2020-03-23 2021-09-30 Mentium Technologies Inc. Digital-imc hybrid system architecture for neural network acceleration
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
CN113568665B (zh) * 2020-04-29 2023-11-17 北京希姆计算科技有限公司 一种数据处理装置
US11501151B2 (en) * 2020-05-28 2022-11-15 Arm Limited Pipelined accumulator
US11556312B2 (en) 2020-07-10 2023-01-17 International Business Machines Corporation Photonic in-memory co-processor for convolutional operations
US11954580B2 (en) 2020-09-16 2024-04-09 Meta Platforms, Inc. Spatial tiling of compute arrays with shared control
US11704562B1 (en) 2020-11-04 2023-07-18 Meta Platforms, Inc. Architecture for virtual instructions
US11709783B1 (en) 2020-11-11 2023-07-25 Meta Platforms, Inc. Tensor data distribution using grid direct-memory access (DMA) controller
US11972349B1 (en) 2020-11-12 2024-04-30 Meta Platforms, Inc. Flexible compute array utilization in a tensor processor
KR102673748B1 (ko) * 2020-11-27 2024-06-10 한국전자통신연구원 다차원 직접 메모리 접근 컨트롤러 및 그것을 포함하는 컴퓨터 시스템
WO2022123722A1 (ja) * 2020-12-10 2022-06-16 日本電信電話株式会社 命令処理方法及び命令処理回路
US20220198249A1 (en) * 2020-12-18 2022-06-23 Hewlett Packard Enterprise Development Lp Execution of neural networks
US12001893B1 (en) 2020-12-28 2024-06-04 Meta Platforms, Inc. Distributed synchronization scheme
US11922306B2 (en) 2020-12-28 2024-03-05 Meta Platforms, Inc. Tensor controller architecture
US11790611B2 (en) 2020-12-30 2023-10-17 Meta Platforms, Inc. Visual editor for designing augmented-reality effects that utilize voice recognition
US11477007B1 (en) * 2021-04-13 2022-10-18 International Business Machines Corporation Packing arbitrary tensors into tiles with descriptive shapes
US11656909B2 (en) * 2021-04-15 2023-05-23 National Taiwan University Tensor accelerator capable of increasing efficiency of data sharing
CN114004347A (zh) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 用于加速图神经网络属性访问的硬件加速器、系统和方法
US11966745B2 (en) 2021-11-15 2024-04-23 Google Llc Sparse SIMD cross-lane processing unit
US11972263B2 (en) 2021-11-22 2024-04-30 Google Llc Cooperative instruction prefetch on multicore system
WO2023139990A1 (ja) * 2022-01-24 2023-07-27 LeapMind株式会社 ニューラルネットワーク回路およびニューラルネットワーク演算方法
US11977499B2 (en) * 2022-03-22 2024-05-07 Google Llc Streaming transfers and ordering model
US11886974B1 (en) * 2023-07-20 2024-01-30 Chromatic Inc. Neural network chip for ear-worn device

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093550A1 (en) * 2002-11-12 2004-05-13 Andrew Kadatch Matrix multiplication in a Galois field for forward error correction
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105892989A (zh) * 2016-03-28 2016-08-24 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
CN105930902A (zh) * 2016-04-18 2016-09-07 中国科学院计算技术研究所 一种神经网络的处理方法、系统
CN106485317A (zh) * 2016-09-26 2017-03-08 上海新储集成电路有限公司 一种神经网络加速器以及神经网络模型的实现方法
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN106909970A (zh) * 2017-01-12 2017-06-30 南京大学 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块
US20170200094A1 (en) * 2016-01-07 2017-07-13 1026 Labs, Inc. Hardware accelerated machine learning

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03121581A (ja) * 1989-10-04 1991-05-23 Olympus Optical Co Ltd 文字読取装置
JP3102027B2 (ja) 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US5958048A (en) 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
JP2001117900A (ja) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
GB2359641B (en) 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
WO2001090888A1 (en) 2000-05-23 2001-11-29 Theis Jean Paul A data processing system having an address generation unit with hardwired multidimensional memory indexing support
US7117421B1 (en) * 2002-05-31 2006-10-03 Nvidia Corporation Transparent error correction code memory system and method
US6952821B2 (en) 2002-08-19 2005-10-04 Hewlett-Packard Development Company, L.P. Method and system for memory management optimization
US7107199B2 (en) 2002-10-31 2006-09-12 Hewlett-Packard Development Company, L.P. Method and system for the design of pipelines of processors
US7225439B2 (en) 2003-03-21 2007-05-29 Sun Microsystems, Inc. Combining write-barriers within an inner loop with fixed step
CN1259617C (zh) 2003-09-09 2006-06-14 大唐微电子技术有限公司 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路
WO2006079940A2 (en) 2005-01-25 2006-08-03 Nxp B.V. Multi-threaded processor
US8806183B1 (en) 2006-02-01 2014-08-12 Ixys Ch Gmbh Blank bit and processor instructions employing the blank bit
US8904155B2 (en) 2006-03-17 2014-12-02 Qualcomm Incorporated Representing loop branches in a branch history register with multiple bits
US8438365B2 (en) 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
EP2009544B1 (en) 2007-06-26 2010-04-07 Telefonaktiebolaget LM Ericsson (publ) Data-processing unit for nested-loop instructions
US20100122066A1 (en) 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US20100274972A1 (en) 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
CA2684226A1 (en) 2009-10-30 2011-04-30 Ibm Canada Limited - Ibm Canada Limitee Eleminating redundant operations for common properties using shared real registers
US20130185538A1 (en) 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with inter-processing path communication
CN104081341B (zh) 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9165243B2 (en) * 2012-02-15 2015-10-20 Microsoft Technology Licensing, Llc Tensor deep stacked neural network
US9292787B2 (en) * 2012-08-29 2016-03-22 Microsoft Technology Licensing, Llc Computer-implemented deep tensor neural network
US20140181171A1 (en) 2012-12-24 2014-06-26 Pavel Dourbal Method and system for fast tensor-vector multiplication
US20140188961A1 (en) 2012-12-27 2014-07-03 Mikhail Plotnikov Vectorization Of Collapsed Multi-Nested Loops
US8817026B1 (en) 2014-02-13 2014-08-26 Raycast Systems, Inc. Computer hardware architecture and data structures for a ray traversal unit to support incoherent ray traversal
CN105260322B (zh) 2014-06-30 2020-09-01 中兴通讯股份有限公司 一种对循环缓冲区消除循环移位的方法和装置
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US9830193B1 (en) * 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
US10552370B2 (en) * 2015-10-08 2020-02-04 Via Alliance Semiconductor Co., Ltd. Neural network unit with output buffer feedback for performing recurrent neural network computations
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
US11120329B2 (en) * 2016-05-07 2021-09-14 Intel Corporation Multicast network and memory transfer optimizations for neural network hardware acceleration
JP6890615B2 (ja) * 2016-05-26 2021-06-18 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
US10498855B2 (en) * 2016-06-17 2019-12-03 Cisco Technology, Inc. Contextual services in a network using a deep learning agent
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093550A1 (en) * 2002-11-12 2004-05-13 Andrew Kadatch Matrix multiplication in a Galois field for forward error correction
CN105184366A (zh) * 2015-09-15 2015-12-23 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
US20170200094A1 (en) * 2016-01-07 2017-07-13 1026 Labs, Inc. Hardware accelerated machine learning
CN105892989A (zh) * 2016-03-28 2016-08-24 中国科学院计算技术研究所 一种神经网络加速器及其运算方法
CN105930902A (zh) * 2016-04-18 2016-09-07 中国科学院计算技术研究所 一种神经网络的处理方法、系统
CN106485317A (zh) * 2016-09-26 2017-03-08 上海新储集成电路有限公司 一种神经网络加速器以及神经网络模型的实现方法
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN106909970A (zh) * 2017-01-12 2017-06-30 南京大学 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KOTA ET AL: "BRein memory: a 13-layer 4.2 K neuron/0.8 M synapse binary/ternary reconfigurable in-memory deep neural network accelerator in 65 nm CMOS", 《DIGEST OF TECHNICAL PAPERS OF THE 2017 SYMPOSIUM ON VLSI CIRCUITS (VLSIC"17)》 *
Y. CHEN ET AL: "DianNao family:energy-efficient hardware accelerators for machine learning", 《COMMUNICATIONS OF THE ACM》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
WO2020172829A1 (zh) * 2019-02-27 2020-09-03 华为技术有限公司 一种神经网络模型处理方法及装置
CN112199036A (zh) * 2019-07-08 2021-01-08 爱思开海力士有限公司 数据存储装置、数据处理系统及其加速装置
CN112199036B (zh) * 2019-07-08 2024-02-27 爱思开海力士有限公司 数据存储装置、数据处理系统及其加速装置
CN112541581A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 一种加速计算单元和加速计算系统
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN112990450A (zh) * 2019-12-17 2021-06-18 爱思开海力士有限公司 数据处理系统及其加速器
CN113806246A (zh) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN115244909A (zh) * 2020-10-14 2022-10-25 谷歌有限责任公司 机器学习加速器中的队列分配
CN115586885A (zh) * 2022-09-30 2023-01-10 晶铁半导体技术(广东)有限公司 一种存内计算单元和加速方法

Also Published As

Publication number Publication date
JP7171622B2 (ja) 2022-11-15
GB201812820D0 (en) 2018-09-19
KR102662211B1 (ko) 2024-05-07
JP2023022028A (ja) 2023-02-14
TWI679590B (zh) 2019-12-11
EP3665622A1 (en) 2020-06-17
DE202018104609U1 (de) 2018-11-29
KR20220143969A (ko) 2022-10-25
GB2568776B (en) 2020-10-28
DE102018119513A1 (de) 2019-02-14
US20240078417A1 (en) 2024-03-07
JP2020532780A (ja) 2020-11-12
US11501144B2 (en) 2022-11-15
WO2019032808A1 (en) 2019-02-14
KR102456464B1 (ko) 2022-10-19
TW202044124A (zh) 2020-12-01
US20230162015A1 (en) 2023-05-25
US11727259B2 (en) 2023-08-15
TW201911140A (zh) 2019-03-16
TWI737145B (zh) 2021-08-21
US20190050717A1 (en) 2019-02-14
KR20200005638A (ko) 2020-01-15
KR20240060857A (ko) 2024-05-08
US10504022B2 (en) 2019-12-10
US20200005128A1 (en) 2020-01-02
GB2568776A (en) 2019-05-29

Similar Documents

Publication Publication Date Title
CN109389214A (zh) 具有驻留在芯片上的参数的神经网络加速器
CN207895435U (zh) 神经网络计算模组
US20220245453A1 (en) Redistributing tensor elements between machine learning computing units
KR102506622B1 (ko) 뉴럴 프로세싱 장치의 퍼포먼스 측정 방법 및 퍼포먼스 측정 장치
US11966358B1 (en) Neural processor
KR20240064469A (ko) 태스크 매니저 및 그의 태스크 디펜던시 체크 방법
KR20240064468A (ko) 태스크 매니저, 뉴럴 프로세싱 장치 및 그의 태스크 디펜던시 체크 방법
KR20240064460A (ko) 뉴럴 프로세싱 장치 및 그의 태스크 관리 방법
Crafton et al. Statistical Array Allocation and Partitioning for Compute In-Memory Fabrics
KR20240064470A (ko) 태스크 매니저, 뉴럴 프로세싱 장치 및 이의 태스크 디펜던시 처리 방법

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