詳細な説明
本開示は、新規な特徴を規定する特許請求の範囲を決めているが、本開示内で記載されるさまざまな特徴は、図面と併せて説明を考慮することによってよりよく理解されるであろうと考えられる。本明細書に記載されるプロセス、マシン、製造、およびそれらの任意の変形は、例示の目的のために提供される。本開示内で記載される具体的な構造的および機能的詳細は、限定的なものとして解釈されるべきではなく、単に特許請求の範囲の基礎として、および実質的に任意の適切に詳細な構造において記載される特徴を様々に採用するように当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本開示内で使用される用語および表現は、限定することを意図するものではなく、むしろ、記載される特徴の理解可能な説明を提供することを意図する。
本開示は、1つまたは複数のデータ処理エンジン(DPE)および/またはDPEアレイを含む集積回路デバイス(デバイス)に関する。DPEアレイは、複数のハードワイヤード回路ブロックを指す。複数の回路ブロックは、プログラム可能であってもよい。DPEアレイは、複数のDPEおよびシステムオンチップ(SoC)インターフェースブロックを含み得る。一般に、DPEは、データ処理能力を提供することができるコアを含む。DPEは、さらに、DPE内の1つまたは複数のコアによってアクセス可能なメモリモジュールを含む。特定の実施形態では、DPEのメモリモジュールはまた、DPEアレイのうちの異なるDPEにおける1つまたは複数の他のコアによってアクセスされてもよい。
DPEは、DPE相互接続をさらに含むことができる。DPE相互接続は、DPEアレイの他のDPEとの通信および/またはDPEアレイを含むデバイスの異なるサブシステムとの通信を実現することができる回路を指す。DPE相互接続は、さらに、DPEの構成をサポートしてもよい。特定の実施形態では、DPE相互接続は、制御データおよび/またはデバッグデータを搬送することができる。
DPEアレイは、さまざまな異なるアーキテクチャのいずれかを使用して編成され得る。1つまたは複数の実施形態において、DPEアレイは、1つまたは複数の行および1つまたは複数の列に編成され得る。場合によっては、DPEの列および/または行は整列される。いくつかの実施形態では、各DPEは、メモリモジュールに結合される単一のコアを含み得る。他の実施形態では、DPEアレイのうちの1つもしくは複数のDPEまたは各DPEは、メモリモジュールに結合される2つ以上のコアを含むように実現され得る。
1つまたは複数の実施形態では、DPEアレイは、各DPEが各他のDPEと同じである同種構造として実現される。他の実施形態では、DPEアレイは異種構造として実現され、DPEアレイは2つ以上の異なるタイプのDPEを含む。たとえば、DPEアレイは、単一のコアを有するDPE、複数のコアを有するDPE、異なる種類のコアがその中に含まれるDPE、および/または異なる物理アーキテクチャを有するDPEを含み得る。
DPEアレイは、さまざまなサイズで実現され得る。たとえば、DPEアレイは、デバイスのダイの全幅および/または全長に及ぶように実現され得る。別の例では、DPEアレイは、そのようなダイの全幅および/または全長の一部分に及ぶように実現され得る。さらなる実施形態では、1つより多いDPEアレイがダイ内に実現されてもよく、異なるDPEアレイは、ダイ上の異なる領域に分布され、異なるサイズを有し、異なる形状を有し、および/または本明細書に記載される異なるアーキテクチャ(たとえば、整列された行および/または列、同種および/または異種)を有する。さらに、DPEアレイは、異なる数のDPEの行および/または異なる数のDPEの列を含み得る。
DPEアレイは、デバイス内のさまざまな異なるサブシステムのいずれと共に利用され、それらに結合されてもよい。そのようなサブシステムは、プロセッサおよび/もしくはプロセッサシステム、プログラマブルロジック、ならびに/またはネットワークオンチップ(NoC)を含み得るが、これらに限定されない。特定の実施形態では、NoCはプログラム可能であってもよい。デバイスに含まれ、DPEアレイに結合され得るサブシステムのさらなる例は、特定用途向け集積回路(ASIC)、ハードワイヤード回路ブロック、アナログおよび/もしくは混合信号回路、グラフィック処理ユニット(GPU)、ならびに/または汎用プロセッサ(たとえば、中央処理ユニットもしくはCPU)を含み得るが、これらに限定されない。CPUの例は、x86タイプのアーキテクチャを有するプロセッサである。本明細書では、用語「ASIC」は、別の単数または複数のタイプの回路と組み合わせた特定用途向け回路を含むIC、ダイ、および/もしくはダイの一部分、ならびに/または全体が特定用途向け回路で形成されるICおよび/もしくはダイを指し得る。
特定の実施形態では、1つまたは複数のDPEアレイを含むデバイスは、単一のダイアーキテクチャを使用して実現され得る。その場合、DPEアレイおよびそのDPEアレイとともに利用される任意の他のサブシステムは、デバイスの同じダイ上に実現される。他の実施形態では、1つまたは複数のDPEアレイを含むデバイスは、2つ以上のダイを含むマルチダイデバイスとして実現されてもよい。いくつかのマルチダイデバイスでは、1つまたは複数のDPEアレイは、1つのダイに実現されてもよく、1つまたは複数の他のサブシステムは、1つまたは複数の他のダイに実現される。他のマルチダイデバイスでは、1つまたは複数のDPEアレイが、1つまたは複数のダイにおいて、マルチダイデバイスの1つまたは複数の他のサブシステムと組み合わせて実現され得る(たとえば、DPEアレイは、少なくとも1つのサブシステムと同じダイ内に実現される)。
本開示で記載されるDPEアレイは、最適化されたデジタル信号処理(DSP)アーキテクチャを実現することができる。DSPアーキテクチャは、さまざまな異なる動作の任意の動作を効率的に実行することができる。アーキテクチャによって実行され得る動作のタイプの例としては、ワイヤレスラジオ、判定帰還型等化(DFE)、5G/ベースバンド、ワイヤレスバックホール、機械学習、自動車運転者支援、エンベデッドビジョン、ケーブルアクセス、および/またはレーダに関連する動作が挙げられるが、これらに限定されない。本明細書で記載されるDPEアレイは、従来のプログラマブル(たとえばFPGAタイプ)回路を利用する他の解決策よりも少ない電力を消費しながら、そのような動作を実行することができる。さらに、DPEアレイベースの解決策は、従来のプログラマブル回路を利用する他の解決策よりも少ないダイ面積を使用して実現され得る。DPEアレイはさらに、予測可能かつ保証されたデータスループットおよびレイテンシメトリックを満たしながら、本明細書で記載されるような動作を実行することが可能である。
本発明の構成のさらなる態様が、図面を参照して以下により詳細に記載される。説明の簡略化および明確化のために、図に示される要素は、必ずしも一定の縮尺で描かれていない。たとえば、いくつかの要素の寸法は、明確化のために、他の要素に対して強調されている場合がある。さらに、適切と考えられる場合、参照番号は、対応する、類似の、または同様の特徴を示すために、図面間で繰り返される。
図1は、DPEアレイ102を含むデバイス100の例を示す。図1の例では、DPEアレイ102は、SoCインターフェースブロック104を含む。また、デバイス100は、1つまたは複数のサブシステム106−1〜106−Nも含む。1つまたは複数の実施形態では、デバイス100は、システムオンチップ(SoC)タイプのデバイスとして実現される。一般に、SoCは、互いに対話することが可能な2つ以上のサブシステムを含むICを指す。一例として、SoCは、プログラムコードを実行するプロセッサおよび1つまたは複数の他の回路を含み得る。他の回路は、ハードワイヤード回路、プログラマブル回路、他のサブシステム、および/またはそれらの任意の組み合わせとして実現されてもよい。回路は、互いにおよび/またはプロセッサと協働して動作することができる。
DPEアレイ102は、複数の相互接続されたDPEで形成される。各DPEはハードワイヤード回路ブロックである。各DPEはプログラム可能であってもよい。SoCインターフェースブロック104は、1つまたは複数のタイルを含み得る。SoCインターフェースブロック104のタイルの各々は、ハードワイヤードであり得る。SoCインターフェースブロック104の各タイルは、プログラム可能であってもよい。SoCインターフェースブロック104は、DPEアレイ102、たとえばDPEと、デバイス100のサブシステム106などのSoCの他の部分との間のインターフェースを提供する。サブシステム106−1〜106−Nは、たとえば、プロセッサおよび/またはプロセッサシステム(たとえば、CPU、汎用プロセッサ、および/またはGPU)、プログラマブルロジック、NoC、ASIC、アナログおよび/または混合信号回路、ならびに/またはハードワイヤード回路ブロックの、1つもしくは複数または任意の組み合わせを表し得る。
1つまたは複数の実施形態では、デバイス100は、単一のダイアーキテクチャを使用して実現される。その場合、DPEアレイ102および少なくとも1つのサブシステム106は、単一のダイに含まれ、または実現され得る。1つまたは複数の他の実施形態では、デバイス100は、マルチダイアーキテクチャを使用して実現される。その場合、DPEアレイ102およびサブシステム106は、2つ以上のダイにわたって実現され得る。たとえば、DPEアレイ102は、1つのダイに実現されてもよく、サブシステム106は、1つまたは複数の他のダイに実現される。別の例では、SoCインターフェースブロック104は、DPEアレイ102のDPEとは異なるダイにおいて実現され得る。さらに別の例では、DPEアレイ102および少なくとも1つのサブシステム106は、同じダイに実現されてもよく、他のサブシステムおよび/または他のDPEアレイは、他のダイに実現される。シングルダイアーキテクチャおよびマルチダイアーキテクチャのさらなる例は、図2、図3、図4および図5に関連して以下でより詳細に記載される。
図2A、図2B、図2C、および図2D(集合的に「図2」と呼ばれる)は、1つまたは複数のDPEアレイ102を含むデバイスのための例示的なアーキテクチャを示す。より具体的には、図2は、デバイス100のためのシングルダイアーキテクチャの例を示している。説明のため、SoCインターフェースブロック104は図2には示されていない。
図2Aは、単一のDPEアレイを含むデバイス100の例示的なアーキテクチャを示す。図2Aの例では、DPEアレイ102は、デバイス100において、サブシステム106−1とともに実現される。DPEアレイ102およびサブシステム106−1は、同じダイ内に実現される。DPEアレイ102は、デバイス100のダイの全幅にわたって延在してもよく、またはデバイス100のダイを部分的に横切って延在してもよい。図示されるように、DPEアレイ102は、デバイス100の上部領域に実現される。しかしながら、DPEアレイ102は、デバイス100の別の領域に実現され得ることを理解されたい。したがって、図2AにおけるDPEアレイ102の配置および/またはサイズは、限定として意図されない。DPEアレイ102は、SoCインターフェースブロック104(図示せず)によってサブシステム106−1に結合され得る。
図2Bは、複数のDPEアレイを含むデバイス100の例示的なアーキテクチャを示す。図2Bの例では、複数のDPEアレイがDPEアレイ102−1およびDPEアレイ102−2として実現され示される。図2Bは、複数のDPEアレイがサブシステム106−1と共にデバイス100の同じダイ内に実現され得ることを示す。DPEアレイ102−1および/またはDPEアレイ102−2は、デバイス100のダイの全幅にわたって延在してもよく、またはデバイス100のダイを部分的にのみ横切って延在してもよい。図示されるように、DPEアレイ102−1は、デバイス100の上部領域に実現され、DPEアレイ102−2は、デバイス100の底部領域に実現される。上述したように、図2BにおけるDPEアレイ102−1および102−2の配置および/またはサイズは、限定として意図されない。
1つまたは複数の実施形態では、DPEアレイ102−1およびDPEアレイ102−2は、実質的に同様または同じであり得る。たとえば、DPEアレイ102−1は、DPEアレイ102−2と、DPEのサイズ、形状、数、ならびにDPEが各それぞれのDPEアレイにおいて同種であるかまたは同様のタイプおよび配列であるかに関して、同じであり得る。1つまたは複数の他の実施形態では、DPEアレイ102−1は、DPEアレイ102−2とは異なり得る。たとえば、DPEアレイ102−1は、DPEアレイ102−2と、DPEのサイズ、形状、数、コアの種類、ならびにDPEが各それぞれのDPEアレイにおいて同種であるかまたは異なるタイプおよび/または配列であるかに関して、異なり得る。
1つまたは複数の実施形態では、DPEアレイ102−1およびDPEアレイ102−2の各々は、それ自体のSoCインターフェースブロック(図示せず)を介して、サブシステム106−1に結合される。たとえば、第1のSoCインターフェースブロックが含まれ、DPEアレイ102−1をサブシステム106−1に結合するために使用されてもよく、第2のSoCインターフェースブロックが含まれ、DPEアレイ102−2をサブシステム106−1に結合するために使用されてもよい。別の実施形態では、単一のSoCインターフェースブロックを使用して、DPEアレイ102−1およびDPEアレイ102−2の両方をサブシステム106−1に結合することができる。後者の場合、たとえば、DPEアレイのうちの1つは、SoCインターフェースブロックを含まない場合がある。そのアレイ内のDPEは、他のDPEアレイのSoCインターフェースブロックを使用してサブシステム106−1に結合し得る。
図2Cは、複数のDPEアレイおよび複数のサブシステムを含むデバイス100の例示的なアーキテクチャを示す。図2Cの例では、複数のDPEアレイが実現され、DPEアレイ102−1およびDPEアレイ102−2として示される。図2Cは、複数のDPEアレイがデバイス100の同じダイ内に実現され得ること、およびDPEアレイ102の配置または場所が異なり得ることを示している。さらに、DPEアレイ102−1および102−2は、サブシステム106−1および106−2と同じダイ内に実現される。
図2Cの例では、DPEアレイ102−1およびDPEアレイ102−2は、デバイス100のダイの全幅にわたって延在していない。むしろ、DPEアレイ102−1および102−2の各々は、デバイス100のダイを部分的に横切って延在し、したがって、デバイス100のダイの幅の一部である領域内に実現される。図2Bの例のように、図2CのDPEアレイ102−1およびDPEアレイ102−2は、実質的に同様もしくは同じでもよく、または異なっていてもよい。
1つまたは複数の実施形態では、DPEアレイ102−1およびDPEアレイ102−2の各々は、サブシステム106−1および/またはサブシステム106−2に、それ自体のSoCインターフェースブロック(図示せず)を介して結合される。例示的かつ非限定的な例では、第1のSoCインターフェースブロックが含まれ、DPEアレイ102−1をサブシステム106−1に結合するために使用されてもよく、第2のSoCインターフェースブロックが含まれ、DPEアレイ102−2をサブシステム106−2に結合するために使用されてもよい。その場合、各DPEアレイは、デバイス100の利用可能なサブシステムのサブセットと通信する。別の例では、第1のSoCインターフェースブロックが含まれ、DPEアレイ102−1をサブシステム106−1および106−2に結合するために使用されてもよく、第2のSoCインターフェースブロックが含まれ、DPEアレイ102−2をサブシステム106−1および106−2に結合するために使用されてもよい。さらに別の例では、単一のSoCインターフェースブロックを使用して、DPEアレイ102−1およびDPEアレイ102−2の両方をサブシステム106−1および/またはサブシステム106−2に結合することができる。上述したように、図2CにおけるDPEアレイ102−1および102−2の配置ならびに/またはサイズは、限定として意図されない。
図2Dは、複数のDPEアレイおよび複数のサブシステムを含むデバイス100の別の例示的なアーキテクチャを示す。図2Dの例では、複数のDPEアレイがDPEアレイ102−1およびDPEアレイ102−2として実現され、示される。図2Dはまた、複数のDPEアレイがデバイス100の同じダイ内に実現され得ること、ならびにDPEアレイ102の配置および/または場所が異なり得ることを示す。図2Dの例では、DPEアレイ102−1およびDPEアレイ102−2は、デバイス100のダイの全幅にわたって延在していない。むしろ、DPEアレイ102−1および102−2の各々は、デバイス100のダイの幅の一部である領域に実現される。さらに、図2Dのデバイス100は、DPEアレイ102−1および102−2と同じダイ内にサブシステム106−1、106−2、106−3、および106−4を含む。図2Bの例のように、図2DのDPEアレイ102−1およびDPEアレイ102−2は、実質的に同様もしくは同じでもよく、または異なっていてもよい。
図2Dの例におけるDPEアレイとサブシステムとの間の接続性は変動し得る。ある場合では、DPEアレイは、デバイス100において利用可能なサブシステムのサブセットにのみ結合され得る。他の場合では、DPEアレイは、デバイス100内の1つより多いサブシステムまたは各サブシステムに結合され得る。
図2の例は、限定ではなく例示を目的として提供される。単一のダイを有するデバイスは、ダイの異なる領域に位置する1つまたは複数の異なるDPEアレイを含み得る。DPEアレイの数、配置、および/またはサイズは変動し得る。さらに、DPEアレイは同じでも異なっていてもよい。1つまたは複数のDPEアレイが、本開示内で記載される異なる種類のサブシステムの1つもしくは複数および/または任意の組み合わせと組み合わせて実現されてもよい。
1つ以上の実施形態において、2つ以上のDPEアレイは、互いと直接通信するように構成されてもよい。たとえば、DPEアレイ102−1は、DPEアレイ102−2および/または追加のDPEアレイと直接通信することができてもよい。特定の実施形態では、DPEアレイ102−1は、1つまたは複数のSoCインターフェースブロックを介してDPEアレイ102−2および/または他のDPEアレイと通信することができる。
図3は、デバイス100の別の例示的なアーキテクチャを示す。図3の例では、DPEアレイ102は、SoCインターフェースブロック104を含むDPE304の二次元アレイとして実現される。DPEアレイ102は、以下でより詳細に説明するさまざまな異なるアーキテクチャのいずれかを使用して実現され得る。限定ではなく例示のために、図3は、図19に関連してより詳細に記載されるように、整列された行および整列された列に配置されたDPE304を示す。しかしながら、他の実施形態では、DPE304は、選択された行および/または列内のDPEが、隣接する行および/または列内のDPEに対して水平方向に反転またはフリップされるように配置されてもよい。DPEの水平反転の例は、図18に関連して記載される。1つまたは複数の他の実施形態では、DPEの行および/または列は、隣接する行および/または列に対してオフセットされ得る。1つもしくは複数のまたはすべてのDPE304は、図6および図8に関連して概して記載されるような単一のコアを含むように、または図12に関連して概して記載されるような2つ以上のコアを含むように実現され得る。
SoCインターフェースブロック104は、DPE304をデバイス100の1つまたは複数の他のサブシステムに結合することができる。1つまたは複数の実施形態では、SoCインターフェースブロック104は、隣接するDPE304に結合される。たとえば、SoCインターフェースブロック104は、DPEアレイ102内のDPEの最下行の各DPE304に直接結合され得る。例示において、SoCインターフェースブロック104は、DPE304−1、304−2、304−3、304−4、304−5、304−6、304−7、304−8、304−9、および304−10に直接接続され得る。
図3は、例示の目的のために示される。他の実施形態では、SoCインターフェースブロック104は、DPEアレイ102の上部、DPEアレイ102の左側(たとえば列として)、DPEアレイ102の右側(たとえば列として)、またはDPEアレイ102内およびその周辺の複数の場所(たとえば、DPEアレイ102内の1つもしくは複数の介在行および/または列として)に位置し得る。SoCインターフェースブロック104のレイアウトおよび位置に応じて、SoCインターフェースブロック104に結合される特定のDPEは変わり得る。
限定ではなく例示のために、SoCインターフェースブロック104がDPE304の左側に位置する場合、SoCインターフェースブロック104は、DPE304−1、DPE304−11、DPE304−21、およびDPE304−31を含むDPEの左列に直接結合され得る。SoCインターフェースブロック104がDPE304の右側に位置する場合、SoCインターフェースブロック104は、DPE304−10、DPE304−20、DPE304−30、およびDPE304−40を含むDPEの右列に直接結合され得る。SoCインターフェースブロック104がDPE304の上に位置する場合、SoCインターフェースブロック104は、DPE304−31、DPE304−32、DPE304−33、DPE304−34、DPE304−35、DPE304−36、DPE304−37、DPE304−38、DPE304−39、およびDPE304−40を含むDPEの最上部の行に結合され得る。SoCインターフェースブロック104が複数の場所に位置している場合、SoCインターフェースブロック104に直接接続される特定のDPEは変わり得る。たとえば、SoCインターフェースブロックがDPEアレイ102内の行および/または列として実現される場合、SoCインターフェースブロック104に直接結合されるDPEは、SoCインターフェースブロック104の1つの側もしくは複数の側または各側でSoCインターフェースブロック104に隣接するものであってよい。
DPE304は、集合的にとらえられた場合にDPE相互接続ネットワークを形成するDPE相互接続(図示せず)によって相互接続される。したがって、SoCインターフェースブロック104は、SoCインターフェースブロック104に直接接続されたDPEアレイ102の1つまたは複数の選択されたDPE304と通信し、各それぞれのDPE304内に実現されるDPE相互接続で形成されたDPE相互接続ネットワークを利用することによって、DPEアレイ102の任意のDPE304と通信することができる。
SoCインターフェースブロック104は、DPEアレイ102内の各DPE304をデバイス100の1つまたは複数の他のサブシステムと結合することができる。説明のため、デバイス100は、NoC308、プログラマブルロジック(PL)310、プロセッサシステム(PS)312、ならびに/またはハードワイヤード回路ブロック314、316、318、320、および/もしくは322のいずれかなどのサブシステム(たとえばサブシステム106)を含む。たとえばSoCインターフェースブロック104は、選択されたDPE304とPL310との間の接続を確立することが可能である。SoCインターフェースブロック104はまた、選択されたDPE304とNoC308との間の接続を確立することが可能である。NoC308を通して、選択されたDPE304は、PS312ならびに/またはハードワイヤード回路ブロック320および322と通信することが可能である。選択されたDPE304は、SoCインターフェースブロック104およびPL310を介してハードワイヤード回路ブロック314〜318と通信することが可能である。特定の実施形態では、SoCインターフェースブロック104は、デバイス100の1つまたは複数のサブシステムに直接結合され得る。たとえば、SoCインターフェースブロック104は、PS312および/または他のハードワイヤード回路ブロックに直接結合され得る。特定の実施形態では、ハードワイヤード回路ブロック314〜322は、ASICの例と見なされ得る。
1つまたは複数の実施形態では、DPEアレイ102は、単一のクロックドメインを含む。NoC308、PL310、PS312、およびさまざまなハードワイヤード回路ブロックなどの他のサブシステムは、1つもしくは複数の別個のまたは異なるクロックドメインにあり得る。さらに、DPEアレイ102は、サブシステムのうちの他のサブシステムとインターフェースするために使用され得る追加のクロックを含み得る。特定の実施形態では、SoCインターフェースブロック104は、DPEアレイ102のDPE304に提供または分配され得る1つまたは複数のクロック信号を生成することができるクロック信号生成器を含む。
DPEアレイ102は、DPE304およびSoCインターフェースブロック104間の接続性ならびにDPE304およびSoCインターフェースブロック104がどのように動作するかを定義する構成データを内部構成メモリセル(本明細書では「構成レジスタ」とも称される)にロードすることによってプログラムされ得る。たとえば、特定のDPE304またはDPE304のグループがサブシステムと通信するために、DPE304およびSoCインターフェースブロック104は、そのようにプログラムされる。同様に、1つまたは複数の特定のDPE304が1つまたは複数の他のDPE304と通信するために、DPEはそのようにプログラムされる。DPE304およびSoCインターフェースブロック104は、それぞれDPE304およびSoCインターフェースブロック104内の構成レジスタに構成データをロードすることによってプログラムされ得る。別の例では、SoCインターフェースブロック104の一部であるクロック信号生成器は、DPEアレイ102に与えられるクロック周波数を変化させるために構成データを使用してプログラム可能であってもよい。
NoC308は、PL310、PS312、およびハードワイヤード回路ブロックのうちの選択された回路ブロック(たとえば回路ブロック320および322)への接続を提供する。図3の例では、NoC308はプログラム可能である。他のプログラマブル回路と共に使用されるプログラマブルNoCの場合、NoC308を通じてルーティングされるべきネットは、ユーザ回路設計がデバイス100内での実現のために作成されるまで未知である。NoC308は、スイッチおよびインターフェースなどのNoC308内の要素がどのように構成され、データをスイッチからスイッチに、およびNoCインターフェース間で渡すかを定義する構成データを内部構成レジスタにロードすることによってプログラムされ得る。
NoC308は、デバイス100の一部として作製され、物理的に修正可能ではないが、ユーザ回路設計の異なるマスタ回路と異なるスレーブ回路との間の接続性を確立するようにプログラムされ得る。この点に関して、NoC308は、異なる回路設計に適応することができ、各異なる回路設計は、NoC308によって結合され得る、デバイス100内の異なる場所で実現されるマスタ回路およびスレーブ回路の異なる組み合わせを有する。NoC308は、ユーザ回路設計のマスタ回路とスレーブ回路との間でデータ、たとえばアプリケーションデータおよび/または構成データをルーティングするようにプログラムされ得る。たとえば、NoC308は、PL310内に実現される異なるユーザ指定回路を、PS312と、SoCインターフェースブロック104を介してDPE304のうちの異なるDPEと、異なるハードワイヤード回路ブロックと、ならびに/またはデバイス100の外部の異なる回路および/もしくはシステムと結合するようにプログラムされ得る。
PL310は、指定された機能を実行するようにプログラムされ得る回路である。一例として、PL310はフィールドプログラマブルゲートアレイ(FPGA)回路として実現され得る。PL310は、プログラマブル回路ブロックのアレイを含むことができる。PL310内のプログラマブル回路ブロックの例としては、入出力ブロック(IOB)、構成可能なロジックブロック(CLB)、専用ランダムアクセスメモリブロック(BRAM)、デジタル信号処理ブロック(DSP)、クロックマネージャ、および/または遅延ロックループ(DLL)が含まれるが、これらに限定されない。
PL310内の各プログラマブル回路ブロックは、典型的には、プログラマブル相互接続回路およびプログラマブルロジック回路の両方を含む。プログラマブル相互接続回路は、典型的には、プログラマブル相互接続ポイント(PIP)によって相互接続されるさまざまな長さの多数の相互接続ワイヤを含む。典型的には、相互接続ワイヤは、ビット単位(たとえば、各ワイヤが1ビットの情報を伝達する)で接続性を与えるように(たとえばワイヤ単位で)構成される。プログラマブルロジック回路は、たとえばルックアップテーブル、レジスタ、算術論理等を含み得るプログラマブル素子を使用してユーザ設計のロジックを実現する。プログラマブル相互接続回路およびプログラマブルロジック回路は、プログラマブル素子がどのように構成され動作するかを定義する構成データを内部構成メモリセルにロードすることによってプログラムされ得る。
図3の例では、PL310は、2つの別個のセクションで示されている。別の例では、PL310は、プログラマブル回路の統合領域として実現され得る。さらに別の例では、PL310は、プログラマブル回路の3つ以上の異なる領域として実現され得る。PL310の特定の編成は、限定として意図されない。
図3の例では、PS312は、デバイス100の一部として作製されるハードワイヤード回路として実現される。PS312は、さまざまな異なるプロセッサタイプのいずれかとして実現され得るか、またはそれを含み得る。たとえば、PS312は、個別のプロセッサ、たとえば、プログラムコードを実行することができる単一のコアとして実現され得る。別の例では、PS312は、マルチコアプロセッサとして実現され得る。さらに別の例では、PS312は、1つまたは複数のコア、モジュール、コプロセッサ、インターフェース、および/または他のリソースを含み得る。PS312は、さまざまな異なるタイプのアーキテクチャのいずれかを使用して実現され得る。PS312を実現するために使用され得る例示的なアーキテクチャは、ARMプロセッサアーキテクチャ、x86プロセッサアーキテクチャ、GPUアーキテクチャ、モバイルプロセッサアーキテクチャ、DSPアーキテクチャ、またはコンピュータ可読命令もしくはプログラムコードを実行することができる他の好適なアーキテクチャを含み得るが、それらに限定されない。
回路ブロック314〜322は、さまざまな異なるハードワイヤード回路ブロックのいずれかとして実現され得る。ハードワイヤード回路ブロック314〜322は、専用機能を実行するようにカスタマイズされ得る。回路ブロック314〜322の例は、入出力ブロック(IOB)、トランシーバ、または他の特化された回路ブロックを含むが、それらに限定されない。上述したように、回路ブロック314〜322は、ASICの例と見なすことができる。
図3の例は、単一のダイを含むデバイスにおいて実現され得るアーキテクチャを示す。DPEアレイ102は、デバイス100の全幅を占有するものとして示されているが、他の実施形態では、DPEアレイ102は、デバイス100の全幅未満を占有し、および/またはデバイス100の異なる領域に位置してもよい。さらに、含まれるDPE304の数は変わり得る。したがって、DPE304の特定の数の列および/または行は、図3に示すものとは異なり得る。
1つまたは複数の他の実施形態では、デバイス100などのデバイスは、デバイス100の異なる領域に位置する2つ以上のDPEアレイ102を含み得る。たとえば、追加のDPEアレイが、回路ブロック320および322の下に位置し得る。
上述したように、図2〜図3は、単一のダイを含むデバイスの例示的なアーキテクチャを示す。1つまたは複数の他の実施形態では、デバイス100は、1つまたは複数のDPEアレイ102を含むマルチダイデバイスとして実現され得る。
図4Aおよび図4B(集合的に「図4」と呼ばれる)は、デバイス100のマルチダイ実現例を示す。マルチダイデバイスは、単一のパッケージ内に2つ以上のダイを含むデバイスまたはICである。
図4Aは、デバイス100のトポグラフィ図を示す。図4Aの例では、デバイス100は、複数のダイを積層することによって形成される「積層ダイ」タイプのデバイスとして実現される。デバイス100は、インターポーザ402と、ダイ404と、ダイ406と、基板408とを含む。ダイ404および406の各々は、インターポーザ402の表面、たとえば、上面に取り付けられる。一態様では、ダイ404および406は、フリップチップ技術を使用してインターポーザ402に取り付けられる。インターポーザ402は、基板408の上面に取り付けられる。
図4Aの例では、インターポーザ402は、ダイ404および406が水平に積み重ねられる平面を有するダイである。図示されるように、ダイ404および406は、インターポーザ402の平面上に並んで配置される。図4Aのインターポーザ402に示されるダイの数は、限定ではなく例示のためのものである。他の実施形態では、3つ以上のダイがインターポーザ402に取り付けられてもよい。
インターポーザ402は、ダイ404および406の各々に対して共通の実装面および電気的結合を提供する。インターポーザ402の製造は、ワイヤを形成するようパターニングされる1つまたは複数の導電層の堆積を可能にする1つまたは複数のプロセスステップを含むことができる。これらの導電層は、アルミニウム、金、銅、ニッケル、さまざまなシリサイド、および/または他の好適な材料から形成されてもよい。インターポーザ402は、たとえば二酸化ケイ素などの1つもしくは複数の誘電体層または絶縁層の堆積を可能にする1つまたは複数の追加のプロセスステップを使用して製造され得る。インターポーザ402はまた、ビアおよび貫通ビア(TV)を含み得る。TVは、インターポーザ402およびその基板を実現するために使用される特定の材料に応じて、シリコン貫通ビア(TSV)、ガラス貫通ビア(TGV)、または他のビア構造とすることができる。インターポーザ402が受動ダイとして実現される場合、インターポーザ402は、さまざまなタイプのはんだバンプ、ビア、ワイヤ、TV、およびアンダーバンプメタライゼーション(UBM)のみを有し得る。能動ダイとして実現される場合、インターポーザ402は、P−N接合を含むトランジスタ、ダイオードなど電気的デバイスに関して1つまたは複数の能動デバイスを形成する追加のプロセス層を含み得る。
ダイ404および406の各々は、受動ダイまたは1つもしくは複数の能動デバイスを含む能動ダイとして実現され得る。たとえば、1つまたは複数のDPEアレイは、能動ダイとして実現される場合、ダイ404および/または406の一方または両方に実現され得る。1つまたは複数の実施形態では、ダイ404は、1つまたは複数のDPEアレイを含むことができ、ダイ406は、本明細書で記載される異なるサブシステムのいずれかを実現する。本明細書に提供される例は、例示の目的のためのものであり、限定することを意図していない。たとえば、デバイス100は、3つ以上のダイを含むことができ、それらのダイは、異なるタイプおよび/または機能のものである。
図4Bは、図4Aのデバイス100の側断面図である。図4Bは、切断線4B−4Bに沿って取られた、図4Aからのデバイス100の図を示す。ダイ404および406の各々は、はんだバンプ410を介してインターポーザ402の第1の平面に電気的および機械的に結合される。一例では、はんだバンプ410は、マイクロバンプとして実現される。さらに、ダイ404および406をインターポーザ402に取り付けるために、さまざまな他の技法のいずれかが使用され得る。たとえば、ダイ404および406をインターポーザ402に機械的および電気的に取付けるために、ボンドワイヤまたはエッジワイヤが使用されてもよい。別の例では、接着材料を使用してダイ404および406をインターポーザ402に機械的に取り付けることができる。図4Bに示されるように、はんだバンプ410を使用してダイ404および406をインターポーザ402に取り付けることは、例示の目的のために提供され、限定として意図されない。
インターポーザ402は、インターポーザ402内に破線または点線で示される1つまたは複数の導電層412を含む。導電層412は、前述のようなさまざまな金属層のいずれかを使用して実現される。導電層412は、インターポーザ402のワイヤ414を実現するパターニングされた金属層を形成するように処理される。少なくとも2つの異なるダイ、たとえばダイ404および406を結合する、インターポーザ402内に実現されるワイヤは、ダイ間ワイヤと呼ばれる。図4Bは、例示の目的のためにダイ間ワイヤと見なされるワイヤ414を示す。ワイヤ414は、ダイ404とダイ406との間でダイ間信号を渡す。たとえば、ワイヤ414の各々は、ダイ404の下のはんだバンプ410をダイ406の下のはんだバンプ410と結合し、それによってダイ404と406との間のダイ間信号の交換を可能にする。ワイヤ414は、データ線または電力線であり得る。電力線は、電圧電位を運ぶワイヤでも、接地電位または基準電圧電位を有するワイヤでもよい。
異なる導電層412は、ビア416を使用して結合され得る。一般に、ビア構造は、垂直導電経路(たとえば、デバイスのプロセス層に対して垂直な導電経路)を実現するために使用される。この点に関して、はんだバンプ410と接触するワイヤ414の垂直部分は、ビア416として実現される。インターポーザ402内に相互接続を実現するために複数の導電層を使用することにより、より多数の信号がルーティングされ、より複雑な信号のルーティングがインターポーザ402内で達成される。
はんだバンプ418を使用して、インターポーザ402の第2の平面を基板408に機械的および電気的に結合することができる。特定の実施形態では、はんだバンプ418は、controlled collapse chip connection(C4)ボールとして実現される。基板408は、異なるはんだバンプ418を基板408の下の1つまたは複数のノードに結合する導電性経路(図示せず)を含む。したがって、はんだバンプ418のうちの1つまたは複数は、インターポーザ402内の回路を、基板408内の回路または配線を介して、デバイス100の外部のノードに結合する。
TV420は、インターポーザ402を垂直に横断する、たとえば、インターポーザ402の全体ではない場合でも実質的な部分を通って延びる、電気的接続を形成するビアである。TV420は、ワイヤおよびビアのように、銅、アルミニウム、金、ニッケル、さまざまなシリサイド、および/または他の好適な材料を含むがこれらに限定されないさまざまな異なる導電材料のいずれから形成されてもよい。図示のように、TV420の各々は、インターポーザ402の底面からインターポーザ402の導電層412まで延びる。TV420はさらに、1つまたは複数のビア416と組み合わせて導電層412のうちの1つまたは複数を通してはんだバンプ410に結合され得る。
図5A、図5B、図5C、図5D、図5E、図5F、および図5G(集合的に「図5」と呼ばれる)は、デバイス100の例示的なマルチダイ実現例を示す。図5の例は、図4に関連して説明したように実現することができる。
図5Aを参照すると、ダイ404は1つまたは複数のDPEアレイ102を含み、ダイ406はPS312を実現する。
図5Bを参照すると、ダイ404は1つまたは複数のDPEアレイ102を含み、ダイ406はASIC504を実現する。ASIC504は、特定の動作または特化された動作を実行するのに適したさまざまな異なるカスタマイズされた回路のいずれかとして実現され得る。
図5Cを参照すると、ダイ404は1つ以上のDPEアレイ102を含み、ダイ406はPL310を実現する。
図5Dを参照すると、ダイ404は1つまたは複数のDPEアレイ102を含み、ダイ406はアナログおよび/または混合(アナログ/混合)信号回路508を実現する。アナログ/混合信号回路508は、1つまたは複数の無線受信機、無線送信機、増幅器、アナログ−デジタル変換器、デジタル−アナログ変換器、または他のアナログおよび/もしくはデジタル回路を含み得る。
図5E、図5F、および図5Gは、3つのダイ404,406,および510を有するデバイス100の例を示す。図5Eを参照すると、デバイス100は、ダイ404,406,および510を含む。ダイ404は、1つまたは複数のDPEアレイ102を含む。ダイ406はPL310を含む。ダイ510はASIC504を含む。
図5Fを参照すると、ダイ404は、1つまたは複数のDPEアレイ102を含む。ダイ406はPL310を含む。ダイ510は、アナログ/混合信号回路508を含む。
図5Gを参照すると、ダイ404は、1つまたは複数のDPEアレイ102を含む。ダイ406はASIC504を含む。ダイ510は、アナログ/混合信号回路508を含む。1つまたは複数の実施形態では、PS(たとえば、PS312)はASICの例である。
図5の例では、ダイ406および/または510の各々は、特定の種類のサブシステムを含むものとして示されている。他の実施形態では、ダイ404、406、および/または510は、1つまたは複数のサブシステムを1つまたは複数のDPEアレイ102と組み合わせて含むことができる。さらに、ダイ404、406、および/または510は、2つ以上の異なるタイプのサブシステムを含み得る。したがって、ダイ404、406、および/または510のうちの任意の1つまたは複数は、1つまたは複数のDPEアレイ102を、1つまたは複数のサブシステムと任意の組み合わせで含み得る。
1つまたは複数の実施形態では、インターポーザ402、ならびにダイ404、406、および/または510は、同じIC製造技術(たとえば、フィーチャサイズ)を使用して実現され得る。1つまたは複数の他の実施形態では、インターポーザ402は、特定のIC製造技術を使用して実現されてもよく、ダイ404、406、および/または510は、異なるIC製造技術を使用して実現される。さらに他の実施形態では、ダイ404、406、および/または510は、インターポーザ402を実現するために使用されるIC製造技術と同一でも異なっていてもよい異なるIC製造技術を使用して実現されてもよい。異なるダイおよび/またはインターポーザに異なるIC製造技術を使用することによって、より低コストおよび/またはより信頼できるIC製造技術が特定のダイに使用され得る一方で、より小さいフィーチャサイズを形成することができる他のIC製造技術が他のダイに使用され得る。たとえば、インタポーザ402を実現するために、より成熟した製造技術が使用されてもよく、能動ダイおよび/またはDPEアレイ102を含むダイを実現するために、より小さいフィーチャサイズを形成することができる他の技術が使用されてもよい。
図5の例は、インターポーザ上に搭載された2つ以上のダイを含むデバイス100のマルチダイ実現例を示す。示されるダイの数は、限定ではなく例示を目的としている。他の実施形態では、デバイス100は、インターポーザ402に搭載された3つより多いダイを含むことができる。
1つまたは複数の他の実施形態では、デバイス100のマルチダイバージョンは、図4の積層ダイアーキテクチャ以外のアーキテクチャを使用して実現され得る。たとえば、デバイス100は、マルチチップモジュール(MCM)として実現され得る。デバイス100のMCM実現例は、既存のチップパッケージを模倣するように意図されたフォームファクタおよび/またはフットプリントを有する回路基板に搭載された1つまたは複数の予めパッケージングされたICを使用して実現されてもよい。別の例では、デバイス100のMCM実現例は、高密度相互接続基板上に2つ以上のダイを集積することによって実現され得る。さらに別の例では、デバイス100のMCM実現例は、「チップスタック」パッケージとして実現され得る。
本明細書で記載されるようなDPEアレイを1つまたは複数の他のサブシステムと組み合わせて使用することは、シングルダイデバイスにおいて実現されようと、マルチダイデバイスにおいて実現されようと、面積使用および電力消費を低く保ちながら、デバイスの処理能力を増大させる。たとえば、1つまたは複数のDPEアレイを使用して、ハードウェアで特定の動作を加速し、および/または本明細書で説明するデバイスのサブシステムのうちの1つまたは複数からオフロードされる機能を実行することができる。たとえば、PSと共に使用される場合、DPEアレイはハードウェアアクセラレータとして使用され得る。PSは、DPEアレイまたはその一部によって実行される動作をオフロードすることができる。他の例では、DPEアレイは、アナログ/混合信号回路に与えられるべきデジタルプリディストーションを生成するなど、計算的にリソース集約的な動作を実行するために使用され得る。
図1、図2、図3、図4および/または図5に関連して本明細書で記載されるDPEアレイおよび/または他のサブシステムのさまざまな組み合わせのいずれかが、シングルダイタイプのデバイスまたはマルチダイタイプのデバイスのいずれかで実現され得ることを理解されたい。
本明細書で説明するさまざまな例では、SoCインターフェースブロックは、DPEアレイ内に実現される。1つまたは複数の他の実施形態では、SoCインターフェースブロックは、DPEアレイの外部で実現され得る。たとえば、SoCインターフェースブロックは、複数のDPEを実現する回路ブロックとは別個の、たとえばスタンドアロン回路ブロックなどの、回路ブロックとして実現され得る。
図6は、DPEアレイ102のDPE304の例示的なアーキテクチャを示す。図6の例では、DPE304は、コア602と、メモリモジュール604と、DPE相互接続606とを含む。
コア602は、DPE304のデータ処理能力を提供する。コア602は、さまざまな異なる処理回路のいずれかとして実現され得る。図6の例では、コア602は、任意選択のプログラムメモリ608を含む。1つまたは複数の実施形態では、コア602は、プログラムコード、たとえば、コンピュータ可読命令を実行することができるプロセッサとして実現される。その場合、プログラムメモリ608が含まれ、コア602によって実行される命令を格納することができる。コア602は、たとえば、命令を実行することができるCPU、GPU、DSP、ベクトルプロセッサ、または他のタイプのプロセッサとして実現され得る。コアは、本明細書で説明するさまざまなCPUおよび/またはプロセッサアーキテクチャのいずれかを使用して実現され得る。別の例では、コア602は、非常に長い命令ワード(VLIW)ベクトルプロセッサまたはDSPとして実現される。
特定の実施形態では、プログラムメモリ608は、コア602にプライベートである専用のプログラムメモリとして実現される。プログラムメモリ608は、同じDPE304のコアによってのみ使用されてもよい。したがって、プログラムメモリ608は、コア602によってのみアクセスされてもよく、任意の他のDPEまたは別のDPEのコンポーネントと共有されない。プログラムメモリ608は、読み出し動作および書き込み動作のための単一のポートを含み得る。プログラムメモリ608は、プログラム圧縮をサポートすることができ、以下でより詳細に記載されるDPE相互接続606のメモリマッピングされたネットワーク部分を使用してアドレス指定可能である。たとえば、DPE相互接続606のメモリマッピングされたネットワークを介して、プログラムメモリ608は、コア602によって実行され得るプログラムコードをロードされてもよい。
1つまたは複数の実施形態では、プログラムメモリ608は、1つまたは複数の誤り検出および/または誤り訂正機構をサポートすることができる。たとえば、プログラムメモリ608は、パリティビットを追加することによってパリティチェックをサポートするように実現され得る。別の例では、プログラムメモリ608は、さまざまなタイプのデータ破損を検出し、訂正することができる誤り訂正符号(ECC)メモリとすることができる。別の例では、プログラムメモリ608は、ECCおよびパリティチェックの両方をサポートすることができる。本明細書で記載される異なるタイプの誤り検出および/または誤り訂正は、例示を目的として提供され、記載される実施形態を限定することを意図されない。他の誤り検出および/または誤り訂正技術を、列挙したもの以外のプログラムメモリ608と共に使用することができる。
1つまたは複数の実施形態では、コア602は、アプリケーション固有の命令セットをサポートするためのカスタマイズされたアーキテクチャを有し得る。たとえば、コア602は、ワイヤレスアプリケーションのためにカスタマイズされ、ワイヤレス固有の命令を実行するように構成され得る。別の例では、コア602は、機械学習のためにカスタマイズされ、機械学習固有の命令を実行するように構成されてもよい。
1つまたは複数の他の実施形態では、コア602は、特定の動作(単数または複数)を実行することに対して専用であるハードウェア化知的財産(IP)コアなどのハードワイヤード回路として実現される。この場合、コア602は、プログラムコードを実行しなくてもよい。コア602がプログラムコードを実行しない実施形態では、プログラムメモリ608は省略されてもよい。例示的かつ非限定的な例として、コア602は、ハードウェア化順方向誤り訂正(FEC)エンジンまたは他の回路ブロックとして実現され得る。
コア602は、構成レジスタ624を含み得る。構成レジスタ624は、コア602の動作を制御するために構成データをロードすることができる。1つまたは複数の実施形態では、コア602は、構成レジスタ624にロードされた構成データに基づいて、活性化および/または非活性化され得る。図6の例では、構成レジスタ624は、以下でより詳細に記載されるDPE相互接続606のメモリマッピングされたネットワークを介してアドレス指定可能である(たとえば、読み出しおよび/または書き込みを行うことができる)。
1つまたは複数の実施形態では、メモリモジュール604は、コア602によって使用されるデータ、および/またはコア602によって生成されるデータを格納することができる。たとえば、メモリモジュール604は、アプリケーションデータを格納することができる。メモリモジュール604は、ランダムアクセスメモリなどの読み出し/書き込みメモリを含み得る。したがって、メモリモジュール604は、コア602によって読み出され、消費され得るデータを格納することが可能である。メモリモジュール604はまた、コア602によって書き込まれるデータ(たとえば結果)を格納することができる。
1つまたは複数の他の実施形態では、メモリモジュール604は、DPEアレイ内の他のDPEの1つまたは複数の他のコアによって使用および/または生成され得る、たとえばアプリケーションデータなどのデータを格納することが可能である。DPEの1つまたは複数の他のコアは、メモリモジュール604から読み出し、および/またはメモリモジュール604に書き込むこともできる。特定の実施形態では、メモリモジュール604から読み出しおよび/またはメモリモジュール604に書き込むことができる他のコアは、1つまたは複数の近傍のDPEのコアとすることができる。境界線または境界をDPE304と共有する(たとえば、隣接する)別のDPEは、DPE304に対する「近傍の」DPEと言われる。コア602および近傍のDPEからの1つまたは複数の他のコアの、メモリモジュール604の読み出しおよび/または書き込みを可能にすることによって、メモリモジュール604は、メモリモジュール604にアクセスすることができる異なるDPEおよび/またはコア間の通信をサポートする共有メモリを実現する。
図3を参照すると、たとえば、DPE304−14、304−16、304−5、および304−25は、DPE304−15の近傍のDPEと考えられる。一例では、DPE304−16、304−5、および304−25の各々内のコアは、DPE304−15内のメモリモジュールに読み出しおよび書き込みが可能である。特定の実施形態では、メモリモジュールに隣接する近傍のDPEのみが、DPE304−15のメモリモジュールにアクセスすることができる。たとえば、DPE304−14は、DPE304−15に隣接するが、DPE304−15のメモリモジュールには隣接しない場合があり、なぜならば、DPE304−15のコアは、DPE304−14のコアとDPE304−15のメモリモジュールとの間に位置し得るからである。したがって、特定の実施形態では、DPE304−14のコアは、DPE304−15のメモリモジュールにアクセスしない場合がある。
特定の実施形態では、あるDPEのコアが別のDPEのメモリモジュールにアクセスすることができるかどうかは、メモリモジュールに含まれるメモリインターフェースの数、およびそのようなコアがメモリモジュールのメモリインターフェースのうちの利用可能なものに接続されるかどうかに依存する。上記の例では、DPE304−15のメモリモジュールは、4つのメモリインターフェースを含み、DPE304−16、304−5、および304−25の各々のコアは、そのようなメモリインターフェースに接続される。DPE304−15自体内のコア602は、第4のメモリインターフェースに接続される。各メモリインターフェースは、1つまたは複数の読み出しおよび/または書き込みチャネルを含み得る。特定の実施形態では、各メモリインターフェースは、複数の読み出しチャネルおよび複数の書き込みチャネルを含み、それに取り付けられた特定のコアは、メモリモジュール604内の複数のバンクに同時に読み出しおよび/または書き込みが可能である。
他の例では、4つより多いメモリインターフェースが利用可能であり得る。そのような他のメモリインターフェースは、DPE304−15の対角線上のDPEがDPE304−15のメモリモジュールにアクセスすることを可能にするために使用され得る。たとえば、DPE304−14、304−24、304−26、304−4、および/または304−6などのDPE内のコアも、DPE304−15内のメモリモジュールの利用可能なメモリインターフェースに結合される場合、そのような他のDPEも、DPE304−15のメモリモジュールにアクセスすることができる。
メモリモジュール604は、構成レジスタ636を含み得る。構成レジスタ636は、メモリモジュール604の動作を制御するために構成データをロードすることができる。図6の例では、構成レジスタ636(および624)は、以下でより詳細に記載されるDPE相互接続606のメモリマッピングされたネットワークを介してアドレス指定可能である(たとえば、読み出しおよび/または書き込みを行うことができる)。
図6の例では、DPE相互接続606は、DPE304に特化している。DPE相互接続606は、DPE304とDPEアレイ102の1つまたは複数の他のDPEとの間の通信および/またはデバイス100の他のサブシステムとの通信を含むさまざまな動作を容易にする。DPE相互接続606はさらに、DPE304の構成、制御、およびデバッグを可能にする。
特定の実施形態では、DPE相互接続606は、オンチップ相互接続として実現される。オンチップ相互接続の例は、Advanced Microcontroller Bus Architecture(AM BA)拡張可能インターフェース(AXI)バス(たとえば、またはスイッチ)である。AMBA AXIバスは、回路ブロックおよび/またはシステム間のオンチップ接続を確立する際に使用するための内蔵マイクロコントローラバスインターフェースである。AXIバスは、本明細書では、本開示内で記載される本発明の構成と共に使用され得る相互接続回路の例として提供され、したがって、限定として意図されない。相互接続回路の他の例は、他のタイプのバス、クロスバー、および/または他のタイプのスイッチを含み得る。
1つまたは複数の実施形態では、DPE相互接続606は、2つの異なるネットワークを含む。第1のネットワークは、DPEアレイ102の他のDPEおよび/またはデバイス100の他のサブシステムとデータを交換することができる。たとえば、第1のネットワークは、アプリケーションデータを交換することができる。第2のネットワークは、DPEの構成、制御、および/またはデバッグデータなどのデータを交換することができる。
図6の例では、DPE相互接続606の第1のネットワークは、ストリームスイッチ626および1つまたは複数のストリームインターフェースで形成される。図示するように、ストリームスイッチ626は、複数のストリームインターフェース(図6では「SI」と略称する)を含む。1つまたは複数の実施形態では、各ストリームインターフェースは、1つもしくは複数のマスタ(たとえば、マスタインターフェースまたは出力)および/または1つもしくは複数のスレーブ(たとえば、スレーブインターフェースまたは入力)を含み得る。各マスタは、特定のビット幅を有する独立した出力とすることができる。たとえば、ストリームインターフェースに含まれる各マスタは、独立したAXIマスタであってもよい。各スレーブは、特定のビット幅を有する独立した入力とすることができる。たとえば、ストリームインターフェースに含まれる各スレーブは、独立したAXIスレーブであってもよい。
ストリームインターフェース610〜616は、DPEアレイ102内の他のDPEおよび/またはSoCインターフェースブロック104と通信するために使用される。たとえば、ストリームインターフェース610,612,614,および616の各々は、異なる基本四方位方向に通信することができる。図6の例では、ストリームインターフェース610は、左(西)のDPEと通信する。ストリームインターフェース612は、上(北)のDPEと通信する。ストリームインターフェース614は、右(東)のDPEと通信する。ストリームインターフェース616は、下(南)のDPEまたはSoCインターフェースブロック104と通信する。
ストリームインターフェース628は、コア602と通信するために使用される。コア602は、たとえば、ストリームインターフェース628に接続するストリームインターフェース638を含み、それによって、コア602がDPE相互接続606を介して他のDPE304と直接通信することを可能にする。たとえば、コア602は、コア602がストリームインターフェース638を介して直接データを送信および/または受信することを可能にする命令またはハードワイヤード回路を含み得る。ストリームインターフェース638は、ブロッキングまたは非ブロッキングであり得る。1つまたは複数の実施形態において、コア602が空のストリームから読み出しを試みる場合、または満杯のストリームに書き込みを試みる場合、コア602はストールしてもよい。他の実施形態では、空のストリームから読み出そうとするかまたは満杯のストリームに書き込もうとすることは、コア602をストールさせなくてもよい。むしろ、コア602は、実行または動作を継続してもよい。
ストリームインターフェース630は、メモリモジュール604と通信するために使用される。メモリモジュール604は、たとえば、ストリームインターフェース630に接続し、それによって他のDPE304がDPE相互接続606を介してメモリモジュール604と通信することを可能にするストリームインターフェース640を含む。ストリームスイッチ626は、非近傍のDPEおよび/またはメモリモジュール604のメモリインターフェースに結合されていないDPEが、DPEアレイ102のそれぞれのDPE304のDPE相互接続によって形成されるDPE相互接続ネットワークを介して、コア602および/またはメモリモジュール604と通信することを可能にすることができる。
再び図3を参照すると、DPE304−15を基準点として使用すると、ストリームインターフェース610は、DPE304−14のDPE相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース612は、DPE304−25のDPE相互接続内に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース614は、DPE304−16のDPE相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。ストリームインターフェース616は、DPE304−5のDPE相互接続に位置する別のストリームインターフェースに結合され、それと通信することができる。したがって、コア602および/またはメモリモジュール604は、DPE内のDPE相互接続を介してDPEアレイ102内の任意のDPEと通信することもできる。
ストリームスイッチ626は、PL310および/またはNoC308などのサブシステムにインターフェースするためにも使用され得る。一般に、ストリームスイッチ626は、回路交換ストリーム相互接続またはパケット交換ストリーム相互接続として動作するようにプログラムされ得る。回路交換ストリーム相互接続は、DPE間の高帯域幅通信に適したポイントツーポイント専用ストリームを実現することができる。パケット交換ストリーム相互接続は、ストリームを共有して、複数のロジックストリームを、中帯域幅通信のために1つの物理ストリーム上に時間多重化することを可能にする。
ストリームスイッチ626は、構成レジスタ(図6では「CR」と略称される)634を含み得る。構成データは、DPE相互接続606のメモリマッピングされたネットワークを介して構成レジスタ634に書き込まれ得る。構成レジスタ634にロードされた構成データは、DPE304がどの他のDPEおよび/またはサブシステム(たとえば、NoC308、PL310、および/またはPS312)と通信するか、ならびにそのような通信が回路交換ポイントツーポイント接続として確立されるのか、またはパケット交換接続として確立されるのかを決定する。
図6に示されるストリームインターフェースの数は、限定ではなく例示のためのものであることを理解されたい。他の実施形態では、ストリームスイッチ626は、より少ないストリームインターフェースを含み得る。特定の実施形態では、ストリームスイッチ626は、デバイス内の他のコンポーネントおよび/またはサブシステムへの接続を容易にする、より多くのストリームインターフェースを含み得る。たとえば、追加のストリームインターフェースは、DPE304−24、304−26、304−4、および/または304−6などの他の非近傍のDPEに結合することができる。1つまたは複数の他の実施形態では、DPE304−15などのDPEを、1つまたは複数のDPE分離れて位置する他のDPEに結合するように、ストリームインターフェースを含むことができる。たとえば、DPE304−15がDPE304−13、DPE304−16、または他の非近傍のDPE内のストリームインターフェースに直接結合することを可能にする1つまたは複数のストリームインターフェースが含まれ得る。
DPE相互接続606の第2のネットワークは、メモリマッピングされたスイッチ632で形成される。メモリマッピングされたスイッチ632は、複数のメモリマッピングされたインターフェース(図6では「MMI」と略称する)を含む。1つまたは複数の実施形態では、各メモリマッピングされたインターフェースは、1つもしくは複数のマスタ(たとえば、マスタインターフェースもしくは出力)および/または1つもしくは複数のスレーブ(たとえば、スレーブインターフェースもしくは入力)を含み得る。各マスタは、特定のビット幅を有する独立した出力とすることができる。たとえば、メモリマッピングされたインターフェースに含まれる各マスタは、独立したAXIマスタであってもよい。各スレーブは、特定のビット幅を有する独立した入力とすることができる。たとえば、メモリマッピングされたインターフェースに含まれる各スレーブは、独立したAXIスレーブであってもよい。
図6の例では、メモリマッピングされたスイッチ632は、メモリマッピングされたインターフェース620,622,642,644,および646を含む。メモリマッピングされたスイッチ632は、追加の、またはより少ないメモリマッピングされたインターフェースを含み得ることを理解されたい。たとえば、メモリマッピングされたスイッチ632を使用して読み出しおよび/または書き込みされ得るDPEの各コンポーネントについて、メモリマッピングされたスイッチ632は、そのようなコンポーネントに結合されるメモリマッピングされたインターフェースを含み得る。さらに、メモリアドレスの読み出しおよび/または書き込みを容易にするために、コンポーネント自体が、メモリマッピングされたスイッチ632内の対応するメモリマッピングされたインターフェースに結合されるメモリマッピングされたインターフェースを含んでもよい。
メモリマッピングされたインターフェース620および622は、DPE304のための構成、制御、およびデバッグデータを交換するために使用され得る。図6の例では、メモリマッピングされたインターフェース620は、DPE304を構成するために使用される構成データを受信することができる。メモリマッピングされたインターフェース620は、DPE304の下に位置するDPEから、および/またはSoCインターフェースブロック104から、構成データを受信することができる。メモリマッピングされたインターフェース622は、メモリマッピングされたインターフェース620によって受信された構成データを、DPE304より上の1つまたは複数の他のDPE、コア602(たとえばプログラムメモリ608および/または構成レジスタ624)、メモリモジュール604(たとえばメモリモジュール604内のメモリおよび/または構成レジスタ636)、および/またはストリームスイッチ626内の構成レジスタ634に転送することができる。
特定の実施形態では、メモリマッピングされたインターフェース620は、本明細書において記載されるように、下のDPEまたはSoCインターフェースブロック104のタイルと通信する。メモリマッピングされたインターフェース622は、上のDPEと通信する。再び図3を参照して、DPE304−15を基準点として使用すると、メモリマッピングされたインターフェース620は、DPE304−5のDPE相互接続に位置する別のメモリマッピングされたインターフェースに結合され、それと通信することができる。メモリマッピングされたインターフェース622は、DPE304−25のDPE相互接続に位置する別のメモリマッピングされたインターフェースに結合され、それと通信することができる。1つまたは複数の実施形態では、メモリマッピングされたスイッチ632は、南から北へ制御および/またはデバッグデータを伝達する。他の実施形態では、メモリマッピングされたスイッチ632は、北から南へデータを渡すこともできる。
メモリマッピングされたインターフェース646は、構成レジスタ636および/またはメモリモジュール604内のメモリの読み出しおよび/または書き込みを容易にするよう、メモリモジュール604内のメモリマッピングされたインターフェース(図示せず)に結合されることができる。メモリマッピングされたインターフェース644は、プログラムメモリ608および/または構成レジスタ624の読み出しおよび/または書き込みを容易にするよう、コア602内のメモリマッピングされたインターフェース(図示せず)に結合されることができる。メモリマッピングされたインターフェース642は、構成レジスタ634に読み出しおよび/または書き込みするために構成レジスタ634に結合されることができる。
図6の例では、メモリマッピングされたスイッチ632は、上(たとえば北)および下(たとえば南)の回路と通信することができる。1つまたは複数の他の実施形態では、メモリマッピングされたスイッチ632は、左および/または右のDPEのメモリマッピングされたスイッチのメモリマッピングされたインターフェースに結合される追加のメモリマッピングされたインターフェースを含む。DPE304−15を基準点として使用すると、そのような追加のメモリマッピングされたインターフェースは、DPE304−14および/またはDPE304−16に位置するメモリマッピングされたスイッチに接続することができ、それによって、水平方向ならびに垂直方向におけるDPE間の構成、制御、およびデバッグデータの通信を容易にする。
他の実施形態では、メモリマッピングされたスイッチ632は、DPE304に対して対角であるDPE内のメモリマッピングされたスイッチに接続される追加のメモリマッピングされたインターフェースを含み得る。たとえば、DPE304−15を基準点として使用すると、そのような追加のメモリマッピングされたインターフェースは、DPE304−24、304−26、304−4、および/または304−6に位置するメモリマッピングされたスイッチに結合され、それによって、構成、制御、およびデバッグ情報をDPE間で対角線状に通信することを容易にすることができる。
DPE相互接続606は、DPE304の位置に応じて、各近傍のDPEのDPE相互接続および/またはSoCインターフェースブロック104に結合される。まとめると、DPE304のDPE相互接続は、DPE相互接続ネットワーク(これは、ストリームネットワークおよび/またはメモリマッピングされたネットワークを含み得る)を形成する。各DPEのストリームスイッチの構成レジスタは、メモリマッピングされたスイッチを通して構成データをロードすることによってプログラムされ得る。構成を通じて、ストリームスイッチおよび/またはストリームインターフェースは、パケット交換または回路交換のいずれでも、接続を、1つもしくは複数の他のDPE304および/またはSoCインターフェースブロック104のいずれにおける他のエンドポイントと確立するようにプログラムされる。
1つまたは複数の実施形態では、DPEアレイ102は、PS312などのプロセッサシステムのアドレス空間にマッピングされる。したがって、DPE304内のどの構成レジスタおよび/またはメモリでも、メモリマッピングされたインターフェースを介してアクセスされ得る。たとえば、メモリモジュール604内のメモリ、プログラムメモリ608、コア602内の構成レジスタ624、メモリモジュール604内の構成レジスタ636、および/または構成レジスタ634は、メモリマッピングされたスイッチ632を介して読み出しおよび/または書き込みすることができる。
図6の例では、メモリマッピングされたインターフェースは、DPE304のために構成データを受信することができる。構成データは、プログラムメモリ608(含まれる場合)にロードされるプログラムコード、構成レジスタ624、634、および/もしくは636にロードするための構成データ、ならびに/またはメモリモジュール604のメモリ(たとえばメモリバンク)にロードされるべきデータを含み得る。図6の例では、構成レジスタ624,634,および636は、それら構成レジスタが制御するように意図される特定の回路構造、たとえばコア602、ストリームスイッチ626、およびメモリモジュール604内に位置するものとして示されている。図6の例は、例示のみを目的としており、コア602、メモリモジュール604、および/またはストリームスイッチ626内の要素が、対応する構成レジスタに構成データをロードすることによってプログラムされ得ることを示している。他の実施形態では、構成レジスタは、DPE304全体にわたって分散されるコンポーネントの動作を制御するにもかかわらず、DPE304の特定の領域内に統合され得る。
したがって、ストリームスイッチ626は、構成データを構成レジスタ634にロードすることによってプログラムされ得る。構成データは、2つの異なるDPEおよび/もしくは他のサブシステム間の回路交換ストリームインターフェースとして、または選択されたDPEおよび/もしくは他のサブシステムに結合されるパケット交換ストリームインターフェースとして動作するように、ストリームスイッチ626ならびに/またはストリームインターフェース610〜616および/もしくは628〜630をプログラミングする。したがって、ストリームスイッチ626によって他のストリームインターフェースに対して確立される接続は、DPE304内に、他のDPEと、および/またはデバイス100の他のサブシステムと、実際の接続またはアプリケーションデータ経路を確立するよう、好適な構成データを構成レジスタ634にロードすることによって、プログラムされる。
図7は、複数のDPE304間の接続性の例を示す。図7の例では、DPE304−14、304−15、304−24、および304−25の各々を実現するために、図6に示されたアーキテクチャが使用される。図7は、ストリームインターフェースが近傍のDPE間で(各側部および上下において)相互接続され、メモリマッピングされたインターフェースが上下のDPEに接続される実施形態を示す。説明のため、ストリームスイッチおよびメモリマッピングされたスイッチは示されていない。
注記されるように、他の実施形態では、DPEを、図示されるように垂直方向、および水平方向に結合するよう、追加のメモリマッピングされたインターフェースを含むことができる。さらに、メモリマッピングされたインターフェースは、垂直方向および/または水平方向の双方向通信をサポートすることができる。
メモリマッピングされたインターフェース620および622は、トランザクションがメモリマッピングされたスイッチからメモリマッピングされたスイッチに伝搬する、共有されたトランザクション交換ネットワークを実現することが可能である。メモリマッピングされたスイッチの各々は、たとえば、アドレスに基づいてトランザクションを動的にルーティングすることができる。トランザクションは、任意の所与のメモリマッピングされたスイッチにおいてストールされ得る。メモリマッピングされたインターフェース620および622は、デバイス100の他のサブシステムがDPE304のリソース(たとえばコンポーネント)にアクセスすることを可能にする。
特定の実施形態では、デバイス100のサブシステムは、メモリマッピングされたインターフェース620および/または622を介してDPEの任意のレジスタおよび/またはメモリ要素の内部状態を読み出すことができる。メモリマッピングされたインターフェース620および/または622を介して、デバイス100のサブシステムは、プログラムメモリ608およびDPE304内の任意の構成レジスタに読み出しおよび/または書き込むことができる。
ストリームインターフェース610〜616(たとえばストリームスイッチ626)は、ソースから宛先への保証された固定された待ち時間で決定論的スループットを与えることができる。1つまたは複数の実施形態では、ストリームインターフェース610および614は、4つの32ビットストリームを受信し、4つの32ビットストリームを出力することができる。1つまたは複数の実施形態では、ストリームインターフェース614は、4つの32ビットストリームを受信し、6つの32ビットストリームを出力することができる。特定の実施形態では、ストリームインターフェース616は、4つの32ビットストリームを受信し、4つの32ビットストリームを出力することができる。各ストリームインターフェースのストリームの数およびストリームのサイズは、例示の目的のために与えられるものであり、限定として意図されない。
図8は、図6の例示的なアーキテクチャのさらなる態様を例示する。図8の例では、DPE相互接続606に関する詳細は示されていない。図8は、共有メモリを介した他のDPEとのコア602の接続性を示す。図8は、メモリモジュール604の追加の態様も示す。説明のため、図8はDPE304−15に言及する。
図示されるように、メモリモジュール604は、複数のメモリインターフェース802,804,806,および808を含む。図8において、メモリインターフェース802および808は「MI」と略称される。メモリモジュール604は、さらに、複数のメモリバンク812−1〜812−Nを含む。特定の実施形態では、メモリモジュール604は、8つのメモリバンクを含む。他の実施形態では、メモリモジュール604は、より少ないまたはより多いメモリバンク812を含み得る。1つまたは複数の実施形態では、各メモリバンク812はシングルポートであり、それによって、各クロックサイクルごとに各メモリバンクに最大1つのアクセスを可能にする。メモリモジュール604が8つのメモリバンク812を含む場合、このような構成は、各クロックサイクルごとに8つの並列アクセスをサポートする。他の実施形態では、各メモリバンク812は、デュアルポートまたはマルチポートであり、それによって、各クロックサイクルごとに、より多くの並列アクセスを可能にする。
1つまたは複数の実施形態では、メモリモジュール604は、1つもしくは複数の誤り検出および/または誤り訂正機構をサポートすることができる。たとえば、メモリバンク812は、パリティビットを追加することによってパリティチェックをサポートするように実現され得る。別の例では、メモリバンク812は、さまざまなタイプのデータ破損を検出し訂正することができるECCメモリとすることができる。別の例では、メモリバンク812は、ECCおよびパリティチェックの両方をサポートすることができる。本明細書で記載される異なるタイプの誤り検出および/または誤り訂正は、例示を目的として与えられるものであり、記載される実施形態を限定することを意図されない。他の誤り検出および/または誤り訂正技術を、列挙したもの以外のメモリモジュール604と共に使用してもよい。
1つまたは複数の他の実施形態では、誤り検出および/または誤り訂正機構は、メモリバンク812ごとに実現され得る。たとえば、メモリバンク812のうちの1つまたは複数はパリティチェックを含み得、メモリバンク812のうちの1つまたは複数の他のものはECCメモリとして実現され得る。さらに、メモリバンク812のうちの他のものは、ECCおよびパリティチェックの両方をサポートし得る。したがって、誤り検出および/または誤り訂正の異なる組み合わせが、異なるメモリバンク812および/またはメモリバンク812の組み合わせによってサポートされ得る。
図8の例では、メモリバンク812−1〜812−Nの各々は、それぞれアービタ814−1〜814−Nを有する。アービタ814の各々は、競合を検出することに応答してストール信号を生成することが可能である。各アービタ814は、調停ロジックを含むことができる。さらに、各アービタ814はクロスバーを含むことができる。したがって、いずれのマスタも、メモリバンク812のうちの任意の特定の1つまたは複数に書き込むことができる。図6に関連して述べたように、メモリモジュール604は、メモリマッピングされたスイッチ632のメモリマッピングされたインターフェース646と通信するメモリマッピングされたインターフェース(図示せず)を含むことができる。メモリモジュール604内のメモリマッピングされたインターフェースは、メモリバンク812に読み出しおよび/または書き込みするために、DMAエンジン816、メモリインターフェース802,804,806および808、ならびにアービタ814を結合するメモリモジュール604内の通信ラインに接続され得る。
メモリモジュール604は、さらに、ダイレクトメモリアクセス(DMA)エンジン816を含む。1つまたは複数の実施形態では、DMAエンジン816は、少なくとも2つのインターフェースを含む。たとえば、1つまたは複数のインターフェースは、DPE相互接続606から入力データストリームを受信し、受信したデータをメモリバンク812に書き込むことができる。1つまたは複数の他のインターフェースは、メモリバンク812からデータを読み出し、そのデータをDPE相互接続606のストリームインターフェースを介して送信することができる。たとえば、DMAエンジン816は、図6のストリームインターフェース640を含み得る。
メモリモジュール604は、複数の異なるDPEによってアクセスされ得る共有メモリとして動作することが可能である。図8の例では、メモリインターフェース802は、コア602に含まれるコアインターフェース828を介してコア602に結合される。メモリインターフェース802は、アービタ814を介するメモリバンク812へのアクセスをコア602に提供する。メモリインターフェース804は、DPE304−25のコアに結合される。メモリインターフェース804は、DPE304−25のコアにメモリバンク812へのアクセスを提供する。メモリインターフェース806は、DPE304−16のコアに結合される。メモリインターフェース806は、DPE304−16のコアにメモリバンク812へのアクセスを提供する。メモリインターフェース808は、DPE304−5のコアに結合される。メモリインターフェース808は、DPE304−5のコアにメモリバンク812へのアクセスを提供する。したがって、図8の例では、DPE304−15のメモリモジュール604と共有境界を有する各DPEは、メモリバンク812に読み書き可能である。図8の例では、DPE304−14のコアは、DPE304−15のメモリモジュール604への直接アクセスを有さない。
メモリマッピングされたスイッチ632は、メモリバンク812にデータを書き込むことができる。たとえば、メモリマッピングされたスイッチ632は、メモリモジュール604に位置し、次いでアービタ814に結合されるメモリマッピングされたインターフェース(図示せず)に結合されてもよい。したがって、メモリモジュール604に格納された特定のデータは、構成、制御、および/またはデバッグプロセスの一部として制御、たとえば、書き込みされてもよい。
コア602は、コアインターフェース830,832,および834を介して他の近傍のDPEのメモリモジュールにアクセスすることができる。図8の例では、コアインターフェース834は、DPE304−25のメモリインターフェースに結合される。したがって、コア602は、コアインターフェース834およびDPE304−25のメモリモジュール内に含まれるメモリインターフェースを介してDPE304−25のメモリモジュールにアクセスすることができる。コアインターフェース832は、DPE304−14のメモリインターフェースに結合される。したがって、コア602は、コアインターフェース832およびDPE304−14のメモリモジュール内に含まれるメモリインターフェースを介してDPE304−14のメモリモジュールにアクセスすることができる。コアインターフェース830は、DPE304−5内のメモリインターフェースに結合される。したがって、コア602は、コアインターフェース830およびDPE304−5のメモリモジュール内に含まれるメモリインターフェースを介してDPE304−5のメモリモジュールにアクセスすることができる。上述したように、コア602は、コアインターフェース828およびメモリインターフェース802を介してDPE304−15内のメモリモジュール604にアクセスすることができる。
図8の例では、コア602は、DPE304−15におけるコア602と境界を共有するDPE(たとえばDPE304−25、304−14、および304−5)のメモリモジュールのいずれかに読み書きすることができる。1つまたは複数の実施形態では、コア602は、DPE304−25、304−15、304−14、および304−5内のメモリモジュールを単一の連続メモリとして見ることができる。コア602は、この連続メモリモデルを仮定して、読み出しおよび書き込みのためのアドレスを生成することが可能である。コア602は、生成されたアドレスに基づいて、読み出しおよび/または書き込み要求を適切なコアインターフェース828、830、832、および/または834に方向付けることができる。
1つまたは複数の他の実施形態では、メモリモジュール604は、他のDPEに結合され得る追加のメモリインターフェースを含む。たとえば、メモリモジュール604は、DPE304−24、304−26、304−4、および/または304−5のコアに結合されるメモリインターフェースを含み得る。1つまたは複数の他の実施形態では、メモリモジュール604は、近傍のDPEでないDPEのコアに接続するために使用される1つまたは複数のメモリインターフェースを含み得る。たとえば、そのような追加のメモリインターフェースは、同じ行、同じ列、または対角線方向に1つまたは複数の他のDPEによってDPE304−15から分離されたDPEのコアに接続され得る。したがって、図8に示されるような、メモリモジュール604内のメモリインターフェースの数、およびそのようなメモリインターフェースが接続される特定のDPEは、限定ではなく例示のためのものである。
上述したように、コア602は、読み出し動作および/または書き込み動作を、そのような動作のアドレスに基づいて、コアインターフェース828、830、832、および/または834を介して正しい方向にマッピングすることができる。コア602がメモリアクセスのためのアドレスを生成するとき、コア602は、アドレスを復号して方向(たとえば、アクセスされるべき特定のDPE)を決定することが可能であり、その決定された方向において正しいコアインターフェースにメモリ動作を転送する。
したがって、コア602は、DPE304−25内のメモリモジュールおよび/またはDPE304−15のメモリモジュール604であり得る共有メモリを介して、DPE304−25のコアと通信することができる。コア602は、DPE304−14内のメモリモジュールである共有メモリを介してDPE304−14のコアと通信することができる。コア602は、DPE304−5内のメモリモジュールおよび/またはDPE304−15のメモリモジュール604であり得る共有メモリを介して、DPE304−5のコアと通信することができる。さらに、コア602は、DPE304−15内のメモリモジュール604である共有メモリを介してDPE304−16のコアと通信することができる。
論じられたように、DMAエンジン816は、1つまたは複数のストリーム−メモリインターフェース(たとえばストリームインターフェース640)を含み得る。DMAエンジン816を介して、アプリケーションデータをデバイス100内の他のソースから受信し、メモリモジュール604に格納することができる。たとえば、データは、DPE304−15と境界を共有する、および/または共有しない他のDPEから、ストリームスイッチ626によって受信され得る。データはまた、デバイス100の他のサブシステム(たとえば、NoC308、ハードワイヤード回路ブロック、PL310、および/またはPS312)から、SoCインターフェースブロック104によって、DPEのストリームスイッチを介して受信され得る。DMAエンジン816は、ストリームスイッチからそのようなデータを受信し、メモリモジュール604内の適切な1つまたは複数のメモリバンク812にデータを書き込むことができる。
DMAエンジン816は、1つまたは複数のメモリ−ストリームインターフェース(たとえば、ストリームインターフェース630)を含み得る。DMAエンジン816を通して、データは、メモリモジュール604の1つまたは複数のメモリバンク812から読み出され、ストリームインターフェースを介して他の宛先に送信され得る。たとえば、DMAエンジン816は、メモリモジュール604からデータを読み出し、そのようなデータを、ストリームスイッチによって、DPE304−15と境界を共有する、および/または共有しない他のDPEに送信することが可能である。DMAエンジン816はまた、ストリームスイッチおよびSoCインターフェースブロック104を介して、そのようなデータを他のサブシステム(たとえば、NoC308、ハードワイヤード回路ブロックPL310、および/またはPS312)に送信することができる。
1つまたは複数の実施形態では、DMAエンジン816は、DPE304−15内のメモリマッピングされたスイッチ632によってプログラムされ得る。たとえば、DMAエンジン816は、構成レジスタ636によって制御され得る。構成レジスタ636は、DPE相互接続606のメモリマッピングされたスイッチ632を使用して書き込まれ得る。特定の実施形態では、DMAエンジン816は、DPE304−15内のストリームスイッチ626によって制御され得る。たとえば、DMAエンジン816は、(たとえばストリームインターフェース640を介して)それに接続されるストリームスイッチ626によって書き込まれ得る制御レジスタを含み得る。DPE相互接続606内のストリームスイッチ626を介して受信されたストリームは、構成レジスタ624、634、および/または636にロードされる構成データに応じて、メモリモジュール604内のDMAエンジン816および/または直接コア602に接続され得る。ストリームは、構成レジスタ624、634、および/または636にロードされる構成データに応じて、DMAエンジン816(たとえばメモリモジュール604)および/またはコア602から送信され得る。
メモリモジュール604は、ハードウェア同期化回路820(図8では「HSC」と略称される)をさらに含むことができる。一般に、ハードウェア同期化回路820は、異なるコア(たとえば、近傍のDPEのコア)、図8のコア602、DMAエンジン816、およびDPE相互接続606を介して通信することができる他の外部マスタ(たとえばPS312)の動作を同期させることができる。例示的かつ非限定的な例として、ハードウェア同期化回路820は、メモリモジュール604内の、同じ、たとえば共有されるバッファにアクセスする異なるDPE内の2つの異なるコアを同期させることができる。
1つまたは複数の実施形態では、ハードウェア同期化回路820は、複数の異なるロックを含み得る。ハードウェア同期化回路820に含まれるロックの特定の数は、メモリモジュールにアクセスすることができるエンティティの数に依存し得るが、限定として意図されない。特定の実施形態では、各異なるハードウェアロックは、同時要求を取り扱うことができるアービタを有することができる。さらに、各ハードウェアロックは、クロックサイクルごとに新たな要求を取り扱うことができる。ハードウェア同期化回路820は、コア602、DPE304−25、304−16および304−5の各々からのコア、DMAエンジン816、ならびに/またはDPE相互接続606を介して通信するマスタなどの、複数の要求側を有することができる。要求側は、たとえば、メモリモジュール内のメモリの特定の部分にアクセスする前に、ローカルのハードウェア同期化回路からその特定の部分のロックを取得する。要求側は、別の要求側がメモリの同じ部分にアクセスする前にロックを獲得し得るように、ロックを解放してもよい。
1つまたは複数の実施形態では、ハードウェア同期化回路820は、メモリモジュール604、より具体的にはメモリバンク812への複数のコアによるアクセスを同期させることができる。たとえば、ハードウェア同期化回路820は、図8に示すコア602、DPE304−25のコア、DPE304−16のコア、およびDPE304−5のコアの、図8のメモリモジュール604へのアクセスを同期させることができる。特定の実施形態では、ハードウェア同期化回路820は、メモリインターフェース802、804、806、および/または808を介してメモリモジュール604に直接アクセスすることができる任意のコアについてメモリバンク812へのアクセスを同期させることができる。メモリモジュール604にアクセスすることができる各コア(たとえば、図8のコア602、および近傍のDPEのうちの1つまたは複数のDPEのコア)は、たとえば、ハードウェア同期化回路820にアクセスして、メモリモジュール604内のメモリの特定の部分にアクセスする前にロックを要求および取得し、その後、ロックを解放して、別のコアがロックを獲得すると、別のコアがメモリのその部分にアクセスすることを可能してもよい。同様に、コア602は、ハードウェア同期化回路820、DPE304−14内のハードウェア同期化回路、DPE304−25内のハードウェア同期化回路、およびDPE304−5内のハードウェア同期化回路にアクセスして、各それぞれのDPEのメモリモジュール内のメモリの一部にアクセスするためにロックを要求および取得し、その後ロックを解放することができる。ハードウェア同期化回路820は、DPEのメモリモジュールへのアクセスを調整および同期させることによって、DPE間の共有メモリの動作を効果的に管理する。
ハードウェア同期化回路820も、DPE相互接続606のメモリマッピングされたスイッチ632を介してアクセスされ得る。1つまたは複数の実施形態では、リソースに対するアトミック取得(たとえば、アンロックかどうかをテストし、ロックを設定する)および解放(たとえば、ロックを外す)動作として、ロックトランザクションが実現される。ハードウェア同期化回路820のロックは、2人の参加者間でリソースの所有権を効率的に転送する方法を提供する。リソースは、ローカルメモリ内のバッファ(たとえばメモリモジュール604内のバッファ)のようなさまざまな回路コンポーネントのいずれかとすることができる。
ハードウェア同期化回路820は共有メモリを介した通信をサポートするためにメモリへのアクセスを同期させることが可能である一方で、ハードウェア同期化回路820は、他のDPEおよび/もしくは他のコアを含むさまざまな他のリソースならびに/またはエージェントのいずれかを同期させることも可能である。たとえば、ハードウェア同期化回路820はロックの共有プールを提供するので、ロックは、DPE、たとえばDPEのコアによって使用されて、別のDPEまたはコアの動作を開始および/または停止させ得る。ハードウェア同期化回路820のロックは、DPEアレイ102によって実現される特定のアプリケーションに応じて必要とされ得る異なるエージェントおよび/またはリソースを同期させるなど、異なる目的のために、たとえば構成データに基づいて、割り当てられ得る。
特定の実施形態では、ハードウェア同期化回路820のロックへのDPEアクセスおよびDMAアクセスは、ブロッキングである。このようなアクセスは、ロックを即座に取得できない場合に、要求側コアまたはDMAエンジンをストールさせることができる。ハードウェアロックが利用可能になると、要求側コアまたはDMAエンジンは、ロックを取得し、自動的にストール解除となる。
一実施形態では、メモリマッピングされたアクセスは、メモリマッピングされたマスタがハードウェア同期化回路820のロックのステータスをポーリングすることができるように、非ブロッキングとすることができる。たとえば、メモリマッピングされたスイッチは、ロック「取得」要求を通常のメモリ読み出し動作としてハードウェア同期化回路820に送信することができる。読み出しアドレスは、ロックの識別子および他の要求データを符号化してもよい。読み出されたデータ、たとえば読み出し要求に対する応答は、取得要求動作の成功を信号伝達することができる。メモリ読み出しとして送信される「取得」は、成功するまでループで送信されてもよい。別の例では、ハードウェア同期化回路820は、要求されたロックのステータスが変化すると、メモリマッピングされたマスタが割り込みを受信するように、イベントを発行することができる。
したがって、2つの近傍のDPEがメモリモジュール604を介してデータバッファを共有するとき、そのバッファを含む特定のメモリモジュール604内のハードウェア同期化回路820は、アクセスを同期させる。必ずしも必要ではないが、典型的には、スループットを改善するためにメモリブロックをダブルバッファリングすることができる。
2つのDPEが近傍のDPEでない場合、2つのDPEは、共通のメモリモジュールへのアクセスを有さない。その場合、アプリケーションデータは、データストリームを介して転送され得る(用語「データストリーム」および「ストリーム」は、本開示内で時々互換的に使用され得る)。したがって、ローカルDMAエンジンは、その転送を、ローカルメモリベースの転送からストリームベースの転送に変換することができる。その場合、コア602およびDMAエンジン816は、ハードウェア同期化回路820を使用して同期化することができる。
コア602はさらに、共有メモリによる通信を容易にするために、近傍のDPEのハードウェア同期化回路、たとえばハードウェア同期化回路のロックにアクセスすることができる。したがって、そのような他のまたは近傍のDPE内のハードウェア同期化回路は、近傍のDPEのコア間で、リソース、たとえばメモリへのアクセスを同期化することができる。
PS312は、メモリマッピングされたスイッチ632を介してコア602と通信することができる。たとえば、PS312は、メモリ読み出しおよび書き込みを開始することによって、メモリモジュール604およびハードウェア同期化回路820にアクセスすることができる。別の実施形態では、ハードウェア同期化回路820は、PS312によるハードウェア同期化回路820のポーリングを避けるためにロックのステータスが変化するとPS312に割り込みを送信してもよい。PS312はまた、ストリームインターフェースを介してDPE304−15と通信することもできる。
本明細書で提供される、メモリマッピングされた要求および/または転送を送信するエンティティに関する例は、限定ではなく例示のためのものである。特定の実施形態では、DPEアレイ102の外部にある任意のエンティティは、メモリマッピングされた要求および/または転送を送信することができる。たとえば、PL310で実現される回路ブロック、ASIC、または本明細書で記載されるDPEアレイ102の外部の他の回路は、メモリマッピングされた要求および/または転送をDPE304に送信し、そのようなDPE内のメモリモジュールのハードウェア同期化回路にアクセスすることができる。
共有メモリモジュールを介して近傍のDPEと、ならびにDPE相互接続606を介して近傍および/または非近傍のDPEと通信することに加えて、コア602はカスケードインターフェースを含み得る。図8の例では、コア602は、カスケードインターフェース822および824(図8では「CI」と略記する)を含む。カスケードインターフェース822および824は、他のコアとの直接通信を提供することができる。図示されるように、コア602のカスケードインターフェース822は、入力データストリームをDPE304−14のコアから直接受信する。カスケードインターフェース822を介して受信されたデータストリームは、コア602内のデータ処理回路に提供され得る。コア602のカスケードインターフェース824は、出力データストリームをDPE304−16のコアに直接送信することができる。
図8の例では、カスケードインターフェース822およびカスケードインターフェース824の各々は、バッファリングするための先入れ先出し(FIFO)インターフェースを含み得る。特定の実施形態では、カスケードインターフェース822および824は、幅が数百ビットであり得るデータストリームを伝達することが可能である。カスケードインターフェース822および824の特定のビット幅は、限定として意図されない。図8の例では、カスケードインターフェース824は、コア602内のアキュムレータレジスタ836(図8では「AC」と略称される)に結合される。カスケードインターフェース824は、アキュムレータレジスタ836の内容を出力することができ、クロックサイクルごとにそのようにすることができる。累積レジスタ836は、コア602内のデータ処理回路によって生成および/または処理されるデータを格納することができる。
図8の例では、カスケードインターフェース822および824は、構成レジスタ624にロードされる構成データに基づいてプログラムされ得る。たとえば、構成レジスタ624に基づいて、カスケードインターフェース822は、活性化または非活性化され得る。同様に、構成レジスタ624に基づいて、カスケードインターフェース824は、活性化または非活性化され得る。カスケードインターフェース822は、カスケードインターフェース824とは独立して活性化および/または非活性化され得る。
1つまたは複数の他の実施形態では、カスケードインターフェース822および824は、コア602によって制御される。たとえば、コア602は、カスケードインターフェース822および/または824に読み書きするための命令を含むことができる。別の例では、コア602は、カスケードインターフェース822および/または824に対する読み出しおよび/または書き込みが可能なハードワイヤード回路を含み得る。特定の実施形態では、カスケードインターフェース822および824は、コア602の外部のエンティティによって制御され得る。
本開示内に記載される実施形態内において、DPE304はキャッシュメモリを含まない。キャッシュメモリを省略することによって、DPEアレイ102は、予測可能な、たとえば決定論的な性能を達成することができる。さらに、異なるDPEに位置するキャッシュメモリ間のコヒーレンシを維持する必要がないので、大きな処理オーバーヘッドが回避される。
1つまたは複数の実施形態によれば、DPE304のコア602は、入力割り込みを有さない。したがって、DPE304のコア602は、割り込みされることなく動作することができる。DPE304のコア602への入力割り込みを省略することにより、DPEアレイ102は予測可能な、たとえば決定論的な性能を達成することもできる。
1つまたは複数のDPE304が、PS312、PL310、ハードワイヤード回路ブロック、および/またはデバイス100の別のサブシステム(たとえばASIC)において実現される外部エージェントと、外部の読出し−書込み(たとえばDDR)メモリ内の共有バッファを介して通信する場合、PS312におけるコヒーレンシ相互接続を使用してコヒーレンシ機構を実現してもよい。これらのシナリオでは、DPEアレイ102と外部エージェントとの間のアプリケーションデータ転送は、NoC308および/またはPL310の両方を横断してもよい。
1つまたは複数の実施形態では、DPEアレイ102は、機能的に、1つまたは複数のDPEからなる複数のグループに分離され得る。たとえば、特定のメモリインターフェースを、構成データを介して有効化および/または無効化して、1つまたは複数のDPEのグループを作成してもよく、各グループは、DPEアレイ102のDPEの1つまたは複数(たとえばサブセット)を含む。別の例では、ストリームインターフェースをグループごとに独立して構成して、グループ内のDPEの他のコアと、ならびに/または指定された入力ソースおよび/もしくは出力先と通信してもよい。
1つまたは複数の実施形態では、コア602は、メモリマッピングされたインターフェースを介してデバッグ機能をサポートすることができる。論じたように、プログラムメモリ608、メモリモジュール604、コア602、DMAエンジン816、ストリームスイッチ626、およびDPEの他のコンポーネントは、メモリマッピングされる。メモリマッピングされたレジスタは、たとえばPS312、PL310、および/またはIC内のプラットフォーム管理コントローラなど、メモリマッピングされた要求を生成することができる任意のソースによって、読み出しおよび/または書き込みされてもよい。要求は、SoCインターフェースブロック104を通って、DPEアレイ102内の意図された、または目標のDPEに進んでもよい。
DPE内のメモリマッピングされたスイッチを介して、コアの一時停止、コアの再開、コアのシングルステップ化、および/またはコアのリセットなどの機能を実行することができる。さらに、そのような動作は、複数の異なるDPEに対して開始され得る。実行され得る他の例示的なデバッグ動作は、たとえば、本明細書で記載されるメモリマッピングされたインターフェースを介してハードウェア同期化回路820および/もしくはDMAエンジン816のステータスを読み出し、ならびに/またはその状態を設定することを含む。
1つまたは複数の実施形態では、DPEのストリームインターフェースは、DPEアレイ102から出力され得るトレース情報を生成することができる。たとえば、ストリームインターフェースは、DPEアレイ102からトレース情報を抽出するように構成されてもよい。トレース情報は、イベント発生をマーキングするタイムスタンプ付きデータおよび/または実行フローの限定された分岐トレースを含むパケット交換ストリームとして生成され得る。一態様では、DPEによって生成されたトレースは、PL310に実現されるローカルトレースバッファに、またはSoCインターフェースブロック104およびNoC308を用いて外部RAMに、プッシュされ得る。別の態様では、DPEによって生成されたトレースは、オンチップ実現されたデバッグサブシステムに送信され得る。
特定の実施形態では、各DPEの各コア602およびメモリモジュール604は、トレースデータをストリームスイッチ626に直接出力することができる追加のストリームインターフェースを含み得る。トレースデータ用のストリームインターフェースは、既に説明したものに加えてよい。ストリームスイッチ626は、異なるDPEの複数のコアおよびメモリモジュールからのトレース情報が単一のデータストリーム上を移動できるように、トレースデータをパケット交換ストリーム上に方向付けるように構成され得る。注記されるように、DPE相互接続ネットワークのストリーム部分は、トレースデータを、PL310を介してオンチップデバッグシステムに、SoCインターフェースブロック104を介して外部メモリに、またはNoC308を介してギガビットトランシーバに直接、送信するように構成することができる。生成され得る異なるタイプのトレースストリームの例は、プログラムカウンタ(PC)における各変化に対向するものとしての分岐命令においてPC値を生成するPCトレースストリーム、ならびに(たとえば、コアおよび/またはメモリモジュールからそれぞれのトレースデータストリームを介する)DPE内の中間結果を含むアプリケーションデータトレースストリームを含む。
図9は、複数のDPEにおけるコアのカスケードインターフェースの例示的な接続性を示す図である。図9の例では、DPEのコア602のみが図示されている。DPE相互接続およびメモリモジュールのようなDPEの他の部分は、例示の目的のために省略されている。
図示されるように、コアは、図8に関連して記載されるカスケードインターフェースを介して直列に接続される。コア602−1はコア602−2に結合され、コア602−2はコア602−3に結合され、コア602−3はコア602−4に結合される。したがって、アプリケーションデータは、コア602−1からコア602−2、コア602−3、コア602−4に直接伝搬することができる。コア602−4は、次の上の行のコア602−8に結合される。コア602−8はコア602−7に結合され、コア602−7はコア602−6に結合され、コア602−6はコア602−5に結合される。したがって、アプリケーションデータは、コア602−4からコア608−8、コア602−7、コア602−6、コア602−5に直接伝搬することができる。コア602−5は、次の上の行のコア602−9に結合する。コア602−9はコア602−10に結合され、コア602−10はコア602−11に結合され、コア602−11はコア602−12に結合される。したがって、アプリケーションデータは、コア602−5からコア602−9、コア602−10、コア602−11、コア602−12に直接伝搬することができる。コア602−12は、次の上の行のコア602−16に結合される。コア602−16はコア602−15に結合され、コア602−15はコア602−14に結合され、コア602−14はコア602−13に結合される。したがって、アプリケーションデータは、コア602−12からコア608−16、コア602−15、コア602−14、コア602−13に直接伝搬することができる。
図9は、DPEのコアのカスケードインターフェースが、DPEアレイ内のDPEの1つの行からDPEの別の行へどのように結合され得るかを例示することを意図している。示されるコア(たとえばDPE)の列および/または行の特定の数は、限定として意図されない。図9は、カスケードインターフェースを使用するコア間の接続が、DPEの行の交互の端部において、「S」またはジグザグパターンで行われ得ることを示す。
DPEアレイ102がDPE304からなる2つ以上の異なるクラスタを実現する実施形態では、DPEの第1のクラスタは、カスケードおよび/またはストリームインターフェースを介してDPEの第2のクラスタに結合されない場合がある。たとえば、DPEの第1の2行が第1のクラスタを形成し、DPEの第2の2行が第2のクラスタを形成する場合、コア602−5のカスケードインターフェースは、コア602−9のカスケード入力にデータを渡さないように無効化されるようにプログラムされ得る。
図8および図9に関連して記載される例では、各コアは、入力として動作するカスケードインターフェースおよび出力として動作するカスケードインターフェースを有するものとして示されている。1つまたは複数の他の実施形態では、カスケードインターフェースは、双方向インターフェースとして実現され得る。特定の実施形態では、コアは、コアがカスケードインターフェースを介して上、下、左、および/または右の他のコアと直接通信できるように、追加のカスケードインターフェースを含み得る。注記されるように、このようなインターフェースは、一方向または双方向であってもよい。
図10A、図10B、図10C、図10D、および図10Eは、DPE間の接続性の例を示す。図10Aは、共有メモリを使用するDPE間の接続性の例を示す。図10Aの例では、コア602−15内に実現される機能またはカーネル(たとえば、DPEおよび/またはDPEアレイにおいて実現されるユーザ回路設計)は、データ1005、たとえばアプリケーションデータを処理し、DPE304−15内のコアインターフェースおよびメモリインターフェースを使用してメモリモジュール604−15に置く。DPE304−15およびDPE304−16は近傍のDPEである。したがって、コア602−16は、データ1005を含むバッファのための、メモリモジュール604−15内のハードウェア同期化回路(図示せず)からのロックの取得に基づいて、メモリモジュール604−15からデータ1005にアクセスすることができる。コア602−15および602−16によるメモリモジュール604−15への共有アクセスは、コア602−16がアプリケーションデータを処理するためにデータが1つのメモリから別のメモリに物理的に転送される必要がないので、高速トランザクション処理を容易にする。
図10Bは、ストリームスイッチを使用するDPE間の接続性の例を示す。図10Bの例では、DPE304−15および304−17は、非近傍のDPEであり、したがって、1つまたは複数の介在するDPEによって分離されている。コア602−15内に実現される機能またはカーネルは、データ1005を処理し、メモリモジュール604−15に置く。メモリモジュール604−15のDMAエンジン816−15は、メモリモジュール604−15内にデータ1005を格納するために使用されるバッファに対するロックの取得に基づいて、データ1005を取り出す。DMAエンジン816−15は、DPE相互接続のストリームスイッチを介してデータ1005をDPE304−17に送信する。メモリモジュール604−17内のDMAエンジン816−17は、DPE304−17内のストリームスイッチからデータ1005を取り出すことができ、メモリモジュール604−17内のバッファのためにメモリモジュール604−17内のハードウェア同期化回路からロックを獲得した後、メモリモジュール604−17のバッファ内にデータ1005を格納することができる。図10Bに示される接続性は、DPE304−15および304−17内のそれぞれのストリームスイッチならびにDMAエンジン816−15および816−17を、記載されたように動作するように構成するよう、構成データをロードすることによって、プログラムされ得る。
図10Cは、ストリームスイッチを使用するDPE間の接続性の別の例を示す。図10Cの例では、DPE304−15および304−17は、非近傍DPEであり、したがって、1つまたは複数の介在するDPEによって分離されている。図10Cは、データ1005がDMA816−15からストリームスイッチを介して別のDPEのコアに直接与えられ得ることを示す。図示されるように、DMA816−15は、データ1005をDPE304−15のストリームスイッチ上に置く。コア602−17は、データ1005を、直接、DPE304−17内のストリームスイッチから、それに含まれるストリームインターフェースを使用して、受信することができ、データ1005はメモリモジュール604−17へと横断しない。図10Cに示される接続性は、DPE304−15および304−17のそれぞれのストリームスイッチならびにDMA816−15を、記載されるように動作するように構成するよう、構成データをロードすることによって、プログラムされ得る。
概して、図10Cは、データのDMA−コア転送の例を示す。データのコア−DMA転送も実現され得ることを理解されたい。たとえば、コア602−17は、そこに含まれるストリームインターフェースおよびDPE304−17のストリームスイッチを介してDPE304−15にデータを送信することができる。DMAエンジン816−15は、DPE304−15に含まれるストリームスイッチからデータを引き出し、メモリモジュール604−15に格納することができる。
図10Dは、ストリームスイッチを使用するDPE間の接続性の別の例を示す。図10Dを参照して、各々、異なる、非近傍のDPEのコア602−15、602−17、および602−19は、各それぞれのDPEのストリームインターフェースを介して互いに直接通信することができる。図10Dの例では、コア602−15は、同じデータストリームをコア602−17およびコア602−19にブロードキャストすることができる。コア602−15、602−17、および602−19を含む各それぞれのDPE内のストリームインターフェースのブロードキャスト機能は、それぞれのストリームスイッチおよび/またはストリームインターフェースを記載されるように構成するよう構成データをロードすることによってプログラムされ得る。1つまたは複数の他の実施形態では、コア602−15は、データを他のDPEのコアにマルチキャストすることができる。
図10Eは、ストリームスイッチおよびカスケードインターフェースを使用するDPE間の接続性の例を示す。図10Eを参照して、DPE304−15およびDPE304−16は近傍のDPEである。場合によっては、あるカーネルは、複数のコア上で動作するように分割され得る。その場合、1つのサブカーネルの中間の累積結果は、カスケードインターフェースを介して次のコアのサブカーネルに転送され得る。
図10Eの例では、コア602−15は、ストリームスイッチを介してデータ1005を受信し、データ1005を処理する。コア602−15は、中間結果データ1010を生成し、コア602−15の中の累積レジスタからカスケードインターフェースを介してコア602−16に直接出力する。特定の実施形態では、コア602−15のカスケードインターフェースは、DPE304−15のクロックサイクルごとにアキュムレータ値を転送することが可能である。コア602−15によって受信されたデータ1005は、DPE相互接続内のストリームスイッチを介してコア602−16にさらに伝播し、コア602−16は、データ1005(たとえば元のデータ)とコア602−15によって生成された中間結果データ1010との両方を処理することができる。
図10の例では、データストリームの送信、データストリームのブロードキャスト、および/またはデータストリームのマルチキャストは、水平方向に示されている。データストリームは、DPEアレイ内のあるDPEから任意の他のDPEに送信、ブロードキャスト、および/またはマルチキャストされ得ることを理解されたい。したがって、データストリームは、意図された宛先DPEにロードされる構成データに基づいて、各そのようなDPEに到達するのに必要とされるように、左、右、上、下、および/もしくは対角線状にDPEに送信、ブロードキャスト、またはマルチキャストされ得る。
図11は、DPE内のイベント処理回路の例を示す。DPEは、他のDPEのイベント処理回路に相互接続されるイベント処理回路を含み得る。図11の例では、イベント処理回路は、コア602およびメモリモジュール604内に実現される。コア602は、イベントブロードキャスト回路1102およびイベントロジック1104を含み得る。メモリモジュール604は、イベントブロードキャスト回路1106およびイベントロジック1108を含む別個のイベント処理回路を含み得る。
イベントブロードキャスト回路1102は、図11に示される例示的なDPEの上下の近傍のDPEのコアの各々内のイベントブロードキャスト回路に接続され得る。イベントブロードキャスト回路1102はまた、図11に示される例示的なDPEの左側の近傍のDPEのメモリモジュール内のイベントブロードキャスト回路にも接続され得る。図示されるように、イベントブロードキャスト回路1102は、イベントブロードキャスト回路1106に接続される。イベントブロードキャスト回路1106は、図11に示される例示的なDPEの上下の近傍のDPEのメモリモジュールの各々内のイベントブロードキャスト回路に接続され得る。イベントブロードキャスト回路1106はまた、図11に示される例示的なDPEの右の近傍のDPEのコア内のイベントブロードキャスト回路にも接続され得る。
このようにして、DPEのイベント処理回路は、DPEアレイ内に独立したイベントブロードキャストネットワークを形成することができる。DPEアレイ内のイベントブロードキャストネットワークは、DPE相互接続ネットワークとは独立して存在し得る。さらに、イベントブロードキャストネットワークは、好適な構成データを構成レジスタ624および/または636にロードすることによって個々に構成可能であり得る。
図11の例では、イベントブロードキャスト回路1102およびイベントロジック1104は、構成レジスタ624によって構成され得る。イベントブロードキャスト回路1106およびイベントロジック1108は、構成レジスタ636によって構成され得る。構成レジスタ624および636は、DPE相互接続606のメモリマッピングされたスイッチを介して書き込まれ得る。図11の例では、構成レジスタ624は、コア602内で発生する特定のタイプのイベントを検出するようにイベントロジック1104をプログラミングする。構成レジスタ624にロードされた構成データは、たとえば、イベントロジック1104によって複数の異なるタイプの所定のイベントのいずれが検出されるかを判定する。イベントの例は、コア602による読み出し動作の開始および/または終了、コア602による書き込み動作の開始および/または終了、ストール、ならびにコア602によって実行される他の動作の発生を含み得るが、これらに限定されない。同様に、構成レジスタ636は、メモリモジュール604内で発生する特定のタイプのイベントを検出するようにイベントロジック1108をプログラミングする。イベントの例は、DMAエンジン816による読み出し動作の開始および/または終了、DMAエンジン816による書き込み動作の開始および/または終了、ストール、ならびにメモリモジュール604によって実行される他の動作の発生を含み得るが、これらに限定されない。構成レジスタ636にロードされた構成データは、たとえば、イベントロジック1108によって複数の異なるタイプの所定のイベントのいずれが検出されるかを判定する。イベントロジック1104および/またはイベントロジック1108は、DMAエンジン816、メモリマッピングされたスイッチ632、ストリームスイッチ626、メモリモジュール604のメモリインターフェース、コア602のコアインターフェース、コア602のカスケードインターフェース、および/もしくはDPE内に位置する他のコンポーネントから生じる、ならびに/またはそれに関連するイベントを検出することができることを理解されたい。
構成レジスタ624は、さらに、イベントブロードキャスト回路1102をプログラミングすることができ、構成レジスタ636は、イベントブロードキャスト回路1106をプログラミングすることができる。たとえば、構成レジスタ624にロードされた構成データは、イベントブロードキャスト回路1102が他のイベントブロードキャスト回路から受信したイベントのうちのどれがさらに別のイベントブロードキャスト回路に、および/またはSoCインターフェースブロック104に伝搬されるかを判定することができる。構成データはまた、内部でイベントロジック1104によって生成されたどのイベントが他のイベントブロードキャスト回路に、および/またはSoCインターフェースブロック104に伝搬されるかを指定することもできる。
同様に、構成レジスタ636にロードされた構成データは、イベントブロードキャスト回路1106が他のイベントブロードキャスト回路から受信したイベントのうちのどれがさらに別のイベントブロードキャスト回路に、および/またはSoCインターフェースブロック104に伝搬されるかを判定することができる。構成データはまた、内部でイベントロジック1108によって生成されたどのイベントが他のイベントブロードキャスト回路に、および/またはSoCインターフェースブロック104に伝搬されるかを指定することもできる。
したがって、イベントロジック1104によって生成されたイベントは、イベントブロードキャスト回路1102に提供されてもよく、他のDPEにブロードキャストされてもよい。図11の例では、イベントブロードキャスト回路1102は、イベントを、内部で生成されたか他のDPEから受信されたかにかかわらず、上のDPE、左へのDPE、および下のDPEまたはSoCインターフェースブロック104にブロードキャストすることができる。イベントブロードキャスト回路1102はまた、メモリモジュール604内のイベントブロードキャスト回路1106にイベントをブロードキャストすることもできる。
イベントロジック1108によって生成されたイベントは、イベントブロードキャスト回路1106に提供されてもよく、他のDPEにブロードキャストされてもよい。図11の例では、イベントを、内部で生成されたか他のDPEから受信されたかにかかわらず、上のDPEに、右側のDPEに、および下のDPEまたはSoCインターフェースブロック104にブロードキャストすることができる。イベントブロードキャスト回路1106はまた、コア602内のイベントブロードキャスト回路1102にイベントをブロードキャストすることもできる。
図11の例では、コアに位置するイベントブロードキャスト回路は、上および/または下の近傍のDPEのコアに位置するイベントブロードキャスト回路と垂直に通信する。DPEがSoCインターフェースブロック104の真上にある(または直接隣接する)場合、そのDPEのコア内のイベントブロードキャスト回路は、SoCインターフェースブロック104と通信することができる。同様に、メモリモジュールに位置するイベントブロードキャスト回路は、上および/または下の近傍のDPEのメモリモジュールに位置するイベントブロードキャスト回路と垂直に通信する。DPEがSoCインターフェースブロック104の真上にある(たとえば、直接隣接する)場合、そのDPEのメモリモジュール内のイベントブロードキャスト回路は、SoCインターフェースブロック104と通信することができる。イベントブロードキャスト回路はさらに、直接左および/または右のイベントブロードキャスト回路と、そのようなイベントブロードキャスト回路が別のDPEに、および/またはコアもしくはメモリモジュール内に位置するかどうかに関わらず、通信することができる。
構成レジスタ624および636が書き込まれると、イベントロジック1104および1108はバックグラウンドで動作することができる。特定の実施形態では、イベントロジック1104は、コア602内の特定の条件を検出することに応答してのみイベントを生成し;イベントロジック1108は、メモリモジュール604内の特定の条件を検出することに応答してのみイベントを生成する。
図12は、DPE304の別の例示的なアーキテクチャを示す。図12の例では、DPE304は、複数の異なるコアを含み、「クラスタ」タイプのDPEアーキテクチャと呼ばれ得る。図12では、DPE304は、コア1202,1204,1206,および1208を含む。各コア1202〜1208の各々は、それぞれコアインターフェース1210,1212,1214,1216(図12では「コアIF」と略称する)を介してメモリプール1220に接続される。コアインターフェース1210〜1216の各々は、クロスバー1224を介して複数のメモリバンク1222−1〜1222−Nに結合する。クロスバー1224を介して、コア1202〜1208のいずれか1つは、メモリバンク1222−1〜1222−Nのいずれか1つにアクセスすることができる。したがって、図12の例示的なアーキテクチャ内では、コア1202〜1208は、メモリプール1220の共有メモリバンク1222を介して互いに通信することができる。
1つまたは複数の実施形態では、メモリプール1220は、32個のメモリバンクを含み得る。メモリプール1220に含まれるメモリバンクの数は、限定ではなく例示のために提供される。他の実施形態では、メモリプール1220に含まれるメモリバンクの数は、32より多くても、32より少なくてもよい。
図12の例では、DPE304は、メモリマッピングされたスイッチ1226を含む。メモリマッピングされたスイッチ1226は、各基本四方位方向(たとえば、北、南、西、東)において近傍のDPE内のメモリマッピングされたスイッチに、およびメモリプール1220に結合することができる複数のメモリマッピングされたインターフェース(図示せず)を含む。各メモリマッピングされたインターフェースは、1つまたは複数のマスタおよび1つまたは複数のスレーブを含むことができる。たとえば、メモリマッピングされたスイッチ1226は、メモリマッピングされたインターフェースを介してクロスバー1224に結合される。メモリマッピングされたスイッチ1226は、本開示内の他の例示的なDPEに関連して記載されるように、構成、制御、およびデバッグデータを伝達することが可能である。したがって、メモリマッピングされたスイッチ1226は、DPE304において構成レジスタ(図示せず)をロードすることができる。図12の例では、DPE304は、ストリームスイッチ1232、コア1202〜1208、およびDMAエンジン1234の動作を制御するための構成レジスタを含み得る。
図12の例では、メモリマッピングされたスイッチ1226は、4つの基本四方位方向の各々において通信することができる。他の実施形態では、メモリマッピングされたスイッチ1226は、北方向および南方向にのみ通信することができる。他の実施形態では、メモリマッピングされたスイッチ1226は、メモリマッピングされたスイッチ1226が4つより多い他のエンティティと通信することを可能にし、それによって、対角線方向の他のDPEおよび/または他の非近傍DPEとの通信を可能にする、追加のメモリマッピングされたインターフェースを含み得る。
DPE304はまた、ストリームスイッチ1232も含む。ストリームスイッチ1232は、各基本四方位方向(たとえば、北、南、西、東)において近傍のDPE内のストリームスイッチに、およびコア1202〜1208に結合することができる複数のストリームインターフェース(図示せず)を含む。各ストリームインターフェースは、1つまたは複数のマスタおよび1つまたは複数のスレーブを含み得る。ストリームスイッチ1232は、さらに、DMAエンジン1234に結合されるストリームインターフェースをさらに含む。
DMAエンジン1234は、インターフェース1218を介してクロスバー1224に結合される。DMAエンジン1234は、2つのインターフェースを含み得る。たとえば、DMAエンジン1234は、メモリバンク1222のうちの1つまたは複数からデータを読み出し、そのデータをストリームスイッチ1232上で送信することができるメモリ−ストリームインターフェースを含み得る。DMAエンジン1234はまた、ストリームスイッチ1232を介してデータを受信し、そのデータをメモリバンク1222のうちの1つまたは複数内に格納することができるストリーム−メモリインターフェースも含み得る。インターフェースの各々は、メモリ−ストリームかストリーム−メモリかにかかわらず、1つの入力/出力ストリームまたは複数の同時入力/出力ストリームをサポートすることができる。
図12の例示的なアーキテクチャは、メモリマッピングされたスイッチ1226およびストリームスイッチ1232の両方を介してDPE間通信をサポートする。図示されるように、メモリマッピングされたスイッチ1226は、上、下、左、および右の近傍のDPEのメモリマッピングされたスイッチと通信することができる。同様に、ストリームスイッチ1232は、上、下、左、および右の近傍のDPEのストリームスイッチと通信することができる。
1つまたは複数の実施形態では、メモリマッピングされたスイッチ1226およびストリームスイッチ1232の両方は、アプリケーションデータを共有するために、他のDPE(近傍および非近傍の両方)のコア間のデータ転送をサポートすることができる。メモリマッピングされたスイッチ1226はさらに、DPE304を構成する目的で、構成、制御、およびデバッグデータの転送をサポートすることができる。特定の実施形態では、ストリームスイッチ1232は、アプリケーションデータの転送をサポートし、メモリマッピングされたスイッチ1226は、構成、制御、およびデバッグデータの転送のみをサポートする。
図12の例では、コア1202〜1208は、前述したようにカスケードインターフェースを介して直列に接続されている。さらに、コア1202は、図12のDPEの左の近傍のDPE内の最も右のコアのカスケードインターフェース(たとえば出力)に結合され、コア1208は、図12のDPEの右の近傍のDPE内の最も左のコアのカスケードインターフェース(たとえば入力)に結合される。クラスタアーキテクチャを使用するDPEのカスケードインターフェースは、図9に示されるように行から行へ接続され得る。1つまたは複数の他の実施形態では、コア1202〜1208のうちの1つまたは複数は、水平カスケード接続の代わりに、および/または水平カスケード接続に加えて、カスケードインターフェースを介して、上および/または下の近傍のDPE内のコアに接続され得る。
図12の例示的なアーキテクチャは、本明細書で説明するように、DPEを実現し、DPEアレイを形成するために、使用され得る。図12の例示的なアーキテクチャは、本開示内で記載される他の例示的なDPEアーキテクチャと比較して、コアに利用可能なメモリの量を増加させる。したがって、コアがより大量のメモリへのアクセスを必要とする用途では、単一のDPE内で複数のコアを一緒にクラスタ化する図12のアーキテクチャが使用され得る。説明のため、図12のDPE304の構成に応じて、すべてのコアを使用する必要はない。したがって、1つまたは複数(たとえば、DPE304のすべてのコア1202〜1208よりも少ない)は、メモリプール1220にアクセスし、そうでなければ図12の例において構成レジスタ(図示せず)にロードされる構成データに基づく場合よりも大量のメモリへのアクセスを有することができる。
図13は、図1のDPEアレイ102の例示的なアーキテクチャを示す。図13の例では、SoCインターフェースブロック104は、DPE304とデバイス100の他のサブシステムとの間のインターフェースを提供する。SoCインターフェースブロック104は、DPEをデバイスに統合する。SoCインターフェースブロック104は、構成データをDPE304に伝達すること、DPE304から他のサブシステムにイベントを伝達すること、他のサブシステムからDPE304にイベントを伝達すること、割り込みを生成しDPEアレイ102の外部のエンティティに伝達すること、他のサブシステムとDPE304との間でアプリケーションデータを伝達すること、ならびに/または他のサブシステムとDPE304との間でトレースおよび/もしくはデバッグデータを伝達することが可能である。
図13の例では、SoCインターフェースブロック104は、複数の相互接続されたタイルを含む。たとえば、SoCインターフェースブロック104は、タイル1302,1304,1306,1308,1310,1312,1314,1316,1318,および1320を含む。図13の例では、タイル1302〜1320は、行状に編成される。他の実施形態では、タイルは、列状、グリッド状、または別のレイアウトに配置されてもよい。たとえば、SoCインターフェースブロック104は、DPE304の左側、DPE304の右側、DPE304の列間などのタイルの列として実現され得る。別の実施形態では、SoCインターフェースブロック104は、DPEアレイ102の上に位置してもよい。SoCインターフェースブロック104は、タイルがDPEアレイ102の下、DPEアレイ102の左、DPEアレイ102の右、および/またはDPEアレイ102の上の任意の組み合わせで配置されるように実現されてもよい。この点に関して、図13は、限定ではなく例示の目的のために示される。
1つまたは複数の実施形態では、タイル1302〜1320は、同じアーキテクチャを有する。1つまたは複数の他の実施形態では、タイル1302〜1320は、2つ以上の異なるアーキテクチャで実現され得る。特定の実施形態では、異なるアーキテクチャを使用して、SoCインターフェースブロック104内でタイルを実現し、各異なるタイルアーキテクチャは、デバイス100の異なる種類のサブシステムまたはサブシステムの組み合わせとの通信をサポートすることができる。
図13の例では、タイル1302〜1320は、データが1つのタイルから別のタイルに伝搬され得るように結合される。たとえば、データはタイル1302からタイル1304、1306を通り、タイルのラインを下ってタイル1320に伝搬され得る。同様に、データは、タイル1320からタイル1302へ逆方向に伝搬され得る。1つまたは複数の実施形態において、タイル1302〜1320の各々は、複数のDPEのためのインターフェースとして動作することができる。たとえば、タイル1302〜1320の各々は、DPEアレイ102のDPE304のサブセットのためのインターフェースとして動作することができる。各タイルがインターフェースを提供するDPEのサブセットは、どのDPEもSoCインターフェースブロック104の2つ以上のタイルによってインターフェースが提供されないように、相互に排他的であってもよい。
一例では、タイル1302〜1320の各々は、DPE304の列のためのインターフェースを提供する。例示のため、タイル1302は、列AのDPEへのインターフェースを提供する。タイル1304は、列BのDPEへのインターフェースを提供する。各場合において、タイルは、DPEの列内の隣接するDPEへの直接接続を含み、この例ではそのDPEは底部のDPEである。列Aを参照すると、たとえば、タイル1302はDPE304−1に直接接続される。列A内の他のDPEはタイル1302と通信することができるが、ただし、同じ列内の介在するDPEのDPE相互接続を通じて通信する。
たとえば、タイル1302は、PS312、PL310および/または別のハードワイヤード回路ブロック、たとえばASICブロックなどの別のソースからデータを受信することができる。タイル1302は、列AのDPEにアドレス指定されたデータの部分をそのようなDPEに提供し、他の列のDPE(たとえば、タイル1302がインターフェースではないDPE)にアドレス指定されたデータをタイル1304に送信することができる。タイル1304は、同じまたは同様の処理を実行することができ、タイル1302から受信された、列BのDPEにアドレス指定されたデータがそのようなDPEに提供される一方で、他の列のDPEにアドレス指定されたデータをタイル1306に送信する。
このようにして、データは、データがアドレス指定されたDPE(たとえば「目標DPE」)のためのインターフェースとして動作するタイルに到達するまで、SoCインターフェースブロック104のタイルからタイルに伝搬することができる。目標DPEのためのインターフェースとして動作するタイルは、DPEのメモリマッピングされたスイッチおよび/またはDPEのストリームスイッチを使用して、データを目標DPEに方向付けることができる。
注記したように、列の使用は、例示的な実現例である。他の実施形態では、SoCインターフェースブロック104の各タイルは、DPEアレイ102のDPEの行にインターフェースを提供することができる。そのような構成は、SoCインターフェースブロック104が、DPE304の列の左、右、または間にかかわらず、タイルの列として実現される場合に使用され得る。他の実施形態では、各タイルがインターフェースを提供するDPEのサブセットは、DPEアレイ102のすべてのDPEよりも少ないDPEの任意の組み合わせとすることができる。たとえば、DPE304は、SoCインターフェースブロック104のタイルに分配され得る。そのようなDPEの特定の物理的レイアウトは、DPE相互接続によって確立されるDPEの接続性に基づいて変わり得る。たとえば、タイル1302は、DPE304−1、304−2、304−11、および304−12にインターフェースを提供してもよい。SoCインターフェースブロック104の別のタイルは、4つの他のDPEなどにインターフェースを提供してもよい。
図14A、図14B、および図14Cは、SoCインターフェースブロック104のタイルを実現するための例示的なアーキテクチャを示す。図14Aは、タイル1304の例示的な実現例を示す。図14Aに示されるアーキテクチャはまた、SoCインターフェースブロック104に含まれる他の任意のタイルを実現するためにも使用され得る。
タイル1304は、メモリマッピングされたスイッチ1402を含む。メモリマッピングされたスイッチ1402は、複数の異なる方向の各々において通信するための複数のメモリマッピングされたインターフェースを含み得る。例示的かつ非限定的な例として、メモリマッピングされたスイッチ1402は、1つまたは複数のメモリマッピングされたインターフェースを含むことができ、メモリマッピングされたインターフェースは、直上のDPEのメモリマッピングされたインターフェースに垂直に接続するマスタを有する。したがって、メモリマッピングされたスイッチ1402は、DPEのうちの1つまたは複数のDPEのメモリマッピングされたインターフェースに対するマスタとして動作することができる。特定の例において、メモリマッピングされたスイッチ1402は、DPEのサブセットのためのマスタとして動作し得る。たとえば、メモリマッピングされたスイッチ1402は、タイル1304上のDPEの列、たとえば、図13の列Bのためのマスタとして動作してもよい。メモリマッピングされたスイッチ1402は、DPEアレイ102内の複数の異なる回路(たとえばDPE)に接続するための追加のメモリマッピングされたインターフェースを含み得ることを理解されたい。メモリマッピングされたスイッチ1402のメモリマッピングされたインターフェースはまた、タイル1304の上方に位置する回路(たとえば1つまたは複数のDPE)と通信することができる1つまたは複数のスレーブを含み得る。
図14Aの例では、メモリマッピングされたスイッチ1402は、近傍のタイル(たとえば、タイル1302および1306)内のメモリマッピングされたスイッチへの水平方向の通信を容易にする1つまたは複数のメモリマッピングされたインターフェースを含み得る。説明のため、メモリマッピングされたスイッチ1402は、メモリマッピングされたインターフェースを介して水平方向に近傍のタイルに接続されてもよく、各そのようなメモリマッピングされたインターフェースは、1つもしくは複数のマスタおよび/または1つもしくは複数のスレーブを含む。したがって、メモリマッピングされたスイッチ1402は、データ(たとえば、構成、制御、および/またはデバッグデータ)を、あるタイルから別のタイルに移動させて、正しいDPEおよび/または複数のDPEからなる正しいサブセットに到達させ、そのデータを、タイル1304の上の列にあるか、SoCインターフェースブロック104の別のタイルがインターフェースとして動作する別のサブセットにあるかにかかわらず、目標DPEに向けることができる。たとえば、メモリマッピングされたトランザクションがNoC308から受信された場合、メモリマッピングされたスイッチ1402は、トランザクションを水平に、たとえば、SoCインターフェースブロック104内の他のタイルに分配することができる。
メモリマッピングされたスイッチ1402はまた、タイル1304内の構成レジスタ1436に結合される1つもしくは複数のマスタおよび/またはスレーブを有するメモリマッピングされたインターフェースを含み得る。メモリマッピングされたスイッチ1402を介して、構成データを構成レジスタ1436にロードして、タイル1304内のコンポーネントによって実行されるさまざまな機能および動作を制御し得る。図14A、図14B、および図14Cは、構成レジスタ1436とタイル1304の1つまたは複数の要素との間の接続を示す。しかしながら、構成レジスタ1436は、タイル1304の他の要素を制御し得、したがって、そのような他の要素への接続を有し得るが、そのような接続は、図14A、図14B、および/または図14Cには示されていないことを理解されたい。
メモリマッピングされたスイッチ1402は、ブリッジ1418を介してNoCインターフェース1426に結合されるメモリマッピングされたインターフェースを含み得る。このメモリマッピングされたインターフェースは、1つもしくは複数のマスタおよび/またはスレーブを含むことができる。ブリッジ1418は、NoC308からのメモリマッピングされたデータ転送(たとえば、構成、制御、および/またはデバッグデータ)を、メモリマッピングされたスイッチ1402によって受信され得るメモリマッピングされたデータに変換することが可能である。
タイル1304はまた、イベント処理回路を含み得る。たとえば、タイル1304は、イベントロジック1432を含む。イベントロジック1432は、構成レジスタ1436によって構成され得る。図14Aの例では、イベントロジック1432は、制御、デバッグ、およびトレース(CDT)回路1420に結合される。構成レジスタ1436にロードされる構成データは、タイル1304内でローカルに検出され得る特定のイベントを定義する。イベントロジック1432は、構成レジスタ1436により、DMAエンジン1412、メモリマッピングされたスイッチ1402、ストリームスイッチ1406、PLインターフェース1410に位置する先入れ先出し(FIFO)メモリ、および/もしくはNoCストリームインターフェース1414から発信される、ならびに/またはそれに関連する、さまざまな異なるイベントを検出することができる。イベントの例は、DMA転送終了、ロック解放、ロック取得、PL転送の終了、またはタイル1304を通るデータフローの開始もしくは終了に関連する他のイベントを含み得るが、これらに限定されない。イベントロジック1432は、そのようなイベントをイベントブロードキャスト回路1404および/またはCDT回路1420に与えることができる。たとえば、別の実施形態では、イベントロジック1432は、CDT回路1420への直接接続を有さず、イベントブロードキャスト回路1404を介してCDT回路1420に接続する場合がある。
タイル1304は、イベントブロードキャスト回路1404およびイベントブロードキャスト回路1430を含む。イベントブロードキャスト回路1404およびイベントブロードキャスト回路1430の各々は、DPEアレイ102のイベントブロードキャストネットワークと、SoCインターフェースブロック104の他のタイルと、デバイス100のPL310との間のインターフェースを提供する。イベントブロードキャスト回路1404は、隣接するまたは近傍のタイル1302内のイベントブロードキャスト回路およびイベントブロードキャスト回路1430に結合される。イベントブロードキャスト回路1430は、隣接するまたは近傍のタイル1306内のイベントブロードキャスト回路に結合される。SoCインターフェースブロック104のタイルがグリッドまたはアレイに配置される1つまたは複数の他の実施形態では、イベントブロードキャスト回路1404および/またはイベントブロードキャスト回路1430は、タイル1304の上および/または下の他のタイルに位置するイベントブロードキャスト回路に接続され得る。
図14Aの例では、イベントブロードキャスト回路1404は、タイル1304に隣接するDPE、たとえば、列Bにおけるタイル1304のすぐ上のDPE304−2のコア内のイベントブロードキャスト回路に結合される。イベントブロードキャスト回路1404は、PLインターフェース1410にも結合される。イベントブロードキャスト回路1430は、タイル1304に隣接するDPE、たとえば列Bのタイル1304のすぐ上のDPE304−2のメモリモジュールにおけるイベントブロードキャスト回路に結合される。図示はしないが、他の実施形態においては、イベントブロードキャスト回路1430はPLインターフェース1410にも結合され得る。
イベントブロードキャスト回路1404およびイベントブロードキャスト回路1430は、内部でイベントロジック1432によって生成されたイベント、SoCインターフェースブロック104の他のタイルから受信されたイベント、および/または列BのDPE(もしくはDPEアレイ102の他のDPE)から受信されたイベントを、他のタイルに送信することができる。イベントブロードキャスト回路1404はさらに、そのようなイベントを、PLインターフェース1410を介してPL310に送信することができる。別の例では、イベントは、イベントブロードキャスト回路1404から、PLインターフェースブロック1410を使用して、DPEアレイ102の外に位置するASICおよび/もしくはPL回路ブロックなど、デバイス100内の他のブロックならびに/またはサブシステムに送信され得る。さらに、PLインターフェース1410は、PL310からイベントを受信し、そのようなイベントをイベントブロードキャストスイッチ1404および/またはストリームスイッチ1406に与えることができる。一態様では、イベントブロードキャスト回路1404は、PL310から受信された任意のイベントを、PLインターフェース1410を介して、SoCインターフェースブロック104の他のタイルに、ならびに/または列BのDPEおよび/もしくはDPEアレイ102の他のDPEに送信することができる。別の例では、PL310から受信されたイベントは、イベントブロードキャスト回路1404からASICなどのデバイス100内の他のブロックおよび/またはサブシステムに送信され得る。イベントはSoCインターフェースブロック104内のタイル間でブロードキャストされ得るので、イベントは、SoCインターフェースブロック104内のタイルおよびイベントブロードキャスト回路を目標(たとえば、意図された)DPEまで横断することによって、DPEアレイ102内の任意のDPEに達し得る。たとえば、目標DPEを含むタイルによって管理されるDPEの列(またはサブセット)の下のSoCインターフェースブロック104のタイル内のイベントブロードキャスト回路は、イベントを目標DPEに伝搬することができる。
図14Aの例では、イベントブロードキャスト回路1404およびイベントロジック1432は、CDT回路1420に結合される。イベントブロードキャスト回路1404およびイベントロジック1432は、CDT回路1420にイベントを送信することができる。CDT回路1420は、受信したイベントをパケット化し、イベントブロードキャスト回路1404および/またはイベントロジック1432からストリームスイッチ1406にイベントを送信することができる。特定の実施形態では、イベントブロードキャスト回路1430は、ストリームスイッチ1406および/またはCDT回路1420にも接続され得る。
1つまたは複数の実施形態では、イベントブロードキャスト回路1404およびイベントブロードキャスト回路1430は、図14Aに示されるように(たとえば、図14Aに示される接続のいずれかを介して)、1つもしくは複数またはすべての方向からブロードキャストイベントを収集することができる。特定の実施形態では、イベントブロードキャスト回路1404および/またはイベントブロードキャスト回路1430は、信号の論理「OR」を実行し、結果を1つもしくは複数またはすべての方向(たとえば、CDT回路1420を含む)に転送することができる。イベントブロードキャスト回路1404およびイベントブロードキャスト回路1430からの各出力は、構成レジスタ1436にロードされた構成データによって構成可能なビットマスクを含み得る。ビットマスクは、どのイベントが各方向にブロードキャストされるかを個々に基づいて判定する。そのようなビットマスクは、たとえば、イベントの望ましくない伝搬または複製伝搬を排除し得る。
割り込みハンドラ1434は、イベントブロードキャスト回路1404に結合され、イベントブロードキャスト回路1404からブロードキャストされるイベントを受信することができる。1つまたは複数の実施形態では、割り込みハンドラ1434は、選択されたイベントおよび/またはイベントブロードキャスト回路1404からのイベント(たとえば、DPE生成イベント、タイル1304内で生成されたイベント、および/またはPL310生成イベント)の組み合わせに応答して割り込みを生成するよう、構成レジスタ1436にロードされた構成データによって構成され得る。割込みハンドラ1434は、構成データに基づいて、PS312および/またはデバイス100内の他のデバイスレベル管理ブロックへの割込みを生成することができる。したがって、割込みハンドラ1434は、割込みハンドラ1434によって生成される割込みに基づいて、DPEアレイ102において発生するイベント、SoCインターフェースブロック104のタイルにおいて発生するイベント、および/またはPL310において発生するイベントを、PS312および/またはそのような他のデバイスレベル管理ブロックに通知することができる。
特定の実施形態では、割込みハンドラ1434は、直接接続によってPS312および/または他のデバイスレベル管理ブロックの割込みハンドラもしくは割込みポートに結合され得る。1つまたは複数の他の実施形態では、割り込みハンドラ1434は、別のインターフェースによってPS312および/または他のデバイスレベル管理ブロックに結合され得る。
PLインターフェース1410は、デバイス100のPL310に結合し、それに対するインターフェースを提供する。1つまたは複数の実施形態では、PLインターフェース1410は、DPEアレイクロックとPLクロックとの間を交差する非同期クロックドメインを提供する。PLインターフェース1410はまた、PL電力レールとの統合のためにレベルシフタおよび/または分離セルを提供してもよい。特定の実施形態では、PLインターフェース1410は、32ビット、64ビットおよび/または128ビットインターフェースにFIFOサポートを与えてバックプレッシャーを処理するように構成されてもよい。PLインターフェース1410の特定の幅は、構成レジスタ1436にロードされる構成データによって制御され得る。図14Aの例では、PLインターフェース1410は、1つまたは複数のPL相互接続ブロック1422に直接結合する。特定の実施形態では、PL相互接続ブロック1422は、PL310に位置する相互接続回路に結合するハードワイヤード回路ブロックとして実現される。
1つまたは複数の他の実施形態では、PLインターフェース1410は、他のタイプの回路ブロックおよび/またはサブシステムに結合される。たとえば、PLインターフェース1410は、ASIC、アナログ/混合信号回路、および/または他のサブシステムに結合され得る。したがって、PLインターフェース1410は、タイル1304とそのような他のサブシステムおよび/またはブロックとの間でデータを転送することが可能である。
図14Aの例では、タイル1304はストリームスイッチ1406を含む。ストリームスイッチ1406は、1つまたは複数のストリームインターフェースを介して、近接するまたは近傍のタイル1302内のストリームスイッチおよび近接するまたは近傍のタイル1306内のストリームスイッチに結合される。各ストリームインターフェースは、1つもしくは複数のマスタおよび/または1つもしくは複数のスレーブを含むことができる。特定の実施形態では、近傍のストリームスイッチの各対は、各方向において1つまたは複数のストリームを介してデータを交換することができる。ストリームスイッチ1406はまた、1つまたは複数のストリームインターフェースによって、列Bにおけるタイル1304の真上のDPE、すなわちDPE304−2内のストリームスイッチに結合される。論じられるように、ストリームインターフェースは、1つもしくは複数のストリームスレーブおよび/またはストリームマスタを含むことができる。ストリームスイッチ1406はまた、ストリームマルチプレクサ/デマルチプレクサ1408(図14Aではストリームmux/demuxと略称される)を介してPLインターフェース1410、DMAエンジン1412、および/またはNoCストリームインターフェース1414に結合される。ストリームスイッチ1406は、たとえば、ストリームマルチプレクサ/デマルチプレクサ1408を介してPLインターフェース1410、DMAエンジン1412、および/またはNoCストリームインターフェース1414の各々と通信するために使用される1つまたは複数のストリームインターフェースを含むことができる。
1つまたは複数の他の実施形態では、ストリームスイッチ1406は、含まれるストリームインターフェースの数ならびに/またはタイルおよび/もしくはDPEおよび/もしくはタイル1304の周りの他の回路ブロックの配置に応じて、他の方向および/または対角方向において他の回路ブロックに結合され得る。
1つまたは複数の実施形態では、ストリームスイッチ1406は、構成レジスタ1436にロードされる構成データによって構成可能である。ストリームスイッチ1406は、たとえば、構成データに基づいてパケット交換動作および/または回路交換動作をサポートするように構成され得る。さらに、構成データは、ストリームスイッチ1406が通信するDPEアレイ102内の特定のDPEおよび/または複数のDPEを規定する。1つまたは複数の実施形態では、構成データは、ストリームスイッチ1406が通信するDPEアレイ102の特定のDPEおよび/またはDPEのサブセット(たとえば列B内のDPE)を規定する。
ストリームマルチプレクサ/デマルチプレクサ1408は、PLインターフェース1410、DMAエンジン1412、および/またはNoCストリームインターフェース1414から受信されたデータをストリームスイッチ1406に方向付けることができる。同様に、ストリームマルチプレクサ/デマルチプレクサ1408は、ストリームスイッチ1406から受信されたデータをPLインターフェース1410、DMAエンジン1412、および/またはNoCストリームインターフェース1414に方向付けることができる。たとえば、ストリームマルチプレクサ/デマルチプレクサ1408は、構成レジスタ1436に格納された構成データによってプログラムされることにより、選択されたデータをDMAエンジン1412にルーティングし、そこでそのようなデータはメモリマッピングされたトランザクションとしてNoC308を介して送信され、および/または選択されたデータをNoCストリームインターフェース1414にルーティングし、そこでデータは1つまたは複数のデータストリームとしてNoC308を介して送信されてもよい。
DMAエンジン1412は、データをセレクタブロック1416を通じてNoCインターフェース1426に、NoC308へと向けるためのマスタとして動作することができる。DMAエンジン1412は、DPEからデータを受信し、そのようなデータをメモリマッピングされたデータトランザクションとしてNoC308に与えることができる。1つまたは複数の実施形態では、DMAエンジン1412は、DMAエンジン1412に含まれる複数のチャネルおよび/またはDMAエンジン1412内のあるチャネルを、ロック要求をポーリングおよび駆動するマスタと同期させるために使用され得るハードウェア同期化回路を含む。たとえば、マスタは、PS312またはPL310内に実現されるデバイスであり得る。マスタはまた、DMAエンジン1412内のハードウェア同期化回路によって生成される割り込みを受信することもできる。
1つまたは複数の実施形態では、DMAエンジン1412は、外部メモリにアクセスすることができる。たとえば、DMAエンジン1412は、DPEからデータストリームを受信し、外部メモリへのデータストリームを、NoC308を介して、SoC内に位置するメモリコントローラに送信することができる。次いで、メモリコントローラは、データストリームとして受信されたデータを外部メモリに方向付ける(たとえば、DMAエンジン1412によって要求されるように、外部メモリの読み出しおよび/または書き込みを開始する)。同様に、DMAエンジン1412は、外部メモリからデータを受信することが可能であり、そのデータは、SoCインターフェースブロック104の他のタイルに、および/または目標DPEにまで分配されてもよい。
特定の実施形態では、DMAエンジン1412は、DPEグローバル制御設定レジスタ(DPE GCSレジスタ)1438を使用して設定され得るセキュリティビットを含む。外部メモリは異なる領域またはパーティションに分割され得、DPEアレイ102は外部メモリの特定の領域のみにアクセスすることを許可される。DMAエンジン1412内のセキュリティビットは、DPEアレイ102が、DMAエンジン1412を介して、セキュリティビットに従って許可される外部メモリの特定の領域のみにアクセスできるように設定されてもよい。たとえば、DPEアレイ102によって実現されるアプリケーションは、この機構を使用して、外部メモリの特定の領域のみにアクセスするように制限され、外部メモリの特定の領域からの読み出しのみに制限され、および/またはこの外部メモリ全体への書き込みから制限され得る。
外部メモリへのアクセスを制御するDMAエンジン1412内のセキュリティビットは、DPEアレイ102を全体的に制御するように実現されてもよく、またはより粒度の高い方法で実現されてもよく、外部メモリへのアクセスは、DPEごとに、たとえばコアごとに、または協調して動作する、たとえばカーネルおよび/もしくは他のアプリケーションを実現するように構成されるコアのグループについて、指定ならびに/または制御されてもよい。
NoCストリームインターフェース1414は、NoCインターフェース1426を介してNoC308からデータを受信し、データをストリームとしてマルチプレクサ/デマルチプレクサ1408に転送することができる。NoCストリームインターフェース1414はさらに、ストリームマルチプレクサ/デマルチプレクサ1408からデータを受信し、セレクタブロック1416を介してNoCインターフェース1426にデータを転送することが可能である。セレクタブロック1416は、DMAエンジン1412またはNoCストリームインターフェース1414からNoCインターフェース1426にデータを渡すように構成可能である。
CDT回路1420は、タイル1304内で制御、デバッグ、およびトレース動作を実行することができる。デバッグに関して、タイル1304に位置するレジスタの各々は、メモリマッピングされたスイッチ1402を介してアクセス可能なメモリマップ上にマッピングされる。CDT回路1420は、たとえば、トレースハードウェア、トレースバッファ、性能カウンタ、および/またはストールロジックなどの回路を含み得る。CDT回路1420のトレースハードウェアは、トレースデータを収集することができる。CDT回路1420のトレースバッファは、トレースデータをバッファリングすることができる。さらに、CDT回路1420は、トレースデータをストリームスイッチ1406に出力することができる。
1つまたは複数の実施形態では、CDT回路1420は、データ、たとえば、トレースおよび/またはデバッグデータを収集し、そのようなデータをパケット化し、次いで、パケット化されたデータをストリームスイッチ1406を通して出力することが可能である。たとえば、CDT回路1420は、パケット化されたデータを出力し、そのようなデータをストリームスイッチ1406に提供することができる。加えて、構成レジスタ1436またはその他は、デバッグ中に、それぞれのタイルのメモリマッピングされたスイッチ1402を通じて、メモリマッピングされたトランザクションを介して、読み出しまたは書き込みすることができる。同様に、CDT回路1420内のパフォーマンスカウンタは、プロファイリング中に、それぞれのタイルのメモリマッピングされたスイッチ1402を通じて、メモリマッピングされたトランザクションを介して、読み出しまたは書き込むことができる。
1つまたは複数の実施形態では、CDT回路1420は、イベントブロードキャスト回路1404(もしくはイベントブロードキャスト回路1430)によって伝搬される任意のイベント、またはCDT回路1420に結合されるイベントブロードキャスト回路1404のインターフェースによって利用されるビットマスクに従って選択されたイベントを受信することができる。CDT回路1420は、さらに、イベントロジック1432によって生成されたイベントを受信することができる。たとえば、CDT回路1420は、PL310からであれ、DPE304からであれ、タイル1304(たとえば、イベントロジック1432および/もしくはイベントブロードキャストスイッチ1404)からであれ、ならびに/またはSoCインターフェースブロック104の他のタイルからであれ、ブロードキャストイベントを受信することができる。CDT回路1420は、複数のそのようなイベントをパケット内に一緒にパッキング、たとえばパケット化し、パケット化されたイベントをタイムスタンプと関連付けることができる。CDT回路1420はさらに、パケット化されたイベントをストリームスイッチ1406を介してタイル1304の外部の宛先に送信することができる。イベントは、ストリームスイッチ1406およびストリームマルチプレクサ/デマルチプレクサ1408により、PLインターフェース1410、DMAエンジン1412、および/またはNoCストリームインターフェース1414を介して送信され得る。
DPE GCSレジスタ1438は、DPEアレイ102へのおよび/またはDPEアレイ102からのセキュアアクセスを有効または無効にするために使用されるDPEグローバル制御設定/ビット(本明細書では「セキュリティビット」とも称される)を格納し得る。DPE GCSレジスタ1438は、図14Cに関連して以下でより詳細に記載されるように、SoCセキュア/初期化インターフェースを介してプログラムされ得る。SoCセキュア/初期化インターフェースから受信されたセキュリティビットは、図14Aに示されるように、バスを介してSoCインターフェースブロック104の1つのタイルから次のタイルに伝搬してもよい。
1つまたは複数の実施形態では、(たとえば、NoC308を使用する)DPEアレイ102への外部メモリマッピングされたデータ転送は、安全でなく信頼できない。DPE GCSレジスタ1438内にセキュリティビットを設定しなければ、(たとえばNoC308を介して)メモリマッピングされたデータ転送によって通信することができるデバイス100内の任意のエンティティが、DPEアレイ102と通信することができる。DPE GCSレジスタ1438内にセキュリティビットを設定することによって、DPEアレイ102と通信することが許可される特定のエンティティは、安全なトラフィックを生成できる指定されたエンティティのみがDPEアレイ102と通信することができるように定義され得る。
たとえば、メモリマッピングされたスイッチ1402のメモリマッピングされたインターフェースは、NoC308と通信することができる。メモリマッピングされたデータ転送は、トランザクションが安全であるか安全でないかを指定する追加のサイドバンド信号、たとえば、ビットを含み得る。DPE GCSレジスタ1438内のセキュリティビットが設定されると、SoCインターフェースブロック104に進入するメモリマッピングされたトランザクションは、NoC308からSoCインターフェースブロック104に到着するメモリマッピングされたトランザクションが安全であることを示すようにサイドバンド信号が設定されなければならない。SoCインターフェースブロック104に到着するメモリマッピングされたトランザクションが、サイドバンドビットが設定されておらず、セキュリティビットがDPE GCSレジスタ1438内に設定されている場合、SoCインターフェースブロック104は、トランザクションがDPE304に進入または通過することを許可しない。
1つまたは複数の実施形態では、SoCは、信頼のルートとして動作するセキュアエージェント(たとえば、回路)を含む。セキュアエージェントは、DPE GCSレジスタ1438のセキュリティビットが設定されると、DPEアレイ102にアクセスするためにメモリマッピングされたトランザクション内にサイドバンドビットを設定するために必要な許可で、SoC内に異なるエンティティ(たとえば回路)を構成することが可能である。SoCが構成された時点で、セキュアエージェントは、PL310またはPS312で実現され得る異なるマスタに許可を与え、それによって、そのようなマスタに、NoC308を介してDPEアレイ102にセキュアトランザクションを発行する(または発行しない)能力を与える。
図14Bは、タイル1304の別の例示的な実現例を示す。図14Bに示される例示的なアーキテクチャは、SoCインターフェースブロック104に含まれる他のタイルのいずれかを実現するためにも使用され得る。図14Bの例は、図14Aに示されるアーキテクチャの簡略化されたバージョンを示す。図14Bのタイルアーキテクチャは、デバイス100内のDPEならびに他のサブシステムおよび/またはブロック間の接続性を与える。たとえば、図14Bのタイル1304は、DPEおよびPL310、アナログ/混合信号回路ブロック、ASIC、または本明細書で説明する他のサブシステムの間のインターフェースを提供してもよい。図14Bのタイルアーキテクチャは、NoC308への接続性を提供しない。したがって、DMAエンジン1412、NoCインターフェース1414、セレクタブロック1416、ブリッジ1418、およびストリームマルチプレクサ/デマルチプレクサ1408は省略される。したがって、図14Bのタイル1304は、SoCのより少ない面積を使用して実現され得る。さらに、図示されるように、ストリームスイッチ1406は、PLインターフェース1410に直接結合される。
図14Bの例示的なアーキテクチャは、NoC308からDPEを構成する目的で、メモリマッピングされたデータ、たとえば、構成データを受信することができない。そのような構成データは、近傍のタイルからメモリマッピングされたスイッチ1402を介して受信され、タイル1304が管理するDPEのサブセットに(たとえば、図14Bのタイル1304の上のDPEの列に入るまで)向けられ得る。
図14Cは、タイル1304の別の例示的な実現例を示す。特定の実施形態では、図14Cに示されるアーキテクチャは、SoCインターフェースブロック104内にただ1つのタイルを実現するために使用され得る。たとえば、図14Cに示されるアーキテクチャは、SoCインターフェースブロック104内にタイル1302を実現するために使用され得る。図14Cに示すアーキテクチャは、図14Bに示すアーキテクチャと同様である。図14Cでは、SoCセキュア/初期化インターフェース1440、クロック信号生成器1442、およびグローバルタイマ1444などの追加のコンポーネントが含まれる。
図14Cの例では、SoCセキュア/初期化インターフェース1440は、SoCインターフェースブロック104のためのさらなるインターフェースを提供する。1つまたは複数の実施形態では、SoCセキュア/初期化インターフェース1440は、NoC周辺相互接続として実現される。SoCセキュア/初期化インターフェース1440は、DPEアレイ102(図示せず)用のグローバルリセットレジスタおよびDPE GCSレジスタ1438へのアクセスを提供することができる。特定の実施形態では、DPE GCSレジスタ1438は、クロック信号生成器1442のための構成レジスタを含む。図示されているように、SoCセキュア/初期化インターフェース1440は、セキュリティビットをDPE GCSレジスタ1438に与え、セキュリティビットをSoCインターフェースブロック104の他のタイル内の他のDPE GCSレジスタ1438に伝搬することができる。特定の実施形態では、SoCセキュア/初期化インターフェース1440は、SoCインターフェースブロック104のための単一のスレーブエンドポイントを実現する。
図14Cの例では、クロック信号生成器1442は、1つもしくは複数のクロック信号1446および/または1つもしくは複数のリセット信号1450を生成することが可能である。クロック信号1446および/またはリセット信号1450は、DPE304の各々および/またはDPEアレイ102のSoCインターフェースブロック104の他のタイルに分配され得る。1つまたは複数の実施形態では、クロック信号生成器1442は、1つまたは複数の位相ロックループ回路(PLL)を含み得る。図示のように、クロック信号生成器1442は、DPEアレイ102の外部にありSoC上に位置する別の回路によって生成された基準クロック信号を受信することができる。クロック信号生成器1442は、受信された基準クロック信号に基づいてクロック信号1446を生成することができる。
図14Cの例では、クロック信号生成器1442は、SoCセキュア/初期化インターフェース1440を介して構成される。たとえば、クロック信号生成器1442は、DPE GCSレジスタ1438にデータをロードすることによって構成され得る。したがって、DPEアレイ102の1つまたは複数のクロック周波数およびリセット信号1450の生成は、SoCセキュア/初期化インターフェース1440を介してDPE GCSレジスタ1438に適切な構成データを書き込むことによって設定され得る。試験目的のために、クロック信号1446および/またはリセット信号1450は、PL310にも直接ルーティングされ得る。
SoCセキュア/初期化インターフェース1440は、SoC制御/デバッグ(回路)ブロック(たとえば、図示されないデバイス100の制御および/またはデバッグサブシステム)に結合され得る。1つまたは複数の実施形態では、SOCセキュア/初期化インターフェース1440は、SOC制御/デバッグブロックにステータス信号を提供することができる。例示的かつ非限定的な例として、SoCセキュア/初期化インターフェース1440は、クロック信号生成器1440の内部から生成された「PLLロック」信号をSoC制御/デバッグブロックに与えることができる。PLLロック信号は、PLLが基準クロック信号上でいつロックを獲得するかを示すことができる。
SoCセキュア/初期化インターフェース1440は、インターフェース1448を介して命令および/またはデータを受信することができる。データは、本明細書で記載されるセキュリティビット、クロック信号生成器構成データ、および/またはDPE GCSレジスタ1438に書き込まれ得る他のデータを含み得る。
グローバルタイマ1444は、CDT回路1420にインターフェースすることが可能である。たとえば、グローバルタイマ1444は、CDT回路1420に結合され得る。グローバルタイマ1444は、追跡に使用されるイベントにタイムスタンプを付与するためにCDT回路1420によって使用される信号を与えることが可能である。1つまたは複数の実施形態では、グローバルタイマ1444は、SoCインターフェース回路104のタイルのうちの他のタイル内のCDT回路1420に結合され得る。たとえば、グローバルタイマ1444は、図14A、図14B、および/または図14Cの例示的なタイル内のCDT回路1420に結合され得る。グローバルタイマ1444はまた、SoC制御/デバッグブロックにも結合され得る。
図14A、図14B、および図14Cのアーキテクチャをまとめて参照すると、タイル1304は、さまざまな異なるデータ経路を使用してDPE304と通信することができる。一例では、タイル1304は、DMAエンジン1412を使用してDPE304と通信することができる。たとえば、タイル1304は、DMAエンジン1412を使用して、DPEアレイ102の1つまたは複数のDPEのDMAエンジン(たとえば、DMAエンジン816)に通信することができる。通信は、DPEからSoCインターフェースブロック104のタイルへ、またはSoCインターフェースブロック104のタイルからDPEへ流れ得る。別の例では、DMAエンジン1412は、DPEアレイ102の1つまたは複数のDPEのコアと、それぞれのDPE内のストリームスイッチを介して、通信することができる。通信は、コアからSoCインターフェースブロック104のタイルへ、および/またはSoCインターフェースブロック104のタイルからDPEアレイ102の1つまたは複数のDPEのコアへ流れ得る。
図15は、PLインターフェース1410の例示的な実現例を示す。図15の例では、PLインターフェース1410は、使用される特定のタイルアーキテクチャに応じて、PL310をストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408に結合する複数のチャネルを含む。図15においてPLインターフェース1410内に示される特定の数のチャネルは、限定ではなく例示のためのものである。他の実施形態では、PLインターフェース1410は、図15に示されるよりも少ないまたは多いチャネルを含むことができる。さらに、PLインターフェース1410はPL310に接続するものとして示されているが、1つまたは複数の他の実施形態では、PLインターフェース1410は、1つまたは複数の他のサブシステムおよび/または回路ブロックに結合することができる。たとえば、PLインターフェース1410は、ASIC、アナログ/混合信号回路、および/または他の回路もしくはサブシステムにも結合することができる。
1つまたは複数の実施形態では、PL310は、DPE304とは異なる基準電圧および異なるクロック速度で動作する。したがって、図15の例では、PLインターフェース1410は、複数のシフトおよび分離回路1502と、複数の非同期FIFOメモリ1504とを含む。各チャネルは、シフト分離回路1502および非同期FIFOメモリ1504を含む。チャネルの第1のサブセットは、PL310(および/または他の回路)からストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408にデータを伝える。チャネルの第2のサブセットは、ストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408からPL310および/または他の回路にデータを伝える。
シフトおよび分離回路1502は、異なる電圧領域間のインターフェースをとることができる。この場合、シフトおよび分離回路1502は、PL310および/または他の回路の動作電圧とDPE304の動作電圧との間で遷移するインターフェースを提供することができる。非同期FIFOメモリ1504は、2つの異なるクロックドメイン間でインターフェースをとることが可能である。この場合、非同期FIFOメモリ1504は、PL310および/または他の回路のクロックレートとDPE304のクロックレートとの間で遷移するインターフェースを提供することができる。
1つまたは複数の実施形態では、非同期FIFOメモリ1504は、DPEアレイ102に対する32ビットインターフェースを有する。非同期FIFOメモリ1504とシフトおよび分離回路1502との間の接続、ならびにシフトおよび分離回路1502とPL310との間の接続は、幅においてプログラム可能(たとえば、構成可能)であり得る。たとえば、非同期FIFOメモリ1504とシフトおよび分離回路1502との間の接続、ならびにシフトおよび分離回路1502とPL310との間の接続は、幅が32ビット、64ビット、または128ビットであるように構成され得る。論じられるように、PLインターフェース1410は、記載されるビット幅を達成するためにメモリマッピングされたスイッチ1402によって構成レジスタ1436に構成データを書き込むことにより構成可能である。メモリマッピングされたスイッチ1402を使用して、PL310側の非同期FIFOメモリ1504側は、32ビット、64ビット、または128ビットのいずれかを使用するように構成可能であり得る。本明細書において提供されるビット幅は、例示のためのものである。他の実施形態では、他のビット幅が使用されてもよい。いずれにせよ、さまざまなコンポーネントについて記載される幅は、構成レジスタ1436にロードされる構成データに基づいて変えることができる。
図16は、NoCストリームインターフェース1414の例示的な実現例を示す。DPEアレイ102は、DPE内のストリームインターフェースを使用してNoC308を介して通信する2つの一般的な方法を有する。一態様では、DPEは、ストリームスイッチ1406を使用してDMAエンジン1412にアクセスすることができる。DMAエンジン1412は、NoC308からのメモリマッピングされたトランザクションを、DPEに送信するためのデータストリームに変換し、DPEからのデータストリームを、NoC308を介して送信するためのメモリマッピングされたトランザクションに変換することができる。別の態様では、データストリームはNoCストリームインターフェース1414に向けられ得る。
図16の例では、NoCストリームインターフェース1414は、NoC308をストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサに結合する複数のチャネルを含む。各チャネルは、FIFOメモリと、アップサイズ回路またはダウンサイズ回路のいずれかとを含み得る。チャネルの第1のサブセットは、NoC308からストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408にデータを伝える。チャネルの第2のサブセットは、ストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408からNoC308にデータを伝える。図16に示されるNoCストリームインターフェース1414内の特定の数のチャネルは、限定ではなく例示を目的としている。他の実施形態では、NoCストリームインターフェース1414は、図16に示されるよりも少ないまたは多いチャネルを含み得る。
1つまたは複数の実施形態では、アップサイズ回路1608(図16では「US回路」と略称される)の各々は、データストリームを受信し、受信されたデータストリームの幅を増大することができる。たとえば、各アップサイズ回路1608は、32ビットデータストリームを受信し、対応するFIFOメモリ1610に128ビットデータストリームを出力し得る。FIFOメモリ1610の各々は、調停およびマルチプレクサ回路1612に結合される。調停およびマルチプレクサ回路1612は、結果として得られた出力データストリームをNoCインターフェース1426に提供するための特定の調停スキームまたは優先度(たとえば、ラウンドロビンもしくは他のスタイル)を使用して、受信されたデータストリーム間で調停することができる。調停およびマルチプレクサ回路1612は、クロックサイクルごとに新たな要求を処理および受け入れることができる。DPE304とNoC308との間のクロックドメイン交差は、NoC308自体内で処理され得る。1つまたは複数の他の実施形態では、DPE304とNoC308との間のクロックドメイン交差は、SoCインターフェースブロック104内で処理され得る。たとえば、クロックドメイン交差は、NoCストリームインターフェース1414内で処理され得る。
デマルチプレクサ1602は、NoC308からデータストリームを受信することができる。たとえば、デマルチプレクサ1602は、NoCインターフェース1426に結合され得る。説明のため、NoCインターフェース1426からのデータストリームは、幅が128ビットであり得る。DPE304とNoC308との間のクロックドメイン交差は、前述したようにNoC308内および/またはNoCストリームインターフェース1414内で処理することができる。デマルチプレクサ1602は、受信されたデータストリームをFIFOメモリ1604のうちの1つに転送することができる。デマルチプレクサ1602がデータストリームを提供する特定のFIFOメモリ1604は、データストリーム自体内において符号化され得る。FIFOメモリ1604は、ダウンサイズ回路1606(図16では「DS回路」と略称する)に接続される。ダウンサイズ回路1606は、時分割多重化を使用してバッファリングした後、受信ストリームをより狭い幅にダウンサイズすることができる。たとえば、ダウンサイズ回路1606は、幅128ビットから幅32ビットにストリームをダウンサイズすることができる。
示されるように、ダウンサイズ回路1606およびアップサイズ回路1608は、使用されるSoCインターフェースブロック104のタイルの特定のアーキテクチャに応じて、ストリームスイッチ1406またはストリームマルチプレクサ/デマルチプレクサ1408に結合される。図16は、例示の目的のために提供され、限定として意図されない。チャネル内のコンポーネント(たとえば、アップサイズ/ダウンサイズ回路およびFIFOメモリ)の順序および/または接続性は様々であり得る。
1つまたは複数の他の実施形態では、図15に関連して記載されるPLインターフェース1410は、図16に関連して記載されるようにアップサイズ回路および/またはダウンサイズ回路を含み得る。たとえば、ダウンサイズ回路は、PL310(または他の回路)からストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408にデータを伝達する各チャネルに含まれ得る。アップサイズ回路は、ストリームスイッチ1406および/またはストリームマルチプレクサ/デマルチプレクサ1408からPL310(または他の回路)にデータを伝達する各チャネルに含まれ得る。
1つまたは複数の他の実施形態では、独立した要素として示されているが、各ダウンサイズ回路1606は、対応するFIFOメモリ1604と、たとえば単一のブロックまたは回路として組み合わせられてもよい。同様に、各アップサイズ回路1608は、対応するFIFOメモリ1610と、たとえば、単一のブロックまたは回路として組み合わせられてもよい。
図17は、DMAエンジン1412の例示的な実現例を示す。図17の例では、DMAエンジン1412はDMAコントローラ1702を含む。DMAコントローラ1702は、2つの別個のモジュールまたはインターフェースに分割され得る。各モジュールは、互いに独立して動作することができる。DMAコントローラ1702は、メモリマッピングからストリームへのインターフェース(インターフェース)1704と、ストリームからメモリマッピングへのインターフェース(インターフェース)1706とを含み得る。インターフェース1704およびインターフェース1706の各々は、2つ以上の別個のチャネルを含み得る。したがって、DMAエンジン1412は、ストリームスイッチ1406からインターフェース1706を介して2つ以上の入力ストリームを受信し、インターフェース1704を介してストリームスイッチ1406に2つ以上の出力ストリームを送信することができる。DMAコントローラ1702は、さらに、マスタのメモリマッピングされたインターフェース1714を含むことができる。マスタのメモリマッピングされたインターフェース1714は、NoC308をインターフェース1704およびインターフェース1706に結合する。
DMAエンジン1412はまた、ハードウェア同期化回路1710およびバッファ記述子レジスタファイル1708も含み得る。ハードウェア同期化回路1710およびバッファ記述子レジスタファイル1708は、マルチプレクサ1712を介してアクセスされ得る。したがって、ハードウェア同期化回路1710およびバッファ記述子レジスタファイル1708の両方は、外部から制御インターフェースを介してアクセスされ得る。そのような制御インターフェースの例は、メモリマッピングされたインターフェースまたはDPEからの制御ストリームインターフェースを含むが、これらに限定されない。DPEの制御ストリームインターフェースの一例は、DPEのコアから出力されるストリーミングインターフェースである。
ハードウェア同期化回路1710は、DMAエンジン1412に含まれる複数のチャネルおよび/またはDMAエンジン1412内のあるチャネルを、ロック要求をポーリングおよび駆動するマスタと同期させるために、使用され得る。たとえば、マスタは、PS312またはPL310内に実現されるデバイスであり得る。別の例では、マスタはまた、ロックが利用可能であるとき、DMAエンジン1412内のハードウェア同期化回路1710によって生成された割込みを受信することもできる。
DMA転送は、バッファ記述子レジスタファイル1708内に格納されたバッファ記述子によって定義され得る。インターフェース1706は、バッファ記述子内の情報に基づいてNoC308への読み出し転送を要求することができる。インターフェース1704からストリームスイッチ1406への送出ストリームは、ストリームスイッチ用の構成レジスタに基づいて、パケット交換または回路交換として構成することができる。
図18は、複数のDPEのための例示的なアーキテクチャを示す。この例示的なアーキテクチャは、DPEアレイ102に含まれ得るDPE304を示す。図18の例示的なアーキテクチャは、チェッカーボードアーキテクチャと呼ばれ得る。図18の例示的なアーキテクチャは、あるDPEのコアが共有メモリを使用して他のDPEの8つまでの他のコアと通信することを可能にする(たとえば、全部で9つのコアが共有メモリを介して通信する)。図18の例では、各DPE304は、図6、図7および図8に関連して記載されたように実現され得る。したがって、各コア602は、4つの異なるメモリモジュール604にアクセスすることができる。各メモリモジュール604は、最大4つの異なるコア602によってアクセスされ得る。
図示されるように、DPEアレイ102は行1,行2,行3,行4,および行5を含む。行1〜行5の各々は、3つのDPE304を含む。図18に示される各行におけるDPE304の特定の数および行の数は、限定ではなく例示を目的としている。行1、行3、および行5を参照すると、これらの行における各DPEのコアは、メモリモジュールの左側に位置している。行2および行4を参照すると、これらの行における各DPEのコアは、メモリモジュールの右に位置している。実際には、行2および行4のDPEの向きは、行1、行3および行5のDPEの向きと比較して、水平方向に反転されるか、または水平方向にフリップされる。DPEの向きは、各交互の行に示されるように反転する。
図18の例では、DPE304は列状に整列している。しかしながら、隣接する行のコアおよびメモリモジュールは、列状に整列されない。図18のアーキテクチャは、DPEが位置する特定の行に基づいてDPEが異なるように実現される異種アーキテクチャの例である。DPE304の水平反転により、隣接する行のコアは整列されない。隣接する行のコアは、互いからオフセットされている。同様に、隣接する行のメモリモジュールも整列していない。隣接する行のメモリモジュールは互いにオフセットされている。しかしながら、1つおきの行のコアは、1つおきの行のメモリモジュールが整列されるように、整列される。たとえば、行1、行3、および行5のコアおよびメモリモジュールは、垂直に(たとえば列状に)整列される。同様に、行2および行4のコアおよびメモリモジュールは、垂直に(たとえば列状に)整列される。
説明のため、DPE304−2、304−4、304−5、304−7、304−8、304−9、304−10、304−11、および304−14のコアは、グループの一部と見なされ、共有メモリを介して通信することができる。矢印は、図18の例示的なアーキテクチャが、共有メモリを使用して異なるDPE内の8つまでの他のコアと通信するコアをどのようにサポートするかを示す。DPE304−8を参照すると、たとえば、コア602−8は、メモリモジュール604−11、604−7、604−8、および604−5にアクセスすることができる。メモリモジュール604−11を通じて、コア602−8は、コア602−14、602−10、および602−11と通信することができる。メモリモジュール604−7を介して、コア602−8は、コア602−7、602−4、および602−10と通信することができる。メモリモジュール604−8を介して、コア602−8は、コア602−9、602−11、および602−5と通信することができる。メモリモジュール604−5を介して、コア602−8は、コア602−4、602−5、および602−2と通信することができる。
図18の例では、コア602−8を除き、グループ内において、グループの共有メモリモジュールのうち2つの異なるメモリモジュールにアクセスすることができる4つの異なるコアが存在する。残りの他の4つのコアは、グループの共有メモリモジュールのうちの1つのメモリモジュールのみを共有する。グループの共有メモリモジュールは、メモリモジュール604−5、604−7、604−8、および604−11を含む。たとえば、コア602−10、602−11、602−4、および602−5の各々は、2つの異なるメモリモジュールにアクセスすることができる。コア602−10は、メモリモジュール604−11および604−7にアクセスすることができる。コア602−11は、メモリモジュール604−11および604−8にアクセスすることができる。コア602−4は、メモリモジュール604−5および604−7にアクセスすることができる。コア602−5は、メモリモジュール604−5および604−8にアクセスすることができる。
図18の例では、全部で最大9個のDPEの9個のコアが、DPEアレイ102のDPE相互接続ネットワークを利用せずに、共有メモリを介して通信可能である。論じられるように、コア602−8は、メモリモジュール604−11、604−7、604−5、および604−8を統合されたメモリ空間として見ることができる。
コア602−14、602−7、602−9、および602−2は、グループの共有メモリモジュールのうちの1つのメモリモジュールにのみアクセスすることができる。コア602−14は、メモリモジュール604−11にアクセスすることができる。コア602−7は、メモリモジュール604−7にアクセスすることができる。コア602−9は、メモリモジュール604−8にアクセスすることができる。コア602−2は、メモリモジュール604−5にアクセスすることができる。
上述したように、4つより多いメモリインターフェースが各メモリモジュールに対して提供される他の実施形態では、コアは、図18のアーキテクチャを使用して共有メモリを介して8つより多い他のコアと通信することができる。
1つまたは複数の他の実施形態では、DPEの特定の行および/または列は、他の行に対してオフセットされ得る。たとえば、行2および行4は、行1、行3および/または行5の始まりと整列していない位置から始まり得る。たとえば、行2および行4は、行1、行3および/または行5の始まりに対して右にシフトされ得る。
図19は、複数のDPEのための別の例示的なアーキテクチャを示す図である。例示的なアーキテクチャは、DPEアレイ102に含まれ得るDPE304を示す。図19に示される例示的なアーキテクチャは、グリッドアーキテクチャと呼ばれ得る。図19の例示的なアーキテクチャは、あるDPEのコアが共有メモリを使用して他のDPEの10個までの他のコアと通信することを可能にする(たとえば、全部で11個のコアが共有メモリを介して通信する)。図19の例では、各DPE304は、図6、図7、および図8に関連して記載されたように実現され得る。したがって、各コア602は、4つの異なるメモリモジュール604にアクセスすることができる。各メモリモジュール604は、最大4つの異なるコア602によってアクセスされ得る。
図示されるように、DPEアレイ102は行1,行2,行3,行4,および行5を含む。行1〜行5の各々は、3つのDPE304を含む。図19に示される各行におけるDPE304の特定の数および行の数は、限定ではなく例示を目的としている。図19の例では、DPE304は垂直に列状に整列している。行1,行2,行3,行4,および行5の各々は、DPEの各他の行と整列している同じ開始点を有する。さらに、各それぞれのDPE304内のコア602およびメモリモジュール604の配置は同じである。換言すれば、コア602は垂直に整列している。同様に、メモリモジュール604は垂直に整列している。
説明のため、DPE304−2、304−4、304−5、304−6、304−7、304−8、304−9、304−10、304−11、304−12、および304−14のコアは、グループの一部と見なされ、共有メモリを介して通信することができる。矢印は、図19の例示的なアーキテクチャが、共有メモリを使用して異なるDPE内の10個までの他のコアと通信するコアをどのようにサポートするかを示す。DPE304−8を参照すると、たとえば、コア602−8は、メモリモジュール604−11、604−8、604−5、および604−9にアクセスすることができる。メモリモジュール604−11を介して、コア602−8は、コア602−14、602−10、および602−11と通信することができる。メモリモジュール604−8を通じて、コア602−8は、コア602−7、602−11、および602−5と通信することができる。メモリモジュール604−5を介して、コア602−8は、コア602−4、602−5、および602−2と通信することができる。メモリモジュール604−9を介して、コア602−8は、コア602−12、602−9、および602−6と通信することができる。
図19の例では、コア602−8を除いて、グループ内において、グループの共有メモリモジュールのうち2つのメモリモジュールにアクセスすることができる2つの異なるコアが存在する。グループの共有メモリモジュールは、メモリモジュール604−5、604−8、604−9、および604−11を含む。グループの残りの8つのコアは、1つのメモリモジュールのみを共有する。たとえば、コア602−11および602−5の各々は、2つの異なるメモリモジュールにアクセスすることができる。コア602−11は、メモリモジュール604−11および604−8にアクセスすることができる。メモリモジュール604−14はコア604−8によってアクセス可能ではないので、メモリモジュール604−14は共有メモリのグループの一部と見なされない。コア602−5は、メモリモジュール604−5および604−8にアクセスすることができる。メモリモジュール604−2はコア602−8によってアクセス可能ではないので、メモリモジュール604−2は共有メモリモジュールのグループの一部と見なされない。
コア602−14、602−10、602−12、602−7、602−9、602−4、602−6、および602−2は、グループの共有メモリモジュールのうちの1つのメモリモジュールにのみアクセスすることができる。コア602−14は、メモリモジュール604−11にアクセスすることができる。コア602−10は、メモリモジュール604−11にアクセスすることができる。コア602−12は、メモリモジュール604−9にアクセスすることができる。コア602−7は、メモリモジュール604−8にアクセスすることができる。コア602−9は、メモリモジュール604−9にアクセスすることができる。コア602−4は、メモリモジュール604−5にアクセスすることができる。コア602−6は、メモリモジュール604−9にアクセスすることができる。コア602−2は、メモリモジュール604−5にアクセスすることができる。
図19の例では、最大11個までのDPEの11個のコアが、DPEアレイ102のDPE相互接続ネットワークを利用せずに共有メモリを介して通信することができる。論じられるように、コア602−8は、メモリモジュール604−11、604−9、604−5、および604−8を統合されたメモリ空間として見ることができる。
上述したように、4つより多いメモリインターフェースが各メモリモジュールに対して提供される他の実施形態では、コアは、図19のアーキテクチャを使用して共有メモリを介して10個より多い他のコアと通信することができる。
図20は、DPEアレイを構成する例示的な方法2000を示す。方法2000は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。
ブロック2002において、DPEアレイに関する構成データがデバイスにロードされる。構成データは、コンピュータシステム(たとえば、ホスト)、オフチップメモリ、または他の好適なソースにかかわらず、さまざまな異なるソースのいずれかから提供され得る。
ブロック2004において、構成データがSoCインターフェースブロックに与えられる。特定の実施形態では、構成データはNoCを介して与えられる。SoCインターフェースブロックのタイルは、構成データを受信し、その構成データをメモリマッピングされたデータに変換することが可能であり、メモリマッピングされたデータはタイル内に含まれるメモリマッピングされたスイッチに与えられ得る。
ブロック2006において、構成データは、SoCインターフェースブロックのタイル間で、目標DPEへのインターフェースとして動作するかまたはそれを提供する特定のタイルに伝搬する。目標DPEは、構成データがアドレス指定されるDPEである。たとえば、構成データは、構成データのうちの異なる部分が向けられるべき特定のDPEを指定するアドレスを含む。SoCインターフェースブロックのタイル内のメモリマッピングされたスイッチは、構成データのうちの異なる部分を、目標DPE(たとえば目標DPEを含むDPEのサブセット)のためのインターフェースとして動作する特定のタイルに伝搬することができる。
ブロック2008において、目標DPEに対するインターフェースとして動作するSoCインターフェースブロックのタイルは、目標DPEに対する構成データの部分を目標DPEに方向付けることができる。たとえば、1つまたは複数の目標DPEへのインターフェースを提供するタイルは、構成データの一部を、そのタイルがインターフェースを提供するDPEのサブセットに向けることができる。上述したように、DPEのサブセットは、1つまたは複数の目標DPEを含む。各タイルは、構成データを受信すると、構成データの任意の部分が、そのタイルがインターフェースを提供するDPEの同じサブセット内の他のDPEにアドレス指定されるかどうかを判定することができる。タイルは、DPEのサブセット内のDPEにアドレス指定された任意の構成データを、そのようなDPEに向ける。
ブロック2010において、構成データは、目標DPEにロードされ、その中に含まれるDPEの要素をプログラミングする。たとえば、構成データは、ストリームインターフェース、コア(たとえば、ストリームインターフェース、カスケードインターフェース、コアインターフェース)、メモリモジュール(たとえば、DMAエンジン、メモリインターフェース、アービタなど)、ブロードキャストイベントスイッチ、および/またはブロードキャストロジックなどの目標DPEの要素をプログラミングするために構成レジスタにロードされる。構成データはまた、コアのプログラムメモリにロードされ得る実行可能なプログラムコード、および/またはメモリモジュールのメモリバンクにロードされ得るデータを含み得る。
受信された構成データはまた、SoCインターフェースブロック104のタイルのうちの1つもしくは複数またはすべてにアドレス指定される部分も含み得ることを理解されたい。その場合、それぞれのタイル内のメモリマッピングされたスイッチは、構成データを適切な(たとえば目標)タイルに伝送し、そのようなデータを抽出し、そのようなデータをそれぞれのタイル内の適切な構成レジスタに書き込むことができる。
図21は、DPEアレイの動作の例示的な方法2100を示す。方法2100は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法2100は、DPEおよび/またはSoCインターフェースブロックに構成データがロードされた状態から始まる。説明のため、図3を参照する。
ブロック2102において、DPE304−15(たとえば、「第1のDPE」)のコア602−15(たとえば、「第1のコア」)がデータを生成する。生成されるデータは、アプリケーションデータであってもよい。たとえば、コア602−15は、コアによってアクセス可能なメモリモジュールに格納されたデータを処理してもよい。メモリモジュールは、本明細書で記載されているように、DPE304−15内にあってもよく、異なるDPE内にあってもよい。データは、たとえば、SoCインターフェースブロック104を使用して、デバイスの別のDPEおよび/または別のサブシステムから受信され得る。
ブロック2104において、コア602−15は、DPE304−15のメモリモジュール604−15にデータを格納する。ブロック2106において、近傍のDPE(たとえば、DPE304−25、304−16、および/または304−5)内の1つまたは複数のコアが、DPE304−15のメモリモジュール604−15からデータを読み出す。近傍のDPE内のコアは、メモリモジュール604−15から読み出されたデータをさらなる計算に利用することができる。
ブロック2108において、DPE304−15は、任意選択肢的に、データを1つまたは複数の他のDPEにストリームインターフェースを介して送信する。データが送信されるDPEは、非近傍のDPEであり得る。たとえば、DPE304−15は、メモリモジュール604−15からDPE304−35、304−36などの1つまたは複数の他のDPEにデータを送信することができる。論じられるように、1つまたは複数の実施形態では、DPE304−15は、DPEアレイ102のDPE相互接続ネットワーク内のストリームインターフェースを介してアプリケーションデータをブロードキャストおよび/またはマルチキャストすることができる。別の例では、異なるDPEに送信されるデータは、データのうちの異なる部分であってもよく、データの各異なる部分は、異なる目標DPEを対象とする。図21には示されていないが、コア602−15は、カスケードインターフェースを使用して、および/またはストリームスイッチを使用してコアから直接、DPEアレイ102の別のコアおよび/またはDPEにデータを送信することもできる。
ブロック2110において、コア602−15は、任意選択肢的に、カスケードインターフェースを介して近傍のコアにデータを送信し、および/または近傍のコアからデータを受信する。データはアプリケーションデータであってもよい。たとえば、コア602−15は、カスケードインターフェースを介して、DPE304−14のコア602−14から直接データを受信し、および/またはDPE304−16のコア602−16にデータを直接送信することができる。
ブロック2112において、DPE304−15は、任意選択肢的に、SoCインターフェースブロックを介して1つまたは複数のサブシステムにデータを送信し、および/または1つまたは複数のサブシステムからデータを受信する。データはアプリケーションデータであってもよい。たとえば、DPE304−15は、データを、NoC308を介してPS312に、PL310に実現される回路に、NoC308を介して選択されたハードワイヤード回路ブロックに、PL310を介して選択されたハードワイヤード回路ブロックに、および/または外部メモリなどの他の外部サブシステムに送信することができる。同様に、DPE304−15は、SoCインターフェースブロックを介してそのような他のサブシステムからアプリケーションデータを受信することができる。
図22は、DPEアレイの動作の別の例示的な方法2200を示す。方法2200は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法2200は、DPEアレイに構成データがロードされた状態から始まる。
ブロック2202において、第1のコア、たとえば、第1のDPE内のコアは、ハードウェア同期化回路に目標のメモリ領域に対するロックを要求する。第1のコアは、たとえば、第1のDPE、たとえば第1のコアと同じDPE内に位置するメモリモジュール内の目標のメモリ領域について、または第1のコアとは異なるDPE内に位置するメモリモジュール内の目標のメモリ領域に対して、ハードウェア同期化回路にロックを要求することが可能である。第1のコアは、アクセスされるべき目標のメモリ領域と同じDPEに位置する特定のハードウェア同期化回路にロックを要求することが可能である。
ブロック2204において、第1のコアは、要求されたロックを取得する。ハードウェア同期化回路は、たとえば、目標のメモリ領域に対する要求されたロックを第1のコアに付与する。
ブロック2206において、ロックを取得したことに応答して、第1のコアは、目標のメモリ領域にデータを書き込む。たとえば、目標のメモリ領域が第1のDPE内にある場合、第1のコアは、第1のDPE内のメモリモジュール内に位置するメモリインターフェースを介して、目標のメモリ領域にデータを書き込むことができる。別の例では、目標のメモリ領域が、第1のコアとは異なるDPEに位置する場合、第1のコアは、本明細書で記載される任意のさまざまな技法を使用して、目標のメモリ領域にデータを書き込むことができる。たとえば、第1のコアは、図10に関連して記載される機構のいずれかを介して、目標のメモリ領域にデータを書き込むことができる。
ブロック2208において、第1のコアは、目標のメモリ領域上のロックを解放する。ブロック2210において、第2のコアが、第1のコアによって書き込まれたデータを含む目標のメモリ領域上のロックを要求する。第2のコアは、目標のメモリ領域と同じDPEに位置してもよく、または目標のメモリ領域とは異なるDPEに位置してもよい。第2のコアは、ロックを第1のコアに付与した同じハードウェア同期化回路にロックを要求する。ブロック2212において、第2のコアは、ハードウェア同期化回路からロックを取得する。ハードウェア同期化回路は、ロックを第2のコアに付与する。ブロック2214において、第2のコアは、目標のメモリ領域からデータにアクセスし、そのデータを処理のために利用することが可能である。ブロック2216において、第2のコアは、たとえば、目標のメモリ領域へのアクセスがもはや必要でない場合には、目標のメモリ領域に対するロックを解放する。
図22の例は、メモリ領域へのアクセスに関連して記載される。特定の実施形態では、第1のコアは、目標のメモリ領域に直接データを書き込むことができる。他の実施形態では、第1のコアは、(たとえば第1のDPEにおける)ソースのメモリ領域から(たとえば第2のまたは異なるDPE内に位置する)目標のメモリ領域にデータを移動させることができる。この場合、第1のコアは、データ転送を行うために、ソースのメモリ領域および目標のメモリ領域のロックを取得する。
他の実施形態では、第1のコアは、第2のコアの動作をストールさせるために第2のコアに対するロックを取得し、次いで、第2のコアの動作を継続させるためにロックを解放することができる。たとえば、第1のコアは、データが第2のコアによる使用のために目標のメモリ領域に書き込まれる間に第2のコアの動作をストールするために、目標のメモリ領域のロックに加えて第2のコアのロックを取得してもよい。第1のコアがデータの書込みを終了すると、第1のコアは、目標のメモリ領域上のロックおよび第2のコア上のロックを解放してもよく、それにより、第2のコアは、目標のメモリ領域のロックを獲得すると、そのデータを処理することができる。
さらに他の実施形態では、図10Cに示されるように、第1のコアは、同じDPE内のメモリモジュールから、たとえば、メモリモジュール内のDMAエンジンを介して、別のコアに直接データ転送を開始することができる。
図23は、DPEアレイの動作の別の例示的な方法を示す。方法2300は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法2300は、DPEアレイに構成データがロードされた状態から始まる。
ブロック2302において、第1のコアは、そこに含まれる累積レジスタにデータを置く。たとえば、第1のコアは、中間結果であれ、最終結果であれ、計算の一部が別のコアに直接提供されることになるかどうかについて、計算を実行してもよい。この場合、第1のコアは、その中に含まれる累積レジスタ内に、第2のコアに送信されるべきデータをロードすることができる。
ブロック2304において、第1のコアは、その中に含まれる累積レジスタからデータを第2のコアに第1のコアのカスケードインターフェース出力から送信する。ブロック2306において、第2のコアは、第2のコアのカスケードインターフェース入力上で第1のコアからのデータを受信する。次いで、第2のコアは、データを処理するか、またはデータをメモリに格納することができる。
1つまたは複数の実施形態では、コアによるカスケードインターフェースの利用は、構成データのロードによって制御され得る。たとえば、カスケードインターフェースは、構成データに基づいて、特定のアプリケーションのために必要に応じて、連続するコア対間で有効または無効にされてもよい。特定の実施形態では、カスケードインターフェースが有効にされ、カスケードインターフェースの使用は、コアのプログラムメモリにロードされたプログラムコードに基づいて制御され得る。他の場合では、カスケードインターフェースの使用は、コアに含まれる専用回路および構成レジスタによって制御されてもよい。
図24は、DPEアレイの動作の別の例示的な方法を示す。方法2400は、例示の目的のために提供され、本開示内で記載される本発明の構成を限定することを意図するものではない。方法2400は、DPEアレイに構成データがロードされた状態から始まる。
ブロック2402において、第1のDPE内のイベントロジックは、1つまたは複数のイベントを第1のDPE内においてローカルに検出する。イベントは、コアから、メモリモジュールから、またはコアおよびメモリモジュールの両方から検出され得る。ブロック2404において、第1のDPE内のイベントブロードキャスト回路は、第1のDPEにロードされた構成データに基づいてイベントをブロードキャストする。ブロードキャスト回路は、ブロック2402で生成されたイベントのうちの選択されたイベントをブロードキャストすることができる。イベントブロードキャスト回路は、DPEアレイ102内の1つまたは複数の他のDPEから受信され得る選択されたイベントをブロードキャストすることもできる。
ブロック2406において、DPEからのイベントは、SoCインターフェースブロック内のタイルに伝搬される。たとえば、イベントは、構成データによって決定されたパターンおよび/またはルートでDPEを介して4つの基本四方位方向の各々に伝搬され得る。特定のDPE内のブロードキャスト回路は、SoCインターフェースブロック内のタイルまでイベントを伝搬するように構成され得る。
ブロック2408において、SoCインターフェースブロックのタイル内のイベントロジックは、任意選択肢的に、イベントを生成する。ブロック2410において、SoCインターフェースブロックのタイルは、任意選択肢的に、SoCインターフェースブロック内の他のタイルにイベントをブロードキャストする。SoCインターフェースブロックのタイル内のブロードキャスト回路は、タイル自体で生成されるイベントおよび/または他のソース(たとえば、SoCインターフェースブロックの他のタイルであるであろうと、DPEであろうと)から受信されたイベントのうちの選択されたイベントをSoCインターフェースブロックの他のタイルにブロードキャストすることができる。
ブロック2412において、SoCインターフェースブロックのタイルは、任意選択肢的に、1つまたは複数の割り込みを生成する。割り込みは、たとえば、割り込みハンドラ1434によって生成され得る。割り込みハンドラは、特定のイベント、イベントの組み合わせ、および/またはイベントのシーケンスを経時的に受信することに応答して、1つまたは複数の割り込みを生成することができる。割込みハンドラは、生成された割込みをPS312などの他の回路および/またはPL310内に実現される回路に送信することができる。
ブロック2414において、SoCインターフェースブロックのタイルは、任意選択肢的に、イベントを1つまたは複数の他の回路に送信する。たとえば、CDT回路1420は、イベントをパケット化し、SoCインターフェースブロックのタイルから、PS312、PL310内の回路、外部メモリ、またはSoCを有する別の宛先に、イベントを送信することができる。
1つまたは複数の実施形態では、PS312は、SoCインターフェースブロック104のタイルによって生成された割り込みに応答することができる。たとえば、PS312は、特定の割り込みの受信に応答してDPEアレイ102をリセットすることができる。別の例では、PS312は、特定の割り込みに応答して、DPEアレイ102またはDPEアレイ102の一部を再構成する(たとえば部分的再構成を実行する)ことができる。別の例では、PS312は、DPE内のコアによる使用のために、DPEの異なるメモリモジュールに新たなデータをロードするなど、他のアクションをとることができる。
図24の例では、PS312は、割り込みに応答して動作を行う。他の実施形態では、PS312は、DPEアレイ102のためのグローバルコントローラとして動作してもよい。PS312は、メモリモジュールに格納され、ランタイム中にDPEアレイ102の1つまたは複数のDPE(たとえばコア)によって使用されるアプリケーションパラメータを制御することができる。例示的かつ非限定的な例として、1つまたは複数のDPEは、フィルタを実現するカーネルとして動作し得る。この場合、PS312は、PS312がDPEアレイ102のランタイム中に、たとえばランタイム時に動的にフィルタの係数を計算および/または修正することを可能にするプログラムコードを実行することができる。PS312は、SoC内で検出された特定の条件および/または信号に応答して係数を計算および/または更新することができる。たとえば、PS312は、何らかの検出された状況に応答して、フィルタのための新たな係数を計算すること、および/またはそのような係数をアプリケーションメモリに(たとえば1つまたは複数のメモリモジュールに)に書き込むことが可能である。PS312に係数などのデータをメモリモジュールに書き込ませ得る条件の例は、DPEアレイ102から特定のデータを受信すること、SoCインターフェースブロックから割り込みを受信すること、DPEアレイ102からイベントデータを受信すること、SoCの外部のソースから信号を受信すること、SoC内部から別の信号を受信すること、ならびに/またはSoC内のソースもしくはSoCの外部から新たなおよび/もしくは更新された係数を受信することを含み得るが、これらに限定されない。PS312は、新たな係数を計算し、および/または新たな係数をアプリケーションデータ、たとえば、コアによって利用されるメモリモジュールに書き込むことができる。
別の例では、PS312は、DPEの開始、停止、および/またはシングルステップ化実行などのアクションを実行することができるデバッガアプリケーションを実行することができる。PS312は、NoC308を介してDPEの開始、停止、および/またはシングルステップ化を制御することができる。他の例では、PL310において実現される回路は、デバッグ動作を使用してDPEの動作を制御可能であり得る。
説明の目的のために、本明細書に開示されるさまざまな本発明の概念の充分な理解を促すために、具体的な名称が記載される。しかしながら、本明細書で使用される専門用語は、本発明の構成の特定の態様を説明することのみを目的とし、限定することを意図するものではない。
本明細書で定義されるとおりでは、単数形「a」、「an」、および「the」は、文脈が明確にそうではないことを示さない限り、複数形も含むことが意図される。
本明細書で定義されるとおりでは、「少なくとも1つ」、「1つまたは複数の」、および「および/または」という用語は、別段の明示的な記載がない限り、動作において連言的および選言的の両方であるオープンエンド表現である。たとえば、「A、B、およびCのうちの少なくとも1つ」、「A、B、またはCのうちの少なくとも1つ」、「A、B、およびCのうちの1つまたは複数」、「A、B、またはCのうちの1つまたは複数」、および「A、B、および/またはC」という表現の各々は、Aのみ、Bのみ、Cのみ、AおよびBを一緒に、AおよびCを一緒に、BおよびCを一緒に、またはA、BおよびCを一緒に、を意味する。
本明細書で定義されるとおりでは、「自動的に」という用語は、人間の介入を伴わないことを意味する。
本明細書で定義されるとおりでは、「場合(if)」という語は、文脈に応じて、「とき(when)」または「〜すると(upon)」または「〜に応答して(in response 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)」は、アクションまたはイベントに容易に応答または反応することを意味する。応答または反応は、自動的に行われる。したがって、第2のアクションが第1のアクションに「応答して」実行される場合、第1のアクションの発生と第2のアクションの発生との間には因果関係が存在する。「応答して」という表現は、因果関係を示す。
本明細書で定義されるとおりでは、「一実施形態」、「ある実施形態」、「1つまたは複数の実施形態」、「特定の実施形態」、または同様の文言は、実施形態に関連して記載される特定の特徴、構造、または特性が、本開示内で記載される少なくとも1つの実施形態に含まれることを意味する。したがって、本開示全体を通して「一実施形態において」、「ある実施形態において」、「1つまたは複数の実施形態において」、「特定の実施形態において」、および同様の文言の出現は、必ずしも全て同じ実施形態を指すわけではない。「実施形態」および「構成(arrangement)」という用語は、本開示内で互換的に使用される。
本明細書で定義されるとおりでは、「実質的に」という文言は、記載される特性、パラメータ、または値が正確に達成される必要はないが、たとえば、公差、測定誤差、測定精度制限、および当業者に公知の他の因子を含む偏差または変動が、特性によって与えられることが意図された効果を排除しない量で生じ得ることを意味する。
第1、第2などの文言は、本明細書では、さまざまな要素を記述するために使用され得る。これらの要素は、これらの文言によって限定されるべきではなく、なぜならば、これらの文言は、特段の断りがない限り、または文脈によってそうではないと明記されない限り、1つの要素を別の要素から区別するためにのみ使用されるからである。
図面のフローチャートおよびブロック図は、本発明の構成のさまざまな態様によるシステム、デバイス、および/または方法の可能な実現例のアーキテクチャ、機能、ならびに動作を示す。いくつかの代替的実現例では、ブロックに記載される動作は、図に記載される順序から外れて行われ得る。たとえば、連続して示される2つのブロックは、実質的に同時に実行され得るか、または関与する機能に応じて、時には逆の順序で実行され得る。他の例では、ブロックは、概して、昇順の数値順序で実行され得るが、さらに他の例では、1つまたは複数のブロックは、さまざまな順序で実行され得、それらの結果は、格納され、直後には続かない後のブロックまたは他のブロックにおいて利用される。
特許請求の範囲に見られるすべてのミーンズまたはステッププラスファンクション要素の対応する構造、材料、行為、および等価物は、具体的に特許請求される他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料、または行為を含むことが意図される。
1つまたは複数の実施形態では、あるデバイスは、複数のDPEを含み得る。各DPEは、コアおよびメモリモジュールを含み得る。各コアは、同じDPE内のメモリモジュールおよび複数のDPEのうちの少なくとも1つの他のDPE内のメモリモジュールにアクセスするように構成され得る。
一態様では、各コアは、複数の近傍のDPEのメモリモジュールにアクセスするように構成され得る。
別の態様では、複数のDPEのコアは、直接結合され得る。
別の態様では、複数のDPEの各々は、ハードワイヤードかつプログラム可能な回路ブロックである。
別の態様では、各DPEは、複数のDPEから選択された1つまたは複数のDPEと通信するように構成されたストリームスイッチを含む相互接続回路を含み得る。ストリームスイッチは、1つまたは複数の選択されたDPE、たとえば、他のDPEと通信するようにプログラム可能であり得る。
デバイスはまた、サブシステムと、複数のDPEをデバイスのサブシステムに結合するように構成されるSoCインターフェースブロックとを含み得る。一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されるプロセッサを含む。さらに別の態様では、サブシステムは、特定用途向け集積回路および/またはアナログ/混合信号回路を含む。
別の態様では、ストリームスイッチは、SoCインターフェースブロックに結合され、デバイスのサブシステムと通信するように構成される。
別の態様では、各DPEの相互接続回路は、SoCインターフェースブロックに結合されるメモリマッピングされたスイッチを含み得、メモリマッピングされたスイッチは、SoCインターフェースブロックからDPEをプログラミングするための構成データを通信するように構成される。メモリマッピングされたスイッチは、制御データまたはデバッグデータのうちの少なくとも1つをSoCインターフェースブロックと通信するように構成され得る。
別の態様では、複数のDPEは、イベントブロードキャストネットワークによって相互接続され得る。
別の態様では、SoCインターフェースブロックは、サブシステムと複数のDPEのイベントブロードキャストネットワークとの間でイベントを交換するように構成され得る。
1つまたは複数の実施形態では、ある方法は、第1のデータ処理エンジンの第1のコアがデータを生成することと、第1のコアが第1のデータ処理エンジン内の第1のメモリモジュールにデータを書き込むことと、第2のデータ処理エンジンの第2のコアが第1のメモリモジュールからデータを読み出すこととを含み得る。
一態様では、この方法は、第1のDPEおよび第2のDPEが近傍のDPEであることを含み得る。
別の態様では、この方法は、さらに、第1のコアがカスケードインターフェースを介して第2のコアに直接さらなるアプリケーションデータを提供することができることを含み得る。
別の態様では、この方法は、さらに第1のコアがストリームスイッチを介して第3のDPEにアプリケーションデータを提供することができることを含み得る。
別の態様では、この方法は、第2のDPEを含む選択された他のDPEと通信するように第1のDPEをプログラミングすることを含み得る。
1つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンと、サブシステムと、複数のデータ処理エンジンおよびサブシステムに結合されるSoCインターフェースブロックとを含み得る。SoCインターフェースブロックは、サブシステムと複数のデータ処理エンジンとの間でデータを交換するように構成されてもよい。
一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されたプロセッサを含む。別の態様では、サブシステムは、特定用途向け集積回路および/またはアナログ/混合信号回路を含む。
別の態様では、SoCインターフェースブロックは複数のタイルを含み、各タイルは複数のDPEのサブセットと通信するように構成される。
別の態様では、各タイルは、構成データの第1の部分を少なくとも1つの近傍のタイルに提供し、構成データの第2の部分を複数のDPEのサブセットのうちの少なくとも1つに提供するように構成された、メモリマッピングされたスイッチを含み得る。
別の態様では、各タイルは、第1のデータを少なくとも1つの近傍のタイルに提供し、第2のデータを複数のDPEのうちの少なくとも1つに提供するように構成されたストリームスイッチを含むことができる。
別の態様では、各タイルは、タイル内で生成されるイベントおよびタイルの外部の回路からのイベントを受信するように構成されたイベントブロードキャスト回路を含み得、イベントブロードキャスト回路は、イベントのうちの選択されたものを選択された宛先に提供するようにプログラム可能である。
別の態様では、SoCインターフェースブロックは、選択されたイベントをパケット化し、パケット化された選択されたイベントをサブシステムに提供するように構成された、制御、デバッグ、およびトレース回路を含み得る。
別の態様では、SoCインターフェースブロックは、イベントブロードキャスト回路をサブシステムに結合するインターフェースを含むことができる。
1つまたは複数の実施形態では、SoCインターフェースブロックのためのタイルは、構成データの第1の部分を近傍のタイルに提供し、構成データの第2の部分を複数のデータ処理エンジンのうちのあるデータ処理エンジンに提供するように構成された、メモリマッピングされたスイッチを含むことができる。タイルは、第1のデータを少なくとも1つの近傍のタイルに提供し、第2のデータを複数のデータ処理エンジンのうちのあるデータ処理エンジンに提供するように構成されたストリームスイッチを含むことができる。タイルは、タイル内で生成されるイベントおよびタイルの外部の回路からのイベントを受信するように構成されたイベントブロードキャスト回路を含み得、イベントブロードキャスト回路は、イベントのうちの選択されたものを選択された宛先に提供するようにプログラム可能である。タイルは、メモリマッピングされたスイッチ、ストリームスイッチ、およびイベントブロードキャスト回路を、タイルを含むデバイスのサブシステムに結合するインターフェース回路を含み得る。
一態様では、サブシステムは、プログラマブルロジックを含む。別の態様では、サブシステムは、プログラムコードを実行するように構成されたプロセッサを含む。別の態様では、サブシステムは、特定用途向け集積回路および/またはアナログ/混合信号回路を含む。
別の態様では、イベントブロードキャスト回路は、タイル内で生成されるイベントまたは複数のDPEのうちの少なくとも1つから受信されたイベントをサブシステムに提供するようにプログラム可能である。
別の態様では、イベントブロードキャスト回路は、サブシステム内で生成されたイベントを少なくとも1つの近傍のタイルまたは複数のDPEのうちの少なくとも1つに提供するようにプログラム可能である。
別の態様では、タイルは、イベントブロードキャスト回路から受信されたイベントに基づいてデバイスのプロセッサへの割り込みを選択的に生成するように構成された割り込みハンドラを含み得る。
別の態様では、タイルは、複数のDPEに分配されるクロック信号を生成するように構成されたクロック生成回路を含むことができる。
別の態様では、インターフェース回路は、ストリームマルチプレクサ/デマルチプレクサ、プログラマブルロジックインターフェース、ダイレクトメモリアクセスエンジン、およびNoCストリームインターフェースを含み得る。ストリームマルチプレクサ/デマルチプレクサは、ストリームスイッチを、プログラマブルロジックインターフェース、ダイレクトメモリアクセスエンジン、およびネットワークオンチップストリームインターフェースに結合することができる。ストリームマルチプレクサ/デマルチプレクサは、ストリームスイッチと、プログラマブルロジックインターフェースと、ダイレクトメモリアクセスエンジンと、NoCストリームインターフェースとの間でデータをルーティングするようにプログラム可能である。
別の態様では、タイルは、DMAエンジンおよびNoCストリームインターフェースに結合されるスイッチを含むことができ、スイッチは、DMAエンジンまたはNoCストリームインターフェースをNoCに選択的に結合する。タイルはまた、NoCをメモリマッピングされたスイッチと結合するブリッジ回路も含み得る。ブリッジ回路は、NoCからのデータを、メモリマッピングされたスイッチによって使用可能なフォーマットに変換するように構成される。
1つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、コアおよびメモリモジュールを含み得る。複数のデータ処理エンジンは、複数の列に編成され得る。各コアは、複数のデータ処理エンジンのうちの他の近傍のデータ処理エンジンのメモリモジュールへの共有アクセスによって、当該他の近傍のデータ処理エンジンと通信するように構成され得る。
一態様では、各DPEのメモリモジュールは、メモリと、メモリへの複数のメモリインターフェースとを含む。複数のメモリインターフェースのうちの第1のメモリインターフェースは、同じDPE内のコアに結合されてもよく、複数のメモリインターフェースのうちの他のメモリインターフェースの各々は、複数のDPEのうちの異なるDPEのコアに結合されてもよい。
別の態様では、複数のDPEはさらに複数の列に編成されてもよく、列内の複数のDPEのコアは整列され、列内の複数のDPEのメモリモジュールは整列される。
別の態様では、選択されたDPEのメモリモジュールは、選択されたDPEのすぐ上のDPEのコアに結合される第1のメモリインターフェースと、選択されたDPE内のコアに結合される第2のメモリインターフェースと、選択されたDPEのすぐ隣のDPEのコアに結合される第3のメモリインターフェースと、選択されたDPEのすぐ下のDPEのコアに結合される第4のメモリインターフェースとを含むことができる。
別の態様では、選択されたDPEは、メモリモジュールへの共有アクセスを介して、複数のDPEのうちの少なくとも10個のDPEからなるグループと通信するように構成される。
別の態様では、グループのうちの少なくとも2つのDPEは、複数のDPEのうちの少なくとも10個のDPEからなるグループのうちの2つ以上のメモリモジュールにアクセスするように構成される。
別の態様では、DPEからなる複数の行は、複数のDPEのうちの第1のサブセットを含む第1の行と、複数のDPEのうちの第2のサブセットを含む第2の行とを含むことができ、第2の行の各DPEの向きは、第1の行の各DPEの向きに対して水平方向に反転される。
別の態様では、選択されたDPEのメモリモジュールは、選択されたDPEのすぐ上のDPEのコアに結合される第1のメモリインターフェースと、選択されたDPE内のコアに結合される第2のメモリインターフェースと、選択されたDPEのすぐ隣のDPEのコアに結合される第3のメモリインターフェースと、選択されたDPEのすぐ下のDPEのコアに結合される第4のメモリインターフェースとを含むことができる。
別の態様では、選択されたDPEは、メモリモジュールへの共有アクセスを介して、複数のDPEのうちの少なくとも8つのDPEからなるグループと通信するように構成され得る。
別の態様では、グループのうちの少なくとも4つのDPEは、複数のDPEのうちの少なくとも8つのDPEからなるグループのうちの2つ以上のメモリモジュールにアクセスするように構成される。
1つまたは複数の実施形態では、あるデバイスは、複数のデータ処理エンジンを含み得る。データ処理エンジンの各々は、複数のメモリバンクを有するメモリプールと、各々がメモリプールに結合され、複数のメモリバンクにアクセスするように構成された複数のコアと、メモリプールと少なくとも1つの近傍のデータ処理エンジンのメモリマッピングされたスイッチとに結合されるメモリマッピングされたスイッチと、複数のコアの各々と少なくとも1つの近傍のデータ処理エンジンのストリームスイッチとに結合されるストリームスイッチとを含むことができる。
一態様では、メモリプールは、複数のメモリバンクの各々に結合されるクロスバーと、複数のコアの各々およびクロスバーに結合されるインターフェースとを含み得る。
別の態様では、各DPEは、メモリプールおよびストリームスイッチに結合されるダイレクトメモリアクセスエンジンを含むことができ、ダイレクトメモリアクセスエンジンは、メモリプールからストリームスイッチにデータを提供し、ストリームスイッチからメモリプールにデータを書き込むように構成される。
別の態様では、メモリプールは、クロスバーおよびダイレクトメモリアクセスエンジンに結合されるさらなるインターフェースを含み得る。
別の態様では、複数のコアの各々は、複数のメモリバンクへの共有アクセスを有する。
別の態様では、各DPE内において、メモリマッピングされたスイッチは、DPEをプログラミングするための構成データを受信するように構成され得る。
別の態様では、ストリームスイッチは、構成データに基づいて複数のDPEのうちの異なるDPEとの接続を確立するようにプログラム可能である。
別の態様では、各タイル内の複数のコアは、直接結合され得る。
別の態様では、各DPE内において、複数のコアのうちの最初のコアは、第1の近傍のDPE内のコアに直接結合されてもよく、複数のコアのうちの最後のコアは、第2の近傍のDPE内のコアに直接結合される。
別の態様では、複数のコアの各々は、非活性化するようにプログラム可能であり得る。
本明細書で提供される本発明の構成の説明は、例示目的のためのものであり、網羅的であること、または開示された形態および例に限定されることを意図していない。本明細書で使用される専門用語は、本発明の構成の原理、市場で見られる技術に対する実用的な応用または技術的改善を説明するため、および/または当業者が本明細書で開示される本発明の構成を理解することを可能にするために選択された。修正および変形は、記載される発明の構成の範囲および精神から逸脱することなく、当業者には明白であろう。したがって、そのような特徴および実現例の範囲を示すものとして、前述の開示よりもむしろ特許請求の範囲を参照するべきである。