(57)【要約】【課題】マルチＣＰＵシステムのシミュレーションを高速かつ効率的に実行させる。【解決手段】検証支援装置１００は、マルチＣＰＵシミュレータ１１０によって検証対象ソフトウェア１０１のシミュレーションを実行してシミュレーション結果１０２を得ることができ、マルチＣＰＵスケジューラ２００によって、マルチＣＰＵモデル２１０に実行させる命令群を時刻順にソートして命令群の実行間隔を算出し、当該実行間隔ごと該当する命令の実行指示を与えるため、必要最低限の処理によって命令群のシミュレーションを実行できる。【選択図】図１
2010191758.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータを、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段、
前記ソート手段によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出手段、
前記算出手段によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える制御手段、
として機能させることを特徴とする検証支援プログラム。
【請求項２】
複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータを、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段、
任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内に前記ソート手段によってソートされたいずれかの命令の実行時刻が含まれているような基準時刻を前記各基準時刻の中から抽出する抽出手段、
前記抽出手段によって抽出された基準時刻ごとに、該当する命令の実行指示と、当該実行指示の実行までの待機時間とを、前記実行対象となるプロセッサモデルに与える制御手段、
として機能させることを特徴とする検証支援プログラム。
【請求項３】
複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなう検証支援装置であって、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段と、
前記ソート手段によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出手段と、
前記算出手段によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える制御手段と、
を備えることを特徴とする検証支援装置。
【請求項４】
複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなう検証支援装置であって、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段と、
任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内に前記ソート手段によってソートされたいずれかの命令の実行時刻が含まれているような基準時刻を前記各基準時刻の中から抽出する抽出手段と、
前記抽出手段によって抽出された基準時刻ごとに、該当する命令の実行指示と、当該実行指示の実行までの待機時間とを、前記実行対象となるプロセッサモデルに与える制御手段と、
を備えることを特徴とする検証支援装置。
【請求項５】
複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータが、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート工程と、
前記ソート工程によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出工程と、
前記算出工程によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える指示工程と、
を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなう検証支援プログラム、検証支援装置および検証支援方法に関する。
【背景技術】
【０００２】
近年、車載用途の電子機器など、ある一定以上の規模をもつシステムの場合、複数のＣＰＵを用意して、各ＣＰＵを協調動作させることにより処理速度の向上を図るマルチＣＰＵシステムに関する技術、また、機能ごとに１つのＣＰＵを割り当てることにより開発の簡便を図るマルチＣＰＵシステムに関する技術が多く用いられている。これらマルチＣＰＵシステムによって実行させるソフトウェアを検証する際には、実機に比べユーザの利便性が高く、高速なシミュレートが可能なことから、マルチＣＰＵをソフトウェアによって実現したマルチＣＰＵモデルシミュレータが多く利用されている（たとえば、下記特許文献１参照。）。
【０００３】
図１３は、従来のマルチＣＰＵシミュレータの構成を示すブロック図である。図１３のように、従来のマルチＣＰＵシミュレータ１３００は、マルチＣＰＵスケジューラ１０によって、複数のＣＰＵモデル１１（たとえば、ＣＰＵモデル１，２）の実行制御ならびにＣＰＵ間通信制御をおこなう。なお、図１３のマルチＣＰＵシミュレータ１３００では、２つのＣＰＵが協調動作する場合のシミュレーションをおこなうため、２つのＣＰＵモデル１１が用意されている。したがって、さらに多数のＣＰＵを備えたマルチＣＰＵシステムによる動作のシミュレーションをおこなう場合には、システムの構成に応じたＣＰＵモデルを用意する。
【０００４】
そして、図１４は、従来のマルチＣＰＵシミュレータの動作を示す説明図である。マルチＣＰＵスケジューラ１０では、検証対象となるソフトウェアを読み込むと、所定の単位時間ごとに該当する命令（トランザクションなど）の実行指示を各ＣＰＵモデル１１へ送信することによって各ＣＰＵモデルの同期をとっている。たとえば、マルチＣＰＵスケジューラ１０の場合、０．２５［ｍｓ］の単位時間ごとに命令（実行する命令がある場合には）が実行される。したがって、図１４に例示した動作では、単位時間経過ごとのタイミング０．２５，０．５，０．７５［ｍｓ］にマルチＣＰＵスケジューラ１０から命令の実行指示が送信され、各ＣＰＵモデル１１の同期が管理される。そして、マルチＣＰＵスケジューラ１０の管理下にあるすべてのＣＰＵモデル１１の処理が完了すると、次の実行時刻の処理に移行する。
【０００５】
また、従来のマルチＣＰＵシステムには、ＣＰＵ間のデータ送受信を実現するために複数のＣＰＵ間を所定のネットワークによって接続した構成もあり、このようなシステムに対応したマルチＣＰＵシミュレータも提供されている。図１５は、ＣＰＵ間をネットワーク回路で接続したマルチＣＰＵシミュレータの構成を示すブロック図である。図１５のようにマルチＣＰＵシミュレータ１５００では、各ＣＰＵモデル１１を接続するネットワーク回路１２が用意されている。したがって、マルチＣＰＵスケジューラ１０は、ネットワーク回路１２を介してＣＰＵ間通信制御をおこなうことによって各ＣＰＵモデル１１に実行させる命令を管理する。
【０００６】
そして、図１６は、ＣＰＵ間をネットワーク回路で接続したマルチＣＰＵシミュレータの動作を示す説明図である。図１６を用いて、ＣＰＵモデル１から０．２７［ｍｓ］のタイミングで１［ｂｙｔｅ］のデータをＣＰＵモデル２へ送信する場合について説明する。なお、ネットワーク回路１２の伝送速度は１９．２［ｋｂｐｓ］とする。すると、ＣＰＵモデル２へのデータ送信は０．６７［ｍｓ］のタイミングに完了するため、約４００［μｓ］の遅延が発生する。上述したように、マルチＣＰＵスケジューラ１０は、０．２５［ｍｓ］のタイミングごとにマルチＣＰＵモデル１１の各ＣＰＵモデル間の同期をとるため、０．５［ｍｓ］のタイミングにて、ＣＰＵモデル１からのデータの送信要求がＣＰＵモデル２へ通知される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−５９１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したような従来のマルチＣＰＵシミュレータの場合、マルチＣＰＵシステムの高集積化や処理性能の向上に伴い、ＣＰＵ間のデータの伝送速度が高速化すると、トランザクションの同期がとれなくなってしまう恐れがある。ここで、図１７は、ＣＰＵ間を高速なネットワーク回路で接続したマルチＣＰＵシミュレータの動作を示す説明図である。図１７を用いて、図１５にて説明したマルチＣＰＵシミュレータ１５００のネットワーク回路１２の伝送速度が１［Ｍｂｐｓ］に高速化した場合のＣＰＵ間のデータ送信について説明する。
【０００９】
図１７のように、ＣＰＵモデル１から２７０［μｓ］のタイミング（図１６の０．２７［ｍｓ］と同じタイミング）で４［ｂｙｔｅ］のデータをＣＰＵモデル２へ送信する場合、約３２［μｓ］の遅延が発生する。すなわち、ＣＰＵモデル２へのデータ送信は３０２［μｓ］のタイミングに完了する。しかしながら、マルチＣＰＵスケジューラ１０による次回の同期管理のタイミングは０．５０［ｍｓ］であるため、データ送信の完了時にＣＰＵモデル２にＣＰＵモデル１からのデータの送信要求を通知できない。したがって、正常なトランザクションとして処理できないという問題があった。
【００１０】
高速な伝送環境のマルチＣＰＵシステムであっても、正常なトランザクション処理をおこなうには、各ＣＰＵ間の同期をとる単位時間の間隔をより短く設定しなければならない。たとえば、マルチＣＰＵスケジューラ１０を図１７の０．５〜０．７５［ｍｓ］間に示したように２５［μｓ］間隔ごとに同期をとるような設定にすれば、正常なトランザクションが可能になるが、同期をとるための計算回数だけでも１０倍になってしまうため、処理負荷が大幅に増加し、シミュレーション速度が低下してしまうという問題があった。
【００１１】
この発明は、上述した従来技術による問題点を解消するため、マルチＣＰＵシステムのシミュレーションを高速かつ効率的に実行させる検証支援プログラム、検証支援装置および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、この検証支援プログラム、検証支援装置および検証支援方法は、複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータにおいて、前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートする処理と、ソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する処理と、算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える処理と、を含むことを要件とする。
【００１３】
この検証支援プログラム、検証支援装置および検証支援方法によれば、マルチＣＰＵシステムなど複数のプロセッサが協調動作をおこなうシステムにおける動作を検証したい検証対象ソフトウェアの命令群を取得すると、各命令は実行時刻順にソートされ、各命令の実行間隔を算出する。マルチプロセッサモデルでは、算出された実行間隔にのみ該当する処理を実行すれば、取得した命令群のシミュレーションをおこなうことができる。
【発明の効果】
【００１４】
この検証支援プログラム、検証支援装置および検証支援方法によれば、マルチＣＰＵシステムのシミュレーションを高速かつ効率的に実行させることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本実施の形態にかかる検証支援処理の概要を示す説明図である。
【図２】本実施の形態にかかるマルチＣＰＵシステムのシミュレータの構成を示す説明図である。
【図３】検証支援装置のハードウェア構成を示すブロック図である。
【図４】検証支援装置の機能的構成を示すブロック図である。
【図５】実施の形態１における検証支援装置の動作を示す説明図である。
【図６】実施の形態１の検証支援装置におけるデータ送信時の動作を示す説明図である。
【図７】検証支援装置によって用いる各データの構成を示す説明図である。
【図８】実施の形態１におけるマルチＣＰＵスケジューラの処理手順を示すフローチャートである。
【図９】実施の形態１におけるＣＰＵモデルの処理手順を示すフローチャートである。
【図１０】実施の形態２における検証支援装置の動作を示す説明図である。
【図１１】実施の形態２の検証支援装置におけるデータ送信時の動作を示す説明図である。
【図１２】実施の形態２におけるマルチＣＰＵモデルの処理手順を示すフローチャートである。
【図１３】従来のマルチＣＰＵシミュレータの構成を示すブロック図である。
【図１４】従来のマルチＣＰＵシミュレータの動作を示す説明図である。
【図１５】ＣＰＵ間をネットワーク回路で接続したマルチＣＰＵシミュレータの構成を示すブロック図である。
【図１６】ＣＰＵ間をネットワーク回路で接続したマルチＣＰＵシミュレータの動作を示す説明図である。
【図１７】ＣＰＵ間を高速なネットワーク回路で接続したマルチＣＰＵシミュレータの動作を示す説明図である。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照して、この検証支援プログラム、検証支援装置および検証支援方法の好適な実施の形態を詳細に説明する。この検証支援プログラム、検証支援装置および検証支援方法では、マルチＣＰＵシステムに実行させる命令群を時刻順にソートして命令群の実行間隔を算出し、当該実行間隔ごと該当する命令の実行指示を与えるため、必要最低限の処理によって命令群のシミュレーションを実行できる。
【００１７】
（検証支援処理の概要）
まず、本実施の形態にかかる検証支援処理の概要について説明する。図１は、本実施の形態にかかる検証支援処理の概要を示す説明図である。図１のように、検証支援装置１００は、マルチＣＰＵシミュレータ１１０によって検証対象ソフトウェア１０１のシミュレーションを実行してシミュレーション結果１０２を得ることができる。
【００１８】
マルチＣＰＵシミュレータ１１０は、マルチＣＰＵシステムの動作をソフトウェアによって実現した機能部であり、マルチＣＰＵスケジューラ２００と、マルチＣＰＵモデル２１０によって構成されている。マルチＣＰＵスケジューラ２００は、検証支援装置１００が取得した検証対象ソフトウェア１０１を構成する命令群を実行時刻順にソートし、実行時刻順に該当する命令の実行指示をマルチＣＰＵモデル２１０に与える。
【００１９】
マルチＣＰＵモデル２１０は、検証対象ソフトウェア１０１を処理する際に協調動作する複数のＣＰＵの動作をソフトウェアによって実現したＣＰＵモデル１〜Ｎによって構成されている。したがって、マルチＣＰＵモデル２１０は、マルチＣＰＵスケジューラ２００から命令の実行指示を受け付けると、該当するＣＰＵモデルによって処理を実行させる。そして、マルチＣＰＵモデル２１０による検証対象ソフトウェア１０１の実行結果はシミュレーション結果１０２として出力される。
【００２０】
このように、本実施の形態にかかる検証支援処理では、マルチＣＰＵスケジューラ２００によって、各ＣＰＵモデルが処理をおこなう時刻を取得し、取得した時刻に該当するＣＰＵへ実行指示を与えるため、必要最低限の検証対象ソフトウェア１０１のシミュレーションを実現することができる。また、命令に応じた実行時刻に実行指示を送信すればよいため、ＣＰＵ間の伝送速度にかかわらず、正常なトランザクションが可能となる。以下に、上述したような本実施の形態にかかる検証支援処理を実現するための具体的な構成について、実施の形態１，２の２つの例を挙げて説明する。
【００２１】
（マルチＣＰＵシミュレータの構成）
まず、実施の形態１，２に共通して検証対象ソフトウェア１０１のシミュレーションをおこなうマルチＣＰＵシミュレータ１１０の構成について説明する。図２は、本実施の形態にかかるマルチＣＰＵシミュレータの構成を示す説明図である。図２のように、マルチＣＰＵシミュレータ１２０は、マルチＣＰＵスケジューラ２００と、ＣＰＵモデル１，２を含んだマルチＣＰＵモデル２１０とによって構成されている。また、各ＣＰＵモデル内には、ＣＰＵモデル内の動作タイミングを制御するＣＰＵ内スケジューラと、実際のＣＰＵ内部のハードウェアに対応したハードウェアモデルと、これらハードウェアに実行させるソフトウェアに対応したソフトウェアモデルとが用意されている。
【００２２】
（検証支援装置のハードウェア構成）
つぎに、検証支援装置１００の具体的なハードウェア構成について説明する。図３は、実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。検証支援装置１００の構成も実施の形態１，２に共通であり、図３に示したような汎用の情報処理装置に本実施の形態にかかる検証支援処理を実現させる検証支援プログラムを実行させることによって、検証支援装置１００としての機能を実現することができる。
【００２３】
図３において、検証支援装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０６と、入力デバイス３０７と、出力デバイス３０８と、を備えている。また、各構成部はバス３１０によってそれぞれ接続されている。
【００２４】
ここで、ＣＰＵ３０１は、検証支援装置１００の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムや、本実施の形態にかかる検証支援処理を実現するための検証支援プログラムなどの各種プログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータの更新／参照を制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。なお、図３のハードウェア構成では、検証支援装置１００の記録媒体の実装例、磁気ディスク３０５を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
【００２５】
通信Ｉ／Ｆ３０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク（ＮＥＴ）３０９に接続され、このネットワーク３０９を介して他の検証支援装置１００やその他の外部装置に接続される。そして、通信Ｉ／Ｆ３０６は、ネットワーク３０９と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ３０６の構成例としては、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２６】
入力デバイス３０７は、検証支援装置１００に対しての外部からの入力を受け付ける。入力デバイス３０７としては、具体的には、キーボード、マウスなどが挙げられる。なお、図１に示したように検証支援装置１００によって、シミュレーションをおこなう検証対象ソフトウェア１０１は、ＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域にあらかじめ格納されていてもよいが、入力デバイス３０７から入力されて、上述の記憶領域に格納されてもよい。
【００２７】
また、キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２８】
出力デバイス３０８は、検証支援装置１００に格納された各種データや、シミュレーション結果１０２などを出力する。出力デバイス３０８としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【００２９】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【００３０】
（検証支援装置の機能的構成）
つぎに、本実施の形態にかかる検証支援装置１００の機能的構成について説明する。図４は、検証支援装置の機能的構成を示すブロック図である。ここでは、検証支援装置１００が、図１にて説明したようなマルチＣＰＵスケジューラ２００ならびにマルチＣＰＵモデル２１０として動作を実現するための機能的構成について説明する。なお、マルチＣＰＵモデル２１０の動作については、従来のマルチＣＰＵモデルの機能を利用しているため、本実施の形態にかかる検証支援処理を実現する際の独自の構成のみ説明する。
【００３１】
図４のように、検証支援装置１００は、ソート部４０１と、算出部４０２と、制御部４０３と、判断部４０４と、通知部４０５と、抽出部４０６とを含む構成である。これら、マルチＣＰＵスケジューラ２００およびマルチＣＰＵモデル２１０を実現する機能（ソート部４０１〜抽出部４０６）は、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶された検証支援プログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０６により、その機能を実現する。
【００３２】
ソート部４０１は、マルチＣＰＵモデル２１０に実行させる検証対象ソフトウェア１０１を取得すると、検証対象ソフトウェア１０１内の命令群を実行時刻順にソートする機能を有する。検証対象ソフトウェア１０１内の各命令には、マルチＣＰＵモデル２１０の中の実行対象となるＣＰＵモデル（たとえば、ＣＰＵモデル１）と実行時刻との情報が含まれている。したがって、ソート部４０１は、各命令の実行時刻を参照して、実行時刻の早い命令から遅い命令の順に命令群をソートする。
【００３３】
なお、各命令には、実行時刻に関する情報は、検証支援装置１００の時計を基準とした絶対時間が設定されている場合や、先頭の命令を基準とした相対時間が設定されている場合など様々であるが、いずれの場合であっても、マルチＣＰＵスケジューラ２００の時刻に同期した状態で動作させる。そして、ソートされた命令群は、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。
【００３４】
算出部４０２は、ソート部４０１によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する機能を有する。連続する命令とは、実行時刻の隣接した命令同士を指す。具体的には、図１に例示した命令１〜３であれば命令１と命令２、命令２と命令３とが連続した命令同士となる。そして、算出部４０２では、これら連続した命令の実行時刻の差分を求めて命令を実行する間隔を算出する。なお、算出された実行間隔は、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。
【００３５】
制御部４０３は、算出部４０２によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるＣＰＵモデルに与える。たとえば、命令１が０．２２［ｍｓ］のタイミングにＣＰＵモデル１に実行させ、命令２が０．５［ｍｓ］のタイミングにＣＰＵモデル２に実行させる処理の場合であれば、それぞれのタイミングにマルチＣＰＵモデル２１０の中の実行対象となるＣＰＵモデルに対して実行指示を与える。なお、制御部４０３から出力された実行指示は、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。
【００３６】
以上説明したようにソート部４０１、算出部４０２および制御部４０３によって検証対象ソフトウェア１０１の命令群をシミュレーションすることができるが、各命令は、さらに、その実行内容、実行結果に応じて同一の命令の次回実行が決定する。そこで、マルチＣＰＵモデル２１０には、実行した命令の次回実行予定を判断する機能部（判断部４０４）が用意されている。
【００３７】
判断部４０４は、マルチＣＰＵモデル２１０によって実行された命令に次回実行予定があるか否かを判断する。そして、判断部４０４によって次回実行予定があると判断された場合には、ソート部４０１に、次回実行予定の命令を含んだ命令群を加える。ソート部４０１では、あらたに加えられた命令を含んだ各命令を再度実行時刻順にソートする。
【００３８】
また、マルチＣＰＵモデル２１０によって実行される命令には、他のＣＰＵモデルにデータを送信する処理がある。マルチＣＰＵモデル２１０には、このようなデータの送信をおこなう命令を実行した場合に、データの送信先となる他のＣＰＵモデルに通知する機能部（通知部４０５）が用意されている。
【００３９】
通知部４０５は、マルチＣＰＵモデル２１０によって実行された命令に他のプロセッサモデルへの任意のデータの送信要求が含まれていた場合、送信要求に対応した命令をソート部４０１に通知する。そして、ソート部４０１では、通知部４０５から送信要求を含んだ命令が通知された場合、この送信要求に対応した命令を含んだ命令群を実行時刻順にソートする。さらに、制御部４０３は、ある実行間隔に実行指示を与えた命令が上述の送信要求に対応した命令であった場合、この命令の実行指示とともに対応するデータを送信先となる他のＣＰＵモデルへ与える。
【００４０】
以上説明した各機能部４０１〜４０５を用いることによって、マルチＣＰＵスケジューラ２００は、マルチＣＰＵモデル２１０に対して、検証対象ソフトウェア１０１に含まれた命令群の実行予定時刻にのみ実行指示を与えればよい。したがって、必要最低限の処理で検証対象ソフトウェア１０１のシミュレーションが可能になる。また、マルチＣＰＵシステム内の伝送速度にかかわらず、正しいタイミングで正常なトランザクションを実現することができる。
【００４１】
検証支援装置１００は、上述したような命令の実行間隔を求める手法のほかに、抽出部４０６を用いて、単位時間ごとのタイミングを基準時刻として、この基準時刻をトリガに設定し、マルチＣＰＵモデル２１０への実行指示を送信するタイミングを含む実行時刻にのみ、実際にマルチＣＰＵスケジューラ２００を動作させる手法を用いることができる。
【００４２】
抽出部４０６は、任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内にソート部４０１によってソートされたいずれかの命令の実行時刻が含まれている基準時刻を抽出する。すなわち、０からスタートして２５０［μｓ］を単位時間として加算した時刻を基準時刻とする。したがって、０，２５０，５００，７５０，１０００，…［μｓ］がそれぞれ基準時刻となる。この単位時間は任意の間隔を設定することができる。
【００４３】
そして、抽出部４０６は、ソート部４０１によってソートされた順番に各命令の実行時刻が基準時刻から２５０［μｓ］未満に含まれる基準時刻を抽出する。たとえば、命令１（実行時刻：２５０［μｓ］）、命令２（実行時刻：７７０［μｓ］）と命令群がソートされている場合、基準時刻として２５０，７５０［μｓ］が抽出される。
【００４４】
抽出部４０６によって、命令の実行時刻が含まれている基準時刻が抽出されると、制御部４０３は、それぞれの基準時刻に該当するＣＰＵモデルへ命令の実行指示を与える。上述のように、命令の実行時刻と基準時刻とは一致しないことがある。したがって、制御部４０３は、実行指示とともに、基準時刻から実行時刻までの差分を待機時間としてＣＰＵモデルへ送信する。
【００４５】
ＣＰＵモデルでは、実行指示を受け付けると、待機時間分待機したのち、実行指示に応じた処理を実行する。上述した命令１の場合、該当するＣＰＵモデルは、基準時刻（２５０［μｓ］）と実行時刻（２５０［μｓ］）との差分が０［μｓ］であるため、基準時刻から０［μｓ］後、すなわち待機なしに命令に応じた処理を実行する。また、命令２の場合、該当するＣＰＵは、基準時刻（７５０［μｓ］）と実行時刻（７７０［μｓ］）との差分が２０［μｓ］であるため、２０［μｓ］待機後に、命令に応じた処理を実行する。
【００４６】
このように、抽出部４０６を用いた場合、検証支援装置１００のマルチＣＰＵスケジューラ２００は、単位時間ごとに、実行する処理がある場合にのみ、対象となるＣＰＵモデル２１０に実行指示を送信すればよい。また、ＣＰＵモデルによって各ＣＰＵモデル間のデータ送信など遅延が発生する処理を実行する場合であっても、マルチＣＰＵスケジューラ２００に送信処理が完了する時刻を通知する処理を追加することによって、正常なトランザクションを実現することができる。
【００４７】
以下に、算出部４０２によって算出されたタイミングに実行指示を与える場合の具体的な処理を実施の形態１として、抽出部４０６によって抽出された基準時刻に実行指示を与える場合の具体的な処理を実施の形態２としてそれぞれ説明する。
【００４８】
（実施の形態１）
図５は、実施の形態１における検証支援装置の動作を示す説明図である。実施の形態１では、検証対象ソフトウェア１０１の命令によって処理が予定されているタイミングにのみマルチＣＰＵスケジューラ２００からマルチＣＰＵモデル２１０の中の該当するＣＰＵモデル（ＣＰＵモデル１，２）への実行指示が送信される。
【００４９】
図５では、マルチＣＰＵスケジューラ２００が、２７０，４００，５１０［μｓ］のタイミングに各ＣＰＵモデルへ命令の実行指示を送信する処理を例示している（図５中の２５０，５００［μｓ］はタイミングの目安を表すメモリ）。タイミング２７０，４００［μｓ］では命令１，２がそれぞれＣＰＵモデル１へ送信されるため、ＣＰＵモデル１では、命令１，２に応じた処理を実行する。また、タイミング５１０［μｓ］では、命令３がＣＰＵモデル２へ送信されるため、ＣＰＵモデル２では、命令３に応じた処理が実行される。また、各ＣＰＵモデルにおける命令の実行結果は、返却値（詳しくは後述する）としてマルチＣＰＵスケジューラ２００へ送信される。
【００５０】
マルチＣＰＵスケジューラ２００では、検証対象ソフトウェア１０１の命令群の実行時刻として得られたすべての処理が完了すると、各ＣＰＵモデルから送信された返却値に次回実行する命令が含まれていた場合には、この命令の実行予定時刻まで処理を進めて、対象となるＣＰＵモデルへ実行指示を送信する。マルチＣＰＵスケジューラ２００は、命令の実行予定がなくなるまで上述の処理を繰り返す。
【００５１】
また、図６は、実施の形態１の検証支援装置におけるデータ送信時の動作を示す説明図である。図６では、ＣＰＵモデル間のデータ送信がある場合の処理について説明する。図６の命令１は、ＣＰＵモデル１からＣＰＵモデル２へデータを送信する処理である。この場合、ＣＰＵモデル１によって命令１が実行されると、ＣＰＵ２へのデータの「送信要求」と、この命令を実行させる「次の時刻」が返却値としてマルチＣＰＵスケジューラ２００へ送信される。
【００５２】
命令２は、ＣＰＵモデル１から送信された送信要求を実行する命令である。したがって、マルチＣＰＵスケジューラ２００は、ＣＰＵモデル１から送信された「次の時刻」まで処理を進め、「送信要求」に応じてＣＰＵモデル２へデータを送信する。マルチＣＰＵスケジューラ２００は、ＣＰＵモデル２による命令２の実行結果の返却値を受け取ると、この返却値に基づいて、次回の命令３を実行させる。ＣＰＵモデル１では、命令３に応じた処理を実行し、この実行結果をマルチＣＰＵスケジューラ２００へ送信する。マルチＣＰＵスケジューラ２００では、実行結果を受け付け、つぎの命令４まで処理を進める。
【００５３】
＜データの構成＞
つぎに、図５，６によって説明した処理の際に扱われるデータについて、さらに詳細に説明する。検証支援装置１００によって検証対象ソフトウェア１０１をシミュレートする際に使用するデータの構成について説明する。図７は、検証支援装置によるシミュレータによって用いるデータの構成を示す説明図である。図７のように、検証支援装置１００では、実行パラメータＡ、返却値Ｂ、スケジューラ管理データＣを表す３種類のデータ群７１０〜７３０が利用される。各データは、それぞれ下記のような構成となっている。
【００５４】
・実行パラメータＡ
ＣＰＵモデルに実行指示を与える際に、ＣＰＵモデルに送信するデータ群であり、［実行時刻、受信データの長さ（受信データがない場合には“０”）、受信データ（ある場合のみ）］の３種類のデータによって構成されている。
【００５５】
・返却値Ｂ
ＣＰＵモデルによって命令が実行された後、マルチＣＰＵスケジューラ２００に返却されるデータ群であり、［実行予定時刻（実行予定有りの場合のみ）、実行予定の有無、送信データの長さリスト（送信データがない場合には“０”）、送信データのリスト、送信先ＣＰＵ番号のリスト］の５種類のデータによって構成されている。
【００５６】
・スケジューラ管理データＣ
マルチＣＰＵスケジューラ２００において、各ＣＰＵモデルの実行順序を管理するために用いられるデータ群であり、［ＣＰＵ番号（処理対象となるＣＰＵの識別子）、実行予定時刻、受信データの長さ（受信データがない場合には“０”）、受信データ］の４種類のデータによって構成されている。
【００５７】
＜マルチＣＰＵスケジューラの処理手順＞
つぎに、上述した各データを用いて検証対象ソフトウェア１０１のシミュレーションをおこなう際の、マルチＣＰＵスケジューラ２００の処理手順について説明する。図８は、実施の形態１におけるマルチＣＰＵスケジューラの処理手順を示すフローチャートである。図８のフローチャートにおいて、まず、各ＣＰＵモデルのスケジューラ管理データＣを取得し、実行リストに格納する（ステップＳ８０１）。
【００５８】
つぎに、スケジューラ管理データＣから実行パラメータＡを作成する（ステップＳ８０２）。ステップＳ８０２では、実行リストとして格納されているスケジューラ管理データＣのうち、下記の条件に一致する実行パラメータＡを作成する。
・実行リストの先頭のスケジューラ管理データＣ
・実行リストの先頭のスケジューラ管理データＣとＣＰＵ番号ならびに実行予定時刻が一致するスケジューラ管理データ
【００５９】
また、ステップＳ８０２では、下記のように、実行パラメータＡの各データをスケジューラ管理データＣの情報を用いて作成する。
実行パラメータＡ
・実行時刻          ←スケジューラ管理データＣの実行予定時刻
・受信データの長さ  ←スケジューラ管理データＣの受信データの長さ
・受信データ        ←スケジューラ管理データＣの受信データ
【００６０】
ステップＳ８０２によって実行パラメータＡが作成されると、実行パラメータＡを作成済みのスケジューラ管理データＣを実行リストから削除する（ステップＳ８０３）。その後、実行パラメータＡを参照してマルチＣＰＵモデル２１０の中の対象ＣＰＵモデルの処理を実行させる（ステップＳ８０４）。
【００６１】
ステップＳ８０４によって対象ＣＰＵモデルが実行パラメータに応じた処理を実行すると、つぎに、対象ＣＰＵモデルの実行結果に応じた返却値Ｂを回収する（ステップＳ８０５）。そして、回収した返却値Ｂを参照して次回以降の命令の実行予定があるか否かを判断する（ステップＳ８０６）。ここで、実行予定があると判断された場合には（ステップＳ８０６：Ｙｅｓ）、実行予定に応じたスケジューラ管理データＣを作成し、実行リストに格納する（ステップＳ８０７）。
【００６２】
ステップＳ８０７では、実行予定がある場合、下記のようにしてスケジューラ管理データＣを生成する。
スケジューラ管理データＣ
・ＣＰＵ番号              ←直前に処理を実行したＣＰＵモデルのＣＰＵ番号
・実行予定時刻            ←返却値Ｂの次回実行予定時刻
・受信データの長さ        ←なし
・受信データ              ←なし
【００６３】
ステップＳ８０７の処理が完了した後、もしくは、ステップＳ８０６において、実行予定がないと判断された場合（ステップＳ８０６：Ｎｏ）、つぎに、他のＣＰＵモデルへの送信データがあるか否かを判断する（ステップＳ８０８）。ここで、送信データがあると判断された場合（ステップＳ８０８：Ｙｅｓ）、送信内容に応じたスケジューラ管理データＣを作成し、実行リストに格納する（ステップＳ８０９）。
【００６４】
ステップＳ８０９では、ステップＳ８０５にて回収した返却値Ｂの送信データのリストの要素数が０になるまで下記の処理を繰り返す。
１．スケジューラ管理データＣを作成
ＣＰＵ番号：返却値Ｂの送信先ＣＰＵ番号リストの先頭要素
実行予定時刻：直前に実行した実行時刻＋返却値Ｂの送信データの長さ×遅延係数
受信データの長さ：返却値Ｂの送信データの長さの先頭要素
受信データ：返却値Ｂの送信データリストの先頭要素
２．１によって作成されたスケジューラ管理データＣを実行リストに格納
３．格納後、返却値Ｂの送信先ＣＰＵ番号のリスト、送信データの長さリスト、送信データのリストのそれぞれの先頭要素を取り除く
【００６５】
ステップＳ８０９の処理が完了した後、もしくは、送信データがないと判断された場合（ステップＳ８０８：Ｎｏ）、スケジューラ管理データＣの実行予定時刻で実行リストをソートする（ステップＳ８１０）。その後、続いて実行リスト内が０になっているか否かを判断する（ステップＳ８１１）。
【００６６】
ステップＳ８１１によって、実行リスト内が０になったと判断された場合（ステップＳ８１１：Ｙｅｓ）、そのまま一連の処理を終了する。また、実行リスト内にスケジューラ管理データＣが残っている場合（ステップＳ８１１：Ｎｏ）、ステップＳ８０２の処理に戻り、すべての命令のシミュレーションをおこなう。
【００６７】
＜マルチＣＰＵモデルの処理手順＞
つぎに、マルチＣＰＵモデル２１０の処理手順について説明する。図９は、実施の形態１におけるＣＰＵモデルの処理手順を示すフローチャートである。なお、以下説明するマルチＣＰＵモデル２１０の処理は、マルチＣＰＵスケジューラ２００から送信された実行指示の受信をトリガとする。図９のフローチャートにおいて、まず、マルチＣＰＵモデル２１０内のシミュレータの時刻に実行パラメータＡの実行時刻を設定する（ステップＳ９０１）。
【００６８】
つぎに、実行パラメータＡを格納したリスト内のデータが０になっているか否かを判断する（ステップＳ９０２）。このステップＳ９０２によって、実行パラメータＡが格納されたリスト内のデータ数が０になっていると判断された場合（ステップＳ９０２：Ｙｅｓ）、指定された時刻にシミュレーションを実行する（ステップＳ９０６）。一方、リストに実行パラメータＡのデータが残っていると判断された場合（ステップＳ９０２：Ｎｏ）、先頭の実行パラメータＡに受信データがあるか否かを判断する（ステップＳ９０３）。
【００６９】
ステップＳ９０３によって、受信データがあると判断された場合（ステップＳ９０３：Ｙｅｓ）、受信データイベントを対象となるＣＰＵモデルへ通知し（ステップＳ９０４）、通知済みの実行パラメータＡをリストから削除した後（ステップＳ９０５）、再度ステップＳ９０２の処理に戻る。一方、先頭の実行パラメータＡに受信データがないと判断された場合（ステップＳ９０３：Ｎｏ）、そのまま、指定された時刻にシミュレーションを実行する（ステップＳ９０６）。
【００７０】
ステップＳ９０６によってシミュレーションが実行された後、次回の実行モデルがあるか否かを判断する（ステップＳ９０７）。次回の実行モデルがあると判断された場合（ステップＳ９０７：Ｙｅｓ）、スケジューラ管理データＣの次回実行予定をありに設定し（ステップＳ９０８）、次回実行予定が最も早い実行モデルの実行予定時刻を返却値Ｂに格納する（ステップＳ９０９）。一方、次回の実行モデルがないと判断された場合（ステップＳ９０７：Ｎｏ）、スケジューラ管理データＣの次回実行予定をなしに設定する（ステップＳ９１０）。
【００７１】
ステップＳ９０８，Ｓ９１０によって、スケジューラ管理データＣの次回実行予定が設定されると、つぎに、処理中のＣＰＵモデルから他のＣＰＵモデルへの送信データがあるか否かを判断する（ステップＳ９１１）。ここで、送信データがあると判断された場合（ステップＳ９１１：Ｙｅｓ）、送信データに関する情報（送信先ＣＰＵ番号、データの長さ、送信データ）を返却値Ｂに格納し（ステップＳ９１２）、一連の処理を終了する。また、送信データがないと判断された場合（ステップＳ９１１：Ｎｏ）、ステップＳ９１２の処理をスキップしてそのまま一連の処理を終了する。
【００７２】
以上説明したように、実施の形態１では、検証対象ソフトウェア１０１に含まれた命令群の実行予定時刻にのみ実行指示を送信することができる。したがって、命令を実行するタイミングのみにマルチＣＰＵモデル２１０を動作させればよく、必要最低限の処理で検証対象ソフトウェア１０１のシミュレーションが可能になる。また、実際のマルチＣＰＵシステム内の伝送速度が高速であっても、正しいタイミングで正常なトランザクションを実現することができる。
【００７３】
（実施の形態２）
図１０は、実施の形態２における検証支援装置の動作を示す説明図である。実施の形態２は、単位時間ごとの基準時刻に実行させる命令がある場合にのみ、マルチＣＰＵスケジューラ２００から実行指示を送信して、マルチＣＰＵモデル２１０によって対応する処理を実行させる。
【００７４】
マルチＣＰＵスケジューラ２００は、０を初期値として２５［μｓ］を単位時間として加算するごとに基準時刻とする（図１０のタイミングの右側の目盛り参照）。そして、図１０では、マルチＣＰＵスケジューラ２００が、２７０，３０２，４００，５１０［μｓ］のタイミングに対応するＣＰＵモデルへ命令の実行指示を送信する処理を例示している。
【００７５】
したがって、タイミング２５０，４００［μｓ］の単位時間に命令１，３がそれぞれＣＰＵモデル１へ送信される。そして、ＣＰＵモデル１では、命令１，３に応じた処理を２７０，４００［μｓ］に実行するため、単位時間（２５０，４００［μｓ］）の後、差分時間分待機して命令に応じた処理を実行する。また、タイミング３００，５００［μｓ］の単位時間に命令２，４がそれぞれＣＰＵモデル２へ送信される。そして、ＣＰＵモデル２では、命令２，４に応じた処理を３０２，５１０［μｓ］に実行するため、単位時間（３００，５００［μｓ］）の後、差分時間分待機して命令２，４に応じた処理を実行する。また、各ＣＰＵモデルにおける命令の実行結果は、返却値（詳しくは後述する）としてマルチＣＰＵスケジューラ２００へ送信される。
【００７６】
また、マルチＣＰＵスケジューラ２００では、検証対象ソフトウェア１０１の命令群の実行時刻として得られたすべての処理が完了すると、各ＣＰＵモデルから送信された返却値に次回実行する命令が含まれていた場合には、この命令の実行予定時刻まで処理を進めて、対象となるＣＰＵモデルへ実行指示を送信する。マルチＣＰＵスケジューラ２００は、命令の実行予定がなくなるまで上述の処理を繰り返す。
【００７７】
実施の形態２の場合、マルチＣＰＵスケジューラ２００では、単位時間のうち命令の実行指示の送信、返却値の受信をおこなう時刻が含まれる単位時間、そして、マルチＣＰＵモデル２１０では、実行指示を受け付けて命令に応じた処理を実行する時刻を含む単位時間のみ、すなわち、図１０の網掛け部分のみＣＰＵ（検証支援装置１００のＣＰＵ３０１）が実行される。そして、その他の時刻では処理をスキップするため、効率的なシミュレーションが可能となる。
【００７８】
また、図１１は、実施の形態２の検証支援装置におけるデータ送信時の動作を示す説明図である。図１１では、ＣＰＵモデル間のデータ送信がある場合の処理について説明する。図１１の命令１は、ＣＰＵモデル１からＣＰＵモデル２へデータを送信する処理である。この場合、ＣＰＵモデル１によって命令１が実行されると、ＣＰＵモデル２へのデータの「送信要求」と、この命令を実行させる「次の時刻」が返却値としてマルチＣＰＵスケジューラ２００へ送信される。
【００７９】
命令２は、ＣＰＵモデル１から送信された送信要求を実行する命令である。したがって、ＣＰＵモデル２では、マルチＣＰＵスケジューラ２００からのデータを受信すると、モデルＡを実行した後、タイミング３０２［μｓ］まで待機し、本来のイベント受信時刻に受信イベントが通知されるように、遅延を含むイベントを実行させる。
【００８０】
＜マルチＣＰＵスケジューラの処理手順＞
つぎに、検証対象ソフトウェア１０１のシミュレーションをおこなう際の、マルチＣＰＵスケジューラ２００の処理手順について説明する。なお、実施の形態２の場合も、実施の形態１と同様に図７にて説明した各データを利用する。また、マルチＣＰＵスケジューラ２００の処理自体は、図８を用いて説明した実施の形態１の処理手順と同様である。この処理のうち、実行パラメータを送信する際には、実行時刻と基準時刻との差分情報を待機時間として提供する。マルチＣＰＵモデル２１０では、この差分情報に基づいて処理を遅延させることができる。
【００８１】
＜マルチＣＰＵモデルの処理手順＞
つぎに、つぎに、マルチＣＰＵモデル２１０の処理手順について説明する。図１２は、実施の形態２におけるマルチＣＰＵモデルの処理手順を示すフローチャートである。なお、以下説明するマルチＣＰＵモデル２１０の処理は、マルチＣＰＵスケジューラ２００から送信された実行指示の受信をトリガとする。図１２のフローチャートにおいて、まず、マルチＣＰＵモデル２１０内のシミュレータの時刻に実行パラメータＡの実行時刻を設定する（ステップＳ１２０１）。
【００８２】
つぎに、実行パラメータＡを格納したリスト内のデータが０になっているか否かを判断する（ステップＳ１２０２）。このステップＳ１２０２によって、実行パラメータＡが格納されたリスト内のデータ数が０になっていると判断された場合（ステップＳ１２０２：Ｙｅｓ）、指定された時刻から単位時間（図１１の場合は２５［μｓ］）の区切りまでにシミュレーションを実行する（ステップＳ１２０６）。このステップＳ１２０６の処理と後述するステップＳ１２０４が実施の形態１にかかるマルチＣＰＵモデル２１０の処理との差分となる。一方、リストに実行パラメータＡのデータが残っていると判断された場合（ステップＳ１２０２：Ｎｏ）、先頭の実行パラメータＡに受信データがあるか否かを判断する（ステップＳ１２０３）。
【００８３】
ステップＳ１２０３によって、受信データがあると判断された場合（ステップＳ１２０３：Ｙｅｓ）、受信データイベントを対象となるＣＰＵモデルへ遅延通知（遅延情報を含んだイベント通知）し（ステップＳ１２０４）、通知済みの実行パラメータＡをリストから削除した後（ステップＳ１２０５）、再度ステップＳ１２０２の処理に戻る。一方、先頭の実行パラメータＡに受信データがないと判断された場合（ステップＳ１２０３：Ｎｏ）、そのまま、指定された時刻にシミュレーションを実行する（ステップＳ１２０６）。
【００８４】
ステップＳ１２０６によってシミュレーションが実行された後、次回の実行モデルがあるか否かを判断する（ステップＳ１２０７）。次回の実行モデルがあると判断された場合（ステップＳ１２０７：Ｙｅｓ）、スケジューラ管理データＣの次回実行予定をありに設定し（ステップＳ１２０８）、次回実行予定が最も早い実行モデルの実行予定時刻を返却値Ｂに格納する（ステップＳ１２０９）。一方、次回の実行モデルがないと判断された場合（ステップＳ１２０７：Ｎｏ）、スケジューラ管理データＣの次回実行予定をなしに設定する（ステップＳ１２１０）。
【００８５】
ステップＳ１２０８，Ｓ１２１０によって、スケジューラ管理データＣの次回実行予定が設定されると、つぎに、処理中のＣＰＵモデルから他のＣＰＵモデルへの送信データがあるか否かを判断する（ステップＳ１２１１）。ここで、送信データがあると判断された場合（ステップＳ１２１１：Ｙｅｓ）、送信データに関する情報（送信先ＣＰＵ番号、データの長さ、送信データ）を返却値Ｂに格納し（ステップＳ１２１２）、一連の処理を終了する。また、送信データがないと判断された場合（ステップＳ１２１１：Ｎｏ）、ステップＳ１２１２の処理をスキップしてそのまま一連の処理を終了する。
【００８６】
以上説明したように、本実施の形態２によれば、単位時間ごとに、実行する処理がある場合にのみ、対象となるマルチＣＰＵモデル２１０に実行指示を送信すればよい。また、ＣＰＵモデルによってＣＰＵ間のデータ送信など遅延が発生する処理を実行する場合であっても、マルチＣＰＵスケジューラ２００に送信処理が完了する時刻を通知する処理を追加することによって、正常なトランザクションを実現することができる。
【００８７】
以上説明したように、本実施の形態によれば、検証対象ソフトウェア１０１の命令群を取得すると、各命令は実行時刻順にソートされ、各命令の実行間隔を算出する。マルチＣＰＵモデル２１０では、算出された実行間隔にのみ該当する処理を実行すれば、取得した命令群のシミュレーションをおこなうことができる。したがって、マルチＣＰＵシステムのシミュレーションを高速かつ効率的に実行させることができる。
【００８８】
また、図１７にて説明したように、従来のマルチＣＰＵシミュレータ１５００の場合、ＣＰＵ間の伝送速度の高速化に反比例してシミュレーション速度が低下してしまうという問題を抱えていた。それに対して本実施の形態では、ＣＰＵモデル間の伝送速度にかかわらず、ＣＰＵモデル間のデータ送信を含む処理のシミュレーションを実現できる。すなわち、任意のマルチＣＰＵシステムに対して所望するソフトウェアを実行させた場合の協調動作の検証ができるという効果も併せ持つ。
【００８９】
なお、本実施の形態で説明した検証支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【００９０】
また、本実施の形態で説明した検証支援装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した検証支援装置１００の機能（ソート部４０１〜抽出部４０６）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、検証支援装置１００を製造することができる。
【００９１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９２】
（付記１）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータを、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段、
前記ソート手段によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出手段、
前記算出手段によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える制御手段、
として機能させることを特徴とする検証支援プログラム。
【００９３】
（付記２）前記コンピュータを、さらに、
前記コンピュータによって実行された命令に次回実行予定があるか否かを判断する判断手段、として機能させ、
前記ソート手段は、前記判断手段によって次回実行予定があると判断された場合に、当該次回実行予定の命令を含んだ命令群を実行時刻順にソートすることを特徴とする付記１に記載の検証支援プログラム。
【００９４】
（付記３）前記コンピュータを、さらに、
前記コンピュータによって実行された命令に他のプロセッサモデルへの任意のデータの送信要求が含まれていた場合、当該送信要求に対応した命令を前記ソート手段に通知する通知手段、として機能させ、
前記ソート手段は、前記通知手段によって通知された送信要求に対応した命令を含んだ命令群を実行時刻順にソートし、
前記制御手段は、前記実行間隔に該当する命令が前記送信要求に対応した命令の場合、当該命令の実行指示とともに前記任意のデータを前記他のプロセッサモデルへ与えることを特徴とする付記１または２に記載の検証支援プログラム。
【００９５】
（付記４）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータを、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段、
任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内に前記ソート手段によってソートされたいずれかの命令の実行時刻が含まれているような基準時刻を前記各基準時刻の中から抽出する抽出手段、
前記抽出手段によって抽出された基準時刻ごとに、該当する命令の実行指示と、当該実行指示の実行までの待機時間とを、前記実行対象となるプロセッサモデルに与える制御手段、
として機能させることを特徴とする検証支援プログラム。
【００９６】
（付記５）前記コンピュータを、さらに、
前記コンピュータによって実行された命令の次回実行予定があるか否かを判断する判断手段、として機能させ、
前記ソート手段は、前記判断手段によって次回実行予定があると判断された場合に、当該次回実行予定の命令を含んだ命令群を実行時刻順にソートすることを特徴とする付記４に記載の検証支援プログラム。
【００９７】
（付記６）前記コンピュータを、さらに、
前記コンピュータによって実行された命令に他のプロセッサモデルへの任意のデータの送信要求が含まれていた場合、当該送信要求に対応した命令を前記ソート手段に通知する通知手段、として機能させ、
前記ソート手段は、前記通知手段によって通知された送信要求に対応した命令を含んだ命令群を実行時刻順にソートし、
前記制御手段は、前記抽出手段によって抽出された基準時刻ごとに、該当する命令が前記送信命令に対応した命令の場合、当該命令の実行指示とともに前記任意のデータを前記他のプロセッサモデルへ与えることを特徴とする付記５に記載の検証支援プログラム。
【００９８】
（付記７）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなう検証支援装置であって、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段と、
前記ソート手段によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出手段と、
前記算出手段によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える制御手段と、
を備えることを特徴とする検証支援装置。
【００９９】
（付記８）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなう検証支援装置であって、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート手段と、
任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内に前記ソート手段によってソートされたいずれかの命令の実行時刻が含まれているような基準時刻を前記各基準時刻の中から抽出する抽出手段と、
前記抽出手段によって抽出された基準時刻ごとに、該当する命令の実行指示と、当該実行指示の実行までの待機時間とを、前記実行対象となるプロセッサモデルに与える制御手段と、
を備えることを特徴とする検証支援装置。
【０１００】
（付記９）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータが、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート工程と、
前記ソート工程によってソートされた命令群のそれぞれ連続する命令同士の実行時刻を参照して命令群の実行間隔を算出する算出工程と、
前記算出工程によって算出された実行間隔ごとに、該当する命令の実行指示を実行対象となるプロセッサモデルに与える指示工程と、
を実行することを特徴とする検証支援方法。
【０１０１】
（付記１０）複数のプロセッサをソフトウェアによって実現したマルチプロセッサモデルを用いて実行指示を受けた命令のシミュレーションをおこなうコンピュータが、
前記マルチプロセッサモデルの中の実行対象となるプロセッサモデルと実行時刻との情報を含んだ命令群を実行時刻順にソートするソート工程と、
任意の時刻から単位時間ごとの時刻を基準時刻として、当該各基準時刻から前記単位時間内に前記ソート工程によってソートされたいずれかの命令の実行時刻が含まれているような基準時刻を前記各基準時刻の中から抽出する抽出工程と、
前記抽出工程によって抽出された基準時刻ごとに、該当する命令の実行指示と、当該実行指示の実行までの待機時間とを、前記実行対象となるプロセッサモデルに与える指示工程と、
を実行することを特徴とする検証支援方法。
【符号の説明】
【０１０２】
１００  検証支援装置
１０１  検証対象ソフトウェア
１０２  シミュレーション結果
１１０  マルチＣＰＵシミュレータ
２００  マルチＣＰＵスケジューラ
２１０  マルチＣＰＵモデル
４０１  ソート部
４０２  算出部
４０３  制御部
４０４  判断部
４０５  通知部
４０６  抽出部
【図１】
2010191758.tif 000003
【図２】
2010191758.tif 000004
【図３】
2010191758.tif 000005
【図４】
2010191758.tif 000006
【図５】
2010191758.tif 000007
【図６】
2010191758.tif 000008
【図７】
2010191758.tif 000009
【図８】
2010191758.tif 000010
【図９】
2010191758.tif 000011
【図１０】
2010191758.tif 000012
【図１１】
2010191758.tif 000013
【図１２】
2010191758.tif 000014
【図１３】
2010191758.tif 000015
【図１４】
2010191758.tif 000016
【図１５】
2010191758.tif 000017
【図１６】
2010191758.tif 000018
【図１７】
2010191758.tif 000019