(57)【要約】  集積回路内でデータを伝播するシステムおよび方法は、入力データセットの異なるデータサブセットの粗データ伝播経路を識別することであって、異なるデータサブセットに対してコア間データ移動を設定することであって、コア間データ移動が、集積回路の集積回路アレイの複数のコアのうちの２つ以上間の所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、各子となるデータサブセットの粒状データ伝搬経路を識別することであって、各異なるデータサブセットに対してコア内データ移動を設定することであって、コア内データ移動が、集積回路の集積回路アレイの複数のコアのうちの１つ以上内の、所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、粗データ伝播経路および粒状伝播経路のそれぞれの異なるサブセットのための粒状データ伝播経路を識別することと、粗データ伝搬経路と粒状伝搬経路に基づいて、集積回路内の入力データセットのフローを可能にすることと、を含む。【選択図】図１
2021518591.tif 000002
【特許請求の範囲】
【請求項１】
集積回路内のデータの移動を制御する方法であって、前記方法が、
入力データセットを取得することと、
前記入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を識別することであって、前記粗データ伝播経路を識別することが、
前記複数の異なるデータサブセットの各々に対してコア間データ移動を設定することであって、前記コア間データ移動が、前記集積回路の集積回路アレイの複数のコアのうちの２つ以上間の前記複数の異なるデータサブセットの所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、
前記入力データセットの前記複数の異なるデータサブセットの各々の粒状データ伝播経路を識別することであって、前記粒状データ伝播経路を識別することが、
前記複数の異なるデータサブセットの各々に対してコア内データ移動を設定することであって、前記コア内データ移動が、前記集積回路の前記集積回路アレイの前記複数のコアのうちの１つ以上内の、前記複数の異なるデータサブセットの前記所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、
前記粗データ伝播経路および前記粒状伝播経路に基づいて、前記集積回路内の前記入力データセットのフローを可能にすることと、を含む、方法。
【請求項２】
前記粗データ伝播経路および前記粒状データ伝播経路の各々が、前記集積回路の階層メモリ構造と前記集積回路の前記集積回路アレイとの間のデータの伝播を管理する所定のデータフロースケジュールに基づいて定義される、請求項１に記載の方法。
【請求項３】
前記集積回路アレイが、
複数のアレイコアであって、前記複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、
複数のボーダーコアであって、前記複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、
前記複数のアレイコアが、前記複数のボーダーコアとは異なる、請求項２に記載の方法。
【請求項４】
前記階層メモリ構造が、メインメモリと前記集積回路アレイとの間の直接メモリアクセスを可能にし、前記階層メモリ構造は、
各々が前記集積回路アレイとインターフェースし、先入れ先出しベースでデータを送信および受け取る複数のデュアルＦＩＦＯと、
各々が前記複数のデュアルＦＩＦＯのそれぞれのデュアルＦＩＦＯとインターフェースし、かつ前記それぞれのデュアルＦＩＦＯから受信され、および／または前記それぞれのデュアルＦＩＦＯへのロードを保留しているかのいずれかであるデータの１つ以上のロードを記憶する複数の周辺ロードストアと、
各々が前記複数の周辺ロードストアのそれぞれの周辺ロードストアとインターフェースし、かつ前記メインメモリとインターフェースする複数の周辺メモリと、を含む、請求項２に記載の方法。
【請求項５】
前記入力データセットの属性および前記集積回路アレイのアーキテクチャに基づいて、データ移動命令を生成することをさらに含み、
前記データ移動命令が、前記入力データセットの前記複数の異なるデータサブセットの各々に対して、前記粗データ伝播経路および前記粒状データ伝播経路を定義する、請求項１に記載の方法。
【請求項６】
データ計算命令および／または実行命令を生成することと、
データ移動命令の組み合わせを、データ計算命令および実行命令のうちの１つ以上の命令と共に含む単一の命令のセットを生成することと、をさらに含む、請求項５に記載の方法。
【請求項７】
データ移動命令を生成することが、
前記集積回路アレイの所定の構成に基づいて、前記入力データセットから前記複数の異なるデータサブセットの各々を識別することを含み、前記複数の異なるデータサブセットの各々を識別することが、
前記入力データセットを、前記集積回路アレイの前記所定の構成に適合するように前記複数の異なるデータサブセットに分割することを含む、請求項５に記載の方法。
【請求項８】
前記入力データセットの前記複数の異なるデータサブセットの各々に、所与の粗データ伝播経路を関連付けることと、
前記入力データセットの前記複数の異なるデータサブセットの各々に、所与の粒状データ伝播経路を関連付けることと、をさらに含む、請求項５に記載の方法。
【請求項９】
前記複数の異なるデータサブセットの各々の前記粗データ伝播経路が、前記複数の異なるデータサブセットの各々の少なくとも開始位置、および前記複数の異なるデータサブセットの各々の終端位置を定義する、請求項１に記載の方法。
【請求項１０】
前記複数の異なるデータサブセットの各々の前記粒状データ伝播経路が、前記開始位置と前記終端位置との間で発生する中間進行位置を定義する、請求項９に記載の方法。
【請求項１１】
前記複数の異なるデータサブセットの各々の前記粒状伝播経路が、１つ以上のデータ回転命令を含む一連のデータ移動を含み、前記１つ以上のデータ回転命令は、実行されるとき、前記複数の異なるデータサブセットの所与のデータサブセットを、前記複数のコアのうちのコアの第１のデータポートから前記コアの１つ以上の別個のデータポートへと回転様式で移動させる、請求項１に記載の方法。
【請求項１２】
前記１つ以上のデータ回転命令が、前記コア内の前記所与のデータサブセットの初期位置から測定して０度〜３６０度および／または０度〜マイナス３６０度の回転度として定義される特定の回転度値として定義される１つ以上の異なる回転値を含む、請求項１１に記載の方法。
【請求項１３】
所与のデータサブセットの一連のデータ移動の各データ移動が、実行するために単一のクロックサイクルのみを必要とする、請求項１２に記載の方法。
【請求項１４】
前記複数の異なるデータサブセットの各々の前記粗データ伝播経路および前記粒状データ伝播経路が、前記複数のコアによってメモリアドレスを発行することなく実施される、請求項１に記載の方法。
【請求項１５】
集積回路内でデータを伝播する方法であって、前記方法が、
入力データセットを取得することと、
前記入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を実装することであって、前記粗データ伝播経路が、
前記複数の異なるデータサブセットの各々の定義されたコア間データ移動であって、前記集積回路の集積回路アレイの複数のコアのうちの２つ以上を通る、前記複数の異なるデータサブセットのうちの所与のデータサブセットの所定の進行経路を定義する、定義されたコア間データ移動を含む、実装することと、
前記入力データセットの前記複数の異なるデータサブセットの各々の粒状データ伝播経路を実装することであって、前記粒状データ伝播経路が、
前記複数の異なるデータサブセットの各々の定義されたコア内データ移動であって、前記コア内データ移動が、前記集積回路の前記集積回路アレイの前記複数のコアのうちの１つ以上内の、前記複数の異なるデータサブセットの前記所与のデータサブセットの所定の進行経路を定義する、定義されたコア内データ移動を含む、実装することと、
前記粗データ伝播経路および前記粒状伝播経路に基づいて、前記集積回路内の前記入力データセットのフローを実行することと、をさらに含む、方法。
【請求項１６】
前記粗データ伝播経路および前記粒状データ伝播経路の各々が、前記集積回路の階層メモリ構造と前記集積回路の前記データ処理回路との間のデータの伝播を管理する所定のデータフロースケジュールに基づいて定義される、請求項１５に記載の方法。
【請求項１７】
前記集積回路アレイが、
複数のアレイコアであって、前記複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、
複数のボーダーコアであって、前記複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、
前記複数のアレイコアが、前記複数のボーダーコアとは異なる、請求項１５に記載の方法。
【請求項１８】
前記階層メモリ構造が、メインメモリと前記集積回路アレイとの間の直接メモリアクセスを可能にし、前記階層メモリ構造が、
各々が前記集積回路アレイとインターフェースし、かつ先入れ先出しベースでデータを送信および受け取る複数のデュアルＦＩＦＯと、
各々が前記複数のデュアルＦＩＦＯのそれぞれのデュアルＦＩＦＯとインターフェースし、かつ前記それぞれのデュアルＦＩＦＯから受信され、および／または前記それぞれのデュアルＦＩＦＯへのロードを保留しているかのいずれかのデータの１つ以上のロードのいずれかを記憶する複数の周辺ロードストアと、
各々が前記複数の周辺ロードストアのそれぞれの周辺ロードストアとインターフェースし、かつ前記メインメモリとインターフェースする複数の周辺メモリと、を含む、請求項１７に記載の方法。
【請求項１９】
集積回路内でデータを伝播する方法であって、前記方法が、
入力データセットを識別することと、
前記入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を実行することであって、前記粗データ伝播経路が、
前記複数の異なるデータサブセットの各々の定義されたコア間データ移動であって、前記コア間データ移動が、前記集積回路の集積回路アレイの複数のコアのうちの２つ以上を通じて、前記複数の異なるデータサブセットのうちの所与のデータサブセットの所定の進行経路を定義する、定義されたコア間データ移動を含む、実行することと、
前記入力データセットの前記複数の異なるデータサブセットの各々の粒状データ伝播経路を実行することであって、前記粒状データ伝播経路が、
前記複数の異なるデータサブセットの各々の定義されたコア内データ移動であって、前記集積回路の前記集積回路アレイの前記複数のコアのうちの１つ以上内の、前記複数の異なるデータサブセットの前記所与のデータサブセットの所定の進行経路を定義する、定義されたコア内データ移動を含む、実行することと、を含む、方法。
【請求項２０】
前記集積回路アレイが、
複数のアレイコアであって、前記複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、
複数のボーダーコアであって、前記複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、
前記複数のアレイコアが、前記複数のボーダーコアとは異なる、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１８年３月２８日に出願された米国仮出願第６２／６４９，５５１号の利益を主張し、その全体がこの参照により組み込まれる。
【０００２】
本明細書に記載する１つ以上の発明は、概して、集積回路分野に関し、より具体的には、集積回路分野における新しくかつ有用な高密度アルゴリズム処理集積回路アーキテクチャに関する。
【背景技術】
【０００３】
人工知能の現代的な応用、および概して機械学習は、ロボット工学、具体的には、自律型ロボット工学および自立型車両に関連する技術の革新を牽引しているように見える。また、機械知覚技術の発達により、自律型ロボット工学および自律型車両の空間における多くの実装の能力は、機械がその環境を理解することを可能にする多くの他の能力のうちの視覚、聴覚、および触覚を知覚することが可能になった。
【０００４】
これらの自律型実装に適用される基礎知覚技術は、多くの場合、自律型ロボットおよび／または自律型車両を取り囲む環境の捕捉を豊かに可能にする、多くの高度かつ能力のあるセンサを含む。しかしながら、これらの高度かつ能力のあるセンサの多くは、多くの自律型実装の物理環境の堅牢な捕捉を可能にし得るが、センサからの様々なセンサ信号データを処理するために機能し得る基礎となる処理回路は、センサ信号データの高性能かつリアルタイムの計算を可能にするのに十分な対応する堅牢な処理能力を欠いていることが多い。
【０００５】
基礎となる処理回路は、多くの場合、中央処理ユニット（ＣＰＵ）およびグラフィック処理ユニット（ＧＰＵ）を含む汎用集積回路を含む。多くの用途では、ＣＰＵではなくＧＰＵが実装されており、これは、ＧＰＵがＣＰＵに比べて大きなまたは大量の計算を実行できるからである。しかしながら、ほとんどのＧＰＵのアーキテクチャは、機械知覚技術で使用される複雑な機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズムなど）の多くを処理するために最適化されていない。例えば、自律型車両空間は、車両および人物を単に認識するだけにとどまらない複数の知覚処理ニーズを含む。自律型車両は、自律型車両の経路または経路計画を可能にするセンサデータの融合を提供する高度なセンサスイートで実装されている。しかし、現代のＧＰＵは、これらの追加の高い計算タスクを処理するために構築されていない。
【０００６】
せいぜい、ＧＰＵまたは同様の処理回路が経路計画、およびセンサ融合などを含む追加のセンサ処理ニーズを処理できるようにするために、追加のおよび／または別個の回路を従来のＧＰＵに組み立ててもよい。ロボット工学および自律型機械の追加の知覚処理ニーズを処理するためのこの断片的および部分的なアプローチは、センサ信号処理の非効率性を含む計算を実施する上で多くの非効率性をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、集積回路分野では、ロボット工学または任意のタイプまたは種類の知覚機械の知覚を可能にするためのルーチンおよび高度なセンサ信号の高性能かつリアルタイムな処理および計算が可能な高度な集積回路の必要性が存在する。
本出願に記載する発明の発明者らは、強化されたセンサデータ処理能力を可能にする集積回路アーキテクチャを設計し、ロボット工学および様々な機械の知覚を可能にするためを含むいくつかの目的のために集積回路アーキテクチャを実装するための関連方法をさらに発見した。
【課題を解決するための手段】
【０００８】
発明の概要
一実施形態では、集積回路内のデータの移動を制御する方法は、入力データセットを取得することと、入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を識別することであって、粗データ伝播経路を識別することが、複数の異なるデータサブセットの各々に対してコア間データ移動を設定することであって、コア間データ移動が、集積回路の集積回路アレイの複数のコアのうちの２つ以上間の複数の異なるデータサブセットの所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、入力データセットの複数の異なるデータサブセットの各々の粒状データ伝播経路を識別することであって、粒状データ伝播経路を識別することが、複数の異なるデータサブセットの各々に対してコア内データ移動を設定することであって、コア内データ移動が、集積回路の集積回路アレイの複数のコアのうちの１つ以上内の、データの複数の異なるサブセットの所与のデータサブセットの所定の伝播を定義する、設定することを含む、識別することと、粗データ伝播経路および粒状伝播経路に基づいて、集積回路内の入力データセットのフローを可能にすることと、を含む。
【０００９】
一実施形態では、粗データ伝播経路および粒状データ伝播経路の各々は、集積回路の階層メモリ構造と集積回路のアレイとの間のデータの伝播を管理する所定のデータフロースケジュールに基づいて定義される。
【００１０】
一実施形態では、集積回路アレイは、複数のアレイコアであって、複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、複数のボーダーコアであって、複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、複数のアレイコアが、複数のボーダーコアとは異なる。
【００１１】
一実施形態では、階層メモリ構造は、メインメモリと集積回路アレイとの間の直接メモリアクセスを可能にし、階層メモリ構造は、各々が集積回路アレイとインターフェースし、先入れ先出しベースでデータを送信および受け取る複数のデュアルＦＩＦＯと、各々が複数のデュアルＦＩＦＯのそれぞれのデュアルＦＩＦＯとインターフェースし、かつそれぞれのデュアルＦＩＦＯから受信されたデータの１つ以上のロード、および／またはそれぞれのデュアルＦＩＦＯへのロードを保留しているデータの１つ以上のロードのいずれかを記憶する複数の周辺ロードストアと、各々が複数の周辺ロードストアのそれぞれの周辺ロードストアとインターフェースし、かつメインメモリとインターフェースする複数の周辺メモリと、を含む。
【００１２】
一実施形態では、方法は、入力データセットの属性および集積回路アレイのアーキテクチャに基づいて、データ移動命令を生成することをさらに含み、データ移動命令は、入力データセットの複数の異なるデータサブセットの各々に対して、粗データ伝播経路および粒状データ伝播経路を定義する。
【００１３】
一実施形態では、方法は、データ計算命令および／または実行命令を生成することと、データ移動命令と、データ計算命令および実行命令のうちの１つ以上との組み合わせを含む単一の命令のセットを生成することと、を含む。
【００１４】
一実施形態では、データ移動命令を生成することは、入力データセットから、集積回路アレイの所定の構成に基づいて複数の異なるデータサブセットの各々を識別することを含み、複数の異なるデータサブセットの各々を識別することが、入力データセットを、集積回路アレイの所定の構成に適合するように複数の異なるデータサブセットに分割することを含む。
【００１５】
一実施形態では、方法は、
入力データセットの複数の異なるデータサブセットの各々に、所与の粗データ伝播経路を関連付けることと、入力データセットの複数の異なるデータサブセットの各々に、所与の粒状データ伝播経路を関連付けることと、を含む。
【００１６】
一実施形態では、複数の異なるデータサブセットの各々の粗データ伝播経路は、複数の異なるデータサブセットの各々の少なくとも開始位置、および複数の異なるデータサブセットの各々の終端位置を定義する。
【００１７】
一実施形態では、複数の異なるデータサブセットの各々の粒状データ伝播経路は、開始位置と終端位置との間で発生する中間進行位置を定義する。
【００１８】
一実施形態では、複数の異なるデータサブセットの各々の粒状伝播経路は、１つ以上のデータ回転命令を含む一連のデータ移動を含み、１つ以上のデータ回転命令は、実行されるとき、複数の異なるデータサブセットの所与データのサブセットを、複数のコアのうちのコアの第１のデータポートからコアの１つ以上の別個のデータポートへと回転様式で移動させる。
【００１９】
一実施形態では、１つ以上のデータ回転命令は、コア内の所与のデータサブセットの初期位置から測定して０度〜３６０度および／または０度〜マイナス３６０度の回転度として定義される特定の回転度値として定義される１つ以上の離散的な（ｄｉｓｃｒｅｔｅ）回転値を含む。
【００２０】
一実施形態では、所与のデータサブセットの一連のデータ移動の各データ移動は、実行するために単一のクロックサイクルのみを必要とする。
【００２１】
一実施形態では、複数の異なるデータサブセットの各々の粗データ伝播経路および粒状データ伝播経路は、複数のコアによってメモリアドレスを発行することなく実施される。
【００２２】
一実施形態では、集積回路内でデータを伝搬する方法は、入力データセットを取得することと、入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を実装することであって、粗データ伝播経路が、複数の異なるデータサブセットの各々の定義されたコア間データ移動であって、集積回路の集積回路アレイの複数のコアのうちの２つ以上を通じて、複数の異なるデータサブセットのうちの所与のサブセットの所定の進行経路を定義する、定義されたコア間データ移動を含む、実装することと、入力データセットの複数の異なるデータサブセットの各々の粒状データ伝播経路を実装することであって、粒状データ伝播経路が、複数の異なるデータサブセットの各々の定義されたコア内データ移動であって、コア内データ移動が、集積回路の集積回路アレイの複数のコアのうちの１つ以上内の、複数の異なるデータサブセットの所与のデータサブセットの所定の進行経路を定義する、定義されたコア内データ移動を含む、実装することと、粗データ伝播経路および粒状伝播経路に基づいて、集積回路内の入力データセットのフローを実行することと、を含む。
【００２３】
一実施形態では、粗データ伝播経路および粒状データ伝播経路の各々は、集積回路の階層メモリ構造と集積回路のデータ処理回路との間のデータの伝播を管理する所定のデータフロースケジュールに基づいて定義される。
【００２４】
一実施形態では、集積回路アレイは、複数のアレイコアであって、複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、複数のボーダーコアであって、複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、複数のアレイコアが、複数のボーダーコアとは異なる。
【００２５】
一実施形態では、階層メモリ構造が、メインメモリと集積回路アレイとの間の直接メモリアクセスを可能にし、階層メモリ構造が、各々が集積回路アレイとインターフェースし、かつ先入れ先出しベースでデータを送信および受け取る複数のデュアルＦＩＦＯと、各々が複数のデュアルＦＩＦＯのそれぞれのデュアルＦＩＦＯとインターフェースし、かつそれぞれのデュアルＦＩＦＯから受信されたデータの１つ以上のロード、および／またはそれぞれのデュアルＦＩＦＯへのロードを保留しているデータの１つ以上のロードのいずれかを記憶する複数の周辺ロードストアと、各々が複数の周辺ロードストアのそれぞれの周辺ロードストアとインターフェースし、かつメインメモリとインターフェースする複数の周辺メモリと、を含む。
【００２６】
一実施形態では、集積回路内でデータを伝播する方法は、入力データセットを識別することと、入力データセットの複数の異なるデータサブセットの各々の粗データ伝播経路を実行することであって、粗データ伝播経路が、複数の異なるデータサブセットの各々の定義されたコア間データ移動であって、コア間データ移動が、集積回路の集積回路アレイの複数のコアのうちの２つ以上を通じて、複数の異なるデータサブセットのうちの所与のサブセットの所定の進行経路を定義する、定義されたコア間データ移動を含む、実行することと、入力データセットの複数の異なるデータサブセットの各々の粒状データ伝播経路を実行することであって、粒状データ伝播経路が、複数の異なるデータサブセットの各々の定義されたコア内データ移動であって、集積回路の集積回路アレイの複数のコアのうちの１つ以上内の、複数の異なるデータサブセットの所与のデータサブセットの所定の進行経路を定義する、定義されたコア内データ移動を含む、実行することと、を含む。
【００２７】
一実施形態では、集積回路アレイは、複数のアレイコアであって、複数のアレイコアの各々が、入力データを処理するための少なくとも１つの処理回路を含む、複数のアレイコアと、複数のボーダーコアであって、複数のボーダーコアの各々が、入力データを記憶するための少なくとも１つのレジスタファイルを含む、複数のボーダーコアと、を含み、複数のアレイコアが、複数のボーダーコアとは異なる。
【図面の簡単な説明】
【００２８】
【図１】本出願の１つ以上の実施形態によるシステム１００の概略図を示す。
【図１Ａ】本出願の１つ以上の実施形態によるシステム１００の注釈付きの概略図を示す。
【図２】本出願の１つ以上の実施形態による集積回路アレイ１０５のセグメントの詳細な概略図を例示する。
【図３Ａ】本出願の１つ以上の実施形態による命令生成器の概略図を示す。
【図３Ｂ】本出願の１つ以上の実施形態による集積回路コントローラの概略図を示す。
【図４】本出願の１つ以上の実施形態によるデータ制御を実装するための方法４００を示す。
【図５】本出願の１つ以上の実施形態による集積回路アレイのセクション内の粗データ伝播経路の概略図を示す。
【図６】本出願の１つ以上の実施形態による集積回路アレイのセクション内の粒状データ伝播経路の概略図を示す。
【発明を実施するための形態】
【００２９】
本出願の好ましい実施形態の以下の説明は、本発明をこれらの好ましい実施形態に限定することを意図するものではなく、むしろ、当業者がこれらの発明を行い、使用することを可能にすることを意図している。
【００３０】
Ｉ．概略
背景技術セクションで上述したように、集積回路アーキテクチャにおける最先端の技術は、ロボット工学および自律型機械の多くの知覚処理タスクを処理するための好適な解決策を欠いている。ＧＰＵは、ロボット工学および自律型機械のこれらの知覚処理要件のいくつかを実施するために追加のおよび／または個別の回路で修正されてもよいが、ＧＰＵの処理能力には、結果として生じる性能が低く、リアルタイムではないような大きなギャップが存在する。ニューラルネットワーク固有のプロセッサ、コンピュータビジョン固有のプロセッサなどを含む他の知覚処理回路が存在し得るが、これらのいずれも、センサ取得、センサ融合、知覚処理、および経路計画などに必要な多くの異なる知覚アルゴリズムおよび計算を処理することができる単一の包括的集積回路を提供しない。
【００３１】
したがって、本出願の１つ以上の実施形態は、知覚アルゴリズム、知覚データ（例えば、センサデータなど）、ならびにロボット工学および自律型機械の様々な知覚処理要件を処理するための包括的に最適化された計算プラットフォームを提供するように機能する。好ましい実施形態では、最適化された計算プラットフォームは、高性能かつリアルタイムな処理密度の高いアルゴリズム処理ユニット（ＤＡＰＵ）および／または知覚処理ユニット（ＰＰＵ）として実装されてもよい。１つ以上の実装形態では、本出願の様々な実施形態に開示される集積回路は、複数の別個の処理要素と、メッシュアーキテクチャを形成するように動作し、アレイコア内の処理要素の多くの組み合わせ間でデータの移動を可能にするデータフローおよび記憶要素を有するアレイコアを含む。
【００３２】
アレイコア内の複数の処理要素によって定義されるメッシュアーキテクチャは、好ましくは、メモリ内計算を可能にし、通信およびデータ処理遅延を軽減する。
【００３３】
ＩＩ．高密度アルゴリズムおよび／または知覚処理回路（ユニット）のシステムアーキテクチャ
図１〜図１Ａに示すように、知覚処理を実施するための集積回路１００（高密度アルゴリズムおよび／または知覚処理ユニット）は、複数のアレイコア１１０と、複数のボーダーコア１２０と、ディスパッチャ（メインコントローラ）１３０と、第１の複数の周辺コントローラ１４０と、第２の複数の周辺コントローラ１５０と、メインメモリ１６０と、を含む。集積回路１００は、第１の周辺ロードストア１４５と、第２の周辺ロードストア１５５と、第１の周辺メモリ１４７と、第２の周辺メモリ１５７と、第１の複数のデュアルＦＩＦＯ１４９と、第２の複数のデュアルＦＩＦＯ１５９と、をさらに含んでもよい。
【００３４】
集積回路１００は、好ましくは、知覚データおよび／またはセンサデータのリアルタイムかつ高い計算効率を可能にするように機能する。集積回路１００の一般的な構成は、全体がこの参照により組み込まれる、米国仮出願第６２／６４０，４７８号および米国特許出願第１６／２９０，０６４号に記載されているように、メモリから処理するためにデータを引き込んだり押し出したりするためにアレイコア１１０によって必要とされるクロックサイクルを排除または著しく減少し得る大きなレジスタファイルを各々有する中央信号およびデータ処理ノードを定義する複数のアレイコア１１０を含む。集積回路１００の能力（例えば、ディスパッチャ１３０および／またはコンパイラモジュール１７５を介して）を生成する命令（すなわち、計算／実行およびデータ移動命令）は、集積回路１００全体、すなわち、複数のアレイコア１１０およびボーダーコア１２０内のデータの連続性およびフローを可能にするように機能する。
【００３５】
アレイコア１１０は、好ましくは、データもしくは信号処理ノード（例えば、小さなマイクロプロセッサ）または処理回路として機能し、好ましくは、大きなデータ記憶容量（例えば、１０２４ｋｂなど）を有するレジスタファイル１１２と、算数論理ユニット（ＡＬＵ）１１８、または整数バイナリ数に対して算数動作およびビット動作を実施する任意の好適なデジタル電子回路と、を含む。好ましい実施形態では、アレイコア１１０のレジスタファイル１１２は、アレイコア１１０の処理回路が直接アクセスし得る唯一のメモリ要素であってもよい。アレイコア１１０は、複数のボーダーコア１２０および複数のアレイコア１１０によって定義されるアレイコアおよび／または集積回路アレイ１０５（すなわち、コアメッシュ）の外側のメモリへの間接アクセスを有してもよい。
【００３６】
アレイコア１１０のレジスタファイル１１２は、任意の好適なメモリ要素またはデバイスであってもよいが、好ましくは、１つ以上の静的ランダムアクセスメモリ（ＳＲＡＭ）を備える。レジスタファイル１１２は、アレイコア１１０による処理のための十分に大きなデータセットの記憶を可能にする、１０２４アレイ個のレジスタなどの多数のレジスタを含んでもよい。したがって、各アレイコア１１０内の大きなレジスタファイル１１２の配置によって達成される技術的利点は、大きなレジスタファイル１１２が、処理のためにそのレジスタファイル１１２内にデータをフェッチおよびロードする必要性をアレイコア１１０によって減少することである。結果として、データをメモリに押し込み、データをメモリから引き出すためにアレイコア１１２によって必要とされるいくつかのクロックサイクルは、著しく減少または完全に排除される。すなわち、大きなレジスタファイル１１２は、アレイコア１１０が処理する予定であるデータのほとんど（全てではないにせよ）が、アレイコア１１０の処理回路（例えば、１つ以上のＭＡＣ、ＡＬＵなど）のすぐ隣に位置するため、アレイコア１１０によって実施される計算の効率を高める。例えば、ニューラルネットワークアルゴリズム（複数可）またはアプリケーション（複数可）（例えば、畳み込みニューラルネットワークアルゴリズムなど）を使用して集積回路１００または関連システムによる画像処理を実装するときに、アレイコアの大きなレジスタファイル１１２は、画像全体を処理するために必要な全ての画像データの記憶を可能にするように機能することができる。したがって、いくつかの実施形態では、ニューラルネットワーク実装（または同様の計算集約アプリケーション）の層データのほとんどまたはそうでなければ全ては、ニューラルネットワークアルゴリズム（複数可）の重みまたは係数を除いて、アレイコア１１０の大きなレジスタファイル１１２にローカルに記憶され得る。したがって、これは、アレイコア１１０がレジスタファイル１１２のデータを絶えず進めることを可能にし、さらに、オフアレイコアデータソース（例えば、メインメモリ、周辺メモリなど）からのデータのフェッチおよびロードを制限することによって、アレイコア１１０の計算および／または処理要素（例えば、１つ以上のＭＡＣおよびＡＬＵ）の最適な利用を可能にする。
【００３７】
比較すると、ＧＰＵなどによって実装される従来のシステムにおけるレジスタファイルを横断するためには、通常、メモリからデータをフェッチするためにメモリアドレスを発行する必要がある。しかしながら、大きなレジスタファイル１１２を実装する好ましい実施形態では、レジスタファイル１１２内の（生）入力データは、レジスタファイル１１２から自動的にインクリメントされてもよく、隣り合うコア（複数可）（例えば、アレイコアおよび／またはボーダーコア）からのデータは、アレイコア１１０によって要求を行うこと（またはメモリアドレスを発行すること）を明示的に必要とせずに、アレイコア１１０の計算要素への連続的なフローを可能にするために、レジスタファイル１１２に連続的に供給される。
【００３８】
本出願のいくつかの実施形態では、スケジュールされた所定のデータフローは、集積回路アレイ１０５内の構成要素によるデータの要求を軽減し得るか、または全体的に排除し得るが、これらの実施形態の変形例では、従来のランダムメモリアクセスは、集積回路アレイ１０５の構成要素によって達成されてもよい。すなわち、アレイコア１１０またはボーダーコア１２０が処理のためのランダムなデータの部分の必要性を認識する場合、アレイコア１１０および／またはボーダー１２０は、集積回路１００のメモリ階層内のメモリ要素のいずれかからデータに対して特定の要求を行ってもよい。
【００３９】
アレイコア１１０は、追加的にまたは代替的に、複数の乗算器（乗算）アキュムレータ（ＭＡＣ）１１４、または乗算および和算機能を実施することが可能であり得る任意の好適な論理デバイスもしくはデジタル回路を含んでもよい。好ましい実施形態では、各アレイコア１１０は、図２に例として示すように、４つのＭＡＣを含み、各ＭＡＣ１１４は、矩形形状のアレイコア１１０の特定の側面に、またはその近傍に配置されてもよい。好ましい実施形態では、アレイコア１１０の複数のＭＡＣ１１４の各々は、アレイコア１１０のそれぞれの側面にまたはその近傍に配置されてもよいが、複数のＭＡＣ１１４は、アレイコア１１０のそれぞれのコーナーを含む任意の好適な配置、パターン、および位置などでアレイコア１１０内に配置されてもよい（またはアレイコアの周辺部に拡張されてもよい）ことが知られているであろう。好ましい実施形態では、アレイコア１１０の側面に沿った複数のＭＡＣ１１４の配置は、集積回路１００のアレイコア１１０によって、直接隣あるコア（すなわち、隣接する隣り合うコア）のうちの１つ以上から受信された入力データおよびその計算の効率的な流入または捕捉を可能にする。
【００４０】
したがって、アレイコア１１０内に位置付けられた複数のＭＡＣ１１４の各々は、集積回路１００内の隣り合うコア（例えば、アレイコア、ボーダーコアなど）と直接通信能力を有するように機能してもよい。複数のＭＡＣ１１４は、アレイコア１１０の大きなレジスタファイル１１２から供給されたデータ（例えば、オペランド）を使用して計算を実行するようにさらに機能してもよい。しかしながら、複数のＭＡＣ１１４は、好ましくは、それぞれの隣り合うコア（複数可）および／または重みまたは係数（定数）バス１１６のうちの１つ以上から計算を実行するためのデータを供給するように機能し、このバス１１６は、１つ以上のメモリ要素（例えば、メインメモリ１６０など）または１つ以上の入力ソースから１つ以上のアルゴリズム（機械学習アルゴリズムを含む）の係数または重み入力を転送するように機能する。
【００４１】
重みバス１１６は、第１の入力端子において周辺コントローラ１４０、１５０のうちの少なくとも１つ以上と電気通信するように動作可能に配置されてもよく、さらに、複数のアレイコア１１０のうちの１つ以上と動作可能に接続されてもよい。このようにして、重みバス１１６は、１つ以上の周辺コントローラ１４０、１５０から入力された重みおよび係数データを収集し、複数のアレイコア１１０のうちの１つ以上に直接入力された重みおよび係数データを送信するように機能してもよい。したがって、いくつかの実施形態では、複数のアレイコア１１０は、重みバス１１６を介して並列に入力された重みおよび／または係数データを送り、それによってアレイコア１１０の計算速度を向上させることができる。
【００４２】
各アレイコア１１０は、好ましくは、そのすぐに隣り合うアレイコアと双方向に通信するように機能する。すなわち、いくつかの実施形態では、それぞれのアレイコア１１０は、矩形形状を有する処理ノードとして構成されてもよく、処理ノードの各側が、アレイコア１１０の４つの側面または面の各々のうちの１つ隣に位置付けられる別のノード（例えば、別の処理ノード、データ記憶／移動ノードなど）とやり取りできるように配置されてもよい。アレイコア１１０が、その側面の各々に沿って隣あるコアと双方向に通信する能力は、アレイコア１１０が、その隣り合うアレイコアのいずれかからのデータを引き出すとともに、その隣り合うアレイコアのいずれかへの（処理されたまたは生の）データを押し込むことを可能にする。これにより、集積回路１００のアレイおよびボーダーコア１１０、１２０の集合体全体にわたってデータの効率的な移動を可能にするメッシュ通信アーキテクチャが可能になる。
【００４３】
複数のボーダーコア１２０の各々は、好ましくは、レジスタファイル１２２を含む。レジスタファイル１２２は、レジスタファイル１２２が大きなデータセットを記憶するように機能し得る点で、アレイコア１１０のレジスタファイル１１２と同様に構成されてもよい。好ましくは、各ボーダーコア１２０は、アレイコア１１０と比較したときに、簡略化されたアーキテクチャを含む。したがって、いくつかの実施形態では、ボーダーコア１２０は、実行能力を含まない場合があり、したがって、多くのアレイコア１１０に提供されるように、乗算器アキュムレータおよび／または算術論理ユニットを含まない場合がある。
【００４４】
従来の集積回路（例えば、ＧＰＵなど）では、そのような回路内で計算集約アプリケーション（例えば、ニューラルネットワークアルゴリズム）を処理するために受信された画像データ（または任意の他の好適なセンサデータ）を入力するとき、入力画像データに基づいて画像値（例えば、画素値）を含まない回路内の領域にパディング要求を発行する必要があり得る。すなわち、画像処理などの際に、従来の集積回路は、画像データ値を一切含まないメモリ要素から画像処理を実施するように機能してもよい。このような場合、従来の集積回路は、画像データ値を伴わずにメモリ要素における後続の画像処理努力を回避するために、ゼロなどのパディング値をメモリ要素に追加することを要求するように機能してもよい。従来の集積回路によるこの典型的な画像データ処理の結果、ブランクメモリ要素を識別し、従来の集積回路によって画像処理などのためのメモリ素要素に計算可能な値を付加するためのいくつかのクロックサイクルが発生する。
【００４５】
集積回路１００の好ましい実装では、複数のボーダーコア１２０のうちの１つ以上は、入力データ（例えば、入力センサデータ）が受信されないときに、自動的にデフォルト値に設定されるように機能してもよい。例えば、センサ（または別の回路層）からの入力画像データは、集積回路アレイ１０５の全てのボーダーコアセルを占めない総画像データサイズを有してもよい。そのような場合、入力画像データを受信すると、入力画像データを伴わない１つ以上のボーダーコア１２０（すなわち、ボーダーコアセル）は、ゼロまたはゼロ以外の定数値などのデフォルト値に自動的に設定されてもよい。
【００４６】
いくつかの実施形態では、ディスパッチャによって生成され、複数のボーダーコアのうちの１つ以上に送信される所定の入力データフロースケジュールは、デフォルト値または所定の定数値に設定する命令を含んでもよい。追加的にまたは代替的に、１つ以上のボーダーコア１２０は、集積回路アレイ１０５への所定の入力データフローで入力センサデータなどが受信されないことが検出されたときに、自動的に既定値または所定値に設定されてもよい。追加的にまたは代替的に、１つの変形例では、１つ以上のボーダーコア１２０は、集積回路アレイ１０５への所定の入力データフローで入力センサデータなどが受信されないことが検出されたときに、入力センサデータを有する１つ以上の他のボーダーコアの値を反映するように自動的に設定されてもよい。
【００４７】
したがって、自動パディング要素としての複数のボーダーコア１２０のうちの１つ以上の実装に従って達成される技術的利益は、自動パディング値が設定されている入力センサデータの関心領域（または周辺領域）への作業要求を最小限にすることによって、複数のアレイコア１１０のうちの１つ以上による計算の効率を向上させることを含んでもよい。それによって、入力データセット上で計算を実施する際に、複数のアレイコア１１０によって使用されるクロックサイクルを減少させる。
【００４８】
集積回路１００の好ましい実施態様では、処理のための複数のアレイコア１１０および複数のボーダーコア１２０へのデータの進行は、好ましくは、ディスパッチャ１３０で生成された所定のデータフロースケジュールに基づいている。所定のデータフロースケジュールは、ボーダーコア１２０および／またはアレイコア１１０からの入力データに対する明示的な要求を必要とせずに、１つ以上のソース（例えば、センサ、他のＮＮ層、上流デバイスなど）からの入力データをボーダーコア１２０およびアレイコア１１０にロードすることを可能にする。すなわち、所定のデータフロースケジュールにより、集積回路１００のメモリ要素（例えば、メインメモリ１６０）から、処理のためのデータを受け取る容量を有する複数のボーダーコア１２０および複数のアレイコア１１０への生データの自動フローが可能になる。例えば、アレイコア１１０が、そのレジスタファイル１１２に記憶されたデータロードの第１のデータサブセットを処理するために機能する場合、第１のデータサブセットの処理の結果が完了し、アレイコア１１０から送出されると、所定のデータフロースケジュールは、レジスタファイル１１２におけるデータロードに追加され、アレイコア１１０によって以前に処理されたデータの第１のデータサブセットを置き換えるアレイコア１１０への生データの自動フローを可能にするように機能してもよい。したがって、このような場合、アレイコア１１０から処理のための追加の生データに対する明示的な要求は不要である。むしろ、ディスパッチャ１３０を実装する集積回路１００は、アレイコア１１０がそのレジスタファイル１１２から供給されたいくらかの程度の量のデータを処理すると、アレイコア１１０が処理のために追加のデータを受け取るための追加の容量を有し得ることを認識するように機能してもよい。
【００４９】
好ましい実施形態では、集積回路１００は、図３Ａに例として示されるように、計算、実行、およびデータ移動命令を生成するように機能する命令生成器１７０と動作可能に通信してもよい。命令生成器１７０は、集積１００の構成要素および回路に対してオフチップで配置されてもよい。しかしながら、代替的な実施形態では、命令生成器１７０は、ディスパッチャ１３０の異なるまたは統合された構成要素として集積回路１００内に協調的に統合されてもよい。
【００５０】
好ましくは、命令生成器１７０は、複数のおよび／または別個のタイプの命令を生成するように特別に構成されたコンパイラモジュール１７５を動作させるように機能する１つ以上の汎用コンピュータ（例えば、Ｍａｃコンピュータ、Ｌｉｎｕｘ（登録商標）コンピュータ、もしくは任意の好適なハードウェアコンピュータ）または汎用コンピュータ処理（ＧＰＣＰ）ユニット１７１を使用して実装されてもよい。コンパイラモジュール１７５は、任意の好適なコンパイラソフトウェア（例えば、ＧＮＵコンパイラコレクション（ＧＣＣ）、クラングコンパイラ、および／または任意の好適なオープンソースコンパイラまたは他のコンパイラ）を使用して実装されてもよい。コンパイラモジュール１７５は、少なくとも計算命令および実行命令ならびにデータ移動命令を生成するように機能してもよい。好ましい実施形態では、コンパイル時に、コンパイラモジュール１７５は、１つ以上のＧＰＣＰユニット１７１によって実行されて、命令計算／実行命令およびデータ移動命令の２つ以上のセットを順次または並列に生成してもよい。いくつかの実施形態では、コンパイラモジュール１７５は、別個の複数の命令セットを単一の組成命令セットに合成するように機能してもよく、その命令セット、メモリ（例えば、命令バッファ、外部ＤＤＲ、ＳＰＩフラッシュメモリなど）にロードされてもよく、そのメモリから、ディスパッチャが単一の組成命令セットをフェッチして実行してもよい。
【００５１】
しかしながら、第１の変形例では、コンパイラモジュール１７５が、計算命令およびデータ移動命令などの複数の別個の命令のセットを生成すると、命令生成器１７０は、命令セットをメモリ（例えば、メモリ１６０または生成器１７０に関連付けられたオフチップメモリ）にロードするように機能してもよい。そのような実施形態では、ディスパッチャ１３０は、命令生成器１７０によって生成される複数の別個の命令セットをメモリからフェッチし、ディスパッチャが集積回路１００内で実行および／またはロードし得る複数の別個の命令セットを単一の組成命令セットに合成するように機能してもよい。
【００５２】
第２の変形例では、ディスパッチャ１３０は、単一の組成命令セットを生成するためのコンパイル機能を有するように構成されていてもよい。そのような変形例では、ディスパッチャ１３０は、集積回路１００の様々な回路および／または構成要素（例えば、アレイコア計算など）によって実施されるスケジュールされた計算または実行を含む命令を作成し、さらに集積回路１００を通る入力データのフローを制御することを可能にする命令を作成するように機能する処理回路（例えば、マイクロプロセッサなど）を含んでもよい。いくつかの実施形態では、ディスパッチャ１３０は、命令の一部を実行し、命令の別の部分を集積回路アレイ１０５にロードするように機能してもよい。概して、ディスパッチャ１３０は、集積回路１００の１つ以上の他の記憶および／または処理回路へのメモリからのデータのフロー（移動）へのアクセスを制御および管理する集積回路１００の一次コントローラとして機能してもよい（およびその逆も同様である）。さらに、ディスパッチャ１３０は、様々なサブコントローラ（例えば、周辺コントローラなど）および複数のアレイコア１１０の制御実行動作をスケジュールしてもよい。
【００５３】
図３Ｂの例として示されるように、いくつかの実施形態では、ディスパッチャ１３０の処理回路は、それぞれ独立して計算／実行命令およびデータ転送／移動スケジュールまたは命令を生成し得る計算命令生成器回路１３２およびデータ移動命令生成器回路１３４（例えば、アドレス生成ユニットまたはアドレス計算ユニット）を含む離散回路を含む。したがって、この構成は、ディスパッチャ１３０が、データアドレス計算および計算／実行命令の生成を並列に実施することを可能にする。ディスパッチャ１３０は、コンピュータ命令生成器回路１３２とデータ移動命令生成器回路１３４との両方からの出力を、別個の出力を組み合わせた単一の命令組成に合成するように機能してもよい。
【００５４】
命令生成器１７０および／またはディスパッチャ１３０によって生成される単一の命令組成は、１つ以上の下流構成要素および集積回路アレイ１０５に提供されてもよく、計算または処理命令およびデータ転送／移動命令が集積回路１００のこれらの様々な回路または構成要素によって同時に実施されることを可能にしてもよい。集積回路アレイ１０５に関して、単一の命令組成のデータ移動構成要素は、周辺コントローラ１４０、１５０のうちの１つ以上によって実行され、計算命令は、複数のアレイコア１１０のうちの１つ以上によって実施されてもよい。したがって、そのような実施形態では、周辺コントローラ１４０、１５０は、命令のデータ移動構成要素を復号するように機能してもよく、関与する場合、デュアルＦＩＦＯ１４９、１５９との間の読み出しまたは書き込み、およびデュアルＦＩＦＯ１４９、１５９から集積回路へのデータバス上にそのデータを移動するための動作を実施してもよい（またはその逆も同様である）。周辺コントローラ１４０、１５０によって実施される読み取りまたは書き込み動作は、順次または同時に実行され得ることを理解されたい（すなわち、デュアルＦＩＦＯとの間の書き込みおよび読み取りも同時に実行され得る）。
【００５５】
計算命令生成器回路１３２およびデータ移動命令生成器回路１３４は、好ましくは、別々のまたは独立した回路であるが、いくつかの実施形態では、計算命令生成器回路１３２およびデータ移動命令生成器回路１３４は、計算命令生成とデータ移動命令生成との両方を実施するように機能する単一の回路または単一のモジュールによって実装され得ることに留意されたい。
【００５６】
動作中、ディスパッチャ１３０は、１つ以上の周辺ロードストア１４５および周辺ロードストア１５５にロードされるメモリアドレスを生成し、スケジュールするように機能してもよい。周辺ロードストア１４５、１５５は、好ましくは、ディスパッチャ１３０からの全てのロードおよび命令を実行するように機能する特殊な実行ユニットを含み、概して、メモリからデータをロードもしくはフェッチするか、または統合されたアレイコアからメモリにデータを記憶するように機能してもよい。第１の周辺ロードストア１４５は、好ましくは、第１の複数のデュアルＦＩＦＯ１４９および第１の周辺メモリ１４７の両方と、通信可能かつ動作可能にインターフェースする。第１および第２の周辺メモリ１４７、１５７は、好ましくは、オンチップスタティックランダムアクセスメモリを備える。
【００５７】
構成において、第１の周辺ロードストア１４５は、第１の複数のデュアルＦＩＦＯ１４９と第１の周辺メモリ１４７との間に配置されてもよく、その結果、第１の周辺ロードストア１４５は、第１の複数のデュアルＦＩＦＯ１４９のすぐ隣またはその後ろに位置付けられる。同様に、第２の周辺ロードストア１５５は、好ましくは、第２の複数のデュアルＦＩＦＯ１５９と第２の周辺メモリ１５７との両方と通信可能かつ動作可能にインターフェースする。したがって、第２の周辺ロードストア１５５は、第２の周辺ロードストア１５５が第２の複数のデュアルＦＩＦＯ１５９のすぐ隣または後ろに配置されるように、第２の複数のデュアルＦＩＦＯ１５９と第２の周辺メモリ１５７との間に位置付けられてもよい。
【００５８】
第１および第２の周辺ロードストア１４５、１５５のうちの１つ以上にディスパッチャ１３０によって発行されるメモリアドレス指定命令に応答して、第１および第２の周辺ロードストア１４５、１５５は、第１の周辺メモリ１４７および第２の周辺メモリ１５７のうちの１つからデータをフェッチし、フェッチしたデータを第１および第２の複数のデュアルＦＩＦＯ１４９、１５９のうちの１つ以上に移動させるための命令を実行するように機能してもよい。追加的にまたは代替的に、デュアルＦＩＦＯ１４９、１５９は、データバスからデータを読み出し、読み出しデータをそれぞれのデュアルＦＩＦＯのうちの１つ以上に移動させるか、またはデュアルＦＩＦＯのうちの１つ以上からデータを読み出し、読み出しデータをデータバスに移動させるように機能してもよい。同様に、メモリアドレス指定命令は、第１および第２の周辺ロードストア１４５、１５５のうちの１つ以上に、複数のデュアルＦＩＦＯ１４９、１５９のうちの１つ以上から収集されたデータを第１および第２の周辺メモリ１４７、１５７のうちの１つに移動させることができる。
【００５９】
第１の複数のデュアルＦＩＦＯ１４９の各々および第２の複数のデュアルＦＩＦＯ１５９の各々は、好ましくは、少なくとも２つのメモリ要素（図示せず）を備える。好ましくは、第１の複数のデュアルＦＩＦＯ１４９は集積回路アレイ１０５の第１の側面に沿って配置され得、第１の複数のデュアルＦＩＦＯ１４９の各々は集積回路アレイ１０５の行と整列されてもよい。同様に、第２の複数のデュアルＦＩＦＯ１５９は、集積回路アレイ１０５の第２の側面に沿って配置され得、第２の複数のデュアルＦＩＦＯ１５９の各々は、集積回路アレイ１０５の列と整列されてもよい。この配置は、好ましくは、集積回路アレイ１０５の第１の側面に沿った各境界１２０が、集積回路アレイ１０５の第２の側面に沿った第１の周辺コントローラ１４５および各境界１２０のうちの少なくとも１つと通信可能かつ動作可能にインターフェースし、第２の周辺コントローラ１５５のうちの少なくとも１つと通信可能かつ動作可能にインターフェースすることを可能にする。
【００６０】
少なくとも図１〜図１Ａには、第１および第２の複数のデュアルＦＩＦＯ、第１および第２の周辺コントローラ、第１および第２の周辺メモリ、ならびに第１および第２のロードストアが存在することが例示されるが、これらの構造は、例えば、これらの構成要素が集積回路アレイ１０５の全（４つの）側面に沿って配置されるように、集積回路アレイ１０５の周辺全体を取り囲むように配置され得ることに留意されたい。
【００６１】
デュアルＦＩＦＯ１４９、１５９は、好ましくは、それぞれの側面からのデータのための特定の命令に反応するように機能する。すなわち、デュアルＦＩＦＯ１４９、１５９は、集積回路アレイ１０５の第２の側面に沿った第１の複数のデュアルＦＩＦＯ１４９または第２の複数のデュアルＦＩＦＯのいずれかに固有の、ディスパッチャ１３０からのデータ移動命令を識別するように構成されてもよい。
【００６２】
第１の実装（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）によれば、デュアルＦＩＦＯの各々は、集積回路アレイ１０５内にデータを押し込むために２つのメモリ要素のうちの第１のメモリ素子を使用してもよく、集積回路アレイ１０５からデータを引き出すために２つのメモリ要素のうちの第２のメモリ素子を使用してもよい。したがって、各デュアルＦＩＦＯ１４９、１５９は、集積回路アレイ１０５にデータを内向きに移動させるための第１のメモリ要素と、集積回路アレイ１０５からデータを外向きに移動させるための第２のメモリ要素と、を有してもよい。
【００６３】
第２の実施態様によれば、デュアルＦＩＦＯは、各それぞれのデュアルＦＩＦＯが所定のシーケンスまたは順序で集積回路アレイ１０５にデータを提供し、かつ同じ所定のシーケンスまたは順序で集積回路アレイ１０５からデータを収集するように機能するスタック（第２の）モードで動作してもよい。
【００６４】
さらに、集積回路１００は、好ましくは、単一の統一メモリを含むメインメモリ１６０を備える。メインメモリ１６０は、好ましくは、１つ以上のセンサ、システム由来のまたはシステム生成されたデータ、１つ以上の集積回路層からのデータ、および１つ以上の上流デバイスまたは構成要素からのデータなどに由来するデータを記憶するように機能する。好ましくは、メインメモリ１６０は、オンチップスタティックランダムアクセスメモリなどを備える。
【００６５】
追加的または代替的に、メインメモリ１６０は、複数のレベルのオンダイ（オンチップ）メモリを含んでよい。このような実施形態では、メインメモリ１６０は、互いに電気的に通信し、集積回路アレイ１０５と同じダイ上に配置された単一の統一メモリとして機能し得る複数のメモリ（例えば、ＳＲＡＭ）素子を含んでもよい。
【００６６】
追加的または代替的に、メインメモリ１６０は、複数のレベルのオフダイ（オフチップ）メモリ（図示せず）を含んでもよい。そのような実施形態では、メインメモリ１６０は、おそらく互いに電気通信し、集積回路アレイとは別個のダイ上に配置された単一の統一メモリとして機能する複数のメモリ（例えば、ＤＤＲ  ＳＲＡＭ、高帯域幅メモリ（ＨＢＭ）など）要素を含んでもよい。
【００６７】
いくつかの実施形態では、集積回路１００は、オンダイおよびオフダイで配置されたメモリを含むメインメモリ１６０を備えることに留意されたい。そのような実施形態では、メインメモリ１６０のオンダイおよびオフダイメモリは、集積回路１００のオンダイ構成要素にアクセス可能な単一の統一メモリとして機能してもよい。
【００６８】
第１の周辺メモリ１４７および第２の周辺メモリ１５７の各々は、メインメモリ１６０内に入れてもよい。第１の周辺メモリ１４７とメインメモリ１６０との間には、第１の周辺メモリ１４７がメインメモリ１６０からデータをフェッチすることを可能にするロードストアユニットが配置されてもよい。同様に、第２の周辺メモリ１５７とメインメモリ１６０との間には、第２の周辺メモリ１５７がメインメモリ１６０からデータをフェッチすることを可能にする第２のロードストアユニットが配置されてもよい。
【００６９】
デュアルＦＩＦＯ１４９、１５９とロードストア１４５、１５５との間、ロードストア１４５、１５５と周辺メモリ１４７、１５７との間、および周辺メモリ１４７、１５７とメインメモリ１６０とで発生する集積回路１００のメモリ階層に沿ったデータ転送は、好ましくは、ディスパッチャ１３０またはいくつかのメイン処理回路の直接的な発明を伴わずに、メモリ要素およびロードストアがメモリ階層内のデータに独立してアクセスおよび転送することを可能にする予定されたまたは所定のダイレクトメモリアクセス（ＤＭＡ）転送として実装され得ることに留意されたい。さらに、集積回路１００のメモリ階層内のデータ転送は、２つのカウントおよび２つのステップを有する２Ｄ  ＤＭＡ転送として実装されてもよく、それによって、転送中の効率的なデータアクセスおよびデータ再形成を可能にする。好ましい実施形態では、ＤＭＡデータ転送は、複数のアレイコア１１０のうちの１つ以上のステータスまたは動作によってトリガされてもよい。例えば、アレイコアが第１のデータのセットの処理を完了しているまたは完了した場合、完了またはほぼ完了は、追加のデータが処理のために集積回路アレイ１０５に入ることを可能にするためにＤＭＡ転送をトリガしてもよい。
【００７０】
ＩＩＩ．集積回路アレイ内のデータ制御のための方法（複数可）
図４に示すように、集積回路内のデータの移動を制御するための方法４００は、データ入力Ｓ４１０を受信することと、データ移動命令Ｓ４２０を生成することと、命令Ｓ４３０を合成（および／またはテザリング）することと、を含む。データ移動命令Ｓ４２０を生成することは、別個のデータサブセットＳ４２２を識別することと、識別された別個のデータサブセットＳ４２４の各々のデータ伝播経路を生成することと、を追加的にまたは任意に含んでもよい。
【００７１】
方法４００は、好ましくは、メモリ内のデータ重複を減少し、データの取得および処理に必要なクロックサイクルを減少することによって、集積回路の処理効率を向上させるデータフローの連続性を可能にする集積回路内のデータの伝播を最適化するように機能する。具体的には、方法４００は、複数のデータサブセットに関する広範囲のおよび／または粗いデータ伝播経路、ならびに集積回路を通じて複数のデータサブセットの各々に関する特定のおよび／または粒状のデータ伝播経路を含む所定のデータフロースケジュールの生成を可能にする。
【００７２】
さらに、方法４００は、好ましくは、集積回路の記憶装置（メモリ）および処理要素全体を通じて、所定の様式でデータ入力を移動させる命令を生成し、さらに、データ移動命令を計算および／または実行命令と統合してもよい。これは、次いで、計算命令および／または実行命令を完了するために必要とされる特定のデータのためのデータ要求およびメモリへのアドレス発行を排除するように機能する。すなわち、従来の集積回路などでは、処理に必要なデータは、典型的には、データを必要とする回路またはデバイスによるメモリへのアドレスを使用して回路に引き込まれる。しかしながら、方法４００は、集積回路および／または集積回路のデバイスによる記憶および処理のために集積回路にデータを押し込み、これによって、データ処理回路からのメモリアドレス指定に典型的に関連付けられるいくつかのクロックサイクルを減少し、集積回路の処理速度および性能を向上させるように機能してもよい。
【００７３】
入力データを受信することを含むＳ４１０は、１つ以上の入力データソースから処理するための入力データを受信および／または収集するように機能する。入力データは、任意のタイプまたは種類のデータであり得る。例えば、入力データは、方法４００を実装するシステム（例えば、集積回路１００）と動作可能に通信して配置され得る１つ以上の外部センサによるデータ取り込みを含んでもよい。１つ以上のセンサで収集されるデータは、画像データ、音響データ、熱データ、およびマイクロ波データなどを含んでもよい。１つ以上のセンサにおいて収集されたデータは、（例えば、１つ以上のセンサを介して）検出可能であり、１つ以上のセンサによって捕捉され得る任意の好適なデータを含んでもよく、データは、方法４００を実装するシステムを取り囲む周囲および／または状況に関する任意のデータを含んでもよく、かつ／またはデータは、通信ネットワークを介して方法４００を実装する機械に提供され得る別個のまたは接続されたシステム（例えば、ネットワーク（メッシュネットワークなど）を介して接続される別のシステム）から収集されたデータを含んでもよく、かつ／またはデータは、方法４００を実装する機械の内部／外部動作データを含んでもよいことに留意されたい。
【００７４】
Ｓ４１０のいくつかの実装では、方法４００を実装する集積回路またはシステムへの入力として提供されるデータは、生データ（例えば、生センサデータ）の事前処理または先行処理されたデータの潜在的な事前処理の結果として生成されるシステム由来データを含む。例えば、処理回路の複数の階層または層を含む多階層または多層システムにおいて、マルチレベルシステムの第１の処理層において処理された生データは、方法４００を実装するために機能し得る後続の処理層への入力として提供されてもよい。したがって、Ｓ４１０において収集されたデータは、単一の統合システムなどの先行または上流処理層から供給されてもよい。
【００７５】
Ｓ４１０のいくつかの実装では、方法４００を実装する集積回路またはシステムへの入力として提供されるデータは、上流デバイスによって生成されるシステム由来データを含む。上流デバイスは、一次処理回路（例えば、集積回路アレイ１０５）と動作可能に通信するオンチップデバイスまたは回路であってもよい。追加的または代替的に、上流デバイスは、方法４００を実装するシステムの一次処理回路を動作可能に通信し得るオンチップデバイスまたは回路にデータを提供するオフチップデバイスまたは回路であってもよい。いずれの場合も、オフチップおよび／もしくはオンチップデバイスまたは回路は、データを処理のために一次処理回路に送信する前にデータの１つ以上の前処理または記憶機能を実施するように機能してもよい。
【００７６】
データ移動命令を生成することを含むＳ４２０は、受信および／または収集したデータが好ましくは方法４００を実装するシステム内で伝播する様式を管理する命令を生成するように機能する。具体的には、Ｓ４２０は、集積回路全体を通じて異なるデータサブセットの移動を粗く、かつ粒状に定義する所定のデータフロースケジュールを含むデータ移動命令を生成することを含んでもよい。好ましい実施形態では、Ｓ４２０は、計算命令（例えば、ｘ＋ｙの加算など）、実行命令（例えば、読み取り、書き込み、記憶など）、データ移動命令、および／または方法４００を実装するシステム内でデータを処理するための任意の好適な命令を含む命令の集合を生成するように機能し得る命令生成器１７０および／またはディスパッチャ回路（例えば、ディスパッチャ１３０）によって実施されてもよい。
【００７７】
好ましくは、ディスパッチャまたは命令生成器によって生成されるデータ移動命令は、単一の組成命令セットに他の命令と統合され得る。この組み合わされた状態または形式では、データ移動命令および他の命令は、集積回路（またはシステム）内の１つ以上の回路および／またはノードによって単数の命令パケットとして受信されてもよく、それによって、命令パケット内の命令の一部または全てが並列に実施されることを可能にする。
【００７８】
好ましい実施形態では、Ｓ４２０は、他の計算および／または実行命令の生成と並列に（同時に）受信および／または収集されたデータのデータ移動命令を生成するように機能してもよい。そのような実施形態では、Ｓ４２０は、データ移動命令ならびに計算および／または実行命令の生成を同時に可能にする単一のモジュールまたは複数の別個のモジュールを（ディスパッチャにおいて）実装するように機能してもよい。追加的にまたは代替的に、Ｓ４２０は、連続した順序、および優先順位付けされた順序などを含む任意の好適な順序で、計算および／または実行命令と共にデータ移動命令を生成するように機能してもよい。
【００７９】
好ましくは、Ｓ４２０は、データセットの属性（例えば、データサイズ、いくつかのデータ層、および／またはデータ依存性など）、ならびに方法４００を実行する集積回路の集積回路アレイの１つ以上の属性のうちの１つ以上に基づいて、データセットのデータ移動命令を生成するように機能してもよい。
【００８０】
追加的にまたは代替的に、Ｓ４２０は、受信および／または収集された入力データセットＳ４２２から別個のデータサブセットを識別することを含む。好ましい実施形態では、Ｓ４２２は、方法４００を実装するシステムの集積回路アレイの構成および／または配置に基づいて、別個のデータサブセットを識別するように機能してもよい。集積回路アレイ（例えば、集積回路アレイ１０５）は、好ましくは、所定のまたは固定された様式で配置された複数のボーダーコア（例えば、ボーダーコア１２０）および複数のアレイコア（アレイコア１１０）を含む。したがって、Ｓ４２２は、受信したまたは収集した入力データを別個のデータサブセットに分割またはセグメント化して、所定の配置または集積回路アレイの所定の構成の容量に基づいて、データサブセットの配置に適合させるかまたは最適化するように機能してもよい。例えば、受信した入力データが画像データを含む場合、Ｓ４２２は、画像データを別個のデータサブセット（すなわち、画像全体の画素データサブセット）に分割することによって、画像データの全ての画素を集積回路アレイの所定の構成に適合させるように機能してもよく、ここで、別個のデータサブセットの各々は、各別個のデータサブセットが集積回路アレイ内の別個のアレイコアまたはボーダーコアを占有するように、集積回路アレイにロードされ（または割り当てられ）てもよい。
【００８１】
追加的にまたは代替的に、Ｓ４２０は、集積回路アレイのアレイコアの構成に基づいて、入力データセットをサブセットに分割またはセグメント化するように機能してもよい。このような実施形態では、Ｓ４２０は、入力データセットを、それぞれのアレイコアの計算および／または処理要素の容量と一致するか、またはそれよりも小さいサイズに分割するように機能してもよい。例えば、アレイコアは、特定のサイズのデータを受信および計算するための所定の容量を有する複数のＭＡＣコンピューティング要素を含んでもよい。このような例では、Ｓ４２０は、より大きなデータセットから、容量に一致するか、またはアレイコアのそれぞれのＭＡＣの容量よりも小さいサイズを有する複数のより小さいまたはサブセットのデータを作成するように機能してもよい。
【００８２】
さらに、各識別されたデータサブセットに対して、Ｓ４２０は、伝播経路Ｓ４２４を識別するように機能してもよい。好ましくは、各データサブセットの伝播経路は、特定のデータサブセットの少なくとも開始位置と特定のデータサブセットの終端位置とを識別する。追加的または代替的に、伝播経路は、開始位置と終端位置との間で発生するデータサブセットの中間進行位置を含んでもよい。したがって、Ｓ４２４は、集積回路アレイ内のデータサブセットの初期（開始）位置を割り当てるように機能してもよい。好ましい実施形態では、ほとんどまたは全てのデータサブセットは、ボーダーコアにおいて集積回路アレイ内の初期位置を割り当てられてもよい。１つ以上の好ましい実施形態では、複数のボーダーコアは、集積回路アレイの周辺を形成してもよい。そのような実施形態において、処理のためにスケジュールされたデータは、まず集積回路アレイの外側周辺を形成するボーダーコアにおいてデータをロードすることによって集積回路アレイにロードされてもよい。
【００８３】
しかしながら、いくつかの実施形態では、データサブセットは、周辺ボーダーコア（例えば、データ伝播の潜在的な開始位置および／または終了位置）において集積回路アレイに注入され得るが、追加的または代替的な実施形態では、データサブセットは、集積回路アレイの任意のアレイコアまたはボーダーコアに直接注入され得ることに留意されたい。具体的には、いくつかの実施形態では、データサブセットは、データロード機構（例えば、周辺コントローラなど）に接続された１つ以上のデータバスおよび集積回路アレイの内部の１つ以上のコアを介して集積回路アレイの周辺コアをバイパスしてもよい。
【００８４】
したがって、Ｓ４２４は、図５に例として示すように、識別されたデータサブセットが処理前、処理中、および／または処理後に横断し得る２つ以上のノード（すなわち、ボーダーおよび／またはアレイコア）によって識別された集積回路に沿った一般的な伝播経路を示す識別されたデータサブセットの各々について粗伝播経路を生成するように機能してもよい。いくつかの実施形態では、粗伝播経路は、集積回路アレイ１０５のコア間のデータサブセットの進行経路またはルーティングを定義するコア間データ移動などとして本明細書で言及されるか、またはそれを含むことができる。
【００８５】
Ｓ４２４は、追加的または代替的に、図６に例として示されるように、ボーダーコア内および／またはアレイコア内の識別されたデータサブセットの１つ以上の移動を正確に識別する粒状伝播経路を生成してもよい。一般に、粒状伝播経路は、データサブセットが進行するべきコアの内部（着信／発信）データポートの順序および／または処理要素（例えば、ＭＡＣ）を識別することによって、データサブセットが集積回路アレイのコア間を物理的に横断することを可能にするデータ移動命令を提供する。好ましい実施形態では、識別されたデータサブセットのための粒状伝播経路は、［ｉ］コアの１つ以上のレジスタファイルとコアの内部データポートとの間のデータサブセットの移動と、［ｉｉ］別個の内部データポートおよび／またはコアの処理要素との間のデータサブセットの移動とを定義する一連のコア内データ移動を含んでもよい。追加的または代替的に、識別されたデータサブセットの粒状伝播経路は、少なくとも第１のコアと第２のコアの内部データポートとの間のデータサブセットのコア内移動のシーケンスを含んでもよい。粒状伝播経路は、コアの内部データポートと周辺コントローラなどのポートとの間のデータサブセットの移動、ならびにコアのポートおよび／またはレジスタファイルと集積回路内に配置されたデータバスとの間の移動を定義してもよい。したがって、粒状伝播経路は、コアの１つ以上の処理要素に入るための、およびコアの１つ以上の処理要素から出るための命令を含んでもよい。
【００８６】
一実装では、Ｓ４２４は、実行されるとき、データサブセットに、コアの第１のデータポートから同じコアの別個のデータポートへと回転様式で移動させる、１つ以上のデータ回転命令を含む一連のデータ移動を定義する粒状伝播経路を生成するように機能してもよい。追加的または代替的に、データ移動のシーケンスは、処理要素（例えば、ＭＡＣ）および／またはコアのデータポートとの間であってもよい。したがって、本明細書で言及されるデータ回転は、好ましくは、回転命令に基づいて回転様式でコア内のデータ（例えば、ボーダーコア、アレイコアなど）を移動することに関する。回転命令は、好ましくは、データサブセットの初期位置（すなわち、コア内のデータポート位置）から測定される０〜３６０（０〜３６０）（および／または−３６０〜０）の回転度として定義される。
【００８７】
図６にさらに示すように、コアは、着信および／または発信データサブセットを記憶するように機能し得る少なくとも４つのデータポートを含み得る。各データポートは、別個のコア、レジスタファイル、またはデータポートからから着信するデータサブセットを受信および記憶するように機能し得る１つ以上の着信レジスタファイルと、別個のコア、レジスタファイル、またはデータポートに発信するデータサブセットを記憶および送信するように機能し得る１つ以上の発信レジスタファイルとを含んでもよい。一例では、Ｓ４２４は、データサブセットがデータサブセットを処理するように機能し得るアレイコアのデータポート内に到着するまで、ボーダーコアのデータポート間で回転することによって、画像のサブセットを処理するための３×３フィルタを横断することを可能にするデータ回転命令を含む粒状伝播経路を生成するように機能してもよい。この例では、Ｓ４２４は、最も効率的な経路で処理するために、ボーダーコアからアレイコアにデータサブセットを転送する最適化されたデータ回転シーケンスを生成するように機能してもよい。データ回転命令の第１の例として、Ｓ４２４は、データ回転命令［Ｒ２７０−ボーダーコア＿１、Ｒ９０−ボーダーコア＿４］を生成してもよく、Ｒ２７０−ボーダーコア＿１を実行すると、データサブセットは、ボーダーコア＿１のデータポート＿１からボーダーコア＿１のデータポート＿４の発信レジスタファイルに２７０度回転し、その時点で、データサブセットは、ボーダーコア＿１からボーダーコア＿４のデータポート＿２の着信レジスタファイルに転送される。Ｒ９０−ボーダーコア＿４を実行すると、データサブセットがボーダーコア＿４のデータポート＿２からボーダーコア＿４のデータポート＿３に９０度回転し、その時点で、データサブセットは、ボーダーコア＿４からアレイコアのデータポート＿１の着信レジスタファイルに転送される。
【００８８】
いくつかの実施形態では、データは、コアのデータポート間の直接送信を介して回転されてもよく、データはまた、コアの中央またはメイン（大きな）レジスタファイルなどの仲介を使用してコア間で線形で送信されてもよいことに留意されたい。例えば、コアの第１のデータポートにおけるデータサブセットは、コアの中央レジスタファイルによってコアの第２のデータポートに収集および送信されてもよい。
【００８９】
さらに、コアは、コアの側面に位置する４つのデータポートを有し得ることが一般的に示されるが、コアは、そのコーナーに位置することができるか、またはコアがその横方向の隣り合うコアに加えて、その斜めの隣り合うコアからデータを送信または収集し得るように位置することができる４つ以上のデータポートを有し得ることに留意されたい。
【００９０】
追加的または代替的に、Ｓ４２４は、クロックサイクルごとに実行され得るデータセットのデータ回転命令を生成するように機能してもよい。すなわち、データサブセットの一連のデータ回転命令の各データ回転命令は、単一のクロックサイクルを必要とし得る。例えば、シーケンス［（１）Ｒ２７０−ボーダーコア＿１、（２）Ｒ９０−ボーダーコア＿４］を含むデータ回転命令は、２つのデータ移動命令を実行するために少なくとも２つのクロックサイクルを必要とし得る。なお、上記の例では、各別個のデータ回転命令をクロックサイクルごとに実行してもよいが、単一のデータサブセットについて、クロックサイクルごとに複数のデータ回転命令を実行してもよい。
【００９１】
第２の実装では、Ｓ４２４は、データポート識別値に基づいて一連のデータ移動を識別することに基づいて、粒状データ伝播経路を生成するように機能してもよい。そのような実装では、コアの各データポートは、データポート識別値に割り当てられてもよい。粒状データ伝播経路のデータ移動命令は、例えば、［（１）南側ポート−ボーダーコア＿１、（２）東側ポート−ボーダーコア＿４］などの一連のデータポート識別値によって定義されてもよい。この例では、データサブセットは、ボーダーコア＿１の第１のデータポートから南側ポートに移動し、次いでボーダーコア＿４の第１のポートから東側ポートに移動してもよい。ポート識別値は、任意のタイプの値ならびに／または文字および／もしくは記号の組み合わせであってもよい。
【００９２】
命令を合成することを含むＳ４３０は、計算命令および実行命令のうちの１つ以上の命令と共にデータ移動命令の組み合わせを含む単一の命令のセットを生成および／または構成するように機能する。Ｓ４３０は、組成に含まれる異なるタイプの命令を並列、直列、ならびに／または直列および並列の組み合わせで実行することを可能にする任意の好適な様式で、データ移動命令を計算および／または実行命令と合成するように機能してもよい。
【００９３】
したがって、Ｓ４３０は、データサブセットおよび単一の組成命令セットが集積回路アレイ全体を通じて共同で移動するように、単一の組成命令セットを特定のデータサブセットにテザリングするように機能してもよい。あるいは、Ｓ４３０は、単一の組成命令セットを、関連するデータサブセットとは別に集積回路アレイにロードするように機能してもよい。
【００９４】
データ移動命令を実行することを含むＳ４４０は、所与のデータセットおよび／または所与のデータセットに由来する複数の異なるデータサブセットの各々についてのデータ移動命令の実行を可能にするように機能してもよい。データ移動命令の実行は、複数の周辺コントローラのうちの１つ以上による命令の実行を含んでもよい。
【００９５】
したがって、いくつかの実施形態では、Ｓ４４０におけるデータ移動命令の実行は、所定のデータフロースケジュールに従って方法４００を実行する集積回路内のデータの自動フローをトリガするようにさらに機能してもよい。そのような実施形態では、データ移動命令の実行が実施されると、入力データセットは、生または未処理の状態で所定のデータフロースケジュールの終了時に完了または処理された状態へ集積回路全体を流れてもよい。
【００９６】
好ましい実施形態のシステムおよび方法ならびにその変形例は、コンピュータ可読命令を記憶するコンピュータ可読媒体を受信するように構成された機械として少なくとも部分的に具体化および／または実装され得る。命令は、好ましくはシステムおよびプロセッサおよび／またはコントローラの１つ以上の部分と統合されたコンピュータ実行可能な構成要素によって実行される。コンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＥＥＰＲＯＭ、光学デバイス（ＣＤまたはＤＶＤ）、ハードドライブ、フロッピードライブ、または任意の好適なデバイスなどの任意の好適なコンピュータ可読媒体に記憶することができる。コンピュータ実行可能構成要素は、好ましくは、一般的またはアプリケーション固有のプロセッサであるが、任意の好適な専用ハードウェアまたはハードウェア／ファームウェアの組み合わせデバイスは、代替的または追加的に、命令を実行することができる。
【００９７】
簡潔さのために省略したが、好ましい実施形態は、本明細書に記載するシステムおよび方法の実装の全ての組み合わせおよび順列を含む。
【００９８】
当業者は、先の詳細な説明から、ならびに図面および特許請求の範囲から認識するであるように、以下の特許請求の範囲に定義される本発明の範囲から逸脱することなく、本発明の好ましい実施形態に修正および変更を加えることができる。
【図１】
2021518591.tif 000003
【図１Ａ】
2021518591.tif 000004
【図２】
2021518591.tif 000005
【図３Ａ】
2021518591.tif 000006
【図３Ｂ】
2021518591.tif 000007
【図４】
2021518591.tif 000008
【図５】
2021518591.tif 000009
【図６】
2021518591.tif 000010
【国際調査報告】
2021518591.tif 000011