以下に添付図面を参照して、実施形態にかかる不揮発性メモリおよび書き込み方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、第1の実施の形態にかかる記憶装置の構成例を示すブロック図である。本実施の形態の記憶装置は、メモリコントローラ1と不揮発性メモリ2を備える。記憶装置は、ホストと接続可能である。ホストは、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
不揮発性メモリ2は、データを不揮発に記憶するメモリであり、例えば、NANDメモリである。本実施の形態では、不揮発性メモリ2は、メモリセルあたり3bitを記憶可能なメモリセルを有するNANDメモリ、すなわち3bit/CellのNANDメモリであるとして説明する。
メモリコントローラ1は、ホストからの書き込みコマンドに従って不揮発性メモリ2への書き込みを制御する。また、メモリコントローラ1は、ホストからの読み出しコマンドに従って不揮発性メモリ2からの読み出しを制御する。メモリコントローラ1は、RAM11、プロセッサ12、ホストインターフェイス13、ECC回路14およびメモリインターフェイス15を備える。RAM(Random Access Memory)11、プロセッサ12、ホストインターフェイス13、ECC回路14およびメモリインターフェイス15は、互いに内部バス16で接続される。
ホストインターフェイス13は、ホストから受信したコマンド、ユーザデータ(書き込みデータ)などを内部バス16に出力する。また、ホストインターフェイス13は、不揮発性メモリ2から読み出されたユーザデータ、プロセッサ12からの応答などをホストへ送信する。
メモリインターフェイス15は、プロセッサ12の指示に基づいて、ユーザデータ等を不揮発性メモリ2へ書込む処理および不揮発性メモリ2からの読み出し処理を制御する。
プロセッサ12は、メモリコントローラ1を統括的に制御する。プロセッサ12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等である。プロセッサ12は、ホストからホストインターフェイス13経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、プロセッサ12は、ホストからのコマンドに従って、不揮発性メモリ2へのユーザデータおよびパリティの書き込みをメモリインターフェイス15へ指示する。また、プロセッサ12は、ホストからのコマンドに従って、不揮発性メモリ2からのユーザデータおよびパリティの読み出しを、メモリインターフェイス15へ指示する。
プロセッサ12は、RAM11に蓄積されるユーザデータに対して、不揮発性メモリ2上の格納領域(メモリ領域)を決定する。ユーザデータは、内部バス16経由でRAM11に格納される。プロセッサ12は、メモリ領域の決定を、書き込み単位であるページ単位のデータ(ページデータ)に対して実施する。本明細書では、不揮発性メモリ2の1ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、一般的には符号化されて符号語として不揮発性メモリ2に格納される。本実施の形態では、符号化は必須ではなく、符号化せずにユニットデータを不揮発性メモリ2に格納してもよいが、図1では、一構成例として符号化を行う構成を示している。符号化を行わない場合には、ページデータはユニットデータと一致する。また、1つのユニットデータに基づいて1つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて1つの符号語が生成されてもよい。また、複数のユニットデータを用いて1つの符号語が生成されてもよい。
プロセッサ12は、ユニットデータごとに書き込み先の不揮発性メモリ2のメモリ領域を決定する。不揮発性メモリ2のメモリ領域には物理アドレスが割当てられている。プロセッサ12は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ12は、決定したメモリ領域(物理アドレス)を指定してユーザデータを不揮発性メモリ2へ書き込むようメモリインターフェイス15へ指示する。プロセッサ12は、ユーザデータの論理アドレス(ホストが管理する論理アドレス)と物理アドレスの対応を管理する。ホストからの論理アドレスを含む読み出しコマンドを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス15へ指示する。
本明細書では、1つのワード線に共通に接続されたメモリセルをメモリセルグループと定義する。本実施の形態では、不揮発性メモリ2は、3bit/CellのNANDメモリであり、1つのメモリセルグループは3ページに対応する。各メモリセルの3bitは、それぞれこの3ページに対応する。本実施の形態では、この3ページをLowerページ(第1のページ),Middleページ(第2のページ),Upperページ(第3のページ)と呼ぶ。
ECC回路14は、RAM11に格納されたユーザデータを符号化して、符号語を生成する。また、ECC回路14は、不揮発性メモリ2から読み出された符号語を復号する。
RAM11は、ホストから受信したユーザデータを不揮発性メモリ2へ記憶するまでに一時格納したり、不揮発性メモリ2から読み出したデータをホストへ送信するまでに一時格納する。RAM11は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリである。
図1では、メモリコントローラ1が、ECC回路14とメモリインターフェイス15をそれぞれ備える構成例を示した。しかしながら、ECC回路14がメモリインターフェイス15に内蔵されていてもよい。また、ECC回路14が、不揮発性メモリ2に内蔵されていてもよい。
図2は、本実施の形態の不揮発性メモリ2の構成例を示すブロック図である。不揮発性メモリ2は、NAND I/O Interface21、制御部22、NANDメモリセルアレイ(メモリセル部)23、およびページバッファ24を備える。不揮発性メモリ2は、例えば1チップの半導体基板(例えば、シリコン基板)からなる。
制御部22は、NAND I/O Interface21経由でメモリコントローラ1から入力されたコマンド等に基づいて、不揮発性メモリ2の動作を制御する。具体的には、書き込み要求が入力された場合、書き込みが要求されたデータをNANDメモリセルアレイ23上の指定されたアドレスへ書き込むよう制御する。また、制御部22は、読み出し要求が入力された場合、読み出しが要求されたデータをNANDメモリセルアレイ23から読み出してNAND I/O Interface21経由でメモリコントローラ1へ出力するよう制御する。ページバッファ24は、NANDメモリセルアレイ23の書き込み時にメモリコントローラ1から入力されたデータを一時的に格納したり、NANDメモリセルアレイ23から読み出したデータを一時的に格納したりするバッファである。
図3は、本実施の形態のしきい値領域の一例を示す図である。NANDメモリでは、メモリセルのフローティングゲートに蓄えられた電荷量により情報を記憶する。各メモリセルは、電荷量に応じたしきい値電圧を有する。そして、メモリセルに記憶する複数のデータ値を、しきい値電圧の複数の領域(しきい値領域)にそれぞれ対応させる。図3の、Er、A,B,C,D,E,F,Gと記載した8つの分布(山型)は、8つのしきい値領域内のそれぞれのしきい値分布を示している。図3の横軸はしきい電圧を示し、縦軸はメモリセル数(セル数)の分布を示している。本実施の形態では、しきい値電圧がVr1以下となる領域を領域Erとよび、しきい値電圧がVr1より大きくVr2以下となる領域を領域Aとよび、しきい値電圧がVr2より大きくVr3以下となる領域を領域Bとよび、しきい値電圧がVr3より大きくVr4以下となる領域を領域Cとよび、しきい値電圧がVr4より大きくVr5以下となる領域を領域Dとよび、しきい値電圧がVr5より大きくVr6以下となる領域を領域Eとよび、しきい値電圧がVr6より大きくVr7以下となる領域を領域Fとよび、しきい値電圧がVr7より大きい領域を領域Gとよぶ。また、領域Er,A,B,C,D,E,F,Gに対応するしきい値分布をそれぞれ分布Er,A,B,C,D,E,F,G(第1〜第8の分布)と呼ぶ。Vr1〜Vr7は、各領域の境界となるしきい値電圧である。
NANDメモリでは、メモリセルの複数のしきい値領域(すなわちしきい値分布)に複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書き込み(プログラム)時には、データコーディングに従って記憶するデータ値に応じたしきい値領域内となるようにメモリセルに電荷を注入する。そして、読み出し時には、メモリセルに読み出し電圧を印加し、読み出し電圧よりメモリセルのしきい値が低いか高いかにより、データが決定される。しきい値電圧が、読み出し電圧より低い場合には、「消去」状態であるデータ値は“1”と定義する。しきい値電圧が読み出し電圧以上である場合には、「プログラムされた」状態であり、データを“0”と定義する。
図4は、本実施の形態のデータコーディングを示す図である。本実施の形態では、図3に示した8つのしきい値分布(しきい値領域)を3bitの8つのデータ値にそれぞれ対応させる。図4に示すように、しきい値電圧がEr領域内にあるメモリセルは、Upper,Middle,Lowerページに対応するビットのデータ値として“111”を記憶している状態である。しきい値電圧がA領域内にあるメモリセルは“110”を記憶している状態である。しきい値電圧がB領域内にあるメモリセルは“100”を記憶している状態である。しきい値電圧がC領域内にあるメモリセルは“101”を記憶している状態である。しきい値電圧がD領域内にあるメモリセルは“001”を記憶している状態である。しきい値電圧がE領域内にあるメモリセルは“011”を記憶している状態である。しきい値電圧がF領域内にあるメモリセルは“010”を記憶している状態である。しきい値電圧がG領域内にあるメモリセルは“000”を記憶している状態である。なお、メモリセルが未書き込みの状態(「消去」の状態)では、メモリセルのしきい値電圧はEr領域内にある。このように、図4に示したコーディングは、任意の2つの隣接する領域間で1bitのみデータが変化するグレイ符号である。
図4に示す本実施の形態のコーディングでは、Upperページのビット値を判定するための境界となるしきい値電圧はVr4である。Middleページのビット値を判定するための境界となるしきい値電圧はVr2、Vr5、Vr7である。Lowerページのビット値を判定するための境界となるしきい値電圧はVr1、Vr3、Vr6である。ビット値を判定するための境界となるしきい値電圧の数(以下、境界数とよぶ)が、Upperページ,Middleページ,Lowerページでそれぞれ1,3,3である。以下、このようなコーディングをUpperページ,Middleページ,Lowerページのそれぞれの境界数を用いて、1−3−3コーディングという。ここで注目すべき事項は、ページごとの隣接データと変化する境界の数が最大3であることである。不揮発性メモリ2の制御部22は、図4に示したコーディングに基づいて、NANDメモリセルアレイ23へのプログラムおよびNANDメモリセルアレイ23からの読み出しを制御する。
3bit/CellのNANDメモリへのプログラム方法として、1つのメモリセルグループに記憶する3ページのデータを同時に書き込む方法が知られている。しかしながら、この方法では、1ページずつデータを書込むことができず、3ページ分のデータが揃ってからでないと書き込みができない。書き込みを効率的に実施するためには、1ページずつ書き込みができることが望ましい。1ページずつ順番にプログラムする例として、Upperページ、Middleページ、Lowerページの境界数がそれぞれ1,2,4である1−2−4コーディングが知られている。この方法では、最大の境界数が4となるため、境界数の多いページでは誤りの発生確率が高くなる。ユーザデータを符号化する際の誤り訂正能力は、誤りの発生確率の高いページに対応できるよう実施することになる。このため、誤り訂正能力を高めるための記憶装置のコストや消費電力を増加させ、書き込みおよび読み出し速度を低下させてしまう。このため、誤り発生確率はページ間でなるべく偏りのないことが望まれる。
本実施の形態では、後述するように1ページずつ書き込みを行うことができる。その上、上述のように、1−3−3コーディングであり、ページ間の境界数の偏りが少ない。これにより、1−2−4コーディングに比べ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。また、後述するように、どのページまで書き込みが行われたかの情報を管理せずに、Upperページ、Middleページ、Lowerページのどのページを読み出しても正しい読み出し結果を得ることができる。
図5は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図5(A)は、Lowerページのプログラム後のしきい値分布を示し、図5(B)は、Middleページのプログラム後のしきい値分布を示し、図5(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。ただし、1つのメモリセルグループのLowerページ、Middleページ、Upperページを連続して書き込む必要はない。例えば、第1のメモリセルグループのLowerページの書き込みを行い、第2のメモリセルグループのLowerページの書き込みを行い、…、その後、第1のメモリセルグループのMiddleページの書き込みを行うというような書き込みを実施可能である。
NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態(「消去」の状態)である分布Erの状態である。不揮発性メモリ2の制御部22は、図5(A)に示すように、Lowerページのプログラムでは、Lowerページに書き込む(記憶する)ビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して1つ上の分布Aに異動させる。具体的には、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Aに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図5(B)に示すように、Middleページのプログラムを実施する。具体的には、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Cに移動させるようプログラムする。また、Lowerページのプログラムにより分布Aの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Aのままとし、Middleページに書き込むビット値が“0”の場合は分布Bに移動させるようプログラムする。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図5(C)に示すように、Upperページのプログラムを実施する。具体的には、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Eに移動させるようプログラムする。また、Middleページのプログラムにより分布Aの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Aのままとし、Upperページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。また、Middleページのプログラムにより分布Bの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Bのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。また、Middleページのプログラムにより分布Cの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Cのままとし、Upperページに書き込むビット値が“0”の場合は分布Dに移動させるようプログラムする。
以上のように、本実施の形態では、制御部22は、どのページのプログラムにおいても、書き込むビット値が“1”の場合は、電荷の注入はせず、書き込むビット値が“0”の場合には電荷の注入を実施し、プログラム前よりしきい値電圧の高い分布へ移動させる。
なお、典型的にはプログラムは、1回または複数回のプログラム電圧パルスを印可することによって行われる。各プログラム電圧パルスの後には、セルがしきい値境界レベルを超えて移動したかどうかを確認するために読み出しを行う。それを繰り返すことで、所定のしきい値分布(しきい値領域)の範囲の中にメモリセルのしきい値を移動させる。プログラムの具体的手順は、この例に限定されない。
次に、本実施の形態の読み出しについて説明する。図6は、本実施の形態のLowerページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Vr1,Vr3,Vr6の3つを読み出し電圧として印加することによりLowerページのビット値を読み出すことができる。
図6(A)は、図5に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr1,Vr3,Vr6の3つを読み出し電圧として印加すると、ビット値“1”を記憶しているメモリセルは、Vr1未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“1”となる。一方、ビット値“0”を記憶しているメモリセルは、Vr1以上Vr3未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“0”となる。
図6(B)は、図5に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr1,Vr3,Vr6の3つを読み出し電圧として印加すると、ビット値“11”を記憶しているメモリセルは、Vr1未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“1”となる。ビット値“10”を記憶しているメモリセルおよびビット値“00”を記憶しているメモリセルは、Vr1以上Vr3未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“0”となる。ビット値“01”を記憶しているメモリセルは、Vr3以上Vr6未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“1”となる。
図6(C)は、図5に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Vr1,Vr3,Vr6の3つを読み出し電圧として印加すると、ビット値“111”を記憶しているメモリセルは、Vr1未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“1”となる。ビット値“110”を記憶しているメモリセルおよびビット値“100”を記憶しているメモリセルは、Vr1以上Vr3未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“0”となる。ビット値“101”を記憶しているメモリセルおよびビット値“001”を記憶しているメモリセルおよびビット値“011”を記憶しているメモリセルは、Vr3以上Vr6未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“1”となる。ビット値“010”を記憶しているメモリセルおよびビット値“000”を記憶しているメモリセルは、Vr6以上のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“0”となる。
以上のように、どのページまでの書き込みが行われているかに関わらず、Vr1,Vr3,Vr6の3つを読み出し電圧として印加することにより、Lowerページのビット値を正しく読み出すことができる。
図7は、本実施の形態のMiddleページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Vr2,Vr5,Vr7の3つを読み出し電圧として印加することによりMiddleページのビット値を読み出すことができる。
図7(A)は、図5に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr2,Vr5,Vr7の3つを読み出し電圧として印加すると、ビット値“1”を記憶しているメモリセルおよびビット値“0”を記憶しているメモリセルは、Vr2未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“1”となる。この状態ではMiddleページの書き込みは行われていないため、Middleページのビット値としては未書き込みを示す“1”が正しい値である。
図7(B)は、図5に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr2,Vr5,Vr7の3つを読み出し電圧として印加すると、ビット値“11”を記憶しているメモリセルおよびビット値“10”を記憶しているメモリセルは、Vr2未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“1”となる。ビット値“00”を記憶しているメモリセルおよびビット値“01”を記憶しているメモリセルは、Vr2以上Vr5未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“0”となる。
図7(C)は、図5に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Vr2,Vr5,Vr7の3つを読み出し電圧として印加すると、ビット値“111”を記憶しているメモリセルおよびビット値“110”を記憶しているメモリセルは、Vr2未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“1”となる。ビット値“100”を記憶しているメモリセルおよびビット値“101”を記憶しているメモリセルおよびビット値“001”を記憶しているメモリセルは、Vr2以上Vr5未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“0”となる。ビット値“011”を記憶しているメモリセルおよびビット値“010”を記憶しているメモリセルは、Vr5以上Vr7未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“1”となる。ビット値“000”を記憶しているメモリセルは、Vr7以上のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“0”となる。
以上のように、どのページまでの書き込みが行われているかに関わらず、Vr2,Vr5,Vr7の3つを読み出し電圧として印加することにより、Middleページのビット値を正しく読み出すことができる。
図8は、本実施の形態のUpperページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Vr4を読み出し電圧として印加することによりUpperページのビット値を読み出すことができる。
図8(A)は、図5に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr4を読み出し電圧として印加すると、ビット値“1”を記憶しているメモリセルおよびビット値“0”を記憶しているメモリセルは、Vr4未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“1”となる。この状態ではUpperページの書き込みは行われていないため、Upperページのビット値としては未書き込みを示す“1”が正しい値である。
図8(B)は、図5に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Vr4を読み出し電圧として印加すると、ビット値“11”を記憶しているメモリセル、ビット値“10”を記憶しているメモリセル、ビット値“00”を記憶しているメモリセルおよびビット値“01”を記憶しているメモリセルは、Vr4未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“1”となる。この状態ではUpperページの書き込みは行われていないため、Upperページのビット値としては未書き込みを示す“1”が正しい値である。
図8(C)は、図5に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Vr4を読み出し電圧として印加すると、ビット値“111”を記憶しているメモリセル、ビット値“110”を記憶しているメモリセル、ビット値“100”を記憶しているメモリセルおよびビット値“101”を記憶しているメモリセルは、Vr4未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“1”となる。ビット値“001”を記憶しているメモリセル、ビット値“011”を記憶しているメモリセル、ビット値“010”を記憶しているメモリセルおよびビット値“000”を記憶しているメモリセルは、Vr4以上のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“0”となる。
以上のように、どのページまでの書き込みが行われているかに関わらず、Vr4を読み出し電圧として印加することにより、Upperページのビット値を正しく読み出すことができる。このように、どのページまでの書き込みが行われているかに関わらず、各ページのビット値を正しく読み出すことができるため、本実施の形態では、どのページまでの書き込みが行われているかの情報を管理する必要がない。
図9は、本実施の形態の書き込み手順の一例を示すフローチャートである。図9は、1つのメモリセルグループについて、未書き込みの状態からUpperページの書き込みが終了するまでの手順の一例を示している。まず、未書き込みの状態で、制御部22は、メモリセルごとに書き込むビット値が“0”であるか否かを判断する(ステップS1)。書き込むビット値が“0”であるメモリセルの場合(ステップS1 Yes)、制御部22は、電荷を注入してしきい値電圧を分布Er(第1の領域)から分布A(第2の領域)に上昇させる(ステップS2)。書き込むビット値が“0”でない(“1”である)メモリセルの場合(ステップS1 No)、しきい値電圧は変化させない。
メモリセルグループの全てのメモリセルについて、上記のステップS1,S2を実施すると、Lowerページの書き込みを終了し(ステップS3)、他のメモリセルグループの書き込みを実施する(ステップS4)。なお、他のメモリセルグループの書き込みを実施せずに、次のステップS5へ進んでもよい。
Lowerページの書き込み終了後、制御部22は、このメモリセルグループへ書き込みを行う場合、メモリセルごとに書き込むビット値が0であるか否かを判断する(ステップS5)。書き込むビット値が“0”であるメモリセルの場合(ステップS5 Yes)、制御部22は、該メモリセルのしきい値電圧が分布Erであるか否かを判断する(ステップS6)。メモリセルのしきい値電圧が分布Erである場合(ステップS6 Yes)、電荷を注入してしきい値電圧を分布Erから分布C(第4の領域)に上昇させる(ステップS7)。メモリセルのしきい値電圧が分布Erでない場合(ステップS6 No)、電荷を注入してしきい値電圧を分布Aから分布B(第3の領域)に上昇させる(ステップS8)。書き込むビット値が“0”でない(“1”である)メモリセルの場合(ステップS5 No)、しきい値電圧は変化させない。
メモリセルグループの全てのメモリセルについて、上記のステップS5〜S8を実施すると、Middleページの書き込みを終了し(ステップS9)、他のメモリセルグループの書き込みを実施する(ステップS10)。なお、他のメモリセルグループの書き込みを実施せずに、次のステップS11へ進んでもよい。
Middleページの書き込み終了後、制御部22は、このメモリセルグループへ書き込みを行う場合、メモリセルごとに書き込むビット値が“0”であるか否かを判断する(ステップS11)。書き込むビット値が“0”であるメモリセルの場合(ステップS11 Yes)、制御部22は、該メモリセルに電荷を注入してしきい値電圧を上昇させる(ステップS12)。具体的には、分布Erのメモリセルは分布E(第6の領域)へ、分布Aのメモリセルは分布F(第7の領域)へ、分布Bのメモリセルは分布G(第8の領域)へ、分布Cのメモリセルは分布D(第5の領域)へそれぞれ移動させる。書き込むビット値が“0”でないメモリセルの場合(ステップS11 No)、そのまま処理を終了する。以上の処理により、Upperページまでの書き込みが終了する。
図10は、本実施の形態の読み出し手順の一例を示すフローチャートである。上述したように、本実施の形態では、Upper,Middle,Lowerのどのページまで書き込みが行われた状態であっても、読み出しを実施することができる。まず、制御部22は、読み出すページがUpper,Middle,Lowerのうちどのページであるかを選択する(ステップS21)。Upperページを選択した場合(ステップS21 Upper)、Vr4で読み出しを実施する(ステップS22)。制御部22は、Vr4での読み出し結果に基づいてデータ(各メモリセルのビット値)を決定し(ステップS23)、処理を終了する。
Middleページを選択した場合(ステップS21 Middle)、Vr2で読み出しを実施する(ステップS24)。次に、制御部22は、Vr5で読み出しを実施する(ステップS25)。次に、制御部22は、Vr7で読み出しを実施する(ステップS26)。Vr2、Vr5、Vr7での読み出し結果に基づいてデータを決定し(ステップS27)、処理を終了する。
Lowerページを選択した場合(ステップS21 Lower)、Vr1で読み出しを実施する(ステップS28)。次に、制御部22は、Vr3で読み出しを実施する(ステップS29)。次に、制御部22は、Vr6で読み出しを実施する(ステップS30)。Vr1、Vr3、Vr6での読み出し結果に基づいてデータを決定し(ステップS31)、処理を終了する。
以上のように、本実施の形態では、図4に示した1−3−3コーディングを用いることにより1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。また、どのページまで書き込みが行われたかによらず、同一の手順でUpperページ、Middleページ、Lowerページをそれぞれ読み出すことができるため、どのページまで書き込みが行われたかの情報を管理する必要がない。
(第2の実施の形態)
図11は、第2の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
図11(A)は、Lowerページの書き込みにおけるデータコーディングを示し、図11(B)は、Middleページの書き込みにおけるデータコーディングを示し、図11(C)は、Upperページの書き込みにおけるデータコーディングを示す。図11に示すように、UpperページとMiddleページの書き込みでは、同一のデータコーディング(図11の上段)を用いるが、Lowerページの書き込みでは、UpperページとMiddleページの書き込みとは異なるデータコーディング(図11の下段)を用いる。
このように、本実施の形態では、ページによりデータコーディングが異なるが、どのページまで書き込みを行ったかの情報を管理していれば、1ページずつ順番に書き込みを実施することができる。本実施の形態のページごとの境界数は、第1の実施の形態と同様に、1−3−3であり、ページ間の誤りの発生確率を平滑化することができる。
本実施の形態では、制御部22が、メモリセルグループごとにUpperページ、Middleページ、Lowerページのどのページまで書き込みが行われているかの情報を書き込みページフラグ(書き込みページ情報)として管理している。
図11の上段のデータコーディングと図11の下段のデータコーディングを比較すると、下段のデータコーディングのMiddleページの分布Bに対応するビット値が変更されている。図11の下段のデータコーディングは、Lowerページの書き込みにおけるデータコーディングであり、この時点では、MiddleページおよびUpperページは書き込まれていない。図11の下段の、存在しないしきい値分布としてハッチングした分布は、Lowerページの書き込みで使用しないしきい値分布を示す。第1の実施の形態では、Lowerページの書き込みで使用しないしきい値分布は、分布B以上の連続した領域であった。これに対し、本実施の形態では、分布C以上の連続した領域に加え、Lowerページの書き込みで使用する分布Erと分布Bの間に使用しない分布Aが存在する。これにより、Lowerページの書き込み後に未書き込みのMiddleページを読み出す際には、Middleページが書き込まれた後のデータの割り付けと異なるデータ割り付けで読み出しを実施する必要が生じる。
図12は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図12(A)は、Lowerページのプログラム後のしきい値分布を示し、図12(B)は、Middleページのプログラム後のしきい値分布を示し、図12(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
不揮発性メモリ2の制御部22は、図12(A)に示すように、Lowerページのプログラムでは、Lowerページに書き込むビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して1つ上の分布Bに異動させる。具体的には、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Bに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図12(B)に示すように、Middleページのプログラムを実施する。具体的には、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Aに移動させるようプログラムする。また、Lowerページのプログラムにより分布Bの状態であったメモリセルに対しては、Middleページに書き込むビット値が“0”の場合は分布Bのままとし、Middleページに書き込むビット値が“1”の場合は分布Cに移動させるようプログラムする。第1の実施の形態では、書き込むビット値が“1”の場合は、電荷を注入せず、ビット値が“0”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Middleページの書き込みにおいて、書き込むビット値が“0”の場合に電荷を注入せず、“1”の場合に電荷を注入するというケースが存在する。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図12(C)に示すように、Upperページのプログラムを実施する。具体的には、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Eに移動させるようプログラムする。また、Middleページのプログラムにより分布Aの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Aのままとし、Upperページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。また、Middleページのプログラムにより分布Bの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Bのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。また、Middleページのプログラムにより分布Cの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Cのままとし、Upperページに書き込むビット値が“0”の場合は分布Dに移動させるようプログラムする。
次に、本実施の形態の読み出しについて説明する。図13は、本実施の形態のLowerページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Vr2,Vr5,Vr7の3つを読み出し電圧として印加することによりLowerページのビット値を読み出すことができる。
図14は、本実施の形態のMiddleページの読み出し方法を示す図である。本実施の形態では、Middleページの読み出しでは、Vr1,Vr3,Vr6の3つを読み出し電圧として印加する。ただし、Middleページの書き込みが実施済であるか否かにより、読み出しに用いるデータコーディングが異なる。したがって、制御部22は、ページ書き込みフラグを参照して、Lowerページの書き込みを行った状態である場合は、図14(A)に示すように、図11(A)のデータコーディングに従い、しきい値電圧がVr3以上の場合は、ビット値を“0”と判定し、しきい値電圧がVr3未満の場合はビット値を“1”と判定する。Middleページ,Upperページまでの書き込みが行われた状態の場合は、図12(B)または図12(C)に示すように、図11(B),(C)のデータコーディングに従い、Vr1,Vr3,Vr6の読み出し結果に基づいてビット値を決定する。
図15は、本実施の形態のUpperページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Vr4を読み出し電圧として印加することによりUpperページのビット値を読み出すことができる。
本実施の形態の書き込み手順は、図12に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第1の実施の形態と同様である。
図16は、本実施の形態の読み出し手順の一例を示すフローチャートである。図16は、1つのメモリセルグループについて、未書き込みの状態からUpperページの書き込みが終了するまでの手順の一例を示している。まず、制御部22は、読み出し対象のメモリセルグループの書き込みページフラグを読み出す(ステップS41)。ステップS42,S43は、第1の実施の形態のステップS21,S22と同様である。ステップS43の後、制御部22は、書き込みページフラグおよびVr4での読み出し結果に基づいてデータを決定する(ステップS44)。
ステップS42でMiddleページを選択した場合(ステップS42 Middle)、制御部22は、Vr1で読み出しを実施する(ステップS45)。次に、制御部22は、Vr3で読み出しを実施する(ステップS46)。次に、制御部22は、Vr6で読み出しを実施する(ステップS47)。次に、制御部22は、書き込みページフラグおよびVr1、Vr3、Vr6での読み出し結果に基づいてデータを決定し(ステップS48)、処理を終了する。具体的には、書き込みページフラグがLowerページの書き込みが行われた状態を示す値であった場合、図11(A)のデータコーディングに従い、しきい値電圧がVr3以上の場合は、ビット値を“0”と判定し、しきい値電圧がVr3未満の場合はビット値を“1”と判定する。書き込みページフラグがUpperページまたはMiddleページの書き込みが行われた状態を示す値であった場合、図11(B),(C)のデータコーディングに従い、Vr1,Vr3,Vr6の読み出し結果に基づいてビット値を決定する。
Lowerページを選択した場合(ステップS21 Lower)、制御部22は、Vr2で読み出しを実施する(ステップS49)。次に、制御部22は、Vr5で読み出しを実施する(ステップS50)。次に、制御部22は、Vr7で読み出しを実施する(ステップS51)。次に、制御部22は、書き込みページフラグおよびVr2、Vr5、Vr7での読み出し結果に基づいてデータを決定し(ステップS52)、処理を終了する。
なお、LowerページおよびUpperページの読み出しでは、上述したように、書き込みページフラグによらず同一のデータコーディングを用いることができるため、ステップS48、S52では、書き込みページフラグを考慮しなくてもよい。
本実施の形態では、上述したようにプログラム済みのページがどこまでかを判別するために、ページプログラムの時にその情報を書き込みページフラグとして保持しておくこととする。この書き込みページフラグは、例えば、NANDメモリセルアレイ23のユーザデータを格納するメモリグループ内の、ユーザデータを格納するメモリセルとは別のメモリセルに保持してもよい。またはNANDメモリセルアレイ23のユーザデータを格納するメモリグループとは別のメモリセルグループに格納してもよく、または不揮発性メモリ2内またはメモリコントローラ1内のメモリの記憶領域に保持してもよい。このように、書き込みページフラグの管理方法に限定は無い。また、書き込みページフラグを読み出すタイミングは、データ決定までであれば図16に示されたタイミングで無くとも良く、例えばデータ読み出しと同じタイミングでもよい。特に、書き込みページフラグをユーザデータの格納されたメモリセルグループ内に保持する場合はこの読みタイミングが適切である。
以上のように、本実施の形態では、図11に示した1−3−3コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
(第3の実施の形態)
図17は、第3の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
図17(A)は、Lowerページの書き込みにおけるデータコーディングを示し、図17(B)は、Middleページの書き込みにおけるデータコーディングを示し、図17(C)は、Upperページの書き込みにおけるデータコーディングを示す。
図17の四角で囲んだしきい値分布(領域)は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第2の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
図18は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図18(A)は、Lowerページのプログラム後のしきい値分布を示し、図18(B)は、Middleページのプログラム後のしきい値分布を示し、図18(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
不揮発性メモリ2の制御部22は、図18(A)に示すように、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Dに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図18(B)に示すように、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Bに移動させるようプログラムする。また、Lowerページのプログラムにより分布Dの状態であったメモリセルに対しては、Middleページに書き込むビット値が“0”の場合は分布Dのままとし、Middleページに書き込むビット値が“1”の場合は分布Eに移動させるようプログラムする。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図18(C)に示すように、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Aに移動させるようプログラムする。また、Middleページのプログラムにより分布Bの状態であったメモリセルに対しては、Upperページに書き込むビット値が“0”の場合は分布Bのままとし、Upperページに書き込むビット値が“1”の場合は分布Cに移動させるようプログラムする。また、Middleページのプログラムにより分布Dの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Dのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。また、Middleページのプログラムにより分布Eの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Eのままとし、Upperページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。
第1の実施の形態では、書き込むビット値が“1”の場合は、電荷を注入せず、ビット値が“0”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、MiddleページおよびUpperページの書き込みにおいて、書き込むビット値が“0”の場合に電荷を注入せず、“1”の場合に電荷を注入するというケースが存在する。このため、図17のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がMiddleページとUpperページで1か所ずつ存在する。
本実施の形態の書き込み手順は、図18に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第1の実施の形態と同様である。
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第2の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Vr1、Vr3、Vr6を用い、Middleページの読み出しでは、Vr2、Vr5、Vr7を用い、Lowerページの読み出しでは、Vr4を用いる。Upperページまでの書き込みが行われている場合は、図17(C)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図17(B)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr1以上Vr3未満と判定された場合、ビット値は“1”と決定する。Lowerページまでの書き込みが行われている場合は、図17(A)のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Upperページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Middleページの読み出し時には、しきい値電圧がVr2以上Vr5未満と判定された場合、ビット値は“1”と決定する。
以上のように、本実施の形態では、図17に示した3−3−1コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
(第4の実施の形態)
図19は、第4の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
図19(A)は、Lowerページの書き込みにおけるデータコーディングを示し、図19(B)は、Middleページの書き込みにおけるデータコーディングを示し、図19(C)は、Upperページの書き込みにおけるデータコーディングを示す。
図19の四角で囲んだしきい値分布(領域)は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第2の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
図20は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図20(A)は、Lowerページのプログラム後のしきい値分布を示し、図20(B)は、Middleページのプログラム後のしきい値分布を示し、図20(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
不揮発性メモリ2の制御部22は、図20(A)に示すように、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Dに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図20(B)に示すように、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Aに移動させるようプログラムする。また、Lowerページのプログラムにより分布Dの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Dのままとし、Middleページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図20(C)に示すように、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Cに移動させるようプログラムする。また、Middleページのプログラムにより分布Aの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Aのままとし、Upperページに書き込むビット値が“0”の場合は分布Bに移動させるようプログラムする。また、Middleページのプログラムにより分布Dの状態であったメモリセルに対しては、Upperページに書き込むビット値が“0”の場合は分布Dのままとし、Upperページに書き込むビット値が“1”の場合は分布Eに移動させるようプログラムする。また、Middleページのプログラムにより分布Fの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Fのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。
第1の実施の形態では、書き込むビット値が“1”の場合は、電荷を注入せず、ビット値が“0”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“0”の場合に電荷を注入せず、“1”の場合に電荷を注入するというケースが存在する。このため、図19のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに1か所存在する。
本実施の形態の書き込み手順は、図20に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第1の実施の形態と同様である。
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第2の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Vr2、Vr5、Vr7を用い、Middleページの読み出しでは、Vr1、Vr3、Vr6を用い、Lowerページの読み出しでは、Vr4を用いる。Upperページまでの書き込みが行われている場合は、図19(C)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図19(B)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr2以上Vr5未満と判定された場合、ビット値は“1”と決定する。Lowerページまでの書き込みが行われている場合は、図19(A)のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr2以上Vr5未満と判定された場合、ビット値は“1”と決定する。
以上のように、本実施の形態では、図19に示した3−3−1コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
(第5の実施の形態)
図21は、第5の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
図21(A)は、Lowerページの書き込みにおけるデータコーディングを示し、図21(B)は、Middleページの書き込みにおけるデータコーディングを示し、図21(C)は、Upperページの書き込みにおけるデータコーディングを示す。
図21の四角で囲んだしきい値分布(領域)は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第2の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
図22は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図22(A)は、Lowerページのプログラム後のしきい値分布を示し、図22(B)は、Middleページのプログラム後のしきい値分布を示し、図22(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
不揮発性メモリ2の制御部22は、図22(A)に示すように、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Bに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図22(B)に示すように、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Eに移動させるようプログラムする。また、Lowerページのプログラムにより分布Bの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Bのままとし、Middleページに書き込むビット値が“0”の場合は分布Dに移動させるようプログラムする。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図22(C)に示すように、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Aに移動させるようプログラムする。また、Middleページのプログラムにより分布Bの状態であったメモリセルに対しては、Upperページに書き込むビット値が“0”の場合は分布Bのままとし、Upperページに書き込むビット値が“1”の場合は分布Cに移動させるようプログラムする。また、Middleページのプログラムにより分布Dの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Dのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。また、Middleページのプログラムにより分布Eの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Eのままとし、Upperページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。
第1の実施の形態では、書き込むビット値が“1”の場合は、電荷を注入せず、ビット値が“0”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“0”の場合に電荷を注入せず、“1”の場合に電荷を注入するというケースが存在する。このため、図21のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに1か所存在する。
本実施の形態の書き込み手順は、図22に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第1の実施の形態と同様である。
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第2の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Vr1、Vr3、Vr6を用い、Middleページの読み出しでは、Vr4を用い、Lowerページの読み出しでは、Vr2、Vr5、Vr7を用いる。Upperページまでの書き込みが行われている場合は、図21(C)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図21(B)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr1以上Vr3未満と判定された場合、ビット値は“1”と決定する。Lowerページまでの書き込みが行われている場合は、図21(A)のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr1以上Vr3未満と判定された場合、ビット値は“1”と決定する。
以上のように、本実施の形態では、図21に示した3−1−3コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
(第6の実施の形態)
図23は、第6の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
図23(A)は、Lowerページの書き込みにおけるデータコーディングを示し、図23(B)は、Middleページの書き込みにおけるデータコーディングを示し、図23(C)は、Upperページの書き込みにおけるデータコーディングを示す。
図23の四角で囲んだしきい値分布(領域)は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第2の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
図24は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図24(A)は、Lowerページのプログラム後のしきい値分布を示し、図24(B)は、Middleページのプログラム後のしきい値分布を示し、図24(C)は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、1ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
不揮発性メモリ2の制御部22は、図24(A)に示すように、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を分布Aに移動させるようプログラムする。
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図24(B)に示すように、Lowerページのプログラムにより分布Erの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Erのままとし、Middleページに書き込むビット値が“0”の場合は分布Dに移動させるようプログラムする。また、Lowerページのプログラムにより分布Aの状態であったメモリセルに対しては、Middleページに書き込むビット値が“1”の場合は分布Aのままとし、Middleページに書き込むビット値が“0”の場合は分布Fに移動させるようプログラムする。
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部22は、図24(C)に示すように、Middleページのプログラムにより分布Erの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Erのままとし、Upperページに書き込むビット値が“0”の場合は分布Cに移動させるようプログラムする。また、Middleページのプログラムにより分布Aの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Aのままとし、Upperページに書き込むビット値が“0”の場合は分布Bに移動させるようプログラムする。また、Middleページのプログラムにより分布Dの状態であったメモリセルに対しては、Upperページに書き込むビット値が“0”の場合は分布Dのままとし、Upperページに書き込むビット値が“1”の場合は分布Eに移動させるようプログラムする。また、Middleページのプログラムにより分布Fの状態であったメモリセルに対しては、Upperページに書き込むビット値が“1”の場合は分布Fのままとし、Upperページに書き込むビット値が“0”の場合は分布Gに移動させるようプログラムする。
第1の実施の形態では、書き込むビット値が“1”の場合は、電荷を注入せず、ビット値が“0”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“0”の場合に電荷を注入せず、“1”の場合に電荷を注入するというケースが存在する。このため、図23のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに1か所存在する。
本実施の形態の書き込み手順は、図24に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第1の実施の形態と同様である。
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第2の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Vr2、Vr5、Vr7を用い、Middleページの読み出しでは、Vr4を用い、Lowerページの読み出しでは、Vr1、Vr3、Vr6を用いる。Upperページまでの書き込みが行われている場合は、図23(C)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図23(B)のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr2以上Vr5未満と判定された場合、ビット値は“1”と決定する。Lowerページまでの書き込みが行われている場合は、図23(A)のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がVr2以上Vr5未満と判定された場合、ビット値は“1”と決定する。
以上のように、本実施の形態では、図23に示した3−1−3コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、1ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
(第7の実施の形態)
次に、第7の実施の形態の記憶装置における読み出し方法について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。本実施の形態のデータコーディングは第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
一般的に、NANDメモリの各メモリセルのしきい値は、何らかの要因によって変動(変化)する。この要因としては、たとえばプログラムディスターブ、またはリードディスターブ、またはデータリテンションなどさまざまなものがある。変動したしきい値を有するメモリセルは、読み出しの時に、書き込まれたデータ値に対応するしきい値分布(領域)とは別のしきい値分布(領域)に対応する状態であると判定されることがあり、読み出しデータの誤りが生じる。この問題への対策として、しきい値の変動を補正して読み出すという手法がある。
図25は、しきい値分布の変動の一例を示す図である。図25では、第1の実施の形態の図6(C)の状態にプログラムを行った後に、Lowerページを読み出す時のしきい値変動の一例を示している。実線で示したしきい値分布100は、変動前、すなわち書込み時のしきい値分布を示している。点線で示したしきい値分布101は、変動後のしきい値分布を示している。符号はそれぞれ1つずつに付しているが、符号を付していないしきい値分布についても実線が変動前のものを示し、点線が変動後のものを示している。図25の例では、データリテンションによって、分布Erと分布Aは、正方向(図25では、右へ向かう方向)に、分布B〜Gは、負方向(図25では、左へ向かう方向)にしきい値が変動した様子を表している。しきい値変動後のメモリセルを、元の読み出し電圧Vr1,Vr3,Vr6を使って読み出すと、例えば分布Fに属するメモリセルの一部(低電圧側の一部)はVr3とVr6の間の範囲内と判定されてしまう。このように、しきい値変動が生じることにより、多数のメモリセルのデータを読み誤る。
そこで、本実施の形態では、Vr1,Vr3,Vr6の代わりに、Vr1’,Vr3’,Vr6’という変動を補正した読み出し電圧を使用する。Vr1’,Vr3’,Vr6’の決定方法はどのような方法を用いてもよいが、例えば、読み出し電圧を変更して誤り訂正処理を行い、誤り訂正可能となった読み出し電圧をVr1’,Vr3’,Vr6’として用いる方法が考えられる。Vr1’,Vr3’,Vr6’の決定方法はこの方法に限定されない。
図26は、読み出し電圧を変更する場合の本実施の形態の読み出し手順の一例を示すフローチャートである。常時図26に示す手順で読み出しを実施してもよいし、通常は読み出し電圧は変更しない読み出しを実施し、しきい値が変動したと想定される一定条件を満たした場合に、図26の読み出し手順を実施するようにしてもよい。この一定条件には特に制約はないが、例えば、読み出し時の誤り訂正処理により誤り訂正不可となる比率が一定比率を超えた場合に図26に示した読み出し電圧の変更を行う読み出しを実施する。図26に示すように、プロセッサ12は、メモリインターフェイス15経由で、不揮発性メモリ2へページ読み出しコマンド(ページ単位で読み出しを要求するコマンド)を入力する(ステップS61)。不揮発性メモリ2は、ページ読み出しコマンドに従ってデータを読み出し(ステップS62)、メモリインターフェイス15経由でECC回路14へ読み出したデータを送信する(ステップS63)。ステップS62の読み出しで用いる読み出し電圧は、後述する読み出しレベル変更コマンドを受信していない場合には初期値(上記図25の例ではVr1,Vr3,Vr6)である。ただし、この初期値は、メモリコントローラ1からの指示に基づいて変更可能としてもよい。
ECC回路14は、入力されたデータを用いて誤り訂正処理を行う(ステップS64)。ECC回路14は、この誤り訂正処理で、誤り訂正が可能であったか否かをプロセッサ12へ通知する。プロセッサ12は、この通知により誤り訂正が可能であったか否かを判断し(ステップS65)、誤り訂正が可能であった場合(ステップS65 Yes)、処理を終了する。誤り訂正不可であった場合(ステップS65 No)、プロセッサ12は、不揮発性メモリ2の読み出しレベル(読み出し電圧)をステップS62で用いた読み出し電圧とは異なる値に決定する(ステップS67)。そして、プロセッサ12は、決定した値に基づいて読み出しレベル変更コマンドをメモリインターフェイス15経由で、不揮発性メモリ2へ入力し(ステップS66)、ステップS61へ戻る。不揮発性メモリ2は、読み出しレベル変更コマンドに従って、読み出し電圧を変更する。
以上の手順により、誤り訂正可能となる読み出し電圧を探索することが可能となる。誤り訂正可能となった場合の読み出し電圧が図25のVr1’,Vr3’,Vr6’に相当する。
以上の説明では、第1の実施の形態のデータコーディングを用いる例を説明したが、第2〜6の実施の形態のデータコーディングを用いる場合に、同様に、読み出し電圧の変更を行ってもよい。
本実施の形態では、第1〜第6の実施の形態のデータコーディングを用いた書込みおよび読み出しを行う場合に、しきい値が変動した場合に読み出し電圧を変更するようにした。このため、第1〜第6の実施の形態の効果が得られるとともに、しきい値が変動した場合にも、データの読み出し誤りを低減することができる。
(第8の実施の形態)
次に、第8の実施の形態の記憶装置における読み出し方法について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。本実施の形態のデータコーディングは第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
不揮発メモリ2に格納されるデータを保護するために誤り訂正符号化する際に、どのような誤り訂正符号を用いてもよいが、復号時に軟判定復号を行ってもよい。軟判定復号を行う場合には、一般にはLDPC(Low Density Parity Check)符号等のように、軟判定復号を行う符号を用いて符号化を行うが、硬判定復号を行うことが可能な符号(BCH符号等)を用いた符号化を行い、復号時に軟判定復号を行ってもよい。
本実施の形態では、復号時に軟判定復号を行う例について説明する。符号化の方式については特に制約はないが、上述したように例えばLDPC符号により符号化を行う。軟判定復号を行う場合は、通常の読み出しと同様の硬判定値に加えいわゆるソフトビット情報を不揮発性メモリ2から読み出し、読み出した硬判定値およびソフトビット情報を用いて復号を行う。ソフトビット情報とは、どれだけ真値に近いかという確率情報である。不揮発メモリ2としてNANDメモリを用いる場合、しきい値分布を分ける境界となる読み出し電圧から各メモリセルのしきい値電圧が離れているほど真値に近いとみなせる。
以下、ソフトビット情報を読み出す読み出し方法をソフトビットリードとよび、第1の実施の形態等で前提として通常の読み出しはハードビットリード(HB read)とよぶ。ハードビットリードは、しきい値分布を分ける境界に対応する1つの読み出し電圧を印加することにより、当該境界よりメモリセルのしきい値電圧が高いか否かを判定する。これに対し、ソフトビットリードでは、判定対象の1つの境界に対して複数の読み出し電圧で読み出しを実施する。ソフトビットリードを行うためのハードウェア構成はどのような構成としてもよいが、例えば、不揮発性メモリ2がソフトビットリードと通常読み出し(ハードビットリード)の両方の読み出し方法に対応可能とし、メモリコントローラ1からの指示に基づいて、読み出しを行うとする。また、ソフトビットリードを行う際の、読み出し電圧のシフト量や何種類のシフトを行うかについては、不揮発性メモリ2にあらかじめ設定されていてもよいし、メモリコントローラ1から指示するようにしてもよい。
図27は、ソフトビットの様子の一例を示す図である。図27では、第1の実施の形態の図6(C)の状態にプログラムを行った後に、Lowerページをソフトビットリードにより読み出す様子を示している。この図の例では、2種類のソフトビット情報を読み出している。ソフトビットリードは基本的に、ハードビットリードと読み出し電圧をシフトさせた場合のデータの読み出し値(メモリセルのしきい値電圧が、シフトさせた読み出し電圧以上であるか否か)を用いた読み出しとの組み合わせである。図27の例では、まず、不揮発性メモリ2は、通常の読み出し電圧Vr1,Vr3,Vr6をそれぞれ使った3回の読み出し結果に基づいて、3つのハードビットリードのデータ(しきい値電圧が読み出し電圧以上であるか否か)をそれぞれ決定する(図27(A))。しきい値電圧が、読み出し電圧以上である場合データ値は“0”であり、読み出し電圧未満である場合データ値は“1”である。
次に、不揮発性メモリ2は、電圧Vr1,Vr3,Vr6からそれぞれ所定量ΔRだけ低い読み出し電圧で、ソフトビットリード#1(S1 read)を行う。そして、Vr1−ΔR,Vr3−ΔR,Vr6−ΔRをそれぞれ使った3回の読み出し結果に基づいて、S1 readのデータを決定する(図27(B))。次に、不揮発性メモリ2は、電圧Vr1,Vr3,Vr6からそれぞれΔRだけ高い読み出し電圧でソフトビットリード#2(S2 read)を行う。そして、Vr1+ΔR,Vr3+ΔR,Vr6+ΔRを使った3回の読み出し結果に基づいて、S2 readのデータを決定する(図27(C))。
次に、不揮発性メモリ2は、電圧Vr1,Vr3,Vr6からそれぞれΔRの2倍だけ低い読み出し電圧で、ソフトビットリード#3(S3 read)を行う。そして、電圧Vr1−2ΔR,Vr3−2ΔR,Vr6−2ΔRをそれぞれ使った3回の読み出し結果に基づいて、S3 readのデータを決定する(図27(D))。次に、不揮発性メモリ2は、電圧Vr1,Vr3,Vr6からそれぞれΔRの2倍だけ高い読み出し電圧で、ソフトビットリード#4(S4 read)を行う。そして、電圧Vr1+2ΔR,Vr3+2ΔR,Vr6+2ΔRをそれぞれ使った3回の読み出し結果に基づいて、S4 readのデータを決定する(図27(E))。
さらに、S1 readのデータとS2readのデータとの否定排他的論理和を演算することで、Vr1−ΔRとVr1+ΔRの間の範囲とVr3−ΔRとVr3+ΔRの間の範囲とVr6−ΔRとVr6+ΔRの間の範囲とのしきい値電圧を有するメモリセルをそれぞれ特定することができる(図27(F))。同様に、S3 readのデータとS4 readのデータの否定排他的論理和を演算することで、Vr1−2ΔRとVr1+2ΔRの間の範囲とVr3−2ΔRとVr3+2ΔRの間の範囲とVr6−2ΔRとVr6+2ΔRの間の範囲とのしきい値電圧を有するメモリセルをそれぞれ特定することができる(図27(G))。この図27(F)と図27(G)の結果が、2種類のソフトビット情報となる。
そして、ECC回路14は、ハードビットリードの結果とソフトビット情報とを用いて軟判定復号を行うことにより、誤り訂正を行うことができる。なお、本実施の形態では、第1の実施の形態のデータコーディングを用いる例を説明したが、第2〜6の実施の形態のデータコーディングを用いる場合に、同様に、ソフトビットリードを行ってもよい。また、本実施の形態のソフトビットリードを行う場合に、第7の実施の形態で述べた読み出し電圧の変更を行ってもよい。
(第9の実施の形態)
次に、第9の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。本実施の形態のデータコーディングは第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
第1〜第6の実施の形態では、いずれも、LowerページやMiddleページのプログラムにおいても、しきい値分布(領域)の幅は、最終的にUpperページのプログラムで必要とされる幅と同じ幅に形成しておく例について説明した。
本実施の形態では、第3の実施の形態で述べたデータコーディングの変形例として、LowerページおよびMiddleページのしきい値分布の幅を広くし、またMiddleページのしきい値分布の間隔を広くする。これにより、Lowerページの書き込みの高速化とMiddleページのデータ誤りの確率の低減を図る。
図28は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。本実施の形態のLowerページプログラム後におけるデータ値“0”に対応するしきい値分布は、第3の実施の形態の図18に示したLowerページプログラム後におけるデータ値“0”に対応する分布102に比べ、幅が広がり中心電圧が低くなっている。これにより、Middleページのプログラム後におけるデータ値“00”に対応するしきい値分布とデータ値“10”に対応するしきい値分布との間隔も広がっている。
以上のように、しきい値分布の幅を広げることで、Lowerページのプログラム時にワード線に印可するプログラム電圧の1回のプログラムパルス毎の上昇幅をMiddleページやUpperページのそれよりも大きくすることができる。すなわち、分布幅調整をラフに行うことができるので、プログラム時間を高速化することができる。またMiddleページのしきい値分布の間隔が広がるため、データ誤りの確率が下がり、より正確なデータを読み出すことが可能になる。それを利用して、Lowerページのみをプログラムが高速で信頼性の良い2値データとして使用することも可能である。
なおこれにより、第3の実施の形態ではUpperページのプログラムにおいてはデータ値“100”のしきい値分布が、Middleページのプログラム後のデータ値“00”のしきい値分布と同じであったため、Upperページの書込みの際にデータ値“100”の場合はプログラムを実施する必要がなかった。これに対し、本実施の形態では、Upperページの書込みの際にデータ値“100”の場合、図28(C)に示すデータ値“100”のしきい値分布となるように、プログラムを実施する。
なお、ここでは、第3の実施の形態の変形例について説明したが、他の実施の形態についても同様にLowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げまたMiddleページのしきい値分布の間隔を広げることができる。
以上のように、本実施の形態では、LowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げ、またMiddleページのしきい値分布の間隔を広げるようにした。これにより、プログラム時間を高速化することができる。また、Middleページの読み出し誤りを低減することができる。
(第10の実施の形態)
次に、第10の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。本実施の形態のデータコーディングは第1の実施の形態と同様である。以下、第1の実施の形態と異なる点を説明する。
本実施の形態では、第9の実施の形態と同様に、第3の実施の形態で述べたデータコーディングの変形例として、LowerページおよびMiddleページのしきい値分布の幅を広くし、またMiddleページのしきい値分布の間隔を広くする。
図29は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。本実施の形態のLowerページプログラム後におけるデータ値“0”に対応するしきい値分布は、第9の実施の形態に比べさらに低電圧側に移動させている。図29において、分布102は、第3の実施の形態のしきい値分布を示す。なお、図29では、符号は1つの分布に付しているが、点線で示したしきい値分布は符号を付した分布と同様に第3の実施の形態のしきい値分布を示している。Middleページのプログラム後におけるデータ値“01”に対応するしきい値分布、データ値”10”に対応するしきい値分布についてそれぞれ第3の実施の形態に比べ、しきい値分布の幅を広げ中心電圧も下げている。
これにより、Middleページプログラム後におけるデータ値“00”のしきい値分布とデータ値“10”のしきい値分布との間隔も広がっている。したがって、LowerページとMiddleページのプログラム時にワード線に印可するプログラム電圧の1回のプログラムパルス毎の上昇幅をUpperページのそれよりも大きくすることができる。すなわち、分布幅調整をラフに行うことができるので、プログラム時間の高速化が可能である。またMiddleページの分布間隔が広がるため、データ誤りの確率が下がり、より正確なデータを読み出すことができる。それを利用して、Lowerページのみをプログラムが高速で信頼性の良い2値データとして使用することも可能である。
なお第3の実施の形態ではUpperページのプログラムにおいてはデータ値“001”,“100”,“110”のしきい値分布については、Middleページプログラム後のデータ値“01”,“00”,“10”のしきい値分布とそれぞれ同じだったためプログラムを実施する必要がなかった。本実施の形態では、Upperページのプログラムにおいてはデータ値“001”,“100”,“110”のしきい値分布が、図29(C)に示すしきい値分布となるようにプログラムを実施する。
なお、ここでは、第3の実施の形態の変形例について説明したが、他の実施の形態についても同様にLowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げまたMiddleページのしきい値分布の間隔を広げることができる。
以上のように、本実施の形態では、LowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げ、またMiddleページのしきい値分布の間隔を広げるようにした。これにより、プログラム時間を高速化することができる。また、Middleページの読み出し誤りを低減することができる。
(第11の実施の形態)
次に、第11の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ2の構成は第1の実施の形態と同様である。本実施の形態のデータコーディングは第4の実施の形態と同様である。以下、第4の実施の形態と異なる点を説明する。
例えば第4の実施の形態のデータコーディングでは、Middleページプログラム後のデータ値“11”のしきい値分布とデータ値“01”のしきい値分布とが、Upperページのプログラム後の最終分布での隣接分布になっている。したがって、Middleページでは使用される分布数が少ないにもかかわらず、隣接する分布の境界の読み出し電圧を用いる読み出しに関してはUpperページプログラム後と同等のデータ誤り確率となってしまう。特に消去分布(分布Er)は、その後のプログラムによる電圧補正が無く、データ誤りの原因となるストレス(プログラムディスターブ,リードディスターブ,データリテンション)が蓄積する。このため、他のデータ分布よりデータ誤りの確率が一般的に大きく、消去分布と消去分布に隣接する分布とを用いると誤りの発生確率が高くなる。そこで本実施の形態では、消去分布と隣接する分布との分布間隔を他の分布間の間隔よりも広げることにより、Middleページのデータ誤りの確率の低減を図る。
図30は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。図30において、点線で示した分布103は、第4の実施の形態のしきい値分布を示している。図30は、第4の実施の形態と同様のデータコーディングを行う場合に、第4の実施の形態のしきい値分布103に比べ、消去分布以外のデータ分布の中心電圧を高くすることにより、消去分布とその隣接分布との間隔を広げている。これにより、消去分布とその隣接分布と間の読み出し電圧を用いた読み出しにおけるデータ誤りの確率が下がり、より正確なデータを読み出すことができる。
なお、ここでは、第4の実施の形態の変形例について説明したが、Middleページのプログラム後のデータ分布がUpperページプログラム後の最終分布での隣接分布となっている他の実施の形態(第1の実施の形態、第2の実施の形態、第6の実施の形態)についても同様に消去分布以外のデータ分布の中心電圧を高くすることができる。
以上のように、Middleページのプログラム後のデータ分布がUpperページプログラム後の最終分布での隣接分布となっている場合に、消去分布以外のデータ分布の中心電圧を高くする、すなわち、消去分布とその隣接分布と間の間隔を他の分布間の間隔より広くするようにした。これにより、消去分布とその隣接分布と間の読み出し電圧を用いた読み出しにおけるデータ誤りの確率が下がり、より正確なデータを読み出すことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。