(57)【要約】  データビットと、データビットの反転の有無を示す付加ビットと、データビット及び付加ビットの誤り訂正のための検査ビットとを有するデータをメモリから読み出し、データビット及び付加ビットの誤り訂正を行い、誤り訂正された付加ビットの値が１である場合はデータビットの反転を行ってメモリからの読み出しデータとして出力し、誤り訂正された付加ビットの値が０である場合はデータビットの反転を行わずにメモリからの読み出しデータとして出力する。
2011030410.tif 000002
【特許請求の範囲】
【請求項１】
ｉビット（ｉは２以上の整数）のデータビットと、誤り訂正用のｊビット（ｊは２以上の整数）の検査ビットと、前記データビット及び／又は前記検査ビットを少なくとも１ビット含むｋ個（ｋは１以上の整数）のビットグループにそれぞれ対応し、対応するビットグループが反転されているか否かを示すｋビットの付加ビットと、を前記メモリに書き込む書き込み装置と、
前記メモリから前記データビット、前記検査ビット、及び前記付加ビットを読み出す読み出し部と、
前記メモリから読み出された前記検査ビットに基づいて、前記メモリから読み出された前記データビット及び前記付加ビットの誤りを訂正する訂正部と、
前記誤り訂正された前記付加ビットが反転を行ったことを示す場合は当該付加ビットに対応するビットグループに含まれる前記データビットを反転して前記メモリからの読み出しデータとして出力し、前記誤り訂正された前記付加ビットが反転を行っていないことを示す場合は当該付加ビットに対応するビットグループに含まれる前記データビットを反転せずに前記メモリからの読み出しデータとして出力する反転部と、
を備えるメモリ装置。
【請求項２】
前記訂正部は、シンドローム計算を行う複数のＸＯＲ素子を有し、前記複数のＸＯＲ素子はそれぞれ前記メモリから読み出された前記データビット、前記検査ビット、及び前記付加ビットのうちの偶数個のビットが与えられることを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記書き込み装置は、
前記データビットにｋビットの所定値を前記付加ビットとして追加する第１追加部と、
前記付加ビット及び前記データビットの誤り訂正を行うための前記検査ビットを算出し、前記データビットに追加する第２追加部と、
前記ビットグループの反転を行うか否か判定する判定部と、
前記判定部により反転すると判定されたビットグループに対応する付加ビットをビットグループが反転されていることを示す値に設定し、前記判定部により反転しないと判定されたビットグループに対応する付加ビットをビットグループが反転されていないことを示す値に設定する設定部と、
ビットグループが反転されていることを示す値に設定された付加ビットに対応するビットグループを反転して出力し、ビットグループが反転されていないことを示す値に設定された付加ビットに対応するビットグループを反転せずに出力する第２反転部と、
前記第２反転部から出力されたビットグループ及び当該ビットグループに対応する付加ビットを前記メモリに書き込む書き込み部と、
を有することを特徴とする請求項２に記載のメモリ装置。
【請求項４】
前記書き込み装置は、前記書き込み部が前記メモリに書き込んだデータを読み出す第２読み出し部をさらに有し、
前記判定部は、前記書き込み部が書き込んだデータと、前記第２読み出し部が読み出したデータとを比較し、
前記設定部は、前記判定部による比較結果が不一致となるビットを含むビットグループに対応する付加ビットの値を反転した値に再設定し、
前記第２反転部は、前記再設定された付加ビットに基づいて当該付加ビットに対応するビットグループに対して再反転処理を行い、
前記書き込み部は、前記再設定された付加ビット及び前記再反転処理されたビットグループを前記メモリに書き込むことを特徴とする請求項３に記載のメモリ装置。
【請求項５】
前記メモリはｋ個の記憶領域を含み、
前記書き込み部は、第ｍの付加ビット（ｍは１≦ｍ≦ｋの範囲における連続する整数）及び前記第ｍの付加ビットに対応するビットグループを第ｍの記憶領域に書き込むことを特徴とする請求項４に記載のメモリ装置。
【請求項６】
前記判定部は、前記ｋ個のビットグループの各々に含まれる論理値が１又は０のビット数をカウントし、カウント値が所定値以上のビットグループを反転すると判定し、前記カウント値が前記所定値未満のビットグループは反転しないと判定することを特徴とする請求項３に記載のメモリ装置。
【請求項７】
前記読み出し部は、前記書き込み部が前記メモリに書き込んだデータを読み出して前記判定部へ出力し、
前記判定部は、前記書き込み部が書き込んだデータと、前記読み出し部が読み出したデータとを比較し、
前記設定部は、前記判定部による比較結果が不一致となるビットを含むビットグループに対応する付加ビットの値を反転した値に再設定し、
前記第２反転部は、前記再設定された付加ビットに基づいて当該付加ビットに対応するビットグループに対して再反転処理を行い、
前記書き込み部は、前記再設定された付加ビット及び前記再反転処理されたビットグループを前記メモリに書き込むことを特徴とする請求項３に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置に関する。
【背景技術】
【０００２】
高集積度のメモリチップには、個々のメモリセル（１ビットの記憶素子）の製造時の加工精度のばらつきによって、所望の動作を行わない不良メモリセルが混在する。そのため、ＲＯＭやＰＲＯＭのような読み出し専用メモリでは、０又は１のいずれか一方しか記憶できない不良メモリセルに対して、その不良メモリセルが記憶できない値を記憶させる場合、ビットシーケンス内の各データビットの値を反転して記憶させ、追加メモリコンポーネントが、データを反転させたことを示す情報を記憶する（例えば特許文献１参照）。データ読み出し時は、追加メモリコンポーネントの情報を参照し、データ記憶時に反転させたことが示されている場合は、読み出したデータを反転して使用する。【０００３】
メモリセルを低抵抗状態か高抵抗状態のいずれかにし、一方を論理値０に、他方を論理値１に対応させてデータを記憶するＭＲＡＭやＲｅＲＡＭでは、データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいかで論理値０か１（又は１か０）かを判断する。【０００４】
このようなメモリには、低抵抗時でも高抵抗時でも抵抗値が閾値よりも小さくなる（又は大きくなる）不良メモリセルが存在しうる。このような不良メモリセルは、０を書き込んでも１を書き込んでも、常に０又は１のいずれかが読み出されることになる。【０００５】
ＭＲＡＭやＮＡＮＤフラッシュメモリのような高い誤り率を持つメモリの不良メモリセルを救済するには誤り訂正符号（ＥＣＣ）のみでは不十分であるため、上記従来手法のような追加メモリコンポーネントを設ける事が考えられる。しかし、追加メモリコンポーネントの値を誤って読み出した場合には、読み出したデータが誤って反転され、ＥＣＣを用いて誤り訂正を行うことができず、読み出しデータの信頼性を低下させるという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３１９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、誤り訂正能力が高く、読み出しデータの信頼性が向上したメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によるメモリ装置は、ｉビット（ｉは２以上の整数）のデータビットと、誤り訂正用のｊビット（ｊは２以上の整数）の検査ビットと、前記データビット及び／又は前記検査ビットを少なくとも１ビット含むｋ個（ｋは１以上の整数）のビットグループにそれぞれ対応し、対応するビットグループが反転されているか否かを示すｋビットの付加ビットと、を前記メモリに書き込む書き込み装置と、前記メモリから前記データビット、前記検査ビット、及び前記付加ビットを読み出す読み出し部と、前記メモリから読み出された前記検査ビットに基づいて、前記メモリから読み出された前記データビット及び前記付加ビットの誤りを訂正する訂正部と、前記誤り訂正された前記付加ビットが反転を行ったことを示す場合は当該付加ビットに対応するビットグループに含まれる前記データビットを反転して前記メモリからの読み出しデータとして出力し、前記誤り訂正された前記付加ビットが反転を行っていないことを示す場合は当該付加ビットに対応するビットグループに含まれる前記データビットを反転せずに前記メモリからの読み出しデータとして出力する反転部と、を備えるものである。
【発明の効果】
【０００９】
本発明によれば、読み出しデータの信頼性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るメモリ装置を示すブロック図。
【図２】書き込み装置内の反転部の概略構成図。
【図３】誤り訂正部の概略構成図。
【図４】シンドローム計算部の概略構成図。
【図５】誤りビット検出部の概略構成図。
【図６】読み出し装置内の反転部の概略構成図。
【図７】第２の実施形態に係るメモリ装置を示すブロック図。
【図８】書き込み方法を説明するフローチャート。
【図９】付加ビットとビットグループの対応関係を示す図。
【図１０】書き込み装置内の反転部の概略構成図。
【図１１】シンドローム計算部の概略構成図。
【図１２】変形例によるメモリ装置を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１２】
（第１の実施形態）図１に本発明の第１の実施形態に係るメモリ装置の概略構成を示す。メモリ装置はメモリ１、メモリ１へのデータ書き込みを行う書き込み装置２、及びメモリ１からのデータ読み出しを行う読み出し装置３を備える。
【００１３】
書き込み装置２は、付加ビット追加部２１、検査ビット追加部２２、判定部２３、付加ビット設定部２４、反転部２５、及び書き込み部２６を有する。
【００１４】
付加ビット追加部２１には、メモリ１への書き込みデータとして複数ビットのデータビット（以下、主データと称する）が与えられる。付加ビット追加部２１は、入力された主データの上位ビット側に１ビット以上の付加ビットを追加する。付加ビットは、付加ビットより下位側のデータが反転部２５において反転されるか否かを示す。
【００１５】
付加ビット追加部２１において追加される付加ビットの値は予め設定しておくことができる。例えば、付加ビット追加部２１は、５ビットの主データ｛ｘ０、ｘ１、ｘ２、ｘ３、ｘ４｝が与えられ、１ビットの付加ビット｛ａ０｝を追加し、６ビットのデータ｛ａ０、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４｝を出力する。
【００１６】
付加ビットは、後の付加ビット設定部２４による異なる値に変更され得る。
【００１７】
検査ビット追加部２２は、付加ビット及び主データから検査ビットを算出し、主データの下位ビット側に検査ビットを追加する。ここで検査ビットは、ハミング符号等の線形符号による誤り訂正のために追加される冗長ビットである。
【００１８】
例えば、検査ビット追加部２２は、６ビットのデータ｛ａ０、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４｝の誤り訂正のための４ビットの検査ビット｛ｃ０、ｃ１、ｃ２、ｃ３｝を算出して追加し、１０ビットのデータ｛ａ０、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｃ０、ｃ１、ｃ２、ｃ３｝を出力する。
【００１９】
この時、検査ビットは、ｃ０＝ｘ０＋ｘ１＋ｘ２、ｃ１＝ｘ０＋ｘ３＋ｘ４、ｃ２＝ｘ１＋ｘ３＋ａ０、ｃ３＝ｘ２＋ｘ４＋ａ０により求められる。なお、計算はすべてモジュロ２演算である。
【００２０】
判定部２３は、付加ビット、主データ、及び検査ビットに含まれる０又は１の個数をカウントし、カウント値及びメモリ１の特性に基づいて、付加ビット、主データ、及び検査ビットを反転するか否かを判定する。
【００２１】
例えば、メモリ１が、異なる２つの抵抗値を持つことのできるメモリセルを用いる電気的に書き替え可能なＭＲＡＭである場合、メモリセルを低抵抗状態か高抵抗状態のいずれかにすることで、一方を論理値０、他方を論理値１に対応させてデータが記憶される。データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいかによって、論理値０か１か（あるいは１か０か）が判断される。
【００２２】
ＭＲＡＭでは、書き込みと読み出しとで同様の動作が行われ、読み出しはメモリの内容が書き換わらない程度の強度で行われる。例えば、読み出し時には０を書き込むときと同じ方向に電流を流し、その時の抵抗値によって０か１かの判別を行う。この時、１であったメモリの内容が０に書き換わる、いわゆるリードディスターブが発生し得る。
【００２３】
通常のＭＲＡＭでは、読み出し時にどちらの方向に電流を流すかはデバイスの特性によって設計時に固定される。そのため、例えば読み出し時には０を書き込むときと同じ方向に電流を流すように設計されている場合、リードディスターブは１と記録したデータが０に書き換わる場合に限られる。従って、データをメモリに書き込む際に、値が０のビット数が多くなるように書き込むことによって、リードディスターブの対象となるビットが減り、全体としてリードディスターブ確率が減少する。
【００２４】
判定部２３は、このようなメモリの特性を考慮し、リードディスターブの対象となるビットが減るように、付加ビット、主データ、及び検査ビットを反転するか否かを判定する。例えば、メモリ１において、１が０に書き換わるリードディスターブが発生し得る場合、判定部２３は付加ビット、主データ、及び検査ビットに含まれる値が１のビット数をカウントする。そして、判定部２３は、カウント値が付加ビット、主データ、及び検査ビットの全ビット数の半分以上であった場合、反転すると判定する。逆に、判定部２３は、カウント値が付加ビット、主データ、及び検査ビットの全ビット数の半分未満であった場合、反転しないと判定する。
【００２５】
判定部２３は、判定結果を付加ビット設定部２４に通知する。
【００２６】
付加ビット設定部２４は、判定部２３から通知された判定結果に基づいて、付加ビットの値を設定する。付加ビット設定部２４は、通知された判定結果が反転を行うことを示している場合、付加ビットを、反転部２５において主データ及び検査ビットが反転されるような値に変更する。
【００２７】
反転部２５は、付加ビットがデータの反転を行うことを示している場合は、主データ及び検査ビットの反転を行い、付加ビットがデータの反転を行わないことを示している場合は、与えられたデータをそのまま出力する。
【００２８】
上記１０ビットのデータ｛ａ０、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｃ０、ｃ１、ｃ２、ｃ３｝の反転処理を行う反転部２５の構成の一例を図２に示す。反転部２５は９個のＸＯＲ素子４１〜４９を有する。各ＸＯＲ素子にはｘ０〜ｃ３のいずれかと、ａ０とが与えられる。例えば、ＸＯＲ素子４１はａ０及びｘ０が与えられ、ｘ０’を出力する。
【００２９】
ａ０が０であった場合、ＸＯＲ素子４１〜４９から出力されるｘ０’〜ｃ３’はｘ０〜ｃ３と同じ値になる。一方、ａ０が１であった場合、ＸＯＲ素子４１〜４９から出力されるｘ０’〜ｃ３’はｘ０〜ｃ３を反転した値になる。
【００３０】
すなわち、この例では、付加ビットａ０が１の時、主データ及び検査ビットが反転され、付加ビットａ０が０の時、主データ及び検査ビットはそのまま出力される。従って、付加ビット設定部２４は、判定部２３から通知された判定結果が反転を行うことを示している場合は付加ビットａ０に１を設定し、反転を行わないことを示している場合は付加ビットａ０に０を設定する。
【００３１】
書き込み部２６は、反転部２５から出力されたデータをメモリ１に書き込む。例えば、書き込み部２６は、図２に示す反転部２５から出力される１０ビットのデータ｛ａ０、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｃ０’、ｃ１’、ｃ２’、ｃ３’｝をメモリ１に書き込む。
【００３２】
なお、図１では、メモリ１のデータ書き込み先や読み出し先を示すアドレス信号線、書き込みや読み出しのタイミングを示す制御信号線等は図示していない。
【００３３】
読み出し装置３は、読み出し部３１、誤り訂正部３２、及び反転部３３を有する。
【００３４】
読み出し部３１はメモリ１からデータを読み出す。読み出し部３１が読み出すデータは、書き込み部２６がメモリ１に書き込むデータと同様に、付加ビット、主データ、及び検査ビットからなる。
【００３５】
誤り訂正部３２は、読み出し部３１が読み出したデータについてシンドローム計算を行い、主データ及び付加ビットに誤りがあるか否かを検出し、誤りを検出した場合は誤りを訂正する。
【００３６】
読み出し部３１が、書き込み部２６により書き込まれた１０ビットのデータ｛ａ０、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’、ｃ０’、ｃ１’、ｃ２’、ｃ３’｝に対応するデータ｛ａ０”、ｘ０”、ｘ１”、ｘ２”、ｘ３”、ｘ４”、ｃ０”、ｃ１”、ｃ２”、ｃ３”｝をメモリ１から読み出す場合の誤り訂正部３２の構成の一例を図３に示す。誤り訂正部３２は、シンドローム計算部５０、誤りビット検出部５１、及びＸＯＲ素子５２〜５７を有する。
【００３７】
シンドローム計算部５０は読み出されたデータを用いてシンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝を計算する。シンドロームは、ｓ０＝ｘ０”＋ｘ１”＋ｘ２”＋ｃ０”、ｓ１＝ｘ０”＋ｘ３”＋ｘ４”＋ｃ１”、ｓ２＝ｘ１”＋ｘ３”＋ａ０”＋ｃ２”、ｓ３＝ｘ２”＋ｘ４”＋ａ０”＋ｃ３”により求められる。なお、計算はすべてモジュロ２演算である。
【００３８】
シンドローム計算部５０は、図４に示すような構成で実現できる。この時、ＸＯＲ素子６１〜６４への入力データ数を偶数にすることができる。
【００３９】
誤りビット検出部５１は、シンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝に基づいて、誤りビットの検出を行う。例えば、シンドロームが１１００の場合はｘ０”が誤っていることが分かる。同様に、シンドロームが１０１０の場合はｘ１”、シンドロームが１００１の場合はｘ２”、シンドロームが０１１０の場合はｘ３”、シンドロームが０１０１の場合はｘ４”、シンドロームが００１１の場合はａ０”、シンドロームが１０００の場合はｃ０”、シンドロームが０１００の場合はｃ１”、シンドロームが００１０の場合はｃ２”、シンドロームが０００１の場合はｃ３”が誤っていることが分かる。
【００４０】
誤りビット検出部５１の構成の一例を図５に示す。誤りビット検出部５１は比較器７１〜７６を有する。比較器７１はシンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝と、｛０、０、１、１｝とを比較し、一致した場合は１、不一致の場合は０をＸＯＲ素子５２へ出力する。比較結果が一致するのはａ０”が誤っている場合であり、ＸＯＲ素子５２へ１を出力することでａ０”を反転して誤りを訂正することができる。
【００４１】
比較器７２〜７６も同様に、シンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝からｘ０”〜ｘ４”が誤っているか否かを検出し、誤っている場合は対応するＸＯＲ素子５３〜５７へ１を出力して誤りを訂正する。
【００４２】
ＸＯＲ素子５２〜５７から出力される６ビットのデータ｛ａ０、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’｝は誤り訂正された付加ビット及び主データとなる。
【００４３】
反転部３３は、誤り訂正部３２から出力されたデータの付加ビットの値に応じて主データの反転を行い、読み出しデータとして出力する。
【００４４】
誤り訂正部３２から６ビットのデータ｛ａ０、ｘ０’、ｘ１’、ｘ２’、ｘ３’、ｘ４’｝が出力される場合の反転部３３の構成の一例を図６に示す。反転部３３は５個のＸＯＲ素子８１〜８５を有する。各ＸＯＲ素子にはｘ０’〜ｘ４’のいずれかと、ａ０とが与えられる。例えば、ＸＯＲ素子８１はａ０及びｘ０’が与えられ、ｘ０を出力する。
【００４５】
ａ０が０であった場合、ＸＯＲ素子８１〜８５から出力されるｘ０〜ｘ４はｘ０’〜ｘ４’と同じ値になる。一方、ａ０が１であった場合、ＸＯＲ素子８１〜８５から出力されるｘ０〜ｘ４はｘ０’〜ｘ４’を反転した値になる。
【００４６】
次に、５ビットの主データ｛ｘ０、ｘ１、ｘ２、ｘ３、ｘ４｝が００１１１である場合を例にして、メモリ装置の各部の動作を説明する。
【００４７】
付加ビット追加部２１は、１ビットの付加ビットを追加する。ここでは０を追加するものとする。これにより、付加ビット追加部２１からは０００１１１が出力される。
【００４８】
検査ビット追加部２２は、上述した計算により、０００１１１に対する４ビットの検査ビット１０１０を算出する。検査ビット追加部２２からは０００１１１１０１０が出力される。
【００４９】
判定部２３が１又は０の値のビット数をカウントし、メモリ１の特性に基づいて、データの反転を行うか否かを判定する。ここでは値が０のビット数と値が１のビット数が同じであるが、判定部２３は反転を行うと判定するものとする。
【００５０】
付加ビット設定部２４は、判定部２３の判定結果に基づいて、付加ビットの値を０から１に変更する。これにより、付加ビット設定部２４からは１００１１１１０１０が出力され、図２に示すような反転部２５に入力される。
【００５１】
付加ビットが１であるため、反転部２５により、主データ部分（００１１１）及び検査ビット部分（１０１０）が反転される。これにより、反転部２５からは１１１００００１０１が出力され、このデータが書き込み部２６によりメモリ１に書き込まれる。
【００５２】
読み出し部３１がメモリ１から誤りなくデータを読み出した場合、読み出したデータは１１１００００１０１０となる。これについて図４に示すシンドローム計算部５０がシンドローム計算を行うと、シンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝は００００となり、誤りがないことが分かる。これにより、誤り訂正部３２からは１１１０００が出力される。
【００５３】
図６に示すような反転部３３に１１１０００が入力されると、付加ビットが１であるため、主データ部分（１１０００）が反転され、００１１１が読み出しデータとして出力される。書き込み装置２に与えられた書き込みデータ（主データ）と、読み出し装置３から出力される読み出しデータとが一致することが分かる。
【００５４】
次に、読み出し部３１がメモリ１から読み出したデータに誤りがあった場合について説明する。ａ０の位置のデータが誤っており、読み出し部３１が読み出したデータが０１１００００１０１０であったとする。
【００５５】
これについて図４に示すシンドローム計算部５０がシンドローム計算を行うと、シンドローム｛ｓ０、ｓ１、ｓ２、ｓ３｝は００１１となる。これはａ０が誤った場合のシンドロームであり、誤りビット検出部５１の比較器７１からＸＯＲ素子５２へ１が出力される。これにより、ａ０の位置のデータを正しく訂正することができ、誤り訂正部３２から１１１０００が出力される。以降の処理は上記と同様であり、反転部３３から００１１１が読み出しデータとして出力される。書き込み装置２に与えられた書き込みデータ（主データ）と、読み出し装置３から出力される読み出しデータとが一致することが分かる。
【００５６】
このように、本実施形態では、データ反転の有無を示す付加ビットについても誤り訂正される。そのため、データ読み出し時に誤ってデータが反転されることを防止することができ、読み出しデータの信頼性を向上させることができる。
【００５７】
また、メモリ１の特性に応じて１又は０のビット数が多くなるようにデータを反転してメモリ１に記憶させるため、リードディスターブ確率を減少させ、読み出しデータの信頼性をさらに向上させることができる。
【００５８】
（第２の実施形態）図７に本発明の第２の実施形態に係るメモリ装置の概略構成を示す。本実施形態では、メモリ１が複数の記憶領域（メモリチップ）を有しており、ここでは８つの記憶領域１１〜１８を有しているものとして説明を行う。また、書き込み装置２には、読み出し部２７がさらに設けられており、判定部２３の機能が上記第１の実施形態と異なる。これらの点以外は、図１に示す第１の実施形態と同様となっている。図７において、図１に示す第１の実施形態と同一部分には同一符号を付して説明を省略する。
【００５９】
書き込み装置２によるメモリ１へのデータ書き込み動作を図８に示すフローチャートを用いて説明する。
【００６０】
（ステップＳ１０１）メモリ１に書き込む主データが、書き込み装置２の付加ビット追加部２１に入力される。例えば６４ビットの主データ｛ｘ０〜ｘ６３｝が入力される。
【００６１】
（ステップＳ１０２）付加ビット追加部２１が、主データの上位ビット側に１ビット以上の所定値を付加ビットとして追加する。例えば、６４ビットの主データ｛ｘ０〜ｘ６３｝の上位ビット側に８ビットの付加ビット｛ａ０〜ａ７｝が追加される。
【００６２】
（ステップＳ１０３）検査ビット追加部２２が、付加ビット及び主データから検査ビットを算出し、主データの下位ビット側に検査ビットを追加する。例えば８ビットの付加ビット｛ａ０〜ａ７｝及び６４ビットの主データ｛ｘ０〜ｘ６３｝からなる７２ビットのデータ｛ａ０〜ａ７、ｘ０〜ｘ６３｝について、拡大ハミング符号による誤り訂正のための８ビットの検査ビット｛ｃ０〜ｃ７｝が算出され、追加される。
【００６３】
（ステップＳ１０４）付加ビット設定部２４が、すべての付加ビットを０に設定する。
【００６４】
（ステップＳ１０５）付加ビットが０であるため反転部２５は反転を行わずに書き込み部２６へデータを出力する。
【００６５】
ここで、反転部２５は、付加ビットの値が０の時に、当該付加ビットに対応するビットグループを反転せずに出力し、付加ビットの値が１の時に、当該付加ビットに対応するビットグループを反転して出力する。
【００６６】
付加ビットとビットグループの対応関係について説明する。ｋビット（ｋは１以上の整数）の付加ビット、ｉビット（ｉは２以上の整数）の主データ、ｊビット（ｊは２以上の整数）の検査ビットを含むデータの場合、各付加ビットは、主データ及び検査ビットをｋ分割したビットグループに対応する。
【００６７】
例えば、書き込みデータが８ビットの付加ビット｛ａ０〜ａ７｝、６４ビットの主データ｛ｘ０〜ｘ６３｝、及び８ビットの検査ビット｛ｃ０〜ｃ７｝からなる８０ビットのデータである場合、付加ビットとビットグループは図９に示すような対応関係となる。つまり、１ビットの付加ビットに、９ビットの主データ及び／又は検査ビットからなるビットグループが対応する。このとき、反転部２５は図１０に示すような構成となる。
【００６８】
また、上記第１の実施形態において一例として挙げた１０ビットのデータ｛ａ０、ｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｃ０、ｃ１、ｃ２、ｃ３｝の場合、付加ビットａ０に、５ビットの主データ｛ｘ０、ｘ１、ｘ２、ｘ３、ｘ４｝及び４ビットの検査ビット｛ｃ０、ｃ１、ｃ２、ｃ３｝からなるビットグループが対応することになる。
【００６９】
書き込み部２６は、反転部２５から出力されたデータをメモリ１に書き込む。
【００７０】
書き込み部２６は、各付加ビットと、各付加ビットに対応するビットグループとを組み合わせて、複数の記憶領域（メモリチップ）のいずれかに書き込む。例えば、各付加ビット及び対応ビットグループは、記憶領域１１〜１８に順に割り当てられ、割り当てられた記憶領域に書き込まれる。
【００７１】
例えば図９及び図１０に示す例では、付加ビットａ０及び対応ビットグループｘ０’〜ｘ８’が記憶領域１１に書き込まれる。
【００７２】
（ステップＳ１０６）読み出し部２７が、ステップＳ１０５で書き込まれたデータをメモリ１の各記憶領域から読み出し、判定部２３へ出力する。
【００７３】
（ステップＳ１０７）判定部２３が、ステップＳ１０５で書き込まれたデータと、ステップＳ１０６で読み出されたデータとを比較する。比較は、記憶領域単位で、すなわち各付加ビット及び対応ビットグループについて行われる。
【００７４】
（ステップＳ１０８）比較結果が不一致のデータがある場合はステップＳ１０９へ進み、すべて一致する場合は書き込み処理を終了する。例えば、読み出しデータが必ず１になる不良メモリセルに０が書き込まれた場合、書き込みデータと読み出しデータとが不一致になる。
【００７５】
（ステップＳ１０９）付加ビット設定部２４が、比較結果が不一致であったデータに対応する付加ビットを１に変更する。
【００７６】
（ステップＳ１１０）反転部２５が、ステップＳ１０９において０から１に変更された付加ビットに対応するビットグループを反転して書き込み部２６に出力する。
【００７７】
（ステップＳ１１１）書き込み部２６が、反転された付加ビット及びビットグループを、割り当てられた記憶領域に書き込む。
【００７８】
ここで例として、付加ビットａ３の対応ビットグループであるｘ２７〜ｘ３５が０１０１０１０１０であった場合の各部の動作を説明する。
【００７９】
まず、付加ビット設定部２４は付加ビットａ３に０を設定するため、反転部２５はｘ２７〜ｘ３５の反転を行わず、書き込み部２６は記憶領域１４に００１０１０１０１０を書き込む。
【００８０】
記憶領域１４においてｘ２９の位置に相当するメモリセルが、必ず１が読み出される不良メモリセルであった場合、読み出し部２７が読み出すデータは００１１１０１０１０となる。
【００８１】
判定部２３は、記憶領域１４に書き込まれたデータについて、書き込みデータと読み出しデータとが不一致であると判定し、判定結果を付加ビット設定部２４に通知する。
【００８２】
付加ビット設定部２４は、判定部２３による判定結果に基づいて、付加ビットａ３を０から１に変更する。反転部２５は付加ビットａ３が１であるため、対応ビットグループｘ２７〜ｘ３５を反転する。これにより、書き込み部２６により記憶領域１４に書き込まれるデータは１１０１０１０１０１となるため、ｘ２９の位置に相当するメモリセルが、必ず１が読み出される不良メモリセルであっても、正しい値を保持するメモリセルとして機能することができる。
【００８３】
なお、読み出し装置３による読み出し動作は上記第１の実施形態と同様である。誤り訂正部３２は読み出し部３１が読み出したデータについてシンドローム計算を行い、主データ及び付加ビットに誤りがあるか否かを検出し、誤りを検出した場合は誤りを訂正する。
【００８４】
読み出し部３１が、８ビットの付加ビット｛ａ０〜ａ７｝、６４ビットの主データ｛ｘ０〜ｘ６３｝、及び８ビットの検査ビット｛ｃ０〜ｃ７｝からなる８０ビットのデータ｛ａ０〜ａ７、ｘ０〜ｘ６３、ｃ０〜ｃ７｝を読み出した場合、読み出し部３１は以下のようなシンドローム計算を行い、シンドローム｛ｓ０〜ｓ７｝を算出する。計算はすべてモジュロ２演算である。
【００８５】
s0=x0+x4+x5+x6+x8+a0+x16+x17+x21+x24+x25+a2+x28+x29+x30+x31+x32+x34+x35+a3+x40+x43+x46+x47+x48+x51+x52+a5+ x54+x56+x62+a6+ x63+c0
s1=x0+x1+x5+x8+x9+x13+x14+x15+x17+a1+x25+x26+x30+x33+x34+a3+x37+x38+x39+x40+x41+x43+x44+a4+x49+x52+x55+x56+x57+x60+x61+a6+x63+c1
s2=x0+x2+x8+a0+x9+x10+x14+x17+x18+x22+x23+x24+x26+a2+x34+x35+x39+x42+x43+a4+x46+x47+x48+x49+x50+x52+x53+a5+x58+x61+c2+a7
s3=x1+x2+x3+x6+x7+a0+x9+x11+x17+a1+x18+x19+x23+x26+x27+x31+x32+x33+x35+a3+x43+x44+x48+x51+x52+a5+x55+x56+x57+x58+x59+x61+x62+a6+c3+a7
s4=x4+x7+x10+x11+x12+x15+x16+a1+x18+x20+x26+a2+x27+x28+x32+x35+x36+x40+x41+x42+x44+a4+x52+x53+x57+x60+x61+a6+c4+a7
s5=x1+x2+x3+x4+x5+x7+x8+a0+x13+x16+x19+x20+x21+x24+x25+a2+x27+x29+x35+a3+x36+x37+x41+x44+x45+x49+x50+x51+x53+a5+ x61+x62+ c5+a7
s6=x3+x6+x7+a0+x10+x11+x12+x13+x14+x16+x17+a1+x22+x25+x28+x29+x30+x33+x34+a3+x36+x38+x44+a4+x45+x46+x50+x53+x54+x58+x59+x60+x62+a6+c6+a7
s7=x0+x1+x2+x3+x4+x5+x6+x7+x8+a0+x9+x10+x11+x12+x13+x14+x15+x16+x17+a1+x18+x19+x20+x21+x22+x23+x24+x25+x26+a2+x27+x28+x29+x30+x31+x32+x33+x34+x35+a3+x36+x37+x38+x39+x40+x41+x42+x43+x44+a4+x45+x46+x47+x48+x49+x50+x51+x52+x53+a5+x54+x55+x56+x57+x58+x59+x60+x61+x62+a6+x63+c0+c1+c2+c3+c4+c5+c6+c7+a7
【００８６】
図１１は、上記の計算を行うシンドローム計算部５０の構成の一例を示す。シンドローム計算部５０を構成する複数のＸＯＲ素子にはそれぞれ偶数個のデータが与えられていることが分かる。
【００８７】
このように、本実施形態では、上記第１の実施形態と同様に、データ反転の有無を示す付加ビットについても誤り訂正される。そのため、データ読み出し時に誤ってデータが反転されることを防止することができ、読み出しデータの信頼性を向上させることができる。
【００８８】
また、本実施形態では、メモリ１に書き込んだデータと、メモリ１から読み出したデータとを比較し、不一致の場合はデータを反転して再度書き込む。そのため、０又は１のいずれか一方しか記憶できない不良メモリセルから正しい値を読み出すことができるようになる。
【００８９】
また、本実施形態では、データの再書き込みは、複数の記憶領域のうち読み出しデータが不一致であった記憶領域についてのみ行われるため、書き込みに要する時間の増加を抑制することができる。
【００９０】
上記第２の実施形態では図７に示すように、書き込み装置２に読み出し部２７を設けていたが、図１２に示すように読み出し装置３の読み出し部３１がメモリ１から読み出したデータを判定部２３へ出力し、書き込みデータと読み出しデータとが一致しているか否かの判定が行われるようにしてもよい。
【００９１】
上記第２の実施形態では、付加ビット設定部２４が付加ビットにまず０を設定する例について説明したが、各ビットグループ内のリードディスターブの対象となるビット数が減少するように付加ビットを設定してもよい。
【００９２】
上記実施形態に係る書き込み装置２では、付加ビット追加部２１を省略し、検査ビット追加部２２が付加ビットの追加をあわせて行うようにしてもよい。
【００９３】
上記実施形態では、図４、図１１に示すように、シンドローム計算部５０において、各ＸＯＲ素子への入力データ数が偶数になっている。これは、ＸＯＲ素子への入力データ数が奇数であった場合、シンドローム計算において間違った誤り検出を行ってしまうためである。
【００９４】
上記実施形態では、複数のビットグループのビット数が同じ場合について説明したが、異なっていてもよい。また、主データや検査ビットは複数のビットグループに属していてもよい。また、どのビットグループにも属さない主データや検査ビットがあってもよい。
【００９５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【産業上の利用可能性】
【００９６】
本発明は、線形符号により誤り訂正を行うメモリ装置において、読み出しデータの信頼性を向上させる分野に産業上の利用可能性がある。
【符号の説明】
【００９７】
１  メモリ
２  書き込み装置
３  読み出し装置
【図１】
2011030410.tif 000003
【図２】
2011030410.tif 000004
【図３】
2011030410.tif 000005
【図４】
2011030410.tif 000006
【図５】
2011030410.tif 000007
【図６】
2011030410.tif 000008
【図７】
2011030410.tif 000009
【図８】
2011030410.tif 000010
【図９】
2011030410.tif 000011
【図１０】
2011030410.tif 000012
【図１１】
2011030410.tif 000013
【図１２】
2011030410.tif 000014
【国際調査報告】
2011030410.tif 000015
2011030410.tif 000016
2011030410.tif 000017
2011030410.tif 000018