(57)【要約】【課題】実行時翻訳と中間語解釈実行との配分を可変とし、適宜な実行速度を維持しつつ電力消費の抑制を可能とする。【解決手段】ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段１２３と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段１２４とを備える情報処理装置であって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視する節電要求監視部１２６と、前記節電要求の有無に応じて、前記実行時翻訳手段１２４における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段１２４に対する実行時翻訳処理の実行指示を行う節電用翻訳制御部１２９と、を有することを特徴とする情報処理装置。【選択図】  図１
2006126947.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置であって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視する節電要求監視部と、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行う節電用翻訳制御部と、
を有することを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が有る場合に前記プログラムの実行時翻訳の実行を否定し、前記節電要求が無い場合に前記プログラムの実行時翻訳の実行を許可することを特徴とする情報処理装置。
【請求項３】
請求項１において、
前記節電用翻訳制御部が、前記節電要求の強弱に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うことを特徴とする情報処理装置。
【請求項４】
請求項３において、
前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が所定基準より強い節電を要求するものである場合に前記プログラムの実行時翻訳の実行を否定し、前記節電要求が所定基準より弱い節電を要求するものである場合に前記プログラムの実行時翻訳の実行を許可することを特徴とする情報処理装置。
【請求項５】
請求項１において、
前記節電用翻訳制御部が、前記節電要求の有無または情報処理装置における電力消費状況に応じて、前記実行時翻訳の実行可否の決定基準を変更することを特徴とする情報処理装置。
【請求項６】
請求項５において、
前記決定基準は、前記プログラムの実行頻度に関して定められた所定実行頻度であり、
前記記節電用翻訳制御部が、前記決定基準の変更に際し、前記節電要求が有った場合または前記電力消費状況が節電を要するものであった場合に、前記決定基準たる所定実行頻度を、前記節電要求が無かった場合または前記電力消費状況が節電を要しないものであった場合より高いものとすることを特徴とする情報処理装置。
【請求項７】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置であって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視する節電要求監視部と、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行う節電用翻訳制御部と、
を有することを特徴とする情報処理装置。
【請求項８】
請求項７において、
前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が有る場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を否定し、前記節電要求が無い場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を許可することを特徴とする情報処理装置。
【請求項９】
請求項７において、
前記節電用翻訳制御部が、前記節電要求の強弱に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示またはハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うことを特徴とする情報処理装置。
【請求項１０】
請求項９において、
前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が所定基準より強い節電を要求するものである場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を否定し、前記節電要求が所定基準より弱い節電を要求するものである場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を許可することを特徴とする情報処理装置。
【請求項１１】
請求項７において、
前記節電用翻訳制御部が、前記節電要求の有無または情報処理装置における電力消費状況に応じて、前記実行時翻訳またはインタプリタ処理の実行可否の決定基準を変更することを特徴とする情報処理装置。
【請求項１２】
請求項１１において、
前記決定基準は、前記プログラムの実行頻度に関して定められた所定実行頻度であり、
前記記節電用翻訳制御部が、前記決定基準の変更に際し、前記節電要求が有った場合または前記電力消費状況が節電を要するものであった場合に、前記決定基準たる所定実行頻度を、前記節電要求が無かった場合または前記電力消費状況が節電を要しないものであった場合より高いものとすることを特徴とする情報処理装置。
【請求項１３】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置による情報処理方法であって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視し、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うことを特徴とする情報処理方法。
【請求項１４】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置による情報処理方法であって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視し、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うことを特徴とする情報処理方法。
【請求項１５】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置により情報処理方法を実行させるプログラムであって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視するステップと、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うステップと、
を含むことを特徴とするプログラム。
【請求項１６】
ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置により情報処理方法を実行させるプログラムであって、
情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視するステップと、
前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うステップと、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算機における、ソースプログラムから機械語プログラムへの翻訳方式であって、複数機種の計算機に共通の中間形式を用い、中間語（バイトコード）を実行時にコンパイルして変換し、その機械語を実行させる情報処理方法に関する。特にハードウェアでスタックベースの中間語（バイトコード）をレジスタベースの命令に変換するバイトコードアクセラレータを備える情報処理装置における上記情報処理方法に関する。
【背景技術】
【０００２】
高級言語で記述されたプログラムを計算機上で実行する方法を大別すると、一般に、コンパイラ方式、インタプリタ方式と呼ぶ、以下の２つに分けられる。さらにコンパイラ方式とインタプリタ方式のそれぞれの利点を採った実行時翻訳という方法が知られており、一例としてJava（登録商標）の実行環境ではＪＩＴ（Just-In-Time）コンパイラと呼称される実行時翻訳技術が、広く実用化されている。実行時翻訳に関する従来技術として、以下の技術が提案されている。
【０００３】
例えば、ＣＰＵ、及びメモリを有し、抽象オブジェクトプログラムを前記ＣＰＵで実行するインストーラは、計算機の機種に依存しない中間語プログラムの形式の抽象オブジェクトプログラムを受け取る手段、前記受け取った抽象オブジェクトプログラムから機械語プログラムを前記メモリ上に生成する手段、及び前記生成された機械語プログラムを前記生成直後に前記ＣＰＵで実行する手段を有することを特徴とするインストーラ（特許文献１参照）などが提案されている。
【０００４】
また、情報処理装置であって、複数のレジスタと、第１フォーマット命令を固有命令として実行するための命令実行部と、命令変換回路とを有し、第２フォーマットで記述された第１プログラムを実行する際に、前記情報処理装置は、前記命令変換回路によって前記第１プログラムに含まれる第１命令群を前記第１フォーマット命令に変換して実行する第１動作モードと、前記第１フォーマット命令で記述された変換ソフトウェアによって前記第１プログラムに含まれる第２命令群を前記第１フォーマット命令に変換して実行する第２動作モードを有し、前記第１動作モードと前記第２動作モードとの間の動作モードの移行に際し、当該動作モードの移行動作と、前記複数のレジスタの少なくとも一つと前記命令変換回路との間のデータ転送動作とを並列に行う情報処理装置（特許文献２参照）なども提案されている。
【０００５】
また、複数の電子計算機に共通のソースプログラムまたは中間語プログラムを解釈実行すると共に、計算機固有の機械語プログラムへ翻訳する実行時プログラム翻訳方法において、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記ソースプログラムまたは中間語プログラムをモジュール単位に機械語プログラムに翻訳するプログラム翻訳手段とを備え、前記解釈実行手段は、前記ソースプログラムまたは中間語プログラムの解釈実行中に、モジュール単位でそのモジュールが実行された回数を計数して実行頻度データを生成し、前記プログラム翻訳手段は、前記解釈実行手段によるソースプログラムまたは中間語プログラムの解釈実行と並行して、最も実行回数の多いモジュールを実行頻度データから選び出し、そのモジュールを機械語プログラムへ翻訳することを特徴とする実行時プログラム翻訳方法（特許文献３参照）なども提案されている。
【０００６】
最初に、公知の一般的な実行時翻訳技術について、特許文献１の「従来の技術」の記載を引用しながら以下に示す。まず、要素技術となるコンパイラ方式とインタプリタ方式についての説明から示す。この特許文献１の「従来の技術」に示されている内容・考え方は、現在もおよそ変わらないためである。
【０００７】
コンパイラ方式とは、高級言語で記述されたプログラムを、実行すべき計算機の機械語プログラムに変換した上で、変換後の機械語プログラムを直接実行する方式である。一方、インタプリタ方式とは実行する計算機の機械語とは別の言語（中間語）を設定し、実行すべき計算機上で中間語を解釈実行する別のプログラム（インタプリタ）を予め用意しておく。高級言語で記述されたプログラムを中間語プログラムに変換し、変換後の中間語プログラムをインタプリタで実行する方式である。
【０００８】
前記インタプリタ方式に対するコンパイラ方式の利点は、以下の理由によるプログラム実行の高速性にある。  
（コンパイラ方式の利点１）インタプリタ方式では、中間語に相当する機械語の実行以外に、各中間語に対応する処理への振り分けやオペランドのアドレス計算等が必要である。一方コンパイラ方式では直接に機械語を実行するので、これらが不要である。  
（コンパイラ方式の利点２）コンパイラ方式ではプログラムの文脈と実行する計算機の特性とを考慮した処理の省略（最適化）が可能である。
【０００９】
一方、インタプリタ方式では、インタプリタ自身は中間語プログラムに対して汎用性を持つので、インタプリタは中間語プログラムをそのまま実行するのみで、プログラムの文脈を考慮した処理の省略ができない。また、中間語プログラムにも実行する計算機の特性が反映されていないので、例えば、高級言語で記述された特定の変数を目標計算機のレジスタにマッピングし、処理の高速化を図ることも不可能である。
【００１０】
一方で、前記インタプリタ方式に対するコンパイラ方式の欠点も存在する。  
（コンパイラ方式の欠点１）ソースプログラムを機械語プログラムに変換するコンパイラが機種ごとに必要であり、コンパイラの開発量が大きくなる他、保守や拡張をそれぞれの機種に対応して行なう必要があり、保守・拡張のオーバヘッドが大きくなる。  
（コンパイラ方式の欠点２）同一プログラムを複数機種で実行する場合、機種ごとにコンパイル（ソースプログラムから機械語プログラムへの変換）が必要であり、機械語プログラムの管理のオーバヘッドが大きい。  
（コンパイラ方式の欠点３）複数機種がネットワークで接続されている環境において、同一のプログラムに対する機械語プログラムが機種対応に複数必要となり、バージョン管理やディスクスペースに問題があるほか、同一プログラムの分散実行が困難である。  
（コンパイラ方式の欠点４）実際に運用されているシステムのなかには、ソースプログラムがなく、機械語プログラムのみで運用されている場合がある。このようなシステムでは、構成機種の移行・変更が困難である。また、ハードウェア技術の進歩により計算機アーキテクチャの高度化が容易となっているが、機械語プログラム財産の継承のため、アーキテクチャの変更に強い制限が課せられしまう。
【００１１】
したがって、実行時間の短縮を重視する立場からはコンパイラ方式が優勢であるが、以上のような保守運用面のデメリットが生じるため、コンパイラ方式とインタプリタ方式との間での使い分けが必要であった。
【００１２】
このような保守運用面と速度面のトレードオフを緩和する方策として、コンパイラ方式とインタプリタ方式のそれぞれの利点を採った方式が開発されている。これが実行時翻訳方式である（方式１）。
【００１３】
方式１は、保存運用の形態としては特定の計算機に依存しない中間語プログラムを採用し、中間語プログラムを実行するに際して高速化のために目標計算機の機械語プログラムに変換するという方式である。Java（登録商標）プログラム実行環境において、実行時のコンパイラ（JIT（Just-In-Time）コンパイラ）を備えた例では、実行時コンパイラ（実行時翻訳部）が動的コンパイルを行い、実行時コンパイル（実行時翻訳）の結果は記憶されて、以降この中間語を実行する場合にはコンパイル済みのネイティブコード（機械語）が実行される。
【００１４】
また、インタプリタ方式の速度面での欠点を、インタプリタ方式（中間語翻訳実行方式）そのものを高速化することで解決する方式も開発されている。特に、ハードウェアによる高速化支援機構の追加による方式が高い高速化効果を生むことが知られている。一例が、特許文献２の「従来の技術」に記載されているスタックベースの中間言語（中間語：バイトコード）をレジスタベースの命令に変換するバイトコードアクセラレータ（ハードウェアアクセラレータ）を備え、インタプリタ方式のままで、中間語を直接ハードウェア実行することで高速化を行う方法である（方式２）。
【００１５】
ソフトウェア（実行時翻訳）による高速化である上記方式１に対して、方式２は、ハードウェアによる高速化に相当するといえる。コンパイラ方式とインタプリタ方式との間での保守運用面と速度面のトレードオフを緩和するこれら２方式は、従来からのソフトウェアによるインタプリタ方式と比べて大幅に実行速度を改善できる点で共通しており、上記２方式同士を比較した場合には優劣をつけがたい。
【００１６】
方式１（：ソフトウェア（実行時翻訳）による高速化）の欠点と利点は以下の通りとなる。実行時翻訳の使用においては、実行時のコンパイル処理（「実行時コンパイル」などと一般に呼称）によってＣＰＵ負荷が大きくなるとともに、生成する機械語プログラムの格納に必要なメモリサイズが大きくなる欠点が知られている。そして、このようなＣＰＵ負荷やメモリ使用量を増やす傾向が実行時プログラム翻訳の適用の阻害要因になることが知られている。
【００１７】
特許文献３における技術のように実行頻度を評価し（プロファイリングし）頻度高く実行される部分だけを実行時コンパイル対象とするプロファイリング付きの実行時翻訳を用いることでこの欠点は改善するが、欠点すべてを解消できるわけではない。
【００１８】
一方で、この方法では、後述する（方式２）の欠点である中間語種別による制約が、生じない点が利点となる。
【００１９】
方式２（：ハードウェア（バイトコードアクセラレータ）による高速化）の欠点と利点は以下の通りとなる。特許文献２の「発明が解決しようとする課題」で言及されている通り、中間語の実行時にターゲットとなるマイクロコンピュータの固有言語（以下ＣＰＵ命令あるいは機械語と呼ぶ）に変換するハードウェアを採用する場合には、全ての中間語をハードウェア実行することが困難なため一部の中間語のみをサポートする。全ての中間語をハードウェアで変換できるのが理想であるのに、一部の中間語のみをサポートする理由は、中間語の中には複雑な機能を有し、変換するとＣＰＵ命令で数十から数百命令に及ぶ中間語が存在するので、全ての中間語をハードウェア処理しようとするとハードウェアが増大しすぎてしまう点にある。
【００２０】
したがって、ハードウェアによる高速化を適用できない処理が存在するのが通例であり、適用外の処理については従来のインタプリタで処理されるので、部分的にしか高速化効果を享受できない。これが欠点となる。
【００２１】
一方、コンパイラによる実行時翻訳と異なり、コンパイル時の処理増やコンパイル結果を格納する領域増分を必要としない点が利点となる。
【００２２】
以上を鑑みると、実行時翻訳とバイトコードアクセラレータとを相互補完させることで、実行速度が更に向上させやすいことに想到できる。
【００２３】
たとえば、実行頻度などで実行時翻訳対象を選別する方式で考えると、インタプリタで処理される対象（バイトコード）がバイトコードアクセラレータを経るので実行時翻訳の対象外となった部分も高速化される。したがって、バイトコードアクセラレータが存在しない実行時翻訳よりもバイトコードアクセラレータと共存する実行時翻訳が高速化に適するといえる。
【００２４】
あるいは、バイトコードアクセラレータと共存する実行時翻訳を、実行時コンパイラが存在せずバイトコードアクセラレータのみが存在する構成と比べると、コンパイラで動的コンパイルした中間語群のなかに、バイトコードアクセラレータで非サポートの中間語を含む分、高速化には有利である。
【００２５】
上記のように、ソフトウェアによる高速化機構（実行時翻訳）とハードウェアによる高速化機構（バイトコードアクセラレータ）との組み合わせを検討するうちに、発明者は、この組み合わせが、電力消費と実行速度との間のトレードオフを発生させることに想到した。
【特許文献１】特開平１０−２５４７１２号公報
【特許文献２】特開２００４−３０２２２号公報
【特許文献３】特開平１０−２４０５４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかし、従来の実行時翻訳の議論において、コンパイル処理自体の重さによるオーバーヘッドは、起動時など局所的な処理の遅れとメモリ消費量の観点では問題視されてきたが、電力消費の点では問題視されてこなかった。  
なぜならば、実行時翻訳を用いた場合のほうが、実行速度が数倍〜１０倍以上と実行時翻訳を用いない場合と比べて圧倒的に高速化され、同一の仕事量に対するＣＰＵ負荷が減る（ダイナミックスステップ数が減少する）結果、むしろ節電効果が生じるためである。
【００２７】
ところが、中間語解釈実行においてバイトコードアクセラレータを活用できる実行環境が使えるならば、実行時翻訳の実行速度における圧倒的な優位が消えるため、実行時翻訳のオーバーヘッドによる電力消費の増加分が顕在化しやすいこととなる。バイトコードアクセラレータ単独で実行する場合と比べると、実行時翻訳のバイトコードアクセラレータとの併用は、実行速度で有利であっても電力消費では不利（電力消費増）をまねく場合がある。
【００２８】
そこで本発明は上記課題を鑑みてなされたものであり、実行時翻訳と中間語解釈実行との配分を可変とし、適宜な実行速度を維持しつつ電力消費の抑制を可能とする、情報処理装置および情報処理方法を提供することを主たる目的とする。
【課題を解決するための手段】
【００２９】
上記課題を解決する本発明の情報処理装置は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置であって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視する節電要求監視部と、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行う節電用翻訳制御部と、を有することを特徴とする（第１の発明）。
【００３０】
第２の発明は、第１の発明において、前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が有る場合に前記プログラムの実行時翻訳の実行を否定し、前記節電要求が無い場合に前記プログラムの実行時翻訳の実行を許可することを特徴とする。
【００３１】
第３の発明は、第１の発明において、前記節電用翻訳制御部が、前記節電要求の強弱に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うことを特徴とする。
【００３２】
第４の発明は、第３の発明において、前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が所定基準より強い節電を要求するものである場合に前記プログラムの実行時翻訳の実行を否定し、前記節電要求が所定基準より弱い節電を要求するものである場合に前記プログラムの実行時翻訳の実行を許可することを特徴とする。
【００３３】
第５の発明は、第１の発明において、前記節電用翻訳制御部が、前記節電要求の有無または情報処理装置における電力消費状況に応じて、前記実行時翻訳の実行可否の決定基準を変更することを特徴とする。
【００３４】
第６の発明は、第５の発明において、前記決定基準は、前記プログラムの実行頻度に関して定められた所定実行頻度であり、前記記節電用翻訳制御部が、前記決定基準の変更に際し、前記節電要求が有った場合または前記電力消費状況が節電を要するものであった場合に、前記決定基準たる所定実行頻度を、前記節電要求が無かった場合または前記電力消費状況が節電を要しないものであった場合より高いものとすることを特徴とする。
【００３５】
第７の発明は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置であって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視する節電要求監視部と、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行う節電用翻訳制御部と、を有することを特徴とする。
【００３６】
第８の発明は、第７の発明において、前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が有る場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を否定し、前記節電要求が無い場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を許可することを特徴とする。
【００３７】
第９の発明は、第７の発明において、前記節電用翻訳制御部が、前記節電要求の強弱に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示またはハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うことを特徴とする。
【００３８】
第１０の発明は、第９の発明において、前記節電用翻訳制御部が、前記可否決定に際し、前記節電要求が所定基準より強い節電を要求するものである場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を否定し、前記節電要求が所定基準より弱い節電を要求するものである場合に前記プログラムの実行時翻訳またはインタプリタ処理の実行を許可することを特徴とする。
【００３９】
第１１の発明は、第７の発明において、前記節電用翻訳制御部が、前記節電要求の有無または情報処理装置における電力消費状況に応じて、前記実行時翻訳またはインタプリタ処理の実行可否の決定基準を変更することを特徴とする。
【００４０】
第１２の発明は、第１１の発明において、前記決定基準は、前記プログラムの実行頻度に関して定められた所定実行頻度であり、前記記節電用翻訳制御部が、前記決定基準の変更に際し、前記節電要求が有った場合または前記電力消費状況が節電を要するものであった場合に、前記決定基準たる所定実行頻度を、前記節電要求が無かった場合または前記電力消費状況が節電を要しないものであった場合より高いものとすることを特徴とする。
【００４１】
第１３の発明は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置による情報処理方法であって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視し、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うことを特徴とする。
【００４２】
第１４の発明は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置による情報処理方法であって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視し、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うことを特徴とする。
【００４３】
第１５の発明は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置により情報処理方法を実行させるプログラムであって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視するステップと、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示を行うステップと、を含むことを特徴とする。
【００４４】
第１６の発明は、ソースプログラムまたは中間語プログラムを解釈実行する解釈実行手段と、解釈実行手段と連動して前記プログラムに含まれる命令表現を情報処理装置のＣＰＵに固有の命令に変換するハードウェアアクセラレータと、前記プログラムを計算機固有の機械語プログラムへ翻訳する実行時翻訳手段とを備える情報処理装置により情報処理方法を実行させるプログラムであって、情報処理装置における電力消費の抑制を要求する、入力インターフェイスからの節電要求、または所定の記憶装置において予め定められた節電要求について、その存在を監視するステップと、前記節電要求の有無に応じて、前記実行時翻訳手段における前記プログラムの実行時翻訳の実行可否、または前記ハードウェアアクセラレータを伴う前記インタプリタ処理の実行可否を決定し、当該可否決定に基づいて前記実行時翻訳手段に対する実行時翻訳処理の実行指示または前記ハードウェアアクセラレータに対するインタプリタ処理の実行指示を行うステップと、を含むことを特徴とする。
【００４５】
その他、本願が開示する課題、及びその解決方法は、発明の実施の形態の欄、及び図面により明らかにされる。
【発明の効果】
【００４６】
本発明によれば、実行時翻訳と中間語解釈実行との配分を可変とし、適宜な実行速度を維持しつつ電力消費の抑制が可能となる。
【発明を実施するための最良の形態】
【００４７】
−−−実施例１−−−
本発明の実施の形態に関わる情報処理装置の構成について、図面を参照しながら説明する。なお、これにより本発明が限定されるものではない。図１は本発明の一実施形態による実行時プログラム翻訳方法を実施する情報処理装置の概略構成を示すブロック図である。
【００４８】
図１において、情報処理装置１は、中央処理装置１１０（ＣＰＵ等）、主記憶装置１２０、基本制御部１２１、中間語ファイル読み込み部１２２、中間語データ解釈実行部１２３、実行時翻訳部１２４、節電要求監視部１２６、節電用翻訳制御部１２９、入力装置１３０、表示装置１４０、通信装置１５０、およびバイトコードアクセラレータ１２３１を含むものとする。この情報処理装置１が扱うデータとしては、機械語データ１２５、中間語データ１２７、および外部記憶装置１６０が格納している中間語ファイル１６１があげられる。
【００４９】
また、前記バイトコードアクセラレータ１２３１は、スタックベースの中間言語（バイトコード）をレジスタベースの命令に変換するものであり、インタプリタ方式のままで、中間語を直接ハードウェア実行することで高速化を図るために用いられる。
【００５０】
前述において、主記憶装置１２０には、基本制御部１２１と、中間語ファイル読み込み部１２２と、中間語解釈実行部１２３と、実行時翻訳部１２４とがロードされて格納される。また、主記憶装置１２０には、中間語ファイル読み込み部１２２によって生成された中間語データ１２７、実行時翻訳部１２４によって生成された機械語データ１２５が格納される。また、外部記憶装置１６０には、中間語ファイル１６１が格納される。
【００５１】
前記基本制御部１２１は、本発明による情報処理方法を実施する情報処理装置全体を制御するプログラムであり、図示装置が立ち上げられたとき、中央処理装置１１０によって実行され、情報処理装置１のハードウェアとプログラムとの基本制御を行う。そして、情報処理装置１の各ハードウェアと各プログラムのイベント発生を検出して、電池残量不足を検出した場合には節電要求監視部１２６にその旨通知することも可能である。
【００５２】
前記中間語ファイル読み込み部１２２は、外部記憶装置１６０から中間語ファイル１６１を読み込み、中間語データ１２７を生成するプログラムである。外部記憶装置１６０は、通信装置１５０及びネットワークを介して存在しても、ローカルに存在してもよいものとする。
【００５３】
前記中間語解釈実行部１２３は、中間語データ１２７の解釈実行を行うインタプリタを一例として想定でき、中間語データ１２７を解釈して直接実行する。
【００５４】
前記実行時翻訳部１２４は、プログラム翻訳の実行部であり、中間語データ１２７のモジュールを選び出し、機械語データ１２５に変換する部である。なお、前記機械語データ１２５は、中央処理装置１１０に直接実行させることが可能な機械語で表現されたプログラムである。また、前記中間語データ１２７は、中間語ファイル１６１を主記憶装置１２０に読み込んだデータであり、中間語解釈実行部１２３によって１命令ずつ解釈実行される。
【００５５】
前記中間語ファイル１６１は、特定の計算機システムに依存しない仮想的な命令（中間語命令）で記述された中間語プログラムが格納されたファイルである。また、この中間語プログラムが或るソースプログラムを変換して得られたものである場合には、中間語プログラムの各部分が変換前のソースプログラムのどの部分に相当するかの対応づけが可能な情報が、このファイルに格納されている。
【００５６】
前記節電要求監視部１２６は、低消費電力運転が必要となる事象のひとつ、あるいは複数の事象を監視し検出する。たとえば節電要求監視部１２６は、情報処理装置１の電池残量の多少、及びソフトウェアの起動時や実行中にユーザからの要求を基本制御部経由で取得して、その内容に応じて節電要求度合い（節電要求強弱）を認識する。そして、節電要求監視部１２６は、前記節電要求度が高く節電が必要である状況（節電モードへの移行）を検出した場合に、主記憶装置１２０に存在するが図１には示していない、例えば所定記憶領域中において節電フラグをオン（ＯＮ）にする。また、節電要求監視部１２６は、逆に節電モードから通常運転（非節電モード）に戻る事象も検出し、前記節電フラグをオフ（ＯＦＦ）にする。
【００５７】
また、中間語ファイル読み込み部１２２と、中間語解釈実行部１２３と、実行時翻訳部１２４とは、基本制御部１２１によって、外部記憶装置１６０から主記憶装置１２０に読み込まれて中央処理装置１１０で実行される。
【００５８】
図２は中間語データ１２７の一例を示す図である。図２において、中間語データ１２７が含むのが中間語モジュール３００である。この中間語モジュール３００は、中間語モジュール３００のモジュール名３０１、この中間語モジュール３００に対応する管理データ３０５へのポインタ３０２、中間語モジュール３００を翻訳した結果得られる機械語データ１２５へのポインタ３０３、中間語モジュール３００の中間語プログラムの命令列を格納する中間語データ領域３０４により構成される。そして、この中間語データ１２７は、複数の中間語モジュール３００から構成される。
【００５９】
図３は機械語データ１２５の一例を示す図である。図３において、機械語データ１２５が含むのが、機械語モジュール４００である。この機械語モジュール４００は、複数の機械語命令を格納したデータ領域により構成される。そして、機械語データ１２５は、このような複数の機械語モジュール４００から構成される。
【００６０】
ここからは、以上図１〜図３で示した構成によって実施される、本発明の一実施の形態の情報処理装置の動作について説明する。
【００６１】
図４は本発明の一実施形態による翻訳方法を実行する際の、基本制御部１２１の起動時における処理手順を説明するフローチャートである。  
図４に示すフローは、基本制御部１２１が、中間語ファイル１６１を読み込んだ後、中間語解釈実行部１２３と、実行時翻訳部１２４とを起動する処理を示している。このとき、中間語解釈実行部１２３と、実行時翻訳部１２４とは並行して実行されても、直列に実行されてもよいものとする。  
（１）まず、基本制御部１２１は、中間語ファイル読み込み部１２２を起動し、中間語ファイル読み込み部１２２の処理が完了するのを待つ（ステップ５０１）。  
（２）基本制御部１２１は、中間語ファイル読み込み部１２２の処理の完了後、中間語解釈実行部１２３を起動する（ステップ５０２）。  
（３）次に、基本制御部１２１は、実行時翻訳部１２４を起動する（ステップ５０３）。
【００６２】
（３'）ただし、基本制御部１２１は、図１には示していない前記節電フラグがオンの場合には、すなわち、節電要求が発生した（節電モードに移行した）ことが検出されている場合に、実行時翻訳部１２４を起動しない（ステップ５０４、ステップ５０５）。この判定分岐は、このフローの通り基本制御部１２１が直接行っても、フローでは示されていないが節電翻訳制御部１２９経由で行ってもよい。これが、本発明に特徴的なステップである。
【００６３】
図５は中間語ファイル読み込み部１２２の処理手順を説明するフローチャートである。図５に示すフローは、中間語ファイル読み込み部１２２が、中間語ファイル１６１を読み込み、中間語データ１２７を生成する処理を示している。  
（１）中間語ファイル読み込み部１２２は、図４に説明したステップ５０１の処理で基本制御部１２１により起動されると、通信装置１５０及びネットワークを介して外部記憶装置１６０から中間語ファイル１６１を読み込む（ステップ６０１）。  
（２）次に、中間語ファイル読み込み部１２２は、中間語データ１２７を生成する。ここで、生成された中間語データ１２７は、図２で説明したように、複数の中間語モジュール３００により構成されている。中間語ファイル読み込み部１２２は、前記各モジュール毎に読みこんだモジュール名を前記モジュール名３０１の項目として格納し、管理データへのポインタ３０２と機械語データ１２５へのポインタ３０３とを"０"で初期化すると共に、中間語データ領域３０４に、読み込んだ中間語ファイルに格納されている中間語プログラムを書き込む（ステップ６０２）。
【００６４】
図６は中間語解釈実行部１２３の処理手順を説明するフローチャートである。図６に示すフローは、中間語解釈実行部１２３が、中間語データ１２７の解釈実行を繰り返す処理を示している。  
（１）中間語解釈実行部１２３は、図４で説明したステップ５０２の処理で基本制御部１２１により起動されると、中間語データ１２７から１つだけ中間語モジュール３００を選択する。初期状態では、"ＭＡＩＮ"をモジュール名３０１に持つ中間語モジュールを選択する（ステップ７０１）。  
（２）次に、中間語解釈実行部１２３は、ステップ７０１で選択した中間語モジュール３００が機械語プログラムへ翻訳済みか否かを判定し、翻訳済みであった場合、ステップ７０１で選択した中間語モジュール３００に含まれる機械語データ１２５へのポインタ３０３が指し示す機械語モジュール４００に格納された機械語プログラムを、基本制御部１２１に実行させ、実行終了後ステップ７０１の処理に戻る（ステップ７０２、７０３）。  
（３）他方、ステップ７０２で中間語モジュール３００が機械語プログラムに翻訳済みでないと判定された場合、中間語解釈実行部１２３はステップ７０１で選択した中間語モジュール３００に含まれる中間語データ領域３０４の１命令を読み込み、その命令が終了命令か否かを判定し、終了命令である場合処理を終了する（ステップ７０５、７０６）。  
（４）ステップ７０６の判定で読み込んだ命令が終了命令でなかった場合、中間語解釈実行部１２３は、ステップ７０５で読み込んだ命令が呼出し命令か否かを判定し、その命令が呼出し命令であった場合処理を終了し、そうでない場合、ステップ７０５で読み込んだ命令を直接実行した後、ステップ７０５の処理に戻って、次の命令の処理を続ける（ステップ７０７、７０８）。
【００６５】
図７は実行時翻訳部１２４の処理手順を説明するフローチャートである。図７に示すフローは、中間語プログラムを機械語プログラムへ翻訳する処理に相当し、中間語モジュール３００から他の中間語モジュールへの呼出し命令がある場合に、呼び出される中間語モジュール３００から先に再帰的に機械語プログラムに翻訳し、機械語データ１２５へのポインタ３０３が指し示す機械語モジュール４００に格納する処理を示している。  
（１）実行時翻訳部１２４は、引数で渡される中間語モジュール３００に含まれる中間語データ領域３０４から中間語命令を１つだけ読み出し、読み出した中間語命令が他のモジュールへの呼出し命令か否かを判定する（ステップ８０１、８０２）。  
（２）ステップ８０２の判定で、読み出した中間語命令が他のモジュールへの呼出し命令である場合、呼出し先の中間語モジュールを引数に実行時翻訳部１２４を再帰的に呼び出して、その中間語モジュールに対して中間語プログラムを機械語プログラムへ翻訳する処理を開始させる（ステップ８０４）。  
（３）ステップ８０２の判定で、読み出した中間語命令が他のモジュールへの呼出し命令でなかった場合、実行時翻訳部１２４は、ステップ８０１で読み出した中間語命令を機械語命令に変換し機械語モジュール４００に書き込む（ステップ８０３）。  
（４）次に、実行時翻訳部１２４は、ステップ８０１で引数として渡された中間語モジュール３００に含まれる中間語モジュール３００に未処理の中間語命令が残っているか判定し、残っている場合、ステップ８０１の処理に戻り、次の中間語命令に対する処理を続ける（ステップ８０５）。  
（５）ステップ８０５の判定で、未処理の中間語命令が残っていなかった場合、実行時翻訳部１２４は、機械語モジュール４００を指し示すポインタを、機械語データ１２５へのポインタ３０３に格納する（ステップ８０６）。
【００６６】
以上、本発明の実施例１について説明したが、本発明は上述した実施形態に限定されるものではない。本発明は、上述した説明から可能な範囲で、また、本発明の実施例１から導かれる範囲で、種々の変形例が可能である。例えば、上述した実施形態は、ソフトウェアを含むものであるが、本発明は、ハードウェアとソフトウェアとの組み合わせ、又はハードウェアのみによって実装され得るものである。本発明は、様々なプログラミング言語によって実装することができる。
【００６７】
−−−実施例２−−−
実施例２では、節電用翻訳制御部１２９を、実行時翻訳への移行を実行時プロファイルにより限定的に行うプロファイル付き実行時翻訳（以下、この実施例２では「公知の実行時翻訳」と称する）に組み合わせる。そこで、公知の実行時翻訳（節電効果を意識しない実行時翻訳）と比較しながら以下に説明する。
【００６８】
本発明の実施の形態に関わる情報処理装置の構成について、図面を参照しながら説明する。この実施形態を示す図８においては、図１の構成要素に、実行時情報計測プログラム１５、計測記録テーブル１７、翻訳条件設定テーブル１８、および翻訳制御部１２８、さらには、節電用翻訳条件設定テーブル１９が、追加されている。また節電用翻訳制御部１２９は、実施例１の節電用翻訳制御部よりも細かな制御を行う。そのほかの共通要素については、図１と同等な機能を有する。
【００６９】
このうち、実行時情報計測プログラム１５、計測記録テーブル１７、翻訳条件設定テーブル１８、および翻訳制御部１２８は、「特許文献３」のような公知のプロファイリング付きの実行時翻訳でも使われる構成要素と同等の機能を有するものである。一方、節電用翻訳条件設定テーブル１９、および節電用翻訳制御部１２９は、本発明に特徴的な構成要素である。
【００７０】
前記実行時情報計測プログラム１５は、実行時情報を計測するプログラムである。実行時情報としてはメソッド（後述）等の処理の呼び出し回数（実行頻度）を指標として以下論じるが、実行時情報の指標としては、中間語種の出現比率（実行頻度）でもよく、またさらに他の指標を用いてもよい。  
また、前記計測記録テーブル１７は、実行時情報計測プログラム１５によって、実行時情報が記録される領域である。翻訳条件設定テーブル１８は、実行時翻訳を許可する条件が記録される領域である。  
翻訳制御部１２８は、計測記録テーブル１７および翻訳条件設定テーブル１８の記載内容に基づいて、実行時翻訳部１２４を起動するか否かを判定する。  
節電用翻訳制御部１２９は、計測記録テーブル１７および翻訳条件設定テーブル１８に加えて、節電用翻訳条件設定テーブル１９の記載内容に基づいて、実行時翻訳部１２４を起動するか否かを判定する。
【００７１】
図９に、本発明の実施例２における計測記録テーブル１７の構成を示す。当該計測記録テーブル１７は、計測点番号１７２、シンボル名１７３、の情報を有する。前記シンボル名１７３は、当該計測点番号１７２に対応している。図９の例では、実行時情報として呼び出し回数を採用しており、一例としてメソッドＡの呼び出し回数が計測点番号１、メソッドＢの呼び出し回数が計測点番号２として登録されている様子を示している。  
前記メソッドＡが呼ばれた際には計測点番号１に関わる通過回数欄１７１０の更新を実行時情報計測プログラム１５が行う（１回呼ばれるにつき１加算する等）。
【００７２】
図１０に、本発明の実施例２における翻訳条件設定テーブル１８の構成を示す。このテーブルは、基本制御部１２によって、実行時翻訳の要否判定のために参照される。このテーブルにおいて、設定値１８１の欄は、実行時翻訳を許可するしきい値（決定基準）が記載される。図１０の例では、翻訳開始回数下限１８３、すなわち、何回以上当該計測点が呼び出されたら実行時翻訳を必要とみなすかが、しきい値として指標に設定されている。
【００７３】
図１１に、本発明の実施例２における節電用翻訳条件設定テーブル１９の構成を示す。翻訳回数下限（節電要求時）１９１の欄は、実行時翻訳を許可するしきい値（決定基準）が記載される。図１１の場合は、実行時翻訳を許可するために必要な当該計測点の呼び出し回数の下限１９１０として１００００が設定されている。これは、翻訳条件設定テーブル１８の下限回数１８１０（例では値が“１００”）と比べると実行時翻訳へのしきいが高いことを意味しており、この節電要求時のしきい値を用いると、実行時翻訳が節電要求前よりも劣勢になる。結果として、実行時翻訳に伴う電力消費を抑制でき節電になる。
【００７４】
図１２は公知の実行時翻訳にいたる基本制御部１２１の起動時における処理手順を説明するフローチャートである。節電効果は意識しない処理手順に相当する。図１２に示すフローは、基本制御部１２１が、中間語ファイル１６１を読み込んだ後、中間語解釈実行部１２３と、実行時翻訳部１２４とを起動する処理を示している。このとき、中間語解釈実行部１２３と、実行時翻訳部１２４とは並行して実行されるて直列に実行されてもよい。
【００７５】
（１）まず、基本制御部１２１は、中間語ファイル読み込み部１２２を起動し、中間語ファイル読み込み部１２２の処理が完了するのを待つ（ステップ１１０１）。  
（２）基本制御部１２１は、中間語ファイル読み込み部１２２の処理の完了後、中間語解釈実行部１２３を起動する（ステップ１１０２）。
【００７６】
以下、ステップ１１０２で起動された中間語解釈実行部１２３の処理について説明する。図１３は実施例２における中間語解釈実行部１２３の処理手順を説明するフローチャート（公知）である。このフローチャートでは、中間語解釈実行部１２３が、中間語データ１２７の解釈実行を繰り返す処理を示している。
【００７７】
（３−１）中間語解釈実行部１２３は、図５に説明したステップ５０２の処理で基本制御部１２１により起動されると、中間語データ１２７から１つだけ中間語モジュール３００を選択する。初期状態では、"ＭＡＩＮ"をモジュール名３０１に持つ中間語モジュールを選択する（ステップ１２０１）。
【００７８】
（３−２）中間語解釈実行部１２３は、ステップ１２０１で選択した中間語モジュール３００が機械語プログラムへ翻訳済みか否かを判定し、翻訳済みであった場合、ステップ１２０１で選択した中間語モジュール３００に含まれる機械語データ１２５へのポインタ３０３が指し示す機械語モジュール４００に格納された機械語プログラムを、基本制御部１２１に実行させ、実行終了後ステップ１２０１の処理に戻る（ステップ１２０２、１２０３）。
【００７９】
（３−３）次に、中間語解釈実行部１２３は、実行時情報計測プログラム１５を起動する（ステップ１２０４）。起動された実行時情報計測プログラム１５は、公知である所定の実行時情報計測のための処理を実施する。公知である所定の実行時情報計測の処理の一例として、ここでは呼び出し回数を記録していく。すなわち、実行時情報記録テーブル１７の通過回数１７１の欄の更新（カウントアップ）を、実行時情報計測プログラム１５が実施する。
【００８０】
たとえば、解釈しようとしている中間語がメソッドＡだとすると、実行時情報計測プログラム１５は、計測点１の通過回数が１回増えるという情報を残すために、記録されている数値を１加算して１７１０の欄を上書きする。また、メソッドＢである場合には、計測点２の通過回数が１回増えたことを示す情報をテーブル１７１１に記録する。
【００８１】
（３−４）中間語解釈実行部１２３は、ステップ１２０１で選択した中間語モジュール３００に含まれる中間語データ領域３０４の１命令を読み込み、その命令が終了命令か否かを判定し、終了命令である場合処理を終了する（ステップ１２０５、１２０６）。
【００８２】
（３−５）ステップ１２０６の判定で読み込んだ命令が終了命令でなかった場合、中間語解釈実行部１２３は、ステップ１２０５で読み込んだ命令が呼出し命令か否かを判定し、その命令が呼出し命令であった場合処理を終了し、そうでない場合、ステップ１２０５で読み込んだ命令を直接実行する。バイトコードアクセラレータ１２３１が搭載されている場合にはここで併用される。その実行後、ステップ７０５の処理に戻って、次の命令の処理を続ける（ステップ１２０７、１２０８）。
【００８３】
以上が中間語解釈実行部１２３の処理である。次に、図１２のフローチャートにおけるステップ１１０３以降に説明を戻す。
【００８４】
（４）基本制御部１２１は、翻訳制御部１２８を起動する（ステップ１１０３）。翻訳制御部１２８の処理フローを図１４に示す。ここではメソッドＡを対象にした例を示す。まず、翻訳制御部１２８は、当該計測点（メソッドＡ）が翻訳されているかを確認する（ステップ１５０１）。翻訳済みであれば何もせずに終了する（ステップ１５１２）。翻訳済みでなければ、翻訳制御部１２８は、実行時情報を参照し、条件つきで実行時翻訳を行う。
【００８５】
他方、前記ステップ１５０１において、計測点（メソッドＡ）が翻訳されていないと判定された場合、条件判定のために、翻訳制御部１２８は、計測記録テーブル１７および翻訳条件設定テーブル１８の記載内容を参照する（ステップ１５０２、１５０４、１５０５，１５０６）。すなわち、計測記録テーブル１７、翻訳条件設定テーブル１８の内容次第で、翻訳制御部１２８の動作は、次の２通りに、分かれる。  
（ａ）通過回数が翻訳開始回数下限１８１０に到達した場合、つまり翻訳開始回数下限＜＝通過回数のとき、図８に示していない実行時翻訳要求フラグをＯＮにする。（実行時翻訳を行わせる）（ステップ１５１０、ステップ１５１１）。  
（ｂ）通過回数が翻訳開始回数下限に到達していない場合、つまり、翻訳開始回数下限＞通過回数のとき、前記実行時翻訳要求フラグをＯＦＦにする。（実行時翻訳は行わせない）（ステップ５１１）。
【００８６】
以上が、翻訳制御部１２８の処理である。次に、図１２のフローチャートにおけるステップ１１０４以降に説明を戻す。
【００８７】
（５）次に、基本制御部１２１は、前記実行時翻訳要求フラグがＯＮの場合には、実行時翻訳部１２４を起動する（ステップ１１０４、ステップ１１０５）。同ＯＦＦの場合には何もせずに終了する。こうして、実行時翻訳がなされる場合となされない場合との分岐が生じる。
【００８８】
実行時翻訳部１２４の処理手順については、実施例１で示した図７の手順と同一である。以上で公知の実行時翻訳の手順は終了する。この公知の実行時翻訳においては、節電用翻訳条件設定テーブル１９と節電用翻訳制御部１２９が関与しない。一方ここから説明する本発明の実施例２においては、節電用翻訳条件設定テーブル１９と節電用翻訳制御部１２９の関与が、公知の実行時翻訳と比べて特徴的である。節電要求監視部１２６が節電モードへの移行を検知した場合には、節電用翻訳制御部１２９が、その直前に実行していた環境よりも、実行時翻訳の起きやすさを変える制御を行うことが本発明で特徴的である。
【００８９】
以下、図を参照して本発明の実施例２に特徴的な処理手順を説明する。なお、これにより本発明が限定されるものではない。図１５は、本発明に特徴的な節電効果をふまえて実行時翻訳行うまでの処理手順を説明するフローチャートである。図１５に示すフローは、基本制御部１２１が、中間語ファイル１６１を読み込んだ後、中間語解釈実行部１２３と、実行時翻訳部１２４とを起動する処理を示している。このとき、中間語解釈実行部１２３と、実行時翻訳部１２４とは並行して実行されても、直列に実行されてもよい。
【００９０】
（１）まず、基本制御部１２１は、中間語ファイル読み込み部１２２を起動し、中間語ファイル読み込み部１２２の処理が完了するのを待つ（ステップ１４０１）。  
（２）基本制御部１２１は、中間語ファイル読み込み部１２２の処理の完了後、中間語解釈実行部１２３を起動する（ステップ１４０２）。  
（３）中間語解釈実行部１２３は上述の図１２のフローと同等に処理が進む。ここまでは、公知の処理フローと同等である。  
（４）次に、基本制御部１２１は、公知の実行時翻訳と異なり、翻訳制御部１２８ではなく節電用翻訳制御部１２９を起動する（ステップ１４０３）。これが、本発明に特徴的な実行時翻訳に固有のステップである。
【００９１】
節電用翻訳制御部１２９の処理フローを図１６に示す。メソッドＡを対象にした例で示す。まず、当該計測点（メソッドＡ）が翻訳されているかを確認する（ステップ１６０１）。翻訳済みであれば何もせずに終了する（ステップ１６１２）。翻訳済みでなければ、節電用翻訳制御部１２９は、節電フラグを参照する（ステップ１６０３）。
【００９２】
節電フラグがＯＦＦを示している場合には、公知の実行時翻訳と同じく、節電用翻訳制御部１２９は、計測記録テーブル１７および翻訳条件設定テーブル１８の記載内容を参照する（ステップ１６０２、１６０７、１６０８、１６０９）。すなわち、計測記録テーブル１７、翻訳条件設定テーブル１８の内容次第で、動作は、次の２通りに、分かれる。
【００９３】
（ａ）通過回数が翻訳開始回数下限に到達した場合、つまり、翻訳開始回数下限＜＝通過回数のとき、前記実行時翻訳要求フラグをＯＮにする。（実行時翻訳を行わせる）（ステップ１６１０、ステップ１６１１）。    
（ｂ）通過回数が翻訳開始回数下限に到達していない場合、つまり翻訳開始回数下限＞通過回数のとき、前記実行時翻訳要求フラグをＯＦＦにする。（実行時翻訳は行わせない）（ステップ１６１１）。
【００９４】
一方、節電フラグがＯＮの場合には、節電用翻訳制御部１２９は、計測記録テーブル１７、および公知の実行時翻訳とは異なり、節電用翻訳条件設定テーブル１９の記載内容を参照する（ステップ１６０２、１６０４、１６０５、１６０６）。すなわち、計測記録テーブル１７、節電用翻訳条件設定テーブル１９の内容次第で、動作は、次の２通りに、分かれる。
【００９５】
（ａ）通過回数が翻訳開始回数下限（節電要求時）１９１０に到達した場合、つまり、翻訳開始回数下限（節電要求時）＜＝通過回数のとき、前記実行時翻訳要求フラグをＯＮにする。（実行時翻訳を行わせる）（ステップ１６１０、ステップ１６１１）。  
（ｂ）通過回数が翻訳開始回数下限（節電要求時）（１９１０）に到達していない場合、つまり翻訳開始回数下限（節電要求時）＞通過回数のとき、前記実行時翻訳要求フラグをＯＦＦにする。（実行時翻訳は行わせない）（ステップ１６１１）。
【００９６】
以上が節電用翻訳制御部１２９の処理である。次に、図１５のフローチャートにおけるステップ１４０４以降に説明を戻す。
【００９７】
（５）次に、基本制御部１２１は、前記実行時翻訳要求フラグがＯＮの場合には、実行時翻訳部１２４を起動する（ステップ１４０４、ステップ１４０５）。同ＯＦＦの場合には何もせずに終了する。こうして、実行時翻訳がなされる場合となされない場合との分岐が生じる。
【００９８】
実行時翻訳部１２４の処理手順については、実施例１で示した図８の手順と同一である。以上、本発明の実施例２について説明したが、本発明は上述した実施形態に限定されるものではない。本発明は、上述した説明から可能な範囲で、また、本発明の実施例２から導かれる範囲で、種々の変形例が可能である。例えば、上述した実施形態は、ソフトウェアを含むものであるが、本発明は、ハードウェアとソフトウェアとの組み合わせ、又はハードウェアのみによって実装され得るものである。本発明は、様々なプログラミング言語によって実装することができる。
【００９９】
また、節電用翻訳制御部１２９による制御の手段の一例として、節電用翻訳条件設定テーブル１９を用いずに、翻訳条件設定テーブル１８の設定値を更新することも可能である。すなわち、実行時翻訳のしきいを高くして実行時翻訳が節電要求前よりも劣勢にする目的であれば、翻訳条件設定テーブル１８の設定値１８１を、大きい値に変更してもよい。
【０１００】
また、実施例１および実施例２の双方ともに、節電モード指定の有無の２値での動作分岐で示したが、電池残量の値の連続的な変化を取得し、数値の変化分だけ細かく動作を制御（しきい値を連続的に変化）させてもよい。
【０１０１】
また、計測記録テーブル１７は、中間語モジュール３００に対応する管理データ３０５に格納して実行してもよい。
【０１０２】
なお、実行時翻訳を抑制し、中間語による実行を優先した場合に、中間語（バイトコード）のバイトコードアクセラレータによるサポート語の出現比率があまりにも低いケースも起こりうる。
【０１０３】
このケースでは、中間語実行の過半がソフトウェアの中間語解釈実行部に委ねられ著しく実行速度が低下するだけでなく、ＣＰＵ負荷（ダイナミックステップ）が増える分だけ電力消費が増える、すなわち、実行時翻訳を抑制したのに節電に逆効果ということになりかねない。この節電面での逆効果に歯止めをかけるために、（実行時翻訳を抑制するだけでなく）実行時翻訳への移行を緩和する条件を併用してもよい。いずれにしても実行時翻訳への条件設定において節電効果をふまえる点では共通であり、本発明の趣旨を逸脱しない範囲で実施できる。
【０１０４】
さらに、バイトコードアクセラレータ１２３１が備わっていない構成であってもよい。バイトコードアクセラレータ１２３１は備わっていない構成であっても、実行翻訳の頻度が、電力消費と実行速度等のほかの性能項目との間でのトレードオフを発生させるような、情報処理装置ならば、本発明の趣旨を逸脱しない範囲で実施できるためである。
【０１０５】
また、上記実施の形態では、ハードディスク等の外部記憶装置１６０に格納された諸構成要素が主記憶装置１２１に転送して参照されたり実行されたりするものとして示したが、このような諸手段はＣＤ−ＲＯＭやフロッピーディスク等の外部記憶媒体、あるいはフラッシュＥＥＰＲＯＭ等の半導体メモリを含む記憶媒体に格納されているものを読み出して使用するものとしてもよいし、データ通信によって外部から伝送されてきたものをなんらかの記憶媒体に格納するものとしてもよい。
【０１０６】
また、本実施形態においては、ハードウェアアクセラレータにおける前記インタプリタ処理が、実行時翻訳手段における実行時翻訳の処理よりも電力消費が少ないことを前提として説明を行ったが、前記インタプリタ処理が前記実行時翻訳の処理より電力消費が多い状況が存在した場合、請求項７〜１２に記載した通り、実行時翻訳の実行可否を判断するのに代わって、インタプリタ処理の実行可否を判断し、その後の実行指示をなすものとできる。
【０１０７】
本発明によれば、状況選択的に実行時翻訳と中間語解釈実行との配分を変更することで、高い水準の実行速度を維持したまま情報処理装置の電力消費を抑制できる。特に、ハードウェアクセラレータによって中間語をＣＰＵに固有の命令に変換する情報処理装置において、一層の高速化を目的に実行時翻訳（ＪＩＴコンパイラ）を併用する場合に、節電が必要な状況においては電力消費面で抑制のききやすい方式（一般的にはバイトコードアクセラレータを伴う中間語解釈実行方式）の実行頻度を上げ、逆に節電よりも高速化が重視される状況においては実行時翻訳の実行頻度を上げることで、電力消費と実行速度のトレードオフを、最適化することが容易になる。
【０１０８】
したがって、実行時翻訳と中間語解釈実行との配分を可変とし、適宜な実行速度を維持しつつ電力消費の抑制が可能となる。
【０１０９】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施の形態における情報処理装置（実施例１）の構成を示す図である。
【図２】中間語データの一例を示す図である。
【図３】機械語データの一例を示す図である。
【図４】基本制御部の処理フローを示す図である。
【図５】中間語ファイル読み込み部の処理フローを示す図である。
【図６】中間語解釈実行部の処理フローを示す図である。
【図７】実行時翻訳部の処理フローを示す図である。
【図８】本発明の一実施の形態における情報処理装置（実施例２）の構成を示す図である。
【図９】本発明の一実施の形態における計測記録テーブルを示す図である。
【図１０】本発明の一実施の形態における翻訳条件設定テーブルを示す図である。
【図１１】本発明の一実施の形態における節電時翻訳条件設定テーブルを示す図である。
【図１２】実施例２における公知の実行時翻訳に関わる基本制御部の処理フローを示す図である。
【図１３】実施例２における中間語解釈実行部の処理フローを示す図である。
【図１４】実施例２における公知の実行時翻訳に関わる翻訳制御部の処理フローを示す図である。
【図１５】実施例２における本発明の基本制御部の処理フローを示す図である。
【図１６】実施例２における本発明の節電用翻訳制御部の処理フローを示す図である。
【符号の説明】
【０１１１】
１  情報処置装置
１１０  中央処理装置
１２０  主記憶装置
１２１  基本制御部
１２２  中間語ファイル読み込み部
１２３  中間語解釈実行部、解釈実行手段
１２４  実行時翻訳部、実行時翻訳手段
１２５  機械語データ
１２６  節電要求監視部
１２７  中間語データ
１２８  翻訳制御部
１２９  節電用翻訳制御部
１３０  入力装置
１４０  表示装置
１５０  通信装置
１６０  外部記憶装置
１６１  中間語ファイル
３００  中間語モジュール
３０１  モジュール名
３０２  管理データへのポインタ
３０３  機械語データへのポインタ
３０４  中間語データ領域
３０５  中間語モジュールに対応する管理データ
４００  機械語モジュール
１２３１バイトコードアクセラレータ
【図１】
2006126947.tif 000003
【図２】
2006126947.tif 000004
【図３】
2006126947.tif 000005
【図４】
2006126947.tif 000006
【図５】
2006126947.tif 000007
【図６】
2006126947.tif 000008
【図７】
2006126947.tif 000009
【図８】
2006126947.tif 000010
【図９】
2006126947.tif 000011
【図１０】
2006126947.tif 000012
【図１１】
2006126947.tif 000013
【図１２】
2006126947.tif 000014
【図１３】
2006126947.tif 000015
【図１４】
2006126947.tif 000016
【図１５】
2006126947.tif 000017
【図１６】
2006126947.tif 000018