(57)【特許請求の範囲】
【請求項１】
同一リソースに対するデータ読み出し命令とデータ書き込み命令とを含むＶＬＩＷ命令の中の複数の命令を並列に実行するプロセッサの命令動作をシミュレーションするにあたり、
前記ＶＬＩＷ命令を記憶場所から読み出す工程と、
読み出した前記ＶＬＩＷ命令に含まれる各命令をデコードする工程と、
デコードした各命令に対応する演算動作をおこない、その演算結果を第１の保管場所に記憶する工程と、
前記ＶＬＩＷ命令中のいずれの命令に対する演算動作中にも例外が発生していない場合、デコードした前記各命令の演算結果の前記第１の保管場所への保管が終了した後、前記第１の保管場所に記憶された前記各命令の演算結果を第２の保管場所であるリソースデータ保管場所に書き込む工程と、
前記ＶＬＩＷ命令中のある命令に対する演算動作中に例外が発生した場合、その命令を含むＶＬＩＷ命令のすべての命令についての演算結果を前記第２の保管場所に書き込むことを禁止する工程と、
前記例外が、前記ＶＬＩＷ命令中の前記例外を発生した命令以外の命令を未実行にする第１の種類の例外であるか、前記ＶＬＩＷ命令中の前記例外を発生した命令以外の命令を実行完了にする第２の種類の例外であるか、を判断する工程と、
前記例外が前記第１の種類の例外である場合、前記第１の保管場所に保持されているデータを破棄する工程と、
前記例外が、前記第２の種類の例外である場合、前記ＶＬＩＷ命令のうち前記例外を発生した命令以外の命令の演算結果を、前記第１の保管場所から前記第２の保管場所に書き込む工程と、
を含んだことを特徴とするシミュレーション方法。
【請求項２】
前記ＶＬＩＷ命令に含まれる複数の命令のデータ書き込み先が同一リソースの別フィールドである場合、前記第１の保管場所から対応する演算結果を読み出し、それらをマージして前記第２の保管場所に書き込むことを特徴とする請求項１に記載のシミュレーション方法。
【請求項３】
前記請求項１または２に記載されたシミュレーション方法をコンピュータに実行させるプログラム。
【請求項４】
前記請求項３に記載されたプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）型のアーキテクチャを有するマイクロプロセッサの命令動作をシミュレーションする方法、およびその方法をコンピュータに実行させるプログラムに関する。
【０００２】
ＶＬＩＷ型アーキテクチャを有するマイクロプロセッサ（以下、ＶＬＩＷプロセッサとする）は、一つのＶＬＩＷ命令に含まれる複数の命令（以下、ＶＬＩＷ命令に含まれる個々の命令を、ＶＬＩＷ命令と区別するため、基本命令とする）を並列に実行する。つまり、たとえば図１０に示すように、ＶＬＩＷ命令１が４個の基本命令１１，１２，１３，１４で構成されている場合には、同一のＶＬＩＷ命令１内の４個の基本命令１１，１２，１３，１４はＶＬＩＷプロセッサにより同時に処理されることになる。
【０００３】
同一のＶＬＩＷ命令中に、同一リソースに対してデータを書き込む基本命令（便宜上、基本命令Ｉ１とする）と、それと同一リソースからデータを読み出すという内容の基本命令（便宜上、基本命令Ｉ２とする）が含まれている場合がある。この場合、基本命令Ｉ２で読み出すデータは基本命令Ｉ１で書き込む前のデータである。したがって、ＶＬＩＷプロセッサの命令動作をシミュレーションする場合には、そのようなデータの取り扱いに注意を要する。また、ＶＬＩＷプロセッサの命令動作をシミュレーションしているときに例外が発生した場合にも注意を要する。
【０００４】
【従来の技術】
従来、ワークステーションなどのコンピュータを用いて通常のプロセッサの命令動作をシミュレーションする場合には、命令を一つずつ逐次的に動作させる。ここで、通常のプロセッサとは、ＶＬＩＷ型アーキテクチャを採用していないマイクロプロセッサのことである。図１１は、通常のプロセッサの命令動作をシミュレーションする方法をコンピュータに実行させるプログラムのフローチャートであり、図１２は、そのシミュレーション実行時にコンピュータに展開されるデータの構造を示す模式図である。
【０００５】
通常のプロセッサの命令動作をシミュレーションする場合、図１１に示すように、命令を読み出し（ステップＳ１１１）、それをデコードし（ステップＳ１１２）、命令種別の判別をおこない（ステップＳ１１３）、その判別結果に対応する命令動作をおこない（ステップＳ１１４−１〜Ｓ１１４−４）、例外発生の有無を判別し（ステップＳ１１５−１〜Ｓ１１５−４）、例外発生なしの場合（ステップＳ１１５−１〜Ｓ１１５−４：Ｎｏ）には結果の書き込みをおこない（ステップＳ１１６−１〜Ｓ１１６−４）、つぎの命令の動作に移行して同様の処理をおこなう。
【０００６】
一方、例外発生ありの場合（ステップＳ１１５−１〜Ｓ１１５−４：Ｙｅｓ）には例外動作をおこない（ステップＳ１１７−１〜Ｓ１１７−４）、つぎの命令の動作に移行する。このように、個々の命令に対して命令の読み出し動作、演算動作および演算結果の書き込み動作という一連の動作を逐次的におこなう。これはスーパスカラプロセッサなどのように、ハードウエアで並列処理をおこなう構成のプロセッサにおいても同様である。
【０００７】
このときシミュレーションプログラムを実行しているコンピュータでは、図１２に示すように、レジスタ値保存テーブル２１およびメモリ値保存テーブル２２の領域が確保される。つまり、演算に必要なレジスタ値やメモリ値はそれぞれレジスタ値保存テーブル２１またはメモリ値保存テーブル２２から読み出される。そして、演算の結果得られたレジスタ値やメモリ値は、結果の書き込みステップにおいてそれぞれレジスタ値保存テーブル２１またはメモリ値保存テーブル２２に書き込まれる。また、プログラムカウンタ（ＰＣ）の値を保持するプログラムカウンタ値保存テーブル２３の領域も確保される。
【０００８】
【発明が解決しようとする課題】
上述したシミュレーション方法は通常のプロセッサ用の方法であるが、現段階ではＶＬＩＷプロセッサ用のシミュレーション方法が確立されていないため、通常のプロセッサ用のシミュレーション方法を利用してＶＬＩＷプロセッサのシミュレーションをおこなう必要がある。しかしながら、その場合にはつぎの３つの問題点がある。
【０００９】
第１の問題点は、同一ＶＬＩＷ命令中に同一リソースに対してデータを読み出す基本命令とデータを書き込む基本命令とがある場合の動作である。そのような場合、実際のＶＬＩＷプロセッサによる処理では、データ読み出し命令で読み出されるデータは、データ書き込み命令で書き込まれる前のデータである。それに対して、同一ＶＬＩＷ命令中の基本命令を逐次的に実行する方法では、データを読み出す前に、そのデータが同一ＶＬＩＷ命令中の書き込み命令によって既に書き換えられてしまうことがある。
【００１０】
第２の問題点は、ＶＬＩＷ命令の実行中にある基本命令で例外が発生した場合の動作である。実際のＶＬＩＷプロセッサによる処理では、ＶＬＩＷ命令内の例外が発生していない基本命令については、その実行結果の書き込みが禁止される場合がある。それに対して、基本命令の逐次的な実行方法では、ある基本命令の実行中に例外が検出されても、そのときには既に同一ＶＬＩＷ命令内の別の基本命令の実行が終了しており、その結果が書き込まれていることがある。
【００１１】
第３の問題点は、２以上の基本命令の実行結果を同一のリソースに書き込む場合である。そのような場合、実際のＶＬＩＷプロセッサによる処理では、実行結果の書き込みが抑止されるか、または同一のリソースに対して複数の命令の実行結果を書き込むことが許される場合には、複数のデータをマージして一つの書き込みがおこなわれる。それに対して、基本命令の逐次的な実行方法では、前に実行した命令の演算結果が、後に実行した命令の演算結果により上書きされてしまうため、後の結果のみが残ることになる。
【００１２】
したがって、通常のプロセッサ用のシミュレーション方法、すなわち命令を一つずつ逐次的に実行する方法を利用してＶＬＩＷプロセッサのシミュレーションをおこなうためには、上述した問題点を解決する必要がある。
【００１３】
本発明は、上記問題点に鑑みてなされたものであって、命令を一つずつ逐次的に実行するシミュレーション方法を利用してＶＬＩＷプロセッサのシミュレーションをおこなうことが可能なシミュレーション方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録した記録媒体を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、本発明は、図１に示すように、ＶＬＩＷ命令を一つずつ読み出し、実行対象であるＶＬＩＷ命令に含まれるすべての基本命令に対して演算動作をおこない、その演算結果を、本来の保管場所であるリソースデータ保管場所３１とは別の一時保管場所３２に一時的に記憶し、すべての基本命令の演算結果が一時保管場所３２に記憶された後に、一時保管場所３２からすべての演算結果を読み出してリソースデータ保管場所３１に書き込むという一連の動作をＶＬＩＷ命令ごとにおこなうことを特徴とする。
【００１５】
ＶＬＩＷ命令中のある基本命令の演算動作中に例外が発生した場合には、そのＶＬＩＷ命令中のすべての基本命令の演算結果を一時保管場所３２から破棄し、リソースデータ保管場所３１への書き込みを禁止する構成となっていてもよい。
【００１６】
また、同一ＶＬＩＷ命令に含まれる２以上の基本命令の演算結果をマージしてリソースデータ保管場所３１に記憶する必要がある場合には、図２に示すように、一時保管場所３２に別々に記憶された対応する演算結果を読み出し、それらをマージしてからリソースデータ保管場所３１に書き込むようになっているとよい。
【００１７】
この発明によれば、実行対象であるＶＬＩＷ命令に含まれるすべての基本命令の演算結果は一時保管場所３２に記憶され、すべての演算結果の記憶が終了した後に、それら演算結果が一時保管場所３２から読み出されてリソースデータ保管場所３１に書き込まれるため、同一ＶＬＩＷ命令中に同一リソースに対してデータを読み出す基本命令とデータを書き込む基本命令とがある場合でも、データ読み出し命令では、データ書き込み命令で書き込まれる前のデータが読み出される。また、同一ＶＬＩＷ命令中の２以上の基本命令の演算結果がマージされて同一のリソースに書き込まれる。さらに、ある基本命令の演算動作中に例外が発生した場合、その基本命令を含むＶＬＩＷ命令中の他の基本命令の演算結果が書き込まれるのが防止される。
【００１８】
【発明の実施の形態】
以下に、本発明の実施の形態にかかるシミュレーション方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録した記録媒体について図面を参照しつつ詳細に説明する。
【００１９】
（実施の形態１）
図３は、本発明の実施の形態１にかかるシミュレーション方法をコンピュータに実行させるプログラムのフローチャートである。また、図４は、そのシミュレーション実行時にコンピュータに展開されるデータの構造の要部を示す模式図である。
【００２０】
ワークステーション等のコンピュータを用いて、ＶＬＩＷプロセッサのシミュレーションが開始されると、まず、シミュレーション対象の一つのＶＬＩＷ命令に含まれるすべての基本命令、すなわち同時に並列に処理される全基本命令をメモリ値保存テーブル４２等から読み出す（ステップＳ３１）。読み出した命令情報は実行命令情報保存テーブル４４に格納される。一つのＶＬＩＷ命令に含まれるすべての基本命令が読み出されると（ステップＳ３２：Ｙｅｓ）、シミュレーション対象となる一つのＶＬＩＷ命令に含まれるすべての基本命令の情報が実行命令情報保存テーブル４４に格納されることになる。
【００２１】
つづいて、実行命令情報保存テーブル４４から一つの基本命令の情報を読み出し、その基本命令をデコードする（ステップＳ３３）。そして、命令種別の判別をおこない（ステップＳ３４）、その判別結果に対応して、演算処理、読み出し処理、書き込み処理または分岐処理などの命令動作をおこなう（ステップＳ３５−１〜Ｓ３５−４）。その際、命令の実行に使用するリソース値を、レジスタに保持された値の場合にはレジスタ値保存テーブル４１から、またメモリに記憶された値の場合にはメモリ値保存テーブル４２からそれぞれ読み出す。レジスタ値保存テーブル４１およびメモリ値保存テーブル４２は、図１に示すリソースデータ保管場所３１に相当する。
【００２２】
命令の実行中、プログラムカウンタの値はプログラムカウンタ値保存テーブル４３により保持される。実行中の命令が分岐命令の場合には、分岐先のアドレスは書き込みプログラムカウンタ値テーブル４７に格納される。分岐命令の実行の結果、指定されたアドレスに分岐する場合には、書き込みプログラムカウンタ値テーブル４７に格納された値がプログラムカウンタ値保存テーブル４３に保持されることになる。
【００２３】
基本命令の実行後、その結果を保存する際には、レジスタ値保存テーブル４１またはメモリ値保存テーブル４２に直接書き込まず、レジスタに書き込む値の場合には書き込みレジスタデータテーブル４５に、またメモリに書き込む値の場合には書き込みメモリデータテーブル４６にそれぞれ一旦書き込む（登録する）（ステップＳ３６−１〜Ｓ３６−４）。書き込みレジスタデータテーブル４５および書き込みメモリデータテーブル４６は、図１に示す一時保管場所３２に相当する。このように実行命令情報保存テーブル４４から基本命令の情報を読み出し、デコードして命令を実行し、その結果を書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に一旦書き込むという一連の動作を、同一ＶＬＩＷ命令中に含まれるすべての基本命令についておこなう。
【００２４】
すべての基本命令について実行結果を書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に書き込んだら（ステップＳ３７：Ｙｅｓ）、結果書き込み処理をおこなう（ステップＳ３８）。結果書き込み処理では、書き込みレジスタデータテーブル４５の保持データをレジスタ値保存テーブル４１に書き込み、また書き込みメモリデータテーブル４６の保持データをメモリ値保存テーブル４２に書き込む。以上の動作をすべてのＶＬＩＷ命令についておこなう。
【００２５】
図５は、結果書き込み処理の一例を示すフローチャートである。結果書き込み処理が開始されると、まず書き込みの済んでいない命令があるか否かを判別し（ステップＳ５１）、なければ（ステップＳ５１：なし）結果書き込み処理を終了する。書き込みの未処理の命令があれば（ステップＳ５１：あり）、実行命令情報保存テーブル４４から未処理の命令を取り出し（ステップＳ５２）、その命令の実行結果の格納場所を示す書き込み（登録）データへのポインタ４８を取り出す（ステップＳ５３）。
【００２６】
そして、レジスタ値保存テーブル４１またはメモリ値保存テーブル４２に書き込むべきデータがある場合には（ステップＳ５４：あり）、書き込みデータへのポインタ４８に基づいて、書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６からデータを取り出し、それをレジスタ値保存テーブル４１およびメモリ値保存テーブル４２のうちの対応する方のテーブルに書き込む（ステップＳ５５）。そして、ステップＳ５２に戻る。ステップＳ５４で、レジスタ値保存テーブル４１またはメモリ値保存テーブル４２に書き込むべきデータがない場合（ステップＳ５４：なし）には、ステップＳ５１に戻り、結果書き込み処理が終了するまでそれ以降の処理を繰り返す。
【００２７】
ここで、結果書き込み処理においてマージをおこなう例について説明する。たとえば、命令ニーモニックが「Ｓｅｔｈｉ  ＃０ｘ１０００、Ｒｄ」で表され、その命令動作が、「０ｘ１０００をＲｄで表されるレジスタ番号の上位ビットに書き込む」という命令と、命令ニーモニックが「Ｓｅｔｌｏ  ＃８８８８、Ｒｄ」で表され、その命令動作が、「８８８８をＲｄで表されるレジスタ番号の下位ビットに書き込む」という命令が同一のＶＬＩＷ命令に含まれる場合にマージが発生する。この場合には、書き込みレジスタデータテーブル４５に一時的に保持された「０ｘ１０００」と「８８８８」を読み出して、それらをマージした値「０ｘ１０００８８８８」をレジスタ値保存テーブル４１のＲｄに書き込むことになる。
【００２８】
上述したシミュレーション方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、上記記録媒体を介して、インターネットなどのネットワークを介して配布することができる。
【００２９】
つぎに、上述したシミュレーション方法を実行するコンピュータのハードウエア構成について説明する。図６は、そのハードウエア構成を示すブロック図である。このコンピュータは、たとえばＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＦＤＤ（フロッピーディスクドライブ）１０６と、ディスプレイ１０８と、通信インターフェイス（Ｉ／Ｆ）１０９と、キーボード１１１と、マウス等（種々のポインティング・デバイスを含む）１１２と、スキャナ１１３と、プリンタ１１４と、ＣＤ−ＲＯＭドライブ（ＤＶＤドライブを含む）１１６とがバス１００を介して相互に接続された構成となっている。
【００３０】
ＣＰＵ１０１は装置全体の制御をおこなうとともに、ＶＬＩＷプロセッサの代わりにＶＬＩＷ命令を実行する。ＲＯＭ１０２はブートプログラム等を記億している。ＲＡＭ１０３はＣＰＵ１０１のワークエリアとして使用される。このＲＡＭ１０３に、上述したレジスタ値保存テーブル４１、メモリ値保存テーブル４２、プログラムカウンタ値保存テーブル４３、実行命令情報保存テーブル４４、書き込みレジスタデータテーブル４５、書き込みメモリデータテーブル４６および書き込みプログラムカウンタ値テーブル４７が展開される。
【００３１】
ＨＤＤ（ハードディスクドライブ）１０４は、ＣＰＵ１０１の制御にしたがってＨＤ（ハードディスク）１０５に対するデータの書き込みおよび読み出しを制御する。ＦＤＤ（フロッピーディスクドライブ）１０６は、ＣＰＵ１０１の制御にしたがって、着脱可能な記録媒体であるＦＤ（フロッピーディスク）１０７に対するデータの書き込みおよび読み出しを制御する。
【００３２】
ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報等のデータに関するウインドウ（ブラウザ）を表示する。通信インターフェイス（Ｉ／Ｆ）１０９は、有線または無線の通信回線１１０を介してネットワーク１５０に接続され、ネットワーク１５０と内部とのインターフェイスを司る。キーボード１１１は、文字、数値、各種指示等の入力のための複数のキーを備える。マウス等１１２は、カーソルの移動や範囲選択、あるいはウインドウの移動やサイズの変更、アイコンの選択、移動等をおこなうのに使用される。
【００３３】
スキャナ１１３は画像を光学的に読み取るための装置である。プリンタ１１４は、ウインドウに表示された内容等を印刷する。ＣＤ−ＲＯＭドライブ１１６は、着脱可能な記録媒体であるＣＤ−ＲＯＭ（ＤＶＤを含む）１１５に対するデータの読み出しを制御する。
【００３４】
上述した実施の形態１によれば、実行対象であるＶＬＩＷ命令に含まれるすべての基本命令の演算結果は一時保管場所３２である書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に記憶され、すべての演算結果の記憶が終了した後に、それら演算結果が書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６から読み出されて本来のリソースデータ保管場所３１であるレジスタ値保存テーブル４１またはメモリ値保存テーブル４２に書き込まれるため、同一ＶＬＩＷ命令中に同一リソースに対してデータを読み出す基本命令とデータを書き込む基本命令とがある場合でも、データ読み出し命令では、データ書き込み命令で書き込まれる前のデータを読み出すことができる。
【００３５】
また、同一ＶＬＩＷ命令中の２以上の基本命令の演算結果をマージして同一のリソースに書き込むことができる。したがって、命令を一つずつ逐次的に実行するシミュレーション方法を利用してＶＬＩＷプロセッサのシミュレーションを正しくおこなうことができる。
【００３６】
（実施の形態２）
実施の形態２にかかるシミュレーション方法は、実施の形態１の方法において、例外発生時に例外処理をおこなうようにしたものである。図７は、本発明の実施の形態２にかかるシミュレーション方法をコンピュータに実行させるプログラムのフローチャートであり、図８は、そのシミュレーション実行時にコンピュータに展開されるデータの構造の要部を示す模式図である。
【００３７】
実施の形態２にかかるシミュレーション方法においては、一つのＶＬＩＷ命令内のすべての基本命令について実行結果を書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に一旦保持するまでの処理（ステップＳ７１〜Ｓ７７）は、実施の形態１の図３に関連して説明したステップＳ３１〜Ｓ３７までと同じである。したがって、ステップＳ７１〜Ｓ７７の説明は、実施の形態１の中の説明においてＳ３１〜Ｓ３７をＳ７１〜Ｓ７７に読み替えたものとし、重複する説明を省略する。
【００３８】
ただし、基本命令ごとに命令動作をおこなうステップＳ７５−１〜７５−４において、ある基本命令の実行中に例外が発生した場合には、その基本命令に関しては書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６へのデータ書き込みをおこなわずに、例外発生フラグ４９に「１」を書き込む。例外発生フラグ４９の領域は、符号４１〜４７で示す各種テーブルの領域とともにＲＡＭ１０３に確保される。実行中に例外が発生しなかった基本命令については、実施の形態１と同様に、実行結果を書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に一旦書き込む（ステップＳ７６−１〜Ｓ７６−４）。
【００３９】
そして、すべての基本命令について実行結果を書き込みレジスタデータテーブル４５または書き込みメモリデータテーブル４６に書き込んだら（ステップＳ７７：Ｙｅｓ）、例外発生フラグ４９を確認する（ステップＳ７８）。確認した結果、例外発生フラグ４９の値が「０」であれば（ステップＳ７８：Ｎｏ）、例外が発生していないことを意味するので、実施の形態１と同様に結果書き込み処理をおこない（ステップＳ７９）、つぎのＶＬＩＷ命令のシミュレーションに進む。結果書き込み処理の内容は図５に関連して説明したとおりである。
【００４０】
例外発生フラグ４９を確認した結果、例外発生フラグ４９の値が「１」であれば（ステップＳ７８：Ｙｅｓ）、ＶＬＩＷ命令内のいずれかの基本命令で例外が発生したことを意味する。したがって、この場合には、ステップＳ７９の結果書き込み処理をおこなわずに例外処理をおこない（ステップＳ８０）、つぎのＶＬＩＷ命令のシミュレーションに進む。
【００４１】
図９は、例外処理の一例を示すフローチャートである。例外処理が開始されると、まず発生した例外の種類を調べる（ステップＳ９１）。そして、調べた結果を例外情報としてレジスタ値保存テーブル４１に書き込む（ステップＳ９２−１〜Ｓ９２−４）。つづいて、発生した例外の種別を調べ（ステップＳ９３）、発生した例外が正確な例外である場合（ステップＳ９４：ＶＬＩＷ命令中の例外発生命令以外の命令を未実行にする種類の例外の場合）には、実行結果の一時保管場所３２である書き込みレジスタデータテーブル４５および書き込みメモリデータテーブル４６に保持されているデータを破棄する（ステップＳ９５）。
【００４２】
つまり、例外が発生したＶＬＩＷ命令は未実行となる。一方、ステップＳ９３で発生した例外の種別を調べた結果、発生した例外が不正確な例外である場合（ステップＳ９４：ＶＬＩＷ命令中の例外発生命令以外の命令を実行完了にする種類の例外の場合）には、例外が発生しなかった基本命令の実行結果について結果書き込み処理をおこなう（ステップＳ９６）。この結果書き込み処理の内容は図５に関連して説明したとおりである。
【００４３】
ここで、正確な例外とは、例外が発生した命令よりも前の命令についてはすべての命令が完了し、例外が発生した命令よりも後の命令についてはすべて実行していないことを保証する例外のことである。ＶＬＩＷ命令の場合には、例外が発生した命令を含むＶＬＩＷ命令は未実行となる。一方、不正確な例外とは、例外が発生した命令よりも後の命令でも、例外の検出よりも前に実行が完了していることがあり得る例外のことである。
【００４４】
たとえば、例外を検出するのに時間がかかるような命令で例外が発生し、かつそれよりも後続の命令の実行時間が短い場合、例外検出前に後続の命令の実行が終了してしまい、その実行結果が書き込まれている可能性があり、このような場合に不正確な例外となる。ただし、不正確な例外であっても、例外が発生していない命令の実行時間が長すぎると、実行結果が書き込まれないことがある。
【００４５】
なお、実施の形態２のシミュレーション方法は、あらかじめ用意されたプログラムをコンピュータで実行することにより実現することができること、そのプログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行されること、またそのプログラムがネットワークを介して配布することができることなどは、実施の形態１と同様である。
【００４６】
上述した実施の形態２によれば、実施の形態１と同様に、同一ＶＬＩＷ命令中に同一リソースに対してデータを読み出す基本命令とデータを書き込む基本命令とがある場合でも、データ読み出し命令では、データ書き込み命令で書き込まれる前のデータを読み出すことができること、同一ＶＬＩＷ命令中の２以上の基本命令の演算結果をマージして同一のリソースに書き込むことができることのほかに、例外発生時にも正しく対処することができる。したがって、命令を一つずつ逐次的に実行するシミュレーション方法を利用してＶＬＩＷプロセッサのシミュレーションを正しくおこなうことができる。
【００４７】
以上において本発明は、上述した各実施の形態に限らず、種々変更することが可能である。
【００４８】
【発明の効果】
本発明によれば、実行対象であるＶＬＩＷ命令に含まれるすべての基本命令の演算結果は一時保管場所に記憶され、すべての演算結果の記憶が終了した後に、それら演算結果が一時保管場所から読み出されて本来の保管場所に書き込まれるため、上述した命令を一つずつ逐次的に実行するシミュレーション方法を利用してＶＬＩＷプロセッサのシミュレーションをおこなう際に生じる不具合を解消することができるので、ＶＬＩＷプロセッサのシミュレーションを正しくおこなうことができる。
【図面の簡単な説明】
【図１】本発明にかかるシミュレーション方法を実行する際のデータ構造およびデータの流れを模式的に示す原理図である。
【図２】本発明にかかるシミュレーション方法を実行した結果、データのマージをおこなう場合のデータ構造およびデータの流れを模式的に示す原理図である。
【図３】本発明の実施の形態１にかかるシミュレーション方法をコンピュータに実行させるプログラムのフローチャートである。
【図４】本発明の実施の形態１にかかるシミュレーション方法をコンピュータに実行させる際にコンピュータに展開されるデータの構造の要部を示す模式図である。
【図５】図３に示すシミュレーション方法における結果書き込み処理の一例を示すフローチャートである。
【図６】本発明にかかるシミュレーション方法の実行に供せられるコンピュータのハードウエア構成を示すブロック図である。
【図７】本発明の実施の形態２にかかるシミュレーション方法をコンピュータに実行させるプログラムのフローチャートである。
【図８】本発明の実施の形態２にかかるシミュレーション方法をコンピュータに実行させる際にコンピュータに展開されるデータの構造の要部を示す模式図である。
【図９】図７に示すシミュレーション方法における例外処理の一例を示すフローチャートである。
【図１０】ＶＬＩＷ命令の構成の一例を示す概念図である。
【図１１】通常のプロセッサの命令動作をシミュレーションする方法をコンピュータに実行させるプログラムのフローチャートである。
【図１２】通常のプロセッサの命令動作をシミュレーションする方法を実行する際のデータ構造を示す模式図である。
【符号の説明】
３１    リソースデータ保管場所
３２    一時保管場所
４１    レジスタ値保存テーブル
４２    メモリ値保存テーブル
４５    書き込みレジスタデータテーブル
４６    書き込みメモリデータテーブル
【図１】
0004825357.tif 000002
【図２】
0004825357.tif 000003
【図３】
0004825357.tif 000004
【図４】
0004825357.tif 000005
【図５】
0004825357.tif 000006
【図６】
0004825357.tif 000007
【図７】
0004825357.tif 000008
【図８】
0004825357.tif 000009
【図９】
0004825357.tif 000010
【図１０】
0004825357.tif 000011
【図１１】
0004825357.tif 000012
【図１２】
0004825357.tif 000013