(57)【要約】【課題】複数のパイプラインを考慮したプロセッサの動作をシミュレートすることができるシミュレーション装置を提供する。【解決手段】シミュレーション装置は、命令処理部（１１）と、同時実行条件判定部（３１）と、実行マシンサイクル補正部（４１）と、を具備している。命令処理部（１１）は、プロセッサ（７０）上で実行可能な命令群で構成された解析対象プログラムを読み込んで各命令処理を行う。同時実行条件判定部（３１）は、解析対象プログラムが有する命令群のそれぞれが複数のパイプライン（７１、７２）で同時に処理可能かどうかを判断する。実行マシンサイクル補正部（４１）は、同時実行条件判定部（３１）の結果と、実行マシンサイクル数格納部（４２）に予め記憶された複数の命令の各々の実行マシンサイクル数とに基づいて、命令群の実行マシンサイクル数を算出する。【選択図】図４
2008176453.tif 000002
【特許請求の範囲】
【請求項１】
複数のパイプライン構造を有するプロセッサの動作を模擬するシミュレーション装置であって、
前記プロセッサ上で実行可能な命令群で構成された解析対象プログラムを読み込んで各命令処理を行う命令処理部と、
前記解析対象プログラムが有する命令群のそれぞれが前記複数のパイプラインで同時に処理可能かどうかを判断する同時実行条件判定部と、
前記同時実行条件判定部の結果と、実行サイクル数格納部に予め記憶された複数の命令の各々の実行マシンサイクル数とに基づいて、前記命令群の実行マシンサイクル数を算出する実行マシンサイクル補正部と、
を具備するシミュレーション装置。
【請求項２】
前記同時実行条件判定部は、同時実行条件格納部に予め記憶された同時実行条件に基づいて、前記解析対象プログラム中の連続する命令群が前記複数のパイプラインで同時に処理可能かどうかを判断し、
前記同時実行条件は、前記複数のパイプラインのそれぞれが処理可能な命令に基づいて定義されている、
請求項１に記載のシミュレーション装置。
【請求項３】
前記実行マシンサイクル補正部は、前記命令群のうちの、前記同時実行条件判定部によって同時実行可能と判断された実行命令群の実行マシンサイクル数を、前記実行命令群のそれぞれの実行マシンサイクル数の中で最も大きい実行マシンサイクル数とする、
請求項２に記載のシミュレーション装置。
【請求項４】
前記複数のパイプラインのそれぞれに対応するパイプライン状態記憶部群
を更に具備し、
前記同時実行条件判定部は、前記同時実行条件格納部を参照して、１命令ずつ処理される１番目から最終番目までの前記命令群を１番目から最終番目までの複数の前記実行命令群に分割し、前記実行命令群をそれぞれ前記パイプライン状態記憶部群に格納し、
前記実行マシンサイクル補正部は、前記パイプライン状態記憶部群と実行サイクル数格納部とを参照して、前記実行命令群の実行マシンサイクル数の中から、前記最大実行マシンサイクル数を検索し、前記実行命令群の実行マシンサイクル数を前記最も大きい実行マシンサイクル数である最大実行マシンサイクル数に変更する、
請求項３に記載のシミュレーション装置。
【請求項５】
前記パイプライン状態記憶部群に格納された実行命令の実行マシンサイクル数の合計値を含む実行結果を出力装置に出力する実行サイクル数計測部
を更に具備する請求項４に記載のシミュレーション装置。
【請求項６】
前記同時実行条件判定部は、前記パイプライン状態記憶部群に格納された前記実行命令群が、同一のレジスタを用いて演算を行う演算実行命令群を表す場合、前記演算実行命令群を１番目から最終番目までの複数のハザード実行命令群に分割し、
前記複数のハザード実行命令群の各々は、同一のレジスタを用いていない命令の組を表し、
前記同時実行条件判定部は、前記パイプライン状態記憶部群に格納された前記演算実行命令群に代えて、前記ハザード実行命令群を前記実行命令群として１番目から最終番目までこの順に前記パイプライン状態記憶部群のうちの１つのパイプライン状態記憶部に格納する、
請求項４又は５に記載のシミュレーション装置。
【請求項７】
前記命令群のうちの、演算命令を識別する識別子と、前記プロセッサが前記演算命令を実行するときに用いるレジスタのレジスタ名とが格納された使用レジスタ情報記憶部
を更に具備し、
前記同時実行条件判定部は、前記パイプライン状態記憶部群と前記使用レジスタ情報記憶部とを参照して、前記パイプライン状態記憶部群に格納された前記実行命令群が、同一のレジスタを用いて演算を行う演算実行命令群を表す場合、前記演算実行命令群を１番目から最終番目までの複数のハザード実行命令群に分割し、
前記複数のハザード実行命令群の各々は、同一のレジスタを用いていない命令の組を表し、
前記同時実行条件判定部は、前記パイプライン状態記憶部群に格納された前記演算実行命令群に代えて、前記ハザード実行命令群を前記実行命令群として１番目から最終番目までこの順に前記パイプライン状態記憶部群のうちの１つのパイプライン状態記憶部に格納する、
請求項４又は５に記載のシミュレーション装置。
【請求項８】
複数のパイプライン構造を有するプロセッサの動作をコンピュータを用いて模擬するシミュレーション方法であって、
前記プロセッサ上で実行可能な命令群で構成された解析対象プログラムを読み込んで各命令処理を行う命令処理ステップと、
前記解析対象プログラムが有する命令群のそれぞれが前記複数のパイプラインで同時に処理可能かどうかを判断する同時実行条件判定ステップと、
前記同時実行条件判定部の結果と、実行サイクル数格納部に予め記憶された複数の命令の各々の実行マシンサイクル数とに基づいて、前記命令群の実行マシンサイクル数を算出する実行マシンサイクル補正ステップと、
を具備するシミュレーション方法。
【請求項９】
前記同時実行条件判定ステップは、同時実行条件格納ステップに予め記憶された同時実行条件に基づいて、前記解析対象プログラム中の連続する命令群が前記複数のパイプラインで同時に処理可能かどうかを判断し、
前記同時実行条件は、前記複数のパイプラインのそれぞれが処理可能な命令に基づいて定義されている、
請求項８に記載のシミュレーション方法。
【請求項１０】
前記実行マシンサイクル補正ステップは、前記命令群のうちの、前記同時実行条件判定ステップによって同時実行可能と判断された実行命令群の実行マシンサイクル数を、前記実行命令群のそれぞれの実行マシンサイクル数の中で最も大きい実行マシンサイクル数とする、
請求項９に記載のシミュレーション方法。
【請求項１１】
前記同時実行条件判定ステップは、前記同時実行条件格納部を参照して、１命令ずつ処理される１番目から最終番目までの前記命令群を１番目から最終番目までの複数の前記実行命令群に分割し、前記実行命令群をそれぞれ前記複数のパイプラインに対応する前記パイプライン状態記憶部群に格納し、
前記実行マシンサイクル補正ステップは、前記パイプライン状態記憶部群と実行サイクル数格納部とを参照して、前記実行命令群の実行マシンサイクル数の中から、前記最大実行マシンサイクル数を検索し、前記実行命令群の実行マシンサイクル数を前記最も大きい実行マシンサイクル数である最大実行マシンサイクル数に変更する、
請求項１０に記載のシミュレーション方法。
【請求項１２】
前記パイプライン状態記憶部群に格納された実行命令の実行マシンサイクル数の合計値を含む実行結果を出力装置に出力する実行サイクル数計測ステップ
を更に具備する請求項１１に記載のシミュレーション方法。
【請求項１３】
前記同時実行条件判定ステップは、前記パイプライン状態記憶部群に格納された前記実行命令群が、同一のレジスタを用いて演算を行う演算実行命令群を表す場合、前記演算実行命令群を１番目から最終番目までの複数のハザード実行命令群に分割し、
前記複数のハザード実行命令群の各々は、同一のレジスタを用いていない命令の組を表し、
前記同時実行条件判定ステップは、前記パイプライン状態記憶部群に格納された前記演算実行命令群に代えて、前記ハザード実行命令群を前記実行命令群として１番目から最終番目までこの順に前記パイプライン状態記憶部群のうちの１つのパイプライン状態記憶部に格納する、
請求項１１又は１２に記載のシミュレーション方法。
【請求項１４】
コンピュータにインストールされ、複数のパイプライン構造を有するプロセッサの動作を前記コンピュータを用いて模擬するためのコンピュータプログラムであるシミュレーションプログラムであって、
前記プロセッサ上で実行可能な命令群で構成された解析対象プログラムを読み込んで各命令処理を行う命令処理ステップと、
前記解析対象プログラムが有する命令群のそれぞれが前記複数のパイプラインで同時に処理可能かどうかを判断する同時実行条件判定ステップと、
前記同時実行条件判定部の結果と、実行サイクル数格納部に予め記憶された複数の命令の各々の実行マシンサイクル数とに基づいて、前記命令群の実行マシンサイクル数を算出する実行マシンサイクル補正ステップと、
の各ステップを前記コンピュータに実行させるシミュレーションプログラム。
【請求項１５】
前記同時実行条件判定ステップは、同時実行条件格納ステップに予め記憶された同時実行条件に基づいて、前記解析対象プログラム中の連続する命令群が前記複数のパイプラインで同時に処理可能かどうかを判断し、
前記同時実行条件は、前記複数のパイプラインのそれぞれが処理可能な命令に基づいて定義されている、
請求項１４に記載のシミュレーションプログラム。
【請求項１６】
前記実行マシンサイクル補正ステップは、前記命令群のうちの、前記同時実行条件判定ステップによって同時実行可能と判断された実行命令群の実行マシンサイクル数を、前記実行命令群のそれぞれの実行マシンサイクル数の中で最も大きい実行マシンサイクル数とする、
請求項１５に記載のシミュレーションプログラム。
【請求項１７】
前記同時実行条件判定ステップは、前記同時実行条件格納部を参照して、１命令ずつ処理される１番目から最終番目までの前記命令群を１番目から最終番目までの複数の前記実行命令群に分割し、前記実行命令群をそれぞれ前記複数のパイプラインに対応する前記パイプライン状態記憶部群に格納し、
前記実行マシンサイクル補正ステップは、前記パイプライン状態記憶部群と実行サイクル数格納部とを参照して、前記実行命令群の実行マシンサイクル数の中から、前記最大実行マシンサイクル数を検索し、前記実行命令群の実行マシンサイクル数を前記最も大きい実行マシンサイクル数である最大実行マシンサイクル数に変更する、
請求項１６に記載のシミュレーションプログラム。
【請求項１８】
前記パイプライン状態記憶部群に格納された実行命令の実行マシンサイクル数の合計値を含む実行結果を出力装置に出力する実行サイクル数計測ステップ
を更に前記コンピュータに実行させる請求項１７に記載のシミュレーションプログラム。
【請求項１９】
前記同時実行条件判定ステップは、前記パイプライン状態記憶部群に格納された前記実行命令群が、同一のレジスタを用いて演算を行う演算実行命令群を表す場合、前記演算実行命令群を１番目から最終番目までの複数のハザード実行命令群に分割し、
前記複数のハザード実行命令群の各々は、同一のレジスタを用いていない命令の組を表し、
前記同時実行条件判定ステップは、前記パイプライン状態記憶部群に格納された前記演算実行命令群に代えて、前記ハザード実行命令群を前記実行命令群として１番目から最終番目までこの順に前記パイプライン状態記憶部群のうちの１つのパイプライン状態記憶部に格納する、
請求項１７又は１８に記載のシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの動作をシミュレートするシミュレーション装置、シミュレーション方法及びシミュレーションプログラムに関する。
【背景技術】
【０００２】
プロセッサ上で動作させるプログラムの解析やデバックのためにシミュレーション装置が利用されている。シミュレーション装置は、プロセッサの動作と同じ動作か、あるいは、それを簡略化した動作を行うように設計される。このようなシミュレーション装置としては、命令セットシミュレータ（ＩＳＳ；Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）といったものが広く知られている。ＩＳＳは、パーソナルコンピュータやワークステーションなどのコンピュータ上で動作し、プロセッサの命令の動作や、その実行結果、レジスタの状態などを模擬するものである。ＩＳＳを用いることにより、プログラムの解析やデバックのために専用のハードウェアを用意する必要がないというメリットがある。
【０００３】
ＩＳＳなどを用いたプログラムの解析においては、プログラムの動作の正当性を表す情報だけでなく、プログラムの実行速度を表す情報が得られると有益である。より具体的には、後者の情報として、プログラム中にある命令の処理にプロセッサが何サイクル要するか、ということである。例えば、特開２００１−２９０８５７号公報には、パイプライン構造を有するハードウェアと同等の動作を行うシミュレーション手法に関する技術が記載されており、１命令毎の実行におけるパイプラインの状態を命令毎のタイミングテーブルを参照することで、パイプラインを考慮した実行マシンサイクル数を算出している。
【０００４】
【特許文献１】特開２００１−２９０８５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年のプロセッサでは、命令の処理速度を上げるために、１つのプロセッサ内に複数のパイプラインを有するようになってきた。従って、このようなプロセッサで動作させるプログラムを開発する場合においても、複数のパイプラインを考慮したシミュレーション手法が望まれる。
【０００６】
しかしながら、特開２００１−２９０８５７号公報には、複数のパイプラインを有するプロセッサをシミュレートする技術に関しては何ら記載されていない。複数のパイプラインを有するプロセッサに対してこの従来技術を適用した場合、個々のパイプラインで実行されるマシンサイクル数を算出することは出来たとしても、複数のパイプラインを組み合わせて動作するプロセッサ全体のマシンサイクル数を算出することは困難である。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための最良の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
本発明のシミュレーション装置（４）は、
複数のパイプライン構造（７１、７２）を有するプロセッサ（７０）の動作を模擬するシミュレーション装置（４）であって、
前記プロセッサ（７０）上で実行可能な命令群（“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”）で構成された解析対象プログラムを読み込んで各命令処理を行う命令処理部（１１）と、
前記解析対象プログラムが有する命令群（“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”）のそれぞれが前記複数のパイプライン（７１、７２）で同時に処理可能かどうかを判断する同時実行条件判定部（３１）と、
前記同時実行条件判定部（３１）の結果と、実行マシンサイクル数格納部（４２）に予め記憶された複数の命令（ＬＤ、ＡＤＤ、ＳＵＢ、ＪＭＰ、ＭＯＶ、…）の各々の実行サイクル数（１、２、２、６、４、…）とに基づいて、前記命令群（“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”）の実行マシンサイクル数（“４”）（“２”）（“６”）（“１”）（“２”）（“４”）を算出する実行マシンサイクル補正部（４１）と、
を具備している。
【発明の効果】
【０００９】
以上により、本発明のシミュレーション装置（４）によれば、複数のパイプラインを考慮したプロセッサ（７０）の動作をシミュレートすることができる。
【００１０】
その理由として、本発明のシミュレーション装置（４）では、命令群（“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”）に対して、プロセッサ（７０）がパイプライン群（７１、７２）により同時実行可能な命令の組として実行命令群（“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”）を検索し、命令群（“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”）が処理される順番を考慮して、実行命令群（“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”）の実行マシンサイクル数（“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”）を最大実行マシンサイクル数（“４”、“２”、“６”、“１”、“２”、“４”）に変更する。このように、本発明のシミュレーション装置（４）では、プロセッサ（７０）がパイプライン群（７１、７２）により同時実行可能な実行命令群を検索し、その実行マシンサイクル数を最大実行マシンサイクル数に変更することにより、複数のパイプライン｛パイプライン群（７１、７２）｝を考慮したプロセッサ（７０）の動作をシミュレートすることができる。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、本発明のシミュレーション装置について詳細に説明する。
【００１２】
（第１実施形態）
図１は、本発明の第１実施形態によるシミュレーション装置４の構成を示している。そのシミュレーション装置４は、ユーザインターフェース部５と、メモリである命令データ格納部６と、シミュレーションエンジン部（シミュレーションプログラム）７とを具備している。ユーザインターフェース部５は、入力装置による入力、及び、出力装置に出力する制御を行う。命令データ格納部６には、デバック対象のプログラムが格納されている。シミュレーションエンジン部７は、デバック対象のプログラムを命令データ格納部６から読み出し、デバック対象のプログラムに記述されている命令群を処理する。
【００１３】
シミュレーションエンジン部７は、コンピュータにインストールされるコンピュータプログラム（シミュレーションプログラム）としても実現可能である。図２は、コンピュータの構成を示している。コンピュータは、入力装置２と、出力装置３と、コンピュータ本体１とを具備している。入力装置２と出力装置３は、コンピュータ本体１に接続されている。入力装置２は、キーボード、ポインティングデバイスを含み、出力装置３は、表示装置、プリンタを含んでいる。
【００１４】
上記のコンピュータ本体１は、図示しない記憶装置と、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とを具備している。シミュレーションエンジン部７は、記憶装置にインストールされる。この場合、命令データ格納部６に格納されたデバック対象のプログラムも記憶装置にインストールされる。シミュレーションエンジン部７（シミュレーションプログラム）は、デバック対象のプログラムを記憶装置から読み出し、デバック対象のプログラムに記述されている命令群をＣＰＵ上で処理する。
【００１５】
シミュレーションエンジン部７は、プロセッサ上で動作させるプログラムの解析やデバックのためのソフトウェアとして、設計者に利用される。図３は、本発明でシミュレートを実行しようとしているプロセッサ７０のパイプライン部分の概略図である。プロセッサ７０は、命令群とデータとが格納されたメモリ７３と、複数の汎用レジスタを含むレジスタ７４と、２つのパイプライン７１、７２とを具備している。
【００１６】
プロセッサ７０は、クロックに応じて動作し、更に、命令群をフェッチするＩＦ（命令フェッチ）ステージ８１と、フェッチされた命令をデコードするＤＣ（デコード）ステージ８２−１、８２−２と、デコードされた命令を実行するＥＸ（実行）ステージ８３−１、８３−２と、命令（メモリアクセス命令）に対してメモリ７３のアクセスを行うＭＥ（メモリアクセス）ステージ８４−１、８４−２と、命令の実行結果をレジスタ７４に書き込むＷＢ（ライトバック）ステージ８５−１、８５−２とを具備している。プロセッサ７０は、ＩＦステージ８１とＤＣステージ８２−１とＥＸステージ８３−１とＭＥステージ８４−１とＷＢステージ８５−１によりパイプライン７１を構成し、ＩＦステージ８１とＤＣステージ８２−２とＥＸステージ８３−２とＭＥステージ８４−２とＷＢステージ８５−２によりパイプライン７２を構成する。
【００１７】
プロセッサ７０により実行される命令群ｎは、例えば、“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＪＭＰ、ＬＤ”といったものがあるとする。ニーモニック表記の“ＬＤ”、“ＡＤＤ”、“ＳＵＢ”、“ＪＭＰ”、“ＭＯＶ”は、それぞれ、メモリ７３からレジスタ７４にデータを書き込むロード命令、加算命令、減算命令、ジャンプ命令、ムーブ命令を表している。プロセッサ７０上で動作するプログラムはこれらの命令で構成されることになる。
【００１８】
図３に示されるプロセッサ７０の場合、２つのパイプライン７１、７２を具備しているため、フェッチした各命令は２つのパイプライン７１、７２を使って並列に処理することにより１つのパイプライン７１の場合よりも処理速度を上げることができる。ただし、２つのパイプライン７１、７２により処理される加算器、減算器といった演算器は同じ構成にはならない場合がある。これは各演算器をパイプラインの数だけ用意してしまうと、処理速度を上げることはできるが、プロセッサ７０が巨大になってしまうというデメリットが生じるためである。大型コンピュータに搭載されるプロセッサであれば問題にはならないが、小型コンピュータ用や、家電・車両用のマイコンに搭載されるプロセッサでは、重要な要素となる。具体的には、例えば、命令“ＬＤ”、“ＪＭＰ”、“ＭＯＶ”を処理するための演算器が一方のパイプライン７１にしか配置されていない、というプロセッサ７０が想定される。この場合、例えば、プロセッサ７０上で動作させようとするプログラム中に、命令“ＪＭＰ、ＭＯＶ”という連続する命令があった場合、プロセッサ７０は、パイプラインの制約上、これらの命令を２つのパイプライン７１、７２で並列に実行することはできない。このため、プロセッサ７０は、命令“ＪＭＰ”をパイプライン７１で実行した後に、命令“ＭＯＶ”をパイプライン７１で実行するという逐次処理となる。本実施例では、このようなプロセッサ７０をシミュレートする場合の手法について述べる。なお、上記の命令“ＬＤ”、“ＪＭＰ”、“ＭＯＶ”を処理するための演算器が一方のパイプライン７１にしか配置されていないプロセッサ７０、というものは、単に説明を簡略化するために挙げたものに過ぎない。
【００１９】
図４は、シミュレーションエンジン部７の構成を示している。シミュレーションエンジン部７は、命令実行部１０と、パイプライン状態記憶装置２０と、同時実行命令検索部３０と、実行サイクル変更部４０とを具備している。命令実行部１０は、命令処理部１１と、パイプライン状態制御部１２と、実行サイクル数計測部１３とを具備している。パイプライン状態記憶装置２０は、パイプライン状態記憶部群２１、２２を具備している。パイプライン状態記憶部群２１、２２は、それぞれ、上記のパイプライン群７１、７２に対応している。同時実行命令検索部３０は、同時実行条件判定部３１と、同時実行条件格納部３２とを具備している。実行サイクル変更部４０は、実行サイクル補正部４１と、実行サイクル数格納部４２とを具備している。命令実行部１０において、命令処理部１１は、前述のＩＳＳが有している機能と同等のものであるため、その説明を省略する。パイプライン状態制御部１２と実行サイクル数計測部１３は、本発明の特徴部分であり、以下はこれらを中心に説明する。
【００２０】
図５は、同時実行条件格納部３２を示している。同時実行条件格納部３２には、プロセッサ７０がパイプライン群７１、７２により同時実行可能な命令の組を表す同時実行条件が予め格納されている。同時実行条件は、パイプラインの制約として予め決められている。例えば、命令の組として“ＡＤＤ、ＭＯＶ”、“ＬＤ、ＭＯＶ”、…と、それに対して同時実行を許可することを表す判定“ＯＫ”とが同時実行条件格納部３２に格納されている。また、命令の組として“ＪＭＰ、ＭＯＶ”、“ＬＤ、ＬＤ”、…と、それに対して同時実行を許可しないことを表す判定“ＮＧ”とが同時実行条件格納部３２に格納されている。
【００２１】
図６は、実行サイクル数格納部４２を示している。実行サイクル数格納部４２には、複数の命令と、複数の命令の各々に対してＥＸステージが実行されるときのマシンサイクル（クロック）の数を表す実行マシンサイクル数とが予め格納されている。例えば、複数の命令として“ＬＤ、ＡＤＤ、ＳＵＢ、ＪＭＰ、ＭＯＶ、…”と、それに対する実行マシンサイクル数として“１、２、２、６、４、…”とが実行サイクル数格納部４２に格納されている。ここで、実行マシンサイクル数については、本実施形態を説明する便宜上、実際よりも極端に大きい値を記載している。これらの値は、実際のプロセッサ７０の処理速度によって決定される。その決定方法としては、プロセッサ７０を用いて予め測定して決定する場合や、プロセッサ７０の設計仕様に基づいて予め決定する場合などが挙げられる。
【００２２】
命令処理部１１は、設計者の入力装置２の操作により、記憶装置（命令データ格納部６に対応）からデバック対象のプログラムを読み出す。図４では、説明の簡略化のためにデバック対象のプログラム中の命令群だけを記載しており、デバック対象のプログラムが、“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”の順番で命令群を処理するようなプログラムであるものとする。命令処理部１１は、記憶装置（命令データ格納部６に対応）から命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”を順次読み出して、パイプライン状態制御部１２に出力するとともに各命令に応じた処理を実行する。パイプライン状態制御部１２は、同時実行可能な命令の組を検索する同時実行命令検索処理を実行させるために、その命令群を同時実行条件判定部３１に出力する。
【００２３】
同時実行命令検索処理において、図７Ａに示されるように、同時実行条件判定部３１は、同時実行条件格納部３２を参照して、１命令ずつ処理される１番目から最終番目までの命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”を１番目から最終番目までの複数の実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”に分割する。“＿”は、同時実行条件により実行されない命令を表している。複数の実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の各々は、プロセッサ７０がパイプライン群７１、７２により同時実行可能な命令の組を表している。同時実行条件判定部３１は、１番目から最終番目までこの順に実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”をパイプライン状態記憶装置２０に格納する。このとき、同時実行条件判定部３１は、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”をそれぞれパイプライン状態記憶部群２１、２２に格納し、同時実行命令検索処理の終了をパイプライン状態制御部１２に通知する。
【００２４】
実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数は、それぞれ、“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”である。例えば、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”に対して、それぞれプロセッサ７０のパイプライン群７１、７２によってＩＦステージ８１、ＤＣステージ８２−１、８２−２、ＥＸステージ８３−１、８３−２、ＭＥステージ８４−１、８４−２、ＷＢステージ８５−１、８５−２が実行される。このとき、プロセッサ７０が１番目の実行命令“ＡＤＤ”と２番目の実行命令“ＭＯＶ”とを同時実行した場合、実行命令“ＡＤＤ”、“ＭＯＶ”に対してＥＸステージ８３−１、８３−２が実行されるときの実行マシンサイクル数は“２”、“４”である。図７Ｂに示されるように、１番目の実行命令“ＡＤＤ”と２番目の実行命令“ＭＯＶ”が実行されるときの時間をｔ０とした場合、２番目の実行命令“ＭＯＶ”が実行されているときに、時間ｔ６において１番目の実行命令“ＡＤＤ”の実行が先に終了し、時間ｔ８において２番目の実行命令“ＭＯＶ”と３番目の実行命令“ＳＵＢ”の実行が同時に終了する。即ち、１命令ずつ処理される１番目から最終番目までの命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”に対して、３番目の実行命令“ＳＵＢ”が２番目の実行命令“ＭＯＶ”よりも先に実行されてしまう可能性がある。そこで、実行マシンサイクル数を補正する必要がある。
【００２５】
パイプライン状態制御部１２は、実行マシンサイクル数を補正する実行サイクル検索処理を実行させるために、パイプライン状態記憶部群２１、２２に格納された実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を読み出し、実行サイクル数計測部１３に出力する。実行サイクル数計測部１３は、その実行命令群を実行サイクル補正部４１に出力する。
【００２６】
実行サイクル検索処理において、実行サイクル補正部４１は、実行サイクル数計測部１３からの実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を受け取る。又は、実行サイクル補正部４１は、実行サイクル検索処理を実行させる通知を実行サイクル数計測部１３から受け取ったとき、パイプライン状態記憶部群２１、２２を参照してもよい。実行サイクル補正部４１は、実行マシンサイクル数格納部４２を参照して、パイプライン群７１、７２によって実行される実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”の中から、最も大きい実行マシンサイクル数である最大実行マシンサイクル数“４”、“２”、“６”、“１”、“２”、“４”を検索する。検索の結果、図８Ｂに示されるように、実行マシンサイクル補正部４１は、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“６”、“１”、“２”、“４”に変更する。実行マシンサイクル補正部４１は、その最大実行マシンサイクル数“４”、“２”、“６”、“１”、“２”、“４”を命令実行部１０に出力し、実行サイクル検索処理の終了を通知する。
【００２７】
このとき、図８Ａに示されるように、命令実行部１０のパイプライン状態制御部１２は、パイプライン状態記憶部群２１、２２に格納された実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“６”、“１”、“２”、“４”に更新し、命令実行部１０の実行サイクル数計測部１３に出力する。
【００２８】
実行サイクル数計測部１３は、図９に示されるような実行結果６０を出力装置３に出力する。実行結果６０は、パイプライン状態記憶部群２１、２２に格納された実行命令“ＡＤＤ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＭＯＶ”、“ＭＯＶ、ＳＵＢ、＿、＿、ＡＤＤ、＿”と、その実行マシンサイクル数“４、２、６、１、２、４”の合計値“１９”を含んでいる。この場合、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”の実行マシンサイクル数“２、４、２、２、６、１、１、２、４”の合計値“２４”よりも小さい。また、１クロックの周期を１０［ｎｓｅｃ］とした場合、上記の合計値“１９”は、処理時間［ｎｓｅｃ］に対応し、実行命令“ＡＤＤ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＭＯＶ”、“ＭＯＶ、ＳＵＢ、＿、＿、ＡＤＤ、＿”に対する処理時間［ｎｓｅｃ］は、“４０、６０、１２０、１３０、１５０、１９０”［ｎｓｅｃ］により表される。ここで、１クロックの周期については、本実施形態を説明する便宜上、実際よりも極端に大きい値を記載している。
【００２９】
プロセッサ７０では、命令の処理速度を上げるために、１つのプロセッサ７０内に複数のパイプラインとしてパイプライン群７１、７２を有している。従って、このようなプロセッサ７０で動作させるプログラムを開発する場合においても、パイプライン群７１、７２を考慮したシミュレーション手法が望まれる。しかしながら、パイプライン群７１、７２がまったく同じ構成ではなく、それぞれのパイプライン７１、７２に実装されている演算器が異なる場合は、特開２００１−２９０８５７号公報に記載されている技術を単純にパイプライン群７１、７２に適用することは困難である。
【００３０】
そこで、本発明の第１実施形態によるシミュレーション装置４では、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”に対して、プロセッサ７０がパイプライン群７１、７２により同時実行可能な命令の組として実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を検索し、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”が処理される順番を考慮して、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、２”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“６”、“１”、“２”、“４”に変更する。このように、本発明の第１実施形態によるシミュレーション装置４では、プロセッサ７０がパイプライン群７１、７２により同時実行可能な実行命令群を検索し、その実行マシンサイクル数を最大実行マシンサイクル数に変更することにより、複数のパイプライン（パイプライン群７１、７２）を考慮したプロセッサ７０の動作をシミュレートすることができる。
【００３１】
図１０は、シミュレーションエンジン部７の動作を示すフローチャートである。
【００３２】
まず、命令処理部１１は、１番目の命令“ＡＤＤ”を命令データ格納部６から読み出す。同時に、実行サイクル数計測部１３は、実行サイクル数格納部４２を参照して、１番目の命令“ＡＤＤ”の実行マシンサイクル数“２”を取得するように、実行サイクル補正部４１を制御する（ステップＳ１）。パイプライン状態制御部１２は、同時実行命令検索処理として、１番目の命令“ＡＤＤ”をパイプライン状態記憶部群２１の１レコード目に格納するように、同時実行条件判定部３１を制御する（ステップＳ２−ＮＯ）。このとき、実行サイクル数計測部１３は、実行結果６０として、１番目の命令“ＡＤＤ”の実行マシンサイクル数“２”を、１番目の実行命令群の総実行マシンサイクル数“０”に加算する（ステップＳ８）。
【００３３】
次に、命令処理部１１は、２番目の命令“ＭＯＶ”を命令データ格納部６から読み出す（ステップＳ９−ＮＯ）。同時に、実行サイクル数計測部１３は、実行サイクル数格納部４２を参照して、２番目の命令“ＭＯＶ”の実行マシンサイクル数“４”を取得するように、実行サイクル補正部４１を制御する（ステップＳ１）。ここで、パイプライン状態記憶部群２１の１レコード目には、１番目の命令“ＡＤＤ”が格納されている（ステップＳ２−ＹＥＳ）。パイプライン状態制御部１２は、同時実行命令検索処理として、同時実行条件格納部３２を参照するように、同時実行条件判定部３１を制御する（ステップＳ３）。検索の結果、１番目の命令（先行命令群）“ＡＤＤ”と２番目の命令“ＭＯＶ”は、同時実行可能である（ステップＳ４−ＹＥＳ）。この場合、同時実行条件判定部３１は、１番目の実行命令群“ＡＤＤ、ＭＯＶ”として、パイプライン状態記憶部群２１に格納された１番目の命令“ＡＤＤ”に対応付けて、２番目の命令“ＭＯＶ”をパイプライン状態記憶部群２１の１レコード目に格納する。１番目の命令（先行命令群）“ＡＤＤ”の実行マシンサイクル数“２”は、２番目の命令（現命令）“ＭＯＶ”の実行マシンサイクル数“４”よりも小さい（ステップＳ５−ＮＯ）。即ち、２番目の命令“ＭＯＶ”の実行マシンサイクル数“４”は、最大実行マシンサイクル数“４”となる。このとき、実行サイクル数計測部１３は、実行サイクル検索処理として、１番目の命令“ＡＤＤ”の実行マシンサイクル数“２”を最大実行マシンサイクル数“４”に変更するように、実行マシンサイクル補正部４１を制御する。同時に、実行サイクル数計測部１３は、実行結果６０として、最大実行マシンサイクル数“４”と１番目の命令“ＡＤＤ”の実行マシンサイクル数“２”との差分“２”を、１番目の実行命令群“ＡＤＤ、ＭＯＶ”の総実行マシンサイクル数“２”に加算する（ステップＳ７）。
【００３４】
一方、先行命令群の実行マシンサイクル数は、現命令の実行マシンサイクル数以上である（ステップＳ５−ＹＥＳ）。この場合、実行マシンサイクル補正部４１は、先行命令群の実行マシンサイクル数を変更しない。同時に、実行サイクル数計測部１３は、実行結果６０として、先行命令群と現命令とを含む実行命令群の総実行マシンサイクル数を更新しない（ステップＳ６）。
【００３５】
シミュレーションエンジン部７は、１番目から最終番目（９番目）の命令“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”が終了するまで（ステップＳ９−ＹＥＳ）、上記の動作を実行する。
【００３６】
以上の説明により、本発明の第１実施形態によるシミュレーション装置４では、プロセッサ７０がパイプライン群７１、７２により同時実行可能な実行命令群を検索し、その実行マシンサイクル数を最大実行マシンサイクル数に変更することにより、複数のパイプライン（パイプライン群７１、７２）を考慮したプロセッサ７０の動作をシミュレートすることができる。
【００３７】
（第２実施形態）
本発明の第２実施形態によるシミュレーション装置４では、第１実施形態と重複する説明を省略する。
【００３８】
図１１は、シミュレーションエンジン部７の構成を示している。シミュレーションエンジン部７は、更に、使用レジスタ情報記憶部５０を具備している。
【００３９】
図１２は、使用レジスタ情報記憶部５０を示している。使用レジスタ情報記憶部５０には、演算命令を識別する識別子と、各演算命令を実行するときに用いるレジスタ名とが格納されている。レジスタ名は、シミュレート対象のプロセッサ７０が備えているレジスタ７４であり、デバッグ対象のプログラムで各演算命令を実行するときに用いるものである。例えば、デバッグ対象のプログラムが命令“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”という様に構成されている場合に、“ＡＤＤ、ＳＵＢ、ＳＵＢ、ＡＤＤ”の演算が“ＡＤＤ  Ｒ１１、Ｒ１２（Ｒ１１＝Ｒ１１＋Ｒ１２の意味）、ＳＵＢ  Ｒ１、Ｒ２（Ｒ１＝Ｒ１−Ｒ２の意味）、ＳＵＢ  Ｒ３、Ｒ１（Ｒ３＝Ｒ３−Ｒ１の意味）、ＡＤＤ  Ｒ２１、Ｒ２２（Ｒ２１＝Ｒ２１＋Ｒ２２の意味）”となっている場合、それぞれの演算を識別する識別子とレジスタ名が使用レジスタ情報記憶部５０に格納される。
【００４０】
命令処理部１１は、設計者の入力装置２の操作により、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”を記憶装置（命令データ格納部６に対応）から読み出して、パイプライン状態制御部１２に出力するとともに、各命令で使用するレジスタ名と各命令を識別するための識別子とを使用レジスタ情報記憶部５０に出力する。パイプライン状態制御部１２は、同時実行可能な命令の組を検索する同時実行命令検索処理を実行させるために、その命令群を同時実行条件判定部３１に出力する。
【００４１】
同時実行命令検索処理において、図１３に示されるように、同時実行条件判定部３１は、同時実行条件格納部３２を参照して、１命令ずつ処理される１番目から最終番目までの命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”を１番目から最終番目までの複数の実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”に分割する。“＿”は、同時実行条件により実行されない命令を表している。複数の実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の各々は、プロセッサ７０がパイプライン群７１、７２により同時実行可能な命令の組を表している。同時実行条件判定部３１は、１番目から最終番目までこの順に実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”をパイプライン状態記憶装置２０に格納する。このとき、同時実行条件判定部３１は、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”をそれぞれパイプライン状態記憶部群２１、２２に格納する。
【００４２】
次に、同時実行条件判定部３１は、パイプライン状態記憶部群２１、２２と使用レジスタ情報記憶部５０とを参照して、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”が、同一のレジスタを用いて演算を行う演算実行命令群であるか否かを検索する。検索の結果、実行命令群“ＳＵＢ、ＳＵＢ”が、同一のレジスタ“Ｒ１”を用いて演算“Ｒ１＝Ｒ１−Ｒ２”、“Ｒ３＝Ｒ３−Ｒ１”を行う演算実行命令群である。即ち、演算実行命令群“ＳＵＢ、ＳＵＢ”は、同一のレジスタ“Ｒ１”を用いるため、同時に実行することができない。この同一のレジスタを用いることにより同時に実行することができない命令をハザード実行命令と呼ぶ。
【００４３】
そこで、図１３に示されるように、同時実行条件判定部３１は、演算実行命令群“ＳＵＢ、ＳＵＢ”を１番目から最終番目までの複数のハザード実行命令群“ＳＵＢ、＿”、“ＳＵＢ、＿”に分割する。複数のハザード実行命令群“ＳＵＢ、＿”、“ＳＵＢ、＿”の各々は、同一のレジスタ“Ｒ１”を用いていない命令の組を表し、“＿”は、同時実行条件により実行されない命令を表している。同時実行条件判定部３１は、パイプライン状態記憶部群２１、２２に格納された演算実行命令群“ＳＵＢ、ＳＵＢ”に代えて、ハザード実行命令群“ＳＵＢ、＿”、“ＳＵＢ、＿”を実行命令群として１番目から最終番目までこの順にパイプライン状態記憶部群２１、２２のうちの１つのパイプライン状態記憶部（例えばパイプライン状態記憶部２１）に格納する。この場合、パイプライン状態記憶部群２１、２２には、実行命令群として、“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”が格納されている。同時実行条件判定部３１は、同時実行命令検索処理の終了をパイプライン状態制御部１２に通知する。
【００４４】
パイプライン状態制御部１２は、実行マシンサイクル数を補正する実行サイクル検索処理を実行させるために、パイプライン状態記憶部群２１、２２に格納された実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を読み出し、実行サイクル数計測部１３に出力する。実行サイクル数計測部１３は、その実行命令群を実行サイクル補正部４１に出力する。
【００４５】
実行サイクル検索処理において、実行サイクル補正部４１は、実行サイクル数計測部１３からの実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を受け取る。又は、実行サイクル補正部４１は、実行サイクル検索処理を実行させる通知を実行サイクル数計測部１３から受け取ったとき、パイプライン状態記憶部群２１、２２を参照してもよい。実行サイクル補正部４１は、実行マシンサイクル数格納部４２を参照して、パイプライン群７１、７２によって実行される実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、＿”、“２、＿”、“６、＿”、“１、＿”、“１、２”、“４、＿”の中から、最も大きい実行マシンサイクル数である最大実行マシンサイクル数“４”、“２”、“２”、“６”、“１”、“２”、“４”を検索する。検索の結果、実行マシンサイクル補正部４１は、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、＿”、“２、＿”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“２”、“６”、“１”、“２”、“４”に変更する。実行マシンサイクル補正部４１は、その最大実行マシンサイクル数“４”、“２”、“２”、“６”、“１”、“２”、“４”を命令実行部１０に出力し、実行サイクル検索処理の終了を通知する。
【００４６】
このとき、図１４に示されるように、命令実行部１０のパイプライン状態制御部１２は、パイプライン状態記憶部群２１、２２に格納された実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、＿”、“２、＿”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“２”、“６”、“１”、“２”、“４”に更新し、命令実行部１０の実行サイクル数計測部１３に出力する。
【００４７】
実行サイクル数計測部１３は、図１５に示されるような実行結果６０を出力装置３に出力する。実行結果６０は、パイプライン状態記憶部群２１、２２に格納された実行命令“ＡＤＤ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＭＯＶ”、“ＭＯＶ、＿、＿、＿、＿、ＡＤＤ、＿”と、その実行マシンサイクル数“４、２、２、６、１、２、４”の合計値“２１”を含んでいる。この場合、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”の実行マシンサイクル数“２、４、２、２、６、１、１、２、４”の合計値“２４”よりも小さい。また、１クロックの周期を１０［ｎｓｅｃ］とした場合、上記の合計値“２１”は、処理時間［ｎｓｅｃ］に対応し、実行命令“ＡＤＤ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＭＯＶ”、“ＭＯＶ、＿、＿、＿、＿、ＡＤＤ、＿”に対する処理時間［ｎｓｅｃ］は、“４０、６０、１２０、１３０、１５０、１９０”［ｎｓｅｃ］により表される。ここで、１クロックの周期については、本実施形態を説明する便宜上、実際よりも極端に大きい値を記載している。
【００４８】
本発明の第２実施形態によるシミュレーション装置４では、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”に対して、プロセッサ７０がパイプライン群７１、７２により同時実行可能な命令の組として実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、ＳＵＢ”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”を検索する。上述のように、順番の規定があり、実行命令群“ＳＵＢ、ＳＵＢ”が、同一のレジスタ“Ｒ１”を用いて演算“Ｒ１＝Ｒ１−Ｒ２”、“Ｒ３＝Ｒ３−Ｒ１”を行う場合、同時に実行することができない。
【００４９】
そこで、本発明の第２実施形態によるシミュレーション装置４では、実行命令群（演算実行命令群）“ＳＵＢ、ＳＵＢ”に対して同一のレジスタ“Ｒ１”を用いていない命令の組として実行命令群（ハザード実行命令群）“ＳＵＢ、＿”、“ＳＵＢ、＿”を検索する。シミュレーション装置４は、命令群“ＡＤＤ、ＭＯＶ、ＳＵＢ、ＳＵＢ、ＪＭＰ、ＬＤ、ＬＤ、ＡＤＤ、ＭＯＶ”が処理される順番を考慮して、実行命令群“ＡＤＤ、ＭＯＶ”、“ＳＵＢ、＿”、“ＳＵＢ、＿”、“ＪＭＰ、＿”、“ＬＤ、＿”、“ＬＤ、ＡＤＤ”、“ＭＯＶ、＿”の実行マシンサイクル数“２、４”、“２、＿”、“２、＿”、“６、＿”、“１、＿”、“１、２”、“４、＿”を最大実行マシンサイクル数“４”、“２”、“２”、“６”、“１”、“２”、“４”に変更する。このように、本発明の第２実施形態によるシミュレーション装置４では、プロセッサ７０がパイプライン群７１、７２により実行命令群と、同一のレジスタ“Ｒ１”を用いていない実行命令群とを検索し、その実行マシンサイクル数を最大実行マシンサイクル数に変更することにより、複数のパイプライン（パイプライン群７１、７２）を考慮したプロセッサ７０の動作をシミュレートすることができる。
【００５０】
図１６は、シミュレーションエンジン部７の動作を示すフローチャートである。
【００５１】
例えば、１番目の実行命令群“ＡＤＤ、ＭＯＶ”として、パイプライン状態記憶部群２１の１レコード目に１番目の命令“ＡＤＤ”が格納され、パイプライン状態記憶部群２１の１レコード目に２番目の命令“ＭＯＶ”が格納されている。
【００５２】
次に、命令処理部１１は、３番目の命令“ＳＵＢ”を命令データ格納部６から読み出す（ステップＳ９−ＮＯ）。同時に、実行サイクル数計測部１３は、実行サイクル数格納部４２を参照して、３番目の命令“ＳＵＢ”の実行マシンサイクル数“２”を取得するように、実行サイクル補正部４１を制御する（ステップＳ１）。パイプライン状態制御部１２は、同時実行命令検索処理として、３番目の命令“ＳＵＢ”をパイプライン状態記憶部群２１の２レコード目に格納するように、同時実行条件判定部３１を制御する（ステップＳ２−ＮＯ）。このとき、実行サイクル数計測部１３は、実行結果６０として、３番目の命令“ＳＵＢ”の実行マシンサイクル数“２”を、２番目の実行命令群の総実行マシンサイクル数“０”に加算する（ステップＳ８）。
【００５３】
次に、命令処理部１１は、４番目の命令“ＳＵＢ”を命令データ格納部６から読み出す（ステップＳ９−ＮＯ）。同時に、実行サイクル数計測部１３は、実行サイクル数格納部４２を参照して、４番目の命令“ＳＵＢ”の実行マシンサイクル数“２”を取得するように、実行サイクル補正部４１を制御する（ステップＳ１）。ここで、パイプライン状態記憶部群２１の２レコード目には、３番目の命令“ＳＵＢ”が格納されている（ステップＳ２−ＹＥＳ）。パイプライン状態制御部１２は、同時実行命令検索処理として、同時実行条件格納部３２を参照するように、同時実行条件判定部３１を制御する（ステップＳ３）。検索の結果、３番目の命令（先行命令群）“ＳＵＢ”と２番目の命令“ＳＵＢ”は、同時実行可能である（ステップＳ４−ＹＥＳ）。この場合、同時実行条件判定部３１は、２番目の実行命令群“ＳＵＢ、ＳＵＢ”として、パイプライン状態記憶部群２１に格納された３番目の命令“ＳＵＢ”に対応付けて、４番目の命令“ＳＵＢ”をパイプライン状態記憶部群２１の２レコード目に格納する。
【００５４】
この同時実行命令検索処理において、同時実行条件判定部３１は、パイプライン状態記憶部群２１、２２と使用レジスタ情報記憶部５０とを参照して、３番目の命令（先行命令群）“ＳＵＢ”と４番目の命令（現命令）“ＳＵＢ”とが同一のレジスタを用いて演算を行うか否かを検索する（ステップＳ１０）。検索の結果、３番目の命令“ＳＵＢ”と４番目の命令“ＳＵＢ”は、同一のレジスタ“Ｒ１”を用いて演算“Ｒ１＝Ｒ１−Ｒ２”、“Ｒ３＝Ｒ３−Ｒ１”を行うため、同時に実行することができない（ステップＳ１０−ＮＯ）。この場合、同時実行条件判定部３１は、パイプライン状態記憶部群２１、２２の２レコード目に格納された実行命令群“ＳＵＢ、ＳＵＢ”に代えて、２番目の実行命令群“ＳＵＢ、＿”として、３番目の命令“ＳＵＢ”をパイプライン状態記憶部群２１の２レコード目に格納し、３番目の実行命令群“ＳＵＢ、＿”として、４番目の命令“ＳＵＢ”をパイプライン状態記憶部群２１の３レコード目に格納する。このとき、実行サイクル数計測部１３は、実行結果６０として、４番目の命令“ＳＵＢ”の実行マシンサイクル数“２”を、３番目の実行命令群の総実行マシンサイクル数“０”に加算する（ステップＳ８）。
【００５５】
一方、先行命令群と現命令とが同一のレジスタを用いて演算を行わない場合（ステップＳ１０−ＹＥＳ）、上記のステップＳ５以降が実行される。
【００５６】
以上の説明により、本発明の第２実施形態によるシミュレーション装置４では、プロセッサ７０がパイプライン群７１、７２により同時実行可能な実行命令群と、同一のレジスタ“Ｒ１”を用いていない実行命令群とを検索し、その実行マシンサイクル数を最大実行マシンサイクル数に変更することにより、複数のパイプライン（パイプライン群７１、７２）を考慮したプロセッサ７０の動作をシミュレートすることができる。
【００５７】
本発明の第１及び第２実施形態では、その特徴を明確に説明するために２つのパイプライン間で同時に実行できない命令がある場合について説明したが、シミュレートする対象のプロセッサが複数のパイプラインを有し、各パイプライン間で同時に実行できない命令がない場合であっても、すなわち、同時実行条件にＮＧのものがなくても、問題なく処理できることは言うまでもない。
【図面の簡単な説明】
【００５８】
【図１】図１は、本発明のシミュレーション装置４の構成を示している。（第１実施形態、第２実施形態）
【図２】図２は、コンピュータの構成を示している。（第１実施形態、第２実施形態）
【図３】図３は、本発明でシミュレートを実行しようとしているプロセッサ７０のパイプライン部分の概略図を示している。
【図４】図４は、シミュレーションエンジン部７の構成を示している。（第１実施形態）
【図５】図５は、同時実行条件格納部３２を示している。（第１実施形態、第２実施形態）
【図６】図６は、実行サイクル数格納部４２を示している。（第１実施形態、第２実施形態）
【図７Ａ】図７Ａは、本発明のシミュレーション装置４の動作を説明するための図である。（第１実施形態）
【図７Ｂ】図７Ｂは、本発明のシミュレーション装置４の動作を説明するための図である。（第１実施形態）
【図８Ａ】図８Ａは、本発明のシミュレーション装置４の動作を説明するための図である。（第１実施形態）
【図８Ｂ】図８Ｂは、本発明のシミュレーション装置４の動作を説明するための図である。（第１実施形態）
【図９】図９は、実行結果６０を示している。（第１実施形態）
【図１０】図１０は、シミュレーションエンジン部７の動作を示すフローチャートである。（第１実施形態）
【図１１】図１１は、シミュレーションエンジン部７の構成を示している。（第２実施形態）
【図１２】図１２は、使用レジスタ情報記憶部５０を示している。（第２実施形態）
【図１３】図１３は、本発明のシミュレーション装置４の動作を説明するための図である。（第２実施形態）
【図１４】図１４は、本発明のシミュレーション装置４の動作を説明するための図である。（第２実施形態）
【図１５】図１５は、実行結果６０を示している。（第２実施形態）
【図１６】図１６は、シミュレーションエンジン部７の動作を示すフローチャートである。（第２実施形態）
【符号の説明】
【００５９】
１    コンピュータ本体、
２    入力装置、
３    出力装置、
４    シミュレーション装置、
５    ユーザインターフェース部、
６    命令データ格納部、
７    シミュレーションエンジン部、
１０    命令実行部、
１１    命令処理部、
１２    パイプライン状態制御部、
１３    実行サイクル数計測部、
２０    パイプライン状態記憶装置、
２１、２２    パイプライン状態記憶部、
３０    同時実行命令検索部、
３１    同時実行条件判定部、
３２    同時実行条件格納部、
４０    実行サイクル変更部、
４１    実行サイクル補正部、
４２    実行サイクル数格納部、
５０    使用レジスタ情報記憶部、
６０    実行結果、
７０    プロセッサ、
７１、７２    パイプライン、
７３    メモリ、
７４    レジスタ、
８１    ＩＦ（命令フェッチ）ステージ、
８２−１、８２−２    ＤＣ（デコード）ステージ、
８３−１、８３−２    ＥＸ（実行）ステージ、
８４−１、８４−２    ＭＥ（メモリアクセス）ステージ、
８５−１、８５−２    ＷＢ（ライトバック）ステージ、
【図１】
2008176453.tif 000003
【図２】
2008176453.tif 000004
【図３】
2008176453.tif 000005
【図４】
2008176453.tif 000006
【図５】
2008176453.tif 000007
【図６】
2008176453.tif 000008
【図７Ａ】
2008176453.tif 000009
【図７Ｂ】
2008176453.tif 000010
【図８Ａ】
2008176453.tif 000011
【図８Ｂ】
2008176453.tif 000012
【図９】
2008176453.tif 000013
【図１０】
2008176453.tif 000014
【図１１】
2008176453.tif 000015
【図１２】
2008176453.tif 000016
【図１３】
2008176453.tif 000017
【図１４】
2008176453.tif 000018
【図１５】
2008176453.tif 000019
【図１６】
2008176453.tif 000020