(57)【要約】【課題】ユーザーインターフェースを実現するＪａｖａ（登録商標）プログラムを実行する場合、中間語の高速実行手法であるＪＩＴコンパイラが原因で生じる遅延を、バイトコードアクセラレータを使用して解消する手段を提供する。【解決手段】Ｊａｖａ（登録商標）仮想マシンが中間言語ファイルを読み込む際にそのファイルがユーザーインターフェースにかかわる処理かどうかをＪａｖａ（登録商標）クラスライブラリのＧＵＩを実装するクラスから呼び出されているかという基準で判定し、ユーザーインターフェースにかかわる処理であればバイトコードアクセラレータで、そうでなければＪＩＴコンパイラで処理後に中央演算装置で処理する。【選択図】図１
2011186790.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラミング言語の中間語を高速実行すべく、前記中間言語を収めた中間語ファイルを外部記憶装置から読み込む中間語ファイル読み込み部と、バイトコードアクセラレータと、ＪＩＴ（ジャストインタイム）コンパイラと、前記中間語ファイルを前記ＪＩＴコンパイラで処理した後に中央演算装置で実行を行うか、前記中間語ファイルをバイトコードアクセラレータで実行するかのいずれかを選択し中間語実行を進行させる中間語実行制御部とを備える中間語高速実行処理選択装置であって、
前記中間語ファイル読み込み部は、
前記中間語ファイルがプログラミング言語で規定するクラスライブラリのうちユーザインターフェースにかかわるクラスから実行されているかを判定するＧＵＩ関連判定手段と、
該ＧＵＩ関連判定手段にて該中間語ファイルがユーザインらフェースにかかわるクラスから実行されていると判定された場合、前記中間語ファイルをメモリ上に読み込む際に専用領域に所定のマークを付与するバイトコードアクセラレータ実行マーク付与手段と
を有し、
前記中間語実行制御部は、
前記バイトコードアクセラレータ実行マーク付与手段が付与した所定のマークの有無を確認するマーク有無確認手段と、
該マーク有無確認手段がマーク有りと判定した場合に、当該中間語ファイルを前記バイトコードアクセラレータで実行するバイトコードアクセラレータ実行手段と、
前記マーク有無確認手段がマーク無しと判定した場合に、当該中間語ファイルを前記ＪＩＴコンパイラにて処理した後、中央演算装置で実行させるＪＩＴコンパイラ処理後実行手段と
を有し、
ユーザインターフェースの応答性を向上させる観点から前記二つの高速化手法を使い分けることを特徴とする中間語高速実行処理選択装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｊａｖａ（登録商標）の中間語（バイトコード）で構成されるプログラム を高速実行する手法として、バイトコード実行ハードウェアアクセラレータ（バイトコードアクセラレータ）とＪｕｓｔ Ｉｎ Ｔｉｍｅ（ＪＩＴ）コンパイラの二つを実装しているＪａｖａ（登録商標）仮想マシンにおいて、その二つを効率的に使い分ける手段に関する。
【背景技術】
【０００２】
Ｊａｖａ（登録商標）のバイトコード実行を高速化する手法として、バイトコード実行をハードウェアで実行するもの（バイトコードアクセラレータ）と、実行時にバイトコードを同等の処理を行う機械語に一括翻訳しプロセッサで直接実行させるもの（ＪＩＴコンパイラ）とがある。
【０００３】
これら二つの手法には利点と欠点が存在する。ＪＩＴコンパイラは、特別なハードウェアを必要としない純粋にソフトウェア的なアプローチで、如何なるバイトコードも機械語に変換して高速実行を行うことが可能だが、実行前に翻訳のための時間が必要なこと、またソフトウェア処理が増えてしまうことによる消費電力の増加が伴う。一方バイトコードアクセラレータは特別なハードウェアを必要とするが、ＪＩＴコンパイラでは必要とされた翻訳のための時間は必要なく、即時にバイトコードの実行を行うことができる。また消費電力もＪＩＴコンパイラで処理する場合に比べて低い。ただ、一部バイトコードはバイトコードアクセラレータでは処理できず、通常どおりＪａｖａ（登録商標）仮想マシンで処理される。その際の処理速度は高速化されない。
【０００４】
このように二つの手法はそれぞれ利点と欠点を有しているが、適切に使い分けることでよりよい結果を得ることができる。例えば特許文献１に開示されている手法では、ＪＩＴコンパイラよりバイトコードアクセラレータでの処理のほうが低消費電量を実現できることに着目し、入力インターフェースからの要求をきっかけとして、二つの高速実行手法の使い分けを行い、消費電量の削減を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１２６９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、常時電源に接続されている、例えば地上波デジタルテレビやブルーレイプレーヤのようなデジタル家電については、低消費電量は必達の課題ではなく、それとは違った視点から二つの高速実行手法の使い分けを図る必要がある。
【０００７】
例えばデジタル家電のユーザーインターフェース画面がＪａｖａ（登録商標）プログラムとして作成されているケースで、インターフェース処理（ボタンの押下等）に関連付けられた処理に対してＪＩＴコンパイラによるバイトコード変換が行われた場合、その変換処理に時間がかかり、インターフェース処理に応じて生じる効果（画面の遷移等）に遅延が発生する。この遅延はインターフェースの操作者の不満の一因となる。
【０００８】
本発明では、上記のような場面でＪＩＴコンパイラとバイトコードアクセラレータを適切に使い分けることによって、インターフェース処理に応じて生じる効果の遅延を解消することを目的とする。
【課題を解決するための手段】
【０００９】
Ｊａｖａ（登録商標）仮想マシンが、中間語ファイルを読み込む際に、その実行内容がユーザーインターフェースに関わる処理であることを判定し、その実行時に読み込み時の判定に基づいてＪＩＴコンパイラでの処理を行うかバイトコードアクセラレータで実行を行うかを決定する。読み込み時の判定にはプログラミング言語Ｊａｖａ（登録商標）の仕様で規定されるクラスライブラリに基づく特徴量を用いる。
【発明の効果】
【００１０】
本発明により、ユーザーインターフェース処理にＪＩＴコンパイルによる遅延を発生させることなく、インターフェース処理に応じた効果を即時に発効させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の前提とするシステムの構成図である。
【図２】ＪＩＴコンパイラとハードウェアアクセラレータを選択する手法を説明するフローチャートである。
【図３】Ｊａｖａ（登録商標）仮想マシンスタックのデータ構造を示すブロック図である。
【図４】Ｊａｖａ（登録商標）フレーム内部構造を示すブロック図である。
【発明を実施するための形態】
【００１２】
図１に挙げるシステム構成を前提とする。Ｊａｖａ（登録商標）仮想マシン（１００）は、中間言語の実行を行う際、その中間言語を収めた中間語ファイル（１０７）を外部記憶装置（１０６）から中間語ファイル読み込み部（１０２）を通じて読み込む。中間語実行制御部（１０１）は、中間語ファイル読み込み部（１０２）が読み込んだ中間語ファイル（１０７）を、ＪＩＴコンパイラ（１０３）で処理した後に中央演算装置（１０４）で実行を行うか、読み込んだ中間語ファイル（１０７）をバイトコードアクセラレータ（１０５）で実行するかのいずれか選択し、中間語実行を進行させる。
【００１３】
いずれの方法を選択するかは図２の手順により実現する。
【００１４】
中間語ファイル読み込み部（１０２）は、中間語ファイル（１０７）を読み込む際に、ＧＵＩ関連判定（２０５）を行う。ＧＵＩ関連判定（２０５）では、その中間語ファイルがプログラミング言語Ｊａｖａ（登録商標）で規定するクラスライブラリのうち、ユーザーインターフェースにかかわるクラスから実行をされているかを確認する。ユーザーインターフェースにかかわるクラスから実行をされていると判定された場合、中間語ファイル（１０７）をメモリ上に読み込む際に専用領域にＧＵＩ関連の処理である旨のマークを記録する（２０１）。
【００１５】
ＧＵＩ関連判定（２００）は、図３及び図４によって説明されるデータ構造によって達成される。Ｊａｖａ（登録商標）仮想マシン（１００）は、メソッドの呼び出し関係をＪａｖａ（登録商標）仮想マシンスタック（３００）とＪａｖａ（登録商標）フレーム（３０１）で管理する。Ｊａｖａ（登録商標）仮想マシン（１００）は、メソッド呼び出しを行う前に、メソッドの属性データ等を記録した新規Ｊａｖａ（登録商標）フレーム（３０２）を作成し、これをＪａｖａ（登録商標）仮想マシンスタック（３００）に保持する。Ｊａｖａ（登録商標）仮想マシンスタック（３００）はスレッドごとに生成される。
【００１６】
Ｊａｖａ（登録商標）フレーム（３０２）は、図４で示される構造を持つ。メソッド完全修飾名（４００）はメソッド名を、そのメソッドを所有するクラス名及びメソッドを所有するクラスが所属するパッケージ名を付加して表現する。例えばＡパッケージに所属するＢクラスが所有するＣメソッドであれば「Ａ.Ｂ.Ｃ」のような表現となる。当該スレッド内でのメソッド呼び出し関係はＪａｖａ（登録商標）仮想マシンスタック（３００）に保持された各Ｊａｖａ（登録商標）フレーム（３０２）が有するメソッド完全修飾名（４００）を、上位から順に走査することで確認できる。ＧＵＩ関連クラスは完全修飾名（４００）として、文字列“java.awt”から始まる特定の名前を有している。Ｊａｖａ（登録商標）仮想マシン（１００）は新規Ｊａｖａ（登録商標）フレーム（３０２）を作成する際、Ｊａｖａ（登録商標）仮想マシンスタック（３００）に対する走査を行い、既存のＪａｖａ（登録商標）フレーム（３０２）の完全修飾名（４００）に“java.awt”から始まる特定の名前を発見した場合、ハードウェア実行マーク（４０２）領域にフラグを設定する。
【００１７】
中間語ファイル実行（２０２）処理ではＪａｖａ（登録商標）フレーム（３０２）内のハードウェア実行マーク（４０２）の有無を確認し、マークがあれば処理（２０３）にて当該中間語をバイトコードアクセラレータ（１０５）で実行し、マークがなければ処理（２０４）にて、その中間語をＪＩＴコンパイラ（１０３）で処理した後、中央演算装置（１０４）で実行させる。
【産業上の利用可能性】
【００１８】
デジタル家電への組込みシステムのみならず、企業の情報システムを担うサーバや、スーパーコンピュータに至るまで利用可能である。
【符号の説明】
【００１９】
１００  Ｊａｖａ（登録商標）仮想マシン
１０１  中間語実行制御部
１０２  中間語ファイル読み込み部
１０３  ＪＩＴコンパイラ
１０４  中央演算装置
１０５  バイトコードアクセラレータ
１０６  外部記憶装置
１０７  中間語ファイル
【図１】
2011186790.tif 000003
【図２】
2011186790.tif 000004
【図３】
2011186790.tif 000005
【図４】
2011186790.tif 000006