(57)【要約】【解決手段】方法は、クライアントから、仮想マシンにおいて利用可能な仮想サービスを制御することを求める接続要求を受け取るステップを含む。要求は、クライアントの接続要件を記述する複数の接続パラメータを含み、画像プロセッサアルゴリズムを装備する仮想マシンにおいて受け取られる。接続パラメータは、特定の仮想マシンを識別するために画像プロセッサアルゴリズムを使用して照会される。仮想メモリに位置する識別された仮想マシンのためのフレームバッファデータがハイパーバイザを介して直接アクセスされ、読み取られる。フレームバッファデータは、画像プロセッサアルゴリズムを使用して複数の画像データパケットへと処理され、クライアントと関連付けられた表示装置上で提示するためにクライアントへ送信される。画像データパケットの文法は、クライアントに合わせてカスタマイズされ、特定の仮想マシンについての仮想マシンディスプレイの画像を表す。【選択図】図２−１
2013512512.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でクライアントにサービスを提供するための方法であって、
前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる、特定の仮想マシン上で利用可能な仮想化コンピュータサービスを制御することを求める接続要求を受け取るステップと、
前記クライアントからの前記要求を満たす前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別するために前記画像プロセッサアルゴリズムを使用して前記接続パラメータを照会するステップと、
ハイパーバイザを介して仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを複数の画像データパケットへと処理するステップと、
前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信するステップと
を含む方法。
【請求項２】
前記画像データパケットが、画像プロセッサアルゴリズムに関連したパッケージング情報とネットワーキングに関連したパッケージング情報とを含む請求項１に記載の方法。
【請求項３】
前記フレームバッファデータを処理する前記ステップが、
前記特定の仮想マシンの前記フレームバッファデータを解析してコンテキストを判定するステップと、
前記解析に基づいて前記特定の仮想マシンの前記フレームバッファデータに適切なコンテキスト情報を関連付けるステップと、
前記特定の仮想マシンの前記フレームバッファデータを前記コンテキスト情報と一緒に記憶するステップと
をさらに含む請求項１に記載の方法。
【請求項４】
前記特定の仮想マシンの前記フレームバッファデータを周期的にスキャンするステップと、
スキャンされたフレームバッファデータを前記特定の仮想マシンのための前記記憶されたフレームバッファデータと比較することによって変更領域を判定するステップと、
前記変更領域と関連付けられた前記コンテキスト情報を記憶することを含む、前記変更領域を解析および送信のために前記特定の仮想マシンと関連付けられた時間ベースの記憶アレイに記憶するステップと
をさらに含む請求項３に記載の方法。
【請求項５】
前記フレームバッファデータをスキャンする前記ステップが、
前記特定の仮想マシンの前記フレームバッファデータのリフレッシュの状況を識別する、前記特定の仮想マシンの前記フレームバッファデータと関連付けられたｓｙｎｃ信号を照会するステップと、
前記ｓｙｎｃ信号の前記照会に基づいて前記特定の仮想マシンの前記フレームバッファデータの前記スキャンを行うステップと
をさらに含む請求項４に記載の方法。
【請求項６】
前記特定の仮想マシンのための前記フレームバッファデータのリフレッシュの前に前記ｓｙｎｃ信号を設定するステップと、
前記特定の仮想マシンのための前記フレームバッファデータの前記リフレッシュが完了し次第、前記ｓｙｎｃ信号をリセットするステップと
をさらに含む請求項５に記載の方法。
【請求項７】
前記仮想マシンにおける前記フレームバッファデータの前記周期的スキャンが、前記仮想マシンにおける前記フレームバッファデータのリフレッシュレート、または前記クライアントと関連付けられた前記接続パラメータによって駆動されるレートの１つで行われる請求項５に記載の方法。
【請求項８】
前記仮想マシンにおける前記フレームバッファデータをスキャンする前記ステップが、
前記特定の仮想マシンと関連付けられたグラフィックスドライバから受け取られる、前記特定の仮想マシンの前記フレームバッファデータの変更を知らせる通知を受け取るステップと、
前記通知に基づいて前記特定の仮想マシンの前記フレームバッファデータをスキャンするステップと
をさらに含む請求項５に記載の方法。
【請求項９】
前記読み取られたフレームバッファデータを処理する前記ステップが、
前記時間ベースの記憶アレイを解析して前記フレームバッファデータ内の高アクティビティ領域を判定するステップと、
前記フレームバッファデータの前記高アクティビティ領域内の連続したアクティビティ領域を判定するステップと、
前記連続したアクティビティ領域内の伝送法を適用しやすい特徴を前記時間ベースの記憶アレイ内のフレームバッファデータのグループへとグループ化するステップと、
前記クライアントと関連付けられた前記接続パラメータに基づいて、前記時間ベースの記憶アレイから時間ベースのフレームバッファ・データ・ストリームにおいて前記クライアントへ、前記連続したアクティビティ領域のグループを、前記フレームバッファデータと関連付けられた導出コンテキスト情報を含めて送信するステップと
をさらに含む請求項４に記載の方法。
【請求項１０】
前記画像データパケットを送信する前記ステップが、
前記接続パラメータに基づいて前記クライアントと関連付けられた前記表示装置との互換性を有するフォーマットを判定するステップと、
前記フレームバッファデータと関連付けられた前記コンテキストに基づいて、前記フレームバッファデータを、前記クライアントと関連付けられた前記表示装置との互換性を有する前記フォーマットへ変換する際に使用される１つまたは複数の変換法を識別するステップと、
前記フレームバッファデータを、前記１つまたは複数の変換法を使用して、前記識別されたフォーマットに従った、前記フレームバッファデータと関連付けられた前記コンテキスト情報を含む画像データパケットへと変換するステップと、
前記フォーマットされた画像データパケットを、前記クライアントの前記表示装置においてレンダリングするために前記クライアントへ送信するステップと
をさらに含む請求項９に記載の方法。
【請求項１１】
前記フレームバッファデータの変更領域と関連付けられた１つまたは複数の特性を検査するステップと、
前記識別された変換法を使用し、前記１つまたは複数の特性に基づいて前記変更領域と関連した前記フレームバッファデータの部分を抽出するステップと、
前記識別された変換法を使用して、ビデオクリップである前記フレームバッファデータの前記抽出された部分を、前記フレームバッファデータの前記コンテキスト情報を含む帯域外ストリームとして前記クライアントへ送信するステップと
をさらに含む請求項９に記載の方法。
【請求項１２】
前記クライアントと関連付けられた前記表示装置における変更を識別する、前記クライアントと関連付けられた接続パラメータへの変更を動的に検出するステップと、
前記クライアントにおいて検出された前記接続パラメータへの前記変更に基づいて、前記特定の仮想マシンの前記フレームバッファデータを動的に再サンプリングし、適切な画像データパケットへとサイズ変更し、前記クライアントの前記表示装置における前記フレームバッファデータのレンダリングを可能にするステップと
をさらに含む請求項９に記載の方法。
【請求項１３】
それぞれが別個の種類のものである、前記クライアントと関連付けられた複数の表示装置を検出するステップと、
前記クライアントの各種の表示装置との互換性を有するフォーマットを判定するステップと、
前記１つまたは複数の変換法を使用して、それぞれが前記クライアントと関連付けられた特定の種類の表示装置との互換性を有する前記フォーマットを使用して前記フレームバッファデータを変換することによって生成され、それぞれが前記フレームバッファデータと関連付けられたコンテキスト情報を含む画像データパケットの複数のセットを生成するステップと、
前記画像データパケットの各セットを、前記クライアントの前記個々の表示装置においてレンダリングするために前記クライアントへ送信するステップと
をさらに含む請求項９に記載の方法。
【請求項１４】
各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするために割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも１画素によって定義される請求項１に記載の方法。
【請求項１５】
前記フレームバッファデータが前記仮想マシンのオペレーティングシステムによって作成され、前記フレームバッファデータへのアクセスが、前記クライアントと前記仮想マシンとの間のインターフェースを提供するハイパーバイザによって提供される請求項１に記載の方法。
【請求項１６】
ネットワーク上でクライアントにサービスを提供するための方法であって、
前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる、仮想化コンピュータサービスを制御することを求める接続要求を受け取るステップと、
それぞれが別個の種類のサービスをホストするサービス層の中の要求された種類のサービスを提供する特定のサービス層と、前記クライアントからの前記接続要求を満たす前記仮想化コンピュータサービスを提供するための前記特定のサービス層内の特定の仮想マシンとを識別するために前記画像プロセッサアルゴリズムを使用して前記接続パラメータを照会するステップと、
前記特定の仮想化コンピュータサービスを提供する前記特定のサービス層に接続するステップと、
前記特定のサービス層内のハイパーバイザを介して仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記識別されたサービス層内の前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを複数の画像データパケットへと処理するステップと、
前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信するステップと
を含む方法。
【請求項１７】
各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも１画素によって定義される請求項１６に記載の方法。
【請求項１８】
前記クライアントによって要求された新しい仮想化コンピュータサービスを定義する前記クライアントにおける接続パラメータの変更を検出するステップと、
前記識別された仮想マシンへの前記接続を切断するステップと、
前記クライアントによって要求された前記新しい仮想化コンピュータサービスを提供する特定の新しい仮想マシンを識別するために、前記画像プロセッサアルゴリズムを使用して前記変更された接続パラメータを照会するステップと、
前記変更された接続パラメータの前記照会に基づいて、前記特定の新しい仮想マシンと関連付けられた仮想メモリ内の所定の位置における前記特定の新しい仮想マシンのためのフレームバッファデータへのアクセスを可能にする前記特定の新しい仮想マシンへの接続を確立するステップと、
前記特定の新しい仮想マシンと関連付けられた仮想メモリ内の前記所定の位置から、前記特定の仮想マシンのための仮想メモリ内の前記所定の位置から読み取られ、前記画像プロセッサアルゴリズムを使用した送信と前記クライアントの表示装置上での提示とのために、前記クライアントに特有のものであり、前記新しい仮想化コンピュータサービスが実行されている前記新しい仮想マシンと関連付けられた特定の新しい仮想ディスプレイの画像を表す複数の画像データパケットへと処理される、前記特定の新しい仮想マシンのための前記フレームバッファデータにアクセスするステップと
をさらに含む請求項１６に記載の方法。
【請求項１９】
前記接続を切断する前記ステップが前記識別されたサービス層から切断するステップをさらに含む請求項１８に記載の方法。
【請求項２０】
ネットワーク上でクライアントにサービスを提供するための方法であって、
複数の仮想マシンが実行されているハイパーバイザ上で実行されている少なくとも１台の仮想マシン上で画像プロセッサアルゴリズムを提供するステップと、
前記少なくとも１台の仮想マシンの前記画像プロセッサアルゴリズムにおいて、前記クライアントから受け取られた接続要求を処理して、前記クライアントと関連付けられた接続要件を定義する複数の接続パラメータと、前記接続要求を満たすことのできる仮想化コンピュータサービスを有する特定の仮想マシンとを識別するステップと、
前記ハイパーバイザを介して仮想メモリ内の所定の位置から、前記仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを、前記読み取られたフレームバッファデータと関連付けられたコンテキスト情報を含む複数の画像データパケットへと処理するステップと、
前記クライアントと関連付けられた表示装置上で提示するために、前記クライアントに特有のものであり、前記ＶＭディスプレイの前記画像を表す前記画像データパケットを前記コンテキスト情報と共に前記クライアントへ送信するステップと
を含む方法。
【請求項２１】
それぞれが他の仮想マシンの対応するフレームバッファデータにアクセスし、それを読み取るように構成された複数の仮想マシンにおいて独立に画像プロセッサアルゴリズムを提供するステップ
をさらに含む請求項２０に記載の方法。
【請求項２２】
それぞれが他の仮想マシンの対応するフレームバッファデータにアクセスし、それを読み取るように構成された、前記ハイパーバイザ上で実行されている前記複数の仮想マシンのそれぞれにおいて独立に画像プロセッサアルゴリズムを提供するステップ
をさらに含む請求項２０に記載の方法。
【請求項２３】
前記読み取られたフレームバッファデータを処理するステップが、
前記仮想化コンピュータサービスを提供する前記特定の仮想マシンの前記フレームバッファデータを解析するステップと、
前記解析に基づいて前記フレームバッファデータについてのコンテキストを判定するステップと、
前記フレームバッファデータについての適切なコンテキスト情報を関連付けるステップと、
それぞれが前記フレームバッファデータの少なくとも一部分と、前記フレームバッファデータの前記部分についての前記関連付けられたコンテキスト情報とを含む、前記フレームバッファデータのための複数の画像データパケットを生成するステップと
をさらに含む請求項２０に記載の方法。
【請求項２４】
ユーザのアプリケーションおよびデータへのアクセスを提供する前記ユーザのためのデスクトップを定義するコンピューティングプロファイルへのユーザアクセスを提供する方法であって、
ａ）クライアントからインターネット接続を介して前記コンピューティングプロファイルへの接続を要求するステップと、
ｂ）前記要求された接続に応答して前記コンピューティングプロファイルのための仮想マシンを識別するステップと、
ｃ）前記識別された仮想マシンのためのフレームバッファデータを識別するステップと、
ｄ）前記フレームバッファデータを読み取るステップと、
ｅ）前記接続要求を行った前記クライアントの特性に基づいて前記フレームバッファデータを処理し、画像データパケットを生成するステップと、
ｆ）前記クライアントにおいて処理され、前記クライアントのディスプレイ上で提示される前記画像データパケットを前記クライアントへ転送するステップと、
ｇ）セッションの間に前記ステップ（ｄ）〜（ｆ）を繰り返し、同時に、前記クライアントと前記仮想マシンとの間でバックチャネル通信を交換するステップと
を含む方法。
【請求項２５】
各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも１画素によって定義される請求項２４に記載の方法。
【請求項２６】
前記フレームバッファデータを処理する前記ステップが、
前記フレームバッファデータを解析してコンテキストを判定するステップと、
前記解析に基づいて前記フレームバッファデータにコンテキスト情報を関連付けるステップと、
１つまたは複数の変換法を使用して、前記クライアントと関連付けられた表示装置との互換性を有する前記フレームバッファデータのための画像データパケットを生成するステップと
をさらに含む請求項２４に記載の方法。
【請求項２７】
前記クライアントと前記仮想マシンとの間の前記バックチャネル通信が、前記仮想マシン上で実行されている１つまたは複数のアプリケーションへのデータを含む請求項２４に記載の方法。
【請求項２８】
前記クライアントにおける画像データパケットの処理が、パッケージング情報を除去すること、および前記データを前記クライアントの前記ディスプレイの特定の部分へマップすることをさらに含む請求項２４に記載の方法。
【請求項２９】
仮想マシン（ＶＭ）のセッションへのアクセスを提供するための方法であって、
（ａ）前記ＶＭの前記セッションへのアクセスを獲得するステップと、
（ｂ）前記ＶＭのためのフレームバッファデータを識別するステップと、
（ｃ）前記フレームバッファデータを読み取るステップと、
（ｄ）前記クライアントの特性に基づいて前記フレームバッファデータを処理し、画像データパケットを生成するステップと、
（ｅ）前記クライアントの前記特性のために生成された前記画像データパケットを前記クライアントへ転送するステップと、
（ｆ）前記ＶＭの前記セッションにアクセスしている時間の間にステップ（ｃ）〜（ｅ）を繰り返し、同時に、前記クライアントと前記ＶＭとの間でバックチャネル通信を交換するステップと
を含む方法。
【請求項３０】
各画像データパケットが、前記クライアントにおいて仮想マシンディスプレイの画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも１画素によって定義される請求項２９に記載の方法。
【請求項３１】
前記クライアントの前記特性が、前記クライアントの位置、接続すべき仮想サービスの位置、クライアントの種類、ディスプレイの種類、接続品質、通信接続帯域幅、要求されるデータの種類、および解像度、ビット深度、リフレッシュ速度を含む前記クライアントと関連付けられたディスプレイの構成のうちのいずれか１つまたは複数を含む１つまたは複数の接続パラメータによって定義される請求項３０に記載の方法。
【請求項３２】
前記セッションへのアクセスを獲得する前記ステップが、前記ＶＭへのクライアントのマッピングと関連付けられた情報を提供するサービスブローカと、前記ＶＭと関連付けられた前記フレームバッファデータにアクセスするためのＡＰＩを提供する、ハイパーバイザ上で走るＶＭ上で実行されている画像プロセッサアルゴリズムとを介したものである請求項３０に記載の方法。
【請求項３３】
前記画像プロセッサアルゴリズムが、前記セッションを走らせている同じＶＭ上、または前記セッションを走らせている前記ＶＭとは異なるＶＭ上のいずれか１つで独立に実行される請求項３２に記載の方法。
【請求項３４】
前記クライアントにおける前記画像データパケットが、パッケージング情報を除去し、前記画像データパケット内の前記データを前記クライアントの前記ディスプレイの特定の部分にマップするように処理される請求項３２に記載の方法。
【請求項３５】
ネットワーク上でクライアントへサービスを提供するためのシステムであって、
ａ）そのうちの少なくとも１台が、
（ｉ）特定の仮想マシンにおいて利用可能な仮想化コンピュータサービスを制御することを求める前記クライアントからの接続要求を検出し、
（ｉｉ）前記接続要求を照会することによって前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別し、
（ｉｉｉ）ハイパーバイザを介して仮想メモリ内の所定の位置から、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する前記特定の仮想マシンのフレームバッファデータにアクセスし、それを読み取り、
（ｉｖ）前記読み取られたフレームバッファデータを、前記フレームバッファデータと関連付けられたコンテキスト情報を含む画像データパケットへと処理し、
（ｖ）前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記特定の仮想マシンの前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信する
ための論理を含む画像プロセッサアルゴリズムを実行している、ハイパーバイザ上で走るように構成された１台または複数の仮想マシン
を備えるシステム。
【請求項３６】
ａ）前記１台または複数の仮想マシンへのクライアントのマッピングを提供し、前記接続要求と関連付けられた情報を認証するためのディレクトリサービスと、
ｂ）アクティビティ領域のグループと、ある期間にわたるアクティビティ領域のグループに対する変更とを記憶するための時間ベースの記憶アレイサービスと、
ｃ）コンテキスト依存圧縮を提供するのに使用される前記フレームバッファデータをパッケージ化するための圧縮法／伝送法を提供するための圧縮法サービスと
をさらに含む請求項３５に記載のシステム。
【請求項３７】
ネットワーク上でクライアントにサービスを提供するためのシステムであって、
ａ）そのうちの少なくとも１台が、その他の仮想マシンと並行して、
（ｉ）（ｉａ）特定の仮想マシン上で利用可能な仮想化コンピュータサービスを制御することを求める、前記クライアントの接続要件を定義する複数の接続パラメータを識別する前記クライアントからの接続要求を検出し、
（ｉｂ）前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別するために前記接続パラメータを照会し、
（ｉｃ）ハイパーバイザと対話して前記特定の仮想マシンのフレームバッファデータに直接アクセスし、
（ｉｄ）前記特定の仮想マシンの前記フレームバッファデータをスキャンして、前記特定の仮想マシンの前記フレームバッファデータにおける変更を含む前記特定の仮想マシンの仮想マシンディスプレイの画像を見分け、変更を含む前記フレームバッファデータを前記特定の仮想マシンと関連付けられた時間ベースの記憶アレイへと処理する
ように構成されたスキャンエンジンと、
（ｉｉ）（ｉｉａ）前記フレームバッファデータと関連付けられた特性に基づいて連続した領域を判定し、前記フレームバッファデータと関連付けられるコンテキストを判定する
ように構成されたコンテキストエンジンと、
（ｉｉｉ）（ｉｉｉａ）前記フレームバッファデータを解析し、
（ｉｉｉｂ）前記判定されたコンテキストに基づいて、前記フレームバッファデータを、前記フレームバッファデータと関連付けられたコンテキスト情報を統合するように処理し、
（ｉｉｉｃ）前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す、前記特定の仮想マシンの関連コンテキスト情報を含む前記処理されたフレームバッファデータを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信する
ように構成された論理エンジンと
を含む画像プロセッサアルゴリズムを実行している、ハイパーバイザ上で走るように構成された１台または複数の仮想マシン
を備えるシステム。
【請求項３８】
前記画像プロセッサアルゴリズムが、前記時間ベースの記憶アレイと対話して前記フレームバッファデータ内のアクティビティを探索し、前記探索に基づいて前記フレームバッファデータ内のアクティビティ領域とアクティビティのレベルとを識別し、非アクティビティ領域を無視するように構成されている探索アルゴリズムを備える熱エンジンをさらに含む請求項３７に記載のシステム。
【請求項３９】
前記スキャンエンジンおよび前記熱エンジンが、バックチャネルを介して、前記特定の仮想マシンの前記フレームバッファデータ内の変更の可能性の高い領域を定義するユーザ対話を受け取るようにさらに構成されている請求項３７に記載のシステム。
【請求項４０】
前記１台または複数の仮想マシンへの複数のクライアントのマッピングのリポジトリであるディレクトリサービスと、前記クライアントからの接続要求を認証するためのポリシを確認するように構成されたポリシおよび認証サービスとをさらに含む請求項３９に記載のシステム。
【請求項４１】
前記画像プロセッサアルゴリズムが、
前記クライアントと対話して接続パラメータを獲得し、前記クライアントと関連付けられた進行中の接続品質を判定し、
前記ポリシおよび認証サービスと対話して前記クライアントから受け取られる接続パラメータを認証し、前記接続要求を扱うための１つまたは複数のポリシを判定し、
前記論理エンジンと対話して進行中の接続品質と関連付けられた最新の接続パラメータを提供し、
前記ディレクトリサービスと対話して、前記クライアントへ前記要求された仮想化コンピュータサービスを提供することができる前記特定の仮想マシンを識別し、
前記スキャンエンジンと対話して、前記特定の仮想マシンのための前記適切なフレームバッファデータへ誘導する
ように構成された接続エンジンをさらに含む請求項４０に記載のシステム。
【請求項４２】
前記画像プロセッサアルゴリズムが、前記処理されたフレームバッファデータを、前記接続パラメータに基づいて、前記要求に応答して提示するための前記クライアントへの効率の良い送信に最適なようにサイズ設定された画像データパケットとして送信するための出力エンジンをさらに含む請求項４１に記載のシステム。
【請求項４３】
前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている複数の仮想マシンのうちの１つまたは複数で独立に実行可能であり、その場合、前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている他の仮想マシンの対応するフレームバッファデータにアクセスし、それらを読み取るのに使用される請求項３７に記載のシステム。
【請求項４４】
前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている前記仮想マシンのうちのそれぞれで独立に実行可能であり、その場合、前記仮想マシンのそれぞれの前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている他の仮想マシンの対応するフレームバッファデータにアクセスし、それらを読み取るのに使用される請求項３７に記載のシステム。
【請求項４５】
複数のサービス層をさらに含み、前記複数のサービス層のそれぞれが前記クライアントによって要求される特定の種類のサービスを提供し、前記複数のサービス層のそれぞれが１台または複数の仮想マシンを含み、前記仮想マシン上で走る前記画像プロセッサアルゴリズムが、前記複数のサービス層のそれぞれにおける前記仮想マシンの前記フレームバッファデータにアクセスするように構成されている請求項３７に記載のシステム。
【請求項４６】
前記複数のサービス層のそれぞれにおける前記仮想マシンのうちの少なくとも１台が前記画像プロセッサアルゴリズムを独立に実行している請求項４５に記載のシステム。
【請求項４７】
前記クライアントが、前記画像プロセッサアルゴリズムを実行する前記仮想マシンから受け取られる前記画像データパケットを処理するように構成された論理を含み、前記画像データパケットの前記処理が、
前記画像データパケットからパッケージング情報を除去すること、および
前記データを前記クライアントの前記ディスプレイの特定の部分にマップすること
を含む請求項３７に記載のシステム。
【請求項４８】
仮想センタ内の仮想マシンのプロセッサ上で実行されるとネットワーク上でクライアントにサービスを提供するように構成されている、コンピュータ可読媒体上に実施された画像プロセッサアルゴリズムであって、
サービスを要求する前記画像プロセッサアルゴリズムを実行している前記仮想マシンにおいて、前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含む接続要求を受け取るためのプログラミング論理と、
前記クライアントからの前記要求を満たす前記サービスを提供する特定の仮想マシンを識別するために前記接続パラメータを照会するためのプログラミング論理と、
前記特定の仮想マシンと関連付けられたハイパーバイザを介して、仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするためのプログラミング論理と、
前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記読み取られたフレームバッファデータを複数の画像データパケットへと処理するためのプログラミング命令と、
前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するための前記クライアントへ送信するためのプログラミング論理と
を備える画像プロセッサアルゴリズム。
【請求項４９】
前記アクセスされたフレームバッファデータを処理するための前記プログラミング論理が、
前記識別された仮想マシンの前記フレームバッファデータを解析してコンテキストを判定するためのプログラミング論理と、
前記解析に基づいて前記特定の仮想マシンの前記フレームバッファデータに適切なコンテキスト情報を関連付けるためのプログラミング論理と
をさらに含む請求項４８に記載の画像プロセッサアルゴリズム。
【請求項５０】
前記特定の仮想マシンの前記フレームバッファデータを周期的にスキャンするためのプログラミング論理と、
スキャンされたフレームバッファデータを前記特定の仮想マシンのために記憶されたフレームバッファデータと比較することによって変更領域を判定するためのプログラミング論理と、
解析および送信のために前記仮想マシンと関連付けられた時間ベースの記憶アレイに、前記変更領域と関連付けられたコンテキスト情報を記憶することを含め、前記変更領域を記憶するためのプログラミング論理と
をさらに含む請求項４９に記載の画像プロセッサアルゴリズム。
【請求項５１】
前記フレームバッファデータをスキャンするための前記プログラミング論理が、
前記特定の仮想マシンの前記フレームバッファデータのリフレッシュの状況を識別する、前記特定の仮想マシンの前記フレームバッファデータと関連付けられたｓｙｎｃ信号を照会するためのプログラミング論理と、
前記ｓｙｎｃ信号の前記照会に基づいて、前記特定の仮想マシンの前記フレームバッファデータの前記スキャンを行うためのプログラミング論理と
をさらに含み、
前記スキャンが、前記仮想マシンにおける前記フレームバッファデータのリフレッシュレートで、または前記クライアントと関連付けられた前記接続パラメータのうちの１つまたは複数によって駆動されるレートで周期的に行われる
請求項５０に記載の画像プロセッサアルゴリズム。
【請求項５２】
前記特定の仮想マシンのための前記フレームバッファデータのリフレッシュの前に前記ｓｙｎｃ信号を設定するためのプログラミング論理と、
前記特定の仮想マシンのための前記フレームバッファデータの前記リフレッシュが完了し次第、前記ｓｙｎｃ信号をリセットするためのプログラミング論理と
をさらに含む請求項５１に記載の画像プロセッサアルゴリズム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、軽量クライアントを用いて、短距離および長距離にわたって仮想化コンピュータサービスにアクセスし、仮想化コンピュータサービスを制御し、仮想化コンピュータサービスとインターフェースするための方法およびシステムに関する。
【背景技術】
【０００２】
仮想環境において、仮想リソースは、ハードウェアプロトコルとソフトウェアプロトコルの組み合わせによってリモートでアクセスされ、制御される。仮想環境は、インターネット上のサービスとして提供される、そのような仮想リソースにアクセスするための基礎をなす技術の「クラウド化」によりクラウドサービスと適切に名付けられた複数の動的に拡張可能な仮想リソースを含む。典型的な仮想環境は、コンピューティングハードウェアの集合体、すなわち、コンピューティングハードウェアの上に位置し、コンピューティングハードウェアと、ハイパーバイザを介してハードウェアにアクセスする、ハイパーバイザの上に位置する複数のゲスト（仮想マシンまたはＶＭ）とへのアクセスを提供するハイパーバイザとみなすことができる。プロトコルを介して仮想環境内の仮想化コンピュータサービス（または単に仮想サービスともいう）に接続し、それをリモートで制御するのに複数のクライアントが使用される。これらのプロトコル／プロトコルの派生プロトコルは、元のグラフィックスストリームより低い帯域幅の通信を可能にするために冗長性除去およびグラフィック命令書換えを使用して、ＶＭと関連付けられたダイレクト・グラフィックス・ストリームの圧縮／伸張において使用される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記プロトコルには独自の制限および課題がある。大きな制限は、これらのプロトコルが特定の１つまたは複数のプラットフォーム（グラフィックス／オペレーティングシステム層）に縛られており、オペレーティングシステムまたはグラフィックスチップが圧縮／伸張プロトコルと調和することを必要とすることである。これは、仮想環境内のリモートＶＭにおいてコマンドを解釈し、実行することができるように、圧縮プロトコルがオペレーティングシステムのグラフィックスの「コンテキスト」を活用することを意味する。そのようなプラットフォーム特有のプロトコルの悪影響には、プログレッシブ画像の圧縮／伸張および解釈のためのシンクライアントと仮想サービス側との両方における高処理能力のＣＰＵ使用と、長距離ＷＡＮネットワーク接続の大きな待ち時間を処理する際の難しさが含まれる。さらに別の不都合点には、ある特定の状況で圧縮を復号するために専用のチップ（グラフィックスチップ）を必要とすること、および別の状況での高ネットワーク消費が含まれる。
【０００４】
加えて、そのようなプラットフォーム特有のソフトウェアベースのプロトコルを策定するための基礎も、オペレーティングシステムのグラフィックス層を介して高速性能を推進するものであった。その結果、オペレーティングシステムのグラフィックスコマンドの直接解釈がそのようなプロトコルの設計にとって決定的に重要になり、その設計がプラットフォーム特有のものになり、これが仮想マシン環境へ引き継がれた。カスタマイズプロトコルの別の欠点は、プロトコルの複雑さにより、低処理能力のシンクライアントやモバイルスマートフォンクラスの機器といった多くの軽量クライアント機器との互換性を欠くことである。
【０００５】
本発明の実施形態が生じるのはこの状況においてである。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、軽量または非軽量のコンピューティング機器を用いて短距離および長距離にわたって仮想化コンピュータサービスにアクセスし、仮想化コンピュータサービスを制御し、仮想化コンピュータサービスとインターフェースすることを可能にする多数の方法および構成を提供する。一実施形態において、方法は、仮想マシンのうちの少なくとも１台が画像プロセッサアルゴリズムを実行する、ハイパーバイザ上で走っている複数の仮想マシンの仮想インフラストラクチャを含むシステムに組み込まれる。ハイパーバイザは、仮想マシンの個々のオペレーティングシステムと対話する。画像プロセッサアルゴリズムは、仮想マシンへの接続を求めるクライアントからの要求を受け取り、接続を管理し、要求されたコンピューティングサービスを提供するように構成される。
【０００７】
一実施形態では、接続要求は、接続要件を定義する複数の接続パラメータと、クライアントと関連付けられた他の環境パラメータとを含む。クライアントによる要求は、仮想インフラストラクチャ内の特定の仮想マシン上で利用可能な仮想化コンピュータサービスへのアクセスを取得し、リモートで制御するためのものである。接続要求を受け取り次第、特定の仮想マシンとは異なる仮想マシン上で実行されている画像プロセッサアルゴリズムが、接続パラメータを解析して仮想化コンピュータサービスと関連付けられた特定の仮想マシンを識別し、ハイパーバイザと対話して、特定の仮想マシンと関連付けられているメモリからフレームバッファデータを獲得する。メモリからのフレームバッファデータは、特定の仮想マシンの仮想マシンディスプレイの画像のグラフィカル出力を定義する。フレームバッファデータは、仮想マシン内のアルゴリズムによって画像データパケットへと処理され、フォーマットされる。画像データパケットは、トランスポート（伝送）プロトコルに基づいてさらにパッケージ化される。次いで画像データパケットは、クライアントの表示装置においてレンダリングするために、トランスポートプロトコルを使用してクライアントへ送信される。レンダリングされた出力は、特定の仮想マシンにおいて現在実行され、またはレンダリングされているグラフィカル要素または非グラフィカル要素、プログラムおよび他の要素のディスプレイを含む仮想マシンディスプレイの画像または部分画像を提示する。
【０００８】
アルゴリズムは、オペレーティングシステムまたはグラフィックスカードではなくハイパーバイザを介してフレームバッファデータに直接アクセスすることにより、仮想マシンディスプレイの高性能画像を送信することができる能力を提供する。その結果画像は、オペレーティングシステムまたはグラフィックス層からのどんな直接または事前の命令もなしで獲得され、よって、アルゴリズムがオペレーティングシステムおよびグラフィックスカードに依存しないものになる。グラフィカル出力はパッケージ化され、クライアント上での複雑な処理を必要としない単純な伝送プロトコルを使用して送信されるため、伝送サービスは、スマートな追跡法および再送信法を利用することができる。これらの実施形態は、クライアントが仮想サービスと近くからも遠くからも対話することを可能にする。グラフィカル出力は、クライアントにおいて容易に伸張し、処理し、レンダリングすることのできる画像データを含み、そのため、超シンクライアントが仮想サービスにアクセスし、仮想サービスを制御することが可能になる。単純なトランスポートプロトコルは、帯域幅の変化、待ち時間、および損失に対して敏感であり、適応的である。
【０００９】
本明細書では例としていくつかの異なる実施形態を提示する。
【００１０】
一実施形態では、クライアントを介してリモートで仮想化コンピュータサービス（または単に「仮想サービス」ともいう）を制御するための方法が開示される。方法は、仮想センタ内の特定の仮想マシンにおいて利用可能な仮想サービスを制御することを求めるクライアントからの接続要求を受け取るステップを含む。接続要求は、クライアントの接続要件を記述する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる。接続パラメータは、フレームバッファおよび伝送パラメータを識別するために画像プロセッサアルゴリズムによって照会される。特定の仮想マシンのためのフレームバッファデータが、ハイパーバイザを介して仮想センタ内の仮想メモリの所定の位置から直接アクセスされる。フレームバッファデータは、特定の仮想マシンと関連付けられた仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する。フレームバッファデータは、画像プロセッサアルゴリズムを使用し、複数の接続パラメータに基づいて複数の画像データパケットへと処理され、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントへ送信される。レンダリングされたグラフィカル出力は、クライアントにおいて識別された仮想マシンのための仮想マシンディスプレイの画像を提示する。
【００１１】
さらに別の実施形態では、ネットワーク上でクライアントにサービスを提供するための方法が開示される。方法は、仮想化コンピュータサービスを制御することを求めるクライアントからの接続要求を受け取ることを含む。接続要求は、画像プロセッサアルゴリズムを実行している仮想マシンにおいて受け取られ、クライアントの接続要件を定義する複数の接続パラメータを含む。接続パラメータは、要求される種類のサービスを提供する特定のサービス層と、クライアントからの接続要求を満たす仮想化コンピュータサービスを提供するための識別されたサービス層内の特定の仮想マシンとを識別するために、画像プロセッサアルゴリズムを使用して照会される。方法は、識別されたサービス層に接続するステップと、ハイパーバイザを介して直接、仮想メモリ内の所定の位置から特定のサービス層内の特定のＶＭのためのフレームバッファデータにアクセスするステップとを含む。アクセスされたフレームバッファデータは、複数の接続パラメータに基づき、画像プロセッサアルゴリズムを使用して複数の画像データパケットへと処理され、レンダリングするためにクライアントへ送信される。クライアントへ送信される画像データパケットは、クライアントに特有のものであり、特定の仮想マシンの仮想マシンディスプレイの画像を表す。
【００１２】
別の実施形態では、ネットワーク上でクライアントにサービスを提供するための方法が開示される。方法は、複数の仮想マシンがハイパーバイザ上で実行されている仮想センタ内の少なくとも１台の仮想マシン上で画像プロセッサアルゴリズムを提供するステップを含む。画像プロセッサアルゴリズムを実行している仮想マシンにおいて受け取られる接続要求は、クライアントと関連付けられた接続要件を定義する複数の接続パラメータと、接続要求を満たすことのできる特定の仮想マシンとを識別するように処理される。識別された仮想マシンのためのフレームバッファデータが、ハイパーバイザを介して仮想メモリ内の所定の位置から直接アクセスされ、読み取られる。クライアントに特有の複数の画像データパケットが、接続パラメータに基づき、画像プロセッサアルゴリズムを使用して、読み取られたフレームバッファデータのために生成される。生成された画像データパケットは、読み取られたフレームバッファデータと関連付けられたコンテキスト情報を含む。グラフィカル出力を定義する画像データパケットは、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントへ送信される。レンダリングされた画像データパケットは、クライアントにおいて、識別された仮想マシンと関連付けられた仮想画像ディスプレイの画像を表す。
【００１３】
本発明の別の実施形態では、コンピューティングプロファイルへのユーザアクセスを提供するための方法が開示される。コンピューティングプロファイルは、ユーザのアプリケーションおよびデータへのアクセスを提供するユーザのためのデスクトップを定義する。方法は、クライアントからインターネット接続を介してコンピューティングプロファイルへの接続を要求するステップを含む。要求された接続に応答して、コンピューティングプロファイルのための特定の仮想マシンが識別される。識別された仮想マシンのためのフレームバッファデータが識別され、読み取られる。フレームバッファデータは、接続要求を行ったクライアントの特性に基づいて画像データパケットを生成するように処理される。画像データパケットはクライアントへ転送され、そこで画像データパケットが処理され、クライアントと関連付けられたディスプレイ上で提示される。フレームバッファデータを読み取り、処理し、フレームバッファデータを処理するためのクライアントへ転送するプロセスは、セッションにおいてクライアントと仮想マシンとの間の通信が交換されている間、続行される。
【００１４】
別の実施形態では、仮想マシン（ＶＭ）のセッションへのアクセスを提供するための方法が開示される。方法は、ＶＭのセッションへのアクセスを獲得する動作と、ＶＭのためのフレームバッファデータを識別する動作と、フレームバッファデータを読み取り、クライアントの特性に基づいて画像データパケットを生成するように処理する動作と、クライアントの特性のために生成された画像データパケットをクライアントへ転送する動作と、クライアントとＶＭとの間でバックチャネル通信を交換している間に、セッションにおいて、画像データパケットを読み取り、処理し、転送する動作を繰り返す動作とを含む。
【００１５】
本発明は、以下の詳細な説明を添付の図面および特許請求の範囲と併せて読めば容易に理解されるであろう。
【図面の簡単な説明】
【００１６】
本発明は、以下の詳細な説明を添付の図面と併せて読めば容易に理解されるであろう。
【００１７】
【図１】仮想環境において仮想化コンピュータサービスにリモートでアクセスし、制御するのに使用された従来のシステムを示すブロック図である。
【００１８】
【図２−１】本発明の一実施形態による、仮想環境において仮想化コンピュータサービスにリモートでアクセスし、それを制御する際に使用されるシステムを示すブロック図である。
【００１９】
【図２−２．２−３】図２−１に示す本発明の別の実施形態を示す図である。
【００２０】
【図２Ａ】従来のビデオカードの働きを示す簡単なブロック図である。
【００２１】
【図２Ｂ】本発明の一実施形態における、仮想マシンと関連付けられたモニタの仮想画像にアクセスする際のハイパーバイザの働きを示す簡単なブロック図である。
【００２２】
【図２Ｃ−１．Ｃ−２．Ｃ−３】本発明の別の実施形態における、フレームバッファデータを取り込むプロセスを示す簡単なブロック図である。
【００２３】
【図２Ｄ】フレームバッファデータをパッケージ化し、データパケットをクライアントへ送信する際のＬＦＰを実行する画像プロセッサの働きを示す簡単なブロック図である。
【００２４】
【図２Ｅ】本発明の一実施形態における、特定のクライアントに従ったフレームバッファデータのパケット化の例を示す図である。
【００２５】
【図２Ｆ−１】様々なソースからのフレームバッファデータが帯域内通信によって受け取られ、レンダリングされる一実施形態を示す図である。
【図２Ｆ−２】帯域外フレームバッファデータがクライアントの表示装置において受け取られ、レンダリングされる一実施形態を示す図である。
【００２６】
【図３Ａ】本発明の一実施形態における、画像プロセッサアルゴリズム内の様々なモジュールと、様々なモジュールとクライアントとサービスとの間の対話とを識別する簡略化されたブロック図である。
【００２７】
【図３Ｂ】本発明の一実施形態における、システムの様々なモジュールと構成要素との間の詳細な情報の流れを識別するブロック図である。
【００２８】
【図４】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用されるスキャンエンジン内のプロセスフローを定義するブロック図である。
【００２９】
【図５】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される熱エンジン内のプロセスフローを定義するブロック図である。
【００３０】
【図６】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用されるコンテキストエンジン内のプロセスフローを定義するブロック図である。
【００３１】
【図７】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される論理エンジン内のプロセスフローを定義するブロック図である。
【００３２】
【図７Ａ．７Ｂ．７Ｃ】フレームバッファデータの管理を示すブロック図である。
【００３３】
【図８】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される接続エンジン内のプロセスフローを定義するブロック図である。
【００３４】
【図９】本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される出力エンジン内のプロセスフローを定義するブロック図である。
【００３５】
【図１０】本発明の一実施形態による、画像プロセッサアルゴリズムの様々な構成要素と対話するシンクライアントを示すブロック図である。
【００３６】
【図１１】本発明の一実施形態における、異なる層において提供される仮想化コンピュータサービスへのアクセスを示す簡略化されたブロック図である。
【００３７】
【図１２Ａ−１．１２Ａ−２】本発明の一実施形態における、ラップトップコンピュータやモバイル機器といった携帯式コンピューティング機器がドッキングを介して仮想環境内の仮想化コンピュータサービスにアクセスするためのやり方を示す図である。
【００３８】
【図１２Ｂ】本発明の一実施形態における、仮想環境内の仮想化コンピュータサービスにアクセスするためのＰＣ上のフラッシュドライブを示す図である。
【００３９】
【図１２Ｃ】本発明の別の実施形態における、ワイヤレスフィデリティ（ＷｉＦｉ）方式を使用して仮想環境内の仮想化コンピュータサービスにアクセスする携帯情報端末（ＰＤＡ）を示す図である。
【００４０】
【図１３】本発明の一実施形態における、リモートクライアントから仮想化コンピュータサービスを制御するのに関与する様々なステップを示すプロセス流れ図である。
【発明を実施するための形態】
【００４１】
次に、仮想環境内のコンピュータシステムをリモートで制御するためのいくつかの例示的実施形態を説明する。本発明は、本明細書に示す具体的詳細の一部または全部がなくても実施され得ることが当業者には明らかであろう。
【００４２】
本発明は、リモートクライアントを介した仮想環境内の仮想マシンにおいて利用可能な仮想化コンピュータサービス（または単に「仮想サービス」ともいう）のアクセスおよび管理を可能にする方法、システム、コンピュータコードを定義するものである。各実施形態は、仮想環境内の、サーバ仮想マシンといった仮想マシンに組み込まれた画像プロセッサアルゴリズムといったアルゴリズムを使用して、仮想サービスとの接続を確立する手段を提供する。仮想サービスを求める要求がサーバ仮想マシン（ＳＶＭ）において受け取られると、ＳＶＭ内のアルゴリズムは、仮想サービスを提供する仮想マシン（ＶＭ）を識別するために、その上で複数の仮想マシンが走っている仮想環境内のハイパーバイザと対話する。ＶＭを識別し次第、アルゴリズムは、ハイパーバイザを介して、識別されたＶＭの仮想モニタの画像を表すグラフィカル出力を定義する識別されたＶＭのメモリからフレームバッファデータにアクセスし、それを読み取る。アルゴリズムは、フレームバッファデータを処理し、フレームバッファデータをパケットへとパッケージ化し、クライアントと関連付けられた表示装置においてレンダリングするために、単純なトランスポートプロトコルを使用して、パッケージ化されたフレームバッファデータをクライアントへ送る。レンダリングされたフレームバッファデータについてのクライアントの表示装置におけるユーザ対話が取り込まれ、データが処理されるＳＶＭおよびハイパーバイザを介して識別されたＶＭへ再度宛先指定されて、仮想サービスへの制御を提供する。仮想サービスを制御するためのグラフィカルアクセスは、識別された仮想マシンのオペレーティングシステムまたはグラフィックスカードからどんな命令も受け取らずに提供される。
【００４３】
仮想サービスを制御するためのアクセスがグラフィカル出力の取込みによるものであり、オペレーティングシステム／グラフィックスカードからの命令によるものではないため、各実施形態は、各仮想マシンにおいて利用可能な仮想サービスを制御するためのプラットフォームに依存しない解決策を定義し、それによって柔軟で有効なツールを提供する。パッケージ化されたグラフィカル出力は、複雑な計算／処理を使用しなくても解読／伸張することができ、超シンクライアントでさえも仮想サービスにアクセスさせ、仮想サービスを制御させることができる。単純なトランスポートプロトコルは、クライアントが長距離にわたっても短距離にわたっても仮想サービスにアクセスし、仮想サービスを制御することを可能にし、待ち時間および損失のあるネットワーク状況をより自然に扱う。アルゴリズムは、ハイパーバイザと対話してディスプレイの仮想画像を抽出するのであり、オペレーティングシステムと対話してオペレーティングシステムから命令を取り出すのではないため、グラフィカル言語命令を解読し／伸張するためのクライアントにおける高処理能力プロセッサの必要を回避することができる。
【００４４】
アルゴリズムの働きは仮想マシンのオペレーティングシステムには見えない。ハイパーバイザは、すべてのＶＭについてのメモリ管理を提供し、クライアントによって提供される接続パラメータからの情報とメモリ管理からの情報とを使用して、適切なＶＭと、識別されたＶＭのためのディスプレイの仮想画像を表す情報を提供する識別されたＶＭのためのメモリの特定の位置とを識別する。フレームバッファデータへのアクセスを得るためのハイパーバイザおよび他の構成要素の役割を、図２Ａおよび図２Ｂを参照して詳細に説明する。
【００４５】
様々な実施形態の利点を十分に把握するために、本出願全体においてよく使用される一連の用語をまず詳細に説明する。これらの定義は、各用語に関する一般的な手引きとして提供するものであり、いかなる点においても、これらの用語と関連付けられる変形または均等物に関して限定するものとみなすべきではない。
ａ．「シンクライアント」とは、本出願で使用する場合、計算処理の一部を別のコンピュータにおいて、普通はサーバ、リモートコンピュータ、または別のネットワークで接続されたコンピューティング機器において行うことができるソフトウェアまたはハードウェア機器である。シンクライアントは、リーンクライアント、スリムクライアントまたはダムクライアントとも呼ばれ、インターフェース（ソフトウェア・シン・クライアント）またはごく最小限の計算処理リソース（ハードウェア・シン・クライアント）を含み、ハードドライブを含まない場合さえもある。実施形態によっては、スマートフォン、携帯情報端末、タブレットコンピュータ、携帯電話、端末などによく見られるように、固体メモリと記憶装置で十分である。一実施形態では、シンクライアントは、そのサーバコンピュータを利用して記憶その他のリソース能力を提供し、機器を端末（すなわち画面とキーボードと入力機器）により近いものとして動作させ得る。超シンクライアントとは、関連付けられたサーバ（またはネットワークで接続されたコンピューティング機器）が計算処理の大部分を提供するクライアントである。超シンクライアントの例にはコンピュータ端末やディスプレイインターフェースが含まれる。また、ファットクライアント（すなわち、すべての標準的な独立型ハードウェアおよびソフトウェアを備えるクライアント）も、ファットクライアントがリモートコンピュータに接続され、リモートコンピュータが処理の大部分を行い、または特定のコンピューティングセッションについてのサービスを提供する場合には、シンクライアントとして動作することができる。
ｂ．「リモート」アクセスクライアントとは、本出願で使用する場合、仮想センタ内のハイパーバイザ上で実行されているＳＶＭおよびＶＭと同じ場所にあり、または同じ場所にない、インターネットといったネットワーク接続を使用して、ＳＶＭを介してＶＭにアクセスするクライアントをいう。リモートアクセスは、ネットワーク（有線または無線の）接続を確立することができる限り、クライアントが物理的にハードウェアまたはサーバのそばに位置する場合でさえも、リモートとすることができる。例えばユーザは、たとえそのユーザが実際にはデスクトップコンピュータと同じ場所にいたとしても、あるいは地球の裏側にいたとしても、携帯電話のインターフェースを介して自分のデスクトップコンピュータにログインすることもできる。
ｃ．「再フォーマット」とは、本出願で使用する場合、オペレーティングシステム（ＯＳ）に依存したフォーマットといった特定のフォーマットで最初に定義されたデータが、アルゴリズムによって規定されるフォーマットに再定義されるプロセスである。アルゴリズムによって定義されるフォーマットはどんなＯＳ特有のフォーマットにも縛られず、複雑でない伸張プロトコルを使用して解読することのできるより普遍的な種類のものとすることができる。データの再フォーマットで使用され得るＯＳ特有のフォーマットの例には、それだけに限らないが、Ｌｉｎｕｘ（商標）、ＯＳＸ（商標）、ＢｅＯＳ（商標）、ＡＩＸ（商標）、ＭＶＳ（商標）、Ｗｉｎｄｏｗｓ（商標）などのためのフレームバッファフォーマットが含まれる。
ｄ．「宛先変更」とは、本出願で使用する場合、既定の位置からアルゴリズムによって定義される新しい位置へデータを再経路指定するプロセスをいう。例えば、特定の仮想マシンからのデータは、普通、個々の仮想メモリに記憶される。本発明では、第２の仮想マシン（ＶＭ２）のメモリをローカルで探す第１の仮想マシン（ＶＭ１）が、ハイパーバイザを介して第２の仮想マシンの実際のメモリ空間へのアクセスを得る。第２の仮想マシンのメモリ内のデータは第１の仮想マシンのローカルメモリにおいて読み取られ、処理され得る。ハイパーバイザは、当業界において周知のように、あるＶＭに別のＶＭの機器／リソースへのアクセスを提供することができる。
ｅ．仮想化コンピュータサービス（または「仮想サービス」）は、本出願で使用する場合、ハードウェアとソフトウェアの両方に関連したサービスを包含する仮想マシンによって提供されるサービスをいう。各仮想マシンにおいて利用可能な仮想サービスの中には、それだけに限らないが、共用物理ハードウェアリソース、ソフトウェアインターフェース、および仮想マシンにおいて実行され、かつ／またはハードウェアリソースにアクセスするのに使用されるプログラムが含まれる。仮想サービスは、リモートデスクトップのためのレンダリング、コンピュータプログラムのリモート処理、リモートゲーム、リモートでホストされる娯楽用ディジタルビデオ録画（ＤＶＲ）、個人用ビデオ録画（ＰＶＲ）、およびユーザに割り当てられた記憶装置に記憶されたファイル、通信プログラム、ビデオ、画像、写真、データおよびメタデータへのアクセスを含むデータセンタベースのサービスへの一般的なアクセスを提供することができる。
ｆ．「パッケージ」とは、本出願で使用する場合、ディジタルネットワーク上の通信の基本単位であるデータパケットをいう。データのパッケージ化にはプロトコルによって異なる構造を使用する。データは、アルゴリズムと関連付けられた特定のプロトコルと、サーバ仮想マシンとクライアントとの間でのデータの送信に関与する伝送プロトコルとに従うようにフォーマット（処理）される。伝送プロトコルは、データの種類に応じたパケットのための構造を提供し、例えば、送信元インターネットプロトコル（ＩＰ）アドレス、宛先ＩＰアドレス、パケットの順序番号、サービスの種類、フラグなどを含み得る。
ｇ．「サーバ仮想マシン」（ＳＶＭ）とは、本出願で使用する場合、他の仮想マシンとクライアントとの対話を管理する仮想マシンをいう。ＳＶＭは、ＶＭのすべての構成要素を含み、クライアントによって要求される情報を提供するなど、クライアント／サーバ・コンピュータ・システムにおけるクライアントに対するサーバと同様の機能を提供するように構成される。ＳＶＭは、対応するＶＭの特定のメモリ空間にアクセスすることによって情報を提供する。ＳＶＭは、ＳＶＭがハイパーバイザを介して個々の仮想マシンのメモリへのアクセスを得ることを可能にする、画像アクセスアルゴリズムといったアルゴリズムを装備する。各ＶＭのメモリにアクセスするためのアルゴリズムは、ＳＶＭといった特定のＶＭにおいて提供される必要はなく、仮想センタにおいて走っている各ＶＭにおいて提供することができ、そのとき各ＶＭは、他のＶＭのＳＶＭ管理メモリのように働くことに留意すべきである。
ｈ．「フレームバッファ情報」または「フレームバッファデータ」とは、本出願で使用される場合、通常は、仮想マシンの仮想マシンディスプレイにおいて提示するためにＯＳによって生成されるビデオ出力データをいう。ＯＳはこのデータを特定のフォーマットで生成し、データは仮想マシン表示画面上でレンダリングされる様々な要素、特徴、画像を定義するあらゆる画素を表すビットマップデータからなる。フレームバッファデータは、データの全画面にわたって、左から右へ、上から下へとトレースされ、リフレッシュされる。各画素は、画面のあらゆる詳細を取り込むために、色、深さ、サイズなどを含むように定義される。フレームバッファ情報は、仮想マシン表示画面上でレンダリングするためにデータが最初に宛先指定された、仮想マシンといったコンピューティングシステムのメモリの特定の部分に記憶されたグラフィカル出力を定義する。
ｉ．接続パラメータは、本出願で使用される場合、クライアントの接続要件および他の環境要件を含むクライアント特性を定義する。接続パラメータは、普通、クライアントとの最初のハンドシェーク時に獲得され、発信元ＩＰアドレスといったクライアントの位置、サイズおよび品質を含む接続機能情報、宛先ＩＰアドレスといった接続すべき仮想サービスの所望の位置、クライアントの種類、解像度、ビット深度、リフレッシュ速度を含むクライアントと関連付けられた表示装置の構成、サービス層識別などを含み得る。
【００４６】
様々な実施形態の理解を容易にするために、従来のプロセスにおいて使用される仮想コンピュータ環境の基本インフラストラクチャの簡単な説明をまず行い、続いて、仮想サービスをリモートで制御するための本発明の実施形態において使用される基本インフラストラクチャ内の新規の特徴を詳細に説明する。
【００４７】
図１に、仮想環境内で仮想化コンピュータサービス（コンピュータシステムまたは単に「仮想サービス」ともいう）のアクセスおよび制御を提供するための従来のプロセスによって使用される典型的な仮想インフラストラクチャの簡単なブロック図を示す。仮想環境は、ハイパーバイザ上で走る複数の仮想マシン（ＶＭ）によって共用される物理ハードウェアの集合体を含む。ハイパーバイザまたは仮想マシンモニタは、複数のオペレーティングシステムがホストコンピュータ上で同時に走ることを可能にするコンピュータプラットフォーム仮想化ソフトウェアである。ハイパーバイザは、共用ハードウェアと各ＶＭとの間のインターフェースを提供する。ハイパーバイザは当業界において周知であり、したがって、本出願では詳細に説明しない。
【００４８】
複数のクライアントが、いくつか例を挙げると、リモート・デスクトップ・プロトコル（ＲＤＰ）、インターネットプロトコル上のＰＣ（ＰＣＯＩＰ）、リモート・グラフィックス・ソフトウェア・プロトコル（ＲＧＳ）、独立型コンピューティング・アーキテクチャ・プロトコル（ＩＣＡ）といった独自のプロトコルを使用して各ＶＭにおいて利用可能な仮想リソースにアクセスする。クライアントは、ローエンドコンピュータ端末といったシンクライアントとすることもでき、デスクトップコンピュータやラップトップコンピュータなどといったファットクライアントとすることもできる。各クライアントは、サービスまたは接続ブローカを使用して特定のＶＭにおいて利用可能な仮想リソースにアクセスする。サービスブローカは、クライアントの要求において提供される環境パラメータに基づいて様々なクライアントへの異なるＶＭのマッピングを提供するディレクトリサービスである。サービスブローカは、クライアントが、適切なプロトコルを使用して直接、対応するオペレーティングシステム（ＯＳ）にアクセスし、そのＯＳと対話することができるように、マッピングまたは接続情報を使用して、要求されたサービスをクライアントに提供する特定のＶＭを判定する。よって、クライアントが対応するＶＭからの情報にアクセスするためには、クライアントは、対応するＯＳプロトコルを理解し、それに従う必要がある。ＯＳは、ＯＳプロトコルに従いクライアントのプロセッサを使用してクライアントにおいて処理される命令のセットを提供する。従来のプロセスの手法は、ユーザがＶＭにおいて進行しているものにアクセスすることができるように、対応するＯＳからの命令のセットに基づいて、クライアント上で、ＶＭにおいて実際に発生しているものを再現するという手法であった。この手法は、データ／情報を圧縮、伸張するためにデータ交換の両方の側において、すなわち、個々のＶＭとクライアントとにおいて処理能力の高いプロセッサを有し、シンクライアントのサイズおよび機能を厳しく制限する結果となった。さらに、従来の手法は非常にプラットフォーム／グラフィックス層中心のものであり、ＶＭにおけるコンピュータシステム／サービスを制御するために、ＯＳ／グラフィックカードを利用して、ＶＭのモニタ上で提供される情報をクライアントの表示装置において再現するための命令を与える。
【００４９】
従来のプロセスの制限を克服するために、本発明のある実施形態は、ハイパーバイザと対話して第２の仮想マシン（ＶＭ）の仮想マシンディスプレイのグラフィカル出力を表す画像を獲得する、ハイパーバイザ上で走るサーバ仮想マシンといった仮想マシン内で画像プロセッサアルゴリズムといったアルゴリズムを使用する。グラフィカル出力はパッケージ化され、レンダリングするためにクライアントに転送される。レンダリングされたグラフィカル出力は、第２のＶＭのディスプレイを見ることを可能にし、第２のＶＭにおいて実行され、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、その他のユーザインターフェース操作または非操作を示す。アルゴリズムは、第２のＶＭのオペレーティングシステムと対話せずに、仮想メモリの所定の位置から直接仮想マシンディスプレイの画像にアクセスしそれを読み取る。その結果、アルゴリズムは第２のＶＭ上で走っているＯＳのグラフィカル命令に従わなくてもよくなる。
【００５０】
図２−１から図２−３に、本発明の別々の実施形態における、クライアントがどんなＯＳプロトコルにも縛られずにＶＭにおいて利用可能な仮想サービスとリモートで対話することを可能にするために仮想マシン層内の仮想マシンにおいて提供されるアルゴリズムを備える仮想インフラストラクチャ（ＶＩ）の例示的ブロック図を示す。図２Ａおよび図２Ｂに、ＶＭのフレームバッファ情報にアクセスする際に使用される仮想インフラストラクチャ（ＶＩ）の様々な構成要素を示す。図２Ｃ−１から図２Ｃ−３に、図２−１から図２−３に示す実施形態に対応するフレームバッファ情報へのアクセスの簡略化された図を示す。図２Ｄおよび図２Ｅに、アクセスされるフレームバッファデータを、アルゴリズムと、クライアントへフレームバッファデータのパケットを送信する際に関与する伝送プロトコルとの両方の要件に従うようにパッケージ化するプロセスの簡略化されたブロック図を示す。図２Ｆに、時間の経過と共にどんなデータがクライアントに送られるかを簡略化された図で示す。仮想サービスを制御するためのアルゴリズムの構成要素および機能を、これらの図面を参照して以下で詳細に説明する。
画像プロセッサ：
【００５１】
画像プロセッサが遠くから、超シンクライアントを介して効率よく機能するために、プラットフォームおよびオペレーティングシステムに依存しない画像プロセッサアルゴリズムの設計構造においてはいくつかの基礎をなす原理に依拠する。
【００５２】
依拠する基本原理のうちの１つは、画像表現である。ほとんどの仮想マシン／仮想ゲストは、各ゲストにおいて利用可能なフレームバッファ構造を有する。フレームバッファとは、本出願で使用する場合、仮想マシンのモニタ上に何が表示されるかのメモリにおける表現である。言い換えると、フレームバッファは、処理され、レンダリングされると、仮想マシンの仮想マシンディスプレイを表す仮想画像を提示するグラフィカル出力を定義する仮想マシンのメモリの特定の部分において提供される画像データを含む。一般に、ハイパーバイザ上に位置するオペレーティングシステムは「ヘッドレス」である。すなわち、ＯＳにはモニタが接続されている必要がない。そのような場合、オペレーティングシステムは、モニタといった仮想マシンディスプレイに向けられた出力を、画像データとしてメモリ内の特定の部分へ宛先指定する。モニタに向けられた出力は、一般にコンテキストレスであるビットマップとして表されることに留意すべきである。このメモリ内の画像は、ハイパーバイザによって、個々の仮想マシンへのグラフィカル・コンソール・アクセスを確立するのに使用される。本出願では、「フレームバッファ」という用語は、ビットマップとして表され、各仮想マシン（ＶＭ）と関連付けられたメモリの特定の部分に記憶された画像データを指すためのグラフィカル出力と区別なく使用する。
【００５３】
フレームバッファ構造は、通常はモニタへ宛先指定されるはずのグラフィックス信号を代わりにメモリへロードされるように宛先変更するための業界手法である。フレームバッファデータは、ビット深度、水平走査速度および決定されたサイズを有するモニタと同様に扱われる。あるオペレーティングシステム、例えばＭａｃ  ＯＳＸ（商標）などでは、フレームバッファは固有のカーネルによってロードされる。他のいくつかのオペレーティングシステムでは、カーネルパラメータが、フレームバッファを有効にするためにスタートアップファイル内で提供される。仮想マシンのメモリ内の位置およびフレームバッファを表す画像のためのそのフォーマットは、対応するオペレーティングシステムによって駆動される。
【００５４】
依拠する別の原理は、画像プロセッサアルゴリズム（または単に「アルゴリズム」ともいう）が自律的に働くようなフレームバッファ構造の適正な解釈および取扱いである。アルゴリズムがプラットフォーム、オペレーティングシステム（ＯＳ）およびサービスに依存しないために、アルゴリズムは、フレームバッファ構造から画面上のフレームをどのように評価すべきか判定することができる必要がある。一実施形態において、アルゴリズムは、フレームまたは特定の情報を定義する対象領域が特定のやり方で取り扱われるように、アクティビティおよびカラーコントラスト状況に基づいて、画面上の連続した対象領域を認識することができる。一実施形態において、アルゴリズムは、人間の知覚能力を超える品質を維持することを優先して見る人に満足のいく視覚効果を提供するために、様々な技法を利用して画面の異なる部分を取り込むように構成される。一実施形態において、画面部分は不可逆効果を使用して取り込まれる。不可逆効果は、データがその品質の一部を失うように圧縮される不可逆圧縮法によって得られる。この圧縮データは、伸張されるときに、元のデータと異なるが元のデータに十分に近いデータを提供する。不可逆圧縮法は、当業界において周知であり、メディアアプリケーションをストリーミングするために、オーディオ、ビデオ、グラフィック画像といったマルチメディアデータを圧縮するのに最も広く使用されている。
【００５５】
アルゴリズムがネットワーク上で効率よく、高性能なものになるように、アルゴリズムは、一実施形態では、適正なユーザ体験を可能にするためにユーザ・データグラム・プロトコル（ＵＤＰ）互換として設計される。ＵＤＰは、ハンドシェーク、または受信されるパケットの確認のための措置が行われない「コネクションレス」または「ステートレス」であるという点において、従来の伝送制御プロトコル（ＴＣＰ）とは異なる。一実施形態において、アルゴリズムのために選択されるプロトコルは、帯域幅変化、待ち時間および損失に対して敏感であり、適応的である。以上ではアルゴリズムを特定の伝送プロトコルを用いて構成されるものとして説明したが、このアルゴリズムは例示とみなすべきであり、限定とみなすべきではない。別の実施形態では、プロトコルが、アルゴリズムによって定義され、求められる品質、性能および機能を提供することができる限り、ＵＤＰ以外の他のプロトコルとの互換性を有するアルゴリズムを使用することもできる。
【００５６】
前述の基本原理および要件に基づき、次に、図２−１から図２−３を参照して、例示的画像プロセッサアルゴリズムの様々な特徴および機能を説明する。例示的アルゴリズムは、説明する実施形態との整合性を有する基本動作が維持される限り、特殊用途のための多少の改変にも対応し得るはずであることを理解すべきである。図２−１に示す本発明の一実施形態において、画像プロセッサアルゴリズムは、仮想環境内で複数のＶＭと並行してハイパーバイザ上で走る別個のＶＭにおいて提供される。アルゴリズムは、ＶＩの既存のインフラストラクチャおよび構成要素を利用し、プラットフォーム／ＯＳに依存しないと同時に、長距離にわたってリモートで、「シン」クライアントとすることも「ファット」クライアントとすることもできるクライアントを介して働くことができる能力を提供する。
【００５７】
さらに図２−１を参照すると、画像プロセッサアルゴリズム１５５は、複数の他のＶＭ１００と並行してハイパーバイザ上で走っているサーバ仮想マシン（ＳＶＭ）１５０として働き、ハイパーバイザを介して複数のＶＭ１００と対話する仮想マシンにおいて提供される。ＳＶＭ１５０は、様々なＶＭ１００からのフレームバッファにアクセスし、それらを読み取り、管理する。仮想環境の基本インフラストラクチャは図１を参照して説明したものと同様である。アルゴリズム１５５を介したＳＶＭ１５０とＶＭ１００との間の対話は、ＶＭにとってローカルであり、各ＶＭと関連付けられた仮想モニタ画面上でレンダリングされるはずのフレームバッファ情報を表すグラフィカル出力を取り込むのに、複雑な圧縮技術も高処理能力のＣＰＵも不要である。一実施形態において、アルゴリズムは、ハイパーバイザを介して直接各ＶＭ１００のフレームバッファデータ１１０にアクセスし、それを読み取るように設計される。
【００５８】
図２−２に、ハイパーバイザ上で走っているＶＭのうちのごく少数１５０だけがアルゴリズム１５５を独立に装備している本発明の別の実施形態を示す。アルゴリズムを独立に装備するＶＭ１５０はそれぞれ、ハイパーバイザ上で走っている１台または複数の他のＶＭ１００からのフレームバッファデータにアクセスし、それを読み取り、管理する図２−１のＳＶＭと同じ機能を提供する。この実施形態では、アルゴリズムを独立に装備する各ＶＭのフレームバッファデータは、アルゴリズムを独立に装備する他のＶＭによってアクセスされ、管理され得る。図２−３に、ハイパーバイザ上で走っているすべてのＶＭ１５０がアルゴリズム１５５を独立に装備するさらに別の実施形態を示す。画像プロセッサアルゴリズムを独立に装備する各ＶＭ１５０は、仮想センタ内の他のＶＭ１００のうちの１台または複数のフレームバッファデータにアクセスし、それを読み取り、管理する図２−１のＳＶＭと同じ機能を提供する。図２−１、図２−２および図２−３に示す各実施形態におけるアルゴリズムは、ハイパーバイザを介して直接ＶＭのフレームバッファデータにアクセスする。ＶＭ内のアルゴリズムは、ハイパーバイザ上で走っている他のＶＭのフレームバッファデータにアクセスするだけに制限されず、ハイパーバイザを介して直接それ自体のフレームバッファデータにアクセスするようにも構成されることに留意すべきである。前述の実施形態は例示のためのものであり、限定と解釈すべきではないことに留意すべきである。したがって当業者は、任意の順列および組み合わせが特定のＶＭ、ＶＭのうちの少数の特定のＶＭ、またはハイパーバイザ上で走っているすべてのＶＭにおいて画像プロセッサアルゴリズムを独立に提供するために使用されてよく、ＶＭのリソースおよびアクセス可能性に基づくものとし得ることを理解するであろう。
【００５９】
読み取られたフレームバッファデータは、アルゴリズムによって、アルゴリズムの要件に従った画像データパケットへと処理され、アルゴリズムを走らせているＶＭ内の仮想ネットワーク・インターフェース・カード（ＮＩＣ）へ転送され、そこで画像データパケットは、ＵＤＰといった伝送プロトコルの要件に従うようにさらにパッケージ化される。次いでパッケージ化された画像データはＵＤＰプロトコルまたは他の機能的に同等の方式を使用して送信される。
【００６０】
次に、図２Ａおよび図２Ｂを参照して、フレームバッファデータにアクセスし、それを読み取るプロセス、および関与する様々な構成要素の役割を説明する。図２Ａに、特定のＶＭと関連付けられたオペレーティングシステム（ＯＳ）によるフレームバッファデータの宛先指定の際に使用される従来の手法を示す。各ＶＭのＯＳは、通常はＶＭと関連付けられたモニタにおいて提示される特定のＶＭについてのグラフィカル出力を表す画像データを取り込むためのビデオドライバを含む。ＯＳ内のビデオドライバは画像データを、ＯＳに提示されている物理ビデオカードへ宛先指定する。ビデオカードは、ＶＭのために画像データを解釈してグラフィックス画像にし、解釈されたグラフィックス画像をＶＭの仮想マシンディスプレイにおいて提示する。普通は専用ハイパーバイザ・アクセス・ツールを備えるＶＭであるハイパーバイザのためのコマンドセンタにおいて作業する管理者／ユーザは、ＶＭにアクセスし、ＶＭの仮想マシンディスプレイに接続して、ＶＭにおいて利用可能な１つまたは複数のサービスのトラブルシューティングと行い、または一般的に制御する。
【００６１】
公知であるように、フレームバッファの取り込み方には多くのものがある。上記の例は、フレームバッファの取り込み方が変化し、拡張し続けることを想定するために示すものである。例えば、フレームバッファへのアクセスがハイパーバイザの開発者によって決定されることになり、特定のＡＰＩを使用して特定のＶＭのためのフレームバッファの位置を見つけることができる。ＡＰＩは、特定のフレームバッファを識別し、それら特定のＶＭのためのフレームバッファデータを読み取るためのプロトコルを定義し得る。この場合の目標は、フォーマットを問わずにフレームバッファを読み取り、取り込むことである。
【００６２】
通常はＶＭの仮想モニタへ宛先指定されるグラフィックス画像は、代わりに、フレームバッファデータとして、仮想センタ内の仮想メモリ層の既定の位置へ宛先指定される。画像プロセッサアルゴリズムは、処理されたフレームバッファデータを解釈し、処理し、パッケージ化し、クライアントへ送信するように、ハイパーバイザと直接対話して仮想メモリ層内の既定の位置のところのＶＭのフレームバッファデータへのアクセスを取得する。
【００６３】
図２Ｂに、仮想センタ内の仮想グラフィックスカードを使用して、特定の仮想マシンのためのフレームバッファデータにアクセスするプロセスを示す。図２Ｂに示すように、ＶＭ上で走っているＯＳはビデオドライバを含む。仮想センタにおいて利用可能なハイパーバイザは仮想グラフィックスカードを含む。ＶＭのＯＳのところのビデオドライバはそれが物理的ビデオ（グラフィックス）カードとして知覚するものと対話する。その代わりにＯＳは、実際には、ハイパーバイザが個々のＶＭのＯＳに物理的グラフィックスカードとして提示している仮想グラフィックスカードと対話している。ＶＭのＯＳは、普通はＶＭの仮想マシンディスプレイをターゲットとするデータのアナログまたはディジタル表現をフレームバッファデータへと処理する。グラフィカル出力を表すフレームバッファデータは、ＶＭのグラフィックスドライバを介して仮想グラフィックスカードへ書き込まれる。仮想グラフィックスカードは、さらに、フレームバッファデータを、ハイパーバイザを介してアクセス可能な下にある仮想メモリ層内の対応する所定のメモリ位置へとロードする。
【００６４】
仮想グラフィックスカードは、異なるＶＭにおいて走っているＯＳに、ハイパーバイザを介してアクセス可能な下にある仮想メモリ層内の所定のメモリアドレスへフレームバッファ情報を書き込むよう指図する、ハイパーバイザによってすべてのＶＭに提示される、ビデオ電子装置規格化協会（ＶＥＳＡ）カードといった汎用カードである。下にあるメモリ層に記憶されたフレームバッファ情報は、普通、ビットマップの形であることに留意すべきである。ビットマップは未処理のコンテキストレスデータである。アルゴリズムを使用して、仮想マシンは、すべてのＶＭのために下にあるメモリ、機器およびリソースを管理しているハイパーバイザを介してすべてのＶＭのフレームバッファデータにアクセスすることができる。フレームバッファ情報（データ）は、多くの場合、例えば、／ｄｅｖ／ｆｂ０などといった機器位置を使用し、カーネルを介して利用することができる。ハイパーバイザと同じバス上に位置する、画像プロセッサアルゴリズムといったＳＶＭ（例えばＬＦＰサーバなど）内のアルゴリズムは、クライアントからの接続情報を使用し、ハイパーバイザを介して直接特定のＶＭのためのフレームバッファ情報にアクセスし、それを読み取り、読み取った特定のＶＭのフレームバッファデータを変更および新しく取得されたフレームバッファデータについて解析し、解析に基づいてフレームバッファデータを処理し、使用されるべき圧縮法を決定し、複数の画像データパケットを生成し、次いでフレームバッファ情報のパケットを、アルゴリズムとＵＤＰといった汎用伝送プロトコルの両方に従うようにパッケージ化し、パッケージ化されたフレームバッファデータを、個々の表示装置においてレンダリングするためにクライアントへ送信し、パケットの到着を測定し、必要に応じてデータを再送信する。フレームバッファデータの処理の間に、フレームバッファデータと関連付けられるコンテキストが判定され、適切なコンテキスト情報がフレームバッファデータと関連付けられる。
【００６５】
図２Ｃ−１から図２Ｃ−３に、フレームバッファデータを記憶し、フレームバッファデータにアクセスする際に使用されるフローパスの簡略化されたブロック図を示す。図２Ｃ−１には、ハイパーバイザ上で走っているＶＭ１００上で実行されているＯＳが、対応するフレームバッファデータを、仮想インフラストラクチャ内の仮想メモリ層内の特定の位置ＦＢ１  １１０へ宛先指定する一実施形態が示されている。したがって、実行時に、ＶＭ１  １００は、ビデオドライバと仮想グラフィックスカードとの支援を得て、パス１１０−１で示すように、個々のフレームバッファデータを位置ＦＢ１において記憶する。アルゴリズム１５５は、パス１１０−２で示すように、ハイパーバイザを介して直接ＦＢ１のところのＶＭのための記憶されたフレームバッファデータにアクセスする。同様に、図２Ｃ−２には、ハイパーバイザ上で実行されているＶＭ１００上で走っているＯＳが、ＬＦＰアルゴリズム１５５がＦＢ１からのフレームバッファ情報に直接アクセスすることができるように特定のメモリ位置ＦＢ１にフレームバッファデータを記憶する別の実施形態が示されている。図２Ｃ−３に示す別の実施形態において、アルゴリズムを走らせているＶＭはサーバＶＭ１５０として働き、ＳＶＭのＯＳは、パス１１０−１で示すようにＳＶＭのフレームバッファ情報が下にあるメモリＦＢ１の特定の部分に記憶されるよう指示し、パス１１０−２を介して直接、記憶されたＦＢ１からのフレームバッファ情報にアクセスする。
【００６６】
異なるＶＭからのフレームバッファ情報は、各ＶＭ上で実行されているオペレーティングシステムによって駆動され、様々なフォーマットのものである可能性があるはずである。アルゴリズムは、異なるＯＳによって提示されるフレームバッファ情報へのアクセスを可能にし、状況メッセージの種類からなる、「軽量フレームバッファプロトコル」ツールといったアルゴリズム内で利用可能なフォーマッティングツールを使用して、異なるＯＳからのフレームバッファ情報を汎用フォーマットのパケットへと変換し、再フォーマットされたフレームバッファ情報を、ユーザ・データグラム・プロトコル（ＵＤＰ）といった伝送プロトコルを使用してクライアントへ転送するための指図を提供する。前述のように、フレームバッファ情報は、コンテキストが添付されていない未処理のビットマップ情報である。アルゴリズムは、ＶＭのための特定のメモリ位置からフレームバッファデータと関連付けられたビットマップ情報を読み取り、ビットマップデータを解析してアクティビティ領域と非アクティビティ領域とを識別し、解析に基づいてデータにコンテキストを追加し、追加されたコンテキスト情報を有するより小さいパケットを生成する。例えば、データ解析は、フレームと、フレーム内のアクティビティ領域とを識別し得る。コンテキストがロードされたパケットは、アルゴリズムにおいて利用可能なフォーマッティングアルゴリズムを使用してパッケージ化され、ＳＶＭ内の仮想ＮＩＣへ転送され、そこでパケットは伝送プロトコルに従うようにさらに別のパッケージ化を施される。完全に処理され、パッケージ化されたデータは、レンダリングするためにクライアントに転送される。フレームバッファデータについての解析およびコンテキストレンダリングのほとんどは、アルゴリズムを使用して、仮想センタの内部においてＳＶＭまたはＶＭ内で、ローカルで行われることに留意すべきである。その結果、クライアント側でさらに解析または解読が行われる必要も、コンテキストを理解するためにフレームバッファデータを解析する必要も生じない。クライアントは、ロードされたコンテキストでビットマップデータを開き、クライアントの表示装置上でレンダリングしさえすればよい。クライアントは、ＳＶＭに対して失われた情報を特定し、ＳＶＭは要求に応じて再送信する。メッセージの種類およびパケット情報は比較的小さく単純であるため、再送信はわずかなオーバーヘッドで極めて正確に行うことができる。
【００６７】
図２Ｄに、クライアントへさらなる送信と、レンダリングされたパケットに応答したクライアントからのフィードバックとのためにフレームバッファデータにアクセスし、それをパッケージ化するプロセスを示す。図示のように、仮想メモリ（ＦＢ１）の特定の位置において利用可能なＶＭのフレームバッファデータ１１０は、フォーマッティングアルゴリズムを含む、ＬＦＰといったＳＶＭの画像プロセッサアルゴリズム１５５によって直接アクセスされる。アルゴリズム１５５は、ＡＰＩ、メモリアドレスなどを使用して、記憶されたフレームバッファ情報にアクセスし、それを読み取ることができる。次いでアルゴリズム１５５は、ＳＶＭのプロセッサを使用し、ＳＶＭのメモリ１３０内で、フレームバッファデータを処理してフレームバッファデータのより小さい画像データパケット２０３を生成する。フレームバッファデータの処理は、フレームバッファデータを解析してコンテキストを識別すること、および画像データパケット２０３を生成するときにコンテキスト情報をデータと統合することを含む。フレームバッファデータにアクセスし、それをパッケージ化するプロセスはＳＶＭ上で実行されるアルゴリズムに関して説明されているが、アルゴリズムは、ＳＶＭ上で実行されるだけに制限されず、ＶＭ上で実行され、フレームバッファデータにアクセスすることもできることに留意すべきである。画像データパケット２０３は、クライアントの接続パラメータ要件に従うように画像プロセッサアルゴリズム１５５内で利用可能なフォーマッティングアルゴリズムを使用して生成され、クライアントに特有ものである。前述のように、接続パラメータは、アルゴリズム１５５がクライアントのためのパケットを生成するときにこれらの要件を考慮することができるように、許容されるパケットサイズ、クライアントの種類などといったクライアントの特有の詳細を提供する。パケット２０３は仮想ネットワーク・インターフェース・カード（ＮＩＣ）１４０へ転送され、そこでパケットは、アルゴリズムによって提供されたパッケージの上にネットワークパッケージングを追加するためにさらに処理を施される。結果として得られる処理済みのパッケージ２０４は、アルゴリズムパッケージ情報とネットワークパッケージ情報の両方を含む。完全に処理されたパケット２０４は、クライアント２００と関連付けられた表示装置においてレンダリングするために、伝送プロトコルを使用してクライアント２００へ転送される。
【００６８】
さらに図２Ｄを参照すると、クライアント２００をターゲットとするパケットはクライアントＮＩＣ２１０−ａによって受信される。クライアントＮＩＣ２１０−ａは、各クライアントにおいて利用可能な標準ＮＩＣカードであり、各パケットの外側のＮＩＣ特有のネットワークパッケージ２０４を除去し、余分なものが除去されたパッケージ２０３を、クライアントＬＦＰといったクライアントアルゴリズム２１０−ｂへ送るのに使用される。クライアントＬＦＰ２１０−ｂは、ＶＭで提供される画像プロセッサアルゴリズムの簡易バージョンであり、クライアントのＮＩＣから受け取られる余分なものが除去されたパッケージを読み取り、データを処理してアルゴリズム特有のパッケージを除去するのに使用される。パッケージ情報の除去後に結果として得られる部分的なフレームバッファデータは、クライアントの表示装置においてアセンブルされ、レンダリングされる。余分なものが除去されたフレームバッファデータは、ビットマップ情報と関連コンテキストとを含み、クライアントに特有のものである。パケットは単純で汎用的なアルゴリズムを使用してパッケージ化されるため、クライアントのＬＦＰアルゴリズムにおける伸張論理も単純であり、複雑な処理を必要とせず、それによって、クライアントにおける重いＣＰＵが回避される。その結果、シンクライアントでさえも、単純な伸張論理を使用してパッケージを伸張することができる。
【００６９】
一実施形態では、レンダリングされた出力における、キーボード打鍵やマウスクリックといった任意のユーザ入力が取り込まれ、バックチャネル通信を介してＳＶＭへ返送され得る。別の実施形態では、接続の状態に関する自動フィードバックが、クライアント機器からＳＶＭへ周期的に送信され得る。これらのユーザ入力および自動フィードバックは、クライアントアルゴリズムおよびクライアントＮＩＣを使用してパッケージ化され得る。パッケージ化されたユーザ入力およびフィードバックパケット２０５はＳＶＭへ返送され、そこで伸張され、処理される。本発明の一実施形態では、ユーザ入力およびフィードバックパケット２０５は、ＳＶＭに転送されて、アルゴリズムに、クライアント２００において何がレンダリングされたか、および接続の状態を知らせる。別の実施形態では、ユーザ入力およびフィードバックパケット２０５は、個々のＯＳを介して対応するＶＭにおいて実行されている１つまたは複数のアプリケーションへ転送される。ユーザ入力およびフィードバックパケット２０５のパッケージ化は、データ宛先に基づくものである。
【００７０】
フレームバッファデータをパッケージ化するのに使用されるフォーマッティングアルゴリズムは、情報を要求するクライアントと関連付けられた情報を利用する。クライアント関連情報は、クライアントの特性を定義し、クライアントの種類、クライアント上で走っているＯＳの種類、および他の環境依存パラメータを定義する接続パラメータを解析することによって得られる。フォーマッティングアルゴリズムはこの情報を使用してフレームバッファデータをしかるべくパッケージ化する。例えば、図２Ｅに示す一実施形態では、フォーマッティングアルゴリズムは、良好なリフレッシュ速度を提供する技法を使用してコンテンツ２０３−ｂをレンダリングする単純な画像を生成するために携帯電話品質のシンクライアントについてのクライアント関連情報を使用し、他方フォーマッティングアルゴリズムは、より豊富な体験のためにカスタマイズされた複雑な種類のメッセージ２０３−ａを生成するためにデスクトップベースのシンクライアントについてのクライアント関連情報を使用する。また、別の種類のクライアントについてのさらに別のフォーマット、例えば、携帯情報端末品質のシンクライアントについての画像レンダリングコンテンツ２０３や、テレビモニタ／画面／ディスプレイベースのクライアントについての画像レンダリングコンテンツ２０３−ｃなども、フォーマッティングアルゴリズムを使用して生成され得る。さらに、フォーマットされたグラフィカル出力は搬送にＵＤＰを使用するため、クライアントは、長距離にわたっても短距離にわたってサービスにアクセスし、サービスを制御することができる。ＵＤＰプロトコルを使用して生成されるグラフィカル出力は、フォーマッティングアルゴリズムから受け取られる特定のクライアントベースのパケットからの様々な入力に基づいて変動する。よって、グラフィカル出力２０４は、画像レンダリングコンテンツ２０３に対応し、グラフィカル出力２０４−ａは画像レンダリングコンテンツ２０３−ａに対応し、以下同様である。データの搬送において使用されるＵＤＰは例示であり、限定とみなすべきではないことに留意すべきである。長距離または短距離にわたってサービスにアクセスすることのできるクライアントの能力が維持される限り、他の伝送プロトコルも使用され得る。
【００７１】
前述のように、画像プロセッサアルゴリズムは、アルゴリズムが適切なフレームバッファ情報を取り出し、処理し、パッケージ化し、クライアントへ送信することができるように、ハイパーバイザを介して直接個々のＶＭのためのフレームバッファ情報にアクセスする。アルゴリズムはどんなＯＳとも対話せず、その結果、ハイパーバイザからフレームバッファ情報を取り出すためのどんな独自のプロトコルも必要としない。アルゴリズムが適切なＶＭと関連付けられたフレームバッファを識別するのを支援するために、ハイパーバイザは、クライアント要求を適切なＶＭのフレームバッファにマップするメモリおよび機器マネージャを含む。クライアントが接続を要求するときに、ＳＶＭ内のアルゴリズムは、一実施形態では、接続要求と関連付けられた接続パラメータを照会し、クライアントの識別情報と仮想サービスを提供することのできるＶＭの詳細とを判定し、ハイパーバイザのところのメモリマネージャと対話してＶＭを識別し、探し出す。接続パラメータからの情報とメモリおよび機器マネージャからのマッピング情報とを使用して、アルゴリズムは、ＶＭを識別し、次いで、ハイパーバイザが機器およびメモリをＳＶＭのところのアルゴリズムに供与するときに、所定のメモリ位置から識別されたＶＭのフレームバッファに直接アクセスする。
【００７２】
アルゴリズムの機能の上記の一般的理解を踏まえて、次に、アルゴリズムの様々な態様を詳細に説明する。各ＶＭのフレームバッファデータの適切な部分の取込みおよび送信を支援するために、アルゴリズムは複数のモジュールを含む。これらのモジュールは、すべてが単一の画像プロセッサアルゴリズムに統合されていてもよく、独立のモジュールとして存在していてもよい、ソフトウェア（および／またはハードウェア）モジュールである。アルゴリズムに含まれるモジュールの中には、スキャンエンジン、熱エンジン、コンテキストエンジン、論理エンジン、接続エンジン、および出力エンジンが含まれる。
【００７３】
スキャンエンジンは、ＶＭのフレームバッファにおける仮想画像および変化を見分け、フレームバッファの状態維持を時間ベースの構造に記憶するように構成される。図２Ｆに、各ＶＭのフレームバッファデータについて維持され、送信される時間ベースの構造の例を示す。例えば、クライアント特性情報に基づき、クライアントの画像構造がそのクライアントの表示装置のためにアセンブルされる。一実施形態では、画像構造は、ＬＦＰアプリケーションサーバ１から獲得される情報を含み得る。図２Ｆ−１に示す別の実施形態では、アプリケーションサーバ１からの情報に加えて、画像構造は、ＬＦＰ「広告」サーバからの広告情報といった情報や、ＬＦＰアプリケーションサーバ３から獲得される情報といった他のアプリケーションサーバ情報も含み得る。画像構造情報に加えて、個々のソースからの画像構造情報と関連付けられた任意のデルタも取り込まれ、パッケージ化され、送信される。各画像構造情報はビットマップ情報として獲得されるため、ビットマップの関連する部分情報だけが各ＬＦＰサーバから送信される。よって、図２Ｆ−１に示すように、ＬＦＰアプリケーションサーバ１からのビットマップ情報は囲み１および囲み２で覆われた領域を除くＬＦＰアプリケーションサーバ１からのすべてのビットマップ情報と任意のデルタとを含む。任意のデルタを含む囲み１についての情報はＬＦＰ広告サーバから獲得され、任意のデルタを含む囲み２についての情報はＬＦＰアプリケーションサーバ３から獲得される。様々なソースからのビットマップ情報は帯域内伝送として受け取られる。よって、情報が送信されるときに、画像データは、クライアントの表示装置において伸張され、アセンブルされ、レンダリングされ、各ソースからの関連情報だけが含まれ、それによってネットワーク帯域幅および計算処理リソースが節約される。
【００７４】
帯域内伝送に加えて、アルゴリズムは、帯域外伝送がクライアントにおいてレンダリングされることも可能にする。よって、図２Ｆ−２に示すように、表示モニタで見える領域についての帯域内伝送と関連付けられた情報および任意のデルタが、クライアントにおいて獲得され、レンダリングされる。この実施形態では、見えない領域についての情報は獲得されず、それによって、ネットワーク帯域幅および処理リソースが保持される。一実施形態では、クライアントの全画面を使用して、ビデオストリームといった帯域外ストリームがレンダリングされ得る。この実施形態では、アルゴリズムは、帯域外ストリームをレンダリングするために使用される表示領域の量を判定し、クライアントの表示装置上に情報をレンダリングするための可視空間がないため、クライアントのための帯域内伝送パケットを生成することをインテリジェントに回避し、それによって、ネットワークおよび処理リソースおよび処理時間を節約する。よってアルゴリズムは、どのフレームバッファデータがレンダリングされており、どんなソースが使用されているか判定するための知能を提供し、画像構造は判定に基づいて生成される。
【００７５】
図３Ｂに戻って、熱エンジンは、ＶＭのフレームバッファのグラフィカルフレーム内のアクティビティ領域を位置決めする際の精度のスライディングスケールを有し、アクティビティのレベルを状態アクティビティの速度微分として認識するように構成される。コンテキストエンジンは、熱エンジン出力を評価して、連続した領域を特定の専用の技法で処理するために、アクティビティやコントラストといった要素によって連続した領域を識別することができるかどうか判定するように構成される。論理エンジンは、熱消費率、色彩構成、熱エンジンを介してＶＭのフレームバッファから獲得された熱領域の対比、コンテキストエンジンからの入力、接続されたシンクライアントのプラットフォーム、接続エンジンから獲得された接続の品質といった様々なモジュールからの入力に基づいて圧縮／伝送にどの技法が用いられるべきか判定するように構成される。また論理エンジンは、解析された画像データ情報を選択された技法を用いて符号化するようにも構成される。
【００７６】
接続エンジンは、例えば、ａ）初期ハンドシェークおよび進行中の接続品質ダイアログのためにシンクライアントと、ｂ）品質問題を獲得し、それに対処するために論理エンジンと、ｃ）スキャンエンジンに適正なＶＭのフレームバッファを見るよう指図するためにスキャンエンジンとなど、複数のモジュールと対話するように構成される。接続エンジンは、ユーザ／アセット・ディレクトリ・システムと対話することによって適切なＶＭのフレームバッファを識別する。また接続エンジンは、ＶＭのフレームバッファ情報の送信を適切に宛先指定することができるように、出力エンジンと対話してクライアントの位置を決定するようにも構成される。
【００７７】
出力エンジンは、カスタムヘッダを設計し、カスタムヘッダと関連付けられるデータとを、ＵＤＰといった単純なトランスポートプロトコルを使用して効率よくシンクライアントへ送信するのに最適なパケットサイズを定義するように構成される。
【００７８】
一実施形態では、アルゴリズムは、ハイパーバイザと対話し、ＶＭのＯＳとは直接対話しない。別の実施形態では、多少のＯＳ対話も可能としてもよい。いずれにせよ、アルゴリズムは、ＯＳから下にあるハードウェアへのグラフィックス命令に対して透過的になる。画像情報を取り込む従来のプロセスは、ＡＴＩ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｃ．やＮＶＩＤＩＡＴＭ（商標）からのグラフィックカードといった、グラフィックカードを使用することによるものであった。これには、多くのＣＰＵ処理能力と、仮想環境のオーバーヘッドを増加させるカスタマイズされた圧縮／伸張論理を必要とし、結果的に性能を低下させ、ユーザ満足度を低下させるものとなった。本発明の実施形態では、アルゴリズムは、ハイパーバイザと対話して個々のＶＭのフレームバッファ情報に直接アクセスする。さらに、フレームバッファデータは未処理のビットマップデータ形式であり、アルゴリズムがその未処理のビットマップデータを再フォーマットするため、グラフィックス命令を解読するための複雑な圧縮／伸張論理に必要が生じない。アルゴリズムは、ＯＳからの実際の命令ではなく、ハイパーバイザを介してフレームバッファを取り出すことに焦点を合わせているため、符号化／復号のための独自のプロトコルの必要が生じず、アルゴリズムがＯＳ／グラフィックスカードに依存しないものとなる。
【００７９】
次に、図３Ａおよび図３Ｂをそれぞれ参照してアルゴリズム内の様々なモジュールを説明する。図３Ａおよび図３Ｂには、特定のＶＭのためのフレームバッファを活用する際に関与する様々な構成要素の簡略化されたブロック図が示されている。図３Ａには、システム構成要素、およびＶＭ内の仮想サービスを制御するための様々な構成要素間の対話の簡単な概要が示されており、図３Ｂには、画像プロセッサアルゴリズムの様々な構成要素の簡略化されたブロック図が、ハイパーバイザを介して特定のＶＭのためのフレームバッファを活用し、フレームバッファと関連付けられたデータの送信を対応するクライアントへ宛先指定する際にアルゴリズムによって使用されるプロセスフローと共に示されている。クライアントは、「シン」クライアントとすることも、「ファット」クライアントとすることもできる。シンクライアントは、モバイル機器、携帯情報端末、携帯電話、画面、ネットブック、キオスク、スマートフォン、タブレットまたは他のそのような機器のいずれかを含み得る。ファットクライアントは、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーションなどを含み得る。シンクライアントとファットクライアントとの上記リストは例示であり、限定と解釈すべきではない。
【００８０】
図３Ａに示すように、画像プロセッサアルゴリズムといったアルゴリズムは、本発明の一実施形態では、他のＶＭと並行してハイパーバイザ上で走る、ＬＦＰ（軽量フレームバッファプロトコル）ＳＶＭといったサーバＶＭ内で提供される。ＳＶＭは、この実施形態では、他のＶＭとは異なる。アルゴリズムは、接続要求を受け取り、接続（または環境）パラメータを照会し、接続要求において要求された仮想サービスを提供するＶＭを識別し、識別されたＶＭと関連付けられたフレームバッファデータにアクセスし、それを読み取り、フレームバッファデータを画像要素へとパッケージ化し、フレームバッファを周期的にスキャンして連続したアクティビティ領域およびアクティビティのレベルを判定し、コンテキストを識別し、画像要素の処理とパッケージ化とレンダリングするためのクライアントへの送信とに使用すべき適切な（１つまたは複数の）技法を決定し、画像要素を送信するための、スキャンエンジン、熱エンジン、コンテキストエンジン、論理エンジン、接続エンジン、出力エンジンといった複数のモジュールを含む。
【００８１】
アルゴリズム内の各モジュールは、ディレクトリサービス３１０と対話して要求が適切に宛先指定されるように特定のＶＭ上で利用可能なサービスへのクライアントのマッピングを決定し、時間ベースの状態維持データベース３２０と対話してある期間にわたるアクティビティのレベルに基づいてアクティビティ領域を記憶し、変化領域データベース３３０と対話して変化した異なる領域を判定し、フレームを認識し、論理エンジンをそれらの領域だけに集中させ、非アクティビティ領域を無視させるようにし、圧縮法／伝送法データベース３４０と対話してクライアントへ送信する前に関連する画像領域を圧縮するのに使用すべき適切な（１つまたは複数の）技法を識別する。アルゴリズムの外部にある接続またはサービスブローカが、アルゴリズムのモジュールが識別されたＶＭと対話して、画像データ要素としてクライアントへさらに送信するためのフレームバッファデータへのアクセスを得ることができるようにＶＭを識別するのを支援する。送信された画像データ要素はクライアントにおいて受信され、そこで要素は復号され、伸張が行われ、伸張されたデータが、クライアントと関連付けられた表示装置においてレンダリングするために提示される。レンダリングされたデータはクライアントに特有のものであり、特定のＶＭのＶＭディスプレイの画像を表す。したがって、レンダリングされたデータは、ＶＭにおいて実行されており、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、およびユーザインターフェースの操作または非操作を示す。ユーザ対話がクライアントにおいて有効化され、ユーザ対話は、バックチャネル通信を使用してＶＭへ返送され、その結果ＶＭにおける仮想化サービスが制御される。アルゴリズムによって提供されるサービスは、特定のＶＭのＶＭディスプレイの画像といった表示サービスであることに留意すべきである。
【００８２】
またアルゴリズムは、専用の技法を使用して連続した領域の部分を抽出し、パッケージ化し、パッケージを送信することができるように、スキャンエンジンが特定の種類の連続したアクティビティ領域を有するフレームバッファの部分を判定することも可能にする。一実施形態では、フレームバッファデータが伸張され、クライアントと関連付けられた表示装置上にオーバーレイされる場合に、帯域外ストリームを呼び出すことができる。普通、ビデオコンテンツのマルチメディアデータは、オーディオとビデオ両方のコンテンツを一緒にするためのそのような手法を使用する。
【００８３】
次に、アルゴリズムの様々なモジュール内のフレームバッファデータの対話およびプロセスフローと、リモートクライアントを介してＶＭにおける仮想サービスにアクセスし、かつ／またはそれを制御するためのシステムの構成要素をより良く理解するために図３Ｂを見る。前述のように、リモートクライアントは、ＶＭと同じ場所にあっても同じ場所になくてもよいが、インターネットといったネットワークを介してＶＭに接続されているシンクライアントまたはファットクライアントとすることができる。一例では、プロセスは、クライアント（３．１８）が仮想サービスへの接続要求を開始するときに始まる。サーバＶＭ（ＳＶＭ）といったＶＭのところの画像プロセッサアルゴリズム内の接続エンジン（３．１２）が接続要求を受け取り、解釈し、ポリシ、クライアントの認証情報および位置、ならびにクライアント（３．１８）によって要求されたサービスを確認する。接続エンジン（３．１２）の機能は図８を参照して説明する。
【００８４】
図８に示すように、また図３Ｂを相互参照すると、サービスを求めて接続要求がクライアント（３．１８または８．４）から受け取られる。要求受信および要求サービスプロセスの間、接続エンジン（３．１２）は、初期ハンドシェーク（３．１４）のためと、進行中の接続品質のダイアログ（３．１５、３．１９）を維持するためにクライアント（３．１８または８．４）と対話する。接続エンジン（３．１２）内の経路指定論理８．３が要求を受け取り、さらに、ディレクトリサービス（８．２）への呼び出し（８．１）を行って、クライアントのポリシ、認証情報および位置、ならびにサービスを確認する。一実施形態では、ディレクトリサービス（８．２）は外部サービスである。初期ハンドシェーク（３．１４）の間に交換される情報は、それだけに限らないが、クライアント（８．４）の位置、接続能力（通信接続帯域幅、通信接続の品質）情報、接続すべき仮想サービス（３．０）の所望の位置、クライアント（８．４）の種類、要求されたデータの種類、クライアントと関連付けられたディスプレイの種類、およびクライアント（８．４）と関連付けられたディスプレイの構成（解像度／ビット深度／リフレッシュ速度）を含む１つまたは複数の接続パラメータを識別する。接続パラメータはクライアントの特性を定義する。
【００８５】
また接続エンジン（３．１２）は、論理エンジン（８．６）と対話して、初期ハンドシェークおよび進行中のダイアログ（３．１９）に基づいてある期間にわたる接続と関連付けられた品質問題（３．１５）を提供／更新し、スキャンエンジン（８．５）と対話して、スキャンエンジンに、それを求める要求がシンクライアント（８．４）によって開始されているＶＭリソース（サービス）と関連付けられた適切なフレームバッファを調べるよう指図し、出力エンジン（８．７）と対話して、送信をクライアント（８．４）の位置へ宛先指定する。
【００８６】
次に図３Ｂを参照すると、一般に、データセンタの内部のハイパーバイザ（３．０）上に位置する仮想マシンのオペレーティングシステム（ＯＳ）は、接続されたモニタを必要とせず、「ヘッドレス」とみなされる。ＯＳがヘッドレスであるこの状況では、ＯＳはその出力をフレームバッファ（３．１）へ宛先指定する。フレームバッファ（３．１）は、特定のＶＭと関連付けられ、特定のＶＭのＯＳによってアクセスされるメモリの特定の部分に記憶された画像と関連付けられた、ＶＭの仮想マシンディスプレイの画像を表すグラフィカル出力を定義する情報である。管理者は伝統的にこのフレームバッファ構造を、個々のゲスト／ＶＭへのグラフィカル・コンソール・アクセスを提供するのに使用してきた。一実施形態では、フレームバッファは、モニタと同様に、駆動されるレートで、ビデオ電子装置規格化協会（ＶＥＳＡ）ドライバやエミュレートされたハードウェアドライバといったグラフィックスドライバによってグラフィカルコンソールにおいて更新され得る。しかし、ソフトウェアプロセスといった別のやり方でフレームバッファが更新されてもよい。
【００８７】
一実施形態では、フレームバッファおよび接続エンジン３．１２からの接続状態情報を使用して、スキャンエンジン（３．２）は、一般にそれが更新されるのと同じレートで適切なフレームバッファを自動的にスキャンし、フレームバッファの変更の有無を評価する。クライアントの種類など、初期ハンドシェーク（３．１４）時に取得される情報を用いて、スキャンエンジン（３．２）は、クライアントの能力またはサービス規則に基づいてフレームバッファ変更を取り込むために設定されたデフォルト値を指定変更しようとしてもよい。一例として、クライアントがフレームバッファデータに典型的なものである可能性のある高リフレッシュ速度に対応できない状況において、スキャンエンジン（３．２）は、フレームバッファ変更のスキャンおよび取込みを抑制してリソースを温存しようとしてもよい。スキャンエンジン（３．２）は、対応する時間ベースの記憶アレイ（３．３）に個々のＶＭのためのフレームバッファ変更の状態を記憶する。
【００８８】
あるいは、別の実施形態では、スキャンエンジン（３．２）は、ＶＭと関連付けられたグラフィックスドライバが対応するフレームバッファ内の情報を変更するときには通知される（３．２１）のを待って潜伏していることができ、次いで、後で通知され次第スキャンを実行することになる。一実施形態では、「ｓｙｎｃフラグ」または「ｓｙｎｃ信号」を使用して、グラフィックスドライバが対応するフレームバッファをいつ更新／リフレッシュするかが判定され、そのため、スキャンエンジンは、データの損失もなく、書込み／リフレッシュ動作の妨害もなく、直後に変更を取り込むことができる。
【００８９】
スキャンエンジンの機能を、図４を参照して説明する。図３Ｂと図４とを交互に参照すると、スキャンエンジン（３．２）は、スキャンエンジンが、特定のＶＭと関連付けられたフレームバッファの変更を見分け、フレームバッファ変更の状態維持を時間ベースの構造に記憶することを可能にするための複数の論理を含む。具体的には、スキャンエンジン（３．２）は、スキャン機能（４．３）と通信する接続機能（４．１）を含み得る。ダイアログ（４．２）は、接続される必要のあるフレームバッファの位置、期待されるサイズ、ビット深度およびスキャンレートからなる。ダイアログ（４．２）は、初期ハンドシェークの間に接続エンジンから受け取られる情報から駆動され、進行中のダイアログを介して接続エンジンは接続パラメータによってクライアントとの（接続）を維持する。スキャン機能（４．３）は、フレームバッファのメモリマップ（４．４）に関与し、フレームバッファ内の情報をスキャンし始める。
【００９０】
次いでスキャン機能は、前のスキャンからの変更を探すためにデルタ機能を使用し（４．６）、次いで、熱エンジン（３．４）が使用するためにデルタ状態（４．７）を時間ベースのアレイに記憶する。デルタ状態（４．７）は、グラフィカルフレームバッファ内のアクティビティ領域を表す。接続機能（４．１）は、速度に関してスキャン機能（４．３）が関与するスキャン挙動を変更し、メモリマップ（４．４）のポーズ／再使用または切断および解除を呼び出す。
【００９１】
フレームバッファのスキャンの後で、スキャンされた情報を解釈するために熱エンジン（３．４）がアルゴリズムによって使用される。一実施形態では、熱エンジン（３．４）は、フレームバッファの変更を定義する時間ベースのアレイと、スキャンエンジンによって識別されたデルタ状態とを調べ、アクティビティ領域を評価して、ある一定の期間にわたる持続したアクティビティのレベルを判定する。例えば、熱エンジン（３．４）は、信号増幅探索アルゴリズムを利用して、フレームバッファ情報の粒の粗い領域の感度を上げてもよい。一実施形態では、探索アルゴリズムが機構に対して段階的なトラフとして作用する。例えば、探索アルゴリズムは、総二分探索パターンにより区分された領域において探索を進めてアクティビティがあるかどうか判定し、続いてアクティビティがどこにあるか判定する。アクティビティを発見し次第、探索アルゴリズムは探索パターンを続行して非アクティビティ領域を除外し、実際のアクティビティのレベルだけに変換し、残りの探索を終了する。これにより、ネットワークオーバーヘッド、ＣＰＵ消費が制限され、探索時間および伝送時間が改善する。加えて、この増幅探索パターンは、コントラスト、色、他のメトリクスの連続に付随するメトリクスなどといった、複数の特性を探索するのに使用することができるという点でも、再利用可能である。一実施形態では、技法が同じままである間に複数の特性を追跡するためのパラメータを調整することができる。
【００９２】
図５に、熱エンジン（３．４）の機能を示す。詳細には、熱エンジン（３．４）は、スキャンエンジン（３．２）によって更新される時間ベースのアレイ（３．３）の変更を追跡、収集、解析し、アレイ探査フィルタ（５．１）といったフィルタを使用して変更を時間ベースのバケットへとグループ化する。解析は、時間の単一の微分とすることもでき、傾向特徴を確立するための複数の微分とすることもできる。各グループは信号増幅アルゴリズム（５．２）へ送られて十分なレベル（「十分」さは、ヒューリスティックアルゴリズムによって決定される）の変更になり、熱の性質および画素詳細レベルが、熱判定機能（５．３）を使用して確立される。この解析は、熱エンジン（３．４）によって識別される熱領域ごとに増幅プロセス（５．４）をループする。解析が完了するまで、色／コントラスト、アクティビティなどを含む熱の異なる属性についてさらに別のループが行われてもよい。熱エンジン（３．４）からの解析の結果は、変化領域データベース（３．５）といったリポジトリに維持され、コンテキストエンジン（３．６）と論理エンジン（３．７）の両方に渡される。一実施形態では、熱エンジン（３．４）からの出力はコンテキストエンジン（３．６）へ提供される。
【００９３】
図３Ｂに戻って、コンテキストエンジン（３．６）は、熱エンジン（３．５）の出力を取得し、連続したアクティビティ領域を識別し、その領域の境界または他の任意の識別特性を識別しようとする。次に、図６を参照してコンテキストエンジンの機能を説明する。コンテキストエンジンは、熱エンジン出力を評価して、連続した領域をアクティビティとコントラストの両方によって識別し、特殊な条件を備えるフレームとして扱うことができるかどうか判定するための論理を含む。一実施形態では、コンテキストエンジン（３．６）は、単一化アルゴリズム（６．１）を利用し、コンテキストエンジン（３．６）に供与される文法規則ライブラリにおいて利用可能な幾何学的原理、カラーコントラストおよび時間に基づく専用に作成された文法規則（６．２）を使用して、多変数データセットの中からメタパターンを探す。一実施形態では、帯域外処理または他の技法についての選択を行うために、変数の中でも特に最善の帯域幅と最善の体験（切断なし）と最善の中央処理装置（ＣＰＵ）性能とのバランスをとる完全な境界発見（特異な統一された圧縮セットアップ／分解）を与えることが望ましい。一実施形態では、コンテキストエンジン（３．６）は、より小さいフレームに対して解析を行い、小さいフレームをつなぎ合わせて連続したエンティティとして扱うことによって大きいフレームをアセンブルするように構成される。
【００９４】
コンテキストエンジン（３．６）は、アクティビティに隣接する領域におけるコントラスト差を考慮に入れる。またコンテキストエンジン（３．６）は、持続性の可能性を判定し、代替の技法でアクティビティを処理する値を確立するために、ある一定の期間にわたるアクティビティのレベルも調べる。コンテキストエンジンの出力はコンテキストアレイ（６．３）において維持される。
【００９５】
図３Ｂに戻って、論理エンジン（３．７）は、様々なソースからの出力を解析し、フレームバッファ内のデータの圧縮および送信にどの技法を用いるべきか判定する。論理エンジン（３．７）は、熱エンジンからのフィード（３．８）、コンテキストエンジン（３．９）からのフィード、初期ハンドシェーク（３．１４）からの情報（クライアントの種類、接続のサイズおよびコントラスト解析をそれに対して重み付けするためのビット深度に関する情報）、バックチャネルに沿ったクライアントからの進行中の接続品質のフィード（３．１５）といった複数の供給源からのフィードを取り込む。
【００９６】
次に、図７を参照して論理エンジン（３．７）の機能を説明する。論理エンジン（３．７）は、接続エンジン（７．２）、熱エンジン（７．３）、コンテキストエンジン（７．４）から出力を取り込み、解析機能（７．１）を使用して多変数解析を行って、サーバ側の性能と、クライアント側ユーザ体験とネットワーク消費の効率との必要のバランスをとる。一実施形態では、論理エンジンは、フレームバッファ内のデータを圧縮するための最適な技法を選択するのに利用可能な圧縮法のリスト（７．５）を利用する。
【００９７】
アルゴリズムは、データをリフレッシュ／回復するための効率的な手段を提供する。アルゴリズムによって生成される画像データパケットは、仮想マシンディスプレイの画像の特定の部分に相関し、クライアントにおいてその画像の特定の部分をレンダリングするために割り当てられるデータを含む。前述のように、各画像データパケット内のデータは、仮想マシンディスプレイの画像の特定の部分を定義する比較的単純な文法で構成される。生成される画像データパケットの文法が簡略化されたものであるために、紛失パケットを正確で集中した方式で再送信することが可能である。先行技術では、クライアントにおいてディスプレイをリフレッシュするのに、グラフィックス命令と画像データとを保持するパケットのストリームを送信する必要があるはずである。複雑な文法を用いれば、クライアントのところの表示ドライバが画像をレンダリングするためのパケットを復号するのに必要とする完全な命令セットを記述するために、各パケットで送られる画像データを一連の他のパケットに関連付けることができる。多くの場合、表示領域または部分のリフレッシュは、ディスプレイ全体を更新するために複数のパケットを獲得することを必要とする。というのは、パケットは、ディスプレイの特定の部分または部位（１つまたは複数の特定の画素など）に事前に割り当てられず、相関してもいないからである。
【００９８】
よってアルゴリズムは、クライアントにおいてレンダリングされる画像の品質を維持しながら送信されるデータの量を低減することによって、ネットワーク／コンピューティングリソースおよびクライアントへのフレームバッファデータの送信／レンダリングのための時間の最適化を可能にする。さらにいうと、アルゴリズムは、リフレッシュされ、または更新される必要のある表示画面の領域と相関するパケットのうちの特定のもののリフレッシュまたは再送信を可能にする。ディスプレイ全体が周期的に更新され、またはリフレッシュされるが、完全なリフレッシュまたは更新が必要とされないときに、リフレッシュを必要としない領域についてのパケットを送信しないことによって節約される帯域幅は相当な大きさになり得る。本明細書では、クライアントは、アルゴリズムから受け取られる画像データパケットを読み取り、パッケージング情報を除去し、パケットに含まれるデータを復号し、データをクライアントのディスプレイ上の適切な部分にマップし、復号データのマッピングに基づいてクライアントのディスプレイ上の（１つまたは複数の）適切な部分をレンダリングするための必要な論理を含むことに留意すべきである。一実施形態では、クライアントにおける論理は、データのうちのいずれかをそのプログラムされたルーチンによって処理するためのクライアントのローカル表示ドライバを必要とせずに、画像データパケット内のすべてのデータを処理することができる。別の実施形態では、クライアント内の論理は、１つまたは複数のプログラムされたルーチンによってある量の処理を提供するクライアントのローカル表示ドライバを用いて、画像データパケット内のデータを処理することができる。ローカル表示ドライバによって必要とされる処理の部分は、クライアントのディスプレイの特定の部分へのデータのマッピングや色のマッピングなどを含み得る。
【００９９】
データの一部だけが送信されればよい理由はいくつでもあるはずである。理由の中には、接続不良によるデータの損失、特定の部分における高アクティビティによるデータリフレッシュ、アクティビティが非常に低いまたはアクティビティがないことによる周期的リフレッシュなどが含まれ得る。アルゴリズムは、クライアントに必要なデータを提供するために、熱エンジンおよび論理エンジンからの出力を使用してフレームバッファデータの特定の部分におけるアクティビティのレベルを識別し得る。図７Ａ〜図７Ｃに、クライアントにおいてＶＭディスプレイの特定の部分をリフレッシュするために特定の画像データパケットが送信されるいくつかの例を示す。本明細書では、最初に、ＶＭディスプレイの画像を表すフレームバッファからすべてのデータがレンダリングするためにクライアントへ送信されることに留意すべきである。ＶＭディスプレイの画像の初期レンダリングの後で、データの特定の部分または全部が周期的にリフレッシュ／更新され得る。図７Ａに示す一実施形態では、ＶＭディスプレイの特定の部分のデータは、クライアントにおいてデータをリフレッシュするために周期的に送信される。これは、個々のＶＭにおけるフレームバッファデータについて記録されたアクティビティがないことに起因するものである場合もある。その結果、クライアントへ送信するために利用可能な新しいデータが生じず、クライアントにおいてすでにレンダリングされている画像の特定の部分をリフレッシュするための古く冗長なデータだけが再送信されることになる。これは、最も古いデータが最初に来る順番で行われることになる。図７Ｂでは、送信されるデータは、若干の新しいデータと大部分古く冗長なデータとを含み得る。例えば、ＶＭ画像ディスプレイの特定の部分についての新しいデータは、Ｍｉｃｒｏｓｏｆｔ（商標）Ｗｏｒｄ文書といったアプリケーション画面上の点滅するカーソルと関連付けられていてもよく、冗長なデータは、表示画面の古くなった部分と関連付けられたデータとすることができる。同様に、図７Ｃでは、画像の特定の部分について送信されるデータは、大部分新しいデータとわずかな古く冗長なデータとを含み得る。例えば、新しいデータは、アプリケーション画面上のタイマと関連付けられていてもよく、古く冗長なデータは、変化していない画像の残りの部分の一部とすることができる。図７Ａ〜図７Ｃの各矢印の大きさは、クライアントへ送信される個々のデータの量を示す。クライアントへ送られる各画像データパケットの相関性により、画像船体についてのデータを送る必要もなく、リフレッシュ／回復すべき関連データだけを送ることができる。画像データパケットによって送られるＶＭの表示画面の特定の部分に割り当てられるビットマップデータは、残りのデータがリフレッシュされることを必要とせずにデータの特定の部分をリフレッシュ／回復することを可能にし、それによって待ち時間およびネットワーク／コンピューティングリソースが低減される。
【０１００】
図３Ｂに戻って、接続品質バックチャネル（３．１５）は、受信パケットのパケットヘッダを見守り、パケットのジッタ、損失および順序の乱れの情報に関して報告する情報のＵＤＰストリームである。加えて、ＵＤＰストリームは、待ち時間、帯域幅および損失の有意な、永続的調整も見守り、それらを論理エンジン（３．７）に報告する。一実施形態では、論理エンジン（３．７）は、クライアントへ様々な種類のフレームバッファを配信するために呼び出す所定の論理／機能のセットを有する。これらの機能は、様々なフィードから確認される刺激に基づいて特定の組み合わせで使用される圧縮法／伝送法（３．１０）の組み合わせである。一実施形態では、論理エンジン（３．７）は、多変数解析によって接続およびクライアントと関連付けられた様々なパラメータおよび特性を考慮に入れる。
【０１０１】
例えば、解析段階において、論理エンジンは以下を考慮に入れる。（ａ）クライアントの種類。クライアントの中には帯域外マルチメディアを扱うことができるものとできないものとがある。携帯電話、デスクトップおよびＯＳは、ネットワーク挙動を処理し、バッファに入れることができる機能に対して異なる点で影響を及ぼす。その結果、使用される技法は、ネットワーク挙動を考慮に入れ、フレームバッファデータの出力ストリームをしかるべくフォーマットする。加えて、伸張アルゴリズムの中にはあるクライアントにとって重すぎる可能性があり、代替の技法が用いられる必要があるものもある。（ｂ）接続の種類。あるネットワークは、用いられる必要のあり技法の性質を変更し得る待ち時間とジッタ両方の特性を有するものがある。（ｃ）領域のアクティビティレベルおよびサイズ／範囲。異なる条件下では、領域のサイズ／範囲に対応するためのブロックサイズと圧縮法とが用いられるはずである。加えて、異なる条件下では不可逆的圧縮と可逆的圧縮との選択も用いられるはずである。（ｄ）領域の色分布。論理エンジンは、ランダムなサンプルを使用して色彩場の複雑さを確認し、テキストページと画像と一貫した色については異なる圧縮法を用い得る。また論理エンジンは、ランダムな特異点の領域を識別して誤りを回避するためのバランシングエージェントとして、ポアソン分布アルゴリズムも利用する。（ｅ）人間の視覚の許容誤差に合う技法を用いた画像解析。（ｆ）いくつかの技法が、収穫逓減または高い非能率レベル（例：元のデータより大きいペイロードを生じる圧縮など）に遭遇し、技法を調整するシナリオ。（ｇ）コンテキストエンジンは、階層化アルゴリズムを用いて扱うことができる連続した領域を識別し得る。特定の種類のフレームバッファデータにはストリーミングまたは帯域外アルゴリズムを用いることができる。（ｈ）論理エンジンは、層識別法を用いてデータストリームを識別するように構成される。というのは、他のデータ・ストリーム・ソースがそのクライアントへ宛先指定されている可能性もあるからである。
【０１０２】
論理エンジンによって用いられ得る圧縮の種類または技法には（それだけに限らないが）、画素スキャン、トリクセル（ｔｒｉｘｅｌ）（すなわち画素のグループ）、ビットマップ圧縮（不可逆的、ＪＰＥＧなど）、ビットマップ圧縮（可逆的、ＰＮＧなど）、正方形（可変サイズ）、長方形（可変幅、高さ）、伸張ビットマップ、色定数、ビットマップキャッシング、および失効データリフレッシュといった損失管理法が含まれる。前述の用いられる圧縮の種類または技法のリストは例示であり、網羅的または限定的なものとみなすべきではない。圧縮の機能および意図がエコシステムにおいて維持される限り、別の種類の圧縮または技法も使用され得る。
【０１０３】
圧縮法／伝送法（３．１０）を使用した論理エンジン出力は出力エンジン（３．１１）に渡され、出力エンジン（３．１１）は、パケットをパッケージ化し、接続エンジン（３．１３）によって提供される位置指定に基づいてパケットをシンクライアント位置へ送信する。図９に、出力エンジン１．１１の機能を示す。出力エンジンは、宛先経路指定論理９．１を使用して接続エンジン（９．２または３．１２）と対話し、そこから最初の要求が受け取られたシンクライアントの位置、クライアントの種類などを決定する。パケットはＵＤＰ技術を用いてネットワーク上に置かれ、コンテンツと、ネットワークＵＤＰバッファを扱うことのできる能力を定義するクライアントの種類（３．１８）とに基づくカスタムヘッダおよびパケットのサイズ（９．６）でサイズ設定される（９．５）。
【０１０４】
クライアントはパッケージ化されたフレームバッファデータを受信し、ヘッダを復号し、指図通りに情報を画面フレーム上に直接配置する（９．７）。基本原則は、非常に軽量で低計算処理のクライアントを有することである。
【０１０５】
図３Ｂに戻って、クライアントは、接続エンジン（３．１２）との初期ハンドシェーク（３．１４）時に収集された接続情報に基づき、そのマウスクリックおよびキーボード打鍵（３．１６）を、ＵＤＰストリームによってＯＳセッションへ送る。加えて、キーボード打鍵／マウスクリックは、変更の可能性の高い領域に関する効率の良いヒントを提供するために、スキャンエンジンと熱エンジンとにも送られる（３．２０）。
【０１０６】
図１０に、シンクライアントと仮想環境内のＶＭ上のアルゴリズムとの間の相互の対話による取込み画像の微調整／更新についての例を示す。具体的には、変更の可能性の高い領域を識別するマウスクリックおよびキーボード打鍵（１０．３）が、クライアントからスキャンエンジン（３．２）と熱エンジン（３．４）とに送られる（１０．４）。一実施形態では、検出されたマウスクリックおよびキーボード打鍵に基づいて、スキャンエンジンに休止状態から抜け出てユーザ入力をスキャンするよう促すことができ、熱エンジンは、ユーザにとっての肯定的な体験を保証するためにクリック／打鍵によりアクティブ領域に人工的な熱を加えようとし得る。よって、アルゴリズムは、クライアントからの入力に基づいて変更の可能性の高い領域を識別し、これらの領域におけるアクティビティを監視し、変化のデルタを生成し、微調整された情報をレンダリングするためにクライアントに転送することによって取込み画像を微調整する。
【０１０７】
クライアントは、クライアントと接続エンジン（３．１２）との間で交換され、初期ハンドシェーク時に獲得される接続パラメータにおいて提供される（１０．２）宛先経路指定（１０．１）に基づいて、パケットにおいて出力エンジン（３．１１）から宛先変更されたフレームバッファデータ（１０．７）を受信する。パケットは伸張され、クライアントにおいて利用可能な表示機能（１０．９）を使用してレンダリングされる。またクライアントは、クライアントＯＳ上で直接復号し、フレームバッファからのデータがすでにレンダリングされているクライアントと関連付けられた画面（１０．９）上にオーバーレイすることのできる、ＯＳ（３．０）からの帯域外マルチメディアストリーミングのダイレクトストリーム（１０．１０または３．１７）も受信し得る。
【０１０８】
一実施形態では、クライアントとアルゴリズムの１つまたは複数のモジュールとの通常の対話に加えて、クライアントは、論理エンジン３．７と対話して、バックチャネルハンドシェークを介した接続品質と関連付けられた情報も交換し、この情報もやはりスキャンエンジンと熱エンジンと１０．６に転送される。加えて、バックチャネル通信は、クライアントが、クライアントの表示装置への変更やクライアントにおける１台または複数の表示装置の追加を含む接続パラメータへの動的変更といった接続状態の更新を転送するのにも使用される。スキャンエンジンと熱エンジンとに転送される更新に加えて、クライアントは、ＶＭ上で走っているアプリケーションにユーザ対話も転送する。ユーザ対話は、スキャンエンジンによって受け取られ、ＶＭのＯＳを介して適切なクライアントへ転送される。
【０１０９】
一実施形態では、マウス／キーボードと同じ機構およびストリーミング法によって二方向マルチメディアストリーミング通信を行うことができる。ビデオの一例は、正しいソース層へ接続されるべきクライアントと対話することになる、階層化技術による（ユーザフィードバックのための）クライアント上のローカルドライバによるローカル表示と、消費し処理するためのＯＳへの逆方向のストリーミングであろう。
【０１１０】
この特徴は連合の原理に基づいて設計され、複数のソースが同じクライアントへ体験を提供する。そのためには、各ソースストリームが階層化識別を有し、それによって帯域外ストリームを親層と再統合することができることが必要である。加えて、クライアントに複数のソースを宛先指定することができるが、クライアントは、一度に１つのソースとだけしか対話しようとしない可能性もある。したがって、クライアントは、いずれかの時点でソースの所望の状況を伝える（３．１９）ことができる能力を有する必要がある。また、スキャンエンジンおよびすべての下流側のサービスも、非優先状況にあるときに、フレームバッファのスキャンを停止することによってリソースを温存するように構成される。
【０１１１】
また、Ａｎｄｒｏｉｄ（商標）携帯電話ＯＳといったいくつかの新しいモバイル・クライアント・オペレーティング・システムは、基本通信プロトコルを動作可能状態に保ったまま、画面アクティビティを分離し、切断するための構造も含む。
【０１１２】
同様に、あるシナリオでは、信号（３．１９）をスキャンエンジンに送って、スキャンの優先度を下げることができ、よってサーバ側と帯域幅両方のリソースが節約される。一例としては、クライアントがクラウドベースのホスティング・デスクトップ・サービスに加入しており、同時に、別個のクラウドからのＤＶＲ娯楽サービスを消費している場合が考えられる。画面上で何が見えるかに応じて、各クラウドサービスは、サービスがクライアント上で見えない場合には、個々のフレームバッファを処理しない場合もある。前述した図２Ｆには、フレームバッファ情報の選択的表示の概念が示されている。クライアントは、層論理に基づいて処理の必要を伝えるはずである。別の例は、デスクトップの状況とデスクトップ提供者の広告規則エンジンとに依存する、広告ベースの層が画面上に配置されているクライアントへ配信されるホスティング・デスクトップ・サービスとすることができるはずである。
【０１１３】
アルゴリズムの働きに関する上記の詳細な説明を踏まえて、次に、図１３を参照して様々なプロセス動作を識別するプロセスフローを説明する。プロセスは、動作１３１０に示すように、クライアントから受け取られる特定のＶＭへの接続を求める要求から開始する。接続要求は、ＶＭ上で走っている仮想サービスにアクセスし、それを制御することを求めるものであり、クライアントの接続要件を定義する複数の接続パラメータを含む。要求は仮想マシンにおいて受け取られ、仮想マシンは画像プロセッサアルゴリズムを実行している。アルゴリズムを備える仮想マシンは、一実施形態では、ハイパーバイザ上で走っているその他のＶＭのフレームバッファデータにアクセスし、それを制御するサーバ仮想マシンとして動作し得る。アルゴリズムは、動作１３２０に示すように、接続要求を照会してサービスと位置情報とを識別する。照会に基づき、アルゴリズムは、ハイパーバイザ上で走っている複数のＶＭの中から、クライアントによって要求されたサービスを提供する特定のＶＭを識別する。次いでアルゴリズムは、その上で複数のＶＭが実行されているハイパーバイザを介して、メモリ内の所定の位置にある識別されたＶＭのフレームバッファ情報に直接アクセスする。フレームバッファは、ＶＭと関連付けられた仮想マシンディスプレイの画像を表すグラフィカル出力を定義する。ＳＶＭのところのアルゴリズムは、動作１３４０に示すように、画像を定義するフレームバッファデータを読み取り、アルゴリズム内に含まれるフォーマッティングプロトコルを使用し、クライアントから初期接続要求と共に獲得された接続パラメータに基づいてフレームバッファデータを画像データパケットへと処理する。パッケージ化された画像パケットは、動作１３５０に示すように、ＳＶＭのネットワーク・インターフェース・カード（ＮＩＣ）へ転送され、そこで画像パケットは、伝送プロトコルに従うようにさらにパッケージ化され、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントに送信される。レンダリングされたクライアントデータは、識別されたＶＭと関連付けられた仮想マシンディスプレイの画像を定義する。クライアントは、画像データパケットを復号／伸張し、画像データパケットから得られたデータをアセンブルし、アセンブルされたデータをクライアントにおいてレンダリングする。レンダリングされたグラフィカル出力における、マウスクリックやキーボード打鍵といったユーザ対話を取り込み、ＶＭの微調整および制御のためにアルゴリズムへ返すことができる。
【０１１４】
アルゴリズムの上記概要を踏まえ、次に、アルゴリズムを使用する様々なシナリオ／適用例のより詳細な説明を行う。アルゴリズムは、それだけに限らないが、いくつか例を挙げると、デスクトップ適用例、ゲーム適用例、家電適用例、モバイル適用例を含む様々な設定において使用することができることに留意すべきである。上記の適用例のリストは例示であり、限定と解釈すべきではない。アルゴリズムを使用することのできる他の適用例／シナリオも可能である。また、アルゴリズムの全般的機能および様々な構成要素との対話があらゆるシナリオ／適用例の下で同じままであることにも留意すべきである。以下の各項で論じるように、アルゴリズムへのアクセスの仕方およびアルゴリズムの使い方だけが異なる。
デスクトップ適用例：
【０１１５】
デスクトップサービスは、パーソナルコンピュータ（ＰＣ）、デスクトップ、ラップトップなどといったコンピューティング機器を介して提供される。この適用例の実施形態は、インターネットなどのネットワーク接続を使用し、デスクトップを介して、サーバＶＭ（ＳＶＭ）において実施されるアルゴリズムを使用する。本明細書では、アルゴリズムはＳＶＭにおいて実施されるものと解釈されるが、「サーバ」という用語は、アルゴリズムが実施されたＳＶＭが、クライアントによって要求されるサービスを提供することによりクライアント／サーバコンピューティングにおけるサーバのように振る舞うことを示すのに使用されるにすぎないことに留意すべきである。ＳＶＭは他のＶＭからの情報を求めるクライアントとして振る舞ってもよく、その場合他のＶＭはサーバの役割を引き受けることができる。アルゴリズムは、仮想インフラストラクチャにおいて利用可能な任意のＶＭ上で実施されてよい。図１２Ａに示す一実施形態では、クライアントはＰＣやラップトップといったデスクトップである。最初に、インターネットなどのネットワークに接続されたデスクトップは、仮想センタ（ＶＣ）内で利用可能な仮想サービスにアクセスし、それを制御することを求める接続要求をＶＣに送る。接続要求は、デスクトップの識別情報を他の接続パラメータと共に含む。デスクトップは、まず、仮想サービスへのアクセスを提供する前に、接続要求において提供される識別情報と他の認証情報とを使用して認証される。一実施形態では、デスクトップはウェブサイトを介して認証され、ウェブサイトは、接続要求から獲得されるデスクトップの識別情報を使用して、仮想センタと関連付けられた、インターネット上で利用可能な仮想インフラストラクチャ（ＶＩ）にアクセスすることのできる許可された機器のリストを維持する。デスクトップの識別情報を検証する前述のプロセスは、認証を確立する１つのやり方にすぎず、認証を確立する他のやり方を使用することもできる。認証後に、デスクトップからの接続要求は、ＶＩにおいて他のＶＭと並行して走るＳＶＭへ送られる。ＳＶＭ内の画像プロセッサアルゴリズムは、接続パラメータを照会してデスクトップの識別情報、デスクトップの種類、デスクトップと関連付けられた表示装置の種類、要求された仮想サービスの識別情報、サービスを提供するＶＭ上で走っているオペレーティングシステム（ＯＳ）、ＶＭのＯＳと対話するのに使用されるプロトコル、およびデスクトップの他の接続要件を獲得する。よって、接続パラメータは、クライアントと関連付けられた接続その他の環境関連情報を提供し、デスクトップの種類、クライアントの発信元インターネットプロトコル（ＩＰ）アドレス、仮想サービスのための宛先ＩＰアドレス、クライアントの種類、クライアント識別情報、クライアントと関連付けられた表示装置の種類、仮想サービスを提供するＶＭ上で走っているＯＳ、ＶＭのＯＳと対話するのに使用されるプロトコル、利用可能な帯域幅の量、待ち時間の点での機器の位置、接続の品質などを含む。
【０１１６】
アルゴリズムは、その上でＶＩの複数のＶＭが走っているハイパーバイザと適切に対話して識別されたＶＭと関連付けられたフレームバッファデータへのアクセスを取得することができるように、デスクトップからの接続要求にサービスすることのできるＶＭを識別し、ＯＳが識別されたＶＭにおいてフレームバッファデータをリフレッシュするスキャンレートなどを判定することによって、デスクトップを適切なＶＭに接続するプロセスを実行する。ハイパーバイザは、ＶＭのグラフィックスドライバと対話して、識別されたＶＭのためのフレームバッファデータを、ハイパーバイザを介してアクセス可能な仮想メモリ内の所定の位置へ書き込む仮想グラフィックスカードを含む。
【０１１７】
ＳＶＭのアルゴリズムは、ハイパーバイザを介して直接、仮想メモリ内の所定の位置から識別されたＶＭのためのフレームバッファデータにアクセスし、それを読み取る。アルゴリズムは、フレームバッファデータにアクセスするときに、適切なアプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用してハイパーバイザと対話する。ＡＰＩは、特定のハイパーバイザに特有のものであり、アルゴリズムは、接続パラメータに基づいて特定のハイパーバイザのために使用すべき適切なＡＰＩを決定する知能を有する。次いでアルゴリズムは、スキャンエンジン、熱エンジン、コンテキストエンジンおよび論理エンジンを使用してフレームバッファデータを読み取り、解析し、接続パラメータに基づく１つまたは複数の技法を使用して、デスクトップに特有の、デスクトップに適するパケットサイズを有する画像データ要素（パケット）を生成し、ＵＤＰといった単純で汎用的な伝送プロトコルを使用してクライアントへパケットを転送する。画像データパケットは、アルゴリズム要件と伝送プロトコル要件の両方従うメッセージの種類とパッケージング情報とを含む。
【０１１８】
デスクトップは、パケットを受信し、メッセージの種類を読み取り、適切な伸張法を使用してフレームバッファデータを読み取り、デスクトップの表示装置上にレンダリングする。レンダリングされたデータは、ＶＭにおいて実行されており、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、およびユーザインターフェースの操作または非操作を示す、識別されたＶＭの仮想マシンディスプレイの画像の部分を表す。レンダリングされたフレームバッファにおけるユーザ対話および自動フィードバックが、アルゴリズムのクライアント側論理によって受け取られ、パッケージ化され、ＳＶＭへ送信される。ユーザ対話は、接続パラメータへの変更／更新と、フレームバッファデータの微調整および更新を可能にするフレームバッファデータとを含むことができる。ユーザ対話は、通常のトラブルシューティングまたは保守の間にＶＭと関連付けられたコンソールにおいて管理者によって行われる対話と同様のものである。自動フィードバックは、ＳＶＭ内のアルゴリズムに、接続要求に応答してサービスを提供したＶＭ上で実行されている１つまたは複数のアプリケーションへ宛先指定された接続品質情報およびデータを提供する。ユーザ対話および自動フィードバック情報は、バックチャネル通信を介してアルゴリズムへ返送される。ハイパーバイザを介したＶＭとクライアントとの間の対話とアルゴリズムとは、ユーザがＶＭにおける１つまたは複数のサービスを制御することを可能にする。
【０１１９】
別の実施形態では、ラップトップが仮想環境内のＶＭへの接続を要求するクライアントとして働く。ラップトップのためのＶＭへの接続を確立するプロセスは、デスクトップ適用例に関して前述した実施形態と同様である。この実施形態では、フレームバッファデータは、アルゴリズムとのクライアントの初期ハンドシェーク時に確立された接続パラメータに基づいてラップトップと関連付けられた表示装置のために構成され、この表示装置に特有のものである。
【０１２０】
本発明の一実施形態では、画像プロセッサアルゴリズムがユーザのコンピューティングプロファイルへのアクセスを提供する。コンピューティングプロファイルは、本出願で使用する場合、その上で特定のアプリケーションおよびハードウェアが利用可能である／実行されている特定のユーザのために構成されたコンピュータシステムをいう。したがって、ユーザのコンピューティングプロファイルは、ユーザが特定のハードウェア機器およびソフトウェアアプリケーションを用いて構成したカスタマイズされたデスクトップを含み得る。この実施形態では、ユーザがネットワーク上でクライアントを介してハードウェア／ソフトウェアを制御することができるように、接続要求を使用してユーザのこのコンピューティングプロファイルがアクセスされる。クライアントは、この実施形態では、モバイル機器とすることも、ネットワークに接続された、同じ場所または離れた場所にあるデスクトップＰＣやラップトップコンピュータといった他の任意のコンピューティング機器とすることもできる。クライアントが接続要求を開始するとき、クライアントはまず、ユーザ認証サービスによる認証を受ける。認証が行われ次第、クライアントは、仮想センタと、仮想センタ内のＶＭ上で走っているアルゴリズムへのアクセスを許される。アルゴリズムは、ユーザのコンピューティングプロファイルの画像を表すフレームバッファデータへのアクセスを提供することによりサービスへのアクセスを提供する。
【０１２１】
本発明の別の実施形態では、アルゴリズムは、特定のＶＭの特定のセッションへのユーザアクセスを提供する。この実施形態では、特定のセッションへのアクセスは、ハイパーバイザと画像プロセッサアルゴリズムとを使用して特定のＶＭのためのフレームバッファデータにアクセスすることによって提供される。一実施形態では、ＶＭとのセッションを確立することにより、ユーザのコンピューティングプロファイルまたはデスクトップへのアクセスが提供される。プロファイルは、ユーザのプロファイルを介してアクセス可能なユーザのデスクトップ、フォルダ、データ、アプリケーション、およびサービスのビューを定義することができる。セッションの間、ユーザは、あたかもユーザが自分のデスクトップまたはコンピュータに対してローカルであるかのように、プロファイルのすべてのインターフェースにアクセスし、それらを利用することができる。セッションの間、ユーザは、本明細書で説明するように、バックチャネルを使用して、すべてのＩ／Ｏ入力（例えば、キーボード入力、マウス入力、ユーザインターフェース入力など）を伝えることができる。セッションの間、ユーザは、自分のコンピュータ（すなわちプロファイル）をオン、オフにし、アプリケーションまたはウィンドウを開いたまま、または閉じたままにし、セッションを離れ、セッションを再接続することができる。
【０１２２】
本発明の一実施形態では、アルゴリズムは、フレームバッファデータの動的再サンプリングおよびサイズ変更、またはクライアントと関連付けられたレンダリング機器のサイズおよびフォーマットの変更に対応するために異なるサイズのフレームバッファに接続することを可能にする。よって、ラップトップと関連付けられた表示装置が、異なるサイズ、異なるフォーマットを含む異なる種類に動的に変更されるときに、ＳＶＭのところのアルゴリズムは、更新された接続パラメータに基づいて変更を認識し、識別されたＶＭの読み取られたフレームバッファデータを処理して、変更された表示装置の要件に従う読み取られたフレームバッファデータのための適切な画像データパケットを提供する。
【０１２３】
別の実施形態では、アルゴリズムは、クライアント機器の異なる構成についての複数の画像データパケットのセットを生成する能力を有し、したがって、クライアントの起動パラメータの照会に基づいて、異なるサイズ、向き、ビット深度などの画像データパケットを制御し、提供することができる。この実施形態では、アルゴリズムの論理は、クライアントの接続パラメータの照会に基づいて、クライアントと関連付けられた表示装置に特有のサイズ、フォーマット、向き、ビット深度などを有する正しい画像データパケットのセットを識別するための標準スイッチを含み得る。クライアントが接続を切断し、新しい表示装置と再接続する都度、アルゴリズムは、新しいハンドシェークに基づいてフレームバッファデータについての改訂された基準を認識し、改訂された基準と一致するビット深度、サイズ、向きなどを有するフレームバッファデータを表す適切な画像データパケットの（１つまたは複数の）セットを動的に生成する。サイズ変更のために考慮される基準の中には、いくつか例を挙げると、ビット深度、サイズ、向き、フォーマットなどが含まれ得る。場合によっては、アルゴリズムは、対話をより円滑化するために別のフレームバッファに接続することになる。よってアルゴリズムは、クライアントにおける変化する要件に基づいて、フレームバッファデータの動的サイズ変更および再フォーマッティングに対応することができる。
【０１２４】
別の実施形態では、アルゴリズムは、クライアントと関連付けられた複数の表示装置上で同時に異なるサイズのフレームバッファデータのレンダリングを可能にする。よって、クライアントがラップトップであり、レンダリングするためにラップトップ自体の画面と一緒にデスクトップの表示装置を使用する場合、アルゴリズムは、ラップトップ画面とデスクトップの表示装置の両方でフレームバッファデータの適切なサイズの同時レンダリングを可能にする。画像データパケットのフォーマッティングに関与する圧縮法は、可逆的圧縮を使用することも不可逆的圧縮を使用することもあることに留意すべきである。データがリフレッシュされている間にアルゴリズムがフレームバッファデータを抽出しないようにするために、ｓｙｎｃフラグを使用して、ＯＳによるフレームバッファデータのリフレッシュが完了してはじめてアルゴリズムがデータを受け取るようにしてもよい。
【０１２５】
一実施形態では、ラップトップは、図１２Ａ−１に示すように、ドッキングステーションを使用して、仮想センタ内の仮想サービスへの接続を確立し得る。ラップトップはドッキングステーションを介してネットワークに接続する。接続要求がラップトップから受け取られるときにアルゴリズムが組み込まれたサーバＶＭがアクティブになり、接続パラメータに基づいてラップトップを認証する。ＳＶＭは、インターネットとアクティブ化されたアルゴリズムとを介してアクセス可能なＶＭ上で走っている様々なサービス／アプリケーションにアクセスすることができる仮想センタの一部とすることができる。仮想センタは、下にある物理ハードウェア、ハイパーバイザ、ＶＭ内で実行される様々な種類のオペレーティングシステムを備えるハイパーバイザ上で走っている複数の仮想マシンを含む仮想インフラストラクチャを構成するすべての構成要素を含む。
【０１２６】
アルゴリズムは、クライアントにおける１つまたは複数の接続パラメータへの動的変更を検出し、フレームバッファデータの提示を動的にしかるべく調整する。アルゴリズムは、バックチャネルを介して、デスクトップやラップトップといったクライアントと接続品質情報を交換し、ハイパーバイザと対話して接続品質に沿うようにすることによってフレームバッファデータを微調整する。別の実施形態では、図１２Ｂに示すように、フラッシュドライブといったコンピュータ可読媒体上でソフトウェアクライアントを提供することができる。ソフトウェアクライアントを有するフラッシュドライブは、デスクトップコンピューティング機器やラップトップコンピューティング機器といったコンピューティング機器のユニバーサル・シリアル・バス（ＵＳＢ）ポートに差し込み、ラップトップ／デスクトップＰＣを介してアクセスすることができる。ソフトウェアクライアントは、ソフトウェアクライアントを有するフラッシュドライブが差し込まれているデスクトップＰＣまたはラップトップを認証するための認証機構を提供する。認証が行われ次第、デスクトップＰＣまたはラップトップには、下にある共用リソースにアクセスするハイパーバイザ上で実行されている複数のＶＭを備える仮想インフラストラクチャを含む仮想センタへの信頼できる接続が提供される。認証されたデスクトップＰＣは、サービスへの接続要求を生成することによってＳＶＭをアクティブ化し、ＳＶＭと対話して特定のＶＭからフレームバッファデータを獲得することができる。
【０１２７】
図１２Ｃに示す別の実施形態では、デスクトップＰＣが、デスクトップＰＣに供与されるワイヤレスフィデリティ（ＷｉＦｉ）技術といった高速接続を使用して仮想センタに接続することができる。この実施形態では、デスクトップＰＣによって提供される仮想サービスへの接続要求は、デスクトップＰＣの識別情報を含む。ＳＶＭ上で走っているアルゴリズムが接続要求を受け取ると、アルゴリズムは、接続要求と共に提供された接続パラメータを照会して、デスクトップＰＣを識別し、接続要求において要求されたサービスへのアクセスを提供することができるＶＭと、ビット深度、許容されるスキャンレート、向きなどを含むデスクトップＰＣの接続要件とを識別する。アルゴリズムはまず、デスクトップＰＣを認証し、認証が行われ次第、ハイパーバイザを介して識別されたＶＭのフレームバッファ情報に直接アクセスし、フレームバッファデータをパッケージ化し、ＶＭの仮想マシンディスプレイの画像を表すパッケージ化されたフレームバッファデータを、ＷｉＦｉ接続を使用してデスクトップＰＣへ転送する。図１２Ａ〜図１２Ｃを参照して前述した実施形態は、ＶＭ上で実行されている、クライアントによって要求されたサービスにアクセスし、それらを制御するためのやり方のいくつかの例を表すものである。サービスは、クライアント上で走らせるために設計されたアプリケーションを走らせるＶＭのディスプレイとすることもできるはずである。
【０１２８】
図１１に示す別の実施形態では、アルゴリズムは、単一のクライアントを使用してリモートで、異なる層において利用可能な複数のサービスにアクセスするための単純で効果的なツールを提供する。クライアントは、「シン」クライアントとすることも、「ファット」クライアントとすることもできる。この実施形態では、仮想インフラストラクチャは、サービスの複数の「クラウド」を含む。例えば、複数のデスクトップアプリケーションへのアクセスを提供するデスクトップ・アプリケーション・サービス・クラウド１１１０、複数のオンラインゲームを備えるゲーム・サービス・クラウド１１２０、マルチメディアコンテンツのオンラインストリームを獲得するための、ＮｅｔＦｌｉｘ（商標）などによって提供されるようなＰＶＲ／ＤＶＲ／ＤＶＤサービスクラウド１１３０、別の種類のゲーム／アプリケーション・サービス・クラウド１１４０などを含むことができるはずである。これらのクラウドはそれぞれ、クライアントがアクセスし制御するための特定の種類のサービスを提供する。サービスクラウドの上記リストは例示であり、限定とみなすべきではない。別の種類のサービスクラウドを本発明の実施形態と共に使用することもできる。各クラウドは、ハイパーバイザ上で走っており、下にあるハードウェアにアクセスする複数のＶＭを備える独自の仮想センタを有する。画像プロセッサアルゴリズム（ＩＰＡ）が、少なくとも１つのＶＭ内の各クラウドにおいて提供される。一実施形態では、ＩＰＡは、別個のサーバＶＭ（ＳＶＭ）において提供される。別の実施形態では、ＩＰＡは、各サービス層内の少数のＶＭにおいて提供される。ＩＰＡは、別の実施形態では、各サービス層内のすべてのＶＭにおいて提供することができる。
【０１２９】
一実施形態では、デスクトップといったクライアントが、適切なＩＰＡにアクセスすることによって各クラウドのところのアプリケーション／サービスにアクセスすることができる。プロセスはクライアントが接続要求を生成することから開始する。接続要求は、クライアントと関連付けられた接続基準および環境を定義する複数の接続パラメータを含む。接続パラメータに含まれるのは、サービス層を識別するサービス層識別情報と、クライアントがアクセスしようとしている特定のサービスである。アルゴリズムは、接続パラメータを照会して、要求されたサービスに関連した特定のサービス層と、要求されたサービスを提供する特定のＶＭとを識別する。例えば、要求されたサービスは、デスクトップ・アプリケーション・サービス・クラウド内のアプリケーションである場合もある。要求されたサービス層とＶＭとが識別された後で、アルゴリズムは、ハイパーバイザを介して識別された層内の識別されたＶＭの要求されたサービスのためのフレームバッファデータに直接アクセスし、フレームバッファデータを解析し、クライアントによって指定されるフォーマットで画像データのパケットを生成する。生成されたパケットはフォーマッティングアルゴリズムとネットワーク要件とに従ってパッケージ化され、復号し、処理し、アセンブルし、レンダリングするためにクライアントへ送信される。アルゴリズムは、クライアントがレンダリングされたフレームバッファを介してサービスを管理することを可能にする。
【０１３０】
クライアントが同じクラウド内の別のサービスへのアクセスを求めるときには、クライアントは、既存の接続を打ち切り、新しい接続要求を生成するだけである。アルゴリズムは、新しい接続要求を検出し、新しい接続要求を照会し、例えば、同じデスクトップ・アプリケーション・サービス・クラウド１１１０内の新しいサービスを識別し、ＶＭから、要求されたサービスのための画像データパケットの形のフレームバッファデータを提供し、ＶＭは、同じＶＭであってもよく、デスクトップ・アプリケーション・サービス・クラウドのＶＩ内の別のＶＭであってもよい。画像データパケットはクライアントに特有のフォーマットで提供される。
【０１３１】
同様に、クライアントが、ゲーム・サービス・クラウドといった別のクラウド内の別のサービスにアクセスしようとするときには、クライアントは、例えばデスクトップ・アプリケーション・サービス・クラウド１１１０との既存の接続を打ち切り、接続パラメータにおいて提供される、ゲーム・サービス・クラウド内のオンライン・ゲーム・アプリケーションといった新しいサービスとの新しい接続要求を確立する。アルゴリズムは、新しい接続要求を検出し、要求を照会して新しい接続パラメータを獲得し、新しい接続パラメータを使用してゲーム・アプリケーション・クラウド１１２０内の新しいゲームアプリケーションへの接続を確立し、ゲーム・アプリケーション・クラウド１１２０におけるハイパーバイザを使用して新しいゲームアプリケーションのためのフレームバッファデータを獲得し、フレームバッファデータを、接続パラメータに基づいてクライアントの要件に従ったパケットへとパッケージ化し、パッケージ化されたフレームバッファデータをレンダリングするためにクライアントへ送信する。前述のように、異なる表示要件を有するフレームバッファデータの複数のフォーマットが、要求時に、またはフレームバッファデータの初期作成時に同じフレームバッファデータについて動的に生成され、要求通りに、また要求されるときにクライアントに提供され得る。よってアルゴリズムは、独自のプロトコル／ソフトウェアまたは異なるクライアントに関与せずに、あるアプリケーション・サービス・クラウド内のある種類のサービスから、別のアプリケーション・サービス・クラウド内の別の種類のサービスへ切り換える手段を提供する。
【０１３２】
上記実施形態は、その時々に、特定の層からのサービスにアクセスし、クライアントにおいてサービスと関連付けられた情報をレンダリングすることの詳細を示すものであったことに留意すべきである。しかし、これらの実施形態は、その時々にただ１つのサービスへのアクセスを提供することだけに制限されず、その時々に複数の層からの複数のサービスを提供するように拡張することもできる。したがって、アルゴリズムは、接続パラメータを使用して複数の層内の複数のサービスからのフレームバッファ情報にアクセスし、クライアントの表示装置においてフレームバッファデータを同時にレンダリングすることを可能にする。複数のサービスからのフレームバッファデータは、画像構造の各部分が個々のサービスからの画像データをレンダリングする、図２Ｆを参照して論じたのと同様のやり方でレンダリングされる。
【０１３３】
上記実施形態は、クライアントが、ＶＭ上で走っているどんなオペレーティングシステムとも直接対話せずにＶＭを制御することを可能にする、効率的で柔軟なツールを説明するものである。アルゴリズムは、ＶＭの仮想モニタにおいてレンダリングされているものを再現するためのＯＳからの実際のデータではなく、表示装置上でレンダリングするためのフレームバッファデータを要求しているため、データを解釈するのに従うべきどんな独自のプロトコルの必要も生じない。さらに、アルゴリズムから受け取られるデータはすでにコンテキストについて解析されており、アルゴリズムによってクライアントへ送信される画像データパケットには適切なコンテキスト情報が含まれている。その結果、クライアントにおいて画像データを解釈するための解析が不要であり、よって、クライアント側における高処理能力のＣＰＵが回避される。さらに、クライアントとＶＭとの間のすべての対話はハイパーバイザを介したものであり、ＶＭのＯＳと直接行われるものではない。アルゴリズムとハイパーバイザ内の仮想ビデオドライバとは、クライアントにおけるフレームバッファデータの解釈を単純で容易なものにするように、指定されたフォーマットですべてのＶＭからのフレームバッファデータを受け取ることを保証する。これにより、超シンクライアントでさえも、適切な伸張法を使用してフレームバッファデータにアクセスすることが可能になり、このアルゴリズムが、ＶＭにアクセスし、ＶＭを制御するための非常に柔軟なツールセットとなる。さらに、アルゴリズムは、ユーザ・データグラム・プロトコル（ＵＤＰ）などといった非常に汎用的で単純な伝送プロトコルを使用し、長距離にわたるフレームバッファデータの伝送を可能にする。指定されるフォーマットと単純な伝送プロトコルとの組み合わせは、高速で容易なやり方での再送信を可能にし、アルゴリズムに待ち時間非依存、損失非依存の特性を持たせることができる。本発明の実施形態は、アプリケーションをＶＩ「クラウド」において実行させ続ける手段を提供すると同時に、これらのアプリケーションにリモートでアクセスし、それらを制御するためのツールも提供することに留意すべきである。当業者は、本発明の実施形態の上記その他の利点を容易に想起することができる。
モバイル適用例
【０１３４】
デスクトップ適用例に加えて、本発明の教示は、モバイル機器向けのアプリケーション／サービスにアクセスするためにモバイル機器でも都合よく使用することができる。モバイル機器は、シンクライアントと解釈されてもよく、タッチ入力表示装置またはミニキーボードを備える表示装置を有し、ごく限られたコンピューティングリソースを有するポケットサイズのコンピューティング機器であると想定することもできる。モバイル機器には、いくつか例を挙げると、携帯情報端末（ＰＤＡ）、スマートフォン、タブレットＰＣといった広範な家電製品が含まれる。モバイル機器の上記リストは例示であり、限定とみなすべきではない。
【０１３５】
今日のモバイル機器は、電子メール、インスタントメッセージング、テキストメッセージング、ウェブブラウジングなどといった広範なアプリケーションがホストされる仮想環境を利用することのできる多機能機器である。しかし、そのような豊富なクライアント形態におけるアプリケーションへのアクセスは、データとデータを提供するＶＭとへのアクセスを可能にするように独自のアプリケーションデータを伸張するための高処理能力のプロセッサを必要とするモバイル機器をもたらす結果になるはずである。モバイル機器内のプロセッサの大きなコンピュータ集約的要件は高くつき、モバイル機器製造者に対し、効率と設計のバランスをとるための絶え間ない課題を提示することになる。加えて、ますます多くのアプリケーションがモバイル機器向けに提供されるにつれて、プロセッサに対する要求がさらに増大し、コンピューティングリソースに対してアプリケーションのバランスをとることが非常に微妙で困難な作業になる。
【０１３６】
より多くのアプリケーションのために高処理能力のプロセスを選択する必要性と効率的な設計構造との対立を回避するために、画像プロセッサアルゴリズムを使用して、シンモバイル機器とＶＭ上で走っているサービス／アプリケーションとの間のインターフェースが提供され得る。アルゴリズムは、シンモバイル機器の限られたリソースを利用すると同時に、仮想センタ内の複数のＶＭ上で走っている多数のアプリケーション／サービスにアクセスし、それらを制御することのできる能力を提供することを可能にする。アルゴリズムの一般的機能は、上記で図２〜図１０を参照して詳細に説明した。図１２Ａ−２を参照してモバイル機器の機能を説明する。
【０１３７】
一実施形態では、モバイル機器は、インターネットといったネットワークに接続することによってＶＭ内のサービス／リソースにアクセスする。別の実施形態では、携帯情報端末（ＰＤＡ）といったモバイル機器が、パーソナルコンピュータ（ＰＣ）からのリソースが、ネットワーク上で利用可能な仮想センタ（ＶＣ）内の仮想マシン（ＶＭ）上で走っているサービスにアクセスすることを可能にする。ＰＣは、インターネットカフェにおいて利用されてもよく、ＷｉＦｉネットワークの一部とすることもでき、あるいは、広域ネットワーク（ＷＡＮ）を介してＶＣにアクセスするデスクトップＰＣとすることもできる。ＰＣは、バーコードや無線周波数識別（ＲＦＩＤ）タグといった識別タグまたは情報を含む。モバイル機器は、機器を識別した後で、セルラネットワーク上でＰＣ機器を認証する。ＰＣの識別情報が認証された後で、ＰＣには、下にある共用リソースにアクセスするハイパーバイザ上で複数のＶＭが走っている仮想インフラストラクチャ（ＶＩ）を含む仮想センタへの信頼できる接続が提供される。認証されたＰＣは、ＶＣ内のＶＭにおいて利用可能なアプリケーション／サービスにアクセスするためのＶＣ「クラウド」におけるセッションを確立するよう指図される。デスクトップ適用例に関して前述したように、ＰＣは、画像プロセッサアルゴリズムを使用して異なる層において利用可能な複数の種類の仮想サービス／アプリケーションにアクセスすることができてもよい。よって、ＰＣをアクセスポイントとして使用すれば、ユーザはＶＭにおいて利用可能な複数のサービス／アプリケーションにアクセスし、それらを制御することができる。
【０１３８】
同様に、別の実施形態では、モバイル機器は、ドッキングステーションに直接接続されるときに、キーボード、モニタ、およびマウスを用いて、仮想環境内のＶＭへの接続を要求する独立型クライアントとして働く。モバイル機器のためのＶＭへの接続を確立するプロセスは、ドッキングステーションを使用したラップトップおよびデスクトップの適用例に関して論じた実施形態と同様である。モバイルクライアントは、ＷｉＦｉネットワークを使用してネットワーク接続を確立するはずであり、ドッキングステーションは一定の電荷を供給することができる。この実施形態では、フレームバッファデータは、アルゴリズムとのクライアントの初期ハンドシェークの間に確立された接続パラメータに基づいて、モバイル機器と関連付けられた表示装置のために構成される。
【０１３９】
モバイル機器セッションは、図２Ａを参照して説明した、デスクトップＰＣまたはラップトップによって確立されるセッションと同様の範囲である。アルゴリズムは、リモートでサービス／アプリケーションにアクセスする手段を提供する。アルゴリズムは、ＶＭから獲得される特定のサービスのためのフレームバッファをスキャンして調べ、アクティビティ領域および各アクティビティ領域におけるアクティビティの量を判定し、アクティビティ領域だけに注目し非アクティビティ領域は無視する論理を有する。これは、変更を有するデータだけが送信されるように、帯域幅とネットワークリソースの節約を可能にするはずである。またアルゴリズムは、フレームまたは帯域外マルチメディアコンテンツを検出するための境界を判定し、そのような帯域外マルチメディアストリーム内のデータを抽出し送信するための専用の技法を使用する論理も有する。帯域外ストリームがモバイル機器において受信されると、ストリームは、モバイル機器によって理解されるフォーマットで処理され、モバイル機器と関連付けられた画面上にオーバーレイされる。
【０１４０】
アルゴリズムは、モバイル機器上において利用可能な表示装置以外の表示装置に対応するために、モバイル機器においてレンダリングするためのフレームバッファデータのさらに別のフォーマットを提供する。アルゴリズムは、クライアントとアルゴリズムとの初期ハンドシェークの間の接続情報を使用し、レンダリングするために適切にフォーマットされたフレームバッファデータを提供する。よって、モバイル機器がドッキングステーションを使用してモニタ／表示装置にアクセスする場合、アルゴリズムは、モバイル機器と関連付けられた表示装置の要件を獲得し、対応する表示装置の表示要件に合わせてフォーマットされたフレームバッファデータを要求する。前述のように、適切にフォーマットされたフレームバッファデータが動的に生成され、または、フレームバッファデータについてすでに作成された複数のフォーマットの中からの特定のフォーマットが、アルゴリズムによって送信のために選択される。モバイル機器におけるユーザ対話およびその他のフィードバックが記録され、微調整および更新のためにアルゴリズムに転送される。
【０１４１】
本発明の実施形態は、同じ場所に位置し、または同じ場所に位置しない超シンクライアントが、ネットワーク接続を使用してリモートでＶＣクラウドにおいて利用可能な様々なサービス／アプリケーションにアクセスし、それらを制御することができる能力を提供する。アルゴリズムは、フレームバッファデータを予測可能なフォーマットで提供し、したがって、データの圧縮／伸張のための独自のプロトコルは不要である。すべてのサービスはＶＭにおいて維持、実行され、複雑な処理およびフォーマッティングは、ＶＭ層において利用可能なリソースを使用してＶＣ内のＶＣ層においてアルゴリズムを実行するＶＭによってローカルで行われる。クライアント側における複雑な処理の必要は生じず、この解決策がより受け入れやすく効果的なものになる。他の利点は当業者には自明であろう。
ゲーム適用例
【０１４２】
デスクトップ適用例およびモバイル適用例に加えて、アルゴリズムは、ゲームアプリケーション／サービスを制御するためのより柔軟で効率のよいツールを提供するためにゲーム適用例において使用することもできる。本発明の実施形態は、アルゴリズムの機能的態様を使用して、ゲーム・サービス・クラウドにおいて利用可能なゲームアプリケーション／サービスの制御を提供する。
【０１４３】
クライアントは、この実施形態では、ＰＣ、シンクライアントまたはモバイル機器であるにせよ、市販されているゲームコンソールといった他の任意のエッジデバイスであるにせよ、他の任意のサービスに使用される任意のクライアントである。ゲームコンソールは、業界で周知のように、テレビ画面やコンピュータモニタといった表示装置に接続された対話式コンピュータシステムであり、ビデオゲームを表示するための表示装置と共に使用することのできるビデオ表示信号を生成する。一実施形態では、ゲームコンソールは、低ＣＰＵ能力および低メモリを有するネットトップコンピュータで置き換えられ、ネットトップコンピュータのリソースを使用し、ゲームクラウドといったサービスクラウドの仮想センタに、サービスクラウドにおいて利用可能な画像プロセッサアルゴリズムを使用して接続する。ネットトップコンピュータは、業界で周知のように、インターネットへのアクセス、ウェブベースのアプリケーションへのアクセスといった基本動作を行うために設計された、非常に小型で安価で低処理能力のコンピュータである。ゲームクラウド内のサービス／アプリケーションを求める接続要求がネットトップコンピュータにおいて開始される。接続要求は、アルゴリズムにネットトップの接続要件を提供する複数の接続パラメータを含む。アルゴリズムは、接続パラメータを使用して、ネットトップによって要求されたサービス／アプリケーションを提供するＶＭを識別し、ハイパーバイザを介して適切なフレームバッファデータに直接アクセスし、アルゴリズムによって定義される適切なフォーマットで画像データパケットを生成する。アルゴリズムは、サービス要求に応答して、接続パラメータによって駆動される適切なパッケージにおいて画像データパケットをネットトップへ転送する。マウスクリックやキーボード打鍵といったゲームネットトップにおけるユーザ対話が取り込まれ、バックチャネルを介して微調整および更新のためにアルゴリズムへ転送される。さらにアルゴリズムは、確立されたバックチャネルを介して、サービス品質に関するネットトップからの周期的な更新も受け取る。アルゴリズムは、サービス品質を使用して、フレームバッファデータおよびフレームバッファデータへの周期的更新を適切にパッケージ化し、ネットトップへ送信する。他の利点は当業者には自明であろう。
【０１４４】
上記実施形態を考慮して、本発明は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータで実施される動作を用い得ることを理解すべきである。これらの動作は、物理量の物理的操作を必要とするものである。必ずしもそうとは限らないが、普通は、これらの量は、記憶され、転送され、結合され、比較され、また他の操作を施されることが可能な電気信号または磁気信号の形をとる。さらに、行われる操作は、多くの場合、生成する、識別する、判定する、比較するといった用語で言及される。
【０１４５】
本発明の一部を構成する本明細書で説明した動作はいずれも有用な機械操作である。また本発明は、これらの操作を行うための機器または装置にも関するものである。装置は、必要な目的のために専用に構築されてもよく、コンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化され、または構成される汎用コンピュータとすることもできる。特に、様々な汎用機が本明細書の教示に従って書かれたコンピュータプログラムと共に使用されてもよく、必要な操作を行うためのより特殊な装置を構築するほうが好都合な場合もある。
【０１４６】
また本発明は、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することもできる。コンピュータ可読媒体は、後でコンピュータシステムによって読み取られ得るデータを記憶することができる任意のデータ記憶装置である。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読取り専用メモリ、ランダム・アクセス・メモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、およびその他の光学的、非光学的データ記憶装置が含まれる。またコンピュータ可読媒体は、コンピュータ可読コードが分散されて記憶され、実行されるように、ネットワークで結合されたコンピュータシステム上に分散させることもできる。
【０１４７】
しかし、本発明がこれらの具体的詳細の一部または全部がなくても実施され得ることが当業者には自明であろう。場合によっては、本発明を不必要にあいまいにすることのないように、周知のプロセス操作は詳細に説明していない。
【０１４８】
以上の発明は、理解を明確にするために多少詳細に説明されているが、本発明の範囲内である一定の変更および改変が実施され得ることは明らかであろう。したがって、本発明の実施形態は、限定ではなく例示とみなされるべきであり、本発明は本明細書で示す詳細だけに限定されるべきではなく、本発明の範囲内で改変され得るものである。
【図２Ａ】
2013512512.tif 000003
【図２Ｂ】
2013512512.tif 000004
【図２Ｃ】
2013512512.tif 000005
【図２Ｄ】
2013512512.tif 000006
【図２Ｆ】
2013512512.tif 000007
【図３Ａ】
2013512512.tif 000008
【図３Ｂ】
2013512512.tif 000009
【図４】
2013512512.tif 000010
【図５】
2013512512.tif 000011
【図６】
2013512512.tif 000012
【図７】
2013512512.tif 000013
【図７ＡＢＣ】
2013512512.tif 000014
【図８】
2013512512.tif 000015
【図９】
2013512512.tif 000016
【図１０】
2013512512.tif 000017
【図１１】
2013512512.tif 000018
【図１３】
2013512512.tif 000019
【図１】
2013512512.tif 000020
【図２−１】
2013512512.tif 000021
【図２−２】
2013512512.tif 000022
【図２−３】
2013512512.tif 000023
【図２Ｅ】
2013512512.tif 000024
【図１２】
2013512512.tif 000025
【国際調査報告】
2013512512.tif 000026