(57)【特許請求の範囲】
【請求項１】
プロセッサを備えるシステムのシミュレーション装置であって、
命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行する命令レベルシミュレーション部と、
命令単位でのシミュレーションによってレイテンシ算出不可能な動作について、前記システムのハードウエアを再現したサイクル単位でのシミュレーションを実行する論理レベルシミュレーション部と、
シミュレーションで使用する資源が使用可能になる時刻情報を格納する資源管理表を備える資源管理部と、を備え、
前記命令レベルシミュレーション部は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、前記論理レベルシミュレーション部にサイクル単位でのシミュレーションの実行を要求し、
前記論理レベルシミュレーション部は、要求されたサイクル単位でのシミュレーションの結果に基づいて、シミュレーションで使用する資源が使用可能になる時刻情報を、前記資源管理部に通知し、
前記資源管理部は、シミュレーションで使用する資源が使用可能になる時刻情報を格納することを特徴とするシミュレーション装置。
【請求項２】
前記命令レベルシミュレーション部は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、シミュレーションで使用する資源が使用可能になる時刻が不明であることを、前記資源管理部に通知する請求項１に記載のシミュレーション装置。
【請求項３】
前記命令レベルシミュレーション部は、
命令単位でのシミュレーションによってレイテンシ算出不可能な動作の後の前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出するまで、命令単位でのシミュレーションを継続し、
前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出した時点で命令単位でのシミュレーションを停止し、
前記資源管理部が、前記後続命令の必要とする資源が使用可能になる時刻情報を格納すると、命令単位でのシミュレーションを再開し、格納された前記時刻情報を利用する請求項２に記載のシミュレーション装置。
【請求項４】
前記論理レベルシミュレーション部は、要求されたサイクル単位でのシミュレーションの実行が終了すると、未処理の要求が残留していない場合には、動作を停止する請求項３に記載のシミュレーション装置。
【請求項５】
シミュレーション処理要求が存在する前記命令レベルシミュレーション部および前記論理レベルシミュレーション部に対してのみ、処理実行要求を行うスケジューラを備える請求項４に記載のシミュレーション装置。
【請求項６】
当該シミュレーション装置は、複数の前記命令レベルシミュレーション部と、複数の前記論理レベルシミュレーション部と、複数の前記資源管理部と、を備え、
前記後続命令の必要とする資源を管理している前記資源管理部は、前記後続命令の必要とする資源が使用可能になるのを待機している前記命令レベルシミュレーション部以外の他の前記命令レベルシミュレーション部または複数の前記論理レベルシミュレーション部から、前記資源が使用可能になる時刻情報が通知されると、前記資源が使用可能になる時刻情報を格納し、
前記スケジューラは、前記資源が使用可能になる時刻情報の更新をトリガとして、前記後続命令の必要とする資源が使用可能になるのを待機している前記命令レベルシミュレーション部に処理再開要求を行う請求項５に記載のシミュレーション装置。
【請求項７】
プロセッサを備えるシステムのシミュレーション方法であって、
命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行し、
命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、前記システムのハードウエアを再現したサイクル単位でのシミュレーションを実行し、
前記サイクル単位でのシミュレーションの結果に基づいて、前記レイテンシ算出不可能な動作のレイテンシが関係する資源が使用可能になる時刻情報を格納することを特徴とするシミュレーション方法。
【請求項８】
命令単位でのシミュレーションによってレイテンシ算出不可能な動作の後、前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出するまで、命令単位でのシミュレーションを継続し、
前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出した時点で命令単位でのシミュレーションを停止し、
前記レイテンシ算出不可能な動作のレイテンシが関係する資源が使用可能になる時刻情報が格納されると、命令単位でのシミュレーションを再開し、格納された前記時刻情報を利用する請求項７に記載のシミュレーション方法。
【請求項９】
コンピュータに、プロセッサを備えるシステムのシミュレーションを実行させるシミュレーション用プログラムであって、
命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行し、
命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、前記システムのハードウエアを再現したサイクル単位でのシミュレーションを実行し、
前記サイクル単位でのシミュレーションの結果に基づいて、前記レイテンシ算出不可能な動作のレイテンシが関係する資源が使用可能になる時刻情報を格納するように、制御することを特徴とするシミュレーション用プログラム。
【請求項１０】
命令単位でのシミュレーションによってレイテンシ算出不可能な動作の後、前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出するまで、命令単位でのシミュレーションを継続し、
前記レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出した時点で命令単位でのシミュレーションを停止し、
前記レイテンシ算出不可能な動作のレイテンシが関係する資源が使用可能になる時刻情報が格納されると、命令単位でのシミュレーションを再開し、格納された前記時刻情報を利用するように制御する請求項９に記載のシミュレーション用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサを備えるシステムのシミュレーション装置、方法およびプログラムに関する。
【背景技術】
【０００２】
ＣＰＵやＤＳＰなどのプロセッサは、複雑な内部構成を備える。プロセッサおよびプロセッサを備えるシステムは、ハードウエアの詳細な設計前の段階において、実際のアプリケーションに近いソフトウエアを動作させることにより、システム全体での性能評価を行い、性能を確認することが求められている。そのため、設計前段階の実際のハードウエアが存在していない段階で、ハードウエアを忠実に再現したシミュレーションが行われる。
【０００３】
図１は、プロセッサ（プロセッサコア）を備えるシステムの基本構成を示す図であり、（Ａ）がシステムの構成を、（Ｂ）がプロセッサコアの内部構成を示す。
【０００４】
図１の（Ａ）に示すように、システムは、プロセッサコア１と、バス２と、高速メモリ３と、低速メモリ４と、ＤＭＡＣ５と、アクセラレータ６と、外部Ｉ／Ｆ７と、外部ＨＷ（ハードウエア）シュード８と、を備える。プロセッサコア１、高速メモリ３、低速メモリ４、ＤＭＡＣ５およびアクセラレータ６は、バス２を介して相互に接続される。外部ＨＷシュード８は、外部Ｉ／Ｆおよびバス２を介して他の要素に接続される。図１の（Ａ）に示した例は、システムの基本構成であり、複数のプロセッサコアを備えるなど各種の変形例があり得るのは言うまでもない。
【０００５】
図１の（Ｂ）に示すように、プロセッサコア１は、命令キャッシュ１１と、命令フェッチ部１２と、命令デコード部１３と、命令実行部１４と、データキャッシュ１５と、を備える。命令キャッシュ１１は、バス２から入力される命令を格納する。データキャッシュ１５は、バス２から入力されるデータを格納すると共に、バス２に出力するデータを格納する。命令フェッチ部１２は、命令キャッシュ１１から実行順に命令を読み出して命令デコード部１３に出力する。命令デコード部１３は、命令をデコードして、命令実行部１４に出力する。命令実行部１４は、デコードされた命令を実行する。命令実行部１４は、命令を実行する時に必要なデータをデータキャッシュ１５から読み出すと共に、命令の実行の結果得られたデータをデータキャッシュ１５に格納する。命令キャッシュ１１に格納されている命令を、データキャッシュ１５に格納されているデータを使用して実行する場合には、命令は所定のサイクルで実行可能である。これに対して、命令キャッシュ１１に格納されていない命令を実行する場合には、バス２を介して命令キャッシュ１１に命令を読み込む必要がある。この場合、バスの使用権などの関係で、状況により命令キャッシュ１１への命令の入力に要する時間が一定ではない。また、命令を実行するために必要なデータがデータキャッシュ１５に格納されていない場合、バス２を介してデータキャッシュ１５にデータを読み込む必要がある。この場合も、バスの使用権などの関係で、状況によりデータキャッシュ１５への命令の入力に要する時間が一定ではない。命令をフェッチしてから実行を開始するまでの時間（サイクル数）をレイテンシと呼ぶ。従って、命令キャッシュ１１に格納されていない命令を実行する場合および命令を実行するために必要なデータがデータキャッシュ１５に格納されていない場合は、レイテンシは一定ではない。また、実行する命令が命令キャッシュ１１に記憶されていない場合および命令を実行するために必要なデータがデータキャッシュ１５に記憶されていない場合を、キャッシュミスと呼ぶ。キャッシュミスが発生した場合には、キャッシュのハードウェアにより、命令キャッシュ１１またはデータキャッシュ１５に命令またはデータをロードする。以上の構成は広く知られているので、これ以上の説明は省略する。なお、図１の（Ｂ）に示した例は、プロセッサコアの基本構成であり、各種の変形例があり得るのは言うまでもない。
【０００６】
シミュレーション装置は、コンピュータにおいてソフトウエアにより実現される。図２は、広く知られているコンピュータのハードウエア構成を示す図である。図２に示すように、コンピュータは、ＣＰＵ８１と、メモリ８２と、記憶装置８３と、表示装置８４と、入力装置８５と、外部メモリであるディスク装置８７を駆動するドライブ装置８６と、バス８８と、を備える。コンピュータについての説明は省略する。
【０００７】
性能評価を行うシミュレーション装置としては、プロセッサの命令単位での動作に着目してシミュレーションを行う命令レベルシミュレーション装置と、プロセッサのサイクル単位での動作に着目してシミュレーションを行う論理レベルシミュレーション装置と、が広く使用される。
【０００８】
図３は、命令レベルシミュレーション装置によるシミュレーションを説明する図である。図３に示すように、命令レベルシミュレーションでは、１命令ごとに解釈および実行を行い、命令実行に要する時間を積み上げていくことにより、性能評価対象であるシステムで命令列を実行した場合のプロセッサの処理時間を算出する。図３に示す例では、通常命令はパイプライン動作で１サイクルに１命令ずつ処理されるため、１命令につき１サイクル分の時間をプロセッサ処理時間として積み上げていく。キャッシュミスなどを発生したロード命令の場合は、内部レイテンシに、所定の値であると仮定したメインメモリアクセス時間を加えた時間をプロセッサの処理時間に積み上げていく。
【０００９】
図３に示した命令レベルシミュレーションは、命令単位でプロセッサの動作をシミュレーションするため、シミュレーションを高速に行える。しかし、プロセッサ内部のハードウエア構成を忠実に再現していないため、動作中のプロセッサの内部状態を再現することはできない。そのため、性能評価対象であるプロセッサが、ノンブロッキングキャッシュや分岐予測器などの複雑な機構を備えている場合、命令レベルシミュレーションではこれらの機構の動作を表現することができない。そのため、命令レベルシミュレーションでは、プロセッサの性能を正確に評価することはできない。図３の例では、メインメモリアクセスに要する時間は一定ではない。
【００１０】
一方で，ハードウェアの検証に用いられる、論理レベルシミュレーション装置を性能評価に用いることができる。
【００１１】
図４は、論理レベルシミュレーション装置によるシミュレーションを説明する図である。図４に示すように、論理レベルシミュレーションでは、１サイクルずつプロセッサの動作をシミュレーションし、性能評価対象のプロセッサの命令列の実行を終了した時に、何サイクルのシミュレーションを行ったかに基づいて、プロセッサの処理時間を算出する。例えば、図２に示すように、命令２はメインメモリアクセスを伴うが、実際のメインメモリアクセスを再現して処理に要する時間を忠実に再現する。命令５で、命令２が発生したメインメモリ（外部メモリ）アクセスによる書き込みデータを使用する場合、メインメモリアクセスによるデータの書き込みが完了するまで待機し、その待機に要した時間（サイクル数）も計算される。
【００１２】
論理レベルシミュレーションは、プロセッサ内部のハードウエアを忠実に再現しているため、プロセッサの内部状態を正確に再現することができる。このため、性能評価対象のプロセッサが、複雑な機構を備えている場合であっても、プロセッサが備える性能を正確に評価することができる。
【００１３】
しかし、論理レベルシミュレーションでは、プロセッサ内部での各命令の各サイクルの処理を忠実にシミュレーションする必要があり、命令レベルシミュレーションと比較して、シミュレーションに必要な計算量が多くなる。従って、論理レベルシミュレーションは、命令レベルシミュレーションと比較して、低速であり、シミュレーション時間が長くなる。
【００１４】
以上説明したように、性能評価を行うシミュレーションでは、精度と速度のトレードオフが存在し、高い精度で性能評価を行う場合シミュレーションが低速となり、シミュレーションを高速化するには精度を低下させなければならない。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平１−０６７６４５号公報
【特許文献２】特開平８−１１０９１９号公報
【特許文献３】特開２００１−２７３３４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
実施形態は、精度を維持しながら、高速化を図ったシミュレーション装置および方法を記載する。
【課題を解決するための手段】
【００１７】
実施形態の第１の態様は、プロセッサを備えるシステムのシミュレーション装置であって、命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行する命令レベルシミュレーション部と、命令単位でのシミュレーションによってレイテンシ算出不可能な動作について、システムのハードウエアを再現したサイクル単位でのシミュレーションを実行する論理レベルシミュレーション部と、シミュレーションで使用する資源が使用可能になる時刻情報を格納する資源管理表を備える資源管理部と、を備える。命令レベルシミュレーション部は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、論理レベルシミュレーション部にサイクル単位でのシミュレーションの実行を要求する。これに応じて、論理レベルシミュレーション部は、要求されたサイクル単位でのシミュレーションの結果に基づいて、シミュレーションで使用する資源が使用可能になる時刻情報を、資源管理部に通知する。これに応じて、資源管理部は、シミュレーションで使用する資源が使用可能になる時刻情報を格納する。
【００１８】
また、実施形態の第２の態様は、プロセッサを備えるシステムのシミュレーション方法であって、命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行し、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、システムのハードウエアを再現したサイクル単位でのシミュレーションを実行し、サイクル単位でのシミュレーションの結果に基づいて、レイテンシ算出不可能な動作のレイテンシが関係する資源が使用可能になる時刻情報を格納する。
【発明の効果】
【００１９】
実施形態によれば、プロセッサを備えるシステムのシミュレーションが、精度を維持しながら、高速に行える。
【図面の簡単な説明】
【００２０】
【図１】図１は、シミュレーションの対象であるプロセッサを備えるシステムの構成およびプロセッサの構成を示す図である。
【図２】図２は、シミュレーション装置が実現される、一般的なコンピュータのハードウエア構成を示す図である。
【図３】図３は、一般的な命令レベルシミュレーションの動作を説明する図である。
【図４】図４は、一般的な論理レベルシミュレーションの動作を説明する図である。
【図５】図５は、第１実施形態におけるシミュレーション装置の構成を示す図である。
【図６】図６は、第１実施形態における命令レベルシミュレーション部の動作を説明する図である。
【図７】図７は、第１実施形態における論理レベルシミュレーション部の動作を説明する図である。
【図８】図８は、第１実施形態における資源管理部の構成を示す図である。
【図９】図９は、第１実施形態におけるシミュレーション動作を示すブロック図である。
【図１０】図１０は、第１実施形態における動作を示すフローチャートである。
【図１１】図１１は、第１実施形態におけるシミュレーション動作例のタイムチャートである。
【図１２】図１２は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１３】図１３は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１４】図１４は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１５】図１５は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１６】図１６は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１７】図１７は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１８】図１８は、第１実施形態におけるシミュレーション動作を行った場合の、資源管理部の資源管理表内の値の変化を示す図である。
【図１９】図１９は、第２実施形態におけるシミュレーション動作を示すブロック図である。
【図２０】図２０は、第２実施形態におけるシミュレーション動作例のタイムチャートである。
【発明を実施するための形態】
【００２１】
第１実施形態のシミュレーション装置（シミュレータ）は、図２に示したようなハードウエア構成を備えるコンピュータ上でソフトウエアにより実現され、図１に示したようなプロセッサを備えるシステムをシミュレーションする。
【００２２】
図５は、第１実施形態のシミュレーション装置（シミュレータ）の機能ブロック図である。図５に示すように、シミュレーション装置は、命令レベルシミュレーション部２１と、論理レベルシミュレーション部２２と、資源管理部２３と、制御部（スケジューラ）２４と、を備える。
【００２３】
命令レベルシミュレーション部２１は、命令単位でのシミュレーションによってレイテンシ算出可能な動作について、命令単位でのシミュレーションを実行する。論理レベルシミュレーション部２２は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作について、システムのハードウエアを再現したサイクル単位でのシミュレーションを実行する。資源管理部２３は、シミュレーションで使用するプロセッサ内のレジスタ、演算器、ポートなどの資源が使用可能になる時刻情報を格納する。また、資源管理部２３は、シミュレーションを行う一連の命令に関する情報を格納している。スジューラ２４は、命令レベルシミュレーション部２１および論理レベルシミュレーション部２２への開始要求および待ち合わせの解除を制御する。
【００２４】
命令レベルシミュレーション部２１は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の場合に、論理レベルシミュレーション部２２にサイクル単位でのシミュレーションの実行を要求すると共に、シミュレーションで使用する資源が使用可能になる時刻が不明であることを資源管理部２３に通知する。
【００２５】
論理レベルシミュレーション部２２は、要求されたサイクル単位でのシミュレーションを実行し、その結果に基づいて、シミュレーションで使用する資源が使用可能になる時刻情報を資源管理部２３に通知する。論理レベルシミュレーション部２２は、要求されたサイクル単位でのシミュレーションの実行が終了すると、未処理の要求が残留しているか判定し、残留している場合には要求されたサイクル単位でのシミュレーションを実行し、残留いない場合には動作を停止する。
【００２６】
資源管理部２３は、シミュレーションで実行する命令に関する情報を格納すると共に、シミュレーションで使用する資源が使用可能になる時刻情報を格納する。なお、命令レベルシミュレーション部２１は、命令単位でのシミュレーションによってレイテンシ算出不可能な動作の後のレイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出するまで、命令単位でのシミュレーションを継続する。そして、命令レベルシミュレーション部２１は、レイテンシ算出不可能な動作のレイテンシを必要とする後続命令を検出した時点で命令単位でのシミュレーションを停止する。資源管理部２３が、後続命令の必要とする資源が使用可能になる時刻情報を更新すると、命令レベルシミュレーション部２１は、命令単位でのシミュレーションを再開し、更新された時刻情報を利用して命令単位でのシミュレーションを続行する。
【００２７】
スケジューラ２４は、命令レベルシミュレーション部２１が使用する資源が使用不可能で待ち合わせをしている場合に、論理レベルシミュレーション部２２から資源が使用可能になる時刻が通知されると、命令レベルシミュレーション部２１の待ち合わせを解除する。また、スケジューラ２４は、命令レベルシミュレーション部２１が論理レベルシミュレーション部２２にシミュレーション要求を行った場合に、要求を待ち合わせている論理レベルシミュレーション部２２の待ち合わせを解除する。
【００２８】
図６は、命令レベルシミュレーション部２１の動作を説明する図であり、時刻ａで、資源管理部２３の資源Ｂを使用し、結果を資源Ａに格納する処理Ａをシミュレーションする例を示す。ここで、資源管理部２３は、シミュレーションで実行する処理の命令を格納する命令格納部２３Ａと、資源に関する情報を格納する資源情報格納部２３Ｂと、を備える。
【００２９】
スケジューラ２４からのシミュレーション開始要求に応じて、命令レベルシミュレーション部２１は、資源管理部２３の命令格納部２３Ａに格納された時刻ａでの処理Ａを選択する。命令レベルシミュレーション部２１は、資源管理部２３の資源情報格納部２３Ｂに格納された資源Ｂの情報から処理Ａが処理可能であるか判定する。処理可能と判定した場合には、資源Ｂを使用して処理Ａを実行し、処理Ａの種別条件からレイテンシを算出し、結果であるレイテンシを資源管理部２３の資源情報格納部２３Ｂの資源Ａに格納する。実行する処理の種類、条件などに応じて、論理レベルシミュレーションが必要ならば、論理レベルシミュレーション部２２に論理レベルシミュレーションを要求する。命令レベルシミュレーション部２１は、図３で説明した一般的な方法で実現できる。
【００３０】
命令レベルシミュレーション部２１は、指示された処理Ａが命令キャッシュ１１に存在しない場合や、使用する資源Ｂが使用不可能の場合、処理不可能と判定してシミュレーションを停止して待機する。
【００３１】
図７は、論理レベルシミュレーション部２２の動作を説明する図である。論理レベルシミュレーション部２２は、命令レベルシミュレーション部２１からの要求（処理リクエスト）に応じて、プロセッサのハードウエア内部のステートマシン、パイプライン、キュー構造などを忠実に再現してシミュレーションを行う。論理レベルシミュレーション部２２は、処理に要する時間を、資源管理部２３に通知する。資源管理部２３は、処理のレイテンシに、論理レベルシミュレーション部２２が算出した処理時間を加えて、資源が使用可能になる時刻を算出する。論理レベルシミュレーション部２２は、図４で説明した一般的な方法で実現できる。
【００３２】
図８は、資源管理部２３の構成を示す図である。図８に示すように、資源管理部２３は、資源管理表と、命令実行時刻計算部３３と、を備える。資源管理表は、第１資源管理表３１と、第２資源管理表３２と、に分けられる。第１資源管理表３１は、エントリ番号、命令種類、使用資源１、使用資源２、使用資源３、および使用可能時刻（レイテンシ）を対応づけて格納する。第２資源管理表３２は、第１資源管理表３１の資源ごとに、使用可能時刻を格納する。命令実行時刻計算部３３は、第１資源管理表３１の命令に対応した使用可能時刻、第２資源管理表３２の使用する資源の使用可能時刻から、命令実行時刻を算出して出力する。ここでは、命令実行時刻計算部３３は、関係する複数の使用可能時刻の最大値を選択して出力する。資源管理部２３は、キュー構造（ＦＩＦＯ）を備え、エントリを順番に処理するパイプラインレジスタを実現する。
【００３３】
図９は、第１実施形態における動作を説明するブロック図である。図９では、命令レベルシミュレーション部２１は、命令実行動作をシミュレーションする命令実行シミュレーション部２１Ａと、キャッシュに対するアクセス動作をシミュレーションするキャッシュシミュレーション部（命令単位）２１Ｂと、に分けて示される。同様に、論理レベルシミュレーション部２２は、キャッシュに対するアクセス動作をシミュレーションするキャッシュシミュレーション部（サイクル単位）２２Ａと、バスおよびメモリなどへのアクセスをシミュレーションするバス・メモリ等シミュレーション部２２Ｂと、に分けて示される。
【００３４】
スケジューラ（乗り移り制御）２４は、命令実行シミュレーション部２１Ａに、命令単位で、シミュレーション開始要求を出力する。これに応じて、命令実行シミュレーション部２１Ａは、資源管理部２３から、実行可能な命令を得て命令レベルシミュレーション動作を開始し、内部でシミュレーション可能であればシミュレーションを行い、結果を資源管理部２３に格納する。また、命令実行シミュレーション部２１Ａは、命令の実行のためにキャッシュアクセスが必要であれば、キャッシュシミュレーション部（命令単位）２１Ｂに、キャッシュアクセスを要求する。キャッシュシミュレーション部（命令単位）２１Ｂは、キャッシュアクセスを受け付け、キャッシュアクセスのシミュレーションを行う。キャッシュヒット（キャッシュに命令またはデータがある）であれば、キャッシュシミュレーション部（命令単位）２１Ｂは、資源管理部２３にシミュレーション結果を通知する。キャッシュミス（キャッシュに命令またはデータがない）であれば、キャッシュシミュレーション部（命令単位）２１Ｂは、キャッシュシミュレーション部（サイクル単位）２２Ａに、サイクル単位のシミュレーション処理を要求する。それと共に、キャッシュシミュレーション部（命令単位）２１Ｂは、資源管理部２３に、キャッシュアクセスした結果として資源の使用可能時刻が不明であることを通知する。
【００３５】
キャッシュシミュレーション部（サイクル単位）２２Ａは、キャッシュシミュレーション部（命令単位）２１Ｂからのシミュレーション要求を受け付け、キャッシュリプレース動作（外部メモリからキャッシュへのデータ転送）のシミュレーションを行い、バス・メモリ等シミュレーション部２２Ｂにアクセス要求を出す。
【００３６】
バス・メモリ等シミュレーション部２２Ｂは、キャッシュシミュレーション部（サイクル単位）２２Ａとの間で信号線を再現したインターフェースで接続され、キャッシュシミュレーション部（サイクル単位）２２Ａからのメモリアクセス要求を受付、適切なレイテンシを再現して、その結果をキャッシュシミュレーション部（サイクル単位）２２Ａに返す。キャッシュシミュレーション部（サイクル単位）２２Ａは、この結果を、資源管理部２３に通知する。
【００３７】
資源管理部２３は、命令実行シミュレーション部２１Ａ、キャッシュシミュレーション部（命令単位）２１Ｂおよびキャッシュシミュレーション部（サイクル単位）２２Ａから通知される結果を受付、内部の資源管理表に格納する。
【００３８】
図１０は、第１実施形態における動作を示すフローチャートであり、左側が命令レベルシミュレーション部２１の動作を、右側が論理レベルシミュレーション部２２の動作を示す。
【００３９】
命令レベルシミュレーション２００では、ステップ２０１で、命令レベルシミュレーション部２１が、スケジューラ２４からシミュレーション開始要求を受け、それに応じて資源管理部２３から処理すべき命令を得る。
【００４０】
ステップ２０２では、命令レベルシミュレーション部２１が、得られた命令が使用する資源について、資源管理部２３に問い合わせ、資源が使用可能になるまで待ち合わせる。なお、アウトオブオーダーの命令発行機構を備えるプロセッサを正確にシミュレーションする場合は、命令レベルシミュレーション部２１が、資源が使用可能である命令を、資源管理部２３から受けるようにする。資源が使用可能な命令が存在していなければ、資源管理部２３が待ち合わせるようにして、ステップ２０１と２０２を同時に行うようにしてもよい。
【００４１】
ステップ２０２では、命令レベルシミュレーション部２１は、シミュレーションする命令が使用する資源がその時点で使用不可能であれば待ち合わせるが、使用可能であれば処理を継続する。
【００４２】
ステップ２０３では、命令レベルシミュレーション部２１が、命令を解釈してキャッシュアクセスを含めて命令実行をシミュレーションする。
【００４３】
ステップ２０４では、命令レベルシミュレーション部２１が、シミュレーション対象命令が、固定値のレイテンシを持つ演算命令であった場合やキャッシュヒットするロード命令であった場合など、レイテンシ算出が可能であるか判定する。可能であれば、命令レベルシミュレーション部２１の制御は、ステップ２０５に進む。キャッシュミスが発生するロード命令など、レイテンシ算出が不可能である場合には、命令レベルシミュレーション部２１の制御はステップ２０６に進む。
【００４４】
ステップ２０５では、命令レベルシミュレーション部２１が、シミュレーション対象命令の結果に関係する資源が使用可能になる時刻を算出し、ステップ２０８に進む。
【００４５】
ステップ２０６では、命令レベルシミュレーション部２１が、論理レベルシミュレーショ部２２にレイテンシ算出が不可能である命令のシミュレーションを要求する。この時、命令レベルシミュレーション部２１は、論理レベルシミュレーショ部２２でのシミュレーションに必要な情報を一緒に通知する。シミュレーション要求の通知方法は、論理レベルシミュレーショ部２２に直接通知する方法、スケジューラ２４を介して行う方法、資源管理部２３の資源管理表のプロセッサ内部資源のエントリを使用する方法などがある。これにより、シミュレーションの一部が論理レベルシミュレーション３００に乗り移るが、命令レベルシミュレーションはそのまま続行し、ステップ２０７に進む。
【００４６】
ステップ２０７では、命令レベルシミュレーション部２１が、シミュレーション対象命令の結果に関係する資源が使用可能になる時刻を不明に設定し、ステップ２０８に進む。
【００４７】
ステップ２０８では、資源管理部２３の資源管理表の書き込み先エントリ（その命令の結果格納先）に、その資源が使用可能になる時刻を格納する。したがって、ステップ２０５からステップ２０８に進む場合には、資源が使用可能になる時刻が格納され、ステップ２０７からステップ２０８に進む場合には、資源が使用可能になる時刻は不明になる。
【００４８】
ステップ２０８の後ステップ２０１に戻り、以上のステップを繰り返す。
【００４９】
論理レベルシミュレーション３００では、ステップ３０１で、論理レベルシミュレーション部２２が、命令レベルシミュレーション部２１からのシミュレーション要求が残留しているかチェックする。シミュレーション要求があれば、論理レベルシミュレーション部２２は、命令レベルシミュレーション部２１からのシミュレーション要求を待つ。シミュレーション要求がある場合には、論理レベルシミュレーション部２２の制御は、ステップ３０２に進む。
【００５０】
ステップ３０２では、論理レベルシミュレーション部２２が、１サイクル分のサイクル単位シミュレーションを行い、ステップ３０３に進む。
【００５１】
ステップ３０３では、論理レベルシミュレーション部２２が、要求されたシミュレーション処理が完了したかを判定し、完了していなければステップ３０１に戻り、完了していればステップ３０４に進む。完了していない場合、ステップ３０１を経てステップ３０２が繰り返し行われることになり、要求されたシミュレーション処理が完了する。
【００５２】
ステップ３０４では、論理レベルシミュレーション部２２が、シミュレーションの結果得られたシミュレーション対象命令の結果に関係する資源が使用可能になる時刻を、資源管理部２３の資源管理表の書き込み先エントリ（その命令の結果格納先）に、格納し、ステップ３０１に進む。以下、シミュレーション要求が残留していればステップ３０１から３０４を繰り返し、残留していなければステップ３０１で待ち合わせる。
【００５３】
資源管理表への時刻書き込みにより、シミュレーションの一部が再び論理レベルシミュレーション３００から命令レベルシミュレーション２００に乗り移る。これにより、ステップ２０２で命令レベルシミュレーション部２１の制御が待ち合わせている場合には、待ち合わせが解消して制御が進むことになる。
【００５４】
上記の動作において、資源管理部２３は、命令レベルシミュレーション部２１からの資源要求アクセスがあった場合は、命令レベルシミュレーション部２１が要求する資源の使用可能時刻に基づいて、その時点で資源が使用可能であるかを判定し、判定結果を返す。資源管理部２３は、命令レベルシミュレーション部２１からの結果格納アクセスがあった場合は、通知された結果を格納して資源管理表を更新する。同様に、資源管理部２３は、論理レベルシミュレーション部２２からの結果格納アクセスがあった場合は、通知された結果を格納して資源管理表を更新する。資源管理部２３は、資源管理表を更新した場合には、そのことをスケジューラ２４に通知する。
【００５５】
スケジューラ２４は、命令レベルシミュレーション部２１が使用不可能であるために待ち合わせている資源について、論理レベルシミュレーション部２２から使用可能になる時刻が通知された場合に、命令レベルシミュレーション部２１の待ち合わせを解除する。さらに、スケジューラ２４は、命令レベルシミュレーション部２１が論理レベルシミュレーション部２２にシミュレーション要求を行った場合に、論理レベルシミュレーション部２２の待ち合わせを解除する。
【００５６】
図１１は、第１実施形態におけるシミュレーション動作例のタイムチャートであり、（Ａ）は比較のため一般的な論理レベルシミュレーションを行った場合を示し、（Ｂ）は第１実施形態のシミュレーションを行った場合を、示す。図１１において、ＩＦは命令フェッチを、ＩＤは命令デコードを、ＥＸは命令実行を、ＤＣはデータキャッシュアクセスを、ＷＢは書き戻し(Write Back)を、ｍｅｍはメモリアクセスを、ｗａｉｔは資源が使用可能になるまでの待ち合わせ（結果待ち合わせ）を、示す。
【００５７】
図１１の（Ａ）に示すように、各命令はパイプライン処理される。例えば、各命令は、ＩＦ、ＩＤ、ＥＸ、ＤＣ、ＷＢが連続して５サイクルで行われる。サイクル０で、パイプラインのＩＦが命令１のフェッチを行う。サイクル２で、パイプラインのＩＦが命令２のフェッチを行い、ＩＤが命令１のデコードを行う。サイクル２では、パイプラインのＩＦが命令３のフェッチを行い、ＩＤが命令２のデコードを行い、ＥＸが命令１を実行する。サイクル３では、パイプラインのＩＦが命令４のフェッチを行い、ＩＤが命令３のデコードを行い、ＥＸが命令２を実行し、ＤＣが命令１のデータキャッシュアクセスを行う。サイクル４では、パイプラインのＩＦが命令５のフェッチを行い、ＩＤが命令４のデコードを行い、ＥＸが命令３を実行し、ＤＣが命令２のデータキャッシュアクセスを行い、ＷＢが命令１の書き戻しを行う。
【００５８】
ここで、命令２はメモリアクセスを伴うロード命令であり、命令５は命令２の結果を利用する。そこで、サイクル５では、パイプラインのＩＤが命令５のデコードを行い、ＥＸが命令４を実行し、ＤＣが命令３のデータキャッシュアクセスを行うが、命令２についてはメモリアクセスｍｅｍが行われる。さらに、サイクル６では、パイプラインのＤＣが命令４のデータキャッシュアクセスを行い、ＷＢが命令３の結果の書き戻しを行う。しかし、命令２についてはメモリアクセスｍｅｍの状態が継続され、命令２の結果を必要とする命令５も実行できないので待機状態になる。さらに、サイクル７では、パイプラインのＷＢが命令４の結果の書き戻しを行うが、命令２についてはメモリアクセスｍｅｍの状態が命令５については待機状態が続く。この状態が、命令２のメモリアクセスが完了してメモリからデータが得られるサイクル３４まで続く。そして、サイクル３５で、パイプラインのＷＢが命令２のメモリアクセスの結果を書き戻し、ＥＸがその結果を利用して命令５を実行する。以下、サイクル３６で、パイプラインのＤＣが命令５のデータキャッシュアクセスを行い、サイクル３７で、パイプラインのＷＢが命令５の結果の書き戻しを行う。
【００５９】
ここで、ＩＦ、ＩＤ、ｍｅｍ、ｗａｉｔなどの１サイクルの動作を１単位とする。図１１の（Ａ）に示すように、メインメモリアクセスに３０サイクルを要する場合、待機時間なども含めるため、図１１の（Ａ）での処理量は１０７単位になる。これまでの一般的な論理レベルシミュレーションでは、これらの単位動作をシミュレーションするため、計算量は１０７単位分となる。
【００６０】
また、一般的な命令レベルシミュレーションによれば、フェッチ、デコード実行、書き戻しについて所定のレイテンシを使用し、メモリアクセス以外のインタロックを考慮し、メモリアクセス時間を所定値、例えば３０サイクルと仮定して処理時間を算出する。メモリアクセス時間は、状況により異なるので、正確な処理時間は算出できない。
【００６１】
次に、第１実施形態におけるシミュレーション動作について、図１１の（Ｂ）を参照して、図９と関連付けて説明する。サイクル０で、スケジューラ２４が命令実行シミュレーション部２１Ａにシミュレーションの開始を要求する。命令実行シミュレーション部２１Ａは、要求を受け付けると、サイクル０に資源管理部２３を介して得られた命令１を実行し、その結果に４サイクルのレイテンシを付けて資源管理部２３に格納する。
【００６２】
サイクル１で、命令実行シミュレーション部２１Ａは、命令２を実行する。この場合、命令２はロード命令であるため、命令実行シミュレーション部２１Ａは、キャッシュシミュレーション部（命令単位）２１Ｂにキャッシュアクセスを要求する。キャッシュシミュレーション部（命令単位）２１Ｂは、キャッシュの動作をシミュレーションし、この例ではキャッシュミスであることを検出する。キャッシュシミュレーション部（命令単位）２１Ｂは、キャッシュアクセスに要した３サイクルのレイテンシを付けて、キャッシュシミュレーション部（サイクル単位）２２Ａに、キャッシュリプレース動作を要求する。また、キャッシュシミュレーション部（命令単位）２１Ｂは、命令２の結果の書き込み先の使用可能時刻が不明であることを資源管理部２３に通知する。
【００６３】
サイクル２で、命令実行シミュレーション部２１Ａは、命令３を実行し、その結果に４サイクルのレイテンシを付けて資源管理部２３に格納する。
【００６４】
同様に、サイクル３で、命令実行シミュレーション部２１Ａは、命令４を実行し、その結果に４サイクルのレイテンシを付けて資源管理部２３に格納する。
【００６５】
サイクル４で、命令実行シミュレーション部２１Ａが命令５を実行する。この場合、この例では命令５は命令２の結果に依存する命令であるため、命令実行シミュレーション部２１Ａは、資源管理部２３に資源を要求したタイミングで、結果の待ち合わせ（待機）を行う。
【００６６】
サイクル５から、キャッシュシミュレーション部（サイクル単位）２２Ａは、キャッシュシミュレーション部（命令単位）２１Ｂから受け付けた要求の処理を開始し、サイクル３４までシミュレーションを行う。サイクル３５で命令２の結果が資源管理部２３に通知されるため、スケジューラ２４は、命令実行シミュレーション部２１Ａにシミュレーション再開を要求し、命令５の実行が行われる。
【００６７】
以上説明したように、第１実施形態では、命令レベルシミュレーションでレイテンシの算出が可能な命令については、命令レベルシミュレーションで行うため、計算時間を短縮できる。また、第１実施形態では、命令レベルシミュレーションでレイテンシの算出が不可能な命令については、論理レベルシミュレーションで行うため、高精度が維持される。第１実施形態では、計算量は３７単位分となり、シミュレーション時間は図１１の（Ａ）の場合に比べて３５％に低減できる。
【００６８】
次に、図１１の（Ｂ）の第１実施形態におけるシミュレーション動作を行った場合の、資源管理部２３の資源管理表内の値の変化について、図１２から図１８を参照して詳細に説明する。資源管理表の第１資源管理表３１には、実行する命令１から命令５が格納されている。
【００６９】
図１２から図１７は、時刻１から６の時点における、パイプラインのシミュレーション状態と、資源管理表の第１資源管理表３１および第２資源管理表３２の状態を示す。
【００７０】
時刻０では、第２資源管理表３２内の各資源の使用可能時刻はすべて０であり、パイプラインには何も入っていない。時刻０で、命令１をフェッチする。
【００７１】
図１２に示すように、時刻０〜１では、パイプラインの１段目のＩＦが命令１をフェッチした状態である。命令１は、レジスタＲ０とレジスタＲ１の値を加算してレジスタＲ２に格納する加算命令である。命令１を実行に要する時間は１なので、時刻１との和２が命令１の使用可能時刻になる。時刻１では、パイプラインは、ＩＦが命令１をフェッチした状態であり、命令が実行される段階ではないので、この時刻における第２資源管理表３２内の各資源の使用可能時刻は、すべて０である。そして、時刻１で、命令２をフェッチする。
【００７２】
図１３に示すように、時刻１〜２では、パイプラインのＩＦが命令２をフェッチした状態である。命令２は、レジスタＲ２の値とレジスタＲ３の値の和をアドレスとしてメモリにアクセスし、メモリからそのアドレスのデータを読み出してレジスタＲ４に格納するロード命令である。すなわち、命令２はメモリアクセスを必要とする命令である。命令２自体を実行するのに要する時間は１なので、その時点の時刻２との和３が使用可能時刻になる。実際の動作では、時刻１〜２では、パイプラインの２段目のＩＤが命令１をデコードし、１段目のＩＦが命令２をフェッチした状態であり、命令が実行される段階ではないので、第２資源管理表３２内の各資源の使用可能時刻は、０である。そして、時刻２で、命令３をフェッチする。
【００７３】
図１４に示すように、時刻２〜３では、パイプラインのＩＦが命令３をフェッチした状態である。命令３は、レジスタＲ３の値に整数を加算して再びレジスタＲ３に格納する整数加算命令である。命令３を実行するのに要する時間は１なので、その時点の時刻３との和４が使用可能時刻になる。実際の動作では、時刻２〜３では、パイプラインのＥＸが命令１を実行し、ＩＤが命令２をデコードし、ＩＦが命令３をフェッチした状態である。上記のように、命令１によりレジスタＲ２の値が変化するので、第２資源管理表３２内のレジスタＲ２の使用可能時刻が３に設定される。そして、時刻３で、命令４をフェッチする。
【００７４】
図１５に示すように、時刻３〜４では、パイプラインのＩＦが命令４をフェッチした状態である。命令４は、レジスタＲ３の値からレジスタＲ５の値を減算して、結果をレジスタＲ０に格納する減算命令である。命令４を実行するのに要する時間は１なので、その時点の時刻４との和５が使用可能時刻になる。実際の動作では、時刻３〜４では、パイプラインのＤＣがデータキャッシュにアクセスし、キャッシュヒットが判明するので、レジスタＲ２は使用可能状態になり、０に設定される。また、パイプラインのＥＸが命令２を実行する。上記のように、命令２はレジスタＲ４の値を変化させるが、命令２はメモリアクセス動作を伴うので、レジスタ４の値が使用可能になる時刻は不明である。そこで、第２資源管理表３２内のレジスタＲ４の使用可能時刻が不明（？）に設定される。そして、時刻４で、命令５をフェッチする。
【００７５】
図１６に示すように、時刻４〜５では、パイプラインのＩＦが命令５をフェッチした状態である。命令５は、レジスタＲ４の値にレジスタＲ６の値を乗算して、結果をレジスタＲ７に格納する乗算命令である。命令５を実行するのに要する時間は１なので、その時点の時刻５との和６が使用可能時刻になる。実際の動作では、時刻４〜５では、命令３が実行される。上記のように、命令３はレジスタＲ３の値を変化させるので、第２資源管理表３２内のレジスタＲ３の使用可能時刻が５に設定される。レジスタＲ４の使用可能時刻は不明の状態が維持される。そして、時刻５で、命令６をフェッチする。
【００７６】
図１７に示すように、時刻５〜６では、図示していないが、第６パイプラインのＩＦが命令６をフェッチする。命令６は、レジスタＲ８の値にレジスタＲ７の値を加算して、結果をレジスタＲ８に格納する加算命令である。命令６を実行するのに要する時間は１なので、その時点の時刻６との和７が使用可能時刻になる。時刻６では、命令４が実行される。上記のように、命令４はレジスタＲ０の値を変化させるので、第２資源管理表３２内のレジスタＲ０の使用可能時刻が６に設定される。命令３のキャッシュヒットによりレジスタＲ３は０に設定され、レジスタＲ４の使用可能時刻は不明の状態が維持される。
【００７７】
ここで、第５パイプラインのＥＸが命令５を実行しようとするが、上記のように、命令５の実行に必要なレジスタＲ４の使用可能時刻が不明であり、命令５は実行できない。そこで、命令レベルシミュレーション部２１は、この時点で動作を一時的に停止して待機状態になる。
【００７８】
命令レベルシミュレーション部２１は、パイプラインのＤＣがキャッシュアクセスした段階で、命令２がキャッシュミスが判明するので、論理レベルシミュレーション部２２に、命令２のメモリアクセス動作をシミュレーションするように要求する。これに応じて、論理レベルシミュレーション部２２はメモリアクセス動作のシミュレーションを実行し、メモリアクセス動作時間を算出し、資源管理部２３に算出結果を通知する。資源管理部２３は、命令レベルシミュレーション部２１から通知された内部レイテンシとメモリアクセス動作時間を加算してレジスタＲ４の使用可能時刻を算出し、第２資源管理表３２内のレジスタＲ４の使用可能時刻に格納する。
【００７９】
図１８は、論理レベルシミュレーション部３２のシミュレーション結果により、第２資源管理表３２のレジスタＲ４の値が変化した状態を示す。命令２のメモリアクセス動作を実行してレジスタＲ４が使用可能になる時刻は３２であり、命令実行時刻計算部３３の時刻は３２に設定され、第２資源管理表３２のレジスタＲ４の値は３２に設定される。
【００８０】
以上のようにして、資源管理表２３に格納されている命令のシミュレーションを実行し、処理実行時間を算出する。
【００８１】
図１９は、第２実施形態のシミュレーション装置の構成を示す図である。第２実施形態でシミュレーションを行うプロセッサコア１は、図１の（Ｂ）に示す構成を備え、構成部分に対応した複数のパイプラインを備えるものとする。第２実施形態のシミュレーション装置は、図１の（Ｂ）に示したプロセッサコア１の構成に対応させてシミュレーションを行う。
【００８２】
図１９に示すように、第２実施形態のシミュレーション装置では、命令レベルシミュレーション部２１は、命令フェッチシミュレーション部２１Ｃと、命令キャッシュシミュレーション部（命令単位）２１Ｄと、命令デコードシミュレーション部２１Ｅと、命令実行シミュレーション部２１Ｆと、データキャッシュシミュレーション部（命令単位）２１Ｇと、を備える。論理レベルシミュレーション部２２は、命令キャッシュシミュレーション部（サイクル単位）２２Ｃと、バス・メモリ等シミュレーション部（サイクル単位）２２Ｂと、データキャッシュシミュレーション部（サイクル単位）２２Ｄと、を備える。バス・メモリ等シミュレーション部（サイクル単位）２２Ｂは、接続される外部メモリを想定したメモリイメージ２５をシミュレーションする。また、資源管理部２３は、第１資源管理部２３Ａと、第２資源管理部２３Ｂと、第３資源管理部２３Ｃと、を備える。
【００８３】
命令フェッチシミュレーション部２１Ｃは、命令フェッチの動作をシミュレーションする。命令キャッシュシミュレーション部（命令単位）２１Ｄは、命令キャッシュアクセス動作をシミュレーションする。命令デコードシミュレーション部２１Ｅは、命令デコード動作をシミュレーションする。命令実行シミュレーション部２１Ｆは、命令実行動作をシミュレーションする。データキャッシュシミュレーション部（命令単位）２１Ｇは、データキャッアクセス動作をシュシミュレーションする。
【００８４】
命令キャッシュシミュレーション部（サイクル単位）２２Ｃは、命令キャッシュリプレース動作をシュシミュレーションする。データキャッシュシミュレーション部（サイクル単位）２２Ｄは、データキャッシュリプレース動作をシュシミュレーションする。バス・メモリ等シミュレーション部（サイクル単位）２２Ｂは、命令キャッシュシミュレーション部（サイクル単位）２２Ｃおよびデータキャッシュシミュレーション部（サイクル単位）２２Ｄからのメモリアクセス要求をシュシミュレーションする。
【００８５】
第１資源管理部２３Ａは、命令フェッチから命令デコードの間の処理に関係する命令バッファに関係する資源を管理する。第２資源管理部２３Ｂは、命令デコードから命令実行の間の処理に関係するパイプラインレジスタに関係する資源を管理する。第３資源管理部２３Ｃは、レジスタ、演算器、ポートなどに関係する資源を管理する。
【００８６】
スケジューラ（乗り移り制御）２４は、図１９の各部にシミュレーションの開始・再開を要求する。
【００８７】
図２０は、第２実施形態におけるシミュレーション動作例のタイムチャートであり、（Ａ）は比較のため一般的な論理レベルシミュレーションを行った場合を示し、（Ｂ）は第２実施形態のシミュレーションを行った場合を、示す。この動作例では、処理ごとに処理単位が異なる。例えば、フェッチは４命令単位で行われ、デコードは同時実行可能な命令の組を単位として行われ、実行は１命令単位で行われる。デコードは２サイクルで行われ、実行は命令によりサイクル数が異なる。
【００８８】
図２０の（Ａ）に示すように、サイクル０で、フェッチのパイプラインの１段目に４命令１〜４がフェッチされる。サイクル１で、４命令１〜４がフェッチのパイプラインの２段目にシフトされ、フェッチのパイプラインの１段目に４命令５〜８がフェッチされる。サイクル２で、４命令１〜４がフェッチのパイプラインの３段目にシフトされ、４命令５〜８がフェッチのパイプラインの２段目にシフトされる。
【００８９】
サイクル３では、命令１〜３が同時にデコードされ、４命令５〜８がフェッチのパイプラインの３段目にシフトされる。サイクル４では、命令１〜３がさらにデコードされると共に、命令４〜６がデコードされる。サイクル５では、命令１〜３が実行され、命令４〜６がさらにデコードされ、命令７もデコードされる。サイクル６では、命令１および３の結果が書き戻され、命令２の実行が継続し、命令４〜６が実行され、命令７はさらにデコードされ、命令８もデコードされる。従って、命令１および３の処理は終了する。
【００９０】
サイクル７では、命令２の実行が継続し、命令４および５の結果が書き戻され、命令６の実行が継続し、命令８もデコードされる。ここで、命令７は、命令２の結果を使用するのでインタロックが発生する。
【００９１】
サイクル８では、命令２の結果が書き戻され、命令７の実行が再開する。命令６はメモリアクセスを伴う命令であり、命令８は命令６の結果を使用する。一般的な論理レベルシミュレーションでは、サイクル８の後命令６のメモリアクセス動作をシミュレーションしてメモリアクセスの結果が得られるまでシミュレーションを行う。
【００９２】
サイクル１１で、命令７の結果の書き戻しが行われる。この時、命令６はメモリアクセス動作のシミュレーションが行われ、命令８は命令６の結果を待ち合わせている。
【００９３】
サイクルＮで、命令６のメモリアクセス動作時間が得られる。サイクルＮ＋１で、命令８が実行され、命令６の結果が書き戻される。命令８の実行はサイクルＮ＋３まで継続し、サイクルＮ＋３で命令８の結果が書き戻される。以上のシミュレーションで、シミュレーション単位量は１０７になる。
【００９４】
また、一般的な命令レベルシミュレーションによれば、フェッチ、デコード実行、書き戻しについて所定のレイテンシを使用し、メモリアクセス以外のインタロックを考慮し、メモリアクセス時間を所定値、例えば３０サイクルと仮定して処理時間を算出する。メモリアクセス時間は、状況により異なるので、正確な処理時間は算出できない。
【００９５】
これに対して、第２実施形態では、図２０の（Ｂ）に示すように、命令レベルシミュレーションでレイテンシが算出可能な動作については、命令レベルシミュレーションを行う。図２０の（Ｂ）では、命令レベルシミュレーションでレイテンシが算出可能な動作を、太線の実線の矢印で示す。命令レベルシミュレーションでレイテンシが算出不可能なメモリアクセスなどの動作Ｐについては、論理レベルシミュレーションが動作時間を算出する。図２０の（Ｂ）で白線の矢印で示す動作は、命令レベルシミュレーションを行うが、論理レベルシミュレーションの結果を必要とするので、資源管理部で使用する資源が使用可能になる時刻を管理して、正確な処理時間を算出する。
【００９６】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００９７】
２１    命令レベルシミュレーション部
２２    論理レベルシミュレーション部
２３    資源管理部（資源管理表）
２４    制御部（スケジューラ）
【図１】
0005440083.tif 000002
【図２】
0005440083.tif 000003
【図３】
0005440083.tif 000004
【図４】
0005440083.tif 000005
【図５】
0005440083.tif 000006
【図６】
0005440083.tif 000007
【図７】
0005440083.tif 000008
【図８】
0005440083.tif 000009
【図９】
0005440083.tif 000010
【図１０】
0005440083.tif 000011
【図１１】
0005440083.tif 000012
【図１２】
0005440083.tif 000013
【図１３】
0005440083.tif 000014
【図１４】
0005440083.tif 000015
【図１５】
0005440083.tif 000016
【図１６】
0005440083.tif 000017
【図１７】
0005440083.tif 000018
【図１８】
0005440083.tif 000019
【図１９】
0005440083.tif 000020
【図２０】
0005440083.tif 000021