(57)【要約】【課題】データに対するチェックデータの比率を大きくすることなく、ソフトエラーに起因するデータの２ビットエラーを訂正できるようにする。【解決手段】チェックデータ生成部３１は、データＤに対するチェックデータＣを生成し、チェックデータメモリ２に格納する。また、データＤは、チェックデータメモリ２とは別のデータメモリ１に格納する。このように、データＤとチェックデータＣと物理的に異なるメモリ１、２に格納することにより、ソフトエラーに起因してデータＤとチェックデータＣとの両方に同時に１ビットエラーが発生する確率を無視できるほど小さくすることができる。この結果、上記パターンのビットエラーを訂正するためのエラー訂正機能をチェックデータに組み込まなくとも良くなるので、チェックデータＣのビット数を少なくすることができる。【選択図】図１
2010140232.tif 000002
【特許請求の範囲】
【請求項１】
データと、チェックデータとを物理的に別のメモリに格納し、前記チェックデータを利用してビットエラーを訂正するエラー訂正方式であって、
前記チェックデータは、ビットエラーを訂正するエラー訂正能力として、前記データに発生した１ビットエラー及び２ビットエラーを訂正する能力を備えることを特徴とするエラー訂正方式。
【請求項２】
請求項１記載のエラー訂正方式において、
前記データが格納されるデータメモリと、
前記チェックデータが格納される、前記データメモリとは物理的に異なるチェックデータメモリと、
データに発生した１ビットエラーおよび２ビットエラーに対するエラー訂正能力を備えたチェックデータを生成して前記チェックデータメモリに格納するチェックデータ生成部と、
前記データメモリから読み出したデータに発生している１ビットエラーもしくは２ビットエラーを前記チェックデータを利用して訂正するエラー訂正部とを備えたことを特徴とするエラー訂正方式。
【請求項３】
請求項２記載のエラー訂正方式において、
前記チェックデータは、前記データに１ビットエラーもしくは２ビットエラーが発生している場合には、前記データに対して予め定められている演算であって前記チェックデータ生成部がチェックデータの各ビットを生成する際に実行する演算と同様の演算を実行することにより求めた前記チェックデータの各ビットに対する比較値が前記チェックデータの対応するビットと３ビット以上不一致となり、前記チェックデータに１ビットエラーもしくは２ビットエラーが発生している場合には、前記比較値と値が不一致となる前記チェックデータのビットが２ビット以下となるように構成されていることを特徴とするエラー訂正方式。
【請求項４】
請求項３記載のエラー訂正方式において、
前記エラー訂正部は、前記チェックデータの各ビットの中に前記比較値と値が異なるビットが３ビット以上存在する場合は、そのビットの発生位置に基づいて、前記データにおけるエラー発生ビットを特定することを特徴とするエラー訂正方式。
【請求項５】
請求項１乃至４の何れか１項に記載のエラー訂正方式において、
前記データおよび前記チェックデータは共に８ビット構成であり、
前記チェックデータは、前記データの第１ビット〜第４ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第５ビット〜第８ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第１ビット、第２ビット、第５ビットおよび第６ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第１ビット、第３ビット、第５ビットおよび第７ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第１ビット、第４ビット、第５ビットおよび第７ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第３ビット、第６ビット〜第８ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第２ビット、第５ビットおよび第６ビットの中に値が１のビットが偶数存在するか否かを示すビットと、前記データの第４ビットおよび第８ビットの中に値が１のビットが偶数存在するか否かを示すビットとを含むことを特徴とするエラー訂正方式。
【請求項６】
データと、チェックデータとを物理的に別のメモリに格納し、前記チェックデータを利用してビットエラーを訂正するエラー訂正方法であって、
前記チェックデータは、ビットエラーを訂正するエラー訂正能力として、前記データに発生した１ビットエラー及び２ビットエラーを訂正する能力を備えることを特徴とするエラー訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトエラーに起因するメモリのビットエラーを訂正するエラー訂正技術に関する。
【背景技術】
【０００２】
メモリのビット化けに対する対策として、ＥＣＣ（エラー・コレクティング・コード）機能を具備したメモリが一般的であるが、その機能は１ビットエラー訂正／２ビットエラー検出に留まっている。この場合、同一データ上に２ビットエラーが発生すると、エラーを検出することはできるが、訂正することはできない。
【０００３】
一方、２ビットエラーを訂正する技術として、ＲＳ(Reed-Solomon)符号やＢＣＨ(Bose-Chaudhuri-Hocquenghem)符号を利用する技術も従来から知られている。
【０００４】
また、アルファ粒子や宇宙線などの外部要因に起因するソフトエラーによって複数のビットにビット化けが発生した場合であっても、それを訂正できるようにしたメモリ装置として次のようなものが知られている（例えば、特許文献１参照）。特許文献１に記載されているメモリ装置は、複数のデータメモリと、複数のチェックデータメモリと、１ビットエラーの訂正を行う複数の誤り訂正部とを備えている。そして、データは複数のデータメモリに分割して格納され、データの正当性を保証するためのチェックデータも複数のチェックデータメモリに分割して格納される。なお、各メモリのビット数は同一であり、誤り訂正部は、メモリのビット数と同じ数だけ設けられている。例えば、メモリのビット数がｎビットであるとすると、第１番目〜第ｎ番目のｎ個の誤り訂正部が存在することになる。
【０００５】
ｎ個の誤り訂正部の内、第ｉ番目（１≦ｉ≦ｎ）の誤り訂正部には、各データメモリに格納されているデータの第ｉビット目と、各チェックデータメモリに格納されているチェックデータの第ｉビット目とが入力される。ここで、各チェックデータメモリに格納されているチェックデータの第ｉビット目からなるビット列は、各データメモリに格納されているデータの第ｉビット目からなるビット列に対する１ビットエラー訂正符号を構成している。従って、データメモリの内の何れかにアルファ粒子が衝突し、そのデータメモリが破壊されたとしても、破壊されたデータメモリの各ビットはそれぞれ異なる誤り訂正部に入力されるので、エラーの訂正されたデータを得ることができる。
【０００６】
【特許文献１】特開２００１−１３４４９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、ＲＳ符号やＢＣＨ符号を利用することにより、２ビットエラーを訂正することができる。しかし、この場合は、１５ビットの符号で７ビットの情報伝送となり、データそのものとデータの正当性を保証するために付加するチェックデータとの比率が７：８となる。このように、ＢＣＨ符号などを利用して２ビットエラーを訂正するようにした場合は、データよりもチェックデータの方がビット数が多くなってしまい、データの効率が５０％を下回る。また、一般的にはデータのビット数は２n（ｎ＝１，２，３，．．．）であることが多く、例えば８ビットのデータを符号化するのには適さない。
【０００８】
また、特許文献１に記載されている技術によれば、複数存在するデータメモリの内の１つにソフトエラーが発生し、複数のビットにビットエラーが発生しても正しいデータを得ることができる。しかし、特許文献１に記載されている技術は、データメモリの各ビット毎にエラー訂正符号が存在することになるため、チェックデータのビット数が多くなるという問題がある。例えば、データメモリが８ビットである場合には、第１ビット〜第８ビットに対する８個のエラー訂正符号が必要になるため、チェックデータのビット数が多くなってしまう。
【０００９】
そこで、本発明の目的は、データに対するチェックデータの比率を大きくすることなく、ソフトエラーに起因する２ビットエラーを訂正できるようにすることにある。
【課題を解決するための手段】
【００１０】
本発明にかかるエラー訂正方式は、
データと、チェックデータとを物理的に別のメモリに格納し、前記チェックデータを利用してビットエラーを訂正するエラー訂正方式であって、
前記チェックデータは、ビットエラーを訂正するエラー訂正能力として、前記データに発生した１ビットエラー及び２ビットエラーを訂正する能力を備える。
【００１１】
本発明にかかるエラー訂正方法は、
データと、チェックデータとを物理的に別のメモリに格納し、前記チェックデータを利用してビットエラーを訂正するエラー訂正方法であって、
前記チェックデータは、ビットエラーを訂正するエラー訂正能力として、前記データに発生した１ビットエラー及び２ビットエラーを訂正する能力を備える。
【発明の効果】
【００１２】
本発明によれば、データに対するチェックデータの比率を大きくすることなく、ソフトエラーに起因する２ビットエラーを訂正することができるという効果を得ることができる。
【発明を実施するための最良の形態】
【００１３】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１４】
図１を参照すると、本発明の実施の形態は、データメモリ１と、データメモリ１とは物理的に異なるチェックデータメモリ２と、エラー訂正回路３とから構成されている。
【００１５】
データメモリ１は、読み書きの対象となる８ビット構成（Ｄ０〜Ｄ７）のデータＤが格納されるメモリである。チェックデータメモリ２は、データＤの正当性を保証するための８ビット構成（Ｃ０〜Ｃ７）のチェックデータＣが格納されるメモリである。
【００１６】
エラー訂正回路３は、チェックデータ生成部３１と、エラー訂正部３２とを備えている。チェックデータ生成部３１は、データの書き込み時、入力されたデータＤからチェックデータＣを生成してチェックデータメモリ２に格納すると共に、データＤをデータメモリ１に格納する。ここで、本実施の形態では、データＤとチェックデータＣとを物理的に異なるデータメモリ１とチェックデータメモリ２とに分散して格納するようにしているので、両データＤ，Ｃを同一のメモリに格納する場合に比較してチェックデータＣのビット数を少なくすることができる。以下、図２を参照してその理由を説明する。
【００１７】
先ず、データＤとチェックデータＣとを同一のメモリに格納した場合に発生する、ソフトエラーに起因する１ビットエラーおよび２ビットエラーの発生パターンを考えてみる。
【００１８】
メモリに１つのアルファ粒子が衝突すると、１ビットエラーもしくは２ビットエラーが発生する。ここで、複数のアルファ粒子が同時にメモリに衝突する確率は無視できるほど小さいので、ソフトエラーに起因する１ビットエラーおよび２ビットエラーのパターンは、下記の５つのパターンａ〜ｅとなる（図２参照）。
【００１９】
・パターンａ…データＤのみに１ビットエラーが発生し、チェックデータＣにはビットエラーが発生していないパターン。
・パターンｂ…データＤのみに２ビットエラーが発生し、チェックデータＣにはビットエラーが発生していないパターン。
・パターンｃ…チェックデータＣのみに１ビットエラーが発生し、データＤにはビットエラーが発生していないパターン。
・パターンｄ…チェックデータＣのみに２ビットエラーが発生し、データＤにはビットエラーが発生していないパターン。
・パターンｅ…データＤとチェックデータＣとに同時に１ビットずつエラーが発生するパターン。
【００２０】
従って、データＤとチェックデータＣとを同一のメモリに格納した場合は、上記５つのパターンａ〜ｅの全てについてエラー訂正能力を有するチェックデータＣを生成する必要がある。
【００２１】
次に、本実施の形態のようにデータＤとチェックデータＣとをデータメモリ１とチェックデータメモリ２とに分散して格納した場合について考えてみる。
【００２２】
上述した各パターンａ〜ｅのビットエラーの内、パターンａ，ｂのビットエラーは、データＤとチェックデータＣとを別々のメモリ１、２に格納した場合も、同一のメモリに格納した場合も同じ確率で発生する。従って、パターンａ，ｂのビットエラーを訂正するエラー訂正能力は、本実施の形態においてもチェックデータに組み込むことが必要になる。
【００２３】
パターンｃ，ｄのビットエラーは、データＤにはエラーが発生していないパターンである。従って、本実施の形態では、パターンｃ，ｄのビットエラーに関するエラー訂正機能はチェックビットに組み込まないようにする。
【００２４】
パターンｅのビットエラーは、データＤとチェックデータＣとを別々のメモリ１、２に格納することにより、その発生確率を無視できるほど小さくできる。即ち、パターンｅのビットエラーは、物理的に離れたデータメモリ１とチェックデータメモリ２との同一アドレスに同時にアルファ粒子や宇宙線が衝突した場合に発生するビットエラーであり、物理的に離れた２つのメモリ１、２の同一アドレスに同時にアルファ粒子などが衝突する確率は無視できるほど小さい。従って、パターンｅのビットエラーが発生する確率は、無視できるほど小さくなる。そこで、本実施の形態では、パターンｅのビットエラーを訂正するエラー訂正能力は、チェックデータに組み込まないようにする。
【００２５】
従って、本実施の形態のチェックデータ生成部３１では、パターンａ，ｂのビットエラーに対するエラー訂正能力を組み込んだチェックデータを生成する。チェックデータ生成部３１によって生成された上記チェックデータは、パターンａ〜ｅのビットエラーに対するエラー訂正能力が組み込まれたチェックデータに比較して、組み込まれている能力が少ないので、ビット数を少なくすることができる。
【００２６】
エラー訂正部３２は、データＤの読み出し時、チェックデータＣを利用したエラー訂正処理を行い、エラー訂正処理後のデータを８ビット構成（ＲＤ０〜ＲＤ７）のリードデータＲＤとして出力する。
【００２７】
〔実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。
【００２８】
先ず、データの書き込み時の動作について説明する。データの書き込み時、エラー訂正回路３内のチェックデータ生成部３１は、入力された８ビット構成（Ｄ０〜Ｄ７）のデータＤから下記の生成式１を満たす８ビット構成（Ｃ０〜Ｃ７）のチェックデータＣを生成する。そして、データＤ及びチェックデータＣを、それぞれデータメモリ１及びチェックデータメモリ２の同一アドレスに格納する。
【００２９】
＜生成式１＞
Ｃ０  ＝  Ｄ０  ＋  Ｄ１  ＋  Ｄ２  ＋  Ｄ３
Ｃ１  ＝  Ｄ４  ＋  Ｄ５  ＋  Ｄ６  ＋  Ｄ７
Ｃ２  ＝  Ｄ０  ＋  Ｄ１  ＋  Ｄ４  ＋  Ｄ５
Ｃ３  ＝  Ｄ０  ＋  Ｄ２  ＋  Ｄ４  ＋  Ｄ６
Ｃ４  ＝  Ｄ０  ＋  Ｄ３  ＋  Ｄ４  ＋  Ｄ６
Ｃ５  ＝  Ｄ２  ＋  Ｄ５  ＋  Ｄ６  ＋  Ｄ７
Ｃ６  ＝  Ｄ１  ＋  Ｄ４  ＋  Ｄ５
Ｃ７  ＝  Ｄ３  ＋  Ｄ７
【００３０】
ここで、データＤ及びチェックデータＣの各ビットは、０もしくは１のどちらかの値を取る２進数である。また、上記生成式１中の「＋」で表される記号は、
０  ＋  ０  ＝  ０
０  ＋  １  ＝  １
１  ＋  ０  ＝  １
１  ＋  １  ＝  ０
となる排他的論理和である。従って、例えば、Ｃ１の値は、データＤのビットＤ０、Ｄ１、Ｄ２、Ｄ３の中に値が１のビットが偶数個存在すれば０となり、奇数個存在すれば１となる。なお、上記生成式１は一例であり、他にも同等機能を実現可能な生成式のパターンは存在する。但し、どのような生成式であっても、それによって生成されたチェックデータＣが次の条件（１）、（２）を満たさなければならない。
【００３１】
（１）データメモリ１から読み出したデータＤに１ビットエラーもしくは２ビットエラーが発生している場合には、ビットエラーの発生位置の組み合わせ毎に、チェックデータＣの不一致ビットの発生位置の組み合わせが異なるものになる。ここで、チェックデータＣの不一致ビットとは、データメモリ１から読み出したデータＤに対して生成式１で示される演算を行うことにより求めたチェックデータＣのビットＣ０〜Ｃ７に対する比較値Ｃ０'〜Ｃ７'と値が異なるものとなったチェックデータＣのビットをいう。例えば、ビットＣ０に対する比較値Ｃ０'は、Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３となり、チェックデータＣのビットＣ０〜Ｃ７に対する比較値Ｃ０'〜Ｃ７'が「１０１１１０００」で、チェックデータのビットＣ０〜Ｃ７の値が「００００００００」であれば、不一致ビットは、ビットＣ０，Ｃ２，Ｃ３，Ｃ４となる。
（２）データメモリ１から読み出したデータＤに１ビットエラーもしくは２ビットエラーが発生している場合には、チェックビットＣにおける不一致ビットの数が３ビット以上となり、チェックデータに１ビットエラーもしくは２ビットエラーが発生している場合は、不一致ビット数が２ビット以下となる。
【００３２】
次に、データ読み出し時の動作について説明する。データの読み出し時、エラー訂正回路３内のエラー訂正部３２は、データメモリ１から読み出したデータＤの各ビットＤ０〜Ｄ７に対して生成式１で示される演算を行うことにより、ビットＣ０〜Ｃ７に対する比較値Ｃ０'〜Ｃ７'を求める。その後、エラー訂正部３２は、この演算により求めた比較値Ｃ０'〜Ｃ７'と、チェックデータメモリ２から読み出したチェックデータＣの各ビットＣ０〜Ｃ７の値とを比較する。
【００３３】
ビットエラーが発生していない場合は、演算した比較値Ｃ０'〜Ｃ７'とチェックデータＣの各ビットＣ０〜Ｃ７の値とは全て一致するはずである。これに対して、１ビットエラーもしくは２ビットエラーが発生した場合は、比較値Ｃ０'〜Ｃ７'の中に、チェックデータＣの対応するビットＣ０〜Ｃ７と値が異なるものが発生する。ビットエラーの発生位置と、不一致ビットの発生位置との対応関係を表す表１を図３に示す。なお、表１においては、不一致ビットの発生位置を「×」で表記している。
【００３４】
表１から分かるように、データＤのビットＤ０〜Ｄ７で１ビットエラーもしくは２ビットエラーが発生した場合は、ビットエラーの発生位置の組み合わせ毎に、不一致ビットの発生位置の組み合わせが異なるものになる。例えば、ビットエラーの発生位置がビットＤ０である場合は、不一致ビットの発生位置はビットＣ０，Ｃ２〜Ｃ４となり、ビットエラーの発生位置がビットＤ０とＤ１の２ビットである場合は、不一致ビットの発生位置はＣ３，Ｃ４，Ｃ６となるというように、ビットエラーの発生位置の組み合わせ毎に、不一致ビットの発生位置の組み合わせが異なるものとなる。従って、エラー訂正部３２では、不一致ビットの発生位置に基づいてビットエラーの発生位置を特定できるので、エラーの発生したビットを訂正することができる。そして、訂正したデータを８ビット構成（ＲＤ０〜ＲＤ７）のリードデータＲＤとして出力する。
【００３５】
また、表１の「×の数」欄から、１ビットエラーもしくは２ビットエラーの場合はビットＣ０〜Ｃ７のうち必ず３ビット以上が「×」（不一致ビット）となることが分かる。チェックデータＣで１ビットエラーもしくは２ビットエラーが発生した場合は、「×」の数が１個もしくは２個となるので、チェックデータでのビットエラーであると判断できる。この場合、必要としているデータＤ部分でのビットエラーは発生していないので、エラーを訂正する必要はない。チェックデータＣはあくまでデータＤの正当性を保証するためののものであり、チェックデータＣの正当性は保証する必要はないからである。従って、この場合は、データＤをそのままリードデータＲＤとして出力する。
【００３６】
データＤで１ビット、チェックデータＣで１ビットの合計２ビットエラーが発生した場合には、適切なエラーを検出ができない、もしくは誤検出してしまう可能性がある。しかし、本実施の形態では、前述したようにデータとチェックデータとを物理的に離れたデータメモリ１とチェックデータメモリ２とに分散して格納することにより、上記した状況が発生する確率を無視できるほど小さくしているので問題はない。なお、３ビット以上のエラーが発生した場合は、これを検出できない、もしくは誤検出してしまう。しかし、メモリ個別の故障によるビットエラーは、メモリの製造検査段階で取り除かれるため、アルファ粒子などの衝突によって３ビット以上のエラーが発生する確率は無視でき、問題はない。
【００３７】
なお、上述した説明ではデータＤのビット数を８ビットとしたが、データＤのビット数はこれに限られるものではない。
【００３８】
〔実施の形態の効果〕
本実施の形態によれば、データＤに対するチェックデータＣの比率を大きくすることなく、データＤの２ビットエラーを訂正することが可能になるという効果を得ることができる。その理由は、データＤとチェックデータＣとをデータメモリ１とチェックデータメモリ２とに分散して格納することによりデータＤとチェックデータＣとに同時に１ビットエラーが発生する確率を無視できるほど小さくし、チェックデータには、エラー訂正能力としてデータＤに対する１ビットエラーおよび２ビットエラーを訂正する能力だけを組み込めば良いようにしているからである。
【産業上の利用可能性】
【００３９】
本発明は、顧客情報や課金情報など、重要な情報を保管する必要のあるサーバなどに適用できる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態の構成例を示すブロック図である。
【図２】チェックデータのビット数を少なくすることができる理由を説明するための図である。
【図３】ビットエラーの発生位置と、チェックデータＣの不一致ビットの発生位置との関係を表す表１を示した図である。
【符号の説明】
【００４１】
１…データメモリ
２…チェックデータメモリ
３…エラー訂正回路
３１…チェックデータ生成部
３２…エラー訂正部
【図１】
2010140232.tif 000003
【図２】
2010140232.tif 000004
【図３】
2010140232.tif 000005