(57)【要約】  デバイスは、複数のデータ処理エンジン［３０４］を含み得る。データ処理エンジン［３０４］の各々は、コア［６０２］およびメモリモジュール［６０４］を含み得る。複数のデータ処理エンジン［３０４］は、複数の列に編成され得る。各コアは、複数のデータ処理エンジン［３０４］のうちの他の近傍のデータ処理エンジン［３０４］のメモリモジュール［６０４］への共有アクセスによって、当該他の近傍のデータ処理エンジン［３０４］と通信するように構成され得る。
2021520550.tif 000002
【特許請求の範囲】
【請求項１】
デバイスであって、
複数のデータ処理エンジンを備え、
各データ処理エンジンはコアとメモリモジュールとを含み、
前記複数のデータ処理エンジンは、複数の行に編成され、
各コアは、前記複数のデータ処理エンジンのうちの他の近傍のデータ処理エンジンのメモリモジュールへの共有アクセスによって、前記他の近傍のデータ処理エンジンと通信するように構成される、デバイス。
【請求項２】
各データ処理エンジンのメモリモジュールは、メモリと、前記メモリへの複数のメモリインターフェースとを含み、前記複数のメモリインターフェースのうちの第１のメモリインターフェースは、同じデータ処理エンジン内のコアに結合され、前記複数のメモリインターフェースのうちの各他のメモリインターフェースは、前記複数のデータ処理エンジンのうちの異なるデータ処理エンジンのコアに結合される、請求項１に記載のデバイス。
【請求項３】
前記複数のデータ処理エンジンはさらに複数の列に編成され、前記列内の前記複数のデータ処理エンジンのコアは整列され、前記列内の前記複数のデータ処理エンジンのメモリモジュールは整列される、請求項２に記載のデバイス。
【請求項４】
選択されたデータ処理エンジンのメモリモジュールは、
前記選択されたデータ処理エンジンのすぐ上のデータ処理エンジンのコアに結合される第１のメモリインターフェースと、
前記選択されたデータ処理エンジン内のコアに結合される第２のメモリインターフェースと、
前記選択されたデータ処理エンジンのすぐ隣のデータ処理エンジンのコアに結合される第３のメモリインターフェースと、
前記選択されたデータ処理エンジンのすぐ下のデータ処理エンジンのコアに結合される第４のメモリインターフェースとを含む、請求項３に記載のデバイス。
【請求項５】
選択されたデータ処理エンジンは、メモリモジュールへの共有アクセスを介して、前記複数のデータ処理エンジンのうちの少なくとも１０個のデータ処理エンジンからなるグループと通信するように構成される、請求項３に記載のデバイス。
【請求項６】
前記グループのうちの少なくとも２つのデータ処理エンジンは、前記複数のデータ処理エンジンのうちの少なくとも１０個のデータ処理エンジンからなるグループのうちの２つ以上のメモリモジュールにアクセスするように構成される、請求項５に記載のデバイス。
【請求項７】
前記複数の行のデータ処理エンジンは、
前記複数のデータ処理エンジンのうちの第１のサブセットを含む第１の行と、
前記複数のデータ処理エンジンのうちの第２のサブセットを含む第２の行とを含み、前記第２の行の各データ処理エンジンの向きは、前記第１の行の各データ処理エンジンの向きに対して水平方向に反転される、請求項２に記載のデバイス。
【請求項８】
選択されたデータ処理エンジンのメモリモジュールは、
前記選択されたデータ処理エンジンのすぐ上のデータ処理エンジンのコアに結合される第１のメモリインターフェースと、
前記選択されたデータ処理エンジン内のコアに結合される第２のメモリインターフェースと、
前記選択されたデータ処理エンジンのすぐ隣のデータ処理エンジンのコアに結合される第３のメモリインターフェースと、
前記選択されたデータ処理エンジンのすぐ下のデータ処理エンジンのコアに結合される第４のメモリインターフェースとを含む、請求項７に記載のデバイス。
【請求項９】
選択されたデータ処理エンジンは、メモリモジュールへの共有アクセスを介して、前記複数のデータ処理エンジンのうちの少なくとも８つのデータ処理エンジンからなるグループと通信するように構成される、請求項７に記載のデバイス。
【請求項１０】
前記グループのうちの少なくとも４つのデータ処理エンジンは、前記複数のデータ処理エンジンのうちの少なくとも８つのデータ処理エンジンからなるグループのうちの２つ以上のメモリモジュールにアクセスするように構成される、請求項９に記載のデバイス。
【請求項１１】
デバイスであって、
複数のデータ処理エンジンを備え、
各データ処理エンジンアレイは、
複数のメモリバンクを有するメモリプールと、
各々が前記メモリプールに結合され、前記複数のメモリバンクにアクセスするように構成された複数のコアと、
前記メモリプールと少なくとも１つの近傍のデータ処理エンジンのメモリマッピングされたスイッチとに結合されるメモリマッピングされたスイッチと、
前記複数のコアの各々と前記少なくとも１つの近傍のデータ処理エンジンのストリームスイッチとに結合されるストリームスイッチとを含む、デバイス。
【請求項１２】
前記メモリプールは、
前記複数のメモリバンクの各々に結合されるクロスバーと、
前記複数のコアの各々および前記クロスバーに結合されるインターフェースとを含む、請求項１１に記載のデバイス。
【請求項１３】
各データ処理エンジンは、さらに、
前記メモリプールおよび前記ストリームスイッチに結合されるダイレクトメモリアクセスエンジンを含み、前記ダイレクトメモリアクセスエンジンは、前記メモリプールから前記ストリームスイッチにデータを提供し、前記ストリームスイッチから前記メモリプールにデータを書き込むように構成される、請求項１２に記載のデバイス。
【請求項１４】
前記メモリプールは、さらに、
前記クロスバーおよび前記ダイレクトメモリアクセスエンジンに結合されるさらなるインターフェースを含む、請求項１３に記載のデバイス。
【請求項１５】
前記複数のコアの各々は、前記複数のメモリバンクへの共有アクセスを有する、請求項１１に記載のデバイス。
【請求項１６】
各データ処理エンジン内において、前記メモリマッピングされたスイッチは、前記データ処理エンジンをプログラミングするための構成データを受信するように構成される、請求項１１に記載のデバイス。
【請求項１７】
前記ストリームスイッチは、前記構成データに基づいて前記複数のデータ処理エンジンのうちの異なるデータ処理エンジンとの接続を確立するようにプログラム可能である、請求項１６に記載のデバイス。
【請求項１８】
各タイル内の複数のコアは、直接結合される、請求項１１に記載のデバイス。
【請求項１９】
各データ処理エンジン内において、前記複数のコアのうちの最初のコアは、第１の近傍のデータ処理エンジン内のコアに直接結合され、前記複数のコアのうちの最後のコアは、第２の近傍のデータ処理エンジン内のコアに直接結合される、請求項１８に記載のデバイス。
【請求項２０】
前記複数のコアの各々は、非活性化するようにプログラム可能である、請求項１１に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示は、集積回路デバイス（デバイス）に関し、より具体的には、データ処理エンジンおよび／またはデータ処理エンジンアレイを含むデバイスに関する。
【背景技術】
【０００２】
背景
プログラマブル集積回路（ＩＣ）は、プログラマブル回路を含む、あるタイプのＩＣを指す。プログラマブルＩＣの例は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。ＦＰＧＡは、プログラマブル回路ブロックを含むことにより特徴付けられる。プログラマブル回路ブロックの例は、入出力ブロック（ＩＯＢ）、構成可能なロジックブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、および遅延ロックループ（ＤＬＬ）を含むが、これらに限定されない。
【０００３】
回路設計は、コンフィギュレーションビットストリームと呼ばれることもある構成データをデバイス内にロードすることによって、プログラマブルＩＣのプログラマブル回路内に物理的に実現され得る。構成データは、デバイスの内部コンフィギュレーションメモリセルにロードすることができる。個々のコンフィギュレーションメモリセルの集合状態は、プログラマブルＩＣの機能性を決定する。たとえば、さまざまなプログラマブル回路ブロックによって実行される特定の動作およびプログラマブルＩＣのプログラマブル回路ブロック間の接続性は、構成データがロードされるとコンフィギュレーションメモリセルの集合状態によって定義される。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。各データ処理エンジンは、コアおよびメモリモジュールを含み得る。各コアは、同じデータ処理エンジンにおけるメモリモジュールおよび複数のデータ処理エンジンのうちの少なくとも１つの他のデータ処理エンジン内のメモリモジュールにアクセスするように構成され得る。
【０００５】
１つまたは複数の実施形態では、ある方法は、データを生成する第１のデータ処理エンジンの第１のコアを含み得、第１のコアは、第１のデータ処理エンジン内の第１のメモリモジュールにデータを書き込み、上記方法はさらに、第１のメモリモジュールからデータを読み出す第２のデータ処理エンジンの第２のコアとを含み得る。
【０００６】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンと、サブシステムと、複数のデータ処理エンジンおよびサブシステムに結合されるシステムオンチップ（ＳｏＣ）インターフェースブロックとを含み得る。ＳｏＣインターフェースブロックは、サブシステムと複数のデータ処理エンジンとの間でデータを交換するように構成され得る。
【０００７】
１つまたは複数の実施形態では、ＳｏＣインターフェースブロック用のタイルは、構成データの第１の部分を近傍のタイルに提供し、構成データの第２の部分を複数のデータ処理エンジンのうちのあるデータ処理エンジンに提供するように構成されたメモリマッピングされたスイッチを含み得る。タイルは、第１のデータを少なくとも１つの近傍のタイルに提供し、第２のデータを複数のデータ処理エンジンのうちの上記あるデータ処理エンジンに提供するように構成されたストリームスイッチを含み得る。タイルは、タイル内で生成されるイベントおよびタイルの外部の回路からのイベントを受信するように構成されたイベントブロードキャスト回路を含み得、イベントブロードキャスト回路は、選択された宛先にイベントのうちの選択されたものを提供するようにプログラム可能である。タイルは、メモリマッピングされたスイッチ、ストリームスイッチ、およびイベントブロードキャスト回路を、タイルを含むデバイスのサブシステムに結合するインターフェース回路を含み得る。
【０００８】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、コアおよびメモリモジュールを含み得る。複数のデータ処理エンジンは、複数の列に編成され得る。各コアは、複数のデータ処理エンジンのうちの他の近傍のデータ処理エンジンのメモリモジュールへの共有アクセスによって、当該他の近傍のデータ処理エンジンと通信するように構成され得る。
【０００９】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、複数のメモリバンクを有するメモリプールと、各々が、メモリプールに結合され、複数のメモリバンクにアクセスするように構成された複数のコアと、メモリプールに結合されるメモリマッピングされたスイッチおよび少なくとも１つの近傍のデータ処理エンジンのメモリマッピングされたスイッチと、複数のコアの各々に結合され、少なくとも１つの近傍のデータ処理エンジンのストリームスイッチに結合されるストリームスイッチとを含み得る。
【００１０】
この概要セクションは、単に、特定の概念を導入するために提供され、特許請求される主題のいかなる重要な特徴または本質的な特徴を識別するためにも提供されない。本発明の構成の他の特徴は、添付の図面および以下の詳細な説明から明らかとなるであろう。
【００１１】
本発明の構成は、一例として添付の図面に示される。しかしながら、図面は、本発明の構成を図示の特定の実現例にのみ限定すると解釈されるべきではない。さまざまな態様および利点が、以下の詳細な説明を精査し、および図面を参照すると、明らかとなるであろう。
【図面の簡単な説明】
【００１２】
【図１】データ処理エンジン（ＤＰＥ）アレイを含むデバイスの例を示す。
【図２Ａ】１つまたは複数のＤＰＥアレイを有するデバイスのための例示的なアーキテクチャを示す。
【図２Ｂ】１つまたは複数のＤＰＥアレイを有するデバイスのための例示的なアーキテクチャを示す。
【図２Ｃ】１つまたは複数のＤＰＥアレイを有するデバイスのための例示的なアーキテクチャを示す。
【図２Ｄ】１つまたは複数のＤＰＥアレイを有するデバイスのための例示的なアーキテクチャを示す。
【図３】ＤＰＥアレイを含むデバイスの別の例示的なアーキテクチャを示す図である。
【図４Ａ】１つまたは複数のＤＰＥアレイを有するデバイスのマルチダイ実現例の例を示す。
【図４Ｂ】１つまたは複数のＤＰＥアレイを有するデバイスのマルチダイ実現例の例を示す。
【図５Ａ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｂ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｃ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｄ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｅ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｆ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図５Ｇ】ＤＰＥアレイを有するデバイスの例示的なマルチダイ実現例を示す。
【図６】ＤＰＥアレイのうちのあるＤＰＥのための例示的なアーキテクチャを示す。
【図７】複数のＤＰＥ間の接続性の例を示す。
【図８】図６の例示的なＤＰＥアーキテクチャのさらなる態様を例示する。
【図９】ＤＰＥのコアのカスケードインターフェースの例示的な接続性を示す。
【図１０Ａ】ＤＰＥ間の接続性の例を示す。
【図１０Ｂ】ＤＰＥ間の接続性の例を示す。
【図１０Ｃ】ＤＰＥ間の接続性の例を示す。
【図１０Ｄ】ＤＰＥ間の接続性の例を示す。
【図１０Ｅ】ＤＰＥ間の接続性の例を示す。
【図１１】ＤＰＥ内のイベント処理回路の例を示す。
【図１２】ＤＰＥのための別の例示的なアーキテクチャを示す。
【図１３】ＤＰＥアレイのための例示的なアーキテクチャを示す。
【図１４Ａ】システムオンチップ（ＳｏＣ）インターフェースブロックのタイルを実現するための例示的なアーキテクチャを示す。
【図１４Ｂ】システムオンチップ（ＳｏＣ）インターフェースブロックのタイルを実現するための例示的なアーキテクチャを示す。
【図１４Ｃ】システムオンチップ（ＳｏＣ）インターフェースブロックのタイルを実現するための例示的なアーキテクチャを示す。
【図１５】ＳｏＣインターフェースブロックのタイルのプログラマブルロジックインターフェースの例示的な実現例を示す。
【図１６】ＳｏＣインターフェースブロックのタイルのネットワークオンチップ（ＮｏＣ）ストリームインターフェースの例示的な実現例を示す。
【図１７】ＳｏＣインターフェースブロックのタイルのダイレクトメモリアクセス（ＤＭＡ）エンジンの例示的な実現例を示す。
【図１８】複数のＤＰＥのための例示的なアーキテクチャを示す。
【図１９】複数のＤＰＥのための別の例示的なアーキテクチャを示す。
【図２０】ＤＰＥアレイを構成する例示的な方法を示す。
【図２１】ＤＰＥアレイの動作の例示的な方法を示す。
【図２２】ＤＰＥアレイの動作の別の例示的な方法を示す。
【図２３】ＤＰＥアレイの動作の別の例示的な方法を示す。
【図２４】ＤＰＥアレイの動作の別の例示的な方法を示す。
【発明を実施するための形態】
【００１３】
詳細な説明
本開示は、新規な特徴を規定する特許請求の範囲を決めているが、本開示内で記載されるさまざまな特徴は、図面と併せて説明を考慮することによってよりよく理解されるであろうと考えられる。本明細書に記載されるプロセス、マシン、製造、およびそれらの任意の変形は、例示の目的のために提供される。本開示内で記載される具体的な構造的および機能的詳細は、限定的なものとして解釈されるべきではなく、単に特許請求の範囲の基礎として、および実質的に任意の適切に詳細な構造において記載される特徴を様々に採用するように当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本開示内で使用される用語および表現は、限定することを意図するものではなく、むしろ、記載される特徴の理解可能な説明を提供することを意図する。
【００１４】
本開示は、１つまたは複数のデータ処理エンジン（ＤＰＥ）および／またはＤＰＥアレイを含む集積回路デバイス（デバイス）に関する。ＤＰＥアレイは、複数のハードワイヤード回路ブロックを指す。複数の回路ブロックは、プログラム可能であってもよい。ＤＰＥアレイは、複数のＤＰＥおよびシステムオンチップ（ＳｏＣ）インターフェースブロックを含み得る。一般に、ＤＰＥは、データ処理能力を提供することができるコアを含む。ＤＰＥは、さらに、ＤＰＥ内の１つまたは複数のコアによってアクセス可能なメモリモジュールを含む。特定の実施形態では、ＤＰＥのメモリモジュールはまた、ＤＰＥアレイのうちの異なるＤＰＥにおける１つまたは複数の他のコアによってアクセスされてもよい。
【００１５】
ＤＰＥは、ＤＰＥ相互接続をさらに含むことができる。ＤＰＥ相互接続は、ＤＰＥアレイの他のＤＰＥとの通信および／またはＤＰＥアレイを含むデバイスの異なるサブシステムとの通信を実現することができる回路を指す。ＤＰＥ相互接続は、さらに、ＤＰＥの構成をサポートしてもよい。特定の実施形態では、ＤＰＥ相互接続は、制御データおよび／またはデバッグデータを搬送することができる。
【００１６】
ＤＰＥアレイは、さまざまな異なるアーキテクチャのいずれかを使用して編成され得る。１つまたは複数の実施形態において、ＤＰＥアレイは、１つまたは複数の行および１つまたは複数の列に編成され得る。場合によっては、ＤＰＥの列および／または行は整列される。いくつかの実施形態では、各ＤＰＥは、メモリモジュールに結合される単一のコアを含み得る。他の実施形態では、ＤＰＥアレイのうちの１つもしくは複数のＤＰＥまたは各ＤＰＥは、メモリモジュールに結合される２つ以上のコアを含むように実現され得る。
【００１７】
１つまたは複数の実施形態では、ＤＰＥアレイは、各ＤＰＥが各他のＤＰＥと同じである同種構造として実現される。他の実施形態では、ＤＰＥアレイは異種構造として実現され、ＤＰＥアレイは２つ以上の異なるタイプのＤＰＥを含む。たとえば、ＤＰＥアレイは、単一のコアを有するＤＰＥ、複数のコアを有するＤＰＥ、異なる種類のコアがその中に含まれるＤＰＥ、および／または異なる物理アーキテクチャを有するＤＰＥを含み得る。
【００１８】
ＤＰＥアレイは、さまざまなサイズで実現され得る。たとえば、ＤＰＥアレイは、デバイスのダイの全幅および／または全長に及ぶように実現され得る。別の例では、ＤＰＥアレイは、そのようなダイの全幅および／または全長の一部分に及ぶように実現され得る。さらなる実施形態では、１つより多いＤＰＥアレイがダイ内に実現されてもよく、異なるＤＰＥアレイは、ダイ上の異なる領域に分布され、異なるサイズを有し、異なる形状を有し、および／または本明細書に記載される異なるアーキテクチャ（たとえば、整列された行および／または列、同種および／または異種）を有する。さらに、ＤＰＥアレイは、異なる数のＤＰＥの行および／または異なる数のＤＰＥの列を含み得る。
【００１９】
ＤＰＥアレイは、デバイス内のさまざまな異なるサブシステムのいずれと共に利用され、それらに結合されてもよい。そのようなサブシステムは、プロセッサおよび／もしくはプロセッサシステム、プログラマブルロジック、ならびに／またはネットワークオンチップ（ＮｏＣ）を含み得るが、これらに限定されない。特定の実施形態では、ＮｏＣはプログラム可能であってもよい。デバイスに含まれ、ＤＰＥアレイに結合され得るサブシステムのさらなる例は、特定用途向け集積回路（ＡＳＩＣ）、ハードワイヤード回路ブロック、アナログおよび／もしくは混合信号回路、グラフィック処理ユニット（ＧＰＵ）、ならびに／または汎用プロセッサ（たとえば、中央処理ユニットもしくはＣＰＵ）を含み得るが、これらに限定されない。ＣＰＵの例は、ｘ８６タイプのアーキテクチャを有するプロセッサである。本明細書では、用語「ＡＳＩＣ」は、別の単数または複数のタイプの回路と組み合わせた特定用途向け回路を含むＩＣ、ダイ、および／もしくはダイの一部分、ならびに／または全体が特定用途向け回路で形成されるＩＣおよび／もしくはダイを指し得る。
【００２０】
特定の実施形態では、１つまたは複数のＤＰＥアレイを含むデバイスは、単一のダイアーキテクチャを使用して実現され得る。その場合、ＤＰＥアレイおよびそのＤＰＥアレイとともに利用される任意の他のサブシステムは、デバイスの同じダイ上に実現される。他の実施形態では、１つまたは複数のＤＰＥアレイを含むデバイスは、２つ以上のダイを含むマルチダイデバイスとして実現されてもよい。いくつかのマルチダイデバイスでは、１つまたは複数のＤＰＥアレイは、１つのダイに実現されてもよく、１つまたは複数の他のサブシステムは、１つまたは複数の他のダイに実現される。他のマルチダイデバイスでは、１つまたは複数のＤＰＥアレイが、１つまたは複数のダイにおいて、マルチダイデバイスの１つまたは複数の他のサブシステムと組み合わせて実現され得る（たとえば、ＤＰＥアレイは、少なくとも１つのサブシステムと同じダイ内に実現される）。
【００２１】
本開示で記載されるＤＰＥアレイは、最適化されたデジタル信号処理（ＤＳＰ）アーキテクチャを実現することができる。ＤＳＰアーキテクチャは、さまざまな異なる動作の任意の動作を効率的に実行することができる。アーキテクチャによって実行され得る動作のタイプの例としては、ワイヤレスラジオ、判定帰還型等化（ＤＦＥ）、５Ｇ／ベースバンド、ワイヤレスバックホール、機械学習、自動車運転者支援、エンベデッドビジョン、ケーブルアクセス、および／またはレーダに関連する動作が挙げられるが、これらに限定されない。本明細書で記載されるＤＰＥアレイは、従来のプログラマブル（たとえばＦＰＧＡタイプ）回路を利用する他の解決策よりも少ない電力を消費しながら、そのような動作を実行することができる。さらに、ＤＰＥアレイベースの解決策は、従来のプログラマブル回路を利用する他の解決策よりも少ないダイ面積を使用して実現され得る。ＤＰＥアレイはさらに、予測可能かつ保証されたデータスループットおよびレイテンシメトリックを満たしながら、本明細書で記載されるような動作を実行することが可能である。
【００２２】
本発明の構成のさらなる態様が、図面を参照して以下により詳細に記載される。説明の簡略化および明確化のために、図に示される要素は、必ずしも一定の縮尺で描かれていない。たとえば、いくつかの要素の寸法は、明確化のために、他の要素に対して強調されている場合がある。さらに、適切と考えられる場合、参照番号は、対応する、類似の、または同様の特徴を示すために、図面間で繰り返される。
【００２３】
図１は、ＤＰＥアレイ１０２を含むデバイス１００の例を示す。図１の例では、ＤＰＥアレイ１０２は、ＳｏＣインターフェースブロック１０４を含む。また、デバイス１００は、１つまたは複数のサブシステム１０６−１〜１０６−Ｎも含む。１つまたは複数の実施形態では、デバイス１００は、システムオンチップ（ＳｏＣ）タイプのデバイスとして実現される。一般に、ＳｏＣは、互いに対話することが可能な２つ以上のサブシステムを含むＩＣを指す。一例として、ＳｏＣは、プログラムコードを実行するプロセッサおよび１つまたは複数の他の回路を含み得る。他の回路は、ハードワイヤード回路、プログラマブル回路、他のサブシステム、および／またはそれらの任意の組み合わせとして実現されてもよい。回路は、互いにおよび／またはプロセッサと協働して動作することができる。
【００２４】
ＤＰＥアレイ１０２は、複数の相互接続されたＤＰＥで形成される。各ＤＰＥはハードワイヤード回路ブロックである。各ＤＰＥはプログラム可能であってもよい。ＳｏＣインターフェースブロック１０４は、１つまたは複数のタイルを含み得る。ＳｏＣインターフェースブロック１０４のタイルの各々は、ハードワイヤードであり得る。ＳｏＣインターフェースブロック１０４の各タイルは、プログラム可能であってもよい。ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２、たとえばＤＰＥと、デバイス１００のサブシステム１０６などのＳｏＣの他の部分との間のインターフェースを提供する。サブシステム１０６−１〜１０６−Ｎは、たとえば、プロセッサおよび／またはプロセッサシステム（たとえば、ＣＰＵ、汎用プロセッサ、および／またはＧＰＵ）、プログラマブルロジック、ＮｏＣ、ＡＳＩＣ、アナログおよび／または混合信号回路、ならびに／またはハードワイヤード回路ブロックの、１つもしくは複数または任意の組み合わせを表し得る。
【００２５】
１つまたは複数の実施形態では、デバイス１００は、単一のダイアーキテクチャを使用して実現される。その場合、ＤＰＥアレイ１０２および少なくとも１つのサブシステム１０６は、単一のダイに含まれ、または実現され得る。１つまたは複数の他の実施形態では、デバイス１００は、マルチダイアーキテクチャを使用して実現される。その場合、ＤＰＥアレイ１０２およびサブシステム１０６は、２つ以上のダイにわたって実現され得る。たとえば、ＤＰＥアレイ１０２は、１つのダイに実現されてもよく、サブシステム１０６は、１つまたは複数の他のダイに実現される。別の例では、ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２のＤＰＥとは異なるダイにおいて実現され得る。さらに別の例では、ＤＰＥアレイ１０２および少なくとも１つのサブシステム１０６は、同じダイに実現されてもよく、他のサブシステムおよび／または他のＤＰＥアレイは、他のダイに実現される。シングルダイアーキテクチャおよびマルチダイアーキテクチャのさらなる例は、図２、図３、図４および図５に関連して以下でより詳細に記載される。
【００２６】
図２Ａ、図２Ｂ、図２Ｃ、および図２Ｄ（集合的に「図２」と呼ばれる）は、１つまたは複数のＤＰＥアレイ１０２を含むデバイスのための例示的なアーキテクチャを示す。より具体的には、図２は、デバイス１００のためのシングルダイアーキテクチャの例を示している。説明のため、ＳｏＣインターフェースブロック１０４は図２には示されていない。
【００２７】
図２Ａは、単一のＤＰＥアレイを含むデバイス１００の例示的なアーキテクチャを示す。図２Ａの例では、ＤＰＥアレイ１０２は、デバイス１００において、サブシステム１０６−１とともに実現される。ＤＰＥアレイ１０２およびサブシステム１０６−１は、同じダイ内に実現される。ＤＰＥアレイ１０２は、デバイス１００のダイの全幅にわたって延在してもよく、またはデバイス１００のダイを部分的に横切って延在してもよい。図示されるように、ＤＰＥアレイ１０２は、デバイス１００の上部領域に実現される。しかしながら、ＤＰＥアレイ１０２は、デバイス１００の別の領域に実現され得ることを理解されたい。したがって、図２ＡにおけるＤＰＥアレイ１０２の配置および／またはサイズは、限定として意図されない。ＤＰＥアレイ１０２は、ＳｏＣインターフェースブロック１０４（図示せず）によってサブシステム１０６−１に結合され得る。
【００２８】
図２Ｂは、複数のＤＰＥアレイを含むデバイス１００の例示的なアーキテクチャを示す。図２Ｂの例では、複数のＤＰＥアレイがＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２として実現され示される。図２Ｂは、複数のＤＰＥアレイがサブシステム１０６−１と共にデバイス１００の同じダイ内に実現され得ることを示す。ＤＰＥアレイ１０２−１および／またはＤＰＥアレイ１０２−２は、デバイス１００のダイの全幅にわたって延在してもよく、またはデバイス１００のダイを部分的にのみ横切って延在してもよい。図示されるように、ＤＰＥアレイ１０２−１は、デバイス１００の上部領域に実現され、ＤＰＥアレイ１０２−２は、デバイス１００の底部領域に実現される。上述したように、図２ＢにおけるＤＰＥアレイ１０２−１および１０２−２の配置および／またはサイズは、限定として意図されない。
【００２９】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２は、実質的に同様または同じであり得る。たとえば、ＤＰＥアレイ１０２−１は、ＤＰＥアレイ１０２−２と、ＤＰＥのサイズ、形状、数、ならびにＤＰＥが各それぞれのＤＰＥアレイにおいて同種であるかまたは同様のタイプおよび配列であるかに関して、同じであり得る。１つまたは複数の他の実施形態では、ＤＰＥアレイ１０２−１は、ＤＰＥアレイ１０２−２とは異なり得る。たとえば、ＤＰＥアレイ１０２−１は、ＤＰＥアレイ１０２−２と、ＤＰＥのサイズ、形状、数、コアの種類、ならびにＤＰＥが各それぞれのＤＰＥアレイにおいて同種であるかまたは異なるタイプおよび／または配列であるかに関して、異なり得る。
【００３０】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２の各々は、それ自体のＳｏＣインターフェースブロック（図示せず）を介して、サブシステム１０６−１に結合される。たとえば、第１のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−１をサブシステム１０６−１に結合するために使用されてもよく、第２のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−２をサブシステム１０６−１に結合するために使用されてもよい。別の実施形態では、単一のＳｏＣインターフェースブロックを使用して、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２の両方をサブシステム１０６−１に結合することができる。後者の場合、たとえば、ＤＰＥアレイのうちの１つは、ＳｏＣインターフェースブロックを含まない場合がある。そのアレイ内のＤＰＥは、他のＤＰＥアレイのＳｏＣインターフェースブロックを使用してサブシステム１０６−１に結合し得る。
【００３１】
図２Ｃは、複数のＤＰＥアレイおよび複数のサブシステムを含むデバイス１００の例示的なアーキテクチャを示す。図２Ｃの例では、複数のＤＰＥアレイが実現され、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２として示される。図２Ｃは、複数のＤＰＥアレイがデバイス１００の同じダイ内に実現され得ること、およびＤＰＥアレイ１０２の配置または場所が異なり得ることを示している。さらに、ＤＰＥアレイ１０２−１および１０２−２は、サブシステム１０６−１および１０６−２と同じダイ内に実現される。
【００３２】
図２Ｃの例では、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２は、デバイス１００のダイの全幅にわたって延在していない。むしろ、ＤＰＥアレイ１０２−１および１０２−２の各々は、デバイス１００のダイを部分的に横切って延在し、したがって、デバイス１００のダイの幅の一部である領域内に実現される。図２Ｂの例のように、図２ＣのＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２は、実質的に同様もしくは同じでもよく、または異なっていてもよい。
【００３３】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２の各々は、サブシステム１０６−１および／またはサブシステム１０６−２に、それ自体のＳｏＣインターフェースブロック（図示せず）を介して結合される。例示的かつ非限定的な例では、第１のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−１をサブシステム１０６−１に結合するために使用されてもよく、第２のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−２をサブシステム１０６−２に結合するために使用されてもよい。その場合、各ＤＰＥアレイは、デバイス１００の利用可能なサブシステムのサブセットと通信する。別の例では、第１のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−１をサブシステム１０６−１および１０６−２に結合するために使用されてもよく、第２のＳｏＣインターフェースブロックが含まれ、ＤＰＥアレイ１０２−２をサブシステム１０６−１および１０６−２に結合するために使用されてもよい。さらに別の例では、単一のＳｏＣインターフェースブロックを使用して、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２の両方をサブシステム１０６−１および／またはサブシステム１０６−２に結合することができる。上述したように、図２ＣにおけるＤＰＥアレイ１０２−１および１０２−２の配置ならびに／またはサイズは、限定として意図されない。
【００３４】
図２Ｄは、複数のＤＰＥアレイおよび複数のサブシステムを含むデバイス１００の別の例示的なアーキテクチャを示す。図２Ｄの例では、複数のＤＰＥアレイがＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２として実現され、示される。図２Ｄはまた、複数のＤＰＥアレイがデバイス１００の同じダイ内に実現され得ること、ならびにＤＰＥアレイ１０２の配置および／または場所が異なり得ることを示す。図２Ｄの例では、ＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２は、デバイス１００のダイの全幅にわたって延在していない。むしろ、ＤＰＥアレイ１０２−１および１０２−２の各々は、デバイス１００のダイの幅の一部である領域に実現される。さらに、図２Ｄのデバイス１００は、ＤＰＥアレイ１０２−１および１０２−２と同じダイ内にサブシステム１０６−１、１０６−２、１０６−３、および１０６−４を含む。図２Ｂの例のように、図２ＤのＤＰＥアレイ１０２−１およびＤＰＥアレイ１０２−２は、実質的に同様もしくは同じでもよく、または異なっていてもよい。
【００３５】
図２Ｄの例におけるＤＰＥアレイとサブシステムとの間の接続性は変動し得る。ある場合では、ＤＰＥアレイは、デバイス１００において利用可能なサブシステムのサブセットにのみ結合され得る。他の場合では、ＤＰＥアレイは、デバイス１００内の１つより多いサブシステムまたは各サブシステムに結合され得る。
【００３６】
図２の例は、限定ではなく例示を目的として提供される。単一のダイを有するデバイスは、ダイの異なる領域に位置する１つまたは複数の異なるＤＰＥアレイを含み得る。ＤＰＥアレイの数、配置、および／またはサイズは変動し得る。さらに、ＤＰＥアレイは同じでも異なっていてもよい。１つまたは複数のＤＰＥアレイが、本開示内で記載される異なる種類のサブシステムの１つもしくは複数および／または任意の組み合わせと組み合わせて実現されてもよい。
【００３７】
１つ以上の実施形態において、２つ以上のＤＰＥアレイは、互いと直接通信するように構成されてもよい。たとえば、ＤＰＥアレイ１０２−１は、ＤＰＥアレイ１０２−２および／または追加のＤＰＥアレイと直接通信することができてもよい。特定の実施形態では、ＤＰＥアレイ１０２−１は、１つまたは複数のＳｏＣインターフェースブロックを介してＤＰＥアレイ１０２−２および／または他のＤＰＥアレイと通信することができる。
【００３８】
図３は、デバイス１００の別の例示的なアーキテクチャを示す。図３の例では、ＤＰＥアレイ１０２は、ＳｏＣインターフェースブロック１０４を含むＤＰＥ３０４の二次元アレイとして実現される。ＤＰＥアレイ１０２は、以下でより詳細に説明するさまざまな異なるアーキテクチャのいずれかを使用して実現され得る。限定ではなく例示のために、図３は、図１９に関連してより詳細に記載されるように、整列された行および整列された列に配置されたＤＰＥ３０４を示す。しかしながら、他の実施形態では、ＤＰＥ３０４は、選択された行および／または列内のＤＰＥが、隣接する行および／または列内のＤＰＥに対して水平方向に反転またはフリップされるように配置されてもよい。ＤＰＥの水平反転の例は、図１８に関連して記載される。１つまたは複数の他の実施形態では、ＤＰＥの行および／または列は、隣接する行および／または列に対してオフセットされ得る。１つもしくは複数のまたはすべてのＤＰＥ３０４は、図６および図８に関連して概して記載されるような単一のコアを含むように、または図１２に関連して概して記載されるような２つ以上のコアを含むように実現され得る。
【００３９】
ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４をデバイス１００の１つまたは複数の他のサブシステムに結合することができる。１つまたは複数の実施形態では、ＳｏＣインターフェースブロック１０４は、隣接するＤＰＥ３０４に結合される。たとえば、ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２内のＤＰＥの最下行の各ＤＰＥ３０４に直接結合され得る。例示において、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４−１、３０４−２、３０４−３、３０４−４、３０４−５、３０４−６、３０４−７、３０４−８、３０４−９、および３０４−１０に直接接続され得る。
【００４０】
図３は、例示の目的のために示される。他の実施形態では、ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２の上部、ＤＰＥアレイ１０２の左側（たとえば列として）、ＤＰＥアレイ１０２の右側（たとえば列として）、またはＤＰＥアレイ１０２内およびその周辺の複数の場所（たとえば、ＤＰＥアレイ１０２内の１つもしくは複数の介在行および／または列として）に位置し得る。ＳｏＣインターフェースブロック１０４のレイアウトおよび位置に応じて、ＳｏＣインターフェースブロック１０４に結合される特定のＤＰＥは変わり得る。
【００４１】
限定ではなく例示のために、ＳｏＣインターフェースブロック１０４がＤＰＥ３０４の左側に位置する場合、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４−１、ＤＰＥ３０４−１１、ＤＰＥ３０４−２１、およびＤＰＥ３０４−３１を含むＤＰＥの左列に直接結合され得る。ＳｏＣインターフェースブロック１０４がＤＰＥ３０４の右側に位置する場合、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４−１０、ＤＰＥ３０４−２０、ＤＰＥ３０４−３０、およびＤＰＥ３０４−４０を含むＤＰＥの右列に直接結合され得る。ＳｏＣインターフェースブロック１０４がＤＰＥ３０４の上に位置する場合、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４−３１、ＤＰＥ３０４−３２、ＤＰＥ３０４−３３、ＤＰＥ３０４−３４、ＤＰＥ３０４−３５、ＤＰＥ３０４−３６、ＤＰＥ３０４−３７、ＤＰＥ３０４−３８、ＤＰＥ３０４−３９、およびＤＰＥ３０４−４０を含むＤＰＥの最上部の行に結合され得る。ＳｏＣインターフェースブロック１０４が複数の場所に位置している場合、ＳｏＣインターフェースブロック１０４に直接接続される特定のＤＰＥは変わり得る。たとえば、ＳｏＣインターフェースブロックがＤＰＥアレイ１０２内の行および／または列として実現される場合、ＳｏＣインターフェースブロック１０４に直接結合されるＤＰＥは、ＳｏＣインターフェースブロック１０４の１つの側もしくは複数の側または各側でＳｏＣインターフェースブロック１０４に隣接するものであってよい。
【００４２】
ＤＰＥ３０４は、集合的にとらえられた場合にＤＰＥ相互接続ネットワークを形成するＤＰＥ相互接続（図示せず）によって相互接続される。したがって、ＳｏＣインターフェースブロック１０４は、ＳｏＣインターフェースブロック１０４に直接接続されたＤＰＥアレイ１０２の１つまたは複数の選択されたＤＰＥ３０４と通信し、各それぞれのＤＰＥ３０４内に実現されるＤＰＥ相互接続で形成されたＤＰＥ相互接続ネットワークを利用することによって、ＤＰＥアレイ１０２の任意のＤＰＥ３０４と通信することができる。
【００４３】
ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２内の各ＤＰＥ３０４をデバイス１００の１つまたは複数の他のサブシステムと結合することができる。説明のため、デバイス１００は、ＮｏＣ３０８、プログラマブルロジック（ＰＬ）３１０、プロセッサシステム（ＰＳ）３１２、ならびに／またはハードワイヤード回路ブロック３１４、３１６、３１８、３２０、および／もしくは３２２のいずれかなどのサブシステム（たとえばサブシステム１０６）を含む。たとえばＳｏＣインターフェースブロック１０４は、選択されたＤＰＥ３０４とＰＬ３１０との間の接続を確立することが可能である。ＳｏＣインターフェースブロック１０４はまた、選択されたＤＰＥ３０４とＮｏＣ３０８との間の接続を確立することが可能である。ＮｏＣ３０８を通して、選択されたＤＰＥ３０４は、ＰＳ３１２ならびに／またはハードワイヤード回路ブロック３２０および３２２と通信することが可能である。選択されたＤＰＥ３０４は、ＳｏＣインターフェースブロック１０４およびＰＬ３１０を介してハードワイヤード回路ブロック３１４〜３１８と通信することが可能である。特定の実施形態では、ＳｏＣインターフェースブロック１０４は、デバイス１００の１つまたは複数のサブシステムに直接結合され得る。たとえば、ＳｏＣインターフェースブロック１０４は、ＰＳ３１２および／または他のハードワイヤード回路ブロックに直接結合され得る。特定の実施形態では、ハードワイヤード回路ブロック３１４〜３２２は、ＡＳＩＣの例と見なされ得る。
【００４４】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２は、単一のクロックドメインを含む。ＮｏＣ３０８、ＰＬ３１０、ＰＳ３１２、およびさまざまなハードワイヤード回路ブロックなどの他のサブシステムは、１つもしくは複数の別個のまたは異なるクロックドメインにあり得る。さらに、ＤＰＥアレイ１０２は、サブシステムのうちの他のサブシステムとインターフェースするために使用され得る追加のクロックを含み得る。特定の実施形態では、ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２のＤＰＥ３０４に提供または分配され得る１つまたは複数のクロック信号を生成することができるクロック信号生成器を含む。
【００４５】
ＤＰＥアレイ１０２は、ＤＰＥ３０４およびＳｏＣインターフェースブロック１０４間の接続性ならびにＤＰＥ３０４およびＳｏＣインターフェースブロック１０４がどのように動作するかを定義する構成データを内部構成メモリセル（本明細書では「構成レジスタ」とも称される）にロードすることによってプログラムされ得る。たとえば、特定のＤＰＥ３０４またはＤＰＥ３０４のグループがサブシステムと通信するために、ＤＰＥ３０４およびＳｏＣインターフェースブロック１０４は、そのようにプログラムされる。同様に、１つまたは複数の特定のＤＰＥ３０４が１つまたは複数の他のＤＰＥ３０４と通信するために、ＤＰＥはそのようにプログラムされる。ＤＰＥ３０４およびＳｏＣインターフェースブロック１０４は、それぞれＤＰＥ３０４およびＳｏＣインターフェースブロック１０４内の構成レジスタに構成データをロードすることによってプログラムされ得る。別の例では、ＳｏＣインターフェースブロック１０４の一部であるクロック信号生成器は、ＤＰＥアレイ１０２に与えられるクロック周波数を変化させるために構成データを使用してプログラム可能であってもよい。
【００４６】
ＮｏＣ３０８は、ＰＬ３１０、ＰＳ３１２、およびハードワイヤード回路ブロックのうちの選択された回路ブロック（たとえば回路ブロック３２０および３２２）への接続を提供する。図３の例では、ＮｏＣ３０８はプログラム可能である。他のプログラマブル回路と共に使用されるプログラマブルＮｏＣの場合、ＮｏＣ３０８を通じてルーティングされるべきネットは、ユーザ回路設計がデバイス１００内での実現のために作成されるまで未知である。ＮｏＣ３０８は、スイッチおよびインターフェースなどのＮｏＣ３０８内の要素がどのように構成され、データをスイッチからスイッチに、およびＮｏＣインターフェース間で渡すかを定義する構成データを内部構成レジスタにロードすることによってプログラムされ得る。
【００４７】
ＮｏＣ３０８は、デバイス１００の一部として作製され、物理的に修正可能ではないが、ユーザ回路設計の異なるマスタ回路と異なるスレーブ回路との間の接続性を確立するようにプログラムされ得る。この点に関して、ＮｏＣ３０８は、異なる回路設計に適応することができ、各異なる回路設計は、ＮｏＣ３０８によって結合され得る、デバイス１００内の異なる場所で実現されるマスタ回路およびスレーブ回路の異なる組み合わせを有する。ＮｏＣ３０８は、ユーザ回路設計のマスタ回路とスレーブ回路との間でデータ、たとえばアプリケーションデータおよび／または構成データをルーティングするようにプログラムされ得る。たとえば、ＮｏＣ３０８は、ＰＬ３１０内に実現される異なるユーザ指定回路を、ＰＳ３１２と、ＳｏＣインターフェースブロック１０４を介してＤＰＥ３０４のうちの異なるＤＰＥと、異なるハードワイヤード回路ブロックと、ならびに／またはデバイス１００の外部の異なる回路および／もしくはシステムと結合するようにプログラムされ得る。
【００４８】
ＰＬ３１０は、指定された機能を実行するようにプログラムされ得る回路である。一例として、ＰＬ３１０はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路として実現され得る。ＰＬ３１０は、プログラマブル回路ブロックのアレイを含むことができる。ＰＬ３１０内のプログラマブル回路ブロックの例としては、入出力ブロック（ＩＯＢ）、構成可能なロジックブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、デジタル信号処理ブロック（ＤＳＰ）、クロックマネージャ、および／または遅延ロックループ（ＤＬＬ）が含まれるが、これらに限定されない。
【００４９】
ＰＬ３１０内の各プログラマブル回路ブロックは、典型的には、プログラマブル相互接続回路およびプログラマブルロジック回路の両方を含む。プログラマブル相互接続回路は、典型的には、プログラマブル相互接続ポイント（ＰＩＰ）によって相互接続されるさまざまな長さの多数の相互接続ワイヤを含む。典型的には、相互接続ワイヤは、ビット単位（たとえば、各ワイヤが１ビットの情報を伝達する）で接続性を与えるように（たとえばワイヤ単位で）構成される。プログラマブルロジック回路は、たとえばルックアップテーブル、レジスタ、算術論理等を含み得るプログラマブル素子を使用してユーザ設計のロジックを実現する。プログラマブル相互接続回路およびプログラマブルロジック回路は、プログラマブル素子がどのように構成され動作するかを定義する構成データを内部構成メモリセルにロードすることによってプログラムされ得る。
【００５０】
図３の例では、ＰＬ３１０は、２つの別個のセクションで示されている。別の例では、ＰＬ３１０は、プログラマブル回路の統合領域として実現され得る。さらに別の例では、ＰＬ３１０は、プログラマブル回路の３つ以上の異なる領域として実現され得る。ＰＬ３１０の特定の編成は、限定として意図されない。
【００５１】
図３の例では、ＰＳ３１２は、デバイス１００の一部として作製されるハードワイヤード回路として実現される。ＰＳ３１２は、さまざまな異なるプロセッサタイプのいずれかとして実現され得るか、またはそれを含み得る。たとえば、ＰＳ３１２は、個別のプロセッサ、たとえば、プログラムコードを実行することができる単一のコアとして実現され得る。別の例では、ＰＳ３１２は、マルチコアプロセッサとして実現され得る。さらに別の例では、ＰＳ３１２は、１つまたは複数のコア、モジュール、コプロセッサ、インターフェース、および／または他のリソースを含み得る。ＰＳ３１２は、さまざまな異なるタイプのアーキテクチャのいずれかを使用して実現され得る。ＰＳ３１２を実現するために使用され得る例示的なアーキテクチャは、ＡＲＭプロセッサアーキテクチャ、ｘ８６プロセッサアーキテクチャ、ＧＰＵアーキテクチャ、モバイルプロセッサアーキテクチャ、ＤＳＰアーキテクチャ、またはコンピュータ可読命令もしくはプログラムコードを実行することができる他の好適なアーキテクチャを含み得るが、それらに限定されない。
【００５２】
回路ブロック３１４〜３２２は、さまざまな異なるハードワイヤード回路ブロックのいずれかとして実現され得る。ハードワイヤード回路ブロック３１４〜３２２は、専用機能を実行するようにカスタマイズされ得る。回路ブロック３１４〜３２２の例は、入出力ブロック（ＩＯＢ）、トランシーバ、または他の特化された回路ブロックを含むが、それらに限定されない。上述したように、回路ブロック３１４〜３２２は、ＡＳＩＣの例と見なすことができる。
【００５３】
図３の例は、単一のダイを含むデバイスにおいて実現され得るアーキテクチャを示す。ＤＰＥアレイ１０２は、デバイス１００の全幅を占有するものとして示されているが、他の実施形態では、ＤＰＥアレイ１０２は、デバイス１００の全幅未満を占有し、および／またはデバイス１００の異なる領域に位置してもよい。さらに、含まれるＤＰＥ３０４の数は変わり得る。したがって、ＤＰＥ３０４の特定の数の列および／または行は、図３に示すものとは異なり得る。
【００５４】
１つまたは複数の他の実施形態では、デバイス１００などのデバイスは、デバイス１００の異なる領域に位置する２つ以上のＤＰＥアレイ１０２を含み得る。たとえば、追加のＤＰＥアレイが、回路ブロック３２０および３２２の下に位置し得る。
【００５５】
上述したように、図２〜図３は、単一のダイを含むデバイスの例示的なアーキテクチャを示す。１つまたは複数の他の実施形態では、デバイス１００は、１つまたは複数のＤＰＥアレイ１０２を含むマルチダイデバイスとして実現され得る。
【００５６】
図４Ａおよび図４Ｂ（集合的に「図４」と呼ばれる）は、デバイス１００のマルチダイ実現例を示す。マルチダイデバイスは、単一のパッケージ内に２つ以上のダイを含むデバイスまたはＩＣである。
【００５７】
図４Ａは、デバイス１００のトポグラフィ図を示す。図４Ａの例では、デバイス１００は、複数のダイを積層することによって形成される「積層ダイ」タイプのデバイスとして実現される。デバイス１００は、インターポーザ４０２と、ダイ４０４と、ダイ４０６と、基板４０８とを含む。ダイ４０４および４０６の各々は、インターポーザ４０２の表面、たとえば、上面に取り付けられる。一態様では、ダイ４０４および４０６は、フリップチップ技術を使用してインターポーザ４０２に取り付けられる。インターポーザ４０２は、基板４０８の上面に取り付けられる。
【００５８】
図４Ａの例では、インターポーザ４０２は、ダイ４０４および４０６が水平に積み重ねられる平面を有するダイである。図示されるように、ダイ４０４および４０６は、インターポーザ４０２の平面上に並んで配置される。図４Ａのインターポーザ４０２に示されるダイの数は、限定ではなく例示のためのものである。他の実施形態では、３つ以上のダイがインターポーザ４０２に取り付けられてもよい。
【００５９】
インターポーザ４０２は、ダイ４０４および４０６の各々に対して共通の実装面および電気的結合を提供する。インターポーザ４０２の製造は、ワイヤを形成するようパターニングされる１つまたは複数の導電層の堆積を可能にする１つまたは複数のプロセスステップを含むことができる。これらの導電層は、アルミニウム、金、銅、ニッケル、さまざまなシリサイド、および／または他の好適な材料から形成されてもよい。インターポーザ４０２は、たとえば二酸化ケイ素などの１つもしくは複数の誘電体層または絶縁層の堆積を可能にする１つまたは複数の追加のプロセスステップを使用して製造され得る。インターポーザ４０２はまた、ビアおよび貫通ビア（ＴＶ）を含み得る。ＴＶは、インターポーザ４０２およびその基板を実現するために使用される特定の材料に応じて、シリコン貫通ビア（ＴＳＶ）、ガラス貫通ビア（ＴＧＶ）、または他のビア構造とすることができる。インターポーザ４０２が受動ダイとして実現される場合、インターポーザ４０２は、さまざまなタイプのはんだバンプ、ビア、ワイヤ、ＴＶ、およびアンダーバンプメタライゼーション（ＵＢＭ）のみを有し得る。能動ダイとして実現される場合、インターポーザ４０２は、Ｐ−Ｎ接合を含むトランジスタ、ダイオードなど電気的デバイスに関して１つまたは複数の能動デバイスを形成する追加のプロセス層を含み得る。
【００６０】
ダイ４０４および４０６の各々は、受動ダイまたは１つもしくは複数の能動デバイスを含む能動ダイとして実現され得る。たとえば、１つまたは複数のＤＰＥアレイは、能動ダイとして実現される場合、ダイ４０４および／または４０６の一方または両方に実現され得る。１つまたは複数の実施形態では、ダイ４０４は、１つまたは複数のＤＰＥアレイを含むことができ、ダイ４０６は、本明細書で記載される異なるサブシステムのいずれかを実現する。本明細書に提供される例は、例示の目的のためのものであり、限定することを意図していない。たとえば、デバイス１００は、３つ以上のダイを含むことができ、それらのダイは、異なるタイプおよび／または機能のものである。
【００６１】
図４Ｂは、図４Ａのデバイス１００の側断面図である。図４Ｂは、切断線４Ｂ−４Ｂに沿って取られた、図４Ａからのデバイス１００の図を示す。ダイ４０４および４０６の各々は、はんだバンプ４１０を介してインターポーザ４０２の第１の平面に電気的および機械的に結合される。一例では、はんだバンプ４１０は、マイクロバンプとして実現される。さらに、ダイ４０４および４０６をインターポーザ４０２に取り付けるために、さまざまな他の技法のいずれかが使用され得る。たとえば、ダイ４０４および４０６をインターポーザ４０２に機械的および電気的に取付けるために、ボンドワイヤまたはエッジワイヤが使用されてもよい。別の例では、接着材料を使用してダイ４０４および４０６をインターポーザ４０２に機械的に取り付けることができる。図４Ｂに示されるように、はんだバンプ４１０を使用してダイ４０４および４０６をインターポーザ４０２に取り付けることは、例示の目的のために提供され、限定として意図されない。
【００６２】
インターポーザ４０２は、インターポーザ４０２内に破線または点線で示される１つまたは複数の導電層４１２を含む。導電層４１２は、前述のようなさまざまな金属層のいずれかを使用して実現される。導電層４１２は、インターポーザ４０２のワイヤ４１４を実現するパターニングされた金属層を形成するように処理される。少なくとも２つの異なるダイ、たとえばダイ４０４および４０６を結合する、インターポーザ４０２内に実現されるワイヤは、ダイ間ワイヤと呼ばれる。図４Ｂは、例示の目的のためにダイ間ワイヤと見なされるワイヤ４１４を示す。ワイヤ４１４は、ダイ４０４とダイ４０６との間でダイ間信号を渡す。たとえば、ワイヤ４１４の各々は、ダイ４０４の下のはんだバンプ４１０をダイ４０６の下のはんだバンプ４１０と結合し、それによってダイ４０４と４０６との間のダイ間信号の交換を可能にする。ワイヤ４１４は、データ線または電力線であり得る。電力線は、電圧電位を運ぶワイヤでも、接地電位または基準電圧電位を有するワイヤでもよい。
【００６３】
異なる導電層４１２は、ビア４１６を使用して結合され得る。一般に、ビア構造は、垂直導電経路（たとえば、デバイスのプロセス層に対して垂直な導電経路）を実現するために使用される。この点に関して、はんだバンプ４１０と接触するワイヤ４１４の垂直部分は、ビア４１６として実現される。インターポーザ４０２内に相互接続を実現するために複数の導電層を使用することにより、より多数の信号がルーティングされ、より複雑な信号のルーティングがインターポーザ４０２内で達成される。
【００６４】
はんだバンプ４１８を使用して、インターポーザ４０２の第２の平面を基板４０８に機械的および電気的に結合することができる。特定の実施形態では、はんだバンプ４１８は、controlled collapse chip connection（Ｃ４）ボールとして実現される。基板４０８は、異なるはんだバンプ４１８を基板４０８の下の１つまたは複数のノードに結合する導電性経路（図示せず）を含む。したがって、はんだバンプ４１８のうちの１つまたは複数は、インターポーザ４０２内の回路を、基板４０８内の回路または配線を介して、デバイス１００の外部のノードに結合する。
【００６５】
ＴＶ４２０は、インターポーザ４０２を垂直に横断する、たとえば、インターポーザ４０２の全体ではない場合でも実質的な部分を通って延びる、電気的接続を形成するビアである。ＴＶ４２０は、ワイヤおよびビアのように、銅、アルミニウム、金、ニッケル、さまざまなシリサイド、および／または他の好適な材料を含むがこれらに限定されないさまざまな異なる導電材料のいずれから形成されてもよい。図示のように、ＴＶ４２０の各々は、インターポーザ４０２の底面からインターポーザ４０２の導電層４１２まで延びる。ＴＶ４２０はさらに、１つまたは複数のビア４１６と組み合わせて導電層４１２のうちの１つまたは複数を通してはんだバンプ４１０に結合され得る。
【００６６】
図５Ａ、図５Ｂ、図５Ｃ、図５Ｄ、図５Ｅ、図５Ｆ、および図５Ｇ（集合的に「図５」と呼ばれる）は、デバイス１００の例示的なマルチダイ実現例を示す。図５の例は、図４に関連して説明したように実現することができる。
【００６７】
図５Ａを参照すると、ダイ４０４は１つまたは複数のＤＰＥアレイ１０２を含み、ダイ４０６はＰＳ３１２を実現する。
【００６８】
図５Ｂを参照すると、ダイ４０４は１つまたは複数のＤＰＥアレイ１０２を含み、ダイ４０６はＡＳＩＣ５０４を実現する。ＡＳＩＣ５０４は、特定の動作または特化された動作を実行するのに適したさまざまな異なるカスタマイズされた回路のいずれかとして実現され得る。
【００６９】
図５Ｃを参照すると、ダイ４０４は１つ以上のＤＰＥアレイ１０２を含み、ダイ４０６はＰＬ３１０を実現する。
【００７０】
図５Ｄを参照すると、ダイ４０４は１つまたは複数のＤＰＥアレイ１０２を含み、ダイ４０６はアナログおよび／または混合（アナログ／混合）信号回路５０８を実現する。アナログ／混合信号回路５０８は、１つまたは複数の無線受信機、無線送信機、増幅器、アナログ−デジタル変換器、デジタル−アナログ変換器、または他のアナログおよび／もしくはデジタル回路を含み得る。
【００７１】
図５Ｅ、図５Ｆ、および図５Ｇは、３つのダイ４０４，４０６，および５１０を有するデバイス１００の例を示す。図５Ｅを参照すると、デバイス１００は、ダイ４０４，４０６，および５１０を含む。ダイ４０４は、１つまたは複数のＤＰＥアレイ１０２を含む。ダイ４０６はＰＬ３１０を含む。ダイ５１０はＡＳＩＣ５０４を含む。
【００７２】
図５Ｆを参照すると、ダイ４０４は、１つまたは複数のＤＰＥアレイ１０２を含む。ダイ４０６はＰＬ３１０を含む。ダイ５１０は、アナログ／混合信号回路５０８を含む。
【００７３】
図５Ｇを参照すると、ダイ４０４は、１つまたは複数のＤＰＥアレイ１０２を含む。ダイ４０６はＡＳＩＣ５０４を含む。ダイ５１０は、アナログ／混合信号回路５０８を含む。１つまたは複数の実施形態では、ＰＳ（たとえば、ＰＳ３１２）はＡＳＩＣの例である。
【００７４】
図５の例では、ダイ４０６および／または５１０の各々は、特定の種類のサブシステムを含むものとして示されている。他の実施形態では、ダイ４０４、４０６、および／または５１０は、１つまたは複数のサブシステムを１つまたは複数のＤＰＥアレイ１０２と組み合わせて含むことができる。さらに、ダイ４０４、４０６、および／または５１０は、２つ以上の異なるタイプのサブシステムを含み得る。したがって、ダイ４０４、４０６、および／または５１０のうちの任意の１つまたは複数は、１つまたは複数のＤＰＥアレイ１０２を、１つまたは複数のサブシステムと任意の組み合わせで含み得る。
【００７５】
１つまたは複数の実施形態では、インターポーザ４０２、ならびにダイ４０４、４０６、および／または５１０は、同じＩＣ製造技術（たとえば、フィーチャサイズ）を使用して実現され得る。１つまたは複数の他の実施形態では、インターポーザ４０２は、特定のＩＣ製造技術を使用して実現されてもよく、ダイ４０４、４０６、および／または５１０は、異なるＩＣ製造技術を使用して実現される。さらに他の実施形態では、ダイ４０４、４０６、および／または５１０は、インターポーザ４０２を実現するために使用されるＩＣ製造技術と同一でも異なっていてもよい異なるＩＣ製造技術を使用して実現されてもよい。異なるダイおよび／またはインターポーザに異なるＩＣ製造技術を使用することによって、より低コストおよび／またはより信頼できるＩＣ製造技術が特定のダイに使用され得る一方で、より小さいフィーチャサイズを形成することができる他のＩＣ製造技術が他のダイに使用され得る。たとえば、インタポーザ４０２を実現するために、より成熟した製造技術が使用されてもよく、能動ダイおよび／またはＤＰＥアレイ１０２を含むダイを実現するために、より小さいフィーチャサイズを形成することができる他の技術が使用されてもよい。
【００７６】
図５の例は、インターポーザ上に搭載された２つ以上のダイを含むデバイス１００のマルチダイ実現例を示す。示されるダイの数は、限定ではなく例示を目的としている。他の実施形態では、デバイス１００は、インターポーザ４０２に搭載された３つより多いダイを含むことができる。
【００７７】
１つまたは複数の他の実施形態では、デバイス１００のマルチダイバージョンは、図４の積層ダイアーキテクチャ以外のアーキテクチャを使用して実現され得る。たとえば、デバイス１００は、マルチチップモジュール（ＭＣＭ）として実現され得る。デバイス１００のＭＣＭ実現例は、既存のチップパッケージを模倣するように意図されたフォームファクタおよび／またはフットプリントを有する回路基板に搭載された１つまたは複数の予めパッケージングされたＩＣを使用して実現されてもよい。別の例では、デバイス１００のＭＣＭ実現例は、高密度相互接続基板上に２つ以上のダイを集積することによって実現され得る。さらに別の例では、デバイス１００のＭＣＭ実現例は、「チップスタック」パッケージとして実現され得る。
【００７８】
本明細書で記載されるようなＤＰＥアレイを１つまたは複数の他のサブシステムと組み合わせて使用することは、シングルダイデバイスにおいて実現されようと、マルチダイデバイスにおいて実現されようと、面積使用および電力消費を低く保ちながら、デバイスの処理能力を増大させる。たとえば、１つまたは複数のＤＰＥアレイを使用して、ハードウェアで特定の動作を加速し、および／または本明細書で説明するデバイスのサブシステムのうちの１つまたは複数からオフロードされる機能を実行することができる。たとえば、ＰＳと共に使用される場合、ＤＰＥアレイはハードウェアアクセラレータとして使用され得る。ＰＳは、ＤＰＥアレイまたはその一部によって実行される動作をオフロードすることができる。他の例では、ＤＰＥアレイは、アナログ／混合信号回路に与えられるべきデジタルプリディストーションを生成するなど、計算的にリソース集約的な動作を実行するために使用され得る。
【００７９】
図１、図２、図３、図４および／または図５に関連して本明細書で記載されるＤＰＥアレイおよび／または他のサブシステムのさまざまな組み合わせのいずれかが、シングルダイタイプのデバイスまたはマルチダイタイプのデバイスのいずれかで実現され得ることを理解されたい。
【００８０】
本明細書で説明するさまざまな例では、ＳｏＣインターフェースブロックは、ＤＰＥアレイ内に実現される。１つまたは複数の他の実施形態では、ＳｏＣインターフェースブロックは、ＤＰＥアレイの外部で実現され得る。たとえば、ＳｏＣインターフェースブロックは、複数のＤＰＥを実現する回路ブロックとは別個の、たとえばスタンドアロン回路ブロックなどの、回路ブロックとして実現され得る。
【００８１】
図６は、ＤＰＥアレイ１０２のＤＰＥ３０４の例示的なアーキテクチャを示す。図６の例では、ＤＰＥ３０４は、コア６０２と、メモリモジュール６０４と、ＤＰＥ相互接続６０６とを含む。
【００８２】
コア６０２は、ＤＰＥ３０４のデータ処理能力を提供する。コア６０２は、さまざまな異なる処理回路のいずれかとして実現され得る。図６の例では、コア６０２は、任意選択のプログラムメモリ６０８を含む。１つまたは複数の実施形態では、コア６０２は、プログラムコード、たとえば、コンピュータ可読命令を実行することができるプロセッサとして実現される。その場合、プログラムメモリ６０８が含まれ、コア６０２によって実行される命令を格納することができる。コア６０２は、たとえば、命令を実行することができるＣＰＵ、ＧＰＵ、ＤＳＰ、ベクトルプロセッサ、または他のタイプのプロセッサとして実現され得る。コアは、本明細書で説明するさまざまなＣＰＵおよび／またはプロセッサアーキテクチャのいずれかを使用して実現され得る。別の例では、コア６０２は、非常に長い命令ワード（ＶＬＩＷ）ベクトルプロセッサまたはＤＳＰとして実現される。
【００８３】
特定の実施形態では、プログラムメモリ６０８は、コア６０２にプライベートである専用のプログラムメモリとして実現される。プログラムメモリ６０８は、同じＤＰＥ３０４のコアによってのみ使用されてもよい。したがって、プログラムメモリ６０８は、コア６０２によってのみアクセスされてもよく、任意の他のＤＰＥまたは別のＤＰＥのコンポーネントと共有されない。プログラムメモリ６０８は、読み出し動作および書き込み動作のための単一のポートを含み得る。プログラムメモリ６０８は、プログラム圧縮をサポートすることができ、以下でより詳細に記載されるＤＰＥ相互接続６０６のメモリマッピングされたネットワーク部分を使用してアドレス指定可能である。たとえば、ＤＰＥ相互接続６０６のメモリマッピングされたネットワークを介して、プログラムメモリ６０８は、コア６０２によって実行され得るプログラムコードをロードされてもよい。
【００８４】
１つまたは複数の実施形態では、プログラムメモリ６０８は、１つまたは複数の誤り検出および／または誤り訂正機構をサポートすることができる。たとえば、プログラムメモリ６０８は、パリティビットを追加することによってパリティチェックをサポートするように実現され得る。別の例では、プログラムメモリ６０８は、さまざまなタイプのデータ破損を検出し、訂正することができる誤り訂正符号（ＥＣＣ）メモリとすることができる。別の例では、プログラムメモリ６０８は、ＥＣＣおよびパリティチェックの両方をサポートすることができる。本明細書で記載される異なるタイプの誤り検出および／または誤り訂正は、例示を目的として提供され、記載される実施形態を限定することを意図されない。他の誤り検出および／または誤り訂正技術を、列挙したもの以外のプログラムメモリ６０８と共に使用することができる。
【００８５】
１つまたは複数の実施形態では、コア６０２は、アプリケーション固有の命令セットをサポートするためのカスタマイズされたアーキテクチャを有し得る。たとえば、コア６０２は、ワイヤレスアプリケーションのためにカスタマイズされ、ワイヤレス固有の命令を実行するように構成され得る。別の例では、コア６０２は、機械学習のためにカスタマイズされ、機械学習固有の命令を実行するように構成されてもよい。
【００８６】
１つまたは複数の他の実施形態では、コア６０２は、特定の動作（単数または複数）を実行することに対して専用であるハードウェア化知的財産（ＩＰ）コアなどのハードワイヤード回路として実現される。この場合、コア６０２は、プログラムコードを実行しなくてもよい。コア６０２がプログラムコードを実行しない実施形態では、プログラムメモリ６０８は省略されてもよい。例示的かつ非限定的な例として、コア６０２は、ハードウェア化順方向誤り訂正（ＦＥＣ）エンジンまたは他の回路ブロックとして実現され得る。
【００８７】
コア６０２は、構成レジスタ６２４を含み得る。構成レジスタ６２４は、コア６０２の動作を制御するために構成データをロードすることができる。１つまたは複数の実施形態では、コア６０２は、構成レジスタ６２４にロードされた構成データに基づいて、活性化および／または非活性化され得る。図６の例では、構成レジスタ６２４は、以下でより詳細に記載されるＤＰＥ相互接続６０６のメモリマッピングされたネットワークを介してアドレス指定可能である（たとえば、読み出しおよび／または書き込みを行うことができる）。
【００８８】
１つまたは複数の実施形態では、メモリモジュール６０４は、コア６０２によって使用されるデータ、および／またはコア６０２によって生成されるデータを格納することができる。たとえば、メモリモジュール６０４は、アプリケーションデータを格納することができる。メモリモジュール６０４は、ランダムアクセスメモリなどの読み出し／書き込みメモリを含み得る。したがって、メモリモジュール６０４は、コア６０２によって読み出され、消費され得るデータを格納することが可能である。メモリモジュール６０４はまた、コア６０２によって書き込まれるデータ（たとえば結果）を格納することができる。
【００８９】
１つまたは複数の他の実施形態では、メモリモジュール６０４は、ＤＰＥアレイ内の他のＤＰＥの１つまたは複数の他のコアによって使用および／または生成され得る、たとえばアプリケーションデータなどのデータを格納することが可能である。ＤＰＥの１つまたは複数の他のコアは、メモリモジュール６０４から読み出し、および／またはメモリモジュール６０４に書き込むこともできる。特定の実施形態では、メモリモジュール６０４から読み出しおよび／またはメモリモジュール６０４に書き込むことができる他のコアは、１つまたは複数の近傍のＤＰＥのコアとすることができる。境界線または境界をＤＰＥ３０４と共有する（たとえば、隣接する）別のＤＰＥは、ＤＰＥ３０４に対する「近傍の」ＤＰＥと言われる。コア６０２および近傍のＤＰＥからの１つまたは複数の他のコアの、メモリモジュール６０４の読み出しおよび／または書き込みを可能にすることによって、メモリモジュール６０４は、メモリモジュール６０４にアクセスすることができる異なるＤＰＥおよび／またはコア間の通信をサポートする共有メモリを実現する。
【００９０】
図３を参照すると、たとえば、ＤＰＥ３０４−１４、３０４−１６、３０４−５、および３０４−２５は、ＤＰＥ３０４−１５の近傍のＤＰＥと考えられる。一例では、ＤＰＥ３０４−１６、３０４−５、および３０４−２５の各々内のコアは、ＤＰＥ３０４−１５内のメモリモジュールに読み出しおよび書き込みが可能である。特定の実施形態では、メモリモジュールに隣接する近傍のＤＰＥのみが、ＤＰＥ３０４−１５のメモリモジュールにアクセスすることができる。たとえば、ＤＰＥ３０４−１４は、ＤＰＥ３０４−１５に隣接するが、ＤＰＥ３０４−１５のメモリモジュールには隣接しない場合があり、なぜならば、ＤＰＥ３０４−１５のコアは、ＤＰＥ３０４−１４のコアとＤＰＥ３０４−１５のメモリモジュールとの間に位置し得るからである。したがって、特定の実施形態では、ＤＰＥ３０４−１４のコアは、ＤＰＥ３０４−１５のメモリモジュールにアクセスしない場合がある。
【００９１】
特定の実施形態では、あるＤＰＥのコアが別のＤＰＥのメモリモジュールにアクセスすることができるかどうかは、メモリモジュールに含まれるメモリインターフェースの数、およびそのようなコアがメモリモジュールのメモリインターフェースのうちの利用可能なものに接続されるかどうかに依存する。上記の例では、ＤＰＥ３０４−１５のメモリモジュールは、４つのメモリインターフェースを含み、ＤＰＥ３０４−１６、３０４−５、および３０４−２５の各々のコアは、そのようなメモリインターフェースに接続される。ＤＰＥ３０４−１５自体内のコア６０２は、第４のメモリインターフェースに接続される。各メモリインターフェースは、１つまたは複数の読み出しおよび／または書き込みチャネルを含み得る。特定の実施形態では、各メモリインターフェースは、複数の読み出しチャネルおよび複数の書き込みチャネルを含み、それに取り付けられた特定のコアは、メモリモジュール６０４内の複数のバンクに同時に読み出しおよび／または書き込みが可能である。
【００９２】
他の例では、４つより多いメモリインターフェースが利用可能であり得る。そのような他のメモリインターフェースは、ＤＰＥ３０４−１５の対角線上のＤＰＥがＤＰＥ３０４−１５のメモリモジュールにアクセスすることを可能にするために使用され得る。たとえば、ＤＰＥ３０４−１４、３０４−２４、３０４−２６、３０４−４、および／または３０４−６などのＤＰＥ内のコアも、ＤＰＥ３０４−１５内のメモリモジュールの利用可能なメモリインターフェースに結合される場合、そのような他のＤＰＥも、ＤＰＥ３０４−１５のメモリモジュールにアクセスすることができる。
【００９３】
メモリモジュール６０４は、構成レジスタ６３６を含み得る。構成レジスタ６３６は、メモリモジュール６０４の動作を制御するために構成データをロードすることができる。図６の例では、構成レジスタ６３６（および６２４）は、以下でより詳細に記載されるＤＰＥ相互接続６０６のメモリマッピングされたネットワークを介してアドレス指定可能である（たとえば、読み出しおよび／または書き込みを行うことができる）。
【００９４】
図６の例では、ＤＰＥ相互接続６０６は、ＤＰＥ３０４に特化している。ＤＰＥ相互接続６０６は、ＤＰＥ３０４とＤＰＥアレイ１０２の１つまたは複数の他のＤＰＥとの間の通信および／またはデバイス１００の他のサブシステムとの通信を含むさまざまな動作を容易にする。ＤＰＥ相互接続６０６はさらに、ＤＰＥ３０４の構成、制御、およびデバッグを可能にする。
【００９５】
特定の実施形態では、ＤＰＥ相互接続６０６は、オンチップ相互接続として実現される。オンチップ相互接続の例は、Advanced Microcontroller Bus Architecture（ＡＭ  ＢＡ）拡張可能インターフェース（ＡＸＩ）バス（たとえば、またはスイッチ）である。ＡＭＢＡ  ＡＸＩバスは、回路ブロックおよび／またはシステム間のオンチップ接続を確立する際に使用するための内蔵マイクロコントローラバスインターフェースである。ＡＸＩバスは、本明細書では、本開示内で記載される本発明の構成と共に使用され得る相互接続回路の例として提供され、したがって、限定として意図されない。相互接続回路の他の例は、他のタイプのバス、クロスバー、および／または他のタイプのスイッチを含み得る。
【００９６】
１つまたは複数の実施形態では、ＤＰＥ相互接続６０６は、２つの異なるネットワークを含む。第１のネットワークは、ＤＰＥアレイ１０２の他のＤＰＥおよび／またはデバイス１００の他のサブシステムとデータを交換することができる。たとえば、第１のネットワークは、アプリケーションデータを交換することができる。第２のネットワークは、ＤＰＥの構成、制御、および／またはデバッグデータなどのデータを交換することができる。
【００９７】
図６の例では、ＤＰＥ相互接続６０６の第１のネットワークは、ストリームスイッチ６２６および１つまたは複数のストリームインターフェースで形成される。図示するように、ストリームスイッチ６２６は、複数のストリームインターフェース（図６では「ＳＩ」と略称する）を含む。１つまたは複数の実施形態では、各ストリームインターフェースは、１つもしくは複数のマスタ（たとえば、マスタインターフェースまたは出力）および／または１つもしくは複数のスレーブ（たとえば、スレーブインターフェースまたは入力）を含み得る。各マスタは、特定のビット幅を有する独立した出力とすることができる。たとえば、ストリームインターフェースに含まれる各マスタは、独立したＡＸＩマスタであってもよい。各スレーブは、特定のビット幅を有する独立した入力とすることができる。たとえば、ストリームインターフェースに含まれる各スレーブは、独立したＡＸＩスレーブであってもよい。
【００９８】
ストリームインターフェース６１０〜６１６は、ＤＰＥアレイ１０２内の他のＤＰＥおよび／またはＳｏＣインターフェースブロック１０４と通信するために使用される。たとえば、ストリームインターフェース６１０，６１２，６１４，および６１６の各々は、異なる基本四方位方向に通信することができる。図６の例では、ストリームインターフェース６１０は、左（西）のＤＰＥと通信する。ストリームインターフェース６１２は、上（北）のＤＰＥと通信する。ストリームインターフェース６１４は、右（東）のＤＰＥと通信する。ストリームインターフェース６１６は、下（南）のＤＰＥまたはＳｏＣインターフェースブロック１０４と通信する。
【００９９】
ストリームインターフェース６２８は、コア６０２と通信するために使用される。コア６０２は、たとえば、ストリームインターフェース６２８に接続するストリームインターフェース６３８を含み、それによって、コア６０２がＤＰＥ相互接続６０６を介して他のＤＰＥ３０４と直接通信することを可能にする。たとえば、コア６０２は、コア６０２がストリームインターフェース６３８を介して直接データを送信および／または受信することを可能にする命令またはハードワイヤード回路を含み得る。ストリームインターフェース６３８は、ブロッキングまたは非ブロッキングであり得る。１つまたは複数の実施形態において、コア６０２が空のストリームから読み出しを試みる場合、または満杯のストリームに書き込みを試みる場合、コア６０２はストールしてもよい。他の実施形態では、空のストリームから読み出そうとするかまたは満杯のストリームに書き込もうとすることは、コア６０２をストールさせなくてもよい。むしろ、コア６０２は、実行または動作を継続してもよい。
【０１００】
ストリームインターフェース６３０は、メモリモジュール６０４と通信するために使用される。メモリモジュール６０４は、たとえば、ストリームインターフェース６３０に接続し、それによって他のＤＰＥ３０４がＤＰＥ相互接続６０６を介してメモリモジュール６０４と通信することを可能にするストリームインターフェース６４０を含む。ストリームスイッチ６２６は、非近傍のＤＰＥおよび／またはメモリモジュール６０４のメモリインターフェースに結合されていないＤＰＥが、ＤＰＥアレイ１０２のそれぞれのＤＰＥ３０４のＤＰＥ相互接続によって形成されるＤＰＥ相互接続ネットワークを介して、コア６０２および／またはメモリモジュール６０４と通信することを可能にすることができる。
【０１０１】
再び図３を参照すると、ＤＰＥ３０４−１５を基準点として使用すると、ストリームインターフェース６１０は、ＤＰＥ３０４−１４のＤＰＥ相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース６１２は、ＤＰＥ３０４−２５のＤＰＥ相互接続内に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース６１４は、ＤＰＥ３０４−１６のＤＰＥ相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース６１６は、ＤＰＥ３０４−５のＤＰＥ相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。したがって、コア６０２および／またはメモリモジュール６０４は、ＤＰＥ内のＤＰＥ相互接続を介してＤＰＥアレイ１０２内の任意のＤＰＥと通信することもできる。
【０１０２】
ストリームスイッチ６２６は、ＰＬ３１０および／またはＮｏＣ３０８などのサブシステムにインターフェースするためにも使用され得る。一般に、ストリームスイッチ６２６は、回路交換ストリーム相互接続またはパケット交換ストリーム相互接続として動作するようにプログラムされ得る。回路交換ストリーム相互接続は、ＤＰＥ間の高帯域幅通信に適したポイントツーポイント専用ストリームを実現することができる。パケット交換ストリーム相互接続は、ストリームを共有して、複数のロジックストリームを、中帯域幅通信のために１つの物理ストリーム上に時間多重化することを可能にする。
【０１０３】
ストリームスイッチ６２６は、構成レジスタ（図６では「ＣＲ」と略称される）６３４を含み得る。構成データは、ＤＰＥ相互接続６０６のメモリマッピングされたネットワークを介して構成レジスタ６３４に書き込まれ得る。構成レジスタ６３４にロードされた構成データは、ＤＰＥ３０４がどの他のＤＰＥおよび／またはサブシステム（たとえば、ＮｏＣ３０８、ＰＬ３１０、および／またはＰＳ３１２）と通信するか、ならびにそのような通信が回路交換ポイントツーポイント接続として確立されるのか、またはパケット交換接続として確立されるのかを決定する。
【０１０４】
図６に示されるストリームインターフェースの数は、限定ではなく例示のためのものであることを理解されたい。他の実施形態では、ストリームスイッチ６２６は、より少ないストリームインターフェースを含み得る。特定の実施形態では、ストリームスイッチ６２６は、デバイス内の他のコンポーネントおよび／またはサブシステムへの接続を容易にする、より多くのストリームインターフェースを含み得る。たとえば、追加のストリームインターフェースは、ＤＰＥ３０４−２４、３０４−２６、３０４−４、および／または３０４−６などの他の非近傍のＤＰＥに結合することができる。１つまたは複数の他の実施形態では、ＤＰＥ３０４−１５などのＤＰＥを、１つまたは複数のＤＰＥ分離れて位置する他のＤＰＥに結合するように、ストリームインターフェースを含むことができる。たとえば、ＤＰＥ３０４−１５がＤＰＥ３０４−１３、ＤＰＥ３０４−１６、または他の非近傍のＤＰＥ内のストリームインターフェースに直接結合することを可能にする１つまたは複数のストリームインターフェースが含まれ得る。
【０１０５】
ＤＰＥ相互接続６０６の第２のネットワークは、メモリマッピングされたスイッチ６３２で形成される。メモリマッピングされたスイッチ６３２は、複数のメモリマッピングされたインターフェース（図６では「ＭＭＩ」と略称する）を含む。１つまたは複数の実施形態では、各メモリマッピングされたインターフェースは、１つもしくは複数のマスタ（たとえば、マスタインターフェースもしくは出力）および／または１つもしくは複数のスレーブ（たとえば、スレーブインターフェースもしくは入力）を含み得る。各マスタは、特定のビット幅を有する独立した出力とすることができる。たとえば、メモリマッピングされたインターフェースに含まれる各マスタは、独立したＡＸＩマスタであってもよい。各スレーブは、特定のビット幅を有する独立した入力とすることができる。たとえば、メモリマッピングされたインターフェースに含まれる各スレーブは、独立したＡＸＩスレーブであってもよい。
【０１０６】
図６の例では、メモリマッピングされたスイッチ６３２は、メモリマッピングされたインターフェース６２０，６２２，６４２，６４４，および６４６を含む。メモリマッピングされたスイッチ６３２は、追加の、またはより少ないメモリマッピングされたインターフェースを含み得ることを理解されたい。たとえば、メモリマッピングされたスイッチ６３２を使用して読み出しおよび／または書き込みされ得るＤＰＥの各コンポーネントについて、メモリマッピングされたスイッチ６３２は、そのようなコンポーネントに結合されるメモリマッピングされたインターフェースを含み得る。さらに、メモリアドレスの読み出しおよび／または書き込みを容易にするために、コンポーネント自体が、メモリマッピングされたスイッチ６３２内の対応するメモリマッピングされたインターフェースに結合されるメモリマッピングされたインターフェースを含んでもよい。
【０１０７】
メモリマッピングされたインターフェース６２０および６２２は、ＤＰＥ３０４のための構成、制御、およびデバッグデータを交換するために使用され得る。図６の例では、メモリマッピングされたインターフェース６２０は、ＤＰＥ３０４を構成するために使用される構成データを受信することができる。メモリマッピングされたインターフェース６２０は、ＤＰＥ３０４の下に位置するＤＰＥから、および／またはＳｏＣインターフェースブロック１０４から、構成データを受信することができる。メモリマッピングされたインターフェース６２２は、メモリマッピングされたインターフェース６２０によって受信された構成データを、ＤＰＥ３０４より上の１つまたは複数の他のＤＰＥ、コア６０２（たとえばプログラムメモリ６０８および／または構成レジスタ６２４）、メモリモジュール６０４（たとえばメモリモジュール６０４内のメモリおよび／または構成レジスタ６３６）、および／またはストリームスイッチ６２６内の構成レジスタ６３４に転送することができる。
【０１０８】
特定の実施形態では、メモリマッピングされたインターフェース６２０は、本明細書において記載されるように、下のＤＰＥまたはＳｏＣインターフェースブロック１０４のタイルと通信する。メモリマッピングされたインターフェース６２２は、上のＤＰＥと通信する。再び図３を参照して、ＤＰＥ３０４−１５を基準点として使用すると、メモリマッピングされたインターフェース６２０は、ＤＰＥ３０４−５のＤＰＥ相互接続に位置する別のメモリマッピングされたインターフェースに結合され、それと通信することができる。メモリマッピングされたインターフェース６２２は、ＤＰＥ３０４−２５のＤＰＥ相互接続に位置する別のメモリマッピングされたインターフェースに結合され、それと通信することができる。１つまたは複数の実施形態では、メモリマッピングされたスイッチ６３２は、南から北へ制御および／またはデバッグデータを伝達する。他の実施形態では、メモリマッピングされたスイッチ６３２は、北から南へデータを渡すこともできる。
【０１０９】
メモリマッピングされたインターフェース６４６は、構成レジスタ６３６および／またはメモリモジュール６０４内のメモリの読み出しおよび／または書き込みを容易にするよう、メモリモジュール６０４内のメモリマッピングされたインターフェース（図示せず）に結合されることができる。メモリマッピングされたインターフェース６４４は、プログラムメモリ６０８および／または構成レジスタ６２４の読み出しおよび／または書き込みを容易にするよう、コア６０２内のメモリマッピングされたインターフェース（図示せず）に結合されることができる。メモリマッピングされたインターフェース６４２は、構成レジスタ６３４に読み出しおよび／または書き込みするために構成レジスタ６３４に結合されることができる。
【０１１０】
図６の例では、メモリマッピングされたスイッチ６３２は、上（たとえば北）および下（たとえば南）の回路と通信することができる。１つまたは複数の他の実施形態では、メモリマッピングされたスイッチ６３２は、左および／または右のＤＰＥのメモリマッピングされたスイッチのメモリマッピングされたインターフェースに結合される追加のメモリマッピングされたインターフェースを含む。ＤＰＥ３０４−１５を基準点として使用すると、そのような追加のメモリマッピングされたインターフェースは、ＤＰＥ３０４−１４および／またはＤＰＥ３０４−１６に位置するメモリマッピングされたスイッチに接続することができ、それによって、水平方向ならびに垂直方向におけるＤＰＥ間の構成、制御、およびデバッグデータの通信を容易にする。
【０１１１】
他の実施形態では、メモリマッピングされたスイッチ６３２は、ＤＰＥ３０４に対して対角であるＤＰＥ内のメモリマッピングされたスイッチに接続される追加のメモリマッピングされたインターフェースを含み得る。たとえば、ＤＰＥ３０４−１５を基準点として使用すると、そのような追加のメモリマッピングされたインターフェースは、ＤＰＥ３０４−２４、３０４−２６、３０４−４、および／または３０４−６に位置するメモリマッピングされたスイッチに結合され、それによって、構成、制御、およびデバッグ情報をＤＰＥ間で対角線状に通信することを容易にすることができる。
【０１１２】
ＤＰＥ相互接続６０６は、ＤＰＥ３０４の位置に応じて、各近傍のＤＰＥのＤＰＥ相互接続および／またはＳｏＣインターフェースブロック１０４に結合される。まとめると、ＤＰＥ３０４のＤＰＥ相互接続は、ＤＰＥ相互接続ネットワーク（これは、ストリームネットワークおよび／またはメモリマッピングされたネットワークを含み得る）を形成する。各ＤＰＥのストリームスイッチの構成レジスタは、メモリマッピングされたスイッチを通して構成データをロードすることによってプログラムされ得る。構成を通じて、ストリームスイッチおよび／またはストリームインターフェースは、パケット交換または回路交換のいずれでも、接続を、１つもしくは複数の他のＤＰＥ３０４および／またはＳｏＣインターフェースブロック１０４のいずれにおける他のエンドポイントと確立するようにプログラムされる。
【０１１３】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２は、ＰＳ３１２などのプロセッサシステムのアドレス空間にマッピングされる。したがって、ＤＰＥ３０４内のどの構成レジスタおよび／またはメモリでも、メモリマッピングされたインターフェースを介してアクセスされ得る。たとえば、メモリモジュール６０４内のメモリ、プログラムメモリ６０８、コア６０２内の構成レジスタ６２４、メモリモジュール６０４内の構成レジスタ６３６、および／または構成レジスタ６３４は、メモリマッピングされたスイッチ６３２を介して読み出しおよび／または書き込みすることができる。
【０１１４】
図６の例では、メモリマッピングされたインターフェースは、ＤＰＥ３０４のために構成データを受信することができる。構成データは、プログラムメモリ６０８（含まれる場合）にロードされるプログラムコード、構成レジスタ６２４、６３４、および／もしくは６３６にロードするための構成データ、ならびに／またはメモリモジュール６０４のメモリ（たとえばメモリバンク）にロードされるべきデータを含み得る。図６の例では、構成レジスタ６２４，６３４，および６３６は、それら構成レジスタが制御するように意図される特定の回路構造、たとえばコア６０２、ストリームスイッチ６２６、およびメモリモジュール６０４内に位置するものとして示されている。図６の例は、例示のみを目的としており、コア６０２、メモリモジュール６０４、および／またはストリームスイッチ６２６内の要素が、対応する構成レジスタに構成データをロードすることによってプログラムされ得ることを示している。他の実施形態では、構成レジスタは、ＤＰＥ３０４全体にわたって分散されるコンポーネントの動作を制御するにもかかわらず、ＤＰＥ３０４の特定の領域内に統合され得る。
【０１１５】
したがって、ストリームスイッチ６２６は、構成データを構成レジスタ６３４にロードすることによってプログラムされ得る。構成データは、２つの異なるＤＰＥおよび／もしくは他のサブシステム間の回路交換ストリームインターフェースとして、または選択されたＤＰＥおよび／もしくは他のサブシステムに結合されるパケット交換ストリームインターフェースとして動作するように、ストリームスイッチ６２６ならびに／またはストリームインターフェース６１０〜６１６および／もしくは６２８〜６３０をプログラミングする。したがって、ストリームスイッチ６２６によって他のストリームインターフェースに対して確立される接続は、ＤＰＥ３０４内に、他のＤＰＥと、および／またはデバイス１００の他のサブシステムと、実際の接続またはアプリケーションデータ経路を確立するよう、好適な構成データを構成レジスタ６３４にロードすることによって、プログラムされる。
【０１１６】
図７は、複数のＤＰＥ３０４間の接続性の例を示す。図７の例では、ＤＰＥ３０４−１４、３０４−１５、３０４−２４、および３０４−２５の各々を実現するために、図６に示されたアーキテクチャが使用される。図７は、ストリームインターフェースが近傍のＤＰＥ間で（各側部および上下において）相互接続され、メモリマッピングされたインターフェースが上下のＤＰＥに接続される実施形態を示す。説明のため、ストリームスイッチおよびメモリマッピングされたスイッチは示されていない。
【０１１７】
注記されるように、他の実施形態では、ＤＰＥを、図示されるように垂直方向、および水平方向に結合するよう、追加のメモリマッピングされたインターフェースを含むことができる。さらに、メモリマッピングされたインターフェースは、垂直方向および／または水平方向の双方向通信をサポートすることができる。
【０１１８】
メモリマッピングされたインターフェース６２０および６２２は、トランザクションがメモリマッピングされたスイッチからメモリマッピングされたスイッチに伝搬する、共有されたトランザクション交換ネットワークを実現することが可能である。メモリマッピングされたスイッチの各々は、たとえば、アドレスに基づいてトランザクションを動的にルーティングすることができる。トランザクションは、任意の所与のメモリマッピングされたスイッチにおいてストールされ得る。メモリマッピングされたインターフェース６２０および６２２は、デバイス１００の他のサブシステムがＤＰＥ３０４のリソース（たとえばコンポーネント）にアクセスすることを可能にする。
【０１１９】
特定の実施形態では、デバイス１００のサブシステムは、メモリマッピングされたインターフェース６２０および／または６２２を介してＤＰＥの任意のレジスタおよび／またはメモリ要素の内部状態を読み出すことができる。メモリマッピングされたインターフェース６２０および／または６２２を介して、デバイス１００のサブシステムは、プログラムメモリ６０８およびＤＰＥ３０４内の任意の構成レジスタに読み出しおよび／または書き込むことができる。
【０１２０】
ストリームインターフェース６１０〜６１６（たとえばストリームスイッチ６２６）は、ソースから宛先への保証された固定された待ち時間で決定論的スループットを与えることができる。１つまたは複数の実施形態では、ストリームインターフェース６１０および６１４は、４つの３２ビットストリームを受信し、４つの３２ビットストリームを出力することができる。１つまたは複数の実施形態では、ストリームインターフェース６１４は、４つの３２ビットストリームを受信し、６つの３２ビットストリームを出力することができる。特定の実施形態では、ストリームインターフェース６１６は、４つの３２ビットストリームを受信し、４つの３２ビットストリームを出力することができる。各ストリームインターフェースのストリームの数およびストリームのサイズは、例示の目的のために与えられるものであり、限定として意図されない。
【０１２１】
図８は、図６の例示的なアーキテクチャのさらなる態様を例示する。図８の例では、ＤＰＥ相互接続６０６に関する詳細は示されていない。図８は、共有メモリを介した他のＤＰＥとのコア６０２の接続性を示す。図８は、メモリモジュール６０４の追加の態様も示す。説明のため、図８はＤＰＥ３０４−１５に言及する。
【０１２２】
図示されるように、メモリモジュール６０４は、複数のメモリインターフェース８０２，８０４，８０６，および８０８を含む。図８において、メモリインターフェース８０２および８０８は「ＭＩ」と略称される。メモリモジュール６０４は、さらに、複数のメモリバンク８１２−１〜８１２−Ｎを含む。特定の実施形態では、メモリモジュール６０４は、８つのメモリバンクを含む。他の実施形態では、メモリモジュール６０４は、より少ないまたはより多いメモリバンク８１２を含み得る。１つまたは複数の実施形態では、各メモリバンク８１２はシングルポートであり、それによって、各クロックサイクルごとに各メモリバンクに最大１つのアクセスを可能にする。メモリモジュール６０４が８つのメモリバンク８１２を含む場合、このような構成は、各クロックサイクルごとに８つの並列アクセスをサポートする。他の実施形態では、各メモリバンク８１２は、デュアルポートまたはマルチポートであり、それによって、各クロックサイクルごとに、より多くの並列アクセスを可能にする。
【０１２３】
１つまたは複数の実施形態では、メモリモジュール６０４は、１つもしくは複数の誤り検出および／または誤り訂正機構をサポートすることができる。たとえば、メモリバンク８１２は、パリティビットを追加することによってパリティチェックをサポートするように実現され得る。別の例では、メモリバンク８１２は、さまざまなタイプのデータ破損を検出し訂正することができるＥＣＣメモリとすることができる。別の例では、メモリバンク８１２は、ＥＣＣおよびパリティチェックの両方をサポートすることができる。本明細書で記載される異なるタイプの誤り検出および／または誤り訂正は、例示を目的として与えられるものであり、記載される実施形態を限定することを意図されない。他の誤り検出および／または誤り訂正技術を、列挙したもの以外のメモリモジュール６０４と共に使用してもよい。
【０１２４】
１つまたは複数の他の実施形態では、誤り検出および／または誤り訂正機構は、メモリバンク８１２ごとに実現され得る。たとえば、メモリバンク８１２のうちの１つまたは複数はパリティチェックを含み得、メモリバンク８１２のうちの１つまたは複数の他のものはＥＣＣメモリとして実現され得る。さらに、メモリバンク８１２のうちの他のものは、ＥＣＣおよびパリティチェックの両方をサポートし得る。したがって、誤り検出および／または誤り訂正の異なる組み合わせが、異なるメモリバンク８１２および／またはメモリバンク８１２の組み合わせによってサポートされ得る。
【０１２５】
図８の例では、メモリバンク８１２−１〜８１２−Ｎの各々は、それぞれアービタ８１４−１〜８１４−Ｎを有する。アービタ８１４の各々は、競合を検出することに応答してストール信号を生成することが可能である。各アービタ８１４は、調停ロジックを含むことができる。さらに、各アービタ８１４はクロスバーを含むことができる。したがって、いずれのマスタも、メモリバンク８１２のうちの任意の特定の１つまたは複数に書き込むことができる。図６に関連して述べたように、メモリモジュール６０４は、メモリマッピングされたスイッチ６３２のメモリマッピングされたインターフェース６４６と通信するメモリマッピングされたインターフェース（図示せず）を含むことができる。メモリモジュール６０４内のメモリマッピングされたインターフェースは、メモリバンク８１２に読み出しおよび／または書き込みするために、ＤＭＡエンジン８１６、メモリインターフェース８０２，８０４，８０６および８０８、ならびにアービタ８１４を結合するメモリモジュール６０４内の通信ラインに接続され得る。
【０１２６】
メモリモジュール６０４は、さらに、ダイレクトメモリアクセス（ＤＭＡ）エンジン８１６を含む。１つまたは複数の実施形態では、ＤＭＡエンジン８１６は、少なくとも２つのインターフェースを含む。たとえば、１つまたは複数のインターフェースは、ＤＰＥ相互接続６０６から入力データストリームを受信し、受信したデータをメモリバンク８１２に書き込むことができる。１つまたは複数の他のインターフェースは、メモリバンク８１２からデータを読み出し、そのデータをＤＰＥ相互接続６０６のストリームインターフェースを介して送信することができる。たとえば、ＤＭＡエンジン８１６は、図６のストリームインターフェース６４０を含み得る。
【０１２７】
メモリモジュール６０４は、複数の異なるＤＰＥによってアクセスされ得る共有メモリとして動作することが可能である。図８の例では、メモリインターフェース８０２は、コア６０２に含まれるコアインターフェース８２８を介してコア６０２に結合される。メモリインターフェース８０２は、アービタ８１４を介するメモリバンク８１２へのアクセスをコア６０２に提供する。メモリインターフェース８０４は、ＤＰＥ３０４−２５のコアに結合される。メモリインターフェース８０４は、ＤＰＥ３０４−２５のコアにメモリバンク８１２へのアクセスを提供する。メモリインターフェース８０６は、ＤＰＥ３０４−１６のコアに結合される。メモリインターフェース８０６は、ＤＰＥ３０４−１６のコアにメモリバンク８１２へのアクセスを提供する。メモリインターフェース８０８は、ＤＰＥ３０４−５のコアに結合される。メモリインターフェース８０８は、ＤＰＥ３０４−５のコアにメモリバンク８１２へのアクセスを提供する。したがって、図８の例では、ＤＰＥ３０４−１５のメモリモジュール６０４と共有境界を有する各ＤＰＥは、メモリバンク８１２に読み書き可能である。図８の例では、ＤＰＥ３０４−１４のコアは、ＤＰＥ３０４−１５のメモリモジュール６０４への直接アクセスを有さない。
【０１２８】
メモリマッピングされたスイッチ６３２は、メモリバンク８１２にデータを書き込むことができる。たとえば、メモリマッピングされたスイッチ６３２は、メモリモジュール６０４に位置し、次いでアービタ８１４に結合されるメモリマッピングされたインターフェース（図示せず）に結合されてもよい。したがって、メモリモジュール６０４に格納された特定のデータは、構成、制御、および／またはデバッグプロセスの一部として制御、たとえば、書き込みされてもよい。
【０１２９】
コア６０２は、コアインターフェース８３０，８３２，および８３４を介して他の近傍のＤＰＥのメモリモジュールにアクセスすることができる。図８の例では、コアインターフェース８３４は、ＤＰＥ３０４−２５のメモリインターフェースに結合される。したがって、コア６０２は、コアインターフェース８３４およびＤＰＥ３０４−２５のメモリモジュール内に含まれるメモリインターフェースを介してＤＰＥ３０４−２５のメモリモジュールにアクセスすることができる。コアインターフェース８３２は、ＤＰＥ３０４−１４のメモリインターフェースに結合される。したがって、コア６０２は、コアインターフェース８３２およびＤＰＥ３０４−１４のメモリモジュール内に含まれるメモリインターフェースを介してＤＰＥ３０４−１４のメモリモジュールにアクセスすることができる。コアインターフェース８３０は、ＤＰＥ３０４−５内のメモリインターフェースに結合される。したがって、コア６０２は、コアインターフェース８３０およびＤＰＥ３０４−５のメモリモジュール内に含まれるメモリインターフェースを介してＤＰＥ３０４−５のメモリモジュールにアクセスすることができる。上述したように、コア６０２は、コアインターフェース８２８およびメモリインターフェース８０２を介してＤＰＥ３０４−１５内のメモリモジュール６０４にアクセスすることができる。
【０１３０】
図８の例では、コア６０２は、ＤＰＥ３０４−１５におけるコア６０２と境界を共有するＤＰＥ（たとえばＤＰＥ３０４−２５、３０４−１４、および３０４−５）のメモリモジュールのいずれかに読み書きすることができる。１つまたは複数の実施形態では、コア６０２は、ＤＰＥ３０４−２５、３０４−１５、３０４−１４、および３０４−５内のメモリモジュールを単一の連続メモリとして見ることができる。コア６０２は、この連続メモリモデルを仮定して、読み出しおよび書き込みのためのアドレスを生成することが可能である。コア６０２は、生成されたアドレスに基づいて、読み出しおよび／または書き込み要求を適切なコアインターフェース８２８、８３０、８３２、および／または８３４に方向付けることができる。
【０１３１】
１つまたは複数の他の実施形態では、メモリモジュール６０４は、他のＤＰＥに結合され得る追加のメモリインターフェースを含む。たとえば、メモリモジュール６０４は、ＤＰＥ３０４−２４、３０４−２６、３０４−４、および／または３０４−５のコアに結合されるメモリインターフェースを含み得る。１つまたは複数の他の実施形態では、メモリモジュール６０４は、近傍のＤＰＥでないＤＰＥのコアに接続するために使用される１つまたは複数のメモリインターフェースを含み得る。たとえば、そのような追加のメモリインターフェースは、同じ行、同じ列、または対角線方向に１つまたは複数の他のＤＰＥによってＤＰＥ３０４−１５から分離されたＤＰＥのコアに接続され得る。したがって、図８に示されるような、メモリモジュール６０４内のメモリインターフェースの数、およびそのようなメモリインターフェースが接続される特定のＤＰＥは、限定ではなく例示のためのものである。
【０１３２】
上述したように、コア６０２は、読み出し動作および／または書き込み動作を、そのような動作のアドレスに基づいて、コアインターフェース８２８、８３０、８３２、および／または８３４を介して正しい方向にマッピングすることができる。コア６０２がメモリアクセスのためのアドレスを生成するとき、コア６０２は、アドレスを復号して方向（たとえば、アクセスされるべき特定のＤＰＥ）を決定することが可能であり、その決定された方向において正しいコアインターフェースにメモリ動作を転送する。
【０１３３】
したがって、コア６０２は、ＤＰＥ３０４−２５内のメモリモジュールおよび／またはＤＰＥ３０４−１５のメモリモジュール６０４であり得る共有メモリを介して、ＤＰＥ３０４−２５のコアと通信することができる。コア６０２は、ＤＰＥ３０４−１４内のメモリモジュールである共有メモリを介してＤＰＥ３０４−１４のコアと通信することができる。コア６０２は、ＤＰＥ３０４−５内のメモリモジュールおよび／またはＤＰＥ３０４−１５のメモリモジュール６０４であり得る共有メモリを介して、ＤＰＥ３０４−５のコアと通信することができる。さらに、コア６０２は、ＤＰＥ３０４−１５内のメモリモジュール６０４である共有メモリを介してＤＰＥ３０４−１６のコアと通信することができる。
【０１３４】
論じられたように、ＤＭＡエンジン８１６は、１つまたは複数のストリーム−メモリインターフェース（たとえばストリームインターフェース６４０）を含み得る。ＤＭＡエンジン８１６を介して、アプリケーションデータをデバイス１００内の他のソースから受信し、メモリモジュール６０４に格納することができる。たとえば、データは、ＤＰＥ３０４−１５と境界を共有する、および／または共有しない他のＤＰＥから、ストリームスイッチ６２６によって受信され得る。データはまた、デバイス１００の他のサブシステム（たとえば、ＮｏＣ３０８、ハードワイヤード回路ブロック、ＰＬ３１０、および／またはＰＳ３１２）から、ＳｏＣインターフェースブロック１０４によって、ＤＰＥのストリームスイッチを介して受信され得る。ＤＭＡエンジン８１６は、ストリームスイッチからそのようなデータを受信し、メモリモジュール６０４内の適切な１つまたは複数のメモリバンク８１２にデータを書き込むことができる。
【０１３５】
ＤＭＡエンジン８１６は、１つまたは複数のメモリ−ストリームインターフェース（たとえば、ストリームインターフェース６３０）を含み得る。ＤＭＡエンジン８１６を通して、データは、メモリモジュール６０４の１つまたは複数のメモリバンク８１２から読み出され、ストリームインターフェースを介して他の宛先に送信され得る。たとえば、ＤＭＡエンジン８１６は、メモリモジュール６０４からデータを読み出し、そのようなデータを、ストリームスイッチによって、ＤＰＥ３０４−１５と境界を共有する、および／または共有しない他のＤＰＥに送信することが可能である。ＤＭＡエンジン８１６はまた、ストリームスイッチおよびＳｏＣインターフェースブロック１０４を介して、そのようなデータを他のサブシステム（たとえば、ＮｏＣ３０８、ハードワイヤード回路ブロックＰＬ３１０、および／またはＰＳ３１２）に送信することができる。
【０１３６】
１つまたは複数の実施形態では、ＤＭＡエンジン８１６は、ＤＰＥ３０４−１５内のメモリマッピングされたスイッチ６３２によってプログラムされ得る。たとえば、ＤＭＡエンジン８１６は、構成レジスタ６３６によって制御され得る。構成レジスタ６３６は、ＤＰＥ相互接続６０６のメモリマッピングされたスイッチ６３２を使用して書き込まれ得る。特定の実施形態では、ＤＭＡエンジン８１６は、ＤＰＥ３０４−１５内のストリームスイッチ６２６によって制御され得る。たとえば、ＤＭＡエンジン８１６は、（たとえばストリームインターフェース６４０を介して）それに接続されるストリームスイッチ６２６によって書き込まれ得る制御レジスタを含み得る。ＤＰＥ相互接続６０６内のストリームスイッチ６２６を介して受信されたストリームは、構成レジスタ６２４、６３４、および／または６３６にロードされる構成データに応じて、メモリモジュール６０４内のＤＭＡエンジン８１６および／または直接コア６０２に接続され得る。ストリームは、構成レジスタ６２４、６３４、および／または６３６にロードされる構成データに応じて、ＤＭＡエンジン８１６（たとえばメモリモジュール６０４）および／またはコア６０２から送信され得る。
【０１３７】
メモリモジュール６０４は、ハードウェア同期化回路８２０（図８では「ＨＳＣ」と略称される）をさらに含むことができる。一般に、ハードウェア同期化回路８２０は、異なるコア（たとえば、近傍のＤＰＥのコア）、図８のコア６０２、ＤＭＡエンジン８１６、およびＤＰＥ相互接続６０６を介して通信することができる他の外部マスタ（たとえばＰＳ３１２）の動作を同期させることができる。例示的かつ非限定的な例として、ハードウェア同期化回路８２０は、メモリモジュール６０４内の、同じ、たとえば共有されるバッファにアクセスする異なるＤＰＥ内の２つの異なるコアを同期させることができる。
【０１３８】
１つまたは複数の実施形態では、ハードウェア同期化回路８２０は、複数の異なるロックを含み得る。ハードウェア同期化回路８２０に含まれるロックの特定の数は、メモリモジュールにアクセスすることができるエンティティの数に依存し得るが、限定として意図されない。特定の実施形態では、各異なるハードウェアロックは、同時要求を取り扱うことができるアービタを有することができる。さらに、各ハードウェアロックは、クロックサイクルごとに新たな要求を取り扱うことができる。ハードウェア同期化回路８２０は、コア６０２、ＤＰＥ３０４−２５、３０４−１６および３０４−５の各々からのコア、ＤＭＡエンジン８１６、ならびに／またはＤＰＥ相互接続６０６を介して通信するマスタなどの、複数の要求側を有することができる。要求側は、たとえば、メモリモジュール内のメモリの特定の部分にアクセスする前に、ローカルのハードウェア同期化回路からその特定の部分のロックを取得する。要求側は、別の要求側がメモリの同じ部分にアクセスする前にロックを獲得し得るように、ロックを解放してもよい。
【０１３９】
１つまたは複数の実施形態では、ハードウェア同期化回路８２０は、メモリモジュール６０４、より具体的にはメモリバンク８１２への複数のコアによるアクセスを同期させることができる。たとえば、ハードウェア同期化回路８２０は、図８に示すコア６０２、ＤＰＥ３０４−２５のコア、ＤＰＥ３０４−１６のコア、およびＤＰＥ３０４−５のコアの、図８のメモリモジュール６０４へのアクセスを同期させることができる。特定の実施形態では、ハードウェア同期化回路８２０は、メモリインターフェース８０２、８０４、８０６、および／または８０８を介してメモリモジュール６０４に直接アクセスすることができる任意のコアについてメモリバンク８１２へのアクセスを同期させることができる。メモリモジュール６０４にアクセスすることができる各コア（たとえば、図８のコア６０２、および近傍のＤＰＥのうちの１つまたは複数のＤＰＥのコア）は、たとえば、ハードウェア同期化回路８２０にアクセスして、メモリモジュール６０４内のメモリの特定の部分にアクセスする前にロックを要求および取得し、その後、ロックを解放して、別のコアがロックを獲得すると、別のコアがメモリのその部分にアクセスすることを可能してもよい。同様に、コア６０２は、ハードウェア同期化回路８２０、ＤＰＥ３０４−１４内のハードウェア同期化回路、ＤＰＥ３０４−２５内のハードウェア同期化回路、およびＤＰＥ３０４−５内のハードウェア同期化回路にアクセスして、各それぞれのＤＰＥのメモリモジュール内のメモリの一部にアクセスするためにロックを要求および取得し、その後ロックを解放することができる。ハードウェア同期化回路８２０は、ＤＰＥのメモリモジュールへのアクセスを調整および同期させることによって、ＤＰＥ間の共有メモリの動作を効果的に管理する。
【０１４０】
ハードウェア同期化回路８２０も、ＤＰＥ相互接続６０６のメモリマッピングされたスイッチ６３２を介してアクセスされ得る。１つまたは複数の実施形態では、リソースに対するアトミック取得（たとえば、アンロックかどうかをテストし、ロックを設定する）および解放（たとえば、ロックを外す）動作として、ロックトランザクションが実現される。ハードウェア同期化回路８２０のロックは、２人の参加者間でリソースの所有権を効率的に転送する方法を提供する。リソースは、ローカルメモリ内のバッファ（たとえばメモリモジュール６０４内のバッファ）のようなさまざまな回路コンポーネントのいずれかとすることができる。
【０１４１】
ハードウェア同期化回路８２０は共有メモリを介した通信をサポートするためにメモリへのアクセスを同期させることが可能である一方で、ハードウェア同期化回路８２０は、他のＤＰＥおよび／もしくは他のコアを含むさまざまな他のリソースならびに／またはエージェントのいずれかを同期させることも可能である。たとえば、ハードウェア同期化回路８２０はロックの共有プールを提供するので、ロックは、ＤＰＥ、たとえばＤＰＥのコアによって使用されて、別のＤＰＥまたはコアの動作を開始および／または停止させ得る。ハードウェア同期化回路８２０のロックは、ＤＰＥアレイ１０２によって実現される特定のアプリケーションに応じて必要とされ得る異なるエージェントおよび／またはリソースを同期させるなど、異なる目的のために、たとえば構成データに基づいて、割り当てられ得る。
【０１４２】
特定の実施形態では、ハードウェア同期化回路８２０のロックへのＤＰＥアクセスおよびＤＭＡアクセスは、ブロッキングである。このようなアクセスは、ロックを即座に取得できない場合に、要求側コアまたはＤＭＡエンジンをストールさせることができる。ハードウェアロックが利用可能になると、要求側コアまたはＤＭＡエンジンは、ロックを取得し、自動的にストール解除となる。
【０１４３】
一実施形態では、メモリマッピングされたアクセスは、メモリマッピングされたマスタがハードウェア同期化回路８２０のロックのステータスをポーリングすることができるように、非ブロッキングとすることができる。たとえば、メモリマッピングされたスイッチは、ロック「取得」要求を通常のメモリ読み出し動作としてハードウェア同期化回路８２０に送信することができる。読み出しアドレスは、ロックの識別子および他の要求データを符号化してもよい。読み出されたデータ、たとえば読み出し要求に対する応答は、取得要求動作の成功を信号伝達することができる。メモリ読み出しとして送信される「取得」は、成功するまでループで送信されてもよい。別の例では、ハードウェア同期化回路８２０は、要求されたロックのステータスが変化すると、メモリマッピングされたマスタが割り込みを受信するように、イベントを発行することができる。
【０１４４】
したがって、２つの近傍のＤＰＥがメモリモジュール６０４を介してデータバッファを共有するとき、そのバッファを含む特定のメモリモジュール６０４内のハードウェア同期化回路８２０は、アクセスを同期させる。必ずしも必要ではないが、典型的には、スループットを改善するためにメモリブロックをダブルバッファリングすることができる。
【０１４５】
２つのＤＰＥが近傍のＤＰＥでない場合、２つのＤＰＥは、共通のメモリモジュールへのアクセスを有さない。その場合、アプリケーションデータは、データストリームを介して転送され得る（用語「データストリーム」および「ストリーム」は、本開示内で時々互換的に使用され得る）。したがって、ローカルＤＭＡエンジンは、その転送を、ローカルメモリベースの転送からストリームベースの転送に変換することができる。その場合、コア６０２およびＤＭＡエンジン８１６は、ハードウェア同期化回路８２０を使用して同期化することができる。
【０１４６】
コア６０２はさらに、共有メモリによる通信を容易にするために、近傍のＤＰＥのハードウェア同期化回路、たとえばハードウェア同期化回路のロックにアクセスすることができる。したがって、そのような他のまたは近傍のＤＰＥ内のハードウェア同期化回路は、近傍のＤＰＥのコア間で、リソース、たとえばメモリへのアクセスを同期化することができる。
【０１４７】
ＰＳ３１２は、メモリマッピングされたスイッチ６３２を介してコア６０２と通信することができる。たとえば、ＰＳ３１２は、メモリ読み出しおよび書き込みを開始することによって、メモリモジュール６０４およびハードウェア同期化回路８２０にアクセスすることができる。別の実施形態では、ハードウェア同期化回路８２０は、ＰＳ３１２によるハードウェア同期化回路８２０のポーリングを避けるためにロックのステータスが変化するとＰＳ３１２に割り込みを送信してもよい。ＰＳ３１２はまた、ストリームインターフェースを介してＤＰＥ３０４−１５と通信することもできる。
【０１４８】
本明細書で提供される、メモリマッピングされた要求および／または転送を送信するエンティティに関する例は、限定ではなく例示のためのものである。特定の実施形態では、ＤＰＥアレイ１０２の外部にある任意のエンティティは、メモリマッピングされた要求および／または転送を送信することができる。たとえば、ＰＬ３１０で実現される回路ブロック、ＡＳＩＣ、または本明細書で記載されるＤＰＥアレイ１０２の外部の他の回路は、メモリマッピングされた要求および／または転送をＤＰＥ３０４に送信し、そのようなＤＰＥ内のメモリモジュールのハードウェア同期化回路にアクセスすることができる。
【０１４９】
共有メモリモジュールを介して近傍のＤＰＥと、ならびにＤＰＥ相互接続６０６を介して近傍および／または非近傍のＤＰＥと通信することに加えて、コア６０２はカスケードインターフェースを含み得る。図８の例では、コア６０２は、カスケードインターフェース８２２および８２４（図８では「ＣＩ」と略記する）を含む。カスケードインターフェース８２２および８２４は、他のコアとの直接通信を提供することができる。図示されるように、コア６０２のカスケードインターフェース８２２は、入力データストリームをＤＰＥ３０４−１４のコアから直接受信する。カスケードインターフェース８２２を介して受信されたデータストリームは、コア６０２内のデータ処理回路に提供され得る。コア６０２のカスケードインターフェース８２４は、出力データストリームをＤＰＥ３０４−１６のコアに直接送信することができる。
【０１５０】
図８の例では、カスケードインターフェース８２２およびカスケードインターフェース８２４の各々は、バッファリングするための先入れ先出し（ＦＩＦＯ）インターフェースを含み得る。特定の実施形態では、カスケードインターフェース８２２および８２４は、幅が数百ビットであり得るデータストリームを伝達することが可能である。カスケードインターフェース８２２および８２４の特定のビット幅は、限定として意図されない。図８の例では、カスケードインターフェース８２４は、コア６０２内のアキュムレータレジスタ８３６（図８では「ＡＣ」と略称される）に結合される。カスケードインターフェース８２４は、アキュムレータレジスタ８３６の内容を出力することができ、クロックサイクルごとにそのようにすることができる。累積レジスタ８３６は、コア６０２内のデータ処理回路によって生成および／または処理されるデータを格納することができる。
【０１５１】
図８の例では、カスケードインターフェース８２２および８２４は、構成レジスタ６２４にロードされる構成データに基づいてプログラムされ得る。たとえば、構成レジスタ６２４に基づいて、カスケードインターフェース８２２は、活性化または非活性化され得る。同様に、構成レジスタ６２４に基づいて、カスケードインターフェース８２４は、活性化または非活性化され得る。カスケードインターフェース８２２は、カスケードインターフェース８２４とは独立して活性化および／または非活性化され得る。
【０１５２】
１つまたは複数の他の実施形態では、カスケードインターフェース８２２および８２４は、コア６０２によって制御される。たとえば、コア６０２は、カスケードインターフェース８２２および／または８２４に読み書きするための命令を含むことができる。別の例では、コア６０２は、カスケードインターフェース８２２および／または８２４に対する読み出しおよび／または書き込みが可能なハードワイヤード回路を含み得る。特定の実施形態では、カスケードインターフェース８２２および８２４は、コア６０２の外部のエンティティによって制御され得る。
【０１５３】
本開示内に記載される実施形態内において、ＤＰＥ３０４はキャッシュメモリを含まない。キャッシュメモリを省略することによって、ＤＰＥアレイ１０２は、予測可能な、たとえば決定論的な性能を達成することができる。さらに、異なるＤＰＥに位置するキャッシュメモリ間のコヒーレンシを維持する必要がないので、大きな処理オーバーヘッドが回避される。
【０１５４】
１つまたは複数の実施形態によれば、ＤＰＥ３０４のコア６０２は、入力割り込みを有さない。したがって、ＤＰＥ３０４のコア６０２は、割り込みされることなく動作することができる。ＤＰＥ３０４のコア６０２への入力割り込みを省略することにより、ＤＰＥアレイ１０２は予測可能な、たとえば決定論的な性能を達成することもできる。
【０１５５】
１つまたは複数のＤＰＥ３０４が、ＰＳ３１２、ＰＬ３１０、ハードワイヤード回路ブロック、および／またはデバイス１００の別のサブシステム（たとえばＡＳＩＣ）において実現される外部エージェントと、外部の読出し−書込み（たとえばＤＤＲ）メモリ内の共有バッファを介して通信する場合、ＰＳ３１２におけるコヒーレンシ相互接続を使用してコヒーレンシ機構を実現してもよい。これらのシナリオでは、ＤＰＥアレイ１０２と外部エージェントとの間のアプリケーションデータ転送は、ＮｏＣ３０８および／またはＰＬ３１０の両方を横断してもよい。
【０１５６】
１つまたは複数の実施形態では、ＤＰＥアレイ１０２は、機能的に、１つまたは複数のＤＰＥからなる複数のグループに分離され得る。たとえば、特定のメモリインターフェースを、構成データを介して有効化および／または無効化して、１つまたは複数のＤＰＥのグループを作成してもよく、各グループは、ＤＰＥアレイ１０２のＤＰＥの１つまたは複数（たとえばサブセット）を含む。別の例では、ストリームインターフェースをグループごとに独立して構成して、グループ内のＤＰＥの他のコアと、ならびに／または指定された入力ソースおよび／もしくは出力先と通信してもよい。
【０１５７】
１つまたは複数の実施形態では、コア６０２は、メモリマッピングされたインターフェースを介してデバッグ機能をサポートすることができる。論じたように、プログラムメモリ６０８、メモリモジュール６０４、コア６０２、ＤＭＡエンジン８１６、ストリームスイッチ６２６、およびＤＰＥの他のコンポーネントは、メモリマッピングされる。メモリマッピングされたレジスタは、たとえばＰＳ３１２、ＰＬ３１０、および／またはＩＣ内のプラットフォーム管理コントローラなど、メモリマッピングされた要求を生成することができる任意のソースによって、読み出しおよび／または書き込みされてもよい。要求は、ＳｏＣインターフェースブロック１０４を通って、ＤＰＥアレイ１０２内の意図された、または目標のＤＰＥに進んでもよい。
【０１５８】
ＤＰＥ内のメモリマッピングされたスイッチを介して、コアの一時停止、コアの再開、コアのシングルステップ化、および／またはコアのリセットなどの機能を実行することができる。さらに、そのような動作は、複数の異なるＤＰＥに対して開始され得る。実行され得る他の例示的なデバッグ動作は、たとえば、本明細書で記載されるメモリマッピングされたインターフェースを介してハードウェア同期化回路８２０および／もしくはＤＭＡエンジン８１６のステータスを読み出し、ならびに／またはその状態を設定することを含む。
【０１５９】
１つまたは複数の実施形態では、ＤＰＥのストリームインターフェースは、ＤＰＥアレイ１０２から出力され得るトレース情報を生成することができる。たとえば、ストリームインターフェースは、ＤＰＥアレイ１０２からトレース情報を抽出するように構成されてもよい。トレース情報は、イベント発生をマーキングするタイムスタンプ付きデータおよび／または実行フローの限定された分岐トレースを含むパケット交換ストリームとして生成され得る。一態様では、ＤＰＥによって生成されたトレースは、ＰＬ３１０に実現されるローカルトレースバッファに、またはＳｏＣインターフェースブロック１０４およびＮｏＣ３０８を用いて外部ＲＡＭに、プッシュされ得る。別の態様では、ＤＰＥによって生成されたトレースは、オンチップ実現されたデバッグサブシステムに送信され得る。
【０１６０】
特定の実施形態では、各ＤＰＥの各コア６０２およびメモリモジュール６０４は、トレースデータをストリームスイッチ６２６に直接出力することができる追加のストリームインターフェースを含み得る。トレースデータ用のストリームインターフェースは、既に説明したものに加えてよい。ストリームスイッチ６２６は、異なるＤＰＥの複数のコアおよびメモリモジュールからのトレース情報が単一のデータストリーム上を移動できるように、トレースデータをパケット交換ストリーム上に方向付けるように構成され得る。注記されるように、ＤＰＥ相互接続ネットワークのストリーム部分は、トレースデータを、ＰＬ３１０を介してオンチップデバッグシステムに、ＳｏＣインターフェースブロック１０４を介して外部メモリに、またはＮｏＣ３０８を介してギガビットトランシーバに直接、送信するように構成することができる。生成され得る異なるタイプのトレースストリームの例は、プログラムカウンタ（ＰＣ）における各変化に対向するものとしての分岐命令においてＰＣ値を生成するＰＣトレースストリーム、ならびに（たとえば、コアおよび／またはメモリモジュールからそれぞれのトレースデータストリームを介する）ＤＰＥ内の中間結果を含むアプリケーションデータトレースストリームを含む。
【０１６１】
図９は、複数のＤＰＥにおけるコアのカスケードインターフェースの例示的な接続性を示す図である。図９の例では、ＤＰＥのコア６０２のみが図示されている。ＤＰＥ相互接続およびメモリモジュールのようなＤＰＥの他の部分は、例示の目的のために省略されている。
【０１６２】
図示されるように、コアは、図８に関連して記載されるカスケードインターフェースを介して直列に接続される。コア６０２−１はコア６０２−２に結合され、コア６０２−２はコア６０２−３に結合され、コア６０２−３はコア６０２−４に結合される。したがって、アプリケーションデータは、コア６０２−１からコア６０２−２、コア６０２−３、コア６０２−４に直接伝搬することができる。コア６０２−４は、次の上の行のコア６０２−８に結合される。コア６０２−８はコア６０２−７に結合され、コア６０２−７はコア６０２−６に結合され、コア６０２−６はコア６０２−５に結合される。したがって、アプリケーションデータは、コア６０２−４からコア６０８−８、コア６０２−７、コア６０２−６、コア６０２−５に直接伝搬することができる。コア６０２−５は、次の上の行のコア６０２−９に結合する。コア６０２−９はコア６０２−１０に結合され、コア６０２−１０はコア６０２−１１に結合され、コア６０２−１１はコア６０２−１２に結合される。したがって、アプリケーションデータは、コア６０２−５からコア６０２−９、コア６０２−１０、コア６０２−１１、コア６０２−１２に直接伝搬することができる。コア６０２−１２は、次の上の行のコア６０２−１６に結合される。コア６０２−１６はコア６０２−１５に結合され、コア６０２−１５はコア６０２−１４に結合され、コア６０２−１４はコア６０２−１３に結合される。したがって、アプリケーションデータは、コア６０２−１２からコア６０８−１６、コア６０２−１５、コア６０２−１４、コア６０２−１３に直接伝搬することができる。
【０１６３】
図９は、ＤＰＥのコアのカスケードインターフェースが、ＤＰＥアレイ内のＤＰＥの１つの行からＤＰＥの別の行へどのように結合され得るかを例示することを意図している。示されるコア（たとえばＤＰＥ）の列および／または行の特定の数は、限定として意図されない。図９は、カスケードインターフェースを使用するコア間の接続が、ＤＰＥの行の交互の端部において、「Ｓ」またはジグザグパターンで行われ得ることを示す。
【０１６４】
ＤＰＥアレイ１０２がＤＰＥ３０４からなる２つ以上の異なるクラスタを実現する実施形態では、ＤＰＥの第１のクラスタは、カスケードおよび／またはストリームインターフェースを介してＤＰＥの第２のクラスタに結合されない場合がある。たとえば、ＤＰＥの第１の２行が第１のクラスタを形成し、ＤＰＥの第２の２行が第２のクラスタを形成する場合、コア６０２−５のカスケードインターフェースは、コア６０２−９のカスケード入力にデータを渡さないように無効化されるようにプログラムされ得る。
【０１６５】
図８および図９に関連して記載される例では、各コアは、入力として動作するカスケードインターフェースおよび出力として動作するカスケードインターフェースを有するものとして示されている。１つまたは複数の他の実施形態では、カスケードインターフェースは、双方向インターフェースとして実現され得る。特定の実施形態では、コアは、コアがカスケードインターフェースを介して上、下、左、および／または右の他のコアと直接通信できるように、追加のカスケードインターフェースを含み得る。注記されるように、このようなインターフェースは、一方向または双方向であってもよい。
【０１６６】
図１０Ａ、図１０Ｂ、図１０Ｃ、図１０Ｄ、および図１０Ｅは、ＤＰＥ間の接続性の例を示す。図１０Ａは、共有メモリを使用するＤＰＥ間の接続性の例を示す。図１０Ａの例では、コア６０２−１５内に実現される機能またはカーネル（たとえば、ＤＰＥおよび／またはＤＰＥアレイにおいて実現されるユーザ回路設計）は、データ１００５、たとえばアプリケーションデータを処理し、ＤＰＥ３０４−１５内のコアインターフェースおよびメモリインターフェースを使用してメモリモジュール６０４−１５に置く。ＤＰＥ３０４−１５およびＤＰＥ３０４−１６は近傍のＤＰＥである。したがって、コア６０２−１６は、データ１００５を含むバッファのための、メモリモジュール６０４−１５内のハードウェア同期化回路（図示せず）からのロックの取得に基づいて、メモリモジュール６０４−１５からデータ１００５にアクセスすることができる。コア６０２−１５および６０２−１６によるメモリモジュール６０４−１５への共有アクセスは、コア６０２−１６がアプリケーションデータを処理するためにデータが１つのメモリから別のメモリに物理的に転送される必要がないので、高速トランザクション処理を容易にする。
【０１６７】
図１０Ｂは、ストリームスイッチを使用するＤＰＥ間の接続性の例を示す。図１０Ｂの例では、ＤＰＥ３０４−１５および３０４−１７は、非近傍のＤＰＥであり、したがって、１つまたは複数の介在するＤＰＥによって分離されている。コア６０２−１５内に実現される機能またはカーネルは、データ１００５を処理し、メモリモジュール６０４−１５に置く。メモリモジュール６０４−１５のＤＭＡエンジン８１６−１５は、メモリモジュール６０４−１５内にデータ１００５を格納するために使用されるバッファに対するロックの取得に基づいて、データ１００５を取り出す。ＤＭＡエンジン８１６−１５は、ＤＰＥ相互接続のストリームスイッチを介してデータ１００５をＤＰＥ３０４−１７に送信する。メモリモジュール６０４−１７内のＤＭＡエンジン８１６−１７は、ＤＰＥ３０４−１７内のストリームスイッチからデータ１００５を取り出すことができ、メモリモジュール６０４−１７内のバッファのためにメモリモジュール６０４−１７内のハードウェア同期化回路からロックを獲得した後、メモリモジュール６０４−１７のバッファ内にデータ１００５を格納することができる。図１０Ｂに示される接続性は、ＤＰＥ３０４−１５および３０４−１７内のそれぞれのストリームスイッチならびにＤＭＡエンジン８１６−１５および８１６−１７を、記載されたように動作するように構成するよう、構成データをロードすることによって、プログラムされ得る。
【０１６８】
図１０Ｃは、ストリームスイッチを使用するＤＰＥ間の接続性の別の例を示す。図１０Ｃの例では、ＤＰＥ３０４−１５および３０４−１７は、非近傍ＤＰＥであり、したがって、１つまたは複数の介在するＤＰＥによって分離されている。図１０Ｃは、データ１００５がＤＭＡ８１６−１５からストリームスイッチを介して別のＤＰＥのコアに直接与えられ得ることを示す。図示されるように、ＤＭＡ８１６−１５は、データ１００５をＤＰＥ３０４−１５のストリームスイッチ上に置く。コア６０２−１７は、データ１００５を、直接、ＤＰＥ３０４−１７内のストリームスイッチから、それに含まれるストリームインターフェースを使用して、受信することができ、データ１００５はメモリモジュール６０４−１７へと横断しない。図１０Ｃに示される接続性は、ＤＰＥ３０４−１５および３０４−１７のそれぞれのストリームスイッチならびにＤＭＡ８１６−１５を、記載されるように動作するように構成するよう、構成データをロードすることによって、プログラムされ得る。
【０１６９】
概して、図１０Ｃは、データのＤＭＡ−コア転送の例を示す。データのコア−ＤＭＡ転送も実現され得ることを理解されたい。たとえば、コア６０２−１７は、そこに含まれるストリームインターフェースおよびＤＰＥ３０４−１７のストリームスイッチを介してＤＰＥ３０４−１５にデータを送信することができる。ＤＭＡエンジン８１６−１５は、ＤＰＥ３０４−１５に含まれるストリームスイッチからデータを引き出し、メモリモジュール６０４−１５に格納することができる。
【０１７０】
図１０Ｄは、ストリームスイッチを使用するＤＰＥ間の接続性の別の例を示す。図１０Ｄを参照して、各々、異なる、非近傍のＤＰＥのコア６０２−１５、６０２−１７、および６０２−１９は、各それぞれのＤＰＥのストリームインターフェースを介して互いに直接通信することができる。図１０Ｄの例では、コア６０２−１５は、同じデータストリームをコア６０２−１７およびコア６０２−１９にブロードキャストすることができる。コア６０２−１５、６０２−１７、および６０２−１９を含む各それぞれのＤＰＥ内のストリームインターフェースのブロードキャスト機能は、それぞれのストリームスイッチおよび／またはストリームインターフェースを記載されるように構成するよう構成データをロードすることによってプログラムされ得る。１つまたは複数の他の実施形態では、コア６０２−１５は、データを他のＤＰＥのコアにマルチキャストすることができる。
【０１７１】
図１０Ｅは、ストリームスイッチおよびカスケードインターフェースを使用するＤＰＥ間の接続性の例を示す。図１０Ｅを参照して、ＤＰＥ３０４−１５およびＤＰＥ３０４−１６は近傍のＤＰＥである。場合によっては、あるカーネルは、複数のコア上で動作するように分割され得る。その場合、１つのサブカーネルの中間の累積結果は、カスケードインターフェースを介して次のコアのサブカーネルに転送され得る。
【０１７２】
図１０Ｅの例では、コア６０２−１５は、ストリームスイッチを介してデータ１００５を受信し、データ１００５を処理する。コア６０２−１５は、中間結果データ１０１０を生成し、コア６０２−１５の中の累積レジスタからカスケードインターフェースを介してコア６０２−１６に直接出力する。特定の実施形態では、コア６０２−１５のカスケードインターフェースは、ＤＰＥ３０４−１５のクロックサイクルごとにアキュムレータ値を転送することが可能である。コア６０２−１５によって受信されたデータ１００５は、ＤＰＥ相互接続内のストリームスイッチを介してコア６０２−１６にさらに伝播し、コア６０２−１６は、データ１００５（たとえば元のデータ）とコア６０２−１５によって生成された中間結果データ１０１０との両方を処理することができる。
【０１７３】
図１０の例では、データストリームの送信、データストリームのブロードキャスト、および／またはデータストリームのマルチキャストは、水平方向に示されている。データストリームは、ＤＰＥアレイ内のあるＤＰＥから任意の他のＤＰＥに送信、ブロードキャスト、および／またはマルチキャストされ得ることを理解されたい。したがって、データストリームは、意図された宛先ＤＰＥにロードされる構成データに基づいて、各そのようなＤＰＥに到達するのに必要とされるように、左、右、上、下、および／もしくは対角線状にＤＰＥに送信、ブロードキャスト、またはマルチキャストされ得る。
【０１７４】
図１１は、ＤＰＥ内のイベント処理回路の例を示す。ＤＰＥは、他のＤＰＥのイベント処理回路に相互接続されるイベント処理回路を含み得る。図１１の例では、イベント処理回路は、コア６０２およびメモリモジュール６０４内に実現される。コア６０２は、イベントブロードキャスト回路１１０２およびイベントロジック１１０４を含み得る。メモリモジュール６０４は、イベントブロードキャスト回路１１０６およびイベントロジック１１０８を含む別個のイベント処理回路を含み得る。
【０１７５】
イベントブロードキャスト回路１１０２は、図１１に示される例示的なＤＰＥの上下の近傍のＤＰＥのコアの各々内のイベントブロードキャスト回路に接続され得る。イベントブロードキャスト回路１１０２はまた、図１１に示される例示的なＤＰＥの左側の近傍のＤＰＥのメモリモジュール内のイベントブロードキャスト回路にも接続され得る。図示されるように、イベントブロードキャスト回路１１０２は、イベントブロードキャスト回路１１０６に接続される。イベントブロードキャスト回路１１０６は、図１１に示される例示的なＤＰＥの上下の近傍のＤＰＥのメモリモジュールの各々内のイベントブロードキャスト回路に接続され得る。イベントブロードキャスト回路１１０６はまた、図１１に示される例示的なＤＰＥの右の近傍のＤＰＥのコア内のイベントブロードキャスト回路にも接続され得る。
【０１７６】
このようにして、ＤＰＥのイベント処理回路は、ＤＰＥアレイ内に独立したイベントブロードキャストネットワークを形成することができる。ＤＰＥアレイ内のイベントブロードキャストネットワークは、ＤＰＥ相互接続ネットワークとは独立して存在し得る。さらに、イベントブロードキャストネットワークは、好適な構成データを構成レジスタ６２４および／または６３６にロードすることによって個々に構成可能であり得る。
【０１７７】
図１１の例では、イベントブロードキャスト回路１１０２およびイベントロジック１１０４は、構成レジスタ６２４によって構成され得る。イベントブロードキャスト回路１１０６およびイベントロジック１１０８は、構成レジスタ６３６によって構成され得る。構成レジスタ６２４および６３６は、ＤＰＥ相互接続６０６のメモリマッピングされたスイッチを介して書き込まれ得る。図１１の例では、構成レジスタ６２４は、コア６０２内で発生する特定のタイプのイベントを検出するようにイベントロジック１１０４をプログラミングする。構成レジスタ６２４にロードされた構成データは、たとえば、イベントロジック１１０４によって複数の異なるタイプの所定のイベントのいずれが検出されるかを判定する。イベントの例は、コア６０２による読み出し動作の開始および／または終了、コア６０２による書き込み動作の開始および／または終了、ストール、ならびにコア６０２によって実行される他の動作の発生を含み得るが、これらに限定されない。同様に、構成レジスタ６３６は、メモリモジュール６０４内で発生する特定のタイプのイベントを検出するようにイベントロジック１１０８をプログラミングする。イベントの例は、ＤＭＡエンジン８１６による読み出し動作の開始および／または終了、ＤＭＡエンジン８１６による書き込み動作の開始および／または終了、ストール、ならびにメモリモジュール６０４によって実行される他の動作の発生を含み得るが、これらに限定されない。構成レジスタ６３６にロードされた構成データは、たとえば、イベントロジック１１０８によって複数の異なるタイプの所定のイベントのいずれが検出されるかを判定する。イベントロジック１１０４および／またはイベントロジック１１０８は、ＤＭＡエンジン８１６、メモリマッピングされたスイッチ６３２、ストリームスイッチ６２６、メモリモジュール６０４のメモリインターフェース、コア６０２のコアインターフェース、コア６０２のカスケードインターフェース、および／もしくはＤＰＥ内に位置する他のコンポーネントから生じる、ならびに／またはそれに関連するイベントを検出することができることを理解されたい。
【０１７８】
構成レジスタ６２４は、さらに、イベントブロードキャスト回路１１０２をプログラミングすることができ、構成レジスタ６３６は、イベントブロードキャスト回路１１０６をプログラミングすることができる。たとえば、構成レジスタ６２４にロードされた構成データは、イベントブロードキャスト回路１１０２が他のイベントブロードキャスト回路から受信したイベントのうちのどれがさらに別のイベントブロードキャスト回路に、および／またはＳｏＣインターフェースブロック１０４に伝搬されるかを判定することができる。構成データはまた、内部でイベントロジック１１０４によって生成されたどのイベントが他のイベントブロードキャスト回路に、および／またはＳｏＣインターフェースブロック１０４に伝搬されるかを指定することもできる。
【０１７９】
同様に、構成レジスタ６３６にロードされた構成データは、イベントブロードキャスト回路１１０６が他のイベントブロードキャスト回路から受信したイベントのうちのどれがさらに別のイベントブロードキャスト回路に、および／またはＳｏＣインターフェースブロック１０４に伝搬されるかを判定することができる。構成データはまた、内部でイベントロジック１１０８によって生成されたどのイベントが他のイベントブロードキャスト回路に、および／またはＳｏＣインターフェースブロック１０４に伝搬されるかを指定することもできる。
【０１８０】
したがって、イベントロジック１１０４によって生成されたイベントは、イベントブロードキャスト回路１１０２に提供されてもよく、他のＤＰＥにブロードキャストされてもよい。図１１の例では、イベントブロードキャスト回路１１０２は、イベントを、内部で生成されたか他のＤＰＥから受信されたかにかかわらず、上のＤＰＥ、左へのＤＰＥ、および下のＤＰＥまたはＳｏＣインターフェースブロック１０４にブロードキャストすることができる。イベントブロードキャスト回路１１０２はまた、メモリモジュール６０４内のイベントブロードキャスト回路１１０６にイベントをブロードキャストすることもできる。
【０１８１】
イベントロジック１１０８によって生成されたイベントは、イベントブロードキャスト回路１１０６に提供されてもよく、他のＤＰＥにブロードキャストされてもよい。図１１の例では、イベントを、内部で生成されたか他のＤＰＥから受信されたかにかかわらず、上のＤＰＥに、右側のＤＰＥに、および下のＤＰＥまたはＳｏＣインターフェースブロック１０４にブロードキャストすることができる。イベントブロードキャスト回路１１０６はまた、コア６０２内のイベントブロードキャスト回路１１０２にイベントをブロードキャストすることもできる。
【０１８２】
図１１の例では、コアに位置するイベントブロードキャスト回路は、上および／または下の近傍のＤＰＥのコアに位置するイベントブロードキャスト回路と垂直に通信する。ＤＰＥがＳｏＣインターフェースブロック１０４の真上にある（または直接隣接する）場合、そのＤＰＥのコア内のイベントブロードキャスト回路は、ＳｏＣインターフェースブロック１０４と通信することができる。同様に、メモリモジュールに位置するイベントブロードキャスト回路は、上および／または下の近傍のＤＰＥのメモリモジュールに位置するイベントブロードキャスト回路と垂直に通信する。ＤＰＥがＳｏＣインターフェースブロック１０４の真上にある（たとえば、直接隣接する）場合、そのＤＰＥのメモリモジュール内のイベントブロードキャスト回路は、ＳｏＣインターフェースブロック１０４と通信することができる。イベントブロードキャスト回路はさらに、直接左および／または右のイベントブロードキャスト回路と、そのようなイベントブロードキャスト回路が別のＤＰＥに、および／またはコアもしくはメモリモジュール内に位置するかどうかに関わらず、通信することができる。
【０１８３】
構成レジスタ６２４および６３６が書き込まれると、イベントロジック１１０４および１１０８はバックグラウンドで動作することができる。特定の実施形態では、イベントロジック１１０４は、コア６０２内の特定の条件を検出することに応答してのみイベントを生成し；イベントロジック１１０８は、メモリモジュール６０４内の特定の条件を検出することに応答してのみイベントを生成する。
【０１８４】
図１２は、ＤＰＥ３０４の別の例示的なアーキテクチャを示す。図１２の例では、ＤＰＥ３０４は、複数の異なるコアを含み、「クラスタ」タイプのＤＰＥアーキテクチャと呼ばれ得る。図１２では、ＤＰＥ３０４は、コア１２０２，１２０４，１２０６，および１２０８を含む。各コア１２０２〜１２０８の各々は、それぞれコアインターフェース１２１０，１２１２，１２１４，１２１６（図１２では「コアＩＦ」と略称する）を介してメモリプール１２２０に接続される。コアインターフェース１２１０〜１２１６の各々は、クロスバー１２２４を介して複数のメモリバンク１２２２−１〜１２２２−Ｎに結合する。クロスバー１２２４を介して、コア１２０２〜１２０８のいずれか１つは、メモリバンク１２２２−１〜１２２２−Ｎのいずれか１つにアクセスすることができる。したがって、図１２の例示的なアーキテクチャ内では、コア１２０２〜１２０８は、メモリプール１２２０の共有メモリバンク１２２２を介して互いに通信することができる。
【０１８５】
１つまたは複数の実施形態では、メモリプール１２２０は、３２個のメモリバンクを含み得る。メモリプール１２２０に含まれるメモリバンクの数は、限定ではなく例示のために提供される。他の実施形態では、メモリプール１２２０に含まれるメモリバンクの数は、３２より多くても、３２より少なくてもよい。
【０１８６】
図１２の例では、ＤＰＥ３０４は、メモリマッピングされたスイッチ１２２６を含む。メモリマッピングされたスイッチ１２２６は、各基本四方位方向（たとえば、北、南、西、東）において近傍のＤＰＥ内のメモリマッピングされたスイッチに、およびメモリプール１２２０に結合することができる複数のメモリマッピングされたインターフェース（図示せず）を含む。各メモリマッピングされたインターフェースは、１つまたは複数のマスタおよび１つまたは複数のスレーブを含むことができる。たとえば、メモリマッピングされたスイッチ１２２６は、メモリマッピングされたインターフェースを介してクロスバー１２２４に結合される。メモリマッピングされたスイッチ１２２６は、本開示内の他の例示的なＤＰＥに関連して記載されるように、構成、制御、およびデバッグデータを伝達することが可能である。したがって、メモリマッピングされたスイッチ１２２６は、ＤＰＥ３０４において構成レジスタ（図示せず）をロードすることができる。図１２の例では、ＤＰＥ３０４は、ストリームスイッチ１２３２、コア１２０２〜１２０８、およびＤＭＡエンジン１２３４の動作を制御するための構成レジスタを含み得る。
【０１８７】
図１２の例では、メモリマッピングされたスイッチ１２２６は、４つの基本四方位方向の各々において通信することができる。他の実施形態では、メモリマッピングされたスイッチ１２２６は、北方向および南方向にのみ通信することができる。他の実施形態では、メモリマッピングされたスイッチ１２２６は、メモリマッピングされたスイッチ１２２６が４つより多い他のエンティティと通信することを可能にし、それによって、対角線方向の他のＤＰＥおよび／または他の非近傍ＤＰＥとの通信を可能にする、追加のメモリマッピングされたインターフェースを含み得る。
【０１８８】
ＤＰＥ３０４はまた、ストリームスイッチ１２３２も含む。ストリームスイッチ１２３２は、各基本四方位方向（たとえば、北、南、西、東）において近傍のＤＰＥ内のストリームスイッチに、およびコア１２０２〜１２０８に結合することができる複数のストリームインターフェース（図示せず）を含む。各ストリームインターフェースは、１つまたは複数のマスタおよび１つまたは複数のスレーブを含み得る。ストリームスイッチ１２３２は、さらに、ＤＭＡエンジン１２３４に結合されるストリームインターフェースをさらに含む。
【０１８９】
ＤＭＡエンジン１２３４は、インターフェース１２１８を介してクロスバー１２２４に結合される。ＤＭＡエンジン１２３４は、２つのインターフェースを含み得る。たとえば、ＤＭＡエンジン１２３４は、メモリバンク１２２２のうちの１つまたは複数からデータを読み出し、そのデータをストリームスイッチ１２３２上で送信することができるメモリ−ストリームインターフェースを含み得る。ＤＭＡエンジン１２３４はまた、ストリームスイッチ１２３２を介してデータを受信し、そのデータをメモリバンク１２２２のうちの１つまたは複数内に格納することができるストリーム−メモリインターフェースも含み得る。インターフェースの各々は、メモリ−ストリームかストリーム−メモリかにかかわらず、１つの入力／出力ストリームまたは複数の同時入力／出力ストリームをサポートすることができる。
【０１９０】
図１２の例示的なアーキテクチャは、メモリマッピングされたスイッチ１２２６およびストリームスイッチ１２３２の両方を介してＤＰＥ間通信をサポートする。図示されるように、メモリマッピングされたスイッチ１２２６は、上、下、左、および右の近傍のＤＰＥのメモリマッピングされたスイッチと通信することができる。同様に、ストリームスイッチ１２３２は、上、下、左、および右の近傍のＤＰＥのストリームスイッチと通信することができる。
【０１９１】
１つまたは複数の実施形態では、メモリマッピングされたスイッチ１２２６およびストリームスイッチ１２３２の両方は、アプリケーションデータを共有するために、他のＤＰＥ（近傍および非近傍の両方）のコア間のデータ転送をサポートすることができる。メモリマッピングされたスイッチ１２２６はさらに、ＤＰＥ３０４を構成する目的で、構成、制御、およびデバッグデータの転送をサポートすることができる。特定の実施形態では、ストリームスイッチ１２３２は、アプリケーションデータの転送をサポートし、メモリマッピングされたスイッチ１２２６は、構成、制御、およびデバッグデータの転送のみをサポートする。
【０１９２】
図１２の例では、コア１２０２〜１２０８は、前述したようにカスケードインターフェースを介して直列に接続されている。さらに、コア１２０２は、図１２のＤＰＥの左の近傍のＤＰＥ内の最も右のコアのカスケードインターフェース（たとえば出力）に結合され、コア１２０８は、図１２のＤＰＥの右の近傍のＤＰＥ内の最も左のコアのカスケードインターフェース（たとえば入力）に結合される。クラスタアーキテクチャを使用するＤＰＥのカスケードインターフェースは、図９に示されるように行から行へ接続され得る。１つまたは複数の他の実施形態では、コア１２０２〜１２０８のうちの１つまたは複数は、水平カスケード接続の代わりに、および／または水平カスケード接続に加えて、カスケードインターフェースを介して、上および／または下の近傍のＤＰＥ内のコアに接続され得る。
【０１９３】
図１２の例示的なアーキテクチャは、本明細書で説明するように、ＤＰＥを実現し、ＤＰＥアレイを形成するために、使用され得る。図１２の例示的なアーキテクチャは、本開示内で記載される他の例示的なＤＰＥアーキテクチャと比較して、コアに利用可能なメモリの量を増加させる。したがって、コアがより大量のメモリへのアクセスを必要とする用途では、単一のＤＰＥ内で複数のコアを一緒にクラスタ化する図１２のアーキテクチャが使用され得る。説明のため、図１２のＤＰＥ３０４の構成に応じて、すべてのコアを使用する必要はない。したがって、１つまたは複数（たとえば、ＤＰＥ３０４のすべてのコア１２０２〜１２０８よりも少ない）は、メモリプール１２２０にアクセスし、そうでなければ図１２の例において構成レジスタ（図示せず）にロードされる構成データに基づく場合よりも大量のメモリへのアクセスを有することができる。
【０１９４】
図１３は、図１のＤＰＥアレイ１０２の例示的なアーキテクチャを示す。図１３の例では、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４とデバイス１００の他のサブシステムとの間のインターフェースを提供する。ＳｏＣインターフェースブロック１０４は、ＤＰＥをデバイスに統合する。ＳｏＣインターフェースブロック１０４は、構成データをＤＰＥ３０４に伝達すること、ＤＰＥ３０４から他のサブシステムにイベントを伝達すること、他のサブシステムからＤＰＥ３０４にイベントを伝達すること、割り込みを生成しＤＰＥアレイ１０２の外部のエンティティに伝達すること、他のサブシステムとＤＰＥ３０４との間でアプリケーションデータを伝達すること、ならびに／または他のサブシステムとＤＰＥ３０４との間でトレースおよび／もしくはデバッグデータを伝達することが可能である。
【０１９５】
図１３の例では、ＳｏＣインターフェースブロック１０４は、複数の相互接続されたタイルを含む。たとえば、ＳｏＣインターフェースブロック１０４は、タイル１３０２，１３０４，１３０６，１３０８，１３１０，１３１２，１３１４，１３１６，１３１８，および１３２０を含む。図１３の例では、タイル１３０２〜１３２０は、行状に編成される。他の実施形態では、タイルは、列状、グリッド状、または別のレイアウトに配置されてもよい。たとえば、ＳｏＣインターフェースブロック１０４は、ＤＰＥ３０４の左側、ＤＰＥ３０４の右側、ＤＰＥ３０４の列間などのタイルの列として実現され得る。別の実施形態では、ＳｏＣインターフェースブロック１０４は、ＤＰＥアレイ１０２の上に位置してもよい。ＳｏＣインターフェースブロック１０４は、タイルがＤＰＥアレイ１０２の下、ＤＰＥアレイ１０２の左、ＤＰＥアレイ１０２の右、および／またはＤＰＥアレイ１０２の上の任意の組み合わせで配置されるように実現されてもよい。この点に関して、図１３は、限定ではなく例示の目的のために示される。
【０１９６】
１つまたは複数の実施形態では、タイル１３０２〜１３２０は、同じアーキテクチャを有する。１つまたは複数の他の実施形態では、タイル１３０２〜１３２０は、２つ以上の異なるアーキテクチャで実現され得る。特定の実施形態では、異なるアーキテクチャを使用して、ＳｏＣインターフェースブロック１０４内でタイルを実現し、各異なるタイルアーキテクチャは、デバイス１００の異なる種類のサブシステムまたはサブシステムの組み合わせとの通信をサポートすることができる。
【０１９７】
図１３の例では、タイル１３０２〜１３２０は、データが１つのタイルから別のタイルに伝搬され得るように結合される。たとえば、データはタイル１３０２からタイル１３０４、１３０６を通り、タイルのラインを下ってタイル１３２０に伝搬され得る。同様に、データは、タイル１３２０からタイル１３０２へ逆方向に伝搬され得る。１つまたは複数の実施形態において、タイル１３０２〜１３２０の各々は、複数のＤＰＥのためのインターフェースとして動作することができる。たとえば、タイル１３０２〜１３２０の各々は、ＤＰＥアレイ１０２のＤＰＥ３０４のサブセットのためのインターフェースとして動作することができる。各タイルがインターフェースを提供するＤＰＥのサブセットは、どのＤＰＥもＳｏＣインターフェースブロック１０４の２つ以上のタイルによってインターフェースが提供されないように、相互に排他的であってもよい。
【０１９８】
一例では、タイル１３０２〜１３２０の各々は、ＤＰＥ３０４の列のためのインターフェースを提供する。例示のため、タイル１３０２は、列ＡのＤＰＥへのインターフェースを提供する。タイル１３０４は、列ＢのＤＰＥへのインターフェースを提供する。各場合において、タイルは、ＤＰＥの列内の隣接するＤＰＥへの直接接続を含み、この例ではそのＤＰＥは底部のＤＰＥである。列Ａを参照すると、たとえば、タイル１３０２はＤＰＥ３０４−１に直接接続される。列Ａ内の他のＤＰＥはタイル１３０２と通信することができるが、ただし、同じ列内の介在するＤＰＥのＤＰＥ相互接続を通じて通信する。
【０１９９】
たとえば、タイル１３０２は、ＰＳ３１２、ＰＬ３１０および／または別のハードワイヤード回路ブロック、たとえばＡＳＩＣブロックなどの別のソースからデータを受信することができる。タイル１３０２は、列ＡのＤＰＥにアドレス指定されたデータの部分をそのようなＤＰＥに提供し、他の列のＤＰＥ（たとえば、タイル１３０２がインターフェースではないＤＰＥ）にアドレス指定されたデータをタイル１３０４に送信することができる。タイル１３０４は、同じまたは同様の処理を実行することができ、タイル１３０２から受信された、列ＢのＤＰＥにアドレス指定されたデータがそのようなＤＰＥに提供される一方で、他の列のＤＰＥにアドレス指定されたデータをタイル１３０６に送信する。
【０２００】
このようにして、データは、データがアドレス指定されたＤＰＥ（たとえば「目標ＤＰＥ」）のためのインターフェースとして動作するタイルに到達するまで、ＳｏＣインターフェースブロック１０４のタイルからタイルに伝搬することができる。目標ＤＰＥのためのインターフェースとして動作するタイルは、ＤＰＥのメモリマッピングされたスイッチおよび／またはＤＰＥのストリームスイッチを使用して、データを目標ＤＰＥに方向付けることができる。
【０２０１】
注記したように、列の使用は、例示的な実現例である。他の実施形態では、ＳｏＣインターフェースブロック１０４の各タイルは、ＤＰＥアレイ１０２のＤＰＥの行にインターフェースを提供することができる。そのような構成は、ＳｏＣインターフェースブロック１０４が、ＤＰＥ３０４の列の左、右、または間にかかわらず、タイルの列として実現される場合に使用され得る。他の実施形態では、各タイルがインターフェースを提供するＤＰＥのサブセットは、ＤＰＥアレイ１０２のすべてのＤＰＥよりも少ないＤＰＥの任意の組み合わせとすることができる。たとえば、ＤＰＥ３０４は、ＳｏＣインターフェースブロック１０４のタイルに分配され得る。そのようなＤＰＥの特定の物理的レイアウトは、ＤＰＥ相互接続によって確立されるＤＰＥの接続性に基づいて変わり得る。たとえば、タイル１３０２は、ＤＰＥ３０４−１、３０４−２、３０４−１１、および３０４−１２にインターフェースを提供してもよい。ＳｏＣインターフェースブロック１０４の別のタイルは、４つの他のＤＰＥなどにインターフェースを提供してもよい。
【０２０２】
図１４Ａ、図１４Ｂ、および図１４Ｃは、ＳｏＣインターフェースブロック１０４のタイルを実現するための例示的なアーキテクチャを示す。図１４Ａは、タイル１３０４の例示的な実現例を示す。図１４Ａに示されるアーキテクチャはまた、ＳｏＣインターフェースブロック１０４に含まれる他の任意のタイルを実現するためにも使用され得る。
【０２０３】
タイル１３０４は、メモリマッピングされたスイッチ１４０２を含む。メモリマッピングされたスイッチ１４０２は、複数の異なる方向の各々において通信するための複数のメモリマッピングされたインターフェースを含み得る。例示的かつ非限定的な例として、メモリマッピングされたスイッチ１４０２は、１つまたは複数のメモリマッピングされたインターフェースを含むことができ、メモリマッピングされたインターフェースは、直上のＤＰＥのメモリマッピングされたインターフェースに垂直に接続するマスタを有する。したがって、メモリマッピングされたスイッチ１４０２は、ＤＰＥのうちの１つまたは複数のＤＰＥのメモリマッピングされたインターフェースに対するマスタとして動作することができる。特定の例において、メモリマッピングされたスイッチ１４０２は、ＤＰＥのサブセットのためのマスタとして動作し得る。たとえば、メモリマッピングされたスイッチ１４０２は、タイル１３０４上のＤＰＥの列、たとえば、図１３の列Ｂのためのマスタとして動作してもよい。メモリマッピングされたスイッチ１４０２は、ＤＰＥアレイ１０２内の複数の異なる回路（たとえばＤＰＥ）に接続するための追加のメモリマッピングされたインターフェースを含み得ることを理解されたい。メモリマッピングされたスイッチ１４０２のメモリマッピングされたインターフェースはまた、タイル１３０４の上方に位置する回路（たとえば１つまたは複数のＤＰＥ）と通信することができる１つまたは複数のスレーブを含み得る。
【０２０４】
図１４Ａの例では、メモリマッピングされたスイッチ１４０２は、近傍のタイル（たとえば、タイル１３０２および１３０６）内のメモリマッピングされたスイッチへの水平方向の通信を容易にする１つまたは複数のメモリマッピングされたインターフェースを含み得る。説明のため、メモリマッピングされたスイッチ１４０２は、メモリマッピングされたインターフェースを介して水平方向に近傍のタイルに接続されてもよく、各そのようなメモリマッピングされたインターフェースは、１つもしくは複数のマスタおよび／または１つもしくは複数のスレーブを含む。したがって、メモリマッピングされたスイッチ１４０２は、データ（たとえば、構成、制御、および／またはデバッグデータ）を、あるタイルから別のタイルに移動させて、正しいＤＰＥおよび／または複数のＤＰＥからなる正しいサブセットに到達させ、そのデータを、タイル１３０４の上の列にあるか、ＳｏＣインターフェースブロック１０４の別のタイルがインターフェースとして動作する別のサブセットにあるかにかかわらず、目標ＤＰＥに向けることができる。たとえば、メモリマッピングされたトランザクションがＮｏＣ３０８から受信された場合、メモリマッピングされたスイッチ１４０２は、トランザクションを水平に、たとえば、ＳｏＣインターフェースブロック１０４内の他のタイルに分配することができる。
【０２０５】
メモリマッピングされたスイッチ１４０２はまた、タイル１３０４内の構成レジスタ１４３６に結合される１つもしくは複数のマスタおよび／またはスレーブを有するメモリマッピングされたインターフェースを含み得る。メモリマッピングされたスイッチ１４０２を介して、構成データを構成レジスタ１４３６にロードして、タイル１３０４内のコンポーネントによって実行されるさまざまな機能および動作を制御し得る。図１４Ａ、図１４Ｂ、および図１４Ｃは、構成レジスタ１４３６とタイル１３０４の１つまたは複数の要素との間の接続を示す。しかしながら、構成レジスタ１４３６は、タイル１３０４の他の要素を制御し得、したがって、そのような他の要素への接続を有し得るが、そのような接続は、図１４Ａ、図１４Ｂ、および／または図１４Ｃには示されていないことを理解されたい。
【０２０６】
メモリマッピングされたスイッチ１４０２は、ブリッジ１４１８を介してＮｏＣインターフェース１４２６に結合されるメモリマッピングされたインターフェースを含み得る。このメモリマッピングされたインターフェースは、１つもしくは複数のマスタおよび／またはスレーブを含むことができる。ブリッジ１４１８は、ＮｏＣ３０８からのメモリマッピングされたデータ転送（たとえば、構成、制御、および／またはデバッグデータ）を、メモリマッピングされたスイッチ１４０２によって受信され得るメモリマッピングされたデータに変換することが可能である。
【０２０７】
タイル１３０４はまた、イベント処理回路を含み得る。たとえば、タイル１３０４は、イベントロジック１４３２を含む。イベントロジック１４３２は、構成レジスタ１４３６によって構成され得る。図１４Ａの例では、イベントロジック１４３２は、制御、デバッグ、およびトレース（ＣＤＴ）回路１４２０に結合される。構成レジスタ１４３６にロードされる構成データは、タイル１３０４内でローカルに検出され得る特定のイベントを定義する。イベントロジック１４３２は、構成レジスタ１４３６により、ＤＭＡエンジン１４１２、メモリマッピングされたスイッチ１４０２、ストリームスイッチ１４０６、ＰＬインターフェース１４１０に位置する先入れ先出し（ＦＩＦＯ）メモリ、および／もしくはＮｏＣストリームインターフェース１４１４から発信される、ならびに／またはそれに関連する、さまざまな異なるイベントを検出することができる。イベントの例は、ＤＭＡ転送終了、ロック解放、ロック取得、ＰＬ転送の終了、またはタイル１３０４を通るデータフローの開始もしくは終了に関連する他のイベントを含み得るが、これらに限定されない。イベントロジック１４３２は、そのようなイベントをイベントブロードキャスト回路１４０４および／またはＣＤＴ回路１４２０に与えることができる。たとえば、別の実施形態では、イベントロジック１４３２は、ＣＤＴ回路１４２０への直接接続を有さず、イベントブロードキャスト回路１４０４を介してＣＤＴ回路１４２０に接続する場合がある。
【０２０８】
タイル１３０４は、イベントブロードキャスト回路１４０４およびイベントブロードキャスト回路１４３０を含む。イベントブロードキャスト回路１４０４およびイベントブロードキャスト回路１４３０の各々は、ＤＰＥアレイ１０２のイベントブロードキャストネットワークと、ＳｏＣインターフェースブロック１０４の他のタイルと、デバイス１００のＰＬ３１０との間のインターフェースを提供する。イベントブロードキャスト回路１４０４は、隣接するまたは近傍のタイル１３０２内のイベントブロードキャスト回路およびイベントブロードキャスト回路１４３０に結合される。イベントブロードキャスト回路１４３０は、隣接するまたは近傍のタイル１３０６内のイベントブロードキャスト回路に結合される。ＳｏＣインターフェースブロック１０４のタイルがグリッドまたはアレイに配置される１つまたは複数の他の実施形態では、イベントブロードキャスト回路１４０４および／またはイベントブロードキャスト回路１４３０は、タイル１３０４の上および／または下の他のタイルに位置するイベントブロードキャスト回路に接続され得る。
【０２０９】
図１４Ａの例では、イベントブロードキャスト回路１４０４は、タイル１３０４に隣接するＤＰＥ、たとえば、列Ｂにおけるタイル１３０４のすぐ上のＤＰＥ３０４−２のコア内のイベントブロードキャスト回路に結合される。イベントブロードキャスト回路１４０４は、ＰＬインターフェース１４１０にも結合される。イベントブロードキャスト回路１４３０は、タイル１３０４に隣接するＤＰＥ、たとえば列Ｂのタイル１３０４のすぐ上のＤＰＥ３０４−２のメモリモジュールにおけるイベントブロードキャスト回路に結合される。図示はしないが、他の実施形態においては、イベントブロードキャスト回路１４３０はＰＬインターフェース１４１０にも結合され得る。
【０２１０】
イベントブロードキャスト回路１４０４およびイベントブロードキャスト回路１４３０は、内部でイベントロジック１４３２によって生成されたイベント、ＳｏＣインターフェースブロック１０４の他のタイルから受信されたイベント、および／または列ＢのＤＰＥ（もしくはＤＰＥアレイ１０２の他のＤＰＥ）から受信されたイベントを、他のタイルに送信することができる。イベントブロードキャスト回路１４０４はさらに、そのようなイベントを、ＰＬインターフェース１４１０を介してＰＬ３１０に送信することができる。別の例では、イベントは、イベントブロードキャスト回路１４０４から、ＰＬインターフェースブロック１４１０を使用して、ＤＰＥアレイ１０２の外に位置するＡＳＩＣおよび／もしくはＰＬ回路ブロックなど、デバイス１００内の他のブロックならびに／またはサブシステムに送信され得る。さらに、ＰＬインターフェース１４１０は、ＰＬ３１０からイベントを受信し、そのようなイベントをイベントブロードキャストスイッチ１４０４および／またはストリームスイッチ１４０６に与えることができる。一態様では、イベントブロードキャスト回路１４０４は、ＰＬ３１０から受信された任意のイベントを、ＰＬインターフェース１４１０を介して、ＳｏＣインターフェースブロック１０４の他のタイルに、ならびに／または列ＢのＤＰＥおよび／もしくはＤＰＥアレイ１０２の他のＤＰＥに送信することができる。別の例では、ＰＬ３１０から受信されたイベントは、イベントブロードキャスト回路１４０４からＡＳＩＣなどのデバイス１００内の他のブロックおよび／またはサブシステムに送信され得る。イベントはＳｏＣインターフェースブロック１０４内のタイル間でブロードキャストされ得るので、イベントは、ＳｏＣインターフェースブロック１０４内のタイルおよびイベントブロードキャスト回路を目標（たとえば、意図された）ＤＰＥまで横断することによって、ＤＰＥアレイ１０２内の任意のＤＰＥに達し得る。たとえば、目標ＤＰＥを含むタイルによって管理されるＤＰＥの列（またはサブセット）の下のＳｏＣインターフェースブロック１０４のタイル内のイベントブロードキャスト回路は、イベントを目標ＤＰＥに伝搬することができる。
【０２１１】
図１４Ａの例では、イベントブロードキャスト回路１４０４およびイベントロジック１４３２は、ＣＤＴ回路１４２０に結合される。イベントブロードキャスト回路１４０４およびイベントロジック１４３２は、ＣＤＴ回路１４２０にイベントを送信することができる。ＣＤＴ回路１４２０は、受信したイベントをパケット化し、イベントブロードキャスト回路１４０４および／またはイベントロジック１４３２からストリームスイッチ１４０６にイベントを送信することができる。特定の実施形態では、イベントブロードキャスト回路１４３０は、ストリームスイッチ１４０６および／またはＣＤＴ回路１４２０にも接続され得る。
【０２１２】
１つまたは複数の実施形態では、イベントブロードキャスト回路１４０４およびイベントブロードキャスト回路１４３０は、図１４Ａに示されるように（たとえば、図１４Ａに示される接続のいずれかを介して）、１つもしくは複数またはすべての方向からブロードキャストイベントを収集することができる。特定の実施形態では、イベントブロードキャスト回路１４０４および／またはイベントブロードキャスト回路１４３０は、信号の論理「ＯＲ」を実行し、結果を１つもしくは複数またはすべての方向（たとえば、ＣＤＴ回路１４２０を含む）に転送することができる。イベントブロードキャスト回路１４０４およびイベントブロードキャスト回路１４３０からの各出力は、構成レジスタ１４３６にロードされた構成データによって構成可能なビットマスクを含み得る。ビットマスクは、どのイベントが各方向にブロードキャストされるかを個々に基づいて判定する。そのようなビットマスクは、たとえば、イベントの望ましくない伝搬または複製伝搬を排除し得る。
【０２１３】
割り込みハンドラ１４３４は、イベントブロードキャスト回路１４０４に結合され、イベントブロードキャスト回路１４０４からブロードキャストされるイベントを受信することができる。１つまたは複数の実施形態では、割り込みハンドラ１４３４は、選択されたイベントおよび／またはイベントブロードキャスト回路１４０４からのイベント（たとえば、ＤＰＥ生成イベント、タイル１３０４内で生成されたイベント、および／またはＰＬ３１０生成イベント）の組み合わせに応答して割り込みを生成するよう、構成レジスタ１４３６にロードされた構成データによって構成され得る。割込みハンドラ１４３４は、構成データに基づいて、ＰＳ３１２および／またはデバイス１００内の他のデバイスレベル管理ブロックへの割込みを生成することができる。したがって、割込みハンドラ１４３４は、割込みハンドラ１４３４によって生成される割込みに基づいて、ＤＰＥアレイ１０２において発生するイベント、ＳｏＣインターフェースブロック１０４のタイルにおいて発生するイベント、および／またはＰＬ３１０において発生するイベントを、ＰＳ３１２および／またはそのような他のデバイスレベル管理ブロックに通知することができる。
【０２１４】
特定の実施形態では、割込みハンドラ１４３４は、直接接続によってＰＳ３１２および／または他のデバイスレベル管理ブロックの割込みハンドラもしくは割込みポートに結合され得る。１つまたは複数の他の実施形態では、割り込みハンドラ１４３４は、別のインターフェースによってＰＳ３１２および／または他のデバイスレベル管理ブロックに結合され得る。
【０２１５】
ＰＬインターフェース１４１０は、デバイス１００のＰＬ３１０に結合し、それに対するインターフェースを提供する。１つまたは複数の実施形態では、ＰＬインターフェース１４１０は、ＤＰＥアレイクロックとＰＬクロックとの間を交差する非同期クロックドメインを提供する。ＰＬインターフェース１４１０はまた、ＰＬ電力レールとの統合のためにレベルシフタおよび／または分離セルを提供してもよい。特定の実施形態では、ＰＬインターフェース１４１０は、３２ビット、６４ビットおよび／または１２８ビットインターフェースにＦＩＦＯサポートを与えてバックプレッシャーを処理するように構成されてもよい。ＰＬインターフェース１４１０の特定の幅は、構成レジスタ１４３６にロードされる構成データによって制御され得る。図１４Ａの例では、ＰＬインターフェース１４１０は、１つまたは複数のＰＬ相互接続ブロック１４２２に直接結合する。特定の実施形態では、ＰＬ相互接続ブロック１４２２は、ＰＬ３１０に位置する相互接続回路に結合するハードワイヤード回路ブロックとして実現される。
【０２１６】
１つまたは複数の他の実施形態では、ＰＬインターフェース１４１０は、他のタイプの回路ブロックおよび／またはサブシステムに結合される。たとえば、ＰＬインターフェース１４１０は、ＡＳＩＣ、アナログ／混合信号回路、および／または他のサブシステムに結合され得る。したがって、ＰＬインターフェース１４１０は、タイル１３０４とそのような他のサブシステムおよび／またはブロックとの間でデータを転送することが可能である。
【０２１７】
図１４Ａの例では、タイル１３０４はストリームスイッチ１４０６を含む。ストリームスイッチ１４０６は、１つまたは複数のストリームインターフェースを介して、近接するまたは近傍のタイル１３０２内のストリームスイッチおよび近接するまたは近傍のタイル１３０６内のストリームスイッチに結合される。各ストリームインターフェースは、１つもしくは複数のマスタおよび／または１つもしくは複数のスレーブを含むことができる。特定の実施形態では、近傍のストリームスイッチの各対は、各方向において１つまたは複数のストリームを介してデータを交換することができる。ストリームスイッチ１４０６はまた、１つまたは複数のストリームインターフェースによって、列Ｂにおけるタイル１３０４の真上のＤＰＥ、すなわちＤＰＥ３０４−２内のストリームスイッチに結合される。論じられるように、ストリームインターフェースは、１つもしくは複数のストリームスレーブおよび／またはストリームマスタを含むことができる。ストリームスイッチ１４０６はまた、ストリームマルチプレクサ／デマルチプレクサ１４０８（図１４Ａではストリームｍｕｘ／ｄｅｍｕｘと略称される）を介してＰＬインターフェース１４１０、ＤＭＡエンジン１４１２、および／またはＮｏＣストリームインターフェース１４１４に結合される。ストリームスイッチ１４０６は、たとえば、ストリームマルチプレクサ／デマルチプレクサ１４０８を介してＰＬインターフェース１４１０、ＤＭＡエンジン１４１２、および／またはＮｏＣストリームインターフェース１４１４の各々と通信するために使用される１つまたは複数のストリームインターフェースを含むことができる。
【０２１８】
１つまたは複数の他の実施形態では、ストリームスイッチ１４０６は、含まれるストリームインターフェースの数ならびに／またはタイルおよび／もしくはＤＰＥおよび／もしくはタイル１３０４の周りの他の回路ブロックの配置に応じて、他の方向および／または対角方向において他の回路ブロックに結合され得る。
【０２１９】
１つまたは複数の実施形態では、ストリームスイッチ１４０６は、構成レジスタ１４３６にロードされる構成データによって構成可能である。ストリームスイッチ１４０６は、たとえば、構成データに基づいてパケット交換動作および／または回路交換動作をサポートするように構成され得る。さらに、構成データは、ストリームスイッチ１４０６が通信するＤＰＥアレイ１０２内の特定のＤＰＥおよび／または複数のＤＰＥを規定する。１つまたは複数の実施形態では、構成データは、ストリームスイッチ１４０６が通信するＤＰＥアレイ１０２の特定のＤＰＥおよび／またはＤＰＥのサブセット（たとえば列Ｂ内のＤＰＥ）を規定する。
【０２２０】
ストリームマルチプレクサ／デマルチプレクサ１４０８は、ＰＬインターフェース１４１０、ＤＭＡエンジン１４１２、および／またはＮｏＣストリームインターフェース１４１４から受信されたデータをストリームスイッチ１４０６に方向付けることができる。同様に、ストリームマルチプレクサ／デマルチプレクサ１４０８は、ストリームスイッチ１４０６から受信されたデータをＰＬインターフェース１４１０、ＤＭＡエンジン１４１２、および／またはＮｏＣストリームインターフェース１４１４に方向付けることができる。たとえば、ストリームマルチプレクサ／デマルチプレクサ１４０８は、構成レジスタ１４３６に格納された構成データによってプログラムされることにより、選択されたデータをＤＭＡエンジン１４１２にルーティングし、そこでそのようなデータはメモリマッピングされたトランザクションとしてＮｏＣ３０８を介して送信され、および／または選択されたデータをＮｏＣストリームインターフェース１４１４にルーティングし、そこでデータは１つまたは複数のデータストリームとしてＮｏＣ３０８を介して送信されてもよい。
【０２２１】
ＤＭＡエンジン１４１２は、データをセレクタブロック１４１６を通じてＮｏＣインターフェース１４２６に、ＮｏＣ３０８へと向けるためのマスタとして動作することができる。ＤＭＡエンジン１４１２は、ＤＰＥからデータを受信し、そのようなデータをメモリマッピングされたデータトランザクションとしてＮｏＣ３０８に与えることができる。１つまたは複数の実施形態では、ＤＭＡエンジン１４１２は、ＤＭＡエンジン１４１２に含まれる複数のチャネルおよび／またはＤＭＡエンジン１４１２内のあるチャネルを、ロック要求をポーリングおよび駆動するマスタと同期させるために使用され得るハードウェア同期化回路を含む。たとえば、マスタは、ＰＳ３１２またはＰＬ３１０内に実現されるデバイスであり得る。マスタはまた、ＤＭＡエンジン１４１２内のハードウェア同期化回路によって生成される割り込みを受信することもできる。
【０２２２】
１つまたは複数の実施形態では、ＤＭＡエンジン１４１２は、外部メモリにアクセスすることができる。たとえば、ＤＭＡエンジン１４１２は、ＤＰＥからデータストリームを受信し、外部メモリへのデータストリームを、ＮｏＣ３０８を介して、ＳｏＣ内に位置するメモリコントローラに送信することができる。次いで、メモリコントローラは、データストリームとして受信されたデータを外部メモリに方向付ける（たとえば、ＤＭＡエンジン１４１２によって要求されるように、外部メモリの読み出しおよび／または書き込みを開始する）。同様に、ＤＭＡエンジン１４１２は、外部メモリからデータを受信することが可能であり、そのデータは、ＳｏＣインターフェースブロック１０４の他のタイルに、および／または目標ＤＰＥにまで分配されてもよい。
【０２２３】
特定の実施形態では、ＤＭＡエンジン１４１２は、ＤＰＥグローバル制御設定レジスタ（ＤＰＥ  ＧＣＳレジスタ）１４３８を使用して設定され得るセキュリティビットを含む。外部メモリは異なる領域またはパーティションに分割され得、ＤＰＥアレイ１０２は外部メモリの特定の領域のみにアクセスすることを許可される。ＤＭＡエンジン１４１２内のセキュリティビットは、ＤＰＥアレイ１０２が、ＤＭＡエンジン１４１２を介して、セキュリティビットに従って許可される外部メモリの特定の領域のみにアクセスできるように設定されてもよい。たとえば、ＤＰＥアレイ１０２によって実現されるアプリケーションは、この機構を使用して、外部メモリの特定の領域のみにアクセスするように制限され、外部メモリの特定の領域からの読み出しのみに制限され、および／またはこの外部メモリ全体への書き込みから制限され得る。
【０２２４】
外部メモリへのアクセスを制御するＤＭＡエンジン１４１２内のセキュリティビットは、ＤＰＥアレイ１０２を全体的に制御するように実現されてもよく、またはより粒度の高い方法で実現されてもよく、外部メモリへのアクセスは、ＤＰＥごとに、たとえばコアごとに、または協調して動作する、たとえばカーネルおよび／もしくは他のアプリケーションを実現するように構成されるコアのグループについて、指定ならびに／または制御されてもよい。
【０２２５】
ＮｏＣストリームインターフェース１４１４は、ＮｏＣインターフェース１４２６を介してＮｏＣ３０８からデータを受信し、データをストリームとしてマルチプレクサ／デマルチプレクサ１４０８に転送することができる。ＮｏＣストリームインターフェース１４１４はさらに、ストリームマルチプレクサ／デマルチプレクサ１４０８からデータを受信し、セレクタブロック１４１６を介してＮｏＣインターフェース１４２６にデータを転送することが可能である。セレクタブロック１４１６は、ＤＭＡエンジン１４１２またはＮｏＣストリームインターフェース１４１４からＮｏＣインターフェース１４２６にデータを渡すように構成可能である。
【０２２６】
ＣＤＴ回路１４２０は、タイル１３０４内で制御、デバッグ、およびトレース動作を実行することができる。デバッグに関して、タイル１３０４に位置するレジスタの各々は、メモリマッピングされたスイッチ１４０２を介してアクセス可能なメモリマップ上にマッピングされる。ＣＤＴ回路１４２０は、たとえば、トレースハードウェア、トレースバッファ、性能カウンタ、および／またはストールロジックなどの回路を含み得る。ＣＤＴ回路１４２０のトレースハードウェアは、トレースデータを収集することができる。ＣＤＴ回路１４２０のトレースバッファは、トレースデータをバッファリングすることができる。さらに、ＣＤＴ回路１４２０は、トレースデータをストリームスイッチ１４０６に出力することができる。
【０２２７】
１つまたは複数の実施形態では、ＣＤＴ回路１４２０は、データ、たとえば、トレースおよび／またはデバッグデータを収集し、そのようなデータをパケット化し、次いで、パケット化されたデータをストリームスイッチ１４０６を通して出力することが可能である。たとえば、ＣＤＴ回路１４２０は、パケット化されたデータを出力し、そのようなデータをストリームスイッチ１４０６に提供することができる。加えて、構成レジスタ１４３６またはその他は、デバッグ中に、それぞれのタイルのメモリマッピングされたスイッチ１４０２を通じて、メモリマッピングされたトランザクションを介して、読み出しまたは書き込みすることができる。同様に、ＣＤＴ回路１４２０内のパフォーマンスカウンタは、プロファイリング中に、それぞれのタイルのメモリマッピングされたスイッチ１４０２を通じて、メモリマッピングされたトランザクションを介して、読み出しまたは書き込むことができる。
【０２２８】
１つまたは複数の実施形態では、ＣＤＴ回路１４２０は、イベントブロードキャスト回路１４０４（もしくはイベントブロードキャスト回路１４３０）によって伝搬される任意のイベント、またはＣＤＴ回路１４２０に結合されるイベントブロードキャスト回路１４０４のインターフェースによって利用されるビットマスクに従って選択されたイベントを受信することができる。ＣＤＴ回路１４２０は、さらに、イベントロジック１４３２によって生成されたイベントを受信することができる。たとえば、ＣＤＴ回路１４２０は、ＰＬ３１０からであれ、ＤＰＥ３０４からであれ、タイル１３０４（たとえば、イベントロジック１４３２および／もしくはイベントブロードキャストスイッチ１４０４）からであれ、ならびに／またはＳｏＣインターフェースブロック１０４の他のタイルからであれ、ブロードキャストイベントを受信することができる。ＣＤＴ回路１４２０は、複数のそのようなイベントをパケット内に一緒にパッキング、たとえばパケット化し、パケット化されたイベントをタイムスタンプと関連付けることができる。ＣＤＴ回路１４２０はさらに、パケット化されたイベントをストリームスイッチ１４０６を介してタイル１３０４の外部の宛先に送信することができる。イベントは、ストリームスイッチ１４０６およびストリームマルチプレクサ／デマルチプレクサ１４０８により、ＰＬインターフェース１４１０、ＤＭＡエンジン１４１２、および／またはＮｏＣストリームインターフェース１４１４を介して送信され得る。
【０２２９】
ＤＰＥ  ＧＣＳレジスタ１４３８は、ＤＰＥアレイ１０２へのおよび／またはＤＰＥアレイ１０２からのセキュアアクセスを有効または無効にするために使用されるＤＰＥグローバル制御設定／ビット（本明細書では「セキュリティビット」とも称される）を格納し得る。ＤＰＥ  ＧＣＳレジスタ１４３８は、図１４Ｃに関連して以下でより詳細に記載されるように、ＳｏＣセキュア／初期化インターフェースを介してプログラムされ得る。ＳｏＣセキュア／初期化インターフェースから受信されたセキュリティビットは、図１４Ａに示されるように、バスを介してＳｏＣインターフェースブロック１０４の１つのタイルから次のタイルに伝搬してもよい。
【０２３０】
１つまたは複数の実施形態では、（たとえば、ＮｏＣ３０８を使用する）ＤＰＥアレイ１０２への外部メモリマッピングされたデータ転送は、安全でなく信頼できない。ＤＰＥ  ＧＣＳレジスタ１４３８内にセキュリティビットを設定しなければ、（たとえばＮｏＣ３０８を介して）メモリマッピングされたデータ転送によって通信することができるデバイス１００内の任意のエンティティが、ＤＰＥアレイ１０２と通信することができる。ＤＰＥ  ＧＣＳレジスタ１４３８内にセキュリティビットを設定することによって、ＤＰＥアレイ１０２と通信することが許可される特定のエンティティは、安全なトラフィックを生成できる指定されたエンティティのみがＤＰＥアレイ１０２と通信することができるように定義され得る。
【０２３１】
たとえば、メモリマッピングされたスイッチ１４０２のメモリマッピングされたインターフェースは、ＮｏＣ３０８と通信することができる。メモリマッピングされたデータ転送は、トランザクションが安全であるか安全でないかを指定する追加のサイドバンド信号、たとえば、ビットを含み得る。ＤＰＥ  ＧＣＳレジスタ１４３８内のセキュリティビットが設定されると、ＳｏＣインターフェースブロック１０４に進入するメモリマッピングされたトランザクションは、ＮｏＣ３０８からＳｏＣインターフェースブロック１０４に到着するメモリマッピングされたトランザクションが安全であることを示すようにサイドバンド信号が設定されなければならない。ＳｏＣインターフェースブロック１０４に到着するメモリマッピングされたトランザクションが、サイドバンドビットが設定されておらず、セキュリティビットがＤＰＥ  ＧＣＳレジスタ１４３８内に設定されている場合、ＳｏＣインターフェースブロック１０４は、トランザクションがＤＰＥ３０４に進入または通過することを許可しない。
【０２３２】
１つまたは複数の実施形態では、ＳｏＣは、信頼のルートとして動作するセキュアエージェント（たとえば、回路）を含む。セキュアエージェントは、ＤＰＥ  ＧＣＳレジスタ１４３８のセキュリティビットが設定されると、ＤＰＥアレイ１０２にアクセスするためにメモリマッピングされたトランザクション内にサイドバンドビットを設定するために必要な許可で、ＳｏＣ内に異なるエンティティ（たとえば回路）を構成することが可能である。ＳｏＣが構成された時点で、セキュアエージェントは、ＰＬ３１０またはＰＳ３１２で実現され得る異なるマスタに許可を与え、それによって、そのようなマスタに、ＮｏＣ３０８を介してＤＰＥアレイ１０２にセキュアトランザクションを発行する（または発行しない）能力を与える。
【０２３３】
図１４Ｂは、タイル１３０４の別の例示的な実現例を示す。図１４Ｂに示される例示的なアーキテクチャは、ＳｏＣインターフェースブロック１０４に含まれる他のタイルのいずれかを実現するためにも使用され得る。図１４Ｂの例は、図１４Ａに示されるアーキテクチャの簡略化されたバージョンを示す。図１４Ｂのタイルアーキテクチャは、デバイス１００内のＤＰＥならびに他のサブシステムおよび／またはブロック間の接続性を与える。たとえば、図１４Ｂのタイル１３０４は、ＤＰＥおよびＰＬ３１０、アナログ／混合信号回路ブロック、ＡＳＩＣ、または本明細書で説明する他のサブシステムの間のインターフェースを提供してもよい。図１４Ｂのタイルアーキテクチャは、ＮｏＣ３０８への接続性を提供しない。したがって、ＤＭＡエンジン１４１２、ＮｏＣインターフェース１４１４、セレクタブロック１４１６、ブリッジ１４１８、およびストリームマルチプレクサ／デマルチプレクサ１４０８は省略される。したがって、図１４Ｂのタイル１３０４は、ＳｏＣのより少ない面積を使用して実現され得る。さらに、図示されるように、ストリームスイッチ１４０６は、ＰＬインターフェース１４１０に直接結合される。
【０２３４】
図１４Ｂの例示的なアーキテクチャは、ＮｏＣ３０８からＤＰＥを構成する目的で、メモリマッピングされたデータ、たとえば、構成データを受信することができない。そのような構成データは、近傍のタイルからメモリマッピングされたスイッチ１４０２を介して受信され、タイル１３０４が管理するＤＰＥのサブセットに（たとえば、図１４Ｂのタイル１３０４の上のＤＰＥの列に入るまで）向けられ得る。
【０２３５】
図１４Ｃは、タイル１３０４の別の例示的な実現例を示す。特定の実施形態では、図１４Ｃに示されるアーキテクチャは、ＳｏＣインターフェースブロック１０４内にただ１つのタイルを実現するために使用され得る。たとえば、図１４Ｃに示されるアーキテクチャは、ＳｏＣインターフェースブロック１０４内にタイル１３０２を実現するために使用され得る。図１４Ｃに示すアーキテクチャは、図１４Ｂに示すアーキテクチャと同様である。図１４Ｃでは、ＳｏＣセキュア／初期化インターフェース１４４０、クロック信号生成器１４４２、およびグローバルタイマ１４４４などの追加のコンポーネントが含まれる。
【０２３６】
図１４Ｃの例では、ＳｏＣセキュア／初期化インターフェース１４４０は、ＳｏＣインターフェースブロック１０４のためのさらなるインターフェースを提供する。１つまたは複数の実施形態では、ＳｏＣセキュア／初期化インターフェース１４４０は、ＮｏＣ周辺相互接続として実現される。ＳｏＣセキュア／初期化インターフェース１４４０は、ＤＰＥアレイ１０２（図示せず）用のグローバルリセットレジスタおよびＤＰＥ  ＧＣＳレジスタ１４３８へのアクセスを提供することができる。特定の実施形態では、ＤＰＥ  ＧＣＳレジスタ１４３８は、クロック信号生成器１４４２のための構成レジスタを含む。図示されているように、ＳｏＣセキュア／初期化インターフェース１４４０は、セキュリティビットをＤＰＥ  ＧＣＳレジスタ１４３８に与え、セキュリティビットをＳｏＣインターフェースブロック１０４の他のタイル内の他のＤＰＥ  ＧＣＳレジスタ１４３８に伝搬することができる。特定の実施形態では、ＳｏＣセキュア／初期化インターフェース１４４０は、ＳｏＣインターフェースブロック１０４のための単一のスレーブエンドポイントを実現する。
【０２３７】
図１４Ｃの例では、クロック信号生成器１４４２は、１つもしくは複数のクロック信号１４４６および／または１つもしくは複数のリセット信号１４５０を生成することが可能である。クロック信号１４４６および／またはリセット信号１４５０は、ＤＰＥ３０４の各々および／またはＤＰＥアレイ１０２のＳｏＣインターフェースブロック１０４の他のタイルに分配され得る。１つまたは複数の実施形態では、クロック信号生成器１４４２は、１つまたは複数の位相ロックループ回路（ＰＬＬ）を含み得る。図示のように、クロック信号生成器１４４２は、ＤＰＥアレイ１０２の外部にありＳｏＣ上に位置する別の回路によって生成された基準クロック信号を受信することができる。クロック信号生成器１４４２は、受信された基準クロック信号に基づいてクロック信号１４４６を生成することができる。
【０２３８】
図１４Ｃの例では、クロック信号生成器１４４２は、ＳｏＣセキュア／初期化インターフェース１４４０を介して構成される。たとえば、クロック信号生成器１４４２は、ＤＰＥ  ＧＣＳレジスタ１４３８にデータをロードすることによって構成され得る。したがって、ＤＰＥアレイ１０２の１つまたは複数のクロック周波数およびリセット信号１４５０の生成は、ＳｏＣセキュア／初期化インターフェース１４４０を介してＤＰＥ  ＧＣＳレジスタ１４３８に適切な構成データを書き込むことによって設定され得る。試験目的のために、クロック信号１４４６および／またはリセット信号１４５０は、ＰＬ３１０にも直接ルーティングされ得る。
【０２３９】
ＳｏＣセキュア／初期化インターフェース１４４０は、ＳｏＣ制御／デバッグ（回路）ブロック（たとえば、図示されないデバイス１００の制御および／またはデバッグサブシステム）に結合され得る。１つまたは複数の実施形態では、ＳＯＣセキュア／初期化インターフェース１４４０は、ＳＯＣ制御／デバッグブロックにステータス信号を提供することができる。例示的かつ非限定的な例として、ＳｏＣセキュア／初期化インターフェース１４４０は、クロック信号生成器１４４０の内部から生成された「ＰＬＬロック」信号をＳｏＣ制御／デバッグブロックに与えることができる。ＰＬＬロック信号は、ＰＬＬが基準クロック信号上でいつロックを獲得するかを示すことができる。
【０２４０】
ＳｏＣセキュア／初期化インターフェース１４４０は、インターフェース１４４８を介して命令および／またはデータを受信することができる。データは、本明細書で記載されるセキュリティビット、クロック信号生成器構成データ、および／またはＤＰＥ  ＧＣＳレジスタ１４３８に書き込まれ得る他のデータを含み得る。
【０２４１】
グローバルタイマ１４４４は、ＣＤＴ回路１４２０にインターフェースすることが可能である。たとえば、グローバルタイマ１４４４は、ＣＤＴ回路１４２０に結合され得る。グローバルタイマ１４４４は、追跡に使用されるイベントにタイムスタンプを付与するためにＣＤＴ回路１４２０によって使用される信号を与えることが可能である。１つまたは複数の実施形態では、グローバルタイマ１４４４は、ＳｏＣインターフェース回路１０４のタイルのうちの他のタイル内のＣＤＴ回路１４２０に結合され得る。たとえば、グローバルタイマ１４４４は、図１４Ａ、図１４Ｂ、および／または図１４Ｃの例示的なタイル内のＣＤＴ回路１４２０に結合され得る。グローバルタイマ１４４４はまた、ＳｏＣ制御／デバッグブロックにも結合され得る。
【０２４２】
図１４Ａ、図１４Ｂ、および図１４Ｃのアーキテクチャをまとめて参照すると、タイル１３０４は、さまざまな異なるデータ経路を使用してＤＰＥ３０４と通信することができる。一例では、タイル１３０４は、ＤＭＡエンジン１４１２を使用してＤＰＥ３０４と通信することができる。たとえば、タイル１３０４は、ＤＭＡエンジン１４１２を使用して、ＤＰＥアレイ１０２の１つまたは複数のＤＰＥのＤＭＡエンジン（たとえば、ＤＭＡエンジン８１６）に通信することができる。通信は、ＤＰＥからＳｏＣインターフェースブロック１０４のタイルへ、またはＳｏＣインターフェースブロック１０４のタイルからＤＰＥへ流れ得る。別の例では、ＤＭＡエンジン１４１２は、ＤＰＥアレイ１０２の１つまたは複数のＤＰＥのコアと、それぞれのＤＰＥ内のストリームスイッチを介して、通信することができる。通信は、コアからＳｏＣインターフェースブロック１０４のタイルへ、および／またはＳｏＣインターフェースブロック１０４のタイルからＤＰＥアレイ１０２の１つまたは複数のＤＰＥのコアへ流れ得る。
【０２４３】
図１５は、ＰＬインターフェース１４１０の例示的な実現例を示す。図１５の例では、ＰＬインターフェース１４１０は、使用される特定のタイルアーキテクチャに応じて、ＰＬ３１０をストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８に結合する複数のチャネルを含む。図１５においてＰＬインターフェース１４１０内に示される特定の数のチャネルは、限定ではなく例示のためのものである。他の実施形態では、ＰＬインターフェース１４１０は、図１５に示されるよりも少ないまたは多いチャネルを含むことができる。さらに、ＰＬインターフェース１４１０はＰＬ３１０に接続するものとして示されているが、１つまたは複数の他の実施形態では、ＰＬインターフェース１４１０は、１つまたは複数の他のサブシステムおよび／または回路ブロックに結合することができる。たとえば、ＰＬインターフェース１４１０は、ＡＳＩＣ、アナログ／混合信号回路、および／または他の回路もしくはサブシステムにも結合することができる。
【０２４４】
１つまたは複数の実施形態では、ＰＬ３１０は、ＤＰＥ３０４とは異なる基準電圧および異なるクロック速度で動作する。したがって、図１５の例では、ＰＬインターフェース１４１０は、複数のシフトおよび分離回路１５０２と、複数の非同期ＦＩＦＯメモリ１５０４とを含む。各チャネルは、シフト分離回路１５０２および非同期ＦＩＦＯメモリ１５０４を含む。チャネルの第１のサブセットは、ＰＬ３１０（および／または他の回路）からストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８にデータを伝える。チャネルの第２のサブセットは、ストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８からＰＬ３１０および／または他の回路にデータを伝える。
【０２４５】
シフトおよび分離回路１５０２は、異なる電圧領域間のインターフェースをとることができる。この場合、シフトおよび分離回路１５０２は、ＰＬ３１０および／または他の回路の動作電圧とＤＰＥ３０４の動作電圧との間で遷移するインターフェースを提供することができる。非同期ＦＩＦＯメモリ１５０４は、２つの異なるクロックドメイン間でインターフェースをとることが可能である。この場合、非同期ＦＩＦＯメモリ１５０４は、ＰＬ３１０および／または他の回路のクロックレートとＤＰＥ３０４のクロックレートとの間で遷移するインターフェースを提供することができる。
【０２４６】
１つまたは複数の実施形態では、非同期ＦＩＦＯメモリ１５０４は、ＤＰＥアレイ１０２に対する３２ビットインターフェースを有する。非同期ＦＩＦＯメモリ１５０４とシフトおよび分離回路１５０２との間の接続、ならびにシフトおよび分離回路１５０２とＰＬ３１０との間の接続は、幅においてプログラム可能（たとえば、構成可能）であり得る。たとえば、非同期ＦＩＦＯメモリ１５０４とシフトおよび分離回路１５０２との間の接続、ならびにシフトおよび分離回路１５０２とＰＬ３１０との間の接続は、幅が３２ビット、６４ビット、または１２８ビットであるように構成され得る。論じられるように、ＰＬインターフェース１４１０は、記載されるビット幅を達成するためにメモリマッピングされたスイッチ１４０２によって構成レジスタ１４３６に構成データを書き込むことにより構成可能である。メモリマッピングされたスイッチ１４０２を使用して、ＰＬ３１０側の非同期ＦＩＦＯメモリ１５０４側は、３２ビット、６４ビット、または１２８ビットのいずれかを使用するように構成可能であり得る。本明細書において提供されるビット幅は、例示のためのものである。他の実施形態では、他のビット幅が使用されてもよい。いずれにせよ、さまざまなコンポーネントについて記載される幅は、構成レジスタ１４３６にロードされる構成データに基づいて変えることができる。
【０２４７】
図１６は、ＮｏＣストリームインターフェース１４１４の例示的な実現例を示す。ＤＰＥアレイ１０２は、ＤＰＥ内のストリームインターフェースを使用してＮｏＣ３０８を介して通信する２つの一般的な方法を有する。一態様では、ＤＰＥは、ストリームスイッチ１４０６を使用してＤＭＡエンジン１４１２にアクセスすることができる。ＤＭＡエンジン１４１２は、ＮｏＣ３０８からのメモリマッピングされたトランザクションを、ＤＰＥに送信するためのデータストリームに変換し、ＤＰＥからのデータストリームを、ＮｏＣ３０８を介して送信するためのメモリマッピングされたトランザクションに変換することができる。別の態様では、データストリームはＮｏＣストリームインターフェース１４１４に向けられ得る。
【０２４８】
図１６の例では、ＮｏＣストリームインターフェース１４１４は、ＮｏＣ３０８をストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサに結合する複数のチャネルを含む。各チャネルは、ＦＩＦＯメモリと、アップサイズ回路またはダウンサイズ回路のいずれかとを含み得る。チャネルの第１のサブセットは、ＮｏＣ３０８からストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８にデータを伝える。チャネルの第２のサブセットは、ストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８からＮｏＣ３０８にデータを伝える。図１６に示されるＮｏＣストリームインターフェース１４１４内の特定の数のチャネルは、限定ではなく例示を目的としている。他の実施形態では、ＮｏＣストリームインターフェース１４１４は、図１６に示されるよりも少ないまたは多いチャネルを含み得る。
【０２４９】
１つまたは複数の実施形態では、アップサイズ回路１６０８（図１６では「ＵＳ回路」と略称される）の各々は、データストリームを受信し、受信されたデータストリームの幅を増大することができる。たとえば、各アップサイズ回路１６０８は、３２ビットデータストリームを受信し、対応するＦＩＦＯメモリ１６１０に１２８ビットデータストリームを出力し得る。ＦＩＦＯメモリ１６１０の各々は、調停およびマルチプレクサ回路１６１２に結合される。調停およびマルチプレクサ回路１６１２は、結果として得られた出力データストリームをＮｏＣインターフェース１４２６に提供するための特定の調停スキームまたは優先度（たとえば、ラウンドロビンもしくは他のスタイル）を使用して、受信されたデータストリーム間で調停することができる。調停およびマルチプレクサ回路１６１２は、クロックサイクルごとに新たな要求を処理および受け入れることができる。ＤＰＥ３０４とＮｏＣ３０８との間のクロックドメイン交差は、ＮｏＣ３０８自体内で処理され得る。１つまたは複数の他の実施形態では、ＤＰＥ３０４とＮｏＣ３０８との間のクロックドメイン交差は、ＳｏＣインターフェースブロック１０４内で処理され得る。たとえば、クロックドメイン交差は、ＮｏＣストリームインターフェース１４１４内で処理され得る。
【０２５０】
デマルチプレクサ１６０２は、ＮｏＣ３０８からデータストリームを受信することができる。たとえば、デマルチプレクサ１６０２は、ＮｏＣインターフェース１４２６に結合され得る。説明のため、ＮｏＣインターフェース１４２６からのデータストリームは、幅が１２８ビットであり得る。ＤＰＥ３０４とＮｏＣ３０８との間のクロックドメイン交差は、前述したようにＮｏＣ３０８内および／またはＮｏＣストリームインターフェース１４１４内で処理することができる。デマルチプレクサ１６０２は、受信されたデータストリームをＦＩＦＯメモリ１６０４のうちの１つに転送することができる。デマルチプレクサ１６０２がデータストリームを提供する特定のＦＩＦＯメモリ１６０４は、データストリーム自体内において符号化され得る。ＦＩＦＯメモリ１６０４は、ダウンサイズ回路１６０６（図１６では「ＤＳ回路」と略称する）に接続される。ダウンサイズ回路１６０６は、時分割多重化を使用してバッファリングした後、受信ストリームをより狭い幅にダウンサイズすることができる。たとえば、ダウンサイズ回路１６０６は、幅１２８ビットから幅３２ビットにストリームをダウンサイズすることができる。
【０２５１】
示されるように、ダウンサイズ回路１６０６およびアップサイズ回路１６０８は、使用されるＳｏＣインターフェースブロック１０４のタイルの特定のアーキテクチャに応じて、ストリームスイッチ１４０６またはストリームマルチプレクサ／デマルチプレクサ１４０８に結合される。図１６は、例示の目的のために提供され、限定として意図されない。チャネル内のコンポーネント（たとえば、アップサイズ／ダウンサイズ回路およびＦＩＦＯメモリ）の順序および／または接続性は様々であり得る。
【０２５２】
１つまたは複数の他の実施形態では、図１５に関連して記載されるＰＬインターフェース１４１０は、図１６に関連して記載されるようにアップサイズ回路および／またはダウンサイズ回路を含み得る。たとえば、ダウンサイズ回路は、ＰＬ３１０（または他の回路）からストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８にデータを伝達する各チャネルに含まれ得る。アップサイズ回路は、ストリームスイッチ１４０６および／またはストリームマルチプレクサ／デマルチプレクサ１４０８からＰＬ３１０（または他の回路）にデータを伝達する各チャネルに含まれ得る。
【０２５３】
１つまたは複数の他の実施形態では、独立した要素として示されているが、各ダウンサイズ回路１６０６は、対応するＦＩＦＯメモリ１６０４と、たとえば単一のブロックまたは回路として組み合わせられてもよい。同様に、各アップサイズ回路１６０８は、対応するＦＩＦＯメモリ１６１０と、たとえば、単一のブロックまたは回路として組み合わせられてもよい。
【０２５４】
図１７は、ＤＭＡエンジン１４１２の例示的な実現例を示す。図１７の例では、ＤＭＡエンジン１４１２はＤＭＡコントローラ１７０２を含む。ＤＭＡコントローラ１７０２は、２つの別個のモジュールまたはインターフェースに分割され得る。各モジュールは、互いに独立して動作することができる。ＤＭＡコントローラ１７０２は、メモリマッピングからストリームへのインターフェース（インターフェース）１７０４と、ストリームからメモリマッピングへのインターフェース（インターフェース）１７０６とを含み得る。インターフェース１７０４およびインターフェース１７０６の各々は、２つ以上の別個のチャネルを含み得る。したがって、ＤＭＡエンジン１４１２は、ストリームスイッチ１４０６からインターフェース１７０６を介して２つ以上の入力ストリームを受信し、インターフェース１７０４を介してストリームスイッチ１４０６に２つ以上の出力ストリームを送信することができる。ＤＭＡコントローラ１７０２は、さらに、マスタのメモリマッピングされたインターフェース１７１４を含むことができる。マスタのメモリマッピングされたインターフェース１７１４は、ＮｏＣ３０８をインターフェース１７０４およびインターフェース１７０６に結合する。
【０２５５】
ＤＭＡエンジン１４１２はまた、ハードウェア同期化回路１７１０およびバッファ記述子レジスタファイル１７０８も含み得る。ハードウェア同期化回路１７１０およびバッファ記述子レジスタファイル１７０８は、マルチプレクサ１７１２を介してアクセスされ得る。したがって、ハードウェア同期化回路１７１０およびバッファ記述子レジスタファイル１７０８の両方は、外部から制御インターフェースを介してアクセスされ得る。そのような制御インターフェースの例は、メモリマッピングされたインターフェースまたはＤＰＥからの制御ストリームインターフェースを含むが、これらに限定されない。ＤＰＥの制御ストリームインターフェースの一例は、ＤＰＥのコアから出力されるストリーミングインターフェースである。
【０２５６】
ハードウェア同期化回路１７１０は、ＤＭＡエンジン１４１２に含まれる複数のチャネルおよび／またはＤＭＡエンジン１４１２内のあるチャネルを、ロック要求をポーリングおよび駆動するマスタと同期させるために、使用され得る。たとえば、マスタは、ＰＳ３１２またはＰＬ３１０内に実現されるデバイスであり得る。別の例では、マスタはまた、ロックが利用可能であるとき、ＤＭＡエンジン１４１２内のハードウェア同期化回路１７１０によって生成された割込みを受信することもできる。
【０２５７】
ＤＭＡ転送は、バッファ記述子レジスタファイル１７０８内に格納されたバッファ記述子によって定義され得る。インターフェース１７０６は、バッファ記述子内の情報に基づいてＮｏＣ３０８への読み出し転送を要求することができる。インターフェース１７０４からストリームスイッチ１４０６への送出ストリームは、ストリームスイッチ用の構成レジスタに基づいて、パケット交換または回路交換として構成することができる。
【０２５８】
図１８は、複数のＤＰＥのための例示的なアーキテクチャを示す。この例示的なアーキテクチャは、ＤＰＥアレイ１０２に含まれ得るＤＰＥ３０４を示す。図１８の例示的なアーキテクチャは、チェッカーボードアーキテクチャと呼ばれ得る。図１８の例示的なアーキテクチャは、あるＤＰＥのコアが共有メモリを使用して他のＤＰＥの８つまでの他のコアと通信することを可能にする（たとえば、全部で９つのコアが共有メモリを介して通信する）。図１８の例では、各ＤＰＥ３０４は、図６、図７および図８に関連して記載されたように実現され得る。したがって、各コア６０２は、４つの異なるメモリモジュール６０４にアクセスすることができる。各メモリモジュール６０４は、最大４つの異なるコア６０２によってアクセスされ得る。
【０２５９】
図示されるように、ＤＰＥアレイ１０２は行１，行２，行３，行４，および行５を含む。行１〜行５の各々は、３つのＤＰＥ３０４を含む。図１８に示される各行におけるＤＰＥ３０４の特定の数および行の数は、限定ではなく例示を目的としている。行１、行３、および行５を参照すると、これらの行における各ＤＰＥのコアは、メモリモジュールの左側に位置している。行２および行４を参照すると、これらの行における各ＤＰＥのコアは、メモリモジュールの右に位置している。実際には、行２および行４のＤＰＥの向きは、行１、行３および行５のＤＰＥの向きと比較して、水平方向に反転されるか、または水平方向にフリップされる。ＤＰＥの向きは、各交互の行に示されるように反転する。
【０２６０】
図１８の例では、ＤＰＥ３０４は列状に整列している。しかしながら、隣接する行のコアおよびメモリモジュールは、列状に整列されない。図１８のアーキテクチャは、ＤＰＥが位置する特定の行に基づいてＤＰＥが異なるように実現される異種アーキテクチャの例である。ＤＰＥ３０４の水平反転により、隣接する行のコアは整列されない。隣接する行のコアは、互いからオフセットされている。同様に、隣接する行のメモリモジュールも整列していない。隣接する行のメモリモジュールは互いにオフセットされている。しかしながら、１つおきの行のコアは、１つおきの行のメモリモジュールが整列されるように、整列される。たとえば、行１、行３、および行５のコアおよびメモリモジュールは、垂直に（たとえば列状に）整列される。同様に、行２および行４のコアおよびメモリモジュールは、垂直に（たとえば列状に）整列される。
【０２６１】
説明のため、ＤＰＥ３０４−２、３０４−４、３０４−５、３０４−７、３０４−８、３０４−９、３０４−１０、３０４−１１、および３０４−１４のコアは、グループの一部と見なされ、共有メモリを介して通信することができる。矢印は、図１８の例示的なアーキテクチャが、共有メモリを使用して異なるＤＰＥ内の８つまでの他のコアと通信するコアをどのようにサポートするかを示す。ＤＰＥ３０４−８を参照すると、たとえば、コア６０２−８は、メモリモジュール６０４−１１、６０４−７、６０４−８、および６０４−５にアクセスすることができる。メモリモジュール６０４−１１を通じて、コア６０２−８は、コア６０２−１４、６０２−１０、および６０２−１１と通信することができる。メモリモジュール６０４−７を介して、コア６０２−８は、コア６０２−７、６０２−４、および６０２−１０と通信することができる。メモリモジュール６０４−８を介して、コア６０２−８は、コア６０２−９、６０２−１１、および６０２−５と通信することができる。メモリモジュール６０４−５を介して、コア６０２−８は、コア６０２−４、６０２−５、および６０２−２と通信することができる。
【０２６２】
図１８の例では、コア６０２−８を除き、グループ内において、グループの共有メモリモジュールのうち２つの異なるメモリモジュールにアクセスすることができる４つの異なるコアが存在する。残りの他の４つのコアは、グループの共有メモリモジュールのうちの１つのメモリモジュールのみを共有する。グループの共有メモリモジュールは、メモリモジュール６０４−５、６０４−７、６０４−８、および６０４−１１を含む。たとえば、コア６０２−１０、６０２−１１、６０２−４、および６０２−５の各々は、２つの異なるメモリモジュールにアクセスすることができる。コア６０２−１０は、メモリモジュール６０４−１１および６０４−７にアクセスすることができる。コア６０２−１１は、メモリモジュール６０４−１１および６０４−８にアクセスすることができる。コア６０２−４は、メモリモジュール６０４−５および６０４−７にアクセスすることができる。コア６０２−５は、メモリモジュール６０４−５および６０４−８にアクセスすることができる。
【０２６３】
図１８の例では、全部で最大９個のＤＰＥの９個のコアが、ＤＰＥアレイ１０２のＤＰＥ相互接続ネットワークを利用せずに、共有メモリを介して通信可能である。論じられるように、コア６０２−８は、メモリモジュール６０４−１１、６０４−７、６０４−５、および６０４−８を統合されたメモリ空間として見ることができる。
【０２６４】
コア６０２−１４、６０２−７、６０２−９、および６０２−２は、グループの共有メモリモジュールのうちの１つのメモリモジュールにのみアクセスすることができる。コア６０２−１４は、メモリモジュール６０４−１１にアクセスすることができる。コア６０２−７は、メモリモジュール６０４−７にアクセスすることができる。コア６０２−９は、メモリモジュール６０４−８にアクセスすることができる。コア６０２−２は、メモリモジュール６０４−５にアクセスすることができる。
【０２６５】
上述したように、４つより多いメモリインターフェースが各メモリモジュールに対して提供される他の実施形態では、コアは、図１８のアーキテクチャを使用して共有メモリを介して８つより多い他のコアと通信することができる。
【０２６６】
１つまたは複数の他の実施形態では、ＤＰＥの特定の行および／または列は、他の行に対してオフセットされ得る。たとえば、行２および行４は、行１、行３および／または行５の始まりと整列していない位置から始まり得る。たとえば、行２および行４は、行１、行３および／または行５の始まりに対して右にシフトされ得る。
【０２６７】
図１９は、複数のＤＰＥのための別の例示的なアーキテクチャを示す図である。例示的なアーキテクチャは、ＤＰＥアレイ１０２に含まれ得るＤＰＥ３０４を示す。図１９に示される例示的なアーキテクチャは、グリッドアーキテクチャと呼ばれ得る。図１９の例示的なアーキテクチャは、あるＤＰＥのコアが共有メモリを使用して他のＤＰＥの１０個までの他のコアと通信することを可能にする（たとえば、全部で１１個のコアが共有メモリを介して通信する）。図１９の例では、各ＤＰＥ３０４は、図６、図７、および図８に関連して記載されたように実現され得る。したがって、各コア６０２は、４つの異なるメモリモジュール６０４にアクセスすることができる。各メモリモジュール６０４は、最大４つの異なるコア６０２によってアクセスされ得る。
【０２６８】
図示されるように、ＤＰＥアレイ１０２は行１，行２，行３，行４，および行５を含む。行１〜行５の各々は、３つのＤＰＥ３０４を含む。図１９に示される各行におけるＤＰＥ３０４の特定の数および行の数は、限定ではなく例示を目的としている。図１９の例では、ＤＰＥ３０４は垂直に列状に整列している。行１，行２，行３，行４，および行５の各々は、ＤＰＥの各他の行と整列している同じ開始点を有する。さらに、各それぞれのＤＰＥ３０４内のコア６０２およびメモリモジュール６０４の配置は同じである。換言すれば、コア６０２は垂直に整列している。同様に、メモリモジュール６０４は垂直に整列している。
【０２６９】
説明のため、ＤＰＥ３０４−２、３０４−４、３０４−５、３０４−６、３０４−７、３０４−８、３０４−９、３０４−１０、３０４−１１、３０４−１２、および３０４−１４のコアは、グループの一部と見なされ、共有メモリを介して通信することができる。矢印は、図１９の例示的なアーキテクチャが、共有メモリを使用して異なるＤＰＥ内の１０個までの他のコアと通信するコアをどのようにサポートするかを示す。ＤＰＥ３０４−８を参照すると、たとえば、コア６０２−８は、メモリモジュール６０４−１１、６０４−８、６０４−５、および６０４−９にアクセスすることができる。メモリモジュール６０４−１１を介して、コア６０２−８は、コア６０２−１４、６０２−１０、および６０２−１１と通信することができる。メモリモジュール６０４−８を通じて、コア６０２−８は、コア６０２−７、６０２−１１、および６０２−５と通信することができる。メモリモジュール６０４−５を介して、コア６０２−８は、コア６０２−４、６０２−５、および６０２−２と通信することができる。メモリモジュール６０４−９を介して、コア６０２−８は、コア６０２−１２、６０２−９、および６０２−６と通信することができる。
【０２７０】
図１９の例では、コア６０２−８を除いて、グループ内において、グループの共有メモリモジュールのうち２つのメモリモジュールにアクセスすることができる２つの異なるコアが存在する。グループの共有メモリモジュールは、メモリモジュール６０４−５、６０４−８、６０４−９、および６０４−１１を含む。グループの残りの８つのコアは、１つのメモリモジュールのみを共有する。たとえば、コア６０２−１１および６０２−５の各々は、２つの異なるメモリモジュールにアクセスすることができる。コア６０２−１１は、メモリモジュール６０４−１１および６０４−８にアクセスすることができる。メモリモジュール６０４−１４はコア６０４−８によってアクセス可能ではないので、メモリモジュール６０４−１４は共有メモリのグループの一部と見なされない。コア６０２−５は、メモリモジュール６０４−５および６０４−８にアクセスすることができる。メモリモジュール６０４−２はコア６０２−８によってアクセス可能ではないので、メモリモジュール６０４−２は共有メモリモジュールのグループの一部と見なされない。
【０２７１】
コア６０２−１４、６０２−１０、６０２−１２、６０２−７、６０２−９、６０２−４、６０２−６、および６０２−２は、グループの共有メモリモジュールのうちの１つのメモリモジュールにのみアクセスすることができる。コア６０２−１４は、メモリモジュール６０４−１１にアクセスすることができる。コア６０２−１０は、メモリモジュール６０４−１１にアクセスすることができる。コア６０２−１２は、メモリモジュール６０４−９にアクセスすることができる。コア６０２−７は、メモリモジュール６０４−８にアクセスすることができる。コア６０２−９は、メモリモジュール６０４−９にアクセスすることができる。コア６０２−４は、メモリモジュール６０４−５にアクセスすることができる。コア６０２−６は、メモリモジュール６０４−９にアクセスすることができる。コア６０２−２は、メモリモジュール６０４−５にアクセスすることができる。
【０２７２】
図１９の例では、最大１１個までのＤＰＥの１１個のコアが、ＤＰＥアレイ１０２のＤＰＥ相互接続ネットワークを利用せずに共有メモリを介して通信することができる。論じられるように、コア６０２−８は、メモリモジュール６０４−１１、６０４−９、６０４−５、および６０４−８を統合されたメモリ空間として見ることができる。
【０２７３】
上述したように、４つより多いメモリインターフェースが各メモリモジュールに対して提供される他の実施形態では、コアは、図１９のアーキテクチャを使用して共有メモリを介して１０個より多い他のコアと通信することができる。
【０２７４】
図２０は、ＤＰＥアレイを構成する例示的な方法２０００を示す。方法２０００は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。
【０２７５】
ブロック２００２において、ＤＰＥアレイに関する構成データがデバイスにロードされる。構成データは、コンピュータシステム（たとえば、ホスト）、オフチップメモリ、または他の好適なソースにかかわらず、さまざまな異なるソースのいずれかから提供され得る。
【０２７６】
ブロック２００４において、構成データがＳｏＣインターフェースブロックに与えられる。特定の実施形態では、構成データはＮｏＣを介して与えられる。ＳｏＣインターフェースブロックのタイルは、構成データを受信し、その構成データをメモリマッピングされたデータに変換することが可能であり、メモリマッピングされたデータはタイル内に含まれるメモリマッピングされたスイッチに与えられ得る。
【０２７７】
ブロック２００６において、構成データは、ＳｏＣインターフェースブロックのタイル間で、目標ＤＰＥへのインターフェースとして動作するかまたはそれを提供する特定のタイルに伝搬する。目標ＤＰＥは、構成データがアドレス指定されるＤＰＥである。たとえば、構成データは、構成データのうちの異なる部分が向けられるべき特定のＤＰＥを指定するアドレスを含む。ＳｏＣインターフェースブロックのタイル内のメモリマッピングされたスイッチは、構成データのうちの異なる部分を、目標ＤＰＥ（たとえば目標ＤＰＥを含むＤＰＥのサブセット）のためのインターフェースとして動作する特定のタイルに伝搬することができる。
【０２７８】
ブロック２００８において、目標ＤＰＥに対するインターフェースとして動作するＳｏＣインターフェースブロックのタイルは、目標ＤＰＥに対する構成データの部分を目標ＤＰＥに方向付けることができる。たとえば、１つまたは複数の目標ＤＰＥへのインターフェースを提供するタイルは、構成データの一部を、そのタイルがインターフェースを提供するＤＰＥのサブセットに向けることができる。上述したように、ＤＰＥのサブセットは、１つまたは複数の目標ＤＰＥを含む。各タイルは、構成データを受信すると、構成データの任意の部分が、そのタイルがインターフェースを提供するＤＰＥの同じサブセット内の他のＤＰＥにアドレス指定されるかどうかを判定することができる。タイルは、ＤＰＥのサブセット内のＤＰＥにアドレス指定された任意の構成データを、そのようなＤＰＥに向ける。
【０２７９】
ブロック２０１０において、構成データは、目標ＤＰＥにロードされ、その中に含まれるＤＰＥの要素をプログラミングする。たとえば、構成データは、ストリームインターフェース、コア（たとえば、ストリームインターフェース、カスケードインターフェース、コアインターフェース）、メモリモジュール（たとえば、ＤＭＡエンジン、メモリインターフェース、アービタなど）、ブロードキャストイベントスイッチ、および／またはブロードキャストロジックなどの目標ＤＰＥの要素をプログラミングするために構成レジスタにロードされる。構成データはまた、コアのプログラムメモリにロードされ得る実行可能なプログラムコード、および／またはメモリモジュールのメモリバンクにロードされ得るデータを含み得る。
【０２８０】
受信された構成データはまた、ＳｏＣインターフェースブロック１０４のタイルのうちの１つもしくは複数またはすべてにアドレス指定される部分も含み得ることを理解されたい。その場合、それぞれのタイル内のメモリマッピングされたスイッチは、構成データを適切な（たとえば目標）タイルに伝送し、そのようなデータを抽出し、そのようなデータをそれぞれのタイル内の適切な構成レジスタに書き込むことができる。
【０２８１】
図２１は、ＤＰＥアレイの動作の例示的な方法２１００を示す。方法２１００は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法２１００は、ＤＰＥおよび／またはＳｏＣインターフェースブロックに構成データがロードされた状態から始まる。説明のため、図３を参照する。
【０２８２】
ブロック２１０２において、ＤＰＥ３０４−１５（たとえば、「第１のＤＰＥ」）のコア６０２−１５（たとえば、「第１のコア」）がデータを生成する。生成されるデータは、アプリケーションデータであってもよい。たとえば、コア６０２−１５は、コアによってアクセス可能なメモリモジュールに格納されたデータを処理してもよい。メモリモジュールは、本明細書で記載されているように、ＤＰＥ３０４−１５内にあってもよく、異なるＤＰＥ内にあってもよい。データは、たとえば、ＳｏＣインターフェースブロック１０４を使用して、デバイスの別のＤＰＥおよび／または別のサブシステムから受信され得る。
【０２８３】
ブロック２１０４において、コア６０２−１５は、ＤＰＥ３０４−１５のメモリモジュール６０４−１５にデータを格納する。ブロック２１０６において、近傍のＤＰＥ（たとえば、ＤＰＥ３０４−２５、３０４−１６、および／または３０４−５）内の１つまたは複数のコアが、ＤＰＥ３０４−１５のメモリモジュール６０４−１５からデータを読み出す。近傍のＤＰＥ内のコアは、メモリモジュール６０４−１５から読み出されたデータをさらなる計算に利用することができる。
【０２８４】
ブロック２１０８において、ＤＰＥ３０４−１５は、任意選択肢的に、データを１つまたは複数の他のＤＰＥにストリームインターフェースを介して送信する。データが送信されるＤＰＥは、非近傍のＤＰＥであり得る。たとえば、ＤＰＥ３０４−１５は、メモリモジュール６０４−１５からＤＰＥ３０４−３５、３０４−３６などの１つまたは複数の他のＤＰＥにデータを送信することができる。論じられるように、１つまたは複数の実施形態では、ＤＰＥ３０４−１５は、ＤＰＥアレイ１０２のＤＰＥ相互接続ネットワーク内のストリームインターフェースを介してアプリケーションデータをブロードキャストおよび／またはマルチキャストすることができる。別の例では、異なるＤＰＥに送信されるデータは、データのうちの異なる部分であってもよく、データの各異なる部分は、異なる目標ＤＰＥを対象とする。図２１には示されていないが、コア６０２−１５は、カスケードインターフェースを使用して、および／またはストリームスイッチを使用してコアから直接、ＤＰＥアレイ１０２の別のコアおよび／またはＤＰＥにデータを送信することもできる。
【０２８５】
ブロック２１１０において、コア６０２−１５は、任意選択肢的に、カスケードインターフェースを介して近傍のコアにデータを送信し、および／または近傍のコアからデータを受信する。データはアプリケーションデータであってもよい。たとえば、コア６０２−１５は、カスケードインターフェースを介して、ＤＰＥ３０４−１４のコア６０２−１４から直接データを受信し、および／またはＤＰＥ３０４−１６のコア６０２−１６にデータを直接送信することができる。
【０２８６】
ブロック２１１２において、ＤＰＥ３０４−１５は、任意選択肢的に、ＳｏＣインターフェースブロックを介して１つまたは複数のサブシステムにデータを送信し、および／または１つまたは複数のサブシステムからデータを受信する。データはアプリケーションデータであってもよい。たとえば、ＤＰＥ３０４−１５は、データを、ＮｏＣ３０８を介してＰＳ３１２に、ＰＬ３１０に実現される回路に、ＮｏＣ３０８を介して選択されたハードワイヤード回路ブロックに、ＰＬ３１０を介して選択されたハードワイヤード回路ブロックに、および／または外部メモリなどの他の外部サブシステムに送信することができる。同様に、ＤＰＥ３０４−１５は、ＳｏＣインターフェースブロックを介してそのような他のサブシステムからアプリケーションデータを受信することができる。
【０２８７】
図２２は、ＤＰＥアレイの動作の別の例示的な方法２２００を示す。方法２２００は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法２２００は、ＤＰＥアレイに構成データがロードされた状態から始まる。
【０２８８】
ブロック２２０２において、第１のコア、たとえば、第１のＤＰＥ内のコアは、ハードウェア同期化回路に目標のメモリ領域に対するロックを要求する。第１のコアは、たとえば、第１のＤＰＥ、たとえば第１のコアと同じＤＰＥ内に位置するメモリモジュール内の目標のメモリ領域について、または第１のコアとは異なるＤＰＥ内に位置するメモリモジュール内の目標のメモリ領域に対して、ハードウェア同期化回路にロックを要求することが可能である。第１のコアは、アクセスされるべき目標のメモリ領域と同じＤＰＥに位置する特定のハードウェア同期化回路にロックを要求することが可能である。
【０２８９】
ブロック２２０４において、第１のコアは、要求されたロックを取得する。ハードウェア同期化回路は、たとえば、目標のメモリ領域に対する要求されたロックを第１のコアに付与する。
【０２９０】
ブロック２２０６において、ロックを取得したことに応答して、第１のコアは、目標のメモリ領域にデータを書き込む。たとえば、目標のメモリ領域が第１のＤＰＥ内にある場合、第１のコアは、第１のＤＰＥ内のメモリモジュール内に位置するメモリインターフェースを介して、目標のメモリ領域にデータを書き込むことができる。別の例では、目標のメモリ領域が、第１のコアとは異なるＤＰＥに位置する場合、第１のコアは、本明細書で記載される任意のさまざまな技法を使用して、目標のメモリ領域にデータを書き込むことができる。たとえば、第１のコアは、図１０に関連して記載される機構のいずれかを介して、目標のメモリ領域にデータを書き込むことができる。
【０２９１】
ブロック２２０８において、第１のコアは、目標のメモリ領域上のロックを解放する。ブロック２２１０において、第２のコアが、第１のコアによって書き込まれたデータを含む目標のメモリ領域上のロックを要求する。第２のコアは、目標のメモリ領域と同じＤＰＥに位置してもよく、または目標のメモリ領域とは異なるＤＰＥに位置してもよい。第２のコアは、ロックを第１のコアに付与した同じハードウェア同期化回路にロックを要求する。ブロック２２１２において、第２のコアは、ハードウェア同期化回路からロックを取得する。ハードウェア同期化回路は、ロックを第２のコアに付与する。ブロック２２１４において、第２のコアは、目標のメモリ領域からデータにアクセスし、そのデータを処理のために利用することが可能である。ブロック２２１６において、第２のコアは、たとえば、目標のメモリ領域へのアクセスがもはや必要でない場合には、目標のメモリ領域に対するロックを解放する。
【０２９２】
図２２の例は、メモリ領域へのアクセスに関連して記載される。特定の実施形態では、第１のコアは、目標のメモリ領域に直接データを書き込むことができる。他の実施形態では、第１のコアは、（たとえば第１のＤＰＥにおける）ソースのメモリ領域から（たとえば第２のまたは異なるＤＰＥ内に位置する）目標のメモリ領域にデータを移動させることができる。この場合、第１のコアは、データ転送を行うために、ソースのメモリ領域および目標のメモリ領域のロックを取得する。
【０２９３】
他の実施形態では、第１のコアは、第２のコアの動作をストールさせるために第２のコアに対するロックを取得し、次いで、第２のコアの動作を継続させるためにロックを解放することができる。たとえば、第１のコアは、データが第２のコアによる使用のために目標のメモリ領域に書き込まれる間に第２のコアの動作をストールするために、目標のメモリ領域のロックに加えて第２のコアのロックを取得してもよい。第１のコアがデータの書込みを終了すると、第１のコアは、目標のメモリ領域上のロックおよび第２のコア上のロックを解放してもよく、それにより、第２のコアは、目標のメモリ領域のロックを獲得すると、そのデータを処理することができる。
【０２９４】
さらに他の実施形態では、図１０Ｃに示されるように、第１のコアは、同じＤＰＥ内のメモリモジュールから、たとえば、メモリモジュール内のＤＭＡエンジンを介して、別のコアに直接データ転送を開始することができる。
【０２９５】
図２３は、ＤＰＥアレイの動作の別の例示的な方法を示す。方法２３００は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法２３００は、ＤＰＥアレイに構成データがロードされた状態から始まる。
【０２９６】
ブロック２３０２において、第１のコアは、そこに含まれる累積レジスタにデータを置く。たとえば、第１のコアは、中間結果であれ、最終結果であれ、計算の一部が別のコアに直接提供されることになるかどうかについて、計算を実行してもよい。この場合、第１のコアは、その中に含まれる累積レジスタ内に、第２のコアに送信されるべきデータをロードすることができる。
【０２９７】
ブロック２３０４において、第１のコアは、その中に含まれる累積レジスタからデータを第２のコアに第１のコアのカスケードインターフェース出力から送信する。ブロック２３０６において、第２のコアは、第２のコアのカスケードインターフェース入力上で第１のコアからのデータを受信する。次いで、第２のコアは、データを処理するか、またはデータをメモリに格納することができる。
【０２９８】
１つまたは複数の実施形態では、コアによるカスケードインターフェースの利用は、構成データのロードによって制御され得る。たとえば、カスケードインターフェースは、構成データに基づいて、特定のアプリケーションのために必要に応じて、連続するコア対間で有効または無効にされてもよい。特定の実施形態では、カスケードインターフェースが有効にされ、カスケードインターフェースの使用は、コアのプログラムメモリにロードされたプログラムコードに基づいて制御され得る。他の場合では、カスケードインターフェースの使用は、コアに含まれる専用回路および構成レジスタによって制御されてもよい。
【０２９９】
図２４は、ＤＰＥアレイの動作の別の例示的な方法を示す。方法２４００は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法２４００は、ＤＰＥアレイに構成データがロードされた状態から始まる。
【０３００】
ブロック２４０２において、第１のＤＰＥ内のイベントロジックは、１つまたは複数のイベントを第１のＤＰＥ内においてローカルに検出する。イベントは、コアから、メモリモジュールから、またはコアおよびメモリモジュールの両方から検出され得る。ブロック２４０４において、第１のＤＰＥ内のイベントブロードキャスト回路は、第１のＤＰＥにロードされた構成データに基づいてイベントをブロードキャストする。ブロードキャスト回路は、ブロック２４０２で生成されたイベントのうちの選択されたイベントをブロードキャストすることができる。イベントブロードキャスト回路は、ＤＰＥアレイ１０２内の１つまたは複数の他のＤＰＥから受信され得る選択されたイベントをブロードキャストすることもできる。
【０３０１】
ブロック２４０６において、ＤＰＥからのイベントは、ＳｏＣインターフェースブロック内のタイルに伝搬される。たとえば、イベントは、構成データによって決定されたパターンおよび／またはルートでＤＰＥを介して４つの基本四方位方向の各々に伝搬され得る。特定のＤＰＥ内のブロードキャスト回路は、ＳｏＣインターフェースブロック内のタイルまでイベントを伝搬するように構成され得る。
【０３０２】
ブロック２４０８において、ＳｏＣインターフェースブロックのタイル内のイベントロジックは、任意選択肢的に、イベントを生成する。ブロック２４１０において、ＳｏＣインターフェースブロックのタイルは、任意選択肢的に、ＳｏＣインターフェースブロック内の他のタイルにイベントをブロードキャストする。ＳｏＣインターフェースブロックのタイル内のブロードキャスト回路は、タイル自体で生成されるイベントおよび／または他のソース（たとえば、ＳｏＣインターフェースブロックの他のタイルであるであろうと、ＤＰＥであろうと）から受信されたイベントのうちの選択されたイベントをＳｏＣインターフェースブロックの他のタイルにブロードキャストすることができる。
【０３０３】
ブロック２４１２において、ＳｏＣインターフェースブロックのタイルは、任意選択肢的に、１つまたは複数の割り込みを生成する。割り込みは、たとえば、割り込みハンドラ１４３４によって生成され得る。割り込みハンドラは、特定のイベント、イベントの組み合わせ、および／またはイベントのシーケンスを経時的に受信することに応答して、１つまたは複数の割り込みを生成することができる。割込みハンドラは、生成された割込みをＰＳ３１２などの他の回路および／またはＰＬ３１０内に実現される回路に送信することができる。
【０３０４】
ブロック２４１４において、ＳｏＣインターフェースブロックのタイルは、任意選択肢的に、イベントを１つまたは複数の他の回路に送信する。たとえば、ＣＤＴ回路１４２０は、イベントをパケット化し、ＳｏＣインターフェースブロックのタイルから、ＰＳ３１２、ＰＬ３１０内の回路、外部メモリ、またはＳｏＣを有する別の宛先に、イベントを送信することができる。
【０３０５】
１つまたは複数の実施形態では、ＰＳ３１２は、ＳｏＣインターフェースブロック１０４のタイルによって生成された割り込みに応答することができる。たとえば、ＰＳ３１２は、特定の割り込みの受信に応答してＤＰＥアレイ１０２をリセットすることができる。別の例では、ＰＳ３１２は、特定の割り込みに応答して、ＤＰＥアレイ１０２またはＤＰＥアレイ１０２の一部を再構成する（たとえば部分的再構成を実行する）ことができる。別の例では、ＰＳ３１２は、ＤＰＥ内のコアによる使用のために、ＤＰＥの異なるメモリモジュールに新たなデータをロードするなど、他のアクションをとることができる。
【０３０６】
図２４の例では、ＰＳ３１２は、割り込みに応答して動作を行う。他の実施形態では、ＰＳ３１２は、ＤＰＥアレイ１０２のためのグローバルコントローラとして動作してもよい。ＰＳ３１２は、メモリモジュールに格納され、ランタイム中にＤＰＥアレイ１０２の１つまたは複数のＤＰＥ（たとえばコア）によって使用されるアプリケーションパラメータを制御することができる。例示的かつ非限定的な例として、１つまたは複数のＤＰＥは、フィルタを実現するカーネルとして動作し得る。この場合、ＰＳ３１２は、ＰＳ３１２がＤＰＥアレイ１０２のランタイム中に、たとえばランタイム時に動的にフィルタの係数を計算および／または修正することを可能にするプログラムコードを実行することができる。ＰＳ３１２は、ＳｏＣ内で検出された特定の条件および／または信号に応答して係数を計算および／または更新することができる。たとえば、ＰＳ３１２は、何らかの検出された状況に応答して、フィルタのための新たな係数を計算すること、および／またはそのような係数をアプリケーションメモリに（たとえば１つまたは複数のメモリモジュールに）に書き込むことが可能である。ＰＳ３１２に係数などのデータをメモリモジュールに書き込ませ得る条件の例は、ＤＰＥアレイ１０２から特定のデータを受信すること、ＳｏＣインターフェースブロックから割り込みを受信すること、ＤＰＥアレイ１０２からイベントデータを受信すること、ＳｏＣの外部のソースから信号を受信すること、ＳｏＣ内部から別の信号を受信すること、ならびに／またはＳｏＣ内のソースもしくはＳｏＣの外部から新たなおよび／もしくは更新された係数を受信することを含み得るが、これらに限定されない。ＰＳ３１２は、新たな係数を計算し、および／または新たな係数をアプリケーションデータ、たとえば、コアによって利用されるメモリモジュールに書き込むことができる。
【０３０７】
別の例では、ＰＳ３１２は、ＤＰＥの開始、停止、および／またはシングルステップ化実行などのアクションを実行することができるデバッガアプリケーションを実行することができる。ＰＳ３１２は、ＮｏＣ３０８を介してＤＰＥの開始、停止、および／またはシングルステップ化を制御することができる。他の例では、ＰＬ３１０において実現される回路は、デバッグ動作を使用してＤＰＥの動作を制御可能であり得る。
【０３０８】
説明の目的のために、本明細書に開示されるさまざまな本発明の概念の充分な理解を促すために、具体的な名称が記載される。しかしながら、本明細書で使用される専門用語は、本発明の構成の特定の態様を説明することのみを目的とし、限定することを意図するものではない。
【０３０９】
本明細書で定義されるとおりでは、単数形「a」、「an」、および「the」は、文脈が明確にそうではないことを示さない限り、複数形も含むことが意図される。
【０３１０】
本明細書で定義されるとおりでは、「少なくとも１つ」、「１つまたは複数の」、および「および／または」という用語は、別段の明示的な記載がない限り、動作において連言的および選言的の両方であるオープンエンド表現である。たとえば、「Ａ、Ｂ、およびＣのうちの少なくとも１つ」、「Ａ、Ｂ、またはＣのうちの少なくとも１つ」、「Ａ、Ｂ、およびＣのうちの１つまたは複数」、「Ａ、Ｂ、またはＣのうちの１つまたは複数」、および「Ａ、Ｂ、および／またはＣ」という表現の各々は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを一緒に、ＡおよびＣを一緒に、ＢおよびＣを一緒に、またはＡ、ＢおよびＣを一緒に、を意味する。
【０３１１】
本明細書で定義されるとおりでは、「自動的に」という用語は、人間の介入を伴わないことを意味する。
【０３１２】
本明細書で定義されるとおりでは、「場合(if)」という語は、文脈に応じて、「とき(when)」または「〜すると(upon)」または「〜に応答して(in respone to)」または「〜に応答的に(responsive to)」を意味する。従って、「判定される場合には(if it is determined)」または「［述べられた条件またはイベント］が検出される場合には(if [a stated condition or event] is detected)」という表現は、文脈に応じて、「〜という判定で(upon determining)」または「〜と判定することに応答して(in response to determining)」または「［述べられた条件またはイベント］の検出で(upon detecting [the stated condition or event])」または「［述べられた条件またはイベント］を検出することに応答して(in response to detecting [the stated condition or event])」または「［述べられた条件またはイベント］を検出することに応答的に(responsive to detecting [the stated condition or event])」を意味すると解釈され得る。
【０３１３】
本明細書で定義されるとおりでは、「〜に応答的に（response to）」という文言、および上記で記載されるような同様の文言、たとえば、「場合(if)」、「とき(when)」、または「〜すると(upon)」は、アクションまたはイベントに容易に応答または反応することを意味する。応答または反応は、自動的に行われる。したがって、第２のアクションが第１のアクションに「応答して」実行される場合、第１のアクションの発生と第２のアクションの発生との間には因果関係が存在する。「応答して」という表現は、因果関係を示す。
【０３１４】
本明細書で定義されるとおりでは、「一実施形態」、「ある実施形態」、「１つまたは複数の実施形態」、「特定の実施形態」、または同様の文言は、実施形態に関連して記載される特定の特徴、構造、または特性が、本開示内で記載される少なくとも１つの実施形態に含まれることを意味する。したがって、本開示全体を通して「一実施形態において」、「ある実施形態において」、「１つまたは複数の実施形態において」、「特定の実施形態において」、および同様の文言の出現は、必ずしも全て同じ実施形態を指すわけではない。「実施形態」および「構成(arrangement)」という用語は、本開示内で互換的に使用される。
【０３１５】
本明細書で定義されるとおりでは、「実質的に」という文言は、記載される特性、パラメータ、または値が正確に達成される必要はないが、たとえば、公差、測定誤差、測定精度制限、および当業者に公知の他の因子を含む偏差または変動が、特性によって与えられることが意図された効果を排除しない量で生じ得ることを意味する。
【０３１６】
第１、第２などの文言は、本明細書では、さまざまな要素を記述するために使用され得る。これらの要素は、これらの文言によって限定されるべきではなく、なぜならば、これらの文言は、特段の断りがない限り、または文脈によってそうではないと明記されない限り、１つの要素を別の要素から区別するためにのみ使用されるからである。
【０３１７】
図面のフローチャートおよびブロック図は、本発明の構成のさまざまな態様によるシステム、デバイス、および／または方法の可能な実現例のアーキテクチャ、機能、ならびに動作を示す。いくつかの代替的実現例では、ブロックに記載される動作は、図に記載される順序から外れて行われ得る。たとえば、連続して示される２つのブロックは、実質的に同時に実行され得るか、または関与する機能に応じて、時には逆の順序で実行され得る。他の例では、ブロックは、概して、昇順の数値順序で実行され得るが、さらに他の例では、１つまたは複数のブロックは、さまざまな順序で実行され得、それらの結果は、格納され、直後には続かない後のブロックまたは他のブロックにおいて利用される。
【０３１８】
特許請求の範囲に見られるすべてのミーンズまたはステッププラスファンクション要素の対応する構造、材料、行為、および等価物は、具体的に特許請求される他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料、または行為を含むことが意図される。
【０３１９】
１つまたは複数の実施形態では、あるデバイスは、複数のＤＰＥを含み得る。各ＤＰＥは、コアおよびメモリモジュールを含み得る。各コアは、同じＤＰＥ内のメモリモジュールおよび複数のＤＰＥのうちの少なくとも１つの他のＤＰＥ内のメモリモジュールにアクセスするように構成され得る。
【０３２０】
一態様では、各コアは、複数の近傍のＤＰＥのメモリモジュールにアクセスするように構成され得る。
【０３２１】
別の態様では、複数のＤＰＥのコアは、直接結合され得る。
別の態様では、複数のＤＰＥの各々は、ハードワイヤードかつプログラム可能な回路ブロックである。
【０３２２】
別の態様では、各ＤＰＥは、複数のＤＰＥから選択された１つまたは複数のＤＰＥと通信するように構成されたストリームスイッチを含む相互接続回路を含み得る。ストリームスイッチは、１つまたは複数の選択されたＤＰＥ、たとえば、他のＤＰＥと通信するようにプログラム可能であり得る。
【０３２３】
デバイスはまた、サブシステムと、複数のＤＰＥをデバイスのサブシステムに結合するように構成されるＳｏＣインターフェースブロックとを含み得る。一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されるプロセッサを含む。さらに別の態様では、サブシステムは、特定用途向け集積回路および／またはアナログ／混合信号回路を含む。
【０３２４】
別の態様では、ストリームスイッチは、ＳｏＣインターフェースブロックに結合され、デバイスのサブシステムと通信するように構成される。
【０３２５】
別の態様では、各ＤＰＥの相互接続回路は、ＳｏＣインターフェースブロックに結合されるメモリマッピングされたスイッチを含み得、メモリマッピングされたスイッチは、ＳｏＣインターフェースブロックからＤＰＥをプログラミングするための構成データを通信するように構成される。メモリマッピングされたスイッチは、制御データまたはデバッグデータのうちの少なくとも１つをＳｏＣインターフェースブロックと通信するように構成され得る。
【０３２６】
別の態様では、複数のＤＰＥは、イベントブロードキャストネットワークによって相互接続され得る。
【０３２７】
別の態様では、ＳｏＣインターフェースブロックは、サブシステムと複数のＤＰＥのイベントブロードキャストネットワークとの間でイベントを交換するように構成され得る。
【０３２８】
１つまたは複数の実施形態では、ある方法は、第１のデータ処理エンジンの第１のコアがデータを生成することと、第１のコアが第１のデータ処理エンジン内の第１のメモリモジュールにデータを書き込むことと、第２のデータ処理エンジンの第２のコアが第１のメモリモジュールからデータを読み出すこととを含み得る。
【０３２９】
一態様では、この方法は、第１のＤＰＥおよび第２のＤＰＥが近傍のＤＰＥであることを含み得る。
【０３３０】
別の態様では、この方法は、さらに、第１のコアがカスケードインターフェースを介して第２のコアに直接さらなるアプリケーションデータを提供することができることを含み得る。
【０３３１】
別の態様では、この方法は、さらに第１のコアがストリームスイッチを介して第３のＤＰＥにアプリケーションデータを提供することができることを含み得る。
【０３３２】
別の態様では、この方法は、第２のＤＰＥを含む選択された他のＤＰＥと通信するように第１のＤＰＥをプログラミングすることを含み得る。
【０３３３】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンと、サブシステムと、複数のデータ処理エンジンおよびサブシステムに結合されるＳｏＣインターフェースブロックとを含み得る。ＳｏＣインターフェースブロックは、サブシステムと複数のデータ処理エンジンとの間でデータを交換するように構成されてもよい。
【０３３４】
一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されたプロセッサを含む。別の態様では、サブシステムは、特定用途向け集積回路および／またはアナログ／混合信号回路を含む。
【０３３５】
別の態様では、ＳｏＣインターフェースブロックは複数のタイルを含み、各タイルは複数のＤＰＥのサブセットと通信するように構成される。
【０３３６】
別の態様では、各タイルは、構成データの第１の部分を少なくとも１つの近傍のタイルに提供し、構成データの第２の部分を複数のＤＰＥのサブセットのうちの少なくとも１つに提供するように構成された、メモリマッピングされたスイッチを含み得る。
【０３３７】
別の態様では、各タイルは、第１のデータを少なくとも１つの近傍のタイルに提供し、第２のデータを複数のＤＰＥのうちの少なくとも１つに提供するように構成されたストリームスイッチを含むことができる。
【０３３８】
別の態様では、各タイルは、タイル内で生成されるイベントおよびタイルの外部の回路からのイベントを受信するように構成されたイベントブロードキャスト回路を含み得、イベントブロードキャスト回路は、イベントのうちの選択されたものを選択された宛先に提供するようにプログラム可能である。
【０３３９】
別の態様では、ＳｏＣインターフェースブロックは、選択されたイベントをパケット化し、パケット化された選択されたイベントをサブシステムに提供するように構成された、制御、デバッグ、およびトレース回路を含み得る。
【０３４０】
別の態様では、ＳｏＣインターフェースブロックは、イベントブロードキャスト回路をサブシステムに結合するインターフェースを含むことができる。
【０３４１】
１つまたは複数の実施形態では、ＳｏＣインターフェースブロックのためのタイルは、構成データの第１の部分を近傍のタイルに提供し、構成データの第２の部分を複数のデータ処理エンジンのうちのあるデータ処理エンジンに提供するように構成された、メモリマッピングされたスイッチを含むことができる。タイルは、第１のデータを少なくとも１つの近傍のタイルに提供し、第２のデータを複数のデータ処理エンジンのうちのあるデータ処理エンジンに提供するように構成されたストリームスイッチを含むことができる。タイルは、タイル内で生成されるイベントおよびタイルの外部の回路からのイベントを受信するように構成されたイベントブロードキャスト回路を含み得、イベントブロードキャスト回路は、イベントのうちの選択されたものを選択された宛先に提供するようにプログラム可能である。タイルは、メモリマッピングされたスイッチ、ストリームスイッチ、およびイベントブロードキャスト回路を、タイルを含むデバイスのサブシステムに結合するインターフェース回路を含み得る。
【０３４２】
一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されたプロセッサを含む。別の態様では、サブシステムは、特定用途向け集積回路および／またはアナログ／混合信号回路を含む。
【０３４３】
別の態様では、イベントブロードキャスト回路は、タイル内で生成されるイベントまたは複数のＤＰＥのうちの少なくとも１つから受信されたイベントをサブシステムに提供するようにプログラム可能である。
【０３４４】
別の態様では、イベントブロードキャスト回路は、サブシステム内で生成されたイベントを少なくとも１つの近傍のタイルまたは複数のＤＰＥのうちの少なくとも１つに提供するようにプログラム可能である。
【０３４５】
別の態様では、タイルは、イベントブロードキャスト回路から受信されたイベントに基づいてデバイスのプロセッサへの割り込みを選択的に生成するように構成された割り込みハンドラを含み得る。
【０３４６】
別の態様では、タイルは、複数のＤＰＥに分配されるクロック信号を生成するように構成されたクロック生成回路を含むことができる。
【０３４７】
別の態様では、インターフェース回路は、ストリームマルチプレクサ／デマルチプレクサ、プログラマブルロジックインターフェース、ダイレクトメモリアクセスエンジン、およびＮｏＣストリームインターフェースを含み得る。ストリームマルチプレクサ／デマルチプレクサは、ストリームスイッチを、プログラマブルロジックインターフェース、ダイレクトメモリアクセスエンジン、およびネットワークオンチップストリームインターフェースに結合することができる。ストリームマルチプレクサ／デマルチプレクサは、ストリームスイッチと、プログラマブルロジックインターフェースと、ダイレクトメモリアクセスエンジンと、ＮｏＣストリームインターフェースとの間でデータをルーティングするようにプログラム可能である。
【０３４８】
別の態様では、タイルは、ＤＭＡエンジンおよびＮｏＣストリームインターフェースに結合されるスイッチを含むことができ、スイッチは、ＤＭＡエンジンまたはＮｏＣストリームインターフェースをＮｏＣに選択的に結合する。タイルはまた、ＮｏＣをメモリマッピングされたスイッチと結合するブリッジ回路も含み得る。ブリッジ回路は、ＮｏＣからのデータを、メモリマッピングされたスイッチによって使用可能なフォーマットに変換するように構成される。
【０３４９】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、コアおよびメモリモジュールを含み得る。複数のデータ処理エンジンは、複数の列に編成され得る。各コアは、複数のデータ処理エンジンのうちの他の近傍のデータ処理エンジンのメモリモジュールへの共有アクセスによって、当該他の近傍のデータ処理エンジンと通信するように構成され得る。
【０３５０】
一態様では、各ＤＰＥのメモリモジュールは、メモリと、メモリへの複数のメモリインターフェースとを含む。複数のメモリインターフェースのうちの第１のメモリインターフェースは、同じＤＰＥ内のコアに結合されてもよく、複数のメモリインターフェースのうちの他のメモリインターフェースの各々は、複数のＤＰＥのうちの異なるＤＰＥのコアに結合されてもよい。
【０３５１】
別の態様では、複数のＤＰＥはさらに複数の列に編成されてもよく、列内の複数のＤＰＥのコアは整列され、列内の複数のＤＰＥのメモリモジュールは整列される。
【０３５２】
別の態様では、選択されたＤＰＥのメモリモジュールは、選択されたＤＰＥのすぐ上のＤＰＥのコアに結合される第１のメモリインターフェースと、選択されたＤＰＥ内のコアに結合される第２のメモリインターフェースと、選択されたＤＰＥのすぐ隣のＤＰＥのコアに結合される第３のメモリインターフェースと、選択されたＤＰＥのすぐ下のＤＰＥのコアに結合される第４のメモリインターフェースとを含むことができる。
【０３５３】
別の態様では、選択されたＤＰＥは、メモリモジュールへの共有アクセスを介して、複数のＤＰＥのうちの少なくとも１０個のＤＰＥからなるグループと通信するように構成される。
【０３５４】
別の態様では、グループのうちの少なくとも２つのＤＰＥは、複数のＤＰＥのうちの少なくとも１０個のＤＰＥからなるグループのうちの２つ以上のメモリモジュールにアクセスするように構成される。
【０３５５】
別の態様では、ＤＰＥからなる複数の行は、複数のＤＰＥのうちの第１のサブセットを含む第１の行と、複数のＤＰＥのうちの第２のサブセットを含む第２の行とを含むことができ、第２の行の各ＤＰＥの向きは、第１の行の各ＤＰＥの向きに対して水平方向に反転される。
【０３５６】
別の態様では、選択されたＤＰＥのメモリモジュールは、選択されたＤＰＥのすぐ上のＤＰＥのコアに結合される第１のメモリインターフェースと、選択されたＤＰＥ内のコアに結合される第２のメモリインターフェースと、選択されたＤＰＥのすぐ隣のＤＰＥのコアに結合される第３のメモリインターフェースと、選択されたＤＰＥのすぐ下のＤＰＥのコアに結合される第４のメモリインターフェースとを含むことができる。
【０３５７】
別の態様では、選択されたＤＰＥは、メモリモジュールへの共有アクセスを介して、複数のＤＰＥのうちの少なくとも８つのＤＰＥからなるグループと通信するように構成され得る。
【０３５８】
別の態様では、グループのうちの少なくとも４つのＤＰＥは、複数のＤＰＥのうちの少なくとも８つのＤＰＥからなるグループのうちの２つ以上のメモリモジュールにアクセスするように構成される。
【０３５９】
１つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、複数のメモリバンクを有するメモリプールと、各々がメモリプールに結合され、複数のメモリバンクにアクセスするように構成された複数のコアと、メモリプールと少なくとも１つの近傍のデータ処理エンジンのメモリマッピングされたスイッチとに結合されるメモリマッピングされたスイッチと、複数のコアの各々と少なくとも１つの近傍のデータ処理エンジンのストリームスイッチとに結合されるストリームスイッチとを含むことができる。
【０３６０】
一態様では、メモリプールは、複数のメモリバンクの各々に結合されるクロスバーと、複数のコアの各々およびクロスバーに結合されるインターフェースとを含み得る。
【０３６１】
別の態様では、各ＤＰＥは、メモリプールおよびストリームスイッチに結合されるダイレクトメモリアクセスエンジンを含むことができ、ダイレクトメモリアクセスエンジンは、メモリプールからストリームスイッチにデータを提供し、ストリームスイッチからメモリプールにデータを書き込むように構成される。
【０３６２】
別の態様では、メモリプールは、クロスバーおよびダイレクトメモリアクセスエンジンに結合されるさらなるインターフェースを含み得る。
【０３６３】
別の態様では、複数のコアの各々は、複数のメモリバンクへの共有アクセスを有する。
別の態様では、各ＤＰＥ内において、メモリマッピングされたスイッチは、ＤＰＥをプログラミングするための構成データを受信するように構成され得る。
【０３６４】
別の態様では、ストリームスイッチは、構成データに基づいて複数のＤＰＥのうちの異なるＤＰＥとの接続を確立するようにプログラム可能である。
【０３６５】
別の態様では、各タイル内の複数のコアは、直接結合され得る。
別の態様では、各ＤＰＥ内において、複数のコアのうちの最初のコアは、第１の近傍のＤＰＥ内のコアに直接結合されてもよく、複数のコアのうちの最後のコアは、第２の近傍のＤＰＥ内のコアに直接結合される。
【０３６６】
別の態様では、複数のコアの各々は、非活性化するようにプログラム可能であり得る。
本明細書で提供される本発明の構成の説明は、例示目的のためのものであり、網羅的であること、または開示された形態および例に限定されることを意図していない。本明細書で使用される専門用語は、本発明の構成の原理、市場で見られる技術に対する実用的な応用または技術的改善を説明するため、および／または当業者が本明細書で開示される本発明の構成を理解することを可能にするために選択された。修正および変形は、記載される発明の構成の範囲および精神から逸脱することなく、当業者には明白であろう。したがって、そのような特徴および実現例の範囲を示すものとして、前述の開示よりもむしろ特許請求の範囲を参照するべきである。
【図１】
2021520550.tif 000003
【図２Ａ】
2021520550.tif 000004
【図２Ｂ】
2021520550.tif 000005
【図２Ｃ】
2021520550.tif 000006
【図２Ｄ】
2021520550.tif 000007
【図３】
2021520550.tif 000008
【図４Ａ】
2021520550.tif 000009
【図４Ｂ】
2021520550.tif 000010
【図５Ａ】
2021520550.tif 000011
【図５Ｂ】
2021520550.tif 000012
【図５Ｃ】
2021520550.tif 000013
【図５Ｄ】
2021520550.tif 000014
【図５Ｅ】
2021520550.tif 000015
【図５Ｆ】
2021520550.tif 000016
【図５Ｇ】
2021520550.tif 000017
【図６】
2021520550.tif 000018
【図７】
2021520550.tif 000019
【図８】
2021520550.tif 000020
【図９】
2021520550.tif 000021
【図１０Ａ】
2021520550.tif 000022
【図１０Ｂ】
2021520550.tif 000023
【図１０Ｃ】
2021520550.tif 000024
【図１０Ｄ】
2021520550.tif 000025
【図１０Ｅ】
2021520550.tif 000026
【図１１】
2021520550.tif 000027
【図１２】
2021520550.tif 000028
【図１３】
2021520550.tif 000029
【図１４Ａ】
2021520550.tif 000030
【図１４Ｂ】
2021520550.tif 000031
【図１４Ｃ】
2021520550.tif 000032
【図１５】
2021520550.tif 000033
【図１６】
2021520550.tif 000034
【図１７】
2021520550.tif 000035
【図１８】
2021520550.tif 000036
【図１９】
2021520550.tif 000037
【図２０】
2021520550.tif 000038
【図２１】
2021520550.tif 000039
【図２２】
2021520550.tif 000040
【図２３】
2021520550.tif 000041
【図２４】
2021520550.tif 000042
【国際調査報告】
2021520550.tif 000043
2021520550.tif 000044
2021520550.tif 000045
2021520550.tif 000046
2021520550.tif 000047