(57)【特許請求の範囲】
【請求項１】
シミュレーションによるソフトウェア検証のタスクを起動するイベント発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルと前記優先度管理テーブルで管理される前記タスクグループの優先度を切換える時刻を参照し、前記シミュレーションの現在時刻から計算して、前記現在時刻で優先されるタスクグループを決定し、前記複数のタスクグループの優先度を変更するグループ切換機構手段を有することを特徴とするシミュレーション装置。
【請求項２】
前記タスクの所属するタスクグループが優先的にＣＰＵに割当てられる時刻に、前記イベントを遅延割込みさせて前記グループ切換機構手段を駆動する遅延割込み手段を更に有することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記遅延割込み手段は、
前記優先度管理テーブルで管理される前記タスクが所属するタスクグループの優先度が高くなる時刻を参照して、前記現在時刻から計算して、前記タスクグループの優先度が高くなる前記現在時刻に最も近い未来の時刻を決定することを特徴とする請求項２記載のシミュレーション装置。
【請求項４】
前記遅延割込み手段は、
シミュレータ本体の前記現在時刻を通知するタイムホイールの遅延割込みさせる割込み時刻に前記イベントを追加することを特徴とする請求項２又は３記載のシミュレーション装置。
【請求項５】
前記遅延割込み手段は、割込み時刻を設定するタイマモデルを有し、前記タイマモデルに設定して遅延させた前記イベントを発生させることを特徴とする請求項２又は３記載のシミュレーション装置。
【請求項６】
コンピュータが、
ソフトウェア検証を実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルと前記優先度管理テーブルで管理される前記タスクグループの優先度を切換える時刻を参照し、前記ソフトウェア検証するシミュレーションの現在時刻から計算して、前記現在時刻で優先されるタスクグループを決定し、前記複数のタスクグループの優先度を変更するグループ切換機構手順を実行することを特徴とするシミュレーション方法。
【請求項７】
シミュレーション装置としてコンピュータを機能させ、
ソフトウェア検証を実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルと前記優先度管理テーブルで管理される前記タスクグループの優先度を切換える時刻を参照し、前記ソフトウェア検証するシミュレーションの現在時刻から計算して、前記現在時刻で優先されるタスクグループを決定し、前記複数のタスクグループの優先度を変更するグループ切換機構手順を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションによりソフトウェアを検証するシミュレーション装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ソフトウェアを組み込んだ種々の電化製品、精密機器などの製品が普及すると共に、ソフトウェアを含めたシステムの仕組みが複雑化、及び大規模化している。そのため、シミュレーションによるソフトウェアの検証工数が肥大化し、処理時間が問題となっている。
【０００３】
ソフトウェアの検証に利用されるマルチタスク処理に関する従来技術として、たとえば、リアルタイム処理が行われないタスクについてはタスク間の優先順位にかかわらず、実行中のタスクの終了を待って処理する手法（特許文献１）や、割り込み禁止期間に発生した複数の割り込みを、割り込み許可後に、割り込みの発生順に処理する手法（特許文献２）がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２８９１１４号公報
【特許文献２】特開平４−０７４２２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、マルチタスクを行うＲＴＯＳ（Real Time Operating System）上でのソフトウェアの検証をする場合、タスクの割込みがない場合でも、タスクグループの実行を許可する時間間隔で割り込みを発生させ、タスクの割込みがあったかどうかをチェックする等の処理が一定時間毎に行われる仕組みを必要とするため、シミュレーションの処理に負荷を与えると言った問題を解決することができていなかった。
【課題を解決するための手段】
【０００６】
開示の技術は、シミュレーションによるソフトウェア検証のタスクを起動するイベント発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルと前記優先度管理テーブルで管理される前記タスクグループの優先度を切換える時刻を参照し、前記シミュレーションの現在時刻から計算して、前記現在時刻で優先されるタスクグループを決定し、前記複数のタスクグループの優先度を変更するグループ切換機構手段を有するシミュレーション装置のように構成される。
【０００７】
また、上記課題を解決するための手段として、シミュレーション方法、コンピュータに上記シミュレーション装置として機能させるための及びプログラムとすることもできる。
【発明の効果】
【０００８】
開示の技術では、シミュレーションによるソフトウェア検証にて、タスク起動のイベント発生時に、複数のタスクグループの優先度変更を行うため、ソフトウェアが動作していない期間のシミュレーションの負荷を削減でき、高速に処理を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】シミュレーション装置のハードウェア構成を示すブロック図である。
【図２】シミュレーション装置の第一実施例に係る機能構成例を示す図である。
【図３】図２に示す機能構成例におけるタスク追加部による処理を説明するための図である。
【図４】図２に示す機能構成例におけるグループ切換機構部による処理を説明するための図である。
【図５】図２に示す機能構成例における遅延割込み部による処理を説明するための図である。
【図６】図２に示す機能構成例におけるスケジューラによる処理を説明するための図である。
【図７】図２に示す機能構成例におけるシミュレータ本体からのイベント発生による処理を説明するための図である。
【図８】シミュレーション装置の第二実施例に係る機能構成例を示す図である。
【図９】図８に示す機能構成例における遅延割込み部による処理を説明するための図である。
【図１０】本実施例を適用した場合の割込み発生状態を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて説明する。本実施形態に係るシミュレーション装置は、マルチタスクを可能とするＲＴＯＳ（Real Time Operating System）を組み込んでおり、ＲＴＯＳ上で動作する検証対象のソフトウェアを高速にシミュレーションするためのコンピュータ装置であって、図１に示すようなハードウェア構成を有する。図１は、シミュレーション装置のハードウェア構成を示すブロック図である。
【００１１】
図１において、シミュレーション装置１００は、ＣＰＵ（Central Processing Unit）１１と、メモリユニット１２と、表示ユニット１３と、出力ユニット１４と、入力ユニット１５と、通信ユニット１６と、記憶装置１７と、ドライバ１８とを有し、システムバスＢに接続される。
【００１２】
ＣＰＵ１１は、メモリユニット１２に格納されたプログラムに従ってシミュレーション装置１００を制御する。メモリユニット１２には、ＲＡＭ（Random Access Memory）及びＲＯＭ（Read-Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、メモリユニット１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００１３】
表示ユニット１３は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。出力ユニット１４は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット１５は、マウス、キーボード等を有し、利用者がシミュレーション装置１００が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット１６は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、外部装置との間の通信制御をするための装置である。記憶装置１７には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【００１４】
シミュレーション装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によってシミュレーション装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライバ１８にセットされると、ドライバ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがシステムバスＢを介して記憶装置１７にインストールされる。そして、プログラムが起動されると、記憶装置１７にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。
【００１５】
尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００１６】
［第一実施例］
本実施形態に係るシミュレーション装置１００の第一実施例について説明する。図２は、シミュレーション装置の第一実施例に係る機能構成例を示す図である。図２において、シミュレーション装置１００は、主に、シミュレータ本体１１０と、タスクグループ切替制御部１２０とを有する。シミュレータ本体１１０と、タスクグループ切替制御部１２０とは、対応するプログラムをＣＰＵ１１が実行することによって実現される。
【００１７】
シミュレータ本体１１０は、タイムホイールＴＷを有し、製品に組み込まれるソフトウェアのＲＴＯＳ環境をシミュレーションして、イベント駆動型でソフトウェアを動作させて検証するための処理部である。
【００１８】
タスクグループ切換制御部１２０は、タスクグループ（以下、単に「グループ」と言う）に優先度を設定し、実行するタスクグループの切換制御を行う処理部である。タスクグループ切換制御部１２０は、現在時刻更新部３０と、タスク追加部３１と、グループ切換機構部３２と、遅延割込み部３３と、スケジューラ３４と、タスク実行部３５とを有する。
【００１９】
現在時刻更新部３０は、シミュレータ本体１１０のタイムホイールＴＷからシミュレーション時刻（以下、単に、時刻という）が通知されると、現在時刻管理領域３０ａに時刻を書き込む処理部である。例えば、時刻ｔ２の状態で、時刻ｔ３の通知を受けると、現在時刻管理領域３０ａに時刻ｔ３が格納される。
【００２０】
タスク追加部３１は、割り込み、タスク起動など、実行可能なタスクを登録するイベントを発生させる処理部である。新たなタスクは、タスク領域３２ａ内の対応するグループ内に追加されることによって登録される。
【００２１】
グループ切換機構部３２は、シミュレータ本体１１０又はタスク追加部３１からのイベント発生によって駆動され、優先度管理テーブルＴ２１を参照して、タスク領域３２ａ内のグループＡ、Ｂ、Ｃ、Ｄに対して優先度を変更する処理部である。グループ切換機構部３２は、また、タスク追加部３１によって追加されたタスクが現在時刻では優先度が低く実行されない場合、遅延割込み部３３に割込みの設定を指示する。
【００２２】
優先度管理テーブルＴ２１は、参照時刻ｔ１、ｔ２、ｔ３、ｔ４毎に、グループＡ、Ｂ、Ｃ、Ｄの優先度が設定されたテーブルであり、メモリユニット１２又は記憶装置１７の記憶領域（以下、単に記憶領域と言う）に格納される。この例では、最も優先度が高いグループに「高」が設定され、それ以外のグループには「低」が設定されている。参照時刻ｔ１では、グループＡのタスクが優先的に実行され、参照時刻ｔ２では、グループＢのタスクが優先的に実行され、参照時刻ｔ３では、グループＣのタスクが優先的に実行され、参照時刻ｔ４では、グループＤのタスクが優先的に実行されることを示している。
【００２３】
優先度管理テーブルＴ２１では、所定のシミュレーション時間間隔で、グループＡ〜Ｄのタスクが順に一様にＣＰＵに割り当てられるように参照時刻が設定され、グループ数に応じた参照時刻となる。従って、優先度管理テーブルＴ２１で管理される総時間で現在時刻を割った余りが参照時刻を指定する。
【００２４】
遅延割込み部３３は、遅延割込みテーブルＴ２３を有し、グループ切換機構部３２からの設定指示に応じて、優先度管理テーブルＴ２１に基づいて、追加されたタスクの所属するグループの優先度が高く設定されている参照時刻から最も近い未来の時刻を計算し、その時刻にイベントが発生するように、シミュレータ本体１１０のタイムホイールＴＷの対応する時刻にイベントを追加する。そして、遅延割込みテーブルＴ２３に対して、追加されたタスクのグループの割り込み時刻に計算した時刻を設定する。
【００２５】
遅延割込みテーブルＴ２３は、グループを識別するキーに対して割込み時刻が設定された連想配列によるテーブルであり、記憶領域内に格納される。例えば、グループＡを実行するためにイベントを発生させる割込み時刻Ｔ１が１２０ｍｓｅｃの場合、
delay["グループＡ"]＝120msec
のように連想配列が構成される。
【００２６】
スケジューラ３４は、グループ切換機構部３２の処理終了に応じて駆動され、タスク領域３２ａ内の最も優先度の高いグループのタスクに対して実行順をスケジュールして、その実行順に従ってタスク実行部３５にグループ内のタスクを実行させる。
【００２７】
タスク実行部３５は、スケジューラ３４によって指定されたタスクを実行する。
【００２８】
第一実施例におけるタスクグループ切替制御部１２０による処理全体の流れをステップで示しながら説明する。
【００２９】
＜タスク登録イベント発生＞
ステップＳ１にて、タスク追加部３１が、割込み、タスク起動など、実行可能なタスクが登録されるイベントを発生する。
【００３０】
＜タスクグループ切換え＞
ステップＳ２にて、タスク追加部３１によるイベント発生によって、グループ切換機構部３２が駆動される。
【００３１】
ステップＳ３にて、グループ切換機構部３２は、現在時刻管理領域３０ａを参照して、現在時刻を取得する。
【００３２】
ステップＳ４にて、グループ切換機構部３２は、優先度管理テーブルＴ２１を参照して、現在時刻の各グループの優先度を取得し、優先度の最も高いグループを特定する。例えば、現在時刻がｔ３ならば、時刻ｔ３の各グループの優先度は、グループＡ、Ｂ及びＤは「低」、グループＣは「高」である。グループＣが優先度の最も高いグループとして特定される。
【００３３】
ステップＳ５にて、グループ切換機構部３２は、追加するタスクのグループが現在時刻の割当てか否かを優先度の値で判断する。優先度が「高」の場合（例えば、現在時刻がｔ３で追加されたタスクがグループＣの場合）、ステップＳ６及びＳ７を省略してステップＳ８へと進む。
【００３４】
一方、優先度が「低」の場合（例えば、現在時刻がｔ３で追加されたタスクがグループＡ、Ｂ、Ｄのいずれかである場合）、現在時刻に割当てではないと判断し、タスクのグループの割当て時刻のうち、最も近い未来の時刻にタスクを実行するために遅延割込みを遅延割込み部３３に設定を指示する。
【００３５】
ステップＳ６にて、遅延割込み部３３は、グループ切換機構部３２からの遅延割込みの設定指示に応じて、優先度管理テーブルＴ２１を参照して、現在時刻から追加されたタスクのグループの優先度が高くなる最も近い未来の時刻を計算する。そして、シミュレータ本体１１０のタイムホイールＴＷに対して、最も近い未来の時刻にイベントを追加し、また、遅延割込みテーブルＴ２３の追加されたタスクのグループにその時刻を設定する。グループＡにタスクが追加されたとすると、優先度が高くなる最も近い未来の時刻Ｔ１が、遅延割込み部３３によって、遅延割込みテーブルＴ２３のグループＡをキーとする割込み時刻に設定される。
【００３６】
ステップＳ７にて、グループ切換機構部３２は、割込み時刻におけるシミュレータ本体１１０のタイムホイールＴＷに追加されたイベントの発生によって駆動される。駆動されたグループ切換機構部３２は、タスクが追加されたときと同様に、現在時刻を取得し（ステップＳ３）、優先度管理テーブルＴ２１を参照して、現在時刻の各グループの優先度を取得し、優先度の最も高いグループを特定して（ステップＳ４）、ステップＳ８へと進む。
【００３７】
例えば、時刻Ｔ１でイベントが発生された場合、グループ切換機構部３２は、優先度管理テーブルＴ２１を参照することによって、グループＡの優先度が最も高いと判断される。
【００３８】
ステップＳ８にて、グループ切換機構部３２は、ステップＳ４で取得した内容に従ってタスク領域３２ａ内のグループの優先度を変更する。例えば、現在時刻ｔ３の場合、前回の時刻ｔ２において、グループＢの優先度「高」が優先度「低」に変更され、グループＣの優先度「低」が優先度「高」に変更される。
【００３９】
＜スケジューリング＞
ステップＳ９にて、グループ切換機構部３２は、優先度変更の処理を終了すると、スケジューラ３４を駆動する。
【００４０】
ステップＳ１０にて、スケジューラ３４は、タスク領域３２ａを参照して、グループ切換機構部３２によって変更された優先度を取得する。
【００４１】
ステップＳ１１にて、スケジューラ３４は、変更された優先度に基づいて、優先度の高いグループのタスクをタスク実行部３５に実行させる。
【００４２】
ステップＳ１２にて、タスク実行部３５は、スケジューラ３４から指示されたタスクを実行し、タスクの処理が終了すると、スケジューラ３４を駆動する。優先度の高いグループのタスクが終了するまで、ステップＳ１１及びＳ１２が繰り返される。
【００４３】
上述したように、タスクグループ切換制御部１２０は、タスクが追加されたとき、又は、追加されたタスクの優先度が高くなる時刻に動作するのみでよいため、所定間隔で割り込みを発生させて優先度を変更するなどの処理を不要とすることができる。従って、検証対象のソフトウェアの実行されない間の無駄な処理が削減され、シミュレーションを高速に行うことができる。
【００４４】
以下に、各処理部による処理を説明する。
【００４５】
図３は、図２に示す機能構成例におけるタスク追加部による処理を説明するための図である。図３において、タスク追加部３１は、実行可能なタスクをタスク領域３２ａの対応するグループに追加する（ステップＳ１１）。そして、タスク追加部３１は、グループ切換機構部３２を駆動する（ステップＳ１２）。
【００４６】
図４は、図２に示す機能構成例におけるグループ切換機構部による処理を説明するための図である。図４において、グループ切換機構部３２は、現在時刻管理領域３０ａを参照して、現在時刻を取得する（ステップＳ２１）。
【００４７】
そして、グループ切換機構部３２は、優先度管理テーブルＴ２１で管理される参照時刻毎の各グループの優先度を取得して（ステップＳ２２）、現在時刻でＣＰＵに割り当てるグループを計算する（ステップＳ２３）。
【００４８】
ステップＳ２３の処理では、グループ切換機構部３２は、現在時刻を優先度管理テーブルＴ２１に割り当てられた総時間で割った余りから参照時間を求め、優先度管理テーブルＴ２１における求めた参照時間での優先度「高」のグループを特定する。
【００４９】
グループ切換機構部３２は、追加されたタスクのグループがステップＳ２３で特定した優先度「高」のグループであるかをチェックし（ステップＳ２４）、追加されたタスクのグループの優先度が別の時刻で高いか否かを判断する（ステップＳ２５）。グループ切換機構部３２は、追加されたタスクのグループが優先度「高」のグループである場合、現在時刻で優先度が高いと判断し、ステップＳ２７へと進む。
【００５０】
一方、グループ切換機構部３２は、追加されたタスクのグループが優先度「高」のグループでない場合、別の時刻で優先度が高いと判断すると、追加されたタスクが所属するグループがＣＰＵに割り当てられる最も近い未来の時刻に起動するように遅延割込みを遅延割込み部３３に設定させる（ステップＳ２６）。
【００５１】
最も近い未来の時刻は、ステップＳ２２で取得した参照時刻毎の各グループの優先度を用いて、最初に優先度が「高」となる参照時刻を取得して、取得した参照時刻と現在時刻とから算出される。
【００５２】
そして、グループ切換機構部３２は、ステップＳ２２において優先度管理テーブルＴ２１から取得した優先度に基づいて、タスクのグループ毎の優先度を現在時刻における優先度に変更した後（ステップＳ２７）、スケジューラ３４を駆動する（ステップＳ２８）。
【００５３】
図５は、図２に示す機能構成例における遅延割込み部による処理を説明するための図である。図５において、遅延割込み部３３は、追加されたタスクが所属しているグループの割込み時刻を遅延割込みテーブルＴ２３から取得する（ステップＳ３１）。
【００５４】
そして、遅延割込み部３３は、ステップＳ３１で取得した割込み時刻と現在時刻とを比較して、割込み時刻が過去の時刻か否かを判断する（ステップＳ３２）。割込み時刻が未来の時刻である場合、遅延割込み部３３による処理は終了する。
【００５５】
一方、過去の時刻である場合、遅延割込み部３３は、優先度管理テーブルＴ２１に基づいて、追加されたタスクのグループにＣＰＵが割り当てられる最も近い未来の時刻を計算する（ステップＳ３３）。
【００５６】
遅延割込み部３３は、ステップＳ３３で計算した時刻にグループ切換機構部３２が駆動されるように、シミュレータ本体１１０のタイムホイールＴＷにイベントを追加する（ステップＳ３４）。
【００５７】
また、遅延割込み部３３は、ステップＳ３３で計算した時刻を、遅延割込みテーブルＴ２３の追加したタスクのグループの割込み時刻に設定する（ステップＳ３５）。遅延割込みテーブルＴ２３が連想配列の場合、例えば、グループＢを実行するためにイベントを発生させる割込み時刻Ｔ２が１５０ｍｓｅｃの場合、
delay["グループＢ"]＝150msec
のようにして割込み時刻が設定される。
【００５８】
図６は、図２に示す機能構成例におけるスケジューラによる処理を説明するための図である。図６において、スケジューラ３４は、スケジューリング対象となるタスクの中から最も優先度の高いグループに所属するタスクを検索する（ステップＳ４１）。
【００５９】
スケジューラ３４は、実行されるタスクが存在したか否かを判断する（ステップＳ４２）。実行されるタスクが存在しない場合、スケジューラ３４による処理を終了する。一方、実行されるタスクが存在する場合、スケジューラ３４はタスク実行部３５にタスクを実行させ（ステップＳ４３）、タスク実行部３５によってタスクの実行が終了すると、ステップＳ４１へと戻り、実行されるタスクが存在しなくなるまで上述同様の処理を繰り返す。
【００６０】
図７は、図２に示す機能構成例におけるシミュレータ本体からのイベント発生による処理を説明するための図である。図７において、シミュレータ本体１１０のタイムホイールＴＷにおいて、遅延割込み部３３によってイベントが追加された割込み時刻になると、シミュレータ本体１１０からのイベント発生によってグループ切換機構部３２が駆動され、図４で説明したグループ切換機構部３２による処理が行われる（ステップＳ５１）。
【００６１】
［第二実施例］
第一実施例では、シミュレータ本体１１０から追加されたタスクを実行するために、タスクが所属するグループの優先度が高くなる時刻にイベントを発生させる仕組みであったが、タスクグループ切換制御部内にその仕組みを備える構成を第二実施例として以下に説明する。
【００６２】
図８は、シミュレーション装置の第二実施例に係る機能構成例を示す図である。図８中、図２と同じ構成部分には同一の符号を付し、その説明を省略する。図８において、シミュレーション装置１００は、主に、シミュレータ本体１１０と、タスクグループ切替制御部１２０−２とを有する。シミュレータ本体１１０と、タスクグループ切替制御部１２０−２とは、対応するプログラムをＣＰＵ１１が実行することによって実現される。
【００６３】
タスクグループ切換制御部１２０−２は、第一実施例と同様に、現在時刻更新部３０と、タスク追加部３１と、グループ切換機構部３２と、遅延割込み部３３−２と、スケジューラ３４と、タスク実行部３５とを有する。第一実施例との違いにおいて、遅延割込み部３３−２は、タイマモデルＴＭを有し、タイマモデルＴＭを用いて、遅延割込み部３３−２からグループ切換機構部３２を駆動させることができる。
【００６４】
第二実施例におけるタスクグループ切替制御部１２０−２による処理全体の流れのうち、第一実施例と異なる処理部分は、ステップＳ５にてグループ切換機構部３２からの遅延割込みの設定指示に応じて、遅延割込み部３３−２による処理のステップＳ６−２及びＳ７−２である。ステップＳ６−２及びＳ７−２について説明する。
【００６５】
ステップＳ６−２にて、遅延割込み部３３−２は、グループ切換機構部３２からの遅延割込みの設定指示に応じて、優先度管理テーブルＴ２１を参照して、現在時刻から追加されたタスクのグループの優先度が高くなる最も近い未来の時刻を計算する。そして、遅延割込みテーブルＴ２３の追加されたタスクのグループに最も近い未来の時刻を設定して、この時刻をタイマモデルＴＭの起動時刻に設定する。
【００６６】
ステップＳ７−２にて、遅延割込み部３３−２のタイマモデルＴＭは、所定間隔で遅延割込みテーブルＴ２３を参照し、割込み時刻となったグループが存在する場合には、グループ切換機構部３２を駆動させる。
【００６７】
第一実施例とは異なる動作をする遅延割込み部３３−２について説明する。図９は、図８に示す機能構成例における遅延割込み部による処理を説明するための図である。図９において、遅延割込み部３３−２は、追加されたタスクが所属しているグループの割込み時刻を遅延割込みテーブルＴ２３から取得する（ステップＳ８１）。
【００６８】
そして、遅延割込み部３３−２は、ステップＳ８１で取得した割込み時刻と現在時刻とを比較して、割込み時刻が過去の時刻か否かを判断する（ステップＳ８２）。割込み時刻が未来の時刻である場合、遅延割込み部３３による処理は終了する。
【００６９】
一方、過去の時刻である場合、遅延割込み部３３−２は、優先度管理テーブルＴ２１に基づいて、追加されたタスクのグループにＣＰＵが割り当てられる最も近い未来の時刻を計算する（ステップＳ３３）。
【００７０】
そして、遅延割込み部３３−２は、ステップＳ８３で計算した時刻を、遅延割込みテーブルＴ２３の追加したタスクのグループの割込み時刻に設定する（ステップＳ８４）。遅延割込みテーブルＴ２３が連想配列の場合、例えば、グループＢを実行するためにイベントを発生させる割込み時刻Ｔ２が１５０ｍｓｅｃの場合、
delay["グループＢ"]＝150msec
のようにして割込み時刻が設定される。
【００７１】
また、遅延割込み部３３−２は、ステップＳ８３で計算した時刻でグループ切換機構部３２が駆動されるように、タイマモデルＴＭに設定する駆動時刻を計算して（ステップＳ８５）、計算した駆動時刻をタイマモデルＴＭに設定する（ステップＳ８６）。
【００７２】
上述した第一実施例及び第二実施例に係る効果について説明する。図１０は、本実施例を適用した場合の割込み発生状態を説明するための図である。図１０中、横軸にシミュレーション時刻を示す。
【００７３】
図１０（Ａ）では、本実施例が適用されない場合の割込み発生状態を例示している。図１０（Ａ）において、タスクの所属するグループに対する優先度の変更が、所定間隔（例えば、１ｍｓ間隔）でタイマ割込みを発生させることによって行われる。１００ｍｓのタイマ割込みでグループＡに優先度が変更されグループＡのタスクが最も優先的に実行される期間に、周辺モデルからグループＡへの割込み７０ａが発生すると、ＩＳＲ（Interrupt Service Routine：割り込みサービスルーチン）実行７１ａにより、タスクのうちグループＡに所属するタスクが起動されてタスク処理が実行される。
【００７４】
一方、周辺モデルからグループＢへの割込み７０ｂが発生したときには、優先的に実行されるタスクのグループがグループＡであるため、タイマ割込みによってグループＢに優先度が変更された時点でＩＳＲ実行７１ｂによりタスクが実行される。
【００７５】
本実施例が適用されない図１０（Ａ）に示す例では、実際には検証対象のソフトウェアが動作しない期間１０ａにおいても、所定間隔でタイマ割込みの処理が行われ、優先度の高いグループへの切換処理が行われてしまう。
【００７６】
図１０（Ｂ）では、本実施例が適用された場合の割込み発生状態を例示している。図１０（Ｂ）において、所定間隔でタイマ割込みを発生させて優先度を変更する処理は行われない。
【００７７】
周辺モデルからグループＡへの割込み７０ａが発生すると、グループ切換機構部が、その時刻でＣＰＵへ割り当てられるグループを、図４に示すフローチャートに従って計算する。割込み７０ａの場合、グループＡへの割当ての時間であるため、ＩＳＲ実行７２ａによりタスクが起動されてタスク処理が実行される。
【００７８】
一方、周辺モデルからグループＢへの割込み７０ｂが発生したときには、優先的に実行されるタスクのグループがグループＡであるため、グループＢへの割当ての時間となる最も近い未来の時刻にＩＳＲ実行７２ｂによって遅延割込みの処理が行われる。
【００７９】
従って、上述した第一又は第二実施例により、検証対象のソフトウェアの動作を開始するイベントの発生時にグループを切換えるため、検証対象のソフトウェアが実行されない期間１０ａにおいて無駄な処理が行われないためシミュレーションを高速に実行することができる。
【００８０】
タスクを起動するイベントは、ＩＲＱ、ＡｃｔｉｖｅＴａｓｋ、ＳｅｔＥｖｅｎｔ、ＷａｉｔＥｖｅｎｔ、ＩＲＱ終了、ＴＡＳＫ終了などである。
【００８１】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【００８２】
以上の第一及び第二実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
シミュレーションによるソフトウェアの検証において、実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルを参照し、該複数のタスクグループの優先度を変更するグループ切換機構手段を有することを特徴とするシミュレーション装置。
（付記２）
前記グループ切換機構手段は、前記優先度管理テーブルで管理される前記タスクグループの優先度を切換える時刻を参照してシミュレーションの現在時刻から計算して、該現在時刻で優先されるタスクグループを決定することを特徴とする付記１記載のシミュレーション装置。
（付記３）
前記タスクの所属するタスクグループが優先的にＣＰＵに割当てられる時刻に、前記イベントを遅延割込みさせて前記グループ切換機構手段を駆動する遅延割込み手段を更に有することを特徴とする付記１又は２記載のシミュレーション装置。
（付記４）
前記遅延割込み手段は、
前記優先度管理テーブルで管理される前記タスクが所属するタスクグループの優先度が高くなる時刻を参照してシミュレーションの現在時刻から計算して、該タスクグループの優先度が高くなる最も近い未来の時刻を決定することを特徴とする付記３記載のシミュレーション装置。
（付記５）
前記遅延割込み手段は、
シミュレータ本体のタイムホイールの前記遅延割込みさせる時刻にイベントを追加することを特徴とする付記３又は４記載のシミュレーション装置。
（付記６）
前記遅延割込み手段は、タイマモデルを有し、前記遅延割込みさせる時刻を該タイマモデルに設定して遅延させたイベントを発生させることを特徴とする付記３又は４記載のシミュレーション装置。
（付記７）
コンピュータがソフトウェアを検証するためのシミュレーション方法であって、該コンピュータが、
実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルを参照し、該複数のタスクグループの優先度を変更するグループ切換機構手順を実行することを特徴とするシミュレーション方法。
（付記８）
前記タスクの所属するタスクグループが優先的にＣＰＵに割当てられる時刻に、前記イベントを遅延割込みさせて前記グループ切換機構手段を駆動する遅延割込み手順を更に有することを特徴とする付記７記載のシミュレーション方法。
（付記９）
シミュレーション装置としてコンピュータを機能させるためのプログラムを格納した記憶媒体であって、該コンピュータが、
実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルを参照し、該複数のタスクグループの優先度を変更するグループ切換機構手順を実行させるためのプログラムを格納したコンピュータ読取可能な記憶媒体。
（付記１０）
前記タスクの所属するタスクグループが優先的にＣＰＵに割当てられる時刻に、前記イベントを遅延割込みさせて前記グループ切換機構手段を駆動する遅延割込み手順を更に有することを特徴とする付記９記載のコンピュータ読取可能な記憶媒体。
（付記１１）
シミュレーション装置としてコンピュータを機能させるためのプログラムであって、該コンピュータに、
実行するタスクを起動するイベントの発生時に、記憶領域に格納された複数のタスクグループに対するＣＰＵ割当ての優先度を管理する優先度管理テーブルを参照し、該複数のタスクグループの優先度を変更するグループ切換機構手順を実行させるためのプログラム。
（付記１２）
前記タスクの所属するタスクグループが優先的にＣＰＵに割当てられる時刻に、前記イベントを遅延割込みさせて前記グループ切換機構手段を駆動する遅延割込み手順を更に有することを特徴とする付記１１記載のプログラム。
【符号の説明】
【００８３】
１１          ＣＰＵ
１２          メモリユニット
１３          表示ユニット
１４          出力ユニット
１５          入力ユニット
１６          通信ユニット
１７          記憶装置
１８          ドライバ
１９          記憶媒体
３０          現在時刻更新部
３０ａ        現在時刻管理領域
３１          タスク追加部
３２          グループ切換機構部
３３          遅延割込み部
３３−２      遅延割込み部
３４          スケジューラ
３５          タスク実行部
１００        シミュレーション装置
１１０        シミュレータ本体
１２０        タスクグループ切換制御部
１２０−２    タスクグループ切換制御部
Ｔ２１        優先度管理テーブル
Ｔ２３        遅延割込みテーブル
ＴＷ          タイムホイール
ＴＭ          タイマモデル
【図１】
0005625710.tif 000002
【図２】
0005625710.tif 000003
【図３】
0005625710.tif 000004
【図４】
0005625710.tif 000005
【図５】
0005625710.tif 000006
【図６】
0005625710.tif 000007
【図７】
0005625710.tif 000008
【図８】
0005625710.tif 000009
【図９】
0005625710.tif 000010
【図１０】
0005625710.tif 000011