(57)【要約】  本発明は、シミュレーション方法及び装置を提供する。本発明による複数個のブロックを用いてシミュレーションを実行する方法は、前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割する段階と、相互依存的な計算演算及び通信演算同士をグループ化するグループ化段階と、前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するシミュレーション実行段階を含むことを特徴とする。
2014522029.tif 000002
【特許請求の範囲】
【請求項１】
複数個のブロックを用いてシミュレーションを実行する方法であって、
前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と、互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割する段階と、
相互依存的な計算演算及び通信演算同士をグループ化するグループ化段階と、
前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するシミュレーション実行段階と、を含むことを特徴とするシミュレーション実行方法。
【請求項２】
前記シミュレーション実行段階は、
任意のブロックを選択する段階と、
前記選択されたブロックが最も先に実行しなければならない計算演算をそれぞれのグループから抽出する段階と、
前記抽出された計算演算のうち、通信演算に依存的ではなく、かつ今後発生する通信演算に最も近接した計算演算を選択する段階と、
前記選択された計算演算を実行する段階と、をさらに含むことを特徴とする、請求項１に記載のシミュレーション実行方法。
【請求項３】
前記シミュレーション実行段階は、
前記計算演算実行途中の通信演算実行時点の到達時、前記通信演算を実行する段階をさらに含むことを特徴とする、請求項２に記載のシミュレーション実行方法。
【請求項４】
同一グループに含まれた通信演算及び計算演算が互いに依存的なことを特徴とする、請求項１に記載のシミュレーション実行方法。
【請求項５】
複数個のブロックを用いてシミュレーションを実行する装置であって、
前記シミュレーションを構成する少なくとも一つ以上のグループを保存する構造保存部と、
前記シミュレーションを実行する複数個のブロックを含む実行部と、
前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割し、相互依存的な計算演算及び通信演算同士をグループ化して、前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するように制御する制御部と、を含むことを特徴とするシミュレーション実行装置。
【請求項６】
前記制御部は、
前記演算実行時、
任意のブロックを選択して、前記選択されたブロックが最も先に実行しなければならない計算演算をそれぞれグループから抽出して、前記抽出された計算演算のうちで通信演算に依存的ではなく、かつ今後発生する通信演算に最も近接した計算演算を選択し、前記選択された計算演算を実行するように制御することを特徴とする、請求項５に記載のシミュレーション実行装置。
【請求項７】
前記制御部は、
前記計算演算実行途中の通信演算実行時点の到達時、前記通信演算を実行するように制御することを特徴とする、請求項６に記載のシミュレーション実行装置。
【請求項８】
同一グループに含まれた通信演算及び計算演算が互いに依存的なことを特徴とする、請求項５に記載のシミュレーション実行装置。
【請求項９】
複数個のブロックを含む少なくとも２つ以上のノードが相互連結された分散システムにおけるシミュレーション実行方法であって、
前記それぞれノードにシャドーブロックを設定する設定段階と、
前記シャドーブロックが、任意のノードから他のノードに送信される任意の演算リクエストを受信する受信段階と、
前記シャドーブロックが、前記リクエストされた演算をプレ−プロセッシングするプレ−プロセッシング段階と、を含むことを特徴とするシミュレーション実行方法。
【請求項１０】
前記プレ−プロセッシング後、前記シャドーブロックが前記演算リクエストを前記他のノードへ伝達する段階と、
前記シャドーブロックが前記他のノードから送信される処理結果を受信してアップデートする段階と、をさらに含むことを特徴とする、請求項９に記載のシミュレーション実行方法。
【請求項１１】
前記アップデート段階は、
プレ−プロセッシングされたサービスの実行に所要された時間と、後処理されたサービスの実行に所要された時間との間のタイミング誤差をアップデートすることを特徴とする、請求項１０に記載のシミュレーション実行方法。
【請求項１２】
前記プレ−プロセッシング段階は、
前記シャドーブロックがメモリーに対する演算リクエストを受信した場合、読み取り又は書き込み機能を実行することを特徴とする、請求項１０に記載のシミュレーション実行方法。
【請求項１３】
前記プレ−プロセッシング段階は、
前記シャドーブロックが能動デバイスに対する演算リクエストを受信した場合、前記演算リクエストをバイパスさせることを特徴とする、請求項１０に記載のシミュレーション実行方法。
【請求項１４】
前記プレ−プロセッシング段階は、
前記シャドーブロックが受動デバイスに対する演算リクエストを受信した場合、前記受動デバイスに対するビヘイビアーモデルによってサービスを実行することを特徴とする、請求項１０に記載のシミュレーション実行方法。
【請求項１５】
分散システムでシミュレーションを実行するシミュレーション実行装置であって、
複数個のブロックを含む少なくとも２つ以上のノードを含み、
前記ノードそれぞれは、
任意のノードから他のノードに送信される任意の演算リクエストを受信し、前記リクエストされた演算をプレ−プロセッシングするシャドーブロックを含むことを特徴とするシミュレーション実行装置。
【請求項１６】
前記シャドーブロックは、
前記プレ−プロセッシング後、前記演算リクエストを前記他のノードへ伝達して、前記他のノードから送信される処理結果を受信してアップデートすることを特徴とする、請求項１５に記載のシミュレーション実行装置。
【請求項１７】
前記シャドーブロックは、
プレ−プロセッシングされたサービスの実行に所要された時間と、後処理されたサービスの実行に所要された時間との間のタイミング誤差をアップデートすることを特徴とする、請求項１６に記載のシミュレーション実行装置。
【請求項１８】
前記シャドーブロックは、
メモリーに対する演算リクエストを受信した場合、読み取り又は書き込み機能を実行することを特徴とする、請求項１７に記載のシミュレーション実行装置。
【請求項１９】
前記シャドーブロックは、
能動デバイスに対する演算リクエストを受信した場合、前記演算リクエストをバイパスさせることを特徴とする、請求項１７に記載のシミュレーション実行装置。
【請求項２０】
前記シャドーブロックは、
前記シャドーブロックが受動デバイスに対する演算リクエストを受信した場合、前記受動デバイスに対するビヘイビアーモデルによってサービスを実行することを特徴とする、請求項１７に記載のシミュレーション実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム性能を迅速でかつ正確に予め測定して予測するシミュレーション方法及び装置に関する。より具体的には、本発明は、互いに依存的な計算演算（ｃｏｍｐｕｔａｔｉｏｎ）及び通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）を抽出して複数個のグループにグループ化し、それぞれのグループを並列的に処理する並列シミュレーション方法、複数個のノードの間に仮想のシャドーノード（ｓｈａｄｏｗ ｎｏｄｅ）を導入し、任意のノードがリクエストした作業のアドレス領域の種類によってプレ−プロセッシング（ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）する分散シミュレーション方法、及びそれぞれに対する装置を提供する。
【背景技術】
【０００２】
スマートフォン、ＴＶ、家電などのシステム構築のためには、構造及び性能分析のためのシステムシミュレーション（Ｓｉｍｕｌａｔｉｏｎ）が必須である。シミュレーションは、エラー無しに所望の性能を満足すると共に最適化されたシステムを構成する。即ち、システム性能を予め測定して予測するシミュレーション技法は、システムを分析して評価するのに使用され、多くの重要性を担っている。
【０００３】
しかしながら、近年、マルチコア、ＧＰＵ（Ｇｒａｐｈｉｃ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）、Ｓ／Ｗプラットホーム（Ｐｌａｔｆｏｒｍ）、アプリケーションプロセッサ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｃｅｓｓｏｒ、ＡＰ）などに具現しなければならないシステム複雑度（ｃｏｍｐｌｅｘｉｔｙ）が増加することによってシミュレーション速度は限界にぶつかるようになった。
それによって、最近では、シミュレーション正確度を減らしてシミュレーション速度を増加させる方法を導入した。しかしながら、このような方法は、たとえシミュレーション速度を増加させることはできたとしても、シミュレーション分析結果を信頼することができないという問題点がある。
従って、シミュレーション速度を犠牲にせず、かつ正確にシステム性能を評価することができるシミュレーション方法に対する必要性が台頭している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記のような問題点を解決するために案出されたもので、システム性能を迅速でかつ正確に予め測定して予測するシミュレーション方法及び装置を提供することをその目的とする。
具体的には、本発明は、互いに依存的な計算演算（ｃｏｍｐｕｔａｔｉｏｎ）及び通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）を抽出して複数個のグループにグループ化し、それぞれのグループを並列的に処理する並列シミュレーション方法及び装置を提供することを第１目的とする。
また、本発明は、複数個のノードの間に仮想のシャドーノード（ｓｈａｄｏｗ ｎｏｄｅ）を導入して任意のノードがリクエストした作業のアドレス領域の種類によってプレ−プロセッシング（ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）する分散シミュレーション方法及び装置を提供することを第２目的とする。
【課題を解決するための手段】
【０００５】
上記のような問題点を解決するための本発明による複数個のブロックを用いてシミュレーションを実行する方法は、前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割する段階と、相互依存的な計算演算及び通信演算同士をグループ化するグループ化段階と、前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するシミュレーション実行段階とを含むことを特徴とする。
【０００６】
また、本発明による複数個のブロックを用いてシミュレーションを実行する装置は、前記シミュレーションを構成する少なくとも１つ以上のグループを保存する構造保存部と、前記シミュレーションを実行する複数個のブロックを含む実行部と、前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割し、相互依存的な計算演算及び通信演算同士をグループ化して、前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するように制御する制御部とを含むことを特徴とする。
【０００７】
また、本発明による複数個のブロックを含む少なくとも２つ以上のノードが相互連結された分散システムにおけるシミュレーション実行方法は、それぞれのノードにシャドーブロック（ｓｈａｄｏｗ ｂｌｏｃｋ）を設定する設定段階と、前記シャドーブロックが、任意のノードから他のノードに送信される任意の演算リクエストを受信する受信段階と、前記シャドーブロックが、前記リクエストされた演算をプレ−プロセッシングするプレ−プロセッシング段階とを含むことを特徴とする。
【０００８】
さらに、本発明による分散システムにおいてシミュレーションを実行するシミュレーション実行装置は、複数個のブロックを含む少なくとも２つ以上のノードを含み、前記ノードそれぞれは、任意のノードから他のノードに送信される任意の演算リクエストを受信し、前記リクエストされた演算をプレ−プロセッシングするシャドーブロックを含むことを特徴とする。
【発明の効果】
【０００９】
発明のシミュレーション方法によれば、シミュレーション速度を犠牲にせず、かつ正確にシステム性能を評価することができるという効果がある。これによって、本発明のシミュレーション方法をＳｏＣ（Ｓｙｓｔｅｍ ｏｎ Ｃｈｉｐ）、端末及びその他のエンベデッド（ｅｍｂｅｄｄｅｄ）機器に適用して最適化された製品製作が可能である。また、迅速でかつ正確なシミュレーションを活用して様々な状況に対する多様な分析が可能で製品群の性能向上に寄与することができる。
【図面の簡単な説明】
【００１０】
【図１】従来技術及び本発明の実施形態によるシステムシミュレーション変数（正確度、シミュレーション速度、並列処理）の間の関係を示した図面である。
【図２】シミュレーションを並列的に処理する並列処理方法及び並列システムに対する例示、及びその問題点を示した図面である。
【図３】複数のノードをクラスタリングして分散システムを構成する例を示した図面である。
【図４】シミュレーションを実行するための本発明の実施形態によるシステム構成図を示した図面である。
【図５】本発明の第１実施形態によって並列シミュレーションを実行するためにシミュレーションを依存度によってグループ化する段階を実行する過程を示した図面である。
【図６Ａ】シミュレーション実行時、依存度によってグループ化される過程を計算演算及び通信演算の図式を通じて示した図面である。
【図６Ｂ】シミュレーション実行時、依存度によってグループ化される過程を計算演算及び通信演算の図式を通じて示した図面である。
【図６Ｃ】シミュレーション実行時、依存度によってグループ化される過程を計算演算及び通信演算の図式を通じて示した図面である。
【図７】本発明の第１実施形態によって、それぞれのシミュレーショングループに含まれた計算演算及び通信演算を並列的に処理する過程を示したフローチャートである。
【図８Ａ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｂ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｃ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｄ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｅ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｆ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｇ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図８Ｈ】シミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【図９】本発明の第１実施形態によるシミュレーション装置の内部構造を示したブロック図である。
【図１０】シミュレーションを本発明の第１実施形態による場合、計算演算と通信演算が順次に実行される過程を示した図面である。
【図１１】本発明の第２実施形態による分散システムにおけるシミュレーション最適化方案を示した図面である。
【図１２】本発明の第２実施形態によるシミュレーション動作手順を示した図面である。
【図１３Ａ】シャドーブロックを用いてノードの間の通信演算を実行する概念を示した図面である。
【図１３Ｂ】シャドーブロックを用いてノードの間の通信演算を実行する概念を示した図面である。
【図１３Ｃ】シャドーブロックを用いてノードの間の通信演算を実行する概念を示した図面である。
【図１４】本発明の実施形態による場合のシミュレーション性能の向上した結果を示したグラフである。
【発明を実施するための形態】
【００１１】
本発明では、シミュレーションを実行する装置をホスト（ｈｏｓｔ）と称することができ、このようなホストは、任意の演算や一定動作を実行する複数個のブロックを含んでもよい。前記ブロックは、マスター、スレーブなどの用語に置換されて用いてもよい。本発明の一実施形態によれば、コンピュータなどをホストとして用いてシミュレーションを実行している。
以下、添付の図面を参照して本発明の好ましい実施形態を詳しく説明する。この時、添付された図面で同一構成要素は、可能な同一符号に付している事に留意すべきである。また、本発明の要旨を不明瞭にする公知機能及び構成に関する説明は省略する。
【００１２】
上記のように、近年、システム複雑度（ｃｏｍｐｌｅｘｉｔｙ）が増加することによってシミュレーション速度は限界にぶつかるようになった。これを解決するための方法でシミュレーション正確度を減らしてシミュレーション速度を増加させる方法を導入する方案を考慮し得る。これを、図１を参照して説明する。
図１は、従来技術及び本発明の実施形態によるシステムシミュレーション変数（正確度、シミュレーション速度、並列処理）の間の関係を示した図面である。
図１に示したように、従来には抽象化レベル（ａｂｓｔｒａｃｔｉｏｎ ｌｅｖｅｌ）を高める方法を用いた。即ち、シミュレーション正確度を犠牲にする代りにシミュレーション速度を増加させる方法を用いた。しかしながら、これはシミュレーション分析結果に対する正確度を信頼できないものとした。
【００１３】
本発明の実施形態では、並列処理を通じてシミュレーション正確度を犠牲にせず、かつシミュレーションを速やかに実行することができる方法を提案する。
このような並列コンピューティング（処理）を導入してシステムをシミュレーションする方法にはマルチコア（ｍｕｌｔｉ-ｃｏｒｅ）、分散コンピュータ（ｄｉｓｔｒｉｂｕｔｅｄ ｃｏｍｐｕｔｅｒ）などを活用するようになる。
これを図２及び図３を参照して説明する。
【００１４】
図２は、シミュレーションを並列的に処理する並列処理方法及び並列システムに対する例示、並びにこの問題点を示した図面である。
シミュレーションを第１処理ブロック（例えば、マスター、以下、同様）と第２処理ブロック（例えば、スレーブ、以下、同様）とが並列的に実行する場合、図２に示したようにマスターとスレーブとの間には特定有線信号（ｗｉｒｅ ｓｉｇｎａｌ）に対して依存性（ｄｅｐｅｎｄｅｎｃｙ）が発生するようになる。ところが、このような依存性が解決されない場合にはマスター又はスレーブは任意のタスク処理を待機（ｗａｉｔ）しなければならない状況が発生することがある。例えば、図２で６番の計算演算（ｃｏｍｐｕｔａｔｉｏｎ）はｂの通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）が実行される前には実行されることができないから、マスターからｂの通信が実行される前まで、スレーブはどんな演算も実行せず待機しなければならない。
これはコア（ｃｏｒｅ）が停止するということを意味し、このような状況が頻繁に発生するとシミュレーション速度が急激に低下されることがあるという問題が発生する。システムが１ＧＨｚのクロック（ｃｌｏｃｋ）で動作する場合には、このような待機状態が秒当たり１，０００，０００，０００回発生することであり、これは最終シミュレーション結果が導出されるまで速度低下に大きい影響を及ぼすようになる。
【００１５】
一方、シミュレーション装置（例えば、コンピュータ）の一つのノード（ｎｏｄｅ）に割り当てられるマルチコアの個数には限界がある。最近のスーパーコンピュータはこのような限界を乗り越えるため、多くのノードをクラスタリング（ｃｌｕｓｔｅｒｉｎｇ）する方法を導入した。これに対する例を図３に示す。
図３は多くのノードをクラスタリングする分散システムの構成を例示した図面である。
複数個のノードがクラスタリングされると、互いに異なるノードの間の通信は、同一ノード内に位置したコアの間の通信よりその速度が顕著に落ちる。従って、システムシミュレーション性能に悪影響を与えることがある。
例えば、第１ノードに位置したＡブロックが、第２ノードに位置したＤブロックからデータを読むと、第１ノードと第２ノードとを連結する物理的なリンク（ｌｉｎｋ）特性のためにシミュレーション速度が相当に低下されることがある。
【００１６】
本発明は、前記の並列システム及び分散システムでシミュレーションを実行する場合、発生する問題点を解決するための方案を提案する。
エンベデッドシステムの各ブロック（コア、メモリー、バスなど）は、計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに区分することができる。この場合、計算演算は特定ブロックの固有の機能を実行することを意味し、通信演算は互いに異なるブロック間のデータ交換を意味する。例えば、メモリーの場合、外部でアドレス（ａｄｄｒｅｓｓ）を受信することが通信演算であり、当該アドレスのデータを外部へ送信するために内部ロジックを実行するのが計算演算である。
以下、後述する本発明に対する説明は、第１実施形態及び第２実施形態に区分して記述する。この場合、第１実施形態はマルチコアを用いる並列システムにおけるシミュレーション最適化方法に対して記述する。
さらに、第２実施形態では分散システムにおけるシミュレーション最適化方法に対して記述する。
【００１７】
一方、本発明の実施形態は、図４に示すシミュレーションシステム構成図を通じて実行されることができる。
図４に示したように、シミュレーションを実行するホスト（ｈｏｓｔ）は、第１ノード、第２ノードなどの少なくとも２つ以上のノードがリンクで連結された分散システムである。前記リンクは、有線リンク（ｗｉｒｅ ｌｉｎｋ）及び／又は無線リンク（ｗｉｒｅｌｅｓｓ ｌｉｎｋ）を含むことができる。この場合、それぞれのノードは少なくとも２つ以上のコア、即ち、マルチコアから構成される並列コンピュータ環境を有する。さらに各ノードに位置した任意のブロックは、ホストを構成する物理的な機能ブロックにそれぞれマッピングされることができる。
【００１８】
各コアとノードにはシミュレーションするプラットホーム（ｐｌａｔｆｏｒｍ）が上げられており、プラットホームは各コアにマッピングされる。さらに、プラットホームに各ブロックは互いに通信を実行すると共にシミュレーションが進行される。
以下、後述する本発明の実施形態では同一のノード内におけるシミュレーションは並列シミュレーション（Ｐａｒａｌｌｅｌ Ｓｉｍｕｌａｔｉｏｎ）、互いに異なるノードの間でのシミュレーションは分散シミュレーション（Ｄｉｓｔｒｉｂｕｔｅｄ Ｓｉｍｕｌａｔｉｏｎ）と称する。
上記の前提に基づいて本発明の第１実施形態及び第２実施形態に対して記述する。
【００１９】
＜第１実施形態＞
以下では、少なくとも２つ以上のコアを用いる並列システムにおける並列シミュレーション最適化方法に対して記述する。
図２に示したように、並列シミュレーションの場合、マスターとスレーブは相互間にデータを交換する。しかしながら、自らの要するデータが相手で未処理である場合には待機（ｗａｉｔ）するという問題点がある。
本発明ではこのような問題点を解決するために、シミュレーションを実行することにおいて互いに依存的な計算演算（ｃｏｍｐｕｔａｔｉｏｎ）及び通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）を抽出して複数個のグループにグループ化する段階と、それぞれのグループに含まれた計算演算及び通信演算を独立的にかつ並列的に処理する段階と、を含む並列シミュレーション方法に対して記述する。
【００２０】
図５は、本発明の第１実施形態によって並列シミュレーションを実行するためにシミュレーションを依存度によってグループ化する段階を実行する過程を示すフローチャートである。
さらに、図６はシミュレーション実行時、依存度によってグループ化される過程を計算演算及び通信演算の図式を通じて図示する図面である。
図６Ａ乃至図６Ｃで、上端ラインはマスターが実行する計算演算を意味し、下端ラインはスレーブが実行する計算演算を意味する。さらに、上端ラインと下端ラインを直交するラインはマスターとスレーブの間に発生する通信演算を意味する。
【００２１】
まず、シミュレーション装置は、任意のシミュレーション演算が割り当てられる。さらに、シミュレーション装置は、Ｓ５１０段階を通じて前記シミュレーション演算でマスターとスレーブとの間に取り交わすべき通信演算を抽出する。これは図６Ａでａ、ｂ、ｃなどに示した演算である。さらに、シミュレーション装置は、抽出された通信演算を依存度によって時間順に整列する。この場合、それぞれの通信演算前後に配置される計算演算には依存関係がある。
【００２２】
さらに、シミュレーション装置は、Ｓ５２０段階で、前記通信演算に関連しているマスターとスレーブの計算演算を抽出する。これは図６Ｂで、１、２、３などに示した演算である。通信演算は、マスター又はスレーブブロックの固有の機能を実行すると考えられる。例えば、マスターがコアの場合には、割り当てられた作業をプロセス（ｐｒｏｃｅｓｓ）することが計算演算であり、スレーブがメモリーの場合には当該アドレスのデータを外部へ送信するために内部ロジックを実施することが計算演算であってもよい。
もし、計算演算の間に新しい通信演算が発生すると、シミュレーション装置は前記計算演算を詳細単位に分割する。
【００２３】
さらに、シミュレーション装置は、Ｓ５３０段階で、互いに依存的な計算演算及び通信演算同士をグループ化する。同一グループ内における通信演算と計算演算との間では依存度（ｄｅｐｅｎｄｅｎｃｙ）が存在して連結される。一方、互いに異なるグループの間の演算は互いに独立的である。即ち、依存度がない。
図６Ｃでは当該シミュレーション演算が第１グループ６１０と第２グループ６２０でグループ化された例示を示す。より具体的には、図６Ｃの２番の計算演算は、１番／５番演算及びａ通信演算に依存的である。即ち、１番/５番計算演算及びａ通信演算が処理されるまでは、２番計算演算は実行されることができない。一方、第１グループ６１０に含まれた１番計算演算及び第２グループ６２０に含まれた３番計算演算は独立的である。言い換えれば、１番計算演算が処理される前のどの時点でも、３番計算演算は実行されることができ、１番計算演算の実行が中断された時点で３番計算演算が実行されてから、さらに１番計算演算が実行されることもできる。
【００２４】
ハードウェアブロック特性は、グループに分割が可能な並列処理要素が多数存在する。本発明の第１実施形態ではこのようなそれぞれのグループを並列的に処理することを特徴とする。
図７は、本発明の第１実施形態によって、それぞれのシミュレーショングループに含まれた計算演算及び通信演算を並列的に処理する過程を示したフローチャートである。
さらに、図８はシミュレーションに含まれた複数個のグループに含まれた計算演算及び通信演算を並列的に処理する過程を計算演算及び通信演算の図式を通じて示した図面である。
【００２５】
図７の並列処理過程を説明する前に、基本原理を説明すれば以下の通りである。シミュレーションを実行するマスター（第１ブロック）、スレーブ（第２ブロック）を通じて、各グループに含まれた計算演算を実行させる。この場合、マスターとスレーブは、通信演算が近接したか否か及び通信依存性が解決されたか否かの２つの判断基準によって、現時点で実行する計算演算を選択する。さらに、マスターとスレーブは、選択された計算演算を実行する間、通信演算を実行しなければならない時点に到逹すると当該通信演算を実行する。一方、マスターとスレーブは、以前通信演算が実行されず中止された計算演算がある場合、当該計算演算を先ず実行する。
マスターとスレーブは、前記過程を割り当てられたシミュレーションが完了するまで繰り返して実行する。
【００２６】
前記原理を基づいてシミュレーション装置がシミュレーションを実行する具体的な過程を図７及び図８を通じて説明する。
まず、図６のグループ化過程を通じて、シミュレーションが第１グループ６１０と第２グループ６２０でグループ化されたことを前提する。
すると、シミュレーション装置は、２つの基準を通じて現在実行する計算演算を選択する。このために、シミュレーション装置は、Ｓ７１０段階で第１グループ６１０及び第２グループ６２０に含まれた計算演算のうち、次の通信演算が最も近接した計算演算を抽出する。これを図８Ａを通じて説明すると、マスターでは１番及び３番計算演算が、スレーブでは５番及び８番計算演算が抽出される。
【００２７】
次いで、シミュレーション装置は、Ｓ７２０段階で前記抽出された計算演算のうちの通信演算に依存的であり、前記通信演算がまだ実行されない演算があるのか判断する。図８Ａを通じて説明すると、マスターでは１番及び３番計算演算は共に通信演算に独立的である。これによって、マスターでは次の通信演算に最も近接した３番計算演算が現在実行される計算演算として選択される。
一方、スレーブでは８番計算演算はｄ通信演算が実行される場合に限って、実行されることができる。即ち、８番計算演算はｄ通信演算に依存的であり、前記ｄ通信演算はまだ実行されなかった。一方、スレーブの５番演算は通信演算に独立的である。これによって、スレーブでは５番演算が現在実行される計算演算として選択される。
【００２８】
マスターとスレーブで実行される計算演算が決定されると、シミュレーション装置はＳ７３０段階へ進行して決定された計算演算を実行する。さらに、シミュレーション装置はＳ７４０段階へ進行し、以前に通信演算が実行されず待機中の計算演算があるのか否かを判断する。ある場合、シミュレーション装置はＳ７８０段階へ進行して当該計算演算を選択して実行する。
一方、ない場合、シミュレーション装置はＳ７５０段階へ進行して計算演算実行中、通信演算を実行しなければならないか判断する。これは図６Ｃでｄ通信演算を実行する時点が到逹したことを意味する。この場合、シミュレーション装置はＳ７６０段階へ進行して当該通信演算を実行し、これは図８Ｂに示す。さらに、シミュレーション装置はＳ７７０段階へ進行して全ての計算演算及び通信演算が実行されたのか否かを判断し、未実行のとき、さらにＳ７１０段階へ復帰する。
【００２９】
Ｓ７１０段階へ復帰したシミュレーション装置は、Ｓ７１０段階及びＳ７２０段階を通じて前記原理と同一原理を通じて計算演算を実行する対象を選択する。より具体的に説明すれば、マスターの場合、１番計算演算が通信演算に最も近接する。これによって、マスターでは１番計算演算が現在実行される計算演算として選択される。一方、スレーブでは５番計算演算が通信演算に最も近接する。これによって、スレーブでは５番計算演算が現在実行される計算演算として選択される。マスターとスレーブでそれぞれ実行される計算演算が選択される図面は図８Ｃに示す。
さらに、計算演算実行過程はマスターで１番計算演算が終了されるまで進行し、これは図８Ｄに示す。
【００３０】
さらに、シミュレーション装置は、Ｓ７１０段階及びＳ７２０段階を経て計算演算を実行する対象を選択する。図８Ｅを参照すれば、マスターの場合、２番計算演算はまだａ通信演算実行前であるので、３番計算演算が現在実行される計算演算として選択される。さらに、スレーブの場合、８番計算演算より５番計算演算が通信演算により近接するので、５番計算演算が現在実行される計算演算として選択される。
さらに、シミュレーション装置は図８Ｆに示したように、ａ通信演算が実行されるまで実行される。
図８Ｇ及び図８Ｈも同じ原理が適用され、前記動作順序は、現在割り当てられたシミュレーションが完了するまで繰り返し実行される。
前記の本発明の第１実施形態のシミュレーション方法によれば、シミュレーションを実行するマスターとスレーブは待機時間（ｗａｉｔ）を最小化してシミュレーションを実行するので、より迅速で正確なシミュレーション性能を期待することができる。
【００３１】
図９は、本発明の第１実施形態によるシミュレーション装置の内部構造を示したブロック図である。図９に示したように、第１実施形態によるシミュレーション装置は、構造保存部９１０、実行部９２０、及び制御部９３０を含んでもよい。
構造保存部９１０は、前記シミュレーションを構成する少なくとも１つ以上のグループを保存する。
実行部９２０は、シミュレーションを実行する複数個のブロックを含むことができる。前記ブロックはコア、メモリー、バスなどを含んでもよい。
【００３２】
制御部９３０は、前記シミュレーションを、ブロック固有の機能を実行する計算演算（ｃｏｍｐｕｔａｔｉｏｎ）と互いに異なるブロック間でデータ交換を実行する通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）とに分割する。さらに、制御部９３０は、相互依存的な計算演算及び通信演算同士をグループ化する。さらに、制御部９３０は、前記計算演算と前記通信演算との間の依存度を解決するか否かによってそれぞれのグループに含まれた演算を前記ブロックを用いて実行するように制御する。
特に、前記制御部９３０は、シミュレーション実行時、任意のブロックを選択して、選択されたブロックが最も先に実行しなければならない計算演算をそれぞれのグループから抽出する。さらに、制御部９３０は、抽出された計算演算のうち、通信演算に依存的ではなく、かつ今後発生する通信演算に最も近接した計算演算を選択し、選択された計算演算を実行部９２０を通じて実行するように制御する。
さらに、制御部９３０は計算演算実行途中の通信演算実行時点の到達時、前記通信演算を実行するように制御する。
【００３３】
図１０は、シミュレーションを本発明の第１実施形態による場合、計算演算と通信演算が順次に実行される過程を示した図面である。
図１０を図２に示した従来並列シミュレーション方法と比べるとき、従来並列シミュレーション方法の場合には待機時間（ｗａｉｔ）が多いが、本発明の実施形態による場合、待機時間が減って（無くなって）シミュレーションを速やかに処理することができることを確認することができる。
【００３４】
＜第２実施形態＞
以下では分散システムにおけるシミュレーション最適化方法に対して記述する。
第２実施形態では少なくとも２つ以上の機能ブロック（コア、メモリー、バスなど）を備える複数個のノードがクラスタリング（ｃｌｕｓｔｅｒｉｎｇ）された分散システムで適用可能なシミュレーション最適化方法を提示する。
従来、分散システムではノードの間の遅延（ｌａｔｅｎｃｙ）が発生する。本発明の第２実施形態ではシャドーブロック（Ｓｈａｄｏｗ Ｂｌｏｃｋ）という仮想のブロックを導入して通信演算（ｃｏｍｍｕｎｉｃａｔｉｏｎ）を速やかに処理する方法を提案する。
【００３５】
図１１は、本発明の第２実施形態による分散システムにおけるシミュレーション最適化方案を示した図面である。
図１１に示したように、第２実施形態における分散システムは第１シャドーブロック（１１１１）を備える第１ノード１１１０と、第２シャドーブロック１１２１を備える第２ノード１１２０とを含む。
例えば、第１ノード１１１０のＡブロックが第２ノード１１２０のＤブロックに通信をリクエストする場合、第１ノード１１１０に位置した第１シャドーブロック１１１１が動作する。このために、前記第１シャドーブロック１１１１は、第１ノード１１１０のＡブロックがリクエストした演算に対してはプレ−プロセスして後調整する。これに対して具体的に説明すると、以下の通りである。
【００３６】
本発明の実施形態に導入したシャドーブロックは、少なくとも１つ以上のアドレス領域を含む。それぞれのアドレス領域は、実行する機能によって特性が区分され、本発明の例示によればメモリーアドレス領域（ｍｅｍｏｒｙ ａｄｄｒｅｓｓ ａｒｅａ）、能動デバイスアドレス領域（ａｃｔｉｖｅ ａｄｄｒｅｓｓ ａｒｅａ）、及び受動デバイスアドレス領域（ｐａｓｓｉｖｅ ａｄｄｒｅｓｓ ａｒｅａ）に区分されてもよい。前記メモリーアドレス領域は、一般的なメモリー特性、即ち、読み取り／書き込み（ｒｅａｄ/ｗｒｉｔｅ）特性を有し、能動デバイスアドレス領域は、当該デバイスのビヘイビアー（ｂｅｈａｖｉｏｒ）が予め決定されない特性を有し、受動デバイスアドレス領域は、当該デバイスのビヘイビアー（ｂｅｈａｖｉｏｒ）が予め決定された特性を有する。
【００３７】
第１ノードのＡブロックが第２ノードのＤブロックで特定演算処理をリクエストするとき、当該演算がメモリー入出力に関するものであれば、Ａブロックは、第１シャドーブロックのメモリーアドレス領域に当該命令をリクエストする。一方、第１ノードのＡブロックが第２ノードのブロックに対してプロセッシング（ｐｒｏｃｅｓｓｉｎｇ）演算をリクエストする場合、Ａブロックは、第１シャドーブロックの受動デバイスアドレス領域に当該命令をリクエストする。
【００３８】
第１ノードと第２ノードに設定されたそれぞれのシャドーブロックは以下の動作を実行する。シャドーブロックがリクエストされた演算がメモリーアドレス領域に該当する場合（即ち、メモリーに対して演算がリクエストされた場合）、シャドーブロックは読み取り（ｒｅａｄ）の場合、当該アドレスを備える場合、これをサービスし、一方、書き込み（ｗｒｉｔｅ）の場合、まずシャドーブロックに書き込んで（ｗｒｉｔｅ）、当該内容を以後に相手ノードに送信する。さらに、シャドーブロックがリクエストされた演算が能動デバイスアドレス領域に該当する場合（即ち、能動デバイスに対して演算がリクエストされた場合）、前記リクエストをバイパス（ｂｙ-ｐａｓｓ）する。さらに、シャドーブロックがリクエストされた演算が受動デバイスアドレス領域に該当する場合（即ち、受動デバイスに対して演算がリクエストされた場合）、ビヘイビアーモデル（ｂｅｈａｖｉｏｒ ｍｏｄｅｌ）によってサービスをしてこれを相手ノードの当該ブロックに伝達する。即ち、シャドーブロックは受動デバイスのビヘイビアー（ｂｅｈａｖｉｏｒ）をモデリング（ｍｏｄｅｌｉｎｇ）して当該機能を実行する。
【００３９】
ここで、前記ビヘイビアーモデリング（ｂｅｈａｖｉｏｒ ｍｏｄｅｌｉｎｇ）に対して具体的に説明する。例えば、ＡブロックがＤブロックで特定文字列を出力することを命令する場合、Ｄブロックは当該文字列を出力した後、Ａブロックに当該文字列を出力したという確認信号（ａｃｋ）を送信する。
シャドーブロックがＤブロックの動作をモデリングするというのは、本来ＤブロックがＡブロックに送信する確認信号（ａｃｋ）を備え、シャドーブロックがＡブロックから文字列出力に対する命令を受信した場合、Ａに確認信号（ａｃｋ）を直接送信することを意味する。
このように、シャドーブロックは任意のブロックが特定動作を実行した後、フィードバックすべき信号をモデリングして備える。さらに、シャドーブロックは、任意の命令を送信したブロックに該当するフィードバック信号を優先的に送信する。本発明ではこのような動作をビヘイビアーモデルリングと定義する。
【００４０】
前記内容を図式化すると、図１１の下部に示した図のように図示することができる。図１１の下部に示した図に対して説明すると、ＡブロックがＤブロックに通信をリクエストすると、第１シャドーブロック１１１１がｄ通信を先ず実行し、このような通信は３回間繰り返される（ＡｄＡｄＡｄ）。さらに、以後、第１シャドーブロック１１１１は、第２ノード１１２０に位置したＤブロックと実際通信を実行し、通信結果Ｄを受信する（ＤＤＤ）。さらに、第１シャドーブロック１１１１は、自らがプレ−プロセッシングした通信ｄと、以後受信したＤとを比べて、比較結果を用いて第１シャドーブロック１１１１における保存値を調整（ａｄｊｕｓｔ）する。
【００４１】
以下、フローチャート及び具体的な例示を通じて本発明の第２実施形態に対して記述する。
図１２は、本発明の第２実施形態によるシミュレーション動作手順を示したフローチャートである。
さらに、図１３はシャドーブロックを用いてノードの間の通信演算を実行する概念を示した図面である。
先ず、シミュレーション装置は、Ｓ１２０５段階でそれぞれのノードにシャドーブロックを生成する。シャドーブロックは、前記のように少なくとも１つ以上のアドレス領域を通じて定義される。
【００４２】
さらに、シミュレーション装置は、Ｓ１２１０段階で、シミュレーションが全て処理されたか否かを判断する。シミュレーションの全てが処理された場合、シミュレーション装置はＳ１２１５段階へ進行し、この場合、シャドーブロックは、自らが属したノードに含まれた任意のブロックから特定命令実行リクエストを受信する。前記のように、特定命令は命令の対象となるデバイスの種類に相応するアドレス領域に保存される。例えば、命令の対象となるデバイスの種類がメモリーの場合、当該命令はメモリーアドレス領域に保存される。
【００４３】
シャドーブロックはＳ１２２０段階へ進行し、命令を受信したアドレス領域が能動デバイスアドレス領域なのか否かを判断する。能動デバイスアドレス領域の場合、シャドーブロックはＳ１２５０段階へ進行して当該命令（トランザクション、ｔｒａｎｓａｃｔｉｏｎ）をバイパス（ｂｙ−ｐａｓｓ）させる。
前記の過程は図１３Ａに対応される。即ち、第１ノードに含まれたＡブロックが第２ノードに含まれたＤブロックに特定命令リクエスト（３番）時、前記Ｄブロックが能動デバイスの場合、前記命令をバイパス（５番）する。
【００４４】
さらに、図１２の説明へ復帰して、Ｓ１２２０段階で能動デバイスアドレス領域ではない場合、シャドーブロックはＳ１２３０段階へ進行して命令を受信したアドレス領域がメモリーアドレス領域なのか否かを判断する。メモリーアドレス領域の場合、シャドーブロックはＳ１２３５段階へ進行して自らが内部的に備えるキャッシングデータ（ｃａｃｈｉｎｇ ｄａｔａ）を用いてプレ−プロセッシング（ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）する。この場合、当該命令が読み取り（ｒｅａｄ）の場合、具備しているデータを送信して、書き込み（ｗｒｉｔｅ）の場合データを先ず保存して確認信号（ａｃｋ）を送信する。一方、当該命令が最初発生した読み取り（ｒｅａｄ）の場合、この場合にはシャドーブロックが備えているデータがないから、前記データを備えているブロックからデータが受信されるまで待機しなければならない。シャドーブロックは前記データが受信されると、これを保存して、以後に発生するプレ−プロセッシング過程に用いる。
【００４５】
プレ−プロセッシングを実行したシャドーブロックはＳ１２４０段階へ進行して当該命令（ｔｒａｎｓａｃｔｉｏｎ）を本来のリクエスト対象であるブロックに伝達する。すると、シャドーブロックは、Ｓ１２６０段階で前記本来のリクエスト対象であるブロックから実際処理（後処理）結果を受信して、プレ−プロセッシングしたサービスのタイミングと後処理されたサービスのタイミングとの間の誤差を確認する。ここで、タイミングの間の誤差とは、プレ−プロセッシングしたサービスを実行するのに所要されたタイミング（例えば、クロック数）と、後処理されたサービスの実行に所要されたタイミングとの差を言う。即ち、それぞれのサービスの実行に所要されたクロック数に差があり得る。
さらに、シャドーブロックは、誤差発生時、後処理されたサービスのタイミング情報を保存して、次の手順のプレ−プロセッシングに利用する。この場合、シャドーブロックがプレ−プロセッシングしたサービス内容と後処理されたサービス内容とは同一であり、ただタイミングに対する誤差だけ発生することを仮定する。
【００４６】
一方、Ｓ１２３０段階で命令を受信したアドレス領域がメモリーアドレス領域ではない場合、シャドーブロックはＳ１２４５段階へ進行して命令を受信した領域が受動デバイスアドレス領域なのか否かを判断する。受動デバイスアドレス領域の場合、シャドーブロックはＳ１２５０段階へ進行して当該デバイスに対して予め決定された動作（この場合、命令をリクエストしたブロックにリターンされる行為を意味する）にプレ−プロセッシングする。さらに、Ｓ１２４０段階へ進行してタイミングアップデート手続きを実行する。
前記過程は図１３Ｂ及び図１３Ｃに示す。即ち、シャドーブロックが特定命令リクエストを受信（４、６、８番）すると、プレ−プロセッシング（７、９番）して対象ノードの当該ブロックに前記命令を伝達（１０番）する。さらに、シャドーブロックは、対象ノードからタイミング情報を受信（１１番）して以前に保存されたタイミング情報と誤差がある場合、当該タイミング情報をアップデートする。
【００４７】
図１４は、本発明の実施形態による場合、シミュレーション性能の向上した結果を示すグラフである。
図１４に示したように、本発明の並列シミュレーション方法による場合、既存の単一シミュレーション（ｓｉｎｇｌｅ ｓｉｍｕｌａｔｉｏｎ）に比べて９１％の性能向上があることを確認することができる。
【００４８】
本明細書及び図面に開示された本発明の実施形態は、本発明の記述内容を容易に説明した発明の理解を助けるための特定例を提示したものであって、本発明の範囲を限定しようとするものではない。ここに開示された実施形態以外にも本発明の技術的思想に基づいた他の変形形態が実施可能であるということは、本発明が属する技術分野で通常の知識を有する者に自明である。
【符号の説明】
【００４９】
９１０  構造保存部
９２０  実行部
９２１  第１プロセッシングユニット
９２２  第２プロセッシングユニット
９３０  制御部
【図１】
2014522029.tif 000003
【図２】
2014522029.tif 000004
【図３】
2014522029.tif 000005
【図４】
2014522029.tif 000006
【図５】
2014522029.tif 000007
【図６Ａ】
2014522029.tif 000008
【図６Ｂ】
2014522029.tif 000009
【図６Ｃ】
2014522029.tif 000010
【図７】
2014522029.tif 000011
【図８Ａ】
2014522029.tif 000012
【図８Ｂ】
2014522029.tif 000013
【図８Ｃ】
2014522029.tif 000014
【図８Ｄ】
2014522029.tif 000015
【図８Ｅ】
2014522029.tif 000016
【図８Ｆ】
2014522029.tif 000017
【図８Ｇ】
2014522029.tif 000018
【図８Ｈ】
2014522029.tif 000019
【図９】
2014522029.tif 000020
【図１０】
2014522029.tif 000021
【図１１】
2014522029.tif 000022
【図１２】
2014522029.tif 000023
【図１３Ａ】
2014522029.tif 000024
【図１３Ｂ】
2014522029.tif 000025
【図１３Ｃ】
2014522029.tif 000026
【図１４】
2014522029.tif 000027
【国際調査報告】
2014522029.tif 000028
2014522029.tif 000029
2014522029.tif 000030
2014522029.tif 000031