図面 (/)

技術 シミュレーション方法及びシミュレーション装置

出願人 スパンションエルエルシー
発明者 立岡真人池敦
出願日 2007年2月26日 (13年11ヶ月経過) 出願番号 2007-045577
公開日 2008年9月11日 (12年5ヶ月経過) 公開番号 2008-210107
状態 特許登録済
技術分野 デバッグ/監視
主要キーワード 状態保存処理 コアモデル 復元ポイント コア番号 実行ステップ数 ステップ間隔 プログラムデータ領域 フラグ変数
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2008年9月11日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

解決手段

復元ポイント設定手段が、並列処理によりスレッドを実行する複数のコアモデルPE0,PE1間で、定期的な復元ポイントA,B,Cまたはブレイク命令連動した復元ポイントまたは任意の復元ポイントを同時に設定し、設定した復元ポイントにおけるコアモデルPE0,PE1の状態を再現するための情報を記憶手段に記憶する。

概要

背景

従来、SoC(System on a Chip)のソフトウェア開発などにシミュレータが用いられている。シミュレーション時にプロセッサの状態を再現するには再実行すればよいが、大規模ソフトウェアをシミュレータで開発するには再実行時間が長くなり、開発時間が膨大なものになってしまう。

そこで、ある時点で復元ポイントを設定して、プロセッサの状態の再現に必要な情報(メモリレジスタバッファ、その他プロセッサ内部の情報、周辺回路内のデータやステータス情報など)を保存し、後から保存した情報を読み出してプロセッサの動作を再現する技術が知られている(例えば、特許文献1参照)。

復元ポイントで情報を保存する技術は、近年登場したマルチプロセッサ、または複数のCPU(Central Processing Unit)コアを含むマルチコアプロセッサ用のソフトウェアを開発する際にも重要となってきている。

図8は、復元ポイントを用いた従来のシミュレーション方法シングルスレッドで動作するマルチコアプロセッサに適用した場合の処理の流れを示す図である。
以下では、2つのプロセッサコアに対応するコアモデルPE0,PE1を有するマルチコアモデルのシミュレーションを例にして説明する。

なお、シミュレーションには、命令セットシミュレータ(ISS:Instruction Set Simulator)を用いる。
シミュレーションを開始すると、実行判定を行う(ステップS80)。実行する場合には、まず、コアモデルPE0,PE1のローカルな処理を実行する前に、コアモデルPE0,PE1の両方で共有する周辺機器などにおける復元ポイント(共有復元ポイント)を設定してその状態(周辺機器が使用しているメモリの情報など)を保存する(ステップS81)。

次に、コアモデルPE0で復元ポイントを設定してコアモデルPE0の状態を保存した後(ステップS82)、コアモデルPE0の命令実行を行う(ステップS83)。
ISSにおいて命令実行はexe_loopと呼ばれる以下のような関数で行われる。

図9は、exe_loop関数の処理を示すフローチャートである。
ここでは、exe_loop関数に実行命令数(実行ステップ)を指定して1命令毎実行している例を示している。

なお、exe_loop内では命令数アーキテクチャに依存するので1命令でなく複数命令同時実行してもかまわない。ここでは簡略化のため、1命令を1ループとしている。

まず、ローカルな実行ステップ(LSE)を0とする(ステップS821)。次に、LSEが、ユーザが設定したステップ数(US)と等しいか否かを判定する(ステップS822)。判定の結果、等しければコアモデルPE0の命令実行を終了し、等しくなければ、命令フェッチを行い(ステップS823)、命令をデコードして実行する(ステップS824)。その後、LSEをインクリメントし(ステップS825)、例外処理を行った後(ステップS826)、ステップS822からの処理を繰り返す。

図8に戻り、コアモデルPE0の命令実行が終了すると、続いてコアモデルPE1で復元ポイントを設定してコアモデルPE1の状態を保存し(ステップS84)、図9と同様にコアモデルPE1の命令実行を行う(ステップS85)。その後ステップS80に戻り、上記の各処理を繰り返す。

図10は、マルチコアプロセッサのシングルスレッド動作の例を示す図である。
シングルスレッド動作の場合、コアモデルPE0,PE1は処理単位(図9のUS)毎の命令実行を、例えば交互に繰り返している。また、コアモデルPE0,PE1の各処理の前には復元ポイントA0,B0,C0,A1,B1,C1が設定されており、そこでの各コアPE0,PE1の状態の保存が行われている。
特開平8−185341号公報

概要

並列処理を行うマルチコアプロセッサまたはマルチプロセッサまたはマルチマスタスレーブに適用するソフトウェア開発に適したシミュレーション方法を提供する。復元ポイント設定手段が、並列処理によりスレッドを実行する複数のコアモデルPE0,PE1間で、定期的な復元ポイントA,B,Cまたはブレイク命令連動した復元ポイントまたは任意の復元ポイントを同時に設定し、設定した復元ポイントにおけるコアモデルPE0,PE1の状態を再現するための情報を記憶手段に記憶する。

目的

本発明はこのような点に鑑みてなされたものであり、並列処理を行うマルチコアプロセッサまたはマルチプロセッサまたはマルチマスタスレーブに適用するソフトウェア開発に適したシミュレーション方法及びシミュレーション装置を提供することを目的とする。

効果

実績

技術文献被引用数
0件
牽制数
2件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

復元ポイント設定手段が、並列処理によりスレッドを実行する複数のコアモデル間で、復元ポイントを同時に設定し、前記復元ポイントにおける前記コアモデルの状態を再現するための情報を記憶手段に記憶することを特徴とするシミュレーション方法

請求項2

実行した一定の命令数あるいはサイクル数をもとに、複数の前記コアモデル間で同時に定期的に前記復元ポイントを設定することを特徴とする請求項1記載のシミュレーション方法。

請求項3

前記記憶手段は、所定数の前記復元ポイントにおける前記情報を記憶すると、過去の前記情報を新しい前記復元ポイントにおける情報で順次上書きしていくことを特徴とする請求項1または2に記載のシミュレーション方法。

請求項4

複数の前記コアモデルのいずれかにおいて、命令の実行中に復元ポイントが設定された場合、連動して他の前記コアモデルにおいても前記復元ポイントを設定することを特徴とする請求項1乃至3のいずれか一項に記載のシミュレーション方法。

請求項5

ブレイク命令と連動して前記復元ポイントを設定することを特徴とする請求項4記載のシミュレーション方法。

請求項6

ユーザの設定により、任意時点で前記復元ポイントを設定することを特徴とする請求項4または5記載のシミュレーション方法。

請求項7

ユーザの設定により、複数の前記コアモデル間で同時に任意のタイミングで前記復元ポイントを設定することを特徴とする請求項1乃至6のいずれか一項に記載のシミュレーション方法。

請求項8

前記情報を圧縮して前記記憶手段に記憶することを特徴とする請求項1乃至7のいずれか一項に記載のシミュレーション方法。

請求項9

前記複数のコアモデルは、マルチプロセッサにおけるプロセッサマルチコアプロセッサにおけるプロセッサコアまたは、マルチマスタスレーブにおけるマスタシミュレーションモデルであることを特徴とする請求項1乃至8のいずれか一項に記載のシミュレーション方法。

請求項10

並列処理によりスレッドを実行する複数のコアモデル間で、復元ポイントを同時に設定する復元ポイント設定手段と、前記復元ポイントにおける前記コアモデルの状態を再現するための情報を記憶する記憶手段と、を有することを特徴とするシミュレーション装置

技術分野

0001

本発明はシミュレーション方法及びシミュレーション装置に関し、特にマルチコアプロセッサマルチプロセッサまたはマルチマスタスレーブに適したソフトウェア開発用のシミュレーション方法及びシミュレーション装置に関する。

背景技術

0002

従来、SoC(System on a Chip)のソフトウェア開発などにシミュレータが用いられている。シミュレーション時にプロセッサの状態を再現するには再実行すればよいが、大規模ソフトウェアをシミュレータで開発するには再実行時間が長くなり、開発時間が膨大なものになってしまう。

0003

そこで、ある時点で復元ポイントを設定して、プロセッサの状態の再現に必要な情報(メモリレジスタバッファ、その他プロセッサ内部の情報、周辺回路内のデータやステータス情報など)を保存し、後から保存した情報を読み出してプロセッサの動作を再現する技術が知られている(例えば、特許文献1参照)。

0004

復元ポイントで情報を保存する技術は、近年登場したマルチプロセッサ、または複数のCPU(Central Processing Unit)コアを含むマルチコアプロセッサ用のソフトウェアを開発する際にも重要となってきている。

0005

図8は、復元ポイントを用いた従来のシミュレーション方法をシングルスレッドで動作するマルチコアプロセッサに適用した場合の処理の流れを示す図である。
以下では、2つのプロセッサコアに対応するコアモデルPE0,PE1を有するマルチコアモデルのシミュレーションを例にして説明する。

0006

なお、シミュレーションには、命令セットシミュレータ(ISS:Instruction Set Simulator)を用いる。
シミュレーションを開始すると、実行判定を行う(ステップS80)。実行する場合には、まず、コアモデルPE0,PE1のローカルな処理を実行する前に、コアモデルPE0,PE1の両方で共有する周辺機器などにおける復元ポイント(共有復元ポイント)を設定してその状態(周辺機器が使用しているメモリの情報など)を保存する(ステップS81)。

0007

次に、コアモデルPE0で復元ポイントを設定してコアモデルPE0の状態を保存した後(ステップS82)、コアモデルPE0の命令実行を行う(ステップS83)。
ISSにおいて命令実行はexe_loopと呼ばれる以下のような関数で行われる。

0008

図9は、exe_loop関数の処理を示すフローチャートである。
ここでは、exe_loop関数に実行命令数(実行ステップ)を指定して1命令毎実行している例を示している。

0009

なお、exe_loop内では命令数アーキテクチャに依存するので1命令でなく複数命令同時実行してもかまわない。ここでは簡略化のため、1命令を1ループとしている。

0010

まず、ローカルな実行ステップ(LSE)を0とする(ステップS821)。次に、LSEが、ユーザが設定したステップ数(US)と等しいか否かを判定する(ステップS822)。判定の結果、等しければコアモデルPE0の命令実行を終了し、等しくなければ、命令フェッチを行い(ステップS823)、命令をデコードして実行する(ステップS824)。その後、LSEをインクリメントし(ステップS825)、例外処理を行った後(ステップS826)、ステップS822からの処理を繰り返す。

0011

図8戻り、コアモデルPE0の命令実行が終了すると、続いてコアモデルPE1で復元ポイントを設定してコアモデルPE1の状態を保存し(ステップS84)、図9と同様にコアモデルPE1の命令実行を行う(ステップS85)。その後ステップS80に戻り、上記の各処理を繰り返す。

0012

図10は、マルチコアプロセッサのシングルスレッド動作の例を示す図である。
シングルスレッド動作の場合、コアモデルPE0,PE1は処理単位図9のUS)毎の命令実行を、例えば交互に繰り返している。また、コアモデルPE0,PE1の各処理の前には復元ポイントA0,B0,C0,A1,B1,C1が設定されており、そこでの各コアPE0,PE1の状態の保存が行われている。
特開平8−185341号公報

発明が解決しようとする課題

0013

しかし、従来のシミュレーション方法は、シングルコアを対象にしているものが主であり、マルチコアプロセッサやマルチプロセッサまたはマルチマスタスレーブに適したものではなかった。例えば、図8図10で示したようなシングルスレッドに対応した復元ポイントでの状態の保存の仕方では、複数のコアモデルが並列処理したときに発生するデッドロックや、I/O競合共有変数多重アクセスなどを発見することができなかった。

0014

本発明はこのような点に鑑みてなされたものであり、並列処理を行うマルチコアプロセッサまたはマルチプロセッサまたはマルチマスタスレーブに適用するソフトウェア開発に適したシミュレーション方法及びシミュレーション装置を提供することを目的とする。

課題を解決するための手段

0015

本発明者らは、復元ポイント設定手段が、並列処理によりスレッドを実行する複数のコアモデル間で、復元ポイントを同時に設定し、前記復元ポイントにおける前記コアモデルの状態を再現するための情報を記憶手段に記憶することを特徴とするシミュレーション方法を提案する。

発明の効果

0016

本発明によれば、複数のコアモデル間で復元ポイントを同時に設定し、各コアモデルの状態を保存できるので、マルチコアプロセッサ(または、マルチプロセッサもしくはマルチマスタスレーブ)用の並列処理を行うソフトウェアの開発において、デバッグで重要なデッドロックやIO競合、共有変数の多重アクセスをシミュレーションで容易に発見することができる。

発明を実施するための最良の形態

0017

以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、本実施の形態のシミュレーション方法の概要を説明する図である。
本実施の形態のシミュレーション方法は、マルチコアプロセッサ用の並列処理を行うソフトウェアを実機実装する前に、シミュレータにより検証するものである。

0018

コアモデルPE0,PE1は、実装するマルチコアプロセッサの各CPUコアに対応するシミュレーションモデルである。以下では、2つのコアモデルPE0,PE1を用いた場合について説明するが、この数に限定されるものではない。

0019

シミュレーションの際には、図1のように、コアモデルPE0,PE1に対して、ISSを用いて、それぞれスレッドを並列処理させる。横軸実行ステップ数である。
シミュレータは、所定の実行ステップ数(またはシミュレータサイクル数)毎定期的に、コアモデルPE0,PE1に対して両方同時に復元ポイントを設定する。図1の例では、復元ポイントA,B,Cを順番に設定している。そして、この復元ポイントA,B,Cでの各コアモデルPE0,PE1の状態を再現するために必要な情報を、記憶手段に記憶する(以下、単にコアモデルの状態を保存するという場合もある)。

0020

ここで保存する情報は、各コアモデルPE0,PE1が、実行する前のメモリデータや、レジスタとコアモデルPE0,PE1の内部情報データなどである。なお、メモリデータは、プログラムデータ領域の全領域など、その時点でコアモデルPE0,PE1がアクセスした領域を全て保存対象とする。また、コアモデルPE0,PE1の内部情報データは、コアモデルPE0,PE1内のレジスタやデータキャッシュ命令キャッシュバッファデータなどである。

0021

復元ポイントA,B,Cでは、それぞれ異なる記憶領域が使用される。復元ポイントCまでの状態の保存が終わると、次は再び復元ポイントAが設定され、過去の復元ポイントAの状態が上書きされる。これにより、図1に示すように、右端の復元ポイントCの状態を保存した時点を現在とすると、現在復帰できる復帰可能域は、復元ポイントAまでとなる。しかし、このように記憶領域を限定することで、保存する情報量を削減でき、コンピュータのメモリを節約できる。なお、定期的な復元ポイントの数は3つに限定されるものではない。

0022

ところで、復元ポイントは、上記のような定期的なもの以外に、あるコアモデル(例えばPE0)の命令実行中に図1のようにブレイク命令が設定されている場合、そのブレイク命令と連動した復元ポイントを、他のコアモデル(例えばPE1)にも同時に設定して、そのときの状態を保存するようにしてもよい。

0023

また、復元ポイントは、ユーザが任意の位置に設定するようにしてもよい。
上記のように復元ポイントを複数のコアモデルで同時に設定して、そのときの状態を保存することで、並列処理を行うソフトウェア開発の際のデバッグ時に、デッドロックやI/O共有変数の多重アクセスを見つけることが可能となるほか、並列プログラムのタイミング性能の解析や最適化に役立つ。

0024

以下、本実施の形態のシミュレーション方法の詳細を説明する。
図2は、シミュレーションを実施するシミュレーション装置のハードウェア構成例である。

0025

シミュレーション装置10は例えばコンピュータであり、マルチコアCPU11、ROM(Read Only Memory)12、SDRAM(Synchronous Dynamic Random Access Memory)13、HDD(Hard Disk Drive)14、グラフィック処理部15、入力I/F(Interface)16などによって構成され、これらはバス17を介して相互に接続されている。

0026

ここで、マルチコアCPU11は、ROM12や、HDD14に格納されているプログラムや、各種データに応じて各部を制御し、複数のコアモデル間で同時に復元ポイントを設定する処理や、状態を記憶する記憶領域(記憶デバイス)を選択する処理など、前述した本実施の形態のシミュレーション機能を実行する。

0027

ROM12は、マルチコアCPU11が実行する基本的なプログラムやデータを格納している。
SDRAM13は、マルチコアCPU11が実行途中のプログラムや、演算途中のデータを格納している。また、復元ポイントにおける各コアモデルの状態を保存する。

0028

HDD14は、マルチコアCPU11が実行するOS(Operation System)や、各種アプリケーションプログラム、各種データを格納する。
グラフィック処理部15には、表示装置として例えば、ディスプレイ15aが接続されており、マルチコアCPU11からの描画命令に従って、ディスプレイ15a上に、シミュレーション実行時の各種情報をユーザに提示する。

0029

入力I/F16には、マウス16aやキーボード16bなどの入力装置が接続されており、ユーザにより入力された情報を受信し、バス17を介してマルチコアCPU11に伝送する。

0030

上記のようなシミュレーション装置10を用いて、マルチコアシミュレータが以下のようにソフトウェアで実現される。
図3は、マルチコアシミュレータの構成例である。

0031

マルチコアシミュレータは、main関数で表現され、コアモデルPE0,PE1,…,PEn、メモリの他、I/OモデルであるIRC(InterRupt Controller)、UART(Universal Asynchronous Receiver Transmitter)、DMA(Direct Memory Access)、タイマなどで構成される。

0032

このようなマルチコアシミュレータを構成するために、図2のマルチコアCPU11は、n以上のコア数のCPUコアを有していることが好ましい。
次に、上記のようなシミュレーション装置10、マルチコアシミュレータを用いたシミュレーション方法を説明する。

0033

図4は、定期的な復元ポイントの設定処理を示すフローチャートである。
マルチコアCPU11は、実行判定を行う(ステップS10)。実行する場合には、まず、全てのコアモデルPE0〜PEnで共有するI/Oモデルなどにおける復元ポイント(共有復元ポイント)を設定して、その状態をSDRAM13または、マルチコアCPU11のキャッシュメモリ(図示せず)に保存する(ステップS11)。

0034

次に、コアモデルPE0〜PEn毎に復元ポイントを設定して状態を保存する処理を行う(ステップS12−0,S12−1,…,S12−n)。ここでの処理は、ステップS12−nの処理部分に詳細に図示している(ステップS12−0,S12−1なども同様である)。

0035

まず、プログラムカウンタ値PCが定期の復元ポイントの値Sと同一か否かを判断して(ステップS12a)、同一であれば各コアモデルPE0〜PEnの状態を、SDRAM13または、マルチコアCPU11のキャッシュメモリに保存する。そして、復元ポイントのシリアル番号GCPnumber〔n〕〔x〕にプログラムカウンタ値PCを入力する(ステップS12b)。

0036

なお、“〔n〕〔x〕”はコアモデルPEnのx番目の復元ポイントであることを示している。保存した情報は、上記のようなコア番号(1〜n)を含む、復元ポイントのシリアル番号(=復元ポイントのプログラムカウンタ値PC)と対応付けられて管理される。

0037

続いて、定期の復元ポイントの値Sに、次の復元ポイントの値Snextを入力するとともに、シリアル番号GCPnumber〔n〕〔x〕の変数xをプラス1する(ステップS12c)。Snextは、例えば配列で与えられており、所定の実行ステップ間隔毎の値(例えば、100,200,300,…)が設定されている。

0038

ステップS12aで、プログラムカウンタ値PCが復元ポイントの値Sと同一でない場合、あるいはステップS12cの後、各コアモデルPE0〜PEnによる命令実行が行われる(ステップS13−0〜S13−n)。ここでの処理は、図9で示した処理と同一である。

0039

ステップS13−0〜S13−nの処理が終了すると、ステップS10の処理に戻り上記の処理を繰り返す。
このような処理により、定期的な復元ポイントをコアモデルPE0〜PEnで同時に設定することができ、復元ポイントでの状態を保存することができる。復元時には、シリアル番号GCPnumber〔n〕〔x〕を指定して、その状態をSDRAM13などから読み出すことで、復元したい復元ポイントを特定してコアモデルPE0〜PEnの状態を再現できる。

0040

次に、コアモデルPE0〜PEnの命令実行中にブレイクが設定されたときに連動して復元ポイントを設定する処理を説明する。
図5は、ブレイクが設定された際に、復元ポイントを設定して状態を保存する処理を示すフローチャートである。

0041

ISSによる命令実行では、exe_loop関数に実行命令数(実行ステップ)を指定して例えば1命令毎実行する。
なお、exe_loop内では命令数はアーキテクチャに依存するので1命令でなく複数命令を同時実行してもかまわない。ここでは簡略化のため、1命令を1ループとしている。

0042

ここでは、コアモデルPE0の命令実行中の処理を示している。他のコアモデルPE1〜PEnの動作も同様である。
まず、ローカルな実行ステップ(LSE)を0とする(ステップS20)。次に、LSEが、ユーザが設定したステップ数(US)と等しいか否かを判定する(ステップS21)。判定の結果、等しければコアモデルPE0の命令実行を終了し、等しくなければ、命令フェッチを行い(ステップS22)、命令をデコードする(ステップS23)。

0043

次に、ブレイク命令が設定されているか否かを判定する(ステップS24)。コアモデルPE0に対してブレイク命令が設定されている場合には、ステップS25の処理に進み、ブレイク命令が設定されていない場合にはステップS26の処理に進む。

0044

ステップS25の処理では、ブレイク命令と連動して復元ポイントを設定するか否かを示すフラグCPFの状態を判定し、オンであればフラグCPFを“all”とする(ステップS27)。このフラグCPFは、全てのコアモデルPE0〜PEnで参照可能なフラグ変数であり、ここでのステップS27での変更は、他のコアモデルPE1〜PEnに通知される。

0045

続いてコアモデルPE0の状態を保存し、シリアル番号GCPnumber〔0〕〔x〕にプログラムカウンタ値PCを入力して(ステップS28)、ステップS29の処理に進む。ここで“〔0〕〔x〕”は、コアモデルPE0のx番目の復元ポイントであることを示している。

0046

一方、ブレイク命令が設定されていない場合、ステップS26の処理では、フラグCPFが“all”か否かを判定し、“all”である場合には、何れかのコアモデルPE1〜PEnで復元ポイントが設定されたことを示しているので、前述のステップS28の処理に進み、モデルコアPE0においても状態を保存する。

0047

なお、フラグCPFの設定は、初期設定で決めたり、ソフトウェア的に別のプログラムで設定する場合や、ブレイク命令の際にユーザがGUI(Graphical User Interface)などで設定する場合、ブレイク命令に含める場合などがある。

0048

ステップS26の処理で、フラグCPFが“all”でない場合、またはステップS25の処理でフラグCPFがオンでないと判定された場合には、ステップS29の処理に進み、デコードされた命令を実行する。その後、LSEをインクリメントし(ステップS30)、例外処理を行った後(ステップS31)、ステップS21からの処理を繰り返す。

0049

上記のようなフラグCPFを用いることで、複数のコアモデルPE0〜PEnのいずれかで復元ポイントが設定された場合、それと同時に他のコアモデルPE0〜PEnでも復元ポイントを設定して状態を保存することができる。

0050

なお、上記では、ブレイク命令と連動して復元ポイントを設定した場合について説明したが、命令のステップ実行中に、ユーザがGUIなどで任意に復元ポイントを設定するようにしてもよい。例えば、任意に復元ポイントが設定された場合、上記のフラグCPFを用いて、全てのコアモデルPE0〜PEnで同時に復元ポイントを設定し、状態を保存することができる。

0051

また、フラグCPFの代わりに、あるコアモデルPE0〜PEnで復元ポイントを設定した実行ステップ数やサイクル数を、他のコアモデルPE0〜PEnに通知して同時に復元ポイントを設定して状態を保存するようにしてもよい。

0052

また、任意の復元ポイントは、各コアモデルPE0〜PEnの命令実行の前に設定してもよい。
図6は、任意の復元ポイントを設定する際の処理を示すフローチャートである。

0053

ステップS40、S41は、図4のステップS10、S11の処理と同様である。ステップS41の後、ユーザからの任意の復元ポイントの設定があったか否かを判定し(ステップS42)、復元ポイントが設定された場合には、コアモデルPE0〜PEnの状態を保存し(ステップS43)、ステップS44−0,S44−1,…,S44−nの処理に進む。任意の復元ポイントが設定されない場合には、そのままステップS44−0〜S44−nの処理に進む。ステップS44−0〜S44−nは定期的な復元ポイントの設定及び状態保存処理で、図4のステップS12−0〜S12−nの処理と同じである。その後、各コアモデルPE0〜PEnの命令実行処理を行い(ステップS45−0,S45−1,…,S45−n)、ステップS40からの処理を繰り返す。

0054

図6のように、任意の復元ポイントは、定期的な復元ポイントの設定と組み合わせて設定することができる。図示は省略するが、同様に、図5で示したようなブレイク命令と連動する復元ポイントの設定と、定期的な復元ポイントまたは任意の復元ポイントの設定を組み合わせるようにしてもよい。

0055

上記のように設定した各種の復元ポイントで、コアモデルPE0〜PEnの状態を再現したい場合には、図3で示したようなシミュレータ内のコアモデルPE0〜PEnの内部データやメモリまたはI/Oモデル内の情報を全て破棄して、復帰したい復元ポイントの情報を、SDRAM13などから読み出し、シミュレータ内の情報を上書きする。

0056

なお、上記の各種の復元ポイントで保存する情報を、圧縮してから保存するようにしてもよい。
また、上記では、アクセス速度の面から復元ポイントでは情報をSDRAM13やキャッシュに保存するとして説明したが、メモリ消費が大きいとマルチコアCPU11が判断すれば、HDD14に保存することも可能である。

0057

また、本実施の形態のシミュレーション方法では、全てのコアモデルPE0〜PEnに同時に復元ポイントを設定することを特徴としているが、ユーザの所望により、コアモデルPE0〜PEnに個別に復元ポイントを設定して、状態を保存するようにしてもよい。

0058

また、コアモデルPE0〜PEnの例として、マルチコアプロセッサのプロセッサコアを例にして説明したが、マルチプロセッサのプロセッサまたはマルチマスタスレーブとマスタ(CPUやDMA)としてもよい。

0059

例として、マルチマスタスレーブに関して、定期の復元ポイントを保存する際の処理を説明する。
図7は、マルチマスタスレーブのマスタをコアモデルで示した際の定期の復元ポイントの設定処理を示す図である。

0060

まず実行判定を行い(ステップS50)、実行する場合には、まず、マスタ(CPUまたはDMA)のシミュレーションモデルであるコアモデルPE0〜PEnで共有するI/Oモデル(スレーブ)などにおける復元ポイント(共有復元ポイント)を設定して、その状態をSDRAM13または、マルチコアCPU11のキャッシュメモリ(図示せず)に保存する(ステップS51)。

0061

次に、図4で示したようなコアモデルPE0〜PEn毎に定期の復元ポイントを設定してPE0の状態を保存する処理を行う(ステップS52−0,S52−1,…,S52−n)。

0062

続いて、各コアモデルPE0〜PEnの命令実行を行う(ステップS53−0,S53−1,…,S53−n)。このとき、例えば、コアモデルPEnのスレーブとなっているI/Oモデルがあった場合、コアモデルPEnはスレーブをコールし、スレーブを実行させる。スレーブの命令実行の終了後には、スレーブを起動したマスタにバックリターン)する(ステップS54)。

0063

マルチマスタスレーブに対応したコアモデルを用いた、ブレイク命令に連動した復元ポイントの設定や、ユーザの任意で復元ポイントの設定も、マルチコアプロセッサの場合と同様である。

0064

(付記1)復元ポイント設定手段が、並列処理によりスレッドを実行する複数のコアモデル間で、復元ポイントを同時に設定し、
前記復元ポイントにおける前記コアモデルの状態を再現するための情報を記憶手段に記憶することを特徴とするシミュレーション方法。

0065

(付記2) 実行した一定の命令数あるいはサイクル数をもとに、複数の前記コアモデル間で同時に定期的に前記復元ポイントを設定することを特徴とする付記1記載のシミュレーション方法。

0066

(付記3) 前記記憶手段は、所定数の前記復元ポイントにおける前記情報を記憶すると、過去の前記情報を新しい前記復元ポイントにおける情報で順次上書きしていくことを特徴とする付記1または2に記載のシミュレーション方法。

0067

(付記4) 複数の前記コアモデルのいずれかにおいて、命令の実行中に復元ポイントが設定された場合、連動して他の前記コアモデルにおいても前記復元ポイントを設定することを特徴とする付記1乃至3のいずれか一項に記載のシミュレーション方法。

0068

(付記5) 複数の前記コアモデルで参照可能なフラグ変数によって、ある前記コアモデルで前記復元ポイントが設定されたことを他の前記コアモデルに通知することを特徴とする付記4記載のシミュレーション方法。

0069

(付記6)ブレイク命令と連動して前記復元ポイントを設定することを特徴とする付記4または5記載のシミュレーション方法。
(付記7) ユーザの設定により、任意時点で前記復元ポイントを設定することを特徴とする付記4乃至6のいずれか一項に記載のシミュレーション方法。

0070

(付記8) ユーザの設定により、複数の前記コアモデル間で同時に任意のタイミングで前記復元ポイントを設定することを特徴とする付記1乃至7のいずれか一項に記載のシミュレーション方法。

0071

(付記9) 前記情報を圧縮して前記記憶手段に記憶することを特徴とする付記1乃至8のいずれか一項に記載のシミュレーション方法。
(付記10) 前記複数のコアモデルは、マルチプロセッサにおけるプロセッサ、マルチコアプロセッサにおけるプロセッサコアまたは、マルチマスタスレーブにおけるマスタのシミュレーションモデルであることを特徴とする付記1乃至9のいずれか一項に記載のシミュレーション方法。

0072

(付記11) 記憶した前記情報は、前記コアモデルのコア番号及び前記復元ポイントが設定されたときのプログラムカウンタ値と対応付けられて管理されていることを特徴とする付記1乃至10のいずれか一項に記載のシミュレーション方法。

0073

(付記12)並列処理によりスレッドを実行する複数のコアモデル間で、復元ポイントを同時に設定する復元ポイント設定手段と、
前記復元ポイントにおける前記コアモデルの状態を再現するための情報を記憶する記憶手段と、
を有することを特徴とするシミュレーション装置。

図面の簡単な説明

0074

本実施の形態のシミュレーション方法の概要を説明する図である。
シミュレーションを実施するシミュレーション装置のハードウェア構成例である。
マルチコアシミュレータの構成例である。
定期的な復元ポイントの設定処理を示すフローチャートである。
ブレイクが設定された際に、復元ポイントを設定して状態を保存する処理を示すフローチャートである。
任意の復元ポイントを設定する際の処理を示すフローチャートである。
マルチマスタスレーブのマスタをコアモデルで示した際の定期の復元ポイントの設定処理を示す図である。
復元ポイントを用いた従来のシミュレーション方法をシングルスレッドで動作するマルチコアプロセッサに適用した場合の処理の流れを示す図である。
exe_loop関数の処理を示すフローチャートである。
マルチコアプロセッサのシングルスレッド動作の例を示す図である。

符号の説明

0075

PE0,PE1コアモデル
A,B,C 復元ポイント

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ