JP2013089082A - メモリコントローラ、半導体記憶システムおよびメモリ制御方法 - Google Patents
メモリコントローラ、半導体記憶システムおよびメモリ制御方法 Download PDFInfo
- Publication number
- JP2013089082A JP2013089082A JP2011229926A JP2011229926A JP2013089082A JP 2013089082 A JP2013089082 A JP 2013089082A JP 2011229926 A JP2011229926 A JP 2011229926A JP 2011229926 A JP2011229926 A JP 2011229926A JP 2013089082 A JP2013089082 A JP 2013089082A
- Authority
- JP
- Japan
- Prior art keywords
- data
- page
- error correction
- memory
- pages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Abstract
【課題】パリティデータデータの増大を抑えることができるメモリコントローラを得ること。
【解決手段】各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリコントローラであって、不揮発性半導体メモリの第1のメモリ領域に、第1〜第3の3ページ分のデータを書き込む場合に、第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御部と、仮想ページに対する第1の誤り訂正符号を生成する符号化部と、3ページ分のデータと第1の誤り訂正符号とを不揮発性半導体メモリへ書き込むインターフェイス部とを備える。
【選択図】図7
【解決手段】各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリコントローラであって、不揮発性半導体メモリの第1のメモリ領域に、第1〜第3の3ページ分のデータを書き込む場合に、第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御部と、仮想ページに対する第1の誤り訂正符号を生成する符号化部と、3ページ分のデータと第1の誤り訂正符号とを不揮発性半導体メモリへ書き込むインターフェイス部とを備える。
【選択図】図7
Description
本発明の実施形態は、メモリコントローラ、半導体記憶システムおよびメモリ制御方法に関する。
NAND型フラッシュメモリでは、一般的に、記憶するデータに対するエラー訂正が行われる。近年のNAND型フラッシュメモリの微細化・超多値化とともに貯蔵したデータにエラーが発生する確率が上がっている。
NAND型フラッシュメモリの微細化・超多値化に伴いエラーが発生する確率が上がると、エラー訂正後のデータ正当性を維持するために必要となるパリティデータ量が増大する。これはパリティデータを保存するためのメモリサイズ量が増大することを意味しており、コスト上昇を引き起こし問題となる。または、コスト上昇を抑えるためにパリティデータ量を増やさずエラー訂正能力を据え置いた場合は、貯蔵したデータのエラーを訂正しきれずに、エラー残存確率が増大してしまう。
本願発明の一態様によれば、各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリコントローラであって、不揮発性半導体メモリの第1のメモリ領域に、第1ページ、第2ページ、第3ページの3ページ分のデータを書き込む場合に、第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御部と、仮想ページに対する第1の誤り訂正符号を生成する符号化部と、3ページ分のデータと第1の誤り訂正符号とを不揮発性半導体メモリへ書き込むインターフェイス部とを備える。
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、半導体記憶システムおよびメモリ制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、第1の実施の形態にかかる半導体記憶システムの構成例を示すブロック図である。本実施の形態の半導体記憶システムは、メモリコントローラ1とNANDフラッシュメモリ(不揮発性半導体メモリ)2で構成される。NANDフラッシュメモリ2は、不揮発性メモリであり、メモリコントローラ1からの制御により書き込み・読み出し・消去などの動作を行う。
図1は、第1の実施の形態にかかる半導体記憶システムの構成例を示すブロック図である。本実施の形態の半導体記憶システムは、メモリコントローラ1とNANDフラッシュメモリ(不揮発性半導体メモリ)2で構成される。NANDフラッシュメモリ2は、不揮発性メモリであり、メモリコントローラ1からの制御により書き込み・読み出し・消去などの動作を行う。
メモリコントローラ1は、ランダムアクセスメモリ(RAM)11、プロセッサ12、ホストインターフェイス13、ECC(Error Checking and Correction)回路14、メモリインターフェイス(インタフェース部)15およびデータバス16を備える。
ホストインターフェイス13は、ホストとのデータ交換に必要なプロトコルを備える。ホストの例としては、パーソナルコンピュータやCPU(Central Processing Unit)コア等があげられる。メモリインターフェイス15は、NANDフラッシュメモリ2とのデータ交換に必要なプロトコルを備え、NANDフラッシュメモリ2との間でコマンド、アドレス、制御信号およびデータの送受信を行う。
プロセッサ12は、半導体記憶システムの各構成要素を統括的に制御する制御部であり、CPUコア、ROM(Read Only Memory)、DMA(Direct Memory Access)コントローラなどで構成される。プロセッサ12は、ホストからホストインターフェイス13およびデータバス16経由で命令を受けた場合に、その命令に従った制御を行う。例えば、プロセッサ12は、ホストからの命令に従って、NANDフラッシュメモリ2へのデータの書き込みやNANDフラッシュメモリ2からのデータの読み出しなどを、メモリインターフェイス15へ指示する。また、プロセッサ12は、ECC回路14へ誤り訂正符号化処理または復号化処理の実施を指示する。
ECC回路14は、プロセッサ12からの指示に従って、NANDフラッシュメモリ2へ書き込むデータに対する誤り訂正符号化処理を行うとともにNANDフラッシュメモリ2に格納されたデータのエラーの検出や訂正処理を行う。RAM11は、プロセッサ12のワーキングメモリとして使用される。なお図1の構成例には示されていないが、メモリコントローラ15にはホストとのインターフェイスのためのコードデータを格納するROMなどをさらに含むことがある。このように、図1の構成例は一例であり本実施の形態の半導体記憶システムは図1の構成例に限定されず、一般的な構成の変形が行われていてもよい。
NANDフラッシュメモリ2は、1つのメモリセルに3bit以上のデータを格納する。本実施の形態では、1つのメモリセルに3bitのデータを格納する例を説明する。図2は、NANDフラッシュメモリ2のメモリセルにデータを格納する際のメモリセルのしきい値とデータの割付の一例を示す図である。1つのメモリセルに3bitのデータを格納するため、7つの境界閾値である境界#1〜#7を用いて8種類のしきい値分布を定義している。NANDフラッシュメモリ2は、ページ(Page)単位で読み出し・書き込み動作を行う。一般に、多値セルでは、1つのメモリセルに格納される各bitには異なるページが割当られる。ここでは、3bitに対応するページアドレスをそれぞれU(Upper)、M(Middle)、L(Lower)とする。
図2の上側の図は、メモリセルごとに格納される各ページのデータの値の組み合わせとメモリセルのしきい値の対応の一例を示している。図2の下側の図は、メモリセルのしきい値を横軸にとり、セル数を縦軸にとった場合のセル数の分布(しきい値分布)の例を示している。図2に示したデータの割付は、隣接するしきい値分布に割り当てるデータは1bitの違いとなるいわゆるグレイ・コードとしているが、その理由は後述する。
図2に示すように、U,M,Lのページごとにみると、ページUでは、データの値が1から0または0から1となる境界が2箇所(図2の境界#3と境界#7)存在する。ページMでは、境界が2箇所(図2の境界#1と境界#5)存在し、ページLでは、境界が3箇所(図2の境界#2、境界#4および境界#6)存在する。以下では、このような各ページへの境界数の割当を、U、M、Lの順に境界数(分割数)を示して、2−2−3分割と呼ぶこととする。各ページへの境界数の割当は、これに限定されず、他の例については後述する。
次に、本実施の形態のNANDフラッシュメモリ2の書き込みおよび読み出しの全体動作について説明する。まず、プロセッサ12は、ホストからデータの書き込みを指示されると、ECC回路14にデータの誤り訂正符号化の実施を指示する。ホストから送信される書き込み対象のデータは、RAM11に一時的に格納される。ECC回路14は、RAM11に格納されたデータに基づいて誤り訂正符号化処理を実施し、誤り訂正符号を生成する。
そして、プロセッサ12は、メモリインターフェイス15に対してデータおよび当該データに対して生成された誤り訂正符号(以下、本実施の形態ではパリティとよぶ)をNANDフラッシュメモリ2へ書き込みよう指示する。この際、メモリインターフェイス15へデータおよび誤り訂正符号の書き込みアドレスを指示し、メモリインターフェイス15は、指示されたアドレスへデータおよびパリティを書き込む。プロセッサ12は、論理アドレスと、NANDフラッシュメモリ2の物理アドレスと、の対応を保持しており、メモリインターフェイス15に対しては書き込みアドレスとして物理アドレスを指定する。なお、ここでは、書き込み時に論理アドレスと物理アドレスを直接変換する例について説明したが、これに限らず、多段階でアドレスを変換する(ホスト装置の論理アドレスから半導体記憶システムの論理アドレスへ一旦変換した後に、物理アドレスへ変換する等)の方式としてもよい。
また、プロセッサ12は、ホストからデータの読み出しを指示されると、当該データのNANDフラッシュメモリ2からの読み出しをメモリインターフェイス15へ指示する。ホストからは論理アドレスにより読み出し対象のデータが指定されるため、プロセッサ12は、保持している論理アドレスとNANDフラッシュメモリ2の物理アドレスとの対応に基づいて対応する物理アドレスをメモリインターフェイス15へ指示する。この際、プロセッサ12は、読み出しデータに対応するパリティも読みだす。プロセッサ12は、読みだしたデータとパリティに基づく誤り訂正復号化処理の実施をECC回路14へ指示する。ECC回路14は、指示に基づいて誤り訂正復号化処理を実施する。プロセッサ12は、誤り訂正復号化処理後のデータをホストインターフェイス13経由でホストへ送信する。
図3は、ECC回路14の構成例を示す図である。図3に示したECC回路14は、BCH方式を採用するECC回路である。このECC回路14では、Parity Generator(符号化部)141はNANDフラッシュメモリ2へのデータの書き込み時に、データバス16経由で入力される所定のサイズの書き込みデータに基づいて誤り訂正符号化処理によりパリティを生成する。なお、所定のサイズは任意な数値を設定可能であるが、例えば、セクターサイズである。セクターサイズは、例えば、512バイト(4096bit)である。Parity Generator14は、生成したパリティをデータバスへ返信する。
Syndrome Generator142,Key Equation Solver143,Chien Search144,Error Correction145の各ユニットは、NANDフラッシュメモリ2からのデータのからの読み出し動作時に使用される誤り訂正処理部を構成し、読み出したデータのエラー有無の検出とエラー訂正データの出力を行う。読み出したデータは、データバス16からSyndrome Generator142へ入力される。Syndrome Generator142は、入力されたデータに基づいてSyndromeを形成して、これをKey Equation Solver143へ入力する。Key Equation Solver143は、Syndromeを用いて誤り位置多項式を導出しエラーのビット数を判定する。Key Equation Solver143は、エラービット数が1より大きい場合は誤り位置多項式をChien Search144へ入力する。Chien Search144は、入力された誤り位置多項式に基づいてエラーのビットの場所を特定する。Error Correction145は、エラーのビットの場所に応じてビットデータを反転することによりエラーを訂正する。
なお、図3の構成は一例であり、本実施の形態は、ECC回路14の構成は図3の例に限定されない。また、誤り訂正方式は、BCH、リード・ソロモン符号、LDPC(Low Density Parity Check)など様々なものが実用化されており、誤り訂正方式もBCHに限らずどのような方式を用いてもよい。
ここで、NANDフラッシュメモリに格納されたデータのエラーについて説明する。NANDフラッシュメモリに格納されたデータにエラーが発生する要因は様々なものがあるが、代表的な要因として、電荷リーク、ソフトプログラム、オーバープログラムがある。
図4は、電荷リークによるエラー発生の様子を示す図である。NANDフラッシュメモリのメモリセルは、しきい値電圧分布によってONセルとOFFセルに区分される。ONセルはデータ“1”を格納した状態で、OFFセルはデータ“0”を格納した状態である。電荷リークによるエラーは、書き込みがされてOFFセルとなったセルが、ONセルとして読み出されるエラーである。
電荷リークは、メモリセルのフローティングゲートや酸化膜にトラップされた電子が酸化膜を通してメモリセルのチャネルに漏れることである。NANDフラッシュメモリでは、読み出し動作時には、選択ワードライン(図4では、WL31を選択ワードラインとする)には選択読み出し電圧Vcgrが印加され、非選択ワードライン(WL0〜WL30およびWL32〜WL63)には非選択読み出し電圧Vreadが印加される。ここでVreadは、非選択ワードラインに連結されているメモリセルをONさせるのに充分高い電圧である。選択ワードラインに連結されたメモリセルに電荷リークが発生すると、メモリセルのしきい値電圧は低くなり、OFFセルのしきい値分布がONセルの方に移動する。
図4の分布31は、電荷リークが発生していない場合のONセルのしきい値分布を示し、分布32は、電荷リークが発生していない場合のOFFセルのしきい値分布を示している。電荷リークが発生すると、OFFセルのしきい値分布は、点線の分布33に示したように下降する。このように電荷リークにより下降したしきい値がVcgrより低くなると、本来はOFFセルであるメモリセルが読み出し時にONセルとして読み出され、エラーとなる。
図5は、ソフトプログラムによるエラー発生の様子を示す図である。ソフトプログラムとは、読み出しの動作時に非選択読み出し電圧が印加されることにより、チャネルからフローティングゲートに電子がわずかに流入することである。ソフトプログラムによるエラーは、書き込みがされておらずONセルであったメモリセルがOFFセルとして読み出されるエラーである。
図5の分布31は、ソフトプログラムが発生していない場合のONセルのしきい値分布を示し、分布32は、ソフトプログラムが発生していない場合のOFFセルのしきい値分布を示している。選択ワードライン(WL31)に連結されたメモリセルにソフトプログラムが発生すると、メモリセルのしきい値電圧は分布34に示すように上昇し、ONセルのしきい値分布がOFFセルの方に移動する。しきい値がVcgrより高くなると、ONセルであるのに、本来はONセルであるメモリセルが読み出し時にOFFセルとして読み出され、エラーとなる。
図6は、オーバープログラムによるエラー発生の様子を示す図である。オーバープログラムとは、書き込み時に相対的に書き込み速度が速いメモリセルが書き込み後に上限電圧より高いしきい値電圧になることである。分布31は、オーバープログラムが発生していない場合のONセルのしきい値分布を示し、分布32は、オーバープログラムが発生していない場合のOFFセルのしきい値分布を示している。分布35は、オーバープログラムにより上限電圧を超えたメモリセルのしきい値分布を示している。この上限電圧はVreadより低い必要があるが、書き込み動作時はしきい値が上限電圧を超えたかどうかのチェックはしないのが通例である。
オーバープログラムによるエラーは、書き込みがされておらずONセルであったメモリセルがOFFセルとして読み出されるエラーである。読み出し動作時、選択ワードライン(WL31)にVcgrが印加され読み出し対象のメモリセルが正しくONしたとしても、同じセルストリング上の非選択ワードライン(WL0〜WL30およびWL32〜WL63)に連接されたメモリセルにオーバープログラムが発生すると、このセルストリングのチャネル抵抗は増加する。チャネル抵抗が増加すれば、ONセルである選択メモリセルがあたかもOFFしたように読み出され、エラーとなる。
以上に説明した3つのエラー代表要因のうち、電荷リークとソフトプログラムはしきい値分布が移動することにより生じる。多値メモリセルの場合は、しきい値分布が隣接するしきい値分布として誤って読み出されることになる。図2で例示したようなグレイ・コードによるデータ割付をしておけば、これらの要因でのエラーの量はメモリセル内の1bitにとどめることができる。例えば、図2の例では、境界#1と境界#2の間の分布Aが、境界#1以下の分布Erとして読み出されるか、または境界#2と境界#3の間の分布Bとして読み出されるかのいずれかとなる。分布Erとして読み出された場合はページMにおいて1bitのエラーが生じ、分布Bとして読み出された場合はページLにおいて1bitのエラーが生じることになる。
一方、上述のオーバープログラムによれば、しきい値分布は最上位電圧の分布に移動したように読み出されるため、2bitのエラーも発生しうる。またメモリセルが物理的に破損しているような不良セルは、一般的にはメモリチップの製造テスト工程で除外されたり冗長メモリセルに置き換え処理がなされたりするが、その後の使用過程でも疲労などにより破損しうる。このような不良セルの読み出し動作時のエラー挙動は予測が難しく、全3bitがエラーとなることもある。
しかしながら、適切な製造テスト工程を経た後はエラーの要因の大多数が電荷リークとソフトプログラムによる隣へのしきい値分布移動であるということが一般的に観測されている。本実施の形態および後続の実施の形態では、この事実に基づいて、エラー訂正の対象を隣へのしきい値分布移動に限定する、または隣へのしきい値分布移動をエラー訂正の主対象とすることでエラー訂正能力を下げずにコストを下げる。または、コストを上げずにエラー訂正能力を向上させる。以下、主にエラー訂正能力を下げずにコストを下げる例を説明するが、同様の手法でコストを上げずにエラー訂正能力を向上させる効果を得ることができることは自明である。
図7は、本実施の形態のエラー訂正対象とするデータの選び方の一例を示す図である。図7では、図2で示したデータ割付を前提としている。エラー要因が隣のしきい値分布への移動であるとすると、両隣の隣接しきい値分布でデータが変化しないデータはエラーが発生しない。図7では、ページUおよびMのうち、破線で囲まれた以外のデータは、しきい値分布が隣へ移動してもデータが変化しない。例えば、左から2番目のデータ“1,0,1”(=“ページUのデータ,ページMのデータ,ページLのデータ”)は、隣のしきい値分布に移動すると“1,1,1”または“1,0,0”となるが、ページUのデータはいずれに移動した場合も“1”のままで変化しない。
なお、ページLでは、実際には、図2で示した分布Erと分布Gの場合に、実際には隣のしきい値分布へ移動してもデータは変化しないが、ここでは、手順を簡易にするためにページLはすべてのデータでデータエラーが発生するものと扱う。
本実施の形態では、ページUおよびMについては、隣のしきい値分布への移動によりデータの値が変化する破線で囲まれたデータのみをエラー訂正対象(パリティ付与対象)とする。ページLについては、全てのデータをエラー訂正対象とする。ここでは、ページUおよびMのデータのうち、エラー訂正対象抜き出した仮想ページUM’を一時的に生成し、仮想ページUM’のデータに対してパリティを付与する。
図7の下側の図は、仮想ページUM’の抽出方法を示している。図7の上側の図と比較するとわかるように、ページUにおいて破線で囲まれているデータに対応するしきい値分布ではページMのデータは破線で囲まれていない。同様に、ページMにおいて破線で囲まれているデータに対応するしきい値分布ではページUのデータは破線で囲まれていない。従って、仮想ページUM’として、各しきい値分布に対してページUとページMのいずれか一方のデータを抽出すればよい。
次に、仮想ページUM’の生成方法について述べる。ここでは、ページLのデータの値に基づいて仮想ページUM’を生成する方法を述べる。なお、仮想ページUM’の生成方法はこれに限定されない。例えば、しきい値分布ごとにページUのデータを抽出するかページMのデータを抽出するかの対応を保持しておき、ページU,M,Lの3ビットのデータの値に基づいて対応するしきい値分布を識別して保持している対応に基づいてデータを抽出して、仮想ページUM’の生成する方法等としてもよい。
仮想ページUM’のデータをUM’[i](iはページ内のデータの番号を示す整数)とする。このとき、ページLのデータの値に基づいて仮想ページUM’を生成する規則を、以下の式(1)に示す。
UM’[i] = U[i] (if L[i] = 0)
M[i] (otherwise) …(1)
UM’[i] = U[i] (if L[i] = 0)
M[i] (otherwise) …(1)
そして、生成した仮想ページUM’の所定のサイズのデータに基づいてパリティを生成し、NANDフラッシュメモリ2への書き込み動作時には書き込みデータとともにパリティを書き込む。ページLについては従来と同様に所定のサイズのデータに基づいてパリティを生成する。従って、本実施の形態では、ページLおよびUM’の2ページ分のデータに対してパリティを付与する。従来のページL,M,Nの3ページ分のデータに対してパリティを付与する方法に比べ、本実施の形態ではパリティ付与対象のデータを削減できる。
図8は、仮想ページUM’の生成とパリティ生成手順の一例を示す図である。図8の左上図は、ホストから送信されたデータをプロセッサ12が各ページに割り付けた状態を示している。データ41,42,43は、各々1つのメモリセルに格納される3ビットのデータである。データ51,52,53は、それぞれデータ41,42,43に基づいて生成された仮想ページUM’のデータである。前述の式(1)に従って、UM’[i]を抽出すると、図8の右上図のようになる。ここでは、例として、データ41,42,43を示す番号(i)を1,2,3とする。データ41は、ページLのデータが“0”であるから式(1)に従って、UM’[1]=U[1]=1となる。データ43は、ページLのデータが“1”であるから式(1)に従って、UM’[3]=M[3]=1となる。
そして、仮想ページUM’のデータとページLのデータとに基づいてパリティが生成され、図8の左下図に示すように、ページU、MおよびLのデータとパリティが書き込まれる。
このようなパリティの付加の方法をとることにより、パリティデータサイズを減らすことが可能になる。以下、数値の一例を挙げて説明する。1ページのユーザデータ量を4096bitとし、このうち40bitを訂正可能な能力のECC回路14を用いるとする。4096bitを40bit訂正可能にするためのパリティデータ量は、BCH方式による最小データ量として520bitである(40bit×13:13=12+1;4096=212)。
従って、各ページにパリティを付加する従来例では、各ページに520bitのパリティデータ量を必要とする。このため、1ページサイズ(データとパリティの合計サイズ)は4616bitとなる。本実施の形態では、ページLに対しては、従来と同等の40bi訂正可能としなければ同等の不良確率にすることは出来ないため、520bitのパリティデータ量とする。
仮想ページUM’に対しては、ページLと同等の不良確率にするには4/3倍の訂正能力とする。4/3倍の理由は以下による。仮想ページUM’では、ページUでしきい値分布の移動によりエラーとなる場合とページMでしきい値分布の移動によりエラーとなる場合との両方を含む。従って、仮想ページUM’のエラー確率は、ページU、Mの両ページの合計となる。図2に示すように、ページUは隣の分布へ移動してデータエラーとなる箇所が2箇所(境界#3、境界#7)、ページMも隣の分布へ移動してデータエラーとなる箇所が2箇所(境界#1、境界#5)であり、合計すると4箇所である。これに対して、ページLは3箇所(境界#2、境界#4、境界#6)であるため、仮想ページUM’のエラー発生確率は、比率としてはページLの4/3倍となる。従って、ページUM’に対するパリティデータ量は694bitとなる。
図9は、本実施の形態のNANDフラッシュメモリ2へのデータおよびパリティの格納位置の一例を示す図である。図9では、NANDフラッシュメモリ2の1つのワードラインを共有する3つのページアドレスのメモリセルへのデータ格納位置を示している。前述した誤り訂正符号化の対象とする所定のデータサイズを4096bitとした例を示しているが、誤り訂正符号化の対象とする所定のデータサイズはこれに限定されない。
本実施の形態では、パリティは2ページ分のサイズのデータ量に対して生成されているため、パリティデータを3ページアドレスにまたがるパリティ格納エリアに分散して格納する。図9では、仮想ページUM’(UM’パリティ)のパリティとページLのパリティ(Lパリティ)を両方とも3分して3ページに振り分けているが、これに限らずどのような分散のさせ方でもよい。また、パリティのデータ量は、ページLが520bit、仮想ページUM’を694bitとしているが、パリティのデータ量はこれらに限定されない。
なお、前述したページL、仮想ページUM’のパリティデータ量は3で割り切れないため、整数に切り上げている。図9の例では、1ページのパリティデータ量は4096bitであり、1ページサイズ(1ページ分のデータとパリティのデータ量)は4502bitとなり、ページごとに520bitのパリティを付加する場合の1ページサイズ4616bitよりデータ量を削減することができる。ここでは、パリティのデータ量を削減する例を示したが、従来例と同等の各ページ520bitずつ計1560bitのパリティデータ量を確保したとすれば、誤り訂正能力を上げることが可能となる。この場合は不良確率を向上させるメリットとなることはいうまでもない。
NANDフラッシュメモリ2からの読み出し動作時には、書き込みデータ(ページU、M、Lのデータ)と対応するパリティとが同時に読み出される。ただし、本実施の形態では、パリティは仮想ページUM’とページLの2ページ分のデータに対するものである。ページLはそのまま誤り訂正処理を行えばよいが、ページUおよびMについては、書き込み時と同様に仮想ページUM’を作成する。そして、仮想ページUM’に対して誤り訂正処理を行った後、再度、ページU、Mに復元する。
なお、前述の式(1)に示したようにページLのデータを用いて仮想ページUM’を生成するためには、Lのデータが正しいことが前提となる。従って、手順としては、まずページLの誤り訂正処理を行い、次に仮想ページUM’の生成を行い、その上で仮想ページUM’の誤り訂正処理を行う。
ここで、仮想ページUM’のデータからページUおよびMのデータを復元する規則は以下の式(2)の通りである。なお、復元後のページUのデータをUA[i]、復元後のページMのデータをMA[i]とする。書き込み時の逆方向となる。エラー訂正対象外のデータは仮想ページUM’から復元するのではなくNANDフラッシュメモリ2から読み出したデータ(式(2)の左辺のU[i]、M[i])そのままとなる。
UA[i] = UM’[i] (if L[i] = 0)
U[i] (otherwise)
MA[A] = UM’[i] (if L[i] = 1)
M[i] (otherwise) …(2)
UA[i] = UM’[i] (if L[i] = 0)
U[i] (otherwise)
MA[A] = UM’[i] (if L[i] = 1)
M[i] (otherwise) …(2)
また、本実施の形態のさらなるメリットとして、従来全3ページを独立にエラー訂正動作していたところを、ページU、Mの2ページ分をひとまとまりとしてエラー訂正するということによるエラー訂正確率向上という効果が期待できる。これは、ページUまたはページMの片方のページのエラー発生確率が低い場合、結果として、もう片方のページのエラー訂正に訂正能力を振り分けることができるためである。
図10は、本実施の形態のNANDフラッシュメモリ2への書き込み手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、同一ワードラインへ書き込むページU、M、Lの3ページのデータに基づいて仮想ページUM’のデータ(UM’の一時データ)を生成し、RAM11へ格納する(ステップS1)。プロセッサ12は、ECC回路14に対してページLに対するパリティの生成を指示する(ステップS2)。この指示により、ECC回路14は、RAM11に格納されているページLのデータに対してパリティを生成する。
次に、プロセッサ12は、UM’の一時データに基づいてパリティを生成するようECC回路14へ指示する(ステップS3)。この指示により、ECC回路14は、RAM11に格納されているUM’の一時データに対してパリティを生成する。
プロセッサ12は、ページUM’、ページLのパリティを3ページのパリティ格納アドレスに振り分け、ページU、M、Lのデータと振り分けたパリティとを結合したデータをRAM11上に生成する(ステップS4)。その後、プロセッサ12は、メモリインターフェイス15に対して、ページU、M、Lの3ページ分のデータ(パリティを含む)の書き込みを指示する(ステップS5)。
図11は、本実施の形態のNANDフラッシュメモリ2からの読み出し手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、メモリインターフェイス15に対して、読み出し対象のページデータのNANDメモリ2からの読み出しを指示する(ステップS11)。この際、読み出し対象データが格納された選択ワードラインに格納されたU、M、Lの3ページ分のデータおよびパリティを全て読み出す。ただし、ページLのみを読み出す場合は、3ページ分のデータを読み出す必要はなく、従来と同様にページLのページデータ(Lパリティを含む)を読み出して従来と同様に誤り訂正を行えばよい。
次に、プロセッサ12は、ページLのページデータおよびパリティをECC回路14に送信し、ページLのデータに対するエラー検出を指示する(ステップS12)。ECC回路14は、指示に基づいてページLのデータのエラー検出を行う。
プロセッサ12は、ECC回路14からエラー検出結果を取得し、エラーが存在するか否かを判定する(ステップS13)。エラーが存在したら(ステップS13 Yes)、ECC回路14に対して、ページLのデータのエラー訂正を指示する(ステップS14)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
プロセッサ12は、ページU、M、Lのデータに基づいて、UM’の一時データを生成し(ステップS15)、UM’の一時データと読み出したUM’のパリティをECC回路14に入力してエラー検出の実施を指示する(ステップS16)。ECC回路14は、指示に基づいてUM’の一時データのエラー検出を行う。
プロセッサ12は、UM’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS17)。エラーが存在したら(ステップS17 Yes)、ECC回路14に対して、UM’の一時データのエラー訂正を指示する(ステップS18)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、プロセッサ12は、エラー訂正後(エラーのないビットは読み出しデータのまま)のUM’の一時データおよびページLのデータに基づいてページU、M、Lの3ページ分のデータを復元する(ステップS19)。なお、ページについては、エラー訂正後のページLがそのまま復元後のページLのデータである。
ステップS13で、ページLのデータにエラーが存在しなければ(ステップS13 No)、ステップS14は実施せずに、ステップS15へ進む。また、ステップS17で、UM’の一時データにエラーが存在しなければ(ステップS17 No)、ステップS18は実施せずに、ステップS19へ進む。
このように、本実施の形態では、2つのページのデータのうち、エラーの発生確率が高いデータを抽出して仮想的な1ページ分のデータを生成し、この仮想的な1ページ分のデータに対してパリティを生成するようにした。このため、各ページについてそれぞれパリティを付加する場合に比べ、エラー訂正符号(パリティ)を効率的に使用することが可能になり、パリティデータ量を増やさずエラー訂正能力を向上させることができる。またエラー訂正能力を向上させないのであれば、パリティデータ量を減らすことが出来るのでパリティデータを格納するNANDフラッシュメモリ2のメモリセル量やECC回路14の規模を減らすことができコストを削減することができる。
なお、本実施の形態では、図2に示したに示した2−2−3分割のデータ割付の例について、境界数が3であるLのデータの値によって式(1)に従って仮想ページのデータを生成した。これに限らず、3ページへのデータ境界数の配分が2、2、3個であれば,どのようなデータ割り付けであっても適用可能である。例えば、U、M、Lの順に3−2−2分割であってもよい。
この理由は、グレイ・コードでは、境界数2個の2ページと境界数3個の1ページの境界位置割り付けは一意に決まり、本手法は境界位置のみに依存しデータが“1”であるか“0”であるかは問わない。従って、この一意に決まっている境界位置割付のうち、境界数を3とするページをU、M、Lのどのページとするか、だけの差である。従って、境界数3個のページのデータにより境界数2個の2ページのデータに対する一時データを生成すればよい。例えば、3−2−2分割の場合には、境界数が3であるページUの値に基づいて、ページMおよびLに基づいて仮想的な1ページ分のデータを生成することができる。
(第2の実施の形態)
次に、第2の実施の形態の半導体記憶システムについて説明する。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
次に、第2の実施の形態の半導体記憶システムについて説明する。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
第1の実施の形態では、隣接するしきい値分布への移動によるエラーだけを訂正しているが、実際には隣接しないしきい値分布への移動(2レベル以上の移動)等大幅な誤りがわずかな確率ながら発生する。本実施の形態では、第1の実施の形態の利点を有しつつ、隣接するしきい値分布への移動以外の誤りでも訂正可能にする手法を説明する。
図12は、本実施の形態に本実施の形態のエラー訂正対象とするデータの選び方の一例を示す図である。図12では、図2に示すデータ割付を前提としている。第1の実施の形態との相違点は、エラー訂正対象から除外していたデータによって仮想ページを生成し、この仮想ページのデータにパリティを付加する点である。本実施の形態では、第1の実施の形態の仮想ページUM’と同一の方法で仮想ページU’を生成する。加えて、本実施の形態では、ページUおよびMのデータのうち仮想ページU’に含まれないデータを用いて仮想ページM’を生成する。
すなわち、図12の破線で示したデータで仮想ページU’を構成し、それ以外の一点鎖線で示したデータで仮想ページM’を構成する。仮想ページM’は1つのメモリセル内で隣のしきい値分布への移動よりも大幅な誤りが発生した場合にエラーとなるデータで構成されるため、仮想ページM’のデータにエラーが発生する確率は仮想ページUのデータに比べてはるかに少ない。このため、仮想ページM’に対するエラー訂正能力は高くなくてよく、パリティデータ量は少量でよい。
仮想ページU’、仮想ページM’にそれぞれ対応する一時データU’[i]、M’[i]を生成する規則を以下の式(3)に示す。
U’[i] = U[i] (if L[i] = 0)
M[i] (otherwise)
M’[i] = U[i] (if L[i] = 1)
M[i] (otherwise) …(3)
U’[i] = U[i] (if L[i] = 0)
M[i] (otherwise)
M’[i] = U[i] (if L[i] = 1)
M[i] (otherwise) …(3)
NANDフラッシュメモリ2への書き込み動作時には、上記の式(3)に従って一時データを生成し、仮想ページU’、仮想ページM’、ページLの3ページ分のデータに対してパリティを付与する。
図13は、仮想ページU’、M’の生成とパリティ生成手順の一例を示す図である。図13の左上図は、ホストから送信されたデータをプロセッサ12が各ページに割り付けた状態を示している。データ41,42,43は、各々1つのメモリセルに格納される3ビットのデータである。データ54,55,56は、それぞれデータ41,42,43に基づいて生成された仮想ページU’、M’のデータである。前述の式(3)に従って、U’[i]、M’[i]を抽出すると、図8の右上図のようになる。ここでは、例として、データ41,42,43を示す番号(i)を1,2,3とする。データ41は、ページLのデータが“0”であるから式(3)に従って、U’[1]=U[1]=1、M’[1]=M[1]=1となる。データ43は、ページLのデータが“1”であるから式(3)に従って、U’[3]=M[3]=1、M’[1]=U[1]=0となる。
そして、仮想ページU’、M’のデータとページLのデータとに基づいてパリティが生成され、図13の左下図に示すように、ページU、MおよびLのデータとパリティが書き込まれる。
NANDフラッシュメモリ2からの読み出し動作時には、ページLは第1の実施の形態と同様にはそのままパリティを用いて誤り訂正すればよい。ページUとページMについては、仮想ページU’、仮想ページM’の生成(仮想ページU’、仮想ページM’に対応する一時データの生成)を行い、ページごとにパリティを用いて誤り訂正を行う。その後、ページU、ページMのデータを復元する。また、仮想ページU’、仮想ページM’に対応する一時データを作成するためにはページLのデータが正しいことが前提となっているため、手順としては、ページLの訂正を行った後に仮想ページU’、仮想ページM’の生成を行う。そして、その上で仮想ページU’、仮想ページM’の誤り訂正を行い、ページU、ページLの復元となる。
仮想ページU’、仮想ページM’の一時データからページU、Mのデータを復元する規則を以下の式(4)に示す。
U[i] = U’[i] (if L[i] = 0)
M’[i] (otherwise)
M[i] = U’[i] (if L[i] = 1)
M’[i] (otherwise) …(4)
U[i] = U’[i] (if L[i] = 0)
M’[i] (otherwise)
M[i] = U’[i] (if L[i] = 1)
M’[i] (otherwise) …(4)
次に、データ量の数値例を挙げる。第1の実施の形態の数値例と同様に、1ページのユーザデータ量を4096bitとし、このうち40bitを訂正可能な能力のBCH方式によるECC回路14を用いるとすると、パリティデータ量は520bitである。
本実施の形態では、ページLに対して40bit訂正可能とするためには第1の実施の形態と同様にパリティデータ量は520bitとなる。仮想ページU’に対しては、ページUとMのそれぞれを40bit訂正可能とするためには第1の実施の形態の仮想ページUM’と同様に694bitとなる。2レベル以上誤るエラーについては4つのメモリセルまで訂正可能であるようにすると、仮想ページM’に対するパリティデータ量は104bitである(2ページ×4bit×13;13=12+1;4096=212)。
図14は、本実施の形態のNANDフラッシュメモリ2へのデータおよびパリティの格納位置の一例を示す図である。図14では、NANDフラッシュメモリ2の1つのワードラインを共有する3つのページアドレスのメモリセルへのデータ格納位置を示している。前述した誤り訂正符号化の対象とする所定のデータサイズを4096bitとした例を示しているが、誤り訂正符号化の対象とする所定のデータサイズはこれに限定されない。
本実施の形態では、パリティデータは3ページ分のサイズのデータ量に対して生成されているが、ページM’のデータに対するパリティ(M’パリティ)はデータサイズがU’パリティおよびLパリティと比較すると小さい。そのためここでは、U’パリティとLパリティを3ページアドレスにまたがるパリティ格納エリアに分散して格納し、M’パリティは1つのページアドレスに格納している。各パリティの各ページのパリティ格納エリアへの配分はどのような分散のさせ方でも発明の効果は同じである。
なお、前述したパリティデータ量は3で割り切れないため、整数に切り上げている。この例では、1ページのパリティデータ量は440bitであり、1ページサイズは4536bitとなる。このように、本実施の形態では、第1の実施の形態よりはエラー訂正能力を向上させた分増加してするものの、従来の4616bitよりはデータ量を削減している。
図15は、本実施の形態のNANDフラッシュメモリ2への書き込み手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、同一ワードラインへ書き込むページU、M、Lの3ページのデータに基づいて仮想ページU’、M’のデータ(仮想ページU’、M’の一時データ)を生成し、RAM11へ格納する(ステップS21)。プロセッサ12は、ECC回路14に対してページLに対するパリティの生成を指示する(ステップS22)。この指示により、ECC回路14は、RAM11に格納されているページLのデータに対してパリティを生成する。
次に、プロセッサ12は、仮想ページU’の一時データに基づいてパリティを生成するようECC回路14へ指示する(ステップS23)。この指示により、ECC回路14は、RAM11に格納されているU’の一時データに対してパリティを生成する。
次に、プロセッサ12は、仮想ページM’の一時データに基づいてパリティを生成するようECC回路14へ指示する(ステップS24)。この指示により、ECC回路14は、RAM11に格納されているM’の一時データに対してパリティを生成する。なお、ステップS23とステップS24の順序は逆でもよい。
プロセッサ12は、仮想ページU’、M’およびページLのパリティを3ページのパリティ格納アドレスに振り分け、ページU、M、Lのデータと振り分けたパリティとを結合したデータをRAM11上に生成する(ステップS25)。その後、プロセッサ12は、メモリインターフェイス15に対して、ページU、M、Lの3ページ分のデータ(パリティを含む)の書き込みを指示する(ステップS26)。
図16は、本実施の形態のNANDフラッシュメモリ2からの読み出し手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、メモリインターフェイス15に対して、読み出し対象のページデータのNANDメモリ2からの読み出しを指示する(ステップS31)。この際、読み出し対象データが格納された選択ワードラインに格納されたU、M、Lの3ページ分のデータおよびパリティを全て読み出す。
次に、プロセッサ12は、ページLのページデータおよびパリティをECC回路14に送信し、ページLのデータに対するエラー検出を指示する(ステップS32)。ECC回路14は、指示に基づいてページLのデータのエラー検出を行う。
プロセッサ12は、ECC回路14からエラー検出結果を取得し、エラーが存在するか否かを判定する(ステップS33)。エラーが存在したら(ステップS33 Yes)、ECC回路14に対して、ページLのデータのエラー訂正を指示する(ステップS34)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
プロセッサ12は、ページU、M、Lのデータに基づいて、U’、M’の一時データを生成し(ステップS35)、U’の一時データと読み出したU’パリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS36)。ECC回路14は、指示に基づいてU’の一時データのエラー検出を行う。
プロセッサ12は、U’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS37)。エラーが存在したら(ステップS37 Yes)、ECC回路14に対して、U’の一時データのエラー訂正を指示する(ステップS38)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、M’の一時データと読み出したM’パリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS39)。ECC回路14は、指示に基づいてM’の一時データのエラー検出を行う。
プロセッサ12は、M’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS40)。エラーが存在したら(ステップS40 Yes)、ECC回路14に対して、M’の一時データのエラー訂正を指示する(ステップS41)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、プロセッサ12は、エラー訂正後(エラーのないビットは読み出しデータのまま)のU’、M’の一時データおよびページLのデータに基づいてページU、M、Lの3ページ分のデータを復元する(ステップS42)。
ステップS33で、ページLのデータにエラーが存在しなければ(ステップS33 No)、ステップS34は実施せずに、ステップS35へ進む。また、ステップS37で、U’の一時データにエラーが存在しなければ(ステップS37 No)、ステップS38は実施せずに、ステップS39へ進む。また、ステップS40で、M’の一時データにエラーが存在しなければ(ステップS40 No)、ステップS41は実施せずに、ステップS42へ進む。
本実施の形態では、第1の実施の形態と同様にページUおよびMのうちエラー発生確率の多いデータで仮想ページU’を生成してこの仮想ページに対するパリティを生成する。さらに、本実施の形態では、ページUおよびMのうち仮想ページU’を構成しないデータで別の仮想ページM’を構成して、仮想ページM’に対して、仮想ページU’より誤り訂正能力の低いパリティを生成するようにした。このため、第1の実施の形態と同様の効果が得られるとともに、メモリしきい値が2つ隣まで移動してしまったり、オーバープログラムなどによるメモリセルのしきい値が大きく移動してしまったり、するようなメモリセル内の2ビット以上のエラーでも訂正可能になる。
(第3の実施の形態)
次に、第3の実施の形態の半導体記憶システムについて説明する。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
次に、第3の実施の形態の半導体記憶システムについて説明する。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
図17は、本実施の形態に本実施の形態のエラー訂正対象とするデータの選び方の一例を示す図である。図17では、図2に示すデータ割付を前提としている。仮想ページUM’の生成方法と、仮想ページUM’に対するパリティの生成方法は第1の実施の形態と同様である。第1の実施の形態との相違点は、ページU、Mのデータに対しても、ページごとにそれぞれパリティを付加することである。
第2の実施の形態で述べたように、隣接しないしきい値分布への移動(2レベル以上の移動)等大幅な誤りがわずかな確率ながら発生する。本実施の形態では、第1の実施の形態の利点を有しつつ、隣接するしきい値分布への移動以外の誤りでも訂正可能にするために、ページU、Mのデータに対してもパリティを付加する。ただし、隣接するしきい値分布に対応するエラーの訂正は、ページUM’のパリティを用いて実施できるため、ページU、Mに対するパリティは、エラー訂正能力はそれほど高くなくてよくパリティデータ量は少量でよい。
NANDフラッシュメモリ2からの読み出し動作時には、まず、第1の実施の形態と同様にページLの誤り訂正を行い、次に仮想ページUM’の生成を行い、その上でページUM’の誤り訂正を行ってページU、Mを復元する。その後、ページU、Mについての誤り訂正を行う。
次に、データ量の数値例を挙げる。第1の実施の形態の数値例と同様に、1ページのユーザデータ量を4096bitとし、このうち40bitを訂正可能な能力のBCH方式によるECC回路14を用いるとすると、パリティデータ量は520bitである。
本実施の形態では、ページLに対して40bit訂正可能とするためには、第1の実施の形態と同様にページLのパリティデータ量は520bitである。ページU、Mのそれぞれを40bit訂正可能とするためには第1の実施の形態と同様に、ページUM’のパリティデータ量は694bitとなる。さらに、ページU、Mについて2レベル以上誤るセルの数を4セルまで訂正可能であるようにするには、ページU、Mに対するパリティデータ量はそれぞれ52bitである(4bit×13;13=12+1;4096=212)。
図18は、本実施の形態のNANDフラッシュメモリ2へのデータおよびパリティの格納位置の一例を示す図である。図18では、NANDフラッシュメモリ2の1つのワードラインを共有する3つのページアドレスのメモリセルへのデータ格納位置を示している。前述した誤り訂正符号化の対象とする所定のデータサイズを4096bitとした例を示しているが、誤り訂正符号化の対象とする所定のデータサイズはこれに限定されない。
本実施の形態では、パリティデータは4ページ分のサイズのデータ量に対して生成されているが、ページUのデータに対するパリティ(Uパリティ)、およびページMのデータに対するパリティ(Mパリティ)は、データサイズがUM’パリティおよびLパリティと比較すると小さい。ここでは、UM’パリティ、Lパリティ、UパリティおよびMパリティのすべてのパリティをすべて3ページアドレスにまたがるパリティ格納エリアに分散して格納している。各パリティの各ページのパリティ格納エリアへの配分はどのような分散のさせ方でも発明の効果は同じである。
前述したパリティデータ量は3で割り切れないため、整数に切り上げている。この例では、1ページのパリティデータ量は442bitであり、1ページサイズは4538bitとなる。この例では、ページサイズは、エラー訂正能力を向上させた分、第1の実施の形態よりは増加しているが、従来の4616bitよりはデータ量を削減している。
図19は、本実施の形態のNANDフラッシュメモリ2への書き込み手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、同一ワードラインへ書き込むページU、M、Lのうち、ページUのデータに対するパリティの生成を指示する(ステップS51)。ECC回路14は、指示に基づいてページUのデータに対してパリティを生成する。
次に、プロセッサ12は、ページMのデータに対するパリティの生成を指示する(ステップS52)。ECC回路14は、指示に基づいてページMのデータに対してパリティを生成する。
次に、プロセッサ12は、ページU、M、Lの3ページのデータに基づいて仮想ページUM’のデータ(仮想ページUM’の一時データ)を生成し、RAM11へ格納する(ステップS53)。そして、プロセッサ12は、ECC回路14に対してページLに対するパリティの生成を指示する(ステップS54)。この指示により、ECC回路14は、RAM11に格納されているページLのデータに対してパリティを生成する。さらに、プロセッサ12は、ECC回路14に対して仮想ページUM’に対するパリティの生成を指示する(ステップS55)。この指示により、ECC回路14は、RAM11に格納されている仮想ページUM’のデータに対してパリティを生成する。
そして、プロセッサ12は、仮想ページUM’、ページU、M、Lのパリティを3ページのパリティ格納アドレスに振り分け、ページU、M、Lのデータと振り分けたパリティとを結合したデータをRAM11上に生成する(ステップS56)。その後、プロセッサ12は、メモリインターフェイス15に対して、ページU、M、Lの3ページ分のデータ(パリティを含む)の書き込みを指示する(ステップS57)。
図20は、本実施の形態のNANDフラッシュメモリ2からの読み出し手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、メモリインターフェイス15に対して、読み出し対象のページデータのNANDメモリ2からの読み出しを指示する(ステップS61)。この際、読み出し対象データが格納された選択ワードラインに格納されたU、M、Lの3ページ分のデータおよびパリティを全て読み出す。
次に、プロセッサ12は、ページLのページデータおよびパリティをECC回路14に送信し、ページLのデータに対するエラー検出を指示する(ステップS62)。ECC回路14は、指示に基づいてページLのデータのエラー検出を行う。
プロセッサ12は、ECC回路14からエラー検出結果を取得し、エラーが存在するか否かを判定する(ステップS63)。エラーが存在したら(ステップS63 Yes)、ECC回路14に対して、ページLのデータのエラー訂正を指示する(ステップS64)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
プロセッサ12は、ページU、M、Lのデータに基づいて、UM’の一時データを生成し(ステップS65)、生成したUM’の一時データと読み出したUM’パリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS66)。ECC回路14は、指示に基づいてUM’の一時データのエラー検出を行う。
プロセッサ12は、UM’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS67)。エラーが存在したら(ステップS67 Yes)、ECC回路14に対して、UM’の一時データのエラー訂正を指示する(ステップS68)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、エラー訂正後のページLのデータ、エラー訂正後のUM’のデータを用いて、ページUのデータおよびページMのデータを復元する(ステップS69)。ここで復元されるページUおよびページMのデータは、UM’パリティによる誤り訂正がなされたデータ(すなわち隣接するしきい値分布への移動の誤りが訂正されたデータ)である。
プロセッサ12は、復元後のページUのデータと読み出したUパリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS70)。ECC回路14は、復元後のページUのエラー検出を行う。
プロセッサ12は、復元後のページUのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS71)。エラーが存在したら(ステップS71 Yes)、ECC回路14に対して、復元後のページUのエラー訂正の実施を指示する(ステップS72)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、プロセッサ12は、復元後のページMのデータと読み出したUパリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS73)。プロセッサ12は、復元後のページMのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS73)。エラーが存在したら(ステップS74 Yes)、ECC回路14に対して、復元後のページMのエラー訂正の実施を指示する(ステップS75)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
ステップS63で、ページLのデータにエラーが存在しなければ(ステップS63 No)、ステップS64は実施せずに、ステップS65へ進む。また、ステップS67で、UM’の一時データにエラーが存在しなければ(ステップS67 No)、ステップS68は実施せずに、ステップS69へ進む。また、ステップS71で、復元後のページUにエラーが存在しなければ(ステップS71 No)、ステップS72は実施せずに、ステップS73へ進む。また、ステップS74で、復元後のページMにエラーが存在しなければ(ステップS74 No)、ステップS75は実施しない。
本実施の形態では、第1の実施の形態と同様に第1の実施の形態と同様にページUおよびMのうちエラー発生確率の多いデータで仮想ページUM’を生成してこの仮想ページに対するパリティを生成する。さらに、本実施の形態では、ページU、Mについても仮想ページUM’より誤り訂正能力の低いパリティを生成するようにした。このため、第1の実施の形態と同様の効果が得られるとともに、メモリしきい値が2つ隣まで移動してしまったり、オーバープログラムなどによるメモリセルのしきい値が大きく移動してしまったり、するようなメモリセル内の2ビット以上のエラーでも訂正可能になる。
また、本実施の形態では、第2の実施の形態よりパリティデータ量は増える。しかしながら、第2の実施の形態では一時データを2ページ分生成する必要があったところが本実施例では1ページ分でよいので、一時データを保持するためのワーキングメモリを小さくすることが可能である。
(第4の実施の形態)
図21は、第4の実施の形態におけるNANDフラッシュメモリ2のメモリセルにデータを格納する際のメモリセルのしきい値とデータの割付の一例を示す図である。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
図21は、第4の実施の形態におけるNANDフラッシュメモリ2のメモリセルにデータを格納する際のメモリセルのしきい値とデータの割付の一例を示す図である。本実施の形態の半導体記憶システムの構成は、第1の実施の形態と同様である。以下、第1の実施の形態と異なる部分を説明する。
本実施の形態では、1つのメモリセルに4bitを格納する例について説明する。4bitを格納するために、16種類のしきい値分布を定義し、図21に示すように各々のしきい値分布にデータを割り当てている。本実施の形態でも、隣接するしきい値分布に割り当てるデータは1bitの差となるグレイ・コードとしている。1つのメモリセルに格納される4bitにそれぞれ対応するページアドレスを、それぞれT(Top)、H(Higher)、U(Upper)、L(Lower)とする。図21では、両側の隣接するしきい値分布への移動でデータが変化しない位置を破線で囲っている。
図22は、本実施の形態に本実施の形態のエラー訂正対象とするデータの選び方の一例を示す図である。前述したように、エラー要因が隣へのしきい値分布移動であるとすると、両隣の隣接しきい値分布でデータが変化しないデータはエラーが発生しない。1つのメモリセルに3bitのデータを格納する場合(3bit/セルの場合)は、第1の実施の形態の図7で示したように、エラーが発生しない分布位置(図7の例では、ページU、Mの破線以外の位置)がページ間での分布位置重なりを持たない。さらに、3bit/セルの場合は、第1の実施の形態で説明したように、残りの1つのページ(図7の例では、ページL)のデータ値によって、対応するしきい値分布において、どちらのページが、エラーが発生しやすいかを判別することが可能であった。
しかし、図21に示すように、1つのメモリセルに4bitのデータを格納する場合には、エラーが発生しない分布位置を2つのページ間で重なりなく、またぬけなく抽出することはできない場合がある。4ページのうちの2つのページ(ページA、Bとする)に着目した場合に、ページAにおいてエラーが発生しない位置であるしきい値分布がページBにおいてはエラーが発生する位置であり、かつページBにおいてエラーが発生しない位置であるしきい値分布がページAにおいてはエラーが発生する位置である場合には、第1の実施の形態と同様にページA、Bからエラーが発生する位置のデータを抽出することができる。しかし、図21のように、エラーが発生しない分布位置を2つのページ間で重なる場合は、2ページのデータからエラーが発生するデータだけを抽出した仮想ページを生成することができない。
したがって、本実施の形態では、隣へのしきい値分布移動によりエラーが生じるデータだけを含む仮想ページを生成できないため、2つ以上の境界を超えてしきい値分布が移動するエラーが生じるデータも含んだ仮想ページを生成する。ただし、後者のデータ(2つ以上の境界を超えてしきい値分布が移動するエラーが生じるデータ)は、少なくなるよう仮想ページを生成する。図22の例では、ページH、Uのデータによりこの仮想ページを構成し、この仮想ページをページU’としている。また、ページH、UのうちページU’を構成しないデータにより別の仮想ページを構成し、この別の仮想ページを仮想ページH’としている。仮想ページH’は、2つ以上の境界を超えてしきい値分布が移動するエラーが生じるデータが大多数だが、隣へのしきい値分布移動によるエラーが生じるデータを少量含む。そして仮想ページH’、U’の両方についてパリティを付加する。エラー訂正能力は、仮想ページU’を高く、仮想ページH’は低くてよい。ページT、Lについては、それぞれページごとにパリティを付加する。
仮想ページH’、U’を構成する一時データを、それぞれH’[i],U’[i]とすると、H’[i],U’[i]を生成する規則は以下の式(5)で表すことができる。
H’[i] = H[i] (if L[i] = 1)
U[i] (otherwise)
U’[i] = H[i] (if L[i] = 0)
U[i] (otherwise) …(5)
H’[i] = H[i] (if L[i] = 1)
U[i] (otherwise)
U’[i] = H[i] (if L[i] = 0)
U[i] (otherwise) …(5)
図22の例では、仮想ページH’を構成する位置を破線で囲み、仮想ページU’を構成する位置を一点鎖線で囲んでいる。図21からわかるように、一番左のしきい値分布Erは、ページU、Hもいずれも隣へのしきい値分布移動によりエラーが生じるデータでない。しかし、図22の上側の図をみるとわかるように、ページUのしきい値分布Erに対応するデータは仮想ページU’に割当られる。このように、仮想ページU’は、隣へのしきい値分布移動によりエラーが生じるデータを多く含むものの、しきい値分布移動によりエラーが生じるデータでないものも含んでいる。
なお、ここでは、L[i]の値に基づいて仮想ページH’、U’を生成するようにしたが、仮想ページH’と仮想ページU’のうち、仮想ページU’が仮想ページH’より、隣へのしきい値分布移動によりエラーが生じるデータを多く含むような仮想ページの生成方法であれば、上記の式(5)で示した生成方法に限定されない。例えば、上記のしきい値分布Erに対応するデータは、図22の例と逆に、仮想ページU’にページHのデータを割り当て、仮想ページH’にページUのデータを割り当ててもよい。この場合には、ページLの値に基づいて仮想ページU’、H’を生成することができないため、ページT、H、U、Lの各データの値との仮想ページU’、H’との対応表等を用いて仮想ページU’、H’を生成する。
NANDフラッシュメモリ2への書き込み動作時には、式(5)の規則に従って2ページ分の一時データを生成する。そして、それ以外の2ページと合わせた4ページ分のデータに対してパリティを付与する。なお、式(5)では、ページH、Uのデータを用いて仮想ページH’、U’を生成する例を示したが、他の2ページを用いて、同様に仮想ページを生成してもよい。
図23は、本実施の形態の仮想ページH’、U’の生成手順の一例を示す図である。図23の左側の図は、元になるページT、H、U、Lのデータ例を示し、右側の図は、生成された仮想ページH’、U’のデータ例を示している。データ61、62、63、64は、各々1つのメモリセルに格納される4ビットのデータである。データ71、72、73、74は、それぞれデータ61、62、63、64に基づいて生成された仮想ページH’、U’のデータである。
NANDフラッシュメモリ2からの読み出し動作時には、ページT、Lはそのまま誤り訂正すればよい。ページH、Uについては、H’[i],U’[i]という一時データを作成し、作成した一時データ(仮想ページ)に対して誤り訂正を行った後に、ページH、Uに復元する。またH’[i],U’[i]という一時データを作成するためには、ページLのデータが正しいことが前提となっているため、手順としては、まずページLの訂正を行い、次にH’[i],U’[i]の生成を行い、その上でH’[i],U’[i]の訂正を行い、ページH、Uの復元となる。
一時データH’[i],U’[i]から、ページH、Lのデータ(H[i],U[i])を復元する規則は書き込み時の逆方向となり以下の式(6)に示す通りである。
H[i] = H’[i] (if L[i] = 1)
U[i] (otherwise)
U[i] = H’[i] (if L[i] = 0)
U[i] (otherwise) …(6)
H[i] = H’[i] (if L[i] = 1)
U[i] (otherwise)
U[i] = H’[i] (if L[i] = 0)
U[i] (otherwise) …(6)
以上のようなパリティの付加の方法をとることにより、4bit/セルの場合でも他のパリティデータ量を減らすことが可能になる。
図24は、本実施の形態のNANDフラッシュメモリ2へのデータおよびパリティの格納位置の一例を示す図である。この例では、Tパリティ、H’パリティ、U’パリティ、Lパリティを、それぞれ4ページアドレスにまたがるパリティ格納エリアに分散して格納する。ここでは、Tパリティ、H’パリティ、U’パリティ、Lパリティをそれぞれ4等分して分散させているが、Tパリティ、H’パリティ、U’パリティ、Lパリティの各パリティ格納エリアへの分散させ方はこれに限らず、どのような分散のさせ方でも発明の効果は同じである。H’パリティは、他のパリティに比べパリティデータ量を減らすことができる。
図25は、本実施の形態のNANDフラッシュメモリ2への書き込み手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、同一ワードラインへ書き込むページH、U、Lの3ページのデータに基づいて仮想ページH’、U’の一時データを生成し、RAM11へ格納する(ステップS81)。なお、NANDフラッシュメモリ2へ書き込むのはページT、H、U、Lの4ページであるが、式(5)に示すように、仮想ページH’、U’の生成にページTは用いない。
プロセッサ12は、ECC回路14に対してページTに対するパリティの生成を指示する(ステップS82)。この指示により、ECC回路14は、RAM11に格納されているページTのデータに対してパリティを生成する。プロセッサ12は、ECC回路14に対してページLに対するパリティの生成を指示する(ステップS83)。この指示により、ECC回路14は、RAM11に格納されているページLのデータに対してパリティを生成する。
次に、プロセッサ12は、仮想ページH’の一時データに基づいてパリティを生成するようECC回路14へ指示する(ステップS84)。この指示により、ECC回路14は、RAM11に格納されているH’の一時データに対してパリティを生成する。
次に、プロセッサ12は、仮想ページU’の一時データに基づいてパリティを生成するようECC回路14へ指示する(ステップS85)。この指示により、ECC回路14は、RAM11に格納されているU’の一時データに対してパリティを生成する。
プロセッサ12は、仮想ページH’、U’およびページT、Lのパリティを4ページのパリティ格納アドレスに振り分け、ページT、H、U、Lのデータと振り分けたパリティとを結合したデータをRAM11上に生成する(ステップS86)。その後、プロセッサ12は、メモリインターフェイス15に対して、ページT、H、U、Lの4ページ分のデータ(パリティを含む)の書き込みを指示する(ステップS87)。
図26は、本実施の形態のNANDフラッシュメモリ2からの読み出し手順の一例を示すフローチャートである。まず、メモリコントローラ1のプロセッサ12は、メモリインターフェイス15に対して、読み出し対象のページデータのNANDメモリ2からの読み出しを指示する(ステップS91)。なお、読み出し対象データが格納された選択ワードラインに格納されたT、H、U、Lの4ページ分のデータおよびパリティを全て読み出すとする。ただし、ページT、Lのみを読み出す場合は、従来と同様にページT、Lのページデータ(Lパリティ、Tパリティを含む)をそれぞれ読み出して従来と同様にそれぞれ誤り訂正を行えばよい。また、ページHのみ、またはページUのみ、またはページHおよびUを読み出す場合には、ページH、U、Lの3ページを読み出す。
次に、プロセッサ12は、ページTのページデータおよびパリティをECC回路14に送信し、ページTのデータに対するエラー検出を指示する(ステップS92)。ECC回路14は、指示に基づいてページTのデータのエラー検出を行う。
プロセッサ12は、ECC回路14からエラー検出結果を取得し、エラーが存在するか否かを判定する(ステップS93)。エラーが存在したら(ステップS93 Yes)、ECC回路14に対して、ページTのデータのエラー訂正を指示する(ステップS94)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、プロセッサ12は、ページLのページデータおよびパリティをECC回路14に送信し、ページLのデータに対するエラー検出を指示する(ステップS95)。ECC回路14は、指示に基づいてページLのデータのエラー検出を行う。
プロセッサ12は、ECC回路14からエラー検出結果を取得し、エラーが存在するか否かを判定する(ステップS96)。エラーが存在したら(ステップS96 Yes)、ECC回路14に対して、ページLのデータのエラー訂正を指示する(ステップS97)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
プロセッサ12は、ページH、U、Lのデータに基づいて、H’、U’の一時データを生成し(ステップS98)、H’の一時データと読み出したH’パリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS99)。ECC回路14は、指示に基づいてH’の一時データのエラー検出を行う。
プロセッサ12は、H’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS100)。エラーが存在したら(ステップS100 Yes)、ECC回路14に対して、H’の一時データのエラー訂正を指示する(ステップS101)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、U’の一時データと読み出したU’パリティとをECC回路14に入力してエラー検出の実施を指示する(ステップS102)。ECC回路14は、指示に基づいてU’の一時データのエラー検出を行う。
プロセッサ12は、U’の一時データのエラー検出結果をECC回路14から取得し、エラーが存在するか否かを判定する(ステップS103)。エラーが存在したら(ステップS103 Yes)、ECC回路14に対して、U’の一時データのエラー訂正を指示する(ステップS104)。ECC回路14は、指示に基づいてエラービットのすべてについてデータ反転してエラー訂正を行う。
次に、プロセッサ12は、エラー訂正後(エラーのないビットは読み出しデータのまま)のH’、U’の一時データおよびページL、Tのデータに基づいて、ページT、H、U、Lの4ページ分のデータを復元する(ステップS105)。ただし、ページT、Lは、復元処理は必要ないため、エラー訂正後のデータそのままが復元データとなる。
ステップS93で、ページTのデータにエラーが存在しなければ(ステップS93 No)、ステップS94は実施せずに、ステップS95へ進む。また、ステップS96で、Lの一時データにエラーが存在しなければ(ステップS96 No)、ステップS97は実施せずに、ステップS98へ進む。また、ステップS100で、H’の一時データにエラーが存在しなければ(ステップS100 No)、ステップS101は実施せずに、ステップS102へ進む。また、ステップS103で、U’の一時データにエラーが存在しなければ(ステップS103 No)、ステップS104は実施せずに、ステップS105へ進む。
このように、本実施の形態では、1つのメモリセルに4bitのデータを格納する場合に、2ページ分のデータから、エラー発生確率の高い仮想ページとエラー発生確率の低い仮想ページとを生成し、それぞれの仮想ページにパリティを付加するようにした。このため、エラー発生確率の低い仮想ページのパリティデータ量を少なくすることができ、パリティ格納領域を効率的に使用することができる。このため、パリティデータ量を増やさずエラー訂正能力を向上させることができる。
なお、第1の実施の形態〜第4の実施の形態では、2ページ分のデータからエラー発生確率の多い仮想ページを生成するようにしたが、3ページ以上のデータから、エラー発生確率の多い仮想ページを生成するようにしてもよい。この場合、第1の実施の形態のようにエラー発生確率の多い仮想ページだけにパリティを付加してもよいし、第2の実施の形態のようにさらに元のページに低い訂正能力のパリティを付加してもよい。また、エラー発生確率の低い1以上の仮想ページも生成して、エラー発生確率の低い仮想ページに低い訂正能力のパリティを付加してもよい。
(第5の実施の形態)
以上の実施の形態では、メモリコントローラ1がECC回路14を備える半導体記憶システムの例を示したが、ECC回路を内蔵するNANDフラッシュメモリも存在する。
以上の実施の形態では、メモリコントローラ1がECC回路14を備える半導体記憶システムの例を示したが、ECC回路を内蔵するNANDフラッシュメモリも存在する。
図27は、ECC回路を内蔵しないNANDフラッシュメモリの一例を示す図である。図27に示すように、このNANDフラッシュメモリは、NAND Memory Cell Array21と、Sense Amp.(Amplifier)22と、Page Buffer23と、Row Decoder24と、Voltage Supply25と、Controller26と、NAND I/O(Input/Output) Interface27と、を備える。上述の第1の実施の形態〜第4の実施の形態では、このようにECC回路を備えないNANDフラッシュメモリを用いることを前提としている。なお、図27は、一般的な構成の一例を示すものであり、図27の構成に限定されない。各部の動作は、従来と同様であり、詳細な説明は省略する。
図28は、ECC回路を内蔵するNANDフラッシュメモリの一例を示す図である。図28の例では、図25の構成例にECC回路28およびRAM29を追加している。なお、図28は、一般的な構成の一例を示すものであり、ECC回路28を備えていれば図28の構成に限定されない。
図28に例示したNANDフラッシュメモリを用いる場合は、上述のNANDコントローラのECC回路14の動作をNANDフラッシュメモリ内のECC回路28が実施する。第1の実施の形態〜第4の実施の形態で述べた仮想ページの生成等に関するプロセッサ12の動作は、このNANDフラッシュメモリに接続するメモリコントローラが内蔵するプロセッサが行うようにしてもよいし、NANDフラッシュメモリ内のController26が行うようにしてもよい。
このように、第1の実施の形態〜第4の実施の形態は、様々な構成の半導体記憶システムに適用可能であり、半導体記憶システムに制約はない。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリコントローラ、2 NANDフラッシュメモリ、12 プロセッサ、14 ECC回路、15 メモリインターフェイス。
Claims (8)
- 各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリコントローラであって、
前記不揮発性半導体メモリの第1のメモリ領域に、第1ページ、第2ページ、第3ページの3ページ分のデータを書き込む場合に、前記第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御部と、
前記仮想ページに対する第1の誤り訂正符号を生成する符号化部と、
前記3ページ分のデータと前記第1の誤り訂正符号とを前記不揮発性半導体メモリへ書き込むインターフェイス部と
を備えることを特徴とするメモリコントローラ。 - 各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリコントローラであって、
前記しきい値分布ごとの前記3ビットのデータの割り付けがグレイ・コードであり、前記グレイ・コードの第1ページ、第2ページの境界数が2であり、第3ページの境界数が3であり、
前記メモリの第1のメモリ領域に、第1ページ、第2ページ、第3ページの3ページ分のデータを書き込む場合に、前記第3ページの値を参照し、前記第3ページが1である場合には、第1ページのビットを抽出し、前記第3ページが0である場合には、第2ページのビットを抽出して仮想ページを生成する制御部と、
前記仮想ページに対する第1の誤り訂正符号を生成する符号化部と、
前記3ページ分のデータと前記第1の誤り訂正符号とを前記不揮発性半導体メモリへ書き込むインターフェイス部と
を備えることを特徴とするメモリコントローラ。 - 前記不揮発性半導体メモリから読み出されたデータと誤り訂正符号とに基づいて誤り訂正処理を行う誤り訂正処理部をさらに備え、
前記インターフェイス部は、前記不揮発性半導体メモリから前記3ページ分のデータと前記第1の誤り訂正符号とを読み出し、
前記制御部は、前記読み出された3ページ分のデータから前記仮想ページを生成し、前記誤り訂正処理部は、前記第1の誤り訂正符号に基づいて、前記仮想ページに対する誤り訂正処理を実行することを特徴とする請求項1又は2に記載のメモリコントローラ。 - 前記符号化部は、前記第3ページに対する第2の誤り訂正符号を生成し、前記インターフェイス部は、前記第1の誤り訂正符号と前記第2の誤り訂正符号を、前記第1乃至3ページの冗長データとして分散して前記不揮発性半導体メモリに書き込むことを特徴とする請求項1乃至3に記載のメモリコントローラ。
- 前記不揮発性半導体メモリから読み出したデータに対して誤り訂正処理を行う誤り訂正処理部、をさらに備え、
前記制御部は、さらに、前記2以上のページの書き込みデータのうち前記仮想ページデータを除いたデータに対する誤り訂正符号を前記仮想ページ符号より訂正能力の低い少ビット誤り訂正符号として生成するよう前記符号化部へ指示し、前記少ビット誤り訂正符号を前記2以上のページの書き込みデータとともに前記不揮発性半導体メモリへ格納するよう前記インターフェイス部へ指示し、前記不揮発性半導体メモリからの読み出し時に、読み出した前記2以上のページの書き込みデータから前記仮想ページデータ以外を選択し、選択したデータと前記少ビット誤り訂正符号とに基づいて誤り訂正処理を行うよう前記誤り訂正処理部へ指示し、当該誤り訂正処理後のデータに基づいてページごとの書き込みデータを復元する、ことを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。 - 前記不揮発性半導体メモリから読み出したデータに対して誤り訂正処理を行う誤り訂正処理部、をさらに備え、
前記制御部は、さらに、前記2以上のページの書き込みデータに対するページごとの誤り訂正符号を前記仮想ページ符号より訂正能力の低いページ誤り訂正符号として生成するよう前記符号化部へ指示し、前記ページ誤り訂正符号を前記2以上のページの書き込みデータとともに前記不揮発性半導体メモリへ格納するよう前記インターフェイス部へ指示し、前記ページごとの書き込みデータの復元の後に、復元後の書き込みデータとページ誤り訂正符号とに基づいて誤り訂正処理を行うよう前記誤り訂正処理部へ指示する、ことを特徴とする請求項1乃至4のいずれか1項に記載のメモリコントローラ。 - 各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリと、
前記不揮発性半導体メモリの第1のメモリ領域に、第1ページ、第2ページ、第3ページの3ページ分のデータを書き込む場合に、前記第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御部と、
前記仮想ページに対する第1の誤り訂正符号を生成する符号化部と、
前記3ページ分のデータと前記第1の誤り訂正符号とを前記メモリへ書き込むインターフェイス部と
を備えることを特徴とする半導体記憶システム。 - 各しきい値分布に対して、3ビットのデータが割り当てられ、第1のビットが第1ページのデータを表現し、第2のビットが第2ページのデータを表現し、第3のビットが第3ページのデータを表現する3ビット/セルのメモリセルを有する不揮発性半導体メモリを制御するメモリ制御方法であって、
前記不揮発性半導体メモリの第1のメモリ領域に、第1ページ、第2ページ、第3ページの3ページ分のデータを書き込む場合に、前記第1のメモリ領域の各メモリセルに書き込まれるデータの第1のビット及び第2のビットから、隣接するしきい値分布への移動によりエラーとなるビットを抽出して仮想ページを生成する制御ステップと、
前記仮想ページに対する第1の誤り訂正符号を生成する符号化ステップと、
前記3ページ分のデータと前記第1の誤り訂正符号とを前記メモリへ書き込みステップと、
を含むことを特徴とするメモリ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011229926A JP2013089082A (ja) | 2011-10-19 | 2011-10-19 | メモリコントローラ、半導体記憶システムおよびメモリ制御方法 |
US13/594,116 US8826099B2 (en) | 2011-10-19 | 2012-08-24 | Memory controller, semiconductor memory system, and memory control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011229926A JP2013089082A (ja) | 2011-10-19 | 2011-10-19 | メモリコントローラ、半導体記憶システムおよびメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013089082A true JP2013089082A (ja) | 2013-05-13 |
Family
ID=48136982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011229926A Pending JP2013089082A (ja) | 2011-10-19 | 2011-10-19 | メモリコントローラ、半導体記憶システムおよびメモリ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8826099B2 (ja) |
JP (1) | JP2013089082A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9160371B2 (en) | 2013-09-05 | 2015-10-13 | Kabushiki Kaisha Toshiba | Memory controller, storage device and memory control method |
JP2016501413A (ja) * | 2012-12-07 | 2016-01-18 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | ソリッドステートドライブ内の下位ページデータ復旧を行うシステム及び方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9230684B2 (en) * | 2012-12-19 | 2016-01-05 | Kabushiki Kaisha Toshiba | Memory controller, storage device, and memory control method |
US10013203B2 (en) * | 2013-01-04 | 2018-07-03 | International Business Machines Corporation | Achieving storage compliance in a dispersed storage network |
US9311187B2 (en) * | 2013-01-04 | 2016-04-12 | Cleversafe, Inc. | Achieving storage compliance in a dispersed storage network |
CN104424127A (zh) | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN107193684B (zh) | 2013-08-23 | 2020-10-16 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104425019B (zh) | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104425018B (zh) | 2013-08-23 | 2019-07-23 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
TWI588843B (zh) * | 2013-08-23 | 2017-06-21 | 慧榮科技股份有限公司 | 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 |
JP6385077B2 (ja) | 2014-03-05 | 2018-09-05 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US9865338B2 (en) * | 2015-09-02 | 2018-01-09 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory by converting write data written to a page |
US10593398B2 (en) * | 2016-09-13 | 2020-03-17 | Toshiba Memory Corporation | Semiconductor storage device including a controller configured to execute a first write and a second write |
TWI685850B (zh) | 2018-08-22 | 2020-02-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
TW202331729A (zh) * | 2019-11-21 | 2023-08-01 | 日商鎧俠股份有限公司 | 記憶體系統 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4437519B2 (ja) | 2001-08-23 | 2010-03-24 | スパンション エルエルシー | 多値セルメモリ用のメモリコントローラ |
US7493457B2 (en) * | 2004-11-08 | 2009-02-17 | Sandisk Il. Ltd | States encoding in multi-bit flash cells for optimizing error rate |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US7526715B2 (en) | 2005-10-17 | 2009-04-28 | Ramot At Tel Aviv University Ltd. | Probabilistic error correction in multi-bit-per-cell flash memory |
US8020060B2 (en) | 2006-01-18 | 2011-09-13 | Sandisk Il Ltd | Method of arranging data in a multi-level cell memory device |
US8179719B1 (en) * | 2008-03-10 | 2012-05-15 | Marvell International Ltd. | Systems and methods for improving error distributions in multi-level cell memory systems |
JP4746658B2 (ja) | 2008-09-29 | 2011-08-10 | 株式会社東芝 | 半導体記憶システム |
US8634240B2 (en) * | 2009-10-28 | 2014-01-21 | SanDisk Technologies, Inc. | Non-volatile memory and method with accelerated post-write read to manage errors |
US8589766B2 (en) * | 2010-02-24 | 2013-11-19 | Apple Inc. | Codeword remapping schemes for non-volatile memories |
-
2011
- 2011-10-19 JP JP2011229926A patent/JP2013089082A/ja active Pending
-
2012
- 2012-08-24 US US13/594,116 patent/US8826099B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016501413A (ja) * | 2012-12-07 | 2016-01-18 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | ソリッドステートドライブ内の下位ページデータ復旧を行うシステム及び方法 |
US9952939B1 (en) | 2012-12-07 | 2018-04-24 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
US9160371B2 (en) | 2013-09-05 | 2015-10-13 | Kabushiki Kaisha Toshiba | Memory controller, storage device and memory control method |
Also Published As
Publication number | Publication date |
---|---|
US20130104002A1 (en) | 2013-04-25 |
US8826099B2 (en) | 2014-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013089082A (ja) | メモリコントローラ、半導体記憶システムおよびメモリ制御方法 | |
US9239758B2 (en) | Semiconductor storage device, method for controlling the same and control program | |
US9535620B2 (en) | Flash memory system and method controlling same | |
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9189322B2 (en) | Memory system | |
US9639419B2 (en) | Read voltage level estimating method, memory storage device and memory control circuit unit | |
KR102326659B1 (ko) | 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템 | |
US9424126B2 (en) | Memory controller | |
US9478298B2 (en) | Memory system and method of reading data thereof | |
JP2015018451A (ja) | メモリコントローラ、記憶装置およびメモリ制御方法 | |
US20160011970A1 (en) | Memory controller, storage device and memory control method | |
US9171629B1 (en) | Storage device, memory controller and memory control method | |
US10423484B2 (en) | Memory controller, memory system, and control method | |
US10133645B2 (en) | Data recovery in three dimensional non-volatile memory array after word line short | |
US20180074894A1 (en) | Memory system | |
JP2018163707A (ja) | 半導体記憶装置及びそのリード制御方法 | |
JP2008192240A (ja) | 半導体メモリと半導体メモリシステム | |
KR20160110774A (ko) | 메모리 장치 및 이를 포함하는 시스템 | |
US9098391B2 (en) | Memory system and method of operating memory system using reconstructed data | |
US10061691B2 (en) | Write data optimization methods for non-volatile semiconductor memory devices | |
US11444637B2 (en) | Self-adaptive low-density parity check hard decoder | |
TWI692767B (zh) | 具有錯誤更正功能的記憶體及相關記憶體系統 | |
US9104596B2 (en) | Memory system | |
US20150254131A1 (en) | Memory controller, storage device and memory control method | |
JP2013196673A (ja) | メモリシステム |