JP2011134275A - スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置 - Google Patents

スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置 Download PDF

Info

Publication number
JP2011134275A
JP2011134275A JP2009295592A JP2009295592A JP2011134275A JP 2011134275 A JP2011134275 A JP 2011134275A JP 2009295592 A JP2009295592 A JP 2009295592A JP 2009295592 A JP2009295592 A JP 2009295592A JP 2011134275 A JP2011134275 A JP 2011134275A
Authority
JP
Japan
Prior art keywords
simulation
unit
scheduler
data
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009295592A
Other languages
English (en)
Inventor
Yutaka Tamiya
豊 田宮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009295592A priority Critical patent/JP2011134275A/ja
Priority to US12/926,688 priority patent/US8448172B2/en
Publication of JP2011134275A publication Critical patent/JP2011134275A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】高速、且つ、再現性のある分散シミュレーションを実現可能なスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置を提供することを目的とする。
【解決手段】複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、スケジューラプログラムが実行されるコンピュータに、複数のシミュレーションプログラムの間でデータ授受が無い期間について、複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、複数のシミュレーションプログラムの間でデータ授受が有る期間について、複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、を実行させることにより上記課題を解決する。
【選択図】 図6

Description

本発明は分散環境上で分散シミュレーションを実行するスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置に関する。
近年、LSI(Large Scale Integration:大規模集積回路)回路の規模は著しく増大している。したがって、LSI回路の検証には大規模なシミュレーション環境が不可欠となっている。
例えば大規模なLSI回路のシミュレーション環境では、シミュレーションを複数のシミュレーションプログラムに分割し、シミュレーションプログラムを分散型コンピュータ環境(以下、分散環境という)で実行して、シミュレーション時間を短縮する技術が知られている(例えば特許文献1参照)。
特開2000−268005号公報
図1は分散環境で実行するシミュレーション環境の一例のシステム構成図である。図1の分散環境で実行するシミュレーション環境は、複数のシミュレーションプログラム(以下、SPという)1〜3が並列動作して、LSI回路全体のシミュレーションを実現するものである。
スケジューラプログラム(以下、スケジューラという)10は、分散環境で実行するシミュレーション環境(以下、分散型シミュレーション環境という)のシミュレーション時刻を管理しつつ、各SP1〜3に対してシミュレーション継続命令を送るものである。シミュレーション継続命令は各SP1〜3にタイムスロット値TSを伝えるものである。
各SP1〜3はスケジューラ10からのシミュレーション継続命令を受け取ると、時間TSだけシミュレーションを実行して、その後、シミュレーションを停止する。時間TSのシミュレーションの実行中、各SP1〜3は図2に示すように、他のSPとデータ授受の必要がある場合、SP間で適宜通信してデータを授受する。
図2はSP間のデータ授受のタイミングを表すタイムチャートである。図2ではタイムスロット値TSが100msecの例を表している。図2では、t=100〜200msecの期間にデータ書き込みS1〜S3がSP1とSP2との間で行われている。各SP1〜3は、Loosely-timed modelの概念に基づいて、与えられたタイムスロット値TSの中で、他のSPと関係なくシミュレーション時刻を進める。
Loosely-timed modelの概念とはタイムスロット値TS内であれば各SP間のデータ授受のタイミングの時間的変動を許可するというものである。図2では、SP1及びSP2のシミュレーション時刻が完全に同期している場合に、各データ書き込みS1〜S3が120,150,170msecで発生している。しかし、分散型シミュレーション環境の場合、SP1及びSP2を実行するコンピュータの処理速度や通信速度に違いがあるためSP1及びSP2は同じシミュレーション時刻を持つことが通常期待できない。
図3はSP1及びSP2のシミュレーション時刻にずれが生じてしまった場合のSP間のデータ授受のタイミングを表すタイムチャートである。図3は、SP1に比べてSP2の実行が遅い例を表している。図3では、SP1がデータ書き込みS1,S3を自身のシミュレーション時刻120,170msecで発生させている。しかし、SP2はデータ書き込みS1,S3を自身のシミュレーション時刻110,120msecで受け取っている。
また、図3ではSP2がデータ書き込みS2を自身のシミュレーション時刻150msecで発生させている。しかし、SP1はデータ書き込みS2を自身のシミュレーション時刻190msecで受け取っている。さらに、図3は図2と比較してデータ書き込みS2,S3の順序が異なる為、図2の220msecで発生しているデータ読み込みS4が消失するという異なるシミュレーション結果がもたらされている。
このように、分散型シミュレーション環境では個々のSPが勝手に動作する場合、それぞれのSPを実行するコンピュータの処理速度や通信速度に違いがある為、通常、シミュレーション時刻を同じに保つことが期待できない。
このため、分散型シミュレーション環境はシミュレーション結果に再現性がないという問題があった。シミュレーション結果に再現性がない分散型シミュレーション環境では検証対象にバグを見つけたとしても、バグの発現を再現することが難しく、バグの原因を解析できない。
本発明の一実施形態は、高速、且つ、再現性のある分散シミュレーションを実現可能なスケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置を提供することを目的とする。
上記課題を解決するため、本発明の一実施形態は、複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、前記スケジューラプログラムが実行されるコンピュータに、前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、を実行させるためのスケジューラプログラムである。
なお、本発明の一実施形態の構成要素、表現又は構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
本発明の一実施形態によれば、高速、且つ、再現性のある分散シミュレーションを実現可能である。
分散環境で実行するシミュレーション環境の一例のシステム構成図である。 SP間のデータ授受のタイミングを表すタイムチャートである。 SP1及びSP2のシミュレーション時刻にずれが生じてしまった場合のSP間のデータ授受のタイミングを表すタイムチャートである。 分散型シミュレーション環境の一例のシステム構成図である。 スケジューラ又はシミュレーションプログラムを実行するコンピュータの一例のハードウェア構成図である。 コンピュータでスケジューラ及びシミュレーションプログラムを実行することで実現されるスケジューラ部及びシミュレーション部の一例のブロック構成図である。 スケジューラ部の処理を表した一例のフローチャートである。 シミュレーション部の処理を表した一例のフローチャートである。 データ授受の要求を溜めるキューの一例のデータ構造図である。 SP間のデータ授受のタイミングを表す一実施例のタイムチャート(1/3)である。 SP間のデータ授受のタイミングを表す一実施例のタイムチャート(2/3)である。 SP間のデータ授受のタイミングを表す一実施例のタイムチャート(3/3)である。 SP間のデータ授受のタイミングを表す一実施例のタイムチャートである。 SP間のデータ授受のタイミングを表す他の実施例のタイムチャートである。
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。
(システム構成)
図4は分散型シミュレーション環境の一例のシステム構成図である。図4のシステムはスケジューラ用コンピュータ20と複数のシミュレーション用コンピュータ21〜23とがインターネットやLAN(Local Area Network:構内通信網)等のネットワーク25を介してデータ通信可能に接続されている。
スケジューラ用コンピュータ20はスケジューラ10を実行する。シミュレーション用コンピュータ21はシミュレーションプログラム(以下、SPという)1を実行する。シミュレーション用コンピュータ22はSP2を実行する。また、シミュレーション用コンピュータ23はSP3を実行する。
なお、図3のシステムは3台のシミュレーション用コンピュータ21〜23の例を表しているが、3台以外であってもよい。また、図4のシステムは仮想化プラットフォームを利用し、仮想化されたコンピュータ上でスケジューラ10及びSP1〜3を実行することで実現してもよい。
(ハードウェア構成)
図5は、スケジューラ又はシミュレーションプログラムを実行するコンピュータの一例のハードウェア構成図である。コンピュータは、バスBで相互に接続されている入力装置31,出力装置32,ドライブ装置33,補助記憶装置34,主記憶装置35,演算処理装置36及びインターフェース装置37を有する。
入力装置31はキーボードやマウス等である。入力装置31は、各種信号を入力するために用いられる。出力装置32はディスプレイ装置等である。出力装置32は、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置37は、モデム又はLANカード等である。インターフェース装置37は、ネットワーク25に接続する為に用いられる。
本実施例のスケジューラ10は、スケジューラ用コンピュータ20を制御する各種プログラムの少なくとも一部である。また、本実施例のSP1〜3は、シミュレーション用コンピュータ21〜23を制御する各種プログラムの少なくとも一部である。スケジューラ10及びSP1〜3は例えば記録媒体38の配布やネットワーク25からのダウンロードなどによって提供される。スケジューラ10及びSP1〜3を記録した記録媒体38はCD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
スケジューラ10を記録した記録媒体38がドライブ装置33にセットされると、スケジューラ10は、記録媒体38からドライブ装置33を介して補助記憶装置34にインストールされる。なお、ネットワークからダウンロードされたスケジューラ10は、インターフェース装置37を介して、補助記憶装置34にインストールされる。補助記憶装置34はインストールされたスケジューラ10を格納すると共に、必要なファイル,データ等を格納する。
主記憶装置35は、スケジューラ10の起動時に補助記憶装置34からスケジューラ10を読み出して格納する。演算処理装置36は主記憶装置35に格納されたスケジューラ10に従って、後述するような各種処理を実現している。
また、SP1〜3を記録した記録媒体38がドライブ装置33にセットされると、SP1〜3は記録媒体38からドライブ装置33を介して補助記憶装置34にインストールされる。なお、ネットワークからダウンロードされたSP1〜3は、インターフェース装置37を介して、補助記憶装置34にインストールされる。補助記憶装置34はインストールされたSP1〜3を格納すると共に、必要なファイル,データ等を格納する。
主記憶装置35は、SP1〜3の起動時に補助記憶装置34からSP1〜3を読み出して格納する。演算処理装置36は主記憶装置35に格納されたSP1〜3に従って、後述するような各種処理を実現している。
(ブロック構成)
図6はコンピュータでスケジューラ及びシミュレーションプログラムを実行することで実現されるスケジューラ部及びシミュレーション部の一例のブロック構成図である。図6ではシミュレーション部60を一つ表しているが、コンピュータで実行したSP1〜3に対応する3つのシミュレーション部60が実現されたものとする。
スケジューラ部50は、シミュレーション継続命令送信部51,並列・逐次実行判断部52及びデータ授受有無受信部53を有する。また、シミュレーション部60は、シミュレーション実行部61,スナップショット保存・回復部62,データ授受実行部63及びデータ授受有無通知部64を有する。
なお、スケジューラ部50の並列・逐次実行判断部52及びデータ授受有無受信部53は本実施例で追加された処理ブロックである。シミュレーション部60のデータ授受有無通知部64は本実施例で追加された処理ブロックである。
本実施例では、分散型シミュレーション環境において、スケジューラ部50が3つのシミュレーション部60に逐次実行及び並列実行の両者を組み合わせて実行させることによりシミュレーション結果の再現性を保証する。
スケジューラ部50の並列・逐次実行判断部52は、各シミュレーション部60に並列実行をさせるべく、スケジューラ部50のシミュレーション継続命令送信部51に通知を行う。スケジューラ部50のシミュレーション継続命令送信部51は各シミュレーション部60にタイムスロット値TSで並列実行させるべく、各シミュレーション部60に対してシミュレーション継続命令を発行する。
各シミュレーション部60のシミュレーション実行部61は、シミュレーション継続命令を受け取ると、シミュレーションを実行する前に、現在時刻でのシミュレーション状態をスナップショット保存・回復部62に保存させる。その後、各シミュレーション部60のシミュレーション実行部61はタイムスロット値TSの時間TSだけシミュレーションを並列実行する。各シミュレーション部60のシミュレーション実行部61は、時間TSのシミュレーションの実行中に、他のシミュレーション部60とデータ授受(データ書き込み、又はデータ読み込み)が必要か不要かを判定する。
シミュレーション実行部61は他のシミュレーション部60とデータ授受が必要と判定すると、スナップショット保存・回復部62に、保存しておいたシミュレーション状態へ戻させる。また、シミュレーション実行部61は逐次実行に備える。
シミュレーション実行部61は他のシミュレーション部60とデータ授受が必要か不要かの判定結果をデータ授受実行部63に通知する。データ授受実行部63はデータ授受が不要との判定結果を通知されると、データ授受有無通知部64を介してスケジューラ部50のデータ授受有無受信部53へデータ授受が不要との判定結果を通知する。
また、データ授受実行部63はデータ授受が必要との判定結果を通知されると、データ授受有無通知部64を介してスケジューラ部50のデータ授受有無受信部53へデータ授受が必要との判定結果を通知する。スケジューラ部50のデータ授受有無受信部53は各シミュレーション部60から受信したデータ授受が必要か不要かの判定結果を並列・逐次実行判断部52に通知する。
スケジューラ部50の並列・逐次実行判断部52は、各シミュレーション部60から受信したデータ授受が必要か不要かの判定結果に基づき、各シミュレーション部60に並列実行又は逐次実行をさせるべく、スケジューラ部50のシミュレーション継続命令送信部51に通知を行う。
具体的に、全てのシミュレーション部60からデータ授受が不要との判定結果を受信すると、スケジューラ部50の並列・逐次実行判断部52は各シミュレーション部60に次の並列実行をさせるべく、スケジューラ部50のシミュレーション継続命令送信部51に通知を行う。つまり、スケジューラ部50のシミュレーション継続命令送信部51は各シミュレーション部60にタイムスロット値TSでの次の並列実行を継続させるべく、各シミュレーション部60に対してシミュレーション継続命令を発行する。
一方、少なくとも一つのシミュレーション部60からデータ授受が必要との判定結果を受信すると、スケジューラ部50の並列・逐次実行判断部52は各シミュレーション部60に逐次実行をさせるべくスケジューラ部50のシミュレーション継続命令送信部51に通知を行う。つまり、スケジューラ部50のシミュレーション継続命令送信部51は各シミュレーション部60にタイムスロット値TSで逐次実行させるべく各シミュレーション部60に対してシミュレーション継続命令を発行する。
スケジューラ部50のシミュレーション継続命令送信部51は各シミュレーション部60の間でデータ授受が必要である場合、後述の順序リストに従って各シミュレーション部60をタイムスロット値TSまで逐次実行させるべく、シミュレーション継続命令を発行する。逐次実行のシミュレーション継続命令を受け取ると、各シミュレーション部60のシミュレーション実行部61は、タイムスロット値TSまでか、他のシミュレーション部60とのデータ授受が生じるまでシミュレーションを実行する。
他のシミュレーション部60とのデータ授受が生じた場合、シミュレーション実行部61は、その時点でシミュレーションを中断する。シミュレーション実行部61は、他のシミュレーション部60に、データ授受の要求を送信する。他のシミュレーション部60は受信したデータ授受の要求を後述のキューに溜め、後で処理する。
また、他のシミュレーション部60においてデータ授受が生じ、自分のキューに他のシミュレーション部60からのデータ授受の要求が溜まっていれば、シミュレーション実行部61は自分のキューに溜まっている他のシミュレーション部60からのデータ授受の要求に対する処理を行う。
シミュレーション実行部61は他のシミュレーション部60とのデータ授受が生じてしまい、タイムスロット値TSに達しない場合、次の逐次実行に備えるべく、データ授受実行部63,データ授受有無通知部64及びスケジューラ部50のデータ授受有無受信部53を介してスケジューラ部50の並列・逐次実行判断部52にシミュレーション結果を通知する。
また、シミュレーション実行部61は他のシミュレーション部60とのデータ授受が生じず、タイムスロット値TSに達した場合、データ授受実行部63,データ授受有無通知部64及びスケジューラ部50のデータ授受有無受信部53を介してスケジューラ部50の並列・逐次実行判断部52にシミュレーション結果を通知する。
(処理フロー)
図7はスケジューラ部の処理を表した一例のフローチャートである。ステップS11に進み、スケジューラ部50のシミュレーション継続命令送信部51は各シミュレーション部60のシミュレーション実行部61へ、タイムスロット値TSの並列実行モードでのシミュレーション継続命令を送信する。また、ステップS12に進み、スケジューラ部50の並列・逐次実行判断部52は、各シミュレーション部60からデータ授受が必要か不要かの判定結果を受信する。
ステップS13に進み、並列・逐次実行判断部52はステップS11で送信したタイムスロット値TSの並列実行モードでのシミュレーション継続命令について、データ授受が各シミュレーション部60の間で不要かを判定する。データ授受が各シミュレーション部60の間で不要と判定されると、シミュレーション継続命令送信部51はステップS11に戻り、次の並列実行を継続させるべく、各シミュレーション部60のシミュレーション実行部61へ、タイムスロット値TSの並列実行モードでのシミュレーション継続命令を送信する。
データ授受が各シミュレーション部60の間で必要と判定されると、シミュレーション継続命令送信部51はステップS14に進み、並列実行モードから逐次実行モードに移行する。シミュレーション継続命令送信部51は、各シミュレーション部60の逐次実行の順序リストを作成する。順序リストは、例えばSP1,SP2,SP3という様に、タイムスロット値TSの逐次実行モードでのシミュレーション継続命令を送信する順番が識別可能なように作成される。
ステップS15に進み、シミュレーション継続命令送信部51はステップS14で作成した順序リストから最初のシミュレーション部60を選択する。シミュレーション継続命令送信部51はステップS16に進み、ステップS15で選択したシミュレーション部60のシミュレーション実行部61へ、タイムスロット値TSの逐次実行モードでのシミュレーション継続命令を送信する。
ステップS16でシミュレーション継続命令を送信したシミュレーション部60からシミュレーション結果を受信すると、ステップS17に進み、シミュレーション継続命令送信部51はステップS16でシミュレーション継続命令を送信したシミュレーション部60がタイムスロット値TSに達したか否かを判定する。タイムスロット値TSに達していれば、シミュレーション継続命令送信部51はステップS18に進み、ステップS15で選択したシミュレーション部60を順序リストから除外し、ステップS19に進む。タイムスロット値TSに達していなければ、シミュレーション継続命令送信部51はステップS19に進む。
ステップS19に進み、シミュレーション継続命令送信部51はステップS15で選択したシミュレーション部60が順序リストの最後か否かを判定する。シミュレーション継続命令送信部51はステップS15で選択したシミュレーション部60が順序リストの最後でなければ、ステップS20に進み、順序リストの次のシミュレーション部60を選択したあと、ステップS16に戻る。
シミュレーション継続命令送信部51はステップS15で選択したシミュレーション部60が順序リストの最後であれば、ステップS21に進み、ステップS14で作成した順序リストが空になったか否かを判定する。
ステップS14で作成した順序リストが空になっていなければ、シミュレーション継続命令送信部51はステップS15に戻る。また、ステップS14で作成した順序リストが空になっていれば、シミュレーション継続命令送信部51は逐次実行モードから並列実行モードに移行する。そして、シミュレーション継続命令送信部51は、ステップS11に戻る。
図8はシミュレーション部の処理を表した一例のフローチャートである。ステップS31に進み、シミュレーション部60のシミュレーション実行部61はスケジューラ部50からシミュレーション継続命令を受け取るまで待つ。
ステップS32に進み、シミュレーション実行部61はシミュレーション継続命令を受け取ることにより、タイムスロット値TSと、並列実行モード又は逐次実行モードを表す実行モードとを受け取る。
ステップS33に進み、シミュレーション実行部61は受け取った実行モードが並列実行モードか否かを判定する。シミュレーション実行部61は受け取った実行モードが並列実行モードであれば、ステップS34に進み、シミュレーションを実行する前に、現在時刻でのシミュレーション状態をスナップショット保存・回復部62に保存させる。
ステップS35に進み、シミュレーション実行部61はタイムスロット値TSの時間TSだけシミュレーションを並列実行する。ステップS36に進み、シミュレーション実行部61は時間TSのシミュレーションの実行中に、他のシミュレーション部60とデータ授受が必要か否かを判定する。
時間TSのシミュレーションの実行中に、他のシミュレーション部60とデータ授受が必要と判定すると、シミュレーション実行部61はステップS37に進む。ステップS37ではシミュレーション実行部61がスナップショット保存・回復部62に、保存しておいたシミュレーション状態へ戻させる。
時間TSのシミュレーションの実行中に、他のシミュレーション部60とデータ授受が必要でないと判定するか、又は、ステップS37の処理の後、シミュレーション実行部61はステップS38に進み、データ授受実行部63及びデータ授受有無通知部64を介してデータ授受が必要か不要かの判定結果をスケジューラ部50に通知する。ステップS38の後、シミュレーション実行部61はステップS31に戻る。
一方、シミュレーション実行部61は受け取った実行モードが並列実行モードでなければステップS39に進み、他のシミュレーション部60とのデータ授受が生じるか、タイムスロット値TSまでシミュレーションを実行する。
ステップS40に進み、シミュレーション実行部61は他のシミュレーション部60へのデータ授受の要求があれば、そのデータ授受の要求を他のシミュレーション部60へ送信する。ステップS41に進み、シミュレーション実行部61は他のシミュレーション部60においてデータ授受が生じ、他のシミュレーション部60からのデータ授受の要求があれば、他のシミュレーション部60からのデータ授受の要求に対する処理を行う。
そして、ステップS42に進み、シミュレーション実行部61はスケジューラ部50にシミュレーション結果を通知することで、シミュレーションがタイムスロット値TSまで達したか否かをスケジューラ部50に通知する。シミュレーション実行部61はステップS42の処理後、ステップS31に戻る。
各シミュレーション部60は他のシミュレーション部60との間で交換するデータ授受の要求を溜めるためのキューを有している。図9はデータ授受の要求を溜めるキューの一例のデータ構造図である。
データ授受の要求の情報は、要求パケットとして纏めて保持される。図9の例では要求パケットに、データ授受の要求を送信したシミュレーション部60,リード/ライト要求の区別,アドレス,データ値(書き込み時)が纏めて保持されている。要求パケットは時系列キューによってポイントされる。また、時系列キューでは、要求パケットが発行されたシミュレーション時刻と、要求パケットへのポインタが保持される。データ授受の要求をする場合、シミュレーション部60は要求パケットを生成し、データ授受の要求を受信した他のシミュレーション部60の時系列キューに挿入する。
このとき、他のシミュレーション部60の時系列キューには、データ授受の要求を送信したシミュレーション部60のシミュレーションの現在時刻が付加され、キュー内で時系列に要求パケットが配置されるようにする。
データ授受の要求を受信した他のシミュレーション部60は、要求パケットを処理する場合、時系列キューで時刻が若い順に処理をしていく。その際、他のシミュレーション部60はシミュレーション時刻がシミュレーションの現在時刻より後の要求パケットを処理しない。処理された要求パケットは時系列キューから取り除かれる。
図10〜図12はSP間のデータ授受のタイミングを表す一実施例のタイムチャートである。図10〜図12は2つのSP1,SP2の例を表している。図10はスケジューラ10からSP1,SP2にシミュレーション継続命令が送られている。また、図10はタイムスロットTS1においてSP1,SP2を並列実行している。並列実行により、タイムスロットTS1ではSP1,SP2の間にデータ書き込みS1〜S3が行われていることが検知される。したがって、スケジューラ10はタイムスロットTS1について、逐次実行による再シミュレーションが必要と判定する。
図11ではSP1,SP2が、保存しておいたt=100msecのシミュレーション状態に戻ったあと、タイムスロットTS1について、逐次実行でシミュレーションをやり直す。逐次実行の例としては以下のようなアルゴリズムが考えられる。
まず、スケジューラ10は「SP1→SP2→SP1→SP2・・・」という様な逐次実行の順序リストを作成し、順序リストに従ってSP1,SP2にシミュレーションを逐次実行させる。シミュレーションを逐次実行中のSP1,SP2に、他のSPとのデータ授受が発生したら、スケジューラ10は順序リストの次のSPにシミュレーションを逐次実行させる。スケジューラ10は、シミュレーションを逐次実行中のSP1,SP2のシミュレーション時刻がタイムスロットTS1を経過したら、タイムスロットTS1を経過したSP1,SP2を順序リストから外す。
具体的に、図11では順序リストに従ってSP1がシミュレーションの逐次実行を開始する。t=120msecにおいてSP1はSP2へのデータ書き込みS1が発生しているため、t=120msecでシミュレーションを停止する。次に、図11では順序リストに従ってSP2がシミュレーションの逐次実行を開始する。t=150msecにおいてSP2はSP1へのデータ書き込みS2が発生しているため、t=150msecでシミュレーションを停止する。
次に、図11では順序リストに従ってSP1がシミュレーションの逐次実行を停止していたt=120msecから開始する。t=170msecにおいてSP1はSP2へのデータ書き込みS3が発生しているため、t=170msecでシミュレーションを停止する。
次に、図11では順序リストに従ってSP2がシミュレーションの逐次実行を停止していたt=150msecから開始する。タイムスロットTS1のシミュレーションが終了するまで、SP2はSP1へのデータ書き込みが発生していないため、タイムスロットTS1を経過した時点でシミュレーションを停止する。スケジューラ10はSP2を順序リストから外す。
次に、図11では順序リストに従ってSP1がシミュレーションの逐次実行を停止していたt=170msecから開始する。タイムスロットTS1のシミュレーションが終了するまで、SP1はSP2へのデータ書き込みが発生していないため、タイムスロットTS1を経過した時点でシミュレーションを停止する。スケジューラ10はSP1を順序リストから外す。
図12はタイムスロットTS2においてSP1,SP2を並列実行している。並列実行により、タイムスロットTS2ではSP1,SP2の間にデータ授受が発生しないことが検知される。したがって、スケジューラ10はタイムスロットTS2について、逐次実行による再シミュレーションが不要と判定する。
このように、本実施例ではSP1,SP2の間で通信があるタイムスロットについて逐次実行を行うため、SP1,SP2のシミュレーション結果が一意に定まり、再現性が保証される。また、本実施例ではSP1,SP2の間で通信がないタイムスロットについて並列実行を行うため、分散型シミュレーション環境により処理速度が向上する。
なお、本実施例では並列実行時に、逐次実行を同時に行う拡張も考えられる。並列実行時に、逐次実行を同時に行う拡張では、並列実行が終了し、SP1,SP2の間にデータ授受が発生しないことが検知されれば、逐次実行を途中で打ち切って、並列実行のシミュレーション結果を採用する。また、並列実行時に、逐次実行を同時に行う拡張では、並列実行が終了し、SP1,SP2の間にデータ授受が発生することが検知されれば、並列実行のシミュレーション結果を捨て、逐次実行の終了を待って逐次実行のシミュレーション結果を採用する。
本実施例では、分散型シミュレーション環境において、再現性のあるシミュレーション結果を実現できる。
実機が動作する環境では、実機の構成部品のバラツキや電源回路のノイズなど、様々な外乱が存在する。分散型シミュレーション環境では、様々な外乱に対しても検証対象が動作することを保証する必要がある。
図13はSP間のデータ授受のタイミングを表す一実施例のタイムチャートである。図13は2つのSP1,SP2の例を表している。図13は逐次実行の順番を変えることにより、シミュレーション結果の再現性を保持したままで、異なったシミュレーション動作を作り出すことが可能である。具体的に、図13ではSP1,SP2の逐次実行の順序を図11の例と異ならせている。
まず、スケジューラ10は「SP2→SP1→SP2→SP1・・・」という様な逐次実行の順序リストを作成し、順序リストに従ってSP1,SP2にシミュレーションを逐次実行させる。シミュレーションを逐次実行中のSP1,SP2に、他のSPとのデータ授受が発生したら、スケジューラ10は順序リストの次のSPにシミュレーションを逐次実行させる。スケジューラ10は、シミュレーションを逐次実行中のSP1,SP2のシミュレーション時刻がタイムスロットTS1を経過したら、タイムスロットTS1を経過したSP1,SP2を順序リストから外す。
なお、逐次実行の順序の決め方としては、例えばシミュレーション時刻をシードとした乱数を使うことが考えられる。シミュレーション時刻を使う場合は、常に同じ乱数系列となる。
図13の例では図11の例と異なり、逐次実行の順序をSP2からに変えている。その結果、図13の例ではSP2からのデータ書き込みS1が先になり、SP1からのデータ書き込みS2が1回だけ発行されるように変わっている。
また、図14はSP間のデータ授受のタイミングを表す他の実施例のタイムチャートである。図14は2つのSP1,SP2の例を表している。図14はSP1,SP2の間で発行されるデータ授受に掛かる遅延時間を変動させることにより、外乱を模擬することができる。
例えば図14は図12の例において、SP2から発行されるデータ書き込みS2の遅延時間を−20msecと設定している。その結果、SP2がt=150msecで発行したデータ書き込みS2を、SP1はt=150+(−20)=130msecで受け取ることになる。
SP1,SP2の間で発行されるデータ授受に掛かる遅延時間の変動は、例えば図9の時系列キューに要求パケットが発行されたシミュレーション時刻を保持させる際、遅延時間分、増減させることにより実現できる。データ授受の受信側のシミュレーション時刻を逆行しない限り、遅延時間はLoosely-timed modelの概念に基づき自由に設定できる。
図14の例ではSP2からのデータ書き込みS2がSP1に到達するを、120msec<t≦200msecの範囲で自由に設定可能である。図14の例は遅延時間を負の値にした例である。
実機が動作する環境では、実機の構成部品のバラツキや電源回路のノイズなど、様々な外乱が存在する。本実施例では、様々な外乱によって、回路モジュールの処理速度や回路モジュール間のデータ転送が変動することを模擬できる。つまり、本実施例では実機動作時の外乱を模擬する機能を実現できる。したがって、本実施例の分散型シミュレーション環境を用いて検証した検証対象(例えばLSI回路など)は外乱に対する耐性を従来よりも高めることができる。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
1〜3 シミュレーションプログラム(SP)
10 スケジューラプログラム(スケジューラ)
20 スケジューラ用コンピュータ
21〜23 シミュレーション用コンピュータ
25 ネットワーク
31 入力装置
32 出力装置
33 ドライブ装置
34 補助記憶装置
35 主記憶装置
36 演算処理装置
37 インターフェース装置
38 記録媒体
50 スケジューラ部
51 シミュレーション継続命令送信部
52 並列・逐次実行判断部
53 データ授受有無受信部
60 シミュレーション部
61 シミュレーション実行部
62 スナップショット保存・回復部
63 データ授受実行部
64 データ授受有無通知部
B バス

Claims (6)

  1. 複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラプログラムにおいて、
    前記スケジューラプログラムが実行されるコンピュータに、
    前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせる並列実行手順、
    前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる逐次実行手順、
    を実行させるためのスケジューラプログラム。
  2. 前記コンピュータに、
    前記並列実行手順を実行する前に、シミュレーション状態を保存する保存手順を実行させ、
    前記逐次実行手順は、前記並列実行手順において前記データ授受が有ったことを検知すると、該並列実行手順を止め、前記シミュレーション状態を読み出して、前記保存手順を実行した時間から、前記データ授受が有った期間について、前記シミュレーションプログラムに逐次実行を行わせる、
    請求項1記載のスケジューラプログラム。
  3. 前記期間は所定の定数の期間であって、前記保存手順と前記並列実行手順と前記逐次実行手順を該期間単位で繰り返す、
    請求項1又は2記載のスケジューラプログラム。
  4. 前記複数のシミュレーションプログラムに、前記並列実行手順と共に前記逐次実行手順を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が無い期間であれば前記並列実行手順のシミュレーション結果を採用し、前記データ授受が有る期間であれば前記逐次実行手順のシミュレーション結果を採用する、
    請求項1から3の何れかに記載のスケジューラプログラム。
  5. スケジューラプログラムが複数のシミュレーションプログラムを並列実行させる制御を行う分散シミュレーションシステムであって、
    前記スケジューラプログラムが実行されるコンピュータは、
    前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせる分散シミュレーションシステム。
  6. 複数のシミュレーションプログラムを並列実行させる制御を行うスケジューラ装置において、
    前記複数のシミュレーションプログラムの間でデータ授受が無い期間について、前記複数のシミュレーションプログラムに並列実行を行わせ、前記複数のシミュレーションプログラムの間でデータ授受が有る期間について、前記複数のシミュレーションプログラムに逐次実行を行わせるスケジューラ装置。
JP2009295592A 2009-12-25 2009-12-25 スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置 Pending JP2011134275A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009295592A JP2011134275A (ja) 2009-12-25 2009-12-25 スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置
US12/926,688 US8448172B2 (en) 2009-12-25 2010-12-03 Controlling parallel execution of plural simulation programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009295592A JP2011134275A (ja) 2009-12-25 2009-12-25 スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置

Publications (1)

Publication Number Publication Date
JP2011134275A true JP2011134275A (ja) 2011-07-07

Family

ID=44189090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009295592A Pending JP2011134275A (ja) 2009-12-25 2009-12-25 スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置

Country Status (2)

Country Link
US (1) US8448172B2 (ja)
JP (1) JP2011134275A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101280864B1 (ko) 2012-12-17 2013-07-03 국방과학연구소 시뮬레이션 실행의 고속화 기법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063872A (ja) * 2010-09-14 2012-03-29 Fujitsu Ltd シミュレーションプログラム、シミュレーション装置及びシミュレーション方法
KR20130081354A (ko) * 2012-01-09 2013-07-17 삼성전자주식회사 분산 병렬 시뮬레이션에서의 통신 방법
EP2784704A1 (en) * 2013-03-26 2014-10-01 Fujitsu Limited Multi-component computational fluid dynamics simulations
US11314907B2 (en) * 2016-08-26 2022-04-26 Hitachi, Ltd. Simulation including multiple simulators
WO2018096755A1 (ja) * 2016-11-25 2018-05-31 株式会社デンソー 並行処理装置及び並行処理プログラム
WO2020139959A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Architecture for simulation of distributed systems
US11480964B2 (en) 2018-12-28 2022-10-25 Beijing Voyager Technology Co., Ltd. Distributed system execution using a serial timeline
WO2020139961A1 (en) 2018-12-28 2020-07-02 Didi Research America, Llc Distributed system task management using a simulated clock

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009271870A (ja) * 2008-05-09 2009-11-19 Internatl Business Mach Corp <Ibm> 制御装置シミュレーション方法、システム及びプログラム
JP2009295126A (ja) * 2008-06-09 2009-12-17 Internatl Business Mach Corp <Ibm> シミュレーション方法、システム及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6339836B1 (en) * 1998-08-24 2002-01-15 Mentor Graphics Corporation Automated design partitioning
JP4290266B2 (ja) 1999-03-15 2009-07-01 三菱電機株式会社 並列分散シミュレーションシステム及び並列分散シミュレーション方法
US20090150136A1 (en) * 2005-10-10 2009-06-11 Sei Yang Yang Dynamic-based verification apparatus for verification from electronic system level to gate level, and verification method using the same
US7756695B2 (en) * 2006-08-11 2010-07-13 International Business Machines Corporation Accelerated simulation and verification of a system under test (SUT) using cache and replacement management tables

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009271870A (ja) * 2008-05-09 2009-11-19 Internatl Business Mach Corp <Ibm> 制御装置シミュレーション方法、システム及びプログラム
JP2009295126A (ja) * 2008-06-09 2009-12-17 Internatl Business Mach Corp <Ibm> シミュレーション方法、システム及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101280864B1 (ko) 2012-12-17 2013-07-03 국방과학연구소 시뮬레이션 실행의 고속화 기법

Also Published As

Publication number Publication date
US20110161966A1 (en) 2011-06-30
US8448172B2 (en) 2013-05-21

Similar Documents

Publication Publication Date Title
JP2011134275A (ja) スケジューラプログラム、分散シミュレーションシステム及びスケジューラ装置
US9851996B2 (en) Applying firmware updates in a system with zero downtime by selectively offlining and onlining hardware using a scale-up hypervisor layer
CN105359114B (zh) 用于在寻址方案之间进行迁移的方法和***
CN109447253B (zh) 显存分配的方法、装置、计算设备及计算机存储介质
KR20140126190A (ko) 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
EP1990700A1 (en) Method for managing and controlling time of computer system and computer system
KR101715986B1 (ko) 신호 흐름이 프로그램된 디지털 신호 프로세서 코드의 효율적인 자원 관리를 위한 시스템 및 방법
US8468006B2 (en) Method of combined simulation of the software and hardware parts of a computer system, and associated system
US20170147404A1 (en) Estimating job start times on workload management systems
JP2006171894A (ja) データ処理システム、アクセス制御方法、その装置およびそのプログラム
JP2007011720A (ja) システムシミュレータ、システムシミュレート方法、制御プログラムおよび可読記録媒体
Schirner et al. Result-oriented modeling—A novel technique for fast and accurate TLM
US20080281576A1 (en) Interface board, simulator, synchronization method, and synchronization program
WO2017113895A1 (zh) 一种创建虚拟机的方法及装置
WO2012026582A1 (ja) シミュレーション装置、分散計算機システム、シミュレーション方法およびプログラム
US8819363B2 (en) Data copying method
US11275875B2 (en) Co-simulation repeater with former trace data
US8891515B2 (en) Method for node communication
CN106802847A (zh) 用于模拟慢速存储盘的方法和装置
JP6664158B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
WO2016194028A1 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US20230054303A1 (en) System and method for electronic circuit resimulation
JP6324634B1 (ja) 処理分割装置、シミュレータシステム、処理分割方法及び処理分割プログラム
WO2013111451A1 (ja) システムシミュレーション装置
KR102160414B1 (ko) 하위 호환성을 위한 레거시 버스 동작 시뮬레이션

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140318