(57)【特許請求の範囲】
【請求項１】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路を備え、
前記符号処理回路は、
ｎビット（ｎは１以上の整数）の前記書き込み対象のデータに対して冗長化符号処理を行い、ｎ＋１ビットの冗長化データを生成する冗長化符号回路と、
選択信号に基づいてｎ＋１ビットの１又は０を選択するセレクタと、
前記冗長化データに含まれる前記所定値のビット数をカウントし、カウント数に基づいて前記選択信号を生成するカウント部と、
前記冗長化データと、前記セレクタの選択値との各ビットのＸＯＲ演算を行う演算部と、
を有し、前記演算部の演算結果が前記メモリに書き込まれ、
前記符号処理回路は、ｎ個のＸＯＲゲートを有し、
第１のＸＯＲゲートには前記書き込み対象のデータの１ビット目と０とが与えられ、
第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎを満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込み対象のデータのｋビット目が与えられ、
１ビット目が０、２ビット目が前記第１のＸＯＲゲートの出力値、ｋ＋１ビットが前記第ｋのＸＯＲゲートの出力値となる前記冗長化データを生成することを特徴とするメモリアクセス装置。
【請求項２】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路と、
前記メモリからｎ＋１ビット（ｎは１以上の整数）のデータを読み出す復号回路と、
を備え、
前記符号処理回路は、
ｎビットの前記書き込み対象のデータに対して冗長化符号処理を行い、ｎ＋１ビットの冗長化データを生成する冗長化符号回路と、
選択信号に基づいてｎ＋１ビットの１又は０を選択するセレクタと、
前記冗長化データに含まれる前記所定値のビット数をカウントし、カウント数に基づいて前記選択信号を生成するカウント部と、
前記冗長化データと、前記セレクタの選択値との各ビットのＸＯＲ演算を行う演算部と、
を有し、前記演算部の演算結果が前記メモリに書き込まれ、
前記復号回路は、ｎ個のＸＯＲゲートを有し、
第ｋのＸＯＲゲート（ｋは１≦ｋ≦ｎを満たす整数）には前記メモリから読み出されるデータのｋビット目とｋ＋１ビット目が与えられ、
ｋビット目が前記第ｋのＸＯＲゲートの出力値となる復号処理データを出力することを特徴とするメモリアクセス装置。
【請求項３】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路を備え、
前記符号処理回路は、ｎビット（ｎは１以上の整数）の前記書き込み対象のデータに対して冗長化符号処理を行い、複数のｎ＋ｍビット（ｍは１以上の整数）の冗長化データを生成し、前記複数の冗長化データのうち前記所定値をとるビットの個数が最小の冗長化データを選択し、
前記選択された冗長化データが前記メモリに書き込まれ、
ｎビットの前記書き込み対象のデータと、互いに異なるｍビットの種データとが与えられ、前記書き込み対象のデータに前記種データを付加したデータに対して冗長化符号処理を行いｎ＋ｍビットの冗長化データを生成する２ｍ個以下の複数個の冗長化符号回路と、  前記複数個の冗長化符号回路により生成された前記冗長化データのうち、前記所定値をとるビットの個数が最小の冗長化データを選択する偏向セレクタと、
を有し、前記偏向セレクタにより選択されたデータが前記メモリへ書き込まれることを特徴とするメモリアクセス装置。
【請求項４】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路を備え、
前記符号処理回路は、
前記書き込み対象のデータに、互いに異なる１ビット以上の反転ビットが付加されたデータに対して、所定の生成行列を用いて誤り訂正符号化処理を行い、誤り訂正符号化データを生成する複数の誤り訂正符号化部と、
前記複数の誤り訂正符号化部により生成された誤り訂正符号化データのうち、前記所定値をとるビットの個数が最小の誤り訂正符号化データを選択する偏向セレクタと、
を有し、前記偏向セレクタによって選択された誤り訂正符号化データが前記メモリに書き込まれることを特徴とするメモリアクセス装置。
【請求項５】
前記メモリから読み出したデータに対して前記生成行列に対応する検査行列を用いて復号及び誤り訂正を行い、前記反転ビット部分を破棄して出力する復号回路をさらに備えることを特徴とする請求項４に記載のメモリアクセス装置。
【請求項６】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路と、
前記メモリから読み出されるデータと、前記符号処理回路により生成されるデータとを比較する比較器と、
を備え、
前記符号処理回路は、
ｎビット（ｎは１以上の整数）の前記書き込み対象のデータに、互いに異なる種データが付加されたデータに対して冗長化符号処理を行い、ｎ＋ｍビット（ｍは１以上の整数）の冗長化データを生成する複数の冗長化符号回路と、
前記複数の冗長化符号回路により生成される前記冗長化データを、前記所定値をとるビットの個数が少ない順に選択し、前記比較器による比較結果が一致を示した時に選択していた冗長化データを前記メモリに書き込むデータとして確定する偏向セレクタと、
を有することを特徴とするメモリアクセス装置。
【請求項７】
前記複数の冗長化データのいずれか１つを復号処理しても前記書き込み対象のデータに前記種データが付加されたデータを生成する復号回路をさらに備え、
前記復号回路は、前記メモリからｎ＋ｍビットのデータを読み出し、復号処理を行い、前記種データ部分を破棄して出力することを特徴とする請求項６に記載のメモリアクセス装置。
【請求項８】
書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路を備え、
前記符号処理回路は、
前記書き込み対象のデータに第１反転ビットを付加したデータに対して、所定の生成行列を用いて誤り訂正符号化処理を行い、第１誤り訂正符号化データを生成する誤り訂正符号化部と、
前記第１誤り訂正符号化データの各ビットの値を反転するインバータ回路と、
前記第１誤り訂正符号化データ及び前記反転された第１誤り訂正符号化データのうち、前記所定値をとるビットの個数が少ない方を選択する偏向セレクタと、
を有し、
前記偏向セレクタによって選択されたデータが前記メモリに書き込まれ、
前記インバータ回路は、前記書き込み対象のデータに前記第１反転ビットとは異なる値を持つ第２反転ビットを付加したデータに対して、前記生成行列を用いて誤り訂正符号化処理を行って得られる第２誤り訂正符号化データと同じ値になるように、前記第１誤り訂正符号化データの各ビットの値を反転することを特徴とするメモリアクセス装置。
【請求項９】
書き込み対象のデータに互いに異なるデータ反転用ビットを付加して誤り訂正符号化処理すると得られる複数の誤り訂正符号化データのうち、リードディスターブの対象となるビットが少ない誤り訂正符号化データをメモリに書き込むことを特徴とするメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス装置に関するものである。
【背景技術】
【０００２】
高集積度のメモリチップでは、個々のメモリセル(１ビットの記憶素子)を構成する物質のサイズが小さくなることにより、製造時の加工精度に由来する特性のばらつきが大きくなることや、温度や電磁波などの外乱から受ける影響が大きくなることなどによって、メモリセルの内容が従来記憶すべき内容と違う内容に変化してしまう確率（誤り率）が上がっている。
【０００３】
この誤りへの対策としては、単純に加工精度を上げたり、外乱の影響を低減するようにガードしたりする他に、誤り訂正符号（ＥＣＣ）を用いて誤りビットを救済する方法が知られている。誤り率に関しては、外乱の他に、メモリのデバイスによる特性として存在する要因もある。
【０００４】
ＭＲＡＭやＲｅＲＡＭのように、異なる２つの抵抗値を持つことのできるメモリセルを用いる電気的に書き替え可能なメモリでは、メモリセルを低抵抗状態か高抵抗状態のいずれかにすることで、一方を論理値０、もう一方を論理値１に対応させてデータを記憶する。データの読み出し時には、メモリセルの抵抗値が閾値より小さいか大きいか否かで、論理値０か１か（あるいは１か０か）を判断する。
【０００５】
このようなメモリでは、読み出し時に抵抗値を直接測定することができないため、メモリセルに定電圧を掛けて電流値を測定したり、定電流を流して電圧値を測定したりすることによって、抵抗値を推定し論理値を決定する。
【０００６】
例えばＭＲＡＭでは、書き込みと読み出しとで同様の動作が行われ、読み出しはメモリの内容が書き換わらない程度の強度で行われる。例えば、読み出し時には０を書き込むときと同じ方向に電流を流し、その時の抵抗値によって０か１かの判別を行う。
【０００７】
この時、１であったメモリの内容が０に書き換わってしまう事がある。これはリードディスターブと呼ばれ、メモリセルの特性ばらつきの影響を受けるものであり、ＭＲＡＭでの誤り率を上げる大きな要因となっている。このリードディスターブが起こる確率(リードディスターブ確率)が上がると、従来の誤り訂正符号では誤りビットを救済しきれなくなるという問題があった。
【０００８】
メモリに書き込まれたデータのデータ破壊を防止するものとして、書き込みデータにおけるデータ「１」の数をカウントし、データ「１」の数が書き込みデータのビット数の半分以上の場合は書き込みデータを反転したデータを正規メモリ部に書き込み、反転させたことを示す情報を補助ワードメモリ部に書き込むことで、ドレインディスターブを低減させる不揮発性半導体記憶装置が提案されている（例えば特許文献１参照）。正規メモリ部からのデータ読み出し時は、補助ワードメモリ部からデータを読み出し、書き込み時に反転したか否かを判定し、反転した場合は正規メモリ部から読み出したデータを反転して出力する。
【０００９】
しかし、データ読み出しの度に補助ワードメモリ部からデータ反転の有無を示す情報を読み出す必要があるため、読み出し処理が煩雑になり、メモリアクセスにかかる時間が長くなるという問題があった。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平７−３３４９９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、アクセス時間の増加を抑制して、リードディスターブ確率を減少させるメモリアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様によるメモリアクセス装置は、書き込み対象のデータの冗長化符号処理を行い、所定値をとるビットの個数が全ビット数の半分以下となるようなメモリに書き込まれるデータを生成する符号処理回路を備え、前記符号処理回路は、ｎビット（ｎは１以上の整数）の前記書き込み対象のデータに対して冗長化符号処理を行い、ｎ＋１ビットの冗長化データを生成する冗長化符号回路と、選択信号に基づいてｎ＋１ビットの１又は０を選択するセレクタと、前記冗長化データに含まれる前記所定値のビット数をカウントし、カウント数に基づいて前記選択信号を生成するカウント部と、前記冗長化データと、前記セレクタの選択値との各ビットのＸＯＲ演算を行う演算部と、を有し、前記演算部の演算結果が前記メモリに書き込まれ、前記符号処理回路は、ｎ個のＸＯＲゲートを有し、第１のＸＯＲゲートには前記書き込み対象のデータの１ビット目と０とが与えられ、第ｋのＸＯＲゲート（ｋは２≦ｋ≦ｎを満たす整数）には第ｋ−１のＸＯＲゲートの出力値と前記書き込み対象のデータのｋビット目が与えられ、１ビット目が０、２ビット目が前記第１のＸＯＲゲートの出力値、ｋ＋１ビットが前記第ｋのＸＯＲゲートの出力値となる前記冗長化データを生成することを特徴とするものである。
【発明の効果】
【００１３】
本発明によれば、アクセス時間の増加を抑制して、リードディスターブ確率を減少させることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１５】
（第１の実施形態）図１に本発明の第１の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、符号処理回路１００、復号回路１１０、メモリ１２０、及びメモリコントローラ１３０を備える。符号処理回路１００は、冗長化符号回路１０１、カウント部１０２、セレクタ１０３、及び演算部１０４を有する。
【００１６】
冗長化符号回路１０１は、ｎビット（ｎは１以上の整数）のメモリ１２０への書き込み対象のデータＤｉｎが与えられ、冗長化符号処理を行い、ｎ＋１ビットのデータＣＤｉｎに変換して出力する。冗長化符号処理については後述する。セレクタ１０３はｎ＋１ビットの１１・・・１と００・・・０が与えられ、カウント部１０２から出力される選択信号Ｓｅｌに基づいていずれか一方を選択して出力する。
【００１７】
カウント部１０２は、冗長化符号回路１０１により生成されるデータＣＤｉｎのうち、値が１のビット数をカウントし、カウント数に基づいて選択信号Ｓｅｌを生成して出力する。カウント部１０２は、カウント数が（ｎ＋１）／２より大きい場合は、セレクタ１０３が１１・・・１を選択するような選択信号Ｓｅｌを出力する。また、カウント部１０２は、カウント数が（ｎ＋１）／２以下の場合は、セレクタ１０３が００・・・０を選択するような選択信号Ｓｅｌを出力する。
【００１８】
演算部１０４は、冗長化符号化回路１０１により生成されたｎ＋１ビットのデータＣＤｉｎと、セレクタ１０３により選択されたｎ＋１ビットの１１・・・１又は００・・・０の各ビットのＸＯＲを演算し、ｎ＋１ビットのデータＲＤｉｎを生成し、出力する。
【００１９】
メモリ１２０はランダムアクセス可能な不揮発性メモリであり、書き込み又は読み出しを行うメモリの番地を指定する複数ビットのアドレス信号Ａｄｄｒが与えられる。メモリコントローラ１３０は、書き込みのタイミングを指示する書き込み信号Ｗｒｉｔｅ及び符号処理回路１００（演算部１０４）により生成されたデータＲＤｉｎが与えられ、メモリ１２０のアドレス信号Ａｄｄｒで指定された番地に、書き込み信号Ｗｒｉｔｅに基づくタイミングでデータＲＤｉｎを書き込む。メモリ１２０は例えばＭＲＡＭである。
【００２０】
復号回路１１０はメモリ１２０から読み出されたｎ＋１ビットのデータＲＤｏｕｔが与えられ、復号処理を行い、ｎビットのデータＤｏｕｔに変換して出力する。
【００２１】
ｎ＝８を例として、冗長化符号処理及び復号処理について説明する。図２に示すように、冗長化符号回路１０１は８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７が与えられ、冗長化符号処理を行い、９ビットのデータｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８を出力する。
【００２２】
冗長化符号処理は図３に示すような論理式で表すことができ、冗長化符号回路１０１は図４に示すようなＸＯＲ素子１１〜１８を有する論理回路で構成することができる。出力するデータのビットｘ’０として０が出力される。ＸＯＲ素子１１には０とビットｄ０が与えられ、その出力がビットｘ’１となる。
【００２３】
ＸＯＲ素子１２にはＸＯＲ素子１１の出力とビットｄ１とが与えられ、その出力がビットｘ’２となる。以下同様に、ＸＯＲ素子ｋ（１３≦ｋ≦１８）にはＸＯＲ素子ｋ−１の出力とビットｄｋ−１１とが与えられ、その出力がビットｘ’ｋ−１０となる。
【００２４】
カウント部１０２、セレクタ１０３、及び演算部１０４による処理は図５に示すような論理式で表すことができる。９ビットのデータｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８において、値が１のビット数が４より大きい場合は、ｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８の各々と１とのＸＯＲを演算し、９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を出力する。
【００２５】
９ビットのデータｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８において、値が１のビット数が４以下の場合は、ｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８の各々と０とのＸＯＲを演算し、９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８を出力する。
【００２６】
つまり、冗長化符号回路１０１から出力される９ビットのデータ中に値が１のビットが４より大きい（５以上）場合は各ビットを反転して出力し、値が１のビットが４以下の場合はそのまま出力する。
【００２７】
図６に示すように、復号回路１１０はメモリ１２０から読み出された９ビットのデータｘ０、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５、ｘ６、ｘ７、ｘ８が与えられ、復号処理を行い、８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７を出力する。
【００２８】
復号処理は図７に示すような論理式で表すことができ、復号回路１１０は図８に示すようなＸＯＲ素子２１〜２８を有する論理回路で構成することができる。ＸＯＲ素子２１にはビットｘ０とｘ１とが与えられ、その出力がビットｄ０となる。
【００２９】
以下同様に、ＸＯＲ素子ｊ（２２≦ｊ≦２８）にはビットｘｊ−２１とｘｊ−２０とが与えられ、その出力がビットｄｊ−２１となる。
【００３０】
図３、図７に示す論理式から分かるように、８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に対して冗長化符号処理を行って得られる９ビットのデータｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８を復号処理すると、元の８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に戻すことが出来る。
【００３１】
また、９ビットのデータｘ’０、ｘ’１、ｘ’２、ｘ’３、ｘ’４、ｘ’５、ｘ’６、ｘ’７、ｘ’８の各ビットの否定をとって（各ビットを反転して）から復号処理しても、元の８ビットのデータｄ０、ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７に戻すことが出来る。
【００３２】
例えば８ビットのデータが０１１０００１１であったとする。この値を図４に示す冗長化符号回路に与えると、９ビットのデータ００１００００１０が出力される。この００１００００１０を図８に示す冗長化復号回路に与えると、その出力は０１１０００１１となり、元のデータに戻る。
【００３３】
また、９ビットのデータ００１００００１０の各ビットの否定をとった１１０１１１１０１を図８に示す冗長化復号回路に与えても、その出力は０１１０００１１となり、元のデータに戻る。
【００３４】
従って、セレクタ１０３が００・・・０、１１・・・１のいずれを選択しても、符号処理回路１００の出力データを復号回路１１０が復号処理したデータは、符号処理回路１００の入力データと等しいものとなる。
【００３５】
符号処理回路１００はｎビットの入力データをｎ＋１ビットのデータに冗長化符号処理し、ｎ＋１ビットのうち、値が１のビット数が（ｎ＋１）／２より大きい場合は各ビットの値を反転して出力している。つまり、メモリ１２０に書き込まれる符号処理回路１００の出力データＲＤｉｎは、値が１のビット数が全ビット数の半分以下になり、０が多いデータとなる。
【００３６】
通常のＭＲＡＭでは、読み出し時にどちらの方向に電流を流すかはデバイスの特性によって設計時に固定されるため、例えば読み出し時には０を書き込むときと同じ方向に電流を流すように設計されたとすると、リードディスターブは１と記録したはずが０になるという場合に限られる。
【００３７】
従って、データをメモリ１２０に書き込む際に、値が０のビット数が多くなるように書き込むことによって、リードディスターブの対象となるビットが減り、全体としてリードディスターブ確率が減少する。
【００３８】
本実施形態では、符号処理回路１００において入力データＤｉｎを冗長化符号処理したデータＣＤｉｎにおいて、値が１のビット数が全ビット数の半分より大きい場合に、データＣＤｉｎを反転して、メモリ１２０に書き込む。従って、メモリ１２０には、０が多いデータが書き込まれ、リードディスターブの対象となるビットが減るため、リードディスターブ確率が減少させることができる。
【００３９】
また、メモリ１２０に書き込んだデータＲＤｉｎが冗長化符号処理したデータＣＤｉｎを反転したものか否かに関係なく、復号回路１１０はメモリ１２０から読み出したデータを復号処理することで、符号処理回路１００の入力データＤｉｎと等しい出力データＤｏｕｔが得られる。従って、メモリ１２０に書き込んだデータを反転したか否かの確認をする必要がないため、そのような確認が必要な場合と比較して読み出し時のメモリアクセス時間を短縮することができる。
【００４０】
上記第１の実施形態における符号処理回路１００は図９に示すような構成にしてもよい。符号処理回路１００は冗長化符号回路１０１、インバータ１４１、判定器１４２、及びセレクタ１４３を有する。
【００４１】
インバータ１４１は、冗長化符号回路１０１のｎ＋１ビットの出力データＣＤｉｎの各ビットを反転して出力する。判定器１４２は、冗長化符号回路１０１の出力データＣＤｉｎに含まれる値が１のビット数をカウントし、カウント数に基づいてセレクタ１４３へ選択信号を出力する。例えば判定器１４２は、カウント数が（ｎ＋１）／２より大きい場合、セレクタ１４３がインバータ１４１の出力を選択するような選択信号を出力する。これにより、インバータ１４１の出力は値が１のビット数が（ｎ＋１）／２以下となる。
【００４２】
判定器１４２は値が０のビット数をカウントし、ｎ＋１からカウント数を減じた値に基づいて選択信号を出力するようにしてもよい。
【００４３】
このような構成によっても、符号処理回路１００からは値が０のビット数が多いデータが出力され、メモリ１２０のリードディスターブ確率を減少させることができる。
【００４４】
上記第１の実施形態では、メモリ１２０が、読み出し時に、０を書き込むときと同じ方向に電流を流すように設計され、リードディスターブは１と記録したはずが０になるものであったため、符号処理回路１００は０が多くなるようにデータを反転して出力していた。
【００４５】
従って、メモリ１２０が、読み出し時に、１を書き込むときと同じ方向に電流を流すように設計され、リードディスターブは０と記録したはずが１になるものである場合は、符号処理回路１００は値が１のビット数が多くなるようにデータを出力する。
【００４６】
例えば、カウント部１０２は、冗長化符号回路１０１から出力されるデータＣＤｉｎのうち、値が０のビット数をカウントし、カウント数が（ｎ＋１）／２より大きい場合は、セレクタ１０３が１１・・・１を選択するような選択信号Ｓｅｌを出力する。
【００４７】
（第２の実施形態）図１０に本発明の第２の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、符号処理回路２００、復号回路２１０、及びメモリ２２０を備える。メモリ２２０へのデータ書き込みを行うメモリコントローラ（上記第１の実施形態におけるメモリコントローラ１３０と同等のもの）はメモリ２２０内に含まれているものとする。
【００４８】
符号処理回路２００は偏向符号処理テーブルを有しており、ｎビットの入力データＤｉｎを、偏向符号処理テーブルを参照してｎ＋ｍビット（ｍは２以上の整数）のデータＲＤｉｎに変換し、メモリ２２０へ出力する。ここで、偏向符号処理テーブルは、メモリ２２０のリードディスターブの対象となる値の出現確率が低くなるように構築する。
【００４９】
復号回路２１０は、メモリ２２０から読み出されたｎ＋ｍビットのデータＲＤｏｕｔを、偏向符号処理テーブルと入出力が逆になっている復号処理テーブルを参照してｎビットのデータＤｏｕｔに変換し、出力する。
【００５０】
上記第１の実施形態では１ビットの冗長化を行っていたのに対し、本実施形態では２ビット以上（ｍビット）の冗長化を行っている。０と１の出現確率が等しい場合、２ビット以上の冗長化を行った方が、１ビットの冗長化を行うより、統計的にリードディスターブ確率を下げることができるためである。
【００５１】
図１１は、４ビットの入力データを６ビットに符号化する場合の偏向符号処理テーブルの一例である。この偏向符号処理テーブルは、メモリ２２０において、１と記録したはずが０になるリードディスターブが発生する場合のものであり、１の出現確率が低くなるように構築されている。
【００５２】
１６種類の入力データ（００００〜１１１１）の出現確率がすべて等しい場合、この偏向符号処理テーブルを用いることで、５ビットへの冗長符号化を行う場合と比較してリードディスターブ確率を４％低減できる。
【００５３】
このように偏向符号処理テーブルを用いて、リードディスターブの対象となるビットが少なくなるように２ビット以上の冗長化を行い、メモリへ書き込むことで、リードディスターブ確率をさらに低減できる。
【００５４】
また、復号回路２１０は、メモリ２２０から読み出したデータを、復号処理テーブルを用いて元のデータに戻して出力するため、メモリ２２０に書き込まれたデータが反転したか否かの確認は必要がなく、メモリアクセス時間の増加を抑制することができる。
【００５５】
（第３の実施形態）図１２に本発明の第３の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、符号処理回路３００、復号回路３１０、及びメモリ３２０を備える。符号処理回路３００は、冗長化符号回路３０１、３０２、及び偏向セレクタ３０３を有する。メモリ３２０へのデータ書き込みを行うメモリコントローラ（上記第１の実施形態におけるメモリコントローラ１３０と同等のもの）はメモリ３２０内に含まれているものとする。
【００５６】
冗長化符号回路３０１、３０２は互いに異なる１ビットの種データｓを用いてｎビットの入力データＤｉｎをスクランブルして、種データｓの情報を保持したｎ＋１ビットのデータに冗長化する。冗長化符号回路３０１は種データｓとして０が与えられ、冗長化符号回路３０２は種データｓとして１が与えられる。冗長化符号回路３０１の出力と、冗長化符号回路３０２の出力とは、各ビットの値を反転した関係になっている。
【００５７】
偏向セレクタ３０３は判定器３０４及びセレクタ３０５を有する。判定器３０４は冗長化符号回路３０１の出力データを監視し、冗長化符号回路３０１、３０２の出力データのうち、どちらがメモリ３２０のリードディスターブの対象となるビットが少ないかを判定し、そのデータを選択するようにセレクタ３０５へ選択信号を出力する。
【００５８】
つまり、偏向セレクタ３０３は、冗長化符号回路３０１、３０２の出力データのうち、メモリ３２０のリードディスターブの対象となるビットが少ない方を選択して、メモリ３２０へ出力する。
【００５９】
復号回路３１０は、メモリ３２０から読み出したｎ＋１ビットのデータＲＤｏｕｔを復号する。この時、種データｓの情報が併せて復号されるが、復号回路３１０は種データｓを破棄してｎビットのデータＤｏｕｔを出力する。
【００６０】
ｎ＝８とした場合の冗長化符号回路３０１、３０２の論理回路構成例を図１３に示す。この例では９ビットの出力データのビットｘ０が種データｓと同値となる。入力データが０１１０００１１であった場合、冗長化符号回路３０１の出力は００１００００１０となり、冗長化符号回路３０２の出力は１１０１１１１０１となる。
【００６１】
ここで、例えばメモリ３２０のリードディスターブの対象が１である場合、偏向セレクタ３０３によって００１００００１０が選択されて、メモリ３２０に書き込まれる。
【００６２】
この００１００００１０を復号回路３１０に与えると、その出力は種データが０、本体が０１１０００１１となり、元の入力データが得られる。
【００６３】
種データｓは１ビットでなく、２ビット以上でもよい。種データがｐビット（ｐは２以上の整数）の場合、冗長化符号回路を２ｐ個設け、それぞれに異なる種データを与える。種データｓが２ビットの場合のメモリシステムの構成例を図１４に示す。符号処理回路３００は冗長化符号回路３３１〜３３４及び偏向セレクタ３３５を有する。冗長化符号回路３３１〜３３４はそれぞれ種データｓとして００、０１、１０、１１が与えられ、ｎビットの入力データＤｉｎをスクランブルして、種データｓの情報を保持したｎ＋２ビットのデータに冗長化する。
【００６４】
偏向セレクタ３３５は、冗長化符号回路３０１〜３０４の出力データのうち、メモリ３２０のリードディスターブの対象となるビットが最も少ないものを選択して、メモリ３２０へ出力する。
【００６５】
復号回路３１０は、メモリ３２０からｎ＋２ビットのデータを読み出し、復号処理を行い、２ビットの種データを破棄してｎビットのデータＤｏｕｔを出力する。
【００６６】
このように入力データに１ビット以上の種データを付加して冗長化処理を行い、リードディスターブの対象となるビットが最も少ないものを選択してメモリに書き込むことで、リードディスターブ確率を低減することができる。
【００６７】
また、復号回路３１０は、メモリ３２０から読み出したデータを復号し、種データを破棄して出力するだけなので、アクセス時間の増加を抑制することができる。
【００６８】
（第４の実施形態）図１５に本発明の第４の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、符号処理回路４００、復号回路４１０、及びメモリ４２０を備える。符号処理回路４００は、誤り訂正符号化部４０１、４０２、及び偏向セレクタ４０３を有する。メモリ４２０へのデータ書き込みを行うメモリコントローラ（上記第１の実施形態におけるメモリコントローラ１３０と同等のもの）はメモリ４２０内に含まれているものとする。
【００６９】
誤り訂正符号化部４０１、４０２は、ｎビットの入力データＤｉｎにｕビットのデータ反転用ビットｒを付加したデータに対して誤り訂正符号化処理を行い、ｔビットのデータを出力する。ｎ、ｕ、ｔは１以上の整数である。データ反転用ビットｒの値は誤り訂正符号化部４０１と誤り訂正符号化部４０２とで異なる。
【００７０】
誤り訂正符号化部４０１の出力データと、誤り訂正符号化部４０２の出力データとは、全てのビット又は多数のビットが反転した関係となる。
【００７１】
偏向セレクタ４０３は誤り訂正符号化部４０１、４０２の出力データのうち、メモリ４２０のリードディスターブの対象となるビットが少ない方を選択して、メモリ４２０へ出力する。
【００７２】
復号回路４１０はメモリ４２０からｔビットのデータを読み出し、復号及び誤り訂正処理を行い、ｎ＋ｕビットのデータを生成し、ｕビットのデータ反転用ビットｒを除いたｎビットのデータＤｏｕｔを出力する。
【００７３】
例えばｎ＝７、データ反転用ビットｒが１ビットの時、誤り訂正符号化部４０１、４０２は図１６に示すような生成行列を持つハミング符号を用いて、図１７に示すような誤り訂正符号化処理としてのハミング符号化処理を行う。この時、出力データは１２ビットとなる。
【００７４】
データ反転用ビットｒに対応する生成行列の第８行がすべて１になっている。そのため、データ反転用ビットｒを０とした場合の出力データは、ｒを１とした場合の出力データの各ビットを反転したものとなる。従って、誤り訂正符号化部４０１の出力データは、誤り訂正符号化部４０２の出力データの各ビットを反転したものとなる。
【００７５】
偏向セレクタ４０３は、誤り訂正符号化部４０１、４０２の出力データのうち、メモリ４２０のリードディスターブの対象となるビットが少ない方を選択して、メモリ４２０へ出力する。偏向セレクタ４０３は、図１２に示す偏向セレクタ３０３と同様の構成にすることができる。
【００７６】
また、図１８に示すように、符号処理回路４００に誤り訂正符号化部４０２を設けず、誤り訂正符号化部４０１の出力を反転するインバータ回路４０４を設けてもよい。インバータ回路４０４の出力が、誤り訂正符号化部４０２の出力と同じになるためである。偏向セレクタ４０３は、誤り訂正符号化部４０１、インバータ回路４０４の出力データのうち、メモリ４２０のリードディスターブの対象となるビットが少ない方を選択して、メモリ４２０へ出力するようにしてもよい。
【００７７】
復号回路４１０は、メモリ４２０から１２ビットのデータを読み出し、図１９に示すような検査行列を用いて復号及び誤り訂正を行い、データ反転用ビットｒを破棄し、元の７ビットのデータを復元、出力する。
【００７８】
ｎ＝８、データ反転用ビットｒが１ビットの場合、誤り訂正符号化部４０１、４０２は図２０に示すような生成行列を持つハミング符号を用いて誤り訂正符号化処理としてのハミング符号化処理を行う。この時、出力データは１３ビットとなる。
【００７９】
図２０からわかるように、データ反転用ビットｒに対応する生成行列の第９行に０が含まれている。そのため、データ反転用ビットｒを０とした場合の出力データは、ｒを１とした場合の出力データの各ビットを反転したものとはならない。従って、誤り訂正符号化部４０１の出力データは、誤り訂正符号化部４０２の出力データの各ビットを反転したものとはならない。
【００８０】
しかし、１３ビットの出力データのうち１２ビットは反転しているため、偏向セレクタ４０３は、誤り訂正符号化部４０１、４０２の出力データのうち、メモリ４２０のリードディスターブの対象となるビットが少ない方を選択して、メモリ４２０へ出力することで、リードディスターブ確率を低減させることは可能である。
【００８１】
偏向セレクタ４０３は図２１に示すような構成にし得る。判定器４０５が誤り訂正符号化部４０１、４０２の出力データを監視し、メモリ４２０のリードディスターブの対象となるビットが少ない方を選択するようにセレクタ４０６へ選択信号を出力する。
【００８２】
図２０に示すような生成行列の場合、データ反転用ビットｒによって出力データが反転するビットの位置は予め分かっている。その場合、符号処理回路４００を図２２に示すような構成にし得る。この時、反転回路４０７はデータ反転用ビットｒによって反転するビットのみを反転して出力する。また、偏向セレクタ４０３の判定器４０５は、データ反転用ビットｒによって反転するビットについてのみ、誤り訂正符号化部４０１の生成データ及び反転回路４０７の生成データのうち、どちらがリードディスターブの対象となるビットが少ないかを判定する。このような構成にすることで、誤り訂正符号化部４０２を省略できる。
【００８３】
このように、入力データに互いに異なるデータ反転用ビットを付加して誤り訂正符号化処理を行い、複数の誤り訂正符号化データのうち、リードディスターブの対象となるビットが少ないものを選択してメモリに書き込むことで、リードディスターブ確率を低減できる。
【００８４】
また、復号回路はメモリから読み出したデータの復号及び誤り訂正を行い、データ反転用ビットを破棄して出力するだけなので、メモリアクセスに要する時間の増加を抑制できる。
【００８５】
（第５の実施形態）図２３に本発明の第５の実施形態に係るメモリシステムの概略構成を示す。メモリシステムは、符号処理回路５００、復号回路５１０、メモリ５２０、及び比較器５３０を備える。メモリ５２０へのデータ書き込みを行うメモリコントローラ（上記第１の実施形態におけるメモリコントローラ１３０と同等のもの）はメモリ５２０内に含まれているものとする。
【００８６】
符号処理回路５００は、冗長化データ生成回路５０１及び偏向セレクタ５０４を有する。冗長化データ生成回路５０１はｎビット（ｎは１以上の整数）の入力データＤｉｎが与えられ、互いに異なるｎ＋１ビットの冗長化データＸ０、Ｘ１を出力する。
【００８７】
冗長化データ生成回路５０１は、冗長化符号回路５０２、５０３を有する。冗長化符号回路５０２は、入力データＤｉｎ及び１ビットの種データｓとしての０が与えられ、冗長化符号処理を行ってｎ＋１ビットの冗長化データＸ０を出力する。
【００８８】
冗長化符号回路５０３は、入力データＤｉｎ及び１ビットの種データｓとしての１が与えられ、冗長化符号処理を行ってｎ＋１ビットの冗長化データＸ１を出力する。
【００８９】
冗長化符号回路５０２、５０３は例えば図１３のような論理回路構成とする。
【００９０】
偏向セレクタ５０４は、冗長化データＸ０、Ｘ１のうち、メモリ５２０のリードディスターブの対象となるビットが少ない方を選択し、書き込みデータＲＤｉｎとしてメモリ５２０へ出力する。偏向セレクタ５０４は書き込みのタイミングを指示する書き込み信号Ｗｒｉｔｅが与えられ、メモリ５２０へのデータ出力に応じてメモリ５２０へ書き込み信号ＭＷｒｉｔｅを出力する。
【００９１】
偏向セレクタ５０４から出力されたデータＲＤｉｎは、メモリコントローラにより（図示せず）、書き込み信号ＭＷｒｉｔｅに基づいて、メモリ５２０のアドレス信号Ａｄｄｒで指定されたアドレスに書き込まれる。
【００９２】
復号回路５１０はメモリ５２０からｎ＋１ビットのデータＲＤｏｕｔを読み出し、復号処理を行い、種データｓの情報を破棄して、ｎビットのデータＤｏｕｔを出力する。復号回路５１０はデータＸ０、Ｘ１のいずれが入力しても、データＤｉｎを出力することができるものである。
【００９３】
比較器５３０は、メモリ５２０への書き込みが行われた後、即座に同じアドレスからデータを読み出し、メモリ５２０へ書き込まれたデータとメモリ５２０から読み出されたデータとの比較を行い、比較結果を示す比較結果信号Ｍａｔｃｈを偏向セレクタ５０４へ出力する。
【００９４】
メモリ５２０内に大量にあるメモリセルの中には、常に１を出力し続けたり、常に０を出力し続けたりする故障したメモリセルがある程度の割合で混在している。このような故障したメモリセルの影響で、比較器５３０の比較結果が不一致となる場合がある。例えば、あるビットの値が１であるデータを書き込み、このビットに相当するメモリセルが常に０を出力し続ける故障セルであった場合、読み出したデータのこのビットの値は０に変化し、比較器５３０の比較結果は不一致となる。
【００９５】
偏向セレクタ５０４は、この比較結果信号Ｍａｔｃｈが不一致を示す場合、冗長化データＸ０、Ｘ１のうち、メモリ５２０のリードディスターブの対象となるビットが多い方を選択して、メモリ５２０へ出力する。
【００９６】
冗長化データＸ０とＸ１は、すべてのビット又は多数のビットが反転した関係となっている。従って、冗長化データＸ０、Ｘ１の一方をメモリ５２０に書き込んだ結果、読み出したデータが書き込みデータと不一致となった場合、冗長化データＸ０、Ｘ１の他方を書き込むと、読み出したデータが書き込みデータと一致することが期待される。
【００９７】
例えば、冗長化符号回路５０２、５０３が図１３のような論理回路構成となっており、入力データが０１１０００１１であった場合、冗長化データＸ０は００１００００１０となり、冗長化データＸ１は１１０１１１１０１となる。メモリ５２０のリードディスターブの対象となる値が１であった場合、偏向セレクタは１が少ない（０が多い）データである冗長化データＸ０を選択する。冗長化データＸ０がメモリ５２０に書き込まれ、これを読み出した値が００１００００１１だった場合、比較器５３０から出力される比較結果信号Ｍａｔｃｈは不一致を示す。
【００９８】
この時、偏向セレクタは冗長化データＸ０以外のデータ、すなわち冗長化データＸ１を選択する。メモリ５２０では、最下位ビットに対応するメモリセルが１に固定されてしまっているが、冗長化データＸ１は最下位ビットが１であるため、メモリ５２０によって正しいデータが保持される。その結果、復号回路５１０によって、正しく元の値に戻すことが可能になる。
【００９９】
従って、メモリ５２０に故障メモリセルがあった場合でも、メモリ５２０に正しく保持されるデータを選択することで、故障メモリセルを救済できる。
【０１００】
本実施形態によるメモリシステムは、マイクロプロセッサ等のハードウェアに接続して、データの書き込みや読み出しを行う。このようなメモリシステムを用いたデータ書き込み方法を図２４に示すフローチャートを用いて説明する。
【０１０１】
ここでは、マイクロプロセッサ（メモリコントローラ内のプロセッサも含む）がメモリにデータを書き込む場合を例に説明するが、マイクロプロセッサ以外のハードウェアがデータを書き込む場合も同様である。マイクロプロセッサはメモリシステムにデータを書き込むために、書き込みたいアドレスをメモリシステムのアドレス信号Ａｄｄｒに出力し、書き込みたいデータをメモリシステムのデータ信号Ｄｉｎに出力する。そして、マイクロプロセッサはメモリシステムの書き込み信号Ｗｒｉｔｅに対する出力を論理値０から１に変化させることで、書き込み処理を開始させる。
【０１０２】
（ステップＳ１００）マイクロプロセッサから、アドレス信号Ａｄｄｒにより、メモリ５２０へデータの書き込み先となるアドレスＡが与えられる。また、マイクロプロセッサから、冗長化符号回路１へｎビットのデータＤｉｎが与えられる。
【０１０３】
（ステップＳ１０１）冗長化データ生成回路５０１により冗長化符号処理が行われ、ｎ＋１ビットの冗長化データＸ０、Ｘ１が出力される。
【０１０４】
（ステップＳ１０２）偏向セレクタ５０４が、メモリ５２０のリードディスターブ対象の値に基づいて冗長化データＸ０、Ｘ１の一方を選択する。リードディスターブ対象のビット数が少ない方が選択される。
【０１０５】
（ステップＳ１０３）偏向セレクタ５０４が、ステップＳ１０２で選択したデータを書き込みデータＲＤｉｎとしてメモリ５２０へ出力する。さらに、偏向セレクタ５０４がメモリ５２０への書き込み信号ＭＷｒｉｔｅを論理値０から１へ変化させてメモリ５２０へ書き込みを指示することで、メモリ５２０のアドレスＡにデータＲＤｉｎが書き込まれる。
【０１０６】
（ステップＳ１０４）メモリ５２０のアドレスＡからデータＲＤｏｕｔを読み出す。
【０１０７】
（ステップＳ１０５）比較器５においてデータＲＤｉｎとデータＲＤｏｕｔが比較され、比較結果を示す比較結果信号Ｍａｔｃｈが出力される。比較結果信号Ｍａｔｃｈが真、すなわちデータＲＤｉｎとデータＲＤｏｕｔが一致、の場合は、データがメモリ５２０へ正しく書き込めていると判定し、書き込み動作を終了する。
【０１０８】
比較結果信号Ｍａｔｃｈが偽、すなわちデータＲＤｉｎとデータＲＤｏｕｔが不一致、の場合は、ステップＳ１０６へ進む。
【０１０９】
（ステップＳ１０６）偏向セレクタ５０４がステップＳ１０２で選択しなかった方の冗長化データＸ０、Ｘ１を選択し、メモリ５２０のアドレスＡに書き込む。
【０１１０】
ステップＳ１０５で比較結果が一致している場合のタイミングチャートは図２５に示すようなものとなり、比較結果が不一致である場合のタイミングチャートは図２６に示すようなものとなる。
【０１１１】
次に、データ読み出し方法を図２７に示すフローチャートを用いて説明する。マイクロプロセッサはメモリシステムからデータを読み出すために、読み出したいアドレスをメモリシステムのアドレス信号Ａｄｄｒに出力することで、メモリシステムの読み出し処理を開始させる。
【０１１２】
（ステップＳ２００）マイクロプロセッサから、アドレス信号ＡｄｄｒによりアドレスＡが与えられる。
【０１１３】
（ステップＳ２０１）メモリ５２０のアドレスＡからｎ＋１ビットのデータＲＤｏｕｔが読み出される。
【０１１４】
（ステップＳ２０２）データＲＤｏｕｔが復号回路５２０に与えられる。
【０１１５】
（ステップＳ２０３）復号処理が行われ、ｎビットのデータＤｏｕｔがメモリ５２０のアドレスＡのデータとして出力される。
【０１１６】
このように、まずはメモリ５２０のリードディスターブの対象となるビットが少ない方の冗長化データを選択して書き込み、比較器５３０の比較結果からメモリセルの故障等により正しくデータが書き込めていない場合は、他方の冗長化データを選択して書き込むことで、リードディスターブ確率を低減させつつ、故障メモリセルの救済を図る。
【０１１７】
図２３では冗長化データ生成回路５０１は入力データに１ビットの種データｓを付加して２つの冗長化データＸ０、Ｘ１を出力していたが、３つ以上の冗長化データを出力するようにしてもよい。
【０１１８】
冗長化データ生成回路５０１が、２ビットの種データｓを付加して４つの冗長化データＸ０〜Ｘ３を出力する構成例を図２８に示す。冗長化データ生成回路５０１は冗長化符号回路５４１〜５４４を有する。冗長化符号回路５４１〜５４４は、それぞれｎビットの入力データＤｉｎに２ビットの種データｓとして００、０１、１０、１１が付加され、ｎ＋２ビットの冗長化データＸ０〜Ｘ３を出力する。
【０１１９】
入力データＤｉｎが６ビットの場合、冗長化符号回路５４１〜５４４は、図２９に示すような冗長化符号生成行列を用いて冗長化符号処理を行い、８ビットの冗長化データを出力する。
【０１２０】
入力データＤｉｎが１０１１００であった場合、冗長化データＸ０は１１０１１１００、Ｘ１は００１０１０１１、Ｘ２は０１１１０１１０、Ｘ３は１０００１００１となる。メモリ５２０のリードディスターブの対象となる値が１であった場合、偏向セレクタ５０４は、まず値が１のビット数が最小の冗長化データＸ３を選択する。
【０１２１】
冗長化データＸ３をメモリ５２０に書き込んだ後に、比較器５３０が同じアドレスから読み出した値が冗長化データＸ３と不一致であれば、偏向セレクタ５０４は２番目に値が１のビット数が少ない冗長化データＸ１を選択する。比較器５３０による比較結果が一致するまで偏向セレクタは順次選択を行う。
【０１２２】
また、例えば冗長化データＸ３を書き込んだ後に読み出されたデータが１０００１０００であった場合、最下位ビットに対応するメモリセルが０に固定される故障が発生していると推定される。この時、偏向セレクタ５０４の選択候補から冗長化データＸ３だけでなく、最下位ビットが０ではない冗長化データＸ１も選択候補から外し、偏向セレクタ５０４が冗長化データＸ０、Ｘ２の中から１つを選択するようにしてもよい。これにより、メモリ５２０への書き込みに要する時間を短縮できる。
【０１２３】
また、偏向セレクタ５０４が最後の１つの冗長化データを選択する場合は、正しく書き込めることを期待して、書き込み後の比較器５３０による比較を省略するようにしてもよい。
【０１２４】
このように、本実施形態によるメモリセルは、リードディスターブ確率を低減させ、かつ不良メモリセルを救済できる。また、復号回路は偏向セレクタでどの冗長化データが選択されたかに関わらず、メモリから読み出したデータに対して所定の復号処理を行うことで元のデータを得ることができるため、メモリアクセスに要する時間の増加を抑制できる。
【０１２５】
上記第１〜第５の実施形態は、リードディスターブ確率を下げるためにメモリセルの０、１によるリードディスターブ確率の違いに着目したものであるが、メモリセルが２状態しか持たないことに限定されず、メモリセルの記憶状態によって要因が変化するすべての性能に対して適応可能である。
【０１２６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１２７】
【図１】本発明の第１の実施形態に係るメモリシステムの概略構成図である。
【図２】冗長化符号回路の処理の一例を示す図である。
【図３】冗長化符号処理の一例を示す論理式である。
【図４】冗長化符号回路の一例を示す回路図である。
【図５】冗長化処理データに対する演算処理の一例を示す数式である。
【図６】復号回路の処理の一例を示す図である。
【図７】復号処理の一例を示す論理式である。
【図８】復号回路の一例を示す回路図である。
【図９】変形例による符号処理回路の概略構成図である。
【図１０】本発明の第２の実施形態に係るメモリシステムの概略構成図である。
【図１１】偏向符号処理テーブルの一例を示す図である。
【図１２】本発明の第３の実施形態に係るメモリシステムの概略構成図である。
【図１３】同第３の実施形態に係る冗長化符号回路の一例を示す図である。
【図１４】変形例によるメモリシステムの概略構成図である。
【図１５】本発明の第４の実施形態に係るメモリシステムの概略構成図である。
【図１６】ハミング符号化処理の生成行列の一例を示す図である。
【図１７】ハミング符号化処理の一例を示す数式である。
【図１８】変形例によるメモリシステムの概略構成図である。
【図１９】検査行列の一例を示す図である。
【図２０】ハミング符号化処理の生成行列の一例を示す図である。
【図２１】変形例による偏向セレクタの概略構成図である。
【図２２】変形例による符号処理回路の概略構成図である。
【図２３】本発明の第５の実施形態に係るメモリシステムの概略構成図である。
【図２４】同第５の実施形態によるデータ書き込み方法のフローチャートである。
【図２５】同第５の実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図２６】同第５の実施形態によるデータ書き込み方法におけるタイミングチャートの一例である。
【図２７】同第５の実施形態によるデータ読み出し方法のフローチャートである。
【図２８】変形例によるメモリシステムの概略構成図である。
【図２９】冗長化符号処理の一例を示す数式である。
【符号の説明】
【０１２８】
１００  符号処理回路
１１０  復号回路
１２０  メモリ
１３０  メモリコントローラ
【図１】
0005563125.tif 000002
【図２】
0005563125.tif 000003
【図３】
0005563125.tif 000004
【図４】
0005563125.tif 000005
【図５】
0005563125.tif 000006
【図６】
0005563125.tif 000007
【図７】
0005563125.tif 000008
【図８】
0005563125.tif 000009
【図９】
0005563125.tif 000010
【図１０】
0005563125.tif 000011
【図１１】
0005563125.tif 000012
【図１２】
0005563125.tif 000013
【図１３】
0005563125.tif 000014
【図１４】
0005563125.tif 000015
【図１５】
0005563125.tif 000016
【図１６】
0005563125.tif 000017
【図１７】
0005563125.tif 000018
【図１８】
0005563125.tif 000019
【図１９】
0005563125.tif 000020
【図２０】
0005563125.tif 000021
【図２１】
0005563125.tif 000022
【図２２】
0005563125.tif 000023
【図２３】
0005563125.tif 000024
【図２４】
0005563125.tif 000025
【図２５】
0005563125.tif 000026
【図２６】
0005563125.tif 000027
【図２７】
0005563125.tif 000028
【図２８】
0005563125.tif 000029
【図２９】
0005563125.tif 000030