(57)【特許請求の範囲】
【請求項１】
サービスとしてプログラム可能な集積回路（ＩＣ）を提供するための方法であって、
データセンタで、プログラム可能なＩＣ設計パッケージを受け取ること、
前記ＩＣ設計パッケージに管理ペイロードを付加すること、
前記ＩＣ設計パッケージに関連付けられた、前記管理ペイロードに適合するユーザキーを作成すること、
前記ユーザキーを用いて、前記データセンタの１つまたは複数の仮想マシンであって、前記ユーザキーを用いて前記プログラム可能なＩＣと通信し、かつ前記ＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用する前記１つまたは複数の仮想マシンを介して前記プログラム可能なＩＣへの選択的なアクセスを提供すること、
前記プログラム可能なＩＣを管理するコントローラを介して、前記プログラム可能なＩＣと通信する前記１つまたは複数の仮想マシンを開始できるようにすること、
前記プログラム可能なＩＣで前記ＩＣ設計パッケージを実行すること、
前記プログラム可能なＩＣでの前記ＩＣ設計パッケージの実行に関連する請求追跡サービスおよびプロビジョニング管理サービスのうち少なくとも１つを提供すること、および
展開された時間および消費電力を含む請求メトリックに基づいて、前記プログラム可能なＩＣの使用量を追跡すること
を含む方法。 
【請求項２】
前記プログラム可能なＩＣが、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である、請求項１に記載の方法。
【請求項３】
前記設計パッケージをコンパイルする前に、前記管理ペイロードを付加することをさらに含み、前記コンパイルが、最終設計のために回路を追加する、請求項２に記載の方法。
【請求項４】
メッセージングインターフェースを介して、サーバ機能を前記データセンタから前記ＦＰＧＡに接続することをさらに含む、請求項２に記載の方法。
【請求項５】
前記メッセージングインターフェースが、ネットワークインターフェース、および周辺コンピュータ相互接続（ＰＣＩ）インターフェースの一方を使用する、請求項４に記載の方法。
【請求項６】
前記ユーザキーのコピーを使用して、１つまたは複数の準仮想化ドライバを備えた１つまたは複数の仮想マシンを開始できるようにすることをさらに含み、前記準仮想化ドライバが、前記ＦＰＧＡへの所有権が検証されたアクセスを提供する、請求項２に記載の方法。
【請求項７】
前設計パッケージが、前記付加された管理ペイロードと共に前記ＦＰＧＡにイメージコピーされる、請求項２に記載の方法。
【請求項８】
前記管理ペイロードが、ユーザ識別を保証するために、前記ＦＰＧＡに対するメッセージングインターフェースを管理し、かつ事前に規定された請求メトリックに基づいて前記ＦＰＧＡの使用量を追跡する、請求項７に記載の方法。
【請求項９】
サービスとしてプログラム可能な集積回路（ＩＣ）を提供するコンピューティングデバイスであって、メモリと、当該メモリに接続されたプロセッサであって、アプリケーションを実行するように構成されたプロセッサとを備え、前記アプリケーションが、
データセンタで、プログラム可能なＩＣ設計パッケージを受け取り、
前記ＩＣ設計パッケージに管理ペイロードを付加し、
前記ＩＣ設計パッケージに関連付けられた、前記管理ペイロードに適合するユーザキーを作成し、
前記ユーザキーを用いて、前記データセンタの１つまたは複数の仮想マシンであって、前記ユーザキーを用いて前記プログラム可能なＩＣと通信し、かつ前記ＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用する前記１つまたは複数の仮想マシンを介して前記プログラム可能なＩＣへの選択的なアクセスを提供し、
前記プログラム可能なＩＣを管理するコントローラを介して、前記プログラム可能なＩＣと通信する前記１つまたは複数の仮想マシンを開始できるようにし、
前記プログラム可能なＩＣで前記ＩＣ設計パッケージを実行し、
前記プログラム可能なＩＣでの前記ＩＣ設計パッケージの実行に関連する請求追跡サービスおよびプロビジョニング管理サービスのうち少なくとも１つを提供し、かつ
展開された時間および消費電力を含む請求メトリックに基づいて、前記プログラム可能なＩＣの使用量を追跡する
ように構成される、コンピューティングデバイス。
【請求項１０】
前記プログラム可能なＩＣが、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である、請求項９に記載のコンピューティングデバイス。
【請求項１１】
前記アプリケーションが、
信頼できるユーザ、証明されたペイロードを有するユーザ、およびハードウェアベースの仮想プライベートデータセンタ内のユーザの１つに対して、前記ＦＰＧＡに対する直接ネットワークアクセスを可能にするようにさらに構成される、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
前記設計パッケージが、前記付加された管理ペイロードと共に前記ＦＰＧＡにイメージコピーされる、請求項１０に記載のコンピューティングデバイス。
【請求項１３】
前記管理ペイロードが、ユーザ識別を保証するために、前記ＦＰＧＡに対するメッセージングインターフェースを管理し、かつ事前に規定された請求メトリックに基づいて前記ＦＰＧＡの使用量を追跡する、請求項１２に記載のコンピューティングデバイス。
【請求項１４】
前記設計パッケージを処理するマネジャが、固定された数のゲートを消費し、前記ゲートは前記ユーザにとって利用可能な容量から除外される、請求項１０に記載のコンピューティングデバイス。
【請求項１５】
サービスとしてフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を提供するための命令を記憶したコンピュータ可読記憶装置であって、前記命令が、
データセンタで、プログラム可能な集積回路（ＩＣ）設計パッケージを受け取ること、
前記ＩＣ設計パッケージに管理ペイロードを付加すること、
前記ＩＣ設計パッケージに関連付けられた、前記管理ペイロードに適合するユーザキーを作成すること、
前記ユーザキーを用いて、前記データセンタの１つまたは複数の仮想マシンであって、前記ユーザキーを用いて前記ＦＰＧＡと通信し、かつ前記ＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用する前記１つまたは複数の仮想マシンを介して前記ＦＰＧＡへの選択的なアクセスを提供すること、
前記ＦＰＧＡを管理するコントローラを介して、前記ＦＰＧＡと通信する前記１つまたは複数の仮想マシンを開始できるようにすること、
前記ＦＰＧＡで前記ＩＣ設計パッケージを実行すること、
前記ＦＰＧＡでの前記ＩＣ設計パッケージの実行に関連する請求追跡サービスおよびプロビジョニング管理サービスのうち少なくとも１つを提供すること、および
展開された時間および消費電力を含む請求メトリックに基づいて、前記ＦＰＧＡの使用量を追跡すること
を含む、コンピュータ可読記憶装置。
【請求項１６】
前記管理ペイロードが、ペイロード全体のコンパイルを開始した後の時間を記録し、かつ前記ユーザがＦＰＧＡの使用を終了したとき、管理メッセージに応じて経過時間を報告するクロックである、請求項１５に記載のコンピュータ可読記憶装置。
【請求項１７】
前記管理ペイロードが、Ｉ／Ｏポートに常駐しており、かつフォーマットに従っていること、および／またはアクセス制御が、前記ユーザキーを使用して行われていることを保証する、請求項１５に記載のコンピュータ可読記憶装置。
【請求項１８】
前記管理ペイロードは、確実にポートが監視され、かつ接続活動が請求のために集計されるようにする、請求項１５に記載のコンピュータ可読記憶装置。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書で別段の指示がない限り、このセクションで述べられる内容は、本出願における特許請求の範囲に対する従来技術ではなく、またこのセクションに含めることによって従来技術であるとは認められないものとする。
【０００２】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、特定用途向けハードウェアを提供するためにハードウェアレベルで繰り返し再構成することができるゲートの大規模なプログラム可能なアレイである。ＦＰＧＡシステムは、特にデータセンタの業務でますます一般的になっているデータベースのソートまたは経営分析などの大量のデータ機能を実施するものに対して、効果的で、スループット当たり低価格な解決策を提供することができる。例えば、金融機関、保険会社、および他のビジネスエンティティに対するリスク管理計算は、大量のコンピューティング資源を消費する可能性があるが、それは、汎用のコンピューティングシステムに代えてＦＰＧＡを使用することにより低減することができる。
【０００３】
ＦＰＧＡを使用することにより、計算コストが低減され、かつ効率が増加されうるが、より小規模の業務にとって初期投資が非常に大きくなるおそれがある。より大きな組織体の場合であっても、ＦＰＧＡベースのシステムは、フルタイムで利用されない可能性があり、全体的な効率と投資価値を低下させることになる。同様の例は、データセンタの業務を含む。データ記憶装置、サーバ、ファイアウォール、および他の特殊な機器を備えた包括的なデータセンタは、多くの必要なデータストレージ、アクセス可能性、およびセキュリティを提供することができる。しかし、大規模なデータセンタを構築するのを正当化できる必要性を有する潜在的ユーザの数はむしろ限られている。またこのような潜在的ユーザであっても、大規模なデータセンタの機能をいつも十分に使用しない可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、大規模なデータ業務において、ＦＰＧＡベース技術の効率および費用効果は高く評価されるが、広範囲にわたるユーザに対するその有効性は、初期投資および運用維持の問題を考慮すると、限られたものとなる。
【課題を解決するための手段】
【０００５】
本開示は、概して、データセンタ仮想マシンに対するサービスとしてのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などプログラム可能な集積回路に対して選択的なアクセスを可能にする技術を述べる。いくつかの例によれば、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するための方法は、データセンタで、プログラム可能な集積回路設計パッケージを受け取ること、ＩＣ設計パッケージに管理ペイロードを付加すること、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成すること、およびユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的なアクセスを提供することを含むことができる。
【０００６】
他の例によれば、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するデータセンタは、管理サーバを含むことができ、管理サーバは、データセンタで、プログラム可能な集積回路設計パッケージを受け取り、ＩＣ設計パッケージに管理ペイロードを付加し、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成し、かつユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的なアクセスを提供することができる。
【０００７】
他の例によれば、コンピュータ可読記憶媒体は、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するための記憶した命令を含むことができる。命令は、データセンタで、プログラム可能な集積回路設計パッケージを受け取ること、ＩＣ設計パッケージに管理ペイロードを付加すること、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成すること、およびユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的アクセスを提供することを含むことができる。
【０００８】
前述の要約は、例示的なものに過ぎず、何らかの意味で限定することを意図していない。上記で述べた例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、図面および以下の詳細な記述を参照すれば明らかになろう。
【０００９】
本開示の前述のおよび他の特徴は、添付の図面と併せて以下の記述および添付の特許請求の範囲からより完全に明らかになろう。これらの図面は、本開示によるいくつかの実施形態を示しているに過ぎないこと、したがって、その範囲を限定するものと見なされるべきではないことを理解した上で、本開示は、添付の図面を使用することにより、さらなる特殊性および詳細を用いて述べるものとする。
【図面の簡単な説明】
【００１０】
【図１】サービスとして使用できる例示的なフィールドプログラマブルゲートアレイの構造を示す図である。
【図２】サービスとしての集積回路（ＩＣ）を提供するためのシステムを概念的に示す図である。
【図３】サービスとしてのＩＣを提供するシステムの主要コンポーネント間の対話を示す図である。
【図４】サービスとしてのＩＣを提供するシステムを管理するために使用できる汎用コンピューティングデバイスを示す図である。
【図５】図４のデバイスなどのコンピューティングデバイスにより行うことができるサービスとしてのＩＣを提供するための例示的な方法を示す流れ図である。
【図６】本明細書で述べた少なくともいくつかの実施形態に従ってすべて構成された、例示的なコンピュータプログラム製品のブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明では、その一部を形成する添付図面に対して参照が行われる。図面中、文脈がその他の形を規定しない限り、同様の記号は、通常、同様のコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲で述べられる例示的な実施形態は、限定することを意味していない。本明細書で提示される主題の趣旨または範囲から逸脱することなく、他の実施形態を使用することができ、かつ他の変更を行うことができる。本明細書で概略的に述べられ、かつ図で示された本開示の諸態様は、広範囲な様々な構成で配置され、置換され、組み合わされ、分離され、かつ設計されうるが、そのすべてが、本明細書で明示的に企図されていることが容易に理解されよう。
【００１２】
本開示は、概して、サービスとしてのＦＰＧＡまたは他のプログラム可能な回路へのアクセスを提供し、かつ管理することに関連する特に方法、装置、システム、デバイス、および／またはコンピュータプログラム製品に関する。
【００１３】
簡単に述べると、共用のＦＰＧＡ使用のためのプロビジョニング管理、およびユーザ仕様にプログラムされたＦＰＧＡにユーザのプロセスがアクセスできるようにするためのアクセス制御を可能にするシステムは、データセンタサーバと通信するＦＰＧＡに向けてコンパイルするためのユーザパッケージを受け入れることができる。ユーザパッケージは、付加された管理ペイロードと共にＦＰＧＡにイメージコピーする（ｉｍａｇｅ）ことができ、またドライバおよびユーザキーを使用して、データセンタ仮想マシンに対するサービスとしてのＦＰＧＡへの選択的なアクセスを可能にすることができる。併せて、これらの要素は、データセンタが、レンタルできるサービスとしての集積回路（ＩＣａａＳ：ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ  ａｓ  ａ  ｓｅｒｖｉｃｅ）を提供できるようにする。請求追跡、プロビジョン管理、およびアクセス制御などのさらなるサービスをユーザに提供することが可能となり低コストを実現できるようになる一方で、データセンタにはより大きな利益が実現される。
【００１４】
図１は、本明細書で述べる少なくともいくつかの実施形態により構成された、サービスとして使用できる例示的なフィールドプログラマブルゲートアレイの構造を示している。
【００１５】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）１００は、製作後に構成される（フィールドでプログラム可能な）ように設計された集積回路である。ＦＰＧＡは、任意の論理関数を実施するために使用することができ、その構成は、一般にハードウェア記述言語（ＨＤＬ）を用いて指定することができる。
【００１６】
図１で示すＦＰＧＡ１００などのＦＰＧＡは、構成可能な論理ブロック１１０と呼ばれるプログラム可能な論理コンポーネントと、ブロックを数多くの様々な構成で論理ゲートに接続できるようにする再構成可能な相互接続１０６の階層とを含むことができる。構成可能な論理ブロック１１０は、複雑な組合せ関数、または単にＡＮＤおよびＸＯＲなどの簡単な論理ゲートを行うように構成することができる。いくつかのＦＰＧＡでは、構成可能な論理ブロック１１０は、いくつかのスライス１１２を含むことができ、各スライスは、１つまたは複数の論理セル１１４（例えば、論理ゲートなど）を含む。構成可能な論理ブロック１１０はまた、メモリ要素を含むことができ、それは、簡単なフリップフロップ、またはメモリのより完全なブロックとすることができる。
【００１７】
ＦＰＧＡ１００は、デジタルおよび／またはアナログ機能を有することができる。アナログ機能の例は、差動シグナリングチャンネルに接続されるように設計された入力ピン１０２に対する差動比較器を含む。したがって、ＦＰＧＡの基本的な構造は、アレイベースであり、各集積回路は、水平および垂直のルーティングチャンネルを介して相互に接続されうる構成可能なブロック１１０の２次元アレイを備える。入力ピン１０２は、典型的なＦＰＧＡ設計では、入力バッファ１０４を介して論理ブロックに入力を提供することができる。
【００１８】
図２は、本明細書で述べる少なくともいくつかの実施形態により構成された、サービスとしての集積回路（ＩＣ）を提供するためのシステムを概念的に示している。
【００１９】
データセンタは、データおよび情報の記憶、管理、処理、および配布のための中心化されたリポジトリである。データセンタは、組織体の施設内に存在することができるが、あるいは特殊化された施設として維持することができる。いくつかのデータセンタは、サーバ活動、ウェブトラフィック、管理データ、およびネットワーク性能を監視する自動化
されたシステムを含むネットワークオペレーションセンタ（ＮＯＣ）と同義とすることができる。他のデータセンタは、収集データを管理すること、および解析もしくは同様の計算などのデータ関連サービスを提供することに専用化することもできる。データセンタは、通常、物理的なエンティティ（例えば、サーバルーム、サーバファームなど）に関連付けられるが、データセンタは、仮想データセンタ（ＶＤＣ）としても同様に構成することができ、その場合、管理されたデータは、仮想サーバおよびデータ記憶装置により、サイズ、所有者、または他の態様に基づいてコンパートメント化される。
【００２０】
いくつかの実施形態によるシステムは、データセンタサーバと通信するＦＰＧＡに向けてコンパイルするためのユーザパッケージを受け入れることにより、サービスとしての共用ＦＰＧＡ使用のためのプロビジョニング管理を可能にし、かつユーザ仕様にプログラムされたＦＰＧＡにユーザのプロセスがアクセスできるようにするアクセス制御を可能にする。管理ペイロードをユーザパッケージに追加することができ、またドライバおよびユーザキーを用いて、データセンタ仮想マシンを介してサービスとしてのＦＰＧＡへの選択的かつ管理されたアクセスを可能にする。
【００２１】
図２の図表２００を参照すると、データセンタ２２６は、データを記憶し、かつユーザ２２２などの複数のユーザ（クライアント）に対して１つまたは複数のＦＰＧＡ２４４への共用アクセスなどのサービスを提供することができる。ユーザ２２２は、１つまたは複数のネットワーク２４６を介してデータセンタ２２６と対話することができる（例えば、クラウドベースの対話）。請求追跡２２８、プロビジョン管理２３０、およびアクセス制御２３２などのさらなるサービスに関して、データセンタ２２６は、統合された、または別個のアプリケーションもしくはモジュールを使用することができ、それは、個々のサーバ上で実行することができるが、またはいくつかのサーバにわたり分散させることもできる。
【００２２】
例えば、ユーザ２２２から設計パッケージ２２４を受け取ると、データセンタ２２６は、識別、追跡、請求、および／または互換性のために、コンパイルする前に管理ペイロードをユーザ設計パッケージに付加することができる。管理ペイロード２３４に適合するユーザキー２３８もまた作成することができ、ユーザ２２２が、１つまたは複数のＦＰＧＡ２４４を管理するコントローラ２４２と通信する仮想マシンおよび／または準仮想化ドライバを開始できるようにする。ＦＰＧＡ設計２３６および管理ペイロード２３４と共にアップロードされたデータはまた、ユーザ仕様のハードウェアアクセラレータ２４０を含むことができる。
【００２３】
図３は、本明細書で述べる少なくともいくつかの実施形態により構成された、サービスとしてのＩＣを提供するシステムの主要コンポーネント間の対話を示している。
【００２４】
図３の図表３００で示された例示的なシナリオによれば、ユーザ３２２は、ＦＰＧＡ設計３３６をサービスとしての集積回路（ＩＣａａＳ）マネジャ３５６に送達する。ＩＣａａＳマネジャ３５６は、ＦＰＧＡへのアクセスをユーザに有効にレンタルするデータセンタの１つまたは複数のアプリケーションもしくはサービスとすることができる。ＩＣａａＳマネジャ３５６は、ＦＰＧＡ設計３３６に管理ペイロード３３４を付加することができる。管理ペイロード３３４は、ユーザ識別を保証し、かつ請求およびプロビジョニングのために望ましい適切なメトリック（複数可）を用いて、ＦＰＧＡモジュールの使用量を追跡するために、メッセージインターフェースを管理することができる。例えば、展開された時間および消費電力の組合せを、請求メトリックとして使用することができる。ＩＣａａＳマネジャ３５６はまた、管理ペイロード３３４に適合できるＩＣａａＳユーザキー３３８を生成することができる。ユーザ３２２は、次いで、ＩＣａａＳユーザキー３３８のコピーを用いて、準仮想化ドライバ３４０を備えるデータセンタの仮想マシン３５２を開始することができ、したがって、ユーザの仮想マシンは、複数のＦＰＧＡを管理するＦＰＧＡボード３５４と通信することができ、かつユーザ仕様のアップロードされたハードウェアアクセラレータを使用することができる。仮想マシンおよび準仮想化ドライバ、ネットワーク接続、メッセージング、または他のＦＰＧＡ相互接続手段は、データセンタにおける仮想マシンホスト３５０によりホストされうる。
【００２５】
ペイロードをＦＰＧＡ中にイメージコピーすることは、コンパイルするステップを含む。ＩＣａａＳサービスを管理するために、管理ペイロード３３４は、コンパイルする前にペイロードに追加され、最終設計に存在する回路を有効に追加する。ペイロードは、コンパイル前レイヤに追加されるので、広くアクセスすることができるが、ＦＰＧＡコンパイルのゲートレベルの性質のため、適正に設計された管理ペイロードは、データを損なうプログラム実行可能な空間も、混乱させる共同メモリ操作もないので、ユーザ設計機能と干渉する危険を冒すことはない。管理ペイロードは固定された数のゲートを消費し、それをユーザ３２２に利用可能な容量から除くことができる。
【００２６】
いくつかの例では、管理ペイロード３３４は、単に、コンパイルの後に全体のペイロードが開始されると直ちに時間を記録するクロックとすることができる。このようなクロックは、次いで、ユーザがＦＰＧＡの使用を終了したとき、管理メッセージに応じて、経過時間を報告することができる。他の例では、管理ペイロード３３４は、入力／出力Ｉ／Ｏポートに常駐し、フォーマットに従っていること、および／またはアクセスがＩＣａａＳユーザキー３３８を用いて行われていることを保証することができる。機能をハードウェアで実施することにより、このような監視任務に対するどんな潜在的な遅延も実質的に回避することができる。さらなる例では、管理ペイロード３３４は、請求のためにポートを監視することができる。例えば、ＦＰＧＡが、ストレージバスに直接アクセスすることができる場合、バスを監視して、その活動を請求のために集計することができる。
【００２７】
準仮想化ドライバ３４０は、ハードウェアアクセスを仮想マシンへと抽象化するために使用することができる。いくつかの実施形態によるシステムでは、準仮想化ドライバ３４０は、例えば、ＦＰＧＡボード３５４に接続されたＰＣＩバスへの所有権が検証されたアクセスを提供することができる。いくつかの実施形態では、ＦＰＧＡボード３５４は、ネットワークアクセスに対して、直接接続された仮想マシンを介するように要求することにより、セキュリティのために、ネットワークに直接接続されないようにする。他の実施形態では、ＦＰＧＡボード３５４は、適切なセキュリティ手段を有するネットワークに直接接続することができる。例えば、データセンタは、信頼できる顧客または証明されたペイロードに対して、あるいは顧客が他のものに影響を与えることのできないハードウェアベースの仮想プライベートデータセンタ内で、直接アクセスを可能にすることを選択できる。
【００２８】
図１から図３における特定の例、コンポーネント、および構成を用いて、諸実施形態を上記で論じてきたが、それらは、サービスとしての集積回路を提供するために使用される概略的なガイドラインを提供するように意図されている。これらの例は、実施形態に対する限定を構成するものではなく、本明細書で述べた原理を使用し、他のコンポーネント、モジュール、および構成を用いて実施することができる。例えば、ＦＰＧＡだけではなく、任意の適切な集積回路へのアクセスを、サービスとして提供することができる。他の例によれば、管理ペイロードを、ＦＰＧＡ（複数可）と、アクセスサービスを提供するデータセンタの残りの部分との間のファイアウォールで実施することができる。管理ペイロードを実施するファイアウォール、または任意の同等コンポーネントは、ハードウェア、ソフトウェア、またはその２つの組合せとして実現することができる。さらに、上記で論じたアクションは、様々な順序で、特に飛び越して行うことができる。
【００２９】
図４は、本明細書で述べる少なくともいくつかの実施形態に従って構成された、サービスとしてのＩＣを提供するシステムを管理するために使用できる汎用コンピューティングデバイスを示している。非常に基本的な構成４０２では、コンピューティングデバイス４００は、通常、１つまたは複数のプロセッサ４０４、およびシステムメモリ４０６を含む。メモリバス４０８は、プロセッサ４０４とシステムメモリ４０６の間を通信するために使用することができる。
【００３０】
望ましい構成に応じて、プロセッサ４０４は、これだけに限らないが、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、またはそれらの任意の組合せを含む任意のタイプとすることができる。プロセッサ４０４は、レベルキャッシュメモリ４１２など、１つまたは複数レベルのキャッシング、プロセッサコア４１４、およびレジスタ４１６を含むことができる。例示的なプロセッサコア４１４は、論理演算装置（ＡＬＵ）、浮動少数点演算ユニット（ＦＰＵ）、デジタルシグナル処理コア（ＤＳＰコア）、またはそれらの任意の組合せを含むことができる。例示的なメモリコントローラ４１８はまた、プロセッサ４０４と共に使用することができるが、あるいはいくつかの実装形態では、メモリコントローラ４１８は、プロセッサ４０４の内側部分とすることができる。
【００３１】
望ましい構成に応じて、システムメモリ４０６は、これだけに限らないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはそれらの任意の組合せを含む任意のタイプとすることができる。システムメモリ４０６は、オペレーティングシステム４２０、１つまたは複数のアプリケーション４２２、およびプログラムデータ４２４を含むことができる。アプリケーション４２２は、データセンタ管理モジュール４２３、追加のサービスモジュール４２５、およびＦＰＧＡ制御モジュール４２７を含むことができ、それは、共用のＦＰＧＡ使用のためのプロビジョニング管理、およびユーザ仕様にプログラムされたＦＰＧＡにユーザのプロセスがアクセスできるようにするためのアクセス制御を可能にすることができ、本明細書で述べるデータセンタサーバと通信するＦＰＧＡに向けてコンパイルするためのユーザパッケージを受け取ることができる。プログラムデータ４２４は、データの中でも特に、クライアントにサービスとしての集積回路の使用を提供することに関連付けられた制御パラメータ４２８を含むことができる。ここで述べた基本構成４０２は、内側の破線内のコンポーネントにより図４で示されている。
【００３２】
コンピューティングデバイス４００は、基本構成４０２と任意の必要なデバイスおよびインターフェースとの間の通信を容易にするためのさらなる特徴または機能、およびさらなるインターフェースを有することができる。例えば、バス／インターフェースコントローラ４３０は、ストレージインターフェースバス４３４を介して、基本構成４０２と、１つまたは複数のデータ記憶装置４３２との間の通信を容易にするために使用することができる。データ記憶装置４３２は、取外し式記憶装置４３６、非取外し式記憶装置４３８、またはそれらの組合せとすることができる。取外し式記憶装置および非取外し式記憶装置の例は、そのいくつかを挙げると、フレキシブルなディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、半導体ドライブ（ＳＳＤ）、およびテープドライブを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性、取外し式および非取外し式媒体を含むことができる。
【００３３】
システムメモリ４０６、取外し式記憶装置４３６、および非取外し式記憶装置４３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、これだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を記憶するために使用でき、かつコンピューティングデバイス４００がアクセスできる任意の他の媒体を含む。このようなコンピュータ記憶媒体はどれも、コンピューティングデバイス４００の一部とすることができる。
【００３４】
コンピューティングデバイス４００はまた、バス／インターフェースコントローラ４３０を介して、様々なインターフェースデバイス（例えば、出力装置４４２、周辺インターフェース４４４、および通信装置４４６）から、基本構成４０２への通信を容易にするためのインターフェースバス４４０を含むことができる。いくつかの例示的な出力装置４４２は、グラフィック処理ユニット４４８およびオーディオ処理ユニット４５０を含み、それは、１つまたは複数のＡ／Ｖポート４５２を介してディスプレイまたはスピーカなどの様々な外部装置に伝達するように構成することができる。例示的な周辺インターフェース４４４は、シリアルインターフェースコントローラ４５４またはパラレルインターフェースコントローラ４５６を含み、それは、１つまたは複数のＩ／Ｏポート４５８を介して、入力装置（例えば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など）または他の周辺装置（例えば、プリンタ、スキャナなど）などの外部装置と通信するように構成することができる。例示的な通信装置４４６は、ネットワークコントローラ４６０を含み、それは、１つまたは複数の通信ポート４６４を経由し、ネットワーク通信リンクを介して、１つまたは複数の他のコンピューティングデバイス４６２との通信を容易にするように構成することができる。
【００３５】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他のトランスポート機構などの変調されたデータ信号における他のデータにより実施することができ、また任意の情報送達媒体を含むことができる。「変調されたデータ信号」とは、情報を信号中で符号化するようにその特性の１つまたは複数が設定または変更された信号とすることができる。例として、限定するものではないが、通信媒体は、有線ネットワークもしくは直接の有線接続などの有線媒体、ならびに音響、高周波（ＲＦ）、マイクロ波、赤外線（ＩＲ）などの無線媒体、および他の無線媒体を含むことができる。本明細書で使用される場合、コンピュータ可読媒体という用語は、記憶媒体と通信媒体を共に含むことができる。
【００３６】
コンピューティングデバイス４００は、汎用もしくは専用サーバ、メインフレーム、または上記の機能のいずれかを含む同様のコンピュータの一部として実装することができる。コンピューティングデバイス４００はまた、ラップトップコンピュータと非ラップトップコンピュータ構成を共に含むパーソナルコンピュータとして実施することもできる。
【００３７】
例示的な実施形態はまた、方法を含むことができる。これらの方法は、本明細書で述べられた構造を含む任意の数の方法で実施することができる。１つのこのような方法は、本開示で述べたタイプのデバイスのマシン操作によるものである。他の任意選択の方法は、１人または複数の人間の操作者が操作のうちのいくつかを実施し、他の操作は、マシンにより実施されることに関連して、方法の個々の操作の１つまたは複数が実施されることである。これらの人間の操作者は、互いに並べて配置される必要はなく、それぞれは、プログラムの一部を実施するマシンと共にいるだけでよい。他の例では、人との対話は、マシンで自動化された事前選択される基準などにより自動化することができる。
【００３８】
図５は、本明細書で述べる少なくともいくつかの実施形態により構成された、図４の装置などのコンピューティングデバイスにより実施できるサービスとしてのＩＣを提供するための例示的な方法を示す流れ図である。例示的な方法は、ブロック５２２、５２４、５２６、５２８、および／または５３０のうちの１つまたは複数のものにより示された１つまたは複数の操作、機能、またはアクションを含むことができる。ブロック５２２から５３０に記載の操作はまた、コンピューティングデバイス５１０のコンピュータ可読媒体５２０など、コンピュータ可読媒体に、コンピュータ実行可能命令として記憶することができる。
【００３９】
サービスとしての集積回路（ＦＰＧＡ）にアクセスを提供する、またはそのためのプロセスは、ブロック５２２で「ＦＰＧＡ設計を受け取る」を開始することができる。ブロック５２２で、データセンタ管理サーバは、図２のユーザ２２２から、設計パッケージ２２４などユーザからのＦＰＧＡ設計パッケージを受け取ることができる。データセンタ管理サーバは、ユーザ２２２の認証、請求追跡の初期化、複数のユーザ間のプロビジョン管理など、さらなるタスクをさらに行うことができる。
【００４０】
ブロック５２２の後に、ブロック５２４の「管理ペイロードを付加する」を行うことができる。ブロック５２４で、図２の管理ペイロード２３４は、ＦＰＧＡに向けてコンパイルする前に、設計パッケージ２２４に追加することができる。管理ペイロード２３４は、ＦＰＧＡへのユーザアクセス、請求追跡、および互換性（例えば、適切なフォーマットに従っていることを確認するなど）を監視するために必要な機能を提供することができる。ブロック５２４の後に、ブロック５２６の「ユーザキーを作成する」を行うことができる。ブロック５２６で、図２のユーザキー２３８などのユーザキーを作成することができる。ユーザキー２３８は、管理ペイロード２３４に適合しており、かつユーザに、ＦＰＧＡにアクセスするために仮想マシン（複数可）を開始できるようにする。
【００４１】
ブロック５２６の後に、ブロック５２８の「ユーザに仮想マシン／準仮想化ドライバを開始できるようにする」を行うことができる。ブロック５２８で、図３の１つまたは複数の仮想マシン３５２などの仮想マシンおよび準仮想化ドライバ３４０をユーザキーで開始して、ユーザの設計をＦＰＧＡに伝達することができる。準仮想化ドライバ３４０は、ハードウェアアクセスを仮想マシン３５２へと抽象化するために使用することができる。ブロック５２８の後に、ブロック５３０の「ユーザ設計をＦＰＧＡにアップロードできるようにする」を行うことができる。ブロック５３０で、ユーザの設計パッケージは、仮想マシンを介してＦＰＧＡにアップロードすることができ、計算結果がユーザに返される。
【００４２】
上記で述べたプロセス中のブロックで行われる機能は例示目的のものである。サービスとしての集積回路を提供することは、より少ない機能、またはさらなる機能を有する同様のプロセスで実施することができる。いくつかの例では、機能は、異なる順序で実施することができる。いくつかの他の例では、様々な機能を除くことができる。さらに他の例では、様々な機能をさらなる機能に分割することができ、あるいは、より少ない機能へと共に組み合わせることもできる。
【００４３】
図６は、本明細書で述べる少なくともいくつかの実施形態により構成された、例示的なコンピュータプログラム製品のブロック図を示す。いくつかの例では、図６で示すようにコンピュータプログラム製品６００は、例えば、プロセッサにより実行されたとき、図４に関して上記で述べた機能を提供できるマシン可読命令６０４も含むことのできる信号伝達媒体６０２を含むことができる。したがって、例えば、プロセッサ４０４、データセンタ管理モジュール４２３、追加のサービスモジュール４２５、およびＦＰＧＡ制御モジュール４２７を参照することは、媒体６０２によりプロセッサ５０４に伝達された命令６０４に応じて、図６で示すタスクのうちの１つまたは複数のものを行うことができ、ユーザのＦＰＧＡ設計を受け取ること、管理ペイロードを付加してユーザキーを作成すること、ユーザに仮想マシンを開始できるようにすること、および仮想マシンに、設計をＦＰＧＡにアップロードできるようにすることに関連するアクションを実施する。
【００４４】
いくつかの実施形態では、図６で示す信号伝達媒体６０２は、これだけに限らないが、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、メモリなど、コンピュータ可読媒体６０６を含むことができる。いくつかの実施形態では、信号伝達媒体６０２は、これだけに限らないが、メモリ、読取り／書込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどの記録可能な媒体６０８を含むことができる。いくつかの実施形態では、信号伝達媒体６０２は、これだけに限らないが、デジタル通信媒体および／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク）など、通信媒体６１０を含むことができる。したがって、例えば、プログラム製品６００を、ＲＦ信号伝達媒体によりプロセッサ４０４の１つまたは複数のモジュールに伝達することができ、その場合、信号伝達媒体６０２は、無線通信媒体６１０（例えば、ＩＥＥＥ８０２．１１規格に準拠する無線通信媒体）により伝達される。
【００４５】
いくつかの例によれば、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するための方法は、データセンタで、プログラム可能な集積回路設計パッケージを受け取ること、ＩＣ設計パッケージに管理ペイロードを付加すること、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成すること、およびユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的なアクセスを提供することを含むことができる。
【００４６】
プログラム可能なＩＣは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）とすることができ、また方法は、設計パッケージをコンパイルする前に、管理ペイロードを付加することをさらに含むことができ、コンパイルは、最終設計のために回路を追加する。方法はまた、メッセージングインターフェースを介して、サーバ機能をデータセンタからＦＰＧＡに接続することを含む。メッセージングインターフェースは、ネットワークインターフェース、または周辺コンピュータ相互接続（ＰＣＩ）インターフェースとすることができる。方法はまた、ユーザキーのコピーを用いて、１つまたは複数の準仮想化ドライバを備える１つまたは複数の仮想マシンを開始できるようにし、その場合、準仮想化ドライバは、ＦＰＧＡへの所有権が検証されたアクセスを提供する。
【００４７】
方法は、ＦＰＧＡにおける受け取った設計パッケージの実行に関連する請求追跡サービス、プロビジョニング管理サービス、およびアクセス制御サービスの組から、少なくとも１つを提供することをさらに含むことができる。ＦＰＧＡへの直接ネットワークアクセスが、信頼できるユーザ、証明されたペイロードを有するユーザ、およびハードウェアベースの仮想プライベートデータセンタ内のユーザのうちの１つに提供されうる。設計パッケージは、付加された管理ペイロードと共にＦＰＧＡにイメージコピーされうる。管理ペイロードは、ユーザ識別を保証するためにＦＰＧＡに対するメッセージングインターフェースを管理することができ、かつ事前に規定された請求メトリックに基づいてＦＰＧＡの使用量を追跡するが、請求メトリックは、展開された時間および／または消費電力の１つまたは複数のものに基づくことができる。
【００４８】
１つまたは複数の仮想マシンは、ユーザキーを用いてＦＰＧＡと通信し、かつＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用することができる。さらに、設計パッケージを処理するマネジャは、固定された数のゲートを消費することができ、それらのゲートは、ユーザにとって利用可能な容量から除外することができる。いくつかの例では、管理ペイロードは、ペイロード全体のコンパイルの開始以降の時間を記録し、かつユーザがＦＰＧＡの使用を終了したとき、管理メッセージに応じて経過時間を報告するクロックとすることができる。他の例では、管理ペイロードは、Ｉ／Ｏポートに常駐し、フォーマットに従っていること、および／またはアクセス制御が、ユーザキーを用いて行われていることを保証することができる。管理ペイロードはまた、確実にポートが監視され、かつ接続活動が請求のために集計されるようにすることができる。
【００４９】
他の例によれば、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するデータセンタは、管理サーバを含むことができ、管理サーバは、データセンタで、プログラム可能な集積回路設計パッケージを受け取り、ＩＣ設計パッケージに管理ペイロードを付加し、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成し、かつユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的なアクセスを提供することができる。
【００５０】
プログラム可能なＩＣは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）とすることができ、また管理サーバは、設計パッケージをコンパイルする前に、管理ペイロードをさらに付加することができ、コンパイルは、最終設計のために回路を追加する。管理サーバはまた、メッセージングインターフェースを介して、サーバ機能をデータセンタからＦＰＧＡに接続することができる。メッセージングインターフェースは、ネットワークインターフェース、または周辺コンピュータ相互接続（ＰＣＩ）インターフェースとすることができる。管理サーバはまた、ユーザキーのコピーを用いて、１つまたは複数の準仮想化ドライバを備える１つまたは複数の仮想マシンを開始できるようにし、その場合、準仮想化ドライバは、ＦＰＧＡへの所有権が検証されたアクセスを提供する。
【００５１】
管理サーバは、ＦＰＧＡにおいて受け取った設計パッケージの実行に関連する請求追跡サービス、プロビジョニング管理サービス、およびアクセス制御サービスの組から、少なくとも１つをさらに提供することができる。ＦＰＧＡへの直接ネットワークアクセスが、信頼できるユーザ、証明されたペイロードを有するユーザ、およびハードウェアベースの仮想プライベートデータセンタ内のユーザのうちの１つに提供されうる。設計パッケージは、付加された管理ペイロードと共にＦＰＧＡにイメージコピーされうる。管理ペイロードは、ユーザ識別を保証するためにＦＰＧＡに対するメッセージングインターフェースを管理することができ、かつ事前に規定された請求メトリックに基づいてＦＰＧＡの使用量を追跡するが、請求メトリックは、展開された時間および／または消費電力の１つまたは複数のものに基づくことができる。
【００５２】
１つまたは複数の仮想マシンは、ユーザキーを用いてＦＰＧＡと通信し、かつＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用することができる。さらに、設計パッケージを処理するマネジャは、固定された数のゲートを消費することができ、それらのゲートは、ユーザにとって利用可能な容量から除外することができる。いくつかの例では、管理ペイロードは、ペイロード全体のコンパイルの開始以降の時間を記録し、かつユーザがＦＰＧＡの使用を終了したとき、管理メッセージに応じて経過時間を報告するクロックとすることができる。他の例では、管理ペイロードは、Ｉ／Ｏポートに常駐し、フォーマットに従っていること、および／またはアクセス制御が、ユーザキーを用いて行われていることを保証することができる。管理ペイロードはまた、確実にポートが監視され、かつ接続活動が請求のために集計されるようにすることができる。
【００５３】
他の例によれば、コンピュータ可読記憶媒体は、サービスとしてプログラム可能な集積回路（ＩＣ）を提供するための記憶された命令を含むことができる。命令は、データセンタで、プログラム可能な集積回路設計パッケージを受け取ること、ＩＣ設計パッケージに管理ペイロードを付加すること、ＩＣ設計パッケージに関連付けられた、管理ペイロードに適合するユーザキーを作成すること、およびユーザキーを用いて、１つまたは複数の仮想マシンを介してプログラム可能なＩＣへの選択的なアクセスを提供することを含むことができる。
【００５４】
プログラム可能なＩＣは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）とすることができ、また命令は、設計パッケージをコンパイルする前に管理ペイロードを付加することをさらに含むことができ、コンパイルは、最終設計のために回路を追加する。命令はまた、メッセージングインターフェースを介して、サーバ機能をデータセンタからＦＰＧＡに接続することを含むことができる。メッセージングインターフェースは、ネットワークインターフェース、または周辺コンピュータ相互接続（ＰＣＩ）インターフェースとすることができる。命令はまた、ユーザキーのコピーを用いて、１つまたは複数の準仮想化ドライバを備える１つまたは複数の仮想マシンを開始できるようにすることを含むことができ、その場合、準仮想化ドライバは、ＦＰＧＡへの所有権が検証されたアクセスを提供する。
【００５５】
命令は、ＦＰＧＡおいて受け取った設計パッケージの実行に関連する請求追跡サービス、プロビジョニング管理サービス、およびアクセス制御サービスの組から、少なくとも１つを提供することをさらに含むことができる。ＦＰＧＡへの通信アクセスが、信頼できるユーザ、証明されたペイロードを有するユーザ、およびハードウェアベースの仮想プライベートデータセンタ内のユーザのうちの１つに提供されうる。設計パッケージは、付加された管理ペイロードと共にＦＰＧＡにイメージコピーされうる。管理ペイロードは、ユーザ識別を保証するためにＦＰＧＡに対するメッセージングインターフェースを管理することができ、かつ事前に規定された請求メトリックに基づいてＦＰＧＡの使用量を追跡するが、請求メトリックは、展開された時間および／または消費電力の１つまたは複数のものに基づくことができる。
【００５６】
１つまたは複数の仮想マシンは、ユーザキーを用いてＦＰＧＡと通信し、かつＩＣ設計パッケージに関連するユーザによりアップロードされたユーザ仕様のハードウェアアクセラレータを使用することができる。さらに、設計パッケージを処理するマネジャは、固定された数のゲートを消費することができ、それらのゲートは、ユーザにとって利用可能な容量から除外することができる。いくつかの例では、管理ペイロードは、ペイロード全体のコンパイルの開始以降の時間を記録し、かつユーザがＦＰＧＡの使用を終了したとき、管理メッセージに応じて経過時間を報告するクロックとすることができる。他の例では、管理ペイロードは、Ｉ／Ｏポートに常駐し、フォーマットに従っていること、および／またはアクセス制御が、ユーザキーを用いて行われていることを保証することができる。管理ペイロードはまた、確実にポートが監視され、かつ接続活動が請求のために集計されるようにすることができる。
【００５７】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術をもたらすことができる様々な達成手段があり（例えば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なる。例えば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのなんらかの組合せを選択することができる。
【００５８】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスの様々な実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（例えば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（例えば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。
【００５９】
本開示は、様々な態様を例示するように意図された、本出願で述べられた特定の実施形態によって限定されない。当業者には明らかであろうが、本出願の趣旨および範囲から逸脱することなく、多くの変更および変形を行うことが可能である。本明細書で列挙されたものに加えて、本開示の範囲に含まれる機能的に均等な方法および装置は、前述の記述から、当業者には明らかであろう。このような変更および変形は、添付の特許請求の範囲に含まれるように意図されている。本開示は、このような特許請求の範囲が権利を有する均等な形態の全範囲と併せて、添付の特許請求の範囲によってのみ限定されるべきである。本開示は、当然であるが変化しうる特定の方法、試薬、化合物の組成、または生体系に限定されないことを理解されたい。本明細書で使用される専門用語は、特定の実施形態だけを記述するためのものであり、限定することを意図していないこともまた理解されたい。
【００６０】
さらに、本明細書に記載された主題のメカニズムを様々な形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピーディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００６１】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（例えば、ガントリーシステムの位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。
【００６２】
通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。本明細書に記載された主題は、様々なコンポーネントをしばしば例示しており、これらのコンポーネントは、他の様々なコンポーネントに包含されるか、または他の様々なコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示に過ぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００６３】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。様々な単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００６４】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（例えば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（例えば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。
【００６５】
さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００６６】
さらに、本開示の特徴または態様が、マーカッシュ群に関して記述される場合、当業者であれば、本開示はまた、それにより、マーカッシュ群の任意の個々の構成要素、または構成要素の下位の群により記述されることが理解されよう。
【００６７】
当業者であれば理解されるように、記述を提供することなど、任意のかつすべての目的に関して、本明細書で開示されるすべての範囲はまた、任意の、かつすべての可能な下位の範囲、およびその下位の範囲の組合せを包含する。いずれの列挙された範囲も十分に説明されており、かつその範囲が少なくとも等しい半分、３分の１、４分の１、５分の１、１０分の１などへと分解可能であることが容易に理解できるはずである。非限定的な例として、本明細書で論ずる各範囲は、下側３分の１、中央３分の１、および上側３分の１などへと容易に分解することができる。当業者であればまた理解されるように、「最高で〜まで」、「少なくとも」、「を超える」、「より少ない」などのすべての言語は、記載された数を含み、その後に続いて、上記で論じた下位の範囲へと分解できる範囲を指す。最後に、当業者であれば理解されるように、範囲は個々の構成要素を含む。したがって、例えば、１〜３個のセルを有する群は、１、２、または３個のセルを有する群を指す。同様に、１〜５個のセルを有する群は、１、２、３、４、または５個のセルを有する群を指し、以下同様である。
【００６８】
様々な態様および実施形態が本明細書で開示されてきたが、他の態様および実施形態も当業者には明らかであろう。本明細書で開示された様々な態様および実施形態は、例示のためのものであり、限定することは意図されておらず、真の範囲および趣旨は、添付の特許請求の範囲によって示される。
【要約】
サービスとしてのＦＰＧＡへのアクセスを提供し、かつ管理するための技術が概略的に述べられる。いくつかの例では、共用のＦＰＧＡ使用のためのプロビジョニング管理、およびユーザ仕様にプログラムされたＦＰＧＡにユーザのプロセスがアクセスできるようにするためのアクセス制御を可能にするシステムは、データセンタサーバと通信するＦＰＧＡに向けてコンパイルするためのユーザパッケージを受け入れることができる。ユーザパッケージは、付加された管理ペイロードと共にＦＰＧＡにイメージコピーすることができ、またドライバおよびユーザキーを使用して、データセンタ仮想マシンに対して、サービスとしてのＦＰＧＡへの選択的なアクセスを可能にすることができる。併せて、これらの要素は、データセンタが、レンタル可能なサービスとしての集積回路（ＩＣａａＳ）を提供できるようにする。請求追跡、プロビジョン管理、およびアクセス制御などのさらなるサービスをユーザに提供することができ、低コストを実現できるようにする一方で、データセンタには、大きな利益が実現される。【図４】
0005646125.tif 000002
【図５】
0005646125.tif 000003
【図６】
0005646125.tif 000004
【図１】
0005646125.tif 000005
【図２】
0005646125.tif 000006
【図３】
0005646125.tif 000007