(57)【要約】【課題】バーチャルマシンにおける継続−受け渡しの方法及び機器。【解決手段】バーチャルマシン（ＶＭ）における継続受け渡しの方法及び機器。無線装置における継続受け渡しを提供するバーチャルマシンを操作する方法が提供される。バーチャルマシンはスタックメモリを備える。本方法は、コンテクスト−生成トリガーに出会うことと、前記トリガーに応じて前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを構築することと、評価インストラクションに出会うことと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、を備える。【選択図】      図４
2007505395.tif 000002
【特許請求の範囲】
【請求項１】
スタックメモリを備え、無線装置における継続受け渡しを提供する、バーチャルマシンを操作する方法であって、
コンテクスト−生成トリガーに出会うことと、
前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築することと、
評価インストラクションに出会うことと、
前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、
を備える方法。
【請求項２】
前記コンテクスト−生成トリガーは選択されたプログラムインストラクションを備える、前記請求項１記載の方法。
【請求項３】
前記コンテクスト−生成トリガーは、プログラムインストラクションに関連したプログラムマーカを備える、前記請求項１記載の方法。
【請求項４】
メモリ中に前記継続ブロックを保存することを、更に備える前記請求項１記載の方法。
【請求項５】
前記継続を評価するために選択されたプログラムコードにジャンプすることを、更に備える前記請求項１記載の方法。
【請求項６】
組み込み型プロセッサを有する無線装置において使用のバーチャルマシーンであって、
情報を保存し検索するロジックを備えるスタックメモリと、
コンテクスト−生成トリガーに出会うロジックと、
前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するロジックと、
評価インストラクションに出会うロジックと、
前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、
を備えるバーチャルマシーン。
【請求項７】
前記コンテクスト−生成トリガーはコンテクスト評価インストラクションを備える、前記請求項６記載のバーチャルマシーン。
【請求項８】
前記コンテクスト−生成トリガーは、プログラムインストラクションに関連したプログラムマーカーを備える、前記請求項６記載のバーチャルマシーン。
【請求項９】
メモリ中に前記継続ブロックを保存するロジックを、更に備える前記請求項６記載のバーチャルマシーン。
【請求項１０】
前記継続を評価するために選択されたプログラムコードにジャンプするロジックを、更に備える前記請求項６記載のバーチャルマシーン。
【請求項１１】
バーチャルマシーン（ＶＭ）がスタックメモリを備えており、処理ロジックにより実行される時に継続受け渡しを実行する前記ＶＭを提供するプログラムインストラクションを備えるコンピュータ可読媒体であって、
コンテクスト−生成トリガーに出会うためのプログラムインストラクションと、
前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するためのプログラムインストラクションと、
評価インストラクションに出会うためのプログラムインストラクションと、
前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するためのプログラムインストラクションと、
を備えるコンピュータ可読媒体。
【請求項１２】
組み込み型プロセッサを有する無線装置において使用のバーチャルマシーンであって、
スタックメモリを提供するための手段と、
コンテクスト−生成トリガーに出会うための手段と、
前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するための手段と、
評価インストラクションに出会うための手段と、
前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するための手段と、
を備えるバーチャルマシーン。
【請求項１３】
メモリ中に前記継続ブロックを保存するための手段を、更に備える前記請求項１２記載のバーチャルマシーン。
【請求項１４】
前記継続を評価するために選択されたプログラムコードにジャンプするための手段を、更に備える前記請求項１２記載のバーチャルマシーン。
【請求項１５】
組み込み型プロセッサを有する無線装置であって、
情報を保存し検索するロジックを備えるスタックメモリと、継続受け渡しを実行するように動作するバーチャルマシーンと、を備え、
前記バーチャルマシーンは、コンテクスト−生成トリガーに出会うロジックと、前記スタックメモリから生じるスタックフラグメントを備える継続ブロックを前記トリガーに応じて構築するロジックと、評価インストラクションに出会うロジックと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、を備える、
無線装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータ処理システム関し、特に、効率的なプログラムフロー及びメモリリソース利用を提供するバーチャルマシーン(a virtual machine)における継続受け渡し(continuation passing)を提供するための方法及び機器(methods and apparatus)に関係する。
【背景技術】
【０００２】
技術における発達は、結果として、より小型でよりパワーフルな無線装置(wireless devices)をもたらしている。例えば、小さくて、軽く、容易にユーザーによって持ち運ばれる、多種多様な、携帯無線電話(portable wireless telephone)、携帯情報端末(personal digital assistants)（ＰＤＡｓ）、ページングデバイス(paging devices)が現在存在する。典型的には、これらの装置は、限られたメモリリソースを備えた組み込み型コントローラを含む。例えば、利用可能なメモリーの量は装置の小さなサイズによって制限される。
【０００３】
無線装置はより広く行き渡るにつれ、これらの装置がより多くの量のデータを扱い、もっと高機能のプログラムを実行することの要求が増加している。例えば、ユーザーは、ゲームプログラムのような対話型プログラムへの遠隔アクセスを求めており、このようなプログラムは、無線ネットワークを使用し遠隔サービスプロバイダーとの速くて効率のよい通信を提供できる無線装置を必要とする。更に、ユーザーは、もっと大きなホームシステム上又はオフィスシステム上で典型的にアクセス可能な特定のプログラムへの遠隔アクセスを持つことを望んでいる。
【０００４】
これらの要求に応じるためには、装置及びサービスの提供者は、彼ら自身の技術を開発するか又は既存の技術を利用することに努めるかを選択しなければならない。残念ながら、新技術を開発することは時間も費やし且つ高価でもあり、従って、魅力のない選択肢である。既存技術、例えばソフトウェアなど、を利用するためには、互換性問題(compatibility problems)が克服されなければならない。例えば、１つの処理システム用に開発されたソフトウェアは、別の処理システムと互換性がないかもしれない。このように、互換性問題は、無線装置上で走らせるために１以上のシステムからソフトウェアを移植する時には、対処される必要がある。
【０００５】
互換性問題を克服するために使用される１つの技術は、バーチャルマシーン（ＶＭ）の使用を伴う。典型的なＶＭは、ホストシステム上で実行し、いくつかの他のシステム（即ち、遠隔システム）用に書かれた非−ネイティブ(non-native)プログラムインストラクションをホストシステムが実行することを可能とするソフトウェアを備える。例えば、遠隔システム上で実行するように書かれた非−ネイティブプログラムインストラクションは、ホストシステムで走るＶＭソフトウェアによって解釈される(interpreted)。このようにして、無線装置上で走るＶＭは、装置に、種々様々の異なるシステム用に書かれたソフトウェアを走らすことを可能にし、その結果、装置開発者及びサービスプロバイダが、無線装置ユーザーに付加された機能を提供するために既存ソフトウェアを利用することを可能にする。
【０００６】
残念なことに、リソースの限られた無線装置にＶＭを実装することは他の問題を引き起こす。例えば、多くのＶＭ実装は、定数、変数、呼び出しプロシージャーへの引数、又はプログラム実行のために必要とされる他の情報を保存するためのスクラッチパッドとして使用され得る一時記憶装置用スタックを使用する。バイトコード実行期間中に、スタックポインター、現在のプログラムカウンター、コードポインター、等を含むもしれない、活性化レコード又はコンテクスト(an activation record or context)を生成する動態関数に出会う可能性がある。クロージャー又はブロック(a closure or block)は、現在のコンテクスト（ここからブロックが生成された）中のスタック上のエレメント(elements)を指すバイトコードフラグメント(a bytecode fragment)である。ブロックはコンテクストからアプリケーションコード中のどこかで使用されるためにリターンされることが出来る。一例はソート関数(a sorting function)に渡されたソートブロック(a sort block passed)である。後の段階でブロックを実行するためには、生成コンテクスト(the creating context)はリリースされることが出来ない、即ち、生成関数(the creating function)はリターンできない。ブロックは、生成関数からの関数呼び出しに渡されることが出来るのみである。然しながら、リターンできるためには、パラメータ化されたブロック（即ち、生成コンテクスト中のデータを指すブロック）が極めて有用であろう。
【０００７】
いくつかのシステムではこの問題を各活性化レコード用に完全に新しいスタックを生成することによって解決する。各活性化レコードに対する最大のスタックサイズはコンパイル時(at compile-time)に計算されることが出来、スタックサイズは束縛される。この技術は問題を解決するように思えるが、それは、スタック生成及びパラメータコピーを伴う全ての関数(function)を不利にし、低い処理パワーと限られたメモリを有するシステム、例えば無線装置など、に関し費用がかかる。他の技術は、ブロックが生成活性化レコードにおいてどんな実際のデータも指さない（即ち、ブロックがクリーンである）場合のみに、生成活性化レコードのリターンを可能にする。この技術は、問題の部分を解決するが、ブロックが、生成コンテクストにおいて利用可能なデータでパラメータ化されることを可能としない。
【０００８】
従って、必要とされるものは、生成コンテクスト中のデータを指すパラメータ化されたブロックのリターンを可能とする継続受け渡しを提供する、リソース限定の無線装置において使用のＶＭであり、それによって、利用可能なメモリリソースを効率的に利用しながら、速いプログラム実行を提供する。
【発明の開示】
【０００９】
［要約］
【００１０】
１以上の実施例において、ＶＭがリソースの限られた無線装置において継続受け渡しを実行すること、を可能にする方法及び機器が提供される。例えば、前記無線装置は、組み込み型プロセッサ(an embedded processor)と限られたメモリリソースとを有し、それらが、ＶＭの一実施例を提供するためにプログラムインストラクションを実行する、無線電話であるかもしれない。前記ＶＭは、前記無線装置が異なるシステム用に書かれた非−ネイティブプログラムインストラクションを実行することを、可能にする。その結果、前記無線装置は、装置ユーザーに前記非−ネイティブプログラムの機能を提供することが可能である。
【００１１】
一実施例においては、コンテクスト−生成トリガー（a context-creating trigger）、例えば動態関数呼び出し、に出会うこと(encountering)に応じてブロックが生成されるように、前記ＶＭは継続受け渡しを実行する。前記ＶＭは、現在のコンテクストの現在のスタックフラグメント(stack fragment)のコピーを含む拡張コンテクスト(an extended context)を振舞う。更に、前記ブロック中に含まれるパラメータのフラグメントにオフセットされる(offset into)パラメータが保存される。ブロック評価と同時に、保存されたスタックフラグメントのエレメントは、スタック上にプッシュして戻され(pushed back)、前記ブロックが生成された前記ブロックのコンテクストを有効的に再構築する。前記ブロックに渡されたパラメータ(The parameters passed to the block)は、保存されたパラメータインデックスを使ってフラグメントに保存される。前記ブロックはそのあと生成コンテクスト(the creating context)のフルの状態(full state)で実行できる。
【００１２】
前記スタックフラグメントを前記スタックにプッシュして戻すことにより、前記ブロックの前記生成コンテクストは効果的に元の状態に戻される(re-instated)。これは、パラメータ化されたブロックがコンテクストによって戻されることを可能にする。ブロックが生成される時のみに前記スタックフラグメントをコピーすることにより、処理及びメモリオーバーヘッドは最小化される。
【００１３】
一実施例においては、無線装置における継続受け渡しを提供するバーチャルマシーンを操作する方法が提供される。前記バーチャルマシーンはスタックメモリを備える。本方法は、コンテクスト−生成トリガーに出会ことと、前記スタックメモリから生じる(derived)スタックフラグメントを備える継続ブロック(continuation block)を前記トリガーに応じて構築することと、評価インストラクションに出会うことと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存することと、を備える。
【００１４】
別の実施例では、バーチャルマシーンは、組み込み型プロセッサを有する無線装置において使用のために提供される。前記バーチャルマシーンは、情報を保存し検索するロジックを備えるスタックメモリを備える。前記バーチャルマシーンは又、コンテクスト−生成トリガーに出会うロジックと、前記トリガーに応じて継続ブロックを構築するロジックとを備え、ここでは、前記継続ブロックは前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うロジックと、前記継続ブロックからの前記スタックフラグメントを前記評価インストラクションに応じて前記スタックメモリ上に保存するロジックとを備える。
【００１５】
別の実施例においては、バーチャルマシーンは、組み込み型プロセッサを有する無線装置において使用のために提供される。前記バーチャルマシーンは、スタックメモリを提供するための手段と、コンテクスト−生成トリガーに出会うための手段とを備える。前記バーチャルマシーンは又、前記トリガーに応じて継続ブロックを構築するための手段も備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うための手段と、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するための手段とを備える。
【００１６】
別の実施例においては、処理ロジックにより実行される時に継続受け渡しを実行するバーチャルマシーンを提供する、プログラムインストラクションを備えるコンピュータ可読媒体が提供される。前記バーチャルマシーンはスタックメモリを備えており、前記可読媒体は、コンテクスト−生成トリガーに出会うためのプログラムインストラクションを備えている。前記可読媒体は又、前記トリガーに応じて継続ブロックを構築するためのプログラムインストラクションも備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記可読媒体は又、評価インストラクションに出会うためのプログラムインストラクションと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するためのプログラムインストラクションと、を備える。
【００１７】
別の実施例においては、組み込み型プロセッサを有する無線装置が提供される。前記無線装置は、情報を保存し検索するロジックを備えるスタッククメモリを備える。前記無線装置は又、継続受け渡しを実行するように動作するバーチャルマシーンも備える。前記バーチャルマシーンは、コンテクスト−生成トリガーに出会うロジックと、前記トリガーに応じて継続ブロックを構築するロジックと、を備えており、ここでは、前記継続ブロックは、前記スタックメモリから生じるスタックフラグメントを備える。前記バーチャルマシーンは又、評価インストラクションに出会うロジックと、前記評価インストラクションに応じて前記スタックメモリ上に前記継続ブロックからの前記スタックフラグメントを保存するロジックと、を備える。
【００１８】
本発明の他の面、利点、及び特徴は、ここで記載されている、図面の簡単な説明、本発明の詳細な説明、及び特許請求の範囲を調査することにより明らかになるであろう。
［詳細な説明］
【００１９】
ここに説明される実施例の上記の面及び付随する利点は、添付図面と併せて以下の詳細な記載を参照することより、より容易に明らかとなるであろう。
【００２０】
以下の詳細な記載は、無線装置において継続受け渡しを実行するＶＭを提供する方法及び機器の1以上の実施例を説明する。1以上の実施例においては、無線装置は限られたリソース（即ち、限られたメモリ容量）を有しており、ＶＭによって提供される継続受け渡しは次のステップを実行することによって達成される。
【００２１】
１．コンテクスト−生成トリガー（即ち、プッシュ継続インストラクションのような継続生成インストラクション）に出会こと(encountering)。
【００２２】
２．スタックフラグメント プラス 活性化レコード中に含まれる他の情報（即ち、コードポインター等）を含む継続ブロックを構築すること(constructing)。
【００２３】
３．前記継続ブロックをスタックメモリ上にプッシュすること(pushing)。
【００２４】
４．継続評価インストラクション(a continuation evaluation instruction)に出会うこと(encountering)。
【００２５】
５．前記継続ブロックを検索すること(retrieving)。
【００２６】
６．前記スタックフラグメントを前記スタック上にプッシュし戻すこと(pushing…back)。
【００２７】
７．前記継続ブロック中に保存されたコードポインターに関連したプログラムコードにジャンプすることによって前記の継続を評価すること(evaluating)。
【００２８】
図１は、継続受け渡しを実行するＶＭの一実施例を実施するために適する、限られたメモリリソース付き無線装置１０２を含むデータネットワーク１００を図示する。システム１００において、無線装置１０２は、無線通信チャンネル１０６を使用する無線ネットワーク１０８上でネットワークサーバ１０４と通信する。一実施例においては、装置１０２は、無線ネットワーク１０８上で、データ及び／又は音声情報を送信及び／又は受信できる無線電話を備える。然しながら、装置１０２は、任意の他のタイプの無線装置を備えてもよい。装置１０２は、アップリケーション１１０．１１２及び／又はシステムサービスを含むサーバー１０４から、種々の情報をリクエストするように動作する。例えば、システムサービスは、継続受け渡しの一実施例を提供するＶＭ１１４を含む。
【００２９】
一実施例においては、装置１０２は又、ローカルワークステーション１１６のようなローカルシステムに、ダイレクトリンク(direct link)１２０を介し直接に結合する。ダイレクトリンク１２０は、装置１０２がローカルワークステーション１１６とデータ及び／又はプログラムを交換することを可能にする。一実施例においては、ローカルワークステーション１１６は、ダイレクトリンク１２０を使ってＶＭ１１８を装置１０２にダウンロードする。ＶＭ１１８はＶＭ１１４と同じでもよく、両方共、継続受け渡しの１以上の実施例を提供するように動作する。
【００３０】
一実施例において、装置１０２は、組み込み型のプロセッサ、メモリ、及び種々インタフェースを含む組み込み型システムを備えているので、装置１０２は、アプリケーション１１０、及び／又は、サーバー１０４からダウンロードされるＶＭ１１４、を保存、ロード、及び実行できる。アップリケーション１１０及びＶＭ１１４は、例えば、特定装置リソース用に(for device specific resources)一般化された呼び出しを提供することによって、装置の操作を単純化するために使用される、装置１０２上で実行するランタイム環境(a runtime environment)と相互作用するかもしれない。１つのそのようなランタイム環境は、カリフォルニア州Ｓａｎ ＤｉｅｇｏのＱＵＡＬＣＯＭＮ．Ｉｎｃ．によって開発された、ＷｉｒｅｌｅｓｓＴＭ（ＢＲＥＷＴＭ）ソフトウェア プラットフォーム用 ｔｈｅ Ｂｉｎａｒｙ Ｒｕｎｔｉｍｅ Ｅｎｖｉｒｏｎｍｅｎｔである。
【００３１】
ＶＭ１１４は、異なるコンピュータ処理システム用に開発されたソフトゥエアを装置１０２が実行するのを容易にするために、サーバー１０４から装置１０２にダウンロードされてもよい。例えば、アプリケーション１１２は、装置１０２とは異なるターゲット装置又はシステム(a target device or system)のために書かれた非−ネイティブプログラムインストラクション、を含んでもよい。ターゲットシステム上で実行するように設計されているターゲットアプリケーション（アップリケーション１１２のような）も又、装置１０２上で実行できるように、ＶＭ１１４は、ターゲットシステムの環境をシミュレートするように動作する。例えば、一実施例においては、ＪＡＶＡ（登録商標）アプリケーションが装置１０２上にダウンロードされ実行されることが出来るように、ＶＭ１１４は、ＪＡＶＡ（登録商標）システム環境を提供するように動作する。１以上の実施例において、ＶＭ１１４は、これらの非−ネイティブインストラクションの実行期間中に継続受け渡しを提供するための方法及び機器を含む。
【００３２】
ローカルワークステーション１１６から装置１０２にダウンロードされるＶＭ１１８は、ひょっとしたら、ＶＭ１１４と同一であるかもしれず、従って、又、継続受け渡しの１以上の実施例を提供するようにも動作するかもしれない。一実施例においては、ＶＭ１１８は、例えばフロッピー（登録商標）ディスクなどのコンピュータ可読媒体上に提供され、装置１０２への伝送のためにシステム１１６上にロードされる。別の実施例では、ＶＭが装置１０２上で実行できるように、ＶＭは、例えばメモリカード（図示されていない）などのコンピュータ可読メモリ装置上に保存され、装置１０２に直接にプラグ接続される。このように、装置１０２は、無線伝送、有線伝送で、又は、メモリ装置からそれを直接に検索し取り出すことによって、ＶＭを受け取ることが出来る。
【００３３】
装置１０２は、ポータブルであり、限られたメモリリソースを有しているので、それは、特に、継続受け渡しの１以上の実施例でＶＭを実行するのに適している。例えば、装置１０２は限られたメモリ容量を持っているので、継続受け渡しを有するＶＭは、利用可能なメモリを効率よく利用するように、又、非−ネイティブプログラムインストラクションの速くて効率的なプログラム解釈及び実行を提供するように、動作する。
【００３４】
図２は、継続受け渡しを実行するように動作するＶＭを含む装置１０２の一実施例を図示する機能ブロック図を示す。装置１０２は、内部データバス２０４に結合されているインストラクション処理ロジック(instruction processing logic)２０２を備える。又、内部データバス２０４に結合されているのは、ネイティブインストラクションメモリ(native instruction memory)２０６、解釈インストラクションメモリ(interpreted instruction memory)２０８、ヒープメモリ(heap memory)２１０、ユーザーインタフェース２１２、及び入力／出力（Ｉ／Ｏ）インタフェース２１４である。
【００３５】
装置１０２の動作期間中に、処理ロジック２０２は、ネイティブインストラクションメモリ２０６の中に保存されたプログラムインストラクションを実行する。１以上の実施例において、処理ロジック２０２は、ＣＰＵ、ゲートアレイ、ハードウェア ロジック、ソフトウェア、又はハードウェア及びソフトウェアの任意の組み合わせ、を備える。このようにして、処理ロジック２０２は、一般に、ネイティブインストラクションメモリ２０６中に保存された機械可読インストラクション(machine-readable instructions)を実行するロジックを備える。
【００３６】
ネイティブインストラクションメモリ２０６は、ＲＡＭ、ＲＯＭ、ＦＬＡＳＨ、ＥＥＲＯＭ、又は任意の他の適したタイプのメモリ、又はそれらの任意の組み合わせ、を備える。一実施例においては、ネイティブインストラクションメモリ２０６は、装置１０２の内部に位置しており、又、別の実施例においては、ネイティブインストラクションメモリ２０６は、装置１０２に選択的に取り付けられることが出来てそれによって内部メモリ２０４に結合されることが出来るポータブルメモリカード又はメモリ装置、を備えている。このように、ネイティブインストラクションメモリ２０６は、処理ロジック２０２によって実行されることが出来るインストラクションを保存できる任意のタイプのメモリを事実上備える。
【００３７】
ユーザーインタフェース２１２は、例えば、キーボード、位置決め装置、タッチパッド、又は他の入力機構、例えば音声コマンドを受け取り処理する音声回路など、からユーザー入力を受け取る。ユーザーインタフェース２１２は又、種々の出力機構、例えば、ディスプレイ、ＬＥＤｓ、オーディオスピーカー又は他のタイプの視覚又は聴覚インディケータなど、に出力を供給できる。このように、ユーザーインタフェース２１２は、装置２１２がユーザ入力を受け取りユーザーに視覚情報又は聴覚インディケータを出力することを可能にするように任意の組み合わせでハードウェア及び／又はソフトゥエアを備える。
【００３８】
Ｉ／Ｏインタフェース２１４は、装置１０２と外部装置、システム、及び／又はネットワークとの間で情報を伝送し受け取るように動作する。例えば、一実施例においては、Ｉ／Ｏインタフェース２１４は、例えば通信リンク１０６を使用する、無線データネットワーク上で情報を伝送し受け取るように動作する無線トランシーバ回路（示されていない）を備えている。例えば、トランシーバーは、処理ロジックから受け取られた情報を変調し、変調された情報を無線伝送用に適する高い周波数信号に変換する。同様に、トランシーバも又、受信された高い周波数通信信号を、復調及びその後の処理ロジック２０２による処理に適する信号に変換する回路を備える。
【００３９】
別の実施例においては、Ｉ／Ｏインタフェース２１４は、インターネットのような公衆データ網上の遠隔システムと通信するために、電話線のような配線による通信リンク上で情報を伝送し受け取るように動作するトランシーバを備える。
【００４０】
更に別の実施例では、Ｉ／Ｏインタフェース２１４は、リンク１２０を使用するローカルワークステーション１１６のようなローカル装置と通信するように動作する回路を備える。Ｉ／Ｏインタフェース２１４は又、プリンタ又は他のローカルコンピュータ又は装置、例えばフロッピー（登録商標）ディスク又はメモリカードなど、と通信する回路も含むかもしれない。このように、Ｉ／Ｏインタフェース２１４は、装置１０２が他のローカルな又は遠隔に位置する装置又はシステムと通信することを可能にする任意のタイプのハードウェア、ソフトウェア、又はこれらの組み合わせを備えることが出来る。
【００４１】
装置１０２の動作期間中に、ネイティブインストラクションメモリ２０６に保存されたネイティブプログラムインストラクションは処理ロジックによって実行される。一実施例においては、処理ロジック２０２によるネイティブプログラムインストラクションの実行は、ＶＭ２１８が発生させられる原因となる。ＶＭ２１８は、解釈インストラクションメモリ２０８中に保存される非−ネイティブプログラムインストラクションを解釈するように動作する。例えば、アプリケーション１１２のような、非−ネイティブプログラムインストラクションを有するアプリケーションは、無線ネットワーク経由で装置１０２にダウンロードされ、解釈インストラクションメモリ２０８の中に保存されることが出来る。
【００４２】
インストラクション実行を支援するために、ＶＭ２１８は、一時的にプログラムデータ又はインストラクションを保存するためにスタックメモリ２１６を利用する。例えば、ＶＭ２１８は、定数、変数、プログラムアドレス、ポインタ、インストラクション又は他の情報項目をスタックメモリ２１６上に保存することが出来る。別の実施例においては、ＶＭ２１８は、一時的に情報をヒープメモリ２１０中に保存するかもしれない。ヒープメモリは、処理ロジック２０２による保存及び検索に適する任意のタイプのメモリを事実上備える。スタックメモリ２１６は、ＶＭ２１８による使用専用であってもよいし、或いは又、インストラクション実行期間中、処理ロジック２０２と共有されてもよい。
【００４３】
一実施例においては、処理ロジック２０２は、ネイティブインストラクションメモリ２０６から内部バス２０４経由でネイティブインストラクションを検索し取り出す。ネイティブプログラムインストラクションの実行は、ＶＭ２１８が発生させられる原因となる。ＶＭ２１８はそのあと、解釈インストラクションメモリ２０８中に保存されている非−ネイティブインストラクションを検索し実行する。このようにして、装置１０２は、装置１０２がユーザに選択された機能を提供するために非−ネイティブプログラムコードを走らすことを可能にするＶＭ２１８を発生するように動作する。例えば、装置ユーザーは、装置１０２のハードウェア又はソフトウェアの何れのコンフィグレーション(configuration)とも互換性がないＪＡＶＡ（登録商標）アプリケーションをダウンロードし実行したいと思うかもしれない。ＶＭ２１８は、ＪＡＶＡ（登録商標）システム環境を提供するように動作し、そうすることによって、ＪＡＶＡ（登録商標）アプリケーションが装置１０２を走るのを可能にする。更に、ＶＭ２１８は、非−ネイティブインストラクションの速い解釈及び実行と装置１０２の限られたメモリリソースの効率的利用とを提供するため、継続受け渡しの１以上の実施例を提供するように動作する。
【００４４】
１実施例において、ＶＭ２１８を生成するネーティブプログラムインストラクションが、遠隔サーバーからＩ／Ｏ装置経由で装置１０２のネイティブインストラクションメモリ２０６にダウンロードされる。例えば、図１を参照すると、遠隔サーバー１０４は、ネイティブプログラムインストラクションを装置１０２に無線ネットワーク１０８経由でダウンロードする。別の実施例においては、ローカルワークステーション１１６が、ネイティブプログラムインストラクションを装置１０２にリンク１２０経由でダウンロードする。同様な方法で、非−ネイティブプログラムインストラクションも又、装置１０２にダウンロードされることが出来る。
【００４５】
装置１０２のコンフィグレーションは、継続受け渡しを提供するＶＭを発生するのに適する単なる１つのコンフィグレーションであるに過ぎない、ことに注意されるべきである。本発明の範囲内の他の装置コンフィグレーションを使用してＶＭを生成することも又可能である。更に、説明されたＶＭは、無線装置１０２の中で実施されて示されているが、組み込み型プロセッサ及び限られたメモリリソースを有する実質上任意のタイプの装置の中でＶＭを実施することも又可能である。
【００４６】
図３は、継続受け渡しを提供する継続ブロックを生成するためにＶＭ２１８によって使用される、無線装置１０２中のメモリリソースの詳細な説明図を示す。メモリリソースは、継続ブロックが生成される前は３０２で又継続ブロックが生成された後は３０４で示されるスタックメモリ２１６を備える。一実施例においては、継続ブロックは、ヒープメモリ２１０中に、生成され、及び／又は、保存されることが出来る。現在の継続−生成コンテクスト(a current continuation-creating context)に関係する情報を含むスタックフラグメント３０６が定義される。
【００４７】
図４は、図３において示される継続ブロックを評価するためにＶＭ２１８によって使用される、無線装置１０２中のメモリリソースの詳細な説明図を示す。スタックメモリ２１６は、継続ブロックが評価される前は４０２で又継続ブロックが評価された後は４０４で示される
【００４８】
図５は、無線装置１０２のようなリソース限定装置(a resource limited device)における使用のために継続受け渡しを提供するＶＭを操作する方法５００の一実施例を示す。明確にする目的のために、方法５００の説明は、図３及び４で示されたメモリリソース、及び図１及び２で示された構成を参照する。更に、継続受け渡しを提供するＶＭを生成するためのネイティブプログラムインストラクションは、ネイティブプログラムメモリ２０６中に保存されると仮定する。更に、非−ネイティブプログラムインストラクションを備えるアプリケーション、例えばアプリケーション１１２、は解釈プログラムメモリ２０８中に保存される、と仮定する。非−ネイティブプログラムインストラクションは、別のシステムと共に使用するために生成されたものであり、装置１０２と直接的な互換性がない。然しながら、非−ネイティブプログラムインストラクションは、装置１０２のユーザーに望ましい機能を提供する。従って、装置１０２のユーザーにとって、所望の機能を達成するために、非−ネイティブプログラムインストラクションを解釈し実行するＶＭを生成することは利益になる。更に、ＶＭは、装置１０２の限られたメモリリソースを効率よく利用するために継続受け渡しの１以上の実施例を提供するよう動作する。
【００４９】
ブロック５０２では、ＶＭを生成するネイティブインストラクションがネイティブメモリに保存される。例えば、ＶＭは、無線ネットワーク１０８からチャンネル１０６及びインタフェース２１４を経由して装置１０２にダウンロードされることが出来る。別の実施例では、ＶＭは、ローカルワークステーション１１６からリンク１２０及びインタフェース２１４を経由して装置１０２にダウンロードされることが出来る。別の実施例では、ネイティブインストラクションメモリは、装置１０２にプラグ接続されるメモリ装置、例えば、メモリカード、を備えることが出来、ＶＭはそのメモリ装置に保存される。更に別の実施例では、ＶＭは、装置１０２の製造期間中にメモリ２０６に保存される。
【００５０】
ブロック５０４では、異なるシステム上で走るように設計されたアプリケーションを表す非−ネイティブインストラクションが解釈インストラクションメモリに保存される。例えば、非−ネイティブインストラクションは、ネットワークサーバー１０４から無線ネットワーク１０８を経由して装置１０２の解釈インストラクションメモリ２０６にダウンロードされることが出来る。別の実施例では、非−ネイティブインストラクションは、ローカルワークステーション１１６からダウンロードされ、又は、装置１０２にプラグ接続されるメモリ装置上に含まれる。
【００５１】
ブロック５０６では、ＶＭがアクティブにされる。例えば、処理ロジック２０２は、ネイティブインストラクションをネイティブインストラクションメモリ２０６から内部バス２０４経由で検索し取り出し、これらのインストラクションを実行しだす。ネイティブインストラクションを実行することにより、処理ロジックは、ＶＭ２１８を生成するように動作する。
【００５２】
ブロック５０８では、ＶＭは、解釈インストラクションメモリ中の非−ネイティブインストラクションの解釈を始める。例えば、ＶＭ２１８は、非−ネイティブインストラクションをメモリ２０８から内部バス２０４経由で検索し取り出す。ＶＭは、これらのインストラクションを解釈し、実行する。一実施例においては、ＶＭは、一時記憶装置領域としてスタックメモリ２１６又はヒープメモリ２１０を使用する。別の実施例では、スタックメモリ２１６は、ＶＭに専用のスタックメモリであり、それは、処理ロジック２０２によって使用される任意のスタックメモリとは異なるかもしれない。
【００５３】
ブロック５１０では、ＶＭは、非−ネイティブインストラクションの解釈期間中にコンテクスト生成トリガーに出会う。例えば、ＶＭが、解釈する１以上の選択された非−ネイティブインストラクションに出会うとき、コンテクスト生成トリガーが発生するかもしれない。別の実施例では、ＶＭが、非−ネイティブインストラクションに関連するプログラムマーカー出会うとき、トリガーが発生するかもしれない。トリガーが出会われる時、スタック２１６が、３０２で示されるように現れる。
【００５４】
ブロック５１２では、コンテクスト生成トリガーに応じ、ＶＭは、図３に示されるように、継続ブロックを生成するように動作する。継続ブロックは、スタックフラグメント３０６と、活性化レコード中に含まれる情報（即ち、コードポインター、等）を含むブロックヘッダーとを含む。スタックフラグメント３０６は、スタック２１６の一部分のコピーを表す。例えば、スタックフラグメント３０６内の情報は、現在のスタックベース(current stack base)３０８から現在のスタックトップ(current stack top)３１０まで伸びるスタック２１６の一部分である。スタックフラグメント３０６は、このとき継続ブロックにコピーされる。一実施例においては、継続ブロックは、３０４で示されるように、このあとスタック２１６上に保存される。このように、方法５００の第一部分は、コンテクスト生成トリガーとの出会に応じ、スタックフラグメント３０６を含む継続ブロックを生成するように動作する。
【００５５】
方法５００の残りの部分は、どのようにしてＶＭが継続を評価するように(to evaluate the continuation)動作するかを説明する。
【００５６】
ブロック５１４で、ＶＭは、継続評価インストラクションに出会うが、これは継続ブロックが生成された後のある時に発生し得る。ブロック５１６では、ＶＭは、例えば、図４に示されるように、スタック２１６から、継続ブロックを検索する。
【００５７】
ブロック５１８では、継続ブロック内に保存されたスタックフラグメント３０６が、スタック上にプッシュされ戻される(pushed back)。例えば、図４を参照すると、スタックフラグメント３０６は、４０４でのスタック説明図によって示されるように、スタック２１６上にプッシュされる。このステップの実行において、新スタックトップ及び新スタックベースが決定される。
【００５８】
ブロック５２０で、継続ブロック中に保存されたコードポインターに関連するプログラムコードにジャンプすることによって、継続が評価される。例えば、継続ブロックに関連したブロックヘッダーは、継続が評価されるべきときにジャンプされるコードポインターを含む。このように、方法５００は、メモリ限定無線装置(a memory limited wireless device)において実施されるＶＭにおける継続受け渡しを提供する。上記の説明されたプロセスを、本発明の範囲内でネストされた継続受け渡し(nested continuation passing)を提供するように拡張することも又可能である、ということに注意すべきである。
【００５９】
方法５００は、ここに説明された種々の実施例の動作の継続受け渡しを、説明するためのものであるように意図されており、制限するものではない。例えば、説明された方法ステップのどこに対してもマイナーな変更、追加、又は削除を行うことは当業者にとっては自明なことであろう。更に、説明された方法ステップは、説明された実施例の範囲から逸脱することなく、組み合わされ、再アレンジされ、或いは再配列されてもよい。
【００６０】
図６は、継続受け渡しを実行するＶＭの１以上の実施例を実施するのに適する限られたメモリリソースを備えた無線装置を含むデータネットワークを図示する。無線装置は、無線電話６０２、携帯情報端末(personal digital assistant)（ＰＤＡ）６０４、ページャ(pager)／ｅメール装置６０６、及びタブレットコンピュータ６０８を備える。それらの小さなサイズ及び軽い重さのために、装置は、組み込み型プロセッサを利用し、限られたメモリリソースを有する。
【００６１】
装置（６０２、６０４、６０６、及び６０８）は、無線通信チャンネル６１０を使い無線ネットワークサーバ６１２と無線データネットワーク６１４上で通信する回路を含む。無線通信チャンネル６１０は、例えば、衛星通信チャンネル、地上波通信チャンネル(terrestrial communication channel)、又は、任意の他のタイプの無線周波数（ＲＦ）又は電磁波通信チャンネルを備えることが出来る。無線データネットワーク６１４は、選択された通信チャンネル６１０で動作することが可能な任意の適切なネットワークであってもよい。
【００６２】
更に、無線装置（６０２、６０４、６０６、及び６０８）は、ワークステーション６１８と有線通信チャンネル６１６上で通信する回路を含む。ワークステーション６１８は、有線データネットワーク６２４を使用し有線通信チャンネル６２２上でネットワークサーバ６２０と通信するロジックを含む。更に、ワークステーション６１８は、無線通信チャンネル６２６及び無線ネットワーク６１４を使って無線ネットワークサーバ６１２と通信するロジックを含む。
【００６３】
ネットワーク６００の動作期間中、無線装置（６０２、６０４、６０６、及び６０８）は、継続受け渡しを実行するように構成されたＶＭの１以上の実施例を含む。例えば、ＶＭは、それぞれの装置が製造される時に無線装置に内蔵されてもよい。別の実施例では、ＶＭは、無線装置にプラグ接続するメモリカード（示されていない）上に保存されることが出来、そうすることにより、無線装置がメモリカードからインストラクションを検索してＶＭを操作することを可能にする。このように、ＶＭを備えるプログラムインストラクションがコンピュータ可読媒体上に保存される。ここで説明されたように継続受け渡しを実行するＶＭの１以上の実施例を無線装置によって実行される時に生成する、プログラムインストラクションを保存するために、実質上、任意のタイプのコンピュータ可読媒体が使用されることが出来る。
【００６４】
本発明中に含まれる１以上の実施例において、方法及び機器は、リソースが限定された装置における使用のための継続受け渡しを実行するＶＭを提供する。従って、方法及び機器の１以上の実施例がここで例示され説明されているが、それらの精神又は本質的特性から逸脱することなく実施例に種々様々な変更がなされることが出来る、ということが理解されるであろう。従って、ここでの開示及び記載は、添付の特許請求の範囲に記載の発明の範囲を、説明するためであるように意図されており、制限するものではない。
【図面の簡単な説明】
【００６５】
【図１】図１は、継続受け渡しを実行するＶＭの一実施例を実施するために適する、限られたメモリリソース付き無線装置を含むデータネットワークを図示する。
【図２】図２は、図1の無線装置の一実施例を図示する機能ブロック図を示す。
【図３】図３は、継続受け渡しを提供する継続ブロックを生成するために使用されるメモリリソースの説明図を示す。
【図４】図４は、図３の継続ブロックを評価するために使用されるメモリリソースの説明図を示す。
【図５】図５は、無線装置での使用のためのＶＭにおける継続受け渡しを提供する方法の一実施例を示す。
【図６】図６は、継続受け渡しを実行するＶＭの１以上の実施例を実施するのに適する、限られたメモリリソースを備えたポータブル計算装置を含むデータネットワークを図示する。
【図１】
2007505395.tif 000003
【図２】
2007505395.tif 000004
【図３】
2007505395.tif 000005
【図４】
2007505395.tif 000006
【図５】
2007505395.tif 000007
【図６】
2007505395.tif 000008
【国際調査報告】
2007505395.tif 000009