(57)【要約】【課題】異種複数のシミュレーションが動作する計算機環境において、任意のモデルと、任意のシミュレータの組合せに対して、投機的通信手法を可能にする。【解決手段】シミュレーションを一つまたはいくつかの集団に分け、仮想OS501が動作する実行ノード102上に搭載する。シミュレーション間通信の制御プログラムである通信プロトコル模擬装置503と、仮想OS群の実行制御プログラムである仮想OS実行管理サーバ装置502は、各シミュレーションを実行する仮想OS501群とは別に管理ノード100上で動作させる。管理ノード100の通信プロトコル模擬装置503がWARハザードを検出した場合、仮想OS実行管理サーバ装置502が、WARハザードが発生した仮想OS501に対して保存されている中間状態への巻き戻りと、所定の時刻までの再実行を行うよう、仮想OS実行管理クライアント装置500に指示する。【選択図】図１
2012093899.tif 000002
【特許請求の範囲】
【請求項１】
計算機システム
管理ノードと、シミュレーションを実行するシミュレータを有する複数の実行ノードがネットワークを介して接続される計算システムであって、
前記管理ノードは、
前記実行ノードの一つが、所定の時刻に、前記管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、前記他の実行ノードの前記シミュレータのシミュレーション時間が前記所定の時刻よりも進んでいる場合、
前記他の実行ノードに対し、前記所定の時刻の前の復元ポイントから、前記所定の時刻まで前記シミュレーションを再実行するよう再実行指示を行い、前記他の実行ノードが、前記送信要求を出した前記実行ノードに、再実行後の送信要求された前記データを送るよう制御する、
ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記実行ノードは、
割り当てられた前記シミュレーションを実行する前記シミュレータとして機能する仮想オペレーティングシステム(OS)と、前記仮想OSの実行を管理する仮想OS実行管理クライアント装置と、前記仮想OSの実行状態を保存する実行状態保存部とを備え、
前記仮想OS実行管理クライアント装置は、前記管理ノードからの前記再実行指示に従い、前記仮想OSに対し、前記所定の時刻の前の復元ポイントから、前記所定の時刻までシミュレーションを再実行するよう制御する、
ことを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記実行状態保存部は、
前記仮想OSのシミュレーション時間と、前記仮想OSの実行状態を復元イメージとして保存したファイルパスを組として蓄積する復元ポイントデータベース(DB)と、前記復元イメージを格納する復元イメージストレージとを備える、
ことを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記実行状態保存部は、前記シミュレーションの終了時に、前記復元ポイントDBと前記復元イメージストレージのエントリを削除する、
ことを特徴とする計算機システム。
【請求項５】
請求項２に記載の計算機システムであって、
前記管理ノードは、
任意の通信プロトコルの基本動作の模擬を可能にするライブラリを備え、ネットワーク動作情報を生成する通信プロトコル模擬装置と、
前記実行ノードと前記通信プロトコル模擬装置とに接続され、前記実行ノードからの前記送信要求に応じて、前記実行ノード上の前記シミュレーション時間が同一となるよう管理する仮想OS実行管理サーバ装置とを備える、
ことを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記管理ノードの前記仮想OS実行管理サーバ装置は、
前記通信プロトコル模擬装置から取得した前記ネットワーク動作情報を元に、前記実行ノード間の通信順序と遅延時間を前記実行ノードで実行される前記シミュレーションに挿入するよう制御する、
ことを特徴とする計算機システム。
【請求項７】
請求項５に記載の計算機システムであって、
前記管理ノードの前記仮想OS実行管理サーバ装置は、
前記実行ノードにおける前記仮想OSの実行状態の保存周期を、前記シミュレーションで発生した通信の周期に基づき制御する、
ことを特徴とする計算機システム。
【請求項８】
管理ノードと、それぞれシミュレーションを実行する複数の実行ノードがネットワークを介して接続される計算システムのシミュレーション方法であって、
前記管理ノードは、
前記実行ノードの一つが、所定の時刻に、前記管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、前記他の実行ノードの前記シミュレーションのシミュレーション時間が前記所定の時刻よりも進んでいる場合、
前記他の実行ノードに対し、前記所定の時刻の前の復元ポイントから、前記所定の時刻まで前記シミュレーションを再実行するよう再実行指示を行い、
前記他の実行ノードが、再実行後の送信要求された前記データを、前記送信要求を出した前記実行ノードに送るよう制御する、
ことを特徴とするシミュレーション方法。
【請求項９】
請求項８に記載のシミュレーション方法であって、
前記実行ノードは、
当該実行ノードで動作する仮想OSにより割り当てられた前記シミュレーションを実行すると共に、
前記管理ノードからの前記再実行指示に従い、前記所定の時刻の前の復元ポイントから、前記所定の時刻まで、前記仮想OSにより前記シミュレーションを再実行する、
ことを特徴とするシミュレーション方法。
【請求項１０】
請求項９に記載のシミュレーション方法であって、
前記実行ノードは、
前記仮想OSのシミュレーション時間と前記仮想OSの実行状態を復元イメージとして保存したファイルパスの組と、前記復元イメージを前記実行ノードの記憶部に格納する、
ことを特徴とするシミュレーション方法。
【請求項１１】
請求項９に記載のシミュレーション方法であって、
前記管理ノードは、
任意の通信プロトコルの基本動作の模擬を可能にするライブラリを備え、
前記実行ノードからの前記送信要求に応じて、前記実行ノード上の前記シミュレーション時間が同一となるよう管理する、
ことを特徴とするシミュレーション方法。
【請求項１２】
請求項１１に記載のシミュレーション方法であって、
前記管理ノードは、
前記実行ノードにおける前記仮想OSの実行状態の保存周期を、前記シミュレーションで発生した通信の周期に基づいて制御する、
ことを特徴とするシミュレーション方法。
【請求項１３】
それぞれシミュレーションを実行する複数の実行ノードの処理部、あるいはネットワークを介して接続される前記実行ノードに接続される管理ノードの処理部で実行されるプログラムであって、
前記管理ノードの処理部を、
前記実行ノードの一つが、所定の時刻に、前記管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、前記他の実行ノードの前記シミュレーションのシミュレーション時間が前記所定の時刻よりも進んでいるか否かを判断し、
進んでいると判断した場合、前記他の実行ノードに対し、前記所定の時刻の前の復元ポイントから、前記所定の時刻までシミュレーションを再実行するよう再実行指示を行い、
前記他の実行ノードが、前記送信要求を出した前記実行ノードに、再実行後の送信要求された前記データを送るよう制御する、
よう動作させる、
ことを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムであって、
前記実行ノードの処理部を、
前記処理部で動作する仮想OSが、割り当てられた前記シミュレーションを実行し、
前記管理ノードからの前記再実行指示に従い、前記所定の時刻の前の復元ポイントから、前記所定の時刻まで、前記仮想OSにより前記シミュレーションを再実行する、
よう動作させる
ことを特徴とするプログラム。
【請求項１５】
請求項１３に記載のプログラムであって、
前記管理ノードの処理部を、
前記実行ノードに割り当てられた前記シミュレーションを実行する仮想OSの実行状態の保存周期を、前記シミュレーションで発生した通信の周期に基づいて制御する、
よう動作させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込みシステムの開発に於いて複数のシミュレータが連携するシミュレーションの通信技術に関わる。
【背景技術】
【０００２】
組込みシステムとは制御対象を構成するメカニズムと、メカニズムから受け取った物理量を元に制御演算を行い、メカニズムに制御値の出力を行なうハードウェアと、ハードウェア上で動作するソフトウェアから構成されるシステムである。例えば、自動車エンジン制御向けの組込みシステムでは、制御対象であるエンジンとエンジンを制御するマイコン等の電子機器とその上で動作するソフトウェアを指す。
【０００３】
組込みシステムに含まれるソフトウェアの挙動は制御対象のメカニズムとハードウェアの構成に強く依存するため、メカニズム、ハードウェア、ソフトウェアを併せた挙動の解析が必要である。近年、自動車、電気機器等の高信頼化、高機能化により組込みシステムが複雑化しており、作業期間短縮のためハードウェア、ソフトウェアの各部品を細分化して分業化が行なわれ、複数拠点での同時開発が行われている。分業化が進むにあたり、部品毎の動作確認だけではなく、部品の組み立て時に判明する性能不足、仕様の不具合が増加し、製品出荷前の最終段階での手戻りによる開発期間の遅延が多発しており、開発効率の悪化が問題となっている。
【０００４】
この問題を解決するため、設計時点でのメカニズム・ハードウェア・ソフトウェアを協調させたシミュレーションによる性能評価、検証手法が用いられ始めている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２７１８７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のメカニズム・ハードウェア・ソフトウェア協調のシミュレーションでは、シミュレーション対象となるメカニズムやハードウェアの構成によって利用できるシミュレータが異なる事と、すでに特定のシミュレータ用に作成されたシミュレーションモデルの蓄積がある事から、異種シミュレータの相互接続による製品全体レベルの協調シミュレーションが行なわれる。この協調シミュレーションを実現するためには、異種複数のシミュレーションの通信を確立する必要がある。一般的に用いられる手法として、一定の周期で予め決定されたデータ構造をシミュレーションで交換する方式が存在し、以下この手法をポーリング方式と呼ぶ。
【０００７】
ポーリング方式では、シミュレーション間のデータ交換方式を簡略化可能である一方、実際のシミュレーション上で意味のある通信が行われていない場合でも、周期的にデータ交換をする必要がある。このシミュレーション間のデータ交換は同一計算機、または別計算機で動作する別プロセスとの通信を発生させる。大量のプロセス間通信は、プログラムの実行速度を大幅に低下させる原因となる。
【０００８】
よって、シミュレーションを効率的に行う為には、すべてのシミュレーション間通信に関して、そのデータ交換回数を最小にするように周期を調整する必要がある。上記の組込みシステム全体レベルの協調シミュレーションでは、シミュレーション間通信の数は自動車を例にとると１０００程度にものぼる。これらの通信のすべてに対し、通信周期の最適化を行う事は現実的には不可能であり、これらのシミュレーション実用化の上での課題となっている。
【０００９】
この課題を解決する方法の一つとして考えられるのが、シミュレーション間のデータ交換方式の変更である。すなわち、一定周期のシミュレータ間通信が必要となるポーリング方式に対して、シミュレート対象が外部アクセスを行う時のみに、プロセス間通信を確立する事によって、データ交換効率を高める事が可能である。以下この手法をイベントドリブン方式と呼ぶ。その一方、このイベントドリブン方式では、通信が発生するまでは各シミュレーションは全く独立した状態で動作するため、以下の問題が発生する。
【００１０】
独立して動作するシミュレーションは、それぞれの負荷と利用可能な資源の状況に応じて異なる実行速度で動作し得る。このため、データ交換発生時に以下に定義するハザードが発生する恐れがある。
・WAR(Write After Read)ハザード：データ送信側より受信側のシミュレーションが先に進む状態
・RAW(Read After Write)ハザード：データ送信側が受信側のシミュレーションよりも先に進む状態
後者のRAWハザードの場合、両者が同じ時間になるまでデータ送信側のシミュレーションを一時停止させることでシミュレーションの実行を正常に保つことが可能である。一方、WARハザードの場合、受信側のシミュレーションは送信側から送られるはずであったデータを無視して続行してしまっている状態であり、実物と異なる結果を出力している恐れがあるため、シミュレーションの再実行が必要である。
【００１１】
WARハザードの発生状況は、計算資源の状況、シミュレート対象の動作によっても変化するため、再現性は無く、予測も対策も困難である。そこで、WARハザードの発生が起きた場合にシミュレーションを途中から再実行することによって、シミュレーション結果を正常に保つ方法が考えられる。この手法を投機的通信手法と呼ばれ、上述した特許文献１には、この投機的通信手法が開示されている。しかしながら、特許文献１に記載された投機的通信手法では、各シミュレーションの実行状態を保存し、ハザード発生時には保存された状態への巻き戻し、すなわち再実行を行う機能の追加が各シミュレータ毎に必須となる。そのため、この機能がついていない既存のシミュレータに関しては投機的通信手法が適用不可能となってしまう。
【００１２】
本発明の目的は、任意のモデルと、任意のシミュレータの組合せに対して、投機的通信手法を可能にする計算機システム、シミュレーション方法、及びそのプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記の目的を達成するため、本発明においては、管理ノードと、それぞれシミュレータを有する複数の実行ノードがネットワークを介して接続される計算システムであって、管理ノードは、実行ノードの一つが、所定の時刻に管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、他の実行ノードのシミュレーション時間が所定の時刻よりも進んでいる場合、当該他の実行ノードに対し、所定の時刻の前の復元ポイントから、所定の時刻までシミュレーションを再実行し、再実行後に送信要求を出した実行ノードに送信要求されたデータを送るよう制御する構成の計算機システムを提供する。
【００１４】
また、上記の目的を達成するため、本発明においては、管理ノードと、それぞれシミュレーションを実行する複数の実行ノードがネットワークを介して接続される計算システムのシミュレーション方法であって、管理ノードは、実行ノードの一つが、所定の時刻に、管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、他の実行ノードのシミュレーションのシミュレーション時間が所定の時刻よりも進んでいる場合、他の実行ノードに対し、所定の時刻の前の復元ポイントから、所定の時刻までシミュレーションを再実行するよう再実行指示を行い、他の実行ノードが、再実行後の送信要求されたデータを、送信要求を出した実行ノードに送るよう制御するシミュレーション方法を提供する。
【００１５】
更に、上記の目的を達成するため、それぞれシミュレーションを実行する複数の実行ノードとネットワークを介して接続される管理ノードの処理部で実行されるプログラムであって、処理部を、実行ノードの一つが、所定の時刻に、管理ノードを経由して他の実行ノードに対してデータの送信要求を送信した際、他の実行ノードのシミュレーションのシミュレーション時間が所定の時刻よりも進んでいるか否かを判断し、進んでいると判断した場合、他の実行ノードに対し、所定の時刻の前の復元ポイントから、所定の時刻までシミュレーションを再実行するよう再実行指示を行い、他の実行ノードが、送信要求を出した実行ノードに、再実行後の送信要求されたデータを送るよう制御する、よう動作させるプログラムを提供する。
【００１６】
すなわち、上記の目的を達成するため、本発明の好適な態様においては、シミュレーションを一つまたはいくつかの集団に分け、仮想オペレーティングシステム (Operating System：OS)上に搭載する。シミュレーション間通信の制御プログラムと、仮想OS群の実行制御プログラムは、シミュレーションを実行するこれらの仮想OS群とは別に動作させる。シミュレーション間通信制御プログラムで、WARハザードを検出した場合、ハザードが発生した仮想OSに対して保存されている中間状態への巻き戻りと所定の時刻までの再実行を指示する。
【発明の効果】
【００１７】
本発明によれば、仮想OSの単位で実行途中状態の保存と巻き戻し再実行を行うことにより、シミュレータ単位での巻き戻しの機能が不要となり、任意のシミュレータでも投機的通信方法が利用可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施例に係る、計算機シミュレーションシステムの概略構成を示す図である。
【図２Ａ】第１の実施例に係る、シミュレーション対象の組込みシステムの一構成例を示す図である。
【図２Ｂ】第１の実施例に係る、シミュレーション対象中のＥＣＵ(電子制御ユニット)の一構成例を示す図である。
【図３】第１の実施例に係る、計算機システム中の計算機の基本構成例を示す図である。
【図４】第１の実施例に係る、クラスタ型並列計算システムの基本構成を示す図である。
【図５】第１の実施例に係る、シミュレーションシステムの一詳細構成例を示す図である。
【図６】第１の実施例に係る、シミュレータ間の投機的通信の動作を説明するフローチャート図である。
【図７】第１の実施例に係る、協調シミュレーションで利用するシミュレータの一構成例を示す図である。
【図８】第１の実施例に係る、協調シミュレーションで送出されるデータ送信伺いのデータフォーマット例を示す図である。
【図９】第１の実施例に係る、シミュレーション実行状態保存周期適応制御の動作を説明するための図である。
【図１０】第１の実施例に係る、図６の動作フロー中の一ステップの詳細を説明するフローチャート図である。
【図１１】第１の実施例に係る、図６の動作フロー中の他のステップの詳細を説明するフローチャート図である。
【図１２】第１の実施例に係る、図９の動作フロー中のステップの詳細を説明するフローチャート図である。
【図１３】第１の実施例に係る、図５の実行状態保存部に保存されるデータを説明するための図である。
【図１４】第１の実施例に係る、図５の通信プロトコル模擬装置の機能を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、本発明の各種の実施例を図面に従い説明する。なお、本明細書において、各ノードを構成する計算機が実行するプログラムを、「装置」や「部」と表現する場合がある。例えば、仮想OS実行制御プログラムを、「仮想OS実行管理装置」あるいは「仮想OS実行管理部」と、シミュレーション間通信制御プログラムを、「通信プロトコル模擬装置」あるいは「通信プロトコル模擬部」と表現する場合がある。
【実施例１】
【００２０】
図１は、第１の実施例に係るシミュレーションを実行する計算機システムの概略機能ブロック構成を示す。本実施例の計算機システムは、任意のシミュレータの組に対して投機的通信手法を利用可能にするシミュレーションシステムである。本計算機システムは、一つの管理ノード100に対して、1または複数の実行ノード102が、ネットワーク101を介して接続されている。なお、各ノードは後で説明するように、プロセッサである中央処理部(Central Processing Unit：CPU)と、メモリなどの記憶部、およびネットワークインターフェイスなどの入出力インターフェイス部を含む計算機で構成される。
【００２１】
図２Ａは、本計算機システムの適用対象となる、組込みシステムの一構成例を示す図である。本構成例は自動車の制御系システムを例示している。同図において、エンジン205、ブレーキ206、ユーザ操作パネル207、車体姿勢208の各機械系（メカ）に対し、それぞれを制御する各電子制御ユニット(Electrical Control Unit：ECU)である、エンジンECU201、ブレーキECU202、ユーザインターフェイスECU203、ステアリングECU204が接続されている。またこの制御系システムにおいては、各ECUは車載通信コントローラ209によって互いに接続されることで、協調して動作している。
【００２２】
なお、各ECUは、図２Ｂにその一例として示したECU2100の様に、車載通信コントローラ209に接続するための通信インターフェイス2104と、通信インターフェイス2104に接続されるマイクロコントローラ2103、マイクロコントローラ2103にそれぞれ接続される専用IC2101、アナログIO2102によって構成される。このアナログIC2102は機械系（メカ）につながる。
【００２３】
図７に本実施例のシミュレーション対象である、自動車の制御系システムのような組込みシステムを、全体レベルで検証するためのシミュレータ構成の一例を示す。シミュレータ構成700は、機械系とつながるアナログIC2102にはそれぞれ適した機械系（メカ）シミュレータ703を用い、専用IC2101の模擬には電子系シミュレータ702を用いる。マイクロコントローラ2103と通信インターフェイス2104の模擬にはマイコンシミュレータ701を用いるのが一般的である。この接続は、図２Ａに示したように、複数のECUが一つの通信線によってつながっているため、マイコンシミュレータ同士のデータ交換と調停を行う通信シミュレーションインターフェイス704が用いられる。なお、図７中の、複数あるマイコンシミュレータには、それぞれ電子系シミュレータ702や機械系シミュレータ703がそれぞれ接続されているが、簡略のため図示を省略してある点、留意されたい。
【００２４】
一般的にマイコンシミュレータ701と機械系シミュレータ703や電子系シミュレータ702間の通信は物理量を直接交換するため、周期的に行われるという特徴がある。一方で、マイコンシミュレータ701間の通信は何らかの通信プロトコルに基づいており、非周期的なデータ交換をするという特徴がある。また、図７のシミュレータ構成においては、各ECUが複数のECUと接続されることから、多対多のシミュレータ間通信をサポートする必要がある。
【００２５】
図３に、図１の計算機シミュレーションシステムの実行ノード102や管理ノード100が動作する計算機の基本構成の一例を示した。同図の計算機301はCPU302と、メモリ303と、IOブリッジ304が接続されておリ、IOブリッジ304に接続されたネットワークインターフェイス305を経由して外部のネットワーク306と接続される。もちろん、この構成に限定されるものでは無く、同等の機能を有する種々の構成を取り得る。
【００２６】
図４に外部のネットワーク306を介して、複数の計算機301が相互に接続された計算機クラスタの一例を示した。同図の計算クラスタ400に含まれる複数の計算機301の中から、シミュレーション毎に適切な数が確保され、実行ノード102として動作し、一つの計算機301が確保され、管理ノード100として動作する。
【００２７】
図５は本実施例の計算機シミュレーションシステムの詳細構成の一例を示している。なお、同図においては、実行ノード102は簡略のため、１個のみ図示されているが、図１に示したように複数の実行ノードが接続される。
【００２８】
同図において、計算機で構成される管理ノード100は、ネットワーク101を通して、各実行ノード102での仮想OS501の実行状態の保存指示と、実行状態保存の周期の制御、再実行である巻き戻しを指示する仮想OS実行管理サーバ装置502と、実行ノード102間のデータ交換とその交換順序の調停を、シミュレーション対象である通信プロトコルに則り行う通信プロトコル模擬装置503が接続された形で動作する。通信プロトコル模擬装置503は、複数の通信プロトコルに対応を可能にするため、バス送信順序判断式と通信レイテンシの算出式をユーザが定義することが可能である。
【００２９】
この仮想OS実行管理サーバ装置502と通信プロトコル模擬装置503は、それぞれ管理ノード100の計算機上で実行される仮想OS実行制御プログラムと、シミュレーション間通信制御プログラムで構成される。
【００３０】
この仮想OS実行管理サーバ装置502は、以下に順次説明するように、ネットワークを介し、全ての実行ノード102と通信プロトコル模擬装置503と接続されており、実行ノード102からの通信要求に応じて、接続された全ての実行ノード102上のシミュレーション実行時間が全て同一となるよう各実行ノード102を管理する機能と、通信プロトコル模擬装置503から取得した各種のネットワーク動作に関する情報を元に、実行ノード102間の通信順序とその遅延時間を、各実行ノード102に伝え、各実行ノード102で実行されるシミュレーションに挿入する機能を備える。また、通信プロトコル模擬装置503は通信プロトコルの基本動作の模擬を可能にするライブラリを備えており、ユーザがライブラリを組み合わせることにより任意のネットワークプロトコルの模擬を可能にする機能を備えている。
【００３１】
一方、所定数の計算機で構成される実行ノード102は、その実行ノード102に割当てられたシミュレーションが動作する仮想OS(Operating System)501と、仮想OS実行管理サーバ装置502の指示を受け取り、仮想OS501の状態保存と巻き戻しを行う仮想OS実行管理クライアント装置500と、仮想OS501の実行途中状態をファイルに保存したスナップショットと、保存時のシミュレーション時間を組として保存する、実行状態保存部504が接続された形で動作する。なお、この実行状態保存部504の詳細は、後で図１３を用いて説明するが、復元ポイントデータベース(DB)1300と復元イメージストレージ1301とを備える構成を持つ。
【００３２】
仮想OS実行管理クライアント装置500は、実行ノード102の計算機上で実行され、仮想OS実行管理サーバ装置502と同様、仮想OS実行制御プログラムの一部を構成する。この仮想OS実行管理クライアント装置500は、実行ノード102上の各仮想OS501に対する実行の停止、実行状態保存を指示する機能を有する。また、実行状態保存部504に対する、エントリ追加、検索エントリ削除を指示する機能を有する。更に、管理ノード100からの再実行指示を受信して、その再実行指示を元に実行状態保存部504の復元ポイントDB1300を検索し、最適な復元イメージを見つけ、復元イメージストレージ1301から呼び出し、仮想OS501を再実行させる機能を備える。再実行するべき仮想OSの実行状態を検索する場合は、実行されているシミュレーションの実行時間をキーとして検索を行う。
【００３３】
実行ノード102の仮想OS501上に割当てられるシミュレーションは、ECUとそれによって制御されるメカの模擬が原則となる。よって、図７に示した一つのマイコンシミュレータ701と、一つまたは複数の機械系（メカ）シミュレータ703及び電子系シミュレータ702が協調して動作する。また、これらのシミュレーション間の通信は前述のポーリング方式と投機的通信方式のどちらかが使用可能である。
【００３４】
図６に本実施例のシミュレーションシステムによる投機的通信手法によるシミュレーションの流れ、処理フローの一例を示した。
【００３５】
同図において、ある実行ノード102内のシミュレーション実行が、車載通信コントローラ209へのデータ送信を行う段階まで来たとき、その実行ノード102から管理ノード100に対して、データ送信伺い800を送出する(ステップ600)。
【００３６】
そのデータ送信伺い800を、管理ノード100の通信プロトコル模擬装置503が受理する。そして、そのデータ送信伺い800に記載された、シミュレーション時間をタイムスタンプとしてメモリ中に保存する(ステップ601)。
【００３７】
すると、その管理ノード100に接続されたすべての実行ノード102に対して、シミュレーション時間を問い合わせてこれを取得する(ステップ602)。なお、このステップ602の処理フローの詳細は、後で図１０を用いて説明する。
【００３８】
取得した各実行ノード102のシミュレーション時間と、そのタイムスタンプを比較し、タイムスタンプよりも値が大きいものがあるかどうかを判定する(ステップ603)。
【００３９】
そのタイムスタンプよりも大きなシミュレーション時間をもつ実行ノード102が存在した場合、それらの実行ノード102に対し通信プロトコル模擬装置503がシミュレーションの再実行指示を発行する(ステップ604)。
【００４０】
再実行指示を受け取った実行ノード102の仮想OS実行管理クライアント装置500は、そのタイムスタンプよりも前で最新のシミュレーション時間と対応するスナップショットを検索し、そのスナップショットを用いてシミュレーションを再実行する(ステップ605)。このステップ602の処理フローの詳細については、後で図１１を用いて説明する。
【００４１】
そして、各実行ノード102は、上記のタイムスタンプまで到達した場合は、管理ノード100に対しタイムスタンプ到着報告を送出し、他のすべての実行ノード102がタイムスタンプ到着報告を送出されるまでシミュレーション実行を停止する(ステップ606)。
【００４２】
すべての実行ノード102のシミュレーション時間が同じになると、管理ノード100は通信データ転送を開始する(ステップ607)。
【００４３】
同時に管理ノード100の通信プロトコル模擬装置503が、予め設定されたバス送信順序判断式と通信レイテンシの算出式に乗っとり、送信されるデータが各実行ノード102で有効となるシミュレーション上での時間を算出する(ステップ608)。これをコミットタイムスタンプとして、各実行ノード102に対して送出する(ステップ609)。
【００４４】
全実行ノード102内部の仮想OS501の実行状態をファイルとして、図１３に示したように、各実行ノード102中の実行状態保存部504の復元イメージストレージ1301にOS実行状態1302とタイムスタンプと組にして保存する(ステップ610)。
【００４５】
転送後、各実行ノード102のシミュレーションが再開される。このとき転送されたデータは、各実行ノード102のシミュレーション時間がコミットタイムスタンプに到達すると、有効化されシミュレーション内部で使われる(ステップ611)。
【００４６】
そして、すべての実行ノード102がコミットタイムスタンプに到達した時点で通信終了となる(ステップ612)。
【００４７】
図８に図６のステップ600、601で説明した、本実施例のデータ送信伺いに含まれるデータ種類の一例を示した。
【００４８】
同図に示すように、各実行ノード102から送出されるデータ送信伺い800には、通信設定ID801、シミュレーション時間802、転送長803、転送内容804が含まれる。
【００４９】
通信設定ID801の列は通信プロトコル模擬装置503が用いる通信遅延、バス送信順序判断式を指定するための識別子を収容する。シミュレーション時間802の列はそのデータ送信伺い800を送出した実行ノード102におけるシミュレーション時間を収容する。転送長803の列は、その実行ノード102が転送しようとするデータのサイズ、転送内容804の列はそのデータ本体をバイナリ形式で収容する。
【００５０】
図１０は、図６に示した本実施例のシミュレーションシステムによる投機的通信手法によるシミュレーションの処理フローのステップ602を詳細化して示している。
【００５１】
まず管理ノード100の仮想OS実行管理サーバ装置502がそれに接続されているすべての実行ノード102に対して実行時間取得命令を発行する(ステップ1000)。
【００５２】
次に仮想OS実行管理サーバ装置502はすべての実行ノード102から実行時間が返信されるまで待機する(ステップ1001)。
【００５３】
各実行ノード102の仮想OS実行管理クライアント装置500は、その実行時間取得命令を受信すると(ステップ1002)、仮想OS501中で実行されているシミュレーションの実行状態を問い合わせる。このとき、仮想OS501中で実行されているシミュレータのうちいずれかがその実行時間を返す(ステップ1003)。シミュレータの実行時間取得には、シミュレータ固有の機能を使うことも、シミュレーション対象内に実行時間を回答する仮想のブロックを追加することが可能である。
【００５４】
仮想OS実行管理クライアント装置500は、取得したシミュレーション実行時間と、その実行ノード102の識別子をペアとして、仮想OS実行管理サーバ装置502に返送する(ステップ1004)。以上のステップ1002-1004は、仮想OS実行管理クライアント装置500が実行するステップであるが、先に述べたように、この仮想OS実行管理クライアント装置500は、本実施例の仮想OS実行制御プログラムのクライアント側の一部である。
【００５５】
すべての実行ノード102より実行時間が確認されたのを仮想OS実行管理サーバ装置502が確認し、保存する(ステップ1005)。
【００５６】
図１１は、同様に図６に示した本実施例のシミュレーションシステムによる投機的通信手法によるシミュレーションの処理フロー中の、再実行を指示された実行ノード102の仮想OS実行管理クライアント装置500が実行するステップ605を詳細化して示している。
【００５７】
仮想OS実行管理サーバ装置502は、図６のステップ603において、タイムスタンプより先に進んだシミュレーション時間を持つ実行ノード102の仮想OS実行管理クライアント装置500に対して、再実行対象ノードを指示するノード識別子とタイムスタンプを組として持つ再実行命令を発行する(ステップ604)。
【００５８】
その再実行対象ノードである実行ノード102の仮想OS実行管理クライアント装置500は、その再実行命令を受信すると(ステップ1101)、図１３に図示した実行状態保存部504の復元ポイントデータベース(DB)1300に対して検索を行う。その検索には、受け取ったタイムスタンプよりも小さい復元ポイント値を持つ復元ポイントのうち最大のエントリの復元イメージパスを取得する検索条件を用いる(ステップ1102)。
【００５９】
次に仮想OS実行管理クライアント装置500は仮想OS501の実行を中断し、それまでの結果を破棄する(ステップ1103)。そして、実行状態保存部504の復元イメージストレージ1301からステップ1102で取得した復元イメージパスにある、仮想OSの実行状態イメージファイルを仮想OS501にロードすることによって、仮想OS実行管理サーバ装置502が指定したタイムスタンプ近傍からのシミュレーションが再実行される(ステップ1104)。
【００６０】
最後に、再実行を行った仮想OS実行管理クライアント装置500は、再実行完了報告を仮想OS実行管理サーバ装置502に対して発行する(ステップ1105)。
【００６１】
以上説明したように、本実施例においては、図６のステップ610において、通信終了時にすべての実行ノードが実行状態を保存することによって、それ以降の転送でシミュレーションの進行が逆に進むことを防いでいる。しかし、通信周期が長い場合、ハザード発生時の再実行オーバーヘッドが増大する。このオーバーヘッドを低減するためには、通信終了後から次の通信発生までの間で最低1回の実行状態保存を行う必要がある。そこで、本実施例の好適な態様として、前回までの通信周期に基づいた実行状態保存周期の適応制御を行う。
【００６２】
図９は本実施例の好適な態様としての適応制御の動作フローの一例を示す図である。同図において、この適応制御はシミュレーション上の通信動作終了（図６のステップ612）をトリガとして、管理サーバ100の仮想OS実行管理サーバ装置502で開始される(ステップ900)。
【００６３】
まず、仮想OS実行管理サーバ装置502は、通信終了時刻を通信プロトコル模擬装置503より取得する(ステップ901)。そして、これまでに保存された通信終了時刻より、平均の通信周期パターンを算出する(ステップ902)。
【００６４】
次回の状態保存指示時間を、例えば通信終了時刻＋平均通信周期/2として算出、対象とする実行ノード102に対して送出する(ステップ903)。
【００６５】
各実行ノード102は、指定された状態保存指示時間までシミュレーションの実行を進める(ステップ904)。
【００６６】
最後に、指定された状態保存指示時間に達した状態で、シミュレーション実行状態の保存を行い、実行を再開する(ステップ905)。
【００６７】
図１２に、図９のステップ905の実行状態の保存の詳細フローの一例を示した図である。なお、この保存された実行状態は、例えば、図６のステップ605において利用される。
【００６８】
図１２の処理フローにおいて、まず、管理ノード100の仮想OS実行管理サーバ装置502が、実行状態保存命令を発行する(ステップ1200)。
【００６９】
実行ノード102の仮想OS実行管理クライアント装置500はその実行状態保存命令を受信すると(ステップ1201)、仮想OS501で実行中のシミュレーションの実行時間を取得して、復元ポイント値として一時保存する(ステップ1202)。
【００７０】
次に、仮想OS実行管理クライアント装置500は仮想OS501の実行を一時中断し、そのOS実行状態1302を実行状態イメージとして復元イメージストレージ1301に格納されたファイルに保存する。そのファイル名を復元イメージパスとして一時保存する(ステップ1203)。最後に、復元ポイント値と復元イメージパスをセットにして、図１３に示す、復元ポイントDB1300にエントリを追加する（ステップ1204）。
【００７１】
図1３は、本実施例の図５に示した実行状態保存部504の一構成例の詳細を示したものである。
【００７２】
同図において、記憶部中に設けられた実行状態保存部504は、仮想OS501の実行状態をファイルとして保存する復元イメージストレージ1301と、保存された復元イメージを保存された際のシミュレーション時間によって検索可能にする復元ポイントDB1300によって構成される。復元ポイントDB1300は、復元ポイント値1303と復元イメージパス1304からなる。一方、復元イメージストレージ1301は、OS実行状態1302が蓄積されている。この実行状態保存部504によって提供される機能は、エントリ追加、エントリ検索、エントリ削除である。
【００７３】
エントリ追加は、図１２で記述したように実行状態保存時に行われ、復元イメージストレージに１件の仮想OS実行イメージファイル1301と、復元ポイントDB1300にそのファイルパスである復元イメージパス1304と、シミュレーション実行時間である復元ポイント値1303が保存される。
【００７４】
エントリ検索は、シミュレーション再実行時に利用される。仮想OS実行管理サーバ装置502から送られたタイムスタンプをキーとして、復元ポイントDB1300を検索し、最適な仮想OSの復元イメージを返す。
【００７５】
エントリ削除は、シミュレーション終了時にすべての実行ノード102で自動実行され、復元ポイントDB1300と仮想OS実行イメージファイル1301の全エントリを削除することができる。
【００７６】
復元ポイントDB1300は複数のシミュレーションにおける復元イメージの判別をしていない。よってシミュレーション終了時にそのエントリ全てを削除することによって、シミュレーション間のOSイメージの取り間違いを防ぐことが可能となる。
【００７７】
図１４は、本実施例における通信プロトコル模擬装置503の機能構成の一具体例を示した機能ブロック図である。なお、上述のとおり、通信プロトコル模擬装置503は、計算機で構成される管理ノード100上で動作するシミュレーション間通信制御プログラムとして実現される。先に説明したように、この通信プロトコル模擬装置503は通信プロトコルの基本動作の模擬を可能にするライブラリを備えており、ユーザがライブラリを組み合わせることにより任意のネットワークプロトコルの模擬を可能にする機能を有する。そして、通信プロトコル模擬装置503は、仮想OS実行管理サーバ装置502から、実行ノード102からの通信要求、要求発生時間を受け、ネットワーク動作情報として、調停結果である各実行ノード間の通信順序と、通信遅延を提供する。
【００７８】
このような動作を実現するため、通信プロトコル模擬装置503は、図１４に示すように、基本動作部1400、ユーザ定義部1401の二つの機能ブロックにより構成される。
【００７９】
同図に示すように、基本動作部1400は、仮想OS実行管理サーバ装置502とのインターフェイスを提供し、実行ノード102が送信した通信要求、要求発生時間が入力され、通信要求が処理される順序である調停結果と通信遅延を出力する。基本動作部1400の順序と通信遅延の決定は通常の方法で可能である。また、基本動作部1400は、実際のネットワーク動作に必要となる操作、すなわち遅延計算、イベントキューの管理、状態遷移を行う関数を備え、遅延記述、状態遷移記述、イベントキュー処理などの共通ライブラリを提供する。
【００８０】
一方、ユーザ定義部1401は、シミュレーション対象毎にユーザが希望するネットワーク挙動を実現するために、基本動作部1400に備えられた前述の関数を組み合わせたプログラムとして動作する。シミュレーションを前にユーザが動作を記述するが、その際、ユーザ定義部1401は基本動作部1400から上述のライブラリを呼び出し、呼び出したライブラリを使い、通信状態遷移、イベントキューの大きさ、各通信動作の遅延などを、プログラミング言語ベースで記述する。
【００８１】
本実施例の管理ノード100では通信シミュレーションの動作が、シミュレーションを行うOSの制御につながっているが、通信の模擬自体とOSの制御を分割するためにこのような構成を採用する。
【００８２】
以上本発明の一実施例を詳述したが、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、実施例やその変形例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。更に、上述した各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアや、プログラムを作成する等によりソフトウェアで実現しても良いことは言うまでもない。
【産業上の利用可能性】
【００８３】
本発明は複数のソフトウェアが連動して動作する計算機システム、または開発システムのプログラムに適用することができる。
【符号の説明】
【００８４】
100  管理ノード
101  ネットワーク
102  実行ノード
103  マイコンシミュレータ
104  メカシミュレータ
201  エンジンECU
202  ブレーキECU
203  ユーザインターフェイスECU
204  ステアリングECU
205  エンジン
206  ブレーキ
207  ユーザ操作パネル
208  車体姿勢
209  車載通信コントローラ
2100  ECU
2101  専用IC
2102  アナログIO
2103  マイクロコントローラ
2104  通信インターフェイス
301  計算機
302  CPU
303  メモリ
304  IO
305  ネットワークインターフェイス
306  ネットワーク
400  計算クラスタ
500  仮想OS実行管理クライアント装置
501  仮想OS
502  仮想OS実行管理サーバ装置
503  通信プロトコル模擬装置
504  実行状態保存部
700  シミュレーション対象の構成
701  マイコンシミュレータ
702  電子系シミュレータ
703  機械系（メカ）シミュレータ
704  通信シミュレータインターフェイス
800  データ送信伺いデータフォーマット
801  通信設定ID
802  シミュレーション時間
803  転送長
804  転送内容
1300  復元ポイントDB
1301  復元イメージストレージ
1302  仮想OS実行状態
1303  復元ポイント値
1304  復元イメージパス
1400  基本動作部
1401  ユーザ定義部。
【図１】
2012093899.tif 000003
【図２Ａ】
2012093899.tif 000004
【図２Ｂ】
2012093899.tif 000005
【図３】
2012093899.tif 000006
【図４】
2012093899.tif 000007
【図５】
2012093899.tif 000008
【図６】
2012093899.tif 000009
【図７】
2012093899.tif 000010
【図８】
2012093899.tif 000011
【図９】
2012093899.tif 000012
【図１０】
2012093899.tif 000013
【図１１】
2012093899.tif 000014
【図１２】
2012093899.tif 000015
【図１３】
2012093899.tif 000016
【図１４】
2012093899.tif 000017