(57)【要約】【課題】  複雑な構成のシステムに対応しつつ、システムシミュレータの構成を柔軟に変更可能とする。【解決手段】  システムシミュレータ１０Ａを、ＣＰＵの動作をシミュレートするインストラクションセットシミュレータ１１、バスの動作をシミュレートするバスシミュレータ１３、ペリフェラルの動作をシミュレートするペリフェラルシミュレータ１２の３種類で構成し、各シミュレータ間で互いの状態を参照・変更可能な各インターフェース１４〜１６をそれぞれ設ける。【選択図】  図１
2007011720.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットシステム上で動作するソフトウェアを検証するために用いられ、該ターゲットシステムの動作を、該ターゲットシステムとは異なるシステム上で仮想的に実行するシステムシミュレータであって、
該ターゲットシステムにおける中央演算処理装置（ＣＰＵ）の動作をシミュレートする一または複数のインストラクションセットシミュレータと、
ペリフェラルの動作をシミュレートする複数のペリフェラルシミュレータと、
該ＣＰＵと該ペリフェラルを接続するバスの動作をシミュレートする複数のバスシミュレータとを有すると共に、
該インストラクションセットシミュレータと該バスシミュレータの間の相互の状態を参照および変更可能とする第１インターフェースと、
該バスシミュレータと該ペリフェラルシミュレータの間の相互の状態を参照および変更可能とする第２インターフェースと、
該インストラクションセットシミュレータと該ペリフェラルシミュレータの間の相互の状態を参照および変更可能とする第３インターフェースとを有するシステムシミュレータ。
【請求項２】
前記ターゲットシステムのブロック構成が設定された設定ファイルにしたがって必要な各シミュレータを確保し、該必要な各シミュレータ間の各インターフェースを設定可能とするシミュレータマネージャーをさらに有する請求項１に記載のシステムシミュレータ。
【請求項３】
前記ペリフェラルシミュレータは、メモリ、割り込みコントローラ、タイマ、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）、液晶表示コントローラ（ＬＣＤＣ）、バス間を接続するブリッジ（Ｂｒｉｄｇｅ）、Ｉ／Ｏコントローラ、発光ダイオード表示器またはステッピングモータなどの周辺機器の動作をシミュレートする請求項１に記載のシステムシミュレータ。
【請求項４】
前記第１インターフェースは、前記ＣＰＵからバスへのアクセスをシミュレート可能とする請求項１に記載のシステムシミュレータ。
【請求項５】
前記インストラクションセットシミュレータは、メモリ空間またはＩ／Ｏ空間にアクセスしたい場合に、前記第１インターフェースを介して対応するバスシミュレータを呼び出し、
リードアクセスの場合、該インストラクションセットシミュレータから該バスシミュレータにアドレスを指定し、該バスシミュレータは対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出してデータを取得して、該インストラクションセットシミュレータに該データを渡し、
ライトアクセスの場合、該インストラクションセットシミュレータから該バスシミュレータにアドレスとデータを指定し、該バスシミュレータは対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出して該データを設定する請求項１または４に記載のシステムシミュレータ。
【請求項６】
前記第１インターフェースは、前記インストラクションセットシミュレータがアクセスしようとしたときに前記バスシミュレータが他のインストラクションセットシミュレータによって使用されている場合に、アクセスが重複しないように、優先度が低いシミュレータからの要求を保留するように設定可能とされている請求項１、４および５のいずれかに記載のシステムシミュレータ。
【請求項７】
前記第２インターフェースは、バスとペリフェラルとの間のアクセスをシミュレート可能とする請求項１または４に記載のシステムシミュレータ。
【請求項８】
前記バスシミュレータは、前記インストラクションセットシミュレータからアクセス要求を受けた場合、対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出し、
リードアクセスの場合、該バスシミュレータは該ペリフェラルシミュレータからデータを読み出して該インストラクションセットシミュレータにデータを渡し、
ライトアクセスの場合、該バスシミュレータは該ペリフェラルシミュレータにデータを設定する請求項１または７に記載のシステムシミュレータ。
【請求項９】
前記バスシミュレータは、ペリフェラルシミュレータから他のペリフェラルシミュレータへのアクセス要求を受けた場合、対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出し、
リードアクセスの場合、該バスシミュレータは対象ペリフェラルシミュレータからデータを読み出して、要求を行ったペリフェラルシミュレータにデータを渡し、
ライトアクセスの場合、該バスシミュレータは対象ペリフェラルシミュレータにデータを設定する請求項１、７および８のいずれかに記載のシステムシミュレータ。
【請求項１０】
前記第２インターフェースは、前記ペリフェラルシミュレータがバスシミュレータにアクセスしようとしたときに該バスシミュレータが他のシミュレータによって使用されている場合、アクセスが重複しないように、優先度が低いシミュレータからの要求を保留するように設定可能とされている請求項１および７〜９のいずれかに記載のシステムシミュレータ。
【請求項１１】
前記第３インターフェースは、前記ペリフェラルシミュレータから前記インストラクションセットシミュレータへの割り込みをシミュレート可能とする請求項１，４および７のいずれかに記載のシステムシミュレータ。
【請求項１２】
前記ペリフェラルシミュレータは、内部状態の更新に応じて、前記インストラクションセットシミュレータに対して前記第３インターフェースを介して割り込みをかける請求項１１に記載のシステムシミュレータ。
【請求項１３】
前記シミュレータマネージャは、前記インストラクションセットシミュレータ、前記バスシミュレータおよび前記ペリフェラルシミュレータの各処理速度を制御可能とする請求項２に記載のシステムシミュレータ。
【請求項１４】
前記シミュレータマネージャは、前記各処理速度を制御するために、前記インストラクションセットシミュレータ、前記バスシミュレータおよび前記ペリフェラルシミュレータのうちの少なくともいずれかのシミュレータの動作を一時的に停止させる請求項１３に記載のシステムシミュレータ。
【請求項１５】
前記ターゲットシステムはパーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）上で動作するアプリケーションプログラムとして起動される請求項１または２に記載のシステムシミュレータ。
【請求項１６】
前記シミュレータマネージャーおよび前記各シミュレータが独立して動作するスレッドであって、前記第１〜第３インターフェースにより、共通メモリを介して状態の参照または変更が行われるか、または該各シミュレータが関数であって、該シミュレータマネージャーによってシミュレータ関数が呼び出される請求項１５に記載のシステムシミュレータ。
【請求項１７】
前記第１〜第３インターフェースは、状態の参照および変更が可能な共有メモリ、関数呼び出しまたはメッセージ授受によって実現される請求項１または１６に記載のシステムシミュレータ。
【請求項１８】
前記各シミュレータは、前記各インターフェースとして、該各シミュレータの接続関係を管理するテーブルを有する請求項１または１７に記載のシステムシミュレータ。
【請求項１９】
前記インストラクションセットシミュレータは、前記インターフェースとして、接続されているバスシミュレータの種類を管理するための接続テーブルを有し、前記インターフェースとして、割り込みがどのシミュレータから接続されているかを管理するための割り込みテーブルとを有する請求項１８に記載のシステムシミュレータ。
【請求項２０】
前記ペリフェラルシミュレータは、前記インターフェースとして、どのシミュレータがどのような目的で接続されているのかを管理するための接続テーブルを有する請求項１８に記載のシステムシミュレータ。
【請求項２１】
前記バスシミュレータは、前記インターフェースとして、どのシミュレータがどのような目的で接続されているのかを管理するための接続テーブルを有する請求項１８に記載のシステムシミュレータ。
【請求項２２】
請求項１〜２１のいずれかに記載のシステムシミュレータを用いるシステムシミュレート方法であって、
前記インストラクションセットシミュレータの動作工程として、
他のシミュレータと速度を合わせるために一時停止制御可能とするウェイト処理工程と、
該ウェイト処理工程後に、該インストラクションセットシミュレータがインストラクションを取得する工程と、
該インストラクションが与えられると、該インストラクションセットシミュレータが該インストラクションを解析する工程と、
該インストラクションがメモリからのリードまたはメモリへのライトであるかどうかを判断し、該インストラクションがメモリリードであればメモリ読み出し処理を行い、該インストラクションがメモリライトであればメモリ書き込み処理を行い、これら以外の場合には所定命令を実行して該ウェイト処理工程に戻る工程とをコンピュータにより実行するシステムシミュレート方法。
【請求項２３】
請求項１〜２１のいずれかに記載のシステムシミュレータを用いるシステムシミュレート方法であって、
前記バスシミュレータの動作工程として、
他のシミュレータと速度を合わせるために一時停止制御可能とするウェイト処理工程と、
前記シミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、
複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、
該アクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程と、
保留したアクセス要求のウェイト処理を行った後、当該アクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程とをコンピュータにより実行するシステムシミュレート方法。
【請求項２４】
請求項１〜２１のいずれかに記載のシステムシミュレータを用いるシステムシミュレート方法であって、
前記ペリフェラルシミュレータの動作工程として、
他のシミュレータと速度を合わせるために一時停止制御可能とすると共に、内部状態に応じて割り込みを発生させる必要がある場合には、対応するインストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程と、
前記シミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、
他のシミュレータからアクセス要求がなく、該ペリフェラルシミュレータから前記バスシミュレータへのアクセス要求がない場合には、該ウェイト・割り込み処理工程に戻り、該ペリフェラルシミュレータから該バスシミュレータへのアクセス要求がある場合に、対応するバスシミュレータにアクセス要求を出力して該ウェイト・割り込み処理工程に戻る工程と、
複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、
該ペリフェラルシミュレータがアクセス内容のアクセス処理を行う工程と、
保留したアクセス要求のウェイト処理を行った後、内部状態に応じて割り込みを発生させる必要がある場合には、対応する該インストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程とをコンピュータにより実行するシステムシミュレート方法。
【請求項２５】
請求項２２に記載のシステムシミュレート方法のインストラクションセットシミュレータの動作工程と、
請求項２３に記載のシステムシミュレート方法のバスシミュレータの動作工程と、
請求項２４に記載のシステムシミュレート方法のペリフェラルシミュレータの動作工程とを有するシステムシミュレート方法。
【請求項２６】
請求項２２〜２５のいずれかに記載のシステムシミュレート方法の各工程をコンピュータに実行させるための制御プログラム。
【請求項２７】
請求項２６に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発対象となるシステム（ターゲットシステム）をパーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）などのシステム上で仮想的に実行するためのシステムシミュレータ、これを用いたシステムシミュレート方法、これをコンピュータに実行させるための制御プログラムおよび、これが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
【背景技術】
【０００２】
この種の従来のシステムシミュレータは、組み込み機器などのシステムを開発する段階で、システム上で動作するソフトウェアを検証するために用いられている。このシステムシミュレータは、ターゲットとなるシステムとは異なるシステム、例えばパーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）などのシステム上で、ターゲットとなるシステムの動作を仮想的に実行させるものである。
【０００３】
図１０は、従来の一般的なシステムシミュレータの基本構成例を示すブロック図である。
【０００４】
図１０において、従来のシステムシミュレータ１００は、ターゲットシステムにおけるＣＰＵ（中央演算処理装置；制御部）の動作をシミュレートするインストラクションセットシミュレータ１０１（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ；以後、ＩＳＳという）と、ペリフェラルの動作をシミュレートするペリフェラルシミュレータ１０２（以後、ＰＳｉｍという）とを有している。
【０００５】
ＩＳＳ１０１は、システムシミュレータ１００の中で、ＣＰＵのシミュレーションを行うブロックである。ターゲットとなるＣＰＵがレジスタを持つのと同様に、ＩＳＳ１０１も内部に仮想的なレジスタを持つ。ＩＳＳ１０１にターゲットとなるＣＰＵ用の命令を与えると、ＩＳＳ１０１内部でターゲットとなるＣＰＵ内部で行われる処理をシミュレーションする。
【０００６】
例えば、与えられた命令が論理演算を行う場合、ＩＳＳ１０１内部に存在する仮想的なレジスタ間で演算を行い、仮想的なレジスタに結果を書き戻している。また、与えられた命令がメモリアクセスを行う場合、後述するＰＳｉｍ１０２に対してアクセス要求を出して、データの書き込みおよび読み出しを実行する。
【０００７】
ＰＳｉｍ１０２は、システムの中に存在する各種ペリフェラルのシミュレーションを行うブロックである。ペリフェラルの例としては、メモリ、割り込みコントローラ（ＩＮＴＣ）、タイマ、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｅｒ）などが挙げられる。
【０００８】
上記構成により、まず、ＩＳＳ１０１からのメモリアクセスまたはＩ／Ｏアクセスを行う場合、ＩＳＳ１０１はＰＳｉｍ１０２に対してアクセス要求を出す。
【０００９】
次に、アクセス要求を受けると、ＰＳｉｍ１０２は、仮想的にペリフェラルの動作を行う。例えば、メモリの動作を仮想的に実行するＰＳｉｍ１０２では、ＰＣやＷＳなどのメモリ上にメモリエリアを確保し、このメモリエリアにＩＳＳ１０１からのアクセスをバイパスする。即ち、ＩＳＳ１０１から読み込み要求（リードアクセス）があった場合、ＰＣやＷＳ上のメモリからデータを読み込んで、読み込みデータ（リードデータ）をＩＳＳ１０１へ渡す。逆に、ＩＳＳ１０１から書き込み要求（ライトアクセス）があった場合、ＩＳＳ１０１からの書き込みデータ（ライトデータ）をＰＣやＷＳ上のメモリに書き込む。
【００１０】
また、タイマ動作を仮想的に実行するＰＳｉｍ１０２の場合には、まず、ＩＳＳ１０１からのレジスタ書き込み要求によって時刻が設定されると、時間が経過すると共に内部のカウンタ値を進ませる。
次に、設定された時刻になると、ＩＳＳ１０１に対して割り込みをかけることによって、設定された時刻がきたことを通知する。これによって、タイマ動作機能が実現する。
このようにして、ＰＳｉｍ１０２は、各種のペリフェラルの動作をシミュレーションすることができる。
【００１１】
ＩＳＳ１０１とＰＳｉｍ１０２とを組み合わせたシステムシミュレータ１００によって、パーソナルコンピュータ（ＰＣ）上で、実システムと同様のソフトウェアの実行環境を用意することが可能となり、ハードウェアがなくてもソフトウェアの検証を進めることが可能となる。
【００１２】
近年、性能向上を目的として、一つのシステムの中に複数のＣＰＵを実装するマルチコアという実装方法が注目されている。
【００１３】
このマルチコアシステムでは、一つのシステムの中に、複数のＣＰＵが実装される。また、この場合、ペリフェラルは、複数のＣＰＵからアクセス可能なように設計されている。このような環境下で、それぞれのＣＰＵが互いに協調して動作するように設計されており、システム全体の性能を向上させている。
【００１４】
図１１は、従来のマルチコアシステムの構成例を示すブロック図である。
【００１５】
図１１において、マルチコアシステム２００は、ＣＰＵ２０１およびＣＰＵ２１１がそれぞれ各バス(Ｂｕｓ)２０６，２１６にそれぞれ接続され、それぞれの各バス(Ｂｕｓ)２０６，２１６にはペリフェラル（Ｐｅｒｉｐｈｅｒａｌ）２０２〜２０５および２１２〜２１５がそれぞれ接続されている。
【００１６】
このバス（Ｂｕｓ）２０６に接続されたペリフェラル２０２〜２０５は、ＣＰＵ２０１からアクセスすることができる。また同様に、バス（Ｂｕｓ）２１６に接続されたペリフェラル２１２〜２１５は、ＣＰＵ２１１からアクセスすることができる。
【００１７】
バス（Ｂｕｓ）２０６とバス（Ｂｕｓ）２１６とは、ブリッジ２２０によって接続されている。ここで、ブリッジ２２０とは、バス（Ｂｕｓ）２０６とバス（Ｂｕｓ）２１６とを接続するための特殊なペリフェラル（Ｐｅｒｉｐｈｅｒａｌ）である。通常時、ブリッジ２２０は、接続された複数のバス（Ｂｕｓ）を分離して、アクセス要求が片方のバス（Ｂｕｓ）からもう片方のバス（Ｂｕｓ）に行かないように制御している。
【００１８】
これによって、ＣＰＵ２０１がバス（Ｂｕｓ）２０６に接続されたペリフェラル２０２〜２０５にアクセスしても、バス（Ｂｕｓ）２１６側には影響がない。しかしながら、ブリッジ２２０に制御を加えれば、ＣＰＵ２０１からバス（Ｂｕｓ）２１６上のペリフェラル２１２〜２１５にアクセスすることが可能となる。この場合、バス（Ｂｕｓ）２１６をＣＰＵ２０１側が使用し、この間はＣＰＵ２１１はアクセス権を持たず、アクセスを待たされるため、時間的な性能が低下する。
【００１９】
通常、ＣＰＵ２０１は、バス（Ｂｕｓ）２０６上のペリフェラル２０２〜２０５をアクセスし、ＣＰＵ２１１は、バス（Ｂｕｓ）２１６上のペリフェラル２１２〜２１５をアクセスし、強調動作が必要なときにのみ、ブリッジ２２０を介してもう一方のバス（Ｂｕｓ）にアクセスする。
【００２０】
これにより、通常時、ＣＰＵ２０１はバス（Ｂｕｓ）２０６の中で、ＣＰＵ２１１はバス（Ｂｕｓ）２１６の中でのみ処理を行い、ＣＰＵ２０１とＣＰＵ２１１との間で情報の授受が必要なときにのみ、互いのバス（Ｂｕｓ）にアクセスする。この結果、バス（Ｂｕｓ）の共有による性能低下を抑えながら、協調動作が可能となる。
【００２１】
しかしながら、一般的なシステムシミュレータでは、インストラクションセットシミュレータ（ＩＳＳ）が一つである。このため、図１１のように、複数のＣＰＵを連携して動作させるというシステムのシミュレーションを行うことができない。
【００２２】
そこで、例えば特許文献１には、複数のシステムシミュレータを動作させ、その間を通信路のシミュレータで接続することにより、複数のＩＳＳを協調動作させるシミュレーションシステムが開示されている。これを図１２に示している。
【００２３】
図１２は、特許文献１に開示されている従来のシミュレーションシステムの要部構成例を示すブロック図である。
【００２４】
図１２に示すように、従来のシミュレーションシステム３００では、同時に起動される複数のシステムシミュレータ３０１，３０４が設けられ、これらのシステムシミュレータ３０１，３０４の外部に、これらの間に、二つのシステムシミュレータ３０１，３０４を制御するためのシミュレータマネージャ３０２が設けられている。このシミュレータマネージャ３０２の中には、共有バスシミュレータ３０５と共有メモリシミュレータ３０３が設けられている。
【００２５】
システムシミュレータ３０１，３０４と、共有バスシミュレータ３０５および共有メモリシミュレータ３０３との間で通信を行って、システムシミュレータ同士のデータの授受および共有メモリへのアクセスを実現している。
【００２６】
システムを開発する上で、そのシステムをどのように構成するかは、そのシステムの目的によって変化する。ここで、システムの構成とは、ＣＰＵの数、ペリフェラルの数、ペリフェラルやバスの配置などである。システムの目的に応じて、これらは、最適な構成に変える必要がある。そのため、システムシミュレータについても、その構成を簡単に変えられることが望ましい。
【００２７】
しかしながら、一般的な従来のシステムシミュレータでは、システムシミュレータを構成する各シミュレータ間のインターフェースがシステムシミュレータ毎に異なり、システムを再構成することができない。
【００２８】
そこで、例えば特許文献２には、シミュレータ間を、フレームワークを用いて関連させることにより、システムシミュレータを構成するインストラクションセットシミュレータ（ＩＳＳ）などの個々のシミュレータを他のシミュレータと簡単に入れ替え可能にしたシステムシミュレータが開示されている。これを図１３に示している。
【００２９】
図１３は、特許文献２に開示されている従来のシステムシミュレータの要部構成例を示すブロック図である。
【００３０】
図１３において、従来のシミュレーションシステム４００は、複数のシステムシミュレータ（ＳＳ）４０１，４０２を有している。
例えばシステムシミュレータ４０２は、ＩＳＳ４０３と、ＰｒｏｇｒａｍＲＯＭ４０４と、Ｉ／Ｏシミュレータ４０５（ペリフェラルシミュレータに相当）とを有している。これらのシステムシミュレータ４０２内の各シミュレータ４０３〜４０５は、フレームワーク上で作成され、オブジェクト間通信部４０６で、通信路４０７を介して、他の例えばシステムシミュレータ４０１のオブジェクト間通信部４０８との間でデータを授受する。
【００３１】
同一のフレームワークによって、他のシミュレータ４０９〜４１１を予め設計しておけば、例えばシステムシミュレータ４０２内の各シミュレータ４０３〜４０５に対してこれらを入れ替えることが可能となる。
また、特許文献１の場合と同様に、他のシステムシミュレータ４０１とシステムシミュレータ４０２の間でも、オブジェクト間通信部４０６，４０８によるオブジェクト間通信を行って、複数のシステムシミュレータ４０１，４０２を協調動作させることも可能となる。
なお、特許文献３では、プラットフォームコンピュータにコンピュータシステムの構成情報を入力してシミュレーション環境を設定することが開示されている。
【特許文献１】特開平５−３５５３４号公報
【特許文献２】特開平１１−２３８００４号公報
【特許文献３】特開２００２−２８８００３号公報（請求項５）
【発明の開示】
【発明が解決しようとする課題】
【００３２】
しかしながら、上記特許文献１（図１２）および特許文献２（図１３）の従来技術では、複雑なシステム構成を有するシステムを表現することができないという問題がある。これは、上記特許文献（図１２）および特許文献２（図１３）の従来技術では、独立したシステムシミュレータの接続でしかマルチコアシステムを表現することができないためである。また、システムシミュレータの接続は、共有メモリおよび共有バスといった単純な構成に限られるため、表現可能なシステムとしては、図１４および図１５に示すようなシステムのみである。例えば、図１６に示すような複雑な構成を有するシステムを、上記特許文献１（図１２）および特許文献２（図１３）のシステムシミュレータによって表現することはできない。
【００３３】
図１４に示すように、従来のシステム５００は、システムシミュレータ５０１，５０６と、共通バスシミュレータ５１１とを有している。
システムシミュレータ５０１は、ＣＰＵ５０２と、ペリフェラル５０３，５０４と、これらを接続するバス（Ｂｕｓ）５０５とを有している。
システムシミュレータ５０６は、ＣＰＵ５０７と、ペリフェラル５０８，５０９と、これらを接続するバス（Ｂｕｓ）５１０とを有している。
共通バスシミュレータ５１１は、バス（Ｂｕｓ）５１２と、これとバス（Ｂｕｓ）５０５を接続するＢｒｉｄｇｅ５１３と、バス（Ｂｕｓ）５１２とバス（Ｂｕｓ）５１０を接続するＢｒｉｄｇｅ５１４と、バス（Ｂｕｓ）５１２に接続されるＬＣＤＣ５１５、画像データを保存するためのＳＤＲＡＭ５１６およびその他のペリフェラル５１７，５１８とを有している。
ＬＣＤＣ５１５は、画像を表示するためにＳＤＲＡＭ５１６から頻繁にデータ転送が行われる。このため、表示系のブロックに独立してバス（Ｂｕｓ）５１２を設けている。ＣＰＵ５０２およびＣＰＵ５０７とＬＣＤＣ５１５とが独立したバスに接続されていないと、ＣＰＵがＬＣＤＣ５１５のために待たされるという状況が頻発してしまう。このようなバス構成は、性能向上の手段としてよく使われるものである。
【００３４】
上記構成のシステム５００の動作としては、特許文献１の従来技術によって、図１２に示すシステムシミュレータ３０１を図１４に示すシステムシミュレータ５０１として、また、図１２に示すシステムシミュレータ３０４を図１４に示すシステムシミュレータ５０６として、図１２に示す共有バスシミュレータとしてのシミュレータマネージャ３０２を図１４に示す共通バスシミュレータ５１１として実装することによって、シミュレーションを実行することができる。
【００３５】
次に、図１５に示すように、別の従来のシステム６００は、システムシミュレータ６０１，６０６と、これらの間に設けられたオブジェクト間通信部６１１とを有している。
システムシミュレータ６０１は、ＣＰＵ６０２と、ペリフェラル６０３，６０４と、これらを接続するバス（Ｂｕｓ）６０５とを有しており、ＣＰＵ６０２は、バス(Ｂｕｓ)６０５によってペリフェラル６０３，６０４に接続されている。
システムシミュレータ６０６は、ＣＰＵ６０７と、ペリフェラル６０８，６０９と、これらを接続するバス（Ｂｕｓ）６１０とを有しており、ＣＰＵ６０７は、バス(Ｂｕｓ)６１０によってペリフェラル６０８，６０９に接続されている。
オブジェクト間通信部６１１は、ＣＰＵ６０２を中心とするシステムシミュレータ６０１のバス（Ｂｕｓ）６０５との間または、ＣＰＵ６０７を中心とするシステム６０６のバス（Ｂｕｓ）６１０との間を接続可能とするブリッジ６１２を有している。
【００３６】
上記構成のシステム６００の動作としては、特許文献２の従来技術によって、図１３に示すシステムシミュレータ４０１を図１５に示すシステムシミュレータ６０１として、図１３に示すシステムシミュレータ４０２を図１５に示すシステムシミュレータ６０６として、図１３に示すオブジェクト間通信部４０６，４０８を図１５に示すシステムシミュレータ６０１，６０６間のオブジェクト間通信部６１１として実装することによって、シミュレーションを実行することができる。
【００３７】
一方、図１６に示すように、図１４のシステム５００にＢｒｉｄｇｅ７０１を追加した複雑な構成を持つシステム７００では、前述したシステム５００，６００のシステムシミュレータによって表現することができない。この点について説明する。
【００３８】
図１４の構成例のシステム５００では、ＣＰＵ５０２とＣＰＵ５０７の間でデータを授受するためには、バス(Ｂｕｓ)５１２を介する必要があった。しかしながら、バス(Ｂｕｓ)５１２は、ＬＣＤＣ５１５によるバス負荷が高いため、使用を避けたい。
【００３９】
そこで、図１６の構成例のシステム７００では、バス(Ｂｕｓ)５０５とバス(Ｂｕｓ)５１０の間にＢｒｉｄｇｅ７０１を加えている。バスの混雑度が性能に影響を与えるシステムでは、このような回路が設計される可能性がある。
【００４０】
このような図１６の構成例のシステム７００では、バス(Ｂｕｓ)５０５とバス(Ｂｕｓ)５１０との間の接続部分が、Ｂｒｉｄｇｅ７０１の経由とバス(Ｂｕｓ)５１２の経由との２系統存在するため、単純にシステムシミュレータ間に通信インターフェースを実装する上記特許文献１および特許文献２の従来技術では、このような構成を表現することができない。
【００４１】
従来のシミュレータによってこのモデルをデバッグするためには、シミュレーション用にモデルを変更する必要があり、それに対応するソフトウェアも変更する必要がある。よって、この部分のデバッグは、実機が作製されるのを待って行うことになる。
【００４２】
また、システムシミュレータの再構成の容易さという点でも、従来技術には問題点がある。
【００４３】
システムシミュレータの再構成を容易にするために、特許文献２（図１３）のシステム４００では、システムシミュレータをＩＳＳとプログラムメモリ、Ｉ／Ｏ（ペリフェラル）シミュレータの組み合わせとして、その交換をフレームワーク上でオブジェクト間通信部を用いて行うことにより、簡単にシステムシミュレータを再構成可能としていた。しかしながら、複雑なシステムを表現するためには、この構成は、やや粗く、表現できないシステム、例えば図１６のシステム７００などが存在する。
【００４４】
近年のＣＰＵおよびＤＳＰ（デジタル  シグナル  プロセッサ）では、複数のバスインターフェースを備えたものも多い。例えば、ハーバードアーキテクチャを持つＣＰＵでは、データを取得するバスとプログラムを取得するバスが分離されている。これを図１７に示している。
【００４５】
図１７は、ハーバードアーキテクチャのＣＰＵによる従来のシステムの構成例を示すブロック図である。
【００４６】
図１７に示すように、この従来のシステム８００において、ＣＰＵ８０１はデータバス８０２とインストラクションバス８０３に接続されている。このインストラクションバス８０３にはプログラムおよびその定数が収められているプログラムＲＯＭ８０４が接続されており、ＣＰＵ８０１は、このプログラムＲＯＭ８０４から命令を読みこむ。また、データバス８０２には、データＲＡＭ８０５が接続されており、ＣＰＵ８０１が使用するデータはこのデータＲＡＭ８０５に格納される。
【００４７】
データバス８０２はプログラムＲＯＭ８０４にも接続されている。これは、データとしてプログラムの定数を読みこむ場合に、この定数がプログラムＲＯＭ８０４のＲＯＭ領域内に格納されているためである。
【００４８】
このため、プログラムＲＯＭ８０４は、データバス８０２とインストラクションバス８０３の両方に接続されている。両方のバスからプログラムＲＯＭ８０５に同時にアクセスがあった場合には、どちらか片方が待たされることになる。
【００４９】
その他にも、マルチレイヤーバスと言われる手法が存在する。この手法では、二つのデータバスを用意しておき、二つともＣＰＵに接続しておく。このデータバスには、他にもＣＰＵやペリフェラルが接続されており、これらもバスを使用する。ＣＰＵは、バスにアクセスする際はバスの状態を見て、開いている方のバスに接続する。
【００５０】
しかしながら、特許文献２（図１３）のシステム４００では、ＩＳＳとペリフェラルシミュレータの間をオブジェクト間通信部４０６，４０８で接続しており、バスに関するモデル化は行っていないため、ＣＰＵが複数のバスに接続されている場合、動作を完全にシミュレーションすることができない。例えば、上記ハーバードアーキテクチャのＣＰＵを有するシステムにおいて、データバスまたはインストラクションバスのどちらかのアクセスが待たされるという状況を再現することができない。
【００５１】
さらに、特許文献３では、複数のＣＰＵ構成には対応できるとしても、図１６のシステム７００のような複雑なバス構成については考慮されておらず、複雑なバス構成については対応できない。
【００５２】
本発明は、上記従来の問題を解決するもので、複雑な構成のシステムにも対応でき、容易かつ柔軟に再構成できるシステムシミュレータ、これを用いたシステムシミュレート方法、これをコンピュータに実行させるための制御プログラムおよび、これが記録されたコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００５３】
本発明のシステムシミュレータは、ターゲットシステム上で動作するソフトウェアを検証するために用いられ、該ターゲットシステムの動作を、該ターゲットシステムとは異なるシステム上で仮想的に実行するシステムシミュレータであって、該ターゲットシステムにおける中央演算処理装置（ＣＰＵ）の動作をシミュレートする一または複数のインストラクションセットシミュレータと、ペリフェラルの動作をシミュレートする複数のペリフェラルシミュレータと、該ＣＰＵと該ペリフェラルを接続するバスの動作をシミュレートする複数のバスシミュレータとを有すると共に、該インストラクションセットシミュレータと該バスシミュレータの間の相互の状態を参照および変更可能とする第１インターフェースと、該バスシミュレータと該ペリフェラルシミュレータの間の相互の状態を参照および変更可能とする第２インターフェースと、該インストラクションセットシミュレータと該ペリフェラルシミュレータの間の相互の状態を参照および変更可能とする第３インターフェースとを有し、そのことにより上記目的が達成される。
【００５４】
また、好ましくは、本発明のシステムシミュレータにおいて、前記ターゲットシステムのブロック構成が設定された設定ファイルにしたがって必要な各シミュレータを確保し、該必要な各シミュレータ間の各インターフェースを設定可能とするシミュレータマネージャーをさらに有する。
【００５５】
さらに、好ましくは、本発明のシステムシミュレータにおけるペリフェラルシミュレータは、メモリ、割り込みコントローラ、タイマ、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）、液晶表示コントローラ（ＬＣＤＣ）、バス間を接続するブリッジ（Ｂｒｉｄｇｅ）、Ｉ／Ｏコントローラ、発光ダイオード表示器（ＬＥＤ表示器）またはステッピングモータなどの周辺機器の動作をシミュレートする。
【００５６】
さらに、好ましくは、本発明のシステムシミュレータにおける第１インターフェースは、前記ＣＰＵからバスへのアクセスをシミュレート可能とする。
【００５７】
さらに、好ましくは、本発明のシステムシミュレータにおけるインストラクションセットシミュレータは、メモリ空間またはＩ／Ｏ空間にアクセスしたい場合に、前記第１インターフェースを介して対応するバスシミュレータを呼び出し、
リードアクセスの場合、該インストラクションセットシミュレータから該バスシミュレータにアドレスを指定し、該バスシミュレータは対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出してデータを取得して、該インストラクションセットシミュレータに該データを渡し、
ライトアクセスの場合、該インストラクションセットシミュレータから該バスシミュレータにアドレスとデータを指定し、該バスシミュレータは対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出して該データを設定する。
【００５８】
さらに、好ましくは、本発明のシステムシミュレータにおける第１インターフェースは、前記インストラクションセットシミュレータがアクセスしようとしたときに前記バスシミュレータが他のインストラクションセットシミュレータによって使用されている場合に、アクセスが重複しないように、優先度が低いシミュレータからの要求を保留するように設定可能とされている。
【００５９】
さらに、好ましくは、本発明のシステムシミュレータにおける第２インターフェースは、バスとペリフェラルとの間のアクセスをシミュレート可能とする。
【００６０】
さらに、好ましくは、本発明のシステムシミュレータにおけるバスシミュレータは、前記インストラクションセットシミュレータからアクセス要求を受けた場合、対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出し、  リードアクセスの場合、該バスシミュレータは該ペリフェラルシミュレータからデータを読み出して該インストラクションセットシミュレータにデータを渡し、ライトアクセスの場合、該バスシミュレータは該ペリフェラルシミュレータにデータを設定する。
【００６１】
さらに、好ましくは、本発明のシステムシミュレータにおけるバスシミュレータは、ペリフェラルシミュレータから他のペリフェラルシミュレータへのアクセス要求を受けた場合、対応するアドレスに存在するペリフェラルシミュレータを前記第２インターフェースを介して呼び出し、
リードアクセスの場合、該バスシミュレータは対象ペリフェラルシミュレータからデータを読み出して、要求を行ったペリフェラルシミュレータにデータを渡し、
ライトアクセスの場合、該バスシミュレータは対象ペリフェラルシミュレータにデータを設定する。
【００６２】
さらに、好ましくは、本発明のシステムシミュレータにおける第２インターフェースは、前記ペリフェラルシミュレータがバスシミュレータにアクセスしようとしたときに該バスシミュレータが他のシミュレータによって使用されている場合、アクセスが重複しないように、優先度が低いシミュレータからの要求を保留するように設定可能とされている。
【００６３】
さらに、好ましくは、本発明のシステムシミュレータにおける第３インターフェースは、前記ペリフェラルシミュレータから前記インストラクションセットシミュレータへの割り込みをシミュレート可能とする。
【００６４】
さらに、好ましくは、本発明のシステムシミュレータにおけるペリフェラルシミュレータは、内部状態の更新に応じて、前記インストラクションセットシミュレータに対して前記第３インターフェースを介して割り込みをかける。
【００６５】
さらに、好ましくは、本発明のシステムシミュレータにおけるシミュレータマネージャは、前記インストラクションセットシミュレータ、前記バスシミュレータおよび前記ペリフェラルシミュレータの各処理速度を制御可能とする。
【００６６】
さらに、好ましくは、本発明のシステムシミュレータにおけるシミュレータマネージャは、前記各処理速度を制御するために、前記インストラクションセットシミュレータ、前記バスシミュレータおよび前記ペリフェラルシミュレータのうちの少なくともいずれかのシミュレータの動作を一時的に停止させる。
【００６７】
さらに、好ましくは、本発明のシステムシミュレータにおけるターゲットシステムはパーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）上で動作するアプリケーションプログラムとして起動される。
【００６８】
さらに、好ましくは、本発明のシステムシミュレータにおけるシミュレータマネージャーおよび前記各シミュレータが独立して動作するスレッドであって、前記第１〜第３インターフェースにより、共通メモリを介して状態の参照または変更が行われるか、または該各シミュレータが関数であって、該シミュレータマネージャーによってシミュレータ関数が呼び出される。
【００６９】
さらに、好ましくは、本発明のシステムシミュレータにおける第１〜第３インターフェースは、状態の参照および変更が可能な共有メモリ、関数呼び出しまたはメッセージ授受によって実現される。
【００７０】
さらに、好ましくは、本発明のシステムシミュレータにおける各シミュレータは、前記各インターフェースとして、該各シミュレータの接続関係を管理するテーブルを有する。
【００７１】
さらに、好ましくは、本発明のシステムシミュレータにおけるインストラクションセットシミュレータは、前記インターフェースとして、接続されているバスシミュレータの種類を管理するための接続テーブルを有し、前記インターフェースとして、割り込みがどのシミュレータから接続されているかを管理するための割り込みテーブルとを有する。
【００７２】
さらに、好ましくは、本発明のシステムシミュレータにおけるペリフェラルシミュレータは、前記インターフェースとして、どのシミュレータがどのような目的で接続されているのかを管理するための接続テーブルを有する。
【００７３】
さらに、好ましくは、本発明のシステムシミュレータにおけるバスシミュレータは、前記インターフェースとして、どのシミュレータがどのような目的で接続されているのかを管理するための接続テーブルを有する。
【００７４】
本発明のシステムシミュレート方法は、本発明の上記システムシミュレータを用いるシステムシミュレート方法であって、前記インストラクションセットシミュレータの動作工程として、他のシミュレータと速度を合わせるために一時停止制御可能とするウェイト処理工程と、該ウェイト処理工程後に、該インストラクションセットシミュレータがインストラクションを取得する工程と、該インストラクションが与えられると、該インストラクションセットシミュレータが該インストラクションを解析する工程と、該インストラクションがメモリからのリードまたはメモリへのライトであるかどうかを判断し、該インストラクションがメモリリードであればメモリ読み出し処理を行い、該インストラクションがメモリライトであればメモリ書き込み処理を行い、これら以外の場合には所定命令を実行して該ウェイト処理工程に戻る工程とをコンピュータにより実行し、そのことにより上記目的が達成される。
【００７５】
本発明のシステムシミュレート方法は、本発明の上記システムシミュレータを用いるシステムシミュレート方法であって、前記バスシミュレータの動作工程として、他のシミュレータと速度を合わせるために一時停止制御可能とするウェイト処理工程と、前記シミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、  該アクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程と、  保留したアクセス要求のウェイト処理を行った後、当該アクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程とをコンピュータにより実行し、そのことにより上記目的が達成される。
【００７６】
本発明のシステムシミュレート方法は、本発明の上記システムシミュレータを用いるシステムシミュレート方法であって、前記ペリフェラルシミュレータの動作工程として、  他のシミュレータと速度を合わせるために一時停止制御可能とすると共に、内部状態に応じて割り込みを発生させる必要がある場合には、対応するインストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程と、前記シミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、他のシミュレータからアクセス要求がなく、該ペリフェラルシミュレータから前記バスシミュレータへのアクセス要求がない場合には、該ウェイト・割り込み処理工程に戻り、該ペリフェラルシミュレータから該バスシミュレータへのアクセス要求がある場合に、対応するバスシミュレータにアクセス要求を出力して該ウェイト・割り込み処理工程に戻る工程と、複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、該ペリフェラルシミュレータがアクセス内容のアクセス処理を行う工程と、保留したアクセス要求のウェイト処理を行った後、内部状態に応じて割り込みを発生させる必要がある場合には、対応する該インストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程とをコンピュータにより実行し、そのことにより上記目的が達成される。
【００７７】
さらに、好ましくは、本発明のシステムシミュレート方法において、本発明の上記インストラクションセットシミュレータの動作工程と、本発明の上記バスシミュレータの動作工程と、本発明の上記ペリフェラルシミュレータの動作工程とを有する。
【００７８】
本発明の制御プログラムは、本発明の上記システムシミュレート方法の各工程をコンピュータに実行させるためのものであり、そのことにより上記目的が達成される。
【００７９】
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
【００８０】
上記構成により、以下に、本発明の作用を説明する。
本発明にあっては、インストラクションセットシミュレータ（ＩＳＳ）、ペリフェラルシミュレータ（ＰＳｉｍ）、バスシミュレータ（ＢＳｉｍ）の３種類のシミュレータを用いて、相互に状態を参照・変更可能なインターフェース（例えばテーブル）で接続関係を示すことにより、従来は対応できなかった複雑な構成のシステムにも対応可能となる。また、シミュレータマネージャにより、設定ファイルにしたがって、シミュレータの確保とインターフェースの設定をすることにより、ターゲットシステムを容易かつ柔軟に構成または再構成することが可能となる。
【発明の効果】
【００８１】
以上により、本発明によれば、システムシミュレータをＩＳＳ、ＰＳｉｍおよびＢＳｉｍの３種類のシミュレータによって構成し、各シミュレータ間を相互に状態の参照・変更が可能なインターフェースで接続可能とすることにより、複雑な構成に対応可能で、かつ、容易かつ柔軟に構成を変更することができる。
【発明を実施するための最良の形態】
【００８２】
以下に、本発明のシステムシミュレータの具体的な実施形態１，２について説明する前に、本発明のシステムシミュレータの基本構成について説明する。
図１は、本発明のシステムシミュレータの基本構成を示すブロック図である。
【００８３】
図１において、本発明のシステムシミュレータ１０は、ターゲットシステムにおける中央演算処理装置（ＣＰＵ）の動作をシミュレートするインストラクションセットシミュレータ（ＩＳＳ）１１と、ペリフェラルの動作をシミュレートするペリフェラルシミュレータ（ＰＳｉｍ）１２と、ＣＰＵとペリフェラル間を接続するバスの動作をシミュレートする複数のバスシミュレータ（ＢＳｉｍ）１３と、インストラクションセットシミュレータ（ＩＳＳ）１１とバスシミュレータ（ＢＳｉｍ）１３の間に設けられ、相互に状態を参照および変更可能とする第１インターフェースとしてのＩＳＳ・ＢＳｉｍ間インターフェース１４と、バスシミュレータ（ＢＳｉｍ）１３とペリフェラルシミュレータ（ＰＳｉｍ）１２の間に設けられ、相互に状態を参照および変更可能とする第２インターフェースとしてのＢＳｉｍ・ＰＳｉｍ間インターフェース１５と、ペリフェラルシミュレータ（ＰＳｉｍ）１２とインストラクションセットシミュレータ（ＩＳＳ）１１の間に設けられ、相互に状態を参照および変更可能とする第３インターフェースとしてのＰＳｉｍ・ＩＳＳ間インターフェース１６と、そのターゲットシステムのブロック構成が設定された設定ファイルにしたがって必要な各シミュレータを確保し、該必要な各シミュレータ間のインターフェースを設定するシミュレータマネージャー１７とを有しており、ターゲットシステム上で動作するソフトウェアを検証するために用いられ、ターゲットシステムの動作を、ターゲットシステムとは異なるシステム上で仮想的に実行可能とする。
このように、本発明では、ＩＳＳ１１とＰＳｉｍ１２に加えて、これらの間にＢＳｉｍ１３を有している。ＢＳｉｍ１３は、ＩＳＳ１１とＰＳｉｍ１２を接続し、その間のアクセスを調整するものである。ＢＳｉｍ１３は、ＩＳＳ１１またはＰＳｉｍ１２からアクセス要求があった場合に、このアクセス要求を処理すべきＰＳｉｍ１２を選択し、そのＰＳｉｍ１２に対してアクセス要求を出す。また、複数のシミュレータから同時にアクセス要求があった場合、調停を行って、優先度が高いものからアクセスを処理する。このように動作することにより、ＢＳｉｍ１３は、ＣＰＵとペリフェラルを接続するバスの動作をシミュレートする。
【００８４】
システムシミュレータを上記３種類のシミュレータから構成することによって、複雑な構成のシステムであっても、これらのシミュレータを組み合わせれば、システムシミュレータを作製することができる。
【００８５】
各シミュレータ間に相互に状態を参照および変更するためのインターフェース１４〜１６を有している。これらの各インターフェースは、多対多接続に対応することが可能であり、例えばＩＳＳ１１が複数のＢＳｉｍを持つＢＳｉｍ１３（例えば二つのＢＳｉｍ）に接続されるような構成も可能である。また、ＩＳＳ１１とＢＳｉｍ１３間のインターフェース１４は、ＣＰＵからバスへのアクセスをシミュレートするために用いられる。
【００８６】
ＩＳＳ１１は、メモリ空間またはＩ／Ｏ（入出力）空間にアクセスしたい場合、対応するＢＳｉｍ１３を呼び出す。リードアクセスの場合、ＩＳＳ１１からＢＳｉｍ１３にリード先のアドレスを指定すると、ＢＳｉｍ１３はそのアドレスから対応するＰＳｉｍ１２を見つけて、そのＰＳｉｍ１２を呼び出してデータを取得してＩＳＳ１１にデータを渡す。また、ライトアクセスの場合、ＩＳＳ１１からＢＳｉｍ１３にライト先のアドレスとライトさせたいデータを渡すと、ＢＳｉｍ１３はそのアドレスに対応するＰＳｉｍ１２を呼び出してデータを書き込む。ＢＳｉｍ１３が複数のＩＳＳ１１に接続されているような場合には、ＩＳＳ１１がアクセスしようとしたときにＢＳｉｍ１３がすでに他のＩＳＳ１１に使用されているような状況が発生し得る。この場合には、優先度を付けて、優先度が低いシミュレータからのアクセスを保留することによって、対応することができる。
【００８７】
ＢＳｉｍ１３とＰＳｉｍ１２間のインターフェース１５は、バスとペリフェラルとの間のアクセスをシミュレートするために用いられる。
【００８８】
ＢＳｉｍ１３は、ＩＳＳ１１だけでなく、ＰＳｉｍ１２からのアクセス要求も受け付ける。これは、ＤＭＡなどのペリフェラルはバスマスタになるからである。ＢＳｉｍ１３は、ＰＳｉｍ１２から他のＰＳｉｍ１２へのアクセス要求を受けた場合、要求されたアドレスに対応するＰＳｉｍ１２を呼び出して処理を行う。ＢＳｉｍ１３が複数のＩＳＳ１１やＰＳｉｍ１２からアクセス要求を受けた場合には、優先度を付け、優先度が低いシミュレータからのアクセスを保留することによって、対応することができる。
【００８９】
ＰＳｉｍ１２からＩＳＳ１１へのインターフェース１６は、ＰＳｉｍ１２からＩＳＳ１１への割り込みをシミュレートするものである。このインターフェース１６によって、ＰＳｉｍ１２は、内部状態の更新に応じて、ＩＳＳ１１に対して割り込みを発生させることができる。
【００９０】
さらに、シミュレータの実装方法によっては、シミュレータ毎にシミュレーション実行速度が異なることがある。例えば、各シミュレータをそれぞれ一つのスレッドとして実装した場合、シミュレータの処理量によって、各シミュレータのシミュレーション実行速度に差が生じ、実際のシステムと動作が大きく異なる可能性がある。
【００９１】
このため、シミュレータマネージャ１７によって、シミュレータの動作を一時停止させて速度調整可能とすることが好ましい。これにより、実行速度が速いシミュレータがある場合には、その実行速度が速いシミュレータの動作を一時停止させて他の実行速度が遅いシミュレータの動作と調整することができる。
【００９２】
この手法は、シミュレータに速度差を設けたい場合にも有効である。例えば、消費電力を低くするために、システム中で負荷が高い部分は高いクロック周波数で動作させるが、負荷が低い部分は低いクロック周波数で動作させるということも行われる。このようなシステムの動作をシミュレーションする場合には、各シミュレータの実行速度に速度差を設ける必要がある。
【００９３】
この場合、シミュレータマネージャ１７によって、遅く動作させたいシミュレータを定期的に一時停止させることにより、各シミュレータの実行速度に速度差を設けることが可能となる。
【００９４】
また、シミュレータマネージャ１７によって、ターゲットシステムのブロック構成が設定された設定ファイルにしたがって、各シミュレータを確保し、各シミュレータ間のインターフェースを設定することによって、シミュレータの再構成を容易に行うことができる。
【００９５】
マルチコアシステムにおいては、異なるベンダーからのコアを組み合わせてシステムを構成することがあり、複雑なシステムに対応できること、およびシミュレータの再構成が可能であることが重要である。
【００９６】
従来のシステムシミュレータでは、ＩＳＳおよびＰＳｉｍの役割や接続関係などが厳密に決められておらず、システムに合わせて構成を変更することができなかったが、本発明のシステムシミュレータによれば、複雑なシステムであっても、システムシミュレータを容易に構成することが可能となる。
【００９７】
ここで、本発明のシステムシミュレータ１０の具体的事例の実施形態１として、図１６に示す複雑なシステム７００の動作をパーソナルシステム（ＰＣ）やワークステーション（ＷＳ）上で仮想的に実行するためのシステムシミュレータについて説明する。
（実施形態１）
図２は、本発明の実施形態１に係るシステムシミュレータの要部構成例を示すブロック図である。
【００９８】
図２において、本実施形態１のシステムシミュレータ１０Ａは、図１６のシステム７００におけるＣＰＵ５０２およびＣＰＵ５０７の動作をシミュレートするインストラクションセットシミュレータ（ＩＳＳ）１１１、１１２と、図１６のシステム７００におけるペリフェラル５０３、５０４、５０８、５０９、５１３、７０１、５１４および５１５〜５１８の動作をシミュレートするペリフェラルシミュレータ（ＰＳｉｍ）１２１ａ、１２１ｂ、１２２ａ、１２２ｂ、１２３〜１２５および１２６〜１２９と、図１６のシステム７００におけるバス（ＢＵＳ）５０５、５１０および５１２の動作をシミュレートするバスシミュレータ（ＢＳｉｍ）１３１〜１３３との３種類の各シミュレータを有している。
【００９９】
上記ＰＳｉｍ１２４は、図１６のＢＵＳ５０５とＢＵＳ５１０を接続するＢｒｉｄｇｅ７０１の動作をシミュレートするものであり、上記ＰＳｉｍ１２３は、図１６のＢＵＳ５０５とＢＵＳ５１２を接続するＢｒｉｄｇｅ５１３の動作をシミュレートするものであり、上記ＰＳｉｍ１２５は、図１６のＢＵＳ５１０とＢＵＳ５１２を接続するＢｒｉｄｇｅ５１４の動作をシミュレートするものである。なお、ここでは、二つのバスに接続され、データのやり取りを二つのバス間で行うペリフェラルをＢｒｉｄｇｅとしている。
【０１００】
また、上記ＰＳｉｍ１２２ｂは、メモリの動作をシミュレートするものであり、上記ＰＳｉｍ１２６は、図１６のＬＣＤコントローラ５１５（ＬＣＤＣ）の動作をシミュレートするものであり、上記ＰＳｉｍ１２７は、図１６のＳＤＲＡＭコントローラ５１６の動作をシミュレートするものである。
【０１０１】
上記ＩＳＳ１１１とＢＳｉｍ１３１の間には、相互に状態を参照および変更するために多対多接続可能とされたインターフェース１４１が設けられている。また、上記ＩＳＳ１１２とＢＳｉｍ１３２の間にも、相互に状態を参照および変更するために多対多接続可能とされたインターフェース１４２が設けられている。これらのインターフェース１４１，１４２はそれぞれ、ＣＰＵからバスへのアクセスをシミュレートするために用いられる。
【０１０２】
また、上記ＢＳｉｍとＰＳｉｍとの間、例えばＢＳｉｍ１３１とＰＳｉｍ１２３との間には、相互に状態を参照および変更するために多対多接続可能とされたインターフェース１５１が設けられている。このインターフェース１５１などの各インターフェースは、バスとペリフェラルとの間のアクセスをシミュレートするために用いられる。
【０１０３】
さらに、図１６のシステム７００の構成に加えて、上記ＰＳｉｍ１２１ｂからＩＳＳ１１２に対して、割り込み信号ＩＲＱを発生させるためのインターフェース１６１が設けられている。これは、ＰＳｉｍ１２１ｂのレジスタに何らかのデータが書き込まれるなど、内部状態が更新されたときに、ＩＳＳ１１２に対して割り込みをかけられるようにするためのものである。
【０１０４】
さらに、システムシミュレータ１０Ａは、全体の制御を行い、各シミュレータ間のインターフェースの設定や速度制御を行うために、シミュレータマネージャーを１７１を有している。
【０１０５】
本実施形態１のシステムシミュレータ１０Ａは、ＰＣ・ＷＳ上において、アプリケーションプログラムとして起動される。また、ターゲットとなる図１６のブロック構成は、予め設定ファイルに記述しておくようにする。シミュレータマネージャ１７１は、システムシミュレータが立ち上げられると最初に起動され、上記設定ファイルにしたがって、必要なＩＳＳ、ＢＳｉｍおよびＰＳｉｍを確保し、各シミュレータ間のインターフェースを設定して、図２に示すようなシステムシミュレータ１０Ａを構成する。
【０１０６】
シミュレータマネージャー１７１および上記各シミュレータは、独立した個々のスレッドとして動作する。シミュレータマネージャー１７１および各シミュレータは、共有メモリを有しており、この共有メモリを上記インターフェースとして状態の変更や参照を行うことが可能である。
【０１０７】
なお、各シミュレータを関数として用意し、シミュレータマネージャー１７１によって各シミュレータ関数を呼び出すという方法でシミュレータをＰＣやＷＳに実装させてもよい。
【０１０８】
また、各シミュレータ間のインターフェースは、共有メモリに限らず、関数呼び出し（シミュレータが関数の場合）やメッセージの授受によって実現してもよい。
【０１０９】
さらに、各シミュレータでは、各インターフェースとして、後述する図３に示すようなテーブル（上記設定ファイルにしたがって、シミュレータマネージャによって各シミュレータにテーブルデータが設定される）によって接続関係を管理している。
【０１１０】
図３には、図２に示すＩＳＳ１１１、ＰＳｉｍ１２１ｂ、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４およびＢＳｉｍ１３１の各テーブルの事例を示している。  
【０１１１】
以下に、図３の各テーブルについて説明する。
【０１１２】
ＩＳＳ１１１は、接続テーブル１１０１と、割り込みテーブル１１０２とを有している。
【０１１３】
ＩＳＳ１１１接続テーブル１１０１は、ＩＳＳ１１１に接続されているＢＳｉｍ、即ちＢＳｉｍ１３１とその種類を管理している。ＩＳＳ１１１は、メモリアクセスが必要になった場合に、この接続テーブル１１０１から適切なＢＳｉｍ１３１を選択してアクセス要求を出力する。接続テーブル１１０１の種類の部分には、バスの種類が示されている。この例では、ＮＯＲＭＡＬ（ノーマル用バス）とされているが、用途に応じて、ＰｒｏｇｒａｍＲＯＭに接続されるインストラクションバス、主としてデータを読み込むデータバスというように分けられる。
【０１１４】
ＩＳＳ１割り込みテーブル１１０２は、割り込み信号がどのシミュレータから接続されているかどうかを管理している。割り込みテーブル１１０２の種類の部分には、割り込みがどの割り込みに割り付けられているかが示されている。これは、ＣＰＵによっては割り込み入力が複数本設けられているためである。
【０１１５】
ＰＳｉｍ１２１ｂは、接続テーブル１１０５を有している。このＰＳｉｍ１２１ｂ接続テーブル１１０５では、どのシミュレータがどのような目的で接続されているかを管理している。接続テーブル１１０５の種類の部分には、各シミュレータとの接続の種類が示されている。ＩＲＱは、ＩＳＳ１１２に対して割り込みをかける出力を表わす。Ｓｌａｖｅは、ＢＳｉｍ１３１と接続されており、このＢＳｉｍ１３１からリード要求やライト要求を受けることを示している。優先度は、同時にアクセスがあった場合に、どちらを優先するかを決めるパラメータである。ＰＳｉｍ１２１ｂの場合、接続テーブルに優先度は必要とされない。
【０１１６】
ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４は、接続テーブル１１０３を有している。このＰＳｉｍ（Ｂｒｉｄｇｅ）１２４接続テーブル１１０３は、ＰＳｉｍ１２１ｂの接続テーブル１１０５と同様であるが、種類の部分のＭａｓｔｅｒは、ＢＳｉｍ１３１と接続されており、ＢＳｉｍ１３１からリード要求やライト要求を受けるのみならず、ＢＳｉｍ１３１に対してバスマスタとなり、バスに対してリード要求やライト要求を出力することを示している。ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４は、ＢＳｉｍ１３１およびＢＳｉｍ１３２から同時にアクセスを受ける可能性があるため、どちらのアクセスを優先するかを決めるためのパラメータとして優先度が設定されている。
【０１１７】
ＢＳｉｍ１３１は、接続テーブル１１０４を有している。このＢＳｉｍ１３１接続テーブル１１０４では、どのシミュレータがどのような目的で接続されているかを管理している。接続テーブル１１０４の種類の部分には、各シミュレータとの接続の種類が示されている。種類のＩＳＳは、ＢＳｉｍ１３１にはＩＳＳ１１１が接続されており、アクセス要求が与えられることを表わしている。種類のＳｌａｖｅは、ＰＳｉｍ１２１ａ，１２１ｂなどが接続されており、ＢＳｉｍ１３１がアクセス可能なことを示している。種類のＭａｓｔｅｒは、ＢＳｉｍ１３１にはＰＳｉｍ１２４が接続されており、ＢＳｉｍ１３１がアクセス可能であると同時に、そのＰＳｉｍ１２４からもアクセスがあることを示している。また、接続テーブル１１０４のアドレスの部分には、対応するＰＳｉｍがアドレス空間のどこにマッピングされているかという情報が記録されている。優先度は、同時にアクセスがあった場合に、どちらを優先するかを決めるパラメータである。ＢＳｉｍ１３１は、ＩＳＳ１１１とＰＳｉｍ（Ｂｒｉｄｇｅ）１２４から同時にアクセスを受ける可能性があるため、どちらのアクセスを優先するかを決めるために優先度が設定されている。
【０１１８】
以下、他のシミュレータに対しても同様の設定を行うことにより、図２のようなシステムシミュレータ１０Ａが構成される。ＩＳＳ、ＰＳｉｍおよびＢＳｉｍは、多対多の接続が可能なインターフェースで接続されているため、図１６のようなシステム７００に対しても、システムシミュレータ１０Ａを構成することができる。
【０１１９】
上記構成により、図２に示すシステムシミュレータ１０Ａの各構成要素であるＩＳＳ、ＰＳｉｍおよびＢＳｉｍの各動作について説明する。
【０１２０】
図４は、図２のＩＳＳの動作を説明するためのフローチャートである。
【０１２１】
図４に示すように、まず、ステップＳ１では、ＩＳＳはウェイト処理を行う。これは、他のシミュレータと速度を合わせるために一時停止する処理である。このウェイト処理では、シミュレータマネージャ１７１に問い合わせを行い、シミュレーションの実行速度が他のものに比べて速いようであれば、シミュレータマネージャ１７１からシミュレータの一時停止が要求される。また、速度が調整されると、一時停止が解除され、ＩＳＳは再び動作し始める。
【０１２２】
このウェイト処理を終えると、ステップＳ２において、ＩＳＳはインストラクションを取得する。この処理は、ＩＳＳ接続テーブルから適切なＢＳｉｍを選択し、メモリリード要求（ペリフェラルであるプログラムＲＯＭにリード要求を出す）を出力することによって行われる。
【０１２３】
インストラクションが与えられると、ステップＳ３において、ＩＳＳはそのインストラクションを解析する。
【０１２４】
ステップＳ４およびステップＳ５では、ＩＳＳはインストラクションがメモリからのリードまたはメモリへのライトであるかどうかを判断する。インストラクションがメモリリードであればステップＳ７でメモリ読み出し処理を行い、また、メモリライトであればステップＳ８でメモリ書き込み処理を行い、それ以外の場合（メモリアクセス命令ではない場合）にはステップＳ６で内部状態を変更して、ステップＳ１の処理に戻る。
【０１２５】
図５は、図２のＢＳｉｍの動作を説明するためのフローチャートである。
【０１２６】
図５に示すように、まず、ステップＳ１１では、ＢＳｉｍはウェイト処理を行う。これは、ＩＳＳの場合と同様に、シミュレーションの実行速度を調整するためである。
【０１２７】
次に、ステップＳ１２において、ＢＳｉｍはアクセス受け付け処理を行う。これは、ＩＳＳなどからのアクセス要求を内部に取り込む処理である。
【０１２８】
ステップＳ１３では、ＢＳｉｍは、他のシミュレータからアクセス要求があるか否かをチェックし、他のシミュレータからアクセス要求がない場合（ＮＯ）には、ステップＳ１１の処理に戻る。他のシミュレータからアクセス要求があれば（ＹＥＳ）、次のステップＳ１４の処理に進む。
【０１２９】
ステップＳ１４では、ＢＳｉｍは、アクセス内容を見て、複数のシミュレータから同時にアクセスがあれば、ＢＳｉｍ接続テーブルの優先度を参照し、優先度が低い要求を保留させる。
【０１３０】
ステップＳ１５では、ＢＳｉｍは、ＰＳｉｍを呼び出してアクセスを行う。どのＰＳｉｍを呼び出すかについては、ＢＳｉｍ接続テーブルから判断することができるため、適切なＰＳｉｍを呼び出す。
【０１３１】
その後、ステップＳ１６では、ＢＳｉｍは、保留されていたアクセスがないかどうかをチェックし、保留されていたアクセスがあれば（ＹＥＳ）、ステップＳ１７でウェイト処理を行った後、ステップＳ１５の処理へ戻る。また、保留しているアクセスがない場合（ＮＯ）には、始めの状態のステップＳ１１の処理へ戻り、次のアクセスを待つ。
【０１３２】
図６は、図２のＰＳｉｍの動作を説明するためのフローチャートである。
【０１３３】
図６に示すように、まず、ステップＳ２１では、ＰＳｉｍはウェイト・割り込み処理を行う。これは、ＩＳＳおよびＢＳｉｍの場合と同様に、シミュレーションの実行速度を調整するためである。また、ここではそれ以外に、内部状態をチェックして、割り込みを発生させる必要があれば、対応するＩＳＳへ割り込み信号を出力する。割り込み信号は、ＰＳｉｍ接続テーブルによって管理されているため、このテーブルから適切なＩＳＳを選択して割り込みをかける。
【０１３４】
次に、ステップＳ２２では、ＰＳｉｍはアクセス受け付け処理を行う。これは、ＢＳｉｍなどからのアクセス要求を内部に取り込む処理である。
【０１３５】
ステップＳ２３では、他のシミュレータからアクセス要求があるか否かをチェックし、他のシミュレータからアクセス要求がない場合（ＮＯ）には、ステップＳ２４の処理に進み、他のシミュレータからアクセス要求があった場合（ＹＥＳ）には、ステップＳ２６の処理に進む。
【０１３６】
ステップＳ２４では、ＰＳｉｍ自体からＢＳｉｍへのアクセス（マスターアクセス）があるか否かをチェックして、ＰＳｉｍ自体からＢＳｉｍへのアクセス（マスターアクセス）があれば（ＹＥＳ）、ステップＳ２５の処理へ進み、また、ステップＳ２５でＢＳｉｍに対してアクセス要求を出力してステップＳ２１へ戻る。ステップＳ２４でこのマスターアクセスがない場合（ＮＯ）にはステップＳ２１の処理に戻る。
【０１３７】
ステップＳ２３で他のシミュレータからアクセス要求があった場合（ＹＥＳ）に、ステップＳ２６で、ＰＳｉｍは、アクセス内容を見て、複数のシミュレータから同時にアクセスがあれば、ＰＳｉｍ接続テーブルの優先度を参照し、優先度が低い要求を保留させる。
【０１３８】
ステップＳ２７では、ＰＳｉｍは、アクセス内容の処理を行い、内部状態を変更・参照させる。
【０１３９】
その後、ステップＳ２８では、ＰＳｉｍは、保留されていたアクセスがあるかどうかをチェックし、保留されていたアクセスがあれば（ＹＥＳ）、ステップＳ２９でウェイト処理を行った後、ステップＳ２７の処理に戻る。また、保留しているアクセスがない場（ＮＯ）合には、始めの状態のステップＳ２１の処理に戻り、次のアクセスを待つ。
【０１４０】
以下に、図２に示す本実施形態のシステムシミュレータ１０Ａによるシミュレーション処理について、ＩＳＳ１１１からＩＳＳ１１２にデータを送る場合を事例に挙げて説明する。
【０１４１】
図７は、図２における通信プログラムの一例を示すフローチャートであり、（ａ）は、ＩＳＳ１１１上で動作するプログラムであり、（ｂ）はＩＳＳ１１２上で動作するプログラムである。
【０１４２】
図７（ｂ）に示すように、初期状態では、ＩＳＳ１１２は、ステップＳ３３で割り込みがかかるのを待っている。
【０１４３】
図７（ａ）に示すように、ＩＳＳ１１１は、まず、ステップＳ３１において、ＰＳｉｍ１２２ｂに対して、ＩＳＳ１１２へ送りたいデータを書き込む。この書き込みは、ＢＳｉｍ１３１からＰＳｉｍ（Ｂｒｉｄｇｅ）１２４、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４からＢＳｉｍ１３２、ＢＳｉｍ１３２からＰＳｉｍ１２２ｂへとアクセス要求が伝播することによって行われる。
【０１４４】
図３の接続テーブル１１０３によれば、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４は、ＢＳｉｍ１３１およびＢＳｉｍ１３２に対してＭａｓｔｅｒとして登録されている。このため、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４は、ＢＳｉｍ１３１およびＢＳｉｍ１３２に対して双方向のデータ通信が可能である。よって、ＢＳｉｍ１３１はＰＳｉｍ（Ｂｒｉｄｇｅ）１２４に対してアクセス要求を与えることが可能であり、また、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４はＢＳｉｍ１３２に対してアクセス要求を与えることが可能である。したがって、ＩＳＳ１１１からＰＳｉｍ１２２ｂへのデータ書き込み要求は、ＢＳｉｍ１３１、ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４、ＢＳｉｍ１３２という経路を通って書き込むことができる。
【０１４５】
ＩＳＳ１１１は、書き込みが完了すると、ステップＳ３２において、ＰＳｉｍ１２１ｂのレジスタにデータを書き込む。ＰＳｉｍ１２１ｂは、これを受けて、ＩＳＳ１１２に割り込みをかける。
【０１４６】
ステップＳ３３で割り込み待ち状態となっていたＩＳＳ１１２では、ＰＳｉｍ１２１ｂからのこの割り込みを受けて、ステップＳ３４の処理に進む。
【０１４７】
ステップＳ３４において、ＩＳＳ１１２は、ＰＳｉｍ１２２ｂにアクセスして、先にＩＳＳ１１１から書き込まれたデータを読み込む。このような手順によって、ＩＳＳ１１１からＩＳＳ１１２へデータを送ることが可能となる。
【０１４８】
以上のように、本実施形態１によれば、システムシミュレータ１０ＡをＩＳＳ、ＰＳｉｍおよびＢＳｉｍの３種類のシミュレータによって構成し、各シミュレータ間を相互に状態の参照・変更が可能なインターフェースで接続することにより、図１６に示すような複雑な構成のシステム７００に対応可能で、かつ、構成を容易かつ柔軟に変更可能なシステムシミュレータ１０Ａを実現することができる。
（実施形態２）
本実施形態２では、図１７に示すシステム８００の動作をＰＣやＷＳ上で仮想的に実行するためのシステムシミュレータについて説明する。
【０１４９】
図８は、本発明の実施形態２に係るシステムシミュレータの要部構成例を示すブロック図である。
【０１５０】
図８において、システムシミュレータ１０Ｂは、図１７のシステムにおけるＣＰＵ８０１の動作をシミュレートするインストラクションセットシミュレータＩＳＳ１２０１と、図１７のシステム８００におけるペリフェラルとしてのＤａｔａＲＡＭ８０５およびＰｒｏｇｒａｍＲＯＭ８０４の動作をシミュレートするペリフェラルシミュレータＰＳｉｍ１２０４および１２０５と、図１７のシステム８００におけるバスとしてのｄａｔａ  ｂｕｓ８０２およびｉｎｓｔｒｕｃｔｉｏｎ  ｂｕｓ８０３の動作をシミュレートするバスシミュレータＢＳｉｍ１２０２およびＢＳｉｍ１２０３という３種類のシミュレータを有している。
【０１５１】
このシステムシミュレータ１０Ｂが設定される動作、およびＩＳＳ、ＰＳｉｍ、ＢＳｉｍの各シミュレータの動作については、上記実施形態１の場合と同様であるため、本実施形態２ではその説明を省略する。また、一般的なシステムでは、図８のようにデータバス１２０２にはデータＲＯＭ１２０４およびプログラムＲＯＭ１２０５の他にもペリフェラルが接続されているが、ここではその説明も省略する。
【０１５２】
図９は、図８の各シミュレータの接続テーブルの事例を示している。
【０１５３】
ＩＳＳ１２０１は、接続テーブル１３０１を有している。このＩＳＳ１２０１接続テーブル１３０１は、ＩＳＳ１２０１に接続されているＢＳｉｍとその種類を管理している。ＩＳＳ１２０１は、メモリアクセスが必要になった場合に、この接続テーブル１３０１から適切なＢＳｉｍを選択してアクセス要求を出力する。接続テーブル１３０１の種類の部分には、バスの種類が示されている。この例では、ＩＳＳ１２０１がハーバードアーキテクチャであり、データとインストラクションでバスが別れているため、ＰｒｏｇｒａｍＲＯＭに接続されるインストラクションバスと、ＤａｔａＲＡＭに接続されるデータバスに分けられている。
【０１５４】
ＰＳｉｍ１２０４は、接続テーブル１３０２を有している。このＰＳｉｍ１２０４接続テーブル１３０２では、どのシミュレータがどのような目的で接続されているかを管理している。この接続テーブル１３０２の種類の部分には、各シミュレータとの接続の種類が示されている。Ｓｌａｖｅは、ＢＳｉｍと接続されており、そのＢＳｉｍからリード要求やライト要求を受けることを示している。優先度は、同時にアクセスがあった場合に、どちらを優先するかを決めるパラメータである。ＰＳｉｍ１２０４の場合、接続テーブルに優先度は必要とされない。
【０１５５】
ＰＳｉｍ１２０５は、接続テーブル１３０３を有している。ＰＳｉｍ１２０５接続テーブル１３０３は、ＰＳｉｍ１２０４の接続テーブル１３０２の場合と同様であるが、ＢＳｉｍ１２０２およびＢＳｉｍ１２０３から同時にアクセスを受ける可能性があるため、どちらのアクセスを優先するかを決めるためのパラメータとして優先度が設定されている。
【０１５６】
ＢＳｉｍ１２０２は、接続テーブル１３０４を有している。このＢＳｉｍ１２０２接続テーブル１３０４では、どのシミュレータがどのような目的で接続されているかを管理している。接続テーブル１３０４の種類の部分には、各シミュレータとの接続の種類が示されている。種類のＩＳＳは、ＢＳｉｍ１２０２にＩＳＳ１２０１が接続されており、アクセス要求が与えられることを表わしている。種類のＳｌａｖｅは、ＰＳｉｍが接続されており、ＢＳｉｍ１２０２がアクセス可能なことを示している。また、接続テーブル１３０４のアドレスの部分には、対応するＰＳｉｍがアドレス空間のどこにマッピングされるかという情報が記録されている。優先度は、同時にアクセスがあった場合に、どちらを優先するかを決めるパラメータである。ＢＳｉｍ１１２０２は、ＩＳＳ１２０１とＰＳｉｍ１２０４およびＰＳｉｍ１２０５から同時にアクセスを受ける可能性があるため、どのアクセスを優先するかを決めるために優先度が設定されている。
【０１５７】
ＢＳｉｍ１２０３は、接続テーブル１３０５を有している。このＢＳｉｍ１２０３接続テーブル１３０５は、ＢＳｉｍ１２０２の接続テーブル１３０４の場合と同様である。
【０１５８】
以下に、図８に示す本実施形態２のシステムシミュレータ１０Ｂによるシミュレーション処理について、ＩＳＳ１２０１がプログラムＲＯＭから次のインストラクションを取得すると同時に、プログラムＲＯＭ中に格納されている定数をデータとして読み込む場合を事例に挙げて説明する。
【０１５９】
ＣＰＵがパイプライン方式を採用しており、かつ、ハーバードアーキテクチャの場合、データとインストラクションのアクセスが同時に起こる可能性がある。また、読み込もうとするデータが定数である場合、この定数はデータであっても、ＲＡＭではなく、プログラムＲＯＭに格納されることになる。
【０１６０】
まず、インストラクションを取得する動作について考える。
【０１６１】
ＩＳＳ１２０１は、接続テーブル１３０１を参照し、接続テーブル１３０１からＢＳｉｍ１２０３にアクセスするべきことが分かるため、ＢＳｉｍ１２０３にアクセス要求を出力する。
【０１６２】
このＢＳｉｍ１２０３では、このアクセス要求を受けると、接続テーブル１３０５を参照し、接続テーブル１３０５からＰＳｉｍ１２０５にアクセスするべきことが分かるため、ＰＳｉｍ１２０５にアクセス要求を出力する。
【０１６３】
同じタイミングで、ＩＳＳ１２０１はデータを取得する。
【０１６４】
ＩＳＳ１２０１は、接続テーブル１３０１を参照し、接続テーブル１３０１からＢＳｉｍ１２０２にアクセスするべきであることが分かるため、ＢＳｉｍ１２０２にアクセス要求を出力する。
【０１６５】
ＢＳｉｍ１２０２では、このアクセス要求を受けると、接続テーブル１３０４を参照し、接続テーブル１３０４からＰＳｉｍ１２０５にアクセスするべきであることが分かるため、ＰＳｉｍ１２０５にアクセス要求を出力する。
【０１６６】
ＢＳｉｍ１２０２およびＢＳｉｍ１２０３から同時にアクセスを受けたＰＳｉｍ１２０５は、接続テーブル１３０３を参照し、ＢＳｉｍ１２０２の方が優先度が高いため、まず、ＢＳｉｍ１２０２に対してデータを返した後、ＢＳｉｍ１２０３に対してデータを返す。
【０１６７】
以上のように、本実施形態２によれば、システムシミュレータ１０ＢをＩＳＳ、ＰＳｉｍおよびＢＳｉｍの３種類のシミュレータによって構成し、各シミュレータ間を相互に状態の参照・変更が可能なインターフェースで接続することにより、図１７に示すようなハーバードアーキテクチュアのＣＰＵにより、データとインストラクションでバスが別れているようなシステム８００に対しても対応可能で、かつ、構成を容易かつ柔軟に変更可能なシステムシミュレータ１０Ｂを実現することができる。
【０１６８】
なお、上記実施形態１、２では、特に説明しなかったが、上記システムシミュレータ１０Ａまたは１０Ｂを用いて、コンピュータ読み取り可能な可読記録媒体に記録された制御プログラムに基づいて、ソフトウェアとして上記図４〜図７の各フローチャートのシステムシミュレート方法を実行することができる。さらに、ここで、そのシステムシミュレート方法について説明する。
【０１６９】
例えばインストラクションセットシミュレータの動作工程として、この制御プログラムに基づいて、他のシミュレータと速度を合わせるために一時停止可能とするウェイト処理工程と、このウェイト処理工程後に、インストラクションを取得する工程と、該インストラクションが与えられると、該インストラクションを解析する工程と、該インストラクションがメモリからのリードまたはメモリへのライトであるかどうかを判断し、このインストラクションがメモリリードであればメモリ読み出し処理を行い、このインストラクションがメモリライトであればメモリ書き込み処理を行い、それら以外の場合には内部状態を変更して上記ウェイト処理工程に戻る工程とをコンピュータにより実行する。
【０１７０】
また、例えばバスシミュレータの動作工程として、制御プログラムに基づいて、他のシミュレータと速度を合わせるために一時停止可能とするウェイト処理工程と、このシミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、このアクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程と、  保留したアクセス要求のウェイト処理を行った後、当該アクセス要求に応じたペリフェラルシミュレータを呼び出してアクセスを行う工程とをコンピュータにより実行する。
【０１７１】
さらに、例えばペリフェラルシミュレータの動作工程として、制御プログラムに基づいて、他のシミュレータと速度を合わせるために一時停止可能とすると共に、内部状態に応じて割り込みを発生させる必要がある場合に、対応するインストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程と、シミュレータからのアクセス要求を内部に取り込むアクセス受付処理工程と、他のシミュレータからアクセス要求がない場合に、ペリフェラルシミュレータからバスシミュレータへのアクセス要求がなく、該ウェイト・割り込み処理工程に戻るかまたは、ペリフェラルシミュレータからバスシミュレータにアクセス要求がある場合に、対応するバスシミュレータにアクセス要求を出力してウェイト・割り込み処理工程に戻る工程と、複数のシミュレータからアクセス要求がある場合に、優先度が低いアクセス要求を保留する処理工程と、ペリフェラルシミュレータがアクセス内容のアクセス処理を行う工程と、保留したアクセス要求のウェイト処理を行った後、内部状態に応じて割り込みを発生させる必要がある場合に、対応するインストラクションセットシミュレータへ割り込み信号を出力するウェイト・割り込み処理工程とをコンピュータにより実行する。
【０１７２】
本発明のシステムシミュレート方法は、以上のインストラクションセットシミュレータの動作工程と、バスシミュレータの動作工程と、ペリフェラルシミュレータの動作工程とを有している。
【０１７３】
上記可読記録媒体としては、コンピュータ内のハードディスクや各種メモリ部であってもよく、または、携帯自在な光ディスク、磁気ディスクおよびＩＣメモリであってもよい。このような携帯自在な光ディスク、磁気ディスクおよびＩＣメモリなどの可読記録媒体からコンピュータ内のハードディスクや各種メモリ部に上記制御プログラムがダウンロードされてもよいし、無線または有線、さらにはインターネットを介してコンピュータ内のハードディスクや各種メモリ部に上記制御プログラムがダウンロードされてもよい。
【０１７４】
なお、前述したように、ペリフェラルシミュレータは、メモリ、割り込みコントローラ、タイマ、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）、液晶表示コントローラ（ＬＣＤＣ）、バス間を接続するブリッジ（Ｂｒｉｄｇｅ）またはＩ／Ｏコントローラなどの周辺機器の動作をシミュレートする。これは、ペリフェラルの一例として扱っているが、現実のシステムにおいてはもっと多様なペリフェラルを扱う可能性がある。それはLED表示装置（発光ダイオード表示器）やステッピングモータのような周辺機器の場合もあるし、もっと複雑なペリフェラルの可能性もある。したがって、多種多様なペリフェラルが本発明の対象になる。このような多種多様なペリフェラルも本発明のシミュレータとして実装できることは言うまでもないことである。ペリフェラルを上記メモリ〜Ｉ／Ｏコントローラに制限する必要は全くない。
【０１７５】
以上のように、本発明の好ましい実施形態１，２を用いて本発明を例示してきたが、本発明は、この実施形態１，２に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態１，２の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０１７６】
本発明は、開発対象となるシステム（ターゲットシステム）をパーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）などのシステム上で仮想的に実行するためのシステムシミュレータ、これを用いたシステムシミュレート方法、これをコンピュータに実行させるための制御プログラムおよび、これが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、システムシミュレータをＩＳＳ、ＰＳｉｍおよびＢＳｉｍの３種類のシミュレータによって構成し、各シミュレータ間を相互に状態の参照・変更が可能なインターフェースで接続することにより、複雑な構成に対応可能で、かつ、構成を容易かつ柔軟に変更可能なシステムシミュレータを実現することができる。
【図面の簡単な説明】
【０１７７】
【図１】本発明のシステムシミュレータの基本構成を示すブロック図である。
【図２】本発明の実施形態１のシステムシミュレータの構成例を示すブロック図である。
【図３】図２のシステムシミュレータにおけるテーブルの一例を示す図である。
【図４】図２のシステムシミュレータにおけるＩＳＳの動作を説明するためのフローチャートである。
【図５】図２のシステムシミュレータにおけるＢＳｉｍの動作を説明するためのフローチャートである。
【図６】図２のシステムシミュレータにおけるＰＳｉｍの動作を説明するためのフローチャートである。
【図７】図２のシステムシミュレータによりシミュレーションされる通信プログラムの例を示すフローチャートであり、（ａ）はＩＳＳ１１１上で動作するプログラムの例を示すフローチャート、（ｂ）はＩＳＳ１１２上で動作するプログラムの例を示すフローチャートである。
【図８】本発明の実施形態２のシステムシミュレータの要部構成例を示すブロック図である。
【図９】図８のシステムシミュレータにおけるテーブルの一例を示す図である。
【図１０】従来の一般的なシステムシミュレータの基本構成例を示すブロック図である。
【図１１】従来のマルチコアシステムの要部構成例を示すブロック図である。
【図１２】特許文献１に開示されている従来のシミュレーションシステムの要部構成例を示すブロック図である。
【図１３】特許文献２に開示されている従来のシステムシミュレータの要部構成例を示すブロック図である。
【図１４】従来技術によって表現可能なシステムの一例を示すブロック図である。
【図１５】従来技術によって表現可能なシステムの他の例を示すブロック図である。
【図１６】従来技術によって表現できないシステムの一例を示すブロック図である。
【図１７】ハーバードアーキテクチャのＣＰＵによるシステムの一例を示すブロック図である。
【符号の説明】
【０１７８】
１０Ａ、１０Ｂ  システムシミュレータ
１１，１１１、１１２、１２０１  インストラクションセットシミュレータ
１２、１２１ａ、１２１ｂ、１２２ａ  ペリフェラルシミュレータ
１３、１３１、１３２、１３３、１２０２、１２０３  バスシミュレータ
１４，１４１，１４２  インストラクションセットシミュレータ・バスシミュレータ間インターフェース
１５、１５１  バスシミュレータ・ペリフェラルシミュレータ間インターフェース
１６、１６１  ペリフェラルシミュレータ・インストラクションセットシミュレータ間インターフェース
１７、１７１  シミュレータマネージャー
１２３、１２４、１２５  ブリッジをシミュレーションするペリフェラルシミュレータ
１２２ｂ  メモリをシミュレーションするペリフェラルシミュレータ
１２６  ＬＣＤＣをシミュレーションするペリフェラルシミュレータ
１２７  ＳＤＲＡＭをシミュレーションするペリフェラルシミュレータ
１１０１  ＩＳＳ１１１接続テーブル
１１０２  ＩＳＳ１１１割り込みテーブル
１１０３  ＰＳｉｍ（Ｂｒｉｄｇｅ）１２４接続テーブル
１１０４  ＢＳｉｍ１３１接続テーブル
１１０５  ＰＳｉｍ１２１ｂ接続テーブル
１２０４  データＲＡＭをシミュレートするペリフェラルシミュレータ
１２０５  プログラムＲＯＭをシミュレートするペリフェラルシミュレータ
１３０１  ＩＳＳ接続テーブル
１３０２  ＰＳｉｍ１接続テーブル
１３０３  ＰＳｉｍ２接続テーブル
１３０４  ＢＳｉｍ１接続テーブル
１３０５  ＢＳｉｍ２接続テーブル
【図１】
2007011720.tif 000003
【図２】
2007011720.tif 000004
【図３】
2007011720.tif 000005
【図４】
2007011720.tif 000006
【図５】
2007011720.tif 000007
【図６】
2007011720.tif 000008
【図７】
2007011720.tif 000009
【図８】
2007011720.tif 000010
【図９】
2007011720.tif 000011
【図１０】
2007011720.tif 000012
【図１１】
2007011720.tif 000013
【図１２】
2007011720.tif 000014
【図１３】
2007011720.tif 000015
【図１４】
2007011720.tif 000016
【図１５】
2007011720.tif 000017
【図１６】
2007011720.tif 000018
【図１７】
2007011720.tif 000019