(57)【要約】【課題】ＤＭＡ使用メモリ領域においても、ＣＰＵによるメモリ１ビットエラー訂正内容のメモリへの書き戻しが可能なデータ記憶制御方法および装置を提供することにある。【解決手段】計算機システムは、ＣＰＵ１０と、メモリ３０と、このメモリを制御しＥＣＣレジスタ部４２を持つメモリコントローラ４０と、ＤＭＡ装置２０とからなる。書き戻し制御手段１２は、ＤＭＡ使用情報４４Ｂを参照して、ＤＭＡ使用中でない場合に上記メモリのエラーアドレスに対しエラー訂正されたデータを書き戻す。【選択図】  図１
2004171106.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリと、このメモリを制御しＥＣＣレジスタ部を持つメモリコントローラと、ＤＭＡ装置とからなる計算機システムのデータ記憶制御方法において、
上記ＣＰＵは、ＤＭＡ使用中でない場合に上記メモリのエラーアドレスに対しエラー訂正されたデータを書き戻すことを特徴とするデータ記憶制御方法。
【請求項２】
請求項１記載のデータ記憶制御方法において、
上記ＣＰＵは、上記エラーアドレスから読み出されたデータとエラー訂正されたデータが異なる場合には書き戻しを行わないことを特徴とするデータ記憶制御方法。
【請求項３】
請求項１記載のデータ記憶制御方法において、
上記ＣＰＵは、ＤＭＡ使用中である場合には上記メモリのエラーアドレスに対するデータ書き戻し処理を次回に繰り越すことを特徴とするデータ記憶制御方法。
【請求項４】
ＣＰＵと、メモリと、このメモリを制御しＥＣＣレジスタ部を持つメモリコントローラと、ＤＭＡ装置とからなる計算機システムのデータ記憶制御装置において、
上記メモリコントローラは、ＤＭＡ使用情報を保持するＤＭＡ情報部を備え、上記ＣＰＵは、このＤＭＡ情報部に保持されたＤＭＡ使用情報を参照して、ＤＭＡ使用中でない場合に上記メモリのエラーアドレスに対しエラー訂正されたデータを書き戻す書き戻し制御手段を備えたことを特徴とするデータ記憶制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ内に記憶されたデータを読み出すデータ記憶制御方法および装置に係り、特に、メモリに対するメモリ１ビットエラー訂正内容の書き戻しに好適にデータ記憶制御方法および装置に関する。
【０００２】
【従来の技術】
従来、データ記憶制御装置としては、例えば、特開平１０−８３３５７号公報に記載されているように、メモリ内で発生した一過性のメモリ１ビットエラーに対してメモリコントローラが該メモリ領域からデータの読み出し動作を行った際に、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ＆Ｃｏｒｒｅｃｔｉｏｎ）によりエラーを検出し、その検出したエラーに対して訂正可能であれば訂正を行ったうえでデータを出力するものが知られている。
【特許文献１】
特開平１０−８３３５７号公報
【０００３】
【発明が解決しようとする課題】
しかしながら、特開平１０−８３３５７号公報に記載されたものは、メモリの信頼性向上のためのものであり、一般的なメモリコントローラではメモリ１ビットエラー検出時はエラー訂正したデータが読み出されるが、エラーが検出された部位に対しエラー訂正されたデータを書き戻すようにはなっていないため、さらに１ビットエラーが発生し、複数ビットのエラーとなると、訂正不可能になる可能性がある。
【０００４】
それに対して、エラーを検出し訂正されたデータを出力するだけなく、エラーが検出された部位に対しエラー訂正されたデータを書き戻す機能を持ったメモリコントローラも知られているが、かかる機能を有するメモリコントローラは、内部にその処理回路を内蔵しているために高価であるとともに、一般的ではないために種類が限定されてしまい装置全体として捕らえたときの選択性が乏しくなる。
【０００５】
一方、メモリコントローラではなく、ＣＰＵによりエラー訂正されたデータを書き戻す処理を行う方法も考えられる。しかし、ＤＭＡ装置を用いている場合には、ＣＰＵがエラー発生を検出してエラー訂正されたデータをメモリに書き戻そうとしたメモリ領域がＤＭＡ使用中であると、ＣＰＵが書き戻そうとするアドレスにはＤＭＡ転送によりエラーが検出された時と違う値が入っているために、この状態にてＣＰＵがエラー訂正内容を書き戻すとデータ不一致となる。従ってＤＭＡ転送を使用するＤＭＡ装置がメモリコントローラに接続されているような装置においては、ＣＰＵによりエラー訂正されたデータを書き戻す処理を行うことはできないという問題があった。
本発明の目的は、ＤＭＡ使用メモリ領域においても、ＣＰＵによるメモリ１ビットエラー訂正内容のメモリへの書き戻しが可能なデータ記憶制御方法および装置を提供することにある。
【０００６】
【課題を解決するための手段】
（１）上記目的を達成するために、本発明は、ＣＰＵと、メモリと、このメモリを制御しＥＣＣレジスタ部を持つメモリコントローラと、ＤＭＡ装置とからなる計算機システムのデータ記憶制御方法において、上記ＣＰＵは、ＤＭＡ使用中でない場合に上記メモリのエラーアドレスに対しエラー訂正されたデータを書き戻すようにしたものである。
かかる方法により、ＤＭＡ使用メモリ領域に対しても、ＣＰＵによるメモリ１ビットエラー訂正内容のメモリへの書き戻しが可能となる。
【０００７】
（２）上記（１）において、好ましくは、上記ＣＰＵは、上記エラーアドレスから読み出されたデータとエラー訂正されたデータが異なる場合には書き戻しを行わないようにしたものである。
【０００８】
（３）上記（１）において、好ましくは、上記ＣＰＵは、ＤＭＡ使用中である場合には上記メモリのエラーアドレスに対するデータ書き戻し処理を次回に繰り越すようにしたものである。
【０００９】
（４）上記目的を達成するために、本発明は、ＣＰＵと、メモリと、このメモリを制御しＥＣＣレジスタ部を持つメモリコントローラと、ＤＭＡ装置とからなる計算機システムのデータ記憶制御装置において、上記メモリコントローラは、ＤＭＡ使用情報を保持するＤＭＡ情報部を備え、上記ＣＰＵは、このＤＭＡ情報部に保持されたＤＭＡ使用情報を参照して、ＤＭＡ使用中でない場合に上記メモリのエラーアドレスに対しエラー訂正されたデータを書き戻す書き戻し制御手段を備えるようにしたものである。
かかる方法により、ＤＭＡ使用メモリ領域に対しても、ＣＰＵによるメモリ１ビットエラー訂正内容のメモリへの書き戻しが可能となる。
【００１０】
【発明の実施の形態】
以下、図１〜図３を用いて、本発明の一実施形態によるデータ記憶制御装置の構成及び動作について説明する。
図１は、本発明の一実施形態によるデータ記憶制御装置の全体構成を示すブロック図である。図２は、本発明の一実施形態によるデータ記憶制御装置に用いるエラーテーブルの構成を示すブロック図である。図３は、本発明の一実施形態によるデータ記憶制御装置による１ビットエラー書き戻し処理の内容を示すフローチャートである。
【００１１】
本実施形態によるデータ記憶制御装置は、ＣＰＵ１０と、ＤＭＡ装置２０と、メモリ３０と、メモリコントローラ４０とから構成されている。ＣＰＵ１０とメモリコントローラ４０とは、ＣＰＵバスＢｕ１により接続されている。ＤＭＡ装置２０とメモリコントローラ４０とは、Ｉ／ＯバスＢｕ２により接続されている。ＤＭＡ装置２０とメモリ３０とは、メモリバスＢｕ３により接続されている。
【００１２】
ＣＰＵ１０は、メモリ１ビットエラー訂正内容の書き戻しを制御する書き戻し制御手段１２を備えている。書き戻し制御手段１２の動作については、図３を用いて後述する。
【００１３】
メモリコントローラ４０は、ＥＣＣレジスタ部４２と、ＤＭＡ情報部４４を備えている。メモリコントローラ４０がメモリ３０からデータを読み出した際、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ＆Ｃｏｒｒｅｃｔｉｏｎ）によりエラーを検出し、その検出したエラーに対して訂正可能であれば訂正を行ったうえでデータを出力する。このとき、メモリ１ビットエラーが発生すると、エラーが発生したこと及びエラーが発生したメモリのアドレスがＥＣＣレジスタ部４２に設定される。ＥＣＣレジスタ部４２は、エラー発生情報部４２Ａと、エラーアドレス部４２Ｂとを備えている。メモリ１ビットエラーが発生すると、メモリコントローラ４０は、ＥＣＣレジスタ部４２のエラー発生情報部４２Ａに、エラーが発生したことを示すフラグをセットし、また、エラーアドレス部４２Ｂに、エラーが発生したメモリアドレスをセットする。
【００１４】
ＤＭＡ情報部４４には、ＤＭＡ装置２０によるメモリ３０に対するＤＭＡ使用の情報がセットされる。ＤＭＡ情報部４４は、ＤＭＡ対象アドレス部４４Ａと、ＤＭＡ使用情報部４４Ｂとを備えている。ＤＭＡ使用情報部４４Ｂには、ＤＭＡ装置２０がＤＭＡを使用中であることを示すフラグがセットされ、また、ＤＭＡ使用中には、そのＤＭＡの対象となっているアドレスが、ＤＭＡ対象アドレス部４４Ａにセットされる。なお、ＤＭＡ情報部４４は、メモリコントローラ４０内にある必然性はなく、ハードウェアとして実現してもソフトウェアとして実現してもよいものである。
【００１５】
メモリ３０は、エラーテーブル３２を備えている。図２に示すように、エラーテーブル３２は、ｎ個のエラー情報部３２−１，３２−２，…，３２−ｎと、インデックス部３２ｘを備えている。エラー情報部３２−１には、図示するように、１ビットエラーが発生したアドレスを示す１ビットエラー発生アドレスと、１ビットエラーが発生した場合、読み出されたデータに対して、ＥＣＣによって訂正されたデータである１ビットエラー発生データリード値とが記憶される。他のエラー情報部３２−２，…，３２−ｎも同様に構成されている。インデックス部３２ｘには、エラー情報部３２−１〜３２−ｎの内、エラー情報が登録されている数に関連する数が記憶される。例えば、２つのエラー情報が記憶されている場合、２個のエラー情報部３２−１，３２−２にはエラー情報が記憶されており、３番目のエラー情報部３２−３は空である。この場合、インデックス部３２ｘには、数値「３」がセットされている。すなわち、インデックス部３２ｘにセットされている数値は、「発生しているエラーの数＋１」であり、また、空のエラー情報部の先頭の数値である。
【００１６】
ＣＰＵ１０およびＤＭＡ装置２０からメモリ３０への読み書きは、いずれの場合もメモリコントローラ４０を介して行われる。また、ＣＰＵ１０およびＤＭＡ装置２０は、メモリバスＢｕ３が未使用状態であれば、お互いの状態に依存することなく、メモリ３０とのデータの読み書きが可能である。
【００１７】
本実施形態では、書き戻し制御手段１２及びエラーテーブル３２を設けたことに特徴がある。ＣＰＵ１０は、定周期にて書き戻し制御手段１２を起動することにより、書き戻し制御手段１２は、メモリコントローラ４０に対しエラーパトロール処理、すなわちＥＣＣレジスタ部４２のエラー発生情報４２Ａを監視しており、ここでメモリ１ビットエラー発生を検出するとエラー発生箇所に対してエラー訂正内容のメモリへの書き戻し処理を行うことになる。
【００１８】
ここで、図３を用いて、書き戻し制御手段１２による書き戻し処理の内容について説明する。
ステップＳ１において、ＣＰＵ１０は、定周期にて書き戻し制御手段１２を起動することにより、書き戻し制御手段１２は、メモリコントローラ４０に対しエラーパトロールを開始する。
【００１９】
次に、ステップＳ２において、書き戻し制御手段１２は、ＥＣＣレジスタ部４２のエラー発生情報部４２Ａをチェックして、エラーフラグがセットされているか否かにより、メモリ１ビットエラーが発生したか否かを検出する。エラーが検出されると、ステップＳ３に進み、エラーアドレス部４２Ｂを参照して得たメモリ内のエラー発生アドレスを、図２に示したエラーテーブル３２のエラー情報部３２−１の１ビットエラー発生アドレスに記憶し、また、そのアドレスをデータリードした値を１ビットエラー発生データリード値に記憶する。ここで、データリードした値とは、ＥＣＣによりエラー訂正されたデータであり、このエラー訂正されたデータ値が記憶される。なお、エラーテーブル３２のエラー情報部の記憶する場所は、インデックス部３２ｘを参照して、インデックス値が「１」であれば、エラー情報部３２−１に記憶し、インデックス値が「２」であれば、エラー情報部３２−２に記憶する。その後、ステップＳ４に進む。また、ステップＳ２において、エラーが検出されない場合には、ステップＳ３をパスして、ステップＳ４に進む。
【００２０】
次に、ステップＳ４において、書き戻し制御手段１２は、インデックス部３２ｘを参照して、エラーテーブル３２が空であるか否かを判断する。インデックス値が「１」であれば、エラーテーブル３２は空であると判断できる。エラーテーブル３２が空の場合は、書き戻すべき１ビットエラーデータがないため、ステップＳ１２において処理を終了する。
【００２１】
エラーテーブル３２が空でない場合には、ステップＳ５において、書き戻し制御手段１２は、エラーテーブルインデックスが最後か否かを判定する。エラーテーブルインデックスは、インデックス部３２ｘにセットされたインデックス値とは異なり、図２に示す処理の開始時には、「１」に初期化されている。エラーテーブルインデックスは、後述するステップＳ１１の処理により順次「１」づつインクリメントされる値である。エラーテーブルインデックスとインデックス部３２ｘにセットされたインデックス値が等しくなると、ステップＳ１２において処理を終了する。
【００２２】
エラーテーブルインデックスが最後でない場合には、ステップＳ６において、書き戻し制御手段１２は、エラーテーブル３２より、過去に発生したアドレスをリードし、リード値を比較する。例えば、書き戻し制御手段１２は、エラーテーブル３２のエラー情報部３２−１から１ビットエラー発生アドレスを読み出す。そして、メモリ３０から、この読み出されたアドレスのデータを読み出す。なお、データ読み出し時には、ＥＣＣによりエラー訂正されたリード値となる。また、書き戻し制御手段１２は、エラーテーブル３２のエラー情報部３２−１から１ビットエラー発生データリード値を読み出す。そして、メモリ３０から読み出されてＥＣＣによりエラー訂正されたリード値と、エラー情報部３２−１から読み出された１ビットエラー発生データリード値を比較する。
【００２３】
ここで、２つのリードデータの値が異なる場合は、メモリ１ビットエラー検出後にエラー発生アドレスに対してメモリ書き込み（上書き）が実施されたこととなるので、書き戻しは行う必要がなくなり、ステップＳ１３において、エラーテーブル３２からエントリー，すなわち、エラー情報部３２−１の内容を削除する。
一方、ステップＳ６の判定において、エラーテーブル１１に記録されているデータリード値とリードされたデータが同じであれば、メモリエラー状態が継続していると判定できるので、ステップＳ７以降において、訂正内容の書き戻しを実施することになる。
ステップＳ７において、書き戻し制御手段１２は、ＤＭＡ対象アドレス４４Ａを参照して、メモリエラーが検出されたアドレスがＤＭＡ対象領域となっているかどうかを判定する。ＤＭＡ対象領域となっていなければＣＰＵ１０により訂正内容を書き戻しても問題はないため、ステップＳ９に移行して、エラー発生アドレスに対してリード／ライトを実行し、エラー訂正内容を書き戻す。
一方、ステップＳ７の判定において、エラー発生アドレスがＤＭＡ対象領域となっていた場合は、さらにステップＳ８において、書き戻し制御手段１２は、ＤＭＡ使用情報４４Ｂを参照して、該当ＤＭＡ転送が使用中であるかどうかを判定する。ＤＭＡ転送が未使用中（ＤＭＡ転送終了済み）であれば、ステップＳ９において、エラー発生アドレスに対してリード／ライトを実行しエラー訂正内容を書き戻す。一方、ＤＭＡ転送が使用中であれば、書き戻しを実施せずに、ステップＳ１１に進み、次回の定周期パトロール時に書き戻し処理を繰越す。
【００２４】
ステップＳ８において、リード／ライトを実行すると、次に、ステップＳ１０において、エラーテーブル３２からエントリー，すなわち、エラー情報部３２−１の内容を削除する。
【００２５】
次に、ステップＳ１１において、エラーテーブルインデックスを１だけインクリメントする。そして、ステップＳ５に戻り、インクリメントされたエラーテーブルインデックスについて、ステップＳ５〜Ｓ１１の処理を実行する。
【００２６】
以上説明したように、メモリ１ビットエラー検出時にそのエラー訂正内容をメモリに書き戻す機能を有しない一般的なメモリコントローラにおいて、該メモリコントローラにＤＭＡ転送を行うＤＭＡ装置が接続されていたとしても、ＣＰＵによりメモリ内のＤＭＡ使用領域を意識することなく、メモリ１ビットエラー検出箇所にエラー訂正内容を書き戻すことにより、訂正不可能なエラーの発生を抑えることができるため、メモリに関する信頼性が向上する。またソフトウェアによって処理するので、コストを最小限に抑えることが可能となる。
【００２７】
ＤＭＡ使用中には、書き戻し処理を次回のパトロール時に繰り越すことにより、ＤＭＡ装置を用いた場合でも誤った書き戻しをすることなく、エラーの発生を抑えることができる。
【００２８】
さらに、次回のパトロール時に再度実行することにより、確実にエラーの発生を抑えることができる。
【００２９】
なお、以上の説明では、ステップＳ１〜Ｓ１３の処理は、全て、ＣＰＵ１０によって定周期パトロールとして実行するものとしているが、例えば、ＥＣＣ時にエラーが発生したことによってＣＰＵ１０に割り込みをかけ、ＣＰＵ１０がこのエラー発生割り込みがあった場合に、ステップＳ３〜Ｓ１３の処理を実行するようにしてもよいものである。なお、ステップＳ８の処理のようにＤＭＡ転送中は次回のパトロール時に繰り越すようにしているので、ステップＳ４〜Ｓ１３の処理自体は、定周期パトロールとして実行する。
【００３０】
【発明の効果】
本発明によれば、ＤＭＡ使用メモリ領域においても、ＣＰＵによるメモリ１ビットエラー訂正内容のメモリへの書き戻しが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるデータ記憶制御装置の全体構成を示すブロック図である。
【図２】本発明の一実施形態によるデータ記憶制御装置に用いるエラーテーブルの構成を示すブロック図である。
【図３】本発明の一実施形態によるデータ記憶制御装置による１ビットエラー書き戻し処理の内容を示すフローチャートである。
【符号の説明】
１０…ＣＰＵ
１２…書き戻し制御手段
２０…ＤＭＡ装置
３０…メモリ
３２…エラーテーブル
４０…メモリコントローラ
４２…ＥＣＣレジスタ部
４４…ＤＭＡ情報部
Ｂｕ１…ＣＰＵバス
Ｂｕ２…Ｉ／Ｏバス
Ｂｕ３…メモリバス
【図１】
2004171106.tif 000003
【図２】
2004171106.tif 000004
【図３】
2004171106.tif 000005