JP2020064678A - 構成可能論理プラットフォーム - Google Patents

構成可能論理プラットフォーム Download PDF

Info

Publication number
JP2020064678A
JP2020064678A JP2020003285A JP2020003285A JP2020064678A JP 2020064678 A JP2020064678 A JP 2020064678A JP 2020003285 A JP2020003285 A JP 2020003285A JP 2020003285 A JP2020003285 A JP 2020003285A JP 2020064678 A JP2020064678 A JP 2020064678A
Authority
JP
Japan
Prior art keywords
logic
host
application
configurable
reconfigurable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020003285A
Other languages
English (en)
Other versions
JP6942824B2 (ja
Inventor
アッタ,イスラム
Atta Islam
クリストファー ジョセフ ペティ,
Joseph Pettey Christopher
クリストファー ジョセフ ペティ,
カーン,アシフ
Khan Asif
マイケル ジョンソン,ロバート
Michael Johnson Robert
マイケル ジョンソン,ロバート
ブラッドリー デイビス,マーク
Bradley Davis Mark
ブラッドリー デイビス,マーク
アイゼンバーグ,エレズ
Izenberg Erez
ビシャラ,ナフィア
Bshara Nafea
コンスタンティニデス,キプロス
Constantinides Kypros
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2020064678A publication Critical patent/JP2020064678A/ja
Application granted granted Critical
Publication of JP6942824B2 publication Critical patent/JP6942824B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】再利用可能な一般的な計算リソースのセット内に専用計算リソースを提供する。【解決手段】構成可能論理プラットフォーム110は、ホスト論理および再構成可能論理領域を含む。再構成可能論理領域は、アプリケーション論理を実装するように構成可能な論理ブロックを含むことができる。ホスト論理は、再構成可能論理領域をカプセル化するために使用されることが可能であり、プロセッサと通信するためのホストインターフェースを含む。ホスト論理は、ホストインターフェースを介してアクセス可能な管理機能を含む。管理機能は、ホストインターフェースからの認証された要求に応答して、再構成可能論理領域をアプリケーション論理で構成させる。【選択図】図1

Description

[0001]クラウドコンピューティングは、遠隔地で利用可能で、インターネットなどのネットワークを介してアクセス可能な計算リソース(ハードウェアおよびソフトウェア)の使用である。いくつかの配置では、ユーザは、これらの計算リソース(ストレージおよび計算能力を含む)を要求に応じてユーティリティとして購入することができる。クラウドコンピューティングは、遠隔サービスにユーザのデータ、ソフトウェア、および計算を委ねる。仮想計算リソースの使用は、コスト上の利点および/または変化する計算リソースのニーズに迅速に適応する能力を含む、いくつかの利点を提供することができる。
[0002]大規模コンピュータシステムのユーザは、異なる使用事例から生じる多様な計算要件を有する可能性がある。計算サービスプロバイダは、様々なレベルの性能および/または機能を有する異なるタイプのコンポーネントを有する様々な異なるコンピュータシステムを含むことができる。したがって、ユーザは、特定のタスクを実行することにおいて潜在的により効率的であり得るコンピュータシステムを選択することができる。たとえば、計算サービスプロバイダは、処理性能、メモリ性能、記憶容量または性能、およびネットワーク容量または性能の様々な組み合わせをシステムに提供することができる。しかしながら、一部のユーザは、彼らのコンピューティングタスクを実行するために専用のまたは非常に特殊化されたハードウェアを使用することを望むかもしれない。このため、計算サービスプロバイダは、リソースを異なるユーザ間で効率的に割り当てることができるように、汎用のリソースの健全な混合を維持しながら、これらのユーザに専用の計算ハードウェアを提供することを迫られる可能性がある。
構成可能論理プラットフォームを含むシステムの一例を示すシステム図である。 構成可能論理プラットフォームを含むシステムの別の例を示すシステム図である。 構成可能論理プラットフォームに構成データを供給するための論理リポジトリサービスを含むシステムの一例を示すシステム図である。 構成可能論理プラットフォームを有するサーバコンピュータを含むマルチテナント環境で動作する複数の仮想マシンインスタンスを示す例示的なシステム図である。 構成可能ハードウェアプラットフォームを構成およびインターフェース接続するための制御プレーンおよびデータプレーンのコンポーネントを含む図4の例示的なシステムのさらなる詳細を示す図である。 マルチテナント環境において構成可能ハードウェアのための構成データをフェッチ、構成、および使用する例示的な方法のシーケンス図である。 構成可能ハードウェアプラットフォームを使用する例示的な方法のフロー図である。 説明された技術革新が実装され得る適切な計算環境の汎用的な例を示す図である。
[0011]再利用可能な一般的な計算リソースのセット内に専用計算リソースを提供する1つの解決策は、一般的な計算リソースの中での選択肢として(サーバコンピュータにフィールドプログラマブルゲートアレイ(FPGA)を含むアドインカードを提供することなどによって)構成可能論理プラットフォームを備えるサーバコンピュータを提供することである。構成可能論理は、構成可能論理に適用またはロードされた構成データによって指定された論理機能を実行するようにプログラムまたは構成されることが可能なハードウェアである。たとえば、計算リソースのユーザは、構成可能論理を構成するための仕様(ハードウェア記述言語で記述されたソースコードなど)を提供することができ、構成可能論理は仕様にしたがって構成されることが可能であり、構成された論理はユーザのためにタスクを実行するために使用されることが可能である。しかしながら、計算設備の低レベルハードウェアへのユーザアクセスを可能にすることで、計算設備内のセキュリティおよびプライバシー問題をもたらす可能性がある。具体例として、構成された論理が計算設備内の1つ以上のサーバコンピュータを誤作動(たとえば、クラッシュ、ハング、またはリブート)させるかまたはネットワークサービスを拒絶させた場合、1人のユーザからの誤りまたは悪意による設計が他のユーザへのサービスの拒絶を引き起こす可能性がある。別の具体例として、構成された論理が他のユーザのメモリ空間のメモリの読み書きできる場合、1人のユーザからの誤りまたは悪意による設計が別のユーザからのデータを破損または読み取る可能性がある。
[0012]本明細書で説明されるように、計算サービス設備は様々な計算リソースを含むことができ、あるタイプの計算リソースは、構成可能論理プラットフォームを備えるサーバコンピュータを含むことができる。構成可能論理プラットフォームは、計算リソースのハードウェア(たとえば、構成可能論理)がユーザによってカスタマイズされるように、コンピュータシステムのユーザによってプログラムまたは構成されることが可能である。たとえば、ユーザは、サーバコンピュータにしっかりと結合されたハードウェアアクセラレータとして機能するように、構成可能論理をプログラムすることができる。具体例として、ハードウェアアクセラレータは、サーバコンピュータのペリフェラルコンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)などのローカル相互接続を介してアクセス可能であってもよい。ユーザはサーバコンピュータ上でアプリケーションを実行することができ、アプリケーションのタスクはPCIeトランザクションを使用してハードウェアアクセラレータによって行われることが可能である。ハードウェアアクセラレータをサーバコンピュータにしっかりと結合することによって、アクセラレータとサーバコンピュータとの間の待ち時間を短縮することができ、これによってアプリケーションの処理速度を加速できる可能性がある。
[0013]計算サービスプロバイダは、ユーザのハードウェアアクセラレータ(本明細書ではアプリケーション論理とも呼ばれる)を構成可能論理プラットフォームのホスト論理の中にラッピングまたはカプセル化することによって、計算リソースのセキュリティおよび/または利用可能性を向上できる可能性がある。アプリケーション論理をカプセル化することは、構成リソース、物理インターフェース、構成可能論理プラットフォームのハードマクロ、および構成可能論理プラットフォームの様々なペリフェラルへのアプリケーション論理のアクセスを制限または制御することを含むことができる。たとえば、計算サービスプロバイダは、ホスト論理およびアプリケーション論理の両方を含むように、構成可能論理プラットフォームのプログラミングを管理することができる。ホスト論理は、アプリケーション論理が中で動作するためのフレームワークまたはサンドボックスを提供することができる。具体的には、ホスト論理はアプリケーション論理と通信し、アプリケーション論理の機能を制限することができる。たとえば、ホスト論理は、アプリケーション論理がローカル相互接続上の信号通信を直接制御することができないように、ローカル相互接続(たとえば、PCIe相互接続)とアプリケーション論理との間のブリッジ機能を行うことができる。ホスト論理は、ローカル相互接続上にパケットまたはバストランザクションを形成し、プロトコル要件が満たされることを保証する責任を負う。ローカル相互接続上のトランザクションを制御することによって、ホスト論理は、不正な形式のトランザクションまたは範囲外の場所へのトランザクションを防止できる可能性がある。別の例として、ホスト論理は、計算サービスプロバイダによって提供されるサービスを使用せずにアプリケーション論理が構成可能論理プラットフォームを再プログラムさせられないように、構成アクセスポートを隔離することができる。
[0014]図1は、構成可能論理プラットフォーム110およびサーバコンピュータ120を含む計算システム100の一例を示すシステム図である。たとえば、サーバコンピュータ120は、エンドユーザ向けのアプリケーションプログラムを実行するために使用されることが可能である。具体的には、サーバコンピュータ120は、中央処理ユニット(CPU)122、メモリ124、およびペリフェラルインターフェース126を含むことができる。CPU122は、メモリ124に記憶された命令を実行するために使用されることが可能である。たとえば、メモリ124はアプリケーションプログラムの全てまたは一部を搭載することができ、CPU122はアプリケーションプログラムの命令を実行することができる。アプリケーションプログラムは、ペリフェラルインターフェース126を使用してトランザクションを発行することによって、構成可能論理プラットフォーム110のハードウェアアクセラレータと通信することができる。
[0015]本明細書で使用される際に、トランザクションとはコンポーネント間の通信である。具体例として、トランザクションは、読み取り要求、書き込み、読み取り応答、メッセージ、割り込み、またはコンポーネント間のその他の様々な情報の交換であってもよい。トランザクションは、複数のコンポーネントによって共有されるバス上で行われることが可能である。具体的には、バスの通信プロトコルを使用してバス上で情報を転送するために、バスの信号線の値が変調され得る。トランザクションは、アドレスフェーズおよび1つ以上のデータフェーズなど、1つ以上のフェーズにわたって行われることが可能である。付加的にまたは代わりに、トランザクションは、2つのコンポーネントを接続するポイントツーポイント相互接続の1つ以上のシリアルラインを使用して行われることが可能である。具体的には、トランザクションは、ポイントツーポイント相互接続で送信されるパケットで送信されることが可能である。
[0016]ペリフェラルインターフェース126は、ローカルまたは前面相互接続を使用するCPU122とペリフェラルまたは拡張相互接続を使用するコンポーネントとの間で通信するためのブリッジを含むことができる。具体的には、ペリフェラルインターフェース126は、サーバコンピュータ120を構成可能論理プラットフォーム110におよび/または他のコンポーネントに接続するために使用される物理的相互接続に接続されることが可能である。たとえば、物理的相互接続は、共有パラレルバスまたはシリアルポイントツーポイントリンクを使用して複数のコンポーネントを互いに接続するための拡張バスであってもよい。具体例として、物理的相互接続は、PCIエクスプレス、PCI、またはサーバコンピュータ120を構成可能論理プラットフォーム110にしっかりと結合するその他の物理的相互接続であってもよい。このため、サーバコンピュータ120および構成可能論理プラットフォーム110は、たとえばPCIバストランザクションまたはPCIeパケットを使用して通信することができる。
[0017]構成可能論理プラットフォーム110は、ホスト論理および再構成可能論理領域140を含むことができる。ホスト論理は、ホストインターフェース112、管理機能114、およびデータパス機能116を含むことができる。再構成可能論理領域140は、ハードウェアアクセラレータまたはアプリケーション論理を実装するように構成可能なハードウェアを含むことができる。言い換えると、再構成可能論理領域140は、任意の機能を行うようにプログラム可能な論理を含むことができる。たとえば、再構成可能論理領域140は、組み合わせ論理および/またはルックアップテーブル(LUT)および逐次論理素子(フリップフロップおよび/またはラッチなど)、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ(RAM)、デジタル信号処理(DSP)ビットスライス、プログラマブル入出力ピンを備えるプログラマブル論理ブロックを含むことができる。
[0018]ホスト論理は、再構成可能論理領域140をカプセル化するために使用されることが可能である。たとえば、再構成可能論理領域140は、実行できる機能に再構成可能論理領域140が制限されるように、所定のインターフェースを使用して構成可能ハードウェアプラットフォームの様々なコンポーネントとインターフェース接続することができる。一例として、再構成可能論理領域は、再構成可能論理領域140が構成される前に実装された静的ホスト論理とインターフェース接続することができる。たとえば、静的ホスト論理は、構成可能論理プラットフォーム110の異なるコンポーネントを再構成可能論理領域140から隔離する論理を含むことができる。一例として、構成可能論理プラットフォーム110のハードマクロ(構成アクセスポートまたは物理的相互接続で信号通信するための回路など)は、再構成可能論理領域140がハードマクロに直接アクセスできないように、マスクオフされることが可能である。
[0019]ホスト論理は、サーバコンピュータ120と通信するためのホストインターフェース112を含むことができる。具体的には、ホストインターフェース112は、物理的相互接続に接続し、物理的相互接続の通信プロトコルを使用してサーバコンピュータ120と通信するために、使用されることが可能である。一例として、サーバコンピュータ120は、構成可能論理プラットフォーム110に関連付けられたアドレスを含むトランザクションを使用して、構成可能論理プラットフォーム110と通信することができる。同様に、構成可能論理プラットフォーム110は、サーバコンピュータ120に関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ120と通信することができる。物理的相互接続に接続された様々な装置に関連付けられたアドレスは、システム設計者によって事前定義され、装置上に存在するソフトウェアにプログラムされることが可能である。付加的にまたは代わりに、通信プロトコルは、物理的相互接続に接続された装置が照会され、アドレスが列挙シーケンスの一部として装置の各々に割り当てられる、列挙シーケンスを含むことができる。一例として、ペリフェラルインターフェース126は、物理的相互接続に接続された装置の各々にクエリを発行することができる。ホストインターフェース112は、構成可能論理プラットフォーム110上にいくつの機能が存在するか、および構成可能論理プラットフォーム110の機能の各々に関連付けられたアドレス範囲のサイズなど、構成可能論理プラットフォーム110に関する情報を提供することによって、クエリに応答することができる。この情報に基づいて、物理的相互接続に接続された各装置の各機能に重複しないアドレス範囲が割り当てられるように、計算システム100のアドレスが割り当てられることが可能である。列挙の後、ホストインターフェース112は、トランザクションのアドレスに基づいて構成可能論理プラットフォーム110の機能にトランザクションをルーティングすることができる。
[0020]ホスト論理は、構成可能論理プラットフォーム110を管理および構成するために使用されることが可能な管理機能114を含むことができる。コマンドおよびデータは、管理機能114のアドレス範囲を標的とするトランザクションを使用して、サーバコンピュータ120から管理機能114に送信されることが可能である。たとえば、サーバコンピュータ120は、データ(たとえば、構成データ)を転送し、かつ/または管理機能114のアドレス範囲内の1つ以上のアドレスにマッピングされた構成可能論理プラットフォーム110の制御レジスタに書き込むためのトランザクションを、生成することができる。制御レジスタに書き込むことで、構成可能論理プラットフォーム110を構成および管理するなどの動作を構成可能論理プラットフォーム110に行わせることができる。具体例として、再構成可能論理領域140に実装されるアプリケーション論理に対応する構成データは、物理的相互接続を介した1つ以上のトランザクションで、サーバコンピュータ120から構成可能論理プラットフォーム110に送信されることが可能である。構成データを用いて再構成可能論理領域140を構成するためのトランザクション150は、サーバコンピュータ120から構成可能論理プラットフォーム110に送信されることが可能である。具体的には、トランザクション150は、再構成可能論理領域140を構成し始める管理機能114のアドレス空間にマッピングされた制御レジスタに、値を書き込むことができる。一実施形態では、構成データは、再構成可能論理領域140の構成が始まる前に、サーバコンピュータ120から構成可能論理プラットフォーム110に転送されることが可能である。たとえば、管理機能114は、構成可能論理プラットフォーム110によってアクセス可能なオンチップまたはオフチップメモリ内に構成データを記憶させることができ、再構成可能論理領域140が構成されているときに構成データがメモリから読み出されることが可能である。別の実施形態では、構成データは、再構成可能論理領域140の構成が始まった後に、サーバコンピュータ120から構成可能論理プラットフォーム110に転送されることが可能である。たとえば、制御レジスタは、再構成可能論理領域140の構成を開始するために書き込まれることが可能であり、構成データは、構成データを含むトランザクションが管理機能114によって処理される際に、再構成可能論理領域140にストリーミングまたはロードされることが可能である。
[0021]ホスト論理は、サーバコンピュータ120と構成可能論理プラットフォーム110との間で情報(たとえば、アプリケーション入出力160)をやり取りするために使用されることが可能な、データパス機能116を含むことができる。具体的には、コマンドおよびデータは、データパス機能116のアドレス範囲を標的とするトランザクションを使用して、サーバコンピュータ120からデータパス機能116に送信されることが可能である。同様に、構成可能論理プラットフォーム110は、サーバコンピュータ120に関連付けられたアドレスを含むトランザクションを使用して、サーバコンピュータ120と通信することができる。データパス機能116は、ホストインターフェース112と再構成可能論理領域140との間の変換層として機能することができる。具体的には、データパス機能116は、再構成可能論理領域140から情報を受信するためのインターフェースを含むことができ、データパス機能116は、ホストインターフェース112からの送信のための情報をフォーマットすることができる。情報をフォーマットすることは、1つ以上のトランザクションのための制御情報を生成すること、およびプロトコル仕様を満たすサイズのブロックにデータを分割することを含むことができる。このため、データパス機能116は、再構成可能論理領域140と物理的相互接続との間に介在することができる。このようにして、再構成可能論理領域140は、再構成可能論理領域140が物理的相互接続のプロトコルを意図せずにまたは悪意を持って違反するために使用され得ないように、トランザクションをフォーマットすること、および物理的相互接続を駆動するために使用される信号を直接制御することが妨げられる可能性がある。
[0022]図2は、構成可能ハードウェアプラットフォーム210およびサーバコンピュータ220を含むシステム200の一例を示すシステム図である。サーバコンピュータ220および構成可能ハードウェアプラットフォーム210は、物理的相互接続230を介して接続されることが可能である。たとえば、物理的相互接続230は、PCIエクスプレス、PCI、またはサーバコンピュータ220を構成可能ハードウェアプラットフォーム210にしっかりと結合するその他いずれかの相互接続であってもよい。サーバコンピュータ220は、CPU222、メモリ224、および相互接続インターフェース226を含むことができる。たとえば、相互接続インターフェース226は、サーバコンピュータ220がサーバコンピュータ220の外部にある装置にアクセスできるように、ブリッジング機能を提供することができる。たとえば、相互接続インターフェース226は、PCIエクスプレスで使用されるようなルート複合機能など、ホスト機能を含むことができる。
[0023]構成可能ハードウェアプラットフォーム210は、再構成可能論理ブロックおよびその他のハードウェアを含むことができる。再構成可能論理ブロックは、構成可能ハードウェアプラットフォーム210の様々な機能を行うように構成またはプログラムされることが可能である。再構成可能論理ブロックは、装置の寿命にわたってブロックが異なる機能を行えるように、異なる構成で複数回プログラムされることが可能である。構成可能ハードウェアプラットフォーム210の機能は、各機能の目的または能力に基づいて、もしくはいつ構成可能ハードウェアプラットフォーム210に機能がロードされるかに基づいて、分類されることが可能である。たとえば、構成可能ハードウェアプラットフォーム210は、静的論理、再構成可能論理、およびハードマクロを含むことができる。静的論理、再構成可能論理、およびハードマクロの機能は、異なる時点で構成されることが可能である。このため、構成可能ハードウェアプラットフォーム210の機能は、徐々にロードされることが可能である。
[0024]ハードマクロは、所定の機能を行うことができ、構成可能ハードウェアプラットフォーム210が電源投入されたときに利用可能となり得る。たとえば、ハードマクロは、特定の機能を行うハードワイヤード回路を含むことができる。具体例として、ハードマクロは、構成可能ハードウェアプラットフォーム210を構成するための構成アクセスポート(CAP)211、シリアルデータを通信するためのシリアライザ・デシリアライザトランシーバ(SERDES)212、オフチップメモリ(ダブルデータレート(DDR)DRAM281など)と信号通信およびこれを制御するためのメモリまたはダイナミックランダムアクセスメモリ(DRAM)コントローラ213、およびストレージデバイス282と信号通信およびこれを制御するためのストレージコントローラ214を含むことができる。
[0025]静的論理は、ブート時に再構成可能論理ブロック上にロードされることが可能である。たとえば、静的論理の機能を指定する構成データは、ブートアップシーケンス中にオンチップまたはオフチップのフラッシュメモリデバイスからロードされることが可能である。ブートアップシーケンスは、(供給電圧が閾値未満から閾値よりも上に推移したことを検出することなどによって)電力事象を検出すること、および電力事象に応答してリセット信号をデアサートすることを含むことができる。初期化シーケンスは、電力事象またはデアサートされているリセットに応答してトリガされることが可能である。初期化シーケンスは、フラッシュデバイス上に記憶された構成データを読み取ること、および再構成可能論理ブロックの少なくとも一部が静的論理の機能でプログラムされるように構成アクセスポート211を使用して構成可能ハードウェアプラットフォーム210上に構成データをロードすることを含むことができる。静的論理がロードされた後、構成可能ハードウェアプラットフォーム210は、ロード状態から、静的論理の機能を含む動作状態に推移することができる。
[0026]再構成可能論理は、構成可能ハードウェアプラットフォーム210が動作可能である間に(たとえば、静的論理がロードされた後に)、再構成可能論理ブロック上にロードされることが可能である。再構成可能論理に対応する構成データはオンチップまたはオフチップメモリに記憶されることが可能であり、および/または構成データは構成可能ハードウェアプラットフォーム210のインターフェース(たとえば、相互接続インターフェース256)から受信またはストリーミングされることが可能である。再構成可能論理は重複しない領域に分割されることが可能であり、これらは静的論理とインターフェース接続することができる。たとえば、再構成可能領域は、アレイまたは他の規則的または半規則的構造で配置されることが可能である。たとえば、アレイ構造は、ハードマクロがアレイ構造内に配置されている場所に穴または妨害物を含むことができる。異なる再構成可能領域は、静的論理として指定され得る信号線を使用して、互いに、静的論理と、およびハードマクロと通信することができる。異なる再構成可能領域は、第1の再構成可能領域が第1の時点で構成され、第2の再構成可能領域が第2の時点で構成されることが可能なように、異なる時点で構成されることが可能である。
[0027]構成可能ハードウェアプラットフォーム210の機能は、機能の目的または能力に基づいて分割または分類されることが可能である。たとえば、機能は、制御プレーン機能、データプレーン機能、および共有機能として分類されることが可能である。制御プレーンは、構成可能ハードウェアプラットフォーム210の管理および構成のために使用されることが可能である。データプレーンは、構成可能ハードウェアプラットフォーム210上にロードされたアクセラレータ論理とサーバコンピュータ220との間のデータ転送を管理するために使用されることが可能である。共有機能は、制御プレーンとデータプレーンの両方によって使用されることが可能である。制御プレーン機能は、データプレーン機能をロードする前に構成可能ハードウェアプラットフォーム210上にロードされることが可能である。データプレーンは、アプリケーション論理240を用いて構成されたカプセル化再構成可能論理を含むことができる。制御プレーンは、構成可能ハードウェアプラットフォーム210のホスト論理を含むことができる。
[0028]一般に、データプレーンおよび制御プレーンは構成可能ハードウェアプラットフォーム210の異なる機能を使用してアクセスされることが可能であり、異なる機能は異なるアドレス範囲に割り当てられる。具体的には、制御プレーン機能は管理機能252を使用してアクセスされることが可能であり、データプレーン機能はデータパス機能またはアプリケーション機能254を使用してアクセスされることが可能である。アドレスマッピング層250は、制御プレーンまたはデータプレーン向けのトランザクションを区別することができる。特に、構成可能ハードウェアプラットフォーム210向けのサーバコンピュータ220からのトランザクションは、トランザクション内のアドレスを使用して識別されることが可能である。具体的には、トランザクションのアドレスが構成可能ハードウェアプラットフォーム210に割り当てられたアドレスの範囲内にある場合、トランザクションは構成可能ハードウェアプラットフォーム210に向かう。トランザクションは、物理的相互接続230を介して送信され、相互接続インターフェース256で受信されることが可能である。相互接続インターフェース256は物理的相互接続230のエンドポイントになり得る。物理的相互接続230は、デバイスまたはコンポーネントをサーバコンピュータ220に接続するためのファブリック内に配置された追加のデバイス(たとえば、スイッチおよびブリッジ)を含むことができることは、理解されるべきである。
[0029]アドレスマッピング層250は、トランザクションのアドレスを分析し、アドレスに基づいて構成可能ハードウェアプラットフォーム210のどこにトランザクションをルーティングすべきかを判断することができる。たとえば、管理機能252は第1の範囲のアドレスに割り当てられることが可能であり、管理プレーンの異なる機能はその範囲内の異なるアドレスを使用してアクセスされることが可能である。管理機能252に割り当てられた範囲内にあるアドレスを有するトランザクションは、ホスト論理プライベートファブリック260を通って制御プレーンの異なるブロックにルーティングされることが可能である。たとえば、トランザクションは管理および構成ブロック262にアドレス指定されることが可能である。同様に、アプリケーション機能254は第2の範囲のアドレスに割り当てられることが可能であり、データプレーンの異なる機能はその範囲内の異なるアドレスを使用してアクセスされることが可能である。
[0030]管理および構成ブロック262は、構成可能ハードウェアプラットフォーム210を管理および構成することに関する機能を含むことができる。たとえば、管理および構成ブロック262は、再構成可能論理ブロックが構成され得るように、構成アクセスポート211へのアクセスを提供することができる。たとえば、サーバコンピュータ220は、カプセル化再構成可能論理240内のアプリケーション論理のロードを開始するために、管理および構成ブロック262にトランザクションを送信することができる。アプリケーション論理に対応する構成データは、サーバコンピュータ220から管理機能252に送信されることが可能である。管理機能252は、アプリケーション論理がロードされ得るように、ホスト論理ファブリック260を通って構成アクセスポート211にアプリケーション論理に対応する構成データをルーティングすることができる。
[0031]別の例として、管理および構成ブロック262は、構成可能ハードウェアプラットフォーム210に関するメタデータを記憶することができる。たとえば、異なる論理ブロックのバージョン、更新履歴、およびその他の情報が、管理および構成ブロック262のメモリ内に記憶され得る。サーバコンピュータ220は、メタデータの一部または全部を取り出すために、メモリを読み取ることができる。具体的には、サーバコンピュータ220は管理および構成ブロック262のメモリを標的とする読み取り要求を送信することができ、管理および構成ブロック262は、サーバコンピュータ220に返すための読み取り応答データを生成することができる。
[0032]管理機能252は、構成可能ハードウェアプラットフォーム210のプライベートペリフェラルにアクセスするために使用されることも可能である。プライベートペリフェラルとは、制御プレーンからのみアクセス可能なコンポーネントである。たとえば、プライベートペリフェラルは、JTAG(たとえば、IEEE1149.1)コントローラ270、発光ディスプレイ(LED)271、マイクロコントローラ272、汎用非同期送受信器(UART)273、メモリ274(たとえば、シリアルペリフェラルインターフェース(SPI)フラッシュメモリ)、およびデータプレーンではなく制御プレーンからアクセス可能なその他いずれかのコンポーネントを含むことができる。管理機能252は、ホスト論理プライベートファブリック260およびプライベートペリフェラルインターフェース275を通ってコマンドをルーティングすることによって、プライベートペリフェラルにアクセスすることができる。プライベートペリフェラルインターフェース275は、プライベートペリフェラルと直接通信することができる。
[0033]パブリックペリフェラルは、制御プレーンまたはデータプレーンのいずれかからアクセス可能な共有機能である。たとえば、パブリックペリフェラルは、管理機能252に割り当てられたアドレス範囲内のトランザクションをアドレス指定することによって、制御プレーンからアクセスされることが可能である。パブリックペリフェラルは、アプリケーション機能254に割り当てられたアドレス範囲内のトランザクションをアドレス指定することによって、データプレーンからアクセスされることが可能である。このため、パブリックペリフェラルは、複数のアドレスマッピングを有することができ、制御プレーンおよびデータプレーンの両方によって使用されることが可能なコンポーネントである。パブリックペリフェラルの例は、他の構成可能ハードウェアプラットフォーム(CHP)280、DRAM281(たとえば、DDR DRAM)、ストレージデバイス282(たとえば、ハードディスクドライブおよびソリッドステートドライブ)、および情報を生成、記憶、または処理するために使用され得るその他の様々なコンポーネントである。パブリックペリフェラルは、パブリックペリフェラルインターフェース285を介してアクセスされることが可能である。このため、パブリックペリフェラルインターフェース285は、パブリックペリフェラルと構成可能ハードウェアプラットフォーム210のその他の機能との間に介在する中間層であり得る。具体的には、パブリックペリフェラルインターフェース285は、制御プレーンまたはデータプレーンからの要求を変換し、パブリックペリフェラルとの通信をパブリックペリフェラルのネイティブプロトコルにフォーマットすることができる。
[0034]メールボックス290およびウォッチドッグタイマ292は、制御プレーンまたはデータプレーンのいずれかからアクセス可能な共有機能である。具体的には、メールボックス290は、制御プレーンとデータプレーンとの間でメッセージおよびその他の情報を渡すために使用されることが可能である。たとえば、メールボックス290は、バッファ、制御レジスタ(セマフォなど)、およびステータスレジスタを含むことができる。制御プレーンとデータプレーンとの間の中間物としてメールボックス290を使用することによって、データプレーンと制御プレーンとの間の分離性が上昇する可能性があり、これは構成可能ハードウェアプラットフォーム210のセキュリティを向上させる可能性がある。
[0035]ウォッチドッグタイマ292は、ハードウェアおよび/またはソフトウェアの誤作動を検出および回復するために使用されることが可能である。たとえば、ウォッチドッグタイマ292は、特定のタスクを行うのにかかる時間量を監視することができ、時間量が閾値を超えた場合には、ウォッチドッグタイマ292は、制御レジスタに値を書き込むこともしくは割り込みまたはリセットをアサートさせるなどの事象を開始することができる。一例として、ウォッチドッグタイマ292は、第1のタスクを開始するときに第1の値で初期化されることが可能である。ウォッチドッグタイマ292は、初期化された後に自動的にカウントダウンすることができ、ウォッチドッグタイマ292がゼロ値に到達した場合に事象が生成されることが可能である。あるいは、ウォッチドッグタイマ292がゼロ値に到達する前に第1のタスクが終了した場合、ウォッチドッグタイマ292は第2のタスクを開始するときに第2の値で初期化されることが可能である。第1および第2の値は、それぞれ第1および第2のタスクで完了すべき作業の複雑さまたは量に基づいて選択されることが可能である。
[0036]アプリケーション機能254は、アプリケーション論理240などのデータプレーン機能にアクセスするために使用されることが可能である。たとえば、アプリケーション論理240を対象とするトランザクションは、データをロード、処理、および/またはサーバコンピュータ220に返送させることができる。具体的には、データプレーン機能は、アプリケーション機能254に割り当てられた範囲内のアドレスを有するトランザクションを使用してアクセスされることが可能である。たとえば、トランザクションはアプリケーション機能254を介してサーバコンピュータ220からアプリケーション論理240に送信されることが可能である。具体的には、アプリケーション機能254にアドレス指定されたトランザクションは、ペリフェラルファブリック264を通ってアプリケーション論理240にルーティングされることが可能である。アプリケーション論理240からの応答は、ペリフェラルファブリック264を通ってアプリケーション機能254にルーティングされ、その後サーバコンピュータ220に戻されることが可能である。加えて、アプリケーション論理240によって生成されたデータおよびトランザクションは、使用量およびトランザクション監視層266を使用して監視されることが可能である。監視層266は、所定の規則に違反するトランザクションまたはデータを潜在的に識別することができ、制御プレーンを介して送信される警告を生成することができる。付加的にまたは代わりに、監視層266は、監視層266のいずれかの基準に違反するアプリケーション論理240によって生成されたいずれのトランザクションも終了させることができる。加えて、監視層266は、情報に関する統計が収集されて制御プレーンからアクセスされることが可能なように、アプリケーション論理240との間で行き来する情報を分析することができる。
[0037]データは、ダイレクトメモリアクセス(DMA)エンジン242をプログラムすることによって、サーバコンピュータ220とアプリケーション論理との間で転送されることも可能である。DMAエンジン242は、送信元から送信先へのDMA転送をプログラムまたは指定するための、制御およびステータスレジスタを含むことができる。一例として、DMAエンジン242は、サーバコンピュータ220のメモリ224内に記憶された情報を、アプリケーション論理240に、または構成可能ハードウェアプラットフォーム210のパブリックペリフェラルに引き込むようにプログラムされることが可能である。別の例として、DMAエンジン242は、アプリケーション論理240によって生成されたデータをサーバコンピュータ220のメモリ224に押し出すようにプログラムされることが可能である。アプリケーション論理240によって生成されたデータは、アプリケーション論理240からストリーミングされるか、もしくはメモリ281またはストレージ282などのパブリックペリフェラルに書き込まれることが、可能である。
[0038]アプリケーション論理240は、他の構成可能ハードウェアプラットフォーム280と通信することができる。たとえば、他の構成可能ハードウェアプラットフォーム280は、SERDES212と通信している1つ以上のシリアルラインによって接続されることが可能である。アプリケーション論理240は、異なる構成可能ハードウェアプラットフォーム280へのトランザクションを生成することができ、トランザクションは、CHPファブリック244を通って構成可能ハードウェアプラットフォーム280の対応するシリアルラインに(SERDES212を介して)ルーティングされることが可能である。同様に、アプリケーション論理240は、逆方向パスを使用して、他の構成可能ハードウェアプラットフォーム280から情報を受信することができる。
[0039]要するに、構成可能ハードウェアプラットフォーム210の機能は、制御プレーン機能およびアプリケーション機能として分類されることが可能である。制御プレーン機能は、データプレーンの能力を監視および制限するために使用されることが可能である。データプレーン機能は、サーバコンピュータ220上で動作しているユーザのアプリケーションを加速させるために使用されることが可能である。制御およびデータプレーンの機能を分離することによって、サーバコンピュータ220およびその他のコンピューティングインフラストラクチャのセキュリティおよび利用可能性が向上する可能性がある。たとえば、制御プレーンの中間層が物理的相互接続230のトランザクションのフォーマットおよび信号通信を制御するので、アプリケーション論理240は物理的相互接続230上に対して直接信号通信することはできない。別の例として、アプリケーション論理240は、構成可能ハードウェアプラットフォーム210を再構成するため、および/または特権を受け得る管理情報にアクセスするために使用されることが可能なプライベートペリフェラルを使用することを、妨げられる可能性がある。別の例として、アプリケーション論理240は、アプリケーション論理240とハードマクロとの間のあらゆる相互作用が中間層を使用して制御されるように、中間層を通じてのみ構成可能ハードウェアプラットフォーム210のハードマクロにアクセスすることができる。
[0040]図3は、一群の計算リソース320内に構成可能なリソースを構成するために使用されることが可能な構成データを管理するための論理リポジトリサービス310を含む、システム300の一例を示すシステム図である。計算サービスプロバイダは、計算タスクが実行されるべきときにサービスのユーザが展開する一群の計算リソース320を維持することができる。計算リソース320は、ハードウェアアクセラレータとしてプログラムされることが可能な構成可能論理リソース342を有するサーバコンピュータ340を含むことができる。計算サービスプロバイダは、構成可能ハードウェア342の構成および動作を管理するためのソフトウェアサービスを使用して、計算リソース320を管理することができる。一例として、計算サービスプロバイダは、ユーザによって指定されたアプリケーション論理332を取り込むため、ユーザの論理設計に基づいて構成可能論理プラットフォームを構成するための構成データ336を生成するため、および構成可能論理プラットフォームのインスタンスを構成するための要求360に応答して検証済み構成データ362をダウンロードするために、論理リポジトリサービス310を実行することができる。ダウンロード要求360は、アプリケーション論理332を開発したユーザから、またはアプリケーション論理332を使用するためのライセンスを取得したユーザからであってもよい。このため、アプリケーション論理332は、計算サービスプロバイダ、ユーザ、もしくはユーザまたは計算サービスプロバイダとは別の第三者によって作成されることが可能である。たとえば、アクセラレータ知的財産(IP)のマーケットプレイスは計算サービスプロバイダのユーザに提供されることが可能であり、ユーザはマーケットプレイスからアクセラレータを選択することによってアプリケーションの速度を潜在的に高めることができる。
[0041]論理リポジトリサービス310は、ウェブサービスなど、ネットワークアクセス可能なサービスであってもよい。ウェブサービスは、クラウドコンピューティングにおいて一般的に使用される。ウェブサービスは、ウェブまたはクラウドを通じてネットワークアドレスにおいて提供されるソフトウェア機能である。クライアントはサーバへのウェブサービス要求を開始し、サーバは要求を処理して適切な応答を返す。クライアントのウェブサービス要求は典型的には、たとえばAPI要求を使用して、開始される。簡潔にするため、ウェブサービス要求は一般に、以下においてAPI要求として説明されるが、他のウェブサービス要求がなされてもよいことは、理解される。API要求は、典型的にはJSONまたはXMLで表される規定の要求応答メッセージシステムとのプログラマチックインターフェースであり、これはウェブを介して、最も一般的にはHTTPベースのウェブサーバによって、公開される。このため、特定の実装形態では、APIは、拡張マークアップ言語(XML)またはJavaScript(登録商標) Object Notation(JSON)形式であってもよい、APIおよび応答メッセージを呼び出すために使用されるメッセージの構造の定義と併せて、ハイパーテキスト転送プロトコル(HTTP)要求インターフェースのセットとして定義されることが可能である。APIは、特定のタスクを遂行すること、またはソフトウェアコンポーネントとの相互作用を可能にすることを含む、動作を実行する機能またはルーチンのセットを指定することができる。ウェブサービスがクライアント装置からAPI要求を受信すると、ウェブサービスは、要求に対する応答を生成し、要求内で識別されたエンドポイントに応答を送信することができる。付加的にまたは代わりに、ウェブサービスは、要求内で識別されたエンドポイントへの応答を生成することなく、API要求に応答して動作を実行することができる。
[0042]論理リポジトリサービス310は、サーバコンピュータ340の構成可能ハードウェア342など、構成可能ハードウェアプラットフォームのための構成データを生成するためのAPI要求330を受信することができる。たとえば、API要求330は、計算サービスプロバイダの開発者またはパートナーユーザによって生じることが可能である。要求330は、論理設計、構成可能ハードウェアプラットフォーム、ユーザ情報、アクセス権、生産状況に関するデータおよび/またはメタデータを指定するためのフィールド、ならびに論理リポジトリサービス310の入力、出力、およびユーザを記述するための様々な追加フィールドを含むことができる。具体例として、要求は、設計の説明、生産状況(試作または量産など)、サービスの入力または出力の暗号化状況、入力ファイルを記憶するための場所の参照(ハードウェア設計ソースコードなど)、入力ファイルのタイプ、構成可能ハードウェアのインスタンスタイプ、および出力ファイルまたはレポートを記憶するための場所の参照を含むことができる。特に、要求は、構成可能ハードウェアプラットフォーム上での実装のためのアプリケーション論理332を指定するハードウェア設計の参照を含むことができる。具体的には、アプリケーション論理332および/またはホスト論理334の仕様は、ハードウェア記述言語(HDL)で記述されたソースコード、論理合成ツールによって生成されたネットリスト、および/または配置およびルーティングツールによって生成された配置およびルーティング論理ゲートなど、ファイルの集合であってもよい。
[0043]計算リソース320は、インスタンスタイプによって分類された多くの異なるタイプのハードウェアおよびソフトウェアを含むことができる。特に、インスタンスタイプは、リソースのハードウェアおよびソフトウェアの少なくとも一部を指定する。たとえば、ハードウェアリソースは、様々な性能レベル(たとえば、異なるクロック速度、アーキテクチャ、キャッシュサイズなど)の中央処理ユニット(CPU)、(グラフィック処理ユニット(GPU)および構成可能論理などの)コプロセッサを有するまたは有していないサーバ、様々な容量および性能のメモリおよび/またはローカルストレージを有するサーバ、ならびに異なるネットワーク性能レベルを有するサーバを含むことができる。例示的なソフトウェアリソースは、異なるオペレーティングシステム、アプリケーションプログラム、およびドライバを含むことができる。1つの例示的なインスタンスタイプは、構成可能ハードウェア342と通信する中央処理ユニット(CPU)344を含むサーバコンピュータ340を供えることができる。構成可能ハードウェア342は、たとえばFPGA、プログラマブル論理アレイ(PLA)、プログラマブルアレイ論理(PAL)、汎用アレイ論理(GAL)、または複合プログラマブル論理デバイス(CPLD)などのプログラマブル論理を含むことができる。具体例として、「F1.小」インスタンスタイプは1容量単位のFPGAリソースを有する第1のタイプのサーバコンピュータを含むことができ、「F1.中」インスタンスタイプは2容量単位のFPGAリソースを有する第1のタイプのサーバコンピュータを含むことができ、「F1.大」インスタンスタイプは8容量単位のFPGAリソースを有する第1のタイプのサーバコンピュータを含むことができ、「F2.大」インスタンスタイプは8容量単位のFPGAリソースを有する第2のタイプのサーバコンピュータを含むことができる。
[0044]論理リポジトリサービス310は、API要求330の受信に応答して、構成データ336を生成することができる。生成された構成データ336は、アプリケーション論理332およびホスト論理334に基づくことができる。具体的には、生成された構成データ336は、アプリケーション論理332およびホスト論理334によって指定された機能を実行するように構成可能ハードウェア342をプログラムまたは構成するために使用されることが可能な情報を含むことができる。一例として、計算サービスプロバイダは、CPU344と構成可能ハードウェア342との間でインターフェース接続するための論理を含むホスト論理334を生成することができる。具体的には、ホスト論理334は、全てのCPUアプリケーション論理トランザクションがホスト論理334を通過するようにCPU344と直接通信するアプリケーション論理332をマスキングまたは遮蔽するための論理を含むことができる。このようにして、ホスト論理334は、アプリケーション論理332によって導入される可能性のあるセキュリティおよび利用可能性のリスクを潜在的に低減することができる。
[0045]構成データ336を生成することは、アプリケーション論理332に対して検査および/または試験を行うこと、アプリケーション論理332をホスト論理334ラッパに統合すること、アプリケーション論理332を合成すること、および/またはアプリケーション論理332を配置およびルーティングすることを、含むことができる。アプリケーション論理332を検査することは、アプリケーション論理332が計算サービスプロバイダの1つ以上の基準に準拠していることを確認することを含むことができる。たとえば、アプリケーション論理332は、ホスト論理334とインターフェース接続するためにインターフェース信号および/または論理機能が存在するか否かを判断するために分析され得る。特に、分析は、ソースコードを分析すること、および/または一連の確認試験に対してアプリケーション論理332を実行することを含むことができる。確認試験は、アプリケーション論理がホスト論理と一致していることを確認するために使用されることが可能である。別の例として、アプリケーション論理332は、アプリケーション論理332が指定されたインスタンスタイプの定められた領域内に収まっているか否かを判断するために分析されることが可能である。別の例として、アプリケーション論理332は、アプリケーション論理332がリング発振器またはその他の潜在的に有害な回路など、いずれかの禁止された論理機能を含むか否かを判断するために分析されることが可能である。別の例として、アプリケーション論理332は、アプリケーション論理332がホスト論理334との名前の重複、もしくはホスト論理334とインターフェース接続していない外部出力を有するか否かを判断するために、分析されることが可能である。別の例として、アプリケーション論理332は、アプリケーション論理332が構成可能ハードウェア342の制限された入力、出力、またはハードマクロとインターフェース接続しようとしているか否かを判断するために分析されることが可能である。アプリケーション論理332が論理リポジトリサービス310の検査に合格した場合には、構成データ336が生成され得る。検査または試験のいずれかに不合格の場合、構成データ336の生成は中止され得る。
[0046]構成データ336を生成することは、アプリケーション論理332およびホスト論理334のソースコードを、構成可能ハードウェア342をプログラムまたは構成するために使用されることが可能なデータにコンパイルおよび/または変換することを含むことができる。たとえば、論理リポジトリサービス310は、アプリケーション論理332をホスト論理334ラッパに統合することができる。具体的には、アプリケーション論理332は、アプリケーション論理332およびホスト論理334を含むシステム設計においてインスタンス化されることが可能である。システム設計のためのネットリストを作成するために、統合されたシステム設計は論理合成プログラムを使用して合成されることが可能である。ネットリストは、システム設計のために指定されたインスタンスタイプのために、配置およびルーティングプログラムを使用して、配置およびルーティングされることが可能である。配置およびルーティングされた設計は、構成可能ハードウェア342をプログラムするために使用され得る構成データ336に変換されることが可能である。たとえば、構成データ336は、配置およびルーティングプログラムから直接出力されることが可能である。
[0047]一例として、生成された構成データ336は、FPGAの構成可能論理の全部または一部を構成するための、完全なまたは部分的なビットストリームを含むことができる。FPGAは、構成可能論理および構成不可能論理を含むことができる。構成可能論理は、組み合わせ論理および/またはルックアップテーブル(LUT)および逐次論理素子(フリップフロップおよび/またはラッチなど)、プログラマブルルーティングおよびクロッキングリソース、プログラマブル分散型およびブロックランダムアクセスメモリ(RAM)、デジタル信号処理(DSP)ビットスライス、プログラマブル入出力ピンを備えるプログラマブル論理ブロックを含むことができる。ビットストリームは、構成論理(たとえば、構成アクセスポート)を使用して、構成可能論理のオンチップメモリにロードされることが可能である。オンチップメモリにロードされた値は、構成可能論理がビットストリームによって指定された論理機能を実行するように構成可能論理を制御するために使用されることが可能である。加えて、構成可能論理は、互いに独立して構成されることが可能な異なる領域に分割されることが可能である。一例として、全ての領域にわたって構成可能論理を構成するためには全てのビットストリームが使用され、構成可能論理領域の一部のみを構成するためには部分的なビットストリームが使用されることが可能である。構成不可能論理は、入出力ブロック(たとえば、シリアライザおよびデシリアライザ(SERDES)ブロックおよびギガビットトランシーバ)、アナログデジタル変換器、メモリ制御ブロック、試験アクセスポート、および構成可能論理上に構成データをロードするための構成論理など、FPGA内で特定の機能を実行するハードマクロを含むことができる。
[0048]論理リポジトリサービス310は、生成された構成データ336を論理リポジトリデータベース350に記憶させることができる。論理リポジトリデータベース350は、磁気ディスク、直接接続ストレージ、ネットワーク接続ストレージ(NAS)、ストレージエリアネットワーク(SAN)、独立ディスクの冗長アレイ(RAID)、磁気テープまたはカセット、CD−ROM、DVD、または非一時的に情報を記憶させるために使用可能であって論理リポジトリサービス310によってアクセス可能なその他いずれかの媒体を含む、リムーバブルまたは非リムーバブル媒体に記憶されることが可能である。加えて、論理リポジトリサービス310は、入力ファイル(アプリケーション論理332およびホスト論理334の仕様など)ならびに論理リポジトリサービス310の論理設計および/またはユーザに関するメタデータを記憶させるために使用されることが可能である。生成された構成データ336は、たとえばユーザ識別子、1つまたは複数のインスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、および構成可能ハードウェア識別子など、1つ以上の特性によってインデックスを付けられることが可能である。
[0049]論理リポジトリサービス310は、構成データをダウンロードするためのAPI要求360を受信することができる。たとえば、要求360は、計算リソース320のユーザが計算リソース320内で新しいインスタンス(たとえば、F1インスタンス)を起動または展開するときに生成されることが可能である。別の例として、要求360は、動作中のインスタンス上で実行しているアプリケーションからの要求に応えて生成されることが可能である。要求360は、送信元および/または送信先インスタンスの参照、ダウンロードすべき構成データの参照(たとえば、インスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、または構成可能ハードウェア識別子)、ユーザ識別子、認証トークン、および/またはダウンロードすべき構成データを識別するためおよび/または構成データへのアクセスを認証するためのその他の情報を含むことができる。構成データを要求しているユーザが構成データにアクセスすることを認証されている場合、構成データは論理リポジトリデータベース350から取り出され、検証済み構成データ362(たとえば、完全なまたは部分的なビットストリーム)は要求インスタンス(たとえば、サーバコンピュータ340)にダウンロードされることが可能である。検証済み構成データ362は、送信先インスタンスの構成可能論理を構成するために使用されることが可能である。
[0050]論理リポジトリサービス310は、検証済み構成データ362が要求インスタンスにダウンロードされ得ることを確認することができる。検証は、論理リポジトリサービス310によって複数の異なるポイントで行われることが可能である。たとえば、検証は、アプリケーション論理332がホスト論理334と一致すると確認することを含むことができる。特に、アプリケーション論理332が設計に追加された後にホスト論理334が期待通りに動作することを確認するために、一連の回帰試験がシミュレータ上で実行され得る。付加的にまたは代わりに、アプリケーション論理332がホスト論理334の再構成可能領域とは別の再構成可能領域内にのみ存在するように指定されていることが、確認され得る。別の例として、検証は、検証済み構成データ362がダウンロードすべきインスタンスタイプと一致すると確認することを含むことができる。別の例として、検証は、要求者が検証済み構成データ362にアクセスすることを認証されていると確認することを含むことができる。検証検査のいずれかが失敗した場合、論理リポジトリサービス310は、検証済み構成データ362をダウンロードする要求を拒否することができる。このため、論理リポジトリサービス310は、ユーザが計算リソース320のハードウェアをカスタマイズできるようにしながら、計算リソース320のセキュリティおよび利用可能性を潜在的に保護することができる。
[0051]図4は、本明細書に記載される実施形態が使用され得る1つの環境を示すネットワークベースの計算サービスプロバイダ400の計算システム図である。背景として、計算サービスプロバイダ400(すなわち、クラウドプロバイダ)は、最終受信者のコミュニティへのサービスとして、計算および記憶容量の配信が可能である。例示的な実施形態において、計算サービスプロバイダは、組織によって、または組織の代わりに、組織のために確立されることが可能である。つまり、計算サービスプロバイダ400は、「プライベートクラウド環境」を提供することができる。別の実施形態では、計算サービスプロバイダ400は、複数の顧客が独立して運営する、マルチテナント環境をサポートする(すなわち、パブリッククラウド環境)。一般的に言えば、計算サービスプロバイダ400は、以下のモデルを提供することができる:サービスとしてのインフラストラクチャ(「IaaS」)、サービスとしてのプラットフォーム(「PaaS」)、および/またはサービスとしてのソフトウェア(「SaaS」)。他のモデルが提供されることも可能である。IaaSモデルでは、計算サービスプロバイダ400は、物理または仮想マシンおよびその他のリソースとしてコンピュータを提供することができる。仮想マシンは、以下にさらに説明されるように、ハイパーバイザによってゲストとして実行され得る。PaaSモデルは、オペレーティングシステム、プログラミング言語実行環境、データベース、およびウェブサーバを含むことが可能な計算プラットフォームを配信する。アプリケーション開発者は、基盤となるハードウェアおよびソフトウェアを購入および管理するコストをかけずに、計算サービスプロバイダプラットフォーム上で彼らのソフトウェアソリューションを開発および実行することができる。加えて、アプリケーション開発者は、計算サービスプロバイダプラットフォームの構成可能ハードウェア上で彼らのハードウェアソリューションを開発および実行することができる。SaaSモデルは、計算サービスプロバイダ内のアプリケーションソフトウェアのインストールおよび実行を可能にする。いくつかの実施形態では、エンドユーザは、ウェブブラウザまたはその他の計量クライアントアプリケーションを実行する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォンなどのネットワーク接続されたクライアント装置を使用して、計算サービスプロバイダ400にアクセスする。当業者は、計算サービスプロバイダ400が「クラウド」環境として説明され得ることを認識するだろう。
[0052]特定の図示された計算サービスプロバイダ400は、複数のサーバコンピュータ402Aから402Cを含む。サーバコンピュータは3つしか示されていないが、いくつ使用されてもよく、大規模センターは数千台のサーバコンピュータを含むことができる。サーバコンピュータ402Aから402Cは、ソフトウェアインスタンス406Aから406Cを実行するための計算リソースを提供することができる。一実施形態では、ソフトウェアインスタンス406Aから406Cは仮想マシンである。当該技術分野では周知のように、仮想マシンは、物理マシンのようにアプリケーションを実行するマシン(すなわち、コンピュータ)のソフトウェア実装のインスタンスである。仮想マシンの例では、サーバ402Aから402Cの各々は、ハイパーバイザ408、または単一のサーバ上で複数のソフトウェアインスタンス406の実行を可能にするように構成された他のタイプのプログラムを実行するように構成されることが可能である。加えて、ソフトウェアインスタンス406の各々は、1つ以上のアプリケーションを実行するように構成されることが可能である。アプリケーションは、ユーザまたは特権のないプログラム、カーネルまたは特権のあるプログラム、および/またはドライバを含むことができる。別の実施形態(図示せず)では、ソフトウェアインスタンスは、単一のユーザによって制御されるオペレーティングシステムおよびアプリケーションプログラムを含むことができる。このため、計算サービスプロバイダ400は、(各顧客に異なる仮想マシンを提供することなどによって)複数の顧客の間で任意のサーバコンピュータのリソースを分割することができ、および/または単一の顧客にサーバコンピュータの全リソースを提供することができる。
[0053]本明細書に開示される実施形態は主に仮想マシンの文脈で説明されているが、本明細書に開示される概念および技術と共に他のタイプのインスタンスも利用できることは、理解されるべきである。たとえば、本明細書に開示される技術は、ストレージリソース、データ通信リソースと共に、および他のタイプの計算リソースと共に、利用されることが可能である。本明細書に開示される実施形態は、仮想マシンインスタンスを利用することなく、アプリケーションの全部または一部をコンピュータシステム上で直接実行することもできる。
[0054]サーバコンピュータ402Aから402Cは、異なるハードウェアリソースまたはインスタンスタイプの異種の集合を含むことができる。ハードウェアインスタンスタイプのいくつかは、計算サービスプロバイダ400のユーザによって少なくとも部分的に構成可能な構成可能ハードウェアを含むことができる。インスタンスタイプの一例は、構成可能ハードウェア404Aと通信しているサーバコンピュータ402Aを含むことができる。具体的には、サーバコンピュータ402Aおよび構成可能ハードウェア404Aは、PCIeなどのローカル相互接続を介して通信することができる。インスタンスタイプの別の例は、サーバコンピュータ402Bおよび構成可能ハードウェア404Bを含むことができる。たとえば、構成可能ハードウェア404Bは、マルチチップモジュール内に、またはサーバコンピュータ402BのCPUと同じダイ上に統合されることが可能である。インスタンスタイプのさらに別の例は、構成可能ハードウェアなしでサーバコンピュータ402Cを含むことができる。このため、構成可能論理ありおよびなしのハードウェアインスタンスタイプは、計算サービスプロバイダ400のリソース内に存在することができる。
[0055]1つ以上のサーバコンピュータ420は、サーバコンピュータ402およびソフトウェアインスタンス406の動作を管理するためのソフトウェアコンポーネントを実行するために確保されてもよい。たとえば、サーバコンピュータ420は管理コンポーネント422を実行することができる。顧客は、顧客が購入したソフトウェアインスタンス406の動作の様々な態様を構成するために、管理コンポーネント422にアクセスすることができる。たとえば、顧客は、インスタンスを購入、レンタル、またはリースし、ソフトウェアインスタンスの構成に変更を加えることができる。ソフトウェアインスタンスの各々の構成情報は、マシンイメージ(MI)442としてネットワーク接続ストレージ440に記憶されることが可能である。具体例として、MI442は、VMインスタンスを起動するために使用される情報を記述することができる。MIは、インスタンス(たとえば、OSおよびアプリケーション)のルートボリューム用のテンプレート、どの顧客アカウントがMIを使用できるかを制御するための起動許可、およびインスタンスが起動されたときにインスタンスにアタッチすべき容量を指定するブロックデバイスマッピングを含むことができる。MIはまた、インスタンスが起動されたときに構成可能ハードウェア404にロードされる構成可能ハードウェアイメージ(CHI)442の参照も含むことができる。CHIは、構成可能ハードウェア404の少なくとも一部をプログラムまたは構成するための構成データを含む。別の具体例として、MI442は、サーバコンピュータ420のうちの1つでオペレーティングシステムのインスタンスを直接起動するために使用される情報を記述することができる。
[0056]顧客は、購入されたインスタンスが需要に応じてどのようにスケーリングされるかに関する設定を指定することもできる。管理コンポーネントは、顧客の方針を実装するための方針文書をさらに含むことができる。自動スケーリングコンポーネント424は、顧客によって定義されたルールに基づいて、インスタンス406をスケーリングすることができる。一実施形態では、自動スケーリングコンポーネント424によって、顧客は、新しいインスタンスがいつインスタンス化されるべきかを判断するために使用する拡張ルールと、既存のインスタンスをいつ終了すべきかを判断するために使用する縮小ルールとを指定することができる。自動スケーリングコンポーネント424は、異なるサーバコンピュータ402または他の計算装置上で実行される多数のサブコンポーネントからなり得る。自動スケーリングコンポーネント424は、内部管理ネットワーク上の利用可能な計算リソースを監視し、必要に応じて利用可能なリソースを修正することができる。
[0057]展開コンポーネント426は、計算リソースの新しいインスタンス406の展開において顧客を支援するために使用されることが可能である。展開コンポーネントは、誰がアカウントの所有者であるか、クレジットカード情報、所有者の国など、インスタンスに関連付けられたアカウント情報へのアクセスを有することができる。展開コンポーネント426は、新しいインスタンス406がどのように構成されるべきかを記述するデータを含む構成を、顧客から受信することができる。たとえば、構成は、新しいインスタンス406にインストールすべき1つ以上のアプリケーションを指定し、新しいインスタンス406を構成するために実行すべきスクリプトおよび/またはその他のタイプのコードを提供し、アプリケーションキャッシュがどのように準備されるべきかを指定するキャッシュ論理、およびその他のタイプの情報を提供することができる。展開コンポーネント426は、新しいインスタンス406を構成、準備、および起動するために、顧客提供の構成およびキャッシュ論理を利用することができる。たとえば、展開コンポーネント426は、制御コンソール、別のインスタンス、またはマーケットプレイスページからインスタンスを顧客が起動するときに呼び出されることが可能である。制御コンソールは、顧客が自身のアカウントを管理してサービスにアクセスできるように計算サービスプロバイダ400の顧客とのインターフェースを提供する、ウェブベースのサービスであってもよい。一例として、制御コンソールは、ユーザがMIおよび/またはCHIをプライベートカタログにアップロードできるようにし、特定のMIまたはCHIに対応する画像は、インスタンスが展開されるときにプライベートカタログからユーザによって選択されることが可能である。インスタンスを起動するために使用される構成、キャッシュ論理、およびその他の情報は、顧客が管理コンポーネント422を使用することによって、または展開コンポーネント426にこの情報を直接提供することによって、指定されてもよい。インスタンスマネージャは、展開コンポーネントの一部と見なされることが可能である。
[0058]顧客アカウント情報428は、マルチテナント環境の顧客に関連付けられたあらゆる所望の情報を含むことができる。たとえば、顧客アカウント情報は、顧客のための固有の識別子、顧客アドレス、課金情報、ライセンス情報、インスタンスを起動するためのカスタマイズパラメータ、スケジューリング情報、自動スケーリングパラメータ、アカウントにアクセスするために使用された以前のIPアドレス、顧客にアクセス可能なMIおよびCHIのリスト、などを含むことができる。
[0059]1つ以上のサーバコンピュータ430は、サーバコンピュータ402の構成可能ハードウェア404への構成データのダウンロードを管理するためのソフトウェアコンポーネントを実行するために確保されることが可能である。たとえば、サーバコンピュータ430は、取り込みコンポーネント432、ライブラリ管理コンポーネント434、およびダウンロードコンポーネント436を備える論理リポジトリサービスを実行することができる。取り込みコンポーネント432は、ホスト論理およびアプリケーション論理の設計または仕様を受信し、構成可能ハードウェア404を構成するために使用されることが可能な構成データを生成することができる。ライブラリ管理コンポーネント434は、論理リポジトリサービスに関連付けられたソースコード、ユーザ情報、および構成データを管理するために使用されることが可能である。たとえば、ライブラリ管理コンポーネント434は、ユーザの設計から生成された構成データを、ネットワーク接続ストレージ440上のユーザによって指定された場所に記憶させるために使用されることが可能である。特に、構成データは、ネットワーク接続ストレージ440上の構成可能ハードウェアイメージ442内に記憶されることが可能である。加えて、ライブラリ管理コンポーネント434は、入力ファイル(アプリケーション論理およびホスト論理の仕様など)ならびに論理リポジトリサービスの論理設計および/またはユーザに関するメタデータのバージョン管理および記憶を管理することができる。ライブラリ管理コンポーネント434は、たとえばユーザ識別子、インスタンスタイプ、マーケットプレイス識別子、マシンイメージ識別子、および構成可能ハードウェア識別子など、1つ以上の特性によって、生成された構成データにインデックスを付けることができる。ダウンロードコンポーネント436は、構成データの要求を認証し、要求が認証されたときに構成データを要求者に送信するために、使用されることが可能である。たとえば、サーバコンピュータ402Aから402B上のエージェントは、構成可能ハードウェア404を使用するインスタンス406が起動されたときにダウンロードコンポーネント436に要求を送信することができる。別の例として、サーバコンピュータ402Aから402B上のエージェントは、構成可能ハードウェア404が動作している間に構成可能ハードウェア404が部分的に再構成されることをインスタンス406が要求したときに、ダウンロードコンポーネント436に要求を送信することができる。
[0060]ネットワーク接続ストレージ(NAS)440は、NAS440上に記憶されたファイルに記憶領域およびアクセスを提供するために使用されることが可能である。たとえば、NAS440は、ネットワークファイルシステム(NFS)などのネットワークファイル共有プロトコルを使用して要求を処理するために使用される1つ以上のサーバコンピュータを含むことができる。NAS440は、磁気ディスク、ストレージエリアネットワーク(SAN)、独立ディスクの冗長アレイ(RAID)、磁気テープまたはカセット、CD−ROM、DVD、または非一時的に情報を記憶させるために使用可能であってネットワーク450を介してアクセス可能なその他いずれかの媒体を含む、リムーバブルまたは非リムーバブル媒体を含むことができる。
[0061]ネットワーク450は、サーバコンピュータ402Aから402C、サーバコンピュータ420および430、ならびにストレージ440を相互接続するために利用されることが可能である。ネットワーク450は、ローカルエリアネットワーク(LAN)であってもよく、エンドユーザが計算サービスプロバイダ400に接続できるように広域ネットワーク(WAN)460に接続されることが可能である。図4に示されるネットワークトポロジーは簡略化されており、本明細書に開示される様々な計算システムを相互接続するためにさらに多くのネットワークおよびネットワーク接続装置が利用され得ることは、理解されるべきである。
[0062]図5は、構成可能ハードウェアプラットフォーム510を構成およびインターフェース接続するための制御プレーンおよびデータプレーンのコンポーネントを含む例示的なシステム500のさらなる詳細を示す。制御プレーンは、構成可能ハードウェアプラットフォーム510を初期化、監視、再構成、および破棄するためのソフトウェアおよびハードウェア機能を含む。データプレーンは、ユーザのアプリケーションと構成可能ハードウェアプラットフォーム510との間で通信するためのソフトウェアおよびハードウェア機能を含む。制御プレーンは、より高い特権レベルを有するユーザまたはサービスによってアクセス可能であり得、データプレーンはより低い特権レベルを有するユーザまたはサービスによってアクセス可能であり得る。一実施形態では、構成可能ハードウェアプラットフォーム510は、PCIeなどのローカル相互接続を使用してサーバコンピュータ520に接続されている。代替実施形態では、構成可能ハードウェアプラットフォーム510は、サーバコンピュータ520のハードウェア内に統合されることが可能である。一例として、サーバコンピュータ520は、図4の計算サービスプロバイダ400の複数のサーバコンピュータ402Aから402Bのうちの1つであってもよい。
[0063]サーバコンピュータ520は、1つ以上のCPU、メモリ、ストレージデバイス、相互接続ハードウェアなどを含む、基盤となるハードウェア522を有する。ハードウェア522よりも上の層を実行するのは、ハイパーバイザまたはカーネル層524である。ハイパーバイザまたはカーネル層は、タイプ1またはタイプ2のハイパーバイザとして分類されることが可能である。タイプ1のハイパーバイザは、ハードウェアを制御してゲストオペレーティングシステムを管理するために、ホストハードウェア522上で直接動作する。タイプ2のハイパーバイザは、従来のオペレーティングシステム環境内で動作する。このため、タイプ2の環境では、ハイパーバイザはオペレーティングシステムより上で動作する明確な層であり得、オペレーティングシステムはシステムハードウェアと相互作用する。異なるタイプのハイパーバイザは、Xenベース、Hyper−V、ESXi/ESX、Linux(登録商標)などを含むが、他のハイパーバイザも使用可能である。管理パーティション530(Xenハイパーバイザのドメイン0など)は、ハイパーバイザの一部であるかまたはこれとは分離されていてもよく、一般に、ハードウェア522にアクセスするために必要なデバイスドライバを含む。ユーザパーティション540は、ハイパーバイザ内の隔離の論理ユニットである。各ユーザパーティション540は、ハードウェア層のメモリ、CPU割り当て、ストレージ、相互接続帯域幅などの自身の部分に割り当てられることが可能である。加えて、各ユーザパーティション540は、仮想マシンおよび自身のゲストオペレーティングシステムを含むことができる。したがって、各ユーザパーティション540は、他のパーティションから独立して自身の仮想マシンをサポートするように設計された容量の理論上の部分である。
[0064]管理パーティション530は、ユーザパーティション540および構成可能ハードウェアプラットフォーム510のための管理サービスを実行するために使用されることが可能である。管理パーティション530は、計算サービスプロバイダ、ユーザパーティション540、および構成可能ハードウェアプラットフォーム510のウェブサービス(展開サービス、論理リポジトリサービス550、および健全性監視サービスなど)と通信することができる。管理サービスは、ユーザパーティション540を起動および終了するため、ならびに構成可能ハードウェアプラットフォーム510の構成可能論理を構成、再構成、および破棄するためのサービスを含むことができる。具体例として、管理パーティション530は、展開サービス(図4の展開コンポーネント426など)からの要求に応答して、新しいユーザパーティション540を起動することができる。要求は、MIおよび/またはCHIの参照を含むことができる。MIはユーザパーティション540上にロードすべきプログラムおよびドライバを指定することができ、CHIは構成可能ハードウェアプラットフォーム510上にロードすべき構成データを指定することができる。管理パーティション530は、MIに関連付けられた情報に基づいてユーザパーティション540を初期化することができ、CHIに関連付けられた構成データを構成可能ハードウェアプラットフォーム510上にロードさせることができる。インスタンスを動作可能にする時間が短縮され得るように、ユーザパーティション540および構成可能ハードウェアプラットフォーム510の初期化は同時に行われることが可能である。
[0065]管理パーティション530は、構成可能ハードウェアプラットフォーム510のプログラミングおよび監視を管理するために使用されることが可能である。この目的のために管理パーティション530を使用することによって、構成可能ハードウェアプラットフォーム510の構成データおよび構成ポートへのアクセスが制限され得る。具体的には、より低い特権レベルを有するユーザは、管理パーティション530への直接アクセスが制限され得る。このため、構成可能論理は、計算サービスプロバイダのインフラストラクチャを使用することなく修正されることは不可能であり、構成可能論理をプログラムするために使用されるいずれの第三者IPも、認証されていないユーザによる閲覧から保護されることが可能である。
[0066]管理パーティション530は、制御プレーンが構成可能ハードウェアプラットフォーム510を構成してこれとインターフェースするためのソフトウェアスタックを含むことができる。制御プレーンソフトウェアスタックは、ウェブサービス(論理リポジトリサービス550および健全性監視サービスなど)と通信するための構成可能論理(CL)アプリケーション管理層532、構成可能ハードウェアプラットフォーム510、およびユーザパーティション540を含むことができる。たとえば、CLアプリケーション管理層532は、ユーザパーティション540が起動されるのに応答して構成データをフェッチするように、論理リポジトリサービス550に要求を発行することができる。CLアプリケーション管理層532は、ハードウェア522の共有メモリを使用して、またはサーバコンピュータ520を構成可能ハードウェアプラットフォーム510に接続する相互接続を介してパーティション間メッセージを送受信することによって、ユーザパーティション540と通信することができる。具体的には、CLアプリケーション管理層532は、構成可能ハードウェアプラットフォーム510のメールボックス論理511へのメッセージを読み書きすることができる。メッセージは、構成可能ハードウェアプラットフォーム510を構成または破棄するための、エンドユーザアプリケーション541による要求を含むことができる。CLアプリケーション管理層532は、構成可能ハードウェアプラットフォーム510を再構成する要求に応答して構成データをフェッチするように、論理リポジトリサービス550に要求を発行することができる。CLアプリケーション管理層532は、構成可能ハードウェアプラットフォーム510を破棄する要求に応答して、破棄シーケンスを開始することができる。CLアプリケーション管理層532は、ユーザパーティション540への通信経路が機能しているか否かを判断するために、ウォッチドッグ関連のアクティビティを実行することができる。
[0067]制御プレーンソフトウェアスタックは、構成データが構成可能ハードウェアプラットフォーム510上にロードされ得るように、構成可能ハードウェアプラットフォーム510の構成ポート512(たとえば、構成アクセスポート)にアクセスするためのCL構成層534を含むことができる。たとえば、CL構成層534は、構成可能ハードウェアプラットフォーム510の全部または一部の構成を実行するために、1つまたは複数のコマンドを構成ポート512に送信することができる。CL構成層534は、構成可能論理が構成データにしたがってプログラムされ得るように、構成ポート512に構成データ(たとえば、ビットストリーム)を送信することができる。構成データは、ホスト論理および/またはアプリケーション論理を指定することができる。
[0068]制御プレーンソフトウェアスタックは、サーバコンピュータ520を構成可能ハードウェアプラットフォーム510に接続する物理的相互接続を介して通信するための管理ドライバ536を含むことができる。管理ドライバ536は、物理的相互接続を介した送信のために管理パーティション530から生じるコマンド、要求、応答、メッセージ、およびデータをカプセル化することができる。加えて、管理ドライバ536は、物理的相互接続を介して管理パーティション530に送信されるコマンド、要求、応答、メッセージ、およびデータのカプセル化を解除することができる。具体的には、管理ドライバ536は、構成可能ハードウェアプラットフォーム510の管理機能513と通信することができる。たとえば、管理機能513は、物理的相互接続に接続された装置の列挙の間、アドレス範囲にマッピングされた物理的または仮想機能であってもよい。管理ドライバ536は、管理機能513に割り当てられたアドレス範囲にトランザクションをアドレス指定することによって、管理機能513と通信することができる。
[0069]制御プレーンソフトウェアスタックは、CL管理および監視層538を含むことができる。CL管理および監視層538は、構成可能ハードウェアプラットフォーム510の健全性を判断するために、および/または構成可能ハードウェアプラットフォーム510の使用特性を判断するために、物理的相互接続上で行われるトランザクションを監視および分析することができる。
[0070]構成可能ハードウェアプラットフォーム510は、構成不可能なハードマクロおよび構成可能論理を含むことができる。ハードマクロは、入出力ブロック(たとえば、シリアライザおよびデシリアライザ(SERDES)ブロックおよびギガビットトランシーバ)、アナログデジタル変換器、メモリ制御ブロック、試験アクセスポート、および構成ポート512など、構成可能ハードウェアプラットフォーム510内の特定の機能を実行することができる。構成可能論理は、構成可能ハードウェアプラットフォーム510上に構成データをロードすることによって、プログラムまたは構成されることが可能である。たとえば、構成ポート512は、構成データをロードするために使用されることが可能である。一例として、構成データは、構成ポート512によってアクセス可能なメモリ(フラッシュメモリなど)に記憶されることが可能であり、構成データは、構成可能ハードウェアプラットフォーム510の初期化シーケンスの間(電源投入シーケンスの間など)に自動的にロードされることが可能である。加えて、構成ポート512は、構成可能ハードウェアプラットフォーム510内のオフチッププロセッサまたはインターフェースを使用してアクセスされることが可能である。
[0071]構成可能論理は、ホスト論理およびアプリケーション論理を含むようにプログラムされることが可能である。ホスト論理は、エンドユーザがハードマクロおよび物理的相互接続への限られたアクセスを有するように、エンドユーザからハードマクロの少なくともいくつかのインターフェースを保護することができる。たとえば、ホスト論理は、メールボックス論理511、構成ポート512、管理機能513、ホストインターフェース514、およびアプリケーション機能515を含むことができる。エンドユーザは、構成可能アプリケーション論理516を構成可能ハードウェアプラットフォーム510上にロードさせ、(アプリケーション機能515を介して)ユーザパーティション540からの構成可能アプリケーション論理516と通信することができる。
[0072]ホストインターフェース論理514は、物理的相互接続上で信号送信して通信プロトコルを実装するための回路(たとえば、ハードマクロおよび/または構成可能論理)を含むことができる。通信プロトコルは、相互接続を介して通信するための規則およびメッセージ形式を指定する。アプリケーション機能515は、ユーザパーティション540のドライバと通信するために使用されることが可能である。具体的には、アプリケーション機能515は、物理的相互接続に接続された装置の列挙の間、アドレス範囲にマッピングされた物理的または仮想機能であってもよい。アプリケーションドライバは、トランザクションをアプリケーション機能515に割り当てられたアドレス範囲にアドレス指定することによってアプリケーション機能515と通信することができる。具体的には、アプリケーション機能515は、制御プレーンを介してコマンド、要求、応答、メッセージ、およびデータを交換するために、アプリケーション論理管理ドライバ542と通信することができる。アプリケーション機能515は、データプレーンを介してコマンド、要求、応答、メッセージ、およびデータを交換するために、アプリケーション論理データプレーンドライバ543と通信することができる。
[0073]メールボックス論理511は、1つ以上のバッファおよび1つ以上の制御レジスタを含むことができる。たとえば、任意の制御レジスタは特定のバッファと関連付けられることが可能であり、レジスタは、管理パーティション530とユーザパーティション540との間で同期させるためのセマフォとして使用されることが可能である。具体例として、パーティションが制御レジスタの値を修正できる場合、パーティションはバッファに書き込むことができる。バッファおよび制御レジスタは、管理機能513およびアプリケーション機能515の両方からアクセス可能であり得る。メッセージがバッファに書き込まれると、メッセージが完了したことを示すために別の制御レジスタ(たとえば、メッセージレディレジスタ)が書き込まれ得る。メッセージが存在するか否かを判断するためにメッセージレディレジスタがパーティションによってポーリングされることが可能であり、またはメッセージレディレジスタへの書き込みに応答して割り込みが生成されてパーティションに送信されることが可能である。
[0074]ユーザパーティション540は、エンドユーザアプリケーション540を構成可能ハードウェアプラットフォーム510にインターフェース接続するためのソフトウェアスタックを含むことができる。アプリケーションソフトウェアスタックは、制御プレーンおよびデータプレーンと通信するための機能を含むことができる。具体的には、アプリケーションソフトウェアスタックは、構成可能ハードウェアプラットフォーム510へのアクセスを有するエンドユーザアプリケーション540を提供するための、CLアプリケーションAPI544を含むことができる。CLアプリケーションAPI544は、構成可能ハードウェアプラットフォーム510および管理パーティション530と通信するための方法または機能のライブラリを含むことができる。たとえば、エンドユーザアプリケーション541は、CLアプリケーションAPI544のAPIを使用して、構成可能アプリケーション論理516にコマンドまたはデータを送信することができる。特に、CLアプリケーションAPI544のAPIは、構成可能アプリケーション論理516と通信することができるアプリケーション機能515を標的としたトランザクションを生成することができるアプリケーション論理(AL)データプレーンドライバ543とインターフェース接続することができる。このようにして、エンドユーザアプリケーション541は、エンドユーザアプリケーション541のタスクを潜在的に加速するために、構成可能アプリケーション論理516にデータを受信、処理、および/または応答させることができる。別の例として、エンドユーザアプリケーション541は、CLアプリケーションAPI544のAPIを使用して、管理パーティション530にコマンドまたはデータを送信することができる。特に、CLアプリケーションAPI544のAPIは、メールボックス論理511と通信することができるアプリケーション機能515を標的としたトランザクションを生成することが可能なAL管理ドライバ542とインターフェース接続することができる。このようにして、エンドユーザアプリケーション541は管理パーティション530に、構成可能ハードウェアプラットフォーム510に関する動作またはメタデータを提供させ、および/または構成可能アプリケーション論理516が再構成されるように要求させることができる。
[0075]ハイパーバイザまたはカーネル524と共にアプリケーションソフトウェアスタックは、エンドユーザアプリケーション541によって物理的相互接続上で実行するために利用可能な動作を制限するために使用されることが可能である。たとえば、計算サービスプロバイダは、(ファイルをマシンイメージに関連付けることなどによって)AL管理ドライバ542、ALデータプレーンドライバ543、およびCLアプリケーションAPI544を提供することができる。これらのコンポーネントは、エンドユーザおよびエンドユーザよりも高い特権レベルを有するサービスにのみファイルへの書き込みを許可することによって、修正から保護されることが可能である。AL管理ドライバ542およびALデータプレーンドライバ543は、アプリケーション機能515のアドレス範囲内のアドレスのみを使用することによって制限されることが可能である。加えて、入出力メモリ管理ユニット(I/O MMU)は、アプリケーション機能515または管理機能513のアドレス範囲内になるように相互接続トランザクションを制限することができる。
[0076]図6は、構成データをフェッチし、構成データを使用してマルチテナント環境内の構成可能ハードウェアのインスタンスを構成し、構成可能ハードウェアのインスタンスを使用する、例示的な方法600のシーケンス図である。シーケンス図は、構成可能論理を構成するために使用される計算サービスインフラストラクチャの異なる要素によって使用される、一連のステップを示す。一例として、計算サービスプロバイダのインフラストラクチャコンポーネントは、マーケットプレイス610、顧客インスタンス612、制御プレーン614、構成可能ハードウェアプラットフォーム616、および論理リポジトリサービス618を含むことができる。マーケットプレイスサービス610は、エンドユーザ、または計算サービスプロバイダのエンドユーザにアクセラレータを提供または販売する独立したハードウェア開発者によって作成されたハードウェアアクセラレータ用の構成データを受信することができる。マーケットプレイスサービス610は、エンドユーザが自身のニーズに適したハードウェアアクセラレータを見つけられるように、購入またはライセンス取得のために利用可能なアクセラレータのリストを提供することができる。顧客インスタンス612は、サーバコンピュータ上で実行されるソフトウェア(仮想マシン、オペレーティングシステム、および/またはアプリケーションソフトウェアなど)を含むことができ、そこでソフトウェアは、エンドユーザが計算サービスプロバイダのリソースを展開するのに応答して起動される。サーバコンピュータは、制御プレーンソフトウェア614を実行中であってもよく、これは構成可能ハードウェアプラットフォーム616の構成を管理するために使用されることが可能である。構成可能ハードウェアプラットフォーム616は、上述のように、再構成可能論理およびホスト論理を含むことができる。論理リポジトリサービス618は、たとえば製品コード、マシンインスタンス識別子、および/または構成可能ハードウェア識別子によってインデックスを付けられることが可能な構成データのリポジトリを含むことができる。論理リポジトリサービス618は、インデックスの1つを使用して構成データの要求を受信することができ、構成データを制御プレーンに返すことができる。
[0077]計算サービスプロバイダインフラストラクチャのコンポーネントは、顧客インスタンス612の展開および使用中に、様々なフェーズで使用されることが可能である。たとえば、フェーズは、構成データフェッチフェーズ620、アプリケーション論理構成フェーズ630、およびアプリケーションフェーズ640を含むことができる。
[0078]構成データフェッチフェーズ620は、論理リポジトリサービス618からアプリケーション論理を識別およびフェッチすることを含むことができる。具体的には、計算サービスのエンドユーザは、マーケットプレイスサービス610、制御コンソール、または他のインスタンスを使用して、マシンインスタンスに加入および起動622することができる。マーケットプレイスサービス610は、顧客インスタンス612が開始されるように、マシンイメージのインスタンスをサーバコンピュータ上にロード624させるフローを開始することができる。マシンイメージは、エンドユーザおよび計算サービスプロバイダによって提供された制御プレーンソフトウェアによって書き込みおよび/または使用される、アプリケーションソフトウェアを含むことができる。マシンイメージにロードするための要求624は、マーケットプレイスサービス610から、サーバコンピュータ上で実行されている制御プレーン614に送信されることが可能である。たとえば、制御プレーン614はストレージサービス(図示せず)からマシンイメージをダウンロードすることができ、マシンイメージはサーバコンピュータ上にロード626されることが可能である。仮想マシンインスタンス内のマシンイメージのフェッチ、ロード、およびブートは時間がかかる可能性があるので、制御プレーン614は、マシンイメージのフェッチおよびロードと平行して、論理リポジトリサービス618からアプリケーション論理に対応する構成データをフェッチ628する要求を送信することができる。ストレージからマシンイメージをフェッチして論理リポジトリサービス618からアプリケーション論理をフェッチする動作が直列または並列で行われ得ることに、留意すべきである。論理リポジトリサービス618は、構成データを用いて返信629することができる。このため、614における制御プレーンソフトウェアは、アプリケーション論理が構成可能ハードウェアプラットフォーム上にロードされ得るように、アプリケーション論理に対応する構成データのコピーを受信することができる。
[0079]構成フェーズ630は、構成可能ハードウェアプラットフォーム616上に構成データをロードすることを含むことができる。構成フェーズ630は、構成可能ハードウェアプラットフォームをクリーニングすること632を含むことができる。たとえば、構成可能ハードウェアプラットフォームをクリーニングすること632は、以前の顧客のデータが現在の顧客によって観察可能とならないように、構成可能ハードウェアプラットフォームと通信するあらゆるメモリ(たとえば、パブリックペリフェラル)に書き込むことを含むことができる。メモリをクリーニングすること632は、全てゼロを書き込むこと、全て1を書き込むこと、および/またはメモリの記憶場所にランダムなパターンを書き込むこと、を含むことができる。加えて、構成可能ハードウェアプラットフォーム616の構成可能論理メモリは、完全にまたは部分的にスクラブされ得る。構成可能ハードウェアプラットフォーム616がクリーニングされた後、構成可能ハードウェアプラットフォーム616上にロードされたホスト論理バージョンは、制御プレーン614に返されること634が可能である。ホスト論理バージョンは、アプリケーション論理が構成可能ハードウェアプラットフォーム616上にロードされたホスト論理と一致するか否かを確認635するために使用され得る。ホスト論理とアプリケーション論理が一致しない場合には、構成フェーズ630は中止され得る(図示せず)。あるいは、ホスト論理とアプリケーション論理が一致する場合には、構成フェーズ630は636において継続することができる。アプリケーション論理が構成可能ハードウェアプラットフォーム616上にロード636され得るように、アプリケーション論理は制御プレーン614から構成可能ハードウェアプラットフォーム616にコピーされることが可能である。ロード636した後、構成可能ハードウェアプラットフォーム616は、構成可能ハードウェアプラットフォーム616上にロードされた機能(たとえば、アプリケーション論理)が準備できていることを示す637。制御プレーン614は、アプリケーション論理が初期化されて使用準備が整っていることを、顧客インスタンス612に示す638ことができる。あるいは、制御プレーン614は、構成可能ハードウェアプラットフォーム616が構成されるまで仮想マシンが実行を開始できないように、表示637が制御プレーン614によって受信されるまで仮想マシンが初期化またはブートシーケンスを完了するのを防止することができる。
[0080]アプリケーションフェーズ640は、アプリケーション論理が初期化された後に開始することができる。アプリケーションフェーズ640は、顧客インスタンス612上でアプリケーションソフトウェアを実行すること、および構成可能ハードウェアプラットフォーム616上でアプリケーション論理を実行することを、含むことができる。特に、顧客インスタンス612のアプリケーションソフトウェアは、構成可能ハードウェアプラットフォーム616のアプリケーション論理と通信642することができる。たとえば、アプリケーションソフトウェアはデータをアプリケーション論理に転送させることができ、データはアプリケーション論理によって処理されることが可能であり、処理されたデータおよび/または状態情報はアプリケーションソフトウェアに返されることが可能である。アプリケーション論理は、汎用コンピュータ上のソフトウェアのみを使用するのと比較して処理速度を加速できる可能性がある、専用のまたはカスタマイズされたハードウェアを含むことができる。アプリケーション論理は、顧客インスタンス612の持続時間にわたって同じ機能を実行することができ、またはアプリケーション論理は、顧客インスタンス612が実行している間に適合または再構成されることが可能である。たとえば、顧客インスタンス612上で実行しているアプリケーションソフトウェアは、異なるアプリケーション論理が構成可能ハードウェアプラットフォーム616上にロードされるように要求することができ、または追加のアプリケーション論理が第2の構成可能ハードウェアプラットフォーム(図示せず)上にロードされることが可能である。特に、アプリケーションソフトウェアは構成可能ハードウェアプラットフォーム616に要求644を発行することができ、そこから要求を制御プレーン614に転送646することができ、または顧客はAPI要求を論理リポジトリサービスまたは計算サービスに提出して、インスタンスの識別子、アプリケーション論理の識別子、および構成可能ハードウェアプラットフォームをインスタンスに追加することを示すパラメータを指定することができる。制御プレーン614は、論理リポジトリサービス618から628において新しいアプリケーション論理をフェッチし始めることができる。新しいアプリケーション論理が実行中の顧客インスタンス上にロードされると、顧客は顧客インスタンス612のために変化しないので、クリーニング632ステップは省略されてもよい。
[0081]加えて、顧客データがさらに保護されるように、構成可能ハードウェアプラットフォーム616をクリーニングするために破棄フェーズ(図示せず)が使用されることが可能である。たとえば、構成可能ハードウェアプラットフォーム616のメモリはスクラブされることが可能であり、および/またはアプリケーション論理に関連付けられた構成論理は、顧客が顧客インスタンス612を使用するのをやめたときに破棄シーケンスの一部としてスクラブされることが可能である。
[0082]図7は、構成可能ハードウェアプラットフォームを使用する例示的な方法700のフロー図である。710において、構成可能ハードウェアプラットフォームがホスト論理の動作を実行するように、ホスト論理は再構成可能論理の第1領域上にロードされることが可能である。ホスト論理は、ホストインターフェースからトランザクションへの制限付きアクセスを強制するために使用される制御プレーン機能を含むことができる。たとえば、制御プレーン機能は、制御プレーン機能に割り当てられたアドレス範囲の外側にあるトランザクションを拒否することができる。加えて、ホスト論理は、アプリケーション論理が構成可能ハードウェアプラットフォームのハードマクロを使用すること、およびホストデバイスとの物理インターフェースにアクセスすることを限定または制限するための論理を含むことができる。このため、ハードマクロおよびコンピューティングインフラストラクチャの他のコンポーネントとのインターフェースがホスト論理によって管理されるように、ホスト論理はアプリケーション論理をカプセル化することができる。
[0083]ホスト論理は、一度にまたは徐々にロードされることが可能である。たとえば、ホスト論理は、構成可能ハードウェアプラットフォームのリセット信号のデアサーション時にロードされる静的論理を含むことができる。具体例として、静的論理に対応する構成データは構成可能ハードウェアプラットフォームのフラッシュメモリ内に記憶されることが可能であり、フラッシュメモリの内容は、静的ホスト論理を用いて構成可能ハードウェアプラットフォームをプログラムするために使用されることが可能である。一実施形態では、静的論理は、ホストコンピュータ(たとえば、顧客インスタンス)による介入を伴わずにロードされることが可能である。付加的にまたは代わりに、ホスト論理は、静的論理がロードされた後にロードされる再構成可能論理を含むことができる。たとえば、静的ホスト論理が動作している間に再構成可能ホスト論理が追加されることが可能である。特に、再構成可能ホスト論理は、再構成可能ホスト論理がロードされることを要求するトランザクションを受信するとロードされることが可能である。たとえば、トランザクションは、構成可能ハードウェアプラットフォームをホストコンピュータに接続する物理的相互接続を介してホストコンピュータから送信されることが可能である。
[0084]ホスト論理を静的論理コンポーネントおよび再構成可能論理コンポーネントに分割することによって、ホスト論理は徐々に構成可能ハードウェアプラットフォーム上にロードされることが可能である。たとえば、静的論理は、通信インターフェース、列挙論理、および構成管理論理など、ホスト論理の基本機能を含むことができる。静的論理内に通信インターフェースを提供することによって、計算システムが通電および/またはリセットされたときに構成可能ハードウェアプラットフォームは物理的相互接続上で発見または列挙されることが可能である。再構成可能論理は、ホスト論理に更新を提供し、ホスト論理により高いレベルの機能を提供するために、使用されることが可能である。たとえば、いくつかの相互接続技術は、相互接続に取り付けられたデバイスを列挙するのに時間制限を有する。構成可能ハードウェアプラットフォーム上にホスト論理をロードする時間は列挙に割り当てられた時間量に含まれる可能性があるので、初期のホスト論理は比較的高速でロードされるサイズであり得る。このため、構成可能ハードウェアプラットフォームが相互接続技術によって指定された時間制限内で動作できるように、静的論理はホスト論理機能のサブセットであってもよい。再構成可能論理は、列挙またはブートアップシーケンスが完了した後に加えられる追加のホスト論理機能を提供することができる。一例として、データプレーン(DMAエンジン、CHPファブリック、ペリフェラルファブリック、またはパブリックペリフェラルインターフェースなど)に関連付けられたホスト論理は、静的論理がロードされた後に再構成可能論理としてロードされることが可能である。
[0085]720において、再構成可能論理の第2領域にアプリケーション論理をロードする要求を含むトランザクションが受信され得る。再構成可能論理の第2領域は、ホスト論理が修正されないように、再構成可能論理の第1領域と重複しなくてもよい。加えて、再構成可能論理の第2領域は、静的ホスト論理とのインターフェースを有することができる。一例として、アプリケーション論理をロードする要求を含むトランザクションは、アプリケーション論理のロードを開始するためにホスト論理の制御レジスタを標的とすることができる。
[0086]730において、再構成可能論理の第2領域は、アプリケーション論理をロードする要求が認証されて初めてアプリケーション論理の動作を実行するように構成されることが可能である。要求は、様々な方法で認証され得る。たとえば、要求はアドレスを含むことができ、要求は、アドレスが所定のアドレスと一致するかまたはホスト論理に割り当てられたアドレスの範囲内にあるときに、認証されることが可能である。具体例として、アプリケーション論理のロードを制御するための制御レジスタがアドレスに割り当てまたはマッピングされることが可能であり、要求は、制御レジスタに対応するアドレスを含むときに認証されることが可能である。付加的にまたは代わりに、要求は、要求が認証されるか否かを判断するためにホスト論理によって確認される認証トークンを含むことができる。
[0087]740において、ホストコンピュータとアプリケーション論理との間の情報は、ホスト論理の変換層を使用して送信されることが可能である。たとえば、アプリケーション論理は変換層のストリーミングインターフェースを使用することができ、変換層は、相互接続ファブリックのフォーマットおよびサイズ仕様に準拠するパケットまたはトランザクションをフォーマットすることができる。変換層を使用することによって、アプリケーション論理は、トランザクションを直接作成することおよび/または物理的相互接続のトランザクションを見ることが制限されるので、ホストコンピュータのセキュリティおよび利用可能性が向上できる可能性がある。このため、変換層の使用によって、物理的相互接続上で行われているトランザクションの整合性およびプライバシーを保護することができる。
[0088]750において、パブリックペリフェラルとアプリケーション論理との間の情報は、ホスト論理の変換層を使用して送信されることが可能である。上述のように、パブリックペリフェラルは、メモリおよび/またはその他の構成可能ハードウェアプラットフォームを含むことができる。変換層は、アプリケーション論理が転送プロトコルの低レベルの詳細に準拠することで負荷を受けないように、およびパブリックペリフェラルが(誤動作を引き起こすことまたは特権のある情報にアクセスすることなどによって)誤用されないように、パブリックペリフェラルとアプリケーション論理との間の全ての転送をフォーマットすることができる。
[0089]760において、ホスト論理は、アプリケーション論理のトランザクションを分析するために使用されることが可能である。たとえば、ホスト論理は、アプリケーション論理および/またはホスト論理の帯域幅、待ち時間、およびその他の性能特性などの動作特性を追跡することができる。別の例として、ホスト論理は、トランザクションが所定の基準に準拠しているか否かを判断するために、トランザクションを分析することができる。トランザクションが基準に準拠していない場合には、ホスト論理はアプリケーション論理で生じるトランザクションをキャンセルする可能性がある。
[0090]図8は、説明された技術革新が実装され得る適切な計算環境800の汎用的な例を示す図である。技術革新は、多様な汎用または専用計算システムに実装されるので、計算環境800は、使用または機能の範囲に関していかなる限定も示唆することを意味するものではない。たとえば、計算環境800は、様々な計算装置(たとえば、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータなど)のいずれであってもよい。
[0091]図8を参照すると、計算環境800は、1つ以上の処理ユニット810、815およびメモリ820、825を含む。図8では、この基本構成830は破線の中に含まれる。処理ユニット810、815は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)内のプロセッサ、またはその他いずれかのタイプのプロセッサであり得る。多重処理システムでは、処理能力を向上させるために複数の処理ユニットがコンピュータ実行可能命令を実行する。たとえば、図8は、中央処理ユニット810ならびにグラフィック処理ユニットまたは共処理ユニット815を示している。有形メモリ820、825は、処理ユニットによってアクセス可能な、揮発性メモリ(たとえば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえば、ROM、EEPROM、フラッシュメモリなど)、またはこれら2つの何らかの組み合わせであってもよい。メモリ820、825は、処理ユニットによる実行に適したコンピュータ実行可能命令の形態の、本明細書に記載される1つ以上の技術革新を実装するソフトウェア880を記憶する。
[0092]計算システムは追加の特徴を有してもよい。たとえば、計算環境800は、ストレージ840、1つ以上の入力装置850、1つ以上の出力装置860、および1つ以上の通信接続870を含む。バス、コントローラ、またはネットワークなどの相互接続機構(図示せず)は、計算環境800のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア(図示せず)は、計算環境800内で実行される他のソフトウェアに動作環境を提供し、計算環境800のコンポーネントのアクティビティを調整する。
[0093]有形ストレージ840は、リムーバブルまたは非リムーバブルであってもよく、磁気ディスク、磁気テープまたはカセット、CD−ROM、DVD、または非一時的に情報を記憶させるために使用可能であって計算環境800内でアクセス可能なその他いずれかの媒体を含む。ストレージ840は、本明細書に記載される1つ以上の技術革新を実装するソフトウェア880のための命令を記憶する。
[0094]入力装置850は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、走査装置、または計算環境800への入力を提供するその他の装置であってもよい。出力装置860は、ディスプレイ、プリンタ、スピーカ、CDライタ、または計算環境800からの出力を提供するその他の装置であってもよい。
[0095]通信接続870は、他のコンピューティングエンティティとの通信媒体を介した通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオまたはビデオ入力または出力、もしくは他のデータなどの情報を、変調データ信号で搬送する。変調データ信号は、信号内の情報を符号化するようにその特性の1つ以上が設定または変更された信号である。限定ではなく例として、通信媒体は、電気、光、RF、またはその他のキャリアを使用することができる。
[0096]本開示の実施形態は、以下の条項を考慮して記載され得る。
1.構成可能論理プラットフォームであって、
構成可能論理プラットフォームをプロセッサに接続するための物理的相互接続と、
構成データに基づいて構成された論理ブロックを備える再構成可能論理領域と、
再構成可能論理領域が構成データに基づいて構成されるように、再構成可能論理領域に構成データを適用するための構成ポートと、
物理的相互接続のトランザクションを介してアクセス可能な制御プレーン機能であって、制御プレーン機能は構成ポートと通信しており、制御プレーン機能は物理的相互接続から構成ポートへの制限付きアクセスのみを提供する、制御プレーン機能と、
物理的相互接続のトランザクションを介してアクセス可能なデータプレーン機能であって、データプレーン機能は、物理的相互接続を介して情報を送信させて再構成可能論理領域が物理的相互接続に直接アクセスするのを防止する、再構成可能論理領域とのインターフェースを提供する、データプレーン機能と、
を備える構成可能論理プラットフォーム。
2.構成ポートに制限付きアクセスのみを提供することは、第1のアドレス範囲内のアドレスを備えるトランザクションが構成ポートにアクセスできるようにすることのみを備える、条項1に記載の構成可能論理プラットフォーム。
3.物理的相互接続はペリフェラルコンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express)であり、制御プレーン機能およびデータプレーン機能は物理機能である、上記条項のいずれかに記載の構成可能論理プラットフォーム。
4.データプレーン機能は、再構成可能論理領域が1つ以上のアドレス範囲外のアドレスを有するトランザクションを生成することができず、再構成可能論理領域が物理的相互接続上で不正な形式のトランザクションを生成できないように、再構成可能論理領域から生じる全てのトランザクションをフォーマットするようになっている、上記条項のいずれかに記載の構成可能論理プラットフォーム。
5.データプレーン機能と制御プレーン機能との間でメッセージを渡すようになっているメールボックス論理をさらに備える、上記条項のいずれかに記載の構成可能論理プラットフォーム。
6.アプリケーション論理を実装するように構成可能なハードウェアを備える再構成可能論理領域と、
再構成可能論理領域をカプセル化するためのホスト論理であって、ホスト論理は、
プロセッサと通信するためのホストインターフェースと、
ホストインターフェースを介してアクセス可能な管理機能であって、管理機能は再構成可能論理領域を、ホストインターフェースで受信された認証済みトランザクションに応答してアプリケーション論理で構成させるようになっている、管理機能と、
ホストインターフェースを介してアクセス可能なデータパス機能であって、データパス機能は、ホストインターフェースとアプリケーション論理との間のデータ転送をフォーマットするための層を備える、データパス機能と、
を備えるホスト論理と、を備える装置。
7.再構成可能論理領域をアプリケーション論理で構成させることは、装置の構成ポートにアクセスすることを備える、条項6に記載の装置。
8.ホストインターフェースで受信した認証済みトランザクションは、管理機能に割り当てられたアドレス範囲内のアドレスを備える、条項6または7に記載の装置。
9.ホスト論理の少なくとも一部は、デアサートされている装置のリセットに応答して装置上にロードされる静的論理である、条項6から8のいずれかに記載の装置。
10.ホスト論理の少なくとも一部は、ホストインターフェースで受信された認証済みトランザクションに応答して装置上にロードされる再構成可能論理である、条項6から9のいずれかに記載の装置。
11.ホスト論理は、アプリケーション論理とパブリックペリフェラルとの間に変換層をさらに備え、変換層は、アプリケーション論理と、パブリックペリフェラルとの通信に使用される装置の論理との間のデータ転送をフォーマットするようになっている、条項6から10のいずれかに記載の装置。
12.パブリックペリフェラルはフィールドプログラマブルゲートアレイであり、論理はシリアライザ・デシリアライザトランシーバを含む、条項11に記載の装置。
13.ホスト論理はプライベートペリフェラルとのインターフェースをさらに備え、プライベートペリフェラルはアプリケーション論理およびデータパス機能にアクセス不可能である、条項6から12のいずれかに記載の装置。
14.ホスト論理は、管理機能とデータパス機能との間でメッセージを渡すためのメールボックス論理をさらに備える、条項6から13のいずれかに記載の装置。
15.再構成可能論理およびホストインターフェースを備える構成可能論理プラットフォームを動作させる方法であって、方法は、
構成可能ハードウェアプラットフォームがホスト論理の動作を実行するように再構成可能論理の第1領域上にホスト論理をロードするステップであって、ホスト論理は、ホストインターフェースからトランザクションへの制限付きアクセスを強制する制御プレーン機能を含む、ステップと、
ホストインターフェースにおいて、アプリケーション論理を再構成可能論理の第2領域上にロードさせるための第1トランザクションを受信するステップと、
第1トランザクションが制御プレーン機能のアクセス基準を満たすときにのみアプリケーション論理の動作を実行するように再構成可能論理の第2領域を構成するステップと、
アプリケーション論理がホストインターフェースの使用において制限されるように、ホスト論理の変換層を使用してホストインターフェースを介してアプリケーション論理から情報を送信するステップと、
を備える方法。
16.再構成可能論理の第1領域上にホスト論理をロードするステップは、
再構成可能論理の第1領域の少なくとも一部に再構成可能ホスト論理をロードさせるための第2トランザクションを、ホストインターフェース上で受信するステップと、
第2トランザクションが制御プレーン機能のアクセス基準を満たすときにのみ再構成可能ホスト論理の動作を実行するように構成可能ハードウェアプラットフォームを構成するステップと、
を備える、条項15に記載の方法。
17.構成可能ハードウェアプラットフォーム上にホスト論理をロードするステップは、電力事象に応答して構成可能ハードウェアプラットフォームのメモリから静的ホスト論理をロードするステップを備える、条項15または16に記載の方法。
18.ホストインターフェースの使用においてアプリケーション論理を制限するステップは、アプリケーション論理で生じてホストインターフェースに向かう全てのトランザクションをフォーマットするために変換層を使用するステップを備える、条項15から17のいずれかに記載の方法。
19.アプリケーション論理で生じて構成可能ハードウェアプラットフォームと通信するペリフェラルに向かうトランザクションをフォーマットするためにホスト論理を使用するステップ
をさらに備える、条項15から18のいずれかに記載の方法。
20.アプリケーション論理で生じたトランザクションを監視および分析し、拒否されたトランザクションがホストインターフェース上で送信される前に、所定の基準と一致するトランザクションを拒否するために、ホスト論理を使用するステップ
をさらに備える、条項15から19のいずれかに記載の方法。
[0097]開示された方法のいくつかの動作が、便利な提示のために特定の順序で説明されたが、以下に明記される特定の言語によって特定の順序が必要とされない限り、この説明の仕方は並べ替えを包含することを理解すべきである。たとえば、順番に記載された動作は、場合により並べ替えられ、または同時に実行されてもよい。また、簡素化のために、添付図面は、開示された方法が他の方法と共に使用され得る様々なやり方を示していない場合がある。
[0098]開示された方法のいずれも、1つ以上のコンピュータ可読記憶媒体(たとえば、1つ以上の光媒体ディスク、揮発性メモリコンポーネント(DRAMまたはSRAMなど)、または不揮発性メモリコンポーネント(フラッシュメモリまたはハードドライブなど))上に記憶されたコンピュータ実行可能命令として実装され、コンピュータ(たとえば、スマートフォンまたは計算ハードウェアを含むその他のモバイル機器を含む、いずれか市販のコンピュータ)上で実行されることが可能である。コンピュータ可読記憶媒体という用語は、信号および搬送波などの通信接続を含まない。開示された技術を実施するためのコンピュータ実行可能命令のいずれも、ならびに開示された実施形態の実施中に作成および使用されるあらゆるデータも、1つ以上のコンピュータ可読記憶媒体上に記憶されることが可能である。コンピュータ実行可能命令は、たとえば、専用ソフトウェアアプリケーション、もしくはウェブブラウザまたは他のソフトウェアアプリケーション(遠隔コンピューティングアプリケーションなど)を介してアクセスまたはダウンロードされるソフトウェアアプリケーションの一部であり得る。このようなソフトウェアは、たとえば、単一のローカルコンピュータ(たとえば、いずれか適切な市販のコンピュータ)上で、またはネットワーク環境(たとえば、インターネット、広域ネットワーク、ローカルエリアネットワーク、クライアント・サーバネットワーク(クラウドコンピューティングネットワークなど)、またはその他のこのようなネットワークを介して)で、1つ以上のネットワークコンピュータを使用して、実行されることが可能である。
[0099]明確さのために、ソフトウェアベースの実装の特定の選択された態様のみが説明される。当該技術分野において周知のその他の詳細は省略される。たとえば、開示された技術がいずれの特定のコンピュータ言語またはプログラムにも限定されないことは、理解されるべきである。たとえば、開示された技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、Adobe Flash、またはその他いずれか適切なプログラミング言語で記述されたソフトウェアによって実装されることが可能である。同様に、開示された技術は、いずれの特定のコンピュータまたはハードウェアのタイプにも限定されない。適切なコンピュータおよびハードウェアの特定の詳細は周知であり、本開示に詳細に明記される必要はない。
[0100]本明細書に記載されたいずれの機能も、少なくとも部分的に、ソフトウェアの代わりに、1つ以上のハードウェア論理コンポーネントによって実行され得ることもまた、理解されるべきである。たとえば、非限定的に、使用可能なハードウェア論理コンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理デバイス(CPLD)、などを含む。
[0101]さらに、(たとえば、開示された方法のいずれかをコンピュータに実行させるコンピュータ実行可能命令を備える)ソフトウェアベースの実施形態のいずれも、適切な通信手段を通じてアップロード、ダウンロード、またはリモートアクセスされることが可能である。このような適切な通信手段は、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル(光ファイバーケーブルを含む)、磁気通信、電磁気通信(RF、マイクロ波、および赤外線通信を含む)、電子通信、またはその他のこのような通信手段を含む。
[0102]開示された方法、装置、およびシステムは、決して限定的に解釈されるべきではない。代わりに、本開示は、単独で、または互いに様々な組み合わせおよび部分的組み合わせで、様々な開示された実施形態の全ての新規で明らかではない特徴および態様を、対象とする。開示された方法、装置、およびシステムは、いずれの特定の態様または特徴またはそれらの組み合わせにも限定されず、開示された実施形態は、いずれか1つ以上の利点が存在することも問題が解決されることも必要としない。
[0103]開示された発明の原理が適用され得る多くの可能な実施形態を考慮すると、図示された実施形態は本発明の好適な例に過ぎず、本発明の範囲を限定すると見なされるべきではないことは、認識されるべきである。むしろ、本発明の範囲は、以下の請求項によって定義される。したがって、これらの請求項の範囲に含まれる全てのものを我々の発明として請求する。

Claims (10)

  1. アプリケーション論理を実装するように構成可能なハードウェアを備える再構成可能論理領域と、前記アプリケーション論理をカプセル化するためのホスト論理と、を備える装置であって、前記ホスト論理は、
    プロセッサと通信するためのホストインターフェース論理と、
    前記ホストインターフェース論理を介してアクセス可能な管理機能であって、前記管理機能は前記再構成可能論理領域の一部を、前記ホストインターフェース論理で受信される認証済みトランザクションに応答して前記アプリケーション論理で構成させるようになっている、管理機能と、
    前記ホストインターフェース論理を介してアクセス可能なデータパス機能であって、前記データパス機能は、前記ホストインターフェース論理と前記アプリケーション論理との間のデータ転送をフォーマットするための層を備える、データパス機能と、
    を備える、装置。
  2. 前記再構成可能論理領域を前記アプリケーション論理で構成させることは、前記装置の構成ポートにアクセスすることを含む、請求項1に記載の装置。
  3. 前記ホストインターフェース論理で受信される認証済みトランザクションは、前記管理機能に割り当てられたアドレス範囲内のアドレスを含む、請求項1に記載の装置。
  4. 前記ホスト論理の少なくとも一部は、デアサートされている前記装置のリセットに応答して前記装置上にロードされる静的論理である、請求項1に記載の装置。
  5. 前記ホスト論理の少なくとも一部は、前記ホストインターフェース論理で受信される認証済みトランザクションに応答して前記装置上にロードされる再構成可能論理である、請求項1に記載の装置。
  6. 前記ホスト論理は、前記アプリケーション論理とパブリックペリフェラルとの間に変換層をさらに備え、前記変換層は、前記アプリケーション論理と、前記パブリックペリフェラルとの通信に使用される前記装置の論理との間のデータ転送をフォーマットするようになっている、請求項1に記載の装置。
  7. 前記パブリックペリフェラルはフィールドプログラマブルゲートアレイであり、前記論理はシリアライザ・デシリアライザトランシーバを含む、請求項6に記載の装置。
  8. 前記ホスト論理はプライベートペリフェラルとのインターフェースをさらに備え、前記プライベートペリフェラルは前記アプリケーション論理および前記データパス機能にアクセス不可能である、請求項1に記載の装置。
  9. 前記ホスト論理は、前記管理機能と前記データパス機能との間でメッセージを渡すためのメールボックス論理をさらに備える、請求項1に記載の装置。
  10. 前記ホスト論理は、前記アプリケーション論理のアクセスを、前記ホストインターフェース論理、または前記プロセッサとの物理インターフェースのうちの少なくとも1つに制限するように構成されている、請求項1に記載の装置。
JP2020003285A 2016-09-28 2020-01-11 構成可能論理プラットフォーム Active JP6942824B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/279,232 2016-09-28
US15/279,232 US10223317B2 (en) 2016-09-28 2016-09-28 Configurable logic platform
JP2019516662A JP6739633B2 (ja) 2016-09-28 2017-09-27 構成可能論理プラットフォーム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019516662A Division JP6739633B2 (ja) 2016-09-28 2017-09-27 構成可能論理プラットフォーム

Publications (2)

Publication Number Publication Date
JP2020064678A true JP2020064678A (ja) 2020-04-23
JP6942824B2 JP6942824B2 (ja) 2021-09-29

Family

ID=60081285

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019516662A Active JP6739633B2 (ja) 2016-09-28 2017-09-27 構成可能論理プラットフォーム
JP2020003285A Active JP6942824B2 (ja) 2016-09-28 2020-01-11 構成可能論理プラットフォーム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019516662A Active JP6739633B2 (ja) 2016-09-28 2017-09-27 構成可能論理プラットフォーム

Country Status (5)

Country Link
US (4) US10223317B2 (ja)
EP (1) EP3519978B1 (ja)
JP (2) JP6739633B2 (ja)
CN (2) CN113312306A (ja)
WO (1) WO2018064100A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019530100A (ja) * 2016-09-29 2019-10-17 アマゾン テクノロジーズ インコーポレイテッド 複数の再構成可能な領域を有する構成可能な論理プラットフォーム
US11074380B2 (en) 2016-09-29 2021-07-27 Amazon Technologies, Inc. Logic repository service
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US11119150B2 (en) 2016-09-28 2021-09-14 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US11171933B2 (en) 2016-09-29 2021-11-09 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US11275503B2 (en) 2016-09-30 2022-03-15 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US10148493B1 (en) * 2015-06-08 2018-12-04 Infoblox Inc. API gateway for network policy and configuration management with public cloud
US10795742B1 (en) * 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US10223317B2 (en) 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
WO2018232746A1 (zh) * 2017-06-23 2018-12-27 上海诺基亚贝尔股份有限公司 用于边缘云中的资源管理的方法和装置
US11973784B1 (en) 2017-11-27 2024-04-30 Lacework, Inc. Natural language interface for an anomaly detection framework
WO2019130396A1 (ja) * 2017-12-25 2019-07-04 三菱電機株式会社 設計支援装置、設計支援方法及びプログラム
EP3702947B1 (en) * 2019-03-01 2021-10-20 Siemens Aktiengesellschaft Method for verifying at runtime of a hardware-application component a current configuration setting of an execution environment provided by a configurable hardware module
US11238147B2 (en) * 2019-08-27 2022-02-01 Comcast Cable Communications, Llc Methods and systems for verifying applications
US20210303315A1 (en) * 2020-03-31 2021-09-30 Src Labs, Llc Application logic architecture defining separate processing planes
US11550674B2 (en) * 2020-10-29 2023-01-10 Texas Instruments Incorporated Redundant communications for multi-chip systems
WO2023154411A1 (en) * 2022-02-10 2023-08-17 SambaNova Systems, Inc. Aribitration for a network in a reconfigurable data processor
US20230409306A1 (en) * 2022-05-25 2023-12-21 Cloudblue Llc Systems and methods for independent application design and deployment to platform host

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9930145D0 (en) * 1999-12-22 2000-02-09 Kean Thomas A Method and apparatus for secure configuration of a field programmable gate array
EP1124330A3 (en) * 2000-02-09 2001-09-19 Algotronix Ltd. Method of using a mask programmed secret key to securely configure a field programmable gate array
US6530049B1 (en) 2000-07-06 2003-03-04 Lattice Semiconductor Corporation On-line fault tolerant operation via incremental reconfiguration of field programmable gate arrays
WO2002009285A2 (en) * 2000-07-20 2002-01-31 Celoxica Limited System, method and article of manufacture for dynamic programming of one reconfigurable logic device from another reconfigurable logic device
DE10105987A1 (de) * 2001-02-09 2002-08-29 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6996750B2 (en) 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
GB0114317D0 (en) * 2001-06-13 2001-08-01 Kean Thomas A Method of protecting intellectual property cores on field programmable gate array
US6966020B1 (en) * 2001-07-03 2005-11-15 Agere Systems Inc. Identifying faulty programmable interconnect resources of field programmable gate arrays
US6668237B1 (en) * 2002-01-17 2003-12-23 Xilinx, Inc. Run-time reconfigurable testing of programmable logic devices
US7275163B2 (en) * 2002-02-28 2007-09-25 The Directv Group, Inc. Asynchronous configuration
US20030208606A1 (en) 2002-05-04 2003-11-06 Maguire Larry Dean Network isolation system and method
US7093023B2 (en) 2002-05-21 2006-08-15 Washington University Methods, systems, and devices using reprogrammable hardware for high-speed processing of streaming data to find a redefinable pattern and respond thereto
US7315897B1 (en) * 2002-09-13 2008-01-01 Alcatel Lucent Adaptable control plane architecture for a network element
US8292811B2 (en) 2003-03-20 2012-10-23 Siemens Medical Solutions Usa, Inc. Advanced application framework system and method for use with a diagnostic medical ultrasound streaming application
US6867614B1 (en) * 2003-05-27 2005-03-15 Storage Technology Corporation Multiconfiguration module for hardware platforms
JP2005157974A (ja) * 2003-11-28 2005-06-16 Nippon Telegr & Teleph Corp <Ntt> 保護機能付き再構成可能デバイス
EP1542181A1 (en) * 2003-12-11 2005-06-15 Banksys S.A. Electronic data processing device
US20050223214A1 (en) * 2004-03-31 2005-10-06 Intel Corporation Security measures in a reconfigurable communication system
US20050223227A1 (en) * 2004-03-31 2005-10-06 Deleeuw William C Addressable authentication in a scalable, reconfigurable communication architecture
US7958353B2 (en) * 2005-04-25 2011-06-07 Panasonic Corporation Information security device
US20070220367A1 (en) 2006-02-06 2007-09-20 Honeywell International Inc. Fault tolerant computing system
US8316439B2 (en) 2006-05-19 2012-11-20 Iyuko Services L.L.C. Anti-virus and firewall system
US20070283311A1 (en) * 2006-05-30 2007-12-06 Theodore Karoubalis Method and system for dynamic reconfiguration of field programmable gate arrays
US20080046997A1 (en) * 2006-08-21 2008-02-21 Guardtec Industries, Llc Data safe box enforced by a storage device controller on a per-region basis for improved computer security
US7665005B2 (en) 2006-08-25 2010-02-16 Intel Corporation In situ processor margin testing
WO2009098312A1 (en) 2008-02-06 2009-08-13 Capis Sprl Method and device for the determination of murmur frequency band
US9058483B2 (en) * 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8954685B2 (en) * 2008-06-23 2015-02-10 International Business Machines Corporation Virtualized SAS adapter with logic unit partitioning
US8151349B1 (en) * 2008-07-21 2012-04-03 Google Inc. Masking mechanism that facilitates safely executing untrusted native code
US7795901B1 (en) 2009-05-19 2010-09-14 Xilinx, Inc. Automatic isolation of a defect in a programmable logic device
US8561183B2 (en) * 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
US8516272B2 (en) * 2010-06-30 2013-08-20 International Business Machines Corporation Secure dynamically reconfigurable logic
US8516268B2 (en) * 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US8789170B2 (en) * 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
US8850574B1 (en) * 2011-02-28 2014-09-30 Google Inc. Safe self-modifying code
US8710863B2 (en) * 2011-04-21 2014-04-29 Microchip Technology Incorporated Configurable logic cells
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US8933715B2 (en) 2012-04-08 2015-01-13 Elm Technology Corporation Configurable vertical integration
US9436623B2 (en) * 2012-09-20 2016-09-06 Intel Corporation Run-time fabric reconfiguration
US9378027B2 (en) * 2012-12-26 2016-06-28 Advanced Micro Devices, Inc. Field-programmable module for interface bridging and input/output expansion
US9361416B2 (en) 2013-01-30 2016-06-07 Empire Technology Development Llc Dynamic reconfiguration of programmable hardware
US9747185B2 (en) 2013-03-26 2017-08-29 Empire Technology Development Llc Acceleration benefit estimator
US20140344581A1 (en) * 2013-05-16 2014-11-20 Cisco Technology, Inc. Secure Upgrades for Field Programmable Devices
WO2014199678A1 (ja) 2013-06-12 2014-12-18 日本電気株式会社 コンフィグレーション制御システム及びコンフィグレーション制御方法
US9170911B1 (en) 2013-07-09 2015-10-27 Altera Corporation Protocol error monitoring on an interface between hard logic and soft logic
US9864606B2 (en) * 2013-09-05 2018-01-09 F5 Networks, Inc. Methods for configurable hardware logic device reloading and devices thereof
US9298516B2 (en) * 2013-10-01 2016-03-29 Globalfoundries Inc. Verification of dynamic logical partitioning
KR102130813B1 (ko) * 2013-10-08 2020-07-06 삼성전자주식회사 재구성 가능 프로세서 및 재구성 가능 프로세서를 동작하는 방법
US9076017B2 (en) 2013-11-27 2015-07-07 Cisco Technology, Inc. Hardware virtualization module for exclusive controlled access to CPU
US10248703B2 (en) * 2014-01-08 2019-04-02 Oracle International Corporation System and method for cluster-wide replication of embedded component configuration
US9465704B2 (en) 2014-03-26 2016-10-11 Vmware, Inc. VM availability during management and VM network failures in host computing systems
JP2015211295A (ja) * 2014-04-24 2015-11-24 雅仁 横山 暗号化データ通信方式及びfpgaボード
US9503093B2 (en) * 2014-04-24 2016-11-22 Xilinx, Inc. Virtualization of programmable integrated circuits
US9483282B1 (en) * 2014-05-30 2016-11-01 Altera Corporation Methods and systems for run-time hardware configuration change management
US20160313370A1 (en) 2014-07-28 2016-10-27 Intel Corporation Semiconductor device tester with dut data streaming
US20160034404A1 (en) * 2014-07-31 2016-02-04 International Business Machines Corporation Managing access to storage
US9588791B2 (en) * 2015-04-27 2017-03-07 Altera Corporation Flexible physical function and virtual function mapping
EP3089035A1 (en) 2015-04-30 2016-11-02 Virtual Open Systems Virtualization manager for reconfigurable hardware accelerators
US9589088B1 (en) * 2015-06-22 2017-03-07 Xilinx, Inc. Partitioning memory in programmable integrated circuits
US9698790B2 (en) 2015-06-26 2017-07-04 Advanced Micro Devices, Inc. Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces
US9959418B2 (en) * 2015-07-20 2018-05-01 Intel Corporation Supporting configurable security levels for memory address ranges
US20170031699A1 (en) 2015-07-29 2017-02-02 Netapp, Inc. Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US10048977B2 (en) 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10142425B2 (en) 2016-05-23 2018-11-27 Wyse Technology L.L.C. Session reliability for a redirected USB device
US10338135B2 (en) * 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10223317B2 (en) * 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10795742B1 (en) 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US11099894B2 (en) * 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10162921B2 (en) * 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10282330B2 (en) * 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10250572B2 (en) * 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10642492B2 (en) * 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US10423438B2 (en) 2016-09-30 2019-09-24 Amazon Technologies, Inc. Virtual machines controlling separate subsets of programmable hardware
US11115293B2 (en) * 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10764129B2 (en) * 2017-04-18 2020-09-01 Amazon Technologies, Inc. Logic repository service supporting adaptable host logic
US10963001B1 (en) * 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
WO2019217929A1 (en) * 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Failure characterization systems and methods for programmable logic devices

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US11119150B2 (en) 2016-09-28 2021-09-14 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
JP2019530100A (ja) * 2016-09-29 2019-10-17 アマゾン テクノロジーズ インコーポレイテッド 複数の再構成可能な領域を有する構成可能な論理プラットフォーム
US11074380B2 (en) 2016-09-29 2021-07-27 Amazon Technologies, Inc. Logic repository service
US11171933B2 (en) 2016-09-29 2021-11-09 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US11182320B2 (en) 2016-09-29 2021-11-23 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US11275503B2 (en) 2016-09-30 2022-03-15 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider

Also Published As

Publication number Publication date
JP6942824B2 (ja) 2021-09-29
US20230018032A1 (en) 2023-01-19
JP6739633B2 (ja) 2020-08-12
US10963414B2 (en) 2021-03-30
US20210182230A1 (en) 2021-06-17
EP3519978A1 (en) 2019-08-07
CN109791536A (zh) 2019-05-21
EP3519978B1 (en) 2024-03-27
CN113312306A (zh) 2021-08-27
US20190258597A1 (en) 2019-08-22
CN109791536B (zh) 2021-06-29
US11474966B2 (en) 2022-10-18
WO2018064100A1 (en) 2018-04-05
US11860810B2 (en) 2024-01-02
US10223317B2 (en) 2019-03-05
JP2019530099A (ja) 2019-10-17
US20180089132A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
JP6942824B2 (ja) 構成可能論理プラットフォーム
US11182320B2 (en) Configurable logic platform with multiple reconfigurable regions
US11533224B2 (en) Logic repository service supporting adaptable host logic
US11316733B1 (en) Client configurable hardware logic and corresponding signature
US10747565B2 (en) Virtualization of control and status signals
US10423438B2 (en) Virtual machines controlling separate subsets of programmable hardware
JP2019537099A (ja) 論理リポジトリサービス
US10795742B1 (en) Isolating unresponsive customer logic from a bus
US20240134811A1 (en) Configurable logic platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210817

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210908

R150 Certificate of patent or registration of utility model

Ref document number: 6942824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150