(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-01
(45)【発行日】2023-11-10
(54)【発明の名称】プログラマブル集積回路のための階層型部分的再構成
(51)【国際特許分類】
G06F 30/347 20200101AFI20231102BHJP
H03K 19/17756 20200101ALI20231102BHJP
H01L 21/82 20060101ALI20231102BHJP
【FI】
G06F30/347
H03K19/17756
H01L21/82 A
H01L21/82 C
(21)【出願番号】P 2021503040
(86)(22)【出願日】2019-07-19
(86)【国際出願番号】 US2019042661
(87)【国際公開番号】W WO2020018942
(87)【国際公開日】2020-01-23
【審査請求日】2022-07-04
(32)【優先日】2018-07-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ユィ,ハオ
(72)【発明者】
【氏名】コン,レイモンド
(72)【発明者】
【氏名】マーティン,ブライアン・エス
(72)【発明者】
【氏名】リウ,ジュン
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開2012-185818(JP,A)
【文献】米国特許第08719750(US,B1)
【文献】米国特許出願公開第2017/0098024(US,A1)
【文献】Dirk Koch,Christian Beckhoff,HIERARCHICAL RECONFIGURATION OF FPGAS,INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL),英国,2014年09月02日,pp.1-8,https://pure.manchester.ac.uk/ws/portalfiles/portal/33422478/FULL_TEXT.PDF
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
H03K 19/17756
H01L 21/82
(57)【特許請求の範囲】
【請求項1】
方法であって、
コンピュータハードウェアを用いて、回路設計の第1の部分的再構成モジュールを第1の部分的再構成コンテナに変換するステップを含み、前記回路設計が配置およびルーティングされ、前記方法はさらに、
前記コンピュータハードウェアを用いて、最初は空である第1の複数の部分的再構成モジュールを含む第1のネットリストを前記第1の部分的再構成コンテナにロードするステップと、
前記コンピュータハードウェアを用いて、前記第1の複数の部分的再構成モジュールのうち選択された1つの部分的再構成モジュールへの接続のパーティションピンを、前記第1の部分的再構成コンテナの境界から、前記第1の複数の部分的再構成モジュールのうち前記選択された1つの部分的再構成モジュールの境界に移動させるステップと、
前記コンピュータハードウェアを用いて、前記第1の複数の部分的再構成モジュールの各々内にさらなるネットリストを含めるステップと、
前記コンピュータハードウェアを用いて、前記第1の部分的再構成コンテナと前記第1の部分的再構成コンテナ内の前記第1の複数の部分的再構成モジュールとを実装するステップとを含む、方法。
【請求項2】
前記第1の複数の部分的再構成モジュールの各々ごとに、第1の部分的再構成モジュールフロアプランを生成するステップをさらに含み、
各々の第1の部分的再構成モジュールフロアプランは、前記第1の部分的再構成コンテナのフロアプラン内に含まれているとともに、前記第1の複数の部分的再構成モジュールのそれぞれを実装するために用いられる、請求項1に記載の方法。
【請求項3】
前記第1の部分的再構成コンテナを実装するステップは、
前記第1の複数の部分的再構成モジュールの各々の回路要素が、それぞれ対応する第1の部分的再構成モジュールフロアプランによって指定される境界内に位置するように、前記第1の部分的再構成コンテナと前記第1の複数の部分的再構成モジュールの各々とを配置およびルーティングするステップを含む、請求項2に記載の方法。
【請求項4】
前記変換するステップは、
前記第1のネットリストをロードするステップの前に前記第1の部分的再構成モジュールの内容を空にするステップを含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記第1の複数の部分的再構成モジュールのための境界を指定するユーザ入力を受信するステップをさらに含む、請求項1から
4のいずれか1項に記載の方法。
【請求項6】
前記第1の複数の部分的再構成モジュールのうち少なくとも1つの選択された部分的再構成モジュールについて、前記少なくとも1つの選択された部分的再構成モジュールを第2の部分的再構成コンテナに変換して、前記第2の部分的再構成コンテナ内に第2の複数の部分的再構成モジュールを実装するステップをさらに含む、請求項1から
5のいずれか1項に記載の方法。
【請求項7】
集積回路であって、
外部デバイスとのインターフェイスを実装するように構成された第1のプログラマブル回路を含むスタティック領域と、
前記スタティック領域に結合された部分的再構成コンテナ領域とを含み、前記部分的再構成コンテナ領域は、第2のプログラマブル回路を用いて前記スタティック領域へのインターフェイスを実装し、
前記部分的再構成コンテナ領域は第1の複数の部分的再構成領域を含み、前記第1の複数の部分的再構成領域のうち少なくとも1つが前記部分的再構成コンテナ領域に結合される、
前記第1の複数の部分的再構成領域のうち少なくとも1つの部分的再構成領域内の回路は、前記スタティック領域および前記部分的再構成コンテナ領域が途切れることなく動作し続けている間、前記集積回路の動作中に変更される、集積回路。
【請求項8】
前記第1の複数の部分的再構成領域の各々内における回路は、前記スタティック領域および前記部分的再構成コンテナ領域が途切れることなく動作し続けている間、前記集積回路の動作中に変更される、請求項
7に記載の集積回路。
【請求項9】
前記第1の複数の部分的再構成領域の数はユーザ指定である、請求項
7または8に記載の集積回路。
【請求項10】
前記第1の複数の部分的再構成領域の複数の境界はユーザ指定である、請求項
7から
9のいずれか1項に記載の集積回路。
【請求項11】
前記部分的再構成コンテナ領域は、第2の複数の部分的再構成領域を含むさらなる部分的再構成コンテナ領域を含む、請求項
7から
10のいずれか1項に記載の集積回路。
【請求項12】
前記第1の複数の部分的再構成領域のうち各々の部分的再構成領域と、前記第2の複数の部分的再構成領域のうち各々の部分的再構成領域とは、独立して再構成可能である、請求項
11に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
著作物についての権利の留保
本特許文献の開示の一部は著作権保護の対象となる資料を含む。著作権者は、本特許文献または特許開示の何者かによる複写複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでない場合にはいかなるときもすべての著作権を留保する。
【0002】
技術分野
本開示は、集積回路(integrated circuit:IC)に関し、より特定的には、プログラマブルICの部分的再構成に関する。
【背景技術】
【0003】
背景
プログラマブル集積回路(IC)は、プログラマブル回路を含む或るタイプのICを指している。プログラマブルICの例としてフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)がある。FPGAは、プログラマブル回路ブロックを含むことを特徴とする。プログラマブル回路ブロックの例には、入出力ブロック(input/output block:IOB)、構成可能な論理ブロック(configurable logic block:CLB)、専用ランダムアクセスメモリブロック(dedicated random access memory block:BRAM)、乗算器、デジタル信号処理ブロック(digital signal processing block:DSP)、プロセッサ、クロックマネージャおよび遅延ロックループ(delay lock loop:DLL)が含まれるが、これらに限定されない。回路設計は、プログラマブルICの構成メモリに構成ビットストリームをロードすることによって、プログラマブルICのプログラマブル回路内で物理的に実装され得る。
【0004】
部分的再構成は、プログラマブルIC内のプログラマブル回路のうち「部分的再構成領域」または「PR(partial reconfiguration)領域」と称される領域が、部分的構成ビットストリームをプログラマブルIC内にロードすることによって動的に再構成され得るプロセスである。部分的構成ビットストリームは、PR領域において予め実装されているものとは異なる回路を指定してもよい。部分的構成ビットストリームは、プログラマブル回路のうちPR領域外にある部分のための新しい回路および/または異なる回路を指定しない。プログラマブルICのプログラマブル回路のうち「スタティック回路」または「スタティック領域」と称される他の領域が途切れることなく動作し続けている間、繰り返し、複数の異なる部分的構成ビットストリームが異なる回路(またはアプリケーション)を指定する場合、PR領域は、部分的再構成によって、たとえば、当該PR領域のための部分的構成ビットストリームをロードすることによって、変更されてもよい。
【0005】
PR領域を備えた回路設計を用いる場合、PR領域のさまざまな特徴は一定のままである。PR領域内の回路が部分的再構成技術を用いて時間の経過に応じて変化し得る一方で、PR領域の境界は変化させなくてもよい。したがって、PR領域のサイズ、PR領域の形状、PR領域の他の回路との接続性およびPR領域の数などの特定の特徴はプログラマブルIC内では変化しないままである。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
1つ以上の実施形態においては、方法は、コンピュータハードウェアを用いて、回路設計の第1の部分的再構成モジュールを第1の部分的再構成コンテナに変換するステップを含み、ここで回路設計が配置およびルーティングされ、当該方法はさらに、当該コンピュータハードウェアを用いて、最初は空である第1の複数の部分的再構成モジュールを含む第1のネットリストを当該第1の部分的再構成コンテナにロードするステップと、当該コンピュータハードウェアを用いて、当該第1の複数の部分的再構成モジュールの各々内にさらなるネットリストを含めるステップと、当該コンピュータハードウェアを用いて、当該第1の部分的再構成コンテナと当該第1の部分的再構成コンテナ内の当該第1の複数の部分的再構成モジュールとを実装するステップとを含む。
【0007】
1つ以上の実施形態においては、方法は、第1の部分的ビットストリームによって指定される第1の回路をプログラマブル集積回路のスタティック領域内に実装するステップと、第2の部分的ビットストリームによって指定される第2の回路を当該プログラマブル集積回路の部分的再構成コンテナ領域内に実装するステップと、当該部分的再構成コンテナ領域内に含まれる第1の部分的再構成領域内に第3の回路を実装し、当該部分的再構成コンテナ領域内に含まれる第2の部分的再構成領域内に第4の回路を実装するステップとを含み得る。当該第3の回路は第3の部分的ビットストリームによって指定されており、当該第4の回路は第4の部分的ビットストリームによって指定されている。
【0008】
1つ以上の実施形態においては、集積回路は、外部デバイスとのインターフェイスを実装するように構成された第1のプログラマブル回路を含むスタティック領域と、当該スタティック領域に結合された部分的再構成コンテナ領域とを含み得る。当該部分的再構成コンテナ領域は第2のプログラマブル回路を用いて当該スタティック領域へのインターフェイスを実装する。当該部分的再構成コンテナ領域は第1の複数の部分的再構成領域を含み得る。当該第1の複数の部分的再構成領域のうち少なくとも1つは当該部分的再構成コンテナ領域に結合されている。
【0009】
この概要の段落は、単に、特定の概念を紹介するために記載されているに過ぎず、特許請求される主題のいずれかの重要な特徴または本質的な特徴を識別するために記載されるものではない。本発明の構成の他の特徴は、添付の図面および以下の詳細な説明から明らかになるだろう。
【0010】
図面の簡単な説明
本発明の構成が一例として添付の図面に示されている。しかしながら、添付の図面は、本発明の構成を図示される特定の実装例のみに限定するものと解釈されるべきではない。以下の詳細な説明を検討するとともに添付の図面を参照すると、さまざまな局面および利点が明らかになるだろう。
【図面の簡単な説明】
【0011】
【
図1】本明細書中に記載される1つ以上の実施形態と共に用いられるデータ処理システムの例を示す図である。
【
図2】プログラマブル集積回路(IC)の例を示す図である。
【
図3】プログラマブルICの別の例を示す図である。
【
図4】階層型部分的再構成の例示的な方法を示す図である。
【
図5A】
図4において実行される例示的な動作を示す図である。
【
図5B】
図4において実行される例示的な動作を示す図である。
【
図5C】
図4において実行される例示的な動作を示す図である。
【
図5D】
図4において実行される例示的な動作を示す図である。
【
図5E】
図4において実行される例示的な動作を示す図である。
【
図5F】
図4において実行される例示的な動作を示す図である。
【
図5G】
図4において実行される例示的な動作を示す図である。
【
図6】
図5Gの回路設計を実装する例示的なICを示す図である。
【
図8】配置およびルーティングのための例示的な技術を示す図である。
【
図9】階層型部分的再構成の別の例示的な方法を示す図である。
【
図10A】
図9において実行される例示的な動作を示す図である。
【
図10B】
図9において実行される例示的な動作を示す図である。
【
図10C】
図9において実行される例示的な動作を示す図である。
【
図10D】
図9において実行される例示的な動作を示す図である。
【
図10E】
図9において実行される例示的な動作を示す図である。
【
図12】IC内に回路を実装する例示的な方法を示す図である。
【
図13】ICのための例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【0012】
詳細な説明
本開示は、新規な特徴を規定する特許請求の範囲で締めくくられているが、本開示内に説明されるさまざまな特徴が、添付の図面と併せて当該説明を考慮することでより良く理解されるであろうと考えられる。本明細書中に記載されるプロセス、マシン、製造およびそれらのいずれかの変形例が例示を目的として提供される。本開示内に記載される具体的な構造上および機能上の詳細は、限定するものとして解釈されるべきではなく、単に特許請求の範囲の基礎として、および実質的に適切に詳述されたいずれかの構造において記載される特徴をさまざまに採用するように当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本開示内で用いられる用語および表現は、限定することを意図したものではなく、記載される特徴を理解できるように説明することを意図したものである。
【0013】
本開示は、集積回路(IC)に関し、より特定的には、プログラマブルICの部分的再構成に関する。本開示内に記載される本発明の構成に従うと、プログラマブルIC(本明細書中では「ターゲットIC」とも称される)は、部分的再構成によって内部でさまざまな回路および/またはシステムを実装している間、外部システムとの通信リンクを維持することができる。プログラマブルICのスタティック領域は、外部システムと通信するための回路を実装するために用いられる。スタティック領域は、ハードウェアアクセラレーテッドユーザアプリケーションおよび/またはユーザ指定回路(本明細書では「カーネル」と称される)をサポートする。カーネルは、プログラマブルICのうち、スタティック領域と通信する部分的再構成(PR)領域内に実装される。
【0014】
場合によっては、PR領域は、スタティック領域と密接に関連付けられており、サイズおよび境界が固定されている。しかしながら、PR領域のこのような固定された性質は、データセンタ内で用いられるような特定のアプリケーションにしばしば必要とされるような高速での再構成を制限してしまう。PR領域の固定された性質はまた、1セットのカーネルが連続的に計算している間、別のセットのカーネルをターゲットIC内に新たに実装して次のセットの動作に備えるという、細粒度の並列性を妨害してしまう。
【0015】
本開示内に記載される本発明の構成はこれらの問題などに対処する。たとえば、本開示内に記載される本発明の構成は、ファンクション・アズ・ア・サービス(Function as a Service:FaaS)ユーザがハードウェアアクセラレーションプラットフォーム設計を必要に応じてカスタマイズすることを可能にする。ユーザは、本明細書中に記載される実施形態を用いて、デフォルトの単一の計算領域を、ユーザの特定アプリケーションのためにターゲットとされて最適化される複数の計算領域を有するフルカスタムのプラットフォーム設計にカスタマイズすることができる。一般に、FaaSは、クラウドコンピューティングサービスのカテゴリであって、通常、アプリケーションの開発および立上げに付随するインフラストラクチャの構築および維持を複雑にすることなく、顧客がアプリケーション機能を開発、実行および管理することを可能にするプラットフォームを提供する。
【0016】
加えて、本明細書中に記載される例示的な実施形態は、部分的構成ビットストリーム(以下、「部分的ビットストリーム」)の数を「N choose M」個の部分的ビットストリームから「N×M」個の部分的ビットストリームにまで減らすことができる。ここで、NはPR領域の数であり、Mは所与のPR領域において実装され得るランタイム関数の数である。
【0017】
1つ以上の実施形態においては、PRコンテナ領域はターゲットIC上に設けられる。PRコンテナ領域は、スタティック領域に結合(たとえば通信可能にリンク)され得る。PRコンテナ領域は、階層的にネストされた複数のPR領域および/またはPRコンテナ領域を含み得る。さらに、PRコンテナ領域内のPR領域の1つ以上がPRコンテナ領域に変換されてもよく、この場合、各々のPRコンテナ領域はさらなる複数のPR領域を含み得る。このような態様で、PR領域がPRコンテナ領域内において階層的にネストされ得る。これにより、ユーザが、ターゲットIC内でPR領域の階層を任意の深さにまで形成することが可能となる。
【0018】
1つ以上の他の実施形態においては、PRコンテナ領域内の複数のPR領域の複数の境界は、或る異なるPRコンテナ領域をプログラマブルIC内にロードすることによって変更され得る。各々の異なるPRコンテナ領域は、異なる数のPR領域および/または内部に含まれる複数のPR領域のための複数の異なる境界を含み得る。さらに、複数の異なるPRコンテナ領域がターゲットIC内に実装されているので、スタティック領域は、外部システムとの通信リンクを維持することができる。
【0019】
特定の実施形態においては、或るPRコンテナ領域内の複数のPR領域は、互いに接触しないかまたは互いに交差しない。複数のPR領域同士の重なり合いおよび/または接触がないことで、或るPRコンテナ領域のうち1つのPR領域以外の他の任意のPR領域およびスタティック回路が途切れることなく動作し続けている間、当該PRコンテナ領域内の当該1つのPR領域の部分的再構成が可能となる。その結果、一部のカーネルは、他の別のカーネルがターゲットIC内で実装されている間、動作し続けることができるので、ターゲットICのデータスループットが増加する。
【0020】
従来の部分的再構成方式では、本明細書中に記載される例示的な実施形態によって提供されるようなPR領域における粒度の上昇は不可能である。これにより、部分的再構成が、必要とするよりも(たとえば、より少ないPR領域およびより大きなPR領域を用いて)ターゲットICにわたってより広範に実行されるといった状況が生じる。その結果、ターゲットIC内に新しいカーネルおよび/または異なるカーネルおよび/または計算ユニットを実装するために、多くのカーネルまたは計算ユニットを一時的に減少させてもよく、これにより、部分的再構成動作中にデータスループットを減少させるかまたは場合によってはターゲットICのデータスループットを一時的に停止させてもよい。
【0021】
本発明の構成のさらなる局面が、添付の図面を参照して以下においてより詳細に説明される。例示を簡潔および明瞭にするために、図に示される要素は必ずしも縮尺どおりに描かれていない。たとえば、いくつかの要素の寸法は、明確にするために他の要素と比べて強調されている場合がある。さらに、対応する特徴、類似の特徴または同様の特徴を示すために、適切とみなされる場合、参照番号が複数の図中で繰返し用いられる。
【0022】
図1は、本明細書中に記載される1つ以上の実施形態と共に用いるための例示的なシステム100を示す。システム100は、コンピュータ、サーバ、ラップトップもしくはタブレットコンピュータなどのポータブルコンピュータ、または他のデータ処理システムを実装するために用いられ得るコンピュータハードウェアの例である。コンピュータハードウェアを用いて実装されるシステムまたはデバイスは、IC内で実装するための回路設計を処理することに関連する、本明細書中に記載されるさまざまな動作を実行することができる。
【0023】
図1の例においては、システム100は少なくとも1つのプロセッサ105を含む。プロセッサ105は、インターフェイス回路115を介してメモリ110に結合される。システム100は、コンピュータ読取り可能命令(「プログラムコード」とも称される)をメモリ110内に格納することができる。メモリ110は、コンピュータ読取り可能記憶媒体の一例である。プロセッサ105は、インターフェイス回路115を介してメモリ110からアクセスされるプログラムコードを実行することができる。
【0024】
メモリ110は、たとえば、ローカルメモリおよびバルクストレージデバイスなどの1つ以上の物理メモリデバイスを含み得る。ローカルメモリは、プログラムコードの実際の実行中に一般に用いられる非永続的メモリデバイスを指す。ローカルメモリの例として、ランダムアクセスメモリ(random access memory:RAM)および/またはプログラムコードの実行中にプロセッサが用いるのに適したさまざまなタイプのRAM(たとえば、ダイナミックRAMもしくは「DRAM(dynamic RAM)」またはスタティックRAMもしくは「SRAM(static RAM)」)のいずれかを含む。バルクストレージデバイスは永続的なデータストレージデバイスを指している。バルクストレージデバイスの例として、ハードディスクドライブ(hard disk drive:HDD)、ソリッドステートドライブ(solid-state drive:SSD)、フラッシュメモリ、読取り専用メモリ(read-only memory:ROM)、消去可能なプログラマブル読取り専用メモリ(erasable programmable read-only memory:EPROM)、電気的に消去可能なプログラマブル読取り専用メモリ(electrically erasable programmable read-only memory:EEPROM)、または他の好適なメモリを含むが、これらに限定されない。システム100はまた、実行中にバルクストレージデバイスからプログラムコードを抽出しなければならない回数を減らすために、少なくともいくつかのプログラムコードを一時的に格納する1つ以上のキャッシュメモリ(図示せず)を含み得る。
【0025】
メモリ110は、プログラムコードおよび/またはデータを格納することができる。説明を目的として、メモリ110は、オペレーティングシステム125、1つ以上のアプリケーション130および回路設計135を格納する。1つ以上の実施形態においては、アプリケーション130は、電子設計自動化(electronic design automation:EDA)アプリケーションを含む。EDAアプリケーションは、設計フロー(たとえば、合成、配置、ルーティングおよび/またはビットストリーム生成)の1つ以上の動作と、ターゲットIC内の回路設計135の実装および部分的再構成に関する本明細書中に記載されるさまざまな動作とを実行することができる。ターゲットICは、
図13に関連付けて説明されるアーキテクチャと同じアーキテクチャまたは同様のアーキテクチャを有してもよい。
【0026】
システム100(たとえばプロセッサ105)は、本開示内で説明される動作を実行するためにオペレーティングシステム125およびアプリケーション130を実行することができる。このため、オペレーティングシステム125およびアプリケーション130は、システム100の一体化部分とみなされてもよい。さらに、システム100(たとえば、プロセッサ105)によって使用、生成および/または操作される任意のデータが、システムの一部として用いられるときに機能を付与する機能的データ構造であることが認識されるはずである。
【0027】
インターフェイス回路115の例は、システムバスおよび入出力(input/output:I/O)バスを含むが、これらに限定されない。インターフェイス回路115は、さまざまなバスアーキテクチャのいずれかを用いて実装され得る。バスアーキテクチャの例は、拡張業界規格アーキテクチャ(Enhanced Industry Standard Architecture:EISA)バス、アクセラレーテッドグラフィックスポート(Accelerated Graphics Port:AGP)、ビデオエレクトロニクス規格協会(Video Electronics Standards Association:VESA)ローカルバス、ユニバーサルシリアルバス(Universal Serial Bus:USB)および周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express:PCIe)バスを含み得るが、これらに限定されない。
【0028】
システム100はさらに、インターフェイス回路115に結合される1つ以上のI/Oデバイス120を含み得る。I/Oデバイス120は、システム100(たとえばインターフェイス回路115)に直接、または介在するI/Oコントローラを介して、結合され得る。I/Oデバイス120の例は、キーボード、ディスプレイデバイス、ポインティングデバイス、1つ以上の通信ポートおよびネットワークアダプタを含むが、これらに限定されない。ネットワークアダプタは、システム100を、介在するプライベートネットワークまたはパブリックネットワークを通じて他のシステム、コンピュータシステム、遠隔プリンタおよび/または遠隔ストレージデバイスに結合することを可能にする回路を指す。モデム、ケーブルモデム、イーサネット(登録商標)カードおよび無線トランシーバは、システム100とともに用いられ得るさまざまなタイプのネットワークアダプタの例である。
【0029】
システム100は、実装される特定のタイプのデバイスおよび/またはシステムに応じて、
図1に示されるよりも少ない構成要素または
図1に示されていない追加の構成要素を含み得る。加えて、含まれる特定のオペレーティングシステム、アプリケーションおよび/またはI/Oデバイスは、システムタイプに基づいてさまざまであり得る。さらに、例示的な構成要素のうちの1つ以上が別の構成要素に組込まれてもよく、またはそうでない場合には、別の構成要素の一部分を形成してもよい。たとえば、プロセッサは少なくともいくつかのメモリを含み得る。システム100は、それぞれが
図1のアーキテクチャまたはそれに類似するアーキテクチャを用いて実装されるネットワーク化もしくは相互接続された複数のコンピュータまたは単一のコンピュータを実装するために用いられてもよい。
【0030】
1つ以上の実施形態においては、システム100は開発システム(たとえば、EDAシステム)を表しており、当該開発システムは、回路設計135を処理して、スタティック領域、1つ以上の異なるPRコンテナ領域およびPRコンテナ領域内の1つ以上のPR領域を実装するための部分的ビットストリームを実装することができる。スタティック領域は、通信リンクを介してターゲットIC外のシステムと通信することができる通信回路をターゲットIC内に実装する。たとえば、スタティック領域は、ホストシステムと通信することができるPCIeエンドポイントを実装していてもよい。PRコンテナ領域はスタティック領域に結合される。PRコンテナ領域は、ユーザアプリケーション(たとえば、ハードウェアアクセラレーテッドユーザアプリケーション)および/または回路設計のうちのユーザ指定部分を参照して、カーネルによって用いられるインフラストラクチャ回路を実装することができる。カーネルは、PRコンテナ領域内に含まれる1つ以上のPR領域内に実装されてもよい。システム100は、結果として得られる回路設計を、ターゲットIC内の部分的ビットストリームとして実装し得る。プログラマブルIC140はターゲットICの一例である。
【0031】
1つ以上の他の実施形態においては、システム100は、プログラマブルIC140がインターフェイス回路115に結合されてハードウェアアクセラレータとして動作するランタイムシステム(たとえばホストシステム)を表している。プログラマブルIC140は、たとえば、動作中にプログラマブルIC140によって使用可能な追加のメモリ(たとえば、RAM(図示せず))を含む回路基板上に搭載されてもよい。この場合、プログラマブルIC140は、プロセッサ105(たとえば、ホストプロセッサ)によって部分的ビットストリームをロードして、時間の経過に応じてその内部に異なる回路を実装してもよい。プロセッサ105は、たとえば、時間の経過に応じてプログラマブルICにロードされる特定の部分的ビットストリームと、時間の経過に応じてプログラマブルIC140内に実装されるカーネルへの特定のタスクのオフロードとを制御するアプリケーションを実行してもよい。プログラマブルIC140は、任意の結果をプロセッサ105に返してもよい。
【0032】
システム100は、たとえば、FaaSユーザが必要に応じてハードウェアアクセラレーションプラットフォーム設計をカスタマイズすることを可能にする。ユーザは、システム100を用いて、デフォルトの単一の計算領域を、ユーザの特定のアプリケーションのためにターゲットとされて最適化される複数の計算領域を有するフルカスタムのプラットフォーム設計にカスタマイズすることができる。加えて、本明細書中に記載される本発明の構成は、部分的再構成を伴う設計のために、部分的ビットストリームの数を「N choose M」個の部分的ビットストリームから「N×M」個の部分的ビットストリームにまで減らすことができる。生成する必要がある部分的ビットストリームの数を減らすことによって、本開示内で説明される本発明の構成はシステムの動作を向上させる。各々の部分的ビットストリームを生成するのに典型的に数時間の計算時間が必要となるので、システムのランタイムが大幅に低減され得る。階層型部分的再構成を実装するために本明細書中に記載されるように回路設計上で動作させることにより、必要とされる部分的ビットストリームがより少なくなり、これによりシステムの動作が向上する。
【0033】
図2は、プログラマブルIC(IC)200の一例を示す。IC200は、
図1のプログラマブルIC140の実装例である。本開示内において、「領域」という語は、ターゲットICの物理的部分または物理的区域を指すために用いられる。概して、本明細書中に記載される領域は、回路設計の特定のモジュールおよび/またはコンテナに対応する。「PRコンテナ」は、1つ以上のPRモジュールおよび1つ以上のPRコンテナを保持するかまたは含むことができる回路設計の論理構造を指す。「PRコンテナ領域」は、PRコンテナに対応するターゲットIC上の領域を指す。したがって、PRコンテナ領域は、回路設計のPRモジュールのそれぞれに対応している複数のPR領域を含み得る。しかしながら、PR領域は別のPR領域を含まない場合がある。同様に、PRモジュールは、他のいずれのPRモジュールも含まない場合がある。
【0034】
図2の例においては、IC200は、スタティック領域205およびPRコンテナ領域210を含む。スタティック領域205およびPRコンテナ領域210はともに、IC200のプログラマブル回路を用いて実装される。PRコンテナ領域210は、ユーザ定義された複数のPR領域215および220を含む。図示のとおり、PR領域215および220は、PRコンテナ領域210内で階層的に順序付けられている。たとえば、PR領域215および220は、PRコンテナ領域210内に完全に収容されている。
【0035】
図2はまた、図示される複数の異なる領域を実装するためにIC200にロードされ得る複数の部分的ビットストリームを示す。たとえば、部分的ビットストリーム230は、スタティック領域205内で回路を実装するためにIC200にロードされてもよい。部分的ビットストリーム235は、PRコンテナ領域210内で回路を実装するためにIC200にロードされてもよい。
【0036】
PR領域215は、PR領域215内に異なる回路をもたらすこととなる複数の異なるユーザアプリケーションを実装することができる。
図2の例においては、PR領域215は、部分的ビットストリーム240をロードすることによってアプリケーションAに対応する回路を実装し得るか、または部分的ビットストリーム245をロードすることによってアプリケーションBに対応する回路を実装し得る。PR領域220は、部分的ビットストリーム250をロードすることによってアプリケーションCに対応する回路を実装し得るか、または部分的ビットストリーム255をロードすることによってアプリケーションDに対応する回路を実装し得る。
【0037】
図示のとおり、PR領域215は、PR領域220とは重なり合わないかまたは接触しない。これにより、PR領域215をPR領域220とは別個に部分的に再構成することが可能となる。たとえば、PR領域215がアプリケーションAに対応する回路を実装し得る一方で、PR領域220はアプリケーションCに対応する回路を実装する。PR領域215は、部分的ビットストリーム245をロードすることによってアプリケーションBに対応する回路を実装するように再構成され得る一方で、PR領域220は、アプリケーションCを中断させずに実行し続ける(アプリケーションCに対応する回路を中断させずに動作させる)。同様に、PRコンテナ領域210のうちPR領域215外の領域は、スタティック領域205の場合と同様に途切れることなく動作し続けてもよい。
【0038】
いずれの時点においても、ホストシステム(たとえばプロセッサ105)は、或る異なるPRコンテナ領域を実装するIC200内に異なる部分的ビットストリームをロードすることができる。この異なるPRコンテナ領域は、
図2に示されるものとは異なる数のPR領域、および/または、複数の異なる境界を有する同じ数のPR領域を含んでいてもよく、これにより、異なる形状および大きさのPR領域が可能となる。
【0039】
説明を目的として、PR領域215および/またはPR領域220はPRコンテナ領域に変換され得る。この場合、1つ以上のPR領域が、変換されたPRコンテナ領域において実装され得る。このプロセスは、IC200内に部分的再構成階層を作成するために、新たに作成されたPR領域上で反復的に実行する(たとえば、PRコンテナ領域に変換する)ことができる。
【0040】
図3は、IC200の別の例を示す。
図3の例においては、新しい部分的ビットストリームが、或る異なるPRコンテナ領域310を実装するIC200にロードされる。PRコンテナ領域310は、4つのPR領域315、320、325および330を含む。PR領域315、320、325および330の各々は、IC200内に複数の異なる部分的ビットストリームをロードすることによって、1つ以上の異なるアプリケーションを実装することができる。
図3は、複数のPR領域境界および/またはPR領域の数がIC内でどのように変更され得るかについての例を示す。
【0041】
図4は、階層型部分的再構成の例示的な方法400を示す。方法400は、
図1に関連付けて説明したシステム100と同じまたは同様のシステムによって実行されてもよい。方法400は、階層型部分的再構成を実装するために回路設計のPRモジュールを細分化する例を示す。例示を目的として、方法400はまた、回路設計時に実行される動作を視覚的に例示している
図5A~5Gを参照して説明される。
【0042】
ブロック405において、システムは、実装された回路設計をロードすることができる。実装された回路設計は、配置およびルーティングされる回路設計である。当該回路設計は、
図5Aに示されるように、スタティックモジュール505およびPRモジュール510を含む。スタティックモジュール505およびPRモジュール510が配置およびルーティングされる。
【0043】
ブロック410において、システムは、
図5Bに示されるように、PRモジュール510の内容を除去することができる。
図5Bの例においては、PRモジュール510の陰影部分は、システムがPRモジュール510の内容を除去したことを示す。この点に関して、PRモジュール510は「ブラックボックス」であると言われており、これは空のモジュールであって、たとえば、「部分的再構成」および「モジュール」属性を含むが内容を含まない回路設計の論理モジュールである。
【0044】
ブロック415において、システムは、PRモジュール510をPRコンテナモジュール515に変換することができる。たとえば、システムは、PRモジュール510の「モジュール」属性を「コンテナ」に変更する。
【0045】
ブロック420において、システムは、ネットリストをPRコンテナ515にロードすることができる。
図5Bは、PRコンテナ515内に含まれているネットリスト545を示す。PRコンテナ515にロードされるネットリスト(たとえばネットリスト545)は2つ以上のPRモジュール520および525を含んでおり、
図5Cに示されている。PRモジュール520および525の各々は空であってもよい。
【0046】
ブロック425において、システムは、PPLOCをPRコンテナ515からPRモジュール520および525のうちの適切なモジュールの境界に再配置することができる。PPLOCの再配置は、
図7に関連付けてより詳細に説明される。
【0047】
ブロック430において、システムは、PRモジュール520および525の各々についてのPRモジュールフロアプランを生成することができる。PRモジュールフロアプランは、各PRモジュールごとに位置制約を指定する。この点に関して、PRモジュール520についてのPRモジュールフロアプランは、ターゲットIC内のPRモジュール520の物理的境界を指定する。特に、PRモジュール520についてのPRモジュールフロアプランは、物理的境界が完全にPRコンテナ515の物理的境界内(たとえば、PRコンテナ515についてのフロアプランの境界内)にあることを指定している。PRモジュール510が最初に配置およびルーティングされているので、そのモジュールに対応する境界がブロック405においてロードされた元の回路設計から維持され得ることを理解されたい。このため、PRコンテナ515のフロアプランが利用可能となる(たとえば、同じである)。PRモジュール525についてのPRモジュールフロアプランは、PRモジュール525の境界が完全にPRコンテナ515の境界内にあることを指定している。さらに、PRモジュール520およびPRモジュール525の境界は互いに重なり合っていないか、またはそうでない場合、互いに接触しない。
【0048】
1つ以上の実施形態においては、ユーザは、PRモジュール520および525の各々の物理的境界を指定する1つ以上のユーザ入力を提供し得る。特定の実施形態においては、システムは、PRコンテナ515によってカバーされるターゲットICの領域を図表で表示してもよい。ユーザは、PRモジュール520および525の各々に対応するPRコンテナ515内の所望の寸法および位置を有する矩形を描き得る。システムは、ユーザ指定入力を、PRモジュール520および525のそれぞれについてのPRモジュールフロアプランとして用いてもよい。
【0049】
ブロック435において、システムは、PRモジュール520および525の各々内にネットリストを含めることができる。
図5Cは、ネットリスト550がPR領域520に含まれており、ネットリスト555がPR領域525に含まれていることを示す。ユーザは、たとえば、PRモジュール520内に含まれるべきネットリストと、PRモジュール525内に含まれるべきネットリストとを指定してもよい。システムは、PRモジュール520および525の各々内にユーザ指定ネットリストを含める。
【0050】
ブロック440において、システムはPRコンテナ515を実装することができる。そうすることにより、システムは、それぞれのPRモジュールフロアプランに基づいて、PRモジュール520および525の各々とそれらに含まれるそれぞれのネットリストとを含むPRコンテナ515を実装することができる。たとえば、システムは、PRコンテナ515についてのフロアプランを用いて、PRコンテナ515に対応する回路を配置およびルーティングすることができる。また、システムは、各々のPRモジュールごとに開発されたPRモジュールフロアプランに基づいて、PRモジュール520(たとえば、ネットリスト550)および525(たとえば、ネットリスト555)の各々を配置およびルーティングすることもできる。
図5Dは、PRモジュール520および525を含むPRコンテナ515が完全に配置およびルーティングされている例を示す。
【0051】
1つ以上の実施形態においては、システムは、PRコンテナのための部分的ビットストリーム、PRモジュール520のための部分的ビットストリームおよびPRモジュール525のための部分的ビットストリームを出力し得る。ブロック405における回路設計が実装されていたので、スタティックモジュール505のための部分的なビットストリームが最初に利用可能となり得る。
【0052】
PRモジュール520および525に対応するターゲットIC上のPR領域内で実装されるべき複数の異なるアプリケーションのためのさらなる部分的ビットストリームを生成するために、
図5Cにおける回路設計の状態がその後の使用のために格納され得る。当該方法は、この時点から、複数の異なるネットリストをPRモジュール520および/またはPRモジュール525に挿入し、さらに、新しいネットリストおよび/または異なるネットリストを用いてPRモジュール520および525の各々を実装して、アプリケーションごとにさらなる部分的ビットストリームを生成することによって繰り返されてもよい。
【0053】
図5E~
図5Gは、PRモジュールをさらに細分化するために実行され得る追加のプロセスステップを示す。たとえば、方法400に関連付けて説明される動作は、さらなるPRモジュールをさらなるPRコンテナ内で任意の深さにまで作成するように反復的に実行されてもよい。
図5E~
図5Gの例においては、PRモジュール525は、さらなるPRモジュール535および540を含むPRコンテナ530に変換される。
【0054】
図5Eの例を参照すると、システムは、PRモジュール525の内容を除去することによってPRコンテナ530を生成し、PRモジュール525のパラメータを「コンテナ」のパラメータに変更し、
図5Fに示されるように、複数のPRモジュール535および540を含む内部のネットリスト560をPRコンテナ530にロードすることができる。PRモジュール535および540の各々は空であってもよい。
図5Eの例においては、PRモジュール525の陰影部分は、システムがPRモジュール525の内容を除去したことを示している。この点に関して、PRモジュール525はブラックボックスであると言われている。
図5Fの例においては、ネットリスト560は、このときPRコンテナ530であるものに含まれている。システムは、ネットリスト565をPRモジュール535に含め得るとともに、ネットリスト570をPRモジュール540に含め得る。次いで、システムは、PRコンテナ530を実装(たとえば、配置およびルーティング)し得る。次いで、システムは、
図5Gに示されるように、PRモジュール535および540を含むPRコンテナ530を実装し得る。
【0055】
上述したように、PRコンテナおよびPRモジュールの階層は、任意の深さにまで続いていてもよい。さらに、いずれかの所与のPRコンテナに含まれるPRモジュールの数は3以上であってもよい。ユーザは、たとえば、EDAシステムを用いて説明される動作を開始して、任意のPRモジュールを、複数のPRモジュールを含むことができるPRコンテナに変換し、所望のレベルの部分的再構成階層に至るまでプロセスを繰り返してもよい。
【0056】
図6は、
図5Gの回路設計を実装する例示的なIC600を示す。
図5A~
図5Gは、回路設計の状態の論理図を示すとともにターゲットICに対する物理的関係の図示を試みている。
図6は、
図5Gに示される配置およびルーティングされた回路設計からIC600に実装される物理領域を示す。図示のとおり、IC600は、スタティックモジュール505に対応するスタティック領域605を含む。上述したように、スタティック領域605は、通信バスを介してホストプロセッサなどの外部システムとの通信リンクを維持することができる通信回路を実装し得る。IC600はまた、PRコンテナ領域615を含む。概して、PRコンテナ領域615は、IC600上においてPRコンテナ515を実装する物理領域を示す。
【0057】
PRコンテナ領域615は、PR領域620およびPRコンテナ領域630を含む。PR領域620は、IC600上においてPRモジュール520を実装する物理領域を示す。PRコンテナ領域630は、IC600上においてPRコンテナ530を実装する物理領域を示す。PRコンテナ領域630は、PR領域635およびPR領域640を含む。PR領域635および640は、それぞれ、IC上においてPRモジュール535および540を実装する物理領域である。
【0058】
図6の例においては、PR領域620、635および/または640のいずれか1つの領域内に異なる回路を実装するために、動作中にいつでも、複数の異なる部分的ビットストリームがIC600にロードされてもよい。PR領域620、635および/または640の各々は、ホストシステムの制御下で他の領域から独立して再構成され得る。別の例においては、PR領域620およびPRコンテナ領域615が途切れることなく動作し続けている間、いつでも、PR領域630の全く新しい実装がIC600内で実現され得る。PR領域630の新しい実装例は、PR領域635および640について示されるものとは異なる境界のPR領域、および/または、PRコンテナ領域630について示されるものとは全く異なる数のPR領域を含み得る。さらに別の例においては、
図6に示されるものとは全く異なるアーキテクチャを有する全く新しいバージョンのPRコンテナ領域615が実装され得る。
【0059】
図6の例は、複数の異なるPR領域間の独立性を示すとともに、1つ以上のPR領域が複数の異なるカーネルを実装するように動的に再構成され得る一方で、他のPR領域のカーネルが途切れることなくIC600内で動作し続けることを示すことを意図している。これにより、他のカーネルがIC600内の回路に実装されて複数の異なるタスクを実行している間、選択されたカーネルが動作し続けている状態で、IC600のデータスループットを高いまま維持することが可能となる。
図6の例はさらに、ユーザが必要に応じてアプリケーションレベルで、異なるPR領域間の境界を制御および変更できることを示している。概して、ユーザアプリケーションは、所与のアプリケーションのために必要とされるPRコンテナ領域およびPR領域の任意の階層を、当該階層がIC600のうちスタティック領域605内に含まれない利用可能部分内に実装され得る限り、作成し得る。
【0060】
図7はPPLOC処理の例を示す。PPLOCは、パーティションピンがロックされて移動され得ないことを示すパラメータを有するパーティションピンを示している。パーティションピンは、スタティックモジュール(スタティック領域)とPRモジュール(PR領域)との間、またはPRモジュール(PR領域)間の信号交差を規定する。PPLOC処理は、
図4のブロック425に関連付けて説明されるように再構成モジュールの作成の一環として実行されてもよい。
【0061】
図7は、PPLOCが回路設計におけるパーティション(たとえば、モジュール境界)に関してどのように処理されるかを示す。説明を目的として、PRコンテナ515およびPRモジュール525についてのみPPLOCが示されている。さらに、PRモジュール520に接続するネットのためのPPLOCが存在してもよく、これらPPLOCは図示されていないが、同じ方法または同様の方法で処理され得る。
【0062】
概して、システムは、PRコンテナ515の境界を横断する接続を2つの異なるカテゴリに分類する。第1のカテゴリは、PPLOCパラメータを有さない接続を含む。第2のカテゴリは、PPLOCパラメータを有する接続を含む。
図7の例においては、セルA(たとえば、回路ブロック)はセルGに接続する。セルBはセルHおよびPRモジュール525に接続する。セルCはPRモジュール525に接続する。接続A-G、B-HおよびC-PRモジュール525は接続の第1のカテゴリに属する。第1のカテゴリ内の接続については、システムは何のアクションも実行しない。
【0063】
第2のカテゴリ内の接続のために、システムはPPLOCを選択的に再配置する。PPLOCを再配置するとは、パーティションピンから「ロック」属性を除去し、当該「ロック」属性を別の異なるパーティションピンに追加することを指している。セルDに関する接続の場合、システムは、PPLOC P1をPRコンテナ515の境界上のパーティションピンからPR領域525の境界上のパーティションピンに再配置する。システムはPPLOC P1を再配置する。なぜなら、セルD(1)がPRコンテナ525の境界上に位置するPPLOCを有しているが、PRコンテナ515内のうちPRモジュール520および525の外にある他のいずれのセルにも接続されていないからである。
【0064】
セルEおよびセルIに関する接続については、システムは、PRコンテナ525の境界上に位置しているにもかかわらずPPLOC P2を移動させない。なぜなら、E-I接続がPRモジュール525またはPRモジュール520を含んでいないからである。接続F-Jについては、システムは、PRコンテナ515の境界上に位置しているにもかかわらずPPLOC P3を移動させない。なぜなら、セルJがPRモジュール520またはPRモジュール525に直接接続されていないからである。PRモジュール525への接続は、PPLOC P3の後で行われ、PRコンテナ515内にある。
【0065】
図8は、配置およびルーティングのための例示的な技術を示す。
図8に示す技術は、
図4のブロック440の一部としてPRコンテナ515を実装する際に用いられ得る。
図8の例においては、PRコンテナ領域810は、PR領域820およびPR領域830を含む。PRコンテナ領域810に対応するPRコンテナの回路素子を配置する際、システムは、PRコンテナ領域810についてのフロアプランに従って、PRコンテナ領域810内のうちPR領域820および825を除くいずれかの場所にこのような回路素子を配置するように制限されている。PRコンテナ領域810内のセルのための接続をルーティングする際、システムは、拡張領域805によって表される拡張区域を用いることが可能となる。各々の拡張区域は、拡張されている基礎の区域(たとえば、この例においてはPRコンテナ領域810)から所定の距離だけ延在していてもよい。
【0066】
円で囲まれた1でラベル付けされた接続の各々は、拡張領域805内に位置するワイヤのみを用いてルーティングされなければならない接続である。このため、セルEとセルFとの間の接続、セルGとPR領域830との間の接続、PR領域830とセルDとの間の接続、およびセルAとPPLOC P2との間の接続をルーティングする際、システムは、拡張領域805に含まれるルーティングリソース(たとえば、ワイヤ)のみを用いるように制約されている。
【0067】
同様に、PR領域820および830に対応するPRモジュールの複数の回路素子を配置する際、システムは、各PR領域のPRモジュールフロアプランに基づいて、当該複数の回路素子をそれぞれPR領域820および830内に配置するように制約されている。PR領域820内に位置するセル間のいずれの接続についても、システムは、拡張領域815内に位置するそれらのルーティングリソースのみを用いるように制約されている。PR領域830内に位置するセル間のいずれの接続についても、システムは、拡張領域825内に位置するそれらのルーティングリソースのみを用いるように制約されている。
【0068】
説明したように、設計者であれば、本明細書中に記載される例示的な実施形態を用いて、所望され得るようにPRコンテナ領域およびPR領域の階層を作成することができる。これにより、新しいカーネルおよび/または異なるカーネルを特定のPR領域において実装することが可能となり、この間、他のPR領域において実装されるカーネルを中断させずに動作させ続けることができる。これは、任意の所望のレベルの粒度で実行され得る。設計者が1つ以上のレベルの部分的再構成階層をもはや必要としなくなった場合、回路設計内の階層のレベルを減らすようにPR領域が再結合されてもよい。
【0069】
図9は、階層型部分的再構成の別の例示的な方法900を示す。より特定的には、
図4が追加の階層の作成を示す一方で、方法900は、回路設計内の部分的再構成階層の量を減らすことに向けられている。方法900は、
図1に関連付けて説明されるシステム100と同じかまたは同様のシステムによって実行され得る。方法900は、回路設計のPRモジュールを再結合し、これにより、用いられる階層型部分的再構成の量を減らす例を示す。例示を目的として、方法900はまた、回路設計に際して実行される動作を視覚的に説明する
図10A~
図10Eを参照して説明される。
【0070】
ブロック905において、システムは、実装された回路設計をロードすることができる。実装された回路設計は、配置およびルーティングされるとともに部分的再構成階層を含むものである。
図10Aに示されるように、回路設計は、スタティックモジュール505、PRコンテナ515、PRモジュール520、PRコンテナ530、ならびにPRモジュール535および540を含む。例示を目的として、
図10Aに示される回路設計は、
図5Gに関連付けて初めに記載された回路設計である。記載されるモジュールおよびコンテナの各々が配置およびルーティングされる。
【0071】
ブロック910において、システムは、PPLOC処理を実行することができる。ブロック910において、システムは、選択されたPPLOCをPRコンテナ530から除去し、他の選択されたPPLOCをPRモジュールの境界からPRコンテナ530の境界に移動させることができる。部分的再構成階層の複数のレベルを再結合するためのPPLOC処理を、
図11に関連付けてより詳細に説明する。
【0072】
ブロック915において、システムは、PRコンテナ530をPRモジュール525に変換することができる。たとえば、システムは、PRコンテナ530に関連する属性を「コンテナ」から「モジュール」に変更する。PRコンテナ530からPRモジュール525への変換は、
図10Bに少なくとも部分的に例示されている。ブロック920において、システムは、PRモジュール525の内容を除去することができる。内容が除去されると、PRモジュール525がブラックボックスになる。
図10Bの陰影部分は、PRモジュール525のブラックボックスの性質を示す。
【0073】
ブロック925において、システムは、ネットリストをPRモジュール525にロードすることができる。システムは、
図10Bに示されるように、ネットリスト1005をPRモジュール525にロードし得る。PRモジュール525にロードされるネットリスト(たとえばネットリスト1005)は、標準ネットリストであってよく、いずれのPRモジュールも含まない。
【0074】
ブロック930において、システムはPRモジュール525を実装することができる。システムは、たとえば、PRモジュール525に含まれるネットリストを配置およびルーティングすることができる。
図4に関連付けて説明した部分的再構成階層の先の生成からPRモジュール525についてのフロアプランが格納されてもよい。PRモジュール525についてのフロアプランは、そこにロードされたネットリスト1005を実装する際に用いられ得る。
図10Cは、PRモジュール525が配置およびルーティングされる例を示す。システムは、PRモジュール525のための部分的ビットストリームを生成および出力し得る。さらに、システムは、複数の異なるネットリストをブラックボックスバージョンのPRモジュール525にロードし、次いで、記載されるようなネットリストを実装することによって、他のアプリケーションのためのさらなる部分的ビットストリームを生成し得る。
【0075】
図9の例においては、PRコンテナ530が処理のために選択されていた。
図10に示すレベルよりも多くのレベルを有する部分的再構成階層が処理されてもよく、
図9に関連付けて説明するように、処理すべき階層内の任意の再構成コンテナがユーザによって選択され得ることを理解されたい。当該処理は、PRコンテナのPRモジュールを実質的に排除し、PRコンテナをPRモジュールに変換する。
【0076】
例示を目的として、
図10Dおよび
図10Eは、PRコンテナ515が処理され得るさらなる処理を示す。
図10Dの例においては、システムはPPLOC処理を実行し得る。システムはさらに、PRコンテナ515のブラックボックス実装を残して、PRコンテナ515の内容を除去し得る。次いで、システムは、PRコンテナ515のパラメータを「コンテナ」から「モジュール」に変更し、これによりPRコンテナ515をPRモジュール510に変換し得る。次いで、システムは、ネットリスト1010をブラックボックスバージョンのPRモジュール510に追加し得る。
【0077】
次いで、システムはPRモジュール510を実装し得る。このため、PRモジュール510が配置およびルーティングされる。さらに、システムは、PRモジュール510のための部分的ビットストリームを生成および/または出力し得る。PRモジュール510を実装する際、システムは、
図4に関連付けて説明したプロセス中に生成されるように、PRモジュール510についてのフロアプランを用いてもよい。
【0078】
上述したように、PRコンテナおよびPRモジュールの階層は任意の深さにまで続いていてもよい。ユーザは、階層内の選択された任意のPRコンテナからの部分的再構成階層のレベル数を減らすために再結合プロセスを実装し得る。たとえば、
図9を説明する際に例示の目的で、PRコンテナ530の代わりにPRコンテナ515が最初に選択されてもよい。
【0079】
図11は、PPLOC処理の別の例を示す。より特定的には、
図11は、部分的再構成階層のレベルを再結合するためのPPLOC処理を示す。
図11に示すPPLOC処理は、
図9のブロック910を実装するシステムによって実行され得る。例示を目的として、PRコンテナ530、PRモジュール535およびPRモジュール540のためのPPLOCが示されている。
【0080】
概して、システムは、PRコンテナ530の境界を横断するかまたはPRコンテナ530内にある複数の接続を2つの異なるカテゴリに分類する。第1のカテゴリは、PPLOCパラメータを有さない接続を含む。第2のカテゴリは、PPLOCパラメータを有する接続を含む。
図11の例においては、セルA(たとえば、回路ブロック)はセルGに接続する。セルBはセルHおよびPRモジュール535に接続する。セルCはPRモジュール535に接続する。接続A-G、B-HおよびC-PRモジュール535は、接続の第1のカテゴリに属する。第1のカテゴリ内の接続の場合、システムは何のアクションも実行しない。
【0081】
第2のカテゴリ内の接続の場合、システムはPPLOCを選択的に除去および/または再配置する。セルDに関する接続の場合、システムは、PPLOC P1を、PRモジュール535の境界上のパーティションピンからPRコンテナ530の境界上のパーティションピンへと再配置する。概して、システムは、PPLOCを、階層内の1レベル上の回路設計から除去されているPRモジュールから親PRコンテナへと再配置する。システムはPPLOC P1を再配置する。なぜなら、セルDがPRモジュール535の境界上に位置するPPLOCを有しているが、PRコンテナ530内のうちPRモジュール535および540外にある他のいずれのセルにも接続されていないからである。
【0082】
セルEおよびセルIに関する接続の場合、システムはPPLOC P2を移動させない。なぜなら、PPLOC P2がPRコンテナ530の境界上に既に位置しており、接続E-IがPRモジュール535またはPRモジュール540を含まないからである。接続F-Jの場合、システムはPPLOC P3を移動させない。なぜなら、PPLOC P3がPRコンテナ530の境界上に既に位置しており、セルJがPRモジュール535またはPRモジュール540に直接接続されていないからである。
【0083】
PPLOC P1に関して説明したように、回路設計から除去されているPRモジュールの境界上に位置するが移動されていないPPLOCの場合、システムはこのようなPPLOCを除去する。たとえば、システムは、PPLOC P6およびPPLOC P7を除去する。なぜなら、これらのPPLOCは、回路設計から除去されているPRモジュールの境界上に位置するとともに、回路設計から除去されている2つのPRモジュール間の接続内にあるからである。システムはまた、親PRコンテナ外に位置するセルに接続されていない、除去されているPRモジュールの境界上に位置するPPLOCを除去する。たとえば、システムはPPLOC P5を除去する。なぜなら、PPLOC P5がPRコンテナ530に位置するセルKへの接続内にあるからである。システムはまた、PPLOC P8を除去する。なぜなら、PPLOC P8がPRモジュール535の境界上にあり、接続の他端がPRコンテナ530の境界上の別のPPLOC P3に通じているからである。
【0084】
配置およびルーティングのために、システムは、
図8に関連付けて説明されるような配置およびルーティング技術を用いてもよい。たとえば、
図10Bおよび
図10Cを参照すると、ネットリスト1005を配置する際、システムは、PRモジュール525に対応するPR領域内にネットリスト1005のコンポーネントを配置してもよい。PRモジュール525をルーティングする際、システムは、PRモジュール525に対応するPR領域を越えて延在する領域内に位置するルーティングリソースを用いてもよい。同様に、システムは、PRモジュール510に対応するPR領域内にネットリスト1010のコンポーネントを配置してもよい。システムは、ネットリスト1010をルーティングする際、PRモジュール510に対応するPR領域を越えて延在する領域内に位置するルーティングリソースを用いてもよい。
【0085】
図12は、IC内に回路を実装する例示的な方法1200を示す。方法1200は、ターゲットIC内に階層型部分的再構成を実装するために、ホストシステム(たとえば、
図1のプロセッサ105)によって実行され得る。より具体的には、方法1200は、ランタイム中に本明細書で説明するように回路のうち複数の異なる領域を実装するためにハードウェアアクセラレータとしてターゲットICを用いるホストシステムによって実行されてもよい。
図12に関連付けて説明されるさまざまな領域の実装は、ホストシステムの制御下で内部に部分的ビットストリームをロードすることによって、ターゲットICの部分的再構成を用いて実行されてもよい。
【0086】
ブロック1205において、ホストシステムは、ターゲットICのスタティック領域内に第1の回路を実装することができる。第1の回路は、ターゲットICにロードされる第1の部分的ビットストリームによって指定され得る。ブロック1210において、ホストシステムは、ターゲットICのPRコンテナ領域内に第2の回路を実装することができる。第2の回路は、ターゲットICにロードされる第2の部分的ビットストリームによって指定され得る。
【0087】
ブロック1215において、ホストシステムは、PRコンテナ領域内に含まれる第1のPR領域内に第3の回路を実装するとともに、PRコンテナ領域内に含まれる第2のPR領域内に第4の回路を実装することができる。第3の回路は、ターゲットICにロードされる第3の部分的ビットストリームによって指定され得る。第4の回路は、ターゲットICにロードされる第4の部分的ビットストリームによって指定され得る。
【0088】
ホストシステムは、第1の回路、第2の回路および第4の回路が途切れることなく動作し続けている間、複数のPR領域のうち一方の領域または両方の領域内に異なる回路を実装するなどのさらなる動作を実行し得る。
【0089】
ホストシステムは、さらなる部分的なビットストリームをロードして、中に1つ以上の異なるPR領域を含む完全に異なるPRコンテナ領域をターゲットICにおいて実装してもよい。ホストは、或る異なる部分的ビットストリームをターゲットIC内にロードすることによって、それぞれのPR領域内に異なる回路を実装してもよい。
【0090】
図13は、ICのための例示的なアーキテクチャ1300を示す。一局面においては、アーキテクチャ1300はプログラマブルIC内に実装され得る。たとえば、アーキテクチャ1300は、フィールドプログラマブルゲートアレイ(FPGA)を実装するために用いられてもよい。アーキテクチャ1300はまた、システムオンチップ(system-on-chip:SOC)タイプのICの典型例でもあってもよい。SOCは、プログラムコードを実行するプロセッサと1つ以上の他の回路とを含むICである。他の回路は、ハードワイヤード回路、プログラマブル回路および/またはそれらの組み合わせとして実装されてもよい。これらの回路は、互いに協働して、および/またはプロセッサと協働して、動作し得る。
【0091】
図示のとおり、アーキテクチャ1300は、いくつかの異なる種類のプログラマブル回路(たとえば論理ブロック)を含む。たとえば、アーキテクチャ1300は、マルチギガビットトランシーバ(multi-gigabit transceiver:MGT)1301、構成可能な論理ブロック(CLB)1302、ランダムアクセスメモリブロック(random access memory block:BRAM)1303、入力/出力ブロック(IOB)1304、構成およびクロック論理(configuration and clocking logic:CONFIG/CLOCKS)1305、デジタル信号処理ブロック(DSP)1306、専用I/Oブロック1307(たとえば、構成ポートおよびクロックポート)、ならびに、他のプログラマブル論理1308、たとえばデジタルクロックマネージャ、アナログ-デジタル変換器、システム監視論理など、を含む多数のさまざまなプログラマブルタイルを含み得る。
【0092】
いくつかのICにおいては、各プログラマブルタイルはプログラマブル相互接続要素(interconnect element:INT)1311を含む。当該INT1311は、各々の隣接するタイルにおける対応するINT1311へ/からの標準的な接続を有する。したがって、INT1311は、ひとまとめにして、図示されるICのためのプログラマブル相互接続構造を実現する。
図13の上部に含まれる例によって示されるように、各々のINT1311は、同じタイル内のプログラマブル論理要素へ/からの接続も含む。
【0093】
たとえば、CLB1302は、ユーザ論理に加えて単一のINT1311を実現するようにプログラムされ得る構成可能な論理要素(configurable logic element:CLE)1312を含んでもよい。BRAM1303は、1つ以上のINT1311に加えて、BRAM論理要素(BRAM logic element:BRL)1313を含んでもよい。典型的には、1つのタイルに含まれるINT1311の数は、そのタイルの高さに左右される。図示されるように、BRAMタイルは、5個のCLBと同じ高さを有しているが、他の数(たとえば、4個)が用いられてもよい。DSPタイル1306は、適切な数のINT1311に加えて、DSP論理要素(DSP logic element:DSPL)1314を含んでもよい。IOB1304は、たとえば、INT1311の1つのインスタンスに加えて、I/O論理要素(IOL)1315の2つのインスタンスを含んでもよい。IOL1315に接続される実際のI/Oパッドは、IOL1315の区域に制限されない可能性もある。
【0094】
図13に示される例においては、ダイの中央付近の列状区域(たとえば、領域1305、1307および1308で形成される)は、構成、クロックおよび他の制御論理のために用いられてもよい。この列から延びる水平区域1309は、プログラマブルICの幅にわたってクロックおよび構成信号を分配するために用いられてもよい。
【0095】
図13に示されるアーキテクチャを利用するいくつかのICは、ICの大部分を構成する規則的な列構造を乱す追加の論理ブロックを含む。これらの追加の論理ブロックは、プログラマブルブロックおよび/または専用回路であってもよい。たとえば、PROC1310として示されるプロセッサブロックはCLBおよびBRAMのいくつかの列にわたっている。
【0096】
一局面においては、PROC1310は、ICのプログラマブル回路を実装するダイの一部として作製される専用回路(たとえばハードワイヤードプロセッサ)として実装されてもよい。PROC1310は、複雑さの点で、個々のプロセッサ(たとえば、プログラムコードを実行可能な単一のコア)から、1つ以上のコア、モジュール、コプロセッサ、インターフェイスなどを有するプロセッサシステム全体までの範囲にわたる多種多様なプロセッサタイプおよび/またはシステムのいずれかを表し得る。
【0097】
別の局面においては、PROC1310は、アーキテクチャ1300から省かれていてもよく、説明される他の多様なプログラマブルブロックのうちの1つ以上と置換えられてもよい。さらに、このようなブロックは、PROC1310の場合と同様にプログラムコードを実行することができるプロセッサを形成するのにプログラマブル回路のさまざまなブロックが用いられ得るという点から、「ソフトプロセッサ」を形成するために利用され得る。
【0098】
「プログラマブル回路」という語句は、IC内のプログラマブル回路要素(たとえば、本明細書中に記載されるさまざまなプログラマブルまたは構成可能な回路ブロックまたはタイル)、ならびにICにロードされる構成データに従ってさまざまな回路ブロック、タイルおよび/または要素を選択的に結合する相互接続回路を指している。たとえば、PROC1310外にある、
図13に示されるCLB1302およびBRAM1303などの回路ブロックはICのプログラマブル回路とみなされる。
【0099】
一般に、プログラマブル回路の機能は、構成データがICにロードされるまで確立されない。1セットの構成ビットを用いて、FPGAなどのICのプログラマブル回路をプログラムしてもよい。構成ビットは、通常、「構成ビットストリーム」と称される。一般に、プログラマブル回路は、最初にIC内に構成ビットストリームをロードしなければ動作または機能し得ない。構成ビットストリームは、プログラマブル回路内で特定の回路設計を実質的に実装する。回路設計は、たとえば、プログラマブル回路ブロックの機能的局面およびさまざまなプログラマブル回路ブロック間の物理的接続性を指定する。
【0100】
「ハードワイヤード」または「ハード化」された回路、すなわちプログラマブルでない回路はICの一部として製造される。プログラマブル回路とは異なり、ハードワイヤード回路または回路ブロックは、構成ビットストリームをロードすることによるICの製造後には実装されない。ハードワイヤード回路は、一般に、たとえば、最初に構成ビットストリームをIC(たとえばPROC1310)にロードしなくても機能する専用の回路ブロックおよび相互接続を有するものとみなされる。
【0101】
場合によっては、ハードワイヤード回路は、IC内の1つ以上のメモリ要素に格納されたレジスタ設定または値に従って設定または選択され得る1つ以上の動作モードを有し得る。これらの動作モードは、たとえば、構成ビットストリームをICにロードすることによって設定されてもよい。この能力にもかかわらず、ハードワイヤード回路はプログラマブル回路とは見なされない。なぜなら、ハードワイヤード回路は、ICの一部として製造された場合に動作可能となり特定の機能を有するからである。
【0102】
SOCの場合、構成ビットストリームは、プログラマブル回路内において実装されるべき回路と、PROC1310またはソフトプロセッサによって実行されるべきプログラムコードとを指定し得る。場合によっては、アーキテクチャ1300は、構成ビットストリームを適切な構成メモリおよび/またはプロセッサメモリにロードする専用の構成プロセッサを含む。専用の構成プロセッサは、ユーザが指定したプログラムコードを実行しない。他の場合、アーキテクチャ1300は、PROC1310を利用して構成ビットストリームを受信し、構成ビットストリームを適切な構成メモリにロードし、および/または、プログラムコードを抽出して実行してもよい。
【0103】
図13は、プログラマブル回路(たとえば、プログラマブルファブリック)を含むICを実装するために使用され得る例示的なアーキテクチャを示すよう意図されている。たとえば、或る列における論理ブロックの数、いくつかの列の相対幅、いくつかの列の数および順序、いくつかの列に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および
図13の上部に含まれる相互接続/論理実装例は、単に例示的なものである。実際のICでは、たとえば、ユーザ回路設計の効率的な実装を容易にするために、CLBがどこに現れても、典型的にはCLBの2つ以上の隣接する列が含まれている。しかしながら、隣接するCLB列の数はICの全体サイズに応じて異なっていてもよい。さらに、IC内のPROC1310などブロックのサイズおよび/または位置決めは、例示を目的としているに過ぎず、限定するものとして意図されているわけではない。
【0104】
たとえば、
図1に関連付けて説明されるシステムは、
図13と同じまたは同様のアーキテクチャを有するIC内で実装するために、本明細書中に説明される処理がなされた回路設計をさらに処理することができる。当該システムは、たとえば、回路設計を合成し、配置し、ルーティングすることができる。当該システムはまた、部分的再構成階層を指定の深さもしくは任意の深さにまで作成し、および/または、部分的再構成階層のレベルを減らすように再結合を実行し得る。当該システムは、ビットストリームがIC内にロードされるように適切なビットストリーム(たとえば、部分的ビットストリーム)を生成してもよく、これにより、IC内で指定される任意のレベルの部分的再構成階層を含む回路設計を物理的に実装し得る。
【0105】
説明を目的として、本明細書中に開示されるさまざまな本発明の概念の充分な理解を促すために、具体的な名称が記載される。しかしながら、本明細書で使用される専門用語は、本発明の構成の特定の局面を説明することのみを目的としており、限定することを意図するものではない。
【0106】
本明細書で定義されるとおりでは、単数形「a」、「an」および「the」は、文脈が明確にそうではないことを示さない限り、複数形も含むことが意図される。
【0107】
本明細書中で定義されるとおりでは、「概ね」という語は、ほぼ正確であるかまたは正確であること、厳密にではないが近い値または量であることを意味している。たとえば、「概ね」という語は、列挙された特徴、パラメータまたは値が正確な特徴、パラメータまたは値の所定量内にあることを意味してもよい。
【0108】
本明細書で定義されるとおりでは、「少なくとも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を一緒に、を意味する。
【0109】
本明細書で定義されるとおりでは、「自動的に」という語は、人の介入を伴わないことを意味する。本明細書で定義されるとおりでは、「ユーザ」という語は人を意味する。
【0110】
本明細書で定義されるとおりでは、「コンピュータ読取り可能記憶媒体」という語は、命令実行システム、装置もしくはデバイスによって用いられるかまたは命令実行システム、装置もしくはデバイスに関連付けて用いられるプログラムコードを含むかまたは格納する記憶媒体を意味する。本明細書で定義されるとおりでは、「コンピュータ読取り可能記憶媒体」は、それ自体が一時的な伝搬信号ではない。コンピュータ読取り可能記憶媒体は、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、またはこれらの任意の適切な組合わせであり得るが、これらに限定されない。本明細書で説明するメモリのさまざまな形態は、コンピュータ読取り可能記憶媒体の例である。コンピュータ読取り可能記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、RAM、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、電子的に消去可能なプログラマブル読取り専用メモリ(electronically erasable programmable read-only memory:EEPROM)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(portable compact disc read-only memory:CD-ROM)、デジタル多用途ディスク(digital versatile disk:DVD)、メモリスティック、フロッピー(登録商標)ディスク等を含み得る。
【0111】
本明細書で定義されるとおりでは、「場合(if)」という語は、文脈に応じて、「とき(when)」または「~すると(upon)」または「~に応答して(in response to)」または「~に応じて(responsive to)」を意味する。従って、「判断される場合には(if it is determined)」または「[述べられた条件もしくはイベント]が検出される場合には(if [a stated condition or event] is detected)」という表現は、文脈に応じて、「~と判断されると(upon determining)」または「~と判断することに応答して(in response to determining)」または「[述べられた条件もしくはイベント]を検出すると(upon detecting [the stated condition or event])」または「[述べられた条件もしくはイベント]を検出することに応答して(in response to detecting [the stated condition or event])」または「[述べられた条件もしくはイベント]を検出することに応じて(responsive to detecting [the stated condition or event])」を意味すると解釈され得る。
【0112】
本明細書で定義されるとおりでは、「~に応じて(responsive to)」という文言、および上記で記載されるような同様の文言、たとえば、「場合(if)」、「とき(when)」、または「~すると(upon)」は、アクションまたはイベントに容易に応答または反応することを意味する。応答または反応は自動的に行われる。したがって、第2のアクションが第1のアクションに「応じて」実行される場合、第1のアクションの発生と第2のアクションの発生との間には因果関係が存在する。「応じて(responsive to)」という表現は因果関係を示す。
【0113】
本明細書で定義されるとおりでは、「一実施形態」、「ある実施形態」、「1つ以上の実施形態」、「特定の実施形態」または同様の文言は、実施形態に関連付けて記載される特定の特徴、構造または特性が、本開示内に記載される少なくとも1つの実施形態に含まれることを意味する。したがって、本開示全体を通して「一実施形態において」、「ある実施形態において」、「1つ以上の実施形態において」、「特定の実施形態において」、および同様の文言があっても、これらが必ずしも全て同じ実施形態を指すわけではない。「実施形態」および「構成(arrangement)」という語は、本開示内で互換的に使用される。
【0114】
本明細書で定義されるとおりでは、「プロセッサ」という語は、少なくとも1つのハードウェア回路を意味する。ハードウェア回路は、プログラムコードに含まれる命令を実行するように構成されてもよい。ハードウェア回路は集積回路であってもよい。プロセッサの例は、中央処理ユニット(central processing unit:CPU)、アレイプロセッサ、ベクトルプロセッサ、デジタル信号プロセッサ(DSP)、FPGA、プログラマブル論理アレイ(programmable logic array:PLA)、ASIC、プログラマブル論理回路、およびコントローラを含むが、これらに限定されない。
【0115】
本明細書で定義されるとおりでは、「出力」という語は、物理的メモリ要素(たとえば、デバイス)への格納、ディスプレイまたは他の周辺出力デバイスへの書込み、別のシステムへの送信または伝送、エクスポートなどを意味する。
【0116】
本明細書で定義されるとおりでは、「実質的に」という語は、記載される特徴、パラメータまたは値が厳密に達成される必要はないが、たとえば、公差、測定誤差、測定精度の限度、および当業者に公知の他の因子を含む偏差またはばらつきが、当該特徴によって与えられるよう意図された効果を排除しない分量で発生し得ることを意味する。
【0117】
第1、第2などの語は、本明細書中では、さまざまな要素を記述するために用いられ得る。これらの要素は、特に指定のない限り、または文脈によって明記されない限り、1つの要素を別の要素から区別するためにのみ用いられるので、これらの語によって限定されるべきではない。
【0118】
コンピュータプログラムプロダクトは、本明細書中に記載される本発明の構成の局面をプロセッサに実行させるためのコンピュータ読取り可能プログラム命令が格納されたコンピュータ読取り可能記憶媒体(または複数のコンピュータ読取り可能記憶媒体)を含み得る。本開示内で、「プログラムコード」という語は、「コンピュータ読取り可能プログラム命令」という語と置き換えて用いられる。本明細書中に記載されるコンピュータ読取り可能プログラム命令は、コンピュータ読取り可能記憶媒体からそれぞれの計算/処理装置に、または、たとえばインターネット、LAN、WANおよび/もしくはワイヤレスネットワークなどのネットワークを介して外部のコンピュータもしくは外部ストレージデバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/または、エッジサーバを含むエッジデバイス、を含み得る。各々の計算/処理装置内のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ読取り可能プログラム命令を受信し、それぞれの計算/処理装置内のコンピュータ読取り可能記憶媒体に格納するために当該コンピュータ読取り可能プログラム命令を転送する。
【0119】
本明細書で説明する本発明の構成のための動作を実行するためのコンピュータ読取り可能プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture:ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、または、オブジェクト指向プログラミング言語および/もしくは手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組合わせで書かれたソースコードもしくはオブジェクトコードのいずれかであり得る。コンピュータ読取り可能プログラム命令は状態設定データを含み得る。コンピュータ読取り可能プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的に遠隔コンピュータ上で、または完全に遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、遠隔コンピュータは、LANもしくはWANを含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、(たとえば、インターネットサービスプロバイダを用いるインターネットを通じて)外部コンピュータに接続されてもよい。場合によっては、たとえば、プログラマブル論理回路、FPGAまたはPLAを含む電子回路は、本明細書中に記載される本発明の構成の局面を実行するために、電子回路を個人化するためのコンピュータ読取り可能プログラム命令の状態情報を利用することによって、コンピュータ読取り可能プログラム命令を実行してもよい。
【0120】
本発明の構成のいくつかの局面は、本明細書では、方法、装置(システム)およびコンピュータプログラムプロダクトのフローチャート図および/またはブロック図を参照して説明される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図におけるブロックの組合わせは、コンピュータ読取り可能プログラム命令(たとえばプログラムコード)によって実装され得ることを理解されたい。
【0121】
これらのコンピュータ読取り可能プログラム命令は、マシンを生成するように汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供され得ることで、当該コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/またはブロック図のブロックまたは複数のブロックにおいて指定される機能/動作を実装するための手段を作成するようにし得る。これらのコンピュータ読取り可能プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置および/または他のデバイスに特定の態様で機能するように命令することができるコンピュータ読取り可能記憶媒体に格納されてもよく、このため、命令が格納されたコンピュータ読取り可能記憶媒体は、フローチャートおよび/またはブロック図のブロックまたは複数のブロックにおいて指定される動作の局面を実装する命令を含む製品を備えることとなる。
【0122】
コンピュータ読取り可能プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置または他のデバイス上にロードされて、一連の動作をコンピュータ、他のプログラマブル装置または他のデバイス上で実行させて、コンピュータ実装プロセスを生成することで、コンピュータ、他のプログラマブル装置または他のデバイス上で実行される命令がフローチャートおよび/またはブロック図のブロックまたは複数のブロックにおいて指定される機能/動作を実装するようにしてもよい。
【0123】
図中のフローチャートおよびブロック図は、本発明の構成のさまざまな局面に従ったシステム、方法およびコンピュータプログラムプロダクトの実現可能な実装例のアーキテクチャ、機能および動作を示す。この点に関して、フローチャートまたはブロック図における各ブロックは、指定された動作を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメントまたは命令の一部を表し得る。
【0124】
いくつかの代替的な実装例においては、ブロックに記載される動作は、図に記載される順序通りに行われない場合もある。たとえば、連続して示される2つのブロックは、関連する機能に応じて、実質的に同時に実行されてもよく、またはこれらブロックは逆の順序で実行されてもよい。他の例においては、ブロックは概して昇順で実行され得る一方で、さらに他の例においては、1つ以上のブロックが異なる順序で実行される場合もある。この場合、直後に追従していない後続および他のブロックに結果が格納されて利用されてもよい。また、ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組合わせは、指定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0125】
添付の特許請求の範囲に見出され得るすべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作および同等例は、具体的に特許請求される他の特許請求される要素と組合わせて機能を実行するための任意の構造、材料または動作を含むよう意図されている。
【0126】
1つ以上の実施形態においては、方法は、コンピュータハードウェアを用いて、回路設計の第1の部分的再構成モジュールを第1の部分的再構成コンテナに変換するステップを含み得る。ここで、当該回路設計が配置およびルーティングされる。当該方法はさらに、当該コンピュータハードウェアを用いて、最初は空である第1の複数の部分的再構成モジュールを含む第1のネットリストを当該第1の部分的再構成コンテナにロードするステップと、当該コンピュータハードウェアを用いて、当該第1の複数の部分的再構成モジュールの各々内にさらなるネットリストを含めるステップと、当該コンピュータハードウェアを用いて、当該1の部分的再構成コンテナと当該第1の部分的再構成コンテナ内の当該第1の複数の部分的再構成モジュールとを実装するステップとを含み得る。
【0127】
一局面においては、当該方法は、当該第1の複数の部分的再構成モジュールの各々ごとに、第1の部分的再構成モジュールフロアプランを生成するステップを含み得る。各々の第1の部分的再構成モジュールフロアプランは、当該第1の部分的再構成コンテナのフロアプラン内に含まれており、当該第1の複数の部分的再構成モジュールのそれぞれを実装するために用いられる。
【0128】
別の局面においては、当該第1の部分的再構成コンテナを実装するステップは、当該第第1の複数の部分的再構成モジュールの各々の回路要素が、それぞれ対応する第1の部分的再構成モジュールフロアプランによって指定される境界内に位置するように、当該第1の部分的再構成コンテナと当該第1の複数の部分的再構成モジュールの各々とを配置およびルーティングするステップを含み得る。
【0129】
別の局面においては、当該変換するステップは、当該第1のネットリストをロードするステップの前に当該第1の部分的再構成モジュールの内容を空にするステップを含み得る。
【0130】
別の局面においては、当該方法は、当該第1の複数の部分的再構成モジュールのうち選択された1つの第1の部分的再構成モジュールへの接続のパーティションピンを、当該第1の部分的再構成コンテナの境界から、当該第1の複数の部分的再構成モジュールのうち当該選択された1つの第1の部分的再構成モジュールの境界に移動させるステップを含み得る。
【0131】
別の局面においては、当該方法は、当該第1の複数の部分的再構成モジュールのための境界を指定するユーザ入力を受信するステップを含み得る。
【0132】
別の局面においては、当該方法は、当該第1の複数の部分的再構成モジュールのうち少なくとも1つの選択された部分的再構成モジュールについて、当該少なくとも1つの選択された部分的再構成モジュールを第2の部分的再構成コンテナに変換して、当該第2の部分的再構成コンテナ内に第2の複数の部分的再構成モジュールを実装するステップを含み得る。
【0133】
1つ以上の実施形態においては、方法は、第1の部分的ビットストリームによって指定される第1の回路をプログラマブル集積回路のスタティック領域内に実装するステップと、第2の部分的ビットストリームによって指定される第2の回路を当該プログラマブル集積回路の部分的再構成コンテナ領域内に実装するステップと、当該部分的再構成コンテナ領域内に含まれる第1の部分的再構成領域内に第3の回路を実装し、当該部分的再構成コンテナ領域内に含まれる第2の部分的再構成領域内に第4の回路を実装するステップとを含み得る。当該第3の回路は第3の部分的ビットストリームによって指定されており、当該第4の回路は第4の部分的ビットストリームによって指定されている。
【0134】
一局面においては、当該方法は、当該第1の回路、当該第2の回路および当該第4の回路が途切れることなく動作し続けている間、当該第1の部分的再構成領域内に第5の回路を実装するステップを含み得る。第5の回路を第3の回路と置換えてもよい。
【0135】
別の局面においては、当該第5の回路は、第5の部分的ビットストリームによって指定される。
【0136】
別の局面においては、当該方法は、当該第1の回路および当該第2の回路が途切れることなく動作し続けている間、当該第1の部分的再構成領域内に第5の回路を実装するとともに、当該第2の部分的再構成領域内に第6の回路を実装するステップを含み得る。当該第5の回路は当該第3の回路と置換えてもよく、当該第6の回路は当該第4の回路と置換えてもよい。
【0137】
別の局面においては、当該第5の回路は、第5の部分的ビットストリームによって指定されてもよく、当該第6の回路は第6の部分的ビットストリームによって指定されてもよい。
【0138】
別の局面においては、当該方法は、第5の部分的ビットストリームによって指定される第5の回路を当該プログラマブル集積回路の当該部分的再構成コンテナ領域内に実装するステップを含み得る。当該方法はまた、当該部分的再構成コンテナ領域内で、第3の部分的再構成領域内に第6の回路を実装するとともに第4の部分的再構成領域内に第7の回路を実装するステップを含み得る。当該第6の回路は第6の部分的ビットストリームによって指定されており、当該第7の回路は第7の部分的ビットストリームによって指定されている。
【0139】
1つ以上の実施形態において、集積回路は、外部デバイスとのインターフェイスを実装するように構成された第1のプログラマブル回路を含むスタティック領域と、当該スタティック領域に結合される部分的再構成コンテナ領域とを含み、当該部分的再構成コンテナ領域は、第2のプログラマブル回路を用いて当該スタティック領域へのインターフェイスを実装する。当該部分的再構成コンテナ領域は第1の複数の部分的再構成領域を含み、第1の複数の部分的再構成領域のうち少なくとも1つが当該部分的再構成コンテナ領域に結合される。
【0140】
一局面においては、当該第1の複数の部分的再構成領域のうち選択された部分的再構成領域内の回路は、当該スタティック領域および当該部分的再構成コンテナ領域が途切れることなく動作し続けている間、当該集積回路の動作中に変更される、
別の局面においては、当該第1の複数の部分的再構成領域の各々内における回路は、当該スタティック領域および当該部分的再構成コンテナ領域が途切れることなく動作し続けている間、当該集積回路の動作中に変更される。
【0141】
別の局面においては、当該第1の複数の部分的再構成領域の数はユーザ指定である。
別の局面においては、当該第1の複数の部分的再構成領域の複数の境界はユーザ指定である
別の局面においては、当該部分的再構成コンテナ領域は、第2の複数の部分的再構成領域を含むさらなる部分的再構成コンテナ領域を含む。
【0142】
別の局面においては、当該第1の複数の部分的再構成領域のうち各々の部分的再構成領域と、当該第2の複数の部分的再構成領域のうち各々の部分的再構成領域とは、独立して再構成可能である。
【0143】
本明細書中に提供される本発明の構成の説明は、例示を目的としたものであって、網羅的であるよう意図されたものはなく、または、開示される形態および例に限定されるよう意図されたものはない。本明細書で用いられる専門用語は、本発明の構成の原理、市場で見られる技術に対する実用的な応用例もしくは技術的改善例を説明するために、および/または、当業者が本明細書中に開示される本発明の構成を理解することを可能にするために、選択された。当業者にとって、記載された発明の構成の範囲および精神から逸脱することのない範囲での変更および変形が明らかになるだろう。したがって、このような特徴および実装の範囲を示すものとして、上述の開示ではなく添付の特許請求の範囲が参照されるべきである。