(57)【要約】【課題】最適化に必要な情報を静的及び動的に収集して、最適化手段を備えたインタプリタ（ＪＩＴ方式）と、ハードウェアによる直接実行方式（ＨＡＥ方式）との長所だけを取り入れると共に個別のアプリケーションの特徴的な処理（割り込み処理手続き等）にも考慮することにより、実行速度を向上させたインタプリタを提供すること。【解決手段】ＨＡＥ方式による実行を基本とし、プログラム構造等を分析してＪＩＴ方式で効果の大きいメソッドを選択して実行させる。また実行時に割込み要因等の発生頻度を記録し、インタプリタで実行した方が良いものをフィードバックして選択し直す。さらに省電力要求をパラメタとしてユーザに入力してもらい、その度合いに応じてＨＡＥで実行するメソッドを調整する。実行時に最適化情報をフィードバックし、実行形態が最適状態に達したら、フィードバック系を切り離す。【選択図】図７
2007141153.tif 000002
【特許請求の範囲】
【請求項１】
高級言語又は中間言語で記述されたプログラムを、部分的に順次取り込んで、前記取り込まれたプログラム部分を機械語の並びに変換しながら実行させる逐次的実行手段を備えると共に、前記プログラムの処理を、前記言語の一部を直接的に実行できるハードウェア機構を備えたコンピュータによって実行させるインタプリタであって、
前記取り込まれたプログラム部分を、実行速度の面で最適化された機械語の並びに変換することができる最適化手段と、
前記プログラム部分の実行系として、前記逐次的実行手段、または前記最適化手段を介した前記逐次的実行手段、若しくは前記ハードウェア機構、のいずれか１つを選択する実行系選択手段と、
前記取り込まれたプログラム部分を、前記実行系選択手段により選択された実行系により実行する実行手段と、
を備えたことを特徴とするインタプリタ。
【請求項２】
前記部分的に取り込まれたプログラム部分に、前記ハードウェア機構によって実行できない命令が所定数よりも多く含まれているか否かを判定する適用除外判定手段と、
前記適用除外判定手段により、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多く含むと判定された場合は、当該プログラム部分を前記逐次的実行手段によって実行させる第１の実行手段と、
前記適用除外判定手段により、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多くは含まないと判定された場合は、当該プログラム部分を前記ハードウェア機構によって実行させる第２の実行手段と、
前記実行後に、前記部分的に取り込まれたプログラム部分に対する前記最適化手段による最適化によって、所定基準を超える効果が得られたかどうかを判定する最適化判定手段と、
前記最適化判定手段により、前記最適化手段による最適化によって所定基準を超える効果が得られたと判定された前記プログラム部分については、次回以降の実行時に前記プログラム部分を前記最適化手段を介した前記逐次的実行手段によって実行させる第３の実行手段とを備えたことを特徴とする請求項１に記載のインタプリタ。
【請求項３】
前記プログラム部分の実行回数が所定回数に達した時点で、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものであるか否かを検証する適用除外検証手段と、
前記適用除外検証手段により、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものである場合には、前記所定回数を超える実行時に前記プログラム部分を前記逐次的実行手段によって実行させる第４の実行手段とを、さらに備えたことを特徴とする請求項１または２に記載のインタプリタ。
【請求項４】
前記所定回数を超える実行に際しては、前記システムから、前記適用除外判定手段、前記最適化判定手段、及び前記適用除外検証手段による処理を省略して実行することを特徴とする請求項１から３のいずれか１項に記載のインタプリタ。
【請求項５】
前記最適化手段により、前記最適化の効果が検証されるプログラム部分は、内部のループの回数が所定数以上である部分、または所定深さを超えるネスト構造を含んでいる部分であることを特徴とする請求項２から４のいずれか１項に記載のインタプリタ。
【請求項６】
前記最適化判定手段は、ユーザが予め設定した省電力の程度を参照し、前記省電力の程度に応じて、前記最適化手段による最適化の効果の見積もりを補正することを特徴とする請求項１から５のいずれか１項に記載のインタプリタ。
【請求項７】
高級言語又は中間言語で記述されたプログラムの一部を直接的に実行できるハードウェア機構を備えたコンピュータにおいて、前記プログラムを部分的に順次取り込んで、前記取り込まれたプログラム部分を機械語の並びに変換しながら実行させる逐次的実行手段を備えるインタプリタの動作方法であって、
前記取り込まれたプログラム部分を、実行速度の面で最適化された機械語の並びに変換することができる最適化ステップと、
前記プログラム部分の実行系として、前記逐次的実行ステップ、または前記最適化ステップを介した前記逐次的実行ステップ、若しくは前記ハードウェア機構、のいずれか１つを選択する実行系選択ステップと、
前記取り込まれたプログラム部分を、前記実行系選択ステップにより選択された実行系により実行させる実行ステップと、
を有することを特徴とするインタプリタの動作方法。
【請求項８】
前記部分的に取り込まれたプログラム部分に、前記ハードウェア機構によって実行できない命令が所定数よりも多く含まれているか否かを判定し、
前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多く含むと判定された場合は、当該プログラム部分を前記逐次的実行手段によって実行させ、
前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多くは含まないと判定された場合は、当該プログラム部分を前記ハードウェア機構によって実行させ、
前記実行後に、前記部分的に取り込まれたプログラム部分に対する前記最適化ステップにおける最適化によって、所定基準を超える効果が得られたかどうかを判定し、
前記最適化ステップにおける最適化によって所定基準を超える効果が得られたと判定された前記プログラム部分については、次回以降の実行時に前記プログラム部分を前記最適化ステップを介した前記逐次的実行手段によって実行させることを特徴とする請求項７に記載のインタプリタの動作方法。
【請求項９】
前記プログラム部分の実行回数が所定回数に達した時点で、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものであるか否かを検証し、
前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものである場合には、前記所定回数を超える実行時に前記プログラム部分を前記逐次的実行手段によって実行させることを特徴とする請求項７または８に記載のインタプリタの動作方法。
【請求項１０】
前記所定回数を超える実行に際しては、前記適用除外判定ステップ、前記最適化判定ステップ、及び前記適用除外検証ステップによる処理を省略して実行することを特徴とする請求項７から９のいずれか１項に記載のインタプリタの動作方法。
【請求項１１】
前記最適化ステップにおいて、前記最適化の効果が検証されるプログラム部分は、内部のループの回数が所定数以上である部分、または所定深さを超えるネスト構造を含んでいる部分であることを特徴とする請求項７から１０のいずれか１項に記載のインタプリタの動作方法。
【請求項１２】
前記最適化判定ステップでは、ユーザが予め設定した省電力の程度を参照し、前記省電力の程度に応じて、前記最適化手段による最適化の効果の見積もりを補正することを特徴とする請求項８から１１のいずれか１項に記載のインタプリタの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムや中間言語で記述されたプログラムを解釈して実行するインタプリタに関し、特に、ソースプログラム用言語や中間言語を逐次最適化されたオブジェクトプログラム用言語に解釈して実行する方式と、コンピュータのハードウェア側に備えられた直接実行機構を利用してプログラムを実行する方式とを併用した最適化手法により、インタプリタの実行速度を向上する技術に関するものである。
【背景技術】
【０００２】
以下において、ソースプログラム用言語と機械語との中間に位置するインタプリタで解釈可能な中間言語のことを「ＩＲ」（Internal Representative）という。
ソースプログラム用言語（高級言語）やＩＲの列からなるコンピュータプログラムの実行に際して、このソースプログラム用言語やＩＲを、逐次、最適化されたオブジェクトプログラム用言語（機械語等）に翻訳して実行する方式のことを「ＪＩＴ」（Just In Time Compiler）という。
一方で、ソースプログラム用言語やＩＲによるプログラムを直接的に実行するコンピュータ内蔵のハードウェア機構のことを「ＨＡＥ」（Hardware Accelerate Execution）という。
【０００３】
従来、インタプリタを使用するプログラマーが、コンピュータプログラムを作成する時には、インタプリタ用言語（より具体的には、ソースプログラム用言語や、該言語と機械語との中間に位置するＩＲ）の列（並び）として書き下ろす。インタプリタは、このインタプリタ用言語を逐次解釈して実行する（逐次、機械語に通訳して実行する）。即ち、本来、インタプリタ系は、ソースプログラム用の言語自体、若しくは、この言語が機械語に変換される一歩手前のＩＲを、逐次解釈しながら実行するように構成されている。
【０００４】
しかしながら、インタプリタ系を、通常のコンパイラ言語をコンパイル（翻訳）して実行するコンパイラ系と比較すると、インタプリタ系には、実時間での実行が可能である等のインタプリタ系に特有の利点が多々備わってはいるものの、多くのデメリットも有している。これらデメリットの最たるものは、逐次解釈（通訳）する方式の宿命として、実行速度が遅いことである。
【０００５】
そこで、実時間での実行が可能というインタプリタ系の有利さを残した上で、しかも、その実行速度の高速化を図るために、前述のＪＩＴ方式と、前述のＨＡＥを内蔵したインタプリタの方式（以下、「ＨＡＥ方式」と略称する）の２つの方式が開発され、今日まで、両方式は、それぞれに発展してきている。
【０００６】
しかしながら、これらの方式には、やはりそれぞれ一長一短があり、満足できるシステムとは成っていなかった。以下、ＪＩＴ方式とＨＡＥ方式について、その一般的なメリットとデメリットとを纏める。
【０００７】
まず、前述のＪＩＴ方式のメリットとして、高い頻度で実行されるループや、繰り返し処理が存在する処理ステップに対して非常に大きな効果があることが挙げられる。
【０００８】
しかしながら、ＪＩＴ方式のデメリットとして、実行時に通訳（コンパイラの翻訳に相当）してマイコン等のコンピュータが実行可能なオブジェクトプログラムに変換する処理ステップが存在するため、通訳のための処理時間が実時間で必要となる。このため、特に、実行プログラムの開始直後は、未通訳の実行ステップが多数存在するために、実行速度が遅くなる。
【０００９】
また、ソースプログラムを格納するためのメモリに加えて、変換されたオブジェクトプログラム（一般には機械語形式の実行プログラム）を格納するためのメモリも余計に必要になる。一般に、このオブジェクトプログラムの大きさは、高速性能を引き出すためにインタプリタが用意している手段（以下、「最適化手段」と呼称する）が高度になればなる程、また、この最適化手段の対象となるプログラム部分が多ければ多い程、大きくなる傾向がある。
【００１０】
さらに、最低限の最適化手段を実施する場合であっても、より効果的な最適化を行って速度性能を向上しようとすると、インタプリタ用言語で書かれたプログラムにおいて、最適化手段の対象が偏在している部分（即ち、最適化手段の対象となる一連の階層的な処理手続きが集中的に多数存在し、かつ、この処理手続きが反復して実行される回数も多い部分であり、以下、「Hotspot」と呼称する）を見つけ出す必要があり、このHotspotの発見と確定のためにも、プログラムの実行時に、或る程度の処理時間を要することになる。
【００１１】
一方、前述のＨＡＥ方式のメリットとしては、ＪＩＴ方式と比較して、一般には消費電力が少なくて済むことが知られている。また、初期投資（即ちＪＩＴ方式を実現するための通訳処理の実行）が不要であることから、プログラムの実行開始直後から、平均的に高い実行速度が得られることが期待できる。さらに、ソースプログラムやＩＲだけで直接的に実行することが可能であり、よって、ＪＩＴ方式の場合のようなオブジェクトプログラムが不要となるので、オブジェクトプログラムを格納するためのメモリ量も不要となる。
【００１２】
しかしながら、ＨＡＥ方式のデメリットとしては、マイコン等のコンピュータのハードウェアに追加の機構が必要になり、その分だけ設備コストが掛かる。よって、通常は、ソースプログラム用言語やＩＲの全部が直接的に実行されるものではなく、その一部が直接的に実行される段階に留まっている。
【００１３】
ソースプログラムやＩＲをミクロ単位に見た場合（より具体的には命令単位で見た場合）のピーク性能としてはＪＩＴ方式を上回ることができるが、ＨＡＥ方式では、グローバルな最適化も可能なＪＩＴ方式とは違って、プログラムステップの一連の流れを最適化の対象とすることができていないので、特に、プログラム全体の実行速度性能を左右する高負荷プログラム部分についてはＪＩＴ方式の方が勝っている。また、ソフト的な処理が途中で入ると、ハードウェア機構による実行を停止させて、ソフトウェア（即ちインタプリタのプログラム）による実行に戻す必要がある。このようなソフト的な処理とは、例えばガーベージコレクション（ＧＣ）、割り込み処理、例外処理等が挙げられる。
【００１４】
なお、従来のインタプリタに関して、特許文献１には、デバッグ情報の生成に伴う速度性能の低下とメモリ消費量の増大とを最小限に抑えながら、ユーザがデバッグ情報を効果的に取得できる方法及び装置が開示されている。
【００１５】
【特許文献１】特開２００４−５４８０７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上記背景技術で述べた従来のインタプリタにあっては、例えば、ＪＩＴ方式によるインタプリタ（一般には最適化処理を備えている）の場合、ソースプログラムまたはＩＲの全体をオブジェクトプログラムに変換しようとすると、非現実的なメモリ空間と通訳処理の能力が必要になり、かつ性能面への効果も期待した程は上がらないので、この点を向上して、前述のHotspotだけに絞って最適化手段を適用しようとすると、今度は、このHotspotを見つけ出すことに多大の処理時間を要してしまうという問題点があった。
【００１７】
ともかく、前述のHotspotを見つけ出すことさえできれば、インタプリタは、それが最小限の通訳対象であっても最大の効果を発揮することができる。しかしながら、このHotspotを見つけ出すためには、インタプリタのプログラムは、まずＪＩＴ方式の効果が有りそうなプログラム構造を静的に見つけ出し、次に、或る程度プログラムを動かした結果を見て、動的にそれを確定する手段しか持っていない。つまり、ＪＩＴ方式の効果が有りそうなソースプログラム構造を有する或る処理手続きが、頻繁に呼び出される処理手続きであることが静的に確認できれば、この処理手続きを、一応は最適化手段が適用されるべきHotspotの候補であるとみなすことが可能となり、さらに、この処理手続きの動作頻度の高さが実行時に検証されれば、この処理手続きを最適化手段が適用されるべきHotspotの有力候補であると確定してよいことになる。例えば、幾重にも階層的に重なっているループ構造のループ回数が、動的にしか分からないものであり、或る程度プログラムを動かした結果として、このループ構造の実行が、十分多くの回数で繰り返されることが分かる場合がある。
【００１８】
さて、このようにして見つかった最適化手段が適用されるべきHotspotの候補には、インタプリタの最適化手段が適用されてオブジェクト化され、次回の実行からは当該オブジェクトが実行されることになって、実行速度の高速化が実現する。しかしながら、最適化手段を適用して、速度性能を向上させたオブジェクトプログラムで実行させるには、当然ながら、一連の処理手続きが最適化手段が適用されるべきHotspotの候補であるか否かを判断するための処理時間が必要となり、即ち、本来のプログラム動作とは関係のない余分な評価判断等の処理をしなければならなくなるので、この点も、従来のインタプリタの問題点であった。
【００１９】
さらに、上記で明らかなように、前記判断により、最適化手段の適用対象であるHotspotの候補として確定されなかった処理手続き（例えば、階層構造が複雑でない処理手続き）については、実際にはある程度の実行頻度を有していたとしても、メモリ空間の効率的な使用のために、最適化手段が適用されることはなく、このような部分については、性能の出ないオブジェクトプログラムとして実行されることになる。
【００２０】
一方、ＨＡＥ方式については、その技術がハードウェア設計に関わるものであるので、一概には述べることができないが、一般的には、前述のとおりのデメリットを有していた。つまり、ハードウェアの設備コストが余分に掛かることはもとより、その速度性能についても、処理手続きが複雑な階層構造を有し、かつ該処理手続きの反復処理回数（ループ回数）が多い場合などは、最適化手段を備えたＪＩＴ方式のインタプリタの速度性能を上回ることはできていない。さらに、タスクの実行中に、ソフトウェア側での処理が必要な途中割り込み等が発生すると、当然のことながらハードウェア機構だけでは実行を継続することができなくなるので、ハードウェア側によるタスクの継続実行を一旦停止して、ソフト側に制御の流れを委ねなければならなくなる。
【００２１】
なお、使用していないオブジェクトプログラムやデータによって占められているメモリ領域を再利用するために回収する処理（即ち、ガーベージコレクション）を実行するには、全スレッドを止めなければならず、これについてはソフトウェア側またはハードウェア側のいずれでタスクを実行している場合であっても例外ではない。しかしながら、ハードウェア側で実行している場合は、ハードウェア側には、ことさらＨＡＥの実行開始／停止命令があるため、停止のための処理コストがソフトウェア側で実行している場合よりも多く要してしまう。このため、実行中に高頻度でガーベージコレクションが発生する傾向が有る処理手続きを実行する場合には、ソフトウェア側での実行（即ちＪＩＴ方式ないしは最適化手段を有しない一般的なインタプリタによる実行）に任せた方が良い場合があり得る。
【００２２】
また、外部からの割り込みが発生した場合には、タスクに振り向けた制御の流れを奪って、割り込み処理ルーチンに制御の流れを移さなければならない場合がある。
【００２３】
さらに、ＨＡＥ方式では、一般に、任意のタスクを高速に動作させることができるが、今、或るタスクが、高頻度で割り込みを発生させるような性質の処理手続きを有するタスクである場合は、やはり、前記と同様に、このタスク全体ないしは前記処理手続きの実行をソフトウェア側に任せたほうが良い場合がある。従来のＨＡＥ方式のインタプリタによってプログラムが実行される場合には、この辺りの判断がうまくフィードバックされていなかった。
【００２４】
本発明は、上記従来の問題点に鑑みてなされたものであって、最適化に必要な情報を静的及び動的に収集することにより、最適化手段を備えたインタプリタ（ＪＩＴ方式）と、ハードウェアによる直接実行方式（ＨＡＥ方式）との長所だけを取り入れると共に、個別のアプリケーションの特徴的な処理（割り込み処理手続き等）にも考慮することにより、実行速度を向上させることができるインタプリタを提供することを目的としている。
【００２５】
本発明の他の目的は、最適化に必要な情報を静的及び動的に収集することにより、最適化手段を備えたインタプリタ（ＪＩＴ方式）と、ハードウェアによる直接実行方式（ＨＡＥ方式）との長所だけを取り入れると共に、個別のアプリケーションの特徴的な処理（割り込み処理手続き等）にも考慮することにより、実行速度を向上させることができるインタプリタの実行速度向上技術を提供することにある。
【課題を解決するための手段】
【００２６】
本発明は、上記した従来のインタプリタの課題に鑑みてなされたものであり、高級言語又は中間言語で記述されたプログラムを、部分的に順次取り込んで、前記取り込まれたプログラム部分を機械語の並びに変換しながら実行させる逐次的実行手段を備えると共に、前記プログラムの処理を、前記言語の一部を直接的に実行できるハードウェア機構が追加されたコンピュータによって実行させるインタプリタであって、前記取り込まれたプログラム部分を、実行速度の面で最適化された機械語の並びに変換することができる最適化手段と、前記プログラム部分の実行系として、前記逐次的実行手段、または前記最適化手段を介した前記逐次的実行手段、若しくは前記ハードウェア機構、のいずれか１つを選択する実行系選択手段と、前記取り込まれたプログラム部分を、前記実行系選択手段により選択された実行系により実行する実行手段と、を備えたことを特徴とするインタプリタを提供するものである。
【００２７】
また、前記インタプリタは、前記部分的に取り込まれたプログラム部分に、前記ハードウェア機構によって実行できない命令が所定数よりも多く含まれているか否かを判定する適用除外判定手段と、前記適用除外判定手段により、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多く含むと判定された場合は、当該プログラム部分を前記逐次的実行手段によって実行させる第１の実行手段と、前記適用除外判定手段により、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多くは含まないと判定された場合は、当該プログラム部分を前記ハードウェア機構によって実行させる第２の実行手段と、前記実行後に、前記部分的に取り込まれたプログラム部分に対する前記最適化手段による最適化によって、所定基準を超える効果が得られたかどうかを判定する最適化判定手段と、前記最適化判定手段により、前記最適化手段による最適化によって所定基準を超える効果が得られたと判定された前記プログラム部分については、次回以降の実行時に前記プログラム部分を前記最適化手段を介した前記逐次的実行手段によって実行させる第３の実行手段とを備えたことを特徴とする。
【００２８】
また、前記インタプリタは、前記プログラム部分の実行回数が所定回数に達した時点で、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものであるか否かを検証する適用除外検証手段と、前記適用除外検証手段により、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものである場合には、前記所定回数を超える実行時に前記プログラム部分を前記逐次的実行手段によって実行させる第４の実行手段とを、さらに備えたことを特徴とする。
【００２９】
また、前記インタプリタは、前記所定回数を超える実行に際しては、前記システムから、前記適用除外判定手段、前記最適化判定手段、及び前記適用除外検証手段による処理を省略して実行することを特徴とする。
【００３０】
また、前記最適化手段により、前記最適化の効果が検証されるプログラム部分は、内部のループの回数が所定数以上である部分、または所定深さを超えるネスト構造を含んでいる部分であることを特徴とする。ここで、ネスト構造とは、条件分岐（if文）、一定回数の繰り返し（for文）、条件つき繰り返し（while文）等を含んだプログラム構造のことを言うものとする。
【００３１】
また、前記インタプリタにおいて、前記最適化判定手段は、ユーザが望む省電力の程度に応じて、前記最適化手段による最適化の効果の見積もりを補正することを特徴とする。例えば、前記省電力の程度が所定レベルよりも大きい場合は、前記最適化手段による最適化の効果を実際よりも少なく見積もる。
【００３２】
また本発明は、高級言語又は中間言語で記述されたプログラムの一部を直接的に実行できるハードウェア機構を備えたコンピュータにおいて、前記プログラムを部分的に順次取り込んで、前記取り込まれたプログラム部分を機械語の並びに変換しながら実行させる逐次的実行手段を備えるインタプリタの動作方法であって、前記取り込まれたプログラム部分を、実行速度の面で最適化された機械語の並びに変換することができる最適化ステップと、前記プログラム部分の実行系として、前記逐次的実行ステップ、または前記最適化ステップを介した前記逐次的実行ステップ、若しくは前記ハードウェア機構、のいずれか１つを選択する実行系選択ステップと、前記取り込まれたプログラム部分を、前記実行系選択ステップにより選択された実行系により実行させる実行ステップと、を有することを特徴とするインタプリタの動作方法を提供するものである。
【００３３】
また、前記インタプリタの動作方法において、前記部分的に取り込まれたプログラム部分に、前記ハードウェア機構によって実行できない命令が所定数よりも多く含まれているか否かを判定し、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多く含むと判定された場合は、当該プログラム部分を前記逐次的実行手段によって実行させ、前記プログラム部分が、前記ハードウェア機構によって実行できない命令を所定数よりも多くは含まないと判定された場合は、当該プログラム部分を前記ハードウェア機構によって実行させ、前記実行後に、前記部分的に取り込まれたプログラム部分に対する前記最適化ステップにおける最適化によって、所定基準を超える効果が得られたかどうかを判定し、前記最適化ステップにおける最適化によって所定基準を超える効果が得られたと判定された前記プログラム部分については、次回以降の実行時に前記プログラム部分を前記最適化ステップを介した前記逐次的実行手段によって実行させることを特徴とする。
【００３４】
また、前記インタプリタの動作方法において、前記プログラム部分の実行回数が所定回数に達した時点で、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものであるか否かを検証し、前記プログラム部分が、ハードウェアによって実行できない命令の実行を所定回数よりも多く発生させるものである場合には、前記所定回数を超える実行時に前記プログラム部分を前記逐次的実行手段によって実行させることを特徴とする。
【００３５】
また、前記インタプリタの動作方法において、前記所定回数を超える実行に際しては、前記適用除外判定ステップ、前記最適化判定ステップ、及び前記適用除外検証ステップによる処理を省略して実行することを特徴とする。
【００３６】
また、前記インタプリタの動作方法において、前記最適化ステップにおいて、前記最適化の効果が検証されるプログラム部分は、内部のループの回数が所定数以上である部分、または所定深さを超えるネスト構造を含んでいる部分であることを特徴とする。ここで、ネスト構造とは、条件分岐（if文）、一定回数の繰り返し（for文）、条件つき繰り返し（while文）等を含んだプログラム構造のことを言うものとする。
【００３７】
また、前記インタプリタの動作方法において、前記最適化判定ステップでは、ユーザが予め設定した省電力の程度を参照し、前記省電力の程度に応じて、前記最適化手段による最適化の効果の見積もりを補正することを特徴とする。
【発明の効果】
【００３８】
以上説明したように、本発明のインタプリタによれば、プログラムをメソッド単位に取り込むと共に、取り込まれたメソッドにはＨＡＥ方式を適用することを基本としながらも、ＨＡＥでは処理できない命令を多く含むメソッドについてはＨＡＥ方式の適用を除外し、さらに、初回の実行によって、Hotspotが発見されたメソッドについては、次回の実行からは最適化手段を有するＪＩＴ方式を適用するので、実行速度の大きいインタプリタを提供することができる。
【００３９】
また、ＨＡＥでは処理できない命令を多く含むメソッドについては、ＨＡＥ方式の適用を除外すると共に、十分な実行回数の実行の後、ハードウェアだけでは処理できない命令の実行を多発させた事実が判明したメソッドについては、ＨＡＥ方式の適用を除外するので、ＨＡＥ方式を適用しても実行速度が低下してしまう現象の発生を抑制できるインタプリタを提供することができる。
【００４０】
また、十分な実行回数の実行の後は、最適化手段等のための統計処理のプログラムステップが除去されるので、オーバーヘッドが無くなり、実行速度が速く、かつ必要メモリ量の少ないインタプリタを提供することができる。
【００４１】
さらに、ユーザが希望する省電力の程度が大きい場合は、前記ＪＩＴ方式の適用が除外されるので、モバイル機器等において消費電力量の節約が可能なインタプリタを提供することができる。
【発明を実施するための最良の形態】
【００４２】
以下、添付図面を参照しながら、本発明のインタプリタを実施するための最良の形態を詳細に説明する。図１〜図７は、本発明の実施の形態を例示する図であり、これらの図において、同一の符号を付した部分は同一物を表わし、基本的な構成及び動作は同様であるものとする。
【００４３】
まず、本発明のインタプリタによる実行性能向上の原理を以下で説明する。
【００４４】
本発明の課題は、前述のように、ＪＩＴ方式インタプリタとＨＡＥ方式インタプリタの各々の弱点を補い合い、かつ個別のアプリケーションの傾向も加味して実行速度を高速化させることにある。プログラム構造のマクロな解析によって、纏まりを有する一定の処理手順（以下、「メソッド」と呼称する）中に、ＪＩＴ方式の適用が有効と判断される一連の処理手順（即ち、Hotspot）が存在するメソッドについては、命令単位の処理速度向上しか果たせないＨＡＥ方式よりも実行速度を向上させることができると仮定できるので、本発明に係るインタプリタでは、メソッド中の一連の処理手順がＪＩＴ方式の適用が可能なHotspotであるか否かの判断処理を最優先する。以下では、このような判断を「Hotspot判断」と呼称する。
【００４５】
また、本発明のインタプリタでは、或る通訳対象のメソッドにおいて、ＪＩＴ方式の適用から除外された一連の処理手順ないしはＪＩＴ方式の適用が可能か否かの判断途中にある一連の処理手順については、全てＨＡＥ方式での実行対象として扱う。但し、ＨＡＥ方式で実行できるＩＲ命令は限られている場合が多く、実行できないＩＲ命令を多く含む処理手順の内にはインタプリタで通訳しながら実行した方が良いものが出て来る。以下では、このような例外を「ＩＲ要因によるＨＡＥ除外判断」と呼称する。
【００４６】
さらに、本発明のインタプリタでは、実行時に、ガーベージコレクション、例外処理、割り込み処理等が頻繁に発生する処理手順を統計的に収集し、インタプリタで通訳しながら実行したほうが良いものを選択する。勿論、このようなガーベージコレクション等の処理は不規則的に発生するので、前記の選択すべき処理手順を発見するための法則性が無いことも考えられるし、割込み処理が特定の処理手順において発生するような構造であることもある。しかしながら、本発明のインタプリタでは、あくまでも統計的な手法を用いて前記の選択すべき処理手順を発見するものとする。以下これを「割込み要因によるＨＡＥ除外判断」と呼称する。
【００４７】
これらの判断に加えて、さらに、他の１つのパラメタを考慮する必要がある。それはプログラムを実行するユーザがどの程度の省電力を求めているかである。前述のとおり、一般には、ＨＡＥ方式の方が、ＪＩＴ方式よりも消費電力が少なくて済む。このことは、インタプリタが実行されるコンピュータがモバイル機器である場合などでは重要な判断材料（性能指標）となる。この判断材料をどのくらい重要視するかは、調整の余地をユーザに残さなければならないが、本発明のインタプリタでは、ユーザが希望する省電力の程度を実行時のパラメタとしてユーザに入力して貰うこととし、その程度を示すレベル値を、例えば１から１０の数値にしてＪＩＴ方式における前記Hotspotの判断を緩和化する方向ないしは厳密化する方向へシフトさせるための要因係数として使用する。以下、このような要因係数となる省電力強度のことを「省電力係数」と呼称する。
【００４８】
本発明のインタプリタでは、これらの「Hotspot判断」、「ＩＲ要因によるＨＡＥ除外判断」、及び「割込み要因によるＨＡＥ除外判断」等の処理、さらには前記の「省電力係数」を使用して、実行対象プログラムに含まれる処理手順毎のフィードバック系を形成させる。実行が繰り返されるにつれて、このような統計的手法による判断は正確度を増し、十分な回数の実行が行われた後には、ユーザのプログラムの実行形態として、最適のものを選択することが可能となることから、このプログラムは、極めて最適化された状態で実行されることになる。以下、このような状態を「最適化実行状態」と呼称する。「最適化実行状態」に達した場合、当該プログラムに対する前述の４つの判断を行う処理系、及びその結果をフィードバックさせる処理系は不要になるので、当該プログラムの最終的な実行形態として、当該プログラムを、ステップ数の少ないスリムな実行系として実行することができる。また、当該プログラムの実行速度も、余計な判断処理を省いた実行系への移行によって、一層高速化させることが可能となる。
【００４９】
以下、本実施形態のインタプリタをマイコン用の回路基板に設定し、動作を確認するためのシステムについて説明する。図１は、本発明の実施形態に係るインタプリタをマイコン用の回路基板に設定し、動作を確認するシステムの全体構成を示す構成図である。
【００５０】
同図において、本実施形態のインタプリタ（以下、単に「インタプリタ」と略称する）をマイコン用の回路基板に設定し、動作を確認するシステムは、インタプリタが設定される回路基板１００と、インタプリタが実行されるＨＡＥ内蔵マイコン１１０と、後述のディスプレイ１４０上で入力すべき座標位置を確定するマウス１２０と、インタプリタ及びアプリケーションプログラム（以下、「アプリケーション」と略記する）に指令やデータを入力するためのキーボード１３０と、インタプリタまたはアプリケーションが出力する情報を表示するディスプレイ１４０と、インタプリタ及びアプリケーションを起動するホストＰＣ（パーソナルコンピュータ）１５０と、インタプリタ及びアプリケーションが格納されたファイルシステムを記憶するファイルシステム内蔵コンパクトフラッシュ（メモリ）１６０と、インタプリタ及びアプリケーションの実行領域となるメモリ（ＲＡＭ）１７０と、を備える。ＨＡＥを内蔵したマイコン１１０を搭載する回路基板１００には、少なくともファイルシステムを内蔵したファイルシステム内蔵コンパクトフラッシュ１６０と、そのディスケット（図示は省略）と、ＲＡＭで構成されたメモリ１７０とが搭載されていなければならない。
【００５１】
以下、本実施形態のインタプリタをマイコン用の回路基板に設定し、動作を確認するためのシステムの機能について説明する。インタプリタ及びアプリケーション（ＩＲ等）が動作するプラットフォームは、前述のＨＡＥを内蔵したマイコン１１０を搭載した回路基板１００であり、この基板はさまざまな機器（モバイル機器等）に組込まれるデバイスとなる。
【００５２】
インタプリタと、インタプリタで実行されるアプリケーションとは、ファイルシステム内蔵コンパクトフラッシュ１６０が記憶するファイルシステム（以下、単に「ファイルシステム」と略記する）に格納されており、ホストＰＣ１５０により起動がかけられて実行開始される。勿論、前述の機器に組み込まれた後は、ホストＰＣ１５０ではなく、この機器から起動される。より具体的には、前記機器が備えるハード的なスイッチによって、ないしはパワーオンによって実行開始されるようになる。この実行開始したインタプリタは、まず前記ファイルシステムからメモリ１７０にロードされ、自分自身の実行準備を行った後に、実行対象のアプリケーションを、同じくファイルシステム１６０からメモリ１７０にロードしてくる。
【００５３】
アプリケーションによっては入出力機能を備えるものがあり、それらは例えばキーボード１３０でテキスト入力を、マウス１２０で座標情報を受け付けて実行される。またグラフィック的な出力がある場合は、回路基板１００から、例えばＶＧＡ（Video Graphic Array）等のグラフィックシステムを介してディスプレイ１４０に描画される。これらの動作は、全てアプリケーションがインタプリタ側の機能を使用して行うものである。
【００５４】
図２は、インタプリタの動作に必要なソフトウェアを含むメモリシステムの領域マップの１例を示したものである。但し、ＨＡＥ２１０はソフトウェアではなく、ハードウェア機構である（ＨＡＥ内蔵マイコン１１０は、前述のＨＡＥ２１０を内蔵しており、ＨＡＥ開始命令が有り次第、ＩＲ命令の並びをＨＡＥ２１０に送り込んで、高速実行できるよう待機している）。
【００５５】
図２に示すメモリシステムが記憶しているソフトウェアは、ソフトウェアのインターフェースがハードウェア側に近い順序で、下位（ハードウェア側に最も近い）から順に、オペレーティングシステムを担うリアルタイムＯＳ２２０と、ファイルシステム、グラフィック、及びネットワークから成るミドルウェア群２２１と、ＪＩＴ２３１を含むインタプリタ２３０と、ＩＲの並びで構成されたインタプリタ用ライブラリ２４０と、ＩＲで書かれたアプリケーションプログラム２５０と、で構成される。性能的な理由によりインタプリタでは実行できないプログラムは、従来のようにコンパイラ言語で実現しなければならず、それは通常のネイティブプログラム２６０として、インタプリタとそのプログラムと並列に並べて配されている。前述のシステムの開始と共にリアルタイムＯＳ２２０が立ち上がる。このＯＳは通常ミドルウェア群２２１も備えており、ミドルウェア群２２１も、このＯＳと同時に使用可能な状態になる。
【００５６】
次に、インタプリタ用ライブラリ２４０を伴ったＪＩＴ２３１を内蔵するインタプリタ２３０がメモリ１７０上にロードされ、前述のようにアプリケーション２５０をロードする。この状態になって、はじめてアプリケーション２５０の入り口から実行が開始され得ることになる。インタプリタ用言語も一連の処理手順（以下、「メソッド」と呼称する）毎に纏められて記述されているのが通常なので、インタプリタはメソッド単位で実行を開始する。
【００５７】
以下、実行方式を選択する説明を行うが、基本的にはこのメソッド単位で、下記の３つの実行方式のいずれかを選択させてゆく（実行系選択手段）。この３つの実行方式とは、即ち、最適化手段を有さない通常のインタプリタによる実行方式（逐次的実行手段）と、最適化手段を有するＪＩＴ方式のインタプリタによる実行方式（最適化手段＋逐次的実行手段）と、ＨＡＥ（ハードウェア機構）による実行方式である。
【００５８】
図３は、本実施の形態に係るインタプリタの実行方式を選択する処理の流れを示すフローチャートである。ここでは、前記３方式の選択方法を示す概念的なフローチャートを示している。図３に示す前記３方式の選択方法では、ＨＡＥによる実行を基本として、実行時に情報収集しながら徐々にＨＡＥの適用除外の判断を行っていくものである。つまり、実行方式が未分化の状態からアプリケーションの構造に沿って最適化された状態に進む。
【００５９】
まず、ＪＩＴ方式のインタプリタを適用すると効果が上がるHotspotの有無を判断する（ステップＳ３００）。
前述のように、このHotspotはプログラム全体を見渡した時に処理が偏在しているプログラム部分であるから、或るメソッドが集中的に呼ばれているならば、このメソッドはHotspotの有力候補である。あるいはまた、呼ばれる回数がそれほどでもないが、内部のループの回数が多いか、ないしはネストが深く、実行時間が多く掛かる部分であるとしたら、このような部分もHotspotの有力候補である。いずれにしても、或るメソッドが高速になればプログラム全体が高速になることが予見される場合には、このメソッドはHotspotであると見なすことができるのであり、ＪＩＴ方式のインタプリタによる実行は、このようなHotspotを有するメソッドを適用対象にする時に最も効果が上がる。
【００６０】
或るプログラム部分が、このようなHotspotであるか否かの判断を行うためには、前述のプログラム部分に関する構造分析の結果としてのデータが必要となるので、Hotspotの判断ステップ（ステップＳ３００）においては、過去の実行時にこのような構造分析を行って得られたデータを纏めて成る実行時の分析・フィードバックデータ３２０を参照しなければならない。参照される他の１つの要因データは省電力係数３１０である。一般に、ＪＩＴ方式のインタプリタを実行すると実行命令数が多くなるので、ＨＡＥによる実行の方が電力を消費しない。ユーザがどの程度の省電力を望むかは、パラメタとして外部（例えば、キーボード１３０（図１））から指定してもらう。Hotspotの判断ステップ（ステップＳ３００）においては、このパラメタを参照して対応する係数に変換し、この係数を用いて前述のHotspotであるか否かの判断を調整する。より具体的には、省電力をユーザが強く望んでいる場合（即ち、前記係数が大きい場合）は、Hotspotであるとする判断を厳しくし、厳選したメソッドだけをＪＩＴ実行（ステップＳ３４０）の対象とするようにする。上記の判断をステップＳ３３０で集約する。
【００６１】
次に、割込み要因によるＨＡＥの除外を行う（ステップＳ３５０）。
割り込み要因が頻繁に発生するメソッドは、ＨＡＥで実行している最中にソフト実行に戻さなければならず、その切り替えにコストが掛かる。もしも、或るメソッドの実行時に頻繁に外部割込みが掛かることが予見されるならば、このメソッドはＨＡＥで実行する対象から除外した方が高速性能を維持できる可能性が高い。このような判断を、やはり実行時の分析・フィードバックデータ３２０を参照して行う。除外すべきと判断されたメソッドはインタプリタ実行（ステップＳ４００）での実行に廻す。また、ＩＲ要因によるＨＡＥ除外判断（ステップＳ３８０）において、ＩＲ要因によってＨＡＥによる実行対象から除外すべきメソッドであるか否かを検証し、ステップＳ３９０にて、この検証結果を判断して、メソッドにＨＡＥで実行できるＩＲ命令が所定の割合以下にしか含まれていない場合は、当該メソッドをインタプリタ実行（ステップＳ４００）での実行に廻す。ＨＡＥで実行できるＩＲ命令が含まれている上記の割合は、ＩＲを静的に分析した結果を纏めて成るＩＲの静的な分析データ３７０を参照すれば可能となるので、実行時における分析は必要がない。このようにして残ったメソッドはＨＡＥで実行される（ステップＳ４１０）。
【００６２】
図４は、本実施の形態に係るインタプリタによる最適な実行形態を示すフローチャートである。同図では、これまで述べてきたような静的な分析や実行時における分析結果のフィードバックによって、或るアプリケーションの実行プログラムが完全に最適化されて、３つの実行方式が、このアプリケーションの実行形態がメソッド毎に決定されている時のインタプリタによる実行フローを示している。
【００６３】
まず、メソッドの実行を開始する処理（ステップＳ５００）の直後に、実行方法を示したテーブル５２０の参照を行い、このテーブルに書かれた今まさに実行開始しようとしているメソッドの実行方式を取得する（ステップＳ５１０）。次に、ステップＳ５３０において、当該メソッドに関する実行方法として、前記テーブルに、例えば“J”と書かれている場合は、ステップＳ５４０において、当該メソッドをＪＩＴ方式により実行（繰返し部分を含む）し、ステップＳ５７０にて処理を終了する。但し、このタイミングでＪＩＴ方式で実行する時には、既に何回もＪＩＴ方式による実行が繰り返された後なので、ＪＩＴ方式インタプリタが通訳して出力したオブジェクトプログラムは、既にメモリ上にあり、よって、このオブジェクトプログラムを実行するだけでよい。
【００６４】
ステップＳ５３０において、当該メソッドに関する実行方法として、前記テーブルに、例えば“H”と書かれている場合は、ステップＳ５５０において、当該メソッドをＨＡＥにより実行（繰返し部分を含む）し、ステップＳ５７０にて処理を終了する。但し、このＨＡＥによる実行途中で、ソフトウェア側での実行に切り換えざるを得ない場合があり、このような場合には、途中で、通常のインタプリタにより実行（繰返し部分を含む）するステップＳ５６０に遷移する場合が当然ある。この遷移後に、ソフトウェア側での実行が終了すると、制御の流れを再びハードウェア側に戻して、ＨＡＥにより実行（繰返し部分を含む）を行うことができる。
【００６５】
ステップＳ５３０において、当該メソッドに関する実行方法として、前記テーブルに、例えば“I”と書かれている場合は、ステップＳ５６０において通常のインタプリタにより実行（繰返し部分を含む）し、ステップＳ５７０にて処理を終了する。但し、この場合も、当該メソッドに関し、既に通常のインタプリタによる実行が繰り返された後であれば、このインタプリタが通訳して出力したオブジェクトプログラムを使用することができる。前述のステップＳ５７０に達するのは、メソッドが完了した場合とは限らず、途中で他のメソッドの呼び出しが有った場合も含まれる。このプログラムが呼び出されて実行される場合のステップＳ５７０における戻り方は処理系による。
【００６６】
図５は、本発明の実施の形態に係るインタプリタが動的最適化処理のためにフィードバックする情報の１例としての一覧を示す説明図である。同図では、メソッド単位にフィードバックされる情報を示している。同図で一覧表示される情報項目は、「メソッド名」６００、「実行方法」６１０、「実行回数」６２０、「Hotspot」６３０、「ＨＡＥ実行不可ＩＲ数」６４０、「ＩＲ全体数」６５０、「ＧＣ（ガーベージコレクション）発生回数」６６０、「割込み発生回数」６７０、及び「例外発生回数」６８０、である。なお、図５に示す情報の使用方法については後述する（図７参照）。
【００６７】
図６は、本発明の実施の形態に係るインタプリタが最適化処理のための１パラメタとする省電力係数を１例として示す説明図である。同図では、省電力実行を行うか否かを選択させる「省電力係数実行時パラメタ」７００と、数値１〜１０で示される省電力係数を記載する「省電力係数」７１０とを示している。なお、図６に示す情報の使用方法については後述する（図７参照）。
【００６８】
図７は、本発明の実施の形態に係るインタプリタが動的最適化処理を行うと共に最適な実行形態を選択しながら実行する場合の処理手順を示すフローチャートである。同図に示す処理フローは、本発明の実施の形態に係るインタプリタが、図４に示す最適化されたインタプリタに達する以前の実行形態を示すものであり、ここでは、動的最適化処理を行うと共に最適な実行形態を選択しながら実行する実行形態であるものとする。図中、テーブル８２０は、図５で示したフィードバック情報の１例としての具体例を示すものである。
【００６９】
まず、メソッドの実行を開始する処理（ステップＳ８００）の直後に、テーブル８２０中の当該メソッドに対応するエントリを探し、これが無ければ当該メソッドに対応するエントリを新設する（ステップＳ８１０）。次に、前記メソッドが呼ばれた訳であるから、このメソッドの実行回数をカウントアップ（即ち、＋１）して、テーブル８２０の該当フィールド（「実行回数」）を更新する（ステップＳ８３０）。次に、テーブル８２０の「実行方法」フィールドを参照して、実行方法が既に決められているメソッドであるか否かを検証し、実行方法が既に決められているメソッドである場合は、ステップＳ８９０に移り、実行方法が未だ決められていないメソッドである場合は、ステップＳ８８０に進む（ステップＳ８４０）。
【００７０】
ステップ８９０では、図４のフローチャートに示す最適な実行形態の場合とほぼ同様に、テーブル８２０の「実行方法」フィールドに記載された３種類の実行方法を参照して当該メソッドの実行方式を確定し、この実行方式に応じて、ステップＳ９００、ステップＳ９１０、ステップＳ９２０のいずれかを実行し、その後、ステップＳ９３０に進む。
【００７１】
ステップＳ８５０では、実行方法が未だ決めていない場合であるので、テーブル８２０の「ＩＲ全体数」、「ＨＡＥ実行不可ＩＲ数」を参照し、これらの設定が未だなされていない場合は、この実行により新規設定し、ステップＳ８６０に進む。
【００７２】
ステップＳ８６０では、ＨＡＲの実行が不可能なＩＲの個数のパーセンテージが所定の閾値を超えているか否かを判断し（適用除外判定手段）、もしも前記ＩＲ数が前記閾値を超えている場合は、ステップＳ８７０にて、「実行方法はインタプリタである」ことを確定（即ち、テーブル８２０の「実行方法」のフィールドに「Ｉ」を記載）した後、ステップＳ８９０に移り（第１の実行手段）、また、前記ＩＲ数が前記閾値を超えていない場合はステップＳ８８０に移る。
【００７３】
ステップ８８０では、「実行方法はＨＡＥである」ことを確定（即ち、テーブル８２０の「実行方法」のフィールドに「Ｈ」を記載）した後、ステップＳ８９０に移る（第２の実行手段）。
【００７４】
なお、ステップＳ８９０以下の流れは、図４のフローチャートに示す最適な実行形態の場合とほぼ同様であるが、唯一異なる点は、Hotspotを判断する処理ステップ（ステップＳ９３０）と、例外によるＨＡＥ実行の調整処理（ステップＳ９４０）が追加されていることである。
【００７５】
ステップＳ９３０では、直前までの処理の流れを検証して、Hotspotが存在するか否かの判断を行う（最適化判定手段）。このHotspotの存在を判断するための具体的な処理内容については、周知の技術であるので、ここでは述べないが、Hotspotの定義は前述のとおりである。当該メソッドについて、前述のHotspotを発見できた場合は、このステップで、テーブル８２０の「Hotspot」のフィールドに「ＯＮ」を記載すると共に、実行方法はＪＩＴ方式のインタプリタであることを確定（即ち、テーブル８２０の「実行方法」のフィールドに「Ｊ」を上書き）することになる（第３の実行手段）。
【００７６】
次に、ステップＳ９４０では、前述の割込み要因（ＧＣ（ガーベージコレクション）、割込み、例外処理）に起因する割込みが、このメソッドで頻発していないかという判断を行うが、このような判断は、実行回数が十分な回数に達した時に初めて判断できるものである。このような割込み要因による割込みの発生回数は、現在までの実行時にカウントされて、割込み要因毎に、テーブル８２０の該当するフィールドに数値として記録されているので、テーブル８２０の「実行回数」フィールドに十分な実行回数が示されていて、かつ前記割込み要因による割込みの発生回数が所定の閾値を超えている場合は、インタプリタで実行した方が有利と判断し、テーブル８２０の「実行方法」のフィールドに「Ｉ」を上書きして実行方法はインタプリタであることを示すことになる（第４の実行手段）。この割込み要因発生回数のカウントは、図７に示すように、別個にアクションルーチン（９６０，９７０，９８０）が設けられており、実行中のメソッドが何であったかを見て、当該フィールドの回数をカウントアップしている。
【００７７】
なお、図７に示す実行形態で実行している状態で、十分長い時間を掛けて実行された後には、テーブル８２０の実行方法は統計的に確定したと見なせる状態に至る。この時は、ステップＳ８３０〜Ｓ８８０の処理、及びステップＳ９３０，Ｓ９４０、ステップＳ９６０〜Ｓ９８０の処理は取り外すことができる。
【００７８】
このアルゴリズムは処理系に依存するが、十分長い時間を掛けて実行された後で、全てのメソッドのテーブル８２０上の実行方法のフィールドが書き換わらなかった時に、テーブル８２０の実行方法は統計的に確定したと判断できることになり、このような処理を追加することは容易である。
【００７９】
以上、本発明のインタプリタについて、具体的な実施の形態を示して説明したが、本発明はこれらに限定されるものではない。当業者であれば、本発明の要旨を逸脱しない範囲内において、上記各実施形態又は他の実施形態にかかる発明の構成及び機能に様々な変更・改良を加えることが可能である。
【産業上の利用可能性】
【００８０】
本発明は、コンピュータと使用者（プログラマー）との間を取り持つプログラミング用の言語で書かれたコンピュータプログラムを、一旦全て翻訳することなく、部分的に順次に通訳しながら直ちに実行するシステム、特に、最適化手段を有するインタプリタに適用することができる。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施形態に係るインタプリタをマイコン用の回路基板に設定し、動作を確認するシステムの全体構成を示す構成図である。
【図２】インタプリタの動作に必要なソフトウェアを含むメモリシステムの領域マップの１例を示したものである。
【図３】本実施の形態に係るインタプリタの実行方式を選択する処理の流れを示すフローチャートである。
【図４】本実施の形態に係るインタプリタによる最適な実行形態を示すフローチャートである。
【図５】本発明の実施の形態に係るインタプリタが動的最適化処理のためにフィードバックする情報の１例としての一覧を示す説明図である。
【図６】本発明の実施の形態に係るインタプリタが最適化処理のための１パラメタとする省電力係数を１例として示す説明図である。
【図７】本発明の実施の形態に係るインタプリタが動的最適化処理を行うと共に最適な実行形態を選択しながら実行する場合の処理手順を示すフローチャートである。
【符号の説明】
【００８２】
１１０  ＨＡＥ内蔵マイコン
１２０  マウス
１３０  キーボード
１４０  ディスプレイ
１５０  ホストＰＣ（パーソナルコンピュータ）
１６０  ファイルシステム内蔵コンパクトフラッシュ（メモリ）
１７０  メモリ（ＲＡＭ）
２２０  リアルタイムＯＳ（オペレーティングシステム）
２２１  ミドルウェア群
２３０  インタプリタ（ＪＩＴ方式）
２４０  インタプリタ用ライブラリ
２５０  アプリケーションプログラム（中間言語ＩＲ使用）
６００  「メソッド名」（以下、鍵括弧は項目名を示す）
６１０  「実行方法」
６２０  「実行回数」
６３０  「Hotspot」（最適化処理対象）
６４０  「ＨＡＥ実行不可ＩＲ数」
６５０  「ＩＲ全体数」
６６０  「ＧＣ（ガーベージコレクション）発生回数」
６７０  「割込み発生回数」
６８０  「例外発生回数」
７００  「省電力係数実行時パラメタ」
７１０  「省電力係数」
【図１】
2007141153.tif 000003
【図２】
2007141153.tif 000004
【図３】
2007141153.tif 000005
【図４】
2007141153.tif 000006
【図５】
2007141153.tif 000007
【図６】
2007141153.tif 000008
【図７】
2007141153.tif 000009