IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ EDGECORTIX株式会社の特許一覧

特許7530544順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション
<>
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図1
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図2
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図3
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図4
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図5
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図6
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図7
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図8
  • 特許-順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-31
(45)【発行日】2024-08-08
(54)【発明の名称】順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーション
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240801BHJP
   G06F 17/10 20060101ALI20240801BHJP
【FI】
G06N3/063
G06F17/10 A
G06F17/10 S
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2023211411
(22)【出願日】2023-12-14
(65)【公開番号】P2024086675
(43)【公開日】2024-06-27
【審査請求日】2024-02-06
(31)【優先権主張番号】18/067,015
(32)【優先日】2022-12-16
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】520043615
【氏名又は名称】EDGECORTIX株式会社
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ハビン オレグ
(72)【発明者】
【氏名】ネズ ニコライ
(72)【発明者】
【氏名】ダスグプタ サキャシンガ
【審査官】渡辺 一帆
(56)【参考文献】
【文献】特開平04-237364(JP,A)
【文献】米国特許第11144822(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063-3/067
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
値を記憶し、記憶された値を送信するように構成されたメモリ;及び
複数の順次接続された計算モジュール
を備え、前記複数の順次接続された計算モジュールの中の各計算モジュールは、
プロセッサであって、
前記メモリから入力データ値及び重み値を受信し、
前記入力データ値及び前記重み値に対して数学的演算を実行し、結果データ値を生成する
ように構成された回路構成を含み、前記プロセッサは、メモリインターコネクトを通じて前記メモリに接続されている、プロセッサ、及び
加算器であって、
前記プロセッサから、前記結果データ値を直接受信し、
先行する結果データ値及び先行する合計値のうちの1つを、前記複数の順次接続された計算モジュールの中の先行する計算モジュールの先行する加算器から直接受信し、
前記結果データ値を前記先行する結果データ値及び前記先行する合計値のうちの前記1つに加算して合計値を生成し、
前記メモリに、又は、前記複数の順次接続された計算モジュールの中の後続の計算モジュールの後続の加算器に直接、前記結果データ値及び前記合計値のうちの1つを送信する
ように構成された回路構成を含み、前記加算器は、前記プロセッサ、前記先行する加算器、及び前記後続の加算器に直接接続され、前記メモリインターコネクトを通じて前記メモリに接続されている、加算器
を有する、集積回路。
【請求項2】
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記プロセッサ及び加算器に、プログラムに従って、送信、受信、及び演算を実行させるように構成された回路構成を含むシーケンサ
を更に有する、請求項1に記載の集積回路。
【請求項3】
ホストコンピュータから前記プログラムを受信する、及び
前記複数の順次接続された計算モジュールの中の各計算モジュールの前記シーケンサに前記プログラムを送信する
ように構成された回路構成を含むコントローラを更に備え、ここで前記プログラムは、ニューラルネットワーク推論を実行するための命令を含む、請求項2に記載の集積回路。
【請求項4】
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記後続の計算モジュールの後続の同期ユニットとデータ読み取り動作を同期させるように構成された回路構成を含む同期ユニットを更に有し、ここで前記プロセッサ及び前記後続の計算モジュールの後続のプロセッサは、単一のクロック周期内に、前記メモリからの単一の送信において前記入力データ値及び前記重み値のうちの1つを受信する、請求項1に記載の集積回路。
【請求項5】
前記メモリは複数のメモリバンクを含む、及び
前記メモリインターコネクトは、前記複数のメモリバンクの中のメモリバンクを、前記複数の順次接続された計算モジュールの中の計算モジュール又はホストコンピュータに選択的に接続する、
請求項3に記載の集積回路。
【請求項6】
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記メモリから、又は、前記先行する計算モジュールの先行するラインレジスタから直接、前記入力データ値を受信する、及び
前記プロセッサ及び前記後続の計算モジュールの後続のラインレジスタのうちの少なくとも1つに、前記入力データ値を直接送信する
ように構成された回路構成を含むラインレジスタを更に有し、ここで前記ラインレジスタは、前記プロセッサ、前記先行するラインレジスタ、及び前記後続のラインレジスタに直接接続され、前記メモリインターコネクトを通じて前記メモリに接続されている、請求項2に記載の集積回路。
【請求項7】
前記複数の順次接続された計算モジュールの中の各計算モジュールの前記シーケンサは、前記ラインレジスタに、前記プログラムに従って送信及び受信させるように構成された回路構成を更に含む、請求項6に記載の集積回路。
【請求項8】
前記プログラムは、ニューラルネットワーク推論を実行するための命令を含む、請求項5に記載の集積回路。
【請求項9】
前記コントローラは、前記プログラムに従って、
前記メモリに、前記ホストコンピュータから受信された第1の入力データ値を、前記メモリの複数のメモリバンクの中の第1のメモリバンクに記憶させる、
前記メモリに、前記ホストコンピュータから受信された第2の入力データ値を、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに記憶させる、
前記メモリに、前記ホストコンピュータから受信された前記重み値を、前記メモリの前記複数のメモリバンクの中の第3のメモリバンクに記憶させる
ように更に構成された回路構成を含む、請求項8に記載の集積回路。
【請求項10】
前記コントローラは、前記プログラムに従って、
第1の時間ステップにおいて、第1の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第1のメモリバンクに第1の入力データ値を要求させる、
前記第1の時間ステップの直後の第2の時間ステップにおいて、
前記第1のメモリバンクに、前記第1の入力データ値を前記第1の計算モジュールに送信させる、及び
第2の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに第2の入力データ値を要求させる、
前記第2の時間ステップの直後の第3の時間ステップにおいて、
前記第1の計算モジュールに、前記第1の入力データ値に対して数学的演算を実行させて第1の結果データ値を生成する、
前記第1の計算モジュールに、前記第1の結果データ値を前記第2の計算モジュールに送信させる、及び
前記第2のメモリバンクに、前記第2の入力データ値を前記第2の計算モジュールに送信させる、及び
前記第3の時間ステップの直後の第4の時間ステップにおいて、
前記第2の計算モジュールに、前記第2の入力データ値に対して数学的演算を実行させて第2の結果データ値を生成する、
前記第2の計算モジュールに、前記第1の結果データ値を前記第2の結果データ値に加算させて第1の合計値を生成する、及び、
前記第2の計算モジュールに、前記第1の合計値を前記メモリに送信させる、及び
前記第4の時間ステップの直後の第5の時間ステップにおいて、
前記メモリに、前記第2の計算モジュールから受信された前記第1の合計値を、前記メモリの前記複数のメモリバンクの中の第4のメモリバンクに記憶させる
ように更に構成された回路構成を含む、請求項8に記載の集積回路。
【請求項11】
前記コントローラは、前記プログラムに従って、
第1の時間ステップにおいて、第1の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第1のメモリバンクに第1の入力データ値及び第2の入力データ値を要求させる、
前記第1の時間ステップの直後の第2の時間ステップにおいて、前記第1のメモリバンクに、前記第1の入力データ値及び前記第2の入力データ値を前記第1の計算モジュールに送信させる、
前記第2の時間ステップの直後の第3の時間ステップにおいて、
前記第1の計算モジュールに、前記第1の入力データ値に対して数学的演算を実行させて第1の結果データ値を生成する、
前記第1の計算モジュールの第1の加算器に、前記第1の結果データ値を前記第2の計算モジュールの第2の加算器に送信させる、及び
前記第1の計算モジュールの第1のラインレジスタに、前記第2の入力データ値を前記第2の計算モジュールの第2のラインレジスタに送信させる、及び
前記第3の時間ステップの直後の第4の時間ステップにおいて、
前記第2の計算モジュールに、前記第2の入力データ値に対して数学的演算を実行させて第2の結果データ値を生成する、
前記第2の計算モジュールに、前記第1の結果データ値を前記第2の結果データ値に加算させて第1の合計値を生成する、及び、
前記第2の計算モジュールに、前記第1の合計値を前記メモリに送信させる、及び
前記第4の時間ステップの直後の第5の時間ステップにおいて、
前記メモリに、前記第2の計算モジュールから受信された前記第1の合計値を、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに記憶させる
ように更に構成された回路構成を含む、請求項10に記載の集積回路。
【請求項12】
前記プロセッサは、点単位畳み込み又は深さ単位畳み込みを実行するように構成されている、請求項1に記載の集積回路。
【請求項13】
集積回路に含まれる計算モジュールであって、
メモリに接続可能な第1の入力データ経路、
前記第1の入力データ経路の下流に直接接続されたプロセッサ、前記プロセッサは、畳み込み演算を実行するように構成された回路構成を含む、
先行する加算器に直接接続可能な第2の入力データ経路、
前記プロセッサ及び前記第2の入力データ経路の下流に直接接続された加算器、前記加算器は、加算するように構成された回路構成を含む、
前記加算器の下流に直接接続され、前記メモリに接続可能な第1の出力データ経路、
前記加算器の下流に直接接続され、後続の加算器に直接接続可能な第2の出力データ経路、
先行するシーケンサに直接接続可能な第1の双方向制御経路、
前記第1の双方向制御経路の下流に直接接続されたシーケンサ、前記シーケンサは、プログラムに従い、前記プロセッサ及び加算器に信号を送信するように構成された回路構成を含む、及び
後続のシーケンサに直接接続可能な第2の双方向制御経路
を備える、計算モジュール
【請求項14】
前記シーケンサは、
先行する同期ユニット又は後続の同期ユニットのうちの少なくとも1つとデータ読み取り動作を同期させるために前記第1の双方向制御経路及び前記第2の双方向制御経路を通じて信号を送信及び受信するように構成された回路構成を含む同期ユニット、ここで、前記プロセッサ、及び、先行するプロセッサ及び後続のプロセッサのうちの少なくとも1つは、単一のクロック周期内に前記メモリから単一の送信を受信する、
を更に含む、請求項13に記載の計算モジュール
【請求項15】
前記シーケンサは、
前記メモリに接続可能な第3の入力データ経路、
先行するラインレジスタに直接接続可能な第4の入力データ経路、
前記第3の入力データ経路及び前記第4の入力データ経路の下流に直接接続されたラインレジスタ、
前記ラインレジスタの下流に直接接続され、後続のラインレジスタに接続可能な第3の出力データ経路
を更に含む、請求項13に記載の計算モジュール
【発明の詳細な説明】
【背景技術】
【0001】
集積回路などのチップ内にますます多くの計算リソースが詰め込まれるのに伴い、計算能力のコストはより安くなってきている。しかしながら、所与のチップの完全な計算能力が、必ずしもあらゆるタスクに対して利用されているわけではない。従って、単一のチップに複数タイプのタスクが割り当てられる状況において、チップはそのタスクの中で最もリソースを要するものに対応するような計算リソースで設計され得る。その特定の設計は、他のタスクの実行には効率的でない場合があり、そのため、実行が失われる可能性がある。これは特に、異なるタイプのニューラルネットワーク推論を実行するように構成されたアクセラレータチップに当てはまる。
【図面の簡単な説明】
【0002】
添付の図と共に読まれるときに、本開示の態様が以下の詳細な説明から最も良く理解される。産業における標準的な慣行に従って、様々な特徴は一定の縮尺で描かれていないことが留意される。実際には、様々な特徴の寸法は、論述の明確さのために、任意に増加又は減少し得る。
【0003】
図1】本発明の少なくとも一実施形態による、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのためのシステムの概略図である。
【0004】
図2】本発明の少なくとも一実施形態による、ラインレジスタを含む、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのための集積回路の概略図である。
【0005】
図3】本発明の少なくとも一実施形態による、メモリが複数のメモリバンクを含む、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのための集積回路の概略図である。
【0006】
図4】本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用の順次接続された計算モジュールの概略図である。
【0007】
図5】本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用の同期ユニットを含む、順次接続された計算モジュールの概略図である。
【0008】
図6】本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用のラインレジスタを含む、順次接続された計算モジュールの概略図である。
【0009】
図7】本発明の少なくとも一実施形態による、データブロードキャスティングが実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。
【0010】
図8】本発明の少なくとも一実施形態による、入力タイル並列処理が実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。
【0011】
図9】本発明の少なくとも一実施形態による、カーネル行並列処理が実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。
【発明を実施するための形態】
【0012】
以下の開示は、提供される主題の異なる特徴を実装するための、多くの異なる実施形態、又は例を提供する。構成要素、値、動作、材料又は配置等の具体例が、本開示を簡略化にするために以下で説明される。当然ながら、これらは単なる例であって、限定を意図するものではない。他の構成要素、値、動作、材料又は配置等が企図される。加えて、本開示は、様々な例において参照番号及び/又は文字を繰り返し得る。この繰り返しは、簡略化及び明確さを目的としており、それ自体が、論述される様々な実施形態及び/又は構成間の関係を規定するものではない。
【0013】
ニューラルネットワーク推論の実行において、様々な度合いの並列処理が存在し、計算効率を向上させるために利用可能である。特に、多くの計算リソースを有するチップにより実行されるシンプルなタスクは、並列処理を通じてそのリソースのより多くを利用可能である。しかしながら、最高性能のチップは、限定された数の利用可能な度合いの並列処理を活用するように最適化された、固定アーキテクチャを有することになり、全ての度合いの並列処理を効率的にサポートできなくなる。従って、シンプルなタスクを強力なチップ上で実行することは、計算リソース利用の低下、及び、性能及び電力効率の低下をもたらし得る。
【0014】
他方、フィールドプログラマブルゲートアレイ(FPGA)などの、完全なアーキテクチャ再構成が可能なチップが存在する。そのようなチップは、各特定のタスクのために再構成可能である。しかしながら、そのようなチップを実際に再構成するのに必要なリソースは、多くの場合、タスク中の全計算リソースの利用におけるリソース貯蓄分を超える。更に、FPGAは、高粒度再構成可能性に起因する高い柔軟性を提供するが、これによりは、それらのピーク計算性能は、同様のチップサイズの特定用途向け集積回路(ASIC)と比較して限定される。
【0015】
粗粒度並列再構成可能性は、計算モジュール及び加算器の間の「リダクションインターコネクト(reduction interconnect)」を通じて実現され得る。これらのインターコネクトにより、あらゆる計算モジュールについて、メモリへの直接アクセス、又は選択された加算器を経由することが可能になる。そのような構成は、計算モジュールが共通のシーケンサの制御下で完全に同期して作業していることを条件に、複数の入力チャネルタイルの並列した計算を可能にする。そのような構成は、推論を開始する前に回路切り替え方式で設定され、選択された信号を利用して接続性を制御することによって、リダクションインターコネクトの構成が推論中に再構成され得る。
【0016】
粗粒度並列再構成可能性はまた、メモリ及び計算モジュールの間のラインバッファ及び「リダクションインターコネクト」を通じて実現され得る。そのような構成は、複数の計算モジュールで利用を増加させることにより、カーネル行次元における並列処理を可能にする。そのような構成は、カーネル行におけるインデックスに対応するラインバッファのどのインデックスが各計算モジュールに供給されるかを判定するために利用される。
【0017】
しかしながら、アクセラレータの計算モジュールの数が増加するにつれて、計算モジュール及びラインバッファ又は加算器の間の接続の長さ及び数が増加する。特定用途向け集積回路(ASIC)の場合、接続の数が多いと作製が複雑になり得、アクセラレータの速度は接続の長さによって制限される。接続の長さが増加するにつれ、値が接続を通じて送信されるのに十分な時間を与えるためにクロック周期が拡大される必要があり、速度はクロック周期に反比例して変化する。
【0018】
本明細書で説明される少なくとも幾つかの実施形態は、順次接続された計算モジュールによって接続の長さ及び数を削減する。少なくとも幾つかの実施形態において、同期命令は、単一のシーケンサが広範な制御命令を各計算モジュールに直接渡す代わりに、隣接する計算モジュールの同期ユニット間の低ビット同期チェーンにおいて送信される。少なくとも幾つかの実施形態において、ニューラルネットワーク推論のためのプログラムは、入力タイル並列処理モード及びカーネル行並列処理モードにおいて、順次チェーン内の特定の計算モジュールについて開始遅延を引き起こす。少なくとも幾つかの実施形態において、ニューラルネットワーク推論のためのプログラムは、データブロードキャスティングモードにおける順次チェーン内の特定の計算モジュールについて同時開始を引き起こす。少なくとも幾つかの実施形態において、「リダクションインターコネクト手法」は、接続の数及び長さを削減するために、「デイジーチェーン」手法に置き換えられる。少なくとも幾つかの実施形態において、加算器が含まれる計算モジュールの単一の回路構成設計は、任意の数の計算モジュールを含むアクセラレータを作製するために複製可能である。
【0019】
図1は、本発明の少なくとも一実施形態による、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのためのシステムの概略図である。システムは、接続されたホストコンピュータ130及び集積回路100を含む。
【0020】
集積回路100は、計算モジュール102A、計算モジュール102B、及び計算モジュール102C、コントローラ104、及びメモリ106を含む複数の順次接続された計算モジュールを含む。少なくとも幾つかの実施形態において、集積回路100は、専用回路構成を含む特定用途向け集積回路(ASIC)である。少なくとも幾つかの実施形態において、集積回路はフィールドプログラマブルゲートアレイ(FPGA)である。
【0021】
少なくとも幾つかの実施形態において、複数の順次接続された計算モジュールは、直列で接続されており、隣接する計算モジュールは、1つ又は複数のデータ経路及び1つ又は複数の制御経路を介して接続されている。少なくとも幾つかの実施形態において、隣接する計算モジュールは、単一のデータ経路及び単一の制御経路を介して接続されている。少なくとも幾つかの実施形態において、データ経路は単方向性であり、順次接続された計算モジュールを通じてデータが一方向にのみ流れることを意味する。例えば、計算モジュール102Aは、1つ又は複数のデータ経路を介して計算モジュール102Bにデータを送信するように構成されているが、計算モジュール102Bは、計算モジュール102Aにデータを送信するように構成されていない。同様に、計算モジュール102Bは、1つ又は複数のデータ経路を介して計算モジュール102Cにデータを送信するように構成されているが、計算モジュール102Cは、計算モジュール102Bにデータを送信するように構成されていない。少なくとも幾つかの実施形態において、制御経路は双方向性であり、順次接続された計算モジュールを通じて制御信号がいずれの方向にも流れ得ることを意味する。例えば、計算モジュール102Aは、1つ又は複数の制御経路を介して計算モジュール102Bに制御信号を送信するように構成されており、計算モジュール102Bは、同じ1つ又は複数の制御経路を介して計算モジュール102Aに制御信号を送信するように構成されている。同様に、計算モジュール102Bは1つ又は複数の制御経路を介して計算モジュール102Cに制御信号を送信するように構成されており、計算モジュール102Cは、同じ1つ又は複数の制御経路を介して計算モジュール102Bに制御信号を送信するように構成されている。
【0022】
計算モジュール102Bは、複数の計算モジュールの中の各計算モジュールを表す。計算モジュール102Bは、プロセッサ110、シーケンサ112、及び加算器114を含む。少なくとも幾つかの実施形態において、プロセッサ110は、ニューラルネットワーク推論のためのプログラムに従い、値に対して数学的演算を実行するように構成された回路構成を含む。少なくとも幾つかの実施形態において、プロセッサ110は、点単位畳み込み又は深さ単位畳み込みなどの畳み込み演算を実行するように構成されている。少なくとも幾つかの実施形態において、数学的演算は、入力データ値及び重み値に対して実行されて、結果値を生成する。少なくとも幾つかの実施形態において、プロセッサ110はメモリ106に接続され、メモリ106から入力データ値及び重み値を受信するように構成されている。少なくとも幾つかの実施形態において、プロセッサ110は、結果値を加算器114に送信するように構成されている。
【0023】
少なくとも幾つかの実施形態において、シーケンサ112は、制御経路を介してプロセッサ110、加算器114、及びコントローラ104に接続されている。少なくとも幾つかの実施形態において、シーケンサ112は、プロセッサ110及び加算器114に、ニューラルネットワーク推論についての命令を含むプログラムなどのプログラムに従って、送信、受信、及び演算を実行させるように構成された回路構成を含む。少なくとも幾つかの実施形態において、シーケンサ112は、コントローラ104からプログラムの命令を受信するように構成された回路構成を含む。
【0024】
少なくとも幾つかの実施形態において、加算器114は、結果データ値及び合計値を加算するように構成された回路構成を含む。少なくとも幾つかの実施形態において、加算器114は、プロセッサ110から結果データ値を直接受信し、計算モジュール102Aの先行する加算器から先行する結果データ値及び先行する合計値を直接受信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、加算器114は、プロセッサ110から受信された結果データ値を、先行する結果データ値及び先行する合計値のうちの1つに加算して、計算モジュール102Aの先行する加算器から受信された合計値を生成するように構成された回路構成を含む。少なくとも幾つかの実施形態において、加算器114は、メモリ106に、又は、計算モジュール102Cの後続の加算器に直接、結果データ値及び合計値を送信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、加算器114は、プロセッサ110、計算モジュール102Aの先行する加算器、及び計算モジュール102Cの後続の加算器に直接接続され、メモリインターコネクトを通じてメモリ106に接続されている。
【0025】
コントローラ104は、ホストコンピュータ130及び複数の順次接続された計算モジュールの中の各計算モジュールに接続されている。少なくとも幾つかの実施形態において、コントローラ104は、ニューラルネットワーク推論を実行するための命令を含むプログラムなどのプログラムをホストコンピュータ130から受信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、コントローラ104は、複数の順次接続された計算モジュールの中の各計算モジュールのシーケンサにプログラムを送信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、コントローラ104は、全ての計算モジュールに適用可能な命令を送信する。少なくとも幾つかの実施形態において、コントローラ104は、一部の計算モジュールにのみ適用可能な命令を送信する。例えば、全てよりも少ない、複数の順次接続された計算モジュールを利用するプログラムは、全ての計算モジュールについての命令を含まないことになる。少なくとも幾つかの実施形態において、ホストコンピュータ130から受信されたプログラムのフォーマットは、複数の計算モジュールのシーケンサに送信される準備が整っている。少なくとも幾つかの実施形態において、ホストコンピュータ130から受信されたプログラムのフォーマットは、複数の計算モジュールのシーケンサに送信される前にコントローラ104によって変換される。少なくとも幾つかの実施形態において、コントローラ104は、コントローラ104に適用可能なプログラムの命令を記憶し、残りの命令を計算モジュールのシーケンサに送信する。
【0026】
少なくとも幾つかの実施形態において、メモリ106は、値を記憶し、記憶された値を送信するように構成されている。少なくとも幾つかの実施形態において、メモリ106は、ランダムアクセスメモリ(Random Access Memory:RAM)、組み込みシステムブロック(Embedded System Block:ESB)、連想メモリ(Content Addressable Memory:CAM)などのような揮発性データストレージの1つ又は複数のバンク又はブロックを含む。少なくとも幾つかの実施形態において、メモリ106は、集積回路100全体に分散されている。少なくとも幾つかの実施形態において、メモリ106は、インターコネクト又はデータバスなどの1つ又は複数のデータ経路を介して各計算モジュールに接続されている。少なくとも幾つかの実施形態において、メモリ106は、データ経路を通じて計算モジュールのプロセッサに入力データ値を送信するように構成されており、データ経路を通じて計算モジュールの加算器から結果データ値及び合計値を受信するように構成されている。
【0027】
少なくとも幾つかの実施形態において、ホストコンピュータ130は、パーソナルコンピュータ、サーバ、クラウドコンピューティングリソースの一部、又は、集積回路100にプログラム命令を送信し、結果データを記憶することができるその他のものである。少なくとも幾つかの実施形態において、ホストコンピュータ130は、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、スマートウォッチ、モノのインターネット(Internet of Things:IoT)デバイスなどである。ホストコンピュータ130は、制御経路及びデータ経路を通じて集積回路100に接続されている。少なくとも幾つかの実施形態において、ホストコンピュータ130は、プログラム、入力データ、及び結果データを記憶するように構成されたダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)などの外部メモリを含む。
【0028】
図2は、本発明の少なくとも一実施形態による、ラインレジスタを含む、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのための集積回路200の概略図である。集積回路200は、計算モジュール202A、計算モジュール202B、及び計算モジュール202C、コントローラ204、及びメモリ206を含む複数の順次接続された計算モジュールを含む。計算モジュール202A、計算モジュール202B、及び計算モジュール202C、コントローラ204、及びメモリ206を含む集積回路200の複数の順次接続された計算モジュールは、別様に説明されている場合を除き、それぞれ、図1の計算モジュール102A、計算モジュール102B、及び計算モジュール102C、コントローラ104、及びメモリ106を含む集積回路100の複数の順次接続された計算モジュールと構造及び機能において実質的に同様である。
【0029】
計算モジュール202Bは、複数の計算モジュールの中の各計算モジュールを表す。計算モジュール202Bは、プロセッサ210、シーケンサ212、加算器214、及びラインレジスタ216を含む。プロセッサ210、シーケンサ212、及び加算器214は、別様に説明されている場合を除き、それぞれ、図1のプロセッサ110、シーケンサ112、及び加算器114と構造及び機能において実質的に同様である。
【0030】
少なくとも幾つかの実施形態において、ラインレジスタ216は、メモリ206から、又は、計算モジュール202Aの先行するラインレジスタから直接、入力データ値を受信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、ラインレジスタ216は、プロセッサ210又は計算モジュール202Cの後続のラインレジスタに入力データ値を直接送信するように構成された回路構成を含む。少なくとも幾つかの実施形態において、ラインレジスタ216は、プロセッサ210、先行するラインレジスタ、及び後続のラインレジスタに直接接続され、メモリインターコネクトを通じてメモリ206に接続されている。少なくとも幾つかの実施形態において、ラインレジスタ216は、メモリ206から複数の入力データ値を受信し、少なくとも1つの入力データ値をプロセッサ210に送信し、複数の入力データ値の中から他の入力データ値を計算モジュール202Cの後続のラインレジスタに送信するように構成されている。少なくとも幾つかの実施形態において、ラインレジスタ216は、計算モジュール202Aの先行するラインレジスタから複数の入力データ値を受信し、少なくとも1つの入力データ値をプロセッサ210に送信し、複数の入力データ値の中から他の入力データ値を計算モジュール202Cの後続のラインレジスタに送信するように構成されている。
【0031】
少なくとも幾つかの実施形態において、プロセッサ210は、データ経路を介してラインレジスタ216に接続され、ラインレジスタ216から入力データを受信するように構成されている。少なくとも幾つかの実施形態において、シーケンサ212は、制御経路を介してラインレジスタ216に接続され、ラインレジスタ216に、ニューラルネットワーク推論についての命令を含むプログラムなどのプログラムに従って、送信、受信、及び演算を実行させるように構成されている。少なくとも幾つかの実施形態において、シーケンサ212は、ラインレジスタに、プログラムに従って送信及び受信させるように構成された回路構成を更に含む。
【0032】
少なくとも幾つかの実施形態において、各計算モジュールは、計算モジュール202Bと実質的に同様であるが、加算器214を伴わない。そのような実施形態は、結果のマージが必要ない場合に利用され得る。
【0033】
図3は、本発明の少なくとも一実施形態による、メモリが複数のメモリバンクを含む、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションのための集積回路300の概略図である。集積回路300は、計算モジュール302、コントローラ304、及びメモリ306を含む、複数の順次接続された計算モジュールを含む。計算モジュール302、コントローラ304、及びメモリ306を含む集積回路300の複数の順次接続された計算モジュールは、別様に説明されている場合を除き、それぞれ、図2の計算モジュール202A、計算モジュール202B、及び計算モジュール202C、コントローラ204、及びメモリ206を含む集積回路200の複数の順次接続された計算モジュールと構造及び機能において実質的に同様である。ホストコンピュータ330は、別様に説明されている場合を除き、図1のホストコンピュータ130と構造及び機能において実質的に同様である。
【0034】
メモリ306は、メモリインターコネクト320、及び、入力データメモリバンク322、重みメモリバンク324、及び累積メモリバンク326などの複数のメモリバンクを含む。少なくとも幾つかの実施形態において、複数のメモリバンクは、複数の入力データメモリバンク、複数の重みメモリバンク、及び複数の累積メモリバンクを含む。少なくとも幾つかの実施形態において、メモリバンクは、入力データ値、重み値、及び累積値などの単一のタイプの値を記憶することが専用ではない。少なくとも幾つかの実施形態において、メモリ306は、ブロックなどのような、バンク以外の部分に分割される。少なくとも幾つかの実施形態において、1つ又は複数のブロックは、組み合わされて単一のバンク又は仮想ブロックを形成し得る。少なくとも幾つかの実施形態において、メモリインターコネクト320は、入力データメモリバンク322、重みメモリバンク324、又は累積メモリバンク326などの複数のメモリバンクの中のメモリバンクを、計算モジュール302などの複数の順次接続された計算モジュールの中の計算モジュール、又は、ホストコンピュータ330などのホストコンピュータに選択的に接続する。
【0035】
少なくとも幾つかの実施形態において、コントローラ304は、プログラムに従って、メモリ306に、ホストコンピュータ330から受信された第1の入力データ値を、入力データメモリバンク322などの第1のメモリバンクに記憶させるように構成された回路構成を含む。少なくとも幾つかの実施形態において、コントローラ304は、メモリ306に、ホストコンピュータ330から受信された第2の入力データ値を、入力データメモリバンク322又は別の入力データメモリバンクなどの第2のメモリバンクに記憶させ、メモリ306に、ホストコンピュータ330から受信された重み値を、重みメモリバンク324などの第3のメモリバンクに記憶させるように更に構成されている。
【0036】
図4は、本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用の順次接続された計算モジュール402の概略図である。少なくとも幾つかの実施形態において、計算モジュール402は、同一構造の複数の順次接続された計算モジュールを含む集積回路の一部である。計算モジュール402は、プロセッサ410、シーケンサ412、加算器414、入力データ経路440及び441、出力データ経路442及び443、及び双方向制御経路447を含む。プロセッサ410、シーケンサ412、及び加算器414は、別様に説明されている場合を除き、それぞれ、図2のプロセッサ210、シーケンサ212、及び加算器214と構造及び機能において実質的に同様である。
【0037】
データ経路440、441、442、及び443は、データ信号送信のために構成された電子通信の経路である。少なくとも幾つかの実施形態において、データ経路440、441、442、及び443は、より高ビット幅の送信のために構成されている。少なくとも幾つかの実施形態において、入力データ経路440は、メモリに接続可能である。少なくとも幾つかの実施形態において、プロセッサ410は、入力データ経路440の下流に直接接続され、畳み込み演算を実行するように構成された回路構成を含む。少なくとも幾つかの実施形態において、入力データ経路441は、集積回路の複数の順次接続された計算モジュールの中の先行する計算モジュールの加算器などの先行する加算器に直接接続可能である。少なくとも幾つかの実施形態において、加算器414は、プロセッサ410及び入力データ経路441の下流に直接接続され、加算するように構成された回路構成を含む。少なくとも幾つかの実施形態において、出力データ経路442は、加算器414の下流に直接接続され、メモリに接続可能である。少なくとも幾つかの実施形態において、出力データ経路443は、加算器414の下流に直接接続され、集積回路の複数の順次接続された計算モジュールの中の後続の計算モジュールの加算器などの後続の加算器に直接接続可能である。
【0038】
制御経路447は、制御信号送信のために構成された電子通信の経路である。少なくとも幾つかの実施形態において、双方向制御経路447は、コントローラに接続可能である。少なくとも幾つかの実施形態において、シーケンサ412は、双方向制御経路447の下流に直接接続され、ニューラルネットワーク推論のためのプログラムなどのプログラムに従って、プロセッサ410及び加算器414に信号を送信するように構成されている。
【0039】
図5は、本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用の同期ユニット513を含む、順次接続された計算モジュール502の概略図である。少なくとも幾つかの実施形態において、計算モジュール502は、同一構造の複数の順次接続された計算モジュールを含む集積回路の一部である。計算モジュール502は、プロセッサ510、シーケンサ512、同期ユニット513、加算器514、入力データ経路540及び541、出力データ経路542及び543、及び双方向制御経路547、548、及び549を含む。プロセッサ510、シーケンサ512、加算器514、入力データ経路540及び541、出力データ経路542及び543、及び双方向制御経路547は、別様に説明されている場合を除き、それぞれ、図4のプロセッサ410、シーケンサ412、加算器414、入力データ経路440及び441、出力データ経路442及び443、及び双方向制御経路447と構造及び機能において実質的に同様である。
【0040】
少なくとも幾つかの実施形態において、同期ユニット513は、後続の計算モジュールの後続の同期ユニットとデータ読み取り動作を同期させるように構成された回路構成を含み、ここでプロセッサ510及び後続の計算モジュールの後続のプロセッサは、単一のクロック周期内に、メモリからの単一の送信において入力データ値及び重み値のうちの1つを受信する。同期ユニット513は、双方向制御経路548及び549に接続されている。制御経路548及び549は、制御信号送信のために構成された電子通信の経路である。少なくとも幾つかの実施形態において、制御経路548及び549は、データ経路540、541、542、及び543に比べてより低いビット幅送信などのより低いビット幅送信のために構成されている。少なくとも幾つかの実施形態において、制御経路548及び549は、2ビット送信のために構成されている。少なくとも幾つかの実施形態において、双方向制御経路548は、集積回路の複数の順次接続された計算モジュールの中の先行する計算モジュールのシーケンサなどの先行するシーケンサに直接接続可能である。少なくとも幾つかの実施形態において、双方向制御経路549は、集積回路の複数の順次接続された計算モジュールの中の後続の計算モジュールのシーケンサなどの後続のシーケンサに直接接続可能である。少なくとも幾つかの実施形態において、同期ユニット513は、双方向制御経路548及び549に接続され、双方向制御経路548及び549を利用して、先行する同期ユニット、後続の同期ユニット、又は他の同期ユニットとデータ読み取り動作を同期させる。少なくとも幾つかの実施形態において、同期されたデータ読み取り動作は、2つ又はそれより多くの計算モジュールの中で行われ、その間、マスタ計算モジュールの同期ユニットは、関与する2つ又はそれより多くの計算モジュールの中の全ての他の計算モジュールの同期ユニットを制御する。少なくとも幾つかの実施形態において、同期ユニット513は、先行する同期ユニット又は後続の同期ユニットのうちの少なくとも1つとデータ読み取り動作を同期させるために双方向制御経路548及び双方向制御経路549を通じて信号を送信及び受信するように構成された回路構成を含み、ここで、プロセッサ510、及び、先行するプロセッサ及び後続のプロセッサのうちの少なくとも1つは、単一のクロック周期内にメモリから単一の送信を受信する。
【0041】
少なくとも幾つかの実施形態において、各計算モジュールは、計算モジュール502と実質的に同様であるが、加算器514、入力データ経路541、及び出力データ経路543を伴わない。そのような実施形態は、結果のマージが必要ない場合に利用され得る。
【0042】
図6は、本発明の少なくとも一実施形態による、ニューラルネットワークハードウェアアクセラレーションのための集積回路用のラインレジスタ616を含む、順次接続された計算モジュール602の概略図である。少なくとも幾つかの実施形態において、計算モジュール602は、同一構造の複数の順次接続された計算モジュールを含む集積回路の一部である。計算モジュール602は、プロセッサ610、シーケンサ612、同期ユニット613、加算器614、ラインレジスタ616、入力データ経路640、641、644及び645、出力データ経路642、643、及び646、及び双方向制御経路647、648、及び649を含む。プロセッサ610、シーケンサ612、同期ユニット613、加算器614、入力データ経路640及び641、出力データ経路642及び643、及び双方向制御経路647、648、及び649は、別様に説明されている場合を除き、それぞれ、図5のプロセッサ510、シーケンサ512、同期ユニット513、加算器514、入力データ経路540及び541、出力データ経路542及び543、及び双方向制御経路547、548、及び549と構造及び機能において実質的に同様である。ラインレジスタ616は、別様に説明されている場合を除き、図2のラインレジスタ216と構造及び機能において実質的に同様である。
【0043】
少なくとも幾つかの実施形態において、入力データ経路644は、メモリに接続可能である。少なくとも幾つかの実施形態において、入力データ経路645は、集積回路の複数の順次接続された計算モジュールの中の先行する計算モジュールのラインレジスタなどの先行するラインレジスタに直接接続可能である。少なくとも幾つかの実施形態において、ラインレジスタ616は、入力データ経路644及び入力データ経路645の下流に直接接続されている。少なくとも幾つかの実施形態において、出力データ経路646は、ラインレジスタ616の下流に直接接続され、集積回路の複数の順次接続された計算モジュールの中の後続の計算モジュールのラインレジスタなどの後続のラインレジスタに接続可能である。
【0044】
少なくとも幾つかの実施形態において、各計算モジュールは、計算モジュール602と実質的に同様であるが、加算器614、入力データ経路641、及び出力データ経路643を伴わない。そのような実施形態は、結果のマージが必要ない場合に利用され得る。
【0045】
図7は、本発明の少なくとも一実施形態による、データブロードキャスティングが実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。少なくとも幾つかの実施形態において、集積回路のコントローラはホストコンピュータからプログラムを受信し、プログラムの命令を、コントローラと共にプログラムを遂行してニューラルネットワーク推論を実行する複数の計算モジュールに送信する。タイムラインは、T0からT4までの時間のステップにおいて配置される。T0、T1、T2、T3、及びT4の各ステップは、集積回路の1つ又は複数のクロック周期を表す。集積回路は、少なくとも、第1の入力データメモリバンクDM0、第2の入力データメモリバンクDM1、第3の入力データメモリバンクDM2、第1の計算モジュールCM0、第2の計算モジュールCM1、第3の計算モジュールCM2、第1の累積メモリバンクAM0、第2の累積メモリバンクAM1、及び第3の累積メモリバンクAM2を含む。時間の各ステップで、集積回路の1つ又は複数の要素が動作を実行する。
【0046】
最初の時間ステップT0で、同期動作が実行される。少なくとも幾つかの実施形態において、同期動作は、集積回路の要素が時間の各ステップのクロック周期と同期して動作を実行するように、要素のタイミングを調整することを含む。
【0047】
第1の時間ステップT1において、第1の計算モジュールCM0は、プログラムの動作RQ0に従い、第1の入力データメモリバンクDM0に第1の入力データ値を要求する。
【0048】
第1の時間ステップT1の直後の第2の時間ステップT2において、第1の入力データメモリバンクDM0は、プログラムの動作IN0に従い、第1の計算モジュールCM0、第2の計算モジュールCM1、及び第3の計算モジュールCM2に第1の入力データ値をブロードキャストする。少なくとも幾つかの実施形態において、第2の時間ステップT2におけるデータブロードキャスト動作は、第1の計算モジュールCM0、第2の計算モジュールCM1、及び第3の計算モジュールCM2の同期ユニットによって可能になり、第1の入力データメモリバンクDM0から第1の入力データ値の単一の送信を同時に受信する。
【0049】
第2の時間ステップT2の直後の第3の時間ステップT3において、第1の計算モジュールCM0は、プログラムの動作CP0に従い、第1の入力データ値に対して計算を実行し、第1の結果値を第1の累積メモリAM0に送信し、第2の計算モジュールCM1は、プログラムの動作CP1に従い、第1の入力データ値に対して計算を実行し、第2の結果値を第2の累積メモリAM1に送信し、第3の計算モジュールCM2は、プログラムの動作CP2に従い、第1の入力データ値に対して計算を実行し、第3の結果値を第3の累積メモリAM2に送信する。
【0050】
第3の時間ステップT3の直後の第4の時間ステップT4において、第1の累積メモリAM0は、動作RS0に従い、第1の計算モジュールCM0から受信された第1の結果値を記憶し、第2の累積メモリAM1は、動作RS1に従い、第2の計算モジュールCM1から受信された第2の結果値を記憶し、第3の累積メモリAM2は、動作RS2に従い、第3の計算モジュールCM2から受信された第3の結果値を記憶する。
【0051】
図8は、本発明の少なくとも一実施形態による、入力タイル並列処理が実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。少なくとも幾つかの実施形態において、集積回路のコントローラはホストコンピュータからプログラムを受信し、プログラムの命令を、コントローラと共にプログラムを遂行してニューラルネットワーク推論を実行する複数の計算モジュールに送信する。タイムラインは、T0からT6までの時間のステップにおいて配置される。T0、T1、T2、T3、T4、T5及びT6の各ステップは、集積回路の1つ又は複数のクロック周期を表す。集積回路は、少なくとも、第1の入力データメモリバンクDM0、第2の入力データメモリバンクDM1、第3の入力データメモリバンクDM2、第1の計算モジュールCM0、第2の計算モジュールCM1、第3の計算モジュールCM2、第1の累積メモリバンクAM0、第2の累積メモリバンクAM1、及び第3の累積メモリバンクAM2を含む。時間の各ステップで、集積回路の1つ又は複数の要素が動作を実行する。
【0052】
最初の時間ステップT0で、同期動作が実行される。少なくとも幾つかの実施形態において、同期動作は、集積回路の要素が時間の各ステップのクロック周期と同期して動作を実行するように、要素のタイミングを調整することを含む。
【0053】
第1の時間ステップT1において、第1の計算モジュールCM0は、プログラムの動作RQ0に従い、第1の入力データメモリバンクDM0に第1の入力データ値を要求する。
【0054】
第1の時間ステップT1の直後の第2の時間ステップT2において、第1の入力データメモリバンクDM0は、プログラムの動作IN0に従い、第1の入力データ値を第1の計算モジュールCM0に送信し、第2の計算モジュールCM1は、プログラムの動作RQ1に従い、第2の入力データメモリバンクDM1に第2の入力データ値を要求する。
【0055】
第2の時間ステップT2の直後の第3の時間ステップT3において、第1の計算モジュールCM0は、プログラムの動作CP0に従い、第1の入力データ値に対して数学的演算を実行して第1の結果データ値を生成し、第1の結果データ値を第2の計算モジュールCM1に送信し、第2の入力データメモリバンクDM1は、プログラムの動作IN1に従い、第2の入力データ値を第2の計算モジュールCM1に送信し、第3の計算モジュールCM2は、プログラムの動作RQ2に従い、第3の入力データメモリバンクDM2に第3の入力データ値を要求する。
【0056】
第3の時間ステップT3の直後の第4の時間ステップT4において、第2の計算モジュールCM1は、プログラムの動作CP1に従い、第2の入力データ値に対して数学的演算を実行して第2の結果データ値を生成し、第1の結果データ値を第2の結果データ値に加算して第1の合計値を生成し、第1の合計値を第3の計算モジュールCM2に送信し、第3の入力データメモリバンクDM2は、プログラムの動作IN2に従い、第3の入力データ値を第3の計算モジュールCM2に送信する。第2の入力データ値及び第1の結果データ値が同じクロック周期中に第2の計算モジュールCM1に到達するよう、動作RQ1は第2の時間ステップT2まで遅延された。
【0057】
第4の時間ステップT4の直後の第5の時間ステップT5において、第3の計算モジュールCM2は、プログラムの動作CP2に従い、第3の入力データ値に対して数学的演算を実行して第3の結果データ値を生成し、第1の合計値を第3の結果データ値に加算して第2の合計値を生成し、第2の合計値を第3の累積メモリバンクAM2に送信する。第3の入力データ値及び第2の結果データ値が同じクロック周期中に第3の計算モジュールCM2に到達するよう、動作RQ2は第3の時間ステップT3まで遅延された。
【0058】
第5の時間ステップT5の直後の第6の時間ステップT6において、第3の累積メモリバンクAM2は、プログラムの動作RS0に従い、第3の計算モジュールCM2から受信された第2の合計値を記憶する。
【0059】
図9は、本発明の少なくとも一実施形態による、カーネル行並列処理が実行されるニューラルネットワークハードウェアアクセラレーションのためのプログラムのタイムラインである。少なくとも幾つかの実施形態において、集積回路のコントローラはホストコンピュータからプログラムを受信し、プログラムの命令を、コントローラと共にプログラムを遂行してニューラルネットワーク推論を実行する複数の計算モジュールに送信する。タイムラインは、T0からT6での時間のステップにおいて配置される。T0、T1、T2、T3、T4、T5及びT6の各ステップは、集積回路の1つ又は複数のクロック周期を表す。集積回路は、少なくとも、第1の入力データメモリバンクDM0、第2の入力データメモリバンクDM1、第3の入力データメモリバンクDM2、第1の計算モジュールCM0、第2の計算モジュールCM1、第3の計算モジュールCM2、第1の累積メモリバンクAM0、第2の累積メモリバンクAM1、及び第3の累積メモリバンクAM2を含む。時間の各ステップで、集積回路の1つ又は複数の要素が動作を実行する。
【0060】
最初の時間ステップT0で、同期動作が実行される。少なくとも幾つかの実施形態において、同期動作は、集積回路の要素が時間の各ステップのクロック周期と同期して動作を実行するように、要素のタイミングを調整することを含む。
【0061】
第1の時間ステップT1において、第1の計算モジュールCM0は、プログラムの動作RQ0に従い、第1の入力データメモリバンクDM0に、第1の入力データ値、第2の入力データ値、及び第3の入力データ値を要求する。
【0062】
第1の時間ステップT1の直後の第2の時間ステップT2において、第1の入力データメモリバンクDM0は、プログラムの動作IN0に従い、第1の入力データ値、第2の入力データ値、及び第3の入力データ値を第1の計算モジュールCM0に送信する。第2の時間ステップT2中に、第1の計算モジュールCM0のラインレジスタは、時間ステップT1内の異なるクロック周期中に、第1の入力データ値、第2の入力データ値、及び第3の入力データ値を受信する。第1の計算モジュールCM0のラインレジスタは、第1の入力データ値を第1の計算モジュールCM0のプロセッサに送信する。
【0063】
第2の時間ステップT2の直後の第3の時間ステップT3において、第1の計算モジュールCM0は、プログラムの動作CP0に従い、第1の入力データ値に対して数学的演算を実行して第1の結果データ値を生成し、第1の計算モジュールCM0の加算器は、第2の計算モジュールCM1の加算器に第1の結果データ値を送信し、第1の計算モジュールCM0のラインレジスタは、第2の入力データ値及び第3の入力データ値を第2の計算モジュールCM1のラインレジスタに送信する。第2の計算モジュールCM1のラインレジスタは、第2の入力データ値を第2の計算モジュールCM1のプロセッサに送信する。第1の計算モジュールCM0のラインレジスタは、第2の入力データ値を第2の計算モジュールCM1のラインレジスタに送信するため、第2の計算モジュールCM1は、第2の時間ステップT2中に第2の入力データ値を要求する必要がなく、入力データメモリバンクが第3の時間ステップT3中に第2の入力データ値を第2の計算モジュールCM1に送信する動作が必要とされず、それにより、ニューラルネットワーク推論を実行するにあたってのエネルギー消費が潜在的に低減する。
【0064】
第3の時間ステップT3の直後の第4の時間ステップT4において、第2の計算モジュールCM1は、プログラムの動作CP1に従い、第2の入力データ値に対して数学的演算を実行して第2の結果データ値を生成し、第2の計算モジュールCM1の加算器は、第1の結果データ値を第2の結果データ値に加算して第1の合計値を生成し、第2の計算モジュールCM1の加算器は、第1の合計値を第3の計算モジュールCM2の加算器に送信し、第2の計算モジュールCM1のラインレジスタは、第3の入力データ値を第3の計算モジュールCM2のラインレジスタに送信する。第1の計算モジュールCM0のラインレジスタは、第3の入力データ値を第2の計算モジュールCM1のラインレジスタに送信し、これは次に、第3の入力データ値を第3の計算モジュールCM2のラインレジスタに送信するため、第3の計算モジュールCM2は、第3の時間ステップT3中に第3の入力データ値を要求する必要がなく、入力データメモリバンクが第4の時間ステップT4中に第3の入力データ値を第3の計算モジュールCM2に送信する動作が必要とされず、それにより、ニューラルネットワーク推論を実行するにあたってのエネルギー消費が潜在的に低減する。
【0065】
第4の時間ステップT4の直後の第5の時間ステップT5において、第3の計算モジュールCM2は、プログラムの動作CP2に従い、第3の入力データ値に対して数学的演算を実行して第3の結果データ値を生成し、第3の計算モジュールCM2の加算器は、第1の合計値を第3の結果データ値に加算して第2の合計値を生成し、第3の計算モジュールCM2は、第2の合計値を第3の累積メモリバンクAM2に送信する。
【0066】
第5の時間ステップT5の直後の第6の時間ステップT6において、第3の累積メモリバンクAM2は、プログラムの動作RS0に従い、第3の計算モジュールCM2から受信された第2の合計値を記憶する。
【0067】
本発明の実施形態が説明されたが、特許請求の範囲に記載のいかなる主題の技術的範囲も、上記で説明された実施形態に限定されない。当業者であれば、上記で説明された実施形態に対する様々な改変及び改良が可能であることを理解するであろう。当業者であれば、特許請求の範囲の範囲から、そのような改変又は改良が加えられた実施形態が、本発明の技術的範囲に含まれることをも理解するであろう。
【0068】
特許請求の範囲、実施形態、又は図において示される装置、システム、プログラム、及び方法によって実行される各プロセスの動作、手順、ステップ、及びステージは、その順序が「に先立ち」又は「より前に」等により示されていない限り、及び、前のプロセスからの出力が後のプロセスにおいて使用されない限り、任意の順序で実行され得る。特許請求の範囲、実施形態、又は図において、プロセスフローが「最初に」又は「次に」などのフレーズを用いて説明される場合でも、そのような説明は、説明された順序でプロセスが実行されなければならないことを必ずしも意味するものではない。
【0069】
少なくとも幾つかの実施形態において、順次接続された計算モジュールを介したニューラルネットワークハードウェアアクセラレーションは、値を記憶し、記憶された値を送信するように構成されたメモリ、及び、複数の順次接続された計算モジュールを含む集積回路によって実行される。複数の順次接続された計算モジュールの中の各計算モジュールは、プロセッサ及び加算器を含む。プロセッサは、メモリから入力データ値及び重み値を受信し、入力データ値及び重み値に対して数学的演算を実行して、結果データ値を生成するように構成された回路構成を含む。プロセッサは、メモリインターコネクトを通じてメモリに接続されている。加算器は、プロセッサから結果データ値を直接受信し、複数の順次接続された計算モジュールの中の先行する計算モジュールの先行する加算器から、先行する結果データ値及び先行する合計値のうちの1つを直接受信し、結果データ値を、先行する結果データ値及び先行する合計値のうちの1つに加算して合計値を生成し、メモリに、又は、複数の順次接続された計算モジュールの中の後続の計算モジュールの後続の加算器に直接、結果データ値及び合計値のうちの1つを送信するように構成された回路構成を含む。加算器は、プロセッサ、先行する加算器、及び後続の加算器に直接接続され、メモリインターコネクトを通じてメモリに接続されている。
【0070】
上記は、当業者が本開示の態様をより良く理解するように、幾つかの実施形態の特徴を概説したものである。当業者であれば、本開示が、本明細書で導入された実施形態と同じ目的を実行する、及び/又は同じ利点を実現するための他のプロセス及び構造を設計又は修正するための基礎として容易に使用可能であることを理解すべきである。当業者はまた、そのような均等な構成が本開示の趣旨及び範囲から逸脱しないこと、及び、本明細書の様々な変更、置換、及び改変が本開示の趣旨及び範囲から逸脱することなく可能であることを認識すべきである。
本明細書によれば、以下の各項目もまた開示される。
[項目1]
値を記憶し、記憶された値を送信するように構成されたメモリ;及び
複数の順次接続された計算モジュール
を備え、前記複数の順次接続された計算モジュールの中の各計算モジュールは、
プロセッサであって、
前記メモリから入力データ値及び重み値を受信し、
前記入力データ値及び前記重み値に対して数学的演算を実行し、結果データ値を生成する
ように構成された回路構成を含み、前記プロセッサは、メモリインターコネクトを通じて前記メモリに接続されている、プロセッサ、及び
加算器であって、
前記プロセッサから、前記結果データ値を直接受信し、
先行する結果データ値及び先行する合計値のうちの1つを、前記複数の順次接続された計算モジュールの中の先行する計算モジュールの先行する加算器から直接受信し、
前記結果データ値を前記先行する結果データ値及び前記先行する合計値のうちの前記1つに加算して合計値を生成し、
前記メモリに、又は、前記複数の順次接続された計算モジュールの中の後続の計算モジュールの後続の加算器に直接、前記結果データ値及び前記合計値のうちの1つを送信する
ように構成された回路構成を含み、前記加算器は、前記プロセッサ、前記先行する加算器、及び前記後続の加算器に直接接続され、前記メモリインターコネクトを通じて前記メモリに接続されている、加算器
を有する、集積回路。
[項目2]
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記プロセッサ及び加算器に、プログラムに従って、送信、受信、及び演算を実行させるように構成された回路構成を含むシーケンサ
を更に有する、項目1に記載の集積回路。
[項目3]
ホストコンピュータから前記プログラムを受信する、及び
前記複数の順次接続された計算モジュールの中の各計算モジュールの前記シーケンサに前記プログラムを送信する
ように構成された回路構成を含むコントローラを更に備え、ここで前記プログラムは、ニューラルネットワーク推論を実行するための命令を含む、項目2に記載の集積回路。
[項目4]
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記後続の計算モジュールの後続の同期ユニットとデータ読み取り動作を同期させるように構成された回路構成を含む同期ユニットを更に有し、ここで前記プロセッサ及び前記後続の計算モジュールの後続のプロセッサは、単一のクロック周期内に、前記メモリからの単一の送信において前記入力データ値及び前記重み値のうちの1つを受信する、項目1に記載の集積回路。
[項目5]
前記メモリは複数のメモリバンクを含む、及び
前記メモリインターコネクトは、前記複数のメモリバンクの中のメモリバンクを、前記複数の順次接続された計算モジュールの中の計算モジュール又はホストコンピュータに選択的に接続する、
項目3に記載の集積回路。
[項目6]
前記複数の順次接続された計算モジュールの中の各計算モジュールは、
前記メモリから、又は、前記先行する計算モジュールの先行するラインレジスタから直接、前記入力データ値を受信する、及び
前記プロセッサ及び前記後続の計算モジュールの後続のラインレジスタのうちの少なくとも1つに、前記入力データ値を直接送信する
ように構成された回路構成を含むラインレジスタを更に有し、ここで前記ラインレジスタは、前記プロセッサ、前記先行するラインレジスタ、及び前記後続のラインレジスタに直接接続され、前記メモリインターコネクトを通じて前記メモリに接続されている、項目2に記載の集積回路。
[項目7]
前記複数の順次接続された計算モジュールの中の各計算モジュールの前記シーケンサは、前記ラインレジスタに、前記プログラムに従って送信及び受信させるように構成された回路構成を更に含む、項目6に記載の集積回路。
[項目8]
前記プログラムは、ニューラルネットワーク推論を実行するための命令を含む、項目5に記載の集積回路。
[項目9]
前記コントローラは、前記プログラムに従って、
前記メモリに、前記ホストコンピュータから受信された第1の入力データ値を、前記メモリの複数のメモリバンクの中の第1のメモリバンクに記憶させる、
前記メモリに、前記ホストコンピュータから受信された第2の入力データ値を、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに記憶させる、
前記メモリに、前記ホストコンピュータから受信された前記重み値を、前記メモリの前記複数のメモリバンクの中の第3のメモリバンクに記憶させる
ように更に構成された回路構成を含む、項目8に記載の集積回路。
[項目10]
前記コントローラは、前記プログラムに従って、
第1の時間ステップにおいて、第1の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第1のメモリバンクに第1の入力データ値を要求させる、
前記第1の時間ステップの直後の第2の時間ステップにおいて、
前記第1のメモリバンクに、前記第1の入力データ値を前記第1の計算モジュールに送信させる、及び
第2の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに第2の入力データ値を要求させる、
前記第2の時間ステップの直後の第3の時間ステップにおいて、
前記第1の計算モジュールに、前記第1の入力データ値に対して数学的演算を実行させて第1の結果データ値を生成する、
前記第1の計算モジュールに、前記第1の結果データ値を前記第2の計算モジュールに送信させる、及び
前記第2のメモリバンクに、前記第2の入力データ値を前記第2の計算モジュールに送信させる、及び
前記第3の時間ステップの直後の第4の時間ステップにおいて、
前記第2の計算モジュールに、前記第2の入力データ値に対して数学的演算を実行させて第2の結果データ値を生成する、
前記第2の計算モジュールに、前記第1の結果データ値を前記第2の結果データ値に加算させて第1の合計値を生成する、及び、
前記第2の計算モジュールに、前記第1の合計値を前記メモリに送信させる、及び
前記第4の時間ステップの直後の第5の時間ステップにおいて、
前記メモリに、前記第2の計算モジュールから受信された前記第1の合計値を、前記メモリの前記複数のメモリバンクの中の第4のメモリバンクに記憶させる
ように更に構成された回路構成を含む、項目8に記載の集積回路。
[項目11]
前記コントローラは、前記プログラムに従って、
第1の時間ステップにおいて、第1の計算モジュールに、前記メモリの前記複数のメモリバンクの中の第1のメモリバンクに第1の入力データ値及び第2の入力データ値を要求させる、
前記第1の時間ステップの直後の第2の時間ステップにおいて、前記第1のメモリバンクに、前記第1の入力データ値及び前記第2の入力データ値を前記第1の計算モジュールに送信させる、
前記第2の時間ステップの直後の第3の時間ステップにおいて、
前記第1の計算モジュールに、前記第1の入力データ値に対して数学的演算を実行させて第1の結果データ値を生成する、
前記第1の計算モジュールの第1の加算器に、前記第1の結果データ値を前記第2の計算モジュールの第2の加算器に送信させる、及び
前記第1の計算モジュールの第1のラインレジスタに、前記第2の入力データ値を前記第2の計算モジュールの第2のラインレジスタに送信させる、及び
前記第3の時間ステップの直後の第4の時間ステップにおいて、
前記第2の計算モジュールに、前記第2の入力データ値に対して数学的演算を実行させて第2の結果データ値を生成する、
前記第2の計算モジュールに、前記第1の結果データ値を前記第2の結果データ値に加算させて第1の合計値を生成する、及び、
前記第2の計算モジュールに、前記第1の合計値を前記メモリに送信させる、及び
前記第4の時間ステップの直後の第5の時間ステップにおいて、
前記メモリに、前記第2の計算モジュールから受信された前記第1の合計値を、前記メモリの前記複数のメモリバンクの中の第2のメモリバンクに記憶させる
ように更に構成された回路構成を含む、項目10に記載の集積回路。
[項目12]
前記プロセッサは、点単位畳み込み又は深さ単位畳み込みを実行するように構成されている、項目1に記載の集積回路。
[項目13]
メモリに接続可能な第1の入力データ経路、
前記第1の入力データ経路の下流に直接接続されたプロセッサ、前記プロセッサは、畳み込み演算を実行するように構成された回路構成を含む、
先行する加算器に直接接続可能な第2の入力データ経路、
前記プロセッサ及び前記第2の入力データ経路の下流に直接接続された加算器、前記加算器は、加算するように構成された回路構成を含む、
前記加算器の下流に直接接続され、前記メモリに接続可能な第1の出力データ経路、
前記加算器の下流に直接接続され、後続の加算器に直接接続可能な第2の出力データ経路、
先行するシーケンサに直接接続可能な第1の双方向制御経路、
前記第1の双方向制御経路の下流に直接接続されたシーケンサ、前記シーケンサは、プログラムに従い、前記プロセッサ及び加算器に信号を送信するように構成された回路構成を含む、及び
後続のシーケンサに直接接続可能な第2の双方向制御経路
を備える、集積回路構成の一部。
[項目14]
前記シーケンサは、
先行する同期ユニット又は後続の同期ユニットのうちの少なくとも1つとデータ読み取り動作を同期させるために前記第1の双方向制御経路及び前記第2の双方向制御経路を通じて信号を送信及び受信するように構成された回路構成を含む同期ユニット、ここで、前記プロセッサ、及び、先行するプロセッサ及び後続のプロセッサのうちの少なくとも1つは、単一のクロック周期内に前記メモリから単一の送信を受信する、
を更に含む、項目13に記載の集積回路構成の一部。
[項目15]
前記シーケンサは、
前記メモリに接続可能な第3の入力データ経路、
先行するラインレジスタに直接接続可能な第4の入力データ経路、
前記第3の入力データ経路及び前記第4の入力データ経路の下流に直接接続されたラインレジスタ、
前記ラインレジスタの下流に直接接続され、後続のラインレジスタに接続可能な第3の出力データ経路
を更に含む、項目13に記載の集積回路構成の一部。
図1
図2
図3
図4
図5
図6
図7
図8
図9