JP5658128B2 - Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム - Google Patents

Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5658128B2
JP5658128B2 JP2011256126A JP2011256126A JP5658128B2 JP 5658128 B2 JP5658128 B2 JP 5658128B2 JP 2011256126 A JP2011256126 A JP 2011256126A JP 2011256126 A JP2011256126 A JP 2011256126A JP 5658128 B2 JP5658128 B2 JP 5658128B2
Authority
JP
Japan
Prior art keywords
memory
layer
data
codeword
error
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.)
Expired - Fee Related
Application number
JP2011256126A
Other languages
English (en)
Other versions
JP2012118979A5 (ja
JP2012118979A (ja
Inventor
アシシュ・ジャグモハン
ミケーレ・マルティノ・フランセスキーニ
ルイス・エー・ラストラス‐モンタノ
マヤンク・シャルマ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012118979A publication Critical patent/JP2012118979A/ja
Publication of JP2012118979A5 publication Critical patent/JP2012118979A5/ja
Application granted granted Critical
Publication of JP5658128B2 publication Critical patent/JP5658128B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding

Description

本発明は、一般にコンピュータ・メモリに関し、更に具体的にはNAND(not-and)フラッシュ・メモリにおける確率論的多層エラー訂正に関する。
PCM(phasechange memory:相変化メモリ)およびフラッシュ・メモリは、耐久性が限られた(「寿命が限られた」とも言う)不揮発性メモリの一例である。かかるメモリは、多数の書き込みサイクル(PCMではリセット・サイクル、フラッシュ・メモリではプログラム/消去サイクル)を経た後にメモリ・セルが摩耗して信頼性高く情報を記憶することができなくなるという意味で、耐久性が限られている。
NANDフラッシュ・メモリは、消費者向けおよび企業向けの双方の用途で不揮発性記憶媒体としてますます用いられるようになっている。最新のNANDフラッシュ・メモリ・デバイスの1つの特徴は、強いデータ依存性およびデバイス依存性のエラー・モードを示すと共に、多くの場合セル間依存性を示すことである。周囲のセルのプログラミングおよび電荷レベルが、隣接セルで生じるエラー状況に対して直接的な影響を及ぼす場合がある。
また、NANDメモリでは、プログラミング段階の間に保持エラーのために引き起こされるランダム・エラーが生じやすい場合がある。典型的なエラー作用には、背景パターン依存(BPD:background pattern dependency)エラー、ビット・ライン・ディスターバンス(BLD:bit-line disturbance)・エラー、ページおよびプログラム・ディスターバンス(PGM:page and program disturbance)・エラー、および浮動ゲート結合(FGC:floating gate coupling)エラーが含まれる。これらのタイプのエラー作用は、場合によっては、メモリ使用に制約を課すことによって軽減することができる。例えば、1メモリ・ブロックのみを順次書き込み可能と規定することによって、これらのエラーのいくつかを排除または軽減することができる。しかしながら、かかる制約は、書き込み待ち時間の延長、摩耗の増大、および書き込み増幅等の望ましくない副作用をもたらす場合がある。更に、異なるプログラム・レベルでは同一でないエラー遷移確率を有することがある。
一実施形態は、メモリからデータを検索するためのシステムである。このシステムは、メモリと通信するデコーダを含む。デコーダは、メモリにおけるページ上に記憶されたコードワードを受信することを含む方法を実行するためのものであり、コードワードは、データおよびこのデータに応じて発生された第1の層のチェック・シンボルを含む。この方法は更に、コードワードが第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、これに応じて第2の層のチェック・シンボルを受信する。第2の層のチェック・シンボルは、データの受信に応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生させる。第2の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
別の実施形態は、メモリからデータを検索するための、コンピュータにより実施される方法である。この方法は、メモリにおけるページ上に記憶されたコードワードを受信することを含み、コードワードは、データおよびこのデータに応じて発生された第1の層のチェック・シンボルを含む。この方法は更に、コードワードが第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、これに応じて第2の層のチェック・シンボルを受信する。第2の層のチェック・シンボルは、データに応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生させる。第2の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
別の実施形態は、メモリからデータを検索するためのコンピュータ・プログラムである。タンジブルな記憶媒体がこのコンピュータ・プログラムを含み、この記憶媒体は処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行される命令を記憶する。この方法は、メモリにおけるページ上に記憶されたコードワードを受信することを含み、コードワードは、データおよびこのデータに応じて発生された第1の層のチェック・シンボルを含む。この方法は更に、コードワードが第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、この判定に応じて第2の層のチェック・シンボルを受信する。第2の層のチェック・シンボルは、データに応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生される。第2の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
更に別の実施形態は、メモリおよびエラー訂正キャッシュと通信するエンコーダを含むシステムである。エンコーダは、データおよびメモリにおけるページの書き込みアドレスを受信することを含む方法を実行するためのものである。メモリは、そのページおよび以前に書き込んだページを含む。データに応じて第1の層のチェック・シンボルを発生し、データおよび以前に書き込んだページの少なくとも1つの内容に応じて第2の層のチェック・シンボルを発生する。第1の層のチェック・シンボルおよびデータをコードワードとしてページに記憶する。データおよび第2の層のチェック・シンボルをエラー訂正キャッシュに記憶する。
本実施形態の技法によって、更に別の特徴および利点が実現される。本明細書において他の実施形態および態様が記載され、これらは特許請求する本発明の一部と見なされる。本発明をその利点および特徴と共により良く理解するために、以下の記載および図面を参照する。
本明細書の末尾における特許請求の範囲において、本発明と考えられる主題について特に指摘し明確に特許請求する。本発明の前述およびその他の特徴および利点は、添付図面と関連付けた以下の詳細な説明から明らかとなろう。
一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。 一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。 一実施形態によって実施可能であるNANDフラッシュ・メモリのブロック図を示す。 一実施形態に従った、NANDフラッシュ・メモリおよび第2の層の符号化モジュールのブロック図を示す。 一実施形態に従った、第2の層のエラー訂正コード訂正計算機構を示す。 一実施形態に従った、NANDフラッシュ・メモリおよび第2の層の復号モジュールのブロック図を示す。 一実施形態に従った、マルチ・レベル・セル(MLC)NANDフラッシュ・セルに4レベルの情報を記憶するために用いる閾値電圧を示す。 一実施形態に従った、MLC NANDフラッシュの2次元(2D)データ・パターンに対応した重みを含むルックアップ・テーブルを示す。 一実施形態に従った、第2の層のエラー訂正を用いた訂正エラーのためのプロセス・フローを示す。
一実施形態は、例えば時間履歴、周囲のビット・パターン、およびかかる周囲のビット・パターンと背景パターン依存(BPD)エラー、ビット・ライン・ディスターバンス(BLD)・エラー、ページおよびプログラム・ディスターバンス(PGM)・エラー、浮動ゲート結合(FGC)エラーとの間の関係に基づいて、異なるメモリ・セルについて異なるエラー重みを計算するエラー訂正技法を用いることにより、NANDフラッシュ・メモリの信頼性を向上させることを対象とする。
一実施形態が含む多層エラー訂正システムにおいては、後の層の復号プロセスは、所与のセルに記憶されたデータに対してメモリ・セル近隣領域の時間履歴および二次元(2D)データ/ビット・パターンが及ぼす影響についての統計的知識を利用する。従って、読み取りレベルおよび近隣ビット・パターンに基づいて、異なるメモリ・セル位置に異なるエラー重みを割り当てる。これらのエラー重みに取り入れられた概念とは、セル位置では多かれ少なかれ誘発エラーが生じる可能性があるというものであり、多かれ少なかれ、プログラムされた値および近隣セル位置に記憶された値に基づいて、ある一定のタイプの誘発エラーが生じる可能性があるというものである(この場合エラーのタイプはエラー発生前後のセルの値によって規定される)。
本明細書に記載する実施形態は、これまでの解決策よりも優れたいくつかの利点を提供する。第1に、実施形態は、一般的なエラー訂正コードを用いるのではなく特定のエラーの作用をモデル化し、これによって実施形態は信頼性を高める。第2に、実施形態はデバイス回路を変更する必要がないので、いかなるNANDフラッシュ・デバイスであっても実際に容易に用いることができる。更に、実施形態は、回路レベルの改良のみによって可能であるよりもいっそう信頼性を高めるために、回路レベルの改良と組み合わせて用いることができる。更に、時間履歴を用いてエラー重みを更新することによって、本明細書に記載する実施形態は特定のNANDデバイスの特徴に適合する。更に、実施形態は、従来のエラー・コードと共に用いて、従来のコードに障害が発生した場合にのみ呼び出すようにすることができる。これによって、読み取り待ち時間を過度に延長させずに実施形態を使用可能であることを保証する。
一実施形態では2層エラー訂正コード(ECC)を用いる。一実施形態において、第1の層のECCは、代数ECCを含むアルゴリズムを用いて発生させ、そのパリティ・ビット/シンボルはフラッシュ・メモリのページ・スペア・エリアに記憶されている。第2の層のECCを発生させ、そのパリティ・ビット/シンボルは部分的にフラッシュ・メモリのページ・スペア・エリアに記憶され、部分的に別の不揮発性メモリ領域(例えばフラッシュ・メモリ、ハード・ディスク)等の二次メモリ構造に記憶されている。一実施形態では、第2の層のECCパリティ・シンボルを計算するために、前の数ページにおいてプログラムされアクセスのためにキャッシュされたデータを用いる第2の層のECCエンコーダと共に、ログベース・ファイル構造のフラッシュ・メモリ・デバイスを用いる。
本明細書において用いる場合、「ビット」という言葉は、従来0および1のセットからの2文字の値を取る二進数のことである。本明細書において用いる場合、「シンボル」という言葉は、ビットよりも大きい数の値を取ることができるものを指す。すなわち、可能性としては3つ以上の有限の文字の値を取るもののことである。このため、1つのシンボルは、文字(0、1、2、3)から可能な4つの値を取り得る。
一実施形態においては、復号の際、フラッシュ・メモリから読み取ったデータを最初に待ち時間の短い従来の第1の層のECCデコーダに入力する。第1の層のECCデコーダによってこのデータを訂正可能である場合は、訂正済みのデータを出力する。第1の層のECCデコーダによってこのデータを訂正することができない場合、これを第2の層のECCモジュールに入力し、第2の層のECCモジュールが2Dブロック・ビット・パターンを読み取ってこれを用いていっそう洗練されたエラー訂正分析を実行する。一実施形態では、これは、各セル位置がエラーを有する可能性がどの程度であるか、およびそのセル位置について各エラー・タイプの可能性がどの程度であるかに基づいて、様々なセル位置についてエラー重みベクトルを計算することを伴う。エラー重み値という言葉は、エラーを含まない、所与のタイプのエラーの可能性を示す従来の確率値を示す。重みまたは条件確率値は、重みまたは確率モデルに従って割り当てられ、これはエラー訂正モジュールが検出したエラーに基づいて更新される。
図1は、一実施形態に従った、メモリにおいてデータを記憶および検索するためのシステムのブロック図を示す。図1に示したシステム100は、コンピュータ・プロセッサ102と、メモリ・セルを有するメモリ106と、メモリ106に記憶するデータをコンピュータ・プロセッサ102から受信するためのメモリ・コントローラ104と、を含む。一実施形態では、メモリ・セルはページ内に配列され、ページはブロック内に配列されている。このため、1ブロックは複数のページを含み、各ページは複数のメモリ・セルを含む。
一実施形態において、メモリ・コントローラ104は、コンピュータ・プロセッサ102と通信可能に結合され、コンピュータ・プロセッサ102から書き込み要求を受信する。書き込み要求は、メモリ106に書き込まれるデータと、データを書き込むメモリ106内の位置を識別するための論理アドレスと、を含む。メモリ・コントローラ104は、メモリ106内の物理アドレスにデータを記憶する。一実施形態では、メモリ・コントローラ104は、データを記憶または検索する場合、論理アドレスをメモリ106内の物理アドレスにマッピングする。メモリ106内のデータが修正されるたびに、所与の論理アドレスに対する物理アドレスを変更することができる。
システム100は、本明細書に記載する処理を実行するために利用可能なコンフィギュレーションの一例である。システム100は、単一のメモリ106、メモリ・コントローラ104、およびコンピュータ・プロセッサ102によって図示しているが、他の実施形態は、2つ以上のメモリ106、メモリ・コントローラ104、またはコンピュータ・プロセッサ102を有する他のシステムにおいても動作することは理解されよう。一実施形態では、メモリ106、メモリ・コントローラ104、およびコンピュータ・プロセッサ102は、同一のコンピュータ内に位置しない。例えば、メモリ106およびメモリ・コントローラ104は1つの物理位置(例えばメモリ・モジュール上)に位置することができ、コンピュータ・プロセッサ102は別の物理位置に位置する(例えばコンピュータ・プロセッサ102はネットワークを介してメモリ・コントローラ104にアクセスする)。更に、本明細書に記載した処理の部分は、1つ以上のメモリ106、メモリ・コントローラ104、およびコンピュータ・プロセッサ102にまたがる場合がある。
図2は、一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。図2に示すシステムは、メモリ・セルのブロック(各ブロックは複数のページから成る)を有するメモリ202(メモリ106等)と、書き込みデータを受信し、メモリ・セルに記憶するためのECC書き込みワードを発生するためのエンコーダ206と、メモリから読み取りワードを受信し読み取りデータを発生するためのデコーダ208と、エンコーダ206およびデコーダ208の双方によって用いるための記憶データの特徴を記憶する共有データ210と、を含む。一実施形態では、エンコーダ206および共有データ210は書き込みプロセス212によって用いられ、デコーダ208および共有データ210は読み取りプロセス204によって用いられる。
一実施形態において、エンコーダ206、デコーダ208、および共有データ210は、メモリ・コントローラ(メモリ・コントローラ104等)またはメモリ・モジュール上に位置している。代替的な実施形態では、エンコーダ206、デコーダ208、および共有データ210は、メモリ・デバイス上に位置している。共有データ210は、レジスタまたは、エンコーダ206およびデコーダ208の双方によってアクセス可能である他のいずれかの記憶位置に記憶することができる。
一実施形態において、メモリ202は、NANDフラッシュ・メモリ・デバイスまたは、限定ではないがPCMデバイス等の他の不揮発性メモリ・デバイスによって実施される。一実施形態では、メモリ202は、シングル・レベル・セルNANDフラッシュ・メモリ・デバイスによって実施される。別の実施形態では、メモリ202は、マルチ・レベル・セルNANDフラッシュ・メモリ・デバイスによって実施される。
図2に示したエンコーダ206に対する入力は、書き込まれるページのアドレス(本明細書では「書き込みアドレス」とも称する)と、ページに書き込まれるデータ(本明細書では「書き込みデータ」とも称する)と、を含む。図2に示すように、入力は、エンコーダ206上に位置する受信器204を介して受信される。一実施形態では、入力は、受信器(例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する)を介して受信される。受信器は、入力を受信するためのハードウェア、または入力が位置する記憶位置(例えばレジスタ)、あるいはその両方を含む様々な方法で実施することができる。
図2に示すデコーダ208に対する入力は、読み取られるメモリ位置(例えばページ)のアドレスを含む。一実施形態では、入力は、受信器214(例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する)を介して受信される。受信器は、入力を受信するためのハードウェア、または入力が位置する記憶位置(例えばレジスタ)、あるいはその両方を含む様々な方法で実施することができる。
図2に示したデコーダ208からの出力は読み取りデータを含む。一実施形態では、出力は、送信器(例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する)によって行われる。送信器(図示せず)は、出力を送信するためのハードウェア、および出力が記憶されている記憶位置またはレジスタを含む様々な方法で実施することができる。エンコーダ206およびデコーダ208は、本明細書に記載した処理を実行するために利用可能なコンピュータの一例である。
図3は、一実施形態に従った、図1のメモリ106または図2のメモリ202等のNANDフラッシュ・メモリのブロック図を示す。図3に示すNANDフラッシュ・メモリ300は、ワード・ライン306およびビット・ライン302に配列された複数のメモリ・セルを含む。一実施形態では、1ページは、1ワード・ライン306におけるメモリ・セル内の複数のビットから成る。マルチ・レベル・セル(MLC)・デバイスを含む実施形態では、各ページは1行分のセルからの所与のビットプレーンから成る。例えば、あるページは1行分のセルの最下位ビットを含むことができ、別のページは1行分のセルの最上位ビットを含むことができる。
一実施形態において、物理ブロック・アドレスと論理ブロック・アドレスとの間のマッピングは、メモリ・コントローラ104等のコントローラに維持されている。書き込み用の論理アドレスおよびデータが与えられると、コントローラは、データを書き込むための消去済み物理ページを選択し、論理−物理マッピングを記録する。一実施形態では、ログベースのファイル・システムを用いる。この場合、物理ページは、最後の論理ページが書き込まれたブロック内の次の消去済みページであり、ページは、例えばGSL(global select line:グローバル選択ライン)に対する近接に基づいて順序付けされる。
NANDフラッシュ・メモリは、多数のファクターに基づいてデータ依存性およびデバイス依存性のエラーを示す。これらのエラーには、例えば、BPDエラー、BLD、FGCエラー、PGMエラー、ならびに他の非均一エラーおよびエラー遷移が含まれる。エラーは、NANDフラッシュに記憶されたデータおよびメモリ・セル相互の位置に基づいて発生する。一実施形態では、例えば図3のセル・ブロック310等の他の近隣セルをプログラムした場合、図3のターゲットのメモリ・ページ308はFGCによって影響を受ける場合がある。同様に、例えば304のセルのようなビット・ライン302の1つに沿ったセルに書き込んだ場合、ターゲットのメモリ・ページ308はBLD/BPDによって影響を受ける可能性がある。更に、ページを再プログラムした場合または隣接メモリ・ページに書き込んだ場合、ターゲットのメモリ・ページはPGMエラーによって影響を受ける可能性がある。更に、NANDフラッシュ・メモリ300の劣化によるシンボルのランダム・スイッチング等のエラーが更に別のエラーを引き起こす場合があり、それらのタイプは非均一である傾向がある(すなわち、デバイスに応じて、あるタイプのエラーが他のタイプのエラーよりも発生の可能性が高いことがある)。これらのタイプのエラーは全て統計的にモデル化して、予測エラー検出および訂正を行うことができる。例えば、MLC NANDブロックにおいて非均一エラーが引き起こす「01」から「10」への誤ったビット遷移は、「10」から「01」よりも可能性がはるかに高いという知識を用いて、メモリ300のターゲット・ページにおけるエラーからいっそう正確に復旧することができる。
図4は、一実施形態に従った、2層ECCプロセスを用いてデータを記憶するためのフラッシュ・メモリ400を図示する。一実施形態では、フラッシュ・メモリ400はNANDフラッシュ・メモリであり、第1の層のECC符号化モジュール418および第2の層のECC符号化モジュール410は、図2に示したような書き込みプロセス212の間にエンコーダ206によって実施される。
図4に示したフラッシュ・メモリ400は、ターゲット・ページ408に記憶されたワード等の、データおよびECCチェック・ビット/チェック・シンボルを含む複数の書き込みワード(本明細書においてコードワードとも称する)を記憶している。図4に示すように、各ワードは、データ・バイト(すなわち書き込みデータ)を記憶するためのデータ・セグメント414と、データ・セグメント414内のデータに関連付けられたチェック・ビット/チェック・シンボルを記憶するための2つ以上のエラー訂正セグメント406と、を含む。一実施形態では、エラー訂正セグメント406は、第1の層のチェック・ビット/シンボルを記憶するための第1の層のエラー訂正セグメント402と、第2の層のチェック・ビット/シンボルを記憶するための第2の層のエラー訂正セグメント404と、を含む。フラッシュ・メモリ400に記憶される予定の書き込みデータ412は、第1の層のECC符号化モジュール418における処理のために(例えば第1の層のチェック・シンボルを発生させるために)受信され、次いで処理のために(例えば第2の層のチェック・シンボルを発生させるために)第2の層のECC符号化モジュール410に渡される。一実施形態では、書き込みデータ412は、図1のコンピュータ・プロセッサ102等のコンピュータ・プロセッサから、またはエンコーダ206における別の符号化モジュールから受信される。他の実施形態では、書き込みデータ412は、第1の層のECC符号化モジュール418および第2の層のECC符号化モジュール410の双方によって受信され、これらが、時間的に重複することはあるが別個に処理を行い、データ・セグメント414に記憶される書き込みデータ412に関連付けられたチェック・シンボルを発生させる。
一実施形態において、第1の層のECC符号化モジュール418が書き込みデータ412からECCチェック・シンボルを発生させる際には、リード・ソロモン符号または、限定ではないが、繰り返しコード、パリティ・シンボル、チェック・サム、および暗号ハッシュ等の技法を用いる他のECCコードを用いる。
一実施形態では、第2の層のECC符号化モジュール410は、低密度パリティ・チェック(LDPC)コードを用いて、書き込みデータ412および以前に書き込んだデータ・ページ(例えば書き込みワードまたはコードワードを含む)から、ECCチェック・シンボルを発生させる。一実施形態では、LDPCコードはフラッシュ・エラー・モードの統計的モデルに基づいたものであり、以前に書き込んでエラー訂正キャッシュ416にキャッシュされているデータを用いて第2の層のECCチェック・シンボルを発生させる。これについては以下で更に詳細に説明する。
いったん第1の層のECC符号化モジュール418および第2の層のECC符号化モジュール410が処理を完了して、ECCチェック・シンボルを発生させると、書き込みデータならびに第1および第2の層のECCチェック・シンボルをターゲット・ページ408に記憶する。書き込みデータ412(本明細書では「データ」とも称する)をフラッシュ・メモリ400のデータ・セグメント414に記憶し、第1の層のECCチェック・シンボルを第1の層のエラー訂正セグメント402に記憶し、第2の層のECCチェック・シンボルを第2の層のエラー訂正セグメント404に記憶する。代替的な実施形態では、第2の層のECCチェック・シンボルを別個のフラッシュ・メモリに記憶する。他の実施形態では、第2の層のECCチェック・シンボルを、第2の層のエラー訂正セグメント404および別個のフラッシュ・メモリ間で分割する。また、書き込みデータ412および第2の層のECCエラー訂正シンボル404のコピーをエラー訂正キャッシュ416に記憶する。別の実施形態では、エラー訂正キャッシュは更に、第1の層のエラー訂正セグメント402のチェック・シンボルも記憶する。一実施形態において、エラー訂正キャッシュ416は、DRAM(dynamic random access memory)またはeDRAM(embedded DRAM)またはSRAM(staticrandom access memory)または他の比較的短い読み取り待ち時間を有する揮発性メモリ等の揮発性メモリに書き込まれる。別の実施形態では、エラー訂正キャッシュ416はPCM等の不揮発性メモリに書き込まれる。
一実施形態において、エラー訂正キャシュ416は、「C」ページの履歴データを記憶するように構成されている。ここで、Cは、データ412について第2の層のECCコードを計算するために用いられる履歴データの以前に書き込んだページ数である。一実施形態では、これらのページは、現在のページと同じブロック内にプログラムしたこれまでのCページである。Cはプログラムすることができ、いかなるサイズとすることも可能であるが、Cが増大するにつれて、第2の層のECCコードの有効性およびエラー訂正キャッシュ416に対する記憶装置容量の要求の双方が増大する。一実施形態では、Cは、メモリ・ブロックをプログラムした回数、メモリ・ブロックのシンボル・エラー・レート、またはメモリの統計的エラー・モデルに基づいてプログラムすることができる。更に別の実施形態では、エラー訂正キャッシュ416は、当技術分野において既知であるような、迅速なデータの記憶および検索が可能ないずれかの記憶デバイスである。
図5は、一実施形態に従った、第2の層のECCチェック・シンボルを発生させるためのブロック図を示す。一実施形態において、第2の層のECC発生は、図4の第2の層のECC符号化モジュール410において実行される。第2の層のECCにおけるチェック・シンボルの数(またはECCの「レート」)は、上述した様々なタイプのエラー(例えばBPD、BLD、FGC、PGM、非均一エラー・タイプ等)の統計的モデルに基づいて発生させる。一実施形態では、第2の層のECC符号化モジュール410は、チェック・シンボルi510等のチェックを発生させる。一実施形態では、図1のメモリ106等のメモリに記憶するために、時刻「i」で書き込みデータを受信する。この書き込みデータと、現在書き込んでいるページと同じブロック内に書き込まれた最後のCページの第2の層のECCチェック・シンボル・コンポーネントと、を用いることによって、チェック・シンボルi510(すなわちメモリに記憶するための書き込みデータのため)を時刻iにおいて計算する。このコンポーネントは、現在のページについて受信した書き込みデータと同様に、図4のエラー訂正キャッシュ416に記憶されている。一実施形態では、Cは、エラー訂正キャッシュ416をシンボル単位のページ・サイズで除算したシンボル単位のサイズとして計算される。一実施形態では、チェック・シンボルi510は、アプリオリに選択した低密度パリティ・チェック(LDPC)・マトリクスを用いて計算される。パリティ・チェック・マトリクスにより、書き込みデータ・シンボルおよび第2の層のECCチェック・シンボルの線形結合としてシンドローム・シンボル502を計算することができる。更に、パリティ・チェック・マトリクスでは、書き込みデータ・ページ・シンボルと、現在のページおよびエラー訂正キャッシュ416に記憶された同一ブロックに属する以前のCページにのみ属するチェック・シンボルとの線形結合として、シンドローム・シンボルi502を計算するようになっている。現在のページについてのチェック・シンボル510は、シンドローム・シンボル502が全てゼロであることを保証するように計算される。書き込みデータおよび第2の層のECCチェック・シンボルはメモリに記憶される。LDPCマトリクスは当業者に既知の技法を用いて生成される。
第2の層のフラッシュ認識ECC発生について、図4の第2の層のECC符号化モジュール410で実行されるものとして説明しているが、第2の層のフラッシュ認識ECC発生は、コンピュータ・プロセッサ102上のソフトウェアとして、またはメモリ106、メモリ・コントローラ104、エンコーダ206、またはスタンドアロン・モジュールのいずれかのハードウェアまたはソフトウェア・モジュールとして実行可能であることは理解されよう。
図6は、図1のメモリ106等のメモリ600からデータを検索する実施形態を示す。要求側からメモリ・アクセス要求622を受信する。一実施形態では、メモリ・アクセス要求622(これはメモリ600内のデータ・ページ608に対応するメモリ・アドレスを含む)は、図2のデコーダ208等のデコーダにおいて受信される。メモリ600からデータ・ページ608(本明細書では「コードワード」とも称する)を検索する。図6に示すように、データ・ページ608は、データ・セグメント620、第1の層のECCチェック・シンボル602、および第2の層のECCチェック・シンボル604を含む。第1の層のECCモジュール610はデータ・ページ608をチェックして、データがエラーを有するか否か、および、かかるエラーが第1の層のECCデコーダによって訂正可能であるか否かを判定する。データ・ページがエラーを有しない場合、またはエラーが第1の層のECCチェック・シンボルによって訂正可能である場合、これは要求側に戻される。一実施形態においては、読み取りデータとして要求側に戻す前に、訂正済みデータ612に対して更に復号を実行する(例えばシンボル拡張、伸張等)。
第1の層のECC復号モジュール610は、データ・ページ608が第1の層のECC復号モジュール610によって訂正可能でないエラーを含むと判定すると、ページ608を含むブロック624からのデータを、他のチェック・シンボル記憶装置606に記憶されたいずれかの追加の第2の層のチェック・シンボルと共に、更に処理するために第2の層のECC復号モジュール614に渡す。第2の層のECC復号モジュール614は、第2の層のエラー・チェック・シンボル604および記憶装置606に記憶された第2の層のECCチェック・シンボルならびにエラー確率モデル616を用いて、データを訂正する。これについては以下で更に詳細に説明する。エラー確率モデルはメタデータであり、揮発性DRAMまたは不揮発性メモリまたはそれらの組み合わせに記憶されている。いったんデータが訂正されると、エラー確率モデル616は、訂正されたエラーに基づいて更新される。第2の層のエラー訂正が必要となるたびに、更新されたエラー確率モデル616が用いられて同様に更新される。いったんデータが訂正されたら、訂正済みデータ618は要求側に戻される。
一実施形態において、第1の層のECCチェック・シンボル602および第2の層のECCチェック・シンボル604が異なる位置に記憶されている場合は、メモリ・アクセス要求622に応答してデータ・セグメント620および第1の層のECCチェック・シンボル602のみが検索される。この実施形態では、第2の層のECCチェック・シンボル604および記憶装置606が検索されるのは、第2の層のECC復号モジュール641を用いてページを復号する場合だけである。
図7は、一実施形態における4マルチ・レベル・セル(4MLC)NANDフラッシュ・セルに4レベルの情報を記憶するために用いる閾値電圧を示す。4MLCは、フラッシュ・メモリの1メモリ・セルにおいて4つの離散データ・シンボルを含む。図7は4MLC電圧閾値を示すが、他の実施形態ではMLCの他の電圧閾値および他のビット・レベルを使用可能であることは理解されよう。閾値電圧の低い方から順に、4つのレベルをL0、L1、L2、およびL3と記す。
図8は、ルックアップ・テーブル・セットの形態で要約されたエラー確率モデル616の一実施形態を示す。統計的エラー確率モデル616は、セル上に記憶された特定のプログラムされたレベルがエラーによって別の特定レベルに変化する可能性がどの程度であるかに関する情報を含む。かかるエラー・イベントの可能性は一般に、セルの近隣領域の2次元(2D)データ・パターン(これはFGCタイプのエラーに影響を及ぼす)、同一ページおよび他のページ上の他のセルのプログラミング履歴(これはBPD、BLD、およびPGMタイプのエラーに影響を及ぼす)、ならびにデバイス依存性のレベル遷移挙動等のファクターに依存する。一実施形態では、統計的エラー確率モデル616は条件確率値(「エラー重み」とも記す)の集合を含み、それらの各々は、上述のファクターの1つ以上を条件としてある記憶値が別の値に変化する可能性を要約する。別の実施形態では、統計的エラー・モデルは1つ以上のアポステリオリ条件確率を含み、それらの各々は、セルから値が読み取られて上述のファクターの1つ以上が与えられた場合に、セルに記憶された元の値が読み取ったレベルとは異なる所与のレベルであった可能性を要約する。
図8の実施形態では、各ルックアップ・テーブルはアポステリオリのエラー重み(すなわち条件確率)を記憶しており、これは、所与のセルから読み取った値v1がエラーの際に真の記憶値v2から生じたものである可能性を、v1、v2、および上述したファクターの1つの関数として要約する。エラー重みベクトルw、x、およびyの各々は16の成分を有し、ここで成分
Figure 0005658128

は、読み取り値がv1であることを条件として、更に各テーブルがファクターの値に基づくことを条件として、真の記憶値がv2であった確率を表す。一実施形態では、重みテーブル1 802における第1のエラー重みベクトルを割り当てるには、MLCレベルL3にある各ページ位置の8近隣(neighbor)数をカウントし、ページ位置におけるデータ値を計算に入れる。このため、例えば、w00は16成分ベクトルであり、成分
Figure 0005658128

は、読み取り値がv1であることを条件とし、更に8近隣値のどれもL3でなかったという事実を条件として、真の記憶値がv2であった確率を表す。一実施形態では、重みテーブル2 804に示したような第2のエラー重みベクトルは、現在のセルと同じビット・ライン上のプログラムしたセル値の分布に基づいて、更に現在のデータ値に基づいて計算される。重みテーブル3 806における第3のエラー・ベクトルは、ページ・プログラム数および現在のデータ値に基づいて計算される。これらのテーブルは、第2の層のECC復号モジュール614による各復号の後に更新され、これによって重みモデルに時間履歴を組み込む。これによって、重みモデルは、他のデバイスとは著しく異なることがある使用中の特定のNANDフラッシュ・デバイスに適合することができる。一実施形態では、各第2の層のECC復号において観察されるエラー頻度をモデルのエラー重みと線形結合して、新しいモデル・エラー重みを形成する。当技術分野において周知の他の技法を用いて、第2の層のECCデコーダの各使用時に観察される経験的な頻度を組み込むことによって、モデルを更新することができる。別の実施形態では、第1の層のECCデコーダの各使用時に観察されるエラーを用いてモデルを更新する。
代替的な実施形態では、図8に示した重みテーブルのサブセットを組み合わせ、もっと高い次元の重みモデルを用いて、これらの条件の連結作用をモデル化する。別の実施形態では、ページに対するプログラム/消去サイクル数の作用、ページ上で以前に認められたエラーの数、近隣ページ上で認められたエラーの数およびタイプ、ならびにページがプログラムされた順序が、重みテーブルに更に組み込まれる。更に別の実施形態では、セルごとでなくベクトルごとに重みを計算する。更に別の実施形態では、記憶されたメタデータは、ブロック・ページがプログラムされた順序を含み、この順序に基づいて重みの計算を行う。このため、例えば、重みテーブル1 802におけるエラー重みベクトルは、所与のセル位置の近隣領域においてこの所与のセル位置の後にプログラムされたセル位置の数に依存する。代替的な実施形態では、多数のページに対して同時に復号を実行する。一実施形態では、図6の第2の層のECC復号モジュール614は動的プログラミングを用いる。このため、例えばビタビ・アルゴリズムを用いて多数のページを同時に復号することができる。
図9は、一実施形態におけるデータのエラー訂正のためのプロセス・フローを示す。一実施形態では、図9のエラー訂正は、図6の第2の層のECC復号モジュール614において実行される。ブロック902において、第1の層のECC復号モジュール610によって訂正可能でなかったエラーを含むデータを受信する。ブロック904において、データが存在するメモリ・ブロックに対応した2D読み取りブロック・データに基づいて、エラー確率モデル(エラー確率モデル616および図8のエラー確率モデル等)を検索する。ブロック906において、セルについての確率ベクトルを計算するために、セルの8セル近隣領域に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのi番目の成分は、セルの真の記憶値がレベルiである確率である。例示的な実施形態では、テーブル802における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。ブロック908において、セルについての確率ベクトルを計算するために、各ページがプログラムした回数に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのi番目の成分は、セルの真の記憶値がレベルiである確率である。例示的な実施形態では、図8のエラー重みテーブル3 806における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。ブロック910において、セルについての確率ベクトルを計算するために、ビット・ライン・パターン(すなわち、所与のセルと同じビット・ライン上の他のセルから読み取った値)に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのi番目の成分は、セルの真の記憶値がレベルiである確率である。例示的な実施形態では、テーブル804における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。
ブロック912において、ブロック906、908、および910で計算したエラー重みベクトルを組み合わせて、各セルごとに1つのエラー重みベクトルを形成する。このベクトルのi番目の成分は、ブロック内のそのセルおよび他のセルから読み取った値を条件として、セルの真の記憶値がレベルiである確率である。一実施形態では、条件付き独立性の仮定(conditional independenceassumption)を用いて、各セルごとに集合エラー重みベクトル(すなわち、所与のセルについての真の値が、個々のエラー重みベクトルによって与えられる、所与のセルについての真の値がiである確率を適切に正規化した積である確率)を生成する。ブロック914において、ソフト・エラー訂正デコーダは、ブロック912で計算した集合重み付け訂正ベクトルを、エラーのあるデータに対して用いる。一実施形態において、デコーダはLDPCデコーダであり、和積または最大積等の当技術分野において周知のアルゴリズムにより、メッセージ伝達アルゴリズムを用いてデータを復号する。ブロック916において、訂正済み読み取りページ・データが生成され、要求側に戻される。
技術的な作用および利点には、エラー訂正を計算する場合にフレッシュ・メモリ・エラー・モードの統計的モデルを考慮することによるエラー訂正の信頼性向上が含まれる。別の利点は、いっそう多くのエラーを正確に訂正することでフラッシュ・メモリの信頼性を高めることによってデバイスの寿命を改善することである。更に別の利点は、本発明を実施するためにハードウェア・デバイスの変更が必要ないことである。また別の利点は、BPD、BLD、FGC、PGM等に基づいたエラーの統計的モデルに基づいて訂正を行うことができる機能によって、書き込みの制約(例えば非順次プログラミング、部分的なページ・プログラミングの禁止)を軽減可能であることである。
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本開示を限定することは意図していない。本明細書において用いたように、単数形「1つの」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはそれら全ての存在を規定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本開示の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲および思想から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本開示の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
1つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について以下に記載する。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
本明細書に示したフロー図は一例に過ぎない。本発明の思想から逸脱することなく記載した図またはステップ(または動作)に対する多くの変形が可能である。例えば、ステップは異なる順序で実行することができ、またはステップを追加、削除、もしくは変更することも可能である。これらの全ての変形は、特許請求する本発明の一部と見なされる。
本発明の好適な実施形態について記載したが、当業者は、現在および今後の双方で、以下の特許請求の範囲内に該当する様々な改良および向上を実施可能であることは理解されよう。これらの特許請求の範囲は、最初に記載した本発明についての適正な保護を維持するように解釈されるものである。
100 システム
102 CPU
104 メモリ・コントローラ
106、202 メモリ
206 エンコーダ
208 デコーダ
214 受信器
412 第2のECC符号化モジュール
416 エラー訂正キャッシュ
418 第1のECC符号化モジュール
610 第1の層のECC復号モジュール
614 第2の層のECC復号モジュール
616 エラー・モジュール

Claims (19)

  1. メモリからデータを検索するためのシステムであって、
    メモリと通信するデコーダであって、
    前記メモリにおけるページ上に記憶されたコードワードを受信することであって、前記コードワードが、データおよび前記データに応じて発生された第1の層のチェック・シンボルを含む、前記受信することと、
    前記コードワードが、前記第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することと、
    前記判定に応じて、
    第2の層のチェック・シンボルを受信することであって、前記第2の層のチェック・シンボルが、前記データに応じて、更に前記コードワードを含む前記ページよりも前に書き込まれた前記メモリにおける他のページの内容に応じて発生される、前記受信することと、
    前記第2の層のチェック・シンボルに応じて前記コードワードを訂正することと、
    前記訂正したコードワードを出力することと
    を含む方法を実行するための前記デコーダ
    を備えている、前記システム。
  2. 前記コードワードを訂正することが更に統計的エラー・モデルに応じて行われる、請求項1に記載のシステム。
  3. 前記統計的エラー・モデルが前記判定に応じて変更される、請求項2に記載のシステム。
  4. 前記コードワードを訂正することが更に各セルごとの集合エラー重みベクトルに応じて行われ、前記ベクトルが、前記セルについてのビット・ライン・ディスターバンス・エラー重みベクトル、前記セルについての浮動ゲート結合エラー重みベクトル、および前記セルについての多数のページ・プログラムから導出されたエラー重みベクトルの少なくとも1つから計算される、請求項1に記載のシステム。
  5. 前記セルについて前記エラー重みベクトルを計算することが更に、前記セルの指定された近隣領域内のセルの内容に応じて行われる、請求項4に記載のシステム。
  6. 前記統計的エラー・モデルが、前記コードワードおよび前記第2の層のチェック・シンボルを用いて前記コードワードを訂正するためにメッセージ伝達アルゴリズムによって用いられる、請求項2に記載のシステム。
  7. 前記メモリがマルチ・レベル・セル(MLC)NANDフラッシュ・メモリであり、前記コードワードの前記訂正が更に、2次元データ・パターンに対応したエラー重みを含むルックアップ・テーブル・セットに応じて行われる、請求項1に記載のシステム。
  8. 前記方法が、
    前記コードワードが、前記第1の層のチェック・シンボルを用いて訂正することができないエラーを含まないと判定し、これに応じて、前記コードワードおよび前記第1の層のチェック・シンボルに応じて前記コードワードを訂正すること
    を更に含む、請求項1に記載のシステム。
  9. 前記第2の層のチェック・シンボルの少なくとも1つのサブセットが第2のメモリに記憶されている、請求項1に記載のシステム。
  10. メモリからデータを検索するための、コンピュータにより実施される方法であって、コンピュータが、
    前記メモリにおけるページ上に記憶されたコードワードを受信するステップであって、前記コードワードが、データおよび前記データに応じて発生された第1の層のチェック・シンボルを含む、前記受信するステップと、
    前記コードワードが、前記第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定するステップと、
    前記判定に応じて、
    第2の層のチェック・シンボルを受信するステップであって、前記第2の層のチェック・シンボルが、前記データに応じて、更に前記コードワードを含む前記ページよりも前に書き込まれた前記メモリにおける他のページの内容に応じて発生される、当該受信するステップと、
    前記第2の層のチェック・シンボルに応じて前記コードワードを訂正するステップと、
    前記訂正したコードワードを出力するステップ
    実行することを含む、前記方法。
  11. 前記メモリがマルチ・レベル・セル(MLC)NANDフラッシュ・メモリであり、前記コードワードの前記訂正が更に、2次元データ・パターンに対応したエラー重みを含むルックアップ・テーブル・セットに応じて行われる、請求項10に記載の方法。
  12. 前記コンピュータが、
    前記コードワードが前記第1の層のチェック・シンボルを用いて訂正することができないエラーを含まないと判定し、これに応じて、前記コードワードおよび前記第1の層のチェック・シンボルに応じて前記コードワードを訂正するステップを実行することをさらに含む、請求項10に記載の方法。
  13. メモリからデータを検索するためのコンピュータ・プログラムであって、コンピュータに、請求項10〜12のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
  14. システムであって、
    メモリおよびエラー訂正キャッシュと通信するエンコーダであって、
    データおよび前記メモリにおけるページの書き込みアドレスを受信することであって、前記メモリが前記ページおよび以前に書き込んだページを含む、当該受信することと、
    データに応じて第1の層のチェック・シンボルを発生することと、
    前記データおよび前記以前に書き込んだページの少なくとも1つの内容に応じて第2の層のチェック・シンボルを発生することと、
    前記第1の層のチェック・シンボルおよび前記データをコードワードとして前記ページに記憶することと、
    前記データおよび前記第2の層のチェック・シンボルを前記エラー訂正キャッシュに記憶することと
    を含む方法を実行するための前記エンコーダを備えている前記システム。
  15. 前記メモリおよび前記エラー訂正キャッシュと通信するデコーダであって、
    前記コードワードおよび前記第2の層のチェック・シンボルを受信することと、
    前記コードワードが、前記第1の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することと、
    前記第2の層のチェック・シンボルに応じて前記コードワードを訂正することと
    を含む方法を実行するための前記デコーダを更に備えている、請求項14に記載のシステム。
  16. 前記第2の層のチェック・シンボルを発生させることが更に低密度パリティ・チェック(LDPC)・コードに応じて行われる、請求項14に記載のシステム。
  17. 前記第2の層のチェック・シンボルを発生させることが、プログラム可能な数の以前に書き込んだページの内容に応じて行われる、請求項14に記載のシステム。
  18. 前記メモリがNANDフラッシュ・メモリであり、前記第2の層のチェック・シンボルを発生させることが、現在書き込んでいるページと同じブロック内のプログラム可能な数の以前に書き込んだページに応じて行われ、これらの以前に書き込んだページからのデータが前記エラー訂正キャッシュに記憶されている、請求項14に記載のシステム。
  19. 以前に書き込んだページの使用数がメモリ・ブロックをプログラムした回数、前記メモリ・ブロックのシンボル・エラー・レート、および前記メモリの統計的エラー・モデルの少なくとも1つに応じて変更される、請求項14に記載のシステム。
JP2011256126A 2010-12-03 2011-11-24 Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム Expired - Fee Related JP5658128B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/960,004 US8464137B2 (en) 2010-12-03 2010-12-03 Probabilistic multi-tier error correction in not-and (NAND) flash memory
US12/960004 2010-12-03

Publications (3)

Publication Number Publication Date
JP2012118979A JP2012118979A (ja) 2012-06-21
JP2012118979A5 JP2012118979A5 (ja) 2014-08-14
JP5658128B2 true JP5658128B2 (ja) 2015-01-21

Family

ID=46163424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011256126A Expired - Fee Related JP5658128B2 (ja) 2010-12-03 2011-11-24 Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム

Country Status (2)

Country Link
US (1) US8464137B2 (ja)
JP (1) JP5658128B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8625339B2 (en) * 2011-04-11 2014-01-07 Grandis, Inc. Multi-cell per memory-bit circuit and method
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR101882853B1 (ko) * 2011-12-21 2018-08-27 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
GB201215339D0 (en) * 2012-08-29 2012-10-10 Ibm Level placement in solid-state memory
US8990668B2 (en) * 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
WO2015016880A1 (en) 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Global error correction
US20160139988A1 (en) * 2013-07-31 2016-05-19 Hewlett-Packard Development Company, L.P. Memory unit
US9160371B2 (en) 2013-09-05 2015-10-13 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
SG10201406377VA (en) * 2013-10-07 2015-05-28 Agency Science Tech & Res Normalization factor adaptation for ldpc decoding for hard disk drive systems
US9389937B2 (en) * 2013-11-19 2016-07-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing faulty memory pages in a computing system
CN103778030B (zh) * 2013-12-30 2017-09-22 上海晨思电子科技有限公司 日志子系统写入方法、错误追踪方法及处理器
US9417945B2 (en) 2014-03-05 2016-08-16 International Business Machines Corporation Error checking and correction for NAND flash devices
GB2529670A (en) * 2014-08-28 2016-03-02 Ibm Storage system
GB2529669B8 (en) 2014-08-28 2017-03-15 Ibm Storage system
US10199106B2 (en) 2014-09-30 2019-02-05 Carnegie Mellon University Reducing errors caused by inter-cell interference in a memory device
US9594629B2 (en) 2015-06-03 2017-03-14 King Abdulaziz City For Science And Technology Data error correction from cached error correction information
US9710329B2 (en) * 2015-09-30 2017-07-18 Sandisk Technologies Llc Error correction based on historical bit error data
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
KR20180086816A (ko) * 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
CN113168882B (zh) * 2018-11-29 2023-06-20 华为技术有限公司 一种编码方法、译码方法以及存储控制器
US10853167B2 (en) 2019-01-28 2020-12-01 Winbond Electronics Corp. Memory apparatus having hierarchical error correction code layer
US11528038B2 (en) 2020-11-06 2022-12-13 Western Digital Technologies, Inc. Content aware decoding using shared data statistics
US11481271B2 (en) * 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867429A (en) 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
US5953255A (en) 1997-12-24 1999-09-14 Aplus Flash Technology, Inc. Low voltage, low current hot-hole injection erase and hot-electron programmable flash memory with enhanced endurance
US6204159B1 (en) 1999-07-09 2001-03-20 Advanced Micro Devices, Inc. Method of forming select gate to improve reliability and performance for NAND type flash memory devices
US6469931B1 (en) 2001-01-04 2002-10-22 M-Systems Flash Disk Pioneers Ltd. Method for increasing information content in a computer memory
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
KR100607992B1 (ko) 2004-07-09 2006-08-02 삼성전자주식회사 낸드 플래시 메모리의 동작 상태의 감시를 통해 시스템을부팅하기 위한 방법 및 시스템
US7061804B2 (en) 2004-11-18 2006-06-13 Qualcomm Incorporated Robust and high-speed memory access with adaptive interface timing
US20060282610A1 (en) 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
US7362615B2 (en) 2005-12-27 2008-04-22 Sandisk Corporation Methods for active boosting to minimize capacitive coupling effect between adjacent gates of flash memory devices
US7436703B2 (en) 2005-12-27 2008-10-14 Sandisk Corporation Active boosting to minimize capacitive coupling effect between adjacent gates of flash memory devices
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7453723B2 (en) 2006-03-01 2008-11-18 Micron Technology, Inc. Memory with weighted multi-page read
US7388781B2 (en) 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7971130B2 (en) 2006-03-31 2011-06-28 Marvell International Ltd. Multi-level signal memory with LDPC and interleaving
JP5142478B2 (ja) 2006-04-13 2013-02-13 株式会社東芝 半導体記憶装置
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
US7352628B2 (en) 2006-06-19 2008-04-01 Sandisk Corporation Systems for programming differently sized margins and sensing with compensations at select states for improved read operations in a non-volatile memory
US7376014B2 (en) 2006-08-18 2008-05-20 Mammen Thomas Highly reliable NAND flash memory using five side enclosed floating gate storage elements
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
JP5177991B2 (ja) * 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US7904788B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US8051358B2 (en) * 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8245101B2 (en) * 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
KR101662621B1 (ko) * 2008-07-22 2016-10-05 엘에스아이 코포레이션 플래시 메모리 디바이스 프로그래밍 방법 및 시스템
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
JP4660632B2 (ja) * 2010-07-29 2011-03-30 株式会社東芝 半導体記憶装置

Also Published As

Publication number Publication date
JP2012118979A (ja) 2012-06-21
US20120144272A1 (en) 2012-06-07
US8464137B2 (en) 2013-06-11

Similar Documents

Publication Publication Date Title
JP5658128B2 (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
US11256564B2 (en) Media quality aware ECC decoding method selection to reduce data access latency
US10475518B2 (en) Memory system, memory system control method, and program
US8429468B2 (en) System and method to correct data errors using a stored count of bit values
US7765426B2 (en) Emerging bad block detection
US9768808B2 (en) Method for modifying device-specific variable error correction settings
US8321757B2 (en) Method and apparatus for error correction
KR101614556B1 (ko) 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기
CN107135006B (zh) 错误校正电路和错误校正方法
KR101343262B1 (ko) 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치
US10230401B2 (en) Memory controller for a non-volatile memory, memory system and method
CN106257594B (zh) 读取干扰收回策略
US20160299812A1 (en) Device-Specific Variable Error Correction
US20160299844A1 (en) Mapping Logical Groups of Data to Physical Locations In Memory
CN101937373A (zh) 比特错误阈值和重映射存储装置
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
US20160283319A1 (en) Data storage device and encoding method thereof
US10157099B2 (en) Data storage device and data maintenance method thereof
KR20130027138A (ko) 에러 정정 방법 및 이를 이용하는 메모리 장치
CN110532195B (zh) 存储器系统的工作负荷分簇及执行其的方法
JP7177338B2 (ja) メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
TWI550627B (zh) 儲存裝置及其操作方法
US9239751B1 (en) Compressing data from multiple reads for error control management in memory systems
KR102509549B1 (ko) 읽기 데이터 및 산포 정보를 수신하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
CN117409845A (zh) 分组管理方法、存储器存储装置及存储器控制器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140610

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140610

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140610

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140610

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140613

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140806

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141113

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20141113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees