(57)【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとエラー訂正機能を有するメモリコントローラとを備えた電子機器であって、
前記ＣＰＵから前記メモリコントローラを介して前記メモリに書込まれたデータに基づき検出したメモリエラーの発生回数Ｎを計数するカウンタを備え、
前記ＣＰＵは、前記メモリエラーの発生回数Ｎが所定回数Ｔを超えた（Ｎ＞Ｔ）とき、訂正可能な種別によるメモリエラーの発生回数Ｎの前記カウンタによる計数を禁止し、メモリエラーの発生の有無を判定し、メモリエラーの発生が無いと判定されたとき、前記メモリエラーは訂正可能な種別と判定し、前記カウンタによる計数の禁止を解除して前記メモリエラーの発生回数を再び計数し、前記メモリエラーの発生回数Ｎが閾値ＴＨ以上（Ｎ≧ＴＨ）になったとき、メモリは不良であると判定する電子機器。
【請求項２】
前記メモリに書込まれたデータは前記メモリを複数に分割したメモリ領域に順次書込まれ、
前記カウンタは順次書込まれた前記メモリ領域毎に該メモリ領域内の最初のメモリ領域から最終メモリ領域へ向けて前記メモリエラーの発生回数を累積計数する、
請求項１に記載の電子機器。
【請求項３】
前記メモリを複数に分割したメモリ領域を細分化し、細分化したメモリ領域毎にメモリエラーの発生を前記分割したメモリ領域毎に検出し、前記メモリエラーの発生回数Ｎを更新する、
請求項１または２に記載の電子機器。
【請求項４】
前記ＣＰＵにより実行される前記判定のためのプログラムが、前記メモリの空き領域に記憶されている、
請求項１乃至３の何れか１項に記載の電子機器。
【請求項５】
前記ＣＰＵは、ハードウェア初期化時に前記判定を行なう、
請求項１乃至４の何れか１項に記載の電子機器。
【請求項６】
ＣＰＵとメモリとエラー訂正機能を有するメモリコントローラとを備えた電子機器における不良メモリ検出方法であって、
前記ＣＰＵから前記メモリコントローラを介して前記メモリに書込まれたデータを読取り、
読取ったデータ内におけるメモリエラーの発生の有無を判定し、
前記メモリエラーの発生有りと判定されたとき、
前記メモリエラーの発生回数Ｎが所定回数Ｔを超えた（Ｎ＞Ｔ）と判定されたときには、訂正可能な種別によるメモリエラーの発生回数Ｎの計数を禁止し、
前記メモリエラーの発生の有無を再び判定して前記メモリエラーの発生が無しと判定されたときには、前記メモリエラーは訂正可能な種別と判定して前記カウンタによる計数の禁止を解除し、
前記メモリに書込まれたデータを再び読取り、
読取ったデータ内におけるメモリエラーの発生の有無を判定し、
前記メモリエラーの発生有りと判定されたときに、前記メモリエラーの発生回数Ｎを更新し、
前記メモリエラーの発生回数Ｎが閾値ＴＨ以上（Ｎ≧ＴＨ）になったときメモリは不良であると判定する、
不良メモリ検出方法。
【請求項７】
ＣＰＵとメモリとエラー訂正機能を有するメモリコントローラとを備えた電子機器において、前記メモリ上にロードされる不良メモリ検出用プログラムであって、
前記ＣＰＵから前記メモリコントローラを介して前記メモリに書込まれたデータを読取り、
読取ったデータ内におけるメモリエラーの発生の有無を判定し、
前記メモリエラーの発生有りと判定されたとき、
前記メモリエラーの発生回数Ｎが所定回数Ｔを超えた（Ｎ＞Ｔ）と判定されたときには、訂正可能な種別によるメモリエラーの発生回数Ｎの計数を禁止し、
前記メモリエラーの発生の有無を再び判定して前記メモリエラーの発生が無しと判定されたときには、前記メモリエラーは訂正可能な種別と判定して前記カウンタによる計数の禁止を解除し、
前記メモリに書込まれたデータを再び読取り、
読取ったデータ内におけるメモリエラーの発生の有無を判定し、
前記メモリエラーの発生有りと判定されたときに、前記メモリエラーの発生回数Ｎを更新し、
前記メモリエラーの発生回数Ｎが閾値ＴＨ以上（Ｎ≧ＴＨ）になったときメモリは不良であると判定する、
各ステップをコンピュータの前記ＣＰＵに実行させる不良メモリ検出用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不良メモリを検出する電子機器、不良メモリ検出方法および不良メモリ検出用プログラムに関する。
【背景技術】
【０００２】
一般的に、信頼性を重視するサーバにおいては、ECC（Error Check and Correct）機能を有するメモリが搭載されている。ECCメモリは、メモリ64bit（8Byte）につき8bit（1Byte）の誤り訂正用データを対応させ、64bit（8Byte）のうち1bitが誤った値となったとき、これを検出し訂正する機能をもつ。このときのエラーはコレクタブルECCエラー（Correctable ECC Error）と呼ばれている。また同時に2bit以上の誤った値となったときは、訂正することはできないが誤りが発生したことを検出することはできる。このときのエラーはアンコレクタブルECCエラー（Uncorrectable ECC Error）と呼ばれている。
【０００３】
Uncorrectable ECC Error発生の場合には当然メモリ交換を実施する必要がある。一方、Correctable ECC Error発生の場合にはデータは訂正されるものの、複数回Correctable ECC Errorが発生した場合にはメモリの品質が疑われる。このため、一定回数以上のCorrectable ECC Error発生によってメモリ交換を実施する必要がある。つまり、Correctable ECC Errorが一定回数以上となるとハードウェアエラーとして扱いたい。それゆえ、エラー発生回数はハードウェアエラー、特に不良メモリを検出するための重要な情報となっている。
【０００４】
従来技術におけるメモリエラー発生時のハードウェア動作はメモリエラー発生ごとにソフトウェアにトラップを発生させ、つまりメモリエラー発生ごとにＣＰＵに割り込みをかけＣＰＵにエラー処理用のトラッププログラムを実行させるものであった。このため、エラーが連続して発生した場合には正しいメモリエラーの発生回数を知ることができないという問題があった。
【０００５】
【特許文献１】特開平２−２４４３３９号公報（明細書の［請求項１］および図面の［図１］参照）。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の問題を解決するための方法として、エラーが連続して発生しても、そのエラー情報を記憶する機能をもつハードウェアがある。この機能はメモリエラー統計機能と呼ばれている。統計機能を有するハードウェアは、一般的に有限回数（Ｔ＋１）回のエラーをカウントできる。ただし、エラー種別（Correctable ECC Error or Uncorrectable ECC Error）は所定回数であるＴ回目のエラーまでしか知ることができない。よって、有限回数(Ｔ+1)回以上のエラーが連続して発生したとき、エラー発生については検出できるが、そのエラー種別（Correctable ECC Error or Uncorrectable ECC Error）は判別できないので、エラーが連続して発生した場合には正しいメモリエラーの発生回数を知ることができないという問題がある。
【０００７】
上記特許文献１に記載の主記憶の障害解析回路は、訂正可能エラー検出回路群１と訂正不可能エラー検出回路群２を有するが、有限回数（Ｔ＋１）回以上のエラーが連続して発生したとき、エラー発生については検出できるが、そのエラー種別は判別できないので、エラーが連続して発生した場合には正しいメモリエラーの発生回数を知ることができないので正確な不良メモリの検出ができないという問題がある。
【０００８】
本発明は、上記問題を解決するためになされたものであり、メモリエラー統計機能を有するハードウェアを使って得られたメモリエラーの種別をメモリエラーの発生回数の計数に反映させてメモリエラー発生回数を正確に計数しこの発生回数からメモリの品質をチェックし不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成する不良メモリを検出する電子機器は、ＣＰＵとメモリとエラー訂正機能を有するメモリコントローラとを備えた電子機器であって、ＣＰＵからメモリコントローラを介してメモリに書込まれたデータに基づき検出したメモリエラーの発生回数Ｎを計数するカウンタと、メモリエラーの発生回数Ｎが所定回数Ｔを超えた（Ｎ＞Ｔ）とき、訂正可能な種別によるメモリエラーの発生回数Ｎの前記カウンタによる計数を禁止し、メモリエラーの発生の有無を判定し、メモリエラーの発生が無いと判定されたとき、メモリエラーは訂正可能な種別と判定し、カウンタによる計数の禁止を解除してメモリエラーの発生回数を再び計数し、メモリエラーの発生回数Ｎが閾値ＴＨ以上（Ｎ≧ＴＨ）になったとき、メモリは不良であると判定する処理部と、を備える。
【００１０】
上記目的を達成する不良メモリ検出方法およびそのためのプログラムも上記電子機器と同様な構成を備える。
【発明の効果】
【００１１】
上記構成により、メモリエラーの発生回数Ｎが所定回数Ｔ回を超えて（Ｎ＞Ｔ）連続して発生した場合でも、そのエラー種別（Correctable ECC Error or Uncorrectable ECC Error）を判別することができるので正確な不良メモリの検出が可能となる。
【発明を実施するための最良の形態】
【００１２】
図１は一実施形態に係る不良メモリ検出装置のブロック構成図である。図１に示す不良メモリ検出装置（以下、検出装置と記す）１は、ＣＰＵ１１、ダイナミックラム（ＤＲＡＭ）１２、ＥＣＣ機能、すなわちエラー訂正機能を有するメモリコントローラ１３、スタティックラム（ＳＲＡＭ）１４、フラッシュロム(ＦＲＯＭ)１５、キーボード１６およびディスプレイ１７等を有する電子機器である。フラッシュメモリはフラッシュＲＯＭまたはフラッシュＥ2ＰＲＯＭとも言われデータの書込／読取が自由にでき電源を切ってもデータを保存できる不揮発性メモリである。
【００１３】
メモリコントローラ１３にはテストするＤＲＡＭ（以下、単にメモリと記す）１２のメモリ領域にエラーが検出されたときに記録されるECC Errorに関するデータを格納するレジスタ１３０が設けられている。メモリコントローラ１３は、メモリ１２に１MBのデータ（テストパターン）を書込み、後述する処理部１５０により書込まれたテストパターンが読取られるとテストパターンにエラーが有るか無いかをチェックする。
【００１４】
ＳＲＡＭ１４にはカウンタ１４０が設けられている。カウンタ１４０はメモリ１２内の空き領域、すなわちテスト対象のメモリ領域を除くメモリ１２内の領域に設けてもよい。
【００１５】
ＦＲＯＭ１５には処理部１５０が設けられている。処理部１５０はメモリ１２の空き領域、すなわちテスト対象のメモリ領域を除くメモリ１２内の領域に設けてもよく、この場合は処理速度を速くすることができる。また、処理部１５０は処理部１５０の動作を実行するプログラムを格納可能な容量サイズを有するＳＲＡＭ１４に設けてもよく、この場合は処理速度をさらに速くすることができる。
【００１６】
カウンタ１４０はＣＰＵ１１からメモリコントローラ１３を介してメモリ１２を複数に分割したメモリ領域に書込まれたデータ（テストパターン）内で検出されたメモリ領域内のメモリエラーの発生回数Ｎを複数のメモリ領域のうちの最初のメモリ領域から最終のメモリ領域に向けて計数する。ここで、メモリエラーは訂正可能な種別と訂正不能な種別とを含む。
【００１７】
処理部１５０は図２Ａおよび図２Ｂに示すフローチャートにしたがい処理を実行する。
図２Ａは図１に示す不良メモリ検出装置における処理部が実行する処理を示すフローチャートである。図２Ｂは図２Ａに示すフローチャートのステップＳ２６０の詳細を示すフローチャートである。フローチャートにおいてＳに続く数字はステップ番号を示す。
【００１８】
最初に、処理部１５０が実行する主要な処理を説明する。
ステップＳ１１：メモリ１２の全メモリ領域を複数に分割したメモリ領域のうちのテスト対象のメモリ領域（以下、単にテスト領域と記す）毎に、メモリエラーの発生回数Ｎが所定回数Ｔを超えた（Ｎ＞Ｔ）か否かを判定し、メモリエラーの発生回数Ｎが、所定回数Ｔを超えたＮ＞Ｔと判定されたとき、メモリエラーは訂正可能な種別と訂正不能な種別とを識別可能であると判定する。
【００１９】
ステップＳ２１：ステップＳ１１でＮ＞Ｔと判定された後に、訂正可能な種別によるメモリエラーの発生回数Ｎのカウンタ１４０による計数を禁止する。
ステップＳ２２：レジスタ１３０に格納されているデータであるHWエラー情報をクリアする。
ステップＳ２３：所定回数Ｔを超えたＮ＞Ｔと判定されたテスト領域を再び読取る。
【００２０】
ステップＳ２４：ステップＳ２３で読取ったテスト領域内におけるメモリエラーの発生の有無を判定し、テスト領域内にメモリエラーの発生が無いと判定されたとき、メモリエラーは訂正可能な種別と判定し、ステップＳ２５に進む。
ステップＳ２５：カウンタ１４０による計数の禁止を解除する。
ステップＳ２６：テスト領域を細分化したブロック毎にメモリエラーの発生回数Ｎを再び計数する。
【００２１】
ステップＳ１４：計数したメモリエラーの発生回数Ｎが閾値ＴＨ以上（Ｎ≧ＴＨ）になったときメモリは不良であると判定する。
以上のステップＳ１１、Ｓ２１〜Ｓ２６、Ｓ１４をテスト領域毎に順次実行することによりメモリ１２全領域のエラー判定を行う。
【００２２】
これより、図２Ａおよび図２Ｂに示すフローチャートを詳細に説明する。
処理部１５０が実行する全処理をステップＳ１から順に説明する。
まず、ステップＳ１を実行する前の初期時にＣＰＵ１１からメモリコントローラ１３を介してメモリ１２のテスト対象のメモリ領域にテストパターンのデータを書込む。
【００２３】
図２Ａを参照してフローチャートを詳細に説明する。
ステップＳ１で、例えばメモリ１２の容量が256MBの場合、メモリ１２の全領域256MBの内、メモリ１２内において、最初は0〜1MBのテスト領域、次はステップＳ３でNOと判定される毎に1〜2MB、2〜3MB、3〜4MB、4〜5MB、…、255〜256MBのテスト領域を順次読取る。より詳しくは、第１回目のテスト領域が0〜1MBであればステップＳ３でNOと判定される毎に第２回目のテスト領域1〜2MBの領域を読取り、同様に第３回目のテスト領域2〜3MB、第４回目のテスト領域3〜4MB、第５回目のテスト領域4〜5MB、…、最後のテスト領域255〜256MBを順次読取る。
【００２４】
ステップＳ２で、ステップＳ１において読取られたテスト領域にECC Errorが発生したか否かを判定し、判定結果がNOのときはステップＳ３に進み、判定結果がYESのときはステップＳ１１に進む。このECC Errorが発生したか否かを示すデータは、メモリコントローラ１３内のレジスタ１３０に格納されている。
【００２５】
図３はメモリコントローラ１３内のレジスタ１３０に格納されるデータを示す図である。図３の（Ａ）はECC Errorの発生を示すデータを格納するレジスタを示し、図３の（Ｂ）はECC Errorの詳細を示すデータを格納するレジスタを示す。図３の（Ａ）に示されるように第１回目のECC Errorの発生および第２回目のECC Errorの発生が有ったことを示すデータがレジスタ１３０に格納される。一方、図３の（Ｂ）に示されるようにECC Errorの詳細はECC ErrorのAddressおよびType（種別）等を含む。ECC ErrorはCorrectable ECC ErrorとUncorrectable ECC Errorの２つの種別に分けられる。また、レジスタ１３０に格納されるデータをHWエラー情報と呼ぶ。ECC Errorの詳細にはメモリのどのビットが不良であるかを示すデータ、およびメモリコントローラ１３のＣＰＵ１１側かメモリ１１側かを示すデータもある。
【００２６】
再び、図２Ａに示すフローチャートに戻る。
ステップＳ３で、ステップＳ２においてNO、すなわちECC Errorが発生していない、と判定された後、テスト領域が、最終ブロックか否かを判定し、すなわち全領域0〜256MBの内の255〜256MBの最終領域か否かを判定し、判定結果がYESのときは本ルーチンを終了し、判定結果がNOのときはステップS4に進み、1〜2MB、2〜3MB、3〜4MB、4〜5MB、…、255〜256MBのテスト領域に対し順次ステップＳ１〜Ｓ４を実行する。
【００２７】
ステップＳ４で、メモリコントローラ１３内のレジスタ１３０に格納されているHWエラー情報をクリアする。ステップＳ４の実行後、ステップＳ１に戻り、ステップＳ１で次のテスト領域を読取る。
【００２８】
ステップＳ１１で、前述した処理部１５０が実行する主要な処理ステップＳ１１を実行する。ステップＳ１１では、ステップＳ２においてYES、すなわちECC Errorが発生した、と判定された後、エラー検出の発生回数ＮがＴ回を超えたか否かを判定し、判定結果がNOのときステップＳ１２に進み、判定結果がYESのとき、例えばECC Errorが2回発生したと判定されたときステップＳ２１に進む。この発生回数はメモリコントローラ１３がメモリエラー統計機能付きであるので計数可能であり、発生回数Ｎはカウンタ１４０に格納される。
【００２９】
ステップＳ１１において、図３の（Ａ）に示される１回目のエラーが発生したECC ERROR 0は、Correctable or Uncorrectableを判定可能とする。これはCorrectable or Uncorrectableのエラー種別の情報が図３の（Ｂ）に示すレジスタ１３０に格納されているからである。しかし、図３の（Ａ）に示される２回目のエラーが発生したECC ERROR 1はCorrectable or Uncorrectableを判定できない。これはCorrectable or Uncorrectableのエラー種別の情報が図３の（Ｂ）に示すレジスタ１３０に格納されていないためである。
【００３０】
ステップＳ１２で、ECC ErrorのType(種別)、すなわちCorrectableかUncorrectableかを判定し、判定結果がNOのときはステップＳ１３に進み、判定結果がYESのときはメモリ１２が修正不能と判定されたのでステップＳ１６に進む。
ステップＳ１３で、カウンタ１４０の計数値、すなわちCorrectable ECC Error発生回数Ｎを更新（＝１）し、ステップＳ１４に進む。
【００３１】
ステップＳ１４で、Correctable ECC Error発生回数Ｎが所定回数、例えば５回を超えたか否かを判定し、判定結果がYESのときはメモリ１２の品質を疑い不良メモリと判定しステップＳ１５に進み、判定結果がNOのときはステップＳ３に進む。
【００３２】
ステップＳ１５で、ステップＳ１４においてCorrectable ECC Error発生回数Ｎが所定回数５を超えたと判定された後に「Correctable ECC Error多発ゆえメモリを交換せよ」というメッセージをディスプレイ１７の画面上に表示し、不良メモリを検出するテストを終了する。不良メモリ検出装置のユーザはこの表示を見てメモリ１２を交換する。
【００３３】
ステップＳ１６で、ステップＳ１２においてYESと判定された後に、「Uncorrectable ECC Errorゆえメモリを交換せよ」というメッセージをディスプレイ１７の画面上に表示し、不良メモリを検出するテストを終了する。不良メモリ検出装置のユーザはこの表示を見てメモリ１２は修正不能ゆえ即座に交換する。
【００３４】
ステップＳ２１〜Ｓ２６で、前述した処理部１５０が実行する主要な処理ステップＳ２１〜Ｓ２６を実行する。
ステップＳ２１で、ステップＳ１１でＮ＞Ｔと判定された後に、Correctable ECC Errorの検出、すなわち訂正可能な種別によるメモリエラーの発生回数Ｎのカウンタ１４０による計数を禁止する。このCorrectable ECC Errorの検出を禁止する機能はメモリコントローラ１３が持っている機能である。
【００３５】
ステップＳ２２でレジスタ１３０に格納されているデータであるHWエラー情報をクリアする。
ステップＳ２３で所定回数Ｔを超えたＮ＞Ｔと判定されたテスト領域、すなわちステップＳ１において読取ったテスト領域を再び読取る。
【００３６】
ステップＳ２４：ステップＳ２３で読取ったテスト領域内におけるメモリエラーの発生の有無を判定し、テスト領域内にメモリエラーの発生が無いと判定されたとき、メモリエラーは訂正可能な種別と判定し、ステップＳ２５に進み、判定結果がYESのときはステップＳ４１に進む。ここでCorrectable ECC Errorの検出を禁止するようにCorrectable ECC ErrorをマスクしているのでECC Errorは発生しないことに注意すべきである。
【００３７】
ステップＳ２５でCorrectable ECC Error検出の禁止、すなわちカウンタ１４０による計数の禁止を解除し、ステップＳ２６０に進む。
ステップＳ２６０でテスト領域を細分化したブロック毎にメモリエラーの発生回数Ｎを再び計数する。
【００３８】
ステップＳ２６０ではテスト領域を細分したブロック毎にCorrectable ECC Error発生回数を計数し、カウンタ１４０の計数値に相当するCorrectable ECC Error発生回数Ｎを更新する。図２Ｂに示すようにステップＳ２６０はステップＳ２６、Ｓ２７、Ｓ２８、Ｓ３１、Ｓ３２からなる。以下、これらのステップについて図２Ｂを参照しつつ説明する。
【００３９】
ステップＳ２６で、テスト領域の内8Byte（64bit）分を読取る。例えば、テスト領域が0〜1MBであれば0 MB〜0 MB + 8Byte分、1〜2MBであれば1 MB〜1 MB + 8Byte分、2〜3MBであれば2 MB〜2 MB + 8Byte分、3〜4MBであれば3 MB〜3 MB + 8Byte分、4〜5MBであれば4 MB〜4 MB + 8Byte分をそれぞれ読取る。
ステップＳ２７で、ECC Errorが発生したか否かを判定し、判定結果がNOのときはステップＳ２８に進み、判定結果がYESのときはステップＳ３１に進む。ECC Errorが発生したか否かのHWエラー情報はレジスタ１３０に格納されている。
【００４０】
ステップＳ３１で、ステップＳ２７においてECC Errorが発生していると判定された後にCorrectable ECC Error発生回数を更新し、ステップＳ３２に進む。
ステップＳ３２で、レジスタ１３０に格納されているHWエラー情報をクリアし、ステップＳ２８に進む。
【００４１】
ステップＳ２８で、テスト領域が、1MBの最終ブロック、すなわち1MBの最終のn×8Byteのブロックか否かを判定し、判定結果がYESのときはＳ１４に進み、判定結果がNOのときはステップＳ２６に戻る。このように、ステップＳ２６、Ｓ２７、Ｓ２８またはＳ２６、Ｓ２７、Ｓ３１、Ｓ３２、Ｓ２８をテスト領域が最終のn×8Byteのブロック(この例では1MByte- n×8Byte〜1MByte)になるまで繰り返す。
【００４２】
再び図２Ａに戻る。
ステップＳ４１で、ステップＳ２４においてECC Errorが発生したと判定された後、検出したエラーはUncorrectable ECC Errorゆえ「Uncorrectable ECC Errorゆえメモリを交換せよ」というメッセージをディスプレイ１７の画面上に表示した後、不良メモリを検出するテストを終了する。
【００４３】
図４は図１に示す処理部１５０でテストするメモリ領域の具体例を示す図である。図４に示すメモリのメモリ領域の具体例は、全メモリ領域が１GB、すなわち１０２４MBであり、0〜1MB、1〜2MB、2〜3MB、3〜4MB、4〜5MB、…、1023〜1024MBの各メモリ領域において、☆で示すCorrectable ECC Errorの第１回目が0〜1MBに、第２、３回目が1〜2MBに、第４〜８回目が3〜4MBに発生する例を示している。
【００４４】
フローチャートの理解を容易にするため、ここでは、テストするメモリ領域(合計サイズ)を1024MByte（1GByte）とし、所定回数Ｔ＝１とし、Correctable ECC Error多発によるメモリ交換の閾値ＴＨ＝5とする、すなわちCorrectable ECC Errorの発生回数Ｎが閾値ＴＨの５回に達したときメモリは不良であると判定する具体例を用いて以下に説明する。
【００４５】
まず、ステップＳ１を実行する前の初期時にＣＰＵ１１からメモリコントローラ１３を介してメモリ１２のテストするメモリ領域にテストパターンのデータを書込む。
【００４６】
ステップＳ１で、最初にテスト領域の内、0〜1MBの領域を読取る。
ステップＳ２で、図４に示されるように、ステップＳ１において読取られたテスト領域0〜1MBにECC Errorが発生しているのでステップＳ１１に進む。
ステップＳ１１で、図４に示されるように、テスト領域0〜1MBにおけるECC Errorの発生回数が１回であり、所定回数Ｔを超えていないのでステップＳ１２に進む。
【００４７】
ステップＳ１２で、１回目のエラーが Correctable or Uncorrectableを判定する。Correctable or Uncorrectableのエラーの種別を示すデータは図３の（Ｂ）に示されるようにレジスタ１３０に格納されている。この例ではエラーの発生回数Ｎが１回であるのでCorrectable ECC Errorと判定し、ステップＳ１３に進む。
【００４８】
ステップＳ１３で、カウンタ１４０の計数値、すなわちCorrectable ECC Error発生回数Ｎが現在０であるから０に１を加算する。
ステップＳ１４で、この時点で、Correctable ECC Error発生回数Ｎ＝1となっており閾値ＴＨ＝５を超えていないのでステップＳ３に進む。
【００４９】
ステップＳ３でテスト領域0〜1MBが最終ブロック1023MB〜1024MBか否かを判定し、判定結果がNOであるのでステップＳ４に進みHWエラー情報をクリアし、ステップS1に戻り、次のテスト領域1〜2MBを読取る。
【００５０】
図４に示されるように、テスト領域1〜2MBにはCorrectable ECC Errorが２回発生しているので、ステップＳ２でYESとなり、ステップＳ１１でテスト領域1〜2MBにおけるECC Errorの発生回数が２回であり、所定回数Ｔを超えたのでYESとなり、ステップＳ２１に進む。
【００５１】
次いで、ステップＳ２１でCorrectable ECC Errorの計数を禁止し、ステップＳ２２、Ｓ２３、Ｓ２４を実行する。ステップＳ２１でCorrectable ECC Errorの計数を禁止したのでステップＳ２４ではECC Errorは発生しないと判定され、ステップＳ２５に進む。
【００５２】
ステップＳ２５で、Correctable ECC Errorの計数の禁止を解除するのでステップＳ２６実行後のステップＳ２７におけるCorrectable ECC Errorの発生有無の判定でYESとなり、ステップＳ３１に進みCorrectable ECC Errorの発生回数Ｎを現在の１に２加算して３とする。
【００５３】
次いで、ステップＳ３２、ステップＳ２８を実行し、テスト領域1〜2MBの最終のN×６４ビットのブロックになるまでステップＳ２６、Ｓ２７、Ｓ３１、Ｓ３２、Ｓ２８を実行した後、ステップＳ２８でYESと判定され、ステップＳ１４に進む。
【００５４】
ステップＳ１４で、この時点で、Correctable ECC Error発生回数Ｎ＝３となっており閾値５を超えていないのでステップＳ３に進む。
【００５５】
ステップＳ３でテスト領域2〜3MBが最終ブロック1023MB〜1024MBか否かを判定し、判定結果がNOであるのでステップＳ４に進みHWエラー情報をクリアし、ステップＳ１に戻り、次のテスト領域2〜3MBを読取る。
【００５６】
図４に示されるように、テスト領域2〜3MBにはCorrectable ECC ErrorおよびUncorrectable ECC Error発生していないので、ステップＳ２でNOとなり、ステップＳ３に進む。同様に、ステップＳ３でテスト領域2〜3MBが最終ブロック1023MB〜1024MBか否かを判定し、判定結果がNOであるのでステップＳ４に進みHWエラー情報をクリアし、ステップＳ１に戻り、次のテスト領域3〜4MBを読取る。
【００５７】
図４に示されるように、テスト領域3〜4MBにはCorrectable ECC Errorが５回発生しているので、テスト領域1〜2MB同様に、ステップＳ２でYESとなり、ステップＳ１１でテスト領域1〜2MBにおけるECC Errorの発生回数が２回であり、所定回数Ｔを超えたのでYESとなり、ステップＳ２１に進む。次いで、テスト領域1〜2MB同様に、ステップＳ２２〜Ｓ２８を実行し、ステップＳ１４に進む。
【００５８】
ステップＳ１４で、この時点で、Correctable ECC Error発生回数Ｎ＝8となっており閾値５を超えているのでステップＳ１５に進む。
【００５９】
ステップＳ１５で、ステップＳ１２において検出エラーはCorrectable ECC Errorであると判定されたので、「Correctable ECC Error多発ゆえメモリを交換せよ」というメッセージをディスプレイ１７の画面上に表示し、テスト領域4〜5MB以降のメモリ領域のテストをせずに不良メモリを検出するテストを終了する。
【００６０】
上述した実施形態に係る不良メモリ検出装置によれば以下のことが可能となる。
第１に、高速なメモリECCテストが可能となる。一般的に、HWエラー情報にアクセスするのに時間がかかる。実施形態の不良メモリ検出装置によれば、テスト領域1MB毎にECC Errorが発生しない場合、1MB毎にしかHWエラー情報にアクセスしないので高速に不良メモリを検出できる。なお、このテスト領域のサイズは自由に変更可能である。
【００６１】
第２に、(N+1)回以上のエラーが連続して発生した場合でも、そのエラー種別（Correctable ECC Error or Uncorrectable ECC Error）を判別できる。
第３に、Correctable ECC Errorの発生回数を正確に計数できる。
【００６２】
また、メモリECCテストは通常ハードウェア初期化時に行われる。ここで、LAN初期化など待ち時間が多い処理の実行中に、バックグラウンドプロセスでメモリECCテストを行うことで処理時間の短縮を図ることができる。ここで、バックグラウンドプロセスとは複数のプロセスを並行して実行するマルチタスクOSを備えたコンピュータのユーザが操作対象としていないプロセスを言う。
【図面の簡単な説明】
【００６３】
【図１】一実施形態に係る不良メモリ検出装置のブロック構成図である。
【図２Ａ】図１に示す不良メモリ検出装置における処理部が実行する処理を示すフローチャートである。
【図２Ｂ】図２Ａに示すフローチャートのステップＳ２６０の詳細を示すフローチャートである。
【図３】メモリコントローラ内のレジスタに格納されるデータを示す図であり、（Ａ）はECC Errorの発生を示すデータを格納するレジスタを示し、（Ｂ）はECC Errorの詳細を示すデータを格納するレジスタを示す図である。
【図４】図１に示す処理部でテストするメモリ領域の具体例を示す図である。
【符号の説明】
【００６４】
１    不良メモリ検出装置
１１    ＣＰＵ
１２    ＤＲＡＭ（メモリ）
１３    メモリコントローラ
１４    ＳＲＡＭ
１５    ＦＲＯＭ
１６    キーボード
１７    ディスプレイ
１３０    レジスタ
１４０    カウンタ
１５０    処理部
【図１】
0004617405.tif 000002
【図２Ａ】
0004617405.tif 000003
【図２Ｂ】
0004617405.tif 000004
【図３】
0004617405.tif 000005
【図４】
0004617405.tif 000006