JP2019109892A - 計算のためのシステムと方法 - Google Patents

計算のためのシステムと方法 Download PDF

Info

Publication number
JP2019109892A
JP2019109892A JP2018235311A JP2018235311A JP2019109892A JP 2019109892 A JP2019109892 A JP 2019109892A JP 2018235311 A JP2018235311 A JP 2018235311A JP 2018235311 A JP2018235311 A JP 2018235311A JP 2019109892 A JP2019109892 A JP 2019109892A
Authority
JP
Japan
Prior art keywords
data
processing element
node
circuits
node link
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018235311A
Other languages
English (en)
Other versions
JP7268996B2 (ja
Inventor
オフシァンニコフ,イリァ
Ovsiannikov Ilia
ミシェル ウァング,イービング
Michelle Wang Yibing
ミシェル ウァング,イービング
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019109892A publication Critical patent/JP2019109892A/ja
Application granted granted Critical
Publication of JP7268996B2 publication Critical patent/JP7268996B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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
    • G06F9/3897Concurrent 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 with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

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

Abstract

【課題】本発明の目的は、ニューラルネットワーク計算などを効率的に遂行するためのシステム及び方法の提供にある。【解決手段】スクラッチメモリは複数の設定可能な(configurable)ノードを含む、通信ファブリックを介し複数の設定可能なプロセシング素子に連結される。スクラッチメモリは、データワードの複数のストリームを外に伝送する。各々のデータワードは制御部分及びデータ部分を有し、前者によりノード又はプロセシング素子の設定のための設定ワードであるか、被演算子又は結果を伝達するデータワードであるか、を識別する。各々のプロセシング素子は、現在設定により演算を遂行し、通信ファブリックに結果を返還する。通信ファブリックは結果をスクラッチメモリに伝達する。【選択図】図1

Description

本発明は、計算のためのシステムと方法に関し、より詳細には、ニューラルプロセシングアクセラレータ{NEURAL PROCESSING ACCELERATOR}において必要な並列計算の遂行のための設定可能なシステム(configurable system)とその方法に関する。
ニューラルネットワーク(neural network)の学習(training)及び推論(inference)のためのプロセシングシステムと関連された技術は一般に高コストにつき、効率的な希薄性演算(sparse operations)のような、ニューラルネットワーク計算に頻繁に使用される、多様なテンソル計算(tensor calculation)に容易に適用するには、柔軟性が不足する。
従って、ニューラルネットワーク計算を遂行するための改善されたシステムが必要である。
米国公開特許 第2014/0095923A1号公報 米国公開特許 第2014/0092728A1号公報 米国公開特許 第2016/0179434A1号公報 米国公開特許 第2017/0277658A1号公報 ヨーロッパ公開特許 第EP3035203A1号公報
SCHUMAN, CATHERINE D., et al. "A Survey of Neuromorphic Computing and Neural Networks in Hardware", U.S. Department of Energy and Oak Ridge National Laboratory, 88 pgs, May 19, 2017.
本発明は、前述された技術的問題を解決するためのものであって、ニューラルネットワーク計算を効率的に遂行するためのシステム及び方法を提供することにある。
本発明の一つの実施例によると、計算のためのシステムが提供される。前記システムは、複数のプロセシング素子回路、複数のノード(node)回路を包含する通信ファブリック(fabric)、及びスクラッチメモリを包含し、前記スクラッチ(scratch)メモリは、前記通信ファブリックを介して前記プロセシング素子回路と連結され、一つ以上の前記プロセシング素子回路は、設定値を格納するように構成された設定レジスタ(register)を包含し、一つ以上の前記プロセシング素子回路は、2個の入力から2個の各々のデータワード(data word)を受信し、前記2個のデータワードの各々は、制御部分及びデータ部分を有し、前記2個のデータワードのうち、一つがデータワードをプロセシング素子設定(configuration)ワードとして識別する制御部分を有する場合、前記設定レジスタに前記プロセシング素子設定ワードの前記データ部分を前記設定値として格納し、前記2個のデータワードが、全てプロセシング素子設定ワードではない場合、前記設定値に基づき前記2個のデータワードに対する演算を遂行するように構成される。
一つの好ましい実施例において、前記演算を遂行することは、前記設定値がエレメントワイズ(elementwise)の乗算を指定する場合、前記2個のデータワードのうちの第1データワードの前記データ部分と、前記2個のデータワードのうちの第2データワードの前記データ部分とを乗算することを包含する。
一つの好ましい実施例において、前記演算を遂行することは、前記設定値がエレメントワイズ(elementwise)の加算を指定する場合、前記2個のデータワードのうちの第1データワードの前記データ部分と、前記2個のデータワードのうちの第2データワードの前記データ部分とを加算することを包含する。
一つの好ましい実施例において、前記演算を遂行することは、前記設定値が乗算及び累積を指定する場合、前記2個のデータワードのうちの第1データワードの前記データ部分に、前記2個のデータワードのうちの第2データワードの前記データ部分を乗算して積を形成すること、及び前記積を累積器の累積値に加算することを包含する。
一つの好ましい実施例において、前記プロセシング素子回路のうちの一つは、5000個以下のゲート(gate)を包含する。
一つの好ましい実施例において、前記ノード回路のうちの一つは、2000個以下のゲートを包含する。
本発明の一つの実施例によると、計算のためのシステムが提供される。前記システムは、複数のプロセシング素子回路、複数のノード(node)回路を包含する通信ファブリック(fabric)及びスクラッチメモリを包含し、前記スクラッチメモリは、前記通信ファブリックを介して前記プロセシング素子回路と連結され、一つ以上の前記ノード回路は複数のノードリンク回路を包含し、前記複数のノード回路のうち、第1ノード回路の前記複数のノードリンク回路のうち、第1ノードリンク回路は複数の入力及び一つの出力を有し、
前記第1ノードリンク回路は、データレジスタ及び設定値を格納するように構成された設定レジスタを包含し、前記第1ノードリンク回路は、前記入力において複数の各々のデータワードを受信するように構成され、前記データワードの各々は制御部分及びデータ部分を有し、前記データワードのうちの一つがデータワードをノードリンク設定ワードとして識別する制御部分を有する場合、前記設定レジスタに前記ノードリンク設定ワードの前記データ部分を前記設定値として格納し、前記データワードが、全てノードリンク設定ワードではない場合、前記設定値に基づき前記入力のうち、一つから前記データレジスタにデータワードを伝送し、及び/又は、前記入力のうち、一つから前記出力にデータワードを伝送し、及び/又は、前記データレジスタから前記出力にデータワードを伝送する。
一つの好ましい実施例において、一つ以上の前記ノード回路は、実質的に直交する方向においてノード回路の内側に向かう4個の入力、及び実質的に直交する方向において前記ノード回路の外側に向かう4個の出力を有する。
一つの好ましい実施例において、一つ以上の前記ノード回路のうち、一つのノード回路は4個のノードリンク回路を包含し、前記4個のノードリンク回路の各々は、前記ノード回路の前記4個の入力に各々連結される4個の入力及び前記回路の前記4個の出力のうち、各々の一つに連結される一つの出力を有する。
一つの好ましい実施例において、前記プロセシング素子回路のうちの一つは、5000個以下のゲートを包含する。
一つの好ましい実施例において、前記ノード回路のうちの一つは、2000個以下のゲートを包含する。
一つの好ましい実施例において、前記スクラッチメモリは、メモリバンク(bank)及びメモリコントローラを包含し、前記メモリコントローラは複数の行キャッシュ(cache)を包含し、一つ以上の前記行キャッシュは、前記データワードと同一のビット幅を有し、前記メモリコントローラは、前記メモリバンクから前記行キャッシュにデータを伝達し、前記行キャッシュから前記メモリバンクにデータを伝達するように構成され、
一つ以上の前記行キャッシュは、前記データワードのシーケンス(sequence)を外にストリーム(stream out)し、前記データワードのシーケンスを内にストリーム(stream in)するように構成される。
一つの好ましい実施例において、前記行キャッシュのうちの一つは、二重バッファである。
一つの好ましい実施例において、各々の前記データワードのうち、前記制御部分は4ビットの幅を有し、各々の前記データワードのうち、前記データ部分は16ビットの幅を有する。
本発明の一つの実施例によると、計算方法が提供される。前記方法は、プロセシングモジュールを設定するステップを包含し、前記プロセシングモジュールは、複数のプロセシング素子回路、各々が複数の入力及び一つの出力を有する複数のノードリンク回路を包含する、通信ファブリック(fabric)及びスクラッチメモリを包含し、
前記設定するステップは、前記スクラッチメモリが複数のノードリンク設定ワードを伝送するステップと、ここで、前記複数のノードリンク設定ワードの各々は、前記複数のノードリンク回路のうち、一つのノードリンク回路に送られ、前記複数のノードリンク回路のうち、第1ノードリンク回路が前記第1ノードリンク回路に送られるデータワードを受信するステップと、ここで、前記第1ノードリンク回路は、前記複数のプロセシング素子回路のうち、第1プロセシング素子回路の一つの入力に連結される一つの出力を有し、
前記第1ノードリンク回路が、前記第1ノードリンク回路の第1入力において受信されたデータワードを前記第1ノードリンク回路の前記出力に伝達するように、前記第1ノードリンク回路が前記第1ノードリンク回路の構成を設定するステップと、前記第1ノードリンク回路のうち、前記第1入力によりプロセシング素子設定ワードを受信するステップと、前記第1ノードリンク回路の前記出力により前記プロセシング素子設定ワードを前記第1プロセシング素子回路を伝送するステップと、前記第1プロセシング素子回路が、前記第1プロセシング素子回路の設定レジスタ(register)に前記プロセシング素子設定ワードのデータ部分を格納するステップと、を包含する。
一つの好ましい実施例において、前記方法は、複数の積を計算するステップをさらに包含し、前記計算するステップは、前記スクラッチメモリが第1の複数のノードリンク回路を介して延伸する第1経路を通じて、被演算子の第1シーケンス(sequence)を前記第1プロセシング素子回路に伝送するステップと、前記スクラッチメモリが、第2複数のノードリンク回路を介して延伸する第2経路を通じて被演算子の第2シーケンスを、前記第1プロセシング素子の回路に伝送するステップと、前記第1プロセシング素子が、ペアごとの(pairwise)積のシーケンスを計算するステップと、を包含し、各々のペアごとの積は、被演算子の前記第1シーケンスの一つの被演算子及び被演算子の前記第2シーケンスの対応する一つの被演算子の積である。
一つの好ましい実施例において、前記方法は、密集性表現(dense representation)から 希薄性表現(sparse representation)に第1ベクトルを変換するステップをさらに包含し、前記第1ベクトルは、ノンゼロ値を有する第1エレメントを包含し、前記第1エレメントの直後には、ゼロの値を有する第2エレメントが続き、前記変換するステップは、前記第1エレメントを第1の2−タプル(tuple)に交替するステップを包含し、第1の2−タプルは、前記1ベクトルの前記第1エレメントと同一の第1エレメント及び1より大きい第2エレメントを有する。
一つの好ましい実施例において、前記方法は、第2ベクトルの希薄性表現を前記第1ベクトルの前記稀薄性表現と整列させるステップをさらに包含し、前記整列させるステップは、前記第2ベクトルの前記希薄性表現から前記第1ベクトルの前記第2エレメントに対応する2−タプルを削除するステップ、及び前記第2ベクトルの第1の2−タプルの第2エレメントの値を増加させるステップを包含し、前記第2ベクトルの前記第1の2−タプルは、前記削除された2−タプルの直ぐ前に来る。
一つの好ましい実施例において、前記方法は、前記複数のプロセシング素子回路のうち、一つのプロセシング素子回路が前記第1ベクトルの前記第1の2−タプルの前記第1エレメントと前記第2ベクトルの前記第1の2−タプルの第1エレメントとを乗算して、結果として2−タプルの第1エレメントを形成するステップ、及び前記結果としての2−タプルの第2エレメントを前記第1ベクトルの前記第1の2−タプルの前記第2エレメントと同一に設定するステップと、をさらに包含する。
一つの好ましい実施例において、前記プロセシング素子回路のうちの一つは、5000個以下のゲートを包含し、前記ノードリンク回路のうちの一つは、500個以下のゲートを包含する。
本発明によるニューラルプロセシング計算のためのシステムと方法は、データワードが制御部分とデータ部分を有し、好ましくはデータ部分に希薄性表現が用いられるので、プロセシングの際の演算量を、従って電力消費を節減でき、さらに、ニューラルプロセシング計算のためのシステムのチップ面積を削減して、製造費用を減少できる。
図1は、本発明の一つの実施例による計算のためのシステムのレイアウト概略図である。 図2は、本発明の一つの実施例による計算のためのデータの流れ図である。 図3は、本発明の一つの実施例による計算のためのデータの流れ図である。 図4は、本発明の一つの実施例による計算のためのデータの流れ図である。 図5は、本発明の一つの実施例による計算のためのデータの流れ図である。 図6は、本発明の一つの実施例による計算のためのデータの流れ図である。 図7は、本発明の一つの実施例による計算のためのデータの流れ図である。 図8は、本発明の一つの実施例による計算のためのデータの流れ図である。 図9は、本発明の一つの実施例による計算のためのデータの流れ図である。 図10は、本発明の一つの実施例による計算のためのデータの流れ図である。 図11は、本発明の一つの実施例による計算のためのデータの流れ図である。 図12は、本発明の一つの実施例による計算のためのデータの流れ図である。 図13は、本発明の一つの実施例による計算のためのデータの流れ図である。 図14は、本発明の一つの実施例による計算のためのデータの流れ図である。 図15は、本発明の一つの実施例による計算のためのデータの流れ図である。 図16は、本発明の一つの実施例によるノードリンクのブロック図である。 図17は、本発明の一つの実施例によるノードリンクのブロック図である。 図18は、本発明の一つの実施例によるノードリンクのブロック図である。 図19は、本発明の一つの実施例による計算のためのシステムの部分ブロック図である。 図20は、本発明の一つの実施例による再設定動作のためのデータの流れ図である。 図21は、本発明の一つの実施例によるプロセシング素子のブロック図である。 図22は、本発明の一つの実施例によるプロセシング素子のブロック図である。 図23は、本発明の一つの実施例によるスクラッチメモリのブロック図である。 図24は、本発明の一つの実施例によるスクラッチメモリのブロック図である。 図25は、本発明の一つの実施例によるスクラッチメモリのブロック図である。 図26は、本発明の一つの実施例によるスクラッチメモリのブロック図である。 図27は、本発明の一つの実施例によるスクラッチメモリのブロック図である。
添付された図面と関連して、以下に開示された詳細な説明は、本発明により提供されるニューラルプロセシングアクセラレータの実施例の説明として意図され、本発明が構成されたり活用されたりできる唯一の形態を示すものと意図されない。説明は、図示された実施例と関連して本発明の特徴を開示する。しかしながら、同一の又は同等の機能及び構造は、発明の思想及び範囲内に包含されるように意図された、他の実施例により達成されることができる。本明細書に示したように、同一の要素番号は、同一の要素又は特徴を示すものと意図される。
図1を参照すると、幾つかの実施例において、ニューラルプロセシングシステムは、スクラッチ(scratch)メモリ115及び複数のプロセシング素子(PE: processing element)120を各々包含する複数のプロセシングモジュール110を包含し、プロセシング素子120は互いに連結され、通信ファブリック(fabric)125によりスクラッチメモリに連結される。動作時、スクラッチメモリ115は、通信ファブリック125を介してプロセシング素子120に被演算子(operand)を提供し、プロセシング素子120は、結果を生成するために被演算子を処理し、該結果は通信ファブリック125を介してスクラッチメモリ115(又は、他のスクラッチメモリ115)にフィードバック(feedback)される。通信ファブリック125は、以下でより詳細に説明されるように、複数の相互連結されたノード(interconnected nodes)を包含し、ノードの各々は、複数の入力及び出力を有し、任意の入力から任意の出力までデータを直接伝達するようにプログラムされる。これにより、通信ファブリック125は、スクラッチメモリ115とプロセシング素子120との間に、及びプロセシング素子120のうちの任意の一つと他のプロセシング素子120との間にデータ経路を構築するようにプログラムされる。図1は物理的寸法通りに描かれていないけれども、幾つかの実施例は、通信ファブリック125を介して、プロセシング素子120同志の間に、及びスクラッチメモリ115とプロセシング素子120との間に、比較的短い通信経路を提供するように、図1のレイアウト(layout)を用いる。
図1に図示されたニューラルプロセシングシステムは、図2乃至図10,図11乃至図15を参照して以下でより詳細に説明されるように、多様なプロセシング作業を効率的に遂行するのに適している。図2は、エレメントワイズ(element−wise、要素別)のベクトル演算が如何に遂行されるかを示す。例えば、下記の[数1]のようなエレメントワイズのベクトル積が遂行される。
Figure 2019109892
幾つかの実施例において、モジュール又は全体ニューラルプロセシングシステムは、単一のクロックドメイン(clock domain)を有する、同期式デジタル回路である。メモリAからは、クロック周期当たり一つずつ第1被演算子のストリーム(stream)が提供され、メモリBからは、クロック周期当たり一つずつ第2被演算子のストリームが提供される。被演算子の各々のストリームは、一般的に異なる伝達遅延を有してプロセシング素子120に伝達される。従って、処理されるようにスケジュールされた時刻以前に各々の被演算子が伝送される。
図2の表記法において、例えば、一番目の二つの被演算子は、時刻(t)にプロセシング素子120により受信されるようにスケジュールされる。時刻(t)にプロセシング素子120により受信されるために、メモリAからの第1被演算子は、時刻(t_dA)に伝送され、ここで下付き添字dAは、クロック周期を単位とする時間を示す。例えば、メモリAからの一番目の被演算子は、dAクロック周期だけ時間(t)以前に伝送され、ここでdAは、通信ファブリック125が、メモリAからプロセシング素子120に被演算子を伝達するために使用するクロック周期を単位とする時間(以下、単に、時間という)。同様に、時刻(t)において、プロセシング素子120により受信されるために、メモリBからの一番目の被演算子は、時刻(t_dB)に伝送される。例えば、メモリBからの一番目の被演算子は、dB×クロック周期だけ時刻(t)以前に伝送され、ここでdBは、通信ファブリック125がメモリBからプロセシング素子120に被演算子を伝達するために使用する時間である。
伝達遅延時間dA及びdBは同一であるか又は異なる。各々の伝達遅延時間は、データが通信ファブリック125を介して伝達される経路及び経路に沿って存在するノードの設定(ノードの各々は、設定可能な遅延を有し得る)により異なり得る。残りの被演算子は、図示されたように、クロック周期当たり、メモリごとに、一つずつメモリA及びメモリBから順次伝送される。エレメントワイズの加算又は減算のような他のエレメントワイズの演算は、以下でより詳細に説明されるように、適切な演算を遂行するために設定されたプロセシング素子120を用いて同一の方式で遂行される。
プロセシング素子120はデータを処理し、結果(これは4個の積、即ち4個のエレメントからなる4エレメント(エレメントワイズ)積ベクトルと考えられる)を第3のメモリであるメモリCに伝送する。プロセシング遅延は、tp(即ち、pクロック周期)として図2において識別される。
メモリA,メモリB,及びメモリCは、全て一つのスクラッチメモリ115の部分(即ち、一つのプロセシングモジュール110のうち、スクラッチメモリ)であるか、又はメモリA、メモリB、及びメモリCのうち、一つ以上が他のスクラッチメモリ115の部分である。
図3は、エレメントワイズのマトリックス(matrix)演算が、如何に遂行されるかを示す。例えば、下記の[数2]のようなエレメントワイズのマトリックス積が遂行される。
Figure 2019109892
第1被演算子の3個の並列ストリーム(各々は、一番目の被乗数(multiplicand)の一つの行と対応する)はメモリAから提供され、第2被演算子の3個の並列ストリーム(各々は、二番目の被乗数の行と対応する)はメモリBから提供される。一番目の被乗数の第1の行と二番目の被乗数の第1の行のエレメントワイズの積が、第1プロセシング素子120aにより一度にワンペアのエレメント毎に形成される。同様に、一番目の被乗数の第2及び第3の行と二番目の被乗数の第2及び第3の行のエレメントワイズの積が、各々第2プロセシング素子120b及び第3プロセシング素子120cにより一度にワンペアのエレメント毎に形成される。
一番目の被乗数の一つの行と二番目の被乗数の対応する、一つの行の各々のエレメントワイズの積は、図2の各々の回路を用いて形成される。これにより、エレメントワイズの積が3個の因子により並列化される方式で遂行される。3個のベクトル演算(乗算される行の3ペアと対応される)が並列に遂行される。
他の実施例においては、同一の演算が、直列に遂行され(メモリAが単一のストリームで第1被演算子の12個のエレメントを一度に一つずつ伝送し、メモリBが単一のストリームで第2非演算子の12個のエレメントを一度に一つずつ伝送することにより)、又は同一の演算が並列化の他の方式で遂行されることができる(例えば、4個のプロセシング素子120の各々が、一番目の被乗数の各々の列と、二番目の被乗数の対応する列とのエレメントワイズの積の形成に関与する3個の乗算を遂行することにより、4個のプロセシング素子120により演算が並列化される)。
図4は、ベクトルの内積(dot product)が如何に遂行されるかを示す。例えば、下記の[数3]のようなベクトル内積演算が遂行される。
Figure 2019109892
上述のエレメントワイズのベクトル積の場合と同様に、第1被演算子のストリームがメモリAから提供され、第2被演算子のストリームがメモリBから提供される。プロセシング素子120は、内積を形成するためにエレメントワイズの積を累積し、結果を第3のメモリであるメモリCに伝送する。プロセシング素子120の累積器は、プロセシング素子120が設定(configuration)コマンドを受信する場合、リセットされる(以下でさらに詳細に説明される)。
図5は、マトリックス積の対角(diagonal)エレメントから構成されるベクトルが、例えば、下記の[数4]のようなマトリックス積の対角エレメントが如何に形成されるかを示す
Figure 2019109892
結果ベクトルのエレメントの各々は、一番目の入力マトリックス(一番目の被乗数)の行と、二番目の入力マトリックス(二番目の被乗数)の列の内積である。このような内積の各々は、図4を参照して、上で説明した方式で計算される(一番目の内積は、第1プロセシング素子120aにより計算され、二番目の内積は第2プロセシング素子120bにより計算され、三番目の内積は第3プロセシング素子120cにより計算される)。マトリックス積のエレメントの各々は、一番目の被乗数の一つの行と二番目の被乗数の一つの列の内積であるので、全体マトリックス積(図5でのように、算出された対角エレメント及び非対角(off−diagonal)エレメントを包含する)は、同様の方式で計算できる。
図6は、ベクトルの内積が、例えば、下記の[数5]のようなベクトルの内積が、累積器がないプロセシング素子120を用いて如何に形成されるか、を示す。
Figure 2019109892
第1プロセシング素子120aはエレメントワイズの積を遂行し、第2プロセシング素子120bは累積器として動作する。
図7は、定数カーネル(kernel)を有する1次元コンボルーション(convolution、畳み込み)が、例えば、下記の[数6]が如何に遂行されるか、を示す。
Figure 2019109892
カーネルのエレメント([1 2])は、例えば、メモリBにより、第1プロセシング素子120a及び第2プロセシング素子120bに予めプログラムされる(又は、以下でより詳細に説明されるように、このような二つのプロセシング素子120の各々の二番目の入力に連結された設定ファブリック(configuration fabric)の2個の各々のノードにプログラムされる)。被演算子のストリーム(この場合、値[a,b,c,d])は、メモリAから提供され、第1プロセシング素子120a及び第2プロシング素子120bの全てにブロードキャスト(broadcast)される(以下でより詳細に説明されるように、通信ファブリック125の適切な事前設定の結果として)。
第1プロセシング素子120aは、被演算子のストリームの各々のエレメントをカーネルの第1のエレメント(この例示において、1)と乗算し、第2プロセシング素子120bは、被演算子のストリームの各々のエレメントをカーネルの第2のエレメント(この例示において、2)と乗算する。積のストリームは、第3プロセシング素子120cに伝送される。積の二番目のストリーム(第2プロセシング素子120bにより生成された)は、積(a・1及びb・2)が同時に第3プロセシング素子120cに到着するように、1クロック周期だけ遅延されて伝送される。
通信ファブリック125又は第3プロセシング素子120cは、以下でより詳細に説明されるように、積(a・2)が通信ファブリック125又は第3プロセシング素子120cにより捨てられるように、積(a・1及びb・2)の到達以前のクロック周期の最中に再設定される。もしそうしなければ、以前のクロック周期で積(a・2)は、第3プロセシング素子120cにより受信されて処理されるであろう。積(d・1)も同様の方式で捨てられる。第3プロセシング素子120cは、図示されたように積(捨てられた積を除外して)をペアで加算してその和をメモリCに伝送する。
図8は、定数カーネルを有する2次元コンボルーションが、例えば、下記の[数7]が如何に遂行されるか、を示す。
Figure 2019109892
カーネルの一番目の行のエレメントは、例えば、メモリBにより、第1プロセシング素子120a及び第2プロセシング素子120bに予めプログラムされる。1次元コンプルーションの場合のように、被演算子のストリーム(この場合、値[a,b,c,d]は、メモリAから提供され、第1プロセシング素子120a及び第2プロセシング素子120bの全てにブロードキャストされる(以下でさらに詳細に説明されるように、通信ファブリック125の適切な事前設定の結果として)。第1プロセシング素子120aは、被演算子のストリームの各々のエレメントをカーネルの一番目のエレメント(この例示において、1)と乗算し、第2プロセシング素子120bは、被演算子のストリームの各々のエレメントをカーネルの二番目のエレメント(この例示において、2)と乗算する。
積のストリームは、第3プロセシング素子120cに伝送される。積の二番目のストリーム(第2プロセシング素子120bにより生成された)は、積(a・1及びb・2)が同時に第3プロセシング素子120cに到着するように、1クロック周期だけ遅延されて伝送される。コンボルーションの一部分ではない積は捨てられ(一つ以上のプロセシング素子120及び通信ファブリック125を再設定することにより)、第3プロセシング素子120cは、図示されたように、積(捨てられた積を除外して)をペアで加える。第4プロセシング素子120d、第5プロセシング素子120e及び第6プロセシング素子120fは共に、同様に入力マトリックスの二番目の行とカーネルの二番目の行の積の和を形成する。第3プロセシング素子120c及び第6プロセシング素子120fにより生成された和は、第7プロセシング素子120gに提供され、第7プロセシング素子120gは図示されたように、最終コンボルーションを形成する。
図9は、希薄性定数カーネルを有する2次元コンボルーションが、例えば、下記の[数8]が如何に遂行されるか、を示す。
Figure 2019109892
このコンボルーションは、図8に対応するコンボルーションと異なる。このコンボルーションにおいては、定数カーネルの二番目の行の二番目のエレメントが0であり(図8の計算においては、該エレメントは0ではなく、第5プロセシング素子120eにプログラムされる)、それ故、第5プロセシング素子120eが仮に存在しても、0を乗算するのみである。従って、第5プロセシング素子120eは図9の構成から除外される。第6プロセシング素子120fも同様に除外される。
図8の実施例においては、第6プロセシング素子120fは、入力マトリックスの二番目の行とカーネルの二番目の行の対応する項の積のペアの和を形成する。図9の実施例においては、各々の項の積のペアの内、一つの項の積は0であり、これにより第7プロセシング素子120gでは、第3プロセシング素子120cにより生成されている他の項の積が代わりに利用される。
図10は、定数カーネルを有する1×1次元コンボルーションが、例えば、下記の[数9]が如何に遂行されるか、を示す。
Figure 2019109892
図7の計算の場合と同様に、第1プロセシング素子120a及び第2プロセシング素子120bは、各々の定数項による乗算を遂行するために予めロードされ、第1プロセシング素子120a及び第2プロセシング素子120bの各々は、受信する各々の入力値を各々の定数と乗算する。得られた積は、第3プロセシング素子120cによりペアごとに加算される。
図11乃至図15は、数字シーケンス(sequence)内の一つ以上の0を表わすために用いられる「希薄性表現(sparse representation)」様式を利用して、希薄性の、ベクトル、マトリックス、及び他のテンソル(tensor)が、どのように効率的な方式で処理されるかを例示する。幾つかの実施例において、0(ゼロ)エレメントを省略する一方、各々のノンゼロ数字を2−タプル(tuple)として示すことにより、希薄性表現が達成される。2−タプルの一番目のエレメントは値であり、二番目のエレメントはアドレス増分(address increment)である。
一般的な、即ち「密集性(dense)」ベクトルの表現において次のエレメントがノンゼロであればアドレス増分は1であり、0であれば、アドレス増分は1に現在のエレメントに続く0の個数を加算したのである。これは、表1の2つの例示で示される。例えば、第1ベクトルは、4個のノンゼロエレメント([a,b,c,d])を有する。エレメントの全てがノンゼロであるので、このベクトルの希薄性表現の各々の2−タプルの一番目のエレメントは、密集性表現(dense representation)の対応するエレメントの値と同一であり、各々の2−タプルの二番目のエレメントは1である。第2ベクトルは4個のエレメントを有し、密集性表現では[1,2,0,4]と記載(write)される(即ち、第3のエレメントは0である)。第2ベクトルの希薄性表現において、0は省略され、これにより希薄性表現は3個の2−タプルのみを有する。0の値以前の値に対する2−タプルは、このエレメントの後に1つの0(ゼロ)が省略されたことを表わすように2の増分を有する。
Figure 2019109892
図11は、プロセシング素子120により希薄性形式が受信された場合、表1の二つのベクトルがどのように乗算されるかを示す。各々のクロック周期において、プロセシング素子120の2個の入力において受信された二つの2−タプルの二番目のエレメントは同一の値を有し、「結果2−タプル」(結果を格納する2−タプルであって、該、結果2−タプルの一番目のエレメントは、入力2−タプルの一番目のエレメントの積と同一である)の二番目のエレメントに対し上記の、同一の値を有する二番目のエレメントの値が用いられる。プロセシング素子120は、3個の演算で二つの4エレメントベクトル(二つの全てが、希薄性表現として提供され、二つのうち、一つは0の値を有する一つのエレメントを包含する)のエレメントワイズの積を計算する(3個の2−タプルにより希薄性表現として示される4エレメントの積ベクトルを形成するために)。
密集性表現から希薄性表現への変換は、スクラッチメモリ115のメモリコントローラ内の適切な回路により遂行できる。図12には希薄性表現への変換が例示される。ベクトル([a,b,c,d])の密集性表現は、メモリAから提供される。このベクトルは、0エレメントを包含しないので、このベクトルについての希薄性表現への変換は各々のエレメントを、一番目のエレメントがベクトルの密集性表現の対応するエレメントと同一であり、二番目のエレメント(アドレス増分)が1である2−タプルに変換する効果を有する。
ベクトル([1,2,0,4])は、メモリBから提供される。このベクトルは、0エレメントが二番目のエレメントの次に削除される信号に対し、三番目の位置に0エレメントを包含するので、二番目の2−タプルは二番目のエレメント(アドレス増分)「2」を有する。希薄性表現への変換結果は、図示されたように、他のメモリであるメモリCに格納される。希薄性表現から密集性表現への変換は、図13に図示されたように、同様の方式で、スクラッチメモリ115のメモリコントローラの適切な回路により遂行される。
即ち、ベクトル[a,b,c,d]の希薄性表現、[{a,1} {b,1} {c,1} {d,1}]は、メモリAから提供される。このベクトルは0エレメントを包含しないので(そして、これにより各々のアドレス増分は1であるので)、密集性表現への変換は、このベクトルにおける各々のエレメントの2−タプルを、該2−タプルの一番目のエレメントと同一の密集性表現のエレメントに変換する効果を有する。ベクトル([1,2,0,4])の希薄性表現、[{1,1} {2,2} {4,1}]は、メモリBから提供される。このベクトルは、二番目の2−タプルの二番目のエレメントにおいて、2のアドレス増分を有するので、二番目の2−タプルは、密集性表現の二つのエレメント(2及び0)に拡張される。他の二つの2−タプルの各々に対してアドレス増分は1であり、従って、該2−タプルの一番目のエレメントは、ベクトルの密集性表現の対応するエレメント値となる。対応するエレメント値は[1,2,0,4]である。密集性表現への変換結果は、図示されたように他のメモリであるメモリCに格納される。
図14に図示されたストリーム整列前処理ステップは、演算を遂行する前に希薄性表現の二つのベクトルのエレメントを整列するために利用される。演算が乗算であると(例えば、エレメントワイズの乗算又は内積)、他のベクトルの或るエレメントが0の値を有する場合に、一のベクトルの対応するノンゼロエレメントは削除される。又は、これと等価であるが、2−タプルは除去され、それに先行する2−タプルアドレス増分は、1だけ増加される。
図14の例示において、ストリーム整列ステップは、一番目のベクトルから三番目の2−タプルを削除し、それに先行する2−タプルのアドレス増分を1だけ({b,1}から{b,2}に)増加させる効果を有する。
但し、遂行される演算が加算であるか減算であると、何れか一方のベクトルが削除されていない2タプルを有する場合には、何れか一方のベクトルの各々の削除された2−タプルは、2−タプルの一番目のエレメントが0(ゼロ)を有する2−タプルとして回復されなければならない(そして、回復された2−タプルに先行する2−タプルのアドレス増分は1だけ減少される)。
図15は、希薄性表現の二つの整列されたストリームベクトルに遂行されるエレメントワイズの乗算を示す。プロセシング素子120は、(i)対応する結果2−タプルの一番目のエレメントを形成するために、受信された2−タプルの各対の一番目のエレメントについて演算(乗算)を遂行し、(ii)アドレス増分(アドレス増分は、ストリーム整列プロセスの結果として、入力2−タプルの全てについて同一である)を結果2−タプルのアドレス増分エレメントにコピーする。
通信ファブリック125は、4個のノードリンク(link)又は「ノードリンク回路」を各々包含する、複数のノード又は「ノード回路」を包含する。各々のノードは、本明細書において北側、南側、東側及び西側と称される4個の実質的に直交する方向からの4個の入力及び同一の方向への4個の出力を有する。図16は、一つの実施例においてノードリンク405を示す。ノードリンクは、ノードの4個の入力端に各々連結された4個の入力及びノードの4個の出力端のうち、一つに連結された一つの出力を有する。各々のノードリンクは設定レジスタ(configuration_register)410を包含し、設定レジスタ410の内容は、どの入力が出力と連結されるか、ノードリンクの受信されたデータを遅延させるか否か、又は一番最近に受信されたデータを定数として格納するか否かを制御する。
ノードリンクは、4入力マルチプレクサ(MUX:multiplexer)415、データレジスタ(RG)420及び2入力マルチプレクサ425を包含する。設定レジスタの2個のビットは、4入力マルチプレクサ415を制御し、4個の入力のうち、何れがノードリンク405の出力と連結されるかを選択する。設定レジスタの1個のビットは、データレジスタ420のクロック活性化(enable)入力(CE)を制御し、これにより(クロックが非活性化されている場合に)定数を格納(クロック入力が活性化されている最後の周期に格納された定数)するために利用される。2入力マルチプレクサ425(設定レジスタ410の1個のビットにより制御される)の設定は、ノードリンクの出力が、4入力マルチプレクサ415の出力値であるか、又はデータレジスタ420に格納された(定数又は遅延された)値であるか否かを判定する。幾つかの実施例において、各々のノードリンクは、出力に追加レジスタを包含する(即ち、各々の出力はレジスタに格納される)。
図17は、通信ファブリック125のノード430を示す。上述されたように、ノードは4個のノードリンク405を包含する。各々のノードリンク405は、制御回路435(図16には図示されない)を包含する。制御回路435は、図18に図示される。制御回路435は、有限状態マシン(「FSM」:finite state machine)432、4個の入力のうち任意の入力において構成ワードが受信された時を感知する設定ワード感知回路440(以下により詳細に説明されるように)、及び設定レジスタ410を包含し、設定ワードが感知された場合、設定ワード感知回路440は、設定レジスタ410に新たな値を書き込む。
ノード及びプロセシング素子は図19のようなメッシュ(mesh)を形成し、更に、例えば、追加ノード430、追加プロセシング素子、又はスクラッチメモリ115が図面のエッジの拡張部分に示される連結子により連結される。各々のプロセシング素子120は図示されたように、2個の出力を有する。例えば、プロセシング素子120が2個の入力値を受信し、2個の出力において各々、2個の入力値のうち大きい値及び2個の入力値のうち小さい値を出力するように設定されると、二番目の出力は有用である
動作において、スクラッチメモリ115、ノード430、及びプロセシング素子120の相互間に伝送されるデータは、データワードの形態であり、例えば、20ビット幅のワードの各々は、4ビット幅の制御部分及び16ビット幅のデータ部分を包含する。図20は、通信ファブリック125がどのように構成されるかを例示する。即ち、図20は、ノードリンク405の設定レジスタ410がどのようにプログラムされるかを示す。
スクラッチメモリ115のうちの一つは、ノード設定ワードのシーケンス520aを伝送する。表2を参照して以下により詳細に説明されるように、シーケンス520aの各々はノードリンク405により、例えば、一番目の4個のビットが、二進値0000を有する結果として認識される。シーケンス520aの一番目の設定コマンド(command)は、第1ノード430aのノードリンクにより、(i)ノード設定コマンドとして(0000である一番目の4個のビットの結果として)、(ii)ノードリンクでアドレスが指定されることとして(ノードリンクに格納された固有の8ビット識別子と同一の次の8ビットの結果として)認識される。
ノードリンクは、第1ノード430aの自分の出力へ非演算(NOP: no operation)データワードを伝送し、第1ノード430aの他のノードリンクに現在受信されたデータワードが抑制されるべきことを報らせる。第1ノード430aの他のノードリンクの各々は、第1ノード430aの各々の出力へ非演算データワードを伝送する。
ノード設定ワードのシーケンス520aの二番目である次のデータワード(即ち、ノード設定ワードの減少されたシーケンス520b)は、第1ノード430aにより第2ノード430bに伝達される。データワードの制御部分により、ノードリンク405についての設定データを包含するものとして識別されるデータワードは、「ノードリンク設定ワード」として称され、データワードの制御部分により、プロセシング素子120についての設定データを包含するものとして識別されるデータワードは、「プロセシング素子設定ワード」として称される。
「ストリップ(strip、伝票)及びフォワード(forward、転送)」プログラミングと称されるこの方式により、全てのノード430がプログラムされ、各々のノードは、一度プログラムされると、現在プログラムされた状態に従って追加設定情報及びデータを転送伝達する。プロセシング素子120は、そのうちの一つが図20の例示的なプログラミングデータの経路において図示されたが、何れも同様の方式でプログラムされる。
[表2]を参照すると、上述されたように、各々のデータワードは、20ビット幅を有し、20ビット幅のうち、一番目の4ビットは制御ビットであり、残りの16ビットはデータビットである。二進0000と同一の制御ワードを包含する任意のデータワード(全的に0で構成された非演算(NOP)ワードを除外して)は、ノードリンク設定ワードであり、上で説明したようにノード430(ノードリンク405)により処理される。
二進0001と同一の制御ワードを包含する任意のデータワードは、プロセシング素子設定ワードであり、データワードを受信するプロセシング素子120により同様の方式で処理される。即ち、プロセシング素子120がこのようなデータワードを受信する場合、プロセシング素子120は、データワードのデータビットを制御レジスタに格納する。二進0011と同一の制御部分を包含するSTOPワードは、STOPワードを受信するプロセシング素子120が累積器を初期化し、プロセシング素子120が、他のプロセシング素子設定ワードを受信するまでデータ処理を中止する。STOPワードは、プロセシング素子120において乗算及び累積演算を終了するのに用いられる。
幾つかの実施例において、二進0111より大きな制御部分を有するデータワードは、希薄性表現において、アドレス増分に7を加えた制御部分を有し、ベクトルの2−タプルを符号化するのに用いられる(例えば、二進1000の制御ワード値は、1のアドレス増分を示す)。
Figure 2019109892
図21は、幾つかの実施例における、プロセシング素子120の概略図である。各々のレジスタ及びマルチプレクサを包含する各々の入力回路610は、入力の各々に連結され、
(i)入力値を変更しないまま伝達し、
(ii)1クロック周期だけ入力値を遅延させ、又は、
(iii)複数の次の計算において利用される定数値を格納する、のに用いられる。
乗算器620は、入力回路610により供給された値の積を形成し、加算器630は、値のペアの和を形成する。第1データスイッチングマルチプレクサ640aは、加算器630が一番目の入力に乗算器620の出力を受信するか、又は入力回路610のうち、一番目の入力回路の出力を受信するかを判定する。第2データスイッチングマルチプレクサ640bは、加算器630がペアで加算を遂行するか又は累積器として動作するかを判定する。プロセシング素子120は、2個の出力レジスタ650をさらに包含する。
図22は、他の実施例によるプロセシング素子120のブロック図である。相異なる類型のプロセシング素子120が、プロセシングモジュール110(図1)に結合されるか、又は、任意の一つのプロセシング素子120が、図21及び図22のプロセシング素子120のように、様々な類型のプロセシング素子の特徴を結合してなる。図22のプロセシング素子120は、新たに受信されたデータが計算に用いられるか又は出力からのデータが計算に用いられるかを決定する第1マルチプレクサ660、データが1クロック周期だけ遅延されるかを共に選択する第1レジスタ665及び第2マルチプレクサ670、及び、図示されたように多様な数学的演算(例えば、二乗演算、平方根、逆数、又はログ(対数)演算)を遂行できる数学回路680を包含する。幾つかの実施例において、他の特別な目的のプロセシング素子が存在できる。例えば、プロセシング素子は、除算を遂行するように構成されたプロセシング素子を包含する。
プロセシング素子120は、浮動小数点(FP)、符号付き整数(int),符号無し整数(uint)及びブール(boolean)を包含する多様なデータ類型について演算を遂行し、データの類型の間にキャスティング(casting)演算を遂行するようにさらに構成される。このような演算を例示すると、
[A] multiply(乗算)(FP16,FP16),(u/int8/16,u/int8/16),add(加算)(FP16,FP16),(u/int8/16,u/int8/16),subtract(減算)(FP16,FP16),(u/int8/16,u/int8/16),negate(否定)(FP16,FP16),(u/int8/16,u/int8/16),
[B] cast(類型変換) FP16 to int16/uint16/int8/uint8,cast(類型変換) int16/uint16/int8/uint8 to FP16,cast(類型変換) FP16 to boolean,cast(類型変換) boolean to FP16,max(最大)(FP16,FP16),min(最小)(FP16,FP16);
[C] boolean(ブール代数): greater(大)less(小),equal(等しい),greater−or−equal(非小),less−or−equal(非大),logical(論理) and(AND),or(OR),negate(NOT),xor(XOR);
[D] bitwise(ビットレベルブール代数): AND,OR,NOT,XOR, int8/16,uint8/16,shift_left/right(シフト左/右), arith/circular,ints,uints,及びisNaN(FP16)−>boolean,isInf(FP16)、を包含する。
以上[A]〜[D]において使用された表記法の内、斜線「/」は「又は」を意味し、これにより、例えば、「u/int8/16」は、「uint8,uint16,int8、又はint16」を意味する。
幾つかの実施例において、ノード430及びプロセシング素子120は共に小さい。即ち、ノード430及びプロセシング素子120は、その構築のために少数のゲート(gate)しか要求しない。従って、単位プロセシング能力当たりの費用は低く、複数のプロセシングモジュール110(図1)を包含するシステムは、全体プロセシング能力の相当な量を比較的少ない費用で提供するように拡大(scale_up)できる。ノード430及びプロセシング素子120のサイズが比較的小さいので、システムを構築する費用の側面及び作動する費用(例えば、電力消費及び要求空間)の側面において費用が比較的低い。幾つかの実施例において、各々のノードリンク405は、500個又はもっと少ないゲートしか包含せず、各々のプロセシング素子120は、5000個又はもっと少ないゲートしか包含しない。
図23乃至図27は、メモリコントローラ710及びメモリバンク720を包含するスクラッチメモリ115の構造及び構成を示す。メモリバンク720は、2ポートメモリである。例えば、メモリバンク720は、スタティックランダムアクセスメモリ(SRAM: static random access memory)である。メモリコントローラ710は、スクラッチメモリ115が大きな個数(M個、例えば、数10個)のポートを有するメモリシステムとして動作させるため、(i)メモリバンク720と複数の行キャッシュ(cache)の間のデータをコピーし、(ii)該データに対し、密集性表現と希薄性表現との間の変換及びストリーム整列などの、前処理及び後処理動作を遂行する。
各々の行キャッシュは、図27に図示されたように、二重バッファ(buffer)として具現される。メモリバンク720は、スクラッチメモリ115をホスト中央処理装置(CPU,central processing unit)に連結するAXI(Advanced eXtensible Interface)ブリッジ(bridge)を介して直接メモリアクセス(DMA: direct memory access)によりアクセスされる。ホストCPUは、作動中に、メモリバンク720をプログラムし、メモリコントローラ710に対してスタートコマンドを発行する。それを受けてメモリコントローラ710は、通信ファブリック125に通信ファブリック125のノード430及びプロセシング素子120を設定するための一番目のデータ及び演算を遂行するための二番目のデータのストリーミング(streaming)出力を開始する。
幾つかの実施例において、SRAMはキャッシュとペアをなす。データは、SRAMからの連続的リード(read)を含むストリーミング方式でアクセスされる。SRAMへの書き込み及びSRAMからの読み出しは、電力の観点から比較的高コストである。従って、電力を節約するため、データは、キャッシュラインにコピーされ、キャッシュラインからストリームされる。キャッシュは、静的に(スケジュールされる。
本発明において、多様な素子(element)、部品(component)、領域(region)、階層(layer)及び/又はセクション(section)を説明するために、「第1」、「第2」、「第3」などの用語が使用されるとしても、このような素子、部品、領域、階層及び/又はセクションは、このような用語により制限されないものと理解されるべきであろう。このような用語は、他の素子、部品、領域、階層又はセクションから一つの素子、部品、領域、階層又はセクションを区別するためにのみ使用される。従って、本明細書に開示された第1の素子、部品、領域、階層又はセクションは、本発明の思想及び範囲から逸脱せずに、第2の素子、部品、領域、階層又はセクションと称され得る。
本明細書において、説明の便宜のため、「下」、「下側」、「底」、「上」、「上側」などの、相対的空間用語が、図面に示された一つの素子又は特徴の、他の素子又は特徴との位置関係を説明するために利用される。このような相対的空間用語は、図面にて描写された方向だけでなく、使用又は動作においてデバイスの他の方向を包含するものと意図される。例えば、図面のデバイスが裏返されると、他の素子又は特徴の「下」又は「底」又は「下側」として説明される他の素子又は特徴の「上側」に位置する。従って、「下」又は「下側」の例示用語は、上及び下の方向を全て包含できる。デバイスは、その他の方向(例えば、90度又は他の方向に回転される)にも位置し得るし、本明細書において使用される相対的空間記述子は、これに合わせて解釈されなければならない。なお、或る階層が二つの階層の「間」にある示される場合、該階層は、該二つの階層の間の、唯一の階層であるか、一つ以上の介在する階層が存在し得る。
本明細書において使用された用語は、ただ特定の実施例を説明するためであり、本発明を制限するものと意図されない。本明細書において使用されたように、「実質的に」、「約」、そして類した用語は、近似の用語として使用され、程度の用語として使用されず、技術の分野における通常の技術者により認識されることができる、測定又は計算された値から内在する偏差を説明するためのものと意図される。本明細書において使用されたように、「主要(major)成分」という用語は、組成物又は製品の任意の他の単一成分の量より多い量で組成物、ポリマー(polymer)又は製品に存在する成分を示す。対照的に、「1次(primary)成分」は、組成物、ポリマー、又は製品において、少なくとも50%を構成する成分を示す。本明細書において使用されたように、「主要部分」は、複数の項目に適用される場合、項目のうち、最小限半分を意味する。
本明細書において使用されたように、文脈において明白に異なると指摘しない限り、単数形は複数形も包含すると意図される。「〜包含する」及び/又は「包含する〜」という用語は、本明細書において使用される場合、記述された特徴、整数、ステップ、動作、素子及び/又は部品の存在を明示し、一つ以上の他の特徴、整数、ステップ、動作、素子、部品、及び/又はそれらのグループの存在又は付加を排除しないと理解されることができる。本明細書において使用されたように、「及び/又は」という用語は、関連された一つ以上の列挙された項目の任意の組み合わせ及び全ての組み合わせを包含する。「少なくとも一つ」のような表現は、要素リストの前にある場合、全体の要素リストを修正し、リストの個別要素を修正しない。なお、「〜できる」の使用は、本発明の実施例を説明する場合、「本発明の一つ以上の実施例」を示す。なお、さらに、「例示的な」という用語は、例示又は実例を示すものと意図される。本明細書において使用されたように、「〜使用する」、「使用する〜」及び「使用された〜」という用語は、「〜活用する」、「活用する〜」及び「活用された〜」という用語の各々と同意語と見なされることができる。
要素又は階層が、他の要素又は階層の「上に」、他の要素又は階層に「連結される〜」又は他の要素又は階層に「隣接する〜」と示される場合、要素又は階層が、他の要素又は階層の直接の上に、他の要素又は階層に直接連結される、他の要素又は階層に直接隣接するものであり得るか、一つ以上の間に来る要素又は階層が存在できる。対照的に、要素又は階層が、他要素又は階層の「直接の上」、他の要素又は階層に「直接連結される〜」、又は他の要素又は階層に「直ぐに隣接する〜」ものと示される場合、間に来る要素又は階層が存在しない。
本明細書において列挙された任意の数値範囲は、列挙された範囲内に包含された、同一数値の精度の全てのサブ範囲を包含するものと意図される。例えば、「1.0から10.0」の範囲は、列挙された最小値1.0及び列挙された最大値10.0の間の(を包含する)全てのサブ範囲を、即ち、例えば、2.4から7.6のような、1.0以上の最小値及び10.0以下の最大値を有する全てのサブ範囲を包含するものと意図される。本明細書において列挙された任意の最大数値制限は、ここに包含された全ての下位数値制限を包含するためのものと意図され、本明細書において列挙された任意の最小数値制限は、ここに包含された全ての上位数値制限を包含するためのものと意図される。
ニューラルプロセシングアクセラレータの実施例が、本明細書において具体的に説明されたが、多様な修正及び変更は、当該技術の分野における通常の技術者に自明であろう。従って、本発明の原理により構成されたニューラルプロセシングアクセラレータは、本明細書において具体的に説明されたものと異なるように具現可能である。本発明は、次の請求項及び該請求項の均等範囲で定義される。
本発明は向上されたニューラルネットワーク計算を遂行するニューラルプロセシングシステムに有用である。
110 プロセシングモジュール
115 スクラッチメモリ
120、120a〜120f プロセシング素子(プロセッシング素子回路))
125 通信ファブリック
405 ノードリンク(ノードリンク回路)
410 設定レジスタ
415 4入力マルチプレクサ
420 データレジスタ
425 2入力マルチプレクサ
430, 430a〜430d ノード(ノード回路)
432 有限状態マシン
435 制御回路
440 設定ワード感知回路
520a、520b シーケンス
610 入力回路
680 数学回路
710 メモリコントローラ
720 メモリバンク

Claims (20)

  1. 計算のためのシステムであって、
    複数のプロセシング素子回路と、
    複数のノード(node)回路を包含する通信ファブリック(fabric)と、
    スクラッチメモリと、を包含し、
    前記スクラッチメモリは、前記通信ファブリックを介して前記プロセシング素子回路と連結され、
    一つ以上の前記プロセシング素子回路は、設定値を格納するように構成された設定レジスタ(register)を包含し、
    一つ以上の前記プロセシング素子回路は、
    2個の入力から2個の各々のデータワードを受信し、前記2個のデータワードの各々は、制御部分及びデータ部分を有し、
    前記2個のデータワードのうち、一つがデータワードをプロセシング素子設定(configuration)ワードとして識別する制御部分を有する場合、前記設定レジスタに前記プロセシング素子設定ワードの前記データ部分を前記設定値として格納し、
    前記2個のデータワードが、全てプロセシング素子設定ワードではない場合、前記設定値に基づき前記2個のデータワードに対する演算を遂行するように構成された、ことを特徴とするシステム。
  2. 前記演算を遂行することは、
    前記設定値がエレメントワイズの乗算を指定(specify)する場合、前記2個のデータワードのうちの第1データワードの前記データ部分に、前記2個のデータワードのうちの第2データワードの前記データ部分を乗算することを包含する、ことを特徴とする請求項1に記載のシステム。
  3. 前記演算を遂行することは、
    前記設定値がエレメントワイズの加算を指定する場合、前記2個のデータワードのうちの第1データワードの前記データ部分に、前記2個のデータワードのうちの第2データワードの前記データ部分を加算することを包含する、ことを特徴とする請求項1に記載のシステム。
  4. 前記演算を遂行することは、
    前記設定値が乗算及び累積を指定する場合、
    前記2個のデータワードのうちの第1データワードの前記データ部分に前記2個のデータワードのうちの第2データワードの前記データ部分を乗算して積を形成することと、
    前記積を累積器(accumulator)の累積値に加算することを包含する、ことを特徴とする請求項1に記載のシステム。
  5. 前記プロセシング素子回路のうちの一つは、5000個以下のゲート(gate)を包含する、ことを特徴とする請求項1に記載のシステム。
  6. 前記ノード回路のうちの一つは、2000個以下のゲートを包含する、ことを特徴とする請求項1に記載のシステム。
  7. 計算のためのシステムであって、
    複数のプロセシング素子回路と、
    複数のノード(node)回路を包含する通信ファブリック(fabric)と、
    スクラッチメモリと、を包含し、
    前記スクラッチメモリは、前記通信ファブリックを介して前記プロセシング素子回路と連結され、
    一つ以上の前記ノード回路は複数のノードリンク回路を包含し、
    前記複数のノード回路のうち、第1ノード回路の前記複数のノードリンク回路のうち、第1ノードリンク回路は複数の入力及び一つの出力を有し、
    前記第1ノードリンク回路は、
    データレジスタと、
    設定値を格納するように構成された設定レジスタと、を包含し、
    前記第1ノードリンク回路は、前記入力において各々が制御部分及びデータ部分を有する複数の各々のデータワードを受信し、
    前記データワードのうちの一つが、データワードをノードリンク設定ワードとして識別する制御部分を有する場合、前記設定レジスタに前記ノードリンク設定ワードの前記データ部分を前記設定値として格納し、
    前記データワードが、全てノードリンク設定ワードではない場合、
    前記設定値に基づき、
    前記入力のうち、一つから前記データレジスタにデータワードを伝送し、及び/又は、
    前記入力のうち、一つから前記出力にデータワードを伝送し、及び/又は、
    前記データレジスタから前記出力にデータワードを伝送するように構成された、ことを特徴とするシステム。
  8. 一つ以上の前記ノード回路は、
    実質的に直交する方向において、前記ノード回路の内側に向かう4個の入力と、
    実質的に直交する方向において、前記ノード回路の外側に向かう4個の出力と、を有する、ことを特徴とする請求項7に記載のシステム。
  9. 一つ以上の前記ノード回路のうち、一つのノード回路は4個のノードリンク回路を包含し、前記4個のノードリンク回路の各々は、
    前記ノード回路の前記4個の入力に各々連結される4個の入力と、
    前記ノード回路の前記4個の出力のうち、各々の一つに連結される一つの出力と、を有する、ことを特徴とする請求項8に記載のシステム。
  10. 前記プロセシング素子回路のうちの一つは、5000個以下のゲートを包含する、ことを特徴とする請求項7に記載のシステム。
  11. 前記ノード回路のうちの一つは、2000個以下のゲートを包含する、ことを特徴とする請求項7に記載のシステム。
  12. 前記スクラッチメモリは、
    メモリバンク(bank)と、
    メモリコントローラと、を包含し、
    前記メモリコントローラは複数の行キャッシュ(cache)を包含し、
    一つ以上の前記行キャッシュは、前記データワードと同一のビット幅を有し、前記メモリコントローラは、前記メモリバンクから前記行キャッシュにデータを伝達し、前記行キャッシュから前記メモリバンクにデータを伝達するように構成され、
    一つ以上の前記行キャッシュは、
    前記データワードのシーケンス(sequence)を外にストリーム(stream)し、
    前記データワードのシーケンスを内にストリームするように構成された、ことを特徴とする請求項7に記載のシステム。
  13. 前記行キャッシュのうちの一つは、二重バッファである、ことを特徴とする請求項12に記載のシステム。
  14. 各々の前記データワードのうち、前記制御部分は4ビットの幅を有し、
    各々の前記データワードのうち、前記データ部分は16ビットの幅を有する、ことを特徴とする請求項12に記載のシステム。
  15. 計算方法であって、
    プロセシングモジュールを設定するステップを包含し、前記プロセシングモジュールは、
    複数のプロセシング素子回路と、
    各々が複数の入力及び一つの出力を有する、複数のノードリンク回路を包含する通信ファブリック(fabric)と、
    スクラッチメモリと、を包含し、
    前記設定するステップは、
    前記スクラッチメモリが、複数のノードリンク設定ワードを伝送するステップと、ここで、
    前記複数のノードリンク設定ワードの各々は、前記複数のノードリンク回路のうち、一つのノードリンク回路に送られ、
    前記複数のノードリンク回路のうち、第1ノードリンク回路が前記第1ノードリンク回路に送られるデータワードを受信するステップと、ここで、
    前記第1ノードリンク回路は、前記複数のプロセシング素子回路のうち、第1プロセシング素子回路の一つの入力に連結される一つの出力を有し、
    前記第1ノードリンク回路が、前記第1ノードリンク回路の第1入力において受信されたデータワードを、前記第1ノードリンク回路の前記出力に伝達するように、前記第1ノードリンク回路が前記第1ノードリンク回路の構成を設定するステップと、
    前記第1ノードリンク回路のうち、前記第1入力によりプロセシング素子設定ワードを受信するステップと、
    前記第1ノードリンク回路の前記出力により、前記プロセシング素子設定ワードを前記第1プロセシング素子回路に伝送するステップと、
    前記第1プロセシング素子回路が、前記第1プロセシング素子回路の設定レジスタ(register)に前記プロセシング素子設定ワードのデータ部分を格納するステップと、を包含する、ことを特徴とする方法。
  16. 複数の積を計算するステップをさらに包含し、前記計算するステップは、
    前記スクラッチメモリが、第1の複数のノードリンク回路を介して延伸する第1経路を通して、被演算子の第1シーケンス(sequence)を前記第1プロセシング素子回路に伝送するステップと、
    前記スクラッチメモリが、第2の複数のノードリンク回路を介して延伸する第2経路を通して、被演算子の第2シーケンスを前記第1プロセシング素子回路に伝送するステップと、
    前記第1プロセシング素子が、ペアごとの(pairwise)積のシーケンスを計算するステップと、を包含し、各々のペアごとの積は、
    被演算子の前記第1シーケンスの一つの被演算子と、
    被演算子の前記第2シーケンスの対応する一つの被演算子の積である、ことを特徴とする請求項15に記載の方法。
  17. 密集性表現(dense representation)から希薄性表現(sparse representation)に第1ベクトルを変換するステップをさらに包含し、前記第1ベクトルは、ノンゼロ値を有する第1エレメントを包含し、前記第1エレメントの直後には、ゼロ値を有する第2エレメントが続き、前記変換するステップは、前記第1エレメントを第1の2−タプル(tuple)に交替するステップを包含し、前記第1の2−タプルは、
    前記第1ベクトルの前記第1エレメントと同一の第1のエレメントと、
    1より大きい第2エレメントと、を有する、ことを特徴とする請求項16に記載の方法。
  18. 第2ベクトルの希薄性表現を前記第1ベクトルの前記希薄性表現と整列させるステップと、をさらに包含し、前記整列させるステップは、
    前記第2ベクトルの前記希薄性表現から、前記第1ベクトルの前記第2エレメントに対応する2−タプルを削除するステップと、
    前記第2ベクトルの第1の2−タプルの第2エレメントの値を増加させるステップと、を包含し、前記第2ベクトルの前記第1の2−タプルは、前記削除された2−タプルの直前に来る、ことを特徴とする請求項17に記載の方法。
  19. 前記複数のプロセシング素子回路のうち、一つのプロセシング素子回路が、前記第1ベクトルの前記第1の2−タプルの前記第1エレメントと前記第2ベクトルの前記第1の2−タプルの第1エレメントとを乗算して、結果として2−タプルの第1エレメントを形成するステップと、
    前記結果としての2−タプルの第2エレメントを前記第1ベクトルの前記第1の2−タプルの前記第2エレメントと同一に設定するステップと、をさらに包含する、ことを特徴とする請求項18に記載の方法。
  20. 前記プロセシング素子回路のうちの一つは、5000個以下のゲートを包含し、前記ノードリンク回路のうちの一つは、500個以下のゲートを包含する、ことを特徴とする請求項15に記載の方法。
JP2018235311A 2017-12-19 2018-12-17 計算のためのシステムと方法 Active JP7268996B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762607882P 2017-12-19 2017-12-19
US62/607,882 2017-12-19
US15/916,189 US11360930B2 (en) 2017-12-19 2018-03-08 Neural processing accelerator
US15/916,189 2018-03-08

Publications (2)

Publication Number Publication Date
JP2019109892A true JP2019109892A (ja) 2019-07-04
JP7268996B2 JP7268996B2 (ja) 2023-05-08

Family

ID=66814458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018235311A Active JP7268996B2 (ja) 2017-12-19 2018-12-17 計算のためのシステムと方法

Country Status (5)

Country Link
US (3) US11360930B2 (ja)
JP (1) JP7268996B2 (ja)
KR (1) KR102649482B1 (ja)
CN (1) CN110059820A (ja)
TW (1) TWI795435B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022544512A (ja) * 2019-08-14 2022-10-19 グーグル エルエルシー 特定用途向け集積回路のデュアルモード動作

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11232347B2 (en) * 2017-04-17 2022-01-25 Cerebras Systems Inc. Fabric vectors for deep learning acceleration
US11113603B1 (en) 2017-05-01 2021-09-07 Perceive Corporation Training network with discrete weight values
US11222257B1 (en) 2018-04-20 2022-01-11 Perceive Corporation Non-dot product computations on neural network inference circuit
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11531727B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Computation of neural network node with large input values
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11049013B1 (en) 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11663454B2 (en) * 2019-03-29 2023-05-30 Aspiring Sky Co. Limited Digital integrated circuit with embedded memory for neural network inferring
US11514136B2 (en) * 2019-05-17 2022-11-29 Aspiring Sky Co. Limited Circuit for neural network convolutional calculation of variable feature and kernel sizes
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
US20210306006A1 (en) 2019-09-23 2021-09-30 SK Hynix Inc. Processing-in-memory (pim) devices
KR20220015680A (ko) * 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
KR20220015813A (ko) * 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
US11599139B1 (en) * 2021-09-03 2023-03-07 Xepic Corporation Limited Dynamic adjustment of root clock frequency in logic system design during verification

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152722A (ja) * 1993-08-12 1995-06-16 Hughes Aircraft Co Simdマルチプロセッサ用動的再構成可能スイッチ装置
JP2003526157A (ja) * 2000-03-08 2003-09-02 サン・マイクロシステムズ・インコーポレイテッド オンチップダイナミックramを備えたvliwコンピュータ処理アーキテクチャ
JP2005531089A (ja) * 2002-06-26 2005-10-13 コーヒレント・ロジックス・インコーポレーテッド 散在しているプロセッサと通信要素を備える処理システム
JP2006018514A (ja) * 2004-06-30 2006-01-19 Fujitsu Ltd 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体
JP2006085574A (ja) * 2004-09-17 2006-03-30 Ip Flex Kk データ処理システムおよびその制御方法
WO2014132669A1 (ja) * 2013-03-01 2014-09-04 アトナープ株式会社 データ処理装置およびその制御方法
JP2015088058A (ja) * 2013-10-31 2015-05-07 キヤノン株式会社 情報処理装置およびその制御方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188767A (ja) * 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
US6836767B2 (en) * 2001-10-03 2004-12-28 International Business Machines Corporation Pipelined hardware implementation of a neural network circuit
US7593016B2 (en) * 2004-04-08 2009-09-22 Teranex Systems, Inc Method and apparatus for high density storage and handling of bit-plane data
US20130305020A1 (en) 2011-04-01 2013-11-14 Robert C. Valentine Vector friendly instruction format and execution thereof
US9237095B2 (en) * 2012-02-17 2016-01-12 Netronome Systems, Inc. Island-based network flow processor integrated circuit
US8990616B2 (en) 2012-09-28 2015-03-24 International Business Machines Corporation Final faulty core recovery mechanisms for a two-dimensional network on a processor array
US9160617B2 (en) 2012-09-28 2015-10-13 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array
US10417525B2 (en) 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
EP3035203A1 (en) 2014-12-19 2016-06-22 Intel Corporation Fine-grain storage interface and method for low power accelerators
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10474627B2 (en) * 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US10372947B2 (en) * 2016-12-02 2019-08-06 Microsoft Technology Licensing, Llc Parsing, processing, and/or securing stream buffers

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152722A (ja) * 1993-08-12 1995-06-16 Hughes Aircraft Co Simdマルチプロセッサ用動的再構成可能スイッチ装置
JP2003526157A (ja) * 2000-03-08 2003-09-02 サン・マイクロシステムズ・インコーポレイテッド オンチップダイナミックramを備えたvliwコンピュータ処理アーキテクチャ
JP2005531089A (ja) * 2002-06-26 2005-10-13 コーヒレント・ロジックス・インコーポレーテッド 散在しているプロセッサと通信要素を備える処理システム
JP2006018514A (ja) * 2004-06-30 2006-01-19 Fujitsu Ltd 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体
JP2006085574A (ja) * 2004-09-17 2006-03-30 Ip Flex Kk データ処理システムおよびその制御方法
WO2014132669A1 (ja) * 2013-03-01 2014-09-04 アトナープ株式会社 データ処理装置およびその制御方法
JP2015088058A (ja) * 2013-10-31 2015-05-07 キヤノン株式会社 情報処理装置およびその制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022544512A (ja) * 2019-08-14 2022-10-19 グーグル エルエルシー 特定用途向け集積回路のデュアルモード動作
US11811401B2 (en) 2019-08-14 2023-11-07 Google Llc Dual-mode operation of application specific integrated circuits
JP7423755B2 (ja) 2019-08-14 2024-01-29 グーグル エルエルシー 特定用途向け集積回路のデュアルモード動作

Also Published As

Publication number Publication date
US20230244632A1 (en) 2023-08-03
TW201928701A (zh) 2019-07-16
US20220292049A1 (en) 2022-09-15
US20190187983A1 (en) 2019-06-20
KR102649482B1 (ko) 2024-03-20
US11360930B2 (en) 2022-06-14
TWI795435B (zh) 2023-03-11
CN110059820A (zh) 2019-07-26
US11645224B2 (en) 2023-05-09
KR20190074195A (ko) 2019-06-27
JP7268996B2 (ja) 2023-05-08
US11995027B2 (en) 2024-05-28

Similar Documents

Publication Publication Date Title
JP2019109892A (ja) 計算のためのシステムと方法
US9535877B2 (en) Processing system with interspersed processors and communication elements having improved communication routing
Zhuo et al. Scalable and modular algorithms for floating-point matrix multiplication on reconfigurable computing systems
WO2015044696A2 (en) Computer architecture and processing method
Wu et al. Compute-efficient neural-network acceleration
JP7183197B2 (ja) 高スループットプロセッサ
Hartenstein et al. On reconfgurable co-processing units
Jesshope et al. Design of SIMD microprocessor array
Sunwoo et al. A sliding memory plane array processor
Irwin et al. A micro-grained VLSI signal processor
US20230195836A1 (en) One-dimensional computational unit for an integrated circuit
JP2005531843A (ja) アレイプロセッサにおける除算
Cain et al. Convolution processing unit featuring adaptive precision using dynamic reconfiguration
Raha et al. 8.2 A Versatile 7nm Adaptive Compute Acceleration Platform Processor
Safarpour et al. Transport triggered array processor for vision applications
Kung Warp experience: we can map computations onto a parallel computer efficiently
Iwata et al. A dynamically reconfigurable architecture combining pixel-level SIMD and operation-pipeline modes for high frame rate visual processing
Chiu et al. The Multi-context Reconfigurable Processing Unit for Fine-grain Computing.
Lawrie et al. Kalman filtering: A survey of parallel processing alternatives
Bajwa Reconfigurable micro-grain VLSI arrays: Architectures and algorithms
Bolotski Distributed bit-parallel architecture and algorithms for early vision
Daniel Jr Superquadric description on large arrays of bit-serial processors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230110

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: 20230404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230421

R150 Certificate of patent or registration of utility model

Ref document number: 7268996

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150