JP2011253253A - コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム - Google Patents

コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム Download PDF

Info

Publication number
JP2011253253A
JP2011253253A JP2010125148A JP2010125148A JP2011253253A JP 2011253253 A JP2011253253 A JP 2011253253A JP 2010125148 A JP2010125148 A JP 2010125148A JP 2010125148 A JP2010125148 A JP 2010125148A JP 2011253253 A JP2011253253 A JP 2011253253A
Authority
JP
Japan
Prior art keywords
register
instruction
test
input
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2010125148A
Other languages
English (en)
Inventor
Fumio Ichikawa
文男 市川
Tariru Inoue
給 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010125148A priority Critical patent/JP2011253253A/ja
Priority to US13/086,012 priority patent/US8402316B2/en
Publication of JP2011253253A publication Critical patent/JP2011253253A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】例外割り込みと例外処理の発生を効率的かつ未然に抑制してコンピュータの試験を行なうこと。
【解決手段】コンピュータは、試験用命令列の作成時に、実行結果が書き込まれない入力専用レジスタ以外のレジスタから命令の出力先を指定する。また、コンピュータは、試験用命令列の作成時に、浮動小数点演算や固定小数点除算など例外割り込みが発生する可能性のある命令の入力に実行結果が書き込まれない入力専用レジスタを指定する。そして、コンピュータは、入力専用レジスタの初期値として例外割り込みの発生を回避することのできる値をセットして試験用命令列を実行し、例外割り込みを発生させることなく動作試験を行なう。
【選択図】図1

Description

本発明は、コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラムに関する。
従来、コンピュータの論理設計の妥当性を検証する場合や、製造されたコンピュータの動作を検証する場合には、コンピュータに試験プログラムを実行させて動作確認を行なう動作確認試験が行われる。この動作確認試験としては、コンピュータが高負荷状態で正常動作をするか否かをチェックする高負荷試験や、パイプライン処理上のコンフリクト発生時に正常動作するか否かをチェックするコンフリクト試験などが知られている。
このため、高負荷試験を行うためには、コンピュータが高負荷状態となるような試験用の命令列を生成することが求められる。一方、コンフリクト試験を行うためには、コンピュータがコンフリクト状態となる試験用の命令列を生成することが求められる。例えば、各レジスタが使用中か否かを登録したスコアボードを利用し、命令で使用するレジスタを選択することで、コンフリクト状態となる命令列を生成することができる。
試験用の命令列は、命令のオペランドの値やオペランドとして指定するレジスタをランダムに生成したランダム命令列が用いられる。
ところが、コンピュータが高負荷試験やコンフリクト試験用の命令列を実行中に「割り込み」が発生すると、割り込みによって実行される例外処理が終わるまでコンピュータは試験動作から外れ、本来意図した高負荷状態やコンフリクト状態を作り出せない。このようにコンピュータに例外処理を実行させる割り込みを例外割り込みという。
例外割り込みは、例えば除数「0」で除算を行う固定小数点除算で発生する。かかる場合にはエラー処理が求められるため、コンピュータは後続の命令を止めてエラー処理用のサブルーチンを例外処理として実行することになる。同様に、オーバーフローを伴う浮動小数点演算で例外割り込みが発生する。かかるオーバーフローが発生すると、コンピュータは後続の命令を止めてオーバーフローした値を処理するサブルーチンを例外処理として実行することになる。このように、高負荷試験やコンフリクト試験の途中で例外割り込みが発生して例外処理用のサブルーチンに移行すると、コンピュータは、例外処理用のサブルーチンを終了するまで本来意図していた高負荷状態やコンフリクト状態を実現することができなくなる。
なお、試験用命令列を用いてコンピュータの試験を行う場合に、例外割り込みの発生を抑制する従来技術が知られている。例えば、コンピュータが試験用命令列を生成する際に、例外割り込みが発生する可能性のある命令については、オペランドデータや演算データ等の条件を変更することで、例外割り込みの少ない試験用命令列を取得する技術が知られている。また、コンピュータが試験用命令列を実行して例外割り込みが発生した命令については、例外割り込みの原因となるパラメータを記憶し、次回の試験用命令列生成時に原因となるパラメータを除外する技術が知られている。
特開平2−244338号公報 特開平6−324904号公報 特開2001−222442号公報
コンピュータは、出力先としてレジスタ番号が指定された命令の実行結果を指定されたレジスタに書き込む。従って、コンピュータが試験用命令列を実行した場合には、処理が進むにつれてレジスタが保持する値は変化する。このため、オペランドとして指定するレジスタ番号をランダムに定めた試験用命令列では、命令が実行される時点でレジスタにいかなる値が格納されているかを事前に知ることはできない。
命令の実行時点でのレジスタの値が事前に分からないため、レジスタが命令の実行時点で保持する値の組み合わせによっては例外割り込みが発生する可能性がある。例えば、コンピュータがあるレジスタの値を除数として除算を行う除算命令を実行する場合に、先行する命令によって「0」を当該レジスタに書き込んでいたならば、結果的に除数0による除算命令を実行することとなり例外割り込みが発生する。同様に、コンピュータがあるレジスタの値を入力として浮動小数点演算を実行する場合にも、先行する命令がレジスタに書き込んだ値によっては演算結果がオーバーフローとなり、例外割り込みが発生する。
このように、ランダムなレジスタ番号をオペランドとする命令を用いた試験では、命令と実行結果との対応を予め判別し、例外割り込みがでないような命令と実行結果との組合せを設定することが困難である。このため、命令と実行結果との組合せによっては例外割込みが生じる可能性があり、例外割り込みが生じる可能性をなくすことができなかった。
オペランドデータ等の条件を変更する従来技術によれば、試験の開始前にオペランドのデータが特定されていることが前提となるので、レジスタ番号をオペランドとする命令を用いて試験を行なうと、例外割り込みが発生する可能性が残る。
また、例外割り込みが発生した命令のパラメータを次回の試験用命令列から除外する従来技術では、少なくとも一度は例外割り込みが発生しないと次回の試験用命令列から原因のパラメータを除外できず、例外割り込みの発生を防止できないという問題点がある。加えて、パラメータの蓄積数が多くなるほど例外割り込みの発生を低減できるものの、例外割り込みの可能性のある全てのパラメータを蓄積しない限り例外割り込みの発生は抑制できない。
このように、上記従来技術によれば、ランダムなレジスタ番号をオペランドとする命令を試験用命令列として取り入れた試験を行う場合に例外割り込み発生を排除することができない。また、過去の例外割り込み発生のパラメータを蓄積したとしても、未然に例外割り込みを抑制できないという問題があった。
開示の技術は、上記に鑑みてなされたものであって、例外割り込みと例外処理の発生を効率的かつ未然に抑制するコンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラムを提供することを目的とする。
本願の開示するコンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラムは、試験用の命令を複数有する試験用命令列の生成時に、複数のレジスタのうち命令の実行結果が書き込まれない入力専用レジスタを除外したレジスタから実行結果の出力先を指定する。さらに開示の方法、装置、プログラムは、命令が特定種別である場合には当該命令の実行に用いる入力値を保持するレジスタとして入力専用レジスタを指定する。そして、開示の方法、装置、プログラムは、入力専用レジスタに、特定種別の命令によって例外割り込みを発生しない初期値を設定し、試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する。
本願の開示する方法、装置、プログラムによれば、例外割り込みと例外処理の発生を効率的かつ未然に抑制するコンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラムを得ることができるという効果を奏する。
図1は、実施例1にかかるコンピュータ試験方法のフローチャートである。 図2は、試験用命令列の説明図である。 図3は、実施例2にかかるコンピュータ試験装置の概要構成を示す概要構成図である。 図4は、試験プログラムを実行するコンピュータの説明図である。 図5は、例外処理の説明図である。 図6は、例外割込みが発生する可能性のある命令種と例外発生の回避条件の例を示す説明図である。 図7は、レジスタ群23における入出力兼用レジスタと入力専用レジスタについての説明図である。 図8は、一つのランダムデータからの試験用命令の生成を説明する図である。 図9は、レジスタ番号の制御についての説明図である。 図10は、fdiv命令を生成する具体例の説明図である。 図11は、fand命令を生成する具体例の説明図である。 図12は、コンフリクトの説明図である。 図13は、試験用命令列におけるコンフリクトの設定についての説明図である。 図14は、ランダムデータ生成部52が生成したランダムデータの具体例である。 図15は、記憶部43に格納された命令定義構造体テーブル62の具体例である。 図16は、試験用命令列生成部53が生成した試験用命令列データ66の具体例である。 図17は、コンフリクト設定の具体例である。 図18は、コンピュータ10の処理動作を説明するフローチャートである。 図19は、図18に示した命令生成処理の詳細について説明するフローチャートである。 図20は、図19に示したコンフリクト設定処理の詳細について説明するフローチャートである。 図21は、図20に示したレジスタ番号の置き換え処理の詳細について説明するフローチャートである。 図22は、図18に示した試験実行処理の詳細について説明するフローチャートである。 図23は、実施例3にかかる試験プログラムを実行するコンピュータの説明図である。 図24は、試験実行部81の処理について説明するフローチャートである。
以下に、本願の開示するコンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
図1は、実施例1にかかるコンピュータ試験方法のフローチャートである。図1に示した処理動作は、試験対象となるコンピュータが実行する。まず、コンピュータは、複数のレジスタのうち実行結果が書き込まれないレジスタを除外したレジスタから命令の実行結果の出力先を指定する試験用の命令を複数有する試験用命令列を生成する。実行結果が書き込まれないレジスタは、初期値として設定された値を保持する入力専用レジスタとなる。さらに、コンピュータは、命令が特定種別である場合には当該命令の実行に用いる入力値を保持するレジスタとして入力専用レジスタを指定する(S101)。
試験用命令列の生成後、コンピュータはレジスタに初期値をセットする。ここでコンピュータは、入力専用レジスタに対しては、命令の種別、すなわち命令種に対応した例外割り込みを発生しない初期値を設定する(S102)。
レジスタに初期値をセットした後、コンピュータは試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する(S103)。コンピュータは、例えば試験用命令列を複数回実行し、実行結果を比較することで実行結果の評価を行なう。
次に、コンピュータがS101で生成する試験用命令列についてさらに説明する。試験用命令列に含まれる複数の命令はそれぞれ、命令種を特定するオペコードと命令が扱うデータを示すオペランドとを有する。オペランドは、命令の入力値として用いるデータの読み出し元となるレジスタやメモリアドレス、命令の出力値を書き込むレジスタやメモリアドレスを示す。オペランドのうち、命令の入力として用いるレジスタ番号を示すものをソースレジスタ、または入力レジスタという。また、オペランドのうち実行した命令の出力値を書き込むレジスタ番号を示すものをデスティネーションレジスタ、または出力レジスタという。
この試験用命令列の具体例について説明する。図2は、試験用命令列の説明図である。図2に示した例では試験用命令列は、試験用命令op01,op02,op03を含む。各命令はオペコードとオペランドとを有する。例えば試験用命令op02は、オペコードopc、入力レジスタrs1、入力レジスタrs2、出力レジスタrdを有する。このうち入力レジスタrs1、入力レジスタrs2、出力レジスタrdがオペランドである。
オペコードopcは、命令の種別を特定するビット列である。また、入力レジスタrs1と入力レジスタrs2は、それぞれ命令の入力として使用するレジスタのレジスタ番号を示すビット列である。出力レジスタrdは、命令の実行結果を格納するレジスタのレジスタ番号を示すビット列である。
図2に示した例では、試験用命令op02のオペコードopcは、入力レジスタrs1から読み出した値を入力レジスタrs2から読み出した値で割る除算を示している。また、入力レジスタrs1は、レジスタrg00からレジスタrg31までの32個のレジスタを有するレジスタセット2のうちレジスタrg16を示している。同様に入力レジスタrs2は、レジスタセット2のうちレジスタrg01を示している。そして、出力レジスタrdは、レジスタセット2のうちレジスタrg17を示している。
コンピュータの演算部1は、試験用命令op02を実行する場合にレジスタrg16から読み出した値をレジスタrg01から読み出した値で割って得られた結果をレジスタrg17に書き込む。
演算部1は、除算を行なう場合に除数が0であるとエラーを出力し、例外割り込みを発生する。したがって、演算部1が除算を実行する場合に例外割り込みの発生を回避するためには、除数として用いる入力レジスタから読み出した値が0以外であることが求められる。
しかし、先行の命令の出力レジスタを演算部1が除数として用いる入力レジスタとして使用すると、先行の命令の実行によって入力レジスタの値が書き換えられて入力レジスタ内の除数の値が0となる可能性がある。そこで、コンピュータは試験用命令を生成する場合に、レジスタの一部を入力専用に割り当て、除数を保持する入力レジスタを入力専用のレジスタから選択する。加えて、コンピュータは、各命令の出力レジスタを入力専用レジスタ以外のレジスタから選択する。
このため、除数を保持する入力専用レジスタは、命令の実行によっては保持した情報の書き換えが行なわれずに初期値を維持する。したがって入力専用レジスタの初期値が0以外であれば、演算部1が除算を行なう場合に除数が0となることによる例外割り込みの発生を回避することができる。
図2に示した例では、レジスタセット2のうちレジスタrg00からレジスタrg15までの16個のレジスタが入力専用レジスタである。また、レジスタセット2のうちレジスタrg16からレジスタrg31までの16個のレジスタは、出力レジスタとしても入力レジスタとしても使用可能な入出力兼用レジスタである。
演算部1が試験用命令op02を実行する場合に用いる除数を保持するレジスタrg01は入力専用レジスタである。このため、コンピュータがレジスタrg01の初期値に0以外の値をセットしておくことで、演算部1が試験用命令op02を実行した時に例外割り込みの発生を回避することができる。
なお、演算部1が除算を行なう場合には被除数の値はどのような値であってもよいので、入力専用レジスタと入出力兼用レジスタのいずれであっても被除数に対応する入力レジスタとして使用可能である。試験用命令op02では、被除数に対応する入力レジスタrs1は入出力兼用レジスタであるレジスタrg16を示している。
このように、コンピュータが試験用命令列を生成する場合にレジスタの一部を入力専用とし、除数を入力専用レジスタから選択するとともに、入力専用レジスタの初期値として0以外の値をセットすることで、除算における例外割り込みの発生を回避できる。
また、除算以外の命令であっても、入力値によって例外割り込みが発生する可能性のある命令をコンピュータが生成する場合には、入力レジスタとして入力専用レジスタを選択することで例外割り込みの発生を回避できる。入力値によって例外割り込みが発生する可能性のある命令としては、浮動小数点演算などがある。例えばコンピュータが浮動小数点演算で乗算を行なう場合は、入力値の組み合わせによっては演算結果が表現可能な上限を超えてオーバーフローが発生し、例外処理に移行する。コンピュータが浮動小数点演算の乗算を行なう場合には、入力値の少なくとも一つを入力専用レジスタから選択し、入力専用レジスタの初期値として例外割り込みの発生しない値、例えば1をセットしておくことで例外割り込みの発生を回避できる。
なお、例外割り込みが発生しない命令を生成する場合、コンピュータは入力レジスタとして入出力兼用レジスタと入力専用レジスタとのいずれも選択可能である。また、例外割り込みが発生する命令であっても、除算の被除数のように例外割り込みの発生に関与しない値を保持する入力レジスタは、コンピュータは入出力兼用レジスタと入力専用レジスタとのいずれからも選択可能である。
上述してきたように、本実施例1に示したコンピュータ試験方法は、試験用命令のうち、入力値によって例外割り込みが発生する可能性のある特定の種別の命令の入力レジスタには入力専用レジスタを設定する。そして、本実施例1に示したコンピュータ試験方法は、入力専用レジスタに、例外割り込みの発生を回避することのできる値を初期値としてセットして試験用命令列を実行する。
このため、本実施例1に示したコンピュータ試験方法は、例外割り込みと例外処理の発生を効率的かつ未然に抑制する。したがって、本実施例1に示したコンピュータ試験方法は、レジスタの値を書き換えつつ、かつ例外割り込みと例外処理を発生することなく試験を行なうことができる。また、試験用命令列を実行して発生した例外割り込みを回避するよう修正する技術に比して本実施例1に示したコンピュータ試験方法は短時間で例外割り込みが発生しない試験用命令列を生成できる。
図3は、実施例2にかかるコンピュータ試験装置の概要構成を示す概要構成図である。図3に示したコンピュータ10は、CPU(Central Processing Unit)11、メインメモリ12、ROM(Read Only Memory)13、バス15を有する。CPU11、メインメモリ12、ROM13はバス15に接続され、バス15を介してデータの授受を行なう。
CPU11は、メインメモリ12を主記憶装置として動作する演算装置であり、内部に命令制御部21、演算部22、レジスタ群23、バスインタフェース24を有する。命令制御部21は、命令のデコードと処理順序制御を行なう処理部である。具体的には命令制御部21は、CPU11が処理する命令を読み込み、解釈し、解釈結果を出力する。演算部22は、演算を行なう処理部である。具体的には演算部22は、命令の対象となるデータを読み込み、命令制御部21によって解釈された命令に従って演算し、演算結果を出力する。
レジスタ群23は、演算部22による演算結果など各種情報の保持を行なうレジスタセットを複数有する。バスインタフェース24は、命令制御部21および演算部22とバス15との間に介在するインタフェースである。
命令制御部21は、メインメモリ12に展開されたプログラムから命令を読み出して実行する。命令制御部21は、実行結果をメインメモリ12に戻すか、もしくはレジスタ群23に格納する。演算部22は、命令制御部21に指示された演算の入力値をメインメモリ12もしくはレジスタ群23から読み出して演算を実行し、実行結果をメインメモリ12に戻すか、もしくはレジスタ群23に格納する。
ROM13は、例えばフラッシュメモリであり、CPU11が実行するプログラムなどを格納する。ROM13に試験プログラム31を格納し、CPU11が試験プログラム31を実行することで、コンピュータ10は自身の動作を試験するコンピュータ試験装置として機能する。
また、コンピュータ10は、図示しない任意のインタフェースを介して外部装置と接続してもよい。コンピュータ10は、外部装置から試験プログラムを受信して実行することで自身の動作を試験するコンピュータ試験装置として機能することができる。
図4は、試験プログラムを実行するコンピュータの説明図である。CPU11が試験プログラム31を実行することで、CPU11は命令生成部41および試験実行部42の機能を実現する。また、CPU11は試験プログラム31を実行する場合に、メインメモリ12を記憶部43として使用する。なお、CPU11は、メインメモリ12に限らず任意の記憶媒体を記憶部43として使用することができる。また、CPU11は複数の記憶媒体にデータを分散させて記憶部43として使用してもよい。
命令生成部41は、シード値設定部51、ランダムデータ生成部52、試験用命令列生成部53を有する。シード値設定部51は、試験用命令列の乱数部分の生成に使用するシード値を設定する。シード値設定部51が新規にシード値を定めた場合、シード値設定部51は新規に定めたシード値を記憶部43にシード値データ61として格納する。また、予め定められたシード値を用いる場合、シード値設定部51は、記憶部43からシード値データ61を読み出してシード値に設定する。
ランダムデータ生成部52は、シード値設定部51が設定したシード値を初期値として擬似ランダム列を生成し、擬似ランダム列から試験用命令と同じ長さのデータを順次切り出してランダムデータを生成する。
試験用命令列生成部53は、ランダムデータ生成部52が生成したランダムデータから試験用命令列を生成し、試験用命令列データ66として記憶部43に格納する。ランダムデータからの試験用命令列の生成には、命令定義構造体テーブル62、コンフリクトカウンタ63、コンフリクトレジスタテーブル64を使用する。ランダムデータからの試験用命令列生成の詳細については後述する。
試験実行部42は、命令生成部41が生成した試験用命令列データ66を用いて試験を行なう処理部であり、初期値設定部54、命令列実行部55、実行結果退避部56、結果比較部57を有する。
初期値設定部54は、記憶部43からレジスタ初期値データ65を読み出してレジスタにセットする。すなわち、記憶部43は、レジスタ初期値データ65を格納するレジスタ初期値データ格納部として機能する。
命令列実行部55は、初期値設定部54による初期値のセットの後、記憶部43から試験用命令列データ66を読み出して実行する。実行結果退避部56は、命令列実行部55の実行結果を実行結果データ67として記憶部43に登録する。その後、命令列実行部55は、再度試験用命令列データ66を読み出して実行する。結果比較部57は、命令列実行部55の二度目の実行結果と、実行結果データ67とを比較して評価を行なう。すなわち、命令列実行部55と結果比較部57とは、協働して評価処理部として機能する。
例えば、命令列実行部55の二度の実行結果が一致しなければ、結果比較部57は、試験用命令列の実行中に何らかの異常が発生したと評価する。試験用命令列の実行中に生じる異常の例としては動作の遅れがある。試験用命令列の実行中に動作の遅れが生じると、命令の処理順序が乱れ、データに異常が発生する。このデータの異常によって試験用命令列を実行するごとに結果が異なる値となるので、結果比較部57は二度の実行結果を比較することで異常の有無を評価することができるのである。なお、命令の動作の遅れは、動作チェック部をさらに設けて試験用命令列の実行中の状態を監視することでも検知することができる。
次に、例外処理による問題点について説明する。図5は、例外処理の説明図である。図5に示した試験用命令列を実行すると、CPU11は、まず試験用命令op11を実行し、次に試験用命令op12、試験用命令op13と順次命令を実行する。
試験用命令列は、試験用命令op13の実行後、試験用命令op14を実行することを定めている。しかし、試験用命令op13の実行の結果として例外割込みが発生すると、CPU11は例外処理に移行する。
例外処理に移行すると、CPU11は例外処理用命令opx−1,例外処理用命令opx−2と順次命令を実行する。そして、最後の例外処理用命令opx−endを実行し、例外処理が終了すると、CPU11は試験用命令列の処理に戻る。
図5に示した例では、試験用命令op13で例外割込みが発生しているので、CPU11は、例外処理の終了後に試験用命令op14、試験用命令op15を実行し、試験用命令列の処理を進める。
このように、試験用命令列の実行中に例外割込みが発生すると、CPU11は例外処理のための命令を実行する。例外処理にかかる命令の実行は、試験の中では意図されていない。このため、例外割込みが発生して試験用命令列の動作から外れると、CPU11は、試験用命令列で意図していた状態を維持できない場合がある。
たとえば、高負荷試験では、CPUのパイプラインに命令を連続して投入して高負荷状態を実現し、CPUやコンピュータの動作を検証する。この高負荷試験用に生成した試験用命令列をコンピュータが実行している途中で例外割込みが発生すると、高負荷状態が解消してしまう場合がある。
また、コンフリクト試験では、コンピュータは先行する命令の出力レジスタを入力レジスタとして指定した命令をパイプラインに投入してコンフリクト状態を実現し、動作を検証する。このコンフリクト試験用に生成した試験用命令列をコンピュータが実行している途中に例外割込みが発生すると、意図したコンフリクト状態が発生しない場合がある。この問題に対して本実施例2にかかるコンピュータ10は、実施例1と同様に、レジスタを入出力兼用レジスタと入力専用レジスタに分け、例外割り込みが生じる可能性のある命令については入力値に入力専用レジスタを使用することで例外割り込みの発生を回避する。
この例外発生の可能性のある命令と例外発生の回避について説明する。図6は、例外割込みが発生する可能性のある命令種と例外発生の回避条件の例を示す説明図である。命令種が浮動小数点演算である場合は、コンピュータは入力値によっては例外割込みを発生する。具体的には、積算などの結果としてオーバーフローが起きる場合や、演算結果が非数となる場合などに、コンピュータは例外割込みを発生する。浮動小数点演算での例外割込みの発生を回避するためには、コンピュータが演算に使用する入力値の少なくとも一つに、他の入力値がどのような値であっても例外割り込みの発生を防止する値を用いればよい。具体的には、1、もしくは1に近い値、例えば0.9〜1.1の範囲の値を浮動小数点演算の一方の入力値として用いる。この入力値の範囲は、浮動小数点演算の他の入力値がどのような値であっても演算の結果として例外割り込みが発生しない範囲で任意に設定可能である。
また、命令種が固定小数点除算である場合は、コンピュータは除数が0である場合に例外割込みを発生する。コンピュータが固定小数点除算での例外割込みの発生を回避するためには、除数に0以外の値を用いればよい。
この例外発生を回避するため、本実施例2にかかるコンピュータ10は、レジスタを入出力兼用レジスタと入力専用レジスタに分け、入力専用レジスタに対して例外処理を伴わない、言い換えると例外割込みが発生する可能性のない初期値を設定する。図7は、レジスタ群23における入出力兼用レジスタと入力専用レジスタについての説明図である。レジスタ群23は、浮動小数点演算に用いる浮動小数点レジスタセット71と固定小数点演算に用いる汎用レジスタセット72とを有する。
浮動小数点レジスタセット71は、32個のレジスタを有する。浮動小数点レジスタセット71が有する32個のレジスタのレジスタ番号はfr00〜31である。これらのレジスタ番号はビット列で示すと「00000」〜「11111」である。図7の例では、ビット列で示したレジスタ番号のうち、上位2ビット目が「0」であるレジスタを入力専用レジスタとし、上位2ビット目が「1」であるレジスタを入出力兼用レジスタとしている。図7において、ハッチングを付したレジスタが入出力兼用レジスタを、ハッチングを付していないレジスタが入力専用レジスタを、それぞれ示す。
したがって、「00000」〜「11111」のうち、入力専用レジスタは「00000」〜「00111」と「10000」〜「10111」の16個、入出力兼用レジスタは「01000」〜「01111」と「11000」〜「11111」の16個となる。
浮動小数点レジスタセット71の各レジスタのレジスタ番号「00000」〜「11111」をfr00〜31として表記すると、入力専用レジスタはfr00〜07とfr16〜23、入出力兼用レジスタはfr08〜15とfr24〜31である。
コンピュータ10が浮動小数点レジスタセット71に初期値をセットする際には、入力専用レジスタには1あるいは1に近い値をセットする。コンピュータ10は、入出力兼用レジスタの初期値には乱数など任意の値をセットすることができる。
汎用レジスタセット72は、32個のレジスタを有する。汎用レジスタセット72が有する32個のレジスタのレジスタ番号はgr00〜31である。各レジスタ番号gr00〜31は、ビット列で示すと「00000」〜「11111」である。図7の例では、ビット列で示したレジスタ番号のうち、上位2ビット目が「0」であるレジスタを入力専用レジスタとし、上位2ビット目が「1」であるレジスタを入出力兼用レジスタとしている。浮動小数点レジスタセット71と同様、汎用レジスタセット72において、ハッチングを付したレジスタが入出力兼用レジスタを、ハッチングを付していないレジスタが入力専用レジスタをそれぞれ示す。
したがって、「00000」〜「11111」のうち、入力専用レジスタは「00000」〜「00111」と「10000」〜「10111」の16個、入出力兼用レジスタは「01000」〜「01111」と「11000」〜「11111」の16個となる。
この汎用レジスタセット72のレジスタ番号「00000」〜「11111」をgr00〜31として表記すると、入力専用レジスタはgr00〜07とgr16〜23、入出力兼用レジスタはgr08〜15とgr24〜31となる。
コンピュータ10が汎用レジスタセット72に初期値をセットする際には、入力専用レジスタには0以外の値をセットする。コンピュータ10は、入出力兼用レジスタの初期値には乱数など任意の値をセットすることができる。
次に、コンピュータ10の試験用命令列生成部53による試験用命令列の生成について説明する。試験用命令列を構成する命令は、命令の種別を示すオペコード、入力レジスタ、出力レジスタを有する。コンピュータ10は、試験用命令の入力レジスタと出力レジスタとにランダムな値を設定する。
コンピュータ10が試験用命令を生成する場合は、ランダムデータから入力レジスタ分と出力レジスタ分のデータを取り出して生成する命令に挿入してもよいが、命令と同じ長さの一つのランダムデータから入力レジスタと出力レジスタの値がランダムな命令を得る方法も知られている。
図8は、一つのランダムデータからの試験用命令の生成を説明する図である。図8に示した例では、コンピュータ10は、シード値に基づいて生成した擬似ランダム列から、生成対象の命令全体と同じビット数のランダムデータD0を取り出して試験用命令の生成に使用する。コンピュータ10は、ランダムデータD0とANDデータD1との論理積(AND)をとり、さらにORデータD2との論理和(OR)を取ることで、試験用命令D3を得る。
ANDデータD1とORデータD2は、それぞれビット数が命令全体と同じである。また、ANDデータD1とORデータD2は、命令の種別ごとに定められる。図8の例では、ANDデータD1は、命令のオペコードに対応する範囲のビットの値が全て0である。一方、図8ではORデータD2は、命令のオペコードに対応する範囲のビットの値は生成する試験用命令D3のオペコードと同一の値である。
したがって、コンピュータ10は、ランダムデータD0とANDデータD1の論理積をとり、論理積結果とORデータD2との論理和を取ることで、オペコードに対応する範囲について、ランダムデータD0の対応する領域の値に関わらず、ORデータD2の値を残すことができる。
また、図8の例ではANDデータD1は、生成する試験用命令D3の出力レジスタと入力レジスタに対応する範囲のビットの値が全て1である。一方、ORデータD2は、生成する試験用命令D3の命令の出力レジスタと入力レジスタに対応する範囲のビットの値が全て0である。
したがって、コンピュータ10は、ランダムデータD0とANDデータD1の論理積をとり、論理積結果とORデータD2との論理和を取ることで、出力レジスタと入力レジスタに対応する範囲について、ランダムデータD0の対応する領域の値をそのまま残すことができる。
このように、命令種ごとにANDデータD1とORデータD2を用意し、ORデータD2のオペコード対応部分を目的のオペコードに合わせれば、コンピュータ10は目的のオペコードを持ち、入力レジスタと出力レジスタがランダムに設定された試験用命令D3を得ることができる。
ここで、入力レジスタと出力レジスタの値を全てランダムに定めると、コンピュータ10は入力レジスタと出力レジスタのそれぞれについて、レジスタセット全体からいずれか一つのレジスタを指定することになる。コンピュータ10は、図7を参照して説明したように、レジスタ番号の上位2ビット目の値によって入力専用レジスタと入出力兼用レジスタを分ける。このため、コンピュータ10は、ANDデータD1とORデータD2とのうち入力レジスタと出力レジスタとに対応する範囲の値を図9のように定める。
図9は、レジスタ番号の制御についての説明図である。入力レジスタや出力レジスタに対応する範囲の値が、ANDデータD1のビットがオール1であり、ORデータD2のビットがオール0であれば、ランダムデータD0の入力レジスタ/出力レジスタに対応する範囲の値がそのまま残る。このため、コンピュータ10は、レジスタセット全体から各レジスタを選択することとなる。
これに対し、入力レジスタや出力レジスタに対応する範囲の値が、ANDデータD1の2ビット目が0、他のビットが1であり、ORデータD2がオール0であれば、生成される試験用命令D3のレジスタ番号の上位2ビット目は常に0となる。この結果、ANDデータD1とORデータD2との入出力レジスタに対応する値を上記のように設定することによって、コンピュータ10は、入力専用レジスタのいずれかを選択することとなる。
また、入力レジスタや出力レジスタに対応する範囲の値が、ORデータD2の2ビット目が1、他のビットが0であれば、生成される試験用命令D3のレジスタ番号の上位2ビット目は常に1となる。この結果、コンピュータ10は、入出力兼用レジスタのいずれかを選択することとなる。なお、入力レジスタや出力レジスタに対応する範囲について、ORデータD2の上位2ビット目を1とした場合は、ANDデータD1の2ビット目は0であっても1であってもよい。
この試験用命令の生成についてfdiv命令とfand命令の生成を例示する。図10は、fdiv命令を生成する具体例の説明図である。浮動小数点の除算であるfdiv命令は、入力値によっては例外割り込みを発生させるので、コンピュータ10は、fdiv命令の第1入力レジスタと第2入力レジスタの双方を入力専用レジスタから選択する。また、コンピュータ10は、出力レジスタについては、入出力兼用レジスタから選択する。
図10に示した例では、ランダムデータD0(図10「乱数」)のうち、第1入力レジスタに対応する範囲の乱数は「11011」である。この値とANDデータD1の値「10111」との論理積をとると「10011」となる。論理積の結果として得られた値とORデータD2の値「00000」との論理和をとると「10011」となる。この値は浮動小数点レジスタセット71のレジスタfr19に対応する。
同様に、図10に示した例では、ランダムデータD0のうち、第2入力レジスタに対応する範囲の乱数は「01101」である。この値とANDデータD1の値「10111」との論理積をとると「00101」となる。論理積の結果として得られた値とORデータD2の値「00000」との論理和をとると「00101」となる。この値は浮動小数点レジスタセット71のレジスタfr05に対応する。
また、図10に示した例では、ランダムデータD0のうち、出力レジスタに対応する範囲の乱数は「00110」である。この値とANDデータD1の値「10111」との論理積をとると「00110」となる。論理積の結果として得られた値とORデータD2の値「01000」との論理和をとると「01110」となる。この値は浮動小数点レジスタセット71のレジスタfr14に対応する。
したがって図10に示した例では、命令「fdiv,fr19,fr05,fr14」が生成される。既に述べたように、入力専用レジスタのレジスタ番号はfr00〜07とfr16〜23、入出力兼用レジスタのレジスタ番号はfr08〜15とfr24〜31である。命令「fdiv,fr19,fr05,fr14」のうち入力レジスタfr19,fr05は入力専用レジスタであり、出力レジスタfr14は入出力兼用レジスタである。
図11は、fand命令を生成する具体例の説明図である。浮動小数点の論理積であるfand命令は、入力値によらず例外割り込みを発生させない。このため、コンピュータ10は、fand命令の第1入力レジスタと第2入力レジスタの双方をレジスタセット全体から選択することができる。また、コンピュータ10は、出力レジスタについては入出力兼用レジスタから選択する。
図11に示した例では、ランダムデータD0(図11「乱数」)のうち、第1入力レジスタに対応する範囲の乱数は「10011」である。この値とANDデータD1の値「11111」との論理積をとると「10011」となる。論理積の結果として得られた値とORデータD2の値「00000」との論理和をとると「10011」となる。この値は浮動小数点レジスタセット71のレジスタ番号fr19に対応する。
同様に、図11に示した例では、ランダムデータD0のうち、第2入力レジスタに対応する範囲の乱数は「11011」である。この値とANDデータD1の値「11111」との論理積をとると「11011」となる。論理積の結果として得られた値とORデータD2の値「00000」との論理和をとると「11011」となる。この値は浮動小数点レジスタセット71のレジスタ番号fr27に対応する。
また、図11に示した例では、ランダムデータD0のうち、出力レジスタに対応する範囲の乱数は「00111」である。この値とANDデータD1の値「10111」との論理積をとると「00111」となる。論理積の結果として得られた値とORデータD2の値「01000」との論理和をとると「01111」となる。この値は浮動小数点レジスタセット71のレジスタ番号fr15に対応する。
したがって図11に示した例では、命令として「fand,fr19,fr27,fr15」が生成される。既に述べたように、入力専用レジスタのレジスタ番号はfr00〜07とfr16〜23、入出力兼用レジスタのレジスタ番号はfr08〜15とfr24〜31である。命令「fand,fr19,fr27,fr15」のうち入力レジスタfr19は入力専用レジスタである。また、入力レジスタfr27は入出力兼用レジスタである。同様に出力レジスタfr14は入出力兼用レジスタである。
このように一つのランダムデータに対して、ANDデータとの論理積と、論理積結果とORデータとの論理和を用いて試験用命令を生成する場合に、ANDデータとORデータのレジスタ指定部の値を適宜設定することで、命令の入力レジスタと出力レジスタの指定先を簡易に設定することができる。
コンピュータ10が高負荷試験を行なう場合には、コンピュータ10は、このように入力レジスタと出力レジスタの指定先を設定して生成した命令をパイプラインに順次投入することで、高負荷状態を実現して試験を行なう。
一方、コンピュータ10がコンフリクト試験を行なう場合には、コンピュータ10は、このように入力レジスタと出力レジスタの指定先を設定し、さらに命令間にコンフリクトが発生するよう設定した試験用命令列を用いて試験を行なう。
図12は、コンフリクトの説明図である。図12に示した命令op21は、オペコードが浮動小数点の加算を示すfadd、第1入力レジスタがfr10、第2入力レジスタがfr12、出力レジスタがfr14である。また、命令op21の後続の命令op22は、オペコードが浮動小数点の減算を示すfsubd、第1入力レジスタがfr14、第2入力レジスタがfr16、出力レジスタがfr18である。
ここで、命令op21の出力レジスタであるfr14は、後続の命令op22の入力レジスタとして使用されている。このように、ある命令の出力レジスタに割り振られたレジスタが後続の命令の入力レジスタに使用されることをコンフリクトといい、この状態をコンフリクト状態、対象となったレジスタをコンフリクトレジスタという。
通常、コンピュータは、コンフリクト状態に無い命令列はCPUのパイプラインに連続的に投入する。しかし、命令列にコンフリクト状態が存在すると、コンピュータはコンフリクトの原因となった命令が終了するまで、コンフリクト状態である後続の命令の処理を保留する。コンピュータは、コンフリクト状態の命令を保留している間も、コンフリクト状態に無い後続の命令はパイプラインに流し続ける。このため、コンピュータは命令間の順序関係を保証するため複雑な制御を行なう。このコンフリクトの制御の状態を試験する場合、コンピュータは、様々なコンフリクト状態が組み込まれた試験用命令列を実行する。
図13は、試験用命令列におけるコンフリクトの設定についての説明図である。図13に示した命令op31と命令op32は、それぞれオペコード、第1入力レジスタ、第2入力レジスタ、出力レジスタを有する。コンピュータ10は、試験用命令列を構成する命令op31と命令op32の入力レジスタおよび出力レジスタにランダムな値を設定する。
コンフリクトレジスタテーブル64は、コンフリクトレジスタを登録するレジスタテーブルである。コンフリクトカウンタ63は、コンフリクトレジスタテーブル64へのレジスタ番号の登録数を管理するカウンタである。
コンピュータ10は、先行する命令である命令op31の出力レジスタのレジスタ番号をコンフリクトレジスタテーブル64に登録する。コンピュータ10はまた、後続の命令op32の入力レジスタのレジスタ番号を、コンフリクトレジスタテーブル64から読み出した、先行する命令の出力レジスタのレジスタ番号に書き換える。
入力レジスタとして他の命令の出力レジスタを使用することができるか否かは、命令ごと、また複数の入力を用いる命令であれば入力ごとに予め設定され、コンピュータ10が設定データを保持している。
コンピュータ10は、コンフリクトレジスタテーブル64に登録したレジスタ番号を他の命令の入力レジスタとして使用した場合に、使用したレジスタ番号をコンフリクトレジスタテーブル64から削除する。
また、コンピュータ10は、コンフリクトレジスタテーブル64に対してレジスタ番号の登録や削除を行なった場合に、コンフリクトカウンタ63の値を書き換える。コンフリクトカウンタ63の値が最大値となった場合、すなわちコンフリクトレジスタテーブル64に登録したレジスタ番号の数が上限に達した場合には、コンピュータ10はコンフリクトレジスタテーブル64から最も古い値を削除する。
このようにコンピュータ10が命令の出力レジスタをコンフリクトレジスタテーブル64に登録し、後続の命令の入力レジスタとしてコンフリクトレジスタテーブル64に登録した出力レジスタを用いることで、試験用命令列にコンフリクト状態を組み込むことができる。なお、出力レジスタのレジスタ番号をコンフリクトレジスタテーブル64に登録した命令と、登録されたレジスタ番号を入力レジスタとして使用する命令との間には他の命令が存在してもよい。
次に、命令生成部41による試験用命令列生成の具体例について説明する。図14は、ランダムデータ生成部52が生成したランダムデータの具体例である。ランダムデータ生成部52は、シード値を初期値として擬似ランダム列を生成する。そして、ランダムデータ生成部52は、生成した擬似ランダム列を試験用命令のビット数ごとに切り出して試験用命令列に含まれる命令数以上のランダムデータを生成する。図14の例では、最初のランダムデータD0−1の値は「0x3ea8e2db」である。このうち0xは16進数表記であることを示し、3ea8e2dbがデータ本体である。また、2つ目のランダムデータD0−2は「0xc7428a58」である。
図15は、記憶部43に格納された命令定義構造体テーブル62の具体例である。命令定義構造体テーブル62は、命令の種別ごとに定めた命令定義構造体を保持する。各命令定義構造体は、命令の種別、ANDデータ、ORデータ、コンフリクトフラグを有する。
ANDデータとORデータは、それぞれ4バイトのデータである。試験用命令列生成部53は、4バイトのランダムデータとANDデータとの論理積をとり、さらに論理積結果とORデータとの論理和をとることで、命令の種別に定められた命令を生成する。なお、図15では、ANDデータとORデータを16進数で表記している。
また、コンフリクトフラグは1バイトのデータであり、命令の入力レジスタと出力レジスタがコンフリクトの設定に使用可能であるか否かを示す。命令定義構造体テーブル62では、コンフリクトフラグのうち4ビットを有効なビットとして使用する。なお、図15では、コンフリクトフラグを2進数で表記している。
命令定義構造体テーブル62は、出力レジスタがコンフリクトレジスタとして使用できるか否かを、コンフリクトフラグの図示範囲の上位1ビット目で示している。コンフリクトフラグの上位1ビット目は、命令の出力レジスタがいずれかのレジスタを指している場合、すなわち命令の出力をいずれかのレジスタに書き込む場合に1、命令の出力をレジスタに書き込まない場合に0となる。
また、命令定義構造体テーブル62は、コンフリクトフラグの上位2ビット目から4ビット目で3つの入力レジスタがコンフリクトレジスタとして使用できるか否かをそれぞれ示している。これらのビットはそれぞれ、3つの入力のいずれか一つに対応しており、対応する入力レジスタを命令が使用し、かつコンフリクトレジスタとして使用できる場合に1となり、対応する入力レジスタを命令が使用しない場合やコンフリクトレジスタとして使用できない場合に0となる。コンフリクトレジスタとして使用できない入力レジスタは、例えばそのレジスタの値によっては例外処理が発生する可能性のある入力レジスタである。
図15では、命令定義構造体テーブル62は、浮動小数点の論理和を示すfor命令のANDデータとして「0x1e07c01f」、ORデータとして「0xa1b00f80」、コンフリクトフラグとして「1011」を定義している。また、命令定義構造体テーブル62は、fadd命令のANDデータとして「0x1e03c00f」、ORデータとして「0xa1a00840」、コンフリクトフラグとして「1000」を定義している。
同様に、命令定義構造体テーブル62は、fsubd命令のANDデータとして「0x1e03c00f」、ORデータとして「0xa1a008c0」、コンフリクトフラグとして「1000」を定義している。
また、命令定義構造体テーブル62は、浮動小数点の積算を示すfmuld命令のANDデータとして「0x1e03c00f」、ORデータとして「0xa1a00940」、コンフリクトフラグとして「1000」を定義している。
図16は、試験用命令列生成部53が生成した試験用命令列データ66の具体例である。図16に示した試験用命令列データ66は、試験用命令列生成部53が命令定義構造体テーブル62を用いてランダムデータから生成した命令列の一例である。
試験用命令列データ66のうち、1番目の命令から5番目の命令を例示する。1番目の命令は「fsubd fr17,fr21,fr31」である。このfsubd命令の第1入力レジスタであるfr17と第2入力レジスタであるfr21は入力専用レジスタである。そして、このfsubd命令の出力レジスタであるfr31は入出力兼用レジスタである。
2番目の命令は「fmuld fr23,fr05,fr24」である。このfmuld命令の第1入力レジスタであるfr23と第2入力レジスタであるfr05は入力専用レジスタである。そして、このfmuld命令の出力レジスタであるfr24は入出力兼用レジスタである。
3番目の命令は「for fr09,fr19,fr09」である。このfor命令の第1入力レジスタであるfr09は入出力兼用レジスタであり、第2入力レジスタであるfr19は入力専用レジスタである。そして、このfor命令の出力レジスタであるfr09は入出力兼用レジスタである。
4番目の命令は「for fr05,fr04,fr25」である。このfor命令の第1入力レジスタであるfr05と第2入力レジスタであるfr04は入力専用レジスタである。そして、このfor命令の出力レジスタであるfr25は入出力兼用レジスタである。
5番目の命令は「fsubd fr21,fr00,fr30」である。このfsubd命令の第1入力レジスタであるfr21と第2入力レジスタであるfr00は入力専用レジスタである。そして、このfsubd命令の出力レジスタであるfr30は入出力兼用レジスタである。
このように、コンピュータ10は、各命令の出力レジスタに入出力兼用レジスタを指定し、特定の種別の命令の入力レジスタに入力専用レジスタを指定した試験用命令列データ66を生成する。
高負荷状態の試験などに用いる場合は、コンピュータ10は、この試験用命令列データ66を記憶部43に格納して使用すればよい。試験用命令列にコンフリクトを設定する場合は、コンピュータ10は試験用命令列の入力レジスタを置き換えて試験用命令列データ66を更新し、記憶部43に格納する。
図17は、コンフリクト設定の具体例である。初期状態ではコンフリクトレジスタテーブル64にはレジスタ番号が登録されておらず、コンフリクトカウンタ63の値は0である。コンピュータ10の試験用命令列生成部53は、まず1番目の命令について命令定義構造体テーブル62のコンフリクトフラグを参照し、1番目の命令のレジスタ番号に対応する出力レジスタをコンフリクトに使用可能かを判定する。1番目の命令は、「fsubd fr17,fr21,fr31」であり、出力レジスタをコンフリクトに使用可能である。このため、試験用命令列生成部53は、1番目の命令の出力レジスタのレジスタ番号fr31をコンフリクトレジスタテーブル64に登録し、コンフリクトカウンタ63の値を1にする。
2番目の命令は「fmuld fr23,fr05,fr24」である。命令定義構造体テーブル62のコンフリクトフラグは、fmuld命令については出力レジスタのみコンフリクトに使用可能であることを示している。このため、試験用命令列生成部53は、2番目の命令の出力レジスタfr24をコンフリクトレジスタテーブル64に登録し、コンフリクトカウンタ63の値を2にする。
3番目の命令は「for fr09,fr19,fr09」である。命令定義構造体テーブル62のコンフリクトフラグは、for命令については出力レジスタと入力レジスタとがともにコンフリクトに使用可能であることを示している。このため、試験用命令列生成部53は、コンフリクトレジスタテーブル64からレジスタ番号fr31とfr24を読み出し、3番目の命令の2つの入力レジスタ番号と置き換える。この時、試験用命令列生成部53は、for命令に使用したfr31とfr24をコンフリクトレジスタテーブル64から削除し、コンフリクトカウンタ63の値を2減算して0とする。さらに、試験用命令列生成部53は、3番目の命令の出力レジスタfr09をコンフリクトレジスタテーブル64に登録し、コンフリクトカウンタ63の値を1にする。
4番目の命令は「for fr05,fr04,fr25」である。命令定義構造体テーブル62のコンフリクトフラグは、for命令については出力レジスタと入力レジスタとがともにコンフリクトに使用可能であることを示している。このため、試験用命令列生成部53は、コンフリクトレジスタテーブル64からレジスタ番号fr09を読み出し、4番目の命令の2つの入力レジスタ番号の一方をレジスタ番号fr09に置き換える。試験用命令列生成部53は、使用したレジスタ番号fr09をコンフリクトレジスタテーブル64から削除し、コンフリクトカウンタ63の値を1減算して0とする。さらに、試験用命令列生成部53は、4番目の命令の出力レジスタ番号fr25をコンフリクトレジスタテーブル64に登録し、コンフリクトカウンタ63の値を1にする。
5番目の命令は「fsubd fr21,fr00,fr30」である。命令定義構造体テーブル62のコンフリクトフラグは、fsubd命令については出力レジスタのみコンフリクトに使用可能であることを示している。このため、試験用命令列生成部53は、5番目の命令の出力レジスタのレジスタ番号fr30をコンフリクトレジスタテーブル64に登録し、コンフリクトカウンタ63の値を2にする。
このように置き換えた結果、1番目の命令は「fsubd fr17,fr21,fr31」、2番目の命令は「fmuld fr23,fr05,fr24」となる。また、3番目の命令は「for fr31,fr24,fr09」、4番目の命令は「for fr09,fr04,fr25」、5番目の命令は「fsubd fr21,fr00,fr30」となる。1番目、2番目、5番目の命令は置き換え前と変更がないが、3番目の命令と4番目の命令はコンフリクトが発生するように変更されている。
次に、コンピュータ10の処理動作について説明する。図18は、試験プログラム31を実行した場合のコンピュータ10の処理動作を説明するフローチャートである。試験プログラム31を実行したコンピュータ10は、まず試験の種別を選択する(S201)。試験の種別とは、どのような条件下の動作試験を行なうかを示す。例えば固定小数点演算の試験や、浮動小数点演算の試験、固定小数点演算と浮動小数点演算の混在した試験、演算処理とアクセス処理とが混在した試験、演算処理と分岐処理が混在した試験などである。試験の種別の選択は、例えばユーザ入力などによって行なえばよい。
試験種別を選択した後、コンピュータ10は、試験パラメータを設定する(S202)。試験パラメータは、試験用命令列の命令数や、コンフリクトを設定するか否かなどを含む。また、コンピュータ10は、シード値を試験パラメータとして指定することもできる。コンピュータ10は、試験パラメータとしてシード値を指定した場合にはシード値からレジスタ初期値データを生成しても良い。
試験パラメータを設定した後、コンピュータ10は実行する試験種のうちの一つを選び(S203)、命令生成部41による命令生成処理(S204)を行なう。そして、コンピュータ10は生成した命令列を用いて試験実行部42による試験実行処理を行なう(S205)。
試験実行処理の後、コンピュータ10は選択した全ての試験種を実施したかを判定する(S206)。まだ実施していない試験種が残っていれば(S206,No)、コンピュータ10は、ふたたびS203に戻る。選択した全ての試験種について試験を実施したならば(S206,Yes)、コンピュータ10は処理を終了する。
図19は、図18に示した命令生成処理の詳細について説明するフローチャートである。命令生成部41は、まず、シード値設定部51によるシード値の設定を行なう(S301)。ここでシード値が試験パラメータとして指定されていれば、シード値設定部51は指定されたシード値を用いる。また、シード値が指定されていなければ、シード値設定部51はシード値を新たに生成して設定する。
シード値を設定した後、命令生成部41は、シード値設定部51によって設定されたシード値を用いてランダムデータ生成部52によるランダムデータ列の生成を行なう(S302)。ランダムデータ生成部52は、シード値を初期値として擬似ランダム列を生成し、擬似ランダム列から命令長と同じ長さのランダムデータを順次切り出してランダムデータ列とする。
ランダムデータ列が生成されると、命令生成部41は、ランダムデータを一つ選択し(S303)、ランダムデータに命令定義構造体を適用して試験用命令を生成する(S304)。生成した試験用命令の数が試験パラメータによって指定された数に満たなければ(S305,No)、命令生成部41はランダムデータの選択(S303)に戻る。
生成した試験用命令の数が試験パラメータによって指定された数を満たすと(S305,Yes)、命令生成部41は試験パラメータによってコンフリクトが指定されているか否かを判定する(S306)。この結果、コンフリクトが指定されていなければ(S306,No)、命令生成部41は生成した試験用命令を試験用命令列データとして出力し(S308)、処理を終了する。一方、コンフリクトが指定されていれば(S306,Yes)、命令生成部41は生成した試験用命令に対してコンフリクト設定を行なって(S307)、試験用命令列データとして出力し(S308)、処理を終了する。
図20は、図19に示したコンフリクト設定処理の詳細について説明するフローチャートである。コンフリクト設定処理が開始されると、試験用命令列生成部53はまず、生成した試験用命令列の最初の命令を選択する(S401)。
試験用命令列生成部53は、命令を選択した後、命令の第1入力レジスタを選択し(S402)、レジスタ番号置き換え処理を行なう(S403)。この後、試験用命令列生成部53は、命令の第2入力レジスタを選択し(S404)、レジスタ番号置き換え処理を行なう(S405)。そして試験用命令列生成部53は、命令の第3入力レジスタを選択し(S406)、レジスタ番号置き換え処理を行なう(S407)。
入力レジスタ番号の置き換え後、試験用命令列生成部53は命令の出力レジスタをコンフリクト対象とすることができるかを判定する(S408)。判定の結果、出力レジスタをコンフリクトの対象とすることができる場合(S408,Yes)、試験用命令列生成部53はコンフリクトカウンタの値が最大値であるかを判定する(S409)。
コンフリクトカウンタ63の値が最大値である場合(S409,Yes)、試験用命令列生成部53はコンフリクトレジスタテーブル64から最も古い値を削除し(S410)、コンフリクトカウンタ63の値を1減らす(S411)。
コンフリクトカウンタ63の値を減らした後、もしくはコンフリクトカウンタの値が最大値では無い場合(S409,No)、試験用命令列生成部53は命令の出力レジスタのレジスタ番号をコンフリクトレジスタテーブル64に登録し(S412)、コンフリクトカウンタの値を1増やす(S413)。
コンフリクトカウンタの値を増やした後、もしくは命令の出力レジスタをコンフリクト対象にできない場合(S408,No)、試験用命令列生成部53は試験用命令列の全ての命令に対して処理が終了したかを判定する(S414)。この結果、処理を行なっていない命令が残っているならば(S414,No)、試験用命令列生成部53は、次の命令を選択して(S415)、第1入力レジスタの選択に戻る(S402)。そして、全ての命令に対して処理が終了した場合に(S414,Yes)、試験用命令列生成部53はコンフリクト設定処理を終了する。
図21は、図20に示したレジスタ番号置き換え処理の詳細について説明するフローチャートである。レジスタ番号の置き換え処理が開始されると、試験用命令列生成部53はまず、コンフリクトカウンタ63の値が1以上であるか否かを判定する(S501)。
コンフリクトカウンタ63の値が1以上であれば(S501,Yes)、試験用命令列生成部53は命令定義構造体テーブル62のコンフリクトフラグを参照し、対象の入力レジスタをコンフリクト対象とすることができるか否かを判定する(S502)。
判定の結果、対象の入力レジスタをコンフリクト対象にできる場合(S502,Yes)、試験用命令列生成部53は、対象の入力レジスタをコンフリクトレジスタテーブル64に登録された最も古いレジスタ番号に置き換える(S503)。
対象の入力レジスタを置き換えた後、試験用命令列生成部53は、置き換えに用いたレジスタ番号をコンフリクトレジスタテーブル64から削除し(S504)、コンフリクトカウンタ63の値を1減らす(S505)。
コンフリクトカウンタ63の値を1減らした後、試験用命令列生成部53は、レジスタ番号置き換え処理を終了する。また、コンフリクトカウンタ63の値が0である場合(S501,No)および対象の入力レジスタをコンフリクトの対象にできない場合(S502,No)にも、試験用命令列生成部53はレジスタ番号置き換え処理を終了する。
図22は、図18に示した試験実行処理の詳細について説明するフローチャートである。試験実行処理が開始されると、試験実行部42内部の初期値設定部54がレジスタに初期値をセットする(S601)。記憶部43にレジスタ初期値データ65が格納されていれば、初期値設定部54はレジスタ初期値データ65を読み出して使用する。一方、記憶部43にレジスタ初期値データ65が格納されていなければ、初期値設定部54は、シード値データ61に基づいてレジスタ初期値データ65を生成して使用し、記憶部43に格納する。既に述べたようにレジスタ初期値データ65は浮動小数点レジスタのうち入力専用レジスタにセットする値として1に近い値を持ち、汎用レジスタのうち入力専用レジスタにセットする値として0以外の値を持つ。
レジスタに初期値をセットした後、命令列実行部55は、記憶部43から試験用命令列データ66を読み出して実行する(S602)。試験用命令列の実行後、実行結果退避部56は実行結果を記憶部43に実行結果データ67として格納する(S603)。
実行結果データ67を記憶部43に格納した後、初期値設定部54がレジスタに再度初期値をセットする(S604)。レジスタに初期値をセットした後、命令列実行部55は、記憶部43から試験用命令列データ66を読み出して実行する(S605)。
二度目の命令列の実行を終えた後、結果比較部57は、実行結果データ67として記憶部43に格納された一度目の実行結果と二度目の実行結果とを比較して評価し(S606)、比較結果を出力して(S607)、処理を終了する。
上述してきたように、本実施例2では、コンピュータに試験プログラムを実行させることでコンピュータ試験装置として動作させ、コンピュータ試験方法を実行する。そして、実施例2にかかる方法、装置、プログラムは、命令のオペランドに指定される複数のレジスタの一部を入力専用レジスタとする。加えて、実施例2にかかる方法、装置、プログラムは、特定の種別の命令については入力専用レジスタをオペランドとして指定しつつ試験用命令列を生成する。そして、実施例2にかかる方法、装置、プログラムは、入力専用レジスタに対して特定種別の命令によって例外割り込みを発生しない初期値を設定する。
このため、実施例2にかかる方法、装置およびプログラムは、例外割り込みと例外処理の発生を効率的かつ未然に抑制する。したがって、実施例2にかかる方法、装置およびプログラムは、レジスタの値を書き換えつつ、かつ例外割り込みと例外処理を発生することなく試験を行なうことができる。
また、実施例2にかかる方法、装置およびプログラムは、試験用命令列を生成する際に、命令が固定小数点除算である場合には除数として用いるオペランドとして入力専用レジスタを指定し、入力専用レジスタに初期値として0以外の値を設定する。このため、実施例2にかかる方法、装置およびプログラムは、固定小数点除算における例外割り込みの発生を回避することができる。
また、実施例2にかかる方法、装置およびプログラムは、試験用命令列を生成する際に、命令が浮動小数点演算である場合にオペランドの少なくとも一つに入力専用レジスタを指定する。そして、実施例2にかかる方法、装置およびプログラムは、入力専用レジスタに設定する初期値として、浮動小数点演算に用いる他の入力値がどのような値であっても浮動小数点演算における例外割り込みの発生を防止する値を用いる。このため、実施例2にかかる方法、装置およびプログラムは、浮動小数点演算における例外割り込みの発生を回避することができる。
また、実施例2にかかる方法、装置およびプログラムは、試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する。このため、実施例2にかかる方法、装置およびプログラムは、試験対象装置に複数回試験用命令列を実行させ、実行結果の比較によって評価を行なうことができる。この場合は、試験対象装置が試験用命令列の比較対象を試験中に生成することとなるので、シード値を変更させながら繰り返し試験を行なうことで長時間の動作試験を容易に実施可能である。
また、実施例2にかかる方法、装置およびプログラムは、試験用命令列を生成する際には、ランダムデータと第1のデータであるANDデータとの論理積に対し、第2のデータであるORデータとの論理和を取って試験用命令列に含まれる命令を生成する。第1のデータと第2のデータは、命令の種別ごとに定められる。そして、第1のデータは、命令の実行結果の出力先として使用するレジスタに対応する範囲のビット値に0を含む。このため、実施例2にかかる方法、装置およびプログラムは、簡易な処理で命令の出力にかかるレジスタ番号を制御することができる。
同様に、実施例2にかかる方法、装置およびプログラムは、第1のデータと第2のデータについて、命令の入力として使用するレジスタに対応する範囲のビット値を適宜設定することで、簡易な処理で命令の入力にかかるレジスタ番号を制御することができる。
また、実施例2にかかる方法、装置およびプログラムは、試験用命令列を生成する際に、命令の実行結果の出力先として指定したレジスタを後続の命令の入力に使用することで実行時にコンフリクトを発生する試験用命令列を生成することができる。このため、実施例2にかかる方法、装置およびプログラムは、コンフリクト試験中の例外割り込みの発生を回避することができる。
また、実施例2にかかる方法、装置およびプログラムは、先行する命令の実行結果の出力先として指定されたレジスタを入力に使用可能であるかを命令の種別ごとに指定するデータを用いてコンフリクト試験に用いる試験用命令列を生成する。このため、実施例2にかかる方法、装置およびプログラムは、入力専用レジスタなどをコンフリクトレジスタから除外してコンフリクト試験用の試験用命令列を生成することができる。
また、実施例2にかかる方法、装置およびプログラムは、出力レジスタを登録し、登録後に後続の命令の入力レジスタとして指定した場合に削除するレジスタテーブルを用いてコンフリクト試験用の試験用命令列を生成する。このため、実施例2にかかる方法、装置およびプログラムは、コンフリクト試験用の試験用命令列を簡易に生成することができる。
実施例3は、実施例2に示した試験プログラムの変形例である。コンピュータの試験は、論理設計段階や実機製造段階などで行なわれる。コンピュータが製造されて実機がある状態では、既に述べたように試験用命令列を複数回実行して結果を比較することが有効である。
一方、論理設計の段階では、コンピュータはシミュレータ上で仮想的に構築される。したがって、コンピュータの処理能力はシミュレータの能力によって制限を受ける。このため論理設計段階の試験では、予め他の装置で試験用命令列を実行して期待値を生成することが望ましい。このように期待値を予め生成することで、シミュレータ上で仮想的に構築されたコンピュータは、試験用命令列を一度実行すれば期待値との比較で評価が可能となる。
図23は、実施例3にかかる試験プログラムを実行するコンピュータの説明図である。図23に示したコンピュータ80では、CPU11が試験プログラムを実行することで命令生成部41と試験実行部81の機能を実現する。また、試験プログラムを実行したCPU11は、メインメモリ12を記憶部43として使用する。命令生成部41の構成および動作は実施例2と同様であるので同一の構成要素に同一の符号を付して説明を省略する。
記憶部43は、シード値データ61、命令定義構造体テーブル62、コンフリクトカウンタ63、コンフリクトレジスタテーブル64、期待値データ85を予め保持する。期待値データ85は、予めシード値データ61から試験用命令列を生成し、実行した結果である。期待値データ85を求めた際と同じ命令列を生成するため、命令生成部41は同じシード値データ61を使用して試験用命令列データ66を生成する。
試験実行部81は、初期値設定部82、命令列実行部83、結果比較部84を有する。図24は、試験実行部81の処理について説明するフローチャートである。試験実行処理が開始されると、初期値設定部82がレジスタに初期値をセットする(S701)。ここで、初期値設定部82がセットする初期値は、期待値データ85の生成時と同じ値を用いることが求められる。このため、期待値データ85の生成時に用いたレジスタ初期値データ65を記憶部43に予め格納しておき、初期値設定部82は、レジスタ初期値データ65を読み出して使用する。また、初期値設定部82が試験実行時にシード値データ61からレジスタ初期値データ65を求めるようにしてもよい。初期値設定部82が試験実行時にレジスタ初期値データ65を求める場合、初期値設定部82は期待値生成時と同一のシード値データ61を用いることで、期待値生成時と同一の初期値を得ることができる。
レジスタに初期値をセットした後、命令列実行部83は、記憶部43から試験用命令列データ66を読み出して実行する(S702)。命令列の実行を終えた後、結果比較部84は、記憶部43に格納された期待値データ85と実行結果とを比較して評価し(S703)、比較結果を出力して(S704)、処理を終了する。
上述してきたように、本実施例3にかかる試験プログラムによって得られるコンピュータ試験方法は、予め試験用命令列を実行して期待値を求めておくことで、試験対象のコンピュータ装置による試験用命令列の実行が一度であっても実行結果を評価可能である。このように予め期待値を求めることで試験対象装置の負荷を減らすことができる。このため、予め試験用命令列を実行して期待値を求める方法は、特にシミュレータでの試験に有効であるが、実機に対する試験に適用しても良い。また、試験用命令列を複数回実行して実行結果を互いに比較するとともに、各実行結果と期待値データとをさらに比較してもよい。
なお、実施例1〜3に開示の方法、装置、プログラムはあくまで一例であり、構成および動作を適宜変更して実施することができる。例えば、実施例1〜3に開示の方法、装置、プログラムは、レジスタセットの半分を入力専用レジスタとしていたが、レジスタセットにおける入力専用レジスタの比率や数は適宜変更して実施することができる。同様に実施例2では浮動小数点用レジスタセットと汎用レジスタセットとを用いる場合を例示したが、開示の技術は任意のレジスタセットを使用して試験を行なう場合に適用可能である。
また、実施例1〜3では、コンピュータがオペランドとして2個または3個の入力レジスタと1つの出力レジスタとを有する命令を使用する場合を例に説明を行ったが、どのようなオペランドの命令であっても開示の技術は適用可能である。また、実施例1〜3に開示したフローチャートは、その処理の追加、削除、順序の入れ替え等適宜変更することができる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先として指定する試験用の命令を複数有する試験用命令列を生成するステップと、
前記コンピュータが、
前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理するステップと
を含んだことを特徴とするコンピュータ試験方法。
(付記2)前記試験用命令列を生成するステップは、前記特定種別の命令が固定小数点除算である場合には除数として用いる入力値を保持するレジスタとして前記入力専用レジスタを指定し、前記入力専用レジスタに前記初期値として0以外の値を設定することを特徴とする付記1に記載のコンピュータ試験方法。
(付記3)前記試験用命令列を生成するステップは、前記特定種別の命令が浮動小数点演算である場合に前記浮動小数点演算の入力値を保持するレジスタの少なくとも一つに前記入力専用レジスタを指定し、前記入力専用レジスタに設定する初期値として、前記浮動小数点演算に用いる他の入力値がどのような値であっても前記浮動小数点演算における例外割り込みの発生を防止する値を用いることを特徴とする付記1または2に記載のコンピュータ試験方法。
(付記4)前記試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理するステップは、前記試験用命令列を複数回実行して実行結果を比較することを特徴とする付記1〜3のいずれか一つに記載のコンピュータ試験方法。
(付記5)前記試験用命令列を生成するステップは、前記命令の種別ごとに定められ、命令の実行結果の出力先として使用するレジスタに対応する範囲のビット値に0を含む第1のデータとランダムデータとの論理積に対し、前記命令の種別ごとに定められた第2のデータとの論理和を取って前記試験用命令列に含まれる命令を生成することを特徴とする付記1〜4のいずれか一つに記載のコンピュータ試験方法。
(付記6)前記試験用命令列を生成するステップは、命令の実行結果の出力先として指定されたレジスタを後続の命令が入力値を保持するレジスタとして指定する試験用命令列を生成することを特徴とする付記1〜5のいずれか一つに記載のコンピュータ試験方法。
(付記7)前記試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理するステップは、予め求められた期待値データと前記試験用命令列の実行結果とを比較することを特徴とする付記1〜6のいずれか一つに記載のコンピュータ試験方法。
(付記8)特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先として指定する試験用の命令を複数有する試験用命令列を生成する試験用命令列生成部と、
前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する評価処理部と
を備えたことを特徴とするコンピュータ試験装置。
(付記9)前記命令の種別ごとに定めた第1のデータと第2のデータとを命令定義構造体として保持する命令定義構造体テーブルをさらに備え、前記試験用命令列生成部は、ランダムデータと前記第1のデータとの論理積に対し、前記第2のデータとの論理和を取って前記試験用命令列に含まれる命令を生成し、前記第1のデータは命令の実行結果の出力先として使用するレジスタに対応する範囲のビット値に0を含むことを特徴とする付記8に記載のコンピュータ試験装置。
(付記10)前記命令定義構造体テーブルは、先行する命令の実行結果の出力先として指定されたレジスタを入力に使用可能であるかを前記命令の種別ごとに指定するデータをさらに保持することを特徴とする付記9に記載のコンピュータ試験装置。
(付記11)前記命令の実行結果の出力先として指定したレジスタを登録され、当該登録されたレジスタを後続の前記命令が入力値を保持するレジスタとして指定した場合に削除するレジスタテーブルをさらに備えたことを特徴とする付記8〜10のいずれか一つに記載のコンピュータ試験装置。
(付記12)前記命令の種別が固定小数点演算である場合に用いるレジスタのうち前記入力専用レジスタに設定する前記初期値として0以外の数を定め、前記命令の種別が浮動小数点演算である場合に用いるレジスタのうち前記入力専用レジスタに設定する前記初期値として、前記浮動小数点演算に用いる他の入力値がどのような値であっても前記浮動小数点演算における例外割り込みの発生を防止する値を定めるレジスタ初期値データを格納するレジスタ初期値データ格納部をさらに備えたことを特徴とする付記8〜11のいずれか一つに記載のコンピュータ試験装置。
(付記13)前記評価処理部は、予め求められた期待値データと前記試験用命令列の実行結果とを比較することを特徴とする付記8〜12のいずれか一つに記載のコンピュータ試験装置。
(付記14)特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先として指定する試験用の命令を複数有する試験用命令列を生成する手順と、
前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する手順と
をコンピュータに実行させることを特徴とするコンピュータ試験プログラム。
1,22 演算部
2 レジスタセット
10,80 コンピュータ
11 CPU
12 メインメモリ
13 ROM
15 バス
21 命令制御部
23 レジスタ群
31 試験プログラム
41 命令生成部
42,81 試験実行部
43 記憶部
51 シード値設定部
52 ランダムデータ生成部
53 試験用命令列生成部
54,82 初期値設定部
55,83 命令列実行部
56 実行結果退避部
57,84 結果比較部
61 シード値データ
62 命令定義構造体テーブル
63 コンフリクトカウンタ
64 コンフリクトレジスタテーブル
65 レジスタ初期値データ
66 試験用命令列データ
67 実行結果データ
71 浮動小数点レジスタセット
72 汎用レジスタセット
85 期待値データ
op01〜03,op11〜15 試験用命令
op21〜22,op31〜32 命令
opx−1〜2,opx−end 例外処理用命令
opc オペコード
rs1,rs2 入力レジスタ
rd 出力レジスタ
D0,D0−1,D0−2 ランダムデータ
D1 ANDデータ
D2 ORデータ
D3 試験用命令

Claims (7)

  1. コンピュータが、
    特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先として指定する試験用の命令を複数有する試験用命令列を生成するステップと、
    前記コンピュータが、
    前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理するステップと
    を含んだことを特徴とするコンピュータ試験方法。
  2. 前記試験用命令列を生成するステップは、前記特定種別の命令が固定小数点除算である場合には除数として用いる入力値を保持するレジスタとして前記入力専用レジスタを指定し、前記入力専用レジスタに前記初期値として0以外の値を設定することを特徴とする請求項1に記載のコンピュータ試験方法。
  3. 前記試験用命令列を生成するステップは、前記特定種別の命令が浮動小数点演算である場合に前記浮動小数点演算の入力値を保持するレジスタの少なくとも一つに前記入力専用レジスタを指定し、前記入力専用レジスタに設定する初期値として、前記浮動小数点演算に用いる他の入力値がどのような値であっても前記浮動小数点演算における例外割り込みの発生を防止する値を用いることを特徴とする請求項1または2に記載のコンピュータ試験方法。
  4. 前記試験用命令列を生成するステップは、命令の実行結果の出力先として指定されたレジスタを後続の命令が入力値を保持するレジスタとして指定する試験用命令列を生成することを特徴とする請求項1〜3のいずれか一つに記載のコンピュータ試験方法。
  5. 特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先として指定する試験用の命令を複数有する試験用命令列を生成する試験用命令列生成部と、
    前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する評価処理部と
    を備えたことを特徴とするコンピュータ試験装置。
  6. 前記命令の種別ごとに定めた第1のデータと第2のデータとを命令定義構造体として保持する命令定義構造体テーブルをさらに備え、前記試験用命令列生成部は、ランダムデータと前記第1のデータとの論理積に対し、前記第2のデータとの論理和を取って前記試験用命令列に含まれる命令を生成し、前記第1のデータは命令の実行結果の出力先として使用するレジスタに対応する範囲のビット値に0を含むことを特徴とする請求項5に記載のコンピュータ試験装置。
  7. 特定種別の命令実行によって例外割込みを発生しない値が設定された入力専用レジスタを命令の実行に用いる入力値を保持するレジスタとして指定し、入力専用レジスタ以外のレジスタを実行結果の出力先としてを指定する試験用の命令を複数有する試験用命令列を生成する手順と、
    前記生成した試験用命令列に含まれる複数の命令を順次実行して、実行結果を評価処理する手順と
    をコンピュータに実行させることを特徴とするコンピュータ試験プログラム。
JP2010125148A 2010-05-31 2010-05-31 コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム Ceased JP2011253253A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010125148A JP2011253253A (ja) 2010-05-31 2010-05-31 コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
US13/086,012 US8402316B2 (en) 2010-05-31 2011-04-13 Method of testing computer, computer test apparatus and non-transitory computer-readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010125148A JP2011253253A (ja) 2010-05-31 2010-05-31 コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム

Publications (1)

Publication Number Publication Date
JP2011253253A true JP2011253253A (ja) 2011-12-15

Family

ID=45023103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010125148A Ceased JP2011253253A (ja) 2010-05-31 2010-05-31 コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム

Country Status (2)

Country Link
US (1) US8402316B2 (ja)
JP (1) JP2011253253A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013175576A1 (ja) * 2012-05-22 2013-11-28 富士通株式会社 値管理方法、情報処理装置及びプログラム
KR20150117584A (ko) * 2014-04-09 2015-10-20 삼성전자주식회사 시스템 온 칩 및 그것의 검증 방법
KR20160114118A (ko) * 2014-03-28 2016-10-04 인텔 코포레이션 간섭 시험
JP2018116365A (ja) * 2017-01-16 2018-07-26 富士通株式会社 試験装置、試験プログラム生成方法及び試験方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2597573B1 (en) * 2011-11-28 2018-08-29 Tata Consultancy Services Limited Test data generation

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02244338A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd データ処理装置の試験方式
JPH06324904A (ja) * 1993-05-18 1994-11-25 Fujitsu Ltd 試験命令の補正方法
JPH0863367A (ja) * 1994-06-01 1996-03-08 Advanced Micro Devicds Inc テストベクトルを発生する方法およびテストベクトル発生システム
JPH08339312A (ja) * 1995-06-09 1996-12-24 Fujitsu Ltd テストプログラム自動生成システム
US5784550A (en) * 1996-10-29 1998-07-21 Hewlett-Packard Company Method for enhanced functional testing of a processor using dynamic trap handlers
JP2001222442A (ja) * 2000-02-08 2001-08-17 Fujitsu Ltd パイプライン試験方法、パイプライン試験命令生成方法及びその記憶媒体

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7152186B2 (en) * 2003-08-04 2006-12-19 Arm Limited Cross-triggering of processing devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02244338A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd データ処理装置の試験方式
JPH06324904A (ja) * 1993-05-18 1994-11-25 Fujitsu Ltd 試験命令の補正方法
JPH0863367A (ja) * 1994-06-01 1996-03-08 Advanced Micro Devicds Inc テストベクトルを発生する方法およびテストベクトル発生システム
JPH08339312A (ja) * 1995-06-09 1996-12-24 Fujitsu Ltd テストプログラム自動生成システム
US5784550A (en) * 1996-10-29 1998-07-21 Hewlett-Packard Company Method for enhanced functional testing of a processor using dynamic trap handlers
JP2001222442A (ja) * 2000-02-08 2001-08-17 Fujitsu Ltd パイプライン試験方法、パイプライン試験命令生成方法及びその記憶媒体

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013175576A1 (ja) * 2012-05-22 2013-11-28 富士通株式会社 値管理方法、情報処理装置及びプログラム
KR20160114118A (ko) * 2014-03-28 2016-10-04 인텔 코포레이션 간섭 시험
JP2017514199A (ja) * 2014-03-28 2017-06-01 インテル・コーポレーション 干渉試験
KR101959960B1 (ko) * 2014-03-28 2019-03-19 인텔 코포레이션 간섭 시험
US10516439B2 (en) 2014-03-28 2019-12-24 Intel Corporation Interference testing
KR20150117584A (ko) * 2014-04-09 2015-10-20 삼성전자주식회사 시스템 온 칩 및 그것의 검증 방법
KR102147172B1 (ko) 2014-04-09 2020-08-31 삼성전자주식회사 시스템 온 칩 및 그것의 검증 방법
JP2018116365A (ja) * 2017-01-16 2018-07-26 富士通株式会社 試験装置、試験プログラム生成方法及び試験方法

Also Published As

Publication number Publication date
US8402316B2 (en) 2013-03-19
US20110296147A1 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
US9383999B2 (en) Conditional compare instruction
US20140380279A1 (en) Prioritizing test cases using multiple variables
US10936474B2 (en) Software test program generation
EP3343351A1 (en) Parallel program generating method and parallelization compiling apparatus
US8365114B2 (en) Logic modification synthesis
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
JP2008176453A (ja) シミュレーション装置
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
JP6701799B2 (ja) データ源解析に基づく逐次反復的な試験生成
CN107665169B (zh) 处理器程序的测试方法和装置
US20190377667A1 (en) Test case selection apparatus and computer readable medium
US8661424B2 (en) Auto-generation of concurrent code for multi-core applications
US20150082278A1 (en) Clone detection method and clone function commonalizing method
US9442701B1 (en) Verifying models for exceptional behavior
US11099958B2 (en) Instruction generation for validation of processor functionality
JP6723483B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US9564187B2 (en) Predicting saturation in a shift operation
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
KR20200124251A (ko) 데이터 처리
US20190384687A1 (en) Information processing device, information processing method, and computer readable medium
US11915005B1 (en) Branch predictor triggering
US20060129368A1 (en) Object-oriented interface to RTL model signals
US9582619B1 (en) Simulation of a circuit design block using pattern matching
GB2552773A (en) Optimisation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140707

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141224

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20150421