(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023091712
(43)【公開日】2023-06-30
(54)【発明の名称】ネットワークオンチップリコンフィギュアビリティ
(51)【国際特許分類】
G06F 15/80 20060101AFI20230623BHJP
G06N 3/063 20230101ALI20230623BHJP
G06F 15/173 20060101ALI20230623BHJP
【FI】
G06F15/80
G06N3/063
G06F15/173 683C
【審査請求】有
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022096966
(22)【出願日】2022-06-16
(11)【特許番号】
(45)【特許公報発行日】2023-03-22
(31)【優先権主張番号】17/555,505
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520171826
【氏名又は名称】エッジコーティックス ピーティーイー. リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】タンヴィル アーメド
(72)【発明者】
【氏名】サキャシンガ ダスグプタ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB15
5B045GG12
(57)【要約】 (修正有)
【課題】より多くのリソースを要求するタスクに対応する計算リソースで設計されるニューラルネットワークアクセラレータチップを提供する。
【解決手段】ネットワークオンチップリコンフィギュアビリティは、複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルは、値を格納するように構成される、複数のメモリタイルと、外部メモリとデータを交換するように構成された外部メモリインタフェースと、複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、値を格納するように構成された計算メモリと、値に対して数学的演算を実行するように構成された回路を含む、プロセッサとを含む、複数の計算タイルとを含む装置によって実行される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、
入力ポートと、
出力ポートと、
値を格納するように構成された計算メモリと、
値に対して数学的演算を実行するように構成された回路を含むプロセッサと、
前記入力ポートを介して値を受信し、前記計算メモリに値を格納し、前記プロセッサに値を入力し、前記出力ポートを介して値を送信するように構成された計算コントローラと
を含む、複数の計算タイルと、
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルが、入力ポート及び出力ポートを含み、前記入力ポートを介して受信した値を格納し、格納した値を前記出力ポートを介して送信するように構成された、複数のメモリタイルと、
外部メモリとデータを交換するように構成された入力ポート及び出力ポートを含む外部メモリインタフェースと、
複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記入力ポートに接続可能であるように配置された、複数の相互接続と、
計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成された相互接続コントローラであって、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースから受信した初期値が適用される計算タイルシーケンスにおける連続する計算タイルによって実行されて前記外部メモリインタフェースに送信される結果値を生成し、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを通じた接続である、相互接続コントローラと
を備える集積回路。
【請求項2】
前記計算シーケンスは、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介した接続である
請求項1に記載の集積回路。
【請求項3】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、各タイルが、前記複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項1又は2に記載の集積回路。
【請求項4】
前記複数の相互接続のうちの相互接続は、複数のスイッチクラスタ及び複数の接続クラスタの間で分散されており、
前記複数のスイッチクラスタのうちの各スイッチクラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の接続クラスタのうちの接続クラスタとを接続する相互接続を含み、
前記複数の接続クラスタのうちの各接続クラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の計算タイル及び前記複数のメモリタイルのうちの対応するタイルとを接続する相互接続を含む
請求項1又は2に記載の集積回路。
【請求項5】
前記複数の計算タイルのうちの各計算タイルの前記プロセッサは、固定動作プロセッサであり、
前記複数の計算タイルのうちの各計算タイルは、値に対して数学的演算を実行するために前記計算シーケンスに基づいてコンフィギュア可能な可変動作プロセッサをさらに含み、
前記計算コントローラは、前記固定動作プロセッサ及び前記可変動作プロセッサに選択的に値を入力するようにさらに構成される
請求項1又は2に記載の集積回路。
【請求項6】
前記複数の計算タイルのうちの各計算タイルの前記可変動作プロセッサは、計算タイルによって消費される電力又は計算タイルによって実行される処理のレイテンシのうちの1つをモニタするようにさらにコンフィギュア可能である
請求項5に記載の集積回路。
【請求項7】
前記可変動作プロセッサは、値に対して数学的演算を実行するために、前記計算シーケンスに基づいてコンフィギュア可能である
請求項5に記載の集積回路。
【請求項8】
各計算タイルの前記プロセッサは、ポイントワイズ畳み込み又はデプスワイズ畳み込みの1つを実行するように構成される
請求項1又は2に記載の集積回路。
【請求項9】
前記計算シーケンスを含む命令を受信し、
前記相互接続コントローラに、前記計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせる
ように構成された一般コントローラ
をさらに備える請求項1又は2に記載の集積回路。
【請求項10】
ニューラルネットワークの推論を実行する命令を受信し、前記命令が前記計算シーケンスを含み、
前記相互接続コントローラに、前記計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの推論を実行する
ように構成された一般コントローラ
さらに備える請求項1又は2に記載の集積回路。
【請求項11】
前記命令は、前記ニューラルネットワークの第1の部分に関連する第1の計算シーケンスと、前記ニューラルネットワークの第2の部分に関連する第2の計算シーケンスとを含み、
前記一般コントローラは、
前記相互接続コントローラに、前記第1の計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの前記第1の部分の推論を実行し、
前記相互接続コントローラに、前記第2の計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの前記第2の部分の推論を実行する、
ようにさらに構成される
請求項10に記載の集積回路。
【請求項12】
前記相互接続コントローラは、回線交換式で相互接続を開閉するように構成される、
請求項1又は2に記載の集積回路。
【請求項13】
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルは、値を格納するように構成された、複数のメモリタイルと、
外部メモリとデータを交換するように構成された外部メモリインタフェースと、
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルは、
値を格納するように構成された計算メモリと、
前記計算メモリ、前記複数のメモリタイルのうちのメモリタイル、又は前記外部メモリインタフェースのうちの少なくとも2つに格納された値の組み合わせに対して数学的演算を実行するように構成された回路を含む、プロセッサと
を含む、複数の計算タイルと
を備える装置。
【請求項14】
複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの入力ポートに接続可能であるように配置された、複数の相互接続と、
計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成され、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースに送信される結果値を生成するために、前記外部メモリインタフェースから受信した初期値に適用される計算タイルシーケンスにおける連続する計算タイルによって実行され、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介する接続である、相互接続コントローラと
をさらに備える請求項13に記載の装置。
【請求項15】
計算シーケンスが、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルのうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介する接続である
請求項13又は14に記載の装置。
【請求項16】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、
各タイルが、複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項13又は14に記載の装置。
【請求項17】
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、
入力ポートと、
出力ポートと、
値を格納するように構成された計算メモリと、
値に対して数学的演算を実行するように構成された回路を含むプロセッサと、
前記入力ポートを介して値を受信し、前記計算メモリに値を格納し、前記プロセッサに値を入力し、前記出力ポートを介して値を送信するように構成された計算コントローラと
して構成された回路を含む、複数の計算タイルと、
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルが、入力ポート及び出力ポートとして構成され、前記入力ポートを介して受信した値を格納し、格納した値を前記出力ポートを介して送信するようにさらに構成された回路を含む、複数のメモリタイルと、
外部メモリとデータを交換するように構成された入力ポート及び出力ポートとして構成された回路を含む外部メモリインタフェースと、
回線交換式の複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記入力ポートに接続可能であるように配置された、回線交換式の複数の相互接続と、
計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成された回路を含む相互接続コントローラであって、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースから受信した初期値が適用される計算タイルシーケンスにおける連続する計算タイルによって実行されて前記外部メモリインタフェースに送信される結果値を生成し、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを通じた接続である、相互接続コントローラと
を備える集積回路。
【請求項18】
前記計算シーケンスは、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介した接続である
請求項17に記載の集積回路。
【請求項19】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、
各タイルが、前記複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項17又は18に記載の集積回路。
【請求項20】
前記複数の相互接続のうちの相互接続は、複数のスイッチクラスタ及び複数の接続クラスタの間で分散されており、
前記複数のスイッチクラスタのうちの各スイッチクラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の接続クラスタのうちの接続クラスタとを接続する相互接続を含み、
前記複数の接続クラスタのうちの各接続クラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の計算タイル及び前記複数のメモリタイルのうちの対応するタイルとを接続する相互接続を含む
請求項17又は18に記載の集積回路。
【発明の詳細な説明】
【背景技術】
【0001】
リアルタイムニューラルネットワーク(NN)推論は、自律走行車両、ロボット工学、スマートフォン、可搬健康デバイス、監視などのようなアプリケーションに対するエッジデバイス上のコンピュータビジョン又は発話タスクで普及しつつある。専用のNN推論ハードウェアは、電力効率のよい推論を提供する主流手段になってきている。集積回路のようなチップ内により多くの計算リソースが載せられるようになるにつれて、計算能力のコストが下がっている。多くの状況において、チップは、より多くのリソースを要求するタスクに対応する計算リソースで設計されている。
【図面の簡単な説明】
【0002】
本開示の態様は、添付の図と共に読まれるときに以下の詳細な説明から最適に理解される。当業界の標準的な慣行に従って、様々な特徴はスケールどおりに描かれていないことに留意されたい。実際には、様々な特徴の寸法が、説明を明瞭にするために任意に拡大され、又は減少され得る。
【0003】
【
図1】本発明の少なくともいくつかの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置のブロック図である。
【0004】
【
図2】本発明の少なくともいくつかの実施形態による、計算タイルのブロック図である。
【0005】
【
図3】本発明の少なくともいくつかの実施形態による、メモリタイルのブロック図である。
【0006】
【
図4】本発明の少なくともいくつかの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置の一部の模式図である。
【0007】
【
図5】本発明の少なくともいくつかの実施形態による、計算タイルの模式図である。
【0008】
【
図6A】本発明の少なくともいくつかの実施形態による、デプスワイズ畳み込みプロセッサの模式図である。
【0009】
【
図6B】本発明の少なくともいくつかの実施形態による、デプスワイズ畳み込みプロセッサのためのチャネル毎のパイプラインの模式図である。
【0010】
【
図7】本発明の少なくともいくつかの実施形態による、ポイントワイズ畳み込みプロセッサの模式図である。
【0011】
【
図8】本発明の少なくともいくつかの実施形態による、計算シーケンスの図である。
【0012】
【
図9A】本発明の少なくともいくつかの実施形態による、計算シーケンスのために構成された装置のブロック図である。
【0013】
【
図9B】本発明の少なくともいくつかの実施形態による、マルチキャスト送信を実行する装置のブロック図である。
【0014】
【
図9C】本発明の少なくともいくつかの実施形態による、ポイント・ツー・ポイント送信を実行する装置のブロック図である。
【0015】
【
図10】本発明の少なくともいくつかの実施形態による、計算シーケンスを実行するための動作フローである。
【0016】
【
図11】本発明の少なくともいくつかの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置をリコンフィギュアするための動作フローである。
【発明を実施するための形態】
【0017】
以下の開示は、提供される主題の異なる特徴を実装するための多くの異なる実施形態又は例を提供する。コンポーネント、値、動作、材料、配置等の具体例は、本開示を簡略化するために以下に説明される。当然ながら、これらは例に過ぎず、限定が意図されていない。
他のコンポーネント、値、動作、材料、配置等が考えられる。加えて、本開示は、様々な例において参照番号及び/又は文字を繰り返し得る。この繰り返しは、簡易性及び明瞭さを目的としており、記載された様々な実施形態及び/又は構成の間の関係をそれ自体で規定するものではない。
【0018】
いくつかのニューラルネットワークハードウェアアクセラレータは、ネットワークオンチップのような複数のプロセッサ間でかかる処理を分散させることによって推論処理を実行する。かかるネットワークオンチップニューラルネットワークハードウェアアクセラレータはまた、処理のために必要とされるまで様々な値を保持するための複数のメモリバンクを含む。
【0019】
ニューラルネットワーク推論の実行について、様々な並列度が存在し、計算効率向上のために利用可能である。特に、多くの計算リソースを擁するチップにより実行されるシンプルなタスクは、並列性を介してより多くのリソースを利用可能である。しかし、最高性能のチップは、多くの場合、限定数の利用可能な並列度を活用するように最適化された、固定アーキテクチャを持ち、したがって、全ての並列度を効率的にサポートすることはできない。したがって、シンプルなタスクを強力なチップ上で実行することは、計算リソースの低利用率、低性能及び低電力効率の危険が増加する。
【0020】
タスクに依存して、ニューラルネットワークアクセラレータは、外部メモリアクセスを減少させるために空間マッピングに適合され、又は大規模なニューラルネットワークのために時間マッピングに適合される。いくつかのニューラルアクセラレータは単一命令複数データ(SIMD)用に構成される。他方、他のニューラルネットワークアクセラレータは複数命令複数データ(MIMD)モードでマッピングされる。
【0021】
他方、フィールドプログラマブルゲートアレイ(FPGA)のような完全なアーキテクチャリコンフィギュレーションが可能なチップは、各特定タスクについてリコンフィギュアされることが可能であるが、多くの場合、かかるチップを実際にリコンフィギュアするのに必要なリソースは、タスク中に全ての計算リソースを利用する際のリソース節約を超える。さらに、FPGAは、高粒度リコンフィギュアビリティにより高い柔軟性を提供するが、これによりそのピーク計算性能は、同様のチップサイズの特定用途向け集積回路(ASIC)と比較して限定される。
【0022】
本明細書の少なくともいくつかの実施形態では、ネットワークオンチップ(NoC)は、その上の計算タイルの相互接続を介して計算シーケンスが実現されるようにリコンフィギュア可能である。少なくともいくつかの実施形態では、相互接続された計算タイルシーケンスは、メモリポートでのルーチング輻輳を回避するために、計算タイル間にメモリタイルを含む。少なくともいくつかの実施形態では、各計算タイルは、マルチレベルのメモリ機能のためにプロセッサと計算メモリとを含む。少なくともいくつかの実施形態では、計算メモリは、メモリタイルの代わりに計算メモリに値を格納するオプションを介して、減少された電力消費構成を可能にする。
【0023】
少なくともいくつかの実施形態では、各計算タイルは、計算タイルがデジタル信号プロセッサ(DSP)より複雑な処理を実行できるように、コントローラをさらに含む。
【0024】
少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、スケーラビリティのためのモジュール設計を有する。少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、多くの異なる命令セットアーキテクチャのための主計算エンジンとしてコンフィギュア可能である。少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、マルチキャスト又はブロードキャスト送信のために、計算タイル又はメモリタイルの出力ポートを複数のメモリタイル又は計算タイルの入力ポートに接続するようにコンフィギュア可能である。少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、計算タイル及びメモリタイルに接続するようにコンフィギュア可能な外部メモリインタフェースを含む。
【0025】
少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、2次元グリッドに配置された計算タイル及びメモリタイルを含む。少なくともいくつかの実施形態では、各計算タイル及び各メモリタイルは、SIMD及びMIMD構成での動作を支援するためのコントローラを含む。少なくともいくつかの実施形態では、リコンフィギュア可能なNoCは、スループット最適化SIMD構成、パイプライン化MIMD構成、及びレイテンシ最適化ストリーミング構成のためのFPGAライクな相互接続を含む。
【0026】
図1は、本発明の少なくとも1つの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置100のブロック図である。少なくともいくつかの実施形態では、装置100は集積回路である。s少なくともいくつかの実施形態では、装置100は、
図1に示される専用回路を含むASICである。装置100は、相互接続102のような複数の相互接続、計算タイル110のような複数の計算タイル、メモリタイル120のような複数のメモリタイル、相互接続コントローラ104、一般コントローラ106、及び外部メモリインタフェース108を含む。少なくともいくつかの実施形態では、複数の計算タイル及び複数のメモリタイルは、2次元グリッドで配置される。
【0027】
相互接続102のような複数の相互接続は、計算タイル、メモリタイル、及び外部メモリインタフェース108を接続する。少なくともいくつかの実施形態では、各計算タイル、各メモリタイル、及び外部メモリインタフェース108の出力ポートが、複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び外部メモリインタフェース108の入力ポートに接続可能であるように、複数の相互接続が配置される。少なくともいくつかの実施形態では、複数の相互接続は、任意の計算タイル、メモリタイル、又は外部メモリインタフェース108の出力ポートから、任意の計算タイル、メモリタイル、又は外部メモリインタフェース108への値の送信を容易にするように、コンフィギュア可能である。少なくともいくつかの実施形態では、複数の相互接続は、受動相互接続である。
【0028】
相互接続コントローラ104は、計算タイル、メモリタイル、及び外部メモリインタフェース108を接続するために相互接続を開閉するように構成される。少なくともいくつかの実施形態では、相互接続コントローラ104は、計算シーケンスに応じて、複数の相互接続のうちの個々の相互接続を開閉するように構成される。少なくともいくつかの実施形態では、相互接続コントローラ104は、計算シーケンスに応じて複数の計算タイルのうちの計算タイルを接続するために、複数の相互接続のうちの個々の相互接続を開閉するように構成され、外部メモリインタフェースから受信された初期値に適用される計算タイルシーケンス内の連続する計算タイルによって、計算シーケンスの連続する各計算が実行されて、外部メモリインタフェースに送信される結果値を生成する。
少なくともいくつかの実施形態では、チェーン内の計算タイル間の各接続は、直接接続又は複数のメモリタイルのうちのメモリタイルを介した接続である。少なくともいくつかの実施形態では、相互接続コントローラ104は、回線交換、トランジスタ、送信ゲート、マルチプレクサなどの開閉のような回路スイッチ方式で相互接続を開閉するように構成される。
少なくともいくつかの実施形態では、相互接続コントローラ104は、一般コントローラ106からの命令に応答する。
【0029】
少なくともいくつかの実施形態では、集積回路100は、計算シーケンスを実行するための命令を受信するように構成された、一般コントローラ106のようなコントローラを含む。少なくともいくつかの実施形態では、一般コントローラ106は、計算シーケンスを含む命令を受信し、相互接続コントローラに、計算シーケンスに応じて複数の相互接続をリコンフィギュアさせるように構成される。少なくともいくつかの実施形態では、一般コントローラ106は、ニューラルネットワーク推論、画像処理、圧縮/解凍、並列計算などのような計算シーケンスを装置100に実行させるための命令を実行するように構成された回路を含む。少なくともいくつかの実施形態では、一般コントローラ106は、ホストプロセッサからコンパイルされた命令を受信するように構成される。少なくともいくつかの実施形態では、コンパイルされた命令は、処理のスケジューリング、各処理を実行するための指定された計算タイル、中間データを格納するための指定されたメモリタイル及びアドレス、複数の相互接続をコンフィギュアするための接続スキーム、及び集積回路が計算シーケンスを実行するために必要な任意の他の詳細を含む。少なくともいくつかの実施形態では、一般コントローラ106は、計算タイルよりも低い周波数で動作するように構成される。
【0030】
外部メモリインタフェース108は、メモリタイル及び計算タイルが外部メモリとデータを交換することを可能にするように構成された回路を含む。少なくともいくつかの実施形態では、外部メモリインタフェース108は、外部メモリとデータを交換するように構成された入力ポート及び出力ポートを含む。
少なくともいくつかの実施形態では、外部メモリは、ホストプロセッサと通信するDRAMメモリである。少なくともいくつかの実施形態では、装置100は、DRAMメモリがデータの残りを格納している間に、計算シーケンスのためのデータの小さな作業部分を格納する。
【0031】
計算タイル110のような計算タイルは、値に対して数学的演算を実行するように構成された回路を含む。少なくともいくつかの実施形態では、装置100は、複数の計算タイルを含み、複数の計算タイルのうちの各計算タイルは、入力ポート、出力ポート、計算メモリ、プロセッサ、及び計算コントローラを含む。少なくともいくつかの実施形態では、複数の計算タイルのうちの各計算タイルのプロセッサは、ポイントワイズ畳み込み又はデプスワイズ畳み込みのうちの少なくとも1つを実行するように構成される。少なくともいくつかの実施形態では、複数の計算タイルのうちの各計算タイルのプロセッサは、固定動作プロセッサである。少なくともいくつかの実施形態では、計算タイルは、
図2に示されるように構成され、以下で説明される。
【0032】
メモリタイル120のようなメモリタイルは、データを格納するように構成された回路を含む。
少なくともいくつかの実施形態では、メモリバンクは、揮発性データストレージを含む。
少なくともいくつかの実施形態では、装置100は複数のメモリタイルを含み、複数のメモリタイルのうちの各メモリタイルは入力ポートと出力ポートとを含み、入力ポートを介して受信した値を格納し、格納された値を、出力ポートを介して送信するように構成される。少なくともいくつかの実施形態では、メモリタイルは、
図3に示されるように構成され、以下で説明される。
【0033】
図2は、本発明の少なくとも1つの実施形態による、計算タイル210のブロック図である。
計算タイル210は、第1の計算メモリ212と、第2の計算メモリ213と、計算コントローラ215と、固定動作プロセッサ217と、可変動作プロセッサ219とを含む。
【0034】
第1の計算メモリ212及び第2の計算メモリ213は、データを格納するように構成される。少なくともいくつかの実施形態では、第1の計算メモリ212及び第2の計算メモリ213のそれぞれは、1つ又は複数のメモリバンクを含む。
少なくともいくつかの実施形態では、第1の計算メモリ212及び第2の計算メモリ213は、固定動作プロセッサ217、可変プロセッサ219、又は計算タイル210の入力ポートから受信した値を格納するように構成される。
少なくともいくつかの実施形態では、第1の計算メモリ212及び第2の計算メモリ213は、固定動作プロセッサ217、可変プロセッサ219、又は計算タイル210の出力ポートに値を送信するように構成される。少なくともいくつかの実施形態では、第1の計算メモリ212は、第2の計算メモリ213とは異なる量のメモリ又は異なるタイプのメモリで構成される。少なくともいくつかの実施形態では、第1の計算メモリ212及び第2の計算メモリ213は、計算コントローラ215からの命令に従って動作する。
【0035】
少なくともいくつかの実施形態では、計算コントローラ215は、計算タイル210を動作させるように構成された回路を含む。少なくともいくつかの実施形態では、計算コントローラ215は、装置の一般コントローラから信号を受信し、受信した信号に従って計算タイル210を動作させるように構成される。少なくともいくつかの実施形態では、計算コントローラ215は、第1の計算メモリ212及び第2の計算メモリ213に特定値を格納又は送信させ、固定動作プロセッサ217及び可変動作プロセッサ219に値に対して数学的演算を実行させ、それに応じて計算タイル210内のマルチプレクサに値をルーチングさせる。
少なくともいくつかの実施形態では、計算コントローラ215は、固定動作プロセッサ217及び可変動作プロセッサ219に選択的に値を入力するようにさらに構成される。少なくともいくつかの実施形態では、計算コントローラ215は、計算タイル210の入力ポートを介して値を受け取り、任意の計算メモリ上に値を格納し、任意のプロセッサに値を入力し、計算タイル210の出力ポートを介して値を送信するように構成される。
【0036】
少なくともいくつかの実施形態では、固定動作プロセッサ217は、数学的演算を実行するように構成された専用回路を含む。
少なくともいくつかの実施形態では、固定動作プロセッサ217は、1つよりも多いタイプの数学的演算を実行するように構成された専用回路を含む。少なくともいくつかの実施形態では、固定動作プロセッサ217は、画像処理、圧縮/解凍、並列計算などを実行するように構成された専用回路を含む。少なくともいくつかの実施形態では、固定動作プロセッサ217は、ポイントワイズ畳み込み又はデプスワイズ畳み込みのような畳み込み演算を実行するように構成される。少なくともいくつかの実施形態では、固定動作プロセッサ217は、高さ(KH)x幅(KW)のカーネルサイズ、垂直及び水平ストライド、拡張、パディングなどのような、数学的演算の異なるパラメータに対する直接支援を提供するよう構成され得る。少なくともいくつかの実施形態では、固定動作プロセッサ217は、
図6A及び
図6Bに示すように、又は
図7に示すように構成され、それらのそれぞれは以下に説明される。
【0037】
少なくともいくつかの実施形態では、可変動作プロセッサ219は、処理を実行するようにコンフィギュア可能なプログラマブル回路を含む。少なくともいくつかの実施形態では、複数の計算タイルのうちの各計算タイルは、値に対して数学的演算を実行するために計算シーケンスに基づいてコンフィギュア可能な可変動作プロセッサ219をさらに含む。少なくともいくつかの実施形態では、可変動作プロセッサ219は、処理を実行するようにコンフィギュア可能である。少なくともいくつかの実施形態では、可変動作プロセッサ219は、値に対して数学的演算を実行するために計算シーケンスに基づいてコンフィギュア可能である。少なくともいくつかの実施形態では、可変動作プロセッサ219は、計算タイル210によって消費された電力又は計算タイル210によって実行された処理のレイテンシのうちの1つをモニタし、消費された電力及び処理のレイテンシに基づいて計算タイル210のプロファイリングを実行するようにコンフィギュア可能である。少なくともいくつかの実施形態では、可変動作プロセッサ219は、値に対して活性化関数を実行するようにコンフィギュア可能である。
【0038】
図3は、本発明の少なくとも1つの実施形態による、メモリタイル320のブロック図である。メモリタイル320は、メモリバンク322及びメモリコントローラ324を含む。少なくともいくつかの実施形態では、メモリバンク322は、値を格納するように構成された回路を含む。少なくともいくつかの実施形態では、メモリバンク322は、揮発性データストレージを含む。少なくともいくつかの実施形態では、メモリバンク322は、不揮発性データストレージを含む。
【0039】
少なくともいくつかの実施形態では、メモリコントローラ324は、メモリタイル320を動作させるように構成された回路を含む。
少なくともいくつかの実施形態では、メモリコントローラ324は、
図1の一般コントローラ106のような一般コントローラから信号を受信し、受信した信号に従ってメモリタイル320を動作させるように構成される。少なくともいくつかの実施形態では、メモリコントローラ324は、計算タイルから受信された信号に応答してメモリバンク322をロックし、メモリバンク322に、格納された値を1つ又は複数の計算タイルへ送信させる。
少なくともいくつかの実施形態では、メモリコントローラ324は、メモリバンク322を特定の計算タイルに接続させ、メモリバンク322に、接続された計算タイルから送信された1つ又は複数の値を記録させる。
【0040】
図4は、本発明の少なくとも1つの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置の一部の模式図である。
図1の装置100のような装置の一部は、相互接続402のような複数の相互接続、及びタイル401を含む。少なくともいくつかの実施形態では、タイル401は、計算タイル又はメモリタイルのいずれかである。複数の相互接続は、スイッチクラスタ403A及び403Bのような複数のスイッチクラスタと、接続クラスタ404A及び404Bのようなの複数の接続クラスタとの間に分散される。少なくともいくつかの実施形態では、各スイッチクラスタは、複数のスイッチクラスタのうちの近くのスイッチクラスタと、複数の接続クラスタのうちの接続クラスタとを接続する複数の相互接続のうちの相互接続を含む。スイッチクラスタ403Aは、少なくともスイッチクラスタ403Bと接続クラスタ404Aとを接続する相互接続を含む。少なくともいくつかの実施形態では、複数の接続クラスタのうちの各接続クラスタは、複数のスイッチクラスタのうちの近くのスイッチクラスタと、複数の計算タイル及びメモリタイルのうちの対応するタイルとを接続する相互接続を含む。接続クラスタ404Aは、少なくともスイッチクラスタ403A及びタイル401を接続する相互接続を含む。少なくともいくつかの実施形態では、各タイルは、複数の相互接続のうちの1つ又は複数の相互接続によって、複数の計算タイル及び複数のメモリタイルのうちの隣接するタイルから分離される。
【0041】
少なくともいくつかの実施形態では、接続クラスタ404Aの相互接続は、タイル401の様々な入力ポートに接続する。少なくともいくつかの実施形態では、接続クラスタ404Bの相互接続は、タイル401の様々な出力ポートに接続する。
少なくともいくつかの実施形態では、タイル401は、1つ又は複数の入力ポートと、1つ又は複数の出力ポートとを含む。少なくともいくつかの実施形態では、タイル401は、他のタイル又は外部メモリインタフェースから値を受信するための少なくとも1つの入力ポートを含む。少なくともいくつかの実施形態では、タイル401は、他のタイル又は外部メモリインタフェースに値を送信するための少なくとも1つの出力ポートを含む。少なくともいくつかの実施形態では、タイル401は、他のタイル、外部メモリインタフェース、又は
図1の一般コントローラ106のような一般コントローラから制御信号を受信するための少なくとも1つの入力ポートを含む。少なくともいくつかの実施形態では、タイル401は、他のタイル、外部メモリインタフェース、又は一般コントローラに制御信号を送信するための少なくとも1つの出力ポートを含む。
【0042】
図5は、本発明の少なくとも1つの実施形態による、計算タイル510の模式図である。
計算タイルは、第1の計算メモリ512と、第2の計算メモリ513と、入力マルチプレクサ516Aのような複数の入力マルチプレクサと、出力マルチプレクサ516Bと、プロセッサ518とを含む。第1の計算メモリ512、第2の計算メモリ513、及びプロセッサ518は、以下で説明が異なる部分を除き、それぞれ
図2の第1の計算メモリ212、第2の計算メモリ213、及び固定動作プロセッサ217と実質的に同じ構造を有し、実質的に同じ機能を実行する。計算タイル510は、接続クラスタ504Aを介して値を受信するための2つの入力ポートを含む。計算タイル510は、接続クラスタ504Bを介して値を送信するための1つの出力ポートを含む。
【0043】
少なくともいくつかの実施形態では、計算タイル510は、接続クラスタ504Aから計算コントローラへの制御信号を受信するための少なくとも1つのさらなる入力を含む。少なくともいくつかの実施形態では、計算タイル510は、計算コントローラから接続クラスタ504Bに制御信号を送信するための少なくとも1つのさらなる出力を含む。
【0044】
入力マルチプレクサ516A及び出力マルチプレクサ516Bのような計算タイル内の各マルチプレクサは、複数の入力と単一の出力とを含む。少なくともいくつかの実施形態では、各マルチプレクサは、データ入力接続を選択するように構成される。少なくともいくつかの実施形態では、各マルチプレクサは、計算コントローラからの信号のような選択命令に応答するように構成される。少なくともいくつかの実施形態では、第1の計算メモリ512への入力マルチプレクサ及び第2の計算メモリ513への入力マルチプレクサはそれぞれ、接続クラスタ504Aに接続された入力ポートからの2つの入力と、プロセッサ518の出力に接続された入力を含む。少なくともいくつかの実施形態では、入力マルチプレクサ516Aのようなプロセッサ518への入力マルチプレクサはそれぞれ、第1の計算メモリ512の出力に接続された入力、第2の計算メモリ513の出力に接続された入力、及び接続クラスタ504Aに接続された入力ポートのうちの1つからの入力をそれぞれ含んでいる。出力マルチプレクサ516Bは、第1の計算メモリ512の出力に接続された入力、第2の計算メモリ513の出力に接続された入力、プロセッサ518の出力に接続された入力、及び接続クラスタ504Bに接続された出力ポートへの出力を含む。
【0045】
図6Aは、本発明の少なくとも1つの実施形態による、デプスワイズ畳み込みプロセッサ617の模式図である。デプスワイズ畳み込みプロセッサ617は、キュー617Q、主シーケンサ617MS、ウィンドウシーケンサ617WS、活性化フィーダ617AF、重みフィーダ617WF、パイプラインコントローラ617PC、畳み込みパイプライン617CP、外部累積ロジック617A及び累積メモリインタフェース617AIを含む。
【0046】
キュー617Qは命令を受信及び送信する。キュー617Qは、
図2の計算コントローラ215のような計算コントローラから命令を受信し、その命令を主シーケンサ617MSに送信し得る。キュー617Qは、FIFOメモリ又は命令をキューするのに適したいかなる他のメモリであり得る。
【0047】
主シーケンサ617MSは、畳み込みのための制御パラメータをシーケンスする。主シーケンサ617MSは、キュー617Qから命令を受信し、ウィンドウシーケンサ617WSに命令を出力し得る。主シーケンサ617MSは、KHxKW畳み込みを1x<ウィンドウ>の大きさのより小さな畳み込みに分け、カーネル内の入力領域の順序に応じて活性化データ及び重み値に対する命令を準備する。ここで<ウィンドウ>はラインバッファ長を決定するアーキテクチャーパラメータを指す。
【0048】
ウィンドウシーケンサ617WSは、一つの1x<ウィンドウ>畳み込みのための制御パラメータをシーケンスする。ウィンドウシーケンサ617WSは、主シーケンサ617MSから命令を受信してよく、かつ、カーネル内の入力領域の順序に応じた活性化データのデータシーケンスを活性化フィーダ617AFに、及び、カーネル内の入力領域の順序に応じた重み値のデータシーケンスを重みフィーダ617WFに出力してよい。
【0049】
活性化フィーダ617AFは、ウィンドウシーケンサ617Sからのデータシーケンスに示される活性化データに従って、データメモリインタフェース617DIを介してメモリバンクからアクセスされた活性化データを、畳み込みパイプライン617CPに供給する。活性化フィーダ617AFは、メモリバンクから、1x<ウィンドウ>計算に十分な活性化データを、畳み込みパイプライン617CPのラインバッファ内へ読み取り得る。
【0050】
重みフィーダ617WFは、ウィンドウシーケンサ617Sからのデータシーケンスに示される重み値に従って、重みメモリインタフェース617WIを介して、メモリバンクからアクセスされた重み値を、畳み込みパイプライン617CPへプリロードする。重みフィーダ617WFは、重みメモリから、1x<ウィンドウ>計算に十分な重み値を、畳み込みパイプライン617CPの重みバッファ内へ読み取り得る。
【0051】
パイプラインコントローラ617PCは畳み込みパイプライン617CPのデータ送信オペレーションを制御する。一旦、現在の活性化バッファコンテンツが処理されたら、パイプラインコントローラ617PCは、ラインバッファから畳み込みパイプライン617CPの活性化バッファへのデータのコピーを開始し得る。パイプラインコントローラ617PCは、畳み込みパイプライン617CPの各チャネルパイプライン617CHで実行される畳み込み演算を制御し得、ここで、各チャネルパイプライン617CHはデプスワイズ畳み込み層への入力の1つのチャネルで動作する。
【0052】
畳み込みパイプライン617CPは、活性化フィーダ617AFから与えられた活性化データ及び重みフィーダ617WFからプリロードされた重み値に数学的演算を実行する。畳み込みパイプライン617CPはチャネルパイプライン617CHへ分割され、各チャネルパイプライン617CHは1つのチャネルに対して数学的演算を実行する。活性化フィーダ617AF、重みフィーダ617WF及びパイプラインコントローラ617PCと組み合わせて、畳み込みパイプラインが畳み込み演算を論理的に実行する。
【0053】
外部累積ロジック617Aは、畳み込みパイプライン617CPからデータを受信し、累積メモリインタフェース617AIを介してメモリバンクにデータを格納する。累積ロジック617Aは、各チャネルパイプライン617CHについて加算器617Pを含む。累積ロジック617Aは、メモリバンクのコンテンツと1x<ウィンドウ>畳み込みの結果とのポイントワイズ加算のために用いられ得る。
【0054】
この実施形態において、3つのウィンドウパイプラインで例示された3つのチャネルがある。しかし、他の実施形態は異なる数のチャネルを有し得る。可能であるものの、この実施形態は主に簡易性のため3つのチャネルを示した。多くの実施形態は、実際の適用に対応すべく少なくとも16チャネルを含むだろう。
【0055】
図6Bは、本発明の少なくとも1つの実施形態による、デプスワイズ畳み込みプロセッサのためのチャネル毎のパイプラインの模式図である。チャネルパイプライン617CHは、ラインバッファ617LB、活性化バッファ617AB、重みバッファ617WB、複数の乗算器617X、複数の加算器617P、遅延レジスタ617DR及び内部累積レジスタ617NBを含む。
【0056】
ラインバッファ617LBは、活性化フィーダ617AFから受け取った活性化データを格納する。ラインバッファ617LBは、サイクルあたり1ピクセルで活性化フィーダ617AFによって読み取られる活性化データを格納するシフトレジスタを含み得る。
【0057】
活性化バッファ617ABは、ラインバッファ617LBから受け取った活性化データを格納する。活性化バッファ617ABは、現在の畳み込み演算が適用される活性化データを格納する1セットのレジスタを含み得る。
【0058】
重みバッファ617WBは、重みフィーダ617WFから受け取った重み値を格納する。重みバッファ617WBは、現在の畳み込み演算が適用される重み値を格納するシフトレジスタを含み得る。
【0059】
乗算器617Xは、活性化バッファ617ABからの活性化データに重みバッファ617WBからの重み値を掛け合わせる。この実施形態では、3つの乗算器617Xがあり、これは畳み込みカーネルの幅又は高さ次元の並列度が3であることを意味する。加算器617Pは、集合的に加算木を形成し、その後、活性化データと重み値との積を一緒に加算する。この処理の間、加算木の一部ともみなされる遅延レジスタ617DRは、ものでもあるが、加算木をバランスさせる。内部累積レジスタ617IAは、部分和を格納することにより加算を補助する。例えば、内部累積レジスタ617IAは、この実施形態では6つであるバッファのウィンドウの数、及び、畳み込みフィルタの幅又は高さが、3である並列度よりも多いときに、部分和を累積するのに用いられ得る。
【0060】
一旦、積が全て総和としてまとめて加算されると、総和は累積ロジック617Aに出力され、累積ロジック617Aは、その後、累積メモリインタフェース617AIを介して、そのデータをメモリバンクに格納する。
【0061】
図7は、本発明の少なくとも1つの実施形態による、ポイントワイズ畳み込みプロセッサ717の模式図である。ポイントワイズ畳み込みプロセッサ717は、キュー717Q、主シーケンサ717S、重みメモリインタフェース717WI、重みフィーダ717WF、活性化フィーダ717AF、データメモリインタフェース717DI、シストリックアレイ717S、累積ロジック717A及び累積メモリインタフェース717AIを含む。
【0062】
キュー717Qは命令を受信及び送信する。キュー717Qは、
図2の計算コントローラ215のような計算コントローラから命令を受信し、主シーケンサ717Sにその命令を送信し得る。キュー717Qは、FIFOメモリ又は命令をキューイングするのに適した任意の他のメモリであり得る。
【0063】
主シーケンサ717Sは畳み込みのための制御パラメータをシーケンスする。主シーケンサ717Sは、キュー717Qから命令を受信し、制御シーケンスを、重みフィーダ717WF及び活性化フィーダ717AFへ、各々キューを介して出力し得る。この実施形態において、主シーケンサ717SはKHxKW畳み込みを1x1畳み込みのシーケンスに分け、それらが制御パラメータとして重みフィーダ717WF及び活性化フィーダ717AFに与えられる。
【0064】
重みフィーダ717WFは、主シーケンサ717Sからの制御パラメータに示される活性化データに従って、重みメモリインタフェース717WIを介して、メモリバンクからアクセスされた重み値を、シストリックアレイ717SAにプリロードする。
【0065】
活性化フィーダ717AFは、主シーケンサ717Sからのデータシーケンスに示される活性化データに従って、データメモリインタフェース717DIを介してメモリバンクからアクセスされた活性化データを、シストリックアレイ717SAに供給する。
【0066】
シストリックアレイ717SAは、複数のMAC要素717Mを含む。各MAC要素717Mは、計算開始前に、重みフィーダ717WFからの重み値とともにプリロードされ、その後、活性化フィーダ717Fから活性化値を受信する。計算及び重み値のプリロードのオーバーラップを可能にすべく、複数の重みバッファが用いられ得る。先行のMAC要素717Mから出力された重みと活性化値との積が次のMAC要素717Mに入力されるように、MAC要素717Mはアレイ状に配置されている。本実施形態では、毎サイクルにおいて、各MAC要素717Mは、プリロードされた重み値717Wで乗算された自身の左に隣接するMAC要素717Mから出力された値に等しい累積値を出力し、その積は自身の上に隣接するMAC要素717Mから出力された値に加算される。最下行のMAC要素717Mは、それらの積を累積ロジック717Aに出力する。
【0067】
累積ロジック717Aは、シストリックアレイ717SAから積を受信し、その積をメモリバンクに格納する。本実施形態において、主シーケンサ717Sで必要とされる累積が書き込まれるべきメモリロケーションの古い値を読み取る場合、累積ロジック717Aはそれを新しい値で和によって上書きするであろう。さもなくば、累積ロジック717Aは、新しい値をそのまま書き込む。
【0068】
ポイントワイズ畳み込みモジュール717は、単一のKHxKW畳み込みを複数のKHxKWの1x1畳み込みに分割することによってポイントワイズ畳み込みを実行するのに有用であり得る。例えば、4つの異なる1x1畳み込みに対応するメモリバンクの領域において、2x2畳み込みが代用され得る。ポイントワイズ畳み込みモジュール717は、各1x1畳み込みを、MAC要素の活性化値の行列とMAC要素の重み値の行列とのドット積として計算し、その後、その1x1畳み込みの結果を合計し得る。
【0069】
図6A、6B、及び7の畳み込みプロセッサは、畳み込みネットワークの推論を実行するように構成された少なくともいくつかの実施形態で実装される。他のプロセッサは、他のタイプのディープネットワークを含む他のタイプのニューラルネットワークの推論を実行するように構成された専用回路を含む少なくともいくつかの他の実施形態で使用される。他のプロセッサは、画像処理、圧縮/解凍、並列計算などを実行するように構成された専用回路を含む少なくともいくつかの実施形態で使用される。
【0070】
図8は、本発明の少なくとも1つの実施形態による、計算シーケンスの図である。この計算シーケンスは、ニューラルネットワークの推論を実行するためのものである。計算シーケンスは、第1の層830を含む3つの層を有する。第1の層830は、計算832を含む4つの計算を含む。計算832は、データ値及び第1の重み値837に対して実行される。少なくともいくつかの実施形態では、計算832に関与する重み値837は、接続838を介して取得される。第2の層は、計算833を含む4つの計算を含む。計算833は、計算832の結果値及び第2の重み値に対して実行される。少なくともいくつかの実施形態では、計算832の結果値は、接続835を介して取得される。第3の層は、8つの計算を含み、そのそれぞれは、第2の層の計算の結果値と第3の重み値とに対して実行される。少なくともいくつかの実施形態では、計算シーケンスは、3つよりも多くの層を有し、少なくともいくつかの実施形態では3つよりも少ない層を有する。計算シーケンスの層の数は、必ずしも、推論の対象となるニューラルネットワークの層の数に等しくない。
【0071】
図9Aは、本発明の少なくとも1つの実施形態による、計算シーケンスのために構成された装置のブロック図である。この装置は、計算タイル932及び計算タイル933を含む複数の計算タイルと、メモリタイル937を含む複数のメモリタイルと、相互接続902を含む複数の相互接続とを含む。装置は、
図8の計算シーケンスに応じて構成され、それによって、計算シーケンスの各計算は、装置内の計算タイルによって実現される。この実施形態では、メモリタイルは、計算シーケンスの重み値を格納するように構成される。
【0072】
図9Bは、本発明の少なくとも1つの実施形態による、計算シーケンスのためのマルチキャスト送信を実行する装置のブロック図である。この実施形態では、複数の相互接続は、入力ポート及び出力ポートの直接接続を介して値が流れるように、計算シーケンスに応じて、計算タイル及びメモリタイルを逐次に接続するように構成される。少なくともいくつかの実施形態では、計算シーケンスは、階層の各先頭計算タイルが外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、階層の各中間計算タイルが、先行の計算タイルから先行中間値を受信して1つ又は複数の後続の計算タイルに後続の中間値を出力するように構成され、階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、外部メモリインタフェースに結果値を出力するように構成される、ように接続された複数の計算タイルのうちの計算タイルの階層を含み、階層内の計算タイル間の各接続は、直接接続又は複数のメモリタイルのうちのメモリタイルを介する接続である。特に、複数の相互接続は、第1の重み値を格納しているメモリタイル937の出力ポートを、計算タイル932を含む最初の層930内の計算タイルの入力ポートに接続するように構成される。少なくともいくつかの実施形態では、メモリタイル937は、マルチキャスト送信を実行し、それによって、メモリタイル937は、実質的にほぼ同じ時刻に最初の層930における全ての計算タイルによって受信される単一の送信を実行する。
【0073】
図9Cは、本発明の少なくとも1つの実施形態による、計算シーケンスのためのポイント・ツー・ポイント送信を実行する装置のブロック図である。この実施形態では、複数の相互接続は、入力ポート及び出力ポートの直接接続を介して値が流れるように、計算シーケンスに応じて、計算タイル及びメモリタイルを逐次に接続するように構成される。特に、複数の相互接続は、計算タイル932の出力ポートを計算タイル933の入力ポートに接続するように構成される。少なくともいくつかの実施形態では、一旦計算タイル932が計算を実行すると、計算タイル932はポイント・ツー・ポイント送信を実行し、それによって、計算タイル932は結果値を計算タイル933に送信する。
【0074】
少なくともいくつかの実施形態では、複数の相互接続は、ブロードキャスト送信のために、タイルの出力ポートを、全ての他のタイルの入力ポートに接続するように構成される。少なくともいくつかの実施形態では、ブロードキャスト送信において、タイルは、実質的にほぼ同じ時刻に全ての他のタイルによって受信される単一の送信を実行する。
【0075】
図10は、本発明の少なくとも1つの実施形態による、計算シーケンスを実行するための動作フローである。動作フローは、計算シーケンスを実行するための方法を提供する。少なくともいくつかの実施形態では、方法は、
図1の一般コントローラ106のような、ネットワークオンチップリコンフィギュアビリティのための装置の一般コントローラによって実行される。
【0076】
S1040において、一般コントローラ又はその部分は、計算シーケンスを受信する。少なくともいくつかの実施形態では、一般コントローラは、ニューラルネットワークの推論を実行する命令を受信し、その命令は、計算シーケンスを含む。
少なくともいくつかの実施形態では、ニューラルネットワークの推論の実行は、ニューラルネットワークをトレーニングする処理の一部である。少なくともいくつかの実施形態では、計算シーケンスは、テンソル仮想マシン(TVM)、他のコンパイラスタックなどのような計算グラフである。少なくともいくつかの実施形態では、計算シーケンスは、装置内の計算タイルにおいて計算シーケンスを実現するために相互接続を開閉する命令を含む。
【0077】
S1050において、一般コントローラ又はその部分は、計算シーケンスに応じて装置をリコンフィギュアする。少なくともいくつかの実施形態では、一般コントローラは、相互接続コントローラに、計算シーケンスに応じて複数の相互接続をリコンフィギュアさせる。少なくともいくつかの実施形態では、一般コントローラは、装置の他のゾーンのコンフィギュレーションを維持しながら、装置の第1のゾーンをリコンフィギュアする。少なくともいくつかの実施形態では、一般コントローラは、計算シーケンスの一部のために装置をリコンフィギュアする。少なくともいくつかの実施形態では、計算シーケンスは、部分に分割される。少なくともいくつかの実施形態では、命令は、ニューラルネットワークの第1の部分に関連する第1の計算シーケンスと、ニューラルネットワークの第2の部分に関連する第2の計算シーケンスとを含む。少なくともいくつかの実施形態では、装置のリコンフィギュレーションは、
図11に関して以下に説明するように実行される。
【0078】
S1042において、一般コントローラ又はその部分は、計算シーケンスの一部を実行する。少なくともいくつかの実施形態では、一般コントローラは、計算シーケンスの計算をそれぞれの計算タイルによって実行させるために、計算タイル及びメモリタイルに制御信号を送信する。少なくともいくつかの実施形態では、一般コントローラは、複数の計算タイル及び複数のメモリタイルを調整することによって、ニューラルネットワークの推論を実行する。少なくともいくつかの実施形態では、一般コントローラは、第1のイテレーションにおいて、複数の計算タイル及び複数のメモリタイルを調整することによってニューラルネットワークの第1の部分の推論を実行し、その後、第2のイテレーションにおいて、複数の計算タイル及び複数のメモリタイルを調整することによってニューラルネットワークの第2の部分の推論を実行する。
【0079】
S1044において、一般コントローラ又はそのサブ部分は、計算シーケンスの全ての部分が計算されたかどうかを判断する。一般コントローラが、計算シーケンスの全ての部分よりも少ない部分が計算されたと判断した場合、動作フローは、S1050の装置リコンフィギュアに戻る前に、次の部分を選択する(S1046)。計算シーケンスの全ての部分が計算されたと一般コントローラが判断した場合、動作フローは終了する。
【0080】
図11は、本発明の少なくとも1つの実施形態による、ネットワークオンチップリコンフィギュアビリティのための装置をリコンフィギュアするための動作フローである。動作フローは、ネットワークオンチップリコンフィギュアビリティのための装置をリコンフィギュアするための方法を提供する。少なくともいくつかの実施形態では、方法は、
図1の一般コントローラ106のような、装置の一般コントローラによって実行される。
【0081】
S1152において、一般コントローラ又はその部分は、計算シーケンスに応じて複数の相互接続をリコンフィギュアする。少なくともいくつかの実施形態では、一般コントローラは、
図1の相互接続コントローラ104のような相互接続コントローラに、計算シーケンスに応じて複数の相互接続をリコンフィギュアさせる。少なくともいくつかの実施形態では、一般コントローラは、相互接続コントローラに、第1の計算シーケンスに応じて複数の相互接続をリコンフィギュアさせる。少なくともいくつかの実施形態では、一般コントローラは、相互接続コントローラに、第2の計算シーケンスに応じて複数の相互接続をリコンフィギュアさせる。
【0082】
S1154において、一般コントローラ又はその部分は、計算シーケンスが、計算タイルの可変動作プロセッサのためのカスタム動作を含むかどうかを判断する。少なくともいくつかの実施形態では、計算タイルの可変動作プロセッサは、値に対する活性化関数、又はプロファイリングのようなカスタム動作を実行するように構成される。一般コントローラが、計算シーケンスがカスタム動作を含むと判断した場合、動作フローは、S1156のプロセッサコンフィギュレーションに進む。一般コントローラが、計算シーケンスがカスタム動作を含まないと判断した場合、動作フローは、S1158の値取得に進む。
【0083】
S1156において、一般コントローラ又はその部分は、計算タイルの可変動作プロセッサをコンフィギュアする。少なくともいくつかの実施形態では、一般コントローラは、計算タイルの計算コントローラに、可変動作プロセッサをコンフィギュアさせる。
【0084】
S1158で、一般コントローラ又はその部分は、外部メモリインタフェースから値を取得する。少なくともいくつかの実施形態では、一般コントローラは、個々のタイルに外部メモリインタフェースから値を取得させる。少なくともいくつかの実施形態では、一般コントローラは、計算を実行する前に、メモリタイルに外部メモリインタフェースから重み値を取得させる。少なくともいくつかの実施形態では、一般コントローラは、計算タイルに、外部メモリインタフェースからデータ値を取得させ、取得されたデータ値を1つ又は複数の計算メモリに格納させる。
【0085】
少なくともいくつかの実施形態は、ブロックが(1)処理が実行される動作のステップ、又は(2)処理の実行を担うコントローラの部分を表し得るフローチャート及びブロック図との関連で説明された。少なくともいくつかの実施形態では、特定のステップ及び部分は、専用回路、コンピュータ可読媒体に格納されたコンピュータ可読命令が供給されたプログラマブル回路、及び/又はコンピュータ可読媒体に格納されたコンピュータ可読命令が供給されたプロセッサにより実装される。少なくともいくつかの実施形態では、専用回路は、デジタル及び/又はアナログハードウェア回路を含み、集積回路(IC)及び/又はディスクリート回路を含む。少なくともいくつかの実施形態では、プログラマブル回路は、例えばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)などのような、論理AND、OR、XOR、NAND、NOR、及び他の論理演算、フリップ-フロップ、レジスタ、メモリ要素などを備える再構成可能なハードウェア回路を含む。
【0086】
少なくともいくつかの実施形態では、コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持及び格納可能な物理的デバイスを含む。いくつかの実施形態では、コンピュータ可読記憶媒体は、例えば電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又は上述の任意の好適な組み合わせを含むが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード若しくは記録された命令を有するグルーブ内の隆起構造のような機械的にエンコードされたデバイス、及び上述のものの任意の好適な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書で用いられるように、それ自体で、電波又は他の自由に伝搬する電磁波、導波管又は他の伝送媒体を通して伝播する電磁波(例えば、光ファイバ・ケーブルを進む光パルス)、又はワイヤを通して送信される電気信号のような、一時的な信号であると解釈されるものではない。
【0087】
少なくともいくつかの実施形態では、本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイス又は外部コンピュータ又は外部記憶装置へ、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークなどのネットワークを介して、ダウンロード可能である。少なくともいくつかの実施形態では、当該ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含み得る。少なくともいくつかの実施形態では、各コンピューティング/処理デバイスにおけるネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためのコンピュータ可読プログラム命令を転送する。
【0088】
少なくともいくつかの実施形態では、上述した動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、例えばSmalltalk(登録商標)、C++等のようなオブジェクト指向プログラミング言語と、「C」プログラミング言語若しくは同様のプログラミング言語のような従来の手続き型プログラミング言語とを含む1つ又は複数のプログラミング言語の任意の組み合わせで書き込まれたソースコード若しくはオブジェクトコードのいずれかであり得る。少なくともいくつかの実施形態では、コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全て実行され得るか、部分的にユーザのコンピュータ上で実行され得るか、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行され得るか、又は、リモートコンピュータ若しくはサーバ上で全て実行され得る。少なくともいくつかの実施形態では、後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され、若しくは、接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを用いてインターネットを介して)行われる。少なくともいくつかの実施形態では、例えば、プログラマブルロジック回路]、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するため、電子回路を個別に扱うためのコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行してよい。
【0089】
以上、本発明を実施形態を用いて説明したが、請求される任意の主題の技術的範囲は上記実施形態には限定されない。当業者は、上記実施形態に、多様な変更及び改良を加えることが可能であることを理解するだろう。当業者はまた、特許請求の範囲から、かかる変更又は改良を加えた実施形態も本発明の技術的範囲に含まれることを理解するだろう。
【0090】
請求項、実施形態、又は図面中において示した装置、システム、プログラム、及び方法によって実行される各処理の動作、手順、ステップ、及びステージは、その順序が特段「先立って」、「前に」等のように示されていない限り、また、前の処理の出力を後の処理で使用されない限り、任意の順序で実行することが可能であることに留意すべきである。請求項、実施形態又は図面において、処理フローが、「まず」又は「次に」のような表現を用いて説明されたとしても、かかる説明は、必ずしも説明された順序で処理が実行されることが必須であることを意味するものではない。
【0091】
少なくともいくつかの実施形態では、ネットワークオンチップリコンフィギュアビリティは、複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルは、値を格納するように構成される、複数のメモリタイルと、外部メモリとデータを交換するように構成された外部メモリインタフェースと、複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、値を格納するように構成された計算メモリと、値に対して数学的演算を実行するように構成された回路を含む、プロセッサとを含む、複数の計算タイルとを含む装置によって実行される。
【0092】
上記は、当業者が本開示の態様をより良く理解するように、いくつかの実施形態の特徴を概説している。当業者は、本開示が、本明細書に導入された実施形態と同じ目的を遂行する及び/又は同じ利点を実現するための他のプロセス及び構造を設計又は修正するための基礎として容易に使用可能であることを理解するはずである。当業者はまた、かかる均等な構造が本開示の主旨及び範囲から逸脱しないこと、並びに本開示の主旨及び範囲から逸脱することなく本明細書における様々な変更、置換、及び変更が可能であることを認識するはずである。
【手続補正書】
【提出日】2023-01-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、
入力ポートと、
出力ポートと、
値を格納するように構成された計算メモリと、
値に対して数学的演算を実行するように構成された回路を含むプロセッサと、
前記入力ポートを介して値を受信し、前記計算メモリに値を格納し、前記プロセッサに値を入力し、前記出力ポートを介して値を送信するように構成された計算コントローラと
を含む、複数の計算タイルと、
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルが、入力ポート及び出力ポートを含み、前記入力ポートを介して受信した値を格納し、格納した値を前記出力ポートを介して送信するように構成された、複数のメモリタイルと、
外部メモリとデータを交換するように構成された入力ポート及び出力ポートを含む外部メモリインタフェースと、
複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記入力ポートに接続可能であるように配置された、複数の相互接続と、
計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成された相互接続コントローラであって、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースから受信した初期値が適用される計算タイルシーケンスにおける連続する計算タイルによって実行されて前記外部メモリインタフェースに送信される結果値を生成し、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを通じた接続である、相互接続コントローラと
を備える集積回路。
【請求項2】
前記計算シーケンスは、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介した接続である
請求項1に記載の集積回路。
【請求項3】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、各タイルが、前記複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項1又は2に記載の集積回路。
【請求項4】
前記複数の相互接続のうちの相互接続は、複数のスイッチクラスタ及び複数の接続クラスタの間で分散されており、
前記複数のスイッチクラスタのうちの各スイッチクラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の接続クラスタのうちの接続クラスタとを接続する相互接続を含み、
前記複数の接続クラスタのうちの各接続クラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の計算タイル及び前記複数のメモリタイルのうちの対応するタイルとを接続する相互接続を含む
請求項1又は2に記載の集積回路。
【請求項5】
前記複数の計算タイルのうちの各計算タイルの前記プロセッサは、固定動作プロセッサであり、
前記複数の計算タイルのうちの各計算タイルは、値に対して数学的演算を実行するために前記計算シーケンスに基づいてコンフィギュア可能な可変動作プロセッサをさらに含み、
前記計算コントローラは、前記固定動作プロセッサ及び前記可変動作プロセッサに選択的に値を入力するようにさらに構成される
請求項1又は2に記載の集積回路。
【請求項6】
前記複数の計算タイルのうちの各計算タイルの前記可変動作プロセッサは、計算タイルによって消費される電力又は計算タイルによって実行される処理のレイテンシのうちの1つをモニタするようにさらにコンフィギュア可能である
請求項5に記載の集積回路。
【請求項7】
前記可変動作プロセッサは、値に対して数学的演算を実行するために、前記計算シーケンスに基づいてコンフィギュア可能である
請求項5に記載の集積回路。
【請求項8】
各計算タイルの前記プロセッサは、ポイントワイズ畳み込み又はデプスワイズ畳み込みの1つを実行するように構成される
請求項1又は2に記載の集積回路。
【請求項9】
前記計算シーケンスを含む命令を受信し、
前記相互接続コントローラに、前記計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせる
ように構成された一般コントローラ
をさらに備える請求項1又は2に記載の集積回路。
【請求項10】
ニューラルネットワークの推論を実行する命令を受信し、前記命令が前記計算シーケンスを含み、
前記相互接続コントローラに、前記計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの推論を実行する
ように構成された一般コントローラ
さらに備える請求項1又は2に記載の集積回路。
【請求項11】
前記命令は、前記ニューラルネットワークの第1の部分に関連する第1の計算シーケンスと、前記ニューラルネットワークの第2の部分に関連する第2の計算シーケンスとを含み、
前記一般コントローラは、
前記相互接続コントローラに、前記第1の計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの前記第1の部分の推論を実行し、
前記相互接続コントローラに、前記第2の計算シーケンスに応じて前記複数の相互接続をリコンフィギュアさせ、
前記複数の計算タイル及び前記複数のメモリタイルを調整することによって、前記ニューラルネットワークの前記第2の部分の推論を実行する、
ようにさらに構成される
請求項10に記載の集積回路。
【請求項12】
前記相互接続コントローラは、回線交換式で相互接続を開閉するように構成される、
請求項1又は2に記載の集積回路。
【請求項13】
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルは、値を格納するように構成された、複数のメモリタイルと、
外部メモリとデータを交換するように構成された外部メモリインタフェースと、
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルは、
値を格納するように構成された計算メモリと、
前記計算メモリ、前記複数のメモリタイルのうちのメモリタイル、又は前記外部メモリインタフェースのうちの少なくとも2つに格納された値の組み合わせに対して数学的演算を実行するように構成された回路を含む、プロセッサと
を含む、複数の計算タイルと
を備え、
計算シーケンスが、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルのうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介する接続である
装置。
【請求項14】
複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの入力ポートに接続可能であるように配置された、複数の相互接続と、
前記計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成され、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースに送信される結果値を生成するために、前記外部メモリインタフェースから受信した初期値に適用される計算タイルシーケンスにおける連続する計算タイルによって実行され、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介する接続である、相互接続コントローラと
をさらに備える請求項13に記載の装置。
【請求項15】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、
各タイルが、複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項13又は14に記載の装置。
【請求項16】
複数の計算タイルであって、前記複数の計算タイルのうちの各計算タイルが、
入力ポートと、
出力ポートと、
値を格納するように構成された計算メモリと、
値に対して数学的演算を実行するように構成された回路を含むプロセッサと、
前記入力ポートを介して値を受信し、前記計算メモリに値を格納し、前記プロセッサに値を入力し、前記出力ポートを介して値を送信するように構成された計算コントローラと
して構成された回路を含む、複数の計算タイルと、
複数のメモリタイルであって、前記複数のメモリタイルのうちの各メモリタイルが、入力ポート及び出力ポートとして構成され、前記入力ポートを介して受信した値を格納し、格納した値を前記出力ポートを介して送信するようにさらに構成された回路を含む、複数のメモリタイルと、
外部メモリとデータを交換するように構成された入力ポート及び出力ポートとして構成された回路を含む外部メモリインタフェースと、
回線交換式の複数の相互接続であって、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記出力ポートが、前記複数の相互接続のうちの1つ又は複数の相互接続を介して、各計算タイル、各メモリタイル、及び前記外部メモリインタフェースの前記入力ポートに接続可能であるように配置された、回線交換式の複数の相互接続と、
計算シーケンスに応じて前記複数の計算タイルのうちの計算タイルを接続するために、前記複数の相互接続のうちの個々の相互接続を開閉するように構成された回路を含む相互接続コントローラであって、前記計算シーケンスにおける連続する各計算が、前記外部メモリインタフェースから受信した初期値が適用される計算タイルシーケンスにおける連続する計算タイルによって実行されて前記外部メモリインタフェースに送信される結果値を生成し、チェーンにおける計算タイル間の各接続が、直接接続又は前記複数のメモリタイルのうちのメモリタイルを通じた接続である、相互接続コントローラと
を備える集積回路。
【請求項17】
前記計算シーケンスは、前記複数の計算タイルのうちの計算タイルの階層を含み、前記複数の計算タイルうちの計算タイルは、
前記階層の各先頭計算タイルが、前記外部メモリインタフェースから初期値を受信し、1つ又は複数の後続の計算タイルに中間値を送信するように構成され、
前記階層の各中間計算タイルが、先行の計算タイルから先行の中間値を受信し、後続の中間値を1つ又は複数の後続の計算タイルに出力するように構成され、
前記階層の各最終計算タイルが、先行の計算タイルから中間値を受信し、前記外部メモリインタフェースに結果値を出力するように構成される、
ように接続され、
前記階層内の計算タイル間の各接続は、直接接続又は前記複数のメモリタイルのうちのメモリタイルを介した接続である
請求項16に記載の集積回路。
【請求項18】
前記複数の計算タイル及び前記複数のメモリタイルは、2次元グリッドに配置され、
各タイルが、前記複数の相互接続のうちの1つ又は複数の相互接続によって、前記複数の計算タイル及び前記複数のメモリタイルのうちの隣接するタイルから分離される
請求項16又は17に記載の集積回路。
【請求項19】
前記複数の相互接続のうちの相互接続は、複数のスイッチクラスタ及び複数の接続クラスタの間で分散されており、
前記複数のスイッチクラスタのうちの各スイッチクラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の接続クラスタのうちの接続クラスタとを接続する相互接続を含み、
前記複数の接続クラスタのうちの各接続クラスタは、前記複数のスイッチクラスタのうちの近くのスイッチクラスタと、前記複数の計算タイル及び前記複数のメモリタイルのうちの対応するタイルとを接続する相互接続を含む
請求項16又は17に記載の集積回路。
【外国語明細書】