(57)【要約】  複数のアレイコアを含む回路であって、複数のアレイコアのそれぞれのアレイコアは、複数の異なるデータ処理回路とデータキューレジスタファイルを含む。複数の境界コアであって、複数の境界コアのそれぞれの境界コアは、少なくとも１つのレジスタファイルを含み、[i]複数の境界コアの少なくとも１つのサブセットは、複数のアレイコアの第１のサブセットの周囲を包囲し、かつ［ii］複数のアレイコアと複数の境界コアの組み合わせは、集積回路アレイを定義する。【選択図】図１
2021515339.tif 000002
【特許請求の範囲】
【請求項１】
集積回路であって、
複数のアレイコアであって、複数のアレイコアのそれぞれのアレイコアが、
複数の異なるデータ処理回路、および
データキューレジスタファイル、
を含む、複数のアレイコアと、
複数の境界コアであって、複数の境界コアのそれぞれの境界コアが、
少なくとも一つのレジスタファイルを含み、
[i]複数の境界コアの少なくとも一つのサブセットが、複数のアレイコアの第１のサブセットの周囲を包囲し、および、
［ii］複数のアレイコアと複数の境界コアの組み合わせが、集積回路アレイを定義することを特徴とする、集積回路。
【請求項２】
請求項１に記載の集積回路であって、
複数のアレイコアの第１のサブセットは、複数のアレイコアの第２のサブセットの周囲を包囲する、集積回路。
【請求項３】
請求項１に記載の集積回路であって、
複数のアレイコアのそれぞれの複数の異なる処理回路は、
複数の乗算アキュムレータであって、複数の乗算アキュムレータのそれぞれが、複数のアレイコアのそれぞれのアレイコアのデータ入力／出力ポートに隣接して配列されている、乗算アキュムレータ、を含む、
集積回路。
【請求項４】
請求項１に記載の集積回路であって、さらに、
第１の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットが、それぞれのデュアルFIFOによって最初に処理されるように、データを先入れ先出し方式において集積回路アレイの中にロードする第１の複数のデュアルFIFOであって、
第１の複数のデュアルFIFOは、集積回路アレイの第１の周囲側に沿って配列される、第１の複数のデュアルFIFOと、
第２の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットが、それぞれのデュアルFIFOによって最初に処理されるように、データを先入れ先出し方式において集積回路アレイにロードする第２の複数のデュアルFIFOであって、
第２の複数のデュアルFIFOは、集積回路アレイの第１の周囲側とは異なる集積回路アレイの第２の周囲側に沿って配列される、第２の複数のデュアルFIFOと、
を含む、集積回路。
【請求項５】
請求項４に記載の集積回路であって、
第１および第２の複数のデュアルFIFOのそれぞれは少なくとも２つのメモリエレメントを含み、
前記少なくとも２つのメモリエレメントの第１が、集積回路アレイの複数の境界コアの境界コアの１つおよび複数のアレイコアの１つのアレイコアの中へデータをプッシュし、
前記少なくとも２つのメモリエレメントの第２が、集積回路アレイの複数の境界コアの境界コアの１つおよび複数のアレイコアの１つのアレイコアからデータを収集する、
集積回路。
【請求項６】
請求項３に記載の集積回路であって、
複数のアレイコアのそれぞれは、長方形を有し、且つ、
複数の乗算アキュムレータの１つは、複数のアレイコアのそれぞれの長方形の中に配列される、
集積回路。
【請求項７】
請求項１に記載の集積回路であって、さらに、
統合メモリとインタフェースする第１の周囲メモリおよび第２の周囲メモリを含み、
第１の周囲メモリは、集積回路アレイの第１の周囲側に沿って配列され、および第１の周囲ロードストアとインタフェースし、
第２の周囲メモリは、集積回路アレイの第２の周囲側に沿って配列され、および第２の周囲ロードストアとインタフェースする
集積回路。
【請求項８】
請求項１に記載の集積回路であって、さらに、
メインメモリと集積回路アレイとの間に直接メモリアクセスを可能にする階層的メモリ構造を含み、階層的メモリ構造は、
集積回路アレイとインタフェースし、および先入れ先出し方式においてデータを伝達し、および受信する複数のデュアルFIFOと、
それぞれが複数のデュアルFIFOのそれぞれのデュアルFIFOとインタフェースし、およびそれぞれのデュアルFIFOから受信された、および／またはそれぞれのデュアルFIFOへのロードを保留するいずれかのデータの１つまたは複数のロードを格納する複数の周囲ロードストアと、
それぞれが複数の周囲ロードストアのそれぞれの周囲ロードストアとインタフェースし、およびメインメモリとインタフェースする複数の周囲メモリと、
を含む、集積回路。
【請求項９】
請求項８に記載の集積回路であって、さらに、
データ移動命令を実行するときに、階層的メモリ構造と集積回路アレイとの間のデータの移動を制御する複数の周囲コントローラ、
を含む、集積回路。
【請求項１０】
請求項８に記載の集積回路であって、
階層的メモリ構造は、データ転送の間にデータアクセスおよびデータ再構築を可能にする二次元の直接メモリアクセスとして実行することのできる、
集積回路。
【請求項１１】
請求項1に記載の集積回路であって、さらにディスパッチコントローラを含み、
当該ディスパッチコントローラは、
（i）データの自動移動を生じさせるデータ移動命令、すなわち（a）集積回路の階層的メモリ構造と集積回路アレイとの間の、（b）それぞれの複数のアレイコアのそれぞれのアレイコアの中の、（c）それぞれのアレイコアの間および集積回路アレイのアレイコアと境界コアとの間の、いずれかのデータ移動命令、および
（ii）集積回路アレイの複数のアレイコアによって実行される複数の計算を定義する計算命令、
を提供する、集積回路。
【請求項１２】
請求項１に記載の集積回路であって、さらに、
データ移動命令を提供するディスパッチコントローラであって、データ移動命令が、
（i）集積回路の中でデータの自動移動を定義し、
（ii）データが予め定められたデータフロースケジュールに従った１つまたは複数の境界コアに提供されない場合、複数の境界コアの１つまたは複数の境界コアを予め定められた一定の値にセットする、
データフロースケジュールを含むことを特徴とする、
ディスパッチコントローラを含む、集積回路。
【請求項１３】
請求項１１に記載の集積回路であって、
データフロースケジュールは、複数の周囲ロードストアの１つまたは複数によって実行可能なメモリアドレスのスケジュールを含む、集積回路。
【請求項１４】
請求項１に記載の集積回路であって、さらに、
ディスパッチコントローラであって、
複数のアレイコアのそれぞれに計算命令を提供する計算命令ジェネレータ回路、および、
集積回路の中でデータの予め定められた移動を定義するデータフロースケジュールを提供するデータ移動ジェネレータ回路、
を含むことを特徴とするディスパッチコントローラを含む、
集積回路。
【請求項１５】
請求項1に記載の集積回路であって、さらに、
同報通信バスの第１の入力端子にて１つまたは複数の周囲コントローラと電気的通信して、および同報通信バスの複数の出力端子にて複数のアレイコアのサブセットと電気的通信して配列される同報通信バス、
を含む、集積回路。
【請求項１６】
請求項1に記載の集積回路であって、
複数のアレイコアのそれぞれは、複数アレイコアおよび複数の境界コアの１つまたは複数を含む隣接したコアと双方向通信して配列される、
集積回路。
【請求項１７】
請求項1に記載の集積回路であって、
複数のアレイコアのそれぞれは、少なくとも１つの論理演算装置をさらに含む、
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１８年３月８日に出願された、米国仮出願第６２／６４０，４７８号の利益を主張し、これは、参照によってその全体が援用される。
【０００２】
一般に、本明細書に記述した１つまたは複数の発明は、集積回路分野に、およびより具体的には集積回路分野における新規かつ有用な知覚および高密度アルゴリズム処理集積回路アーキテクチャに関する。
【背景技術】
【０００３】
人工知能および一般に、機械学習の現代の応用は、ロボット工学における、および特に、自律型ロボット工学および自立型の乗り物を含む技術における革新を推進しているようにみえる。また、機械知覚技術における発展は、機械にそれらの環境を理解させる多くのその他の能力のうち、自立型ロボット工学の、および自立型の乗り物の空間における実行の多くにおいて視覚を知覚し、聴覚を知覚し、および触覚を知覚する能力を可能にした。
【０００４】
これらの自立型実行に適用される基礎をなす知覚技術は、多くの場合に自立型ロボットおよび／または自立型の乗り物をとり巻く環境の豊富な捕捉を可能にさせる多数の高度な、および能力があるセンサを含む。しかし、これらの高度な、および能力があるセンサの多くが、多くの自立型実行の物理的な環境の強い捕捉を可能にし得る一方、センサからの種々のセンサシグナルデータを処理するように機能し得る基礎をなす処理回路は、多くの場合センサシグナルデータの高性能およびリアルタイムコンピューティングを可能にするのに十分な対応するしっかりした処理能力を欠いている。
【０００５】
基礎をなす処理回路は、多くの場合中央処理装置（CPU）およびグラフィック処理装置（GPU）を含む汎用集積回路を含む。多くのアプリケーションにおいて、GPUがCPUに比較して一括の、または大量の計算を実行することができるので、GPUはCPUよりも実行される。しかし、大部分のGPUのアーキテクチャは、機械知覚技術において使用される複雑な機械学習アルゴリズム（たとえば、ニューラルネットワークアルゴリズムなど）の多くを扱うために最適化されない。たとえば、自立型の乗り物空間は、単に乗り物および人を知覚するだけであることを越えて広がる複数の知覚処理要求を含む。自立型の乗り物は、自立型の乗り物のための経路または経路計画を可能にするセンサデータの融合を提供する高度なセンサ一式で実行されてきた。しかし、現代のGPUは、これらのさらなる高度計算タスクを扱うために構築されていない。
【０００６】
よくても、GPUまたは類似の処理回路が経路計画、センサーフュージョンなどを含むさらなるセンサ処理要求を扱うことを可能にするために、さらなるおよび／または異なる回路を従来のGPUに構築してもよい。ロボット工学および自立型機械のさらなる知覚処理要求を扱うためのこの断片化された、および断片的なアプローチは、センサ信号処理における非効率性を含む計算を行う際にいくつかの非効率を生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、ロボット工学の知覚または任意のタイプもしくは種類の知覚的機械を可能にするための高性能およびリアルタイム処理およびルーチンの計算、並びに高度なセンサシグナルの能力がある高度な集積回路に対する集積回路分野における要求がある。
【０００８】
本出願に記述した発明の発明者は、増強されたセンサデータ処理能力を可能にする集積回路アーキテクチャをデザインし、およびロボット工学の知覚および種々の機械を可能にすることを含むいくつかの目的のための集積回路アーキテクチャの実現に関連した方法をさらに発見した。
【課題を解決するための手段】
【０００９】
一つの態様において、集積回路は、複数のアレイコアを含み、複数のアレイコアのそれぞれのアレイコアは、複数の異なるデータ処理回路と、データキューレジスタファイルを含む。複数の境界コアであって、複数の境界コアのそれぞれの境界コアは、少なくともレジスタファイルを含み、[i]複数の境界コアの少なくとも１つのサブセットは、複数のアレイコアの第１のサブセットの周囲を包囲し、［ii］複数のアレイコアと複数の境界コアの組み合わせは、集積回路アレイを定義する。
【００１０】
一つの態様において、複数のアレイコアの第１のサブセットは、複数のアレイコアの第２のサブセットの周囲を包囲する。
【００１１】
一つの態様において、複数のアレイコアのそれぞれの複数の異なる処理回路は：複数の乗算アキュムレータを含み、複数の乗算アキュムレータのそれぞれは、複数のアレイコアのそれぞれのアレイコアのデータ入力/出力ポートに隣接して配列される。
【００１２】
一つの態様において、回路は、第１の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットがそれぞれのデュアルFIFOによって最初に処理されるように、第１の複数のデュアルFIFOは、集積回路アレイの第１の周囲側に沿って配列される、先入れ先出し方式において集積回路アレイの中にデータをロードする第１の複数の第１のデュアルFIFO；第２の複数のデュアルFIFOのそれぞれのデュアルFIFOに入っている最も古いデータセットがそれぞれのデュアルFIFOによって最初に処理されるように、第２の複数のデュアルFIFOは、集積回路アレイの第１の周囲側とは異なる集積回路アレイの第２の周囲側に沿って配列される、先入れ先出し方式において集積回路アレイの中にデータをロードする第２の複数のデュアルFIFO、を含む。
【００１３】
一つの態様において、第１および第２の複数のデュアルFIFOのそれぞれは、第１の少なくとも２つのメモリエレメントが集積回路アレイの複数の境界コアの１つの境界コアの中へデータをプッシュし；第２の少なくとも２つのメモリエレメントが集積回路アレイの複数の境界コアの１つの境界コアからのデータを収集する、少なくとも２つのメモリエレメントを含む。
【００１４】
一つの態様において、複数のアレイコアのそれぞれは、長方形または任意の適切な多角形形状を有し；および複数の乗算アキュムレータの１つは、複数のアレイコアのそれぞれの長方形のそれぞれの側にて配列される。
【００１５】
一つの態様において、回路は、統合メモリとインタフェースする（interface、接続する、相互作用する）第１の周囲メモリおよび第２の周囲メモリを含み：第１の周囲メモリは、集積回路アレイの第１の周囲側に沿って配列され、および第１の周囲ロードストアとインタフェースし；および第２の周囲メモリは集積回路アレイの第２の周囲側に沿って配列され、および第２の周囲ロードストアとインタフェースする。
【００１６】
一つの態様において、回路は、メインメモリと集積回路アレイとの間に直接メモリアクセスを可能にする階層的メモリ構造を含み、階層的メモリ構造は：集積回路アレイとインタフェースし、並びに先入れ先出し方式においてデータを伝達し、および受信する複数のデュアルFIFO、それぞれが複数のデュアルFIFOのそれぞれのデュアルFIFOとインタフェースする、およびそれぞれのデュアルFIFOから受信された、および／またはそれぞれのデュアルFIFOの中へのロードを保留しているいずれかのデータの１つまたは複数のロードを格納する複数の周囲ロードストア並びにそれぞれが複数の周囲ロードストアのそれぞれの周囲ロードストアとインタフェースする、およびメインメモリとインタフェースする複数の周囲メモリを含む。
【００１７】
一つの態様において、回路は、データ移動命令を実行するときに、階層的メモリ構造と集積回路アレイとの間のデータの移動を制御する複数の周囲コントローラを含む。
【００１８】
一つの態様において、階層的メモリ構造は、データ転送の間にデータアクセスおよびデータ再構築を可能にする二次元の直接メモリアクセスとして実行されてもよい。
【００１９】
一つの態様において、回路は：（a）集積回路の階層的メモリ構造と集積回路アレイとの間の；（b）それぞれの複数のアレイコアのそれぞれのアレイコアの中の；（c）それぞれのアレイコアの間およびアレイコアと集積回路アレイの境界コアとの間の：データの自動移動をさせるデータ移動命令；および集積回路アレイの複数のアレイコアによって実行される複数の計算を定義する計算命令を提供するディスパッチコントローラを含む。
【００２０】
一つの態様において、回路は、データ移動命令を提供するディスパッチコントローラを含み、データ移動命令は：集積回路の中でデータの自動移動を定義し；およびデータが予め定められたデータフロースケジュールに従った１つまたは複数の境界コアに提供されない場合、予め定められた一定の値まで複数の境界コアの１つまたは複数の境界コアをセットする、データフロースケジュールを含む。
【００２１】
一つの態様において、データフロースケジュールは、複数の周囲コントローラの１つまたは複数によって実行可能なメモリアドレスのスケジュールを含む。
【００２２】
一つの態様において、回路は、複数のアレイコアのそれぞれのために計算命令を提供する計算命令ジェネレータ回路を含むディスパッチコントローラ；および集積回路の中でデータの予め定められた移動を定義するデータフロースケジュールを提供するデータ移動ジェネレータ回路、を含む。
【００２３】
一つの態様において、回路は、同報通信バスの第１の入力端子にて１つまたは複数の周囲コントローラと電気的通信して、および同報通信バスの複数の出力端子にて複数のアレイコアのサブセットと電気的通信して配列された同報通信バスを含む。
【００２４】
一つの態様において、複数のアレイコアのそれぞれは、複数アレイコアおよび複数の境界コアの１つまたは複数を含む隣接したコアと双方向通信して配列される。
【図面の簡単な説明】
【００２５】
【図１】本出願の１つまたは複数の態様に従ったシステム100の図面を図示する。
【００２６】
【図１Ａ】本出願の１つまたは複数の態様に従ったシステム100の注釈付図面を図示する。
【００２７】
【図２】本出願の１つまたは複数の態様に従った集積回路アレイ105のセグメントの詳細な図面を図示する。
【００２８】
【図３】本出願の１つまたは複数の態様に従った集積回路コントローラの図面を図示する。
【発明を実施するための形態】
【００２９】
好ましい態様の説明
本出願の好ましい態様の以下の記述は、これらの好ましい態様に発明を限定することを意図せず、しかしむしろ任意の当業者がこれらの発明を作製し、および使用できることを意図する。
【００３０】
I.概要
背景部門において上記のように、集積回路アーキテクチャにおける技術水準は、ロボット工学および自立型機械の知覚処理タスクの多数を扱うための適切な解決法を欠いている。GPUがさらなるおよび／または異なる回路で修正されてロボット工学および自立型機械のこれらの知覚処理要求のいくつかを行うかもしれないが、GPUの処理能力に有意なギャップが存在し、その結果生じる性能は低く、およびリアルタイムでない。その他の知覚処理回路が存在し得るし、ニューラルネットワーク特定のプロセッサ、計算機視覚特定のプロセッサなどを含む場合もある。しかし、これらのいずれも、センサ獲得、センサーフュージョン、知覚処理、経路計画などのために必要とされる多くの異なる知覚アルゴリズムおよび計算を処理することができる単一の包括的集積回路を提供しない。
【００３１】
したがって、本出願の１つまたは複数の態様は、知覚アルゴリズム、知覚データ（たとえば、センサデータ、観察データなど）並びにロボット工学および自立型機械の種々の知覚処理要求を処理するための包括的な最適化された計算プラットフォームを提供するように機能する。好ましい態様において、最適化された計算プラットフォームは、高性能およびリアルタイム処理高密度アルゴリズム処理装置（DAPU）および／または知覚処理装置（PPU）として実行され得る。１つまたは複数の実行において、本出願の種々の態様において開示される集積回路は、複数の異なる処理エレメントおよびデータフローを有するアレイコア並びにアレイコア内の処理エレメントの多くの組み合わせの中の、およびその間のデータの移動を可能にするメッシュアーキテクチャを形成するように作動するストレージエレメントを含む。
【００３２】
アレイコアにおける複数の処理エレメントによって定義されるメッシュアーキテクチャは、好ましくはインメモリ計算を可能にし、および通信およびデータ処理待ち時間を軽減させる。
【００３３】
II.高密度アルゴリズム処理集積回路のシステムアーキテクチャ
図1〜1Aに示したように、知覚処理および／または任意の適切なタイプのデータ処理を行うための集積回路100（たとえば、高密度アルゴリズム処理回路および／または知覚処理装置）は、複数のアレイコア110、複数の境界コア120、ディスパッチャ（メインコントローラ）130、第１の複数の周囲コントローラ140、第２の複数の周囲コントローラ150およびメインメモリ160を含む。加えて、集積回路100は、第１の周囲ロードストア145、第２の周囲ロードストア155、第１の周囲メモリ147、第２の周囲メモリ157、第１の複数のデュアルFIFO 149および第２の複数のデュアルFIFO 159を含んでもよい。
【００３４】
集積回路100は、好ましくは知覚データおよび／またはセンサデータのリアルタイムおよび高計算効率を可能にするように機能する。集積回路100の一般的な構成は、大きなレジスタファイルをそれぞれ有する中心シグナルおよびデータ処理ノードを定義する複数のアレイコア110を含み、これらはメモリからの処理のためにデータを取り出す、およびプッシュするためにアレイコア110によって要求されたクロックサイクルを除去し得る、または有意に減少させ得る。ディスパッチャ130の能力を生成する命令（すなわち、計算およびデータ移動命令）は、集積回路100を介して、およびすなわち複数のアレイコア110および境界コア120の中でデータの継続およびフローを可能にするように機能する。
【００３５】
アレイコア110は、好ましくはデータまたはシグナル処理ノード（たとえば、小さなマイクロプロセッサ）または処理回路として機能し、および好ましくは、大きなデータストレージ容量（たとえば4キロバイト（KB）またはより大きいなど）および整数二進数における演算およびビットごとの操作を行う論理演算装置（ALU）118または任意の適切なデジタル電子回路を有するレジスタファイル112を含む。好ましい態様において、アレイコア110のレジスタファイル112は、アレイコア110の処理回路が直接アクセスを有し得るメモリエレメントのみでもよい。アレイコア110は、複数の境界コア120および複数のアレイコア110によって定義されるアレイコアおよび／または集積回路アレイ105（すなわち、コアメッシュ）の外側でメモリに間接的なアクセスを有してもよい。
【００３６】
アレイコア110のレジスタファイル112は、任意の適切なメモリエレメントまたは装置であってもよいが、好ましくは１つまたは複数のスタティックランダムアクセスメモリ（SRAM）を含む。レジスタファイル112は、アレイコア110による処理のための十分に大きなデータセットのストレージを可能にする1024のレジスタなどの多くのレジスタを含んでもよい。したがって、それぞれのアレイコア110の中で大きなレジスタファイル112の配列によって達成される技術的利益は、大きなレジスタファイル112が、処理のためにデータをそのレジスタファイル112に取り込む、およびロードするためにアレイコア110による要求を減少させるということである。結果として、メモリへのデータのプッシュおよびそれからのデータの取り出しをアレイコア112によって要求されるいくつかのクロックサイクルは、有意に減少され、または完全に除去される。すなわち、アレイコア110が処理するようにスケジュールされている全てではないにしてもほとんどのデータが、アレイコア110の処理回路（たとえば、１つまたは複数のMAC、ALUなど）のすぐ隣に位置するので、大きなレジスタファイル112は、アレイコア110によって行われる計算の効率を上昇させる。たとえば、ニューラルネットワークアルゴリズム（類）またはアプリケーション（類）（たとえば、たたみ込みニューラルネットワークアルゴリズムなど）を使用して集積回路100または関連したシステムによってイメージ処理を実行するときに、アレイコアの大きなレジスタファイル112は、要求される全てのイメージデータのストレージが全てのイメージを処理することを可能にするように機能し得る。したがって、いくつかの態様において、ニューラルネットワーク実行（または類似の計算負荷の高いアプリケーション）のほとんどの、またはもしそうでなければ全ての層データは、ニューラルネットワークアルゴリズム（類）の重みまたは係数を除いてアレイコア110の大きなレジスタファイル112に局所的に格納されてもよい。したがって、これにより、アレイコア110が常にレジスタファイル112のデータを頻繁に処理することによってアレイコア110の計算および／または処理エレメント（たとえば、１つまたは複数のMACおよびALU）の最適に利用することができ、アレイコアからはずれたデータソース（たとえば、メインメモリ、周囲メモリなど）からのデータの取り込みおよびロードを制限する。
【００３７】
比較すると、GPUなどによって実行される従来のシステムにおいてレジスタファイルをトラバースするためには、メモリアドレスがメモリからデータを取り込むために発行されることが典型的には必要とされる。しかし、大きなレジスタファイル112を実行する好ましい態様において、レジスタファイル112の中の（生）入力データは、レジスタファイル112から自動的にインクリメントされてもよく、および隣接したコア（類）（たとえば、アレイコアおよび／または境界コア）からのデータは、レジスタファイル112に連続的に供給されてアレイコア110による要求（またはメモリアドレスを発行すること）が明確になされる必要なくアレイコア110の計算エレメントへの連続的フローを可能にする。特に、本出願の１つまたは複数の態様において、連続フローレジスタポインタを可能にすることにより、極めて効率的に大きなレジスタファイル112をトラバースするように同時に遅延処理し、および自動インクリメントしてもよい。
【００３８】
本出願のいくつかの態様において、予め定められたデータフロースケジュールは、集積回路アレイ105の中の構成要素によるデータに対する要求を軽減し、または完全に排除してもよい一方、種々のこれらの態様において、従来のランダムメモリアクセスは、米国仮出願第62/802,346号に記載されているように、集積回路アレイ105の構成要素によって達成してもよく、これは参照によってその全体が本明細書に援用される。すなわち、アレイコア110または境界コア120が処理のためにデータのランダムな断片に対する要求を認識する場合、アレイコア110および／または境界120は、集積回路100の記憶階層の中のメモリエレメントのいずれかからのデータに対して具体的要求（すなわち、メモリアドレスを発行する）をしてもよい。
【００３９】
加えて、またはあるいは、アレイコア110は、複数の乗算（乗算）アキュムレータ（MAC）114または乗算および加算関数を行うことができるであろう任意の適切な論理装置もしくはデジタル回路を含んでいてもよい。好ましい態様において、それぞれのアレイコア110は、四（4）つのMACを含み、およびそれぞれのMAC 114は、図2に例として示したように長方形のアレイコア110の特定の側に、またはその近くに配列してもよい。好ましい態様において、アレイコア110の複数のMAC 114のそれぞれは、アレイコア110のそれぞれの側の近くに、またはそこに配列してもよい一方で、複数のMAC 114をアレイコア110のそれぞれの角に含む任意の適切な配列、パターン、位置などにおけるアレイコア110の中で配列し（またはおそらくアレイコアの周囲に増大し）てもよいことは公知であるはずである。好ましい態様において、アレイコア110の側に沿った複数のMAC 114の配列により、直接隣接したコア（すなわち、近接する隣接したコア）の１つまたは複数から受信した入力データの効率的な流入または収集および集積回路100のアレイコア110によるその計算を可能になる。すなわち、複数のMAC 114のそれぞれは、直接隣に配列しても、またはアレイコア110のデータポート（または同様のもの）と直接電気的通信して配列してもよい。したがって、このような態様において、アレイコア110が、アレイコア110の最も北側、最も東側、最も南側、および最も西側のそれぞれのデータポートを含む場合、それぞれのデータポートは、それぞれのポートの１つと直通通信している異なるMAC 114を対応して有してもよい。この方法において、それぞれのデータポートにて到着するデータは、計算のためにMAC 114に直接伝達されてもよく、および同様に、MAC 114によって計算されたデータは、もう一つの部位またはアレイコア114への伝達のためのデータポートへ直接出力されてもよい。
【００４０】
したがって、アレイコア110の中に配置される複数のMAC 114のそれぞれは、集積回路100の中の隣接したコア（たとえば、アレイコア、境界コアなど）との直接通信能力を有するように機能してもよい。加えて、複数のMAC 114は、アレイコア110の大きなレジスタファイル112から供給されるデータ（たとえば、演算数）を使用する計算を実行するように機能してもよい。しかし、複数のMAC 114は、好ましくはこれらのそれぞれの隣接したコア（類）の１つまたは複数および／または１つまたは複数のメモリエレメント（たとえば、メインメモリ160または同様のもの）または１つまたは複数の入力供与源からの１つまたは複数のアルゴリズム（機械学習アルゴリズムを含む）の係数または重み入力を移動するように機能する重みまたは係数（定数）バス116から計算を実行するためのデータを供与するように機能する。
【００４１】
重みまたは同報通信バス116は、重みバス116の第１の入力端子にて周囲コントローラ140、150の少なくとも１つまたは複数と電気通信して作動可能に置かれてもよく、および加えて重みバス116の１つまたは複数の出力端子にて複数のアレイコア110の１つまたは複数と作動可能におよび／または電気的に接続してもよい。このような方法で、重みバス116は、１つまたは複数の周囲コントローラ140、150から入力された重みおよび係数データを収集し、および複数のアレイコア110の１つまたは複数に直接入力された重みおよび係数データを伝達するように機能してもよい。したがって、いくつかの態様において、複数のアレイコア110は、重みバス116を介して重みおよび／または係数データ入力が送られ、並行してこれによりアレイコア110の計算の速度を改善し得る。
【００４２】
それぞれのアレイコア110は、好ましくはその直接隣接するものと双方向に通信するように機能する。すなわち、いくつかの態様において、それぞれのアレイコア110は、長方形または任意の(ay)適切な多角形形状を有する処理ノードとして構成され、その結果処理ノードのそれぞれの側が、アレイコア110の4つの側の１つまたは表面のそれぞれの隣に配置されるもう一つのノード（たとえば、もう一つの処理ノード、データストレージ/移動ノードなど）と相互作用することができてもよいように配列してもよい。アレイコア110がその側のそれぞれに沿って隣接したコアと双方向に通信する能力により、アレイコア110がその隣接するもののいずれかからデータを取り出すこと、並びに（処理された、または生の）データをその隣接するもののいずれかにプッシュすることが可能になる。これは、集積回路100のアレイコア110および境界コア120の収集全体にわたるデータの効率的な移動を可能にするメッシュ通信アーキテクチャを可能にする。
【００４３】
複数の境界コア120のそれぞれは、好ましくはレジスタファイル122を含む。レジスタファイル122は、レジスタファイル122が大きなデータセットを格納するように機能し得るアレイコア110のレジスタファイル112と同様に構成されてもよい。好ましくは、それぞれの境界コア120は、アレイコア110と比較したときに単純化されたアーキテクチャを含む。したがって、いくつかの態様における境界コア120は、実行能力を含まなくてもよく、およびしたがって、アレイコア110の多くにおいて提供されるように乗算アキュムレータおよび／または論理演算装置を含まなくてもよい。
【００４４】
従来の集積回路（たとえば、GPUまたは同様のもの）において、処理のために受信された入力イメージデータ（または任意のその他の適切なセンサデータ）がこのような回路の中で負荷の高いアプリケーション（たとえば、ニューラルネットワークアルゴリズム）を計算するときに、入力イメージデータに基づいたイメージ値（たとえば、ピクセル値）を含まない回路の中の領域に埋込み要求を発行することが必要であり得る。すなわち、イメージ処理または同様のものの間、従来の集積回路は、任意のイメージデータ値を含まないメモリエレメントからイメージ処理を行うように機能してもよい。このような例において、従来の集積回路は、ゼロなどの埋込み値がメモリエレメントに付加されてイメージデータ値を伴わないメモリエレメントにおけるその後のイメージ処理労力を回避することを要求するように機能してもよい。従来の集積回路によるこの典型的なイメージデータ処理の結果は、従来の集積回路によるイメージ処理または同様のもののために、空白のメモリエレメントを同定すること、およびメモリエレメントに対して計算できる値を付加することに費やされる多数のクロックサイクルを生じる。
【００４５】
集積回路100の好ましい実施態様において、複数の境界コア120の１つまたは複数は、入力データ（たとえば、入力センサデータ）が受信されない時にデフォルト値に自動的にセットするように機能してもよい。たとえば、センサ（またはもう一つの回路層）からの入力イメージデータは、集積回路アレイ105の全ての境界コアセルを占めるわけではない総イメージデータサイズを有してもよい。このような例において、入力イメージデータを受信すると、入力イメージデータを伴わない１つまたは複数の境界コア120（すなわち、境界コアセル）をゼロまたはゼロ以外の一定の値などのデフォルト値に自動的にセットしてもよい。
【００４６】
いくつかの態様において、ディスパッチャによって生成され、および複数の境界コア120の１つまたは複数に送信される予め定められた入力データフロースケジュールは、デフォルトまたは予め定められた一定の値にセットするように命令を含んでもよい。加えて、またはあるいは、１つまたは複数の境界コア120は、入力センサデータまたは同様のものが集積回路アレイ105に予め定められた入力データフローで受信されないことが検出されるときに、デフォルトまたは予め定められた値に自動的にセットされてもよい。加えて、またはあるいは、一つのバリエーションにおいて、１つまたは複数の境界コア120は、入力センサデータまたは同様のものが集積回路アレイ105に予め定められた入力データフローで受信されないことが検出されるときに、入力センサデータを有する１つまたは複数のその他の境界コアの値を反映するように自動的にセットされてもよい。
【００４７】
したがって、自動埋込みエレメントとして複数の境界コア120の１つまたは複数の実行に従って達成される技術的利益は、自動埋込み値がセットされた入力センサデータの関心領域（または周囲領域）に対する作業要求を最小限にすることによって複数のアレイコア110の１つまたは複数による計算における効率を上昇させることを含み得る。これにより、入力データセットに対して計算を行う際に複数のアレイコア110によって使用されるクロックサイクルを減少させる。
【００４８】
集積回路100の好ましい実施態様において、処理のための複数のアレイコア110および複数の境界コア120へのデータの進行は、好ましくはディスパッチャ130にて生成される予め定められたデータフロースケジュールに基づく。予め定められたデータフロースケジュールは、１つまたは複数の供与源（たとえば、センサ、その他のNN層、上流の装置など）からの入力データが境界コア120および／またはアレイコア110からの入力データについて明示的な要求を必要とすることなく（たとえば、メモリアドレスを発行せずに）境界コア120およびアレイコア110にロードされることを可能にする。すなわち、予め定められたデータフロースケジュールは、オンチップまたはオフチップメモリなどの集積回路100のメモリエレメント（たとえば、メインメモリ160）から処理のためにデータを受信する容量を有する複数の境界コア120および複数のアレイコア110への生データの自動フローを可能にする。たとえば、アレイコア110がそのレジスタファイル112において格納されるデータロードのデータの第１のサブセットを処理するように機能しない場合において、一旦データの第１のサブセットの処理の結果が完成し、およびアレイコア110から送信されると、予め定められたデータフロースケジュールは、アレイコア110の中に生データの自動フローを可能にし、これによりレジスタファイル112にてデータロードに付加し、およびアレイコア110によって以前に処理されたデータの第１のサブセットを置換するように機能してもよい。したがって、このような例において、処理のためのさらなる生データのための明示的な要求は、アレイコア110から要求されない。むしろ、ディスパッチャ130を実行する集積回路100は、一旦アレイコア110がそのレジスタファイル112（または他の場所）から供給されたある程度のデータを処理したら、アレイコア110が処理のためにさらなるデータを受け入れるためのさらなる容量を有し得ることを認識するように機能してもよい。予め定められたデータフロースケジュールは、加えて集積回路アレイ105の中で、並びに集積回路アレイ105から処理されたデータの自動フローを可能にするように機能してもよいことは明確に注目されるべきである。
【００４９】
ディスパッチャ130は、集積回路100の種々の回路および／または構成要素（たとえば、アレイコア計算）によって行われるスケジュールされた計算または実行を含む命令を作製し、およびさらに、好ましくは集積回路100を介した入力データのフローの制御を可能にする命令を作製するように機能する処理回路（たとえば、マイクロプロセッサまたは同様のもの）を含む。いくつかの態様において、ディスパッチャ130は、命令の部分を実行し、および命令のもう一つの部分を集積回路アレイ105の中にロードするように機能してもよい。一般に、ディスパッチャ130は、集積回路100のメモリから１つまたは複数のその他のストレージおよび／または処理回路までの（および逆もまた同じ）データへのアクセスまたはそのフロー（移動）を制御し、および管理する集積回路100の一次コントローラとして機能してもよい。加えて、ディスパッチャ130は、種々のサブコントローラ（たとえば、周囲コントローラなど）および複数のアレイコア110の実行操作を制御するように機能してもよい。
【００５０】
図3に例として示したように、いくつかの態様において、ディスパッチャ130の処理回路は、それぞれ、計算/実行命令およびデータ転送/移動スケジュールまたは命令を独立して生成し得る計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134（たとえば、アドレス生成装置またはアドレス計算装置）を含む異なる回路を含む。したがって、この構成は、ディスパッチャ130が同時にデータアドレス計算および計算/実行命令の生成を行うことを可能にする。ディスパッチャ130は、計算機命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134の両方から異なる出力を組み合わせる単一の命令合成への出力を合成するように機能してもよい。
【００５１】
ディスパッチャ130によって生成された単一の命令合成は、１つまたは複数の下流の構成要素および集積回路アレイ105に提供し、および計算または処理命令およびデータ転送/移動命令を集積回路100のこれらの種々の回路または構成要素によって同時に行わせてもよい。集積回路アレイ105に関して、単一の命令合成のデータ移動構成要素は、周囲コントローラ140、150の１つまたは複数によって行われ、および複数のアレイコア110の１つまたは複数によって命令を計算してもよい。したがって、このような態様において、周囲コントローラ140、150は、命令のデータ移動構成要素を復号化するように機能してもよく、および含まれる場合、デュアルFIFO 149、159からの読込み操作を行い、およびデータバス上のデュアルFIFO 149、159から集積回路アレイ105まで（または逆もまた同じ）そのデータを移動してもよい。
【００５２】
計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134は、好ましくは別々の、または独立した回路である一方、いくつかの態様において、計算命令ジェネレータ回路132およびデータ移動命令ジェネレータ回路134は、計算命令生成およびデータ移動命令生成の両方を行うように機能する単一の回路によって実行されてもよいことは留意されるべきである。
【００５３】
操作において、ディスパッチャ130は、周囲ロードストア145および周囲ロードストア155の１つまたは複数の中にロードされるメモリアドレスを生成し、およびスケジュールするように機能してもよい。周囲ロードストア145、155は、ディスパッチャ130から全てのロードおよびストア命令を実行するように機能し、およびメモリからデータをロードする、または取り込む、または集積回路アレイコア105からメモリへデータを格納するように一般に機能し得る特化した実行装置を好ましくは含む。第１の周囲ロードストア145は、好ましくは伝達可能なように、および作動可能に第１の複数のデュアルFIFO 149および第１の周囲メモリ147の両方とインタフェースする。第１および第２の周囲メモリ147、157は、オンチップスタティックランダムアクセスメモリを好ましくは含む。
【００５４】
この構成において、第１の周囲ロードストア145は、第１の周囲ロードストア145が第１の複数のデュアルFIFO 149のすぐ次に、またはそれの後に配置されるように、第１の複数のデュアルFIFO 149と第１の周囲メモリ147との間に配列されてもよい。同様に、第２の周囲ロードストア155は、第２の複数のデュアルFIFO 159および第２の周囲メモリ157の両方と好ましくは伝達可能なように、および作動可能にインタフェースする。したがって、第２の周囲ロードストア155は、第２の周囲ロードストア155が第２の複数のデュアルFIFO 159のすぐ次に、またはそれの後に配置されるように、第２の複数のデュアルFIFO 159と第２の周囲メモリ157との間に配列されてもよい。
【００５５】
第１および第２の周囲ロードストア145、155の１つまたは複数に対してディスパッチャ130によって発行されるメモリアドレス指定命令に応答して、第１および第２の周囲ロードストア145、155は、第１の周囲メモリ147および第２の周囲メモリ157の１つからデータを取り出し、および第１および第２の複数のデュアルFIFO 149、159の１つまたは複数の中に取り出されたデータを移動するように命令を実行するように機能してもよい。加えて、またはあるいは、デュアルFIFO 149、159は、データバスからデータを読み込むように機能しても、およびそれぞれのデュアルFIFOの１つまたは複数に読込みデータを移動しても、またはデュアルFIFOの１つまたは複数からデータを読み込んでも、および読込みデータをデータバスに移動してもよい。同様に、メモリアドレス指定命令は、第１および第２の周囲ロードストア145、155の１つまたは複数に第１および第２の周囲メモリ147、157の１つに複数のデュアルFIFO 149、159の１つまたは複数から収集されるデータを移動させてもよい。
【００５６】
第１の複数のデュアルFIFO 149のそれぞれおよび第２の複数のデュアルFIFO 159のそれぞれは、少なくとも２つのメモリエレメントを好ましくは含む（図示せず）。好ましくは、第１の複数のデュアルFIFO 149は、集積回路アレイ105の列と整列させられているデュアルFIFO 149の第１の複数のそれぞれと集積回路アレイ105の第１の側に沿って配列してもよい。同様に、第２の複数のデュアルFIFO 159は、集積回路アレイ105の列と整列させられている第２の複数のデュアルFIFO 159のそれぞれと集積回路アレイ105の第２の側に沿って配列してもよい。この配列は、好ましくは集積回路アレイ105の第１の側に沿ってそれぞれの境界コア120が伝達可能なように、および作動可能に第１の周囲コントローラ145の少なくとも１つとインタフェースできるようにし、および集積回路アレイ105の第２の側に沿ったそれぞれの境界120が伝達可能なように、および作動可能に第２の周囲コントローラ155の少なくとも１つとインタフェースできるようにする。
【００５７】
少なくとも図１〜１Ａにおいて、第１および第２の複数のデュアルFIFO、第１および第２の周囲コントローラ、第１および第２の周囲メモリ、並びに第１および第２のロードストアがあることを図示したが、これらの構造は、例として、これらの構成要素が集積回路アレイ105の全ての（4つの）側に沿って配列されるように、集積回路アレイ105の全ての周囲を囲むように配列してもよいことに留意すべきである。
【００５８】
デュアルFIFO 149、159は、好ましくはこれらのそれぞれの側からデータのために特定の命令に反応するように機能する。すなわち、デュアルFIFO 149、159は、集積回路アレイ105の第１の側に沿った第１の複数のデュアルFIFO 149または第２の側に沿った第２の複数のデュアルFIFO 159のいずれかに特定であるディスパッチャ130からのデータ移動命令を同定するように構成されてもよい。
【００５９】
第１の実行に従って、デュアルFIFOのそれぞれは、第１の２つのメモリエレメントを使用してデータを集積回路アレイ105の中にプッシュしても、および第２の２つのメモリエレメントを使用してデータを集積回路アレイ105から取り出してもよい。したがって、それぞれのデュアルFIFO 149、159は、集積回路アレイ105の内部へのデータの移動のための専用の第１のメモリエレメントおよび集積回路アレイ105から外部へのデータの移動のための専用の第２のメモリエレメントを有してもよい。すなわち、この第１の実施態様において、デュアルFIFOの第１のメモリエレメントは、集積回路アレイ105の境界コアの中にデュアルFIFOからデータをロードするように機能してもよい。逆に、デュアルFIFOの第２のメモリエレメントは、集積回路アレイ105の境界コアの中で移動するデータを収集するように好ましくは機能する。いくつかの態様において、潜在的にデータバスまたは同様のものを経て、境界コアを迂回することによってアレイコアからデュアルFIFOの第１および第２のメモリエレメントによってデータをロードする、および／またはデータを収集することができ得ることに留意すべきである。
【００６０】
第２の実施態様に従って、デュアルFIFOは、それぞれのデュアルFIFOが予め定められた配列または順序で集積回路アレイ105の中にデータを提供し、およびデータが集積回路アレイ105の中に供給された同じ予め定められた配列または順序で集積回路アレイ105からデータを収集するように機能するスタック（第２）様式において操作されてもよい。この第２の実施態様において、各それぞれのデュアルFIFOの中のデータは、先入れ先出し方式で扱われてもよく、および各それぞれのデュアルFIFOは、それ自体で、先入れ先出し方式でデータをロードし、および／または収集するために実行してもよい。加えて、またはあるいは、各それぞれのデュアルFIFOを操作するもう一つの様式において、各それぞれのデュアルFIFOの中のデータは、後入れ先出し方式で扱われてもよく、および同様に同じ様式でデータをロードするために実行しても、および／または収集してもよい。加えて、またはあるいは、各それぞれのデュアルFIFOは、上述したモードの組み合わせを含むその他のモードにおいて、並びにランダムアクセスモードにおいて指定してもよい。
【００６１】
加えて、集積回路100は、好ましくは単一の統合メモリを含むメインメモリ160を含む。メインメモリ160は、好ましくは１つまたは複数のセンサから発信しているデータ、システム由来の、または生成されたデータ、１つまたは複数の集積回路層からのデータ、１つまたは複数の上流の装置または構成要素などからのデータを格納するように機能する。好ましくは、メインメモリ160は、オンチップスタティックランダムアクセスメモリまたは同様のものを含む。
【００６２】
加えて、またはあるいは、メインメモリ160は、オンダイ（オンチップ）メモリの複数のレベルを含んでもよい。このような態様において、メインメモリ160は、互いに電気通信し得る複数のメモリ（たとえば、SRAM）エレメントおよび集積回路アレイ105と同じダイ上に配列される単一の統合メモリとしての機能を含んでもよい。
【００６３】
加えて、またはあるいは、メインメモリ160は、オフダイ（オフチップ）メモリ（図示せず）の複数のレベルを含んでもよい。このような態様において、メインメモリ160は、互いに電気通信し得る複数のメモリ（たとえば、DDR SRAM、高帯域メモリ（HBM）など）エレメントおよび集積回路アレイとは別のダイ上に配列される単一の統合メモリとしての機能を含んでもよい。
【００６４】
いくつかの態様において、集積回路100は、オンダイおよびオフダイで配列されるメモリを含むメインメモリ160を含むことに留意すべきである。このような態様において、メインメモリ160のオンダイおよびオフダイメモリは、集積回路100のオンダイの構成要素にアクセス可能な単一の統合メモリとして機能してもよい。
【００６５】
第１の周囲メモリ147および第２の周囲メモリ157のそれぞれは、メインメモリ160の中に移植してもよい。第１の周囲メモリ147とメインメモリ160との間に、第１の周囲メモリ147がメインメモリ160からデータを取り込むことを可能にするロードストア装置を配列してもよい。同様に、第２の周囲メモリ157とメインメモリ160との間に、第２の周囲メモリ157がメインメモリ160からデータを取り込むことを可能にする第２のロードストア装置を配列してもよい。
【００６６】
デュアルFIFO 149、159とロードストア145、155との間、ロードストア145、155と周囲メモリ147、157との間および周囲メモリ147、157とメインメモリ160に生じる集積回路100の記憶階層に沿ったデータ転送は、メモリエレメントおよびロードストアがディスパッチャ130またはいくつかの主な処理回路の直接介入を伴わずに記憶階層の中で独立してデータにアクセスし、および転送することを使用可能にする予めスケジュールされた、または予め定められた直接メモリアクセス（DMA）転送として好ましくは実行してもよいことに留意すべきである。加えて、集積回路100の記憶階層の中のデータ転送は、２つのカウントおよび２つのストライドを有する二次元の（2D）DMA転送として実行してもよく、これにより記憶階層の中および記憶階層と集積回路アレイ105との間の転送の間の効率的なデータアクセスおよびデータ再構築が可能になる。好ましい態様において、DMAデータ転送は、複数のアレイコア110の１つまたは複数の状態または操作によってトリガーされ得る。たとえば、アレイコアがデータの第１のセットの処理を完了する、または完了した場合、完了またはほぼ完了により、DMA転送をトリガーしてさらなるデータを処理のために集積回路アレイ105に入るようにさせてもよい。
【００６７】
好ましい態様およびその変化のシステムおよび方法は、少なくとも部分において、コンピュータ可読命令を格納するコンピュータ可読媒体を受信するように構成された機械として実施することができ、および／または実行することができる。命令は、システムと好ましくは組み込まれるコンピュータ実行可能構成要素およびプロセッサおよび／またはコントローラの１つまたは複数の部分によって好ましくは実行される。コンピュータ可読媒体は、RAM、ROM、フラッシュメモリ、EEPROM、光学的装置（CDまたはDVD）、ハードドライブ、フロッピードライブまたは任意の適切な装置などの任意の適切なコンピュータ可読媒体において格納することができる。コンピュータ実行可能構成要素は、好ましくは一般的な、またはアプリケーション特定のプロセッサであるが、任意の適切な専用ハードウエアまたはハードウエア/ファームウェア組み合わせ装置は、命令をあるいは、またはさらに実行することができる。
【００６８】
簡潔さのために省略したが、好ましい態様は、本明細書に記述したシステムおよび方法の実行のあらゆる組み合わせおよび並べ替えを含む。
【００６９】
当業者は、以前の詳細な説明から、並びに図および特許請求の範囲から認識するであろうため、以下の特許請求の範囲に定義した本発明の要旨を逸脱しない範囲で本発明の好ましい態様に対して変更および改変を行うことができる。
【図１】
2021515339.tif 000003
【図１Ａ】
2021515339.tif 000004
【図２】
2021515339.tif 000005
【図３】
2021515339.tif 000006
【国際調査報告】
2021515339.tif 000007