(57)【要約】      （修正有）【課題】再利用可能な一般的な計算リソースのセット内に専用計算リソースを提供する。【解決手段】構成可能論理プラットフォーム１１０は、ホスト論理および再構成可能論理領域を含む。再構成可能論理領域は、アプリケーション論理を実装するように構成可能な論理ブロックを含むことができる。ホスト論理は、再構成可能論理領域をカプセル化するために使用されることが可能であり、プロセッサと通信するためのホストインターフェースを含む。ホスト論理は、ホストインターフェースを介してアクセス可能な管理機能を含む。管理機能は、ホストインターフェースからの認証された要求に応答して、再構成可能論理領域をアプリケーション論理で構成させる。【選択図】図１
2020064678.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション論理を実装するように構成可能なハードウェアを備える再構成可能論理領域と、前記アプリケーション論理をカプセル化するためのホスト論理と、を備える装置であって、前記ホスト論理は、
プロセッサと通信するためのホストインターフェース論理と、
前記ホストインターフェース論理を介してアクセス可能な管理機能であって、前記管理機能は前記再構成可能論理領域の一部を、前記ホストインターフェース論理で受信される認証済みトランザクションに応答して前記アプリケーション論理で構成させるようになっている、管理機能と、
前記ホストインターフェース論理を介してアクセス可能なデータパス機能であって、前記データパス機能は、前記ホストインターフェース論理と前記アプリケーション論理との間のデータ転送をフォーマットするための層を備える、データパス機能と、
を備える、装置。
【請求項２】
前記再構成可能論理領域を前記アプリケーション論理で構成させることは、前記装置の構成ポートにアクセスすることを含む、請求項１に記載の装置。
【請求項３】
前記ホストインターフェース論理で受信される認証済みトランザクションは、前記管理機能に割り当てられたアドレス範囲内のアドレスを含む、請求項１に記載の装置。
【請求項４】
前記ホスト論理の少なくとも一部は、デアサートされている前記装置のリセットに応答して前記装置上にロードされる静的論理である、請求項１に記載の装置。
【請求項５】
前記ホスト論理の少なくとも一部は、前記ホストインターフェース論理で受信される認証済みトランザクションに応答して前記装置上にロードされる再構成可能論理である、請求項１に記載の装置。
【請求項６】
前記ホスト論理は、前記アプリケーション論理とパブリックペリフェラルとの間に変換層をさらに備え、前記変換層は、前記アプリケーション論理と、前記パブリックペリフェラルとの通信に使用される前記装置の論理との間のデータ転送をフォーマットするようになっている、請求項１に記載の装置。
【請求項７】
前記パブリックペリフェラルはフィールドプログラマブルゲートアレイであり、前記論理はシリアライザ・デシリアライザトランシーバを含む、請求項６に記載の装置。
【請求項８】
前記ホスト論理はプライベートペリフェラルとのインターフェースをさらに備え、前記プライベートペリフェラルは前記アプリケーション論理および前記データパス機能にアクセス不可能である、請求項１に記載の装置。
【請求項９】
前記ホスト論理は、前記管理機能と前記データパス機能との間でメッセージを渡すためのメールボックス論理をさらに備える、請求項１に記載の装置。
【請求項１０】
前記ホスト論理は、前記アプリケーション論理のアクセスを、前記ホストインターフェース論理、または前記プロセッサとの物理インターフェースのうちの少なくとも１つに制限するように構成されている、請求項１に記載の装置。 
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]クラウドコンピューティングは、遠隔地で利用可能で、インターネットなどのネットワークを介してアクセス可能な計算リソース（ハードウェアおよびソフトウェア）の使用である。いくつかの配置では、ユーザは、これらの計算リソース（ストレージおよび計算能力を含む）を要求に応じてユーティリティとして購入することができる。クラウドコンピューティングは、遠隔サービスにユーザのデータ、ソフトウェア、および計算を委ねる。仮想計算リソースの使用は、コスト上の利点および／または変化する計算リソースのニーズに迅速に適応する能力を含む、いくつかの利点を提供することができる。
【０００２】
[0002]大規模コンピュータシステムのユーザは、異なる使用事例から生じる多様な計算要件を有する可能性がある。計算サービスプロバイダは、様々なレベルの性能および／または機能を有する異なるタイプのコンポーネントを有する様々な異なるコンピュータシステムを含むことができる。したがって、ユーザは、特定のタスクを実行することにおいて潜在的により効率的であり得るコンピュータシステムを選択することができる。たとえば、計算サービスプロバイダは、処理性能、メモリ性能、記憶容量または性能、およびネットワーク容量または性能の様々な組み合わせをシステムに提供することができる。しかしながら、一部のユーザは、彼らのコンピューティングタスクを実行するために専用のまたは非常に特殊化されたハードウェアを使用することを望むかもしれない。このため、計算サービスプロバイダは、リソースを異なるユーザ間で効率的に割り当てることができるように、汎用のリソースの健全な混合を維持しながら、これらのユーザに専用の計算ハードウェアを提供することを迫られる可能性がある。
【図面の簡単な説明】
【０００３】
【図１】構成可能論理プラットフォームを含むシステムの一例を示すシステム図である。
【図２】構成可能論理プラットフォームを含むシステムの別の例を示すシステム図である。
【図３】構成可能論理プラットフォームに構成データを供給するための論理リポジトリサービスを含むシステムの一例を示すシステム図である。
【図４】構成可能論理プラットフォームを有するサーバコンピュータを含むマルチテナント環境で動作する複数の仮想マシンインスタンスを示す例示的なシステム図である。
【図５】構成可能ハードウェアプラットフォームを構成およびインターフェース接続するための制御プレーンおよびデータプレーンのコンポーネントを含む図４の例示的なシステムのさらなる詳細を示す図である。
【図６】マルチテナント環境において構成可能ハードウェアのための構成データをフェッチ、構成、および使用する例示的な方法のシーケンス図である。
【図７】構成可能ハードウェアプラットフォームを使用する例示的な方法のフロー図である。
【図８】説明された技術革新が実装され得る適切な計算環境の汎用的な例を示す図である。
【発明を実施するための形態】
【０００４】
[0011]再利用可能な一般的な計算リソースのセット内に専用計算リソースを提供する１つの解決策は、一般的な計算リソースの中での選択肢として（サーバコンピュータにフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含むアドインカードを提供することなどによって）構成可能論理プラットフォームを備えるサーバコンピュータを提供することである。構成可能論理は、構成可能論理に適用またはロードされた構成データによって指定された論理機能を実行するようにプログラムまたは構成されることが可能なハードウェアである。たとえば、計算リソースのユーザは、構成可能論理を構成するための仕様（ハードウェア記述言語で記述されたソースコードなど）を提供することができ、構成可能論理は仕様にしたがって構成されることが可能であり、構成された論理はユーザのためにタスクを実行するために使用されることが可能である。しかしながら、計算設備の低レベルハードウェアへのユーザアクセスを可能にすることで、計算設備内のセキュリティおよびプライバシー問題をもたらす可能性がある。具体例として、構成された論理が計算設備内の１つ以上のサーバコンピュータを誤作動（たとえば、クラッシュ、ハング、またはリブート）させるかまたはネットワークサービスを拒絶させた場合、１人のユーザからの誤りまたは悪意による設計が他のユーザへのサービスの拒絶を引き起こす可能性がある。別の具体例として、構成された論理が他のユーザのメモリ空間のメモリの読み書きできる場合、１人のユーザからの誤りまたは悪意による設計が別のユーザからのデータを破損または読み取る可能性がある。
【０００５】
[0012]本明細書で説明されるように、計算サービス設備は様々な計算リソースを含むことができ、あるタイプの計算リソースは、構成可能論理プラットフォームを備えるサーバコンピュータを含むことができる。構成可能論理プラットフォームは、計算リソースのハードウェア（たとえば、構成可能論理）がユーザによってカスタマイズされるように、コンピュータシステムのユーザによってプログラムまたは構成されることが可能である。たとえば、ユーザは、サーバコンピュータにしっかりと結合されたハードウェアアクセラレータとして機能するように、構成可能論理をプログラムすることができる。具体例として、ハードウェアアクセラレータは、サーバコンピュータのペリフェラルコンポーネント相互接続エクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ、ＰＣＩｅ）などのローカル相互接続を介してアクセス可能であってもよい。ユーザはサーバコンピュータ上でアプリケーションを実行することができ、アプリケーションのタスクはＰＣＩｅトランザクションを使用してハードウェアアクセラレータによって行われることが可能である。ハードウェアアクセラレータをサーバコンピュータにしっかりと結合することによって、アクセラレータとサーバコンピュータとの間の待ち時間を短縮することができ、これによってアプリケーションの処理速度を加速できる可能性がある。
【０００６】
[0013]計算サービスプロバイダは、ユーザのハードウェアアクセラレータ（本明細書ではアプリケーション論理とも呼ばれる）を構成可能論理プラットフォームのホスト論理の中にラッピングまたはカプセル化することによって、計算リソースのセキュリティおよび／または利用可能性を向上できる可能性がある。アプリケーション論理をカプセル化することは、構成リソース、物理インターフェース、構成可能論理プラットフォームのハードマクロ、および構成可能論理プラットフォームの様々なペリフェラルへのアプリケーション論理のアクセスを制限または制御することを含むことができる。たとえば、計算サービスプロバイダは、ホスト論理およびアプリケーション論理の両方を含むように、構成可能論理プラットフォームのプログラミングを管理することができる。ホスト論理は、アプリケーション論理が中で動作するためのフレームワークまたはサンドボックスを提供することができる。具体的には、ホスト論理はアプリケーション論理と通信し、アプリケーション論理の機能を制限することができる。たとえば、ホスト論理は、アプリケーション論理がローカル相互接続上の信号通信を直接制御することができないように、ローカル相互接続（たとえば、ＰＣＩｅ相互接続）とアプリケーション論理との間のブリッジ機能を行うことができる。ホスト論理は、ローカル相互接続上にパケットまたはバストランザクションを形成し、プロトコル要件が満たされることを保証する責任を負う。ローカル相互接続上のトランザクションを制御することによって、ホスト論理は、不正な形式のトランザクションまたは範囲外の場所へのトランザクションを防止できる可能性がある。別の例として、ホスト論理は、計算サービスプロバイダによって提供されるサービスを使用せずにアプリケーション論理が構成可能論理プラットフォームを再プログラムさせられないように、構成アクセスポートを隔離することができる。
【０００７】
[0014]図１は、構成可能論理プラットフォーム１１０およびサーバコンピュータ１２０を含む計算システム１００の一例を示すシステム図である。たとえば、サーバコンピュータ１２０は、エンドユーザ向けのアプリケーションプログラムを実行するために使用されることが可能である。具体的には、サーバコンピュータ１２０は、中央処理ユニット（ＣＰＵ）１２２、メモリ１２４、およびペリフェラルインターフェース１２６を含むことができる。ＣＰＵ１２２は、メモリ１２４に記憶された命令を実行するために使用されることが可能である。たとえば、メモリ１２４はアプリケーションプログラムの全てまたは一部を搭載することができ、ＣＰＵ１２２はアプリケーションプログラムの命令を実行することができる。アプリケーションプログラムは、ペリフェラルインターフェース１２６を使用してトランザクションを発行することによって、構成可能論理プラットフォーム１１０のハードウェアアクセラレータと通信することができる。
【０００８】
[0015]本明細書で使用される際に、トランザクションとはコンポーネント間の通信である。具体例として、トランザクションは、読み取り要求、書き込み、読み取り応答、メッセージ、割り込み、またはコンポーネント間のその他の様々な情報の交換であってもよい。トランザクションは、複数のコンポーネントによって共有されるバス上で行われることが可能である。具体的には、バスの通信プロトコルを使用してバス上で情報を転送するために、バスの信号線の値が変調され得る。トランザクションは、アドレスフェーズおよび１つ以上のデータフェーズなど、１つ以上のフェーズにわたって行われることが可能である。付加的にまたは代わりに、トランザクションは、２つのコンポーネントを接続するポイントツーポイント相互接続の１つ以上のシリアルラインを使用して行われることが可能である。具体的には、トランザクションは、ポイントツーポイント相互接続で送信されるパケットで送信されることが可能である。
【０００９】
[0016]ペリフェラルインターフェース１２６は、ローカルまたは前面相互接続を使用するＣＰＵ１２２とペリフェラルまたは拡張相互接続を使用するコンポーネントとの間で通信するためのブリッジを含むことができる。具体的には、ペリフェラルインターフェース１２６は、サーバコンピュータ１２０を構成可能論理プラットフォーム１１０におよび／または他のコンポーネントに接続するために使用される物理的相互接続に接続されることが可能である。たとえば、物理的相互接続は、共有パラレルバスまたはシリアルポイントツーポイントリンクを使用して複数のコンポーネントを互いに接続するための拡張バスであってもよい。具体例として、物理的相互接続は、ＰＣＩエクスプレス、ＰＣＩ、またはサーバコンピュータ１２０を構成可能論理プラットフォーム１１０にしっかりと結合するその他の物理的相互接続であってもよい。このため、サーバコンピュータ１２０および構成可能論理プラットフォーム１１０は、たとえばＰＣＩバストランザクションまたはＰＣＩｅパケットを使用して通信することができる。
【００１０】
[0017]構成可能論理プラットフォーム１１０は、ホスト論理および再構成可能論理領域１４０を含むことができる。ホスト論理は、ホストインターフェース１１２、管理機能１１４、およびデータパス機能１１６を含むことができる。再構成可能論理領域１４０は、ハードウェアアクセラレータまたはアプリケーション論理を実装するように構成可能なハードウェアを含むことができる。言い換えると、再構成可能論理領域１４０は、任意の機能を行うようにプログラム可能な論理を含むことができる。たとえば、再構成可能論理領域１４０は、組み合わせ論理および／またはルックアップテーブル（ＬＵＴ）および逐次論理素子（フリップフロップおよび／またはラッチなど）、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ（ＲＡＭ）、デジタル信号処理（ＤＳＰ）ビットスライス、プログラマブル入出力ピンを備えるプログラマブル論理ブロックを含むことができる。
【００１１】
[0018]ホスト論理は、再構成可能論理領域１４０をカプセル化するために使用されることが可能である。たとえば、再構成可能論理領域１４０は、実行できる機能に再構成可能論理領域１４０が制限されるように、所定のインターフェースを使用して構成可能ハードウェアプラットフォームの様々なコンポーネントとインターフェース接続することができる。一例として、再構成可能論理領域は、再構成可能論理領域１４０が構成される前に実装された静的ホスト論理とインターフェース接続することができる。たとえば、静的ホスト論理は、構成可能論理プラットフォーム１１０の異なるコンポーネントを再構成可能論理領域１４０から隔離する論理を含むことができる。一例として、構成可能論理プラットフォーム１１０のハードマクロ（構成アクセスポートまたは物理的相互接続で信号通信するための回路など）は、再構成可能論理領域１４０がハードマクロに直接アクセスできないように、マスクオフされることが可能である。
【００１２】
[0019]ホスト論理は、サーバコンピュータ１２０と通信するためのホストインターフェース１１２を含むことができる。具体的には、ホストインターフェース１１２は、物理的相互接続に接続し、物理的相互接続の通信プロトコルを使用してサーバコンピュータ１２０と通信するために、使用されることが可能である。一例として、サーバコンピュータ１２０は、構成可能論理プラットフォーム１１０に関連付けられたアドレスを含むトランザクションを使用して、構成可能論理プラットフォーム１１０と通信することができる。同様に、構成可能論理プラットフォーム１１０は、サーバコンピュータ１２０に関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ１２０と通信することができる。物理的相互接続に接続された様々な装置に関連付けられたアドレスは、システム設計者によって事前定義され、装置上に存在するソフトウェアにプログラムされることが可能である。付加的にまたは代わりに、通信プロトコルは、物理的相互接続に接続された装置が照会され、アドレスが列挙シーケンスの一部として装置の各々に割り当てられる、列挙シーケンスを含むことができる。一例として、ペリフェラルインターフェース１２６は、物理的相互接続に接続された装置の各々にクエリを発行することができる。ホストインターフェース１１２は、構成可能論理プラットフォーム１１０上にいくつの機能が存在するか、および構成可能論理プラットフォーム１１０の機能の各々に関連付けられたアドレス範囲のサイズなど、構成可能論理プラットフォーム１１０に関する情報を提供することによって、クエリに応答することができる。この情報に基づいて、物理的相互接続に接続された各装置の各機能に重複しないアドレス範囲が割り当てられるように、計算システム１００のアドレスが割り当てられることが可能である。列挙の後、ホストインターフェース１１２は、トランザクションのアドレスに基づいて構成可能論理プラットフォーム１１０の機能にトランザクションをルーティングすることができる。
【００１３】
[0020]ホスト論理は、構成可能論理プラットフォーム１１０を管理および構成するために使用されることが可能な管理機能１１４を含むことができる。コマンドおよびデータは、管理機能１１４のアドレス範囲を標的とするトランザクションを使用して、サーバコンピュータ１２０から管理機能１１４に送信されることが可能である。たとえば、サーバコンピュータ１２０は、データ（たとえば、構成データ）を転送し、かつ／または管理機能１１４のアドレス範囲内の１つ以上のアドレスにマッピングされた構成可能論理プラットフォーム１１０の制御レジスタに書き込むためのトランザクションを、生成することができる。制御レジスタに書き込むことで、構成可能論理プラットフォーム１１０を構成および管理するなどの動作を構成可能論理プラットフォーム１１０に行わせることができる。具体例として、再構成可能論理領域１４０に実装されるアプリケーション論理に対応する構成データは、物理的相互接続を介した１つ以上のトランザクションで、サーバコンピュータ１２０から構成可能論理プラットフォーム１１０に送信されることが可能である。構成データを用いて再構成可能論理領域１４０を構成するためのトランザクション１５０は、サーバコンピュータ１２０から構成可能論理プラットフォーム１１０に送信されることが可能である。具体的には、トランザクション１５０は、再構成可能論理領域１４０を構成し始める管理機能１１４のアドレス空間にマッピングされた制御レジスタに、値を書き込むことができる。一実施形態では、構成データは、再構成可能論理領域１４０の構成が始まる前に、サーバコンピュータ１２０から構成可能論理プラットフォーム１１０に転送されることが可能である。たとえば、管理機能１１４は、構成可能論理プラットフォーム１１０によってアクセス可能なオンチップまたはオフチップメモリ内に構成データを記憶させることができ、再構成可能論理領域１４０が構成されているときに構成データがメモリから読み出されることが可能である。別の実施形態では、構成データは、再構成可能論理領域１４０の構成が始まった後に、サーバコンピュータ１２０から構成可能論理プラットフォーム１１０に転送されることが可能である。たとえば、制御レジスタは、再構成可能論理領域１４０の構成を開始するために書き込まれることが可能であり、構成データは、構成データを含むトランザクションが管理機能１１４によって処理される際に、再構成可能論理領域１４０にストリーミングまたはロードされることが可能である。
【００１４】
[0021]ホスト論理は、サーバコンピュータ１２０と構成可能論理プラットフォーム１１０との間で情報（たとえば、アプリケーション入出力１６０）をやり取りするために使用されることが可能な、データパス機能１１６を含むことができる。具体的には、コマンドおよびデータは、データパス機能１１６のアドレス範囲を標的とするトランザクションを使用して、サーバコンピュータ１２０からデータパス機能１１６に送信されることが可能である。同様に、構成可能論理プラットフォーム１１０は、サーバコンピュータ１２０に関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ１２０と通信することができる。データパス機能１１６は、ホストインターフェース１１２と再構成可能論理領域１４０との間の変換層として機能することができる。具体的には、データパス機能１１６は、再構成可能論理領域１４０から情報を受信するためのインターフェースを含むことができ、データパス機能１１６は、ホストインターフェース１１２からの送信のための情報をフォーマットすることができる。情報をフォーマットすることは、１つ以上のトランザクションのための制御情報を生成すること、およびプロトコル仕様を満たすサイズのブロックにデータを分割することを含むことができる。このため、データパス機能１１６は、再構成可能論理領域１４０と物理的相互接続との間に介在することができる。このようにして、再構成可能論理領域１４０は、再構成可能論理領域１４０が物理的相互接続のプロトコルを意図せずにまたは悪意を持って違反するために使用され得ないように、トランザクションをフォーマットすること、および物理的相互接続を駆動するために使用される信号を直接制御することが妨げられる可能性がある。
【００１５】
[0022]図２は、構成可能ハードウェアプラットフォーム２１０およびサーバコンピュータ２２０を含むシステム２００の一例を示すシステム図である。サーバコンピュータ２２０および構成可能ハードウェアプラットフォーム２１０は、物理的相互接続２３０を介して接続されることが可能である。たとえば、物理的相互接続２３０は、ＰＣＩエクスプレス、ＰＣＩ、またはサーバコンピュータ２２０を構成可能ハードウェアプラットフォーム２１０にしっかりと結合するその他いずれかの相互接続であってもよい。サーバコンピュータ２２０は、ＣＰＵ２２２、メモリ２２４、および相互接続インターフェース２２６を含むことができる。たとえば、相互接続インターフェース２２６は、サーバコンピュータ２２０がサーバコンピュータ２２０の外部にある装置にアクセスできるように、ブリッジング機能を提供することができる。たとえば、相互接続インターフェース２２６は、ＰＣＩエクスプレスで使用されるようなルート複合機能など、ホスト機能を含むことができる。
【００１６】
[0023]構成可能ハードウェアプラットフォーム２１０は、再構成可能論理ブロックおよびその他のハードウェアを含むことができる。再構成可能論理ブロックは、構成可能ハードウェアプラットフォーム２１０の様々な機能を行うように構成またはプログラムされることが可能である。再構成可能論理ブロックは、装置の寿命にわたってブロックが異なる機能を行えるように、異なる構成で複数回プログラムされることが可能である。構成可能ハードウェアプラットフォーム２１０の機能は、各機能の目的または能力に基づいて、もしくはいつ構成可能ハードウェアプラットフォーム２１０に機能がロードされるかに基づいて、分類されることが可能である。たとえば、構成可能ハードウェアプラットフォーム２１０は、静的論理、再構成可能論理、およびハードマクロを含むことができる。静的論理、再構成可能論理、およびハードマクロの機能は、異なる時点で構成されることが可能である。このため、構成可能ハードウェアプラットフォーム２１０の機能は、徐々にロードされることが可能である。
【００１７】
[0024]ハードマクロは、所定の機能を行うことができ、構成可能ハードウェアプラットフォーム２１０が電源投入されたときに利用可能となり得る。たとえば、ハードマクロは、特定の機能を行うハードワイヤード回路を含むことができる。具体例として、ハードマクロは、構成可能ハードウェアプラットフォーム２１０を構成するための構成アクセスポート（ＣＡＰ）２１１、シリアルデータを通信するためのシリアライザ・デシリアライザトランシーバ（ＳＥＲＤＥＳ）２１２、オフチップメモリ（ダブルデータレート（ＤＤＲ）ＤＲＡＭ２８１など）と信号通信およびこれを制御するためのメモリまたはダイナミックランダムアクセスメモリ（ＤＲＡＭ）コントローラ２１３、およびストレージデバイス２８２と信号通信およびこれを制御するためのストレージコントローラ２１４を含むことができる。
【００１８】
[0025]静的論理は、ブート時に再構成可能論理ブロック上にロードされることが可能である。たとえば、静的論理の機能を指定する構成データは、ブートアップシーケンス中にオンチップまたはオフチップのフラッシュメモリデバイスからロードされることが可能である。ブートアップシーケンスは、（供給電圧が閾値未満から閾値よりも上に推移したことを検出することなどによって）電力事象を検出すること、および電力事象に応答してリセット信号をデアサートすることを含むことができる。初期化シーケンスは、電力事象またはデアサートされているリセットに応答してトリガされることが可能である。初期化シーケンスは、フラッシュデバイス上に記憶された構成データを読み取ること、および再構成可能論理ブロックの少なくとも一部が静的論理の機能でプログラムされるように構成アクセスポート２１１を使用して構成可能ハードウェアプラットフォーム２１０上に構成データをロードすることを含むことができる。静的論理がロードされた後、構成可能ハードウェアプラットフォーム２１０は、ロード状態から、静的論理の機能を含む動作状態に推移することができる。
【００１９】
[0026]再構成可能論理は、構成可能ハードウェアプラットフォーム２１０が動作可能である間に（たとえば、静的論理がロードされた後に）、再構成可能論理ブロック上にロードされることが可能である。再構成可能論理に対応する構成データはオンチップまたはオフチップメモリに記憶されることが可能であり、および／または構成データは構成可能ハードウェアプラットフォーム２１０のインターフェース（たとえば、相互接続インターフェース２５６）から受信またはストリーミングされることが可能である。再構成可能論理は重複しない領域に分割されることが可能であり、これらは静的論理とインターフェース接続することができる。たとえば、再構成可能領域は、アレイまたは他の規則的または半規則的構造で配置されることが可能である。たとえば、アレイ構造は、ハードマクロがアレイ構造内に配置されている場所に穴または妨害物を含むことができる。異なる再構成可能領域は、静的論理として指定され得る信号線を使用して、互いに、静的論理と、およびハードマクロと通信することができる。異なる再構成可能領域は、第１の再構成可能領域が第１の時点で構成され、第２の再構成可能領域が第２の時点で構成されることが可能なように、異なる時点で構成されることが可能である。
【００２０】
[0027]構成可能ハードウェアプラットフォーム２１０の機能は、機能の目的または能力に基づいて分割または分類されることが可能である。たとえば、機能は、制御プレーン機能、データプレーン機能、および共有機能として分類されることが可能である。制御プレーンは、構成可能ハードウェアプラットフォーム２１０の管理および構成のために使用されることが可能である。データプレーンは、構成可能ハードウェアプラットフォーム２１０上にロードされたアクセラレータ論理とサーバコンピュータ２２０との間のデータ転送を管理するために使用されることが可能である。共有機能は、制御プレーンとデータプレーンの両方によって使用されることが可能である。制御プレーン機能は、データプレーン機能をロードする前に構成可能ハードウェアプラットフォーム２１０上にロードされることが可能である。データプレーンは、アプリケーション論理２４０を用いて構成されたカプセル化再構成可能論理を含むことができる。制御プレーンは、構成可能ハードウェアプラットフォーム２１０のホスト論理を含むことができる。
【００２１】
[0028]一般に、データプレーンおよび制御プレーンは構成可能ハードウェアプラットフォーム２１０の異なる機能を使用してアクセスされることが可能であり、異なる機能は異なるアドレス範囲に割り当てられる。具体的には、制御プレーン機能は管理機能２５２を使用してアクセスされることが可能であり、データプレーン機能はデータパス機能またはアプリケーション機能２５４を使用してアクセスされることが可能である。アドレスマッピング層２５０は、制御プレーンまたはデータプレーン向けのトランザクションを区別することができる。特に、構成可能ハードウェアプラットフォーム２１０向けのサーバコンピュータ２２０からのトランザクションは、トランザクション内のアドレスを使用して識別されることが可能である。具体的には、トランザクションのアドレスが構成可能ハードウェアプラットフォーム２１０に割り当てられたアドレスの範囲内にある場合、トランザクションは構成可能ハードウェアプラットフォーム２１０に向かう。トランザクションは、物理的相互接続２３０を介して送信され、相互接続インターフェース２５６で受信されることが可能である。相互接続インターフェース２５６は物理的相互接続２３０のエンドポイントになり得る。物理的相互接続２３０は、デバイスまたはコンポーネントをサーバコンピュータ２２０に接続するためのファブリック内に配置された追加のデバイス（たとえば、スイッチおよびブリッジ）を含むことができることは、理解されるべきである。
【００２２】
[0029]アドレスマッピング層２５０は、トランザクションのアドレスを分析し、アドレスに基づいて構成可能ハードウェアプラットフォーム２１０のどこにトランザクションをルーティングすべきかを判断することができる。たとえば、管理機能２５２は第１の範囲のアドレスに割り当てられることが可能であり、管理プレーンの異なる機能はその範囲内の異なるアドレスを使用してアクセスされることが可能である。管理機能２５２に割り当てられた範囲内にあるアドレスを有するトランザクションは、ホスト論理プライベートファブリック２６０を通って制御プレーンの異なるブロックにルーティングされることが可能である。たとえば、トランザクションは管理および構成ブロック２６２にアドレス指定されることが可能である。同様に、アプリケーション機能２５４は第２の範囲のアドレスに割り当てられることが可能であり、データプレーンの異なる機能はその範囲内の異なるアドレスを使用してアクセスされることが可能である。
【００２３】
[0030]管理および構成ブロック２６２は、構成可能ハードウェアプラットフォーム２１０を管理および構成することに関する機能を含むことができる。たとえば、管理および構成ブロック２６２は、再構成可能論理ブロックが構成され得るように、構成アクセスポート２１１へのアクセスを提供することができる。たとえば、サーバコンピュータ２２０は、カプセル化再構成可能論理２４０内のアプリケーション論理のロードを開始するために、管理および構成ブロック２６２にトランザクションを送信することができる。アプリケーション論理に対応する構成データは、サーバコンピュータ２２０から管理機能２５２に送信されることが可能である。管理機能２５２は、アプリケーション論理がロードされ得るように、ホスト論理ファブリック２６０を通って構成アクセスポート２１１にアプリケーション論理に対応する構成データをルーティングすることができる。
【００２４】
[0031]別の例として、管理および構成ブロック２６２は、構成可能ハードウェアプラットフォーム２１０に関するメタデータを記憶することができる。たとえば、異なる論理ブロックのバージョン、更新履歴、およびその他の情報が、管理および構成ブロック２６２のメモリ内に記憶され得る。サーバコンピュータ２２０は、メタデータの一部または全部を取り出すために、メモリを読み取ることができる。具体的には、サーバコンピュータ２２０は管理および構成ブロック２６２のメモリを標的とする読み取り要求を送信することができ、管理および構成ブロック２６２は、サーバコンピュータ２２０に返すための読み取り応答データを生成することができる。
【００２５】
[0032]管理機能２５２は、構成可能ハードウェアプラットフォーム２１０のプライベートペリフェラルにアクセスするために使用されることも可能である。プライベートペリフェラルとは、制御プレーンからのみアクセス可能なコンポーネントである。たとえば、プライベートペリフェラルは、ＪＴＡＧ（たとえば、ＩＥＥＥ１１４９．１）コントローラ２７０、発光ディスプレイ（ＬＥＤ）２７１、マイクロコントローラ２７２、汎用非同期送受信器（ＵＡＲＴ）２７３、メモリ２７４（たとえば、シリアルペリフェラルインターフェース（ＳＰＩ）フラッシュメモリ）、およびデータプレーンではなく制御プレーンからアクセス可能なその他いずれかのコンポーネントを含むことができる。管理機能２５２は、ホスト論理プライベートファブリック２６０およびプライベートペリフェラルインターフェース２７５を通ってコマンドをルーティングすることによって、プライベートペリフェラルにアクセスすることができる。プライベートペリフェラルインターフェース２７５は、プライベートペリフェラルと直接通信することができる。
【００２６】
[0033]パブリックペリフェラルは、制御プレーンまたはデータプレーンのいずれかからアクセス可能な共有機能である。たとえば、パブリックペリフェラルは、管理機能２５２に割り当てられたアドレス範囲内のトランザクションをアドレス指定することによって、制御プレーンからアクセスされることが可能である。パブリックペリフェラルは、アプリケーション機能２５４に割り当てられたアドレス範囲内のトランザクションをアドレス指定することによって、データプレーンからアクセスされることが可能である。このため、パブリックペリフェラルは、複数のアドレスマッピングを有することができ、制御プレーンおよびデータプレーンの両方によって使用されることが可能なコンポーネントである。パブリックペリフェラルの例は、他の構成可能ハードウェアプラットフォーム（ＣＨＰ）２８０、ＤＲＡＭ２８１（たとえば、ＤＤＲ  ＤＲＡＭ）、ストレージデバイス２８２（たとえば、ハードディスクドライブおよびソリッドステートドライブ）、および情報を生成、記憶、または処理するために使用され得るその他の様々なコンポーネントである。パブリックペリフェラルは、パブリックペリフェラルインターフェース２８５を介してアクセスされることが可能である。このため、パブリックペリフェラルインターフェース２８５は、パブリックペリフェラルと構成可能ハードウェアプラットフォーム２１０のその他の機能との間に介在する中間層であり得る。具体的には、パブリックペリフェラルインターフェース２８５は、制御プレーンまたはデータプレーンからの要求を変換し、パブリックペリフェラルとの通信をパブリックペリフェラルのネイティブプロトコルにフォーマットすることができる。
【００２７】
[0034]メールボックス２９０およびウォッチドッグタイマ２９２は、制御プレーンまたはデータプレーンのいずれかからアクセス可能な共有機能である。具体的には、メールボックス２９０は、制御プレーンとデータプレーンとの間でメッセージおよびその他の情報を渡すために使用されることが可能である。たとえば、メールボックス２９０は、バッファ、制御レジスタ（セマフォなど）、およびステータスレジスタを含むことができる。制御プレーンとデータプレーンとの間の中間物としてメールボックス２９０を使用することによって、データプレーンと制御プレーンとの間の分離性が上昇する可能性があり、これは構成可能ハードウェアプラットフォーム２１０のセキュリティを向上させる可能性がある。
【００２８】
[0035]ウォッチドッグタイマ２９２は、ハードウェアおよび／またはソフトウェアの誤作動を検出および回復するために使用されることが可能である。たとえば、ウォッチドッグタイマ２９２は、特定のタスクを行うのにかかる時間量を監視することができ、時間量が閾値を超えた場合には、ウォッチドッグタイマ２９２は、制御レジスタに値を書き込むこともしくは割り込みまたはリセットをアサートさせるなどの事象を開始することができる。一例として、ウォッチドッグタイマ２９２は、第１のタスクを開始するときに第１の値で初期化されることが可能である。ウォッチドッグタイマ２９２は、初期化された後に自動的にカウントダウンすることができ、ウォッチドッグタイマ２９２がゼロ値に到達した場合に事象が生成されることが可能である。あるいは、ウォッチドッグタイマ２９２がゼロ値に到達する前に第１のタスクが終了した場合、ウォッチドッグタイマ２９２は第２のタスクを開始するときに第２の値で初期化されることが可能である。第１および第２の値は、それぞれ第１および第２のタスクで完了すべき作業の複雑さまたは量に基づいて選択されることが可能である。
【００２９】
[0036]アプリケーション機能２５４は、アプリケーション論理２４０などのデータプレーン機能にアクセスするために使用されることが可能である。たとえば、アプリケーション論理２４０を対象とするトランザクションは、データをロード、処理、および／またはサーバコンピュータ２２０に返送させることができる。具体的には、データプレーン機能は、アプリケーション機能２５４に割り当てられた範囲内のアドレスを有するトランザクションを使用してアクセスされることが可能である。たとえば、トランザクションはアプリケーション機能２５４を介してサーバコンピュータ２２０からアプリケーション論理２４０に送信されることが可能である。具体的には、アプリケーション機能２５４にアドレス指定されたトランザクションは、ペリフェラルファブリック２６４を通ってアプリケーション論理２４０にルーティングされることが可能である。アプリケーション論理２４０からの応答は、ペリフェラルファブリック２６４を通ってアプリケーション機能２５４にルーティングされ、その後サーバコンピュータ２２０に戻されることが可能である。加えて、アプリケーション論理２４０によって生成されたデータおよびトランザクションは、使用量およびトランザクション監視層２６６を使用して監視されることが可能である。監視層２６６は、所定の規則に違反するトランザクションまたはデータを潜在的に識別することができ、制御プレーンを介して送信される警告を生成することができる。付加的にまたは代わりに、監視層２６６は、監視層２６６のいずれかの基準に違反するアプリケーション論理２４０によって生成されたいずれのトランザクションも終了させることができる。加えて、監視層２６６は、情報に関する統計が収集されて制御プレーンからアクセスされることが可能なように、アプリケーション論理２４０との間で行き来する情報を分析することができる。
【００３０】
[0037]データは、ダイレクトメモリアクセス（ＤＭＡ）エンジン２４２をプログラムすることによって、サーバコンピュータ２２０とアプリケーション論理との間で転送されることも可能である。ＤＭＡエンジン２４２は、送信元から送信先へのＤＭＡ転送をプログラムまたは指定するための、制御およびステータスレジスタを含むことができる。一例として、ＤＭＡエンジン２４２は、サーバコンピュータ２２０のメモリ２２４内に記憶された情報を、アプリケーション論理２４０に、または構成可能ハードウェアプラットフォーム２１０のパブリックペリフェラルに引き込むようにプログラムされることが可能である。別の例として、ＤＭＡエンジン２４２は、アプリケーション論理２４０によって生成されたデータをサーバコンピュータ２２０のメモリ２２４に押し出すようにプログラムされることが可能である。アプリケーション論理２４０によって生成されたデータは、アプリケーション論理２４０からストリーミングされるか、もしくはメモリ２８１またはストレージ２８２などのパブリックペリフェラルに書き込まれることが、可能である。
【００３１】
[0038]アプリケーション論理２４０は、他の構成可能ハードウェアプラットフォーム２８０と通信することができる。たとえば、他の構成可能ハードウェアプラットフォーム２８０は、ＳＥＲＤＥＳ２１２と通信している１つ以上のシリアルラインによって接続されることが可能である。アプリケーション論理２４０は、異なる構成可能ハードウェアプラットフォーム２８０へのトランザクションを生成することができ、トランザクションは、ＣＨＰファブリック２４４を通って構成可能ハードウェアプラットフォーム２８０の対応するシリアルラインに（ＳＥＲＤＥＳ２１２を介して）ルーティングされることが可能である。同様に、アプリケーション論理２４０は、逆方向パスを使用して、他の構成可能ハードウェアプラットフォーム２８０から情報を受信することができる。
【００３２】
[0039]要するに、構成可能ハードウェアプラットフォーム２１０の機能は、制御プレーン機能およびアプリケーション機能として分類されることが可能である。制御プレーン機能は、データプレーンの能力を監視および制限するために使用されることが可能である。データプレーン機能は、サーバコンピュータ２２０上で動作しているユーザのアプリケーションを加速させるために使用されることが可能である。制御およびデータプレーンの機能を分離することによって、サーバコンピュータ２２０およびその他のコンピューティングインフラストラクチャのセキュリティおよび利用可能性が向上する可能性がある。たとえば、制御プレーンの中間層が物理的相互接続２３０のトランザクションのフォーマットおよび信号通信を制御するので、アプリケーション論理２４０は物理的相互接続２３０上に対して直接信号通信することはできない。別の例として、アプリケーション論理２４０は、構成可能ハードウェアプラットフォーム２１０を再構成するため、および／または特権を受け得る管理情報にアクセスするために使用されることが可能なプライベートペリフェラルを使用することを、妨げられる可能性がある。別の例として、アプリケーション論理２４０は、アプリケーション論理２４０とハードマクロとの間のあらゆる相互作用が中間層を使用して制御されるように、中間層を通じてのみ構成可能ハードウェアプラットフォーム２１０のハードマクロにアクセスすることができる。
【００３３】
[0040]図３は、一群の計算リソース３２０内に構成可能なリソースを構成するために使用されることが可能な構成データを管理するための論理リポジトリサービス３１０を含む、システム３００の一例を示すシステム図である。計算サービスプロバイダは、計算タスクが実行されるべきときにサービスのユーザが展開する一群の計算リソース３２０を維持することができる。計算リソース３２０は、ハードウェアアクセラレータとしてプログラムされることが可能な構成可能論理リソース３４２を有するサーバコンピュータ３４０を含むことができる。計算サービスプロバイダは、構成可能ハードウェア３４２の構成および動作を管理するためのソフトウェアサービスを使用して、計算リソース３２０を管理することができる。一例として、計算サービスプロバイダは、ユーザによって指定されたアプリケーション論理３３２を取り込むため、ユーザの論理設計に基づいて構成可能論理プラットフォームを構成するための構成データ３３６を生成するため、および構成可能論理プラットフォームのインスタンスを構成するための要求３６０に応答して検証済み構成データ３６２をダウンロードするために、論理リポジトリサービス３１０を実行することができる。ダウンロード要求３６０は、アプリケーション論理３３２を開発したユーザから、またはアプリケーション論理３３２を使用するためのライセンスを取得したユーザからであってもよい。このため、アプリケーション論理３３２は、計算サービスプロバイダ、ユーザ、もしくはユーザまたは計算サービスプロバイダとは別の第三者によって作成されることが可能である。たとえば、アクセラレータ知的財産（ＩＰ）のマーケットプレイスは計算サービスプロバイダのユーザに提供されることが可能であり、ユーザはマーケットプレイスからアクセラレータを選択することによってアプリケーションの速度を潜在的に高めることができる。
【００３４】
[0041]論理リポジトリサービス３１０は、ウェブサービスなど、ネットワークアクセス可能なサービスであってもよい。ウェブサービスは、クラウドコンピューティングにおいて一般的に使用される。ウェブサービスは、ウェブまたはクラウドを通じてネットワークアドレスにおいて提供されるソフトウェア機能である。クライアントはサーバへのウェブサービス要求を開始し、サーバは要求を処理して適切な応答を返す。クライアントのウェブサービス要求は典型的には、たとえばＡＰＩ要求を使用して、開始される。簡潔にするため、ウェブサービス要求は一般に、以下においてＡＰＩ要求として説明されるが、他のウェブサービス要求がなされてもよいことは、理解される。ＡＰＩ要求は、典型的にはＪＳＯＮまたはＸＭＬで表される規定の要求応答メッセージシステムとのプログラマチックインターフェースであり、これはウェブを介して、最も一般的にはＨＴＴＰベースのウェブサーバによって、公開される。このため、特定の実装形態では、ＡＰＩは、拡張マークアップ言語（ＸＭＬ）またはＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）形式であってもよい、ＡＰＩおよび応答メッセージを呼び出すために使用されるメッセージの構造の定義と併せて、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求インターフェースのセットとして定義されることが可能である。ＡＰＩは、特定のタスクを遂行すること、またはソフトウェアコンポーネントとの相互作用を可能にすることを含む、動作を実行する機能またはルーチンのセットを指定することができる。ウェブサービスがクライアント装置からＡＰＩ要求を受信すると、ウェブサービスは、要求に対する応答を生成し、要求内で識別されたエンドポイントに応答を送信することができる。付加的にまたは代わりに、ウェブサービスは、要求内で識別されたエンドポイントへの応答を生成することなく、ＡＰＩ要求に応答して動作を実行することができる。
【００３５】
[0042]論理リポジトリサービス３１０は、サーバコンピュータ３４０の構成可能ハードウェア３４２など、構成可能ハードウェアプラットフォームのための構成データを生成するためのＡＰＩ要求３３０を受信することができる。たとえば、ＡＰＩ要求３３０は、計算サービスプロバイダの開発者またはパートナーユーザによって生じることが可能である。要求３３０は、論理設計、構成可能ハードウェアプラットフォーム、ユーザ情報、アクセス権、生産状況に関するデータおよび／またはメタデータを指定するためのフィールド、ならびに論理リポジトリサービス３１０の入力、出力、およびユーザを記述するための様々な追加フィールドを含むことができる。具体例として、要求は、設計の説明、生産状況（試作または量産など）、サービスの入力または出力の暗号化状況、入力ファイルを記憶するための場所の参照（ハードウェア設計ソースコードなど）、入力ファイルのタイプ、構成可能ハードウェアのインスタンスタイプ、および出力ファイルまたはレポートを記憶するための場所の参照を含むことができる。特に、要求は、構成可能ハードウェアプラットフォーム上での実装のためのアプリケーション論理３３２を指定するハードウェア設計の参照を含むことができる。具体的には、アプリケーション論理３３２および／またはホスト論理３３４の仕様は、ハードウェア記述言語（ＨＤＬ）で記述されたソースコード、論理合成ツールによって生成されたネットリスト、および／または配置およびルーティングツールによって生成された配置およびルーティング論理ゲートなど、ファイルの集合であってもよい。
【００３６】
[0043]計算リソース３２０は、インスタンスタイプによって分類された多くの異なるタイプのハードウェアおよびソフトウェアを含むことができる。特に、インスタンスタイプは、リソースのハードウェアおよびソフトウェアの少なくとも一部を指定する。たとえば、ハードウェアリソースは、様々な性能レベル（たとえば、異なるクロック速度、アーキテクチャ、キャッシュサイズなど）の中央処理ユニット（ＣＰＵ）、（グラフィック処理ユニット（ＧＰＵ）および構成可能論理などの）コプロセッサを有するまたは有していないサーバ、様々な容量および性能のメモリおよび／またはローカルストレージを有するサーバ、ならびに異なるネットワーク性能レベルを有するサーバを含むことができる。例示的なソフトウェアリソースは、異なるオペレーティングシステム、アプリケーションプログラム、およびドライバを含むことができる。１つの例示的なインスタンスタイプは、構成可能ハードウェア３４２と通信する中央処理ユニット（ＣＰＵ）３４４を含むサーバコンピュータ３４０を供えることができる。構成可能ハードウェア３４２は、たとえばＦＰＧＡ、プログラマブル論理アレイ（ＰＬＡ）、プログラマブルアレイ論理（ＰＡＬ）、汎用アレイ論理（ＧＡＬ）、または複合プログラマブル論理デバイス（ＣＰＬＤ）などのプログラマブル論理を含むことができる。具体例として、「Ｆ１．小」インスタンスタイプは１容量単位のＦＰＧＡリソースを有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ１．中」インスタンスタイプは２容量単位のＦＰＧＡリソースを有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ１．大」インスタンスタイプは８容量単位のＦＰＧＡリソースを有する第１のタイプのサーバコンピュータを含むことができ、「Ｆ２．大」インスタンスタイプは８容量単位のＦＰＧＡリソースを有する第２のタイプのサーバコンピュータを含むことができる。
【００３７】
[0044]論理リポジトリサービス３１０は、ＡＰＩ要求３３０の受信に応答して、構成データ３３６を生成することができる。生成された構成データ３３６は、アプリケーション論理３３２およびホスト論理３３４に基づくことができる。具体的には、生成された構成データ３３６は、アプリケーション論理３３２およびホスト論理３３４によって指定された機能を実行するように構成可能ハードウェア３４２をプログラムまたは構成するために使用されることが可能な情報を含むことができる。一例として、計算サービスプロバイダは、ＣＰＵ３４４と構成可能ハードウェア３４２との間でインターフェース接続するための論理を含むホスト論理３３４を生成することができる。具体的には、ホスト論理３３４は、全てのＣＰＵアプリケーション論理トランザクションがホスト論理３３４を通過するようにＣＰＵ３４４と直接通信するアプリケーション論理３３２をマスキングまたは遮蔽するための論理を含むことができる。このようにして、ホスト論理３３４は、アプリケーション論理３３２によって導入される可能性のあるセキュリティおよび利用可能性のリスクを潜在的に低減することができる。
【００３８】
[0045]構成データ３３６を生成することは、アプリケーション論理３３２に対して検査および／または試験を行うこと、アプリケーション論理３３２をホスト論理３３４ラッパに統合すること、アプリケーション論理３３２を合成すること、および／またはアプリケーション論理３３２を配置およびルーティングすることを、含むことができる。アプリケーション論理３３２を検査することは、アプリケーション論理３３２が計算サービスプロバイダの１つ以上の基準に準拠していることを確認することを含むことができる。たとえば、アプリケーション論理３３２は、ホスト論理３３４とインターフェース接続するためにインターフェース信号および／または論理機能が存在するか否かを判断するために分析され得る。特に、分析は、ソースコードを分析すること、および／または一連の確認試験に対してアプリケーション論理３３２を実行することを含むことができる。確認試験は、アプリケーション論理がホスト論理と一致していることを確認するために使用されることが可能である。別の例として、アプリケーション論理３３２は、アプリケーション論理３３２が指定されたインスタンスタイプの定められた領域内に収まっているか否かを判断するために分析されることが可能である。別の例として、アプリケーション論理３３２は、アプリケーション論理３３２がリング発振器またはその他の潜在的に有害な回路など、いずれかの禁止された論理機能を含むか否かを判断するために分析されることが可能である。別の例として、アプリケーション論理３３２は、アプリケーション論理３３２がホスト論理３３４との名前の重複、もしくはホスト論理３３４とインターフェース接続していない外部出力を有するか否かを判断するために、分析されることが可能である。別の例として、アプリケーション論理３３２は、アプリケーション論理３３２が構成可能ハードウェア３４２の制限された入力、出力、またはハードマクロとインターフェース接続しようとしているか否かを判断するために分析されることが可能である。アプリケーション論理３３２が論理リポジトリサービス３１０の検査に合格した場合には、構成データ３３６が生成され得る。検査または試験のいずれかに不合格の場合、構成データ３３６の生成は中止され得る。
【００３９】
[0046]構成データ３３６を生成することは、アプリケーション論理３３２およびホスト論理３３４のソースコードを、構成可能ハードウェア３４２をプログラムまたは構成するために使用されることが可能なデータにコンパイルおよび／または変換することを含むことができる。たとえば、論理リポジトリサービス３１０は、アプリケーション論理３３２をホスト論理３３４ラッパに統合することができる。具体的には、アプリケーション論理３３２は、アプリケーション論理３３２およびホスト論理３３４を含むシステム設計においてインスタンス化されることが可能である。システム設計のためのネットリストを作成するために、統合されたシステム設計は論理合成プログラムを使用して合成されることが可能である。ネットリストは、システム設計のために指定されたインスタンスタイプのために、配置およびルーティングプログラムを使用して、配置およびルーティングされることが可能である。配置およびルーティングされた設計は、構成可能ハードウェア３４２をプログラムするために使用され得る構成データ３３６に変換されることが可能である。たとえば、構成データ３３６は、配置およびルーティングプログラムから直接出力されることが可能である。
【００４０】
[0047]一例として、生成された構成データ３３６は、ＦＰＧＡの構成可能論理の全部または一部を構成するための、完全なまたは部分的なビットストリームを含むことができる。ＦＰＧＡは、構成可能論理および構成不可能論理を含むことができる。構成可能論理は、組み合わせ論理および／またはルックアップテーブル（ＬＵＴ）および逐次論理素子（フリップフロップおよび／またはラッチなど）、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ（ＲＡＭ）、デジタル信号処理（ＤＳＰ）ビットスライス、プログラマブル入出力ピンを備えるプログラマブル論理ブロックを含むことができる。ビットストリームは、構成論理（たとえば、構成アクセスポート）を使用して、構成可能論理のオンチップメモリにロードされることが可能である。オンチップメモリにロードされた値は、構成可能論理がビットストリームによって指定された論理機能を実行するように構成可能論理を制御するために使用されることが可能である。加えて、構成可能論理は、互いに独立して構成されることが可能な異なる領域に分割されることが可能である。一例として、全ての領域にわたって構成可能論理を構成するためには全てのビットストリームが使用され、構成可能論理領域の一部のみを構成するためには部分的なビットストリームが使用されることが可能である。構成不可能論理は、入出力ブロック（たとえば、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）ブロックおよびギガビットトランシーバ）、アナログデジタル変換器、メモリ制御ブロック、試験アクセスポート、および構成可能論理上に構成データをロードするための構成論理など、ＦＰＧＡ内で特定の機能を実行するハードマクロを含むことができる。
【００４１】
[0048]論理リポジトリサービス３１０は、生成された構成データ３３６を論理リポジトリデータベース３５０に記憶させることができる。論理リポジトリデータベース３５０は、磁気ディスク、直接接続ストレージ、ネットワーク接続ストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、独立ディスクの冗長アレイ（ＲＡＩＤ）、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的に情報を記憶させるために使用可能であって論理リポジトリサービス３１０によってアクセス可能なその他いずれかの媒体を含む、リムーバブルまたは非リムーバブル媒体に記憶されることが可能である。加えて、論理リポジトリサービス３１０は、入力ファイル（アプリケーション論理３３２およびホスト論理３３４の仕様など）ならびに論理リポジトリサービス３１０の論理設計および／またはユーザに関するメタデータを記憶させるために使用されることが可能である。生成された構成データ３３６は、たとえばユーザ識別子、１つまたは複数のインスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、および構成可能ハードウェア識別子など、１つ以上の特性によってインデックスを付けられることが可能である。
【００４２】
[0049]論理リポジトリサービス３１０は、構成データをダウンロードするためのＡＰＩ要求３６０を受信することができる。たとえば、要求３６０は、計算リソース３２０のユーザが計算リソース３２０内で新しいインスタンス（たとえば、Ｆ１インスタンス）を起動または展開するときに生成されることが可能である。別の例として、要求３６０は、動作中のインスタンス上で実行しているアプリケーションからの要求に応えて生成されることが可能である。要求３６０は、送信元および／または送信先インスタンスの参照、ダウンロードすべき構成データの参照（たとえば、インスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、または構成可能ハードウェア識別子）、ユーザ識別子、認証トークン、および／またはダウンロードすべき構成データを識別するためおよび／または構成データへのアクセスを認証するためのその他の情報を含むことができる。構成データを要求しているユーザが構成データにアクセスすることを認証されている場合、構成データは論理リポジトリデータベース３５０から取り出され、検証済み構成データ３６２（たとえば、完全なまたは部分的なビットストリーム）は要求インスタンス（たとえば、サーバコンピュータ３４０）にダウンロードされることが可能である。検証済み構成データ３６２は、送信先インスタンスの構成可能論理を構成するために使用されることが可能である。
【００４３】
[0050]論理リポジトリサービス３１０は、検証済み構成データ３６２が要求インスタンスにダウンロードされ得ることを確認することができる。検証は、論理リポジトリサービス３１０によって複数の異なるポイントで行われることが可能である。たとえば、検証は、アプリケーション論理３３２がホスト論理３３４と一致すると確認することを含むことができる。特に、アプリケーション論理３３２が設計に追加された後にホスト論理３３４が期待通りに動作することを確認するために、一連の回帰試験がシミュレータ上で実行され得る。付加的にまたは代わりに、アプリケーション論理３３２がホスト論理３３４の再構成可能領域とは別の再構成可能領域内にのみ存在するように指定されていることが、確認され得る。別の例として、検証は、検証済み構成データ３６２がダウンロードすべきインスタンスタイプと一致すると確認することを含むことができる。別の例として、検証は、要求者が検証済み構成データ３６２にアクセスすることを認証されていると確認することを含むことができる。検証検査のいずれかが失敗した場合、論理リポジトリサービス３１０は、検証済み構成データ３６２をダウンロードする要求を拒否することができる。このため、論理リポジトリサービス３１０は、ユーザが計算リソース３２０のハードウェアをカスタマイズできるようにしながら、計算リソース３２０のセキュリティおよび利用可能性を潜在的に保護することができる。
【００４４】
[0051]図４は、本明細書に記載される実施形態が使用され得る１つの環境を示すネットワークベースの計算サービスプロバイダ４００の計算システム図である。背景として、計算サービスプロバイダ４００（すなわち、クラウドプロバイダ）は、最終受信者のコミュニティへのサービスとして、計算および記憶容量の配信が可能である。例示的な実施形態において、計算サービスプロバイダは、組織によって、または組織の代わりに、組織のために確立されることが可能である。つまり、計算サービスプロバイダ４００は、「プライベートクラウド環境」を提供することができる。別の実施形態では、計算サービスプロバイダ４００は、複数の顧客が独立して運営する、マルチテナント環境をサポートする（すなわち、パブリッククラウド環境）。一般的に言えば、計算サービスプロバイダ４００は、以下のモデルを提供することができる：サービスとしてのインフラストラクチャ（「ＩａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、および／またはサービスとしてのソフトウェア（「ＳａａＳ」）。他のモデルが提供されることも可能である。ＩａａＳモデルでは、計算サービスプロバイダ４００は、物理または仮想マシンおよびその他のリソースとしてコンピュータを提供することができる。仮想マシンは、以下にさらに説明されるように、ハイパーバイザによってゲストとして実行され得る。ＰａａＳモデルは、オペレーティングシステム、プログラミング言語実行環境、データベース、およびウェブサーバを含むことが可能な計算プラットフォームを配信する。アプリケーション開発者は、基盤となるハードウェアおよびソフトウェアを購入および管理するコストをかけずに、計算サービスプロバイダプラットフォーム上で彼らのソフトウェアソリューションを開発および実行することができる。加えて、アプリケーション開発者は、計算サービスプロバイダプラットフォームの構成可能ハードウェア上で彼らのハードウェアソリューションを開発および実行することができる。ＳａａＳモデルは、計算サービスプロバイダ内のアプリケーションソフトウェアのインストールおよび実行を可能にする。いくつかの実施形態では、エンドユーザは、ウェブブラウザまたはその他の計量クライアントアプリケーションを実行する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォンなどのネットワーク接続されたクライアント装置を使用して、計算サービスプロバイダ４００にアクセスする。当業者は、計算サービスプロバイダ４００が「クラウド」環境として説明され得ることを認識するだろう。
【００４５】
[0052]特定の図示された計算サービスプロバイダ４００は、複数のサーバコンピュータ４０２Ａから４０２Ｃを含む。サーバコンピュータは３つしか示されていないが、いくつ使用されてもよく、大規模センターは数千台のサーバコンピュータを含むことができる。サーバコンピュータ４０２Ａから４０２Ｃは、ソフトウェアインスタンス４０６Ａから４０６Ｃを実行するための計算リソースを提供することができる。一実施形態では、ソフトウェアインスタンス４０６Ａから４０６Ｃは仮想マシンである。当該技術分野では周知のように、仮想マシンは、物理マシンのようにアプリケーションを実行するマシン（すなわち、コンピュータ）のソフトウェア実装のインスタンスである。仮想マシンの例では、サーバ４０２Ａから４０２Ｃの各々は、ハイパーバイザ４０８、または単一のサーバ上で複数のソフトウェアインスタンス４０６の実行を可能にするように構成された他のタイプのプログラムを実行するように構成されることが可能である。加えて、ソフトウェアインスタンス４０６の各々は、１つ以上のアプリケーションを実行するように構成されることが可能である。アプリケーションは、ユーザまたは特権のないプログラム、カーネルまたは特権のあるプログラム、および／またはドライバを含むことができる。別の実施形態（図示せず）では、ソフトウェアインスタンスは、単一のユーザによって制御されるオペレーティングシステムおよびアプリケーションプログラムを含むことができる。このため、計算サービスプロバイダ４００は、（各顧客に異なる仮想マシンを提供することなどによって）複数の顧客の間で任意のサーバコンピュータのリソースを分割することができ、および／または単一の顧客にサーバコンピュータの全リソースを提供することができる。
【００４６】
[0053]本明細書に開示される実施形態は主に仮想マシンの文脈で説明されているが、本明細書に開示される概念および技術と共に他のタイプのインスタンスも利用できることは、理解されるべきである。たとえば、本明細書に開示される技術は、ストレージリソース、データ通信リソースと共に、および他のタイプの計算リソースと共に、利用されることが可能である。本明細書に開示される実施形態は、仮想マシンインスタンスを利用することなく、アプリケーションの全部または一部をコンピュータシステム上で直接実行することもできる。
【００４７】
[0054]サーバコンピュータ４０２Ａから４０２Ｃは、異なるハードウェアリソースまたはインスタンスタイプの異種の集合を含むことができる。ハードウェアインスタンスタイプのいくつかは、計算サービスプロバイダ４００のユーザによって少なくとも部分的に構成可能な構成可能ハードウェアを含むことができる。インスタンスタイプの一例は、構成可能ハードウェア４０４Ａと通信しているサーバコンピュータ４０２Ａを含むことができる。具体的には、サーバコンピュータ４０２Ａおよび構成可能ハードウェア４０４Ａは、ＰＣＩｅなどのローカル相互接続を介して通信することができる。インスタンスタイプの別の例は、サーバコンピュータ４０２Ｂおよび構成可能ハードウェア４０４Ｂを含むことができる。たとえば、構成可能ハードウェア４０４Ｂは、マルチチップモジュール内に、またはサーバコンピュータ４０２ＢのＣＰＵと同じダイ上に統合されることが可能である。インスタンスタイプのさらに別の例は、構成可能ハードウェアなしでサーバコンピュータ４０２Ｃを含むことができる。このため、構成可能論理ありおよびなしのハードウェアインスタンスタイプは、計算サービスプロバイダ４００のリソース内に存在することができる。
【００４８】
[0055]１つ以上のサーバコンピュータ４２０は、サーバコンピュータ４０２およびソフトウェアインスタンス４０６の動作を管理するためのソフトウェアコンポーネントを実行するために確保されてもよい。たとえば、サーバコンピュータ４２０は管理コンポーネント４２２を実行することができる。顧客は、顧客が購入したソフトウェアインスタンス４０６の動作の様々な態様を構成するために、管理コンポーネント４２２にアクセスすることができる。たとえば、顧客は、インスタンスを購入、レンタル、またはリースし、ソフトウェアインスタンスの構成に変更を加えることができる。ソフトウェアインスタンスの各々の構成情報は、マシンイメージ（ＭＩ）４４２としてネットワーク接続ストレージ４４０に記憶されることが可能である。具体例として、ＭＩ４４２は、ＶＭインスタンスを起動するために使用される情報を記述することができる。ＭＩは、インスタンス（たとえば、ＯＳおよびアプリケーション）のルートボリューム用のテンプレート、どの顧客アカウントがＭＩを使用できるかを制御するための起動許可、およびインスタンスが起動されたときにインスタンスにアタッチすべき容量を指定するブロックデバイスマッピングを含むことができる。ＭＩはまた、インスタンスが起動されたときに構成可能ハードウェア４０４にロードされる構成可能ハードウェアイメージ（ＣＨＩ）４４２の参照も含むことができる。ＣＨＩは、構成可能ハードウェア４０４の少なくとも一部をプログラムまたは構成するための構成データを含む。別の具体例として、ＭＩ４４２は、サーバコンピュータ４２０のうちの１つでオペレーティングシステムのインスタンスを直接起動するために使用される情報を記述することができる。
【００４９】
[0056]顧客は、購入されたインスタンスが需要に応じてどのようにスケーリングされるかに関する設定を指定することもできる。管理コンポーネントは、顧客の方針を実装するための方針文書をさらに含むことができる。自動スケーリングコンポーネント４２４は、顧客によって定義されたルールに基づいて、インスタンス４０６をスケーリングすることができる。一実施形態では、自動スケーリングコンポーネント４２４によって、顧客は、新しいインスタンスがいつインスタンス化されるべきかを判断するために使用する拡張ルールと、既存のインスタンスをいつ終了すべきかを判断するために使用する縮小ルールとを指定することができる。自動スケーリングコンポーネント４２４は、異なるサーバコンピュータ４０２または他の計算装置上で実行される多数のサブコンポーネントからなり得る。自動スケーリングコンポーネント４２４は、内部管理ネットワーク上の利用可能な計算リソースを監視し、必要に応じて利用可能なリソースを修正することができる。
【００５０】
[0057]展開コンポーネント４２６は、計算リソースの新しいインスタンス４０６の展開において顧客を支援するために使用されることが可能である。展開コンポーネントは、誰がアカウントの所有者であるか、クレジットカード情報、所有者の国など、インスタンスに関連付けられたアカウント情報へのアクセスを有することができる。展開コンポーネント４２６は、新しいインスタンス４０６がどのように構成されるべきかを記述するデータを含む構成を、顧客から受信することができる。たとえば、構成は、新しいインスタンス４０６にインストールすべき１つ以上のアプリケーションを指定し、新しいインスタンス４０６を構成するために実行すべきスクリプトおよび／またはその他のタイプのコードを提供し、アプリケーションキャッシュがどのように準備されるべきかを指定するキャッシュ論理、およびその他のタイプの情報を提供することができる。展開コンポーネント４２６は、新しいインスタンス４０６を構成、準備、および起動するために、顧客提供の構成およびキャッシュ論理を利用することができる。たとえば、展開コンポーネント４２６は、制御コンソール、別のインスタンス、またはマーケットプレイスページからインスタンスを顧客が起動するときに呼び出されることが可能である。制御コンソールは、顧客が自身のアカウントを管理してサービスにアクセスできるように計算サービスプロバイダ４００の顧客とのインターフェースを提供する、ウェブベースのサービスであってもよい。一例として、制御コンソールは、ユーザがＭＩおよび／またはＣＨＩをプライベートカタログにアップロードできるようにし、特定のＭＩまたはＣＨＩに対応する画像は、インスタンスが展開されるときにプライベートカタログからユーザによって選択されることが可能である。インスタンスを起動するために使用される構成、キャッシュ論理、およびその他の情報は、顧客が管理コンポーネント４２２を使用することによって、または展開コンポーネント４２６にこの情報を直接提供することによって、指定されてもよい。インスタンスマネージャは、展開コンポーネントの一部と見なされることが可能である。
【００５１】
[0058]顧客アカウント情報４２８は、マルチテナント環境の顧客に関連付けられたあらゆる所望の情報を含むことができる。たとえば、顧客アカウント情報は、顧客のための固有の識別子、顧客アドレス、課金情報、ライセンス情報、インスタンスを起動するためのカスタマイズパラメータ、スケジューリング情報、自動スケーリングパラメータ、アカウントにアクセスするために使用された以前のＩＰアドレス、顧客にアクセス可能なＭＩおよびＣＨＩのリスト、などを含むことができる。
【００５２】
[0059]１つ以上のサーバコンピュータ４３０は、サーバコンピュータ４０２の構成可能ハードウェア４０４への構成データのダウンロードを管理するためのソフトウェアコンポーネントを実行するために確保されることが可能である。たとえば、サーバコンピュータ４３０は、取り込みコンポーネント４３２、ライブラリ管理コンポーネント４３４、およびダウンロードコンポーネント４３６を備える論理リポジトリサービスを実行することができる。取り込みコンポーネント４３２は、ホスト論理およびアプリケーション論理の設計または仕様を受信し、構成可能ハードウェア４０４を構成するために使用されることが可能な構成データを生成することができる。ライブラリ管理コンポーネント４３４は、論理リポジトリサービスに関連付けられたソースコード、ユーザ情報、および構成データを管理するために使用されることが可能である。たとえば、ライブラリ管理コンポーネント４３４は、ユーザの設計から生成された構成データを、ネットワーク接続ストレージ４４０上のユーザによって指定された場所に記憶させるために使用されることが可能である。特に、構成データは、ネットワーク接続ストレージ４４０上の構成可能ハードウェアイメージ４４２内に記憶されることが可能である。加えて、ライブラリ管理コンポーネント４３４は、入力ファイル（アプリケーション論理およびホスト論理の仕様など）ならびに論理リポジトリサービスの論理設計および／またはユーザに関するメタデータのバージョン管理および記憶を管理することができる。ライブラリ管理コンポーネント４３４は、たとえばユーザ識別子、インスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、および構成可能ハードウェア識別子など、１つ以上の特性によって、生成された構成データにインデックスを付けることができる。ダウンロードコンポーネント４３６は、構成データの要求を認証し、要求が認証されたときに構成データを要求者に送信するために、使用されることが可能である。たとえば、サーバコンピュータ４０２Ａから４０２Ｂ上のエージェントは、構成可能ハードウェア４０４を使用するインスタンス４０６が起動されたときにダウンロードコンポーネント４３６に要求を送信することができる。別の例として、サーバコンピュータ４０２Ａから４０２Ｂ上のエージェントは、構成可能ハードウェア４０４が動作している間に構成可能ハードウェア４０４が部分的に再構成されることをインスタンス４０６が要求したときに、ダウンロードコンポーネント４３６に要求を送信することができる。
【００５３】
[0060]ネットワーク接続ストレージ（ＮＡＳ）４４０は、ＮＡＳ４４０上に記憶されたファイルに記憶領域およびアクセスを提供するために使用されることが可能である。たとえば、ＮＡＳ４４０は、ネットワークファイルシステム（ＮＦＳ）などのネットワークファイル共有プロトコルを使用して要求を処理するために使用される１つ以上のサーバコンピュータを含むことができる。ＮＡＳ４４０は、磁気ディスク、ストレージエリアネットワーク（ＳＡＮ）、独立ディスクの冗長アレイ（ＲＡＩＤ）、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的に情報を記憶させるために使用可能であってネットワーク４５０を介してアクセス可能なその他いずれかの媒体を含む、リムーバブルまたは非リムーバブル媒体を含むことができる。
【００５４】
[0061]ネットワーク４５０は、サーバコンピュータ４０２Ａから４０２Ｃ、サーバコンピュータ４２０および４３０、ならびにストレージ４４０を相互接続するために利用されることが可能である。ネットワーク４５０は、ローカルエリアネットワーク（ＬＡＮ）であってもよく、エンドユーザが計算サービスプロバイダ４００に接続できるように広域ネットワーク（ＷＡＮ）４６０に接続されることが可能である。図４に示されるネットワークトポロジーは簡略化されており、本明細書に開示される様々な計算システムを相互接続するためにさらに多くのネットワークおよびネットワーク接続装置が利用され得ることは、理解されるべきである。
【００５５】
[0062]図５は、構成可能ハードウェアプラットフォーム５１０を構成およびインターフェース接続するための制御プレーンおよびデータプレーンのコンポーネントを含む例示的なシステム５００のさらなる詳細を示す。制御プレーンは、構成可能ハードウェアプラットフォーム５１０を初期化、監視、再構成、および破棄するためのソフトウェアおよびハードウェア機能を含む。データプレーンは、ユーザのアプリケーションと構成可能ハードウェアプラットフォーム５１０との間で通信するためのソフトウェアおよびハードウェア機能を含む。制御プレーンは、より高い特権レベルを有するユーザまたはサービスによってアクセス可能であり得、データプレーンはより低い特権レベルを有するユーザまたはサービスによってアクセス可能であり得る。一実施形態では、構成可能ハードウェアプラットフォーム５１０は、ＰＣＩｅなどのローカル相互接続を使用してサーバコンピュータ５２０に接続されている。代替実施形態では、構成可能ハードウェアプラットフォーム５１０は、サーバコンピュータ５２０のハードウェア内に統合されることが可能である。一例として、サーバコンピュータ５２０は、図４の計算サービスプロバイダ４００の複数のサーバコンピュータ４０２Ａから４０２Ｂのうちの１つであってもよい。
【００５６】
[0063]サーバコンピュータ５２０は、１つ以上のＣＰＵ、メモリ、ストレージデバイス、相互接続ハードウェアなどを含む、基盤となるハードウェア５２２を有する。ハードウェア５２２よりも上の層を実行するのは、ハイパーバイザまたはカーネル層５２４である。ハイパーバイザまたはカーネル層は、タイプ１またはタイプ２のハイパーバイザとして分類されることが可能である。タイプ１のハイパーバイザは、ハードウェアを制御してゲストオペレーティングシステムを管理するために、ホストハードウェア５２２上で直接動作する。タイプ２のハイパーバイザは、従来のオペレーティングシステム環境内で動作する。このため、タイプ２の環境では、ハイパーバイザはオペレーティングシステムより上で動作する明確な層であり得、オペレーティングシステムはシステムハードウェアと相互作用する。異なるタイプのハイパーバイザは、Ｘｅｎベース、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、Ｌｉｎｕｘ（登録商標）などを含むが、他のハイパーバイザも使用可能である。管理パーティション５３０（Ｘｅｎハイパーバイザのドメイン０など）は、ハイパーバイザの一部であるかまたはこれとは分離されていてもよく、一般に、ハードウェア５２２にアクセスするために必要なデバイスドライバを含む。ユーザパーティション５４０は、ハイパーバイザ内の隔離の論理ユニットである。各ユーザパーティション５４０は、ハードウェア層のメモリ、ＣＰＵ割り当て、ストレージ、相互接続帯域幅などの自身の部分に割り当てられることが可能である。加えて、各ユーザパーティション５４０は、仮想マシンおよび自身のゲストオペレーティングシステムを含むことができる。したがって、各ユーザパーティション５４０は、他のパーティションから独立して自身の仮想マシンをサポートするように設計された容量の理論上の部分である。
【００５７】
[0064]管理パーティション５３０は、ユーザパーティション５４０および構成可能ハードウェアプラットフォーム５１０のための管理サービスを実行するために使用されることが可能である。管理パーティション５３０は、計算サービスプロバイダ、ユーザパーティション５４０、および構成可能ハードウェアプラットフォーム５１０のウェブサービス（展開サービス、論理リポジトリサービス５５０、および健全性監視サービスなど）と通信することができる。管理サービスは、ユーザパーティション５４０を起動および終了するため、ならびに構成可能ハードウェアプラットフォーム５１０の構成可能論理を構成、再構成、および破棄するためのサービスを含むことができる。具体例として、管理パーティション５３０は、展開サービス（図４の展開コンポーネント４２６など）からの要求に応答して、新しいユーザパーティション５４０を起動することができる。要求は、ＭＩおよび／またはＣＨＩの参照を含むことができる。ＭＩはユーザパーティション５４０上にロードすべきプログラムおよびドライバを指定することができ、ＣＨＩは構成可能ハードウェアプラットフォーム５１０上にロードすべき構成データを指定することができる。管理パーティション５３０は、ＭＩに関連付けられた情報に基づいてユーザパーティション５４０を初期化することができ、ＣＨＩに関連付けられた構成データを構成可能ハードウェアプラットフォーム５１０上にロードさせることができる。インスタンスを動作可能にする時間が短縮され得るように、ユーザパーティション５４０および構成可能ハードウェアプラットフォーム５１０の初期化は同時に行われることが可能である。
【００５８】
[0065]管理パーティション５３０は、構成可能ハードウェアプラットフォーム５１０のプログラミングおよび監視を管理するために使用されることが可能である。この目的のために管理パーティション５３０を使用することによって、構成可能ハードウェアプラットフォーム５１０の構成データおよび構成ポートへのアクセスが制限され得る。具体的には、より低い特権レベルを有するユーザは、管理パーティション５３０への直接アクセスが制限され得る。このため、構成可能論理は、計算サービスプロバイダのインフラストラクチャを使用することなく修正されることは不可能であり、構成可能論理をプログラムするために使用されるいずれの第三者ＩＰも、認証されていないユーザによる閲覧から保護されることが可能である。
【００５９】
[0066]管理パーティション５３０は、制御プレーンが構成可能ハードウェアプラットフォーム５１０を構成してこれとインターフェースするためのソフトウェアスタックを含むことができる。制御プレーンソフトウェアスタックは、ウェブサービス（論理リポジトリサービス５５０および健全性監視サービスなど）と通信するための構成可能論理（ＣＬ）アプリケーション管理層５３２、構成可能ハードウェアプラットフォーム５１０、およびユーザパーティション５４０を含むことができる。たとえば、ＣＬアプリケーション管理層５３２は、ユーザパーティション５４０が起動されるのに応答して構成データをフェッチするように、論理リポジトリサービス５５０に要求を発行することができる。ＣＬアプリケーション管理層５３２は、ハードウェア５２２の共有メモリを使用して、またはサーバコンピュータ５２０を構成可能ハードウェアプラットフォーム５１０に接続する相互接続を介してパーティション間メッセージを送受信することによって、ユーザパーティション５４０と通信することができる。具体的には、ＣＬアプリケーション管理層５３２は、構成可能ハードウェアプラットフォーム５１０のメールボックス論理５１１へのメッセージを読み書きすることができる。メッセージは、構成可能ハードウェアプラットフォーム５１０を構成または破棄するための、エンドユーザアプリケーション５４１による要求を含むことができる。ＣＬアプリケーション管理層５３２は、構成可能ハードウェアプラットフォーム５１０を再構成する要求に応答して構成データをフェッチするように、論理リポジトリサービス５５０に要求を発行することができる。ＣＬアプリケーション管理層５３２は、構成可能ハードウェアプラットフォーム５１０を破棄する要求に応答して、破棄シーケンスを開始することができる。ＣＬアプリケーション管理層５３２は、ユーザパーティション５４０への通信経路が機能しているか否かを判断するために、ウォッチドッグ関連のアクティビティを実行することができる。
【００６０】
[0067]制御プレーンソフトウェアスタックは、構成データが構成可能ハードウェアプラットフォーム５１０上にロードされ得るように、構成可能ハードウェアプラットフォーム５１０の構成ポート５１２（たとえば、構成アクセスポート）にアクセスするためのＣＬ構成層５３４を含むことができる。たとえば、ＣＬ構成層５３４は、構成可能ハードウェアプラットフォーム５１０の全部または一部の構成を実行するために、１つまたは複数のコマンドを構成ポート５１２に送信することができる。ＣＬ構成層５３４は、構成可能論理が構成データにしたがってプログラムされ得るように、構成ポート５１２に構成データ（たとえば、ビットストリーム）を送信することができる。構成データは、ホスト論理および／またはアプリケーション論理を指定することができる。
【００６１】
[0068]制御プレーンソフトウェアスタックは、サーバコンピュータ５２０を構成可能ハードウェアプラットフォーム５１０に接続する物理的相互接続を介して通信するための管理ドライバ５３６を含むことができる。管理ドライバ５３６は、物理的相互接続を介した送信のために管理パーティション５３０から生じるコマンド、要求、応答、メッセージ、およびデータをカプセル化することができる。加えて、管理ドライバ５３６は、物理的相互接続を介して管理パーティション５３０に送信されるコマンド、要求、応答、メッセージ、およびデータのカプセル化を解除することができる。具体的には、管理ドライバ５３６は、構成可能ハードウェアプラットフォーム５１０の管理機能５１３と通信することができる。たとえば、管理機能５１３は、物理的相互接続に接続された装置の列挙の間、アドレス範囲にマッピングされた物理的または仮想機能であってもよい。管理ドライバ５３６は、管理機能５１３に割り当てられたアドレス範囲にトランザクションをアドレス指定することによって、管理機能５１３と通信することができる。
【００６２】
[0069]制御プレーンソフトウェアスタックは、ＣＬ管理および監視層５３８を含むことができる。ＣＬ管理および監視層５３８は、構成可能ハードウェアプラットフォーム５１０の健全性を判断するために、および／または構成可能ハードウェアプラットフォーム５１０の使用特性を判断するために、物理的相互接続上で行われるトランザクションを監視および分析することができる。
【００６３】
[0070]構成可能ハードウェアプラットフォーム５１０は、構成不可能なハードマクロおよび構成可能論理を含むことができる。ハードマクロは、入出力ブロック（たとえば、シリアライザおよびデシリアライザ（ＳＥＲＤＥＳ）ブロックおよびギガビットトランシーバ）、アナログデジタル変換器、メモリ制御ブロック、試験アクセスポート、および構成ポート５１２など、構成可能ハードウェアプラットフォーム５１０内の特定の機能を実行することができる。構成可能論理は、構成可能ハードウェアプラットフォーム５１０上に構成データをロードすることによって、プログラムまたは構成されることが可能である。たとえば、構成ポート５１２は、構成データをロードするために使用されることが可能である。一例として、構成データは、構成ポート５１２によってアクセス可能なメモリ（フラッシュメモリなど）に記憶されることが可能であり、構成データは、構成可能ハードウェアプラットフォーム５１０の初期化シーケンスの間（電源投入シーケンスの間など）に自動的にロードされることが可能である。加えて、構成ポート５１２は、構成可能ハードウェアプラットフォーム５１０内のオフチッププロセッサまたはインターフェースを使用してアクセスされることが可能である。
【００６４】
[0071]構成可能論理は、ホスト論理およびアプリケーション論理を含むようにプログラムされることが可能である。ホスト論理は、エンドユーザがハードマクロおよび物理的相互接続への限られたアクセスを有するように、エンドユーザからハードマクロの少なくともいくつかのインターフェースを保護することができる。たとえば、ホスト論理は、メールボックス論理５１１、構成ポート５１２、管理機能５１３、ホストインターフェース５１４、およびアプリケーション機能５１５を含むことができる。エンドユーザは、構成可能アプリケーション論理５１６を構成可能ハードウェアプラットフォーム５１０上にロードさせ、（アプリケーション機能５１５を介して）ユーザパーティション５４０からの構成可能アプリケーション論理５１６と通信することができる。
【００６５】
[0072]ホストインターフェース論理５１４は、物理的相互接続上で信号送信して通信プロトコルを実装するための回路（たとえば、ハードマクロおよび／または構成可能論理）を含むことができる。通信プロトコルは、相互接続を介して通信するための規則およびメッセージ形式を指定する。アプリケーション機能５１５は、ユーザパーティション５４０のドライバと通信するために使用されることが可能である。具体的には、アプリケーション機能５１５は、物理的相互接続に接続された装置の列挙の間、アドレス範囲にマッピングされた物理的または仮想機能であってもよい。アプリケーションドライバは、トランザクションをアプリケーション機能５１５に割り当てられたアドレス範囲にアドレス指定することによってアプリケーション機能５１５と通信することができる。具体的には、アプリケーション機能５１５は、制御プレーンを介してコマンド、要求、応答、メッセージ、およびデータを交換するために、アプリケーション論理管理ドライバ５４２と通信することができる。アプリケーション機能５１５は、データプレーンを介してコマンド、要求、応答、メッセージ、およびデータを交換するために、アプリケーション論理データプレーンドライバ５４３と通信することができる。
【００６６】
[0073]メールボックス論理５１１は、１つ以上のバッファおよび１つ以上の制御レジスタを含むことができる。たとえば、任意の制御レジスタは特定のバッファと関連付けられることが可能であり、レジスタは、管理パーティション５３０とユーザパーティション５４０との間で同期させるためのセマフォとして使用されることが可能である。具体例として、パーティションが制御レジスタの値を修正できる場合、パーティションはバッファに書き込むことができる。バッファおよび制御レジスタは、管理機能５１３およびアプリケーション機能５１５の両方からアクセス可能であり得る。メッセージがバッファに書き込まれると、メッセージが完了したことを示すために別の制御レジスタ（たとえば、メッセージレディレジスタ）が書き込まれ得る。メッセージが存在するか否かを判断するためにメッセージレディレジスタがパーティションによってポーリングされることが可能であり、またはメッセージレディレジスタへの書き込みに応答して割り込みが生成されてパーティションに送信されることが可能である。
【００６７】
[0074]ユーザパーティション５４０は、エンドユーザアプリケーション５４０を構成可能ハードウェアプラットフォーム５１０にインターフェース接続するためのソフトウェアスタックを含むことができる。アプリケーションソフトウェアスタックは、制御プレーンおよびデータプレーンと通信するための機能を含むことができる。具体的には、アプリケーションソフトウェアスタックは、構成可能ハードウェアプラットフォーム５１０へのアクセスを有するエンドユーザアプリケーション５４０を提供するための、ＣＬアプリケーションＡＰＩ５４４を含むことができる。ＣＬアプリケーションＡＰＩ５４４は、構成可能ハードウェアプラットフォーム５１０および管理パーティション５３０と通信するための方法または機能のライブラリを含むことができる。たとえば、エンドユーザアプリケーション５４１は、ＣＬアプリケーションＡＰＩ５４４のＡＰＩを使用して、構成可能アプリケーション論理５１６にコマンドまたはデータを送信することができる。特に、ＣＬアプリケーションＡＰＩ５４４のＡＰＩは、構成可能アプリケーション論理５１６と通信することができるアプリケーション機能５１５を標的としたトランザクションを生成することができるアプリケーション論理（ＡＬ）データプレーンドライバ５４３とインターフェース接続することができる。このようにして、エンドユーザアプリケーション５４１は、エンドユーザアプリケーション５４１のタスクを潜在的に加速するために、構成可能アプリケーション論理５１６にデータを受信、処理、および／または応答させることができる。別の例として、エンドユーザアプリケーション５４１は、ＣＬアプリケーションＡＰＩ５４４のＡＰＩを使用して、管理パーティション５３０にコマンドまたはデータを送信することができる。特に、ＣＬアプリケーションＡＰＩ５４４のＡＰＩは、メールボックス論理５１１と通信することができるアプリケーション機能５１５を標的としたトランザクションを生成することが可能なＡＬ管理ドライバ５４２とインターフェース接続することができる。このようにして、エンドユーザアプリケーション５４１は管理パーティション５３０に、構成可能ハードウェアプラットフォーム５１０に関する動作またはメタデータを提供させ、および／または構成可能アプリケーション論理５１６が再構成されるように要求させることができる。
【００６８】
[0075]ハイパーバイザまたはカーネル５２４と共にアプリケーションソフトウェアスタックは、エンドユーザアプリケーション５４１によって物理的相互接続上で実行するために利用可能な動作を制限するために使用されることが可能である。たとえば、計算サービスプロバイダは、（ファイルをマシンイメージに関連付けることなどによって）ＡＬ管理ドライバ５４２、ＡＬデータプレーンドライバ５４３、およびＣＬアプリケーションＡＰＩ５４４を提供することができる。これらのコンポーネントは、エンドユーザおよびエンドユーザよりも高い特権レベルを有するサービスにのみファイルへの書き込みを許可することによって、修正から保護されることが可能である。ＡＬ管理ドライバ５４２およびＡＬデータプレーンドライバ５４３は、アプリケーション機能５１５のアドレス範囲内のアドレスのみを使用することによって制限されることが可能である。加えて、入出力メモリ管理ユニット（Ｉ／Ｏ  ＭＭＵ）は、アプリケーション機能５１５または管理機能５１３のアドレス範囲内になるように相互接続トランザクションを制限することができる。
【００６９】
[0076]図６は、構成データをフェッチし、構成データを使用してマルチテナント環境内の構成可能ハードウェアのインスタンスを構成し、構成可能ハードウェアのインスタンスを使用する、例示的な方法６００のシーケンス図である。シーケンス図は、構成可能論理を構成するために使用される計算サービスインフラストラクチャの異なる要素によって使用される、一連のステップを示す。一例として、計算サービスプロバイダのインフラストラクチャコンポーネントは、マーケットプレイス６１０、顧客インスタンス６１２、制御プレーン６１４、構成可能ハードウェアプラットフォーム６１６、および論理リポジトリサービス６１８を含むことができる。マーケットプレイスサービス６１０は、エンドユーザ、または計算サービスプロバイダのエンドユーザにアクセラレータを提供または販売する独立したハードウェア開発者によって作成されたハードウェアアクセラレータ用の構成データを受信することができる。マーケットプレイスサービス６１０は、エンドユーザが自身のニーズに適したハードウェアアクセラレータを見つけられるように、購入またはライセンス取得のために利用可能なアクセラレータのリストを提供することができる。顧客インスタンス６１２は、サーバコンピュータ上で実行されるソフトウェア（仮想マシン、オペレーティングシステム、および／またはアプリケーションソフトウェアなど）を含むことができ、そこでソフトウェアは、エンドユーザが計算サービスプロバイダのリソースを展開するのに応答して起動される。サーバコンピュータは、制御プレーンソフトウェア６１４を実行中であってもよく、これは構成可能ハードウェアプラットフォーム６１６の構成を管理するために使用されることが可能である。構成可能ハードウェアプラットフォーム６１６は、上述のように、再構成可能論理およびホスト論理を含むことができる。論理リポジトリサービス６１８は、たとえば製品コード、マシンインスタンス識別子、および／または構成可能ハードウェア識別子によってインデックスを付けられることが可能な構成データのリポジトリを含むことができる。論理リポジトリサービス６１８は、インデックスの１つを使用して構成データの要求を受信することができ、構成データを制御プレーンに返すことができる。
【００７０】
[0077]計算サービスプロバイダインフラストラクチャのコンポーネントは、顧客インスタンス６１２の展開および使用中に、様々なフェーズで使用されることが可能である。たとえば、フェーズは、構成データフェッチフェーズ６２０、アプリケーション論理構成フェーズ６３０、およびアプリケーションフェーズ６４０を含むことができる。
【００７１】
[0078]構成データフェッチフェーズ６２０は、論理リポジトリサービス６１８からアプリケーション論理を識別およびフェッチすることを含むことができる。具体的には、計算サービスのエンドユーザは、マーケットプレイスサービス６１０、制御コンソール、または他のインスタンスを使用して、マシンインスタンスに加入および起動６２２することができる。マーケットプレイスサービス６１０は、顧客インスタンス６１２が開始されるように、マシンイメージのインスタンスをサーバコンピュータ上にロード６２４させるフローを開始することができる。マシンイメージは、エンドユーザおよび計算サービスプロバイダによって提供された制御プレーンソフトウェアによって書き込みおよび／または使用される、アプリケーションソフトウェアを含むことができる。マシンイメージにロードするための要求６２４は、マーケットプレイスサービス６１０から、サーバコンピュータ上で実行されている制御プレーン６１４に送信されることが可能である。たとえば、制御プレーン６１４はストレージサービス（図示せず）からマシンイメージをダウンロードすることができ、マシンイメージはサーバコンピュータ上にロード６２６されることが可能である。仮想マシンインスタンス内のマシンイメージのフェッチ、ロード、およびブートは時間がかかる可能性があるので、制御プレーン６１４は、マシンイメージのフェッチおよびロードと平行して、論理リポジトリサービス６１８からアプリケーション論理に対応する構成データをフェッチ６２８する要求を送信することができる。ストレージからマシンイメージをフェッチして論理リポジトリサービス６１８からアプリケーション論理をフェッチする動作が直列または並列で行われ得ることに、留意すべきである。論理リポジトリサービス６１８は、構成データを用いて返信６２９することができる。このため、６１４における制御プレーンソフトウェアは、アプリケーション論理が構成可能ハードウェアプラットフォーム上にロードされ得るように、アプリケーション論理に対応する構成データのコピーを受信することができる。
【００７２】
[0079]構成フェーズ６３０は、構成可能ハードウェアプラットフォーム６１６上に構成データをロードすることを含むことができる。構成フェーズ６３０は、構成可能ハードウェアプラットフォームをクリーニングすること６３２を含むことができる。たとえば、構成可能ハードウェアプラットフォームをクリーニングすること６３２は、以前の顧客のデータが現在の顧客によって観察可能とならないように、構成可能ハードウェアプラットフォームと通信するあらゆるメモリ（たとえば、パブリックペリフェラル）に書き込むことを含むことができる。メモリをクリーニングすること６３２は、全てゼロを書き込むこと、全て１を書き込むこと、および／またはメモリの記憶場所にランダムなパターンを書き込むこと、を含むことができる。加えて、構成可能ハードウェアプラットフォーム６１６の構成可能論理メモリは、完全にまたは部分的にスクラブされ得る。構成可能ハードウェアプラットフォーム６１６がクリーニングされた後、構成可能ハードウェアプラットフォーム６１６上にロードされたホスト論理バージョンは、制御プレーン６１４に返されること６３４が可能である。ホスト論理バージョンは、アプリケーション論理が構成可能ハードウェアプラットフォーム６１６上にロードされたホスト論理と一致するか否かを確認６３５するために使用され得る。ホスト論理とアプリケーション論理が一致しない場合には、構成フェーズ６３０は中止され得る（図示せず）。あるいは、ホスト論理とアプリケーション論理が一致する場合には、構成フェーズ６３０は６３６において継続することができる。アプリケーション論理が構成可能ハードウェアプラットフォーム６１６上にロード６３６され得るように、アプリケーション論理は制御プレーン６１４から構成可能ハードウェアプラットフォーム６１６にコピーされることが可能である。ロード６３６した後、構成可能ハードウェアプラットフォーム６１６は、構成可能ハードウェアプラットフォーム６１６上にロードされた機能（たとえば、アプリケーション論理）が準備できていることを示す６３７。制御プレーン６１４は、アプリケーション論理が初期化されて使用準備が整っていることを、顧客インスタンス６１２に示す６３８ことができる。あるいは、制御プレーン６１４は、構成可能ハードウェアプラットフォーム６１６が構成されるまで仮想マシンが実行を開始できないように、表示６３７が制御プレーン６１４によって受信されるまで仮想マシンが初期化またはブートシーケンスを完了するのを防止することができる。
【００７３】
[0080]アプリケーションフェーズ６４０は、アプリケーション論理が初期化された後に開始することができる。アプリケーションフェーズ６４０は、顧客インスタンス６１２上でアプリケーションソフトウェアを実行すること、および構成可能ハードウェアプラットフォーム６１６上でアプリケーション論理を実行することを、含むことができる。特に、顧客インスタンス６１２のアプリケーションソフトウェアは、構成可能ハードウェアプラットフォーム６１６のアプリケーション論理と通信６４２することができる。たとえば、アプリケーションソフトウェアはデータをアプリケーション論理に転送させることができ、データはアプリケーション論理によって処理されることが可能であり、処理されたデータおよび／または状態情報はアプリケーションソフトウェアに返されることが可能である。アプリケーション論理は、汎用コンピュータ上のソフトウェアのみを使用するのと比較して処理速度を加速できる可能性がある、専用のまたはカスタマイズされたハードウェアを含むことができる。アプリケーション論理は、顧客インスタンス６１２の持続時間にわたって同じ機能を実行することができ、またはアプリケーション論理は、顧客インスタンス６１２が実行している間に適合または再構成されることが可能である。たとえば、顧客インスタンス６１２上で実行しているアプリケーションソフトウェアは、異なるアプリケーション論理が構成可能ハードウェアプラットフォーム６１６上にロードされるように要求することができ、または追加のアプリケーション論理が第２の構成可能ハードウェアプラットフォーム（図示せず）上にロードされることが可能である。特に、アプリケーションソフトウェアは構成可能ハードウェアプラットフォーム６１６に要求６４４を発行することができ、そこから要求を制御プレーン６１４に転送６４６することができ、または顧客はＡＰＩ要求を論理リポジトリサービスまたは計算サービスに提出して、インスタンスの識別子、アプリケーション論理の識別子、および構成可能ハードウェアプラットフォームをインスタンスに追加することを示すパラメータを指定することができる。制御プレーン６１４は、論理リポジトリサービス６１８から６２８において新しいアプリケーション論理をフェッチし始めることができる。新しいアプリケーション論理が実行中の顧客インスタンス上にロードされると、顧客は顧客インスタンス６１２のために変化しないので、クリーニング６３２ステップは省略されてもよい。
【００７４】
[0081]加えて、顧客データがさらに保護されるように、構成可能ハードウェアプラットフォーム６１６をクリーニングするために破棄フェーズ（図示せず）が使用されることが可能である。たとえば、構成可能ハードウェアプラットフォーム６１６のメモリはスクラブされることが可能であり、および／またはアプリケーション論理に関連付けられた構成論理は、顧客が顧客インスタンス６１２を使用するのをやめたときに破棄シーケンスの一部としてスクラブされることが可能である。
【００７５】
[0082]図７は、構成可能ハードウェアプラットフォームを使用する例示的な方法７００のフロー図である。７１０において、構成可能ハードウェアプラットフォームがホスト論理の動作を実行するように、ホスト論理は再構成可能論理の第１領域上にロードされることが可能である。ホスト論理は、ホストインターフェースからトランザクションへの制限付きアクセスを強制するために使用される制御プレーン機能を含むことができる。たとえば、制御プレーン機能は、制御プレーン機能に割り当てられたアドレス範囲の外側にあるトランザクションを拒否することができる。加えて、ホスト論理は、アプリケーション論理が構成可能ハードウェアプラットフォームのハードマクロを使用すること、およびホストデバイスとの物理インターフェースにアクセスすることを限定または制限するための論理を含むことができる。このため、ハードマクロおよびコンピューティングインフラストラクチャの他のコンポーネントとのインターフェースがホスト論理によって管理されるように、ホスト論理はアプリケーション論理をカプセル化することができる。
【００７６】
[0083]ホスト論理は、一度にまたは徐々にロードされることが可能である。たとえば、ホスト論理は、構成可能ハードウェアプラットフォームのリセット信号のデアサーション時にロードされる静的論理を含むことができる。具体例として、静的論理に対応する構成データは構成可能ハードウェアプラットフォームのフラッシュメモリ内に記憶されることが可能であり、フラッシュメモリの内容は、静的ホスト論理を用いて構成可能ハードウェアプラットフォームをプログラムするために使用されることが可能である。一実施形態では、静的論理は、ホストコンピュータ（たとえば、顧客インスタンス）による介入を伴わずにロードされることが可能である。付加的にまたは代わりに、ホスト論理は、静的論理がロードされた後にロードされる再構成可能論理を含むことができる。たとえば、静的ホスト論理が動作している間に再構成可能ホスト論理が追加されることが可能である。特に、再構成可能ホスト論理は、再構成可能ホスト論理がロードされることを要求するトランザクションを受信するとロードされることが可能である。たとえば、トランザクションは、構成可能ハードウェアプラットフォームをホストコンピュータに接続する物理的相互接続を介してホストコンピュータから送信されることが可能である。
【００７７】
[0084]ホスト論理を静的論理コンポーネントおよび再構成可能論理コンポーネントに分割することによって、ホスト論理は徐々に構成可能ハードウェアプラットフォーム上にロードされることが可能である。たとえば、静的論理は、通信インターフェース、列挙論理、および構成管理論理など、ホスト論理の基本機能を含むことができる。静的論理内に通信インターフェースを提供することによって、計算システムが通電および／またはリセットされたときに構成可能ハードウェアプラットフォームは物理的相互接続上で発見または列挙されることが可能である。再構成可能論理は、ホスト論理に更新を提供し、ホスト論理により高いレベルの機能を提供するために、使用されることが可能である。たとえば、いくつかの相互接続技術は、相互接続に取り付けられたデバイスを列挙するのに時間制限を有する。構成可能ハードウェアプラットフォーム上にホスト論理をロードする時間は列挙に割り当てられた時間量に含まれる可能性があるので、初期のホスト論理は比較的高速でロードされるサイズであり得る。このため、構成可能ハードウェアプラットフォームが相互接続技術によって指定された時間制限内で動作できるように、静的論理はホスト論理機能のサブセットであってもよい。再構成可能論理は、列挙またはブートアップシーケンスが完了した後に加えられる追加のホスト論理機能を提供することができる。一例として、データプレーン（ＤＭＡエンジン、ＣＨＰファブリック、ペリフェラルファブリック、またはパブリックペリフェラルインターフェースなど）に関連付けられたホスト論理は、静的論理がロードされた後に再構成可能論理としてロードされることが可能である。
【００７８】
[0085]７２０において、再構成可能論理の第２領域にアプリケーション論理をロードする要求を含むトランザクションが受信され得る。再構成可能論理の第２領域は、ホスト論理が修正されないように、再構成可能論理の第１領域と重複しなくてもよい。加えて、再構成可能論理の第２領域は、静的ホスト論理とのインターフェースを有することができる。一例として、アプリケーション論理をロードする要求を含むトランザクションは、アプリケーション論理のロードを開始するためにホスト論理の制御レジスタを標的とすることができる。
【００７９】
[0086]７３０において、再構成可能論理の第２領域は、アプリケーション論理をロードする要求が認証されて初めてアプリケーション論理の動作を実行するように構成されることが可能である。要求は、様々な方法で認証され得る。たとえば、要求はアドレスを含むことができ、要求は、アドレスが所定のアドレスと一致するかまたはホスト論理に割り当てられたアドレスの範囲内にあるときに、認証されることが可能である。具体例として、アプリケーション論理のロードを制御するための制御レジスタがアドレスに割り当てまたはマッピングされることが可能であり、要求は、制御レジスタに対応するアドレスを含むときに認証されることが可能である。付加的にまたは代わりに、要求は、要求が認証されるか否かを判断するためにホスト論理によって確認される認証トークンを含むことができる。
【００８０】
[0087]７４０において、ホストコンピュータとアプリケーション論理との間の情報は、ホスト論理の変換層を使用して送信されることが可能である。たとえば、アプリケーション論理は変換層のストリーミングインターフェースを使用することができ、変換層は、相互接続ファブリックのフォーマットおよびサイズ仕様に準拠するパケットまたはトランザクションをフォーマットすることができる。変換層を使用することによって、アプリケーション論理は、トランザクションを直接作成することおよび／または物理的相互接続のトランザクションを見ることが制限されるので、ホストコンピュータのセキュリティおよび利用可能性が向上できる可能性がある。このため、変換層の使用によって、物理的相互接続上で行われているトランザクションの整合性およびプライバシーを保護することができる。
【００８１】
[0088]７５０において、パブリックペリフェラルとアプリケーション論理との間の情報は、ホスト論理の変換層を使用して送信されることが可能である。上述のように、パブリックペリフェラルは、メモリおよび／またはその他の構成可能ハードウェアプラットフォームを含むことができる。変換層は、アプリケーション論理が転送プロトコルの低レベルの詳細に準拠することで負荷を受けないように、およびパブリックペリフェラルが（誤動作を引き起こすことまたは特権のある情報にアクセスすることなどによって）誤用されないように、パブリックペリフェラルとアプリケーション論理との間の全ての転送をフォーマットすることができる。
【００８２】
[0089]７６０において、ホスト論理は、アプリケーション論理のトランザクションを分析するために使用されることが可能である。たとえば、ホスト論理は、アプリケーション論理および／またはホスト論理の帯域幅、待ち時間、およびその他の性能特性などの動作特性を追跡することができる。別の例として、ホスト論理は、トランザクションが所定の基準に準拠しているか否かを判断するために、トランザクションを分析することができる。トランザクションが基準に準拠していない場合には、ホスト論理はアプリケーション論理で生じるトランザクションをキャンセルする可能性がある。
【００８３】
[0090]図８は、説明された技術革新が実装され得る適切な計算環境８００の汎用的な例を示す図である。技術革新は、多様な汎用または専用計算システムに実装されるので、計算環境８００は、使用または機能の範囲に関していかなる限定も示唆することを意味するものではない。たとえば、計算環境８００は、様々な計算装置（たとえば、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータなど）のいずれであってもよい。
【００８４】
[0091]図８を参照すると、計算環境８００は、１つ以上の処理ユニット８１０、８１５およびメモリ８２０、８２５を含む。図８では、この基本構成８３０は破線の中に含まれる。処理ユニット８１０、８１５は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）内のプロセッサ、またはその他いずれかのタイプのプロセッサであり得る。多重処理システムでは、処理能力を向上させるために複数の処理ユニットがコンピュータ実行可能命令を実行する。たとえば、図８は、中央処理ユニット８１０ならびにグラフィック処理ユニットまたは共処理ユニット８１５を示している。有形メモリ８２０、８２５は、処理ユニットによってアクセス可能な、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこれら２つの何らかの組み合わせであってもよい。メモリ８２０、８２５は、処理ユニットによる実行に適したコンピュータ実行可能命令の形態の、本明細書に記載される１つ以上の技術革新を実装するソフトウェア８８０を記憶する。
【００８５】
[0092]計算システムは追加の特徴を有してもよい。たとえば、計算環境８００は、ストレージ８４０、１つ以上の入力装置８５０、１つ以上の出力装置８６０、および１つ以上の通信接続８７０を含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）は、計算環境８００のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア（図示せず）は、計算環境８００内で実行される他のソフトウェアに動作環境を提供し、計算環境８００のコンポーネントのアクティビティを調整する。
【００８６】
[0093]有形ストレージ８４０は、リムーバブルまたは非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的に情報を記憶させるために使用可能であって計算環境８００内でアクセス可能なその他いずれかの媒体を含む。ストレージ８４０は、本明細書に記載される１つ以上の技術革新を実装するソフトウェア８８０のための命令を記憶する。
【００８７】
[0094]入力装置８５０は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、走査装置、または計算環境８００への入力を提供するその他の装置であってもよい。出力装置８６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、または計算環境８００からの出力を提供するその他の装置であってもよい。
【００８８】
[0095]通信接続８７０は、他のコンピューティングエンティティとの通信媒体を介した通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオまたはビデオ入力または出力、もしくは他のデータなどの情報を、変調データ信号で搬送する。変調データ信号は、信号内の情報を符号化するようにその特性の１つ以上が設定または変更された信号である。限定ではなく例として、通信媒体は、電気、光、ＲＦ、またはその他のキャリアを使用することができる。
【００８９】
[0096]本開示の実施形態は、以下の条項を考慮して記載され得る。
１．構成可能論理プラットフォームであって、
構成可能論理プラットフォームをプロセッサに接続するための物理的相互接続と、
構成データに基づいて構成された論理ブロックを備える再構成可能論理領域と、
再構成可能論理領域が構成データに基づいて構成されるように、再構成可能論理領域に構成データを適用するための構成ポートと、
物理的相互接続のトランザクションを介してアクセス可能な制御プレーン機能であって、制御プレーン機能は構成ポートと通信しており、制御プレーン機能は物理的相互接続から構成ポートへの制限付きアクセスのみを提供する、制御プレーン機能と、
物理的相互接続のトランザクションを介してアクセス可能なデータプレーン機能であって、データプレーン機能は、物理的相互接続を介して情報を送信させて再構成可能論理領域が物理的相互接続に直接アクセスするのを防止する、再構成可能論理領域とのインターフェースを提供する、データプレーン機能と、
を備える構成可能論理プラットフォーム。
２．構成ポートに制限付きアクセスのみを提供することは、第１のアドレス範囲内のアドレスを備えるトランザクションが構成ポートにアクセスできるようにすることのみを備える、条項１に記載の構成可能論理プラットフォーム。
３．物理的相互接続はペリフェラルコンポーネント相互接続エクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）であり、制御プレーン機能およびデータプレーン機能は物理機能である、上記条項のいずれかに記載の構成可能論理プラットフォーム。
４．データプレーン機能は、再構成可能論理領域が１つ以上のアドレス範囲外のアドレスを有するトランザクションを生成することができず、再構成可能論理領域が物理的相互接続上で不正な形式のトランザクションを生成できないように、再構成可能論理領域から生じる全てのトランザクションをフォーマットするようになっている、上記条項のいずれかに記載の構成可能論理プラットフォーム。
５．データプレーン機能と制御プレーン機能との間でメッセージを渡すようになっているメールボックス論理をさらに備える、上記条項のいずれかに記載の構成可能論理プラットフォーム。
６．アプリケーション論理を実装するように構成可能なハードウェアを備える再構成可能論理領域と、
再構成可能論理領域をカプセル化するためのホスト論理であって、ホスト論理は、
プロセッサと通信するためのホストインターフェースと、
ホストインターフェースを介してアクセス可能な管理機能であって、管理機能は再構成可能論理領域を、ホストインターフェースで受信された認証済みトランザクションに応答してアプリケーション論理で構成させるようになっている、管理機能と、
ホストインターフェースを介してアクセス可能なデータパス機能であって、データパス機能は、ホストインターフェースとアプリケーション論理との間のデータ転送をフォーマットするための層を備える、データパス機能と、
を備えるホスト論理と、を備える装置。
７．再構成可能論理領域をアプリケーション論理で構成させることは、装置の構成ポートにアクセスすることを備える、条項６に記載の装置。
８．ホストインターフェースで受信した認証済みトランザクションは、管理機能に割り当てられたアドレス範囲内のアドレスを備える、条項６または７に記載の装置。
９．ホスト論理の少なくとも一部は、デアサートされている装置のリセットに応答して装置上にロードされる静的論理である、条項６から８のいずれかに記載の装置。
１０．ホスト論理の少なくとも一部は、ホストインターフェースで受信された認証済みトランザクションに応答して装置上にロードされる再構成可能論理である、条項６から９のいずれかに記載の装置。
１１．ホスト論理は、アプリケーション論理とパブリックペリフェラルとの間に変換層をさらに備え、変換層は、アプリケーション論理と、パブリックペリフェラルとの通信に使用される装置の論理との間のデータ転送をフォーマットするようになっている、条項６から１０のいずれかに記載の装置。
１２．パブリックペリフェラルはフィールドプログラマブルゲートアレイであり、論理はシリアライザ・デシリアライザトランシーバを含む、条項１１に記載の装置。
１３．ホスト論理はプライベートペリフェラルとのインターフェースをさらに備え、プライベートペリフェラルはアプリケーション論理およびデータパス機能にアクセス不可能である、条項６から１２のいずれかに記載の装置。
１４．ホスト論理は、管理機能とデータパス機能との間でメッセージを渡すためのメールボックス論理をさらに備える、条項６から１３のいずれかに記載の装置。
１５．再構成可能論理およびホストインターフェースを備える構成可能論理プラットフォームを動作させる方法であって、方法は、
構成可能ハードウェアプラットフォームがホスト論理の動作を実行するように再構成可能論理の第１領域上にホスト論理をロードするステップであって、ホスト論理は、ホストインターフェースからトランザクションへの制限付きアクセスを強制する制御プレーン機能を含む、ステップと、
ホストインターフェースにおいて、アプリケーション論理を再構成可能論理の第２領域上にロードさせるための第１トランザクションを受信するステップと、
第１トランザクションが制御プレーン機能のアクセス基準を満たすときにのみアプリケーション論理の動作を実行するように再構成可能論理の第２領域を構成するステップと、
アプリケーション論理がホストインターフェースの使用において制限されるように、ホスト論理の変換層を使用してホストインターフェースを介してアプリケーション論理から情報を送信するステップと、
を備える方法。
１６．再構成可能論理の第１領域上にホスト論理をロードするステップは、
再構成可能論理の第１領域の少なくとも一部に再構成可能ホスト論理をロードさせるための第２トランザクションを、ホストインターフェース上で受信するステップと、
第２トランザクションが制御プレーン機能のアクセス基準を満たすときにのみ再構成可能ホスト論理の動作を実行するように構成可能ハードウェアプラットフォームを構成するステップと、
を備える、条項１５に記載の方法。
１７．構成可能ハードウェアプラットフォーム上にホスト論理をロードするステップは、電力事象に応答して構成可能ハードウェアプラットフォームのメモリから静的ホスト論理をロードするステップを備える、条項１５または１６に記載の方法。
１８．ホストインターフェースの使用においてアプリケーション論理を制限するステップは、アプリケーション論理で生じてホストインターフェースに向かう全てのトランザクションをフォーマットするために変換層を使用するステップを備える、条項１５から１７のいずれかに記載の方法。
１９．アプリケーション論理で生じて構成可能ハードウェアプラットフォームと通信するペリフェラルに向かうトランザクションをフォーマットするためにホスト論理を使用するステップ
をさらに備える、条項１５から１８のいずれかに記載の方法。
２０．アプリケーション論理で生じたトランザクションを監視および分析し、拒否されたトランザクションがホストインターフェース上で送信される前に、所定の基準と一致するトランザクションを拒否するために、ホスト論理を使用するステップ
をさらに備える、条項１５から１９のいずれかに記載の方法。
【００９０】
[0097]開示された方法のいくつかの動作が、便利な提示のために特定の順序で説明されたが、以下に明記される特定の言語によって特定の順序が必要とされない限り、この説明の仕方は並べ替えを包含することを理解すべきである。たとえば、順番に記載された動作は、場合により並べ替えられ、または同時に実行されてもよい。また、簡素化のために、添付図面は、開示された方法が他の方法と共に使用され得る様々なやり方を示していない場合がある。
【００９１】
[0098]開示された方法のいずれも、１つ以上のコンピュータ可読記憶媒体（たとえば、１つ以上の光媒体ディスク、揮発性メモリコンポーネント（ＤＲＡＭまたはＳＲＡＭなど）、または不揮発性メモリコンポーネント（フラッシュメモリまたはハードドライブなど））上に記憶されたコンピュータ実行可能命令として実装され、コンピュータ（たとえば、スマートフォンまたは計算ハードウェアを含むその他のモバイル機器を含む、いずれか市販のコンピュータ）上で実行されることが可能である。コンピュータ可読記憶媒体という用語は、信号および搬送波などの通信接続を含まない。開示された技術を実施するためのコンピュータ実行可能命令のいずれも、ならびに開示された実施形態の実施中に作成および使用されるあらゆるデータも、１つ以上のコンピュータ可読記憶媒体上に記憶されることが可能である。コンピュータ実行可能命令は、たとえば、専用ソフトウェアアプリケーション、もしくはウェブブラウザまたは他のソフトウェアアプリケーション（遠隔コンピューティングアプリケーションなど）を介してアクセスまたはダウンロードされるソフトウェアアプリケーションの一部であり得る。このようなソフトウェアは、たとえば、単一のローカルコンピュータ（たとえば、いずれか適切な市販のコンピュータ）上で、またはネットワーク環境（たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、クライアント・サーバネットワーク（クラウドコンピューティングネットワークなど）、またはその他のこのようなネットワークを介して）で、１つ以上のネットワークコンピュータを使用して、実行されることが可能である。
【００９２】
[0099]明確さのために、ソフトウェアベースの実装の特定の選択された態様のみが説明される。当該技術分野において周知のその他の詳細は省略される。たとえば、開示された技術がいずれの特定のコンピュータ言語またはプログラムにも限定されないことは、理解されるべきである。たとえば、開示された技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ、またはその他いずれか適切なプログラミング言語で記述されたソフトウェアによって実装されることが可能である。同様に、開示された技術は、いずれの特定のコンピュータまたはハードウェアのタイプにも限定されない。適切なコンピュータおよびハードウェアの特定の詳細は周知であり、本開示に詳細に明記される必要はない。
【００９３】
[0100]本明細書に記載されたいずれの機能も、少なくとも部分的に、ソフトウェアの代わりに、１つ以上のハードウェア論理コンポーネントによって実行され得ることもまた、理解されるべきである。たとえば、非限定的に、使用可能なハードウェア論理コンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップシステム（ＳＯＣ）、複合プログラマブル論理デバイス（ＣＰＬＤ）、などを含む。
【００９４】
[0101]さらに、（たとえば、開示された方法のいずれかをコンピュータに実行させるコンピュータ実行可能命令を備える）ソフトウェアベースの実施形態のいずれも、適切な通信手段を通じてアップロード、ダウンロード、またはリモートアクセスされることが可能である。このような適切な通信手段は、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバーケーブルを含む）、磁気通信、電磁気通信（ＲＦ、マイクロ波、および赤外線通信を含む）、電子通信、またはその他のこのような通信手段を含む。
【００９５】
[0102]開示された方法、装置、およびシステムは、決して限定的に解釈されるべきではない。代わりに、本開示は、単独で、または互いに様々な組み合わせおよび部分的組み合わせで、様々な開示された実施形態の全ての新規で明らかではない特徴および態様を、対象とする。開示された方法、装置、およびシステムは、いずれの特定の態様または特徴またはそれらの組み合わせにも限定されず、開示された実施形態は、いずれか１つ以上の利点が存在することも問題が解決されることも必要としない。
【００９６】
[0103]開示された発明の原理が適用され得る多くの可能な実施形態を考慮すると、図示された実施形態は本発明の好適な例に過ぎず、本発明の範囲を限定すると見なされるべきではないことは、認識されるべきである。むしろ、本発明の範囲は、以下の請求項によって定義される。したがって、これらの請求項の範囲に含まれる全てのものを我々の発明として請求する。
【図１】
2020064678.tif 000003
【図２】
2020064678.tif 000004
【図３】
2020064678.tif 000005
【図４】
2020064678.tif 000006
【図５】
2020064678.tif 000007
【図６】
2020064678.tif 000008
【図７】
2020064678.tif 000009
【図８】
2020064678.tif 000010
【外国語明細書】
2020064678000001.pdf