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