(57)【要約】【課題】パイプライン・ステージを設けることなく、データハザードによる遅延を考慮したモデルでプロセッサの動作を模擬すること。【解決手段】格納部３２には、複数の命令の種類と、その各々に対して、データハザードが発生していないときの第１実行マシンサイクル数と、データハザードが発生しているときの第２実行マシンサイクル数と、が格納されている。命令によりレジスタに値が書き込まれた場合、生成部２１は、命令に対する第１、２実行マシンサイクル数に基づいて読み出し禁止期間を生成する。生成部２１は、レジスタを識別するレジスタ識別子と、レジスタライトアクセス時間と読み出し禁止期間とを記録部３１に格納する。算出部２２は、レジスタがデータハザードの対象になっている場合、レジスタライトアクセス時間、読み出し禁止期間、命令に対する第２実行マシンサイクル数に基づいて実行マシンサイクル数を算出する。【選択図】図５
2010086047.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの動作を模擬するシミュレーション装置であって、
前記プロセッサ上で実行可能な命令が与えられ、前記命令に応じた処理を実行する命令実行部と、
複数の命令の種類と、複数の命令の各々に対して、データハザードが発生していないときに実行される第１実行マシンサイクル数と、前記データハザードが発生しているときに実行される第２実行マシンサイクル数と、が格納された格納部と、
記録部と、
前記命令によりレジスタに値が書き込まれた場合、前記命令に対する前記第１、２実行マシンサイクル数を前記格納部から読み出し、それらに基づいて、読み出し禁止期間としてパイプライン・ストール・サイクル数を生成し、前記レジスタを識別するレジスタ識別子と、前記レジスタに値が書き込まれたときのレジスタライトアクセス時間と、前記パイプライン・ストール・サイクル数とを前記記録部に格納する生成部と、
前記レジスタが前記データハザードの対象になっている場合、前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数と、前記命令に対する前記第２実行マシンサイクル数と、に基づいて実行マシンサイクル数を算出する算出部と、
を具備するシミュレーション装置。
【請求項２】
前記第２実行マシンサイクル数は、前記第１実行マシンサイクル数と同じかそれよりも大きく、
前記生成部は、前記命令に対する前記第２実行マシンサイクル数から、前記命令に対する前記第１実行マシンサイクル数を減算して、前記パイプライン・ストール・サイクル数を生成する、
請求項１に記載のシミュレーション装置。
【請求項３】
前記算出部は、前記パイプライン・ストール・サイクル数が０よりも大きい場合、前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数と、前記命令に対する前記第２実行マシンサイクル数と、に基づいて前記実行マシンサイクル数を算出する、
請求項２に記載のシミュレーション装置。
【請求項４】
前記算出部は、前記レジスタが前記データハザードの対象になっている場合、前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数に基づいて実行待ちサイクル数を生成し、前記命令に対する前記第２実行マシンサイクル数に前記実行待ちサイクル数を加算して前記実行マシンサイクル数を生成する、
請求項１〜３のいずれかに記載のシミュレーション装置。
【請求項５】
前記算出部は、前記レジスタが前記データハザードの対象になっている場合、前記レジスタライトアクセス時間を表すサイクル数と前記パイプライン・ストール・サイクル数とを加算して前記実行待ちサイクル数を生成し、前記命令に対する前記第２実行マシンサイクル数に前記実行待ちサイクル数を加算して前記実行マシンサイクル数を生成する、
請求項４に記載のシミュレーション装置。
【請求項６】
前記命令実行部は、前記レジスタが前記データハザードの対象になっている場合、前記データハザードが発生した旨を表すデータハザード有り情報と、前記実行マシンサイクル数と、を含む実行結果を出力する、
請求項１〜５のいずれかに記載のシミュレーション装置。
【請求項７】
プロセッサの動作をコンピュータを用いて模擬するシミュレーション方法であって、
前記プロセッサ上で実行可能な命令が与えられ、前記命令に応じた処理を実行するステップと、
前記命令によりレジスタに値が書き込まれた場合、複数の命令の種類と、複数の命令の各々に対して、データハザードが発生していないときに実行される第１実行マシンサイクル数と、前記データハザードが発生しているときに実行される第２実行マシンサイクル数と、が格納された格納部を参照して、前記命令に対する前記第１、２実行マシンサイクル数を前記格納部から読み出すステップと、
前記第１、２実行マシンサイクル数に基づいて、読み出し禁止期間としてパイプライン・ストール・サイクル数を生成するステップと、
前記レジスタを識別するレジスタ識別子と、前記レジスタに値が書き込まれたときのレジスタライトアクセス時間と、前記パイプライン・ストール・サイクル数とを記録部に格納するステップと、
前記レジスタが前記データハザードの対象になっている場合、前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数と、前記命令に対する前記第２実行マシンサイクル数と、に基づいて実行マシンサイクル数を算出するステップと、
を具備するシミュレーション方法。
【請求項８】
前記第２実行マシンサイクル数は、前記第１実行マシンサイクル数と同じかそれよりも大きく、
前記パイプライン・ストール・サイクル数を生成するステップは、前記命令に対する前記第２実行マシンサイクル数から、前記命令に対する前記第１実行マシンサイクル数を減算して、前記パイプライン・ストール・サイクル数を生成する、
請求項７に記載のシミュレーション方法。
【請求項９】
前記実行マシンサイクル数を算出するステップは、前記パイプライン・ストール・サイクル数が０よりも大きい場合、前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数と、前記命令に対する前記第２実行マシンサイクル数と、に基づいて前記実行マシンサイクル数を算出する、
請求項８に記載のシミュレーション方法。
【請求項１０】
前記実行マシンサイクル数を算出するステップは、前記レジスタが前記データハザードの対象になっている場合、
前記記録部に格納された前記レジスタライトアクセス時間及び前記パイプライン・ストール・サイクル数に基づいて実行待ちサイクル数を生成するステップと、
前記命令に対する前記第２実行マシンサイクル数に前記実行待ちサイクル数を加算して前記実行マシンサイクル数を生成するステップと、
を更に含む請求項７〜９のいずれかに記載のシミュレーション方法。
【請求項１１】
前記実行待ちサイクル数を生成するステップは、
前記レジスタが前記データハザードの対象になっている場合、前記レジスタライトアクセス時間を表すサイクル数と前記パイプライン・ストール・サイクル数とを加算して前記実行待ちサイクル数を生成する、
請求項１０に記載のシミュレーション方法。
【請求項１２】
前記レジスタが前記データハザードの対象になっている場合、前記データハザードが発生した旨を表すデータハザード有り情報と、前記実行マシンサイクル数と、を含む実行結果を出力するステップ、
を更に具備する請求項７〜１１のいずれかに記載のシミュレーション方法。
【請求項１３】
請求項７〜１２のいずれかに記載のシミュレーション方法の各ステップをコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの動作をシミュレートするシミュレーション装置、シミュレーション方法に関する。
【背景技術】
【０００２】
プロセッサ上で動作させるプログラムの解析やデバックのためにシミュレーション装置が利用されている。シミュレーション装置は、プロセッサの動作と同じ動作か、あるいは、それを簡略化した動作を行うように設計される。このようなシミュレーション装置としては、命令セットシミュレータ（ＩＳＳ；Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）といったものが広く知られている。ＩＳＳは、パーソナルコンピュータやワークステーションなどのコンピュータ上で動作し、プロセッサの命令の動作や、その実行結果、レジスタの状態などを模擬するものである。ＩＳＳを用いることにより、プログラムの解析やデバックのために専用のハードウェアを用意する必要がないというメリットがある。
【０００３】
ＩＳＳを用いたプログラムの解析において、ＣＰＵの性能を最大限に引き出すことが望まれる。そのためには、データハザードによる処理時間のロス、即ち、パイプライン・ステージの処理進行の停止による処理時間のロスを最小限に抑える必要がある。そこで、ユーザアプリケーション中にデータハザードがどこにどのくらい存在するかを検出（検証）し、ユーザに示す必要がある。その手段として、ＣＰＵ実機から情報を取る方法はあるが、開発中のＣＰＵや、マルチコアにおける再現性のある時刻考慮のためには、シミュレータでデータハザードを検出する方法が必要となる。
【０００４】
シミュレーションに関連する技術を紹介する。
【０００５】
ＲｅａｌＶｉｅｗ  Ｐｒｏｆｉｌｅｒ（非特許文献１参照）では、図１−１に示されるように、ＲｅａｌＶｉｅｗ  Ｔｒａｃｅ２ユニットを利用し、ＲｅａｌＶｉｅｗ  ＩＣＥと接続される構成になっている。これにより、ＲｅａｌＶｉｅｗ  Ｐｒｏｆｉｌｅｒは、ＲｅａｌＶｉｅｗ  ＩＣＥ、ＲｅａｌＶｉｅｗ  Ｔｒａｃｅ２ユニットを介し、ＣＰＵ実機からインターロック（データハザード）情報を取得し、トレース情報と共に表示する。ＲｅａｌＶｉｅｗ  Ｐｒｏｆｉｌｅｒは、図１−２、１−３に示されるように、取得したトレース情報を元にソース（アセンブラ）ビュー上に●印を表示し、データハザードが発生した命令をユーザに知らせる。また、ＲｅａｌＶｉｅｗ  Ｐｒｏｆｉｌｅｒにはシミュレータと接続する仕組みも存在するが、データハザード情報は取り出すことができていないようである。
【０００６】
ＡｒｃｈＣ（非特許文献２参照）では、ａｒｃｓｉｍというＳｙｓｔｅｍＣ シミュレータ生成ツールを提供しており、ＡＣ＿ＡＲＣＨというアーキテクチャ情報、ＡＣ＿ＩＳＡというＩＳＡ情報を使って、ＳｙｓｔｅｍＣシミュレータを自動生成する。このＡＣ＿ＡＲＣＨにパイプライン・ステージを書く部分があり、パイプライン・ステージを有するＳｙｓｔｅｍＣシミュレータが生成される。このＳｙｓｔｅｍＣシミュレータは、ｃｙｃｌｅ  ａｃｃｕｒａｔｅ  ｓｉｍｕｌａｔｏｒであり、パイプライン・ステージを有することにより、データハザードを考慮したシミュレーションを可能にしている。
【０００７】
図２は、シミュレートを実行しようとしているプロセッサのパイプライン・ステージの概略図である。プロセッサは、命令群とデータとが格納されたメモリと、レジスタと、パイプラインと、を具備している。プロセッサは、クロックに応じて動作し、更に、命令群をフェッチするＩＦ（命令フェッチ）ステージと、フェッチされた命令をデコードするＤＣ（デコード）ステージと、デコードされた命令を実行するＥＸ（実行）ステージと、命令（メモリアクセス命令）に対してメモリのアクセスを行うＭＥ（メモリアクセス）ステージと、命令の実行結果をレジスタに書き込むＷＢ（ライトバック）ステージと、を具備している。プロセッサは、ＩＦステージとＤＣステージとＥＸステージとＭＥステージとＷＢステージによりパイプラインを構成する。
【０００８】
【非特許文献１】“ＡＲＭ  ＲｅａｌＶｉｅｗ  Ｐｒｏｆｉｌｅｒ  １．０（製品パンフレット）”、［ｏｎｌｉｎｅ］、［平成２０年８月２０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／ｗｗｗ．ａｒｍ．ｃｏｍ／ｐｒｏｄｕｃｔｓ／ＤｅｖＴｏｏｌｓ／ＲＶＰ．ｈｔｍｌ＞
【非特許文献２】“ＡｒｃｈＣ”、［ｏｎｌｉｎｅ］、［平成２０年８月２０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ａｒｃｈｃ．ｏｒｇ／＞
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、非特許文献１に記載された技術では、実機からのトレース情報によりデータハザード（インターロック）の検出を行えるが、データハザードによる遅延を考慮したモデルではない。
【００１０】
また、非特許文献２に記載された技術では、パイプライン・ステージを実装することにより、データハザードを含むサイクルアキュレートなシミュレーションを実現している。しかし、パイプライン・ステージでは毎サイクル並列実行する機構が含まれるため、ＩＳＳよりシミュレーション時間がかかるという問題がある。
【課題を解決するための手段】
【００１１】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明のシミュレーション装置は、プロセッサの動作を模擬するものであって、命令実行部（１０）と、格納部（３２）と、記録部（３１）と、生成部（２１）と、算出部（２２）と、を具備している。命令実行部（１０）は、プロセッサ上で実行可能な命令が与えられ、命令に応じた処理を実行する。格納部（３２）には、複数の命令の種類と、複数の命令の各々に対して、データハザードが発生していないときに実行される第１実行マシンサイクル数と、データハザードが発生しているときに実行される第２実行マシンサイクル数と、が格納されている。命令によりレジスタに値が書き込まれた場合、生成部（２１）は、命令に対する第１、２実行マシンサイクル数を格納部（３２）から読み出し、それらに基づいて、読み出し禁止期間としてパイプライン・ストール・サイクル数を生成する。生成部（２１）は、レジスタを識別するレジスタ識別子と、レジスタに値が書き込まれたときのレジスタライトアクセス時間と、パイプライン・ストール・サイクル数とを記録部（３１）に格納する。算出部（２２）は、レジスタがデータハザードの対象になっている場合、記録部（３１）に格納されたレジスタライトアクセス時間及びパイプライン・ストール・サイクル数と、命令に対する第２実行マシンサイクル数と、に基づいて実行マシンサイクル数を算出する。
【発明の効果】
【００１３】
本発明のシミュレーション装置（４）によれば、生成部（２１）、記録部（３１）、算出部（２２）、格納部（３２）を具備することにより、レジスタライトアクセス時間と、読み出し禁止期間（パイプライン・ストール・サイクル数）と、を記録しておくことができ、パイプライン・ステージを実装しなくても、データハザードによる遅延を考慮した各命令の実行マシンサイクル数を決定（算出）することができる。
【００１４】
その結果、本発明のシミュレーション装置（４）によれば、データハザードによる遅延を考慮したモデルでプロセッサの動作を模擬することができる。このため、非特許文献１で挙げた問題点を解決することができる。
【００１５】
また、本発明の実施形態によるシミュレーション装置（４）によれば、パイプライン・ステージが設けられていないことにより、非特許文献２で挙げた問題点を解決し、シミュレーション速度の高速化を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照して、本発明の実施形態によるシミュレーション装置について詳細に説明する。
【００１７】
［構成］
図３は、本発明の実施形態によるシミュレーション装置４の構成を示している。本発明の実施形態によるシミュレーション装置４は、汎用コンピュータ（パーソナルコンピュータ、ＥＷＳ（エンジニアリングワークステーション））上でパイプライン構造を持つマイクロコンピュータのシミュレーションを行うものである。
【００１８】
そのシミュレーション装置４は、ユーザインターフェース部５と、メモリである命令データ格納部６と、シミュレーションエンジン部（シミュレーションプログラム）７とを具備している。ユーザインターフェース部５は、入力装置による入力、及び、出力装置に出力する制御を行う。命令データ格納部６には、デバック対象のプログラムが格納されている。シミュレーションエンジン部７は、デバック対象のプログラムを命令データ格納部６から読み出し、デバック対象のプログラムに記述されている命令群を処理する。
【００１９】
シミュレーションエンジン部７は、コンピュータにインストールされるコンピュータプログラム（シミュレーションプログラム）としても実現可能である。図４は、シミュレーション装置４が動作する環境として、コンピュータの構成を示している。コンピュータは、入力装置２と、出力装置３と、コンピュータ本体１とを具備している。入力装置２と出力装置３は、コンピュータ本体１に接続されている。入力装置２は、キーボード、ポインティングデバイスを含み、出力装置３は、表示装置、プリンタを含んでいる。
【００２０】
上記のコンピュータ本体１は、図示しない記憶装置と、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とを具備している。シミュレーションエンジン部７は、記憶装置にインストールされる。この場合、命令データ格納部６に格納されたデバック対象のプログラムも記憶装置にインストールされる。シミュレーションエンジン部７（シミュレーションプログラム）は、デバック対象のプログラムを記憶装置から読み出し、デバック対象のプログラムに記述されている命令群をＣＰＵ上で処理する。
【００２１】
シミュレーションエンジン部７は、プロセッサ上で動作させるプログラム（解析対象プログラム）の解析やデバックのためのソフトウェアとして、設計者に利用される。プロセッサにより実行される命令群は、例えば、“ＬＤ、ＡＤＤ、ＳＵＢ、ＪＭＰ、ＭＯＶ”といったものがあるものとする。ニーモニック表記の“ＬＤ”、“ＡＤＤ”、“ＳＵＢ”、“ＪＭＰ”、“ＭＯＶ”は、それぞれ、メモリからレジスタにデータを書き込むロード命令、加算命令、減算命令、ジャンプ命令、ムーブ命令を表している。プロセッサ上で動作する解析対象プログラムはこれらの命令で構成されることになる。
【００２２】
図５は、シミュレーションエンジン部７の構成を示している。シミュレーションエンジン部７は、命令実行部１０、レジスタライトアクセス情報生成部２１、データハザード検出兼実行マシンサイクル数算出部２２、レジスタライトアクセス情報記憶部３１、実行マシンサイクル数情報格納部３２を具備している。命令実行部１０は、命令処理部１１、実行サイクル数計測部１３を具備している。
【００２３】
レジスタライトアクセス情報記憶部３１には、命令により値が書き込まれるレジスタを識別するレジスタ識別子（レジスタ番号）と、命令によりレジスタに値が書き込まれたときの時刻（レジスタライトアクセス時間）と、レジスタの値が読み出される場合にパイプライン・ストールが発生するときのマシンサイクル（クロック）の数を表すパイプライン・ストール・サイクル数と、が格納される。例えば、レジスタ名として“ｒ０、ｒ１、…、ｒ３０、ｒ３１”と、レジスタライトアクセス時間として“０、１０１、…、１２３、０”と、パイプライン・ストール・サイクル数として“０、０、…、２、０”と、が対応付けられてレジスタライトアクセス情報記憶部３１に格納される。
【００２４】
実行マシンサイクル数情報格納部３２には、複数の命令をそれぞれ識別する複数の命令の種類と、複数の命令の各々に対して、データハザードが発生していないときに実行されるマシンサイクルを表す第１実行マシンサイクル数（ハザード無し時実行マシンサイクル数）と、データハザードが発生しているときに実行されるマシンサイクルを表す第２実行マシンサイクル数（ハザード有り時実行マシンサイクル数）と、が対応付けられて格納されている。ハザード有り時実行マシンサイクル数は、ハザード無し時実行マシンサイクル数と同じかそれよりも大きい。例えば、複数の命令として“ＡＤＤ、ＪＭＰ、…、ＬＤ”と、ハザード無し時実行マシンサイクル数として“１、４、…、１”と、ハザード有り時実行マシンサイクル数として“１、４、…、３”と、が実行マシンサイクル数情報格納部３２に格納されている。ここで、実行マシンサイクル数については、本実施形態を説明する便宜上、実際よりも極端に大きい値を記載している。これらの値は、実際のプロセッサの処理速度によって決定される。その決定方法としては、プロセッサを用いて予め測定して決定する場合や、プロセッサの設計仕様に基づいて予め決定する場合などが挙げられる。
【００２５】
命令実行部１０（命令処理部１１、実行サイクル数計測部１３）、レジスタライトアクセス情報生成部２１、データハザード検出兼実行マシンサイクル数算出部２２の動作については後述する。
【００２６】
［動作］
図６は、シミュレーションエンジン部７の動作を示すフローチャートである。
【００２７】
命令処理部１１は、設計者の入力装置２の操作により、記憶装置（命令データ格納部６に対応）から解析対象プログラムを読み出す。解析対象プログラムは、命令群として１番目からｎ番目までの命令で構成されている。例えば、解析対象プログラムは、命令“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”で構成されているものとする。命令処理部１１は、解析対象プログラムの最初の命令に応じた処理を実行する（ステップＳ１）。
【００２８】
上記命令によりレジスタに値が書き込まれた場合、命令処理部１１は、上記レジスタを識別するレジスタ識別子と、上記レジスタに値が書き込まれたときのレジスタライトアクセス時間と、上記命令の種類と、をレジスタライトアクセス情報生成部２１に出力する。同時に、命令処理部１１は、レジスタ識別子と、上記命令の種類と、を実行サイクル数計測部１３に出力する（ステップＳ２−ＹＥＳ）。
【００２９】
レジスタライトアクセス情報生成部２１は、実行マシンサイクル数情報格納部３２を参照し、複数の命令の種類のうちの、命令処理部１１からの上記命令の種類に一致する命令を検索する。レジスタライトアクセス情報生成部２１は、上記命令に対するハザード無し時実行マシンサイクル数、ハザード有り時実行マシンサイクル数を実行マシンサイクル数情報格納部３２から読み出す。レジスタライトアクセス情報生成部２１は、上記命令に対するハザード無し時実行マシンサイクル数、ハザード有り時実行マシンサイクル数に基づいて、読み出し禁止期間として、上記レジスタの値が読み出される場合にパイプライン・ストールが発生するときのマシンサイクルを表すパイプライン・ストール・サイクル数を生成する。この場合、上記命令に対するハザード有り時実行マシンサイクル数から、上記命令に対するハザード無し時実行マシンサイクル数を減算して、パイプライン・ストール・サイクル数を生成する。レジスタライトアクセス情報生成部２１は、命令処理部１１からの上記レジスタ識別子、上記レジスタライトアクセス時間と、上記パイプライン・ストール・サイクル数（読み出し禁止期間）と、をレジスタライトアクセス情報記憶部３１に記録（格納）する（ステップＳ３）。
【００３０】
一方、上記命令によりレジスタに値が書き込まれない場合、ステップＳ３は実行されない。
【００３１】
上記命令により上記レジスタの値が読み出された場合、実行サイクル数計測部１３は、命令処理部１１からの上記レジスタ識別子、上記命令の種類をデータハザード検出兼実行マシンサイクル数算出部２２に出力する（ステップＳ４−ＹＥＳ）。
【００３２】
データハザード検出兼実行マシンサイクル数算出部２２は、レジスタライトアクセス情報記憶部３１を参照し、実行サイクル数計測部１３からの上記レジスタ識別子に一致するレジスタ識別子を検索する。データハザード検出兼実行マシンサイクル数算出部２２は、上記レジスタ識別子に対する上記レジスタライトアクセス時間、上記パイプライン・ストール・サイクル数をレジスタライトアクセス情報記憶部３１から読み出す。データハザード検出兼実行マシンサイクル数算出部２２は、上記パイプライン・ストール・サイクル数が０よりも大きいか否かを調べることにより、データハザードが発生するか否かを判定する。即ち、値が読み出された上記レジスタがデータハザードの対象になっているか否かを調べる（ステップＳ５）。
【００３３】
上記パイプライン・ストール・サイクル数が０よりも大きい場合、上記レジスタはデータハザードの対象である。この場合、データハザード検出兼実行マシンサイクル数算出部２２は、データハザードが発生するものと判定する。即ち、レジスタがデータハザードの対象になっているものと判断する（ステップＳ５−ＹＥＳ）。
【００３４】
この場合、データハザード検出兼実行マシンサイクル数算出部２２は、上記レジスタライトアクセス時間と上記パイプライン・ストール・サイクル数とに基づいて、データハザードにより実行が待たされる実行待ちサイクル数を算出する。この場合、上記レジスタライトアクセス時間を表すサイクル数と上記パイプライン・ストール・サイクル数とを加算して実行待ちサイクル数を生成する。データハザード検出兼実行マシンサイクル数算出部２２は、実行マシンサイクル数情報格納部３２を参照し、複数の命令の種類のうちの、実行サイクル数計測部１３からの上記命令の種類に一致する命令を検索する。データハザード検出兼実行マシンサイクル数算出部２２は、上記命令に対するハザード有り時実行マシンサイクル数を実行マシンサイクル数情報格納部３２から読み出す。データハザード検出兼実行マシンサイクル数算出部２２は、上記命令に対するハザード有り時実行マシンサイクル数に実行待ちサイクル数を加算し、実行マシンサイクル数（加算実行マシンサイクル数）を生成する（ステップＳ６）。
【００３５】
データハザード検出兼実行マシンサイクル数算出部２２は、データハザードが発生した旨を表すデータハザード有り情報と、加算実行マシンサイクル数と、を実行サイクル数計測部１３に出力する。実行サイクル数計測部１３は、データハザード有り情報と加算実行マシンサイクル数とを含む実行結果６０を出力先ファイルとして実行トレースログに出力する。この出力先ファイルは、出力装置３に出力される。同時に、実行サイクル数計測部１３は、実行結果出力通知を命令処理部１１に出力する（ステップＳ７）。
【００３６】
一方、上記命令が上記レジスタの値の読み出しを行っていない場合、実行サイクル数計測部１３は、命令処理部１１からの上記命令の種類をデータハザード検出兼実行マシンサイクル数算出部２２に出力する（ステップＳ４−ＮＯ）。又は、上記パイプライン・ストール・サイクル数が０である場合、データハザード検出兼実行マシンサイクル数算出部２２は、データハザードが発生していないものと判定する（ステップＳ５−ＮＯ）。
【００３７】
この場合、データハザード検出兼実行マシンサイクル数算出部２２は、実行マシンサイクル数情報格納部３２を参照し、複数の命令の種類のうちの、実行サイクル数計測部１３からの上記命令の種類に一致する命令を検索する。データハザード検出兼実行マシンサイクル数算出部２２は、上記命令に対するハザード無し時実行マシンサイクル数を実行マシンサイクル数情報格納部３２から読み出す。データハザード検出兼実行マシンサイクル数算出部２２は、データハザードが発生しない旨を表すデータハザード無し情報と、ハザード無し時実行マシンサイクル数と、を実行サイクル数計測部１３に出力する。実行サイクル数計測部１３は、データハザード無し情報とハザード無し時実行マシンサイクル数とを含む実行結果６０を出力装置３に出力する。同時に、実行サイクル数計測部１３は、実行結果出力通知を命令処理部１１に出力する（ステップＳ９）。
【００３８】
解析対象プログラムに次の命令が存在する場合（ステップＳ８−ＮＯ）、命令処理部１１は、実行結果出力通知に応じて、次の命令に応じた処理を実行する（ステップＳ１）。次の命令が存在しない場合（ステップＳ８−ＹＥＳ）、シミュレーションエンジン部７の動作が終了する。
【００３９】
［効果］
以上の説明により、本発明の実施形態によるシミュレーション装置４では、プロセッサの動作を模擬する際、命令実行部１０は、プロセッサ上で実行可能な命令が与えられ、命令に応じた処理を実行する。実行マシンサイクル数情報格納部３２には、複数の命令の種類と、複数の命令の各々に対して、データハザードが発生していないときに実行される第１実行マシンサイクル数と、データハザードが発生しているときに実行される第２実行マシンサイクル数と、が格納されている。命令によりレジスタに値が書き込まれた場合、レジスタライトアクセス情報生成部２１は、命令に対する第１、２実行マシンサイクル数を実行マシンサイクル数情報格納部３２から読み出し、それらに基づいて、読み出し禁止期間としてパイプライン・ストール・サイクル数を生成する。レジスタライトアクセス情報生成部２１は、レジスタを識別するレジスタ識別子と、レジスタに値が書き込まれたときのレジスタライトアクセス時間と、パイプライン・ストール・サイクル数とをレジスタライトアクセス情報記憶部３１に格納する。データハザード検出兼実行マシンサイクル数算出部２２は、レジスタがデータハザードの対象になっている場合、レジスタライトアクセス情報記憶部３１に格納されたレジスタライトアクセス時間及びパイプライン・ストール・サイクル数と、命令に対する第２実行マシンサイクル数と、に基づいて実行マシンサイクル数を算出する。
【００４０】
これにより、本発明の実施形態によるシミュレーション装置４によれば、ＩＳＳシミュレーション装置内にレジスタライトアクセス情報生成部２１、レジスタライトアクセス情報記録部３１、データハザード検出兼実行マシンサイクル数算出部２２、実行マシンサイクル数情報格納部３２を設けることにより、レジスタライトアクセス時間と、読み出し禁止期間（パイプライン・ストール・サイクル数）と、を記録しておくことができ、パイプライン・ステージを実装しなくても、データハザードの検出と、データハザードによる遅延を考慮した各命令の実行マシンサイクル数と、を決定（算出）することができる。
【００４１】
その結果、本発明の実施形態によるシミュレーション装置４によれば、データハザードによる遅延を考慮したモデルでプロセッサの動作を模擬することができる。このため、非特許文献１で挙げた問題点を解決することができる。
【００４２】
また、本発明の実施形態によるシミュレーション装置４によれば、パイプライン・ステージが設けられていないことにより、非特許文献２で挙げた問題点を解決し、シミュレーション速度の高速化を実現できる。
【図面の簡単な説明】
【００４３】
【図１−１】図１−１は、非特許文献１に記載された技術を説明するための図である。
【図１−２】図１−２は、非特許文献１に記載された技術を説明するための図である。
【図１−３】図１−３は、非特許文献１に記載された技術を説明するための図である。
【図２】図２は、非特許文献２に記載された技術を説明するための図であり、パイプライン・ステージの概略図である。
【図３】図３は、本発明の実施形態によるシミュレーション装置４の構成を示している。
【図４】図４は、シミュレーション装置４が動作する環境として、コンピュータの構成を示している。
【図５】図５は、シミュレーションエンジン部７の構成を示している。
【図６】図６は、シミュレーションエンジン部７の動作を示すフローチャートである。
【符号の説明】
【００４４】
１    コンピュータ本体、
２    入力装置、
３    出力装置、
４    シミュレーション装置、
５    ユーザインターフェース部、
６    命令データ格納部、
７    シミュレーションエンジン部（シミュレーションプログラム）、
１０    命令実行部、
１１    命令処理部、
１３    実行サイクル数計測部、
２１    レジスタライトアクセス情報生成部、
２２    データハザード検出兼実行マシンサイクル数算出部、
３１    レジスタライトアクセス情報記憶部、
３２    実行マシンサイクル数情報格納部、
６０    実行結果、
【図１−１】
2010086047.tif 000003
【図１−２】
2010086047.tif 000004
【図１−３】
2010086047.tif 000005
【図２】
2010086047.tif 000006
【図３】
2010086047.tif 000007
【図４】
2010086047.tif 000008
【図５】
2010086047.tif 000009
【図６】
2010086047.tif 000010