(57)【要約】【課題】ハードウェアならびにドライバの開発を待たずにアプリケーションの検証支援を可能にすること。【解決手段】情報処理装置１００は、ドライバが用意されていないハードウェア（ハードマクロ）を呼び出す箇所に特定のコード（マーク）が挿入されたアプリケーション１２０を用意し、このアプリケーション１２０を仮想マシン１１０によってシミュレートする。仮想マシン１１０では、特定のコードが検出された箇所に関しては、ハードマクロのシミュレーションモデル１３０を用いてアプリケーション１２０のシミュレーションを行なうことによって、ドライバを用いることなくアプリケーション１２０から直接に仮想マシン１１０を呼び出すことができる。【選択図】図１
2010170188.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行手段、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得手段、
前記取得手段によって取得されたアプリケーションが、前記実行手段によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出手段、
前記実行手段を制御して、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記取得手段によって取得されたシミュレーションモデルの情報を用いて前記アプリケーションのシミュレーションを行なう制御手段、
前記実行手段による前記アプリケーションのシミュレーション結果を出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【請求項２】
前記制御手段は、前記検出手段によって検出された前記特定のコードに設定されているコマンドに応じて、前記仮想マシンを用いた前記アプリケーションのシミュレーションと、前記シミュレーションモデルの情報を用いた前記アプリケーションのシミュレーションの実行開始ならびに終了を制御することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記取得手段は、さらに、前記アプリケーションが前記追加するハードウェアを呼び出す際のパラメータの予測値を取得し、
前記制御手段は、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記予測値をパラメータとして設定した後、前記取得手段によって取得されたシミュレーションモデルを用いて前記アプリケーションのシミュレーションを行なわせることを特徴とする請求項１または２に記載の検証支援プログラム。
【請求項４】
前記制御手段は、前記シミュレーションモデルを用いた前記アプリケーションのシミュレーションを終了させた場合、当該シミュレーション終了時に設定されているパラメータを、前記仮想マシンを用いた前記アプリケーションのシミュレーションに設定して、当該シミュレーションを行なわせることを特徴とする請求項１〜３のいずれか一つに記載の検証支援プログラム。
【請求項５】
システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行手段と、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得手段と、
前記取得手段によって取得されたアプリケーションが、前記実行手段によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出手段と、
前記実行手段を制御して、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記取得手段によって取得されたシミュレーションモデルの情報を用いて前記アプリケーションのシミュレーションを行なう制御手段と、
前記実行手段による前記アプリケーションのシミュレーション結果を出力する出力手段と、
を備えた検証支援機能を有することを特徴とする情報処理装置。
【請求項６】
コンピュータが、
システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行工程と、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得工程と、
前記取得工程によって取得されたアプリケーションが、前記実行工程によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出工程と、
前記検出工程によって前記特定のコードが挿入されていると検出された箇所では、前記取得手段によって取得されたシミュレーションモデルの情報を用いた前記アプリケーションのシミュレーションに切り換えて実行する切り換えを行なう切換工程と、
前記アプリケーションのシミュレーション結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シミュレーションの実行結果を用いて所定のアプリケーションを検証するための検証支援プログラム、情報処理装置および検証支援方法に関する。
【背景技術】
【０００２】
従来より、特定のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で動作するアプリケーションを開発するには、このＯＳを動作させるハードウェア環境を考慮していなければならない。また、既存のハードウェア環境に、３Ｄアクセラレータなどのあらたなハードマクロを追加する場合には、ハードマクロに対応したドライバを用意しなければ、アプリケーションからハードマクロを呼び出すような処理を実行できない。したがって、既存のシステムに、任意のハードマクロが追加されたようなハードウェア環境においての実行を目的としたアプリケーションを開発する場合には、まず、追加されたハードマクロを呼び出すためのドライバを用意しなければならない。
【０００３】
図１４は、従来のアプリケーション開発ステップを示す説明図である。任意のハードマクロを追加する場合、図１４のように、まず、ハードマクロ自体の開発を行ない、ハードマクロの開発が完了した後、続いてハードマクロに対応したドライバの開発に移行する（ステップ１）。同様に、ドライバの開発が完了した後にアプリケーションの開発が行なわれる（ステップ２）。そして、ステップ２にて開発されたアプリケーションをハードウェア上にて実行させることによって、検証処理、すなわち、アプリケーションの性能・電力の見積りが可能となる（ステップ３）。
【０００４】
近年では、上述のようにハードマクロやドライバの開発を待たずにアプリケーションの実機評価を可能にする技術として、アプリケーションとハードウェアとの橋渡しをする評価用制御プログラムが提供されている。このようなプログラムを利用することによって、システム開発の早期段階でアプリケーションの評価も可能になっている。
【０００５】
しかしながら、上述したようなアプリケーションとハードウェアとの橋渡しをする評価用制御プログラムの場合、実際にアプリケーションを実行させる開発対象のハードウェアとは異なる特定のハードウェア上で仮想ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を用いてソフトウェア的に開発対象のハードウェアを実現している。すなわち、代替のハードウェア環境下にてアプリケーションのシミュレーションを行なっているに過ぎなかった。したがって、実際にアプリケーションを実行させるハードウェア環境とは異なるため、シミュレーション結果として高精度の情報を得ることができないという問題があった。
【０００６】
高精度なシミュレーション結果を得るには、図１４にて説明したように、ハードウェア環境に追加されるハードマクロの開発ならびにハードマクロに対応したドライバが開発されるまで、アプリケーションの開発は待機状態となる。結果として、アプリケーションの開発に至るまでに多大な時間を要してしまうという問題があった。
【０００７】
また、図１４に示した従来の開発ステップでは、ハードマクロとドライバとの開発が完了してから初めてアプリケーションの開発が可能となる。したがって、開発したアプリケーションのシミュレーション結果をハードマクロの構成にフィードバックしたい場合には、再度、ハードマクロの開発に戻り、ハードマクロの修正を行なった後、修正したハードマクロに対応したドライバを開発しなければならない。結果として、検証結果を活用できたとしても、アプリケーションの開発が大幅に遅延してしまうという問題があった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２９３４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
この発明は、上述した従来技術による問題点を解消するため、ハードウェアやドライバの開発を待たずにアプリケーションの評価を可能にする検証支援プログラム、情報処理装置および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、開示する技術は、コンピュータが、システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう処理と、前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する処理と、取得されたアプリケーションが、前記実行手段によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する処理と、前記特定のコードが挿入されていると検出された箇所では、取得されたシミュレーションモデルを用いて前記アプリケーションのシミュレーションを行なう処理と、前記アプリケーションのシミュレーション結果を出力する処理と、を含むことを要件とする。
【発明の効果】
【００１１】
開示する技術によれば、ハードウェアやドライバの開発を待たずにアプリケーションの評価を可能にするという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態にかかる検証支援処理の概要を示す説明図である。
【図２】本実施の形態にかかる仮想マシンの構成を示す説明図である。
【図３】仮想マシンにおける基本的なオペレーションの手順を示す説明図である。
【図４】情報処理装置のハードウェア構成を示すブロック図である。
【図５】情報処理装置におけるシミュレーション実行手順を示す説明図である。
【図６】情報処理装置における仮想マシンの機能的構成を示すブロック図である。
【図７】仮想マシンを用いたシミュレーションの実行手順を示す説明図である。
【図８】仮想マシンによるハードマクロ呼び出し例を示すモデル図である。
【図９】ハードマクロ呼び出しを含むアプリケーションの記述例を示す説明図である。
【図１０】マーク検出に応じた仮想マシンのシミュレーション制御を示す説明図である。
【図１１】アプリケーションのマーク挿入例を示す説明図である。
【図１２】ハードマクロを含む仮想マシンのシミュレーション手順を示す説明図である。
【図１３】本実施の形態を適用した場合のアプリケーション開発ステップを示す説明図である。
【図１４】従来のアプリケーション開発ステップを示す説明図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この検証支援プログラム、情報処理装置および検証支援方法の好適な実施の形態を詳細に説明する。この検証支援プログラム、情報処理装置および検証支援方法では、ドライバが用意されていないハードウェア（ハードマクロ）を呼び出す処理が記述された箇所に特定のコード（たとえば仮想マシンによって判別可能な所定のマーク）を含むアプリケーションを用意する。そして、このアプリケーションを仮想マシンによって実行させることによって、アプリケーションをシミュレートする。仮想マシンでは、特定のコードが検出された箇所については、ハードマクロのシミュレーションモデルの情報を用いてアプリケーションのシミュレーションを行なう。すなわち、ドライバを用いることなくアプリケーションから直接に仮想マシンを呼び出すことができる。以下、このような動作を可能にする検証支援プログラム、情報処理装置および検証支援方法を実現するための具体的な構成について説明する。
【００１４】
（検証支援処理の概要）
まず、本実施の形態にかかる検証支援処理の概要について説明する。図１は、本実施の形態にかかる検証支援処理の概要を示す説明図である。図１のように、本実施の形態では、情報処理装置１００において実現されたシミュレーションツールによって、検証対象となるアプリケーション１２０のシミュレーションを行なうことにより、アプリケーション１２０の実行時間や消費電力などの評価をすることができる。
【００１５】
本実施の形態にかかる検証支援処理では、情報処理装置１００上に、アプリケーション１２０を実行させるハードウェア環境をソフトウェアによって実現した仮想マシン１１０を用意する。この仮想マシン１１０によって、アプリケーション１２０のシミュレーションを行なうが、仮想マシン１１０によって実現可能なハードウェア環境は、対応したドライバが用意された開発済みのハードウェアに限定される。
【００１６】
したがって、情報処理装置１００では、ドライバが用意されていないハードマクロを呼び出すようなアプリケーション１２０のシミュレーションを行なうために、ハードマクロに対応したシミュレーションモデル１３０を用意する。また、情報処理装置１００によってシミュレーションを行なうアプリケーション１２０には、ハードマクロ呼び出しを行なう処理が記述された箇所に特定のコード（たとえば、アプリケーション１２０の斜線部分）を挿入しておく。
【００１７】
仮想マシン１１０では、検証対象となるアプリケーション１２０が読み込まれると、順次シミュレーションを行ない、特定のコードが挿入されていると検出された箇所については、シミュレーションモデル１３０の情報を用いてシミュレーションを行なう。通常であれば、仮想マシン１１０にはハードマクロに対応したドライバが用意されていないため、ハードマクロを呼び出す処理を含むアプリケーション１２０を実行することはできなかった。
【００１８】
ところが、情報処理装置１００では、アプリケーション１２０に挿入された特定のコードに基づいて、仮想マシン１１０によるシミュレーションを、シミュレーションモデル１３０の情報を用いたシミュレーションに切り換え、シームレスにアプリケーションを実行することができる。このように、本実施の形態にかかる検証支援処理では、仮想マシン１１０によって実行されたアプリケーション１２０のシミュレーション結果を参照してアプリケーションの性能・電力の予測値を得ることができる。
【００１９】
以下に、本実施の形態にかかる検証支援処理を実現するための具体的な構成ならびに動作について順次説明する。
【００２０】
（仮想マシンの構成）
まず、仮想マシン１１０の構成について説明する。図２は、本実施の形態にかかる仮想マシンの構成を示す説明図である。図２のように、本実施の形態にかかる情報処理装置値１００では、ソフトウェアによって仮想マシン１１０を構成する。仮想マシン１１０では、アプリケーション１０１を実行させるターゲットシステムのハードウェア構成をハードウェアモデル１１０ａとしてソフトウェア的に実現している。また、図２に示した仮想マシン１１０によって実現されたハードウェアモデル１１０ａは、ＣＰＵ（モデル）１１１、ハードマクロ（モデル）１１２、メモリ（モデル）１１３を備えている。さらに、仮想マシン１１０には、ハードウェアモデル１１０ａによって実現された各ハードウェア（ＣＰＵ１１１〜メモリ１１３）の動作を制御する仮想マシンモニタ１１０ｂが用意されている。
【００２１】
そして、情報処理装置１００には、上述した仮想マシン１１０を動作させるためのＯＳ１０３と、ハードウェアモデル１１０ａのハードウェア環境に対応したドライバ１０２と、ＯＳ１０３上で実行させるアプリケーション１０１とが用意されている。なお、ここで用意されたドライバ１０２は、ハードウェアモデル１１０ａを構成するハードマクロ１１２を呼び出すためのソフトウェアであるが、上述したように、追加したハードマクロ１１２の中で、対応するドライバ１０２が開発されていない部分については、用意する必要はない。
【００２２】
（仮想マシンにおける基本的なオペレーション手順）
つぎに、仮想マシン１１０の基本的なオペレーション手順について説明する。上述した構成の仮想マシン１１０は、アプリケーション１０１を読み込むと、所定のオペレーションを実行する。この実行結果が、オペレーションのシミュレーション結果として出力される。
【００２３】
図３は、仮想マシンにおける基本的なオペレーションの手順を示す説明図である。図３には、仮想マシン１１０によって実行される基本的なオペレーション手順を示している。仮想マシン１１０では、アプリケーション１０１が読み込まれると、アプリケーション１０１の記述に応じて、ＣＰＵ１１１、ハードマクロ１１２それぞれによって所定のオペレーションが実行される。また、メモリ１１３は、ＣＰＵ１１１、ハードマクロ１１２のオペレーションに応じて適宜アクセスされる。
【００２４】
具体的に説明すると、ＣＰＵ１１１は、アプリケーション１０１から命令フェッチを行ない（ステップＳ３１１）、フェッチした命令を実行する（ステップＳ３１２）。そして、命令の実行に応じてレジスタ／メモリを更新し（ステップＳ３１３）、この更新処理に応じてバスアクセスが行なわれる（ステップＳ３１４）。更新が終了すると、実機にて同一の命令を実行した場合の時間と消費電力が加算され（ステップＳ３１５，３１６）、ステップＳ３１１に戻り、つぎの命令フェッチを行なう。このステップＳ３１５，３１６によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意され、これらの値が加算される。
【００２５】
同様に、ハードマクロ１１２では、アプリケーション１０１の記述に応じたアルゴリズムを実行し（ステップＳ３２１）、実行したアルゴリズムに応じてレジスタ／メモリを更新すると（ステップＳ３２２）、この更新処理に応じてバスアクセスが行なわれる（ステップＳ３２３）。更新が終了すると、ここでも、実機にて同一のアルゴリズムを実行した場合の時間と消費電力が加算され（ステップＳ３２４，３２５）、ステップＳ３２１に戻り、つぎのアルゴリズムを実行する。ここでも、ステップＳ３２４，３２５によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意され、これらの値が加算される。
【００２６】
なお、上述したＣＰＵ１１１ならびにハードマクロ１１２それぞれのオペレーションは、仮想マシンモニタ１１０ｂによって同期制御が行なわれる。したがって、仮想マシン１１０によるオペレーション実行結果を取得することによって、実機と同様にＣＰＵ１１１ならびにハードマクロ１１２が協働したシミュレーション結果を得ることができる。
【００２７】
（情報処理装置のハードウェア構成）
つぎに、情報処理装置１００の具体的なハードウェア構成について説明する。図４は、情報処理装置のハードウェア構成を示すブロック図である。図４において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０６と、入力デバイス４０７と、出力デバイス４０８と、を備えている。また、各構成部はバス４１０によってそれぞれ接続されている。
【００２８】
ここで、ＣＰＵ４０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムや、本実施の形態にかかる検証支援処理を実現するための検証支援プログラムなどの各種プログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータの更新／参照を制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。なお、図４のハードウェア構成では、記録媒体として、磁気ディスク４０５を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
【００２９】
通信Ｉ／Ｆ４０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク（ＮＥＴ）４０９に接続され、このネットワーク４０９を介して他の情報処理装置１００やその他の外部装置に接続される。そして、通信Ｉ／Ｆ４０６は、ネットワーク４０９と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ４０６の構成例としては、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３０】
入力デバイス４０７は、情報処理装置１００に対しての外部からの入力を受け付ける。入力デバイス４０７としては、具体的には、キーボード、マウスなどが挙げられる。なお、図２に示したような情報処理装置１００によって、シミュレーションを行なうアプリケーション１０１は、ＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５などの記憶領域にあらかじめ格納されていてもよいが、入力デバイス４０７から入力されて、上述の記憶領域に格納されてもよい。
【００３１】
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行なう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３２】
出力デバイス４０８は、情報処理装置１００に配置されたデータや、シミュレーションの実行結果などを出力する。出力デバイス４０８としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【００３３】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【００３４】
以上説明したように、本実施の形態にかかる情報処理装置１００は、仮想マシン１１０を用いてアプリケーション１０１のシミュレーションを実行することができるが（図３参照）、ドライバ１０２が用意されていないハードマクロ１１２に関しては、アプリケーション１０１から正しく処理を呼び出すことができない。したがって、ドライバ１０２が用意されていないハードマクロ１１２を含むアプリケーション１０１を上述した仮想マシン１１０によって実行させるための構成について説明する。
【００３５】
（情報処理装置におけるシミュレーション実行手順）
まず、情報処理装置１００によって、ドライバ１０２が用意されていないハードマクロ１１２を含むアプリケーション１０１のシミュレーションを実行するための手順について説明する。図５は、情報処理装置におけるシミュレーション実行手順を示す説明図である。
【００３６】
図５のように、情報処理装置１００では、仮想マシン１１０への入力情報を用意するために、アプリケーション５０１と、ハードマクロ仕様書５０２と、ドライバパラメータ５０３とが用意される。これらの情報のうち、ドライバパラメータ５０３以外の情報は、仮想マシン１１０への入力情報とするための加工処理が行なわれる。
【００３７】
まず、検証対象となるアプリケーション５０１には、ドライバ１０２が用意されてないハードマクロ１１２の読み出し箇所には、特定のコードが挿入されている。ここでは、特定のコードの挿入例として未定義命令、もしくは割り込み命令を使ったマークが埋め込まれる。また、アプリケーション５０１は、所定のプログラミング言語によって記述されたコード群であるため、仮想マシン１１０によってシミュレーションを行なうには、コンパイラ・アセンブラによってアプリケーションバイナリ５１１に変換する処理（ステップＳ５１０）が必要となる。
【００３８】
また、ハードマクロ仕様書５０２には、ドライバ１０２が用意されていないハードマクロ１１２の動作仕様が設定されている。したがって、ハードマクロ仕様書５０２を用いて、ハードマクロ１１２のシミュレーションモデルであるＣモデル５２１を作成する（ステップＳ５２０）。作成されたＣモデル５２１は、仮想マシン１１０に組み込まれる。
【００３９】
ドライバパラメータ５０３には、アプリケーション５０１がハードマクロ１１２を呼び出す際や、ハードマクロ１１２から他のハードウェアに処理が移る際に実行される命令や、実行時間、消費電力の予測値が用意されている。これらのドライバパラメータ５０３は、ハードマクロ１１２を呼び出す際の設定値として参照される（詳細については後述する）。
【００４０】
また、仮想マシン１１０は、図３にて説明した基本的なオペレーションの他に、入力されたアプリケーションバイナリ５１１に挿入されたマークを検出する機能と、検出されたマークに基づいて、ドライバ１０２／ＯＳ１０３のシミュレーションを実行する機能とを備えている。また、仮想マシン１１０は、マークの検出に応じて命令ブレークを実行するように設定することもできる。なお、どのようなマークを検出した場合に命令ブレークを実行するか、さらには、アプリケーション５０１に含まれるハードマクロ１１２を呼び出す処理のうち、どの部分にマークを挿入するかについては、検証者がアプリケーション５０１の検証目的に応じて適宜設定することができる。
【００４１】
なお、Ｃモデル５２１の作成に利用されたハードマクロ仕様書５０２は、実チップ５４０を制作する場合にも利用される。この場合、まず、ハードマクロ仕様書５０２からＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述を作成する（ステップＳ５３０）。そして、作成されたＲＴＬ記述／ネットリスト（ＲＴＬ記述から生成）５３１を用いて実チップ５４０が製造される。また、製造された実チップ５４０によってアプリケーション５０１を実行させた場合の性能・電力は、仮想マシン１１０によるシミュレーション結果によって得られた、性能・電力予測と比較することによって、シミュレーションの精度を確認することもできる。
【００４２】
（仮想マシンの機能的構成）
つぎに、情報処理装置１００によって実現される仮想マシン１１０の機能的構成について説明する。図６は、情報処理装置における仮想マシンの機能的構成を示すブロック図である。情報処理装置１００によって実現された仮想マシン１１０は、取得部６０１と、実行部６０２と、検出部６０３と、制御部６０４と、出力部６０５と、を含む構成である。この制御部となる機能（取得部６０１〜出力部６０５）は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５などの記憶領域に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、通信Ｉ／Ｆ４０６により、その機能を実現する。
【００４３】
取得部６０１は、既存のハードウェア環境に追加するハードウェアのシミュレーションモデルと、検証対象となるアプリケーション５０１を実行させるためのアプリケーションバイナリ５１１を取得する機能を有する。取得部６０１によって取得されるハードウェア環境に追加するハードウェアのシミュレーションモデルとは、たとえば、追加されたハードマクロ１１２のＣモデル５２１である。また、アプリケーションバイナリ５１１は、上述したようにアプリケーション５０１を変換して生成されているため、ハードマクロ１１２の呼び出し処理を行なう箇所にマークが挿入されている。取得されたアプリケーションバイナリ５１１は、一旦、ＲＡＭ４０３、磁気ディスク４０５などの記憶領域に記憶される。
【００４４】
実行部６０２は、仮想マシン１１０を用いてアプリケーションバイナリ５１１を実行することによって、検証対象となるアプリケーション５０１のシミュレーションを行なう機能を有する。シミュレーションとは、通常は、図３にて説明したようなＣＰＵ１１１、ハードマクロ１１２のオペレーションの実行を意味する。
【００４５】
検出部６０３は、実行部６０２によって、アプリケーションバイナリ５１１の実行が開始されると、実行中のアプリケーションバイナリ５１１の中から特定のコード（たとえば、上述したようなマーク）が挿入されている箇所を検出する機能を有する。
【００４６】
制御部６０４は、検出部６０３によるマークの検出に応じて、実行部６０２におけるアプリケーションバイナリ５１１の実行を制御する。具体的には、マークが挿入されているとして検出された箇所では、取得部６０１によって取得されたＣモデル５２１の情報を用いてアプリケーションバイナリ５１１を実行する。すなわち制御部６０４は、図３にて説明したようなＣＰＵ１１１、ハードマクロ１１２のオペレーションの実行の際に、Ｃモデル５２１として用意されたシミュレーション情報が利用されるように、実行部６０２を制御する。
【００４７】
また、制御部６０４は、検出部６０３によって検出されたマークに設定されているコマンドに応じて、実行部６０２によるアプリケーション５０１のシミュレーション実行時にＣモデル５２１の情報を用いるか否かや、Ｃモデル５２１の情報を用いたシミュレーションの実行開始ならびに終了の有無を制御することもできる。
【００４８】
出力部６０５は、実行部６０２によるアプリケーション５０１のシミュレーション結果、すなわち、アプリケーションバイナリ５１１の実行結果を出力する。出力形式としては、たとえば、出力デバイス４０８として用意されたディスプレイへの表示、プリンタへの印刷出力や、通信Ｉ／Ｆ４０６による外部装置への送信がある。また、ＲＡＭ４０３、磁気ディスク４０５などの記憶領域に記憶することとしてもよい。
【００４９】
また、図５にて説明したように、仮想マシン１１０によってＣモデル５２１の情報を利用したシミュレーションを行なう場合には、ドライバパラメータ５０３を参照することができる。したがって、制御部６０４では、ドライバパラメータ５０３に設定されているパラメータを予測値として、Ｃモデル５２１の情報を用いたシミュレーションに利用させる事もできる。
【００５０】
（仮想マシンにおけるシミュレーションの実行手順）
つぎに、上述した構成をもつ仮想マシン１１０におけるシミュレーションの実行手順について説明する。図７は、仮想マシンを用いたシミュレーションの実行手順を示す説明図である。図７では、アプリケーション５０１のシミュレーションにおいて、通常のシミュレーション実行中にハードマクロ１１２を呼び出す処理が発生し、ハードマクロ１１２に対応したシミュレーションを実行した後、再度、通常のシミュレーション実行に戻る場合の処理手順を表している。
【００５１】
したがって、仮想マシン１１０では、実行中のアプリケーションの記述に応じて、処理を制御する対象が、ＣＰＵ（モデル）１１１とハードマクロ（モデル）１１２とのいずれかに切り換わる。ステップＳ７０１，Ｓ７０２では、通常のシミュレーションが実行されるため、ＣＰＵ１１１によって処理される。そして、ハードマクロ１１２が呼び出されてからのステップＳ７０３〜ステップＳ７０５の処理は、ハードマクロ１１２によって実行される。ハードマクロ１１２によるシミュレーションが終了して、通常のシミュレーションが復帰するステップＳ７０６は、再びＣＰＵ１１１によって処理される。
【００５２】
また、図７に示した一連の処理において、特徴となるのが、破線円で囲んだ７１０，７３０の処理と、７２０の構成である。７１０では、アプリケーション５０１（実際にはアプリケーションバイナリ５１１）によってハードマクロ１１２を呼び出す箇所に挿入されたマークを認識することによって仮想マシン１１０の制御対象を切り換える処理が行なわれている。このとき、マークを挿入する箇所としては、たとえば、未定義命令／未使用割込／ブレークなど記述部分が挙げられる。
【００５３】
また、７２０は、アプリケーション５０１において、仮想マシン１１０における実行が想定されるドライバ１０２やＯＳ１０３が実際にハードマクロ１１２を呼び出す場合、呼び出し処理の前後の実行が予想される実行命令列や、実行時間・消費電力値などをドライバパラメータ５０３として格納する構成を表している。
【００５４】
そして、７３０では、７１０の処理によって仮想マシン１１０の制御対象がハードマクロ１１２に切り換わった後、７２０の構成として用意されたドライバパラメータ５０３を参照して、ドライバ１０２ならびにＯＳ１０３のコードによるシミュレート（ステップＳ７０３）と、ハードマクロ１１２によるＣモデル５２１の呼び出し（ステップＳ７０４）と、Ｃモデル５２１による呼び出し終了後のドライバ１０２ならびにＯＳ１０３のコードによるシミュレート（ステップＳ７０５）とを実行することにより、シミュレーションの制御対象をＣＰＵ１１１に戻す処理が行なわれる。仮想マシン１１０は、シミュレーションの制御対象をＣＰＵ１１１に戻すことによって、通常のシミュレーションを復帰させることができる（ステップＳ７０６）。
【００５５】
ここで、図８は、仮想マシンによるハードマクロ呼び出し例を示すモデル図である。図８に示すように、仮想マシン１１０は、マークが挿入されたアプリケーション５０１を実行すると、ハードマクロ１１２の呼び出し処理を実現するために、ハードマクロ１１２のＣモデル５２１を参照する。また、図８に示したモデル図において、上述した７１０，７３０の処理と、７２０の構成の対応する箇所には、図７と同様の符号の破線円を施してある。
【００５６】
・７１０の処理（アプリケーションへのマーク挿入）
つぎに、７１０の処理について詳細に説明する。図８に示した、アプリケーション５０１では、「ｃａｌｌ＿ｈｗ」記述箇所にマークが挿入されている。図９は、ハードマクロ呼び出しを含むアプリケーションの記述例を示す説明図である。アプリケーション５０１の「ｃａｌｌ＿ｈｗ」記述箇所には、記述列９００のようなマークと、対応する命令がセットになって記述されている。図１０は、マーク検出に応じた仮想マシンのシミュレーション制御を示す説明図である。
【００５７】
図９の記述例９００の処理内容を、図１０を用いて説明すると、まず、マーク１の埋め込みによって、仮想マシン１１０によって実行中の性能・電力観測を停止させる。マーク１をトリガにして仮想マシン１１０のＣＰＵ１１１によって実行されていた性能・電力観測が停止されると、つぎに、仮想マシン１１０へのパラメータを設定する。ここで設定されるパラメータは、ドライバパラメータ５０３が参照される。
【００５８】
パラメータが設定されると、つぎに、マーク２をトリガにして、仮想マシン１１０の制御対象が切り換わり、ハードマクロ１１２によるドライバシミュレーションが実行される。その後、仮想マシン１１０によるドライバシミュレーションが終了すると、マーク１をトリガにして切り換えられた元のパラメータを受け取って、仮想マシン１１０に再度設定する。そして、マーク３をトリガにして、仮想マシン１１０のＣＰＵ１１１によって実行されていた性能・電力観測を再開させる。なお、マーク１〜マーク２の間のパラメータ設定時と、ドライバシミュレーションの終了〜マーク３までの間のパラメータ受け取り時には、仮想マシン１１０のＣＰＵ１１１、ハードマクロ１１２のいずれも性能・電力観測を停止させる。
【００５９】
また、それぞれのマーク挿入は以下の様な手法により実現することができる、たとえば、ｃａｌｌ＿ｈｗ内に＃ｐｒａｇｍａなどでは、仮想マシン１１０のＣＰＵ１１１では、未定義命令となるコードを埋め込み、その実行に伴う未定義例外に関するシミュレーション結果を仮想マシン１１０によって捕捉することもできる。また、ｃａｌｌ＿ｈｗ内に未使用のソフト割り込み（ＳＷＩ）を埋め込み、その実行に伴う割り込みのシミュレーション結果を、仮想マシン１１０によって捕捉することもできる。さらに、ｃａｌｌ＿ｈｗ内の特定箇所に仮想マシン１１０のＣＰＵ１１１の持つ命令ブレークを設定しておき、この命令ブレークをトリガとしたシミュレーション結果を仮想マシン１１０によって捕捉することもできる。
【００６０】
図１１は、アプリケーションのマーク挿入例を示す説明図である。記述例１１１０は、ａｓｍ関数を用いた未定義命令を、マーク（ｍａｒｋ１〜ｍａｒｋ３）を用いて挿入している。また、記述例１１２０では、ａｓｍ関数を用いた割り込み命令を、マーク（ｍａｒｋ１〜ｍａｒｋ３）を用いて挿入している。この他にも、デバッガなどがもつ命令ブレーク機能を、マーク（ｍａｒｋ１〜ｍａｒｋ３）を用いて挿入することもできる。
【００６１】
・７２０の構成（ドライバパラメータへのパラメータ格納）
つぎに、７２０の構成について詳しく説明する。７２０の構成とは、ドライバパラメータ５０３の構成であり、このドライバパラメータ５０３へ格納する各パラメータ値はそれぞれ以下のような手法によって得られている。まず、実行時間・電力情報に関するパラメータは、ハードマクロ１１２に対応したドライバ１０２に類似したドライバを仮想マシン１１０上で実行させ、その際の実行時間・電力情報が利用される。なお類似したドライバを利用せずに、検証者の経験に基づいて、マニュアルで実行時間・電力情報に関するパラメータを格納してもよい。また、ハードマクロ１１２のシミュレーションを行なう際に設定するパラメータは、Ｃモデル５２１の情報から別途取得して格納する。
【００６２】
その他にも、想定もしくは目標とされるドライバ１０２の処理内容に合わせて、ハードマクロ１１２のシミュレーションの実行時の前処理・後処理によって想定される実行時間と電力情報値をパラメータとして生成して、格納してもよい。
【００６３】
・７３０の処理（仮想マシン１１０によるシミュレーション）
最後に、７３０の処理について詳しく説明する。７３０では、仮想マシン１１０によるシミュレーションが実行される。ここで、図１２は、ハードマクロを含む仮想マシンのシミュレーション手順を示す説明図である。図１２のように、仮想マシン１１０では、まず、前処理部のシミュレートを行なう（ステップＳ１２０１）。このステップＳ１２０１の処理では、ドライバパラメータ５０３に格納されている前処理部分の性能・電力情報に基づいて、シミュレーション時間と消費電力値が調整（加算）される。
【００６４】
ステップＳ１２０１の処理が完了すると、続いて、ハードマクロ１１２のＣモデル５２１部分を呼び出して実行する（ステップＳ１２０２）。ステップＳ１３０２の処理が完了すると、後処理部のシミュレートを行なう（ステップＳ１２０３）。このステップＳ１２０３の処理では、ドライバパラメータ５０３に格納されている後処理部分の性能・電力情報に基づいて、シミュレーション時間と消費電力値とが調整（加算）される。
【００６５】
このように、仮想マシン１１０ではマークを抽出することによって正しい処理位置にて、Ｃモデル５２１を用いたシミュレーションを実行することができる。さらに、ドライバパラメータ５０３に格納されたパラメータ値を参照することによって、正しいシミュレーション結果を得ることができる。
【００６６】
（本実施の形態にかかる検証支援処理を適用した場合の開発ステップ）
ここで、図１３は、本実施の形態を適用した場合のアプリケーション開発ステップを示す説明図である。図１３のように、本実施の形態にかかる情報処理装置１００を用いた場合、従来の開発ステップ（図１４参照）のように、ハードマクロならびにドライバの開発を待つことなく、早期段階でアプリケーションの開発に着手することができる。具体的には、図１３のように、ハードマクロ開発が始まった時点でも、ハードマクロのＣモデルが用意されていれば、即座にアプリケーションの開発に着手することができる。
【００６７】
また、ハードマクロならびにハードマクロに対応したドライバの開発と並行してアプリケーションを検証できる。したがって、この検証結果をハードマクロとドライバの開発にフィードバックすることができる。ハードマクロ開発工程やドライバ開発工程においても早期の段階で、アプリケーションのシミュレーション結果を得ることができるため、性能評価をハードウェアにフィードバックすることもできる。
【００６８】
以上説明したように、本実施の形態によれば、仮想マシン１１０は、アプリケーション５０１から検出したマークに応じて、通常のシミュレーションと、Ｃモデル５２１を用いたシミュレーションとのいずれかの実行内容に切り換える。このようにＣモデル５２１を用いたシミュレーションを実行することによって、本来はドライバ１０２経由でしか呼び出すことができないハードマクロ１１２の呼び出し処理を、あたかもドライバ１０２経由で呼び出したかのように実行させることができる。
【００６９】
このように、本実施の形態では、ドライバの開発に至っていない、開発ステップの早期の段階であっても、仮想マシン１１０を用いることによって、アプリケーションをハードマクロ込みで動作させることが可能となる。したがって、ハードマクロの開発を待たずとも、アプリケーションのシステムレベルでの性能・電力の測定・予測が可能となり、高精度な検証環境を提供することができる。
【００７０】
また、本実施の形態にかかる検証支援処理は、上述した情報処理装置１００としての実現にとどまらず、たとえば、特定アプリケーション向けハードウェアや、マルチコアシステムの性能・電力見積りを行なう低電力化ツールにも応用が可能である。
【００７１】
なお、本実施の形態で説明した検証支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【００７２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７３】
（付記１）コンピュータを、
システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行手段、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得手段、
前記取得手段によって取得されたアプリケーションが、前記実行手段によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出手段、
前記実行手段を制御して、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記取得手段によって取得されたシミュレーションモデルの情報を用いて前記アプリケーションのシミュレーションを行なう制御手段、
前記実行手段による前記アプリケーションのシミュレーション結果を出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【００７４】
（付記２）前記制御手段は、前記検出手段によって検出された前記特定のコードに設定されているコマンドに応じて、前記仮想マシンを用いた前記アプリケーションのシミュレーションと、前記シミュレーションモデルの情報を用いた前記アプリケーションのシミュレーションの実行開始ならびに終了を制御することを特徴とする付記１に記載の検証支援プログラム。
【００７５】
（付記３）前記取得手段は、さらに、前記アプリケーションが前記追加するハードウェアを呼び出す際のパラメータの予測値を取得し、
前記制御手段は、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記予測値をパラメータとして設定した後、前記取得手段によって取得されたシミュレーションモデルを用いて前記アプリケーションのシミュレーションを行なわせることを特徴とする付記１または２に記載の検証支援プログラム。
【００７６】
（付記４）前記制御手段は、前記ミュレーションモデルを用いた前記アプリケーションのシミュレーションを終了させた場合、当該シミュレーション終了時に設定されているパラメータを、前記仮想マシンを用いた前記アプリケーションのシミュレーションに設定して、当該シミュレーションを行なわせることを特徴とする付記１〜３のいずれか一つに記載の検証支援プログラム。
【００７７】
（付記５）前記取得手段は、前記追加するハードウェアに関する未定義命令箇所に特定のコードが挿入されたアプリケーションを取得することを特徴とする付記１〜４のいずれか一つに記載の検証支援プログラム。
【００７８】
（付記６）前記取得手段は、前記追加するハードウェアに関する未使用割り込み箇所に特定のコードが挿入されたアプリケーションを取得することを特徴とする付記１〜４のいずれか一つに記載の検証支援プログラム。
【００７９】
（付記７）前記取得手段は、前記追加するハードウェアに関するブレーク箇所に特定のコードが挿入されたアプリケーションを取得することを特徴とする付記１〜４のいずれか一つに記載の検証支援プログラム。
【００８０】
（付記８）システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行手段と、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得手段と、
前記取得手段によって取得されたアプリケーションが、前記実行手段によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出手段と、
前記実行手段を制御して、前記検出手段によって前記特定のコードが挿入されていると検出された箇所では、前記取得手段によって取得されたシミュレーションモデルの情報を用いて前記アプリケーションのシミュレーションを行なう制御手段と、
前記実行手段による前記アプリケーションのシミュレーション結果を出力する出力手段と、
を備えた検証支援機能を有することを特徴とする情報処理装置。
【００８１】
（付記９）コンピュータが、
システムのハードウェア環境をソフトウェアによって実現した仮想マシンを用いて前記システムによって実行させるアプリケーションのシミュレーションを行なう実行工程と、
前記ハードウェア環境に追加するハードウェアのシミュレーションモデルと、当該追加するハードウェアを呼び出す箇所に特定のコードが挿入されたアプリケーションを取得する取得工程と、
前記取得工程によって取得されたアプリケーションが、前記実行工程によって実行されると、当該実行中のアプリケーションの中から前記特定のコードが挿入されている箇所を検出する検出工程と、
前記検出工程によって前記特定のコードが挿入されていると検出された箇所では、前記取得工程によって取得されたシミュレーションモデルの情報を用いた前記アプリケーションのシミュレーションに切り換えて実行する切り換えを行なう切換工程と、
前記アプリケーションのシミュレーション結果を出力する出力工程と、
を実行することを特徴とする検証支援方法。
【符号の説明】
【００８２】
１００  情報処理装置
１０１，１２０，５０１  アプリケーション
１０２  ドライバ
１０３  ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）
１１０  仮想マシン
１１０ａ  ハードウェアモデル
１１０ｂ  仮想マシンモニタ
１１１  ＣＰＵ（モデル）
１１２  ハードマクロ（モデル）
１１３  メモリ（モデル）
１３０  シミュレーションモデル
５０２  ハードマクロ仕様書
５０３  ドライバパラメータ
５１１  アプリケーションバイナリ
５２１  Ｃモデル
５３１  ＲＴＬ記述／ネットリスト
６０１  取得部
６０２  実行部
６０３  検出部
６０４  制御部
６０５  出力部
【図１】
2010170188.tif 000003
【図２】
2010170188.tif 000004
【図３】
2010170188.tif 000005
【図４】
2010170188.tif 000006
【図５】
2010170188.tif 000007
【図６】
2010170188.tif 000008
【図７】
2010170188.tif 000009
【図８】
2010170188.tif 000010
【図９】
2010170188.tif 000011
【図１０】
2010170188.tif 000012
【図１１】
2010170188.tif 000013
【図１２】
2010170188.tif 000014
【図１３】
2010170188.tif 000015
【図１４】
2010170188.tif 000016