(57)【要約】【課題】メモリテスト専用領域を設けずに、かつ、コンピュータシステム稼働中にメモリテストを実行することが可能なメモリテスト回路を提供する。【解決手段】メモリテストの対象であるテスト対象メモリ領域１１ｃを有し、アレイテスト回路２０から出力される第１のテストパターンをテスト対象メモリ領域１１ｃに書き込むメモリアレイ部１１と、テスト対象メモリ領域１１ｃに記録されているデータの退避先となるリダンダントアレイ部１２と、退避領域アドレス情報及び、第１のテストパターンをメモリアレイ部１１に出力し、メモリアレイ部１１に書き込まれた後、メモリアレイ部１１から出力される第２のテストパターンとを比較するアレイテスト回路２０と、メモリテスト開始信号をアレイテスト回路２０に出力する演算回路３０からなることを特徴とする。【選択図】  図１
2010026980.tif 000002
【特許請求の範囲】
【請求項１】
メモリテストの対象であるテスト対象メモリ領域を有する第１のメモリアレイと、第１の定義情報を出力し、前記テスト対象メモリ領域に記録されているデータの退避先となる第２のメモリアレイとを有するメモリ部と、
前記第２のメモリアレイから出力される前記第１の定義情報を入力し、入力された前記第１の定義情報に基づき、第２の定義情報を生成し、前記第２の定義情報及び第１のテストパターンを前記第１のメモリアレイに出力するアレイテスト回路と、
一方で前記第１のメモリアレイへの書き込み又は読み出し制御を行う演算回路と
を有し、
前記第１のメモリアレイは、前記第２の定義情報をもとに、前記テスト対象メモリ領域に記録されているデータを前記第２のメモリアレイの空領域の一部である退避領域に退避し、前記第１のテストパターンを前記データが退避された前記テスト対象メモリ領域に書き込み、書き込み後のテストパターンである第２のテストパターンを前記アレイテスト回路に出力する手段を有し、
前記アレイテスト回路は、前記第２のテストパターンと、前記第１のテストパターンとを比較する手段を有する
ことを特徴とするメモリテスト回路。
【請求項２】
前記第１の定義情報は、前記第２のメモリアレイのｅＦｕｓｅ情報であることを特徴とする請求項１に記載のメモリテスト回路。
【請求項３】
前記第２の定義情報は、前記第１の定義情報をもとに生成された退避領域アドレス情報であることを特徴とする請求項１または２に記載のメモリテスト回路。
【請求項４】
前記アレイテスト回路は、
前記第２のメモリアレイの前記空領域のうち、前記退避領域の対象となる前記空領域のアドレス情報を記録する記録部を有する退避領域選択回路と、
前記記録部に記録された前記空領域のアドレス情報を前記第１のメモリアレイに出力する退避制御回路と、
前記第１のテストパターンを生成するテストパターン生成回路と、
前記第１のテストパターンと前記第２のテストパターンとを比較し、比較結果を出力するテストパターン比較回路と、
前記退避制御回路、前記第１のテストパターン生成回路及び、前記テストパターン比較回路にそれぞれ制御信号を出力する制御回路と
を有すことを特徴とする請求項１乃至３のいずれか１つに記載のメモリテスト回路。
【請求項５】
前記第２のメモリアレイは、通常時は、第１のメモリアレイに異常が発生したときの代替のメモリ領域として使用され、前記メモリテスト時は、前記テスト対象メモリ領域に記録されているデータの退避先のメモリ領域として使用される、リダンダントアレイである
ことを特徴とする請求項１乃至４のいずれか１つに記載のメモリテスト回路。
【請求項６】
前記演算回路は、一方で前記第１のメモリアレイへの書き込み又は読み出し制御をし、他方で前記アレイテスト回路にメモリテスト開始信号を出力し、
前記制御回路は、前記メモリテスト期間中は前記演算回路にｂｕｓｙ信号を出力し、
前記演算回路は、前記制御回路から出力されるｂｕｓｙ信号を受信中は、前記メモリアレイへの書き込み又は読み出し制御を行わない
ことを特徴とする請求項４又は５に記載のメモリテスト回路。
【請求項７】
第１のメモリアレイにアクセスするジョブがあるか否かを判断するステップと、
前記第１のメモリアレイにアクセスするジョブが無い場合にメモリテストを開始するステップと、
前記第１のメモリアレイに含まれるテスト対象メモリ領域に記録されているデータを、第２のメモリアレイの空領域に退避するステップと
第１のテストパターンを前記テスト対象メモリ領域に書き込むステップと、
前記テスト対象メモリ領域に書き込まれた前記第１のテストパターンを、第２のテストパターンとして読み出すステップと、
前記第１のテストパターンと、前記第２のテストパターンとを比較するステップと
を有することを特徴とするメモリテスト方法。
【請求項８】
前記第２のメモリアレイの前記空領域のうち、前記テスト対象メモリ領域の前記データを退避する領域を、動的に割り当てるステップを
更に有することを特徴とする請求項７に記載のメモリテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼動中のコンピュータシステムのメモリテストを実行するメモリテスト回路及びメモリテスト方法に関する。
【背景技術】
【０００２】
コンピュータシステムは一般に、１つ又は複数のプロセッサ及びメモリを備える。メモリの１つには主メモリと呼ばれる、通常、ある形態のランダムアクセスメモリ（ＲＡＭ）から構成されるメモリがある。コンピュータシステムは、動作時、オペレーティングシステムや、１つ又は複数のアプリケーションなどを主メモリにロードすることで、プロセッサによるそれらのオペレーティングシステムや複数のアプリケーションの実行を可能にする。
【０００３】
この主メモリは、オペレーティングシステムやアプリケーションなどを収容することから、コンピュータシステムの極めて重要なコンポーネントであり、主メモリの故障は、システムにおいて広範囲の障害を発生させ、また、コンピュータシステムを破壊させる恐れがある。そのため、故障を引き起こす前に主メモリのエラーを検出することが望ましい。
【０００４】
メモリエラーは、既知の情報（メモリパターン）をメモリに書き込み、次にその書き込まれた情報を読み出して、その読み出された情報が正しいか否かを判定するメモリテストを行うことによって検出できる。しかし、このメモリテストは、一般に、コンピュータシステムが起動されるタイミングでのみ実行され、起動後、つまりコンピュータシステムが稼動中には実行されない。この場合、例えば、サーバなどの２４時間３６５日常時稼動しているコンピュータシステムの場合、最初の起動時以降はメモリテストが実行されないことになる。
【０００５】
そこで、コンピュータシステムが稼働中でも、メモリテストできるようにしたメモリ監視装置がある（例えば、特許文献１）。
【０００６】
しかし、このメモリ監視装置は、退避レジスタというメモリテスト専用領域を特別に設け、その退避レジスタを用いてメモリテストを実行しなければならず、実際には使用しない無駄な資源を要するという問題があった。
【特許文献１】特開２００２−２４４９３４（［００１３］、図１、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、メモリテスト専用領域を設けずに、かつ、コンピュータシステム稼働中にメモリテストを実行することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の一態様のメモリテスト回路は、メモリテストの対象であるテスト対象メモリ領域を有する第１のメモリアレイと、第１の定義情報を出力し、前記テスト対象メモリ領域に記録されているデータの退避先となる第２のメモリアレイとを有するメモリ部と、前記第２のメモリアレイから出力される前記第１の定義情報を入力し、入力された前記第１の定義情報に基づき、第２の定義情報を生成し、前記第２の定義情報及び第１のテストパターンを前記第１のメモリアレイに出力するアレイテスト回路と、一方で前記第１のメモリアレイへの書き込み又は読み出し制御をし、他方で前記アレイテスト回路にメモリテスト開始信号を出力する演算回路を有し、前記第１のメモリアレイは、前記第２の定義情報をもとに、前記テスト対象メモリ領域に記録されているデータを前記第２のメモリアレイの空領域の一部である退避領域に退避し、前記第１のテストパターンを前記データが退避された前記テスト対象メモリ領域に書き込み、書き込み後のテストパターンである第２のテストパターンを前記アレイテスト回路に出力する手段を有し、前記アレイテスト回路は、前記第２のテストパターンと、前記第１のテストパターンとを比較する手段を有することを特徴とする。
【０００９】
また、本発明の一態様のメモリテスト方法は、第１のメモリアレイにアクセスするジョブがあるか否かを判断するステップと、前記第１のメモリアレイにアクセスするジョブが無い場合にメモリテストを開始するステップと、前記第１のメモリアレイに含まれるテスト対象メモリ領域に記録されているデータを、第２のメモリアレイの空領域に退避するステップと第１のテストパターンを前記テスト対象メモリ領域に書き込むステップと、前記テスト対象メモリ領域に書き込まれた前記第１のテストパターンを、第２のテストパターンとして読み出すステップと、前記第１のテストパターンと、前記第２のテストパターンとを比較するステップとを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、メモリテスト専用領域を設けずに、かつ、コンピュータシステム稼働中にメモリテストを実行することが可能なメモリテスト回路及びメモリテスト方法を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下本発明の実施の形態について、図面を参照して説明する。
【００１２】
（第１の実施の形態）
図１は本発明の第１の実施の形態に係るメモリテスト回路の構成を示すブロック図である。メモリテスト回路１は、テスト対象のメモリ領域を含む、第１のメモリアレイであるメモリアレイ部１１と、通常時はメモリアレイ部１１に異常が発生したときの代替のメモリ領域として利用され、又、メモリテスト時はメモリアレイ部１１に記録されているデータの退避先のメモリ領域として使用される第２のメモリアレイであるリダンダントアレイ部１２とを有するメモリ部１０と、メモリアレイ部１１に対してメモリテストを実行するアレイテスト回路２０と、メモリアレイ部１１にデータの書き込みや読み出しを実行し、かつ、メモリアレイ部１１へのメモリアクセス数を判断しながら、メモリテスト回路２０にメモリテスト可能か否かの信号送るなど、本メモリテスト回路１全体の制御を行う演算回路３０とから構成される。
【００１３】
図２は、メモリ部１０の詳細ブロック図である。
【００１４】
メモリ部１０は、上述の通りメモリアレイ部１１とリダンダントアレイ１２とを有する。
【００１５】
メモリアレイ部１１は、メモリアレイ１１ａと退避領域アドレス記憶部１１ｂとを有し、メモリアレイ１１ａには、メモリテスト対象であるテスト対象メモリ領域１１ｃが含まれる。リダンダントアレイ部１２は、リダンダントアレイ１２ａとｅＦｕｓｅ（ｅｌｅｃｔｒｉｃａｌ−Ｆｕｓｅ）情報記憶部１２ｂとを有し、リダンダントアレイ１２ａには、テスト対象メモリ領域１１に書き込まれているデータを退避するための領域である退避領域１２ｃが含まれる。
【００１６】
なお、退避領域アドレス記憶部１１ｂは、メモリアレイ部１１に含まれていてもよく、また、ｅＦｕｓｅ情報記憶部１２ｂは、リダンダントアレイ１２ａに含まれていてもよい。
【００１７】
ここで、ｅＦｕｓｅ情報とは、出荷時又は初期状態におけるリダンダントアレイ１２ａの定義情報であり、具体的には、図３に示すような、メモリアレイ１１ａの代替のメモリ領域として使用される領域１２ｄのアドレスと、メモリアレイ１１ａの代替のメモリ領域として使用されない領域（空領域）１２ｅのアドレスとを区別して記録したアドレス情報である。なお、退避領域１２ｃは代替のメモリ領域として使用されない領域１２ｅの一部である。
【００１８】
また、一般に、代替のメモリ領域として利用される領域１２ｄのアドレスは、出荷時に決められることが多いが、本発明では、特に出荷時に限られるものではなくてもよく、少なくともメモリテストを実行する時に決められていればよい。また、予めある程度の領域を退避領域として確保しておいてもよい。
【００１９】
ｅＦｕｓｅ情報記憶部１２ｂは、アレイテスト回路２０にｅＦｕｓｅ情報（第１の定義情報）を送る。アレイテスト回路２０は、そのｅＦｕｓｅ情報をもとに、退避領域アドレス情報（第２の定義情報）を生成し、生成した退避領域アドレス情報をメモリアレイ部１１の退避アドレス領域記憶部１１ｂに送る。
【００２０】
メモリアレイ部１１は、テスト対象メモリ領域１１ｃに書き込まれているデータを、アレイテスト回路２０から送られた退避領域アドレス情報に基づき、リダンダントアレイの退避領域１２ｃに退避する。そして、データが退避されたテスト対象メモリ領域１１ｃに、アレイテスト回路２０から送られたテストパターンを書き込んだ後、その書き込まれたテストパターンを読み出し、アレイテスト回路２０に送る。
【００２１】
図４は、アレイテスト回路２０の詳細ブロック図である。
【００２２】
退避領域選択回路２１は、リダンダントアレイ１２から送られるｅＦｕｓｅ情報をもとに、リダンダントアレイ１２のうち、代替のメモリ領域として使用されない領域、つまり、メモリテスト時にテスト対象メモリ領域１１ｃに記録されているデータの退避先として使用可能な領域である退避領域１２ｃのアドレス情報を退避領域アドレス情報として生成し、その退避領域アドレス情報を退避領域アドレス情報記録部２１ａに記録し、その退避領域アドレス情報記録部２１ａに記録された退避領域アドレス情報を退避制御回路２３に送る。
【００２３】
制御回路２２は、演算回路３０から出力されるメモリテスト開始信号をもとに、後述する退避制御回路２３、テストパターン生成回路２４及びテストパターン比較回路２５に制御信号を送ることで、アレイテスト回路２０全体の制御を行う。
【００２４】
退避制御回路２３は、制御回路２２からの制御信号を受信すると、退避領域選択回路２１から送られてくる、退避領域アドレス情報をメモリアレイ部１１に送る。
【００２５】
テストパターン生成回路２４は、例えばＰＲＢＳ（Ｐｓｅｕｄｏ  Ｒａｎｄｏｍ  Ｂｉｔ  Ｓｔｒｅａｍ：擬似ランダムビットストリーム）により第１のテストパターンを生成し、そのテストパターンをメモリアレイ１１ａのテスト対象メモリ領域１１ｃに書き込む。メモリアレイ１１ａは、上述のように、テスト対象メモリ領域１１ｃに書き込まれたテストパターンを読み出し、第２のテストパターンとしてテストパターン比較回路２５に出力する。
【００２６】
そして、テストパターン比較回路２５は、メモリアレイ１１ａから出力された第２のテストパターンと、もともとテストパターン生成回路２４で生成された第１のテストパターンのデータとを比較し、２つのデータが一致する場合は次のテスト対象メモリ領域のテストを実行し、一致しない場合はテスト対象メモリ領域１１ｃに異常がある旨を、制御回路２２を経由して演算回路３０に通知した上で、次のテスト対象メモリ領域のテストを実行する。演算回路３０では、これらの結果をもとに、続けてメモリテストを実行するか、又はメモリテストを停止し、場合によってはコンピュータシステムの一部又は全体を停止するなどを判断する。
【００２７】
次に、図５のフローチャートを参照して本実施の形態におけるメモリテスト回路１で実行されるメモリテストの動作を説明する。
【００２８】
まず、ステップＳ１の通常稼動状態から、ステップＳ２で、演算回路３０がメモリアレイ１１ａにアクセスするジョブがあるか否かを判断する。なお、このステップＳ２の判断は、例えば、メモリテスト回路１の通常稼動状態時に、常時実施する。そして、メモリアレイ１１ａにアクセスするジョブがある場合は、ステップＳ１に戻る。メモリアレイ１１ａにアクセスするジョブがある限り、以上の動作を繰り返す。一方、メモリアレイ１１ａにアクセスするジョブが無い場合は、ステップＳ３に進み、演算回路３０が、メモリテスト開始信号をアレイテスト回路２０に送る。
【００２９】
次に、メモリテスト開始信号を受信したアレイテスト回路２０は、ステップＳ４で演算回路３０に対してｂｕｓｙ信号を出力した後、ステップＳ５でテスト対象メモリ領域１１ｃに記録されているデータを、リダンダントアレイ１２ａの退避領域１２ｃに退避させる。なお、ステップＳ４で出力するｂｕｓｙ信号は、メモリテスト実施中は常に出力しており、演算回路３０はこのｂｕｓｙ信号が出力されている間はメモリアレイへのアクセスは行わない。
【００３０】
次に、ステップＳ６でテスト対象メモリ領域１１ｃのメモリテストを実行する。具体的には、前述のように、テストパターン生成回路２４で生成した第１のテストパターンをテスト対象メモリ領域１１ｃに書き込み、その後、テスト対象メモリ領域１１ｃに書き込まれたテストパターンを第２のテストパターンとして読み出し、ステップＳ７でその読み出した第２のテストパターンと、もともとのテストパターン生成回路２４で生成された第１のテストパターンとを比較して、２つのテストパターンのデータが一致するか否かを判断する。
【００３１】
２つのテストパターンのデータが一致しなかった場合は、ステップＳ８でその旨を演算回路３０に通知した後、ステップＳ９で退避領域１２ｃに退避したテスト対象メモリ領域のデータを、メモリアレイ１１ａのもとの領域に書き戻す。一方、２つのデータが一致した場合、つまりテスト対象メモリ領域に異常が無い場合は、そのままステップＳ９に進みリダンダントアレイ１２ａに退避したデータをもとのメモリアレイ１１ａの領域に書き戻す。そして、ステップＳ１０で、演算回路３０からメモリテスト開始信号が出力されているか否かを再度判断し、演算回路３０からメモリテスト開始信号が出力されている場合はステップＳ１１でテスト対象メモリ領域を次のテスト対象メモリ領域に移し、ステップＳ５に戻る。
【００３２】
また、ステップＳ１０でメモリテスト開始信号が出力されていない場合は、ステップＳ１２でアレイテスト回路２０からのｂｕｓｙ信号出力を停止し、メモリテストを終了する。
【００３３】
なお、本メモリテストは、メモリアレイ１１ａを適当なメモリサイズに区切り、その各区切られた領域に対して、例えばメモリの配列順に順次実施することで、最終的にメモリアレイ１１ａ全体に対してのメモリテストを完了する場合、上記の「次のテスト対象メモリ領域」とは、メモリアレイ１１ａの各区切られた領域のうち、まだテストが完了していない領域で、かつ、例えばメモリ配列の順番上、次にテスト対象となるメモリ領域のことをいう。
【００３４】
本実施の形態のメモリテスト回路によれば、電源投入後に発生するメモリアレイの異常をコンピュータシステム稼動中に検出することができるため、２４時間３６５日稼動のサーバなどにおいても、サーバを停止せずにメモリテストを実行でき、メモリアレイに起因するコンピュータシステムの動作不良を早期に検知することができる。
【００３５】
また、一般に設けられているリダンダントアレイの空領域を用いてメモリテストを実行するので、メモリテストのために特別なメモリ領域などを設けずに、既存の資源を有効に利用してメモリテストを実行できる。
【００３６】
また、メモリテスト実行中はアレイテスト回路から演算回路にｂｕｓｙ信号を出力し続けることで、演算回路にメモリテスト中であることを知らせることができ、演算回路によってメモリテストを中断させられることがない。
【００３７】
（第２の実施の形態）
図６は、本発明の第２の実施の形態に係るメモリテスト回路の動作のフローチャートである。
【００３８】
本実施の形態が、第１の実施の形態と異なる点は、第１の実施の形態では、図５のステップＳ５において、リダンダントアレイ１２ａのメモリ領域のうち、予めメモリテスト用に割り当てられた退避領域を用いてメモリテストを実行していたが、本実施の形態では、コンピュータシステムの初期起動時に動的に、メモリテスト用の退避領域を割り当てる点である。
【００３９】
図６のフローチャートを用いて、動的にメモリテスト用の領域を割り当てる動作について説明する。
【００４０】
まず、ステップＳ２０でコンピュータシステムを起動し、ステップＳ２１で、アレイテスト回路は、リダンダントアレイ部１２から出力されたｅＦｕｓｅ情報を読み込む。次に、ステップＳ２２で、アレイテスト回路は、読み込んだｅＦｕｓｅ情報から、リダンダントアレイ１２ａうち、代替のメモリ領域として使用されない領域（空領域）１２ｅのｒｏｗ本数をカウントする。そして、ステップＳ２３で、そのｒｏｗ本数が１６本未満であると判断した場合、ｒｏｗ本数を８本と定義し、ステップＳ２８でその定義情報を退避領域アドレス情報記録部２１ａに記録する。また、ステップＳ２３で、そのｒｏｗ本数が１６本以上であると判断された場合は、ステップＳ２５でそのｒｏｗ本数が３２本未満か否かを更に判断する。その判断結果が、３２本未満の場合は、ステップＳ２６でｒｏｗ本数を１６本と定義し、ステップＳ２８でその定義情報を退避領域アドレス情報記録部２１ａに記録する。また、ステップＳ２５で、そのｒｏｗ本数が３２本未満でないと判断された場合は、ステップＳ２７でｒｏｗ本数を３２本と定義し、ステップＳ２８でその定義情報を退避領域アドレス情報記録部２１ａに記録する。
【００４１】
以上の動作により、コンピュータシステム起動時に動的に退避領域を割り当てることができる。なお、ｒｏｗ本数のカウントに用いる閾値は上述の限りではない。
【００４２】
本実施の形態のメモリテスト回路によれば、コンピュータシステム起動時に動的に、かつ、最大限のｒｏｗ本数を退避領域として割り当てることができるので、第１の実施の形態に比較して、より効率的にメモリテストを実行することができる。
【００４３】
本発明は、上述した第１、２の実施の形態に限定されず、本発明の要旨を逸脱しない範囲で種々、変更して実施しても良い。
【００４４】
例えば、第１の実施の形態において、図５のステップＳ２の判断は、メモリテスト回路１の通常稼動状態時に常時実施したが、常時実施せずに、定周期で実施しても構わない。これにより、図５のステップＳ２に示す演算回路３０の動作を常時実施させる必要がなくなり、消費電力の削減が可能になる。
【図面の簡単な説明】
【００４５】
【図１】本発明の第１の実施の形態に係るメモリテスト回路のブロック図である。
【図２】本発明の第１の実施の形態に係るメモリアレイの詳細ブロック図である。
【図３】本発明の第１の実施の形態に係るリダンダントアレイのメモリ領域の図である。
【図４】本発明の第１の実施の形態に係るアレイテスト回路の詳細ブロック図である。
【図５】本発明の第１の実施の形態に係るメモリテスト回路の動作のフローチャートである。
【図６】本発明の第２の実施の形態に係る動的にメモリテスト用の領域を割り当てる動作のフローチャートである。
【符号の説明】
【００４６】
１０  ：メモリ部
１１  ：メモリアレイ部
１１ａ：メモリアレイ
１１ｂ：退避領域アドレス記憶部
１１ｃ：テスト対象メモリ領域
１２  ：リダンダントアレイ部
１２ａ：リダンダントアレイ
１２ｂ：ｅＦｕｓｅ情報記憶部
１２ｃ：代替のメモリ領域として使用される領域
１２ｄ：代替のメモリ領域として使用されない領域
２０  ：アレイテスト回路
２１：退避領域選択回路
２１ａ：退避領域アドレス情報記録部
２２：制御回路
２３：退避制御回路
２４：テストパターン生成回路
２５：テストパターン比較回路
３０：演算回路
【図１】
2010026980.tif 000003
【図２】
2010026980.tif 000004
【図３】
2010026980.tif 000005
【図４】
2010026980.tif 000006
【図５】
2010026980.tif 000007
【図６】
2010026980.tif 000008