CN207895435U - 神经网络计算模组 - Google Patents

神经网络计算模组 Download PDF

Info

Publication number
CN207895435U
CN207895435U CN201721254418.0U CN201721254418U CN207895435U CN 207895435 U CN207895435 U CN 207895435U CN 201721254418 U CN201721254418 U CN 201721254418U CN 207895435 U CN207895435 U CN 207895435U
Authority
CN
China
Prior art keywords
module
data
memory
memory group
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201721254418.0U
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
Application granted granted Critical
Publication of CN207895435U publication Critical patent/CN207895435U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • G06F7/5443Sum of products
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/3824Operand accessing
    • 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/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/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

Landscapes

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

Abstract

本申请涉及神经网络计算模组。公开了一种计算单元,所述计算单元包括用于存储输入激活的第一存储器群和用于存储在执行计算中所使用的参数的第二存储器群。所述计算单元包括至少一个cell,所述至少一个cell包括从所述第二存储器群接收参数并执行计算的至少一个乘法累加(“MAC”)运算器.所述计算单元进一步包括第一遍历单元,所述第一遍历单元向所述第一存储器群提供控制信号以使输入激活被提供至能够由所述MAC运算器访问的数据总线。所述计算单元执行与数据阵列中的至少一个元素相关联的一个或者多个计算,所述一个或多个计算由所述MAC运算器执行并且部分地包括从所述数据总线接收的所述输入激活与从所述第二存储器群接收的参数的乘法运算。

Description

神经网络计算模组
技术领域
本申请涉及神经网络计算模组。
背景技术
本说明书大体上涉及一种用于计算深度神经网络(“DNN”)层的神经网络计算模组(tile),该神经网络计算模组允许减小的指令带宽和指令存储器。
实用新型内容
大体上,本说明书中描述的一个创新方面可以体现为一种用于加速张量计算的计算单元。该计算单元包括具有第一数据宽度的第一存储器群和具有比第一数据宽度大的第二数据宽度的第二存储器群,第一存储器群用于存储输入激活或者输出激活中的至少一个,第二存储器群用于存储执行计算时使用的一个或者多个参数。计算单元可以进一步包括至少一个cell,该至少一个cell包括从第二存储器群接收参数并执行计算的至少一个乘法累加(“MAC”)运算器。计算单元可以进一步包括:与至少第一存储器群进行数据通信的第一遍历单元,该第一遍历单元被配置为向第一存储器群提供控制信号以使输入激活被提供至能够由MAC运算器访问的数据总线。计算单元执行与数据阵列中的至少一个元素相关联的一个或者多个计算,该一个或多个计算由 MAC运算器执行并且部分地包括从数据总线接收的输入激活与从第二存储器群接收的参数的乘法运算。
本说明书中描述的主题的另一个创新方面可以体现为一种用于加速张量计算的计算机实现的方法。该计算机实现的方法包括:响应于第一存储器群接收到来自第一遍历单元的控制信号,通过具有第一数据宽度的第一存储器群,发送第一输入激活,第一存储器群被设置在计算单元中,并且其中,第一输入激活由能够通过计算单元的至少cell 访问的数据总线来提供。该方法进一步包括:通过该至少一个cell,接收来自具有比第一数据宽度大的第二数据宽度的第二存储器群的一个或者多个参数,并且其中,该至少一个cell包括至少一个乘法累加 (“MAC”)运算器。该方法还可以进一步包括:通过MAC运算器,执行与数据阵列中的至少一个元素相关联的一个或者多个计算,其中,该一个或者多个计算部分地包括从数据总线访问的至少第一输入激活和从第二存储器群接收到的至少一个参数的乘法运算。
本说明书中描述的主题的另一个创新方面可以体现为一种非暂时性计算机可读存储介质。该非暂时性计算机可读存储介质包括能够由一个或者多个处理器执行的指令,该指令在这样的执行时使一个或者多个处理器执行操作,该操作包括:响应于第一存储器群接收到来自第一遍历单元的控制信号,通过具有第一数据宽度的第一存储器群,发送第一输入激活,第一存储器群被设置在计算单元中,并且其中,第一输入激活由能够通过计算单元的至少cell访问的数据总线来提供。所执行的操作还可以包括:通过该至少一个cell,接收来自具有比第一数据宽度大的第二数据宽度的第二存储器群的一个或者多个参数,并且其中,该至少一个cell包括至少一个乘法累加(“MAC”)运算器。所执行的操作还可以包括:通过MAC运算器,执行与数据阵列中的至少一个元素相关联的一个或者多个计算,其中,该一个或者多个计算部分地包括从数据总线访问的至少第一输入激活和从第二存储器群接收到的至少一个参数的乘法运算。
可以在特定实施例中实现本说明书中描述的主题,以便实现下面的优点中的一个或者多个。使用寄存器来保持跟踪存储器地址值允许程序用一条指令迭代深层嵌套循环。基于从寄存器检索到的存储器地址值,遍历从单个计算模组中的窄存储器单元和宽存储器单元访问的张量。存储器地址值与张量的元素相对应。张量计算基于深度循环嵌套的执行发生在单独的计算模组中。计算可以跨多个模组分布。基于将多层神经网络的张量计算跨多个计算模组分布,来增强并且加速计算效率。可以遍历张量,并且可以利用数量减少的指令来执行张量计算。
在本说明书中描述的主题也可以实现在特定实施例中,以便实现其它优点。例如,通过采用将允许灵活寻址以按照任何顺序遍历多维度阵列的窄低带宽存储器与高带宽宽存储器耦合的存储器层级,可以针对迥然不同维度的DNN层实现MAC运算器的高利用率并且可以最大程度地利用计算局部性。
该方面和其它方面的其它实施方式包括对应的系统、装置、和被配置为执行方法的动作并且编码在计算机存储设备上的计算机程序。可以通过安装在系统上的、在操作时使系统执行动作的软件、固件、硬件、或者其组合来如此配置一个或者多个计算机的系统。可以通过具有指令来如此配置一个或者多个计算机程序,该指令在由数据处理装置执行时使该装置执行动作。
本说明书中描述的主题还涉及一种图像识别和/或分类方法/系统。可以使用所公开的技术和所描述的具有硬件计算单元或者计算模组的硬件计算系统来实现系统。计算单元使用具有多个神经网络层的神经网络来处理用于计算推理(inference)的张量运算。
在下面的附图和描述中陈述了本说明书描述的主题的一个或者多个实施方式的细节。本主题的其它潜在特征、方面、和优点将通过说明书、附图、和权利要求而变得显而易见。
附图说明
图1是示例计算系统的框图。
图2图示出了示例神经网络计算模组。
图3图示出了示例张量遍历单元(TTU)结构。
图4图示出了包括向一个或者多个乘法累加(MAC)运算器提供输入激活的窄存储器单元的示例架构。
图5图示出了包括向图2和图4的窄存储器单元提供输出激活的输出总线的示例架构。
图6是使用图2中的神经网络计算模组来执行张量计算的过程的示例流程图。
在在各个附图中,类似的附图标记和名称指示类似的元素。
具体实施方式
本说明书中描述的主题涉及一种包括多个计算单元的硬件计算系统,所述多个计算单元被配置为加速神经网络层的机器学习推理工作量。硬件计算系统的每个计算单元是自包含的,并且可以独立地执行多层神经网络的给定层所需的计算。
可以使用具有多个层的神经网络来计算推理。例如,在输入给定的情况下,神经网络可以计算该输入的推理。神经网络通过神经网络的每个层处理该输入来计算该推理。具体地,神经网络的层分别具有相应的权重集。每个层接收输入并且根据该层的权重集来处理该输入以生成输出。
因此,为了从接收到的输入计算推理,神经网络接收输入并且通过每个神经网络层对所述输入进行处理以便生成推理,其中,一个神经网络层的输出被提供为下一个神经网络层的输入。神经网络层的数据输入,例如,神经网络的输入或者序列中的在该层下面的层到神经网络层的输出,可被称为该层的激活输入。
在一些实施方式中,将神经网络的层布置成序列。在其它实施方式中,将层布置成有向图。也就是说,任何特定的层可以接收多个输入、多个输出、或者两者。也可以将神经网络的层布置成使得可以将一个层的输出向回发送作为上一个层的输入。
本说明书中描述的硬件计算系统可以通过跨多个计算模组分布张量计算来执行神经网络层的计算。在神经网络层内执行的计算过程可以包括:包括输入激活的输入张量与包括权重的参数张量的乘法。该计算包括将输入激活与一个或者多个循环上的权重相乘,并且在多个循环上执行乘积的累加。
张量是多维几何对象,并且示例多维几何对象包括矩阵和数据阵列。通常,由计算模组执行软件算法,以通过对嵌套循环进行处理以遍历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中的一个或者多个设备。在一些实施方式中,控制器102在初始时间从主机接口108接收指令并且将其存储在指令存储器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中的存储器空间。
主机接口110可以使用CSR总线122来执行一个或者多个操作,所述操作包括:例如,对控制器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指令具有被允许同时进行的一个或者多个特殊化(specialization)。该一个或者多个特殊化可以被称为DMAOp指令子类型或者操作码。在一些情况下,每个唯一的和/或有效的DMAOp 指令类型/子类型元组在特定模组内将具有单独的指令缓冲器。
在模组112、114中的特定模组处,与指令总线124相关联的总线站将检查报头位图以确定指令类型/子类型。指令可以由模组接收并且随后在模组执行指令之前写入到模组的指令缓冲器。可以通过指令的类型和子类型指示符/字段来确定写入有指令的模组的指令缓冲器。指令缓冲器可以包括对一个或者多个相关指令的消耗进行优先级排序的先进先出(FIFO)控制方案。因此,在该FIFO控制方案下,将始终按照指令到达指令总线的顺序来执行相同类型/子类型的指令。
模组内的不同指令缓冲器是TensorOp指令缓冲器和DMAOp指令缓冲器。如上面所描述的,指令类型包括TensorOp指令和DMAOp指令。关于DMAOp指令,指令子类型(指示“写入”缓冲器位置)包括以下:1)网格传入指令缓冲器;2)网格传出指令缓冲器;3)窄- 宽DMA指令缓冲器;4)宽-窄DMA指令缓冲器;和5)环形总线DMA 指令缓冲器。下面将参照图2更详细地描述这些缓冲器位置。在整个说明书中使用宽和窄标号,并且这些标号通常指的是一个或者多个存储器单元的宽度(位/字节)的大致大小。如本文所使用的,“窄”可以指分别具有小于16位的大小或者宽度的一个或者多个存储器单元,并且“宽”可以指具有小于64位的大小或者宽度的一个或者多个存储器单元。
网状总线126提供与CSR总线122、指令总线124和环形总线128 (下文待述)不同的数据通信路径。如图1所描绘的,网状总线126 提供在X和Y维度两者中将每个模组耦合或者连接到其对应的相邻模组的通信路径。在各种实施方式中,网状总线126可以用于在相邻模组中的一个或者多个窄存储器单元之间传送输入激活量。如图所示,网状总线126不允许将输入激活数据直接转发到非相邻模组。
在各种实施方式中,网状总线126和经由网状总线126连接的各种模组可以具有以下配置。网格的四个拐角模组具有两个传出端口和两个传入端口。网格的四个边缘模组具有三个传入端口和三个传出端口。所有非边缘非拐角模组具有四个传入端口和四个传出端口。通常,给定一个示例N×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/O 110并且包括多个核心函数。控制器102的核心函数通常包括:向模组集112、114中的模组馈送一个或者多个I/O输入激活、向模组馈送从I/O 110接收的一个或者多个输入激活和参数、向模组馈送从I/O 110接收的一个或者多个指令、向主机接口108发送I/O输出激活、以及作为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,所述数据路径202和数据路径205分别为进出计算模组200的数据流提供通信路径。如上面所描述的,系统100包括布置成环形配置的三个不同的数据总线结构:CSR总线122、指令总线124以及环形总线128。参照图2,数据路径205与指令总线124相对应,而数据路径202通常与CSR总线122和环形总线128中的一个相对应。如图所示,数据路径202包括为离开计算模组200的数据提供输出路径的环形输出203和为进入计算模组200的数据提供输入路径的环形输入204。
计算模组200进一步包括TensorOp控件206和DMAOp控件208,所述TensorOp控件206包括TensorOp张量遍历单元(TTU)226,所述DMAOp控件208包括DMAOp TTU 228。TensorOp控件206通常管理对TensorOp TTU寄存器232的写入和从TensorOp TTU寄存器232的读取,并且监管遍历操作以供DMAOp TTU 226执行。同样,DMAOp 控件208通常管理对TensorOp TTU寄存器234的写入和从TensorOp TTU寄存器234的读取,并且监管遍历操作以供DMAOp TTU 228执行。TTU寄存器232包括指令缓冲器,该指令缓冲器用于存储包括在TensorOp控件206执行指令时待由TensorOp TTU 226执行的操作的一个或者多个指令。同样,TTU寄存器234包括指令缓冲器,该指令缓冲器用于存储包括在DMAOp控件208执行指令时待由TTU 228执行的操作的一个或者多个指令。
如下面进一步所描述的,TTU 226和/或228由计算模组200用来遍历通常驻留在窄存储器210和宽存储器212中的一个或者多个张量的阵列元素。在一些实施方式中,TTU 226由TensorOp控件206用来基于深度循环嵌套的执行来提供用于遍历多维张量的维度的张量运算。
在一些实施方式中,由计算模组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和包括多个cell(cell) 的MAC阵列214,该多个cell中的每个cell包括MAC运算器215与和寄存器220。通常,MAC阵列214使用多个cell上的MAC运算器 215和和寄存器220来执行张量计算,该张量计算包括与点积计算相关的算术运算。输入激活总线216提供数据路径,在该数据路径中,通过窄存储器210针对MAC阵列214中的每个MAC运算器215的相应访问逐一提供输入激活。因此,基于对输入激活的逐一广播,特定cell 的单个MAC运算器215将分别接收输入激活。由MAC阵列214的 MAC运算器所执行的算数运算通常包括将窄存储器210提供的输入激活与从宽存储器212访问的参数相乘来产生单个输出激活值。
在算数运算期间,可以将部分和累加并且存储在对应的,例如,和寄存器220中,或者写入宽存储器212并且由MAC阵列214中的特定cell再次访问,以完成随后的乘法运算。张量计算可以被描述为具有第一部分和第二部分。当乘法运算产生输出激活时,例如,通过完成输入激活与参数相乘来生成输出激活,则第一部分完成。第二部分包括将非线性函数应用到输出激活,并且,在应用该函数之后,当输出激活被写入窄存储器210时,第二部分完成。
计算模组200进一步包括输出激活总线218、包括输出激活流水线224的非线性单元(NLU)222、NLU控件238、以及参考图例230,该参考图例230指示计算模组200中的组件的核心属性。为了清楚起见示出了参考图例230,但是参考图例230不包括在计算模组200中。核心属性包括特定组件是单元、存储设备、运算器、控制设备还是数据路径。通常,在张量计算的第一部分完成后,经由输出激活总线218 将输出激活从MAC阵列214提供至NLU 222。在到达NLU 22之后,将经由激活流水线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,这四个单元可以共享相同的指令(例如,“添加”)并且并行执行计算。因为指令共享,所以减少了对指令宽度和指令存储器的要求,因此提高了效率。因此,相较于现有方法,系统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包括四个要跟踪的张量,每个所述张量的深度为8。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将使 TTU300在特定张量运算开始时加载TensorOp TTU计数器302、限制 308和步幅值304,并且在指令回退之前不会改变寄存器的值。所述两个TTU中的每一个将需要在计算模组200中生成以下存储器地址端口的地址:1)宽存储器212地址端口,以及2)具有四个独立仲裁的群的窄存储器210,这四个独立仲裁的群被表示为四个地址端口。
如上面所讨论的,在一些实施方式中,窄存储器210可以包括存储器仲裁器,该存储器仲裁器通常用在共享存储器系统中以针对每个存储器循环决定允许哪个控制设备(例如,TensorOp控件206或者 DMAOp控件208)访问窄存储器210的共享存储器资源。在一个示例中,不同的指令类型(TensorOp和DMAOp)是独立的控制线程,该控制线程请求需要被仲裁的存储器访问。当特定控制线程向存储器提交张量元素时,控制线程对提交给存储器的张量引用的计数器302进行增量。
在一个示例中,当TensorOp控件206执行用于访问张量的特定元素的指令时,TTU300可以确定该张量的特定元素的地址,从而使控件 206可以访问存储,例如,使窄存储器210读取表示特定元素的激活值的数据。在一些实施方式中,程序可以包括嵌套循环,并且控件206 可以根据与嵌套循环相关联的当前索引变量值来执行访问嵌套循环中的二维阵列变量的元素的指令。
TTU 300可以同时保持给定张量的多达X个TTU行的遍历状态。同时驻留在TTU 300中的每个张量占用专用硬件张量控制描述符。硬件控制描述符可以由每行位置的X个TTU计数器302、步幅304、以及支持张量的限制寄存器308,该张量每行维度具有多达X个TTU计数器。在一些实施方式中,行的数量和每行计数器的数量可以不同。
对于给定的位置寄存器,通过包括将位置寄存器加在一起的加法运算,来计算最终的存储器地址。将基地址包含到计数器302中。驻留在相同存储器中的张量参考共享一个或者多个加法器。在一种实施方式中,因为在循环中的任何给定端口上可能只有一个单独的加载/存储,所以循环嵌套控制的功能是确保驻留在相同窄或者宽存储器中的多个张量参考在任何给定的循环上都不使其计数器增量。使用寄存器来计算存储器访问地址值包括偏移值的确定,2016年2月3日提交的标题为“Matrix Processing Apparatus”》的专利申请序列号为15/014,265 对此进行了更详细的描述,其全部公开内容通过引用合并于此。
例如,当软件算法处理N维张量时,可以使用嵌套循环,每个循环负责遍历该N维张量中的每个维度。多维张量可以是矩阵或者多维矩阵。N维张量中的每个维度可以包括一个或者多个元素,其中每个元素可以存储相应的数据值。例如,张量可以是程序中的变量,其中,该变量可以具有三个维度。第一维度可以具有三百个元素的长度,第二维度可以具有一千个元素的长度,并且第三维度可以具有二十个元素的长度。
遍历嵌套循环中的张量可以要求计算元素的存储器地址值以加载或者存储该元素的对应数据值。例如,for循环是嵌套循环,其中,由三个循环索引变量跟踪的三个循环可以被嵌套以遍历三维张量。在某些情况下,处理器可能需要执行循环边界条件,诸如,用外循环索引变量设置内循环的循环边界。例如,在确定是否退出嵌套循环的最内部循环时,程序可以将最内部循环的循环索引变量的当前值与嵌套循环的最外部循环的循环索引变量的当前值进行比较。
通常,当计算模组的处理单元执行访问张量的特定元素的指令时,张量遍历单元确定该张量的特定元素的地址,从而使处理单元可以访问存储介质(存储器)以读取表示特定元素的值的数据。例如,程序可以包括嵌套循环,并且处理单元可以根据与嵌套循环相关联的当前索引变量值来执行访问嵌套循环中的二维阵列变量的元素的指令。基于与嵌套循环相关联的当前索引变量值,张量遍历单元可以确定表示与二维阵列变量的第一元素的偏移量的偏移值。然后处理单元可以使用该偏移值从存储器访问二维阵列变量的特定元素。
下面提供可以用于示例专门的TTU 300的模板参数:1)X个TTU 行;2)每行X个TTU计数器;3)X个TTU加法器单元;4)每个TTU 行指示共享加法器参考;以及5)每个计数器指示X计数器大小[TTU] [行][深度]。所有的TTU寄存器从架构上看都是可见的。计算需要访问的特定张量元素的地址(即,张量地址312)是计数器的加法结果。当从控制线程向TTU的一行发出增量信号时,TTU 300执行单个循环运算并且通过该维度的步幅304来增加最内部的维度,并且通过所有深度来传播调用(rollover)。
通常,TTU 300确定与一个或者多个张量相关联的状态。该状态可以包括循环边界值、当前循环索引变量值、用于计算存储器地址值的维度乘数、和/或用于处理分支循环边界的程序计数器值。TTU 300 可以包括一个或者多个张量状态元素和算术逻辑单元。张量状态元素中的每一个可以是存储元素,例如,寄存器或者任何其它合适的存储电路。在一些实施方式中,张量状态元素可以从物理上或者逻辑上排列成不同的组,如在专利申请序列号15/014,265中更详细地描述的。
图4图示出了示例架构,该示例架构包括窄存储器210经由输入总线216将激活404广播至一个或者多个乘法累加(MAC)运算器。移位寄存器404提供移位功能,借此,将激活404发送到输入总线216,每次发送一个,以供MACcell410中的一个或者多个MAC运算器215接收。通常,可以将MACcell410(包括MAC运算器215)定义为计算cell,该计算cell计算部分和,并且在一些实施方式中,被配置为将部分和数据写入输出总线218。如图所示,cell410可以由一个或者多个MAC运算器组成。在一种实施方式中,MACcell410中的MAC运算器215的数量被称为cell的发射宽度。作为一个示例,双发射cell 指带有两个MAC运算器的cell,这两个MAC运算器可以计算带有两个参数(来自宽存储器212)的两个激活值(来自窄存储器210)的乘法并且执行这两个乘数的积与当前部分和的结果之间的加法。
如上面所描述的,输入总线216是广播总线,该广播总线将输入激活提供至线性单元(即,MAC阵列214)中的MAC运算器215。在一些实施方式中,所有的MAC运算器215之间共享相同的输入。输入总线216的宽度必须足够宽以将该广播输入供应至给定MAC阵列214 的对应数量的cell。考虑以下示例来说明输入总线216的结构。在线性单元中的cell的数量等于四并且激活宽度等于8位时,输入总线216 可以被配置为在每个循环提供多达四个输入激活。在该示例中,MAC 阵列214中的每个cell将只访问所广播的这四个激活外的一个激活。
基于由计算模组200接收到的指令的TensorOp字段设置,MAC 阵列214的cell可能需要使用相同的输入激活来执行计算。这可以被称为MAC阵列214的cell内的Zout划分。同样,在MAC阵列214 的cell需要不同的激活以执行计算时,则发生cell内的Zin划分。在前一种情况下,复制四次单个输入激活并且在四个周期内广播从窄存储器210读取的四个激活。在后一种情况下,每个周期均要求窄存储器 210的读取。对于上面所提及的示例,TensorOp控件206基于从控制器102接收到的指令的执行来编排该广播方法。
图5图示出了示例架构,该示例架构包括用于将输出激活提供至图2与图4中的窄存储器单元210的输出总线218。通常,计算模组 200中的MAC阵列214的每个MACcell 215计算不同的输出激活。然而,关于输出特征阵列,在输出特征深度小于计算模组200中的MACcell 215的数量的情况下,则可以对cell进行聚组以形成一个或者多个cell组。cell组中的所有MACcell 215计算相同的输出(即,针对输出特征图),然而每个cell只计算与Zin维度的子集对应的输出的子集。结果,MACcell 215的输出现在是部分和,而不是最终的线性输出。在一些实施方式中,NLU 222将基于由NLU控件238提供至NLU 222 的控制信号,将这些部分和整合到最终的线性输出中。
如上面所讨论的,输出总线218是流水式移位寄存器。在各种实施方式中,当张量计算的第一部分结束并且TensorOp控件206指示(通过执行指令)需要写出部分和时,将存在提供至输出总线218的部分和的并行负载。并行负载的数量将与计算模组200中的MACcell的数量相对应。TensorOp控件206然后会使该部分和的量被移出并且通过非线性流水线发送。在一些实施方式中,可能存在实际上不利用模组中的所有MAC单元来执行计算的情况。在这种情况下,并非所有移位至输出总线上的部分和都是有效的。在该示例中,TensorOp控件206 可以向MAC阵列214提供控制信号以指示应该被移出的有效cell的数量。加载到输出总线218上的并行负载的量将仍然与计算模组中的 MACcell的数量相对应,然而,只有有效值才会被移出并且被提交至窄存储器210。
图6是使用图2中的神经网络计算模组200来执行张量计算的过程600的示例流程图。过程600开始于框602并且计算模组200的窄存储器210向输入激活数据总线216逐一发送(即,广播)激活。激活值被存储在窄存储器210中。窄存储器210可以是静态随机存取存储器(SRAM)群的集合,所述静态随机存取存储器群允许寻址到特定存储器位置以访问输入量。经由输入激活总线216将从窄存储器210 读取的激活被广播至MAC阵列214的线性cell(即,线性单元),该线性cell包括多个MAC运算器215与和寄存器220。在过程600中的框604中,计算模组200中的MAC运算器215分别接收两个输入:从输入激活总线216接收到一个输入(激活);并且从宽存储器212接收到另一个输入(参数)。因此,该激活向每个MAC运算器215馈送所述输入中的一个输入,并且MAC阵列214的cell中的每个MAC运算器215从宽存储器212获得其第二乘数输入。
在过程600中的框606中,计算模组200的MAC阵列214基于从存储器访问的数据阵列结构的元素来执行包括点积计算的张量计算。宽存储器212具有以位为单位的宽度,该宽度等于线性单元的宽度(32位)。因此,线性单元(LU)是从向量存储器(即,宽存储器 212)接收数据的SIMD向量算术逻辑单元(ALU)。在一些实施方式中,MAC运算器215也可以从宽存储器212获得累加器输入(部分和)。在一些实施方式中,相对于宽存储器212端口,存在用于与两个不同操作数(参数和部分和)相关的读取和/或写入的时间共享。通常,为了对面积进行最优化,宽存储器212可以具有有限数量的端口。结果,当需要从宽存储器212读取操作数(例如,参数)并且同时将操作数 (例如,部分和)写入宽存储器212时,可以阻塞与特定操作数相关联的流水线。
在框608中,计算模组200的计算cell(具有MAC运算器215与和寄存器220)基于由MAC/计算cell执行的乘法运算而产生至少一个输出激活。MACcell运算的结果包括(在部分和算术运算期间)写回宽存储器的部分和或者发送至输出总线218的输出激活。在框610中,计算模组200的NLU 222将非线性激活函数应用于输出激活并且然后将该激活写入窄存储器210。在一些实施方式中,输出总线218是移位寄存器并且可以累加来自MAC运算器215的结果/输出激活的并行负载,但是将它们移出,每次一个,以便将非线性函数和写入操作应用于相同模组的窄存储器210。
可以利用数字电子电路,有形地实现的计算机软件或者固件、计算机硬件、包括在本说明书中所公开的结构及其结构等效物、或者它们中的一个或者多个的组合来实施本说明书中所描述的主题和功能操作的实施例。可以将本说明书中描述的主题的实施例实施为一个或者多个计算机程序,即,编码在有形的非暂时性的程序载体上以由数据处理装置执行或者以控制该数据处理装置的操作的计算机程序指令的一个或者多个模块。可替代地或者另外,程序指令可以编码在人工生成的传播信号(例如,机器生成的电气、光学或者电磁信号,生成该信号是为了对用于传输至合适的接收器装置以供数据处理装置执行的信息进行编码)上。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或者串行存取存储器设备、或者它们中的一个或者多个的组合。
可以通过一个或者多个可编程计算机来执行本说明书中所描述的过程和逻辑流程,该一个或者多个可编程计算机执行一个或者多个计算机程序以通过操作输入数据并且生成输出来执行功能。也可以通过专用逻辑电路系统(例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路)、或者GPGPU(通用图形处理单元))来执行过程和逻辑流程,并且也可以将装置实施为专用逻辑电路系统(例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路)、或者GPGPU(通用图形处理单元))。
适合执行计算机程序的计算机包括,例如,可以基于通用或者专用微处理器或者两者、或者任何其它类型的中央处理单元。通常,中央处理单元将接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的必要元件是用于进行或者执行指令的中央处理单元、和用于存储指令和数据的一个或者多个存储器设备。通常,计算机还将包括用于存储数据的一个或者多个海量存储设备(例如,磁盘、磁光盘、或者光盘),或者计算机可以操作地耦合以接收来自该海量存储设备的数据或者将数据传输至该海量存储设备或者进行两者。然而,计算机无需具有这种设备。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括:例如,半导体存储器设备(例如,EPROM、EEPROM、和闪速存储器设备)、磁盘(例如,内部硬盘或者可移动盘)。处理器和存储器可以由专用逻辑电路系统补充或者可以并入该专用逻辑电路系统中。
虽然本说明书包含了许多具体实施细节,但是不应该将这些细节视为对任何实用新型或者可能被要求保护的内容的范围的限制,而是作为针对特定实用新型的特定实施例的特征的描述。在本说明书中在单独实施例的场境下描述的某些特征还可以组合地实施在单个实施例中。相反,在单个实施例的场境中描述的各种特征也可以单独地或者按照任何合适的子组合来实施在多个实施例中。此外,尽管可能将特征描述为在某些组合中起作用并且甚至最初如此要求保护,但是在一些情况下来自所要求保护的组合的一个或多个特征能够从组合中被删去,并且所要求保护的组合可以涉及子组合或子组合的变型。
相似地,虽然在附图中按照特定顺序描绘操作,但是这不应被理解为要求按照所示的特定顺序或者按相继顺序执行这种操作,或者执行所有所示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上述实施例中的各种系统模块和组件的分离理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
在以下示例中总结了进一步的实施方式:
示例1:一种用于加速张量计算的计算单元,该计算单元包括:具有第一数据宽度的第一存储器群,所述第一存储器群用于存储输入激活或者输出激活中的至少一个;具有比所述第一数据宽度大的第二数据宽度的第二存储器群,所述第二存储器群用于存储在执行计算时使用的一个或者多个参数;至少一个cell,所述至少一个cell包括从所述第二存储器群接收参数并且执行计算的至少一个乘法累加(“MAC”) 运算器;与至少所述第一存储器群进行数据通信的第一遍历单元,所述第一遍历单元被配置为向所述第一存储器群提供控制信号以使输入激活被提供至能够由MAC运算器访问的数据总线;并且其中,所述计算单元执行与数据阵列中的至少一个元素相关联的一个或者多个计算,所述一个或多个计算由所述MAC运算器执行并且部分地包括从所述数据总线接收的所述输入激活与从所述第二存储器群接收的参数的乘法运算。
示例2:根据示例1的计算单元,其中,计算单元通过执行包括多个循环的循环嵌套来执行所述计算中的一个或者多个计算,其中所述循环嵌套的结构包括由所述第一遍历单元使用来遍历所述数据阵列的一个或者多个维度的相应循环。
示例3:根据示例2的计算单元,其中,所述一个或者多个计算部分地基于由所述第一遍历单元提供的张量运算来执行,该张量运算包括用于访问数据阵列中的一个或者多个元素的循环嵌套结构。
示例4:根据示例1至3的计算单元,进一步包括第二遍历单元,该第二遍历单元被配置为基于从所述计算单元外部的源接收的指令来访问所述第一存储器群的至少一个存储器位置和所述第二存储器群的至少一个存储器位置。
示例5:根据示例4的计算单元,其中,所述第一遍历单元是张量运算遍历单元,并且所述第二遍历单元是直接存储器访问遍历单元,并且其中,数据阵列与包括多个元素的张量相对应。
示例6:根据示例1至5的计算单元,其中,所述计算单元包括非线性单元,并且所述计算的第一部分包括基于乘法运算产生一个或者多个输出激活,并且所述计算的第二部分包括:通过所述非线性单元将非线性函数应用到一个或者多个输出激活。
示例7:根据示例6的计算单元,其中,由所述计算单元执行的一个或者多个计算包括使用移位寄存器将所述输出激活移位到所述第一存储器群。
示例8:根据示例1至8的计算单元,进一步包括延伸到所述计算单元外部的环形总线的部分,其中,该环形总线在所述第一存储器群与另一相邻计算单元的存储器群之间以及所述第二存储器群和另一相邻计算单元的存储器群之间提供数据路径。
示例9:根据示例1至8中的一个示例的计算单元,其中,第二存储器群被配置为存储部分和或一个或者多个池化层输入中的至少一种。
示例10:一种用于加速张量计算的计算机实现的方法,该方法包括:响应于第一存储器群接收到来自第一遍历单元的控制信号,通过具有第一数据宽度的第一存储器群,发送第一输入激活,所述第一存储器群被设置在计算单元中,并且其中,所述第一输入激活由能够通过该计算单元的至少cell访问的数据总线来提供;通过该至少一个cell,接收来自具有比所述第一数据宽度大的第二数据宽度的第二存储器群的一个或者多个参数,并且其中,该至少一个cell包括至少一个乘法累加(“MAC”)运算器;通过所述MAC运算器,执行与数据阵列中的至少一个元素相关联的一个或者多个计算,其中,所述一个或者多个计算部分地包括从所述数据总线访问的至少所述第一输入激活和从所述第二存储器群接收到的至少一个参数的乘法运算。
示例11:根据示例10的计算机实现的方法,其中,所述一个或者多个计算部分地基于所述计算单元执行包括多个循环的循环嵌套来执行,其中,该循环嵌套的结构指示所述第一遍历单元遍历所述数据阵列中的一个或者多个维度的方式。
示例12:根据示例11的计算机实现的方法,进一步包括:通过所述第一遍历单元,提供包括用于访问所述数据阵列的一个或者多个元素的循环嵌套结构的张量运算。
示例13:根据示例10至12中的一个示例的计算机实现的方法,其中,所述第一遍历单元是张量运算遍历单元,并且所述第二遍历单元是直接存储器访问遍历单元,并且其中,数据阵列与包括多个元素的张量相对应。
示例14:根据示例10至13中的一个示例的计算机实现的方法,进一步包括:通过基于所述乘法计算产生至少一个输出激活来执行所述一个或多个计算的第一部分。
示例15:根据示例14的计算机实现的方法,进一步包括:通过将非线性函数应用到所述一个或者多个输出激活来执行所述一个或者多个计算的第二部分。
示例16:一种非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质包括能够由一个或者多个处理器执行的指令,该指令在这样的执行时使所述一个或者多个处理器执行操作,该操作包括:响应于所述第一存储器群接收到来自第一遍历单元的控制信号,通过具有第一数据宽度的第一存储器群,发送第一输入激活,所述第一存储器群被设置在计算单元中,并且其中,所述第一输入激活由能够通过该计算单元的至少cell访问的数据总线来提供;通过该至少一个cell,接收来自具有比所述第一数据宽度大的第二数据宽度的第二存储器群的一个或者多个参数,并且其中,该至少一个cell包括至少一个乘法累加(“MAC”)运算器;以及通过所述MAC运算器,执行与数据阵列中的至少一个元素相关联的一个或者多个计算,其中,所述一个或者多个计算部分地包括从所述数据总线访问的至少所述第一输入激活和从所述第二存储器群接收到的至少一个参数的乘法运算。
示例17:根据示例16的非暂时性计算机可读介质,其中,所述一个或者多个计算部分地基于所述计算单元执行包括多个循环的循环嵌套来执行,其中,该循环嵌套的结构指示所述第一遍历单元遍历所述数据阵列中的一个或者多个维度的方式。
示例18:根据示例17的非暂时性计算机可读介质,进一步包括:通过所述第一遍历单元,提供包括用于访问所述数据阵列的一个或者多个元素的循环嵌套结构的张量运算。
示例19:根据示例16至18中的一个示例的非暂时性计算机可读介质,进一步包括:通过基于所述乘法计算产生至少一个输出激活来执行所述一个或多个计算的第一部分。
示例20:根据示例19的非暂时性计算机可读介质,进一步包括:通过将非线性函数应用到所述一个或者多个输出激活来执行所述一个或者多个计算的第二部分。
已经描述了本主题的特定实施例。其它实施例在以下权利要求书的范围内。例如,在权利要求书中叙述的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。作为一个示例,在附图中描绘的过程不一定需要所示的特定顺序或者相继顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

Claims (5)

1.一种用于加速张量计算的计算单元,所述计算单元包括:
具有第一数据宽度的第一存储器群,所述第一存储器群用于存储输入激活和输出激活中的至少一个;
具有比所述第一数据宽度大的第二数据宽度的第二存储器群,所述第二存储器群用于存储在执行计算时使用的一个或者多个参数;
至少一个cell,所述至少一个cell包括从所述第二存储器群接收参数并且执行计算的至少一个乘法累加(“MAC”)运算器;
与至少所述第一存储器群进行数据通信的第一遍历单元,所述第一遍历单元被配置为向所述第一存储器群提供控制信号以使输入激活被提供至能够由所述乘法累加运算器访问的数据总线;以及
其中,所述计算单元通过所述乘法累加运算器执行与数据阵列中的至少一个元素相关联的一个或者多个计算,所述一个或多个计算至少包括从所述数据总线接收的所述输入激活与从所述第二存储器群接收的参数的乘法运算。
2.根据权利要求1所述的计算单元,进一步包括第二遍历单元,所述第二遍历单元被配置为基于从所述计算单元外部的源接收的指令来访问所述第一存储器群的至少一个存储器位置和所述第二存储器群的至少一个存储器位置。
3.根据权利要求1所述的计算单元,其中,由所述计算单元执行的所述一个或者多个计算包括使用移位寄存器将所述一个或多个输出激活移位到所述第一存储器群。
4.根据权利要求1所述的计算单元,进一步包括延伸到所述计算单元外部的环形总线的部分,其中,所述环形总线在所述第一存储器群与另一相邻计算单元的存储器群之间以及所述第二存储器群和所述另一相邻计算单元的所述存储器群之间提供数据路径。
5.根据权利要求1所述的计算单元,其中,所述第二存储器群被配置为存储部分和以及一个或者多个池化层输入中的至少一种。
CN201721254418.0U 2016-10-27 2017-09-27 神经网络计算模组 Active CN207895435U (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/335,769 2016-10-27
US15/335,769 US10175980B2 (en) 2016-10-27 2016-10-27 Neural network compute tile

Publications (1)

Publication Number Publication Date
CN207895435U true CN207895435U (zh) 2018-09-21

Family

ID=59296600

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710889996.XA Pending CN108009106A (zh) 2016-10-27 2017-09-27 神经网络计算模组
CN201721254418.0U Active CN207895435U (zh) 2016-10-27 2017-09-27 神经网络计算模组

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710889996.XA Pending CN108009106A (zh) 2016-10-27 2017-09-27 神经网络计算模组

Country Status (10)

Country Link
US (4) US10175980B2 (zh)
EP (1) EP3533001B1 (zh)
JP (3) JP6995851B2 (zh)
KR (2) KR102317668B1 (zh)
CN (2) CN108009106A (zh)
DE (2) DE202017105708U1 (zh)
GB (1) GB2555936B (zh)
HK (1) HK1254698A1 (zh)
SG (1) SG11201903684RA (zh)
WO (1) WO2018080617A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组

Families Citing this family (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
EP3469522A4 (en) * 2016-06-14 2020-03-18 The Governing Council of the University of Toronto ACCELERATOR FOR DEEP NEURAL NETWORKS
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10891534B2 (en) 2017-01-11 2021-01-12 International Business Machines Corporation Neural network reinforcement learning
US11157801B2 (en) * 2017-02-28 2021-10-26 Microsoft Technology Licensing, Llc Neural network processing with the neural network model pinned to on-chip memories of hardware nodes
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
CN108875956B (zh) * 2017-05-11 2019-09-10 广州异构智能科技有限公司 原生张量处理器
US11169732B2 (en) * 2017-05-18 2021-11-09 Kabushiki Kaisha Toshiba Computing device
US10248908B2 (en) 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
CN107608715B (zh) * 2017-07-20 2020-07-03 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法
US10790828B1 (en) 2017-07-21 2020-09-29 X Development Llc Application specific integrated circuit accelerators
US10879904B1 (en) * 2017-07-21 2020-12-29 X Development Llc Application specific integrated circuit accelerators
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11868804B1 (en) * 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11243880B1 (en) * 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
EP3682330B1 (en) * 2017-09-21 2022-08-24 Huawei Technologies Co., Ltd. Multi-thread systolic array
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
US11222256B2 (en) 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
GB2568086B (en) 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
KR102362107B1 (ko) 2017-11-21 2022-02-11 구글 엘엘씨 기계 학습 기능을 갖는 저전력 앰비언트 컴퓨팅 시스템
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
US20190179635A1 (en) * 2017-12-11 2019-06-13 Futurewei Technologies, Inc. Method and apparatus for tensor and convolution operations
US10747631B2 (en) * 2018-01-19 2020-08-18 DinoplusAI Holdings Limited Mission-critical AI processor with record and replay support
CN111742331A (zh) * 2018-02-16 2020-10-02 多伦多大学管理委员会 神经网络加速器
US10908879B2 (en) 2018-03-02 2021-02-02 Neuchips Corporation Fast vector multiplication and accumulation circuit
US11614941B2 (en) 2018-03-30 2023-03-28 Qualcomm Incorporated System and method for decoupling operations to accelerate processing of loop structures
US10657442B2 (en) * 2018-04-19 2020-05-19 International Business Machines Corporation Deep learning accelerator architecture with chunking GEMM
US11531727B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Computation of neural network node with large input values
US20190325295A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Time, space, and energy efficient neural inference via parallelism and on-chip memory
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11468145B1 (en) 2018-04-20 2022-10-11 Perceive Corporation Storage of input values within core of neural network inference circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11556762B2 (en) 2018-04-21 2023-01-17 Microsoft Technology Licensing, Llc Neural network processor based on application specific synthesis specialization parameters
US20190332925A1 (en) * 2018-04-30 2019-10-31 International Business Machines Corporation Neural hardware accelerator for parallel and distributed tensor computations
US20190392287A1 (en) * 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
CN112334915A (zh) * 2018-06-25 2021-02-05 奥林巴斯株式会社 运算处理装置
US11663461B2 (en) 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores
US20200019836A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Hierarchical parallelism in a network of distributed neural network cores
CN110796244B (zh) * 2018-08-01 2022-11-08 上海天数智芯半导体有限公司 用于人工智能设备的核心计算单元处理器及加速处理方法
CN109117949A (zh) * 2018-08-01 2019-01-01 南京天数智芯科技有限公司 用于人工智能设备的灵活数据流处理器和处理方法
US10817042B2 (en) * 2018-09-27 2020-10-27 Intel Corporation Power savings for neural network architecture with zero activations during inference
US10834024B2 (en) * 2018-09-28 2020-11-10 International Business Machines Corporation Selective multicast delivery on a bus-based interconnect
WO2020081431A1 (en) * 2018-10-15 2020-04-23 The Board Of Trustees Of The University Of Illinois In-memory near-data approximate acceleration
KR102637733B1 (ko) 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
US11301546B2 (en) 2018-11-19 2022-04-12 Groq, Inc. Spatial locality transform of matrices
US11361050B2 (en) 2018-11-20 2022-06-14 Hewlett Packard Enterprise Development Lp Assigning dependent matrix-vector multiplication operations to consecutive crossbars of a dot product engine
US11263011B2 (en) 2018-11-28 2022-03-01 International Business Machines Corporation Compound instruction set architecture for a neural inference chip
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
JP7189000B2 (ja) * 2018-12-12 2022-12-13 日立Astemo株式会社 情報処理装置、車載制御装置、車両制御システム
US20200202198A1 (en) * 2018-12-21 2020-06-25 Waymo Llc Neural network processor
US11144282B2 (en) 2019-01-16 2021-10-12 Mediatek Inc. Mathematical accelerator for artificial intelligence applications
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
WO2020163171A1 (en) * 2019-02-07 2020-08-13 quadric.io, Inc. Systems and methods for implementing a random access augmented machine perception and dense algorithm integrated circuit
US11023379B2 (en) 2019-02-13 2021-06-01 Google Llc Low-power cached ambient computing
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
CN111782133A (zh) * 2019-04-04 2020-10-16 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
US11176493B2 (en) * 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
JP7278150B2 (ja) 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
US20210026686A1 (en) * 2019-07-22 2021-01-28 Advanced Micro Devices, Inc. Chiplet-integrated machine learning accelerators
GB2586279B (en) * 2019-08-16 2022-11-23 Siemens Ind Software Inc Routing messages in a integrated circuit chip device
GB2586278B (en) * 2019-08-16 2022-11-23 Siemens Ind Software Inc Addressing mechanism for a system on chip
GB2586277B (en) 2019-08-16 2022-11-23 Siemens Ind Software Inc Broadcasting event messages in a system on chip
EP4004730A1 (en) * 2019-10-07 2022-06-01 Google LLC Redistributing tensor elements between machine learning computing units
US11327690B2 (en) 2019-11-13 2022-05-10 Google Llc Enhanced input of machine-learning accelerator activations
CN112990421B (zh) * 2019-12-02 2023-09-05 杭州海康威视数字技术股份有限公司 优化深度学习网络的运行过程的方法、装置及存储介质
KR20210071471A (ko) 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
US20220413592A1 (en) 2019-12-17 2022-12-29 Google Llc Low-power vision sensing
KR20210077352A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 데이터 처리 시스템 및 이를 위한 가속 장치
WO2021127174A1 (en) 2019-12-18 2021-06-24 Google Llc Machine learning based privacy processing
US20230119126A1 (en) * 2019-12-19 2023-04-20 Google Llc Processing sequential inputs using neural network accelerators
KR20210085461A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법
US11537323B2 (en) * 2020-01-07 2022-12-27 SK Hynix Inc. Processing-in-memory (PIM) device
DE102020201182A1 (de) * 2020-01-31 2021-08-05 Robert Bosch Gesellschaft mit beschränkter Haftung Hardwarebeschleunigte Berechnung von Faltungen
US11630991B2 (en) 2020-02-04 2023-04-18 Apple Inc. Broadcasting mode of planar engine for neural processor
US11226816B2 (en) 2020-02-12 2022-01-18 Samsung Electronics Co., Ltd. Systems and methods for data placement for in-memory-compute
US11281554B2 (en) 2020-03-17 2022-03-22 Samsung Electronics Co., Ltd. System and method for in-memory computation
CN113537476A (zh) * 2020-04-16 2021-10-22 中科寒武纪科技股份有限公司 运算装置以及相关产品
US11928176B2 (en) * 2020-07-30 2024-03-12 Arm Limited Time domain unrolling sparse matrix multiplication system and method
US11954580B2 (en) 2020-09-16 2024-04-09 Meta Platforms, Inc. Spatial tiling of compute arrays with shared control
US20220114440A1 (en) * 2020-10-14 2022-04-14 Google Llc Queue Allocation in Machine Learning Accelerators
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
US20220188492A1 (en) * 2020-12-10 2022-06-16 Memryx Incorporated Chiplet based artificial intelligence accelerators and configuration methods
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
CN112596684B (zh) 2021-03-08 2021-06-22 成都启英泰伦科技有限公司 一种用于语音深度神经网络运算的数据存储方法
US20220405557A1 (en) * 2021-06-10 2022-12-22 Samsung Electronics Co., Ltd. Sram-sharing for reconfigurable neural processing units
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11694733B2 (en) 2021-08-19 2023-07-04 Apple Inc. Acceleration of in-memory-compute arrays
US11494321B1 (en) * 2021-09-30 2022-11-08 Amazon Technologies, Inc. State buffer memloc reshaping
KR102395743B1 (ko) * 2021-11-09 2022-05-09 오픈엣지테크놀로지 주식회사 1차원 어레이 풀링 방법 및 이를 위한 장치
US12008368B2 (en) 2022-09-21 2024-06-11 Amazon Technologies, Inc. Programmable compute engine having transpose operations
CN115599442B (zh) * 2022-12-14 2023-03-10 成都登临科技有限公司 一种ai芯片、电子设备及张量处理方法
CN117093509B (zh) * 2023-10-18 2024-01-26 上海为旌科技有限公司 一种基于贪婪算法的片上内存地址分配方法和系统

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3754128A (en) 1971-08-31 1973-08-21 M Corinthios High speed signal processor for vector transformation
JPS4874139A (zh) 1971-12-29 1973-10-05
JPS5364439A (en) 1976-11-20 1978-06-08 Agency Of Ind Science & Technol Linear coversion system
JPS58134357A (ja) 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
EP0156648B1 (en) 1984-03-29 1992-09-30 Kabushiki Kaisha Toshiba Convolution arithmetic circuit for digital signal processing
US5267185A (en) 1989-04-14 1993-11-30 Sharp Kabushiki Kaisha Apparatus for calculating matrices
US5138695A (en) 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
JPH03167664A (ja) 1989-11-28 1991-07-19 Nec Corp マトリクス演算回路
JP3210319B2 (ja) * 1990-03-01 2001-09-17 株式会社東芝 ニューロチップおよびそのチップを用いたニューロコンピュータ
EP0485522A4 (en) 1990-05-30 1993-08-04 Daniel W. Hammerstrom Neural network using virtual-zero
WO1991019267A1 (en) 1990-06-06 1991-12-12 Hughes Aircraft Company Neural network processor
JP3251947B2 (ja) 1991-03-27 2002-01-28 株式会社日立国際電気 自動利得制御回路
JP3318753B2 (ja) 1991-12-05 2002-08-26 ソニー株式会社 積和演算装置および積和演算方法
AU658066B2 (en) 1992-09-10 1995-03-30 Deere & Company Neural network based control system
JPH06139218A (ja) * 1992-10-30 1994-05-20 Hitachi Ltd ディジタル集積回路を用いて神経回路網を完全に並列にシミュレートするための方法及び装置
JPH076146A (ja) * 1993-06-18 1995-01-10 Fujitsu Ltd 並列データ処理システム
US6067536A (en) 1996-05-30 2000-05-23 Matsushita Electric Industrial Co., Ltd. Neural network for voice and pattern recognition
US5742741A (en) 1996-07-18 1998-04-21 Industrial Technology Research Institute Reconfigurable neural network
EP0834817B1 (en) 1996-10-01 2000-08-02 FINMECCANICA S.p.A. AZIENDA ANSALDO Programmed neural module
US5905757A (en) 1996-10-04 1999-05-18 Motorola, Inc. Filter co-processor
JPH117432A (ja) * 1997-06-16 1999-01-12 Hitachi Ltd 情報処理装置及び半導体装置
US6243734B1 (en) * 1998-10-30 2001-06-05 Intel Corporation Computer product and method for sparse matrices
JP2001117900A (ja) * 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20020044695A1 (en) 2000-05-05 2002-04-18 Bostrom Alistair K. Method for wavelet-based compression of video images
JP2003244190A (ja) 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
US7493498B1 (en) 2002-03-27 2009-02-17 Advanced Micro Devices, Inc. Input/output permission bitmaps for compartmentalized security
US20070124565A1 (en) * 2003-06-18 2007-05-31 Ambric, Inc. Reconfigurable processing array having hierarchical communication network
US7426501B2 (en) 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US7818729B1 (en) 2003-09-15 2010-10-19 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
CA2553452A1 (en) 2004-01-13 2005-07-28 New York University Method, system, storage medium, and data structure for image recognition using multilinear independent component analysis
GB2436377B (en) 2006-03-23 2011-02-23 Cambridge Display Tech Ltd Data processing hardware
CN101441441B (zh) 2007-11-21 2010-06-30 新乡市起重机厂有限公司 起重机智能防摇控制系统的设计方法
JP4513865B2 (ja) 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
WO2009141789A1 (en) 2008-05-21 2009-11-26 Nxp B.V. A data handling system comprising memory banks and data rearrangement
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
JP2010039625A (ja) * 2008-08-01 2010-02-18 Renesas Technology Corp 並列演算装置
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
EP2290563B1 (en) 2009-08-28 2017-12-13 Accenture Global Services Limited Accessing content in a network
US8589600B2 (en) 2009-12-14 2013-11-19 Maxeler Technologies, Ltd. Method of transferring data with offsets
US8595467B2 (en) 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
US8457767B2 (en) 2010-12-31 2013-06-04 Brad Radl System and method for real-time industrial process modeling
US8977629B2 (en) * 2011-05-24 2015-03-10 Ebay Inc. Image-based popularity prediction
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
JP5911165B2 (ja) * 2011-08-05 2016-04-27 株式会社メガチップス 画像認識装置
US8909576B2 (en) 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
US9201828B2 (en) * 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
KR101772299B1 (ko) * 2012-12-28 2017-08-28 인텔 코포레이션 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어
US9811116B2 (en) * 2013-05-24 2017-11-07 Qualcomm Incorporated Utilization and configuration of wireless docking environments
US20150071020A1 (en) * 2013-09-06 2015-03-12 Sony Corporation Memory device comprising tiles with shared read and write circuits
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
ES2880316T3 (es) 2014-08-29 2021-11-24 Google Llc Procesamiento de imágenes mediante redes neuronales profundas
CN104463209B (zh) 2014-12-08 2017-05-24 福建坤华仪自动化仪器仪表有限公司 一种基于bp神经网络的pcb板上数字代码识别方法
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US10013652B2 (en) 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10489703B2 (en) * 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor
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
US10552119B2 (en) 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
CN106023065B (zh) 2016-05-13 2019-02-19 中国矿业大学 一种基于深度卷积神经网络的张量型高光谱图像光谱-空间降维方法
CN106127297B (zh) 2016-06-02 2019-07-12 中国科学院自动化研究所 基于张量分解的深度卷积神经网络的加速与压缩方法
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10037490B2 (en) * 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
CN106529511B (zh) 2016-12-13 2019-12-10 北京旷视科技有限公司 图像结构化方法及装置
US20180189675A1 (en) * 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US11164071B2 (en) * 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US10572409B1 (en) * 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组

Also Published As

Publication number Publication date
GB2555936A (en) 2018-05-16
US20180121196A1 (en) 2018-05-03
SG11201903684RA (en) 2019-05-30
WO2018080617A1 (en) 2018-05-03
CN108009106A (zh) 2018-05-08
US9710265B1 (en) 2017-07-18
JP2022046552A (ja) 2022-03-23
GB201714815D0 (en) 2017-11-01
KR102387334B1 (ko) 2022-04-15
DE102017121825A1 (de) 2018-05-03
KR102317668B1 (ko) 2021-10-26
JP2019537793A (ja) 2019-12-26
US11422801B2 (en) 2022-08-23
US20190213005A1 (en) 2019-07-11
JP6995851B2 (ja) 2022-01-17
JP2024075608A (ja) 2024-06-04
DE202017105708U1 (de) 2018-01-03
JP7451483B2 (ja) 2024-03-18
GB2555936B (en) 2019-01-30
KR20210129270A (ko) 2021-10-27
US11816480B2 (en) 2023-11-14
HK1254698A1 (zh) 2019-07-26
EP3533001A1 (en) 2019-09-04
KR20190066058A (ko) 2019-06-12
US20230004386A1 (en) 2023-01-05
EP3533001B1 (en) 2024-07-03
US10175980B2 (en) 2019-01-08

Similar Documents

Publication Publication Date Title
CN207895435U (zh) 神经网络计算模组
CN109389214A (zh) 具有驻留在芯片上的参数的神经网络加速器
CN208061184U (zh) 矢量处理单元
CN108416436A (zh) 使用多核心处理模块进行神经网络划分的方法及其系统
CN108009626A (zh) 利用神经网络计算单元中的输入数据稀疏
CN110245752A (zh) 一种全连接运算方法及装置
CN107688854A (zh) 一种能支持不同位宽运算数据的运算单元、方法及装置
JP6888074B2 (ja) チップ装置および関連製品
EP3966698A1 (en) Memory processing unit architecture
US20240231819A1 (en) Neural network compute tile
Hattink et al. A scalable architecture for cnn accelerators leveraging high-performance memories
Franzon et al. Hardware Acceleration of Sparse Cognitive Algorithms

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant