(57)【特許請求の範囲】
【請求項１】
複数のプロセッサをともなうシステム上で画像を圧縮するための方法であって、
前記画像を、それぞれが前記画像の一部分を含む第１のスライス、第２のスライス、および第３のスライスに分けるステップと、
第１のプロセッサ上においてのみ実行するように第１のスレッドを関連付けるステップと、
第２のプロセッサ上においてのみ実行するように第２のスレッドを関連付けるステップと、
前記第１のスライスを前記第１のスレッドに割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップと、
前記第２のスライスを前記第２のスレッドに割り当て、前記第２のスレッドを前記第２のプロセッサ上で実行するステップであって、前記第２のスライスの割り当ておよび前記第２のスレッドの実行は、前記第１のスライスの割り当ておよび前記第１のスレッドの実行から独立している、ステップと、
前記第１のスライスがすでに処理されたという表示を受信するステップと、
前記第１のスライスがすでに処理されたために利用されていない処理リソースを有する状態にある前記第１のプロセッサの前記第１のスレッドに、前記第３のスライスを割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップであって、前記第３のスライスの割り当ておよび前記第１のスレッドの実行は、前記第２のスライスの割り当ておよび前記第２のスレッドの実行から独立している、ステップと、
前記第２のスライスがすでに処理されたという表示を受信するステップと、
前記第３のスライスがすでに処理されたという表示を受信するステップと、
前記第１、第２、及び第３のスライスを、圧縮される前記画像に対応する第２の画像に組み立てるステップと
を備えることを特徴とする方法。
【請求項２】
前記第２の画像をクライアントへリモートセッションプロトコルに従って送信することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記画像はリモートセッションフレームを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記画像は幅を有し、および各タイルの幅は前記画像の前記幅と等しいことを特徴とする請求項１に記載の方法。
【請求項５】
前記第２の画像をクライアントへリモートセッションを介して通信ネットワークを越えて送信することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記リモートセッションはＲＤＰ（Remote Desktop Protocol）を備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記画像はリモートセッションスタックから受信され、および前記リモートセッションスタックは前記画像を提供するのに同期して遮断し、
前記リモートセッションスタックに前記画像がすでに圧縮されたという表示を送信することをさらに備えることを特徴とする請求項５に記載の方法。
【請求項８】
前記画像はリモートセッションスタックから受信され、前記リモートセッションスタックは前記画像を提供すると非同期にて遮断し、
前記リモートセッションスタックに前記画像がすでに圧縮されたという表示を送信することをさらに備えることを特徴とする請求項５に記載の方法。
【請求項９】
前記第１のスライスがすでに処理されたという表示は、第１の圧縮された出力バッファへの第１のポインタを備え、前記第２のスライスがすでに処理されたという表示は、第２の圧縮された出力バッファへの第２のポインタを備え、前記第３のスライスがすでに処理されたという表示は、第３の圧縮された出力バッファへの第３のポインタを備え、
前記第１、第２、及び第３のポインタを含んだ一覧を、前記画像内における前記スライスの順序に対応するように順序付けることをさらに備える
ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記画像はビットマップを備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
画像を圧縮するためのシステムであって、
複数のプロセッサと、
コンピュータ可読命令を格納する少なくとも１つのメモリと
を備え、
前記コンピュータ可読命令は、前記複数のプロセッサ上で実行されるとき、前記システムに、少なくとも、
前記複数のプロセッサのうち第１のプロセッサ上においてのみ実行するように第１のスレッドを関連付けるステップと、
前記複数のプロセッサのうち第２のプロセッサ上においてのみ実行するように第２のスレッドを関連付けるステップと、
前記画像を、それぞれが前記画像の一部分を含む第１のスライス、第２のスライス、および第３のスライスに分けるステップと、
前記第１のスライスを前記第１のスレッドに割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップと、
前記第２のスライスを前記第２のスレッドに割り当て、前記第２のスレッドを前記第２のプロセッサ上で実行するステップであって、前記第２のスライスの割り当ておよび前記第２のスレッドの実行は、前記第１のスライスの割り当ておよび前記第１のスレッドの実行から独立している、ステップと、
前記第１のスライスがすでに処理されたという表示を受信するステップと、
前記第１のスライスがすでに処理されたために利用されていない処理リソースを有する状態にある前記第１のプロセッサの前記第１のスレッドに、前記第３のスライスを割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップであって、前記第３のスライスの割り当ておよび前記第１のスレッドの実行は、前記第２のスライスの割り当ておよび前記第２のスレッドの実行から独立している、ステップと、
前記第２のスライスがすでに処理されたという表示を受信するステップと、
前記第３のスライスがすでに処理されたという表示を受信するステップと、
それぞれ処理された第１、第２、及び第３のスライスをクライアントに送信するステップと
を行わせる
ことを特徴とするシステム。
【請求項１２】
前記命令は、前記複数のプロセッサ上で実行されるとき、前記システムに、少なくとも、各処理されたスライスをクライアントへ送信させ、さらに、前記システムに、少なくとも、スライスが表わすのは前記画像のどの部分であるかの対応表示とともに各スライスを送信させることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記命令は、前記複数のプロセッサ上で実行されるとき、前記システムに、少なくとも、各処理されたスライスをクライアントへ送信させ、さらに、前記システムに、少なくとも、各スライスを含む圧縮された画像を前記クライアントへ送信させることを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記命令は、前記複数のプロセッサ上で実行されるとき、前記システムに、少なくとも、各処理されたスライスをクライアントへ送信させ、さらに、前記システムに、少なくとも、各処理されたスライスを前記クライアントへリモートセッションを介して送信させることを特徴とする請求項１１に記載のシステム。
【請求項１５】
コンピュータ可読命令を格納するコンピュータ可読記憶デバイスであって、前記コンピュータ可読命令は、プロセッサ上で実行されるとき、前記プロセッサに、
画像を、それぞれが前記画像の一部分を含む第１のスライス、第２のスライス、および第３のスライスに分けるステップと、
第１のプロセッサ上においてのみ実行するように第１のスレッドを関連付けるステップと、
第２のプロセッサ上においてのみ実行するように第２のスレッドを関連付けるステップと、
前記第１のスライスを前記第１のスレッドに割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップと、
前記第２のスライスを前記第２のスレッドに割り当て、前記第２のスレッドを前記第２のプロセッサ上で実行するステップであって、前記第２のスライスの割り当ておよび前記第２のスレッドの実行は、前記第１のスライスの割り当ておよび前記第１のスレッドの実行から独立している、ステップと、
前記第１のスライスがすでに処理されたという表示を受信するステップと、
前記第１のスライスがすでに処理されたために利用されていない処理リソースを有する状態にある前記第１のプロセッサの前記第１のスレッドに、前記第３のスライスを割り当て、前記第１のスレッドを前記第１のプロセッサ上で実行するステップであって、前記第３のスライスの割り当ておよび前記第１のスレッドの実行は、前記第２のスライスの割り当ておよび前記第２のスレッドの実行から独立している、ステップと、
前記第２のスライスがすでに処理されたという表示を受信するステップと、
前記第３のスライスがすでに処理されたという表示を受信するステップと、
前記第１、第２、及び第３の処理されたスライスを、通信ネットワークにわたるリモートセッションを介してクライアントに送信するステップと
を行わせる
ことを特徴とするコンピュータ可読記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを用いた画像圧縮の加速に関する。
【背景技術】
【０００２】
コンピュータは、かつて分離されて他のコンピュータとの最小限または少しの相互作用しか有さなかったけれども、今日のコンピュータは、ＬＡＮ（Local Area Network）およびＷＡＮ（Wide Area Network）などの通信ネットワークを通じて、多種多様な他のコンピュータと相互作用する。インターネット（INTERNET（登録商標））の幅広い成長とともに、コンピュータ間の接続性は、より重要になり、多くの新しいアプリケーションおよび技術を広げてきた。大規模なネットワークの成長、および低価格のパーソナルコンピュータの幅広い可用性は、根本的に、多くの人々の働き方、相互作用の仕方、通信の仕方、および遊び方を変えてきた。
【０００３】
１つの増加しているポピュラーなネットワークの形式は、一般的に、仮想コンピューティングシステムと呼ばれることがある。仮想コンピューティングシステムは、ＲＤＰ（Remote Desktop Protocol）等のプロトコル、ＩＣＡ（Independent Computing Architecture）、およびリモートセッションを介してリモートクライアントとともにデスクトップおよび他のアプリケーションを共有するためのその他のプロトコルを使用することができる。このようなコンピューティングシステムは、典型的に、キーボードの押下およびマウスのクリックまたは選択を、クライアントからサーバへ送信し、画面情報の更新を逆方向にネットワーク接続（例えば、インターネット）を介して送り返す。ゆえに、アプリケーションのスクリーンショットがサーバ側に現れるのと同様に、実際にはユーザ装置にアプリケーションのスクリーンショットを送信するだけで、ユーザは、彼らのマシンがＬＡＮの一部として動作しているような経験を有する。
【０００４】
圧縮アルゴリズムは、リモートセッションによって使用される帯域幅を、ＬＡＮ、無線ＬＡＮ、およびＷＡＮを介して送信するレベルまで減らすことが重要である。これらの圧縮アルゴリズムは、サーバ上の処理時間と引き換えに、セッションのために要求される小さい帯域幅を手に入れる。
【０００５】
長すぎる処理時間は、サーバの拡張性を抑制する上、フレームを符号化するために要求される時間を増加させ、リモートセッションの全てのフレームレート（ＦＰＳ）を減らす。低いＥＰＳは、否定的にユーザの経験に影響を与える。その理由は、セッションが衝動的に要請し、および無反応の感じがするからである。
【０００６】
現在の符号化システムは、多くの現代のコンピュータに見受けられる複数のプロセッサおよびプロセッシングコアを活用するための方法を欠く。処理リソースの最大化のこの欠如は、圧縮時間を可能な時間よりも長くさせる。
【発明の概要】
【０００７】
実施形態において、コアごとに物理的なＣＰＵ（Central Processing Unit）のスレッドを割り当てるマルチプロセッサ（またはコア）のワークマネージャ（work manager）の使用を通じて、複数のプロセッサのリソースは活用されうる。符号化されるべき画像は、一連のスライス（slice）−画像と同じ幅の長方形の一片−に分けられる。ワークマネージャは、動的に比較しおよびワークを利用可能なコアへ割り当て、完了通知を集めて最後の圧縮された画像スライスがコヒーレント圧縮画像に再組み立てされるようにする。ワークマネージャは、スライスを第１の利用可能なプロセッサにディスパッチするなど、スライスを利用可能なプロセッサにディスパッチする。スライスがディスパッチされるプロセッサは、独立してスライスを圧縮する。ワークマネージャは、各スライスについての完了通知を各個別のコアから受信し、およびこれらの圧縮されたスライスを圧縮された画像に組み立てる。
【０００８】
複数のプロセッサまたはコアを利用することによって、圧縮速度は増大される。キャッシュスラッシングは、画像を分けることおよび画像のスライスを異なるコアに割り当てることによって、減らされる。種々の技術が、動的にスライスの圧縮作業負荷を異なるプロセッサに割り当てるために利用可能である。対応する技術が実施され、圧縮された画像を解凍することができる。
【０００９】
当業者によって、１つまたは複数の種々の開示の態様は、本明細書で言及される本開示の態様をもたらす電気回路および／またはプログラミングを含むことができるが、これらに限定されるわけではないことが理解されうる。電気回路および／またはプログラミングは、実質的には、本明細書で言及される態様をもたらすよう構成されるハードウェア、ソフトウェア、および／またはファームウェアの任意の組み合わせとすることができ、システム設計者の設計上の選択によって決まる。
【００１０】
前述のものは要約であり、ゆえに当然、単純化、一般化、および詳細の省略を含む。当業者は、要約は単に例示であり決して限定することを意図していないことを理解するであろう。
【図面の簡単な説明】
【００１１】
この明細書に従うシステム、方法、およびコンピュータ可読媒体は、さらに添付の図面に関連して記載される。
【図１】本明細書で記載される複数のプロセッサの画像符号化が実行されうる例示的な汎用コンピューティング環境を示す図である。
【図２】本開示の態様を実行するためのオペレーション環境を表わす図である。
【図３】マルチプロセッサ画像符号化を利用するＲＤＰ（Remote Desktop Protocol）を介するクライアントおよびサーバの通信を示す図である。
【図４】マルチプロセッサ画像符号化のための例示的なオペレーション処理を示す図である。
【発明を実施するための形態】
【００１２】
図１は、本明細書にて記載される技術が採用される汎用コンピューティング装置のブロック図を示している。コンピューティングシステム環境１２０は、適切なコンピューティング環境の１つの例にすぎず、本開示事項の使用または機能の範囲に関するいかなる限定も提案することを意図していない。コンピューティング環境１２０は、例示的なオペレーション環境１２０において示されるコンポーネントの任意の１つまたは組み合わせに関して、いかなる依存を有するともいかなる要求を有するとも解釈されるべきでない。いくつかの実施形態において、種々の表わされるコンピューティング要素は、本開示の特定の態様を具体化するように構成される電気回路を含むことができる。例えば、この開示において使用される電気回路という用語は、ファームウェアまたはスイッチによって機能を実行するように構成される特殊なハードウェアコンポーネントを含むことができる。他の実施形態において、電気回路という用語は、機能を実行するように動作する論理回路を具体化するソフトウェア命令によって構成される、汎用処理装置、メモリなどを含むことができる。電気回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態において、開発者は論理回路を具体化するソースコードを書き、ソースコードは汎用処理装置によって処理されうる機械が読み取り可能なコードにコンパイルされうる。当業者は技術分野の状態がハードウェア、ソフトウェア、またはハードウェア／ソフトウェアの組み合わせの間に違いがほとんど無くなるまで発達したことを理解できるので、特定の機能を達成するためのハードウェア対ソフトウェアの選択は、開発者に任せられる設計上の選択である。さらに具体的にいうと、当業者は、ソフトウェア処理は同等のハードウェア構造に変わりうること、およびハードウェア構造はそれ自体が同等のソフトウェア処理に変わりうることを理解することができる。ゆえに、ハードウェアの実装対ソフトウェアの実装の選択は、設計上の選択の１つであり、開発者に任される。
【００１３】
コンピュータ１４１は、典型的に種々のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１４１によってアクセスされうる任意の利用可能な媒体とすることができ、揮発性の媒体と不揮発性の媒体との両方、着脱可能な媒体と着脱不可能な媒体との両方を含む。システムメモリ１２２は、ＲＯＭ（Read Only Memory）１２３およびＲＡＭ（Random Access Memory）１６０などの揮発性および／または不揮発性のメモリの形でコンピュータ記録媒体を含む。ＢＩＯＳ（Basic Input/Output System）１２４は、スタートアップ中などに、情報をコンピュータ１４１内の要素間で転送するのを助ける基本ルーティンを含む。ＢＩＯＳは、典型的にＲＯＭ１２３に格納される。ＲＡＭ１６０は、典型的に、直ちにアクセス可能なデータおよび／またはプログラムモジュールを含み、現在処理装置１５９によって操作されている。例として、限定するわけではなく、図１はオペレーティングシステム１２５、アプリケーションプログラム１２６、他のプログラムモジュール１２７、およびプログラムデータ１２８を示している。
【００１４】
コンピュータ１４１は、他の着脱可能／着脱不可能、揮発性／不揮発性のコンピュータ記録媒体を含むこともできる。ほんの一例として、図１は、着脱不可能な不揮発性の磁気媒体の読み込みまたは書き込みをするハードディスクドライブ１３８、着脱可能な不揮発性の磁気ディスク１５４の読み込みまたは書き込みをする磁気ディスクドライブ１３９、およびＣＤ ＲＯＭまたは他の光学媒体などの着脱可能な不揮発性の光学ディスク１５３の読み込みまたは書き込みをする光学ディスクドライブ１４０を示している。例示的なオペレーション環境に使用されうる他の着脱可能／着脱不可能、揮発性／不揮発性のコンピュータ記録媒体は、限定するわけではなく、磁気テープカセット、フラッシュメモリカード、ＤＶＤ（Digital Versatile disk）、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどを含む。ハードディスクドライブ１３８は、典型的に、インタフェース１３４などの着脱不可能なメモリインタフェースを介してシステムバス１２１に接続される。磁気ディスクドライブ１３９および光学ディスクドライブ１４０は、典型的に、インタフェース１３５などの着脱可能なメモリインタフェースによってシステムバス１２１に接続される。
【００１５】
上記で論じられおよび図１において示されているドライブおよびそれらに関連するコンピュータ記録媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１４１のための他のデータの記憶域を提供する。図１において、例えば、ハードディスクドライブ１３８は、オペレーティングシステム１５８、アプリケーションプログラム１５７、他のプログラムモジュール１５６、およびプログラムデータ１５５を格納するように示されている。これらのコンポーネントは、オペレーティングシステム１２５、アプリケーションプログラム１２６、他のプログラムモジュール１２７、およびプログラムデータ１２８と同一であるかまたは異なることが可能であることに留意されたい。オペレーティングシステム１５８、アプリケーションプログラム１５７、他のプログラムモジュール１５６、およびプログラムデータ１５５は、少なくともそれらは異なるコピーであることを示すため、ここでは異なる番号を与えられている。ユーザは、コマンドおよび情報をコンピュータ１４１に入力装置を介して入力することができる。入力装置は、キーボード１５１およびポインティング装置１５２などであり、一般に、マウス、トラックボール、またはタッチパッドと呼ばれる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、または同様のものを含むことができる。これらおよび他の入力装置は、しばしば、ユーザ入力インタフェース１３６を介して処理装置１５９に接続される。ユーザ入力インタフェース１３６はシステムバスに結合されているが、パラレルポート、ゲームポート、またはＵＳＢ（Universal Serial Bus）などの他のインタフェースおよびバス構造によって接続されうる。モニター１４２または他の種類の表示装置も、ビデオインタフェース１３２などのインタフェースを介してシステムバス１２１に接続される。モニターに加えて、コンピュータは、スピーカー１４４およびプリンター１４３などの他の周辺出力装置も含むことができ、これらは出力周辺インタフェース１３３を介して接続されうる。
【００１６】
コンピュータ１４１は、ネットワーク化された環境において、リモートコンピュータ１４６などの１つまたは複数のリモートコンピュータへの論理接続を使用して、動作することができる。リモートコンピュータ１４６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般的なネットワークノードとすることができる。メモリ記憶装置１４７のみが図１において示されてきたけれども、リモートコンピュータ１４６は、典型的に、コンピュータ１４１に関連して上述された要素の多くまたは全てを含む。図１において表わされている論理接続は、ＬＡＮ（Local Area Network）１４５およびＷＡＮ（Wide Area Network）１４９を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、職場、企業規模のコンピュータネットワーク、イントラネット、インターネットにおいて通常である。
【００１７】
ＬＡＮネットワーク環境において使用されるとき、コンピュータ１４１はネットワークインタフェースまたはアダプタ１３７を介してＬＡＮ１４５に接続される。ＷＡＮネットワーク環境において使用されるとき、コンピュータ１４１は典型的にモデム１５０またはインターネットなどのＷＡＮ１４９を介して通信を確立するための他の手段を含む。モデム１５０は、内蔵または外付けとすることができ、ユーザ入力インタフェース１３６または他の適切な機構を介してシステムバス１２１に接続されうる。ネットワーク化された環境において、コンピュータ１４１に関連して表わされるプログラムモジュール、またはそれらの一部は、リモートメモリ記憶装置にて格納されうる。例として、そして限定ではなく、図１は、リモートアプリケーションプログラム１４８をメモリ装置１４７上に存在するように示している。示されるネットワーク接続は例示であり、コンピュータ間の通信リンクを確立するための他の手段が使用されうることが理解されるであろう。
【００１８】
図２を次に参照すると、図２は、本開示の態様が実装されうる環境例を大まかに示している。当業者は、図２によって表わされる要素例が本開示を記載するための動作可能なフレームワークを提供することを理解できる。したがって、いくつかの実施形態において、環境の物理的なレイアウトは異なる実装スキームに応じて異なりうる。ゆえに、動作可能なフレームワーク例は、例示としてのみ扱われるべきであり、特許請求の範囲を全く限定しない。当業者は、以下の議論は導入であり、図２によって表わされる要素はより詳細に図３から図４の動作可能な処理の議論内において記載されることも理解できる。
【００１９】
図２は、大まかに、本開示の態様を含むように構成されうるターミナルサーバ環境の高いレベルの概観を表わしている。図を参照して、サーバ２０４はターミナルサーバと例えば３つのクライアント例２０１、２０２、および２０３とを実装するように構成される電気回路を含むことができると表わされる（３つのクライアントが表わされているが、実施形態におけるサーバ２０４はより多くのクライアントまたはより少ないクライアントへサービスを提供することができる）。クライアント例２０１−２０３は、ユーザにサーバ２０４への入力をさせるように、およびサーバ２０４によって生成されるユーザインタフェース情報を表示するように構成されるハードウェアによって実行されるコンピュータターミナルを含むことができる。他の実施形態において、クライアント２０１−２０３は、図１のコンピュータと同様の要素を含むコンピュータとすることができる。これらの実施形態において、クライアント２０１−２０３は、オペレーティングシステムを実行するように構成される電気回路、およびターミナルの機能をエミュレートするように構成される電気回路を含むことができる。これらの例において、当業者は、オペレーティングシステムを実行するように構成される電気回路はターミナルをエミュレートするように構成される電気回路を含むこともできることを理解できる。
【００２０】
表わされる例において、サーバ２０４は、セッション１からＮまで（Ｎは１より大きい整数である）などのクライアント２０１、２０２、および２０３を接続するための１つまたは複数のセッションを生成するよう構成されうる。つまり、本開示の実施形態におけるセッションは、一般的に、複数のサブシステムによって実行されるオペレーション環境を含むことができる。サブシステムは、例えば、ソフトウェアコードであり、実行環境を実行するようにおよびオペレーティングシステム２１４のカーネル２１８と相互に作用するように構成される。例えば、セッションはシェルおよびデスクトップなどのユーザインタフェース、デスクトップ内でマウスの動きを追跡するサブシステム、アイコン上のマウスクリックをプログラムのインスタンスを実行するコマンドへ変換するサブシステムなどを含むことができる。別の実施形態において、セッションはアプリケーションを含むことができる。この例においてアプリケーションが表示されているが、デスクトップ環境はいまだに生成され、ユーザから隠されている。この例におけるセッションは、上述のセッションと同様のサブシステムを含むことができる。一般的に、セッションはユーザ基準でユーザ上のサーバ２０４によって生成されうる。ユーザ基準は、例えば、サーバ２０４が接続要求をネットワーク接続上でクライアント２０１などのクライアントから受信するときである。一般的に、接続要求は最初にトランスポート論理２１０によって操作されうる。トランスポート論理２１０は、例えば、サーバ２０４の電気回路によって実行されうる。トランスポート論理２１０は、いくつかの実施形態において、接続メッセージに従うようにおよび接続メッセージをエンジン２１２に転送するように構成されうるネットワークアダプタ、ファームウェア、およびソフトウェアを含むことができる。図２によって示されるように、セッションが生成されるとき、トランスポート論理２１０は各セッションについてプロトコルスタックインスタンスを含むことができる。一般的に、各プロトコルスタックインスタンスは、ユーザインタフェース出力を関連するクライアントへ送るように、および関連するクライアントから受信するユーザ入力を適切なセッションコア２４４に送るように構成されうる。
【００２１】
図２によって表わされるように、セッションの生成処理の間、エンジン２１２はセッションについてのライセンスを獲得するように構成されうる。例えば、ある実施形態において、エンジン２１２はライセンスをクライアント２０１からセッションの生成処理の間に受信することができる。別の実施形態において、エンジン２１２はライセンスのコピーをライセンスデータベース２２２から受信することができる。本開示のいくつかの実施形態において、ライセンスデータベース２２２は相関的なデータベース管理プログラムを含むことができる。相関的なデータベース管理プログラムは、図１のコンピュータなどのコンピュータのオペレーティングシステム上で実行されうる。ライセンスデータベース２２２を含む実施形態において、クライアントがセッションをサーバ２０４から獲得しようと試みるときに調べられうる１つまたは複数のライセンスを格納することができる。別の実施形態において、各ライセンスはそれ自身がアカウント識別子に関連付けられうる。アカウント識別子は、例えば、ユーザ名／パスワードの組み合わせ、スマートカード識別子などである。各ライセンスは、正しいアカウント識別子が表れる場合に調べられるだけである。一般に、サーバ２０４が生成できる接続数は、サーバ２０４を制御するエンティティがサーバプロバイダからすでに購入したライセンシーの数によって決まりうる。例えば、エンティティが１ライセンスを購入していた場合、サーバ２０４は１セッションを許可するのみであるように構成されうる。この例において、ライセンスがアカウント識別子に関連する場合、正しいアカウント識別子を表わすユーザだけがセッションを獲得することができる。
【００２２】
本開示の実施形態において、各ライセンスは使用されうる前にサービスプロバイダ２６２によって有効にされうる。例えば、サービスプロバイダ２６２は実施形態において、ライセンスを提供しサーバを有効にする認証局として動作することができる。これらの実施形態において、サービスプロバイダ２６２は、ライセンスは盗まれないこと、コピーされないこと、または海賊版を作られないことを保証することができる。サービスプロバイダ２６２は、ライセンスのコピーをデータベースに格納することおよびライセンスをサーバ２０４と関連付けることによって、ライセンスは購入されるサーバ２０４によって使用されるのみであることを保証することもできる。
【００２３】
図２によって示されるように、本開示の実施形態における構成マネージャ２２４は、コンピュータ可読命令を含むことができる。コンピュータ可読命令は、実行されるとき、セッション生成処理の間にライセンスを受信すること、およびセッションマネージャ２１６などの種々のサブシステムと連動することによって新たにセッションを生成するためのサービスレベルを決定することができる処理を具体化する。実施形態においてセッションマネージャ２１６は、例えば、セッションスペースについてセッション識別子を生成すること、セッション識別子をテーブルへ加えること、メモリをセッションスペースに割り当てること、システム環境の変数およびセッションスペースに割り当てられるメモリにおけるサブシステム処理のインスタンスを生成することによって、各セッションを初期化および管理するように構成されうる。図２によって示されるように、実施形態においてセッションマネージャ２１６は、ランタイムサブシステム２４０などの環境サブシステムをインスタンス化することができる。ランタイムサブシステム２４０は、セッションコア２４４などのカーネルモード部分を含むことができる。例えば、実施形態における環境サブシステムは、サービスの一部をアプリケーションプログラムにさらし、オペレーティングシステム２１４のカーネル２１８へのアクセスポイントを提供するように構成されうる。図２によって示されるように、いくつかの実施形態において、カーネル２１８は、セキュリティサブシステム２５０およびリソースマネージャ２５６を含むことができる。実施形態において、セキュリティサブシステム２５０は、例えばランタイムオブジェクトの保護を実行することによって、サーバ２０４のセキュリティポリシーを強制することができる。これらの実施形態において、実施形態におけるリソースマネージャ２５６は、ランタイムサブシステム２４０からの要求に応じて処理およびスレッドを生成および終了することができる。さらに具体的にいうと、実施形態においてランタイムサブシステム２４０は、スレッドの実行を要求することができ、セッションコア２４４は要求をカーネル２１８のエグゼクティブへ送信して、スレッドについてのメモリを割り当ておよびそれらが実行されるべき時間をスケジューリングすることができる。
【００２４】
図２の説明を続けると、実施形態においてセッションコア２４４はＧＤＩ（Graphics Display Interface）２４６および入力サブシステム２５２を含むことができる。実施形態において入力サブシステム２５２は、ユーザ入力をクライアント２０１から、セッションに関連するプロトコルスタックインスタンスを介して受信し、および入力をセッションコア２４４へ送信するように構成されうる。ユーザ入力は、いくつかの実施形態において、絶対的なおよび／または相対的なマウスの動きのコマンド、マウスの座標、マウスのクリック、キーボード信号、ジョイスティックの動きの信号などを示す信号を含むことができる。ユーザ入力、例えば、マウスのアイコン上のダブルクリックは、セッションコア２４４によって受信されうる。入力サブシステム２５２は、アイコンがダブルクリックに関連する座標に位置するかを決定するように構成されうる。入力サブシステム２５２は、通知をランタイムサブシステム２４０へ送信するように構成されうる。ランタイムサブシステム２４０は、アイコンに関連するアプリケーションについての処理を実行することができる。
【００２５】
入力をクライアント２０１から受信することに加えて、描画コマンドがアプリケーションおよび／またはデスクトップから受信され、ＧＤＩ２４６によって処理されうる。ＧＤＩ２４６は、一般に、グラフィックオブジェクトの描画コマンドを生成できる処理を含むことができる。この実施形態のＧＤＩ２４６は、コマンドをリモートディスプレイサブシステム２５４へ渡すように構成されうる。リモートディスプレイサブシステム２５４は、セッションについてのディスプレイドライバをインスタンス化することができる。実施形態において、リモートディスプレイサブシステム２５４は、サーバ２０４に物理的に取り付けられるディスプレイに関連しないかもしれない仮想ディスプレイドライバを含むように構成されうる。例えば、サーバ２０４はヘッドレス（headless）で実行されうる。この実施形態における仮想ディスプレイドライバは、描画コマンドを受信し、それらをクライアント２０１にセッションに関連するスタックインスタンスを介して送信するように構成されうる。
【００２６】
図３は、リモートセッションを介して通信するクライアント３１６およびサーバ３０２を示している。サーバは、クライアントへ送信する画像３１０のマルチプロセッサの圧縮を使用する。
【００２７】
ここで、クライアント３１６およびサーバ３０２は、通信ネットワーク３１４を越えてクライアント３１６上のリモートクライアント３１８と通信するサーバ３０２上のリモートサーバ３０４によって実行されるリモートセッションを介して通信している。リモートクライアント３１８は、マウスの動きまたはキーの押下などの入力コマンドを、リモートサーバ３０４へ送信する。リモートサーバ３０４は、それらを解釈し、およびクライアント３１８へ、その入力結果に対応する画像データ３１０を送信する。例えば、クライアント３１６は、マウスの動きおよびクリックを発して、映像を開くことができる。サーバ３０４は、この入力情報を受信し、結果として映像が再生されるべきであると決定し、および結果として生じる画像３１０と場合によっては音声を送信する。これらの画像と音声は、表示装置３２０上での表示のためにクライアント３１８に対して再生される映像に対応する。
【００２８】
サーバ３０２は、しばしば、帯域幅を節約するために、クライアント３１６へ送信する画像３１０を圧縮する。本システムにおいて、サーバ３０２は各画像３１０をワークマネージャ３０６へ送信する。ワークマネージャ３０６は、サーバ３０２上に存在する複数のプロセッサ３０８またはコアの各々を介して、各画像３１０の圧縮を管理する。ワークマネージャ３０６は、画像３１０を受信し、およびそれを１つまたは複数のスライス３１２へ区切る。典型的なリモートセッションの圧縮アルゴリズムは、タイル（tile（例えば、64×64画素の正方形））上またはストリップ（strip（例えば、1680×2画素の長方形））上で動作することができる一方、スライス３１２は、典型的に、画像３１０（例えば、1680×128画素）の非常に大きな部分である。スライス３１２は、プロセッサ３０８についてのいずれのキャッシュスラッシング問題をも避けるように、選択されうる。圧縮の過程において、スライス３１２は、さらにタイルまたはストリップに分けられうる。しかし、スライス３１２は、プロセッサ３０８に割り当てられている構成単位であり、そのためスライス３１２内の全てのタイルまたはストリップはそのコアに割り当てられたままである。
【００２９】
ワークマネージャ３０６は、画像３１０を圧縮するために利用する各プロセッサ３０８に関連するスレッドを保持する。ワークマネージャ３０６がスライス３１２を生成するとき、各自をスレッドの１つへディスパッチする。ワークマネージャ３０６は、多様な技術を使用して、スライス３１２を第１の利用可能なスレッドに割り当てること、またはスレッド上の複数のスライス３１２を待ち行列に入れることによってなど、スレッドのディスパッチの効率性を最大にする。このため、スレッドは圧縮するためのスライス３１２を欠くことがない。
【００３０】
スレッドが対応するプロセッサ３０８上で実行されるとき、スライス３１２は圧縮される。実施形態において、スライス３１２は、ＲＬＥ（Run-Length Encoding）圧縮スキームを介して圧縮される。いったんスライス３１２が圧縮されると、ワークマネージャ３０６は、そのような表示を受信する。ワークマネージャ３０６が、与えられた画像３１０内の各スライス３１２が圧縮されているという表示を受信したとき、圧縮された画像をリモートサーバ３０４へ提供する。リモートサーバ３０４は、それをリモートクライアント３１８へ通信ネットワーク３１４を越えて送信する。リモートクライアント３１８は、圧縮された画像を受信し、およびクライアント３１６に表示装置３２０上で受信した画像を表示するよう指示する。
【００３１】
スライス３１２がすでに圧縮されているという表示は、圧縮されたスライス３１２が存在するメモリ位置へのポインタを含むことができる。この実施形態において、ワークマネージャ３０６は、最初のポインタが画像の開始を指し、最後のポインタが画像の終了を指すように、これらのポインタを順序付けることができる。中間の任意のポインタはそれに応じて順序付けされている。
【００３２】
スライス３１２は、任意の順序で完了することができる。ワークマネージャ３０６は、どんな順序でもこれらのスライス３１２を受信し、実施形態において、圧縮されたスライス３１２の圧縮された出力バッファへのポインタの順序一覧を作る。いったん画像についての全てのスライス３１２が圧縮されると、画像は完全に圧縮されていると見なされる。
【００３３】
実施形態において、ワークマネージャ３０６は、各圧縮されたスライス３１２を検索し、および圧縮された画像（これら圧縮されたスライス３１２から成る）を連続する範囲のメモリ内に格納することができる。
【００３４】
実施形態において、圧縮されたスライス３１２から圧縮された画像の組み立ては、クライアントによって実行される。サーバは、クライアントへ、各圧縮されたスライス３１２を、属する画像はどれかおよび画像内でどこに属するのかの両方の表示とともに送信する。クライアントは、この情報から画像を組み立てる。実施形態において、サーバは別の画像を送信する前に１つの画像を送信してから終了する。情報が、スライス３１２の総数および現在送られるスライス３１２はどのスライス３１２であるのか（合計５つのスライス３１２の２番目、または合計５つのスライス３１２があるとすでに知らされたクライアントへ単に２番目のスライス３１２など）を含むことができるためである。実施形態において、サーバは、クライアントへスライス３１２を、交互に扱われる複数の画像から送信することができる。各スライス３１２のための表示が、属する画像はどれかおよび画像のどの一部か（例えば、画像１５のための合計５つのスライス３１２の２番目）の両方を含むことができるためである。
【００３５】
実施形態において、リモートサーバは同期式である。リモートサーバは、画像をワークマネージャ３０６へディスパッチした後、同期して遮断し、画像が圧縮されるのを待ち、圧縮された画像の出力を受信する。
【００３６】
実施形態において、リモートサーバは非同期である。リモートサーバは、画像をワークマネージャ３０６へディスパッチし、直ちに、受信されたクライアント入力の解析またはワークマネージャ３０６についての圧縮するための第２の画像の生成などのさらなる処理をする。リモートサーバは、後で、非同期の終了通知をワークマネージャ３０６から受諾する。終了通知は、画像がすでに圧縮されているという表示または圧縮された画像自身を含む。
【００３７】
図４は、画像をマルチプロセッサシステム上でリモートセッションを介して送信するために圧縮するための例示的なオペレーション処理を示している。マルチプロセッサシステムは、複数のプロセッシングコアまたは複数の個別のプロセッサを有することができる。実施形態において、画像は、アプリケーションウインドウまたはデスクトップ全体などのリモートセッションフレームを含む。デスクトップ全体は、アプリケーションウインドウを含むことができる。実施形態において、画像はビットマップを含む。実施形態において、画像は幅を有し、各タイル表示の幅は画像の幅に等しい。
【００３８】
オペレーション４０２は、画像を複数のスライスに分けることを表わしている。実施形態において、画像は長方形であり、各スライスも同様に長方形であって、画像と同じ横寸法（すなわち幅）を有する。
【００３９】
オペレーション４０４は、少なくとも２つのプロセッサの各々について、プロセッサごとにスレッドを関連付けることを表わしている。ワークマネージャは、各プロセッサについてスレッドを保持し、画像の圧縮に利用する。
【００４０】
オペレーション４０６は、各スライスを関連するスレッドに割り当てることを表わしている。ワークマネージャは、多様な技術を使用して利用可能なプロセッサリソースを最大にする。例えば、実施形態において、スライスを関連するスレッドに割り当てることは、スライスを利用されていない処理リソースを有するプロセッサに対応している関連するスレッドに割り当てることを含む。
【００４１】
オペレーション４０８は、各スライスについて、スライスがすでに処理されたという表示を受信することを表わしている。実施形態において、スライスがすでに処理されたという表示は、対応する圧縮された出力バッファへのポインタを含む。
【００４２】
オペレーション４１０は、スライスを第２の画像に組み立てることを表わしてる。第２の画像は、圧縮されている画像に対応している。
【００４３】
オペレーション４１２は、第２の画像をクライアントにリモートセッションプロトコルに従って送信することを表わしている。実施形態において、リモートセッションプロトコルは、ＲＤＰ（Remote Desktop Protocol）を含む。実施形態において、画像はリモートセッションスタックから受信され、およびリモートセッションスタックは画像を提供すると同期的に遮断する。オペレーション４１２は、リモートセッションスタックに画像がすでに圧縮されたという表示を送信することを含む。
【００４４】
（結論）
本開示は種々の図面にて示すように推奨の態様に関連して記載されてきたが、他の類似の態様が使用されることも可能であり、本開示の同じ機能を実行するために本開示から逸脱することなく、記載された態様に修正や追加がなされることが可能であることを理解されたい。それゆえ、本開示は、いずれか１つの態様に限定されるべきでなく、添付された特許請求の範囲に従った広さや範囲において解釈されるべきである。例えば、本明細書において記載される種々の処理は、ハードウェアまたはソフトウェア、または両方の組み合わせを用いて実装されうる。ゆえに、開示する実施形態の方法および装置、またはある態様またはそれらの一部は、有形媒体で実施されるプログラムコード（すなわち命令）の形を取ることができる。有形媒体は、フロッピーディスク、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他のマシン可読記録媒体などである。プログラムコードがコンピュータなどのマシンによって読み込まれ実行されるとき、マシンは開示される実施形態を実行するために構成される装置となる。本明細書で明確に説明される特定の実施に加えて、他の態様および実施は当業者にとってここで開示される明細書の考察から明らかにされるであろう。明細書および示されている実施形態は、例としてのみ見なされることを意図している。
【図１】
0005788865.tif 000002
【図２】
0005788865.tif 000003
【図３】
0005788865.tif 000004
【図４】
0005788865.tif 000005