(57)【要約】計算システムから遠くに位置するディスプレイユニットを更新するシステムおよび方法が記述される。方法は、アプリケーションを実行する計算デバイスのビデオバッファから表示情報をコピーし、表示更新を生成すること、表示更新のサイズを計算すること、および計算デバイスとディスプレイユニットとを接続するネットワークの利用可能な帯域幅の量を決定することを含む。方法はまた、表示更新を計算デバイスからディスプレイユニットに通信するに要する期間を計算すること、表示更新をディスプレイに送信すること、および計算期間が経過した後に、方法を繰り返すことを含む。
2008539449.tif 000002
【特許請求の範囲】
【請求項１】
リモートディスプレイユニットを更新する方法であって、
（ａ）該ディスプレイユニットから遠くに位置するアプリケーションを実行する計算デバイスのビデオバッファから表示情報をコピーすることにより、表示更新を生成することと、
（ｂ）該表示更新のサイズを計算することと、
（ｃ）該計算デバイスと該ディスプレイユニットとを接続するネットワークの利用可能な帯域幅の量を決定することと、
（ｄ）該計算デバイスから該ディスプレイユニットに該表示更新を通信するのに要する期間を計算することと、
（ｅ）該表示更新を該ディスプレイに送信することと、
（ｆ）該期間が経過後、ステップ（ａ）〜（ｅ）を繰り返すことと
を包含する方法。
【請求項２】
前記ステップ（ｂ）〜（ｅ）の少なくとも１つの間、前記アプリケーションによって表示情報を前記ビデオバッファに書き込むことをさらに包含する、請求項１に記載の方法。
【請求項３】
前記表示更新の一部として前記ビデオバッファの変化の領域を示す少なくとも１つのバウンディング長方形を生成することをさらに包含する、請求項１に記載の方法。
【請求項４】
前記ビデオバッファに対する変化量を追跡し、高更新期間が存在するかどうかを判定することをさらに包含する、請求項１に記載の方法。
【請求項５】
高更新期間中に不可逆的圧縮アルゴリズムを前記表示更新に適用することにより、不可逆的表示更新を作成することをさらに包含する、請求項１に記載の方法。
【請求項６】
前記送信することは、前記不可逆的表示更新を前記ディスプレイに送信する、請求項５に記載の方法。
【請求項７】
前記高更新期間後、可逆的表示更新を送信することにより、前記不可逆的表示更新を置き換えることをさらに包含する、請求項６に記載の方法。
【請求項８】
計算システムから遠くに位置するディスプレイユニットを更新するシステムであって、
該計算システム上で実行するアプリケーションプログラムの図形出力を表すディスプレイデータを記憶するビデオバッファと、
該計算システムと該リモートディスプレイユニットとの間のネットワークの特性を決定し、ネットワークの利用可能性に関する信号を送信するドライバと、
該信号を受信し、該ビデオバッファに記憶されたデータに応答する該リモートディスプレイへの通信のための表示更新を作成するスレッドと、
備えている、システム。
【請求項９】
ネットワーク利用可能性に関する信号は、動的に決定された期間を含む、請求項８に記載のシステム。
【請求項１０】
ビデオバッファと通信し、バウンディング長方形情報を記憶する更新領域をさらに備えている、請求項８に記載のシステム。
【請求項１１】
前記ビデオバッファに対してなされた変化量を追跡する累算器をさらに備えている、請求項８に記載のシステム。
【請求項１２】
前記ドライバと通信し、前記累算器が所定の閾値に到達するとき該表示更新を該リモートディスプレイユニットに送信する前に、該表示更新を圧縮する圧縮器をさらに備えている、請求項１１に記載のシステム。
【請求項１３】
前記動的に決定された期間を実行する前記スレッドと通信し、前記ローカルビデオバッファをコピーするように該スレッドに信号を送るタイマモジュールをさらに備えている、請求項８に記載のシステム。
【請求項１４】
計算システムから遠くに位置するディスプレイユニットを更新するシステムであって、
該計算システム上で実行するアプリケーションプログラムの図形出力を表すディスプレイデータを記憶するバッファリング手段と、
ネットワークと通信することにより、該ネットワークの特性を決定し、ネットワークの利用可能性に関する信号を送信するドライビング手段と、
該信号を受信し、該バッファリング手段に記憶されたデータに応答する該リモートディスプレイへの通信のための表示更新を作成するスレッド手段と
を備えている、システム。
【請求項１５】
少なくとも１つのバウンディング長方形情報を記憶し、前記バッファリング手段と通信する記憶手段をさらに備えている、請求項１４に記載のシステム。
【請求項１６】
高更新期間中に不可逆的圧縮アルゴリズムを適用することにより、前記表示更新の前記リモートディスプレイユニットへの通信の前に、該表示更新のサイズを減少させる圧縮手段をさらに備えている、請求項１４に記載のシステム。
【請求項１７】
前記不可逆的アルゴリズムの適用の前に、前記表示更新をキャッシュするキャッシュ手段をさらに備えている、請求項１６に記載のシステム。
【請求項１８】
前記バッファリング手段に対する更新量を追跡することにより、前記システムが高更新期間にあるかどうかを判定する累積手段をさらに備えている、請求項１４に記載のシステム。
【請求項１９】
前記信号を受信する前記スレッド手段に応答して動的に決定された期間を実行するタイミング手段をさらに備えている、請求項１４に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
（本発明の背景）
分散計算機システムは、分散アプリケーション実行の技術を利用する。より詳細には、アプリケーションサーバは、アプリケーションプログラムをローカルにて実行し、アプリケーション出力データをクライアント／ネットワークユーザに提供し、クライアント／ネットワークユーザは、次いで、彼らのローカルのコンピュータにローカルに結合された表示画面に結果を表示する。分散システムは、利用可能な計算資源を最高に利用し得る。すなわち、より能力の高いサーバは、計算およびメモリがきついアプリケーション処理機能を実行し、計算的にはより能力は低いが、映像性能に関しては潜在的により能力が高いクライアントは、出力を表示する。分散計算システムの一タイプにおいて、クライアントのユーザは、アプリケーションプログラムの実行中、アプリケーション出力データをローカルのディスプレイ上で見て、キーボード、マウス入力またはその他のデバイス入力によって、アプリケーションプログラムと対話する。ユーザの入力は、アプリケーションプログラムの動作に影響を及ぼす特定のアクションを実行するようにアプリケーションサーバにリクエストすることに対応する。アプリケーションサーバは、これらのリクエストをさらなる処理のためにアプリケーションに渡す。アプリケーションサーバはまた、アプリケーションプログラムによって生成され、典型的にはアプリケーションサーバのオペレーティングシステムをターゲットとしたアプリケーション出力データをインタセプトし、データのすべてまたは一部を表示のためにクライアントに送信する。アプリケーションプログラムは実際は離れたサーバにおいて実行され、ローカルに表示されるが、ユーザの観点から、アプリケーションプログラムがローカルに実行しているように見える。
【０００２】
上記の機能性を提供する種々のプロトコルがある。そのようなプロトコルの一例は、Ｒｅｄｍｏｎｄ，ＷａｓｈｉｎｇｔｏｎのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって販売されるリモートデスクトッププロトコル（「ＲＤＰ」）である。ＲＤＰは、プロトコルのＩＴＵ  Ｔ．１２０ファミリーおよびその拡張に基づく。ＲＤＰは、複数チャネル可能なプロトコルで、該プロトコルは、別の仮想チャネルが、暗号化されたクライアントマウスおよびキーボードデータと共に、アプリケーションサーバからのデバイス通信および提示データを伝えることを可能にする。ＲＤＰは、自身のビデオドライバを用い、ＲＤＰプロトコルを用いてレンダリング情報をネットワークパケットの中に構成し、それらのパケットをネットワークを介してクライアントに送ることによって、表示出力を提供する。クライアントにおいて、ＲＤＰは、レンダリングデータを受信し、パケットを対応するＭｉｃｒｏｓｏｆｔ  Ｗｉｎ３２グラフィックスデバイスインタフェース（ＧＤＩ）ＡＰＩコールに翻訳する。入力経路に関して、クライアントマウスおよびキーボードのイベントは、クライアントからサーバに向け直される。
【０００３】
類似の機能性を提供する別のプロトコルは、Ｆｔ．Ｌａｕｄｅｒｄａｌｅ，ＦｌｏｒｉｄａのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓによって販売されるインデペンデントコンピューティングアーキテクチャ（Ｉｎｄｅｐｅｎｄｅｎｔ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ（「ＩＣＡ」）である。ＩＣＡは、アプリケーション論理の残りからの別個の画面更新およびユーザ入力処理を可能にするプロトコルである。すべてのアプリケーション論理は、第１の計算システム上で実行し、画面更新、マウス移動およびキーストロークのみが、表示計算システムと第１の計算システムとの間のセッション時に送信される。
【０００４】
分散アプリケーション処理システムは、典型的なオフィスアプリケーションのために良好に機能してきた。しかしながら、図形的にきつい特定のアプリケーションは、分散アプリケーション処理システムのパフォーマンスに不利に作用し得る。図形的にきついアプリケーションの例は、限定するものではないが、計算機援用ドラフティング（「ＣＡＤ」）アプリケーション、ビデオ編集アプリケーション、およびコンピュータゲームを含み得る。これらの図形的にきついアプリケーションにおいて、表示更新は、典型的には、表示更新が大きいビットマップ画像であるので、大量の帯域幅を必要とする。ユーザが見るためにＣＡＤ／ＣＡＭプログラムが装置の三次元のモデルを回転する場合などのように、実行するアプリケーションプログラムが短期間に複数の表示更新を送る場合、この問題は悪化する。大サイズのそれぞれの画面更新による出力の遅れは、ユーザ経験、およびアプリケーションプログラムとの対話に不利に作用し、分散アプリケーション処理環境において実用的でないアプリケーションプログラムを利用する。
【発明の開示】
【課題を解決するための手段】
【０００５】
（本発明の概要）
一局面において、本発明は、リモートディスプレイユニットを更新する方法を特徴とする。方法は、ディスプレイユニットから離れて位置するアプリケーションを実行する計算デバイスのビデオバッファからの表示情報をコピーし表示更新を生成すること、表示更新のサイズを計算すること、および計算デバイスとディスプレイユニットを接続するネットワークの利用可能な帯域幅の量を決定することを含む。方法はまた、表示更新を計算デバイスからディスプレイユニットへ通信するために必要な時間を計算すること、表示更新をディスプレイに送信すること、および該時間が経過した後で、１つ以上のステップを反復することを含む。
【０００６】
種々の実施形態において、方法は、少なくとも１つのステップ時に、アプリケーションによって表示情報をビデオバッファに書き込むことを含む。方法はまた、表示更新の一部としてビデオバッファの変化の領域を示す少なくとも１つのバウンディング長方形を生成すること、およびビデオバッファに対する変化量を追跡し、高更新期間が存在するかどうかを判定することを含み得る。
【０００７】
一実施形態において、方法は、高更新期間中に不可逆的圧縮アルゴリズムを表示更新に適用し、不可逆的表示更新を作成すること、不可逆的表示更新をディスプレイに送信すること、および高更新期間後に可逆的表示更新を送信し、不可逆的表示更新を置き換えることを含む。
【０００８】
別の局面において、本発明は、計算システムから離れて位置するディスプレイユニットを更新するシステムを特徴とする。システムは、ビデオバッファ、ドライバおよびスレッドを含む。ビデオバッファは、計算システム上で実行するアプリケーションプログラムの図形出力を表すディスプレイデータを記憶する。ドライバは、計算システムとリモートディスプレイユニットとの間のネットワークの特性を決定し、ネットワークの利用可能性に関して信号を送信する。スレッドは、信号を受信し、ビデオバッファに記憶されたデータに応答するリモートディスプレイへの通信のための表示更新を作成する。
【０００９】
種々の実施形態において、ネットワーク利用可能性に関する信号は、動的に決定された期間を含む。システムはまた、動的に決定された期間を実行するスレッドと通信し、ローカルビデオバッファをコピーするようにスレッドに信号を送りタイマモジュールを有し得る。システムはまた、バウンディング長方形情報を記憶するためのビデオバッファと通信する更新領域を含み得る。ビデオバッファに対してなされた変化量を追跡する累算器もまた、含められ得る。さらに、システムは、ドライバと通信し、累算器が所定の閾値に到達するとき表示更新をリモートディスプレイユニットに送信する前に、表示更新を圧縮する圧縮器モジュールを含み得る。
【００１０】
別の局面において、本発明は、計算システムから遠くに位置するディスプレイユニットを更新するシステムを特徴とする。システムは、バッファリング手段、ドライビング手段、およびスレッド手段を含む。バッファリング手段は、計算機システム上で実行するアプリケーションプログラムの図形出力を表すディスプレイデータを記憶する。ドライビング手段は、ネットワークと通信し、ネットワークの特性を決定し、そしてネットワークの利用可能性に関する信号を送信する。スレッド手段は、信号を受信し、リモートディスプレイユニットと通信する表示更新を作成する。
【発明を実施するための最良の形態】
【００１１】
（本発明の詳細な説明）
本発明は、添付の図面に関連して以下の説明を参照することによって、より良く理解され得、種々の図面において、同じ記号は同じ構造の要素および特徴を示す。図は必ずしも同縮尺ではなく、本発明の原理を例示するために強調がなされている。
【００１２】
本発明は、リモートディスプレイユニットの表示を更新するシステムおよび方法を特徴とする。一実施形態において、本発明は、帯域幅速度の現在の動的状態およびネットワーク上の未処理のデータ量を用い、次の時間間隔を識別し表示更新を送る。時間間隔は、更新のサイズおよびネットワークの速度によって決定される。ディスプレイドライバは、アプリケーションがローカルのビデオバッファを更新することを可能にする。バッファは、ディスプレイ画面の最新のデータ表現を含む。更新が起こると、ディスプレイドライバは、各更新の結果から生じた影響を受けたバウンディング長方形のリストを維持する。ネットワークが作動可能である場合、更新は、影響を受けた長方形およびバッファのリストから送られ得る。ダブルイメージバッファリングは用いられ得る。すなわち、影響を受けた長方形のリストはコピーされ、ネットワークを通る送信のためにドライバに提供される。影響を受けた長方形のリストをコピーすることは、アプリケーションが多くの更新をバッファに対して発行することを可能にし、一方、リモートディスプレイに更新を送信する、よりゆっくりした処理が起こる。不可逆的画像圧縮は、頻繁な更新の期間中、リモートディスプレイに送られる更新に対して用いられ得る。影響を受けた更新の領域は、不可逆的に圧縮され、リスト上にセーブされる。一旦、頻繁な更新の期間が停止すると、不可逆的圧縮領域のリストは、可逆的方法によって、ローカルビデオバッファから再送信され得る。
【００１３】
本発明の１つの利点は、アプリケーションを更新から遠くの場所へ分離することである。アプリケーションは、更新をより遅いネットワーク経路に落とすことなく、画面に対する更新を多く作成し得る。遠くの場所に送られる更新は、ネットワークが更新を取り扱い得る場合のみ起きる。このことは、多くの更新がアプリケーションによって起こることを可能にするが、しかし最も新しいディスプレイ画像のみがネットワークを介して送られることを可能にする。従って、エンドユーザに対する提示における対話性の増加となる。
【００１４】
図１を参照すると、分散アプリケーション処理システム１００は、通信ネットワーク１４０を介して、１つ以上の計算デバイス１５０’、１５０”（以下、各計算デバイスまたは複数の計算デバイスは総称的に１５０という）と通信する１つ以上のリモートディスプレイユニット１１０’、１１０”（以下、各リモートディスプレイユニットまたは複数のリモートディスプレイユニットは総称的に１１０という）を含む。ネットワーク１４０は、ローカルエリアネットワーク（ＬＡＮ）、ミーディアムエリアネットワーク（ＭＡＮ）、またはインターネットもしくはワールドワイドウェブなどの広域ネットワーク（ＷＡＮ）であり得る。リモートディスプレイユニット１１０のユーザは、標準電話線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（例えば、ＩＳＤＮ、フレームリレイ、ＡＴＭ）、および無線接続（例えば、ＩＥＥＥ８０２．１１）を含む種々の接続を介してネットワーク１４０に接続され得る。接続は、種々の通信プロトコル（例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、および直接非同期接続）を用いてなされ得る。一部の特に有利な実施形態において、用いられるプロトコルは、Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，ＦｌｏｒｉｄａのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．によって製造されるＩｎｄｅｐｅｎｄｅｎｔ  Ｃｏｍｐｕｔｉｎｇ  ＡｒｃｈｉｔｅｃｔｕｒｅプロトコルまたはＲｅｄｍｏｎｄ，ＷａｓｈｉｎｇｔｏｎのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されるＲｅｍｏｔｅ  Ｄｉｓｐｌａｙ  Ｐｒｏｔｏｃｏｌであり得る。
【００１５】
ネットワーク１４０の帯域幅は、分散アプリケーション処理システム１００の性能に影響を及ぼす１つの要因である。第２のネットワークに比較してより広い帯域幅を有するネットワーク１４０は、典型的には、より多くの表示データをリモートディスプレイユニット１１０に送信することをサポートし得る。分散アプリケーション処理システム１００の動作中、ネットワーク１４０の帯域幅は変動する。データがネットワーク１４０を介して送信されると、ネットワークの利用可能な帯域幅の量は減少する。ディスプレイデータがリモートディスプレイユニット１１０によって受信されると、追加のデータがネットワークに入らないと仮定すると、ネットワーク１４０の利用可能な帯域幅は増加する。本発明の一局面は、ネットワーク１４０の利用可能な帯域幅を監視し、測定値を用いて表示更新フレームをリモートディスプレイユニットに送るべき時期を動的に決定する。
【００１６】
リモートディスプレイユニット１１０は、典型的には、プロセッサ１１２、揮発性メモリ１１４（例えば、ＲＡＭキャッシュ）、オペレーティングシステム１１６、ディスプレイエージェント１１８、永続記憶メモリ１２０、ネットワークインタフェース１２２（例えば、ネットワークインタフェースカード）、ディスプレイアプリケーションプログラム１２３、キーボード１２４、少なくとも１つの入力デバイス１２６（例えば、マウス、トラックボール、スペースボール、ライトペンおよびタブレットスタイラス、ならびに任意のその他の入力デバイス）、ならびにディスプレイ１２８を含む。オペレーティングシステム１１６は、限定するものではないが、ＷＩＮＤＯＷＳ（登録商標）３．ｘ、ＷＩＮＤＯＷＳ（登録商標）９５、ＷＩＮＤＯＷＳ（登録商標）９８、ＷＩＮＤＯＷＳ（登録商標）ＮＴ３．５１、ＷＩＮＤＯＷＳ（登録商標）ＮＴ４．０、ＷＩＮＤＯＷＳ（登録商標）２０００、ＷＩＮＤＯＷＳ（登録商標）ＣＥ、ＭＡＣ／ＯＳ、Ｊａｖａ（登録商標）、ＰＡＬＭ  ＯＳ、ＳＹＭＢＩＡＮ  ＯＳ、ＬＩＮＵＸ、ＳＭＡＲＴＰＨＯＮＥ  ＯＳ、およびＵＮＩＸ（登録商標）を含み得る。ディスプレイエージェント１１８は、コマンドおよびデータを計算デバイス１５０およびリモートディスプレイユニット１１０のユーザ（図示されていない）から受信する。クライアントエージェント１１８は、リモートディスプレイユニット１１０の他のコンポーネントと対話するとき（例えば、オペレーティングシステム１１６をディスプレイ１２８の出力データに向けるとき）、受信された情報を用いる。ディスプレイエージャント１１８はまた、計算デバイス発行のコマンドまたはリモートディスプレイユニット１１０におけるユーザアクションに応答して、リクエストおよびデータを計算デバイス１５０に送信する。
【００１７】
リモートディスプレイユニット１１０は、任意のパーソナルコンピュータ（例えば、２８６、３８６、４８６、Ｐｅｎｔｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）ＩＩ、Ｍａｃｉｎｔｏｓｈのコンピュータ）、Ｗｉｎｄｏｗｓ（登録商標）ベースの端末、ネットワークコンピュータ、無線デバイス、情報アプライアンス、ＲＩＳＣ  ＰｏｗｅｒＰＣ、Ｘ−デバイス、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、携帯電話、またはオペレーティングシステム１１６およびディスプレイアプリケーションプログラム１２３を実行するのに十分なメモリを提供するその他の計算デバイスであり得る。ディスプレイアプリケーションプログラム１２３は、オペレーティングシステム１１６またはスタンドアロンアプリケーションに不可欠であり得ることは理解されるべきである。ディスプレイ提示プログラム１２３は、ネットワーク１４０を介して計算デバイス１５０によってディスプレイ提示プログラム１２３に送られるコマンドおよびデータを用い、ディスプレイユニットのディスプレイ１２８のユーザに図形出力を提供する。
【００１８】
同様に、計算デバイス１５０は、プロセッサ１５２、揮発性メモリ１５４、オペレーティングシステム１５６、アプリケーションプログラム１５８、計算デバイスエージェント１６０、永続記憶メモリ１６２、およびネットワークインタフェース１６４を含み得る。計算デバイスエージェント１６０は、ディスプレイエージェント１１８および計算デバイス１５０の他のコンポーネントと対話し、リモートディスプレイおよびアプリケーションプログラム１５８の動作性をサポートする。分散アプリケーション処理システム１００において、アプリケーションプログラムの実行は主として計算デバイス１５０において行なわれ、アプリケーション実行によって生成されるユーザインタフェースは、ネットワーク１４０を介してリモートディスプレイユニット１１０に送信される。ユーザは、ディスプレイユニット１１０において、キーストロークおよびマウス移動などの入力を提供し、該入力は、ネットワーク１４０を介して計算デバイス１５０に送信され、アプリケーションプログラムにさらなるタスクを実行するよう命令する。
【００１９】
各計算デバイス１５０は、リモートディスプレイユニット１１０によってアクセスされ得る１つ以上のアプリケーションプログラム１５８のホストとして働く。そのようなアプリケーションの例は、Ｒｅｄｍｏｎｄ，ＷａｓｈｉｎｇｔｏｎのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎよって製造されるＭＩＣＲＯＳＯＦＴ  ＷＯＲＤなどのワード処理プログラムおよび該Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されるＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬなどのスプレッドシートプログラム、会計報告プログラム、顧客登録プログラム、技術サポート情報を提供するプログラム、顧客データベースアプリケーション、アプリケーションセットマネージャ、または、Ｓａｎ  Ｒａｆａｅｌ，ＣａｌｉｆｏｒｎｉａのＡｕｔｏｄｅｓｋによって販売されるＡＵＴＯＣＡＤ、Ｓｕｒｅｓｎｅｓ  Ｃｅｄｅｘ、仏国のＤａｓｓａｕｌｔ  Ｓｙｓｔｅｍｅｓによって販売されるＣＡＴＩＡ、Ｎｅｅｄｈａｍ，ＭａｓｓａｃｈｕｓｅｔｔｓのＰａｒａｍｅｔｒｉｃ  Ｔｅｃｈｎｏｌｏｇｙ  Ｃｏｒｐｏｒａｔｉｏｎによって販売されるＰＲＯ／ＥＮＧＩＮＥＥＲなどの計算機援用設計および製造アプリケーションを含む。
【００２０】
図２は、図１に示される分散アプリケーション処理システムの動作概観を提供する。アプリケーションプログラム１５８は、マウス１２６およびキーボード１２４のユーザ操作に応答して出力を生成し（ステップ２１０）、該出力はオペレーティングシステム１５６によって解釈され、オペレーティングシステム１５６は、今度は、アプリケーションプログラム１５８の図形出力を示す描画コマンドを発行する。描画コマンドは、計算デバイス１５０のバッファに書き込まれる（ステップ２１４）。バッファのコンテンツは、定期的にリモートディスプレイユニット１１０に通信され（ステップ２１８）、リモートディスプレイユニット１１０のディスプレイエージェント１１８によって処理され（ステップ２２２）、ディスプレイ１２８を更新する。計算デバイス１５０は、トランスポート機構（計算デバイスエージェント１６０の一部）を介してリモートディスプレイユニット１１０と通信する。一実施形態において、トランスポート機構は複数の仮想チャネルを提供し、仮想チャネルの１つは、図形画面データを計算デバイス１５０からリモートディスプレイユニット１１０に送信するためのプロトコルを提供する。
【００２１】
なおも図２をより詳細に参照すると、アプリケーションプログラム１５８は、出力を生成し（ステップ２１０）、アプリケーションプログラム１５８の図形出力を示す描画コマンドを発行する。描画コマンドの例は、限定するものではないが、ラスタオペレーション、ＷＩＮＤＯＷＳ（登録商標）ベースのオペレーティングシステムによって提供されるＧＤＩコマンド、およびＭＡＣ／ＯＳベースのオペレーティングシステムによって提供されるＱＵＩＣＫＤＲＡＷまたはＱＵＡＲＴＺコマンドを含み得る。一部の実施形態において、アプリケーションプログラムによって発行される描画コマンドは「フック」される。すなわち、描画コマンドはアプリケーションプログラムに対応付けられていないコードによってインタセプトされ、下記のようにさらに処理される。これらの実施形態において、描画コマンドはまた、下記のように処理される他に、処理のためオペレーティングシステム１１６に提供され得る。容易な参照のため、明細書の残りすべてに関して描画コマンドは「ＧＤＩコマンド」という。
【００２２】
描画コマンドは、計算デバイス１５０によって提供されるバッファに書き込まれる（ステップ２１４）。一部の実施形態において、計算デバイス１５０の図形表示に対応付けられたデバイスドライバへのインタフェースコールなどの低レベルコマンドは、バッファに書き込まれる。さらに他の実施形態において、描画コマンドおよび低レベルコマンドの両方は、計算デバイス１５０によって提供されるバッファに記憶される。描画コマンドはバッファに記憶され得、同時に、その記憶されたコマンドは、リモートディスプレイユニット１１０に送信され、リモートディスプレイユニットによって提供されるディスプレイを更新する。
【００２３】
バッファのコンテンツは、定期的にリモートディスプレイユニット１１０に通信される（ステップ２１８）。バッファのコンテンツがリモートディスプレイユニット１１０に通信される頻度は、より詳細は下記されるように、ネットワークにおいて現在ペンディングとなっているデータの量の関数である。計算デバイス１５０は、トランスポート機構（計算デバイスエージェント１６０の一部）を介してリモートディスプレイユニット１１０と通信する。一実施形態において、トランスポート機構は複数の仮想チャネルを提供し、仮想チャネルの１つは、図形画面データを計算デバイス１５０からリモートディスプレイユニット１１０へ送信するためのプロトコルを提供する。
【００２４】
リモートディスプレイユニット１１０のディスプレイエージェント１１８は、受信したバッファコンテンツを処理し（ステップ２２２）、ディスプレイ１２８を更新する。一実施形態において、ディスプレイエージェントは、描画コマンドをリモートディスプレイユニット１１０のオペレーティングシステム１１６に発行し、描画コマンドは、計算デバイス１５０のアプリケーションプログラム１５８によって発行された描画コマンドに対応する。
【００２５】
図３は、計算デバイスエージェント１６０の種々のコンポーネントの概念的ブロック図を示す。一実施形態において、計算デバイスエージェント１６０は、生産者スレッド３００、バッファ３０４、消費者スレッド３０８、およびドライバ３１２を含む。生産者スレッド３００はバッファ３０４と通信する。消費者スレッド３０８は、バッファ３０４およびドライバ３１２と通信する。
【００２６】
生産者スレッド３００は、１つ以上のアプリケーションスレッド３１４’、３１４”（総称的にアプリケーションスレッド３１４という）を含み、該アプリケーションスレッド３１４は、ＧＤＩコマンドなどの描画コマンドを発行し、描画コマンドは、処理され図形画像としてバッファ３０４に記憶される。描画コマンドは、典型的には、グラフィックスレンダリングエンジンに発行され、グラフィックスレンダリングエンジンは、今度は、コマンドをバッファ３０４にレンダリングする。グラフィックレンデリングエンジンの出力は、複雑なビットマップまたは類似の図形表現であり得る。本質的に、バッファ３０４は、リモートディスプレイユニット１１０への後の送信のための表示画像を記憶する「仮想の」ディスプレイとして機能する。
【００２７】
生産者スレッド３００はまた、ＧＤＩコマンドをグラフィックスレンダリングエンジンに発行する前に、ＧＤＩコマンドをフックすることによって、バッファ３０４に対する変化を追跡する。生産者スレッド３００は、ＧＤＩコマンドを調査し、バッファ３０４のビットマップにおける変化の領域を指示する１つ以上のバウンディング長方形を生成する。バウンディング長方形は、バッファ３０４と通信するかまたはバッファ３０４に不可欠である更新アレイ３１６に記憶される。生産者スレッド３００は、消費者スレッド３０８の動作中、バッファ３０４および更新アレイ３１６を継続的に更新し得る。言いかえると、生産者スレッド３００は、消費者スレッド３０８とは無関係に動作する。
【００２８】
一実施形態において、バッファ３０４は、揮発性メモリ１５４または永続記憶装置１６２の専用の動的に再構成可能なセクションである。前述のように、バッファ３０４の部分は、バウンディング長方形を記憶するための更新アレイ３１６として確保される。別の実施形態において、バッファは、バッファとして特に働くように装備されたデュアルポートＲＡＭなどの特定目的のメモリを備えている。
【００２９】
バウンディング長方形の数が増加すると、種々のアルゴリズムはバウンディング長方形上で動作し、変化の重複領域を除去し、単一の更新フレームにおける単一の領域に対して複数の更新を送ることを防ぐ。例えば、領域Ｘがバッファ３０４への第１の書き込み中に変化した場合、変化領域の座標を指示するバウンディング長方形は、更新アレイ３１６に記憶される。バッファ３０４へのその後の書き込みが領域Ｘを含む領域に対する変化という結果となった場合、領域Ｘに関係するバウンディング長方形は、除去され、新バウンディング長方形情報によって取って代わられる。
【００３０】
消費者スレッド３０８は、累算器モジュール３２０、コピーモジュール３２４、タイマモジュール３２８、および圧縮器モジュール３３２を含む。累算器モジュール３２０はバッファ３０４と通信し、バッファ３０４の表示画像において変化した表示データの量の現在高を提供する。現在高は、以下にさらに詳細に説明されるが、不可逆的圧縮を含む動作のモードをトリガするために用いられる。
【００３１】
コピーモジュール３２４はバッファ３０４と通信し、バッファ３０４にアクセスする能力があり、バッファの表示画像および更新アレイ３１６におけるバウンディング長方形をコピーし、リモートディスプレイユニット１１０への送信のための表示更新フレームを作成する。
【００３２】
圧縮器モジュール３２８は、コピーモジュール３２４および累算器モジュール３２０と通信する。圧縮器モジュール３２８は、表示更新フレーム上の不可逆的圧縮を実行する手段を提供し、不可逆的表示更新フレームを作成する。現在高は、圧縮器モジュールを必要に応じて活動化または非活動化するために用いられる。
【００３３】
タイマモジュール３３２は、ドライバ３１２およびコピーモジュール３２４と通信する。タイマモジュール３３２の機能は、動的に決定された期間後に、バッファ３０４からのコピーオペレーションをトリガすることである。タイマモジュール３３２の動的に決定された期間の長さは、ネットワーク１４０の利用可能な帯域幅およびそれぞれの表示フレーム更新のサイズに依存する。期間を動的に決定することによって、本発明は、表示更新フレームのリモートディスプレイユニット１１０への「ちょうど間に合う（ｊｕｓｔ−ｉｎ−ｔｉｍｅ）」引渡しを提供する。
【００３４】
ドライバ３１２は、分散アプリケーション処理システム１００の通信プロトコルに従って、表示更新フレームをフォーマットするトランスレータモジュール３３６を含む。ドライバ３１２はまた、タイマモジュール３２８によって用いられる期間を動的に決定する。一実施形態において、ドライバモジュール３１２は、表示更新フレームのためのラウンドトリップタイムを監視する。動的に決定された期間を決定する他の方法も、用いられ得る。例えば、アプリケーションスレッド３１４によって発行された描画オペレーション数が、用いられ得る。
【００３５】
ここで図４を参照すると、生産者スレッド３００の動作が説明される。全体の概観として、生産者スレッド３００は描画コマンドを発行し（ステップ４００）；表示画像をバッファ３０４に書き込み（ステップ４１０）；バウンディング長方形を生成し（ステップ４２０）；バウンディング長方形を更新表示領域３１６に記憶し（ステップ４３０）；バウンディング長方形を収束させる（ステップ４４０）。
【００３６】
より詳細には、アプリケーションプログラムスレッド３１４は、ＧＤＩ描画コマンドをグラフィカルレンダリングエンジンに発行する（ステップ４００）。グラフィカルレンダリングエンジンからの書き込みコマンドは、バッファ３０４に記憶された表示画像を生成する（ステップ４１０）。バッファ３０４へのその後の書き込みは、表示画像に対する変化という結果となる。
【００３７】
生産者スレッド３００は、１つ以上のバウンディング長方形を生成し、該バンディング長方形は、バッファ３０４への最後の書き込み以来変化した表示画像の領域を識別する（ステップ４２０）。一実施形態において、グラフィックスレンダリングエンジンに発行されたＧＤＩコマンドは、それらがグラフィックスレンダリングエンジンに渡される前に、フックされる。その後のＧＤＩコマンドは、以前に発行されたコマンドに対して比較され、画像のどの領域が変化したかを決定する。
【００３８】
更新アレイ３１６は、バウンディング長方形を記憶する（ステップ４３０）。生産者スレッド３００は、新バウンディング長方形を更新アレイ３１６に書き込む前に、更新アレイ３１６に現在ある任意の長方形が新バウンディング長方形と交差または重複するかどうかを判定する。当業者に公知の１つの方法は、長方形衝突検出アルゴリズムを用いることである。
【００３９】
交差または重複が存在する場合、バウンディング長方形は、収束される（ステップ４４０）。本明細書のユーザとして、収束は、現在の長方形を新長方形に置き換え、新長方形に結合またはセグメント化することをいう。一部の実施形態において、新バウンディング長方形が現在のバウンディング長方形と重複する変化の領域を記述する場合、新バウンディング長方形は更新領域３１６に書き込まれ、現在のバウンディング長方形は除去される。
【００４０】
図５に関して、消費者スレッド３０８の動作が記述される。消費者スレッド３０８は、一般的に、表示更新フレームを定期的に生成し、ディスプレイバッファ３０４および更新アレイ３１６のコンテンツをコピーすることによって、リモートディスプレイユニット１１０に送信し（ステップ５１０）；ディスプレイに対する変化を抽出し（ステップ５２０）；ディスプレイに対する変化量を決定し（ステップ５３０）；表示更新フレームを作成し（ステップ５４０）；オプションで、表示更新フレームは不可逆的に圧縮され（ステップ５５０）；表示更新フレームのサイズを計算し（ステップ５６０）；表示更新フレームをトランスレータに通信し（ステップ５７０；更新をリモートディスプレイユニット１１０に送信するのに要する時間を計算し（ステップ５８０）；所定の時間、消費者スレッドの動作を休止させる（ステップ５９０）。
【００４１】
より詳細に、図５を引続き参照すると、コピーモジュール３２４は、動的に決定された期間が終了すると、バッファ３０４および更新アレイ３１６のコンテンツをコピーする（ステップ５１０）。換言すると、消費者スレッド３０８は、バッファ３０４および更新アレイ３１６の「スナップショット」を取る。スナップショットが一旦取られると、スレッド３１６をプログラムするアプリケーションは、バッファ３０４および表示更新領域３１６に継続的に書き込み、消費者スレッド３０８の動作に関係なく、バッファ３０４および表示更新領域３１６に対する更なる変更を行なう。従って、バッファ３０４は、最新の表示情報を有する。
【００４２】
スナップショットから、消費者スレッドは、バッファ３０４コンテンツから、典型的には複雑なビットマップ画像であるディスプレイにおける変化を抽出する（ステップ５２０）。一実施形態において、バウンディング長方形は、ディスプレイのどの領域が変化したかを決定するために用いられる。別の実施形態において、前の更新ディスプレイフレームは、セーブされ、排他的論理和（ＸＯＲ）などの論理演算を用いて現在の更新ディスプレイフレームと比較される。
【００４３】
表示画像における変化量は、当業者に公知の任意の数の種々の方法を用いて決定され（ステップ５３０）、累算器モジュールに通信され現在高を更新する。一実施形態において、影響を受けた領域のサイズが計算される。一実施形態において、変化情報の量は累算器モジュール３２０に送信され、累算器モジュール３２０は現在高を更新する。
【００４４】
一実施形態において、現在カウントは、高更新期間が発生しているかどうかを判定するために用いられる。バッファ３０４に対するどの更新も起こらない場合、累算器モジュール３２６は、所定の量によって現在カウントを減少させる。現在カウントが所定の閾値を越える場合、各表示更新フレームは、リモートディスプレイへの送信の前に、不可逆的圧縮がなされる。高更新期間の終了を決定することは、種々の方法で達成され得る。一実施形態において、所定の期間（例えば、１秒）、バッファ３０４および更新アレイ３１６に対するどの変化も起こらない場合、消費者スレッド３０８は、不可逆的圧縮モードから出て、可逆的圧縮ディスプレイフレーム更新のリモートディスプレイユニット１１０への送信に戻る。
【００４５】
ディスプレイにおける変化量を決定後、消費者スレッド３０８は、表示更新フレームを作成する（ステップ５４０）。必要に応じ、消費者スレッド３０８は、不可逆的圧縮技術を更新ディスプレイフレームに適用し、リモートディスプレイユニット１１０へ送信のための不可逆的更新ディスプレイを作成する。一実施形態において、写真式コーデック（ｃｏｄｅｃ）（例えば、算術符号化を用いるＪＰＥＧ圧縮）が用いられる。この種の符号化は、よりプロセッサ集約的であり、該符号化は、表示更新フレームのサイズを他のコーデック（例えば、最適化されたハフマン符号化を用いるＪＰＥＧ圧縮）に比較して３０パーセントも減少させ得る。消費者スレッド３０８は、不可逆的圧縮アルゴリズムを適用する前に、表示更新フレームをキャッシュする。キャッシュされた表示更新フレームは、その後、一旦高更新期間が終了すると、リモートディスプレイユニットに送られる。
【００４６】
一旦表示更新フレームが構築されると、消費者スレッド３０８は、表示更新フレームのサイズを決定する（ステップ５６０）。表示更新フレームは、ドライバ３１２のトランスレータモジュール３３６に通信される（ステップ５７０）。一実施形態において、トランスレータモジュール３３６は、分散アプリケーション処理システム１００の送信プロトコルに従って、表示更新フレームを変換する。変換の一部として、表示更新フレームのサイズは、表示更新フレームをリモートディスプレイユニット１１０に送るのに要する時間を決定するために用いられる。
【００４７】
一実施形態において、ドライバモジュール３１２は、表示更新フレームのサイズをネットワーク１４０の利用可能な帯域幅で割ることによって推定送信時間を計算する（ステップ５８０）。
【００４８】
この計算は、結果として、消費者スレッド３０８のタイマ３３２によって用いられる動的に決定された期間となる。翻訳された表示更新フレームはネットワークインタフェース１６４に送られ、リモートディスプレイユニット１１０に送信される。
【００４９】
消費者スレッドは、表示更新フレームを送信後、非活動のままである（ステップ５９０）か、または動的に決定された期間の終了まで休止する。消費者スレッドは、動的に決定された期間の終了後、バッファ３０４および更新アレイ３１６の別のスナップショットを取り、同じ処理を実行する。
【００５０】
要約として図６を参照すると、画面更新をリモートディスプレイユニット１１０に送信する方法６００は、表示情報をディスプレイユニットから遠くに位置するアプリケーションを実行する計算デバイスのビデオバッファからコピーし、表示更新を生成し（ステップ６１０）；表示更新のサイズを計算し（ステップ６２０）；計算デバイスとディスプレイユニットとを接続するネットワークの利用可能な帯域幅の量を決定し（ステップ６３０）；計算デバイスからディスプレイユニットに表示更新を通信するのに必要な期間を計算し（ステップ６４０）；表示更新をディスプレイに送信し（ステップ６５０）、計算期間が経過すると、この方法を繰り返す（ステップ６６０）。
【００５１】
本発明は特定の詳細に関連して記述されているが、そのような詳細は、添付の特許請求の範囲に含まれる範囲およびその範囲までを除き、本発明の範囲に対する制限としてみなされることは意図されていない。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明の原理に従って構成された分散アプリケーション処理システムのブロック図である。
【図２】図２は、図１の分散アプリケーション処理システムの動作モードを例示するフローチャートである。
【図３】図３は、図１の計算ユニットエージェントの実施形態のブロック図である。
【図４】図４は、図３の生産者スレッドの動作の方法のフローチャートである。
【図５】図５は、図３の消費者スレッドの動作の方法のフローチャートである。
【図６】図６は、本発明の原理に従って、更新をリモートディスプレイに提供する方法の実施形態のフローチャートである。
【図１】
2008539449.tif 000003
【図２】
2008539449.tif 000004
【図３】
2008539449.tif 000005
【図４】
2008539449.tif 000006
【図５】
2008539449.tif 000007
【図６】
2008539449.tif 000008
【国際調査報告】
2008539449.tif 000009
2008539449.tif 000010