JP6848457B2 - 試験装置、試験プログラム生成方法及び試験方法 - Google Patents

試験装置、試験プログラム生成方法及び試験方法 Download PDF

Info

Publication number
JP6848457B2
JP6848457B2 JP2017005285A JP2017005285A JP6848457B2 JP 6848457 B2 JP6848457 B2 JP 6848457B2 JP 2017005285 A JP2017005285 A JP 2017005285A JP 2017005285 A JP2017005285 A JP 2017005285A JP 6848457 B2 JP6848457 B2 JP 6848457B2
Authority
JP
Japan
Prior art keywords
instruction
test
register
block
sequence
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.)
Active
Application number
JP2017005285A
Other languages
English (en)
Other versions
JP2018116365A (ja
Inventor
慶和 稲垣
慶和 稲垣
静香 西牧
静香 西牧
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 JP2017005285A priority Critical patent/JP6848457B2/ja
Publication of JP2018116365A publication Critical patent/JP2018116365A/ja
Application granted granted Critical
Publication of JP6848457B2 publication Critical patent/JP6848457B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Description

試験装置、試験プログラム生成方法及び試験方法に関する。
コンピュータシステムの安定性が保証できるかを検証するため、消費電力量が最大となる動作を継続して実行させる最大電流負荷試験や、電流値のオン/オフを繰り返す状態を作り電源電圧の出力電圧を変動させる負荷試験(下記の特許文献1を参照)を行っていた。これらの試験においては、通常動作よりも高い電流値を消費するような動作をCentral Processor Unit(CPU、中央演算処理装置)にさせる必要があった。そのために、継続して演算を繰り返す命令列を実行させたり、定常的にキャッシュからメモリへのアクセスを発生させるメモリアクセスを繰り返し実行させたりしていた。また、複数のCPUがある場合には上記処理を並列に実行させていた。
特開2007−221856号公報
しかし、継続した演算やメモリアクセスを繰り返す動作は、ハードウェアの省電力機能が働いた場合、継続することができず、最大電流値を消費する動作を維持させることは困難であった。さらに、昨今のプロセッサにおいては多数の演算器が搭載され、逐次実行するプログラムにおいても自動で並列にプログラムが各演算器に投入されるため、複数の演算器を常時使用する命令列を作成することは困難であった。
そこで、本発明の1つの側面では、最大電流値を消費する動作を維持させることを目的とする。
態様の一例では、情報処理装置の動作試験を行う試験装置において、演算器に実行させる命令の種類の割合に基づいて、生成した各種類の命令を含む命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成するとともに、前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成する命令生成部と、生成された前記試験命令列による試験を実行する試験実行部と、前記試験命令列による試験の実行結果に基づいて、試験命令列を決定する試験命令決定部とを、有する。
コンピュータシステムの安定動作確認試験を効率的に実行することが可能となる。
実施形態の試験装置の機能ブロック図である。 実施形態の試験装置の機能ブロック図である。 CPU内における演算器及びユニットの一例を示す図である。 試験結果テーブルの一例を示す図である。 実施形態の試験装置における試験命令列の生成から試験命令列による試験までの動作フローを示すフローチャートである。 負荷試験に使用する試験命令列の決定フローを示すフローチャートである。 各命令種の命令リストの一例を示す図である。 全命令リストを示す図である。 ブロック内命令列の生成の具体例を説明するための図である。 連結ブロック内命令列を示す図である。 ブロック内レジスタリストを示す図である。 ブロック間レジスタリスト(固定小数点レジスタリスト)を示す図である。 ブロック間レジスタリスト(浮動小数点レジスタリスト)を示す図である。 ブロック間レジスタリスト(ロード/ストアレジスタリスト)を示す図である。 ブロック内の命令間でレジスタ依存を生成する際のフローを示すフローチャートである。 ブロック間の命令間でレジスタ依存を生成する際のフローを示すフローチャートである。 ブロック内の命令間でのレジスタ依存とブロック間の命令間でのレジスタ依存を複合させたレジスタ依存を生成する際のフローを示すフローチャートである。 実施形態における試験装置を実現するためのハードウェア構成の一例を示す図である。
以下、本発明を実施するための形態について図面を参照しながら説明する。図1は第1の実施形態の試験装置1の構成を示す機能ブロック図である。第1の実施形態の試験装置1は、消費電力量が最大となる状態を作り出すため、命令生成部10が試験命令列を生成し、試験実行部11が試験命令列による試験を実行し、試験命令決定部12が試験結果に基づいて最も負荷が高い試験命令列を決定する。具体的な内容については後述する。
第1の実施形態の試験装置1は他の機能ブロックを更に含み、その構成を図2に示す。
第1の実施形態の試験装置1は、命令生成部10、試験実行部11、試験命令決定部12、電流値/動作周波数測定部13、メモリ14、制御部15を有する。これらの機能ブロックによる処理は、例えば後述するCPU30がHard Disk Drive(HDD)162などに記憶された処理プログラムを実行する処理である。なお、試験装置1の構成は上記に限定されるものでなく、他の構成を含むものであってもよい。
制御部15は、試験装置1全体の動作を制御するものであって、例えば各機能ブロックに対して動作指示を行う。
命令生成部10は、演算器に実行させる命令の種類の割合に基づいて、各命令を含む全命令リストを生成する。演算器に実行させる命令の種類は、例えば固定小数点命令、浮動小数点命令、ロード/ストア命令(メモリアクセス命令とも言う)であるが、これらの命令に限定されるものではない。これらの命令は、命令毎に実行する演算器が決まっている。CPU30が命令列を実行する際、固定小数点命令は固定小数点演算器、浮動小数点命令は浮動小数点演算器、ロード/ストア命令はロード/ストアユニットによって実行される。ロード/ストア命令とは、メモリからレジスタへコピー(読み出しや書き込み)したり、レジスタからメモリへコピー(読み出しや書き込み)したりさせるための命令である。また、全命令リストとは、各命令の割合(K、F、M)に基づいて、固定小数点命令、浮動小数点命令、ロード/ストア命令を含めて生成される命令リストを言う。なお、命令生成部10の他の機能及び試験装置1の他の機能部については後述する。
図3はCPU内における演算器及びユニットの一例を示している。図3に示すCPU30は、命令デコーダ31、固定小数点演算器32(32a、32b)、浮動小数点演算器33(33a、33b、33c)、ロード/ストアユニット34を有する。
命令デコーダ31は、読み込まれた命令列を解析し、いずれの演算器又はユニットに実行させるべきか判断する。
固定小数点演算器32は、読み込まれた命令列のうち、固定小数点命令を実行する。この例では、固定小数点演算器32は2つあり、各演算器が動作することによって演算処理の高速化が図られる。
浮動小数点演算器33は、読み込まれた命令列のうち、浮動小数点命令を実行する。この例では、浮動小数点演算器33は3つあり、各演算器が動作することによって演算処理の高速化が図られる。
例えば、固定小数点命令のみの命令列を実行する場合、CPU30内では固定小数点演算器32のみが命令を実行し、浮動小数点演算器33やロード/ストアユニット34は動作しない。そのため、消費電力量が最大となることはない。消費電力量を高くするには、CPU30内のすべての演算器やユニットを途切れなく動作させる必要がある。しかし、CPU30によっては、演算器の数や、各演算器における演算レイテンシ(演算遅延)が異なるため、単純に固定小数点命令、浮動小数点命令、ロード/ストア命令を均等に並べた命令列を実行すればよいというわけではない。そのため、使用する命令列に含まれる命令種(命令の種類)の割合を調整する必要がある。
命令種の割合とは、命令列に含まれる各命令、すなわち固定小数点命令、浮動小数点命令、ロード/ストア命令の割合を示し、各命令の割合は例えば1から10の値で、経験則から指定される。
また、命令生成部10は、生成された全命令リストからランダムに抽出した命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成する。ブロック内命令列の生成の詳細については後述する。
また、命令生成部10は、各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報としてのレジスタリストに基づいて、連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成する。レジスタリストとは、各命令で使用されるレジスタ間の依存関係を示すもの、すなわちある命令で使用するレジスタを他の命令の入力のレジスタとして使用するようにレジスタに依存関係を持たせたものであって、命令種ごとに作成されるものである。
試験実行部11は、命令生成部10によって生成された試験命令列による試験を実行する。
電流値/動作周波数測定部13は、試験実行部11による試験命令列の実行により、電流値や動作周波数を測定し、得られた結果を図4に示す試験結果テーブルに記録し、メモリ14に格納する。電流値/動作周波数測定部13は、主に2つのデータを命令列実行後にメモリ14に退避させて保存する。メモリ14に退避させるデータは1つの試験につき0x30バイトであり、図4に示す試験結果テーブルの形式で退避させる。
1つ目のデータは命令列実行時間である。電流値/動作周波数測定部13は、生成された試験命令列の実行時間を測定する。なお、省電力モードにより動作周波数が下げられた場合は、実行時間は延びる傾向となる。
2つ目のデータは動作周波数と消費電力値である。電流値/動作周波数測定部13は、CPU30がパフォーマンスモニタ機能を有する場合、命令列実行後に採取する。パフォーマンスモニタ機能とは、CPU30やHDD162などのリソースをリアルタイムで監視する機能を言う。
図4に示すように、試験結果テーブルには1試験ごとにブロック数分(例えば、N個)の結果が記録される。
試験命令決定部12は、試験実行部11による試験命令列の複数の実行結果に基づいて、最も負荷が高い試験命令列を決定する。
具体的には、試験命令決定部12は、図4に示す試験結果テーブルに基づいて、負荷試験に使用する試験命令列を決定する。試験命令決定部12は、まずCPU30が動作周波数のモニタ機能を有する場合には動作周波数が低い試験命令列を対象から外す。その上で、試験命令決定部12は、CPU30が消費電力値のモニタ機能を有する場合には消費電力が最大となる試験命令列を試験で使用すると決定する。一方、CPU30が消費電力値のモニタ機能を有していない場合には、試験命令数と命令列実行時間から単位時間当たりに実行した命令数を計算し、命令実行数が最大となるものを消費電力が高い試験命令列として試験に使用すると決定する。
ここで、第1の実施形態の試験装置1における試験命令列の生成から試験命令列による試験までの動作フローについて図5を用いて説明する。この処理は例えば、CPU30がHDD162などに記憶された決定処理プログラムを実行する処理である。まず、命令生成部10は、演算器に実行させる命令の種類の割合に基づいて、各命令を含む全命令リストを生成する(ステップS501)。
命令生成部10は、生成された全命令リストからランダムに抽出した命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成する(ステップS502)。具体的には、命令生成部10は、seed値(所定の値)に基づいて乱数を生成する。命令生成部10は、生成された乱数の一部(乱数の先頭の4バイトのデータR)を命令の種類の割合により算出される値((K+F+M)×I)で割り、その余剰をインデックスとして用いて全命令リストから命令を抽出してブロック内命令列を生成する。命令生成部10は、各命令で使用されるレジスタ間の依存関係を示すレジスタリストに基づいて、連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成する(ステップS503)。
試験実行部11は、レジスタの初期化を行う(ステップS504)。レジスタの初期化の一例について説明する。例えば、浮動小数点演算命令の場合、浮動小数点例外が発生するとハードウェアの割り込みが発生し、演算命令投入が停滞する。そこで、浮動小数点例外が発生しないようにするため、レジスタの初期値に用いるデータの値をランダムで生成し、浮動小数点の指数部に当たるビットを0x3ff(整数で1.xxx)で上書きする。これにより、データの桁上がりを可能な限り抑制することができ、浮動小数点例外が発生する確率を軽減させることが可能となる。
試験実行部11は、生成された試験命令列の実行をする(ステップS505)。電流値/動作周波数測定部13は、試験実行部11による試験命令列の実行により、電流値、動作周波数を測定し、得られた結果を試験結果テーブルに記録し、メモリ14に格納する(ステップS506)。試験命令決定部12は、試験命令列の試験実行をブロック数N回実行したか否かを判断し(ステップS507)、N回実行した場合(ステップS507でYes)、試験命令決定部12は、試験命令列の実行結果に基づいて、最も負荷が高い試験命令列を決定する(ステップS508)。なお、N回実行していない場合(ステップS508でNo)にはステップS501へ戻り、新たな試験命令列を生成して試験命令列の実行を行う。
試験実行部11は、所定の試験モード、すなわち負荷変動試験又は高負荷試験のいずれを選択するか否かを判断する(ステップS509)。試験実行部11は、負荷変動試験を選択した場合には、決定された試験命令列を使用し、CPU30による試験命令列の実行と停止を周期的に繰り返す(ステップS510)。一方、試験実行部11は、高負荷試験を選択した場合には、決定された試験命令列を使用し、CPU30による試験命令列の実行を繰り返す(ステップS511)。
上記負荷試験に使用する試験命令列の決定フローの詳細を図6に示す。この処理は例えば、CPU30がHDD162などに記憶された決定処理プログラムを実行する処理である。試験命令決定部12は動作周波数が測定されているか否かを判断する(ステップS601)。動作周波数が測定されている場合(ステップS601でYes)、試験命令決定部12は、動作周波数が低い試験命令列を採用の対象外とする(ステップS602)。一方、動作周波数が測定されていない場合(ステップS601でNo)、試験命令決定部12は、消費電力が測定されているか否かを判断する(ステップS603)。消費電力が測定されている場合(ステップS603でYes)、試験命令決定部12は消費電力が最大となる試験命令列を試験で使用すると決定し(ステップS604)、決定処理を終了させる。
消費電力が測定されていないと判断された場合(ステップS603でNo)、試験命令決定部12は試験命令数と命令列実行時間から単位時間当たりに実行した命令数を算出し、命令実行数が最大となるものを消費電力が高い試験命令列として試験に使用すると決定する(ステップS605)。
次に、第1の実施形態の試験装置1における試験命令列の生成処理について具体的に説明する。まず、前提条件について説明する。ここでは、固定小数点命令の命令割合をK、浮動小数点命令の命令割合をF、ロード/ストア命令の命令割合をM、ブロック内命令数をB、ブロック数をNとする。
ブロック内命令数とは、1つのブロックに含まれる命令数を言う。ブロックとは、全命令リストからランダムに命令を抽出して命令を格納するものであり、ブロック内に格納される命令列をブロック内命令列と言う。ブロック内の命令種の振り分けは、上記割合に基づいて決定される。ブロック内の命令出現順序はランダムである。ランダムに決定するために乱数を用いる。乱数はseed値を入力として生成し、同じseed値を使用した場合は常に同じ乱数が生成される。
ブロック数とは、試験で使用する命令数を決定する際に用いられるものであり、試験で使用する命令数はブロック数にブロック内命令数を掛け合わせたものである。
また、前提条件として、全命令リストを生成するために用いられる命令リストを用意する。この場合に用意される命令リストは図7に示す各命令種の命令リストである。図7に示すように、命令リストには、固定小数点命令リスト、浮動小数点命令リスト、ロード/ストア命令リストがある。このとき、各命令リストの数が同数になるように調整する。この例では、命令数Iは7個である。試験対象のCPU30でサポートする固定小数点命令、浮動小数点命令、ロード/ストア命令であって、最大数となる命令種の命令数に各命令リストの命令数を合わせる。この例では、浮動小数点命令リストの命令数が最大となるため、固定小数点命令リスト及びロード/ストア命令リストの命令を繰り返すなどして命令数を浮動小数点命令リストの命令数7個に合わせる。
上記前提条件を踏まえ、試験命令列を生成する。
まず、命令生成部10は、各命令種の割合(K、F、M)に基づいて、固定小数点命令、浮動小数点命令、ロード/ストア命令を含む全命令リストを生成する。生成される全命令リストは、各命令種の割合分の命令リストが連結されたものとなる。具体的には、各命令種の割合がK=3、F=4、M=2の場合、生成される全命令リストは、図8に示すように、固定小数点命令リスト3つと、浮動小数点命令リスト4つと、ロード/ストア命令リスト2つとが連結されたものとなる。このときの全命令リストの全体の命令数は(K+F+M)×Iで算出されるため、各命令リストの命令数Iが7個の場合、全命令リストの全体の命令数は(3+4+2)×7=63個となる。
全命令リストを生成すると、命令生成部10は、生成した全命令リストを用いてブロック内命令列を生成する。ブロック内命令列を生成する際、命令生成部10は、まず所定のseed値からブロック内命令数B×4バイトの乱数を生成する。命令生成部10は、生成された乱数の先頭の4バイトのデータ(Rとする)を(K+F+M)×Iで割った余剰(R mod (K+F+M)×I)をインデックスとし、全命令リストから使用する命令を選択する。次の4バイトについても同様に余剰を求め、全命令リストから使用する命令を選択する。
命令生成部10は、この処理をブロック内命令数B回繰り返すことにより、ブロック内命令列を生成する。全命令リストに含まれる固定小数点命令、浮動小数点命令、ロード/ストア命令の割合はK:F:Mであるため、ブロック内で使用する命令の割合は命令数が多くなればなるほどK:F:Mに収束する。
ブロック内命令列の生成の具体例を図9に示す。図9に示すように、命令生成部10は、まず乱数を生成し、4バイトデータのRをブロック内命令数B個抽出する。例えば、B=5の場合には4バイトデータのRを5個抽出する。命令生成部10は、それぞれの4バイトデータのRを((K+F+M)×I)で割った余剰を求め、求められた余剰をインデックスとする。例えば、K=3、F=4、M=2、I=7の場合、求められる余剰は0から62であり、インデックスは0から62となる。例えば、全命令リストの先頭のA命令から順に0から62のインデックス63個が付されたとすると、命令生成部10は、求めた余剰のインデックスに対応するインデックスの命令(例えば、D命令)を全命令リストから抽出し、ブロック内命令列に抽出順に格納する。これにより、ブロック内命令列が生成される。
命令生成部10は、ブロック内命令列をブロック数N分生成し、生成されたブロック命令列を連結することで連結ブロック内命令列を生成する。具体的は、図10に示すように、命令生成部10は、最初のブロック命令列を生成後、seed値(例えば、a)を+1インクリメントし、乱数を生成してから上述したようにブロック命令列を生成する。命令生成部10は、ブロック数N回、ブロック命令列生成処理を行い、最終的にB×Nの命令列、すなわち連結ブロック内命令列を生成する。この時点では連結ブロック内命令列における命令種は決定されているが、使用するレジスタ(例えば、レジスタ番号)についてはまだ決定されていない状態である。よって、連結ブロック内命令列の命令ごとに使用するレジスタを決定し、試験命令列を生成する必要がある。
次に、使用するレジスタを決定する処理について説明する。
命令投入のタイミングによってはパイプラインストールによる命令再実行が発生し、負荷が下がるケースもある。パイプラインストールとは命令が実行されずに滞ることを言う。負荷が下がることにより、消費電力量が最大となる状態を作り出すことが困難となるため、負荷が下がりすぎないようにする必要がある。また、負荷が上がりすぎ、省電力モード機能が働くなどして消費電力量が最大となる状態を作り出すことができないことも避ける必要がある。よって、命令の実行時に使用するレジスタ間の依存関係についても調整する必要がある。
レジスタの依存関係を生成するためにレジスタリストを使用する。ここでは、命令種ごとに使用できるレジスタは異なるため、命令生成部10は命令種ごとにレジスタリストを生成する。生成されるレジスタリストには、ブロック内命令列のブロック内の命令間でレジスタの依存関係を持たせるためのブロック内レジスタリストと、ブロック内命令列のブロック間の命令間でレジスタの依存関係を持たせるためのブロック間レジスタリストがある。レジスタリストは、命令番号、入力レジスタ、結果を格納するための結果レジスタから構成されている。レジスタリストの入力レジスタの数は命令種の中で、入力レジスタを使用する数が最も多い命令種の入力レジスタ数に合わせるものとする。以下で説明するレジスタリストでは、浮動小数点命令が入力レジスタを最も多く使用する命令種である。
まず、ブロック内レジスタリストについて図11を用いて説明する。図11に示すブロック内レジスタリストでは、レジスタの依存関係を持たせるため、ある命令番号の命令で使用した結果レジスタのレジスタを他の命令番号の命令で使用する入力レジスタ1のレジスタとしている。例えば、固定小数点レジスタリストの場合、命令番号0の命令で使用した結果レジスタの固定小数点レジスタ3を命令番号1の命令で使用する入力レジスタ1のレジスタとしている。なお、試験で使用するレジスタをすべて使用した場合には命令番号を0に戻す。他の命令種のレジスタリストについても同様である。
次に、ブロック間レジスタリストについて図12Aから図12Cを用いて説明する。ブロック間レジスタリストでは、命令種ごとに2つのレジスタリストを有する。図12Aから図12Cには各命令種のレジスタリスト(ブロック間レジスタリスト)が示されている。図12Aから図12Cに示す各ブロック間レジスタリストでは、ブロック内の命令間でレジスタの依存関係を持たせないため、命令番号が前後する命令間では同一のレジスタを使用しない。すなわち、ある命令種のレジスタリスト1で使用する結果レジスタのレジスタを対応する命令種のレジスタリスト2の入力レジスタ1のレジスタとして使用する。また、ある命令種のレジスタリスト1で使用する入力レジスタ1のレジスタを対応する命令種のレジスタリスト2の結果レジスタのレジスタとして使用する。
例えば、固定小数点レジスタリストの場合、固定小数点レジスタリスト1の命令番号0の命令で使用する結果レジスタの固定小数点レジスタ8を、固定小数点レジスタリスト2の命令番号0の命令で使用する入力レジスタ1のレジスタとしている。また、固定小数点レジスタリスト1の命令番号0の命令で使用する入力レジスタ1の固定小数点レジスタ0を、固定小数点レジスタリスト2の命令番号0の命令で使用する結果レジスタのレジスタとしている。なお、試験で使用するレジスタをすべて使用した場合には命令番号を0に戻す。他の命令種のレジスタリストについても同様であるため説明を省略する。
命令生成部10は、上述したレジスタリストに基づいて各命令で使用するレジスタを決定する。以下では、ブロック内の命令間でレジスタ依存を生成する場合と、ブロック間の命令間でレジスタ依存を生成する場合について説明する。
まず、ブロック内の命令間でレジスタ依存を生成する場合について説明する。この場合には、命令生成部10は、上述したブロック内レジスタリストを使用して試験命令列を生成する。
命令生成部10は、ブロック内の最初の命令から順に命令種を調べ、命令種に該当するレジスタリストを選択する。このとき、レジスタリストごとに選択カウンタを有している。レジスタリストを選択した回数と、レジスタリストの命令番号が一致するレジスタ群(入力レジスタ、結果レジスタ)が該当する命令で使用するレジスタとして選択する。これにより、前後に存在する同一の命令種の命令において入力レジスタ1と結果レジスタに依存関係を持たせることができる。なお、レジスタリストごとの選択回数は、命令番号の最大値と一致した時点で0に初期化されるものとする。
ブロック内の命令間でレジスタ依存を生成する際のフローを図13に示す。この処理は例えば、CPU30がHDD162などに記憶された処理プログラムを実行する処理である。まず、命令生成部10は、固定小数点選択カウンタFX、浮動小数点選択カウンタFP、ロード/ストア選択カウンタMA、命令カウンタDをそれぞれ0に初期化する(ステップS1301)。固定小数点選択カウンタとは、固定小数点命令のレジスタリストが選択された数をカウントするものである。浮動小数点選択カウンタとは、浮動小数点命令のレジスタリストが選択された数をカウントするものである。ロード/ストア選択カウンタとは、ロード/ストアのレジスタリストが選択された数をカウントするものである。命令カウンタとは、使用するレジスタを決定するために命令が選択された数をカウントするものである。
命令生成部10は、あるブロック内命令列のD番目の命令種が何であるか、すなわち固定小数点命令、浮動小数点命令、ロード/ストア命令のいずれであるかを判定する(ステップS1302)。初期化後の最初の判定ステップではD=0であるため、ブロック内命令列の0番目の命令、すなわち最初の命令の命令種が何であるかが判定される。
上記判定により、例えば命令種が固定小数点命令である場合、命令生成部10は、固定小数点レジスタリストを選択する(ステップS1303)。命令生成部10は、選択した固定小数点レジスタリストのFX番目、すなわち命令番号がFXに対応するレジスタ群(入力レジスタ1、入力レジスタ2、結果レジスタ)をD番目の命令で使用するレジスタとして選択する(ステップS1304)。例えば、D=0、FX=0の場合には、固定小数点レジスタリストの0番目、すなわち命令番号が0に対応するレジスタ群(入力レジスタ1が固定小数点レジスタ0、入力レジスタ2が固定小数点レジスタ1、結果レジスタが固定小数点レジスタ3)を最初の命令で使用するレジスタとして選択する。
命令生成部10は、使用するレジスタを選択すると、FXに1を加えるとともに(ステップS1305)、Dに1を加える(ステップS1306)。命令生成部10は、命令カウンタDがブロック内命令数Bと一致するか否かを判断する(ステップS1307)。命令生成部10は、一致しない場合(ステップS1307でNo)、ブロック内命令のすべての命令に対してレジスタが選択されていないと判断し、ステップS1302へ戻る。一方、一致する場合(ステップS1307でYes)には、命令生成部10は処理を終了させる。以上の処理を行うことによって試験命令列が生成される。
なお、ステップS1302において、D番目の命令種が浮動小数点命令である場合について説明する。命令生成部10は、浮動小数点レジスタリストを選択する(ステップS1308)。命令生成部10は、選択した浮動小数点レジスタリストのFP番目、すなわち命令番号がFPに対応するレジスタ群(入力レジスタ1、入力レジスタ2、入力レジスタ3、結果レジスタ)をD番目の命令で使用するレジスタとして選択する(ステップS1309)。例えば、D=0、FP=0の場合には、浮動小数点レジスタリストの0番目、すなわち命令番号が0に対応するレジスタ群(入力レジスタ1が浮動小数点レジスタ0、入力レジスタ2が浮動小数点レジスタ1、入力レジスタ3が浮動小数点レジスタ2、結果レジスタが浮動小数点レジスタ3)を最初の命令で使用するレジスタとして選択する。命令生成部10は、使用するレジスタを選択すると、FPに1を加える(ステップS1310)。
また、ステップS1302において、D番目の命令種がロード/ストア命令である場合について説明する。命令生成部10は、ロード/ストアレジスタリストを選択する(ステップS1311)。命令生成部10は、選択したロード/ストアレジスタリストのMA番目、すなわち命令番号がMAに対応するレジスタ群(入力レジスタ1、入力レジスタ2、結果レジスタ)をD番目の命令で使用するレジスタとして選択する(ステップS1312)。例えば、D=0、MA=0の場合には、ロード/ストアレジスタリストの0番目、すなわち命令番号が0に対応するレジスタ群(入力レジスタ1が固定小数点レジスタ0、入力レジスタ2が固定小数点レジスタ1、結果レジスタが固定小数点レジスタ2)を最初の命令で使用するレジスタとして選択する。命令生成部10は、使用するレジスタを選択すると、MAに1を加える(ステップS1313)。
なお、上記処理フローはすべてのブロック内命令列に対して同様に行われる。
次に、ブロック間の命令間でレジスタ依存を生成する場合について説明する。この場合には、命令生成部10は、上述したブロック間レジスタリストを使用して試験命令列を生成する。具体的には、命令生成部10は、試験命令列のブロックが偶数番目のブロックの場合には各命令種のレジスタリスト1を使用し、試験命令列のブロックが奇数番目のブロックの場合には各命令種のレジスタリスト2を使用する。このように、ブロック間レジスタリストを使用することにより、ブロック内の命令間ではレジスタ依存は発生しないが、ブロック間の命令間では同一命令種の同一番目の命令においてレジスタ依存が発生する。
ブロック間の命令間でレジスタ依存を生成する際のフローを図14に示す。この処理は例えば、CPU30がHDD162などに記憶された処理プログラムを実行する処理である。まず、命令生成部10は、試験命令列の各ブロックをカウントするためのブロックカウンタSを0に初期化する(ステップS1401)。命令生成部10は、ブロックカウンタSが偶数であるか否かを判断する(ステップS1402)。偶数であると判断した場合(ステップS1402でYes)、命令生成部10は、固定小数点レジスタリスト1、浮動小数点レジスタリスト1、ロード/ストアレジスタリスト1を選択する(ステップS1403)。
命令生成部10は、選択した各命令種のレジスタリストを使用して、各命令で使用するレジスタの選択を実行する(ステップS1404)。このレジスタ選択の実行処理では、上述した図13に示す処理フローと同様の処理が行われるため、説明を省略する。命令生成部10は、レジスタ選択の実行処理が終了すると、ブロックカウンタSに1を加え(ステップS1405)、ブロックカウンタSの値が試験命令列のブロック数Nと一致するか否かを判断する(ステップS1406)。一致する場合(ステップS1406でYes)、命令生成部10は、すべての命令についてレジスタの選択が終了したと判断して処理を終了させる。一致しない場合(ステップS1406でNo)、ステップS1402へ戻る。
一方、ステップS1402において、ブロックカウンタSが偶数ではないと判断した場合(ステップS1402でNo)、命令生成部10は、固定小数点レジスタリスト2、浮動小数点レジスタリスト2、ロード/ストアレジスタリスト2を選択する(ステップS1407)。命令生成部10は、選択した各命令種のレジスタリストを使用して、各命令で使用するレジスタの選択を実行する(ステップS1404)。以上の処理を行うことによって試験命令列が生成される。
次に、ブロック内の命令間でのレジスタ依存とブロック間の命令間でのレジスタ依存を複合させてレジスタ依存を生成する場合について説明する。この場合、上述したブロック内の命令間でのレジスタ依存とブロック間の命令間でのレジスタ依存を順次適用し、各命令で使用するレジスタを選択する。ブロック内の命令間でのレジスタ依存の連続出現数をXとし、ブロック間の命令間でのレジスタ依存の連続出現数をYとし、XとYはそれぞれ任意又はランダムに設定可能である。
ブロック内の命令間でのレジスタ依存とブロック間の命令間でのレジスタ依存を複合させたレジスタ依存を生成する際のフローを図15に示す。この処理は例えば、CPU30がHDD162などに記憶された処理プログラムを実行する処理である。まず、命令生成部10は、試験命令列の各ブロックをカウントするためのブロックカウンタSを0に初期化する(ステップS1501)。命令生成部10はXの値を設定する(ステップS1502)。このとき、Xの値は任意設定又はランダム設定される。命令生成部10は、1つのブロック内命令数BとXの値を掛け合わせた値を、図13に示す処理の命令カウンタDの値として、図13に示すブロック内の命令間でのレジスタ依存を生成する処理を実行する(ステップS1503)。
命令生成部10は、ブロック内でのレジスタ依存を生成する処理の実行後、ブロックカウンタSにXの値を加える(ステップS1504)。命令生成部10は、ブロックカウンタSが試験命令列のブロック数N以上であるか否かを判断する(ステップS1505)。ブロックカウンタSがブロック数N以上である場合(ステップS1505でYes)、命令生成部10は、ブロック数Nを超えた分のレジスタ選択を削除する(ステップS1506)。
一方、ブロックカウンタSがブロック数N以上でない場合(ステップS1505でNo)、命令生成部10はYの値を設定する(ステップS1507)。このとき、Yの値は任意設定又はランダム設定される。命令生成部10は、試験命令列のブロック数NをYとして図14に示すブロック間の命令間でのレジスタ依存を生成する処理を実行する(ステップS1508)。
命令生成部10は、ブロック間でのレジスタ依存を生成する処理を実行後、ブロックカウンタSにYの値を加える(ステップS1509)。命令生成部10は、ブロックカウンタSがブロック数N以上であるか否かを判断する(ステップS1510)。ブロックカウンタSがブロック数N以上である場合(ステップS1510でYes)、命令生成部10は、ブロック数Nを超えた分のレジスタ選択を削除する(ステップS1506)。一方、ブロックカウンタSがブロック数N以上でない場合(ステップS1510でNo)、ステップS1502へ戻る。以上の処理を行うことによって試験命令列が生成される。
次に、実施形態における試験装置を実現するためのハードウェア構成の一例について図16を用いて説明する。ハードウェア構成は、例えば、CPU30、HDD162、Random Access Memory(RAM)163、グラフィック処理装置164、入力Interface(I/F)165、書き込み/読み取り部166、LAN I/F167、バス168を備えている。CPU30、HDD162、RAM163、グラフィック処理装置164、入力I/F165、書き込み/読み取り部166、LAN I/F167は、バス168を介して互いに接続されている。
CPU30は、バス168を介して、HDD162などに格納される試験装置の各種処理を行うためのプログラム(例えば、試験プログラム生成プログラムなど)を読み込む。CPU30は、読み込んだプログラムをRAM163に一時的に格納し、そのプログラムにしたがって各種処理を行う。
HDD162には、試験装置の各種処理を行うためのアプリケーションプログラムや、試験装置の処理に必要なデータなどが格納される。
RAM163は、揮発性メモリであって、CPU30に実行させるためのOperating System(OS)プログラムやアプリケーションプログラムの一部が一時的に格納される。また、RAM163にはCPU30による処理に必要な各種データが格納される。
グラフィック処理装置164は、モニタなどと接続可能であってモニタに表示させる情報を生成するものである。
入力I/F165は、マウスやキーボードなどを介して入力される情報を受け付けるものである。
書き込み/読み取り部166は、Universal Serial Bus(USB)メモリなどの可搬型記憶媒体に情報を書き込んだり、可搬型記憶媒体から情報と読み取ったりするものである。
LAN I/F167は、外部装置などとネットワークを介してデータの送受信を行うものである。
バス168は、各装置間の制御信号、データ信号などの授受を媒介する経路である。
上述した実施形態では、試験装置1の主な処理をCPUによるソフトウェア処理によって実行するものとして説明したが、この処理の全部又は一部をハードウェアによって実現するようにしてもよい。
実施形態の試験装置1の1つの側面によれば、消費電力量が最大となる状態を継続して作り出すことができ、効率的にコンピュータシステムの安定動作確認試験を実施することが可能である。また、省電力機能を有するコンピュータシステムで最大電力負荷が継続する試験を実施する場合、ランダムに生成した命令列の試験走行と、電流測定を繰り返す必要がある。10パターン程度の試行で多くの時間を要し、また期待した電力負荷が出ない場合は更に多くの試行期間が必要であった従来の課題が、実施形態の試験装置1の1つの側面によれば1時間程度で試験実施が可能となる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)情報処理装置の動作試験を行う試験プログラム生成方法において、
コンピュータに、
演算器に実行させる命令の種類の割合に基づいて、各種類の命令を含む命令リストを生成させ、
生成された前記命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成させ、
前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成させる試験プログラム生成方法。
(付記2)前記依存関係レジスタ情報は、前記ブロック内命令列のブロック内の命令間におけるレジスタの依存関係を持たせるためのブロック内レジスタリストと、前記ブロック内命令列のブロック間の命令間でレジスタの依存関係を持たせるためのブロック間レジスタリストを含み、
前記ブロック内の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリストを用い、
前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック間レジスタリストを用い、
前記ブロック内の命令間及び前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリスト及び前記ブロック間レジスタリストを用いて、
前記試験命令列を生成する付記1に記載の試験プログラム生成方法。
(付記3)前記ブロック内命令列を生成する際、
所定の値に基づいて生成された乱数の一部を前記命令の種類の割合を用いて割った余剰を用いて全命令リストから命令を抽出する付記1又は2に記載の試験プログラム生成方法。
(付記4)情報処理装置の動作試験を行う試験装置を用いた試験方法において、
前記試験装置が有する命令生成部が、演算器に実行させる命令の種類の割合に基づいて、各種類の命令を含む命令リストを生成し、
前記命令生成部が、生成された前記命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成し、
前記命令生成部が、前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成し、
前記試験装置が有する試験実行部が、生成された前記試験命令列による試験を実行し、
前記試験装置が有する試験命令決定部が、前記試験命令列による試験の実行結果に基づいて、試験命令列を決定する試験方法。
(付記5)前記依存関係レジスタ情報は、前記ブロック内命令列のブロック内の命令間におけるレジスタの依存関係を持たせるためのブロック内レジスタリストと、前記ブロック内命令列のブロック間の命令間でレジスタの依存関係を持たせるためのブロック間レジスタリストを含み、
前記ブロック内の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリストを用い、
前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック間レジスタリストを用い、
前記ブロック内の命令間及び前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリスト及び前記ブロック間レジスタリストを用いて、
前記試験命令列を生成する付記4に記載の試験方法。
(付記6)前記ブロック内命令列を生成する際、
所定の値に基づいて生成された乱数の一部を前記命令の種類の割合を用いて割った余剰を用いて全命令リストから命令を抽出する付記4又は5に記載の試験方法。
1 試験装置
10 命令生成部
11 試験実行部
12 試験命令決定部
13 電流値/動作周波数測定部
14 メモリ
15 制御部
30 CPU
31 命令デコーダ
32(32a、32b) 固定小数点演算器
33(33a、33b、33c) 浮動小数点演算器
34 ロード/ストアユニット
162 HDD
163 RAM
164 グラフィック処理装置
165 入力I/F
166 書き込み/読み取り部
167 LAN I/F
168 バス

Claims (5)

  1. 情報処理装置の動作試験を行う試験装置において、
    演算器に実行させる命令の種類の割合に基づいて、生成した各種類の命令を含む命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成するとともに、前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成する命令生成部と、
    生成された前記試験命令列による試験を実行する試験実行部と、
    前記試験命令列による試験の実行結果に基づいて、試験命令列を決定する試験命令決定部とを、
    有する試験装置。
  2. 前記依存関係レジスタ情報は、前記ブロック内命令列のブロック内の命令間におけるレジスタの依存関係を持たせるためのブロック内レジスタリストと、前記ブロック内命令列のブロック間の命令間でレジスタの依存関係を持たせるためのブロック間レジスタリストを含み、
    前記命令生成部は、
    前記ブロック内の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリストを用い、
    前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック間レジスタリストを用い、
    前記ブロック内の命令間及び前記ブロック間の命令間においてレジスタの依存関係を持たせる場合、前記ブロック内レジスタリスト及び前記ブロック間レジスタリストを用いて、
    前記試験命令列を生成する請求項1に記載の試験装置。
  3. 前記命令生成部は、前記ブロック内命令列を生成する際、
    所定の値に基づいて生成された乱数の一部を前記命令の種類の割合を用いて割った余剰を用いて全命令リストから命令を抽出する請求項1又は2に記載の試験装置。
  4. 情報処理装置の動作試験を行う試験プログラム生成方法において、
    コンピュータに、
    演算器に実行させる命令の種類の割合に基づいて、各種類の命令を含む命令リストを生成させ、
    生成された前記命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成させ、
    前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成させる試験プログラム生成方法。
  5. 情報処理装置の動作試験を行う試験装置を用いた試験方法において、
    前記試験装置が有する命令生成部が、演算器に実行させる命令の種類の割合に基づいて、各種類の命令を含む命令リストを生成し、
    前記命令生成部が、生成された前記命令リストからランダムに抽出された命令を含むブロック内命令列を所定数生成して連結した連結ブロック内命令列を生成し、
    前記命令生成部が、前記各命令で使用されるレジスタ間の依存関係を示す依存関係レジスタ情報に基づいて、前記連結ブロック内命令列の命令ごとにレジスタを選択して試験命令列を生成し、
    前記試験装置が有する試験実行部が、生成された前記試験命令列による試験を実行し、
    前記試験装置が有する試験命令決定部が、前記試験命令列による試験の実行結果に基づいて、試験命令列を決定する試験方法。
JP2017005285A 2017-01-16 2017-01-16 試験装置、試験プログラム生成方法及び試験方法 Active JP6848457B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017005285A JP6848457B2 (ja) 2017-01-16 2017-01-16 試験装置、試験プログラム生成方法及び試験方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017005285A JP6848457B2 (ja) 2017-01-16 2017-01-16 試験装置、試験プログラム生成方法及び試験方法

Publications (2)

Publication Number Publication Date
JP2018116365A JP2018116365A (ja) 2018-07-26
JP6848457B2 true JP6848457B2 (ja) 2021-03-24

Family

ID=62985467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017005285A Active JP6848457B2 (ja) 2017-01-16 2017-01-16 試験装置、試験プログラム生成方法及び試験方法

Country Status (1)

Country Link
JP (1) JP6848457B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4141678A4 (en) * 2020-04-21 2023-12-27 Nippon Telegraph And Telephone Corporation DEVICE, METHOD AND PROGRAM FOR EXECUTION PROCEDURE SEARCH
CN115391124B (zh) * 2022-10-27 2023-03-21 瀚博半导体(上海)有限公司 一种面向图形芯片功耗测试的方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075831A (ja) * 1999-08-31 2001-03-23 Ando Electric Co Ltd プログラム処理装置、ic試験システム、プログラム処理方法及び記憶媒体
JP2002312164A (ja) * 2001-04-17 2002-10-25 Fujitsu Ltd 試験用命令列生成装置
JP2011253253A (ja) * 2010-05-31 2011-12-15 Fujitsu Ltd コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
JP6363409B2 (ja) * 2014-06-25 2018-07-25 Necプラットフォームズ株式会社 情報処理装置の試験方法および情報処理装置

Also Published As

Publication number Publication date
JP2018116365A (ja) 2018-07-26

Similar Documents

Publication Publication Date Title
Pallister et al. BEEBS: Open benchmarks for energy measurements on embedded platforms
TWI514267B (zh) 用於多股亂序處理器中之指令排程的方法及裝置與系統
JP6141421B2 (ja) シングルデータバッファの並行処理
CN102792265B (zh) 基于机器状态的指令破解
TWI433035B (zh) 按比例調整指令間隔以識別用於代表性指令追蹤的收集點
JP6586435B2 (ja) 過度の近似計算誤差から回復するプロセッサ
JP6848457B2 (ja) 試験装置、試験プログラム生成方法及び試験方法
JPWO2009037731A1 (ja) 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
JP2014010832A (ja) ステージド・ループ命令
GB2500080A (en) Prefetch optimizer tool for controlling hardware and software prefetching
TW201432572A (zh) 在程式碼的發散範圍中同步執行緒的系統與方法
US8000953B2 (en) Augmenting of automated clustering-based trace sampling methods by user-directed phase detection
US20130339689A1 (en) Later stage read port reduction
JP5354017B2 (ja) プログラム作成装置およびプログラム作成方法
Tang et al. Enabling transparent asynchronous I/O using background threads
KR101862981B1 (ko) 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
Luo et al. Benchmarking and dissecting the nvidia hopper gpu architecture
JP4351731B2 (ja) 擬似乱数発生装置、擬似乱数発生プログラム及び擬似乱数発生プログラムを記録した媒体
Groot et al. Modeling I/O interference for data intensive distributed applications
US8095806B2 (en) Method of power simulation and power simulator
US11354126B2 (en) Data processing
Longbottom Raspberry Pi 5 64 Bit Benchmarks and Stress Tests
JP2017107486A (ja) 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法
JP6223637B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
GB2580068A (en) Generating a vector predicate summary

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200924

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20200924

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210215

R150 Certificate of patent or registration of utility model

Ref document number: 6848457

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150