JP3889227B2 - Program execution device, program execution method, recording medium, and control program - Google Patents
Program execution device, program execution method, recording medium, and control program Download PDFInfo
- Publication number
- JP3889227B2 JP3889227B2 JP2001010875A JP2001010875A JP3889227B2 JP 3889227 B2 JP3889227 B2 JP 3889227B2 JP 2001010875 A JP2001010875 A JP 2001010875A JP 2001010875 A JP2001010875 A JP 2001010875A JP 3889227 B2 JP3889227 B2 JP 3889227B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- machine language
- execution
- translation
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、高水準のプログラミング言語で記述されているプログラムを演算処理システムで実行させる技術に関し、特に、ジャスト・イン・タイム・コンパイラ方式により、原始プログラムを特定の演算処理システムのプラットホームで直接実行可能な機械語に翻訳して該機械語を実行させる技術に関する。
【0002】
【従来の技術】
異なる演算処理システムのプラットホーム上で同一のプログラムを動作させようとする多くの試みが以前から行なわれている。プログラミング言語Java(Javaは、サン・マイクロシステムズ・インコーポレイテッドの登録商標)はその回答のひとつである。Javaはプラットホーム独立を実現し、異種のプラットホーム間での可搬性に優れている。
【0003】
Javaで記述されたプログラムのソースコードは、構文解析などの処理が施され、バイトコードと呼ばれるバイナリファイルに変換されて配布されるのが一般的である。Javaバイトコードは演算処理システムのプラットホームに独立である汎用的な命令コードであり、Java VM(バーチャル・マシン)と呼ばれるJavaの実行系で解釈され実行されるコードである。Java VMに相当する環境を各々の演算処理システムが備えることによって、異なる演算処理システム上で同一のJavaバイトコードの実行が可能となる。
【0004】
以下、Javaバイトコードを演算処理システム上で実行させる技術について説明する。
Javaインタプリタは、Javaバイトコードを命令毎に逐次解釈(インタプリト)し、演算処理システムにその命令に対応する処理を行なわせるものである。Javaインタプリタは、Javaバイトコードで記述されたプログラムをそのまま解釈して処理できることが大きな利点ではあるが、命令解釈のための時間を要するために処理速度が遅いという短所がある。
【0005】
Javaバイトコードで記述されたプログラムの実行速度を向上させる手法として、処理させる演算処理システムで直接実行可能な機械語であるネイティブコードにJavaバイトコードを予め翻訳(コンパイル)しておく手法があり、このためのツールをネイティブ・コンパイラという。Javaバイトコードのネイティブコード化によりプログラムの実行速度は格段に向上するが、Javaの大きな利点である異種のプラットホーム間での可搬性が損なわれるという問題があり、更に、プログラムの変更によりJavaバイトコードが更新される度に、演算処理システムのオペレータがネイティブコードへの翻訳作業をシステムに行なわせるように指示しなければならない煩わしさもある。
【0006】
Javaの有する利点である異種のプラットホーム間での可搬性を維持しつつ、Javaインタプリタの抱える処理速度の問題を改善するためにジャスト・イン・タイム・コンパイラ(以下、「JITコンパイラ」という)が提案されている。
【0007】
JITコンパイラは、Javaバイトコードを実行する際に、そのバイトコードで用いられている関数 (Javaにおけるメソッド)を単位としてネイティブコードに翻訳しながら演算処理システムに逐次実行させる。ここで、翻訳されたネイティブコードをメインメモリに保持しておくようにする。Javaバイトコードの翻訳を進めていくうちに、既にネイティブコードに翻訳されている関数が出現したときは、その関数についての再度の翻訳は行なわずに、メインメモリに保持されているネイティブコードをそのまま演算処理システムに直接実行させるようにして翻訳処理に要する処理時間を削減する。一般的にプログラム全体の実行速度を低下させる大きな影響を与えている関数は繰り返し呼び出されていることが多々あるので、この手法を用いることによりJavaバイトコードの実行速度を向上させることができる。
【0008】
また、JITコンパイラは、インタプリタによる解釈処理では困難なJavaバイトコードで記述されている命令の最適化も行なうので、この最適化によっても処理速度が高速化される。しかも、ネイティブ・コンパイラでは必要となる、演算処理システムに対するオペレータによる煩雑な操作はJITコンパイラでは不要である。
【0009】
なお、JITコンパイラは、Javaバイトコードの実行に使用するものが特に広く普及しているが、他のプログラミング言語で記述されたプログラムや、プログラムに対して構文解析や最適化の処理が施されて得られる中間言語で記述されているプログラム(本明細書では、これらのプログラムを総称して「原始プログラム」と称することとする)を、特定のプラットホームが直接解釈できるネイティブコードに翻訳しながらそのプラットホーム上で実行させるように構成することも可能である。
【0010】
【発明が解決しようとする課題】
前述したように、JITコンパイラは、Javaの有する大きな利点である異種のプラットホーム間での可搬性を維持しつつ実行速度の問題を改善することが可能であり、更にオペレータによる操作作業の負担がネイティブ・コンパイラよりも少ない利点を有している。しかしながら、原始プログラムの実行開始時にネイティブコードへの翻訳処理が必ず行なわれるため、JITコンパイラを用いて行なう原始プログラムの実行では、その原始プログラムに記述されている処理が実際に開始されるまでにある程度のタイムラグが生じてしまう問題を有していた。
【0011】
以上の問題を鑑み、JITコンパイラを用いて原始プログラムを実行させるときの実行開始時の性能を向上させることが本発明が解決しようとする課題である。
【0012】
【課題を解決するための手段】
図1は本発明の基本構成図である。本発明に係る装置であるプログラム実行装置10は、機械語を実行する実行手段16を有し、ジャスト・イン・タイム・コンパイラ方式により、原始プログラム1を実行手段16で直接実行可能な機械語に翻訳して実行する装置を前提とする。
【0013】
本発明の第一の態様の装置では、プログラム実行装置10に、原始プログラム1に記述される関数の翻訳であって実行手段16で実行可能な機械語を該関数ごとに記憶する、電源電圧が消失しても記憶内容が保持される記憶手段11と、原始プログラム1を実行手段16で実行可能な機械語に翻訳する翻訳手段12と、翻訳手段12により翻訳された機械語を記憶手段11に記憶させる記憶制御手段13と、原始プログラム1で用いられている関数の翻訳である機械語が記憶手段11に記憶されているか否かの判定を行なう判定手段14と、判定手段14による判定結果に応じて、翻訳手段12の翻訳する機械語、または記憶手段11に記憶されている機械語、のどちらかを実行手段16に直接実行させる実行制御手段15とを有するように構成することによって前述した課題を解決する。
【0014】
この構成においては、記憶手段11としては、例えばハードディスク装置やフラッシュEEPROM(一括消去型電気的消去及び書き込み可能読み出し専用半導体メモリ)などを用いることができる。
【0015】
上記の構成では、記憶手段11が原始プログラム1に記述される関数の翻訳である機械語を記憶する。原始プログラム1で用いられている関数の翻訳である機械語が記憶手段11に記憶されていると判定手段14が判定すれば、実行制御手段15は翻訳手段12によるその関数の翻訳を待たずに、記憶手段11に記憶されているその関数の機械語を直接実行させるように実行手段16を制御するので、プログラム実行装置10は前述したJITコンパイラに相当する動作が行なわれる。従って、上記の構成によれば、JITコンパイラの有する前述した利点をそのまま有している。
【0016】
しかも、上記の構成における記憶手段11は、電源電圧が消失してもその記憶内容が保持される。従って、例えばオペレータが一日の仕事を終えてプログラム実行装置10の電源を切り、その翌日に仕事を再開するような場合、前日までに同一の原始プログラム1を一度でも実行していれば、記憶手段11に記憶されている、原始プログラム1に記述されている関数の翻訳である機械語をその日の最初の実行から利用することができるので、プログラム実行装置10はプログラムの翻訳処理に起因する実行開始時のタイムラグを生じさせずに原始プログラム1を実行させることができる。
【0017】
なお、上述した構成において、記憶手段11には、原始プログラム1で用いられることのあり得る関数の翻訳である機械語が予め記憶されているように構成しても良い。この構成では、プログラム実行装置10上での原始プログラム1の初めての実行の際に原始プログラム1に記述されている関数の翻訳である機械語が既に記憶されている場合があり、このような場合には原始プログラム1に記述されている関数の翻訳である機械語を記憶手段11から得ることができるので、プログラムの翻訳処理に起因する実行開始時のタイムラグを短縮することができる。
【0018】
また、上述した構成において、記憶手段11の記憶内容を複写して記憶する半導体メモリを更に有し、実行制御手段15は、記憶手段11に記憶されている機械語を実行手段16に実行させる代わりに、その半導体メモリに記憶されている、記憶手段11に記憶されている記憶内容の複写である機械語を実行手段16に実行させるように構成しても良い。例えば記憶手段11としてハードディスク装置を用いている場合などでは、ハードディスク装置から機械語を読み出すよりも、そのハードディスク装置と同一の記憶内容が複写されている半導体メモリから機械語を読み出す方が、機械語の検索・読み出しが高速に行なえるので、プログラム装置10による原始プログラム1の翻訳・実行の処理時間を更に短縮することができる。
【0019】
また、本発明の第二の態様の装置では、プログラム実行装置10に、原始プログラム1に記述される関数の翻訳であって実行手段16で実行可能な機械語を該関数ごとに記憶し、原始プログラム1の実行終了後も記憶内容を保持する記憶手段11と、原始プログラム1を実行手段16で実行可能な機械語に翻訳する翻訳手段12と、翻訳手段12により翻訳された機械語を、翻訳手段12により翻訳される原始プログラム1が更新された日時に対応付けて、記憶手段11に記憶させる記憶制御手段13と、原始プログラム1の更新された日時と、記憶手段11に記憶されている前記機械語に対応付けられている更新日時とが一致するか否かを判定する判定手段14と、判定手段14による判定結果に応じて、翻訳手段12の翻訳する機械語、または記憶手段11に記憶されている機械語、のどちらかを実行手段16に直接実行させる実行制御手段15とを有するように構成することによって前述した課題を解決する。
【0020】
上記の構成は、原始プログラム1が格納されているプログラムファイルを読み込む読込手段を更に有し、記憶制御手段13は、原始プログラム1が格納されているプログラムファイルに示されている該プログラムファイルの更新日時を前記機械語に対応付ける原始プログラム1の更新された日時とみなして、記憶手段11に該機械語を記憶させ、判定手段14は、そのプログラムファイルに示されている該プログラムファイルの更新日時と、前記機械語に対応させて記憶手段11に記憶されている更新日時とが一致するか否かを判定するように構成してもよい。
【0021】
上記の構成では、前述した本発明の第一の態様の装置と同様に、JITコンパイラの有する利点をそのまま有している。
更に、上記の構成では、原始プログラム1の実行終了後も記憶内容を保持しているので、同一の原始プログラム1を再度実行させる場合には、実行制御手段15は翻訳手段12による原始プログラム1の翻訳を待たずに、記憶手段11に記憶されているその関数の機械語を実行手段16に直接実行させることにより、プログラムの翻訳処理に起因する実行開始時のタイムラグを生じさせずに原始プログラム1を実行させることができる。ただし、この場合、後に実行される原始プログラム1と先に実行されたものとが、原始プログラムのバージョンアップによる修正等により、同一でないことがあり得る。そこで、記憶制御手段13が、翻訳手段12により翻訳された機械語と、翻訳手段12により翻訳される原始プログラム1が更新された日時とを対応付けて記憶手段11に記憶させ、判定手段14が、原始プログラム1の更新された日時と、機械語に対応付けて記憶手段11に記憶されている更新日時とが一致するか否かを判定する。そしてこの判定の結果、両者が一致しないのであれば、原始プログラム1で用いられている関数の翻訳である機械語が記憶手段11に記憶されていても、実行制御手段15は翻訳手段12により新たに翻訳された機械語を実行手段16に実行させる。こうすることによって、原始プログラム1に変更が加えられても、その変更に応じて正しく原始プログラム1を実行させることができる。
【0022】
なお、上記の構成においては、記憶手段11として、ハードディスク装置やフラッシュEEPROMなどの、電源電圧が消失しても記憶内容が保持されるものに限らず、他の読み書き可能な記憶媒体を使用することもできる。
【0023】
なお、上述した本発明の第一または第二の態様の装置において、原始プログラム1は、Javaのバイト・コードで記述されていてもよい。この場合、原始プログラム1に記述される関数とはJavaにおけるメソッドに相当する。
【0024】
また、本発明に係るプログラム実行方法は、ジャスト・イン・タイム・コンパイラ方式により、原始プログラムを特定の演算処理システムのプラットホームで直接実行可能な機械語に翻訳して該機械語を実行させる方法を前提とする。
【0025】
そして、本発明の第一の態様のプログラム実行方法では、前記原始プログラムの翻訳である前記機械語を、該原始プログラムに記述されている関数ごとに、電源電圧が消失しても記憶内容が保持される記憶部に記憶させ、前記原始プログラムに記述されている関数の翻訳である前記機械語が前記記憶部に記憶されているか否かの判定を行ない、前記判定結果に応じて、前記原始プログラムを翻訳して得る機械語、または前記記憶部に記憶されている機械語、のどちらかを特定の演算処理システムのプラットホームで直接実行させることによって前述した課題を解決する。そして、このプログラム実行方法によっても前述した本発明の第一の態様の装置と同様な作用・効果を奏する。
【0026】
また、本発明の第二の態様のプログラム実行方法では、前記原始プログラムの翻訳である前記機械語を、該原始プログラムに記述されている関数ごとに、該機械語の翻訳前の原始プログラムが更新された日時に対応付けて記憶し、前記原始プログラムの更新された日時と、記憶されている前記機械語に対応付けられている更新日時とが一致するか否かの判定を行ない、前記判定結果に応じて、前記原始プログラムを翻訳して得る機械語、または記憶されている機械語、のどちらかを特定の演算処理システムのプラットホームで直接実行させることによって前述した課題を解決する。そして、このプログラム実行方法によっても前述した本発明の第二の態様の装置と同様な作用・効果を奏する。
【0027】
なお、上述した本発明の各構成により行なわれる機能と同様の制御をコンピュータに行なわせる制御プログラムをコンピュータに実行させることによって、あるいは、その制御プログラムを記録したコンピュータ読み取り可能な記録媒体から、その制御プログラムをコンピュータに読み取らせて実行させることによっても、前述した課題を解決することができ、この構成によっても前述したプログラム実行装置と同様な作用・効果を奏する。
【0028】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。なお、ここでは、Javaのバイトコードを翻訳して実行するプログラム実行装置において本発明を実施する例について説明する。
【0029】
図2は本発明を実施するプログラム実行装置の全体構成を示す図である。同図に示すように、このプログラム実行装置(以下、「本装置」という)20は、入力部21、CPU22、出力部23、I/F部24、半導体メモリ25、ハードディスク装置26を有し、バス27を介して相互に接続されている。
【0030】
入力部21は、キーボード装置や、マウス等のポインティングデバイスなどを有し、本装置のオペレータからの各種指示の入力を取得する。また、フロッピーディスクや光磁気ディスク、磁気テープなどの記録媒体からデータを読み出すためのデータ読み出し装置を有するようにしてもよい。
【0031】
CPU22は半導体メモリ25に記憶された制御プログラムに従って本装置20全体の動作を制御する中央演算処理装置であり、機械語を直接実行する。
出力部23は、ディスプレイ装置やプリンタなどを有し、本装置20で行なった処理の結果等をオペレータに提示するものである。
【0032】
I/F部24は、本装置20を他の装置やネットワークに接続するためのインターフェースのための処理を司るものである。
半導体メモリ25は、本装置20全体の制御処理をCPU22に行なわせるための制御プログラムを予め記憶しておいたり、ハードディスク装置26の記憶内容を複写して記憶したり、あるいはCPU22により実行される処理のためのワークエリアとして用いられるものであり、ROM(リード・オンリ・メモリ)25−1及びRAM(ランダム・アクセス・メモリ)25−2を有している。
【0033】
ハードディスク装置26は、本装置20へ供給される電源電圧が消失しても記憶内容が保持されるデータ記憶装置である。
次に図3について説明する。図3は、本装置20における翻訳・実行処理の全体の流れを図で示したものである。
【0034】
プログラムソースモジュール41は、本装置20に翻訳・実行を行なわせるソフトウェアモジュールであり、本実施の形態ではJavaのバイトコードによって記述されている。プログラムソースモジュール41は、前述した記録媒体に格納されているプログラムファイルとして提供されたものを入力部21のデータ読み取り装置で読み取ることにより、あるいは、他の装置やネットワークからプログラムファイルとして送付されたものをI/F部24が受け取ることにより、本装置20に取り込まれる。
【0035】
本装置20に入力されたプログラムソースモジュール41は、JITコンパイラ30により翻訳・実行される。JITコンパイラ30は、CPU22が本装置20全体の制御プログラムを実行することにより実現される。
【0036】
JITコンパイラ30によって行なわれる処理の内容を機能別に分けると、プログラムロード部31、高速化判定部32、コンパイル(翻訳)部33、ファイルロード部34、プログラム実行部35の各機能ブロックに大別される。
【0037】
プログラムロード部31は、本装置20に取り込まれたプログラムファイルからプログラムソースモジュール41を取り出して、RAM25−2におけるCPU22がワークメモリとして使用している領域(ワークエリア)に格納する。
【0038】
高速化判定部32は、プログラムソースモジュール41の構文分析を行ない、そこに記述されているメソッドの定義の翻訳に相当するネイティブコード(コンパイル済み格納モジュール43)が、ハードディスク装置26に記憶されているか否かを、後述する管理簿42を参照することにより判定する。本実施の形態では、管理簿42はハードディスク装置26に記憶されている。
【0039】
コンパイル部33は、上述したメソッドの定義の翻訳に相当するコンパイル済み格納モジュール43がハードディスク装置26に記憶されていないと高速化判定部32が判定したときに、そのメソッドの定義の翻訳を行ない、その結果得られたCPU22で直接実行可能なネイティブコードを、RAM25−2における前述したワークエリアにコンパイル済み実行モジュール44として格納すると共に、コンパイル済み格納モジュール43としてハードディスク装置26に記憶させる。更に、管理簿42におけるその記憶させたコンパイル済み格納モジュール43についての管理情報を更新する。
【0040】
ファイルロード部34は、上述したメソッドの定義の翻訳に相当するコンパイル済み格納モジュール43がハードディスク装置26に記憶されていると高速化判定部32が判定したときに、そのコンパイル済み格納モジュール43をハードディスク装置26からロードし(読み出し)、RAM25−2のワークエリアにコンパイル済み実行モジュール44として格納する。
【0041】
プログラム実行部35は、コンパイル部33もしくはファイルロード部34によってRAM25−2のワークエリアに格納されたコンパイル済み実行モジュール44をCPU22で直接実行する。
【0042】
JITコンパイラ30は、これらの高速化判定部32、コンパイル(翻訳)部33、ファイルロード部34、プログラム実行部35の各機能ブロックで示される処理を繰り返し実行することによって、プログラムソースモジュール41を実行させる。
【0043】
次に管理簿42について説明する。図4は管理簿42の一例を表として示す図である。管理簿42は、ハードディスク装置26に記憶されているコンパイル済み格納モジュール43についての管理情報が記録されるものである。
【0044】
図4に示す表において、左側の欄には、ハードディスク装置26に記憶させたコンパイル済み格納モジュール43に対応する、そのコンパイル済み格納モジュール43が翻訳である翻訳前のメソッド定義のメソッド名が記録される。そして、同図に示す表の右側の欄には、左側の欄のメソッド名に対応するメソッド定義が記述されていたプログラムソースモジュール41の更新日時が記録される。この更新日時には、本実施の形態では、プログラムソースモジュール41が格納されていたプログラムファイルの管理情報として示されている更新日時を用いる。高速化判定部32では、プログラムロード部31がRAM25−2のワークエリアに格納したプログラムソースモジュール41を分析する。そして、そこに記述されているメソッド定義のメソッド名が管理簿42に記録されており、且つそのプログラムソースモジュール41の更新日時が管理簿42のそのメソッド名に対応する更新日時と一致するか否かを判定する。この判定結果が真であれば、そのメソッドの定義の翻訳に相当するコンパイル済み格納モジュール43がハードディスク装置26に記憶されていると判定する。
【0045】
次に図5について説明する。図5は、ROM25−1に格納されている、本装置20全体の制御プログラムをCPU22が実行することにより行なわれる制御処理のうち、本発明に関係する、プログラムソースモジュール41の翻訳・実行を行なう処理であるJITコンパイル処理の第一の例の処理内容をフローチャートで示した図である。以下、同図に沿ってCPU22が行なうJITコンパイル処理について説明する。
【0046】
まず、CPU22は本装置20に取り込まれたプログラムファイルからプログラムソースモジュール41を取り出し、RAM25−2のワークエリアに格納する(S101)。この処理は図3におけるプログラムロード部31の機能に相当する。
【0047】
続いて、CPU22は、RAM25−2のワークエリアに格納されているプログラムソースモジュール41の構文分析を行ない、そこに記述されているメソッドの定義をひとつ抽出する(S102)。ここで、CPU22は管理簿42を参照し(S103)、抽出されたメソッド定義のメソッド名が管理簿42の記録内容に含まれているか否かを判定する(S104)。この判定処理の結果がYesならばS105に進み、NoならばS107に進む。
【0048】
抽出されたメソッド定義のメソッド名が管理簿42の記録内容に含まれているのであれば、CPU22は、プログラムソースモジュール41が格納されていたプログラムファイルの管理情報を調べ、プログラムソースモジュール41の更新日時を取得する(S105)。そして、このプログラムソースモジュール41の更新日時と、抽出されたメソッド定義のメソッド名の記録に対応付けられて管理簿42に記録されている更新日時とが一致するか否かを判定する(S106)。この判定処理の結果がYesならばS111に進み、NoならばS107に進む。
【0049】
以上のS102からS106にかけて示されている処理は図3における高速化判定部32の機能に相当する。
前述したS104またはS106のどちらかの判定処理でその結果がNoであったときには、CPU22は、S102に示した処理で抽出されたメソッド定義のコンパイルを実行し(S107)、その結果得られた、CPU22で直接実行可能なネイティブコードをRAM25−2のワークエリアにコンパイル済み実行モジュール44として格納し(S108)、更にそのネイティブコードをハードディスク装置26にコンパイル済み格納モジュール43として記憶させる(S109)。このネイティブコードの記憶は、プログラムソースモジュール41の翻訳・実行が終了し、CPU22がこの図5に示したJITコンパイル処理の実行を一旦終了してもハードディスク装置26に保持されている。
【0050】
その後、CPU22は管理簿42を更新し、前述したS102でコンパイルしたメソッド定義のメソッド名と、そのメソッド定義が記述されていたプログラムソースモジュール41を格納していたプログラムファイルの管理情報に示されている更新日時とを対応付けて記録し(S110)、その後はS112に進む。
【0051】
これらのS107からS110にかけて示されている処理は図3におけるコンパイル部33の機能に相当する。
一方、前述したS106の判定処理でその結果がYesであったときには、CPU22は、S102に示した処理で抽出されたメソッド定義の翻訳であるネイティブコードをハードディスク装置26から読み出し、読み出したそのネイティブコードをRAM25−2のワークエリアにコンパイル済み実行モジュール44として格納する(S111)。この処理は図3におけるファイルロード部34の機能に相当する。
【0052】
その後、CPU22はRAM25−2のワークエリアにコンパイル済み実行モジュール44として格納されているネイティブコードを直接実行する(S112)。この処理は図3におけるプログラム実行部35の機能に相当する。
【0053】
コンパイル済み実行モジュール44を実行した後には、CPU22は、RAM25−2のワークエリアに格納されているプログラムソースモジュール41の実行処理を終了したか否かを判定する(S113)。この判定処理の結果がYesならば今回のJITコンパイル処理を終了する。一方、この判定処理の結果がNoならばS102へ戻り、プログラムソースモジュール41に次の実行順として記述されているメソッド定義について上述した処理を繰り返す。
【0054】
以上までの処理が図5に示されているJITコンパイル処理である。
次に、本発明を実施するプログラム実行装置の第二の例について説明する。
この第二の例では、図2におけるハードディスク装置26に、プログラムソースモジュール41で記述されることがあり得るメソッド定義の翻訳であるネイティブコードを予め格納しておくようにするものである。こうすることにより、そのプログラムソースモジュール41のプログラム実行装置10上での初めての実行の際でも、プログラムソースモジュール41に記述されているメソッド定義の翻訳であるネイティブコードをハードディスク装置26から得ることのできる場合があるので、メソッドの翻訳処理に起因する実行開始時のタイムラグを短縮することができる。
【0055】
本発明を実施するプログラム実行装置の第二の例の全体構成は図2に示したものと同様であるが、図2に示す構成要素のうち、ハードディスク装置26の記憶内容が前述した第一の例と異なっている。図6は、本発明を実施するプログラム実行装置の第二の例におけるハードディスク装置の記憶内容を示す図であり、ハードディスク装置26には、第一の例と同様のコンパイル済み格納モジュール43が記憶されるのに加え、プログラムソースモジュール41で記述されることがあり得るメソッド定義の翻訳であるコンパイル済み標準モジュール51が予め記憶されている。このような、その翻訳であるネイティブコードがコンパイル済み標準モジュール51としてハードディスク装置26に記憶されるメソッド定義としては、例えば、Javaの標準のクラスライブラリであるjavaパッケージに含まれるクラスに属するメソッド定義などの、任意のJava実行系で使用できることが保証されているメソッド定義が適用可能である。
【0056】
次に図7について説明する。図7は本発明を実施するプログラム実行装置の第二の例における管理簿42の例を表で示したものであり、ハードディスク装置26の記憶内容が図6に示した内容である場合に対応するものである。図7を、前述した本発明の第一の実施例における管理簿42の記録内容を示した図4と比較すると分かるように、図7においては、コンパイル済み格納モジュール43についての管理情報が管理簿42に記録される他に、コンパイル済み標準モジュール51についての管理情報が管理簿に予め記録されている。コンパイル済み標準モジュール51についての管理情報としては、そのコンパイル済み標準モジュール51が翻訳である翻訳前のメソッド定義のメソッド名が管理簿42に記録されている。
【0057】
次に、本発明を実施するプログラム実行装置の第二の例におけるCPU22により実行されるJITコンパイル処理の処理内容について、図8に示すフローチャートを参照しながら説明する。
【0058】
まず、図8におけるS201からS204にかけて示されている処理は、図5にフローチャートで示したJITコンパイル処理の第一の例におけるS101からS104にかけて示した処理と全く同一のものであり、その説明は省略する。
【0059】
S205において、CPU22は、S202で抽出されたメソッド定義のメソッド名が管理簿42のコンパイル済み標準モジュール51についての管理情報として記録されているか否かを判定する。この判定処理の結果がYesならばS212に進み、NoならばS206に進む。
【0060】
図8におけるS205以降の、S206からS214にかけて示されている処理も、図5にフローチャートで示したJITコンパイル処理の第一の例におけるS105からS113にかけて示した処理と全く同一のものである。
【0061】
次に、本発明を実施するプログラム実行装置の第三の例について説明する。
この第三の例では、プログラム実行装置に電源を投入して起動させたときに、ハードディスク装置26の記憶内容をRAM25−2に複写して格納する。そして、CPU22によって行なわれるJITコンパイル処理では、ハードディスク装置26の記憶内容に基づいて翻訳・実行の処理を進めるのではなく、ハードディスク装置26の記憶内容の複写であるRAM25−2の格納データに従ってその処理を進める。一般的に、記憶内容の読み出しは半導体メモリからの方がハードディスク装置よりも高速に行なえるので、こうすることにより、プログラム装置10によるプログラムソースモジュール41の翻訳・実行の処理時間を更に短縮することができる。
【0062】
本発明を実施するプログラム実行装置の第三の例の全体構成は図2に第一の例として示したものと同様であるが、図9に示すように、RAM25−2の記憶領域に、CPU22による処理の実行のために一時的に使用されるワークエリア61の領域の他に、ハードディスク装置26の記憶内容が複写されて格納されるキャッシュエリア62の領域を設けるようにする。そして、このキャッシュエリア62の領域は、CPU22が後述するJITコンパイル処理の実行を終了してもその記憶内容をクリアせずに保持するようにし、次にJITコンパイル処理を改めて実行しても、その処理においてその記憶内容が利用できるようにする。
【0063】
また、管理簿42の記録内容も図4に示したものと同様のものでよい。但し、前述した第一の例では管理簿42はハードディスク装置26に記憶されていたが、この第三の例では、ハードディスク装置26の管理簿42についての記録内容もRAM25−2に複写され、CPU22はRAM25−2上の管理簿42を参照して処理を行なうものとする。
【0064】
本発明を実施するプログラム実行装置の第三の例における、装置全体の制御処理の処理内容を図10にフローチャートで示す。この処理は、本装置20に電源を投入するとその直後にCPU22により直ちに実行される処理である。
【0065】
本装置に電源が投入されると、まず、CPU22は初期化処理を実行する(S301)。初期化処理はCPU22自身の有する各種のレジスタを初期化したり、RAM25−2の初期化などを行なう処理である。
【0066】
続いて、CPU22はハードディスク装置26の記憶内容をRAM25−2のキャッシュエリア62に複写する(S302)。
その後、CPU22は、本装置20の入力部21、出力部23、I/F部24の制御等を含む各種の制御処理を実行し(S303)、その後にJITコンパイル処理を実行する(S304)。この処理を終えた後にはS303へ戻り、以降の処理が繰り返される。
【0067】
次に図11について説明する。図11は、図10にS304として示されているJITコンパイル処理の処理内容を示すフローチャートである。
まず、図11におけるS311からS319にかけて示されている処理は、図5にフローチャートで示したJITコンパイル処理の第一の例におけるS101からS109にかけて示した処理と同様のものである。但し、S313において、CPU22は、RAM25−2のキャッシュエリア62に格納されている、ハードディスク装置26の複写である管理簿42を参照する。
【0068】
S320において、S317でのコンパイルにより得られたネイティブコードをRAM25−2のキャッシュエリア62にも格納し、このネイティブコードをS319において記憶させたハードディスク装置26の記憶内容とキャッシュエリア62の記憶内容とを一致させる。
【0069】
その後、CPU22は、ハードディスク装置26及びキャッシュエリア62双方の管理簿42を同様に更新し、S312でコンパイルしたメソッド定義のメソッド名と、そのメソッド定義が記述されていたプログラムソースモジュール41を格納していたプログラムファイルの管理情報に示されている更新日時とを対応付けて記録し(S321)、その後はS323に進む。
【0070】
一方、S316の判定処理でその結果がYesであったときには、CPU22は、S312に示した処理で抽出されたメソッド定義の翻訳であるネイティブコードをRAM25−2のキャッシュエリア62から読み出し、読み出したそのネイティブコードをRAM25−2のワークエリアにコンパイル済み実行モジュール44として格納する(S322)。
【0071】
図11におけるS322以降の、S323及びS324に示されている処理は、図5にフローチャートで示したJITコンパイル処理の第一の例におけるS112及びS113に示した処理と全く同一のものであり、説明は省略する。
【0072】
なお、前述した第二の例、すなわちハードディスク装置26に、プログラムソースモジュール41で記述されることがあり得るメソッド定義の翻訳であるネイティブコードを予め格納しておくようにしたプログラム実行装置で、この第三の例のように、ハードディスク装置26の記憶内容をRAM25−2に複写してJITコンパイル処理を実行することも可能である。
【0073】
なお、上述した本発明の各実施形態において説明したJITコンパイル処理を汎用的なコンピュータで実施させることも可能である。そのためには、本発明の各実施形態において説明した、図5、図8、あるいは図11のJITコンパイル処理に相当する処理をコンピュータに行なわせる制御プログラムをそのコンピュータで読み取り可能な記録媒体(記憶媒体)に予め記憶させておき、その記録媒体から読み出したその制御プログラムを読み出させてそのコンピュータのメインメモリに一旦格納させた後に、そのコンピュータの有する中央処理装置に格納されたこのプログラムを読み出させて実行させるように構成すればよい。
【0074】
上述した制御プログラムを格納し、且つそれをコンピュータで読み取ることの可能な記録媒体の例を図12に示す。このような記録媒体としては、例えば、コンピュータ71の本体に内蔵若しくは外付けされる半導体メモリやハードディスク装置などのメモリ72、CD−ROM、DVD−ROM、MO(光磁気ディスク)、フロッピーディスクなどといった可搬型記憶媒体73、あるいはコンピュータ71と回線74で接続されていてコンピュータ71がプログラムをダウンロードすることの可能なプログラムサーバ75の記憶装置76などがあるが、これらのいずれであってもよい。
【0075】
【発明の効果】
以上詳細に説明したように、本発明は、ジャスト・イン・タイム・コンパイラ方式により、原始プログラムを特定の演算処理システムのプラットホームで直接実行可能な機械語に翻訳して該機械語を実行させるときに、前記原始プログラムの翻訳である前記機械語を、該原始プログラムに記述されている関数ごとに、電源電圧が消失しても記憶内容が保持される記憶部に記憶させ、前記原始プログラムに記述されている関数の翻訳である前記機械語が前記記憶部に記憶されているか否かの判定を行ない、前記判定結果に応じて、前記原始プログラムを翻訳して得る機械語、または前記記憶部に記憶されている機械語、のどちらかを特定の演算処理システムのプラットホームで直接実行させるように構成する。そして、この構成により、電源を切った後に同一の原始プログラムを再度実行させるような場合には、プログラムの翻訳処理に起因する実行開始時のタイムラグを生じさせずに原始プログラムを実行させることができる。
【0076】
あるいは、本発明は、ジャスト・イン・タイム・コンパイラ方式により、原始プログラムを特定の演算処理システムのプラットホームで直接実行可能な機械語に翻訳して該機械語を実行させるときに、前記原始プログラムの翻訳である前記機械語を、該原始プログラムに記述されている関数ごとに、該機械語の翻訳前の原始プログラムが更新された日時に対応付けて記憶し、前記原始プログラムの更新された日時と、記憶されている前記機械語に対応付けられている更新日時とが一致するか否かの判定を行ない、前記判定結果に応じて、前記原始プログラムを翻訳して得る機械語、または記憶されている機械語、のどちらかを特定の演算処理システムのプラットホームで直接実行させるように構成する。そして、この構成により、原始プログラムに変更が加えられても、プログラムの翻訳処理に起因する実行開始時のタイムラグを生じさせずに、且つ、その変更に応じて正しく原始プログラムを実行させることができる。
【0077】
以上のように、本発明のいずれの構成によっても、JITコンパイラを用いて原始プログラムを実行させるときの実行開始時の性能を向上させることができるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の基本構成図である。
【図2】本発明を実施するプログラム実行装置の全体構成を示す図である。
【図3】本発明を実施するプログラム実行装置における翻訳・実行処理の全体の流れを示した図である。
【図4】管理簿の一例を表で示した図である。
【図5】JITコンパイル処理の第一の例の処理内容をフローチャートで示した図である。
【図6】本発明を実施するプログラム実行装置の第二の例におけるハードディスク装置の記憶内容を示す図である。
【図7】プログラム実行装置の第二の例における管理簿の例を表で示した図である。
【図8】JITコンパイル処理の第二の例の処理内容をフローチャートで示した図である。
【図9】本発明を実施するプログラム実行装置の第三の例におけるRAMの記憶内容を示す図である。
【図10】本発明を実施するプログラム実行装置の第三の例における装置全体の制御処理の処理内容を示すフローチャートである。
【図11】図10におけるJITコンパイル処理の処理内容を示すフローチャートである。
【図12】記憶させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を示す図である。
【符号の説明】
1 原始プログラム
10、20 プログラム実行装置
11 記憶手段
12 翻訳手段
13 記憶制御手段
14 判定手段
15 実行制御手段
16 実行手段
21 入力部
22 CPU
23 出力部
24 I/F部
25 半導体メモリ
25−1 ROM
25−2 RAM
26 ハードディスク装置
27 バス
30 JITコンパイラ
31 プログラムロード部
32 高速化判定部
33 コンパイル部
34 ファイルロード部
35 プログラム実行部
41 プログラムソースモジュール
42 管理簿
43 コンパイル済み格納モジュール
44 コンパイル済み実行モジュール
51 コンパイル済み標準モジュール
61 ワークエリア
62 キャッシュエリア
71 コンピュータ
72 メモリ
73 可搬型記憶媒体
74 回線
75 プログラムサーバ
76 記憶装置[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a technique for executing a program written in a high-level programming language on an arithmetic processing system, and in particular, directly executing a source program on a specific arithmetic processing system platform by a just-in-time compiler method. The present invention relates to a technique for translating into a possible machine language and executing the machine language.
[0002]
[Prior art]
Many attempts have been made to run the same program on different computing system platforms. The programming language Java (Java is a registered trademark of Sun Microsystems, Inc.) is one of the answers. Java realizes platform independence and is excellent in portability between different platforms.
[0003]
Generally, the source code of a program written in Java is subjected to processing such as syntax analysis, converted into a binary file called bytecode, and distributed. The Java bytecode is a general-purpose instruction code that is independent of the platform of the arithmetic processing system, and is a code that is interpreted and executed by a Java execution system called a Java VM (virtual machine). By providing each computing processing system with an environment corresponding to Java VM, it is possible to execute the same Java bytecode on different computing systems.
[0004]
Hereinafter, a technique for executing a Java bytecode on the arithmetic processing system will be described.
The Java interpreter sequentially interprets (interprets) the Java byte code for each instruction, and causes the arithmetic processing system to perform processing corresponding to the instruction. The Java interpreter has a great advantage that it can interpret and process a program written in Java bytecode as it is, but it has a disadvantage in that the processing speed is slow because it takes time for instruction interpretation.
[0005]
As a technique for improving the execution speed of a program described in Java bytecode, there is a technique in which Java bytecode is pre-translated (compiled) into native code that is a machine language that can be directly executed by the processing system to be processed. A tool for this is called a native compiler. Although the execution speed of a program is remarkably improved by converting Java bytecode to native code, there is a problem that portability between different platforms, which is a great advantage of Java, is impaired, and further, the change of the program causes Java bytecode to be changed. Each time is updated, there is also the trouble that the operator of the arithmetic processing system must instruct the system to perform the translation work into the native code.
[0006]
A just-in-time compiler (hereinafter referred to as “JIT compiler”) has been proposed to improve the processing speed of the Java interpreter while maintaining portability between different platforms, which is an advantage of Java. Has been.
[0007]
When executing the Java bytecode, the JIT compiler causes the arithmetic processing system to sequentially execute the function (method in Java) used in the bytecode while translating it into native code. Here, the translated native code is stored in the main memory. If a function that has already been translated into native code appears while proceeding with the translation of the Java bytecode, the native code held in the main memory is left as it is without being translated again. The processing time required for translation processing is reduced by causing the arithmetic processing system to directly execute the processing. In general, a function that has a great influence on reducing the execution speed of the entire program is often called repeatedly, so that using this technique can improve the execution speed of Java bytecode.
[0008]
The JIT compiler also optimizes instructions written in Java bytecode, which is difficult to interpret with an interpreter, and this optimization also increases the processing speed. Moreover, the complicated operation by the operator for the arithmetic processing system, which is necessary for the native compiler, is not necessary for the JIT compiler.
[0009]
Note that JIT compilers that are used to execute Java bytecodes are particularly widespread, but programs written in other programming languages and programs that have been parsed and optimized are processed. The obtained program written in an intermediate language (in this specification, these programs will be collectively referred to as “source program”) is translated into native code that can be directly interpreted by a specific platform, and the platform It can also be configured to execute above.
[0010]
[Problems to be solved by the invention]
As described above, the JIT compiler can improve the problem of execution speed while maintaining portability between different platforms, which is a great advantage of Java, and the burden of operation work by the operator is native. • Has fewer advantages than the compiler. However, since the native code is always translated into the source program at the start of execution, the execution of the source program using the JIT compiler requires some processing until the processing described in the source program is actually started. There was a problem that the time lag would occur.
[0011]
In view of the above problems, it is an object of the present invention to improve the performance at the start of execution when a source program is executed using a JIT compiler.
[0012]
[Means for Solving the Problems]
FIG. 1 is a basic configuration diagram of the present invention. A
[0013]
In the apparatus according to the first aspect of the present invention, the
[0014]
In this configuration, for example, a hard disk device or a flash EEPROM (batch erase type electrical erasure and writable read-only semiconductor memory) can be used as the
[0015]
In the above configuration, the
[0016]
Moreover, the storage means 11 in the above configuration retains the stored contents even when the power supply voltage disappears. Therefore, for example, when the operator turns off the
[0017]
In the configuration described above, the
[0018]
Further, in the configuration described above, a semiconductor memory for copying and storing the storage contents of the
[0019]
In the apparatus according to the second aspect of the present invention, a machine language that is a translation of a function described in the
[0020]
The above configuration further includes a reading unit that reads a program file in which the
[0021]
The above configuration has the advantages of the JIT compiler as it is, as in the above-described apparatus according to the first aspect of the present invention.
Further, in the above configuration, the stored contents are retained even after the execution of the
[0022]
In the above-described configuration, the
[0023]
In the apparatus according to the first or second aspect of the present invention described above, the
[0024]
Further, the program execution method according to the present invention is a method of executing a machine language by translating a source program into a machine language that can be directly executed on a platform of a specific arithmetic processing system by a just-in-time compiler method. Assumption.
[0025]
In the program execution method according to the first aspect of the present invention, the machine language that is the translation of the source program is stored for each function described in the source program even if the power supply voltage is lost. Is stored in the storage unit, and it is determined whether or not the machine language, which is a translation of the function described in the source program, is stored in the storage unit, and according to the determination result, the source program The above-described problem is solved by causing a machine language obtained by translating the machine language or a machine language stored in the storage unit to be directly executed on a platform of a specific arithmetic processing system. This program execution method also provides the same operations and effects as those of the apparatus according to the first aspect of the present invention described above.
[0026]
In the program execution method according to the second aspect of the present invention, the machine program that is the translation of the source program is updated by the source program before the machine language translation for each function described in the source program. Stored in association with the stored date and time, and determines whether or not the updated date and time of the source program matches the stored update date and time associated with the machine language, and the determination result Accordingly, the machine problems obtained by translating the source program or the stored machine language are directly executed on the platform of a specific arithmetic processing system to solve the above-described problem. This program execution method also provides the same operations and effects as those of the apparatus according to the second aspect of the present invention described above.
[0027]
The control is performed by causing the computer to execute a control program that causes the computer to perform the same control as the function performed by each configuration of the present invention described above, or from a computer-readable recording medium that records the control program. By causing the computer to read and execute the program, the above-described problems can be solved, and this configuration also provides the same operations and effects as the above-described program execution device.
[0028]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings. Here, an example in which the present invention is implemented in a program execution apparatus that translates and executes Java bytecodes will be described.
[0029]
FIG. 2 is a diagram showing the overall configuration of a program execution device for implementing the present invention. As shown in the figure, the program execution device (hereinafter referred to as “this device”) 20 includes an
[0030]
The
[0031]
The
The output unit 23 includes a display device, a printer, and the like, and presents the results of processing performed by the
[0032]
The I /
The
[0033]
The
Next, FIG. 3 will be described. FIG. 3 is a diagram illustrating the overall flow of the translation / execution process in the
[0034]
The
[0035]
The
[0036]
The contents of processing performed by the
[0037]
The
[0038]
The
[0039]
When the
[0040]
When the
[0041]
The program execution unit 35 directly executes the compiled
[0042]
The
[0043]
Next, the
[0044]
In the table shown in FIG. 4, in the left column, a method name of a method definition before translation corresponding to the compiled
[0045]
Next, FIG. 5 will be described. FIG. 5 shows the translation / execution of the
[0046]
First, the
[0047]
Subsequently, the
[0048]
If the method name of the extracted method definition is included in the recorded contents of the
[0049]
The processing shown from S102 to S106 above corresponds to the function of the speed-up
When the result of the determination process in S104 or S106 is No, the
[0050]
Thereafter, the
[0051]
The processing shown from S107 to S110 corresponds to the function of the compiling unit 33 in FIG.
On the other hand, if the result of the determination process in S106 is Yes, the
[0052]
Thereafter, the
[0053]
After executing the compiled
[0054]
The above processing is the JIT compilation processing shown in FIG.
Next, a second example of a program execution device that implements the present invention will be described.
In this second example, a native code, which is a translation of a method definition that may be described by the
[0055]
The overall configuration of the second example of the program execution device for carrying out the present invention is the same as that shown in FIG. 2, but the storage contents of the
[0056]
Next, FIG. 7 will be described. FIG. 7 is a table showing an example of the
[0057]
Next, the processing content of the JIT compilation processing executed by the
[0058]
First, the processing shown from S201 to S204 in FIG. 8 is exactly the same as the processing shown from S101 to S104 in the first example of the JIT compilation processing shown in the flowchart of FIG. Omitted.
[0059]
In S <b> 205, the
[0060]
The processes shown from S206 to S214 after S205 in FIG. 8 are also exactly the same as the processes shown from S105 to S113 in the first example of the JIT compilation process shown in the flowchart of FIG.
[0061]
Next, a third example of the program execution device for carrying out the present invention will be described.
In this third example, when the program execution device is turned on and activated, the storage contents of the
[0062]
The overall configuration of the third example of the program execution apparatus for carrying out the present invention is the same as that shown in FIG. 2 as the first example. However, as shown in FIG. In addition to the
[0063]
The recorded contents of the
[0064]
FIG. 10 is a flowchart showing the contents of control processing of the entire apparatus in the third example of the program execution apparatus for implementing the present invention. This processing is immediately executed by the
[0065]
When the apparatus is turned on, first, the
[0066]
Subsequently, the
Thereafter, the
[0067]
Next, FIG. 11 will be described. FIG. 11 is a flowchart showing the contents of the JIT compilation process shown as S304 in FIG.
First, the processing shown from S311 to S319 in FIG. 11 is the same as the processing shown from S101 to S109 in the first example of the JIT compilation processing shown in the flowchart of FIG. However, in S313, the
[0068]
In S320, the native code obtained by the compilation in S317 is also stored in the
[0069]
Thereafter, the
[0070]
On the other hand, if the result of the determination process in S316 is Yes, the
[0071]
The processing shown in S323 and S324 after S322 in FIG. 11 is exactly the same as the processing shown in S112 and S113 in the first example of the JIT compilation processing shown in the flowchart in FIG. Is omitted.
[0072]
In the second example described above, that is, a program execution device in which a native code that is a translation of a method definition that may be described by the
[0073]
It should be noted that the JIT compilation process described in each embodiment of the present invention described above can be performed by a general-purpose computer. For this purpose, a computer-readable recording medium (storage medium) that causes a computer to perform processing equivalent to the JIT compilation processing of FIG. 5, FIG. 8, or FIG. 11 described in each embodiment of the present invention. ), The control program read from the recording medium is read out, temporarily stored in the main memory of the computer, and then the program stored in the central processing unit of the computer is read out. What is necessary is just to comprise so that it may be made to execute.
[0074]
FIG. 12 shows an example of a recording medium that stores the above-described control program and that can be read by a computer. As such a recording medium, for example, a memory 72 such as a semiconductor memory or a hard disk device incorporated in or attached to the main body of the computer 71, a CD-ROM, a DVD-ROM, an MO (magneto-optical disk), a floppy disk, etc. There is a
[0075]
【The invention's effect】
As described in detail above, the present invention uses a just-in-time compiler method to translate a source program into a machine language that can be directly executed on a platform of a specific arithmetic processing system and execute the machine language. The machine language, which is a translation of the source program, is stored for each function described in the source program in a storage unit that retains the stored contents even if the power supply voltage is lost, and is described in the source program. Whether or not the machine language that is a translation of the function being stored is stored in the storage unit, and depending on the determination result, the machine language obtained by translating the source program, or the storage unit One of the stored machine languages is directly executed on a platform of a specific processing system. With this configuration, when the same source program is executed again after the power is turned off, the source program can be executed without causing a time lag at the start of execution due to the program translation process. .
[0076]
Alternatively, according to the present invention, when a source program is translated into a machine language that can be directly executed on a platform of a specific arithmetic processing system by the just-in-time compiler method, the machine language is executed. For each function described in the source program, the machine language that is a translation is stored in association with the date and time when the source program before translation of the machine language was updated, and the date and time when the source program was updated A determination is made as to whether or not the update date and time associated with the stored machine language matches, and a machine language obtained by translating the source program according to the determination result, or stored One of the machine languages is directly executed on the platform of a specific arithmetic processing system. With this configuration, even if a change is made to the source program, the source program can be correctly executed in accordance with the change without causing a time lag at the start of execution due to the program translation process. .
[0077]
As described above, according to any of the configurations of the present invention, it is possible to improve the performance at the start of execution when the source program is executed using the JIT compiler.
[Brief description of the drawings]
FIG. 1 is a basic configuration diagram of the present invention.
FIG. 2 is a diagram showing an overall configuration of a program execution device for implementing the present invention.
FIG. 3 is a diagram showing an overall flow of translation / execution processing in the program execution apparatus for carrying out the present invention;
FIG. 4 is a table showing an example of a management list.
FIG. 5 is a flowchart showing the processing contents of a first example of JIT compilation processing.
FIG. 6 is a diagram showing storage contents of a hard disk device in a second example of a program execution device for carrying out the present invention.
FIG. 7 is a table showing an example of a management list in a second example of the program execution device.
FIG. 8 is a flowchart showing the processing contents of a second example of JIT compilation processing.
FIG. 9 is a diagram showing the contents stored in a RAM in a third example of the program execution device for carrying out the present invention.
FIG. 10 is a flowchart showing the contents of control processing of the entire apparatus in a third example of the program execution apparatus for carrying out the present invention.
11 is a flowchart showing the processing contents of the JIT compilation processing in FIG.
FIG. 12 is a diagram illustrating an example of a recording medium in which a stored control program can be read by a computer.
[Explanation of symbols]
1 Primitive program
10, 20 Program execution device
11 Storage means
12 Translation means
13 Memory control means
14 judgment means
15 Execution control means
16 Execution means
21 Input section
22 CPU
23 Output section
24 I / F section
25 Semiconductor memory
25-1 ROM
25-2 RAM
26 Hard disk devices
27 Bus
30 JIT compiler
31 Program load section
32 High-speed judgment unit
33 Compilation section
34 File loading section
35 Program execution part
41 Program source module
42 Management book
43 Compiled storage module
44 Compiled execution modules
51 Compiled standard modules
61 Work area
62 Cache Area
71 computer
72 memory
73 Portable storage media
74 lines
75 Program server
76 storage devices
Claims (6)
前記原始プログラムに記述される関数の翻訳であって前記実行手段で実行可能な機械語を該関数ごとに記憶し、該原始プログラムの実行終了後も記憶内容を保持する記憶手段と、
演算処理装置に所定の制御プログラムを実行させることによって、前記原始プログラムに記述されている関数を前記実行手段で実行可能な機械語に翻訳する翻訳手段と、
前記翻訳手段により翻訳された機械語を、該機械語の翻訳前の関数と該関数が記述されていた原始プログラムが更新された日時とに対応付けて、前記記憶手段に記憶させる記憶制御手段と、
前記原始プログラムで用いられている関数の翻訳である機械語が前記記憶手段に記憶されており、且つ、該原始プログラムの更新された日時と該記憶手段に記憶されている該機械語に対応付けられている更新日時とが一致するか否かの判定を、前記対応付けに基づいて該関数毎に行なう判定手段と、
前記判定手段による判定結果に応じて、前記翻訳手段の翻訳する機械語、または前記記憶手段に記憶されている機械語、のどちらかを前記関数の翻訳として選択し、選択された機械語を、前記原始プログラムで示されている該関数の実行順に即した順序で前記実行手段に直接実行させる実行制御手段と、
を有することを特徴とするプログラム実行装置。A program execution device having execution means for executing a machine language, which translates and executes a source program into a machine language that can be directly executed by the execution means by a just-in-time compiler method;
A storage unit that stores a machine language that is a translation of a function described in the source program and that can be executed by the execution unit for each function, and that retains the storage content even after the execution of the source program is completed;
Translation means for translating a function described in the source program into a machine language executable by the execution means by causing the arithmetic processing unit to execute a predetermined control program ;
Storage control means for storing the machine language translated by the translation means in the storage means in association with the function before translation of the machine language and the date and time when the source program in which the function was described was updated ,
Wherein and machine language is stored in the storage means is a translation function that is used in the source program, and, the correspondence to the machine language stored in the updated date and time and the storage means of the source program Determination means for determining whether or not the update date and time being matched matches each function based on the association ;
Depending on the determination result by the determination means, either the machine language to be translated by the translation means or the machine language stored in the storage means is selected as the translation of the function, and the selected machine language is Execution control means for causing the execution means to directly execute in an order corresponding to the execution order of the functions indicated in the source program ;
A program execution device characterized by comprising:
前記実行制御手段は、前記記憶手段に記憶されている機械語を前記実行手段に実行させる代わりに、前記半導体メモリに記憶されている、該記憶手段に記憶されている記憶内容の複写である機械語を該実行手段に実行させる、
ことを特徴とする請求項1に記載のプログラム実行装置。A semiconductor memory for copying and storing the storage contents of the storage means;
Instead of causing the execution means to execute the machine language stored in the storage means, the execution control means is a machine that is a copy of the storage content stored in the storage means and stored in the semiconductor memory. Causing the execution means to execute a word;
The program execution device according to claim 1.
前記記憶制御手段は、前記プログラムファイルに示されている該プログラムファイルの更新日時を前記機械語に対応付ける該原始プログラムの更新された日時とみなして、前記記憶手段に該機械語を記憶させ、
前記判定手段は、前記プログラムファイルに示されている該プログラムファイルの更新日時と、前記機械語に対応させて前記記憶手段に記憶されている更新日時とが一致するか否かを判定する、
ことを特徴とする請求項1に記載のプログラム実行装置。A reading means for reading a program file in which the source program is stored;
The storage control means regards the update date and time of the program file indicated in the program file as the updated date and time of the source program associated with the machine language, and stores the machine language in the storage means,
The determination means determines whether or not the update date and time of the program file indicated in the program file and the update date and time stored in the storage means corresponding to the machine language match.
The program execution device according to claim 1 .
演算処理装置に所定の制御プログラムを実行させることによって実現される翻訳手段が、前記原始プログラムに記述されている関数を前記演算処理装置で実行可能な機械語に翻訳し、
前記原始プログラムに記述される関数の翻訳であって前記演算処理装置で実行可能な機械語を該関数ごとに記憶し、該原始プログラムの実行終了後も記憶内容を保持する記憶手段に、記憶制御手段が、前記翻訳手段により翻訳された機械語を、該機械語の翻訳前の関数と該関数が記述されていた原始プログラムが更新された日時とに対応付けて記憶させ、
判定手段が、前記原始プログラムで用いられている関数の翻訳である機械語が前記記憶 手段に記憶されており、且つ、該原始プログラムの更新された日時と該記憶手段に記憶されている該機械語に対応付けられている更新日時とが一致するか否かの判定を、前記対応付けに基づいて該関数毎に行ない、
実行制御手段が、前記判定手段による判定結果に応じて、前記翻訳手段の翻訳する機械語、または前記記憶手段に記憶されている機械語、のどちらかを前記関数の翻訳として選択し、選択された機械語を、前記原始プログラムで示されている該関数の実行順に即した順序で前記演算処理装置に直接実行させる、
ことを特徴とするプログラム実行方法。A program execution method having an arithmetic processing unit for executing a machine language and translating a source program into a machine language that can be directly executed by the arithmetic processing unit by a just-in-time compiler method and executing the program on the arithmetic processing unit Because
Translation means realized by causing the arithmetic processing unit to execute a predetermined control program translates a function described in the source program into a machine language executable by the arithmetic processing unit,
A storage means for a machine language executed by the processing unit I Translation der of the function described in the source program stored in each said function, after execution of the raw starting programs for holding the stored contents, storage The control means stores the machine language translated by the translation means in association with the function before translation of the machine language and the date and time when the source program in which the function was described was updated ,
Judging means, wherein are machine language is stored in the storage means is a translation function that is used in the source program, and, the machine stored in the updated date and time and the storage means of the source program A determination as to whether or not the update date and time associated with the word matches is made for each function based on the association ,
The execution control means selects either the machine language translated by the translation means or the machine language stored in the storage means as the translation of the function according to the determination result by the determination means, and is selected. The machine language is directly executed by the arithmetic processing unit in an order corresponding to the execution order of the functions indicated in the source program .
A program execution method characterized by the above.
前記原始プログラムに記述される関数の翻訳であって前記演算処理装置で実行可能な機械語を該関数ごとに記憶し、該原始プログラムの実行終了後も記憶内容を保持する記憶手段、
演算処理装置に所定の制御プログラムを実行させることによって、前記原始プログラムに記述されている関数を前記演算処理装置で実行可能な機械語に翻訳する翻訳手段、
前記翻訳手段により翻訳された機械語を、該機械語の翻訳前の関数と該関数が記述されていた原始プログラムが更新された日時とに対応付けて、前記記憶手段に記憶させる記憶制御手段、
前記原始プログラムで用いられている関数の翻訳である機械語が前記記憶手段に記憶されており、且つ、該原始プログラムの更新された日時と該記憶手段に記憶されている該機械語に対応付けられている更新日時とが一致するか否かの判定を、前記対応付けに基づいて該関数毎に行なう判定手段、及び
前記判定手段による判定結果に応じて、前記翻訳手段の翻訳する機械語、または前記記憶手段に記憶されている機械語、のどちらかを前記関数の翻訳として選択し、選択された機械語を、前記原始プログラムで示されている該関数の実行順に即した順序で前記演算処理装置に直接実行させる実行制御手段、
としてコンピュータを機能させるためのプログラム。 An arithmetic processing unit for executing machine language, the just-in-time compiler system, causes the computer to function as a program execution device that executes translate source program directly executable machine language by the processing unit A program for
Storage means for said machine language executed by the processing unit I Translation der of the function described in the source program stored in each said function, after the end run of the raw starting programs for holding the stored contents,
A translation means for translating a function described in the source program into a machine language executable by the arithmetic processing device by causing the arithmetic processing device to execute a predetermined control program;
The machine language translated by the translation means, in association with the date and time source program functions and the function number before the machine translation has been described has been updated, the storage control means for storing in said memory means,
Wherein and machine language is stored in the storage means is a translation function that is used in the source program, and, the correspondence to the machine language stored in the updated date and time and the storage means of the source program A determination unit that determines whether or not the update date and time being matched matches each function based on the association , and a machine language that the translation unit translates according to a determination result by the determination unit , Or the machine language stored in the storage means is selected as the translation of the function, and the selected machine language is selected in the order corresponding to the execution order of the function indicated in the source program. Execution control means for causing the processing apparatus to execute directly ,
As a program to make the computer function .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001010875A JP3889227B2 (en) | 2000-01-21 | 2001-01-18 | Program execution device, program execution method, recording medium, and control program |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000012599 | 2000-01-21 | ||
JP2000-12599 | 2000-01-21 | ||
JP2001010875A JP3889227B2 (en) | 2000-01-21 | 2001-01-18 | Program execution device, program execution method, recording medium, and control program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001273151A JP2001273151A (en) | 2001-10-05 |
JP3889227B2 true JP3889227B2 (en) | 2007-03-07 |
Family
ID=26583909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001010875A Expired - Fee Related JP3889227B2 (en) | 2000-01-21 | 2001-01-18 | Program execution device, program execution method, recording medium, and control program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3889227B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003107186A1 (en) * | 2002-06-18 | 2003-12-24 | 松下電器産業株式会社 | Program execution terminal device, program execution method, and program |
US20060174235A1 (en) * | 2003-02-18 | 2006-08-03 | Tomihisa Kamada | Native compile method, native compile preprocessing method, computer program, and server |
-
2001
- 2001-01-18 JP JP2001010875A patent/JP3889227B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001273151A (en) | 2001-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5230049A (en) | Program source code translator | |
US6907519B2 (en) | Systems and methods for integrating emulated and native code | |
US5481708A (en) | System and methods for optimizing object-oriented compilations | |
KR100503077B1 (en) | A java execution device and a java execution method | |
JP2004280795A (en) | Extreme pipeline and optimization/rearrangement technique | |
US7124407B1 (en) | Method and apparatus for caching native code in a virtual machine interpreter | |
EP1049011A2 (en) | Method and apparatus for handling exceptions as normal control flow | |
US20030033593A1 (en) | Dynamic execution layer interface for explicitly or transparently executing application or system binaries | |
US7581216B2 (en) | Preserving platform independence with native accelerators for performance critical program objects | |
US20030192035A1 (en) | Systems and methods for implementing efficient execution transfers between successive translations of stack-based program code in a virtual machine environment | |
US7739674B2 (en) | Method and apparatus for selectively optimizing interpreted language code | |
US20240231864A9 (en) | Hybrid just in time load module compiler with performance optimizations | |
US20030110478A1 (en) | Portable run-time code synthesis in a caching dynamic translator | |
US20010042241A1 (en) | Apparatus and method for executing program using just-in time-compiler system | |
US6128590A (en) | Method for the migration of hardware-proximate, subprogram-independent programs with portable and non-portable program parts | |
US5150474A (en) | Method for transferring arguments between object programs by switching address modes according to mode identifying flag | |
JPH06309204A (en) | Method and device for data processing | |
JP3889227B2 (en) | Program execution device, program execution method, recording medium, and control program | |
WO2002097552A2 (en) | Method for fast compilation of preverified java bytecode to high quality native machine code | |
US20080077912A1 (en) | Software development methods, systems, and storage media storing software developed thereby | |
JPH11212807A (en) | Program execution method | |
JP3424596B2 (en) | Method and apparatus for caching symbol reference information | |
EP1033651B1 (en) | Instruction translation method | |
CN116931947A (en) | Method for optimizing wasm byte code, execution method, computer equipment and storage medium | |
CN118585289A (en) | Intelligent contract execution method of Ethernet virtual machine based on register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061025 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061128 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061129 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091208 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101208 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121208 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121208 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131208 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |