(57)【要約】  以下の説明は、構成可能な論理プラットフォームを対象とする。１つの例において、構成可能な論理プラットフォームは、ホスト論理と、複数の再構成可能な論理領域と、を含む。各再構成可能な領域は、アプリケーション論理構造を実装するように構成可能であるハードウェアを含むことができる。ホスト論理は、再構成可能な論理領域の各々を別個にカプセル化するために使用することができる。ホスト論理は、複数のデータパス機能を含むことができ、各データパス機能は、ホストインターフェースと、対応する再構成可能な論理領域のアプリケーション論理との間のデータ転送をフォーマットするための層を含むことができる。ホストインターフェースは、それぞれの再構成可能な論理領域のアプリケーション論理によって生成されたデータ転送の帯域幅を分配するように構成することができる。【選択図】図１
2019530100.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
複数の再構成可能な論理領域であって、それぞれのアプリケーション論理構造を実装するために構成可能なハードウェアを各々が備える、複数の再構成可能な論理領域と、
前記再構成可能な論理領域の各々を別個にカプセル化するためのホスト論理であって、
プロセッサと通信するためのホストインターフェースと、
前記ホストインターフェースを介してアクセス可能な複数のデータパス機能であって、各データパス機能が、前記ホストインターフェースと対応する再構成可能な論理領域の前記アプリケーション論理構造との間のデータ転送をフォーマットするための層を備え、前記ホストインターフェースが、前記それぞれの再構成可能な論理領域の前記アプリケーション論理構造のリソースを調停するように構成される、データパス機能と、を備える、ホスト論理と、を備える、装置。
【請求項２】
前記ホスト論理が、
前記ホストインターフェースを介してアクセス可能な管理機能であって、前記ホストインターフェースで受信した認可されたトランザクションに応じて、前記複数の再構成可能な論理領域の再構成可能な論理領域に、特定のアプリケーション論理構造を伴って構成させるように適合される、管理機能をさらに備える、請求項１に記載の装置。
【請求項３】
前記ホストインターフェースが、前記それぞれの再構成可能な論理領域の前記アプリケーション論理の最大転送サイズを実施するようにさらに構成される、請求項１または２に記載の装置。
【請求項４】
前記管理機能、および前記データパス機能の各々が、前記それぞれの機能の各々について、異なる非オーバーラップアドレス範囲を使用してアクセス可能である、請求項１〜３のいずれかに記載の装置。
【請求項５】
前記ホストインターフェースが、前記ホスト論理の制御レジスタのプログラムされた値に基づいて、前記それぞれの再構成可能な論理領域の前記アプリケーション論理によって生成された前記データ転送の帯域幅を分配する、請求項１〜４のいずれかに記載の装置。
【請求項６】
前記ホスト論理の少なくとも一部分が、前記ホストインターフェースで受信した認可されたトランザクションに応じて、前記装置にロードされる、再構成可能な論理である、請求項１〜５のいずれかに記載の装置。
【請求項７】
前記ホスト論理が、前記それぞれの再構成可能な論理領域の前記アプリケーション論理とパブリック周辺機器との間に変換層をさらに含み、前記変換層が、前記アプリケーション論理と論理前記パブリック周辺機器との間のデータ転送をフォーマットするように適合される、請求項１〜６のいずれかに記載の装置。
【請求項８】
前記ホスト論理が、前記異なる再構成可能な論理領域の前記アプリケーション論理と前記パブリック周辺機器との間のデータ転送の帯域幅を分配するための論理をさらに備える、請求項７に記載の装置。
【請求項９】
前記ホスト論理が、前記異なる再構成可能な論理領域の前記アプリケーション論理から前記パブリック周辺機器へのアクセス制限を実施するための論理をさらに備える、請求項７または８に記載の装置。
【請求項１０】
再構成可能な論理を備える構成可能なハードウェアプラットフォームを動作させるための方法であって、前記方法が、
前記構成可能なハードウェアプラットフォームがホスト論理の動作を行うように、前記ホスト論理を前記再構成可能な論理の第１の領域にロードすることであって、前記ホスト論理が、ホストインターフェース、および前記ホストインターフェースからのトランザクションに対して制限されたアクセスを実施する制御プレーン機能を含む、ことと、
前記ホストインターフェースで第１のトランザクションを受信することに応じて、第１のアプリケーション論理構造を前記再構成可能な論理の第２の領域にロードすることであって、前記第１のトランザクションが、前記制御プレーン機能のアクセス基準を満たす、ことと、
前記ホストインターフェースで第２のトランザクションを受信することに応じて、第２のアプリケーション論理構造を前記再構成可能な論理の第３の領域にロードすることであって、前記第２のトランザクションが、前記制御プレーン機能のアクセス基準を満たす、ことと、
前記ホストインターフェースから情報を伝送するときに、前記ホスト論理を使用して、前記第１のアプリケーション論理構造および前記第２のアプリケーション論理構造の各々によって使用されるリソースを調停することと、を含む、方法。
【請求項１１】
前記ホスト論理を、共有された周辺機器と、前記第１のアプリケーション論理構造および前記第２のアプリケーション論理構造との間のインターフェースとして使用することをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ホスト論理を使用して、前記共有された周辺機器と、前記第１のアプリケーション論理構造および前記第２のアプリケーション論理構造との間のデータ転送の帯域幅を分配することをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ホスト論理を使用して、前記共有された周辺機器と、前記第１のアプリケーション論理構造および前記第２のアプリケーション論理構造との間のデータ転送のサイズを実施することをさらに含む、請求項１１または１２に記載の方法。
【請求項１４】
前記ホスト論理を使用して、前記第１のアプリケーション論理構造から前記共有された周辺機器の第１のアドレス範囲へのアクセスを制限し、かつ前記第２のアプリケーション論理構造から前記共有された周辺機器の第２のアドレス範囲へのアクセスを制限することをさらに含む、請求項１１〜１３のいずれかに記載の方法。
【請求項１５】
前記第１のアプリケーション論理構造または前記第２のアプリケーション論理構造を分解することに応じて、内部メモリ、外部メモリ、または構成メモリのうちの１つ以上をクリアすることをさらに含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（対応する記載なし）
【背景技術】
【０００２】
クラウドコンピューティングとは、遠隔地で利用可能であり、また、インターネット等のネットワークを通してアクセス可能であるコンピューティングリソース（ハードウェアおよびソフトウェア）を使用することである。いくつかの配設において、ユーザは、オンデマンドで、ユーティリティとして、こうしたコンピューティングリソース（記憶装置およびコンピューティングパワーを含む）を購入することが可能である。クラウドコンピューティングは、リモートサービスにユーザのデータ、ソフトウェア、および計算を委託する。仮想コンピューティングリソースの使用は、コスト面での有利さ、および／またはコンピューティングリソースのニーズの変化に迅速に適応する能力を含む、いくつかの利点を提供することができる。
【０００３】
大型コンピュータシステムのユーザは、異なる使用事例から生じる多様なコンピューティング要件を有し得る。クラウドまたは計算サービスプロバイダは、様々なレベルの性能および／または機能を伴う異なるタイプの構成要素を有する、種々の異なるコンピュータシステムを提供することができる。したがって、ユーザは、潜在的に特定のタスクを実行する際により効率的であり得る、コンピュータシステムを選択することができる。例えば、計算サービスプロバイダは、処理性能、メモリ性能、記憶容量または性能、およびネットワーキング容量または性能の様々な組み合わせを伴うシステムを提供することができる。クラウドサービスプロバイダの焦点は、多数の異なる顧客によって共有することができる、一般化されたハードウェアを提供することである。クラウドサービスプロバイダは、専用の計算ハードウェアをユーザに提供し、一方で、リソースが異なるユーザの間で効率的に割り当てることができるように、一般化されたリソースの健全な混合を保つことが課題になり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
（対応する記載なし）
【課題を解決するための手段】
【０００５】
（対応する記載なし）
【図面の簡単な説明】
【０００６】
【図１】構成可能な論理プラットフォームを含むシステムの一実施例を示すシステム図である。
【図２】構成可能な論理プラットフォームを含むシステムの別の実施例を示すシステム図である。
【図３】構成データを構成可能な論理プラットフォームに供給するための論理リポジトリサービスを含むシステムの一実施例を示すシステム図である。
【図４】構成可能な論理プラットフォームを有するサーバコンピュータを含むマルチテナント環境で動作する複数の仮想マシンの実例を示す例示的なシステム図である。
【図５】構成可能なハードウェアプラットフォームを構成し、そこにインターフェースするための制御プレーンおよびデータプレーンの構成要素を含む図４の例示的なシステムのさらなる詳細を示す図である。
【図６】マルチテナント環境内の構成可能なハードウェアの構成データをフェッチし、構成し、そして使用する例示的な方法のシーケンス図である。
【図７】構成可能なハードウェアプラットフォームを使用する例示的な方法のフロー図である。
【図８】集積回路上に構成された複数の顧客論理設計を有する集積回路を含むサーバコンピュータの一実施例を示すシステム図である。
【図９】説明される技術革新を実装することができる適切なコンピューティング環境の一般化された実施例を表す図である。
【発明を実施するための形態】
【０００７】
一部のユーザは、コンピューティングタスクを実行するための専用の、または高度に専門のハードウェアを使用することを望む場合がある。専門コンピューティングリソースを一組の再使用可能な一般的コンピューティングリソース内に提供するための１つの解決策は、（フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含むアドインカードをサーバコンピュータに提供すること等によって）一般的コンピューティングリソースの中の選択として構成可能な論理プラットフォームを備えるサーバコンピュータを提供することである。本明細書で使用するとき、構成可能な論理プラットフォームおよび構成可能なハードウェアプラットフォームという用語は、交換可能である。構成可能な論理（論理回路）は、構成可能な論理に適用またはロードされる構成データによって指定される論理機能を行うようにプログラムまたは構成することができるハードウェアである。例えば、コンピューティングリソースのユーザは、構成可能な論理を構成するための仕様（ハードウェア記述言語で書かれたソースコード等）を提供することができ、構成可能な論理は、仕様に従って構成することができ、構成された論理は、ユーザのタスクを行うために使用することができる。しかしながら、コンピューティング設備の低レベルハードウェアへのユーザアクセスを可能にすることは、潜在的に、コンピューティング設備内のセキュリティおよびプライバシーの問題につながり得る。特定の一例として、あるユーザによる不良の、または悪意のある設計は、構成された論理がコンピューティング設備内の１つ以上のサーバコンピュータを故障（例えば、クラッシュ、ハング、または再起動）させた場合、またはネットワークサービスが拒否された場合に、潜在的に、他のユーザに対するサービスの拒否を生じさせることがあり得る。別の具体的な例として、あるユーザによる不良の、または悪意のある設計は、他のユーザのメモリ空間のメモリに対する読み出しおよび／または書き込みが可能である場合に、潜在的に、別のユーザによるデータの破損または読み出しを生じさせ得る。別の具体的な例として、あるユーザによる不良の、または悪意のある設計は、構成された論理が、デバイスに構成可能な論理プラットフォームの電力消費または温度仕様を超えさせる回路（リング発振器等）を含む場合、潜在的に、構成可能な論理プラットフォームを故障させ得る。
【０００８】
本明細書で説明されるように、計算サービスの設備は、様々なコンピューティングリソースを含むことができ、コンピューティングリソースの１つのタイプとしては、構成可能な論理プラットフォームを備えるサーバコンピュータを挙げることができる。構成可能な論理プラットフォームは、コンピューティングリソースのハードウェア（例えば、構成可能な論理）がユーザによってカスタマイズされるように、コンピュータシステムのユーザによってプログラムまたは構成することができる。例えば、ユーザは、サーバコンピュータに密結合されたハードウェアアクセラレータとして機能するように、構成可能な論理（論理回路）をプログラムすることができる。特定の一例として、ハードウェアアクセラレータは、サーバコンピュータの、周辺機器相互接続エクスプレス（ＰＣＩ−Ｅｘｐｒｅｓｓ、またはＰＣＩｅ）等のローカル相互接続を介してアクセス可能であり得る。ユーザは、サーバコンピュータ上のアプリケーションを実行することができ、アプリケーションのタスクは、ＰＣＩｅトランザクションを使用してハードウェアアクセラレータによって行うことができる。ハードウェアアクセラレータをサーバコンピュータに密結合することによって、アクセラレータとサーバコンピュータとの間の待ち時間を低減させることができ、これは、潜在的に、アプリケーションの処理速度を高めることができる。
【０００９】
１つの実施形態において、構成可能な論理プラットフォームは、構成可能なハードウェアを、コンピューティングリソースを共有している複数のユーザによる適用を加速することができるように、コンピュータシステムの複数のユーザによってプログラムまたは構成することができる。複数のユーザがリソースを共有するときに、追加的なプライバシー、セキュリティ、および可用性の懸念がもたらされ得る。例えば、あるユーザは、潜在的に、サーバコンピュータのＣＰＵと構成可能な論理プラットフォームとの間の帯域幅の不公平な共有を消費することによって、別のユーザを減速させ得る。別の例として、あるユーザは、潜在的に、構成可能な論理プラットフォームの任意の共有されたリソースの不公平な共有を消費することによって、別のユーザを減速させ得る。別の例として、あるユーザは、潜在的に、構成可能な論理プラットフォームの応答時間または他の性能尺度を観察することによって、別のユーザの活動を監視し得る。
【００１０】
計算サービスプロバイダは、構成可能な論理プラットフォームのホスト論理内の各ユーザのハードウェアアクセラレータ（本明細書において、アプリケーション論理とも称される）をラップまたはカプセル化することによって、潜在的に、コンピューティングリソースのプライバシー、セキュリティ、および／または可用性を高めることができる。アプリケーション論理をカプセル化することは、アプリケーション論理のアクセスを、構成リソース、物理インターフェース、構成可能な論理プラットフォームのハードマクロ、および構成可能な論理プラットフォームの種々の周辺機器に限定または制限することを含むことができる。例えば、計算サービスプロバイダは、それがホスト論理およびアプリケーション論理を含むように、構成可能な論理プラットフォームのプログラミングを管理することができる。ホスト論理は、アプリケーション論理がその中で機能する、フレームワークまたはサンドボックスを提供することができる。特に、ホスト論理は、アプリケーション論理と通信することができ、また、アプリケーション論理の機能を抑制することができる。例えば、ホスト論理は、アプリケーション論理がローカル相互接続上のシグナリングを直接制御することができないように、ローカル相互接続（例えば、ＰＣＩｅ相互接続）とアプリケーション論理との間でブリッジ機能を行うことができる。ホスト論理は、ローカル相互接続上のパケットまたはバストランザクションを形成し、プロトコル要件を満たすことを確実にする役割を果たすことができる。ローカル相互接続上の処理を制御することによって、ホスト論理は、潜在的に、不正な形式のトランザクションまたは境界外の場所に対するトランザクションを防止することができる。別の例として、ホスト論理は、計算サービスプロバイダによって提供されるサービスを使用することなく、アプリケーション論理が構成可能な論理プラットフォームを再プログラムさせることができないように、構成アクセスポートを隔離することができる。別の例として、ホスト論理は、ローカル相互接続を通じて、および構成可能な論理プラットフォームの内部リソースに対するバーストサイズおよび帯域幅を管理して、潜在的に、決定性およびサービスの質を高めることができる。ローカル相互接続に、および内部リソースに帯域幅を割り当てることによって、各ユーザは、より決定的な性能を受信することができ、ある顧客は、別の顧客が構成可能な論理プラットフォームのリソースを共有しているかどうかを直接的または間接的に判定することができない。
【００１１】
図１は、構成可能な論理プラットフォーム１１０およびサーバコンピュータ１２０を含む、コンピューティングシステム１００の一実施例を示すシステム図である。例えば、サーバコンピュータ１２０は、複数のエンドユーザのアプリケーションプログラムを実行するために使用することができる。具体的には、サーバコンピュータ１２０は、１つ以上の中央処理ユニット（ＣＰＵ）１２２と、メモリ１２４と、周辺機器インターフェース１２６とを含むことができる。ＣＰＵ１２２は、メモリ１２４に記憶された命令を実行するために使用することができる。例えば、各エンドユーザは、メモリ１２４にロードされ、ハイパーバイザまたはオペレーティングシステムカーネルによって管理される、異なる仮想マシン１２８Ａ〜Ｂを実行していることがあり得る。各仮想マシン１２８Ａ〜Ｂは、異なるアプリケーションプログラムをロードすることができ、ＣＰＵ１２２は、アプリケーションプログラムの命令を実行することができる。各アプリケーションプログラムは、周辺機器インターフェース１２６を使用してトランザクションを発行することによって、構成可能な論理プラットフォーム１１０のハードウェアアクセラレータと通信することができる。別の例として、仮想マシン１２８Ａ〜Ｂのうちの１つ（例えば、１２８Ａ）は、サーバコンピュータ１２０を管理する計算サービスの制御プレーンコンピュータ等の１つ以上のリモートサーバコンピュータ管理（図示せず）と通信して、管理または制御カーネルを実行していることがあり得る。リモートサーバコンピュータは、仮想マシン１２８Ａで実行する制御カーネルを介してリモート仮想マシンが構成可能な論理プラットフォーム１１０のハードウェアアクセラレータと通信することができるように、仮想マシン１２８Ａで実行する制御カーネルと通信する仮想マシンを実行していることがあり得る。
【００１２】
本明細書で使用するとき、トランザクションは、構成要素間の通信である。具体的な例として、トランザクションは、読み出し要求、書き込み、読み出し応答、メッセージ、割り込み、または情報の構成要素間での他の種々の交換であり得る。トランザクションは、複数の構成要素によって共有されるバス上で起こり得る。具体的には、バスの信号ラインの値は、バスの通信プロトコルを使用してバスに関する情報を転送するように調整することができる。トランザクションは、アドレスフェーズおよび１つ以上のデータフェーズ等の１つ以上のフェーズを通じて起こり得る。追加的または代替的に、トランザクションは、２つの構成要素を接続するポイントツーポイント相互接続の１つ以上のシリアルラインを使用して起こり得る。具体的には、トランザクションは、ポイントツーポイント相互接続を通じて伝送されるパケットで送信することができる。
【００１３】
周辺機器インターフェース１２６は、ローカルまたはフロント側相互接続を使用するＣＰＵ１２２と、周辺機器または拡張相互接続を使用する構成要素との間で通信するためのブリッジを含むことができる。具体的には、周辺機器インターフェース１２６は、サーバコンピュータ１２０を構成可能な論理プラットフォーム１１０および／または他の構成要素に接続するために使用される物理的相互接続に接続することができる。例えば、物理的相互接続は、共有されたパラレルバスまたはシリアルポイントツーポイントリンクを使用して複数の構成要素を共に接続するための拡張バスとすることができる。具体的な一例として、物理的相互接続は、ＰＣＩエクスプレス、ＰＣＩ、またはサーバコンピュータ１２０を構成可能な論理プラットフォーム１１０に密結合させる別の物理的相互接続とすることができる。したがって、例えば、サーバコンピュータ１２０および構成可能な論理プラットフォーム１１０は、ＰＣＩバストランザクションまたはＰＣＩｅパケットを使用して通信することができる。
【００１４】
構成可能な論理プラットフォーム１１０は、複数の再構成可能な論理領域１４０Ａ〜Ｂと、一般に１１１で示されるホスト論理と、を含むことができる。１つの実施形態において、構成可能な論理プラットフォーム１１０は、物理的相互接続の拡張スロットに挿入されるように構成される印刷回路基板にマウントされた、１つ以上の集積回路を含むことができる。１つの例として、１つ以上の集積回路は、単一のＦＰＧＡとすることができ、異なる再構成可能な論理領域１４０Ａ〜Ｂは、ＦＰＧＡの異なる領域または範囲とすることができる。別の例として、１つ以上の集積回路は、複数のＦＰＧＡとすることができ、異なる再構成可能な論理領域１４０Ａ〜Ｂは、異なるそれぞれのＦＰＧＡまたはＦＰＧＡのグループに対応することができる。具体的な一例として、構成可能な論理プラットフォーム１１０は、８つのＦＰＧＡを含むことができ、特定の再構成可能な論理領域１４０Ａ〜Ｂは、１つ、２つ、または４つのＦＰＧＡのグループに対応することができる。別の例として、１つ以上の集積回路は、ハードワイヤード回路および複数の異なる再構成可能な論理領域１４０Ａ〜Ｂを有する特定用途向け集積回路（ＡＳＩＣ）を含むことができる。特に、ホスト論理の全部または一部分は、ハードワイヤード回路を含むことができる。別の実施形態において、構成可能な論理プラットフォーム１１０は、サーバコンピュータ１２０のマザーボードにマウントされた１つ以上の集積回路を含むことができる。別の実施形態において、構成可能な論理プラットフォーム１１０は、システムオンチップ（ＳＯＣ）、またはＣＰＵ１２２を含むマルチチップモジュール上に統合することができる。
【００１５】
ホスト論理１１１は、ホストインターフェース１１２と、管理機能１１４と、複数のデータパス機能１１６Ａ〜Ｂと、を含むことができる。各再構成可能な論理領域１４０Ａ〜Ｂは、ハードウェアアクセラレータまたはアプリケーション論理を実装するように構成可能であるハードウェアを含むことができる。換言すれば、各再構成可能な論理領域１４０Ａ〜Ｂは、所与の機能を行うようにプログラム可能である論理を含むことができる。例えば、再構成可能な論理領域１４０Ａ〜Ｂは、組み合わせ論理および／またはルックアップテーブル（ＬＵＴ）、ならびに連続論理要素（フリップフロップおよび／またはラッチ等）を備えるプログラマブル論理ブロック、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ（ＲＡＭ）、デジタル信号処理ビットスライス（ＤＳＰ）、ならびにプログラマブル入力／出力ピンを含むことができる。例示を容易にするために、接尾辞が追加的な明確性を提供することができる（例えば、再構成可能な論理領域１４０Ａを再構成可能な論理領域１４０等と称することができる）限り、以下の説明において、一般に、アルファベットの接尾辞が省略されることに留意されたい。また、２つの再構成可能な論理領域１４０が図１に例示されるが、異なる量（例えば、４個、８個、または１０個等）の再構成可能な論理領域１４０が可能であることにも留意されたい。
【００１６】
ホスト論理は、再構成可能な論理領域１４０をカプセル化するために使用することができる。例えば、再構成可能な論理領域１４０は、再構成可能な論理領域１４０が実行することができる機能を制限されるように、予め定義されたインターフェースを使用して構成可能なハードウェアプラットフォームの種々の構成要素とインターフェースすることができる。１つの例として、再構成可能な論理領域は、再構成可能な論理領域１４０が構成される前にロードされる静的ホスト論理とインターフェースすることができる。例えば、静的ホスト論理は、構成可能な論理プラットフォーム１１０の異なる構成要素を再構成可能な論理領域１４０から隔離する論理を含むことができる。１つの例として、構成可能な論理プラットフォーム１１０のハードマクロ（物理的相互接続上でシグナリングするための構成アクセスポートまたは回路等）は、再構成可能な論理領域１４０がハードマクロに直接アクセスすることができないようにマスキングすることができる。加えて、再構成可能な論理領域１４０Ａ〜Ｂは、互いにマスキングすることができる。したがって、再構成可能な論理領域１４０Ａは、再構成可能な論理領域１４０Ｂと、および逆も同様に、インターフェースすることができない。
【００１７】
ホスト論理は、サーバコンピュータ１２０と通信するためのホストインターフェース１１２を含むことができる。具体的には、ホストインターフェース１１２は、物理的相互接続に接続するために、および物理的相互接続の通信プロトコルを使用してサーバコンピュータ１２０と通信するために使用することができる。１つの例として、サーバコンピュータ１２０は、構成可能な論理プラットフォーム１１０と関連付けられたアドレスを含むトランザクションを使用して、構成可能な論理プラットフォーム１１０と通信することができる。同様に、構成可能な論理プラットフォーム１１０は、サーバコンピュータ１２０と関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ１２０と通信することができる。物理的相互接続に接続された種々のデバイスと関連付けられたアドレスは、システム設計者によって予め定義することができ、また、デバイスに存在するソフトウェアにプログラムすることができる。追加的または代替的に、通信プロトコルは、列挙シーケンスを含むことができ、物理的相互接続に接続されたデバイスのクエリが行われ、アドレスは、列挙シーケンスの一部としてデバイスのそれぞれに割り当てられる。１つの例として、周辺機器インターフェース１２６は、物理的相互接続に接続されたデバイスのそれぞれに、クエリを発行することができる。ホストインターフェース１１２は、いくつの機能が構成可能な論理プラットフォーム１１０に存在するか、および構成可能な論理プラットフォーム１１０の機能のそれぞれと関連付けられたアドレス範囲のサイズ等の、構成可能な論理プラットフォーム１１０に関する情報を提供することによって、クエリに応答することができる。この情報に基づいて、物理的相互接続に接続された各デバイスの各機能に非オーバーラップのアドレス範囲が割り当てられるように、コンピューティングシステム１００のアドレスを割り当てることができることができる。列挙の後に、ホストインターフェース１１２は、トランザクションのアドレスに基づいて、構成可能な論理プラットフォーム１１０の機能にトランザクションをルーティングすることができる。
【００１８】
ホスト論理は、構成可能な論理プラットフォーム１１０を管理および構成するために使用することができる、管理機能１１４を含むことができる。コマンドおよびデータは、管理機能１１４のアドレス範囲を標的にするトランザクションを使用して、サーバコンピュータ１２０から管理機能１１４に送信することができる。例えば、サーバコンピュータ１２０は、管理機能１１４のアドレス範囲内の１つ以上のアドレスにマッピングされる構成可能な論理プラットフォーム１１０のデータ（例えば、構成データ）および／または書き込み制御レジスタを転送するためのトランザクションを生成することができる。制御レジスタを書き込むことは、構成可能な論理プラットフォーム１１０に、構成可能な論理プラットフォーム１１０を構成および管理すること等の動作を行わせることができる。具体的な一例として、再構成可能な論理領域１４０に実装されるべきアプリケーション論理に対応する構成データは、物理的相互接続を通じて、サーバコンピュータ１２０から１つ以上のトランザクションの構成可能な論理プラットフォーム１１０に伝送することができる。構成データを有する再構成可能な論理領域１４０を構成するためのトランザクション１５０は、サーバコンピュータ１２０から構成可能な論理プラットフォーム１１０に伝送することができる。具体的には、トランザクション１５０は、再構成可能な論理領域１４０の構成を始める管理機能１１４のアドレス空間にマッピングされた制御レジスタに値を書き込むことができる。再構成可能な論理領域１４０Ａを構成すること、または再構成可能な論理領域１４０Ｂを構成することの間で、異なる値および／または異なる制御レジスタを使用することができる。１つの実施形態において、構成データは、再構成可能な論理領域１４０の構成を開始する前に、サーバコンピュータ１２０から構成可能な論理プラットフォーム１１０に転送することができる。例えば、管理機能１１４は、構成データを、構成可能な論理プラットフォーム１１０によってアクセス可能なオンチップまたはオフチップメモリに記憶させ、構成データは、再構成可能な論理領域１４０が構成されているときに、メモリから読み出すことができる。別の実施形態において、構成データは、再構成可能な論理領域１４０の構成を開始した後に、サーバコンピュータ１２０から構成可能な論理プラットフォーム１１０に転送することができる。例えば、制御レジスタは、再構成可能な論理領域１４０の構成を開始するように書き込むことができ、構成データは、構成データを含むトランザクションが管理機能１１４によって処理されるときに、再構成可能な論理領域１４０にストリーミングまたはロードすることができる。
【００１９】
ホスト論理は、サーバコンピュータ１２０と構成可能な論理プラットフォーム１１０との間で情報（例えば、アプリケーション入力／出力１６０）を交換するために使用することができる、データパス機能１１６を含むことができる。具体的には、データパス機能１１６Ａは、サーバコンピュータ１２０と再構成可能な論理領域１４０Ａとの間で情報を交換するために使用することができ、データパス機能１１６Ｂは、サーバコンピュータ１２０と再構成可能な論理領域１４０Ｂとの間で情報を交換するために使用することができる。コマンドおよびデータは、データパス機能１１６のアドレス範囲を標的にするトランザクションを使用して、サーバコンピュータ１２０からデータパス機能１１６に送信することができる。具体的には、データパス機能１１６Ａは、第１のアドレス範囲を割り当てることができ、データパス機能１１６Ｂは、アドレスの第２の異なる範囲を割り当てることができる。構成可能な論理プラットフォーム１１０は、サーバコンピュータ１２０と関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ１２０と通信することができる。
【００２０】
データパス機能１１６は、ホストインターフェース１１２と再構成可能な論理領域１４０との間の変換層として作用することができる。具体的には、データパス機能１１６は、再構成可能な論理領域１４０から情報を受信するためのインターフェースを含むことができ、データパス機能１１６は、ホストインターフェース１１２から伝送するための情報をフォーマットすることができる。情報をフォーマットすることは、１つ以上のトランザクションのための制御情報を生成することと、プロトコル仕様を満たすようにサイズが決定されるブロックにデータを分割することとを含むことができる。したがって、データパス機能１１６は、再構成可能な論理領域１４０と物理的相互接続との間に間置することができる。この様態で、再構成可能な論理領域１４０は、潜在的に、トランザクションをフォーマットすること、および物理的相互接続を駆動するために使用される信号を直接制御することをブロックすることができ、よって、再構成可能な論理領域１４０を使用して、物理的相互接続のプロトコルに不注意に、または悪意をもって違反することができない。
【００２１】
ホストインターフェース１１２は、データパス機能１１６Ａ〜Ｂと物理的相互接続との間の層として間置することができる。ホストインターフェース１１２は、物理的相互接続を通じたトランザクションのための帯域幅、サイズ、および他のサービスの質を実施することができる。例えば、ホストインターフェース１１２は、データパス機能１１６Ａ〜Ｂおよび管理機能１１４に由来するトランザクションのための送出帯域幅を分配することができる。１つの例として、データパス機能１１６Ａ〜Ｂのそれぞれに割り当てられた送出帯域幅は、物理的相互接続の使用可能帯域幅の半分として指定することができる。管理機能１１４に由来するトランザクションは、低頻度であるが、高優先度であり得る。したがって、管理機能１１４には、物理的相互接続を通じたトランザクションの送信について最高優先度を与えることができる。代替的に、管理機能１１４は、データパス機能１１６Ａ〜Ｂに割り当てられた帯域幅のバジェットから取り出されるべき一定量の帯域幅を割り当てることができる。各機能に割り当てられる帯域幅のパーセンテージは、固定すること、またはプログラムすることができる。例えば、管理機能１１４のアドレス空間にマッピングされた１つまたは複数の制御レジスタは、各機能に割り当てられる帯域幅の分配をプログラムするために使用することができる。ホストインターフェース１１２はまた、データパス機能１１６Ａ〜Ｂおよび管理機能１１４に由来するトランザクションの最大サイズトランザクションも制御することができる。より多くのデータを、潜在的に、トランザクション（パケットヘッダ等）の所与の量のオーバーヘッドまたは制御情報のために転送することができるので、物理的相互接続は、トランザクションの最大サイズが増加させたときに、より効率的に利用することができる。しかしながら、以前のトランザクションが完了するまで、その後のトランザクションを開始することができないので、より大きいトランザクションサイズは、後続のトランザクションの待ち時間を増加させる場合がある。したがって、物理的相互接続を通じたトランザクションサイズは制御するが、トランザクションの待ち時間および／または有効帯域幅の利用が影響を受ける場合がある。トランザクションの最大サイズは、ホスト論理の固定パラメータとすることができ、または管理機能１１４のアドレス空間にマッピングされた１つもしくは複数の制御レジスタを使用してプログラムすることができる。
【００２２】
要約すれば、サーバコンピュータ１２０上で稼働する複数の顧客のアプリケーションは、構成可能な論理プラットフォーム１１０の再構成可能なハードウェアを使用して加速（促進）することができる。１つの例として、サーバコンピュータ１２０は、複数の仮想マシン１２８Ａ〜Ｂをホストすることができ、各仮想マシンは、異なるユーザによって動作される。仮想マシン１２８Ａ〜Ｂは、構成可能な論理プラットフォーム１１０にロードされるアプリケーション論理によって加速することができるアプリケーションを稼働させることができる。具体的には、仮想マシン１２８Ａは、再構成可能な論理領域１４０Ａにロードされたアプリケーション論理によって加速することができるアプリケーションを実行することができる。アプリケーションは、データパス機能１１６Ａにアドレッシングされたトランザクションを使用して、再構成可能な論理領域１４０Ａと通信することができる。再構成可能な論理領域１４０Ａからの応答は、データパス機能１１６Ａに由来するトランザクションを使用して、仮想マシン１２８Ａ上で実行するアプリケーションに返すことができる。データパス機能１１６Ａからのトランザクションに対応する帯域幅は、データパス機能１１６Ｂ等の他の機能からのトランザクションに対応する帯域幅の間で分配することができる。帯域幅および／またはトランザクションのサイズを制御することによって、アクセラレータの応答を、潜在的に、より決定的とすることができ、あるユーザが、別のユーザが構成可能な論理プラットフォーム１１０のアクセラレータを使用していると判定することをより困難にすることができる。
【００２３】
加えて、異なる仮想マシン１２８Ａ〜Ｂおよびアプリケーション論理設計（アプリケーション論理構造）は、互いに隔離して、コンピューティングインフラストラクチャの一部分を共有している間、異なる顧客にセキュアかつプライベートなコンピューティング環境を提供することができる。例えば、サーバコンピュータ１２０上で実行するホスト論理１１１および／またはハイパーバイザは、顧客が互いに隔離されるように、異なる仮想マシン１２８Ａ〜Ｂおよびアプリケーション論理設計へのアクセスを制限することができる。具体的には、ホスト論理１１１および／またはハイパーバイザは、ある顧客によって実行される仮想マシン（例えば、１２８Ａ）が、異なる顧客のアプリケーション論理（例えば、１４０Ｂ）にアクセスことを防止することができ、ホスト論理１１１および／またはハイパーバイザは、ある顧客によって実行される仮想マシン（例えば、１２８Ａ）が、異なる顧客によって実行される仮想マシン（例えば、１２８Ｂ）にアクセスすることを防止することができ、ホスト論理１１１および／またはハイパーバイザは、ある顧客のアプリケーション論理（例えば、１４０Ａ）が、異なる顧客によって実行される仮想マシン（例えば、１２８Ｂ）にアクセスすることを防止することができる。加えて、ホスト論理１１１は、ある顧客のアプリケーション論理（例えば、１４０Ａ）が、異なる顧客のアプリケーション論理（例えば、１４０Ｂ）にアクセスすることを防止することができる。したがって、システム１００は、潜在的に、再構成可能な論理領域１４０Ａ〜Ｂにプログラムされた仮想マシン１２８Ａ〜Ｂおよびアプリケーション論理設計のためのセキュアな環境を提供することができる。
【００２４】
図２は、構成可能なハードウェアプラットフォーム２１０およびサーバコンピュータ２２０を含む、システム２００の一実施例を示すシステム図である。サーバコンピュータ２２０および構成可能なハードウェアプラットフォーム２１０は、物理的相互接続２３０を介して接続することができる。例えば、物理的相互接続２３０は、ＰＣＩエクスプレス、ＰＣＩ、またはサーバコンピュータ２２０を構成可能なハードウェアプラットフォーム２１０に密結合させる任意の他の相互接続とすることができる。サーバコンピュータ２２０は、ＣＰＵ２２２と、メモリ２２４と、相互接続インターフェース２２６とを含むことができる。例えば、相互接続インターフェース２２６は、サーバコンピュータ２２０がサーバコンピュータ２２０の外部のデバイスにアクセスすることができるように、ブリッジング能力を提供することができる。例えば、相互接続インターフェース２２６は、ＰＣＩエクスプレスで使用されるようなルートコンプレックス機能等の、ホスト機能を含むことができる。
【００２５】
構成可能なハードウェアプラットフォーム２１０は、再構成可能な論理ブロックと、他のハードウェアと、を含むことができる。再構成可能な論理ブロックは、構成可能なハードウェアプラットフォーム２１０の種々の機能を実行するように構成またはプログラムすることができる。再構成可能な論理ブロックは、ブロックがデバイスの寿命を通じて異なる機能を行うことができるように、異なる構成で複数回プログラムすることができる。構成可能なハードウェアプラットフォーム２１０の機能は、各機能の目的もしくは能力に基づいて、または機能が構成可能なハードウェアプラットフォーム２１０にロードされる時期に基づいて分類することができる。例えば、構成可能なハードウェアプラットフォーム２１０は、静的論理、再構成可能な論理、およびハードマクロを含むことができる。静的論理、再構成可能な論理、ハードマクロのための機能は、異なる時間に構成することができる。したがって、構成可能なハードウェアプラットフォーム２１０の機能は、漸増的にロードすることができる。
【００２６】
ハードマクロは、予め定義された機能を行うことができ、また、構成可能なハードウェアプラットフォーム２１０の電源がオンになったときに利用可能であり得る。例えば、ハードマクロは、特定の機能を行うハードワイヤード回路を含むことができる。具体的な例として、ハードマクロは、構成可能なハードウェアプラットフォーム２１０を構成するための構成ポート２１１と、シリアルデータを通信するためのシリアライザ−デシリアライザトランシーバ（ＳＥＲＤＥＳ）２１２と、（ダブルデータレート（ＤＤＲ）ＤＲＡＭ２８１等の）オフチップメモリのシグナリングおよび制御を行うためのメモリまたはダイナミックランダムアクセスメモリ（ＤＲＡＭ）コントローラ２１３と、記憶デバイス２８２のシグナリングおよび制御を行うための記憶装置コントローラ２１４と、を含むことができる。
【００２７】
静的論理は、ブート時間に、再構成可能な論理ブロックにロードすることができる。例えば、静的論理の機能を指定する構成データは、ブートアップシーケンス中に、オンチップまたはオフチップフラッシュメモリデバイスからロードすることができる。ブートアップシーケンスは、（例えば、供給電圧が閾値未満から閾値を超えるまで移行したことを検出すること等によって）パワーイベントを検出すること、およびパワーイベントに応じてリセット信号をデアサートすることを含むことができる。初期化シーケンスは、パワーイベントまたはリセットがデアサートされることに応じて起動することができる。初期化シーケンスは、再構成可能な論理ブロックの少なくとも一部分が静的論理の機能によってプログラムされるように、フラッシュデバイスに記憶された構成データを読み込むことと、構成ポート２１１を使用して、構成データを構成可能なハードウェアプラットフォーム２１０にロードすることと、を含むことができる。静的論理がロードされた後に、構成可能なハードウェアプラットフォーム２１０は、ローディング状態から、静的論理の機能を含む動作状態に移行することができる。
【００２８】
再構成可能な論理（論理回路）は、（例えば、静的論理がロードされた後に）構成可能なハードウェアプラットフォーム２１０が動作している間に、再構成可能な論理ブロックにロードすることができる。再構成可能な論理に対応する構成データは、オンチップもしくはオフチップメモリに記憶することができ、および／または構成データは、構成可能なハードウェアプラットフォーム２１０のインターフェース（例えば、相互接続インターフェース２５６）から受信もしくはストリーミングすることができる。再構成可能な論理は、非オーバーラップ領域（重複しない領域）に分割することができ、静的論理とインターフェースすることができる。例えば、再構成可能な領域は、アレイ構造で、または他の規則的もしくは半規則的な構造で配設することができる。例えば、アレイ構造は、ホールまたは妨害物を含むことができ、ハードマクロは、アレイ構造内に配置される。異なる再構成可能な領域は、静的論理として指定することができるプログラマブル信号ラインを使用することによって、互いに、静的論理と、およびハードマクロと通信することが可能である。異なる再構成可能な領域は、第１の再構成可能な領域を第１の時点で構成することができ、第２の再構成可能な領域を第２の時点で構成することができるように、異なる時点で構成することができる。
【００２９】
構成可能なハードウェアプラットフォーム２１０の機能は、目的または機能の能力に基づいて、分割または分類することができる。例えば、機能は、制御プレーン機能、データプレーン機能、および共有された機能に分類することができる。制御プレーンは、構成可能なハードウェアプラットフォーム２１０の管理および構成に使用することができる。データプレーンは、構成可能なハードウェアプラットフォーム２１０にロードされたアクセラレータ論理とサーバコンピュータ２２０との間のデータ転送を管理するために使用することができる。共有された機能は、制御プレーンおよびデータプレーンによって使用することができる。制御プレーン機能は、データプレーン機能をロードする前に、構成可能なハードウェアプラットフォーム２１０にロードすることができる。制御プレーンは、構成可能なハードウェアプラットフォーム２１０のホスト論理を含むことができる。データプレーンは、アプリケーション論理２４０Ａ〜Ｂを伴って構成された、カプセル化された再構成可能な論理の複数の領域を含むことができる。図２の実例では、カプセル化された再構成可能な論理２４０Ａ〜Ｂの異なる領域が重なっているように示されるが、異なる領域２４０Ａ〜Ｂの物理的な場所は、一般に、１つ以上の集積回路の非オーバーラップ領域に配置されることに留意されたい。また、カプセル化された再構成可能な論理２４０Ａ〜Ｂの２つの異なる領域だけが示されるが、より多くの領域が可能である。
【００３０】
一般に、制御プレーン、およびデータプレーンの異なる領域は、構成可能なハードウェアプラットフォーム２１０の異なる機能を使用してアクセスすることができ、異なる機能が異なるアドレス範囲に割り当てられる。具体的には、制御プレーン機能は、管理機能２５２を使用してアクセスすることができ、データプレーン機能は、データパス機能またはアプリケーション機能２５４Ａ〜Ｂを使用してアクセスすることができる。アドレスマッピング層２５０は、制御プレーン、またはデータプレーンの異なる機能に結び付けられたトランザクションを区別することができる。特に、構成可能なハードウェアプラットフォーム２１０に結び付けられたサーバコンピュータ２２０からのトランザクションは、トランザクション内のアドレスを使用して識別することができる。具体的には、トランザクションのアドレスが構成可能なハードウェアプラットフォーム２１０に割り当てられたアドレス範囲内である場合、トランザクションは、構成可能なハードウェアプラットフォーム２１０に向けられる。構成可能なハードウェアプラットフォーム２１０に割り当てられたアドレス範囲は、異なる機能のそれぞれに割り当てられたアドレス範囲に及び得る。トランザクションは、物理的相互接続２３０を通じて送信することができ、相互接続インターフェース２５６で受信することができる。相互接続インターフェース２５６は、物理的相互接続２３０のエンドポイントとすることができる。物理的相互接続２３０は、デバイスまたは構成要素をサーバコンピュータ２３０に接続するためのファブリックに配設された追加的なデバイス（例えば、スイッチおよびブリッジ）を含むことができることを理解されたい。
【００３１】
アドレスマッピング層２５０は、トランザクションのアドレスを分析し、アドレスに基づいて、構成可能なハードウェアプラットフォーム２１０内のトランザクションをどこにルーティングするのかを決定することができる。例えば、管理機能２５２は、第１のアドレス範囲を割り当てることができ、管理プレーンの異なる機能は、その範囲内の異なるアドレスを使用することによってアクセスすることができる。管理機能２５２に割り当てられた範囲内に入るアドレスを有するトランザクションは、ホスト論理プライベートファブリック２６０を通して、制御プレーンの異なるブロックにルーティングすることができる。例えば、トランザクションは、管理および構成ブロック２６２にアドレッシングすることができる。同様に、アプリケーション機能２５４Ａは、第２のアドレス範囲を割り当てることができ、アプリケーション機能２５４Ｂは、第３のアドレス範囲を割り当てることができ、データプレーンの異なる機能は、それらの範囲内の異なるアドレスを使用することによってアクセスすることができる。
【００３２】
管理および構成ブロック２６２は、構成可能なハードウェアプラットフォーム２１０の管理および構成に関する機能を含むことができる。例えば、管理および構成ブロック２６２は、再構成可能な論理ブロックを構成することができるように、構成ポート２１１へのアクセスを提供することができる。例えば、サーバコンピュータ２２０は、トランザクションを管理および構成ブロック２６２に送信して、アプリケーション論理の、カプセル化された再構成可能な論理２４０Ａまたは２４０Ｂへのロードを開始することができる。アプリケーション論理に対応する構成データは、サーバコンピュータ２２０から管理機能２５２に送信することができる。管理機能２５２は、アプリケーション論理をロードすることができるように、ホスト論理ファブリック２６０を通して、アプリケーション論理に対応する構成データを構成ポート２１１にルーティングすることができる。
【００３３】
別の例として、管理および構成ブロック２６２は、構成可能なハードウェアプラットフォーム２１０に関するメタデータを記憶することができる。例えば、異なる論理ブロックのバージョン、更新履歴、および他の情報を、管理および構成ブロック２６２のメモリに記憶することができる。サーバコンピュータ２２０は、メタデータのいくつかまたは全てを検索するためにメモリを読み出すことができる。具体的には、サーバコンピュータ２２０は、管理および構成ブロック２６２のメモリを標的にする読み出し要求を送信することができ、管理および構成ブロック２６２は、読み出し応答データを生成して、サーバコンピュータ２２０に返すことができる。
【００３４】
管理機能２５２は、構成可能なハードウェアプラットフォーム２１０のプライベート周辺機器にアクセスするために使用することもできる。プライベート周辺機器は、制御プレーンだけからアクセス可能な構成要素である。例えば、プライベート周辺機器としては、ＪＴＡＧ（例えば、ＩＥＥＥ  １１４９．１）コントローラ２７０、発光ディスプレイ（ＬＥＤ）２７１、マイクロコントローラ２７２、汎用非同期レシーバ／トランスミッタ（ＵＡＲＴ）２７３、メモリ２７４（例えば、シリアル周辺機器インターフェース（ＳＰＩ）フラッシュメモリ）、および制御プレーンからアクセス可能であり、データプレーンがアクセス不可能である任意の他の構成要素を挙げることができる。管理機能２５２は、ホスト論理プライベートファブリック２６０およびプライベート周辺機器インターフェース（複数可）２７５を通してコマンドをルーティングすることによって、プライベート周辺機器にアクセスすることができる。プライベート周辺機器インターフェース（複数可）２７５は、プライベート周辺機器と直接通信することができる。
【００３５】
パブリック周辺機器は、制御プレーンまたはデータプレーンのいずれかからアクセス可能である、共有された機能である。例えば、パブリック周辺機器は、管理機能２５２に割り当てられたアドレス範囲内でトランザクションをアドレッシングすることによって、制御プレーンからアクセスすることができる。パブリック周辺機器は、アプリケーション機能２５４に割り当てられたアドレス範囲内でトランザクションをアドレッシングすることによって、データプレーンからアクセスすることができる。したがって、パブリック周辺機器は、複数のアドレスマッピングを有することができ、かつ制御プレーンおよびデータプレーンの両方によって使用することができる構成要素である。パブリック周辺機器の例は、他の構成可能なハードウェアプラットフォーム（複数可）（ＣＨＰ（複数可））２８０、ＤＲＡＭ２８１（例えば、ＤＤＲ  ＤＲＡＭ）、記憶デバイス２８２（例えば、ハードディスクドライブおよびソリッドステートドライブ）、および情報の生成、記憶、または処理を行うために使用することができる他の種々の構成要素である。パブリック周辺機器は、パブリック周辺機器インターフェース２８５を介してアクセスすることができる。したがって、パブリック周辺機器インターフェース２８５は、パブリック周辺機器と構成可能なハードウェアプラットフォーム２１０の他の機能との間に間置された中間層とすることができる。具体的には、パブリック周辺機器インターフェース２８５は、制御プレーンまたはデータプレーンからの要求を変換し、パブリック周辺機器への通信をパブリック周辺機器のネイティブプロトコルにフォーマットすることができる。
【００３６】
加えて、パブリック周辺機器インターフェース２８５は、パブリック周辺機器の全部もしくは一部分へのアクセスを制御するために、および／またはそれらを隔離するために使用することができる。１つの例として、アクセス論理２８６は、パブリック周辺機器に対するトランザクションについて、帯域幅、待ち時間、サイズ、および他のサービスファクタの質を実施することができる。例えば、アクセス論理２８６は、パブリック周辺機器を標的とする異なる機能からの要求を調停することができる。アクセス論理２８６は、ある再構成可能な論理領域に由来する要求が、別の再構成可能な論理領域または管理機能２５２に由来する要求を不足させることができないように、アクセスの公平な分配を実施することができる。具体的な一例として、アクセス論理２８６は、パブリック周辺機器にアクセスする構成要素の各々について、アクセスのラウンドロビン分配を実施することができる。１つの実施形態において、アクセス論理２８６は、周辺機器への最高優先度を管理機能２５２に与えることができる。加えて、アクセス論理２８６は、パブリック周辺機器と異なる構成要素との間の転送に対して、サイズ制限を実施することができる。サイズ制限を実施することによって、パブリック周辺機器にアクセスするための待ち時間が、潜在的に、より決定的になり得る。加えて、アクセス論理２８６は、パブリック周辺機器の帯域幅分配を実施することができる。例えば、構成要素のいくつかは、周辺機器に／から小量（例えば、１バイトまたはワード）のデータを転送することができ、他の構成要素は、所与の要求において、周辺機器に／からより多い量の（例えば、１６または３２ワード）のデータを転送することができる。純粋なラウンドロビン手法は、より小さい転送サイズを使用して構成要素にペナルティを課すことができるので、帯域幅認識のスケジューリングアルゴリズムは、潜在的に、帯域幅をより正確に分配することができる。アクセス論理２８６は、利用可能帯域幅を周辺機器に均等に分配することができ、または帯域幅の分配は、プログラムすることができる。例えば、管理機能１１４のアドレス空間にマッピングされた１つまたは複数の制御レジスタを使用して、周辺機器にアクセスする各構成要素に割り当てられる帯域幅の分配をプログラムすることができる。１つの具体的な例として、アクセス論理２８６は、再構成可能な論理領域２４０Ａが帯域幅の７５％を受信し、再構成可能な論理領域２４０Ｂが帯域幅の２５％を受信するように、帯域幅を分配するようにプログラムすることができる。
【００３７】
アクセス論理２８６はまた、周辺機器アドレス空間のマッピングを、構成可能なハードウェアプラットフォーム２１０の異なる構成要素に実施することもできる。例えば、周辺機器のアドレス空間は、単一の構成要素専用とすること、または構成要素の間で共有することができる。具体的な一例として、ＤＲＡＭ２８１のアドレス空間は、２つの別個の非オーバーラップアドレス空間（重複しないアドレス空間）に分けることができ、再構成可能な論理領域２４０Ａを第１のアドレス範囲に割り当てることができ、再構成可能な論理領域２４０Ｂを第２のアドレス範囲に割り当てることができる。したがって、異なる再構成可能な論理領域に割り当てられたＤＲＡＭの記憶場所を互いに隔離して、ユーザのプライバシーを守ることができる。別の具体的な例として、ＤＲＡＭ２８１のアドレス空間は、再構成可能な論理領域２４０Ａ〜Ｂの各々の専用の２つの別個の非オーバーラップアドレス空間、および再構成可能な論理領域２４０Ａ〜Ｂによって共有することができる追加的なアドレス空間に分けることができる。したがって、ＤＲＡＭ２８１のプライベート領域およびＤＲＡＭ２８１の共有された領域が存在し得る。パブリック周辺機器の共有されたメモリ空間を可能にすることによって、あるアクセラレータは、潜在的に、物理的相互接続２３０を通じてアクセラレータ間で全てのデータを転送することと比較して、より高速に別のアクセラレータとデータを共有することができる。周辺機器アドレス空間のマッピングは、ホスト論理によって固定することができ、または管理機能１１４のアドレス空間にマッピングされた１つもしくは複数の制御レジスタを使用してプログラムすることができる。
【００３８】
メールボックス２９０およびウォッチドッグタイマー２９２は、制御プレーンまたはデータプレーンのいずれかからアクセス可能である、共有された機能である。具体的には、メールボックス２９０は、メッセージおよび他の情報を制御プレーンとデータプレーンとの間で渡すために使用することができる。１つの実施形態において、メールボックス２９０は、メッセージおよび他の情報をデータプレーンの異なるアプリケーション機能２５４Ａ〜Ｂの間で渡すために使用することができる。メールボックス２９０は、バッファ、（セマフォ等の）制御レジスタ、およびステータスレジスタを含むことができる。メールボックス２９０をデータプレーンの異なる機能と制御プレーンとの間の中間物として使用することによって、データプレーンの異なる機能と制御プレーンとの間の隔離を潜在的に高め、これは、構成可能なハードウェアプラットフォーム２１０のセキュリティを高めることができる。
【００３９】
ウォッチドッグタイマー２９２は、ハードウェアおよび／またはソフトウェアの故障を検出し、回復するために使用することができる。例えば、ウォッチドッグタイマー２９２は、特定のタスクを行うために要する時間を監視することができ、時間が閾値を超えた場合、ウォッチドッグタイマー２９２は、値を制御レジスタに書き込むこと、割り込みまたはリセットをアサートさせること等のイベントを開始することができる。１つの例として、ウォッチドッグタイマー２９２は、第１のタスクを開始するときに、第１の値で初期化することができる。ウォッチドッグタイマー２９２は、初期化された後に自動的にカウントダウンすることができ、ウォッチドッグタイマー２９２がゼロ値に到達した場合に、イベントを生成することができる。代替的に、ウォッチドッグタイマー２９２がゼロ値に到達する前に第１のタスクが終了した場合、ウォッチドッグタイマー２９２は、第２のタスクを開始するときに、第２の値によって再初期化することができる。第１および第２の値は、それぞれ、第１および第２のタスクを完了するための複雑さ、または仕事量に基づいて選択することができる。
【００４０】
アプリケーション機能２５４Ａ〜Ｂは、アプリケーション論理２４０Ａ〜Ｂ等のデータプレーン機能にアクセスするために使用することができる。１つの例として、アプリケーション機能２５４Ａは、アプリケーション論理２４０Ａにアクセスするために使用することができ、アプリケーション機能２５４Ｂは、アプリケーション論理２４０Ｂにアクセスするために使用することができる。例えば、アプリケーション論理設計（アプリケーション論理構造）２４０Ａ〜Ｂのうちの１つを対象とするトランザクションは、データをサーバコンピュータ２２０にロードさせる、処理させる、および／または返させることができる。具体的には、データプレーン機能は、アプリケーション機能２５４Ａ〜Ｂのうちの１つに割り当てられた範囲内のアドレスを有するトランザクションを使用してアクセスすることができる。例えば、トランザクションは、アプリケーション機能２５４Ａを介して、サーバコンピュータ２２０からアプリケーション論理２４０Ａに送信することができる。具体的には、アプリケーション機能２５４Ａにアドレッシングされたトランザクションは、周辺機器ファブリック２６４を通して、アプリケーション論理２４０Ａにルーティングすることができる。アプリケーション論理２４０Ａからの応答は、周辺機器ファブリック２６４を通してアプリケーション機能２５４Ａにルーティングし、相互接続インターフェース２５６を通し、次いでサーバコンピュータ２２０に戻すことができる。加えて、アプリケーション論理２４０Ａ〜Ｂによって生成されたデータおよびトランザクションは、使用状況およびトランザクション監視層２６６を使用して監視することができる。監視層２６６は、潜在的に、予め定義されたルールに違反するトランザクションまたはデータを識別することができ、また、制御プレーンを通じて送信される警報を生成することができる。追加的または代替的に、監視層２６６は、監視層２６６の任意の基準に違反するアプリケーション論理２４０Ａ〜Ｂによって生成された任意のトランザクションを終了することができる。加えて、監視層２６６は、情報に関する統計を収集し、制御プレーンからアクセスすることができるように、アプリケーション論理２４０Ａ〜Ｂに、またはそこから移動する情報を分析することができる。
【００４１】
相互接続インターフェース２５６は、物理的相互接続２３０全体にわたってアプリケーション機能２５４Ａ〜Ｂの帯域幅を分配するための、調停論理（調節論理回路）２５７を含むことができる。具体的には、調停論理２５７は、キューからのどのトランザクションを、またはアプリケーション機能２５４Ａ〜Ｂに由来するどのトランザクションのリストを送信するべきかを選択することができる。１つの例として、調停論理２５７は、各アプリケーション機能２５４Ａ〜Ｂと関連付けられた帯域幅が物理的相互接続２３０の利用可能帯域幅の予め定義されたまたはプログラムされた分割にマッチするように、トランザクションの順序を選択することができる。具体的には、調停論理２５７は、物理的相互接続２３０を通じて各アプリケーション機能２５４Ａ〜Ｂによって転送されたデータ量の履歴を調査することができ、次のトランザクションは、異なるアプリケーション機能２５４Ａ〜Ｂの間で、帯域幅の指定された分配を維持するように選択することができる。別の例として、調停論理２５７は、タイムスロットを各アプリケーション機能２５４Ａ〜Ｂに割り当てることができ、所与のアプリケーション機能からのトランザクションは、それぞれのアプリケーション機能のタイムスロット中にだけ送信することができる。したがって、アプリケーション機能２５４Ａからのトランザクションは、アプリケーション機能２５４Ａに割り当てられたタイムスロット中にだけ送信することができる、アプリケーション機能２５４Ｂからのトランザクションは、アプリケーション機能２５４Ｂに割り当てられたタイムスロット中にだけ送信することができる、等である。
【００４２】
データはまた、ダイレクトメモリアクセス（ＤＭＡ）エンジン２４２をプログラムすることによって、サーバコンピュータ２２０とアプリケーション論理との間で転送することもできる。ＤＭＡエンジン２４２は、ソースの場所から宛先の場所へのＤＭＡの転送をプログラムする、または指定するための制御およびステータスレジスタを含むことができる。１つの例として、ＤＭＡエンジン２４２は、サーバコンピュータ２２０のメモリ２２４内に記憶された情報を、アプリケーション論理２４０内に、または構成可能なハードウェアプラットフォーム２１０のパブリック周辺機器内にプルするようにプログラムすることができる。別の例として、ＤＭＡエンジン２４２は、アプリケーション論理２４０によって生成されたデータをサーバコンピュータ２２０のメモリ２２４にプッシュするようにプログラムすることができる。アプリケーション論理２４０によって生成されたデータは、アプリケーション論理２４０からストリーミングすることができ、またはメモリ２８１もしくは記憶装置２８２等のパブリック周辺機器に書き込むことができる。
【００４３】
アプリケーション論理２４０Ａ〜Ｂは、他の構成可能なハードウェアプラットフォーム２８０と通信することができる。例えば、他の構成可能なハードウェアプラットフォーム２８０は、ＳＥＲＤＥＳ２１２と通信する１つ以上のシリアルラインによって接続することができる。アプリケーション論理２４０Ａ〜Ｂは、異なる構成可能なハードウェアプラットフォーム２８０へのトランザクションを生成することができ、トランザクションは、ＣＨＰファブリック２４４を通して、（ＳＥＲＤＥＳ２１２を介して）構成可能なハードウェアプラットフォーム２８０の対応するシリアルラインにルーティングすることができる。同様に、アプリケーション論理２４０Ａ〜Ｂは、逆のパスを使用して、他の構成可能なハードウェアプラットフォーム２８０から情報を受信することができる。ＣＨＰファブリック２４４は、異なるアクセス特権を異なる再構成可能な領域２４０Ａ〜Ｂのアプリケーション論理に提供するようにプログラムすることができる。この様態で、異なる再構成可能な領域２４０Ａ〜Ｂのアプリケーション論理は、異なるＣＨＰと通信することができる。具体的な一例として、再構成可能な領域２４０Ａは、第１の組のＣＨＰと通信することができ、再構成可能な領域２４０Ｂは、第１の組のＣＨＰと互いに排他的である第２の組のＣＨＰと通信することができる。別の例として、異なる再構成可能な領域２４０Ａ〜Ｂについて、共有されたＣＨＰおよびプライベートＣＨＰを存在させることができる。ＣＨＰファブリック２４４は、異なる再構成可能な領域２４０Ａ〜Ｂの間で共有される、ＣＨＰの帯域幅および／または転送サイズを分配するために使用することができる。
【００４４】
要約すれば、構成可能なハードウェアプラットフォーム２１０の機能は、制御プレーン機能およびデータプレーンまたはアプリケーション機能に分類することができる。制御プレーン機能は、データプレーン能力を監視し、制限するために使用することができる。データプレーン機能は、サーバコンピュータ２２０上で稼働しているユーザのアプリケーションを加速するために使用することができる。制御プレーンおよびデータプレーンの機能を分離することによって、潜在的に、サーバコンピュータ２２０および他のコンピューティングインフラストラクチャのセキュリティおよび可用性を高めることができる。例えば、制御プレーンの中間層が物理的相互接続２３０のトランザクションのフォーマットおよびシグナリングを制御するので、アプリケーション論理２４０は、物理的相互接続２３０へ直接シグナリングすることができない。別の例として、アプリケーション論理２４０は、構成可能なハードウェアプラットフォーム２１０を再構成するために、および／または特権的であり得る管理情報にアクセスするために使用することができるプライベート周辺機器を使用することを阻止することができる。別の例として、アプリケーション論理２４０は、アプリケーション論理２４０とハードマクロとの間の任意の相互作用が中間層を使用して制御されるように、中間層を通して構成可能なハードウェアプラットフォーム２１０のハードマクロにだけアクセスすることができる。
【００４５】
図３は、構成可能なリソースを計算リソース３２０のフリート内に構成するために使用することができる構成データを管理するための論理リポジトリサービス３１０を含む、システム３００の一実施例を示すシステム図である。計算サービスプロバイダは、コンピュータタスクを行うべきときにサービスのユーザが展開する、コンピューティングリソース３２０のフリートを維持することができる。コンピューティングリソース３２０は、ハードウェアアクセラレータとしてプログラムすることができる構成可能な論理リソース３４２を有するサーバコンピュータ３４０を含むことができる。計算サービスプロバイダは、構成可能なハードウェア３４２の構成および動作を管理するために、ソフトウェアサービスを使用してコンピューティングリソース３２０を管理することができる。１つの例として、計算サービスプロバイダは、ユーザによって指定されたアプリケーション論理３３２を摂取し、ユーザの論理設計に基づいて構成可能な論理プラットフォームを構成するための構成データ３３６を生成し、そして、要求３６０に応じて有効な構成データ３６２をダウンロードして構成可能な論理プラットフォームのインスタンスを構成するための、論理リポジトリサービス３１０を実行することができる。ダウンロード要求３６０は、アプリケーション論理３３２を開発したユーザからのもの、またはアプリケーション論理３３２を使用するライセンスを獲得したユーザからのものであり得る。したがって、アプリケーション論理３３２は、計算サービスプロバイダ、ユーザ、またはユーザもしくは計算サービスプロバイダとは別の第３者によって生成することができる。例えば、アクセラレータの知的財産（ＩＰ）のマーケットプレイスは、計算サービスプロバイダのユーザに提供することができ、ユーザは、マーケットプレイスからアクセラレータを選択することによって、潜在的に、それらのアプリケーションの速度を高めることができる。
【００４６】
論理リポジトリサービス３１０は、ウェブサービス等のネットワークアクセス可能サービスとすることができる。ウェブサービスは、一般的に、クラウドコンピューティングにおいて使用される。ウェブサービスは、ウェブまたはクラウドを通じてネットワークアドレスで提供されるソフトウェア機能である。クライアントは、サーバに対するウェブサービス要求を開始し、サーバは、要求を処理して、適切な応答を返す。クライアントウェブサービス要求は、典型的に、例えばＡＰＩ要求を使用して開始される。簡潔さの目的で、ウェブサービス要求は、下では一般にＡＰＩ要求として記述されるが、他のウェブサービス要求を作製することができることを理解されたい。ＡＰＩ要求は、典型的にＪＳＯＮまたはＸＭＬで表される、定義された要求応答メッセージシステムに対するプログラマチックインターフェースシステムであり、これは、ウェブを介して、最も一般的にはＨＴＴＰベースのウェブサーバを介して公表される。したがって、特定の実装形態において、ＡＰＩは、拡張マークアップ言語（ＸＭＬ）またはＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ）とすることができる応答メッセージの構造の定義と共に、一組のハイパーテキストトランスファープロトコル（ＨＴＴＰ）として定義することができる。ＡＰＩは、固有のタスクを達成すること、またはソフトウェア構成要素との相互作用を可能にすることを含むアクションを行う、一組の機能またはルーチンを特定することができる。ウェブサービスがＡＰＩ要求をクライアントデバイスから受信すると、ウェブサービスは、要求に対する応答を生成し、要求内に識別されるエンドポイントに対する応答を送信することができる。追加的または代替的に、ウェブサービスは、要求内に識別されるエンドポイントに対する応答を生成することなく、ＡＰＩ要求に応じてアクションを行うことができる。
【００４７】
論理リポジトリサービス３１０は、ＡＰＩ要求３３０を受信して、サーバコンピュータ３４０の構成可能なハードウェア３４２等の構成可能なハードウェアプラットフォームのための構成データを生成することができる。例えば、ＡＰＩ要求３３０は、開発者、または計算サービスプロバイダのパートナーユーザによって考案され得る。要求３３０は、論理設計、構成可能なハードウェアプラットフォーム、ユーザ情報、アクセス特権、生産状況に関するデータおよび／またはメタデータを指定するためフィールド、ならびに入力、出力、および論理リポジトリサービス３１０のユーザに関する情報を説明するための種々の追加的なフィールドを含むことができる。具体的な例として、要求は、設計の説明、生産状態（トライアルまたは生産等）、サービスの入力または出力の暗号化された状態、入力ファイル（ハードウェア設計ソースコード等）を記憶するための場所の参照、入力ファイルのタイプ、構成可能なハードウェアのインスタンスタイプ、および出力ファイルまたはレポートを記憶するための場所の参照を含むことができる。特に、要求は、構成可能なハードウェアプラットフォーム上に実装するためのアプリケーション論理３３２を指定するハードウェア設計の参照を含むことができる。具体的には、アプリケーション論理３３２および／またはホスト論理３３４の仕様は、ハードウェア記述言語（ＨＤＬ）で書かれたソースコード等の一群のファイル、論理合成ツールによって生成されたネットリスト、ならびに／または場所およびルートツールによって生成された配置され、ルーティングされた論理ゲートとすることができる。
【００４８】
計算リソース３２０は、インスタンスタイプによって分類された数多くの異なるタイプのハードウェアおよびソフトウェアを含むことができる。特に、インスタンスタイプは、リソースのハードウェアおよびソフトウェアの少なくとも一部分を指定する。例えば、ハードウェアリソースとしては、様々なパフォーマンスレベル（例えば、異なるクロックスピード、アーキテクチャ、キャッシュサイズ、等）の中央処理ユニット（ＣＰＵ）を有するサーバ、コプロセッサ（グラフィックス処理ユニット（ＧＰＵ）および構成可能な論理等）を有する、および有しないサーバ、メモリおよび／またはローカル記憶の様々な容量およびパフォーマンスを有するサーバ、ならびに異なるネットワークパフォーマンスレベルを有するサーバを挙げることができる。例示的なソフトウェアリソースとしては、異なるオペレーティングシステム、アプリケーションプログラム、およびドライバを挙げることができる。１つの例示的なインスタンスタイプは、構成可能なハードウェア３４２と通信する中央処理ユニット（ＣＰＵ）３４４を含むサーバコンピュータ３４０を備えることができる。構成可能なハードウェア３４２は、例えば、ＦＰＧＡ、プログラマブル論理アレイ（ＰＬＡ）、プログラマブルアレイ論理（ＰＡＬ）、ジェネリックアレイ論理（ＧＡＬ）、またはコンプレックスプログラマブル論理デバイス（ＣＰＬＤ）等の、プログラマブル論理を含むことができる。具体的な例として、「Ｆ１．スモール」インスタンスタイプは、ＦＰＧＡリソースの１つの容量単位を有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ１．ミディアム」インスタンスタイプは、ＦＰＧＡリソースの２つの容量単位を有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ１．ラージ」インスタンスタイプは、ＦＰＧＡリソースの８つの容量単位を有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ２．ラージ」インスタンスタイプは、ＦＰＧＡリソースの８つの容量単位を有する第２のタイプのサーバコンピュータを含むことができる。構成可能なハードウェア３４２は、領域３４６および３４８等の、複数のプログラマブル論理の領域を含むことができる。
【００４９】
論理リポジトリサービス３１０は、ＡＰＩ要求３３０を受信することに応じて、構成データ３３６を生成することができる。生成された構成データ３３６は、アプリケーション論理３３２およびホスト論理３３４に基づくことができる。具体的には、生成された構成データ３３６は、構成可能なハードウェア３４２がアプリケーション論理３３２およびホスト論理３３４によって指定された機能を行うように、該構成可能なハードウェアをプログラムまたは構成するために使用することができる情報を含むことができる。１つの例として、計算サービスプロバイダは、ＣＰＵ３４４と構成可能なハードウェア３４２とをインターフェースするための論理を含むホスト論理３３４を生成することができる。具体的には、ホスト論理３３４は、全てＣＰＵ−アプリケーション論理トランザクションがホスト論理３３４を通過するように、アプリケーション論理３３２がＣＰＵ３４４と直接通信することからマスキングまたはシールドするための論理を含むことができる。この様態で、ホスト論理３３４は、潜在的に、アプリケーション論理３３２によって導入することができるセキュリティおよび可用性リスクを低減させることができる。
【００５０】
構成データ３３６を生成することは、アプリケーション論理３３２のチェックおよび／もしくは試験を行うこと、アプリケーション論理３３２をホスト論理３３４ラッパーに統合すること、アプリケーション論理３３２を合成すること、ならびに／またはアプリケーション論理３３２を配置し、ルーティングすることを含むことができる。アプリケーション論理３３２をチェックすることは、アプリケーション論理３３２が計算サービスプロバイダの１つ以上の基準に従うことを検証することができる。例えば、アプリケーション論理３３２を分析して、ホスト論理３３４にインターフェースするための信号および／または論理機能が存在するかどうかを判定することができる。特に、分析は、検証試験一式に対してソースコードを分析すること、および／またはアプリケーション論理３３２を稼働させること含むことができる。検証試験は、アプリケーション論理がホスト論理と互換性があることを確認するために使用することができる。別の例として、アプリケーション論理３３２を分析して、アプリケーション論理３３２が、指定されたインスタンスタイプの指定領域（例えば、領域３４６または３４８）内に収まるかどうかを判定することができる。別の例として、アプリケーション論理３３２を分析して、アプリケーション論理３３２が、リング発振器または他の潜在的に有害な回路等の、任意の禁止された論理機能を含むかどうかを判定することができる。別の例として、アプリケーション論理３３２を分析して、アプリケーション論理３３２が、ホスト論理３３４との任意の命名競合、またはホスト論理３３４とインターフェースしていない任意の外部からの出力を有するかどうかを判定することができる。別の例として、アプリケーション論理３３２を分析して、アプリケーション論理３３２が、構成可能なハードウェア３４２の禁止された入力、出力、またはハードマクロへのインターフェースを試みているかどうかを判定することができる。アプリケーション論理３３２が、論理リポジトリサービス３１０のチェックに合格した場合は、構成データ３３６を生成することができる。チェックまたは試験のいずれかで不合格であった場合は、構成データ３３６の生成を中止することができる。
【００５１】
構成データ３３６を生成することは、アプリケーション論理３３２およびホスト論理３３４のソースコードを、構成可能なハードウェア３４２をプログラムまたは構成するために使用することができるデータにコンパイルおよび／または変換することを含むことができる。例えば、論理リポジトリサービス３１０は、アプリケーション論理３３２をホスト論理３３４ラッパーに統合することができる。具体的には、アプリケーション論理３３２は、アプリケーション論理３３２およびホスト論理３３４を含む１つ以上のシステム設計にインスタンス化することができる。例えば、第１のシステム設計は、領域３４６に対応するホスト論理ラッパーのアプリケーション論理３３２のインスタンスを生成することができ、第２のシステム設計は、領域３４８に対応するホスト論理ラッパーのアプリケーション論理３３２のインスタンスを生成することができる。統合したシステム設計の各々は、論理合成プログラムを使用して合成し、システム設計のための１つ以上のネットリストを作成することができる。各ネットリストは、配置およびルーティングプログラムを使用して、システム設計に指定されたインスタンスタイプのために配置し、ルーティングすることができる。各配置され、ルーティングされた設計は、構成可能なハードウェア３４２をプログラムするために使用することができる構成データ３３６に変換することができる。例えば、構成データ３３６は、配置およびルーティングプログラムから直接出力することができる。したがって、生成された構成データは、領域３４６および３４８等の１つ以上領域に配置されるアプリケーション論理３３２を伴って構成可能なハードウェア３４２をプログラムするために使用することができるデータを含むことができる。
【００５２】
１つの例として、生成された構成データ３３６は、ＦＰＧＡの構成可能な論理の全部または一部分を構成するための完全なまたは部分的なビットストリームを含むことができる。ＦＰＧＡは、構成可能な論理および非構成可能な論理を含むことができる。構成可能な論理は、組み合わせ論理および／またはルックアップテーブル（ＬＵＴ）、ならびに連続論理要素（フリップフロップおよび／またはラッチ等）を備えるプログラマブル論理ブロック、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ（ＲＡＭ）、デジタル信号処理ビットスライス（ＤＳＰ）、ならびにプログラマブル入力／出力ピンを含むことができる。ビットストリームは、構成論理（例えば、構成アクセスポート）を使用して、構成可能な論理のオンチップメモリにロードすることができる。オンチップメモリ内にロードされた値を使用して、構成可能な論理がビットストリームによって指定される論理機能を行うように、構成可能な論理を制御することができる。加えて、構成可能な論理は、互いに独立して構成することができる異なる領域（領域３４６および３４８等）に分けることができる。１つの例として、フルビットストリームを使用して、構成可能な論理を領域全体にわたって構成することができ、部分ビットストリームを使用して、構成可能な論理領域の一部分だけを構成することができる。具体的な例として、第１の部分的なビットストリームを使用して、アプリケーション論理３３２を有する領域３４６を構成することができ、第２の部分的なビットストリームを使用して、アプリケーション論理３３２を有する領域３４８を構成することができ、第３の部分的なビットストリームを使用して、１つ以上の領域を、ホスト論理３３４を有する領域３４６および３４８の外側に構成することができる。非構成可能な論理は、入力／出力ブロック（例えば、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）ブロックおよびギガビットトランシーバ）等の、ＦＰＧＡ内で特定の機能を行うハードマクロと、アナログ−デジタル変換器と、メモリ制御ブロックと、試験アクセスポートと、構成データを構成可能な論理にロードするための構成論理と、を含むことができる。
【００５３】
論理リポジトリサービス３１０は、生成された構成データ３３６を論理リポジトリデータベース３５０に記憶する。論理リポジトリデータベース３５０は、磁気ディスク、ダイレクトアタッチトストレージ、ネットワークアタッチトストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、独立した複数のディスクからなる冗長配列（ＲＡＩＤ）、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的な方式で情報を記憶するために使用することができ、かつ論理リポジトリサービス３１０によってアクセスすることができる任意の他の媒体を含む、リムーバブルまたは非リムーバブル媒体に記憶することができる。加えて、論理リポジトリサービス３１０を使用して、（アプリケーション論理３３２およびホスト論理３３４の仕様等の）入力ファイル、および論理設計および／または論理リポジトリサービス３１０のユーザに関するメタデータを記憶するために使用することができる。例えば、生成された構成データ３３６は、例えば、ユーザ識別子、１つまたは複数のインスタンスタイプ、インスタンスタイプの領域、マーケットプレイス識別子、マシンイメージ識別子、および構成可能なハードウェア識別子等の、１つ以上の特性によってインデックスを付けることができる。
【００５４】
論理リポジトリサービス３１０は、構成データをダウンロードするためのＡＰＩ要求３６０を受信することができる。例えば、要求３６０は、計算リソース３２０のユーザが計算リソース３２０内の新しいインスタンス（例えば、Ｆ１インスタンス）を開始する、または展開するときに生成することができる。別の例として、要求３６０は、オペレーティングインスタンスで実行するアプリケーションからの要求に応じて生成することができる。要求３６０は、ソースおよび／または宛先インスタンスの参照、ダウンロードする構成データ（例えば、インスタンスタイプ、インスタンスタイプの領域、マーケットプレイス識別子、マシンイメージ識別子、もしくは構成可能なハードウェア識別子）の参照、ユーザ識別子、認可トークン、ならびに／またはダウンロードする構成データを識別するための、および／もしくは構成データへのアクセスを許可するための他の情報、を含むことができる。構成データを要求するユーザが、構成データにアクセスする許可を与えられた場合は、論理リポジトリデータベース３５０から構成データを取り出すことができ、１つ以上の構成可能な領域に対応する有効な構成データ３６２（例えば、フルまたは部分ビットストリーム）を要求元インスタンス（例えば、サーバコンピュータ３４０）にダウンロードすることができる。有効な構成データ３６２は、宛先インスタンスの構成可能な論理の１つ以上領域を構成するために使用することができる。例えば、有効な構成データ３６２は、領域３４６だけ、または構成可能なハードウェア３４２の領域３４８だけを構成するために使用することができる。
【００５５】
論理リポジトリサービス３１０は、有効な構成データ３６２を要求元インスタンスにダウンロードすることができることを検証することができる。検証は、論理リポジトリサービス３１０によって複数の異なる位置で起こり得る。例えば、検証は、アプリケーション論理３３２がホスト論理３３４と互換であることを検証することを含むことができる。特に、試験の回帰スイートは、シミュレータ上で実行して、アプリケーション論理３３２が設計に加えられた後に、予想通りにホスト論理３３４を行うことを検証することができる。追加的または代替的に、アプリケーション論理３３２が、ホスト論理３３４の再構成可能な領域とは別の再構成可能な領域にだけ残留するように指定されることを検証することができる。別の例として、検証は、有効な構成データ３６２が、ダウンロードするインスタンスタイプと互換であることを検証することを含むことができる。別の例として、検証は、要求元が、有効な構成データ３６２にアクセスする許可を与えられていることを検証することを含むことができる。検証チェックのいずれかが不合格であった場合、論理リポジトリサービス３１０は、有効な構成データ３６２をダウンロードする要求を拒絶することができる。したがって、論理リポジトリサービス３１０は、潜在的に、コンピューティングリソース３２０のセキュリティおよび可用性を保護することができ、一方で、ユーザがコンピューティングリソース３２０のハードウェアをカスタマイズすることを可能にする。
【００５６】
図４は、本明細書で説明される実施形態を使用することができる１つの環境を例示する、ネットワークベースの計算サービスプロバイダ４００のコンピューティングシステム図である。背景として、計算サービスプロバイダ４００（すなわち、クラウドプロバイダ）は、エンドレシピエントのコミュニティへの貢献として、コンピューティングおよび記憶容量の送達が可能である。例示的な一実施形態において、計算サービスプロバイダは、組織によって、またはその組織に代わって編成するために確立することができる。すなわち、計算サービスプロバイダ４００は、「プライベートなクラウド環境」を提供することができる。別の実施形態において、計算サービスプロバイダ４００は、マルチテナント環境をサポートし、複数の顧客は、独立して動作する（すなわち、パブリッククラウド環境）。一般に言えば、計算サービスプロバイダ４００は、次のモデル、すなわち、サービスとしてのインフラストラクチャ（「ＩａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、および／またはサービスとしてのソフトウェア（「ＳａａＳ」）を提供することができる。他のモデルを提供することができる。ＩａａＳモデルの場合、計算サービスプロバイダ４００は、物理または仮想マシン、および他のリソースとして、コンピュータを提供することができる。仮想マシンは、下でさらに説明するように、ハイパーバイザによって、ゲストとして稼働させることができる。ＰａａＳモデルは、オペレーティングシステム、プログラミング言語実行環境、データベース、およびウェブサーバを含むことができる、コンピューティングプラットフォームを送達する。アプリケーション開発者らは、基礎をなすハードウェアおよびソフトウェアを購入および管理するためのコストを伴うことなく、計算サービスプロバイダプラットフォーム上で該開発者らのソフトウェアソリューションを開発し、稼働させることができる。加えて、アプリケーション開発者らは、計算サービスプロバイダプラットフォームの構成可能なハードウェア上で該開発者らのハードウェアソリューションを開発し、稼働させることができる。ＳａａＳモデルは、計算サービスプロバイダにおけるアプリケーションソフトウェアのインストールおよび動作を可能にする。いくつかの実施形態において、エンドユーザは、ウェブブラウザまたは他の軽量のクライアントアプリケーションを稼働させる、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォンなどのネットワーク化された顧客デバイスを使用して、計算サービスプロバイダ４００にアクセスする。当業者は、計算サービスプロバイダ４００を「クラウド」環境として説明することができることを認識するであろう。
【００５７】
特定の例示される計算サービスプロバイダ４００は、複数のサーバコンピュータ４０２Ａ〜４０２Ｃを含む。３台のサーバコンピュータだけが示されるが、任意の数を使用することができ、大規模施設は、何千台ものサーバコンピュータを含むことができる。サーバコンピュータ４０２Ａ〜４０２Ｃは、ソフトウェアインスタンス４０６Ａ〜４０６Ｃを実行するためのコンピューティングリソースを提供することができる。１つの実施形態において、ソフトウェアインスタンス４０６Ａ〜４０６Ｃは、仮想マシンである。当技術分野で知られているように、仮想マシンは、物理マシンのようにアプリケーションを実行するマシン（すなわち、コンピュータ）のソフトウェア実装のインスタンスである。仮想マシンの例において、サーバ４０２Ａ〜４０２Ｃのそれぞれは、ハイパーバイザ４０８、または単一のサーバ上で複数のソフトウェアインスタンス４０６の実行を可能にするように構成された別のタイプのプログラムを実行するように構成することができる。加えて、ソフトウェアインスタンス４０６のそれぞれは、１つ以上のアプリケーションを実行するように構成することができる。
【００５８】
本明細書に開示される実施形態は、主に仮想マシンの文脈で説明されるが、他のタイプのインスタンスを、本明細書に開示される概念および技術と共に利用することができることを理解されたい。例えば、本明細書に開示される技術は、記憶リソース、データ通信リソース、および他のタイプのコンピューティングリソースと共に利用することができる。本明細書に開示される実施形態はまた、仮想マシンインスタンスを利用することなく、コンピュータシステム上でアプリケーションの全てまたは一部分を直接実行することができる。
【００５９】
サーバコンピュータ４０２Ａ〜４０２Ｃは、異なるハードウェアリソースまたはインスタンスタイプの異種の集合体を含むことができる。ハードウェアインスタンスタイプのいくつかは、計算サービスプロバイダ４００のユーザによって少なくとも部分的に構成可能である、構成可能なハードウェアを含むことができる。インスタンスタイプの１つの例は、構成可能なハードウェア４０４Ａと通信する、サーバコンピュータ４０２Ａを含むことができる。具体的には、サーバコンピュータ４０２Ａおよび構成可能なハードウェア４０４Ａは、ＰＣＩｅ等のローカル相互接続を通じて通信することができる。インスタンスタイプの別の例は、サーバコンピュータ４０２Ｂと、構成可能なハードウェア４０４Ｂとを含むことができる。例えば、構成可能な論理４０４Ｂは、マルチチップモジュール内に、またはサーバコンピュータ４０２ＢのＣＰＵと同じダイ上に集積することができる。インスタンスタイプのさらに別の例は、いかなる構成可能なハードウェアも伴わないサーバコンピュータ４０２Ｃを含むことができる。したがって、構成可能な論理を有する、および有しないハードウェアインスタンスタイプを、計算サービスプロバイダ４００のリソース内に存在させることができる。
【００６０】
１つ以上のサーバコンピュータ４２０は、サーバコンピュータ４０２およびソフトウェアインスタンス４０６の動作を管理するためのソフトウェア構成要素を実行するために予約することができる。例えば、サーバコンピュータ４２０は、管理構成要素４２２を実行することができる。顧客は、管理構成要素４２２にアクセスして、顧客によって購入されたソフトウェアインスタンス４０６の動作の種々の態様を構成することができる。例えば、顧客は、インスタンスを購入、レンタル、またはリースして、ソフトウェアインスタンスの構成を変更することができる。ソフトウェアインスタンスのそれぞれの構成情報は、ネットワークアタッチトストレージ４４０上のマシンイメージ（ＭＩ）４４２として記憶することができる。具体的には、ＭＩ４４２は、ＶＭインスタンスを起動するために使用される情報を記述する。ＭＩは、インスタンス（例えば、ＯＳおよびアプリケーション）のルートボリュームのテンプレート、どの顧客アカウントがＭＩを使用することができるのかを制御するための起動許可、およびインスタンスが起動されたときにインスタンスにアタッチするボリュームを指定するブロックデバイスマッピングを含むことができる。ＭＩはまた、インスタンスが起動されたときに構成可能なハードウェア４０４にロードされる構成可能なハードウェアイメージ（ＣＨＩ）４４２の参照も含むことができる。ＣＨＩは、構成可能なハードウェア４０４の少なくとも一部分をプログラムまたは構成するための構成データを含む。
【００６１】
顧客はまた、要望に応じて、購入したインスタンスをスケーリングする方法に関する設定も指定することができる。管理構成要素は、顧客ポリシーを実行するために、ポリシー文書をさらに含むことができる。自動スケーリング構成要素４２４は、顧客によって定義されたルールに基づいて、インスタンス４０６をスケーリングすることができる。１つの実施形態において、自動スケーリング構成要素４２４は、顧客が、いつ新しいインスタンスをインスタンス化するべきなのかを決定する際に使用するためのスケールアップルール、およびいつ既存のインスタンスを終了するべきなのかを決定する際に使用するためのスケールダウンルールを指定することを可能にする。自動スケーリング構成要素４２４は、異なるサーバコンピュータ４０２または他のコンピューティングデバイスで実行するいくつかの副構成要素で構成することができる。自動スケーリング構成要素４２４は、内部管理ネットワークを通じて利用可能なコンピューティングリソースを監視し、必要に基づいて利用可能なリソースを修正することができる。
【００６２】
展開構成要素４２６は、コンピューティングリソースの新しいインスタンス４０６を展開する際に顧客を支援するために使用することができる。展開構成要素は、誰がアカウントの所有者であるのか、クレジットカード情報、所有者の国等の、インスタンスと関連付けられたアカウント情報へのアクセスを有することができる。展開構成要素４２６は、顧客から、新しいインスタンス４０６を構成するべき方法を記述するデータを含む構成を受信することができる。例えば、構成は、新しいインスタンス４０６でインストールされる１つ以上のアプリケーションを指定すること、新しいインスタンス４０６を構成するために実行されるべきスクリプトおよび／または他のタイプのコードを提供すること、アプリケーションキャッシュが準備するべき方法を指定するキャッシュ論理を提供すること、ならびに他のタイプの情報を提供することができる。展開構成要素４２６は、顧客が提供する構成およびキャッシュ論理を利用して、新しいインスタンス４０６を構成、準備、および起動することができる。構成、キャッシュ論理、および他の情報は、管理構成要素４２２を使用する顧客によって、またはこの情報を展開構成要素４２６に直接提供することによって指定することができる。インスタンスマネージャは、展開構成要素の一部とみなすことができる。
【００６３】
顧客アカウント情報４２８は、マルチテナント環境の顧客と関連付けられた任意の所望の情報を含むことができる。例えば、顧客アカウント情報としては、顧客の一意の識別子、顧客の住所、課金情報、ライセンス情報、インスタンスを起動するためのカスタム化パラメータ、スケジュール情報、自動スケーリングパラメータ、アカウントにアクセスするために使用した以前のＩＰアドレス、顧客がアクセス可能なＭＩおよびＣＨＩのリストなどを挙げることができる。
【００６４】
１つ以上のサーバコンピュータ４３０は、サーバコンピュータ４０２の構成可能なハードウェア４０４への構成データのダウンロードを管理するためのソフトウェア構成要素を実行するために予約することができる。例えば、サーバコンピュータ４３０は、摂取構成要素４３２と、ライブラリ管理構成要素４３４と、ダウンロード構成要素４３６とを備える、論理リポジトリサービスを実行することができる。摂取構成要素４３２は、ホスト論理およびアプリケーション論理設計または仕様を受信すること、ならびに構成可能なハードウェア４０４を構成するために使用することができる構成データを生成することができる。ライブラリ管理構成要素４３４は、論理リポジトリサービスと関連付けられたソースコード、ユーザ情報、および構成データを管理するために使用することができる。例えば、ライブラリ管理構成要素４３４は、ユーザの設計によって生成された構成データを、ネットワークアタッチトストレージ４４０上のユーザによって指定された場所に記憶するために使用することができる。特に、構成データは、ネットワークアタッチトストレージ４４０上の構成可能なハードウェアイメージ４４２内に記憶することができる。加えて、ライブラリ管理構成要素４３４は、（アプリケーション論理およびホスト論理のための仕様の等の）入力ファイル、ならびに論理設計および／または論理リポジトリサービスのユーザに関するメタデータのバージョニングおよび記憶を管理することができる。ライブラリ管理構成要素４３４は、例えば、ユーザ識別子、インスタンスタイプ、市場識別子、マシンイメージ識別子、および構成可能なハードウェア識別子等の１つ以上の特性によって、生成された構成データにインデックスを付けることができる。ダウンロード構成要素４３６は、構成データの要求を認証し、要求が認証されたときに構成データを要求者に伝送するために使用することができる。例えば、サーバコンピュータ４０２Ａ〜Ｂ上のエージェントは、構成可能なハードウェア４０４を使用するインスタンス４０６を起動したときに、要求をダウンロード構成要素４３６に送信することができる。別の例として、サーバコンピュータ４０２Ａ〜Ｂ上のエージェントは、構成可能なハードウェア４０４が動作している間に構成可能なハードウェア４０４を部分的に再構成するようにインスタンス４０６が要求したときに、要求をダウンロード構成要素４３６に送信することができる。
【００６５】
ネットワークアタッチトストレージ（ＮＡＳ）４４０は、記憶空間およびＮＡＳ４４０に記憶されるファイルへのアクセスを提供するために使用することができる。例えば、ＮＡＳ４４０は、ネットワークファイルシステム（ＮＦＳ）等のネットワークファイル共有プロトコル（例えば）を使用して要求を処理するために使用される、１つ以上のサーバコンピュータを含むことができる。ＮＡＳ４４０は、リムーバブル媒体または非リムーバブル媒体を含むことができ、該媒体としては、磁気ディスク、ストレージエリアネットワーク（ＳＡＮ）、独立したディスクの冗長アレイ（ＲＡＩＤ）、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または情報を非一時的な方式で記憶するために使用することができ、また、ネットワーク４５０を通じてアクセスすることができる任意の他の媒体が挙げられる。
【００６６】
ネットワーク４５０は、サーバコンピュータ４０２Ａ〜４０２Ｃ、サーバコンピュータ４２０および４３０、ならびに記憶装置４４０を相互接続するために利用することができる。ネットワーク４５０は、ローカルエリアネットワーク（ＬＡＮ）とすることができ、また、エンドユーザが計算サービスプロバイダ４００にアクセスすることができるように、ワイドエリアネットワーク（ＷＡＮ）４６０に接続することができる。図４に例示されるネットワークトポロジが簡略化されたものであること、およびはるかに多くのネットワークおよびネットワーキングデバイスを利用して、本明細書で開示される種々のコンピューティングシステムを相互接続することができることを認識されたい。
【００６７】
図５は、構成可能なハードウェアプラットフォーム５１０を構成し、そこにインターフェースするための制御プレーンおよびデータプレーンの構成要素を含む、例示的なシステム５００のさらなる詳細を示す。制御プレーンは、構成可能なハードウェアプラットフォーム５１０を初期化、監視、再構成、および分解するためのソフトウェアおよびハードウェア機能を含む。データプレーンは、ユーザのアプリケーションと構成可能なハードウェアプラットフォーム５１０との間で通信するためのソフトウェアおよびハードウェア機能を含む。制御プレーンは、より高い特権レベルを有するユーザまたはサービスによってアクセス可能とすることができ、データプレーンは、より低い特権レベルを有するユーザまたはサービスによってアクセス可能とすることができる。１つの実施形態において、構成可能なハードウェアプラットフォーム５１０は、ＰＣＩｅ等のローカル相互接続を使用して、サーバコンピュータ５２０に接続される。代替の一実施形態において、構成可能なハードウェアプラットフォーム５１０は、サーバコンピュータ５２０のハードウェア内に統合することができる。１つの例として、サーバコンピュータ５２０は、図４の計算サービスプロバイダ４００の複数のサーバコンピュータ４０２Ａ〜４０２Ｂのうちの１台とすることができる。
【００６８】
サーバコンピュータ５２０は、１つ以上のＣＰＵ、メモリ、記憶デバイス、相互接続ハードウェアなどを含む、基礎をなすハードウェア５２２を有する。ハードウェア５２２の上側で稼働する層は、ハイパーバイザまたはカーネル層５２４である。ハイパーバイザまたはカーネル層は、タイプ１またはタイプ２ハイパーバイザとして分類することができる。タイプ１ハイパーバイザは、ホストハードウェア５２２上で直接稼働して、ハードウェアを制御し、また、ゲストオペレーティングシステムを管理する。タイプ２ハイパーバイザは、従来のオペレーティングシステム環境内で稼働する。したがって、タイプ２環境において、ハイパーバイザは、オペレーティングシステム上で稼働する別個の層とすることができ、オペレーティングシステムは、システムハードウェアと相互作用する。異なるタイプのハイパーバイザとしては、Ｘｅｎベースのもの、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、Ｌｉｎｕｘ（登録商標）などが挙げられるが、他のハイパーバイザを使用することができる。管理パーティション５３０（Ｘｅｎハイパーバイザのドメイン０等）は、ハイパーバイザの一部とすること、またはそこから分離することができ、また一般に、ハードウェア５２２にアクセスするために必要なデバイスドライバを含む。ユーザパーティション５４０は、ハイパーバイザ内の隔離の論理ユニットである。各ユーザパーティション５４０には、ハードウェア層のメモリ、ＣＰＵ割り当て、記憶装置、相互接続帯域幅などのそれ自体の部分を割り当てることができる。加えて、各ユーザパーティション５４０は、仮想マシンおよびそれ自体のゲストオペレーティングシステムを含むことができる。このように、各ユーザパーティション５４０は、他のパーティションから独立してそれ自体の仮想マシンをサポートするように設計された抽象的な容量部分である。
【００６９】
管理パーティション５３０は、ユーザパーティション５４０および構成可能なハードウェアプラットフォーム５１０のための管理サービスを行うために使用することができる。管理パーティション５３０は、（展開サービス、論理リポジトリサービス５５０、およびヘルス管理サービス等の）計算サービスプロバイダのウェブサービス、ユーザパーティション５４０、および構成可能なハードウェアプラットフォーム５１０と通信することができる。管理サービスは、ユーザパーティション５４０を起動および終了するための、ならびに構成可能なハードウェアプラットフォーム５１０の構成可能な論理の構成、再構成、および分解を行うためのサービスを含むことができる。具体的な一例として、管理パーティション５３０は、（図４の展開構成要素４２６等の）展開サービスからの要求に応じて、新しいユーザパーティション５４０を起動することができる。要求は、ＭＩおよび／またはＣＨＩの参照を含むことができる。ＭＩは、ユーザパーティション５４０にロードするプログラムおよびドライバを指定することができ、ＣＨＩは、構成可能なハードウェアプラットフォーム５１０にロードする構成データを指定することができる。管理パーティション５３０は、ＭＩと関連付けられた情報に基づいて、ユーザパーティション５４０を初期化することができ、また、ＣＨＩと関連付けられた構成データを構成可能なハードウェアプラットフォーム５１０にロードさせることができる。ユーザパーティション５４０および構成可能なハードウェアプラットフォーム５１０の初期化は、インスタンスを動作可能にするまでの時間を低減させることができるように、同時に起こり得る。
【００７０】
管理パーティション５３０は、構成可能なハードウェアプラットフォーム５１０のプログラミングおよび監視を管理するために使用することができる。この目的のために管理パーティション５３０を使用することによって、構成データおよび構成可能なハードウェアプラットフォーム５１０の構成ポートへのアクセスを制限することができる。具体的には、より低い特権レベルを有するユーザは、管理パーティション５３０に直接アクセスすることが制限され得る。したがって、計算サービスプロバイダのインフラストラクチャを使用することなく、構成可能な論理を修正することができず、構成可能な論理をプログラムするために使用されるいかなる第三者ＩＰも、未許可のユーザによって閲覧されることから保護することができる。
【００７１】
管理パーティション５３０は、構成可能なハードウェアプラットフォーム５１０を構成し、そこにインターフェースする制御プレーンのためのソフトウェアスタックを含むことができる。制御プレーンソフトウェアスタックは、サーバコンピュータ５２０に接続された１つ以上の構成可能なハードウェアプラットフォームの構成可能な領域を管理するための、構成可能な論理（ＣＬ）アプリケーション管理層５３２を含むことができる。特に、ＣＬアプリケーション管理層５３２は、（領域５１６Ａおよび５１６Ｂ等の）領域およびそれらの現在の状態を追跡することができる。例えば、状態は、領域が使用中であるか、または未使用であるかを示すことができる。アプリケーション論理設計（アプリケーション論理構造）を構成可能なハードウェアプラットフォーム５１０にロードする要求が受信されると、ＣＬアプリケーション管理層５３２は、アプリケーション論理設計を伴って構成するために利用可能である領域を選択することができ、ＣＬアプリケーション管理層５３２は、選択された領域に対応する構成データを要求することができる。アプリケーション論理設計を使用したインスタンスを終了すると、またはアプリケーション論理設計が分解されると、ＣＬアプリケーション管理層５３２は、領域を別のインスタンスによって、または異なるアプリケーション論理設計のために再使用することができるように、アプリケーション論理設計に対応する領域の状態を未使用に変更する。加えて、ＣＬアプリケーション管理層５３２は、構成可能なハードウェアプラットフォーム５１０の任意の周辺機器のアドレス空間の帯域幅の割り当ておよび分配を管理することができる。具体的な一例として、帯域幅およびアドレス空間は、帯域幅の均一な分割にデフォルト設定することができ、また、構成可能なハードウェアプラットフォーム５１０の異なる領域の間で空間をアドレッシングすることができる。
【００７２】
ＣＬアプリケーション管理層５３２は、（論理リポジトリサービス５５０およびヘルス管理サービス等の）ウェブサービス、構成可能なハードウェアプラットフォーム５１０、およびユーザパーティション５４０と通信するために使用することができる。例えば、ＣＬアプリケーション管理層５３２は、ユーザパーティション５４０の開始に応じて、構成データをフェッチする要求を論理リポジトリサービス５５０に発行することができる。ＣＬアプリケーション管理層５３２は、ハードウェア５２２の共有されたメモリを使用して、またはサーバコンピュータ５２０を構成可能なハードウェアプラットフォーム５１０に接続する相互接続を通じてパーティション間メッセージを送信および受信することによって、ユーザパーティション５４０と通信することができる。具体的には、ＣＬアプリケーション管理層５３２は、構成可能なハードウェアプラットフォーム５１０のメールボックス論理５１１に対するメッセージの読み出しおよび書き込みを行うことができる。メッセージは、構成可能なハードウェアプラットフォーム５１０の領域を再構成または分解する、エンドユーザアプリケーション５４１による要求を含むことができる。ＣＬアプリケーション管理層５３２は、構成可能なハードウェアプラットフォーム５１０を再構成する要求に応じて、構成データをフェッチする要求を論理リポジトリサービス５５０に発行することができる。ＣＬアプリケーション管理層５３２は、構成可能なハードウェアプラットフォーム５１０を分解する要求に応じて、分解シーケンスを開始することができる。ＣＬアプリケーション管理層５３２は、ユーザパーティション５４０への通信パスが機能しているかどうかを判定するために、ウォッチドッグ関連のアクティビティを行うことができる。
【００７３】
制御プレーンソフトウェアスタックは、構成データを構成可能なハードウェアプラットフォーム５１０にロードすることができるように、構成可能なハードウェアプラットフォーム５１０の構成ポート５１２（例えば、構成アクセスポート）にアクセスするためのＣＬ構成層５３４を含むことができる。例えば、ＣＬ構成層５３４は、構成可能なハードウェアプラットフォーム５１０の完全なまたは部分的な構成を行うために、１つまたは複数のコマンドを構成ポート５１２に送信することができる。ＣＬ構成層５３４は、構成データに従って構成可能な論理をプログラムすることができるように、構成データ（例えば、ビットストリーム）を構成ポート５１２に送信することができる。構成データは、ホスト論理および／またはアプリケーション論理を指定することができる。
【００７４】
制御プレーンソフトウェアスタックは、サーバコンピュータ５２０を構成可能なハードウェアプラットフォーム５１０に接続する物理的相互接続を通じて通信するための管理ドライバ５３６を含むことができる。管理ドライバ５３６は、物理的相互接続を通じて伝送するための管理パーティション５３０に由来するコマンド、要求、応答、メッセージ、およびデータをカプセル化することができる。加えて、管理ドライバ５３６は、物理的相互接続を通じて管理パーティション５３０に送信されたコマンド、要求、応答、メッセージおよびデータをカプセル化解除することができる。具体的には、管理ドライバ５３６は、構成可能なハードウェアプラットフォーム５１０の管理機能５１３と通信することができる。例えば、管理機能５１３は、物理的相互接続に接続されたデバイスの列挙中にアドレス範囲にマッピングされた物理または仮想関数とすることができる。管理ドライバ５３６は、管理機能５１３に割り当てられたアドレス範囲にトランザクションをアドレッシングすることによって、管理機能５１３と通信することができる。
【００７５】
制御プレーンソフトウェアスタックは、ＣＬ管理および監視層５３８を含むことができる。ＣＬ管理および監視層５３８は、物理的相互接続で起こるトランザクションを監視および分析して、構成可能なハードウェアプラットフォーム５１０のヘルス（状態）を決定すること、および／または構成可能なハードウェアプラットフォーム５１０の使用状況特性を決定することができる。
【００７６】
構成可能なハードウェアプラットフォーム５１０は、非構成可能なハードマクロと、構成可能な論理とを含むことができる。ハードマクロは、入力／出力ブロック（例えば、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）ブロックおよびギガビットトランシーバ）、アナログ−デジタル変換器、メモリ制御ブロック、試験アクセスポート、および構成ポート５１２等の、構成可能なハードウェアプラットフォーム５１０内の特定の機能を行うことができる。構成可能な論理は、構成データを構成可能なハードウェアプラットフォーム５１０にロードすることによってプログラムすること、または構成することができる。例えば、構成ポート５１２は、構成データをロードするために使用することができる。１つの例として、構成データは、構成ポート５１２によってアクセス可能な（フラッシュメモリ等の）メモリに記憶することができ、構成データは、構成可能なハードウェアプラットフォーム５１０の（電源投入シーケンス中等の）初期化シーケンス中に自動的にロードすることができる。加えて、構成ポート５１２は、構成可能なハードウェアプラットフォーム５１０内のオフチッププロセッサまたはインターフェースを使用してアクセスすることができる。
【００７７】
構成可能な論理は、ホスト論理および１つ以上のアプリケーション論理設計を含むようにプログラムすることができる。ホスト論理は、エンドユーザがハードマクロへの、および物理的相互接続への制限されたアクセスを有するように、エンドユーザからハードマクロの少なくともいくつかのインターフェースを保護することができる。例えば、ホスト論理は、メールボックス論理５１１と、構成ポート５１２と、管理機能５１３と、ホストインターフェース５１４と、アプリケーション機能５１５とを含むことができる。ホスト論理は、複数のアプリケーション設計が構成可能なハードウェアプラットフォーム５１０上で同時に動作することができるように、もう一方のアプリケーション設計から一方のアプリケーション設計をカプセル化し、シールドすることができる。エンドユーザは、アプリケーション論理を構成可能なハードウェアプラットフォーム５１０の構成可能な領域５１６Ａ〜Ｂのうちの１つにロードさせることができる。エンドユーザは、（アプリケーション機能５１５Ａ〜Ｂを介して）ユーザパーティション５４０から構成可能な領域５１６Ａ〜Ｂと通信することができる。具体的には、第１のユーザパーティションは、アプリケーション機能５１５Ａを使用して構成可能な領域５１６Ａと通信することができ、第２のユーザパーティションは、アプリケーション機能５１５Ｂを使用して構成可能な領域５１６Ｂと通信することができる。
【００７８】
ホストインターフェース論理５１４は、物理的相互接続にシグナリングし、通信プロトコルを実装するための回路（例えば、ハードマクロおよび／または構成可能な論理）を含むことができる。通信プロトコルは、相互接続を通じて通信するためのルールおよびメッセージフォーマットを指定する。加えて、ホストインターフェース論理５１４は、アプリケーション機能５１５Ａ〜Ｂの間で、送出トランザクションの帯域幅を分配することができる。アプリケーション機能５１５Ａ〜Ｂは、ユーザパーティション５４０Ａ〜Ｃのドライバと通信するために使用することができる。具体的には、各アプリケーション機能５１５Ａ〜Ｂは、物理的相互接続に接続されたデバイスの列挙中に、アドレス範囲にマッピングされた物理または仮想関数とすることができる。アプリケーションドライバは、所与のアプリケーション機能５１５Ａ〜Ｂに割り当てられたアドレス範囲にトランザクションをアドレッシングすることによって、アプリケーション機能５１５Ａ〜Ｂのうちの１つと通信することができる。具体的には、アプリケーション機能５１５Ａ〜Ｂは、アプリケーション論理管理ドライバ５４２と通信して、制御プレーンを通じてコマンド、要求、応答、メッセージ、およびデータを交換することができる。各アプリケーション機能５１５Ａ〜Ｂは、アプリケーション論理データプレーンドライバ５４３と通信して、データプレーンを通じてコマンド、要求、応答、メッセージおよびデータを交換することができる。
【００７９】
メールボックス論理５１１は、１つ以上のバッファと、１つ以上の制御レジスタとを含むことができる。例えば、所与の制御レジスタは、特定のバッファと関連付けることができ、レジスタは、管理パーティション５３０とユーザパーティション５４０とを同期させるために、セマフォとして使用することができる。具体的な一例として、パーティションが制御レジスタの値を修正することができる場合は、パーティションをバッファに書き込むことができる。バッファおよび制御レジスタは、管理機能５１３およびアプリケーション機能５１５Ａ〜Ｂからアクセス可能とすることができる。メッセージがバッファに書き込まれるときに、メッセージが終了していることを示すために、別の制御レジスタ（例えば、メッセージ準備完了レジスタ）に書き込むことができる。メッセージ準備完了レジスタは、メッセージが存在するかどうかを判定するために、パーティションによってポーリングすることができ、またはメッセージ準備完了レジスタが書き込まれることに応じて、割り込みを生成し、パーティションに伝送することができる。
【００８０】
ユーザパーティション５４０は、エンドユーザアプリケーション５４０を構成可能なハードウェアプラットフォーム５１０にインターフェースするためのソフトウェアスタックを含むことができる。アプリケーションソフトウェアスタックは、制御プレーンおよびデータプレーンと通信するための機能を含むことができる。具体的には、アプリケーションソフトウェアスタックは、構成可能なハードウェアプラットフォーム５１０へのアクセスをエンドユーザアプリケーション５４０に提供するためのＣＬ−アプリケーションＡＰＩ５４４を含むことができる。ＣＬ−アプリケーションＡＰＩ５４４は、構成可能なハードウェアプラットフォーム５１０および管理パーティション５３０と通信するための方法または機能のライブラリを含むことができる。例えば、エンドユーザアプリケーション５４１は、ＣＬ−アプリケーションＡＰＩ５４４のＡＰＩを使用して、コマンドまたはデータを構成可能なアプリケーション論理５１６に送信することができる。特に、ＣＬ−アプリケーションＡＰＩ５４４のＡＰＩは、アプリケーション論理（ＡＬ）データプレーンドライバ５４３とインターフェースすることができ、これは、対応する構成可能なアプリケーション論理５１６Ａ〜Ｂと通信することができるアプリケーション機能５１５Ａ〜Ｂのうちの１つを標的とするトランザクションを生成することができる。この様態で、エンドユーザアプリケーション５４１は、アプリケーション論理に、データを受信させ、処理させ、および／または該データで応答させて、潜在的に、エンドユーザアプリケーション５４１のタスクを加速することができる。別の例として、エンドユーザアプリケーション５４１は、ＣＬ−アプリケーションＡＰＩ５４４のＡＰＩを使用することによって、コマンドまたはデータを管理パーティション５３０に送信することができる。特に、ＣＬ−アプリケーションＡＰＩ５４４のＡＰＩは、ＡＬ管理ドライバ５４２とインターフェースすることができ、これは、メールボックス論理５１１と通信することができるアプリケーション機能５１５Ａ〜Ｂのうちの１つを標的とするトランザクションを生成することができる。この様態で、エンドユーザアプリケーション５４１は、管理パーティション５３０に、構成可能なハードウェアプラットフォーム５１０に関する動作可能またはメタデータを提供させること、および／または構成可能なアプリケーション論理５１６Ａ〜Ｂを再構成するように要求させることができる。
【００８１】
アプリケーションソフトウェアスタックは、ハイパーバイザまたはカーネル５２４と併せて、エンドユーザアプリケーション５４１によって物理的相互接続を通じて行うことが可能な動作を制限するために使用することができる。例えば、計算サービスプロバイダは、（ファイルをマシンイメージと関連付けること等によって）ＡＬ管理ドライバ５４２、ＡＬデータプレーンドライバ５４３、およびＣＬ−アプリケーションＡＰＩ５４４を提供することができる。これらの構成要素は、エンドユーザよりも高い特権レベルを有するユーザおよびサービスだけがファイルに書き込むことを許可することによって、改変から保護することができる。ＡＬ管理ドライバ５４２およびＡＬデータプレーンドライバ５４３は、対応するアプリケーション機能５１５Ａ〜Ｂのアドレス範囲内のアドレスだけを使用するように制限することができる。加えて、入力／出力メモリ管理ユニット（Ｉ／Ｏ  ＭＭＵ）は、相互接続トランザクションを、対応するアプリケーション機能５１５Ａ〜Ｂまたは管理機能５１３のアドレス範囲内にあるように制限することができる。具体的な一例として、ユーザパーティション５４０Ａは、アプリケーション機能５１５Ａ、およびアプリケーション論理５１６Ａのその対応する構成可能な領域を使用するように割り当てることができる。ユーザパーティション５４０Ｂは、アプリケーション機能５１５Ｂ、およびアプリケーション論理５１６Ｂのその対応する構成可能な領域を使用するように割り当てることができる。Ｉ／Ｏ  ＭＭＵは、ユーザパーティション５４０Ａがアプリケーション機能５１５Ａに書き込むことだけしかできないように、アプリケーション機能５１５Ａがユーザパーティション５４０Ａに書き込むことだけしかできないように、ユーザパーティション５４０Ｂがアプリケーション機能５１５Ｂに書き込むことだけしかできないように、およびアプリケーション機能５１５Ｂがユーザパーティション５４０Ｂに書き込むことだけしかできないように、アクセス制限を実施することができる。
【００８２】
図６は、構成データをフェッチし、構成データを使用して、マルチテナント環境の構成可能なハードウェアのインスタンスを構成し、そして構成可能なハードウェアのインスタンスを使用する例示的な方法６００のシーケンス図である。このシーケンス図は、構成可能な論理を構成するために使用される計算サービスインフラストラクチャの異なる要素によって使用される一連のステップを例示する。１つの例として、計算サービスプロバイダのインフラストラクチャ構成要素は、マーケットプレイス６１０と、顧客インスタンス６１２と、制御プレーン６１４と、構成可能なハードウェアプラットフォーム６１６と、論理リポジトリサービス６１８とを含むことができる。マーケットプレイスサービス６１０は、エンドユーザによって、または計算サービスプロバイダのエンドユーザにそれらのアクセラレータを提供もしくは販売する独立したハードウェア開発者によって作成される、ハードウェアアクセラレータのための構成データを受信することができる。マーケットプレイスサービス６１０は、エンドユーザが自分達のニーズに適したハードウェアアクセラレータを見出すことができるように、購入のためにまたはライセンス付与のために入手可能であるアクセラレータのリストを提供することができる。顧客インスタンス６１２は、エンドユーザが計算サービスプロバイダのリソースを展開することに応じて起動されるサーバコンピュータおよびその関連ソフトウェアとすることができる。顧客インスタンスは、構成可能なハードウェアプラットフォーム６１６の構成を管理するために使用することができる制御プレーンソフトウェア６１４を含むことができる。構成可能なハードウェアプラットフォーム６１６は、上で説明したように、再構成可能な論理と、ホスト論理とを含むことができる。論理リポジトリサービス６１８は、例えば、製品コード、マシンインスタンス識別子、および／または構成可能なハードウェア識別子によってインデックスを付すことができる、構成データのリポジトリを含むことができる。論理リポジトリサービス６１８は、インデックスのうちの１つを使用して構成データの要求を受信することができ、また、構成データを制御プレーンに返すことができる。
【００８３】
計算サービスプロバイダインフラストラクチャの構成要素は、顧客インスタンス６１２の展開および使用中に、種々のフェーズで使用することができる。例えば、このフェーズとしては、構成データフェッチングフェーズ６２０、アプリケーション論理構造フェーズ６３０、およびアプリケーションフェーズ６４０を挙げることができる。
【００８４】
構成データフェッチングフェーズ６２０は、アプリケーション論理設計およびアプリケーション論理を配置するための再構成可能な領域を識別することを含むことができる。アプリケーション論理のための、および再構成可能な領域に対応する構成データは、論理リポジトリサービス６１８からフェッチすることができる。具体的には、計算サービスのエンドユーザは、６２２で、マーケットプレイスサービス６１０を使用して、マシンインスタンスをサブスクライブし、起動することができる。マーケットプレイスサービス６１０は、６２４で、顧客インスタンス６１２を初期化することができるように、マシンイメージをサーバコンピュータにロードさせることができる。マシンイメージは、エンドユーザによって、および計算サービスプロバイダによって提供される制御プレーンソフトウェアによって書き込まれる、および／または使用される、アプリケーションソフトウェアを含むことができる。仮想マシンインスタンスが顧客のためにブートされている間に、アプリケーション論理の要求６２６を制御プレーン６１４に送信することができる。制御プレーン６１４は、アプリケーション論理を特定の未使用領域、または構成可能なハードウェアプラットフォーム６１６の領域にマッピングすることができる。制御プレーン６１４に再構成可能な領域を選択させることによって、領域を選択する詳細を顧客インスタンス６１２から取り出すことができる。制御プレーン６１４は、次いで６２８で、論理リポジトリサービス６１８からアプリケーション論理および再構成可能な領域に対応する構成データをフェッチする要求を送信することができる。６２９で、論理リポジトリサービス６１８は、構成データで応答することができる。したがって、６１４の制御プレーンソフトウェアは、アプリケーション論理を構成可能なハードウェアプラットフォームにロードして、構成可能なハードウェアプラットフォームの選択領域を構成するように、アプリケーション論理に対応する構成データのコピーを受信することができる。
【００８５】
構成フェーズ６３０は、構成データを構成可能なハードウェアプラットフォーム６１６にロードすることを含むことができる。構成フェーズ６３０は、６３２で、構成可能なハードウェアプラットフォームをクリーニングすることを含むことができる。例えば、６３２で構成可能なハードウェアプラットフォームをクリーニングすることは、以前の顧客のデータが現在の顧客によって観察できないように、構成可能なハードウェアプラットフォームおよび／または内部メモリ（例えば、ブロックＲＡＭ）と通信する任意の外部メモリ（例えば、パブリック周辺機器）に書き込むことを含むことができる。６３２でメモリをクリーニングすることは、メモリの記憶場所に、全てゼロを書き込むこと、全て１を書き込むこと、および／またはランダムなパターンを書き込むことを含むことができる。加えて、構成可能なハードウェアプラットフォーム６１６の構成可能な論理メモリは、完全にまたは部分的にスクラブすることができる。構成可能なハードウェアプラットフォーム６１６をクリーニングした後に、６３４で、構成可能なハードウェアプラットフォーム６１６にロードされるホスト論理バージョンを制御プレーン６１４に返すことができる。ホスト論理バージョンは、６３５で、アプリケーション論理が、構成可能なハードウェアプラットフォーム６１６にロードされるホスト論理と互換であるかどうかを検証するために使用することができる。ホスト論理およびアプリケーション論理が互換でない場合は、構成フェーズ６３０を中止することができる（図示せず）。代替的に、ホスト論理およびアプリケーション論理が互換である場合は、６３６で、構成フェーズ６３０を続けることができる。アプリケーション論理は、６３６でアプリケーション論理を構成可能なハードウェアプラットフォーム６１６の選択された領域にロードすることができるように、制御プレーン６１４から構成可能なハードウェアプラットフォーム６１６にコピーすることができる。６３６でロードした後に、構成可能なハードウェアプラットフォーム６１６は、６３７で、構成可能なハードウェアプラットフォーム６１６にロードした機能（例えば、アプリケーション論理）が準備完了であることを示すことができる。制御プレーン６１４は、６３８で、アプリケーション論理が初期化され、使用する準備ができたことを顧客インスタンス６１２に示すことができる。
【００８６】
アプリケーションフェーズ６４０は、アプリケーション論理が初期化された後に開始することができる。アプリケーションフェーズ６４０は、アプリケーションソフトウェアを顧客インスタンス６１２で実行することと、アプリケーション論理を構成可能なハードウェアプラットフォーム６１６で実行することとを含むことができる。特に、顧客インスタンス６１２のアプリケーションソフトウェアは、６４２で、構成可能なハードウェアプラットフォーム６１６のアプリケーション論理と通信することができる。例えば、アプリケーションソフトウェアは、データをアプリケーション論理に転送させることができ、データは、アプリケーション論理によって処理することができ、処理データおよび／または状態情報は、アプリケーションソフトウェアに返すことができる。アプリケーション論理は、潜在的に、汎用コンピュータのソフトウェアだけを使用することと比較して処理速度を加速することができる、専用の、またはカスタマイズされたハードウェアを含むことができる。アプリケーション論理は、顧客インスタンス６１２の期間にわたって同じ機能を行うことができ、またはアプリケーション論理は、顧客インスタンス６１２を実行している間に適合させる、または再構成することができる。例えば、顧客にインスタンス６１２で実行するアプリケーションソフトウェアは、異なるアプリケーション論理を構成可能なハードウェアプラットフォーム６１６にロードすることを要求することができる。特に、アプリケーションソフトウェアは、６４４で、構成可能なハードウェアプラットフォーム６１６に要求を発行することができ、該要求は、６４６で、要求を制御プレーン６１４に転送することができる。制御プレーン６１４は、６２８で、新しいアプリケーション論理を論理リポジトリサービス６１８からフェッチすることを始めることができる。新しいアプリケーション論理が稼働中の顧客インスタンスにロードされると、顧客が顧客インスタンス６１２のために変更されていないので、６３２のクリーニングステップを省略することができる。
【００８７】
加えて、分解フェーズ（図示せず）は、顧客データがさらに保護されるように、構成可能なハードウェアプラットフォーム６１６をクリアまたはクリーニングするために使用することができる。例えば、顧客が顧客インスタンス６１２の使用を停止したときに、構成可能なハードウェアプラットフォーム６１６の内部および／または外部メモリをスクラブすることができ、および／またはアプリケーション論理と関連付けられた構成論理メモリを分解シーケンスの一部としてスクラブすることができる。具体的には、内部メモリ、外部メモリ、および／または構成論理メモリは、全てゼロで、全て１で、ランダム値で、および／または予め定義された値で上書きすることができる。例えば、構成論理メモリは、再構成可能な論理を低電力状態になるように構成する値で書き込むことができる。
【００８８】
図７は、構成可能なハードウェアプラットフォームを使用する例示的な方法７００のフロー図である。７１０で、構成可能なハードウェアプラットフォームがホスト論理の動作を行うように、ホスト論理を再構成可能な論理の第１の領域にロードすることができる。ホスト論理は、ホストインターフェースからトランザクションのための制限されたアクセスを実施するために使用される制御プレーン機能を含むことができる。例えば、制御プレーン機能は、制御プレーン機能に割り当てられたアドレス範囲外にあるトランザクションを拒否することができる。加えて、ホスト論理は、アプリケーション論理が、構成可能なハードウェアプラットフォームのハードマクロを使用すること、およびホストデバイスへの物理インターフェースにアクセスすることを限定または制限するための論理を含むことができる。したがって、ホスト論理は、ハードマクロへの、およびコンピューティングインフラストラクチャの他の構成要素へのインターフェースがホスト論理によって管理されるように、アプリケーション論理をカプセル化することができる。
【００８９】
ホスト論理は、一度に、または漸増的にロードすることができる。例えば、ホスト論理は、構成可能なハードウェアプラットフォームのリセット信号のデアサートに応じてロードされる静的論理を含むことができる。具体的な一例として、静的論理に対応する構成データは、構成可能なハードウェアプラットフォームのフラッシュメモリに記憶することができ、フラッシュメモリのコンテンツは、静的ホスト論理を伴って構成可能なハードウェアプラットフォームをプログラムするために使用することができる。１つの実施形態において、静的論理は、介入を伴わずにホストコンピュータ（例えば、顧客インスタンス）によってロードすることができる。追加的または代替的に、ホスト論理は、静的論理をロードした後にロードする再構成可能な論理を含むことができる。例えば、再構成可能なホスト論理は、静的ホスト論理が動作している間に加えることができる。特に、再構成可能なホスト論理は、再構成可能なホスト論理をロードすることを要求するトランザクションを受信した時点でロードすることができる。例えば、トランザクションは、構成可能なハードウェアプラットフォームをホストコンピュータに接続する物理的相互接続を通じてホストコンピュータに伝送することができる。
【００９０】
ホスト論理を静的論理構成要素および再構成可能な論理構成要素に分けることによって、ホスト論理を構成可能なハードウェアプラットフォームに漸増的にロードすることができる。例えば、静的論理は、通信インターフェース、列挙論理、および構成管理論理等のホスト論理の基本機能を含むことができる。通信インターフェースを静的論理に提供することによって、コンピューティングシステムの電源をオンにしたとき、および／またはリセットしたときに、構成可能なハードウェアプラットフォームを物理的相互接続上で発見すること、または列挙することができる。再構成可能な論理は、更新をホスト論理に提供するために、および高レベルの機能をホスト論理に提供するために使用することができる。例えば、いくつかの相互接続技術は、相互接続に取り付けられるデバイスを列挙するための制限時間を有する。ホスト論理を構成可能なハードウェアプラットフォームにロードする時間は、列挙に割り当てられたタイムバジェットに含むことができるので、初期のホスト論理は、比較的迅速にロードされるようにサイズ決定することができる。したがって、静的論理は、構成可能なハードウェアプラットフォームが相互接続技術によって指定された制限時間内で動作可能であり得るように、ホスト論理機能のサブセットとすることができる。再構成可能な論理は、列挙またはブートアップシーケンスが完了した後に、加えられるべき追加的なホスト論理機能を提供することができる。１つの例として、（ＤＭＡエンジン、ＣＨＰファブリック、周辺機器ファブリック、またはパブリック周辺機器インターフェース等の）データプレーンと関連付けられたホスト論理は、静的論理がロードされた後に、再構成可能な論理としてロードすることができる。
【００９１】
７２０で、第１のトランザクションをホストインターフェースで受信することに応じて、第１のアプリケーション論理設計（アプリケーション論理構造）を再構成可能な論理の第２の領域にロードすることができる。再構成可能な論理の第２の領域は、ホスト論理が修正されないように、再構成可能な論理の第１の領域と非オーバーラップとすることができる。加えて、再構成可能な論理の第２の領域は、静的ホスト論理へのインターフェースを有することができる。ホスト論理は、第１のトランザクションを分析して、第１のアプリケーション論理設計がロードされる前に、第１のトランザクションが制御プレーン機能のアクセス基準を満たすことを確実にすることができる。制御プレーンのアクセス基準を満たした場合に、第１のアプリケーション論理設計をロードすることができる。第１のトランザクションは、例えば、所与のアドレス範囲内のアドレスを有することによって、または認可トークンを含むことによって、アクセス基準を満たすことができる。例えば、第１のトランザクションは、アプリケーション論理のロードを開始するために、ホスト論理の制御レジスタに対応するアドレスを含むことができる。別の例として、認可トークンは、要求が認可されたかどうかを判定するために、ホスト論理によって検証することができる。
【００９２】
７３０で、第２のトランザクションをホストインターフェースで受信することに応じて、第２のアプリケーション論理設計（アプリケーション論理構造）を再構成可能な論理の第３の領域にロードすることができる。再構成可能な論理の第３の領域は、ホスト論理および第１のアプリケーション論理設計が修正されないように、再構成可能な論理の第１のおよび第２の領域と非オーバーラップとすることができる。加えて、再構成可能な論理の第３の領域は、静的ホスト論理へのインターフェースを有することができる。第２および第３の領域は、第２の領域と第３の領域との間にいかなる直接通信パスも存在しないように、互いに隔離することができる。第１のトランザクションに類似して、ホスト論理は、第２のトランザクションを分析して、第２のアプリケーション論理設計がロードされる前に、第２のトランザクションが制御プレーン機能のアクセス基準を満たすことを確実にすることができる。
【００９３】
７４０で、第１のアプリケーション論理設計および第２のアプリケーション論理設計のそれぞれのリソースを調停（調節）するために、ホスト論理を使用することができる。１つの例として、ホストインターフェースから情報を伝送するときに、第１のアプリケーション論理設計および第２のアプリケーション論理設計のそれぞれによって使用される帯域幅の量を制御するために、ホスト論理を使用することができる。例えば、ホスト論理は、ホストインターフェースとアプリケーション論理設計のそれぞれとの間のフォーマットおよび制御層を含むことができる。特に、フォーマットおよび制御層は、アプリケーション論理設計のそれぞれからデータを受信するためのストリーミングインターフェースを含むことができる。ストリーミングされたデータは、ホストインターフェースからデータを伝送することができるように、分割（例えば、パケット化）し、フォーマットすることができる。フォーマットおよび制御層は、ホストインターフェースの待ち時間および帯域幅の使用状況を管理することができるように、ストリーミングされたデータを異なるサイズのブロックに分割することができる。例えば、フォーマットおよび制御層は、アプリケーション論理設計のそれぞれに由来するホストインターフェースから伝送されたデータの量を追跡することができ、フォーマットおよび制御層は、異なるアプリケーション論理設計の間で帯域幅を分配することができるように、異なるアプリケーション論理設計を調停することができる。具体的な一例として、帯域幅は、異なるアプリケーション論理設計の間で均等に分けることができる。別の例として、帯域幅の分配は、ホスト論理の制御プレーン機能からアクセス可能である制御レジスタを使用して指定することができる。帯域幅は、伝送されるデータだけを補償する、生の帯域幅（例えば、トランザクションの制御情報を送信するための帯域幅）または有効な帯域幅に基づいて分配することができる。アプリケーション論理設計がトランザクションを直接作成すること、および／または物理的相互接続または異なるアプリケーション論理設計のトランザクションを閲覧することを制限することができるので、ホストインターフェースとアプリケーション論理設計との間にフォーマットおよび変換層を間置することによって、潜在的に、ホストコンピュータのセキュリティおよび可用性を高めることができる。したがって、フォーマットおよび変換層の使用は、物理的相互接続に起こるトランザクションの完全性およびプライバシーを保護することができる。
【００９４】
別の例として、ホスト論理は、第１のアプリケーション論理設計および第２のアプリケーション論理設計のそれぞれによって使用される内部または外部リソースの量を制御するために使用することができる。具体的な一例として、ホスト論理は、アプリケーション論理設計のそれぞれによって使用されるエネルギーまたはパワーの量を制御するために使用することができる。特に、構成可能なハードウェアプラットフォームは、異なるアプリケーション論理設計の間で分けることができる、制限されたパワーバジェットを有することができる。ホスト論理は、設計のサイズ（例えば、ゲートカウント）および設計の１つ以上のクロックの周波数に基づいて、各アプリケーション設計のエネルギー消費を推定することができる。代替的に、アプリケーション論理設計のそれぞれを構成可能なハードウェアプラットフォームにロードするときに、推定されるエネルギー消費をホスト論理の制御レジスタにロードすることができる。ホスト論理は、アプリケーション論理設計が構成可能なハードウェアプラットフォームのパワーバジェットに従うように、アプリケーション論理設計のそれぞれによって消費されるエネルギーを制御するために使用することができる。アプリケーション論理設計によって消費エネルギーを制御することは、アプリケーション論理設計の１つ以上のクロックの周波数をゲーティングまたは変更することと、アプリケーション論理設計の全部または一部分のパワーをゲーティングすることと、または電圧を変更することとを含むことができる。
【００９５】
７５０で、ホスト論理を、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のインターフェースとして使用することができる。上で説明したように、共有された周辺機器は、メモリ、記憶デバイス、および／または他の構成可能なハードウェアプラットフォームを含むことができる。インターフェースは、アプリケーション論理設計に、転送プロトコルの低レベル詳細に従うという負担をかけないように、および（故障を引き起こすこと、または機密情報にアクセスすること等によって）共有された周辺機器が誤用されないように、共有された周辺機器とアプリケーション論理設計との間の全ての転送をフォーマットすることができる。ホスト論理は、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のデータ転送の帯域幅を分配することができる。例えば、帯域幅は、固定分配（例えば、均等加重）またはプログラムされた分配に基づいて分配することができる。ホスト論理は、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のデータ転送のサイズを実施することができる。１つの例として、データ転送のサイズを縮小することによって、転送の待ち時間を低減させることができる。別の例として、データ転送のサイズを増大させることによって、有効な帯域幅または利用度を増加させることができる。
【００９６】
共有された周辺機器は、共有された周辺機器に割り当てられたアドレス範囲内の異なるそれぞれのアドレスによってインデックスが付される複数の機能、レジスタ、および／または記憶場所を含むことができる。異なる機能、レジスタ、および／または記憶装置場所は、各アプリケーション論理設計が、共有された周辺機器の異なる部分への排他的なアクセスを有することができるように、異なるアプリケーション論理設計の間で分けることができる。例えば、共有された周辺機器のアドレスは、複数のアドレス範囲に分けることができ、各アプリケーション論理設計には、異なるアドレス範囲へのアクセスを与えることができる。特に、ホスト論理は、第１のアプリケーション論理設計から共有された周辺機器の第１のアドレス範囲へのアクセスを制限することができ、また、第２のアプリケーション論理設計から共有された周辺機器の第２のアドレス範囲へのアクセスを制限することができる。代替的または追加的に、共有された周辺機器は、共有された機能、レジスタ、および／または記憶場所を有することができる。したがって、各アプリケーション論理設計には、（あるアドレス範囲を使用してアクセス可能な）プライベート部分、および（異なるアドレス範囲を使用してアクセス可能な）共有された周辺機器の共有された部分へのアクセスを与えることができる。
【００９７】
ホスト論理はまた、アプリケーション論理設計のトランザクションを分析するために使用することもできる。例えば、ホスト論理は、アプリケーション論理設計および／またはホスト論理の帯域幅、待ち時間、および他の性能特性等の動作特性を追跡することができる。別の例として、ホスト論理は、トランザクションが予め定義された基準に従っているかどうかを判定するために、トランザクションを分析することができる。トランザクションが基準に従っていない場合、ホスト論理は、潜在的に、アプリケーション論理設計に由来するトランザクションをキャンセルすることができる。
【００９８】
図８は、サーバハードウェア８１０と、集積回路８２０上に構成された複数の顧客論理設計８３０Ａ〜Ｃを有する集積回路８２０とを含む、サーバコンピュータ８００の一実施例を示すシステム図である。サーバハードウェア８１０は、ＣＰＵと、メモリと、コネクタと、インターフェースと、電源と、ファンと、種々の他のハードウェアコンポーネントとを含むことができる。集積回路８２０は、コンピューティングタスクを行うようにプログラムすること、または構成することができる再構成可能な論理を含むことができる。例えば、集積回路８２０は、ＦＰＧＡ、ＣＰＬＤ、または他のプログラマブルハードウエアデバイスとすることができる。集積回路８２０は、サーバハードウェア８１０と集積回路８２０との間に低待ち時間通信パスを提供する相互接続８４０を使用して、サーバハードウェア８１０に接続することができる。例えば、集積回路８２０およびサーバハードウェア８１０は、ＰＣＩ、ＰＣＩ−Ｅｘｐｒｅｓｓ、もしくは他のバス等の通信プロトコル、またはシリアル相互接続プロトコルを使用する相互接続を通じて信号を送信することによって通信することができる。１つの例として、サーバハードウェア８１０および集積回路８２０は、サーバコンピュータ８００のマザーボードに接続することができる。別の例として、集積回路８２０は、サーバコンピュータ８００の拡張スロットに挿入される拡張カードにマウントすることができる。低待ち時間相互接続を使用してサーバハードウェア８１０および集積回路８２０を密結合することによって、集積回路８２０を、サーバハードウェア８１０で実行する数多くの計算集約的なアプリケーションのためのハードウェアアクセラレータとして使用することができる。対照的に、Ｅｔｈｅｒｎｅｔまたはインターネットプロトコル（ＩＰ）ネットワーク等のより高い待ち時間相互接続を通じて接続されるハードウェアアクセラレータは、サーバハードウェアとハードウェアアクセラレータとの間の通信オーバーヘッドのため、アプリケーションを加速するために提供する機会がより少なくなり得る。
【００９９】
集積回路８２０は、ホスト論理８５０と、複数の顧客論理設計８３０Ａ〜Ｃとを含むことができる。ホスト論理８５０は、デバイスの管理可能性およびセキュリティのレベルを実施するために計算サービスプロバイダによって展開される論理とすることができる。ホスト論理８５０は、静的論理と、再構成可能な論理とを含むことができる。例えば、静的論理は、ブート時間にオンボードフラッシュメモリデバイスからロードすることができる。ホスト再構成可能な論理は、内部または外部のフラッシュメモリデバイスおよび専用のマイクロコントローラを使用するブート時間の後に（例えば、ランタイムで）、または相互接続８４０を通じてサーバハードウェア８１０によってロードすることができる。ホスト論理８５０は、顧客論理設計８３０Ａ〜Ｃによって起こる攻撃からサーバコンピュータ８００を保護するために使用することができる。具体的には、ホスト論理８５０は、相互接続８４０へのインターフェースを所有または制御することによって、顧客論理設計８３０Ａ〜Ｃをカプセル化またはサンドボックス化する。具体的な一例として、相互接続８４０は、ＰＣＩ−Ｅｘｐｒｅｓｓとすることができ、ホスト論理８５０は、ホスト論理８５０が集積回路８２０のＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを所有し、また、ＰＣＩ−ＥｘｐｒｅｓｓアドレスならびにＰＣＩ−Ｅｘｐｒｅｓｓバス、デバイス、機能、および代替のルーティング識別子を制御するので、サーバコンピュータ８００をＰＣＩ−Ｅｘｐｒｅｓｓのレベル攻撃から保護することができる。
【０１００】
ホスト論理８５０は、異なる顧客論理設計８３０Ａ〜Ｃの間で（相互接続８４０を通じた帯域幅等の）リソースを分配するために使用することができる調停論理８６０を含むことができる。例えば、顧客論理設計８３０Ａ〜Ｃのそれぞれは、異なる顧客によって動作させることができる。計算サービスプロバイダは、顧客論理設計８３０Ａ〜Ｃを集積回路８２０の異なるそれぞれの再構成可能な論理領域にロードするために、ホスト論理８５０を使用することができる。調停論理８６０は、異なる時間に相互接続８４０への異なる顧客のアクセスを提供することによって、サービスの一貫した質を各顧客に提供することができる。具体的には、各顧客には、ラウンドロビンまたは他のスケジュールされた順序で、相互接続８４０へのアクセスを与えることができる。調停論理８６０は、各顧客論理設計８３０Ａ〜Ｃに提供される帯域幅を、指定された帯域幅の量に制限することができる。例えば、集積回路８２０が顧客論理設計のための４つの異なる再構成可能な論理領域を含む場合、調停論理８６０は、各顧客論理設計に提供される帯域幅を相互接続８４０の利用可能帯域幅の４分の１に制限することができる。この様態で、顧客は、利用可能帯域幅の全てを使い果たすこと等によって、互いに干渉することができず、顧客は、他の顧客が集積回路８２０上で顧客論理設計を実行しているかどうかを直接的または間接的に観察することができない。例えば、顧客は、他の顧客が集積回路８２０で顧客論理設計を実行しているかどうかを観察するために、集積回路８２０とサーバコンピュータ８１０との間の待ち時間または帯域幅を確実に使用することができない。
【０１０１】
図９は、説明される技術革新を実行することができる適切なコンピューティング環境９００の一般的な例を表す。コンピューティング環境９００は、本技術革新を多様な汎用または専用コンピューティングシステムで実行することができるので、使用または機能の範囲に関していかなる限定も示唆することを意図しない。例えば、コンピューティング環境９００は、様々なコンピューティングデバイス（例えば、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータなど）のうちのいずれかとすることができる。
【０１０２】
図９を参照すると、コンピューティング環境９００は、１つ以上の処理ユニット９１０、９１５と、メモリ９２０、９２５とを含む。図９において、この基本構成９３０は、破線内に含まれる。処理ユニット９１０、９１５は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）内のプロセッサ、または任意の他のタイプのプロセッサとすることができる。マルチ処理システムでは、複数の処理ユニットがコンピュータ実行可能命令を実行して、処理能力を高める。例えば、図９は、中央処理ユニット９１０、ならびにグラフィックス処理ユニットまたは共処理ユニット９１５を示す。有形メモリ９２０、９２５は、処理ユニット（複数可）によってアクセス可能である揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこれら２つのいくつかの組み合わせとすることができる。メモリ９２０、９２５は、処理ユニット（複数可）による実行に適したコンピュータ実行可能命令の形態で、本明細書で説明される１つ以上の技術革新を実装するソフトウェア９８０を記憶する。
【０１０３】
コンピューティングシステムは、追加的な特徴を有することができる。例えば、コンピューティング環境９００は、記憶装置９４０と、１つ以上の入力デバイス９５０と、１つ以上の出力デバイス９６０と、および１つ以上の通信接続９７０とを含む。バス、コントローラ、またはネットワーク等の相互接続機構（図示せず）は、コンピューティング環境９００の構成要素を相互接続する。典型的に、オペレーティングシステムソフトウェア（図示せず）は、コンピューティング環境９００内で実行する他のソフトウェアのための動作環境を提供し、コンピューティング環境９００の構成要素の動作を協調させる。
【０１０４】
有形記憶装置９４０は、リムーバブルまたは非リムーバブルとすることができ、該記憶装置としては、磁気ディスク、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または情報を非一時的な方式で記憶するために使用することができ、また、コンピューティング環境９００内でアクセスすることができる任意の他の媒体が挙げられる。記憶装置９４０は、本明細書で説明される１つ以上の技術革新を実装するソフトウェア９８０のための命令を記憶する。
【０１０５】
入力デバイス（複数可）９５０は、キーボード、マウス、ペン、またはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャンデバイス、または入力をコンピューティング環境９００に提供する別のデバイスとすることができる。出力デバイス（複数可）９６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはコンピューティング環境９００からの出力を提供する別のデバイスとすることができる。
【０１０６】
通信接続（複数可）９７０は、通信媒体を通じた別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令、音声、または、ビデオ入力もしくは出力、または変調されたデータ信号内の他のデータ等の情報を伝達する。変調されたデータ信号は、信号内の情報をエンコードするような様態で設定または変更されたその特性のうちの１つ以上を有する信号である。一例として、また、限定されないが、通信媒体は、電気、光、ＲＦ、または他の搬送波を使用することができる。
【０１０７】
開示される方法のいくつかの動作は、提示の便宜のために特定の連続的な順序で説明されるが、下に記載される特定の言葉によって特定の順序が要求されない限り、この説明の様態は、再配列を含むことを理解されたい。例えば、連続的に説明される動作は、いくつかの事例において、再配列される場合があり、または同時に行われる場合がある。その上、簡潔にするために、添付図面は、開示される方法を他の方法と併せて使用することができる種々の方式を示さない場合がある。
【０１０８】
開示される方法のいずれかは、１つ以上のコンピュータ可読記憶媒体（例えば、１つ以上の光媒体ディスク、揮発性メモリ構成要素（ＤＲＡＭまたはＳＲＡＭ等）、または不揮発性メモリ（フラッシュメモリまたはハードドライブ等））に記憶され、また、コンピュータ（例えば、スマートフォン、またはコンピューティングハードウェアを含む他のモバイルデバイスを含む、任意の市販コンピュータ）上で実行される、コンピュータ実行可能命令のように実施することができる。コンピュータ可読記憶媒体という用語は、信号および搬送波等の通信接続を含まない。開示される技術を、ならびに開示される実施形態の実施中に作成され、使用される任意のデータを実装するためのコンピュータ実行可能命令のいずれかは、１つ以上のコンピュータ可読記憶媒体に記憶することができる。コンピュータ実行可能命令は、例えば、専用ソフトウェアアプリケーション、またはウェブブラウザもしくは他のソフトウェアアプリケーション（リモートコンピューティングアプリケーション等）を介してアクセスまたはダウンロードされるソフトウェアアプリケーションの一部とすることができる。そのようなソフトウェアは、例えば、単一のローカルコンピュータ（例えば、任意の適切な市販のコンピュータ）上で、または１つ以上のネットワークコンピュータを使用して（例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、クライアントサーバネットワーク（クラウドコンピューティングネットワーク等）、または他のそのようなネットワークを介して）ネットワーク環境内で実行することができる。
【０１０９】
明確にするため、ソフトウェアベースの実装形態の特定の選択された態様だけを説明する。当技術分野でよく知られている他の詳細は省略する。例えば、開示される技術は、任意の特定のコンピュータ言語またはプログラムに限定されないことを理解されたい。例えば、開示される技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ、または任意の他の適切なプログラミング言語で記述されたソフトウェアによって実施することができる。同様に、開示される技術は、任意の特定のコンピュータまたは特定のタイプのハードウェアに限定されない。適切なコンピュータおよびハードウェアの特定の詳細は、よく知られており、本開示で詳細に説明する必要はない。
【０１１０】
また、本明細書で説明される任意の機能は、ソフトウェアの代わりに１つ以上のハードウェア論理構成要素によって少なくとも部分的に行うことができることを理解されたい。例えば、限定されないが、使用することができるハードウェア論理コンポーネントの例示的なタイプとしては、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップシステム（ＳＯＣ）、コンプレックスプログラマブル論理デバイス（ＣＰＬＤ）などが挙げられる。
【０１１１】
さらに、（例えば、コンピュータに、開示される方法のうちのいずれかを実行させるためのコンピュータ実行可能命令を備える）ソフトウェアベースの実施形態のいずれかを、適切な通信手段を通してアップロード、ダウンロード、またはリモートアクセスすることができる。そのような適切な通信手段としては、例えば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバーケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、および赤外線通信を含む）、電子通信、または他のそのような通信手段が挙げられる。
【０１１２】
本開示の種々の実施形態は、以下の付記を考慮して説明することができる。
１．構成可能な論理プラットフォームであって、
構成可能な論理プラットフォームをプロセッサに接続するための物理的相互接続と、
第１の再構成可能な論理領域に対応する構成データに基づいて構成される論理ブロックを備える、第１の再構成可能な論理領域と、
第２の再構成可能な論理領域に対応する構成データに基づいて構成される論理ブロックを備える、第２の再構成可能な論理領域と、
第１の再構成可能な論理領域が第１の再構成可能な論理領域に対応する構成データに基づいて構成され、第２の再構成可能な論理領域が第２の再構成可能な論理領域に対応する構成データに基づいて構成されるように、構成データを第１および第２の再構成可能な論理領域に適用するための構成ポートと、
物理的相互接続のトランザクションを介してアクセス可能な制御プレーン機能であって、制御プレーン機能が、構成ポートと通信し、制御プレーン機能が、物理的相互接続から構成ポートへの制限されたアクセスを提供する、制御プレーン機能と、
物理的相互接続のトランザクションを介してアクセス可能な第１のデータプレーン機能であって、物理的相互接続を通じて情報を伝送することを可能にし、かつ第１の再構成可能な論理領域が物理的相互接続に直接アクセスすることを防止する、第１の再構成可能な論理領域へのインターフェースを提供する、第１のデータプレーン機能と、
物理的相互接続のトランザクションを介してアクセス可能な第２のデータプレーン機能であって、物理的相互接続を通じて情報を伝送することを可能にし、かつ第２の再構成可能な論理領域が物理的相互接続に直接アクセスすることを防止する、第２の再構成可能な論理領域へのインターフェースを提供する、第２のデータプレーン機能と、
物理的相互接続の帯域幅を少なくとも第１のデータプレーン機能と第２のデータプレーン機能との間で分配するように構成された調停論理と、を備える、構成可能な論理プラットフォーム。
【０１１３】
２．第１のデータプレーン機能が、第１のアドレス範囲内のアドレスを備えるトランザクションを使用してアクセスされ、第２のデータプレーン機能が、第２のアドレス範囲内のアドレスを備えるトランザクションを使用してアクセスされ、制御プレーン機能が、第３のアドレス範囲内のアドレスを備えるトランザクションを使用してアクセスされ、第１、第２、および第３のアドレス範囲が、全ての非オーバーラップである、付記１に記載の構成可能な論理プラットフォーム。
【０１１４】
３．第１の再構成可能な論理領域とパブリック周辺機器との間に第１の通信パス、および第２の再構成可能な論理領域とパブリック周辺機器との間の第２の通信パスを提供するように構成された、パブリック周辺機器インターフェースをさらに備える、付記１または２に記載の構成可能な論理プラットフォーム。
【０１１５】
４．パブリック周辺機器インターフェースが、第１の再構成可能な論理領域によって、第１のアドレス範囲内のパブリック周辺機器のアドレスへのアクセスを制限するように構成され、パブリック周辺機器インターフェースが、第２の再構成可能な論理領域によって、第２のアドレス範囲内のパブリック周辺機器のアドレスへのアクセスを制限するように構成される、付記エラー！参照ソースが見つかりませんに記載の構成可能な論理プラットフォーム。
【０１１６】
５．パブリック周辺機器インターフェースが、第１の再構成可能な論理領域を、パブリック周辺機器と第１の再構成可能な論理領域との間で転送するための第１の帯域幅の量に制限するように構成され、パブリック周辺機器インターフェースが、第２の再構成可能な論理領域を、パブリック周辺機器と第２の再構成可能な論理領域との間で転送するための第２の帯域幅の量に制限するように構成される、付記エラー！参照ソースが見つかりませんまたは４に記載の構成可能な論理プラットフォーム。
【０１１７】
６．複数 の再構成可能な論理領域であって、それぞれのアプリケーション論理設計を実装するために構成可能なハードウェアを各々が備える、複数の再構成可能な論理領域と、
再構成可能な論理領域の各々を別個にカプセル化するためのホスト論理であって、
プロセッサと通信するためのホストインターフェースと、
ホストインターフェースを介してアクセス可能な複数のデータパス機能であって、各データパス機能が、ホストインターフェースと対応する再構成可能な論理領域のアプリケーション論理設計との間のデータ転送をフォーマットするための層を備え、ホストインターフェースが、それぞれの再構成可能な論理領域のアプリケーション論理設計のリソースを調停するように構成される、データパス機能と、を備える、ホスト論理と、を備える、装置。
【０１１８】
７．ホスト論理が、
ホストインターフェースを介してアクセス可能な管理機能であって、ホストインターフェースで受信した認可されたトランザクションに応じて、複数の再構成可能な論理領域の再構成可能な論理領域に、特定のアプリケーション論理設計を伴って構成させるように適合される、管理機能をさらに備える、付記６に記載の装置。
【０１１９】
８．ホストインターフェースが、それぞれの再構成可能な論理領域のアプリケーション論理の最大転送サイズを実施するようにさらに構成される、付記６または７に記載の装置。
【０１２０】
９．管理機能、およびデータパス機能のそれぞれが、それぞれの機能の各々について、異なる非オーバーラップアドレス範囲を使用してアクセス可能である、付記６〜８のいずれかに記載の装置。
【０１２１】
１０．ホストインターフェースが、ホスト論理の制御レジスタのプログラムされた値に基づいて、それぞれの再構成可能な論理領域のアプリケーション論理によって生成されたデータ転送の帯域幅を分配する、付記６〜９のいずれかに記載の装置。
【０１２２】
１１．ホスト論理の少なくとも一部分が、ホストインターフェースで受信した認可されたトランザクションに応じて装置にロードされる、再構成可能な論理である、付記６〜１０のいずれかに記載の装置。
【０１２３】
１２．ホスト論理が、それぞれの再構成可能な論理領域のアプリケーション論理とパブリック周辺機器との間に変換層をさらに含み、変換層が、アプリケーション論理と論理パブリック周辺機器との間のデータ転送をフォーマットするように適合される、付記６〜１１のいずれかに記載の装置。
【０１２４】
１３．ホスト論理が、異なる再構成可能な論理領域のアプリケーション論理とパブリック周辺機器との間のデータ転送の帯域幅を分配するための論理をさらに備える、付記６〜１２のいずれかに記載の装置。
【０１２５】
１４．ホスト論理が、異なる再構成可能な論理領域のアプリケーション論理からパブリック周辺機器へのアクセス制限を実施する論理をさらに備える、付記６〜１３のいずれかに記載の装置。
【０１２６】
１５．再構成可能な論理を備える構成可能なハードウェアプラットフォームを動作させるための方法であって、該方法が、
構成可能なハードウェアプラットフォームがホスト論理の動作を行うように、ホスト論理を再構成可能な論理の第１の領域にロードすることであって、ホスト論理が、ホストインターフェース、およびホストインターフェースからのトランザクションに対して制限されたアクセスを実施する制御プレーン機能を含む、ことと、
ホストインターフェースで第１のトランザクションを受信することに応じて、第１のアプリケーション論理設計を再構成可能な論理の第２の領域にロードすることであって、第１のトランザクションが、制御プレーン機能のアクセス基準を満たす、ことと、
ホストインターフェースで第２のトランザクションを受信することに応じて、第２のアプリケーション論理設計を再構成可能な論理の第３の領域にロードすることであって、第２のトランザクションが、制御プレーン機能のアクセス基準を満たす、ことと、
ホストインターフェースから情報を伝送するときに、ホスト論理を使用して、第１のアプリケーション論理設計および第２のアプリケーション論理設計の各々によって使用されるリソースを調停することと、を含む、方法。
【０１２７】
１６．ホスト論理を、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のインターフェースとして使用することをさらに含む、付記１５に記載の方法。
【０１２８】
１７．ホスト論理を使用して、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のデータ転送の帯域幅を分配することをさらに含む、付記１１に記載の方法。
【０１２９】
１８．ホスト論理を使用して、共有された周辺機器と、第１のアプリケーション論理設計および第２のアプリケーション論理設計との間のデータ転送のサイズを実施することをさらに含む、付記１１または１７に記載の方法。
【０１３０】
１９．ホスト論理を使用して、第１のアプリケーション論理設計から共有された周辺機器の第１のアドレス範囲へのアクセスを制限し、かつ第２のアプリケーション論理設計から共有された周辺機器の第２のアドレス範囲へのアクセスを制限することをさらに含む、付記１６〜１８のいずれかに記載の方法。
【０１３１】
２０．第１のアプリケーション論理設計または第２のアプリケーション論理設計を分解することに応じて、内部メモリ、外部メモリ、または構成メモリのうちの１つ以上をクリアすることをさらに含む、付記１４に記載の方法。
【０１３２】
開示される方法、装置、およびシステムは、いかなる形であれ、限定するものと解釈されるべきではない。代わりに、本開示は、単独で、および互いとの種々の組み合わせおよび副次的な組み合わせで、種々の開示された実施形態の全ての新規かつ非自明な特徴および態様を目的とする。開示される方法、装置、およびシステムは、任意の特定の態様または特徴またはそれらの組み合わせに限定されず、開示される実施形態は、任意の１つ以上の特定の利点が存在すること、または問題を解決することを必要としない。
【０１３３】
開示される本発明の原理を適用することができる数多くの可能な実施形態を考慮して、例示される実施形態は、本発明の好適な例に過ぎないものであり、また、本発明の範囲を限定するものとみなすべきではないことを認識されるべきである。むしろ、本発明の範囲は、以下の特許請求の範囲によって定義される。したがって、本発明者らは、本発明者らの発明として、これらの特許請求の範囲の範疇に該当する全てのものを主張する。
【図１】
2019530100.tif 000003
【図２】
2019530100.tif 000004
【図３】
2019530100.tif 000005
【図４】
2019530100.tif 000006
【図５】
2019530100.tif 000007
【図６】
2019530100.tif 000008
【図７】
2019530100.tif 000009
【図８】
2019530100.tif 000010
【図９】
2019530100.tif 000011
【国際調査報告】
2019530100.tif 000012
2019530100.tif 000013