(57)【要約】【課題】処理の高速化を図ることができる。【解決手段】シミュレーション装置１は、ＶＬＩＷ型プロセッサのシミュレーション装置であり、所定の命令単位毎に構成されるＶＬＩＷ命令を備えるプログラムファイルを格納する記憶部２と、プログラムファイルを記憶部２から読み出す命令読み出し部３と、読み出したプログラムファイルのＶＬＩＷ命令をデコードし、その際命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択する命令デコード部４と、選択されたデコード情報を保持するデコード情報保持部５と、デコード情報がデコード情報保持部５に格納されているとき、そのデコード情報を利用してＶＬＩＷ命令を実行する命令実行部６と、を有する。【選択図】図１
2007094986.tif 000002
【特許請求の範囲】
【請求項１】
ＶＬＩＷ型プロセッサのシミュレーション装置において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納する記憶部と、
前記ＶＬＩＷ命令を前記記憶部から読み出す命令読み出し部と、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択する命令デコード部と、
前記選択されたデコード情報を保持するデコード情報保持部と、
前記デコード情報が前記デコード情報保持部に格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する命令実行部と、
を有することを特徴とするシミュレーション装置。
【請求項２】
読み出した前記ＶＬＩＷ命令をキャッシュする命令キャッシュをさらに有し、
前記命令デコード部は、前記命令キャッシュに存在する命令を対象とすることを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記デコード情報保持部は、メモリ上の命令の書き換えが生じた場合に、書き換え前の前記デコード情報を棄却することを特徴とする請求項１記載のシミュレーション装置。
【請求項４】
前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルと、前記レジスタファイルに格納する前の前記各変数を格納するテンポラリバッファとをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際前記相互に干渉する関係を有する命令が存在する場合には、前記テンポラリバッファに格納しながら実行し、命令実行後に前記各変数を前記テンポラリバッファから前記レジスタファイルに格納することを特徴とする請求項１記載のシミュレーション装置。
【請求項５】
前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルと、前記レジスタファイルに格納する前の前記各変数を格納するテンポラリバッファとをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際前記例外が発生し得る命令が存在する場合には、前記テンポラリバッファに格納しながら実行し、例外が発生しなかった場合、前記各変数を前記テンポラリバッファから前記レジスタファイルに格納することを特徴とする請求項１記載のシミュレーション装置。
【請求項６】
前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際相互に干渉する関係を有する命令および例外が発生し得る命令が存在しない場合には、命令実行後の前記各変数を直接前記レジスタファイルに格納することを特徴とする請求項１記載のシミュレーション装置。
【請求項７】
前記デコード情報の選択は、前記プログラムファイルの最初のデコード時に行われることを特徴とする請求項１記載のシミュレーション装置。
【請求項８】
ＶＬＩＷ型プロセッサのシミュレーション方法において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納し、
前記ＶＬＩＷ命令を前記記憶部から読み出し、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択し、
前記選択されたデコード情報を保持し、
前記デコード情報が前記デコード情報保持部に格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する、
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシミュレーション装置およびシミュレーション方法に関し、特に、ＶＬＩＷ型プロセッサのシミュレーション装置およびシミュレーション方法に関する。
【背景技術】
【０００２】
例えば、画像データや音声データを処理するディジタル民生機器等においては、そこに搭載されるプロセッサの処理能力が再生時／記録時の画質・音質を大きく左右する。そのため、さらなる高画質・高音質を実現するための、より高速で高性能なプロセッサに対する需要が年々高いものになってきている。
【０００３】
こうしたプロセッサのアーキテクチャーとして採用されることが多いものとしてＶＬＩＷ（Very Long Instruction Word）方法が知られている。ＶＬＩＷ方法とは、一つの超長命令語中に演算命令、ロード命令、ストア命令、分岐命令等の複数の基本命令を格納しておき、これらの命令をプロセッサ内の複数の機能ユニット（パイプライン）によりそれぞれ並列処理する方法である。換言すれば、プログラムの命令レベルでの並列性を活用して、依存関係にない複数の命令を異なる機能ユニットに割り当て、同時に実行させる方法である。
【０００４】
但し、ＶＬＩＷ方法を採用したプロセッサ（ＶＬＩＷ型プロセッサ）は比較的少数であり、一般に普及しているのは、単一の命令からなる命令語を一つずつ取り出して実行する方式のプロセッサである。そこで、ＶＬＩＷ向けのプログラムの開発環境を提供する意味で、通常のアーキテクチャーのマシンによりＶＬＩＷアーキテクチャーのマシンの動作を処理するためのシミュレーション方法が知られている（例えば、特許文献１参照）。
【０００５】
ところで、従来のＶＬＩＷ型プロセッサのシミュレータを構成する場合、一度各命令の実行結果をテンポラリ領域に保存、全ての命令が実行完了した後にレジスタファイルに書き戻す必要がある。
【０００６】
図５は、シミュレーション方法を行う際のＶＬＩＷ命令の一例を示す図であり、図６は、図５に示す命令を実行したときの制御フローを説明する図である。
図５では、説明を分かり易くするため、ｇｒ１の出現順にｇｒ１ａ、ｇｒ１ｂ、ｇｒ１ｃとする。ｇｒ１ａ、ｇｒ１ｂ、ｇｒ１ｃは同じレジスタファイルを指す。
【０００７】
なお、１−ＶＬＩＷは、ＶＬＩＷ命令を実行する単位（命令単位）であることを示している。
図５、図６に示す例では、ａｄｄ．ｐ命令により、ｇｒ１ａとｇｒ２との和を演算し、ｇｒ１ａはｇｒ１ｂ（ｎｅｗ  ｇｒ１）に書き換えられるが、ｌｄ命令の実行時においてｇｒ４とに参照するｇｒ１ｃは、ｇｒ１ａと同じ値（ｏｌｄ  ｇｒ１）でなければならない。このためシミュレータではｌｄ命令の実行後、すぐにレジスタファイルｇｒ１（ｇｒ１ｂ）の内容を更新することができない。このため、図６に示すように、従来はレジスタファイルの内容を一旦テンポラリ領域に保存し、全てのＶＬＩＷ内命令の実行完了の後に、その内容を再びレジスタファイルに書き戻すという方法がとられていた。
【０００８】
図７は、ＶＬＩＷ命令の別の例を示す図である。
図７に示すＶＬＩＷ命令では、ａｄｄ．ｐ命令の実行による、ｇｒ１、ｇｒ２、ｇｒ３と、ｌｄ命令の実行によるｇｒ４、ｇｒ５、ｇｒ６との関連性がなく、前述したような問題はないように思えるが、実際はｌｄ命令が、例えばメモリフォルト等の例外を発生する可能性があり、その例外が厳密型の例外の場合は、やはりｌｄ命令の実行後、すぐにレジスタファイルの内容（図７の場合、ｇｒ３、ｇｒ６）を更新することはできない。
【０００９】
例えばＪＩＴ（Just-In-Time）化した場合、前に例示したような命令はホストプロセッサでの数命令に変換されるが、テンポラリ領域を使ったレジスタファイルへの書き戻し処理が必要な場合、本来の処理よりもこの処理の方が大きくなってしまう。
【特許文献１】特開２００２−３０４２９２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、ＶＬＩＷ命令を実行する際には、前述した図５および図７に示したような演算時にテンポラリバッファを必要とする命令は、全体のごく一部であり、他の大部分のＶＬＩＷ命令に関してはテンポラリバッファを必要としないにもかかわらず、全てのＶＬＩＷ命令の実行完了の後にレジスタファイルに値を書き戻すという方法が行われていた。すなわち従来の方法は、特に他の高速技術と併用し１命令あたりのホストプロセッサでの必要命令数が少なくなればなる程、相対的にテンポラリ領域を使ったレジスタファイルへの書き戻し処理に必要な命令数が多くなってしまい、処理数が増大する結果、処理時間の遅延を招くという問題があった。
【００１１】
本発明はこのような点に鑑みてなされたものであり、処理の高速化を図ることができるシミュレーション装置およびシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記問題を解決するために、図１に示すようなシミュレーション装置１が提供される。このシミュレーション装置１は、ＶＬＩＷ型プロセッサのシミュレーション装置であり、所定の命令単位毎に構成されるＶＬＩＷ命令を備えるプログラムファイルを格納する記憶部２と、プログラムファイルを記憶部２から読み出す命令読み出し部３と、読み出したプログラムファイルのＶＬＩＷ命令をデコードし、その際命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択する命令デコード部４と、選択されたデコード情報を保持するデコード情報保持部５と、デコード情報がデコード情報保持部５に格納されているとき、そのデコード情報を利用してＶＬＩＷ命令を実行する命令実行部６と、を有する。
【００１３】
このようなシミュレーション装置１によれば、命令読み出し部３により記憶部２からプログラムファイルが読み出される。そして、命令デコード部４により読み出したプログラムファイルのＶＬＩＷ命令がデコードされ、その際命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報がデコード情報として選択される。そして、デコード情報保持部５により選択されたデコード情報が保持される。そして、命令実行部６によりデコード情報がデコード情報保持部５に格納されているとき、そのデコード情報を利用してＶＬＩＷ命令が実行される。
【発明の効果】
【００１４】
本発明では、命令デコード部が、命令単位内に相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在するか否かを判断し、それらの命令を識別し得る情報をデコード情報として選択し、デコード情報保持部がそのデコード情報を保持することにより、以後、ＶＬＩＷ命令を実行する際に、そのデコード情報を再利用することができるため、処理の高速化を図ることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【００１６】
図１は、本実施の形態のシミュレーション装置を示す原理図である。
図１に示すシミュレーション装置１は、アーキテクチャーをシミュレートするシミュレーション装置、すなわちプログラムの開発、性能の評価等に用いられるシミュレーション装置であり、記憶部２、命令読み出し部３、命令デコード部４、デコード情報保持部５、命令実行部６、処理結果保持部７を有している。
【００１７】
記憶部２には、所定の命令単位毎に構成されるＶＬＩＷ命令を有するプログラムファイルが格納されている。ここで所定の命令単位とは、ＶＬＩＷ型プロセッサに、並列に処理を行わせる命令の単位である。
【００１８】
命令読み出し部３は、記憶部２からＶＬＩＷ命令を有するプログラムファイルを読み出す。
命令デコード部４は、命令読み出し部３にて読み出されたプログラムファイルをデコードする。また、命令デコード部４はデコードの際、例えば図７、８に示したように命令単位内に相互に干渉する関係を有する命令が存在する場合や、例えば命令違反や割り込み等の例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択して出力する。
【００１９】
デコード情報保持部５は、命令デコード部４から出力されるデコード情報を保持する。
命令実行部６は、命令読み出し部３にて読み出されたプログラムファイルのＶＬＩＷ命令を実行する。この際、デコード情報がデコード情報保持部５に格納されているときは、そのデコード情報を利用する。
【００２０】
処理結果保持部７は、命令実行部６で実行された処理結果を保持する。
このようなシミュレーション装置１によれば、ＶＬＩＷ命令を実行する際に、例えば、信号や割り込み等のデコード情報を保持しておき、再度その命令を実行する際にはデコード情報が利用される。
【００２１】
以下、本発明の実施の形態を具体的に説明する。
図２は、シミュレーション装置のハードウェア構成例を示す図である。
シミュレーション装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００２２】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ１０３内には、プログラムファイルが格納される。
【００２３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００２４】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００２５】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成のシステムにおいてシミュレーションを行うために、シミュレーション装置１００内には、以下のような機能が設けられる。
【００２６】
図３は、シミュレーション装置の機能を示すブロック図である。
シミュレーション装置１００は、データベース１１０、メモリシステム１１１、命令読み出し部１２０、命令キャッシュ１２１、命令デコード部１３０、命令実行部１４０、バイパス部１５０、デコード情報キャッシュ部１６０を有している。
【００２７】
データベース１１０には、シミュレーション対象の一つのＶＬＩＷ命令に含まれる全ての命令を備えたプログラムファイル、すなわちシミュレーションに必要なプログラムファイルが格納されている。
【００２８】
メモリシステム１１１にはデータベース１１０から読み出したプログラムファイルがロードされる。
命令読み出し部１２０は、メモリシステム１１１に格納されたプログラムファイルを読み出す。
【００２９】
命令キャッシュ１２１は、命令読み出し部１２０によって読み出されたプログラムファイルをキャッシュする。また、命令読み出し部１２０は、デコード情報キャッシュ部１６０にデコード情報が存在しないとき、例えば、シミュレーション装置１００がＶＬＩＷ命令を初めて実行する際には、読み出したプログラムファイルを命令デコード部１３０に出力し、２回目以降ＶＬＩＷ命令を実行する際には読み出したプログラムファイルをバイパス部１５０に出力する。
【００３０】
命令デコード部１３０は、命令キャッシュ１２１に格納されているプログラムファイルをデコードする。この際、命令デコード部１３０は、デコードしたＶＬＩＷ命令内の、レジスタの干渉を生じさせる命令および例外を発生し得る命令の有無をチェックし、該当する命令をデコード情報としてデコード情報キャッシュ部１６０に出力する。
【００３１】
命令実行部１４０は、レジスタファイル１４１、処理部１４２、テンポラリバッファ１４３を有している。
命令実行部１４０は、入力されたプログラムファイル内のＶＬＩＷ命令に含まれる命令単位毎に命令の実行を行う。すなわち、プログラムファイル内のＶＬＩＷ命令が、本来のＶＬＩＷ型プロセッサであれば、どの機能ユニットにより処理されるべきものであるかを特定する。
【００３２】
また、命令実行部１４０は、デコード情報がデコード情報キャッシュ部１６０に格納されているときは、そのデコード情報を利用して命令の実行を行う。
レジスタファイル１４１は、ＶＬＩＷ命令を実行する際に実行状態を保持する書き込みレジスタを有している。
【００３３】
処理部１４２は、ＩＵ処理部１４２ａ、ＬＵ処理部１４２ｂ、ＢＵ処理部１４２ｃ、ＭＵ処理部１４２ｄを有している。
処理部１４２は、レジスタファイル１４１から出力された命令の実行を行う。具体的にはＩＵ処理部１４２ａは、演算処理を行い、ＬＵ処理部１４２ｂは、ロード命令やストア命令の実行を行い、ＢＵ処理部１４２ｃは、分岐命令の実行を行い、ＭＵ処理部１４２ｄは、アキュムレータ演算命令・アキュムレータ読み出し命令またはアキュムレータ書き込み命令の実行を行って、それぞれ実行結果をレジスタファイル１４１に再び出力する（書き戻す）。
【００３４】
テンポラリバッファ１４３は、処理部１４２で命令が実行されているとき、必要に応じてレジスタファイル１４１の書き込みレジスタの内容を一時格納し、単位ＶＬＩＷ命令の実行が完了する毎に、レジスタファイル１４１の書き込みレジスタの値を書き戻す。
【００３５】
バイパス部１５０は、前述したように、命令読み出し部１２０の２回目以降のＶＬＩＷ命令の実行に際し、プログラムファイルのバイパスとなる部位である。
デコード情報キャッシュ部１６０は、バイパス部１５０から出力されるプログラムファイルに対して、キャッシュされたデコード情報を適用して出力する。
【００３６】
次に、シミュレーション装置１００の動作について説明する。
図４は、シミュレーション装置の動作を示すフローチャートである。
まず、命令読み出し部１２０が、メモリシステム１１１に格納されたプログラムファイルを読み出し、命令キャッシュ１２１に出力する（ステップＳ１１）。
【００３７】
次に、命令読み出し部１２０が、プログラムファイルのデコードが既に行われたか否かすなわち、デコード情報キャッシュ部１６０にデコード情報が存在するか否かを判断する（ステップＳ１２）。命令のデコードが既に行われている場合（ステップＳ１２のＹｅｓ）、ステップＳ１４に移行する。一方、命令のデコードがまだ行われていない場合（ステップＳ１２のＮｏ）、命令デコード部１３０が、プログラムファイルをデコードする。そしてデコード情報をデコード情報キャッシュ部１６０に出力する（ステップＳ１３）。
【００３８】
その後、命令実行部１４０が、入力されたプログラムファイル内のＶＬＩＷ命令に含まれる命令単位毎に命令の実行を行う（ステップＳ１４）。その際、命令実行部１４０は、命令がデコード情報に該当する命令か否かを判断する（ステップＳ１５）。命令実行部１４０は、デコード情報に該当する命令に対しては（ステップＳ１５のＹｅｓ）、テンポラリバッファ１４３を使用して（ステップＳ１６）、単位ＶＬＩＷ命令の実行が完了する毎に、レジスタファイル１４１の書き込みレジスタを書き戻す（ステップＳ１７）。この際、例外発生の可能性を有する命令に対しては、例外が発生しなかった場合にのみ、テンポラリバッファ１４３からレジスタファイル１４１に書き戻す。
【００３９】
一方、デコード情報に該当しない命令に対しては（ステップＳ１５のＮｏ）、レジスタファイル１４１の書き込みレジスタに書き込みを行った後に、テンポラリバッファ１４３を使用せず、処理部１４２での処理結果を直接レジスタファイル１４１の書き込みレジスタを書き戻す（ステップＳ１７）。シミュレーション装置１００は、ステップＳ１４〜Ｓ１７の動作をプログラムファイルのＶＬＩＷ命令単位毎に繰り返し行う。
【００４０】
また、メモリシステム１１１内のプログラムファイルが書き換えられた場合においても、対応する命令キャッシュが存在する限り、デコード情報キャッシュ部１６０の情報は有効であり続ける（デコード情報キャッシュ部１６０に格納されている）。一方、命令キャッシュ１２１が無効化されると、ＣＰＵ１０１の論理的動作と矛盾を起こさないようにするために、その時点でデコード情報キャッシュ部１６０の内容は無効化される。
【００４１】
以上述べたように、本実施の形態のシミュレーション装置１００によれば、命令デコード部１３０が、対象とするプログラムファイルにおいてレジスタの干渉または例外を発生し得る命令が存在するか否かを判断し、そのデコード情報をデコード情報キャッシュ部１６０にキャッシュし、以後、そのデコード情報を再利用することにより、データベース１１０から読み出されるプログラムファイルのデコード情報に該当しないＶＬＩＷ命令に対して、テンポラリバッファ１４３を用いることなくシーケンシャルに実行を行うことができる。これにより、処理の高速化を図ることができる。
【００４２】
なお、前述した実施の形態では、シミュレーション装置１００がＶＬＩＷ命令を初めて実行する際には、読み出したプログラムファイルを命令デコード部１３０に出力し、２回目以降ＶＬＩＷ命令を実行する際には読み出したプログラムファイルをバイパス部１５０に出力したが、これに限らず、任意の際にプログラムファイルを命令デコード部１３０に出力してもよい。この際、命令デコード部１３０は、プログラムファイルが送られてくる度に前述した動作を逐次行い、デコード情報キャッシュ部１６０は、デコード情報を既に格納しているとき、命令デコード部１３０からデコード情報が出力されると、その情報を上書きして保持する。これにより、当該ＶＩＬＷ命令が書き換えられた場合にデコード情報を速やかに書き換えることが可能であり、使用するプログラムファイルに即したデコード情報を得ることができる。
【００４３】
以上、本発明のシミュレーション装置およびシミュレーション方法の好適な実施の形態について詳述したが、本発明は、その特定の実施の形態に限定されるものではなく、例えば本発明のシミュレーション装置およびシミュレーション方法は、ＶＬＩＷ型のプロセッサへの適用を主たる目的とするが、同様の実行形態を有する、例えば、水平型マイクロのシミュレーション等にも有効である。
【００４４】
（付記１）  ＶＬＩＷ型プロセッサのシミュレーション装置において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納する記憶部と、
前記ＶＬＩＷ命令を前記記憶部から読み出す命令読み出し部と、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択する命令デコード部と、
前記選択されたデコード情報を保持するデコード情報保持部と、
前記デコード情報が前記デコード情報保持部に格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する命令実行部と、
を有することを特徴とするシミュレーション装置。
【００４５】
（付記２）  読み出した前記ＶＬＩＷ命令をキャッシュする命令キャッシュをさらに有し、
前記命令デコード部は、前記命令キャッシュに存在する命令を対象とすることを特徴とする付記１記載のシミュレーション装置。
【００４６】
（付記３）  前記デコード情報保持部は、メモリ上の命令の書き換えが生じた場合に、書き換え前の前記デコード情報を棄却することを特徴とする付記１記載のシミュレーション装置。
【００４７】
（付記４）  前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルと、前記レジスタファイルに格納する前の前記各変数を格納するテンポラリバッファとをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際前記相互に干渉する関係を有する命令が存在する場合には、前記テンポラリバッファに格納しながら実行し、命令実行後に前記各変数を前記テンポラリバッファから前記レジスタファイルに格納することを特徴とする付記１記載のシミュレーション装置。
【００４８】
（付記５）  前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルと、前記レジスタファイルに格納する前の前記各変数を格納するテンポラリバッファとをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際前記例外が発生し得る命令が存在する場合には、前記テンポラリバッファに格納しながら実行し、例外が発生しなかった場合、前記各変数を前記テンポラリバッファから前記レジスタファイルに格納することを特徴とする付記１記載のシミュレーション装置。
【００４９】
（付記６）  前記ＶＬＩＷ命令を実行する際に用いられる各変数の値を保持するレジスタファイルをさらに有し、
前記命令実行部は、前記ＶＬＩＷ命令をシーケンシャルに実行し、その際相互に干渉する関係を有する命令および例外が発生し得る命令が存在しない場合には、命令実行後の前記各変数を直接前記レジスタファイルに格納することを特徴とする付記１記載のシミュレーション装置。
【００５０】
（付記７）  前記デコード情報の選択は、前記プログラムファイルの最初のデコード時に行われることを特徴とする付記１記載のシミュレーション装置。
（付記８）  ＶＬＩＷ型プロセッサのシミュレーション方法において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納し、
前記ＶＬＩＷ命令を前記記憶部から読み出し、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択し、
前記選択されたデコード情報を保持し、
前記デコード情報が前記デコード情報保持部に格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する、
ことを特徴とするシミュレーション方法。
【図面の簡単な説明】
【００５１】
【図１】本実施の形態のシミュレーション装置を示す原理図である。
【図２】シミュレーション装置のハードウェア構成例を示す図である。
【図３】シミュレーション装置の機能を示すブロック図である。
【図４】シミュレーション装置の動作を示すフローチャートである。
【図５】シミュレーション方法を行う際のＶＬＩＷ命令の一例を示す図である。
【図６】図５に示す命令を実行したときの制御フローを説明する図である。
【図７】ＶＬＩＷ命令の別の例を示す図である。
【符号の説明】
【００５２】
１、１００  シミュレーション装置
２  記憶部
３、１２０  命令読み出し部
４、１３０  命令デコード部
５  デコード情報保持部
６、１４０  命令実行部
１０１  ＣＰＵ
１１０  データベース
１１１  メモリシステム
１２１  命令キャッシュ
１４１  レジスタファイル
１４３  テンポラリバッファ
１５０  バイパス部
１６０  デコード情報キャッシュ部
【図１】
2007094986.tif 000003
【図２】
2007094986.tif 000004
【図３】
2007094986.tif 000005
【図４】
2007094986.tif 000006
【図５】
2007094986.tif 000007
【図６】
2007094986.tif 000008
【図７】
2007094986.tif 000009
【手続補正書】
【提出日】平成18年4月7日(2006.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記デコード情報の選択は、前記ＶＬＩＷ命令の最初のデコード時に行われることを特徴とする請求項１記載のシミュレーション装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
ＶＬＩＷ型プロセッサのシミュレーション方法において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納し、
前記ＶＬＩＷ命令を読み出し、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択し、
前記選択されたデコード情報を保持し、
前記デコード情報が格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する、
ことを特徴とするシミュレーション方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
なお、１−ＶＬＩＷは、ＶＬＩＷ命令を実行する単位（命令単位）であることを示している。
図５、図６に示す例では、ａｄｄ．ｐ命令により、ｇｒ１ａとｇｒ２との和を演算し、ｇｒ１ａはｇｒ１ｂ（ｎｅｗ  ｇｒ１）に書き換えられるが、ｌｄ命令の実行時においてｇｒ４で参照するｇｒ１ｃは、ｇｒ１ａと同じ値（ｏｌｄ  ｇｒ１）でなければならない。このためシミュレータではｌｄ命令の実行後、すぐにレジスタファイルｇｒ１（ｇｒ１ｂ）の内容を更新することができない。このため、図６に示すように、従来はレジスタファイルの内容を一旦テンポラリ領域に保存し、全てのＶＬＩＷ内命令の実行完了の後に、その内容を再びレジスタファイルに書き戻すという方法がとられていた。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
命令読み出し部３は、記憶部２からＶＬＩＷ命令を有するプログラムファイルを読み出す。
命令デコード部４は、命令読み出し部３にて読み出されたプログラムファイルをデコードする。また、命令デコード部４はデコードの際、例えば図５、７に示したように命令単位内に相互に干渉する関係を有する命令が存在する場合や、例えば命令違反や割り込み等の例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択して出力する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
（付記７）  前記デコード情報の選択は、前記ＶＬＩＷ命令の最初のデコード時に行われることを特徴とする付記１記載のシミュレーション装置。
（付記８）  ＶＬＩＷ型プロセッサのシミュレーション方法において、
所定の命令単位毎に構成されるＶＬＩＷ命令を格納し、
前記ＶＬＩＷ命令を読み出し、
読み出した前記ＶＬＩＷ命令をデコードし、その際前記命令単位内に、相互に干渉する関係を有する命令が存在する場合および例外が発生し得る命令が存在する場合に、それらの命令を識別し得る情報をデコード情報として選択し、
前記選択されたデコード情報を保持し、
前記デコード情報が格納されているとき、前記デコード情報を利用して前記ＶＬＩＷ命令を実行する、
ことを特徴とするシミュレーション方法。