(57)【要約】リソースが制約された装置から実行負荷をオフロードして該装置がリソース集約的なソフトウェアプログラムを実行できるようにする方法。該方法は、第１の装置を使用してプログラムにアクセスし、プログラムの実行により第１の装置のリソースを超過することになるか否かを判定する、という各ステップを含む。実行により第１の装置のリソースを超過することになる場合、プログラムの負荷分割が決定され、プログラムが第１の部分及び第２の部分に分割される。プログラムの第１の部分を第１の装置に残し、プログラムの第２の部分は第２の装置にオフロードされる。第１の部分及び第２の部分は第１の装置と第２の装置の間のネットワーク接続を介して通信する。完全なプログラム機能が第１の装置を使用して提供され、機能は、第１の部分及び第２の部分がそれぞれ第１の装置及び第２の装置上で協働して実行されることによって提供される。
2006502457.tif 000002
【特許請求の範囲】
【請求項１】
リソースが制約された装置から実行負荷をオフロードして該装置がリソース集約的なソフトウェアプログラムを実行しを可能にする方法であって、
第１の装置を使用してプログラムにアクセスし、
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定し、
前記プログラムの負荷分割を決定して該プログラムを第１の部分及び第２の部分に分割し、
該プログラムの前記第２の部分を第２の装置にオフロードすると共に、該プログラムの前記第１の部分を前記第１の装置に保持し、
前記第１の装置を使用して前記プログラムの機能を提供し、該機能が、前記第１の部分及び前記第２の部分がそれぞれ前記第１の装置及び前記第２の装置上で協働して実行されることによって提供される、
という各ステップを含む方法。
【請求項２】
実行により前記第１の装置の前記リソースを超過するまで該第１の装置を使用して前記ソフトウェアプログラムを実行するステップ含む、請求項１に記載の方法。
【請求項３】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かをリソースモニタを使用して判定するステップを含む、請求項１に記載の方法。
【請求項４】
前記リソースモニタが前記第１の装置上で実行されるソフトウェアルーチンである、請求項３に記載の方法。
【請求項５】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するために実行キューの長さが所定の長さを越えるか否かを判定するステップを含む、請求項１に記載の方法。
【請求項６】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するためにプログラムのヒープサイズが所定のサイズを越えるか否かを判定するステップを含む、請求項１に記載の方法。
【請求項７】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するために前記プログラムが消費するメモリ量が所定量を越えるか否かを判定するステップを含む、請求項１に記載の方法。
【請求項８】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムのメモリリソースのオフロードを含む、請求項１に記載の方法。
【請求項９】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムの実行のオフロードを含む、請求項１に記載の方法。
【請求項１０】
前記プログラムがJavaプログラミング言語に準拠する、請求項１に記載の方法。
【請求項１１】
第１の装置及び第２の装置という各コンピュータシステムにより実行された際に、該第１の装置から実行負荷をオフロードして該第１の装置がリソース集約的なソフトウェアプログラムを実行することを可能にする方法を前記装置に実施させる、コンピュータ可読コードを有するコンピュータ可読媒体であって、前記方法が、
前記第１の装置を使用してプログラムにアクセスし、
該プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定し、
前記プログラムの負荷分割を決定して該プログラムを第１の部分及び第２の部分に分割し、
前記プログラムの前記第２の部分を第２の装置にオフロードすると共に該プログラムの前記第１の部分を前記第１の装置に保持し、
前記第１の装置を使用して前記プログラムの機能を提供し、該機能が、前記第１の部分及び前記第２の部分がそれぞれ前記第１の装置及び前記第２の装置上で協働して実行されることにより提供される、
という各ステップを含むものである、コンピュータ可読媒体。
【請求項１２】
実行により前記第１の装置の前記リソースを超過するまで該第１の装置を使用して前記ソフトウェアプログラムを実行するステップを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かをリソースモニタを使用して判定するステップを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
前記リソースモニタが前記第１の装置上で実行されるソフトウェアルーチンである、請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するためにランタイム実行キューの長さが所定の長さを越えるか否かを判定するステップを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１６】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するためにプログラムのヒープサイズが所定のサイズを越えるか否かを判定するステップを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１７】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するために前記プログラムが消費するメモリ量が所定量を越えるか否かを判定するステップを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１８】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムのメモリリソースのオフロードを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項１９】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムの実行のオフロードを含む、請求項１１に記載のコンピュータ可読媒体。
【請求項２０】
前記プログラムがJavaプログラミング言語に準拠するものである、請求項１１に記載のコンピュータ可読媒体。
【請求項２１】
リソースが制約された装置から実行負荷をオフロードするシステムであって、
第１の装置のための第１のコンピュータシステムと、
第２の装置のための第２のコンピュータシステムと、
を備え、前記第１の装置及び前記第２の装置の各コンピュータシステムが、前記第１の装置から実行負荷をオフロードして前記第１の装置がリソース集約的なソフトウェアプログラムを実行することを可能にする方法を前記装置に実施させるコンピュータ可読コードを実行し、前記方法が、
第１の装置を使用してプログラムにアクセスし、
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定し、
前記プログラムの負荷分割を決定して、前記プログラムを第１の部分及び第２の部分に分割し、
前記プログラムの前記第２の部分を第２の装置にオフロードすると共に前記プログラムの前記第１の部分を前記第１の装置に保持し、この場合に前記第１の部分及び前記第２の部分が前記第１の装置と前記第２の装置の間でネットワーク接続を介して通信し、
前記第１の装置を使用して前記プログラムの機能を提供し、該機能が、前記第１の部分及び前記第２の部分がそれぞれ前記第１の装置及び前記第２の装置上で協働して実行されることにより提供される、
という各ステップを含む、システム。
【請求項２２】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するためにランタイム実行キューの長さが所定の長さを越えるか否かを判定することを更に含む、請求項２１に記載のシステム。
【請求項２３】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するためにプログラムのヒープサイズが所定のサイズを越えるか否かを判定することを更に含む、請求項２１に記載のシステム。
【請求項２４】
前記プログラムの実行により前記第１の装置のリソースを超過することになるか否かを判定するために前記プログラムが消費するメモリ量が所定量を越えるか否かを判定することを更に含む、請求項２１に記載のシステム。
【請求項２５】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムのメモリリソースのオフロードを含む、請求項２１に記載のシステム。
【請求項２６】
前記プログラムの前記第２の部分をオフロードする前記ステップが、前記第２の装置への前記プログラムの実行のオフロードを含む、請求項２１に記載のシステム。
【請求項２７】
前記プログラムの負荷分割の決定に負荷分割器が使用され、該負荷分割器が、リソース利用情報及び実行負荷情報を使用して前記負荷分割を決定するよう構成される、請求項２１に記載のシステム。
【請求項２８】
協働的な実行の最中に前記第１の部分が前記第２の部分を参照するようにオフローダを使用して前記プログラムの前記第２の部分をオフロードする、請求項２１に記載のシステム。
【請求項２９】
前記オフロードの実行及び前記プログラム機能の提供が、前記第１の装置のユーザに対してトランスペアレントに行われる、請求項２１に記載のシステム。
【請求項３０】
前記オフロードの実行及び前記プログラム機能の提供が、前記第１の装置のユーザに対する指示で生じる、請求項２１に記載のシステム。
【請求項３１】
前記プログラムの実行により前記第１の装置のリソースが超過することになるか否かの判定に前記プログラムのコードセグメントサイズが使用される、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にディジタルコンピュータシステムでのデータ処理、及びクライアント装置を使用することによる情報へのアクセス及びソフトウェアサービスの取得に関し、特に、装置のリソース上の制約、及びネットワーク接続された様々な電子装置間の多様性を軽減させることを目的としてコンピュータシステムのリソースを共有するための方法及びシステムに関する。
【背景技術】
【０００２】
電子商取引及び情報検索のためのインターネットの使用は、今日の近代的な世界で急速に普及してきた。何百万ものユーザが常にワールドワイドウェブを介して情報、ニュース、エンターテイメント等を得るために何百ものインターネットサイト及びウェブポータルにアクセスしている。ビジネス及び商取引の多くの局面で、連絡及び調整のためにインターネットが利用されている。更に、毎日の生活の多くの局面が電子的な情報を基にしたものになってきており、多種多様な電子装置の使用を介してかかる電子情報のアクセス、制御、及び利用を行うことはそう遠いことではない。例えば、デスクトップコンピュータにより、バンキング機能（例えば、小切手発行、支払い等）、ショッピング（例えば、食料雑貨品、洋服等）、天気、及び他のあらゆる個人のニーズに事実上アクセスすることができる。マルチプレーヤネットワークゲーム又はオンラインゲーム等、コンピュータベースのエンターテイメントの人気のある形態は、インターネットの通信機能を使用している。
【０００３】
多くのユーザは、各自の基本的な毎日の生活でのニーズを全て満たすために、インターネット上の何百万ものウェブサイト等、ネットワーク接続された情報リソースへの容易なアクセスにますます頼るようになっている。例えば、ユーザは、各自が必要とするビジネス又は楽しみが何であれ、その実現に役立つインターネット上の目的サイトに精通するようになった。これらインターネット上の目的サイトはますます、モバイル埋込装置（mobile embedded device）を介してアクセスされるようになっている。かかる装置の例として、個人情報端末（ＰＤＡ）、携帯電話、時計、埋込マイクロコントローラ等が挙げられる。インターネットにアクセスして有用なタスクを実行することのできる装置が次第に普及するにつれて、ユーザの志向は、装置の特定の機能に対して低くなり、かかる装置及びそれに関連するコンピュータインフラ（例えばネットワーク接続された装置）を介して提供されるパーベイシブサービス（pervasive service）の有用性に対して高くなる。モバイル埋込装置（例えば、パームトップコンピュータ、セルラー電話等の個人情報装置）により、情報へのアクセスが常にすぐ手の届くものになっている。
【０００４】
今日使用されているモバイル埋込装置は、計算能力を提供するが、デスクトップ又はサーバと比較してリソース上の制約が多い中で動作するものである。デスクトップコンピュータシステムは多くの場合、１GHz以上のクロック周波数で動作するマイクロプロセッサを使用し、256MB以上のRAMが装備されるが、典型的なハンドヘルドコンピュータ装置は、かかる能力のほんの一部しか有していない。かかるリソース上の制約の結果として、モバイル埋込装置は、実行することのできるソフトウェアプログラムの複雑性及び提供することのできる機能の豊富さが大幅に限定されたものとなる。
【０００５】
モバイル埋込装置はまた、典型的なデスクトップ又はサーバコンピュータシステムと比較して、ローカルの永続性記憶装置が少ないという傾向を有する。適度な大きさの記憶装置が存在しないということは、大部分のモバイル埋込装置が、例えば永続性記憶装置（例えばハードディスクドライブ）に一時的にデータを配置するといった従来技術によってリソース上の制約を克服することができないことを意味している。
【０００６】
更なる問題は、モバイル埋込装置が、例えばデスクトップコンピュータシステムと比較して、遥かに広範なシステム製造業者から提供されていることである。モバイル埋込装置が普及するにつれ、製造業者数ひいては市場で入手可能な異なるシステムアーキテクチャの数が増大する。その結果として、様々な装置のアーキテクチャが大きく相違することになる。この相違により、所望の機能を提供する装置の組み合わせに適したソフトウェアを構築することが次第に困難になっていく。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
よって、必要なのは、モバイル埋込装置のリソースの制約を補償する方策である。必要なのは、モバイル埋込装置に適度な大きさのローカル永続性記憶装置が存在しないことを補償する方策である。該必要とされる方策は、モバイル埋込装置のコンピュータシステムリソースが限られているにも関わらず該モバイル埋込装置が一層大きくて一層リソースを集約的なソフトウェアアプリケーションを実行することを可能にするものであるべきである。更に必要なのは、市場に存在する様々な異なるモバイル埋込装置の異なるアーキテクチャの大きな相違をサポートする方策である。本発明は、これら要求に対して新規の方策を提供するものである。
【課題を解決するための手段】
【０００８】
本発明は、ネットワーク接続されたリソース上の制約を有する装置のために実行及びリソースをオフロードする方法及びシステムである。本発明は、モバイル埋込装置のリソースの制約を補償する方策を提供する。本発明は、モバイル埋込装置に適度な大きさのローカル永続性記憶装置が存在しないことを補償する方策を提供する。本発明は、モバイル埋込装置が、装置のコンピュータシステムリソースが限られているにも関わらず一層大きくて一層リソース集約的なソフトウェアアプリケーションを実行することを可能にする。更に、本発明は、市場に存在する様々な異なるモバイル埋込装置の異なるアーキテクチャの大きな相違をサポートする方策を提供する。
【０００９】
一実施形態において、本発明は、ネットワーク接続された装置に関連して実施され、この場合、リソース上の制約を有する装置がリソース集約的なソフトウェアプログラムを実行することを可能にするために、リソース集約的なソフトウェアプログラムは、その実行負荷及び／又はリソース要件の一部を、リソース上の制約を有する装置から別の装置（例えばホスト装置）へとオフロードさせる。リソース上の制約を有する装置は典型的には、携帯用ハンドヘルド装置（例えば、ＰＤＡ、セルラー電話等の埋込装置）である。
【００１０】
本方法は、第１の装置（例えばリソース上の制約を有する装置）を使用してプログラムにアクセスし、該プログラムの実行に第１の装置のリソースよりも多くのリソースが必要であるか否かを判定する、という各ステップを含む。該プログラムの実行に第１の装置のリソースよりも多くのリソースが必要である場合には、該プログラムに関する負荷分割を決定して、該プログラムを第１の部分と第２の部分とに分割する。該プログラムの第２の部分を第２の装置（例えばホスト装置）にオフロードする一方、該プログラムの第１の部分を第１の装置に残す。該第１の部分及び第２の部分は、第１の装置と第２の装置との間のネットワーク接続（例えば無線LANリンク）を介して通信する。完全なプログラム機能は第１の装置を使用して提供され、この場合、該機能は、前記第１の部分及び前記第２の部分がそれぞれ前記第１の装置及び前記第２の装置上で互いに協働して実行されることにより提供される。第１の装置と第２の装置との間でのリソースのオフロード及びそれに続くプログラムの負荷分担は、ユーザに対してトランスペアレント（透過的）な態様で行われる。
【発明を実施するための最良の形態】
【００１１】
本書に組み込み本書の一部をなす図面は、本発明の実施形態を示し、及び以下の解説と併せて本発明の原理を説明する役割を果たすものとなる。
【００１２】
ここで、図面に幾つかの例を示した本発明の実施形態を詳細に参照する。好適な実施形態に関連して本発明を解説するが、本発明をかかる実施形態に限定する意図はないことが理解されよう。本発明は、特許請求の範囲に規定する本発明の思想及び範囲内に包含されうる代替、変更、及び等価物を包含することを意図したものである。更に、以下の本発明の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が述べられる。しかし、本発明はかかる特定の詳細なしでも実行し得ることが当業者には明らかであろう。一方、本発明の態様を不必要に曖昧にしないように、既知の方法、手順、構成要素、及び回路については詳細に説明しなかった。
【００１３】
本発明の実施形態は、ネットワーク接続されたリソース上の制約を有する装置の実行及びリソースをオフロードする方法及びシステムに関するものである。本発明は、モバイル埋込装置のリソース上の制約を補償する方策を提供する。本発明は、モバイル埋込装置に適度な大きさのローカルの永続性記憶装置が存在しないことを補償する方策を提供する。本発明は、モバイル埋込装置が、その装置の限られたコンピュータシステムリソースにも関わらず、一層大きく一層リソース集約的なソフトウェアアプリケーションを実行できるようにする。更に、本発明は、市場に存在する様々な異なるモバイル埋込装置の異なるアーキテクチャの大きな相違をサポートする方策を提供する。本発明の実施形態及びその利点について以下更に述べる。
【００１４】
表記及び名称
以下の詳細な説明の幾つかの部分は、手順、ステップ、論理ブロック、処理、及びコンピュータメモリ内のデータビットについての演算の他の象徴的な表現に関して提示される。これら説明及び表現は、データ処理分野の当業者が自分の作業の実体を他の当業者に最も効果的に伝えるために使用する手段である。手順、コンピュータ実行ステップ、論理ブロック、プロセスなどは、本書において、また一般に、所望の結果に導く自己矛盾のない一連のステップ又は命令であると考えられる。該ステップは、物理量の物理的な操作を必要とするものである。必ずではないが、通常は、かかる量は、格納、転送、結合、比較、また他の場合はコンピュータシステムで処理することが可能な電気信号又は磁気信号という形をとる。折に触れて、これらの信号をビット、値、要素、シンボル、キャラクタ、用語、数などと呼ぶことが、主に慣用の理由で都合がよいことが証明されている。
【００１５】
しかし、これら及び同様の用語は全て、適当な物理量に関連付けられるべきものであり、かかる量に適用される都合のよいラベルにすぎないことを念頭におかれたい。特記しない限り、又は以下の考察から明らかな場合を除き、本発明を介して、「実行」、「受信」、「アクセス」、「編集」、「提供」、「伝送」、「格納」などの用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）な量として表されるデータを、コンピュータシステムのレジスタ、メモリ、又は他のかかる情報記憶装置、伝送装置、又は表示装置（例えば図５のコンピュータシステム512）内の物理的な量として同様に表される他のデータに処理・変換する、コンピュータシステム又は同様の電子計算装置のアクション及びプロセスを指すものであることが理解されよう。
【００１６】
本発明の方法及びシステム
図１は、本発明の一実施形態によるリソース及び実行をオフロードするシステム100の図を示す。図１に示すように、システム100は、第１のリソース上の制約を有する装置（本実施形態では個人情報端末（ＰＤＡ）110）及び第２のより強力なホスト装置（本実施形態ではデスクトップコンピュータシステム（例えばPC又はワークステーション）120）を備える。ＰＤＡ110及びデスクトップコンピュータシステム120は、ネットワークリンク130を介して通信可能に接続される。ＰＤＡ110はまた、ソフトウェアベースのサービスリポジトリ150（例えば、建物のLANやインターネット等に接続された１つ又は２つ以上のサーバ等）からソフトウェアベースのサービス（本実施形態ではリソース集約的なソフトウェアプログラム140）を受信するよう接続される。
【００１７】
引き続きシステム100を参照すると、本実施形態はネットワーク接続された装置に関連して機能し、この場合には、リソースが制約された装置がリソース集約的なソフトウェアプログラムを実行できるようにするために、リソース集約的なソフトウェアプログラムが、その実行負荷及び／又はリソース要件の一部をリソース上の制約を有する装置から別の装置（例えばホスト装置）にオフロードさせる。ＰＤＡ110は、典型的なリソース上の制約を有する装置である。したがって、ＰＤＡ110のプロセッサ能力及びメモリリソースは、デスクトップコンピュータシステム120と比較して、ソフトウェアベースのサービスを実行するには限られたものである。図１に示すリソース上の制約を有する装置は、携帯用ハンドヘルドＰＤＡであるが、リソース上の制約を有する装置110は、複数の異なる種類のリソース上の制約を有する装置（例えば、セル電話、ページャ、腕時計等の埋込装置）とすることが可能であることを理解されたい。同様に、図１に示すホスト装置は、デスクトップコンピュータシステムであるが、ホスト装置120は、複数の異なる種類の一層高性能のディジタルコンピュータシステム装置（例えば大型サーバ等）とすることが可能であることを理解されたい。
【００１８】
システム100の一つの目的は、リソース上の制約を有するＰＤＡ110が、サービスリポジトリ150から受容したリソース集約的なソフトウェアプログラム140を実行すること、及びユーザに完全な機能を提供することを可能にすることである。この目的を達成するために、ＰＤＡ110（例えばリソース上の制約を有する装置）を使用してソフトウェアプログラム140にアクセスし、ソフトウェアプログラム140がまずＰＤＡ110上で実行され、該プログラム140の実行にとってＰＤＡ110がリソース不足であるか否かが判定される。該実行により第１の装置のリソース不足となる場合、該プログラムの負荷分割が決定され、該プログラムが第１の部分及び第２の部分へと分割される。プログラムの第２の部分は、ネットワークリンク130を介してホスト装置120へオフロードされ、一方、プログラム140の第１の部分はＰＤＡ110上に残す。
【００１９】
該第１の部分及び第２の部分は、第１の装置と第２の装置の間でネットワーク接続130（例えば無線LANリンク）を介して通信する。ユーザから見ると、完全なプログラムの機能はＰＤＡ110を使用して提供される。ソフトウェアプログラム140は、ユーザからはＰＤＡ110内で完全に実行されているように見える。リソースのオフロード及びそれに続く負荷分担は、ユーザに対してトランスペアレントな態様で行われる。プログラム140の機能は、ＰＤＡ110及びホスト120上でそれぞれが協働して実行されている第１の部分及び第２の部分によって提供される。
【００２０】
本実施形態はＰＤＡ110とホスト120との間でトランスペアレントな態様で負荷分担を実行するが、本発明の実施形態は、非トランスペアレントな態様で負荷分担を実施するよう構成することが可能であることに留意されたい。例えば、ＧＵＩ確認ダイアログボックスをユーザ（例えばＰＤＡ110の）に提示して、負荷分担動作が開始しようとしていることを示すことが可能である。同様に、ＧＵＩアイコンを表示して負荷分担の状態を示すことが可能である。
【００２１】
図２は、本発明の一実施形態によるシステム200を示している。システム100の場合のように、該システム200もまた、本実施形態では埋込装置210と呼ばれるリソース上の制約を有する装置及びより強力なホスト装置220を示している。埋込装置210及びホスト装置220は通信リンク230を介して互いに接続される。
【００２２】
上述したように、本発明の実施形態は、リソース集約的な大きなソフトウェアプログラムの実行を目的として、埋込装置210がホスト装置220のコンピュータシステムリソースを「利用」することを可能にするリソース及び実行オフロードシステムに向けられたものである。通常であれば埋込装置210のコンピュータシステムリソースではリソース集約的なプログラムを処理しきれない（overwhelm）場合であっても、該埋込装置210がリソース集約的なソフトウェアプログラムの完全な機能を提供することを可能とするために、プログラムの実行及びリソース要件が埋込装置210からホスト装置220にオフロードされる。
【００２３】
本実施形態の負荷分担機能を実現するために、専用の負荷分担ランタイムプラットフォームを使用して、ネットワーク接続されたリソース上の制約を有する装置（例えば埋込装置210）がそのローカルなリソース上の制約（例えば、メモリ、ディスク容量、及び処理能力）を克服するのを助ける。本実施形態では、前記プラットフォームは専用の負荷分担仮想マシン（VM）であるが、他のコード実行構成要素（例えば分散型プラットフォーム等）を使用して負荷分担機能を実施することが可能であることに留意されたい。同様に、図２は埋込装置210及びホスト装置220でそれぞれ使用される第１及び第２のJava互換負荷分担仮想マシン211,221を示しているが、他の種類のプラットフォーム又は仮想マシンを使用することが可能であることも留意されたい。
【００２４】
仮想マシンプラットフォーム211,221は、当業界で周知のようにコードを実行する。更に、仮想マシン211,221は、本実施形態の負荷分担機能を提供するために、特別の機能、すなわち、1）実行監視、2）リソース監視、3）負荷分割、4）オフロードを実行する。
【００２５】
実行監視とは、実行モニタ212,222が、仮想マシン211,221上で実行されることになり又は実行されたソフトウェアプログラムのコードの構造及び実行を追跡するという事実を指す。実行監視は、実行機能間の対話の数、並びにソフトウェアプログラム内の他のコード及びデータへの参照の数を監視することを含む。これを行う際に、実行モニタ212,222は、実行の局所性及び各実行部分の参照に関する情報を収集する。
【００２６】
リソース監視とは、リソースモニタ213,223がシステムリソースの現在及び過去の使用量を測定して、ソフトウェアプログラムがシステム及び環境において実行されることにより現在制約のあるリソースが受ける負荷を求めるという事実を指す。
【００２７】
負荷分割とは、上記２種類の情報（実行監視及びリソース監視により提供される情報）を使用して、負荷分割エンジン215,225が、特定のポリシーを介して２種類の分割のうちの一方が可能であるか該２種類の分割の組み合わせが可能であるかを判定するという事実を指す。第１の種類の分割は、装置から比較的独立しており又は十分に利用されていない記憶リソースを埋込装置210からネットワークリンク230を介してホスト装置220へと移動することを含む。第２の種類の分割は、比較的独立したコードセグメント（例えばソフトウェアプログラムの構成要素）を埋込装置210からネットワーク230を介してホスト装置220へと移すことを含む。
【００２８】
最後に、オフローダ214,224は、負荷分割器215,225ならびにリソースモニタ213,223により提供される情報を使用することによって、及び現在のリソース消費量が与えられた場合に、ソフトウェアプログラムを分割する様式の変更を考慮すべきとき、及び実行処理又はリソースをオフロードするのに最適な場所、を決定することによって、機能する。ユーザのプリファレンス（すなわち嗜好）を負荷分割の決定に用いることも可能であり、例えば、装置のＧＵＩ又はプログラムヒントを介してユーザにプリファレンスダイアログボックスを提示することにより、これを行うことが可能である。
【００２９】
負荷分担及び負荷分割は両方向に進めることができることを理解されたい。例えば、負荷分割が埋込装置210からホスト装置220に行われた際に、再平衡化（re-balancing）を実施して、負荷を元の埋込装置に転送することが可能である。再平衡化は、例えばソフトウェアプログラムの実行負荷の低下や（例えば他のプロセスによる）ホスト装置220の過負荷といった幾つかの理由で行うことができる。
【００３０】
図３は、本発明の一実施形態による負荷分割及び負荷分担操作を示す図である。図３に示すように、ホスト装置220の実行環境が左側に示され、埋込装置210の実行環境が右側に示されている。図３の最も右端に、データアイテム、実行ユニット、及び依存性の表現に使用されるシンボルを示す説明的なキャプションが示されている。
【００３１】
本実施形態では、動作中、ソフトウェアプログラムのコードは、埋込装置210のリソースモニタ213によりコードの実行が装置210で利用可能なリソースを上回り始めたことが示されるまでは通常通り実行される。プログラムは、幾つかの理由により装置210のリソースを上回る可能性がある。これは例えば、プログラムコードサイズの増大、プログラムヒープの増大、実行時の実行キューの長さが長いままであって高レベルのプリエンプションが必要であること、又は他のプロセッサ負荷の尺度に起因して発生し得る。負荷分割は、装置210の電力消費を制御するためにも実施される場合がある。例えば、ソフトウェアプログラムにより過度の電力消費が生じる（例えば計算集約的なもの）場合、負荷分割を開始して特定のコードセグメントを装置210からホスト装置220に移すことができる。したがって、一般に、本発明の実施形態は、負荷分割機能を実行して、様々な尺度（例えば、パフォーマンス、電力消費、フットプリント等）に従ってコードセグメントを有利にオフロードするものとなる。
【００３２】
リソースモニタ213は続けて、アプリケーションに適した分割を考えるように負荷分割器215に要求する。通常、これは、リソースのみのオフロード（例えば「プログラムデータがホストにプッシュされる」タイプのオフロード）、実行オフロード（例えばプログラムコードセグメントがホストにプッシュされる）、又は（最も可能性の高い）これら２つの組み合わせ（何れか一方を移動させると実行及びメモリアクセスの両方のコストが変わるため）の何れかとなる。例えば、線315は、埋込装置210からネットワーク230を介してホスト装置220にオフロードされているソフトウェアプログラムの一部301aを示し、これはホスト装置220において部分301bとして実行される。
【００３３】
本実施形態では、上述したように、埋込装置210の負荷分割器215は、リソースモニタ213及び実行モニタ212からの情報を使用してどの分割タイプを使用するかを決定する。ソフトウェアプログラムのオフロード部分が決定されると、リソースモニタ213はオフローダ214を呼び出して、そのホストにおける相手方であるオフローダ224と協働してプログラムのJava VM 211の知識を、参照されるデータと共にホストJava VM221に移す。これより、ソフトウェアプログラムの残りの部分の実行では、ネットワーク230を介してトランスペアレントにソフトウェアプログラムのオフロード部分（例えば、リソース、実行等）が参照され、リソースに対する重圧が埋込装置210から軽減される。
【００３４】
本発明の他の実施形態によれば、このオフロードは、多段環境にわたって再帰的に行うことができることに留意されたい。例えば、埋込装置からホスト装置への単一レベルのオフロード（例えば図２及び図３に示す２段様式の場合）に加えて、複数レベルのオフロードを実施することが可能であり、この場合、例えば、オフロードは、埋込装置から第１のホストへ、次いで該第１のホストから第２、第３、又は他のホストへと行われる。多段構成に加えて又は多段構成に代えて、複数のホストをピアタイプ構成で同時に使用することも可能である。
【００３５】
更に、各Java VMは、リソースを共有する複数のソフトウェアアプリケーションを実行することも可能であることに留意されたい。このように複数のソフトウェアアプリケーションを実行すると、埋込装置210及びホスト220の負荷が増大し、及び考え得るオフロードの組み合わせが増える。例えば、計算集約的なアプリケーションを殆どリモートにプッシュする一方で、対話式アプリケーション（例えば、応答性が高くて待ち時間の短いユーザからの入出力を必要とするもの）を殆どローカルに保持することが可能である。
【００３６】
同様に、本発明の実施形態は、ユーザに提示される応答性及び／又はパフォーマンスを向上させるために、はるかに強力なホスト装置コンピュータシステムプラットフォームを使用するよう構成することも可能である。例えば、要求の厳しいソフトウェアプログラムを実行するにあたり、埋込装置210のリソースモニタ213は、そのプログラムの計算集約的な部分がはるかに強力なホスト装置220にオフロードされれば該プログラムが「より良好に」実行されると判定することができる。かかるオフロードは、埋込装置210がソフトウェアプログラムをそれ自体ローカルに実行するに足る計算リソースを備えている場合であっても埋込装置210によって実施可能である。
【００３７】
したがって、本発明の実施形態は複数の利点を提供する。例えば、本発明の負荷分割機能によりコード、データ、及び実行を何れもリソース上の制約を有する装置からオフロードすることができ、これにより該装置により実行することが可能なプログラムの数（及びかかるプログラムのルックアンドフィール）が向上する。本発明の実施形態は、良好な実行及びメモリ局所性クラスタを呈するサービス（例えば複数の互いに独立しかつ内部的に緊密に結合した実行パターンを含むもの）のトランスペアレントなオフロードを可能にする。本発明の実施形態では、パフォーマンスを維持するためにリソース及び実行の配置を動的に考慮することができる。更に、本発明のリソースモニタ及び機能は、何らかの固定の柔軟性に欠けるアルゴリズムに従って盲目的に遠隔リソースを使用するのではなく、遠隔リソースを使用するコスト（例えば、ネットワーク帯域幅、フットプリント等）を考慮するものである。
【００３８】
図４を参照して、本発明の一実施形態によるプロセス400のステップのフローチャートを示す。図４に示すように、プロセス400は、本発明の一実施形態によるリソース監視及び負荷分割方法に含まれる各ステップを示している。
【００３９】
プロセスはステップ401で始まり、リソース上の制約を有する装置が実行のためにリソース集約的なソフトウェアプログラムにアクセスする。上述したように、本発明による代表的なリソース上の制約を有する装置としては、セル電話、ＰＤＡ、腕時計、ページャ等を挙げることができる。代表的なリソース集約的なソフトウェアプログラムとしては、例えば、ビデオアプリケーション、カレンダ及び／又はスケジューリングアプリケーション等を挙げることができる。
【００４０】
ステップ402で、ソフトウェアプログラムの実行が埋込装置上で開始される。該ソフトウェアプログラムには、例えば、大学内のLAN又は企業内のLANを介してアクセスすることができる。埋込装置は通常、ソフトウェアプログラムの実行をローカルで開始する。代替的に、ソフトウェアアプリケーションのタイプが既知である場合には、プロセス400は、随意選択的に直接ステップ406に飛び、ソフトウェアプログラムの分割を決定することが可能であり、又は随意選択的にステップ407に飛び、分割を直接実施することが可能である（ソフトウェアプログラムについての事前知識により分割の性質が予め決定されている場合）ことに留意されたい。
【００４１】
ステップ403で、ソフトウェアプログラムの実行が開始されると、埋込装置はその実行によりローカルリソースを超過することになるか否かを判定する。上述したように、埋込装置のローカルリソースは監視されている。プログラムがローカルリソースを超過しないように見える場合にはプロセス400はステップ404に進む。プログラムがローカルリソースを超過することになるように見える場合にはプロセス400はステップ406に進む。
【００４２】
ステップ404で、ソフトウェアプログラムの実行により埋込装置のリソースを超過しないかもしれない場合であっても、埋込装置がより性能の高いホスト装置を使用して、実行がより応答性の高いものになるか、又は他の尺度に関して高いパフォーマンスを有することになるか否かを判定する。そうなる場合、プロセス400はステップ406に進む。他の場合には、ソフトウェアプログラムの実行は、ステップ405に示すように、埋込装置のリソースを使用してローカルで続行される。
【００４３】
引き続き図４を参照すると、ステップ406で、リソース集約的なソフトウェアプログラムの実行により埋込装置のリソースを超過することになる場合、又はソフトウェアプログラムの実行がホスト装置を呼び出すことによってより応答性の高いものになる（又は他の尺度に関して高いパフォーマンスを有することになる）場合、ソフトウェアプログラムの負荷分割が決定される。
【００４４】
ステップ407で、負荷分割によって決定されたソフトウェアプログラムの部分が埋込装置からホスト装置にオフロードされる。既述のように、この部分は埋込装置からネットワーク通信リンクを介してホスト装置に転送される。代替的には、既述のように、全体的な負荷により示されるようにソフトウェアプログラムの一部をホスト装置から元の埋込装置に転送して戻すことが可能である（例えば再平衡化）。
【００４５】
ステップ408で、ソフトウェアプログラムが協働的に実行され、その一部は埋込装置上で実行され、別の部分はホスト装置上で実行される。ソフトウェアプログラムの両方の部分の協働的な実行は、ユーザ及びソフトウェアプログラムに対してトランスペアレントに行われる。しかし、既述のように、代替的に、協働的実行は非トランスペアレントに（例えば確認ボックス等）実施することが可能である。
【００４６】
本実施形態では、プロセス400の負荷分割及び協働的な実行は動的に続行され、この場合、協働的な実行及び各リソースの利用が追跡される。これにより、状況的に必要になった際に調整を実施することが可能となる。これは、プロセス400がステップ405,408の後にステップ403に戻ることで示される。
【００４７】
このように、本発明は、ネットワーク接続されたリソース上の制約を有する装置の実行及びリソースをオフロードする方法及びシステムを提供する。本発明は、モバイル埋込装置のリソース制約を補償する方策を提供する。本発明は、モバイル埋込装置に何れの大容量ローカル永続性記憶装置もないことを補償する方策を提供する。本発明は、モバイル埋込装置が、装置の限られたコンピュータシステムリソースにも関わらず、より大きくよりリソース集約的なソフトウェアアプリケーションを実行できるようにする。更に、仮想マシン構造を使用することによって、本発明の実施形態は、市場に存在する様々な異なるモバイル埋込装置の異なる構造の高い多様性に対応した方策を提供する。
【００４８】
コンピュータシステム環境
図５を参照してコンピュータシステム512を示す。本発明の解説では、一実施形態で、システム512のコンピュータ可読メモリユニット内に常駐し、システム512のプロセッサによって実行される一連の命令（例えば、ソフトウェアプログラム）として実現される特定のプロセス及びステップが考察される。命令は、実行されると、特定のアクションを実行させ、コンピュータシステム512に上記で詳述した特定のアクションを実行させる。
【００４９】
本発明の特定の態様は、埋込装置、デスクトップ装置、サーバ装置等として機能することのできるプログラムコンピュータシステム内で動作可能である。本発明の要素を実施するように動作可能なかかるコンピュータシステムの一般化した例を図５に示す。一般に、本発明のコンピュータシステムは、情報をやりとりするためのアドレス／データバス500,バス500に接続され情報及び命令を処理する１つ又は２つ以上の中央演算処理装置501,バス500に接続され中央演算処理装置501のために情報及び命令を格納するコンピュータ可読揮発性メモリユニット502（例えば、ランダムアクセスメモリ、スタティックRAM、ダイナミックRAM等）、バス500に接続され演算処理装置501のために静的な情報及び命令を格納するコンピュータ可読不揮発性メモリユニット503（例えば、読み取り専用メモリ、プログラマブルROM、フラッシュメモリ、EPROM、EEPROM等）を備える。システム512は、随意選択的に、磁気又は光学のディスク及びディスクドライブ等、バス500に接続され情報及び命令を格納する大記憶容量コンピュータ可読データ記憶装置504を備えることができる。随意選択的に、システム512は、バス500に接続されコンピュータユーザに情報を表示する表示装置505、英数字キー及び機能キーを含みバス500に接続され情報及びコマンド選択を中央演算処理装置501に伝達する英数字入力装置506、バス500に接続されユーザ入力情報及びコマンド選択を中央演算処理装置501に伝達するカーソル制御装置507、及びバス500に接続され演算処理装置501との間でメッセージ、コマンド選択、データ等を伝達する信号入力／出力装置508も備えることができる。
【００５０】
本発明の特定の実施形態についての上記説明は、例示及び説明を目的として提示されたものである。上記説明は、網羅的であったり、又は本発明を開示された厳密な形態に限定する意図はなく、明らかに、上記教示を鑑みて多くの変更及び変形が可能である。実施形態は本発明の原理及びその実際の適用について最良の説明を提供するために選択され説明されたものであり、それによって当業者は、意図する特定の用途に適した各種実施形態で、又は各種変更を行って本発明を最良に利用することができる。本発明の範囲は特許請求の範囲及びその等価物によって規定されることを意図する。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施形態によるリソース及び実行をオフロードするシステムの図を示している。
【図２】本発明の一実施形態によるシステムの図を示している。
【図３】本発明の一実施形態による負荷分割動作及び負荷分担動作を表す図を示している。
【図４】本発明の一実施形態によるプロセスの各ステップのフローチャートを示している。
【図５】本発明の一実施形態によるコンピュータシステムプラットフォームを示している。
【符号の説明】
【００５２】
210        埋込装置
211,221    Java仮想マシン
212,222    実行モニタ
213,223    リソースモニタ
214,224    オフローダ
215,225    負荷分割器
220        ホスト装置
230        ネットワーク通信リンク
【図１】
2006502457.tif 000003
【図２】
2006502457.tif 000004
【図３】
2006502457.tif 000005
【図４】
2006502457.tif 000006
【図５】
2006502457.tif 000007
【国際調査報告】
2006502457.tif 000008
2006502457.tif 000009
2006502457.tif 000010