(実施例1)
図1から図8を用いて、実施例1を説明する。
図1は、実施例1に係るプロセッサ試験装置20aのハードウェア構成図を示す図である。プロセッサ試験装置20aは、主記憶装置11a、プロセッサ12a、プロセッサ12b、バスインタフェースユニット(BIU)13a、及びディスクインタフェース(DI)15aを有する。
図1に示す例では、プロセッサ12bは、試験対象となる装置である。そのため、プロセッサ試験装置20aが、プロセッサ12bを試験するプロセッサ試験装置20aとして機能する。なお、補助記憶装置14aは、プロセッサ試験装置20aとディスクインタフェース(DI)15aを介して接続される。
主記憶装置11aは、メインメモリ、キャッシュメモリ及びフラッシュメモリを含み、命令やデータを記憶する。メインメモリとしては、SIMM(Single Inline Memory Module)及びDIMM(Dual Inline Memory Module)がある。フラッシュメモリとしては、EPROM(Erasable Programmable Read Only Memory)がある。
プロセッサ12aは、四則演算や論理演算などの演算処理を実行する装置である。プロセッサ12aは、コンパイルプログラムを実行することで、プログラミング言語で書かれたプログラムを、プロセッサ12aが直接実行可能な機械語でコード化された命令に変換する機能を有する。プロセッサ12aは、機械語でコード化された命令を主記憶装置11aから読み出す。プロセッサ12aは、プログラム実行時に機械語でコード化された命令にしてプロセッサ12a内部のレジスタ12a−2に格納する。プロセッサ12aは、レジスタ12a−2に格納された命令を実行することにより、上記演算処理を実行して各種の計算や制御を行うことができる。
プロセッサ12aは、キャッシュメモリ12a−1及びレジスタ12a−2を有する。キャッシュメモリ12a−1は、主記憶装置11aに格納されるデータの一部を保持することにより、プロセッサ12aの演算速度と主記憶装置11aからのデータ読出し速度の速度差を埋めるために用いる高速小容量メモリである。なお、キャッシュメモリ12a−1は、プロセッサ12aの外部に配置した別装置としても良い。レジスタ12a−2は、プロセッサ12aの計算結果を一時的に保持し、主記憶装置11aを読み書きするときのアドレスを保持するときに使用する記憶装置である。又、レジスタ12a−2は、プロセッサ12a、入力装置22a又は出力装置23aの動作状態を保持するときに使用する記憶装置である。レジスタ12a−2は、記憶素子で実装可能であるため、動作が極めて高速であるが、キャッシュメモリ12a−1と比較して容量は小さい。
プロセッサ試験装置20aは、プロセッサ12aを試験するために、補助記憶装置14aに格納されたプログラム30aをプロセッサ12aに実行させる。プロセッサ12aは、プログラム30aを実行することにより、後述する試験命令列を作成する。次に、プロセッサ12aは、作成した試験命令列を実行することにより、プロセッサ12aの先行制御方式に係る試験を行う。
バスインタフェースユニット(BIU)13aは、主記憶装置11a、プロセッサ12a、プロセッサ12b、及びディスクインタフェース(DI)15aと接続されるチップセットである。バスインタフェースユニット13aは、AGP(Accelerated Graphics Port)又はPCI(Peripheral Component Interconnect) Expressなどの規格に従って機能する制御回路を含む。バスインタフェースユニット13aは、さらに、PCIバス、IDE(Integrated Drive Electronics)、キーボードポート、マウスポート、USB(Universal Serial Bus)などの回路を含む。バスインタフェースユニット13aは、バス16aを介してプロセッサ試験装置20aの外部に配置される入力装置22a及び出力装置23aに接続される。なお、バスインタフェースユニット13aは、バス16aに接続される対象機器の通信速度に対応して高速通信用及び低速通信用に分けた2つ以上のチップセットとしても良い。
入力装置22aは、プロセッサ試験装置20aに対して情報を出力するキーボード又はマウスである。出力装置23aは、プロセッサ試験装置20aから処理状況や処理結果を出力する対象となるディスプレイ又はプリンタである。
補助記憶装置14aは、磁気ディスクドライブ、フラッシュメモリのような不揮発性メモリを用いたSSD(Solid State Drive)、又は、光学ディスクドライブである。補助記憶装置14aは、磁気ディスク又は光ディスクの記憶媒体として、データを読出し又は記録する。この場合、プロセッサ12aは、後述するプログラム30aを記録する補助記憶装置14aからプログラム30aを読み出し、プログラム30aを上記磁気ディスクドライブやSSD等に格納する。なお、プログラム30aは、図2を参照して説明する。
ディスクインタフェース(DI)15aは、プロセッサ12aと補助記憶装置14aとを接続する接続用回路である。ディスクインタフェース15aは、例えば、Serial ATA(Advanced Technology Attachment)、SCSI(Small Computer System Interface)、及びFC(Fibre Channel)等の規格に従って設計される。
図2は、実施例1に係るプロセッサ試験装置20aの機能構成図を示す図である。なお、図1に示すプロセッサ試験装置20aにおいて、図1で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
プロセッサ12aは、プログラム30aにより第1処理部31a、第2処理部32a、第3処理部33a、シミュレーション部34a、追加部35a、事前確認部36a、第4処理部37a、第5処理部38a、第6処理部39a、及び第7処理部40aとして動作する。
また、主記憶装置11aは、第1格納部41a、第2格納部42a、テーブル43a、固定領域44a、第3格納部45a、及び第4格納部46aとして動作する。
第1格納部41aは、第3処理部33aにより生成された試験命令列を格納する。第2格納部42aは、追加部35aにより生成された期待値を格納する。テーブル43aは、図5を参照して後述するように、プロセッサ12aの論理仕様から機種依存となる項目を抽出した機種依存動作を含む機種依存項目が予め格納されている。
機種依存動作は、プロセッサ12aの論理仕様において、プロセッサ12aの動作が不確定である試験項目に対応する動作のことをいう。実際に、シミュレーション部34aによってプロセッサ12aのシミュレーションを実行してみると、試験対象となるプロセッサ12bの論理障害及び装置故障を原因とする場合の他に、論理仕様における機種依存の動作が原因となって結果値と期待値の不一致が生じる場合がある。つまり、所定の試験命令列を実行した場合、試験者には想定できない機種依存の動作が発生し、同じ論理仕様であっても機種の違うプロセッサ同士では、異なる試験命令列の実行動作が行われる可能性がある。このような所定の試験命令列に対応するプロセッサ12aの動作を、機種依存動作という。
固定領域44aは、第4処理部37aにより生成された割込みハンドラを格納する。割り込みハンドラの説明は後述する。第3格納部45aは、プロセッサ12bにより生成された結果値を格納する。第4格納部46aは、プロセッサ12bにより生成されたエラーログを格納する。
プロセッサ12bは、第5処理部38aによる実行指示に従って、主記憶装置11aに格納された試験命令列を実行する。プロセッサ12bは、試験命令列を実行して取得した結果値を第3格納部45aに格納する。プロセッサ12bは、試験命令列が正しく実行されないとき、第4格納部46aにエラーログを出力する。
プログラム30aは、第1処理部31a、第2処理部32a、第3処理部33a、シミュレーション部34a、追加部35a、事前確認部36a、第4処理部37a、第5処理部38a、第6処理部39a、及び第7処理部40aの各処理をプログラミング言語で記述したものである。プロセッサ12aは、プログラム30aを実行することにより、第1処理部31a、第2処理部32a、第3処理部33a、シミュレーション部34a、追加部35a、事前確認部36a、第4処理部37a、第5処理部38a、第6処理部39a、及び第7処理部40aの各処理を実行することができる。
第1処理部31aは、第2処理部32a、第3処理部33a、シミュレーション部34a、追加部35a、事前確認部36a、第4処理部37a、第5処理部38a、第6処理部39a、及び第7処理部40aの各処理を制御する。また、第1処理部31aは、第2処理部32a、第3処理部33a、シミュレーション部34a、追加部35a、事前確認部36a、第4処理部37a、第5処理部38a、第6処理部39a、及び第7処理部40aに対してイベントを共有させるための制御を行う。
第2処理部32aは、擬似乱数を生成するアルゴリズムにより乱数を生成する。第1処理部31aは、第2処理部32aによって、生成された乱数を第3処理部33aに出力させる。
第3処理部33aは、第2処理部32aで発生した乱数に基づいて、ランダム生成された試験命令列を生成する。第1処理部31aは、第2処理部32aが乱数を出力したことを確認する。次いで、第1処理部31aは、第3処理部33aに試験命令列を生成させるために、第3処理部33aに生成された乱数を引き渡す。
第3処理部33aは、第2処理部32aで発生した乱数に基づいて、第1格納部41aに格納されたプロセッサ試験用の試験命令列を選択する。又、第3処理部33aは、第2処理部32aから引き渡された乱数に基づいて、第1格納部41aに格納された不図示のオペランドテーブルからオペランドを選択する。
第3処理部33aは、選択された試験命令列を第1格納部41aに格納する。なお、第3処理部33aにより生成された試験命令列は、シミュレーション部34aにより、第5処理部38aが実行するための試験命令列に変更される。
シミュレーション部34aは、第3処理部33aより生成された試験命令列を実行して期待値を取得する。シミュレーション部34aは、取得した期待値を第2格納部42aに格納させる。
追加部35aは、テーブル43aから機種依存項目を取得して機種依存項目に関する試験項目を追加する。追加部35aによって試験項目を追加することにより、予め機種依存動作を考慮した期待値を取得することが可能になる。従って、予め機種依存動作を考慮した期待値を用いて、後述する第5処理部38aによりプロセッサ12bの動作検証を行うことができる。
事前確認部36aは、シミュレーション部34aにより機種依存となる試験命令列を実行し、機種依存となる動作を事前確認する。
第4処理部37aは、テーブル43aに格納された割込みハンドラを取得する。割込みハンドラとは、所定の条件が満たされた場合に発生する割り込みにより起動される処理である。実施例1における所定の条件とは、例えば、プロセッサ12aが、プロセッサ12aのキャッシュメモリ12a−1の無効ページを指定して命令を実行することである。無効ページとは、例えば、アクセス対象のデータが、図1に前述したキャッシュメモリ12a−1に存在しないことを示すものである。第4処理部37aが無効ページを指定して命令を実行すると、アクセス例外による割込みが発生するため、割込みハンドラが起動する。第1処理部31aは、第4処理部37aによって、起動された割込みハンドラを、第1格納部41aに格納された試験命令列の後続命令として追加させる。
第5処理部38aは、試験対象となるプロセッサ12aの先行制御方式を用いて、試験命令列を実行する機能を有する。第3処理部33aにより所定の数だけ有する試験命令列が生成されたことを確認すると、第1処理部31aは第5処理部38aに試験命令列を実行させる。第5処理部38aは、プロセッサ12bを実行させて得られた結果値を、プロセッサ12bによって第3格納部45aに格納させる。プロセッサ12bによって試験命令列が正しく実行されない場合、第5処理部38aは、プロセッサ12bによって第4格納部46aにエラーログを出力させる。
第6処理部39aは、第2格納部42aに格納された期待値と、第3格納部45aに格納された結果値とを比較する機能を有する。第1処理部31aは、第6処理部39aによって、期待値及び結果値の比較結果を出力装置23aに出力させる。期待値及び結果値が一致する場合、第6処理部39aは、プロセッサ12bによってシミュレーション部34aが先行して実行した試験命令列を正しく実行したことを示す結果を、出力装置23aに出力する。期待値及び結果値が不一致である場合、第6処理部39aは、エラーログを第7処理部40aに出力する。
第7処理部40aは、第6処理部39aから期待値及び結果値が不一致である旨の通知を取得すると、第7処理部40aに格納された1つ又はそれ以上のエラーログを、出力装置23aに出力する処理を実行する。
図3は、実施例1に係るプロセッサ試験装置20aが行う試験命令列の実行処理のフローチャートである。なお、実施例1において、プロセッサ12aが、プログラム30aを実行することにより、第1処理部31a〜第7処理部40aとして処理を開始する。第1処理部31aは、事前動作確認フローチャートにおける第2処理部32a〜第7処理部40aの実行タイミングを管理するために、処理を担当する第2処理部32a〜第7処理部40aに実行指示を行う。以下の記載においては、冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
追加部35aは、試験命令列の実行処理を行う前に、テーブル43aから、プロセッサ12aの機種依存動作を含む機種依存項目を取得する(OP1)。
第3処理部33aは、追加部35aによって取得したプロセッサ12aの機種依存動作を含む機種依存項目を反映させて、プロセッサ12aを試験するための試験命令列を生成する(OP2)。第3処理部33aは、生成した試験命令列を、第1格納部41aに格納する。
シミュレーション部34aは、第1格納部41aに格納された機種依存項目が反映された試験命令列を実行して期待値を取得する(OP3)。シミュレーション部34aは、取得した期待値を、第2格納部42aに格納する。
第5処理部38aは、試験対象となるプロセッサ12bに、同じ機種依存項目が反映された試験命令列を実行させ、結果値を取得する(OP4)。第5処理部38aは、プロセッサ12bによって取得された結果値を、プロセッサ12bによって第3格納部45aに格納させる。
第6処理部39aは、第2格納部42aに格納された期待値、及び第3格納部45aに格納された結果値が一致するか否か比較する(OP5)。期待値及び結果値が一致する場合(OP5 YES)、第1処理部31aは、プロセッサ試験装置20aによるプロセッサ12bの試験を終了させるか判断する(OP7)。プロセッサ試験装置20aによるプロセッサ12bの試験を終了させると判断した場合(OP7 YES)、第1処理部31aは、プロセッサ試験装置20aが行う試験命令列の実行処理を終了させる。第1処理部31aは、プロセッサ試験装置20aによるプロセッサ12bの試験を終了しないと判断した場合(OP7 NO)、OP2に進む。
なお、OP5において、期待値及び結果値が一致しない場合(OP5 NO)、第6処理部39aは、第7処理部40aに、期待値と結果値とが不一致であるとの通知、即ちエラーログを出力する(OP6)。エラーログを出力した後、第1処理部31aは、OP7に進む。このように、実施例1に係るプロセッサ試験装置20aは、予め機種依存動作を考慮した期待値を使用してプロセッサ12bの動作検証を行うため、プロセッサ12bの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ12bの動作検証の精度を向上させることができる。
図4は、実施例1に係るプロセッサ試験装置20aの動作を示すフローチャートである。図4は、図3に示す第6処理部39a及び第4格納部46aから第7処理部40aにエラーログが出力された時の処理を示すフローチャートである。なお、図4において、図1〜図3で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
第6処理部39a、又は第4格納部46aから第7処理部40aにエラーログが出力された時、第7処理部40aは、エラーの原因は試験対象であるプロセッサ12bの障害であるか判断する(OP11)。エラーの原因はプロセッサ12bの障害であると判断した時(OP11 YES)、第7処理部40aは、プロセッサ12bの障害の修正が必要である旨のエラーログを出力装置23aに出力する(OP12)。一方、エラーの原因はプロセッサ12bの障害では無いと判断した時(OP11 NO)、第7処理部40aは、シミュレーション部34aのバグの修正が必要である旨のエラーログを出力装置23aに出力する(OP13)。
図5は、実施例1に係るプロセッサ試験装置20aの処理説明図である。なお、図5に示すプロセッサ試験装置20aの処理説明図において、図1〜図4で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
テーブル43aは、プロセッサ12aの論理仕様から機種依存動作に依存する項目を抽出したものを格納する。テーブル43aに格納された機種依存項目は、例えば、move命令オペランドアクセス順序、divide命令例外順序、compare−and−swap書き戻し、及びcompare命令アクセス例外認識等が挙げられる。これら論理依存動作に依存する項目は、プロセッサ12aの論理仕様の中で使用される代表的なものである。
また、各機種依存項目には、2つ以上の有限な選択肢が予め設定される。例えば、機種依存項目がmove命令オペランドアクセス順序の場合、オペランドアクセス順序はオペランドop1又はオペランドop2のうち、どちらのオペランドopのアクセス例外が優先するか二種類の動作種別が設定される。データ例外、除算例外、又は書込み保護例外を含む複数の例外条件を有する命令は、オペランドアクセス順序の優先順位である。なお、プロセッサの論理仕様により定義された動作がプロセッサに実装されている。従って、型番及び版数が異なる様々な機種のプロセッサであっても、論理仕様が同じであれば、同じシミュレータを使用してシミュレーションが実行できるはずであると考えられてきた。しかし、実際にシミュレーションを実行してみると、論理障害及びプロセッサの装置故障を原因とする場合の他に、論理仕様における機種依存の動作が原因となって結果値と期待値の不一致が生じる場合があることがわかってきた。そのため、これらの各機種依存動作をプロセッサ12aで実行した場合、同じ論理仕様であっても機種の違うプロセッサの同士では、異なる試験命令列の実行動作が行われる可能性がある。
事前確認部36aは、プロセッサ12aの論理仕様から機種に依存する動作を推測し、可能性が高いいくつかの機種依存項目をテーブル43aから選択し、シミュレーション部34aに実行させる。事前確認部36aは、プロセッサ12aにより実行された確認項目の結果を、テーブル43aに反映させる。
テーブル43aに格納されている事前確認部36aにより抽出された各機種依存項目には、前述したように2つ以上の有限な選択肢が予め設定される。即ち、各機種依存項目には、予測可能な複数の選択肢が設定される。予測可能な複数の選択肢を設定することにより、プロセッサ12aの機種依存項目に伴う期待値を用いて、後述する第5処理部38aによりプロセッサ12bの動作検証を行うことができる。なお、事前確認部36aの確認項目は、機種依存項目に係る命令が静的に記述されたものである。事前確認部36aは、静的に記述された命令をプロセッサ12aに実行させることで、プロセッサ12aの機種依存項目の動作を調べる。そして、事前確認部36aによる確認結果に基づいて、各機種依存項目に対してテーブル43aに動作種別が設定される。又、事前確認部36aにより抽出された全ての機種依存項目の確認結果が予め設定された動作種別以外であれば、フラグが設定されず、選択肢以外の動作結果はプロセッサ12aの障害であると判定される。
シミュレーション部34aは、試験対象であるプロセッサ12bに係る機種依存項目の動作シミュレーションに際して、テーブル43aを参照してシミュレーション部34aの動作内容を決定する。シミュレーション部34aは、テーブル43aを参照することにより、試験対象であるプロセッサ12bに適応したシミュレーションを行うことができる。
図6は、実施例1に係るプロセッサ試験装置20aの処理説明図である。なお、図6に示すプロセッサ試験装置20aの処理説明図において、図1〜図5で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例1におけるプロセッサ12aの機種依存動作は、以下に説明するmove命令オペランドアクセス順序である。
図6において、事前確認部36a−1は、例えば、2つのオペランドを持つ命令のオペランドアクセス順序を確認する。事前確認部36a−1は、メモリとして機能する主記憶装置11aの複数アドレス間におけるデータ移動命令(以下、move命令という)において、オペランドop1のアドレス及びオペランドop2のアドレスに、それぞれ異なる無効ページを指定してmove命令を実行する。無効ページは、アクセス対象のデータが、第1格納部41a−1に格納されていないことを示す。無効ページは、無効データを保持する。
第4処理部37a−1は、第1格納部41a−1に存在する無効ページにアクセスすることにより、アクセス例外による割込みハンドラを起動させる。割込みハンドラは、第1格納部41a−1上の無効ページにアクセスした後、オペランドop1又はオペランドop2のうち、どちらのオペランドが先にアクセス対象となるか調べる。第1処理部31aは、第4処理部37a−1によって、起動された割込みハンドラを、第1格納部41a−1に格納された試験命令列の後続命令として追加させる。
テーブル43a−1は、割込みハンドラの起動と同時に固定領域44a−1に割込みステータスとして割込み原因コードと割込み原因アドレスを格納する。第4処理部37a−1によって起動された割込みハンドラは、割込み原因コードと割込み原因アドレスを基にどちらのオペランドに起因するアクセス例外であるか判断する。割込みハンドラは、テーブル43a−1の該当エントリに例外要因となったオペランドopを優先順位1位として設定し、例外要因とならなかったオペランドopを優先順位2位として設定する。
第4処理部37a−1によりアクセス例外による割込みハンドラが起動された後、テーブル43a−1には抽出した機種依存項目の動作種別が設定される。実施例1に係るテーブル43a−1の動作の欄に、move命令オペランドアクセス順序が設定される。テーブル43a−1の項目に設定される動作種別は、オペランドop1又はオペランドop2からなる2つの有限な選択肢を含む。
シミュレーション部34a−1は、試験対象であるプロセッサ12bに係る機種依存項目の動作シミュレーションに際して、テーブル43a−1を参照してシミュレーション部34a−1の動作内容を決定する。シミュレーション部34a−1は、テーブル43a−1を参照して、試験対象であるプロセッサ12bに適応したシミュレーションを行う。実施例1におけるプロセッサ12aの機種依存動作は、move命令オペランドアクセス順序である。
実施例1において、シミュレーション部34a−1は、オペランドop1又はオペランドop2のうち、どちらのオペランドopのアクセス例外が優先するかを判断する。次いで、シミュレーション部34a−1は、第1格納部41a−1に格納されたmove命令において、オペランドop1のアドレス及びオペランドop2のアドレスにそれぞれ異なる無効ページを指定し、どちらのオペランドopのアクセス例外が優先するかを判断する命令シミュレーションを実行する。実施例1に係るアクセス例外条件とは、オペランドopがメモリとして機能する主記憶装置11aのアドレスの範囲外に存在する場合、外部記憶にオペランドopがスワップされて主記憶装置11aに格納されていない場合、又は主記憶装置11aに対するアクセス禁止の保護が設定されているために、主記憶装置11aに対して読み書きできない場合である。
シミュレーション部34a−1は、move命令の対象となる2つのオペランドop1、オペランドop2のうち、オペランドop1にアクセス例外が存在するか調べる。シミュレーション部34a−1は、アクセス例外条件が存在する場合、対応するテーブル43a−1を参照して、オペランドop1にアクセス例外条件が存在することを示すフラグがオンであるか否か判断する。次いで、シミュレーション部34a−1は、move命令のオペランドop2のアクセス例外の有無を調べる。アクセス例外条件が存在する場合、シミュレーション部34a−1は、テーブル43a−1を参照して、オペランドop2にアクセス例外条件が存在することを示すフラグがオンであるか否か判断する。このようにして、シミュレーション部34a−1は、フラグの状態に応じてオペランドop1のアクセス例外のシミュレーションを行う。または、シミュレーション部34a−1は、オペランドop2のアクセス例外のシミュレーションを行う。または、シミュレーション部34a−1は、move命令のメモリ間移動のシミュレーションを行う。そして、機種依存項目を考慮してシミュレートした期待値を求めることができる。
図7は、実施例1に係るプロセッサ試験装置20aの事前動作確認を示すフローチャートである。なお、図7において、図1〜図6で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図7に示すフローチャートには、OP33、OP34、OP37の3つの条件分岐処理がある。これらの条件分岐処理により、図7に示すフローチャートには、以下のような処理の組合せがある。
事前動作確認フローチャート1:OP33がYES、OP34がYES
事前動作確認フローチャート2:OP33がNO
事前動作確認フローチャート3:OP33がYES、OP34がNO、OP37がYES
事前動作確認フローチャート4:OP33がYES、OP34がNO、OP37がNO
以下、上記4つのフローチャートについて、図7を用いて説明する。なお、図7において、図1〜図6で説明した構成と同様の構成については同一の符号を付し、説明を省略する。
<事前動作確認フローチャート1:OP33がYES、OP34がYES>
第3処理部33aは、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP31)。事前確認部36a−1は、アドレス1にオペランドop1を設定し、アドレス2にオペランドop2を設定して、move命令を実行する(OP32)。事前確認部36a−1は、無効ページによる割込みが発生したか判断する(OP33)。
事前動作確認フローチャート1の場合、無効ページによる割込みが発生するため(OP33 YES)、事前確認部36a−1は、割込み原因アドレスがアドレス1であるか判断する(OP34)。事前動作確認フローチャート1の場合、割込み原因アドレスがアドレス1であるため(OP34 YES)、第4処理部37a−1は、テーブル43a−1のmove命令オペランドアクセス順序の1位にオペランドop1を設定する(OP35)。次いで、第4処理部37a−1は、テーブル43a−1のmove命令オペランドアクセス順序の2位にオペランドop2を設定する(OP35)。
<事前動作確認フローチャート2:OP33がNO>
事前確認部36a−1は、アドレス1にオペランドop1を設定し、アドレス2にオペランドop2を設定して、move命令を実行する(OP32)。事前確認部36a−1は、無効ページによる割込みが発生したか判断する(OP33)。事前動作確認フローチャート2の場合、無効ページによる割込みが発生しないため(OP33 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP36)。
<事前動作確認フローチャート3:OP33がYES、OP34がNO、OP37がYES>
事前確認部36a−1は、アドレス1にオペランドop1を設定し、アドレス2にオペランドop2を設定して、move命令を実行する(OP32)。事前確認部36a−1は、無効ページによる割込みが発生したか判断する(OP33)。
事前動作確認フローチャート3の場合、無効ページによる割込みが発生するため(OP33 YES)、事前確認部36a−1は、割込み原因アドレスがアドレス1であるか判断する(OP34)。事前動作確認フローチャート3の場合、割込み原因アドレスがアドレス1ではないため(OP34 NO)、事前確認部36a−1は、割込み原因アドレスがアドレス2であるか判断する(OP37)。事前動作確認フローチャート3の場合、割込み原因アドレスがアドレス2であるため(OP37 YES)、第4処理部37a−1は、テーブル43a−1のmove命令オペランドアクセス順序の1位にオペランドop2を設定する(OP38)。次いで、第4処理部37a−1は、テーブル43a−1のmove命令オペランドアクセス順序の2位にオペランドop1を設定する(OP38)。
<事前動作確認フローチャート4:OP33がYES、OP34がNO、OP37がNO>
事前確認部36a−1は、アドレス1にオペランドop1を設定し、アドレス2にオペランドop2を設定して、move命令を実行する(OP32)。事前確認部36a−1は、無効ページによる割込みが発生したか判断する(OP33)。
事前動作確認フローチャート4の場合、無効ページによる割込みが発生するため(OP33 YES)、事前確認部36a−1は、割込み原因アドレスがアドレス1であるか判断する(OP34)。事前動作確認フローチャート4の場合、割込み原因アドレスがアドレス1ではないため(OP34 NO)、事前確認部36a−1は、割込み原因アドレスがアドレス2であるか判断する(OP37)。事前動作確認フローチャート4の場合、割込み原因アドレスがアドレス2ではないため(OP37 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP36)。
図8は、実施例1に係るプロセッサ試験装置20aの命令シミュレーション動作を示すフローチャートである。なお、図8において、図1〜図7で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図8に示すフローチャートには、OP42、OP43、OP44、OP46、OP49、OP52の6つの条件分岐処理がある。これらの条件分岐処理により、図8に示すフローチャートには、以下のような処理の組合せがある。
命令シミュレーション動作フローチャート1:OP42がYES、OP46がYES、OP43がNO、OP44がYES
命令シミュレーション動作フローチャート2:OP42がYES、OP46がNO、OP43がNO、OP44がNO、OP52がYES
命令シミュレーション動作フローチャート3:OP42がNO、OP43がYES、OP49がYES、OP44がYES
命令シミュレーション動作フローチャート4:OP42がNO、OP43がYES、OP49がNO、OP44がNO、OP52がYES
命令シミュレーション動作フローチャート5:OP42がNO、OP43がNO、OP44がNO、OP52がNO
以下、上記5つのフローチャートについて、図8を用いて説明する。以下の記載においては、図7と同様に冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<命令シミュレーション動作フローチャート1:OP42がYES、OP46がYES、OP43がNO、OP44がYES>
シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP41)。シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop1に例外条件があるか判断する(OP42)。
命令シミュレーション動作フローチャート1の場合、第1格納部41a−1に格納されたオペランドop1に例外条件があるため(OP42 YES)、シミュレーション部34a−1は、テーブル43a−1のmove命令オペランドアクセス順序が、オペランドop1が1番目であるか判断する(OP46)。命令シミュレーション動作フローチャート1の場合、move命令オペランドアクセス順序は、オペランドop1が1番目であるため(OP46 YES)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop1が1番目であることを示す動作フラグ1をオンにする(OP47)。
シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop2に例外条件があるか判断する(OP43)。命令シミュレーション動作フローチャート1の場合、オペランドop2に例外条件が存在しないため(OP43 NO)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop1が1番目であることを示す動作フラグ1がオンであるか判断する(OP44)。命令シミュレーション動作フローチャート1の場合、動作フラグ1がオンであるであるため(OP44 YES)、シミュレーション部34a−1は、テーブル43a−1のMOVE命令オペランドアクセス順序の1番目のオペランドop1のアクセス例外をシミュレートする(OP45)。
<命令シミュレーション動作フローチャート2:OP42がYES、OP46がNO、OP43がNO、OP44がYES>
シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP41)。シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop1に例外条件があるか判断する(OP42)。
命令シミュレーション動作フローチャート2の場合、第1格納部41a−1に格納されたオペランドop1に例外条件があるため(OP42 YES)、シミュレーション部34a−1は、テーブル43a−1のmove命令オペランドアクセス順序が、オペランドop1が1番目であるか判断する(OP46)。命令シミュレーション動作フローチャート2の場合、move命令オペランドアクセス順序は、オペランドop1が1番目ではないため(OP46 NO)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop1が2番目であることを示す動作フラグ2をオンにする(OP48)。
シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop2に例外条件があるか判断する(OP43)。命令シミュレーション動作フローチャート2の場合、オペランドop2に例外条件が存在しないため(OP43 NO)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop1が1番目であることを示す動作フラグ1がオンであるか判断する(OP44)。命令シミュレーション動作フローチャート2の場合、動作フラグ1がオンではないため(OP44 NO)、シミュレーション部34a−1は、オペランドop1が2番目であることを示す動作フラグ2がオンであるか判断する(OP52)。命令シミュレーション動作フローチャート2の場合、動作フラグ2がオンであるため(OP52 YES)、シミュレーション部34a−1は、テーブル43a−1のMOVE命令オペランドアクセス順序の2番目のオペランドop2のアクセス例外をシミュレートする(OP53)。
<命令シミュレーション動作フローチャート3:OP42がNO、OP43がYES、OP49がYES、OP44がYES>
シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP41)。シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop1に例外条件があるか判断する(OP42)。命令シミュレーション動作フローチャート3の場合、オペランドop1に例外条件が存在しないため(OP42 NO)、シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop2に例外条件があるか判断する(OP43)。
命令シミュレーション動作フローチャート3の場合、第1格納部41a−1に格納されたオペランドop2に例外条件があるため(OP43 YES)、シミュレーション部34a−1は、テーブル43a−1のmove命令オペランドアクセス順序が、オペランドop2が1番目であるか判断する(OP49)。命令シミュレーション動作フローチャート3の場合、move命令オペランドアクセス順序は、オペランドop2が1番目であるため(OP49 YES)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop2が1番目であることを示す動作フラグ1をオンにする(OP50)。
シミュレーション部34a−1は、テーブル43a−1を参照にして、動作フラグ1がオンであるか判断する(OP44)。命令シミュレーション動作フローチャート3の場合、オペランドop2が1番目であることを示す動作フラグ1がオンであるであるため(OP44 YES)、シミュレーション部34a−1は、テーブル43a−1のMOVE命令オペランドアクセス順序の1番目のオペランドop1のアクセス例外をシミュレートする(OP45)。
<命令シミュレーション動作フローチャート4:OP42がNO、OP43がYES、OP49がNO、OP44がNO、OP52がYES>
シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP41)。シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop1に例外条件があるか判断する(OP42)。命令シミュレーション動作フローチャート4の場合、オペランドop1に例外条件が存在しないため(OP42 NO)、シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop2に例外条件があるか判断する(OP43)。
命令シミュレーション動作フローチャート4の場合、第1格納部41a−1に格納されたオペランドop2に例外条件があるため(OP43 YES)、シミュレーション部34a−1は、テーブル43a−1のmove命令オペランドアクセス順序が、オペランドop2が1番目であるか判断する(OP49)。命令シミュレーション動作フローチャート4の場合、move命令オペランドアクセス順序は、オペランドop2が1番目ではないため(OP49 NO)、シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop2が2番目であることを示す動作フラグ2をオンにする(OP51)。
シミュレーション部34a−1は、テーブル43a−1を参照にして、オペランドop2が1番目であることを示す動作フラグ1がオンであるか判断する(OP44)。命令シミュレーション動作フローチャート4の場合、動作フラグ1がオンではないため(OP44 NO)、シミュレーション部34a−1は、オペランドop2が2番目であることを示す動作フラグ2がオンであるか判断する(OP52)。命令シミュレーション動作フローチャート4の場合、動作フラグ2がオンであるため(OP52 YES)、テーブル43a−1のMOVE命令オペランドアクセス順序の2番目のオペランドop2のアクセス例外をシミュレートする(OP53)。
<命令シミュレーション動作フローチャート5:OP42がNO、OP43がNO、OP44がNO、OP52がNO>
シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2を無効ページに設定する(OP41)。シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop1に例外条件があるか判断する(OP42)。命令シミュレーション動作フローチャート5の場合、オペランドop1に例外条件が存在しないため(OP42 NO)、シミュレーション部34a−1は、第1格納部41a−1に格納されたオペランドop2に例外条件があるか判断する(OP43)。
命令シミュレーション動作フローチャート5の場合、オペランドop2に例外条件が存在しないため(OP43 NO)、シミュレーション部34a−1は、テーブル43a−1を参照にして、動作フラグ1がオンであるか判断する(OP44)。命令シミュレーション動作フローチャート5の場合、動作フラグ1がオンではないため(OP44 NO)、シミュレーション部34a−1は、動作フラグ2がオンであるか判断する(OP52)。命令シミュレーション動作フローチャート5の場合、動作フラグ2がオンでは無いため(OP52 NO)、シミュレーション部34a−1は、主記憶装置11aに設けられたアドレス1、アドレス2間におけるmove命令動作をシミュレートする(OP54)。
実施例1に開示の技術によれば、実施例1に係るプロセッサ試験装置20aは、予め機種依存動作としてmove命令オペランドアクセス順序を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ12bの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ12bの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ12bの動作検証の精度を向上させることができる。
(実施例2)
図9から図14を用いて、実施例2を説明する。
図9は、実施例2に係るプロセッサ試験装置20aの処理説明図である。なお、図9に示すプロセッサ試験装置20aの処理説明図において、実施例1の図1〜図6で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例2におけるプロセッサ12aの機種依存動作は、以下に説明するdivide命令例外順序である。
事前確認部36a−2は、主記憶装置11aに格納された2つのオペランドop1、オペランドop2を格納する。事前確認部36a−2は、オペランドop1、オペランドop2の各データが定式化された除算命令(以下、divide命令)において、1つ目のオペランドのデータop1が不当な形式で、且つ主記憶装置11aへの書込み保護例外条件を設定し、2つ目のオペランドop2の値に0を指定してdivide命令を実行する。
第4処理部37a−2は、主記憶装置11aに格納された2つのオペランドop1、オペランドop2に対してdivide命令を実行すると、データ例外、除算例外、又は書込み保護例外の何れかによる割込みが発生することにより、割込みハンドラを起動させる。割込みハンドラは、第1格納部41a−2に格納された2つのオペランドop1、オペランドop2に対してdivide命令を実行した後、データ例外、除算例外、又は書込み保護例外のうち、どちらの例外条件が先に発生したか調べる。第1処理部31aは、第4処理部37a−2によって、起動された割込みハンドラを、第1格納部41a−2に格納された試験命令列の後続命令として追加させる。
テーブル43a−2は、割込みハンドラの起動と同時に固定領域44a−2に割込みステータスとして割込み原因コードを格納する。第4処理部37a−2によって起動された割込みハンドラは、割込みと同時に固定領域44a−2に割込みステータスとして割込み原因コードが格納される。割込みハンドラは、割込み原因コードを基にいずれの割込みかを判断する。割込みハンドラは、テーブル43a−2の該当エントリに例外要因を優先順位1位として設定する。次いで、割込みハンドラは、残りの2つの例外をdivide命令のオペランドop1、オペランドop2に設定する。次いで、割込みハンドラは、再度divide命令を実行させる。割込みハンドラは、その時の割込みの例外要因を優先順位2位に、残りの例外要因を3位としてテーブル43a−2に設定する。
シミュレーション部34a−2は、試験対象であるプロセッサ12bに係る機種依存項目の動作シミュレーションに際して、テーブル43a−2を参照してシミュレーション部34a−2の動作を決定する。シミュレーション部34a−2は、テーブル43a−2を参照することにより、試験対象であるプロセッサ12bに適応したシミュレーションを行う。実施例2におけるプロセッサ12aの機種依存動作は、divide命令例外順序である。
実施例2において、シミュレーション部34a−2は、試験命令列を実行する際、divide命令に複数の例外要因がある場合、テーブル43a−2を参照して、いずれの例外が優先するかを判断し、divide命令のシミュレーションを行う。最初に、シミュレーション部34a−2は、divide命令のオペランドop1、オペランドop2のデータが不当な形式でないかを調べる。次いで、シミュレーション部34a−2は、不当な形式であればテーブル43a−2を参照して対応するフラグを第2格納部42aに設定する。次いで、シミュレーション部34a−2は、divide命令のオペランドop2の値が0でないか調べる。次いで、シミュレーション部34a−2は、オペランドop2の値が0であればテーブル43a−2を参照して対応するフラグを第2格納部42aに設定する。次いで、シミュレーション部34a−2は、divide命令のオペランドop1の格納が可能であるか調べる。次いで、シミュレーション部34a−2は、格納不可であればテーブル43a−2を参照して対応するフラグを第2格納部42aに設定する。次いで、シミュレーション部34a−2は、設定されたフラグの状態に応じ、対応する例外処理の演算シミュレーションを行う。又は、シミュレーション部34a−2は、divide命令の演算シミュレーションを行う。
図10〜図12は、実施例2に係るプロセッサ試験装置20aの事前動作確認を示すフローチャートである。図10のAに示す処理は図11のAに続いている。図10のBに示す処理は図12のBに続いている。なお、図10〜図12において、実施例1の図1〜図6及び実施例2の図9で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図10〜図12に示すフローチャートには、OP62、OP65、OP69、OP67、OP83、OP85、OP68、OP93、OP95の9つの条件分岐処理がある。これらの条件分岐処理により、図10〜図12に示すフローチャートには、以下のような処理の組合せがある。
事前動作確認フローチャート1:OP62がYES、OP65がYES
事前動作確認フローチャート2:OP62がYES、OP65がNO、OP69がYES
事前動作確認フローチャート3:OP62がYES、OP65がNO、OP69がNO
事前動作確認フローチャート4:OP62がNO、OP67がYES、OP83がYES
事前動作確認フローチャート5:OP62がNO、OP67がYES、OP83がNO、OP85がYES
事前動作確認フローチャート6:OP62がNO、OP67がYES、OP83がNO、OP85がNO
事前動作確認フローチャート7:OP62がNO、OP67がNO、OP68がYES、OP93がYES
事前動作確認フローチャート8:OP62がNO、OP67がNO、OP68がYES、OP93がNO、OP95がYES
事前動作確認フローチャート9:OP62がNO、OP67がNO、OP68がYES、OP93がNO、OP95がNO
事前動作確認フローチャート10:OP62がNO、OP67がNO、OP68がNO
以下、上記10個のフローチャートについて、図10〜図12を用いて説明する。なお、実施例2において、実施例1と同様に、プロセッサ12aが、プログラム30aを実行することにより、第1処理部31a〜第7処理部40aが動作可能になる。以下の記載においては、実施例1と同様に冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<事前動作確認フローチャート1:OP62がYES、OP65がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート1の場合、データ例外による割込みが発生するため(OP62 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、データ例外を設定する(OP63)。事前確認部36a−2は、オペランドop1にメモリ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP64)。事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP65)。事前動作確認フローチャート1の場合、除算例外による割込みが発生するため(OP65 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位に除算例外を、3位に書込み保護例外を設定する(OP66)。
<事前動作確認フローチャート2:OP62がYES、OP65がNO、OP69がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート2の場合、データ例外による割込みが発生するため(OP62 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、データ例外を設定する(OP63)。事前確認部36a−2は、オペランドop1にメモリ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP64)。事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP65)。事前動作確認フローチャート2の場合、除算例外による割込みが発生しないため(OP65 NO)、事前確認部36a−2は、書込み保護例外による割込みが発生したか判断する(OP69)。事前動作確認フローチャート2の場合、書込み保護例外による割込みが発生するため(OP69 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位に書込み保護例外を、3位に除算例外を設定する(OP70)。
<事前動作確認フローチャート3:OP62がYES、OP65がNO、OP69がNO>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート3の場合、データ例外による割込みが発生するため(OP62 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、データ例外を設定する(OP63)。事前確認部36a−2は、オペランドop1にメモリ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP64)。事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP65)。事前動作確認フローチャート3の場合、除算例外による割込みが発生しないため(OP65 NO)、事前確認部36a−2は、書込み保護例外による割込みが発生したか判断する(OP69)。事前動作確認フローチャート3の場合、書込み保護例外による割込みが発生しないため(OP69 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP71)。
<事前動作確認フローチャート4:OP62がNO、OP67がYES、OP83がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート4の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート4の場合、除算例外による割込みが発生するため(OP67 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、除算例外を設定する(OP81)。事前確認部36a−2は、オペランドop1に不当なデータ形式且つメモリ書込み保護を、オペランドop2に正当な値を設定してdivide命令を実行する(OP82)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP83)。事前動作確認フローチャート4の場合、データ例外による割込みが発生するため(OP83 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位にデータ例外を、3位に書込み保護例外を設定する(OP84)。
<事前動作確認フローチャート5:OP62がNO、OP67がYES、OP83がNO、OP85がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート5の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート5の場合、除算例外による割込みが発生するため(OP67 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、除算例外を設定する(OP81)。事前確認部36a−2は、オペランドop1に不当なデータ形式且つメモリ書込み保護を、オペランドop2に正当な値を設定してdivide命令を実行する(OP82)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP83)。事前動作確認フローチャート5の場合、データ例外による割込みが発生しないため(OP83 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP85)。事前動作確認フローチャート5の場合、書込保護例外による割込みが発生するため(OP85 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位に書込み保護例外を、3位にデータ例外を設定する(OP86)。
<事前動作確認フローチャート6:OP62がNO、OP67がYES、OP83がNO、OP85がNO>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート6の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート6の場合、除算例外による割込みが発生するため(OP67 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、除算例外を設定する(OP81)。事前確認部36a−2は、オペランドop1に不当なデータ形式且つメモリ書込み保護を、オペランドop2に正当な値を設定してdivide命令を実行する(OP82)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP83)。事前動作確認フローチャート6の場合、データ例外による割込みが発生しないため(OP83 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP85)。事前動作確認フローチャート6の場合、書込保護例外による割込みが発生しないため(OP85 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP87)。
<事前動作確認フローチャート7:OP62がNO、OP67がNO、OP68がYES、OP93がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート7の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート7の場合、除算例外による割込みが発生しないため(OP67 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP68)。事前動作確認フローチャート7の場合、書込み保護による例外が発生するため(OP68 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、書込み保護例外を設定する(OP91)。事前確認部36a−2は、オペランドop1に不当なデータ形式を、オペランドop2に0を設定してdivide命令を実行する(OP92)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP93)。事前動作確認フローチャート7の場合、データ例外による割込みが発生するため(OP93 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位にデータ例外を、3位に除算例外を設定する(OP94)。
<事前動作確認フローチャート8:OP62がNO、OP67がNO、OP68がYES、OP93がNO、OP95がYES>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート8の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート8の場合、除算例外による割込みが発生しないため(OP67 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP68)。事前動作確認フローチャート8の場合、書込保護による例外が発生するため(OP68 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、書込保護例外を設定する(OP91)。事前確認部36a−2は、オペランドop1に不当なデータ形式を、オペランドop2に0を設定してdivide命令を実行する(OP92)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP93)。事前動作確認フローチャート8の場合、データ例外による割込みが発生しないため(OP93 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP95)。事前動作確認フローチャート8の場合、除算例外による割込みが発生するため(OP95 YES)、第4処理部37a−2は、テーブル43a−2のdivide命令除外順序の2位に除算例外を、3位にデータ例外を設定する(OP96)。
<事前動作確認フローチャート9:OP62がNO、OP67がNO、OP68がYES、OP93がNO、OP95がNO>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート9の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート9の場合、除算例外による割込みが発生しないため(OP67 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP68)。事前動作確認フローチャート9の場合、書込保護による例外が発生するため(OP68 YES)、事前確認部36a−2は、テーブル43a−2のdivide命令例外順序の1位に、書込保護例外を設定する(OP91)。事前確認部36a−2は、オペランドop1に不当なデータ形式を、オペランドop2に0を設定してdivide命令を実行する(OP92)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP93)。事前動作確認フローチャート9の場合、データ例外による割込みが発生しないため(OP93 YES)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP95)。事前動作確認フローチャート9の場合、除算例外による割込みが発生しないため(OP95 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP97)。
<事前動作確認フローチャート10:OP62がNO、OP67がNO、OP68がNO>
事前確認部36a−2は、オペランドop1に不当なデータ形式、且つ書込み保護を、オペランドop2に0を設定してdivide命令を実行する(OP61)。事前確認部36a−2は、データ例外による割込みが発生したか判断する(OP62)。
事前動作確認フローチャート10の場合、データ例外による割込みが発生しないため(OP62 NO)、事前確認部36a−2は、除算例外による割込みが発生したか判断する(OP67)。事前動作確認フローチャート10の場合、除算例外による割込みが発生しないため(OP67 NO)、事前確認部36a−2は、書込保護例外による割込みが発生したか判断する(OP68)。事前動作確認フローチャート10の場合、書込保護例外による割込みが発生しないため(OP68 NO)、第7処理部40aは、例えば、エラーログを出力装置23aに出力するエラー処理を行う(OP71)。
図13〜図14は、実施例2に係るプロセッサ試験装置20aの命令シミュレーション動作を示すフローチャートである。図13のAに示す処理は図14のAに続いている。なお、図13〜図14において、実施例1の図8、及び実施例2の図9〜図12で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図13〜図14に示すフローチャートには、OP102、OP105、OP107、OP103、OP110、OP112、OP104、OP115、OP117、OP121、OP123、OP125の12個の条件分岐処理がある。これらの条件分岐処理により、図13〜図14に示すフローチャートには、以下のような処理の組合せがある。
命令シミュレーション動作フローチャート1:OP102がYES、OP105がYES、OP103がNO、OP104がYES、OP121がYES
命令シミュレーション動作フローチャート2:OP102がYES、OP105がNO、OP107がYES、OP103がNO、OP104がYES、OP121がNO、OP123がYES
命令シミュレーション動作フローチャート3:OP102がYES、OP105がNO、OP107がNO、OP103がNO、OP104がYES、OP121がNO、OP123がNO、OP125がYES
命令シミュレーション動作フローチャート4:OP102がNO、OP103がYES、OP110がYES、OP104がYES、OP121がYES
命令シミュレーション動作フローチャート5:OP102がNO、OP103がYES、OP110がNO、OP112がYES、OP104がYES、OP121がNO、OP123がYES
命令シミュレーション動作フローチャート6:OP102がNO、OP103がYES、OP110がNO、OP112がNO、OP104がYES、OP121がNO、OP123がNO、OP125がYES
命令シミュレーション動作フローチャート7:OP102がNO、OP103がNO、OP104がNO、OP115がYES、OP121がYES
命令シミュレーション動作フローチャート8:OP102がNO、OP103がNO、OP104がNO、OP115がNO、OP117がYES、OP121がNO、OP123がYES
命令シミュレーション動作フローチャート9:OP102がNO、OP103がNO、OP104がNO、OP115がNO、OP117がNO、OP121がNO、OP123がNO、OP125がYES
命令シミュレーション動作フローチャート10:OP102がNO、OP103がNO、OP104がYES、OP121がNO、OP123がNO、OP125がNO
以下、上記10個のフローチャートについて、図13〜図14を用いて説明する。なお、図13〜図14において、以下の記載においては、図11〜図12と同様に冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<命令シミュレーション動作フローチャート1:OP102がYES、OP105がYES、OP103がNO、OP104がYES、OP121がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート1の場合、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式であるため(OP102 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であるか判断する(OP105)。命令シミュレーション動作フローチャート1の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であるため(OP105 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であることを示す動作フラグ1をオンにする(OP106)。
シミュレーション部34a−2は、第1格納部41a−2に格納したオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート1の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート1の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート1の場合、動作フラグ1がオンであるであるため(OP121 YES)、シミュレーション部34a−2は、優先順位1番目であるデータ例外処理をシミュレートする(OP122)。
<命令シミュレーション動作フローチャート2:OP102がYES、OP105がNO、OP107がYES、OP103がNO、OP104がYES、OP121がNO、OP123がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート2の場合、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式であるため(OP102 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であるか判断する(OP105)。命令シミュレーション動作フローチャート2の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目ではないため(OP105 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であるか判断する(OP107)。命令シミュレーション動作フローチャート2の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であるため(OP107 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であることを示す動作フラグ2をオンにする(OP108)。
シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート2の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート2の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート2の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート2の場合、動作フラグ2がオンであるであるため(OP123 YES)、シミュレーション部34a−2は、優先順位2番目であるデータ例外処理をシミュレートする(OP124)。
<命令シミュレーション動作フローチャート3:OP102がYES、OP105がNO、OP107がNO、OP103がNO、OP104がYES、OP121がNO、OP123がNO、OP125がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート3の場合、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式であるため(OP102 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であるか判断する(OP105)。命令シミュレーション動作フローチャート3の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目ではないため(OP105 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であるか判断する(OP107)。命令シミュレーション動作フローチャート3の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目ではないため(OP107 NO)、シミュレーション部34a−2は、テーブル43a−2を参照にして、オペランドop1又はオペランドop2のデータ例外の優先順位が3番目であることを示す動作フラグ3をオンにする(OP109)。
シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート3の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート3の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート3の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位が2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート3の場合、動作フラグ2がオンではないため(OP123 NO)、シミュレーション部34a−2は、動作フラグ3がオンであるか判断する(OP125)。命令シミュレーション動作フローチャート3の場合、オペランドop1又はオペランドop2のデータ例外の優先順位が3番目であることを示す動作フラグ3がオンであるであるため(OP125 YES)、シミュレーション部34a−2は、優先順位3番目であるデータ例外処理をシミュレートする(OP126)。
<命令シミュレーション動作フローチャート4:OP102がNO、OP103がYES、OP110がYES、OP104がYES、OP121がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート4の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート4の場合、オペランドop2が0であるため(OP103 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であるか判断する(OP110)。命令シミュレーション動作フローチャート4の場合、除算例外が優先順位1番目であるため(OP110 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、除算例外が優先順位1番目であることを示す動作フラグ1をオンにする(OP111)。
シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート4の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート4の場合、動作フラグ1がオンであるであるため(OP121 YES)、シミュレーション部34a−2は、優先順位1番目である除算例外処理をシミュレートする(OP122)。
<命令シミュレーション動作フローチャート5:OP102がNO、OP103がYES、OP110がNO、OP112がYES、OP104がYES、OP121がNO、OP123がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート5の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート5の場合、オペランドop2が0であるため(OP103 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であるか判断する(OP110)。命令シミュレーション動作フローチャート5の場合、除算例外は優先順位1番目ではないため(OP110 NO)、シミュレーション部34a−2は、除算例外が優先順位2番目であるか判断する(OP112)。命令シミュレーション動作フローチャート5の場合、除算例外は優先順位2番目であるため(OP112 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、除算例外は優先順位2番目であることを示す動作フラグ2をオンにする(OP113)。
シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート5の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート5の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、除算例外は優先順位2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート5の場合、動作フラグ2がオンであるため(OP123 YES)、シミュレーション部34a−2は、優先順位2番目である除算例外処理をシミュレートする(OP124)。
<命令シミュレーション動作フローチャート6:OP102がNO、OP103がYES、OP110がNO、OP112がNO、OP104がYES、OP121がNO、OP123がNO、OP125がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート6の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート6の場合、オペランドop2が0であるため(OP103 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であるか判断する(OP110)。命令シミュレーション動作フローチャート6の場合、除算例外は優先順位1番目ではないため(OP110 NO)、シミュレーション部34a−2は、除算例外が優先順位2番目であるか判断する(OP112)。命令シミュレーション動作フローチャート6の場合、除算例外は優先順位2番目ではないため(OP112 NO)、シミュレーション部34a−2は、テーブル43a−2を参照にして、除算例外が優先順位3番目であることを示す動作フラグ3をオンにする(OP114)。
シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート6の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、除算例外が優先順位1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート6の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、除算例外が優先順位2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート6の場合、動作フラグ2がオンではないため(OP123 NO)、シミュレーション部34a−2は、除算例外が優先順位3番目であることを示す動作フラグ3がオンであるか判断する(OP125)。命令シミュレーション動作フローチャート6の場合、動作フラグ3がオンであるため(OP125 YES)、シミュレーション部34a−2は、優先順位3番目である除算例外処理をシミュレートする(OP126)。
<命令シミュレーション動作フローチャート7:OP102がNO、OP103がNO、OP104がNO、OP115がYES、OP121がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート7の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート7の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。
命令シミュレーション動作フローチャート7の場合、オペランドop1は書込みアクセス可能ではないため(OP104 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であるか判断する(OP115)。命令シミュレーション動作フローチャート7の場合、書込みアクセス例外の優先順位が1番目であるため(OP115 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、書込みアクセス例外の優先順位が1番目であることを示す動作フラグ1をオンにする(OP116)。
シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート7の場合、動作フラグ1がオンであるであるため(OP121 YES)、シミュレーション部34a−2は、優先順位1番目である書込みアクセス例外処理をシミュレートする(OP122)。
<命令シミュレーション動作フローチャート8:OP102がNO、OP103がNO、OP104がNO、OP115がNO、OP117がYES、OP121がNO、OP123がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート8の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート8の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。
命令シミュレーション動作フローチャート8の場合、オペランドop1は書込みアクセス可能ではないため(OP104 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であるか判断する(OP115)。命令シミュレーション動作フローチャート8の場合、書込みアクセス例外の優先順位が1番目ではないため(OP115 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が2番目であるか判断する(OP117)。命令シミュレーション動作フローチャート8の場合、書込みアクセス例外の優先順位が2番目であるため(OP117 YES)、シミュレーション部34a−2は、テーブル43a−2を参照にして、書込みアクセス例外の優先順位が2番目であることを示す動作フラグ2をオンにする(OP118)。
シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート8の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート8の場合、動作フラグ2がオンであるため(OP123 YES)、シミュレーション部34a−2は、優先順位2番目である書込みアクセス例外処理をシミュレートする(OP124)。
<命令シミュレーション動作フローチャート9:OP102がNO、OP103がNO、OP104がNO、OP115がNO、OP117がNO、OP121がNO、OP123がNO、OP125がYES>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート9の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート9の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。
命令シミュレーション動作フローチャート9の場合、オペランドop1は書込みアクセス可能ではないため(OP104 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であるか判断する(OP115)。命令シミュレーション動作フローチャート9の場合、書込みアクセス例外の優先順位が1番目ではないため(OP115 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が2番目であるか判断する(OP117)。命令シミュレーション動作フローチャート9の場合、書込みアクセス例外の優先順位が2番目ではないため(OP117 NO)、シミュレーション部34a−2は、テーブル43a−2を参照にして、書込みアクセス例外の優先順位が3番目であることを示す動作フラグ3をオンにする(OP119)。
シミュレーション部34a−2は、書込みアクセス例外の優先順位が1番目であることを示す動作フラグ1がオンであるか判断する(OP121)。命令シミュレーション動作フローチャート9の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が2番目であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート9の場合、動作フラグ2がオンではないため(OP123 NO)、シミュレーション部34a−2は、書込みアクセス例外の優先順位が3番目であることを示す動作フラグ3がオンであるか判断する(OP125)。命令シミュレーション動作フローチャート9の場合、動作フラグ3がオンであるため(OP125 YES)、シミュレーション部34a−2は、優先順位3番目である書込みアクセス例外処理をシミュレートする(OP126)。
<命令シミュレーション動作フローチャート10:OP102がNO、OP103がNO、OP104がYES、OP121がNO、OP123がNO、OP125がNO>
シミュレーション部34a−2は、主記憶装置11aに設けられたフラグ1、フラグ2及びフラグ3をオフに設定する(OP101)。シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop1又はオペランドop2が不当なデータ形式か判断する(OP102)。
命令シミュレーション動作フローチャート10の場合、オペランドop1又はオペランドop2が不当なデータ形式ではないため(OP102 NO)、シミュレーション部34a−2は、第1格納部41a−2に格納されたオペランドop2が0であるか判断する(OP103)。命令シミュレーション動作フローチャート10の場合、オペランドop2が0ではないため(OP103 NO)、シミュレーション部34a−2は、オペランドop1は書込みアクセス可能であるか判断する(OP104)。命令シミュレーション動作フローチャート10の場合、オペランドop1は書込みアクセス可能であるため(OP104 YES)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が1番であることを示す動作フラグ1がオンであるか判断する(OP121)。
命令シミュレーション動作フローチャート10の場合、動作フラグ1がオンではないため(OP121 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が2番であることを示す動作フラグ2がオンであるか判断する(OP123)。命令シミュレーション動作フローチャート10の場合、動作フラグ2がオンではないため(OP123 NO)、シミュレーション部34a−2は、オペランドop1又はオペランドop2のデータ例外の優先順位、除算例外、又は除算例外のうち何れかの優先順位が3番であることを示す動作フラグ3がオンであるか判断する(OP125)。命令シミュレーション動作フローチャート10の場合、動作フラグ3がオンではないため(OP125 NO)、シミュレーション部34a−2は、オペランドop1及びオペランドop2に対するdivide命令をシミュレートする(OP127)。
実施例2に開示の技術によれば、実施例2に係るプロセッサ試験装置20aは、予め機種依存動作としてdivide命令例外順序を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ12bの動作検証を行うので、複雑な工程を必要とせず、プロセッサ12bの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ12bの動作検証の精度を向上させることができる。
(実施例3)
図15から図17を用いて、実施例3を説明する。
図15は、実施例3に係るプロセッサ試験装置20aの処理説明図である。なお、図15に示すプロセッサ試験装置20aの処理説明図において、実施例1の図1〜図6、及び実施例2の図9で説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例3におけるプロセッサ12aの機種依存動作は、以下に説明するcompare−and−swap書き戻しである。
図15において、事前確認部36a−3は、複数のプロセッサ間の排他制御方式のためのcompare−and−swap命令において、メモリとして機能する主記憶装置11aが格納するデータと置換データが等しい時に、主記憶装置11aへの書き戻しが行われるか否かについて確認する。実施例3に係るcompare−and−swap命令とは、複数のプロセッサの共有メモリとして使用される主記憶装置11aの特定のアドレスに格納されたデータと、プロセッサ12aのレジスタ12a−2に格納された置換対象となるデータとを比較する。比較結果において各データが同一である場合、特定のアドレスに格納されているデータをプロセッサ12aのレジスタ12a−2に格納されている置換データで書き換えて主記憶装置11aにアクセスする排他制御方式である。
事前確認部36a−3は、例えば、複数のプロセッサ間の排他制御命令であるcompare−and−swapにおいて、主記憶装置11aに格納されているデータと置換データが等しい時にメモリへの書き戻しが行われるか否かについて確認する。事前確認部36a−3は、compare−and−swapがアクセスする主記憶装置11aのアドレスに対して書込み保護条件を設定し、格納されているデータと置換データを同じ値として命令を実行する。
第4処理部37a−3は、compare−and−swap命令がアクセスする主記憶装置11aのアドレスに対して書込み保護条件を設定し、格納されているデータと置換データを同じ値として命令を実行すると、割込みハンドラを起動させる。割込みハンドラは、第1格納部41a−3に格納されているデータに対してcompare−and−swap命令を実行した後、書込み保護条件による割込みが発生したか調べる。第1処理部31aは、第4処理部37a−3によって、起動された割込みハンドラを、第1格納部41a−3に格納された試験命令列の後続命令として追加させる。
テーブル43a−3は、割込みハンドラの起動と同時に固定領域44a−3に割込みステータスとして割込み原因コードを格納する。第4処理部37a−3によって起動された割込みハンドラは、割込みと同時に固定領域44a−3に割込みステータスとして、割込み原因コード及び割込み原因アドレスが格納される。割込みハンドラは割込み原因コード及び割込み原因アドレスを基に割込みが発生したかを判断する。
テーブル43a−3は、第4処理部37a−3によりcompare−and−swap命令による割込みハンドラが起動された後、プロセッサ12aの論理仕様から機種依存となる項目を抽出した機種依存項目を格納する。実施例3に係るテーブル43a−3は、compare−and−swap書き戻しを格納する。実施例3において、テーブル43a−3の項目に格納される動作は、フラグがオンの場合は1、フラグがオフの場合は0となる2つの有限な選択肢を含む。
シミュレーション部34a−3は、試験対象であるプロセッサ12bに係る機種依存項目の動作シミュレーションに際して、テーブル43a−3を参照してシミュレーション部34a−3の動作を決定する。シミュレーション部34a−3は、テーブル43a−3を参照することにより、試験対象であるプロセッサ12bに適応したシミュレーションを行う。実施例3におけるプロセッサ12aの機種依存動作は、compare−and−swap書き戻しである。
シミュレーション部34a−3は、compare−and−swap命令を実行後、書込み保護条件による割込みが発生した場合は、第2格納部42aに格納されるテーブル43a−3の該当エントリに書き戻しが行われることを示すフラグをオンする。シミュレーション部34a−3は、compare−and−swap命令を実行後、書込み保護条件による割込みが発生しなかった場合、第2格納部42aに格納されるテーブル43a−3の該当エントリに書き戻しが行われることを示すフラグをオフにする。シミュレーション部34a−3は、compare−and−swap命令をシミュレートする際、第1格納部41a−3に格納されているデータと置換データが等しい場合に、テーブル43a−3を参照にして主記憶装置11aへの書き戻しを行うか否かを判断し命令シミュレートを行う。
図16は、実施例3に係るプロセッサ試験装置20aの事前動作確認を示すフローチャートである。なお、図16において、実施例1に係る図1〜図6、実施例2の図10〜図11、及び図15で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図16に示すフローチャートには、OP133における1個の条件分岐処理がある。この条件分岐処理により、図16に示すフローチャートには、以下のような処理の組合せがある。
事前動作確認フローチャート1:OP133がNO
事前動作確認フローチャート2:OP133がYES
以下、上記2つのフローチャートについて、図16を用いて説明する。なお、実施例3において、実施例1及び実施例2と同様に、プロセッサ12aが、プログラム30aを実行することにより、第1処理部31a〜第7処理部40aが動作可能になる。以下の記載においては、実施例1及び実施例2と同様に、冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<事前動作確認フローチャート1:OP133がNO>
図16において、事前確認部36a−3は、compare−and−swap命令がアクセスする主記憶装置11aのアドレス位置に対して書込み保護条件を設定する(OP131)。
事前確認部36a−3は、主記憶装置11aのアドレス位置に格納されるデータと、compare−and−swap命令において置換対象となるデータの値を同じに設定して、compare−and−swap命令を実行する(OP132)。事前確認部36a−3は、書込み保護による割込みが発生したか判断する(OP133)。
事前動作確認フローチャート1の場合、書込み保護による割込みが発生しないため(OP133 NO)、第4処理部37a−3は、第2格納部42aに格納されるcompare−and−swap命令の書き戻しフラグをオフにする(OP134)。即ち、第4処理部37a−3は、第2格納部42aに格納されるcompare−and−swap命令の書き戻しフラグを0に設定する。
<事前動作確認フローチャート2:OP133がYES>
事前確認部36a−3は、主記憶装置11aのアドレス位置に格納されるデータと、compare−and−swap命令において置換対象となるデータの値を同じに設定して、compare−and−swap命令を実行する(OP132)。事前確認部36a−3は、書込み保護による割込みが発生したか判断する(OP133)。
事前動作確認フローチャート2の場合、書込み保護による割込みが発生するため(OP133 YES)、第4処理部37a−3は、第2格納部42aに格納されるテーブル43a−3のcompare−and−swap命令の書き戻しフラグをオンにする(OP135)。即ち、第4処理部37a−3は、第2格納部42aに格納されるテーブル43a−3のcompare−and−swap命令の書き戻しフラグを1に設定する。
図17は、実施例3に係るプロセッサ試験装置20aの命令シミュレーション動作を示すフローチャートである。なお、図17において、実施例1に係る図1〜図6、実施例2の図10〜図11、及び図15〜図16で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図17に示すフローチャートには、OP142、OP143の2つの条件分岐処理がある。これらの条件分岐処理により、図17に示すフローチャートには、以下のような処理の組合せがある。
命令シミュレーション動作フローチャート1:OP142がYES、OP143がYES
命令シミュレーション動作フローチャート2:OP142がNO
命令シミュレーション動作フローチャート3:OP142がYES、OP143がNO
以下、上記3つのフローチャートについて、図17を用いて説明する。図17において、以下の記載においては、図16と同様に冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<命令シミュレーション動作フローチャート1:OP142がYES、OP143がYES>
シミュレーション部34a−3は、compare−and−swap命令動作のシミュレートを実行する(OP141)。シミュレーション部34a−3は、主記憶装置11aに格納されている格納データと置換データが等しいか判断する(OP142)。
命令シミュレーション動作フローチャート1の場合、主記憶装置11aに格納されている格納データと置換データが等しいため(OP142 YES)、シミュレーション部34a−3は、テーブル43a−3のcompare−and−swap命令の書き戻しフラグがオンか判断する(OP143)。命令シミュレーション動作フローチャート1の場合、compare−and−swap命令の書き戻しフラグがオンであるため(OP143 YES)、シミュレーション部34a−3は、格納データの書き戻し処理を実行する(OP144)。
<命令シミュレーション動作フローチャート2:OP142がNO>
シミュレーション部34a−3は、compare−and−swap命令動作のシミュレートを実行する(OP141)。シミュレーション部34a−3は、主記憶装置11aに格納されている格納データと置換データが等しいか判断する(OP142)。命令シミュレーション動作フローチャート2の場合、主記憶装置11aに格納されている格納データと置換データが等しくないため(OP142 NO)、シミュレーション部34a−3は、compare−and−swap命令動作のシミュレートを終了する。
<命令シミュレーション動作フローチャート3:OP142がYES、OP143がNO>
シミュレーション部34a−3は、compare−and−swap命令動作のシミュレートを実行する(OP141)。シミュレーション部34a−3は、主記憶装置11aに格納されている格納データと置換データが等しいか判断する(OP142)。
命令シミュレーション動作フローチャート3の場合、主記憶装置11aに格納されている格納データと置換データが等しいため(OP142 YES)、シミュレーション部34a−3は、テーブル43a−3のcompare−and−swap命令の書き戻しフラグがオンか判断する(OP143)。命令シミュレーション動作フローチャート3の場合、compare−and−swap命令の書き戻しフラグがオンでは無いため(OP143 NO)、シミュレーション部34a−3は、compare−and−swap命令動作のシミュレートを終了する。
実施例3に開示の技術によれば、実施例3に係るプロセッサ試験装置20aは、予め機種依存動作としてcompare−and−swap書き戻しを考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ12bの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ12bの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ12bの動作検証の精度を向上させることができる。
(実施例4)
図18から図20を用いて、実施例4を説明する。
図18は、実施例4に係るプロセッサ試験装置20aの処理説明図である。なお、図18に示すプロセッサ試験装置20aの処理説明図において、実施例1の図1〜図6、実施例2の図9、及び実施例3の図15に説明した構成と同様の構成には同一の符号を付し、説明を省略する。なお、実施例4におけるプロセッサ12aの機種依存動作は、以下に説明するcompare命令アクセス例外認識である。
図18において、事前確認部36a−4は、レジスタ12a−2に格納されているオペランドop1と、メモリとして機能する主記憶装置11aに格納されているオペランドop2とを比較するcompare命令を実行する。事前確認部36a−4は、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスに無効ページを設定する。無効ページは、アクセス対象のデータが、第1格納部41a−4上に存在しないことを示す。無効ページは、無効データを保持する。不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスに無効ページを設定した後、事前確認部36a−4は、レジスタ12a−2に格納されているオペランドop1と、主記憶装置11aに格納されているオペランドop2とを比較するcompare命令を実行する。
テーブル43a−4は、割込みハンドラの起動と同時に固定領域44a−4に割込みステータスとして割込み原因コードを格納する。第4処理部37a−4によって起動された割込みハンドラは、割込みと同時に固定領域44a−4に割込みステータスとして割込み原因コード及び割込み原因アドレスが格納される。割込みハンドラは割込み原因コード及び割込み原因アドレスをもとに割込みが発生したかを判断する。
第4処理部37a−4は、レジスタ12a−2に格納されているオペランドop1と、主記憶装置11aに格納されているオペランドop2とを比較するcompare命令を実行すると、割込みハンドラを起動させる。割込みハンドラは、第1格納部41a−4に格納されているデータに対してcompare命令を実行した後、アクセス例外認識による割込みが発生したか調べる。第1処理部31aは、第4処理部37a−4によって、起動された割込みハンドラを、第1格納部41a−4に格納された試験命令列の後続命令として追加させる。
テーブル43a−4は、第4処理部37a−4によりcompare命令による割込みハンドラが起動された後、プロセッサ12aの論理仕様から機種依存となる項目を抽出した機種依存項目を格納する。実施例4に係るテーブル43a−4は、compare命令アクセス例外認識を格納する。実施例4において、テーブル43a−4の項目に格納される動作は、フラグがオンの場合は1、フラグがオフの場合は0となる2つの有限な選択肢を含む。
シミュレーション部34a−4は、試験対象であるプロセッサ12bに係る機種依存項目の動作シミュレーションに際して、テーブル43a−4を参照してシミュレーション部34a−4の動作を決定する。シミュレーション部34a−4は、テーブル43a−4を参照することにより、試験対象であるプロセッサ12bに適応したシミュレーションを行う。実施例4におけるプロセッサ12aの機種依存動作は、compare命令アクセス例外認識である。
シミュレーション部34a−4は、compare命令を実行後、アクセス例外認識による割込みが発生した場合、テーブル43a−4のcompare命令のアクセス例外が認識されることを示すフラグをオンする。シミュレーション部34a−4は、compare命令を実行後、アクセス例外認識による割込みが発生しなかった場合、テーブル43a−4のcompare命令のアクセス例外が認識されることを示すフラグをオフにする。次いで、シミュレーション部34a−4は、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスにアクセス例外が認識されるか判断し、命令シミュレートを行う。
図19は、実施例4に係るプロセッサ試験装置20aの事前動作確認を示すフローチャートである。なお、図16において、実施例1に係る図1〜図6、実施例2の図10〜図11、実施例3の図15〜図17、及び図18で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図19に示すフローチャートには、OP153における1個の条件分岐処理がある。この条件分岐処理により、図19に示すフローチャートには、以下のような処理の組合せがある。
事前動作確認フローチャート1:OP153がNO
事前動作確認フローチャート2:OP153がYES
以下、上記2つのフローチャートについて、図19を用いて説明する。なお、実施例4において、実施例1、実施例2及び実施例3と同様に、プロセッサ12aが、プログラム30aを実行することにより、第1処理部31a〜第7処理部40aが動作可能になる。以下の記載においては、実施例1、実施例2及び実施例3と同様に、冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<事前動作確認フローチャート1:OP153がNO>
図19において、事前確認部36a−4は、compare命令が実行されるレジスタ12a−2に格納されているオペランドop1と、メモリとして機能する主記憶装置11aに格納されているオペランドop2にそれぞれアクセスする。次いで、事前確認部36a−4は、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスに無効ページを設定する(OP151)。
事前確認部36a−4は、レジスタ12a−2に格納されているオペランドop1と、主記憶装置11aに格納されているオペランドop2とを比較するcompare命令を実行する(OP152)。事前確認部36a−4は、compare命令を実行した後、無効ページ保護による割込みが発生したか判断する(OP153)。
事前動作確認フローチャート1の場合、無効ページ保護による割込みが発生しないため(OP153 NO)、第4処理部37a−4は、テーブル43a−4のcompare命令アクセス例外認識を示すフラグをオフにする(OP154)。即ち、第4処理部37a−4は、compare命令アクセス例外認識を示すフラグを0に設定する。
<事前動作確認フローチャート2:OP153がNO>
事前確認部36a−4は、レジスタ12a−2に格納されているオペランドop1と、主記憶装置11aに格納されているオペランドop2とを比較するcompare命令を実行する(OP152)。事前確認部36a−4は、compare命令を実行した後、無効ページ保護による割込みが発生したか判断する(OP153)。
事前動作確認フローチャート2の場合、無効ページ保護による割込みが発生するため(OP153 YES)、第4処理部37a−4は、テーブル43a−4のcompare命令アクセス例外認識を示すフラグをオンにする(OP155)。即ち、第4処理部37a−4は、compare命令アクセス例外認識を示すフラグを1に設定する。
図20は、実施例4に係るプロセッサ試験装置20aの命令シミュレーション動作を示すフローチャートである。なお、図20において、実施例1に係る図1〜図6、実施例2の図10〜図11、実施例3の図15〜図17、及び実施例4の図18〜図19で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
図20に示すフローチャートには、OP162、OP163の2つの条件分岐処理がある。これらの条件分岐処理により、図20に示すフローチャートには、以下のような処理の組合せがある。
命令シミュレーション動作フローチャート1:OP162がYES、OP163がYES
命令シミュレーション動作フローチャート2:OP162がNO
命令シミュレーション動作フローチャート3:OP162がYES、OP163がNO
以下、上記3つのフローチャートについて、図20を用いて説明する。以下の記載においては、図19と同様に冗長記載を回避するために、第1処理部31aが第2処理部32a〜第7処理部40aに処理の指示を出す記載を省略する。
<命令シミュレーション動作フローチャート1:OP162がYES、OP163がYES>
シミュレーション部34a−4は、compare命令動作のシミュレートを実行する(OP161)。シミュレーション部34a−4は、テーブル43a−4のcompare命令のアクセス例外認識を示すフラグがオンか判断する(OP162)。
命令シミュレーション動作フローチャート1の場合、compare命令のアクセス例外認識を示すフラグがオンであるため(OP162 YES)、シミュレーション部34a−4は、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスにアクセス例外が認識されるか判断する(OP163)。命令シミュレーション動作フローチャート1の場合、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスにアクセス例外が認識されるため(OP163 YES)、シミュレーション部34a−4は、アクセス例外のシミュレートを行う(OP164)。
<命令シミュレーション動作フローチャート2:命令シミュレーション動作フローチャート2:OP162がNO>
シミュレーション部34a−4は、compare命令動作のシミュレートを実行する(OP161)。シミュレーション部34a−4は、テーブル43a−4のcompare命令のアクセス例外認識を示すフラグがオンか判断する(OP162)。命令シミュレーション動作フローチャート2の場合、テーブル43a−4のcompare命令のアクセス例外認識を示すフラグがオンでは無いため(OP162 NO)、シミュレーション部34a−4は、compare命令動作のシミュレートを終了する。
<命令シミュレーション動作フローチャート3:OP162がYES、OP163がNO>
シミュレーション部34a−4は、compare命令動作のシミュレートを実行する(OP161)。シミュレーション部34a−4は、テーブル43a−4のcompare命令のアクセス例外認識を示すフラグがオンか判断する(OP162)。命令シミュレーション動作フローチャート3の場合、テーブル43a−4のcompare命令のアクセス例外認識を示すフラグがオンであるため(OP162 YES)、シミュレーション部34a−4は、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスにアクセス例外が認識されるか判断する(OP163)。命令シミュレーション動作フローチャート3の場合、オペランドop1及びオペランドop2が最初に不一致となるバイト以降のデータが格納されている主記憶装置11aのアドレスにアクセス例外が認識されないため(OP163 NO)、シミュレーション部34a−4は、compare命令動作のシミュレートを終了する。
実施例4に開示の技術によれば、実施例4に係るプロセッサ試験装置20aは、予め機種依存動作としてcompare命令アクセス例外認識を考慮してシミュレートした期待値を求めることができる。従って、この期待値を使用してプロセッサ12bの動作検証を行っているので、複雑な工程を必要とせず、プロセッサ12bの動作検証を効率的に実行することができる。又、機種依存動作に依存せずに動作検証を実行することができるので、プロセッサ12bの動作検証の精度を向上させることができる。
(付記1)
プロセッサの動作を検証するプロセッサの動作検証方法であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を含むことを特徴とするプロセッサの動作検証方法。
(付記2)
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記1記載のプロセッサの動作検証方法。
(付記3)
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記1記載のプロセッサの動作検証方法。
(付記4)
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が0であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記3記載のプロセッサの動作検証方法。
(付記5)
前記試験命令列は、
複数のプロセッサのうち少なくとも1つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記1記載のプロセッサの動作検証方法。
(付記6)
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第1データに含まれる第1の複数のバイトと、前記プロセッサに接続されるメモリに格納される第2データに含まれる第2の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第1の複数のバイト及び前記第2の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第1の複数のバイトと残りの前記第2の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記1記載のプロセッサの動作検証方法。
(付記7)
プロセッサの動作を検証するプロセッサの動作検証装置であって、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する第1取得部と、
前記プロセッサで前記試験命令列を実行させて結果値を取得する第2取得部と、
前記第1取得部で取得された前記期待値及び前記第2取得部で取得された前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する判定部と、
を有することを特徴とするプロセッサの動作検証装置。
(付記8)
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記7記載のプロセッサの動作検証装置。
(付記9)
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記7記載のプロセッサの動作検証装置。
(付記10)
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が0であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記9記載のプロセッサの動作検証装置。
(付記11)
前記試験命令列は、
複数のプロセッサのうち少なくとも1つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記7記載のプロセッサの動作検証装置。
(付記12)
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第1データに含まれる第1の複数のバイトと、前記プロセッサに接続されるメモリに格納される第2データに含まれる第2の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第1の複数のバイト及び前記第2の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第1の複数のバイトと残りの前記第2の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記7のプロセッサの動作検証装置。
(付記13)
プログラムを実行するプロセッサの動作を検証するプロセッサの動作検証プログラムであって、
コンピュータに、
前記プロセッサの機種依存動作を検証するための試験仕様から生成される試験命令列をソフトウェアシミュレータで実行し、実行された前記試験命令列の結果から期待値を取得する工程と、
前記試験命令列を前記プロセッサで実行させて結果値を取得する工程と、
取得された前記期待値及び前記結果値を比較し、前記期待値及び前記結果値の一致又は不一致を判定する工程と、
を実行させることを特徴とするプロセッサの動作検証プログラム。
(付記14)
前記試験命令列は、
複数のオペランドを含む命令を前記プロセッサで実行する際、前記複数のオペランドに対するアクセス順序を設定する命令列を含むことを特徴とする付記13記載のプロセッサの動作検証プログラム。
(付記15)
前記試験命令列は、
前記プロセッサが、複数のオペランドのデータ形式が指定された除算命令を実行する際、複数の例外が発生する際の設定順序を設定する命令列を含むことを特徴とする付記13記載のプロセッサの動作検証プログラム。
(付記16)
前記複数の例外は、
除数となるオペランドのデータ形式が指定された前記データ形式と異なる場合に発生するデータ例外、除数が0であるときに発生する除算例外、及び除数となるオペランドが格納されているメモリに対する格納アクセスが不許可であるときに発生するアクセス例外を含むことを特徴とする付記15記載のプロセッサの動作検証プログラム。
(付記17)
前記試験命令列は、
複数のプロセッサのうち少なくとも1つの前記プロセッサが、前記プロセッサと異なる他のプロセッサとの間で排他制御を実行する際、前記プロセッサによってメモリに格納されたデータを、前記他のプロセッサによって書き戻しを行うか否かを設定する命令列を含むことを特徴とする付記13記載のプロセッサの動作検証プログラム。
(付記18)
前記試験命令列は、
前記プロセッサが、前記プロセッサに接続されるキャッシュメモリに格納され、前記プロセッサによって実行される第1データに含まれる第1の複数のバイトと、前記プロセッサに接続されるメモリに格納される第2データに含まれる第2の複数のバイトとを、それぞれのバイト毎に比較する比較命令を実行する際、
前記第1の複数のバイト及び前記第2の複数のバイトのうち、異なるバイトが存在する場合、
前記比較命令が実行されていない残りの前記第1の複数のバイトと残りの前記第2の複数のバイトとに対して、メモリに対する格納アクセスが不許可であるときに発生するアクセス例外が設定されているか否か認識する命令列を含むことを特徴とする付記13記載のプロセッサの動作検証プログラム。