本開示は、新規の特徴を定義する特許請求の範囲で終わるが、本開示内で説明される種々の特徴は、図面と併せて説明を考慮することからより良く理解されると考えられる。本明細書に記載されるプロセス、機械、製造、及びそれらの任意の変形例は、例解の目的で提供される。本開示内で説明される特定の構造的及び機能的詳細は、限定として解釈されるべきではなく、単に、特許請求の範囲のための基礎として、及び事実上任意の適切に詳述された構造において説明される特徴を種々に採用するように当業者に教示するための代表的な基礎として解釈されるべきである。更に、本開示内で使用される用語及び語句は、限定することを意図するものではなく、説明される特徴の理解可能な説明を提供することを意図するものである。
本開示は、集積回路(IC)に関し、より具体的には、IC内の、1つ以上のメモリタイルを含むデータ処理エンジン(DPE)アレイのためのアーキテクチャに関する。DPEアレイは、システムオンチップ(System-on-Chip、SoC)インターフェースに結合された複数のDPEタイルを含むことができる。各DPEタイルはかなりの量のデータを処理することが可能である。DPEタイルによって操作されるデータは、SoCインターフェースを通して、ICの1つ以上の他のシステム及び/又は回路からDPEアレイへの入力として提供されてもよい。同様に、DPEアレイから出力されるデータは、SoCインターフェースを通して、IC上の1つ以上の他のシステム及び/又は回路に提供されてもよい。
DPEタイルがより強力になり、単位時間当たりにより多くのデータを処理することが可能になると、DPEアレイへの入力であるかDPEアレイからの出力であるかにかかわらず、SoCインターフェースを通して流れなければならないデータの量も増加する。SoCインターフェースの増加した帯域幅要件は、DPEアレイデータインフロー及びDPEアレイデータアウトフローに起因し得る。これらのDPEアレイデータインフロー及びアウトフローは、他のオンチップ回路ブロック及びメモリなどのオフチップ回路との通信を伝達することができる。本開示内で説明される本発明の構成によれば、「メモリタイル」と呼ばれる追加のタイプの回路ブロック又はタイルを組み込むDPEアレイアーキテクチャが提供される。メモリタイルは、DPEアレイ自体の中に含まれるハードワイヤードかつプログラマブルな回路ブロックとして実装されてもよい。メモリタイルをDPEアレイ内に組み込むことによって、メモリのより大きなプールがDPEタイルに利用可能になり、それによってDPEアレイの外部のメモリにアクセスする必要性が低減される。これはまた、SoCインターフェースに課される帯域幅要件を低減する。
本開示はまた、メモリタイルを実装するための例示的なアーキテクチャを提供する。本明細書で提供される例によれば、メモリタイルは、メモリタイルのうちの2つ以上が、複合メモリと呼ばれるDPEアレイ内の単一のより大きなメモリとして動作するように構成され得るように、構成可能である。したがって、DPEアレイに2つ以上のメモリタイルを含めることにより、DPEアレイにおける作業負荷及び/又は特定のアプリケーションが実行されることに基づいて、DPEタイルの異なるクラスタに利用可能にされ得る複合メモリの柔軟な形成が可能になる。
本発明の構成の更なる態様は、図面を参照して以下により詳細に説明される。例解を簡単かつ明確にするために、図に示される要素は必ずしも縮尺どおりに描かれているわけではない。例えば、要素のうちのいくつかの寸法は、明確にするために、他の要素に対して誇張されている場合がある。更に、適切であると考えられる場合、参照番号は、対応する、類似する、又は同様の特徴を示すために、図の間で繰り返される。
図1は、IC100の例示的なアーキテクチャを例解する。IC100は、デバイスがその中に含まれる複数の異なるタイプのシステムを含むという点で、異種デバイスの一例である。IC100はまた、プログラマブルIC、適応システム、及びシステムオンチップ(SoC)の一例である。この例では、IC100は、DPEアレイ102と、プログラマブル論理(PL)104と、プロセッサシステム(processor system、PS)106と、ネットワークオンチップ(NoC)108と、プラットフォーム管理コントローラ(platform management controller、PMC)110と、1つ以上のハードワイヤード回路ブロック112とを含む複数の異なるシステムを含む。
図1の例では、IC100は、単一のパッケージ内に提供された単一のダイ上に実装される。他の例では、IC100は、単一のパッケージ内の複数の相互接続されたダイを使用して実装され得、図1に示されるIC100の種々のシステムは、異なる相互接続されたダイにわたって実装される。IC100を形成又は実装するために使用されるダイの特定の数は、限定として意図されていない。
DPEアレイ102は、タイルと呼ばれる複数の異なるタイプの回路ブロックから形成される。DPEアレイ102は、2つ以上のDPEタイルと、1つ以上のメモリタイルと、複数のインターフェースタイルを含むSoCインターフェースとを含む。DPEアレイ102の各タイプのタイルはハードワイヤードかつプログラマブルである。DPEタイルは、データ処理動作を実行し、大量のデータを操作することが可能である。各DPEタイルは、メモリモジュールに接続されたコアを含む。コアは、メモリモジュールにアクセスし、データ処理動作を実行することが可能である。一態様では、コアは、プログラムコードを実行することが可能である。別の態様では、コアは、プログラムコードを実行しないカスタム回路として実装され得る。DPEタイルのメモリモジュールは、アプリケーションデータを記憶するように構成される。DPEタイルは、図6A及び図6Bに関連して本明細書でより詳細に説明される。
各メモリタイルは、ランダムアクセスメモリ(RAM)と、同じメモリタイル内のRAMに結合されたダイレクトメモリアクセス(DMA)エンジンとを含み得る。メモリタイルの各DMAエンジンは、DPEアレイ102に含まれる他のメモリタイルの1つ以上のRAMに結合されてもよい。メモリタイルについては、図11A~図11Cに関連して本明細書でより詳細に説明する。SoCインターフェースは、DPEタイル及び/又はメモリタイルと、IC100の他のシステム及び/又は回路との間のインターフェースを提供する。SoCインターフェース及びインターフェースタイルは、図2A~図2D及び図7A~図7Cに関連して本明細書でより詳細に説明される。
PL104は、指定された機能を実行するようにプログラムされ得る回路機構である。一例として、PL104は、フィールドプログラマブルゲートアレイタイプの回路機構として実装されてもよい。PL104は、プログラマブル回路ブロックのアレイを含むことができる。本明細書で定義されるように、「プログラマブル論理」という用語は、再構成可能なデジタル回路を構築するために使用される回路機構を意味する。プログラマブル論理は、基本的な機能を提供する多くのプログラマブル回路ブロックから形成される。PL104のトポロジは、ハードワイヤード回路機構とは異なり、高度に構成可能である。PL104の各プログラマブル回路ブロックは、典型的には、プログラマブル素子126(例えば、機能素子)及びプログラマブル相互接続142を含む。プログラマブル相互接続142は、PL104の高度に構成可能なトポロジを提供する。プログラマブル相互接続142は、PL104のプログラマブル回路ブロックのプログラマブル素子126間の接続性を提供するようにワイヤごとに構成されてもよく、例えば、DPEアレイ102のタイル間の接続性とは異なり、ビットごとに構成可能である(例えば、各ワイヤが単一ビットの情報を伝達する場合)。
PL104のプログラマブル回路ブロックの例は、ルックアップテーブルとレジスタとを有する構成可能論理ブロックを含む。以下に説明され、ハードワイヤード回路ブロックと呼ばれることもあるハードワイヤード回路機構とは異なり、これらのプログラマブル回路ブロックは、製造時に未定義の機能を有する。PL104は、より限定されたプログラマブル性を有する基本的な定義された機能も提供する他のタイプのプログラマブル回路ブロックを含むことができる。これらの回路ブロックの例は、デジタル信号処理ブロック(digital signal processing block、DSP)、位相ロックループ(phase lock loop、PLL)、及びブロックランダムアクセスメモリ(block random access memory、BRAM)を含み得る。これらのタイプのプログラマブル回路ブロックは、PL104における他のものと同様に、多数あり、PL104の他のプログラマブル回路ブロックと混ざり合っている。これらの回路ブロックはまた、プログラマブル相互接続142とプログラマブル素子126とを全般的に含むアーキテクチャを有し得、したがって、PL104の高度に構成可能なトポロジの一部である。
使用前に、PL104、例えばプログラマブル相互接続及びプログラマブル素子は、その中の内部構成メモリセルに構成データをロードすることによって、プログラム又は「構成」されなければならない。PL104を構成するために使用される構成データは、構成ビットストリームと呼ばれることがある。構成メモリセルは、構成データがロードされると、PL104がどのように構成されているか、例えば、トポロジを定義し、かつどのように動作する(例えば、特定の機能が実行される)かを定義する。
PS106は、IC100の一部として製作されているハードワイヤード回路機構として実装されている。PS106は、各々がプログラムコードを実行することが可能である種々の異なるプロセッサタイプのいずれかとして実装されてもよく、又はそれらを含んでもよい。例えば、PS106は、1つ以上のコアを含む個々のプロセッサとして、又は各々が1つ以上のコアを含む複数のプロセッサとして実装され得る。別の例では、PS106として、1つ以上のプロセッサ、モジュール、コプロセッサ、I/Oインターフェース、及び/又は他のリソースを挙げることができる。PS106は、種々の異なるタイプのアーキテクチャのいずれかを使用して実装されてもよい。PS106を実装するのに使用され得るアーキテクチャ例としては、ARMプロセッサアーキテクチャ、x86プロセッサアーキテクチャ、グラフィックス処理ユニット(graphics processing unit、GPU)アーキテクチャ、モバイルプロセッサアーキテクチャ、DSPアーキテクチャ、前述のアーキテクチャの組み合わせ、又はコンピュータ可読命令若しくはプログラムコードを実行することが可能である他の好適な回路アーキテクチャを挙げることができるが、これらに限定されない。
NoC108は、IC100におけるエンドポイント回路間でデータを共有するためのプログラマブル相互接続ネットワークである。エンドポイント回路は、DPEアレイ102、PL104、PS106、及び/又は選択されたハードワイヤード回路ブロック112内に配設され得る。NoC108は、専用スイッチングを有する高速データパスを含み得る。一例では、NoC108は、1つ以上の水平パス、1つ以上の垂直パス、又は水平パスと垂直パスの両方を含む。図1に示した領域の構成及び数は、単に一例である。NoC108は、選択された構成要素及び/又はシステムを接続するのにIC100内で利用可能である共通インフラストラクチャの一例である。
NoC108を通してルーティングされるべきネットは、IC100内の実装のために設計が作成されるまで未知である。NoC108は、スイッチ及びインターフェースなどの、NoC108内の要素が、スイッチからスイッチへ、及びエンドポイント回路を接続するNoCインターフェース間でデータを渡すように、どのように構成されているか、及びどのように動作するかを定義する構成データを内部構成レジスタにロードすることによってプログラムされ得る。NoC108は、IC100の一部として製作されており(例えば、ハードワイヤードであり)、物理的に改造可能ではないが、ユーザ回路設計の様々なマスタ回路と様々なスレーブ回路との間に接続性を確立するようにプログラムされ得る。NoC108は、電源オン時に、その中にいかなるデータパス又はルートも実装し得ない。NoC108は、PMC110などのマスタ回路によって、IC100のエンドポイント回路間のデータパス又はルートを実装するように構成され得る。別の態様では、NoC108は、電源オン時に、その中に実装された1つ以上のデフォルトデータパスを含み得、マスタ回路は、エンドポイント回路間に追加のデータパスを追加するために、そのようなデータパスを再構成し、かつ/又はNoC108をプログラムすることができる。
PMC110は、IC100の管理を担当する。PMC110は、IC100の全体にわたって他のプログラマブル回路リソースを管理することが可能である、IC100内のシステムである。PMC110は、安全でセキュアな環境を維持し、IC100をブートし、かつ通常動作中にIC100を管理することが可能である。例えば、PMC110は、DPEアレイ102、PL104、PS106、及びNoC108などの、IC100の異なるシステムに対して、電源投入、ブート/構成、セキュリティ、電力管理、安全監視、デバッグ、及び/又はエラー処理に対する統一されたプログラマブルな制御を提供することが可能である。PMC110は、PS106をPL104から切り離す専用プラットフォームマネージャとして動作する。したがって、PS106及びPL104は、互いに独立して管理され、構成され、かつ/又は電源オン及び/若しくは電源オフされ得る。
一態様では、PMC110は、専用リソースを有するプロセッサとして実装され得る。PMC110は、IC100全体の信頼の基点(ルートオブトラスト)として動作することが可能である。一例として、PMC110は、IC100にロードされ得る、IC100のプログラマブルリソースのいずれかについての構成データを含むデバイスイメージを認証及び/又は検証することが可能である。PMC110は更に、動作中の改ざんからIC100を保護することが可能である。IC100のルートオブトラストとして動作することによって、PMC110は、PL104、PS106、及び/又はIC100に含まれ得る任意の他のプログラマブル回路リソースの動作を監視することが可能である。PMC110によって実行されるルートオブトラスト能力は、PS106及びPL104、並びに/又はPS106及び/若しくはPL104によって実行される任意の動作とは異なり、かつ別個である。
ハードワイヤード回路ブロック112は、IC100の一部として製作された特殊用途回路ブロックである。ハードワイヤードであるが、ハードワイヤード回路ブロック112は、1つ以上の異なる動作モードを実装するように、構成データを制御レジスタにロードすることによって構成され得る。ハードワイヤード回路ブロック112の例としては、入力/出力(I/O)ブロック、IC100の外部の回路及び/又はシステムへの信号を送受信するためのトランシーバ、メモリコントローラなどを挙げることができる。様々なl/Oブロックの例としては、シングルエンド及び擬似差動I/Oを挙げることができる。トランシーバの例としては、高速差動クロックトランシーバを挙げることができる。ハードワイヤード回路ブロック112の他の例としては、暗号エンジン、デジタル-アナログ変換器(digital-to-analog converter、DAC)、アナログ-デジタル変換器(analog-to-digital converter、ADC)などが挙げられるが、これらに限定されない。概して、ハードワイヤード回路ブロック112は、特定用途向け回路ブロックである。
図1に示される種々のプログラマブル回路リソースは、IC100のブートプロセスの一部として最初にプログラムされ得る。ランタイム中に、プログラマブル回路リソースを再構成することができる。一態様では、PMC110は、最初にDPEアレイ102、PL104、PS106、及びNoC108を構成することが可能である。ランタイム中の任意の時点で、PMC110は、IC100の全部又は一部を再構成することができる。場合によっては、PS106は、PMC110によって最初に構成されると、PL104及び/又はNoC108を構成及び/又は再構成することができる。
図1に示される例示的なアーキテクチャは、例解の目的で提供され、限定のためではないことを理解されたい。この点に関して、IC100は、図1に示されるより少ないシステム又はより多くのシステムを含み得る。1つ以上の例示的な実装形態では、IC100は、PMC110を省略し、PS106に依存して、さもなければPMC110によって実行される特定の動作を実行することができる。他の例示的な実装形態では、IC100は、本明細書で説明する他のシステムのうちの任意の1つ以上と組み合わせてDPEアレイ102を含んでもよい。更に別の例示的な実装形態では、IC100は、いかなる他のシステムも伴わずにDPEアレイ102を含むように実装されてもよい。
図2A~図2Dは、DPEアレイ102の異なる例示的な実装形態を例解する。図2Aの例では、DPEアレイ102は、行及び列を有するグリッドに配列された複数のDPEタイル202を含む。DPEアレイ102はまた、複数のメモリタイル204を含む。例解の目的で、メモリタイル202は、2行にグループ化され、各行の個々のメモリタイル202は、グリッド構成の列に合わせて整列される。DPEアレイ102は、SoCインターフェース206を更に含む。SoCインターフェース206は、1行に配列されたインターフェースタイル208を含み、個々のタイル208は、DPEアレイ102のグリッド構成の列に合わせて整列される。
本開示内で、DPEアレイ102に関して使用される「タイル」という用語は、DPEタイル202、メモリタイル204、及び/又はインターフェースタイル208を指す。図2Aの例では、グリッドのタイルの各行は、各行がDPEタイル202のみ、メモリタイル204のみ、又はインターフェースタイル208のみを含むという点で均質である。同様のタイルの行は、一緒にグループ化されるか、又は互いに隣接する。例えば、DPEタイル202の全ての行は、他のタイルタイプのいかなる行も介在することなく一緒にグループ化される。同様に、メモリタイル204の全ての行は、他のタイルタイプのいかなる行も介在することなく一緒にグループ化される。
グリッドの列は、各列が異なるタイプのタイルを含むという点で異種である。各列は、複数のDPEタイル202、複数のメモリタイル204、及び(例えば、1つの)インターフェースタイル208を含む。図2Aの例では、グリッド構成に含まれる行及び/又は列の特定の数は、限定として意図されていない。DPEアレイ102は、より少ない又はより多い行のDPEタイル202、より少ない又はより多い行のメモリタイル204、及び/又はより少ない又はより多い列のタイルを含んでもよい。
図2Bの例は、図2Aの例と同様である。図2Bの例では、1行のみのメモリタイル204が含まれる。図2Bにおいても、図2Aの例と同じように、グリッドのタイルの各行は、各行がDPEタイル202のみ、メモリタイル204のみ、又はインターフェースタイル208のみを含むという点で均質である。グリッドの列は、各列が異なるタイプのタイルを含むという点で異種である。各列は、複数のDPEタイル202、1つのメモリタイル204、及び(例えば、1つの)インターフェースタイル208を含む。図2Bの例では、グリッド構成に含まれる行及び/又は列の特定の数は、限定として意図されていない。DPEアレイ102は、より少ない又はより多い行のDPEタイル202、より少ない又はより多い行のメモリタイル204、及び/又はより少ない又はより多い列のタイルを含んでもよい。
図2A及び図2Bの例では、メモリタイル204の行は、グリッド構成内の図示されたものとは異なる場所又は位置に配設され得る。例えば、1行又は2行以上のグループのメモリタイル204は、グリッド構成の上部、グリッド構成の下部(例えば、SoCインターフェース206とDPEタイル202の任意の行との間)、DPEタイル202の選択された行の間、又はそれらの任意の組み合わせに配設されてもよい。更に、DPEアレイ102は、複数の行又は行のグループのメモリタイル204を含んでもよく、そのような行又は行のグループのメモリタイル204の各々は、別のタイプの1つ以上の介在タイルによって別の行又は行のグループのメモリタイル204から切り離される。
図2Cの例は、図2Aの例と同様である。図2Cの例では、メモリタイル204の行は一緒にグループ化されない。図示されるように、メモリタイルの1行は、グリッド構成の上部に位置付けられ、メモリタイル204の第2の行は、DPEタイル202とインターフェースタイル208の行との間のグリッド構成の下部に向かって位置付けられる。2行以上のメモリタイル204が、DPEタイル202とSoCインターフェース206との間、及び/又はグリッド構成の上部に位置決めされてもよいことを理解されたい。例えば、2行以上のメモリタイル204は、グリッドの上部に位置決めされてもよく、2行以上のメモリタイル204は、下部に向かって位置決めされてもよい。更に、DPEアレイ102のサイズに応じて、追加の行又は2行以上のグループのメモリタイル204が、DPEタイル202の他の行の間に含まれてもよい。一例では、DPEタイル202の行とメモリタイル204の行が交互になってもよい。別の構成では、2行以上のグループDPEタイル202が、2行以上のグループのメモリタイルと交互になってもよい。例えば、DPEアレイ102は、2行、3行、4行等のDPEタイル202、続いて、下に2行、3行、又は4行のメモリタイル204などから、繰り返しパターンで形成されてもよい。
図2Dの例では、メモリタイル204は、行ではなく列に配列される。したがって、図2Dの例では、1つ以上のDPEタイル202を含む各行は、1つ以上のメモリタイル204も含む。各列がDPEタイル202及びインターフェースタイル208、又はメモリタイル204及びインターフェースタイル208のいずれかを含むという点で、列は依然として異種である。したがって、各インターフェースタイル208の上で、列は、両方の組み合わせではなく、DPEタイル202のみ、又はメモリタイル204のみを含む。
この例では、2列のメモリタイル204が示されている。他の例示的な実装形態では、より少ない又はより多い列のメモリタイル204が含まれ得る。更に、メモリタイル204の列は、グリッド構成の図示されたものとは異なる位置に配設され得る。例えば、1列又は2列以上のグループのメモリタイル204は、グリッド構成の左端、グリッド構成の右端、DPEタイル202の選択された列の間、又はそれらの任意の組み合わせに配設されてもよい。一例では、列は、DPEタイル202及びインターフェースタイル208を含む1列以上の列と、メモリタイル204及びインターフェースタイル208を含む1列以上の列との間で交互になってもよい。
図2A~図2Dの例では、メモリタイル204は、メモリタイル204が列又は行に配置されるように編成される。1つ以上の他の例示的な実装形態では、個々のメモリタイル204又はメモリタイル204のグループは、DPEタイル202の間に散在させてもよい。例えば、複数のメモリタイル204のクラスタがDPEアレイ102の中央に配置され、DPEタイル202がメモリタイル204のクラスタを取り囲んでもよい。別の例では、1列以上の列及び/又は1行以上の行が、交互になったDPEタイル202及びメモリタイル204から形成されるように、メモリタイル204にDPEタイル202を散在させてもよい。特定の例では、グリッド構成は、各行及び列が、交互になったDPEタイル202及びメモリタイル204から形成される市松模様編成で編成されてもよい。
図3は、DPEアレイ102の別の例示的な実装形態を例解する。DPEアレイ102は、DPEタイル202、メモリタイル204、及びインターフェースタイル208を含む。インターフェースタイル208は、集合的に、SoCインターフェース206を形成する。図3の例では、説明を容易にするために、より少ないタイルが示されている。更に、構成要素及び/又はタイル間のいくつかの接続は、説明を容易にするために省略されている。
図3の例では、各タイル、例えば、各DPEタイル202、メモリタイル204、及びインターフェースタイル208は、ストリームスイッチ306及びメモリマップド(memory mapped、MM)スイッチ308を含む。各ストリームスイッチ306は、隣接するタイルのストリームスイッチに接続される。例えば、各ストリームスイッチ306は、そのような隣接するタイルがDPEアレイ102内に存在する限り、上に隣接するタイルのストリームスイッチ306、下に隣接するタイルのストリームスイッチ、左に隣接するタイルのストリームスイッチ、及び右に隣接するタイルのストリームスイッチに接続される。ストリームスイッチ306は、アプリケーションデータが伝達されるDPEアレイ102内のパケット交換ネットワークを実装する。概して、ストリームスイッチ306は、動作中にアプリケーションデータを通信するタイルのクラスタを形成するために、他のストリームスイッチとの論理接続を確立するようにプログラマブルである。アプリケーションデータは、ランタイム中にDPEアレイ102のタイルによって操作されるか、又生成されるデータを含む。
MMスイッチ308は、列で垂直に結合される。すなわち、各MMスイッチ308は、そのような隣接するタイルがDPEアレイ102内に存在する限り、上に隣接するタイルのMMスイッチ308及び下に隣接するタイルのMMスイッチ308に接続される。MMスイッチ308は、DPEアレイ102のタイルに含まれる任意の制御レジスタ及び/又はメモリに対して読取り及び/又は書込みを行うために使用されてもよい。この点に関して、MMスイッチ308は、DPEアレイ102のタイルに構成データを伝達するために使用されるメモリマップドネットワークを形成する。構成データは、他のタイルとの特定の接続性を実装し、かつ/又はタイルの特定の機能をイネーブル/ディスエイブルにするようにタイルを構成する目的で、DPEアレイ102のタイルの制御レジスタにロードされるデータである。構成データはまた、初期化のためにタイルのメモリに書込まれたデータを含み得る。構成データは、アプリケーションデータと区別されるべきである。
IC100内のマスタ回路は、例えば、MMスイッチ308に結合されたDPEアレイ102の任意のメモリ及び/又はレジスタに対して読取り及び/又は書込みを行うことが可能である。図示されていないが、タイル202、204、及び208の各々は、MMスイッチ308によって読取り及び書込み得る制御レジスタを含み、それによって、そのようなタイルの各々が構成データを用いてプログラムされることを可能にする。
各DPEタイル202は、コア302及びメモリモジュール304を更に含む。各メモリタイル204は、DMAエンジン310及びRAM312を更に含む。図3の例では、各DMAエンジン310は、同じメモリタイル204内に含まれるRAM312にアクセスする(例えば、読取る及び/又は書込む)ことが可能である。MMスイッチ308を使用して実行されるように、各メモリタイル204にロードされた構成データに応じて、所与のメモリタイル204のDMAエンジン310は、図示されるように、隣接するメモリタイル204のRAM312に対して読取り及び/又は書込みを行うことも可能である。
各インターフェースタイル208はまた、1つ以上のインターフェース314を含む。図3の例では、インターフェース314は、IC100の他のシステム及び/又は回路に接続することが可能である。例解の目的で、インターフェース314は、NoC108、PL104、PS106、PMC110、及び/又はハードワイヤード回路ブロック112に結合することが可能である。インターフェースタイル208は、ストリームスイッチ306を介したアプリケーションデータであろうと、MMスイッチ308を介した構成データであろうと、データを各それぞれのインターフェースタイル208の上に配設されたタイルに伝達することが可能である。更に、インターフェースタイル208は、MMスイッチ308を介して各それぞれのインターフェースタイル208の制御レジスタに構成データをロードすることによって構成可能である。
図4は、NoC108の例示的な実装形態を例解する。NoC108は、NoCマスタユニット(NoC master unit、NMU)402と、NoCスレーブユニット(NoC slave unit、NSU)404と、ネットワーク414と、レジスタ412とを含む。NMU402及びNSU404は、エンドポイント回路に接続することが可能である。NMU402及びNSU404に結合されたエンドポイント回路は、ハードワイヤード回路ブロック112、PL104内に実装された回路、PS106内の構成要素、及び/又はDPEアレイ102内のDPEタイル202若しくはメモリタイル204とすることができる。所与のエンドポイント回路は、2つ以上のNMU402又は2つ以上のNSU404に結合することができる。
NMU402は、NoC108上でトランザクション、例えば読取り及び書込みを発出することが可能であり、一方、NSU404は、NMU402によって発出されたトランザクションに応答する。NMU402は、ネットワーク414を通してNSU404に接続される。一例では、ネットワーク414は、NoCパケットスイッチ(NoC packet switches、NPS)406と、NPS406間のルーティング408とを含む。各NPS406は、NoCパケットのスイッチングを実行する。NPS406は、複数の物理チャネルを実装するために、ルーティング408を通して、互いに接続され、NMU402及びNSU404に接続される。NPS406はまた、物理チャネルごとに複数の仮想チャネルをサポートする。
NMU402、NSU404、及びNPS406は、その機能を決定するレジスタ412を含むことができる。NoC108内のレジスタ412は、割込み、サービス品質(Quality of Service、QoS)、エラー処理及び報告、トランザクション制御、電力管理、並びにアドレスマッピング制御をサポートする。レジスタ412は、再プログラムされる前に使用可能な状態に初期化することができる。初期化に続いて、レジスタ412は、書込み要求を使用してレジスタ412に書込むことによって再プログラムされ得る。NoC108及び/又は他のエンドポイント回路をプログラムするために、NoC108の構成データをIC100にロードすることができる。
図5は、一例による、NoCを通したIC100~NoC108内のエンドポイント回路間の接続を示すブロック図である。この例では、エンドポイント回路502は、NoC108を通してエンドポイント回路504に接続される。エンドポイント回路502は、NoC108のNMU402に結合されたマスタ回路である。エンドポイント回路504は、NoC108のNSU404に結合されたスレーブ回路である。各エンドポイント回路502及び504は、PS106内の回路、DPEアレイ102内のDPEタイル202、DPEアレイ102内のメモリタイル204、PL104の領域内の回路、又はハードワイヤード回路ブロック112とすることができる。
ネットワーク414は、複数の物理チャネル506を含む。物理チャネル506は、NoC108をプログラミングすることによって実装される。各物理チャネル506は、1つ以上のNPS406及び関連するルーティング408を含む。NMU402は、少なくとも1つの物理チャネル506を通してNSU404と接続する。物理チャネル506はまた、1つ以上の仮想チャネル508を有することができる。ネットワーク414を通した接続は、マスタ-スレーブ構成を使用する。一例では、ネットワーク414上の最も基本的な接続は、単一のスレーブに接続された単一のマスタを含む。しかしながら、他の例では、より複雑な構造を実装することができる。
図6A及び図6Bは、DPEアレイ102のDPEタイル202の例示的なアーキテクチャを例解する。説明のために、図6A及び図6Bをまとめて「図6」と呼ぶことがある。図6Aを参照すると、DPEタイル202は、コア302及びメモリモジュール304を含む。DPEタイル202は、ストリームスイッチ306及びMMスイッチ308を更に含む。
コア302は、DPEタイル202のデータ処理能力を提供する。コア302は、種々の異なる処理回路のいずれかとして実装され得る。図6Aの例では、コア302は、任意選択のプログラムメモリ606を含む。1つ以上の例示的な実装形態では、コア302は、プログラムコード、例えばコンピュータ可読命令を実行することが可能であるプロセッサとして実装される。プログラムメモリ606は、コア302によって実行される命令を記憶することが可能である。コア302は、例えば、CPU、GPU、DSP、ベクトルプロセッサ、又は命令を実行することが可能な他のタイプのプロセッサとして実装され得る。コアは、本明細書で説明される種々のCPU及び/又はプロセッサアーキテクチャのいずれかを使用して実装され得る。別の例では、コア302は、超長命令語(very long instruction word、VLIW)ベクトルプロセッサ又はDSPとして実装される。
プログラムメモリ606は、コア302に対してプライベートである専用プログラムメモリとして実装されてもよい。プログラムメモリ606は、同じDPEタイル202のコアによってのみ使用されてもよい。したがって、プログラムメモリ606は、コア302によってのみアクセスされ得、DPEアレイ102内の任意の他のDPEタイル202又は任意の他のDPEタイル202の構成要素と共有されない。プログラムメモリ606は、読出し及び書込み動作のための単一ポートを含むことができ、MMスイッチ308を介してDPEアレイ102のメモリマップネットワークを使用してアドレス指定可能である。MMスイッチ308を介して、例えば、プログラムメモリ606は、DPEアレイ102の外部のマスタ回路によってプログラムコードをロードされてもよい。プログラムメモリ606にロードされたプログラムコードは、コア302によって実行され得る。
1つ以上の例示的な実装形態では、コア302は、特定用途向け命令セットをサポートするためにカスタマイズされたアーキテクチャを有し得る。例えば、コア302は、無線アプリケーションのためにカスタマイズされてもよく、無線特有の命令を実行するように構成されてもよい。別の例では、コア302は、機械学習のためにカスタマイズされてもよく、機械学習特有の命令を実行するように構成されてもよい。
1つ以上の他の例示的な実装形態では、コア302は、特定の1つ以上の動作を実行するために専用化された、強化された知的財産(Intellectual Property、IP)コアなどのハードワイヤード回路機構として実装される。その場合、コア302はプログラムコードを実行しなくてもよい。コア302がプログラムコードを実行しない実装形態では、プログラムメモリ606は省略され得る。例示的かつ非限定的な例として、コア302は、強化された順方向誤り訂正(forward error correction、FEC)エンジン又は他の回路ブロックとして実装され得る。
いくつかの例示的な実装形態では、異なるDPEタイル202は、異なるタイプのコア302を含んでもよい。例えば、1つ以上のコア302は、プログラムコードを実行するように実装され得るが、他のDPEタイル202のコア302は、プログラムコードを実行することができない。いずれの場合も、各コア302は、プログラムコード/命令の実行を通してであるか否かにかかわらず計算を実行するように構成され、本開示内で説明されるカスケード接続性とともに使用され得る1つ以上の内部レジスタ626を含み得る。
コア302は、制御レジスタ608を含み得る。制御レジスタ608には、DPEタイル202の動作を制御するための構成データがロードされてもよい。例えば、制御レジスタ608にロードされた構成データは、本明細書でより詳細に説明されるDPEタイル202のコア302、メモリモジュール304、ストリームスイッチ306、及びカスケードインターフェース622、624の動作を構成及び/又は制御することが可能である。1つ以上の例示的な実装形態では、DPEタイル202は、制御レジスタ608にロードされた構成データに基づいて、例えば全体として、アクティブ化及び/又は非アクティブ化され得る。同様に、コア302は、制御レジスタ608にロードされた構成データに基づいて、アクティブ化及び/又は非アクティブ化され得る。コア302は、メモリモジュール304が1つ以上の他のコアによってアクセスされ得るように、メモリモジュール304とは独立してアクティブ化及び/又は非アクティブ化され得る。図6Aの例では、制御レジスタ608は、MMスイッチ308を通してメモリマップドネットワークを介してアドレス指定可能である(例えば、読取り及び/又は書込みされ得る)。非アクティブ化は、回路ブロックを低電力モードにすること、又は回路ブロックから電力(例えば、供給電圧)を切断することを指す。特定の構成要素又はDPEタイル202を非アクティブ化すると、その構成要素又はタイルは、アクティブ化されるまで動作不能になる。
1つ以上の例示的な実装形態では、メモリモジュール304は、本明細書ではアプリケーションデータと呼ばれる、コア302によって使用及び/又は生成されるデータを記憶することが可能である。メモリモジュール304は、RAMなどの読取り/書込みメモリを含み得る。したがって、メモリモジュール304は、コア302によって読取られ消費され得るデータを記憶することが可能である。メモリモジュール304はまた、コア302によって書込まれるデータ(例えば、結果)を記憶することが可能である。
1つ以上の他の例示的な実装形態では、メモリモジュール304は、DPEアレイ102内の他のDPEタイル202の1つ以上の他のコア302によって使用及び/又は生成され得るデータ、例えばアプリケーションデータを記憶することが可能である。DPEタイル202の1つ以上の他のコア302もまた、メモリモジュール304から読取ること、及び/又はそれに書込むことができる。特定の例示的な実装形態では、メモリモジュール304から読取ること、及び/又はそれに書込むことができる他のコア302は、1つ以上に隣接するDPEタイル202のコア302であってもよい。タイルが互いに境界を共有する場合、2つのタイルは隣接している。図6Aのコア302及び隣接するDPEタイル(例えば、対象DPEタイル202の上に隣接する、下に隣接する、及び右及び/又は左に隣接するDPEタイル)からの1つ以上の他のコア302がメモリモジュール304に対して読取り及び/又は書込みを行うことを可能にすることによって、メモリモジュール304は、メモリモジュール304にアクセスすることが可能である異なるDPEタイル202及び/又はコア302間の通信をサポートする共有メモリを実装する。
上述したように、DPEアレイ102は、「DPE相互接続回路機構」と呼ばれることもある複数の異なる独立したネットワークを含んでもよい。ストリームネットワークは、アプリケーションデータを交換するストリームスイッチ306から形成される。図示されるように、図6AのDPEタイル202のストリームスイッチ306は、左、右、上、及び下に隣接するタイルのストリームスイッチに結合される。タイルは、DPEアレイ102のグリッド構成に応じて、1つ以上の他のDPEタイル202、インターフェースタイル208、1つ以上のメモリタイル204、又はそれらの任意の組み合わせを含んでもよい。
ストリームスイッチ306は、コア302に結合され、コア302と通信することが可能である。コア302は、例えば、ストリームスイッチ306に接続するストリームインターフェースを含み、それによってコア302がDPE相互接続回路機構を介してDPEアレイ102の他のタイルと直接通信することを可能にする。例えば、コア302は、コア302がストリームスイッチ306を介してアプリケーションデータをそのような他のタイルに直接送信及び/又は受信することをイネーブルにする命令又はハードワイヤード回路機構を含み得る。
ストリームスイッチ306は、メモリモジュール304に結合され、メモリモジュール304と通信することが可能である。メモリモジュール304は、例えば、ストリームスイッチ306に接続するストリームインターフェースを含み、それによって、DPEアレイ102の他のタイルがDPE相互接続回路機構を介して図6Aのメモリモジュール304と通信することを可能にする。概して、ストリームスイッチ306は、DPEアレイ102の隣接していないタイル間の通信を容易にする。例えば、ストリームスイッチ306を介して、図6Aのメモリモジュール304のメモリインターフェース又は図6Aのコア302のコアインターフェースに直接接続されていない他のDPEタイル202のコア及び/又はメモリモジュールは、DPE相互接続回路機構を介して図6Aのコア302及び/又はメモリモジュール304と通信することができる。したがって、図6Aのコア302及び/又は図6Aのメモリモジュール304は、DPE相互接続回路機構のストリームスイッチを介してDPEアレイ102内のタイルのいずれかと、そのような他のタイルが隣接しているか否かにかかわらず、通信することもできる。
ストリームスイッチ306はまた、PL104、NoC108、ハードワイヤードブロック112、又は本明細書で説明される他の回路ブロックなどの他のシステムと通信するために使用され得る。概して、ストリームスイッチ306は、回線交換ストリーム相互接続又はパケット交換ストリーム相互接続として動作するようにプログラムすることができる。回線交換ストリーム相互接続は、DPEアレイ102のタイル間の高帯域幅通信に好適なポイントツーポイントの専用ストリームを実装することが可能である。パケット交換ストリーム相互接続により、ストリームを共有して、複数の論理ストリームを1つの物理ストリーム上に時間多重化して、中帯域幅通信を行うことができる。
ストリームスイッチ306は、制御レジスタ608を介して構成され得る。制御レジスタ608にロードされた構成データは、例えば、図6AのDPEタイル202がIC100のどの他のDPEタイル202及び/又はシステムと通信するか、及びそのような通信が回線交換ポイントツーポイント接続として確立されるかパケット交換接続として確立されるかを命令する。
メモリマップドネットワークは、DPEタイル202の構成データ、制御データ、及び/又はデバッグデータなどのデータを交換することが可能である。メモリマップネットワークは、MMスイッチ308から形成される。読取り及び/又は書込みされ得る図6のDPEタイル202の各構成要素、例えば、制御レジスタ608、プログラムメモリ606、メモリモジュール304、及びイベントブロードキャスト回路機構(例えば、図6B)は、MMスイッチ308を用いて読取り及び/又は書込みされ得る。MMスイッチ308はまた、DPEアレイ102の他のタイプのタイルのための構成データ、制御データ、及びデバッグデータを交換するために使用されてもよい。図6Aの例では、MMスイッチ308は、DPEタイル202を構成するために使用される構成データを受信することが可能である。MMスイッチ308は、図6AのDPEタイル202の下に配設されたDPEアレイ102のタイルのMMスイッチから構成データを受信してもよい。MMスイッチ308は、受信した構成データを、図6AのDPEタイル202の上のDPEアレイ102のタイル内の1つ以上の他のMMスイッチ、図6Aのコア302(例えば、プログラムメモリ606及び/又は制御レジスタ608)、及び/又は図6Aのメモリモジュール304(例えば、初期化のためのメモリモジュール304内のメモリ)に転送することが可能である。したがって、図6AのMMスイッチ308は、下のDPEアレイ102の隣接するタイルのMMスイッチ及び/又は上のDPEアレイ102の隣接するタイルのMMスイッチと通信する。
それぞれのDPEタイル202の制御レジスタ608は、それぞれのMMスイッチ308を通して構成データをロードすることによってプログラムされてもよい。構成を通して、ストリームスイッチ306は、パケット交換であるか回線交換であるかにかかわらず、他のエンドポイントとの接続を、1つ以上の他のDPEタイル202、メモリタイル204、及び/又はインターフェースタイル208内であるかにかかわらず確立するようにプログラムされる。
図6AのMMスイッチ308は、DPEアレイ102の他のタイルのメモリマップドスイッチと組み合わせて、トランザクションがMMスイッチからMMスイッチに伝搬する共有トランザクション交換ネットワークを実装する。MMスイッチ308の各々は、例えば、アドレスに基づいてトランザクションを動的にルーティングすることが可能である。MMスイッチ308は、IC100の他のシステムがDPEアレイ102のタイルのリソース(例えば、構成要素)にアクセスすることを可能にする。例えば、DPEアレイ102は、プロセッサ(例えば、PS106又はPMC110のプロセッサ)のアドレス空間にマッピングされてもよい。したがって、DPEアレイ102のタイル内の任意の制御レジスタ及び/又はメモリは、MMインターフェースを介してアクセスされてもよい。例えば、メモリモジュール304内のメモリ、プログラムメモリ606、及び/又は制御レジスタ608は、それぞれのDPEタイル202内のMMスイッチ308を介して読取り及び/又は書込みされ得る。
図6Aの例では、メモリモジュール304は、複数のメモリインターフェース610-1、610-2、610-3、及び610-4を含む。図6A内では、メモリインターフェース610-1及び610-2は、「MI」と略される。メモリモジュール304は、複数のメモリバンク612-1~612-Nを更に含む。特定の例示的な実装形態では、メモリモジュール304は、8個のメモリバンク612を含む。他の例示的な実装形態では、メモリモジュール304は、より少ない又はより多いメモリバンク612を含み得る。図6Aの例では、メモリバンク612-1~612-Nの各々は、それぞれの調停回路614-1~614-Nを有する。各調停回路614は、調停論理を含み得る。更に、各調停回路614は、クロスバーを含み得る。したがって、任意のマスタは、メモリバンク612の任意の特定の1つ以上に書込むことが可能である。
メモリモジュール304は、MMスイッチ308と通信するメモリマップドインターフェース(図示せず)を含んでもよい。メモリモジュール304内のメモリマップドインターフェースは、メモリバンク612から読取り及び/又はメモリバンク612への書込むために、DMAエンジン616、メモリインターフェース610、及び調停回路614に結合するメモリモジュール304内の通信線に接続されてもよい。
DMAエンジン616は、2つ以上のインターフェースを含んでもよい。例えば、1つ以上のインターフェースは、ストリームスイッチ306を介してDPEアレイ102の他のタイルから入力データストリームを受け取り、受け取ったデータをメモリバンク612に書込むことが可能である。1つ以上の他のインターフェースは、メモリバンク612からデータを読取り、データをDMAエンジン616のストリームインターフェースを介して外側に出し、ストリームスイッチ306を介してDPEアレイ102の他のタイルに送信することが可能である。
メモリモジュール304は、複数の異なるDPEタイル202によってアクセスされ得る共有メモリとして動作することが可能である。図6Aの例では、メモリインターフェース610-1は、コア302に含まれるコアインターフェース618-1を介してコア302に結合される。メモリインターフェース610-1は、コア302に、調停回路614を通してメモリバンク612へのアクセス(例えば、読取り及び書込み能力)を提供する。メモリインターフェース610-2は、図6AのDPEタイル202の上に隣接するDPEアレイ102のDPEタイルのコアインターフェースに結合される。メモリインターフェース610-2は、図6AのDPEタイル202の上に隣接するDPEタイルのコアにメモリバンク612へのアクセスを提供する。メモリインターフェース610-3は、図6AのDPEタイル202の右に隣接するDPEアレイ102のDPEタイルのコアインターフェースに結合される。メモリインターフェース610-3は、図6AのDPEタイル202の右に隣接するDPEタイルのコアにメモリバンク612へのアクセスを提供する。メモリインターフェース610-4は、図6AのDPEタイル202の下に隣接するDPEアレイ102のDPEタイルのコアインターフェースに結合される。メモリインターフェース610-4は、図6AのDPEタイル202の下に隣接するDPEタイル202のコア302にメモリバンク612へのアクセスを提供する。
コア302は、コアインターフェース618-2、618-3、及び618-4を介して他の近隣のDPEタイルのメモリモジュールにアクセスすることが可能である。図6Aの例では、コアインターフェース618-2は、図6AのDPEタイル202の下に隣接するDPEタイルのメモリインターフェースに結合される。したがって、コア302は、図6AのDPEタイル202の下に隣接するDPEタイルのメモリモジュールにアクセスすることが可能である。コアインターフェース618-3は、図6AのDPEタイル202の左に隣接するDPEタイルのメモリインターフェースに結合される。したがって、コア302は、図6AのDPEタイル202の左に隣接するDPEタイルのメモリモジュールにアクセスすることが可能である。コアインターフェース618-4は、図6AのDPEタイル202の上に隣接するDPEタイルのメモリインターフェースに結合される。したがって、コア302は、図6AのDPEタイル202の上に隣接するDPEタイルのメモリモジュールにアクセスすることが可能である。
上述したように、コア302は、読取り及び/又は書込み動作を、そのような動作のアドレスに基づいて、コアインターフェース618-1、618-2、618-3、及び/又は618-4を通して正しい方向にマッピングすることが可能である。コア302がメモリアクセスのためのアドレスを生成するとき、コア302は、アドレスを復号して方向(例えば、アクセスされるべき特定のDPEタイル202)を決定し、メモリ操作を決定された方向の正しいコアインターフェースに転送することが可能である。
メモリモジュール304は、ハードウェア同期回路機構(hardware synchronization circuitry、HSC)620を含み得る。概して、HSC620は、異なるコア302(例えば、近隣のDPEタイル202のコア302)、図6Aのコア302、DMAエンジン616、及びDPE相互接続回機構路を介して図6AのDPEタイル202などのDPEタイルと通信することができる他の外部マスタ(例えば、プロセッサ)の動作を同期させることが可能である。例示的かつ非限定的な例として、HSC620は、図6Aのメモリモジュール304内の同じバッファ、例えば、共有バッファにアクセスする異なるDPEタイル202内の2つの異なるコア302を同期させることが可能である。HSC620は、コア302及び/若しくは近隣のDPEタイルのコア(例えば、メモリインターフェース610に接続された他のDPEタイル202のコア302)によって、並びに/又は他のDPEタイル202のストリームスイッチ306によってアクセスされてもよい。
共有メモリモジュール304を通じて近隣のDPEタイル202と通信すること、及びDPE相互接続回路機構を介して近隣の及び/又は非近隣のDPEタイル202と通信することに加えて、コア302は、カスケード入力(「CI」622として示される)及びカスケード出力(「CI」624として示される)などの1つ以上のカスケードインターフェース622、624を含んでもよい。カスケードインターフェース622及び624は、隣接するDPEタイル202の他のコア302との直接通信を提供することが可能である。図示されるように、コア302のカスケードインターフェース622は、入力データストリームを隣接するDPEタイル202(例えば、左、上、又は下のDPEタイル202)のコア302から直接受信することが可能である。カスケードインターフェース622を介して受信されたデータストリームは、コア302内のデータ処理回路機構に提供され得る。コア302のカスケードインターフェース624は、出力データストリームを隣接するDPEタイル202(例えば、右、上、又は下のDPEタイル202)のコア302に直接送信することが可能である。
図6Aの例では、カスケードインターフェース622及びカスケードインターフェース624の各々は、バッファリングのための先入れ先出し(first-in-first-out、FIFO)インターフェース(図示せず)を含み得る。例示的な実装形態では、カスケードインターフェース622及び624は、幅が数百ビットであり得るデータストリームを伝達することが可能である。カスケードインターフェース622及び624の特定のビット幅は、限定として意図されていない。図6Aの例では、カスケードインターフェース622は、コア302内の内部レジスタ(又は複数のレジスタ)626に結合される。内部レジスタ626は、コア302内のデータ処理回路機構によって生成された、及び/又は操作されているデータを記憶し得る。
一態様では、内部レジスタ626は、累算レジスタであり得る。コア302の累算レジスタは、コア302によって実行される操作の中間結果が記憶され得る内部レジスタである。累算レジスタは、コア302が、そのようなコンテンツ/データをコア302の外部に配設された別のメモリに書込む必要なしに、そのような計算の中間結果を記憶することを可能にする。別の態様では、内部レジスタ626は、累算レジスタに接続され得る別のレジスタである。例えば、内部レジスタ626は、累算レジスタに結合され、カスケードインターフェース622を介してデータを受信し、カスケードインターフェース624を介して累算レジスタにそのデータを書込み、かつ/又は累算レジスタからデータを出力するために特にアクセス可能なレジスタであってよい。カスケードインターフェース624は、内部レジスタ626の内容を出力することが可能であり、クロックサイクルごとにそうすることができる。
図6Aの例では、カスケードインターフェース622及び624は、制御レジスタ608にロードされた構成データに基づいてプログラムされ得る。例えば、制御レジスタ608に基づいて、カスケードインターフェース622は、アクティブ化又は非アクティブ化され得る。同様に、制御レジスタ608に基づいて、カスケードインターフェース624は、アクティブ化又は非アクティブ化され得る。カスケードインターフェース622は、カスケードインターフェース624とは独立してアクティブ化及び/又は非アクティブ化され得る。
例示的な実装形態では、カスケードインターフェース622及び624は、コア302によって制御される。例えば、コア302は、カスケードインターフェース622及び/又は624に対して読取り/書込みを行う命令を含んでもよい。別の例では、コア302は、カスケードインターフェース622及び/又は624に対して読取り及び/又は書込みを行うことが可能なハードワイヤード回路機構を含み得る。特定の例示的な実装形態では、カスケードインターフェース622及び624は、コア302の外部のエンティティによって制御され得る。
1つ以上の例示的な実装形態では、DPEアレイ102は、均質なDPEタイル202から形成されてもよい。1つ以上の他の例示的な実装形態では、DPEアレイ102は、異なるタイプのDPEタイル202から形成されてもよい。例えば、DPEタイル202は、プログラムコードを実行するコア302、プログラムコードを実行しないハードワイヤードコア、特殊用途コア、又はそれらの任意の組み合わせなど、異なるタイプのコア302を含んでもよい。更に別の例示的な実装形態では、DPEアレイ102は、例えば機能的DPEタイルではないダミーDPEタイルである1つ以上のDPEタイルを含むことができる。それぞれの異なるDPEアレイは、同じダイに実装されても異なるダイに実装されても、異なる数のDPE及び/又は異なる種類のDPEを含んでもよい。
図6Bは、DPEタイル202内のイベント処理回路機構の一例を例解する。DPEタイルは、他のDPEタイル、メモリタイル、及び/又はインターフェースタイルのイベント処理回路機構に相互接続されたイベント処理回路機構を含んでもよい。図6Bの例では、イベント処理回路機構は、コア302及びメモリモジュール304内に実装される。コア302は、イベントブロードキャスト回路機構652を含んでもよい。メモリモジュール304は、イベントブロードキャスト回路機構662を含む別個のイベント処理回路機構を含んでもよい。
イベントブロードキャスト回路機構652は、図6のDPEタイル202の上及び下の近隣のDPEタイルの各々のコア内のイベントブロードキャスト回路機構に接続されてもよい。イベントブロードキャスト回路機構652はまた、図6BのDPEタイル202の左の近隣のDPEタイルのメモリモジュール内のイベントブロードキャスト回路機構に接続されてもよい。イベントブロードキャスト回路機構652は、イベントブロードキャスト回路機構662に接続される。イベントブロードキャスト回路機構662は、図6Bに示されるDPEタイル202の上及び下の近隣のDPEタイルの各々のメモリモジュール内のイベントブロードキャスト回路機構に接続されてもよい。イベントブロードキャスト回路機構662はまた、図6BのDPEタイル202の右の近隣のDPEのコア内のイベントブロードキャスト回路機構に接続されてもよい。
このようにして、DPEタイルのイベント処理回路機構は、DPEアレイ102内に独立したイベントブロードキャストネットワークを形成してもよい。DPEアレイ102内のイベントブロードキャストネットワークは、本明細書で説明される他のネットワークから独立して存在してもよい。更に、イベントブロードキャストネットワークは、好適な構成データを制御レジスタ608にロードすることによって個々に構成可能であり得る。
図6の例では、制御レジスタ608は、イベントブロードキャスト回路機構652及び662をプログラムして、それぞれコア302及びメモリモジュール304内で発生する特定のタイプのイベントを検出する。制御レジスタ608にロードされたデータは、例えば、複数の異なるタイプの所定のイベントのうちのどれがイベントブロードキャスト回路機構652及び662によって検出されるかを決定する。イベントブロードキャスト回路機構652によって検出され得るイベントの例は、コア302内で発生するイベントである。これらのイベントは、限定はしないが、コア302による読取り動作の開始及び/又は終了、コア302による書込み動作の開始及び/又は終了、ストール、並びにコア302によって実行される他の動作の発生を含むことができる。イベントブロードキャスト回路機構662によって検出され得るイベントの例は、メモリモジュール304内で発生するイベントである。これらのイベントは、限定はしないが、DMAエンジン616による読取り動作の開始及び/又は終了、DMAエンジン616による書込み動作の開始及び/又は終了、ストール、並びにメモリモジュール304によって実行される他の動作の発生を含み得る。制御レジスタ608にロードされたデータは、例えば、複数の異なるタイプの所定のイベントのうちのどれがイベントブロードキャスト回路機構652及び/又は662によって検出されるかを決定する。イベントブロードキャスト回路機構652及び/又は662は、DMAエンジン616、MMスイッチ308、ストリームスイッチ306、メモリインターフェース610、コアインターフェース618、カスケードインターフェース622、624、及び/又はDPEタイル内に配設された他の構成要素から発生する及び/又はこれらに関連するイベントを検出することが可能であることを理解されたい。
例えば、制御レジスタ608にロードされた構成データは、他のイベントブロードキャスト回路機構からイベントブロードキャスト回路機構652及び/又は662によって受信されたイベントのうちのどれが、更に他のイベントブロードキャスト回路機構又は他の回路機構に伝搬されるかを決定し得る。構成データはまた、イベントブロードキャスト回路機構652及び/又は662によって内部で生成されたどのイベントが他のイベントブロードキャスト回路機構及び/又は他の回路機構に伝搬されるかを指定し得る。
したがって、イベントブロードキャスト回路機構652及び/又は662によって生成されたイベントは、DPEアレイ102の他のタイルにブロードキャストされてもよい。図6Bの例では、イベントブロードキャスト回路機構652及び/又は662は、イベントを、内部的に生成されたのかDPEアレイ102の他のタイルから受信されたのかにかかわらず、上のタイル、左のタイル(例えば、イベントブロードキャスト回路機構652を介して)、右のタイル(例えば、イベントブロードキャスト回路機構662を介して)、及び下のタイルにブロードキャストすることが可能である。イベントブロードキャスト回路機構652はまた、メモリモジュール304内のイベントブロードキャスト回路機構662にイベントをブロードキャストすることが可能である。
図6Bの例では、コア内に配設されたイベントブロードキャスト回路機構は、上及び/又は下の近隣のDPEタイルのコア内に配設されたイベントブロードキャスト回路機構と垂直に通信する。同様に、メモリモジュール内に配設されたイベントブロードキャスト回路機構は、上及び/又は下の近隣のDPEのメモリモジュール内に配設されたイベントブロードキャスト回路機構と垂直に通信する。イベントブロードキャスト回路機構は更に、他のイベントブロードキャスト回路機構が配設されるようなDPEアレイ102のタイルのタイプにかかわらず、すぐ左及び/又は右のイベントブロードキャスト回路機構と通信することが可能である。
制御レジスタ608が書込まれると、イベントブロードキャスト回路機構652及び662は、バックグラウンドで動作することが可能である。1つ以上の例示的な実装形態では、イベントブロードキャスト回路機構652は、コア302内の特定の条件を検出したことだけに応答してイベントを生成し、イベントブロードキャスト回路機構662は、メモリモジュール304内の特定の条件を検出したことだけに応答してイベントを生成する。
概して、本開示内では、ストリームスイッチは、他のストリームスイッチに接続するものとして説明される。MMスイッチは、他のMMスイッチに接続するものとして説明され、イベントブロードキャスト回路機構は、同様のタイルの他のイベントブロードキャスト回路機構に接続するものとして説明される。すなわち、そのような構成要素は、DPEタイル間、MMタイル間などに接続されるものとして説明される。ストリームスイッチ、MMスイッチ、及びイベントブロードキャスト回路機構は、DPEアレイ102の他の近隣のタイルのそれぞれのストリームスイッチ、MMスイッチ、及びイベントブロードキャスト回路機構に結合されてもよく、そのような他のタイルがDPEタイル202、メモリタイル204、又はインターフェースタイル208であるかどうかにかかわらない、ことを理解されたい。したがって、図6は、そのような構成要素が他のDPEタイル内の同様の構成要素に接続されるという文脈で主に説明されているが、そのような構成要素は、DPEアレイ102の実装及びそこに含まれる種々のタイプのタイルの場所に応じて、DPEアレイ102の他のタイプのタイル内の同様の構成要素に接続することができる。
図6の例では、DPEタイルは、コア及びメモリモジュールが整列される列にDPEタイルが配列されるように配列されてもよい。別の例では、同じ行内で互いに隣接するDPEタイルが反転されて交互になっていてもよい。すなわち、同じ列において左から右に、奇数番号のDPEタイルは、左側にコアを有し、右側にメモリモジュールを有してもよく(例えば、非反転)、一方、偶数番号のDPEタイルは、右側にコアを有し、左側にメモリモジュールを有するように反転されてもよく、又はその逆でもよい。更に、行は、市松模様パターンを形成するように間隔を置いて配置されてもよく、その結果、DPEタイルの列は、反転されているという点で交互になり、説明されているようにはならない。
図7A、図7B、及び図7Cは、SoCインターフェース206のインターフェースタイルを実装するための例示的なアーキテクチャを例解する。SoCインターフェース206は、一行に編成された複数の相互接続されたインターフェースタイル208を含む。一例では、インターフェースタイル208の各々は同じアーキテクチャを有してもよい。別の例では、インターフェース208は、異なるアーキテクチャで実装されてもよく、それぞれの異なるインターフェースタイルアーキテクチャは、IC100の異なるタイプのリソースとの通信をサポートする。インターフェースタイル208は、データが1つのタイルから別のタイルへ双方向に伝搬され得るように接続される。各インターフェースタイル208は、直上のDPEアレイ102のタイルの列のためのインターフェースとして動作することが可能である。
図7Aは、インターフェースタイル208の例示的な実装形態を例解する。図7Aに示されるアーキテクチャはまた、SoCインターフェース206に含まれる他のインターフェースタイル208のいずれかを実装するために使用され得る。
インターフェースタイル208は、MMスイッチ308を含む。MMスイッチ308は、複数の異なる方向の各々で通信するための複数のメモリマップドインターフェースを含むことができる。例示的かつ非限定的な例として、MMスイッチ308は、1つ以上のメモリマップドインターフェースを含むことができ、メモリマップドインターフェースは、上に隣接するDPEアレイ102のタイルのMMスイッチに垂直に接続するマスタを有する。したがって、MMスイッチ308は、DPEアレイ102の1つ以上のタイルのメモリマップドインターフェースに対するマスタとして動作することが可能である。特定の例では、MMスイッチ308は、1つ以上のDPEタイル202及び/又は1つ以上のメモリタイル204のためのマスタとして動作してもよい。例えば、MMスイッチ308は、インターフェースタイル208の上のDPEタイル202及び/又はメモリタイル204の列のためのマスタとして動作してもよい。MMスイッチ308は、DPEアレイ102の複数の異なるタイルに接続するための追加のメモリマップドインターフェースを含むことができることを理解されたい。MMスイッチ308のメモリマップドインターフェースは、インターフェースタイル208の上に配設されたDPEアレイ102の異なるタイルと通信することが可能である1つ以上のスレーブを含んでもよい。
図7Aの例では、MMスイッチ308は、SoCインターフェース206の近隣のインターフェースタイル内のMMスイッチへの水平方向の通信を容易にする1つ以上のメモリマップドインターフェースを含み得る。例解の目的で、MMスイッチ308は、メモリマップドインターフェースを介して水平方向に隣接するタイルに接続されてもよく、そのようなメモリマップドインターフェースの各々は、1つ以上のマスタ及び/又は1つ以上のスレーブを含む。したがって、MMスイッチ308は、DPEアレイ102の正しいタイル及び/又はDPEアレイ102のタイルのサブセットに到達するために、1つのインターフェースタイルから別のインターフェースタイルにデータ(例えば、構成データ、制御データ、及び/又はデバッグデータ)を移動させ、そのようなタイルがインターフェースタイル208の上の列にあるか、又は異なるインターフェースタイル208の上にあるかにかかわらず、データをターゲットタイルに向けることが可能である。例えば、メモリマップドトランザクションがIC100の他のシステムから受信される場合、MMスイッチ308は、トランザクションを水平方向に、例えば、SoCインターフェース206内の他のインターフェースタイルに分散させることが可能である。
MMスイッチ308はまた、インターフェースタイル208内の制御レジスタ736に結合された1つ以上のマスタ及び/又はスレーブを有するメモリマップドインターフェースを含んでもよい。MMスイッチ308を通して、構成データを制御レジスタ736にロードして、インターフェースタイル208内の構成要素によって実行される種々の機能及び動作を制御することができる。図7A、図7B、及び図7Cは、制御レジスタ736とインターフェースタイル208の1つ以上の要素との間の接続を例解する。しかしながら、制御レジスタ736は、インターフェースタイル208の他の要素を制御してもよく、そのようなものとして、そのような他の要素への接続を有してもよいが、そのような接続は、図7A、図7B、及び/又は図7Cに図示されないことを理解されたい。
MMスイッチ308は、ブリッジ718を介してNoCインターフェース726に結合されたメモリマップドインターフェースを含むことができる。メモリマップドインターフェースは、1つ以上のマスタ及び/又はスレーブを含み得る。ブリッジ718は、NoCインターフェース726からのデータ転送(例えば、構成データ、制御データ、及び/又はデバッグデータ)を、MMスイッチ308によって受信され得るメモリマップドデータに変換することが可能である。
インターフェースタイル208はまた、イベントブロードキャスト回路機構704を含み得る。イベントブロードキャスト回路機構704は、制御レジスタ736によって構成され得る。図7Aの例では、イベントブロードキャスト回路機構704は、制御、デバッグ・トレース(control,debug,and trace、CDT)回路720に結合される。制御レジスタ736にロードされた構成データは、インターフェースタイル208内でローカルに検出され得る特定のイベントを定義する。イベントブロードキャスト回路機構704は、制御レジスタ736ごとに、DMAエンジン712、MMスイッチ308、ストリームスイッチ306、PLインターフェース710内に配設された先入れ先出し(FIFO)メモリ、及び/又はストリームインターフェース714から発出する、及び/又はそれらに関連する種々の異なるイベントを検出することが可能である。イベントの例は、DMA完了転送、ロックが解除されたこと、ロックが取得されたこと、PL転送の終了、又はインターフェースタイル208を通したデータフローの開始又は終了に関する他のイベントを含むことができるが、これらに限定されない。
インターフェースタイル208は、イベントブロードキャスト回路機構730を更に含んでもよい。一態様では、イベントブロードキャスト回路機構730は、ブロードキャスト回路機構としてのみ含まれてもよく、イベント生成及び/又は検出を提供しなくてもよい。その場合、イベントブロードキャスト回路機構730は、インターフェースタイル208の上のタイル内の他のイベントブロードキャスト回路機構からブロードキャストされたイベントを受信するために含まれ得る。イベントブロードキャスト回路機構730は、そのようなイベントをイベントブロードキャスト回路機構704及び/又はCDT回路720に提供してもよい。図7Aの例では、イベントブロードキャスト回路機構730は、CDT回路720への直接接続を有さなくてもよく、むしろイベントブロードキャスト回路機構704を介してCDT回路720に接続してもよい。
イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730の各々は、DPEアレイ102のイベントブロードキャストネットワークとSoCインターフェース206の他のインターフェースタイルとの間のインターフェースを提供する。イベントブロードキャスト回路機構704は、SoCインターフェース206の隣接する左のインターフェースタイル208内のイベントブロードキャスト回路機構と、イベントブロードキャスト回路機構730とに結合される。イベントブロードキャスト回路機構730は、SoCインターフェース206の隣接する右のインターフェースタイル208内のイベントブロードキャスト回路機構に結合される。イベントブロードキャスト回路機構704及び/又はイベントブロードキャスト回路機構730は、インターフェースタイル208の上の他のタイル内に配設されたイベントブロードキャスト回路機構に接続されてもよい。
イベントブロードキャスト回路機構704はまた、PLインターフェース710に結合される。図示されていないが、別の例示的な実装形態では、イベントブロードキャスト回路機構730はまた、PLインターフェース710に結合され得る。イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730は、イベントブロードキャスト回路機構704によって内部で生成されたイベント、SoCインターフェース206の他のインターフェースタイル208から受信されたイベント、DPEタイル202から受信されたイベント、及び/又はメモリタイル204から受信されたイベントを、DPEアレイ102の他のタイルに送信することが可能である。イベントブロードキャスト回路機構704は更に、そのようなイベントを、PLインターフェース710を介してIC100の他のシステム及び/又は回路に送信することが可能である。更に、PLインターフェース710は、IC100の他のシステム及び/又は回路ブロックからイベントを受信し、そのようなイベントをイベントブロードキャスト回路機構704及び/又は730に提供して、そのようなイベントを特定のDPEタイル202及び/又は特定のメモリタイル204に伝搬させて、それぞれの受信側タイルによる更なる動作をトリガしてもよい。
一例では、イベントブロードキャスト回路機構704は、PLインターフェース710を介してIC100のシステム及び/又は回路ブロックから受信した任意のイベントを、SoCインターフェース206の他のインターフェースタイル208、並びに/又はDPEアレイ102のDPEタイル202及び/若しくはメモリタイル204に送信することが可能である。イベントは、SoCインターフェース206内のインターフェースタイル208の間でブロードキャストされ得るので、イベントは、SoCインターフェース206内のインターフェースタイル208及びその中のイベントブロードキャスト回路機構を通ってDPEアレイ102のターゲット(例えば、意図された)タイルまで横断することによって、DPEアレイ102の任意のタイルに到達し得る。例えば、1つ以上のターゲットタイルを含むインターフェースタイル208によって管理されるタイルの列(又はサブセット)の下のSoCインターフェース206のインターフェースタイル208内のイベントブロードキャスト回路機構は、イベントをDPEアレイ102のターゲットタイルに伝搬してもよい。
図7Aの例では、イベントブロードキャスト回路機構704は、CDT回路720に結合される。イベントブロードキャスト回路機構704は、イベントをCDT回路720に送信することが可能である。CDT回路720は、受信したイベントをパケット化し、イベントブロードキャスト回路機構704からストリームスイッチ306にイベントを送信することが可能である。特定の例示的な実装形態では、イベントブロードキャスト回路機構730は、ストリームスイッチ306及び/又はCDT回路720にも接続され得る。
1つ以上の例示的実装形態では、イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730は、図7Aに図示されるように、1つ以上又は全ての方向から(例えば、図7Aに示される接続のいずれかを介して)ブロードキャストイベントを収集することが可能である。場合によっては、イベントブロードキャスト回路機構704及び/又はイベントブロードキャスト回路機構730は、信号の論理「OR」を実行し、結果を1つ以上又は全ての方向(例えば、CDT回路720を含む)に転送することが可能である。イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730からの各出力は、制御レジスタ736にロードされた構成データによって構成可能なビットマスクを含み得る。ビットマスクは、どのイベントが個々に各方向にブロードキャストされるかを決定する。そのようなビットマスクは、例えば、イベントの望ましくない伝搬又は重複伝搬を排除することができる。
1つ以上の例示的な実装形態では、イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730は、単一のより大きなイベントブロードキャスト回路機構モジュールとして統合及び実装されてもよい。その場合、統合されたイベントブロードキャスト回路機構モジュールは、イベントブロードキャスト回路機構704及びイベントブロードキャスト回路機構730に関連して説明されるそれぞれの接続及び/又は機能を実装し得る。
割込みハンドラ734は、イベントブロードキャスト回路機構704に結合され、イベントブロードキャスト回路機構704からブロードキャストされるイベントを受信することが可能である。1つ以上の例示的な実装形態では、割込みハンドラ734は、イベントブロードキャスト回路機構704からの選択されたイベント及び/又はイベントの組み合わせに応答して、NoCインターフェース726への割込みを生成するように、制御レジスタ736にロードされた構成データによって構成され得る。割込みハンドラ734は、構成データに基づいて、IC100のシステム及び/又は他の回路ブロックへの割込みを生成することが可能である。例えば、割込みハンドラ734は、プロセッサ又はPS106などの他のデバイスレベル管理ブロックに、割込みハンドラ734によって生成される割込みに基づいて、DPEアレイ102のタイルのいずれかで発生するイベントを通知することが可能である。
PLインターフェース710は、PL相互接続ブロック722に結合する。1つ以上の例示的な実装形態では、PLインターフェース710は、DPEアレイ102と別のクロックドメインとの間の非同期クロックドメインクロッシングを提供する。PLインターフェース710はまた、電力レールと統合するためのレベルシフタ及び/又は分離セルを提供し得る。特定の例示的な実装形態では、PLインターフェース710は、バックプレッシャーを処理するためのFIFOサポートを有する32ビット、64ビット、及び/又は128ビットインターフェースを提供するように構成され得る。ビット単位インターフェース710の特定の幅は、制御レジスタ736にロードされた構成データによって制御され得る。
1つ以上の他の例示的な実装形態では、PLインターフェース710は、PL相互接続ブロック722を介して他のダイ内の他のタイプの回路ブロック及び/又はシステムに結合される。したがって、PLインターフェース710は、インターフェースタイル208と、IC100のそのような他のシステム及び/又は回路ブロックとの間でデータを転送することが可能である。
図7Aの例では、インターフェースタイル208は、ストリームスイッチ306を含む。ストリームスイッチ306は、1つ以上のストリームインターフェースを通して、隣接する又は近隣のインターフェースタイル内のストリームスイッチに結合される。各ストリームインターフェースは、1つ以上のマスタ及び/又は1つ以上のスレーブを含んでもよい。特定の例示的な実装形態では、各々の対の近隣のストリームスイッチは、各方向において1つ以上のストリームを介してデータを交換することが可能である。ストリームスイッチ306はまた、1つ以上のストリームインターフェースによって、インターフェースタイル208の上に隣接するDPEアレイ102のタイル内のストリームスイッチに結合される。ストリームスイッチ306はまた、ストリームマルチプレクサ/デマルチプレクサ708(図7Aではストリームmux/demuxと略される)を介して、PLインターフェース710、DMAエンジン712、及び/又はストリームインターフェース714に結合される。ストリームスイッチ306は、例えば、ストリームマルチプレクサ/デマルチプレクサ708を通して、PLインターフェース710、DMAエンジン712、及び/又はストリームインターフェース714の各々と通信するために使用される、1つ以上のストリームインターフェースを含んでもよい。
ストリームスイッチ306は、制御レジスタ736にロードされた構成データによって構成され得る。ストリームスイッチ306は、例えば、構成データに基づいてパケット交換動作及び/又は回線交換動作をサポートするように構成され得る。更に、構成データは、ストリームスイッチ306が通信するDPEアレイ102の特定のタイルを定義する。1つ以上の例示的な実装形態では、構成データは、ストリームスイッチ306が通信するインターフェースタイル208の直上のタイルの列内のDPEアレイ102の特定のタイル又はタイルのサブセットを定義する。
ストリームマルチプレクサ/デマルチプレクサ708は、PLインターフェース710、DMAエンジン712、及び/又はストリームインターフェース714から受信したデータをストリームスイッチ306に向けることが可能である。同様に、ストリームマルチプレクサ/デマルチプレクサ708は、ストリームスイッチ306から受信したデータを、PLインターフェース710、DMAエンジン712、及び/又はストリームインターフェース714に向けることが可能である。例えば、ストリームマルチプレクサ/デマルチプレクサ708は、選択されたデータをPLインターフェース710にルーティングするように、選択されたデータをDMAエンジン712にルーティングして、そのようなデータがメモリマップドトランザクションとしてNoCインターフェース726に送信されるように、及び/又は選択されたデータをストリームインターフェース714にルーティングして、データが1つ以上のデータストリームとして物理NoCインターフェース726を介して送信されるように、制御レジスタ736に記憶された構成データによってプログラムされてもよい。
DMAエンジン712は、セレクタブロック716を通してデータをNoCインターフェース726に向けるマスタとして動作することが可能である。DMAエンジン712は、DPEアレイ102のタイルからデータを受信し、そのようなデータをメモリマップドデータトランザクションとして物理NoCインターフェース726に提供することが可能である。1つ以上の例示的な実装形態では、DMAエンジン712は、DMAエンジン712に含まれる複数のチャネル及び/又はDMAエンジン712内のチャネルを、ロック要求をポーリングして駆動するマスタと同期させるために使用され得るハードウェア同期回路機構を含む。例えば、マスタは、IC100の別のシステム内のプロセッサ及び/又はプロセッサシステムであり得る。マスタはまた、DMAエンジン712内のハードウェア同期回路機構によって生成された割込みを受信してもよい。
1つ以上の例示的な実装形態では、DMAエンジン712は、外部メモリ(例えば、IC100の外部のメモリ)及び/又はIC100内に実装されたメモリにアクセスすることが可能である。例えば、DMAエンジン712は、DPEアレイ102のタイルからデータストリームを受信し、NoC108を通してメモリにそのデータストリームを送信することが可能である。同様に、DMAエンジン712は、外部メモリからデータを受信することができ、データは、SoCインターフェース206の他のインターフェースタイル208及びDPEアレイ102の他のタイルに分散されてもよい。
1つ以上の例示的な実装形態では、DMAエンジン712は、DPEグローバル制御設定レジスタ(DPE GCSレジスタ)738を使用して設定され得るセキュリティビットを含む。メモリは、異なる領域又はパーティションに分割されてもよく、DPEアレイ102はメモリの特定の領域にアクセスすることのみを許可される。DMAエンジン712内のセキュリティビットは、DPEアレイ102が、DMAエンジン712によって、セキュリティビットごとに許可されたメモリの特定の領域のみにアクセスできるように設定されてもよい。例えば、DPEアレイ102によって実装されるアプリケーションは、この機構を完全に使用して、メモリの特定の領域のみにアクセスするように限定されてもよく、メモリの特定の領域から読取るように限定されてもよく、及び/又はメモリに書込むように限定されてもよい。
メモリへのアクセスを制御するDMAエンジン712内のセキュリティビットは、DPEアレイ102を全体として制御するように実装されてもよいし、メモリへのアクセスがDPEアレイ102のタイル及び/又はタイルグループごとに指定及び/又は制御され、そのようなタイル又はタイルグループが協調して動作するように、例えばカーネル及び/又は他のアプリケーションを実装するように構成される、より粒度の細かい方法で実装されてもよい。
ストリームインターフェース714は、NoCインターフェース726からデータを受信し、そのデータをストリームマルチプレクサ/デマルチプレクサ708に転送することが可能である。ストリームインターフェース714は更に、ストリームマルチプレクサ/デマルチプレクサ708からデータを受信し、そのデータをNoCインターフェース726に転送することが可能である。セレクタブロック716は、DMAエンジン712又はストリームインターフェース714からのデータをNoCインターフェース726に渡すように構成可能である。
CDT回路720は、インターフェースタイル208内で制御動作、デバッグ動作、及びトレース動作を実行することが可能である。デバッグに関して、インターフェースタイル208内に配設されたレジスタの各々は、MMスイッチ308を介してアクセス可能なメモリマップ上にマッピングされる。CDT回路720は、例えば、トレースハードウェア、トレースバッファ、パフォーマンスカウンタ、及び/又はストール論理などの回路を含んでもよい。CDT回路720のトレースハードウェアは、トレースデータを収集することが可能である。CDT回路720のトレースバッファは、トレースデータをバッファリングすることが可能である。CDT回路720は、更に、トレースデータをストリームスイッチ306に出力することが可能である。
1つ以上の例示的な実装形態では、CDT回路720は、データ、例えばトレースデータ及び/又はデバッグデータを収集し、そのようなデータをパケット化し、次いで、パケット化されたデータを、ストリームスイッチ306を通して出力することが可能である。例えば、CDT回路720は、パケット化されたデータを出力し、そのようなデータをストリームスイッチ306に提供することが可能である。加えて、制御レジスタ736又は他のものは、それぞれのタイルのMMスイッチ308を通して、メモリマップドトランザクションを介して、デバッギング中に読取り又は書込みされ得る。同様に、CDT回路720内のパフォーマンスカウンタは、それぞれのタイルのMMスイッチ308を通してメモリマップドトランザクションを介してプロファイリング中に読取り又は書込みされ得る。
1つ以上の例示的な実装形態では、CDT回路720は、イベントブロードキャスト回路機構704(又はイベントブロードキャスト回路機構730)によって伝搬された任意のイベント、又はCDT回路720に結合されたイベントブロードキャスト回路機構704のインターフェースによって利用されるビットマスクごとに選択されたイベントを受信することが可能である。例えば、CDT回路720は、DPEアレイ102の任意のタイル内に配設されたイベントブロードキャスト回路機構からブロードキャストされたイベントを受信することが可能である。CDT回路720は、複数のそのようなイベントをパケットにまとめてパックし、例えばパケット化し、パケット化されたイベントをタイムスタンプに関連付けることが可能である。CDT回路720は更に、パケット化されたイベントを、ストリームスイッチ306を介してインターフェースタイル208の外部の宛先に送信することが可能である。イベントは、ストリームスイッチ306及びストリームマルチプレクサ/デマルチプレクサ708によって、PLインターフェース710、DMAエンジン712、及び/又はストリームインターフェース714を介して、IC100の他のシステム及び/又は回路ブロックに送信され得る。
DPE GCSレジスタ738は、DPEアレイ102への及び/又はDPEアレイ102からのセキュアなアクセスをイネーブル又はディスエイブルにするために使用されるDPEグローバル制御設定/ビット(本明細書では「セキュリティビット」とも呼ばれる)を記憶してもよい。DPE GCSレジスタ738は、図7Cに関連して以下でより詳細に説明されるSoCセキュア/初期化インターフェースを介してプログラムされ得る。SoCセキュア/初期化インターフェースから受信されたセキュリティビットは、図7Aに示されるように、バスを介してSoCインターフェース206の1つのインターフェースタイルから次のインターフェースタイルに伝搬し得る。
1つ以上の例示的な実装形態では、DPEアレイ102への外部メモリマップドデータ転送は、セキュアでなくてもよく、信頼されなくてもよい。DPE GCSレジスタ738内にセキュリティビットを設定することなく、メモリマップドデータ転送によって通信することが可能であるIC100内の任意のエンティティは、DPEアレイ102と通信することが可能である。DPE GCSレジスタ738内にセキュリティビットを設定することによって、DPEアレイ102と通信することが許可される特定のエンティティは、セキュアなトラフィックを生成することが可能である指定されたエンティティのみがDPEアレイ102と通信することが可能であるように定義されてもよい。
1つ以上の例示的な実装形態では、メモリマップドデータ転送は、トランザクションがセキュアであるかセキュアでないかを指定する追加のサイドバンド信号、例えばビットを含み得る。DPE GCSレジスタ738内のセキュリティビットが設定されると、SoCインターフェース206、例えばインターフェースタイル208に入るメモリマップドトランザクションは、SoCインターフェース206に到着するメモリマップドトランザクションがセキュアであることを示すように設定されたサイドバンド信号を有しなければならない。SoCインターフェース206に到着するメモリマップドトランザクションが、サイドバンドビットを設定されておらず、セキュリティビットがDPE GCSレジスタ738内に設定されている場合、SoCインターフェース206は、トランザクションがDPEアレイ102の他のタイルに入る又は渡されることを許可しない。
1つ以上の例示的な実装形態では、IC100は、ルートオブトラストとして動作するセキュアなエージェント(例えば、回路)を含む。例えば、PMC110は、セキュアなエージェントであってもよい。セキュアなエージェントは、DPE GCSレジスタ738のセキュリティビットが設定されるときにDPEアレイ102にアクセスするために、メモリマップドトランザクション内のサイドバンドビットを設定するのに必要な許可を用いて、IC100内の異なるエンティティ(例えば、回路)を構成することが可能である。セキュアなエージェントは、IC100が構成されるときに、その中に実装され得る異なるマスタに許可を与え、それによって、そのようなマスタに、セキュアなトランザクションをDPEアレイ102に発行する能力を与える。
図7Bは、インターフェースタイル208の例示的な実装形態を例解する。図7Bに示される例示的なアーキテクチャはまた、SoCインターフェース206に含まれる他のインターフェースタイルのいずれかを実装するために使用され得る。図7Bの例は、図7Aに示されたアーキテクチャの簡略バージョンを例解する。図7Bのアーキテクチャは、DPEタイル202及び/又はメモリタイル204と、IC100内の他のシステム及び/又は回路ブロックとの間の接続性を提供する。図7Bの例では、DMAエンジン712、ストリームインターフェース714、セレクタブロック716、ブリッジ718、及びストリームマルチプレクサ/デマルチプレクサ708が省略されている。したがって、図7Bのインターフェースタイル208は、IC100のより少ない面積を使用して実装され得る。更に、図示されるように、ストリームスイッチ306は、PLインターフェース710に直接結合される。
図7Bの例示的なアーキテクチャは、DPEアレイ102のタイルを構成する目的で、DPEアレイ102の外部の回路からメモリマップドデータ、例えば構成データを直接受信することができない。そのような構成データは、MMスイッチ308を介して近隣のインターフェースタイルから受信され、インターフェースタイル208が管理するDPEタイル202及び/又はメモリタイル204のサブセットに(例えば、図7Bのインターフェースタイル208の上のタイルの列に)向けられてもよい。
図7Cは、インターフェースタイル208の別の例示的な実装形態を例解する。特定の例示的な実装形態では、図7Cに示すアーキテクチャは、SoCインターフェース206内に1つのタイルのみを実装するために使用され得る。図7Cに示すアーキテクチャは、図7Bに示すアーキテクチャと同様である。図7Cでは、セキュア/初期化インターフェース740、クロック信号発生器742、及びグローバルタイマ744などの追加の構成要素が含まれる。
図7Cの例では、セキュア/初期化インターフェース740は、DPEアレイ102のグローバルリセットレジスタ(図示せず)及びDPE GCSレジスタ738へのアクセスを提供することが可能である。DPE GCSレジスタ738は、クロック信号発生器742のための制御レジスタを含むことができる。図示されるように、セキュア/初期化インターフェース740は、DPE GCSレジスタ738にセキュリティビットを提供し、SoCインターフェース206の他のインターフェースタイル内の他のDPE GCSレジスタ738にセキュリティビットを伝搬することが可能である。セキュア/初期化インターフェース740は、SoCインターフェース206のための単一のスレーブエンドポイントを実装することが可能である。
図7Cの例では、クロック信号発生器742は、1つ以上のクロック信号746及び/又は1つ以上のリセット信号750を生成することが可能である。クロック信号746及び/又はリセット信号750は、DPEタイル202、メモリタイル204の各々、及びSoCインターフェース206の他のインターフェースタイル208に分散されてもよい。例えば、クロック信号発生器742は、1つ以上の位相ロックループ回路(phase lock loop、PLL)を含み得る。図示されるように、クロック信号発生器742は、DPEアレイ102の外部の別の回路によって生成された基準クロック信号を受信することが可能である。別の例では、基準クロックは、IC100の外部のソースから受信され得る。クロック信号発生器742は、受信した基準クロック信号に基づいてクロック信号746を生成することが可能である。
図7Cの例では、クロック信号発生器742は、セキュア/初期化インターフェース740を介して構成される。例えば、クロック信号発生器742は、データをDPE GCSレジスタ738にロードすることによって構成されてもよい。したがって、DPEアレイ102の1つ以上のクロック周波数及びリセット信号750の生成は、セキュア/初期化インターフェース740を通して適切な構成データをDPE GCSレジスタ738に書込むことによって設定することができる。テスト目的のために、クロック信号746及び/又はリセット信号750はまた、PL104に直接ルーティングされ得る。
セキュア/初期化インターフェース740は、制御/デバッグ(回路)ブロック(例えば、図示されていないIC100の制御及び/又はデバッグシステム)に結合され得る。1つ以上の例示的な実装形態では、セキュア/初期化インターフェース740は、制御/デバッグブロックにステータス信号を提供することが可能である。例示的かつ非限定的な例として、セキュア/初期化インターフェース740は、クロック信号発生器742の内部から生成された「PLLロック」信号を制御/デバッグブロックに提供することが可能である。PLLロック信号は、PLLが基準クロック信号上でロックを獲得したときを示し得る。
セキュア/初期化インターフェース740は、インターフェース748を介して命令及び/又はデータを受信することが可能である。データは、本明細書で説明されるセキュリティビット、クロック信号発生器構成データ、及び/又はDPE GCSレジスタ738に書込まれ得る他のデータを含み得る。一態様では、PMC110又は別のマスタ回路は、インターフェース748に結合され得る。
グローバルタイマ744は、CDT回路720にインターフェースすることが可能である。例えば、グローバルタイマ744は、CDT回路720に結合され得る。グローバルタイマ744は、トレースに使用されるイベントにタイムスタンプを付けるためにCDT回路720によって使用される信号を提供することが可能である。1つ以上の例示的な実装形態では、グローバルタイマ744は、SoCインターフェース206のインターフェースタイルのうちの他のインターフェースタイル内のCDT回路720に結合され得る。例えば、グローバルタイマ744は、図7A、図7B、及び/又は図7Cの例示的なインターフェースタイル内のCDT回路720に結合されてもよい。グローバルタイマ744はまた、制御/デバッグブロックに結合され得る。
図8は、PLインターフェース710の例示的な実装形態を例解する。図8の例では、PLインターフェース710は、使用される特定のタイルアーキテクチャに応じて、PL相互接続ブロック722をストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708に結合する複数のチャネルを含む。PLインターフェース710内の図8に示されたチャネルの特定の数は、例解の目的であり、限定のためではない。他の例では、PLインターフェース710は、図8に示されるよりも少ない又は多いチャネルを含み得る。
1つ以上の例示的な実装形態では、PLインターフェース710に結合されたIC100の他のシステム及び/又は回路ブロックは、DPEアレイ102とは異なる基準電圧及び/又は異なるクロック速度で動作する。したがって、図8の例では、PLインターフェース710は、複数のシフト分離回路802と、複数の非同期FIFOメモリ804とを含む。各チャネルは、シフト分離回路802及び非同期FIFOメモリ804を含む。チャネルの第1のサブセットは、PL104又は他の回路からストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708にデータを伝達する。チャネルの第2のサブセットは、ストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708からPL104又は他の回路にデータを伝達する。
シフト分離回路802は、異なる電圧のドメイン間をインターフェースすることが可能である。この場合、シフト分離回路802は、PL104及び/又は他の回路機構の動作電圧とDPEアレイ102のタイルの動作電圧との間で遷移するインターフェースを提供することが可能である。非同期FIFOメモリ804は、2つの異なるクロックドメイン間をインターフェースすることが可能である。この場合、非同期FIFOメモリ804は、PL104又は他の回路機構のクロックレートとDPEアレイ102のクロックレートとの間で遷移するインターフェースを提供することが可能である。
1つ以上の例示的な実装形態では、非同期FIFOメモリ804は、DPEアレイ102への32ビットインターフェースを有する。非同期FIFOメモリ804とシフト分離回路802との間の接続、並びにシフト分離回路802とPL104との間の接続は、幅がプログラマブル(例えば、構成可能)であり得る。例えば、非同期FIFOメモリ804とシフト分離回路802との間の接続、並びにシフト分離回路802とPL104との間の接続は、幅が32ビット、64ビット、又は128ビットであるように構成され得る。説明したように、PLインターフェース710は、説明したビット幅を達成するために、構成データを制御レジスタ736に書込むMMスイッチ308によって構成可能である。MMスイッチ308を使用して、PL104の側の非同期FIFOメモリ804の側は、32ビット、64ビット、又は128ビットのいずれかを使用するように構成可能であり得る。本明細書で提供されるビット幅は、例解の目的のためのものである。他の例示的な実装形態では、他のビット幅が使用され得る。いずれの場合も、種々の構成要素について説明した幅は、制御レジスタ736にロードされた構成データに基づいて変更することができる。
図9は、ストリームインターフェース714の例示的な実装形態を例解する。DPEアレイ102は、タイル内のストリームインターフェースを使用してNoC108を介して通信する2つの一般的な方法を有する。一態様では、DPEタイル202及び/又はメモリタイル204は、ストリームスイッチ306を使用してDMAエンジン712にアクセスすることが可能である。DMAエンジン712は、NoC108からのメモリマップドトランザクションを、DPEアレイ102内のタイルに送信するためのデータストリームに変換すること、及びDPEアレイ102内のタイルからのデータストリームを、NoC108を介して送信するためのメモリマップドトランザクションに変換することが可能である。別の態様では、データストリームは、ストリームインターフェース714に向けられ得る。
図9の例では、ストリームインターフェース714は、NoC108をストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708に結合する複数のチャネルを含む。各チャネルは、FIFOメモリと、アップサイズ回路又はダウンサイズ回路のいずれかとを含み得る。チャネルの第1のサブセットは、NoC108からストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708にデータを伝達する。チャネルの第2のサブセットは、ストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708からNoC108にデータを伝達する。ストリームインターフェース714内の図9に示されたチャネルの特定の数は、例解の目的であり、限定のためではない。他の例では、ストリームインターフェース714は、図9に示されるよりも少ない又は多いチャネルを含み得る。
1つ以上の例示的な実装形態では、アップサイズ回路908(図9では「US回路」と略される)の各々は、データストリームを受信し、受信したデータストリームの幅を増加させることが可能である。例えば、各アップサイズ回路908は、32ビットデータストリームを受信し、対応するFIFOメモリ910に128ビットデータストリームを出力することができる。FIFOメモリ910の各々は、調停・マルチプレクサ回路912に結合される。調停・マルチプレクサ回路912は、結果として生じる出力データストリームをNoCインターフェース726に提供するために、特定の調停方式又は優先順位(例えば、ラウンドロビン又は他のスタイル)を使用して、受信したデータストリーム間で調停を行うことが可能である。調停・マルチプレクサ回路912は、クロックサイクルごとに新しい要求を処理し、受け入れることが可能である。DPEアレイ102とNoC108との間のクロックドメインクロッシングは、NoC108自体の中で処理されてもよい。1つ以上の他の実施形態では、DPEアレイ102とNoC108との間のクロックドメインクロッシングは、SoCインターフェース206内で処理されてもよい。例えば、クロックドメインクロッシングは、ストリームインターフェース714内で処理され得る。
デマルチプレクサ902は、NoC108からデータストリームを受信することが可能である。例えば、デマルチプレクサ902は、NoCインターフェース726に結合され得る。例解の目的で、NoCインターフェース726からのデータストリームは、幅が128ビットであり得る。デマルチプレクサ902は、受信したデータストリームをFIFOメモリ904のうちの1つに転送することが可能である。デマルチプレクサ902がデータストリームを提供する特定のFIFOメモリ904は、データストリーム自体の中で符号化されてもよい。FIFOメモリ904は、ダウンサイズ回路906(図9では「DS回路」と略記される)に接続されている。ダウンサイズ回路906は、時分割多重化を使用してバッファリングした後に、受信したストリームをより狭い幅にダウンサイズすることが可能である。例えば、ダウンサイズ回路906は、ストリームを128ビット幅から32ビット幅にダウンサイズすることができる。
図示されるように、ダウンサイズ回路906及びアップサイズ回路908は、使用されるインターフェースタイル208の特定のアーキテクチャに応じて、ストリームスイッチ306又はストリームマルチプレクサ/デマルチプレクサ708に結合される。図9は、例解の目的で、として提供されており、限定を意図するものではない。チャネル内の構成要素の順序及び/又は接続性(例えば、アップサイズ/ダウンサイズ回路とFIFOメモリは、変動し得る)。1つ以上の例示的な実装形態では、DPEアレイ102は、IC100内の1つ以上又は全ての他のシステムよりも速い又は高いクロックレートで動作してよい。
1つ以上の他の例では、図8に関連して説明されるようなPLインターフェース710は、図9に関連して説明されるようなアップサイズ回路及び/又はダウンサイズ回路を含み得る。例えば、ダウンサイズ回路は、PL104(又は他の回路機構)からストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708にデータを伝達する各チャネルに含まれてもよい。アップサイズ回路は、ストリームスイッチ306及び/又はストリームマルチプレクサ/デマルチプレクサ708からPL104(又は他の回路機構)にデータを伝達する各チャネルに含まれ得る。
1つ以上の他の例示的な実装形態では、独立した要素として図示されているが、各ダウンサイズ回路906は、例えば、単一のブロック又は回路として、対応するFIFOメモリ904と組み合わされ得る。同様に、各アップサイズ回路908は、例えば、単一のブロック又は回路として、対応するFIFOメモリ910と組み合わされ得る。
図10は、DMAエンジン712の例示的な実装を例解する。図10の例では、DMAエンジン712は、データパス回路機構1002を含む。データパス回路機構1002は、複数のモジュール又はインターフェースに分割されてもよい。各インターフェースは、互いに独立して動作することが可能である。データパス回路機構1002は、メモリマップド-ストリームインターフェース(インターフェース)1004及びストリーム-メモリマップドインターフェース(インターフェース)1006を含んでもよい。インターフェース1004及びインターフェース1006の各々は、1つ以上の別個のチャネルを含み得る。例えば、インターフェース1004は、複数のメモリマップドーストリームチャネルを含むことができ、インターフェース1006は、複数のストリームーメモリマップドチャネルを含むことができる。各チャネルは、独立して構成可能であり得る。したがって、DMAエンジン712は、インターフェース1006を介してストリームスイッチ306から2つ以上の着信ストリーム(例えば、チャネル当たり1つのストリーム)を受信し、インターフェース1004を介してストリームスイッチ306に2つ以上の発信ストリーム(例えば、チャネル当たり1つのストリーム)を送信することが可能である。データパス回路機構1002は更に、マスタメモリマップドインターフェース1014を含んでもよい。マスタメモリマップドインターフェース1014は、NoC108をインターフェース1004及びインターフェース1006に結合する。
DMAエンジン712はまた、バッファ記述子レジスタファイル1008及びハードウェア同期回路機構1010を含むことができる。バッファ記述子レジスタファイル1008及びハードウェア同期回路機構1010は、マルチプレクサ1012を介してアクセスされ得、それによって、マルチプレクサ1012に結合された制御インターフェースを有する他の回路機構によるバッファ記述子レジスタファイル1008及びハードウェア同期回路機構1010へのアクセスを容易にする。そのような制御インターフェースの例は、メモリマップドインターフェース又は制御ストリームインターフェースを含むが、これらに限定されない。制御インターフェースは、DPEアレイ102のDPEタイル202、DPEアレイ102のメモリタイル204、PS106、又はPeripheral Component Interconnect Express(PCIe)バスなどの通信バスを介してIC100に接続された外部ホストコンピューティングシステムのプロセッサを含む別のマスタに結合することができる。制御ストリームインターフェースの例は、DPEタイル202及び/又はメモリタイル204に関連して説明されるようなストリーミングインターフェースである。
ハードウェア同期回路機構1010は、DMAエンジン712に含まれる複数のチャネル及び/又はDMAエンジン712内のチャネルを、ロック要求をポーリングして駆動するマスタと同期させるために使用され得る。例えば、マスタは、PS106、又はPL104内に実装されたデバイスであり得る。別の例では、マスタはまた、ロックが利用可能であるとき、DMAエンジン712内のハードウェア同期回路機構1010によって生成された割込みを受信してもよい。
DMA転送は、バッファ記述子レジスタファイル1008内に記憶されたバッファ記述子によって定義することができる。インターフェース1006は、バッファ記述子内の情報に基づいてNoC108への読取り転送を要求することが可能である。インターフェース1004からストリームスイッチ306への発信ストリームは、ストリームスイッチのための構成レジスタ及び/又はインターフェース1004の個々のチャネルの構成に基づいて、パケット交換又は回線交換として構成され得る。
DMAエンジン712は、図12A及び図12B並びに図13A及び図13Bに関連して本明細書で説明する1つ以上の追加の回路を含み得る。例えば、DMAエンジン712は、図12に関連して説明されるような物理メモリ保護回路及び/又は図13に関連して説明されるようなメモリ管理ユニットを含み得る。
図11A、図11B、及び図11Cは、メモリタイル204の例示的な実装形態を例解する。図11Aの例では、メモリタイル204は、ストリームスイッチ306、MMスイッチ308、DMAエンジン310、及びRAM312を含む。メモリタイル204はまた、ブロードキャスト回路機構1102、任意選択でイベントブロードキャスト回路機構1112、CDT回路1104、制御レジスタ1106、及びロック回路ブロック(図11Aでは「ロック」として示される)1108を含む。
図11Aの例では、ストリームスイッチ306は、DMAエンジン310、CDT回路1104、及び図11Aのメモリタイル204に隣接するDPAアレイ102の各タイル内に配設されたストリームスイッチに結合される。この例では、ストリームスイッチ306は、メモリタイル204の上、下、右、及び左に隣接するタイル内の他のストリームスイッチに接続する。隣接するタイルは、タイルの構成及びその中のメモリタイル204の場所に応じて、1つ以上の他のメモリタイル204、1つ以上のDPEタイル202、1つ以上のインターフェースタイル208、又はそれらの組み合わせであってよい。メモリタイル204に隣接するDPEアレイ102の特定のタイルは、DPEアレイ102のために実装された特定のグリッド構成に基づいて変化する。
1つ以上の他の例示的な実装形態では、ストリームスイッチ306は、DMAエンジン310、及びDPEアレイ102のより少ない隣接するタイル内のストリームスイッチに接続されてもよい。一態様では、ストリームスイッチ306は、メモリタイル204の上及び下にあるDPEアレイ102の隣接するタイルのみのストリームスイッチに接続されてもよい。そのような例では、ストリームスイッチ306は、隣接する左及び隣接する右のタイルのストリームスイッチに接続されない。
MMスイッチ308は、CDT回路1104及び制御レジスタ1106に接続される。MMスイッチ308はまた、メモリタイル204の上に隣接するDPEアレイ102のタイル内のMMスイッチ、及び下に隣接するDPEアレイ102のタイル内のMMスイッチに接続される。メモリタイル204の上及び下に隣接するタイルは、1つ以上の他のメモリタイル204、1つ以上のDPEタイル202、1つ以上のインターフェースタイル208、又は任意の2つのタイルタイプの組み合わせであり得る。上述したように、メモリタイル204に隣接するDPEアレイ102の特定のタイルは、DPEアレイ102のグリッド構成に基づいて変化する。
DMAエンジン310は、RAM312と、図11Aのメモリタイル204の左及び右に隣接する任意のメモリタイル内に配設されたRAMとにアクセス、例えば、読取り及び/又は書込み、することが可能である。DMAエンジン310は更にロック回路ブロック1108に接続され、他の回路が同時にメモリの同じ部分にアクセスすることを防止するために、RAM312の特定の部分がロックされることを要求する。同様に、DMAエンジン310は、左及び右に隣接するメモリタイルのロックにアクセスして、それぞれの隣接するメモリタイル内に配設されたRAMの特定の部分に対するロックを要求することが可能である。
例示的な実装形態では、ロック回路ブロック1108は、64個のセマフォロック及びロックごとに6ビット状態を提供することが可能である。各ロック回路ブロック1108は、同じメモリタイル内のDMAエンジンと、右及び/又は左に隣接する各メモリタイル内のDMAエンジンとによってアクセス可能である。
イベントブロードキャスト回路機構1102及び1112は、図11Aのメモリタイル204に隣接するDPEアレイ102のタイル内に配設されたイベントブロードキャスト回路機構に接続される。この例では、ブロードキャスト回路機構1102は、メモリタイル204の上、下、及び左に隣接するタイル内の他のイベントブロードキャスト回路機構に接続する。イベントブロードキャスト回路機構1112は、メモリタイル204の上、下、及び右に隣接するタイル内の他のイベントブロードキャスト回路機構に接続する。イベントブロードキャスト回路機構1102は、イベントブロードキャスト回路機構1112に結合される。隣接するタイルは、1つ以上の他のメモリタイル204、1つ以上のDPEタイル202、1つ以上のインターフェースタイル208、又はそれらの何らかの組み合わせであり得る。メモリタイル204に隣接するDPEアレイ102の特定のタイルは、DPEアレイ102のグリッド構成に基づいて変化する。
イベントブロードキャスト回路機構1102、1112は、DPEアレイ102の他のタイル内のイベントブロードキャスト回路機構と同様に動作することが可能である。例えば、イベントブロードキャスト回路機構1102及び1112は、IC100の他のタイル及び/又は回路から受信したイベントを特定の宛先に伝達することが可能である。イベントブロードキャスト回路機構1102、1112はまた、イベントを生成することが可能である。イベントブロードキャスト回路機構1102、1112によって生成されるイベントは、メモリタイル204によって実行される動作に関連する。イベントブロードキャスト回路機構1102及び/又はイベントブロードキャスト回路機構1112によって生成され得るイベントの例は、DMAエンジン310による読取り動作の開始及び/又は完了、DMAエンジン310による書込み動作の開始及び/又は完了、並びにストリームスイッチ306によって行われるトランザクションの開始及び/又は終了を含み得るが、これらに限定されない。イベントブロードキャスト回路機構1102、1112は、例示的なイベントのうちの選択されたイベントを検出し、そのようなイベントのうちの選択されたイベントを、他のイベントブロードキャスト回路機構及び/又はCDT回路1104などの特定の宛先に転送するように、制御レジスタ1106によってプログラムされ得る。
別の例示的な実装形態では、メモリタイル204は、イベントブロードキャスト回路機構1102のみを含み得る(イベントブロードキャスト回路機構1112を省略する)。イベントブロードキャスト回路機構1112が省略され、イベントブロードキャスト回路機構1102が、イベントブロードキャスト回路機構の2つのインスタンスを含む上及び/又は下の別のタイル(例えば、インターフェースタイル208及び/又はDPEタイル202)に接続する場合、イベントブロードキャスト回路機構1102は、上及び/又は下のそのようなタイル内のイベントブロードキャスト回路機構の両方のインスタンスに接続するように、追加のポートを含んでもよい。更に、イベントブロードキャスト回路機構1102は、メモリタイル204の右及び左に隣接するタイル内のイベントブロードキャスト回路機構に接続する。
CDT回路1104は、本明細書で説明する他のCDT回路と同様の動作を実行することが可能である。例えば、CDT回路1104は、メモリタイル204内で制御動作、デバッグ動作、及びトレース動作を実行することが可能である。デバッグに関して、メモリタイル204内に配設されたレジスタの各々は、MMスイッチ308を介してアクセス可能なメモリマップ上にマッピングされる。CDT回路1104は、例えば、トレースハードウェア、トレースバッファ、パフォーマンスカウンタ、及び/又はストール論理などの回路を含んでもよい。CDT回路1104のトレースハードウェアは、トレースデータを収集することが可能である。CDT回路1104のトレースバッファは、トレースデータをバッファリングすることが可能である。CDT回路1104は、更に、トレースデータをストリームスイッチ306に出力することが可能である。
例示的な実装形態では、CDT回路1104は、イベントブロードキャスト回路機構1102から受信したイベントデータをパケット化し、パケット化されたイベントデータをストリームスイッチ306に転送することが可能である。CDT1104によって生成された任意のトレースデータはまた、そのようなデータをストリームスイッチ306に転送する前にパケット化され得る。ストリームスイッチ306は、パケット化されたイベントデータを、他の接続されたストリームスイッチを介して他の宛先に転送することが可能である。
構成データは、MMスイッチ308を通して制御レジスタ1106にロードされ得る。制御レジスタ1106にロードされた構成データは、メモリタイル204の動作を命令する。例えば、制御レジスタ1106にロードされた構成データは、どのイベントがイベントブロードキャスト回路機構1102、1112によって生成されるか、及び/又は他の宛先、ストリームスイッチ306によって他のストリームスイッチと確立された論理接続、DMAエンジン310がアクセスできるメモリタイルのRAM、及び/又はCDT回路1104によって実装されたデバッグ及びトレースモード、に渡されるかを構成するために使用され得る。
適切な構成データを制御レジスタ1106にロードすることによって、メモリタイル204のうちの異なるものは、ストリームスイッチ306を使用して(例えば、論理的に)相互接続され得、及び/又はDPEアレイ102の他のタイル、例えば、DPEタイル202に相互接続され得る。したがって、構成データに基づいて、DMAエンジン310は、DPEアレイ102内の他のタイルによって要求されたDMA転送を実行するために、その中のRAM312及び/又は隣接する左及び/又は右のメモリ内のRAMへのアクセスを開始することが可能である。
DPEタイル202のいずれか1つ以上は、複合メモリを形成するメモリタイル204又はメモリタイル204のグループ(例えば、DMAエンジン310を使用して互いのRAM312にアクセスするように構成されたメモリタイル204)の読取り及び/又は書込みを開始することが可能である。複合メモリは、2つ以上のメモリタイル204から形成され、そのようなメモリタイル204内のDMAエンジン310は、少なくとも1つの他のメモリタイル204内のRAM312に対して読取り及び/又は書込みを行うことが可能である。例示的な実装形態では、DPEアレイ102は、複数のクラスタを形成するように構成されてもよく、各クラスタは、1つ以上のDPEタイル202と、任意選択で1つ以上のメモリタイル204とを含む。DPEアレイ102の同じクラスタ内のタイルは、特定のアプリケーションを実装するために互いに通信してもよい。クラスタは、それぞれの異なるクラスタがクラスタ固有のアプリケーション(又は別のクラスタ内で実行されるアプリケーションの異なるインスタンス)を実行することが可能である場合、互いに分離して動作することが可能である。特定のクラスタのDPEタイル202及びメモリタイル204は、互いに論理的に分離されてもよい。
単一のより大きなメモリとして一緒に動作するように構成されたメモリタイル204又は複数のメモリタイル204の形態でメモリのプールを提供することによって、DPEタイル202は、動作をより効率的に実行することが可能である。DPEタイル202は、DPEタイル202に含まれるメモリモジュール304がアプリケーションの効率的な実行のために十分に大きくない場合、DPEアレイ102の外部に配設されたメモリにアクセスする必要なく、1つ以上のメモリタイル204からのDPEアレイ102内のメモリのより大きなプールにアクセスしてもよい。例えば、外部メモリへのアクセスを回避することができ、それによってDPEアレイ102の速度及び帯域幅を増大させることができる。
図11Bは、メモリタイル204の例示的な実装形態を例解する。図11Bの例は、メモリタイル204のための例示的な読取りチャネルを示す。図11Bの例では、メモリタイル204の特定の構成要素は、読取りチャネルの動作をより良く例解するために省略されている。図11Bの例では、RAM312は複数のメモリバンクを含む。例解の目的で、RAM312は16個のメモリバンク0~15を含む。各メモリバンクは、複数の読取りインターフェース及び書込みインターフェースを有する関連する調停回路を有する。
例示的な実装形態では、RAM312は、512KBのSRAMであり得る。16個の物理メモリバンクの各々は、128ビット幅及び2kワードの深さであり得る。RAM312は、ECCメモリ保護を提供するように構成され得る。メモリバンク0~15の各々は、シングルポートであってもよく、クロックサイクルごとに1つの読取り動作又は1つの書込み動作をサポートしてもよい。メモリバンク0~15の調停回路0~15の各々は、9個の読取りインターフェースと9個の書込みインターフェースとを含み得る。各読取りインターフェース及び書込みインターフェースは、幅が128ビットであり得る。調停回路の読取りインターフェースを図11Bに例解する。
DMAエンジン310は、複数の異なるチャネル及びスイッチング回路機構1114を含む。この例では、DMAエンジン310は、複数のメモリマップドーストリーム(memory mapped-to-stream、MM2S)チャネル0~5、複数のストリームーメモリマップド(stream-to-memory mapped、S2MM)チャネル0~5、及びMMインターフェース1110を含む。MM2Sチャネル及びS2MMチャネルは、ストリームスイッチ306に接続される。各MM2Sチャネルは、読取り動作を実行することが可能である。各S2MMチャネルは、書込み動作を実行することが可能である。
例示的な実装形態では、MM2Sチャネル、S2MMチャネル、及びMMインターフェース1110は、Advanced Microcontroller Bus Architecture(AMBA)eXtensible Interface(AXI)バスプロトコルに準拠し得る。AMBA AXIバスは、回路ブロック及び/又はシステム間のオンチップ接続を確立する際に使用するための埋め込みマイクロコントローラバスインターフェースである。AMBA AXI又は「AXI」は、インターフェースの例示的な例として提供されており、本明細書で説明する本発明の構成を限定するものではない。他の好適な相互接続アーキテクチャ及び/又はバスアーキテクチャが、AXIの代わりに使用されてもよい。
MM2Sチャネル0~3は、スイッチング回路機構1114を介して調停回路0~15に接続され、したがって、メモリバンク0~15のうちの任意の1つ以上からデータを読取ることが可能である。同様に、スイッチング回路機構1114を介して、MM2Sチャネル0~3は、図11Bの例の左及び右に隣接するメモリタイル内に配設されたメモリバンクのための調停回路0~15に接続される。したがって、MM2Sチャネル0~3は、図11Bの例の左及び右に隣接するメモリタイルのメモリバンク0~15のうちの任意の1つ以上からデータを読取ることが可能である。MMS2チャネル4~5は、同じメモリタイル内のスイッチング回路機構1114を介して調停バンク0~15に接続されており、同じメモリタイル内のメモリバンク0~15からデータを読取ることしかできない。図11Bに示されるアーキテクチャを使用して、DMAエンジン310は、同じメモリタイル内のメモリバンク0~15からの読取りを開始し、左及び/又は右に隣接するメモリタイルのメモリバンク0~15に読取りを向けることが可能である。
MM2Sチャネル0~5は、MM2Sチャネル0~5のそれぞれ1つに結合されたメモリバンクの読取りを開始することが可能である。MM2Sチャネルを使用してメモリバンクから読取されたデータは、メモリマップドデータとして読取られ、それぞれのMM2Sチャネルによってメモリマップドデータからストリームデータに変換され、ストリームデータとして送出される。一態様では、MM2Sチャネル0~5の動作は、バッファ記述子を生成し、MM2Sチャネル0~5によってアクセス可能なバッファ記述子レジスタファイル(図示せず)に記憶することによって制御することができる。例えば、DMAエンジン310は、MM2Sチャネル0~5及びS2MMチャネル0~5を含むDMAチャネルの全てにわたって共有され得る48個のバッファ記述子をサポートすることが可能である。
一態様では、各MM2Sチャネルは、メモリバンクにアクセスするための32ビットストリームインターフェースと128ビットメモリマップドインターフェースとを含む。MM2Sチャネル0~5の各々は、アドレス生成、40テンソルアドレス生成のサポート、データストリームへの0パディングの挿入、及び増分アドレスオフセットバッファ記述子コールを記憶する能力などの機能をサポートする。隣接するメモリタイルのメモリバンクへのアクセスをサポートするために、MM2Sチャネル0~3は、隣接する左及び/又は右のメモリタイル内のロックにアクセスすることが可能である。MM2Sチャネル0~5の各々は、タスクキュー及びタスク完了トークン、タスク反復カウント、並びにデータ圧縮を更にサポートすることができる。
MMインターフェース1110は、調停回路0~15に結合された読取りポートを含み、したがって、メモリバンク0~15のうちの任意の1つ以上から読取りを行うことが可能である。MMインターフェース1110は、MMスイッチ308に更に接続され、それによって、MMスイッチ308に接続された任意のマスタ回路が、MMインターフェース1110と同じメモリタイル204内に配設されたメモリバンク0~15から読取りを行うことを可能にする。MMインターフェース1110を介して、マスタは、メモリバンク0~15を初期化し得る。
図11Cは、メモリタイル204の別の例示的な実装形態を例解する。図11Cの例は、メモリタイル204のための例示的な書込みチャネル(例えば、S2MMチャネル)を例解する。図11Bの例では、メモリタイル204の特定の構成要素は、読取りチャネルの動作をより良く示すために省略されている。
S2MMチャネル0~3は、スイッチング回路機構1116を介して調停回路0~15に接続され、したがって、メモリバンク0~15のうちの任意の1つ以上にデータを書込むことが可能である。同様に、スイッチング回路機構1116を介して、S2MMチャネル0~3は、図11Cの例の左及び右に隣接するメモリタイル内に配設されたメモリバンクのための調停回路0~15に接続される。したがって、S2MMチャネル0~3は、図11Cの例の左及び右に隣接するメモリタイルのメモリバンク0~15のいずれか1つ以上にデータを書込むことが可能である。S2MMチャネル4~5は、同じメモリタイル内のスイッチング回路機構1116を介してメモリバンク0~15のための調停回路に接続されており、同じメモリタイル内のメモリバンク0~15にデータを書込むことしかできない。図11Cに示されるアーキテクチャを使用して、DMAエンジン310は、同じメモリタイル内のメモリバンク0~15にデータを書込み、左及び/又は右に隣接するメモリタイルのメモリバンク0~15にデータを書込むことが可能である。
S2MMチャネル0~5は、S2MMチャネル0~5のそれぞれ1つに結合されたメモリバンクへの書込みを開始することが可能である。書込まれるべきデータは、ストリームスイッチ306を介してデータストリームとして受信され得る。書込まれるべきデータは、それぞれのS2MMチャネルによってストリームデータからメモリマップドデータに変換され、適切なメモリバンクに書込まれる。任意の肯定応答がストリームデータとして送出されてもよい。一態様では、S2MMチャネル0~5の動作は、図11Bに関連して説明されるように、S2MMチャネルによってアクセス可能であるバッファ記述子レジスタファイル(図示せず)中にバッファ記述子を生成し、記憶することによって制御され得る。
一態様では、各S2MMチャネルは、メモリバンク0~15にアクセスするための32ビットストリームインターフェースと128ビットメモリマップドインターフェースとを含む。S2MMチャネル0~5の各々は、アドレス生成、40テンソルアドレス生成のサポート、及び増分アドレスオフセットバッファ記述子コールを記憶する能力などの機能をサポートする。隣接するメモリタイルのメモリバンクへのアクセスをサポートするために、S2MMチャネル0~3は、左及び/又は右に隣接するメモリタイル内のロックにアクセスすることが可能である。MM2Sチャネル0~5の各々は、タスクキュー及びタスク完了トークン、タスク反復カウント、並びにデータ解凍を更にサポートすることができる。一態様では、S2MMチャネル0~5はまた、アウトオブオーダパケット転送をサポートし得る。
図2Bの例と組み合わせて図11A~図11Cの例示的な回路アーキテクチャを参照すると、複合メモリは、1つ以上のメモリタイル204-1、204-2、204-3、204-4、及び/又は204-5から形成され得る。すなわち、図2Bの行内の各メモリタイル204のDMAエンジンは、そのメモリタイル内のRAMと、隣接する左及び/又は隣接する右のメモリタイルのRAMとにアクセスし得るので、例えば、2つ又は3つのメモリタイルから形成されるより大きいメモリが形成され得る。複合メモリは、DPEアレイ102のストリームスイッチを介して特定のDPE202によってアクセスされてもよい。
メモリタイルが同じ行に整列されず、同じ列に整列される例示的な実装形態では、左及び右に隣接するメモリタイルのRAMにアクセスすることに関連して本明細書で説明するDMAエンジン機能は、上及び下に隣接するメモリタイルのために実装され得ることを理解されたい。すなわち、DMAエンジンは、行ではなく列に複合メモリを形成することができる。
図12A及び図12Bは、複数のアクセラレータのために物理メモリを分離するための例示的な回路アーキテクチャを例解する。IC100は、2つ以上の異なるアクセラレータを同時に含むことが可能である。各アクセラレータは、本明細書で説明される種々のシステムのうちの1つ以上において実装され得る。例えば、アクセラレータは、DPEアレイ102の1つ以上のタイルとして、PL104内に実装された回路として、ハードワイヤード回路ブロック112などとして、実装されてもよい。アクセラレータは、例えば、ビデオ復号、誤り訂正、暗号化/復号などの機能を実行することができる。IC100に実装されるようなアーキテクチャ1200は、IC100内で同時に動作するアクセラレータのための分離を提供することが可能である。アーキテクチャ1200は、第1のアクセラレータが、IC100内で第1のアクセラレータと同時に実行される第2の異なるアクセラレータに割り振られたメモリにアクセスすることを防止することが可能である。
図12Aの例では、アーキテクチャ1200は、アクセラレータ1204及びアクセラレータ1206を含む。アクセラレータ1204は、IC100内の、1つ以上のDPEタイル202及び/又は0、1つ以上のメモリタイル204を用いて、DPEアレイ102内に、PL104内に、又は強化された回路ブロック112(例えば、ASIC)として、実装されてもよい。同様に、アクセラレータ1206は、IC100内の、1つ以上のDPEタイル202及び/又は0、1つ以上のメモリタイル204を用いて、DPEアレイ102内に、PL104内に、又は強化された回路ブロック112(例えば、ASIC)として、実装されてもよい。
アクセラレータ1204は、IC100内のアクセラレータ1206内で同時に動作している。2つのアクセラレータが同時に動作するものとして示されているが、他の例示的な実装形態では、3つ以上のアクセラレータがIC100内で同時に動作してもよいことを理解されたい。アクセラレータ1204は、物理メモリ保護(physical memory protection、PMP)回路1208に結合される。アクセラレータ1206は、PMP1210に結合される。図12Aの例では、PMP回路1208及び1210の各々は、NoC108に接続される。NoC108は、任意選択のメモリ保護回路(memory protection circuit、MPC)1212に接続される。
一態様では、メモリ1214は、外部メモリ、例えば、DDR又はIC100の外部の他のRAMであり得る。別の例では、メモリ1214は、IC100の外部にあるか又はIC100の一部として実装される高帯域幅メモリ(High Bandwidth Memory、HBM)であってもよい。IC100に含まれるとき、メモリ1214は、アクセラレータ1204、1206と同じダイ又は異なるIC100のダイ上に実装され得る。IC100は、メモリコントローラ(図示せず)を用いてメモリ1214にアクセスしてもよい。別の態様では、メモリ1214は、IC100の内部メモリであり得る。いずれにしても、メモリ1214は、アクセラレータ1204に割り振られたメモリ領域1216と、アクセラレータ1206に割り振られたメモリ領域1218とを含む。
アクセラレータ1204及び1206は、2つのアクセラレータが互いに独立して動作し、データを共有しないという点で、IC100内で分離され得るが、アクセラレータ1204及び1206がメモリ1214にアクセスする場合、分離を維持することはより困難になる。アクセラレータ1204がメモリ領域1218にアクセスすることを許可されるか、又はアクセラレータ1206がメモリ領域1216にアクセスすることを許可される場合、アクセラレータ1204、1206の一方又は両方に障害が発生する可能性がある。障害はまた、IC100のセキュリティ及び動作性を全体として危うくする可能性がある。
いくつかの実装形態では、メモリ保護は、集中型手法を使用して実装される。集中型手法では、MPCはトランザクションの宛先において実装される。例えば、MPCは、外部メモリにアクセスするメモリコントローラにおいて若しくはその中で、又は内部のときにアクセスされているメモリにおいて実装され得る。MPCは、許可されないメモリに向けられた読取りトランザクション及び/又は書込みトランザクションを破棄する。集中型の例では、PMP回路1208、1210は含まれず、メモリ保護は、トランザクションの宛先(例えば、メモリ)に配設されたMPCを介してのみ実装される。
例解の目的で、アクセラレータ1204からのトランザクションは、アクセラレータ1204に割り振られたメモリの領域、例えばメモリ領域1216にアクセスすることのみが許可される。同様に、アクセラレータ1206からのトランザクションは、アクセラレータ1206に割り振られたメモリの領域、例えばメモリ領域1216にアクセスすることのみが許可される。MPC1212は、ターゲットメモリ領域に対する適切な識別子を有するトランザクションを通過させることのみによって、これらの限定を実施することが可能である。
例えば、各マスタは、メモリ1214へのトランザクションを開始するとき、トランザクション内にセキュアマスタ識別子(secure master identifier、SMID)を含めることが可能である。SMIDは、トランザクションを発出するマスタを一意に識別する。図12Aの例では、アクセラレータ1204及び1206の各々がマスタである。アクセラレータ1204は、第1の一意のSMIDを割り当てられてもよく、アクセラレータ1206は、第2の一意のSMID(例えば、第1の一意のSMIDとは異なる)を割り当てられてもよい。アクセラレータ1204又は1206からの各トランザクションは、マスタのSMID、実行される動作(読取り又は書込み)、及びアクセスされるメモリアドレスを含む。いくつかの態様では、各アクセラレータは、複数のSMIDを割り当てられ得る。更に、所与のアクセラレータに割り当てられたSMIDは、任意の他のアクセラレータと共有されず又は共通ではない。
MPC1212は、それに含まれるメモリにデータ構造を記憶することが可能である。データ構造は、各マスタ(SMID)がアクセスすることを許可されるメモリ1214のSMID及びメモリ範囲のリストを指定するテーブルであり得る。MPC1212は、トランザクションを受信し、そこからSMIDを抽出し、そこに記憶されたテーブル内で一致するSMIDを見つけることが可能である。MPC1212は更に、トランザクションのアドレスをテーブル内の許容アドレスの範囲と比較して、トランザクションを発出したマスタがトランザクション内で指定されたアドレスにアクセスすることを許可されることを確実にする。
マスタがトランザクション内で指定されたアドレスにアクセスすることを許可されていると決定したことに応答して、MPC1212はトランザクションを許可する。マスタがトランザクション内で指定されたアドレスにアクセスすることを許可されていないと決定したことに応答して、MPC1212はトランザクションを破棄する。上述したように、集中物理メモリ保護の場合、MPC1212が使用され、PMP回路1208及び1210は省略される。
PMP回路なしでMPC1212などの回路を単独で使用して実装される集中メモリ保護は、いくつかの異なる問題を抱えている。1つの問題は、MPC1212内のテーブルに記憶され得るエントリの数である。テーブルはサイズが限定されているが、メモリ1214へのアクセスが許可されたIC100内の各マスタ(及び/又はマスタのSMID)を収容しなければならない。しばしば、MPC1212内でそのようなテーブルを実装するために利用可能なメモリの量は限定され、それによって、テーブルに含まれ得るエントリの数も限定される。
別の問題は、トランザクションがMPC1212によって拒否されたときに、トランザクションが既にIC100を通る種々の経路を横断しており、帯域幅を消費していることである。図12Aの例では、トランザクションは既にNoC108を横断している。アクセラレータが「悪いアクタ」である場合、アクセラレータは、MPC1212によって拒否されるトランザクションを意図的に発行し、それによって、NoC108を無効なトランザクションでフラッディングすることができる。これは、1つのアクセラレータが、さもなければ異なるアクセラレータに利用可能であるNoC108などのリソース上の帯域幅を消費することによって、別のアクセラレータ及び/又はIC100の性能を低下させ得ることを意味する。
本開示内で説明される本発明の構成によれば、PMP回路1208、1210などの1つ以上のPMP回路が含まれ得る。PMP回路1208、1210は、トランザクションの宛先ではなくトランザクションのソースの近くに分散され実装されてもよい。例えば、PMP回路1208、1210が、それらのそれぞれのトランザクションソースの所定の配線距離内でIC100内に実装され得るという点で、PMP回路1208、1210は、トランザクションのソース(例えば、それぞれアクセラレータ1204、1206)に対してローカルである。PMP回路1208、1210は、トランザクションがIC100の信号パス上で帯域幅を消費する前に、特定の状況下でトランザクションを破棄することが可能である。図12Aの例を参照すると、PMP回路1208は、アクセラレータ1204からの無効なトランザクションを、そのようなトランザクションがNoC108に入る又は横断する前に破棄することが可能である。同様に、PMP1210は、アクセラレータ1206からの無効なトランザクションを、そのようなトランザクションがNoC108に入る前に破棄することが可能である。
例示的な実装形態では、PMP回路は、SoCインターフェース206のインターフェースタイル208内に実装され得る。より具体的には、インターフェースタイル208の各DMAエンジン712は、PMP回路を含むことができる。インターフェースタイル208にPMP回路を含めることによって、DPEアレイ102から発出される無効なトランザクションをソースで停止することができる。更に、分散型PMP回路は、並列に同時に動作することが可能である。
アクセラレータ1204及び1206がDPEアレイ102に実装される例示的な実装形態では、SMIDは複数のビットから形成されてもよい。一態様では、SMIDの最上位ビット(most significant bit、MSB)は、DPE GCSレジスタ738から取得され得る(例えば、本明細書で説明するセキュリティビット)。各SMIDは8ビットであってもよく、DPE GCSレジスタ738はSMIDの4個のMSBを提供してもよい。DPEアレイ102内に実装された任意のアクセラレータは、DPEアレイ102内に実装された任意の他のアクセラレータとのSMIDのMSBとして共通のビットを有する。最下位ビット、例えば、4個のLSBは、トランザクションのためにDMAエンジン712によって受信されたバッファ記述子から取得され得る。したがって、DPEアレイ102から発出される各トランザクションのために、DMAエンジン712は、DPE GCSレジスタ738からの4個のMSBと、トランザクションのためにバッファ記述子から得られた4個のLSBとを連結することによってSMIDを生成することが可能である。
各PMP回路は、許可されるSMIDを指定するデータ構造と、指定されたSMIDを有するトランザクションがアクセスすることを許可されるメモリ1214のアドレスの対応する範囲と、を記憶するように構成されたメモリを含むことができる。例示的な一実装形態では、各PMP回路は、関連するSMIDを有するトランザクションによってアクセスされ得るメモリ1214内に、許容可能なSMID及び関連するアドレス又はアドレスの範囲のテーブルを記憶する。
例えば、PMP回路1208は、アクセラレータ1204によって使用されるSMIDと、アクセラレータ1204に割り振られるメモリ1214内のアドレス又はアドレスの範囲とを含むテーブルを含み得る。同様に、PMP回路1210は、アクセラレータ1206によって使用されるSMIDと、アクセラレータ1206に割り振られるメモリ1214内のアドレス又はアドレスの範囲とを含むテーブルを含み得る。トランザクション発出ポイント又はその近くの複数の異なる回路の間で保護及びテーブルを分散させることによって、各それぞれのPMP回路1208、1210に含まれるテーブルは、集中保護手法を使用して宛先において(例えば、MPC1212において)実装されるときよりも小さくなり得る。例えば、アクセラレータがDPEアレイ102の特定のタイルに割り振られ、特定のインターフェースタイル208に割り当てられると、PMP回路1208に記憶されたテーブルは、アクセラレータ1204のデータを含むだけでよく、アクセラレータ1206に対応するデータは含む必要はない。同様に、PMP回路1210に記憶されたテーブルは、アクセラレータ1206のデータを含むだけでよく、アクセラレータ1204に対応するデータを含む必要はない。
一例として、各PMP回路に記憶されるテーブルは、複数のエントリを含むことができる。各エントリは、SMIDと、範囲の開始物理アドレス(range_start)と、範囲内のバイト数(range_length)と、範囲が読取り及び/又は書込みされ得るかどうか(access_types)とを含み得る。
別の例示的な実装形態では、各PMP回路によって記憶されるデータ構造は、メモリ1214をカバーするビットマップであり得る。例えば、ビットマップ中の各ビットは、メモリ1214の特定のページを表し、そのページがPMP回路によって処理されるアクセラレータによってアクセス可能であるかどうかを示すことができる。メモリ1214のアドレス範囲を示すのではなく、ビットマップを使用して、所与のDPEタイル202又はアクセラレータ(SMIDに基づく)がメモリ1214のどのページにアクセス可能であるかをチェックすることが可能である。
PMP回路のデータ構造(例えば、テーブル又はビットマップ)は、仮想化がホストコンピュータで使用される場合、ホストコンピュータのオペレーティングシステム又はゲストオペレーティングシステムによって管理され得る。有効な物理アドレス範囲は、MMスイッチを介してオペレーティングシステム又はゲストオペレーティングシステムによって効率的にプログラムすることができる。例えば、MMスイッチを使用して、PMP回路のデータ構造は、異なるアクセラレータが経時的にIC100のシステムにおいて実装されるにつれて更新され得る。
各DMAエンジン712はPMP回路を含み得るので、PMP回路は、仮想アドレスではなくメモリ1214の物理アドレスを利用する。メモリ1214の物理アドレスは、例えば、各それぞれのアクセラレータ1204、1206によって知られ得る。トランザクションの有効性をチェックする目的で仮想アドレスの代わりに物理アドレスを使用することによって、アドレス変換を実行する必要がない。説明されたアーキテクチャの分散型の性質は、データ構造サイズ限定に起因してIC100上で同時に実行され得るアクセラレータの数に関する限定を効果的に除去する。分散型アーキテクチャはまた、アクセラレータごとに増加した数の物理アドレス範囲を提供することによって、アクセラレータにより大きな柔軟性を提供する。
アクセラレータが、説明したSMID生成技法を使用してDPEアレイ102内に実装される場合、PMP回路は、DPEタイル202及び/又はメモリタイル204がアクセスすることが可能であるメモリ1214の特定のアドレスを調節することが可能である。各PMP回路は、所与のトランザクションについてのSMID及びターゲットメモリアドレスを、そこに記憶された許容可能なSMID及び許容可能なメモリアドレスのリストと比較することができる。トランザクションのSMIDが許容可能なSMIDのリスト上にあり、トランザクションによってアクセスされるメモリアドレスがトランザクションのSMIDに対して許可されていると決定したことに応答して、PMP回路はトランザクションが通過することを許可する。トランザクションは有効であると決定される。トランザクションのSMIDが許容可能なSMIDと一致しないか、又はトランザクションによってアクセスされるアドレスが許可されているアドレスと一致しない場合、PMP回路はトランザクションを無効として破棄する。
2つのアクセラレータが同時に動作するものとして示されているが、他の例では、3つ以上のアクセラレータがIC100内で同時に動作してもよいことを理解されたい。各アクセラレータにPMP回路を割り振ることができる。一方、各PMP回路は、1つ以上のアクセラレータからのトランザクションを処理することができる。
図12Bは、PMP回路1208及び/又は1210などのPMP回路の例示的な実装形態を例解する。図12Bの例では、PMP回路1208、1210はチェック回路1220を含む。図12Bの例では、チェック回路1220は、DMAエンジンによって受信されたバッファ記述子からデータを受信する。図示されるように、チェック回路1220は、SMID、チェックされるトランザクションの開始物理アドレス、DMA転送の長さ(例えば、トランザクションによって転送されるデータの量)、及びトランザクションが読取りであるか書込みであるかを受信する。
チェック回路は、データ構造1222を記憶するメモリに結合され得る。一態様では、データ構造1222は、図12Aに関連して説明されるようなテーブルである。チェック回路1220は、SMIDを使用して配設されたエントリ、要求されているアクセスのタイプ(例えば、読取り又は書込み)、アクセスのための開始物理アドレス、及びトランザクションの長さに基づいて、データ構造1222にインデックスを付け、メモリ1214を含むDMA転送の各バイトが許可されるかどうかを計算することが可能である。メモリ1214との間で転送される各バイトは、SMIDを使用して配設され、実行されるトランザクションのタイプ(読取り又は書込み)に対して許可されたエントリ内の許可範囲内になければならない。所与のトランザクションが有効である、例えば、各バイトが有効であるという決定に応答して、チェック回路1220は、有効なトランザクションを示す有効アドレス信号(例えば、論理ハイ)をアサートすることが可能である。トランザクションは、有効アドレスを示す有効アドレス信号に応答して有効として通過することが許可される。所与のトランザクションが無効であるという決定に応答して、チェック回路1220は、トランザクションが無効であることを示す有効アドレス信号をデアサートすることが可能である。トランザクションは破棄されてもよい。
データ構造1222が図12Aに関連して説明されるようなビットマップである場合、データ構造1222は、読取りトランザクション及び書込みトランザクションに対応する別個のビットマップを含むことができる。第1のビットマップは書込みトランザクションに使用されてもよく、第2のビットマップは読取りトランザクションに使用されてもよい。一態様では、各ビットマップは、チェック回路1220に結合された異なる内部メモリ、例えば、SRAMに記憶され得る。
チェック回路1220は、各トランザクションが、DMA転送に必要なメモリ1214からの各ページにアクセスすることを許可されるかどうかを決定することが可能である。更に、チェック回路1220は、DMA転送のために必要とされる各ページが、指定されたトランザクションタイプのためにアクセスされ得ることを決定する。チェック回路1220は、DMA転送に含まれるメモリ1214の各ページを決定し、アプリケーション(発出元マスタ)が所与のトランザクションタイプでそのようなページにアクセスすることを許可されていることを確認することが可能である。所与のトランザクションが有効であるという決定に応答して、チェック回路1220は、有効なトランザクションを示す有効アドレス信号をアサートすることが可能である。トランザクションは、有効アドレスを示す有効アドレス信号に応答して有効として通過することが許可される。所与のトランザクションが無効であるという決定に応答して、チェック回路1220は、トランザクションが無効であることを示す有効アドレス信号をデアサートすることが可能である。トランザクションは破棄されてもよい。
アクセラレータ1204、1206の例示的な実装形態は、DPEアレイ102に関連して説明されるが、他の例示的な実装形態では、アクセラレータは、IC100の異なるシステム及び/又はシステムの組み合わせで実装されてもよい。したがって、PMP回路は、トランザクションソースに対してローカルなIC100の種々の場所において分散された様式で実装され得る。例えば、PMP回路は、NoC108のNMU402において実装され得る。NMU402は、図4に関連して説明される。各NMU402は、1つのPMP回路を含んでもよい。NMU402にPMP回路を含めることによって、宛先ポイントではなく発出ポイントにローカルなトランザクションの有効性をチェックすることも可能になり、それによって、アクセラレータがIC100(例えば、NoC108)の経路を無効なトランザクションでフラッディングする状況が回避される。そのようなトランザクションは、トランザクションがNoC108を横断する前に破棄され得る。そのようなPMP回路実装形態は、DPEアレイ102、PL104において、及び/又はハードワイヤード回路ブロック112として実装されたアクセラレータと組み合わせて使用され得る。
図12の例では、MPC1212が任意選択で含まれ得る。例えば、PMP回路がIC100内の各マスタのために実装され得ない場合、MPC1212は、メモリ1214を保護するために含まれ得る。各アクセラレータがPMP回路に割り振られるように十分なPMP回路がIC100内に実装される他の例示的な実装形態では、MPC1212は省略され得る。
図12に関連して説明されるようなPMP回路は、本明細書で説明する種々の回路のいずれかの中に、トランザクションの発出ポイント又はその近くに組み込まれて、そこを通過するそのようなトランザクションの有効性をチェックすることができる。このような回路は、例えば、インターフェース回路であろうとDMAエンジンであろうと、PMP回路から出力される有効アドレスインジケータ信号の状態に基づいて、受信されたトランザクションを渡す又はドロップするように構成されてもよい。
PMP回路を含むことは、メモリ1214又はRAMなどのメモリがアクセラレータによって不適切にアクセスされることから保護するだけでなく、IC100内の他のタイプのメモリを不適切なアクセスから保護する。例えば、IC100の利用可能なメモリは、内部メモリ(RAM)、構成レジスタ及び/又は制御レジスタ、PS106のオンチップメモリ、PMC110のオンチップメモリ、及び/又は外部メモリを含み得る。上述のメモリの各々は、IC100のための統一アドレス空間に準拠する。PMP回路はまた、説明されるようにトランザクションの有効性をチェックすることによって、アクセラレータが、RAM又はアプリケーションメモリ以外の説明した異なるタイプのメモリのいずれかに不適切にアクセスすることを防止し、それによってIC100を更に保護する。
図13A及び図13Bは、仮想アドレス変換を実行するための例示的な回路アーキテクチャを例解する。図13Aの例では、アーキテクチャ1300は、アクセラレータ1304及びアクセラレータ1306を含む。アクセラレータ1304及び1306は、IC100において同時に動作してもよい。アクセラレータ1304、1306は、アクセラレータ1304、1306が本明細書で説明されるIC100の種々のシステムのいずれかにおいて実装され得るという点で、主に図12に関連して説明されるように実装され得る。図13の例では、アクセラレータ1304、1306は、各々が物理アドレスではなく仮想アドレスを利用するという点で仮想アクセラレータである。
アクセラレータ1304は、メモリ管理ユニット(memory management unit、MMU)1308に結合される。アクセラレータ1306は、MMU1310に結合される。図13Aの例では、MMU1308、1310の各々は、NoC108に接続される。NoC108は、任意選択のMPC1212に接続される。メモリ1214は、アクセラレータ1304に割り振られたメモリ領域1316と、アクセラレータ1306に割り振られたメモリ領域1318とを含む。
図13Aは、集中型MMUを使用するのではなく、MMU機能が複数の異なるMMU回路に分散又は非集中化される例示的な実装形態を例解する。従来のシステムでは、単一の集中型MMUがプロセッサシステムの一部として実装されて、IC全体に役立つ。MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求(アドレス変換要求)に補助を提供する。図13Aの例では、アクセラレータ1304及び1306の各々がメモリ1214のそれぞれの割り振られた領域1316、1318にアクセスするために、各アプリケーションは、まず、仮想アドレスの物理アドレスへの変換を要求しなければならない。IC内のアクセラレータの数が増加するにつれて、集中型MMUへのアドレス変換要求の数も増加する。したがって、多くの異なる回路がアドレス変換機能を必要とする場合、集中型MMUにアクセスすることは、各トランザクションにレイテンシを追加し、IC内のデータスループットを限定するボトルネックを引き起こす可能性がある。
図13Aの例では、MMUは、SoCインターフェース206のインターフェースタイル208に追加され得る。インターフェースタイル208内の分散されたMMUは、同時にかつ並列に動作することが可能である。IC100内に複数の分散されたMMUを含むことによって、いくつかの異なる利点が達成され得る。一態様では、集中型MMUにアクセスするレイテンシ及びデータスループットを限定するボトルネックが回避され得る。MMUが実装される各インターフェースタイル208は、仮想アドレスを物理アドレスに変換することが可能である。
別の態様では、集中型MMUは、IC100内に実装された全てのアクセラレータによってアクセスされるデータセット全体をカバーしなければならない。その結果、集中型MMUは、全てのアクセラレータについてアドレス変換を実行するのに十分な大きさのデータ構造を記憶するためにサイズがより大きくなる。非集中型MMUは、各MMUが仮想アドレスの限られたセットを変換するだけでよいので、集中型MMU実装に比べてサイズが小さくてよい。例えば、各MMUは、限られた数のアクセラレータ(例えば、IC100中のアクセラレータのサブセット又は単一のアクセラレータ)について仮想アドレスを変換し得る。別の例では、各MMUは、特定のMMUを使用するアクセラレータ又はアクセラレータのサブセットに補助を提供するアドレス変換に必要なデータセットのみを含み得る。例えば、インターフェースタイル208内に配設されたMMUは、中にMMUが配設された特定のインターフェースタイル208を使用するDPEアレイ102のアクセラレータ又はアクセラレータのサブセットに補助を提供するアドレス変換に必要なデータセットを含むだけでよい。
別の態様では、特定のアクセラレータに割り振られた非集中型MMUを使用することは、各MMUが単一のページサイズ(例えば、それぞれのMMUに割り振られたアクセラレータによってサポートされるページサイズ)を使用することを可能にし、それによって、MMUの複雑さ及びサイズを低減する。集中型MMUは、CPUによって要求される4KB、16KBなどの異なるページサイズをサポートしなければならない。非集中型MMUがより大きなページサイズをサポートする場合、MMUに記憶されるアドレス変換データ構造内のより少ないエントリが必要とされる。より小さいページサイズもサポートしなければならないMMUと比較して、同じ量のメモリをカバーするのに必要なエントリはより少ない。この特徴は、分散されたMMUのサイズを更に低減する。
図13の例では、MMU1308、1310は、MMU1308、1310がそれらのそれぞれのトランザクションソースの所定のワイヤ距離内でIC100内に実装され得るという点で、それぞれアクセラレータ1304、1306に対してローカルであり得る。加えて、アドレス変換はトランザクション発出ポイント又はその付近で実行され得るので、NoC108で使用されるアドレスは検証された物理アドレスである。更に、アドレス変換を必要とするアクセラレータと、PS106内に実装され得る集中型MMUとの間のデータパスを作成するために必要とされる追加の回路を、IC100から省略することができる。
図13Bは、MMU1308などの非集中型MMUの例示的な実装形態を例解する。図13Bの例示的なアーキテクチャはまた、IC100内のMMU1310又は別の非集中型MMUを実装するために使用され得る。図13Bの例では、MMU1308は、変換回路1320とフィル回路1322とを含む。図13Bの例では、変換回路1320は、DMAエンジン712などのDMAエンジンによって受信されたバッファ記述子からデータを受信する。図示されるように、変換回路1320は、トランザクションの開始仮想アドレス、DMA転送の長さ(例えば、トランザクションによって転送されるデータの量)、及びトランザクションが読取りであるか書込みであるかを受信する。データの受信に応答して、変換回路1320は、受信した仮想アドレスの物理アドレス変換を求める要求をフィル回路1322にサブミットする。
フィル回路1322は、変換を実行するために使用され得るルックアップテーブルなどの連想データ構造を含み得る。フィル回路1322は、変換回路1320から受信した要求に一致するエントリを求めて、フィル回路1322に含まれるデータ構造を検索する。例えば、フィル回路1322は、開始仮想アドレスに対応する仮想アドレスを求めて、フィル回路1322内のデータ構造を検索することができる。受信した仮想アドレスについて一致するエントリ(例えば、ヒット)を決定することに応答して、フィル回路1322は、受信した仮想アドレスにマッピングされた物理アドレスを変換回路1320に戻す。受信した仮想アドレスに一致するエントリをデータ構造が含まない(例えば、ミス)と決定したことに応答して、フィル回路1322は、フィル回路1322に含まれるデータ構造を更新するために、メモリ1214内のページテーブルから更なるデータを要求することが可能である。例えば、フィル回路1322は、メモリ1214からデータをフェッチしてフィル回路1322に含まれるデータ構造をリフレッシュするために物理アドレスを送信することができる。フィル回路1322は、受信した開始仮想アドレスに一致するエントリを求めて更新されたデータを検索し続け、更に、受信した仮想アドレスとの一致を見つけるためにメモリ1214からデータをフェッチし続けることが可能である。
変換回路1320は、仮想アドレスから変換された物理アドレスをフィル回路1322から受信することに応答して、物理アドレスを出力することが可能である。変換回路1320は、出力されている物理アドレスが有効(例えば、論理ハイ)であることを示す有効アドレス信号をアサートすることが更に可能である。
1つ以上の例示的な実装形態では、フィル回路1322は、データがページテーブルから取得される回数を限定し得る。ページテーブルからの列挙された数のデータ取り出しの後のミスに応答して、フィル回路1322は無効な物理アドレスを返すことができる。それに応答して、変換回路1320は、そこから出力されているアドレスが有効でないことを示す信号を出力することができる(例えば、有効アドレスインジケータをデアサートする、又は論理ローを出力する)。
図13の例では、メモリ1214にアクセスするために受信された各トランザクションが、メモリの意図された領域にアクセスすることを許可されることをチェックするために、MPC1212が依然として含まれ得る。別の例示的な実装形態では、非集中型MMUは、NoC108に含まれ得る。例えば、図4に関連して説明されるようなMMU402は、MMUを含むように実装され得る。各NMU402は、1つのMMUを含むことができる。MMU402にMMUを含めることはまた、IC100内のMMUの非集中型実装をサポートする。更に、MMUがNoC108の境界に含まれる実装形態では、MMUは、ハードワイヤード回路ブロックとして実装される、及び/又はPL104内に実装されるアクセラレータのために使用され得る。図13に関連して説明されるような分散されたMMUは、アドレス変換を必要とし得る、本明細書で説明される種々の回路のいずれかの中に組み込まれ得る。そのような回路は、例えば、インターフェース回路であろうとDMAエンジンであろうと、本明細書で説明されるような分散されたMMUを使用するように適合され得る。
図14A~図14Cは、仮想化されたアクセラレータにセキュアなレジスタアクセスを提供するための例示的な回路アーキテクチャを例解する。図14Aの例は、インターフェースタイル208を含むSoCインターフェース206を有するDPEアレイ102の実装形態を例解する。DPEアレイ102はまた、DPEタイル202及び/又はメモリタイル204の任意の組み合わせを含み得るタイル1404を含む。SoCインターフェース206は、NPI410を含むNoC108のNoCインターフェース726に結合される。
図14Aの例では、各インターフェースタイル208は、セキュアアクセス回路1402を含む。一態様では、セキュアアクセス回路1402は、DPE GCSレジスタ738内に配設され得るセキュアアクセスレジスタに書込まれる値に基づいてイネーブルにされ得る。値は、セキュリティビットのうちの1つ以上によって全体的に又は部分的に指定され得る。セキュアアクセスレジスタに記憶された値は、セキュアアクセス回路1402がDPEアレイ102のセキュアなトランザクションを実装することをイネーブルにされているか否かを決定する。例えば、イネーブルにされると、各セキュアアクセス回路1402は、着信メモリマップド書込みトランザクションが特定のセキュリティ基準を満たすかどうかを決定することが可能である。イネーブルされていない場合、セキュアアクセス回路1402は、インターフェースタイル208に入るメモリマップド書込みトランザクションを基準についてチェックしない。セキュアアクセスレジスタに書込まれた値はまた、NPI410内に配設された書込みイネーブルレジスタ1406への書込みを可能にし得る。
例示的な実装形態では、タイル1404の各列は、IC100にハードワイヤードされた一意の列IDを有する。例えば、一意の列IDは、eヒューズを使用して、又は回路ノードをVCC若しくは接地に結合することによって指定され得る。タイル1404の各列の列IDは、IC100内のシリコンに実装されているので、列IDを偽装又は変更することはできない。セキュアアクセスレジスタに書込まれた値に基づいてセキュアなトランザクションがイネーブルにされる場合、書込みイネーブルレジスタ1406は、PCIeバス、PS106、又はPMC110などの通信バスを介して、ホストコンピュータ内で実行される特権ソフトウェアによって、タイル1404の1列以上の列へのセキュアアクセスを容易にするデータが書込まれ得る。
セキュアアクセス回路1402は、書込みイネーブルレジスタ1406に書込まれたデータとハードワイヤード列IDとの比較を実行することが可能である。データがタイル1404の列の列IDと一致すると決定したことに応答して、列のセキュアアクセス回路1402は、メモリマップドトランザクションがその列内のタイル1404に渡されることを許可する。データが列IDと一致しないと決定したことに応答して、セキュアアクセス回路1402は、メモリマップドトランザクションが列内のタイル1404に渡されることを許可しない。
一態様では、セキュアアクセス回路1402は、インターフェースタイル208のブリッジ回路718内に実装され得る。別の態様では、セキュアアクセス回路1402は、それぞれのインターフェースタイル208内のNoC108とブリッジ回路718との間のデータパス内の別個の又は独立した回路ブロックとして実装され得る。
例解の目的で、第1のアクセラレータが列1、2、及び3内のDPEアレイ102のタイル1404を使用して実装され、第2のアクセラレータが列4及び5内のタイル1404を使用して実装される例を考える。各アクセラレータは、ホストコンピュータ又はPS106において実行される対応するプログラムコードによって制御され得る。例えば、第1のアクセラレータは、第1のプログラムコード(例えば、第1のアプリケーション)によって制御されてもよく、第2のアクセラレータは、第2のプログラムコード(例えば、第2のアプリケーション)によって制御されてもよい。セキュアなトランザクションがグローバルベースでDPEアレイ102全体に対してイネーブルにされる場合、第1のアプリケーションと第2のアプリケーションの両方が、DPEアレイ102内のMMスイッチに取り付けられた制御レジスタ又はメモリに書込みを行ってもよい。これは、第1のアプリケーションが第2のアクセラレータに干渉する可能性があり、第2のアプリケーションが第1のアクセラレータに干渉する可能性があることを意味する。そのような実装形態は、例えば、セキュアアクセス回路1402を省略する。更に、書込みイネーブルレジスタ1406は、列に対応するデータの複数のビットを記憶するように構成されるのではなく、単一の書込みイネーブルビットのみを記憶し得る。そのような実装形態では、悪意のあるアプリケーションが、DPEアレイ102内の別のアクセラレータのレジスタ及び/又はメモリに書込む場合があり、それによってセキュリティ上の懸念が生じる。
図14Aの例では、セキュアなトランザクションは、DPEアレイ102について列ごとにイネーブルにされ、チェックされてもよい。これは、PS106などのプロセッサ及び/又はホストコンピュータ内で実行されるアプリケーションが、アプリケーションによって管理又は制御されないアクセラレータを実装するタイル1404にデータを書込むことを防止されることを意味する。プロセッサ内で実行されるアプリケーションは、DPEアレイ102のMMスイッチを介して、そのアプリケーションに属するタイル1404(例えば、アクセラレータ)のレジスタ及び/又はメモリに書込みを行うだけでよい。アプリケーションは、アクセラレータが列に従ってDPEアレイ102内のタイル1404に分割され、割り当てられている限り、DPEアレイ102のMMスイッチを介して、異なるアプリケーションに属するタイル1404のレジスタ及び/又はメモリにアクセスすることができない。すなわち、タイル1404の列は、一度に1つのアクセラレータのみを実装するために使用され得る。
図14Bは、図14Aのセキュアアクセス回路1402の例示的な実装形態を例解する。図14Bの例では、セキュアアクセス回路1402は比較回路1408を含む。説明されるように、ホストコンピュータ、PS106、及び/又はPMC110で実行される特権ソフトウェアは、NPI410内の書込みイネーブルレジスタ1406に書込みイネーブル列IDを書込む。DPEアレイ102に向けられた書込みトランザクションの場合、NPI410は、書込みイネーブルレジスタ1406からの書込みイネーブル列IDをセキュアアクセス回路1402に提供する。書込みイネーブル列IDは、トランザクションとともに、又はトランザクションの一部として提供され得る。比較回路1408は、NPI410からの書込みイネーブル列IDを、その列についてIC100にハードワイヤードされた列IDと比較する。書込みイネーブル列IDが列IDと一致すると決定したことに応答して、比較回路1408は、書込みイネーブル信号(例えば、論理ハイ)をアサートする。書込みイネーブル信号は、メモリマップド書込みトランザクションからのデータがタイル1404の列の適切なメモリ及び/又は制御レジスタに書込まれ得るように、上記の列内のタイル1404の種々のメモリ及び/又は制御レジスタに提供される。書込みイネーブル列IDが列IDと一致しないと決定したことに応答して、比較回路1408は、書込みイネーブル信号をアサートしない(例えば、論理ローを生成する)。したがって、タイルの列へのメモリマップド書込みトランザクションは破棄される。
書込みイネーブルレジスタ1406に記憶された値は、インターフェースタイル208の各々のセキュアアクセス回路1402に提供され得るので、列1~5のうちの1つのタイル1404のみが一度に書込まれ得る。タイル1404の異なる列に書込むために、異なる列に対する異なる書込みイネーブル列IDが書込みイネーブルレジスタ1406に書込まれなければならない。したがって、図14Bの例では、タイル1404の1つの列のみが一度に構成され得る。別の態様では、トランザクションは、2つ以上又は全ての列に書込むことを試みるのではなく、適切な列にルーティングされてもよい。依然として、その列内のセキュアアクセス回路1402は、説明されるチェックを実行して、書込み動作を試みるエンティティがそのようにすることを認可又は許可されることを確実にすることが可能である。
図14Cは、図14Aのセキュアアクセス回路1402の別の例示的な実装形態を例解する。図14Cの例では、セキュアアクセス回路1402は、比較回路1408及びマスク適用回路1410を含む。図14Cの例では、ホストコンピュータ、PS106、及び/又はPMC110内で実行される特権ソフトウェアが、書込みイネーブル列IDマスク及び書込みイネーブル列ID値をNPI410内の書込みイネーブルレジスタ1406に書込む。DPEアレイ102に向けられた書込みトランザクションの場合、NPI410は、書込みイネーブル列IDマスクをマスク適用回路1410及び書込みイネーブル列ID値比較回路1408に提供する。一態様では、図14Cの例では、書込みイネーブルレジスタ1406は、一方が書込みイネーブル列IDマスクを記憶し、他方が書込みイネーブル列ID値を記憶する2つの別個のレジスタとして実装され得る。
マスク適用回路1410は、書込みイネーブル列IDマスクをハードワイヤード列IDに適用して、出力値を生成する。例示的な一実装形態では、書込みイネーブル列IDマスクは、列の範囲を指定し得る。範囲は、範囲内のタイル1404の最初の列の列IDと、範囲内のタイル1404の最後の列の列IDとを指定することができる。比較回路1408は、マスク適用回路1410からの出力値と書込みイネーブル列ID値とを比較する。
書込みイネーブル列ID値がマスク適用回路1410からの出力値と一致すると決定したことに応答して、比較回路1408は、書込みイネーブル信号(例えば、論理ハイ)をアサートする。書込みイネーブル信号は、メモリマップド書込みトランザクションからのデータがタイル1404の列の適切なメモリ及び/又は制御レジスタに書込まれ得るように、上記の列内のタイル1404の種々のメモリ及び/又は制御レジスタに提供される。書込みイネーブル列ID値がマスク適用1410からの出力値と一致する場合、タイル1404の列は、書込みイネーブル列IDマスクによって指定された列の範囲内にあると決定される。書込みイネーブル列ID値がマスク適用回路1410からの出力値と一致しないと決定したことに応答して、比較回路1408は、書込みイネーブル信号を生成しない(例えば、論理ローを生成する)。したがって、タイルの列へのメモリマップド書込みトランザクションは破棄される。
図14Cの例は、タイル1404の1列以上の列、例えば、列の範囲が同時に書込まれることを可能にする。このアーキテクチャは、書込みイネーブルレジスタ1406に記憶された書込みイネーブル列IDマスク及び書込みイネーブル列ID値に基づいて、タイル1404の1列以上の列、例えば、列の範囲が書込まれることを可能にする。タイル1404の1列以上の列の異なる範囲に書込むために、異なる書込みイネーブル列IDマスク及び/又は書込みイネーブル列ID値が書込みイネーブルレジスタ1406に書込まれなければならない。
図14の例は、DPEアレイ102に関連して説明される。1つ以上の他の例示的な実装形態では、図14に関連して説明した回路アーキテクチャは、アクセラレータの特定の列又は特定の範囲の列のみへの限定又は制限されたアクセスが望まれるグリッド内にアクセラレータが配列される様々な他のアクセラレータアレイのいずれかとともに実装及び/又は使用され得る。
図15は、IC100の1つ以上のDMAエンジンによって実装され得る例示的なパケット処理モードを例解する。図15の例では、DMAエンジン310の例示的な実装形態が例解されている。図15に示される例示的な回路アーキテクチャは、「アウトオブオーダ」パケット処理モード(out-of-order mode、OOOモード)を容易にするために、IC100において実装される他のDMAエンジンに組み込まれ得る。例解の目的で、図15の例示的な回路アーキテクチャはまた、図10のDMAエンジン及び/又はDPEタイル202のDMAエンジン616内で使用されてもよく、又は組み込まれてもよい。
本明細書で説明する1つ以上の例示的な実装形態では、DMAエンジン310は、複数の異なるパケット処理モードのうちの1つを使用して動作するようにプログラムされ得る。パケット処理モードは、「インオーダ」パケット処理モード(in-order mode、IOモード)及びOOOモードを含み得る。図15の例では、DMAエンジン310はデータパス回路機構1502を含む。この例では、データパス回路機構1502は、ストリームーメモリマップド(S2MM)チャネル1504を含む。S2MMチャネル1504は、図11に関連して説明されたS2MMチャネルのうちの1つとして実装され得る。他の例示的な実装形態では、データパス回路機構1502は、DMAエンジンの特定の実装形態に応じて、他のS2MMチャネル、MM2Sチャネル、及び/又はマスタメモリマップドインターフェースを含んでもよい。データパス回路機構1502は、メモリ1510に結合される。メモリ1510は、同じメモリタイル内のRAM312として、又はDMAエンジン310とは異なるメモリタイル内に配設されたRAMとして実装され得る。
この例では、DMAエンジン310はまた、バッファ記述子レジスタファイル1506及びバッファ記述子タスクキュー1508を含む。バッファ記述子レジスタファイル1506は、1つ以上のバッファ記述子を記憶するように構成されたメモリ、例えばバッファとして実装され得る。バッファ記述子タスクキュー1508は、バッファ記述子のリストを記憶するように構成されたメモリ、例えば、バッファとして実装され得る。バッファ記述子レジスタファイル1506内の各バッファ記述子は、読取られるか又は書込まれるデータの長さ、及びデータが書込まれるか又はデータが読取られるアドレスなどの1つ以上のパラメータを含む。したがって、図15及びS2MMチャネル1504のために、各バッファ記述子は、受信されたデータ、例えばパケットがどこに書込まれるべきかを指定する。バッファ記述子タスクキュー1508に記憶されたリストは、バッファ記述子レジスタファイル1506からのバッファ記述子が処理又は実行される順序を指定する。一態様では、IOモードの一部として、バッファ記述子が実行される順序は、バッファ記述子タスクキュー1508に記憶されたリストに基づいて予め決定される。
この例では、タイル1512-1及び1512-2の各々がバス1514に接続されている。バス1514は、図示されたそれぞれのタイル1512のストリーミング相互接続によって実装又は形成され得る。例解の目的で、タイル1512はDPEタイルであってもよい。各タイル1512内のDMAエンジン(例えば、DMAエンジン616)は、DMAエンジン310にデータを送信しているメモリMM2Sチャネルを含むことができる。すなわち、DMAエンジン310は、タイル1512-1及び1512-2の各々からデータを受信している。一例として、タイル1512-1及び1512-2の各々は、メモリ1510に書込まれるべきデータを送信していてもよい。
図15の例では、タイル1512は、データをバス1514に書込む。IOモードでは、データは、タイル1512-1及び1512-2から所定の既知の順序でS2MMチャネル1504に到着する。すなわち、タイル1512-1及び1512-2の各々が所定のスケジュールに従ってデータをバス1514に書込む際に、データは決定論的な様式で到着する。したがって、データは、DMAエンジン310によって予想された既知の所定の順序でS2MMチャネル1504に到着する。例示的な実装形態では、各受信されたパケットは、特定のバッファ記述子に基づいて処理され得る。バッファ記述子が実行される順序は、バッファ記述子タスクキュー1508に記憶された順序付きリストによって決定される。
例示的かつ非限定的な例として、バッファ記述子レジスタファイル1506は、バッファ記述子「BD1」及びバッファ記述子「BD2」を含み得る。BD1は、タイル1512-1から受信したデータを記憶するための命令(例えば、データの長さ又は量及び宛先アドレス)を指定する。BD2は、タイル1512-2からのデータを記憶するための命令を指定する。バッファ記述子タスクキュー1508は、バッファ記述子の順序を指定する。例えば、データがタイル1512から受信される所定の順序が、タイル1512-1からのパケット、続いてタイル1512-2からのパケットである場合、バッファ記述子タスクキュー1508に記憶されるリストは、「BD1、BD2」となる。パケットがタイル1512から受信される所定の順序が、タイル1512-2からのパケット、続いてタイル1512-1からのパケットである場合、バッファ記述子タスクキュー1508に記憶されるリストは、「BD2、BD1」となる。
OOOモードでは、タイル1512からのデータは、任意の又は未知の順序で到着する。OOOモードでは、タイル1512が所定の既知のスケジュールに従ってデータをバス1514上に配置するのではなく、各タイル1512がデータをバス1514上に配置しようと試みることができる。各タイル1512は、例えば、どのタイルが任意の所与の時間にデータをバス1514上に配置することを許可されるかを制御する調停回路を含む。したがって、タイル1512がデータをバス1514上に配置し、そのようなデータがS2MMチャネル1504に到着する特定の順序は、非決定論的である。
本明細書で説明する本発明の構成によれば、OOOモードの一部として、バス1514を介してDMAエンジン310に送信されるタイル1512からのパケットは、ヘッダを含むように生成される。ヘッダは、指定されたフィールドにバッファ記述子識別子を含む。バッファ記述子タスクキュー1508内で指定されたバッファ記述子実行の順序に依存するのではなく、S2MMチャネル1504は、受信パケットのヘッダの指定フィールドからバッファ記述子識別子を抽出することが可能である。S2MMチャネル1504は、バッファ記述子識別子を使用して、バッファ記述子レジスタファイル1506から実行されるバッファ記述子を決定する。例えば、バッファ記述子識別子は、「BD0」又は「BD1」などの特定のバッファ記述子を指定するか、又はバッファ記述子レジスタファイル1506から正しいバッファ記述子を検索するために使用され得るインデックスを指定することができる。次に、S2MMチャネル1504は、パケット自体のヘッダからのバッファ記述子識別子によって指定されたバッファ記述子を実行することによって、受信パケットのペイロードを処理する。パケットを処理するために使用されるバッファ記述子識別子を各パケットのヘッダ内に含めることによって、DMAエンジン310は、非決定論的順序で受信されたパケットを処理することが可能である。
したがって、一態様では、OOOモードで動作しているとき、送信側DMAエンジン内(例えば、タイル1512内)に配設されたデータパス回路機構のメモリマップドーストリームチャネルは、DMAエンジン310に送信されるデータをパケットとしてフォーマットすることが可能である。パケット生成の一部として、メモリマップドーストリームチャネルは、パケットのペイロードとして送信されるデータを含み、パケットを処理する際に使用される特定のバッファ記述子を指定するバッファ記述子識別子を含むようにパケットのヘッダを作成する。参照されたバッファ記述子は、バッファ記述子レジスタファイル1506に記憶されている。
例示的な実装形態では、各異なるS2MMチャネルは、IOモード又はOOOモードで動作するように独立して構成され得る。したがって、DMAエンジン310が複数のS2MMチャネル1504を含む場合、各々は、IOモード又はOOOモードで動作するように独立して構成され得る。一態様では、各S2MMチャネルは、それぞれのS2MMチャネルのためのメモリタイルの制御レジスタに好適な構成データを書込むことによって、特定のパケット処理モードを使用するように構成され得る。構成データは、S2MMチャネルごとに使用する特定のパケット処理モードを指定することができる。別の態様では、パケット処理モード間で切り替える能力は、S2MMチャネルが動作中にIOモードを使用することとOOOモードを使用することとの間で切り替え得るという点で動的であり得る。
例示的な実装形態では、S2MMインターフェース1504は、バッファ記述子タスクキュー1508に記憶されたデータ、又はその欠如に基づいて、IOモードとOOOモードとの間で切り替えることができる。例えば、バッファ記述子タスクキュー1508に記憶されたタスクが開始バッファ記述子である場合、S2MMインターフェース1504はIOモードを実装する。例えば、バッファ記述子タスクキュー1508に記憶されたタスクが開始バッファ記述子ではなく(例えば、バッファ記述子レジスタファイル1506に記憶されたバッファ記述子を指さず)、代わりにOOOモードを示す場合、S2MMインターフェース1504はOOOモードを実装する。
1つ以上の他の例示的な実装形態では、OOOモードは、リピート機能の使用をサポートする。リピート機能は、所与のタイルからの複数のパケットの一部として受信された第1のパケットのバッファ記述子識別子によって指定される同じバッファ記述子を使用して処理され得るパケットのパケットカウント(例えば、整数値)を指定し得る。例えば、タイル1512-1は、M個のパケットを送信することができ、ここで、「M」は整数値である。第1のパケットの受信に応答して、DMAエンジン310は、受信したデータを処理するために実行される特定のバッファ記述子を決定する。更に、DMAエンジン310は、バッファ記述子識別子によって示されるバッファ記述子がM個のパケットを処理するために使用されるべきであることを決定する。すなわち、DMAエンジン310は、同じバッファ記述子を使用して、最初に受信されたパケット及び次のM-1個のパケットを処理する。DMAエンジン310は、同じバッファ記述子を使用してM個のパケットを処理することを単一のタスクとみなす。一態様では、Mの値は、第1のパケットのヘッダのフィールド内に指定され得る。別の態様では、Mの値は、バッファ記述子タスクキュー1508に記憶されたタスクによって指定され得る。
例解の目的で、S2MMインターフェース1504がN個の異なるソース(例えば、タイル1512-1及び1512-2、ここでN=2)からパケットを受信する例を考える。一態様では、S2MMインターフェース1504は、バッファ記述子タスクキュー1508が未処理の(例えば、未完了の)タスクを含まない(例えば、空である)と決定したことに応答して、OOOモードを実装する。したがって、バッファ記述子レジスタファイル1506は、N個のバッファ記述子を記憶するように構成される(例えば、プログラムされる)。バッファ記述子レジスタファイル1506は、ソースごとに1つのバッファ記述子を記憶することができる。各バッファ記述子は、使用されるベースアドレス及びバッファ長を指定することができる。
一態様では、タスクは、バッファ記述子タスクキュー1508に記憶され得る。タスクは、N個のソースの各々から処理されるべきパケットの数を指定する。例えば、N個のソースの各々が「M」個のデータパケット(Mは1以上の整数値)を送信する場合、バッファ記述子タスクキュー1508に記憶されたタスクは、処理されるべきN×M個のパケットを指定する。これは、同じソースから送信された複数のパケットが同じバッファ記述子を使用して処理されることを可能にする。新しいバッファ記述子は、処理されるべきパケットごとにバッファ記述子レジスタファイル1506に記憶される必要がなく、これはIC100内のデータ転送効率を改善する。
上記とは非同期に、バッファ記述子が構成され、タイル1512-1及び1512-2の各それぞれのMM2Sチャネルのバッファ記述子レジスタファイルに記憶される。更に、タイル1512-1及び1512-2の各それぞれのMM2Sインターフェースのバッファ記述子タスクキューに、インオーダタスクが挿入される。タイル1512-1及び1512-2の各々は、データをバス1514に同時にプッシュすることができる。各ストリームスイッチ内に実装された調停ハードウェアは、調停が別のソースに許可される前に、1つのソースからの(例えば、ソースからの全ての「M」個のパケットの)マージポイントを過ぎた完全なデータ転送を可能にする。
パケットに応答して、S2MMインターフェース1504は、パケットヘッダを読取り、バッファ記述子識別子を抽出する。S2MMインターフェース1504は、バッファ記述子レジスタファイル1506から、バッファ記述子識別子によって指定されたバッファ記述子を取り出す。S2MMインターフェース1504は、取り出されたバッファ記述子を実行して、受信されたパケットを処理する。パケットを処理する際に、S2MMインターフェース1504は、パケットのヘッダをドロップ又は破棄し、パケットの残りの部分(例えば、ペイロード)を、バッファ記述子から決定された正しいアドレスに記憶する。パケットの長さは、ヘッダがドロップされると、バッファ記述子内のバッファ長に一致する。ワード中間バッファ上でTLASTを検出したこと、又はTLASTが最後のワードから欠落していることを検出したことに応答して、S2MMインターフェース1504は、(例えば、イベントブロードキャスト回路機構を介して)エラーイベントを生成し得る。S2MMインターフェース1504は、同じソースからのパケットごとにこのプロセスを繰り返すことができる。
リピート機能が使用される例示的な実装形態では、プロセスがN×M個のパケット(例えば、N個のソースの各々からM個のパケット)に対して繰り返されると、S2MMチャネル1504は、バッファ記述子タスクキュー1508からのタスクが完了したとみなす。S2MMチャネル1504は、タスクが完了したと決定したことに応答して、タスク完了トークンを発行することができ、更に、バッファ記述子タスクキュー1508内の次のタスクを実行しようと試みることが可能である。
一態様では、各バッファ記述子は、所与のソースからの2つ以上のパケットを処理するために使用され得るので、S2MMチャネル1504は、データの意図されない又は不正確な上書きを防止するために、同じバッファ記述子を使用して各反復についてデータが書込まれるアドレスを調整する反復状態アドレスオフセット回路機構を含み得る。タスクが完了すると、メモリ1510は、集合的に、将来のデータ移動動作のための単一のより大きいバッファとみなされ得るN×M個のサブバッファを記憶する。
他の例示的な実装形態では、そのように構成された場合、各異なるソースが異なる数「M」のパケットを転送することができるように、ソースごとにタスクを指定することができる。そのような場合、タスクは、所与のソースからの「M」個のパケットが書込まれたときに完了する。上述したように、リピート機能は使用されなくてもよい。そのような場合、OOOモードでは、各パケットは、パケットのヘッダの指定されたフィールド内のバッファ記述子識別子によって、パケットを処理するために使用されるべき特定のバッファ記述子を指定することができる。
上述したように、S2MMチャネル1504は、種々の異なるメカニズムを使用してモードを切り替えることが可能である。例えば、S2MMチャネル1504は、パケット処理モードを決定するタイルの制御レジスタに好適な構成データをロードすることによって、選択されたパケット処理モードで動作するように構成され得る。別の例では、S2MMチャネル1504は、バッファ記述子タスクキュー1508にタスクが記憶されていないことを検出したことに応答して、OOOモードを開始することができる。更に別の例では、S2MMチャネル1504は、バッファ記述子タスクキュー1508に記憶された特定のタイプのタスクを検出したことに応答して、OOOモードを開始することができる。その場合、タスクは、リピート機能処理に使用される値を指定することもできる。いずれの場合も、バッファ記述子を使用して、所与のソースからの2つ以上のパケットを処理することができる。したがって、バッファ記述子は、処理されるべきパケットごとにバッファ記述子レジスタファイル1506に書込まれる必要がなく、これは、DMAデータ転送を開始するオーバーヘッドを大幅に低減する。
説明の目的で、本明細書に開示される様々な発明概念の完全な理解を提供するために、特定の名称が記載される。しかしながら、本明細書で使用される専門用語は、本発明の構成の特定の態様を説明することのみを目的としており、限定することを意図していない。
本明細書で定義される場合、単数形の「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の組み合わせを意味する。
本明細書で定義される場合、「自動的に」という用語は、人間の介入がないことを意味する。本明細書で定義される場合、「ユーザ」という用語は人間を意味する。
本明細書で定義される場合、「場合」という用語は、文脈に応じて、「ときに」又は「際に」又は「に応答して」又は「に応じて」を意味する。したがって、「~と決定された場合」又は「[記載の条件又はイベント]が検出された場合」という語句は、文脈に応じて、「~と決定した際」若しくは「~と決定したことに応答して」、又は「[記載の条件又はイベント]を検出した際」若しくは「[記載の条件又はイベント]を検出したことに応答して」又は「[記載の条件又はイベント]を検出したことに応じて」を意味すると解釈される。
本明細書で定義される場合、「に応じて」という用語及び上述のような類似の言語、例えば、「場合」、「ときに」、又は「際に」は、アクション又はイベントに容易に応答又は反応することを意味する。応答又は反応は自動的に実行される。したがって、第2のアクションが第1のアクションに「応じて」実行される場合、第1のアクションの発生と第2のアクションの発生との間に因果関係がある。「に応じて」という用語は、因果関係を示す。
第1、第2などの用語は、様々な要素を説明するために本明細書で使用され得る。これらの要素は、これらの用語によって限定されるべきではない。なぜなら、これらの用語は、別段に言明しない限り、又は文脈が明らかにそうでないことを示さない限り、1つの要素を別の要素から区別するために使用されるにすぎないからである。
以下の特許請求の範囲に見出され得る全てのミーンズ又はステッププラスファンクション要素の対応する構造、材料、動作、及び均等物は、具体的に特許請求されるように、他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料、又は動作を含むことが意図される。
ICは、複数のタイルを有するDPEアレイを含むことができる。複数のタイルは、複数のDPEタイル及び複数のメモリタイルを含むことができる。各DPEタイルは、ストリームスイッチ、動作を実行するように構成されたコア、及びメモリモジュールを含むことができる。各メモリタイルは、ストリームスイッチ、DMAエンジン、及びRAMを含むことができる。各メモリタイルのDMAエンジンは、同じメモリタイル内のRAM及び少なくとも1つの他のメモリタイルのRAMにアクセスするように構成されてもよい。複数のDPEタイルのうちの選択されたDPEタイルは、ストリームスイッチを介して複数のメモリタイルのうちの選択されたメモリタイルにアクセスするように構成されてもよい。
前述及び他の実装形態はそれぞれ、以下の特徴のうちの1つ以上を単独で又は組み合わせて任意選択で含むことができる。いくつかの例示的な実装形態は、以下の特徴の全てを組み合わせて含む。
一態様では、DPEアレイは、複数のDPEタイルのストリームスイッチ及び複数のメモリタイルのストリームスイッチに結合された複数のストリームスイッチを有するSoCインターフェースを含む。SoCインターフェースは、DPEアレイをICの1つ以上の他の回路ブロックと通信可能にリンクする。
別の実施形態では、メモリタイルは、複数の行のDPEタイルとSoCインターフェースとの間の1行以上の行に配列される。
別の態様では、選択されたメモリタイルのDMAエンジンは、少なくとも2つの他のメモリタイルのRAMにアクセスするように構成される。
別の態様では、選択されたメモリタイルのストリームスイッチは、選択されたDPEタイルのストリームスイッチとの論理接続を確立するように構成され、論理接続は、選択されたメモリタイルとDPEタイルとの間でデータを渡すために、選択されたDPEタイルを選択されたメモリタイルのDMAエンジンと結合する。
別の態様では、複数のタイルは、行及び列を有するグリッドに配列される。各メモリタイルのストリームスイッチは、同じ列内の上に隣接するタイルのストリームスイッチ及び下に隣接するタイルのストリームスイッチに接続する。同じ行内の隣接するメモリタイルのストリームスイッチが接続されてもよい。
別の態様では、各DPEタイルのストリームスイッチは、各隣接するタイルのストリームスイッチに接続する。
別の態様では、タイルの各列は、1つ以上のDPEタイルと1つ以上のメモリタイルとを含む。
別の態様では、タイルの1つ以上の列は、DPEタイルを含み、メモリタイルを含まず、タイルの1つ以上の他の列は、メモリタイルを含み、DPEタイルを含まない。
別の態様では、複数のDPEタイルは、複数の行及び複数の列を有するグリッドに配列される。複数のメモリタイルは、1行以上の行が1つ以上のDPEタイル及び1つ以上のメモリタイルを含むように、1行以上の行内に散在させる。
別の態様では、各メモリタイルは、イベントブロードキャスト回路機構を含む。メモリタイルのイベントブロードキャスト回路機構は、相互接続されて、ストリームスイッチによって形成されるネットワークから独立したイベントブロードキャストネットワークを形成してもよい。イベントブロードキャストネットワークは、メモリタイル内で検出されたイベントを伝達してもよい。
別の態様では、複数のメモリタイルのイベントブロードキャストネットワークは、複数のメモリタイルについてのデバッグ及びトレース情報を伝達するように構成される。
別の態様では、メモリタイルの各々は、メモリマップドスイッチを含む。メモリタイルのメモリマップドスイッチは、相互接続されて、ストリームスイッチによって形成されるネットワークから独立したメモリマップドネットワークを形成する。メモリマップドネットワークは、メモリタイルに構成データを伝達する。
別の態様では、ICは、アクセラレータ回路に結合されたPMP回路を備え、PMP回路は、アクセラレータ回路に対してローカルであり、各トランザクションに割り当てられたセキュアマスタ識別子と、各トランザクションによってアクセスされるべきメモリの領域と、に基づいて、メモリに、アクセラレータ回路から発出するトランザクションを選択的に渡すように構成されている。
別の態様では、PMP回路は、DPEアレイのSoCインターフェース内、又はICのNoC内に実装される。
別の態様では、ICは、アクセラレータ回路に結合されたMMUを備え、MMUは、アクセラレータ回路に対してローカルであり、アクセラレータ回路によって使用される仮想メモリアドレスを物理メモリアドレスに変換するように構成される。
別の態様では、MMUは、DPEアレイのSoCインターフェース内、又はICのNoC内に実装される。
別の態様では、ICは、メモリマップドトランザクションに対応する列識別子を、DPEアレイ内のタイルの複数の列の各々に割り当てられたハードワイヤード及び一意の列識別子と一致させることに基づいて、DPEアレイのタイルの複数の列のうちの選択された列に、メモリマップドトランザクションを選択的に渡すように構成された複数の保護回路を備える。
別の態様では、ICは、列識別子マスクをDPEアレイ内のタイルの複数の列の各々に割り当てられたハードワイヤード及び一意の列識別子に適用することから生成された期待値に一致することに基づいて、DPEアレイのタイルの複数の列の範囲に、メモリマップドトランザクションを選択的に渡すように構成された複数の保護回路を備える。
ICは、DPEアレイを含むことができる。DPEアレイは、複数のメモリタイルを含む。メモリタイルのうちの第1のものは、第1のDMAエンジンと、第1のDMAエンジンに接続された第1のRAMと、第1のDMAエンジンに結合された第1のストリームスイッチとを含み得る。第1のDMAエンジンは、第2のメモリタイル内に配設された第2のRAMに結合される。第1のストリームスイッチは、第2のメモリタイル内に配設された第2のストリームスイッチに結合される。
前述及び他の実装形態はそれぞれ、以下の特徴のうちの1つ以上を単独で又は組み合わせて任意選択で含むことができる。いくつかの例示的な実装形態は、以下の特徴の全てを組み合わせて含む。
別の態様では、第1のDMAエンジンは、第1のメモリタイル及び第2のメモリタイルから形成される複合メモリを形成するために、第1のRAM及び第2のRAMにアクセスするようにプログラマブルである。
別の態様では、第1のメモリタイル及び第2のメモリタイルは隣接している。
別の態様では、第1のDMAエンジンは、第3のメモリタイル内に配設された第3のRAMにアクセスするようにプログラマブルである。
別の態様では、第3のメモリタイルは、第1のメモリタイルに隣接する。
別の態様では、第1のメモリタイルは、第1のDMAエンジンの読取り動作及び書込み動作に対応するイベントを生成するように構成された第1のイベントブロードキャスト回路機構を含む。第1のイベントブロードキャスト回路機構は、イベントのうちの選択されたイベントを1つ以上の選択された宛先回路に提供するようにプログラマブルである。
別の態様では、第1のイベントブロードキャスト回路機構は、第2のメモリタイルの第2のイベントブロードキャスト電気回路に接続される。
別の態様では、第1のメモリタイルは、選択されたイベントをパケット化し、パケット化された選択されたイベントを第1のストリームスイッチに提供するように構成された制御・デバッグ・トレース回路を含む。第1のストリームスイッチは、パケット化された選択されたイベントを更なる宛先回路に送信することが可能である。
別の態様では、第1のメモリタイルは、第1のDMAエンジンと第2のメモリタイルの第2のDMAエンジンとに結合された第1のロック回路を含む。第1のロック回路は、第1のDMAエンジン及び第2のDMAエンジンから受信された第1のRAMの部分に対するロックの要求を許可するように構成される。
別の態様では、第1のメモリタイルは、構成データを受信して第1のストリームスイッチ及び第1のDMAエンジンをプログラムするように構成された第1のメモリマップドスイッチを含む。
別の態様では、DPEアレイは、列及び行を有するグリッドに配列された複数のタイルを含む。第1のメモリマップドスイッチは、上に隣接するタイル内のメモリマップドスイッチ及び下に隣接するタイル内のメモリマップドスイッチに接続される。メモリマップドスイッチは、同じ列内のDPEアレイのタイル間で構成データを伝達することが可能である。
別の態様では、第1のRAMは、複数の第1の調停回路と、複数の第1の調停回路のそれぞれに結合された複数の第1のメモリバンクとを含む。各第1の調停回路は、第1のDMAエンジンの複数のストリーム-メモリマップドチャネル、第1のDMAエンジンの複数のメモリマップド-ストリームチャネル、及び第2のRAMのそれぞれの第2のメモリバンクに結合された複数の第2の調停回路に結合される。
別の態様では、第1のメモリタイルは、構成データを受信して第1のストリームスイッチ及び第1のDMAエンジンをプログラムするように構成された第1のメモリマップドスイッチを含む。第1のメモリマップドスイッチは、複数の第1の調停回路の各々に結合される。
別の態様では、第1のDMAエンジンは、複数のストリーム-メモリマップドチャネルを含み、各ストリーム-メモリマップドチャネルは、複数の異なるパケット処理モードのうちの1つを使用して動作するように独立に構成可能である。
別の態様では、複数のパケット処理モードは、DPEアレイの他のタイルから受信されたパケットが所定の順序で到着するインオーダモードと、DPEアレイの他のタイルから受信されたパケットが非決定論的順序で到着するアウトオブオーダモードとを含む。
別の態様では、第1のDMAエンジンは、複数のストリーム-メモリマップドチャネルを含み、複数のストリーム-メモリマップドチャネルのうちの少なくとも1つは、DPEアレイの他のタイルから受信されたパケットが非決定論的順序で到着するアウトオブオーダモードを使用して動作するように構成される。
別の態様では、DPEアレイは、行及び列を有するグリッドに配列された複数のタイルを含み、複数のタイルは、複数のDPEタイル、複数のメモリタイル、及び複数のインターフェースタイルを含む。複数のインターフェースタイルは、DPEアレイをICの1つ以上の他の回路ブロックと通信可能にリンクするSoCインターフェースを形成する。
別の態様では、各DPEタイルは、複数のストリーム-メモリマップドチャネルを含むDMAエンジンを含み、各ストリーム-メモリマップドチャネルは、複数の異なるパケット処理モードのうちの1つを使用して動作するように独立して構成可能である。
別の態様では、複数のパケット処理モードは、DPEアレイの他のタイルから受信されたパケットが所定の順序で到着するインオーダモードと、DPEアレイの他のタイルから受信されたパケットが非決定論的順序で到着するアウトオブオーダモードとを含む。
別の態様では、各DPEタイルは、複数のストリーム-メモリマップドチャネルを含むDMAエンジンを含み、複数のストリーム-メモリマップドチャネルのうちの少なくとも1つは、DPEアレイの他のタイルから受信されたパケットが非決定論的順序で到着するアウトオブオーダモードを使用して動作するように構成される。
本明細書で提供される本発明の構成の説明は、例示を目的とするものであり、網羅的であること、又は開示される形態及び例に限定されることを意図するものではない。本明細書で使用される用語は、本発明の構成の原理、実際の適用、又は市場で見られる技術に対する技術的改善を説明するために、及び/又は他の当業者が本明細書で開示される本発明の構成を理解することを可能にするために選択された。説明した本発明の構成の範囲及び精神から逸脱することなく、修正及び変形が当業者には明らかであり得る。したがって、そのような特徴及び実装形態の範囲を示すものとして、前述の開示ではなく、以下の特許請求の範囲が参照されるべきである。