(57)【要約】  本発明を適用した１システムでは、複数の処理装置の動作を確認するための試験を行う場合、複数の処理装置に、試験を並行して実行させる。複数の処理装置のなかで試験を終了した処理装置に、複数の処理装置がそれぞれ実行した試験の結果を出力する第１の処理装置として動作すべきか否かを判定させ、試験を終了した処理装置のなかで第１の処理装置として動作すべきと判定した処理装置に、第１の処理装置として動作させる。
2013105237.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置に、
処理装置の動作を確認するための試験を行う試験機能と、
前記試験機能を起動する制御機能と、を実現させ、
前記制御機能は、前記複数の処理装置のうちの１つである第１の処理装置に、該複数の処理装置に前記試験機能を起動させる起動機能、該複数の処理装置が該試験機能による試験を実行した結果を出力する出力機能、及び該第１の処理装置の識別情報を第１の記憶装置上に格納する格納機能、を実現させ、
前記試験機能は、前記複数の処理装置に、該試験機能が起動された処理装置である自処理装置から前記制御機能の動作に必要なデータを第２の記憶装置上に退避させる退避機能、前記試験が終了した場合に、該第１の処理装置として動作すべきか否か判定する判定機能、及び該第１の処理装置として動作すべきと該判定機能により判定した場合に、前記第１の記憶装置上の識別情報を参照し、該自処理装置に該第１の処理装置のデータを前記第２の記憶装置から取り込む復元機能、を実現させる、
ことを特徴とする試験プログラム。
【請求項２】
請求項１記載の試験プログラムであって、
前記格納機能は、前記識別情報の他に、前記試験の未終了を表す状況情報を前記第１の記憶装置に格納させ、
前記判定機能は、前記第１の記憶装置上の前記状況情報が前記試験の未終了を表している場合に、前記第１の処理装置として動作すべきと判定し、該試験の終了を表す状況情報に該第１の記憶装置上の該状況情報を更新する。
【請求項３】
請求項１、または２記載の試験プログラムであって、
前記復元機能は、前記第１の記憶装置上の識別情報が前記自処理装置を表していない場合に、該自処理装置のデータと前記第１の処理装置のデータとを前記第２の記憶装置上で入れ替え、該第１の処理装置のデータを該自処理装置に取り込む。
【請求項４】
請求項３記載の試験プログラムであって、
前記退避機能は、前記データを、他の処理装置に取り込ませるべきでない専用データと、該他の処理装置に取り込ませても良い汎用データとに分けて退避させ、
前記復元機能は、前記汎用データのみを対象に、前記第２の記憶装置上での入れ替えを行う。
【請求項５】
複数の処理装置の動作を確認するための試験に適用される試験方法であって、
前記複数の処理装置に、前記試験を並行して実行させ、
前記複数の処理装置のなかで前記試験を終了した処理装置に、該複数の処理装置がそれぞれ実行した試験の結果を出力する第１の処理装置として動作すべきか否かを判定させ、
前記試験を終了した処理装置のなかで前記第１の処理装置として動作すべきと判定した処理装置に、該第１の処理装置として動作させる、
ことを特徴とする試験方法。
【請求項６】
接続された記憶装置にアクセス可能な処理装置において、
前記記憶装置にアクセス可能な１つ以上の他の処理装置と共に、動作を確認するための試験を行う試験手段と、
前記試験手段が前記試験を終了した場合に、所定の出力装置に該試験の結果を出力すべきか否かを判定する判定手段と、
前記試験の結果を出力すべきと前記判定手段が判定した場合に、前記試験手段による試験の結果、及び前記他の処理装置が行った試験の結果を前記所定の出力装置に出力する出力手段と、
を具備することを特徴とする処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置を対象に、その動作を確認するための試験を行うための技術に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等のプログラムを実行可能な処理装置では、専用のプログラム（以降「試験プログラム」と呼ぶ）を実行させて、そのマイクロアーキテクチャ、つまり内部構造設計を検証するための試験が行われる。処理装置を複数、備えたシステムでは、試験プログラムとして、その試験を行うためのサブプログラム、及びそのサブプログラムを起動する別のサブプログラムを有する試験プログラムが用いられる。ここでは以降、試験を行うためのサブプログラムを「試験部」、その試験部を起動するサブプログラムを「制御部」とそれぞれ呼ぶことにする。【０００３】
上記試験プログラムは、例えばスタンドアロンで各処理装置のマイクロアーキテクチャの検証を行う。その試験プログラムを実行する複数の処理装置のうちの一つは、制御部の実行により、他の処理装置に試験プログラムを起動させ、その起動によって実行される制御部による試験部の起動を実現させる。複数の処理装置のうちの一つは、その試験部の実行によって他の処理装置で得られる試験結果の出力を行う。それにより、複数の処理装置のうちの一つは、処理装置全体の試験を進行させ、試験結果（例えば発生したエラーに関するエラー情報）を出力する試験管理装置として機能する。以降、試験管理装置として機能する処理装置は便宜的に「管理処理装置」と呼ぶことにする。【０００４】
試験部による試験は、普通、マイクロアーキテクチャの検証のために、処理装置の使用可能な資源を全て対象にして行われる。そのため、各処理装置で実行される制御部は、試験部を起動させ、起動させた試験部に制御を渡した後、スリープ状態となる。試験部に制御を渡す前に制御部によって処理装置上で使用されていた資源のデータは、起動された試験部によって、処理装置が使用可能なメモリ上に退避される。メモリ上に退避されるデータは、例えば各種レジスタに格納されていたデータである。退避されたデータは、試験部から制御部に制御を渡す際に、処理装置に戻されることにより、制御部から試験部に制御を渡す前の状態が復元される。【０００５】
マイクロアーキテクチャに存在する不具合は、試験部をハングアップさせる可能性がある。試験部の実行中にハングアップが発生した処理装置は、再度、制御部を実行することはできない。これは、管理処理装置が試験部の実行中にハングアップを起こした場合、他の処理装置のなかに試験部から制御部に制御を渡した処理装置が存在していても、その処理装置の試験結果は出力できないことを意味する。このため、各処理装置に試験プログラムを最初から実行させなければならない。【０００６】
各処理装置に試験プログラムを最初から実行させることは、それまでに試験者が行った作業が無駄になることを意味する。各処理装置のなかで管理処理装置として機能させる処理装置を変更しても、変更後の処理装置が試験（試験部）の実行中にハングアップを起こす可能性がある。各処理装置のなかで試験の実行中にハングアップしなかった処理装置の存在、及びその処理装置の試験結果は、ハングアップを発生させた原因の解析を行ううえで有用な情報となる可能性がある。これらのことを考慮するならば、処理装置が試験の実行中に発生したハングアップに対応させ、ハングアップしなかった処理装置の試験結果を確実に出力できるようにすることが考えられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１−２２４８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の１側面は、管理処理装置として機能する処理装置が試験の実行中に発生するハングアップに対応し、ハングアップしなかった処理装置の試験結果を出力できるようにするための技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明を適用した１システムでは、複数の処理装置の動作を確認するための試験を行う場合、複数の処理装置に、試験を並行して実行させ、複数の処理装置のなかで試験を終了した処理装置に、該複数の処理装置がそれぞれ実行した試験の結果を出力する第１の処理装置として動作すべきか否かを判定させ、試験を終了した処理装置のなかで第１の処理装置として動作すべきと判定した処理装置に、該第１の処理装置として動作させる。
【発明の効果】
【００１０】
本発明を適用した１システムでは、管理処理装置として機能する処理装置が試験の実行中にハングアップした場合であっても、ハングアップしなかった処理装置の試験結果を出力することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態による試験プログラムを実行可能なプロセッサを複数、備えたマルチプロセッサシステムの構成例を説明する図である。
【図２Ａ】本実施形態による試験プログラムに搭載された制御部の機能構成例を表す図である。
【図２Ｂ】本実施形態による試験プログラムに搭載されたテスト部の機能構成例を表す図である。
【図３】試験プログラムを実行する各プロセッサによってメモリ上に確保される領域例を説明する図である。
【図４】プロセッサの構成例を説明する図である。
【図５】試験プログラムを実行する各プロセッサの動作を説明する図である。
【図６】試験プログラムの制御により各プロセッサが実行する処理を表すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による試験プログラムを実行可能なプロセッサを複数、備えたマルチプロセッサシステムの構成例を説明する図である。図１に表すように、マルチプロセッサシステム１は、計Ｎ＋１個のプロセッサ１１（１１−０〜１１−Ｎ）、メモリ（例えばメモリモジュール）１２、Ｉ／０（Input/Output）装置１３、表示装置１４、入力装置１５、インターフェース（Ｉ／Ｆ）１６及び各部１１〜１４、１６を互いに接続するバス１７を備えている。
【００１３】
Ｉ／Ｏ装置１３は、ハードディスク装置、或いは半導体記憶装置等の記憶装置であり、本実施形態による試験プログラム２０は、このＩ／Ｏ装置１３に格納されている。メモリ１２は、全てのプロセッサ１１がアクセス可能な記憶装置であり、各プロセッサ１１が試験プログラム２０の実行のための領域１２ａが確保される。その領域１２ａは、以降、「データ管理領域」と呼ぶことにする。
【００１４】
試験プログラム２０は、各プロセッサ１１の動作、例えばそのマイクロアーキテクチャ（内部構造設計）を検証するためのプログラムであり、全てのプロセッサ１１にとって実行の対象となる。その試験プログラム２０は、マイクロアーキテクチャを検証する試験を行うためのサブプログラムであるテスト部２２、及びそのテスト部２２を起動する別のサブプログラムである制御部２１を含む。本実施形態による処理装置は、プロセッサ１１が試験プログラム２０を実行することで実現される。
【００１５】
試験プログラム２０の制御部２１は、図１に表す構成のマルチプロセッサシステムでは、Ｎ＋１個のプロセッサ１１のうちの１つに、他のプロセッサ１１の動作を制御し、試験結果を出力する管理機能を実現させる。その管理機能を実現させる制御部２１は、テスト部２２を起動させ、他のプロセッサ１１に試験プログラム２０を起動させる。試験プログラム２０を起動させた他のプロセッサ１１は、制御部２１を実行し、テスト部２２を起動させる。この結果、管理機能を実現させる制御部２１は、各プロセッサ１１に並行に試験を実施させる。以降、管理機能が実現されるプロセッサ１１は便宜的に「管理プロセッサ１１」と表記する。
【００１６】
管理プロセッサ１１となるプロセッサ１１は、例えばバス１７及びインターフェース１６を介した入力装置１５からの試験者の指示に従い、Ｉ／０装置１３に格納された試験プログラム２０をメモリ１２に読み出し、試験プログラム２０を起動する。試験プログラム２０の起動により、制御部２１の実行が開始される結果、プロセッサ１１は管理プロセッサ１１として動作する。
【００１７】
試験プログラム２０を実行するプロセッサ１１が管理プロセッサ１１として動作するか否かは、例えば実行時に試験プログラム２０に取り込ませるデータにより制御することができる。その制御は、制御部２１を起動したプロセッサ１１に、他の制御部２１を起動したプロセッサ１１の有無を確認させることでも実現できる。ここでは便宜的に前者を想定する。
【００１８】
テスト部２２は、マイクロアーキテクチャの検証のために、起動したプロセッサ１１の使用可能な資源を全て対象にした試験を行う。このため、各プロセッサ１１で起動されたテスト部２２は、試験を実施する前に、起動したプロセッサ１１で制御部２１によって使用されていた資源のデータのなかで退避すべきデータをメモリ１２上のデータ管理領域１２ａ内に退避させる。
【００１９】
図４は、プロセッサの構成例を説明する図である。ここで図４を参照し、試験プログラム２０を実行させる対象となるプロセッサ１１の構成例、及びその構成例のプロセッサ１１で退避の対象となるデータについて具体的に説明する。
【００２０】
図４に表すプロセッサ１１は、ＭＴＰ（Multi Threaded Processing）に対応したものであり、１つのＳＸユニット（Secondary Cache and External Access Unit）４１と、４つのプロセッサ・コア４２とを備えている。各プロセッサ・コア４２は、Ｓユニット（Storage Unit）４５、Ｉユニット（Instruction Control Unit）４６、及びＥユニット（Execution Unit）４７を備えている。
【００２１】
ＳＸユニット４１は、レベル２のユニファイドキャッシュ（図４中「Ｕ２  Ｃａｃｈｅ」と表記）４１ｂを備え、このユニファイドキャッシュ４１ｂを用いて、各プロセッサ・コア４２のＳユニット４５との間でデータの入出力を行う。ＳＸユニット４１は、バス１５を介したデータの送受信を行うためにインターフェース・ロジック４１ａを備えている。このインターフェース・ロジック４１ａは、バス１５から受信したデータを格納するムーブイン・バッファ４１ａ１、及びバス１５に送信するデータを格納するムーブアウト・バッファ４１ａ２を備えている。バス１５から受信されるデータは、メモリ１２からのデータであり、バス１４に送信するデータは、メモリ１２に格納されるデータである。
【００２２】
各プロセッサ・コア４２のＳユニット４５は、ロード及びストア命令のために全てのデータの供給、及び受給を扱う。そのために、Ｓユニット４５は、ＳＸユニット４１用のインターフェース（図４中「ＳＸ  Ｉｎｔｅｒｆａｃｅ」と表記）４５ａ、命令用のレベル１キャッシュ（図４中「Ｌ１Ｉ  Ｃａｃｈｅ」と表記）４５ｂ、データ用のレベル１キャッシュ（図４中「Ｌ１Ｄ  Ｃａｃｈｅ」と表記）４５ｃ、命令用のＴＬＢ（Translation Look-aside Buffer。図４中「Ｉ−ＴＬＢ」と表記）４５ｄ、及びデータ用のＴＬＢ（図４中「Ｄ−ＴＬＢ」と表記）４５ｅを備えている。インターフェース４５ａは、ＳＸユニット４１から入力したデータ（命令を含む）の格納に用いられるバッファ（図４中「ＳＸ  Ｏｒｄｅｒ  Ｑｕｅｕｅ」と表記）４５ａ１、及びＥユニット４７からのデータの格納に用いられるバッファ（図４中「Ｓｔｏｒｅ  Ｑｕｅｕｅ」と表記）４５ａ２を備える。
【００２３】
ＳＸユニット４５からの命令及びデータは、インターフェース４５ａのバッファ４５ａに格納され、更にキャッシュ４５ｂ或いは４５ｃに格納される。このとき、キャッシュ４５ｂ或いは４５ｃに格納される命令、或いはデータのアドレスは論理アドレス（仮想アドレス）である。
【００２４】
ＴＬＢ４５ｄは、命令の論理アドレスを対応する物理アドレス（実アドレス）に変換し、その対応関係を格納する。論理アドレスは、タグとして扱われ、命令は、キャッシュ４５ｂのそのタグにより特定されるエントリに格納される。そのためにＴＬＢ４５ｄは、例えばタグ（論理アドレス（例えば仮想ページ番号）、物理アドレス（例えば物理ページ番号）、及び状態フラグを格納可能なエントリが複数、確保されたテーブルを備えている。そのテーブルのエントリのうち、３２のエントリは、エントリ毎に異なる論理アドレスを格納可能なフルアソシアティブ（Full Associative）方式である。２０４８のエントリは、同一の論理アドレスを２つのエントリに格納可能な２ウェイセットアソシアティブ方式である。これは、ＴＬＢ４５ｅも同様である。
【００２５】
命令は、パイプライン処理される。そのパイプライン処理では、命令は投機的に投入される。バッファ４５ａ２は、ストア命令のレイテイシをパイプライン処理から分離するためのものであり、ストア命令がデータを待っている間、パイプライン処理を継続させることを格納にする。
【００２６】
Ｉユニット４６は、命令フェッチパイプライン４６ａ、ブランチヒストリ４６ｂ、命令バッファ４６ｃ、コミットスタックエントリ４６ｄ、リザベーションステーション群４６ｅ、及びレジスタ群４６ｆを備える。ＭＴＰをサポートするために、命令バッファ４６ｃ、コミットスタックエントリ４６ｄ及びレジスタ群４６ｆはそれぞれ二重化されている。
【００２７】
命令フェッチパイプライン４６ａは、フェッチすべき命令のアドレス生成、キャッシュ４５ｂへのアクセス、命令の命令バッファ４６ｃへの書き込み、等を行う。ブランチヒストリ４６ｂは、命令の分岐先と分岐方向を予測するためのテーブルである。命令フェッチパイプライン４６ａは、ブランチヒストリ４６ｂを参照して、命令をフェッチし、命令バッファ４６ｃに書き込む。命令バッファ４６ｃは、そのようにしてフェッチされた命令を保持するためのバッファである。
【００２８】
コミットスタックエントリ４６ｄは、実行中の命令の情報を保持するためのバッファである。リザベーションステーション群４６ｅを構成する各リザベーションステーションは、対応付けられた種類の命令が実行可能になるまで保持するためのバッファである。実行可能になった命令は、対応するリザベーションステーションから読み出され、Ｅユニット４７に出力される。
【００２９】
レジスタ群４６ｆは、命令実行制御のためのプログラム可視の各種レジスタである。図４中に表記のＰＣ、ｎＰＣ、ＣＣＲ、及びＦＳＲは、それぞれ、異なるレジスタの種類を表している。ＰＣは「Program Counter」の略記である。同様に、ｎＰＣは「next Program Counter」、ＣＣＲは「Condition Code Register」、及びＦＳＲは「Floating-Point State Register」の略記である。
【００３０】
ＰＣは、次に投入すべき命令のアドレスを保持する。ｎＰＣは、次にＰＣに格納すべきアドレスを保持する。ＣＣＲは、例えば複数のフラグを有するコンディションコードを保持する。ＦＳＲは、Ｅユニット４７内の浮動小数点データを処理するＡＬＵ（Arithmetic and Logic Unit）の実行モードと状態情報とを保持する。
【００３１】
Ｅユニット４７は、命令を処理するためのＡＬＵ群４７ａを備える。ＡＬＵ群４７ａを構成するＡＬＵとしては、２つの整数実行パイプライン（図４中「ＥＸＡ」、「ＥＸＢ」と表記）、２つの浮動小数点実行パイプライン（図４中「ＦＬＡ」、「ＦＬＢ」と表記）、２つの仮想アドレス加算器（図４中「ＥＡＧＡ」、「ＥＡＧＢ」と表記）がある。Ｉユニット４６が有するレジスタ群４６ｆのＦＳＲに実行モードが格納されるＡＬＵは、浮動小数点実行パイプラインである。
【００３２】
コントロール・ロジック４７ｂは、Ｉユニット４６のリザベーションステーション群４６にアクセスし、実行（投入）可能になった命令を対応するリザベーションステーションから読み出し、ＡＬＵ群４７ａの対応するＡＬＵに供給する。ＡＬＵ群４７ａの命令の実行に必要なデータは、レジスタ群４７ｃを介して、バッファ４５ａ２、キャッシュ４５ｃ、或いはレジスタ群４６ｆから取得される。ＡＬＵ群４７ａの命令の実行によって得られたデータは、レジスタ群４７ｃを介して、バッファ４５ａ２、キャッシュ４５ｃ、或いはレジスタ群４６ｆの何れかのレジスタに格納される。
【００３３】
Ｅユニット４７は、上記構成要素の他に、ＧＵＢ（GPR Update Buffer）４７ｄ、ＣＷＲ（Current Window Register）４７ｅ、ＧＰＲ（General Purpose register）４７ｆ、ＦＵＢ（FPR Update Buffer）４７ｇ及びＦＰＲ（Floating Point Register）４７ｈを備える。これらは、ＭＴＰをサポートするために二重化されている。図４では明確にしていないが、これらＧＵＢ４７ｄ、ＧＰＲ４７ｆ、ＦＵＢ４７ｇ及びＦＰＲ４７ｈは、それぞれ複数、存在する。
【００３４】
上記ＧＰＲ４７ｆは、整数データの保持に用いられる汎用のレジスタである。ＣＷＲ４７ｅは、ＧＰＲ４７ｆのコピーに用いられるレジスタである。ＧＵＢ４７ｄは、ＧＰＲ４７ｆ用のリネーミングレジスタファイルである。ＦＰＲ４７ｈは、浮動小数点データの保持に用いられるレジスタである。ＦＵＢ４７ｇは、ＦＰＲ４７ｈ用のリネーミングレジスタファイルである。
【００３５】
上記のような構成のプロセッサ１１では、Ｉユニット４６が備えたレジスタ群４６ｆの各レジスタにそれぞれ保持されたデータ、及びＥユニット４７のＧＰＲ４７ｆ及びＦＰＲ４７ｈにそれぞれ保持されたデータが退避対象となる。それにより、テスト部２２が起動されたプロセッサ１１は、それらのレジスタに保持されたデータをメモリ１２に退避させる。なお、退避対象となるデータは、プロセッサ１１の構成等に依存することから、特に限定されるものではない。
【００３６】
テスト部２２は、メモリ１２に退避させたデータを、制御部２１に制御を渡す際にプロセッサ１１に戻すことにより、制御部２１からテスト部２２に制御が渡される前の状態を復元する。その状態を復元することにより、プロセッサ１１は制御部２１を実行可能な状態に移行する。
【００３７】
テスト部２２から制御部２１に制御が渡された管理プロセッサ１１は、他のプロセッサ１１による試験の結果を収集して出力する。その出力は、図１に表す構成では表示装置１４を用いて行われる。他のプロセッサ１１の試験結果は、バス１７を介した通信により、或いはメモリ１２を介した試験結果の取得により収集することができる。ここでは、便宜的に、他のプロセッサ１１の試験結果はバス１７を介した通信により収集されると想定する。
【００３８】
制御部２１からテスト部２２に制御が渡される前の状態を復元することにより、プロセッサ１１は制御部２１を実行可能な状態になる。そのため、テスト部２２が何らかの原因によってハングアップしたプロセッサ１１では、制御部２１を再度、実行できなくなる。そのプロセッサ１１が管理プロセッサ１１であった場合、ハングアップが発生していないプロセッサ１１の試験結果も出力できなくなる。このことから、本実施形態では、テスト部２２から制御部２１に制御が渡される場合、複数のプロセッサ１１のなかで管理プロセッサ１１として動作するプロセッサ１１を自律的に決定させるようにしている。そのように管理プロセッサ１１を固定とせず、ハングアップが発生していないプロセッサ１１のなかの１つを管理プロセッサ１１として動作させるため、ハングアップが発生していないプロセッサ１１の試験結果を確実に出力させることができる。
【００３９】
テスト部２２から制御部２１に制御を渡したプロセッサ１１のなかから新たに決定される管理プロセッサ１１は、制御部２１からテスト部２２に制御を渡す前に動作していた管理プロセッサ１１とは一致しない可能性がある。このことから、それら２つの管理プロセッサ１１を区別する必要がある場合、新たに決定される管理プロセッサ１１は「第２の管理プロセッサ１１」と表記する。制御部２１からテスト部２２に制御を渡す前に動作していた管理プロセッサ１１は「第１の管理プロセッサ１１」と表記する。
【００４０】
第１の管理プロセッサ１１と第２の管理プロセッサ１１とが同じであった場合、第２の管理プロセッサ１１は、自身がメモリ１２に退避させたデータを取り込み、制御部２１からテスト部２２に制御を渡す前の状態を復元する。第１の管理プロセッサ１１と第２の管理プロセッサ１１とが同じでない場合、第２の管理プロセッサ１１は、自身がメモリ１２に退避させたデータではなく、別のプロセッサ１１である第１の管理プロセッサ１１がメモリ１２に退避させたデータを取り込み、制御部２１からテスト部２２に制御を渡す前の第１の管理プロセッサ１１の状態を復元する。
【００４１】
図１に表すようなマルチプロセッサシステム１では、各プロセッサ１１には各プロセッサ１１を個別に識別するための識別情報が割り当てられる。図４に表すような構成のプロセッサ１１は、割り当てられた識別情報をレジスタ、例えばＧＰＲ４７ｆの一つに保持する。そのような識別情報は、例えメモリ１２に退避させるデータであっても、他のプロセッサ１１に取り込ませるべきではない。
【００４２】
このようなことから、各プロセッサ１１からメモリ１２に退避させるデータは、他のプロセッサ１１が取り込んでも良いデータ（以降「汎用データ」と呼ぶ）と、他のプロセッサ１１に取り込ませるべきでないデータ（以降「専用データ」と呼ぶ）と、に大別することができる。それにより、本実施形態では、各プロセッサ１１に、退避させるデータを汎用データと専用データとに分けてメモリ１２に退避させるようにしている。このため、第１の管理プロセッサ１１と第２の管理プロセッサ１１とが同じでない場合、第２の管理プロセッサ１１は、自身の専用データと、第１の管理プロセッサ１１の汎用データとをメモリ１２から取り込み、制御部２１を実行可能な状態を復元にする。第１の管理プロセッサ１１を各プロセッサ１１が認識できるように、本実施形態では、メモリ１２上に領域を確保し、第１の管理プロセッサに、自身の識別情報をその領域内に書き込ませるようにしている。その領域内に書き込まれる識別情報は以降「フラグＡ」と表記する。そのフラグＡが書き込まれる領域は以降「フラグ領域」と表記する。
【００４３】
上記のように、第１の管理プロセッサ１以外の各プロセッサ１１は、その第１の管理プロセッサ１１の制御により、試験プログラム２０を起動し、制御部２１によってテスト部２２を起動させる。テスト部２２に制御を渡したプロセッサ１１は、ハングアップが発生しない場合、試験を実行した後、メモリ１２に退避させたデータを取り込む。本実施形態では、各プロセッサ１１が適切なデータを取り込めるように、その取り込みのためにメモリ１２に最初にアクセスしたプロセッサ１１を第２の管理プロセッサ１１とさせている。そのアクセスが最初のものか否かを各プロセッサ１１が判定できるように、第１の管理プロセッサ１１は、フラグＡの書き込みの他に、その判定用のフラグのフラグ領域への書き込みを行うようになっている。そのフラグは、例えば何れかのプロセッサ１１で試験が終了したか否かを表す情報である。第１の管理プロセッサ１１は、そのフラグとして、試験が終了していないことを表す情報を書き込む。そのフラグは以降「試験終了フラグ」或いは「フラグＢ」と表記する。
【００４４】
試験が終了したプロセッサ１１は、メモリ１２にアクセスしてフラグＢを参照し、そのフラグＢが試験の終了を表しているか否かを確認する。それにより、フラグＢが試験の終了を表していないことを確認したプロセッサ１１は、試験の終了を表す情報にフラグＢを更新し、自身の識別情報にフラグＡを更新する。そのプロセッサ１１が、第２の管理プロセッサ１１として動作する。
【００４５】
図３は、試験プログラムを実行する各プロセッサによってメモリ上に確保される領域例を説明する図である。
【００４６】
上記のように、メモリ１２上には、各プロセッサ１１（１１−０〜１１−Ｎ）が試験プログラム２０の実行のためのデータ管理領域１２ａが確保される。そのデータ管理領域１２ａ内には、図３に表すように、サブ領域として、フラグＡ３１１、及びフラグＢ３１２が格納されるフラグ領域３１、及び各プロセッサ１１（１１−０〜１１−Ｎ）がデータの退避に用いる領域であるレジスタ退避領域３２（３２−０〜３２−Ｎ）が確保される。各レジスタ退避領域３２内には、専用データ格納用の専用レジスタ格納領域３２１、及び汎用データ格納用の汎用レジスタ退避領域３２２が確保される。メモリ１２上でデータ管理領域１２ａが確保される場所、各プロセッサ１１が用いるレジスタ退避領域３２の場所は、例えば試験プログラム２０の起動時に取り込ませるデータにより各プロセッサ１１に特定させることができる。
【００４７】
本実施形態では、図３に表すように、各プロセッサ１１と、プロセッサ１１がデータの退避に用いるレジスタ退避領域３２との関係を対応付け、レジスタ退避領域３２内には専用データと汎用データとを分けて格納するようにしている。そのようにして、第１の管理プロセッサ１１とは異なる何れのプロセッサ１１も、第１の管理プロセッサ１１の汎用データを用いて、制御部２１からテスト部２２に制御が渡される前の状態を復元できるようにしている。
【００４８】
試験が終了したプロセッサ１１は、メモリ１２にアクセスしてフラグＢ３１２を参照し、そのフラグＢが試験の終了を表しているか否かを確認する。それにより、フラグＢ３１２が試験の終了を表していないことを確認したプロセッサ１１は、フラグＡ３１１を参照し、更に第１の管理プロセッサ１１が自身であったか否か判定する。その判定により、自身が第１の管理プロセッサ１１でないことを確認したプロセッサ１１は、自身が退避させた汎用データと、第１の管理プロセッサ１１の汎用データとをメモリ１２上で入れ替える。
【００４９】
上記のような入れ替えにより、各プロセッサ１１は、対応するレジスタ退避領域３２上のデータを用いて、制御部２１からテスト部２２に制御が渡される前の状態を復元する。そのため、復元自体は、処理が複雑になるのが回避され、従来と同様に行うことができる。第２の管理プロセッサ１１として機能させるプロセッサ１１に上記のような入れ替えを行わせるのは、このためである。その入れ替えを行わなかったプロセッサ１１は、第１の管理プロセッサ１１として機能したものを含め、第２の管理プロセッサ１１として機能しない。
【００５０】
第１の管理プロセッサ１１と第２の管理プロセッサ１１とを異なるプロセッサ１１に機能させることを可能とするために、本実施形態では、試験プログラム２０は以下のような機能構成となっている。図２Ａ及び図２Ｂを参照して、具体的に説明する。図２Ａは制御部２１の機能構成例を表す図であり、図２Ｂはテスト部２２の機能構成例を表す図である。
【００５１】
図２Ａに表すように、制御部２１は、機能構成（例えばサブプログラム）として、フラグＡ設定部２１１、フラグＢ設定部２１２、テスト部起動部２１３、終了監視部２１４、及び試験結果出力部２１５を含む。図２Ｂに表すように、テスト部２２は、機能構成（例えばサブプログラム）として、レジスタ退避部２２１、試験実行部２２２、フラグＢ判定部２２３、汎用レジスタ入れ替え部２２４、フラグＡ再設定部２２５、及びレジスタ復元部２２６を含む。
【００５２】
フラグＡ設定部２１１は、メモリ１２上にフラグＡ３１１を格納するための機能である。フラグＢ設定部２１２は、メモリ１２上にフラグＢ３１２を格納するための機能である。そのため、フラグＡ設定部２１１及びフラグＢ設定部２１２は共に、第１の管理プロセッサ１１でのみ動作する。
【００５３】
テスト部起動部２１３は、テスト部２２を起動するための機能である。動作内容は、第１の管理プロセッサ１１とそれ以外のプロセッサ１１とで異なる。終了監視部２１４は、他のプロセッサ１１の試験の終了を監視するための機能である。その終了監視部２１４は、テスト部２２から制御部２２に制御が渡されたプロセッサ１１のなかで第２の管理プロセッサ１１として機能するプロセッサ１１でのみ動作する。
【００５４】
試験結果出力部２１５は、テスト部２２による試験の結果を出力するための機能である。試験結果出力部２１５は、第２の管理プロセッサ１１以外のプロセッサ１１では、上記想定から、試験結果を第２の管理プロセッサ１１に出力させる。第２の管理プロセッサ１１では、試験結果出力部２１５は、自身の試験結果と、他のプロセッサ１１から収集した試験結果とを出力させる。
【００５５】
一方、テスト部２２のレジスタ退避部２２１は、退避の対象となるデータを退避するための機能である。レジスタ退避部２２１は、退避の対象となるデータを専用データ、汎用データとに大別し、メモリ１２上の対応するレジスタ退避領域３２に格納させる。試験実行部２２２は、試験を実施するための機能である。フラグＢ判定部２２３は、試験実行部２２２による試験が終了した場合に、メモリ１２上のフラグＢ３１２の内容を判定するための機能である。フラグＢ３１２の内容の判定とは、上記のように、フラグＢ３１２が試験の終了を表しているか否かの判定である。
【００５６】
汎用レジスタ入れ替え部２２４は、試験の終了を表す内容へのフラグＢ３１２の更新、及び必要に応じた汎用データの入れ替えを行うための機能である。汎用レジスタ入れ替え部２２４は、フラグＢ判定部２２３により、フラグＢ３１２が試験の終了を表していないと判定された場合に動作する。汎用データの入れ替えを行う必要性は、フラグＡ３１１を参照して判定される。それにより、汎用データの入れ替えは、フラグＡ３１１の内容（識別情報）が、フラグＢ判定部２２３を実行しているプロセッサ（以降「自プロセッサ」）１１を表していないと判定された場合に行われる。
【００５７】
フラグＡ再設定部２２５は、フラグＡ３１１として、自プロセッサの識別情報をメモリ１２に書き込むための機能である。このフラグＡ再設定部２２５は、上記汎用レジスタ入れ替え部２２４と同様に、フラグＢ判定部２２３により、フラグＢ３１２が試験の終了を表していないと判定された場合に動作する。レジスタ復元部２２６は、対応するレジスタ退避領域３２上のデータを読み出し、制御部２１からテスト部２２に制御を渡す前の状態を自プロセッサ１１上に復元するための機能である。汎用レジスタ入れ替え部２２４が動作する場合、レジスタ復元部２２６は、汎用レジスタ入れ替え部２２４が動作した後に動作する。
【００５８】
本実施形態では、制御部２１に、フラグＡ設定部２１１、及びフラグＢ設定部２１２を追加し、テスト部２２に、フラグＢ判定部２２３、汎用レジスタ入れ替え部２２４、及びフラグＡ再設定部２２５を追加している。それにより、第１の管理プロセッサ１１と異なるプロセッサ１１が第２の管理プロセッサ１１として機能するのを可能にさせている。図２Ａ及び図２Ｂにそれぞれ表す制御部２１及びテスト部２２の機能構成は一例であり、そのような機能構成に限定されるものではない。
【００５９】
図５は、試験プログラムを実行する各プロセッサの動作を説明する図である。次に図５を参照して、試験プログラム２０を実行した場合の各プロセッサ１１の動作について具体的に説明する。
【００６０】
図５では、説明上、便宜的に、プロセッサ１１の数は３つとしている。プロセッサ１１−０が第１の管理プロセッサ１１と想定している。プロセッサの符号としては、特定できないプロセッサ以外、「１１」にハイフンと数字が続くシンボル列（例えば「１１−０」）を用いる。図５中に表記の「１１１」及び「１１２」は、それぞれ、専用データが格納された１つ以上の資源であるレジスタ（以降「専用レジスタ」と呼ぶ）、汎用データが格納された複数のレジスタ群（以降「汎用レジスタ群」と呼ぶ）、を表している。
【００６１】
予め第１の管理プロセッサ１１として設定されたプロセッサ１１−０は、入力装置１５を介した指示により、Ｉ／０装置１３からメモリ１２に試験プログラム２０をロードし、試験プログラム２０を起動する（Ｓ１）。その起動により、プロセッサ１１−０は、制御部２１を実行する。
【００６２】
制御部２１の実行を開始したプロセッサ１１−０は、自身の識別情報（例えばプロセッサＩＤ（identifier））をフラグＡ３１１としてメモリ１２に書き込む（Ｓ２）。次に、プロセッサ１１−０は、試験が終了していないことを表す情報をフラグＢ３１２としてメモリ１２に書き込む（Ｓ３）。その後、プロセッサ１１−０は、プロセッサ１１−１及び１１−２に試験プログラム２０を起動させる（Ｓ４）。その起動により、各プロセッサ１１−１及び１１−２は、制御部２１の実行を開始する。
【００６３】
図５では、フラグＡ３１１及びフラグＢ３１２のそれぞれの内容として「０」を表記している。フラグＡ３１１の内容として表記した「０」は、プロセッサ１１−０に識別情報として割り当てられたプロセッサＩＤの値である。フラグＢ３１２の内容として表記の「０」は、試験の未終了を表している。フラグＢ３１２で試験の終了を表す値は「１」を想定する。
【００６４】
次にプロセッサ１１−０は、テスト部２２を起動する（Ｓ５）。他のプロセッサ１１−１及び１１−２は、試験プログラム２０の起動によって実行が開始される制御部２１によってテスト部２２を自動的に起動する（Ｓ５’）。
【００６５】
テスト部２２を起動させた各プロセッサ１１−０〜１１−２は、それぞれ、専用レジスタ１１１に格納されている専用データを、メモリ１２上の対応するレジスタ退避領域３２−０〜３２−２内の専用レジスタ退避領域３２１に書き込む（Ｓ６）。更に各プロセッサ１１−０〜１１−２は、それぞれ、汎用レジスタ群１１２に格納されている汎用データを、メモリ１２上の対応するレジスタ退避領域３２−０〜３２−２内の汎用レジスタ退避領域３２２に書き込む（Ｓ７）。図５中に表記の「００００１１１１」「００１１００１１」及び「０１０１０１０１」は、それぞれ、各プロセッサ１１−０〜１１−２から退避される専用データの内容を表している。図５中に表記の「１１１１００００」「１１００１１００」及び「１０１０１０１０」は、それぞれ、各プロセッサ１１−０〜１１−２から退避される汎用データの内容を表している。
【００６６】
テスト部２２を実行している各プロセッサ１１−０〜１１−２は、次に試験を行い、その試験の終了後、フラグＢ３１２を参照する。その参照により、フラグＢ３１２の値が０であることを確認したプロセッサ１１は、フラグＢ３１２の値を０から１に更新すると共に、更にフラグＡ３１１を参照し、汎用データを入れ替えるべきプロセッサ１１（ここではプロセッサ１１−０）を特定する（以上Ｓ８）。それにより、フラグＡ３１１の値が自プロセッサ１１を表す値でないことを確認したプロセッサ１１は、特定したプロセッサ１１の汎用データと自プロセッサ１１の汎用データとをメモリ１２上で入れ替える（Ｓ９）。図５は、プロセッサ１１−２が最初に試験を終了したことにより、プロセッサ１１−２が、自身の汎用データとプロセッサ１１−０の汎用データとを入れ替える様子を表している。フラグＡ３１１の値が自プロセッサ１１を表す値であることを確認したプロセッサ１１は、そのような入れ替えは行わない。
【００６７】
フラグＢ３１２の値が０であることを確認したプロセッサ１１は、次に、フラグＡ３１１として、自プロセッサ１１を表す値を書き込む（Ｓ１０）。次に、そのプロセッサ１１は、対応するレジスタ退避領域３２内の専用レジスタ退避領域３２１に退避させた専用データを読み出し、専用レジスタ１１１に格納する（Ｓ１１）。プロセッサ１１は、更に、対応するレジスタ退避領域３２内の汎用レジスタ退避領域３２２に退避させた汎用データを読み出し、汎用レジスタ群１１２に格納する（Ｓ１２）。そのようにして、制御部２１からテスト部２２に制御を渡す前の状態を復元させたプロセッサ１１は、テスト部２２から制御部２１に制御を渡す（Ｓ１３）。
【００６８】
他のプロセッサ１１は、試験の終了後、フラグＢ３１２を参照し、より早く試験を終了したプロセッサ１１の存在を確認する（Ｓ８）。それにより、他のプロセッサ１１は、退避させた専用データ、及び汎用データをそれぞれ専用レジスタ１１１、及び汎用レジスタ群１１２に戻し（Ｓ１１、Ｓ１２）、テスト部２２から制御部２１に制御を渡す（Ｓ１３）。
【００６９】
図５に表すように、プロセッサ１１−２が、自身の汎用データとプロセッサ１１−０の汎用データとを入れ替えた場合、プロセッサ１１−２は、プロセッサ１１−０の汎用データを用いて復元を行う。他方のプロセッサ１１−０は、プロセッサ１１−２の汎用データを用いて復元を行う。その結果、プロセッサ１１−２は、テスト部２２から制御部２１に制御を渡した後、第２の管理プロセッサ１１として機能することとなる。図５には、汎用データの入れ替えにより、プロセッサ１１−０及び１１−２の各汎用データの内容が、退避前と復元後とで変化したことを表している。
【００７０】
図６は、試験プログラムの制御により各プロセッサが実行する処理を表すフローチャートである。図６に表す処理は、各プロセッサ１１のうちの１つが試験プログラム２０を起動することによって実現される。最後に図６を参照して、試験プログラム２０の制御によって各プロセッサ１１が実行する処理について具体的に説明する。各プロセッサ１１が図４に表すような構成であった場合、図６に表す処理は、４つのプロセッサ・コア４２の何れかが、ＳＸユニット４１を介して順次、供給される試験プログラム２０の命令を実行することで実現される。
【００７１】
図６では、プロセッサ１１−０が第１の管理プロセッサ１１、及び第２の管理プロセッサ１１と想定し、フローチャートを表している。Ｓ１００、Ｓ１２０、及びＳ３００は、制御部２１によって実現される処理であり、Ｓ２００はテスト部２２によって実現される処理である。
【００７２】
Ｓ１００、Ｓ１２０、及びＳ３００において、Ｓ１００及びＳ１２０は、テスト部２２に制御を渡す前のプロセッサ１１によって実現される処理である。より具体的には、Ｓ１００は第１の管理プロセッサ１１によって実現される処理であり、Ｓ１２０は他のプロセッサ１１によって実現される処理である。Ｓ３００は、テスト部２２から制御部２１に制御が渡された第２の管理プロセッサ１１によって実現される処理である。テスト部２２から制御部２１に制御が渡された、第２の管理プロセッサ１１以外のプロセッサ１１によって実現される処理は省略している。
【００７３】
プロセッサ１１−０は、インターフェース１６、及びバス１７を介して入力する入力装置１５から試験者の指示に従って、Ｉ／Ｏ装置１３上の試験プログラム２０をメモリ１２上にロードし、試験プログラム２０を起動する。その起動によって、プロセッサ１１−０は、制御部２１によりＳ１００を実行する。そのＳ１００では、以下のような処理が行われる。
【００７４】
先ず、プロセッサ１１−０は、自身が第１の管理プロセッサ１１として動作した履歴として、自身のプロセッサＩＤを設定し、そのプロセッサＩＤをフラグＡ３１１としてメモリ１２上に書き込む（Ｓ１０１）。次にプロセッサ１１−０は、試験の未終了を表すフラグＢ３１２をメモリ１２上に書き込む（図６では「試験終了フラグをリセット」と表記）（Ｓ１０２）。その後、プロセッサ１１−０は、テスト部２２を起動すると共に、他のプロセッサ１１に試験プログラム２０の起動を指示する（Ｓ１０３）。テスト部２２の起動により、制御は制御部２１からテスト部２２に渡ることから、Ｓ１００の一連の処理はここで終了する。
【００７５】
上記Ｓ１０１は、図２Ａに表すフラグＡ設定部２１１によって実現される。Ｓ１０２は、フラグＢ設定部２１２によって実現される。Ｓ１０３は、テスト部起動部２１３によって実現される。
【００７６】
他のプロセッサ１１で実行されるＳ１２０では、以下のような処理が行われる。
他のプロセッサ１１は、プロセッサ１１−０から試験プログラム２０の起動指示を受信するのを待つ待機状態にある（Ｓ１２１）。その起動指示を受信した他のプロセッサ１１は、起動指示を受信すると、テスト部２２を起動する（Ｓ１２２）。そのテスト部２２の起動により、Ｓ１２０の一連の処理はここで終了する。
【００７７】
図６では、他のプロセッサ１１には、試験プログラム２０の起動指示の受信を待つ待機状態が存在することを明確にするために、Ｓ１２１を表している。他のプロセッサ１１では、試験プログラム２０の起動によって、制御部２１→テスト部２２と制御が渡ることから、実際にはＳ１２１は存在しない。しかし、他のプロセッサ１１において、試験プログラム２０の起動によって実行を開始する制御部２１に、プロセッサ１１−０（第１の管理プロセッサ１１）からの起動指示によりテスト部２２を起動させるようにしても良い。このこともあり、図６ではＳ１２１を表している。
【００７８】
テスト部２２に制御が渡った各プロセッサ１１は、Ｓ２００を実行する。そのＳ２００では、以下のような処理が行われる。ここでは、Ｓ２００を実行するプロセッサ１１としてプロセッサ１１−０を想定する。
【００７９】
先ず、プロセッサ１１−０は、専用レジスタ１１１のデータをメモリ１２上の対応するレジスタ退避領域３２内の専用レジスタ退避領域３２１に退避させる（Ｓ２０１）。次にプロセッサ１１−０は、汎用レジスタ群１１２のデータをメモリ１２上の対応するレジスタ退避領域３２内の汎用レジスタ退避領域３２２に退避させる（Ｓ２０２）。そのような退避を行った後、プロセッサ１１−０は、試験を実行する（Ｓ２０３）。Ｓ２０１及びＳ２０２は、図２Ｂに表すレジスタ退避部２２１によって実現される。Ｓ２０３は、試験実行部２２２によって実現される。
【００８０】
試験が終了したプロセッサ１１−０は、メモリ１２上のフラグＢ３１２を参照し、最初に試験を終了したか否か判定する（Ｓ２０４）。フラグＢ３１２が試験の未終了を表していた場合、つまりフラグＢ３１２の値が０であった場合、Ｓ２０４の判定はＹＥＳとなってＳ２０５に移行する。フラグＢが試験の終了を表していた場合、Ｓ２０４の判定はＮＯとなってＳ２０７に移行する。このＳ２０４は、図２ＢのフラグＢ判定部２２３によって実現される。
【００８１】
Ｓ２０５を実行するプロセッサ１１−０は、フラグＢ３１２の値を０から１に更新する。また、プロセッサ１１−０は、フラグＡ３１１を参照して、汎用データの入れ替えを行うべきか否か判定し、その入れ替えを行うべきと判定した場合に、フラグＡ３１１から特定されるプロセッサ１１と自身との間で汎用データの入れ替えをメモリ１２上で行う。このＳ２０５は、図２Ｂの汎用レジスタ入れ替え部２２４によって実現される。
【００８２】
次にプロセッサ１１−０は、自身が第２の管理プロセッサ１１として動作する履歴として、自身のプロセッサＩＤを設定し、そのプロセッサＩＤをフラグＡ３１１としてメモリ１２上に新たに書き込む（Ｓ２０６）。このＳ２０８は、図３ＢのフラグＡ再設定部２２５によって実現される。
【００８３】
Ｓ２０７を実行するプロセッサ１１−０は、自身が退避させた専用データをメモリ１２から読み出し、読み出した専用データを専用レジスタ１１１に格納する。続けてプロセッサ１１−０は、メモリ１２上の対応するレジスタ退避領域３２内の汎用レジスタ退避領域３２２に格納されている汎用データを読み出し、読み出した汎用データを汎用レジスタ群１１２に格納する。そのようにして、制御部２１からテスト部２２に制御を渡す前の状態を復元した後、テスト部２２から制御部２１に制御が渡され、Ｓ２００の一連の処理が終了する。Ｓ２０７及びＳ２０８は、図２Ｂに表すレジスタ復元部２２６によって実現される。
【００８４】
制御部２１に制御が渡った各プロセッサ１１のなかで第２の管理プロセッサ１１として動作するプロセッサ１１は、Ｓ３００を実行する。そのＳ３００では、以下のような処理が行われる。ここでも、Ｓ３００を実行するプロセッサ１１としてプロセッサ１１−０を想定する。
【００８５】
第２の管理プロセッサ１１以外のプロセッサ１１は、第２の管理プロセッサ１１に、例えば試験結果を送信することにより、試験の終了を通知した後、制御部２１の実行を終了する。このことから、先ず、プロセッサ１１−０は、他の全てのプロセッサ１１から試験の終了が通知されるのを待つ（Ｓ３０１）。テスト部２２の実行中にハングアップしたプロセッサ１１が存在する可能性を想定し、試験の終了通知は、予め定められた時間の範囲内で待つ。それにより、他の全てのプロセッサから試験の終了が通知されるか、或いはその時間が経過した場合、Ｓ３０１からＳ３０２に移行する。このＳ３０１は、図２Ａに表す終了監視部２１４によって実現される。
【００８６】
Ｓ３０２を実行するプロセッサ１１−０は、自身の試験結果と、他のプロセッサ１１から収集した試験結果とを、図１に表す表示装置１４上に出力する。その後、例えば入力装置１５を介した試験者の指示により、Ｓ３００の一連の処理を終了する。Ｓ３０２は、図２Ａに表す試験結果出力部２１５によって実現される。
【００８７】
図６では、Ｓ２０４の判定がＮＯとなった場合の移行先を表す矢印を一点鎖線で表している。この一点鎖線の矢印は、第２の管理プロセッサ１１として動作しないケースでの処理の流れ、或いは試験の終了通知が行われるプロセッサ１１を表している。プロセッサ１１−０が第２の管理プロセッサ１１として動作しない場合、プロセッサ１１−０は、制御部２１に制御が渡った後、他の何れかのプロセッサ１１に試験の終了を通知する。その試験の終了の通知を含む試験結果の送信は、図２Ａに表す試験結果出力部２１５によって実現される。
【００８８】
なお、本実施形態では、試験結果は表示装置１４上に出力するようになっているが、出力結果は記憶装置、或いは通信ネットワークを介して接続可能な外部装置であっても良い。フラグ領域３１は、各レジスタ退避領域３２と同じメモリ１２上に確保するようにしているが、複数のメモリを使用可能な環境では、フラグ領域３１、及び各レジスタ退避領域３２は任意のメモリに分けて確保するようにしても良い。
【００８９】
また、試験プログラム２０は、１種類の試験のみを実施するようになっているが、試験プログラム２０は、複種類の試験を任意の組み合わせ、順序で実施できる多機能のもの（例えば異なるテスト部２２を複数、搭載したもの）であっても良い。そのような多機能の試験プログラム２０では、１つの試験毎に、或いは順序と組み合わせが決定された複数の試験毎に、管理プロセッサ１１を自律的に決定させれば良いことから、適用は容易である。このこともあり、試験の種類、その数等は特に限定されるものではない。
【図１】
2013105237.tif 000003
【図２Ａ】
2013105237.tif 000004
【図２Ｂ】
2013105237.tif 000005
【図３】
2013105237.tif 000006
【図４】
2013105237.tif 000007
【図５】
2013105237.tif 000008
【図６】
2013105237.tif 000009
【国際調査報告】
2013105237.tif 000010
2013105237.tif 000011
2013105237.tif 000012
2013105237.tif 000013