(57)【要約】本発明は、インタプリタ言語で書かれたプログラムの解釈の速さを増すための装置（１０）に関し、前記プログラム波連続したタスクの形式で仮想マシンにより実行されることができる中間コードを有し、前記装置は、記憶手段（１６）に現時点の中間コードをロードするために、メモリ（１１）から現時点の中間コードを抽出することができるルーティング手段（１３）を有する。タスクの変化のための要求があるとき、ルーティング手段（１３）は、現時点の中間コードの抽出を抑制し、仮想マシンのコンテキストの保存を発効するように意図された保存された中間コードを記憶手段（１６）にロードすることができる。
2005520236.tif 000002
【特許請求の範囲】
【請求項１】
インタプリタ言語で書かれたプログラムの解釈の速さを増すための装置であって：
前記プログラムは連続したタスクの形式で仮想マシンにより実行されることができる中間コードを有し；及び
前記装置は、記憶手段に現時点の中間コードをロードするために、メモリから現時点の中間コードを抽出することができるルーティング手段を有する；
装置であり、
前記ルーティング手段は、タスクの変化のための要求の間に、現時点の中間コードの実行を抑制し、前記仮想マシンのコンテキストを保存することを発効するように意図された保存された中間コードを前記記憶手段にロードすることができる；
ことを特徴とするインタプリタ言語のプログラムの解釈の速さを増すための装置。
【請求項２】
請求項１に記載のインタプリタ言語のプログラムの解釈の速さを増すための装置であって、ルーティング手段は、２つの連続したタスクの変化の間に処理され且つ現時点の中間コードがメモリから実行されるときはいつでも減算される現時点の中間コードの数に対応する所定数に初期設定されるルーティングカウンタを有し、前記保存された中間コードは、前記ルーティングカウンタが値０を有するとき、前記記憶手段にロードされる、ことを特徴とするインタプリタ言語のプログラムの解釈の速さを増すための装置。
【請求項３】
請求項１に記載のインタプリタ言語のプログラムの解釈の速さを増すための装置であって、前記ルーティング手段は、前記記憶された中間コードが前記記憶手段にロードされるように、タスクの変化のための要求の間にアクティブにすることができる割り込みレジスタから構成される、ことを特徴とするインタプリタ言語のプログラムの解釈の速さを増すための装置。
【請求項４】
インタプリタ言語の解釈の速さを増すために、請求項１乃至３のいずれ一項に記載の装置を有し且つインタプリタ言語に従ってプログラムを実行することができる装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタプリタ言語におけるプログラムの解釈の速さを増すための装置に関し、前記プログラムは、連続タスクの形式で仮想マシンにより実行することができる中間コードを有し、前記装置は、中間コードを記憶手段にロードするためのメモリから現時点の中間コードを抽出することができるルーティング手段から構成される。
【背景技術】
【０００２】
例えば、ＪＡＶＡ（登録商標）タイプのポータブルプログラム言語において、更には、そのようなプログラム言語の解釈及び実行において、本発明のアプリケーションを見出すことができる。
【０００３】
そのような装置は、デジタルテレビジョンの受信器−復号化器、又、所謂、セットトップボックス、携帯電話、又はこのタイプのプログラム言語で書かれるプログラムを実行することができるいずれの他の装置において、統合されることができる。
【０００４】
ＪＡＶＡ（登録商標）言語は、所謂、解釈プログラム言語である。その主要な利点は、全くポータブルであることであり又はマルチプラットフォームであって、そのような言語で書かれたプログラムは、それが所望された環境以外の環境下で実行されることができることである。その成功の理由の１つは、仮想マシンによりアプレットと呼ばれる実行可能アプリケーションの形式でｈｔｍｌ（“ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ”）に挿入される能力である。
【０００５】
ＪＡＶＡ（登録商標）言語のプログラムは、中間コード、又ソースコードと実行可能バイナリコードとの間のバイトコードを生成することができる。中間コードは、仮想マシンにより実行される。それ故、この中間コードは、プログラムの実行における遅速の特定の量をもたらすプロセッサに、直接、理解可能ではない。
【０００６】
より速く中間コードを解釈するように仮想マシンの処理を加速するための装置は、当該技術分野において知られている。ＰＣＴ特許出願であって、国際公開第ＷＯ／９９１８４８４号パンフレットは、仮想マシンインタプリタとして知られるような装置について記載している。仮想マシンインタプリタは、一般に、中間コードを有する守りとプロセッサとの間に置かれたプレプロセッサであって、プロセッサにより実行される命令の集合に中間コードを変換することが可能である。
【０００７】
そのような環境において、現時点のＪＡＶＡ（登録商標）タスクから新しいＪＡＶＡ（登録商標）タスクへのタスクを変化は、任意の瞬間であって、特に、中間コードの変換の間に起こることが可能である。従来、タスクはオペレーティングシステムにより管理され、オペレーティングシステムは、タスクの変化の間に、私たちの場合の可能マシンインタプリタの状態のような、それ自体の状態と関連するいずれのハードウェア素子の状態を保存するようにする。このような保存は、保存ルーチンを用いて、発効される。このようにして、タスクの変化の間に、タスクの変化のときにプロセッサの状態と仮想マシンインタプリタの状態を表すレジスタの集合は、新しいＪＡＶＡ（登録商標）タスクの状態を表すためであって、後で回復されるように保存される。
【０００８】
しかしながら、ハードウェアの状態を保存するための保存ルーチンは数百のクロック周期、即ち、タスクの変化当たり数十ミリ秒を要する。それ故、そのような動作は著しく遅いという問題点を有している。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、タスクの変化の間に、当該技術分野の装置に比べて速い、インタプリタ言語におけるプログラムの解釈の速さを増すための装置を提供することである。
【課題を解決するための手段】
【００１０】
この目的のために、前記装置は、タスク変化要求の間に、現時点の中間コードの抽出を抑制し、仮想マシンのコンテキストの保存の効果を意図する保存された中間コードを記憶手段にロードすることができるルーチン手段から構成されることを特徴とする。
【００１１】
このようにして、インタプリタ言語におけるプログラムの解釈の速さを増す装置は、オペレーションシステムの代わりに、それ自身、タスクの変化を提供することができる。この目的のために、その装置は、仮想マシンのコンテキストのみを保存することを可能にする保存されたオブジェクトコードを用いる。
【００１２】
そのような機構は又、現時点の中間コードの処理を中断することなく、連続的に中間コードを処理すること、即ち、オペレーティングシステムの安定な状態においてタスクを変化させることを可能にする。このようにして、当該技術分野においてなされたものと異なり、プロセッサ及びインタプリタ言語の解釈の速さを増すために、もはや、装置のレジスタに記憶する必要はない。
【００１３】
本発明は又、インタプリタ言語に従って実行することができ、インタプリタ言語の解釈の速さを増すための装置から構成される装置に関する。
【００１４】
本発明については、更に、図面に示す実施形態の例を参照して説明するが、本発明はそれらに限定されるものではない。
【発明を実施するための最良の形態】
【００１５】
本発明は、ＪＡＶＡ（登録商標）言語の解釈の速さを増すための仮想マシンインタプリタのデザインに関して開発した。しかしながら、本発明は、ソースコードと実行可能バイナリコードとの間の中間コードを生成することができる場合に、他のプログラム言語に適用可能であることは、当業者には明らかであろう。ここで、前記中間コードはプロセッサにより実行されるために解釈される必要がある。本発明は、例えば、ＬＩＰＳ言語又はＷｉｎｄｏｗｓ（登録商標）  ＸＰのＣ＃言語の場合に可能である。
【００１６】
中間ＪＡＶＡ（登録商標）コードは、例えば、加算又は減算タイプの命令に対応するニーモニックと、例えば、定数型引数に対応するオペランドとから構成される。ニーモニックは８ビットにおいてコード化され、それ故、２５６個のニーモニック全てが用いられる訳ではない。それ故、内部使用のためのＪＡＶＡ（登録商標）仮想マシンにより保存され、続いて用いられることはできない。本発明は、ＪＡＶＡ（登録商標）タスクの変化を管理するために、これらの保存された中間コードの１つを使用することを提案する。
【００１７】
更に、仮想マシンインタプリタそれ自身は、オペレーティングシステムの代わりに、ＪＡＶＡ（登録商標）タスクの変化を提供することができる。このようにして、タスクの変化の間に、現時点の中間コードを保存された中間コードと置き換えることができる。保存された中間コードの実行は、仮想マシンのコンテキストを保存するために、スタックポインタ、グローバルポインタ、プログラムカウンタ及びＪＡＶＡ（登録商標）フレームポインタから構成されるパラメータの集合に一般的に対応する、スケジューラとも呼ばれる、タスクの時間管理のためのソフトウェアをイネーブルにする関数呼び出しを生成する。次いで、これらのパラメータは、次の現時点の中間コードの実行の間に回復される。
【００１８】
このようにして、タスクの変換のための待ち時間は減少され、中断なく、中間コードの実行が可能となる。
【００１９】
図１に示す第１実施形態において、仮想マシンインタプリタＶＭＩ（１０）は、タスクの２つの連続的変化の間の現時点の中間コードの所定数ｎを実行するために要する時間と時間スライスとの間においてマッピングすることを可能にする。
【００２０】
この目的のために、仮想マシンインタプリタＶＭＩ（１０）は、メモリＭＥＭ（１１）のアドレスを制御回路ＣＯＮＴ（１４）に対して示すことができる中間コードカウンタＢＣＣ（１２）から構成され、前記アドレスは、中間コードレジスタＢＣＲＥＧに前記アドレスをロードするように、前記メモリから抽出される現時点の中間コードに対応する。仮想マシンインタプリタＶＭＩ（１０）はルーティング手段から構成され、前記ルーティング手段は、制御回路ＣＯＮＴ（１４）に加えて、タスクの２つの変化の間に実行される中間コードの数に対応する所定の初期値ｎがレジスタＲＥＧ（２２）により最初にロードされる、ルーティングカウンタＣＯＵＮ（２１）から構成される。
【００２１】
制御回路ＣＯＮＴ（１４）は、次の現時点の中間コードを指すことができるように、現時点の中間コードの処理の後、中間コードカウンタＢＣＣ（１２）を加算する。現時点の中間コードが、メモリＭＥＭ（１１）からレジスタＢＣＲＥＧ（１６）にルーティングされる度に、制御回路ＣＯＮＴ（１４）は又、ルーティングカウンタＣＯＵＮ（２１）を減算する。
【００２２】
ルーティングされた現時点の中間コードの数が所定の初期値ｎより大きくなったとき、即ち、ルーティングカウンタＣＯＵＮ（２１）が値０を有するとき、中間コードカウンタＢＣＣ（１２）は制御回路ＣＯＮＴ（１４）により加算されず、現時点の中間コードは、レジスタＢＣＲＥＧ（１６）にロードされるように、制御回路ＣＯＮＴ（１４）によりレジスタＳＷＴ（２３）から抽出された、“ソフトウェアトラップバイトコード”と呼ばれる保存された中間コードにより置き換えられる。“ＯＲ”関数を実行するゲート（１５）は、レジスタＢＣＲＥＧ（１６）が一般の場合の現時点の中間モードか又はタスクの変化の間の保存された中間コードのどちらかを受信することができるという事実を、表す。この保存された中間コードは、次の現時点の中間コードの処理のための仮想マシンのコンテキストを保存し且つ回復するための関数呼び出しを生成することができる。
【００２３】
仮想マシンインタプリタは又、当業者に知られている原理に従って、且つ、特に、変換テーブルを用いて、機能する現時点の中間コードのための変換モジュールＴＲＡＮから構成される。変換モジュールＴＲＡＮ（１７）から出るコードは、次いで、実行可能なコードの形式か又は保存を生成することができる保存された中間コードの形式のどちらかで、プロセッサＰＲＯＣ（１８）に送信される。
【００２４】
このようにして、本発明に従った、仮想マシンインタプリタＶＭＩ（１０）は、割り込みすることなく機能し、所定数の中間コードは、ＪＡＶＡ（登録商標）タスクの２つの連続する変化の間に実行される。
【００２５】
図２に示す、本発明の第２実施形態において、仮想マシンインタプリタＶＭＩ（１０）は、最後の現時点の中間コードの実行の終了に対応する時間の経過が加えられる、固定的な持続時間に等しい所定の持続時間をもつ時間スライスの範囲内で、現時点の中間コードの実行を管理することができる。
【００２６】
この目的のために、前記仮想マシンインタプリタは、外部又は内部クロックの割り込みを受信することができる割り込みレジスタＩＮＲＥＧ（２４）から構成される。タスクの変化に対する要求に対応する割り込みが要求されるとき、割り込みレジスタＩＮＲＥＧ（２４）はクロック（９）によりアクティブにされる。次の中間コードが処理されるとき、制御回路ＣＯＮＴ（１４）は、次いで、中間コードカウンタＢＣＣ（１２）は加算されず、現時点の中間コードは、制御回路ＣＯＮＴ（１４）によりレジスタＳＷＴ（２３）から抽出された、ほぞんされた中間コードにより置き換えられる。レジスタＢＣＲＥＧ（１６）は、このようにして、現時点の中間コードの代わりに保存された中間コードを受信し、この保存された中間コードは、仮想マシンのコンテキストを保存するために関数呼び出しを生成することができる。
【００２７】
上記２つの実施形態において説明したような、仮想マシンインタプリタＶＭＩ（１０）は、プログラマブル集積回路であって、例えば、ＦＰＧＡ（“Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ”）タイプの回路に組み込まれることができる。
【００２８】
そのような仮想マシンインタプリタは、ビデオデコーダ、デジタルテレビジョン受信器−復号化器、テレビジョンセット、携帯電話、携帯情報端末、若しくはＪＡＶＡ（登録商標）又はいずれの他のインタプリタ言語で書かれるプログラムを実行することができるいずれの他の装置に統合することができる。
【００２９】
本明細書における括弧内の参照符号は制限的に解釈される必要はない。動詞“から構成される”及びその活用表現は又、広く解釈される必要がある、即ち、前記動詞の前に列挙される要素又は段階以外の要素又は段階ばかりでなく、前記動詞の前に既に列挙され且つ単数表現された要素又は段階の複数の存在を排除するものではない。
【図面の簡単な説明】
【００３０】
【図１】中間コードの所定数がタスクの２つの変化の間に実行される本発明の第１実施形態を示す図である。
【図２】所定の時間の期間がタスクの２つの変化の間に経過する本発明の第２実施形態を示す図である。
【図１】
2005520236.tif 000003
【図２】
2005520236.tif 000004
【国際調査報告】
2005520236.tif 000005
2005520236.tif 000006
2005520236.tif 000007