以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
(第1の実施形態)
書込み対象のデータ(以下、ライトデータという)を信号処理によって変換してセル間干渉効果や書込み・消去によるメモリセル(単にセルともいう)の疲弊(以下、セル疲弊という)を低減するための技術には、例えば、誤り抑制符号が存在する。誤り抑制符号には、AC(Asymmetric Coding)を使用した誤り抑制符号やBSE(Bit Swap Encoding)を使用した誤り抑制符号などが存在し、メモリシステムの耐久性向上や信頼性改善を目的として、不揮発性メモリへ書き込むライトデータに対してデータ変換を適用することで、セル疲弊の抑制やビットエラーレート(BER)の低減を行う。なお、BSEを使用した誤り抑制符号では、例えば、ワードライン内の全ページが一まとまりにされた上で一定長さのデータクラムに区切られ、そして符号化時には、データクラムごとに閾値分布の状況を解析してデータ変換方法が決定される。
図1は、一般的な誤り抑制符号及び誤り訂正符号の実装形態を備えるメモリシステムの概略構成例を示すブロック図である。図1に示す構成において、ホストインタフェース(I/F)9017を経由してホストから入力されたライトデータは、誤り抑制符号化器9161によって誤り抑制符号化され、誤り訂正符号化器(以下、ECC符号化器という)9151によってパリティを付加された上で、メモリI/F9018から不揮発性メモリ9020に書き込まれる。一方、メモリI/F9018によって不揮発性メモリ9020から読み出されたデータ(以下、リードデータという)は、誤り訂正復号器(以下、ECC復号器という)9152によって誤り訂正された後、誤り抑制復号器9162によって復号される。
ここで、誤り抑制符号の符号化単位をどのように定義するかに関しては、いくつかのバリエーションがあり、1ページ分のリードデータを得るために不揮発性メモリ9020から読み出す必要があるデータ量が符号化単位により異なる。一般に、符号化単位を大きくすることによって誤り抑制符号の性能は向上する傾向にあるが、その反面、ランダムアクセス性が低下するという、トレードオフの関係にある。
図2は、符号化単位毎の誤り抑制性能を説明するための図である。図2に示すように、例えば、符号化単位をプレーン単位、ワードライン(WL)単位及びページ単位とした場合の中では、符号化単位毎の誤り抑制性能は、プレーン単位とした場合が最も高く、次いでワードライン単位とした場合が高く、ページ単位とした場合が最も低い。一方、目的のデータに対するランダムアクセス性については、ページ単位とした場合が最も高く、次いでワードライン単位とした場合が高く、プレーン単位とした場合が最も低い。なお、本説明において、ページは、例えば、複数のセルで構成されており、データの書込み/読出しの単位である。ワードラインとは、複数のページを構成する複数のセルが接続された制御信号線である。したがって、ワードライン単位には、複数のページが含まれる。また、プレーンは、例えば、1つ以上のブロックや1つ以上のメモリチップに相当する。したがって、プレーン単位には、複数のワードラインが含まれる。ただし、これらに限定されるものではない。以下の説明では、符号化単位をページとした場合の誤り抑制符号について、例を挙げて説明する。
誤り抑制によるセル疲弊抑制やBER低減の基本的原理では、ライトデータをデータ変換することによりセルの閾値電圧に偏りを持たせ、それにより、セル疲弊やBERに関して特性の悪い閾値電圧へプログラムされるセルを削減し、特性の良い閾値電圧へプログラムされるセルを増加させる。
図3に、1つのセルに3ビットのデータを記憶可能(以下、3ビット/セルという)なTLC(Triple Level Cell)を用いた不揮発性メモリに対して誤り抑制符号を適用した場合における閾値電圧分布の例を示す。図3(a)は、誤り抑制符号を適用しない場合のセル疲弊及びBER特性を示し、図3(b)は、誤り抑制符号を適用した場合のセル疲弊及びBER特性を示している。図3(a)に示すように、セル疲弊及びBER特性は、閾値電圧が高いほど悪い傾向となっている。そのため、図3(b)に示すように、誤り抑制符号化は、高い閾値電圧のセルの出現確率P(Vth)を低く、低い閾値電圧のセルの出現確率P(Vth)を高くするように行われる。
また、TLCを用いた場合、同じワードラインWLに接続されてグループ化されている複数のセルは、UPPERページ、MIDDLEページ及びLOWERページを構成する。各ページ(UPPERページ、MIDDLEページ及びLOWERページ)のビット値は、例えば、図4に示すような符号化テーブルによって、セルの閾値電圧と対応付けられている。したがって、ページを符号化単位として誤り抑制符号化を行う場合、UPPER/MIDDLE/LOWERページにおけるビット“0”の出現確率P(Vth)とビット“1”の出現確率P(Vth)とを制御することによって、閾値電圧の出現確率P(Vth)を削減/増加させる。例えば、図4に例示する符号化デーブルを用いてTLCにおける最も高い閾値電圧(後述するGレベルに相当)を削減した場合、UPPER/MIDDLE/LOWERページ各々に対してビット“1”が削減されるように誤り抑制符号化が実行される。
誤り抑制符号化を行うと、符号化前後でデータ量の増加が発生するが、誤り抑制によるデータ量の増加分だけ誤り訂正符号のパリティビットを削減することによって上記データ量増加を隠蔽することができる。ここで、パリティビットを削減したことにより誤り訂正の能力が低下するが、誤り抑制によるBER改善が誤り訂正能力の低下を上回る場合には、結果的に、メモリシステムの信頼性を向上することが可能である。
ここで、誤り抑制と誤り訂正とを含めて信頼性を評価する場合、信頼性を評価するための指標には、例えば、誤り訂正失敗率(フレームエラーレート、FER)を使用することができる。FERは、誤り抑制符号化の符号化率(=符号化前のデータ量/符号化後のデータ量)、及び、それによって変化する誤り訂正の符号化率に応じて変化するので、FER特性が最も良い誤り抑制の符号化率を選択することを可能にする。
ところで、ワードラインに含まれる各ページのエラー特性は同一でない場合がある。例えば、TLCの場合、LOWERページとMIDDLEページとUPPERページとのそれぞれで、エラー特性が異なる場合がある。これは、1つのセルに2ビットのデータを記憶可能(以下、2ビット/セルという)なMLC(Multiple Level Cell)の場合や1つのセルに4ビットのデータを記憶可能(以下、4ビット/セルという)なQLC(Quad Level Cell)の場合などでも同じである。したがって、同一の符号化率を使用して誤り抑制符号を適用したとしても、各ページでFERが異なる場合があり、それにより、あるページのエラー特性に対して誤り抑制の符号化率が過剰(誤り訂正の符号化率が過小、且つ、訂正能力が過剰)となる場合や、誤り抑制の符号化率が過小(誤り訂正の符号化率が過大、且つ、訂正能力が過小)となる場合がある。
図5に、ページ毎に非均等なエラー特性を持った不揮発性メモリ9020に対して同一の誤り抑制符号化率を設定した場合のFER特性の例を示す。なお、図5には、TLCを用いた場合の例が示されている。図5に示すように、最もFER特性の悪いUPPERページに関しては、誤り抑制の前後でFERがほぼ変化していない。また、MIDDLEページ及びLOWERページのFERは改善しているが、メモリシステムの外部から見た信頼性は、FERが最も悪いUPPERページの影響を強く受けるため、この例では誤り抑制符号による信頼性の改善効果は小さい。
そこで第1の実施形態では、誤り抑制符号化をページ毎に適用する際に、各ページのエラー特性に応じて誤り抑制の符号化率を変化させる場合について、例を挙げて説明する。以下で説明する第1の実施形態によれば、各ページで誤り訂正に失敗する確率(FER)を、全ページで共通の誤り抑制符号化率とした場合と比較して改善することが可能となる。
図6は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図6に示すように、メモリシステム1は、メモリコントローラ10と、不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図6ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)17、メモリI/F(メモリインタフェース)18、プロセッサ11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、ランダマイザ14、ECC回路15、及び、信号処理回路16を備える。ホストI/F(ホストインタフェース)17、メモリI/F(メモリインタフェース)18、プロセッサ11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、ランダマイザ14、ECC回路15、及び、信号処理回路16は、内部バス19で相互に接続されている。
ホストI/F17は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した要求、書込み対象のユーザデータなどを内部バス19に出力する。また、ホストI/F17は、不揮発性メモリ20から読み出されて復元されたユーザデータ、プロセッサ11からの応答などをホスト30へ送信する。
メモリI/F18は、プロセッサ11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F18は、プロセッサ11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
プロセッサ11は、メモリシステム1の各構成要素を統括的に制御する制御部である。プロセッサ11は、ホスト30からの要求をホストI/F17経由で受け付けた場合に、その要求に応じた制御を行う。例えば、プロセッサ11は、ホスト30からの書込み要求に応じて、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F18へ指示する。また、プロセッサ11は、ホスト30からの読出し要求に応じて、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F18へ指示する。
また、プロセッサ11は、ホスト30から書込み要求を受信した場合、RAM12に蓄積されるユーザデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、プロセッサ11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
また、プロセッサ11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F18へ指示する。
ここで、NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワードラインに接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがSLC(Single Level Cell)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがMLCやTLCやQLCなどの多ビットセルである場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
RAM12は、例えばデータバッファとして使用され、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時格納する。また、RAM12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時格納する。RAM12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
また、RAM12は、アドレス変換テーブルや、起動時等に不揮発性メモリ20の特定の領域から読み出されて展開されるマスタテーブル(スナップショット)などの各種管理テーブルや、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用されてもよい。
ROM13は、メモリコントローラ10を動作させるための種々のプログラムやパラメータ等を記憶する。ROM13に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ11に読み出されて実行される。
ランダマイザ14は、例えば線形帰還シフトレジスタ等を含んで構成され、入力されたシード値に対して一意に求まる擬似乱数を生成する。ランダマイザ14で生成された擬似乱数は、例えばプロセッサ11においてライトデータとの排他的論理和が取られる。これにより、不揮発性メモリ20に書き込まれるライトデータがランダマイズされる。
信号処理回路16は、不揮発性メモリ20へ書き込むデータを誤り抑制符号化する符号化器として動作する。また、信号処理回路16は、不揮発性メモリ20から読み出されたデータを誤り抑制復号する復号器としても動作する。なお、信号処理回路16のより詳細な構成例及び動作例については、後述において説明する。
ホスト30から送信されるユーザデータは、内部バス19に転送されてRAM12に一旦格納された後、信号処理回路16により誤り抑制符号化され、さらに、ECC回路15により誤り訂正符号化(以下、ECC符号化という)され、その後、メモリI/F18を介して不揮発性メモリ20に書き込まれる。一方、不揮発性メモリ20から読み出されたデータは、ECC回路15により誤り訂正復号(以下、ECC復号という)され、その後、必要に応じて、信号処理回路16により誤り抑制符号化されることで、オリジナルのユーザデータに復元される。復元されたユーザデータは、例えばRAM12に一旦格納された後、ホストI/F17を介してホスト30へ転送される。なお、信号処理回路16及び/又はECC回路15により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
以上のような構成を備えるメモリシステム1における書込み処理では、プロセッサ11は、不揮発性メモリ20への書込み時に、ユーザデータの誤り抑制符号化及びECC符号化を信号処理回路16及びECC回路15へ指示する。その際、プロセッサ11は、不揮発性メモリ20におけるライトデータの格納場所(格納アドレス)を決定し、決定した格納場所をメモリI/F18へ指示する。信号処理回路16は、プロセッサ11からの指示に基づいて、RAM12上のユーザデータを誤り抑制符号化する。そして、ECC回路15は、プロセッサ11からの指示に基づいて、RAM12上の誤り抑制符号化されたユーザデータをさらにECC符号化する。これにより生成されたライトデータは、メモリI/F18を介して不揮発性メモリ20の指定された格納場所に書き込まれる。なお、ECC回路15の符号化方式としては、例えば、LDPC(Low-Density Parity-Check)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号やRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
一方、読出し処理では、プロセッサ11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F18へ読出しを指示する。また、プロセッサ11は、ECC回路15へECC復号の開始を指示するとともに、必要に応じて、信号処理回路16へ誤り抑制復号の開始を指示する。メモリI/F18は、プロセッサ11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読出しを実行し、この読出しにより得られたリードデータをECC回路15に入力する。そして、ECC回路15は、入力されたリードデータをECC復号し、この復号に成功した場合、復元されたオリジナルのユーザデータをRAM12に格納する。一方、ECC復号に失敗した場合、プロセッサ11は、例えば、ホスト30へリードエラーを通知する。
次に、本実施形態に係る誤り抑制符号の実装形態について、図面を参照して詳細に説明する。図7は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。
図7に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、上述において図1を用いて例示した一般的な誤り抑制符号及び誤り訂正符号の一実装形態と同様に、ホストI/F17を経由してホスト30から入力されたライトデータが誤り抑制符号化器161によって誤り抑制符号化され、ECC符号化器151によってパリティを付加された上で、メモリI/F18から不揮発性メモリ02に書き込まれる構成を備える。また、メモリI/F18によって不揮発性メモリ20から読み出されたリードデータが、ECC復号器152によって誤り訂正された後、誤り抑制復号器162によって復号される構成を備える。
また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態では、上記の構成に加え、誤り抑制符号化率決定部163及びECC符号化率決定部153が追加されている。これらの構成において、誤り抑制符号化器161、誤り抑制復号器162及び誤り抑制符号化率決定部163は、例えば、図6における信号処理回路16を構成する。また、ECC符号化器151、ECC復号器152及びECC符号化率決定部153は、例えば、図6におけるECC回路15を構成する。
誤り抑制符号化率決定部163は、デバイス特性情報121と、現在処理しているページ(UPPER/MIDDLE/LOWER)を示す情報である処理対象ページ情報122とに基づいて、誤り抑制符号の符号化率を決定する。同様に、ECC符号化率決定部153は、デバイス特性情報121と処理対象ページ情報122とに基づいて、ECC符号化器151が実行する誤り訂正符号の符号化率を決定する。なお、デバイス特性情報121については、後述において説明する。また、デバイス特性情報121と処理対象ページ情報122とは、例えば適宜取得されてRAM12等に保持されているものとする。
本実施形態では、誤り抑制の符号化率及び誤り訂正の符号化率が、ページによって異なり得る。そこで、FERが最善となる符号化率をページ毎に設定することによって、メモリシステム1の信頼性の改善効果を高めることができる。
図8に、ページ毎に非均等なエラー特性を持った不揮発性メモリ20に対してページ毎に異なる誤り抑制符号化率を設定した場合のFER特性を示す。上述において図5を用いて説明したように、誤り抑制を適用しない場合にFERが最も悪いのはUPPERページであって、誤り抑制による改善効果も小さいことから、本実施形態では、UPPERページに対する誤り抑制符号化率を大きく設定して誤り訂正符号化率を小さく設定する。一方、LOWERページについては、UPPERページと比較して、大幅にFER特性が良好であるため、誤り抑制符号化率を小さく設定して誤り訂正符号化率を大きく設定する。なお、特性的に中間に位置するMIDDLEページについては、例えば、図5で説明した共通符号化率設定時と同一の誤り抑制符号化率及び誤り訂正符号化率とする。
このように、LOWERページにおいて誤り抑制符号化率を小さく設定することによってLOWERページにおけるビット“0”及び“1”に対応する閾値電圧の制御性能が向上し、それにより、UPPERページのFERが向上する。なお、LOWERページでは、誤り訂正符号化率を大きくしていることからFERが悪化するが、依然としてUPPERページよりも良いFERである。したがって、FERの最も悪いUPPERページについてFERを改善することで、メモリシステム1の信頼性を改善することができる。
なお、上述におけるデバイス特性情報121には、例えば以下のような情報が含まれ得る。1つは、図9に例示するような、各ページの誤り抑制符号化率の組合せと、ビットエラーレート(BER)又はフレームエラーレート(FER)の変化、若しくは、BERとFERとの相対的関係の変化に関する情報である。他の1つは、図10に例示するような、各ページの誤り抑制符号化率の組合せとセルの閾値電圧の制御性能との関係に関する情報である。図7における誤り抑制符号化器161及びECC符号化器151は、これらのようなデバイス特性情報121を参照して各ページで最適な誤り抑制符号化率を選択することによって、信頼性改善の効果を最大化することができる。
以上で説明したように、本実施形態では、誤り抑制符号化をページ毎に適用する場合に、各ページのエラー特性に応じて誤り抑制の符号化率を変化させる。それにより、本実施形態によれば、全ページで共通の誤り抑制符号化率とした場合と比較して、各ページで誤り訂正に失敗する確率(FER)を改善することができる。その結果、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
(第2の実施形態)
次に、第2の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
第1の実施形態では、誤り抑制の符号化率を各ページの特性に応じて変化させるのに対応して誤り訂正の符号化率も変更させることで、誤り抑制符号化によって増加するデータ量と、誤り訂正符号化によって増加するデータ量との和が一定となるように制御されていた。これに対し、第2の実施形態では、図11に示すように、誤り訂正の符号化率は全ページで一定とし、誤り抑制の符号化率の低いページの誤り抑制符号化データの一部を誤り抑制の符号化率が高いページに配置する。
図11に示す例では、誤り訂正の符号化率は全ページで一定としたことで、UPPERページ、MIDDLEページ及びLOWERページそれぞれのパリティPU、PM及びPLは同じパリティ長であるが、誤り抑制の符号化率の最も低いLOWERページの誤り抑制符号化データ(DL+DL’)のデータ長は、他のMIDDLEページ及びUPPERページの誤り抑制符号化データDU及びDMのデータ長よりも長い。
そこで本実施形態では、最も長いLOWERページの誤り抑制符号化データ(DL+DL’)の一部の誤り抑制符号化データDL’を、例えば、最も短いUPPERページの誤り抑制符号化データDUに配置する。これにより、UPPERページ、MIDDLEページ及びLOWERページそれぞれに実際に格納される誤り抑制符号化データ(DU+DL’)、DM及びDLを均等にすることが可能となる。
本実施形態に係るメモリシステムは、例えば第1の実施形態において図6を用いて説明したメモリシステム1と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第1の実施形態において図7を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。
ただし、本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれに格納されたパリティPU、PM及びPLと、各パリティが誤り訂正の対象とする誤り抑制符号化データとの組合せを、それぞれ以下のような組合せとする。
PU:(DU+DL’)
PM:DM
PL:DL
以上のような組合せによれば、各パリティの訂正対象は、そのパリティが属しているページに書き込まれている誤り抑制符号化データを保護することとなる。
また、UPPERページ、MIDDLEページ及びLOWERページそれぞれのリード動作は、それぞれ以下のようになる。
<UPPERページに対するリード動作>
(1)DU、DL’及びPUを読出し、PUを使用してDU及びDL’を誤り訂正。
(2)誤り訂正後のDUを誤り抑制復号し、復元されたユーザデータを出力。
<MIDDLEページに対するリード動作>
(1)DM及びPMを読出し、PMを使用してDMを誤り訂正。
(2)誤り訂正後のDMを誤り抑制復号し、復元されたユーザデータを出力。
<LOWERページに対するリード動作>
(1)DU、DL’及びPUを読出し、PUを使用してDU及びDL’を誤り訂正。
(2)DL及びPLを読出し、PLを使用してDLを誤り訂正。
(3)DLとDL’とを連結してLOWERページの誤り抑制符号化データ(DL+DL’)を復元。
(4)復元された(DL+DL’)を誤り抑制復号し、復元されたユーザデータを出力。
以上のように、本実施形態では、LOWERページのリード時に2ページ分のリード動作及び誤り訂正が必要となるが、誤り訂正の符号化率を全ページで共通にてきるという利点がある。その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第3の実施形態)
次に、第3の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
第3の実施形態では、第2の実施形態と同様に、誤り抑制符号化データの一部を他のページに配置する。ただし、本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれに格納されたパリティPU、PM及びPLと、各パリティが誤り訂正の対象とする誤り抑制符号化データとの組合せが、第2の実施形態とは異なる。すなわち、本実施形態では、それぞれ以下のような組合せとする。
PU:DU
PM:DM
PL:(DL+DL’)
以上のような組合せによれば、パリティ長は全ページで共通となるが、誤り訂正の符号化率は各ページで異なることとなる。また、本実施形態では、LOWERページのリード時に必要な誤り訂正を、1ページ分とすることが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第4の実施形態)
次に、第4の実施形態について説明する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
図12は、第1の実施形態における誤り抑制符号化率と第4の実施形態に係る誤り抑制符号化率との関係を説明するための図である。なお、図12(a)は、第1の実施形態に係る誤り抑制符号化率を示す図であり、図12(b)は、第4の実施形態に係る誤り抑制符号化率を示す図である。
図12に示すように、第1の実施形態(図12(a)参照)と第4の実施形態(図12(b)参照)とでは、UPPERページ、MIDDLEページ及びLOWERページのそれぞれで、誤り抑制符号化データDU、DM及びDLのデータ長、並びに、パリティPU、PM及びPLのパリティ長は同じであるが、第4の実施形態では、1ページ当たりに格納される誤り抑制符号化前のデータ量(論理データ量ともいう)が、例えば上述した第1の実施形態におけるそれよりも少ない。それにより、本実施形態では、第1の実施形態よりも、各ページの誤り抑制の符号化率を下げられている。
このように、本実施形態では、1ページ当たりに格納される誤り抑制符号化前のデータ量(論理データ量)を減らすことで、各ページの誤り抑制の符号化率を下げる。これにより、メモリシステムの信頼性をより向上することが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第5の実施形態)
また、第4の実施形態では、第1の実施形態をベースとして、1ページ当たりに格納される誤り抑制符号化前のデータ量(論理データ量)を削減して、各ページの誤り抑制の符号化率を下げる場合を例示したが、ベースとする実施形態は、第1の実施形態に限定されず、例えば上述した第2又は第3の実施形態や、後述する実施形態をベースとすることも可能である。それにより、各実施形態におけるメモリシステムの信頼性をより向上することが可能となる。
(第6の実施形態)
次に、第6の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第6の実施形態では、上述した実施形態において触れた、ページ間で誤り抑制の符号化率を変化させる方法について、より具体的な例を挙げて説明する。ただし、上述した実施形態に係るページ間で誤り抑制の符号化率を変化させる方法が、以下で説明する方法に限定されることを意図するものではない。また、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
本実施形態に係るメモリシステムは、例えば第1の実施形態において図6を用いて説明したメモリシステム1と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第1の実施形態において図7を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。ただし、本実施形態では、誤り抑制符号化の流れが以下のようになる。なお、本実施形態では、不揮発性メモリ20のメモリセルがMLCである場合とする。
第6の実施形態では、書込み対象のライトデータ(元データ列ともいう)をある一定のデータ長のデータクラムに区切り、区切られたデータクラム毎に誤り抑制符号化を実施する。そこで、本実施形態に係る誤り抑制符号化では、まず、基本となるデータクラムのデータ長を決定し、そして、UPPERページとLOWERページとをそれぞれ任意の整数(以下の分割数に相当)で分割する。本説明では、分割により生成されたデータ片をサブデータクラムと称する。サブデータクラムのデータ長は、基本となるデータクラムのデータ長の整数(1以上)分の1となる。なお、分割数が1の場合、符号化しない場合もあり得る。その場合、後述する第8の実施形態で説明するように、そのページの誤り抑制符号化率は1となる。
そして、本実施形態に係る誤り抑制符号化では、各サブデータクラムに対してフラグを付加する。フラグは、対応するサブデータクラムがデータ変換されたか否かを表すメタ情報であり、例えば1ビットフラグである。したがって、例えば、あるサブデータクラムがデータ変換された場合にはそのフラグに“1”が設定され、データ変換されなかった場合にはそのフラグに“0”が設定される。したがって、本実施形態では、各ページデータに対し、サブデータクラムへの分割数に応じたビット数の冗長データ(フラグデータ)が付加される。それにより、本実施形態では、ページ間で誤り抑制の符号化率が変化することとなる。
つづいて、本実施形態に係る誤り抑制符号化では、データクラム単位で誤り抑制符号化が実行される。この誤り抑制符号化では、データクラムに含まれる全てのページのフラグを使用することで、各サブデータクラムをデータ変換するか否かの全ての組合せに対して、データ変換候補が生成される。以下に、図13〜図15を用いて、データ変換候補の生成について説明する。
図13は、2ビット/セルであるMLCの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図13(b)は、MLCの閾値電圧分布を示し、図13(a)は、図13(b)に示す各分布に対応付けられるデータコーディングの例を示している。また、図13(b)において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
図13(b)に示すように、MLCの場合、閾値電圧分布には、分布Er、分布A、分布B及び分布Cの4つの分布が含まれる。分布Erは閾値電圧が最も低く、消去状態の閾値電圧分布に対応する。分布A、分布B、分布Cの順に閾値電圧が高くなる。分布Cは閾値電圧が最も高い。2ビット/セルのMLCを用いる場合、4つの閾値電圧分布Er、A、B、Cに、2ビットのデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書込み(プログラム)時には、データコーディングに従って記憶するデータ値に応じた閾値電圧分布となるように各メモリセルに電荷を注入する。
また、MLCの場合、1つのワードラインに接続されたメモリセルグループに格納するデータ(以下、ワードラインデータという)が、2ページ分のデータ(以下、それぞれをページデータという)に対応する。各メモリセルが記憶可能な2ビットそれぞれは、これら2ページのいずれかに対応している。本実施形態では、これら2ページを、それぞれLOWERページ及びUPPERページと呼ぶ。
図13(b)は、データコーディングの一例を示す図である。図13(b)に示すように、分布Erは“11”のデータ値に対応し、分布Aは“01”のデータ値に対応し、分布Bは“00”のデータ値に対応し、分布Cは“10”のデータ値に対応する。図13(b)に示すデータコーディングは一例であり、データコーディングは図13(b)の例に限定されない。分布Erと分布Aとの間に読出し電圧VAが設定され、分布Aと分布Bとの間に読出し電圧VBが設定され、分布Bと分布Cとの間に読出し電圧VCが設定される。VBは、LOWERページのデータ値を判定するための読出し電圧であり、VA及びVCは、UPPERページのデータ値を判定するための読出し電圧である。なお、本実施形態に係るデータコーディングは、図13(b)に示すものに限定されず、種々変形することが可能である。
図14は、本実施形態においてライトデータであるワードラインデータをデータクラムよりも小さい単位(サブデータクラム)に分割する流れを説明するための図である。図14に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、1つ以上のデータクラムが生成される。各データクラムは、UPPERページ及びLOWERページそれぞれのページデータで構成されている。そして本実施形態では、UPPERページ及びLOWERページそれぞれのページデータをサブデータクラムに分割する。その際、本実施形態では、分割数を1以上とする。本実施形態では、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図14に示す例では、LOWERページのページデータを2分割し、UPPERページのページデータを1分割とした例が示されている。
次に、本実施形態に係る誤り抑制符号化では、図14のようにして生成したデータクラムに対し、各サブデータクラムに対して付加するフラグの組合せパターン数と同じパターン数のデータ変換候補を仮想的に生成する。これを、図14の例を用いて説明すると、1分割(分割無し)のUPPERページに対しては1つのフラグが設定され、2分割のLOWERページに対しては2つのサブデータクラムそれぞれに対して1つずつの合計2つのフラグが設定される。すなわち、図14に示す例では、合計3つのフラグが設定される。そこで本実施形態では、図15(a)〜図15(h)に示すように、3ビットのフラグが取り得るビットパターン(本説明では8通りのビットパターン)それぞれに対して1つずつのデータ変換候補が生成される。
なお、図15に示す例では、“1”のフラグに対応するページデータをデータ変換(ビットフリップ)し、“0”のフラグに対応するページデータをデータ変換しないことで、それぞれのデータ変換候補が生成される場合が例示されている。したがって、図15(a)に示す例では、全てのフラグが“0”であるため、データ変換候補はオリジナルのライトデータと同じものとなる。一方、図15(b)に示す例では、LOWERページのサブデータクラム#0に設定されたフラグが‘1’であるため、サブデータクラム#0のビット値がフリップされたデータ変換候補が生成される。図15(c)〜図15(h)についても同様に、フラグが‘1’のサブデータクラムのビット値をフリップすることで、それぞれのデータ変換候補が生成される。
以上のように、フラグの全ての組合せパターンに対してデータ変換候補を生成すると、本実施形態に係る誤り抑制符号化では、生成したデータ変換候補から、予め作成しておいた選択ルールに従って、1つのデータ変換候補を選択する。
ここで、選択ルールの一例について説明する。本実施形態では、例えば、以下の(1)及び(2)の選択ルールに従って、生成したデータ変換候補の中から1つのデータ変換候補を選択する。
(1)分布Erと分布Cが隣接している箇所の個数が最も少ないものを選択する。すなわち、EtoAエラーが発生しやすい隣接データパターン数が最小のものを選択する。
(2)もし(1)の条件を満たす複数の変換候補が存在する場合は、分布Erの個数が最も多い変換候補を選択する。すなわち、セルに与える疲労度がより少ないものを選択する。
なお、この選択ルールは、一例を述べたに過ぎず、他の任意の選択ルールを採用してもよい。例えば、セルに与える疲労度をより少なくするために、最高の閾値電圧をもつ分布Cがより少ない変換候補を選択することを前記選択ルールの第1条件としてもよい。すなわち、複数の候補から最も条件の良いものを選抜することが重要であり、選択ルールの内容自体は、対象とするメモリの特性に応じて他の種々の形態に変形しても良い。
そして、本実施形態に係る誤り抑制符号化では、選択ルールに従って選択したデータ変換候補に対して、それぞれのサブデータクラムに対するフラグビットよりなるフラグデータを付加する。したがって、本実施形態において、フラグデータのデータ量は、各データクラムにおけるサブデータクラムの数に応じて変化する値となる。また、フラグデータのデータ内容は、選択したデータ変換候補がオリジナルのライトデータに対して変換されたサブデータクラムを表すようにする。すなわち、本実施形態では、図15に例示したフラグデータが、選択したデータ変換候補に付加される。
本実施形態に係る誤り抑制符号化では、以上のような処理が全てのデータクラムに対して実行される。したがって、不揮発性メモリ20に書き込まれるデータには、フラグデータが含まれている。
次に、上述した本実施形態に係る誤り抑制符号化のより詳細な流れを、図6に示す構成及び図16に示すフローチャートを用いて説明する。図16に示すように、誤り抑制符号化では、まず、信号処理回路16は、例えばデバイス特性情報(図7のデバイス特性情報121に相当)等に基づいて、UPPERページのページデータ及びLOWERページのページデータそれぞれの分割数を決定する(ステップS601)。次に、信号処理回路16は、ステップS601で決定した各ページデータの分割数に基づいて、データクラムのデータ長を決定する(ステップS602)。例えば、信号処理回路16は、それぞれのページデータを分割する分割数の最小公倍数の倍数となるようにデータ長を決定する。その場合、図13〜図15に示した例では、UPPERページの分割数が1であり、LOWERページの分割数が2であるため、データ長は、1と2との最小公倍数である2の倍数となるように決定される。
次に、信号処理回路16は、例えばRAM12(図6参照)に蓄積されたライトデータからデータクラム1つ分のデータを取得し(ステップS603)、この取得したデータクラムの各ページのページデータを、ステップS601で決定した分割数のサブデータクラムに分割する(ステップS604)。つづいて、信号処理回路16は、各サブデータクラムを適宜データ変換(ビットフリップ)することで、データクラムに対する全通りのデータ変換候補を作成する(ステップS605)。
次に、信号処理回路16は、各データ変換候補の分布位置を特定する(ステップS606)。具体的には、信号処理回路16は、例えば図15(a)に示すデータ変換候補であれば、データクラムが“11”、“10”、“10”、“00”、“00”、“01”、“01”、“11”であることから、分布A、分布C、分布C、分布B、分布B、分布A、分布A、分布Erの分布位置を特定し、これをメモリセル番号と対応付けて記憶する。なお、メモリセル番号は、例えば、各メモリセルが接続されたビットラインに対応して付されるメモリセルの番号である。
次に、信号処理回路16は、ステップS605で作成したデータ変換候補のうちの1つを、特定した分布位置と予め用意しておいた選択ルールに基づいて選択する(ステップS607)。つづいて、信号処理回路16は、選択したデータ変換候補に対し、このデータ変換候補の生成に使用したフラグの組合せをフラグデータとして付加する(ステップS608)。これにより、ステップS603で取得したデータクラムに対する誤り抑制符号が生成される。
その後、信号処理回路16は、全てのデータクラムに対して誤り抑制符号化が完了したか否かを判定し(ステップS609)、完了している場合(ステップS609のYES)、本動作を終了する。一方、完了していない場合(ステップS609のNO)、信号処理回路16は、次のデータクラムへ移行して(ステップS610)、ステップS603へリターンし、以降の動作を実行する。
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号では、基本的には、上述した誤り抑制符号化の逆の手順、すなわち、誤り抑制符号化で実行されるデータ変換の逆変換が実行される。ただし、本実施形態に係る誤り抑制復号では、不揮発性メモリ20における読出し対象のデータが含まれるページからのデータ読出しが実行される。これは、誤り抑制符号化時には、ワードライン内の全ページデータを一括して扱ってそれぞれの分布位置を特定する必要があるが、誤り抑制復号時には、ワードライン内の全ページデータを必要としていないためである。また、誤り抑制符号化では、ライトデータをある一定のデータ長に区切り、区切られたデータクラム毎に誤り抑制符号化が実行されるのに対し、誤り抑制復号では、サブデータクラム毎に誤り抑制復号が実行されるためである。ただし、データクラムとフラグとの配置は、誤り抑制符号化時に決定した配置がそのまま使用される。
誤り抑制符号化の説明で触れたように、フラグデータは、誤り抑制符号化時に元データをフリップしたか否かを、サブデータクラム毎及びページ毎に示している。そのため、誤り抑制復号時には、フラグデータの内容に基づき、サブデータクラム毎に、データをフリップするかしないかを判断することが可能である。
次に、上述した本実施形態に係る誤り抑制復号のより詳細な流れを、図6に示す構成及び図17に示すフローチャートを用いて説明する。なお、本動作において、信号処理回路16に入力されるデータは、不揮発性メモリ20から直接読み出されたデータであってもよいし、不揮発性メモリ20から読み出されてRAM12に一旦格納されたデータであってもよい。
図17に示すように、誤り抑制復号では、まず、信号処理回路16は、不揮発性メモリ20又はRAM12から、サブデータクラム1つ分のデータと、このサブデータクラムに対応するフラグとを取得する(ステップS621)。次に、信号処理回路16は、取得したフラグがサブデータクラムの“データ変換あり”を示しているか否かを判定する(ステップS622)。なお、図15に示す例では、フラグが“0”である場合、そのサブデータクラムは“データ変換なし”であり、“1”である場合、そのサブデータクラムは“データ変換あり”である。
フラグが “データ変換あり”を示している場合(ステップS622のYES)、信号処理回路16は、ステップS621で取得したサブデータクラムに対し、施されているデータ変換を解消するデータ変換(逆データ変換という)を実行し(ステップS623)、ステップS624へ進む。一方、フラグが“データ変換なし”を示している場合(ステップS622のNO)、信号処理回路16は、ステップS623をスキップして、ステップS624へ進む。なお、データ変換がビットフリップである場合、逆データ変換は同じくビットフリップであってよい。
ステップS624では、信号処理回路16は、読出し対象のデータを構成する全てのサブデータクラムに対する上記動作の実行が完了したか否かを判定し、完了している場合(ステップS624のYES)、本動作を終了する。一方、完了していない場合(ステップS624のNO)、信号処理回路16は、処理対象を次のサブデータクラムへと移行し(ステップS625)、その後、ステップS621へリターンして、以降の動作を実行する。
以上のように、本実施形態によれば、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
なお、上述では、誤り抑制符号化と誤り抑制復号との両方で、データクラム毎に独立した演算が実行される。そのため、誤り抑制符号の現実の実装では、データクラム毎に直列に演算が実行される実装形態とすることも、複数のデータクラムに並列に演算が実行される実装形態とすることも可能である。
また、フラグデータの配置に関しては、データとフラグとをそれぞれでまとめて配置する構成や、データとフラグとを全データ長に分散させて配置する構成など、種々変形することが可能である。
さらに、本実施形態では、UPPERページとLOWERページとの両方をサブデータクラムに分割する例を説明したが、このような例に限定されず、例えば、何れか一方のページについては誤り抑制符号化を実施しないように構成することも可能である。
さらにまた、本実施形態では、データ変換の一例としてビットフリップを挙げているが、ビットフリップ以外のデータ変換を適用することも可能である。例えば、あらかじめ決定しておいた固定パターンとサブデータクラムとの排他的論理和を演算するXOR演算や、あらかじめ決定しておいたルールに従ってビットを並べ替えるインターリービングなどをデータ変換として使用することも可能である。
さらにまた、本実施形態に係るデータ変換候補の選択ルールは、複数のデータ変換候補の中から条件の良いデータ変換候補(好ましくは、最も条件のよいデータ変換候補)を選択することが可能な選択ルールであれば、上述した選択ルールに限定されず、種々変形することが可能となる。例えば、対象とする不揮発性メモリ20の特性に応じて適宜変更されてもよい。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第7の実施形態)
上述した第6の実施形態では、不揮発性メモリ20のメモリセルがMLCである場合を例示した。これに対し、第7の実施形態では、不揮発性メモリ20のメモリセルがTLCである場合を例示する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
第6の実施形態と同様、第7の実施形態に係るメモリシステムは、例えば第1の実施形態において図6を用いて説明したメモリシステム1と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第1の実施形態において図7を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。さらに、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについても、基本的には、第6の実施形態に係るそれらと同様であってよい。以下、本実施形態に係る誤り抑制符号化及び誤り抑制復号について、より詳細に説明する。
まず、本実施形態に係る誤り抑制符号化について説明する。図18は、3ビット/セルであるTLCの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図18(b)は、TLCの閾値電圧分布を示し、図18(a)は、図18(b)に示す各分布に対応付けられるデータコーディングの例を示している。また、図18(b)において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
図18に示すように、TLCの場合も、MLCの場合(図13参照)と同様に、ライトデータがある一定のデータ長に区切られて、区切られたデータクラム毎に誤り抑制符号化が実施される。この誤り抑制符号化では、基本となるデータクラムのデータ長が決定され、そして、UPPERページとMIDDLEページとLOWERページとのそれぞれのページデータが任意の整数で分割されることで、各ページデータが1つ以上のサブデータクラムに分割される。
図19は、本実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。図19に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、1つ以上のデータクラムが生成される。各データクラムは、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータで構成されている。そして本実施形態では、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータをサブデータクラムに分割する。その際、本実施形態でも、第6の実施形態と同様に、各ページデータの分割数を1以上とする。そして、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図19に示す例では、LOWERページのページデータを4分割し、MIDDLEページのページデータを2分割し、UPPERページのページデータを1分割とした例が示されている。
また、本実施形態においても、第6の実施形態において図15を用いて説明した動作と同様に、サブデータクラムと同数のフラグ(本説明では7ビットのフラグ)が取り得るビットパターン(本説明では128通りのビットパターン)それぞれに対して1つずつのデータ変換候補が生成される。そして、生成した128通りのデータ変換候補から、予め作成しておいた選択ルールに従って、1つのデータ変換候補が選択される。そして、第6の実施形態と同様に、選択ルールに従って選択したデータ変換候補に対してフラグデータを付加することで、誤り抑制符号化された符号化データを生成する。
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号についても、第6の実施形態に係る誤り抑制復号と同様に、基本的には、上述した誤り抑制符号化の逆の手順が実行される。すなわち、読出し対象のデータが含まれるページのみに対してデータ読出しが実行される。そして、誤り抑制符号化時の元データ列とフラグとの配置及びデータ内容に基づき、必要な全てのサブデータクラムに対して逆データ変換が実施される。
以上のように、本実施形態によれば、不揮発性メモリ20のメモリセルがTLCである場合でも、第6の実施形態と同様に、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第8の実施形態)
また、第8の実施形態では、不揮発性メモリ20のメモリセルがQLCである場合を例示する。なお、以下の説明において、上述した実施形態と同様の構成及び動作については、それらを引用することで、重複する説明を省略する。
第6及び第7の実施形態と同様、第8の実施形態に係るメモリシステムは、例えば第1の実施形態において図6を用いて説明したメモリシステム1と同様であってよく、また、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、例えば第1の実施形態において図7を用いて説明した誤り抑制符号及び誤り訂正符号の一実装形態と同様であってよい。さらに、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについても、基本的には、第6及び第7の実施形態に係るそれらと同様であってよい。以下、本実施形態に係る誤り抑制符号化及び誤り抑制復号について、より詳細に説明する。
まず、本実施形態に係る誤り抑制符号化について説明する。図20は、4ビット/セルであるQLCの閾値電圧分布とデータコーディングとの対応付けの一例を示す図である。なお、図20(b)は、QLCの閾値電圧分布を示し、図20(a)は、図20(b)に示す各分布に対応付けられるデータコーディングの例を示している。また、図20(b)において、横軸は閾値電圧を表し、縦軸はメモリセル数を表している。
図20に示すように、QLCの場合も、MLC及びTLCの場合(図13及び図18参照)と同様に、ライトデータがある一定のデータ長に区切られて、区切られたデータクラム毎に誤り抑制符号化が実施される。この誤り抑制符号化では、基本となるデータクラムのデータ長が決定され、そして、TOPページとUPPERページとMIDDLEページとLOWERページとのそれぞれのページデータが任意の整数で分割されることで、各ページデータが1つ以上のサブデータクラムに分割される。
図21は、本実施形態に係るワードラインデータをサブデータクラムに分割する流れを説明するための図である。図21に示すように、本実施形態では、まず、ワードラインデータをある一定のデータ長で区切ることで、1つ以上のデータクラムが生成される。各データクラムは、TOPページ、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータで構成されている。
そこで、本実施形態では、TOPページを誤り抑制符号化の対象とせず、それ以外の、UPPERページ、MIDDLEページ及びLOWERページを誤り抑制符号化する場合について説明する。この場合、TOPページ以外の、UPPERページ、MIDDLEページ及びLOWERページそれぞれのページデータがサブデータクラムに分割される。その際、本実施形態でも、第6及び第7の実施形態と同様に、各ページデータの分割数を1以上とする。
そして、各ページデータを均等なデータ長のサブデータクラムに分割することを可能にするために、データクラムのデータ長が分割数の整数倍となるように設定される。図21に示す例では、LOWERページのページデータを2分割し、MIDDLEページのページデータを1分割とし、UPPERページのページデータを2分割とした例が示されている。
また、本実施形態においても、第6又は第7の実施形態において図15を用いて説明した動作と同様に、サブデータクラムと同数のフラグ(本説明では5ビットのフラグ)が取り得るビットパターン(本説明では32通りのビットパターン)それぞれに対して1つずつのデータ変換候補が生成される。そして、生成した32通りのデータ変換候補から、予め作成しておいた選択ルールに従って、1つのデータ変換候補が選択される。そして、第6又は第7の実施形態と同様に、選択ルールに従って選択したデータ変換候補に対してフラグデータを付加することで、誤り抑制符号化された符号化データを生成する。
次に、本実施形態に係る誤り抑制復号について説明する。本実施形態に係る誤り抑制復号についても、第6及び第7の実施形態に係る誤り抑制復号と同様に、基本的には、上述した誤り抑制符号化の逆の手順が実行される。すなわち、読出し対象のデータが含まれるページのみに対してデータ読出しが実行される。そして、誤り抑制符号化時の元データ列とフラグとの配置及びデータ内容に基づき、必要な全てのサブデータクラムに対して逆データ変換が実施される。
以上のように、本実施形態によれば、不揮発性メモリ20のメモリセルがQLCである場合でも、第6及び第7の実施形態と同様に、各ページのページデータの分割数を制御することでページ毎に独立して誤り抑制符号化率を変化させることが可能となる。それにより、本実施形態によれば、ビットエラーの発生を抑制して安定したデータ読出しを可能にするメモリシステムを実現することができる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第9の実施形態)
次に、第9の実施形態について説明する。不揮発性メモリ20を用いたメモリシステムには、上述した実施形態において触れたように、誤り訂正を実行するためのECC回路15(図6参照)が搭載される。そこで本実施形態では、誤り抑制を実行するための信号処理回路16とECC回路15とを備えるメモリシステム1(図6参照)の動作について、以下に図面を参照して詳細に説明する。
第9の実施形態に係るメモリシステムは、上述の実施形態において図6を用いて説明したメモリシステム1と同様であってよい。また、本実施形態に係る誤り抑制符号化及び誤り抑制復号の流れについては、上述した実施形態のうちのいずれが適用されてもよい。
図22は、本実施形態に係る書込み動作の一例を示すフローチャートである。図22に示すように、本実施形態に係る書込み動作では、まず、制御部であるプロセッサ11は、例えば、ホスト30からホストI/F17を介して書込み要求を受信する(ステップS901)。つづいて、プロセッサ11は、書込み要求に含まれている論理アドレスから、不図示のアドレス変換テーブルを用いることで、書込み先のページを示す物理アドレスを特定する(ステップS902)。なお、論理アドレスと共に書込み要求に含まれている書込み対象のデータ(ライトデータ)は、例えばRAM12に一時的に保持される。
次に、プロセッサ11は、信号処理回路16に対して誤り抑制符号化の実行を指示する。その際、不揮発性メモリ20への書込みがワードライン単位で実行されることから、プロセッサ11は、RAM12内のワードラインデータ1つ分のライトデータに対する誤り抑制符号化の実行を信号処理回路16へ指示する。これに対し、信号処理回路16は、RAM12から1つ分のワードラインデータを取得し、取得したワードラインデータに対して、上述の実施形態で説明した誤り抑制符号化を実行する(ステップS903)。なお、誤り抑制符号化により得られたデータ(以下、誤り抑制符号化データという)は、例えば、再度、RAM12に格納される。
次に、プロセッサ11は、ECC回路15に対し、RAM12に格納されている誤り抑制符号化データのECC符号化を指示する。これに対し、ECC回路15は、RAM12から誤り抑制符号化データを取得し、取得した誤り抑制符号化データに対して、ECC符号化を実行する(ステップS904)。なお、ECC符号化は、ECCフレーム単位で実行される。ECCフレームについては、後述において説明する。
また、プロセッサ11は、ECC回路15によりECC符号化で生成されたECCフレームの不揮発性メモリ20への書込みをメモリI/F18へ指示する。これに対し、メモリI/F18は、ECC回路15から入力されたECCフレームを不揮発性メモリ20へ転送するとともに、不揮発性メモリ20における不図示のコマンド処理部に対してECCフレームの上記物理アドレスへの書込みを指示する。これにより、不揮発性メモリ20において、ECCフレームの上記物理アドレスへの書込みが実行される(ステップS905)。
その後、プロセッサ11は、RAM12内の全てのライトデータに対する処理が完了したか否かを判定し(ステップS906)、完了している場合(ステップS906のYES)、本動作を終了する。一方、完了していない場合(ステップS906のNO)、プロセッサ11は、ステップS903へリターンし、次のワードラインデータに対して以降の処理を実行する。
なお、図22に示した書込み動作において、先に誤り抑制符号化を実行し、後にECC符号化を実行する流れとしたのは、データクラムのみならずフラグデータを含むデータ全体を誤り訂正符号で保護するためである。すなわち、フラグデータにエラーが生じた場合、エラーのフラグに基づいてデータ変換されたサブデータクラム全体がエラーとなり、それにより、エラー率を増幅させてしまう。そこで本実施形態では、誤り抑制符号化データに対してECC符号化を実行する構成とすることで、データクラムのみならずフラグデータを含むデータ全体を誤り訂正符号で保護するように構成する。
次に、本実施形態に係る読出し動作について、図面を参照して詳細に説明する。図23は、本実施形態に係る読出し動作の一例を示すフローチャートである。図23に示すように、本実施形態に係る読出し動作では、まず、プロセッサ11は、例えば、ホスト30からホストI/F17を介して読出し要求を受信する(ステップS921)。つづいて、プロセッサ11は、読出し要求に含まれている論理アドレスから、不図示のアドレス変換テーブルを用いることで、読出し先のページを示す物理アドレスを特定する(ステップS922)。そして、プロセッサ11は、特定した物理アドレスからのデータの読出しをメモリI/F18に指示する。これに対し、メモリI/F18は、指定された物理アドレスからのデータの読出しを不揮発性メモリ20における不図示のコマンド処理部へ指示する。これにより、不揮発性メモリ20において、上記物理アドレスからのデータの読出しが実行される(ステップS923)。
メモリI/F18によって読み出されたリードデータは、まず、ECC回路15に入力される。ECC回路15は、プロセッサ11からの指示に従い、入力されたリードデータに対するECC復号を実行する(ステップS924)。なお、ECC回路15によるECC復号によって誤り訂正されたデータは、例えばRAM12に格納される。
次に、プロセッサ11は、ECC回路15によるECC復号に成功したか否かを判定し(ステップS925)、成功しなかった場合(ステップS925のNO)、ホストI/F17を介してホスト30にリードエラーを通知し(ステップS928)、本動作を終了する。一方、ECC復号に成功した場合(ステップS925のYES)、プロセッサ11は、ECC回路15によるECC復号によって誤り訂正されたデータ(以下、誤り訂正済みデータという)に対する誤り抑制復号の実行を信号処理回路16へ指示する。これに対し、信号処理回路16は、RAM12に格納されている誤り訂正済みデータに対して、上述の実施形態で説明した誤り抑制復号を実行する(ステップS926)。なお、誤り抑制復号により復元されたユーザデータは、例えば、再度、RAM12に格納される。
その後、プロセッサ11は、RAM12内に復元されたユーザデータをホストI/F17を介してホスト30へ転送し(ステップS927)、本動作を終了する。
このように、本実施形態に係る読出し動作では、ページ毎にデータが読み出され、そして、読み出されたデータに対してECC復号が実行された後に、誤り訂正復号が実行される。
次に、本実施形態に係るECCフレームについて、図面を用いて詳細に説明する。図24は、本実施形態に係るECCフレームの概略構成例を示す図である。ここで、ECCフレームとは、ECC符号化及びECC復号を実行する際のデータの単位である。一般的に、不揮発性メモリ20のページ長は固定であるが、上述した第6〜第8の実施形態では、フラグのデータサイズがサブデータクラムの分割数に応じてページ毎に異なる。そこで、図24に示すように、本実施形態では、ECC符号化対象のユーザデータを格納するデータ部と、誤り抑制符号化で付加されたフラグデータと、ECC符号化で付加されたパリティを格納するECCパリティ部との総データ量が一定となるように、誤り訂正符号化率を調節する。
以上のように、本実施形態によれば、誤り抑制符号と誤り訂正符号とを組み合わせることで、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第10の実施形態)
次に、第10の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態では、上述した実施形態において、ECC符号を多次元の誤り訂正符号とする。多次元の誤り訂正符号とは、ECC符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。以下の説明では、多次元の誤り訂正符号の具体例として、積符号を例に挙げて説明する。ただし、積符号に限定されず、種々の多次元の誤り訂正符号を用いることが可能である。
図25は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図25に示すように、本実施形態に係るメモリシステム2は、例えば第1の実施形態において図6を用いて説明したメモリシステム1と同様の構成に加え、ページ間ECC回路215をさらに備える。すなわち、本実施形態に係るメモリシステム2は、各ページデータをECCフレームとしてECC符号化/復号を実行するECC回路15と、複数のページデータで構成された積符号に対してページ間方向にECC符号化/復号を実行するページ間ECC回路215とを備える。本実施形態において、ECC回路15をページ内ECC回路15といい、ページ内ECC回路15によるECC符号化/復号をECC1符号化/復号といい、これにより生成されたパリティをECC1パリティという。また、ページ間ECC回路215によるECC符号化/復号をECC2符号化/復号といい、これにより生成されたパリティをECC2パリティという。
ここで、図26に、本実施形態に係る積符号の一例を示す。図26に示す積符号では、複数のページデータ#0〜#m−1に対して、ページ間方向に1つ以上のECC2パリティ(本例では、2つのECC2パリティページ#0〜#1)が付加された構造を有する。各ページデータ#0〜#m−1は、ページ間で同じシンボル数(n個)のユーザデータを格納するデータ部と、ページ間で異なる長さのフラグデータを格納するフラグ部と、各ページデータの長さが同じとなるように調整された長さのECC1パリティを格納するECC1パリティ部とから構成されている。ページデータ#0〜#m−1それぞれは、ページ内ECC回路15の符号化単位であるECCフレームである。本説明では、各ページデータ#0〜#m−1をECC1フレームと称する。
一方、各ECC2パリティページ#0〜#1は、ECC1フレームのデータ部と同じシンボル数のECC2パリティ部と、ECC2パリティページ間で異なる長さのフラグデータを格納するフラグ部と、各ECC2パリティページの長さが同じとなるように調整された長さのECC1パリティを格納するECC1パリティ部とから構成されている。ECC2パリティページ#0〜#1それぞれも、ページ内ECC回路15の符号化単位であるECCフレームである。なお、ECC2パリティページの数は2つに限定されず、目的とする符号化率や誤り訂正能力に応じて種々変形されてよい。
各ECC2パリティページ#0〜#1は、例えば以下のようにして生成される。まず、ECC1フレームを任意のワードラインの任意のページからm個集め、各ECC1フレームのデータ部をn個のシンボルに分割する。そして、各ECC1フレームにおける同じ番号のシンボルを集めることで、ECC2パリティ#0〜#1それぞれのECC2パリティ部におけるn個のシンボルを算出するためのn個のフレームデータを作成する。つづいて、n個のフレームデータをECC2符号化することで、ECC2パリティページ#0〜#1それぞれのn個のシンボルよりなるECC2パリティ部を生成する。
このように作成されたECC2パリティ部に対しては、ページデータ#0〜#m−1におけるデータ部と同様に、誤り抑制符号化が実行されてフラグ部が付与される。さらに、各ECC2パリティ部にフラグ部を付加したものにECC1符号化を実行することで、ECC1パリティ部が生成される。その結果、各ECC2パリティ部とフラグ部とECC1パリティ部とからなるECC2パリティページ#0〜#1が生成される。
つづいて、本実施形態に係る書込み動作について、図面を参照して詳細に説明する。図27は、本実施形態に係る書込み動作の一例を示すフローチャートである。図27に示すように、本実施形態に係る書込み動作では、まず、制御部であるプロセッサ11は、例えば、ホスト30からホストI/F17を介して書込み対象のライトデータを受信する(ステップS1001)。受信したライトデータは、例えばRAM12に蓄積される。
次に、プロセッサ11は、上述した実施形態のいずれかに係る誤り抑制符号化の実行に必要なページ数分のライトデータを受信済みであるか否か、すなわち、必要なページ数分のライトデータがRAM12に蓄積されているか否かを判定し(ステップS1002)、未だ必要なページ数分のライトデータが蓄積されていない場合(ステップS1002のNO)、ステップS1001へリターンする。一方、必要なページ数分のライトデータがRAM12に蓄積されている場合(ステップS1002のYES)、プロセッサ11は、信号処理回路16に対し、RAM12に蓄積されている必要なページ数分のライトデータに対する誤り抑制符号化の実行を指示する。これに対し、信号処理回路16は、RAM12からワードラインデータ1つ分のライトデータを順次取得し(ステップS1003)、この取得したワードラインデータに対して、上述の実施形態で説明した誤り抑制符号化を実行する(ステップS1004)。そして、信号処理回路16は、RAM12に蓄積されている必要なページ数分のライトデータ全てに対して誤り抑制符号化の実行を完了したか否かを判定し(ステップS1005)、完了している場合(ステップS1005のYES)、ステップS1006へ進む。一方、完了していない場合(ステップS1005のNO)、ステップS1003へリターンし、次の1つ分のワードラインデータに対して以降の処理を実行する。その結果、RAM12内には、必要なページ数分の誤り抑制符号化済みデータが蓄積される。
ステップS1006では、プロセッサ11は、ページ間ECC回路215に対し、RAM12内に蓄積されている必要なページ数分の誤り抑制符号化済みデータに対するECC2符号化の実行を指示する。これに対し、ページ間ECC回路215は、RAM12から必要なページ数分の誤り抑制符号化済みデータを取得し、取得した誤り抑制符号化済みデータに対してECC2符号化を実行する(ステップS1006)。なお、ECC2符号化により得られたECC2符号化済みデータは、RAM12に格納されてよい。
次に、プロセッサ11は、ページ内ECC回路15に対し、RAM12に蓄積されているECC2符号化済みデータに対するECC1符号化の実行を指示する。これに対し、ページ内ECC回路15は、RAM12からワードラインデータ1つ分のライトデータを順次取得し(ステップS1007)、この取得したワードラインデータに対してECC1符号化を実行する(ステップS1008)。そして、プロセッサ11は、書込み先のページを選択し(ステップS1009)、その後、例えば図22のステップS905と同様に、ECC1符号化で生成されたECC1フレームの不揮発性メモリ20への書込みをメモリI/F18へ指示し、この指示に応じてメモリI/F18が動作することで、ECC1フレームの不揮発性メモリ20への書込みが実行される(ステップS1010)。
次に、プロセッサ11は、RAM12に蓄積されているECC2符号化済みデータ全てに対してECC1符号化の実行を完了したか否かを判定し(ステップS1011)、完了している場合(ステップS1011のYES)、本動作を終了する。一方、完了していない場合(ステップS1011のNO)、ステップS1007へリターンし、次の1つ分のワードラインデータに対して以降の処理を実行する。
このように、本実施形態に係る書込み動作では、ECC2符号化が複数ページにまたがるため、ECC2符号化に必要となる複数ページを一括で書込む書込み動作が実施される。そして、第9の実施形態でも説明したように、誤り抑制符号化を行った後にECC符号化する必要があるため、本実施形態では、ECC2符号化に必要となる複数ページ全てに対して先に誤り抑制符号化を実施することが必要となる。そして、誤り抑制符号化及びECC2符号化が完了したひとまとまりのデータに対して、ページデータ毎にECC1符号化が実行され、これにより得られたECC1フレームが不揮発性メモリ20に順次書き込まれる。
つづいて、本実施形態に係る読出し動作について、図面を参照して詳細に説明する。図28は、本実施形態に係る読出し動作の一例を示すフローチャートである。図28に示すように、本実施形態に係る読出し動作では、図23におけるステップS921〜S924と同様に、ホスト30から受信した読出し要求に応じて、読出し要求で指定されたページからページデータが読み出され、この読み出されたページデータに対するECC1復号が実行される(ステップS1021〜S1024)。そして、プロセッサ11は、ページ内ECC回路15によるECC1復号に成功したか否かを判定する(ステップS1025)。
ECC1復号に成功した場合(ステップS1025のYES)、プロセッサ11は、ステップS1030へ進む。一方、ECC1復号に失敗した場合(ステップS1025のNO)、プロセッサ11は、読出し対象のページから読み出したページデータに対してECC2復号を実行する際に必要となる全てのページデータを格納するページを選択し(ステップS1026)、選択した全てのページに対するデータの読出しをメモリI/F18に指示する。これに対し、メモリI/F18は、選択された全てのページからのデータの読出しを不揮発性メモリ20における不図示のコマンド処理部へ指示する。これにより、不揮発性メモリ20において、選択された全てのページからのデータの読出しが実行される(ステップS1027)。
次に、プロセッサ11は、選択された全てのページから読み出されたページデータに対するECC2符号化をページ間ECC回路215へ指示する。ページ間ECC回路215は、プロセッサ11からの指示に従い、入力された全てのページデータに対するECC2復号を実行する(ステップS1028)。
次に、プロセッサ11は、ページ間ECC回路215によるECC2復号に成功したか否かを判定し(ステップS1029)、成功しなかった場合(ステップS1029のNO)、ホストI/F17を介してホスト30にリードエラーを通知し(ステップS1032)、本動作を終了する。一方、ECC2復号に成功した場合(ステップS1029のYES)、プロセッサ11は、ステップS1030へ進む。
ステップS1030では、プロセッサ11は、ページ間ECC回路215によるECC2復号によって誤り訂正された誤り訂正済みデータに対する誤り抑制復号の実行を信号処理回路16へ指示する。これに対し、信号処理回路16は、RAM12に格納されている誤り訂正済みデータに対して、上述の実施形態で説明した誤り抑制復号を実行する。なお、誤り抑制復号により復元されたユーザデータは、例えば、RAM12に格納される。
その後、プロセッサ11は、RAM12内に復元されたユーザデータをホストI/F17を介してホスト30へ転送し(ステップS1031)、本動作を終了する。
このように、本実施形態に係る読出し処理では、ECC1復号に失敗した場合にECC2復号が実行されるが、その際にECC2復号に必要なデータは複数ページにまたがるため、ECC2復号に先立ち、それらのデータを全て読み出すことが必要である。そして、ECC2復号に成功して誤り訂正がなされた場合、読出し対象のページデータに対する誤り抑制復号が実行される。
以上のように、本実施形態によれば、より訂正能力の高い多次元の誤り訂正符号と誤り抑制符号とを組み合わせることで、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第11の実施形態)
次に、第11の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第10の実施形態では、ECC2符号化を実行する際、集めたm個のフレーム(ページデータ)のデータ部だけをECC2符号化の対象としていた。ただし、復号処理において、ECC1復号では訂正不可能であったが、その後のECC2復号で訂正可能である場合が存在する。そのような場合、第10の実施形態では、フラグ部がECC2復号の対象外であるため、フラグ部にエラーが含まれていると、ECC2復号でフラグ部のエラーを誤り訂正することができず、その結果、その後の誤り抑制復号が正常に実施できない可能性がある。そこで、第11の実施形態では、フラグ部をECC2符号化の対象とした場合について、例を挙げて説明する。
ただし、フラグ部のデータ長(フラグ長ともいう)は、ページ毎に異なる可能性がある。異なるフラグ長のページが混在した状態でECC2符号化を実行した場合、フラグ部に対するECC2符号化においてデータが存在しないページが発生してしまう。そこで本実施形態では、このような事態の発生を避けるために、積符号を構成する際の収集対象とするページデータを、データ部のデータ長が同じであるという条件に加え、フラグ部のデータ長が同じであるという条件を満たすページデータとする。例えば、MLCの場合では、UPPERページのみ又はLOWERページのみのECC1フレームを集めて積符号を構成する。
図29は、本実施形態に係る積符号の一例を示す図である。図29に示すように、本実施形態に係る積符号では、ページデータ#0〜#m−1間で、シンボル数がn個のデータ部のみならず、シンボル数がk個(kは1以上の整数)のフラグ部のデータ長も同じである。そのため、本実施形態では、データ部のみならずフラグ部も対象として、ECC2符号化を実行することが可能である。その結果、ECC2パリティページ#0及び#1には、#0〜#n+k−1の計n+k個のECC2パリティで構成されたECC2パリティ部が含まれることとなる。
以上のように、本実施形態によれば、フラグデータもECC2符号化の対象とすることで、フラグデータをECC2パリティで保護することが可能となるため、より安定したデータ読出しを可能にするメモリシステムを実現することが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第12の実施形態)
次に、第12の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第11の実施形態では、データ部だけでなくフラグ部のデータ長も同じページデータを収集して積符号を構成した。これに対し、第12の実施形態では、データ長の短いフラグに対してダミーデータを付加することで擬似的にフラグ長を揃え、それにより、積符号を構成する際の収集対象とするページデータに課す条件を第10の実施形態と同程度に緩和しつつ、ECC2符号によりフラグ部も保護することを可能にする。
図30は、本実施形態に係る積符号の一例を示す図である。図30に示すように、本実施形態に係る積符号では、ページデータ#1及び#m−1のフラグ長が他のページデータにおける最長のフラグ長よりも1シンボル短く、ページデータ#3のフラグ長が最長のフラグ長よりも2シンボル短い。そこで本実施形態では、ページデータ#1及び#m−1のフラグ部に1シンボルのダミーデータを付加し、ページデータ#3のフラグ部に2シンボルのダミーデータを付加することで、擬似的にフラグ長を揃える。なお、ダミーデータの内容は任意であるが、例えば全ビット“0”のシンボルなどとすることが可能である。その場合、ダミーデータの付加をゼロパディングともいう。
以上のように、本実施形態によれば、ゼロパディングによりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第13の実施形態)
次に、第13の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第12の実施形態では、データ長の短いフラグに対してダミーデータを付加することで擬似的にフラグ長を揃えていた。これに対し、第13の実施形態では、フラグ長の長いフラグ部の一部のシンボル(フラグ)をフラグ長の短いフラグ部に再配分することで、擬似的にフラグ長を揃える場合について、例を挙げて説明する。
図31は、本実施形態に係る積符号の一例を示す図である。図31に示すように、本実施形態に係る積符号では、ページデータ#0及び#2のフラグ長が平均のフラグ長よりも1シンボル長く、ページデータ#1及び#3のフラグ長が平均のフラグ長よりも1シンボル短い。そこで本実施形態では、平均よりもフラグ長が1シンボル長いページデータ#0及び#2の各フラグ部の1シンボルを、平均よりもフラグ長が1シンボル短いページデータ#1及び#3の各フラグ部に再配分することで、擬似的にフラグ長を揃える。
以上のように、本実施形態によれば、フラグデータの再配分によりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第14の実施形態)
次に、第14の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した第13の実施形態では、フラグ長の長いフラグ部の一部のフラグをフラグ長の短いフラグ部に再配分することで、擬似的にフラグ長を揃えたが、この場合、フラグ部の実データ長によっては、ページ間で完全に均等となるようにフラグを再配分することができない可能性が存在する。そこで第14の実施形態では、フラグを再配分した結果、未だフラグ長が足りていないページデータに対しては、ダミーデータを付加することで、擬似的にフラグ長を揃えることとする。
図32は、本実施形態に係る積符号の一例を示す図である。図32に示すように、本実施形態に係る積符号では、ページデータ#0及び#2のフラグ長が他の平均的なフラグ長よりも1シンボル長く、ページデータ#1及び#m−1のフラグ長が他の平均的なフラグ長よりも1シンボル短く、ページデータ#3のフラグ長が他の平均的なフラグ長よりも1.5シンボル短い。
そこで本実施形態では、他の平均的なフラグ長よりも1シンボル長いページデータ#0及び#2の各フラグ部の1シンボルを、他の平均的なフラグ長よりも1シンボル以上短いページデータ#1及び#3各フラグ部に再配分する。また、フラグが再配分されないページデータ#m−1のフラグ部、及び、フラグの再配分によってもフラグ長が不足しているページデータ#3のフラグ部には、不足分のダミーデータを付加することで、擬似的にフラグ長を揃える。なお、ダミーデータは、例えば第12の実施形態で例示したダミーデータと同様であってよい。
以上のように、本実施形態によれば、フラグデータの再配分とゼロパディングとの組合せによりページ間で擬似的にフラグ長を揃えることが可能となるため、多次元の誤り訂正符号を構成するページデータの選択自由度を高まることが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第15の実施形態)
次に、第15の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述の第10〜第14の実施形態で例示したような、ページ内ECCを内符号、ページ間ECCを外符号とした積符号を用いる場合、ページ内ECCでの誤り訂正失敗時にはページ間ECCを使用した誤り訂正処理へ移行する。この際、ページ内ECCとページ間ECCとの間に誤り抑制符号化処理が挿入されていると、ページ内ECCの誤り訂正失敗時に誤り抑制復号でのエラー増幅が発生してしまう場合がある。これを、図33及び図34を用いて説明する。
図33は、ページ間方向の誤り訂正符号と誤り抑制符号とページ内方向の誤り訂正符号との一実装形態を示すブロック図である。図34は、図33に示す誤り抑制符号化器で誤り抑制符号化されたデータに発生したエラーが誤り抑制復号器で増幅される場合の一例を示す図である。なお、図33において、ページ内ECC符号化器9151及びページ内ECC復号器9152は、図1に示したECC符号化器9151及びECC復号器9152と同様であってよい。また、その他の、ホストI/F9017、メモリI/F9018、不揮発性メモリ9020、誤り抑制符号化器9161及び誤り抑制復号器9162も、図1に示したそれらと同様であってよい。さらに、ページ間ECC符号化器9251は、複数のページデータで構成された積符号に対してページ間方向にECC符号化を実行し、ページ間ECC復号器9252は、積符号に対してページ間方向にECC復号を実行する。
図33に示す例では、ホスト30からホストI/F17を介して入力されたライトデータは、まず、ページ間ECC符号化器9251に入力されてECC2パリティが付加された後、誤り抑制符号化器9161に入力されて誤り抑制符号化される。そして、誤り抑制符号化されたデータは、ページ内ECC符号化器9151に入力されてECC1パリティが付加された後、メモリI/F9018を介して不揮発性メモリ9020に書き込まれる。
また、メモリI/F9018により不揮発性メモリ9020から読み出されたリードデータは、まず、ページ内ECC復号器9152に入力され、ページ内ECC復号器9152においてページデータに対する誤り訂正がなされた後、誤り抑制復号器9162に入力されて誤り抑制復号される。そして、誤り抑制復号されたデータは、ページ間ECC復号器9252に入力されてページ間方向に誤り訂正される。本実施形態においては、「ページ内ECC復号器9152においてページデータに対する誤り訂正がなされる」ことを、「ページ内ECC復号器9152によりページ内方向に誤り訂正される」とも呼ぶ。
ここで、不揮発性メモリ9020から読み出したリードデータのエラーが誤り抑制復号により増幅される場合について、図34の例を用いて説明する。図34(a)は、誤り抑制符号化器9161へ入力されるデータ(ライトデータ)の一例を示し、図34(b)は、誤り抑制符号化器9161から出力された誤り抑制符号化済みのデータの一例を示し、図34(c)は、誤り抑制復号器9162へ入力されるデータ(リードデータ)の一例を示し、図34(d)は、誤り抑制復号器9162から出力された誤り抑制復号済みのデータの一例を示している。
図34(a)から図34(b)に示すように、誤り抑制符号化器9161では、各データクラムに対して必要に応じてデータ変換(図34に示す例ではビットフリップ)が実行される。そして、誤り抑制符号化器9161は、データ変換されていないデータクラムに“0”のフラグビットを付加し、データ変換されたデータクラムに“1”のフラグビットを付加して、誤り抑制符号化済みのデータを出力する。図34(b)に示す例では、データ変換されていない先頭のデータクラム#0には“0”のフラグビットが付され、データ変換された2番目のデータクラム#1には“1”のフラグビットが付されている。このようにして誤り抑制符号化されたデータは、ページ内ECC符号化器9151でECC1符号化された後、メモリI/F9018により不揮発性メモリ9020に書き込まれる。
その後、図34(c)に示すように、メモリI/F9018により不揮発性メモリ9020から読み出されたデータ(リードデータ)にフラグビットのエラーが発生し、フラグビットのエラーを含むリードデータ(ただし、ECC1復号後)が誤り抑制復号器9162に入力された場合、誤り抑制復号器9162では、エラーであるフラグビットに基づいた誤り抑制復号が実行される。例えば図34(c)及び図34(d)に示す例では、先頭のデータクラム#0がエラーの生じたフラグ“1”に基づいてビット変換(ビットフリップ)される。その結果、図34(d)に示すように、先頭のデータクラム#0が付加されたフラグのエラーが、本来エラーが発生していなかったデータクラム#0全体に増幅されてしまう。
そこで本実施形態では、フラグに生じたエラーが誤り抑制復号によって増幅されてしまうことを低減することが可能なメモリシステムについて、例を挙げて説明する。
図35は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。図35に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、ホストI/F17とメモリI/F18との間に、符号化系列として、ページ間ECC符号化器2151と、誤り抑制符号化器1610と、ページ内ECC符号化器1510とが配置され、復号系列として、ページ内ECC復号器1520と、誤り抑制復号器1620と、ページ間ECC復号器2152とが配置された構成を備える。この構成において、ページ間ECC符号化器2151及びページ間ECC復号器2152は、例えば図25におけるページ間ECC回路215に相当し、誤り抑制符号化器1610及び誤り抑制復号器1620は、例えば図25における信号処理回路16に相当し、ページ内ECC符号化器1510及びページ内ECC復号器1520は、例えば図25におけるページ内ECC回路15に相当する。
図35において、ページ間ECC符号化器2151によるECC2符号化、ページ内ECC符号化器1510によるECC1符号化、ページ内ECC復号器1520によるECC1復号、及び、ページ間ECC復号器2152によるECC2復号は、上述したページ間ECC回路215によるECC2符号化及びECC2復号、並びに、ページ内ECC回路15によるECC1符号化及びECC1復号と同様であってよい。
本実施形態に係る誤り抑制符号化器1610は、フラグビット決定部1611と、ビット反転部1612と、ビットスワップ部1613と、セレクタ1614とを備える。この構成において、誤り抑制符号化器1610には、誤り抑制符号化の単位であるデータクラム単位でデータが入力される。誤り抑制符号化器1610に入力されたデータクラムは、フラグビット決定部1611と、ビット反転部1612と、セレクタ1614とにそれぞれ入力される。
ビット反転部1612は、入力されたデータクラムをビット反転(ビットフリップ)する。ビット反転部1612でビットフリップされたデータクラムは、ビットスワップ部1613に入力される。ビットスワップ部1613は、入力されたデータクラムに対し、例えば、隣接する2ビット単位でビットを入れ替えるビットスワップ処理を行う。ビットスワップ部1613によりビットスワップされたデータクラムは、セレクタ1614に入力される。
フラグビット決定部1611は、入力されたデータクラムにおけるビット‘0’の数とビット‘1’の数とをカウントし、このカウント値に基づいてデータクラムに付加するフラグビットの値を決定する。また、フラグビット決定部1611は、決定したフラグビットをセレクタ1614の制御端子に入力する。したがって、セレクタ1614は、フラグビット決定部1611から入力されたフラグビットの値に基づいて、ビットフリップ及びビットスワップされたデータクラムと、ビットフリップ及びビットスワップされていないデータクラムとのいずれかを選択的に出力する。例えば、フラグビット決定部1611は、決定したフラグビットが“1”の場合、セレクタ1614にビットフリップ及びビットスワップされたデータクラムを出力させる。一方、決定したフラグビットが“0”の場合、フラグビット決定部1611は、セレクタ1614にビットフリップ及びビットスワップされていないデータクラムを出力させる。
また、本実施形態に係る誤り抑制復号器1620は、ビットスワップ部1621と、ビット反転部1622と、セレクタ1623とを備える。この構成において、誤り抑制復号器1620には、誤り抑制復号の単位であるデータクラム単位でデータが入力される。誤り抑制復号1620に入力されたデータクラムは、ビットスワップ部1621と、セレクタ1614とにそれぞれ入力される。
ビットスワップ部1621は、誤り抑制符号化器1610におけるビットスワップ部1613による隣接2ビット単位のビットスワップを解除するように、隣接2ビット単位でビットを入れ替えるビットスワップ処理を実行し、ビットスワップ後のデータクラムをビット反転部1622に入力する。ビット反転部1622は、ビットスワップが解除されたデータクラムに対し、さらにビットフリップを解除するように、ビットフリップ処理を実行する。これにより、セレクタ1623には、ビットスワップ部1621及びビット反転部1622を経由していないデータクラムに加え、ビットスワップ部1621及びビット反転部1622を経由することでビットフリップ及びビットスワップが解除されたデータクラムも入力される。
セレクタ1623の制御端子には、各データクラムに付加されているフラグビットも入力される。セレクタ1623は、フラグビットの値に基づいて、ビットスワップ部1621及びビット反転部1622を経由していないデータクラムと、ビットスワップ部1621及びビット反転部1622を経由することでビットフリップ及びビットスワップが解除されたデータクラムとのいずれかを選択的に出力する。例えば、入力されたフラグビットが“1”の場合、セレクタ1623は、ビットスワップ部1621及びビット反転部1622を経由することでビットフリップ及びビットスワップが解除されたデータクラムを出力する。一方、入力されたフラグビットが“0”の場合、セレクタ1623は、ビットスワップ部1621及びビット反転部1622を経由していないデータクラムを出力する。
次に、本実施形態に係る誤り抑制符号化/復号の流れ及びその効果について、図面を用いて詳細に説明する。図36は、本実施形態に係る誤り抑制符号化から誤り抑制復号までの流れにおいてフラグビットにエラーが発生した場合の例を示す図である。なお、図36には、8ビット単位で誤り抑制符号化を行う場合を例示する。また、この8ビットのデータクラムのビット配列を{b0,b1,b2,b3,b4,b5,b6,b7}とする。また、図面及び以下の説明において、“〜”はビットフリップされていることを示している。
図36(A)〜図36(C)は、誤り抑制符号化器1610による誤り抑制符号化によってフラグビット=0がデータクラムに付加された場合の流れを示している。図36(A)に示すように、フラグビット=0が付加されたデータクラムに対しては、ビットフリップ及びビットスワップが実施されていない。そのため、データクラムのビット配列は、元々のビット配列{b0,b1,b2,b3,b4,b5,b6,b7}にフラグビット=0が付加されたものとなる。そこで、図36(B)に示すように、フラグビットにエラーが発生し、これにより、フラグビット=1に変化した場合、誤り抑制復号器1620では、エラーであるフラグビット=1に基づいて、ビットスワップ及びビットフリップが実行される。その結果、図36(C)に示すように、誤り抑制復号器1620から出力されるデータクラムのビット配列が{〜b1,〜b0,〜b3,〜b2,〜b5,〜b4,〜b7,〜b6}となり、元々のビット配列{b0,b1,b2,b3,b4,b5,b6,b7}とは大きく異なる配列となる。
一方、図36(a)〜図36(c)は、誤り抑制符号化器1610による誤り抑制符号化によってフラグビット=1がデータクラムに付加された場合の流れを示している。図36(a)に示すように、フラグビット=1が付加されたデータクラムに対しては、ビットフリップ及びビットスワップが順に実施される。そのため、データクラムのビット配列は、ビットフリップ及びビットスワップ後のビット配列{〜b1,〜b0,〜b3,〜b2,〜b5,〜b4,〜b7,〜b6}にフラグビット=1が付加されたものとなる。そこで、図36(b)に示すように、フラグビットにエラーが発生し、これにより、フラグビット=0に変化した場合、誤り抑制復号器1620では、エラーであるフラグビット=0に基づき、入力データに対するビットスワップ及びビットフリップを実行しない。その結果、図36(c)に示すように、誤り抑制復号器1620から出力されるデータクラムのビット配列が{〜b1,〜b0,〜b3,〜b2,〜b5,〜b4,〜b7,〜b6}となり、元々のビット配列{b0,b1,b2,b3,b4,b5,b6,b7}とは大きく異なる配列となる。
以上のように、不揮発性メモリ20への書込みから誤り抑制復号器1620への入力の過程でフラグビットにエラーが発生した場合、誤り抑制復号器1620から出力されるデータクラムのビット配列が、本来出力されるべき元々のビット配列{b
0,b
1,b
2,b
3,b
4,b
5,b
6,b
7}から、エラーフラグに基づいてビットフリップ及びビットスワップが施されたビット配列{〜b
1,〜b
0,〜b
3,〜b
2,〜b
5,〜b
4,〜b
7,〜b
6}に変化する。したがって、フラグビットのエラーによるエラー増幅の度合いは、本来あるべきビット配列{b
0,b
1,b
2,b
3,b
4,b
5,b
6,b
7}における各ビット値と、エラーフラグに基づいてビットフリップ及びビットスワップが施されたビット配列{〜b
1,〜b
0,〜b
3,〜b
2,〜b
5,〜b
4,〜b
7,〜b
6}における各ビット値との間の不一致のビットの数によって表すことができる。なお、不一致ビット数Kは、以下の式(1)より求めることができる。なお、式(1)において、“^”は、ビット間XOR(排他的論理和)を示している。
式(1)から明らかなように、誤り抑制符号化器1610の入力と誤り抑制復号器1620の出力とで、(b
x^〜b
x+1)が“1”、すなわち、あるビットx及び(x+1)が不一致となる確率は、隣接ビット間の相関が無いと仮定すれば、以下の表1に示すように、1/2の確率となる。
これに対し、隣接2ビット単位でのビットスワップを行なわない構成(例えば図33参照)においてフラグビットにエラーが発生した場合、誤り抑制符号化器9161の入力と誤り抑制復号器9162の出力とでビットが不一致となる確率は1である。したがって、本実施形態のように、隣接2ビット単位でビットスワップを行なう構成とすることで、フラグエラー時のエラー増幅を1/2に低減することができる。また、ビットスワップ処理によって“0”ビット/“1”ビットの出現頻度が変化しないため、誤り抑制の性能を損なうことも回避できる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第16の実施形態)
次に、第16の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述の第15の実施形態では、フラグビット=1である場合は隣接2ビット単位でビットスワップする構成について、例を挙げて説明した。これに対し、第16の実施形態では、隣接4ビット単位で、且つ、誤り抑制符号化器への入力に応じて適応的にビットスワップを実行する場合について、例を挙げて説明する。
図37は、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態を示すブロック図である。図37に示すように、本実施形態に係る誤り抑制符号及び誤り訂正符号の一実装形態は、図35に示した誤り抑制符号及び誤り訂正符号の一実装形態と同様の構成において、誤り抑制符号化器1610及び誤り抑制復号器1620が、誤り抑制符号化器1630及び誤り抑制復号器1640に置き換えられている。
誤り抑制符号化器1630は、図35に示す誤り抑制符号化器1610と同様の構成において、ビット反転部1612及びビットスワップ部1613が、適応的データ変換部1631に置き換えられている。同様に、誤り抑制復号器1640は、図35に示す誤り抑制復号器1620と同様の構成において、ビットスワップ部1621及びビット反転部1622が、適応的データ変換部1641に置き換えられている。
適応的データ変換部1631は、例えば、ページ間ECC符号化器2151から入力されたデータクラムに対し、以下に示す表2に従って、隣接4ビット単位で適応的にビットスワップを実行する。具体的には、適応的データ変換部1631は、誤り抑制符号化器入力であるデータクラムをビット反転(ビットフリップ)し、そしてビット反転後のデータクラムを、表2に従って隣接4ビット単位{b
x,b
x+1,b
x+2,b
x+3}でビットスワップする。
ただし、本実施形態では、“0”ビット同士の組合せ及び“1”ビット同士の組合せについては、ビットスワップによる効果を得られないため、表2において斜線のハッチングにて示されている“0”ビットと“1”ビットとの組合せに対して、適応的にビットスワップが実行されればよい。
また、誤り抑制復号器1640における適応的データ変換部1641も同様に、ページ内ECC復号器1520から入力されたECC1フレームに対し、ビット反転(ビットフリップ)と、表2に従った隣接4ビット単位のビットスワップとを順次実行する。
本実施形態では、フラグビットにエラーが発生した場合の誤り抑制符号化器1630への入力と誤り抑制復号器1640からの出力とが不一致となるビット不一致確率は、以下の表3に示すように、0.375である。したがって、本実施形態のように、隣接4ビット単位で表2に従ってビットスワップを行なう構成とすることで、フラグエラー時のエラー増幅を0.375に低減することができる。また、ビットスワップ処理によって“0”ビット/“1”ビットの出現頻度が変化しないため、誤り抑制の性能を損なうことも回避できる。
ところで、上述した表2を用いたビットスワップ処理は、以下の表4に示すように、例えば、次の4つの規則に基づいた適応的ビット反転処理と見做すことができる。
・第1の規則:誤り抑制符号化器入力の隣接4ビットで“0”ビットの数と“1”ビットの数とが等しければ(2つずつ)、その隣接4ビットはビット反転しない。
・第2の規則:誤り抑制符号化器入力の隣接4ビットが全て“0”ビット又は全て“1”ビットであれば、全ビットを反転する。
・第3の規則:誤り抑制符号化器入力の隣接4ビットで“0”ビットの数が1、“1”ビットの数が3であれば、4ビット中の下位2ビット又は上位2ビットに存在する“11”を“00”にビット反転する。
・第4の規則:誤り抑制符号化器入力の隣接4ビットで“0”ビットの数が3、“1”ビットの数が1であれば、4ビット中の下位2ビット又は上位2ビットに存在する“00”を“11”にビット反転する。
以上のような適応的ビット反転は、以下に例示する特徴を備える。すなわち、誤り抑制符号化器入力の隣接4ビット中、ビット反転前後における“0”ビットの数(又は“1”ビットの数)の変化量と一致するビット数が反転される。また、誤り抑制符号化器入力の隣接4ビット中、“0”ビットの数が多ければ“0”ビットから“1”ビットへの反転、“1”ビットの数が多ければ“1”ビットから“0”ビットへのビット反転が行われる。即ち、ビット反転によって“0”ビット/“1”ビットの数が変化する部分についてのみビット反転が行われるため、誤り抑制性能を保存しつつ、ビット反転が行われずに“0”ビット/“1”ビットの数が変化しない部分のエラー増幅を低減することが可能となる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第17の実施形態)
次に、第17の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第17の実施形態では、第16の実施形態で例示した適応的ビット反転を、隣接2N(Nは正の整数)ビットへ拡張した場合を例に挙げて説明する。
第17の実施形態では、以下の式(2)に示す関数f(x)(x={b
0,b
1,…,b
M−1})(Mは2以上の整数)に従い、再帰的なビット反転処理を行う。復号についても同様に、適応的ビット反転後のデータをyとした時、適用前のデータはf(y)で得られる。なお、式(2)において、MSBは最上位ビットであり、LSBは最下位ビットである。
ここで、本実施形態に係る適応的ビット反転を隣接23=8ビット(N=3)に拡張した結果を、図38を用いて説明する。図38は、x={0,0,1,0,0,1,0,1}に対して適応的ビット反転を実行する場合の例であり、図38(a)は誤り抑制符号化時における適応的ビット反転処理を示し、図38(b)は誤り抑制復号時における適応的ビット反転処理を示している。
まず、図38(a)に示すように、誤り抑制符号化時における適応的ビット反転処理では、x中の“0”ビットの数が5、“1”ビットの数が3であることから、xをMSB側4ビットのxa={0,0,1,0}とLSB側4ビットのxb={0,1,0,1}とに分割する。図面中右側ルートのxbは、“0”ビットの数と“1”ビットの数とが共に2であるから、f(xb)=xb={0,1,0,1}となる。一方、図面中左側ルートのxaは、“0”ビットの数=3、“1”ビットの数=1であるので、xaをMSB側2ビットのxaa={0,0}とLSB側2ビットのxab={1,0}とに分割する。xaaは全ビットが“0”であるので、f(xaa)=〜xaa={1,1}となる。一方、f(xab)は“0”ビットの数と“1”ビットの数とが共に1であるから、f(xab)=xab={1,0}となる。その結果、f(x)={1,1,1,0,0,1,0,1}となる。
また、f(x)=yからxへ戻す場合も、同様に関数fを適用すればよい。すなわち、図38(b)に示すように、誤り抑制復号時における適応的ビット反転処理では、y(=f(x))中の“0”ビットの数が3、“1”ビットの数が5であることから、yをMSB側4ビットとLSB側4ビットとのya={1,1,1,0}とLSB側4ビットのyb={0,1,0,1}とに分割する。図面中右側ルートのybは、“0”ビットの数と“1”ビットの数とが共に2であるから、f(yb)=yb={0,1,0,1}となる。一方、図面中左側ルートのyaは、“1”ビットの数=3、“0”ビットの数=1であるので、yaをMSB側2ビットのyaa={1,1}とLSB側2ビットのyab={1,0}とに分割する。yaaは全ビットが“1”であるので、f(yaa)=〜yaa={0,0}となる。一方、f(yab)は“0”ビットの数と“1”ビットの数とが共に1であるから、f(yab)=yab={1,0}となる。その結果、f(y)=x={0,0,1,0,0,1,0,1}となる。
ここで、xとf(x)とを比較すると、適応的ビット反転処理の結果、LSB側の6ビットについては適応的ビット反転後もビット反転されずに元のビットパターンが維持され、MSB側の2ビットについてのみビット反転が行われている。そのため、例えば、誤り抑制符号化データにおいてフラグビットにエラーが発生していた場合、誤り抑制復号データはxではなくy=f(x)へ誤ることになるが、このとき、LSB側の6ビットについてはxのビットパターンが維持されている。そのため、LSB側の6ビットについては誤りが発生せず、MSB側の2ビットについてのみ誤りが発生することとなる。すなわち、本実施形態によれば、フラグビットに発生したエラーがデータクラム全体に増幅されることを回避することが可能となる。
以上のような本実施形態に係る適用的ビット反転を全8ビットデータに対して適用した場合、フラグビットにエラーが発生した際の誤り抑制符号化器1630への入力と誤り抑制復号器1640からの出力とが不一致となるビット不一致確率は、0.304となる。したがって、本実施形態のような適用的ビット反転を採用することで、フラグエラー時のエラー増幅を0.304に低減することができる。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
なお、上述の実施形態では、多値メモリセルに対するデータコーディングの例として、4値、8値及び16値のメモリセルそれぞれについて1種類ずつのデータコーディングの例を示したが、これらのデータコーディングに限定されず、他の種々のデータコーディングを適用することが可能である。
また、上述の実施形態では、多値の状態数として、4値、8値及び16値を例示したが、これらに限定されず、それ以外の状態数とすることも可能である。
さらに、上述の実施形態では、不揮発性メモリ20の例として、閾値電圧に従ってメモリセルのデータ状態を決定するNANDメモリを挙げたが、これに限定されず、例えば抵抗値でメモリセルのデータ状態を決めるReRAMなどのような他の種類の不揮発性メモリを用いた場合でも、上述の実施形態を適用することが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。