(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】プログラマブルネットワークを介したプログラマブル論理領域の構成
(51)【国際特許分類】
H03K 19/17748 20200101AFI20240719BHJP
G06F 8/60 20180101ALI20240719BHJP
G06F 9/445 20180101ALI20240719BHJP
【FI】
H03K19/17748
G06F8/60
G06F9/445 150
(21)【出願番号】P 2021547457
(86)(22)【出願日】2020-02-07
(86)【国際出願番号】 US2020017282
(87)【国際公開番号】W WO2020167610
(87)【国際公開日】2020-08-20
【審査請求日】2023-01-16
(32)【優先日】2019-02-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】カマロタ, ラファエル シー.
(72)【発明者】
【氏名】シュルツ, デビット ピー.
【審査官】竹内 亨
(56)【参考文献】
【文献】特表2005-508532(JP,A)
【文献】米国特許出願公開第2010/0283505(US,A1)
【文献】特開2006-018413(JP,A)
【文献】特開2006-031127(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03K 19/00-19/23
G06F 8/60
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
プログラマブル論理領域と、
コントローラと、
前記コントローラと前記プログラマブル論理領域との間に接続されたプログラマブルネットワークと
、
前記プログラマブルネットワークと前記プログラマブル論理領域との間に接続された構成フレームドライバであって、前記コントローラに応答して、前記プログラマブル論理領域の構成メモリを書き込むように構成された読取り/書込み制御回路を備える構成フレームドライバと、
を備える集積回路(IC)であって、
前記コントローラが、前記プログラマブルネットワークと前記構成フレームドライバとを介して前記プログラマブル論理領域を構成するようにプログラムされた、
集積回路(IC)。
【請求項2】
前記構成フレームドライバが、構成フレームセグメントドライバを含み、前記構成フレームセグメントドライバの各々が、前記プログラマブル論理領域のサブ領域に関連し、前記構成フレームセグメントドライバが、並列に、前記コントローラからの構成データを処理することが可能である、請求項
1に記載のIC。
【請求項3】
前記プログラマブル論理領域が、構成可能な論理ブロックを含み、
前記プログラマブル論理領域が、ブロックメモリを含み、
前記構成フレームドライバが、第1のレートにおいて前記構成可能な論理ブロックに対して書込みおよび読取りを行い、第2のレートにおいてそれの前記ブロックメモリをプリロードおよびサンプリングするように構成され、
前記第2のレートが前記第1のレートよりも大きい、
請求項
1に記載のIC。
【請求項4】
前記第2のレートが、前記第1のレートよりも2倍大きい、請求項
3に記載のIC。
【請求項5】
前記プログラマブルネットワークは、
前記コントローラに接続されたネットワークオンチップ(NoC)マスタユニット(NMU)と、
前記構成フレームドライバに接続されたNoCスレーブユニット(NSU)と、
NoCパケットスイッチと、
前記NoCパケットスイッチ間で相互接続されたルーティングとを含み、前記相互接続されたNoCパケットスイッチが、前記NMUと前記NSUとに、およびそれらの間に通信可能に結合された、
請求項
1に記載のIC。
【請求項6】
周辺相互接続をさらに備え、前記コントローラが、前記周辺相互接続を介して前記プログラマブルネットワークを構成するようにプログラムされた、請求項
1に記載のIC。
【請求項7】
前記プログラマブル論理領域のそれぞれのサブ領域にそれぞれ接続された構成フレームセグメントドライバと、
周辺相互接続と
をさらに備え、
前記プログラマブルネットワークが、相互接続されたスイッチを含み、前記コントローラが、前記周辺相互接続を介して、前記相互接続されたスイッチを構成するようにプログラムされ、
前記コントローラが、前記相互接続されたスイッチを介して前記構成フレームセグメントドライバのうちの対応する少なくとも1つに構成データを送信することによって、前記プログラマブル論理領域の各サブ領域を構成するようにプログラムされ、
前記プログラマブル論理領域が、前記相互接続されたスイッチを介してアプリケーションデータを送信するように構成可能である、
請求項1に記載のIC。
【請求項8】
プログラマブルネットワークを介してコントローラから第1の構成データを送信することを含む、プログラマブル論理領域の少なくとも部分を構成することと、
前記プログラマブルネットワークを介して前記プログラマブル論理領域の前記構成された部分とアプリケーションデータを通信すること
と、
を含む、1つまたは複数の集積回路を動作させるための方法であって、
前記プログラマブル論理領域の少なくとも前記部分を構成することが、
前記コントローラから、前記プログラマブル論理領域の前記部分に関連する構成フレームセグメントドライバに、前記第1の構成データを送信することと、
前記第1の構成データに応答して、前記構成フレームセグメントドライバの読取り/書込み制御回路によって前記部分の構成メモリに書き込むことと
を含む、
1つまたは複数の集積回路を動作させるための方法。
【請求項9】
前記プログラマブル論理領域の少なくとも前記部分を構成することが、
前記プログラマブルネットワークのスイッチを通して前記第1の構成データをルーティングすることと、
スレーブユニットにおいて前記プログラマブルネットワークから前記第1の構成データを受信することと
をさらに含む、請求項
8に記載の方法。
【請求項10】
前記アプリケーションデータを通信することが、前記プログラマブルネットワークの前記スイッチを通して前記アプリケーションデータをルーティングすることを含む、請求項
9に記載の方法。
【請求項11】
前記構成フレームセグメントドライバによって前記プログラマブル論理領域のブロックメモリをプリロードおよび/またはサンプリングすることをさらに含み、
前記構成メモリに書き込むことは、第1のレートにおいて書き込むことが可能であり、
前記ブロックメモリをプリロードおよび/またはサンプリングすることは、前記第1のレートよりも大きい第2のレートにおいてプリロードおよび/またはサンプリングすることが可能である、
請求項
9に記載の方法。
【請求項12】
周辺相互接続を介して前記コントローラから前記プログラマブルネットワークの前記スイッチのそれぞれのレジスタブロックに第2の構成データを送信することを含む、前記スイッチを構成することをさらに含む、請求項
9に記載の方法。
【請求項13】
周辺相互接続を介して前記コントローラから第2の構成データを送信することを含む、前記プログラマブルネットワークを構成することをさらに含む、請求項
8に記載の方法。
【請求項14】
前記コントローラが第1のチップ上にあり、前記プログラマブル論理領域が、前記第1のチップとは別個の第2のチップ上にある、請求項
8に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般に、プログラマブル論理を有する集積回路(IC)と、プログラマブル論理を構成する方法とに関し、詳細には、プログラマブルネットワークを介してプログラマブル論理を構成するICおよび方法に関する。
【背景技術】
【0002】
プログラマブル集積回路(IC)は、概して、ユーザ構成可能であり、論理演算を実装することが可能である。たとえば、複合プログラマブル論理デバイス(CPLD)およびフィールドプログラマブルゲートアレイ(FPGA)を含む、いくつかのタイプのプログラマブルICがある。CPLDは、プログラマブル論理アレイ(PLA)アーキテクチャに基づく機能ブロックと、機能ブロック間の信号をルーティングおよび送信するためのプログラマブル相互接続線とを含む。FPGAは、構成可能な論理ブロック(CLB:configurable logic block)と、入出力ブロック(IOB)と、信号をルーティングおよび送信するプログラマブル相互接続線とを含む。CPLDの機能ブロック、FPGAのCLB、および相互接続線は、それぞれのデバイスの構成メモリに記憶されたデータによって構成される。プログラマブル相互接続およびプログラマブル論理は、一般に、構成データを、プログラマブル要素がどのように構成されるかを定義する内部構成メモリセルにロードすることによってプログラムされる。
【発明の概要】
【0003】
本明細書で説明される例は、プログラマブルネットワークを介して構成されることが可能であるプログラマブル論理領域を有する集積回路(IC)を提供する。プログラマブルネットワークは、高速通信ネットワークであり得る。いくつかの例では、プログラマブル論理領域は、数ある利点の中でも、より高速に構成され得る。
【0004】
本開示の一例はICである。ICは、プログラマブル論理領域と、コントローラと、プログラマブルネットワークとを含む。プログラマブルネットワークは、コントローラとプログラマブル論理領域との間に接続される。コントローラは、プログラマブルネットワークを介してプログラマブル論理領域を構成するようにプログラムされる。
【0005】
本開示の別の例は、1つまたは複数の集積回路を動作させるための方法である。プログラマブル論理領域の少なくとも部分が構成される。プログラマブル論理領域の少なくとも部分を構成することは、プログラマブルネットワークを介してコントローラから第1の構成データを送信することを含む。アプリケーションデータが、プログラマブルネットワークを介してプログラマブル論理領域の構成された部分と通信される。
【0006】
本開示の別の例はマルチチップ装置である。マルチチップ装置は、第1のチップと第2のチップとを含む。第1のチップは、第1のネットワークオンチップ(NoC)と、第1のプログラマブル論理領域と、第1の構成フレームドライバと、コントローラとを含む。コントローラは、第1のNoCのネットワークに通信可能に接続される。第1のNoCのネットワークは、第1のプログラマブル論理領域と第1の構成フレームドライバとに通信可能に接続される。第1の構成フレームドライバは、第1のプログラマブル論理領域に通信可能に接続される。第2のチップは、第2のNoCと、第2のプログラマブル論理領域と、第2の構成フレームドライバとを含む。第2のNoCのネットワークが、第1のNoCのネットワークと、第2のプログラマブル論理領域と、第2の構成フレームドライバとに通信可能に接続される。第2の構成フレームドライバは、第2のプログラマブル論理領域に通信可能に接続される。コントローラは、第1のNoCのネットワークを介して第1の構成フレームドライバに第1の構成データを送信するように構成される。コントローラは、第1のNoCのネットワークと第2のNoCのネットワークとを介して第2の構成フレームドライバに第2の構成データを送信するように構成される。
【0007】
これらおよび他の態様は、以下の発明を実施するための形態を参照しながら理解され得る。
【0008】
上記の具陳された特徴が詳細に理解され得るように、上記で手短に要約されたより詳細な説明は、添付の図面にその一部が示されている例示的な実装形態を参照することによってなされ得る。しかしながら、添付の図面は、典型的な例示的な実装形態を示すにすぎず、したがって、その範囲の限定と見なされるべきでないことに留意されたい。
【図面の簡単な説明】
【0009】
【
図1】いくつかの例による、システムオンチップ(SoC)を示すブロック図である。
【
図2】いくつかの例による、SoCのネットワークオンチップ(NoC)を示すブロック図である。
【
図3】いくつかの例による、NoCを通る、SoCにおけるエンドポイント回路間の接続を示すブロック図である。
【
図4】いくつかの例による、NoC周辺相互接続(NPI:NoC peripheral interconnect)を通る、レジスタブロックへの接続を示すブロック図である。
【
図5】いくつかの例による、SoCの追加の詳細を示す図である。
【
図6】いくつかの例による、構成フレームセグメントドライバにおけるNoCスレーブユニット(NSU:NoC slave unit)を示すブロック図である。
【
図7】いくつかの例による、
図6の追加の詳細を示す図である。
【
図8】いくつかの例による、集積回路(IC)を動作させる方法のフローチャートである。
【
図9】いくつかの例による、マルチチップ構造のブロック図である。
【
図10】いくつかの例による、複数のチップが各々SoCを有する、マルチチップ構造を示すブロック図である。
【
図11】いくつかの例による、複数のチップが各々SoCを有する、マルチチップ構造の追加の詳細を示す図である。
【
図12】いくつかの例による、マルチチップ構造を動作させるための方法のフローチャートである。
【
図13】いくつかの例による、SoCのレイアウトの部分の図である。
【
図14】いくつかの例による、SoCのレイアウトの部分の図である。
【発明を実施するための形態】
【0010】
理解を容易にするために、可能な場合、図に共通である同じ要素を指定するために同じ参照番号が使用されている。一例の要素が、他の例に有益に組み込まれ得ることが企図される。
【0011】
本明細書で説明される例は、1つまたは複数のプログラマブル論理領域を含む集積回路(IC)と、そのようなICを動作させるための方法とを提供する。いくつかの例では、ICは、たとえば、ICのプログラマブル論理領域上でインスタンス化された論理関数、アプリケーション、カーネルなどと、別の構成要素または回路との間の通信を実装することができる、通信ネットワーク(たとえば、ネットワークオンチップ(NoC)のプログラマブルネットワーク)を含む。通信ネットワークは、たとえば、高帯域幅の、高速ネットワークであり得る。さらに、1つまたは複数のプログラマブル論理領域を構成するための構成データが、通信ネットワークを通して通信され得る。そのような通信ネットワークを通してプログラマブル論理領域のための構成データを通信することが、そのようなデータの高速送信および並列処理を可能にすることができる。これは、プログラマブル論理領域がより高速に構成されることを可能にすることができる。
【0012】
さらなる例では、マルチチップ構造が提供され、チップがそれぞれのICを含むことができ、それぞれのICが1つまたは複数のプログラマブル論理領域を含む。マルチチップ構造におけるICは、たとえば、ICのうちのいずれかのプログラマブル論理領域上でインスタンス化された論理関数などと、ICのうちのいずれかにおける別の構成要素または回路との間の通信を実装することができる、通信ネットワークを含むことができる。さらに、1つまたは複数のプログラマブル論理領域を構成するための構成データが、通信ネットワークを通して通信され得る。たとえば、マスタICが、通信ネットワークを通してマスタICからスレーブICに構成データを通信することができる。そのような例は、スレーブIC上のより単純な回路(たとえば、処理システム)を可能にすることができる。
【0013】
フィールドゲートプログラマブルアレイ(FPGA)アーキテクチャでは、FPGAのプログラマブル論理領域(たとえば、ファブリック)に構成データを通信するために、専用構成フレームドライバが実装される。専用構成フレームドライバは、構成データの並列処理を可能にしないプログラマブル論理領域への低帯域幅直列接続であった。さらに、専用構成フレームドライバは、順序が狂った構成を可能にしない。したがって、そのようなFPGAのプログラマブル論理領域を構成することは、比較的遅いプロセスであり得る。
【0014】
FPGAアーキテクチャのプログラマブル論理領域を含むシステムオンチップ(SoC)が、開発されている。これらのSoCは、いくつかのアプリケーションのための統合されたソリューションを提供することが可能であり得る。そのようなSoCのうちのいくつかは、高帯域幅の、高速NoCを含むように開発されている。いくつかの例では、SoCは、プログラマブル論理領域のそれぞれのサブ領域に対応する構成フレームドライバのいくつかのセグメントを含む。構成データが、NoCのネットワークを介して構成フレームセグメントドライバに配信され得、これは、構成データの高速配信を可能にする。さらに、構成フレームドライバをセグメント化することは、プログラマブル論理領域を構成するための構成データのより局所化されたおよび並列処理を可能にする。いくつかの例では、帯域幅の増加が、専用構成フレームドライバの100倍超であることが想定される。
【0015】
さらに、本明細書で説明されるいくつかの例は、クラウドデータセンターにおいてなど、仮想化されたコンピューティングにおいて実装され得る。データセンターでは、クライアントは、クライアントの設計(たとえば、論理関数など)を実装するためのプログラマブル論理領域の部分をリースし得る。そのようなデータセンターの仮想化された性質は、そのようなプログラマブル論理領域をリースすることの経済的利益を最大にするために、プログラマブル論理領域が何回か構成および(たとえば、部分的再構成によって)再構成されることを引き起こすことがある。経済的利益をさらに最大にするために、プログラマブル論理領域を構成または再構成することは、クライアントがその設計を実装することが可能でないことがある、ダウンタイムを低減するためにできるだけ高速であるべきである。本明細書で提供されるいくつかの例は、プログラマブル論理領域を構成する(たとえば、完全に構成する、および/または部分的に再構成する)速度を増加させることができ、これは、たとえば、データセンターに関連する経済的利益を増加させることができる。さらに、さらなる例では、クライアントは、さらに、構成データのためにNoCのネットワークにおいて実装される仮想チャネルにおける重みまたは優先度に合わせてより多くまたはより少なく支払い得る。重みまたは優先度は、構成データがNoCのネットワークを通してルーティングされる速度を増加または減少させることができる。
【0016】
これらおよび他の例の態様が、以下で説明される。当業者が本開示を読めば容易に理解するように、追加のまたは他の利益が様々な例によって達成され得る。
【0017】
図を参照しながら様々な特徴が以下で説明される。図は一定の縮尺で描かれることも描かれないこともあり、同様の構造または機能の要素が、図全体にわたって同様の参照番号によって表されることに留意されたい。図は、特徴の説明を容易にすることを意図されているにすぎないことに留意されたい。図は、請求される本発明の網羅的な説明として、または請求される本発明の範囲に対する限定として意図されていない。さらに、示されている例は、すべての態様または利点が示される必要があるとは限らない。特定の例に関して説明される一態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはそのように明示的に説明されていない場合でも、任意の他の例において実施され得る。さらに、本明細書で説明される方法は動作の特定の順序で説明され得るが、他の例による他の方法は、より多いまたはより少ない動作を伴って(たとえば、様々な動作の異なる直列または並列実施を含む)様々な他の順序で実装され得る。またさらに、様々な方向または配向は、たとえば、列および行として説明され得る。これらの指定は、説明しやすいように、概して、垂直方向または配向のものであり、他の方向または配向が実装され得る。
【0018】
図1は、いくつかの例による、SoC102を示すブロック図である。SoC102は、FPGAなど、プログラマブル論理デバイスであるICである。SoC102は、処理システム104と、NoC106と、構成フレームセグメントドライバ108と、1つまたは複数のプログラマブル論理領域110とを備える。SoC102は、メモリコントローラ、マルチギガビットトランシーバ(MGT)、入出力ブロック(IO)、および他のIP回路など、他の回路をさらに含み得る。SoC102は、外部メモリ、たとえば、不揮発性メモリ(NVM)112に通信可能に結合される。
【0019】
概して、処理システム104は、NoC106および構成フレームセグメントドライバ108を通して、(1つまたは複数の)プログラマブル論理領域110に接続される。処理システム104および(1つまたは複数の)プログラマブル論理領域110は、構成フレームセグメントドライバ108とは別個のNoC106にさらに接続され、したがって、NoC106を介して互いに通信可能に結合され得る。
【0020】
処理システム104は、1つまたは複数のプロセッサコアを含むことができる。たとえば、処理システム104は、いくつかのARMベースの埋込みプロセッサコアを含むことができる。(1つまたは複数の)プログラマブル論理領域110は、任意の数の構成可能な論理ブロック、ルックアップテーブル、デジタル信号処理ブロック、ランダムアクセスメモリ(RAM)ブロック、UltraRAMブロック、およびプログラマブル相互接続要素を含むことができる。(1つまたは複数の)プログラマブル論理領域110は、NoC106およびそれぞれの構成フレームセグメントドライバ108を通して処理システム104を使用して、プログラムまたは構成され得る。たとえば、NoC106および構成フレームセグメントドライバ108は、たとえば、(プラットフォーム管理コントローラ(PMC)などの)処理システム104のコントローラ(たとえば、プロセッサコア)によって、(1つまたは複数の)プログラマブル論理領域110のファブリックのフレームベースのプログラミングを有効にすることができる。コントローラ(たとえば、PMC)は、(1つまたは複数の)プログラマブル論理領域110およびNoC106をプログラムまたは構成することなど、本明細書で説明される様々な機能性を実施するようにプログラムされ得る。
【0021】
NoC106は、その中でデータフローを制御するためのエンドツーエンドサービス品質(QoS)特徴を含む。例では、NoC106は、最初に、データフローを、指定されたトラフィッククラスに分離する。同じトラフィッククラスにおけるデータフローは、仮想または物理送信経路を共有するか、あるいは独立した仮想または物理送信経路を有するかのいずれかであり得る。QoS方式は、トラフィッククラスにわたって優先度の複数のレベルを適用する。トラフィッククラス内でおよびトラフィッククラスにわたって、NoC106は、トラフィックフローを整形し、ユーザ要件を満たす帯域幅およびレイテンシを提供するために、重み付けされたアービトレーション方式を適用する。NoC106の例が、以下でさらに説明される。
【0022】
図2は、いくつかの例による、SoCのNoC106を示すブロック図である。NoC106は、NoCマスタユニット(NMU)202と、NoCスレーブユニット(NSU)204と、ネットワーク214と、NoC周辺相互接続(NPI)210と、レジスタブロック212とを含む。各NMU202は、マスタ回路をNoC106に接続する入口回路である。各NSU204は、NoC106をスレーブエンドポイント回路に接続する出口回路である。NMU202は、ネットワーク214を通してNSU204に接続される。いくつかの例では、ネットワーク214は、NoCパケットスイッチ206と、NoCパケットスイッチ206間のルーティング208とを含む。各NoCパケットスイッチ206は、NoCパケットの切替えを実施する。NoCパケットスイッチ206は、互いに接続され、複数の物理チャネルを実装するためにルーティング208を通してNMU202およびNSU204に接続される。NoCパケットスイッチ206はまた、物理チャネルごとに複数の仮想チャネルをサポートする。NPI210は、NMU202、NSU204、およびNoCパケットスイッチ206の機能性を決定するレジスタブロック212に書き込むための回路要素を含む。NPI210は、機能性を設定するためにそれのプログラミングのためにレジスタブロック212に結合された周辺相互接続を含む。NoC106中のレジスタブロック212は、割込み、QoS、エラーハンドリング(error handling)および報告、トランザクション制御、電力管理、ならびにアドレスマッピング制御をサポートする。NoC106のための何らかの構成データが、たとえば、NVM112に記憶され、NoC106および/または他のスレーブエンドポイント回路をプログラムするためにNPI210に提供され得る。
【0023】
図3は、いくつかの例による、NoC106を通る、SoCにおけるエンドポイント回路間の接続を示すブロック図である。本例では、エンドポイント回路302は、NoC106を通してエンドポイント回路304に接続される。エンドポイント回路302は、NoC106のNMU202に結合されたマスタ回路である。エンドポイント回路304は、NoC106のNSU204に結合されたスレーブ回路である。各エンドポイント回路302および304は、処理システム104における回路、プログラマブル論理領域110における回路、または別のサブシステムにおける回路であり得る。プログラマブル論理領域110における各エンドポイント回路は、専用回路(たとえば、ハード化された回路)、またはプログラマブル論理において構成された回路であり得る。
【0024】
ネットワーク214は、複数の物理チャネル306を含む。物理チャネル306は、NoC106をプログラムすることによって実装される。各物理チャネル306は、1つまたは複数のNoCパケットスイッチ206と、関連するルーティング208とを含む。NMU202は、少なくとも1つの物理チャネル306を通してNSU204と接続する。物理チャネル306は、1つまたは複数の仮想チャネル308をも有することができる。仮想チャネル308は、任意の物理チャネル306に沿った様々な通信に優先度を付けるために、重みを実装することができる。以下でより詳細に説明されるような、ネットワーク214を通して通信される構成データは、任意の重みまたは優先度を割り当てられ得る。たとえば、構成データは、設計を実装する、顧客のターゲット速度に基づいて、重みまたは優先度を割り当てられ得る。
【0025】
図4は、いくつかの例による、たとえば、SoC102におけるNPI210を通る、NMU202、NoCパケットスイッチ206、またはNSU204の、レジスタブロック212への接続を示すブロック図である。レジスタブロック212に接続するために、NPI210は、NPIルートノード404と、相互接続されたNPIスイッチ406と、プロトコルブロック408とを含む。NPIルートノード404は、プラットフォーム管理コントローラ(PMC)402上に存在し、PMC402は、SoC102の処理システム104中に存在する。
【0026】
概して、NPIルートノード404は、書込みまたは読取り要求など、トランザクション要求を、NPI210によって実装されるフォーマットにパケット化することができ、メモリマッピングされたトランザクション要求を、相互接続されたNPIスイッチ406に送信することができる。トランザクション要求は、相互接続されたNPIスイッチ406を通して、トランザクション要求が向けられるレジスタブロック212に接続されたプロトコルブロック408にルーティングされ得る。プロトコルブロック408は、次いで、メモリマッピングされたトランザクション要求を、レジスタブロック212によって実装されるフォーマットに変換し、変換された要求を処理のためにレジスタブロック212に送信することができる。レジスタブロック212は、さらに、プロトコルブロック408および相互接続されたNPIスイッチ406を通してNPIルートノード404に、トランザクション要求への応答を送信することができ、NPIルートノード404は、次いで、トランザクション要求を発行したマスタ回路に応答する。
【0027】
NPIルートノード404は、PMC402など、1つまたは複数のマスタ回路によって使用されるプロトコルと、NPI210によって使用されるプロトコルとの間でトランザクション要求を変換することができる。たとえば、マスタ回路は、アドバンスト拡張可能インターフェース第4世代(AXI4:Advanced eXtensible Interface fourth generation)プロトコルを実装することができ、NPI210は、NPIプロトコルを実装することができる。プロトコルブロック408はまた、NPI210上に実装されるプロトコルから、NoCパケットスイッチ206のレジスタブロック212によって実装されるプロトコルに、トランザクション要求を変換することができる。いくつかの例では、プロトコルブロック408は、NPIプロトコルと、アドバンストマイクロコントローラバスアーキテクチャ(AMBA)3アドバンスト周辺バス(APB3)プロトコル、または構成フレームドライバのようなプロプライエタリプロトコルとの間で変換することができる。
【0028】
PMC402は、構成フレームドライバ(CF)ルートノード410をさらに含む。構成フレームドライバルートノード410は、NoC106のネットワーク214へのエンドポイント回路302である。構成フレームドライバルートノード410は、NMU202とネットワーク214とを介してそれぞれのNSU204にNoCプロトコルパケットを送信することによって、プログラマブル論理領域110のファブリックをプログラムするように構成され、それぞれのNSU204は、NoCプロトコルパケットを、それぞれの構成フレームセグメントドライバ108によって実装される構成フレームに変換することができる。構成フレームセグメントドライバ108は、SoC102上のプログラマブル論理領域110のプログラマブルユニットをプログラムするための配信機構である。
【0029】
図5は、いくつかの例による、SoC102の追加の詳細を示す図である。様々な(各々が「M」で標示された)NMU202および(各々が「S」で標示された)NSU204は、(各々が「X」で標示された)NoCパケットスイッチ206とルーティング208とを介して相互接続される。
図5は、(NPIルートノード404と構成フレームドライバルートノード410とをもつPMC402を含む)処理システム104、構成フレームセグメントドライバ108、およびプログラマブル論理領域110の、NoC106への接続を示す。
【0030】
各プログラマブル論理領域110は、構成のための複数のサブ領域に分離され、プログラマブル論理領域110の各サブ領域は、対応する構成フレームセグメントドライバ108を有する。プログラマブル論理領域110のサブ領域は、対応する構成フレームセグメントドライバ108のサイズまたは期間に対応することができる。
図5は、各構成フレームセグメントドライバ108における複数のNSU204を示す。NSU204のうちの1つまたは複数は、プログラマブル論理領域110の対応するサブ領域を構成するために、対応する構成フレームセグメントドライバ108と構成データを通信するように構成される。適用可能な場合、たとえば、NSU204のうちの1つまたは複数は、プログラマブル論理領域110の対応するサブ領域におけるブロックメモリからデータをプリロードおよびサンプリングするために、対応する構成フレームセグメントドライバ108と通信するように構成される。NSU204のうちの1つまたは複数は、プログラマブル論理領域110の対応するサブ領域と、たとえば、プログラマブル論理領域110のサブ領域上でインスタンス化された論理関数、アプリケーション、および/またはカーネルと、アプリケーションデータを通信するように構成される。
【0031】
図6は、いくつかの例による、構成フレームセグメントドライバ108におけるNSU204a、204b、204cを示す。NSU204aは、NoC106から構成フレームセグメントドライバ108にプログラマブル論理領域110のサブ領域の構成データを転送するために、構成フレームセグメントドライバ108に通信可能に結合される。構成フレームセグメントドライバ108は、構成データを使用して、プログラマブル論理領域110のサブ領域を構成する。NSU204bは、NoC106を介して、プログラマブル論理領域110のサブ領域においてインスタンス化された論理関数などと、アプリケーションデータを通信するために、プログラマブル論理領域110のサブ領域の論理要素、たとえば、構成可能な論理ブロック(CLB)502の列に接続された相互接続ネットワークに通信可能に結合される。NSU204cは、ブロックメモリ504からデータをプリロードおよびサンプリングするために、ブロックRAM(BRAM)、UltraRAM(URAM)、ルックアップテーブルRAM(LUTRAM)など、ブロックメモリ504の列に通信可能に結合される。
【0032】
図7は、いくつかの例による、
図6の追加の詳細を示す。
図6の構成フレームセグメントドライバ108は、シリアル-デシリアライザ回路(SerDes:serial-deserializer circuit)602と、読取り/書込み制御回路(R/W制御)604と、アドレスデコーダおよびクロック回路(ADDR/CLK)606とを含む。プログラマブル論理領域110のサブ領域の部分は、たとえば、CLB502を構成するための構成メモリセル608(1つが具体的に識別される)のいくつかの列および行を含む。プログラマブル論理領域110のサブ領域の部分は、ブロックメモリ504にデータをプリロードするためのフリップフロップ610、612と、ブロックメモリ504からデータをサンプリングするためのフリップフロップ614、616とをも含む。
【0033】
NSU204a、204cは、NoC106のネットワーク214(たとえば、ルーティング208およびNoCパケットスイッチ206)からパケットを受信する。構成メモリセル608、ブロックメモリ504のためのビット、およびサブ領域制御信号618を記憶する(1つまたは複数の)レジスタが、NoC106のアドレス空間にマッピングされる。したがって、構成メモリセル608、およびプログラマブル論理領域110のサブ領域のサブ領域制御信号618を記憶するための(1つまたは複数の)レジスタにアドレス指定されたパケットが、ネットワーク214によってNSU204aにルーティングされ、プログラマブル論理領域110のサブ領域のブロックメモリ504のためのビットにアドレス指定されたパケットが、ネットワーク214によってNSU204cにルーティングされる。NSU204a、204cは、パケットを、構成フレームセグメントドライバ108によって使用可能であるフォーマットに変換するように構成される。
【0034】
NSU204a、204cは、シリアル-デシリアライザ回路602に電気的に接続される。NSU204a、204cは、受信されたパケットに対応するデータをシリアル-デシリアライザ回路602に出力する。シリアル-デシリアライザ回路602は、NSU204a、204cから出力されたデータをデシリアライズし、そのデータを、読取り/書込み制御回路604によって実装されるフレームワードにコンバートする。シリアル-デシリアライザ回路602は、読取り/書込み制御回路604に電気的に接続され、コンバートされたフレームワードを読取り/書込み制御回路604に通信するように構成される。さらに、NSU204aは、サブ領域制御信号618を読取り/書込み制御回路604における(1つまたは複数の)レジスタに書き込むために、読取り/書込み制御回路604に電気的に接続される。
【0035】
サブ領域制御信号618を記憶するための(1つまたは複数の)レジスタに加えて、読取り/書込み制御回路604は、構成メモリセル608に対しておよびブロックメモリ504に対して読取りおよび書込みを行うように構成された論理回路を含む。論理回路は、たとえば、1つまたは複数のサブ領域制御信号618によって有効にされ得る。サブ領域制御信号618は、論理回路が入るおよび実装する、構成モード、機能(たえば、ミッション)モード、テストモード、診断モード、電源投入/切断モードなど、モードを示すことができる。
【0036】
読取り/書込み制御回路604は、さらに、アドレスデコーダおよびクロック回路606に電気的に接続される。読取り/書込み制御回路604は、フレームワードからのデータをアドレスデコーダおよびクロック回路606に通信することができる。アドレスデコーダおよびクロック回路606は、書込みまたは読取りが行われるべきである構成メモリセル608またはブロックメモリ504が配設される列のワード線を識別するためにデータを復号するための論理回路を含む。アドレスデコーダおよびクロック回路606は、1つまたは複数のクロック信号を生成するかまたはさもなければ提供するように構成された回路をさらに含む。
【0037】
プログラマブル論理領域110のサブ領域は、構成メモリセル608のいくつかの列(3つの列が示されている)と、ブロックメモリ504のいくつかの列(1つの列が示されている)と、場合によっては、他の構成可能な論理のいくつかの列(たとえば、デジタル信号処理(DSP)ブロック、プログラマブル相互接続(INT)要素など)とを含む。
図7に示されているサブ領域は、当業者が容易に理解するように、簡略図である。示されているように、構成メモリセル608の各列は、それぞれの列に沿ってアドレスデコーダおよびクロック回路606から延びるワード線WLを有し、ブロックメモリ504の各列は、それぞれの列に沿ってアドレスデコーダおよびクロック回路606から延びる2つのワード線WLと2つのクロック線CLKとを有する。いくつかの行(2つが示されている)が、プログラマブル論理領域110のサブ領域における様々な構成可能な論理要素にわたって延びる。各行は、それぞれの行に沿って読取り/書込み制御回路604から延びる第1のビット線BL1と第2のビット線BL2とを有する。
【0038】
図示の例では、各構成メモリセル608はスタティックランダムアクセスメモリ(SRAM)セルであるが、他のメモリセルが構成メモリセル608として実装され得る。具体的に標示されていないが、各構成メモリセル608は、構成メモリセル608が配設される行の第1のビット線BL1と第2のビット線BL2との間の送信ゲートを介して結合された、クロスカップルインバータを含む。構成メモリセル608の送信ゲートのトランジスタは、構成メモリセル608が配設される列のワード線WL(または反転または相補ワード線)に結合された、それぞれのゲートを有する。他の例では、送信ゲートの代わりに、または送信ゲートに加えて、パスゲートトランジスタが実装され得る。
【0039】
ブロックメモリ504は、プリロード段とサンプル段とを有する。プリロード段は、フリップフロップ610、612を含む。フリップフロップ610、612は、同じ列中に配設される。フリップフロップ610は、送信ゲートを介して、フリップフロップ610が配設される行の第1のビット線BL1に電気的に結合された、データ入力ノード(D)を有する。フリップフロップ612は、別の送信ゲートを介して、フリップフロップ612が配設される行の第2のビット線BL2に電気的に結合された、データ入力ノード(D)を有する。フリップフロップ610、612は各々、ブロックメモリ504に接続されたデータ出力ノード(Q)を有する。フリップフロップ610、612は各々、フリップフロップ610、612が配設される列のクロック線CLKに接続されたクロック入力ノードをさらに有する。フリップフロップ610のデータ入力ノード(D)を第1のビット線BL1に結合し、フリップフロップ612のデータ入力ノード(D)を第2のビット線BL2に結合する、それぞれの送信ゲートは、フリップフロップ610、612が配設される列のワード線WLに結合されたゲートを有する。
【0040】
サンプル段は、フリップフロップ614、616を含む。フリップフロップ614、616は、同じ列中に配設される。フリップフロップ614、616は各々、ブロックメモリ504に接続されたデータ入力ノード(D)を有する。フリップフロップ614は、送信ゲートを介して、フリップフロップ614が配設される行の第1のビット線BL1に電気的に結合された、データ出力ノード(Q)を有する。フリップフロップ616は、別の送信ゲートを介して、フリップフロップ616が配設される行の第2のビット線BL2に電気的に結合された、データ出力ノード(Q)を有する。フリップフロップ614、616は各々、フリップフロップ614、616が配設される列のクロック線CLKに接続されたクロック入力ノードをさらに有する。フリップフロップ614のデータ出力ノード(Q)を第1のビット線BL1に結合し、フリップフロップ616のデータ出力ノード(Q)を第2のビット線BL2に結合する、それぞれの送信ゲートは、フリップフロップ614、616が配設される列のワード線WLに結合されたゲートを有する。
【0041】
構成フレームセグメントドライバ108は、たとえば、フレームワードに基づいて構成メモリセル608を読み取るかまたは書き込むように構成される。フレームワードは、読取りまたは書込みが行われるべき構成メモリセル608と、構成メモリセル608が、読取りが行われるべきであるのか書込みが行われるべきであるのかと、書込みの場合、構成メモリセル608に記憶されるべきデータとを識別することができる。アドレスデコーダおよびクロック回路606は、構成メモリセル608がどの列に配設されるかを決定し、構成メモリセル608の送信ゲートに対して有効にするために、その列のワード線WL上で信号をアサートする。読取り/書込み制御回路604は、構成メモリセル608がどの行に配設されるかと、構成メモリセル608が、読取りが行われるべきであるのか書込みが行われるべきであるのかを決定する。読取りが決定された場合、読取り/書込み制御回路604は、たとえば、構成メモリセル608が配設される行の第1のビット線BL1と第2のビット線BL2との間の差動信号を検知するために差動ドライバを有効にする。書込みが決定された場合、読取り/書込み制御回路604は、適切な値を構成メモリセル608に書き込むために、相補値に対して、構成メモリセル608が配設される行の第1のビット線BL1および第2のビット線BL2を駆動する。構成メモリセル608の読取り、または構成メモリセル608への書込み中に、対応する第1のビット線BL1および第2のビット線BL2は、当業者が容易に理解するように、相補ビット線として(たとえば、ビット線BLおよび相補ビット線BLBとして)動作される。構成メモリセル608に書き込むことは、プログラマブル論理領域110のサブ領域における論理要素を構成することができる。構成メモリセル608を読み取ることは、プログラマブル論理領域110のサブ領域における論理要素の構成の忠実度をテストするために実施され得る。
【0042】
構成フレームセグメントドライバ108は、たとえば、フレームワードに基づいてブロックメモリ504をサンプリングする(読み取る)かまたはプリロードする(書き込む)ようにさらに構成される。フレームワードは、サンプリングまたはプリロードされるべきブロックメモリ504と、ブロックメモリ504がサンプリングされるべきであるのかプリロードされるべきであるのかと、プリロードされる場合、ブロックメモリ504に記憶されるべきデータとを識別することができる。アドレスデコーダおよびクロック回路606は、プリロードまたはサンプリングされるべきフリップフロップ610~616がどの列に配設されるかを決定し、フリップフロップ610~616の送信ゲートに対して有効にするために、その列のワード線WL上で信号をアサートする。読取り/書込み制御回路604は、プリロードまたはサンプリングされるべきフリップフロップ610~616がどの行に配設されるかと、フリップフロップ610~616が、プリロードされるべきであるのかサンプリングされるべきであるのかとを決定する。サンプルが決定された場合、読取り/書込み制御回路604は、フリップフロップ614、616が配設される行の第1のビット線BL1および第2のビット線BL2上でそれぞれの信号を検知するためにドライバを有効にする。書込みが決定された場合、読取り/書込み制御回路604は、フリップフロップ610、612にそれぞれの値を書き込むために、信号に対して、フリップフロップ610、612が配設される行の第1のビット線BL1および第2のビット線BL2を駆動する。
【0043】
フリップフロップ610~616に対するサンプリングまたはプリローディング中に、対応する第1のビット線BL1と第2のビット線BL2とは、互いに独立して動作され得る。第1のビット線BL1と第2のビット線BL2とを独立して動作させることは、2ビットが、単一の動作について、フリップフロップ610、612にプリロードされること(たとえば、各フリップフロップ610、612に対して1つ)と、フリップフロップ614、616からサンプリングされること(たとえば、各フリップフロップ610、612に対して1つ)とを可能にすることができる。プリローディングおよびサンプリング中の第1のビット線BL1と第2のビット線BL2との独立した動作は、たとえば、構成メモリセル608を読み取ることおよび書き込むことよりも、2倍大きい帯域幅を有効にすることができる(たとえば、フリップフロップ610~616のプリローディング/サンプリングは、構成メモリセル608の読取り/書込みのレートの2倍であり得る)。
【0044】
図7に示されている例は、他のプログラマブルデバイスに対する短縮された線(たとえば、ビット線および/またはワード線)を有することができる。プログラマブル論理領域110と構成フレームセグメントドライバ108との分離およびセグメント化は、これらの線が短縮されることを可能にする。線を短縮することによって、読取り/書込みおよび/またはサンプリング/プリローディングのための帯域幅が、増加され得る。
【0045】
さらに、(1つまたは複数の)プログラマブル論理領域110のサブ領域が、別個の構成フレームセグメントドライバ108を有するので、構成メモリセル608に書き込むための構成データは、構成データを処理し、並列に(1つまたは複数の)プログラマブル論理領域110のそれぞれのサブ領域を構成するために、NoC106のネットワーク214を介して異なる構成フレームセグメントドライバ108に通信され得る。この並列処理および並列構成は、1つまたは複数のプログラマブル論理領域110を構成する際の速度をさらに増加させることができる。
【0046】
図8は、いくつかの例による、ICを動作させる方法800のフローチャートである。ICは、上記で説明されたような、プログラマブル論理領域とNoCとを含む。
【0047】
ブロック802において、NoCのNoCパケットスイッチ、NMU、およびNSUが、NPIを介して構成される。上記で説明された例では、たとえば、処理システム104(たとえば、PMC402)は、NoC106の構成データを取得する。処理システム104(たとえば、PMC402)は、構成データをNPIルートノード404に転送し、NPIルートノード404は、構成データを、メモリマッピングされたトランザクション要求にパケット化する。NPIルートノード404は、メモリマッピングされたトランザクション要求をNPIスイッチ406に送信し、NPIスイッチ406は、トランザクション要求を適切なプロトコルブロック408にルーティングする。プロトコルブロック408は、次いで、メモリマッピングされたトランザクション要求を、それぞれのレジスタブロック212によって実装されるフォーマットに変換し、変換された要求を、処理のためにNoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に送信する。NoCパケットスイッチ206、NMU202、およびNSU204のための構成データに対応する適切なデータが、それらのNoCパケットスイッチ206、NMU202、およびNSU204を構成するために、NoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に書き込まれる。
【0048】
NoCを構成するためのNoCパケットスイッチ、NMU、およびのNSUの構成は、任意の構成であり得る。その構成は、たとえば、NoCを通してプログラマブル論理領域のための構成データを通信することを有効にするための最小構成、任意の構成要素のためにNoCにわたる通信を有効にするための完全なシステムレベル構成、またはそれらの間の任意の構成であり得る。
【0049】
ブロック804において、1つまたは複数のプログラマブル論理領域の1つまたは複数のサブ領域が、NoCのネットワークとそれぞれの構成フレームセグメントドライバとを介して構成される。上記で説明された例では、たとえば、処理システム104(たとえば、PMC402)は、プログラマブル論理領域110のサブ領域の構成データを取得する。処理システム104(たとえば、PMC402)は、構成データを構成フレームドライバルートノード410に転送し、構成フレームドライバルートノード410は、構成データをNoCプロトコルパケットにパケット化する。構成フレームドライバルートノード410は、NoCプロトコルパケットを1つまたは複数のNMU202に送信し、NMU202は、NoCプロトコルパケットをNoC106のネットワーク214に送信する。NoCプロトコルパケットは、次いで、NoC106のネットワーク214における様々なNoCパケットスイッチ206およびルーティング208を通して、適切なNSU204aにルーティングされる。NSU204aは、NoCパケットを、構成フレームセグメントドライバ108によって使用可能なフォーマットに変換し、対応するデータを構成フレームセグメントドライバ108に送信する。構成フレームセグメントドライバ108のシリアル-デシリアライザ回路602は、NSU204aから出力されたデータをデシリアライズし、そのデータを、構成フレームセグメントドライバ108の読取り/書込み制御回路604によって実装されるフレームワードにコンバートする。フレームワードは、読取り/書込み制御回路604に送信され、読取り/書込み制御回路604ならびにアドレスデコーダおよびクロック回路606は、フレームワークに基づいて、プログラマブル論理領域110のサブ領域における構成メモリセル608に書き込むために、対応するワード線WL、第1のビット線BL1、および第2のビット線BL2上で信号をアサートする。構成メモリセル608に書き込むことは、様々な論理関数、アプリケーション、および/またはカーネルを実装するように、構成可能な要素を構成することができる。
【0050】
ブロック806において、ICにおける様々な構成要素または回路が、NoCのネットワークを介してプログラマブル論理領域の構成されたサブ領域と通信する。再び上記で説明された例を参照すると、任意の構成要素または回路、たとえば、処理システム104、別のプログラマブル論理領域110、メモリコントローラ、MGT、IOなどが、たとえば、NoC106のネットワーク214を通して、プログラマブル論理領域110の構成されたサブ領域にアプリケーションデータを通信することができる。
【0051】
いくつかの例では、通信は、構成フレームセグメントドライバ108を通さない。構成要素または回路は、NMU202およびネットワーク214(たとえば、様々なNoCパケットスイッチ206およびルーティング208)を介してNSU204bに、アプリケーションデータを含んでいるNoCプロトコルパケットを送信することができる。NSU204bは、NoCプロトコルパケットを、プログラマブル論理領域110の構成されたサブ領域の論理関数などによって使用可能なフォーマットに変換し、対応するデータをプログラマブル論理領域110の相互接続ネットワークに送信し、相互接続ネットワークは、データを適宜にルーティングする。論理関数などは、同じまたは同様の経路を(たとえば、逆に)使用して、そのような通信に応答することができ、および/あるいは、同じまたは同様の経路(たとえば、プログラマブル論理領域110の相互接続ネットワークから、NMU202に、ネットワーク214に、NSU204に、および構成要素または回路に)を使用して、通信を始動することができる。
【0052】
いくつかの例では、通信はまた、構成フレームセグメントドライバ108を通し得る。構成要素または回路は、NMUおよびネットワーク214を介してNSU204cにNoCプロトコルパケットを送信することができる。NSU204cは、NoCプロトコルパケットを、構成フレームセグメントドライバ108によって使用可能なフォーマットに変換し、対応するデータを構成フレームセグメントドライバ108に送信する。構成フレームセグメントドライバ108のシリアル-デシリアライザ回路602は、NSU204cから出力されたデータをデシリアライズし、そのデータを、構成フレームセグメントドライバ108の読取り/書込み制御回路604によって実装されるフレームワードにコンバートする。フレームワードは、読取り/書込み制御回路604に送信され、読取り/書込み制御回路604ならびにアドレスデコーダおよびクロック回路606は、フレームワークに基づいて、プログラマブル論理領域110のブロックメモリ504においてフリップフロップ610、612におけるデータをプリロードするか、またはフリップフロップ614、616からデータをサンプリングするために、対応するワード線WL上で信号をアサートし、対応する第1のビット線BL1および第2のビット線BL2上で信号をアサートまたは検知する。
【0053】
図9は、いくつかの例による、2.5次元集積回路(2.5DIC)構造など、マルチチップ構造のブロック図である。2.5DIC構造は、インターポーザ910または別の基板に取り付けられた、第1のチップ902と、第2のチップ904と、第3のチップ906と、メモリチップ908とを含む。他の例では、2.5DIC構造はより少ないまたはより多いチップを有し得、メモリチップ908は、2.5DIC構造の外部にあるが、2.5DIC構造に通信可能に結合され得る。第1のチップ902、第2のチップ904、および第3のチップ906の各々は、以下で説明されるシステムオンチップ(SoC)など、集積回路(IC)であるか、またはICを含むことができる。メモリチップ908は、構成データなど、データを記憶するための任意の形態のメモリを備えることができる。第1のチップ902、第2のチップ904、第3のチップ906、およびメモリチップ908は、マイクロバンプ、金属ピラー(たとえば、銅ピラー)など、電気コネクタ912によってインターポーザ910に取り付けられる。電気コネクタ914が、たとえば、パッケージ基板など、別の基板に2.5DIC構造を取り付けるために、チップ902、904、906、908とは反対側のインターポーザ910の側面上にある。電気コネクタ914は、制御崩壊チップ接続(C4:controlled collapse chip connection)バンプ、ボールグリッドアレイ(BGA)ボールなどであり得る。
【0054】
インターポーザ910は、チップ902、904、906、908のうちの様々なチップを電気的に接続する電気相互接続を含む。電気相互接続は、チップ902、904、906、908が取り付けられたインターポーザ910の側面上の1つまたは複数のメタライゼーション層または再分配層(redistribution layer)、インターポーザ910のバルク基板(たとえば、シリコン基板)を通る1つまたは複数のスルー基板ビア(TSV)、および/あるいはチップ902、904、906、908が取り付けられた側面に対向するインターポーザ910の側面上の1つまたは複数のメタライゼーション層または再分配層を含むことができる。したがって、様々な信号、パケットなどが、チップ902、904、906、908のうちの様々なチップ間で通信され得る。
【0055】
他の例では、より多いまたはより少ないチップが含まれ得、チップは他の構成のものであり得る。たとえば、2つ、4つ、またはそれ以上のチップなど、SoCを含むより多いまたはより少ないチップが実装され得、より多いまたはより少ないメモリチップが含まれ得る。いくつかの例では、マルチチップ構造は、3次元IC(3DIC)構造におけるものなど、様々な積層チップを含むことができる。たとえば、2つまたはそれ以上のメモリチップが互いに積層され得、下部メモリチップがインターポーザ910に取り付けられる。インターポーザなしなど、他の例において、他のマルチチップ構造が実装され得る。当業者に容易に明らかになるであろう様々な修正が行われ得る。
【0056】
図10は、いくつかの例による、複数のチップが各々SoCを有する、マルチチップ構造を示すブロック図である。マルチチップ構造は、(たとえば、
図1の第1のチップ902上の)SoC1002と、(たとえば、第2のチップ904上の)SoC1004と、(たとえば、第3のチップ906上の)SoC1006とを含む。各SoC1002、1004、1006は、
図1のSoC102に関して上記で説明されたように、処理システム104と、NoC106と、構成フレームセグメントドライバ108と、1つまたは複数のプログラマブル論理領域110とを備えるICである。各SoC1002、1004、1006は、外部回路に結合され得、図示のように、SoC1002は、(たとえば、
図9中のメモリチップ908上の)NVM1008に結合される。NVM1008は、NoC106および(1つまたは複数の)プログラマブル論理領域110を構成するなど、SoC1002、1004、1006を構成するために、SoC1002、1004、1006にロードされ得るデータを記憶することができる。
図9および
図10に示されているように、NVM112は、インターポーザ910に取り付けられたメモリチップ908上にあるが、他の例では、フラッシュメモリなど、メモリが、マルチチップ構造の外部にあり、シリアル周辺インターフェース(SPI)を介してなど、SoC1002に通信可能に結合され得る。たとえば、メモリは、マルチチップ構造が取り付けられたのと同じパッケージ基板に取り付けられ得、そのパッケージ基板を介してSoC1002と通信し得る。
【0057】
概して、各SoC1002、1004、1006の処理システム104は、NoC106のみを通して、および構成フレームセグメントドライバ108とともにNoC106を通して、(1つまたは複数の)プログラマブル論理領域110に接続される。さらに、各SoC1002、1004、1006のNoC106は、各隣接するSoC1002、1004、1006のNoC106に接続される。たとえば、SoC1002のNoC106とSoC1004のNoC106とは接続され、SoC1004のNoC106とSoC1006のNoC106とは接続される。それらのNoC106が接続されることにより、NoC106を介したSoC1002、1004、1006間の通信が可能になる。
【0058】
図11は、いくつかの例による、相互接続されたNoC106をもつマルチチップ構造を示すブロック図である。
図11は、より詳細に
図10のマルチチップ構造のいくつかの態様を示すが、ここで説明される態様を不明瞭にしないように他の態様を省略する。マルチチップ構造は、SoC1102、1104、1106を含み、それらの各々が、概して、
図5のSoC102の構造を有する。SoC102とSoC1102、1104、1106との間の対応する構造の説明は、簡潔のためにここでは省略される。
【0059】
各NoC106のルーティング208は、(各々が「I」で標示された)インターポーザドライバ1108に接続され、インターポーザドライバ1108は、SoC1102、1104、1106のNoC106を相互接続するために、(各々が「C」で標示された)外部コネクタ1110に接続される。外部コネクタ1110は、たとえば、
図9に関して説明されたように、それぞれのチップを、インターポーザおよび/あるいはインターポーザ上のメタライゼーション層または再分配層に取り付けるバンプであるか、またはバンプを含むことができる。SoC1102のNoC106のルーティング208は、SoC1102のそれぞれのインターポーザドライバ1108に接続され、それらは、外部コネクタ1110を介してSoC1104のそれぞれのインターポーザドライバ1108に接続される。SoC1104のインターポーザドライバ1108は、SoC1104のNoC106のルーティング208に接続される。SoC1104のNoC106のルーティング208は、SoC1104のそれぞれの他のインターポーザドライバ1108に接続され、それらは、外部コネクタ1110を介してSoC1106のそれぞれのインターポーザドライバ1108に接続される。SoC1106のインターポーザドライバ1108は、SoC1106のNoC106のルーティング208に接続される。
【0060】
いくつかの例では、SoC1104、1106は、それぞれの処理システム104においてPMC402と構成フレームドライバルートノード410とを含まない。SoC1104、1106は、PMC402と比較して、低減された機能性をもつNPIルートノード404を含む、プロセッサ1112(たとえば、マイクロプロセッサ)を含み得る。いくつかの例では、プロセッサ1112は、何らかの基本的な冗長性修復(repair)および特徴有効化を実装し得、それぞれのSoC1104、1106上に最小構成を実装し得、SoC1102のPMC402は、システムレベル構成を実装し、SoC1102、1104、1106においてプログラマブル論理領域110を構成するための、SoC1104、1106に対するマスタとして働く。他の例では、各SoC1102、1104、1106は、それぞれのSoC1102、1104、1106の様々な構成要素を構成するための、PMC402と構成フレームドライバルートノード410とを含むことができる。
【0061】
図12は、いくつかの例による、マルチチップ構造を動作させるための方法1200のフローチャートである。方法1200は、マスタとして働くSoC1102と、スレーブとして働くSoC1104、1106とのコンテキストにおいて説明される。スレーブSoC1104、1106は、上記で説明された簡略化されたプロセッサ1112を含む。したがって、方法1200では、スレーブSoC1104、1106におけるいくつかの構成が、マスタSoC1102のPMC402によって始動され、SoC1102、1104、1106のNoC106のネットワーク214を通して通信され得る。他の例では、各SoC1102、1104、1106は、他のSoC1102、1104、1106から独立してローカルに構成され得る。
【0062】
ブロック1202において、各SoCにおいてローカルに、プログラマブル論理領域中にないメモリが、それぞれのSoCのNPIを介して修復される。いくつかの例では、各SoC1102、1104、1106は、冗長メモリを有効にすることによって、欠陥のあるメモリの修復を可能にするための値で製造においてプログラムされた電気ヒューズ(eヒューズ)を有する。それぞれのSoC1102、1104、1106のPMC402またはプロセッサ1112は、eヒューズの値を読み取り、応答して、NPI210を介してNPIルートノード404から様々なレジスタブロック212に、メモリマッピングされたトランザクションを送信して、それぞれのSoC1102、1104、1106に組み込まれた冗長性によってメモリを修復することが可能である。レジスタブロック212は、それぞれのNMU202、NSU204、NoCパケットスイッチ206、インターポーザドライバ1108、または、それぞれのSoC1102、1104、1106のNPI210のアドレス空間内の任意の他のメモリ中にあり得る。
【0063】
ブロック1204において、各SoCにおいてローカルに、それぞれのSoCのNoCのNoCパケットスイッチ、NMU、およびNSUが、NPIを介してNoC最小構成で構成される。NoC最小構成は、それぞれのSoC1102、1104、1106のPMC402またはプロセッサ1112と、そのSoC1102、1104、1106の構成フレームセグメントドライバ108へとの間の通信チャネルを確立する。さらに、NoC最小構成は、各スレーブSoC1104、1106のNoC106のネットワーク214を、マスタSoC1102に近接した、隣接するSoCのNoC106のネットワーク214に(たとえば、ブリッジとして)通信可能に接続し、したがって、マスタSoC1102とスレーブSoC1104、1106との間の通信が確立され得る。
【0064】
各SoC1102、1104、1106は、NoC最小構成データを記憶する、SoCに電気的に接続されたオンチップまたはオフチップの、読取り専用メモリ(ROM)など、メモリを有することができる。それぞれのSoC1102、1104、1106のPMC402またはプロセッサ1112は、メモリからNoC最小構成データを読み取り、NoC最小構成データをNPIルートノード404に転送する。NPIルートノード404は、NoC最小構成データをメモリマッピングされたトランザクションとしてパケット化し、NPI210の相互接続されたNPIスイッチ406を介して、それぞれのSoC1102、1104、1106のNoC106の適切なNoCパケットスイッチ206、NMU202、およびNSU204のプロトコルブロック408に、メモリマッピングされたトランザクションを送信する。プロトコルブロック408は、次いで、メモリマッピングされたトランザクション要求を、それぞれのレジスタブロック212によって実装されるフォーマットに変換し、変換された要求を、処理のためにNoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に送信する。NoCパケットスイッチ206、NMU202、およびNSU204のためのNoC最小構成データに対応する適切なデータが、それらのNoCパケットスイッチ206、NMU202、およびNSU204を構成するために、NoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に書き込まれる。
【0065】
NoC106がNoC最小構成で構成された後に、マスタSoC1102のNoC106は、SoC1102のPMC402(たとえば、構成フレームドライバルートノード410)と構成フレームセグメントドライバ108との間の通信を可能にするように構成される。スレーブSoC1104のNoC106は、SoC1104のプロセッサ1112と構成フレームセグメントドライバ108との間の通信を可能にし、SoC1102、1104間に電気的に接続された外部コネクタ1110のうちの少なくともいくつかから受信された通信を可能にするように構成される。スレーブSoC1106のNoC106は、SoC1106のプロセッサ1112と構成フレームセグメントドライバ108との間の通信を可能にし、SoC1104、1106間に電気的に接続された外部コネクタ1110のうちの少なくともいくつかから受信された通信を可能にするように構成される。
【0066】
ブロック1206において、各SoCにおいてローカルに、プログラマブル論理領域のメモリが、それぞれのSoCのNoCのネットワークと構成フレームセグメントドライバとを介して修復される。上記のように、いくつかの例では、各SoC1102、1104、1106は、冗長メモリを有効にすることによって、欠陥のあるメモリの修復を可能にするための値で製造においてプログラムされたeヒューズを有する。それぞれのSoC1102、1104、1106のPMC402またはプロセッサ1112は、eヒューズの値を読み取り、応答して、NoC106のネットワーク214を介してPMC402またはプロセッサ1112からそれぞれの構成フレームセグメントドライバ108に、NoCプロトコルパケットを送信することが可能である。構成フレームセグメントドライバ108は、修復データを処理し、それぞれのSoC1102、1104、1106組み込まれた冗長性によって、プログラマブル論理領域110の対応するサブ領域におけるメモリを修復するように構成される。
【0067】
ブロック1208において、マスタSoCにおいてローカルに、NoCのネットワークのNoCパケットスイッチ、NMU、およびNSUが、マスタSoCのNPIを介して、マスタSoCのためのNoCシステムレベル構成で構成される。SoC1102のPMC402は、オンチップまたはオフチップのメモリからNoCシステムレベル構成データを読み取ることができ、NoCシステムレベル構成データをNPIルートノード404に転送する。NPIルートノード404は、NoCシステムレベル構成データをメモリマッピングされたトランザクションとしてパケット化し、NPI210の相互接続されたNPIスイッチ406を介して、SoC1102のNoC106の適切なNoCパケットスイッチ206、NMU202、およびNSU204のプロトコルブロック408に、メモリマッピングされたトランザクションを送信する。プロトコルブロック408は、次いで、メモリマッピングされたトランザクション要求を、それぞれのレジスタブロック212によって実装されるフォーマットに変換し、変換された要求を、処理のためにNoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に送信する。NoCパケットスイッチ206、NMU202、およびNSU204のためのNoCシステムレベル構成データに対応する適切なデータが、それらのNoCパケットスイッチ206、NMU202、およびNSU204を構成するために、NoCパケットスイッチ206、NMU202、およびNSU204のレジスタブロック212に書き込まれる。
【0068】
マスタSoC1102のNoC106のネットワーク214が、NoCシステムレベル構成データで構成されると、および、スレーブSoC1104のNoC106のネットワーク214が、(たとえば、ブリッジを構成するように)NoC最小構成データで構成されると、マスタSoC1102のPMC402は、SoC1102、1104のNoC106のネットワーク214を介して、スレーブSoC1104のプロセッサ1112と通信し得る。
【0069】
ブロック1210において、マスタSoCにおいてローカルに、マスタSoCの1つまたは複数のプログラマブル論理領域の1つまたは複数のサブ領域が、NoCのネットワークとマスタSoCのNoCのそれぞれの構成フレームセグメントドライバとを介して構成される。上記で説明された例では、たとえば、マスタSoC1102の処理システム104(たとえば、PMC402)は、マスタSoC1102のプログラマブル論理領域110のサブ領域の構成データを取得する。構成データは、次いで、
図8の方法800のブロック804に関して上記で説明されたように、マスタSoC1102の1つまたは複数のプログラマブル論理領域110の1つまたは複数のサブ領域を構成するようにハンドリングおよび処理される。(1つまたは複数の)プログラマブル論理領域110の様々なサブ領域が、並列に構成され得る。
【0070】
ブロック1212において、マスタSoCは、SoCのNoCのネットワークを介してスレーブSoCにNoCシステムレベル構成データを通信する。上記で説明されたように、SoC1102、1104のNoC106のネットワーク214は、マスタSoC1102のPMC402とスレーブSoC1104のプロセッサ1112との間の通信を可能にするように構成される。SoC1102のPMC402は、オンチップまたはオフチップのメモリからNoCシステムレベル構成データを読み取ることができ、NoCシステムレベル構成データをNMU202に転送し、NMU202は、そのデータをNoCプロトコルパケットにパケット化する。NoCプロトコルパケットは、NMU202からSoC1102のNoC106のネットワーク214に送信され、SoC1102上の1つまたは複数のインターポーザドライバ1108を通して、1つまたは複数の外部コネクタ1110を通して、SoC1104上の1つまたは複数のインターポーザドライバ1108を通して、SoC1104のNoC106のネットワーク214を通して、SoC1104のNSU204に送信される。NSU204は、データを再フォーマットし、SoC1104のためのNoCシステムレベル構成データをSoC1104のプロセッサ1112に転送する。
【0071】
ブロック1214において、スレーブSoCにおいてローカルに、NoCのネットワークのNoCパケットスイッチ、NMU、およびNSUが、スレーブSoCのNPIを介して、スレーブSoCのためのNoCシステムレベル構成で構成される。マスタSoC1102からNoCシステムレベル構成データを受信した後に、スレーブSoC1104は、マスタSoC1102に関してブロック1208において上記で説明されたように、SoC1104のNPIルートノード404およびNPI210を介して、SoC1104のNoC106のネットワーク214のNoCパケットスイッチ206、NMU202、およびNSU204を構成する。SoC1102、1104のNoC106のネットワーク214が、NoCシステムレベル構成データで構成されると、および、スレーブSoC1106のNoC106のネットワーク214が、(たとえば、ブリッジを構成するように)NoC最小構成データで構成されると、マスタSoC1102のPMC402は、SoC1102、1104、1106のNoC106のネットワーク214を介して、スレーブSoC1106のプロセッサ1112と通信し得る。
【0072】
マスタSoCによって始動される、ブロック1216において、スレーブSoCの1つまたは複数のプログラマブル論理領域の1つまたは複数のサブ領域が、マスタおよびスレーブSoCのNoCのネットワークと、スレーブSoCのそれぞれの構成フレームセグメントドライバとを介して構成される。上記で説明された例では、たとえば、マスタSoC1102の処理システム104(たとえば、PMC402)は、スレーブSoC1104のプログラマブル論理領域110のサブ領域の構成データを取得する。マスタSoC1102の処理システム104(たとえば、PMC402)は、構成データを構成フレームドライバルートノード410に転送し、構成フレームドライバルートノード410は、構成データをNoCプロトコルパケットにパケット化する。構成フレームドライバルートノード410は、NoCプロトコルパケットを1つまたは複数のNMU202に送信し、NMU202は、NoCプロトコルパケットをSoC1102のNoC106のネットワーク214に送信する。NoCプロトコルパケットは、次いで、SoC1102のNoC106のネットワーク214を通して、SoC1102上の1つまたは複数のインターポーザドライバ1108を通して、1つまたは複数の外部コネクタ1110を通して、SoC1104上の1つまたは複数のインターポーザドライバ1108を通して、SoC1104のNoC106のネットワーク214を通して、SoC1104の適切なNSU204aにルーティングされる。構成データは、次いで、
図8の方法800のブロック804に関して上記で説明されたように、スレーブSoC1104の1つまたは複数のプログラマブル論理領域110の1つまたは複数のサブ領域を構成するようにハンドリングおよび処理される。(1つまたは複数の)プログラマブル論理領域110の様々なサブ領域が、並列に構成され得る。
【0073】
ブロック1212、1214、1216は、スレーブSoC1106など、任意の追加のスレーブSoCについて繰り返され得る。ブロック1212、1214、1216の実施は、通信が、さらに、SoCのNoC106の任意のネットワーク214、任意の追加のインターポーザドライバ、およびマスタSoCとスレーブSoCとの間に介入する任意の外部コネクタを横断し得ることを除いて、説明されたように実施され得る。たとえば、マスタSoC1102からスレーブSoC1106に通信することは、SoC1104のNoC106のネットワーク214を通して通信をルーティングすることを含む。
【0074】
ブロック1218において、マルチチップ構造における様々な構成要素または回路が、たとえば、NoCの(1つまたは複数の)ネットワークを介して、任意のSoCの(1つまたは複数の)プログラマブル論理領域の(1つまたは複数の)構成されたサブ領域と、アプリケーションデータを通信する。SoC1102、1104、1106のNoC106のネットワーク214は、任意のSoC1102、1104、1106における任意の構成要素が、任意のSoC1102、1104、1106におけるプログラマブル論理領域110の任意のサブ領域と通信することを可能にする。通信は、複数のSoC1102、1104、1106のNoC106のネットワーク214をさらに通し得ることを除いて、
図8の方法800のブロック806に関して上記で説明されたようなものであり得る。
【0075】
複数のSoC1102、1104、1106のNoC106のネットワーク214に通信可能に接続されたマルチチップ構造内の任意のマスタ回路が、NoC106のネットワーク214を介して、SoC1102、1104、1106における任意のプログラマブル論理領域110の任意のサブ領域を構成することが可能であり得る。たとえば、SoC1102上のマスタ回路が、SoC1102、1104、および場合によっては、SoC1106のNoC106のネットワーク214を介して、SoC1104、1106のうちの少なくとも1つ上の(1つまたは複数の)構成フレームセグメントドライバ108に構成データを送信することができる。同様に、SoC1104上のマスタ回路が、SoC1102、1104、またはSoC1104、1106のNoC106のネットワーク214を介して、SoC1102、1106のうちの少なくとも1つ上の(1つまたは複数の)構成フレームセグメントドライバ108に構成データを送信することができる。さらに、SoC1106上のマスタ回路が、SoC1106、1104、および場合によっては、1102のNoC106のネットワーク214を介して、SoC1102、1104のうちの少なくとも1つ上の(1つまたは複数の)構成フレームセグメントドライバ108に構成データを送信することができる。異なる独立したプログラマブル論理領域110を非同期的にプログラムするために独立したネットワーク経路を使用することができる(1つまたは複数の)任意のプログラマブル論理領域110において、複数のカーネルがインスタンス化され得る。これらのプログラマブル論理領域110を構成することは、順序が狂うことがある。
【0076】
図13および
図14は、いくつかの例による、SoCのそれぞれのレイアウトの部分1300、1400を示す。
図13の部分1300は、処理システム104中のPMC402を含み、たとえば、
図5のSoC102または
図11のマスタSoC1102であり得る。ランダムアクセスメモリ(RAM)1302、読取り専用メモリ(ROM)1304、eヒューズ(eF)1306、および他のサポート回路1308が、
図13のレイアウトの部分1300の処理システム104中に含まれる。レイアウトの部分1300は、処理システム104をもつレイアウト配置において、プログラマブル論理領域110の部分と、NoC106の部分と、NMU202と、NSU204と、MGT1310とをさらに示す。
【0077】
図14の部分1400は、処理システム104中のプロセッサ1112を含み、たとえば、
図11のスレーブSoC1104、1106であり得る。処理システム104(およびプロセッサ1112)、RAM1302、ROM1304、eヒューズ(eF)1306、他のサポート回路1308、NMU202、およびNSU204は、NoC106の部分のエリア中にある。PMC402をプロセッサ1112(たとえば、簡略化されたおよび/または低減された機能性のプロセッサ)と置き換えることが、示されている例において、他の構成要素のためのレイアウトにおける空間を空ける。たとえば、部分1400に示されているように、追加のMGT1310が含まれ、プログラマブル論理領域110のより大きい部分が含まれ、高密度入出力領域(HDIO)1402が含まれる。HDIO1402は、たとえば、簡略化されたおよび/または低減された機能性のプロセッサが実装されることにより、SoCのファシリティ(facility)テストに実装され得る。
【0078】
いくつかの例は、集積回路(IC)を含む。ICは、プログラマブル論理領域と、コントローラと、コントローラとプログラマブル論理領域との間に接続されたプログラマブルネットワークとを含む。コントローラは、プログラマブルネットワークを介してプログラマブル論理領域を構成するようにプログラムされる。
【0079】
上記の例のICは、プログラマブルネットワークとプログラマブル論理領域との間に接続された構成フレームドライバをさらに含むことができ、コントローラは、プログラマブルネットワークと構成フレームドライバとを介してプログラマブル論理領域を構成するようにプログラムされる。ICでは、構成フレームドライバは、構成フレームセグメントドライバを含むことができ、構成フレームセグメントドライバの各々は、プログラマブル論理領域のサブ領域に関連し、構成フレームセグメントドライバは、並列に、コントローラからの構成データを処理することが可能である。ICでは、プログラマブル論理領域は、構成可能な論理ブロックを含むことができ、プログラマブル論理領域は、ブロックメモリを含むことができ、構成フレームドライバは、第1のレートにおいて構成可能な論理ブロックに対して書込みおよび読取りを行い、第2のレートにおいてそれのブロックメモリをプリロードおよびサンプリングするように構成され得、第2のレートは、第1のレートよりも大きくなり得る。ICでは、第2のレートは、第1のレートよりも2倍大きくなり得る。ICでは、プログラマブルネットワークは、コントローラに接続されたネットワークオンチップ(NoC)マスタユニット(NMU)と、構成フレームドライバに接続されたNoCスレーブユニット(NSU)と、NoCパケットスイッチと、NoCパケットスイッチ間で相互接続されたルーティングとを含むことができ、相互接続されたNoCパケットスイッチは、NMUとNSUとに、およびそれらの間に通信可能に結合される。ICは、周辺相互接続をさらに含むことができ、コントローラは、周辺相互接続を介してプログラマブルネットワークを構成するようにプログラムされる。
【0080】
上記の例のICは、プログラマブル論理領域のそれぞれのサブ領域にそれぞれ接続された構成フレームセグメントドライバと、周辺相互接続とをさらに含むことができ、プログラマブルネットワークは、相互接続されたスイッチを含み、コントローラは、周辺相互接続を介して、相互接続されたスイッチを構成するようにプログラムされ、コントローラは、相互接続されたスイッチを介して構成フレームセグメントドライバのうちの対応する少なくとも1つに構成データを送信することによって、プログラマブル論理領域の各サブ領域を構成するようにプログラムされ、プログラマブル論理領域は、相互接続されたスイッチを介してアプリケーションデータを送信するように構成可能である。
【0081】
いくつかの例は、1つまたは複数の集積回路を動作させるための方法を含む。方法は、プログラマブルネットワークを介してコントローラから第1の構成データを送信することを含む、プログラマブル論理領域の少なくとも部分を構成することと、プログラマブルネットワークを介してプログラマブル論理領域の構成された部分とアプリケーションデータを通信することとを含む。
【0082】
上記の例の方法では、プログラマブル論理領域の少なくとも部分を構成することは、プログラマブルネットワークのスイッチを通して第1の構成データをルーティングすることと、スレーブユニットにおいてプログラマブルネットワークから第1の構成データを受信することと、スレーブユニットから、プログラマブル論理領域の部分に関連する構成フレームセグメントドライバに、第1の構成データを送信することと、第1の構成データに応答して、構成フレームセグメントドライバによって構成メモリに書き込むこととをさらに含むことができる。方法では、アプリケーションデータを通信することは、プログラマブルネットワークのスイッチを通してアプリケーションデータをルーティングすることを含むことができる。方法は、構成フレームセグメントドライバによってプログラマブル論理領域のブロックメモリをプリロードおよび/またはサンプリングすることをさらに含むことができ、構成メモリに書き込むことは、第1のレートにおいて書き込むことが可能であり、ブロックメモリをプリロードおよび/またはサンプリングすることは、第1のレートよりも大きい第2のレートにおいてプリロードおよび/またはサンプリングすることが可能である。方法は、周辺相互接続を介してコントローラからプログラマブルネットワークのスイッチのそれぞれのレジスタブロックに第2の構成データを送信することを含む、スイッチを構成することをさらに含むことができる。
【0083】
上記の例の方法は、周辺相互接続を介してコントローラから第2の構成データを送信することを含む、プログラマブルネットワークを構成することをさらに含むことができる。
【0084】
上記の例の方法では、コントローラは第1のチップ上にあり得、プログラマブル論理領域は、第1のチップとは別個の第2のチップ上にあり得る。
【0085】
いくつかの例は、マルチチップ装置を含む。マルチチップ装置は、第1のネットワークオンチップ(NoC)と、第1のプログラマブル論理領域と、第1の構成フレームドライバと、コントローラとを備える、第1のチップを含む。マルチチップ装置は、第2のNoCと、第2のプログラマブル論理領域と、第2の構成フレームドライバとを備える、第2のチップをも含む。コントローラは、第1のNoCのネットワークに通信可能に接続される。第1のNoCのネットワークは、第1のプログラマブル論理領域と第1の構成フレームドライバとに通信可能に接続される。第1の構成フレームドライバは、第1のプログラマブル論理領域に通信可能に接続される。第2のNoCのネットワークが、第1のNoCのネットワークと、第2のプログラマブル論理領域と、第2の構成フレームドライバとに通信可能に接続される。第2の構成フレームドライバは、第2のプログラマブル論理領域に通信可能に接続される。コントローラは、第1のNoCのネットワークを介して第1の構成フレームドライバに第1の構成データを送信するように構成される。コントローラは、第1のNoCのネットワークと第2のNoCのネットワークとを介して第2の構成フレームドライバに第2の構成データを送信するように構成される。
【0086】
上記の例のマルチチップ装置では、第1の構成フレームドライバは、第1の構成フレームセグメントドライバを含むことができ、第1の構成フレームセグメントドライバの各々は、第1のプログラマブル論理領域の対応するサブ領域に関連し、第2の構成フレームドライバは、第2の構成フレームセグメントドライバを含むことができ、第2の構成フレームセグメントドライバの各々は、第2のプログラマブル論理領域の対応するサブ領域に関連する。
【0087】
上記の例のマルチチップ装置では、コントローラは、第1のNoCの周辺相互接続に通信可能に接続され得、コントローラは、第1のNoCの周辺相互接続を介して第3の構成データを送信することによって、第1のNoCのネットワークを構成するようにプログラムされ得、第2のチップは、第2のNoCの周辺相互接続に通信可能に接続されたプロセッサをさらに含むことができ、コントローラは、第1のNoCのネットワークと第2のNoCのネットワークとを介してプロセッサに第4の構成データを送信することによって、第2のNoCのネットワークを構成するようにプログラムされ得、プロセッサは、第2のNoCの周辺相互接続を介して第4の構成データを送信するようにさらに構成される。
【0088】
上記の例のマルチチップ装置では、第1のチップまたは第2のチップのマスタ回路が、第1のNoCのネットワークと第2のNoCのネットワークとを介して第1のチップまたは第2のチップのうちの他方の構成フレームドライバに第3の構成データを送信するように構成され得る。
【0089】
上記の例のマルチチップ装置では、第1のプログラマブル論理領域は、第1の構成メモリと第1のブロックメモリとを含むことができ、第1の構成フレームドライバは、第1のレートにおいて第1の構成メモリに書き込み、第2のレートにおいて第1のブロックメモリをプリサンプリングおよび/またはロードするように構成され得、第2のレートは第1のレートの2倍であり、第2のプログラマブル論理領域は、第2の構成メモリと第2のブロックメモリとを含むことができ、第2の構成フレームドライバは、第3のレートにおいて第2の構成メモリに書き込み、第4のレートにおいて第2のブロックメモリをプリサンプリングおよび/またはロードするように構成され得、第4のレートは第3のレートの2倍である。
【0090】
上記は特定の例を対象とするが、他のおよびさらなる例がその基本的範囲から逸脱することなく考案され得、その範囲は以下の特許請求の範囲によって決定される。