(57)【要約】【課題】「アクセレラレータ適性度合いポイント」に基づいた「ＪＩＴ適用判定基準」の最適化により、プログラムを高速化する技術、また、上記最適化により、コンパイル対象範囲を抑えてメモリ使用量を低減させる技術を提供する。【解決手段】プログラム実行システムの仮想マシン２において、プログラムコンパイル、解析を担当するタスクで、中間コードを入力しプログラム部分毎の静的な「アクセレラレータ適性度合いポイント」を検出して「ＪＩＴ適用判定基準情報」を出力し、次に、プログラム実行を担当するタスクで、中間コードもしくはネイティブコードを入力してプログラム実行し、プログラム部分毎の「ＪＩＴ適用判定基準情報」から「アクセレラレータ」と「ＪＩＴ」の適用判定を行い、「アクセレラレータを有するインタープリタ」、もしくは「ＪＩＴ」でプログラムを実行する。【選択図】図１
2009009253.tif 000002
【特許請求の範囲】
【請求項１】
計算機により、
ソースプログラムから変換された中間コードを入力し、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップと、
前記「アクセレラレータ適性度合いポイント」に基づき「ＪＩＴ適用判定基準情報」を決定するステップと、
前記「ＪＩＴ適用判定基準情報」に基づき「アクセレラレータを有するインタープリタ」と「ＪＩＴ」の適用判定を行うステップと、
前記適用判定の結果に基づき前記「アクセレラレータを有するインタープリタ」による実行と前記「ＪＩＴ」による実行を切り分けてプログラムを実行するステップと、
を実行することを特徴とするプログラム実行方法。
【請求項２】
請求項１記載のプログラム実行方法において、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップでは、「ループ繰返し回数」の動的な情報を検出するステップと、この動的な情報に基づき更に正確なプログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップと、を実行することを特徴とするプログラム実行方法。
【請求項３】
請求項１記載のプログラム実行方法において、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップでは、予めベンチマークプログラムを実行し、「アクセレラレータ非対応命令」の実行時間の平均値を検出するステップと、各「アクセレラレータ非対応命令」の実行時間の平均値をポイント化して「アクセレラレータ非対応命令重み」とするステップと、各プログラム部分毎に含まれる「アクセレラレータ非対応命令重み」の合計を当該プログラム部分の「アクセレラレータ適性度合いポイント」として決定するステップと、を実行することを特徴とするプログラム実行方法。
【請求項４】
請求項１記載のプログラム実行方法において、
前記「アクセレラレータ」は、前記中間コードの翻訳、実行をハードウェアで実施するものであり、前記「ＪＩＴ」は、前記中間コードの繰返し実行される部分を、実行時に実行回数が閾値を超えた時点でコンパイルし、以降ネイティブコードを実行するものであることを特徴とするプログラム実行方法。
【請求項５】
計算機に、
ソースプログラムから変換された中間コードを入力し、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップと、
前記「アクセレラレータ適性度合いポイント」に基づき「ＪＩＴ適用判定基準情報」を決定するステップと、
前記「ＪＩＴ適用判定基準情報」に基づき「アクセレラレータを有するインタープリタ」と「ＪＩＴ」の適用判定を行うステップと、
前記適用判定の結果に基づき前記「アクセレラレータを有するインタープリタ」による実行と前記「ＪＩＴ」による実行を切り分けてプログラムを実行するステップと、
を実行させることを特徴とするプログラム。
【請求項６】
請求項５記載のプログラムにおいて、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップでは、「ループ繰返し回数」の動的な情報を検出するステップと、この動的な情報に基づき更に正確なプログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップと、を実行させることを特徴とするプログラム。
【請求項７】
請求項５記載のプログラムにおいて、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定するステップでは、予めベンチマークプログラムを実行し、「アクセレラレータ非対応命令」の実行時間の平均値を検出するステップと、各「アクセレラレータ非対応命令」の実行時間の平均値をポイント化して「アクセレラレータ非対応命令重み」とするステップと、各プログラム部分毎に含まれる「アクセレラレータ非対応命令重み」の合計を当該プログラム部分の「アクセレラレータ適性度合いポイント」として決定するステップと、を実行させることを特徴とするプログラム。
【請求項８】
計算機により、
ソースプログラムから変換された中間コードを入力し、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する手段と、
前記「アクセレラレータ適性度合いポイント」に基づき「ＪＩＴ適用判定基準情報」を決定する手段と、
前記「ＪＩＴ適用判定基準情報」に基づき「アクセレラレータを有するインタープリタ」と「ＪＩＴ」の適用判定を行う手段と、
前記適用判定の結果に基づき前記「アクセレラレータを有するインタープリタ」による実行と前記「ＪＩＴ」による実行を切り分けてプログラムを実行する手段と、
を実現することを特徴とするプログラム実行システム。
【請求項９】
請求項８記載のプログラム実行システムにおいて、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する手段では、「ループ繰返し回数」の動的な情報を検出する手段と、この動的な情報に基づき更に正確なプログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する手段と、を実現することを特徴とするプログラム実行システム。
【請求項１０】
請求項８記載のプログラム実行システムにおいて、
前記プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する手段では、予めベンチマークプログラムを実行し、「アクセレラレータ非対応命令」の実行時間の平均値を検出する手段と、各「アクセレラレータ非対応命令」の実行時間の平均値をポイント化して「アクセレラレータ非対応命令重み」とする手段と、各プログラム部分毎に含まれる「アクセレラレータ非対応命令重み」の合計を当該プログラム部分の「アクセレラレータ適性度合いポイント」として決定する手段と、を実現することを特徴とするプログラム実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行技術に関し、特に、「アクセレラレータ」と「ＪＩＴ」を有する仮想マシンに適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、中間コードを高速に実行させるプログラム実行方法として、Ｊａｖａ（登録商標）の場合、実行時にメソッドの実行回数をカウントし、閾値を超えた際にコンパイルし、以降コンパイル結果であるネイティブコードを利用することで高速化する「ＪＩＴ」と呼ばれる方法が存在する。また、中間コードを高速に実行させるプログラム実行方法として、中間コードの翻訳、実行をハードウェアで実施することで高速化する「アクセレラレータ」と呼ばれる方法が存在する。
【０００３】
さらに、特許文献１に記載の方法では、「ＪＩＴ」コンパイラのコンパイル部分を事前のアイドル時間を利用して、１つだけコンパイルして利用する。これにより、コンパイル時間なしにネイティブコードが利用できコンパイル時間分高速化できる。
【０００４】
また、特許文献２に記載の方法では、実行用タスク、コンパイル用タスクを設け、前者を優先して処理し、コンパイル対象箇所の１回目の実行はインタープリタ処理、２回目以降はコンパイル結果を利用して処理する。これにより、「コンパイル時間＋ネイティブコード実行時間―インタープリタ処理時間」分高速化される。
【０００５】
また、特許文献３に記載の方法では、静的解析によりプログラム中の実行回数の多い部分を見積り、これをベースに優先順位を付けて事前コンパイルする。これにより、実行時にネイティブコードが準備されている場合、コンパイル時間分高速化される。
【０００６】
また、特許文献４に記載の方法では、仮想マシンの実行においてアクセレラレータ非対応命令をキャッシュすることによりインタープリタ実行を高速化できる。
【特許文献１】特開平１１−２３７９８９号公報
【特許文献２】特開２００４−３５５２７７号公報
【特許文献３】特開２００４−３２６７６０号公報
【特許文献４】特開２００４−２８０７６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、「アクセレラレータ」と「ＪＩＴ」を有する仮想マシンにおいて、両者には高速化に関して得て不得手が存在する。プログラム部分毎にどちらの技術を適用すべきかは現状明示されていない。最適な選択を決定する方法は、現在の重要な課題の一つである。前述した特許文献４に記載の方法は、「アクセレラレータ」を有する仮想マシンを高速化させるが、「ＪＩＴ」との協調に関しては記載がない。
【０００８】
そこで、本発明は、上記事情に鑑みて課題を解決すべくなされたものであり、発明の目的は、「アクセレラレータ適性度合いポイント」に基づいた「ＪＩＴ適用判定基準」の最適化により、プログラムを高速化する技術を提供することにある。また、上記最適化により、コンパイル対象範囲を抑えてメモリ使用量を低減させる技術を提供することにある。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１１】
本発明は、上記目的を達成するために、プログラムコンパイル、解析を担当するタスクで、中間コードを入力しプログラム部分毎の静的な「アクセレラレータ適性度合いポイント」を検出して「ＪＩＴ適用判定基準情報」を出力する。次に、プログラム実行を担当するタスクで、中間コードもしくはネイティブコードを入力してプログラム実行し、プログラム部分毎の「ＪＩＴ適用判定基準情報」から「アクセレラレータ」と「ＪＩＴ」の適用判定を行い、「アクセレラレータを有するインタープリタ」、もしくは「ＪＩＴ」でプログラムを実行する。このようなプログラム実行方法、プログラム、およびプログラム実行システムに適用するものである。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
本発明によれば、静的解析によって抽出されるプログラム部分毎の「アクセレラレータ適性度合いポイント」に基づく「ＪＩＴ適用判定基準情報」から、最適な「アクセレラレータ」と「ＪＩＴ」の適用判定を行い、「アクセレラレータを有するインタープリタ」、もしくは「ＪＩＴ」で最適にプログラム実行を実施することにより、プログラムの高速化が可能となる。
【００１４】
また、本発明によれば、「アクセレラレータ適性度合いポイント」に基づいた「ＪＩＴ適用判定基準」の最適化により、コンパイル対象範囲を抑えてメモリ使用量を低減させることが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、これにより本発明が限定されるものではない。また、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
＜本発明の実施の形態の概要＞
本発明の実施の形態では、計算機によりプログラム実行の各手段を実現することを特徴とするプログラム実行システム、さらに、計算機によりプログラム実行の各ステップを実行することを特徴とするプログラム実行方法について述べる。しかしながら、本発明は、これに限定されるものではなく、計算機にプログラム実行の各ステップを実行させることを特徴とするプログラムについても適用可能である。
【００１７】
＜プログラム実行システム＞
図１は、本実施の形態のプログラム実行システムの概要を示す図である。本実施の形態のプログラム実行システムは、計算機上で実施され、プログラムの実行を、初めはアクセレラレータを含むインタープリタで実施し、繰返し実行される回数の閾値に従って途中でコンパイラによる実施に切り替えるプログラム実行方式において、プログラム部分毎のアクセレラレータで実行した場合とコンパイラで実行した場合の性能差を見積り、コンパイラによる実施に切り替えるタイミングを最適化してプログラム実行を高速化する方法である。
【００１８】
図１において、仮想マシン２は、高級言語で記述されたソースプログラムを変換した中間コード１を入力として実行する。仮想マシン２は、中間コード１の実行を担当するタスクとコンパイル、解析を担当するタスクをマルチコア環境において任意のコア（ＣＰＵ）に割当てるタスク割当部３と、中間コード１の実行を制御する実行制御部４と、中間コード１のコンパイル、解析を制御するコンパイル／解析制御部７と、「アクセレラレータ非対応命令の重み」と「メソッド毎のコンパイラ適用閾値」から成るアクセレラレータ（ＡＣＣ）／コンパイラ（ＪＩＴ）判定情報２１と、中間コード１のコンパイル結果であるネイティブコード２２から構成される。
【００１９】
また、実行制御部４は、アクセレラレータ／コンパイラ判定情報２１を入力してアクセレラレータ／コンパイラの適用判定を行うアクセレラレータ（ＡＣＣ）／コンパイラ（ＪＩＴ）判定部５と実行部６から構成される。コンパイル／解析制御部７は、アクセレラレータ／コンパイラ判定情報２１を出力する静的解析部８とコンパイル部９から構成される。さらに、実行部６は、動的解析によってアクセレラレータ／コンパイラ判定情報２１を更新する動的解析部６１と、インタープリタ実行するインタープリタ（ＩＮＴ）部６２と、ネイティブコード２２を出力するコンパイラ（ＪＩＴ）部６３から構成される。
【００２０】
特に、この仮想マシン２では、コンパイル／解析制御部７が、ソースプログラムから変換された中間コード１を入力し、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定し、この「アクセレラレータ適性度合いポイント」に基づき「ＪＩＴ適用判定基準情報」を決定する各手段として機能する。また、実行制御部４が、「ＪＩＴ適用判定基準情報」に基づき「アクセレラレータを有するインタープリタ」と「ＪＩＴ」の適用判定を行い、この適用判定の結果に基づき「アクセレラレータを有するインタープリタ」による実行と「ＪＩＴ」による実行を切り分けてプログラムを実行する各手段として機能する。
【００２１】
具体的に、コンパイル／解析制御部７がプログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する際は、「ループ繰返し回数」の動的な情報を検出し、この動的な情報に基づき更に正確なプログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する各手段として機能する。あるいは、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定する際は、予めベンチマークプログラムを実行し、「アクセレラレータ非対応命令」の実行時間の平均値を検出し、各「アクセレラレータ非対応命令」の実行時間の平均値をポイント化して「アクセレラレータ非対応命令重み」とし、各プログラム部分毎に含まれる「アクセレラレータ非対応命令重み」の合計を当該プログラム部分の「アクセレラレータ適性度合いポイント」として決定する各手段として機能する。
【００２２】
＜プログラム実行方法＞
図２〜図７を用いて、本実施の形態のプログラム実行システムにおけるプログラム実行方法を説明する。このプログラム実行方法では、仮想マシン２のコンパイル／解析制御部７で、ソースプログラムから変換された中間コードを入力し、プログラム部分毎の「アクセレラレータ適性度合いポイント」を決定し、この「アクセレラレータ適性度合いポイント」に基づき「ＪＩＴ適用判定基準情報」を決定する各ステップを実行する。また、実行制御部４で、「ＪＩＴ適用判定基準情報」に基づき「アクセレラレータを有するインタープリタ」と「ＪＩＴ」の適用判定を行い、この適用判定の結果に基づき「アクセレラレータを有するインタープリタ」による実行と「ＪＩＴ」による実行を切り分けてプログラムを実行する各ステップを実行する。以下において、各図に基づき具体的に説明する。
【００２３】
図２は、図１におけるタスク割当部３の動作フロチャートである。図２を用いて、仮想マシン２の起動後に実施されるタスク割当処理の流れを説明する。まず、処理ステップ３１でコア番号を判定し、“１”の場合（Ｙ）、処理ステップ３３へ進み、中間コード１の実行処理を実施し、その後、本タスク割当処理を終了する。処理ステップ３１でコア番号が“１”以外の場合（Ｎ）、処理ステップ３２に進む。次に、処理ステップ３２でコア番号を判定し、“２”の場合（Ｙ）、処理ステップ３４へ進み、中間コード１のコンパイル、解析処理を実施し、その後、本タスク割当処理を終了する。処理ステップ３２でコア番号が“２”以外の場合（Ｎ）、本タスク割当処理を終了する。
【００２４】
図３は、図１における静的解析部８の動作フロチャートである。図３を用いて、中間コード１の静的解析処理の流れを説明する。まず、処理ステップ８０１で中間コード１を入力する。図５に示すＪａｖａ（登録商標）言語で記述されたソースプログラムから変換された中間コードが入力された場合を想定して説明する。なお、Ｊａｖａ（登録商標）では、中間コードに相当するコードをバイトコードと呼んでいる。Ｊａｖａ（登録商標）ソースプログラムからバイトコードへ変換する方法については、サン・マイクロシステムズ社などから公開された周知の技術であるため、本明細書では説明を割愛する。
【００２５】
次に、処理ステップ８０２で「アクセレラレータ非対応命令重みテーブル」を入力する。図６を例に説明する。アクセレラレータ非対応命令重みは、予め適当なベンチマークプログラムを実行させて、命令毎の実行時間を測定し、平均をとってポイント化した値が設定されている。「アクセレラレータ非対応命令重みテーブル」は「アクセレラレータ非対応命令名称」２１０１、「重み」２１０２から構成され、本例では「ｏｐｃｏｄｅ１」の重みとして「１００」２１０３、「ｏｐｃｏｄｅ２」の重みとして「１０」２１０４、「ｏｐｃｏｄｅ３」の重みとして「１０」２１０５が設定されているものとする。
【００２６】
次に、処理ステップ８０３でメソッドの検出を行い、図５の１０４行目に示した「ｍｅｔｈｏｄ１」を検出する。次に、処理ステップ８０４で当メソッド重みに値「０」を設定する。次に、処理ステップ８０５でループの検出を行い、図５の１０６行目に示したループを検出する。次に処理ステップ８０６でループ繰返し回数「１００」を検出する。次に、処理ステップ８０７で当ループ重みに値「０」を設定する。次に、処理ステップ８０８で命令の検出を行い、図５の１０７行目の「ｏｐｃｏｄｅ１」を検出する。
【００２７】
次に、処理ステップ８０９で当命令がアクセレラレータ非対応命令か否かを判定し、「ｏｐｃｏｄｅ１」が「アクセレラレータ非対応命令重みテーブル」に登録されたアクセレラレータ非対応命令であるため（Ｙ）、処理ステップ８１０に進む。なお、処理ステップ８０９で当命令がアクセレラレータ非対応命令以外と判定された場合（Ｎ）は、処理ステップ８１２へ進む。
【００２８】
次に、処理ステップ８１０で当命令「ｏｐｃｏｄｅ１」の「アクセレラレータ非対応命令重み」として「１００」を検出する。次に、処理ステップ８１１で当ループ重み「０」と当命令重み「１００」の和「１００」を当ループ重みに設定する。次に、処理ステップ８１２で当ループ中に他に命令が存在するか否かを判定し、図５の１０８行目に示した命令「ｏｐｃｏｄｅ２」が存在するため（Ｙ）、処理ステップ８０９に戻り、上記処理を繰り返し、当ループ重みに「１１０」を設定する。次に、処理ステップ８１２で当ループ中に他に命令が存在しないため（Ｎ）、処理ステップ８１３へ進む。
【００２９】
次に、処理ステップ８１３でループ繰返し回数が定数か否かを判定し、定数「１００」であるため（Ｙ）、処理ステップ８１４へ進む。処理ステップ８１４では、当ループ重み「１１０」とループ繰返し回数「１００」の積「１１０００」を当ループ重みに設定し、処理ステップ８１６へ進む。なお、処理ステップ８１３の判定で、ループ繰返し回数が変数であった場合（Ｎ）、処理ステップ８１５へ進み、当ループ重みに当ループ重みと暫定値「１０」の積を設定し、処理ステップ８１６へ進む。なお、動的解析部６１で動的解析を実施し、ループ繰返し回数が確定した場合は、暫定値「１０」を確定した値に置換し当ループ重みを再計算する。
【００３０】
次に、処理ステップ８１６で当メソッド重み「０」と当ループ重み「１１０００」の和「１１０００」を当メソッド重みに設定する。次に、処理ステップ８１７で他にループが存在するか否かを判定し、存在しないため（Ｎ）、処理ステップ８１８へ進む。処理ステップ８１７で存在する場合（Ｙ）は、処理ステップ８０６へ戻り、上記処理を繰り返す。
【００３１】
次に、処理ステップ８１８で「ＪＩＴ適用閾値テーブル」を生成する。例を図７に示す。「ＪＩＴ適用閾値テーブル」は「メソッド名称」２１１１、「重み」２１１２、「ＪＩＴ適用閾値」２１１３から構成される。ステップ８１８では、レコード２１１４を登録する。「メソッド名称」２１１１へは文字列「ｍｅｔｈｏｄ１」、「重み」２１１２へは値「１１０００」、「ＪＩＴ適用閾値」２１１３へは値「１０」を設定する。なお、「ＪＩＴ適用閾値」２１１３へは、「重み」２１１２が値「１００００」以上の場合、「１０」を設定し、「重み」２１１２が値「１００００」未満、「５０００」以上の場合、「２０」を設定し、「重み」２１１２が値「５０００」未満の場合、「３０」を設定するものとする。
【００３２】
次に、処理ステップ８１９で他メソッドが存在するか否かを判定し、図５の１１０行目に示す「ｍｅｔｈｏｄ２」が存在するため（Ｙ）、処理ステップ８０４へ戻り、上記処理を繰り返す。それにより、図７の２１１５、２１１６に示すレコードが登録される。処理ステップ８１９で、他メソッドが存在しない場合、本静的解析処理を終了する。
【００３３】
図４は、図１における実行制御部４の動作フロチャートである。図４を用いて、実行制御処理の流れを説明する。まず、処理ステップ４１で中間コード１を入力する。中間コード１のソースコードイメージは図５に示す通りである。次に、処理ステップ４２でメソッドの検出を行い、図５の１０４行目に示す「ｍｅｔｈｏｄ１」を検出する。次に、処理ステップ４３で図７に示す「ＪＩＴ適用閾値テーブル」を入力する。
【００３４】
次に、処理ステップ４４で当メソッド「ｍｅｔｈｏｄ１」の情報が「ＪＩＴ適用閾値テーブル」中に登録されているか否かを判定し、登録済のため（Ｙ）、処理ステップ４８へ進む。処理ステップ４８では、当メソッド「ｍｅｔｈｏｄ１」のＪＩＴ適用閾値「１０」２１１４を検出する。なお、処理ステップ４４で当メソッドの情報が未登録の場合（Ｎ）、処理ステップ４５へ進む。処理ステップ４５では、「アクセレラレータ非対応命令重みテーブル」を入力する。次に、処理ステップ４６では当メソッドの重みを算出する。次に、処理ステップ４７では、ＪＩＴ適用閾値の設定を行い、処理ステップ４８へ進む。
【００３５】
次に、処理ステップ４９で当メソッド「ｍｅｔｈｏｄ１」の実行回数がＪＩＴ適用閾値以上か否かを判定し、閾値を超える場合（Ｙ）は処理ステップ４１０へ進み、その他の場合（Ｎ）は処理ステップ４１１へ進む。処理ステップ４１０ではＪＩＴ実行を行い、処理ステップ４１１では、アクセレラレータを含むインタープリタによる実行を行う。処理ステップ４１０、４１１共に処理後、処理ステップ４１２へ進む。
【００３６】
次に、処理ステップ４１２では動的処理を行う。動的処理では、ループの繰返し回数を求め、「アクセレラレータ非対応命令重みテーブル」の更新を行う。次に、処理ステップ４１３で他メソッドが存在するか否かを判定し、図５の１１０行目に示す「ｍｅｔｈｏｄ２」が存在するため（Ｙ）、処理ステップ４２へ戻り、上記処理を繰り返す。処理ステップ４１３で存在しない場合（Ｎ）、本実行制御処理を終了する。
【００３７】
以上説明したタスク割当処理、静的解析処理および実行制御処理によるプログラム実行方法により、例えばＪＩＴ適用閾値が「２０」で固定の場合、各メソッドのコンパイル開始までの時間が、１１０００×２０＋１２００×２０＋５０００×２０＝３４４０００に対し、１１０００×１０＋１２００×３０＋５０００×２０＝２４６０００となり、４０％高速化される。
【００３８】
＜プログラム実行処理装置＞
図８は、図１におけるプログラム実行システムを実現するハードウェア構成の、プログラム実行処理装置の概要を示す図である。図８において、プログラム実行処理装置は、プログラム実行用のＣＰＵ１（１００１）とＣＰＵ２（１００２）、主記憶装置１００３、二次記憶装置１００４、これらを結合する結合装置１００５から構成される。二次記憶装置１００４には、前述した中間コード１が格納される。また、主記憶装置１００３で、前述した仮想マシン２が構築される。
【００３９】
以上説明したように、本実施の形態のプログラム実行システム、さらに、プログラム実行方法によれば、中間コードを入力しプログラム部分毎の静的な「アクセレラレータ適性度合いポイント」を検出して「ＪＩＴ適用判定基準情報」を出力し、次に、中間コードもしくはネイティブコードを入力してプログラム実行し、プログラム部分毎の「ＪＩＴ適用判定基準情報」から「アクセレラレータ」と「ＪＩＴ」の適用判定を行い、「アクセレラレータを有するインタープリタ」、もしくは「ＪＩＴ」でプログラムを実行することにより、プログラムの高速化が可能となる。
【００４０】
また、「アクセレラレータ適性度合いポイント」に基づいた「ＪＩＴ適用判定基準」の最適化により、コンパイル対象範囲を抑えてメモリ使用量を低減させることが可能となる。
【００４１】
特に、「アクセレラレータを含むインタープリタ」と「ＪＩＴ」を搭載した仮想マシンの両機能の適用判定に際し、実行するプログラム部分毎に最適化し、プログラム実行を高速化することができるとともに、コンパイル対象範囲を抑えてメモリ使用量を低減させることができる。
【００４２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００４３】
例えば、前記実施の形態では、プログラム実行システム、プログラム実行方法について述べたが、これに限定されるものではなく、計算機にプログラム実行の各ステップを実行させることを特徴とするプログラムについても適用可能である。この場合には、前述した仮想マシンの実行制御部およびコンパイル／解析制御部はプログラムで実現され、このプログラムの実行により同様の処理が可能となる。
【産業上の利用可能性】
【００４４】
本発明のプログラム実行方法、プログラム、およびプログラム実行システムは、「アクセレラレータ」と「ＪＩＴ」を有する仮想マシンに利用可能である。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の形態のプログラム実行システムの概要を示す図である。
【図２】本発明の実施の形態のプログラム実行システムにおいて、タスク割当処理の流れを示す図である。
【図３】本発明の実施の形態のプログラム実行システムにおいて、静的解析処理の流れを示す図である。
【図４】本発明の実施の形態のプログラム実行システムにおいて、実行制御処理の流れを示す図である。
【図５】本発明の実施の形態のプログラム実行システムにおいて、入力ソースプログラム例を示す図である。
【図６】本発明の実施の形態のプログラム実行システムにおいて、アクセレラレータ非対象命令重みテーブルを示す図である。
【図７】本発明の実施の形態のプログラム実行システムにおいて、ＪＩＴ適用閾値テーブルを示す図である。
【図８】本発明の実施の形態のプログラム実行システムを実現するプログラム実行処理装置の概要を示す図である。
【符号の説明】
【００４６】
１…中間コード、２…仮想マシン、３…タスク割当部、４…実行制御部、５…アクセレラレータ／コンパイラ判定部、６…実行部、７…コンパイル／解析制御部、８…静的解析部、９…コンパイル部、２１…アクセレラレータ／コンパイラ判定情報、２２…ネイティブコード、６１…動的解析部、６２…インタープリタ部、６３…コンパイラ部、
１００１…ＣＰＵ１、１００２…ＣＰＵ２、１００３…主記憶装置、１００４…二次記憶装置、１００５…結合装置。
【図１】
2009009253.tif 000003
【図２】
2009009253.tif 000004
【図３】
2009009253.tif 000005
【図４】
2009009253.tif 000006
【図５】
2009009253.tif 000007
【図６】
2009009253.tif 000008
【図７】
2009009253.tif 000009
【図８】
2009009253.tif 000010