(57)【特許請求の範囲】
【請求項１】
ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供する方法であって、
ホスト（１２０）上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするネットワーク対応アプリケーション（２２１）を、前記ホスト（１２０）上で提供することと、
前記ホスト（１２０）において、３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）をブローカ（１５０）に接続するための３Ｄライブラリ・ラッパー（２２２）を提供することと、
前記ブローカ（１５０）において、前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）についての要求を受信することと、
最終的な２Ｄレンダリング済み画像を遠隔クライアント（１３１）に戻すために、前記ブローカ（１５０）が、利用可能な前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）を評価し（３０４）、前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）から選択された３Ｄグラフィックス・レンダリング・リソース（１４１）を前記３Ｄライブラリ・ラッパー（２２２）に割り当てる（３０５）ことと、
前記ブローカ（１５０）が、前記遠隔クライアント（１３１）についての直接接続情報が提供されているかどうかを判定する（４１２）ことと、
前記遠隔クライアントについての直接接続情報が存在する場合には、前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）に、前記遠隔クライアント（１３１）との直接接続を行うように命令する（４１３）ことと、
前記ブローカ（１５０）が、前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）と前記遠隔クライアント（１３１）と間の直接通信と、前記３Ｄライブラリ・ラッパー（２２２）を介した通信との間のモード変更要求を監視する（４５４）ことと、
モード変更が要求されている（４５７）ことに応じて、前記直接通信が行われている場合は、前記２Ｄレンダリング済み画像を前記３Ｄライブラリ・ラッパー（２２２）に戻すように前記３Ｄグラフィック・レンダリング・リソース（１４１）に命令し（４５９）、前記直接通信が行われていない場合は、前記２Ｄレンダリング済み画像を前記遠隔クライアント（１３１）に直接送信するように前記３Ｄグラフィック・レンダリング・リソース（１４１）に命令する（４６１）ことと、
を含む方法。
【請求項２】
前記ネットワーク対応アプリケーション（２２１）は、前記ホスト（１２０）上の仮想マシン（１２１）で実行され、前記遠隔クライアント（１３１）によってアクセスされる、請求項１に記載の方法。
【請求項３】
前記ネットワーク対応アプリケーション（２２１）は、前記ホスト（１２０）上の端末サービス・セッションで実行され、前記遠隔クライアント（１３１）によってアクセスされる、請求項１に記載の方法。
【請求項４】
前記３Ｄライブラリ・ラッパー（２２２）及び前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）は、接続してグラフィカル呼び出しを送信することを含む、請求項１に記載の方法。
【請求項５】
前記遠隔クライアント（１３１）に転送するために、最終的なレンダリング済み画像を、前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）から前記３Ｄライブラリ・ラッパー（２２２）に送信する（３０７）ことを含む、請求項１に記載の方法。
【請求項６】
前記３Ｄライブラリ・ラッパー（２２２）が、前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）に直接接続情報を提供することと、
前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）が、最終的なレンダリング済み画像を前記遠隔クライアント（１３１）に直接送信する（３０８）ことと、
を含む、請求項１に記載の方法。
【請求項７】
複数の前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）は、１つ又は複数のホスト（１２０）上の複数の仮想マシン又は端末サービス・セッション（１２１−１２５）が利用可能なネットワーク・コンピューティング・アーキテクチャ内に設けられた仮想化グラフィックス・サーバとして提供される、請求項１に記載の方法。
【請求項８】
前記ブローカ（１５０）が、前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）を監視し（４０５）、リソース優先順位キュー（４０９）を更新する（４０）ことを含む、請求項１に記載の方法。
【請求項９】
３Ｄグラフィックス呼び出しを、前記３Ｄライブラリ・ラッパー（２２２）と前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）との間の中立形式に修正することを含む、請求項１に記載の方法。
【請求項１０】
グラフィックス・レンダリングを前記ホスト（１２０）から分離することによって、プラットフォームに依存しないグラフィックス・リソースの拡張性を可能にする、請求項１に記載の方法。
【請求項１１】
ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供するシステムであって、
ホスト（１２０）上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするネットワーク対応アプリケーション（２２１）と、前記アプリケーション（２２１）のための３Ｄライブラリ・ラッパー（２２２）とを有するホスト（１２０）と、
前記ホスト（１２０）とは独立に提供される１つ又は複数の３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）と、
最終的な２Ｄレンダリング済み画像を遠隔クライアント（１３１）に戻すために、前記１つ又は複数の３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）から選択された３Ｄグラフィックス・レンダリング・リソース（１４１）を評価し（３０４）、これを前記アプリケーション（２２１）のための前記３Ｄライブラリ・ラッパー（２２２）に割り当てる（３０５）ブローカ（１５０）と、
を含み、
前記ブローカ（１５０）は、前記遠隔クライアント（１３１）についての直接接続情報が提供されているかどうかを判定し（４１２）、前記遠隔クライアント（１３１）についての直接接続情報が存在する場合には、前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）に、前記遠隔クライアント（１３１）との直接接続を行うように命令し（４１３）、
前記ブローカ（１５０）は、前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）と前記遠隔クライアント（１３１）との間の直接通信と、前記３Ｄライブラリ・ラッパー（２２２）を介した通信との間のモード変更要求を監視し（４５４）、
モード変更が要求されている（４５７）ことに応じて、前記直接通信が行われている場合は、前記２Ｄレンダリング済み画像を前記３Ｄライブラリ・ラッパー（２２２）に戻すように前記３Ｄグラフィック・レンダリング・リソース（１４１）に命令し（４５９）、前記直接通信が行われていない場合は、前記２Ｄレンダリング済み画像を前記遠隔クライアント（１３１）に直接送信するように前記３Ｄグラフィック・レンダリング・リソース（１４１）に命令する（４６１）、
システム。
【請求項１２】
前記３Ｄライブラリ・ラッパー（２２２）は、ライブラリ呼び出しを前記ブローカ（１５０）に向けるプロキシ・ライブラリ・ラッパーである、請求項１１に記載のシステム。
【請求項１３】
前記アプリケーション（２２１）は、前記ホスト（１２０）上の仮想マシン（１２１）で実行され、前記遠隔クライアント（１３１）によってアクセスされる、請求項１１に記載のシステム。
【請求項１４】
前記アプリケーション（２２１）は、前記ホスト上の端末サービス・セッションで実行され、前記遠隔クライアント（１３１）によってアクセスされる、請求項１１に記載のシステム。
【請求項１５】
前記ブローカ（１５０）は、仮想化された３Ｄグラフィックス・レンダリング・リソースを評価し（３０４）、これをネットワーク対応環境内の複数のホスト（１２０）に割り当てる（３０５）、請求項１１に記載のシステム。
【請求項１６】
前記３Ｄライブラリ・ラッパー（２２２）と前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）との間に、中立のグラフィカル呼び出しを送信する通信機構を含む、請求項１１に記載のシステム。
【請求項１７】
前記選択された３Ｄグラフィックス・レンダリング・リソース（１４１）から前記遠隔クライアント（１３１）への直接通信機構を含む、請求項１１に記載のシステム。
【請求項１８】
前記ブローカ（１５０）は、前記３Ｄグラフィックス・レンダリング・リソース（１４１−１４４）を監視し（４０５）、リソース優先順位キュー（４０９）を更新する（４０８）、請求項１１に記載のシステム。
【請求項１９】
グラフィックス・レンダリングを前記ホスト（１２０）から分離することによって、プラットフォームに依存しないグラフィックス・リソースの拡張性を可能にする、請求項１１に記載のシステム。
【請求項２０】
コンピュータ・システム内にロードされて実行されたときに、請求項１から請求項１０までのいずれか１項に記載の方法のステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア・アクセラレーテッド・グラフィックスに関する。特に、本発明は、ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスに関する。
【背景技術】
【０００２】
「クラウド・コンピューティング」は、従来はワークステーション・ベースであったアプリケーション作業負荷を、データ・センタなどの遠隔場所において統合することである。クラウド・コンピューティングは、共有リソース、ソフトウェア及び情報が要求に応じてコンピュータ及び他のデバイスに提供される、ネットワーク・ベースのコンピューティングである。クラウドは、仮想マシン（ＶＭ）のオペレーティング・システム上で動作するアプリケーションを含むか、又は、Ｍｉｃｒｏｓｏｆｔ  Ｔｅｒｍｉｎａｌ  Ｓｅｒｖｉｃｅｓ（ＴＳ）などの同様の環境で動作するアプリケーションからなるものとすることができる（Ｍｉｃｒｏｓｏｆｔは、米国、他の国々又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）。クラウド・コンピューティングの利点は、クラウド・コンピューティングが、ハードウェア及びソフトウェアの集中的な制御及び設定を提供するものであると同時に、リソース及びライセンスの使用の更新及び最大化を容易なものにすることができる点である。
【０００３】
３Ｄグラフィックスは、複雑なデータを視覚的に表現できるようにする能力を提供する。科学コンピューティング、医療イメージング、コンピュータ支援設計（ＣＡＤ）、製品ライフサイクル管理（ＰＬＭ）並びに石油及びガスの探査といった多くの分野において、３Ｄグラフィックスが広く利用されている。ＣＰＵ（中央演算処理ユニット）を膨大に使用することなく複雑なシーン及びモデルをレンダリングすることを可能にする３Ｄグラフィックス・ハードウェアには、特にＯｐｅｎＧＬ（Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）標準（ＯｐｅｎＧＬは、Ｋｈｒｏｎｏｓ  Ｇｒｏｕｐの商標である）及びＭｉｃｒｏｓｏｆｔのＤｉｒｅｃｔＸ（ＤｉｒｅｃｔＸは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）などの標準化された３Ｄアプリケーション・プログラミング・インターフェース（ＡＰＩ）を通じて、アクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
歴史的には、仮想マシンは、３Ｄグラフィックス・レンダリングのサポートが限定的であった。複雑な３Ｄのソフトウェア・レンダリングは、ＣＰＵに大きな負荷をかけるものであり、仮想化ホストを忙殺させる可能性がある。実際に存在する技術は、ホスト上のローカル・ハードウェアにアクセスすることに限定されており、従って、拡張性が極めて限られたものとなっている。こうしたことから、上述された３Ｄアプリケーションのカテゴリは、典型的には、このような環境における動作から除外されてきた。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によれば、ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供する方法であって、ホスト上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするネットワーク対応アプリケーションを、ホスト上で提供することと、ホストにおいて、３Ｄグラフィックス・レンダリング・リソースをブローカに接続するための３Ｄライブラリ・ラッパーを提供することと、ブローカにおいて、３Ｄグラフィックス・レンダリング・リソースについての要求を受信することと、最終的な２Ｄレンダリング済み画像を遠隔クライアントに戻すために、ブローカが、利用可能な３Ｄグラフィックス・レンダリング・リソースを評価し、１つの３Ｄグラフィックス・レンダリング・リソースを３Ｄライブラリ・ラッパーに割り当てることと、を含む方法が提供される。
【０００６】
好ましくは、本発明は、ネットワーク対応アプリケーションが、ホスト上の仮想マシンで実行され、遠隔クライアントによってアクセスされる方法を提供する。
【０００７】
好ましくは、本発明は、ネットワーク対応アプリケーションが、ホスト上の端末サービス・セッションで実行され、遠隔クライアントによってアクセスされる方法を提供する。
【０００８】
好ましくは、本発明は、３Ｄライブラリ・ラッパー及び選択された３Ｄグラフィックス・レンダリング・リソースが接続してグラフィカル呼び出しを送信することを含む方法を提供する。
【０００９】
好ましくは、本発明は、遠隔クライアントに転送するために、最終的なレンダリング済み画像を、選択された３Ｄグラフィックス・レンダリング・リソースから３Ｄライブラリ・ラッパーに送信することを含む方法を提供する。
【００１０】
好ましくは、本発明は、３Ｄライブラリ・ラッパーが、３Ｄグラフィックス・レンダリング・リソースに直接接続情報を提供することと、選択された３Ｄグラフィックス・レンダリング・リソースが、最終的なレンダリング済み画像を遠隔クライアントに直接送信することと、を含む方法を提供する。
【００１１】
好ましくは、本発明は、複数の３Ｄグラフィックス・レンダリング・リソースが、１つ又は複数のホスト上の複数の仮想マシン又は端末サービス・セッションが利用可能なネットワーク・コンピューティング・アーキテクチャ内に設けられた仮想化グラフィックス・サーバとして提供される方法を提供する。
【００１２】
好ましくは、本発明は、ブローカが、３Ｄグラフィックス・レンダリング・リソースを監視し、リソース優先順位キューを更新することを含む方法を提供する。
【００１３】
好ましくは、本発明は、ブローカが、遠隔クライアントについての直接接続情報が提供されているかどうかを判定することと、遠隔クライアントについての直接接続情報が存在する場合には、選択された３Ｄグラフィックス・レンダリング・リソースに、遠隔クライアントとの直接接続を行うように命令することと、を含む方法を提供する。
【００１４】
好ましくは、本発明は、ブローカが、選択された３Ｄグラフィックス・レンダリング・リソースと遠隔クライアントとの間の直接通信と、３Ｄライブラリ・ラッパーを介した通信との間のモード変更要求を監視することと、必要に応じてモードを変更することと、を含む方法を提供する。
【００１５】
好ましくは、本発明は、３Ｄグラフィックス呼び出しを、３Ｄライブラリ・ラッパーと選択された３Ｄグラフィックス・レンダリング・リソースとの間の中立形式に修正することを含む方法を提供する。
【００１６】
好ましくは、本発明は、グラフィックス・レンダリングをホストから分離することによって、プラットフォームに依存しないグラフィックス・リソースの拡張性を可能にする、請求項１に記載の方法を提供する。
【００１７】
本発明の第２の態様によれば、ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供するコンピュータ・ソフトウェア製品であって、コンピュータ可読プログラム・コードが具体化されたコンピュータ可読ストレージ媒体を含み、コンピュータ可読プログラム・コードは、ホスト上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするネットワーク対応アプリケーションを、ホスト上で提供し、ホストにおいて、３Ｄグラフィックス・レンダリング・リソースをブローカに接続するための３Ｄライブラリ・ラッパーを提供し、ブローカにおいて、３Ｄグラフィックス・レンダリング・リソースについての要求を受信し、最終的な２Ｄレンダリング済み画像を遠隔クライアントに戻すために、利用可能な３Ｄグラフィックス・レンダリング・リソースを評価して、選択された３Ｄグラフィックス・レンダリング・リソースを３Ｄライブラリ・ラッパーに割り当てるように構成された、コンピュータ・ソフトウェア製品が提供される。
【００１８】
好ましくは、本発明は、３Ｄライブラリ・ラッパーが、ライブラリ呼び出しをブローカに向けるプロキシ・ライブラリ・ラッパーであるシステムを提供する。
【００１９】
好ましくは、本発明は、アプリケーションが、ホスト上の仮想マシン上で実行され、遠隔クライアントによってアクセスされるシステムを提供する。
【００２０】
好ましくは、本発明は、アプリケーションが、ホスト上の端末サービス・セッション上で実行され、遠隔クライアントによってアクセスされるシステムを提供する。
【００２１】
好ましくは、本発明は、ブローカが、仮想化された３Ｄグラフィックス・レンダリング・リソースを評価し、これをネットワーク対応環境内の複数のホストに割り当てるシステムを提供する。
【００２２】
好ましくは、本発明は、３Ｄライブラリ・ラッパーと選択された３Ｄグラフィックス・レンダリング・リソースとの間に、中立のグラフィカル呼び出しを送信する通信機構を含むシステムを提供する。
【００２３】
好ましくは、本発明は、選択された３Ｄグラフィックス・レンダリング・リソースから遠隔クライアントへの直接通信機構を含むシステムを提供する。
【００２４】
好ましくは、本発明は、ブローカが、３Ｄグラフィックス・レンダリング・リソースを監視し、リソース優先順位キューを更新するシステムを提供する。
【００２５】
好ましくは、本発明は、ブローカが、遠隔クライアントについての直接接続情報が提供されているかどうかを判定し、遠隔クライアントについての直接接続情報が存在する場合には、選択された３Ｄグラフィックス・レンダリング・リソースに、遠隔クライアントとの直接接続を行うように命令するシステムを提供する。
【００２６】
好ましくは、本発明は、ブローカが、選択された３Ｄグラフィックス・レンダリング・リソースと遠隔クライアントと間の直接通信と、３Ｄライブラリ・ラッパーを介した通信との間のモード変更要求を監視し、必要に応じてモードを変更するシステムを提供する。
【００２７】
好ましくは、本発明は、グラフィックス・レンダリングをホストから分離することによって、プラットフォームに依存しないグラフィックス・リソースの拡張性を可能にするシステムを提供する。
【００２８】
好ましくは、本発明は、遠隔クライアントがシンクライアントであり、システムが複数の接続プロトコルをサポートするシステムを提供する。
【００２９】
好ましくは、本発明は、遠隔クライアントが、選択された３Ｄグラフィックス・レンダリング・リソースからレンダリング済み画像を直接受信し、その画像をクライアントにおいて合成するシステムを提供する。
【００３０】
好ましくは、本発明は、ホストが、複数の仮想マシンをホストし、レンダリング済み画像をローカルに表示するシステムを提供する。
【００３１】
本発明の第３の態様によれば、ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供するサービスを、ネットワーク上で顧客に提供する方法であって、ホスト上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするネットワーク対応アプリケーションを、ホスト上で提供することと、ホストにおいて、３Ｄグラフィックス・レンダリング・リソースをブローカに接続するための３Ｄライブラリ・ラッパーを提供することと、ブローカにおいて、３Ｄグラフィックス・レンダリング・リソースについての要求を受信することと、最終的な２Ｄレンダリング済み画像を遠隔クライアントに戻すために、ブローカが、利用可能な３Ｄグラフィックス・レンダリング・リソースを評価し、１つの３Ｄグラフィックス・レンダリング・リソースを３Ｄライブラリ・ラッパーに割り当てることと、を含む方法が提供される。
【００３２】
本発明の第４の態様によれば、ネットワーク対応アプリケーションのためのハードウェア・アクセラレーテッド・グラフィックスを提供するシステムであって、ホスト上で提供されていないハードウェア・アクセラレーテッド・グラフィックスを必要とするアプリケーションと該アプリケーションのための３Ｄライブラリ・ラッパーとを有するホストと、ホストとは独立に提供される１つ又は複数の３Ｄグラフィックス・レンダリング・リソースと、最終的な２Ｄレンダリング済み画像を遠隔クライアントに戻すために、選択された３Ｄグラフィックス・レンダリング・リソースを評価し、これをアプリケーションのための３Ｄライブラリ・ラッパーに割り当てるブローカと、を含むシステムが提供される。
【００３３】
第５の態様から見ると、本発明は、コンピュータ・システム内にロードされて実行されたときに、上述の方法のステップの全てを行うためのコンピュータ・プログラム・コードを含むコンピュータ・プログラムが提供される。
【００３４】
発明として見なされる主題は、本明細書の結論部分において具体的に指摘され、明確に請求される。本発明は、その目的、特徴、及び利点と共に、操作の機構及び方法の両方について、添付の図面と併せて読むときに以下の詳細な説明を参照することによって最も良く理解される。
【図面の簡単な説明】
【００３５】
【図１】本発明の好ましい一実施形態によるシステムのブロック図である。
【図２】本発明の好ましい一実施形態による図１のシステムの更なる詳細を示すブロック図である。
【図３】本発明の好ましい一実施形態による方法を示すフロー図である。
【図４】本発明の好ましい一実施形態による方法を示すフロー付きシステム図である。
【図５】本発明の好ましい実施形態による方法のフロー図である。
【図６】本発明の好ましい実施形態による方法のフロー図である。
【図７】本発明の更なる一態様による方法のフロー図である。
【図８】本発明を実装することができるコンピュータ・システムのブロック図である。
【図９】本発明を実装することができるクラウド・コンピューティング環境の概略図である。
【図１０】本発明を実装することができるクラウド・コンピューティング環境の層の概略図である。
【発明を実施するための形態】
【００３６】
ここで、本発明の好ましい一実施形態が、添付の図面を参照して、一例として説明される。
【００３７】
図面内に示される要素は、説明を簡単かつ明確にするために、必ずしも縮尺通りに描かれているわけではないことが認識されるであろう。例えば、図面内の幾つかの要素は、明確にするために、他の要素と比べて誇張されている場合がある。さらに、適切であると考えられる場合には、対応する特徴又は類似する特徴を示すために、図面間で参照符号が繰り返されることがある。
【００３８】
以下の詳細な説明においては、本発明が完全に理解されるように、多くの特定の詳細が示される。しかしながら、当業者であれば、本発明はこれらの特定の詳細がなくても実施できることが分かるであろう。他の例においては、本発明を不明瞭にしないように、周知の方法、手順、及び構成要素は詳細に説明されない。
【００３９】
説明される方法及びシステムによって、ハードウェアとソフトウェアとの統合のクラウドによる利益を３Ｄアプリケーション空間において活用することができるようになる。
【００４０】
クラウドは、典型的には、複数の仮想マシン（ＶＭ）をホストする、単一の場所又は（高速ネットワークによってリンクされた）複数の場所に配置された、物理サーバの集合体である。これらの仮想マシンは、ユーザの視点からはサービスのいかなる中断もなしに、１つの物理ホストから別のホストに移行される場合もある（例えばハードウェア故障の場合）。仮想マシンを用いることによって、複数の作業負荷を同時に処理することができるようになり、ＣＰＵ（中央演算処理ユニット）又はメモリなどのシステム・リソースをより良好に用いて、依然として作業負荷間の物理的な分離がもたらされる。
【００４１】
同様に、端末サービス（ＴＳ）サーバは、単一のシステム上で複数のユーザ・セッションをホストする。遠隔アクセスが、複数の仮想マシンをホストするシステムの場合に類似した方式で行われる。ユーザは、個々の遠隔ＶＭに接続する代わりに、単一のサーバ・マシン上で動作する遠隔ＴＳセッションに接続する。
【００４２】
本明細書の目的上、「クラウド」という用語は、複数の仮想マシンをホストする遠隔システムと、複数の端末サービス・セッションをホストするシステムとの両方を指すものとすることができる。
【００４３】
説明される方法及びシステムは、クラウド・ベースのシステムに拡張可能なＧＰＵ（グラフィックス処理ユニット）アクセラレーションを提供することと、３Ｄ画像への遠隔アクセスとを組み合わせることを可能にする。クラウド・ベースの３Ｄアプリケーションが、必要に応じて、任意の大量のグラフィックス・リソースを利用可能にすることができ、結果として得られる３Ｄ画像の圧縮及び遠隔ストリーミングを用いることによって、ローカルアプリケーションのユーザ体験がシミュレートされる。
【００４４】
説明される方法及びシステムは、ネットワーク対応アプリケーションとも呼ばれる、クラウド・タイプの遠隔システムにおいて動作するアプリケーションに、ハードウェア・アクセラレーテッド３Ｄグラフィックスを提供する。このことによって、３Ｄアプリケーション負荷のための従来の専用ワークステーションの利点と、クラウド展開戦略が提供する拡張性及び融通性とを組み合わせることが可能になる。
【００４５】
図１を参照すると、ブロック図が、説明されるシステム１００を示す。クラウド・タイプの遠隔環境１１０が設けられている。クラウド環境１１０は、典型的には、複数の仮想マシン又は端末サーバ・セッションをホストする、単一の場所又は高速ネットワークによってリンクされた複数の場所に配置された、物理サーバの集合体である。図１は、複数の仮想マシン（ＶＭ）又は端末サービス（ＴＳ）セッション１２１−１２５を含む物理ホスト１２０を示す。
【００４６】
遠隔クライアント１３１、１３２は、シンクライアントである遠隔アクセス・デバイス及び遠隔アクセス・ソフトウェアを含む遠隔クライアントの実施形態である。例えば、遠隔クライアント１３１、１３２は、ラップトップ又はスマートフォン上で動作する、ＶＮＣ（仮想ネットワーク・コンピューティング）クライアント又はＭｉｃｒｏｓｏｆｔ  Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ（ＲＤＰ）クライアントとすることができる。これらは、遠隔クライアントの視点から見ると、遠隔マシン上でホストされる遠隔デスクトップ全体に、又は単に遠隔マシンによってエクスポートされる単一のアプリケーションに、アクセスすることができる。ユーザは、専用の遠隔クライアント又はウェブページ・ベースのポータルといった幾つかの方法を通じて、遠隔的にクラウドにアクセスすることができる。この遠隔クライアントのアクセスは、典型的には軽いものであり、遠隔クライアントに代わる実質的なＣＰＵパワー又はメモリを必要とせず、遠隔クライアント側に３Ｄグラフィックス・ハードウェアを必要とすることもない。
【００４７】
説明されるシステム１００は、クラウド環境１１０内に、３Ｄグラフィックス・レンダリング・リソース又はグラフィックス・サーバとも呼ばれる（図４においても「レンダリング・リソース」１４１−１４４として示されている）、図１に示される１つ又は複数のグラフィック処理ユニット（ＧＰＵ）プロバイダ１４１−１４３を含み、これらは、実際の３Ｄグラフィックス・ハードウェアを提供して、グラフィックス処理タスクを扱う。
【００４８】
説明されるシステム１００はまた、ＶＭ又はＴＭセッション１２１−１２５とＧＰＵプロバイダ１４１−１４３との間で適切なリソース割り当てを行う、クラウド環境１１０内に設けられたブローカ１５０を含む。
【００４９】
クラウド環境１１０の構成要素は、データ・センタ内で互いに接近して配置することも、高速ネットワークによって接続された別々の場所に配置することもできる。幾つかの構成要素はまた、必要に応じて、他の構成要素と同じ物理ハードウェア内に配置することができる。
【００５０】
ＧＰＵプロバイダ１４１−１４３の形を取る仮想化されたグラフィックス・ハードウェアが、クラウド環境１１０内に提供され、ＶＭ又はＴＳセッション１２１−１２５からクラウド内で３Ｄアプリケーションを動作させることが可能になる。
【００５１】
ＧＰＵプロバイダ１４１−１４３におけるアクセラレーテッド３Ｄレンダリングをクラウドのホスト１２０から分離することによって、ホスト・マシンに直接取り付けることができるリソースに限定される他のシステムとは異なり、無制限の拡張性が可能になる。
【００５２】
図２を参照すると、ブロック図が、図１のシステム１００の詳細を示す。ＶＭ／ＴＳセッション１２１が、クラウド環境１１０のホスト１２０上に示される。ＶＭ／ＴＳセッション１２１は、ネットワーク対応アプリケーションの形態の３Ｄアプリケーション２２１と、プロキシ・グラフィックス・ライブラリを提供する３Ｄ  ＡＰＩラッパー・ライブラリ（ＶＭライブラリとも呼ばれる）２２２とを含む。遠隔クライアント１３１は、３Ｄアプリケーション２２１にアクセスすることができる。３Ｄ  ＡＰＩラッパー・ライブラリ２２２は、ブローカ１５０を呼び出して選択されたＧＰＵプロバイダ１４１にアクセスするプロキシ・グラフィックス・ライブラリである。
【００５３】
クラウド環境１１０内の選択されたＧＰＵプロバイダ１４１は、３Ｄ  ＡＰＩホスト２４１と３Ｄハードウェア２４２とを含む。ブローカ１５０は、ＶＭ／ＴＳセッション１２１と選択されたＧＰＵプロバイダ１４１との間のリソース割り当てを提供する。
【００５４】
選択されたＧＰＵプロバイダ１４１の仮想化された３Ｄハードウェア２４２は、ＶＭ／ＴＳセッション１２１における３Ｄ  ＡＰＩラッパー・ライブラリ２２２の形態のプロキシ・グラフィックス・ライブラリを介してアクセスされる。
【００５５】
遠隔クライアント１３１による３Ｄコンテンツへの遠隔アクセスは、予めレンダリング済みの２Ｄ画像を圧縮して、遠隔クライアント１３１の実施形態であるシンクライアント１３１にストリーミングすることによって、提供される。これらのコンポーネントの組み合わせは、クラウド環境内でホストされる３Ｄアプリケーションへの拡張可能な遠隔アクセスの問題を解決する。
【００５６】
３Ｄグラフィックス・ハードウェアは、表示するために３Ｄスクリーン記述を２Ｄ画像に変換する。この特徴を用いて、３Ｄシーンの２Ｄ画像を選択されたＧＰＵプロバイダ上に生成し、２Ｄ画像の圧縮されたストリームが遠隔クライアントに送信される。
【００５７】
説明されるシステムは、ブローカ・システムによって案内されるときに、最終的な画像データをＧＰＵプロバイダから遠隔クライアントに直接経路指定する能力を提供する。これによって、遠隔クライアントに送信されるようにＧＰＵプロバイダから戻される大量のレンダリング済み画像（その各々は、例えば１０２４×７６８ピクセルの非圧縮画像の場合には１フレームにつき３ＭＢであり、典型的には毎秒３０−６０フレーム（ｆｐｓ）で流れる、大規模なデータ・ブロックである）に起因する、仮想マシンのホスト・ステージにおいて形成されるネットワーク・ボトルネックという重大な問題が克服される。ブローカを用いて通信を方向付けして案内することによって、このボトルネックを回避することができるようになり、大規模な拡張性が実用的なものとなる。
【００５８】
説明されるシステムは、通常は３Ｄハードウェア・アクセラレーションにアクセスできない仮想マシン又は端末サービス・セッションへの３Ｄハードウェア・リソースの提供と、その３Ｄハードウェアによって生成される画像への双方向遠隔アクセスとの両方をカバーする。
【００５９】
説明される方法及びシステムは、全てのオペレーティング・システム及び全ての３Ｄアクセラレーテッド・グラフィックスＡＰＩ（ＯｐｅｎＧＬ及びＤｉｒｅｃｔ３Ｄなど（Ｄｉｒｅｃｔ３ＤはＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である））に適用可能である。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＶＭ（ＷｉｎｄｏｗｓはＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）がレンダリングのためにＬｉｎｕｘ（ＬｉｎｕｘはＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）ベースのＧＰＵプロバイダを使用し、その全てがいずれかの形態のシンクライアント上の遠隔セッションからアクセスされるといった異種環境において、運用することも可能である。さらに、説明される方法及びシステムは、ＧＰＵベースのアクセラレーションＡＰＩ（例えばＣＵＤＡ（Ｃｏｍｐｕｔｅ  Ｕｎｉｆｉｅｄ  Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＣＵＤＡは、ＮＶＩＤＩＡ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）／ＯｐｅｎＣＬ（ＯｐｅｎＣＬは、Ｋｈｒｏｎｏｓ  Ｇｒｏｕｐの商標である）／ＤｉｒｅｃｔＸ１１  Ｃｏｍｐｕｔｅなど）、並びに純粋な３ＤグラフィックスＡＰＩに、適用可能である。
【００６０】
説明される方法及びシステムによって、プラットフォーム非依存性も提供される。ラッパー・ライブラリ及びＧＰＵプロバイダによって３ＤグラフィックスＡＰＩ呼び出しを中立形式に修正できるようにすることで、オペレーティング・システムの異種構成も可能になる。これによって、どんなオペレーティング・システムも、他のいずれかのオペレーティング・システムを自分のグラフィックス・プロバイダとして用いて、レンダリングすることができるようになる。
【００６１】
説明される方法及びシステムはまた、Ｔｙｐｅ  １及びＴｙｐｅ  ２のハイパーバイザであっても、Ｍｉｃｒｏｓｏｆｔ  Ｔｅｒｍｉｎａｌ  Ｓｅｒｖｉｃｅｓ  Ｓｅｓｓｉｏｎｓであっても、いずれかの現行の仮想化技術に適用可能である。説明される方法及びシステムは、仮想マシンのセッションが関与する場合であろうと、端末サービス・セッションが関与する場合であろうと、同一の方式で運用される。
【００６２】
複数の遠隔クライアント接続プロトコル、例えばＶｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ（ＶＮＣ）及びＲｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ（ＲＤＰ）が、サポートされる。３Ｄシーンの最終的な２Ｄ画像は、別個のネットワーク・チャネルを介して戻され、遠隔クライアントの側で最終的に合成される。遠隔アクセスのために用いられる方法の特徴に関して、特定の依存性は存在しない。
【００６３】
最も重要なことは、説明される方法及びシステムを使用するアプリケーションを変更する必要がないことである。説明されるプロキシ・ラッパー・ライブラリは、プロセス全体がアプリケーションに対して完全に透明であることを保証する。
【００６４】
遠隔クライアント１３１は、クラウド環境１１０内でホストされる遠隔システム１２０に接続する。遠隔クライアント１３１は、遠隔的に動作している３Ｄアプリケーションと対話を行う。これは、クライアントの視点からは、事実上、ローカル・アプリケーションのように見える。
【００６５】
ＶＭ／ＴＳセッション１２１上でホストされる３Ｄアプリケーション２２１は、スタンドアロンのシステム上で動作しているかのように実行される。３Ｄグラフィックス呼び出しが行われるときに、３Ｄアプリケーション２２１は、３Ｄライブラリ（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ上のＯｐｅｎＧＬ３２．ＤＬＬ、又は、Ｌｉｎｕｘ上のｌｉｂＧＬ．ｓｏ）をロードしてグラフィックス機能呼び出しを行うことを試みる。これらの呼び出しは、通常は、ドライバを介して、ディスプレイ上でレンダリングするための適切な３Ｄハードウェアに経路指定される。その代わりに、説明されるシステム１００は、全ての潜在的なレンダリング呼び出しをインターセプトし、それらをプラットフォーム中立形式に変換し、適切な場所でそれらを実行するのに用いられる、ラッパー・ライブラリ２２２を含む。
【００６６】
ラッパー・ライブラリ２２２は、ネットワーク接続上でブローカ１５０と連絡を取る。ブローカ１５０は、ＧＰＵプロバイダ１４１−１４３（図１）の集合体に、適切なリソースについて問い合わせを行う。ブローカ１５０には、特定の要件、具体的には、遠隔クライアント１３１のＩＰアドレス又は予測されるＧＰＵメモリの要件などの情報を与えることができる。
【００６７】
ブローカ１５０は、この情報を、「ラウンドロビン」などの割り当て戦略又はリソース割り当て及び性能評価指標（例えば、ＧＰＵメモリ使用率、ＧＰＵ計算負荷、現在のＧＰＵコア温度など）に基づくより複雑な戦略とともに用いて、適切なＧＰＵプロバイダ１４１（図４におけるレンダリング・リソース１４１）を割り当てる（選択する）ことができる。適切なＧＰＵプロバイダが見つけ出されると、ライブラリ・ラッパー２２２は、適切な個々の選択されたＧＰＵプロバイダ１４１に接続するように命令される。
【００６８】
ブローカ１５０は、選択されたＧＰＵプロバイダ１４１に、遠隔クライアント１３１への直接接続を確立して完成画像を転送するように指示することができ、このようにして、ＶＭ／ＴＳセッション１２１をバイパスし、ホスト１２０においてネットワーク・ボトルネックが発生することを防止する。
【００６９】
この従来からのボトルネック（それによって、大量のデータがホストを通して経路指定されなければならない）を回避することによって、説明されるシステムをクラウド・スケールまで成長させることができる。これはまた、フレームの高速配信によって遅延を劇的に改善し、それによって、より双方向的で応答性の高いユーザ経験がもたらされる。
【００７０】
この接続が行われると、３Ｄアプリケーションは、通常通りレンダリング呼び出しを行う。これらの呼び出しは、ネットワーク上で、関連する選択されたＧＰＵプロバイダ１４１に転送される。高速ネットワーク・リンクによって、各々のレンダリング呼び出しを低遅延で遠隔的に行うことができるようになる。呼び出しをプラットフォーム中立形式に変換して、ＬｉｎｕｘベースのＧＰＵプロバイダを使用するＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅといった、システム内におけるオペレーティング・システムの異種構成を可能にすることができる。
【００７１】
選択されたＧＰＵプロバイダ１４１によって呼び出しが受信されると、これらの呼び出しは、選択されたＧＰＵプロバイダ１４１上で動作しているアプリケーションから発信されたかのように、ローカルの３Ｄハードウェアに送信される。その時点での３Ｄ画像フレームが完成すると、その完成した画像は、選択されたＧＰＵプロバイダ１４１から遠隔クライアント１３１に直接送信されるか、又はローカル表示のためにネットワークを介してＶＭ／ＴＳセッション１２１のラッパー・ライブラリ２２２に戻される。この通信は、ＶＭホスト１２０が、単に遠隔クライアント１３１に渡されるだけの大量の戻り画像データで忙殺されないように、ブローカ１５０によって管理される。
【００７２】
レンダリング済み３Ｄ画像は、帯域幅を節約するために必要に応じて圧縮され、ネットワーク・チャネル上で遠隔クライアント１３１に送信され、そこで復号されてローカルに表示される。既存の遠隔アクセス・ソフトウェア（例えば、ＶＮＣ又はＲＤＰ）を用いてメニュー及びウィンドウ・フレームといった２Ｄデータを処理し、説明されるコンポーネントが全ての３Ｄコンテンツを処理することができる。最終的な３Ｄ画像は、通常通りに表示される２Ｄコンテンツとシームレスに統合される。
【００７３】
ユーザは、マウス及びキーボード・イベントを遠隔クライアント１３１から遠隔３Ｄアプリケーション２２１に送信し、それらのイベントは、そこで適切に実行される。ユーザの入力に応答して、さらに画像が生成され、戻される。画像圧縮（インターネット・ビデオ・ストリーミングと同様のもの）及び適度なネットワーク帯域幅を用いて、クラウド・コンピューティングの利点を維持したまま、３Ｄアプリケーションとの完全な双方向アクセスを達成することができる。
【００７４】
遠隔クライアント１３１が切断されるか、３Ｄアプリケーション２２１が終了すると、選択されたＧＰＵプロバイダ１４１のリソースが解放され、ブローカ１５０には、これらのリソースが完全に利用可能になったことを示す信号が送られる。
【００７５】
例えば管理目的などで、ローカル・コンソール・アクセス（即ち、ＶＭホスト・マシンからの物理アクセス）が仮想マシンに求められる場合には、最終的な画像は、ローカル・コンソール上に表示することができるように、ＶＭを通って経路指定されなければならない。典型的なクラウド展開においては、殆どのユーザは遠隔ユーザであり、従って、ボトルネックの発生が回避されるため、選択されたＧＰＵプロバイダ１４１から直接接続するシステムが好ましいが、これはローカル・アクセスを容易にするものではない。ブローカ１５０は、クラウド・システム内にシームレスに存在する選択肢と、遠隔クライアント１３１へのＶＭ１２１を通る経路指定と選択されたＧＰＵプロバイダ１４１からの直接接続との間で交互に特定の画像ストリーム・インスタンスを必要に応じて切り替える選択肢との両方を可能にする。
【００７６】
仮想マシン１２１と選択されたＧＰＵプロバイダ１４１との間の接続は、ＶＭ１２１が異なるホスト１２０に移動する場合であってもブローカ１５０によって維持されるため、動作中の仮想マシンのライブ・マイグレーションもまた、ブローカ１５０によって容易になる。これは、説明されるコンピュータとグラフィックス・リソースとの分離がなければ不可能であろう。
【００７７】
図３及び図４を参照すると、説明される方法における接続のフロー３００が示される。図３は、接続ステップを伴うフロー図を示す。図４は、図１及び図２において導入されたコンポーネントの間の接続ステップを示す。
【００７８】
フロー３００は、遠隔クライアント１３１が、ＶＭ１２１に接続する３０１ことと、仮想化された３Ｄライブラリ２２２（ＶＭライブラリと呼ばれる）を用いる３Ｄアプリケーション２２１を起動する３０２こととを含む。ＶＭライブラリ２２２は、ブローカ１５０に接続する３０３。ブローカ１５０は、利用可能な３Ｄグラフィックス・レンダリング・リソース１４１−１４４を評価し３０４、その１つ１４１をＶＭライブラリ２２２に割り当てる３０５。ＶＭライブラリ２２２と選択された３Ｄグラフィックス・レンダリング・リソース１４１とは、グラフィカル呼び出しを送信するために、互いに接続される３０６。１つの選択肢においては、最終的なレンダリング済み画像は、遠隔クライアント１３１に送信されるために、ＶＭライブラリ２２２に戻される３０７。別の選択肢においては、選択された３Ｄグラフィックス・レンダリング・リソース１４１は、遠隔クライアント１３１に直接接続し、最終的なレンダリング済み画像は、この接続上で送信される３０８。ブローカは、ＶＭライブラリからの要求に応じて（典型的には、遠隔クライアントの要求に応答して）、接続トポロジーを変更することができる。
【００７９】
図５及び図６を参照すると、フロー図４００、４５０は、図５においてはリソースの監視及びセットアップ中の、図６においてはランタイムの間の、ブローカの操作を示す。
【００８０】
図５を参照すると、フロー図４００は、ブローカの接続監視スレッド４０１を示す。ホスト・ベースの３Ｄライブラリからの接続を待つ４０２。接続ハンドラ・スレッドが、入ってくるスレッドごとに起動される４０３。監視スレッドは、ループする４０４。
【００８１】
ブローカのリソース監視スレッド４０５が開始される。潜在的な３Ｄグラフィックス・レンダリング・リソースを問い合わせる４０６。リソースが利用可能であるかどうかが判定される４０７。利用可能ではない場合には、方法は、潜在的な３Ｄグラフィックス・レンダリング・リソースの問い合わせ４０６にループして戻る。リソースが利用可能である場合には、利用可能性のレベルに基づいて、リソース優先順位キュー４０９を更新する４０８。方法は、引き続き、潜在的な３Ｄグラフィックス・レンダリング・リソースを問い合わせる４０６。
【００８２】
接続ハンドリング・スレッド４１０が示される。リソース優先順位キュー４０９から、選択される３Ｄグラフィックス・レンダリング・リソースが選ばれる４１１。遠隔クライアントについて追加の接続情報が提供されているかどうかが判定される４１２。提供されている場合には、選択された３Ｄグラフィックス・レンダリング・リソースは、遠隔クライアントに独立した接続を行って画像を戻すように命令される４１３。
【００８３】
遠隔クライアントについて追加の接続情報が提供されていない場合には、ホスト・ベースの３Ｄライブラリは、選択された３Ｄグラフィックス・レンダリング・リソースに接続してレンダリングを開始するように命令される４１４。次いで、図６において説明されるランタイム操作が実行される。
【００８４】
図６を参照すると、ブローカによるランタイム操作４５１が示される。ブローカは、ホスト・ベースの３Ｄライブラリ及び選択された３Ｄグラフィックス・レンダリング・リソースへの接続を維持する４５２。レンダリング・モード変更又はいずれかの当事者（遠隔クライアント、ＶＭ、レンダリング・リソース）の切断について、監視が行われる４５３。モード変更があるかどうかが判定される４５４。切断が要求されている４５５には、全ての接続が終了され、３Ｄグラフィックス・レンダリング・リソースは除去される（即ち、当事者がクラッシュした場合）４５６。
【００８５】
モード変更が要求されている場合４５７には、現時点で画像を遠隔クライアントに直接送信しているかどうかが判定される４５８。送信している場合には、選択された３Ｄグラフィックス・レンダリング・リソースは、確立された接続上で画像をホスト・ベースの３Ｄライブラリに送信するように命令される４５９。ホスト・ベースの３Ｄライブラリは、フレームを受信して、それらのフレームを新たな接続上で遠隔クライアントに送信するように命令される。次いで、方法は、ループして４６０、監視を続ける４５３。
【００８６】
その時点で画像を遠隔クライアントに直接送信していないと判定された４５８場合には、選択された３Ｄグラフィックス・レンダリング・リソースは、遠隔クライアントに直接接続してメッセージの送信を開始するように命令される４６１。ホスト・ベースの３Ｄライブラリは、３Ｄグラフィックス・レンダリング・リソースからそれ以上のフレームを求めない。次いで、方法は、ループして４６２、監視を続ける４５３。
【００８７】
図７を参照すると、フロー図５００は、ホストにおけるＶＭ又はＴＳセッションで行われる方法を示す。ＶＭ又はＴＳセッションにおいて、３Ｄアプリケーションへの遠隔クライアントの接続要求が受信される５０１。ＶＭ／ＴＳセッションにおいて、アプリケーションについてライブラリ・ラッパーが起動される５０２。ライブラリ・ラッパーがブローカに接続する５０３。ライブラリ・ラッパーは、ブローカから３Ｄグラフィックス・レンダリング・リソースの割り当てを受信する５０４。ライブラリ・ラッパーは、割り当て済みの選択された３Ｄグラフィックス・レンダリング・リソースに接続する５０５。１つの可能なステップにおいては、ライブラリ・ラッパーは、画像を受信し５０６、それらの画像を遠隔クライアントに転送する。代替的なステップにおいては、ライブラリ・ラッパーは、直接通信のためのクライアントの詳細を、選択された３Ｄグラフィックス・レンダリング・リソースに提供する５０７。
【００８８】
ＧＰＵの計算能力をクラウド内で効果的に仮想化する能力は、各々のＧＰＵが、標準的なＣＰＵの何百倍も計算能力が高い場合が多く、わずかな電力しか消費せず、費用も僅かであるため、極めて有益である。３Ｄグラフィックス・アクセラレーションの特定の場合においては、この仮想化によって、写真のようにリアルな描写のゲーム、映画、ＣＡＤなどに至るまであらゆるものを実質的に可能とする最も高価な専用グラフィックス端末に匹敵する、いずれかのデバイス（例えば電話）上のグラフィック機能を、以前は不可能であった場合でも動作させることができるようになる。
【００８９】
クラウド・データ・センタは、仮想システム画像を動作させる汎用サーバ・マシンの組と、汎用サーバに代わって３Ｄレンダリングのみを行うグラフィックス・サーバの組と、を含む。
【００９０】
３Ｄグラフィックス・アクセラレーションの作業負荷のためのＧＰＵ仮想化に伴って新たな種類の問題が導入され、特定のパラメトリック負荷分散及び経路指定などといった特定の問題が生じる。
【００９１】
説明されるこのシステムはまた、データ交換の重複をなくすことによってどのようにアプリケーションを効果的で遠隔的に視覚化して用いるかという点と、ブローカを用いてグラフィック・ハードウェア・リソースの使用をどのように選択して分散させるかという点に、焦点を合わせている。説明されるシステムは、複数のシステム／アプリケーション間で３Ｄグラフィックス・レンダリング・リソースの共有を可能にする。
【００９２】
説明されるシステムはまた、３Ｄ呼び出しをエンコードしてストリームにすることと、高速ネットワーク・インターフェースを介してそのストリームを異なるマシンに転送することとを含む。
【００９３】
本発明は、ＶＭにおいて、画像ストリームの多数のインスタンスを経路指定しながら、必要なときには依然としてローカル・アクセスができるようにすることから発生するボトルネックの問題を解決する。
【００９４】
説明されるシステムの利点は、クラウド・コンピューティング環境内で動作しているアプリケーションにアクセラレーテッド３Ｄグラフィックスを提供することである。この環境は、従来、２Ｄアプリケーション又はソフトウェアのみの低速な３Ｄレンダリングに限定されていた。説明されるシステムを用いることによって、通常は３Ｄハードウェアにアクセアスできない仮想マシン及び端末サービス・セッションのインフラストラクチャの限界が克服される。説明されるシステムは、適切なグラフィックスＡＰＩの代わりにプロキシ・ラッパー・ライブラリを用いることによって、アプリケーションの修正も、自らがクラウド環境で動作しているというアプリケーション側の認識も、全く必要としない。３Ｄ画像を圧縮して遠隔クライアントに送信することによって、クラウド対応アプリケーションとの遠隔的な対話ができるようになる。
【００９５】
３Ｄアプリケーションへの遠隔アクセスは、遠隔クライアント・デバイスのために提供され、遠隔クライアント・デバイス自体にはいかなる３Ｄハードウェアも必要としない。これにより、３Ｄアプリケーションを動作させるクラウドによる手法が実用的なものとなり、ハードウェアが集中化され、これらのリソースの最大の使用効率が保証される。遠隔クライアントは、自らのアクセス・デバイスの能力を遥かに超えて、アプリケーション及びデータと対話して連動することができる。集中化されたアプリケーションによって、クラウドの利点である構成及びライセンス共有を活用することが可能になる。
【００９６】
本手法の別の利点は、拡張性である。ＧＰＵプロバイダのホストは、仮想マシン／端末サービス・セッションをホストしているハードウェアに、必ずしも結合されなくてもよい。
【００９７】
従って、多数のＶＭ又はセッションを単一の物理ホスト上でホストすることができ、それらのうちハードウェア・アクセラレーテッド３Ｄグラフィックスを必要とするもののみが、そうしたリソースを用いることになる。単一の大型ホスト・マシンは、典型的には、何十何百というＶＭ／セッションをホストすることができるが、最大で１つ又は２つのグラフィックス・アダプタしか保持できない場合がある。このリソースのボトルネックは、数多くのＶＭがグラフィックス・ハードウェアの使用を試みている場合には、システムの性能を急速に低下させることになる。
【００９８】
説明されるシステムにおいては、グラフィックス・ハードウェアはホスト・マシンから完全に切り離され、ブローカを用いて、任意の多くのＧＰＵプロバイダを利用可能にしてプリケーションの３Ｄグラフィックス要件を満たすことができる。ＧＰＵプロバイダは、ブローカを用いて、負荷分散ベースで割り当てることができる。さらに、グラフィックス・ハードウェアは、仮想マシン／端末サービス・セッションをホストしているハードウェアから完全に分離することができるので、既存のインフラストラクチャを再構成又は代替することなく追加容量を付加することができる。
【００９９】
最後に、遠隔セッション内で動作しているラッパー・ライブラリはまた、必要に応じて、ＶＭ／ＴＳセッションのローカルのデスクトップに３Ｄ画像を直接書き込むことができる。これは、例えば、遠隔アクセスの有無に関わらず、ローカル・コンソール・アクセスが行われている場合に有用である。説明されるシステムのこの部分を用いて、３Ｄ遠隔アクセスの使用に関わりなく、単純に、ＧＰＵアクセラレーションを仮想マシンに提供することができる。これは、幾つかの仮想マシンをローカルにホストすることができ、これらのＶＭを３Ｄハードウェアにアクセスさせることを望むワークステーションにとって、有用である。この構成においては、全てのコンポーネントを単一の物理マシン内に配置することができる。このような場合には、「遠隔クライアント」は、３Ｄハードウェアから独立しているが単一の物理マシン内にある仮想マシン上に設けることができる。
【０１００】
説明されるシステムは、ブローカ機構を用いて画像ストリームの経路指定を動的に制御することによって、以下の事項をもたらす。
・遠隔クライアントの要件とその時点で利用可能なハードウェア能力及び性能との組み合わせによる、リソース割り当て及びスケジューリングの改善
・ＶＭ／ＴＳセッションのホストにおける従来のボトルネックである、大容量の画像データを単一の点を通して経路指定しなければならないことに対する解決策と、それによりクラウド・レベルの拡張性が可能となること
・グラフィカル・アプリケーションを動作させることが可能な間に、ＶＭホストを通して行われる、又はホスト間の仮想マシンの直接接続ライブ・マイグレーションを通して行われる、個々のＶＭ／ＴＳセッション及びアプリケーションによる画像ストリームの動的スイッチングの遅延特性の改善
【０１０１】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書において挙げられる教示の実装はクラウド・コンピューティング環境に限定されないことが、前もって理解される。それどころか、本発明の実施形態は、現在既知の又は後に開発される他のいずれかのタイプのコンピューティング環境とともに実装することが可能である。
【０１０２】
クラウド・コンピューティングは、最小限の管理努力又はサービス・プロバイダとの対話で迅速に供給及び解放することができる構成変更可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス）の共有プールに対するオンデマンドの便利なネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、及び少なくとも４つの展開モデルを含むことができる。
【０１０３】
特徴は、以下の通りである。
・オンデマンドのセルフサービス：クラウド・コンシューマは、サーバ時間及びネットワーク・ストレージといったコンピューティング能力を、必要に応じて、人間がサービスのプロバイダとやりとりする必要なく自動的に、一方的に供給することができる。
・広範なネットワーク・アクセス：能力は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、及びＰＤＡ）による使用を促進する標準的な機構を通じてアクセスされる。
・リソースのプール化：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、複数のコンシューマにサービスを提供するようにプールされ、異なる物理及び仮想リソースは、要求に応じて動的に割り当て及び再割り当てされる。コンシューマは、一般に、提供されるリソースの正確な場所に関する制御又は知識を有していないが、高いレベルの抽象概念（例えば、国、州、又はデータセンタ）で場所を指定できる場合があるという点で、場所独立ということができる。
・迅速な弾力性：能力は、迅速且つ弾力的に、場合によっては自動的に供給して素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとっては、供給するために利用可能な能力は、無制限に見えることが多く、いつでもどんな量でも購入することができる。
・計測されるサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント）に適した何らかの抽象化のレベルで計量能力を活用することによって、リソース使用を自動的に制御及び最適化する。リソース使用は、利用されるサービスのプロバイダとコンシューマの両方にとって透明性をもたらすように、監視し、制御し、報告することができる。
【０１０４】
サービス・モデルは以下の通りである。
・サービスとしてのソフトウェア（ＳａａＳ）：コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース（例えば、ウェブ・ベースの電子メール）を通じて、種々のクライアント・デバイスからアクセス可能である。限定されたユーザ特有のアプリケーション構成設定を可能な例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション能力をも含む基盤となるクラウド・インフラストラクチャを管理又は制御しない。
・サービスとしてのプラットフォーム（ＰａａＳ）：コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語及びツールを用いて作成される、コンシューマが作成又は獲得したアプリケーションを、クラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む基盤となるクラウド・インフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成を、制御する。
・サービスとしてのインフラストラクチャ（ＩａａＳ）：コンシューマに提供される能力は、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースを供給することであり、ここで、コンシューマは、オペレーティング・システム及びアプリケーションを含むことができる任意のソフトウェアを展開して動作させることができる。コンシューマは、基盤となるクラウド・インフラストラクチャを管理及び制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーション、及び場合によっては選択されたネットワーク・コンポーネント（例えば、ホストのファイアウォール）の限定的な制御を、制御する。
【０１０５】
展開モデルは以下の通りである。
・プライベート・クラウド：クラウド・インフラストラクチャは、ある組織のためだけに操作される。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスで存在することができる。
・コミュニティ・クラウド：クラウド・インフラストラクチャは、幾つかの組織によって共有され、関心事項（例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアン上の考慮事項）を共有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、それらの組織又は第三者によって管理することができ、オンプレミス又はオフプレミスで存在することができる。
・パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループが利用できるようにされており、クラウド・サービスを販売する組織によって所有される。
・ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティを残しているが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術（例えば、クラウド間の負荷分散のためのクラウド・バースティング）によって結び付けられている２つ又はそれより多いクラウド（プライベート、コミュニティ、又はパブリック）の組み合わせである。
【０１０６】
クラウド・コンピューティング環境は、サービス提供を中心としており、無国籍性、低い結合度、モジュール性、及び意味的相互運用性に焦点を合わせている。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【０１０７】
ここで図８を参照すると、クラウド・コンピューティング・ノードの例の概略図が示される。クラウド・コンピューティング・ノード６００は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書において説明される本発明の実施形態の使用又は機能の範囲に関していずれかの限定を示唆することを意図するものではない。いずれにせよ、クラウド・コンピューティング・ノード６００は、上述された機能のいずれかを実装及び／又は実施することができる。
【０１０８】
クラウド・コンピューティング・ノード６００内には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能なコンピュータ・システム／サーバ６１０が存在する。コンピュータ・システム／サーバ６１０とともに用いるのに適したものとすることができる周知のコンピューティング・システム、環境、及び／又は構成の例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シンクライアント、シッククライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能コンシューマ・エレクトロニクス、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上記のシステム又はデバイスなどのいずれかを含む分散型クラウド・コンピューティング環境を含むが、これらに限定されるものではない。
【０１０９】
コンピュータ・システム／サーバ６１０は、コンピュータ・システムによって実行されているプログラム・モジュールなどのコンピュータ・システム実行可能命令を一般的な背景として、説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施する、又は特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ６１０は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが行われる分散型クラウド・コンピューティング環境内で実施することができる。分散型クラウド・コンピューティング環境においては、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔の両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【０１１０】
図８に示されるように、クラウド・コンピューティング・ノード６００内のコンピュータ・システム／サーバ６１０は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム／サーバ６１０のコンポーネントは、１つ又は複数のプロセッサ又は処理ユニット６１１、システム・メモリ６１２、及び、システム・メモリ６１２を含む種々のシステム・コンポーネントをプロセッサ６１１に結合するバス６１３を含むことができるが、これらに限定されるものではない。
【０１１１】
バス６１３は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び、種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスを含む。
【０１１２】
コンピュータ・システム／サーバ６１０は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ６１０がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不可能媒体の両方とを含む。
【０１１３】
システム・メモリ６１２は、ランダム・アクセス・メモリ（ＲＡＭ）６１４及び／又はキャッシュ・メモリ６１５といった、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ６１０は、他の取り外し可能／取り外し不可能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不可能の不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム６１６を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピィ・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、各々は、１つ又は複数のデータ媒体インターフェースによってバス６１３に接続することができる。以下でさらに示され、説明されるように、メモリ６１２は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【０１１４】
限定ではなく例として、メモリ６１２内に、プログラム・モジュール６１８の組（少なくとも１つ）を有するプログラム／ユーティリティ６１７、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを、格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらのいくつかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール６１８は、一般に、本明細書において説明される本発明の実施形態の機能及び／又は方法を実行する。
【０１１５】
コンピュータ・システム／サーバ６１０はまた、キーボード、ポインティング・デバイス、ディスプレイ６２０などといった１つ又は複数の外部デバイス６１９、ユーザがコンピュータ・システム／サーバ６１０と対話することを可能にする１つ又は複数のデバイス、及び／又は、コンピュータ・システム／サーバ６１０が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することができる。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース６２１を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ６１０は、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと、ネットワーク・アダプタ６２２を介して通信することができる。示されるように、ネットワーク・アダプタ６２２は、コンピュータ・システム／サーバ６１０の他のコンポーネントと、バス６１３を介して通信する。図示されないが、コンピュータ・システム／サーバ６１０とともに他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例として、限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが挙げられる。
【０１１６】
ここで図９を参照すると、例示的なクラウド・コンピューティング環境７００が示される。示されるように、クラウド・コンピューティング環境７００は、例えば携帯情報端末（ＰＤＡ）又は携帯電話７２１、デスクトップ・コンピュータ７２２、ラップトップ・コンピュータ７２３、及び／又は自動車コンピュータ・システム７２４などといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスが通信することができる、１つ又は複数のクラウド・コンピューティング・ノード７１０を含む。ノード７１０は、互いに通信することができる。これらは、プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくは上述のハイブリッド・クラウド、又はこれらの組み合わせなどの１つ又は複数のネットワーク内で、物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境７００は、インフラストラクチャ、プラットフォーム、及び／又はソフトウェアを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、提供できるようになる。コンピューティング・デバイス７２１−７２４のタイプは単なる例示であるように意図されており、コンピューティング・ノード７１０及びクラウド・コンピューティング環境７００は、あらゆるタイプのコンピュータ化された装置、及び、あらゆるタイプのネットワーク及び／又はネットワーク・アドレス指定可能な接続（例えば、ウェブ・ブラウザを用いて）と通信できることが理解される。
【０１１７】
ここで図１０を参照すると、クラウド・コンピューティング環境８００によって提供される機能抽象化層の組が示される。図１０に示されるコンポーネント、層、及び機能は単なる例示であるように意図されており、本発明の実施形態はそれらに限定されないことを予め理解されたい。示されるように、以下の層及び対応する機能が提供される。
【０１１８】
ハードウェア及びソフトウェア層８１０は、ハードウェア及びソフトウェアのコンポーネントを含む。ハードウェア・コンポーネントの例として、ＩＢＭ（登録商標）ｚＳｅｒｉｅｓ（登録商標）システムを一例とするメインフレームと、ＩＢＭ  ｐＳｅｒｉｅｓ（登録商標）システムを一例とするＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバと、ＩＢＭ  ｘＳｅｒｉｅｓ（登録商標）システムと、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（登録商標）システムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が挙げられる。ソフトウェア・コンポーネントの例として、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（登録商標）アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、ＩＢＭ  ＤＢ２（登録商標）データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが挙げられる。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、及びＤＢ２は、世界中の多数の管轄区域において登録されているＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標である。）
【０１１９】
ハードウェア及びソフトウェア層８１０は、ＶＭ／ＴＳセッションをホストする一般的なサーバとグラフィックス・サーバ又はＧＰＵプロバイダとが配置される場所である。
【０１２０】
仮想化層８２０は、仮想エンティティの以下の例、即ち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる、抽象化層を提供する。
【０１２１】
一例においては、管理層８３０は、以下で説明される機能を提供することができる。リソース供給は、クラウド・コンピューティング環境内でタスクを行うのに利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格設定は、クラウド・コンピューティング環境内でリソースが用いられる際のコスト追跡と、これらのリソースの消費にかかる課金又は請求とを提供する。１つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクについての識別情報の検証と、データ及び他のリソースの保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント（ＳＬＡ）プランニング及びフルフィルメントは、ＳＬＡによって将来の必要性が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【０１２２】
管理層８３０は、説明されるシステム内でグラフィック・リソースを割り当てるためのブローカ機能を提供することができる。
【０１２３】
本発明は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態、又は、ソフトウェア要素とハードウェア要素の両方を含む実施形態の形態を取ることができる。好ましい一実施形態においては、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアとして実装される。
【０１２４】
本発明は、コンピュータ若しくはいずれかの命令実行システムによって用いられるか又はこれらと関連して用いられるプログラム・コードを提供するコンピュータ使用可能媒体又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形態を取ることができる。この説明の目的に関して、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、若しくはデバイスによって用いられるか又はこれらと関連して用いられるプログラムを収容し、格納し、通信し、伝搬し、又は搬送することができるいずれかの装置とすることができる。
【０１２５】
媒体は、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム（又は装置若しくはデバイス）、又は伝搬媒体とすることができる。コンピュータ可読媒体の例として、半導体又は固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、剛性磁気ディスク及び光ディスクが挙げられる。現在の光ディスクの例として、コンパクトディスク−読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−読み出し／書き込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤが挙げられる。
【０１２６】
本発明の範囲から逸脱することなく、上記に改善及び修正を行うことができる。
【図１】
0005808424.tif 000002
【図２】
0005808424.tif 000003
【図３】
0005808424.tif 000004
【図４】
0005808424.tif 000005
【図５】
0005808424.tif 000006
【図６】
0005808424.tif 000007
【図７】
0005808424.tif 000008
【図８】
0005808424.tif 000009
【図９】
0005808424.tif 000010
【図１０】
0005808424.tif 000011