(57)【要約】【課題】割込処理の処理時間を用いたシステムの性能評価を行うこと。【解決手段】第１のＳｉｍ時刻０［μｓ］にて、シミュレーション制御装置１００は、ハードウェアモデル１０１−１からソフトウェア１０２に割込通知が発行されたことを検出する。次に、シミュレーション制御装置１００は、第１のＳｉｍ時刻から第２のＳｉｍ時刻１００［μｓ］までの期間のうち、第２のＳｉｍ時刻より前の第３のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する。続けて、シミュレーション制御装置１００は、割込処理の完了通知がソフトウェア１０２からハードウェアモデル１０１に発行されたことを検出した場合、第３のＳｉｍ時刻からのハードウェアモデル１０１の動作を再開させる。さらに、シミュレーション制御装置１００は、ターゲットＣＰＵが割込処理を実行する場合の処理時間を出力する。【選択図】図１Ａ
2014071841.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出し、
前記割込通知が発行されたことを検出した第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御し、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出し、
前記完了通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させ、
前記完了通知が発行されたことを検出した場合、前記割込処理の処理時間を特定し、
特定した前記割込処理の処理時間を表す情報を出力する、
処理を実行させることを特徴とするシミュレーション制御プログラム。
【請求項２】
前記制御する処理は、
前記第３のシミュレーション時刻にて、シミュレーション時刻の進行を停止させることにより、前記シミュレーション時刻の進行に伴って動作する前記ハードウェアモデルの動作を停止させることを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項３】
前記制御する処理は、
前記第１のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御することを特徴とする請求項１または２に記載のシミュレーション制御プログラム。
【請求項４】
前記コンピュータに、
前記割込通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて、前記完了通知が発行されているか否かを判断する処理を実行させ、
前記制御する処理は、
前記完了通知が発行されていないと判断したときに、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御することを特徴とする請求項１または２に記載のシミュレーション制御プログラム。
【請求項５】
前記コンピュータに、
前記完了通知が発行されたことを検出した場合、前記割込処理にて実行された命令を特定し、
前記ソフトウェアに含まれる命令ごとの処理時間を記憶する記憶部を参照して、特定した前記命令に対応する処理時間を取得する処理を実行させ、
前記処理時間を特定する処理は、
前記完了通知が発行されたことを検出した場合、取得した前記命令に対応する処理時間に基づいて、前記割込処理の処理時間を特定することを特徴とする請求項１〜４のいずれか一つに記載のシミュレーション制御プログラム。
【請求項６】
ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出する割込通知検出部と、
前記割込通知が発行されたことを前記割込通知検出部によって検出された第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御する制御部と、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出する完了通知検出部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させる再開部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記割込処理の処理時間を特定する処理時間特定部と、
前記処理時間特定部によって特定された前記割込処理の処理時間を表す情報を出力する出力部と、
を有することを特徴とするシミュレーション制御装置。
【請求項７】
コンピュータが、
ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出し、
前記割込通知が発行されたことを検出した第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御し、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出し、
前記完了通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させ、
前記完了通知が発行されたことを検出した場合、前記割込処理の処理時間を特定し、
特定した前記割込処理の処理時間を表す情報を出力する、
処理を実行することを特徴とするシミュレーション制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法に関する。
【背景技術】
【０００２】
従来、ハードウェアモデルとソフトウェアの協調シミュレーションを行う技術がある。たとえば、機能ブロック間の通信処理のオーバーヘッドを考慮して協調シミュレーションを行う技術がある。また、複数のパイプラインを有するプロセッサのシミュレーションを行う技術がある。また、システムにおけるメモリ配置の最適解を、シミュレーションを用いて求める技術がある。また、ハードウェア設計におけるトランザクションレベルのモデルに時間情報を組み込むことにより性能評価モデルを生成する技術がある。また、パイプラインステージを設けること無く、データハザードによる遅延を考慮してシミュレーションを行う技術がある。
【０００３】
また、論理システム全体をプログラム言語にて記述した論理システム記述プログラムから中間コードを生成し、ハードウェア性能情報とプロセッサの命令ごとの性能情報を参照して、中間コードからプロセッサで実行される命令系列の性能見積りを行う技術がある。また、命令セットシミュレータにより演算された実行サイクル数および論理エミュレータにより演算された実行サイクル数を基に推定関数を算出し、論理エミュレータにおけるプログラムの未測定区間の実行サイクル数を推定する技術がある。また、分岐履歴ビット系列に基づいて部分プログラムの実行系列を生成し、部分プログラムの実行系列に基づいてプログラムの実行時間を推定する技術がある。（たとえば、下記特許文献１〜８を参照。）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１３２１０８号公報
【特許文献２】特開２００８−１７６４５３号公報
【特許文献３】特開２００４−７０８６２号公報
【特許文献４】特開２００９−１４０３８８号公報
【特許文献５】特開２０１０−８６０４７号公報
【特許文献６】特開２００１−２９０８５８号公報
【特許文献７】特開２０１１−２３８１３７号公報
【特許文献８】国際公開第２０１０／００１７６６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術において、ソフトウェアがハードウェアモデルから発行される割込通知を受け付けて割込処理を行う際、次の割込通知が発行されるまでに割込処理が完了しないと、次の割込通知が受け付けられなくなる。割込通知が受け付けられない場合、ソフトウェアは次の割込通知に対応する割込処理が行うことができなくなってしまうので、割込処理の処理時間を用いたシステムの性能評価を行うことが難しい。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、割込処理の処理時間を用いたシステムの性能評価が行えるシミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、ハードウェアモデルからソフトウェアに割込通知が発行されたことを検出し、割込通知が発行されたことを検出した第１のシミュレーション時刻から割込通知の次の割込通知がハードウェアモデルからソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、ハードウェアモデルの動作を停止させるようにハードウェアモデルを制御し、割込通知を受け付けた場合にソフトウェアにより実行される割込処理の完了通知がソフトウェアからハードウェアモデルに発行されたことを検出し、完了通知が発行されたことを検出した場合、第３のシミュレーション時刻にて動作が停止させられたハードウェアモデルの動作を第３のシミュレーション時刻から再開させ、完了通知が発行されたことを検出した場合、割込処理の処理時間を特定し、特定した割込処理の処理時間を表す情報を出力するシミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、割込処理の処理時間を用いたシステムの性能評価が行えるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１Ａ】図１Ａは、本実施の形態にかかるシミュレーション制御装置の動作例を示す説明図である。
【図１Ｂ】図１Ｂは、ソフトウェアの処理がシミュレーション時間を消費する場合の動作例を示す説明図である。
【図２】図２は、シミュレーション制御装置のハードウェア構成の一例を示すブロック図である。
【図３】図３は、シミュレーション制御装置の機能構成例を示すブロック図である。
【図４】図４は、シミュレーション用実行オブジェクトの生成例を示す説明図である。
【図５】図５は、シミュレーション処理の一例を示すシーケンス図である。
【図６】図６は、出力結果の一例を示す説明図である。
【図７】図７は、シミュレーション用実行オブジェクト生成処理手順の一例を示すフローチャートである。
【図８】図８は、シミュレーション処理手順の一例を示すフローチャートである。
【図９】図９は、動作Ｓｉｍ対象設定処理手順の一例を示すフローチャートである。
【図１０】図１０は、ソフトウェア実行処理手順の一例を示すフローチャートである。
【図１１】図１１は、ソフトウェア実行処理手順の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、開示のシミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法の実施の形態を詳細に説明する。
【００１１】
図１Ａは、本実施の形態にかかるシミュレーション制御装置の動作例を示す説明図である。本実施の形態にかかるシミュレーション制御装置１００は、ハードウェアモデル１０１とソフトウェア１０２との協調シミュレーションを制御するコンピュータである。また、シミュレーション制御装置１００は、協調シミュレーションプログラムを実行する装置であってもよい。
【００１２】
ハードウェアモデル１０１は、ハードウェア記述言語で記述されている。また、ソフトウェア１０２は、Ｃ言語、またはＣ＋＋言語といったプログラム言語で記述されている。シミュレーション制御装置１００は、ハードウェアモデル１０１と、ソフトウェア１０２と協調して動作することにより、シミュレーション対象システムのシミュレーションを行う。また、シミュレーション制御装置１００は、協調シミュレーションの進行度合いを示すシミュレーション時刻の進行に合わせて、ハードウェアモデル１０１と、ソフトウェア１０２とを動作する。また、シミュレーション制御装置１００は、シミュレーション対象システム内の性能見積りとして、ソフトウェア１０２の処理時間の最悪値を見積もる。
【００１３】
以下、本実施の形態にかかるシミュレーション制御装置１００がモータ制御システムの動作をシミュレーションする例を用いて、シミュレーション制御装置１００の動作を説明する。シミュレーション制御装置１００は、シミュレーション対象として、ハードウェアモデル１０１−１と、ハードウェアモデル１０１−２と、ソフトウェア１０２を動作させる。また、シミュレーション対象を、「Ｓｉｍ対象」と称する。また、シミュレーション時刻を、「Ｓｉｍ時刻」と称する。
【００１４】
ハードウェアモデル１０１−１は、１００［μｓ］の時間間隔で割込信号を発行するタイマを模したモデルである。また、ソフトウェア１０２は、次の３つの処理を行う。１つ目の処理は、ハードウェアモデル１０１−１からの割込通知を受け付ける処理である。２つ目の処理は、割込処理となり、ハードウェアモデル１０１−２に印加電圧の値を算出する処理である。３つ目の処理は、ハードウェアモデル１０１−２の設定レジスタに印加電圧の値を設定する処理である。なお、割込処理中のソフトウェア１０２は、新たな割込通知を受け付けない割込禁止区間に設定される。
【００１５】
ハードウェアモデル１０１−２は、設定レジスタに設定された印加電圧の値に従って回転するモータを模したモデルである。ハードウェアモデル１０１−２は、１００［μｓ］ごとに印加電圧が設定されることになる。仮に１００［μｓ］経過しても印加電圧が設定されない場合、モータへの印加電圧が不定となり、モータ動作の制御が行えない状態となる。モータ動作の制御が行えない状態を、以下、「動作不定状態」と称する。
【００１６】
以下、図１Ａで示すシミュレーション制御装置１００は、一例の動作として、Ｓｉｍ時刻０［μｓ］から３００［μｓ］までの協調シミュレーションの動作を行う。以下、Ｓｉｍ時刻０［μｓ］から１００［μｓ］までを期間Ｔ１と定義し、Ｓｉｍ時刻１００［μｓ］から２００［μｓ］までを期間Ｔ２と定義し、Ｓｉｍ時刻２００［μｓ］から３００［μｓ］までを期間Ｔ３と定義する。
【００１７】
また、図１Ａで示す時計１１０は、Ｓｉｍ時刻の経過時刻を模している。また、時計１１０の上部の計時ボタンは、押下されることによりＳｉｍ時刻を進行させて、進行させたＳｉｍ時刻分、ハードウェアモデル１０１−１およびハードウェアモデル１０１−２を動作する処理を模している。また、時計１１０の右上部の停止ボタンは、押下されることによりＳｉｍ時刻を停止させて、ハードウェアモデル１０１−１およびハードウェアモデル１０１−２の動作を停止する処理を模している。また、図１Ａでは、停止ボタンを黒色にて塗りつぶしたボタンにて示している。また、時計１１０内部の針の傾きが、時間の進行度合いを示す。
【００１８】
始めに、Ｓｉｍ時刻０［μｓ］にて、シミュレーション制御装置１００は、ハードウェアモデル１０１−１からソフトウェア１０２に割込通知が発行されたことを検出する。割込通知が発行されたことを検出したＳｉｍ時刻を、第１のＳｉｍ時刻とする。次に、シミュレーション制御装置１００は、第１のＳｉｍ時刻から、第２のＳｉｍ時刻１００［μｓ］までの期間Ｔ１のうち、第２のＳｉｍ時刻より前の第３のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する。第２のＳｉｍ時刻は、次の割込通知が発行される時刻である。図１Ａでは、シミュレーション制御装置１００は、第１のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する。図１Ａでは、停止ボタンが押下されたことにより、シミュレーション制御装置１００がハードウェアモデル１０１の動作を停止させたことを示している。
【００１９】
第３のＳｉｍ時刻は、第１のＳｉｍ時刻から、第２のＳｉｍ時刻の前であればいつであってもよい。第３のＳｉｍ時刻を第１のＳｉｍ時刻から、第２のＳｉｍ時刻の前までの間に設定することにより、ソフトウェア１０２は、次の割込処理を確かに受け付けることができるようになる。第３のＳｉｍ時刻は、たとえば、第１のＳｉｍ時刻であってもよい。また、第１のＳｉｍ時刻が０［μｓ］であり、第２のＳｉｍ時刻が１００［μｓ］であれば、第３のＳｉｍ時刻は、たとえば、９０［μｓ］でもよい。第３のＳｉｍ時刻は、シミュレーション対象システムの開発者によって指定される値である。たとえば、割込処理が６０［μｓ］で完了する予定であれば、第３のＳｉｍ時刻は、６０［μｓ］から１００［μｓ］の前までの時刻に設定される。第３のＳｉｍ時刻が第２のＳｉｍ時刻に近づくほど、第１のＳｉｍ時刻から第３のＳｉｍ時刻まではハードウェアモデルの動作を停止しなくてよいため、シミュレーション対象システムが実際に動作する場合の動作に近くなる。
【００２０】
制御方法の一例として、シミュレーション制御装置１００は、第３のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させてもよい。また、制御方法の他の例として、シミュレーション制御装置１００は、第３のＳｉｍ時刻でのハードウェアモデル１０１の状態を保持しておく。続けて、シミュレーション制御装置１００は、ハードウェアモデル１０１の動作を再開させるときに、保持しておいた状態を読み出すことにより、ハードウェアモデル１０１の動作が停止していたようにしてもよい。
【００２１】
続けて、シミュレーション制御装置１００は、割込通知を受け付けた場合にソフトウェア１０２により実行される割込処理の完了通知がソフトウェア１０２からハードウェアモデル１０１に発行されたことを検出する。図１Ａでは、シミュレーション制御装置１００は、割込通知を受け付けた０［μｓ］の５０［μｓ］後に、ソフトウェア１０２が割込処理の完了通知となる割込処理の処理結果である印加電圧設定がハードウェアモデル１０１−２に発行されたことを検出する。印加電圧設定は、１００［μｓ］間のモータに印加する電圧の値を設定する処理である。印加電圧設定が発行されたハードウェアモデル１０１−２は、１００［μｓ］から２００［μｓ］までの期間Ｔ２にて、設定された印加電圧で回転する動作を模擬する。
【００２２】
完了通知が発行されたことを検出した場合、シミュレーション制御装置１００は、第３のＳｉｍ時刻からのハードウェアモデル１０１の動作を再開させる。図１Ａでは、計時ボタンが押下されたことにより、シミュレーション制御装置１００がハードウェアモデル１０１の動作を再開させたことを示している。また、時計１１０の針の傾きは、０［μｓ］にて割込通知を受け付けた後の割込処理開始のＳｉｍ時刻と割込処理完了のＳｉｍ時刻とで一致しており、Ｓｉｍ時刻が進行していないことを示す。
【００２３】
また、完了通知が発行されたことを検出した場合、シミュレーション制御装置１００は、ターゲットＣＰＵが割込処理を実行する場合の処理時間を特定する。図１の例では、割込処理の処理時間５０［μｓ］を特定する。
【００２４】
特定方法の一例として、始めに、シミュレーション制御装置１００は、ターゲットＣＰＵがソフトウェア１０２を実行した場合にかかる処理時間を、ソフトウェア１０２を命令ごとに記憶しておく。次に、シミュレーション制御装置１００は、ソフトウェア１０２の一部の命令を実行し、実行した命令のターゲットＣＰＵがかかる処理時間を合計することにより、ターゲットＣＰＵが割込処理を実行する場合の処理時間を特定する。
【００２５】
また、特定方法の他の例として、シミュレーション制御装置１００は、シミュレーション制御装置１００のＣＰＵの処理速度に対するターゲットＣＰＵの処理速度の割合を記憶しておく。以下、シミュレーション制御装置１００のＣＰＵの処理速度に対するターゲットＣＰＵの処理速度の割合を、「処理速度の割合」と称する。次に、シミュレーション制御装置１００は、ソフトウェア１０２の一部の命令を実行し、実行した命令にかかった時間に処理速度の割合を掛けることにより、ターゲットＣＰＵが割込処理を実行する場合の処理時間を特定する。処理時間を特定した後、シミュレーション制御装置１００は、特定した処理時間を出力する。
【００２６】
以降、シミュレーション制御装置１００は、割込通知を検出する度に、特定した処理時間を出力する。具体的には、期間Ｔ２の先頭時刻であるＳｉｍ時刻１００［μｓ］にて、シミュレーション制御装置１００は、ハードウェアモデル１０１−１からソフトウェア１０２に割込通知が発行されたことを検出する。期間Ｔ２では、第１のＳｉｍ時刻が１００［μｓ］となり、第２のＳｉｍ時刻が２００［μｓ］となる。次に、シミュレーション制御装置１００は、たとえば、１００［μｓ］にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する。
【００２７】
続けて、シミュレーション制御装置１００は、割込通知を受け付けた１００［μｓ］の１５０［μｓ］後に、ソフトウェア１０２が割込処理の完了通知となる割込処理の処理結果である印加電圧設定がハードウェアモデル１０１−２に発行されたことを検出する。完了通知が発行されたことを検出した場合、シミュレーション制御装置１００は、第３のＳｉｍ時刻からのハードウェアモデル１０１の動作を再開させる。したがって、シミュレーション制御装置１００は、１００［μｓ］からのハードウェアモデル１０１−１とハードウェアモデル１０１−２の動作を再開させる。
【００２８】
ハードウェアモデル１０１の動作を停止していない場合、Ｓｉｍ時刻が１００＋１５０＝２５０［μｓ］となり、次の割込通知を受け付けるＳｉｍ時刻２００［μｓ］を超えてしまい、シミュレーション対象システムの状態が動作不定状態となってしまう。しかし、本実施の形態にかかるシミュレーション制御装置１００は、ハードウェアモデル１０１の動作を停止しておくことにより、シミュレーション対象システムの状態を正常状態に維持できる。具体的に、印加電圧設定が発行されたハードウェアモデル１０１−２は、２００［μｓ］から３００［μｓ］までの期間Ｔ３にて、設定された印加電圧で回転する動作を模擬することができる。
【００２９】
このように、シミュレーション制御装置１００は、シミュレーション対象システムの動作を忠実に再現してソフトウェア１０２の割込処理時間からシミュレーション対象システムの性能評価を行える。具体的に、シミュレーション制御装置１００は、Ｓｉｍ時刻２００［μｓ］での割込処理について、正常状態下でのソフトウェア１０２の処理時間３０［μｓ］を見積もることができる。協調シミュレーション終了後、シミュレーション制御装置１００は、ソフトウェア１０２の割込処理の処理時間である５０［μｓ］と、１５０［μｓ］と、３０［μｓ］を出力する。
【００３０】
図１Ｂは、ソフトウェアの処理がシミュレーション時間を消費する場合の動作例を示す説明図である。図１Ｂでは、ソフトウェアの処理がシミュレーション時間を消費する場合の、協調シミュレーションの結果を示している。図１Ｂでも、Ｓｉｍ時刻０［μｓ］から３００［μｓ］までの協調シミュレーションの動作を行う。期間Ｔ１〜Ｔ３も図１Ａと同一の定義とする。図１Ｂで示す時計１１１は、Ｓｉｍ時刻の経過時刻を模している。また、時計１１１の上部の計時ボタンは、押下されることによりＳｉｍ時刻を進行させて、進行させたＳｉｍ時刻分、ハードウェアモデル１０１−１およびハードウェアモデル１０１−２を動作する処理を模している。
【００３１】
始めに、Ｓｉｍ時刻０［μｓ］にて、ハードウェアモデル１０１−１はソフトウェア１０２に割込通知を発行する。割込通知を受け付けた場合、ソフトウェア１０２は、５０［μｓ］を消費して割込処理を実行し、印加電圧設定をハードウェアモデル１０１−２に発行する。印加電圧設定が発行されたハードウェアモデル１０１−２は、１００［μｓ］から２００［μｓ］まで設定された印加電圧で回転する動作を模擬する。
【００３２】
次に、Ｓｉｍ時刻１００［μｓ］にて、ハードウェアモデル１０１−１はソフトウェア１０２に割込通知を発行する。割込通知を受け付けた場合、ソフトウェア１０２は、１５０［μｓ］を消費して割込処理を実行し、印加電圧設定をハードウェアモデル１０１−２に発行する。しかし、ハードウェアモデル１０１−２は、１００［μｓ］から２００［μｓ］までの期間Ｔ２に印加電圧設定を受け付けなかったため、動作不定状態になる。したがって、期間Ｔ３以降の割込通知に対応する割込処理は、動作不定状態での割込処理となる。
【００３３】
また、２００［μｓ］にて、ハードウェアモデル１０１−１はソフトウェア１０２に割込通知を発行する。しかし、ソフトウェア１０２は、１００［μｓ］から２５０［μｓ］まで割込禁止区間となるため、２００［μｓ］に発行された割込通知を受け付けることができない。
【００３４】
このように、図１Ｂでの協調シミュレーションは、２００［μｓ］以降では動作不定状態となるため、正常状態下でのソフトウェア１０２の処理時間を見積もることができなくなる。図１Ｂでの協調シミュレーションが、正常状態下でのソフトウェア１０２の処理時間を見積もるには、動作不定状態に遷移しないようになるまで、シミュレーション対象システムの性能を変えることになる。したがって、ソフトウェア１０２の処理時間の最悪値を見積もることには、シミュレーション対象システムの開発者にとって手間がかかる。以下、図１Ａに示したシミュレーション制御装置１００の動作を、図２〜図１１を用いて説明する。
【００３５】
（シミュレーション制御装置のハードウェア）
図２は、シミュレーション制御装置のハードウェア構成の一例を示すブロック図である。図２において、シミュレーション制御装置１００は、ＣＰＵ２０１と、Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）２０２と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）２０３と、を含む。また、シミュレーション制御装置１００は、ディスクドライブ２０４と、ディスク２０５と、通信インターフェース２０６と、を含む。また、シミュレーション制御装置１００は、ディスプレイ２０７と、キーボード２０８と、マウス２０９とを含む。また、ＣＰＵ２０１〜マウス２０９はバス２１０によってそれぞれ接続されている。
【００３６】
ＣＰＵ２０１は、シミュレーション制御装置１００の全体の制御を司る演算処理装置である。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリである。
【００３７】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ２０４には、たとえば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ２０４が磁気ディスクドライブである場合、ディスク２０５には、磁気ディスクを採用することができる。また、ディスクドライブ２０４が光ディスクドライブである場合、ディスク２０５には、光ディスクを採用することができる。また、ディスクドライブ２０４がソリッドステートドライブである場合、ディスク２０５には、半導体素子メモリを採用することができる。
【００３８】
通信インターフェース２０６は、ネットワーク２１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース２０６は、通信回線を通じてネットワーク２１１となるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ネットワーク２１１を介して他の装置に接続される。通信インターフェース２０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００３９】
ディスプレイ２０７は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ２０７には、たとえば、Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ（ＣＲＴ）、Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ（ＴＦＴ）液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４０】
キーボード２０８は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード２０８は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２０９は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス２０９は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
【００４１】
（シミュレーション制御装置１００の機能構成）
次に、シミュレーション制御装置１００の機能構成について説明する。図３は、シミュレーション制御装置の機能構成例を示すブロック図である。シミュレーション制御装置１００は、ハードウェアモデル実行部３０１と、ソフトウェア実行部３０２と、Ｓｉｍ時刻測定部３０３と、シミュレーションスケジューラ３０４を含む。
【００４２】
シミュレーションスケジューラ３０４は、割込通知検出部３１１と、判断部３１２と、制御部３１３と、完了通知検出部３１４と、再開部３１５と、命令特定部３１６と、取得部３１７と、処理時間特定部３１８と、出力部３１９と、を含む。制御部となるハードウェアモデル実行部３０１〜シミュレーションスケジューラ３０４は、記憶装置に記憶されたプログラムをＣＰＵ２０１が実行することにより、ハードウェアモデル実行部３０１〜シミュレーションスケジューラ３０４の機能を実現する。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などである。または、通信インターフェース２０６を経由して他のＣＰＵが実行することにより、ハードウェアモデル実行部３０１〜シミュレーションスケジューラ３０４の機能を実現してもよい。
【００４３】
また、図３では、割込通知検出部３１１〜出力部３１９がシミュレーションスケジューラ３０４内部にあるが、シミュレーションスケジューラ３０４の外部にあってもよい。
【００４４】
ハードウェアモデル実行部３０１は、ハードウェアモデル１０１を実行する。ハードウェアモデル１０１が複数ある場合、ハードウェアモデル実行部３０１は、たとえば、複数のハードウェアモデル１０１を時分割に従って切り替えて実行する。また、シミュレーション制御装置１００が複数のＣＰＵを有する場合、複数のＣＰＵの各々のＣＰＵに複数のハードウェアモデル１０１の各々のハードウェアモデル１０１を割り当てて実行してもよい。また、ハードウェアモデル実行部３０１は、ソフトウェア実行部３０２に割込通知３０５を発行する。
【００４５】
ソフトウェア実行部３０２は、ソフトウェア１０２を実行する。なお、シミュレーション対象システムがマルチコアプロセッサシステムであり、ソフトウェア１０２が複数のスレッドを有するとする。この場合、ソフトウェア実行部３０２は、複数のコアの各々のコアに複数のスレッドの各々のスレッドを割り当てたと想定して、各々のスレッドが並列で実行されるように実行してもよい。また、シミュレーション制御装置１００が複数のＣＰＵを有する場合、複数のＣＰＵの各々のＣＰＵに複数のスレッドの各々のスレッドを割り当てて実行してもよい。また、ソフトウェア実行部３０２は、ハードウェアモデル実行部３０１に割込処理の完了通知３０６を発行する。
【００４６】
Ｓｉｍ時刻測定部３０３は、Ｓｉｍ時刻を測定する。たとえば、Ｓｉｍ時刻測定部３０３は、ＣＰＵ２０１のクロックを受け付けて、Ｓｉｍ時刻を更新する。また、Ｓｉｍ時刻測定部３０３は、Ｓｉｍ時刻の更新要求があった場合、要求のあった時刻分更新してもよい。
【００４７】
シミュレーションスケジューラ３０４は、ハードウェアモデル実行部３０１とソフトウェア実行部３０２の実行権を切り替える。ハードウェアモデル実行部３０１とソフトウェア実行部３０２のうち、実行権が設定された実行部が実行される。具体的に、シミュレーションスケジューラ３０４は、ハードウェアモデル実行部３０１が割込通知３０５を発行したことを検出した場合、ソフトウェア実行部３０２に実行権を設定する。また、シミュレーションスケジューラ３０４は、ソフトウェア実行部３０２が完了通知３０６を発行したことを検出した場合、ハードウェアモデル実行部３０１に実行権を設定する。
【００４８】
また、シミュレーション制御装置１００は、処理時間出力情報３２１にアクセス可能である。処理時間出力情報３２１の記憶内容の詳細は、図６にて後述する。処理時間出力情報３２１は、ＲＡＭ２０３、ディスク２０５といった記憶装置に格納されている。
【００４９】
割込通知検出部３１１は、ハードウェアモデル１０１とソフトウェア１０２との協調シミュレーションの実行中に、ハードウェアモデル１０１からソフトウェア１０２に割込通知３０５が発行されたことを検出する。たとえば、割込通知検出部３１１は、ハードウェアモデル１０１−１から１００［μｓ］間隔で発行される割込通知３０５が発行されたことを検出する。なお、割込通知３０５を検出したという情報は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５０】
判断部３１２は、割込通知検出部３１１によって割込通知３０５が発行されたことが検出された場合、第３のＳｉｍ時刻にて、完了通知３０６が発行されているか否かを判断する。たとえば、第１のＳｉｍ時刻が０［μｓ］であり、第２のＳｉｍ時刻が１００［μｓ］であるとする。このとき、判断部３１２は、第３のＳｉｍ時刻を、たとえば、５０［μｓ］として、ソフトウェア１０２が完了通知３０６を発行しているか否かを判断する。なお、判断結果は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５１】
制御部３１３は、第１のＳｉｍ時刻から割込通知３０５の次の割込通知３０５が第２のＳｉｍ時刻までの期間のうち、第３のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する。たとえば、制御部３１３は、第３のＳｉｍ時刻にて、ハードウェアモデル１０１の状態を保持しておく。これにより、ハードウェアモデル１０１の動作を再開するときに、シミュレーション制御装置１００が、保持してあった状態を読み込むことにより、ハードウェアモデル１０１の動作が停止してあったように制御することができる。
【００５２】
また、制御部３１３は、第３のＳｉｍ時刻にて、Ｓｉｍ時刻の進行を停止させることにより、Ｓｉｍ時刻の進行に伴って動作するハードウェアモデル１０１の動作を停止させてもよい。また、制御部３１３は、第１のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデルを制御してもよい。
【００５３】
また、制御部３１３は、判断部３１２によって完了通知３０６が発行されていないと判断されたときに、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御してもよい。
【００５４】
完了通知検出部３１４は、割込通知３０５を受け付けた場合にソフトウェア１０２により実行される割込処理の完了通知３０６がソフトウェア１０２からハードウェアモデル１０１に発行されたことを検出する。なお、完了通知３０６を検出したという情報は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５５】
再開部３１５は、完了通知検出部３１４によって完了通知３０６が発行されたことが検出された場合、第３のＳｉｍ時刻にて動作が停止させられたハードウェアモデル１０１の動作を第３のＳｉｍ時刻から再開させる。具体的に、再開部３１５は、第３のＳｉｍ時刻におけるハードウェアモデル１０１の状態が保持されている場合、状態を読み出すことにより、ハードウェアモデル１０１の動作を再開させる。
【００５６】
命令特定部３１６は、完了通知検出部３１４によって完了通知３０６が発行されたことが検出された場合、割込処理にて実行された命令を特定する。たとえば、命令特定部３１６は、実行された命令として、加算命令“ＡＤＤ”とストア命令“ＳＴＲ”を特定する。なお、特定した命令群の情報は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５７】
取得部３１７は、ソフトウェアに含まれる命令ごとの処理時間を記憶する記憶部を参照して、命令特定部３１６によって特定された命令に対応する処理時間を取得する。記憶部は、図４にて後述する処理量情報となる。たとえば、取得部３１７は、加算命令“ＡＤＤ”の処理時間１［μｓ］とストア命令“ＳＴＲ”の処理時間４［μｓ］を取得する。なお、取得した処理時間の値は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５８】
処理時間特定部３１８は、完了通知検出部３１４によって完了通知３０６が発行されたことが検出された場合、割込処理の処理時間を特定する。たとえば、処理時間特定部３１８は、ソフトウェア１０２の割込処理を実行して、処理速度の割合を掛けることにより割込処理の処理時間を特定する。
【００５９】
また、処理時間特定部３１８は、完了通知検出部３１４によって完了通知３０６が発行されたことが検出された場合、取得部３１７によって取得された各々の命令に対応する処理時間に基づいて、割込処理の処理時間を特定してもよい。たとえば、処理時間特定部３１８は、加算命令“ＡＤＤ”の処理時間１［μｓ］とストア命令“ＳＴＲ”の処理時間４［μｓ］を合計した５［μｓ］を割込処理の処理時間として特定する。また、処理時間特定部３１８は、ターゲットＣＰＵのパイプラインの特徴に基づいて割込処理の処理時間として特定してもよい。たとえば、パイプラインステージ数が２であれば、処理時間特定部３１８は、合計した処理時間から、１サイクル数の時間を引いた結果を割込処理の処理時間として特定する。なお、特定した処理時間の値は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００６０】
出力部３１９は、処理時間特定部３１８によって特定された割込処理の処理時間を表す情報を出力する。出力形式としては、たとえば、処理時間出力情報３２１への出力がある。また、たとえば、ディスプレイ２０７への表示、通信インターフェース２０６による外部装置への送信がある。
【００６１】
図４は、シミュレーション用実行オブジェクトの生成例を示す説明図である。図４では、シミュレーション制御装置１００が読み込むシミュレーション用実行オブジェクトの生成例を説明する。シミュレーション用実行オブジェクトを生成する実行主体は、シミュレーション制御装置１００でもよいし、他の装置であってもよい。以降の説明では、シミュレーション制御装置１００が、シミュレーション用実行オブジェクトを生成する例を用いて説明を行う。
【００６２】
シミュレーション制御装置１００は、人間が記述しやすいよう自然言語に近い記法や構文を取り入れた高級言語で処理内容が記述されたソースファイル４０１を、ターゲットコンパイラ４０２でコンパイルすることにより、ａｓｓｅｍｂｌｅ（ＡＳＭ）ファイル４０３を生成する。ターゲットコンパイラ４０２とは、ソースファイル４０１をシミュレーション対象システムのＣＰＵの機械語命令にコンパイルするソフトウェアである。以下、シミュレーション対象システムのＣＰＵを、「ターゲットＣＰＵ」と呼称する。ＡＳＭファイル４０３は、機械語命令を人間に分かりやすい形で記述した低級言語で記述されたファイルである。
【００６３】
次に、シミュレーション制御装置１００は、処理量テーブル４０４を参照して、ＡＳＭファイル４０３から、処理量情報４０５を生成する。処理量テーブル４０４は、命令ごとに、ターゲットＣＰＵが命令の実行にかかる時間を記憶するテーブルである。図４に示す処理量テーブル４０４は、レコード４０４−１〜４０４−４を記憶している。
【００６４】
処理量テーブル４０４は、ニーモニック名と、処理サイクル数と、処理時間という３つのフィールドを有する。ニーモニック名フィールドは、機械語を人間が理解しやすいように簡略化した文字列が格納される。処理サイクル数フィールドは、ニーモニック名フィールドに格納された文字列に対応する機械語命令を、ターゲットＣＰＵが処理する際にかかるサイクル数が格納される。処理時間フィールドは、ニーモニック名フィールドに格納された文字列に対応する機械語命令を、ターゲットＣＰＵが処理する際にかかる時間が格納される。たとえば、レコード４０４−１は、ニーモニック名が“ＡＤＤ”に対応する機械語命令を、ターゲットＣＰＵは、１サイクル、１［μｓ］で処理することを示す。
【００６５】
処理量情報４０５は、ソースファイル４０１内の命令ごとに、ターゲットＣＰＵで処理されるときの時間を示す情報である。たとえば、ソースファイル４０１の１命令である“ｖａｌ＝ｖａｌ＋１；”の処理量情報を生成する例を示す。
【００６６】
シミュレーション制御装置１００は、ＡＳＭファイル４０３から、“ｖａｌ＝ｖａｌ＋１；”に対応する“ＡＤＲ”命令、“ＬＤＲ”命令、“ＡＤＤ”命令、および“ＳＴＲ”命令の処理時間を、処理量テーブル４０４を参照して算出する。図４の例では、シミュレーション制御装置１００は、“ＡＤＲ”命令の処理時間２［μｓ］、“ＬＤＲ”命令の処理時間３［μｓ］、“ＡＤＤ”命令の処理時間１［μｓ］、“ＳＴＲ”命令の処理時間４［μｓ］から、２＋３＋１＋４＝１０［μｓ］を算出する。
【００６７】
次に、シミュレーション制御装置１００は、ソースファイル４０１の関数や制御文に、処理量情報を追記することにより、処理量情報追記ソースファイル４０６を生成する。図４の例では、“ｂｕｄｇｅｔ（１０μｓ）；”が、“ｖａｌ＝ｖａｌ＋１；”の次に追記されている。
【００６８】
続けて、シミュレーション制御装置１００は、処理量情報追記ソースファイル４０６と、ハードウェアモデル１０１とを、シミュレーション用ネイティブコンパイラ４０７でコンパイルし、シミュレーション用実行オブジェクト４０８を生成する。シミュレーション用ネイティブコンパイラ４０７は、シミュレーション制御装置１００が実行可能な実行オブジェクトを生成するソフトウェアである。
【００６９】
図５は、シミュレーション処理の一例を示すシーケンス図である。始めに、シミュレーションスケジューラ３０４は、実行権をハードウェアモデル実行部３０１に設定する（ステップＳ５０１）。実行権が設定されたハードウェアモデル実行部３０１は、ハードウェアモデル１０１の動作を実行し、ハードウェアモデル１０１の処理を終了する（ステップＳ５０２）。ステップＳ５０２実行終了後の段階で、現在のＳｉｍ時刻にて動作を行うＳｉｍ対象が無いとする。
【００７０】
次に、シミュレーションスケジューラ３０４は、Ｓｉｍ時刻測定部３０３に、Ｓｉｍ時刻に１００［μｓ］を加算する指示を通知する（ステップＳ５０３）。Ｓｉｍ時刻測定部３０３は、指示を受け付けてＳｉｍ時刻に１００［μｓ］を加算し、処理を終了する（ステップＳ５０４）。
【００７１】
続けて、シミュレーションスケジューラ３０４は、実行権をハードウェアモデル実行部３０１に設定する（ステップＳ５０５）。実行権が設定されたハードウェアモデル実行部３０１は、ハードウェアモデル１０１の動作を実行する。ハードウェアモデルの動作中、ハードウェアモデル実行部３０１は、処理時間特定部３１８にソフトウェア１０２の現在の処理時間取得要求を通知する（ステップＳ５０６）。処理時間取得要求を受け付けた処理時間特定部３１８は、処理時間１を通知する（ステップＳ５０７）。
【００７２】
次に、ハードウェアモデル実行部３０１は、ソフトウェア１０２に割込通知を発行する（ステップＳ５０８）。割込通知を検出したシミュレーションスケジューラ３０４は、実行権をソフトウェア実行部３０２に設定する（ステップＳ５０９）。実行権が設定されたソフトウェア実行部３０２は、ソフトウェア１０２を実行し、ターゲットＣＰＵが割込処理を実行する場合の処理時間を特定するように処理時間特定部３１８に通知する（ステップＳ５１０）。処理時間特定部３１８は、通知を受け付けて、処理時間を特定し、処理を終了する（ステップＳ５１１）。処理終了を受け付けたソフトウェア実行部３０２は、割込処理の完了通知をハードウェアモデル１０１に通知する（ステップＳ５１２）。
【００７３】
続けて、完了通知を検出したシミュレーションスケジューラ３０４は、実行権をハードウェアモデル実行部３０１に設定する（ステップＳ５１３）。ハードウェアモデルの動作中、ハードウェアモデル実行部３０１は、処理時間特定部３１８にソフトウェア１０２の処理時間取得要求を通知する（ステップＳ５１４）。処理時間取得要求を受け付けた処理時間特定部３１８は、処理時間２を通知する（ステップＳ５１５）。取得した処理時間１と処理時間２の差を求めることにより、ハードウェアモデル実行部３０１は、ソフトウェア１０２の処理時間を取得することができる。続けて、ハードウェアモデル実行部３０１は、ハードウェアモデル１０１の処理を終了する（ステップＳ５１６）。ステップＳ５１６実行終了後の段階で、現在のＳｉｍ時刻にて動作を行うＳｉｍ対象が無いとする。
【００７４】
次に、シミュレーションスケジューラ３０４は、Ｓｉｍ時刻測定部３０３に、Ｓｉｍ時刻に１００［μｓ］を加算する指示を通知する（ステップＳ５１７）。以降、シミュレーション制御装置１００は、ステップＳ５０４の処理に移行して、シミュレーション処理を続行する。
【００７５】
図６は、出力結果の一例を示す説明図である。図６では、出力結果となる処理時間出力情報３２１は、割込処理ごとについての情報を記憶する。図６にて示す処理時間出力情報３２１は、レコード６０１−１〜６０１−４を記憶する。処理時間出力情報３２１は、割込開始時刻、割込終了時刻という２つのフィールドを含む。割込開始時刻フィールドには、割込処理を開始した時刻が格納される。割込終了時刻フィールドには、割込処理が終了した時刻が格納される。
【００７６】
たとえば、レコード６０１−１は、割込処理が０［μｓ］に開始されて、５０［μｓ］に終了されることを示している。また、シミュレーション制御装置１００は、レコード６０１−１〜６０１−４について、割込処理にかかった時間が制約時間を遵守できているかを判断する。また、制約時間となる割込通知の発行間隔が１００［μｓ］であるとする。
【００７７】
始めに、レコード６０１−１について、シミュレーション制御装置１００は、１回目の割込処理にかかった時間を、５０−０＝５０［μｓ］と算出する。続けて、シミュレーション制御装置１００は、１回目の割込処理にかかった時間５０［μｓ］が制約時間となる１００［μｓ］を超えておらず、制約時間を遵守できていると判断する。
【００７８】
次に、レコード６０１−２について、シミュレーション制御装置１００は、２回目の割込処理にかかった時間を、２００−５０＝１５０［μｓ］と算出する。続けて、シミュレーション制御装置１００は、２回目の割込処理にかかった時間１５０［μｓ］が制約時間となる１００［μｓ］を超えており、制約時間を遵守できていないと判断する。
【００７９】
続けて、レコード６０１−３について、シミュレーション制御装置１００は、３回目の割込処理にかかった時間を、２３０−２００＝３０［μｓ］と算出する。続けて、シミュレーション制御装置１００は、３回目の割込処理にかかった時間３０［μｓ］が制約時間となる１００［μｓ］を超えておらず、制約時間を遵守できていると判断する。
【００８０】
次に、レコード６０１−４について、シミュレーション制御装置１００は、４回目の割込処理にかかった時間を、４００−２３０＝１７０［μｓ］と算出する。続けて、シミュレーション制御装置１００は、４回目の割込処理にかかった時間１７０［μｓ］が制約時間となる１００［μｓ］を超えており、制約時間を遵守できていないと判断する。
【００８１】
全てのレコードに対して判断した後、シミュレーション制御装置１００は、割込処理にかかった時間のうち、最大の時間と、最大の時間となったときの回数を出力する。図６の例では、シミュレーション制御装置１００は、１７０［μｓ］、４回目という情報を出力する。また、シミュレーション制御装置１００は、制約時間を超えた、１５０［μｓ］、２回目という情報を出力してもよい。
【００８２】
出力された情報を用いて、開発者は、制約時間を遵守できるようにシミュレーション対象のシステムを変更する。たとえば、変更例の一つとして、ターゲットＣＰＵのクロック周波数を１．７倍にすることが挙げられる。次に、本実施の形態で行われるシミュレーション用実行オブジェクト生成処理と、シミュレーション処理のフローチャートと、シミュレーション処理から呼ばれる処理について、図７〜図１１にて説明する。
【００８３】
図７は、シミュレーション用実行オブジェクト生成処理手順の一例を示すフローチャートである。図４で説明したように、シミュレーション用実行オブジェクト生成処理の実行主体は、シミュレーション制御装置１００でもよいし、他の装置であってもよい。図７の説明では、シミュレーション制御装置１００が、シミュレーション用実行オブジェクト生成処理の実行主体であるとして、説明を行う。
【００８４】
シミュレーション制御装置１００は、ソースファイル４０１をターゲットコンパイラ４０２でコンパイルすることにより、ＡＳＭファイル４０３を生成する（ステップＳ７０１）。次に、シミュレーション制御装置１００は、処理量テーブル４０４を参照して、ＡＳＭファイル４０３から、処理量情報４０５を生成する（ステップＳ７０２）。続けて、シミュレーション制御装置１００は、ソースファイル４０１の関数や制御文に、処理量情報４０５を追記することにより、処理量情報追記ソースファイル４０６を生成する（ステップＳ７０３）。次に、シミュレーション制御装置１００は、シミュレーション用ネイティブコンパイラ４０７により、処理量情報追記ソースファイル４０６から、シミュレーション用実行オブジェクト４０８を生成する（ステップＳ７０４）。
【００８５】
ステップＳ７０４の処理終了後、シミュレーション制御装置１００は、シミュレーション用実行オブジェクト生成処理を終了する。シミュレーション用実行オブジェクト生成処理を実行することにより、シミュレーション制御装置１００は、シミュレーション処理中に、ターゲットＣＰＵがソースファイル４０１を実行するときの処理時間を得ることができる。
【００８６】
図８は、シミュレーション処理手順の一例を示すフローチャートである。シミュレーション処理は、シミュレーション制御装置１００が、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ（ＩＳＳ）レスシミュレータを用いて、シミュレーション用実行オブジェクトを読み込むことにより、実行される処理である。
【００８７】
始めに、シミュレーション制御装置１００は、動作Ｓｉｍ対象設定処理を実行する（ステップＳ８０１）。動作Ｓｉｍ対象設定処理の詳細は、図９にて後述する。また、動作Ｓｉｍ対象は、現在のＳｉｍ時刻で動作するＳｉｍ対象が設定された変数である。動作するＳｉｍ対象が無い場合、動作Ｓｉｍ対象は、ＮＵＬＬが設定される。
【００８８】
次に、シミュレーション制御装置１００は、該当のＳｉｍ時刻で動作Ｓｉｍ対象があるか否かを判断する（ステップＳ８０２）。動作Ｓｉｍ対象がある場合（ステップＳ８０２：Ｙｅｓ）、シミュレーション制御装置１００は、さらに、動作Ｓｉｍ対象を確認する（ステップＳ８０３）。
【００８９】
動作Ｓｉｍ対象がハードウェアモデル１０１である場合（ステップＳ８０３：ハードウェアモデル）、シミュレーション制御装置１００は、ハードウェアモデル１０１の動作を実行する（ステップＳ８０４）。次に、シミュレーション制御装置１００は、ステップＳ８０１の処理に移行する。
【００９０】
動作Ｓｉｍ対象がソフトウェア１０２である場合（ステップＳ８０３：ソフトウェア）、シミュレーション制御装置１００は、ソフトウェア実行処理を実行する（ステップＳ８０５）。ソフトウェア実行処理の詳細は、図１０と図１１にて後述する。次に、シミュレーション制御装置１００は、ステップＳ８０１の処理に移行する。
【００９１】
動作Ｓｉｍ対象が無い場合（ステップＳ８０２：Ｎｏ）、シミュレーション制御装置１００は、Ｓｉｍ時刻を更新する（ステップＳ８０６）。次に、シミュレーション制御装置１００は、シミュレーション処理が終了か否かを判断する（ステップＳ８０７）。シミュレーション処理を続行する場合（ステップＳ８０７：Ｎｏ）、シミュレーション制御装置１００は、ステップＳ８０１の処理に移行する。
【００９２】
シミュレーション処理を終了する場合（ステップＳ８０７：Ｙｅｓ）、シミュレーション制御装置１００は、ソフトウェア１０２の処理時間を出力する（ステップＳ８０８）。ステップＳ８０８の実行終了後、シミュレーション制御装置１００は、シミュレーション処理を終了する。シミュレーション処理を実行することにより、シミュレーション制御装置１００は、正常状態下でのソフトウェア１０２の処理時間を見積もることができる。
【００９３】
図９は、動作Ｓｉｍ対象設定処理手順の一例を示すフローチャートである。動作Ｓｉｍ対象設定処理は、現在のＳｉｍ時刻で動作するＳｉｍ対象を設定する処理である。始めに、シミュレーション制御装置１００は、該当のシミュレーション時刻で動作するハードウェアモデル１０１があるか否かを判断する（ステップＳ９０１）。動作するハードウェアモデル１０１がある場合（ステップＳ９０１：Ｙｅｓ）、シミュレーション制御装置１００は、動作Ｓｉｍ対象に動作するハードウェアモデル１０１を設定する（ステップＳ９０２）。
【００９４】
動作するハードウェアモデル１０１が無い場合（ステップＳ９０１：Ｎｏ）、シミュレーション制御装置１００は、ハードウェアモデル１０１からソフトウェア１０２に割込通知が発行されたことを検出したか否かを判断する（ステップＳ９０３）。割込通知が発行されたことを検出した場合（ステップＳ９０３：Ｙｅｓ）、シミュレーション制御装置１００は、動作Ｓｉｍ対象に割込通知を受け付けるソフトウェア１０２を設定する（ステップＳ９０４）。
【００９５】
割込通知が発行されたことを検出していない場合（ステップＳ９０３：Ｎｏ）、シミュレーション制御装置１００は、ソフトウェア１０２からハードウェアモデル１０１に割込処理の完了通知が発行されたことを検出したか否かを判断する（ステップＳ９０５）。完了通知が発行されたことを検出した場合（ステップＳ９０５：Ｙｅｓ）、シミュレーション制御装置１００は、動作Ｓｉｍ対象に完了通知を受け付けるハードウェアモデル１０１を設定する（ステップＳ９０６）。完了通知が発行されたことを検出していない場合（ステップＳ９０５：Ｎｏ）、シミュレーション制御装置１００は、動作Ｓｉｍ対象にＮＵＬＬを設定する（ステップＳ９０７）。
【００９６】
ステップＳ９０２、ステップＳ９０４、ステップＳ９０６、またはステップＳ９０７の実行終了後、シミュレーション制御装置１００は、動作Ｓｉｍ対象設定処理を終了する。動作Ｓｉｍ対象設定処理を実行することにより、シミュレーション制御装置１００は、次に動作するＳｉｍ対象を設定することができる。次に、図１０と図１１にて、ソフトウェア実行処理の２つの例を示す。シミュレーション制御装置１００は、図１０にて示すフローチャートと図１１にて示すフローチャートのうち、どちらを採用してもよい。
【００９７】
図１０は、ソフトウェア実行処理手順の一例を示すフローチャートである。ソフトウェア実行処理は、ソフトウェア１０２が実行する時の処理である。始めに、シミュレーション制御装置１００は、Ｓｉｍ時刻測定部３０３を停止させる（ステップＳ１００１）。次に、シミュレーション制御装置１００は、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御する（ステップＳ１００２）。続けて、シミュレーション制御装置１００は、ソフトウェア１０２を実行する（ステップＳ１００３）。
【００９８】
次に、シミュレーション制御装置１００は、ソフトウェア１０２からハードウェアモデル１０１に割込処理の完了通知が発行されたことを検出したか否かを判断する（ステップＳ１００４）。完了通知が発行されたことを検出していない場合（ステップＳ１００４：Ｎｏ）、シミュレーション制御装置１００は、ステップＳ１００３の処理に移行する。
【００９９】
完了通知が発行されたことを検出した場合（ステップＳ１００４：Ｙｅｓ）、シミュレーション制御装置１００は、実行した命令を特定する（ステップＳ１００５）。次に、シミュレーション制御装置１００は、特定した命令に対応する処理量情報４０５を取得する（ステップＳ１００６）。続けて、シミュレーション制御装置１００は、取得した処理量情報４０５から、ソフトウェア１０２の処理時間を特定する（ステップＳ１００７）。次に、シミュレーション制御装置１００は、ハードウェアモデル１０１の動作を再開する（ステップＳ１００８）。続けて、シミュレーション制御装置１００は、Ｓｉｍ時刻測定部３０３を再開させる（ステップＳ１００９）。ステップＳ１００９の実行終了後、シミュレーション制御装置１００は、ソフトウェア実行処理を終了する。ソフトウェア実行処理を実行することにより、ソフトウェアの処理がＳｉｍ時刻を消費しないようにできる。
【０１００】
図１１は、ソフトウェア実行処理手順の他の例を示すフローチャートである。図１１に示すステップＳ１１０６〜ステップＳ１１１０は、ステップＳ１００５〜ステップＳ１００９と同一の処理であるため、説明を省略する。始めに、シミュレーション制御装置１００は、ソフトウェア１０２を実行する（ステップＳ１１０１）。次に、シミュレーション制御装置１００は、ソフトウェア１０２からハードウェアモデル１０１に割込処理の完了通知が発行されたことを検出したか否かを判断する（ステップＳ１１０２）。
【０１０１】
完了通知が発行されたことを検出していない場合（ステップＳ１１０２：Ｎｏ）、シミュレーション制御装置１００は、Ｓｉｍ時刻が第３のＳｉｍ時刻以降であり、かつハードウェアモデルが動作中か否かを判断する（ステップＳ１１０３）。条件を満たす場合（ステップＳ１１０３：Ｙｅｓ）、シミュレーション制御装置１００は、Ｓｉｍ時刻測定部３０３を停止させる（ステップＳ１１０４）。続けて、シミュレーション制御装置１００は、ハードウェアモデルの動作を停止させるようにハードウェアモデル１０１を制御する（ステップＳ１１０５）。ステップＳ１１０５の実行終了後、または、条件を満たさない場合（ステップＳ１１０３：Ｎｏ）、シミュレーション制御装置１００は、ステップＳ１１０１の処理に移行する。完了通知が発行されたことを検出した場合（ステップＳ１１０２：Ｙｅｓ）、シミュレーション制御装置１００は、ステップＳ１１０６の処理に移行する。
【０１０２】
以上説明したように、シミュレーション制御装置１００によれば、ハードウェアモデル１０１の割込通知を検出して、ソフトウェア１０２の割込処理完了までハードウェアモデル１０１を停止させるようにハードウェアモデル１０１を制御する。これにより、シミュレーション制御装置１００は、シミュレーション対象システムの動作を割込処理の制約時間を取り払って動作できるため、制約を遵守した状態での性能評価が行える。また、シミュレーション制御装置１００は、一回のシミュレーション処理によりシミュレーション時刻全体の、制約を遵守した状態での性能評価が行えるため、短期間で割込処理の最悪値を測定することができる。
【０１０３】
また、シミュレーション制御装置１００によれば、シミュレーション時刻の進行を停止させることにより、ハードウェアモデル１０１を停止させてもよい。これにより、シミュレーション制御装置１００は、ハードウェアモデル１０１の状態を保持しておく方法に比べて、単純な処理にてハードウェアモデル１０１を停止させることができる。
【０１０４】
また、シミュレーション制御装置１００によれば、第１のＳｉｍ時刻にて、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御してもよい。これにより、シミュレーション制御装置１００は、次の割込通知が発行される時刻を記憶していなくとも、シミュレーション対象システムの動作を割込処理の制約時間を取り払って動作できる。
【０１０５】
また、シミュレーション制御装置１００によれば、第３のＳｉｍ時刻にて、完了通知が発行されているか否かを判断し、完了通知が発行されていない場合に、ハードウェアモデル１０１の動作を停止させるようにハードウェアモデル１０１を制御してもよい。これにより、シミュレーション制御装置１００は、割込処理が第３のＳｉｍ時刻より速く完了した場合、ハードウェアモデル１０１の動作を停止しなくてよくなるため、協調シミュレーションの処理時間を短縮できる可能性がある。
【０１０６】
また、シミュレーション制御装置１００によれば、割込処理で実行された命令を特定し、特定した命令の処理時間から、割込処理の処理時間を特定してもよい。これにより、シミュレーション制御装置１００は、制約を遵守した状態下の割込処理の処理時間を見積もることができる。
【０１０７】
なお、本実施の形態で説明したシミュレーション制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本シミュレーション制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本シミュレーション制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１０８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０９】
（付記１）コンピュータに、
ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出し、
前記割込通知が発行されたことを検出した第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御し、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出し、
前記完了通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させ、
前記完了通知が発行されたことを検出した場合、前記割込処理の処理時間を特定し、
特定した前記割込処理の処理時間を表す情報を出力する、
処理を実行させることを特徴とするシミュレーション制御プログラム。
【０１１０】
（付記２）前記制御する処理は、
前記第３のシミュレーション時刻にて、シミュレーション時刻の進行を停止させることにより、前記シミュレーション時刻の進行に伴って動作する前記ハードウェアモデルの動作を停止させることを特徴とする付記１に記載のシミュレーション制御プログラム。
【０１１１】
（付記３）前記制御する処理は、
前記第１のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御することを特徴とする付記１または２に記載のシミュレーション制御プログラム。
【０１１２】
（付記４）前記コンピュータに、
前記割込通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて、前記完了通知が発行されているか否かを判断する処理を実行させ、
前記制御する処理は、
前記完了通知が発行されていないと判断したときに、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御することを特徴とする付記１または２に記載のシミュレーション制御プログラム。
【０１１３】
（付記５）前記コンピュータに、
前記完了通知が発行されたことを検出した場合、前記割込処理にて実行された命令を特定し、
前記ソフトウェアに含まれる命令ごとの処理時間を記憶する記憶部を参照して、特定した前記命令に対応する処理時間を取得する処理を実行させ、
前記処理時間を特定する処理は、
前記完了通知が発行されたことを検出した場合、取得した前記命令に対応する処理時間に基づいて、前記割込処理の処理時間を特定することを特徴とする付記１〜４のいずれか一つに記載のシミュレーション制御プログラム。
【０１１４】
（付記６）ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出し、
前記割込通知が発行されたことを検出した第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御し、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出し、
前記完了通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させ、
前記完了通知が発行されたことを検出した場合、前記割込処理の処理時間を特定し、
特定した前記割込処理の処理時間を表す情報を出力する、
処理をコンピュータに実行させるシミュレーション制御プログラムを記録したことを特徴とする記録媒体。
【０１１５】
（付記７）ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出する割込通知検出部と、
前記割込通知が発行されたことを前記割込通知検出部によって検出された第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御する制御部と、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出する完了通知検出部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させる再開部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記割込処理の処理時間を特定する処理時間特定部と、
前記処理時間特定部によって特定された前記割込処理の処理時間を表す情報を出力する出力部と、
を有することを特徴とするシミュレーション制御装置。
【０１１６】
（付記８）ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出する割込通知検出部と、
前記割込通知が発行されたことを前記割込通知検出部によって検出された第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御する制御部と、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出する完了通知検出部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させる再開部と、
前記完了通知検出部によって前記完了通知が発行されたことが検出された場合、前記割込処理の処理時間を特定する処理時間特定部と、
前記処理時間特定部によって特定された前記割込処理の処理時間を表す情報を出力する出力部と、
を有するコンピュータを含むことを特徴とするシミュレーション制御装置。
【０１１７】
（付記９）コンピュータが、
ハードウェアモデルとソフトウェアとの協調シミュレーションの実行中に、前記ハードウェアモデルから前記ソフトウェアに割込通知が発行されたことを検出し、
前記割込通知が発行されたことを検出した第１のシミュレーション時刻から前記割込通知の次の割込通知が前記ハードウェアモデルから前記ソフトウェアに発行される第２のシミュレーション時刻までの期間のうち、前記第２のシミュレーション時刻より前の第３のシミュレーション時刻にて、前記ハードウェアモデルの動作を停止させるように前記ハードウェアモデルを制御し、
前記割込通知を受け付けた場合に前記ソフトウェアにより実行される割込処理の完了通知が前記ソフトウェアから前記ハードウェアモデルに発行されたことを検出し、
前記完了通知が発行されたことを検出した場合、前記第３のシミュレーション時刻にて動作が停止させられた前記ハードウェアモデルの動作を前記第３のシミュレーション時刻から再開させ、
前記完了通知が発行されたことを検出した場合、前記割込処理の処理時間を特定し、
特定した前記割込処理の処理時間を表す情報を出力する、
処理を実行することを特徴とするシミュレーション制御方法。
【符号の説明】
【０１１８】
１００  シミュレーション制御装置
１０１  ハードウェアモデル
１０２  ソフトウェア
３０１  ハードウェアモデル実行部
３０２  ソフトウェア実行部
３０３  Ｓｉｍ時刻測定部
３０４  シミュレーションスケジューラ
３０５  割込通知
３０６  完了通知
３１１  割込通知検出部
３１２  判断部
３１３  制御部
３１４  完了通知検出部
３１５  再開部
３１６  命令特定部
３１７  取得部
３１８  処理時間特定部
３１９  出力部
３２１  処理時間出力情報
【図１Ａ】
2014071841.tif 000003
【図１Ｂ】
2014071841.tif 000004
【図２】
2014071841.tif 000005
【図３】
2014071841.tif 000006
【図４】
2014071841.tif 000007
【図５】
2014071841.tif 000008
【図６】
2014071841.tif 000009
【図７】
2014071841.tif 000010
【図８】
2014071841.tif 000011
【図９】
2014071841.tif 000012
【図１０】
2014071841.tif 000013
【図１１】
2014071841.tif 000014