(57)【要約】      （修正有）【課題】プロセッサの動作検証を効率的に行い、検証精度を向上させる。【解決手段】プロセッサ１２ｂの動作を検証するプロセッサの動作検証方法であって、プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータ３４ａで実行し、実行された試験命令列の結果から期待値を取得する工程と、試験命令列をプロセッサで実行させて結果値を取得する工程と、取得された期待値及び結果値を比較し、期待値及び結果値の一致又は不一致を判定する工程と、を含み、試験命令列は、プロセッサで複数のオペランドを含む命令を実行する際、複数のオペランドに対するアクセス順序を設定する命令列を含む。【選択図】図２
2012099035.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの動作を検証するプロセッサの動作検証方法であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を含むことを特徴とするプロセッサの動作検証方法。
【請求項２】
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする請求項１記載のプロセッサの動作検証方法。
【請求項３】
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする請求項１記載のプロセッサの動作検証方法。
【請求項４】
前記試験命令列は、
複数のプロセッサのうち少なくとも１つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする請求項１記載のプロセッサの動作検証方法。
【請求項５】
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第１データに含まれる第１の複数のバイトと、前記プロセッサに接続されるメモリに格納される第２データに含まれる第２の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第１の複数のバイト及び前記第２の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第１の複数のバイトと残りの前記第２の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする請求項１のプロセッサの動作検証方法。
【請求項６】
プロセッサの動作を検証するプロセッサの動作検証装置であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する第１取得部と、
前記プロセッサで前記試験命令列を実行させて結果値を取得する第２取得部と、
前記第１取得部で取得された前記期待値及び前記第２取得部で取得された前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する判定部と、
を有することを特徴とするプロセッサの動作検証装置。
【請求項７】
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする請求項６記載のプロセッサの動作検証装置。
【請求項８】
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする請求項６記載のプロセッサの動作検証装置。
【請求項９】
前記試験命令列は、
複数のプロセッサのうち少なくとも１つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする請求項６記載のプロセッサの動作検証装置。
【請求項１０】
プログラムを実行するプロセッサの動作を検証するプロセッサの動作検証プログラムであって、
コンピュータに、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を実行させることを特徴とするプロセッサの動作検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの動作検証方法、プロセッサの動作検証装置、及びプロセッサの動作検証プログラムに関する。
【背景技術】
【０００２】
従来、プロセッサの動作検証方法として、乱数を基に試験命令列及び試験データをランダムに生成してプロセッサの試験を行うランダム試験方法が知られている。又、ランダム試験をプロセッサで実行させて取得した結果値と、プロセッサの動作をシミュレートするシミュレータを実行させて取得した期待値とを比較してプロセッサの動作試験を行う方法が行われている。シミュレータは、例えばソフトウェアにより実現されるシミュレーションプログラムである。シミュレータは、プロセッサの論理仕様の模擬試験を行うものである。
【０００３】
従来技術として、下記の文献がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０４−２４７５３４号公報
【特許文献２】特開平０８−１６６８９２号公報
【特許文献３】特開平１１−３３８７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサの論理仕様により定義された動作がプロセッサに実装されている。従って、型番及び版数が異なる様々な機種のプロセッサであっても、論理仕様が同じであれば、同じシミュレータを使用してシミュレーションが実行できるはずであると考えられてきた。しかし、実際にシミュレーションを実行してみると、論理障害及びプロセッサの装置故障を原因とする場合の他に、論理仕様における機種依存の動作が原因となって結果値と期待値の不一致が生じる場合があることがわかってきた。つまり、所定の試験命令列を実行した場合、試験者には想定できない機種依存の動作が発生し、同じ論理仕様であっても機種の違うプロセッサ同士では、異なる試験命令列の実行動作が行われている可能性があることが明らかとなってきた。
【０００６】
しかし、試験者は試験対象のプロセッサに論理仕様で機種に依存する動作が存在するか否かわからない為、実際にシミュレーションを実行して、結果値と期待値との不一致が生じた場合、機種依存の動作が原因か否か解析を行う必要があった。そして、その解析結果に基づいて、シミュレータの改版又は試験条件を変更し、再度シミュレーションを実行することで対応していた。
【０００７】
このような結果値と期待値の不一致要因の解析や、シミュレータの改版等は複雑な工程を有し、試験時間及び試験工数の増大を招く。従って、プロセッサの動作検証を効率的に行うことができない問題があった。更に、シミュレータの改版等による再シミュレーションを行ったとしても、プロセッサ本来の障害及び不良が検出できない場合がある。従って、動作検証の精度が低下する問題があった。
【０００８】
開示の技術は、プロセッサの動作検証を効率的に行うことができ、検証精度を向上させることができるプロセッサの動作検証方法、プロセッサの動作検証装置、及びプロセッサの動作検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
プロセッサの動作を検証するプロセッサの動作検証方法であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を含むことを特徴とするプロセッサの動作検証方法が提供される。
【００１０】
開示の技術の第２の側面によれば、
プロセッサの動作を検証するプロセッサの動作検証装置であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する第１取得部と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する第２取得部と、
前記第１取得部で取得された前記期待値及び前記第２取得部で取得された前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する判定部と、
を有することを特徴とするプロセッサの動作検証装置が提供される。
【００１１】
開示の技術の第３の側面によれば、
プログラムを実行するプロセッサの動作を検証するプロセッサの動作検証プログラムであって、
コンピュータに、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を実行させることを特徴とするプロセッサの動作検証プログラムが提供される。
【発明の効果】
【００１２】
開示の技術によれば、予め機種依存動作を考慮した期待値を使用してプロセッサの動作検証を行っているので、プロセッサの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサの動作検証の精度を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係るプロセッサ試験装置のハードウェア構成を示す図である。
【図２】図２は、実施例１に係るプロセッサ試験装置の機能構成を示す図である。
【図３】図３は、実施例１に係るプロセッサ試験装置が行う試験命令列の実行処理のフローチャートである。
【図４】図４は、実施例１に係るプロセッサ試験装置の動作を示すフローチャートである。
【図５】図５は、実施例１に係るプロセッサ試験装置の処理説明図である。
【図６】図６は、実施例１に係るプロセッサ試験装置の処理説明図である。
【図７】図７は、実施例１に係るプロセッサ試験装置の事前確認動作を示すフローチャートである。
【図８】図８は、実施例１に係るプロセッサ試験装置の命令シミュレーション動作を示すフローチャートである。
【図９】図９は、実施例２に係るプロセッサ試験装置の処理説明図である。
【図１０】図１０は、実施例２に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１１】図１１は、実施例２に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１２】図１２は、実施例２に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１３】図１３は、実施例２に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１４】図１４は、実施例２に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１５】図１５は、実施例３に係るプロセッサ試験装置の処理説明図である。
【図１６】図１６は、実施例３に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１７】図１７は、実施例３に係るプロセッサ試験装置の動作を示すフローチャートである。
【図１８】図１８は、実施例４に係るプロセッサ試験装置の処理説明図である。
【図１９】図１９は、実施例４に係るプロセッサ試験装置の動作を示すフローチャートである。
【図２０】図２０は、実施例４に係るプロセッサ試験装置の動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００１４】
（実施例１）
図１から図８を用いて、実施例１を説明する。
【００１５】
図１は、実施例１に係るプロセッサ試験装置２０ａのハードウェア構成図を示す図である。プロセッサ試験装置２０ａは、主記憶装置１１ａ、プロセッサ１２ａ、プロセッサ１２ｂ、バスインタフェースユニット（ＢＩＵ）１３ａ、及びディスクインタフェース（ＤＩ）１５ａを有する。
【００１６】
図１に示す例では、プロセッサ１２ｂは、試験対象となる装置である。そのため、プロセッサ試験装置２０ａが、プロセッサ１２ｂを試験するプロセッサ試験装置２０ａとして機能する。なお、補助記憶装置１４ａは、プロセッサ試験装置２０ａとディスクインタフェース（ＤＩ）１５ａを介して接続される。
【００１７】
主記憶装置１１ａは、メインメモリ、キャッシュメモリ及びフラッシュメモリを含み、命令やデータを記憶する。メインメモリとしては、ＳＩＭＭ（Ｓｉｎｇｌｅ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）及びＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）がある。フラッシュメモリとしては、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）がある。
【００１８】
プロセッサ１２ａは、四則演算や論理演算などの演算処理を実行する装置である。プロセッサ１２ａは、コンパイルプログラムを実行することで、プログラミング言語で書かれたプログラムを、プロセッサ１２ａが直接実行可能な機械語でコード化された命令に変換する機能を有する。プロセッサ１２ａは、機械語でコード化された命令を主記憶装置１１ａから読み出す。プロセッサ１２ａは、プログラム実行時に機械語でコード化された命令にしてプロセッサ１２ａ内部のレジスタ１２ａ−２に格納する。プロセッサ１２ａは、レジスタ１２ａ−２に格納された命令を実行することにより、上記演算処理を実行して各種の計算や制御を行うことができる。
【００１９】
プロセッサ１２ａは、キャッシュメモリ１２ａ−１及びレジスタ１２ａ−２を有する。キャッシュメモリ１２ａ−１は、主記憶装置１１ａに格納されるデータの一部を保持することにより、プロセッサ１２ａの演算速度と主記憶装置１１ａからのデータ読出し速度の速度差を埋めるために用いる高速小容量メモリである。なお、キャッシュメモリ１２ａ−１は、プロセッサ１２ａの外部に配置した別装置としても良い。レジスタ１２ａ−２は、プロセッサ１２ａの計算結果を一時的に保持し、主記憶装置１１ａを読み書きするときのアドレスを保持するときに使用する記憶装置である。又、レジスタ１２ａ−２は、プロセッサ１２ａ、入力装置２２ａ又は出力装置２３ａの動作状態を保持するときに使用する記憶装置である。レジスタ１２ａ−２は、記憶素子で実装可能であるため、動作が極めて高速であるが、キャッシュメモリ１２ａ−１と比較して容量は小さい。
【００２０】
プロセッサ試験装置２０ａは、プロセッサ１２ａを試験するために、補助記憶装置１４ａに格納されたプログラム３０ａをプロセッサ１２ａに実行させる。プロセッサ１２ａは、プログラム３０ａを実行することにより、後述する試験命令列を作成する。次に、プロセッサ１２ａは、作成した試験命令列を実行することにより、プロセッサ１２ａの先行制御方式に係る試験を行う。
【００２１】
バスインタフェースユニット（ＢＩＵ）１３ａは、主記憶装置１１ａ、プロセッサ１２ａ、プロセッサ１２ｂ、及びディスクインタフェース（ＤＩ）１５ａと接続されるチップセットである。バスインタフェースユニット１３ａは、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）又はＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  Ｅｘｐｒｅｓｓなどの規格に従って機能する制御回路を含む。バスインタフェースユニット１３ａは、さらに、ＰＣＩバス、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、キーボードポート、マウスポート、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの回路を含む。バスインタフェースユニット１３ａは、バス１６ａを介してプロセッサ試験装置２０ａの外部に配置される入力装置２２ａ及び出力装置２３ａに接続される。なお、バスインタフェースユニット１３ａは、バス１６ａに接続される対象機器の通信速度に対応して高速通信用及び低速通信用に分けた２つ以上のチップセットとしても良い。
【００２２】
入力装置２２ａは、プロセッサ試験装置２０ａに対して情報を出力するキーボード又はマウスである。出力装置２３ａは、プロセッサ試験装置２０ａから処理状況や処理結果を出力する対象となるディスプレイ又はプリンタである。
【００２３】
補助記憶装置１４ａは、磁気ディスクドライブ、フラッシュメモリのような不揮発性メモリを用いたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、又は、光学ディスクドライブである。補助記憶装置１４ａは、磁気ディスク又は光ディスクの記憶媒体として、データを読出し又は記録する。この場合、プロセッサ１２ａは、後述するプログラム３０ａを記録する補助記憶装置１４ａからプログラム３０ａを読み出し、プログラム３０ａを上記磁気ディスクドライブやＳＳＤ等に格納する。なお、プログラム３０ａは、図２を参照して説明する。
【００２４】
ディスクインタフェース（ＤＩ）１５ａは、プロセッサ１２ａと補助記憶装置１４ａとを接続する接続用回路である。ディスクインタフェース１５ａは、例えば、Ｓｅｒｉａｌ  ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、及びＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）等の規格に従って設計される。
【００２５】
図２は、実施例１に係るプロセッサ試験装置２０ａの機能構成図を示す図である。なお、図１に示すプロセッサ試験装置２０ａにおいて、図１で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００２６】
プロセッサ１２ａは、プログラム３０ａにより第１処理部３１ａ、第２処理部３２ａ、第３処理部３３ａ、シミュレーション部３４ａ、追加部３５ａ、事前確認部３６ａ、第４処理部３７ａ、第５処理部３８ａ、第６処理部３９ａ、及び第７処理部４０ａとして動作する。
【００２７】
また、主記憶装置１１ａは、第１格納部４１ａ、第２格納部４２ａ、テーブル４３ａ、固定領域４４ａ、第３格納部４５ａ、及び第４格納部４６ａとして動作する。
【００２８】
第１格納部４１ａは、第３処理部３３ａにより生成された試験命令列を格納する。第２格納部４２ａは、追加部３５ａにより生成された期待値を格納する。テーブル４３ａは、図５を参照して後述するように、プロセッサ１２ａの論理仕様から機種依存となる項目を抽出した機種依存動作を含む機種依存項目が予め格納されている。
【００２９】
機種依存動作は、プロセッサ１２ａの論理仕様において、プロセッサ１２ａの動作が不確定である試験項目に対応する動作のことをいう。実際に、シミュレーション部３４ａによってプロセッサ１２ａのシミュレーションを実行してみると、試験対象となるプロセッサ１２ｂの論理障害及び装置故障を原因とする場合の他に、論理仕様における機種依存の動作が原因となって結果値と期待値の不一致が生じる場合がある。つまり、所定の試験命令列を実行した場合、試験者には想定できない機種依存の動作が発生し、同じ論理仕様であっても機種の違うプロセッサ同士では、異なる試験命令列の実行動作が行われる可能性がある。このような所定の試験命令列に対応するプロセッサ１２ａの動作を、機種依存動作という。
【００３０】
固定領域４４ａは、第４処理部３７ａにより生成された割込みハンドラを格納する。割り込みハンドラの説明は後述する。第３格納部４５ａは、プロセッサ１２ｂにより生成された結果値を格納する。第４格納部４６ａは、プロセッサ１２ｂにより生成されたエラーログを格納する。
【００３１】
プロセッサ１２ｂは、第５処理部３８ａによる実行指示に従って、主記憶装置１１ａに格納された試験命令列を実行する。プロセッサ１２ｂは、試験命令列を実行して取得した結果値を第３格納部４５ａに格納する。プロセッサ１２ｂは、試験命令列が正しく実行されないとき、第４格納部４６ａにエラーログを出力する。
【００３２】
プログラム３０ａは、第１処理部３１ａ、第２処理部３２ａ、第３処理部３３ａ、シミュレーション部３４ａ、追加部３５ａ、事前確認部３６ａ、第４処理部３７ａ、第５処理部３８ａ、第６処理部３９ａ、及び第７処理部４０ａの各処理をプログラミング言語で記述したものである。プロセッサ１２ａは、プログラム３０ａを実行することにより、第１処理部３１ａ、第２処理部３２ａ、第３処理部３３ａ、シミュレーション部３４ａ、追加部３５ａ、事前確認部３６ａ、第４処理部３７ａ、第５処理部３８ａ、第６処理部３９ａ、及び第７処理部４０ａの各処理を実行することができる。
【００３３】
第１処理部３１ａは、第２処理部３２ａ、第３処理部３３ａ、シミュレーション部３４ａ、追加部３５ａ、事前確認部３６ａ、第４処理部３７ａ、第５処理部３８ａ、第６処理部３９ａ、及び第７処理部４０ａの各処理を制御する。また、第１処理部３１ａは、第２処理部３２ａ、第３処理部３３ａ、シミュレーション部３４ａ、追加部３５ａ、事前確認部３６ａ、第４処理部３７ａ、第５処理部３８ａ、第６処理部３９ａ、及び第７処理部４０ａに対してイベントを共有させるための制御を行う。
【００３４】
第２処理部３２ａは、擬似乱数を生成するアルゴリズムにより乱数を生成する。第１処理部３１ａは、第２処理部３２ａによって、生成された乱数を第３処理部３３ａに出力させる。
【００３５】
第３処理部３３ａは、第２処理部３２ａで発生した乱数に基づいて、ランダム生成された試験命令列を生成する。第１処理部３１ａは、第２処理部３２ａが乱数を出力したことを確認する。次いで、第１処理部３１ａは、第３処理部３３ａに試験命令列を生成させるために、第３処理部３３ａに生成された乱数を引き渡す。
【００３６】
第３処理部３３ａは、第２処理部３２ａで発生した乱数に基づいて、第１格納部４１ａに格納されたプロセッサ試験用の試験命令列を選択する。又、第３処理部３３ａは、第２処理部３２ａから引き渡された乱数に基づいて、第１格納部４１ａに格納された不図示のオペランドテーブルからオペランドを選択する。
【００３７】
第３処理部３３ａは、選択された試験命令列を第１格納部４１ａに格納する。なお、第３処理部３３ａにより生成された試験命令列は、シミュレーション部３４ａにより、第５処理部３８ａが実行するための試験命令列に変更される。
【００３８】
シミュレーション部３４ａは、第３処理部３３ａより生成された試験命令列を実行して期待値を取得する。シミュレーション部３４ａは、取得した期待値を第２格納部４２ａに格納させる。
【００３９】
追加部３５ａは、テーブル４３ａから機種依存項目を取得して機種依存項目に関する試験項目を追加する。追加部３５ａによって試験項目を追加することにより、予め機種依存動作を考慮した期待値を取得することが可能になる。従って、予め機種依存動作を考慮した期待値を用いて、後述する第５処理部３８ａによりプロセッサ１２ｂの動作検証を行うことができる。
【００４０】
事前確認部３６ａは、シミュレーション部３４ａにより機種依存となる試験命令列を実行し、機種依存となる動作を事前確認する。
【００４１】
第４処理部３７ａは、テーブル４３ａに格納された割込みハンドラを取得する。割込みハンドラとは、所定の条件が満たされた場合に発生する割り込みにより起動される処理である。実施例１における所定の条件とは、例えば、プロセッサ１２ａが、プロセッサ１２ａのキャッシュメモリ１２ａ−１の無効ページを指定して命令を実行することである。無効ページとは、例えば、アクセス対象のデータが、図１に前述したキャッシュメモリ１２ａ−１に存在しないことを示すものである。第４処理部３７ａが無効ページを指定して命令を実行すると、アクセス例外による割込みが発生するため、割込みハンドラが起動する。第１処理部３１ａは、第４処理部３７ａによって、起動された割込みハンドラを、第１格納部４１ａに格納された試験命令列の後続命令として追加させる。
【００４２】
第５処理部３８ａは、試験対象となるプロセッサ１２ａの先行制御方式を用いて、試験命令列を実行する機能を有する。第３処理部３３ａにより所定の数だけ有する試験命令列が生成されたことを確認すると、第１処理部３１ａは第５処理部３８ａに試験命令列を実行させる。第５処理部３８ａは、プロセッサ１２ｂを実行させて得られた結果値を、プロセッサ１２ｂによって第３格納部４５ａに格納させる。プロセッサ１２ｂによって試験命令列が正しく実行されない場合、第５処理部３８ａは、プロセッサ１２ｂによって第４格納部４６ａにエラーログを出力させる。
【００４３】
第６処理部３９ａは、第２格納部４２ａに格納された期待値と、第３格納部４５ａに格納された結果値とを比較する機能を有する。第１処理部３１ａは、第６処理部３９ａによって、期待値及び結果値の比較結果を出力装置２３ａに出力させる。期待値及び結果値が一致する場合、第６処理部３９ａは、プロセッサ１２ｂによってシミュレーション部３４ａが先行して実行した試験命令列を正しく実行したことを示す結果を、出力装置２３ａに出力する。期待値及び結果値が不一致である場合、第６処理部３９ａは、エラーログを第７処理部４０ａに出力する。
【００４４】
第７処理部４０ａは、第６処理部３９ａから期待値及び結果値が不一致である旨の通知を取得すると、第７処理部４０ａに格納された１つ又はそれ以上のエラーログを、出力装置２３ａに出力する処理を実行する。
【００４５】
図３は、実施例１に係るプロセッサ試験装置２０ａが行う試験命令列の実行処理のフローチャートである。なお、実施例１において、プロセッサ１２ａが、プログラム３０ａを実行することにより、第１処理部３１ａ〜第７処理部４０ａとして処理を開始する。第１処理部３１ａは、事前動作確認フローチャートにおける第２処理部３２ａ〜第７処理部４０ａの実行タイミングを管理するために、処理を担当する第２処理部３２ａ〜第７処理部４０ａに実行指示を行う。以下の記載においては、冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【００４６】
追加部３５ａは、試験命令列の実行処理を行う前に、テーブル４３ａから、プロセッサ１２ａの機種依存動作を含む機種依存項目を取得する（ＯＰ１）。
【００４７】
第３処理部３３ａは、追加部３５ａによって取得したプロセッサ１２ａの機種依存動作を含む機種依存項目を反映させて、プロセッサ１２ａを試験するための試験命令列を生成する（ＯＰ２）。第３処理部３３ａは、生成した試験命令列を、第１格納部４１ａに格納する。
【００４８】
シミュレーション部３４ａは、第１格納部４１ａに格納された機種依存項目が反映された試験命令列を実行して期待値を取得する（ＯＰ３）。シミュレーション部３４ａは、取得した期待値を、第２格納部４２ａに格納する。
【００４９】
第５処理部３８ａは、試験対象となるプロセッサ１２ｂに、同じ機種依存項目が反映された試験命令列を実行させ、結果値を取得する（ＯＰ４）。第５処理部３８ａは、プロセッサ１２ｂによって取得された結果値を、プロセッサ１２ｂによって第３格納部４５ａに格納させる。
【００５０】
第６処理部３９ａは、第２格納部４２ａに格納された期待値、及び第３格納部４５ａに格納された結果値が一致するか否か比較する（ＯＰ５）。期待値及び結果値が一致する場合（ＯＰ５  ＹＥＳ）、第１処理部３１ａは、プロセッサ試験装置２０ａによるプロセッサ１２ｂの試験を終了させるか判断する（ＯＰ７）。プロセッサ試験装置２０ａによるプロセッサ１２ｂの試験を終了させると判断した場合（ＯＰ７  ＹＥＳ）、第１処理部３１ａは、プロセッサ試験装置２０ａが行う試験命令列の実行処理を終了させる。第１処理部３１ａは、プロセッサ試験装置２０ａによるプロセッサ１２ｂの試験を終了しないと判断した場合（ＯＰ７  ＮＯ）、ＯＰ２に進む。
【００５１】
なお、ＯＰ５において、期待値及び結果値が一致しない場合（ＯＰ５  ＮＯ）、第６処理部３９ａは、第７処理部４０ａに、期待値と結果値とが不一致であるとの通知、即ちエラーログを出力する（ＯＰ６）。エラーログを出力した後、第１処理部３１ａは、ＯＰ７に進む。このように、実施例１に係るプロセッサ試験装置２０ａは、予め機種依存動作を考慮した期待値を使用してプロセッサ１２ｂの動作検証を行うため、プロセッサ１２ｂの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ１２ｂの動作検証の精度を向上させることができる。
【００５２】
図４は、実施例１に係るプロセッサ試験装置２０ａの動作を示すフローチャートである。図４は、図３に示す第６処理部３９ａ及び第４格納部４６ａから第７処理部４０ａにエラーログが出力された時の処理を示すフローチャートである。なお、図４において、図１〜図３で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００５３】
第６処理部３９ａ、又は第４格納部４６ａから第７処理部４０ａにエラーログが出力された時、第７処理部４０ａは、エラーの原因は試験対象であるプロセッサ１２ｂの障害であるか判断する（ＯＰ１１）。エラーの原因はプロセッサ１２ｂの障害であると判断した時（ＯＰ１１  ＹＥＳ）、第７処理部４０ａは、プロセッサ１２ｂの障害の修正が必要である旨のエラーログを出力装置２３ａに出力する（ＯＰ１２）。一方、エラーの原因はプロセッサ１２ｂの障害では無いと判断した時（ＯＰ１１  ＮＯ）、第７処理部４０ａは、シミュレーション部３４ａのバグの修正が必要である旨のエラーログを出力装置２３ａに出力する（ＯＰ１３）。
【００５４】
図５は、実施例１に係るプロセッサ試験装置２０ａの処理説明図である。なお、図５に示すプロセッサ試験装置２０ａの処理説明図において、図１〜図４で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００５５】
テーブル４３ａは、プロセッサ１２ａの論理仕様から機種依存動作に依存する項目を抽出したものを格納する。テーブル４３ａに格納された機種依存項目は、例えば、ｍｏｖｅ命令オペランドアクセス順序、ｄｉｖｉｄｅ命令例外順序、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ書き戻し、及びｃｏｍｐａｒｅ命令アクセス例外認識等が挙げられる。これら論理依存動作に依存する項目は、プロセッサ１２ａの論理仕様の中で使用される代表的なものである。
【００５６】
また、各機種依存項目には、２つ以上の有限な選択肢が予め設定される。例えば、機種依存項目がｍｏｖｅ命令オペランドアクセス順序の場合、オペランドアクセス順序はオペランドｏｐ１又はオペランドｏｐ２のうち、どちらのオペランドｏｐのアクセス例外が優先するか二種類の動作種別が設定される。データ例外、除算例外、又は書込み保護例外を含む複数の例外条件を有する命令は、オペランドアクセス順序の優先順位である。なお、プロセッサの論理仕様により定義された動作がプロセッサに実装されている。従って、型番及び版数が異なる様々な機種のプロセッサであっても、論理仕様が同じであれば、同じシミュレータを使用してシミュレーションが実行できるはずであると考えられてきた。しかし、実際にシミュレーションを実行してみると、論理障害及びプロセッサの装置故障を原因とする場合の他に、論理仕様における機種依存の動作が原因となって結果値と期待値の不一致が生じる場合があることがわかってきた。そのため、これらの各機種依存動作をプロセッサ１２ａで実行した場合、同じ論理仕様であっても機種の違うプロセッサの同士では、異なる試験命令列の実行動作が行われる可能性がある。
【００５７】
事前確認部３６ａは、プロセッサ１２ａの論理仕様から機種に依存する動作を推測し、可能性が高いいくつかの機種依存項目をテーブル４３ａから選択し、シミュレーション部３４ａに実行させる。事前確認部３６ａは、プロセッサ１２ａにより実行された確認項目の結果を、テーブル４３ａに反映させる。
【００５８】
テーブル４３ａに格納されている事前確認部３６ａにより抽出された各機種依存項目には、前述したように２つ以上の有限な選択肢が予め設定される。即ち、各機種依存項目には、予測可能な複数の選択肢が設定される。予測可能な複数の選択肢を設定することにより、プロセッサ１２ａの機種依存項目に伴う期待値を用いて、後述する第５処理部３８ａによりプロセッサ１２ｂの動作検証を行うことができる。なお、事前確認部３６ａの確認項目は、機種依存項目に係る命令が静的に記述されたものである。事前確認部３６ａは、静的に記述された命令をプロセッサ１２ａに実行させることで、プロセッサ１２ａの機種依存項目の動作を調べる。そして、事前確認部３６ａによる確認結果に基づいて、各機種依存項目に対してテーブル４３ａに動作種別が設定される。又、事前確認部３６ａにより抽出された全ての機種依存項目の確認結果が予め設定された動作種別以外であれば、フラグが設定されず、選択肢以外の動作結果はプロセッサ１２ａの障害であると判定される。
【００５９】
シミュレーション部３４ａは、試験対象であるプロセッサ１２ｂに係る機種依存項目の動作シミュレーションに際して、テーブル４３ａを参照してシミュレーション部３４ａの動作内容を決定する。シミュレーション部３４ａは、テーブル４３ａを参照することにより、試験対象であるプロセッサ１２ｂに適応したシミュレーションを行うことができる。
【００６０】
図６は、実施例１に係るプロセッサ試験装置２０ａの処理説明図である。なお、図６に示すプロセッサ試験装置２０ａの処理説明図において、図１〜図５で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例１におけるプロセッサ１２ａの機種依存動作は、以下に説明するｍｏｖｅ命令オペランドアクセス順序である。
【００６１】
図６において、事前確認部３６ａ−１は、例えば、２つのオペランドを持つ命令のオペランドアクセス順序を確認する。事前確認部３６ａ−１は、メモリとして機能する主記憶装置１１ａの複数アドレス間におけるデータ移動命令（以下、ｍｏｖｅ命令という）において、オペランドｏｐ１のアドレス及びオペランドｏｐ２のアドレスに、それぞれ異なる無効ページを指定してｍｏｖｅ命令を実行する。無効ページは、アクセス対象のデータが、第１格納部４１ａ−１に格納されていないことを示す。無効ページは、無効データを保持する。
【００６２】
第４処理部３７ａ−１は、第１格納部４１ａ−１に存在する無効ページにアクセスすることにより、アクセス例外による割込みハンドラを起動させる。割込みハンドラは、第１格納部４１ａ−１上の無効ページにアクセスした後、オペランドｏｐ１又はオペランドｏｐ２のうち、どちらのオペランドが先にアクセス対象となるか調べる。第１処理部３１ａは、第４処理部３７ａ−１によって、起動された割込みハンドラを、第１格納部４１ａ−１に格納された試験命令列の後続命令として追加させる。
【００６３】
テーブル４３ａ−１は、割込みハンドラの起動と同時に固定領域４４ａ−１に割込みステータスとして割込み原因コードと割込み原因アドレスを格納する。第４処理部３７ａ−１によって起動された割込みハンドラは、割込み原因コードと割込み原因アドレスを基にどちらのオペランドに起因するアクセス例外であるか判断する。割込みハンドラは、テーブル４３ａ−１の該当エントリに例外要因となったオペランドｏｐを優先順位１位として設定し、例外要因とならなかったオペランドｏｐを優先順位２位として設定する。
【００６４】
第４処理部３７ａ−１によりアクセス例外による割込みハンドラが起動された後、テーブル４３ａ−１には抽出した機種依存項目の動作種別が設定される。実施例１に係るテーブル４３ａ−１の動作の欄に、ｍｏｖｅ命令オペランドアクセス順序が設定される。テーブル４３ａ−１の項目に設定される動作種別は、オペランドｏｐ１又はオペランドｏｐ２からなる２つの有限な選択肢を含む。
【００６５】
シミュレーション部３４ａ−１は、試験対象であるプロセッサ１２ｂに係る機種依存項目の動作シミュレーションに際して、テーブル４３ａ−１を参照してシミュレーション部３４ａ−１の動作内容を決定する。シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照して、試験対象であるプロセッサ１２ｂに適応したシミュレーションを行う。実施例１におけるプロセッサ１２ａの機種依存動作は、ｍｏｖｅ命令オペランドアクセス順序である。
【００６６】
実施例１において、シミュレーション部３４ａ−１は、オペランドｏｐ１又はオペランドｏｐ２のうち、どちらのオペランドｏｐのアクセス例外が優先するかを判断する。次いで、シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたｍｏｖｅ命令において、オペランドｏｐ１のアドレス及びオペランドｏｐ２のアドレスにそれぞれ異なる無効ページを指定し、どちらのオペランドｏｐのアクセス例外が優先するかを判断する命令シミュレーションを実行する。実施例１に係るアクセス例外条件とは、オペランドｏｐがメモリとして機能する主記憶装置１１ａのアドレスの範囲外に存在する場合、外部記憶にオペランドｏｐがスワップされて主記憶装置１１ａに格納されていない場合、又は主記憶装置１１ａに対するアクセス禁止の保護が設定されているために、主記憶装置１１ａに対して読み書きできない場合である。
【００６７】
シミュレーション部３４ａ−１は、ｍｏｖｅ命令の対象となる２つのオペランドｏｐ１、オペランドｏｐ２のうち、オペランドｏｐ１にアクセス例外が存在するか調べる。シミュレーション部３４ａ−１は、アクセス例外条件が存在する場合、対応するテーブル４３ａ−１を参照して、オペランドｏｐ１にアクセス例外条件が存在することを示すフラグがオンであるか否か判断する。次いで、シミュレーション部３４ａ−１は、ｍｏｖｅ命令のオペランドｏｐ２のアクセス例外の有無を調べる。アクセス例外条件が存在する場合、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照して、オペランドｏｐ２にアクセス例外条件が存在することを示すフラグがオンであるか否か判断する。このようにして、シミュレーション部３４ａ−１は、フラグの状態に応じてオペランドｏｐ１のアクセス例外のシミュレーションを行う。または、シミュレーション部３４ａ−１は、オペランドｏｐ２のアクセス例外のシミュレーションを行う。または、シミュレーション部３４ａ−１は、ｍｏｖｅ命令のメモリ間移動のシミュレーションを行う。そして、機種依存項目を考慮してシミュレートした期待値を求めることができる。
【００６８】
図７は、実施例１に係るプロセッサ試験装置２０ａの事前動作確認を示すフローチャートである。なお、図７において、図１〜図６で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００６９】
図７に示すフローチャートには、ＯＰ３３、ＯＰ３４、ＯＰ３７の３つの条件分岐処理がある。これらの条件分岐処理により、図７に示すフローチャートには、以下のような処理の組合せがある。
【００７０】
事前動作確認フローチャート１：ＯＰ３３がＹＥＳ、ＯＰ３４がＹＥＳ
【００７１】
事前動作確認フローチャート２：ＯＰ３３がＮＯ
【００７２】
事前動作確認フローチャート３：ＯＰ３３がＹＥＳ、ＯＰ３４がＮＯ、ＯＰ３７がＹＥＳ
【００７３】
事前動作確認フローチャート４：ＯＰ３３がＹＥＳ、ＯＰ３４がＮＯ、ＯＰ３７がＮＯ
【００７４】
以下、上記４つのフローチャートについて、図７を用いて説明する。なお、図７において、図１〜図６で説明した構成と同様の構成については同一の符号を付し、説明を省略する。
【００７５】
＜事前動作確認フローチャート１：ＯＰ３３がＹＥＳ、ＯＰ３４がＹＥＳ＞
第３処理部３３ａは、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ３１）。事前確認部３６ａ−１は、アドレス１にオペランドｏｐ１を設定し、アドレス２にオペランドｏｐ２を設定して、ｍｏｖｅ命令を実行する（ＯＰ３２）。事前確認部３６ａ−１は、無効ページによる割込みが発生したか判断する（ＯＰ３３）。
【００７６】
事前動作確認フローチャート１の場合、無効ページによる割込みが発生するため（ＯＰ３３  ＹＥＳ）、事前確認部３６ａ−１は、割込み原因アドレスがアドレス１であるか判断する（ＯＰ３４）。事前動作確認フローチャート１の場合、割込み原因アドレスがアドレス１であるため（ＯＰ３４  ＹＥＳ）、第４処理部３７ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序の１位にオペランドｏｐ１を設定する（ＯＰ３５）。次いで、第４処理部３７ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序の２位にオペランドｏｐ２を設定する（ＯＰ３５）。
【００７７】
＜事前動作確認フローチャート２：ＯＰ３３がＮＯ＞
事前確認部３６ａ−１は、アドレス１にオペランドｏｐ１を設定し、アドレス２にオペランドｏｐ２を設定して、ｍｏｖｅ命令を実行する（ＯＰ３２）。事前確認部３６ａ−１は、無効ページによる割込みが発生したか判断する（ＯＰ３３）。事前動作確認フローチャート２の場合、無効ページによる割込みが発生しないため（ＯＰ３３  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ３６）。
【００７８】
＜事前動作確認フローチャート３：ＯＰ３３がＹＥＳ、ＯＰ３４がＮＯ、ＯＰ３７がＹＥＳ＞
事前確認部３６ａ−１は、アドレス１にオペランドｏｐ１を設定し、アドレス２にオペランドｏｐ２を設定して、ｍｏｖｅ命令を実行する（ＯＰ３２）。事前確認部３６ａ−１は、無効ページによる割込みが発生したか判断する（ＯＰ３３）。
【００７９】
事前動作確認フローチャート３の場合、無効ページによる割込みが発生するため（ＯＰ３３  ＹＥＳ）、事前確認部３６ａ−１は、割込み原因アドレスがアドレス１であるか判断する（ＯＰ３４）。事前動作確認フローチャート３の場合、割込み原因アドレスがアドレス１ではないため（ＯＰ３４  ＮＯ）、事前確認部３６ａ−１は、割込み原因アドレスがアドレス２であるか判断する（ＯＰ３７）。事前動作確認フローチャート３の場合、割込み原因アドレスがアドレス２であるため（ＯＰ３７  ＹＥＳ）、第４処理部３７ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序の１位にオペランドｏｐ２を設定する（ＯＰ３８）。次いで、第４処理部３７ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序の２位にオペランドｏｐ１を設定する（ＯＰ３８）。
【００８０】
＜事前動作確認フローチャート４：ＯＰ３３がＹＥＳ、ＯＰ３４がＮＯ、ＯＰ３７がＮＯ＞
事前確認部３６ａ−１は、アドレス１にオペランドｏｐ１を設定し、アドレス２にオペランドｏｐ２を設定して、ｍｏｖｅ命令を実行する（ＯＰ３２）。事前確認部３６ａ−１は、無効ページによる割込みが発生したか判断する（ＯＰ３３）。
【００８１】
事前動作確認フローチャート４の場合、無効ページによる割込みが発生するため（ＯＰ３３  ＹＥＳ）、事前確認部３６ａ−１は、割込み原因アドレスがアドレス１であるか判断する（ＯＰ３４）。事前動作確認フローチャート４の場合、割込み原因アドレスがアドレス１ではないため（ＯＰ３４  ＮＯ）、事前確認部３６ａ−１は、割込み原因アドレスがアドレス２であるか判断する（ＯＰ３７）。事前動作確認フローチャート４の場合、割込み原因アドレスがアドレス２ではないため（ＯＰ３７  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ３６）。
【００８２】
図８は、実施例１に係るプロセッサ試験装置２０ａの命令シミュレーション動作を示すフローチャートである。なお、図８において、図１〜図７で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００８３】
図８に示すフローチャートには、ＯＰ４２、ＯＰ４３、ＯＰ４４、ＯＰ４６、ＯＰ４９、ＯＰ５２の６つの条件分岐処理がある。これらの条件分岐処理により、図８に示すフローチャートには、以下のような処理の組合せがある。
【００８４】
命令シミュレーション動作フローチャート１：ＯＰ４２がＹＥＳ、ＯＰ４６がＹＥＳ、ＯＰ４３がＮＯ、ＯＰ４４がＹＥＳ
【００８５】
命令シミュレーション動作フローチャート２：ＯＰ４２がＹＥＳ、ＯＰ４６がＮＯ、ＯＰ４３がＮＯ、ＯＰ４４がＮＯ、ＯＰ５２がＹＥＳ
【００８６】
命令シミュレーション動作フローチャート３：ＯＰ４２がＮＯ、ＯＰ４３がＹＥＳ、ＯＰ４９がＹＥＳ、ＯＰ４４がＹＥＳ
【００８７】
命令シミュレーション動作フローチャート４：ＯＰ４２がＮＯ、ＯＰ４３がＹＥＳ、ＯＰ４９がＮＯ、ＯＰ４４がＮＯ、ＯＰ５２がＹＥＳ
【００８８】
命令シミュレーション動作フローチャート５：ＯＰ４２がＮＯ、ＯＰ４３がＮＯ、ＯＰ４４がＮＯ、ＯＰ５２がＮＯ
【００８９】
以下、上記５つのフローチャートについて、図８を用いて説明する。以下の記載においては、図７と同様に冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【００９０】
＜命令シミュレーション動作フローチャート１：ＯＰ４２がＹＥＳ、ＯＰ４６がＹＥＳ、ＯＰ４３がＮＯ、ＯＰ４４がＹＥＳ＞
シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ４１）。シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるか判断する（ＯＰ４２）。
【００９１】
命令シミュレーション動作フローチャート１の場合、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるため（ＯＰ４２  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序が、オペランドｏｐ１が１番目であるか判断する（ＯＰ４６）。命令シミュレーション動作フローチャート１の場合、ｍｏｖｅ命令オペランドアクセス順序は、オペランドｏｐ１が１番目であるため（ＯＰ４６  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ１が１番目であることを示す動作フラグ１をオンにする（ＯＰ４７）。
【００９２】
シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるか判断する（ＯＰ４３）。命令シミュレーション動作フローチャート１の場合、オペランドｏｐ２に例外条件が存在しないため（ＯＰ４３  ＮＯ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ１が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ４４）。命令シミュレーション動作フローチャート１の場合、動作フラグ１がオンであるであるため（ＯＰ４４  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のＭＯＶＥ命令オペランドアクセス順序の１番目のオペランドｏｐ１のアクセス例外をシミュレートする（ＯＰ４５）。
【００９３】
＜命令シミュレーション動作フローチャート２：ＯＰ４２がＹＥＳ、ＯＰ４６がＮＯ、ＯＰ４３がＮＯ、ＯＰ４４がＹＥＳ＞
シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ４１）。シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるか判断する（ＯＰ４２）。
【００９４】
命令シミュレーション動作フローチャート２の場合、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるため（ＯＰ４２  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序が、オペランドｏｐ１が１番目であるか判断する（ＯＰ４６）。命令シミュレーション動作フローチャート２の場合、ｍｏｖｅ命令オペランドアクセス順序は、オペランドｏｐ１が１番目ではないため（ＯＰ４６  ＮＯ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ１が２番目であることを示す動作フラグ２をオンにする（ＯＰ４８）。
【００９５】
シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるか判断する（ＯＰ４３）。命令シミュレーション動作フローチャート２の場合、オペランドｏｐ２に例外条件が存在しないため（ＯＰ４３  ＮＯ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ１が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ４４）。命令シミュレーション動作フローチャート２の場合、動作フラグ１がオンではないため（ＯＰ４４  ＮＯ）、シミュレーション部３４ａ−１は、オペランドｏｐ１が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ５２）。命令シミュレーション動作フローチャート２の場合、動作フラグ２がオンであるため（ＯＰ５２  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のＭＯＶＥ命令オペランドアクセス順序の２番目のオペランドｏｐ２のアクセス例外をシミュレートする（ＯＰ５３）。
【００９６】
＜命令シミュレーション動作フローチャート３：ＯＰ４２がＮＯ、ＯＰ４３がＹＥＳ、ＯＰ４９がＹＥＳ、ＯＰ４４がＹＥＳ＞
シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ４１）。シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるか判断する（ＯＰ４２）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１に例外条件が存在しないため（ＯＰ４２  ＮＯ）、シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるか判断する（ＯＰ４３）。
【００９７】
命令シミュレーション動作フローチャート３の場合、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるため（ＯＰ４３  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序が、オペランドｏｐ２が１番目であるか判断する（ＯＰ４９）。命令シミュレーション動作フローチャート３の場合、ｍｏｖｅ命令オペランドアクセス順序は、オペランドｏｐ２が１番目であるため（ＯＰ４９  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ２が１番目であることを示す動作フラグ１をオンにする（ＯＰ５０）。
【００９８】
シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、動作フラグ１がオンであるか判断する（ＯＰ４４）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ２が１番目であることを示す動作フラグ１がオンであるであるため（ＯＰ４４  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のＭＯＶＥ命令オペランドアクセス順序の１番目のオペランドｏｐ１のアクセス例外をシミュレートする（ＯＰ４５）。
【００９９】
＜命令シミュレーション動作フローチャート４：ＯＰ４２がＮＯ、ＯＰ４３がＹＥＳ、ＯＰ４９がＮＯ、ＯＰ４４がＮＯ、ＯＰ５２がＹＥＳ＞
シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ４１）。シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるか判断する（ＯＰ４２）。命令シミュレーション動作フローチャート４の場合、オペランドｏｐ１に例外条件が存在しないため（ＯＰ４２  ＮＯ）、シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるか判断する（ＯＰ４３）。
【０１００】
命令シミュレーション動作フローチャート４の場合、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるため（ＯＰ４３  ＹＥＳ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１のｍｏｖｅ命令オペランドアクセス順序が、オペランドｏｐ２が１番目であるか判断する（ＯＰ４９）。命令シミュレーション動作フローチャート４の場合、ｍｏｖｅ命令オペランドアクセス順序は、オペランドｏｐ２が１番目ではないため（ＯＰ４９  ＮＯ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ２が２番目であることを示す動作フラグ２をオンにする（ＯＰ５１）。
【０１０１】
シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、オペランドｏｐ２が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ４４）。命令シミュレーション動作フローチャート４の場合、動作フラグ１がオンではないため（ＯＰ４４  ＮＯ）、シミュレーション部３４ａ−１は、オペランドｏｐ２が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ５２）。命令シミュレーション動作フローチャート４の場合、動作フラグ２がオンであるため（ＯＰ５２  ＹＥＳ）、テーブル４３ａ−１のＭＯＶＥ命令オペランドアクセス順序の２番目のオペランドｏｐ２のアクセス例外をシミュレートする（ＯＰ５３）。
【０１０２】
＜命令シミュレーション動作フローチャート５：ＯＰ４２がＮＯ、ＯＰ４３がＮＯ、ＯＰ４４がＮＯ、ＯＰ５２がＮＯ＞
シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２を無効ページに設定する（ＯＰ４１）。シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ１に例外条件があるか判断する（ＯＰ４２）。命令シミュレーション動作フローチャート５の場合、オペランドｏｐ１に例外条件が存在しないため（ＯＰ４２  ＮＯ）、シミュレーション部３４ａ−１は、第１格納部４１ａ−１に格納されたオペランドｏｐ２に例外条件があるか判断する（ＯＰ４３）。
【０１０３】
命令シミュレーション動作フローチャート５の場合、オペランドｏｐ２に例外条件が存在しないため（ＯＰ４３  ＮＯ）、シミュレーション部３４ａ−１は、テーブル４３ａ−１を参照にして、動作フラグ１がオンであるか判断する（ＯＰ４４）。命令シミュレーション動作フローチャート５の場合、動作フラグ１がオンではないため（ＯＰ４４  ＮＯ）、シミュレーション部３４ａ−１は、動作フラグ２がオンであるか判断する（ＯＰ５２）。命令シミュレーション動作フローチャート５の場合、動作フラグ２がオンでは無いため（ＯＰ５２  ＮＯ）、シミュレーション部３４ａ−１は、主記憶装置１１ａに設けられたアドレス１、アドレス２間におけるｍｏｖｅ命令動作をシミュレートする（ＯＰ５４）。
【０１０４】
実施例１に開示の技術によれば、実施例１に係るプロセッサ試験装置２０ａは、予め機種依存動作としてｍｏｖｅ命令オペランドアクセス順序を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ１２ｂの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ１２ｂの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ１２ｂの動作検証の精度を向上させることができる。
【０１０５】
（実施例２）
図９から図１４を用いて、実施例２を説明する。
【０１０６】
図９は、実施例２に係るプロセッサ試験装置２０ａの処理説明図である。なお、図９に示すプロセッサ試験装置２０ａの処理説明図において、実施例１の図１〜図６で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例２におけるプロセッサ１２ａの機種依存動作は、以下に説明するｄｉｖｉｄｅ命令例外順序である。
【０１０７】
事前確認部３６ａ−２は、主記憶装置１１ａに格納された２つのオペランドｏｐ１、オペランドｏｐ２を格納する。事前確認部３６ａ−２は、オペランドｏｐ１、オペランドｏｐ２の各データが定式化された除算命令（以下、ｄｉｖｉｄｅ命令）において、１つ目のオペランドのデータｏｐ１が不当な形式で、且つ主記憶装置１１ａへの書込み保護例外条件を設定し、２つ目のオペランドｏｐ２の値に０を指定してｄｉｖｉｄｅ命令を実行する。
【０１０８】
第４処理部３７ａ−２は、主記憶装置１１ａに格納された２つのオペランドｏｐ１、オペランドｏｐ２に対してｄｉｖｉｄｅ命令を実行すると、データ例外、除算例外、又は書込み保護例外の何れかによる割込みが発生することにより、割込みハンドラを起動させる。割込みハンドラは、第１格納部４１ａ−２に格納された２つのオペランドｏｐ１、オペランドｏｐ２に対してｄｉｖｉｄｅ命令を実行した後、データ例外、除算例外、又は書込み保護例外のうち、どちらの例外条件が先に発生したか調べる。第１処理部３１ａは、第４処理部３７ａ−２によって、起動された割込みハンドラを、第１格納部４１ａ−２に格納された試験命令列の後続命令として追加させる。
【０１０９】
テーブル４３ａ−２は、割込みハンドラの起動と同時に固定領域４４ａ−２に割込みステータスとして割込み原因コードを格納する。第４処理部３７ａ−２によって起動された割込みハンドラは、割込みと同時に固定領域４４ａ−２に割込みステータスとして割込み原因コードが格納される。割込みハンドラは、割込み原因コードを基にいずれの割込みかを判断する。割込みハンドラは、テーブル４３ａ−２の該当エントリに例外要因を優先順位１位として設定する。次いで、割込みハンドラは、残りの２つの例外をｄｉｖｉｄｅ命令のオペランドｏｐ１、オペランドｏｐ２に設定する。次いで、割込みハンドラは、再度ｄｉｖｉｄｅ命令を実行させる。割込みハンドラは、その時の割込みの例外要因を優先順位２位に、残りの例外要因を３位としてテーブル４３ａ−２に設定する。
【０１１０】
シミュレーション部３４ａ−２は、試験対象であるプロセッサ１２ｂに係る機種依存項目の動作シミュレーションに際して、テーブル４３ａ−２を参照してシミュレーション部３４ａ−２の動作を決定する。シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照することにより、試験対象であるプロセッサ１２ｂに適応したシミュレーションを行う。実施例２におけるプロセッサ１２ａの機種依存動作は、ｄｉｖｉｄｅ命令例外順序である。
【０１１１】
実施例２において、シミュレーション部３４ａ−２は、試験命令列を実行する際、ｄｉｖｉｄｅ命令に複数の例外要因がある場合、テーブル４３ａ−２を参照して、いずれの例外が優先するかを判断し、ｄｉｖｉｄｅ命令のシミュレーションを行う。最初に、シミュレーション部３４ａ−２は、ｄｉｖｉｄｅ命令のオペランドｏｐ１、オペランドｏｐ２のデータが不当な形式でないかを調べる。次いで、シミュレーション部３４ａ−２は、不当な形式であればテーブル４３ａ−２を参照して対応するフラグを第２格納部４２ａに設定する。次いで、シミュレーション部３４ａ−２は、ｄｉｖｉｄｅ命令のオペランドｏｐ２の値が０でないか調べる。次いで、シミュレーション部３４ａ−２は、オペランドｏｐ２の値が０であればテーブル４３ａ−２を参照して対応するフラグを第２格納部４２ａに設定する。次いで、シミュレーション部３４ａ−２は、ｄｉｖｉｄｅ命令のオペランドｏｐ１の格納が可能であるか調べる。次いで、シミュレーション部３４ａ−２は、格納不可であればテーブル４３ａ−２を参照して対応するフラグを第２格納部４２ａに設定する。次いで、シミュレーション部３４ａ−２は、設定されたフラグの状態に応じ、対応する例外処理の演算シミュレーションを行う。又は、シミュレーション部３４ａ−２は、ｄｉｖｉｄｅ命令の演算シミュレーションを行う。
【０１１２】
図１０〜図１２は、実施例２に係るプロセッサ試験装置２０ａの事前動作確認を示すフローチャートである。図１０のＡに示す処理は図１１のＡに続いている。図１０のＢに示す処理は図１２のＢに続いている。なお、図１０〜図１２において、実施例１の図１〜図６及び実施例２の図９で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０１１３】
図１０〜図１２に示すフローチャートには、ＯＰ６２、ＯＰ６５、ＯＰ６９、ＯＰ６７、ＯＰ８３、ＯＰ８５、ＯＰ６８、ＯＰ９３、ＯＰ９５の９つの条件分岐処理がある。これらの条件分岐処理により、図１０〜図１２に示すフローチャートには、以下のような処理の組合せがある。
【０１１４】
事前動作確認フローチャート１：ＯＰ６２がＹＥＳ、ＯＰ６５がＹＥＳ
【０１１５】
事前動作確認フローチャート２：ＯＰ６２がＹＥＳ、ＯＰ６５がＮＯ、ＯＰ６９がＹＥＳ
【０１１６】
事前動作確認フローチャート３：ＯＰ６２がＹＥＳ、ＯＰ６５がＮＯ、ＯＰ６９がＮＯ
【０１１７】
事前動作確認フローチャート４：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＹＥＳ
【０１１８】
事前動作確認フローチャート５：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＮＯ、ＯＰ８５がＹＥＳ
【０１１９】
事前動作確認フローチャート６：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＮＯ、ＯＰ８５がＮＯ
【０１２０】
事前動作確認フローチャート７：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＹＥＳ
【０１２１】
事前動作確認フローチャート８：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＮＯ、ＯＰ９５がＹＥＳ
【０１２２】
事前動作確認フローチャート９：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＮＯ、ＯＰ９５がＮＯ
【０１２３】
事前動作確認フローチャート１０：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＮＯ
【０１２４】
以下、上記１０個のフローチャートについて、図１０〜図１２を用いて説明する。なお、実施例２において、実施例１と同様に、プロセッサ１２ａが、プログラム３０ａを実行することにより、第１処理部３１ａ〜第７処理部４０ａが動作可能になる。以下の記載においては、実施例１と同様に冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０１２５】
＜事前動作確認フローチャート１：ＯＰ６２がＹＥＳ、ＯＰ６５がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１２６】
事前動作確認フローチャート１の場合、データ例外による割込みが発生するため（ＯＰ６２  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、データ例外を設定する（ＯＰ６３）。事前確認部３６ａ−２は、オペランドｏｐ１にメモリ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６４）。事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６５）。事前動作確認フローチャート１の場合、除算例外による割込みが発生するため（ＯＰ６５  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位に除算例外を、３位に書込み保護例外を設定する（ＯＰ６６）。
【０１２７】
＜事前動作確認フローチャート２：ＯＰ６２がＹＥＳ、ＯＰ６５がＮＯ、ＯＰ６９がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１２８】
事前動作確認フローチャート２の場合、データ例外による割込みが発生するため（ＯＰ６２  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、データ例外を設定する（ＯＰ６３）。事前確認部３６ａ−２は、オペランドｏｐ１にメモリ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６４）。事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６５）。事前動作確認フローチャート２の場合、除算例外による割込みが発生しないため（ＯＰ６５  ＮＯ）、事前確認部３６ａ−２は、書込み保護例外による割込みが発生したか判断する（ＯＰ６９）。事前動作確認フローチャート２の場合、書込み保護例外による割込みが発生するため（ＯＰ６９  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位に書込み保護例外を、３位に除算例外を設定する（ＯＰ７０）。
【０１２９】
＜事前動作確認フローチャート３：ＯＰ６２がＹＥＳ、ＯＰ６５がＮＯ、ＯＰ６９がＮＯ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１３０】
事前動作確認フローチャート３の場合、データ例外による割込みが発生するため（ＯＰ６２  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、データ例外を設定する（ＯＰ６３）。事前確認部３６ａ−２は、オペランドｏｐ１にメモリ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６４）。事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６５）。事前動作確認フローチャート３の場合、除算例外による割込みが発生しないため（ＯＰ６５  ＮＯ）、事前確認部３６ａ−２は、書込み保護例外による割込みが発生したか判断する（ＯＰ６９）。事前動作確認フローチャート３の場合、書込み保護例外による割込みが発生しないため（ＯＰ６９  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ７１）。
【０１３１】
＜事前動作確認フローチャート４：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１３２】
事前動作確認フローチャート４の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート４の場合、除算例外による割込みが発生するため（ＯＰ６７  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、除算例外を設定する（ＯＰ８１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式且つメモリ書込み保護を、オペランドｏｐ２に正当な値を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ８２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ８３）。事前動作確認フローチャート４の場合、データ例外による割込みが発生するため（ＯＰ８３  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位にデータ例外を、３位に書込み保護例外を設定する（ＯＰ８４）。
【０１３３】
＜事前動作確認フローチャート５：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＮＯ、ＯＰ８５がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１３４】
事前動作確認フローチャート５の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート５の場合、除算例外による割込みが発生するため（ＯＰ６７  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、除算例外を設定する（ＯＰ８１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式且つメモリ書込み保護を、オペランドｏｐ２に正当な値を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ８２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ８３）。事前動作確認フローチャート５の場合、データ例外による割込みが発生しないため（ＯＰ８３  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ８５）。事前動作確認フローチャート５の場合、書込保護例外による割込みが発生するため（ＯＰ８５  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位に書込み保護例外を、３位にデータ例外を設定する（ＯＰ８６）。
【０１３５】
＜事前動作確認フローチャート６：ＯＰ６２がＮＯ、ＯＰ６７がＹＥＳ、ＯＰ８３がＮＯ、ＯＰ８５がＮＯ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１３６】
事前動作確認フローチャート６の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート６の場合、除算例外による割込みが発生するため（ＯＰ６７  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、除算例外を設定する（ＯＰ８１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式且つメモリ書込み保護を、オペランドｏｐ２に正当な値を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ８２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ８３）。事前動作確認フローチャート６の場合、データ例外による割込みが発生しないため（ＯＰ８３  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ８５）。事前動作確認フローチャート６の場合、書込保護例外による割込みが発生しないため（ＯＰ８５  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ８７）。
【０１３７】
＜事前動作確認フローチャート７：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１３８】
事前動作確認フローチャート７の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート７の場合、除算例外による割込みが発生しないため（ＯＰ６７  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ６８）。事前動作確認フローチャート７の場合、書込み保護による例外が発生するため（ＯＰ６８  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、書込み保護例外を設定する（ＯＰ９１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ９２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ９３）。事前動作確認フローチャート７の場合、データ例外による割込みが発生するため（ＯＰ９３  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位にデータ例外を、３位に除算例外を設定する（ＯＰ９４）。
【０１３９】
＜事前動作確認フローチャート８：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＮＯ、ＯＰ９５がＹＥＳ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１４０】
事前動作確認フローチャート８の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート８の場合、除算例外による割込みが発生しないため（ＯＰ６７  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ６８）。事前動作確認フローチャート８の場合、書込保護による例外が発生するため（ＯＰ６８  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、書込保護例外を設定する（ＯＰ９１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ９２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ９３）。事前動作確認フローチャート８の場合、データ例外による割込みが発生しないため（ＯＰ９３  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ９５）。事前動作確認フローチャート８の場合、除算例外による割込みが発生するため（ＯＰ９５  ＹＥＳ）、第４処理部３７ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令除外順序の２位に除算例外を、３位にデータ例外を設定する（ＯＰ９６）。
【０１４１】
＜事前動作確認フローチャート９：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＹＥＳ、ＯＰ９３がＮＯ、ＯＰ９５がＮＯ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１４２】
事前動作確認フローチャート９の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート９の場合、除算例外による割込みが発生しないため（ＯＰ６７  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ６８）。事前動作確認フローチャート９の場合、書込保護による例外が発生するため（ＯＰ６８  ＹＥＳ）、事前確認部３６ａ−２は、テーブル４３ａ−２のｄｉｖｉｄｅ命令例外順序の１位に、書込保護例外を設定する（ＯＰ９１）。事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ９２）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ９３）。事前動作確認フローチャート９の場合、データ例外による割込みが発生しないため（ＯＰ９３  ＹＥＳ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ９５）。事前動作確認フローチャート９の場合、除算例外による割込みが発生しないため（ＯＰ９５  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ９７）。
【０１４３】
＜事前動作確認フローチャート１０：ＯＰ６２がＮＯ、ＯＰ６７がＮＯ、ＯＰ６８がＮＯ＞
事前確認部３６ａ−２は、オペランドｏｐ１に不当なデータ形式、且つ書込み保護を、オペランドｏｐ２に０を設定してｄｉｖｉｄｅ命令を実行する（ＯＰ６１）。事前確認部３６ａ−２は、データ例外による割込みが発生したか判断する（ＯＰ６２）。
【０１４４】
事前動作確認フローチャート１０の場合、データ例外による割込みが発生しないため（ＯＰ６２  ＮＯ）、事前確認部３６ａ−２は、除算例外による割込みが発生したか判断する（ＯＰ６７）。事前動作確認フローチャート１０の場合、除算例外による割込みが発生しないため（ＯＰ６７  ＮＯ）、事前確認部３６ａ−２は、書込保護例外による割込みが発生したか判断する（ＯＰ６８）。事前動作確認フローチャート１０の場合、書込保護例外による割込みが発生しないため（ＯＰ６８  ＮＯ）、第７処理部４０ａは、例えば、エラーログを出力装置２３ａに出力するエラー処理を行う（ＯＰ７１）。
【０１４５】
図１３〜図１４は、実施例２に係るプロセッサ試験装置２０ａの命令シミュレーション動作を示すフローチャートである。図１３のＡに示す処理は図１４のＡに続いている。なお、図１３〜図１４において、実施例１の図８、及び実施例２の図９〜図１２で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０１４６】
図１３〜図１４に示すフローチャートには、ＯＰ１０２、ＯＰ１０５、ＯＰ１０７、ＯＰ１０３、ＯＰ１１０、ＯＰ１１２、ＯＰ１０４、ＯＰ１１５、ＯＰ１１７、ＯＰ１２１、ＯＰ１２３、ＯＰ１２５の１２個の条件分岐処理がある。これらの条件分岐処理により、図１３〜図１４に示すフローチャートには、以下のような処理の組合せがある。
【０１４７】
命令シミュレーション動作フローチャート１：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＹＥＳ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＹＥＳ
【０１４８】
命令シミュレーション動作フローチャート２：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＮＯ、ＯＰ１０７がＹＥＳ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ
【０１４９】
命令シミュレーション動作フローチャート３：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＮＯ、ＯＰ１０７がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ
【０１５０】
命令シミュレーション動作フローチャート４：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＹＥＳ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＹＥＳ
【０１５１】
命令シミュレーション動作フローチャート５：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＮＯ、ＯＰ１１２がＹＥＳ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ
【０１５２】
命令シミュレーション動作フローチャート６：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＮＯ、ＯＰ１１２がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ
【０１５３】
命令シミュレーション動作フローチャート７：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＹＥＳ、ＯＰ１２１がＹＥＳ
【０１５４】
命令シミュレーション動作フローチャート８：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＮＯ、ＯＰ１１７がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ
【０１５５】
命令シミュレーション動作フローチャート９：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＮＯ、ＯＰ１１７がＮＯ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ
【０１５６】
命令シミュレーション動作フローチャート１０：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＮＯ
【０１５７】
以下、上記１０個のフローチャートについて、図１３〜図１４を用いて説明する。なお、図１３〜図１４において、以下の記載においては、図１１〜図１２と同様に冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０１５８】
＜命令シミュレーション動作フローチャート１：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＹＥＳ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１５９】
命令シミュレーション動作フローチャート１の場合、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式であるため（ＯＰ１０２  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であるか判断する（ＯＰ１０５）。命令シミュレーション動作フローチャート１の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であるため（ＯＰ１０５  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であることを示す動作フラグ１をオンにする（ＯＰ１０６）。
【０１６０】
シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納したオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート１の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート１の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート１の場合、動作フラグ１がオンであるであるため（ＯＰ１２１  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位１番目であるデータ例外処理をシミュレートする（ＯＰ１２２）。
【０１６１】
＜命令シミュレーション動作フローチャート２：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＮＯ、ＯＰ１０７がＹＥＳ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１６２】
命令シミュレーション動作フローチャート２の場合、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式であるため（ＯＰ１０２  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であるか判断する（ＯＰ１０５）。命令シミュレーション動作フローチャート２の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目ではないため（ＯＰ１０５  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であるか判断する（ＯＰ１０７）。命令シミュレーション動作フローチャート２の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であるため（ＯＰ１０７  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であることを示す動作フラグ２をオンにする（ＯＰ１０８）。
【０１６３】
シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート２の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート２の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート２の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート２の場合、動作フラグ２がオンであるであるため（ＯＰ１２３  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位２番目であるデータ例外処理をシミュレートする（ＯＰ１２４）。
【０１６４】
＜命令シミュレーション動作フローチャート３：ＯＰ１０２がＹＥＳ、ＯＰ１０５がＮＯ、ＯＰ１０７がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１６５】
命令シミュレーション動作フローチャート３の場合、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式であるため（ＯＰ１０２  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であるか判断する（ＯＰ１０５）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目ではないため（ＯＰ１０５  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であるか判断する（ＯＰ１０７）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目ではないため（ＯＰ１０７  ＮＯ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が３番目であることを示す動作フラグ３をオンにする（ＯＰ１０９）。
【０１６６】
シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート３の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート３の場合、動作フラグ２がオンではないため（ＯＰ１２３  ＮＯ）、シミュレーション部３４ａ−２は、動作フラグ３がオンであるか判断する（ＯＰ１２５）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位が３番目であることを示す動作フラグ３がオンであるであるため（ＯＰ１２５  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位３番目であるデータ例外処理をシミュレートする（ＯＰ１２６）。
【０１６７】
＜命令シミュレーション動作フローチャート４：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＹＥＳ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１６８】
命令シミュレーション動作フローチャート４の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート４の場合、オペランドｏｐ２が０であるため（ＯＰ１０３  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であるか判断する（ＯＰ１１０）。命令シミュレーション動作フローチャート４の場合、除算例外が優先順位１番目であるため（ＯＰ１１０  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、除算例外が優先順位１番目であることを示す動作フラグ１をオンにする（ＯＰ１１１）。
【０１６９】
シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート４の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート４の場合、動作フラグ１がオンであるであるため（ＯＰ１２１  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位１番目である除算例外処理をシミュレートする（ＯＰ１２２）。
【０１７０】
＜命令シミュレーション動作フローチャート５：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＮＯ、ＯＰ１１２がＹＥＳ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１７１】
命令シミュレーション動作フローチャート５の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート５の場合、オペランドｏｐ２が０であるため（ＯＰ１０３  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であるか判断する（ＯＰ１１０）。命令シミュレーション動作フローチャート５の場合、除算例外は優先順位１番目ではないため（ＯＰ１１０  ＮＯ）、シミュレーション部３４ａ−２は、除算例外が優先順位２番目であるか判断する（ＯＰ１１２）。命令シミュレーション動作フローチャート５の場合、除算例外は優先順位２番目であるため（ＯＰ１１２  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、除算例外は優先順位２番目であることを示す動作フラグ２をオンにする（ＯＰ１１３）。
【０１７２】
シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート５の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート５の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、除算例外は優先順位２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート５の場合、動作フラグ２がオンであるため（ＯＰ１２３  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位２番目である除算例外処理をシミュレートする（ＯＰ１２４）。
【０１７３】
＜命令シミュレーション動作フローチャート６：ＯＰ１０２がＮＯ、ＯＰ１０３がＹＥＳ、ＯＰ１１０がＮＯ、ＯＰ１１２がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１７４】
命令シミュレーション動作フローチャート６の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート６の場合、オペランドｏｐ２が０であるため（ＯＰ１０３  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であるか判断する（ＯＰ１１０）。命令シミュレーション動作フローチャート６の場合、除算例外は優先順位１番目ではないため（ＯＰ１１０  ＮＯ）、シミュレーション部３４ａ−２は、除算例外が優先順位２番目であるか判断する（ＯＰ１１２）。命令シミュレーション動作フローチャート６の場合、除算例外は優先順位２番目ではないため（ＯＰ１１２  ＮＯ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、除算例外が優先順位３番目であることを示す動作フラグ３をオンにする（ＯＰ１１４）。
【０１７５】
シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート６の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、除算例外が優先順位１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート６の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、除算例外が優先順位２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート６の場合、動作フラグ２がオンではないため（ＯＰ１２３  ＮＯ）、シミュレーション部３４ａ−２は、除算例外が優先順位３番目であることを示す動作フラグ３がオンであるか判断する（ＯＰ１２５）。命令シミュレーション動作フローチャート６の場合、動作フラグ３がオンであるため（ＯＰ１２５  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位３番目である除算例外処理をシミュレートする（ＯＰ１２６）。
【０１７６】
＜命令シミュレーション動作フローチャート７：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＹＥＳ、ＯＰ１２１がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１７７】
命令シミュレーション動作フローチャート７の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート７の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。
【０１７８】
命令シミュレーション動作フローチャート７の場合、オペランドｏｐ１は書込みアクセス可能ではないため（ＯＰ１０４  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であるか判断する（ＯＰ１１５）。命令シミュレーション動作フローチャート７の場合、書込みアクセス例外の優先順位が１番目であるため（ＯＰ１１５  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、書込みアクセス例外の優先順位が１番目であることを示す動作フラグ１をオンにする（ＯＰ１１６）。
【０１７９】
シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート７の場合、動作フラグ１がオンであるであるため（ＯＰ１２１  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位１番目である書込みアクセス例外処理をシミュレートする（ＯＰ１２２）。
【０１８０】
＜命令シミュレーション動作フローチャート８：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＮＯ、ＯＰ１１７がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１８１】
命令シミュレーション動作フローチャート８の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート８の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。
【０１８２】
命令シミュレーション動作フローチャート８の場合、オペランドｏｐ１は書込みアクセス可能ではないため（ＯＰ１０４  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であるか判断する（ＯＰ１１５）。命令シミュレーション動作フローチャート８の場合、書込みアクセス例外の優先順位が１番目ではないため（ＯＰ１１５  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が２番目であるか判断する（ＯＰ１１７）。命令シミュレーション動作フローチャート８の場合、書込みアクセス例外の優先順位が２番目であるため（ＯＰ１１７  ＹＥＳ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、書込みアクセス例外の優先順位が２番目であることを示す動作フラグ２をオンにする（ＯＰ１１８）。
【０１８３】
シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート８の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート８の場合、動作フラグ２がオンであるため（ＯＰ１２３  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位２番目である書込みアクセス例外処理をシミュレートする（ＯＰ１２４）。
【０１８４】
＜命令シミュレーション動作フローチャート９：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＮＯ、ＯＰ１１５がＮＯ、ＯＰ１１７がＮＯ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＹＥＳ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１８５】
命令シミュレーション動作フローチャート９の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート９の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。
【０１８６】
命令シミュレーション動作フローチャート９の場合、オペランドｏｐ１は書込みアクセス可能ではないため（ＯＰ１０４  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であるか判断する（ＯＰ１１５）。命令シミュレーション動作フローチャート９の場合、書込みアクセス例外の優先順位が１番目ではないため（ＯＰ１１５  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が２番目であるか判断する（ＯＰ１１７）。命令シミュレーション動作フローチャート９の場合、書込みアクセス例外の優先順位が２番目ではないため（ＯＰ１１７  ＮＯ）、シミュレーション部３４ａ−２は、テーブル４３ａ−２を参照にして、書込みアクセス例外の優先順位が３番目であることを示す動作フラグ３をオンにする（ＯＰ１１９）。
【０１８７】
シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が１番目であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。命令シミュレーション動作フローチャート９の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が２番目であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート９の場合、動作フラグ２がオンではないため（ＯＰ１２３  ＮＯ）、シミュレーション部３４ａ−２は、書込みアクセス例外の優先順位が３番目であることを示す動作フラグ３がオンであるか判断する（ＯＰ１２５）。命令シミュレーション動作フローチャート９の場合、動作フラグ３がオンであるため（ＯＰ１２５  ＹＥＳ）、シミュレーション部３４ａ−２は、優先順位３番目である書込みアクセス例外処理をシミュレートする（ＯＰ１２６）。
【０１８８】
＜命令シミュレーション動作フローチャート１０：ＯＰ１０２がＮＯ、ＯＰ１０３がＮＯ、ＯＰ１０４がＹＥＳ、ＯＰ１２１がＮＯ、ＯＰ１２３がＮＯ、ＯＰ１２５がＮＯ＞
シミュレーション部３４ａ−２は、主記憶装置１１ａに設けられたフラグ１、フラグ２及びフラグ３をオフに設定する（ＯＰ１０１）。シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式か判断する（ＯＰ１０２）。
【０１８９】
命令シミュレーション動作フローチャート１０の場合、オペランドｏｐ１又はオペランドｏｐ２が不当なデータ形式ではないため（ＯＰ１０２  ＮＯ）、シミュレーション部３４ａ−２は、第１格納部４１ａ−２に格納されたオペランドｏｐ２が０であるか判断する（ＯＰ１０３）。命令シミュレーション動作フローチャート１０の場合、オペランドｏｐ２が０ではないため（ＯＰ１０３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１は書込みアクセス可能であるか判断する（ＯＰ１０４）。命令シミュレーション動作フローチャート１０の場合、オペランドｏｐ１は書込みアクセス可能であるため（ＯＰ１０４  ＹＥＳ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が１番であることを示す動作フラグ１がオンであるか判断する（ＯＰ１２１）。
【０１９０】
命令シミュレーション動作フローチャート１０の場合、動作フラグ１がオンではないため（ＯＰ１２１  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が２番であることを示す動作フラグ２がオンであるか判断する（ＯＰ１２３）。命令シミュレーション動作フローチャート１０の場合、動作フラグ２がオンではないため（ＯＰ１２３  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１又はオペランドｏｐ２のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が３番であることを示す動作フラグ３がオンであるか判断する（ＯＰ１２５）。命令シミュレーション動作フローチャート１０の場合、動作フラグ３がオンではないため（ＯＰ１２５  ＮＯ）、シミュレーション部３４ａ−２は、オペランドｏｐ１及びオペランドｏｐ２に対するｄｉｖｉｄｅ命令をシミュレートする（ＯＰ１２７）。
【０１９１】
実施例２に開示の技術によれば、実施例２に係るプロセッサ試験装置２０ａは、予め機種依存動作としてｄｉｖｉｄｅ命令例外順序を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ１２ｂの動作検証を行うので、複雑な工程を必要とせず、プロセッサ１２ｂの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ１２ｂの動作検証の精度を向上させることができる。
【０１９２】
（実施例３）
図１５から図１７を用いて、実施例３を説明する。
【０１９３】
図１５は、実施例３に係るプロセッサ試験装置２０ａの処理説明図である。なお、図１５に示すプロセッサ試験装置２０ａの処理説明図において、実施例１の図１〜図６、及び実施例２の図９で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例３におけるプロセッサ１２ａの機種依存動作は、以下に説明するｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ書き戻しである。
【０１９４】
図１５において、事前確認部３６ａ−３は、複数のプロセッサ間の排他制御方式のためのｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令において、メモリとして機能する主記憶装置１１ａが格納するデータと置換データが等しい時に、主記憶装置１１ａへの書き戻しが行われるか否かについて確認する。実施例３に係るｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令とは、複数のプロセッサの共有メモリとして使用される主記憶装置１１ａの特定のアドレスに格納されたデータと、プロセッサ１２ａのレジスタ１２ａ−２に格納された置換対象となるデータとを比較する。比較結果において各データが同一である場合、特定のアドレスに格納されているデータをプロセッサ１２ａのレジスタ１２ａ−２に格納されている置換データで書き換えて主記憶装置１１ａにアクセスする排他制御方式である。
【０１９５】
事前確認部３６ａ−３は、例えば、複数のプロセッサ間の排他制御命令であるｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐにおいて、主記憶装置１１ａに格納されているデータと置換データが等しい時にメモリへの書き戻しが行われるか否かについて確認する。事前確認部３６ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐがアクセスする主記憶装置１１ａのアドレスに対して書込み保護条件を設定し、格納されているデータと置換データを同じ値として命令を実行する。
【０１９６】
第４処理部３７ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令がアクセスする主記憶装置１１ａのアドレスに対して書込み保護条件を設定し、格納されているデータと置換データを同じ値として命令を実行すると、割込みハンドラを起動させる。割込みハンドラは、第１格納部４１ａ−３に格納されているデータに対してｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令を実行した後、書込み保護条件による割込みが発生したか調べる。第１処理部３１ａは、第４処理部３７ａ−３によって、起動された割込みハンドラを、第１格納部４１ａ−３に格納された試験命令列の後続命令として追加させる。
【０１９７】
テーブル４３ａ−３は、割込みハンドラの起動と同時に固定領域４４ａ−３に割込みステータスとして割込み原因コードを格納する。第４処理部３７ａ−３によって起動された割込みハンドラは、割込みと同時に固定領域４４ａ−３に割込みステータスとして、割込み原因コード及び割込み原因アドレスが格納される。割込みハンドラは割込み原因コード及び割込み原因アドレスを基に割込みが発生したかを判断する。
【０１９８】
テーブル４３ａ−３は、第４処理部３７ａ−３によりｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令による割込みハンドラが起動された後、プロセッサ１２ａの論理仕様から機種依存となる項目を抽出した機種依存項目を格納する。実施例３に係るテーブル４３ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ書き戻しを格納する。実施例３において、テーブル４３ａ−３の項目に格納される動作は、フラグがオンの場合は１、フラグがオフの場合は０となる２つの有限な選択肢を含む。
【０１９９】
シミュレーション部３４ａ−３は、試験対象であるプロセッサ１２ｂに係る機種依存項目の動作シミュレーションに際して、テーブル４３ａ−３を参照してシミュレーション部３４ａ−３の動作を決定する。シミュレーション部３４ａ−３は、テーブル４３ａ−３を参照することにより、試験対象であるプロセッサ１２ｂに適応したシミュレーションを行う。実施例３におけるプロセッサ１２ａの機種依存動作は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ書き戻しである。
【０２００】
シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令を実行後、書込み保護条件による割込みが発生した場合は、第２格納部４２ａに格納されるテーブル４３ａ−３の該当エントリに書き戻しが行われることを示すフラグをオンする。シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令を実行後、書込み保護条件による割込みが発生しなかった場合、第２格納部４２ａに格納されるテーブル４３ａ−３の該当エントリに書き戻しが行われることを示すフラグをオフにする。シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令をシミュレートする際、第１格納部４１ａ−３に格納されているデータと置換データが等しい場合に、テーブル４３ａ−３を参照にして主記憶装置１１ａへの書き戻しを行うか否かを判断し命令シミュレートを行う。
【０２０１】
図１６は、実施例３に係るプロセッサ試験装置２０ａの事前動作確認を示すフローチャートである。なお、図１６において、実施例１に係る図１〜図６、実施例２の図１０〜図１１、及び図１５で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０２０２】
図１６に示すフローチャートには、ＯＰ１３３における１個の条件分岐処理がある。この条件分岐処理により、図１６に示すフローチャートには、以下のような処理の組合せがある。
【０２０３】
事前動作確認フローチャート１：ＯＰ１３３がＮＯ
【０２０４】
事前動作確認フローチャート２：ＯＰ１３３がＹＥＳ
【０２０５】
以下、上記２つのフローチャートについて、図１６を用いて説明する。なお、実施例３において、実施例１及び実施例２と同様に、プロセッサ１２ａが、プログラム３０ａを実行することにより、第１処理部３１ａ〜第７処理部４０ａが動作可能になる。以下の記載においては、実施例１及び実施例２と同様に、冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０２０６】
＜事前動作確認フローチャート１：ＯＰ１３３がＮＯ＞
図１６において、事前確認部３６ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令がアクセスする主記憶装置１１ａのアドレス位置に対して書込み保護条件を設定する（ＯＰ１３１）。
【０２０７】
事前確認部３６ａ−３は、主記憶装置１１ａのアドレス位置に格納されるデータと、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令において置換対象となるデータの値を同じに設定して、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令を実行する（ＯＰ１３２）。事前確認部３６ａ−３は、書込み保護による割込みが発生したか判断する（ＯＰ１３３）。
【０２０８】
事前動作確認フローチャート１の場合、書込み保護による割込みが発生しないため（ＯＰ１３３  ＮＯ）、第４処理部３７ａ−３は、第２格納部４２ａに格納されるｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグをオフにする（ＯＰ１３４）。即ち、第４処理部３７ａ−３は、第２格納部４２ａに格納されるｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグを０に設定する。
【０２０９】
＜事前動作確認フローチャート２：ＯＰ１３３がＹＥＳ＞
事前確認部３６ａ−３は、主記憶装置１１ａのアドレス位置に格納されるデータと、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令において置換対象となるデータの値を同じに設定して、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令を実行する（ＯＰ１３２）。事前確認部３６ａ−３は、書込み保護による割込みが発生したか判断する（ＯＰ１３３）。
【０２１０】
事前動作確認フローチャート２の場合、書込み保護による割込みが発生するため（ＯＰ１３３  ＹＥＳ）、第４処理部３７ａ−３は、第２格納部４２ａに格納されるテーブル４３ａ−３のｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグをオンにする（ＯＰ１３５）。即ち、第４処理部３７ａ−３は、第２格納部４２ａに格納されるテーブル４３ａ−３のｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグを１に設定する。
【０２１１】
図１７は、実施例３に係るプロセッサ試験装置２０ａの命令シミュレーション動作を示すフローチャートである。なお、図１７において、実施例１に係る図１〜図６、実施例２の図１０〜図１１、及び図１５〜図１６で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０２１２】
図１７に示すフローチャートには、ＯＰ１４２、ＯＰ１４３の２つの条件分岐処理がある。これらの条件分岐処理により、図１７に示すフローチャートには、以下のような処理の組合せがある。
【０２１３】
命令シミュレーション動作フローチャート１：ＯＰ１４２がＹＥＳ、ＯＰ１４３がＹＥＳ
【０２１４】
命令シミュレーション動作フローチャート２：ＯＰ１４２がＮＯ
【０２１５】
命令シミュレーション動作フローチャート３：ＯＰ１４２がＹＥＳ、ＯＰ１４３がＮＯ
【０２１６】
以下、上記３つのフローチャートについて、図１７を用いて説明する。図１７において、以下の記載においては、図１６と同様に冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０２１７】
＜命令シミュレーション動作フローチャート１：ＯＰ１４２がＹＥＳ、ＯＰ１４３がＹＥＳ＞
シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令動作のシミュレートを実行する（ＯＰ１４１）。シミュレーション部３４ａ−３は、主記憶装置１１ａに格納されている格納データと置換データが等しいか判断する（ＯＰ１４２）。
【０２１８】
命令シミュレーション動作フローチャート１の場合、主記憶装置１１ａに格納されている格納データと置換データが等しいため（ＯＰ１４２  ＹＥＳ）、シミュレーション部３４ａ−３は、テーブル４３ａ−３のｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグがオンか判断する（ＯＰ１４３）。命令シミュレーション動作フローチャート１の場合、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグがオンであるため（ＯＰ１４３  ＹＥＳ）、シミュレーション部３４ａ−３は、格納データの書き戻し処理を実行する（ＯＰ１４４）。
【０２１９】
＜命令シミュレーション動作フローチャート２：ＯＰ１４２がＮＯ＞
シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令動作のシミュレートを実行する（ＯＰ１４１）。シミュレーション部３４ａ−３は、主記憶装置１１ａに格納されている格納データと置換データが等しいか判断する（ＯＰ１４２）。命令シミュレーション動作フローチャート２の場合、主記憶装置１１ａに格納されている格納データと置換データが等しくないため（ＯＰ１４２  ＮＯ）、シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令動作のシミュレートを終了する。
【０２２０】
＜命令シミュレーション動作フローチャート３：ＯＰ１４２がＹＥＳ、ＯＰ１４３がＮＯ＞
シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令動作のシミュレートを実行する（ＯＰ１４１）。シミュレーション部３４ａ−３は、主記憶装置１１ａに格納されている格納データと置換データが等しいか判断する（ＯＰ１４２）。
【０２２１】
命令シミュレーション動作フローチャート３の場合、主記憶装置１１ａに格納されている格納データと置換データが等しいため（ＯＰ１４２  ＹＥＳ）、シミュレーション部３４ａ−３は、テーブル４３ａ−３のｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグがオンか判断する（ＯＰ１４３）。命令シミュレーション動作フローチャート３の場合、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令の書き戻しフラグがオンでは無いため（ＯＰ１４３  ＮＯ）、シミュレーション部３４ａ−３は、ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ命令動作のシミュレートを終了する。
【０２２２】
実施例３に開示の技術によれば、実施例３に係るプロセッサ試験装置２０ａは、予め機種依存動作としてｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ書き戻しを考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ１２ｂの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ１２ｂの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ１２ｂの動作検証の精度を向上させることができる。
【０２２３】
（実施例４）
図１８から図２０を用いて、実施例４を説明する。
【０２２４】
図１８は、実施例４に係るプロセッサ試験装置２０ａの処理説明図である。なお、図１８に示すプロセッサ試験装置２０ａの処理説明図において、実施例１の図１〜図６、実施例２の図９、及び実施例３の図１５に説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例４におけるプロセッサ１２ａの機種依存動作は、以下に説明するｃｏｍｐａｒｅ命令アクセス例外認識である。
【０２２５】
図１８において、事前確認部３６ａ−４は、レジスタ１２ａ−２に格納されているオペランドｏｐ１と、メモリとして機能する主記憶装置１１ａに格納されているオペランドｏｐ２とを比較するｃｏｍｐａｒｅ命令を実行する。事前確認部３６ａ−４は、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスに無効ページを設定する。無効ページは、アクセス対象のデータが、第１格納部４１ａ−４上に存在しないことを示す。無効ページは、無効データを保持する。不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスに無効ページを設定した後、事前確認部３６ａ−４は、レジスタ１２ａ−２に格納されているオペランドｏｐ１と、主記憶装置１１ａに格納されているオペランドｏｐ２とを比較するｃｏｍｐａｒｅ命令を実行する。
【０２２６】
テーブル４３ａ−４は、割込みハンドラの起動と同時に固定領域４４ａ−４に割込みステータスとして割込み原因コードを格納する。第４処理部３７ａ−４によって起動された割込みハンドラは、割込みと同時に固定領域４４ａ−４に割込みステータスとして割込み原因コード及び割込み原因アドレスが格納される。割込みハンドラは割込み原因コード及び割込み原因アドレスをもとに割込みが発生したかを判断する。
【０２２７】
第４処理部３７ａ−４は、レジスタ１２ａ−２に格納されているオペランドｏｐ１と、主記憶装置１１ａに格納されているオペランドｏｐ２とを比較するｃｏｍｐａｒｅ命令を実行すると、割込みハンドラを起動させる。割込みハンドラは、第１格納部４１ａ−４に格納されているデータに対してｃｏｍｐａｒｅ命令を実行した後、アクセス例外認識による割込みが発生したか調べる。第１処理部３１ａは、第４処理部３７ａ−４によって、起動された割込みハンドラを、第１格納部４１ａ−４に格納された試験命令列の後続命令として追加させる。
【０２２８】
テーブル４３ａ−４は、第４処理部３７ａ−４によりｃｏｍｐａｒｅ命令による割込みハンドラが起動された後、プロセッサ１２ａの論理仕様から機種依存となる項目を抽出した機種依存項目を格納する。実施例４に係るテーブル４３ａ−４は、ｃｏｍｐａｒｅ命令アクセス例外認識を格納する。実施例４において、テーブル４３ａ−４の項目に格納される動作は、フラグがオンの場合は１、フラグがオフの場合は０となる２つの有限な選択肢を含む。
【０２２９】
シミュレーション部３４ａ−４は、試験対象であるプロセッサ１２ｂに係る機種依存項目の動作シミュレーションに際して、テーブル４３ａ−４を参照してシミュレーション部３４ａ−４の動作を決定する。シミュレーション部３４ａ−４は、テーブル４３ａ−４を参照することにより、試験対象であるプロセッサ１２ｂに適応したシミュレーションを行う。実施例４におけるプロセッサ１２ａの機種依存動作は、ｃｏｍｐａｒｅ命令アクセス例外認識である。
【０２３０】
シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令を実行後、アクセス例外認識による割込みが発生した場合、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外が認識されることを示すフラグをオンする。シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令を実行後、アクセス例外認識による割込みが発生しなかった場合、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外が認識されることを示すフラグをオフにする。次いで、シミュレーション部３４ａ−４は、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスにアクセス例外が認識されるか判断し、命令シミュレートを行う。
【０２３１】
図１９は、実施例４に係るプロセッサ試験装置２０ａの事前動作確認を示すフローチャートである。なお、図１６において、実施例１に係る図１〜図６、実施例２の図１０〜図１１、実施例３の図１５〜図１７、及び図１８で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０２３２】
図１９に示すフローチャートには、ＯＰ１５３における１個の条件分岐処理がある。この条件分岐処理により、図１９に示すフローチャートには、以下のような処理の組合せがある。
【０２３３】
事前動作確認フローチャート１：ＯＰ１５３がＮＯ
【０２３４】
事前動作確認フローチャート２：ＯＰ１５３がＹＥＳ
【０２３５】
以下、上記２つのフローチャートについて、図１９を用いて説明する。なお、実施例４において、実施例１、実施例２及び実施例３と同様に、プロセッサ１２ａが、プログラム３０ａを実行することにより、第１処理部３１ａ〜第７処理部４０ａが動作可能になる。以下の記載においては、実施例１、実施例２及び実施例３と同様に、冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０２３６】
＜事前動作確認フローチャート１：ＯＰ１５３がＮＯ＞
図１９において、事前確認部３６ａ−４は、ｃｏｍｐａｒｅ命令が実行されるレジスタ１２ａ−２に格納されているオペランドｏｐ１と、メモリとして機能する主記憶装置１１ａに格納されているオペランドｏｐ２にそれぞれアクセスする。次いで、事前確認部３６ａ−４は、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスに無効ページを設定する（ＯＰ１５１）。
【０２３７】
事前確認部３６ａ−４は、レジスタ１２ａ−２に格納されているオペランドｏｐ１と、主記憶装置１１ａに格納されているオペランドｏｐ２とを比較するｃｏｍｐａｒｅ命令を実行する（ＯＰ１５２）。事前確認部３６ａ−４は、ｃｏｍｐａｒｅ命令を実行した後、無効ページ保護による割込みが発生したか判断する（ＯＰ１５３）。
【０２３８】
事前動作確認フローチャート１の場合、無効ページ保護による割込みが発生しないため（ＯＰ１５３  ＮＯ）、第４処理部３７ａ−４は、テーブル４３ａ−４のｃｏｍｐａｒｅ命令アクセス例外認識を示すフラグをオフにする（ＯＰ１５４）。即ち、第４処理部３７ａ−４は、ｃｏｍｐａｒｅ命令アクセス例外認識を示すフラグを０に設定する。
【０２３９】
＜事前動作確認フローチャート２：ＯＰ１５３がＮＯ＞
事前確認部３６ａ−４は、レジスタ１２ａ−２に格納されているオペランドｏｐ１と、主記憶装置１１ａに格納されているオペランドｏｐ２とを比較するｃｏｍｐａｒｅ命令を実行する（ＯＰ１５２）。事前確認部３６ａ−４は、ｃｏｍｐａｒｅ命令を実行した後、無効ページ保護による割込みが発生したか判断する（ＯＰ１５３）。
【０２４０】
事前動作確認フローチャート２の場合、無効ページ保護による割込みが発生するため（ＯＰ１５３  ＹＥＳ）、第４処理部３７ａ−４は、テーブル４３ａ−４のｃｏｍｐａｒｅ命令アクセス例外認識を示すフラグをオンにする（ＯＰ１５５）。即ち、第４処理部３７ａ−４は、ｃｏｍｐａｒｅ命令アクセス例外認識を示すフラグを１に設定する。
【０２４１】
図２０は、実施例４に係るプロセッサ試験装置２０ａの命令シミュレーション動作を示すフローチャートである。なお、図２０において、実施例１に係る図１〜図６、実施例２の図１０〜図１１、実施例３の図１５〜図１７、及び実施例４の図１８〜図１９で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０２４２】
図２０に示すフローチャートには、ＯＰ１６２、ＯＰ１６３の２つの条件分岐処理がある。これらの条件分岐処理により、図２０に示すフローチャートには、以下のような処理の組合せがある。
【０２４３】
命令シミュレーション動作フローチャート１：ＯＰ１６２がＹＥＳ、ＯＰ１６３がＹＥＳ
【０２４４】
命令シミュレーション動作フローチャート２：ＯＰ１６２がＮＯ
【０２４５】
命令シミュレーション動作フローチャート３：ＯＰ１６２がＹＥＳ、ＯＰ１６３がＮＯ
【０２４６】
以下、上記３つのフローチャートについて、図２０を用いて説明する。以下の記載においては、図１９と同様に冗長記載を回避するために、第１処理部３１ａが第２処理部３２ａ〜第７処理部４０ａに処理の指示を出す記載を省略する。
【０２４７】
＜命令シミュレーション動作フローチャート１：ＯＰ１６２がＹＥＳ、ＯＰ１６３がＹＥＳ＞
シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令動作のシミュレートを実行する（ＯＰ１６１）。シミュレーション部３４ａ−４は、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンか判断する（ＯＰ１６２）。
【０２４８】
命令シミュレーション動作フローチャート１の場合、ｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンであるため（ＯＰ１６２  ＹＥＳ）、シミュレーション部３４ａ−４は、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスにアクセス例外が認識されるか判断する（ＯＰ１６３）。命令シミュレーション動作フローチャート１の場合、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスにアクセス例外が認識されるため（ＯＰ１６３  ＹＥＳ）、シミュレーション部３４ａ−４は、アクセス例外のシミュレートを行う（ＯＰ１６４）。
【０２４９】
＜命令シミュレーション動作フローチャート２：命令シミュレーション動作フローチャート２：ＯＰ１６２がＮＯ＞
シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令動作のシミュレートを実行する（ＯＰ１６１）。シミュレーション部３４ａ−４は、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンか判断する（ＯＰ１６２）。命令シミュレーション動作フローチャート２の場合、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンでは無いため（ＯＰ１６２  ＮＯ）、シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令動作のシミュレートを終了する。
【０２５０】
＜命令シミュレーション動作フローチャート３：ＯＰ１６２がＹＥＳ、ＯＰ１６３がＮＯ＞
シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令動作のシミュレートを実行する（ＯＰ１６１）。シミュレーション部３４ａ−４は、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンか判断する（ＯＰ１６２）。命令シミュレーション動作フローチャート３の場合、テーブル４３ａ−４のｃｏｍｐａｒｅ命令のアクセス例外認識を示すフラグがオンであるため（ＯＰ１６２  ＹＥＳ）、シミュレーション部３４ａ−４は、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスにアクセス例外が認識されるか判断する（ＯＰ１６３）。命令シミュレーション動作フローチャート３の場合、オペランドｏｐ１及びオペランドｏｐ２が最初に不一致となるバイト以降のデータが格納されている主記憶装置１１ａのアドレスにアクセス例外が認識されないため（ＯＰ１６３  ＮＯ）、シミュレーション部３４ａ−４は、ｃｏｍｐａｒｅ命令動作のシミュレートを終了する。
【０２５１】
実施例４に開示の技術によれば、実施例４に係るプロセッサ試験装置２０ａは、予め機種依存動作としてｃｏｍｐａｒｅ命令アクセス例外認識を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ１２ｂの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ１２ｂの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ１２ｂの動作検証の精度を向上させることができる。
【０２５２】
（付記１）
プロセッサの動作を検証するプロセッサの動作検証方法であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を含むことを特徴とするプロセッサの動作検証方法。
（付記２）
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記１記載のプロセッサの動作検証方法。
（付記３）
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記１記載のプロセッサの動作検証方法。
（付記４）
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が０であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記３記載のプロセッサの動作検証方法。
（付記５）
前記試験命令列は、
複数のプロセッサのうち少なくとも１つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記１記載のプロセッサの動作検証方法。
（付記６）
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第１データに含まれる第１の複数のバイトと、前記プロセッサに接続されるメモリに格納される第２データに含まれる第２の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第１の複数のバイト及び前記第２の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第１の複数のバイトと残りの前記第２の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記１記載のプロセッサの動作検証方法。
（付記７）
プロセッサの動作を検証するプロセッサの動作検証装置であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する第１取得部と、
前記プロセッサで前記試験命令列を実行させて結果値を取得する第２取得部と、
前記第１取得部で取得された前記期待値及び前記第２取得部で取得された前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する判定部と、
を有することを特徴とするプロセッサの動作検証装置。
（付記８）
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記７記載のプロセッサの動作検証装置。
（付記９）
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記７記載のプロセッサの動作検証装置。
（付記１０）
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が０であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記９記載のプロセッサの動作検証装置。
（付記１１）
前記試験命令列は、
複数のプロセッサのうち少なくとも１つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記７記載のプロセッサの動作検証装置。
（付記１２）
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第１データに含まれる第１の複数のバイトと、前記プロセッサに接続されるメモリに格納される第２データに含まれる第２の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第１の複数のバイト及び前記第２の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第１の複数のバイトと残りの前記第２の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記７のプロセッサの動作検証装置。
（付記１３）
プログラムを実行するプロセッサの動作を検証するプロセッサの動作検証プログラムであって、
コンピュータに、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を実行させることを特徴とするプロセッサの動作検証プログラム。
（付記１４）
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記１３記載のプロセッサの動作検証プログラム。
（付記１５）
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記１３記載のプロセッサの動作検証プログラム。
（付記１６）
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が０であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記１５記載のプロセッサの動作検証プログラム。
（付記１７）
前記試験命令列は、
複数のプロセッサのうち少なくとも１つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記１３記載のプロセッサの動作検証プログラム。
（付記１８）
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第１データに含まれる第１の複数のバイトと、前記プロセッサに接続されるメモリに格納される第２データに含まれる第２の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第１の複数のバイト及び前記第２の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第１の複数のバイトと残りの前記第２の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記１３記載のプロセッサの動作検証プログラム。
【符号の説明】
【０２５３】
１１ａ  主記憶装置
１２ａ  プロセッサ
１２ａ−１  キャッシュメモリ
１２ａ−２  レジスタ
１２ｂ  プロセッサ
１３ａ  バスインタフェースユニット
１４ａ  補助記憶装置
１５ａ  ディスクインタフェース
１６ａ  バス
２０ａ  プロセッサ試験装置
２２ａ  入力装置
２３ａ  出力装置
３０ａ  プログラム
３１ａ  第１処理部
３２ａ  第２処理部
３３ａ  第３処理部
３４ａ、３４ａ−１、３４ａ−２、３４ａ−３、３４ａ−４  シミュレーション部
３５ａ  追加部
３６ａ、３６ａ−１、３６ａ−２、３６ａ−３、３６ａ−４  事前確認部
３７ａ、３７ａ−１、３７ａ−２、３７ａ−３、３７ａ−４  第４処理部
３８ａ  第５処理部
３９ａ  第６処理部
４０ａ  第７処理部
４１ａ、４１ａ−１、４１ａ−２、４１ａ−３、４１ａ−４  第１格納部
４２ａ  第２格納部
４３ａ、４３ａ−１、４３ａ−２、４３ａ−３、４３ａ−４  テーブル
４４ａ、４４ａ−１、４４ａ−２、４４ａ−３、４４ａ−４  固定領域
４５ａ  第３格納部
４６ａ  第４格納部
【図１】
2012099035.tif 000003
【図２】
2012099035.tif 000004
【図３】
2012099035.tif 000005
【図４】
2012099035.tif 000006
【図５】
2012099035.tif 000007
【図６】
2012099035.tif 000008
【図７】
2012099035.tif 000009
【図８】
2012099035.tif 000010
【図９】
2012099035.tif 000011
【図１０】
2012099035.tif 000012
【図１１】
2012099035.tif 000013
【図１２】
2012099035.tif 000014
【図１３】
2012099035.tif 000015
【図１４】
2012099035.tif 000016
【図１５】
2012099035.tif 000017
【図１６】
2012099035.tif 000018
【図１７】
2012099035.tif 000019
【図１８】
2012099035.tif 000020
【図１９】
2012099035.tif 000021
【図２０】
2012099035.tif 000022