(57)【要約】【課題】ＣＰＵの試験を効率的に行う。【解決手段】キャッシュメモリ、第１と第２のメモリを有する情報処理装置のプロセッサの試験方法である。第１のメモリ中の命令列と命令列の処理に使用されるデータのうち、改変されると第１のメモリ中の命令列で修復できない命令列とデータを、キャッシュメモリによりアクセスされない第２のメモリにバックアップする。第１のメモリ中の命令列をプロセッサに実行させるときに、所定のタイミングで、キャッシュメモリにフェッチさせる命令列とデータを改変する。プロセッサが第１のメモリ中の命令列を実行している間に、第１のメモリ中の命令列を用いて修復できない命令列の改変によってエラーが発生すると、第２のメモリにバックアップした命令列を、第１のメモリに書き込む。第１のメモリ中の命令列及びデータを用いて修復できる命令列やデータの改変によってエラーが発生すると、第１のメモリ中の命令列及びデータを用いてエラーの原因である命令列やデータを修復する。【選択図】図１
2015108986.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと、第１のメモリと、第２のメモリを有する情報処理装置が実装するプロセッサの試験方法であって、
前記第１のメモリが保持している命令列及び前記命令列の処理に使用されるデータのうち、改変されると前記第１のメモリ中の命令列を用いて修復できない命令列及びデータを、前記キャッシュメモリによりアクセスされない前記第２のメモリにバックアップし、
前記第１のメモリ中の命令列を、前記プロセッサに実行させるときに、所定のタイミングで、前記キャッシュメモリにフェッチされる前記第１のメモリ中の命令列及びデータを改変し、
前記プロセッサが前記第１のメモリ中の命令列を実行している間に、前記第１のメモリ中の命令列を用いて修復できない命令列の改変によってエラーが発生すると、前記第２のメモリにバックアップした命令列を、前記第１のメモリに書き込み、
前記第１のメモリ中の命令列及びデータを用いて修復できる命令列やデータの改変によってエラーが発生すると、前記第１のメモリ中の命令列及びデータを用いてエラーの原因である命令列又はデータを修復する
ことを特徴とする情報処理装置の試験方法。
【請求項２】
前記エラーは、改変された命令列及びデータを前記プロセッサが処理することにより発生するか、又は、前記改変された命令列及びデータが前記第１のメモリに書き込まれる際に、前記第１のメモリ中の改変される前の命令列及びデータと整合しないことで発生する
ことを特徴とする請求項１に記載の情報処理装置の試験方法。
【請求項３】
キャッシュメモリと、
プロセッサと、
前記キャッシュメモリにフェッチされる命令列及び前記命令列の処理で使用されるデータを保持している第１のメモリと、
前記キャッシュメモリによりアクセスされない第２のメモリと、
前記第１のメモリ中の命令列及び前記命令列の処理に使用されるデータのうち、改変されると前記第１のメモリ中の命令列を用いて修復できない命令列及びデータを、前記第２のメモリにバックアップした後で、前記第１のメモリ中の命令列を前記プロセッサに実行させる制御部と、
所定のタイミングで、前記キャッシュメモリにフェッチされる前記第１のメモリ中の命令列及びデータを改変する注入部と、を備え、
前記制御部は、
前記プロセッサが前記第１のメモリ中の命令列を実行している間に、前記第１のメモリ中の命令列を用いて修復できない命令列の改変によってエラーが発生すると、前記第２のメモリにバックアップした命令列を、前記第１のメモリに書き込み、
前記第１のメモリ中の命令列及びデータを用いて修復できる命令列やデータの改変によってエラーが発生すると、前記第１のメモリ中の命令列及びデータを用いてエラーの原因である命令列又はデータを修復する
ことを特徴とする情報処理装置。
【請求項４】
前記エラーは、改変された命令列及びデータを前記プロセッサが処理することにより発生するか、又は、前記改変された命令列及びデータが前記第１のメモリに書き込まれる際に、前記第１のメモリ中の改変される前の命令列及びデータと整合しないことで発生する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
キャッシュメモリと、第１のメモリと、第２のメモリを有する情報処理装置が実装するプロセッサに実行させる試験プログラムであって、
前記第１のメモリが保持している命令列及び前記命令列の処理に使用されるデータのうち、改変されると前記第１のメモリ中の命令列を用いて修復できない命令列及びデータを、前記キャッシュメモリによりアクセスされない前記第２のメモリにバックアップし、
前記第１のメモリ中の命令列を、前記プロセッサに実行させるときに、所定のタイミングで、前記キャッシュメモリにフェッチされる前記第１のメモリ中の命令列及びデータを改変し、
前記プロセッサが前記第１のメモリ中の命令列を実行している間に、前記第１のメモリ中の命令列を用いて修復できない命令列の改変によってエラーが発生すると、前記第２のメモリにバックアップした命令列を、前記第１のメモリに書き込み、
前記第１のメモリ中の命令列及びデータを用いて修復できる命令列やデータの改変によってエラーが発生すると、前記第１のメモリ中の命令列及びデータを用いてエラーの原因である命令列又はデータを修復する
処理を情報処理装置に行わせることを特徴とする試験プログラム。
【請求項６】
前記プロセッサは、改変された命令列及びデータを処理した場合、又は、前記改変された命令列及びデータを前記第１のメモリに書き込む際に、書き込みの対象の命令列またはデータが前記第１のメモリ中の改変される前の命令列又はデータと整合しない場合に、前記エラーが発生したとする
ことを特徴とする請求項５に記載の試験プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の試験に関する。
【背景技術】
【０００２】
サーバ装置などで使用されるチップには、複数のＣＰＵと１次キャッシュや２次キャッシュなどの複数のキャッシュメモリが含まれることがある。複数のＣＰＵ及び複数のキャッシュメモリは、連携して処理を行う。ＣＰＵの処理でエラーが発生した場合、ＣＰＵは、発生箇所、発生状況により多様な処理が要求される。
【０００３】
ＣＰＵの処理は、検証対象の現象にあわせたエラーを故意に発生させることで、検証することができる。ＣＰＵの処理を検証する試験を、ＣＰＵのトランザクション試験と呼ぶ。ＣＰＵのトランザクション試験において、メモリが保持する試験命令列は、キャッシュに保持され実行される。試験命令列は、ＣＰＵで処理が実行されると、計算結果の書き込みなどにより更新される。その後、更新後の試験命令列は、メモリに書き込まれる。そのため、トランザクション試験は、試験命令列がキャッシュに出入りすることを予め考慮して試験を行わなければならず、効率的な試験が難しい。
【０００４】
キャッシュの試験に関する技術として、試験プロシージャをキャッシュ対象外領域に退避させることで、試験命令列を更新させない技術が知られている（例えば、特許文献１参照）。
【０００５】
キャッシュの試験に関する技術として、テストデータをキャッシュメモリに配置し、テストコードを拡張メモリ領域に配置し、試験をする技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０５−３４２０３９号公報
【特許文献２】特開平０６−０４４１４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＣＰＵの処理を検証するために、ＣＰＵでエラーが発生するような命令列をＣＰＵに読込ませることで、エラーの原因となった命令列が、キャッシュに書き込まれることがある。すると、エラーの原因となった命令列が、メモリに書き込まれる恐れがある。エラーの原因となった命令列がメモリに書き込まれると、試験の継続ができなくなる問題がある。
【０００８】
検証対象の現象にあわせたエラーを故意に発生させた場合、エラーの原因となるのは、命令列や命令列の処理に使用されるデータである。特許文献１や特許文献２に係る技術では、ＣＰＵでエラーが発生するようなデータがメモリに書き込まれると、試験の継続ができなくなる問題がある。
【０００９】
１つの側面において、本発明の目的は、ＣＰＵの試験を効率的に行うことである。
【課題を解決するための手段】
【００１０】
キャッシュメモリ、第１のメモリ、第２のメモリを有する情報処理装置が実装するプロセッサの試験方法である。第１のメモリが保持している命令列及び命令列の処理に使用されるデータのうち、改変されると第１のメモリ中の命令列を用いて修復できない命令列及びデータを、キャッシュメモリによりアクセスされない第２のメモリにバックアップする。第１のメモリ中の命令列を、プロセッサに実行させるときに、所定のタイミングで、キャッシュメモリにフェッチされる第１のメモリ中の命令列及びデータを改変する。
プロセッサが第１のメモリ中の命令列を実行している間に、第１のメモリ中の命令列を用いて修復できない命令列の改変によってエラーが発生すると、第２のメモリにバックアップした命令列を、第１のメモリに書き込む。第１のメモリ中の命令列及びデータを用いて修復できる命令列やデータの改変によってエラーが発生すると、第１のメモリ中の命令列及びデータを用いてエラーの原因である命令列又はデータを修復する。
【発明の効果】
【００１１】
ＣＰＵの試験を効率的に行うことができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係るＣＰＵのトランザクション試験の例を説明する図である。
【図２】サーバ装置のハードウェア構成の例を示す。
【図３】トランザクション試験で検出されるエラーケースの例を説明する図である。
【図４】実施形態に係る管理情報の例を説明する図である。
【図５】実施形態に係るＣＰＵのトランザクション試験の例（その１）を説明するフローチャートである。
【図６】実施形態に係るＣＰＵのトランザクション試験の例（その２）を説明するフローチャートである。
【図７】実施形態に係るＣＰＵのトランザクション試験の例（その３）を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施形態について、図面を参照しながら詳細に説明する。
図１は、実施形態に係るＣＰＵのトランザクション試験の例を説明する図である。サーバ装置１００は、キャッシュメモリ１１０、メインメモリ１２０、サブメモリ１３０、制御部１５０、判定部１６０、検出部１７０を有する。キャッシュメモリ１１０は、１次キャッシュや２次キャッシュなどのキャッシュメモリである。メインメモリ１２０は、データをキャッシュメモリ１１０にキャッシュ可能なメモリ装置である。メインメモリ１２０は、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４を有する。試験プログラム域１２２は、トランザクション試験の試験内容をプログラムされた命令列である試験命令列を格納する。試験ハンドラ域１２１は、エラーが検出された場合に実行されるハンドラ命令列を格納する。ダミー命令列域１２３は、試験命令列の処理に使用されるダミー命令列を格納する。ダミー命令列域１２３に格納されるダミー命令列は、全て同じものでもよい。ダミーデータ域１２４は、試験命令列の処理に使用されるダミーデータを格納する。ダミーデータ域１２４に格納されるダミーデータは、全て同じものでもよい。
【００１４】
制御部１５０は、試験命令列、ハンドラ命令列、ダミー命令列、ダミーデータを使用する試験全体を制御する。検出部１７０は、ＣＰＵの処理でエラーが発生したことを検出する。判定部１６０は、検出部１７０が検出したエラーが試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４のいずれのものであるかを判定する。
【００１５】
サブメモリ１３０は、キャッシュメモリ１１０にアクセスしないメモリ装置である。サブメモリ１３０は、メインメモリ１２０中に格納された命令列やデータのうち、改変されると制御部１５０が修復できない命令列やデータのバックアップを保持する。なお、実装に応じて、改変されても制御部１５０が初期の設定に修復可能な命令列やデータなどについてもサブメモリ１３０に格納されるようにしてもよい。サブメモリ１３０の命令列及びデータは、キャッシュメモリ１１０中のデータなどの変更に応じた改変がなされない。
【００１６】
以下に、実施形態に係るＣＰＵのトランザクション試験の処理の順番を説明する。
（１）制御部１５０は、試験ハンドラ域１２１と試験プログラム域１２２中の命令列のバックアップである試験ハンドラ域１３２と試験プログラム域１３３を、サブメモリ１３０に生成する。
【００１７】
（２）制御部１５０は、サブメモリ１３０に管理情報１３１を生成する。管理情報１３１は、試験ハンドラ域１２１と試験プログラム域１２２、ダミー命令列域１２３に格納されている命令列のサイズを保持している。管理情報１３１は、更に、試験ハンドラ域１２１と試験プログラム域１２２に格納されている命令列毎に、命令列のメインメモリ１２０のアドレス情報とバックアップ先であるサブメモリ１３０のアドレス情報とを対応づけて保持している。管理情報１３１は、ダミー命令列域１２３内の各命令列のメインメモリ１２０のアドレス情報を保持している。
【００１８】
（３）制御部１５０は、トランザクション試験を開始する。制御部１５０は、試験プログラム域１２２の試験命令列を実行し、ダミー命令列域１２３のダミー命令列とダミーデータ域１２４のダミーデータに対して適宜アクセスする。更に、制御部１５０は、試験命令列、ダミー命令列、ダミーデータをキャッシュメモリ１１０へフェッチする。
【００１９】
（４）注入部１４０は、ＣＰＵの処理でエラーを発生させるコードを注入する。注入部１４０は、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４のいずれかの領域から命令列及びデータがキャッシュメモリ１１０にフェッチされる際に、所定のコードをフェッチされる命令列やデータに注入する。コードを注入されることで、命令列やデータは、破壊される。注入部１４０は、例えば、２０回のフェッチにつき１回の頻度でコードを注入する。
【００２０】
（５）検出部１７０は、ＣＰＵの処理で発生したエラーを検出する。ＣＰＵは、処理の計算結果を、例えば、ログに書き込む。検出部１７０は、ログの情報を元にエラーを検出する。
【００２１】
（６）判定部１６０は、検出部１７０が検出したエラーを解析する。判定部１６０は、検出したエラーの原因が、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４のいずれの命令列又はデータかを判定する。
【００２２】
（７）試験ハンドラ域１２１の命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、試験ハンドラ域１２１の命令列が、試験ハンドラ域１３２にバックアップされていることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスの命令列に対応する試験ハンドラ域１３２に保持されている命令列を、試験ハンドラ域１２１にコピーする。
【００２３】
（８）試験プログラム域１２２の命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、試験プログラム域１２２の命令列が、試験プログラム域１３３にバックアップされていることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスの命令列に対応する試験プログラム域１３３に保持されている命令列を、試験プログラム域１２２にコピーする。
【００２４】
（９）ダミー命令列域１２３のダミー命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、ダミー命令列域１２３のダミー命令列が、自己修復が可能であることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスのダミー命令列に対してダミー命令列域１２３内の他のアドレスのダミー命令列をコピーする。
【００２５】
（１０）ダミーデータ域１２４のダミーデータが原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、ダミーデータ域１２４のダミー命令列が、自己修復が可能であることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスのダミーデータに対してダミーデータ域１２４内の他のアドレスのダミーデータをコピーする。
【００２６】
（３）におけるＣＰＵのトランザクション試験は、試験命令列域１２２の試験命令列を繰り返して複数回実行してもよい。（７）〜（１０）の何れかの処理が実行されると、制御部１５０は、処理を（３）に戻す。このため、メインメモリ１２０中のデータが初期状態に修復された後に、トランザクション試験が再開される。（５）の処理では、エラーの検出にログを用いているものの、エラーの検出方法を限定するものではない。なお、注入部１４０は、コードを注入せずに、命令列及びデータを改変する処理をしてもよい。
【００２７】
（１）〜（１０）のような処理を行うことで、キャッシュメモリにキャッシュ可能なメモリ上の試験命令列や試験に用いる命令列やデータが破壊された場合でも、試験を継続することができる。
【００２８】
図２は、サーバ装置のハードウェア構成の例を示す。サーバ装置１００は、プロセッサ１１、メモリ１２、バス１５、外部記憶装置１６、ネットワーク接続装置１９を備える。さらにオプションとして、サーバ装置１００は、入力装置１３、出力装置１４、媒体駆動装置１７を備えても良い。サーバ装置１００は、例えば、コンピュータなどで実現されることがある。
【００２９】
プロセッサ１１は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。プロセッサ１１は、注入部１４０、制御部１５０、判定部１６０、検出部１７０として動作することができる。なお、プロセッサ１１は、例えば、外部記憶装置１６に記憶されたプログラムを実行することができる。メモリ１２は、メインメモリ１２０及びサブメモリ１３０として動作する。なお、外部記憶装置１６がサブメモリ１３０でもよい。さらに、メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１９は、他の装置との通信に使用される。
【００３０】
入力装置１３は、例えば、ボタン、キーボード、マウス等として実現され、出力装置１４は、ディスプレイなどとして実現される。バス１５は、プロセッサ１１、メモリ１２、入力装置１３、出力装置１４、外部記憶装置１６、媒体駆動装置１７、ネットワーク接続装置１９の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置１６は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１１などに提供する。媒体駆動装置１７は、メモリ１２や外部記憶装置１６のデータを可搬記憶媒体１８に出力することができ、また、可搬記憶媒体１８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１８は、フロッピーディスク、Ｍａｇｎｅｔ−Ｏｐｔｉｃａｌ（ＭＯ）ディスク、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００３１】
図３は、トランザクション試験で検出されるエラーケースの例を説明する図である。図３は、図１と同じものは、同一の番号を付している。図３のサーバ装置１００は、メモリ１２０、注入部１４０、チップ２１０（２１０ａ、２１０ｂ）を有する。チップ２１０は、ＣＰＵ２１１、１次キャッシュ２１５、２次キャッシュ２１６を有する。チップ２１０内において、１個のＣＰＵ２１１につき１個の１次キャッシュ２１５が配置されている。２次キャッシュ２１６は、複数の１次キャッシュ２１５に対して１個設置されている。なお、図３のサーバ装置１００はチップ、ＣＰＵ、１次キャッシュ、２次キャッシュの個数を限定するものではない。
【００３２】
以下に、トランザクション試験で検出されるエラーケースの例を説明する。
１次キャッシュ２１５に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、ＣＰＵ２１１からロードされた場合
１次キャッシュ２１５に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、１次キャッシュ２１５から追い出された場合
２次キャッシュ２１６に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、ＣＰＵ２１１からロードされた場合
２次キャッシュ２１６に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、２次キャッシュ２１６から追い出された場合
チップ２１０ａの２次キャッシュ２１６に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、チップ２１０ｂからロードされた場合
チップ２１０ａの２次キャッシュ２１６に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、チップ２１０ｂのＣＰＵ２１１からロードされた場合
１次キャッシュ２１５に保持されているデータに、注入部１４０がコードを注入し、コードが注入されたデータが、１次キャッシュ２１５に対応して設置されているＣＰＵ２１１以外のＣＰＵからロードされた場合
【００３３】
例えば、ＣＰＵの処理でエラーが発生するようなコードが注入されたデータが、ＣＰＵ２１１で処理された場合、ＣＰＵ２１１はエラーとなる計算結果をログに書き込む。検出部１７０は、ログの情報を元にエラーを検出する。また、データの追い出しとは、キャッシュメモリが一杯になると、使用しない又は使用頻度の低いデータなどをクリアし、新しいデータを書き込めるようにすることである。1次キャッシュ２１５や2次キャッシュ２１６からのデータの追い出しでは、追い出されたデータは、メインメモリ１２０に書き込まれる。このような、追い出されたデータがメインメモリ１２０に書き込まれるライトバック処理は、ＣＰＵ２１１によって行われる。ＣＰＵ２１１は、1次キャッシュ２１５や2次キャッシュ２１６から追い出したデータと、メインメモリ１２０に保持されていたデータとの整合がとれない場合、エラーとしてログに書き込む。
【００３４】
トランザクション試験においてキャッシュメモリで検出されるエラーケースは、上記のものに限定されない。ＣＰＵのトランザクション試験では、図１の試験プログラム域１２２に保持されている試験命令列を、検証対象となるエラーケース毎に予め作成しておく。１次キャッシュ２１５や２次キャッシュ２１６からの追い出しは、ダミー命令列やダミーデータの数を増やすことで発生させることができる。
【００３５】
図４は、実施形態に係る管理情報の例を説明する図である。管理情報１３１は、試験ハンドラ域１２１と試験プログラム域１２２に格納されている命令列毎に、命令列のメインメモリ１２０のアドレス情報とバックアップ先であるサブメモリ１３０のアドレス情報とを対応づけて保持している。図４の管理情報１３１は、例えば、試験プログラム域１２２の保持する試験命令列が格納されているメインメモリ１２０のアドレス情報としてａｄｄｒ−Ａ１〜ａｄｄｒ−ＡＡを保持している。管理情報１３１は、試験命令列のバックアップ先であるサブメモリ１３０のアドレス情報として、ｅＡｄｄｒ−Ａ１〜ｅＡｄｄｒ−ＡＡを保持している。また、管理情報１３１は、試験ハンドラ域１２１の保持するハンドラ命令列が格納されているメインメモリ１２０のアドレス情報としてａｄｄｒ−Ｂ１〜ａｄｄｒ−ＢＢを保持している。管理情報１３１は、ハンドラ命令列のバックアップ先であるサブメモリ１３０のアドレス情報として、ｅＡｄｄｒ−Ｂ１〜ｅＡｄｄｒ−ＢＢを保持している。更に、管理情報１３１は、試験ハンドラ域１２１と試験プログラム域１２２に格納されている命令列のサイズの情報を保持している。
【００３６】
管理情報１３１は、検出部１７０でログからエラーが検出された後に、制御部１５０及び判定部１６０により用いられる。検出部１７０がエラーを検出すると、判定部１６０がエラーを解析する。ログには、エラー発生の原因となった命令列やデータについての、メインメモリ１２０中のアドレス情報が含まれる。そこで、判定部１６０は、ログの情報を元にエラーを検出したアドレス情報を取得し、検出したエラーの原因が、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４のいずれの命令列又はデータかを判定する。判定部１６０は、エラーの原因の領域を判定するために、ログからエラーを検出したアドレス情報と、管理情報１３１とを比較する。
【００３７】
検出したエラーの原因が、試験ハンドラ域１２１又は試験プログラム域１２２の命令列の場合、制御部１５０は、試験ハンドラ域１２１又は試験プログラム域１２２に対応した所定のハンドラ命令列を実行する。ここで実行される所定のハンドラ命令列は、試験ハンドラ域１２１又は試験プログラム域１２２の命令列が、サブメモリ１３０にバックアップされていることを示す情報を有する。制御部１５０は、管理情報１３１に基づいて、バックアップされている命令列を、メインメモリ１２０にコピーする。
【００３８】
管理情報１３１は、ダミー命令列域１２３の命令列毎に、命令列のサイズ及びメインメモリ１２０のアドレス情報を保持している。図４の管理情報１３１は、例えば、ダミー命令列域１２３の命令列が格納されているメインメモリ１２０のアドレス情報として、ａｄｄｒ−Ｃ０〜ａｄｄｒ−Ｃｎを保持している。
【００３９】
検出したエラーの原因が、ダミー命令列域１２３の命令列の場合、制御部１５０は、ダミー命令列域１２３に対応した所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、ダミー命令列域１２３のダミー命令列が、自己修復が可能であることを示す情報を有する。制御部１５０は、エラーの原因であるアドレスを含む命令列以外の命令列を選択し、エラーの原因であるアドレスを含む命令列にコピーする。自己修復の方法は、エラーの原因であるアドレスを含む命令列以外の命令列を選択し、エラーの原因であるアドレスを含む命令列にコピーすることに限定されない。自己修復の方法は、メインメモリ１２０内の命令列又はデータを使用して修復できるものであればよい。
【００４０】
実施形態では、管理情報１３１は、試験プログラム域、試験ハンドラ域、ダミー命令列域に含まれる命令列毎に、命令列が格納されているメモリの先頭アドレスを保持している。
【００４１】
図５は、実施形態に係るＣＰＵのトランザクション試験の例（その１）を説明するフローチャートである。予め、メインメモリ１２０には、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３、ダミーデータ域１２４が設置されている。
【００４２】
制御部１５０は、サブメモリ１３０に試験ハンドラ域１２１と試験プログラム域１２２のバックアップである試験ハンドラ域１３２、試験プログラム域１３３を生成する（ステップＳ１０１）。制御部１５０は、エラーが発生すると予期される領域毎に、制御部１５０が実行するハンドラ命令列の設定情報を取得する（ステップＳ１０２）。制御部１５０は、サブメモリ１３０に管理情報１３１を生成する（ステップＳ１０３）。制御部１５０は、注入部１４０に設定するコード注入の頻度に関する情報を取得する（ステップＳ１０４）。制御部１５０は、ＣＰＵのトランザクション試験を開始する（ステップＳ１０５）。検出部１７０は、ＣＰＵの処理により生成されるログを確認し、エラーが発生しているかを判定する（ステップＳ１０６）。判定部１６０は、エラーの原因が命令列かデータかを判定する（ステップＳ１０７、ステップＳ１０６でＹＥＳ）。エラーの原因が命令列の場合、処理は、処理Ａ（図６）のフローチャートに移る。エラーの原因がデータの場合、処理は、処理Ｂ（図７）のフローチャートに移る。制御部１５０は、ダミー命令列域１２３及びダミーデータ域１２４の全ての命令列及びデータを使用したかを判定する（ステップＳ１０８、ステップＳ１０６でＮＯ）。制御部１５０は、全ての試験プログラム域１２２の試験命令列が実行されたかを判定する（ステップＳ１０９、ステップＳ１０８でＹＥＳ）。ステップＳ１０８及びステップＳ１０９でＮＯの場合、処理は、Ｓ１０６から繰り返す。ステップＳ１０９でＹＥＳの場合、制御部１５０は、トランザクション試験を終了する。
【００４３】
図６は、実施形態に係るＣＰＵのトランザクション試験の例（その２）を説明するフローチャートである。図６は、図５のＳ１０７で、エラーの原因が命令列であると判定された場合の処理Ａの例を説明するフローチャートである。判定部１６０は、ログからエラー情報を取得する（ステップＳ２０１）。判定部１６０は、管理情報１３１を参照し、エラー情報に含まれるアドレス情報が、試験ハンドラ域１２１、試験プログラム域１２２、ダミー命令列域１２３のいずれの領域に含まれる命令列かを判定する（ステップＳ２０２）。試験ハンドラ域１２１の命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、試験ハンドラ域１２１の命令列が、試験ハンドラ域１３２にバックアップされていることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスの命令列に対応する試験ハンドラ域１３２に保持されている命令列をロードする（ステップＳ２０３）。制御部１５０は、試験ハンドラ域１３２からロードした命令列を、エラーが検出されたアドレスに書き込む（ステップＳ２０４）。Ｓ２０４の処理が終了すると、制御部１５０は、処理を図５のＳ１０６に戻す。
【００４４】
試験プログラム域１２２の命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、試験プログラム域１２２の命令列が、試験プログラム域１３３にバックアップされていることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスの命令列に対応する試験プログラム域１３３に保持されている命令列をロードする（ステップＳ２０５）。制御部１５０は、試験プログラム域１３３からロードした命令列を、エラーが検出されたアドレスに書き込む（ステップＳ２０６）。Ｓ２０６の処理が終了すると、制御部１５０は、処理を図５のＳ１０６に戻す。
【００４５】
ダミー命令列域１２３のダミー命令列が原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、ダミー命令列域１２３のダミー命令列が、自己修復が可能であることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスのダミー命令列に対してダミー命令列域１２３内の他のアドレスのダミー命令列をコピーする（ステップＳ２０７）。Ｓ２０７の処理が終了すると、制御部１５０は、処理を図５のＳ１０６に戻す。
【００４６】
図７は、実施形態に係るＣＰＵのトランザクション試験の例（その３）を説明するフローチャートである。図７は、図５のＳ１０７で、エラーの原因がデータであると判定された場合の処理Ｂの例を説明するフローチャートである。
【００４７】
ダミーデータ域１２４のダミーデータが原因でエラーが発生している場合、制御部１５０は、所定のハンドラ命令列を実行する。ここで実行されるハンドラ命令列は、ダミーデータ域１２４のダミー命令列が、自己修復が可能であることを示す情報を有する。制御部１５０は、エラーが検出されたアドレスのダミーデータに対してダミーデータ域１２４内の他のアドレスのダミーデータをコピーする。（ステップＳ３０１）。Ｓ３０１の処理が終了すると、制御部１５０は、処理を図５のＳ１０６に戻す。
【００４８】
以上、説明したように、実施形態にかかる方法では、キャッシュメモリにキャッシュ可能なメモリ上の試験命令列や試験に用いる命令列やデータが破壊された場合でも、キャッシュにアクセスしない他のメモリ装置にバックアップを保持させる。バックアップから破壊されたデータをリストアすることで、試験を中断することなく継続することができる。
【符号の説明】
【００４９】
１００  サーバ装置
１１０  キャッシュメモリ
１２０  メインメモリ
１２１  試験ハンドラ域
１２２  試験プログラム域
１２３  ダミー命令列域
１２４  ダミーデータ域
１３０  サブメモリ
１３１  管理情報
１３２  試験ハンドラ域
１３３  試験プログラム域
１４０  注入部
１５０  制御部
１６０  判定部
１７０  検出部
２１０  チップ
２１１  ＣＰＵ
２１５  1次キャッシュ
２１６  2次キャッシュ
【図１】
2015108986.tif 000003
【図２】
2015108986.tif 000004
【図３】
2015108986.tif 000005
【図４】
2015108986.tif 000006
【図５】
2015108986.tif 000007
【図６】
2015108986.tif 000008
【図７】
2015108986.tif 000009