(57)【特許請求の範囲】
【請求項１】
エラー訂正に対応したメモリと、エラー訂正回路を有するメモリコントローラと、前記メモリと前記メモリコントローラの間に疑似故障ツールを有するコンピュータのエラー訂正試験方法において、
前記コンピュータが、特定のビットに第１の値が設定された第１のデータを前記メモリの第１のアドレスに書き込み、かつ、前記特定のビットに前記第１の値とは異なる第２の値が設定された第２のデータを前記メモリの第２のアドレスであって前記第１のアドレスと連続しているアドレスに書き込み、
前記疑似故障ツールが、前記特定のビットに対応する前記メモリの電極を前記第２の値を示すようにクランプし、
前記コンピュータが、前記メモリから、前記第１のデータと前記第２のデータを連続して読出し、
前記コンピュータが、前記エラー訂正回路が前記第１のデータのエラーを訂正することを確認する
ことを特徴とするエラー訂正試験方法。
【請求項２】
前記コンピュータは、さらに、前記メモリのためのキャッシュメモリを備え、
前記コンピュータが前記第１のデータおよび前記第２のデータを前記メモリに書き込んだ後、前記コンピュータは、前記メモリ内の前記第１のデータおよび前記第２のデータ以外のデータを所定量参照する
ことを特徴とする請求項１記載のエラー訂正試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エラー訂正試験方法に関する。
【背景技術】
【０００２】
ＤＩＭＭ（Dual Inline Memory Module）は、ソケットを介してコンピュータに着脱可能なメモリモジュールである。また、メモリモジュールには、ＥＣＣ（Error Correcting Code）機能に対応したものがある。ＥＣＣ対応メモリモジュールは、ＥＣＣ対応メモリコントローラと連動することで、記憶した情報の誤り検出および誤り訂正を行う。誤り検出および誤り訂正機能の動作を検証するには、データエラーを擬似的に発生させる必要がある。そこで、ＤＩＭＭから出力された読み出されたデータの中の予め定められた１ビットを接地電位にクランプする。これにより、本来のデータの値を変化させ、データエラーを擬似的に発生させることができる。この擬似的なデータエラーを利用することにより、コンピュータの２ビットのエラー検出及び１ビットのエラー訂正の機能がテストできる。
【０００３】
このような擬似的なデータエラーを利用したＥＣＣの検査の一例として、例えば、メモリ擬似故障注入装置において、メモリ制御回路とメモリユニットとの間に挿入接続するアダプタを設け、当該アダプタ内に、外部からのエラー注入指示を受け付ける第１の回路と、第１の回路が受け付けた指示に従いメモリユニットへのデータのエラーを注入する第２の回路とを備えることが提案されている。
【０００４】
なお、擬似障害発生装置において、擬似障害アドレスレジスタに保持されている主記憶のアドレスと主記憶をアクセスするアドレスの一致を検出する一致回路と、この一致回路のアドレスの一致が検出されたときの出力により擬似障害を発生する擬似障害発生手段とを有することが提案されている。
【０００５】
また、記憶装置において、擬似故障をセットするための擬似故障レジスタと、エラーの発生回数を指示するためのエラー回数セットレジスタと、前記擬似故障レジスタの出力信号とシステム制御装置からの書込み／読出し動作指示信号との論理積を求めるためのＡＮＤゲートと、［（最大エラー回数）−１］個の直列に接続された複数のＡＮＤゲート付き診断レジスタと、前記エラー回数セットレジスタの出力信号によって前記［（最大エラー回数）−１］個の出力信号の一つを選択するためのエラー回数セレクト回路と、前記擬似故障レジスタの出力信号からエラーを検出するためのエラー検出回路とを具備することが提案されている。
【０００６】
また、故障シミュレーション装置において、故障に対して許容度を有するディジタル処理システムをテストするための装置であって、上記システムに接続され、上記システム中で発生する予定の事象を検出するための手段と、上記検出するための手段に応答して予定の故障条件を上記システムに注入するための手段を具備することが提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−０２１９２２号公報
【特許文献２】特開昭６０−２３９８３８号公報
【特許文献３】特開昭６２−０４７７５０号公報
【特許文献４】特開昭６３−０２７９３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述したように、コンピュータのエラー検出及びエラー訂正の機能のテストにおいては、メモリから出力されたデータの中の予め定められた１ビットを接地電位に接続することにより、データエラーを擬似的に発生させる。従って、コンピュータのエラー検出及びエラー訂正の機能を正確にテストするためには、メモリの高速な動作に応じて、正確なデータエラーを発生させることが求められる。
【０００９】
本発明は、正確なデータエラーに基づいてエラー訂正試験方法を実行することを目的とする。
【課題を解決するための手段】
【００１０】
開示されるエラー訂正試験方法は、エラー訂正に対応したメモリと、エラー訂正回路を有するメモリコントローラと、前記メモリと前記メモリコントローラの間に疑似故障ツールを有するコンピュータのエラー訂正試験方法である。開示されるエラー訂正試験方法において、前記コンピュータが、特定のビットに第１の値が設定された第１のデータを前記メモリの第１のアドレスに書き込み、かつ、前記特定のビットに前記第１の値とは異なる第２の値が設定された第２のデータを前記メモリの第２のアドレスであって前記第１のアドレスと連続しているアドレスに書き込み、前記疑似故障ツールが、前記特定のビットに対応する前記メモリの電極を前記第２の値を示すようにクランプし、前記コンピュータが、前記メモリから、前記第１のデータと前記第２のデータを連続して読出し、前記コンピュータが、前記エラー訂正回路が前記第１のデータのエラーを訂正することを確認する。
【発明の効果】
【００１１】
開示されるエラー訂正試験方法によれば、メモリの動作速度が高速であっても、正確なデータエラーを発生させることができ、コンピュータのエラー検出及びエラー訂正の機能を正確にテストすることができる。
【図面の簡単な説明】
【００１２】
【図１】メモリ検査装置の構成の一例を示す図である。
【図２】データエラーの擬似発生の説明図である。
【図３】データエラーの擬似発生の説明図である。
【図４】データエラーの擬似発生におけるクランプの説明図である。
【図５】データエラーの処理の説明図である。
【図６】データエラー擬似発生処理のフローチャートである。
【図７】本発明者が検討したデータエラーの擬似発生の説明図である。
【図８】本発明者が検討したデータエラーの処理の説明図である。
【図９】本発明者が検討したデータエラーの擬似発生の説明図である。
【図１０】本発明者が検討したデータエラーの処理の説明図である。
【図１１】本発明者が検討したデータエラーの擬似発生の説明図である。
【図１２】本発明者が検討したデータエラーの処理の説明図である。
【図１３】本発明者が検討したデータエラーの擬似発生の説明図である。
【発明を実施するための形態】
【００１３】
本発明者は、従来の擬似的なデータエラーを利用したエラー訂正試験方法を、ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous DRAM）に適用する場合について検討した。本発明者の検討によれば、従来の擬似的なデータエラーを利用したエラー訂正試験方法を、ＤＤＲ  ＳＤＲＡＭに適用した場合には、図７〜図１０に示すように、擬似故障が発生される。
【００１４】
図７及び図８は、読み出されたデータの中の１ビットが接地電位にクランプされない、換言すれば、ビットクランプ操作が無い場合における、２ビットのエラー検出及び１ビットのエラー訂正について示す。
【００１５】
なお、実際には、図７及び図８は、コンピュータが市場に出荷されて実際に運用されている場合において、ソフトエラーが生じない場合における、２ビットのエラー検出及び１ビットのエラー訂正を示す。
【００１６】
図７に示すように、ＤＤＲ  ＳＤＲＡＭのバースト転送においては、メモリクロックの半周期に同期したタイミングで、データ列＃１１〜データ列＃１４が、連続して出力される。この時、メモリクロックの半周期とデータ出力の１周期とは、データ出力の周期の更に半分だけずれている。２個のメモリクロックの周期（メモリクロックの２サイクル）において、４個のデータが出力される。
【００１７】
これにより、ＤＤＲ  ＳＤＲＡＭのバースト転送においては、メモリクロックの立ち上がり及びメモリクロックの立下りの双方のタイミングで、４個のデータ列＃１１〜データ列＃１４を読み出すことができる。具体的には、第１のメモリクロックの立ち上がりに同期してデータ列＃１１が読み出され、第１のメモリクロックの立下りに同期してデータ列＃１２が読み出される。第２のメモリクロックの立ち上がりに同期してデータ列＃１３が読み出され、第２のメモリクロックの立下りに同期してデータ列＃１４が読み出される。４個のデータ列＃１１〜データ列＃１４は、連続して読み出される。
【００１８】
なお、図７において、データ列＃１１〜データ列＃１４を「リードデータ」と表す。また、図７において、データ列＃１１〜データ列＃１４の各々は、６４ビットのデータと、８ビットのＥＣＣ用データとを含むデータとを含む。
【００１９】
図８に示すように、ＤＩＭＭから読み出されたデータ列＃１１〜データ列＃１４の各々は、擬似故障ツールに入力される。データ列＃１１〜データ列＃１４において、６４ビットのデータは「６４ｂｉｔ」と表され、ＥＣＣ用データは「ＥＣＣ」と表され、６４ビットのデータ及びＥＣＣ用データは「６４ｂｉｔ＋ＥＣＣ」と表される。データ列＃１１〜データ列＃１４の各々は、「６４ｂｉｔ＋ＥＣＣ」と表される。データ列＃２１〜データ列＃２４は、擬似故障ツールに入力されたデータ列＃１１〜データ列＃１４である。
【００２０】
擬似故障ツールによるビットクランプ操作が無いとすると、データ列＃２１〜データ列＃２４は、そのままマザーボードのメモリコントローラに入力される。データ列＃３１〜データ列＃３４は、メモリコントローラに入力されたデータ列＃２１〜データ列＃２４である。メモリコントローラは、データ列＃３１〜データ列＃３４について、各々に含まれるＥＣＣ用データを用いて、２ビットのエラー検出及び１ビットのエラー訂正を実行して、誤りを訂正した６４ビットのデータをＣＰＵ（Central Processing Unit）に入力する。データ列＃４１〜データ列＃４４は、ＣＰＵに入力されたデータ列＃３１〜データ列＃３４である。データ列＃４１〜データ列＃４４は、ＥＣＣ用データが除かれて、６４ビットのデータのみを含む。
【００２１】
図９及び図１０は、図７及び図８に示す場合についてのビットクランプ操作がある場合における、２ビットのエラー検出及び１ビットのエラー訂正について示す。換言すれば、図９及び図１０は、読み出されたデータの中の１ビットについてのビットクランプ操作がある場合について示す。
【００２２】
なお、実際には、図９及び図１０は、コンピュータを市場に出荷する前に、メーカにおいて実行されるテストを示す。このテストは、コンピュータにおけるメモリのエラーの評価の１つであり、「ソフトエラー（１回のみのエラー）に対して１回のＥＣＣ訂正が行なわれ、１回のエラーログが報告される」ことを確認するためのテストである。
【００２３】
図９に示すように、ＤＤＲ  ＳＤＲＡＭのバースト転送において、メモリクロックの立ち上がり及びメモリクロックの立下りの双方のタイミングで、４個のデータ列＃１１〜データ列＃１４が連続して読み出される。データ列＃１１〜データ列＃１４の各々は、６４ビットのデータと、８ビットのＥＣＣ用データとを含む。
【００２４】
一方、例えば、読み出されたデータ列＃１１の中の予め定められた１ビットが、バススイッチにより接地電位にクランプされる。１ビットのクランプは、例えば、データバスの中の当該１ビットの信号が通過する信号線を、クランプ期間中だけ、バススイッチを用いて接地電位に接続することにより行われる。クランプ期間は、図９に示すように、データ列＃１１が出力される期間とほぼ一致する。図９において、接地電位は、太線で示される。
【００２５】
このクランプ操作により、クランプ操作された後のデータ列＃２１の予め定められた１ビットは、本来の値に拘らず、接地電位、換言すれば、「０」とされる。一方、クランプ期間は、次のデータ列＃１２の読出しのタイミング以前に終了するので、他のデータ列＃２２〜データ列＃２４には影響を与えない。データ列＃２１〜データ列＃２４については、図１０に示す。
【００２６】
なお、図９において、クランプ操作された後のデータを「クランプ後のリードデータ」と表す。また、図９において、リードデータは、６４ビットのデータと８ビットのＥＣＣ用データとを含む（６４ｂｉｔ＋ＥＣＣ）であるのに対して、クランプ後のリードデータは、データ列＃２１〜データ列＃２４において、クランプ操作された予め定められた１ビットの値のみを示す。換言すれば、図９のクランプ後のリードデータは、バススイッチにより接地電位にクランプされた信号線を通過した、予め定められた１ビットの信号の値のみを示す。
【００２７】
図１０に示すように、ＤＩＭＭから読み出されたデータ列＃１１〜データ列＃１４の各々は、擬似故障ツールに入力される。データ列＃２１〜データ列＃２４は、擬似故障ツールに入力されたデータ列＃１１〜データ列＃１４である。
【００２８】
ここで、前述したように、擬似故障ツールによるビットクランプ操作が実行される。具体的には、例えば、先頭のデータ列＃２１において、図９のクランプ後のリードデータに示すように、予め定められた１ビットが、本来のデータの値に拘らず、接地電位にクランプされる。これにより、結果的に、データ列＃２１は、１ビットのビットエラーを含むことになる。換言すれば、データ列＃２１は、１ビットのビットエラーを含む擬似故障データとされる。
【００２９】
一方、残りのデータ列＃２２〜データ列＃２４は、図９のクランプ期間に示すように、クランプ期間の終了後に読み出される。従って、残りのデータ列＃２２〜データ列＃２４は、図９のクランプ後のリードデータに示すように、クランプされずに、本来のデータの値のままとされる。換言すれば、残りのデータ列＃２２〜データ列＃２４は、そのままマザーボードのメモリコントローラに入力される。
【００３０】
メモリコントローラは、データ列＃３１〜データ列＃３４について、各々に含まれるＥＣＣ用データを用いて、２ビットのエラー検出及び１ビットのエラー訂正を実行して、誤りを訂正した６４ビットのデータをＣＰＵに入力する。換言すれば、メモリコントローラは、データ列＃３１に含まれる１ビットのビットエラーを訂正して、訂正されたデータ列＃３１’を生成する。
【００３１】
メモリコントローラは、訂正したデータ列＃３１’及びデータ列＃３２〜データ列＃３４をＣＰＵに入力する。また、メモリコントローラは、ＥＣＣエラー＃５１を、例えばＢＩＯＳ（Basic Input Output System）に報告する。換言すれば、メモリコントローラは、データ列＃３１の１ビットのビットエラーを訂正したことを、報告する。ＢＩＯＳは、メモリコントローラからの受信した報告を、エラーログとして保持する。これにより、前述したように、「ソフトエラー（１回のみのエラー）に対して１回のＥＣＣ訂正が行なわれ、１回のエラーログが報告される」ことが、正しく実行されたことが確認される。
【００３２】
しかし、本発明者の検討によれば、従来の疑似故障ツールをより高速化されたメモリに使用して、誤り検出を再現しようとすると、図１１〜図１３に示すような問題を生じる。
【００３３】
なお、図１１〜図１３の状態は、メモリクロックの高速化により、現在のバススイッチのスイッチング速度では、バススイッチのオン／オフの動作が、データ列＃１１の出力の期間に納まらない場合があることに起因して発生する。
【００３４】
図１１に示すように、ＤＤＲ  ＳＤＲＡＭのバースト転送において、メモリクロックの立ち上がり及びメモリクロックの立下りの双方のタイミングで、４個のデータ列＃１１〜データ列＃１４が連続して読み出される。一方、例えば、読み出されたデータ列＃１１の中の予め定められた１ビットが、バススイッチにより接地電位にクランプされる。このクランプ操作により、クランプ操作された後のデータ列＃２１の予め定められた１ビットは、本来の値に拘らず、接地電位、換言すれば、「０」とされる。
【００３５】
しかし、クランプ期間は、図１１に示すように、データ列＃１１が出力される期間よりも長い。図１１において、接地電位は、太線で示される。このため、クランプ期間は、次のデータ列＃１２の出力の期間、換言すれば、データ列＃２２の読出しのタイミングとなっても終了しない。この結果、データ列＃２１に続けて読み出されるデータ列＃２２においても、予め定められた１ビットが、バススイッチにより接地電位にクランプされる。このクランプ操作により、クランプ操作された後のデータ列＃２２の予め定められた１ビットは、本来の値に拘らず、接地電位、換言すれば、「０」とされる。
【００３６】
なお、図１１において、クランプ操作された後のデータを「クランプ後のリードデータ」と表す。また、図１１において、リードデータは、６４ビットのデータと８ビットのＥＣＣ用データとを含むデータ（６４ｂｉｔ＋ＥＣＣ）であるのに対して、クランプ後のリードデータは、データ列＃２１〜データ列＃２４において、クランプ操作された予め定められた１ビットの値のみを示す。
【００３７】
図１２に示すように、ＤＩＭＭから読み出されたデータ列＃１１〜データ列＃１４の各々は、擬似故障ツールに入力される。データ列＃２１〜データ列＃２４は、擬似故障ツールに入力されたデータ列＃１１〜データ列＃１４である。
【００３８】
ここで、前述したように、擬似故障ツールによるビットクランプ操作が実行される。具体的には、例えば、先頭のデータ列＃２１において、図１１のクランプ後のリードデータに示すように、予め定められた１ビットが、接地電位にクランプされる。これにより、結果的に、データ列＃２１は、１ビットのビットエラーを含むことになる。
【００３９】
しかし、前述したように、クランプ期間は、図１１に示すように、データ列＃１１が出力される期間よりも長いので、データ列＃２１に続けて読み出されるデータ列＃２２において、図１１のクランプ後のリードデータに示すように、予め定められた１ビットが、接地電位にクランプされてしまう。これにより、結果的に、２個のデータ列＃２１及びデータ列＃２２が、１ビットのビットエラーを含むことになる。
【００４０】
このため、メモリコントローラは、データ列＃３１及びデータ列＃３２に含まれる１ビットのビットエラーを訂正して、訂正されたデータ列＃３１’及びデータ列＃３２’を生成する。また、メモリコントローラは、ＥＣＣエラー＃５１及びＥＣＣエラー＃５２を、例えばＢＩＯＳに報告する。
【００４１】
図１３は、前述のテストにおいて読み出されるデータ列＃１１〜データ列＃１４の一例を示し、データ列＃１１〜データ列＃１４が図１１及び図１２に示す処理により変化する状態を示す。
【００４２】
なお、図１３において、データ列＃１１〜データ列＃１４の先頭のアドレスにおける先頭の１ビットが「０」にクランプされるものとする。また、図１３において、「１」はデータの値がハイレベルであることを示し、「０」はデータの値がロウレベルであることを示し、「ｄ」はデータの値がドントケアであること、換言すれば、「１」又は「０」のいずれの値であっても良いことを示す。
【００４３】
データ列＃１１〜データ列＃１４において、例えば、データ列＃１１及びデータ列＃１２の先頭のアドレスにおける先頭の１ビットの値が「１」であるとする。
【００４４】
擬似故障ツールは、データ列＃１１の先頭のアドレスにおける先頭の１ビットを「０」にクランプして、１回のみのエラー、換言すれば、擬似故障データ列＃２１を生成する。しかし、前述したように、バススイッチの動作速度が遅いため、データ列＃１２の先頭のアドレスにおける先頭の１ビットも、「０」にクランプしてしまう。この結果、擬似故障データ列＃２２が生成される。
【００４５】
これに応じて、メモリコントローラは、データ列＃３１及びデータ列＃３２の双方についてビットエラーを検出し、検出したビットエラーを訂正して、訂正されたデータ列＃３１’及びデータ列＃３２’を生成する。また、メモリコントローラは、２回のエラー発生をＢＩＯＳに報告する。
【００４６】
例えば、バススイッチのスイッチング速度は、バスイネーブル時間の最小値である、２．０〜４．０ｎｓ（ナノ秒）である。一方、いわゆるＤＤＲ３と言われるＤＤＲ  ＳＤＲＡＭにおいては、メモリクロックの周波数は、１０６６〜５３３ＭＨｚである。従って、１周期は、０．９ｎｓである。従って、通常のバススイッチのスイッチング速度では、図１１に示すように、１回のバススイッチによるクランプの期間が、データ列＃１１の出力の期間を超えてしまう。
【００４７】
このため、前述したように、実際には、２回のビットエラーが発生し、２回のＥＣＣエラーがＢＩＯＳに報告されてしまう。
【００４８】
開示のエラー訂正試験方法は、メモリの動作速度が高速であっても、正確なデータエラーを発生させることができ、コンピュータのエラー検出及びエラー訂正の機能を正確にテストすることができる。
【００４９】
図１は、メモリ検査装置の構成の一例を示す図である。
【００５０】
メモリ検査装置は、サーバ１と、擬似故障ツール３とを含む。サーバ１は、例えばパーソナルコンピュータであってもよい。サーバ１は、その主メモリとして、例えばＤＩＭＭ４を有する。本実施例では、ＤＩＭＭ４は、複数のＤＤＲ  ＳＤＲＡＭから構成される。
【００５１】
ＤＩＭＭ４は、サーバ１のマザーボードのメモリソケットに、装着される。
【００５２】
図１においては、サーバ１とＤＩＭＭ４との間に、擬似故障ツール３が接続される。従って、この場合、は、データバス２１、アドレスバス２２、コントロールバス２３は、擬似故障ツール３を介して、サーバ１及びＤＩＭＭ４を接続する。コントロールバス２３は、データバス２１及びアドレスバス２２以外のバスである。
【００５３】
図１の例において、データバス２１は、後述するように、６４＋８＝７２ビットのビット幅を有する。従って、ＤＩＭＭ４から読み出されるデータは、７２ビットのデータである。データのビット幅は、これに限られず、種々の値であって良い。
【００５４】
サーバ１は、ＣＰＵ１１と、メモリコントローラ１７と、キャッシュメモリ１９とを含む。ＣＰＵ１１、メモリコントローラ１７及びキャッシュメモリ１９は、サーバ１のマザーボード上に設けられる。ＣＰＵ１１は、ＯＳ（オペレーティングシステム）１２と、擬似故障処理プログラムを実行する。
【００５５】
サーバ１は、例えばハードディスク装置のようなディスク５を含む。ディスク５は、サーバ１のマザーボード外に設けられる。ディスク５は、テストデータ５１を格納する。テストデータ５１は、予めディスク５に格納される。テストデータ５１は、図２を参照して後述するように、予め定められたビットパターンを有する。
【００５６】
ディスク５に格納されたテストデータ５１は、ＤＩＭＭ４の格納領域４１に格納される。格納領域４１は、予め定められた複数のアドレスを有する、連続した領域である。ＯＳ１２が動作している間はＤＩＭＭ４には種々のデータが格納されるが、このようなデータはメモリ検査に用いることができない。そこで、予め定められたアドレスに、予め定められたビットパターンを有するテストデータ５１が格納される。これにより、予め定められたビットパターンを有するテストデータ５１を用いてテストを実行することができる。
【００５７】
なお、ＤＩＭＭ４において、ＯＳ１２を実現するプログラムは、格納領域４２に格納される。格納領域４２は、ＯＳ１２を実現するプログラムを格納する専用の領域である。また、ＤＩＭＭ４において、擬似故障処理プログラムは、格納領域４３に格納される。格納領域４３は、種々のアプリケーションプログラムを格納する領域である。
【００５８】
擬似故障ツール３は、ＤＩＭＭ４から読み出されたデータに擬似故障を発生させる。擬似故障ツール３は、バススイッチ３１と、アドレス判定部３２とを含む。バススイッチ３１は、データバス２１に挿入される。また、バススイッチ３１には、コントロールバス２３が接続される。アドレス判定部３２には、アドレスバス２２及びコントロールバス２３が接続される。アドレスバス２２及びコントロールバス２３は、サーバ１とＤＩＭＭ４とに接続される。
【００５９】
アドレス判定部３２は、例えば、予めライトコマンド及びリードコマンドを保持し、これらとコントロールバス２３上に出力された信号とを比較して、ライトコマンド及びリードコマンドを検出する。バススイッチ３１は、例えば、予めライトコマンド及びリードコマンドを保持し、これらとコントロールバス２３上に出力された信号とを比較して、ライトコマンド及びリードコマンドを検出する。
【００６０】
アドレス判定部３２は、サーバ１からコントロールバス２３を介してＤＩＭＭ４へライトコマンドが出力された場合には、ライトコマンドを検出して、アドレス判定を行わない。また、バススイッチ３１は、サーバ１からコントロールバス２３を介してＤＩＭＭ４へライトコマンドが出力された場合には、ライトコマンドを検出して、予め定められたビット位置に対応するスイッチを通過状態とし、クランプ状態としない。他のビット位置に対応するスイッチも、通過状態とされ、クランプ状態とされない。従って、この場合、ＤＩＭＭ４に書き込まれるデータは、そのままバススイッチ３１を通過して、ＤＩＭＭ４に入力される。
【００６１】
アドレス判定部３２は、サーバ１からコントロールバス２３を介してＤＩＭＭ４へリードコマンドが出力された場合には、リードコマンドを検出して、アドレス判定を行う。また、バススイッチ３１は、アドレス判定部３２におけるアドレス判定の結果に応じて、予め定められたビット位置に対応するスイッチをクランプ状態とし、通過状態としない。従って、この場合、ＤＩＭＭ４から読み出されたデータ、例えばテストデータ５１は、予め定められたビット位置の値がクランプにより変更され、メモリコントローラ１７に入力される。
【００６２】
バススイッチ３１は、ＤＩＭＭ４に接続され、スイッチ群を含む。このスイッチ群は、ＤＩＭＭ４から読み出されるデータのビット毎に設けられた複数のスイッチを含む。複数のスイッチについては、図４を参照して後述する。従って、バススイッチ３１は、予め定められたビット位置に対応するスイッチを含む。
【００６３】
各々のスイッチは、クランプ状態又は通過状態のいずれかの状態とされる。クランプ状態は、当該スイッチの出力を、第１の値、例えば「１」とは反対の値である第２の値、例えば「０」にクランプする状態である。通過状態は、当該スイッチの入力を、そのまま出力する状態である。
【００６４】
アドレス判定部３２は、予め定められたアドレスを保持する。予め定められたアドレスは固定のアドレスである。固定のアドレスは、例えばアドレス判定部３２の有するレジスタ等に固定的に設定される。固定のアドレスとしては、例えば「０番地」が用いられる。アドレス「０番地」は、後述する図２に示すデータ列＃１１における、先頭のアドレスに相当する。なお、予め定められたアドレスは、例えばディップスイッチ等により、擬似故障ツール３の外部から設定するようにしても良い。
【００６５】
アドレス判定部３２は、リードコマンドを検出した場合、メモリクロックの立ち上がりに同期して、アドレスバス２２上に出力されたアドレスを取込む。アドレス判定部３２は、予め定められたアドレスと、取込んだアドレスとを比較することにより、予め定められたアドレスであるか否かを検出する。
【００６６】
アドレス判定部３２は、予め定められたアドレスに対するリードコマンドを検出した場合に、コントロールバス２３上を転送されるメモリクロックに同期した予め定められたタイミングで、バススイッチ３１に各々のスイッチの制御信号を入力する。これにより、バススイッチ３１において、予め定められたビット位置に対応するスイッチが、クランプ状態に切替えられ、予め定められたビット位置以外のビット位置に対応するスイッチが、通過状態のままとされる。
【００６７】
また、アドレス判定部３２は、予め定められたアドレスを検出しない場合に、コントロールバス２３上を転送されるメモリクロックに同期した予め定められたタイミングで、バススイッチ３１に各々のスイッチの制御信号を入力する。これにより、バススイッチ３１において、予め定められたビット位置に対応するスイッチが、通過状態に切替えられ、予め定められたビット位置以外のビット位置に対応するスイッチが、通過状態のままとされる。
【００６８】
ここで、ＤＩＭＭ４は、ＤＤＲ  ＳＤＲＡＭから構成されるため、リードコマンド及びアドレスを取込んだメモリクロックから予め定められた時間だけ遅れたタイミングのメモリクロックの立ち上がりに同期して、ＤＩＭＭ４は、テストデータ５１の出力を開始する。
【００６９】
一方、ＤＩＭＭ４からテストデータ５１の出力が開始されると、前述したように、テストデータ５１の出力が開始されるメモリクロックの立下りに同期して、次のデータ列（第２のデータ列＃１２）が出力される。このため、あるデータ列（データ列＃１１）の出力期間において予め定められたビット位置に対応するスイッチをクランプ状態にした上で、更に、次のデータ列（データ列＃１２）の出力に先立って、予め定められたビット位置に対応するスイッチを通過状態に切替えることはできない。これは、バススイッチ３１のスイッチの応答速度が遅いことに起因する。以上については、図４を参照して後述する。
【００７０】
サーバ１の電源が投入されて、ＣＰＵ１１がＯＳ１２を起動し、擬似故障処理プログラムを起動する。
【００７１】
ＣＰＵ１１は、擬似故障処理プログラムに従って、ディスク５に格納されたテストデータ５１を、主メモリであるＤＩＭＭ４にロードする。テストデータ５１は、予め定められたデータパターンを有するデータである。ロード先のアドレスは、予め定められたアドレス、換言すれば、格納領域４１のアドレスである。これにより、ＤＩＭＭ４において、特定のアドレスに特定のデータパターンを有するテストデータ５１が格納される。
テストデータ５１を格納後、キャッシュメモリ１９に格納された、データ列＃１１とデータ列＃１２〜データ列＃１４とを、キャッシュメモリ１９から追い出す処理を行う。具体的には、テストデータ５１を格納したアドレス以外のＤＩＭＭ４のデータを所定量参照する。
【００７２】
また、ＣＰＵ１１は、擬似故障処理プログラムに従って、擬似故障ツール３を介して、データ列＃１１〜データ列＃１４を、ＤＩＭＭ４から読み出す。
【００７３】
ＣＰＵ１１は、擬似故障処理プログラムに従って、メモリコントローラ１７に対して、予め定められたアドレスである格納領域４１のアドレスを指定して、ＤＩＭＭ４からのデータの読出しを要求する。これに応じて、メモリコントローラ１７は、制御信号とアドレス信号を形成して、制御信号をコントロールバス２３を介してＤＩＭＭ４に送信し、アドレス信号をアドレスバス２２を介してＤＩＭＭ４に送信する。
【００７４】
これに応じて、ＤＩＭＭ４は、指定されたアドレスである格納領域４１からテストデータを読出して、データバス２１を介して、メモリコントローラ１７に送信する。この時、テストデータは、擬似故障ツール３に入力される。
【００７５】
擬似故障ツール３は、バススイッチ３１において、予め定められたビット位置に対応するスイッチを、クランプ状態に切替える。これにより、擬似故障ツール３は、バススイッチ３１を用いて、読出したデータ列＃１１において、予め定められたビット位置の第１の値、例えば「１」を、第２の値、例えば「０」にクランプすることにより、データ列＃１１についての擬似故障データを生成する。
【００７６】
また、擬似故障ツール３は、データ列＃１２〜データ列＃１４の読出しと並列して、バススイッチ３１における予め定められたビット位置に対応するスイッチを、クランプ状態から、通過状態に切替える。これにより、擬似故障ツール３は、バススイッチ３１を用いて、読出したデータ列＃１２〜データ列＃１４において、予め定められたビット位置に対応するスイッチがクランプ状態である場合には、予め定められたビット位置の第２の値、例えば「０」を、第２の値、例えば「０」にクランプする。また、擬似故障ツール３は、予め定められたビット位置に対応するスイッチが通過状態である場合には、予め定められたビット位置の第２の値、例えば「０」を、そのまま通過させる。これにより、データ列＃１２〜データ列＃１４が出力される。
【００７７】
具体的には、アドレス判定部３２は、予め定められたアドレスを検出した場合に、バススイッチ３１において、予め定められたビット位置に対応するスイッチを、クランプ状態に切替える。これにより、擬似故障データが生成される。
【００７８】
一方、アドレス判定部３２は、予め定められたアドレスを検出しない場合に、予め定められたビット位置に対応するスイッチを、通過状態に切替える。これにより、擬似故障データは生成されない。これにより、ＤＩＭＭ４から出力されたデータが、そのままメモリコントローラ１７に入力される。
【００７９】
メモリコントローラ１７は、ＥＣＣ回路１８において、受信したデータに基づいて、２ビットのエラー検出及び１ビットのエラー訂正を実行して、誤りを訂正したデータをＣＰＵ１１に入力する。また、メモリコントローラ１７は、２ビットのエラー検出及び１ビットのエラー訂正を実行した結果を、例えばＢＩＯＳ１３に報告する。
【００８０】
図２は、データエラーの擬似発生の説明図である。図２は、前述のテストにおいて読み出される、データ列＃１１〜データ列＃１４を含むテストデータの一例を示し、データ列＃１１〜データ列＃１４が変化する状態を示す。図２において、「１」はデータの値がハイレベルであることを示し、「０」はデータの値がロウレベルであることを示し、「ｄ」はデータの値がドントケアであること、換言すれば、「１」又は「０」のいずれの値であっても良いことを示す。
【００８１】
テストデータ５１は、前述したように、ＤＩＭＭ４に格納される。テストデータ５１は、複数のデータ列＃１１〜データ列＃１４を含む。複数のデータ列＃１１〜データ列＃１４の各々は、並列に読み出される複数のビットを含む。
【００８２】
テストデータ５１は、予め定められたビットパターンを有する。即ち、複数のデータ列＃１１〜データ列＃１４の中で、第１のデータ列＃１１は、予め定められたビット位置に、予め定められた第１の値を有する。また、複数のデータ列＃１１〜データ列＃１４の中で、少なくとも第１のデータ列＃１１の次の第２のデータ列＃１２は、予め定められたビット位置に、第２の値を有する。
【００８３】
第１の値は、例えば２値データにおける「１」、換言すれば、ハイレベルである。第２の値は、第１の値を反転した値である。第２の値は、例えば２値データにおける「０」、換言すれば、ロウレベルである。
【００８４】
テストデータ５１は、第１のデータ列であるデータ列＃１１と、複数の第２のデータ列であるデータ列＃１２〜データ列＃１４とを含む。データ列＃１１は、エラー検出又はエラー訂正のための複数のビットを含むデータであって予め定められたビット位置に第１の値、例えば「１」を有する。データ列＃１２〜データ列＃１４の各々は、データ列＃１１に続けて読み出されるデータであって、エラー検出又はエラー訂正のための複数のビットを含むデータであって、予め定められたビット位置に第２の値、例えば「０」を有する。
【００８５】
例えば、データ列＃１１は、ＤＩＭＭ４の予め定められたアドレスに格納される。データ列＃１２〜データ列＃１４は、ＤＩＭＭ４において、データ列＃１１に連続して格納される。換言すれば、データ列＃１１〜データ列＃１４は、予め定められた１個の格納領域４１に連続して格納される。
【００８６】
データ列＃１１〜データ列＃１４の各々は、８ビットずつ、換言すれば、１バイトずつ分かち書きされている。１バイト毎にアドレスが割り当てられる。従って、データ列＃１１の先頭の１バイトのアドレスが「０番地」であるとすると、データ列＃１１の最後の１バイトのアドレスは「７番地」である。また、データ列＃１２において、先頭の１バイトのアドレスは「８番地」であり、最後の１バイトのアドレスは「１５番地」である。図２に示すデータ列＃１１〜データ列＃１４の各々は、６４ビットであるので、ＥＣＣ用データを除いたデータである。データ列＃１１が、第１のデータ列であって、最初に読み出されるデータである。データ列＃１２〜データ列＃１４が、第２のデータ列であって、データ列＃１１に続けて読み出されるデータである。
【００８７】
なお、データ列＃１１の先頭のアドレスにおける先頭の１ビットは、電源電位、換言すれば、「１（ハイレベル）」にクランプされるようにしても良い。換言すれば、サーバ１における２値信号のいずれか一方の値に固定されるようにすれば良い。
【００８８】
また、「０」にクランプされる１ビットは、先頭のアドレスにおける先頭の１ビットに限られない。従って、「０」にクランプされる１ビットは、先頭のアドレス以外のアドレスに存在していても良く、また、いずれかのアドレスにおける先頭の１ビット以外の１ビットであっても良い。
【００８９】
ＤＩＭＭ４に格納されたテストデータ５１は、ＣＰＵ１１により、擬似故障ツール３を介して、読み出される。これにより、テストデータ５１は、擬似故障ツール３に入力される。
【００９０】
擬似故障ツール３において、ＤＩＭＭ４から読み出されたテストデータ５１から、擬似的なエラーを含むテストデータが生成される。換言すれば、以下に説明するように、第１のデータ列＃１１の予め定められたビット位置の第１の値「１」が、第２の値「０」に変更される。
【００９１】
具体的には、前述したように、データ列＃１１において、先頭のアドレスが、予め定められたアドレスとされる。従って、データ列＃１１の読出しが指示されると、アドレス判定部３２により、予め定められたアドレスが検出され、バススイッチ３１において、予め定められたビット位置に対応するスイッチが、クランプ状態に切替えられる。通過状態からクランプ状態に切替えられたスイッチは、スイッチ切替えの最も早いタイミングで、再度、通過状態に切り替えられる。
【００９２】
データ列＃１１〜データ列＃１４において、例えば、先頭のデータ列＃１１において、先頭のアドレスにおける先頭の１ビットの値が「１」、換言すれば、クランプ後の値「０」を反転した値とされる。データ列＃１１に続けて読み出されるデータ列＃１２〜データ列＃１４において、先頭のアドレスにおける先頭の１ビットの値が「０」、換言すれば、クランプ後の値「０」と等しい値とされる。
【００９３】
なお、先頭のアドレスにおける先頭の１ビットの値がクランプ後の値「０」と等しい値とされるデータの数は、３個に限られない。バススイッチ３１の動作速度がＤＩＭＭ４からのデータ読出し速度程度である場合には、データ列＃１１の次のデータ列＃１２のみにおいて、先頭のアドレスにおける先頭の１ビットの値が「０」とされるようにすれば良い。従って、データ列＃１１において先頭のアドレスにおける先頭の１ビットの値が「０」にクランプされる場合、少なくとも、データ列＃１１に連続して読み出される次の１個のデータ列＃１２において、先頭のアドレスにおける先頭の１ビットの値が、クランプ後の値「０」とされれば良い。
【００９４】
逆に、バーストモードにおいて連続して読み出されるデータは、４個のデータ列＃１１〜データ列＃１４に限られない。そして、この場合において、バススイッチ３１の動作速度がＤＩＭＭ４からのデータ読出し速度よりもかなり遅い場合には、例えば、データ列＃１１に続けて読み出される４〜５個のデータにおいて、先頭のアドレスにおける先頭の１ビットの値を「０」とするようにしても良い。
【００９５】
擬似故障ツールは、データ列＃１１の先頭のアドレスにおける先頭の１ビットを「０」にクランプして、１回のみのエラー、換言すれば、擬似故障データ列＃２１を生成する。この時、前述したように、バススイッチ３１の動作速度が遅いため、データ列＃１２の先頭のアドレスにおける先頭の１ビットも、「０」にクランプしてしまう。しかし、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は、元々「０」である。従って、「０」にクランプされても、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は「０」で変化せず、クランプの影響はない。
【００９６】
この結果、擬似故障データ列＃２２が生成されるが、生成された擬似故障データ列＃２２は、元のデータ列＃２２と等しい。従って、擬似故障データ列＃２２は生成されないに等しい。換言すれば、データ列＃２２に対応するデータ列＃３２においては、ビットエラーは検出されない。
【００９７】
以上のように、テストデータ５１は、ＤＩＭＭ４から読み出され、第１のデータ列＃１１の予め定められたビット位置の値を変更される。この後、テストデータ５１は、メモリコントローラ１７に入力される。これにより、メモリコントローラ１７のＥＣＣ回路１８において、テストデータ５１を用いてＤＩＭＭ４についてのテストが実行される。
【００９８】
具体的には、メモリコントローラ１７は、データ列＃３１のみについてビットエラーを検出し、検出したビットエラーを訂正して、訂正されたデータ列＃３１’を生成する。また、メモリコントローラ１７は、１回のエラー発生をＢＩＯＳに報告する。
【００９９】
これにより、１回のバススイッチ３１によるクランプの期間が、データ列＃１１の出力の期間を超えてしまう場合においても、１回のみのビットエラーが発生し、１回のみのＥＣＣエラーがＢＩＯＳに報告される。従って、「ソフトエラー（１回のみのエラー）に対して１回のＥＣＣ訂正が行なわれ、１回のエラーログが報告される」ことが、正しく実行されたことは確認することができる。
【０１００】
この後、エラー訂正されたテストデータ５１は、擬似故障処理プログラムの読出処理部１５により、キャッシュメモリ１９に格納される。この後、キャッシュメモリ１９に格納されたエラー訂正されたテストデータ５１は、擬似故障処理プログラムのキャッシュ処理部１６により、キャッシュメモリ１９から追い出される。これにより、擬似故障処理プログラムの読出処理部１５がテストデータ５１の読出コマンドを再度実行した場合であっても、テストデータ５１を、キャッシュメモリ１９からではなく、ＤＩＭＭ４から読み出すことができる。
【０１０１】
図３は、データエラーの擬似発生の説明図である。
【０１０２】
図３に示すように、ＤＤＲ  ＳＤＲＡＭのバースト転送において、メモリクロックの立ち上がり及びメモリクロックの立下りの双方に同期して、４個のデータ列＃１１〜データ列＃１４が連続して読み出される。
【０１０３】
読み出されたデータ列＃１１の中の予め定められた１ビットが、バススイッチ３１により接地電位にクランプされる。このクランプ操作により、クランプ操作された後のデータ列＃２１の予め定められた１ビットは、本来の値に拘らず、接地電位、換言すれば、「０」とされる。
【０１０４】
なお、データの読出しのモードは、ＤＤＲ  ＳＤＲＡＭのバースト転送以外の読出しモードであっても良い。従って、例えば、メモリクロックの立ち上がりのみ又は立下りのみに同期して、データを読み出す読出しモードであっても良い。また、データを出力するメモリは、ＤＩＭＭ４以外のメモリであっても良い。更に、データを出力するメモリは、ＤＤＲ  ＳＤＲＡＭ以外のメモリであっても良い。
【０１０５】
先頭のデータ列＃１１において、前述したように、先頭のアドレスにおける先頭の１ビットの値が「１」とされる。一方、前述したように、データ列＃１１に続けて読み出されるデータ列＃１２〜データ列＃１４において、先頭のアドレスにおける先頭の１ビットの値が「０」とされる。
【０１０６】
ここで、クランプ期間は、図３に示すように、データ列＃１１が出力される期間よりも長い。図３において、接地電位は、太線で示される。このため、クランプ期間は、次のデータ列＃１２の出力の期間、換言すれば、データ列＃２２の読出しのタイミングとなっても終了しない。従って、データ列＃１２の先頭のアドレスにおける先頭の１ビットも、「０」にクランプしてしまう。しかし、前述したように、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は、元々「０」である。従って、「０」にクランプされても、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は「０」で変化せず、クランプの影響はない。
【０１０７】
なお、図３において、クランプ操作された後のデータを「クランプ後のリードデータ」と表す。また、図３において、リードデータは、６４ビットのデータと８ビットのＥＣＣ用データとを含むデータ（６４ｂｉｔ＋ＥＣＣ）であるのに対して、クランプ後のリードデータは、データ列＃２１〜データ列＃２４において、クランプ操作された予め定められた１ビットの値のみを示す。
【０１０８】
図４は、データエラーの擬似発生におけるクランプの説明図である。
【０１０９】
例えば、前述したように、データ列＃１１の先頭のアドレスにおける先頭の１ビットの値「１」は、図４（Ａ）に示すように、「０」にクランプされる。このために、バススイッチ３１においてデータ列＃１１の先頭のアドレスにおける先頭の１ビットに対応するスイッチＳＷが、プルダウン抵抗Ｒを介して、接地電位、換言すれば、「０」に接続される。換言すれば、データ列＃１１の先頭のアドレスにおける先頭の１ビットに対応するスイッチＳＷが、クランプ状態とされる。これにより、データ列＃２１において、先頭のアドレスにおける先頭の１ビットの値が「０」とされる。バススイッチ３１におけるスイッチＳＷは、例えば１又は複数のＭＯＳＦＥＴにより構成される。
【０１１０】
なお、図４（Ａ）において、データ列＃２１においては、ＥＣＣ用データを省略している。また、図４（Ａ）において、スイッチＳＷは、データ列＃２１において、先頭のアドレスにおける先頭の１ビットに対応するスイッチと、最後のアドレスにおける最後の１ビットに対応するスイッチのみを示す。
【０１１１】
バススイッチ３１のスイッチング速度が遅いので、図４（Ｂ）に示すように、データ列＃１２の読出しのタイミングとなっても、データ列＃１２の先頭のアドレスにおける先頭の１ビットに対応するスイッチＳＷが、接地電位に接続された状態である。これにより、データ列＃２２においても、先頭のアドレスにおける先頭の１ビットの値が「０」とされる。
【０１１２】
この後、バススイッチ３１において、データ列＃１２の先頭のアドレスにおける先頭の１ビットに対応するスイッチＳＷが、クランプ状態から、当該スイッチＳＷの入力をそのまま出力する通過状態に切替えられる。これにより、データ列＃１２の先頭のアドレスにおける先頭の１ビットに対応するスイッチＳＷは、当該スイッチＳＷの入力をそのまま出力する。
【０１１３】
従って、例えば、データ列＃１１の読出しのタイミングとなると、データ列＃１３の先頭のアドレスにおける先頭の１ビットの値「０」は、図４（Ｃ）に示すように、「０」にクランプされずに、スイッチＳＷをそのまま通過する。これにより、データ列＃２３において、先頭のアドレスにおける先頭の１ビットの値が「０」のままとされる。
【０１１４】
図５は、データエラーの処理の説明図である。
【０１１５】
図５に示すように、ＤＩＭＭ４から読み出されたデータ列＃１１〜データ列＃１４の各々は、擬似故障ツール３に入力される。
【０１１６】
ここで、前述したように、擬似故障ツール３によるビットクランプ操作が実行される。具体的には、例えば、先頭のデータ列＃２１において、図３のクランプ後のリードデータに示すように、先頭のアドレスの先頭の１ビットが、本来のデータの値に拘らず、接地電位にクランプされる。これにより、結果的に、データ列＃２１は、１ビットのビットエラーを含むことになる。換言すれば、データ列＃２１は、１ビットのビットエラーを含む擬似故障データとされる。この１ビットのビットエラーは、実際のソフトエラーの代わりに発生させられた擬似的なエラーである。
【０１１７】
この時、クランプ期間は、図３に示すように、データ列＃１１が出力される期間よりも長いので、データ列＃２１に続けて読み出されるデータ列＃２２において、図３のクランプ後のリードデータに示すように、先頭のアドレスの先頭の１ビットが、接地電位にクランプされる。
【０１１８】
しかし、前述したように、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は、元々「０」である。従って、「０」にクランプされても、データ列＃１２の先頭のアドレスにおける先頭の１ビットの値は「０」で変化せず、クランプの影響はない。従って、データ列＃２２においては、先頭のアドレスにおける先頭の１ビットが「０」にクランプされるが、１ビットのビットエラーを含むことにはならない。この結果、擬似故障データ列＃２２は生成されるが、生成された擬似故障データ列＃２２は、元のデータ列＃２２と等しい。従って、擬似故障データ列＃２２は生成されないに等しい。
【０１１９】
残りのデータ列＃２３〜データ列＃２４は、図３のクランプ期間に示すように、クランプ期間の終了後に読み出される。従って、残りのデータ列＃２３〜データ列＃２４は、図３のクランプ後のリードデータに示すように、クランプされずに、本来のデータの値のままとされる。換言すれば、残りのデータ列＃２３〜データ列＃２４は、そのままマザーボードのメモリコントローラに入力される。
【０１２０】
メモリコントローラ１７は、ＥＣＣ回路１８において、データ列＃３１〜データ列＃３４について、各々に含まれるＥＣＣ用データを用いて、２ビットのエラー検出及び１ビットのエラー訂正を実行して、誤りを訂正した６４ビットのデータをＣＰＵに入力する。図１の例では、メモリコントローラ１７は、ＥＣＣ回路１８において、データ列＃３１に含まれる１ビットのビットエラーを訂正して、訂正されたデータ列＃３１’を生成する。一方、メモリコントローラ１７は、データ列＃３２にはビットエラーが含まれないので、データ列＃３２についてはビットエラーの訂正は実行しない。
【０１２１】
メモリコントローラ１７は、訂正したデータ列＃３１’及びデータ列＃３２〜データ列＃３４をＣＰＵ１１に入力する。また、メモリコントローラ１７は、ＥＣＣエラー＃５１を、例えばＢＩＯＳ１３に報告する。換言すれば、メモリコントローラ１７は、データ列＃３１の１ビットのビットエラーを訂正したことを、報告する。ＢＩＯＳ１３は、メモリコントローラ１７からの受信した報告を、エラーログとして保持する。これにより、前述したように、「ソフトエラー（１回のみのエラー）に対して１回のＥＣＣ訂正が行なわれ、１回のエラーログが報告される」ことが、正しく実行されたことが確認される。
【０１２２】
図６は、データエラー擬似発生処理のフローチャートである。
【０１２３】
擬似故障処理プログラムが、主メモリであるＤＩＭＭ４において、予め定められた物理アドレスを有する格納領域４１についてメモリマップし（ステップＳ１）、この後、メモリマップされた物理アドレスを有する格納領域４１に予め定められたテストデータ５１を書き込む（ステップＳ２）。これにより、ＤＩＭＭ４において、予め定められたアドレスにテストデータ５１が格納される。
【０１２４】
擬似故障処理プログラムが、キャッシュ処理部１６を制御して、ＤＩＭＭ４において、リードエリアとしてキャッシュメモリ１９のメモリ容量以上のサイズの領域（仮想メモリ）を獲得する（ステップＳ３）。
【０１２５】
獲得した仮想メモリの内容を読出して、キャッシュメモリ１９上の領域（ダミー領域）にコピーし（ステップＳ４）、ステップ５を繰り返す。これにより、キャッシュメモリ１９にコピーされたテストデータ５１がキャッシュメモリ１９から追い出される。
【０１２６】
擬似故障処理プログラムが、読出処理部１５を制御して、予め定められた物理アドレスから、予め定められたテストデータ５１を読み出す（ステップＳ５）。予め定められたアドレスからテストデータ５１が、キャッシュメモリ１９ではなく、ＤＩＭＭ４から読み出される。
【０１２７】
以上は、メモリコントローラ１７が、ＥＣＣ回路１８において、データ列＃３１に含まれる１ビットのビットエラーを訂正して、訂正されたデータ列＃３１’を生成する例である。
【０１２８】
しかし、メモリコントローラ１７が、ＥＣＣ回路１８において、データ列＃３１に含まれるＥＣＣ用データを用いて、２ビットのエラー検出を実行して、検出したエラーをＢＩＯＳに報告するようにしても良い。
【０１２９】
この場合、第１のデータ列であるデータ列＃１１は、２ヶ所の予め定められたビット位置に、第１の値、例えば「１」を有するようにされる。また、第２のデータ列であるデータ列＃１２〜データ列＃１４は、２ヶ所の予め定められたビット位置に、第２の値、例えば「０」を有するようにされる。
【０１３０】
また、擬似故障ツール３において、２ヶ所の予め定められたビット位置に対応するスイッチが、クランプ状態に切替えられる。
【０１３１】
擬似故障処理プログラムがデータ列＃１１をＤＩＭＭ４から読み出すと、擬似故障ツール３は、読出したデータ列＃１１において、２ヶ所の予め定められたビット位置の第１の値を、各々、第２の値、例えば「０」にクランプする。これにより、２ビットのビットエラーを含む、データ列＃１１についての擬似故障データが生成される。
【０１３２】
この後、擬似故障処理プログラムが、第２のデータ列であるデータ列＃１２〜データ列＃１４をＤＩＭＭ４から読み出す。擬似故障ツール３は、データ列＃１２〜データ列＃１４の読出しと並列して、複数の予め定められたビット位置に対応するスイッチを、クランプ状態から、通過状態に切替える。
【０１３３】
この結果、擬似故障ツール３は、読出したデータ列＃１２〜データ列＃１４において、２ヶ所の予め定められたビット位置に対応するスイッチがクランプ状態である場合には、２ヶ所の予め定められたビット位置の第２の値「０」を、各々、第２の値「０」にクランプし、２ヶ所の予め定められたビット位置に対応するスイッチが通過状態である場合には、２ヶ所の予め定められたビット位置の第２の値「０」を、各々、そのまま通過させる。これにより、データ列＃１２〜データ列＃１４が出力される。
【０１３４】
これにより、メモリコントローラ１７は、ＥＣＣ回路１８において、データ列＃３１に含まれるＥＣＣ用データを用いて、２ビットのエラー検出を実行して、検出したエラーをＢＩＯＳに報告することができる。
【０１３５】
なお、データ列＃１１〜データ列＃１４において、第１の値を有する、予め定められたビット位置の数は、２ヶ所に限られず、３ヶ所以上の複数であっても良い。
【符号の説明】
【０１３６】
１    サーバ
３    擬似故障ツール
４    ＤＩＭＭ
５    ディスク
１１    ＣＰＵ
１２    ＯＳ
１３    ＢＩＯＳ
１４    擬似故障処理部
１５    読出処理部
１６    キャッシュ処理部
１７    メモリコントローラ
１８    ＥＣＣ回路
１９    キャッシュメモリ
２１    データバス
２２    アドレスバス
２３    コントロールバス
３１    バススイッチ
３２    アドレス判定部
５１    テストデータ
【図１】
0005510107.tif 000002
【図２】
0005510107.tif 000003
【図３】
0005510107.tif 000004
【図４】
0005510107.tif 000005
【図５】
0005510107.tif 000006
【図６】
0005510107.tif 000007
【図７】
0005510107.tif 000008
【図８】
0005510107.tif 000009
【図９】
0005510107.tif 000010
【図１０】
0005510107.tif 000011
【図１１】
0005510107.tif 000012
【図１２】
0005510107.tif 000013
【図１３】
0005510107.tif 000014