JP7171622B2 - Neural network accelerator with on-chip resident parameters - Google Patents

Neural network accelerator with on-chip resident parameters Download PDF

Info

Publication number
JP7171622B2
JP7171622B2 JP2019568100A JP2019568100A JP7171622B2 JP 7171622 B2 JP7171622 B2 JP 7171622B2 JP 2019568100 A JP2019568100 A JP 2019568100A JP 2019568100 A JP2019568100 A JP 2019568100A JP 7171622 B2 JP7171622 B2 JP 7171622B2
Authority
JP
Japan
Prior art keywords
memory bank
memory
parameters
neural network
tile
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
JP2019568100A
Other languages
Japanese (ja)
Other versions
JP2020532780A (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 JP2020532780A publication Critical patent/JP2020532780A/en
Priority to JP2022176493A priority Critical patent/JP7546640B2/en
Application granted granted Critical
Publication of JP7171622B2 publication Critical patent/JP7171622B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)

Description

関連出願の相互参照
本願は、2017年8月11日に出願された「Neural Network Accelerator with Parameters Resident on Chip(チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ)」の米国特許出願第62/544,171号の出願日の利益を米国特許法第119条(e)の下で主張するものであり、そのすべての記載内容を引用により本明細書に援用する。
CROSS-REFERENCE TO RELATED APPLICATIONS This application is related to U.S. Patent Application Serial No. 62/544, entitled "Neural Network Accelerator with Parameters Resident on Chip," filed Aug. 11, 2017. , 171, the entire disclosure of which is hereby incorporated by reference.

背景
本明細書は一般に、ディープニューラルネットワーク(「DNN」)層の計算のためのニューラルネットワーク(NN)計算タイルに関する。
BACKGROUND This specification generally relates to neural network (NN) computational tiles for computation of deep neural network (“DNN”) layers.

概要
一般に、この明細書に記載される主題の1つの革新的な局面は、ニューラルネットワークのパラメータをアクセラレータ上に格納することにおいて実施され得る。ニューラルネットワークは、そのワーキングセット、すなわち、全計算に必要なストレージの総量が実際に限られているという点で、通常の計算作業負荷とは異なる。大体、このワーキングセットは、通常、数十万~数十億というパラメータの数に対応している。このストレージ量は、既存のハードウェアストレージ技術と整合性がある。
Overview In general, one innovative aspect of the subject matter described in this specification can be implemented in storing neural network parameters on an accelerator. Neural networks differ from normal computational workloads in that their working set, ie the total amount of storage required for the entire computation, is really limited. Roughly, this working set typically corresponds to a number of parameters ranging from hundreds of thousands to billions. This amount of storage is consistent with existing hardware storage technology.

これらの事実にもかかわらず、現在のアクセラレータは、パラメータが通過するパラメータ用ローカルストレージを含んでいる。例えば、パラメータが永続してチップ上に常駐することはない。むしろ、パラメータは、新たな推論ごとに外部メモリから流れる。 Despite these facts, current accelerators include local storage for parameters through which parameters pass. For example, parameters do not permanently reside on the chip. Rather, parameters flow from external memory for each new inference.

したがって、外部メモリの帯域幅は、すべてのニューラルネットワーク(NN)アクセラレータの鍵となる制限である。この明細書において記載される実施の形態は、パラメータ用の一時的なローカルストレージをパラメータ用のオンチップストレージに置き換える。すなわち、実施の形態は、NNのすべてのパラメータをアクセラレータ内に常駐させたままにして、外部メモリから流さないようにする。 External memory bandwidth is therefore a key limitation of all neural network (NN) accelerators. The embodiments described herein replace temporary local storage for parameters with on-chip storage for parameters. That is, the embodiment keeps all parameters of the NN resident in the accelerator and not flushed from external memory.

パラメータをチップ上に格納することの利点として、NNアクセラレータの性能限界を克服できることと、性能限界が克服されるので、積和(「MAC」)演算子の数の増加を劇的に容易にすることと、外部メモリアクセスはローカルメモリアクセスよりも、通常、少なくとも一桁以上多くのエネルギーを必要とするので、低出力のニューラルネットワークアクセラレータを提供することとが含まれる。 The advantage of storing the parameters on-chip is that the performance limitations of NN accelerators can be overcome and, as performance limitations are overcome, it dramatically facilitates increasing the number of multiply-accumulate (“MAC”) operators. and providing a low power neural network accelerator, since external memory accesses typically require at least an order of magnitude more energy than local memory accesses.

特定の実施の形態では、アクセラレータは、計算ユニットを備える。計算ユニットは、入力活性化または出力活性化を格納するための第1メモリバンクと、計算を実行する際に用いられるニューラルネットワークパラメータを格納するための第2メモリバンクとを備え、第2メモリバンクは、十分な量のニューラルネットワークパラメータを計算ユニット上に格納し、所与のNNモデルおよびアーキテクチャについて、特定レベルよりも下の遅延および特定レベルよりも上のスループットを可能にするように構成され、計算ユニットは、さらに、第2のメモリバンクからパラメータを受け取って計算を実行する少なくとも1つのMAC演算子を含む少なくとも1つのセルと、少なくとも第1のメモリバンクとデータ通信する第1のトラバーサルユニットとを備え、第1のトラバーサルユニットは、第1のメモリバンクに制御信号を与えて、MAC演算子によってアクセス可能なデータバスに入力活性化を与えるように構成される。アクセラレータは、データアレイの少なくとも1つの要素に関連する1つまたは複数の計算を実行し、1つまたは複数の計算は、MAC演算子によって実行され、部分的に、データバスから受け取られる入力活性化と第2のメモリバンクから受け取られるパラメータとの乗算演算を含む。パラメータ用ストレージがすべてのニューラルネットワークパラメータを保持するのに十分である場合、アクセラレータの性能は、メモリ帯域幅によって決められない。その場合、サイクル毎にパラメータとともにすべてのMACを供給することが可能である。 In certain embodiments, the accelerator comprises a computing unit. The computation unit comprises a first memory bank for storing input or output activations and a second memory bank for storing neural network parameters used in performing the computation, the second memory bank is configured to store a sufficient amount of neural network parameters on the computational unit to allow delay below a certain level and throughput above a certain level for a given NN model and architecture; The calculation unit further includes at least one cell including at least one MAC operator for receiving parameters from the second memory bank and performing calculations, and a first traversal unit in data communication with the at least first memory bank. and the first traversal unit is configured to provide control signals to the first memory bank to provide input activation to the data bus accessible by the MAC operator. The accelerator performs one or more computations associated with at least one element of the data array, the one or more computations being performed by the MAC operator and in part based on input activations received from the data bus. and a parameter received from the second memory bank. If the parameter storage is sufficient to hold all neural network parameters, the performance of the accelerator is not determined by memory bandwidth. In that case, it is possible to supply all MACs with parameters every cycle.

この明細書に記載される主題の別の革新的な局面は、テンソル計算を加速するための、コンピュータにより実現される方法で実施され得る。コンピュータにより実現される方法は、第1メモリバンクが制御信号を受け取ったことに応答して、第1メモリバンクによって第1の入力活性化を送るステップを含み、第1の入力活性化は、データバスによって送られ、方法は、さらに、少なくとも1つのMAC演算子によって、計算を実行する際に用いられるニューラルネットワークパラメータを格納するための第2メモリバンクから1つまたは複数のパラメータを受け取るステップを含み、第2メモリバンクは、十分な量のニューラルネットワークパラメータを計算ユニット上に格納し、所与のNNモデルおよびアーキテクチャについて、特定の閾値よりも下の遅延および特定の閾値よりも上のスループットを可能にし、方法は、さらに、MAC演算子によって、データアレイの少なくとも1つの要素に関連する1つまたは複数の計算を実行するステップを含み、1つまたは複数の計算は、部分的に、データバスからアクセスされる少なくとも第1の入力活性化と第2メモリバンクから受け取られる少なくとも1つのパラメータとの乗算演算を含む。 Another innovative aspect of the subject matter described in this specification can be implemented in a computer-implemented method for accelerating tensor computation. The computer-implemented method includes sending a first input activation by the first memory bank in response to the first memory bank receiving a control signal, the first input activation being the data sent by the bus, the method further comprising receiving one or more parameters from a second memory bank for storing neural network parameters used in performing the computation by the at least one MAC operator. , a second memory bank to store a sufficient amount of neural network parameters on the computational unit to allow latency below a certain threshold and throughput above a certain threshold for a given NN model and architecture. and the method further includes performing, by the MAC operator, one or more computations associated with at least one element of the data array, the one or more computations being performed, in part, from the data bus. A multiplication operation of at least a first input activation accessed and at least one parameter received from a second memory bank.

この明細書に記載される主題の別の革新的な局面は、計算を加速するための方法において実施され得る。この方法は、実行前に、ニューラルネットワーク重みパラメータをニューラルネットワークアクセラレータにロードするステップと、実行時に、実質的にアクセラレータ外部のニューラルネットワーク重みパラメータにアクセスしないで、アクセラレータへの入力を処理するステップとを含む。方法は、ニューラルネットワーク重みパラメータの数が多すぎて1つのアクセラレータダイ上に収まらない場合、ニューラルネットワーク重みパラメータを複数の密に繋がれたアクセラレータダイにロードするステップと、密に繋がれたアクセラレータダイ外部のニューラルネットワーク重みパラメータに実質的にアクセスしないで、アクセラレータダイへの入力を処理するステップとをさらに含み得る。 Another innovative aspect of the subject matter described in this specification can be implemented in a method for accelerating computation. The method comprises the steps of loading neural network weight parameters into a neural network accelerator prior to execution, and processing inputs to the accelerator at runtime substantially without accessing the neural network weight parameters external to the accelerator. include. The method comprises the steps of: loading the neural network weight parameters onto multiple tightly coupled accelerator dies if the number of neural network weight parameters is too large to fit on one accelerator die; and processing the input to the accelerator die without substantial access to external neural network weight parameters.

この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の実施の形態において実現することができる。レジスタを用いてメモリアドレス値を追跡することは、プログラムが、深くネスト化されたループを1つの命令で反復することを可能にする。単一の計算タイルにおいて幅狭メモリユニットおよび幅広メモリユニットからアクセス可能なテンソルは、レジスタから検索されるメモリアドレス値に基づいてトラバースされる。メモリアドレス値はテンソルの要素に対応する。テンソル計算は、深いループネストの実行に基づいて個々の計算タイルで生ずる。計算は複数のタイルにわたって分散できる。計算効率は、いくつかの計算タイルにわたって多層ニューラルネットワークのテンソル計算を分散することに基づいて向上および加速される。テンソルをトラバースし、テンソル計算を少ない命令数で実行できる。 The subject matter described in this specification can be implemented in particular embodiments to achieve one or more of the following advantages. Using registers to keep track of memory address values allows a program to iterate through deeply nested loops in a single instruction. Tensors accessible from narrow memory units and wide memory units in a single computational tile are traversed based on memory address values retrieved from registers. Memory address values correspond to elements of the tensor. Tensor computation occurs in individual computational tiles based on deep loop nesting execution. Computation can be distributed across multiple tiles. Computational efficiency is improved and accelerated based on distributing the multi-layer neural network's tensor computations over several computational tiles. You can traverse tensors and perform tensor computations with fewer instructions.

この明細書において記載される実施の形態は、ニューラルネットワーク(NN:Neural Network)アクセラレータの動作および設計に影響を与える。実施の形態は、ニューラルネットワークアクセラレータ設計の顕著な限定の1つである、低い遅延と高いスループットとの組合せに取り組む。パラメータをチップ上に常駐させることによって、高いスループットならびに特定のNNモデルおよびアーキテクチャを考慮して、遅延が劇的に低減される。アクセラレータは、高いメモリ帯域幅を必要とせず、エネルギーは下がる。 The embodiments described herein affect the operation and design of Neural Network (NN) accelerators. Embodiments address one of the significant limitations of neural network accelerator design: low delay combined with high throughput. By having the parameters reside on-chip, the delay is dramatically reduced given the high throughput and specific NN models and architectures. Accelerators do not require high memory bandwidth and are energy efficient.

この明細書において記載されるようにタイル配置することにより、コンパイル方式局所参照性を提供する。例えば、全結合モデルをSRAMの隣に置くことによって、キャッシュモデルと比べて内部帯域幅が大きくなる。この明細書において記載される実施の形態は、畳み込みニューラルネットワークアクセラレータよりも高速で動作する。特定の実施の形態は、さらに多くの演算子を有する。演算子を供給するために、アクセラレータは、より多くの内部帯域幅が必要である。これに対処するためには、アーキテクチャがメモリを分散させて、パラメータをアクセラレータ上に集める必要がある。 Tiling as described in this specification provides compiled-wise local referentiality. For example, placing a fully coupled model next to SRAM results in greater internal bandwidth compared to a cached model. The embodiments described herein operate faster than convolutional neural network accelerators. Certain embodiments have even more operators. To feed the operators, the accelerator needs more internal bandwidth. To deal with this, the architecture needs to distribute the memory and collect the parameters on the accelerator.

この明細書において記載される主題は、他の利点を実現するように特定の実施の形態において実現することもできる。例えば、幅が狭い低帯域幅メモリを、高帯域幅の幅広メモリと結合するメモリ階層を採用することによって、非常に異なる次元のDNN層および局所参照性に対してMAC演算子の高い利用率を達成することができる。幅が狭い低帯域幅メモリによって、多次元アレイを任意の順番でトラバースするためのアドレス指定が柔軟にできるようになる。 The subject matter described in this specification may also be implemented in particular embodiments to achieve other advantages. For example, by employing a memory hierarchy that combines narrow low-bandwidth memories with high-bandwidth wide memories, high utilization of MAC operators for very different dimensions of DNN layers and local referentiality can be achieved. can be achieved. A narrow, low-bandwidth memory allows addressing flexibility for traversing a multi-dimensional array in any order.

この局面および他の局面の他の実現例は、計算機記憶装置上でエンコードされる、方法のアクションを実行するように構成される、対応のシステム、装置およびコンピュータプログラムを含む。1つまたは複数のコンピュータのシステムは、システムにインストールされ、動作でシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せによってそのように構成することができる。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されたとき、装置にアクションを実行させる命令を有することによって、そのように構成することができる。 Other implementations of this and other aspects include corresponding systems, apparatus and computer programs encoded on a computer storage device and configured to perform the actions of the method. A system of one or more computers can be so configured by software, firmware, hardware, or a combination thereof that is installed on the system and that in operation causes the system to perform actions. One or more computer programs may be so configured by having instructions that, when executed by a data processing apparatus, cause the apparatus to perform actions.

この明細書に記載される主題の1つまたは複数の実現例の詳細は、添付の図面および以下の記載において述べられる。主題の他の潜在的な特徴、局面および利点は、記載、図面および特許請求の範囲から明らかになる。 The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other potential features, aspects and advantages of the subject matter will become apparent from the description, drawings and claims.

例示の計算システムのブロック図である。1 is a block diagram of an exemplary computing system; FIG. 例示的なニューラルネットワーク計算タイルを示す。4 shows an exemplary neural network computational tile; 例示的なテンソルトラバーサルユニット(TTU)構造を示す。2 shows an exemplary tensor traversal unit (TTU) structure. 1つまたは複数の積和(MAC)演算子に入力活性化を与える幅狭メモリユニットを含む例示的アーキテクチャを示す。1 illustrates an exemplary architecture including narrow memory units providing input activations for one or more multiply-accumulate (MAC) operators. 図2および図4の幅狭メモリユニットに出力活性化を与える出力バスを含む例示的なアーキテクチャを示す。5 illustrates an exemplary architecture including an output bus providing output activation to the narrow memory units of FIGS. 2 and 4; FIG. 図2のニューラルネットワーク計算タイルを用いてテンソル計算を実行するためのプロセスの例示的なフローチャートである。FIG. 3 is an exemplary flow chart of a process for performing tensor computations using the neural network computational tile of FIG. 2; FIG. 計算システムの別の実施の形態である。4 is another embodiment of a computing system; ニューラルネットワーク計算タイルの別の実施の形態である。FIG. 11 is another embodiment of a neural network computational tile; FIG. ニューラルネットワーク重みパラメータをニューラルネットワークアクセラレータにロードすることによって計算を加速させるためのプロセスの例示的なフローチャートである。FIG. 4 is an exemplary flowchart of a process for accelerating computation by loading neural network weight parameters into a neural network accelerator; FIG.

さまざまな図面における同様の参照番号および指定は同様の要素を示す。
詳細な説明
この明細書において記載される主題は、計算を加速するための方法に関する。この方法は、実行前に、ニューラルネットワーク重みパラメータをニューラルネットワークアクセラレータにロードするステップと、実行時に、実質的にアクセラレータ外部のニューラルネットワーク重みパラメータにアクセスしないで、アクセラレータへの入力を処理するステップとを含む。方法は、ニューラルネットワーク重みパラメータの数が多すぎて1つのアクセラレータダイ上に収まらない場合、ニューラルネットワーク重みパラメータを複数の密に繋がれたアクセラレータダイにロードするステップと、密に繋がれたアクセラレータダイ外部のニューラルネットワーク重みパラメータに実質的にアクセスしないで、アクセラレータダイへの入力を処理するステップとをさらに含み得る。
Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION The subject matter described herein relates to methods for accelerating computation. The method comprises the steps of loading neural network weight parameters into a neural network accelerator prior to execution, and processing inputs to the accelerator at runtime substantially without accessing the neural network weight parameters external to the accelerator. include. The method comprises the steps of: loading the neural network weight parameters onto multiple tightly coupled accelerator dies if the number of neural network weight parameters is too large to fit on one accelerator die; and processing the input to the accelerator die without substantial access to external neural network weight parameters.

また、本明細書に記載の主題は、ニューラルネットワーク層の機械学習推論作業負荷を加速するように構成された複数の計算ユニットを含むハードウェア計算システムに関する。ハードウェア計算システムの各計算ユニットは自己完結型であり、多層ニューラルネットワークの所与の層によって必要とされる計算を独立して実行することができる。この明細書は、全体的に、所与のNNモデルおよびアーキテクチャについて、特定レベルよりも下の遅延および特定レベルよりも上のスループットを可能にするための、チップ上に常駐するパラメータを用いたディープニューラルネットワーク(「DNN:Deep Neural Network」)層の計算のためのニューラルネットワーク(NN)計算タイルに関する。 The subject matter described herein also relates to a hardware computing system including a plurality of computing units configured to accelerate machine learning inference workloads of neural network layers. Each computational unit of the hardware computing system is self-contained and can independently perform the computations required by a given layer of the multilayer neural network. Overall, this document describes deep computation using on-chip resident parameters to enable delay below a certain level and throughput above a certain level for a given NN model and architecture. A neural network (NN) computational tile for computation of neural network (“Deep Neural Network”) layers.

複数の層を有するニューラルネットワークを用いて推論を計算することができる。例えば、入力が与えられると、ニューラルネットワークはその入力に対する推論を計算することができる。ニューラルネットワークは、ニューラルネットワークの各層を通して入力を処理することによって、この推論を計算する。特に、ニューラルネットワークの各層は、それぞれの重みのセットを有する。各層は入力を受け取り、その層に対する重みのセットに従って入力を処理して出力を生成する。 Inference can be computed using a neural network with multiple layers. For example, given an input, a neural network can compute an inference for that input. A neural network computes this inference by processing the input through each layer of the neural network. Specifically, each layer of the neural network has its own set of weights. Each layer receives an input and processes the input according to the set of weights for that layer to produce an output.

したがって、受け取った入力から推論を計算するために、ニューラルネットワークは入力を受け取り、推論を生成するために各ニューラルネットワーク層を通してそれを処理し、1つのニューラルネットワーク層からの出力が次のニューラルネットワーク層への入力として与えられる。ニューラルネットワーク層に関するデータ入力または出力、例えば、ニューラルネットワークへの入力、またはシーケンス内におけるその層の下の層の出力は、その層の活性化と呼ぶことができる。 Thus, to compute inferences from the received inputs, a neural network receives an input, processes it through each neural network layer to produce inferences, and outputs from one neural network layer to the next neural network layer. given as an input to A data input or output for a neural network layer, eg, an input to the neural network or an output of a layer below that layer in the sequence, can be referred to as an activation of that layer.

いくつかの実現例では、ニューラルネットワークの層はシーケンスで配置される。他の実現例では、層は有向グラフで配置される。つまり、任意の特定の層が複数の入力、複数の出力、またはそれらの両方を受け取ることができる。ニューラルネットワークの層は、ある層の出力を前の層への入力として送り返すことができるように構成することもできる。 In some implementations, the layers of the neural network are arranged in sequence. In other implementations, the layers are arranged in a directed graph. That is, any particular layer can receive multiple inputs, multiple outputs, or both. Layers of a neural network can also be configured so that the output of one layer can be sent back as an input to the previous layer.

本明細書に記載のハードウェア計算システムは、テンソル計算を複数の計算タイルにわたって分散させることによってニューラルネットワーク層の計算を実行することができる。ニューラルネットワーク層内で実行される計算プロセスは、入力活性化を含む入力テンソルと重みを含むパラメータテンソルとの乗算を含み得る。計算は、1つまたは複数のサイクルで入力活性化を重みと乗算すること、および多くのサイクルにわたって積の累積を実行することを含む。 The hardware computational system described herein can perform neural network layer computations by distributing tensor computations across multiple computational tiles. A computational process performed within a neural network layer may involve multiplication of an input tensor containing input activations and a parameter tensor containing weights. The computation involves multiplying the input activations by the weights in one or more cycles and performing product accumulation over many cycles.

テンソルは多次元幾何学的オブジェクトであり、例示的な多次元幾何学的オブジェクトは行列およびデータアレイを含む。一般に、処理は、N次元テンソルをトラバースするために、ネスト化されたループを処理することによって、テンソル計算を実行するよう、計算タイルによって実行される。1つの例示的な計算プロセスでは、各ループは、N次元テンソルの特定の次元をトラバースすることを担当し得る。所与のテンソル構成体について、計算タイルは、特定のテンソルに関連する複数の内積計算を実行するためにそのテンソルの要素へのアクセスを必要とし得る。幅狭メモリ構造によって与えられる入力活性化が、幅広メモリ構造によって与えられるパラメータまたは重みで乗算されると、計算が行われる。テンソルはメモリに格納されるので、テンソルインデックスのセットはメモリアドレスのセットへの変換を必要とし得る。一般に、計算タイルのテンソルトラバーサルユニットは、テンソルに関連する各次元のインデックスと、インデックス要素がトラバースされて計算が実行される順序とを与える制御操作を実行する。乗算結果が出力バスに書き込まれてメモリに格納されると、テンソル計算は終了する。 Tensors are multidimensional geometric objects, and exemplary multidimensional geometric objects include matrices and data arrays. In general, processing is performed by computation tiles to perform tensor computations by processing nested loops to traverse an N-dimensional tensor. In one exemplary computational process, each loop may be responsible for traversing a particular dimension of an N-dimensional tensor. For a given tensor construct, a computational tile may need access to the elements of that tensor in order to perform multiple dot product computations associated with a particular tensor. A computation is performed when the input activations provided by the narrow memory structures are multiplied by the parameters or weights provided by the wide memory structures. Since tensors are stored in memory, a set of tensor indices may require translation into a set of memory addresses. In general, the tensor traversal unit of a computational tile performs control operations that give the index of each dimension associated with the tensor and the order in which index elements are traversed and computations are performed. The tensor computation ends when the multiplication result is written to the output bus and stored in memory.

図1は、ディープニューラルネットワーク(DNN)に関連するテンソル計算を加速するための例示的な計算システム100のブロック図を示す。システム100は、一般に、コントローラ102、ホストインターフェース108、入出力(I/O)リンク110、第1のタイルセット112および第2のタイルセット114を含む複数のタイル、分類器部分116、ならびにバスマップ118において識別されるデータバス(明確にするために示されているがシステム100には含まれていない)を含む。コントローラ102は一般に、データメモリ104、命令メモリ106、およびコンピュータ可読記憶媒体にエンコードされた1つまたは複数の命令を実行するように構成された少なくとも1つのプロセッサを含む。命令メモリ106は、コントローラ102の1つまたは複数のプロセッサによって実行可能な1つまたは複数の機械可読命令を格納することができる。データメモリ104は、システム100内で発生する計算に関連する様々なデータを格納し、その後それらのデータにアクセスするための、様々なデータ記憶媒体のうちのいずれでもよい。 FIG. 1 shows a block diagram of an exemplary computational system 100 for accelerating tensor computations associated with deep neural networks (DNNs). System 100 generally includes a controller 102, a host interface 108, an input/output (I/O) link 110, a plurality of tiles including a first tileset 112 and a second tileset 114, a classifier portion 116, and a bus map. It includes a data bus identified at 118 (shown for clarity but not included in system 100). Controller 102 generally includes data memory 104, instruction memory 106, and at least one processor configured to execute one or more instructions encoded on a computer-readable storage medium. Instruction memory 106 may store one or more machine-readable instructions executable by one or more processors of controller 102 . Data memory 104 may be any of a variety of data storage media for storing and subsequently accessing various data related to computations occurring within system 100 .

コントローラ102は、命令メモリ106に格納されている命令を含む、システム100内のテンソル計算に関係する1つまたは複数の命令を実行するように構成されている。いくつかの実現例では、データメモリ104および命令メモリ106は揮発性メモリユニット(単数または複数)である。他のいくつかの実現例では、データメモリ104および命令メモリ106は不揮発性メモリユニット(単数または複数)である。データメモリ104および命令メモリ106はまた、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、もしくはテープ装置、フラッシュメモリもしくは他の類似の固体メモリ装置、またはストレージエリアネットワークもしくは他の構成の装置を含む装置のアレイなど、別の形態のコンピュータ可読媒体であってもよい。様々な実現例では、コントローラ102は、コアマネージャ102として参照されるかまたはそのように呼ばれ得る。 Controller 102 is configured to execute one or more instructions related to tensor computation within system 100 , including instructions stored in instruction memory 106 . In some implementations, data memory 104 and instruction memory 106 are volatile memory unit(s). In some other implementations, data memory 104 and instruction memory 106 are non-volatile memory unit(s). Data memory 104 and instruction memory 106 may also include floppy disk drives, hard disk drives, optical disk drives, or tape drives, flash memory or other similar solid-state memory devices, or devices in storage area networks or other configurations. It may also be another form of computer readable medium, such as an array of devices comprising. In various implementations, controller 102 may be referred to or called as core manager 102 .

図示のように、ホストインターフェース108は、I/Oリンク110、コントローラ102、および分類器部分116に結合されている。ホストインターフェース108は、I/Oリンク110から命令およびデータパラメータを受け取り、命令およびパラメータをコントローラ102に与える。一般に、命令は命令バス124(後述)を介してシステム100内の1つまたは複数のデバイスに与えることができ、パラメータはリングバス128(後述)を介してシステム100内の1つまたは複数のデバイスに与えることができる。いくつかの実現例では、命令は初期時にホストインターフェース118からコントローラ102によって受け取られ、後のコントローラ102による実行のために命令メモリ106に格納される。 As shown, host interface 108 is coupled to I/O link 110 , controller 102 , and classifier portion 116 . Host interface 108 receives instructions and data parameters from I/O link 110 and provides instructions and parameters to controller 102 . In general, instructions may be provided to one or more devices within system 100 via command bus 124 (described below), and parameters may be provided to one or more devices within system 100 via ring bus 128 (described below). can be given to In some implementations, instructions are initially received by controller 102 from host interface 118 and stored in instruction memory 106 for subsequent execution by controller 102 .

分類器部分116は、同様に、コントローラ102および第2のタイルセット114のタイル7に結合されている。いくつかの実現例では、分類器部分116はシステム100内の別個のタイルとして実装される。代替の実現例では、分類器部分116は、コントローラ102のサブ回路またはサブデバイスとしてコントローラ102内に配置されるかまたは位置する。分類器部分116は一般に、全結合層の出力として受け取られる累積された活性化前値に対して1つまたは複数の関数を実行するように構成される。全結合層は、タイルセット112および114内のタイルにわたって分割されてもよい。したがって、各タイルは、タイルのメモリユニットに格納され得る活性化前値(すなわち線形出力)のサブセットを生成するように構成される。分類結果バス120は、分類器部分116からコントローラ102へのデータ経路を与える。関数後値(すなわち結果)を含むデータは、分類結果バス120を介して分類器部分116からコントローラ102に与えられる。 Classifier portion 116 is similarly coupled to controller 102 and tile 7 of second tileset 114 . In some implementations, classifier portion 116 is implemented as a separate tile within system 100 . In alternative implementations, classifier portion 116 is located or located within controller 102 as a sub-circuit or sub-device of controller 102 . Classifier portion 116 is generally configured to perform one or more functions on the accumulated pre-activation values received as the output of the fully connected layer. A fully connected layer may be split across the tiles in tilesets 112 and 114 . Thus, each tile is configured to generate a subset of pre-activation values (ie, linear outputs) that can be stored in the tile's memory unit. Classification result bus 120 provides a data path from classifier portion 116 to controller 102 . Data, including post-function values (ie, results), are provided from classifier portion 116 to controller 102 via classification result bus 120 .

バスマップ118は、第1のタイルセット112および第2のタイルセット114のタイル間に1つまたは複数の相互接続されたデータ通信経路を与えるデータバスを示す。バスマップ118は、図1に示すように、分類結果バス120、CSR/マスターバス122、命令バス124、メッシュバス126、およびリングバス128を識別するための使用符号の説明を与える。一般に、タイルはシステム100のアクセラレータアーキテクチャ内のコアコンポーネントであり、システム内で発生するテンソル計算の焦点である。各タイルは、システム内の他のタイルと相関関係にある個々の計算ユニットであり、多層ニューラルネットワークの1つまたは複数の層にわたる計算を加速することができる。タイルセット112、114内のタイルは所与の命令に関連するテンソル計算の実行を共有することができるが、個々の計算ユニットは、タイルセット112、114内の他の対応するタイルに対して独立してテンソル計算のサブセットを実行するように構成される自己完結型計算コンポーネントである。 Bus map 118 indicates data buses that provide one or more interconnected data communication paths between tiles of first tileset 112 and second tileset 114 . Bus map 118 provides a description of the codes used to identify classification result bus 120, CSR/master bus 122, command bus 124, mesh bus 126, and ring bus 128, as shown in FIG. In general, tiles are a core component within the accelerator architecture of system 100 and are the focus of tensor computations occurring within the system. Each tile is an individual computational unit that correlates with other tiles in the system and can accelerate computation across one or more layers of a multilayer neural network. Although tiles within tilesets 112, 114 may share execution of tensor computations associated with a given instruction, individual computational units are independent with respect to other corresponding tiles within tilesets 112, 114. It is a self-contained computational component configured to perform a subset of tensor computations as

CSRバス122は、プログラム構成を設定し、1つまたは複数のタイルに関連する状態レジスタを読み出す1つまたは複数の命令をコントローラ102が送ることを可能にする単一マスター複数スレーブバスである。CSRバス122は、1つのマスターバスセグメントと複数のスレーブバスセグメントとを有する単一のデイジーチェーン構成で接続することができる。図1に示すように、CSRバス122は、タイルセット112、114のタイルおよびコントローラ102をリング状でホストインターフェース110に接続するバスデータ経路を介して結合する通信を与える。いくつかの実現例では、ホストインターフェース110は、CSRバスリングの単一のマスターであり、CSRバスアドレス空間全体は、ホストインターフェース110内のメモリ空間にメモリマップされる。 CSR bus 122 is a single-master, multiple-slave bus that allows controller 102 to send one or more instructions to set program configurations and read status registers associated with one or more tiles. The CSR bus 122 may be connected in a single daisy chain configuration with one master bus segment and multiple slave bus segments. As shown in FIG. 1, CSR bus 122 provides communication coupling the tiles of tilesets 112, 114 and controller 102 via a bus data path that connects to host interface 110 in a ring. In some implementations, host interface 110 is the single master of the CSR bus ring and the entire CSR bus address space is memory mapped into memory space within host interface 110 .

CSRバス122は、例えば、コントローラ102が命令メモリ106から命令をフェッチすることを開始することを可能にするようにコントローラ102内のメモリバッファポインタをプログラミングすること、1つまたは複数の計算の間静的なままである様々なタイル設定(例:多項式近似計算のための係数表)を更新/プログラミングすること、および/または分類器部分116に対してファームウェアをロード/再ロードすることを含む1つまたは複数の動作を実行するためにホストインターフェース110によって使用され得る。一例では、ファームウェアの再ロードは、線形出力(すなわち、活性化前値)に適用されるべき新しい関数を含み得る。したがって、CSRバス122へのアクセスを有するすべてのスレーブは、そのスレーブに結び付けられてそれを識別する別個のノード識別子(ノードID)を有することになる。ノードIDは命令アドレスの一部であり、CSRパケットがスレーブにアドレス指定されているかどうかを判断するためにCSRスレーブ(すなわち、コントローラ102、タイル112、114および分類器116)によって使用、検査、または他の方法で調べられる。 CSR bus 122 may, for example, program a memory buffer pointer within controller 102 to allow controller 102 to begin fetching instructions from instruction memory 106, be quiet during one or more computations. updating/programming various tile settings (e.g., coefficient table for polynomial approximation calculations) that remain static and/or loading/reloading firmware for the classifier portion 116 or may be used by the host interface 110 to perform operations. In one example, a firmware reload may include a new function to be applied to the linear output (ie pre-activation value). Thus, every slave that has access to the CSR bus 122 will have a distinct node identifier (node ID) attached to it to identify it. The node ID is part of the instruction address and is used, examined, or used by the CSR slave (i.e., controller 102, tiles 112, 114 and classifier 116) to determine if the CSR packet is addressed to the slave. can be examined in other ways.

いくつかの実現例では、1つまたは複数の命令をホストインターフェース102によってコントローラ102を介して送ることができる。命令は、例えば、最初の7ビットが、命令を受け取り実行することになっている命令アドレス/宛先を示すヘッダ情報を含む、32ビット幅であり得る。ヘッダの最初の7ビットは、特定のノードIDを表すデータパラメータを含み得る。したがって、CSRバスリング上のスレーブ(例えば各タイル)は、命令のヘッダを検査して、マスター(ホストインターフェース110)による要求がヘッダを検査するタイルにアドレス指定されているかどうかを判断することができる。宛先が検査タイルであることをヘッダのノードIDが示さない場合、検査タイルは、入力CSR命令パケットを、次のタイルによる検査のために、次のタイルに接続されるCSRバス入力にコピーする。 In some implementations, one or more instructions may be sent by host interface 102 through controller 102 . Instructions may be, for example, 32 bits wide, with the first 7 bits containing header information indicating the instruction address/destination where the instruction is to be received and executed. The first 7 bits of the header may contain a data parameter representing a particular node ID. Thus, a slave (e.g. each tile) on the CSR bus ring can inspect the header of the instruction to determine if a request by the master (host interface 110) is addressed to the tile that inspects the header. . If the node ID in the header does not indicate that the destination is a test tile, the test tile copies the incoming CSR command packet to the CSR bus input connected to the next tile for inspection by the next tile.

命令バス124は、コントローラ102から始まり、CSRバス122と同様に、タイルセット112、114内のタイルをリング状にコントローラ102に接続し戻すバスデータ経路を介して結合する通信を与える。一実現例では、コントローラ102は、命令バス124を介して1つまたは複数の命令をブロードキャストする。コントローラ102によってブロードキャストされる命令は、CSRバス122を介して与えられる命令とは異なり得る。しかしながら、バス124を介して受け取られる命令をタイルが受け取りおよび/または消費もしくは実行する態様は、CSRバス122を介して受け取られる命令を実行するためのプロセスと同様であり得る。 Command bus 124 provides communication originating from controller 102 and, like CSR bus 122, coupling the tiles in tilesets 112, 114 in a ring and back to controller 102 via a bus data path. In one implementation, controller 102 broadcasts one or more instructions over instruction bus 124 . The instructions broadcast by controller 102 may differ from the instructions provided via CSR bus 122 . However, the manner in which tiles receive and/or consume or execute instructions received via bus 124 may be similar to the process for executing instructions received via CSR bus 122 .

一例では、命令のヘッダ(すなわち、ビットマップ)は、受信タイルに対して、その受信タイルが、その命令に関連するビットマップに基づいて特定の命令を消費する必要があることを示す。ビットマップは、ビットに関して定義された特定の幅を有し得る。命令は通常、命令のパラメータに基づいて1つのタイルから次のタイルへ転送される。一実現例では、命令バス124の幅は、命令のサイズ/幅よりも小さくなるように構成され得る。したがって、そのような構成では、命令の送信は数サイクルにわたって行われ、命令バス124のバスストップは、そのタイルに関連する適切なターゲット命令バッファにそのタイルで受け取られた命令を置くためのデコーダを有する。 In one example, an instruction's header (ie, bitmap) indicates to a receiving tile that the receiving tile should consume a particular instruction based on the bitmap associated with that instruction. A bitmap may have a specific width defined in terms of bits. Instructions are typically transferred from one tile to the next based on the parameters of the instruction. In one implementation, the width of instruction bus 124 may be configured to be smaller than the size/width of an instruction. Thus, in such a configuration, instruction transmission occurs over several cycles, and a bus stop on instruction bus 124 directs the decoder to place the instruction received on that tile into the appropriate target instruction buffer associated with that tile. have.

以下でさらに説明されるように、タイルセット112、114内のタイルは一般に、2つの広いカテゴリの命令をサポートするように構成される。2つの広いカテゴリは命令タイプとも呼ばれる。命令タイプは、テンソル演算(TensorOp)命令およびダイレクトメモリアクセス(DMAOp)命令を含む。いくつかの実現例では、DMAOp命令は、同時であることを許される1つまたは複数の特殊化を有する。1つまたは複数の特殊化は、DMAOp命令サブタイプまたはオペコードと呼ばれることがある。場合によっては、すべての固有のおよび/または有効なDMAOp命令タイプ/サブタイプタプルは、特定のタイル内に別々の命令バッファを有することになる。 Tiles in tilesets 112, 114 are generally configured to support two broad categories of instructions, as described further below. The two broad categories are also called instruction types. Instruction types include tensor operation (TensorOp) instructions and direct memory access (DMAOp) instructions. In some implementations, a DMAOp instruction has one or more specializations that are allowed to be concurrent. One or more specializations are sometimes referred to as DMAOp instruction subtypes or opcodes. In some cases, all unique and/or valid DMAOp instruction type/subtype tuples will have separate instruction buffers within a particular tile.

タイル112、114の特定のタイルにおいて、命令バス124に関連するバスストップは、ヘッダビットマップを調べて命令タイプ/サブタイプを判断する。命令は、タイルによって受け取られ、続いて、タイルによる命令の実行の前に、タイルの命令バッファに書き込まれてもよい。命令が書き込まれるタイルの命令バッファは、命令のタイプおよびサブタイプインジケータ/フィールドによって判断され得る。命令バッファは、1つまたは複数の関連する命令の消費を優先させる先入れ先出し(FIFO)制御方式を含み得る。したがって、このFIFO制御方式の下では、同じタイプ/サブタイプの命令は、命令が命令バスに到着した順序で常に実行されることになる。 In a particular tile of tiles 112, 114, the bus stop associated with instruction bus 124 examines the header bitmap to determine the instruction type/subtype. Instructions may be received by a tile and subsequently written to the tile's instruction buffer prior to execution of the instruction by the tile. The instruction buffer of the tile to which the instruction is written may be determined by the type and subtype indicators/fields of the instruction. The instruction buffer may include a first-in first-out (FIFO) control scheme that prioritizes consumption of one or more related instructions. Therefore, under this FIFO control scheme, instructions of the same type/subtype will always be executed in the order in which they arrived on the instruction bus.

タイル内の異なる命令バッファは、TensorOp命令バッファおよびDMAOp命令バッファである。上記のように、命令タイプはTensorOp命令とDMAOp命令とを含む。DMAOp命令に関して、命令サブタイプ(「書き込み先」バッファ位置を示す)には以下が含まれる:1)メッシュインバウンド命令バッファ;2)メッシュアウトバウンド命令バッファ;3)幅狭‐幅広DMA命令バッファ;4)幅広‐幅狭DMA命令バッファ;および5)リングバスDMA命令バッファ。これらのバッファ位置は、図2を参照して以下により詳細に説明される。本明細書を通して幅広指定および幅狭指定が使用されており、一般に、1つまたは複数のメモリユニットのおおよその幅のサイズ(ビット/バイト)を指す。本明細書で用いられるとき、「幅狭」は、各々が16ビット未満のサイズまたは幅を有する1つまたは複数のメモリユニットを指し得、「幅広」は、各々が16ビットと64ビットとの間のサイズまたは幅を有する1つまたは複数のメモリユニットを指し得る。 The different instruction buffers within a tile are the TensorOp instruction buffer and the DMAOp instruction buffer. As noted above, instruction types include TensorOp instructions and DMAOp instructions. For DMAOp instructions, the instruction subtypes (indicating the "write to" buffer location) include: 1) Mesh Inbound Instruction Buffer; 2) Mesh Outbound Instruction Buffer; 3) Narrow-Wide DMA Instruction Buffer; Wide-Narrow DMA Instruction Buffer; and 5) Ring Bus DMA Instruction Buffer. These buffer locations are described in more detail below with reference to FIG. The wide and narrow designations are used throughout this specification and generally refer to the approximate width size (bits/bytes) of one or more memory units. As used herein, "narrow" may refer to one or more memory units each having a size or width of less than 16 bits; may refer to one or more memory units having a size or width in between.

メッシュバス126は、CSRバス122、命令バス124、およびリングバス128(後述)とは異なるデータ通信経路を与える。図1に示すように、メッシュバス126は、XおよびY次元の両方において各タイルをその対応する近隣タイルに結合または接続する通信経路を与える。様々な実現例では、メッシュバス126を用いて、近接するタイルにおける1つまたは複数の幅狭メモリユニット間で入力活性化量を移送することができる。示されるように、メッシュバス126は、入力活性化データを近接していないタイルに直接転送することを可能にしない。 Mesh bus 126 provides a different data communication path than CSR bus 122, command bus 124, and ring bus 128 (discussed below). As shown in FIG. 1, mesh bus 126 provides communication paths coupling or connecting each tile to its corresponding neighboring tiles in both the X and Y dimensions. In various implementations, mesh bus 126 may be used to transport input activation quantities between one or more narrow memory units in adjacent tiles. As shown, mesh bus 126 does not allow input activation data to be transferred directly to non-adjacent tiles.

様々な実現例において、メッシュバス126およびメッシュバス126を介して接続される様々なタイルは以下の構成を有してもよい。メッシュの4つのコーナータイルには、2つのアウトバウンドポートおよび2つのインバウンドポートがある。メッシュの4つのエッジタイルには、3つのインバウンドポートおよび3つのアウトバウンドポートがある。すべての非エッジ、非コーナータイルには、4つのインバウンドポートおよび4つのアウトバウンドポートがある。一般に、N×Nタイルレイアウトの例では、エッジタイルはわずか3つの近隣タイルを有するタイルであり、コーナータイルは2つの近隣タイルを有するタイルである。メッシュバス126を介したデータフロー方法論に関して、一般に、特定のタイルに関してメッシュバス126を介して到着するすべての入力活性化は、そのタイルの1つまたは複数の幅狭メモリユニットにコミットされなければならない。さらに、4つより少ないインバウンドポートを有するタイル構成の場合、DMAOp命令は、存在しない入力ポート上でデータを待つ代わりに、タイルの幅狭メモリ内の位置にゼロ値を書き込んでもよい。同様に、4つよりも少ないアウトバウンドポートを有するタイル構成の場合、DMAOp命令は、存在しないポートに対する転送に関連する幅狭メモリ読出およびポート書込を実行しない。 In various implementations, the mesh bus 126 and the various tiles connected via the mesh bus 126 may have the following configurations. The four corner tiles of the mesh have two outbound ports and two inbound ports. The four edge tiles of the mesh have 3 inbound ports and 3 outbound ports. All non-edge, non-corner tiles have 4 inbound ports and 4 outbound ports. Generally, in the example N×N tile layout, edge tiles are tiles with no more than 3 neighbors, and corner tiles are tiles with 2 neighbors. Regarding the dataflow methodology over the mesh bus 126, in general, all input activations arriving over the mesh bus 126 for a particular tile must be committed to one or more narrow memory units for that tile. . Additionally, for tile configurations with less than four inbound ports, a DMAOp instruction may write a zero value to a location in the tile's narrow memory instead of waiting for data on an input port that does not exist. Similarly, for tile configurations with less than four outbound ports, DMAOp instructions do not perform narrow memory reads and port writes associated with transfers to nonexistent ports.

いくつかの実現例では、特定の入力活性化が書き込まれる、または読み出されることになる幅狭メモリユニット(複数可)の位置またはアドレスは、メッシュバス126を介して与えられるインバウンド/アウトバウンドDMAOpに基づいてテンソルトラバーサルユニット(以下、「TTU」)によって生成されることになる。インバウンドDMAOpおよびアウトバウンドDMAOpは同時に実行されてもよく、必要な同期はコントローラ102によって管理される同期フラグ制御方式によって管理されることになる。TTUは、図2および図3を参照して以下でさらに詳細に説明される。 In some implementations, the location or address of the narrow memory unit(s) to which a particular input activation is to be written or read is based on inbound/outbound DMAOps provided over mesh bus 126. is generated by a tensor traversal unit (hereinafter “TTU”). Inbound DMAOps and outbound DMAOps may run concurrently, and the necessary synchronization will be governed by a synchronization flag control scheme managed by controller 102 . TTUs are described in further detail below with reference to FIGS.

リングバス128は、コントローラ102から始まり、CSRバス122および命令バス124と同様に、タイル112、114をリング状にコントローラ102に接続し戻すバスデータ経路を介して結合する通信を与える。様々な実現例では、リングバス128は、一般に、すべてのタイル112、114内のすべての幅広メモリユニット(図2を参照して以下により詳細に説明される)を接続または結合する。したがって、リングバス128のペイロード幅は、タイルセット112、114の各タイル内に配置された幅広メモリユニットの幅に対応する。上述のように、リングバス128も、リングバス128を介して通信される命令またはパラメータを含むペイロードデータを消費する必要があるタイルを示すビットマップヘッダを含む。 Ring bus 128 provides communication originating from controller 102 and coupling tiles 112 , 114 in a ring and back to controller 102 via a bus data path, similar to CSR bus 122 and instruction bus 124 . In various implementations, ring bus 128 generally connects or couples all wide memory units in all tiles 112, 114 (described in more detail below with reference to FIG. 2). Thus, the payload width of ring bus 128 corresponds to the width of the wide memory units located within each tile of tilesets 112,114. As noted above, ring bus 128 also includes a bitmap header that indicates which tiles need to consume payload data, including instructions or parameters communicated over ring bus 128 .

リングバス128を介して特定のタイルで受け取られるデータ(すなわちペイロード)に関しては、情報の受信に応答して、各タイルは、受信タイルに固有のビットマップヘッダに示される位置データをゼロに(すなわちクリア)してから、そのデータを別のタイルに転送する。したがって、ヘッダビットマップが、ペイロードを受け取ることになっている特定のタイルを示す残りのビットセットデータを有さないとき、別のタイルへのペイロードの転送は停止することになる。ペイロードデータは、一般に、深くネスト化されたループの実行に基づいて実行されるテンソル計算中に1つまたは複数のタイルによって用いられる活性化および重みを指す。 With respect to data (i.e. payload) received at a particular tile via ring bus 128, in response to receiving information, each tile zeroes (i.e. clear) and then transfer that data to another tile. Therefore, the transfer of payload to another tile will stop when the header bitmap has no remaining bitset data indicating the particular tile that is to receive the payload. Payload data generally refers to activations and weights used by one or more tiles during tensor computations performed based on execution of deeply nested loops.

いくつかの実現例では、コントローラ102は、リングバス128の一部であると説明され得る。一例では、特定のタイル内で実行されるDMAOp命令について、コントローラ102を用いて、リングバスストップからデータ/ペイロードをポップし、そのペイロードをリング内の次のタイル内のリングバスストップに転送してもよい。コントローラ102はさらに、ビットマップヘッダ内の命令によって必要とされる場合には、ペイロードデータをタイルの1つまたは複数の幅広メモリユニットにコミットさせることができる。データを書き込む必要がある1つまたは複数の幅広メモリユニットのアドレスは、特定のタイル内でDMAOp命令によって生成されてもよい。 In some implementations, controller 102 may be described as part of ring bus 128 . In one example, for a DMAOp instruction executing within a particular tile, controller 102 is used to pop data/payload from a ring bus stop and transfer the payload to a ring bus stop within the next tile in the ring. good too. Controller 102 can also cause payload data to be committed to one or more wide memory units of a tile if required by instructions in the bitmap header. The address of one or more wide memory units to which data needs to be written may be generated by a DMAOp instruction within a particular tile.

様々な実現例では、タイルセット112、114の各タイルは、ペイロードデータのプロデューサまたはペイロードデータのコンシューマのいずれかであることができる。タイルがペイロードデータのプロデューサである場合、タイルは、それの幅広メモリユニットのうちの1つまたは複数からデータを読み出し、そのデータを1つまたは複数の他のタイルによる消費のためにリングバス128を介してマルチキャストする。タイルがペイロードデータのコンシューマである場合、タイルはデータを受け取り、そのタイル内の1つまたは複数の幅広メモリユニットに書き込み、そのペイロードデータを1つまたは複数の他のタイルによる消費のために転送する。リングバス128を介したペイロードデータの移動に関しては、通常、任意の所与の時間においてリングバス128上にはデータのプロデューサ/マスターは1つだけである。すべてのタイルにおけるDMAOp命令実行順序(例えば、FIFO制御方式)は、所与の時間にリングバス128上にデータのプロデューサ/マスターが1つだけ存在することを保証するであろう。 In various implementations, each tile in the tilesets 112, 114 can be either a producer of payload data or a consumer of payload data. If a tile is a producer of payload data, the tile reads data from one or more of its wide memory units and sends the data to ring bus 128 for consumption by one or more other tiles. multicast via If a tile is a consumer of payload data, the tile receives the data, writes it to one or more wide memory units within that tile, and forwards the payload data for consumption by one or more other tiles. . With respect to moving payload data over ring bus 128, there is typically only one producer/master of data on ring bus 128 at any given time. The DMAOp instruction execution order (eg, FIFO control scheme) in all tiles will ensure that there is only one producer/master of data on ring bus 128 at any given time.

いくつかの実現例では、コントローラ102は、同期フラグ制御アーキテクチャを用いて、所与の時間にリングバス128上にペイロードデータのプロデューサ/マスターが1つだけ存在することを保証する。一例では、タイルによるリング出力への書込ごとに、対応する同期フラグカウントの増分がトリガされることになる。コントローラ102は、ペイロードデータを調べて、ペイロードを含むデータチャンクまたはセグメントの数を判断することができる。次にコントローラ102は、タイルによる実行を監視して、他のタイルがマスターモードで実行する前に、予想された数のデータセグメントがそのタイルによって転送および/または消費されることを保証する。 In some implementations, controller 102 uses a synchronization flag control architecture to ensure that there is only one producer/master of payload data on ring bus 128 at any given time. In one example, each write by a tile to the ring output would trigger a corresponding increment of the sync flag count. Controller 102 can examine the payload data to determine the number of data chunks or segments that contain the payload. Controller 102 then monitors execution by the tile to ensure that the expected number of data segments are transferred and/or consumed by that tile before other tiles execute in master mode.

リングバス128上に重複領域を持たない、リングバス128を介して接続されるローカルマルチキャストグループがある場合、リングバス128上には所与の時間にデータのプロデューサ/マスターが1つだけであることを保証することに例外が生じる。例えば、タイル0(マスター)は、タイル0~タイル3のグループ化におけるあるタイルにマルチキャスト(すなわち、データを生成)し、タイル4(マスター)は、タイル4~タイル7のグループ化におけるあるタイルに対して同じことを行い得る。このデュアルマスターマルチキャスト方法の重要な要件は、パケットの重複が発生し、1つまたは複数のデータ計算エラーを引き起こす可能性があるため、異なるマルチキャストグループが互いのデータパケットを参照できないようにすることである。 If there is a local multicast group connected via the ring bus 128 with no overlapping regions on the ring bus 128, there is only one producer/master of data on the ring bus 128 at any given time. There are exceptions to guaranteeing For example, tile 0 (master) multicasts (i.e. generates data) to a tile in the tiles 0-3 grouping, tile 4 (master) multicasts to a tile in the tiles 4-7 grouping. You can do the same for An important requirement of this dual-master multicast method is to prevent different multicast groups from seeing each other's data packets, as packet duplication may occur and cause one or more data computation errors. be.

図1に示すように、コントローラ102は、タイルセット112、114内のタイルをI/O110に結合または接続する通信データ経路を提供し、いくつかのコア機能を含む。コントローラ102のコア機能は、一般に、1つまたは複数のI/O入力活性化をタイルセット112、114内のタイルに供給すること、I/O110から受け取られる1つまたは複数の入力活性化およびパラメータをタイルに供給すること、I/O110から受け取られる1つまたは複数の命令をタイルに供給すること、I/O出力活性化をホストインターフェース108に送ること、ならびにCSRバス122およびリングバス128に対してリングストップとして機能することを含む。以下により詳細に説明するように、第1のタイルセット112および第2のタイルセット114は各々、内側ループおよび外側ループからなる深いループネストに基づいて実行される1つまたは複数のテンソル計算を実行するために用いられる複数のタイルを含む。 As shown in FIG. 1, controller 102 provides communication data paths coupling or connecting tiles in tilesets 112, 114 to I/O 110 and includes several core functions. The core functionality of controller 102 is generally to supply one or more I/O input activations to tiles in tilesets 112, 114, one or more input activations and parameters received from I/O 110, to the tiles, one or more instructions received from I/O 110 to the tiles, sending I/O output activations to host interface 108, and to CSR bus 122 and ring bus 128. functioning as a ring stop. As described in more detail below, the first tileset 112 and the second tileset 114 each perform one or more tensor computations performed based on a deep loop nest consisting of inner and outer loops. Contains multiple tiles that are used to

システム100は一般に次のように動作する。ホストインターフェース108は、所与の計算に対して発生するダイレクトメモリアクセス動作(DMAOp)を定義する1つまたは複数の命令をコントローラ102に与える。コントローラ102に供給される命令に関連する記述子は、多次元データアレイ(テンソル)に関連する大規模内積計算を容易にするためにコントローラによって必要とされる情報を含むことになる。一般に、コントローラ102は、ニューラルネットワークの所与の層に対してテンソル計算を実行するために、ホストインターフェース108から、入力活性化、タイル命令、およびモデルパラメータ(すなわち、重み)を受け取る。次に、コントローラ102は、命令によって定義されるデータフロー方式で命令(複数可)をタイル112、114にマルチキャストさせることができる。上述のように、命令を消費するタイルは、次いで、命令ヘッダ内のビットマップデータに基づいて別のタイルへの新たな/後続の命令のブロードキャストを開始することができる。 System 100 generally operates as follows. Host interface 108 provides controller 102 with one or more instructions that define a direct memory access operation (DMAOp) to occur for a given computation. The descriptors associated with the instructions supplied to the controller 102 will contain the information needed by the controller to facilitate large-scale dot product computations involving multi-dimensional data arrays (tensors). In general, controller 102 receives input activations, tiling instructions, and model parameters (ie, weights) from host interface 108 to perform tensor computations for a given layer of the neural network. The controller 102 can then multicast the instruction(s) to the tiles 112, 114 in a dataflow manner defined by the instruction. As described above, the tile consuming the instruction can then begin broadcasting new/subsequent instructions to other tiles based on the bitmap data in the instruction header.

データフローに関して、入力活性化およびパラメータは、リングバス128を介してタイルセット112、114のタイルに送られる。タイル112、114の各々は、その特定のタイルに割り当てられる、出力活性化のサブセットを計算するのに必要な入力活性化のサブセットを格納することになる。タイルに対するDMAOp命令は入力活性化を幅広メモリから幅狭メモリへ移動させる。タイル内の計算は、必要な入力活性化、パラメータ/重み、および計算命令(TTU操作、メモリアドレスなど)がタイルで利用可能になったときに開始される。タイル内で生じる計算は、タイル内のMAC演算子(後述)が命令セットによって定義されたすべての内積演算を完了し、活性化前関数が乗算演算の結果(すなわち出力活性化)に適用されると、終了する。 In terms of data flow, input activations and parameters are sent to the tiles of tilesets 112 , 114 via ring bus 128 . Each of the tiles 112, 114 will store the subset of input activations needed to compute the subset of output activations assigned to that particular tile. A DMAOp instruction for a tile moves input activations from wide memory to narrow memory. Computation within a tile starts when the necessary input activations, parameters/weights, and computation instructions (TTU operations, memory addresses, etc.) are available in the tile. Computations that occur within the tile are such that the MAC operator within the tile (described below) completes all inner product operations defined by the instruction set, and the pre-activation function is applied to the result of the multiplication operation (i.e. output activation). and exit.

1つまたは複数のテンソル計算の結果は、計算を実行するタイルの幅狭メモリユニット(複数可)に計算層の出力活性化を書き込むことを含む。あるテンソル計算では、メッシュバス126を介して近隣のタイルへの出力エッジ活性化の転送があることになる。近隣のタイルへの出力エッジ活性化の転送は、計算が複数の層にわたる場合に後続の層のために出力活性化を計算するために必要とされる。すべての層に対する計算が完了すると、DMAOpは、リングバス128を介して最終的な活性化を分類器タイル116に移動させる。次に、コントローラ102は、分類器タイル116から最終活性化を読み出し、DMAOpを実行して最終活性化をホストインターフェース108に移動させる。いくつかの実現例では、分類器部分116は、NNの出力層(すなわち最後の層)の計算を実行する。他の実現例では、NNの出力層は、分類器層、回帰層、または一般にニューラルネットワークに関連する別の層タイプのうちの1つである。 The result of one or more tensor computations includes writing the output activations of the computational layer to the narrow memory unit(s) of the tile that performs the computation. In some tensor computations, there will be forwarding of output edge activations to neighboring tiles via the mesh bus 126 . Transferring output edge activations to neighboring tiles is required to compute output activations for subsequent layers when the computation spans multiple layers. When computations for all layers are complete, DMAOp moves the final activation to classifier tile 116 via ring bus 128 . Controller 102 then reads the final activation from classifier tile 116 and performs a DMAOp to move the final activation to host interface 108 . In some implementations, the classifier portion 116 performs computations for the output layer (ie, last layer) of the NN. In other implementations, the output layer of the NN is a classifier layer, a regression layer, or one of another layer type commonly associated with neural networks.

図2は、例示的なニューラルネットワーク(NN)計算タイル200を示す。一般に、例示的なタイル200は、図1を参照して上述した第1のタイルセット112および第2のタイルセット114内の任意のタイルに対応し得る。様々な実現例では、計算タイル200はまた、計算ユニット200として参照されるか、またはそう呼ばれることがある。各計算タイル200は、タイルセット112、114内の他の対応するタイルに対して独立して命令を実行するように構成された自己完結型計算ユニットである。上で簡単に説明したように、各計算タイル200は2つのタイプの命令、TensorOp命令およびDMAOp命令を実行する。一般に、各命令タイプは深いループネストに関連する計算操作を含み、したがって各命令タイプは一般に、すべてのループ反復の完了を確実にするために、複数の時間エポックにわたって実行されることになる。 FIG. 2 shows an exemplary neural network (NN) computational tile 200. As shown in FIG. In general, exemplary tile 200 may correspond to any tile in first tileset 112 and second tileset 114 described above with reference to FIG. In various implementations, computation tile 200 may also be referred to or called computation unit 200 . Each computational tile 200 is a self-contained computational unit configured to independently execute instructions on other corresponding tiles in the tilesets 112,114. As briefly described above, each compute tile 200 executes two types of instructions, TensorOp instructions and DMAOp instructions. Generally, each instruction type includes computational operations associated with deep loop nesting, and thus each instruction type will generally be executed over multiple time epochs to ensure completion of all loop iterations.

以下により詳細に論じられるように、異なる命令タイプは、計算タイル200内で管理される同期フラグ制御を介してデータ上で同期する計算タイル200内の独立した制御ユニットによって実行される。同期フラグ制御は、計算タイル200内における異なる命令タイプの実行間の同時性を管理する。各命令タイプに関連する各計算操作は厳密な発行順序(すなわち先入れ先出し)で実行される。2つの命令タイプ、TensorOPおよびDMAOpに関して、これらの異なる命令タイプ間に順序付けの保証はなく、各タイプは計算タイル200によって別々の制御スレッドとして扱われる。 As discussed in more detail below, different instruction types are executed by independent control units within the compute tile 200 that synchronize on data via synchronization flag controls managed within the compute tile 200 . Synchronization flag control manages concurrency between executions of different instruction types within compute tile 200 . Each computational operation associated with each instruction type is executed in strict issue order (ie, first-in-first-out). With respect to the two instruction types, TensorOP and DMAOp, there are no ordering guarantees between these different instruction types and each type is treated by compute tile 200 as a separate thread of control.

データフロー構成に関して、計算タイル200は一般に、計算タイル200に出入りするデータフローのための通信経路を各々が与えるデータ経路202およびデータ経路205を含む。上述のように、システム100は、リング構成でレイアウトされた3つの異なるデータバス構造、すなわちCSRバス122、命令バス124、およびリングバス128を含む。図2を参照して、データ経路205は命令バス124に対応し、データ経路202は一般にCSRバス122およびリングバス128のうちの1つに対応する。示されるように、データ経路202は、計算タイル200を出るデータのための出力経路を与えるリング出力203と、計算タイル200に入るデータのための入力経路を与えるリング入力204とを含む。 With respect to dataflow configuration, compute tile 200 generally includes datapath 202 and datapath 205 that each provide a communication path for dataflow into and out of compute tile 200 . As mentioned above, system 100 includes three different data bus structures laid out in a ring configuration: CSR bus 122, command bus 124, and ring bus 128. FIG. Referring to FIG. 2, data path 205 corresponds to command bus 124 and data path 202 generally corresponds to one of CSR bus 122 and ring bus 128 . As shown, data path 202 includes ring output 203 that provides an output path for data exiting compute tile 200 and ring input 204 that provides an input path for data entering compute tile 200 .

計算タイル200は、TensorOpテンソルトラバーサルユニット(TTU)226を含むTensorOp制御206と、DMAOpTTU228を含むDMAOp制御208とをさらに含む。TensorOp制御206は、一般に、TensorOpTTUレジスタ232への書込およびTensorOpTTUレジスタ232からの読出を管理し、TensorOpTTU226による実行のためのトラバース操作を管理する。同様に、DMAOp制御208は一般に、DMAOpTTUレジスタ234への書込およびDMAOpTTUレジスタ234からの読出を管理し、DMAOpTTU228による実行のためのトラバース操作を管理する。TTUレジスタ232は、TensorOp制御206による命令の実行でTensorOpTTU226によって実行されるべき操作を含む1つまたは複数の命令を格納するための命令バッファを含む。同様に、TTUレジスタ234は、DMAOp制御208による命令の実行でTTU208によって実行されるべき操作を含む1つまたは複数の命令を格納するための命令バッファを含む。以下でさらに説明されるように、TTUは、計算タイル200によって用いられて、一般に幅狭メモリ210および幅広メモリ212に常駐する1つまたは複数のテンソルのアレイ要素をトラバースする。 Compute tile 200 further includes TensorOp controls 206 including TensorOp tensor traversal units (TTUs) 226 and DMAOp controls 208 including DMAOp TTUs 228 . TensorOp control 206 generally manages writing to and reading from TensorOpTTU registers 232 and manages traversal operations for execution by TensorOpTTU 226 . Similarly, DMAOp control 208 generally manages writing to and reading from DMAOpTTU registers 234 and traverse operations for execution by DMAOpTTU 228 . TTU register 232 contains an instruction buffer for storing one or more instructions containing operations to be performed by TensorOp TTU 226 in executing instructions by TensorOp control 206 . Similarly, TTU register 234 includes an instruction buffer for storing one or more instructions containing operations to be performed by TTU 208 upon execution of instructions by DMAOp control 208 . As further described below, TTUs are used by computational tile 200 to traverse one or more tensor array elements that typically reside in narrow memory 210 and wide memory 212 .

いくつかの実現例では、計算タイル200による実行のためのある命令は、データ経路205(すなわち命令バス124の一部)を介してタイルに到着する。計算タイル200はヘッダビットマップを調べて命令タイプ(TensorOpまたはDMAOp)および命令サブタイプ(読出動作または書込動作)を判断する。計算タイル200によって受け取られた命令は、続いて、命令タイプに応じて特定の命令バッファに書き込まれる。一般に、命令は、計算タイル200のコンポーネントによる命令の実行の前に受け取られ格納される(すなわち、バッファに書き込まれる)。図2に示すように、命令バッファ(すなわち、TensorOpTTUレジスタ232およびDMAOpTTUレジスタ234)は各々、1つまたは複数の関連する命令の消費(実行)を優先する先入れ先出し(FIFO)制御方式を含むことができる。 In some implementations, certain instructions for execution by compute tile 200 arrive at the tile via data path 205 (ie, part of instruction bus 124). Compute tile 200 examines the header bitmap to determine the instruction type (TensorOp or DMAOp) and instruction subtype (read operation or write operation). Instructions received by the compute tile 200 are subsequently written to specific instruction buffers depending on the instruction type. Generally, instructions are received and stored (ie, written to a buffer) prior to execution of the instructions by components of compute tile 200 . As shown in FIG. 2, the instruction buffers (i.e., TensorOpTTU register 232 and DMAOpTTU register 234) may each include a first-in-first-out (FIFO) control scheme that prioritizes consumption (execution) of one or more associated instructions. .

簡単に上述したように、テンソルは多次元幾何学的オブジェクトであり、例示的な多次元幾何学的オブジェクトは行列およびデータアレイを含む。深くネスト化されたループを含むアルゴリズムを計算タイル200によって実行して、1つまたは複数のネスト化されたループを反復してN次元テンソルをトラバースすることによって、テンソル計算を実行してもよい。1つの例示的な計算プロセスでは、ループネストの各ループは、N次元テンソルの特定の次元をトラバースすることを担当し得る。本明細書に記載されるように、TensorOp制御206は、一般に、特定のテンソル構成体の次元要素をトラバースし、およびそれにアクセスして深いネスト化されたループによって定義される計算を完成させるシーケンスを駆動する1つまたは複数のテンソル演算を管理する。 As briefly mentioned above, tensors are multidimensional geometric objects, and exemplary multidimensional geometric objects include matrices and data arrays. Algorithms that include deeply nested loops may be executed by computational tile 200 to perform tensor computations by iterating through one or more nested loops to traverse an N-dimensional tensor. In one exemplary computational process, each loop of a loop nest may be responsible for traversing a particular dimension of an N-dimensional tensor. As described herein, the TensorOp control 206 generally implements a sequence that traverses and accesses the dimensional elements of a particular tensor construct to complete a computation defined by deeply nested loops. Manage one or more tensor operations to drive.

計算タイル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の共有メモリユニットにアクセスすることを許可されるかを判断するために共有メモリシステムで通常用いられるメモリアービタを含み得る。 Compute tile 200 further includes narrow memory 210 and wide memory 212 . The narrow and wide designations generally refer to the width size (bits/bytes) of the memory units of narrow memory 210 and wide memory 212 . In some implementations, narrow memory 210 includes memory units each having a size or width of less than 16 bits, and wide memory 212 includes memory units each having a size or width of less than 32 bits. In general, compute tile 200 receives input activations via datapath 205 and DMA control 208 performs operations to write the input activations to narrow memory 210 . Similarly, compute tile 200 receives parameters (weights) via datapath 202 and DMA control 208 performs operations to write parameters to wide memory 212 . In some implementations, narrow memory 210 determines which controller (eg, TensorOp control 206 or DMAOp control 208) is allowed to access the shared memory unit of narrow memory 210 for each memory cycle. It may include a memory arbiter commonly used in shared memory systems to determine whether

計算タイル200はさらに、入力活性化バス216と、各々がMAC演算子215および合計レジスタ220を含む複数のセルを含むMACアレイ214とを含む。一般に、MACアレイ214は、複数のセルにわたってMAC演算子215および合計レジスタ220を用いて、内積計算に関係する算術演算を含むテンソル計算を実行する。入力活性化バス216は、入力活性化が、幅狭メモリ210によって、MACアレイ214の各MAC演算子215によるそれぞれのアクセスに対して1つずつ与えられる、データ経路を与える。したがって、入力活性化の1つずつのブロードキャストに基づいて、特定のセルの単一のMAC演算子215が各々入力活性化を受け取ることになる。MACアレイ214のMAC演算子によって実行される算術演算は、一般に、幅狭メモリ210によって与えられる入力活性化を幅広メモリ212からアクセスされるパラメータと乗算して単一の出力活性化値を生成することを含む。 Compute tile 200 further includes input activation bus 216 and MAC array 214 that includes a plurality of cells each containing MAC operator 215 and sum register 220 . In general, MAC array 214 performs tensor computations, including arithmetic operations related to dot product computations, using MAC operators 215 and sum registers 220 over multiple cells. Input activation bus 216 provides a data path through which input activations are provided by narrow memory 210 , one for each access by each MAC operator 215 of MAC array 214 . Thus, based on one-by-one broadcasting of input activations, each single MAC operator 215 in a particular cell will receive an input activation. The arithmetic operations performed by the MAC operators of MAC array 214 generally multiply input activations provided by narrow memory 210 with parameters accessed from wide memory 212 to produce a single output activation value. Including.

算術演算中に、部分和を累積し、対応する、例えば合計レジスタ220に格納するか、または幅広メモリ212に書き込み、MACアレイ214の特定のセルによって再アクセスして、後続の乗算演算を完了してもよい。テンソル計算は、第1の部分と第2の部分とを有するものとして説明することができる。第1の部分は、例えば入力活性化とパラメータとの乗算を完了して出力活性化を生成することによって乗算演算が出力活性化を生成すると完了する。第2の部分は、出力活性化への非線形関数の適用を含み、第2の部分は、関数の適用後に出力活性化が幅狭メモリ210に書き込まれると完了する。 During arithmetic operations, partial sums are accumulated and stored in corresponding, e.g., sum registers 220 or written to wide memory 212 and re-accessed by specific cells of MAC array 214 to complete subsequent multiplication operations. may A tensor computation can be described as having a first part and a second part. The first part is completed when the multiplication operation produces the output activation, eg by completing the multiplication of the input activation with the parameter to produce the output activation. The second part involves applying a non-linear function to the output activations, and the second part is completed when the output activations are written to narrow memory 210 after applying the function.

計算タイル200はさらに、出力活性化バス218、出力活性化パイプライン224を含む非線形ユニット(NLU)222、NLU制御238、および計算タイル200内のコンポーネントのコア属性を示す参照マップ230を含む。明確にするために参照マップ230が示されているが、計算タイル200には含まれていない。コア属性には、特定のコンポーネントが、ユニット、記憶装置、演算子、制御装置、またはデータ経路であるかどうかが含まれる。一般に、テンソル計算の第1の部分が完了すると、出力活性化がMACアレイ214から出力活性化バス218を介してNLU222に与えられる。NLU222に到着した後、活性化パイプライン224を介して受け取られる、活性化関数を特定するデータが出力活性化に適用され、次いで、出力活性化は幅狭メモリ210に書き込まれる。いくつかの実現例では、出力活性化バス218は、少なくとも1つのパイプライン化されたシフトレジスタ236を含み、テンソル計算の第2の部分を完了することは、活性化バス218のシフトレジスタ236を用いて出力活性化を幅狭メモリ210に向けてシフトすることを含む。 The compute tile 200 further includes an output activation bus 218 , a non-linear unit (NLU) 222 that includes an output activation pipeline 224 , an NLU control 238 , and a reference map 230 that indicates core attributes of components within the compute tile 200 . Reference map 230 is shown for clarity, but is not included in calculation tile 200 . Core attributes include whether a particular component is a unit, storage device, operator, controller, or data path. Generally, when the first part of the tensor computation is complete, output activations are provided from MAC array 214 to NLU 222 via output activation bus 218 . After arriving at NLU 222 , data specifying an activation function received through activation pipeline 224 is applied to the output activation, which is then written to narrow memory 210 . In some implementations, the output activation bus 218 includes at least one pipelined shift register 236, and completing the second part of the tensor computation activates the shift registers 236 of the activation bus 218. using to shift the output activations towards the narrow memory 210 .

例えば、単一の計算タイル200についての、2つの多次元データアレイの内積計算に関して、MACアレイ214は、ロバストな単一命令複数データ(SIMD)機能を与える。SIMDは、一般に、すべての並列ユニット(複数のMAC演算子215)が(深いループネストに基づいて)同じ命令を共有するが、各MAC演算子215は異なるデータ要素上で命令を実行することを意味する。1つの基本的な例では、配列[1,2,3,4]および[5,6,7,8]を要素ごとに加算して1つのサイクルで配列[6,8,10,12]を取得するには、通常、各要素で演算を実行するために4つの算術演算ユニットが必要となる。SIMDを用いることによって、4つのユニットは同じ命令(例えば、「加算」)を共有し、計算を並列して実行することができる。したがって、システム100および計算タイル200は、テンソル計算において従来の方法よりも向上した加速および並列処理を与える。 For example, for inner product calculations of two multi-dimensional data arrays for a single computational tile 200, MAC array 214 provides robust single instruction multiple data (SIMD) functionality. SIMD generally requires that all parallel units (multiple MAC operators 215) share the same instructions (based on deep loop nesting), but that each MAC operator 215 executes instructions on different data elements. means. One basic example is to add the arrays [1,2,3,4] and [5,6,7,8] element by element to get the array [6,8,10,12] in one cycle. Acquisition typically requires four arithmetic units to perform operations on each element. By using SIMD, four units can share the same instruction (eg, "add") and perform computations in parallel. Thus, system 100 and compute tile 200 provide improved acceleration and parallelism in tensor computation over conventional methods.

一例では、そして以下でより詳細に説明されるように、単一の命令が、複数のMACアレイ214による消費のために、コントローラ102によって複数の計算タイル200(図1のタイルセット112、114を参照)に与えられ得る。一般に、ニューラルネットワーク層は複数の出力ニューロンを含むことができ、出力ニューロンは、出力ニューロンのサブセットに関連するテンソル計算がタイルセット112、114の特定のタイルに割り当てられることができるように、分割されることができる。次いで、タイルセット112、114の各タイルは、所与の層について、異なるニューロンのグループ上で、関連するテンソル計算を実行することができる。したがって、計算タイル200は、少なくとも2つの形態の並列処理を与えることができる:1)1つの形態は、タイルセット112、114の複数のタイルの間で(出力ニューロンのサブセットに対応する)出力活性化を分割することを含み;2)もう1つの形態は、タイルセット112、114のタイル間の分割に基づく出力ニューロンの複数のサブセットの(単一の命令を用いた)同時計算を含む。 In one example, and as will be described in more detail below, a single instruction may cause multiple compute tiles 200 (tilesets 112, 114 in FIG. 1) to be processed by controller 102 for consumption by multiple MAC arrays 214. ) can be given. In general, a neural network layer can include multiple output neurons, which are partitioned such that tensor computations associated with subsets of the output neurons can be assigned to specific tiles of the tilesets 112, 114. can Each tile in the tilesets 112, 114 can then perform associated tensor computations on different groups of neurons for a given layer. Thus, the computational tile 200 can provide at least two forms of parallelism: 1) one form is the output activation (corresponding to a subset of output neurons) between multiple tiles of the tilesets 112, 114; 2) Another form involves simultaneous computation (using a single instruction) of multiple subsets of output neurons based on partitioning between tiles of tilesets 112,114.

図3は、各々が8の深さを有する、追跡すべき4つのテンソルを含む例示的なテンソルトラバーサルユニット(TTU)構造300を示す。TTU300は一般に、カウンタテンソル302、ストライドテンソル304、初期テンソル306、および制限テンソル308を含む。TTU300はさらに、加算器バンク310およびテンソルアドレスインデックス312を含む。上述のように、テンソルは多次元幾何学的オブジェクトであり、テンソルの要素にアクセスするためには、各次元のインデックスが与えられなければならない。テンソルは幅狭メモリ210および幅広メモリ212に格納されるので、テンソルインデックスのセットをメモリアドレスのセットに変換しなければならない。いくつかの実現例では、インデックスのメモリアドレスへの変換は、メモリアドレスをインデックスの線形結合にし、テンソルアドレスインデックス312を介してアドレスを反映させることによって行われる。 FIG. 3 shows an exemplary tensor traversal unit (TTU) structure 300 containing four tensors to track, each having a depth of eight. TTU 300 generally includes counter tensor 302 , stride tensor 304 , initial tensor 306 , and limit tensor 308 . TTU 300 further includes adder bank 310 and tensor address index 312 . As mentioned above, a tensor is a multi-dimensional geometric object, and in order to access the elements of the tensor, each dimension must be indexed. Since tensors are stored in narrow memory 210 and wide memory 212, the set of tensor indices must be translated into a set of memory addresses. In some implementations, the conversion of indices to memory addresses is done by making the memory addresses a linear combination of the indices and reflecting the addresses through tensor address indices 312 .

制御スレッドごとにTTUがあり、計算タイル200においては命令タイプごとに制御スレッド(TensorOPおよびDMAOp)がある。したがって、上述のように、計算タイル200には2組のTTUがある:1)TensorOpTTU226;および2)DMAOpTTU228。様々な実現例において、TensorOp制御206は、特定のテンソル演算の開始時にTTU300にTensorOpTTUカウンタ302、制限308、ストライド値304をロードさせ、命令がリタイアされる前にレジスタ値を変更しない。2つのTTUの各々は、計算タイル200において以下のメモリアドレスポートのためにアドレスを生成する必要があることになる:1)幅広メモリ212アドレスポート、および2)4つのアドレスポートとして提示される4つの独立した調停されたバンクを有する幅狭メモリ210。 There is a TTU for each control thread, and in compute tile 200 there is a control thread for each instruction type (TensorOP and DMAOp). Thus, as noted above, there are two sets of TTUs in compute tile 200: 1) TensorOpTTU 226; and 2) DMAOpTTU 228. In various implementations, TensorOp control 206 causes TTU 300 to load TensorOp TTU counter 302, limit 308, stride value 304 at the start of a particular tensor operation, and does not change register values before the instruction is retired. Each of the two TTUs will need to generate addresses for the following memory address ports in compute tile 200: 1) wide memory 212 address port, and 2) 4 presented as four address ports. Narrow memory 210 with four independent arbitrated banks.

上述のように、いくつかの実現例では、幅狭メモリ210は、各メモリサイクルに対して、どの制御装置(例えば、TensorOp制御206またはDMAOp制御208)が幅狭メモリ210の共有メモリ資源にアクセスすることを許可されるかを判断するために共有メモリシステムで通常用いられるメモリアービタを含み得る。一例では、異なる命令タイプ(TensorOpおよびDMAOp)は、調停が必要な、メモリアクセスを要求する独立した制御スレッドである。特定の制御スレッドがテンソル要素をメモリにコミットすると、その制御スレッドはメモリにコミットされたテンソルレファレンスのカウンタ302を増分する。 As noted above, in some implementations, narrow memory 210 may be configured such that for each memory cycle, which controller (eg, TensorOp control 206 or DMAOp control 208) accesses the shared memory resources of narrow memory 210. It may include a memory arbiter commonly used in shared memory systems to determine if it is allowed to do so. In one example, different instruction types (TensorOp and DMAOp) are independent threads of control requesting memory accesses that require arbitration. When a particular control thread commits a tensor element to memory, that control thread increments a counter 302 of tensor references committed to memory.

一例では、TensorOp制御206がテンソルの特定の要素にアクセスするための命令を実行すると、TTU300はテンソルの特定の要素のアドレスを判断することができ、制御206はストレージ、例えば幅狭メモリ210にアクセスして、特定の要素の活性化値を表すデータを読み出し得る。いくつかの実現例では、プログラムはネスト化されたループを含むことができ、制御206は、ネスト化されたループに関連する現在のインデックス変数値に従って、ネスト化されたループ内で二次元アレイ変数の要素にアクセスするよう、命令を実行することができる。 In one example, when TensorOp control 206 executes an instruction to access a particular element of the tensor, TTU 300 can determine the address of the particular element of the tensor, and control 206 accesses storage, such as narrow memory 210. to retrieve data representing the activation value of a particular element. In some implementations, the program may include nested loops, and control 206 may set two-dimensional array variables within the nested loops according to current index variable values associated with the nested loops. An instruction can be executed to access an element of

TTU300は、所与のテンソル(複数可)について最大X数のTTU行に対して同時にトラバーサル状態を保持してもよい。TTU300に同時に常駐する各テンソルは、専用のハードウェアテンソル制御記述子を占有する。ハードウェア制御記述子は、行位置ごとにX数のTTUカウンタ302、ストライド304、および行次元ごとに最大X数のTTUカウンタを有するテンソルをサポートする制限レジスタ308からなることができる。いくつかの実現例では、行数および行あたりのカウンタ数は異なり得る。 TTU 300 may maintain traversal state for up to X number of TTU rows simultaneously for a given tensor(s). Each tensor co-resident in the TTU 300 occupies a dedicated hardware tensor control descriptor. The hardware control descriptor may consist of X number of TTU counters 302 per row position, stride 304, and limit registers 308 that support tensors with up to X number of TTU counters per row dimension. In some implementations, the number of rows and the number of counters per row may differ.

所与の位置レジスタについて、最終メモリアドレスは、位置レジスタをともに加算することを含む加算演算から計算される。ベースアドレスはカウンタ302に組み込まれる。同じメモリ内に常駐するテンソルレファレンスのために、1つまたは複数の加算器が共有される。一実現例では、サイクル内の任意の所与のポート上には単一のロード/ストアしか存在できないため、同じ幅狭メモリまたは幅広メモリ内に存在する複数のテンソルレファレンスがそれらのカウンタを任意の所与のサイクルで増分されないこと確実にすることがループネスト制御の機能となる。オフセット値の判断を含むメモリアクセスアドレス値を計算するためのレジスタの使用は、2016年2月3日に出願された「マトリックス処理装置(Matrix Processing Apparatus)」と題する特許出願連続番号第15/014,265号により詳細に記載されており、その全体をここに明示的に引用により援用する。 For a given location register, the final memory address is calculated from an addition operation that involves adding the location registers together. The base address is incorporated into counter 302 . One or more adders are shared for tensor references that reside in the same memory. In one implementation, there can only be a single load/store on any given port in a cycle, so multiple tensor references residing in the same narrow or wide memory can set their counters to any It is the function of loop nest control to ensure that it is not incremented in a given cycle. The use of registers to calculate memory access address values, including determination of offset values, is disclosed in patent application Ser. , 265, which is expressly incorporated herein by reference in its entirety.

以下は、特殊化されたTTU300をインスタンス化するために用いられてもよいテンプレートパラメータを与える。1)X数のTTU行;2)行ごとのX数のTTUカウンタ;3)X数のTTU加算器ユニット;4)TTU行ごとに、共有される加算器参照を示す;および5)カウンタごとにXカウンタサイズ[TTU][行][深さ]を示す。すべてのTTUレジスタはアーキテクチャ上可視である。計算のためにアクセスされる必要がある特定のテンソル要素のアドレス(すなわちテンソルアドレス312)は、カウンタの加算の結果である。増分信号が制御スレッドからTTUの行に発行されると、TTU300は単一のサイクル動作を実行し、最も内側の次元をその次元のストライド304によって増分し、そしてすべての深さを通してロールオーバーを伝播する。 The following gives the template parameters that may be used to instantiate the specialized TTU 300. 2) X number of TTU counters per row; 3) X number of TTU adder units; 4) per TTU row indicating a shared adder reference; and 5) per counter. shows the X counter size [TTU] [row] [depth]. All TTU registers are architecturally visible. The address of the particular tensor element that needs to be accessed for computation (ie tensor address 312) is the result of the addition of the counter. When an increment signal is issued from the control thread to a row of the TTU, the TTU 300 performs a single cycle operation, incrementing the innermost dimension by the stride 304 of that dimension and propagating the rollover through all depths. do.

一般に、TTU300は、1つまたは複数のテンソルに関連する状態を判断する。状態は、ループ境界値、現在のループインデックス変数値、メモリアドレス値を計算するための次元乗数、および/または分岐ループ境界を処理するためのプログラムカウンタ値を含むことができる。TTU300は、1つまたは複数のテンソル状態要素と算術論理ユニットとを含むことができる。テンソル状態要素の各々は、記憶要素、例えばレジスタまたは他の任意の好適な記憶回路であり得る。いくつかの実現例では、テンソル状態要素は、物理的または論理的に異なるグループに構成されてもよい。 In general, the TTU 300 determines states associated with one or more tensors. The state can include loop boundary values, current loop index variable values, dimension multipliers for calculating memory address values, and/or program counter values for processing branch loop boundaries. TTU 300 may include one or more tensor state elements and an arithmetic logic unit. Each of the tensor state elements may be a storage element, such as a register or any other suitable storage circuit. In some implementations, tensor state elements may be organized into physically or logically distinct groups.

図4は、活性化404を入力バス216を介して1つまたは複数の積和(MAC)演算子にブロードキャストする幅狭メモリ210を含む例示的なアーキテクチャを示す。シフトレジスタ404は、MACセル410内の1つまたは複数のMAC演算子215による受け取りのために活性化404が一度に1つずつ入力バス216に送出されるシフト機能を与える。一般に、MAC演算子215を含むMACセル410は、部分和を計算する計算セルとして定義することができ、いくつかの実現例では、部分和データを出力バス218に書き込むように構成されている。示されるように、セル410は、1つまたは複数のMAC演算子からなってもよい。一実現例では、MACセル410内のMAC演算子215の数は、セルの発行幅と呼ばれる。一例として、二重発行セルは、(幅狭メモリ210からの)2つの活性化値と(幅広メモリ212からの)2つのパラメータとの乗算を計算し2つ乗数の結果と現在の部分和との間で加算を実行できる2つのMAC演算子を有するセルを指す。 FIG. 4 shows an exemplary architecture including narrow memory 210 that broadcasts activations 404 to one or more multiply-accumulate (MAC) operators via input bus 216 . Shift register 404 provides a shifting function in which activations 404 are sent one at a time onto input bus 216 for receipt by one or more MAC operators 215 within MAC cell 410 . In general, MAC cell 410 containing MAC operator 215 can be defined as a computational cell that computes partial sums and, in some implementations, is configured to write partial sum data to output bus 218 . As shown, cell 410 may consist of one or more MAC operators. In one implementation, the number of MAC operators 215 in MAC cell 410 is referred to as the issue width of the cell. As an example, a double issue cell computes the multiplication of two activation values (from narrow memory 210) by two parameters (from wide memory 212), the result of the two multipliers and the current partial sum. Refers to a cell that has two MAC operators that can perform addition between

上述のように、入力バス216は、線形ユニット(すなわち、MACアレイ214)のMAC演算子215に入力活性化を与えるブロードキャストバスである。いくつかの実現例では、同じ入力がすべてのMAC演算子215の間で共有される。入力バス216の幅は、所与のMACアレイ214についてブロードキャスト入力を対応する数のセルに供給するのに十分に広くなければならない。入力バス216の構造を説明するために以下の例を考察する。線形ユニット内のセルの数が4に等しく、活性化幅が8ビットに等しいとき、入力バス216は、サイクルごとに最大4つの入力活性化を与えるように構成することができる。この例では、MACアレイ214内のすべてのセルは、ブロードキャストされる4つの活性化のうちの1つのみにアクセスするであろう。 As noted above, input bus 216 is a broadcast bus that provides input activations to MAC operator 215 of the linear unit (ie, MAC array 214). In some implementations, the same input is shared among all MAC operators 215 . The width of input bus 216 must be wide enough to supply the broadcast input to a corresponding number of cells for a given MAC array 214 . To illustrate the structure of input bus 216 consider the following example. When the number of cells in the linear unit equals 4 and the activation width equals 8 bits, input bus 216 can be configured to provide up to 4 input activations per cycle. In this example, all cells in MAC array 214 will access only one of the four broadcasted activations.

計算タイル200によって受け取られる命令のTensorOpフィールド設定に基づいて、MACアレイ214のセルは、同じ入力活性化を用いて計算を実行する必要があり得る。これは、MACアレイ214のセル内のZout分割と呼ばれてもよい。同様に、セル内のZin分割は、MACアレイ214のセルが計算を実行するために異なる活性化を必要とするときに生じる。前者の場合、単一の入力活性化は4回複製され、幅狭メモリ210から読み出された4つの活性化が4サイクルにわたってブロードキャストされる。後者の場合、幅狭メモリ210の読出がサイクルごとに必要とされる。前述の例では、TensorOp制御206は、コントローラ102から受け取られる命令の実行に基づいてこのブロードキャスト方法をオーケストレーションする。 Based on the TensorOp field setting of the instruction received by computation tile 200, the cells of MAC array 214 may need to perform computations with the same input activations. This may be referred to as Zout partitioning within cells of MAC array 214 . Similarly, Zin partitioning within a cell occurs when cells of MAC array 214 require different activations to perform computations. In the former case, a single input activation is replicated four times, and four activations read from narrow memory 210 are broadcast over four cycles. In the latter case, a read of narrow memory 210 is required every cycle. In the example above, TensorOp control 206 orchestrates this broadcasting method based on the execution of instructions received from controller 102 .

図5は、図2および図4の幅狭メモリユニット210に出力活性化を与えるための出力バス218を含む例示的なアーキテクチャを示す。一般に、計算タイル200内のMACアレイ214の各MACセル215は、異なる出力活性化を計算する。しかしながら、出力特徴アレイに関して、出力特徴深さが計算タイル200内のMACセル215の数より少ない場合、セルは1つまたは複数のセルグループを形成するようにグループ化されてもよい。セルグループ内のすべてのMACセル215は、同じ出力を(すなわち、出力特徴マップについて)計算するが、各セルは、Zin次元のサブセットに対応する、出力のサブセットを計算するにすぎない。その結果、MACセル215の出力は、ここでは、最終的な線形出力ではなく、部分和である。いくつかの実現例では、NLU222は、NLU制御238によってNLU222に与えられる制御信号に基づいてこれらの部分和を最終線形出力に集約する。 FIG. 5 shows an exemplary architecture including an output bus 218 for providing output activation to narrow memory unit 210 of FIGS. In general, each MAC cell 215 of MAC array 214 within computational tile 200 computes a different output activation. However, with respect to the output feature array, if the output feature depth is less than the number of MAC cells 215 in computational tile 200, the cells may be grouped to form one or more cell groups. All MAC cells 215 within a cell group compute the same output (ie, for the output feature map), but each cell only computes a subset of the output corresponding to a subset of the Zin dimension. As a result, the output of MAC cell 215 is now a partial sum rather than a final linear output. In some implementations, NLU 222 aggregates these partial sums into a final linear output based on control signals provided to NLU 222 by NLU control 238 .

上述のように、出力バス218はパイプライン化されたシフトレジスタである。様々な実現例では、テンソル計算の第1の部分が終了し、TensorOp制御206が(命令を実行することによって)部分和を書き出す必要があることを示すと、出力バス218に与えられる部分和の並列ロードがあることになる。並列ロードの数は、計算タイル200内のMACセルの数に対応することになる。TensorOp制御206は、次いで、部分和量をシフトアウトさせ、非線形パイプラインを介して送らせる。いくつかの実現例では、タイル内のすべてのMACセルが実際に計算を実行するために利用されるわけではない状況があり得る。このような状況では、出力バスにシフトされるすべての部分和が有効になるわけではないことになる。この例では、TensorOp制御206は、MACアレイ214に制御信号を与えて、シフトアウトされるべき有効セルの数を示してもよい。出力バス218にロードされる並列ロード量は依然として計算タイル内のMACセルの数に対応するが、有効値のみがシフトアウトされて幅狭メモリ210にコミットされることになる。 As mentioned above, output bus 218 is a pipelined shift register. In various implementations, when the first part of the tensor computation is finished and the TensorOp control 206 indicates (by executing an instruction) that the partial sums should be written out, the partial sums provided on the output bus 218 are There will be parallel loads. The number of parallel loads will correspond to the number of MAC cells in the compute tile 200 . TensorOp control 206 then shifts out the partial sum quantity and sends it through the non-linear pipeline. In some implementations, there may be situations where not all MAC cells within a tile are actually utilized to perform computations. In such a situation, not all partial sums shifted onto the output bus will be valid. In this example, TensorOp control 206 may provide control signals to MAC array 214 to indicate the number of valid cells to be shifted out. The amount of parallel load loaded onto output bus 218 still corresponds to the number of MAC cells in the computational tile, but only valid values will be shifted out and committed to narrow memory 210 .

図6は、図2の計算タイル200など、ニューラルネットワーク(NN)計算タイルを用いてテンソル計算を実行するためのプロセス600の例示的なフローチャートである。プロセス600はブロック602で始まり、所与のNNモデルおよびアーキテクチャについて、特定レベルよりも下の遅延および特定レベルよりも上のスループットを可能にするために、十分なパラメータをチップ上の第2メモリにロードする。スループットとは、大量の要求/推論が存在する中で実現される最大限のパフォーマンスである。遅延とは、1つの要求を計算するのにかかる最低限の時間である。プロセス600は、ブロック604に続き、計算タイル200の幅狭メモリ210は入力活性化データバス216に活性化を1つずつ送る(すなわちブロードキャストする)。活性化値は、幅狭メモリ210に格納される。幅狭メモリ210は、入力量にアクセスするための特定のメモリ位置へのアドレス指定を許可するスタティックランダムアクセスメモリ(SRAM)バンクの集まりであり得る。メモリ210から読み出された活性化は、入力活性化バス216を介して、複数のMAC演算子215および合計レジスタ220を含むMACアレイ214(すなわち、線形ユニット)の線形セルにブロードキャストされる。プロセス600のブロック606において、計算タイル200のMAC演算子215は各々2つの入力を受け取り、1つの入力(活性化)は入力活性化バス216から受け取られ;別の入力(パラメータ)は幅広メモリ212から受け取られる。したがって、活性化は、各MAC演算子215の入力のうちの1つを供給し、MACアレイ214のセル内の各MAC演算子215は幅広メモリ212からそれらの第2の乗数入力を得る。 FIG. 6 is an exemplary flowchart of a process 600 for performing tensor computations using a neural network (NN) computational tile, such as computational tile 200 of FIG. Process 600 begins at block 602, where sufficient parameters are stored in a second memory on-chip to allow delay below a specified level and throughput above a specified level for a given NN model and architecture. to load. Throughput is the maximum performance achieved in the presence of a large number of requests/inferences. Delay is the minimum amount of time it takes to compute one request. Process 600 continues at block 604 where narrow memory 210 of compute tile 200 sends (ie, broadcasts) activations to input activation data bus 216 one by one. The activation values are stored in narrow memory 210 . Narrow memory 210 may be a collection of static random access memory (SRAM) banks that allow addressing of specific memory locations to access input quantities. Activations read from memory 210 are broadcast via input activation bus 216 to the linear cells of MAC array 214 (ie, a linear unit) that includes a plurality of MAC operators 215 and a sum register 220 . At block 606 of process 600, MAC operators 215 of compute tile 200 each receive two inputs, one input (activation) from input activation bus 216; received from. Activation therefore supplies one of the inputs for each MAC operator 215 , and each MAC operator 215 within a cell of MAC array 214 gets its second multiplier input from wide memory 212 .

プロセス600のブロック608において、計算タイル200のMACアレイ214は、メモリからアクセスされるデータアレイ構造の要素に基づいて内積計算を含むテンソル計算を実行する。幅広メモリ212は、線形ユニットの幅(例えば、32ビット)に等しいビット単位の幅を有し得る。したがって、線形ユニット(LU)は、ベクトルメモリ(すなわち、幅広メモリ212)からデータを受け取るSIMDベクトル算術論理ユニット(ALU)ユニットである。いくつかの実現例では、MAC演算子215は、幅広メモリ212からアキュムレータ入力(部分和)も取得し得る。いくつかの実現例では、2つの異なるオペランド(パラメータおよび部分和)に関する読出および/または書込について、幅広メモリ212ポートに対して時分割がある。一般に、領域を最適化するために、幅広メモリ212は限られた数のポートを有し得る。その結果、幅広メモリ212からオペランド(例えば、パラメータ)を読み出し、同時に幅広メモリ212にオペランド(例えば、部分和)を書き込む必要がある場合、特定のオペランドに関連するパイプラインが機能停止し得る。 At block 608 of process 600, MAC array 214 of compute tile 200 performs tensor computations, including dot product computations, based on the elements of the data array structure accessed from memory. Wide memory 212 may have a width in bits equal to the width of a linear unit (eg, 32 bits). Thus, a linear unit (LU) is a SIMD vector arithmetic logic unit (ALU) unit that receives data from vector memory (ie, wide memory 212). In some implementations, MAC operator 215 may also obtain accumulator inputs (partial sums) from wide memory 212 . In some implementations, there is time sharing to wide memory 212 ports for reads and/or writes for two different operands (parameters and partial sums). In general, wide memory 212 may have a limited number of ports to optimize area. As a result, if an operand (eg, parameter) needs to be read from wide memory 212 and simultaneously written to wide memory 212 (eg, a partial sum), the pipeline associated with the particular operand may stall.

ブロック610において、計算タイル200の計算セル(MAC演算子215および合計レジスタ220を有する)が、MAC/計算セルによって実行される乗算演算に基づいて少なくとも1つの出力活性化を生成する。MACセル演算の結果は、(部分和算術演算中に)メモリに書き戻される部分和、または出力バス218に送られる出力活性化のいずれかを含む。計算タイル200のNLU222は、出力活性化に非線形活性化関数を適用し、活性化を幅狭メモリ210に書き込み得る。いくつかの実現例では、出力バス218はシフトレジスタであり、MAC演算子215からの結果/出力活性化の並列ロードを累積し、非線形関数の適用および同じタイルの幅狭メモリ210への書き込み動作のために、それらを一度に1つずつシフトアウトすることができる。 At block 610, a computational cell (having MAC operator 215 and sum register 220) of computational tile 200 generates at least one output activation based on the multiplication operation performed by the MAC/computational cell. The results of MAC cell operations include either partial sums written back to memory (during partial sum arithmetic operations) or output activations sent to output bus 218 . NLU 222 of compute tile 200 may apply a non-linear activation function to the output activations and write the activations to narrow memory 210 . In some implementations, output bus 218 is a shift register that accumulates parallel loads of results/output activations from MAC operator 215, applies non-linear functions and write operations to narrow memory 210 in the same tile. , they can be shifted out one at a time.

この明細書において記載される実施の形態は、以下の2方面からの見解を利用する。1)ほとんどの既存のNN(Neural Network)アクセラレータのボトルネックは、NN重み(パラメータとしても知られる)をロードするために必要なメモリ帯域幅である。2)生成モデルにおけるパラメータの数が大きくても、すなわち、ほとんどのモデルが数MB~数百MBであるのに対して、数KB~数GBであっても、これらの数字は、例えばタイル間で分散させたメモリを用いた、オンチップメモリを含むハードウェアで実現できる範囲内である。 The embodiments described in this specification make use of the following two points of view. 1) The bottleneck of most existing Neural Network (NN) accelerators is the memory bandwidth required to load the NN weights (also known as parameters). 2) Even if the number of parameters in the generative model is large, i.e. several KB to several GB, whereas most models are several MB to hundreds of MB, these numbers are It is within the realm of hardware implementation including on-chip memory using memory distributed in .

大容量メモリ、例えば、キャッシュまたはスクラッチパッドをダイ上に追加してすべてのパラメータを含むだけでは、十分でない。メモリ帯域幅による制限を克服することの目的は、アーキテクチャの性能をスケールアウトすることである。それは、演算子、通常、MACの数を増やすことを意味する。しかし、高い性能を実現するために、パラメータとともにこれらの演算子をサイクル毎に供給できるようにならなければならない。また、「性能」をスループットとしてだけでなく遅延としても理解することが重要である。これは、多くのユーザと向い合うアプリケーションについて言えることである。 Adding a mass memory, eg, cache or scratchpad, on the die to contain all the parameters is not sufficient. The goal of overcoming memory bandwidth limitations is to scale out the performance of the architecture. That means increasing the number of operators, usually MACs. However, to achieve high performance, we must be able to supply these operators along with their parameters every cycle. Also, it is important to understand "performance" not only as throughput, but also as delay. This is true for applications that face many users.

別の言い方をすると、NN(Neural Network)アクセラレータでは、1つの層にパラメータを一度にロードすることは、非常にコストがかかる。パラメータをチップ上に予めロードすることができれば、ロードする必要があるのは、ランタイム時の活性化だけで済む。つまり、実施の形態は、大規模なオンチップメモリを備える。 In other words, in Neural Network (NN) accelerators, loading parameters into one layer at a time is very costly. If the parameters can be preloaded onto the chip, they only need to be loaded at runtime activation. Thus, embodiments include extensive on-chip memory.

この明細書において記載される実施の形態は、ニューラルネットワーク(NN:Neural Network)アクセラレータの動作および設計に影響を与える。実施の形態は、ニューラルネットワークアクセラレータ設計の顕著な限定の1つである、低い遅延と高いスループットとの組合せに取り組む。NNアクセラレータがニューラルネットワーク全体を表していることを想定する。入力は、なんらかのデータ、例えば、小さい画像または音声である。NNアクセラレータは、層を1つずつ実行する。性能およびエネルギーにおいてコストがかかるのは、層のパラメータを1つずつロードすることである。NNアクセラレータは、ある層のパラメータをロードし、計算を行い、層の出力を保持し、その後、次の層のパラメータをロードする。このプロセスにおいてメモリ帯域幅のほとんどが消費されてしまう箇所である。 The embodiments described herein affect the operation and design of Neural Network (NN) accelerators. Embodiments address one of the significant limitations of neural network accelerator design: low delay combined with high throughput. Assume that the NN accelerator represents the entire neural network. The input is some data, eg a small image or sound. The NN accelerator executes layers one by one. It is costly in performance and energy to load the layer parameters one by one. The NN accelerator loads the parameters of one layer, performs the calculations, holds the output of the layer, and then loads the parameters of the next layer. This is where most of the memory bandwidth is consumed in this process.

パラメータをチップ上に常駐させることによって、高いスループットならびに特定のNNモデルおよびアーキテクチャを考慮して、遅延が劇的に低減される。アクセラレータは、数バイト音声をロードするだけでよく、その後、アクセラレータは、非常に高速になり得る。アクセラレータは、高いメモリ帯域幅を必要とせず、エネルギーは下がる。 By having the parameters reside on-chip, the delay is dramatically reduced given the high throughput and specific NN models and architectures. The accelerator only needs to load a few bytes of audio, after which the accelerator can be very fast. Accelerators do not require high memory bandwidth and are energy efficient.

メモリがメモリからCPUにロードされるノイマンモデルは、一般的なアーキテクチャである。メモリがダイの一端に常駐し、計算演算子がダイの他端に常駐するこのような従来のノイマンモデルのようなアーキテクチャは、実用的ではなく、不可能でない場合は、大量の演算子を用いる場合、メモリ(またはメモリバンク)から演算子にデータを転送するための膨大な数の配線を意味する。その代わりに、本発明の実施の形態は、NN計算のメモリ局所参照性という特性を有効利用して、(図2および図8に示すような)タイル間でメモリを分散させたタイル構成にアーキテクチャを構成する。 The von Neumann model, where memory is loaded from memory to the CPU, is a common architecture. Architectures like this conventional von Neumann model, where memory resides at one end of the die and computational operators reside at the other end of the die, are impractical and, if not impossible, use a large number of operators. In the case, it means a huge number of wires for transferring data from memory (or memory bank) to the operator. Instead, embodiments of the present invention take advantage of the memory-locality property of NN computations to architecture into tile configurations that distribute memory among the tiles (as shown in FIGS. 2 and 8). configure.

NNは、大規模であるが、巨大ではないため、1つまたは数個のNNのすべてのパラメータを1つのチップ上に効果的に収めるところまで近づくことができる。NNアクセラレータは、自己完結型アーキテクチャに移行しつつある。タイルアーキテクチャの場合、メモリをチップ内でパーティション分割できる。1つの大容量SRAMをチップの片隅に有する代わりに、実施の形態は、タイル毎にしかるべきSRAMを割り当てて、オンチップ帯域幅問題も回避する。特定の実施の形態では、各タイルの幅広メモリは、パラメータを含んでおり、(幅広メモリと幅が概ね同様の)幅広リングは、幅広メモリを高い帯域幅で供給する。この明細書において記載される実施の形態は、アーキテクチャの変形例を考える。NN層の特性によっては、実施の形態は、少なくとも以下の2つのNNアーキテクチャを有し得る。 Because NNs are large, but not gigantic, we can come close to effectively fitting all the parameters of one or a few NNs onto a single chip. NN accelerators are moving towards self-contained architectures. For tiled architectures, memory can be partitioned within the chip. Instead of having one large SRAM in one corner of the chip, embodiments allocate an appropriate amount of SRAM per tile to avoid on-chip bandwidth issues as well. In a particular embodiment, the wide memory in each tile contains parameters, and the wide ring (of approximately similar width as the wide memory) feeds the wide memory with high bandwidth. The embodiments described herein contemplate architectural variations. Depending on the characteristics of the NN layer, embodiments can have at least the following two NN architectures.

大部分が全結合層から構成されるニューラルネットワークでは、層間でパラメータを再利用することはあまりない。全結合層に含まれるニューロンは、前の層に含まれるすべての活性化への全結合を有する。パラメータが再利用されない全結合ニューラルネットワークを考える(バッチ処理がない場合、例えば、リアルタイムアプリケーションを考える)。すべてのパラメータが幅広メモリ内に含まれていない場合、リングバスを介して外部メモリからパラメータをフェッチしなければならない。その場合、設計全体の性能が外部メモリ帯域幅によって限定されてしまう。すべてのパラメータが幅広メモリに常駐する場合、外部メモリへアクセスする必要がなく、サイクル毎にすべての演算子をパラメータとともに供給することができ、パフォーマンスを最大限に活用できる。パラメータをフェッチするためだけに外部メモリを利用する代わりに、この明細書において記載される実施の形態は、パラメータを幅広メモリ内に常駐させたままにする。 Neural networks, which consist mostly of fully connected layers, do not often reuse parameters between layers. A neuron contained in a fully connected layer has full connections to all activations contained in the previous layer. Consider a fully-connected neural network where parameters are not reused (without batching, eg, consider a real-time application). If all parameters are not contained in wide memory, they must be fetched from external memory via the ring bus. In that case, the performance of the overall design is limited by the external memory bandwidth. If all parameters reside in wide memory, there is no need to access external memory and all operators can be supplied with parameters every cycle, maximizing performance. Instead of utilizing external memory only to fetch parameters, the embodiments described herein keep parameters resident in wide memory.

例として、全結合層において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あたりである。 As an example, consider a model with 50M parameters (or 50MB for clarity) in a fully connected layer. Consider an accelerator with 16384 MACs running at 1 GHz. Consider that the input to the model is 16KB. All values are reasonable for the current application. Maximum performance corresponds to running the model in 50×10̂6/(16384×10̂9)=3.05×10̂-6 seconds. This corresponds to a memory bandwidth of (50×10̂6+16,384)/(3.05×10̂-6)=16.40 TB/s. As a point of comparison, a typical DRAM chip is roughly around 10 GB/s, while state-of-the-art High Bandwidth Memory (HBM) is around 256 GB/s.

畳み込みニューラルネットワークは、1つのタイルから別のタイルへパラメータを渡す。パラメータがニューロン(活性化としても知られる)間で再利用される、大部分が畳み込み層から構成されるニューラルネットワークでは、メモリ帯域幅要件は、あまり高くないが、一般に、通常の外部メモリよりは高い。リング帯域幅は、パラメータをタイルにロードするのに十分であり得るが、当該リングと同じ幅の大容量オンダイメモリに接続される。言い換えると、推論ごとに、タイルがモデルのすべてのパラメータにアクセスする/当該パラメータをロードする必要がある。これは、どのモデルにも当てはまる。ニューラルネットワークにおける全結合層について唯一異なるのは、各パラメータが1つの推論時に1度しか使われないことである。畳み込み層に関しては、パラメータは、層内で複数回使用される。 Convolutional neural networks pass parameters from one tile to another. In neural networks composed mostly of convolutional layers, where parameters are reused between neurons (also known as activations), the memory bandwidth requirements are not very high, but generally high. The ring bandwidth may be sufficient to load the parameters into the tiles, but connected to a large on-die memory as wide as the ring. In other words, every inference requires the tile to access/load all parameters of the model. This applies to any model. The only difference for fully connected layers in neural networks is that each parameter is used only once during an inference. For convolutional layers, the parameters are used multiple times within the layer.

例として、畳み込み層に50M個のパラメータを含むモデルを考える。これらの層のうちいくつかは非常に小さく、他は大きい可能性があるため、パラメータの再利用にばらつきがある。モデル間の妥当な平均は、パラメータ当たり、最大100回の再利用である。よって、上記と同じ理論を用いると、帯域幅要件は、16.40TB/s/100~164GB/sまで下がる。しかし、費用対効果が大きいDRAMの帯域幅要件は、依然高いままである。しかしながら、上記アーキテクチャでは、同じ幅の大容量メモリに接続された164×8=1312ビットの幅広リングが、適正速度でタイルを供給できる。 As an example, consider a model with 50M parameters in a convolutional layer. Some of these layers may be very small and others large, resulting in variable reuse of parameters. A reasonable average between models is a maximum of 100 reuses per parameter. So, using the same theory as above, the bandwidth requirement drops to 16.40 TB/s/100-164 GB/s. However, the bandwidth requirements for cost-effective DRAMs remain high. However, with the above architecture, a wide ring of 164×8=1312 bits connected to a large memory of the same width can feed the tiles at reasonable speed.

メモリが全結合モデルの層のすべてのパラメータを含むのに十分である第1の実施の形態を考える。1つ層上ですべてのタイルが同時に動作する場合、パラメータをタイル間で分散させる必要がある。実施の形態は、タイル間で各層の出力ニューロン/活性化を分割する。実行時、各タイルは、層のサブセットを処理し、対応する部分和を計算して隣に渡す。すなわち、部分和はリングの周りを回り、すべてを回った後、タイルが最終和を生成する。 Consider a first embodiment in which the memory is sufficient to contain all the parameters of the layers of the fully connected model. If all tiles operate simultaneously on a layer, the parameters need to be distributed among the tiles. Embodiments divide the output neurons/activations of each layer between tiles. At runtime, each tile processes a subset of layers and computes the corresponding partial sums to pass to its neighbor. That is, the partial sums go around the ring and after all around the tiles produce the final sum.

第2の実施の形態は、タイルが同じパラメータを同時に利用するため、すべてのタイルの(現在使用されている)パラメータの同じサブセットを予めロードする/キャッシュすることを含む。実行時、部分的な活性化和でないパラメータ(サブセット)がリングの周りを回る。 A second embodiment involves preloading/caching the same subset of (currently used) parameters for all tiles, since the tiles utilize the same parameters at the same time. At runtime, the parameters (subsets) that are not partial activation sums go around the ring.

タイルの数は、スケールファクタである。この明細書において記載される実施の形態を用いることによってメモリ要件を増やさないで遅延およびスループットを改善させることにより、堅牢なスケーリングを実現できる。しかしながら、計算能力を上げるためにタイルをまとめて処理すると、メモリ要件および必要な活性化の数が増えてしまう。メモリ帯域幅を従来のメモリオプションよりも増やすことなくバッチ処理型スケーリングを行うことは難しい。バッチ処理は、リアルタイムアプリケーションが伴うことが多く、遅延要件およびスループット要件が関係する。 The number of tiles is the scale factor. Robust scaling can be achieved by improving latency and throughput without increasing memory requirements by using the embodiments described herein. However, processing tiles together to increase computational power increases memory requirements and the number of activations required. Batch scaling is difficult without increasing memory bandwidth over traditional memory options. Batch processing often involves real-time applications and involves latency and throughput requirements.

注目に値するのは、パラメータをキャッシュに持っておくことは、パラメータをタイル配置の一部として幅広メモリに持っておくこととは異なるこということである。この明細書において記載されるようにタイルを配置することにより、コンパイル方式局所参照性が与えられる。例えば、全結合モデルをSRAMの隣に置くことによって、キャッシュモデルと比べて内部帯域幅が大きくなる。 It is worth noting that having parameters in cache is different than having parameters in wide memory as part of tiling. Laying out the tiles as described in this specification provides compiled-style local referencing. For example, placing the fully coupled model next to the SRAM results in higher internal bandwidth compared to the cache model.

この明細書において記載される実施の形態は、従来のニューラルネットワークアクセラレータよりも高速で動作する。特定の実施の形態は、さらに多くの演算子を有しており、演算子を供給するために、アクセラレータは、より多くの内部帯域幅が必要である。これに対処するためには、アーキテクチャがメモリを分散させて、パラメータをアクセラレータ上に集める必要がある。 The embodiments described herein operate faster than conventional neural network accelerators. Certain embodiments have more operators and the accelerator needs more internal bandwidth to supply the operators. To deal with this, the architecture needs to distribute the memory and collect the parameters on the accelerator.

現在最も大きなチップは、約650平方ミリメートルである。したがって、チップ上にSRAMを搭載できる量には制限がある。実施の形態は、所与の空間的制約において、3D積層を利用することを含む、高密度メモリを利用することを含む。 The largest chip today is about 650 square millimeters. Therefore, there is a limit to the amount of SRAM that can be mounted on a chip. Embodiments include utilizing high density memory, including utilizing 3D stacking, given spatial constraints.

この明細書において記載される実施の形態は、推論(訓練後)モードおよび訓練モードに当てはまる。 The embodiments described herein apply to inference (post-training) mode and training mode.

付加的な考慮として、別の階層レベルがある。メモリ階層があり、通常、レジスタファイル階層もある。パラメータがレジスタにロードされてレジスタが再利用され、メモリ帯域幅を拡張することができる。レジスタファイルおよびメモリにメモリ帯域幅がある。つまり、さらなるコスト削減、すなわち、メモリからレジスタファイルまで、そしてレジスタファイルから計算までの配線を減らすことができる。この明細書において記載される実施の形態では、レジスタファイルに関連する配線コストを低減することができる。SRAMからパラメータを直接消費してアドレス指定が行われる。つまり、メモリは、ALUを直接供給する。 An additional consideration is another hierarchy level. There is a memory hierarchy and usually there is also a register file hierarchy. Parameters are loaded into registers and registers can be reused to expand memory bandwidth. There is memory bandwidth in register files and memory. This means further cost savings, ie less wiring from memory to register files and from register files to computation. The embodiments described herein can reduce wiring costs associated with register files. Addressing is done by consuming parameters directly from SRAM. That is, the memory directly feeds the ALU.

図7は、ディープニューラルネットワーク(DNN)に関連するテンソル計算を加速するための計算システム700の別の実施の形態のブロック図を示す。システム700は、一般に、コントローラ/アンコア(UNCORE)702、メモリインターフェース708、ならびに第1のタイルセット112および第2のタイルセット714を含む複数のタイルを含む。コントローラ702は一般に、データメモリ704、命令メモリ706、およびコンピュータ可読記憶媒体にエンコードされた1つまたは複数の命令を実行するように構成された少なくとも1つのプロセッサを含む。命令メモリ706は、コントローラ702の1つまたは複数のプロセッサによって実行可能な1つまたは複数の機械可読命令を格納することができる。データメモリ704は、システム700内で発生する計算に関連する様々なデータを格納し、その後それらのデータにアクセスするための、様々なデータ記憶媒体のうちのいずれでもよい。 FIG. 7 shows a block diagram of another embodiment of a computation system 700 for accelerating tensor computations associated with deep neural networks (DNN). System 700 generally includes a controller/UNCORE 702 , a memory interface 708 , and multiple tiles including first tileset 112 and second tileset 714 . Controller 702 generally includes data memory 704, instruction memory 706, and at least one processor configured to execute one or more instructions encoded on a computer-readable storage medium. Instruction memory 706 may store one or more machine-readable instructions executable by one or more processors of controller 702 . Data memory 704 may be any of a variety of data storage media for storing and subsequently accessing various data related to computations occurring within system 700 .

コントローラ702は、命令メモリ706に格納されている命令を含む、システム700内のテンソル計算に関係する1つまたは複数の命令を実行するように構成されている。いくつかの実現例では、データメモリ704および命令メモリ706は揮発性メモリユニット(単数または複数)である。他のいくつかの実現例では、データメモリ704および命令メモリ706は不揮発性メモリユニット(単数または複数)である。データメモリ704および命令メモリ706はまた、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、もしくはテープ装置、フラッシュメモリもしくは他の類似の固体メモリ装置、またはストレージエリアネットワークもしくは他の構成の装置を含む装置のアレイなど、別の形態のコンピュータ可読媒体であってもよい。様々な実現例では、コントローラ702は、コアマネージャ702として参照されるかまたはそのように呼ばれ得る。 Controller 702 is configured to execute one or more instructions related to tensor computation within system 700 , including instructions stored in instruction memory 706 . In some implementations, data memory 704 and instruction memory 706 are volatile memory unit(s). In some other implementations, data memory 704 and instruction memory 706 are non-volatile memory unit(s). Data memory 704 and instruction memory 706 may also include floppy disk drives, hard disk drives, optical disk drives, or tape drives, flash memory or other similar solid state memory devices, or devices in storage area networks or other configurations. It may also be another form of computer readable medium, such as an array of devices comprising. In various implementations, controller 702 may be referred to or called as core manager 702 .

メモリインターフェース708は、I/Oリンクから命令およびデータパラメータを受け取り、命令およびパラメータをコントローラ702に与える。一般に、命令は命令バス(コントローラとタイルとの間の命令バスは図示せず)を介してシステム100内の1つまたは複数のデバイスに与えることができ、パラメータはリングバス728を介してシステム700内の1つまたは複数のデバイスに与えることができる。いくつかの実現例では、命令は初期時にホストインターフェース708からコントローラ702によって受け取られ、後のコントローラ702による実行のために命令メモリ706に格納される。 Memory interface 708 receives instructions and data parameters from the I/O link and provides instructions and parameters to controller 702 . Generally, instructions can be provided to one or more devices in system 100 via a command bus (the command bus between the controller and the tiles is not shown), and parameters can be sent to system 700 via ring bus 728. can be provided to one or more devices within In some implementations, instructions are initially received by controller 702 from host interface 708 and stored in instruction memory 706 for subsequent execution by controller 702 .

リングバス728は、コントローラ702から始まり、タイル712、714をリング状にコントローラ702に接続し戻すバスデータ経路を介して結合する通信を与える。様々な実現例では、リングバス728は、一般に、すべてのタイル712、714内のすべての幅広メモリユニットを接続または結合する。したがって、リングバス728のペイロード幅は、タイルセット712、714の各タイル内に配置された幅広メモリユニットの幅に対応する。上述のように、リングバス728も、リングバス728を介して通信される命令またはパラメータを含むペイロードデータを消費する必要があるタイルを示すビットマップヘッダを含む。 Ring bus 728 provides communication originating from controller 702 and coupling tiles 712 , 714 in a ring through a bus data path connecting back to controller 702 . In various implementations, a ring bus 728 generally connects or couples all wide memory units in all tiles 712,714. Thus, the payload width of ring bus 728 corresponds to the width of the wide memory units located within each tile of tilesets 712,714. As noted above, ring bus 728 also includes a bitmap header that indicates which tiles need to consume payload data, including instructions or parameters communicated over ring bus 728 .

リングバス728を介して特定のタイルで受け取られるデータ(すなわちペイロード)に関しては、情報の受信に応答して、各タイルは、受信タイルに固有のビットマップヘッダに示される位置データをゼロに(すなわちクリア)してから、そのデータを別のタイルに転送する。したがって、ヘッダビットマップが、ペイロードを受け取ることになっている特定のタイルを示す残りのビットセットデータを有さないとき、別のタイルへのペイロードの転送は停止することになる。ペイロードデータは、一般に、深くネスト化されたループの実行に基づいて実行されるテンソル計算中に1つまたは複数のタイルによって用いられる活性化および重みを指す。 With respect to data (i.e. payload) received at a particular tile via ring bus 728, in response to receiving information, each tile zeroes (i.e. clear) and then transfer that data to another tile. Therefore, the transfer of payload to another tile will stop when the header bitmap has no remaining bitset data indicating the particular tile that is to receive the payload. Payload data generally refers to activations and weights used by one or more tiles during tensor computations performed based on execution of deeply nested loops.

いくつかの実現例では、コントローラ702は、リングバス728の一部であると説明され得る。一例では、特定のタイル内で実行されるDMAOp命令について、コントローラ702を用いて、リングバスストップからデータ/ペイロードをポップし、そのペイロードをリング内の次のタイル内のリングバスストップに転送してもよい。コントローラ702はさらに、ビットマップヘッダ内の命令によって必要とされる場合には、ペイロードデータをタイルの1つまたは複数の幅広メモリユニットにコミットさせることができる。データを書き込む必要がある1つまたは複数の幅広メモリユニットのアドレスは、特定のタイル内でDMAOp命令によって生成されてもよい。 In some implementations, controller 702 may be described as part of ring bus 728 . In one example, for a DMAOp instruction executing within a particular tile, controller 702 is used to pop data/payload from a ring bus stop and transfer the payload to a ring bus stop within the next tile in the ring. good too. The controller 702 can also cause payload data to be committed to one or more wide memory units of the tile if required by instructions in the bitmap header. The address of one or more wide memory units to which data needs to be written may be generated by a DMAOp instruction within a particular tile.

様々な実現例では、タイルセット712、714の各タイルは、ペイロードデータのプロデューサまたはペイロードデータのコンシューマのいずれかであることができる。タイルがペイロードデータのプロデューサである場合、タイルは、それの幅広メモリユニットのうちの1つまたは複数からデータを読み出し、そのデータを1つまたは複数の他のタイルによる消費のためにリングバス728を介してマルチキャストする。タイルがペイロードデータのコンシューマである場合、タイルはデータを受け取り、そのタイル内の1つまたは複数の幅広メモリユニットに書き込み、そのペイロードデータを1つまたは複数の他のタイルによる消費のために転送する。リングバス728を介したペイロードデータの移動に関しては、通常、任意の所与の時間においてリングバス728上にはデータのプロデューサ/マスターは1つだけである。すべてのタイルにおけるDMAOp命令実行順序(例えば、FIFO制御方式)は、所与の時間にリングバス728上にデータのプロデューサ/マスターが1つだけ存在することを保証するであろう。 In various implementations, each tile in the tilesets 712, 714 can be either a producer of payload data or a consumer of payload data. If a tile is a producer of payload data, the tile reads data from one or more of its wide memory units and sends the data to ring bus 728 for consumption by one or more other tiles. multicast via If a tile is a consumer of payload data, the tile receives the data, writes it to one or more wide memory units within that tile, and forwards the payload data for consumption by one or more other tiles. . With respect to moving payload data over ring bus 728, there is typically only one producer/master of data on ring bus 728 at any given time. The DMAOp instruction execution order (eg, FIFO control scheme) in all tiles will ensure that there is only one producer/master of data on ring bus 728 at any given time.

いくつかの実現例では、コントローラ702は、同期フラグ制御アーキテクチャを用いて、所与の時間にリングバス728上にペイロードデータのプロデューサ/マスターが1つだけ存在することを保証する。一例では、タイルによるリング出力への書込ごとに、対応する同期フラグカウントの増分がトリガされることになる。コントローラ702は、ペイロードデータを調べて、ペイロードを含むデータチャンクまたはセグメントの数を判断することができる。次にコントローラ702は、タイルによる実行を監視して、他のタイルがマスターモードで実行する前に、予想された数のデータセグメントがそのタイルによって転送および/または消費されることを保証する。 In some implementations, controller 702 uses a synchronization flag control architecture to ensure that there is only one producer/master of payload data on ring bus 728 at any given time. In one example, each write by a tile to the ring output would trigger a corresponding increment of the sync flag count. Controller 702 can examine the payload data to determine the number of data chunks or segments that contain the payload. Controller 702 then monitors execution by the tile to ensure that the expected number of data segments are transferred and/or consumed by that tile before other tiles execute in master mode.

リングバス728上に重複領域を持たない、リングバス728を介して接続されるローカルマルチキャストグループがある場合、リングバス728上には所与の時間にデータのプロデューサ/マスターが1つだけであることを保証することに例外が生じる。このデュアルマスターマルチキャスト方法の重要な要件は、パケットの重複が発生し、1つまたは複数のデータ計算エラーを引き起こす可能性があるため、異なるマルチキャストグループが互いのデータパケットを参照できないようにすることである。 If there is a local multicast group connected via ring bus 728 that has no overlapping regions on ring bus 728, there is only one producer/master of data on ring bus 728 at any given time. There are exceptions to guaranteeing An important requirement of this dual-master multicast method is to prevent different multicast groups from seeing each other's data packets, as packet duplication may occur and cause one or more data computation errors. be.

図1とは対照的に、図7のタイルは、それ自体が矩形パターンを形成している一方、リングバスによってジグザグにまたは蛇行して接続されている。例示の実施の形態では、アクセラレータは、それぞれ8個および16個のタイルから構成される。別の実施の形態では、アクセラレータは、さらに多くのタイルを含み得る。 In contrast to FIG. 1, the tiles in FIG. 7, while themselves forming a rectangular pattern, are connected in a zigzag or serpentine fashion by ring buses. In the illustrated embodiment, the accelerators consist of 8 and 16 tiles, respectively. In another embodiment, the accelerator may contain more tiles.

図8は、図2の計算タイルを簡略化した図である。
図9は、図2の計算タイル200など、ニューラルネットワーク(NN)計算タイルを用いてテンソル計算を実行するためのプロセス900の例示的なフローチャートである。プロセス900は、ブロック902で始まり、例えば、実行前に、NN重みパラメータをNNアクセラレータにロードする。プロセス900は、ブロック904に続き、実質的にアクセラレータ外部のニューラルネットワーク重みパラメータにアクセスしないで、アクセラレータへの入力を処理する。ブロック906において、プロセスは、アクセラレータへの入力を処理することに基づいて、少なくとも1つの出力活性化を生成する。
FIG. 8 is a simplified diagram of the calculation tile of FIG.
FIG. 9 is an exemplary flowchart of a process 900 for performing tensor computations using a neural network (NN) computational tile, such as computational tile 200 of FIG. Process 900 begins at block 902 by loading NN weight parameters into the NN accelerator, eg, prior to execution. Process 900 continues at block 904 to process the input to the accelerator without substantially accessing neural network weight parameters outside the accelerator. At block 906, the process generates at least one output activation based on processing the input to the accelerator.

本明細書において記載される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的等価物を含む、デジタル電子回路系において、有形で実施されるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの1つまたは複数の組合せにおいて実現され得る。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的なプログラム担体上でエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実現され得る。代替的に、または加えて、プログラム命令は、データ処理装置による実行に対して好適な受信側装置への送信のために情報をエンコードするよう生成される、たとえばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝播される信号上でエンコードすることができる。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つまたは複数の組合せであり得る。 The subject matter and functional operational embodiments described herein are computer software or firmware tangibly embodied in digital electronic circuitry, including the structures disclosed herein and their structural equivalents. , in computer hardware, or in one or more combinations thereof. Embodiments of the subject matter described herein may be implemented as one or more computer programs, i.e., tangible, non-transitory programs for execution by a data processing apparatus or for controlling operation of a data processing apparatus. can be implemented as one or more modules of computer program instructions encoded on a program carrier. Alternatively or additionally, the program instructions are generated to encode information for transmission to a receiving device suitable for execution by a data processing device, e.g., a machine-generated electrical signal, an optical It can be encoded on a signal, or an artificially generated propagated signal, such as an electromagnetic signal. A computer storage medium may be a computer readable storage device, a computer readable storage substrate, a random or serial access memory device, or a combination of one or more thereof.

本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を実行するよう1つまたは複数のプログラマブルコンピュータが1つまたは複数のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローは、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)といった特殊目的論理回路、またはGPGPU(汎用グラフィック処理装置)によっても実行され得、装置もそれらにより実現され得る。 The processes and logic flows described herein are performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. can be performed. The processes and logic flows may also be performed by special purpose logic circuits such as FPGAs (Field Programmable Gate Arrays), ASICs (Application Specific Integrated Circuits), or GPGPUs (General Purpose Graphics Processing Units), and the devices may also be implemented by them. .

コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための1つまたは複数のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つまたは複数の大容量記憶装置を含むか、当該1つまたは複数の大容量記憶装置からデータを受取るかもしくは当該1つまたは複数の大容量記憶装置にデータを転送するよう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそのような装置を有する必要はない。 A processor suitable for the execution of a computer program may, by way of example, be based on general and/or special purpose microprocessors or any kind of central processing unit. Generally, a central processing unit receives instructions and data from read-only memory and/or random-access memory. The essential elements of a computer are a central processing unit for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices, such as magnetic, magneto-optical or optical disks, for storing data or receives data from such one or more mass storage devices. and/or operably coupled to transfer data to the one or more mass storage devices. However, a computer need not have such devices.

コンピュータプログラム命令およびデータを格納するのに好適であるコンピュータ可読媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイス;たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスクを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または特殊目的論理回路に組み込まれ得る。 Computer readable media suitable for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media and memory devices including semiconductor memory devices such as EPROM, EEPROM and flash memory devices; Includes magnetic disks such as hard disks or removable disks. The processor and memory may be supplemented by, or incorporated into, special purpose logic circuitry.

本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求されていさえする場合もあるが、請求される組合せからの1つまたは複数の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に向けられ得る。 While this specification contains details of many specific implementations, these should not be construed as limitations on the scope of any invention or what may be claimed, rather than specific embodiments of the specific invention. It should be construed as a description of what may be a unique feature. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Further, while features may be described above and even initially claimed to act in certain combinations, one or more features from the claimed combination may in some cases be such It may be omitted from the combination and the claimed combination may be directed to subcombinations or variations of subcombinations.

同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利であり得る。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは一般に単一のソフトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。 Similarly, although acts have been presented in the figures in a particular order, it should be understood that such acts must be performed in the particular order presented or in a sequential order to achieve desirable results. It should not be understood, or that all illustrated acts must be performed. Multitasking and parallel processing can be advantageous in some situations. Further, the separation of various system modules and components in the above-described embodiments should not be understood to require such separation in all embodiments, and the program components and systems described generally are a single software module. It should be understood that it can be integrated into a product or packaged into multiple software products.

主題の特定の実施形態を説明した。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある実現例においては、マルチタスキングおよび並列処理が有利であり得る。 Particular embodiments of the subject matter have been described. Other embodiments are within the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As an example, the processes illustrated in the accompanying figures do not necessarily require the particular order shown or sequential order to achieve desirable results. Multitasking and parallel processing may be advantageous in some implementations.

Claims (25)

テンソル計算を加速するためのアクセラレータであって、
前記アクセラレータは、1以上の計算ユニットを含み、各計算ユニットは、
a.入力活性化または出力活性化のうちの少なくとも1つを格納するための第1メモリバンクと、
b.計算を実行する際に用いられるニューラルネットワークパラメータを格納するための第2メモリバンクとを備え、前記第2メモリバンクは、十分な量の前記ニューラルネットワークパラメータを前記計算ユニット上に格納し、所与のニューラルネットワーク(「NN」)モデルおよびアーキテクチャについて、特定レベルよりも下の遅延および特定レベルよりも上のスループットを可能にするように構成され、
c.前記各計算ユニットはさらに、前記第2メモリバンクからパラメータを受け取って計算を実行する少なくとも1つの積和(「MAC」)演算子を含む複数のセルの各々を備え、前記複数のセルの各々は、単一の命令により、異なるデータを処理するアレイとして構成され、
d.前記各計算ユニットはさらに、少なくとも前記第1メモリバンクとデータ通信する第1のトラバーサルユニットを備え、前記第1のトラバーサルユニットは、前記第1メモリバンクに制御信号を与えて、関連するセルに含まれる関連するMAC演算子によってアクセス可能なデータバスに入力活性化を与えるように構成され、
e.前記アクセラレータは、データアレイの少なくとも1つの要素に関連する1つまたは複数の計算を実行し、前記1つまたは複数の計算は、前記MAC演算子によって実行され、部分的に、前記データバスから受け取られる前記入力活性化と前記第2メモリバンクから受け取られるパラメータとの乗算演算を含む、アクセラレータ。
An accelerator for accelerating tensor computation, comprising:
The accelerator includes one or more computational units, each computational unit comprising:
a. a first memory bank for storing at least one of input activations or output activations;
b. a second memory bank for storing neural network parameters for use in performing computations, said second memory bank storing a sufficient amount of said neural network parameters on said computing unit to allow a given configured to allow delay below a specified level and throughput above a specified level for a neural network ("NN") model and architecture of
c. Each of said computation units further comprises a plurality of cells each including at least one multiply-accumulate ("MAC") operator for receiving parameters from said second memory bank and performing computations, each of said plurality of cells each comprising : , configured as an array that processes different data with a single instruction,
d. Each computing unit further comprises a first traversal unit in data communication with at least the first memory bank, the first traversal unit providing control signals to the first memory bank to cause associated cells to configured to provide an input activation to a data bus accessible by an associated MAC operator included;
e. The accelerator performs one or more computations associated with at least one element of a data array, the one or more computations performed by the MAC operator and received in part from the data bus. and a multiplication operation of the input activations received from the second memory bank and parameters received from the second memory bank.
前記1以上の計算ユニットは、第1のセットと、第2のセットとに分割され、
前記第1のセットおよび前記第2のセットの各々は、前記単一の命令を用いて、出力ニューロンのサブセットの同時計算を実行する、請求項1に記載のアクセラレータ。
the one or more computing units are divided into a first set and a second set;
2. The accelerator of claim 1, wherein each of said first set and said second set perform concurrent computation of subsets of output neurons using said single instruction.
前記第1メモリバンクと、前記第2メモリバンクと、前記第1のトラバーサルユニットと、前記少なくとも1つのMAC演算子とが同一のダイに収められている、請求項1または2に記載のアクセラレータ。 3. The accelerator of claim 1 or 2, wherein said first memory bank, said second memory bank, said first traversal unit and said at least one MAC operator are included on the same die. 前記第2メモリバンクは、100,000個よりも多くのパラメータを格納するように構成される、請求項1~3のいずれかに記載のアクセラレータ。 Accelerator according to any of claims 1 to 3, wherein said second memory bank is arranged to store more than 100,000 parameters. 前記第2メモリバンクは、1,000,000個よりも多くのパラメータを格納するように構成される、請求項1~3のいずれかに記載のアクセラレータ。 Accelerator according to any of claims 1 to 3, wherein said second memory bank is configured to store more than 1,000,000 parameters. 前記第2メモリバンクは、100,000,000個よりも多くのパラメータを格納するように構成される、請求項1~3のいずれかに記載のアクセラレータ。 Accelerator according to any of claims 1 to 3, wherein said second memory bank is arranged to store more than 100,000,000 parameters. 前記第2メモリバンクは、SRAMを含む、請求項1~6のいずれかに記載のアクセラレータ。 7. The accelerator according to claim 1, wherein said second memory bank includes SRAM. 前記第2メモリバンクは、3D SRAMを含む、請求項1~7のいずれかに記載のアクセラレータ。 The accelerator according to any one of claims 1 to 7, wherein said second memory bank comprises 3D SRAM. テンソル計算を加速するための、計算ユニットを備えるコンピュータにより実現される方法であって、
a.第1メモリバンクが第1のトラバーサルユニットから制御信号を受け取ったことに応答して、前記第1メモリバンクによって第1の入力活性化を送るステップを含み、前記第1メモリバンクは、前記計算ユニット内に配置され、前記第1の入力活性化は、前記計算ユニットの複数のセルによってアクセス可能なデータバスによって与えられ、前記方法は、さらに、
b.前記複数のセルによって、計算を実行する際に用いられるニューラルネットワークパラメータを格納するための第2メモリバンクから1つまたは複数のパラメータを受け取るステップを含み、前記第2メモリバンクは、十分な量の前記ニューラルネットワークパラメータを前記計算ユニット上に格納し、所与のニューラルネットワーク(「NN」)モデルおよびアーキテクチャについて、特定の閾値よりも下の遅延を特定の閾値よりも上のスループットとともに可能にし、前記複数のセルは、少なくとも1つの積和(「MAC」)演算子を含み、前記方法は、さらに、
c.関連するセルに含まれる関連するMAC演算子によって、データアレイの少なくとも1つの要素に関連する1つまたは複数の計算を実行し、前記1つまたは複数の計算は、部分的に、前記データバスからアクセスされる少なくとも前記第1の入力活性化と前記第2メモリバンクから受け取られる少なくとも1つのパラメータとの乗算演算を含み、
d.前記複数のセルの各々は、単一の命令により、異なるデータを処理するアレイとして構成される、方法。
A computer-implemented method comprising a computation unit for accelerating tensor computation, comprising:
a. sending a first input activation by said first memory bank in response to said first memory bank receiving a control signal from a first traversal unit, said first memory bank being adapted to said computation unit; and wherein said first input activation is provided by a data bus accessible by a plurality of cells of said computation unit, said method further comprising:
b. receiving, by the plurality of cells, one or more parameters from a second memory bank for storing neural network parameters used in performing computations, the second memory bank having a sufficient amount of storing said neural network parameters on said computing unit to allow for a given neural network (“NN”) model and architecture a delay below a certain threshold with a throughput above a certain threshold; The plurality of cells includes at least one sum-of-products (“MAC”) operator, the method further comprising:
c. performing one or more calculations associated with at least one element of a data array by associated MAC operators contained in associated cells, said one or more calculations being partially transferred from said data bus; a multiplication operation of at least the first input activation accessed and at least one parameter received from the second memory bank;
d. The method of claim 1, wherein each of said plurality of cells is configured as an array to process different data with a single instruction.
前記計算ユニットは、第1のセットと、第2のセットとに分割される複数の計算ユニットから構成され、
前記第1のセットおよび前記第2のセットの各々は、前記単一の命令を用いて、出力ニューロンのサブセットの同時計算を実行する、請求項9に記載の方法。
the computational unit comprises a plurality of computational units divided into a first set and a second set;
10. The method of claim 9, wherein each of said first set and said second set perform concurrent computation of subsets of output neurons using said single instruction.
前記第1メモリバンクと、前記第2メモリバンクと、前記第1のトラバーサルユニットと、前記少なくとも1つのMAC演算子とが同一のダイに収められている、請求項9または10に記載の方法。 11. A method according to claim 9 or 10, wherein said first memory bank, said second memory bank, said first traversal unit and said at least one MAC operator are housed on the same die. 前記第2メモリバンクは、100,000個よりも多くのパラメータを格納するように構成される、請求項9~11のいずれかに記載の方法。 A method according to any of claims 9-11, wherein said second memory bank is arranged to store more than 100,000 parameters. 前記第2メモリバンクは、1,000,000個よりも多くのパラメータを格納するように構成される、請求項9~11のいずれかに記載の方法。 A method according to any of claims 9-11, wherein said second memory bank is arranged to store more than 1,000,000 parameters. 前記第2メモリバンクは、SRAMを含む、請求項9~13のいずれかに記載の方法。 A method as claimed in any one of claims 9 to 13, wherein said second memory bank comprises SRAM. 前記第2メモリバンクは、3D SRAMを含む、請求項9~13のいずれかに記載の方法。 A method according to any of claims 9-13, wherein said second memory bank comprises 3D SRAM. 計算を実行する際に使用される前記ニューラルネットワークパラメータを前記第2メモリバンクにロードするステップをさらに含む、請求項9~15のいずれかに記載の方法。 A method according to any one of claims 9 to 15, further comprising loading said neural network parameters for use in performing calculations into said second memory bank. テンソル計算を加速するための、計算ユニットを備えるコンピュータにより実現される方法であって、
a.第1メモリバンクが制御信号を受け取ったことに応答して、前記第1メモリバンクによって第1の入力活性化を送るステップを含み、前記第1の入力活性化は、データバスによって送られ、前記方法は、さらに、
b.複数のセルに含まれる複数の積和(「MAC」)演算子によって、計算を実行する際に用いられるニューラルネットワークパラメータを格納するための第2メモリバンクから1つまたは複数のパラメータを受け取るステップを含み、前記第2メモリバンクは、十分な量の前記ニューラルネットワークパラメータを前記計算ユニット上に格納し、所与のニューラルネットワーク(「NN」)モデルおよびアーキテクチャについて、特定の閾値よりも下の遅延および特定の閾値よりも上のスループットを可能にし、前記方法は、さらに

c.前記複数のMAC演算子の各々によって、データアレイの少なくとも1つの要素に関連する1つまたは複数の計算を実行するステップを含み、前記1つまたは複数の計算は、部分的に、前記データバスからアクセスされる少なくとも前記第1の入力活性化と前記第2メモリバンクから受け取られる少なくとも1つのパラメータとの乗算演算を含み、
d.前記複数のセルは前記計算ユニットに含まれ、前記複数のMAC演算子の各々は、単一の命令により、異なるデータを処理するように構成される、方法。
A computer-implemented method comprising a computation unit for accelerating tensor computation, comprising:
a. sending a first input activation by said first memory bank in response to a first memory bank receiving a control signal, said first input activation being sent by a data bus; The method further
b. receiving one or more parameters from a second memory bank for storing neural network parameters used in performing calculations by a plurality of multiply-accumulate (“MAC”) operators contained in a plurality of cells; and said second memory bank stores a sufficient amount of said neural network parameters on said computation unit such that for a given neural network (“NN”) model and architecture, delays below a particular threshold and enabling throughput above a certain threshold, the method further comprising:
c. performing, by each of the plurality of MAC operators, one or more calculations associated with at least one element of a data array, the one or more calculations being partially from the data bus; a multiplication operation of at least the first input activation accessed and at least one parameter received from the second memory bank;
d. The method of claim 1, wherein the plurality of cells are included in the computing unit, and wherein each of the plurality of MAC operators is configured to process different data with a single instruction.
前記計算ユニットは、第1のセットと、第2のセットとに分割される複数の計算ユニットから構成され、
前記第1のセットおよび前記第2のセットの各々は、前記単一の命令を用いて、出力ニューロンのサブセットの同時計算を実行する、請求項17に記載の方法。
the computational unit comprises a plurality of computational units divided into a first set and a second set;
18. The method of claim 17, wherein each of said first set and said second set perform concurrent computation of subsets of output neurons using said single instruction.
前記第1メモリバンクと、前記第2メモリバンクと、第1のトラバーサルユニットと、前記複数のMAC演算子とが同一のダイに収められている、請求項17または18に記載の方法。 19. A method according to claim 17 or 18, wherein said first memory bank, said second memory bank, a first traversal unit and said plurality of MAC operators are housed on the same die. 前記第2メモリバンクは、100,000個よりも多くのパラメータを格納するように構成される、請求項17~19のいずれかに記載の方法。 A method according to any of claims 17-19, wherein said second memory bank is arranged to store more than 100,000 parameters. 前記第2メモリバンクは、1,000,000個よりも多くのパラメータを格納するように構成される、請求項17~19のいずれかに記載の方法。 A method according to any of claims 17-19, wherein said second memory bank is configured to store more than 1,000,000 parameters. 前記第2メモリバンクは、100,000,000個よりも多くのパラメータを格納するように構成される、請求項17~19のいずれかに記載の方法。 A method according to any of claims 17-19, wherein said second memory bank is configured to store more than 100,000,000 parameters. 前記第2メモリバンクは、SRAMを含む、請求項17~21のいずれかに記載の方法。 The method of any of claims 17-21, wherein said second memory bank comprises SRAM. 前記第2メモリバンクは、3D SRAMを含む、請求項17~21のいずれかに記載の方法。 A method according to any of claims 17-21, wherein said second memory bank comprises 3D SRAM. 計算を実行する際に使用される前記ニューラルネットワークパラメータを前記第2メモリバンクにロードするステップをさらに含む、請求項17~24のいずれかに記載の方法。 A method according to any of claims 17-24, further comprising loading said neural network parameters for use in performing calculations into said second memory bank.
JP2019568100A 2017-08-11 2018-08-09 Neural network accelerator with on-chip resident parameters Active JP7171622B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022176493A JP7546640B2 (en) 2017-08-11 2022-11-02 Neural network accelerator with on-chip parameters

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762544171P 2017-08-11 2017-08-11
US62/544,171 2017-08-11
PCT/US2018/045974 WO2019032808A1 (en) 2017-08-11 2018-08-09 Neural network accelerator with parameters resident on chip

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022176493A Division JP7546640B2 (en) 2017-08-11 2022-11-02 Neural network accelerator with on-chip parameters

Publications (2)

Publication Number Publication Date
JP2020532780A JP2020532780A (en) 2020-11-12
JP7171622B2 true JP7171622B2 (en) 2022-11-15

Family

ID=63449663

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019568100A Active JP7171622B2 (en) 2017-08-11 2018-08-09 Neural network accelerator with on-chip resident parameters
JP2022176493A Active JP7546640B2 (en) 2017-08-11 2022-11-02 Neural network accelerator with on-chip parameters

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022176493A Active JP7546640B2 (en) 2017-08-11 2022-11-02 Neural network accelerator with on-chip parameters

Country Status (9)

Country Link
US (4) US10504022B2 (en)
EP (1) EP3665622A1 (en)
JP (2) JP7171622B2 (en)
KR (3) KR20240060857A (en)
CN (1) CN109389214A (en)
DE (2) DE202018104609U1 (en)
GB (1) GB2568776B (en)
TW (2) TWI679590B (en)
WO (1) WO2019032808A1 (en)

Families Citing this family (81)

* 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 (en) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 Chip and data processing method based on chip
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
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
CN112189205A (en) * 2019-02-27 2021-01-05 华为技术有限公司 Neural network model processing method and device
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 (en) * 2019-03-21 2023-04-07 深兰科技(上海)有限公司 Parameter extraction method, device, equipment and medium
US10534747B2 (en) * 2019-03-29 2020-01-14 Intel Corporation Technologies for providing a scalable architecture for performing compute operations in memory
CN111782577B (en) 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 Data processing device and method and related product
EP3825847B1 (en) * 2019-04-04 2022-05-11 Cambricon Technologies Corporation Limited Data processing method and apparatus, and related product
CN111831337B (en) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 Data synchronization method and device and related product
CN111966401A (en) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 Instruction processing method and device and related product
CN111985628B (en) * 2019-05-24 2024-04-30 澜起科技股份有限公司 Computing device and neural network processor comprising same
CN112148391A (en) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 Method, apparatus, device and storage medium for generating chip-based computing function
US11941512B2 (en) * 2019-06-26 2024-03-26 Western Digital Technologies, Inc. Neural network engine utilizing a serial bus
US20220405221A1 (en) * 2019-07-03 2022-12-22 Huaxia General Processor Technologies Inc. System and architecture of pure functional neural network accelerator
CN114341888A (en) * 2019-07-03 2022-04-12 华夏芯(北京)通用处理器技术有限公司 Instructions for operating accelerator circuitry
KR20210006120A (en) * 2019-07-08 2021-01-18 에스케이하이닉스 주식회사 Data storing device, Data Processing System and accelerating DEVICE therefor
CN112541581A (en) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 Acceleration computing unit and acceleration computing system
CN110633153A (en) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 Method for realizing neural network model splitting by using multi-core processor and related product
US10915298B1 (en) 2019-10-08 2021-02-09 Ali Tasdighi Far Current mode multiply-accumulate for compute in memory binarized neural networks
DE102019127795A1 (en) * 2019-10-15 2021-04-15 Infineon Technologies Ag Circuit and a method for determining a position of a magnet and 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
KR20210077352A (en) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 Data Processing System and accelerating DEVICE therefor
EP4010848A1 (en) * 2019-12-18 2022-06-15 Google LLC Parameter caching for neural network accelerators
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US11922292B2 (en) 2020-01-27 2024-03-05 Google Llc Shared scratchpad memory with parallel load-store
DE102020201182A1 (en) * 2020-01-31 2021-08-05 Robert Bosch Gesellschaft mit beschränkter Haftung Hardware-accelerated calculation of convolutions
EP4100887A4 (en) * 2020-03-05 2023-07-05 Huawei Cloud Computing Technologies Co., Ltd. Method and system for splitting and bit-width assignment of deep learning models for inference on distributed systems
US20210295145A1 (en) * 2020-03-23 2021-09-23 Mentium Technologies Inc. Digital-analog hybrid system architecture for neural network acceleration
US12073310B2 (en) * 2020-04-01 2024-08-27 Microsoft Technology Licensing, Llc Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
CN113568665B (en) * 2020-04-29 2023-11-17 北京希姆计算科技有限公司 Data processing device
US11501151B2 (en) * 2020-05-28 2022-11-15 Arm Limited Pipelined accumulator
CN113806246A (en) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 Data processing device and method and related product
US20220004399A1 (en) * 2020-07-03 2022-01-06 Mediatek Inc. Dynamic loading neural network inference at dram/on-bus sram/serial flash for power optimization
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
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
KR102673748B1 (en) * 2020-11-27 2024-06-10 한국전자통신연구원 Multi-dimension dma controller and computer system comprising the same
JP7485086B2 (en) 2020-12-10 2024-05-16 日本電信電話株式会社 Instruction processing method and instruction processing circuit
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
US11481865B2 (en) * 2021-02-11 2022-10-25 Qualcomm Incorporated Methods and apparatus for tensor object support in machine learning workloads
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 (en) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 Hardware accelerator, system and method for accelerating graph neural network attribute access
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
KR102700292B1 (en) * 2021-11-26 2024-08-29 건국대학교 산학협력단 Processor device dynamically reconfiguring communication characteristics of neural network accelerator, method for operating the same
WO2023139990A1 (en) * 2022-01-24 2023-07-27 LeapMind株式会社 Neural network circuit and neural network computation method
US11977499B2 (en) * 2022-03-22 2024-05-07 Google Llc Streaming transfers and ordering model
CN114781632B (en) * 2022-05-20 2024-08-27 重庆科技大学 Deep neural network accelerator based on dynamic reconfigurable pulse tensor operation engine
US12045612B2 (en) 2022-09-12 2024-07-23 International Business Machines Corporation Special-purpose digital-compute hardware for efficient element-wise aggregation, scaling and offset
CN115586885B (en) * 2022-09-30 2023-05-05 晶铁半导体技术(广东)有限公司 In-memory computing unit and acceleration method
KR20240136054A (en) * 2023-03-06 2024-09-13 주식회사 유엑스팩토리 Convolutional neural network system
US11886974B1 (en) * 2023-07-20 2024-01-30 Chromatic Inc. Neural network chip for ear-worn device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117900A (en) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd Neural network arithmetic device

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03121581A (en) * 1989-10-04 1991-05-23 Olympus Optical Co Ltd Character reader
JP3102027B2 (en) 1990-11-20 2000-10-23 日本電気株式会社 Nesting management mechanism for loop control
US5958048A (en) 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
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
US7047480B2 (en) * 2002-11-12 2006-05-16 Microsoft Corporation Matrix multiplication in a Galois field for forward error correction
US7225439B2 (en) 2003-03-21 2007-05-29 Sun Microsystems, Inc. Combining write-barriers within an inner loop with fixed step
CN1259617C (en) 2003-09-09 2006-06-14 大唐微电子技术有限公司 Montgomery analog multiplication algorithm and its analog multiplication and analog power operation circuit
JP2008529119A (en) 2005-01-25 2008-07-31 エヌエックスピー ビー ヴィ Multithreaded 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
ATE463788T1 (en) 2007-06-26 2010-04-15 Ericsson Telefon Ab L M 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
US9519617B2 (en) 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
CN104081341B (en) 2011-12-23 2017-10-27 英特尔公司 The instruction calculated for the element offset amount in Multidimensional numerical
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
US8952963B1 (en) 2014-02-13 2015-02-10 Raycast Systems, Inc. Computer hardware architecture and data structures for a grid traversal unit to support incoherent ray traversal
CN105260322B (en) 2014-06-30 2020-09-01 中兴通讯股份有限公司 Method and device for eliminating cyclic shift of cyclic buffer area
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
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
CN105184366B (en) * 2015-09-15 2018-01-09 中国科学院计算技术研究所 A kind of time-multiplexed general neural network processor
US10353860B2 (en) * 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
CN105488565A (en) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 Calculation apparatus and method for accelerator chip accelerating deep neural network algorithm
US11170294B2 (en) * 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
CN105892989B (en) * 2016-03-28 2017-04-12 中国科学院计算技术研究所 Neural network accelerator and operational method thereof
CN108416436B (en) * 2016-04-18 2021-06-01 中国科学院计算技术研究所 Method and system for neural network partitioning using multi-core processing module
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
KR102120396B1 (en) * 2016-05-26 2020-06-08 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 Accelerator for deep neural networks
US10498855B2 (en) * 2016-06-17 2019-12-03 Cisco Technology, Inc. Contextual services in a network using a deep learning agent
CN106485317A (en) * 2016-09-26 2017-03-08 上海新储集成电路有限公司 A kind of neutral net accelerator and the implementation method of neural network model
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
CN106557332A (en) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 A kind of multiplexing method and device of instruction generating process
CN106875011B (en) * 2017-01-12 2020-04-17 南京风兴科技有限公司 Hardware architecture of binary weight convolution neural network accelerator and calculation flow thereof
CN106909970B (en) * 2017-01-12 2020-04-21 南京风兴科技有限公司 Approximate calculation-based binary weight convolution neural network hardware accelerator calculation device
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117900A (en) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd Neural network arithmetic device

Also Published As

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

Similar Documents

Publication Publication Date Title
JP7171622B2 (en) Neural network accelerator with on-chip resident parameters
JP7451483B2 (en) neural network calculation tile
US20220245453A1 (en) Redistributing tensor elements between machine learning computing units

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221102

R150 Certificate of patent or registration of utility model

Ref document number: 7171622

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150