JP2022544512A - 特定用途向け集積回路のデュアルモード動作 - Google Patents

特定用途向け集積回路のデュアルモード動作 Download PDF

Info

Publication number
JP2022544512A
JP2022544512A JP2022508894A JP2022508894A JP2022544512A JP 2022544512 A JP2022544512 A JP 2022544512A JP 2022508894 A JP2022508894 A JP 2022508894A JP 2022508894 A JP2022508894 A JP 2022508894A JP 2022544512 A JP2022544512 A JP 2022544512A
Authority
JP
Japan
Prior art keywords
tiles
integrated circuit
input data
tile
criterion
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
JP2022508894A
Other languages
English (en)
Other versions
JP7423755B2 (ja
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 JP2022544512A publication Critical patent/JP2022544512A/ja
Application granted granted Critical
Publication of JP7423755B2 publication Critical patent/JP7423755B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • 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
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Advance Control (AREA)

Abstract

複数のタイルを含む集積回路チップを動作させるための方法は、計算を実行するためのタイルの構成を決定するステップを含む。タイルの構成が第1の基準を満たすとき、集積回路は、タイルの各々においてそれぞれの入力データを同時に受信することを含む、第1のモードで動作される。タイルの構成が第2の基準を満たすとき、集積回路は、第1の時間において、第1のグループのタイルの各タイルにおいてそれぞれの第1の入力データを同時に受信することと、第1の時間において、複数の遅延レジスタの各々にそれぞれの第2の入力データを記憶することであり、各遅延レジスタが、第2のグループのタイルのうちの1つのタイルに対応する、記憶することと、第2の時間において、第2の入力データを遅延レジスタから解放し、解放されたそれぞれの第2の入力データを、第2のグループのタイルの各タイルにおいて受信することとを含む、第2のモードで動作される。

Description

優先権の主張
本出願は、2019年8月14日に出願された米国特許出願第62/886,481号の優先権を主張し、その内容全体が参照により本明細書に組み込まれる。
ニューラルネットワークは、受信された入力に対する、たとえば分類などの出力を生成するために、モデルの1つまたは複数の層を利用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加え、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの中の次の層、すなわち、ネットワークの次の隠れ層または出力層への入力として使われる。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って、受信された入力から出力を生成する。
いくつかのニューラルネットワークは、1つまたは複数の畳み込みニューラルネットワーク層を含む。各畳み込みニューラルネットワーク層は、関連するカーネルのセットを有する。カーネルは、重み入力の行列構造として表すことができる。各畳み込みレイヤは、アクティブ化入力のセットを処理することもできる。アクティブ入力のセットは、行列構造として表すこともできる。
既存のシステムの中には、所与の畳み込み層の計算をソフトウェアで実行するものもある。たとえば、ソフトウェアは、層の各カーネルをアクティブ化入力のセットに適用することができる。すなわち、カーネルごとに、ソフトウェアは、多次元的に表すことができるカーネルを、多次元的に表すことができるアクティブ化入力の第1の部分上にオーバーレイすることができる。次いで、ソフトウェアは、重なり合った要素からドット積を計算することができる。ドット積は、単一のアクティブ化入力、たとえば、重なり合った多次元空間において左上の位置を有するアクティブ化入力要素に対応することができる。たとえば、スライディングウィンドウを使用して、ソフトウェアは、次いで、アクティブ化入力の第2の部分をオーバーレイし、別のアクティブ化入力に対応する別のドット積を計算するようにカーネルをシフトすることができる。ソフトウェアは、各アクティブ化入力が対応するドット積を有するまで、このプロセスを繰り返し実行することができる。いくつかの実装形態では、ドット積は、アクティブ化値を生成するアクティブ化関数に入力される。アクティブ化値は、ニューラルネットワークの後続の層に送信される前に、組み合わされ、たとえば、プールされ得る。
本明細書では、所与の計算を実行するために集積回路の構成に基づいて2つのモードのうちの1つで動作することができる特定用途向け集積回路(ASIC)などの集積回路について説明する。集積回路は、タイルのアレイを含む。1つのモードでは、所与の計算に関与するすべてのタイルが、たとえば、同じクロックサイクルで、互いに他のタイルと同時に処理するための入力データを受信する。別のモードでは、データ処理のタイミングがタイルのサブセット間でずれるように、タイルのサブセットの動作に、遅延が意図的に導入される。第2の集積回路の動作は、たとえば、集積回路の電力消費および電流変化率を集積回路の設計制約内に留めることを可能にすることによって、集積回路を攻撃に対してロバストにすることができる。
一態様では、複数のタイルを含む集積回路チップを動作させるための方法は、計算を実行するための集積回路のタイルの構成を決定するステップを含む。方法は、タイルの構成が第1の基準を満たすとき、集積回路のタイルの各々において計算のためのそれぞれの入力データを同時に受信することを含む、第1のモードで、集積回路を動作させるステップを含む。方法は、タイルの構成が第2の基準を満たすとき、第1の時間において、集積回路の第1のグループのタイルの各タイルにおいて計算のためのそれぞれの第1の入力データを同時に受信することと、第1の時間において、複数の遅延レジスタの各々に計算のためのそれぞれの第2の入力データを記憶することであり、各遅延レジスタが、集積回路の第2のグループのタイルのうちの1つのタイルに対応する、記憶することと、第2の時間において、第2の入力データを遅延レジスタから解放し、解放されたそれぞれの第2の入力データを、第2のグループのタイルの各タイルにおいて受信することとを含む、第2のモードで集積回路を動作させるステップを含む。
実施形態は、以下の特徴のうちの1つまたは2つ以上の任意の組合せを含むことができる。
計算を実行するためのタイルの構成を決定することは、計算を実行するために動作可能なタイルの数およびパーセンテージのうちの1つまたは複数を決定することを含む。第1の基準は、計算を実行するように動作可能なタイルの数またはパーセンテージがしきい値数またはパーセンテージ未満であることを含み、第2の基準は、計算を実行するように動作可能なタイルの数またはパーセンテージがしきい値数またはパーセンテージよりも大きいことを含む。
計算を実行するためのタイルの構成を決定することは、計算を実行するために動作可能なタイルの列の数を決定することを含む。第1の基準は、計算を実行するように動作可能なタイルの列の数またはパーセンテージがしきい値数またはパーセンテージ未満であることを含み、第2の基準は、計算を実行するように動作可能なタイルの列の数またはパーセンテージがしきい値数またはパーセンテージよりも大きいことを含む。
方法は、タイルの構成が第1の基準または第2の基準を満たすかどうかを決定するステップを含む。
集積回路を第2のモードで動作させるステップは、遅延レジスタを有効にするようにマルチプレクサを動作させるステップを含む。集積回路を第1のモードで動作させるステップは、遅延レジスタを無効にするようにマルチプレクサを動作させるステップを含む。
第1の時間は、第1のクロックサイクルであり、第2の時間は、次のクロックサイクルである。
第1のモードでそれぞれの入力データを同時に受信するステップは、各タイルにおいて入力データのベクトルを受信するステップを含む。
集積回路を第1のモードで動作させるステップは、それぞれの入力データを処理するために、集積回路のタイルの各々を動作させるステップを含む。
集積回路を第2のモードで動作させるステップは、それぞれの第1の入力データを処理するために、第1のグループのタイルの各々を動作させるステップと、遅延レジスタから解放されたそれぞれの第2の入力データを処理するために、第2のグループのタイルの各々を動作させるステップとを含む。
方法は、第1の基準および第2の基準の指示をコンパイラから受信するステップを含む。
一態様では、集積回路は、各々が対応する第1のバスラインに接続された複数の遅延レジスタと、複数のタイルであり、第1のグループのタイルの各タイルが、対応する第2のバスラインに接続され、第2のグループのタイルの各タイルが、第1のバスラインの対応する1つに接続されている、複数のタイルと、計算を実行するための第1および第2のグループのタイルの構成を決定するように構成されたコントローラとを含む。タイルの構成が第1の基準を満たすとき、コントローラは、第1および第2のバスラインを介して複数のタイルの各々において、計算のためのそれぞれの入力データが同時に受信される第1のモードで動作するように集積回路を制御するように構成されている。タイルの構成が第2の基準を満たすとき、コントローラは、第1の時間において、計算のためのそれぞれの第1の入力データが、第1のグループのタイルの各タイルにおいて同時に受信され、第1の時間において、計算のための第2の入力データが、遅延レジスタの各々に記憶され、第2の時間において、第2の入力データが遅延レジスタから解放され、それぞれの第2の入力データが、第2のグループのタイルの各タイルにおいて受信される、第2のモードで動作するように集積回路を制御するように構成されている。
実施形態は、以下の特徴のうちの1つまたは2つ以上の任意の組合せを含むことができる。
集積回路は、各第2のバスラインに接続されたマルチプレクサを含む。
タイルは、2次元アレイに配列されている。
集積回路は、特定用途向け集積回路(ASIC)を含む。
各タイルは、複数の計算セル、計算セルに結合されたメモリ、およびタイルとの間でデータを伝達するように構成された制御可能バスラインを含む。
タイルのうちの少なくとも1つは、コントローラとして動作するように構成されている。
集積回路は、通信インターフェースを含む。
特定用途向け集積回路(ASIC)などの集積回路の、第1の並列モードまたは第2のインターリーブモードのいずれかでの動作は、以下の利点の1つまたは複数を有することができる。集積回路を、攻撃に対してロバストであるように動作させることができ、また、適切な状況における迅速な処理のために効率的な方法で動作させることができる。動作モードの選択は、自動化され、動的に、たとえば、計算ごとにモードを選択するように行うことができる。
本発明の1つまたは複数の実施形態の詳細が、添付図面および以下の説明に記載される。他の特徴、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
専用論理回路の一例を示す概略図である。 タイルのアレイの第1の動作モードを示す概略図である。 タイルのアレイの第2の動作モードを示す概略図である。 タイルアレイの概略図である。 フローチャートである。
本明細書では、所与の計算を実行するために集積回路の構成に基づいて2つのモードのうちの1つで動作することができる特定用途向け集積回路(ASIC)などの集積回路について説明する。集積回路は、タイルのアレイを含む。1つのモードでは、所与の計算に関与するすべてのタイルが、たとえば、同じクロックサイクルで、互いに他のタイルと同時に処理するための入力データを受信する。別のモードでは、データ処理のタイミングがタイルのサブセット間でずれるように、タイルのサブセットの動作に、遅延が意図的に導入される。第2の集積回路の動作は、たとえば、集積回路の電力消費および電流変化率を集積回路の設計制約内に留めることを可能にすることによって、集積回路を攻撃に対してロバストにすることができる。
図1は、専用論理回路、特にASIC100の一例を示す概略図である。ASIC100は、複数のタイル102を含み、タイル102のうちの1つまたは複数は、入力データに基づいて、たとえば乗算および加算演算などの演算を実行するように構成された専用回路を含む。特に、各タイル102は、セルの計算アレイを含むことができ、各セルは、数学演算を実行するように構成される。いくつかの実装形態では、タイル102は、グリッドパターンで配列され、タイル102は、第1の次元101(たとえば、行)に沿って、および第2の次元103(たとえば、列)に沿って配列される。たとえば、図1に示す例では、タイル102は、4つの異なるセクション(110a、110b、110c、110d)に分割され、各セクションは、下方向に18タイル×横方向に16タイルのグリッドに配列された288タイルを含む。いくつかの実装形態では、図1に示すASIC100は、別々のタイルに細分/配列されたセルの単一のシストリックアレイを含むものとして理解することができ、各タイルは、セルのサブセット/サブアレイ、ローカルメモリ、およびバスラインを含む。タイル102からの出力は、タイル102からの出力に基づいてベクトル計算出力値を計算するベクトル処理ユニット104に提供される。ベクトル処理ユニット104、およびASIC100の動作について、以下でさらに説明する。
ASIC100は、ベクトル処理ユニット104も含む。ベクトル処理ユニット104は、タイル102から出力を受信し、タイル102から受信された出力に基づいてベクトル計算出力値を計算するように構成された回路を含む。たとえば、いくつかの実装形態では、ベクトル処理ユニット104は、タイル102から受信された出力に対して累算演算を実行するように構成された回路(たとえば、乗算回路、加算器回路、シフタ、および/またはメモリ)を含む。代替的に、または追加として、ベクトル処理ユニット104は、タイル102の出力に非線形関数を適用するように構成された回路を含む。代替的に、または追加として、ベクトル処理ユニット104は、正規化された値、プールされた値、またはその両方を生成する。ベクトル処理ユニットのベクトル計算出力を、1つまたは複数のタイルに記憶することができる。たとえば、ベクトル計算出力は、タイル102に一意に関連付けられたメモリに記憶することができる。代替的に、または追加として、ベクトル処理ユニット104のベクトル計算出力は、たとえば計算の出力として、ASIC100の外部の回路に転送することができる。
ASICの各タイル102は、ローカルメモリと、メモリに結合された計算アレイとを含むことができる。ローカルメモリは、物理メモリ、たとえば、SRAMなどのランダムアクセスメモリ(RAM)を含む。計算アレイは、複数のセルを含む。計算アレイの各セルは、セルへのアクティブ化入力および重み入力などのデータ入力に基づいて計算(たとえば、乗算および累算演算)を実行するように構成された回路を含む。各セルは、クロック信号のサイクルで計算(たとえば、乗算および累算演算)を実行することができる。各タイルはまた、タイル間でデータを転送するように構成された汎用制御可能バスラインを含む。汎用バスラインは、制御データ、アクティブ化入力データ、通信インターフェースからおよび/または通信インターフェースへのデータ、ベクトル処理ユニットからおよび/またはベクトル処理ユニットへのデータ、およびタイルによって記憶および/または使用されるデータ(たとえば、重み入力)を伝達するように構成され得る。1つまたは複数の制御要素(たとえば、フリップフロップおよびマルチプレクサ)は、制御可能バスラインを制御するように動作可能であり、それにより、タイルにおよび/またはタイルからおよび/またはタイルのSRAMからデータをルーティングする。
いくつかの例では、ASICなどの集積回路は、単位時間当たりの最大電力消費量、または集積回路を流れる電流の最大レートに対する制約などの動作制約を満たすために、2つのモードのうちの1つで動作するように制御され得る。たとえば、集積回路が、集積回路上の動作制約を超える可能性が低い方法で構成されるとき、集積回路は、第1のモードで動作するように制御され得る。集積回路が、動作制約を超える可能性がある方法で動作するように構成されるとき、たとえば、多数のタイルまたはタイルのグループが、入力信号の受信によって完全にアクティブ化される可能性があるとき、集積回路は、第2のモードで動作するように制御され得る。第2のモードでは、集積回路が動作制約を超えるのを防止するために、集積回路のいくつかのタイルの動作に遅延が導入される。
図2Aは、例示的なASICのタイル202a~202d(まとめてタイル202と呼ぶ)のアレイ200の簡略図である。図2AはASICに関して説明されているが、同様の構成は、他のタイプの集積回路にも適用することができる。各タイル202は、複数のメモリユニット、たとえば、8個のSRAMなどのSRAM204と、セルの計算アレイ206とを含む。いくつかの例では、各タイル202は、アクティブ化することができ、アレイ200の各他のタイル202とは独立して動作可能である。いくつかの例では、図2Aの各タイル202は、複数のタイルの列を表す。いくつかの例では、ASICは、少なくとも4列、少なくとも8列、少なくとも16列、またはさらに大きいアレイを有するアレイなど、はるかに大きいアレイ200を実装することができる。アレイ200のタイル202は、2つのサブセット、すなわち、タイル202a、202cを含む第1のサブセットと、タイル202b、202dを含む第2のサブセットとにグループ化される。
アレイ200の第1の動作モードでは、所与のサブセットのタイルは、たとえば、バスライン、タイルからのメモリ(たとえば、SRAM)、または別のタイル(たとえば、隣接するタイル)から入力データの共通ベクトル208を受信する。たとえば、図2Aの例では、第1のサブセットのタイル202a、202cは、入力データのベクトル208aを受信し、第2のサブセットのタイル202b、202dは、入力データのベクトル208bを受信する。入力データのベクトルは、たとえば、タイル202のセルの計算アレイ206によって実行されるニューラルネットワーク計算のための重みデータのベクトルとすることができる。ベクトル伝播は、ASICのクロックサイクルによって制御される。たとえば、すべてのタイル202(たとえば、両方のサブセットのタイル)は、同じクロックサイクルで所与のベクトル208を受信することができる。
バスライン210a、210cは、入力データのベクトル208aを第1のサブセットのタイル202a、202cに提供する。タイル202cに対応する遅延レジスタ212aは、バスライン210c上に存在する。バスライン210b、210dは、第2のサブセットのタイル202b、202dに入力データのベクトル208bを提供し、タイル202dに対応する遅延レジスタ212bがバスライン210d上に存在する。しかしながら、アレイ200の第1の動作モードでは、遅延レジスタ212a、212bは使用されず(破線で示すように)、入力データのベクトル208は、タイル202の各々に直接かつ同時に(たとえば、同じクロックサイクルで)提供される。
入力データの各ベクトル208は、ベクトルの各要素の値を含むことができる。たとえば、ベクトル208がバイナリデータを伝達するとき、各要素は、0の値または1の値を有することができる。タイル202が、ある値(たとえば、バイナリデータの場合、値1)の要素を有するベクトル208を受信すると、セル208の計算アレイによる処理が開始され(たとえば、1つまたは複数の乗算器がアイドル状態からアクティブ状態に変更される)、SRAM204の少なくとも1つからの読取りも開始される。セル208の計算アレイによる処理の開始、およびタイル202のSRAM204からの読取りの開始のプロセスを、タイル202のアクティブ化と呼ぶ。アレイ200のすべてのタイル202が、計算を開始する要素(たとえば、値1の要素)を有するそれぞれのベクトル208を受信すると、アレイ202のすべてのタイルがアクティブ化される。図2Aに示す各タイル202が複数のタイルの列を表す例では、値1を有するすべての要素が列のすべてのタイルのアクティブ化を引き起こすベクトルである。
いくつかの例では、ASICなどの集積回路の動作は、設計制約を受ける可能性がある。たとえば、単位時間当たりの電力消費は、ASICの熱設計制約に違反することを回避するために、しきい値レベル未満に維持することができる。時間にわたるASICを通る電流フローの変化率(たとえば、di/dt、電流変化率と呼ばれる)は、動作範囲を上回るまたは下回る駆動電圧など、電圧しきい値を上回るまたは下回る駆動電圧を回避するために、しきい値レベル未満に維持され得る。
タイルの、SRAMなどメモリからの読取りは、電力集約的なプロセスであり得、SRAM読取りプロセスの開始は、大量の電流を引き出す可能性がある。高クロックサイクルでは、大きい電流引き込みは、高い電流変化率に対応し得る。計算アレイによる計算処理の開始(たとえば、乗算器の状態をアイドルからアクティブに変更すること)もまた、大量の電流を引き出す可能性があり、高クロックサイクルでの高い電流変化率に対応し得る。
アレイ200内のすべてのタイル202の並列アクティブ化(たとえば、セル206の計算アレイによる処理の開始およびSRAM204からの読取りの開始)は、大量の電力消費を引き起こす可能性があり、高い電流変化率をもたらす可能性がある。アレイの各タイル202が実際にタイルの列を表し、各列の各タイルが、たとえば、各々が値1のすべての要素を有する複数のベクトルを受信することによってアクティブ化されるとき、大きい電力消費および高い電流変化率が悪化する可能性がある。たとえば、そのようなベクトルは、ASICに対する攻撃において供給され得る。
いくつかの例では、入力ベクトル208によってアクティブ化されるタイル202の数がしきい値を超えるときなど、受信された入力ベクトル208によるこれらのタイル202の並列アクティブ化によって、電力消費、電流変化率、またはその両方が、ASICの設計制約を超える可能性がある。たとえば、同時にアクティブ化されるタイルのしきい値数は、タイルの総数の25%またはタイルの総数の50%とすることができる。ASIC設計制約を超えることを防止するために、ASICは、特定の条件下で第2のモードで動作するように制御され得る。たとえば、以下にさらに説明するように、任意の数の関与するタイルがアクティブ化された場合に、処理動作に関与するタイル(またはタイルの列)の数が設計制約を超えると、ASICは、第2のモードで動作するように制御され得る。
図2Bは、第2の動作モードで動作するように構成されたタイルのアレイ200を示す。インターリービングと呼ばれることもある第2の動作モードでは、バスライン210上に存在する遅延レジスタ212は、遅延レジスタ212を含むバスライン210上に提供される入力データのベクトルが遅延を受けるようにアクティブ化される。たとえば、タイル202a、202cの第1のサブセットにおいて、両方のバスライン210a、210cに同時に提供される入力ベクトル214aは、タイル202aに直接提供されるが、遅延レジスタ212aに保持される。入力ベクトル214aは、遅延期間後に遅延レジスタ212aから解放され、タイル202cに提供される。たとえば、遅延期間は、タイル202aが第1のクロックサイクルで入力ベクトル214aを受信し、タイル202bが次の(または何らかの他の後続の)クロックサイクルで入力ベクトルを受信するように設定することができる。同様に、入力ベクトル214bは、第1のクロックサイクルでタイル202bにおいて受信されるが、遅延レジスタ212bに記憶され、次の(または他の何らかの後続の)クロックサイクルでタイル202dに解放される。
第2の動作モードでは、遅延の意図的な導入は、同じサブセットのタイルのアクティブ化のインターリービング、たとえば、スタガリングをもたらす。この構成では、入力ベクトル214の要素の値にかかわらず、タイルの半分以下を同時にアクティブ化することができる。その結果、値1のすべての要素を有するベクトルによる攻撃下でさえ、単位時間当たりの電力消費および電流変化率は、ASICの設計制約内に安全に留まることができる。
ASICの動作モードは、所与の計算のためのタイルのアレイ(またはタイルの列)の構成に基づいて、たとえば計算ごとに動的に選択することができる。たとえば、アレイの構成は、所与の計算を実行するために使用される独立して動作可能なタイル(またはタイルの列)の数とすることができる。ASICの動作モードは、第1または第2の基準を満たすタイルのアレイの構成に基づいて選択することができる。たとえば、第1の基準は、独立して動作可能なタイル(またはタイルの列)の数またはパーセンテージがしきい値を下回ることであり得、第1の基準が満たされると、第1の動作モードが実施される。第2の基準は、独立して動作可能なタイル(またはタイルの列)の数またはパーセンテージがしきい値を超えることであり得、第2の基準が満たされると、第2の動作モードが実施される。しきい値は、すべてのタイルが同時にアクティブ化された場合であっても、電力消費および電流変化率が依然としてASICの設計制約内に入るようなタイルの数またはパーセンテージとすることができる。より一般的には、しきい値基準は、ASICのしきい値利用率および/またはASICのハードウェア/動作制約に関連し得る。
いくつかの例では、ASICの動作モードは、コンパイラからの命令に基づいて制御することができる。たとえば、コンパイラは、第1の基準および第2の基準を示すASICの制御回路、たとえば制御タイルに情報を提供することができる。ASICの制御回路は、所与の計算のために、その計算のためのタイルの構成が第1または第2の基準を満たすかどうかを決定することができ、その決定に基づいてアレイの動作モードを制御することができる。たとえば、第2の基準が満たされると(たとえば、所与の計算に使用される独立して動作可能なタイルまたはタイルの列の数がしきい値を超えると)、ASICの制御回路は、第2のモードでの動作のために遅延レジスタをアクティブ化することができる。第1の基準が満たされると(たとえば、所与の計算に使用される独立して動作可能なタイルまたはタイルの列の数がしきい値未満になると)、ASICの制御回路は、第1のモードでの動作のために遅延レジスタを非アクティブ化することができる。
第1のモードと第2のモードとの間の遷移は、遅延レジスタを回路に、または回路から切り替えることを可能にすることができる、マルチプレクサなどのスイッチング要素によって制御することができる。マルチプレクサは、ASICの制御回路、たとえば制御タイルによって制御することができる。
いくつかの例では、しきい値(たとえば、独立して動作可能なタイルまたはタイルの列のしきい値数)は、外部ソースから、たとえば、しきい値構成を決定したASICのユーザから、またはしきい値構成を自動的に決定した外部コンピュータからコンパイラに供給することができる。
図2Aおよび図2Bの例では、各サブセットは、第2の動作モードで、多くとも半分のタイルを同時にアクティブ化することができるように、1対のタイル(またはタイルの列)を含む。図2Aおよび図2Bに示すものよりも大きいアレイの場合、いくつかの例では、各サブセットは、引き続き1対のタイルを含むことができ、いくつかの例では、各サブセットは、3つ以上のタイルを含むことができる。たとえば、各サブセットは、3つのタイルを含むことができ、そのうちの2つは遅延レジスタに接続され、第2の動作モードで、多くとも3分の1のタイルを同時にアクティブ化することができる。いくつかの例では、サブセット内のタイルの数は、タイルアクティブ化のさらなるインターリービングを導入することに関連付けられた処理におけるさらなる遅延と、タイルの小さいグループ(またはタイルの列)のみを同時にアクティブ化することを望むこととのバランスをとることによって決定することができる。
いくつかの例では、遅延レジスタは、第2のモードでのアレイの動作に加えて、ASICの他の機能、たとえば、大きいASICにわたって動作を同期させるための役割を果たすことができる。たとえば、大きいASICでは、チップ全体にわたる入力の伝播は、長時間、たとえば、数十クロックサイクルなど複数クロックサイクルを要する可能性がある。遅延レジスタは、伝播時間とクロックサイクルとの間の不整合が与えられると、動作を同期させるために使用することができる。
図3を参照すると、いくつかの例では、第1の並列モードおよび第2のインターリービングモードでタイルのアレイを動作させるアプローチを、タイルの2次元アレイに適用することができる。たとえば、図3に示すように、タイル302の2次元アレイ300は、x方向における信号伝播(たとえば、入力ベクトル308の伝播)のインターリービングを可能にする遅延レジスタ304と、y方向における信号伝播のインターリービングを可能にする遅延レジスタ306とを含むことができる。
図4を参照すると、ASICを動作させるための例示的なプロセスにおいて、所与の計算のためにASICのタイルの構成が決定される(400)。たとえば、計算の実行に関与するタイルの数またはパーセンテージが決定される。
たとえばASICの制御回路から、しきい値が取得される(402)。たとえば、しきい値は、コンパイラからASICに前もって提供しておくことができる。しきい値は、ASIC/ASICのタイルのしきい値利用率および/またはASICの動作/ハードウェア制約であってもよい(または関連してもよい)。しきい値は、タイルのしきい値数またはパーセンテージを示すことができる。他のしきい値例には、限定はしないが、しきい値エネルギー使用量、しきい値メモリ使用量、および/またはしきい値入力データサイズがある。
タイルの構成が第1の基準を満たすかどうか(404)、たとえば、計算の実行に関与するタイルの数またはパーセンテージがしきい値を下回るかどうかについての決定が行われる。そうである場合、ASICは、ASICのタイルの各々において計算のための入力データ(たとえば、入力ベクトル)を同時に受信すること(408)、および入力データを処理するためにタイルを動作させること(410)を含む、第1のモードで動作される(406)。
そうでない場合、タイルの構成が第2の基準を満たすこと(412)、たとえば、計算の実行に関与するタイルの数またはパーセンテージがしきい値を超えるかどうかについての決定が行われる。そうである場合、ASICは、第2のモードで動作される(414)。第2のモードでは、計算のための第1の入力データは、第1のクロックサイクルなど、第1の時間に、ASICの第1のグループのタイルの各タイルにおいて同時に受信され(416)、第1のグループのタイルのタイルは、第1の入力データを処理するように動作される(418)。また、第1の時間において、それぞれの第2の入力データが複数の遅延レジスタの各々に記憶され(420)、各遅延レジスタは、ASICの第2のグループのタイルのうちの1つのタイルに対応する。次のクロックサイクルなど、第2の時間に、第2の入力データが遅延レジスタから解放される(422)。解放されたそれぞれの第2の入力データは、第2のグループの各タイルにおいて受信され(424)、第2のグループのタイルのタイルは、第2の入力データを処理するために動作される(426)。
再び図1を参照すると、例示的なASIC100は、通信インターフェース108(たとえば、インターフェース108a、108b)を含むことができる。通信インターフェース108は、1つまたは複数のセットのシリアライザ/デシリアライザ(SerDes)インターフェースおよび汎用入出力(GPIO)インターフェースを含む。SerDesインターフェースは、命令(たとえば、以下に説明する制御可能バスラインを動作させるための命令)を受信し、かつ/またはASIC100のためのデータを入力し、かつASIC100から外部回路にデータを出力するように構成される。たとえば、SerDesインターフェースは、通信インターフェース108内に含まれるSerDesインターフェースのセット上で、32Gbps、56Gbpsのレート、または任意の適切なデータレートで、命令および/または入力データを送信するように構成され得る。GPIOインターフェースは、デバッギングおよび/またはブートストラッピングのためのインターフェースを提供するように構成される。たとえば、ASIC100は、起動時にブートプログラムを実行することができる。プログラムが故障した場合、管理者は、GPIOインターフェースを使用して、故障の原因をデバッグすることができる。
ASIC100は、通信インターフェース108、ベクトル処理ユニット104、および複数のタイル102の間でデータを伝達するように構成された複数の制御可能バスラインをさらに含む。制御可能バスラインは、たとえば、グリッドの第1の次元101(たとえば、行)とグリッドの第2の次元103(たとえば、列)の両方に沿って延在するワイヤを含む。第1の次元101に沿って延在する制御可能バスラインの第1のサブセットは、第1の方向(たとえば、図1の右側)にデータを転送するように構成することができる。第1の次元101に沿って延在する制御可能バスラインの第2のサブセットは、第2の方向(たとえば、図1の左側)にデータを転送するように構成することができる。第2の次元103に沿って延在する制御可能バスラインの第1のサブセットは、第3の方向(たとえば、図1の上部)にデータを転送するように構成することができる。第2の次元103に沿って延在する制御可能バスラインの第2のサブセットは、第4の方向(たとえば、図1の下部)にデータを転送するように構成することができる。
各制御可能バスラインは、クロック信号に従ってラインに沿ってデータを伝達するために使用されるフリップフロップのような複数のコンベヤ要素を含む。制御可能バスラインを介してデータを転送することは、各クロックサイクルにおいて、制御可能バスラインの第1のコンベヤ要素から制御可能バスラインの第2の隣接するコンベヤ要素にデータをシフトすることを含み得る。いくつかの実装形態では、データは、クロックサイクルの立ち上がりエッジまたは立ち下がりエッジで制御可能バスラインを介して伝達される。たとえば、第1のクロックサイクルにおいて、制御可能バスラインの第1のコンベヤ要素(たとえば、フリップフロップ)上に存在するデータは、第2のクロックサイクルにおいて、制御可能バスラインの第2のコンベヤ要素(たとえば、フリップフロップ)に転送され得る。いくつかの実装形態では、コンベヤ要素は、互いに一定の距離で周期的に離間され得る。たとえば、場合によっては、各制御可能バスラインは、複数のコンベヤ要素を含み、各コンベヤ要素は、対応するタイル102内に、またはその近傍に配置される。
各制御可能バスラインはまた、複数のマルチプレクサおよび/またはデマルチプレクサを含む。制御可能バスラインのマルチプレクサ/デマルチプレクサは、バスラインとASICチップ100の構成要素との間でデータを転送するように構成される。たとえば、制御可能バスラインのマルチプレクサ/デマルチプレクサは、タイル102に、および/またはタイル102から、ベクトル処理ユニット104に、および/またはベクトル処理ユニット104から、または通信インターフェース108に、および/または通信インターフェース108からデータを転送するように構成することができる。タイル102と、ベクトル処理ユニット104と、通信インターフェースとの間でデータを転送することは、行われるべき所望のデータ転送に基づいて、マルチプレクサに制御信号を送信することを含むことができる。制御信号は、マルチプレクサおよび/またはデマルチプレクサに直接結合されたレジスタに記憶することができる。次いで、制御信号の値は、たとえば、ソース(たとえば、タイル102またはベクトル処理ユニット104内のメモリ)から制御可能バスラインに、どのデータが転送されるか、あるいは、制御可能バスラインからシンク(たとえば、タイル102またはベクトル処理ユニット104内のメモリ)に、どのデータが転送されるかを決定し得る。
制御可能バスラインは、各タイル、ベクトル処理ユニット、および/または通信インターフェースが、そのタイル、ベクトル処理ユニット、および/または通信インターフェースを通過する制御可能バスラインを操作するためのそれ自体の制御要素のセットを含むように、ローカルレベルで制御されるように構成される。たとえば、各タイル、1Dベクトル処理ユニット、および通信インターフェースは、対応するコンベヤ要素のセット、そのタイルとの間のデータ転送を制御するためのマルチプレクサおよび/またはデマルチプレクサ、1Dベクトル処理ユニット、および通信インターフェースを含み得る。
ASICチップ100の動作に関連付けられた待ち時間を最小限に抑えるために、タイル102およびベクトル処理ユニット104は、様々な構成要素間をデータが移動する距離を低減するように配置することができる。特定の実装形態では、タイル102と通信インターフェース108の両方を複数のセクションに分離することができ、タイルセクションと通信インターフェースセクションの両方は、タイルと通信インターフェースとの間をデータが移動する最大距離が低減されるように配列される。たとえば、いくつかの実装形態では、タイル102の第1のグループは、通信インターフェース108の第1の側の第1のセクションに配列することができ、タイル102の第2のグループは、通信インターフェースの第2の側の第2のセクションに配列することができる。その結果、すべてのタイル102が通信インターフェースの片側の単一のセクションに配列される構成に比べて、通信インターフェースから最も遠いタイルまでの距離を半分に削減することができる。
あるいは、タイルは、4つのセクションなどの異なる数のセクションに配列されてもよい。たとえば、図1に示す例では、ASIC100の複数のタイル102は、複数のセクション110(110a、110b、110c、110d)に配列される。各セクション110は、グリッドパターンで配列された同様の数のタイル102を含む(たとえば、各セクション110は、16行16列に配列された256個のタイルを含むことができる)。通信インターフェース108はまた、複数のセクション、すなわち、タイル102のセクション110の両側に配列された第1の通信インターフェース108aおよび第2の通信インターフェース108bに分割される。第1の通信インターフェース108aは、制御可能バスラインを介して、ASICチップ100の左側の2つのタイルセクション110a、110cに結合することができる。第2の通信インターフェース108bは、制御可能バスラインを介して、ASICチップ100の右側の2つのタイルセクション110b、110dに結合することができる。その結果、通信インターフェース108に、および/または通信インターフェース108からデータが移動する最大距離(したがって、データ伝播に関連付けられた待ち時間)は、単一の通信インターフェースのみが利用可能である配列と比較して半分にすることができる。データ待ち時間を低減するために、タイル102および通信インターフェース108の他の結合配列も可能である。タイル102と通信インターフェース108との結合配列は、制御可能バスラインのコンベヤ要素およびマルチプレクサに制御信号を提供することによってプログラムすることができる。
いくつかの実装形態では、1つまたは複数のタイル102は、ASIC100内の制御可能バスラインおよび/または他のタイル(本明細書では「制御タイル」と呼ばれる)に関して読取りおよび書込み動作を開始するように構成される。ASIC100内の残りのタイルは、(たとえば、レイヤ推論を計算するために)入力データに基づいて計算を実行するように構成することができる。いくつかの実装形態では、制御タイルは、ASIC100内の他のタイルと同じ構成要素および構成を含む。制御タイルは、ASIC100の追加タイル、追加行、または追加列として追加することができる。たとえば、各タイル102が入力データに対して計算を実行するように構成された、タイル102の対称グリッドの場合、入力データに対して計算を実行するタイル102の読取りおよび書込み動作を処理するために、制御タイルの1つまたは複数の追加の行が含まれ得る。たとえば、各セクション110は、18行のタイルを含み、最後の2行のタイルは、制御タイルを含み得る。別個の制御タイルを提供することは、いくつかの実装形態において、計算を実行するために使用される他のタイルにおいて利用可能なメモリの量を増加させる。しかしながら、本明細書で説明されるような制御を提供するために専用の別個のタイルは必要ではなく、場合によっては、別個の制御タイルは提供されない。むしろ、各タイルは、そのタイルの読取りおよび書込み動作を開始するための命令をそのローカルメモリに記憶し得る。
さらに、図1に示す各セクション110は、18行×16列に配列されたタイルを含むが、タイル102の数およびセクション内のそれらの配列は、異なっていてもよい。たとえば、場合によっては、セクション110は、等しい数の行および列を含み得る。
さらに、図1では4つのセクションに分割されて示されているが、タイル102は、他の異なるグループに分割することができる。たとえば、いくつかの実装形態では、タイル102は、ベクトル処理ユニット104の上の第1のセクション(たとえば、図1に示すページの上部に近い)およびベクトル処理ユニット104の下の第2のセクション(たとえば、図1に示すページの下部に近い)など、2つの異なるセクションにグループ化される。そのような配列では、各セクションは、たとえば、(方向103に沿って)下方向に18タイル×(方向101に沿って)横方向に32タイルのグリッドに配列された576タイルを含み得る。セクションは、他の総数のタイルを含んでいてもよく、異なるサイズのアレイに配列されてもよい。場合によっては、セクション間の分割は、ASIC100のハードウェア機能によって画成される。たとえば、図1に示すように、セクション110a、110bは、ベクトル処理ユニット104によってセクション110c、110dから分離され得る。
本明細書で説明されるように、いくつかの実装形態では、タイル102のうちの1つまたは複数は、制御情報の記憶に専用である。すなわち、制御情報の記憶に専用のタイル102は、重み入力およびアクティブ化入力などの入力データに対して計算を実行することには関与しない。制御情報は、たとえば、データをASICチップ100の周りで移動させることができるように、ASICチップ100の動作中に制御可能バスラインを構成するための制御データを含むことができる。制御データは、制御可能バスラインのコンベヤ要素およびマルチプレクサを制御するための制御信号の形態で制御可能バスラインに提供され得る。制御データは、あらかじめ定められたスケジュールに従ってタイル間でデータが転送されるように、制御可能バスラインの特定のコンベヤ要素が制御可能バスラインの次のコンベヤ要素にデータを渡すかどうかを指定する。制御データは、さらに、データがバスラインから転送されるか、またはバスラインに転送されるかを指定する。たとえば、制御データは、バスラインからメモリおよび/またはタイル内の他の回路にデータを転送するようにマルチプレクサに指示する制御信号を含むことができる。別の例では、制御データは、メモリおよび/またはタイル内の回路からバスラインにデータを転送するようにマルチプレクサに指示する制御信号を含むことができる。別の例では、制御データは、バスラインと通信インターフェース108との間、および/またはバスラインとベクトル処理ユニット104との間でデータを転送するようにマルチプレクサに指示する制御信号を含むことができる。あるいは、本明細書で開示されるように、専用の制御タイルは使用されない。むしろ、そのような場合、各タイルのローカルメモリは、その特定のタイルの制御情報を記憶する。
主題の実施形態および本明細書で説明される機能的動作は、デジタル電子回路において、本明細書で開示される構造およびその構造的等価物を含むコンピュータハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行される、またはデータ処理装置の動作を制御するための有形の非一時的なプログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。代替的に、または追加として、プログラム命令は、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械生成電気、光学、または電磁信号上で符号化することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができる。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASICを含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを構成するコードを含むことができる。
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行することができる。プロセスおよび論理フローは、専用論理回路、たとえば、FPGA、ASIC、またはGPGPU(汎用グラフィックス処理ユニット)によっても実施され得、装置は、それらとしても実装され得る。
本明細書は、多くの具体的な実施の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性のある範囲に対する限定ではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるものとする。本明細書で別個の実施形態の文脈で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装されることもある。逆に、単一の実施形態の文脈で説明される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的組合せで実装されることもある。さらに、特徴はいくつかの組合せにおいて働くものとして上記で説明され、そのようなものとして最初に特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されることがあり、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象とする場合がある。
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。状況によっては、マルチタスキングおよび平行処理が有利であり得る。さらに、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
主題の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内にある。たとえば、バスラインは「制御可能」と記載されているが、すべてのバスラインが同じレベルの制御を有する必要はない。たとえば、様々な程度の制御可能性があり得、いくつかのバスラインが、データを供給することができるタイルの数、またはデータを送信することができるタイルの数に関して制限される場合にのみ、いくつかのバスラインを制御することができる。別の例では、いくつかのバスラインは、本明細書で説明されるように、北、東、西、または南などの単一方向に沿ったデータの提供に専用にされてもよい。場合によっては、特許請求の範囲に列挙されるアクションは、異なる順序で行われ、依然として望ましい結果を達成し得る。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの実装形態では、マルチタスキングおよび平行処理が有利であり得る。
100 ASIC
101 第1の次元
102 タイル
103 第2の次元
104 ベクトル処理ユニット
108 通信インターフェース
108a インターフェース
108b インターフェース
110 セクション
110a セクション
110b セクション
110c セクション
110d セクション
200 アレイ
202 タイル
202a タイル
202b タイル
202c タイル
202d タイル
204 SRAM
206 セルの計算アレイ
208 ベクトル
208a ベクトル
208b ベクトル
210 バスライン
210a バスライン
210b バスライン
210c バスライン
210d バスライン
212 遅延レジスタ
212a 遅延レジスタ
212b 遅延レジスタ
214 入力ベクトル
214a 入力ベクトル
214b 入力ベクトル
300 2次元アレイ
302 タイル
304 遅延レジスタ
306 遅延レジスタ
308 入力ベクトル

Claims (20)

  1. 複数のタイルを含む集積回路のチップを動作させるための方法であって、
    計算を実行するための前記集積回路の前記タイルの構成を決定するステップと、
    前記タイルの前記構成が第1の基準を満たすとき、前記集積回路を、
    前記集積回路の前記タイルの各々において前記計算のためのそれぞれの入力データを同時に受信すること
    を含む、第1のモードで動作させるステップと、
    前記タイルの前記構成が第2の基準を満たすとき、前記集積回路を、
    第1の時間において、前記集積回路の第1のグループのタイルの各タイルにおいて前記計算のためのそれぞれの第1の入力データを同時に受信することと、
    前記第1の時間において、複数の遅延レジスタの各々に前記計算のためのそれぞれの第2の入力データを記憶することであり、各遅延レジスタが、前記集積回路の第2のグループのタイルのうちの1つのタイルに対応する、記憶することと、
    第2の時間において、前記第2の入力データを前記遅延レジスタから解放し、前記解放されたそれぞれの第2の入力データを、前記第2のグループのタイルの各タイルにおいて受信することと
    を含む、第2のモードで動作させるステップと
    を含む方法。
  2. 前記計算を実行するための前記タイルの構成を決定するステップが、前記計算を実行するために動作可能なタイルの数およびパーセンテージのうちの1つまたは複数を決定するステップを含む、請求項1に記載の方法。
  3. 前記第1の基準が、前記計算を実行するように動作可能なタイルの前記数またはパーセンテージがしきい値数またはしきい値パーセンテージ未満であることを含み、
    前記第2の基準が、前記計算を実行するように動作可能なタイルの前記数またはパーセンテージがしきい値数またはしきい値パーセンテージよりも大きいことを含む、
    請求項2に記載の方法。
  4. 前記計算を実行するための前記タイルの構成を決定するステップが、前記計算を実行するために動作可能なタイルの列の数を決定するステップを含む、請求項1に記載の方法。
  5. 前記第1の基準が、前記計算を実行するように動作可能なタイルの列の前記数またはパーセンテージがしきい値数またはしきい値パーセンテージ未満であることを含み、
    前記第2の基準が、前記計算を実行するように動作可能なタイルの列の前記数またはパーセンテージがしきい値数またはしきい値パーセンテージよりも大きいことを含む、
    請求項4に記載の方法。
  6. 前記タイルの前記構成が前記第1の基準または前記第2の基準を満たすかどうかを決定するステップを含む、請求項1に記載の方法。
  7. 前記集積回路を第2のモードで動作させるステップが、前記遅延レジスタを有効にするようにマルチプレクサを動作させるステップを含む、請求項1に記載の方法。
  8. 前記集積回路を第1のモードで動作させるステップが、前記遅延レジスタを無効にするように前記マルチプレクサを動作させるステップを含む、請求項7に記載の方法。
  9. 前記第1の時間が、第1のクロックサイクルであり、
    前記第2の時間が、次のクロックサイクルである、請求項1に記載の方法。
  10. 前記第1のモードでそれぞれの入力データを同時に受信するステップが、各タイルにおいて入力データのベクトルを受信するステップを含む、請求項1に記載の方法。
  11. 前記集積回路を第1のモードで動作させるステップが、前記それぞれの入力データを処理するために、前記集積回路の前記タイルの各々を動作させるステップを含む、請求項1に記載の方法。
  12. 前記集積回路を第2のモードで動作させるステップが、
    前記それぞれの第1の入力データを処理するために、前記第1のグループの前記タイルの各々を動作させるステップと、
    前記遅延レジスタから解放された前記それぞれの第2の入力データを処理するために、前記第2のグループの前記タイルの各々を動作させるステップと
    を含む、請求項1に記載の方法。
  13. 前記第1の基準および前記第2の基準の指示をコンパイラから受信するステップを含む、請求項1に記載の方法。
  14. 集積回路であって、
    各々が対応する第1のバスラインに接続された複数の遅延レジスタと、
    複数のタイルであって、第1のグループの前記タイルの各タイルが、対応する第2のバスラインに接続され、第2のグループの前記タイルの各タイルが、前記第1のバスラインの対応する1つに接続されている、複数のタイルと、
    コントローラであって、
    計算を実行するための前記第1のグループの前記タイルおよび前記第2のグループの前記タイルの構成を決定することと、
    前記タイルの前記構成が第1の基準を満たすとき、前記第1のバスラインおよび前記第2のバスラインを介して前記複数のタイルの各々において、前記計算のためのそれぞれの入力データが同時に受信される第1のモードで動作するように前記集積回路を制御することと、
    前記タイルの前記構成が第2の基準を満たすとき、
    第1の時間において、前記計算のためのそれぞれの第1の入力データが、前記第1のグループのタイルの各タイルにおいて同時に受信され、
    前記第1の時間において、前記計算のためのそれぞれの第2の入力データが、前記遅延レジスタの各々に記憶され、
    第2の時間において、前記第2の入力データが前記遅延レジスタから解放され、前記解放されたそれぞれの第2の入力データが、前記第2のグループのタイルの各タイルにおいて受信される、
    第2のモードで動作するように前記集積回路を制御することと
    を行うように構成されているコントローラと
    を含む集積回路。
  15. 各第2のバスラインに接続されたマルチプレクサを含む、請求項14に記載の集積回路。
  16. 前記タイルが2次元アレイに配列されている、請求項14に記載の集積回路。
  17. 前記集積回路が、特定用途向け集積回路(ASIC)を含む、請求項14に記載の集積回路。
  18. 各タイルが、
    複数の計算セル、
    前記計算セルに結合されたメモリ、および
    前記タイルとの間でデータを伝達するように構成された制御可能バスライン
    を含む、請求項14に記載の集積回路。
  19. 前記タイルのうちの少なくとも1つが、前記コントローラとして動作するように構成されている、請求項14に記載の集積回路。
  20. 通信インターフェースを含む、請求項14に記載の集積回路。
JP2022508894A 2019-08-14 2020-08-14 特定用途向け集積回路のデュアルモード動作 Active JP7423755B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962886481P 2019-08-14 2019-08-14
US62/886,481 2019-08-14
PCT/US2020/046287 WO2021030653A1 (en) 2019-08-14 2020-08-14 Dual-mode operation of application specific integrated circuits

Publications (2)

Publication Number Publication Date
JP2022544512A true JP2022544512A (ja) 2022-10-19
JP7423755B2 JP7423755B2 (ja) 2024-01-29

Family

ID=72243244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022508894A Active JP7423755B2 (ja) 2019-08-14 2020-08-14 特定用途向け集積回路のデュアルモード動作

Country Status (8)

Country Link
US (1) US11811401B2 (ja)
EP (1) EP3824554B1 (ja)
JP (1) JP7423755B2 (ja)
KR (1) KR102664456B1 (ja)
CN (1) CN114223000B (ja)
DK (1) DK3824554T3 (ja)
TW (1) TWI794636B (ja)
WO (1) WO2021030653A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163815A (ja) * 2004-12-07 2006-06-22 Matsushita Electric Ind Co Ltd 再構成可能な信号処理プロセッサ
JP2007293556A (ja) * 2006-04-25 2007-11-08 Ip Flex Kk 集積回路装置
JP2012194774A (ja) * 2011-03-16 2012-10-11 Ricoh Co Ltd Simd型マイクロプロセッサ
JP2019109892A (ja) * 2017-12-19 2019-07-04 三星電子株式会社Samsung Electronics Co.,Ltd. 計算のためのシステムと方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840914B1 (en) * 2005-05-13 2010-11-23 Massachusetts Institute Of Technology Distributing computations in a parallel processing environment
EP1933463A1 (en) 2005-10-05 2008-06-18 Matsushita Electric Industrial Co., Ltd. Reconfigurable semiconductor integrated circuit and its processing allocation method
US8990651B2 (en) 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
CN101566972B (zh) * 2009-05-12 2010-12-08 苏州国芯科技有限公司 嵌入式系统用户多分区存储空间访问权限的安全控制方法
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US9660650B1 (en) * 2014-03-13 2017-05-23 Altera Corporation Integrated circuits with improved register circuitry
US9529947B1 (en) * 2014-10-28 2016-12-27 Altera Corporation Register retiming and verification of an integrated circuit design
US10152565B2 (en) * 2015-06-03 2018-12-11 Altera Corporation Methods for performing register retiming operations into synchronization regions interposed between circuits associated with different clock domains
US10324730B2 (en) * 2016-03-24 2019-06-18 Mediatek, Inc. Memory shuffle engine for efficient work execution in a parallel computing system
US10169518B1 (en) * 2016-11-03 2019-01-01 Intel Corporation Methods for delaying register reset for retimed circuits
US11675588B2 (en) * 2021-08-20 2023-06-13 Micron Technology, Inc. Tile-based result buffering in memory-compute systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163815A (ja) * 2004-12-07 2006-06-22 Matsushita Electric Ind Co Ltd 再構成可能な信号処理プロセッサ
US20080034235A1 (en) * 2004-12-07 2008-02-07 Masahiro Houshaku Reconfigurable Signal Processor
JP2007293556A (ja) * 2006-04-25 2007-11-08 Ip Flex Kk 集積回路装置
JP2012194774A (ja) * 2011-03-16 2012-10-11 Ricoh Co Ltd Simd型マイクロプロセッサ
JP2019109892A (ja) * 2017-12-19 2019-07-04 三星電子株式会社Samsung Electronics Co.,Ltd. 計算のためのシステムと方法

Also Published As

Publication number Publication date
JP7423755B2 (ja) 2024-01-29
CN114223000B (zh) 2023-06-06
US11811401B2 (en) 2023-11-07
EP3824554A1 (en) 2021-05-26
TWI794636B (zh) 2023-03-01
KR20220032089A (ko) 2022-03-15
WO2021030653A1 (en) 2021-02-18
KR102664456B1 (ko) 2024-05-10
DK3824554T3 (da) 2022-10-24
EP3824554B1 (en) 2022-10-05
US20220286135A1 (en) 2022-09-08
TW202107326A (zh) 2021-02-16
CN114223000A (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
KR102614616B1 (ko) 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu)
US20230010315A1 (en) Application specific integrated circuit accelerators
KR102459854B1 (ko) 심층 신경망용 가속기
EP0086052B1 (en) Segregator functional plane for use in a modular array processor
TWI771675B (zh) 控制流程屏障和可重組態的資料處理器
US11762602B2 (en) Enhanced input of machine-learning accelerator activations
CN110210615B (zh) 一种用于执行神经网络计算的脉动阵列系统
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
CN209766043U (zh) 存算一体芯片、存储单元阵列结构
WO1984000226A1 (en) Interconnecting plane for modular array processor
US11868243B2 (en) Topological scheduling
US4543642A (en) Data Exchange Subsystem for use in a modular array processor
JP2023107786A (ja) オンチップ動作の初期化
JP7423755B2 (ja) 特定用途向け集積回路のデュアルモード動作
EP4128234A1 (en) Stacked-die neural network with integrated high-bandwidth memory
US9519807B1 (en) Hash generation circuitry and methods for multi-channel, multi-lane encryption and authentication
US20220318638A1 (en) Propagation latency reduction
CN103914429A (zh) 用于粗粒度动态可重构阵列的多模式数据传输互连器
Rezaei et al. Smart Memory: Deep Learning Acceleration In 3D-Stacked Memories
JP2007249744A (ja) 演算処理ユニット

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230410

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240117

R150 Certificate of patent or registration of utility model

Ref document number: 7423755

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150