(57)【要約】【課題】ＳＩＳＤ命令とＳＩＭＤ命令を混在させた場合でも、保障されたレジスタの値を用いて命令列の実行結果を検証できる技術を提供する。【解決手段】プロセッサ試験命令列生成方法は、試験命令の実行で使用されるレジスタを２つのレジスタグループに区分し、第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令に第１のレジスタグループのレジスタを割り当てるとともに、１回の実行時に複数のレジスタにアクセスする第２の命令に第２のレジスタグループのレジスタを割り当ててレジスタを分割する工程、試験命令を生成する工程、および演算種別フィールドに応じて指定するレジスタを補正する工程と、を有する。【選択図】図６
2015036839.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令および１回の実行時に複数のレジスタにアクセスする第２の命令を実行するプロセッサの試験命令列を生成する試験命令列生成方法であり、
試験命令の実行で使用されるレジスタを、第１のレジスタと、対応する第２のレジスタとが同一のレジスタグループに含まれるように、２つのレジスタグループに区分し、前記第１の命令に対して第１のレジスタグループのレジスタを割り当てるとともに、前記第２の命令に対して前記第１の命令によって前記第２のレジスタの値が不定値とならない第２のレジスタグループのレジスタを割り当てて、レジスタを分割する工程と、
前記プロセッサが実行する試験命令を生成する工程と、
前記試験命令の演算種別フィールドが前記第１の命令を示し、前記試験命令の結果値レジスタフィールドが前記第２のレジスタグループのレジスタを指定している場合に、前記第１のレジスタグループのレジスタを指定するようにレジスタを補正するとともに、
前記試験命令の演算種別フィールドが前記第２の命令を示し、前記試験命令の入力値レジスタフィールドが前記第１のレジスタグループのレジスタを指定している場合に、前記第２のレジスタグループのレジスタを指定するようにレジスタを補正する工程と、
を実行する試験命令列生成方法。
【請求項２】
前記第１の命令と前記第２の命令との間で、それぞれに割り当てるレジスタグループを変更する工程を実行し、
前記試験命令を生成する工程および前記レジスタを補正する工程と、をさらに繰り返す、請求項１に記載の試験命令列生成方法。
【請求項３】
前記レジスタはレジスタ番号で識別され、
前記第１のレジスタグループおよび第２のレジスタグループそれぞれに含まれるレジスタのレジスタ番号の組み合わせにおいて、連続するレジスタ番号の個数を変更する工程をさらに実行する請求項１または２に記載の試験命令列生成方法。
【請求項４】
コンピュータが、第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令および１回の実行時に複数のレジスタにアクセスする第２の命令を実行するプロセッサの試験命令列を生成する試験命令列生成プログラムであり、
試験命令の実行で使用されるレジスタを、第１のレジスタと、対応する第２のレジスタとが同一のレジスタグループに含まれるように、２つのレジスタグループに区分し、前記第１の命令に対して第１のレジスタグループのレジスタを割り当てるとともに、前記第２の命令に対して前記第１の命令によって前記第２のレジスタの値が不定値とならない第２のレジスタグループのレジスタを割り当てて、レジスタを分割し、
前記プロセッサが実行する試験命令を生成し、
前記試験命令の演算種別フィールドが前記第１の命令を示し、前記試験命令の結果値レジスタフィールドが前記第２のレジスタグループのレジスタを指定している場合に、前記第１のレジスタグループのレジスタを指定するようにレジスタを補正するとともに、
前記試験命令の演算種別フィールドが前記第２の命令を示し、前記試験命令の入力値レジスタフィールドが前記第１のレジスタグループのレジスタを指定している場合に、前記第２のレジスタグループのレジスタを指定するようにレジスタを補正する、
処理をコンピュータに実行させる試験命令列生成プログラム。
【請求項５】
第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令および１回の実行時に複数のレジスタにアクセスする第２の命令を実行するプロセッサの試験命令列を生成する試験命令列生成装置であり、
試験命令の実行で使用されるレジスタを、第１のレジスタと、対応する第２のレジスタ
とが同一のレジスタグループに含まれるように、２つのレジスタグループに区分し、前記第１の命令に対して第１のレジスタグループのレジスタを割り当てるとともに、前記第２の命令に対して前記第１の命令によって前記第２のレジスタの値が不定値とならない第２のレジスタグループのレジスタを割り当てて、レジスタを分割するレジスタ分割部と、
前記プロセッサが実行する試験命令を生成する命令生成部と、
前記試験命令の演算種別フィールドが前記第１の命令を示し、前記試験命令の結果値レジスタフィールドが前記第２のレジスタグループのレジスタを指定している場合に、前記第１のレジスタグループのレジスタを指定するようにレジスタを補正するとともに、
前記試験命令の演算種別フィールドが前記第２の命令を示し、前記試験命令の入力値レジスタフィールドが前記第１のレジスタグループのレジスタを指定している場合に、前記第２のレジスタグループのレジスタを指定するようにレジスタを補正するレジスタ補正部と、
を備える試験命令列生成装置。
【請求項６】
第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令および１回の実行時に複数のレジスタにアクセスする第２の命令を実行するプロセッサの試験命令列を生成する情報処理装置であり、
試験命令の実行で使用されるレジスタを、第１のレジスタと、対応する第２のレジスタとが同一のレジスタグループに含まれるように、２つのレジスタグループに区分し、前記第１の命令に対して第１のレジスタグループのレジスタを割り当てるとともに、前記第２の命令に対して前記第１の命令によって前記第２のレジスタの値が不定値とならない第２のレジスタグループのレジスタを割り当てて、レジスタを分割するレジスタ分割部と、
前記プロセッサが実行する試験命令を生成する命令生成部と、
前記試験命令の演算種別フィールドが前記第１の命令を示し、前記試験命令の結果値レジスタフィールドが前記第２のレジスタグループのレジスタを指定している場合に、前記第１のレジスタグループのレジスタを指定するようにレジスタを補正するとともに、
前記試験命令の演算種別フィールドが前記第２の命令を示し、前記試験命令の入力値レジスタフィールドが前記第１のレジスタグループのレジスタを指定している場合に、前記第２のレジスタグループのレジスタを指定するようにレジスタを補正するレジスタ補正部と、
前記補正部で補正された命令を前記プロセッサに実行させる命令実行部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに対する試験命令列生成方法、生成プログラム、及び生成装置に関する。
【背景技術】
【０００２】
近年、プロセッサの処理高速化のために、ＳＩＭＤ（Single Instruction Multiple Data）命令という一つの命令で複数のデータ処理を行う方式が用いられるようになってきた。従来のプロセッサの試験では、ランダム命令列生成においてレジスタ指定を乱数で決定していたため、ＳＩＭＤ命令でない通常命令、例えばＳＩＳＤ（Single Instruction Single Data）命令によって、演算に使用しない結果値を出力するレジスタが不定値となる場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００２−５２７８２３号公報
【特許文献２】特開２０００−１８１７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、従来のプロセッサの試験においては、ＳＩＳＤ命令とＳＩＭＤ命令を混在させた命令列で試験を行うと、ＳＩＳＤ命令で演算に使用しない結果値を出力するレジスタが不定値となり、命令列の実行結果を検証できない場合がある。
【０００５】
そこで、本発明の一態様は、プロセッサの試験において、ＳＩＳＤ命令とＳＩＭＤ命令を混在させた場合でも、保障されたレジスタの値を用いて命令列の実行結果を検証できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
方法の一観点によれば、プロセッサ試験命令列生成方法が提供される。プロセッサ試験命令列生成方法は、試験命令の実行で使用されるレジスタを２つのレジスタグループに区分し、第１のレジスタを書き換えたときに少なくとも第２のレジスタの値を不定値にする第１の命令に第１のレジスタグループのレジスタを割り当てるとともに、１回の実行時に複数のレジスタにアクセスする第２の命令に第２のレジスタグループのレジスタを割り当ててレジスタを分割する工程、試験命令を生成する工程、および演算種別フィールドに応じて指定するレジスタを補正する工程と、を有する。
【発明の効果】
【０００７】
開示の方法によれば、ＳＩＳＤ命令とＳＩＭＤ命令を混在させた命令列でもレジスタの値を保障して試験を行うことが可能となる。
【図面の簡単な説明】
【０００８】
【図１】レジスタ構成の一例を示す図である。
【図２】ＳＩＭＤ命令が使用するレジスタの例を示す図である。
【図３】ＳＩＳＤ命令が使用するレジスタの例を示す図である。
【図４】レジスタの値が保障されないレジスタの使用例を示す図である。
【図５】実施例１における試験命令列生成装置のハードウェア構成図である。
【図６】実施例１における試験命令列生成装置の機能ブロック図である。
【図７】レジスタ分割情報の一例を示す図である。
【図８】分割数が２、開始レジスタ演算種別がＳＩＳＤ演算である場合のレジスタ分割テーブルのデータ構造を示す図である。
【図９】分割数が４、開始レジスタ演算種別がＳＩＭＤ演算である場合のレジスタ分割テーブルのデータ構造を示す図である
【図１０】試験命令のフィールド定義の一例を示す図である。
【図１１】実施例１における制御プログラムの試験命令列生成の処理手順を示すフローチャートである。
【図１２】実施例２における制御プログラムの試験命令列生成の処理手順を示すフローチャートである。
【図１３】実施例３における情報処理装置の機能ブロック図である。
【図１４】実施例３における制御プログラムの試験処理手順を示すフローチャートである。
【図１５】実施例３の変形例における情報処理装置のハードウェア構成図である。
【図１６】実施例３の変形例における情報処理装置の機能ブロック図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１０】
[実施例１]
＜ハードウェア構成＞
図５は、実施例１における試験命令列生成装置のハードウェア構成図である。実施例１では、試験命令列生成装置１００は、自身が有するプロセッサ１０１の試験命令列を生成する。また、試験対象となるプロセッサ１０１は、ＳＩＳＤ命令およびＳＩＭＤ命令の実行が可能なプロセッサである。ＳＩＳＤ命令は第１の命令の一例であり、ＳＩＭＤ命令は第２の命令の一例である。
【００１１】
図５において、試験命令列生成装置１００は、プロセッサ１０１、主記憶装置１０２、入力部１０３および出力部１０４を有し、相互にバス１０６を介して接続される。
【００１２】
主記憶装置１０２には試験命令列を生成するための制御プログラム１０が記憶される。プロセッサ１０１は、制御プログラム１０を主記憶装置１０２から読み出して実行する。なお、制御プログラム１０は、主記憶装置１０２に記憶させておかなくてもよい。例えば、制御プログラム１０は、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ（Digital Versatile Disc）、ＵＳＢ(Universal Serial Bus)メモリ等の可搬型記録媒体に
記憶させておくことができる。試験命令列生成装置１００は、可搬型記録媒体から制御プログラム１０を読み出して実行してもよい。
【００１３】
プロセッサ１０１は、入力部１０３から、命令列の生成が完了したか否か等の判定に用いる情報を受信することができる。また、プロセッサ１０１は、出力部１０４に対し、生成した命令列や試験実行結果を出力する。出力部１０４は、プロセッサ１０１から出力された試験命令列等を、補助記憶装置や可搬型記録媒体に書き出したり、液晶ディスプレイ等に表示したりすることができる。
【００１４】
＜レジスタの構成＞
図１に、実施例１において、プロセッサ１０１が有するレジスタを、２つの区分に分類して例示する。実施例１では、プロセッサ１０１の有するレジスタは、例えば、要素０および要素１の２つの区分から構成される。図１では、要素０にレジスタ０からレジスタ６３が含まれ、要素１にレジスタ６４からレジスタ１２７が含まれる。
【００１５】
プロセッサ１０１は、ＳＩＭＤ命令では、要素０に属するレジスタ０からレジスタ６３および要素１に属するレジスタ６４からレジスタ１２７を並列して使用する。ここで、「並列して使用する」とは、１つのＳＩＭＤ命令の実行時に、例えば、入力値が格納されたレジスタからの入力と、結果値を格納するレジスタへの出力とが、それぞれ複数のレジスタに対してなされることをいう。以下、入力値が格納されたレジスタを入力値レジスタ、結果値を格納するレジスタを結果値レジスタと呼ぶ。また、１つのＳＩＭＤ命令の実行で、並列してアクセスされる複数の入力値レジスタを「対応する入力値レジスタ」と呼ぶ。同様に、１つのＳＩＭＤ命令の実行で、並列して結果値が出力される複数の出力レジスタを「対応する結果値レジスタ」と呼ぶ。
【００１６】
一方、プロセッサ１０１は、ＳＩＳＤ命令では、要素０に属するレジスタ０からレジスタ６３は使用するが、要素１に属するレジスタ６４からレジスタ１２７は使用しない。
【００１７】
なお、要素０に属するレジスタは第１のレジスタの一例であり、要素１に属するレジスタは第２のレジスタの一例である。また、プロセッサ１０１が、ＳＩＳＤ命令、ＳＩＭＤ命令を実行することによってなされる演算を、それぞれＳＩＳＤ演算、ＳＩＭＤ演算という。
【００１８】
図２から図４は、試験命令の演算種別と、入力値レジスタおよび結果値レジスタの関係を例示する。
【００１９】
図２に、ＳＩＭＤ命令が使用するレジスタの例を示す。図２では、プロセッサ１０１は、ＳＩＭＤ命令の実行で、入力値レジスタとして要素０のレジスタ０、結果値レジスタとして要素０のレジスタ２を使用する。ＳＩＭＤ命令の実行においては、さらに、プロセッサ１０１は、要素１のレジスタ６４を、要素０のレジスタ０に対応する入力値レジスタとして使用する。またプロセッサ１０１は、要素１のレジスタ６６を要素０のレジスタ２に対応する結果値レジスタとして使用する。
【００２０】
図３に、ＳＩＳＤ命令が使用するレジスタの例を示す。図３では、プロセッサ１０１は、ＳＩＳＤ命令の実行で、入力値レジスタとして要素０のレジスタ０、結果値レジスタとして要素０のレジスタ２を使用する。この場合、プロセッサ１０１は、要素０のレジスタ０に対応する入力値レジスタである要素１のレジスタ６４も、要素０のレジスタ２に対応する結果値レジスタである要素１のレジスタ６６も使用しない。実施例１のプロセッサ１０１では、対応する複数のレジスタの１つがＳＩＳＤ命令に使用されると、対応する他のレジスタの値が不定値となる。このため、プロセッサ１０１が、ＳＩＳＤ命令の結果値レジスタとして要素０のレジスタ２を使用すると、対応する結果値レジスタである要素１のレジスタ６６は不定値となる。
【００２１】
図４は、図１のレジスタ構成において、レジスタの値が保障されない場合のレジスタの使用例を示す。図３の場合と同様に、プロセッサ１０１は、ＳＩＳＤ命令の実行で、入力値レジスタとして要素０のレジスタ０、結果値レジスタとして要素０のレジスタ２を使用する。この場合、プロセッサ１０１は、要素０のレジスタ０に対応する入力値レジスタである要素１のレジスタ６４も、要素０のレジスタ２に対応する結果値レジスタである要素１のレジスタ６６も使用しない。このため、プロセッサ１０１が、ＳＩＳＤ命令の結果値レジスタとして要素０のレジスタ２を使用すると、対応する結果値レジスタである要素１のレジスタ６６は不定値となる。
【００２２】
ここで、上記ＳＩＳＤ命令の次に、ＳＩＭＤ命令が実行される場合を考える。図４の例では、ＳＩＭＤ命令の次に、入力値レジスタとして要素０のレジスタ２、結果値レジスタ
として要素０のレジスタ４を使用するＳＩＭＤ命令が例示されている。図１に例示したように、要素０のレジスタ２には要素１のレジスタ６６が対応し、要素０のレジスタ４には要素１のレジスタ６８が対応する。したがって、入力値レジスタとして要素０のレジスタ２、結果値レジスタとして要素０のレジスタ４を使用すると、入力値レジスタとしてレジスタ６６、結果値レジスタとしてレジスタ６８を使用したＳＩＭＤ命令も並列して実行される。この場合、ＳＩＳＤ命令の実行により、レジスタ６６の値が不定値となっているため、結果値を出力するレジスタ６８も不定値となる。すなわち、ＳＩＳＤ命令の実行により不定値となった結果値レジスタが、ＳＩＭＤ命令の入力値レジスタとして使用されると、ＳＩＭＤ命令の結果値レジスタとして使用する要素１のレジスタの値が保障されなくなる。
【００２３】
実施例１では、ＳＩＳＤ命令の実行により不定値となったレジスタを、ＳＩＭＤ命令の入力値レジスタとして使用しないようにする。例えば、プロセッサ１０１は、複数のレジスタを、ＳＩＳＤ演算用のレジスタグループとＳＩＭＤ演算用のレジスタグループの２つのレジスタグループに区分する。ＳＩＳＤ演算用のレジスタグループは第１のレジスタグループの一例であり、ＳＩＭＤ演算用のレジスタグループは第２のレジスタグループの一例である。
【００２４】
プロセッサ１０１は、ＳＩＳＤ命令の実行において、ＳＩＳＤ演算用のレジスタグループに区分されたレジスタを使用する。また、プロセッサ１０１は、ＳＩＭＤ命令の実行において、ＳＩＭＤ演算用のレジスタグループに区分されたレジスタを使用する。実施例１では、プロセッサ１０１は、試験命令列生成時に、命令の実行において使用する入力値レジスタおよび結果値レジスタを、演算種別に応じたレジスタに補正する。
【００２５】
＜試験命令列生成装置の機能ブロック＞
図６は、実施例１における試験命令列生成装置の機能ブロック図である。図６において、試験命令列生成装置１００は、自身が有するプロセッサ１０１の試験命令列を生成する装置であって、プロセッサ１０１と主記憶装置１０２とを有する。
【００２６】
主記憶装置１０２には、制御プログラム１０と制御データ２０が格納される。制御プログラム１０は、レジスタ分割部１１、命令生成部１２、およびレジスタ補正部１３として機能するプログラムモジュールを有する。プログラムモジュールは、サブプログラムなどとも呼ばれる。但し、レジスタ分割部１１、命令生成部１２、およびレジスタ補正部１３のいずれか１以上を、ハードウェア回路、専用ＬＳＩ等で実現してもよい。制御データ２０は、レジスタ分割情報格納部２１、レジスタ分割テーブル２２、および命令列格納部２３として使用される記憶領域を有する。
【００２７】
レジスタ分割部１１は、レジスタ分割情報格納部２１から取得したレジスタ分割情報およびプロセッサ１０１のレジスタ数に基づいて、レジスタ分割テーブル２２を生成する。
【００２８】
図７に、レジスタ分割情報の構成を例示する。レジスタ分割情報は、「分割数」および「開始レジスタ演算種別」を含む。
【００２９】
「分割数」は、全レジスタを何分割するかを定義する値であり、例えば、試験対象プロセッサの全レジスタが６４個の場合は、２、４、８、１６、３２の値をとる。ここでは、全レジスタのうち、レジスタ０からレジスタ３２を要素０、レジスタ３３からレジスタ６３を要素１とする。「分割数」が４の場合、レジスタ分割部１１は、全レジスタを４つのレジスタ群に分割する。各レジスタ群は、それぞれ１６個のレジスタを含む。また、要素０のレジスタとこれに対応する要素１のレジスタは、同じレジスタ群に含まれる。具体的には、レジスタ分割部１１は、全レジスタを（１）要素０レジスタ０からレジスタ７と対
応する要素１のレジスタ３２からレジスタ３９、（２）要素０レジスタ８からレジスタ１５と対応する要素１のレジスタ４０からレジスタ４７、（３）要素０レジスタ１６からレジスタ２３と対応する要素１のレジスタ４８からレジスタ５５および（４）要素０レジスタ２４からレジスタ３１と対応する要素１のレジスタ５６からレジスタ６３、の４つのレジスタ群に分割する。レジスタ分割部１１は、４つのレジスタ群のうち奇数番目である（１）、（３）のレジスタ群を第１のレジスタグループに区分する。また、レジスタ分割部１１は、４つのレジスタ群のうち偶数番目である（２）、（４）のレジスタ群を第２のレジスタグループに区分する。
【００３０】
すなわち、レジスタ分割部１１は、まず、全レジスタを「分割数」で指定された数のレジスタ群に分割する。次に、レジスタ分割部１１は、奇数番目のレジスタ群を第１のレジスタグループに区分し、偶数番目のレジスタ群を第２のレジスタグループに区分する。結果として、奇数番目のレジスタ群に属するレジスタは、第１のレジスタグループに区分され、偶数番目のレジスタ群に属するレジスタは、第２のレジスタグループに区分される。
【００３１】
「開始レジスタ演算種別」は、レジスタ分割後の第１のレジスタグループをＳＩＳＤ演算に割り当てるか、ＳＩＭＤ演算に割り当てるかを定義する。レジスタ分割部１１は、第１のレジスタグループをＳＩＳＤ演算に割り当てた場合は、第２のレジスタグループをＳＩＭＤ演算に割り当てる。また、レジスタ分割部１１は、第１のレジスタグループをＳＩＭＤ演算に割り当てた場合は、第２のレジスタグループをＳＩＳＤ演算に割り当てる。
【００３２】
図８は、プロセッサ１０１の全レジスタ数が１２８、要素０がレジスタ０からレジスタ６３、要素１がレジスタ６４からレジスタ１２７、レジスタ分割情報の「分割数」が２、「開始レジスタ演算種別」がＳＩＳＤ演算である場合の、レジスタ分割テーブル２２の例である。
【００３３】
この例において、レジスタ分割部１１は、以下のようにレジスタ分割テーブル２２を生成する。レジスタ分割部１１は、全レジスタを（１）要素０のレジスタ０からレジスタ３１と対応する要素１のレジスタ６４からレジスタ９５と、（２）要素０のレジスタ３２からレジスタ６３と対応する要素１のレジスタ９６からレジスタ１２７、の２つのレジスタ群に分割する。次に、レジスタ分割部１１は、奇数番目の（１）のレジスタ群を第１のレジスタグループに区分し、偶数番目の（２）のレジスタ群を第２のレジスタグループに区分する。レジスタ分割部１１は、第１のレジスタグループをＳＩＳＤ演算、第２のレジスタグループをＳＩＭＤ演算に割り当て、レジスタ分割テーブル２２の生成を終了する。
【００３４】
図９は、プロセッサ１０１の全レジスタ数が１２８、要素０がレジスタ０からレジスタ６３、要素１がレジスタ６４からレジスタ１２７、レジスタ分割情報の「分割数」が４、「開始レジスタ演算種別」がＳＩＭＤ演算である場合の、レジスタ分割テーブル２２の例である。
【００３５】
この例において、レジスタ分割部１１は、以下のようにレジスタ分割テーブル２２を生成する。レジスタ分割部１１は、全レジスタを（１）要素０レジスタ０からレジスタ１５と対応する要素１のレジスタ６４からレジスタ７９、（２）要素０レジスタ１６からレジスタ３１と対応する要素１のレジスタ８０からレジスタ９５、（３）要素０レジスタ３２からレジスタ４７と対応する要素１のレジスタ９６からレジスタ１１１および（４）要素０レジスタ４８からレジスタ６３と対応する要素１のレジスタ１１２からレジスタ１２７、の４つのレジスタ群に分割する。レジスタ分割部１１は、４つのレジスタ群のうち奇数番目である（１）、（３）のレジスタ群を第１のレジスタグループに区分する。また、レジスタ分割部１１は、４つのレジスタ群のうち偶数番目である（２）、（４）のレジスタ群を第２のレジスタグループに区分する。レジスタ分割部１１は、第１のレジスタグルー
プをＳＩＭＤ演算、第２のレジスタグループをＳＩＳＤ演算に割り当て、レジスタ分割テーブル２２の生成を終了する。
【００３６】
命令生成部１２は、試験命令を生成し命令列格納部２３に格納する。乱数データを用いて命令を生成した場合に、未定義命令とならないようにするため、命令生成部１２は、命令種ごとに定義されたＡＮＤデータおよびＯＲデータを用いて以下の処理を行う。命令生成部１２は、乱数データに対し、まずＡＮＤデータとのＡＮＤ演算を行って特定ビットをクリアする。次に、命令生成部１２は、その結果に対してＯＲデータとのＯＲ演算を行って特定ビットを１に設定する。
【００３７】
図１０に、命令生成部１２により生成された試験命令のフィールド定義を例示する。試験命令は、「演算種別フィールド」、「命令種フィールド」、「入力値レジスタフィールド」および「結果値レジスタフィールド」を有する。「演算種別フィールド」は、試験命令の上位１ビット（例えば６３ｂｉｔ）を使用して、ＳＩＳＤ演算またはＳＩＭＤ演算の種別を示す。「命令種フィールド」は、試験命令の、例えば６２ｂｉｔから１２ｂｉｔを使用して、プロセッサ１０１の仕様により定まる命令種を示す。「入力値レジスタフィールド」は、試験命令の、例えば１１ｂｉｔから６ｂｉｔを使用して、演算への入力値が格納されたレジスタを指定する。「結果値レジスタフィールド」は、試験命令の、例えば５ｂｉｔから０ｂｉｔを使用して、演算の結果値を格納するレジスタを指定する。すなわち、プロセッサ１０１は、試験命令の実行において「入力値レジスタフィールド」に指定されたレジスタの値を入力値として使用する。また、プロセッサ１０１は、「結果値レジスタフィールド」に指定されたレジスタに、試験命令の実行により得られた結果を書き込む。
【００３８】
レジスタ補正部１３は、試験命令の「演算種別フィールド」の示す演算種別に応じて、以下の処理を行う。
【００３９】
（１）演算種別がＳＩＭＤ演算の場合の補正；
「演算種別フィールド」がＳＩＭＤ演算の場合、レジスタ補正部１３は「入力値レジスタフィールド」の補正を行う。
【００４０】
なお、「結果値レジスタフィールド」が指定するレジスタがＳＩＳＤ演算用のレジスタグループに区分されたレジスタであっても、結果値レジスタの値は上書きされるので、プロセッサ１０１は正常な処理ができる。このため、レジスタ補正部１３は「結果値レジスタフィールド」が指定するレジスタがＳＩＳＤ演算用のレジスタである場合でも、「結果値レジスタフィールド」の補正は行わなくてもよい。ただし、検証処理を簡素化するために、ＳＩＳＤ演算用に割り当てたレジスタについては、要素０のレジスタについて試験命令列の実行結果を検証し、要素１のレジスタについて試験命令列の実行結果を検証しないようにすることもできる。この場合には、ＳＩＭＤ命令の実行結果を検証するため、「演算種別フィールド」がＳＩＭＤ演算の場合には、入力値レジスタフィールドとともに、結果値レジスタについても、上記補正を行うことが望ましい。
【００４１】
まず、レジスタ補正部１３は、「入力値レジスタフィールド」の補正を行うかどうかを判断する。レジスタ補正部１３は、「入力値レジスタフィールド」で指定される入力値レジスタとレジスタ分割テーブル２２の「対象演算種別」とを照合する。ＳＩＭＤ命令であって、かつ、入力値レジスタが、ＳＩＳＤ演算用のレジスタグループに区分されている場合、レジスタ補正部１３は、入力値レジスタをＳＩＭＤ演算用のレジスタグループに区分されたレジスタに補正する。なお、ＳＩＭＤ命令であって、入力値レジスタがＳＩＭＤ演算用のレジスタグループに区分されている場合には、レジスタ補正部１３は補正を行わない。
【００４２】
レジスタ補正部１３は、以下の方法によりレジスタの補正を行うことができる。例えば、図８におけるレジスタ分割情報の「分割数」が２の場合について説明する。試験命令において「入力値レジスタフィールド」が１１ｂｉｔから６ｂｉｔを使用し、図８におけるレジスタ０を指定している場合、レジスタ補正部１３は、１１ｂｉｔ目を反転させることで、レジスタ３２を指定するように補正することができる。つまり、レジスタ分割情報の「分割数」が２の場合、レジスタ補正部１３は、１１ｂｉｔ目を反転させることで、ＳＩＭＤ演算用のレジスタへの補正が可能となる。同様に、レジスタ補正部１３は、「分割数」が４の場合は１０ｂｉｔ目、「分割数」が８の場合は９ｂｉｔ目を反転させれば、ＳＩＭＤ演算用のレジスタへの補正が可能となる。
【００４３】
「結果値レジスタフィールド」の補正を行う場合には、以下の処理を行う。
【００４４】
まず、レジスタ補正部１３は、「結果値レジスタフィールド」の補正を行うかどうかを判断する。レジスタ補正部１３は、「結果値レジスタフィールド」で指定される結果値レジスタとレジスタ分割テーブル２２の「対象演算種別」とを照合する。ＳＩＭＤ命令であって、かつ、結果値レジスタが、ＳＩＳＤ演算用のレジスタグループに区分されている場合、レジスタ補正部１３は、結果値レジスタをＳＩＭＤ演算用のレジスタグループに区分されたレジスタに補正する。なお、ＳＩＭＤ命令であって、結果値レジスタがＳＩＭＤ演算用のレジスタグループに区分されている場合には、レジスタ補正部１３は補正を行わない。
【００４５】
レジスタ補正部１３は、以下の方法によりレジスタの補正を行うことができる。例えば、図８におけるレジスタ分割情報の「分割数」が２の場合について説明する。試験命令において「結果値レジスタフィールド」が５ｂｉｔから０ｂｉｔを使用し、図８におけるレジスタ３１を指定している場合、レジスタ補正部１３は、５ｂｉｔ目を反転させることで、レジスタ６３を指定するように補正することができる。つまり、レジスタ分割情報の「分割数」が２の場合、レジスタ補正部１３は、５ｂｉｔ目を反転させることで、ＳＩＭＤ演算用のレジスタへの補正が可能となる。同様に、レジスタ補正部１３は、「分割数」が４の場合は４ｂｉｔ目、「分割数」が８の場合は３ｂｉｔ目を反転させれば、ＳＩＭＤ演算用のレジスタへの補正が可能となる。
【００４６】
（２）演算種別がＳＩＳＤ演算の場合の補正；
「演算種別フィールド」がＳＩＳＤ演算の場合、レジスタ補正部１３は、「結果値レジスタフィールド」の補正を行う。なお、「入力値レジスタフィールド」が指定するレジスタがＳＩＭＤ演算用のレジスタであっても、プロセッサ１０１は、正常な処理ができる。このため、レジスタ補正部１３は、「入力値レジスタフィールド」が指定するレジスタがＳＩＭＤ演算用のレジスタである場合でも、「入力値レジスタフィールド」の補正は行わなくてもよい。
【００４７】
まず、レジスタ補正部１３は、「結果値レジスタフィールド」の補正を行うかどうかを判断する。レジスタ補正部１３は、「結果値レジスタフィールド」で指定される結果値レジスタとレジスタ分割テーブル２２の「対象演算種別」とを照合する。ＳＩＳＤ命令であって、かつ、結果値レジスタが、ＳＩＭＤ演算用のレジスタグループに区分されている場合、レジスタ補正部１３は、結果値レジスタをＳＩＳＤ演算用のレジスタグループに区分されているレジスタに補正する。なお、ＳＩＳＤ命令であって、結果値レジスタがＳＩＳＤ演算用のレジスタグループに区分されている場合には、レジスタ補正部１３は補正を行わない。
【００４８】
レジスタ補正部１３は、以下の方法によりレジスタの補正を行うことができる。例えば
、図８におけるレジスタ分割情報の「分割数」が２の場合について説明する。試験命令において「結果値レジスタフィールド」が５ｂｉｔから０ｂｉｔを使用し、図８におけるレジスタ３２を指定している場合、レジスタ補正部１３は、５ｂｉｔ目を反転させることで、レジスタ０を指定するように補正することができる。つまり、レジスタ分割情報の「分割数」が２の場合、レジスタ補正部１３は、５ｂｉｔ目を反転させることで、ＳＩＳＤ演算用のレジスタへの補正が可能となる。同様に、レジスタ補正部１３は、「分割数」が４の場合は４ｂｉｔ目、「分割数」が８の場合は３ｂｉｔ目を反転させれば、ＳＩＳＤ演算用のレジスタへの補正が可能となる。
【００４９】
＜処理フロー＞
図１１は、実施例１における制御プログラム１０の試験命令列生成の処理手順を示すフローチャートである。試験命令列生成装置１００のプロセッサ１０１は、例えば、主記憶装置１０２に実行可能に展開された制御プログラム１０にしたがって、図１１の処理を実行する。ただし、以下の説明では、制御プログラム１０が、各処理を実行するものとして説明する。
【００５０】
ステップＳ１１において、制御プログラム１０（レジスタ分割部１３）は、レジスタ分割情報の「分割数」および「開始レジスタ演算種別」、並びに試験対象プロセッサのレジスタ数に基づいて、レジスタ分割テーブル２２を生成する。制御プログラム１０（プロセッサ１０１）は、レジスタを分割する工程の一例として、ステップＳ１１の処理を実行する。
【００５１】
ステップＳ１２において、制御プログラム１０（命令生成部１２）は、試験命令を生成し、命令列格納部２３に格納する。制御プログラム１０（プロセッサ１０１）は、試験命令を生成する工程の一例として、ステップＳ１２の処理を実行する。
【００５２】
ステップＳ１３において、制御プログラム１０（レジスタ補正部１３）は、ステップＳ１２で生成した試験命令の「演算種別フィールド」が、ＳＩＭＤ演算か否かを判定する。制御プログラム１０は、試験命令がＳＩＳＤ演算である場合にはステップＳ１４に、ＳＩＭＤ演算である場合にはステップＳ１５に進む。
【００５３】
ステップＳ１４において、制御プログラム１０（レジスタ補正部１３）は、レジスタ分割テーブル２２を参照して、ＳＩＳＤ命令の「結果値レジスタフィールド」が指定するレジスタが、ＳＩＳＤ演算用のレジスタであるか否かを判定する。制御プログラム１０は、上記レジスタがＳＩＭＤ演算用のレジスタである場合にはステップＳ１６に、ＳＩＳＤ演算用のレジスタである場合にはステップＳ１８に進む。
【００５４】
ステップＳ１５において、制御プログラム１０（レジスタ補正部１３）は、レジスタ分割テーブル２２を参照して、ＳＩＭＤ命令の「入力値レジスタフィールド」が指定するレジスタが、ＳＩＭＤ演算用のレジスタであるか否かを判定する。検証処理を簡素化するために、「結果値レジスタフィールド」の補正も行う場合は、制御プログラム１０（レジスタ補正部１３）は、「結果値レジスタフィールド」が指定するレジスタについても、ＳＩＭＤ演算用のレジスタであるか否かを判定すればよい。制御プログラム１０は、上記レジスタがＳＩＳＤ演算用のレジスタである場合にはステップＳ１７に、ＳＩＭＤ演算用のレジスタである場合にはステップＳ１８に進む。
【００５５】
ステップＳ１６において、制御プログラム１０（レジスタ補正部１３）は、ＳＩＳＤ命令の「結果値レジスタフィールド」が指定するＳＩＭＤ演算用のレジスタを、ＳＩＳＤ演算用のレジスタに補正する。制御プログラム１０（プロセッサ１０１）は、レジスタを補正する工程の一例として、ステップＳ１６の処理を実行する。
【００５６】
ステップＳ１７において、制御プログラム１０（レジスタ補正部１３）は、ＳＩＭＤ命令の「入力値レジスタフィールド」が指定するＳＩＳＤ演算用のレジスタを、ＳＩＭＤ演算用のレジスタに補正する。検証処理を簡素化するために、「結果値レジスタフィールド」の補正も行う場合は、「結果値レジスタフィールド」が指定するＳＩＳＤ演算用のレジスタについても、ＳＩＭＤ演算用のレジスタに補正すればよい。制御プログラム１０（プロセッサ１０１）は、レジスタを補正する工程の一例として、ステップＳ１７の処理を実行する。
【００５７】
ステップＳ１８において、制御プログラム１０（レジスタ補正部１３）は、命令列の生成が完了したか否かを判定する。この判定は、指定数の命令が生成されたか、一定条件を満たす試験が行われたか等の条件をあらかじめプログラム中に指定しておくことにより行うことが可能である。また、この判定は、入力部１０３から命令列の生成が完了したか否かの判定に必要な情報を受信することにより行うこともできる。命令列の生成が完了していない場合には、制御プログラム１０はステップＳ１２に戻り、命令列の生成が完了するまでステップＳ１２からステップＳ１８の処理を繰り返す。命令列の生成が完了した場合には、制御プログラム１０は試験命令列生成処理を終了する。
【００５８】
実施例１において、試験命令列生成装置１００は、レジスタ分割情報に基づき、レジスタ分割テーブル２２を生成する。試験命令列生成装置１００は、レジスタ分割テーブル２２の生成により、レジスタを第１のレジスタグループと第２のレジスタグループに分割し、それぞれＳＩＳＤ演算用とＳＩＭＤ演算用に割り当てる。試験命令列生成装置１００は、レジスタ分割テーブル２２を参照することにより、生成された試験命令が、演算種別に応じたレジスタを使用するように、試験命令で指定されたレジスタを補正することができる。その結果、ＳＩＳＤ命令の実行において、不定値となってしまうレジスタが、ＳＩＭＤ命令の入力値レジスタとして使用されることがない。したがって、保障されたレジスタの値を用いて、試験命令列を実行し、試験結果を確認できる。
【００５９】
また、試験命令が使用するレジスタの補正は、乱数によって発生させた命令とレジスタ分割テーブル２２とを比較をすることにより行う。乱数によって発生させた命令で指定されたレジスタが、上記命令の演算種別用のレジスタでない場合、レジスタフィールドのビット反転により、上記命令の演算種別用のレジスタに補正する。したがって、レジスタ分割テーブル２２との比較およびビット反転という簡単な操作で、演算種別に応じたレジスタを指定することができる。
【００６０】
[実施例２]
上記実施例１は、プロセッサ１０１が、特定のレジスタ分割情報に対する試験命令列を生成する例である。
【００６１】
これに対し、本実施例２では、プロセッサ１０１が、複数のレジスタ分割情報に対する試験命令列を生成する例を示す。実施例２では、レジスタ分割部１１は、レジスタ分割情報を更新し、レジスタのグループ分けを変更する。例えば、レジスタ分割部１１が、レジスタ分割情報の「開始レジスタ演算種別」をＳＩＳＤ演算からＳＩＭＤ演算に変更すると、ＳＩＳＤ演算用のレジスタグループに区分されていたレジスタが、ＳＩＭＤ演算用のレジスタグループに区分される。この場合、ＳＩＳＤ演算では使用されなかった要素１のレジスタが、ＳＩＭＤ演算用のレジスタグループに区分されることで使用されることとなり、使用されていなかった要素１のレジスタを試験対象とすることが可能となる。このように、プロセッサ１０１が、複数のレジスタ分割情報に対する試験命令列を生成することにより、レジスタを網羅的に試験対象とすることが可能となる。
【００６２】
実施例２における試験命令列生成装置１００のハードウェア構成は、実施例１と同じであるので、その説明を省略する。
【００６３】
図１２は、実施例２における制御プログラム１０の試験命令列生成の処理手順を示すフローチャートである。Ｓ１１からＳ１８までは、実施例１と同じであるので、その説明を省略する。
【００６４】
ステップＳ１８において、命令列の生成が完了していない場合には、制御プログラム１０はステップＳ２１に進む。命令列の生成が完了した場合には、制御プログラム１０は試験命令列生成処理を終了する。
【００６５】
ステップＳ２１において、制御プログラム１０（命令生成部１２）は、レジスタ分割情報を更新するか否かを判定する。この判定は、試験対象とするレジスタ分割情報のすべてについて試験を行ったか否かにより行うことができる。試験対象とするレジスタ分割情報は、あらかじめプログラム中に指定しておいてもよく、入力部１０３から受信してもよい。制御プログラム１０は、レジスタ分割情報を更新しない場合には、ステップＳ１２に戻り、更新する場合にはステップＳ２２に進む。
【００６６】
ステップＳ２２において、制御プログラム１０（レジスタ分割部１１）はレジスタ分割情報を更新し、ステップＳ１１の処理に戻る。制御プログラム１０（プロセッサ１０１）は、前記第１の命令と前記第２の命令との間で、それぞれに割り当てるレジスタグループを変更する工程の一例として、ステップＳ２２の処理を実行する。また、制御プログラム１０（プロセッサ１０１）は、第１のレジスタグループおよび第２のレジスタグループそれぞれに含まれるレジスタのレジスタ番号の組み合わせにおいて、連続するレジスタ番号の個数を変更する工程の一例として、ステップＳ２２の処理を実行する。
【００６７】
例えば、レジスタ分割部１１は、レジスタ分割情報の開始レジスタ演算種別を更新し、レジスタのグループ分けを変更する。つまり、通常命令とＳＩＭＤ命令との間で、それぞれに割り当てるレジスタグループを変更する。その結果、ＳＩＳＤ演算用のレジスタグループに区分されていたレジスタが、ＳＩＭＤ演算用のレジスタグループに区分される場合が生じる。また、ＳＩＭＤ演算用のレジスタグループに区分されていたレジスタが、ＳＩＳＤ演算用のレジスタグループに区分される場合が生じる。したがって、レジスタ分割情報の更新を繰り返し、レジスタのグループ分けを変更することで、レジスタを網羅的に試験対象とすることが可能となる。
【００６８】
さらに、例えば、レジスタ分割部１１は、レジスタ分割情報の分割数を更新する。その結果、ＳＩＳＤ演算用のレジスタグループおよびＳＩＭＤ演算用のレジスタグループそれぞれに含まれるレジスタのレジスタ番号の組み合わせにおいて、連続するレジスタ番号の個数が変更される。例えば、分割数が２の場合には、図８のように、要素０において、ＳＩＳＤ演算用として、レジスタ０からレジスタ３１のレジスタ番号が連続してグループ分けされ、ＳＩＭＤ演算用として、レジスタ３２からレジスタ６３のレジスタ番号が連続してグループ分けされる。また、要素１において、ＳＩＳＤ演算用として、レジスタ６４からレジスタ９５のレジスタ番号が連続してグループ分けされ、ＳＩＭＤ演算用として、レジスタ９６からレジスタ１２７のレジスタ番号が連続してグループ分けされる。また、例えば、分割数が４の場合には、図９のように、要素０において、ＳＩＭＤ演算用として、レジスタ０からレジスタ１５、レジスタ３２からレジスタ４７のレジスタ番号が連続してグループ分けされる。さらに、ＳＩＳＤ演算用として、レジスタ１６からレジスタ３１、レジスタ４８からレジスタ６３のレジスタ番号が連続してグループ分けされる。さらに、要素１において、ＳＩＭＤ演算用として、レジスタ６４からレジスタ７９、レジスタ９６からレジスタ１１１のレジスタ番号が連続してグループ分けされる。さらに、ＳＩＳＤ演
算用として、レジスタ８０からレジスタ９５、レジスタ１１２からレジスタ１２７のレジスタ番号が連続してグループ分けされる。このように、分割数を変更することで、各レジスタグループに連続して割り当てるレジスタ番号の数を変更できる。したがって、多様なレジスタ割り当てが実現される。
【００６９】
[実施例３]
上記実施例１、２では、プロセッサ１０１が試験命令列を生成する例について説明した。これに対し、本実施例３では、プロセッサ１０１が試験命令列を生成した後、生成した試験命令列を実行し、自身のプロセッサ１０１の試験を行う例について説明する。
【００７０】
実施例３における情報処理装置２００のハードウェア構成は、実施例１の試験命令列生成装置１００と同じであるので、その説明を省略する。
【００７１】
図１３は、実施例３における情報処理装置２００の機能ブロック図である。実施例３では、実施例１における試験命令列生成装置１００の構成に加え、制御プログラム１０は、さらに、命令実行部１４と実行結果照合部１５とを有する。また制御データ２０は、さらに、実行結果期待値格納部２４と実行結果格納部２５とを有する。
【００７２】
命令実行部１４は、命令列格納部２３に格納された命令を実行する。
【００７３】
実行結果照合部１５は、命令列の実行回数が１回目の場合は、実行結果を実行結果期待値格納部２４へ格納する。実行結果照合部１５は、実行回数が２回目以降の場合は、実行結果を実行結果期待値格納部２４に格納された実行結果期待値と照合し、照合結果を実行結果格納部２５へ格納する。
【００７４】
図１４は、実施例３における制御プログラム１０の試験処理手順を示すフローチャートである。Ｓ１１からＳ１８までは、実施例１と同じであるので、その説明を省略する。
【００７５】
ステップＳ１８において、命令列の生成が完了していない場合には、制御プログラム１０はステップＳ１２に戻り、命令列の生成が完了するまでステップＳ１２からステップＳ１８の処理を繰り返す。命令列の生成が完了した場合には、制御プログラム１０はステップＳ３１に進む。
【００７６】
ステップＳ３１において、制御プログラム１０（命令実行部１４）は、命令列格納部２３に格納された命令を実行する。さらに、制御プログラム１０（実行結果照合部１５）は、命令列の実行回数が１回目の場合は、実行結果を実行結果期待値格納部２４へ格納する。実行回数が２回目以降の場合は、制御プログラム１０（実行結果照合部１５）は、実行結果を実行結果期待値格納部２４に格納された実行結果期待値と照合し、照合結果を実行結果格納部２５へ格納する。制御プログラム１０（実行結果照合部１５）は、命令列を任意の回数実行し、実行結果期待値と照合することができる。制御プログラム１０（実行結果照合部１５）は、命令列の実行および実行結果の照合が終わると、ステップＳ３２に進む。
【００７７】
ステップＳ３２において、制御プログラム１０は、試験が完了したか否かを判定する。この判定は、指定回数の実行結果が得られたか、一定条件を満たす試験が行われたか等の条件をあらかじめ指定しておくことにより行うことが可能である。また、この判定は、入力部１０３から試験が完了したか否かの判定に必要な情報を受信することにより行うことも可能である。試験が完了していない場合には、制御プログラム１０はステップＳ２２に進む。試験が完了した場合には、制御プログラム１０は試験処理を終了する。このとき、制御プログラム１０は、出力部１０４から、実行結果を出力し、補助記憶装置や可搬型記
録媒体に書き出したり、液晶ディスプレイ等に表示したりすることができる。
〔変形例〕
変形例では、実施例３において、他の情報処理装置２００ａのプロセッサを試験対象とする例を示す。
【００７８】
図１５は、実施例３の変形例における情報処理装置２００および試験対象の情報処理装置２００ａのハードウェア構成図である。
【００７９】
情報処理装置２００は、実施例１の試験命令列生成装置１００のハードウェア構成に加え、例えば、ネットワークインターフェース１０５を有する。試験命令列生成装置１００と同様の構成については、その説明を省略する。
【００８０】
情報処理装置２００は、ネットワークインターフェース１０５を介して、試験対象の情報処理装置２００ａのプロセッサ１０１ａの試験を行う。まず、情報処理装置２００は、生成した試験命令列を試験対象の情報処理装置２００ａに送信する。次に、試験対象の情報処理装置２００ａは、情報処理装置２００から送信された試験命令列を主記憶装置１０２ａの命令列格納部２３に書き込み、各試験命令列の書き込みアドレスを記憶しておく。そして、試験対象の情報処理装置２００ａは、試験対象のプロセッサ１０１ａが、主記憶装置１０２ａに書き込まれた試験命令列を読み込んで実行するように制御する。
【００８１】
試験対象の情報処理装置２００ａは、プロセッサ１０１ａ、主記憶装置１０２ａおよびネットワークインターフェース１０５ａを有し、相互にバス１０６ａを介して接続される。
【００８２】
主記憶装置１０２ａには、情報処理装置２００で生成された試験命令列を実行するための制御プログラム１０ａが記憶される。プロセッサ１０１ａは、制御プログラム１０ａを主記憶装置１０２ａから読み出して実行する。例えば、命令列格納部２３に記憶された各試験命令列の末尾に、制御プログラム１０ａの命令実行部１４へ分岐する分岐命令（ＲＥＴＵＲＮ命令、無条件ＪＵＭＰ等）を設定しておけばよい。一方、命令実行部１４は、命令列格納部２３に記憶された各試験命令列へ分岐する分岐命令（上記書き込みアドレスへの分岐命令）を実行すればよい。
【００８３】
なお、制御プログラム１０ａは、主記憶装置１０２ａに記憶させておく必要はない。例えば、制御プログラム１０ａは、ＣＤ−ＲＯＭやＤＶＤ、ＵＳＢメモリ等の可搬型記録媒体に記憶させておくことができる。試験対象の情報処理装置２００ａは、可搬型記録媒体から制御プログラム１０ａを主記憶装置１０２ａに読み出してから実行してもよい。
【００８４】
図１６は、実施例３の変形例における情報処理装置２００および他の情報処理装置２００ａの機能ブロック図である。情報処理装置２００については、実施例１の試験命令列生成装置１００と同じであるので、その説明を省略する。
【００８５】
試験対象の情報処理装置２００ａの制御プログラム１０ａは、命令実行部１４と実行結果照合部１５とを有する。また、試験対象の情報処理装置２００ａの制御データ２０ａは、命令列格納部２３、実行結果期待値格納部２４および実行結果格納部２５を有する。命令実行部１４、実行結果照合部１５、実行結果期待値格納部２４および実行結果格納部２５の機能は、実施例３と同じであるので、その説明を省略する。命令列格納部２３は、情報処理装置２００から送信された試験命令列を、主記憶装置１０２ａに書き込んだものである。
【００８６】
実施例３の変形例における試験処理手順は、実施例３と同じであるため、その説明を省
略する。
【００８７】
実施例３において、プロセッサ１０１は、自身が生成した試験命令列を実行し、実行結果の照合を行う。生成された試験命令列は、演算種別に応じたレジスタを使用するように、レジスタの補正が行われているため、ＳＩＳＤ命令とＳＩＭＤ命令が混在した命令列であっても、保障されたレジスタの値を用いて、試験命令列を実行し、試験結果を確認できる。
【００８８】
また、変形例においては、情報処理装置２００により生成した試験命令列を、試験対象の情報処理装置２００ａ内のプロセッサ１０１ａが実行する。このように、生成された試験命令列は、ネットワークまたは可搬型記録媒体等を介して、試験対象プロセッサが読み込み可能な主記憶装置に書き込み、試験対象プロセッサに実行させることができる。すなわち、試験命令列を生成したプロセッサ以外のプロセッサの試験を行うことができる。
【符号の説明】
【００８９】
１０、１０ａ  制御プログラム
１１  レジスタ分割部
１２  命令生成部
１３  レジスタ補正部
１４  命令実行部
１５  実行結果照合部
２０、２０ａ  制御データ
２１  レジスタ分割情報格納部
２２  レジスタ分割テーブル
２３  命令列格納部
２４  実行結果期待値格納部
２５  実行結果格納部
１００  試験命令列生成装置
１０１、１０１ａ  プロセッサ
１０２、１０２ａ  主記憶装置
１０３  入力部
１０４  出力部
１０５、１０５ａ  ネットワークインターフェース
１０６、１０６ａ  バス
２００、２００ａ  情報処理装置
【図１】
2015036839.tif 000003
【図２】
2015036839.tif 000004
【図３】
2015036839.tif 000005
【図４】
2015036839.tif 000006
【図５】
2015036839.tif 000007
【図６】
2015036839.tif 000008
【図７】
2015036839.tif 000009
【図８】
2015036839.tif 000010
【図９】
2015036839.tif 000011
【図１０】
2015036839.tif 000012
【図１１】
2015036839.tif 000013
【図１２】
2015036839.tif 000014
【図１３】
2015036839.tif 000015
【図１４】
2015036839.tif 000016
【図１５】
2015036839.tif 000017
【図１６】
2015036839.tif 000018