(57)【特許請求の範囲】
【請求項１】
複数のページにわたる冗長情報を計算する処理であって、前記複数のページの各ページが複数のデータアイテムを含んでいる当該処理と、
前記複数のページを、メモリに記憶するために送信する処理と、
前記冗長情報を、前記複数のページがメモリに首尾良く書き込まれるまでのみ保持し、次いで、前記冗長情報を破棄する処理と、
前記複数のページの全ページをメモリに書き込むのに欠陥が生じたときに、前記複数のページの所与のページを前記メモリに書き込むのに失敗したことの決定を受けて、前記冗長情報及び前記複数のページの残りのページに基づいて前記所与のページを回復する処理と、
を含む方法。
【請求項２】
前記冗長情報を保持する処理は、欠陥が前記複数のページの少なくとも１つのページを破壊することになる全ての書き込み動作が首尾良く完了した後にのみ、前記冗長情報を破棄することを含む、請求項１に記載の方法。
【請求項３】
前記複数のページを記憶のために送信し、そして前記冗長情報を保持する処理には、前記複数のページ及び冗長情報の両方をメモリの同じメモリブロックに記憶することを含む、請求項１に記載の方法。
【請求項４】
前記複数のページを記憶のために送信し、そして前記冗長情報を保持する処理には、前記複数のページ及び冗長情報の両方を、前記メモリによりサポートされる予め定義されたページプログラミング順序に基づいて前記メモリに記憶することを含む、請求項１に記載の方法。
【請求項５】
前記複数のページを送信する処理は、前記複数のページを前記メモリの第１のメモリブロックに記憶することを含み、更に、前記冗長情報を保持する処理は、前記第１のメモリブロックとは異なる前記メモリの第２のメモリブロックに冗長情報記憶することを含む、請求項１に記載の方法。
【請求項６】
前記第２のメモリブロックは、冗長情報の記憶専用であり、前記複数のページの任意のページを記憶することはない、請求項５に記載の方法。
【請求項７】
前記複数のページを記憶のために送信し、そして前記冗長情報を保持する処理には、
前記複数のページの第１ページを、前記メモリの第１ワードラインの第１データ部分に書き込み、次いで、前記冗長情報を第２ワードラインの第１データ部分に書き込み、
前記第１ページ及び前記冗長情報を書き込んだ後に、前記複数のページの第２ページを、前記第１ワードラインの第２データ部分に書き込み、
前記第２ページを首尾良く書き込むと、前記冗長情報を破棄する、
ことを含む請求項１に記載の方法。
【請求項８】
前記冗長情報を保持する処理は、前記メモリの外部の記憶位置に前記冗長情報を記憶することを含む、請求項１に記載の方法。
【請求項９】
メモリと通信するためのインターフェイスと、
各ページが複数のデータアイテムを含んでいる複数のページにわたる冗長情報を計算し、前記複数のページをメモリに記憶するために送信し、前記冗長情報を、前記複数のページがメモリに首尾良く書き込まれるまでの間のみ保持し、次いで、前記冗長情報を破棄し、そして前記複数のページの所与のページを前記メモリに書き込むのに欠陥が生じたことの決定を受けて、前記複数のページの前記所与のページを、前記冗長情報及び前記複数のページの残りのページに基づいて回復するように構成されたプロセッサと、
を備えた装置。
【請求項１０】
前記冗長情報を保持するため、前記プロセッサは、欠陥が前記複数のページの少なくとも１つのページを破壊することになる全ての書き込み動作が首尾良く完了した後にのみ、前記冗長情報を破棄するように更に構成された、請求項９に記載の装置。
【請求項１１】
記憶用に前記複数のページを送信するため、前記プロセッサは、前記複数のページ及び冗長情報の両方をメモリの同じメモリブロックに記憶するように更に構成された、請求項９に記載の装置。
【請求項１２】
記憶用に前記複数のページを送信するため、前記プロセッサは、前記複数のページ及び冗長情報の両方を、前記メモリによりサポートされる予め定義されたページプログラミング順序に基づいて前記メモリに記憶するように更に構成された、請求項９に記載の装置。
【請求項１３】
記憶用に前記複数のページを送信するため、前記プロセッサは、前記複数のページを前記メモリの第１のメモリブロックに記憶し、そして前記第１のメモリブロックとは異なる前記メモリの第２のメモリブロックに冗長情報記憶するように更に構成された、請求項９に記載の装置。
【請求項１４】
前記第２のメモリブロックは、冗長情報の記憶専用であり、前記複数のページの任意のページを記憶することはない、請求項１３に記載の装置。
【請求項１５】
前記複数のページを記憶のために送信し、そして前記冗長情報を保持することは、前記プロセッサによって、
前記複数のページの第１ページを、前記メモリの第１ワードラインの第１データ部分に書き込み、次いで、前記冗長情報を第２ワードラインの第１データ部分に書き込み、
前記第１ページ及び前記冗長情報を書き込んだ後に、前記複数のページの第２ぺージを、前記第１ワードラインの第２データ部分に書き込み、
前記第２ページを首尾良く書き込むと、前記冗長情報を破棄する、
ことにより行われる、請求項９に記載の装置。
【請求項１６】
前記プロセッサは、前記メモリの外部の記憶位置に前記冗長情報を記憶するように構成された、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、データ記憶装置に関するもので、より特定すれば、メモリ装置おける書き込み欠陥からデータを保護する方法及びシステムに関する。
【背景技術】
【０００２】
フラッシュメモリ等の多くの形式のメモリ装置は、データを記憶するためアナログメモリセルのアレイを使用している。各アナログメモリセルは、セルに記憶されるデータを表わす電荷又は電圧のような或るレベルの所与の物理量を保持する。この物理量のレベルは、記憶値又はアナログ値とも称される。例えば、フラッシュメモリでは、各アナログメモリセルが或る量の電荷を保持する。考えられるアナログ値の範囲は、典型的に、１つ以上のデータビット値を表わすプログラミング状態に各々対応する領域に分割される。望ましいビット（１つ又は複数）に対応する公称アナログ値を書き込むことにより、アナログメモリセルにデータが書き込まれる。
【０００３】
シングルレベルセル（ＳＬＣ）装置と一般的に称されるあるメモリ装置は、単一ビットの情報を各メモリセルに記憶し、即ち各メモリセルは、２つの考えられるメモリ状態をとるようにプログラムすることができる。マルチレベルセル（ＭＬＣ）装置ともしばしば称される高密度装置は、メモリセル当たり２つ以上のビットを記憶し、即ち３つ以上の考えられるメモリ状態を取るようにプログラムすることができる。
【０００４】
フラッシュメモリ装置は、例えば、参考としてここに援用するベッツ氏等が著作した“Introduction to Flash memory”、Proceedings of the IEEE、第９１巻、第４号、４月、２００３年、第４８９−５０２頁に掲載されている。マルチレベルフラッシュセル及び装置は、例えば、参考としてここに援用するエイタン氏等が著作した“Multilevel Flash Cells and their Trade-offs”、Proceedings of the 1996 IEEE International Electron Devices Meeting (IEDM)、ニューヨーク州ニューヨーク、第１６９−１７２頁に掲載されている。この論文は、共通接地、ＤＩＮＯＲ、ＡＮＤ、ＮＯＲ及びＮＡＮＤセルのような多数の種類のマルチレベルフラッシュセルを比較している内容である。
【０００５】
エイタン氏等は、ニトリドリードオンリメモリ（ＮＲＯＭ）と称される別の形式のアナログメモリセルを、参考としてここに援用する“Can NROM, a 2-bit, Trapping Storage NVM Cell, Give a Real Challenge to Floating Gate Cells?”、Proceedings of the 1999 International Conference on Solid State Devices and Materials (SSDM)、日本、東京、１９９９年９月２１−２４日、第５２２−５２４頁に掲載している。また、ＮＲＯＭセルは、参考としてここに援用する、マーヤン氏等が著作した“A 512 Mb NROM Flash Data Storage Memory with 8 MB/s Data Rate”、Proceedings of the 2002 IEEE International Solid-State Circuits Conference (ISSCC 2002)、カリフォルニア州サンフランシスコ、２００２年２月３−７日、第１００−１０１頁にも掲載されている。他の規範的形式のアナログメモリセルは、フローティングゲート（ＦＧ）セル、強誘電性ＲＡＭ（ＦＲＡＭ）セル、磁気ＲＡＭ（ＭＲＡＭ）セル、電荷トラップフラッシュ（ＣＴＦ）及び相変化ＲＡＭ（ＰＲＡＭ、相変化メモリ−ＰＣＭとも称される）セルである。ＦＲＡＭ、ＭＲＡＭ、及びＰＲＡＭセルは、参考としてここに援用する、例えば、キム及びコー氏が著作した“Future Memory Technology including Emerging New Memories”、Proceedings of the 24th International Conference on Microelectronics (MIEL)、ニス、セルビア及びモンテネグロ、２００４年５月１６−１９日、第１巻、第３７７−３８４頁に掲載されている。
【０００６】
アナログメモリセルをプログラミング及び消去するための種々の方法が知られている。あるメモリ装置は、メモリセルのグループにパルスシーケンスを印加して、そのシーケンス中にプログラムされた値を検証する繰り返しプログラミング及び検証（Ｐ＆Ｖ）プロセスを使用するものである。
【０００７】
メモリ装置のデータを欠陥に対して保護するための種々の技術が知られている。例えば、参考としてここに援用する米国特許第５，５３３，１９０号は、書き込みＩ／Ｏ動作の実行を中断するリセットまたは停電状態に続いてディスクアレイシステムにおけるデータとパリティとの間の一貫性を保証するための方法を開示している。この方法は、ドライブのアクティビティを検査して、中断状態のために未完了となっている書き込みＩ／Ｏ動作を識別し、その未完了の動作及び未完了の動作に関連したアレイ冗長グループを識別するのに必要な情報を不揮発性メモリへロギングし、そしてディスクアレイサブシステムの初期化または電源の回復中に不揮発性メモリのログエントリをチェックする、という段階を備えている。ログにおいて識別される各未完了動作に対して、この方法は、更に、関連冗長グループ内に記憶されるデータの対応部分のビットごとの排他的ＯＲを遂行してそれと一貫するパリティを計算し、そしてその計算されたパリティを、関連冗長性グループ内のパリティ記憶エリアに書き込む、という段階も備えている。欠陥のあるディスクドライブメンバーとのアレイ動作に対して（即ち、質低下モードにおいて）、この方法は、未完了の書き込みＩ／Ｏ動作が新たなデータ及びパリティをマップするところの記憶エリアを識別するのに必要な情報や、未完了の書き込みＩ／Ｏ動作が新たなデータ及びパリティをマップするところの記憶エリアにセーブされたある形式の古いデータ及びパリティ情報もロギングする。システムリセットまたは電源の回復に続いて、関連する冗長グループごとに一貫したパリティが決定される。
【０００８】
参考としてここに援用する米国特許第７，４８７，３９４号は、ＲＡＩＤ−６システムのようなディスクアレイシステムのパリティ更新動作の状態に関連したデータを動作の遂行中に記憶し、動作が中断された場合に、その記憶したデータを使用して回復を開始する方法を開示している。記憶されるデータは、パリティ更新動作の状態を表わす状態指示子と、パリティ更新動作中にキャプチャーされるスナップショット値（例えば、新しいデータと古いデータとの間の差を表わすデルタ値）とを含む。
【発明の概要】
【０００９】
ここに述べる実施形態は、データアイテムのセットにわたる冗長情報を計算することを含む方法を提供する。データアイテムは、メモリに記憶するために送られる。冗長情報は、データアイテムがメモリに首尾良く書き込まれるまで保持されるにすぎない。次いで、冗長情報は破棄される。データアイテムは、メモリにデータアイテムを書き込む際に欠陥があったとき冗長情報を使用して回復される。
【００１０】
ある実施形態では、冗長情報を保持することは、欠陥によりセット内のデータアイテムが破壊される全ての書き込み動作が首尾良く完了したときだけ冗長情報を破棄することを含む。他の実施形態では、冗長情報を保持することは、データアイテムのセットを保持する全てのワードラインに全てのページが首尾よくプログラムされた後にのみ冗長情報を破棄することを含む。
【００１１】
ある実施形態では、記憶のためにデータアイテムを送りそして冗長情報を保持することは、データアイテム及び冗長情報の両方をメモリの同じメモリブロックに記憶することを含む。他の実施形態では、記憶のためにデータアイテムを送りそして冗長情報を保持することは、データアイテム及び冗長情報の両方を、メモリによりサポートされる規定のページプログラミング順序に基づいてメモリに記憶することを含む。更に別の実施形態では、冗長情報を保持することは、メモリの外部の記憶位置に冗長情報を記憶することを含む。
【００１２】
ある実施形態では、データアイテムを送ることは、メモリの第１メモリブロックにデータアイテムを記憶することを含み、そして冗長情報を保持することは、メモリの第１のメモリブロックとは異なる第２のメモリブロックに冗長情報を記憶することを含む。他の実施形態では、第２のメモリブロックは、冗長情報の記憶専用であり、データアイテムを記憶するものではない。
【００１３】
ある実施形態では、記憶のためにデータアイテムを送りそして冗長情報を保持することは、データアイテムの第１のサブセットをメモリの各ワードラインの第１のデータ部分に書き込み、次いで、第１サブセットの冗長情報を後続ワードラインの第１のデータ部分に書き込むことを含む。第１サブセット及び冗長情報を書き込んだ後に、データアイテムの第２サブセットを各ワードライン及び後続ワードラインの第２のデータ部分に書き込む。冗長情報は、第２サブセットを首尾良く書き込んだときに破棄される。
【００１４】
更に、ここに述べる実施形態によれば、インターフェイス及びプロセッサを備えた装置が提供される。インターフェイスは、メモリと通信する。プロセッサは、データアイテムのセットにわたる冗長情報を計算し、データアイテムを、メモリに記憶するために送り、データアイテムがメモリに首尾良く書き込まれるまでの間のみ冗長情報を保持し、次いで、冗長情報を破棄し、そしてデータアイテムのメモリへの書き込みに欠陥が生じたときに冗長情報を使用してデータアイテムを回復するように構成される。
【００１５】
更に、ここに述べる実施形態によれば、メモリ及びプロセッサを備えた装置が提供される。プロセッサは、データアイテムのセットにわたる冗長情報を計算し、データアイテムをメモリに記憶するために送り、データアイテムがメモリに首尾良く書き込まれるまでの間のみ冗長情報を保持し、次いで、冗長情報を破棄し、そしてデータアイテムのメモリへの書き込みに欠陥が生じたときに冗長情報を使用してデータアイテムを回復するように構成される。
【００１６】
本発明は、添付図面を参照した実施形態の以下の詳細な説明から完全に理解されよう。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態によるメモリシステムを概略的に示すブロック図である。
【図２】本発明の一実施形態により書き込み欠陥に対して保護するようにデータを記憶する方法を例示するフローチャートである。
【図３】本発明の一実施形態により不揮発性メモリの書き込み欠陥から失われたデータアイテムを再構成する方法を例示するフローチャートである。
【発明を実施するための形態】
【００１８】
概略
フラッシュメモリのような不揮発性メモリでは、各メモリセルを、記憶されるビット値を表わす各アナログ値にプログラムすることにより、データが典型的にアナログメモリセルに記憶される。各ビット値は、ある領域のアナログ値により表される各プログラミングレベルまたはプログラミング状態に対応する。典型的なフラッシュメモリは、複数のメモリブロックに分割され、各ブロックは複数のメモリページを含む。データは、ページ単位で書き込み及び読み取りされるが、メモリブロック単位で消去される（物理的ブロックまたは消去ブロックとも称される）。
【００１９】
各メモリブロックは、メモリセルのアレイを構成し、メモリセルの行は、ワードライン（ＷＬ）と称され、そしてメモリセルの列は、ビットライン（ＢＬ）と称される。単一のプログラミング動作は、ワードラインに信号パルスを付与することによりワードライン行内のメモリセルにデータアイテムを書き込み、信号パルスは、ワードラインに接続されたメモリセルの１つ以上に記憶されるアナログ電圧値を変更するように構成される。
【００２０】
各ワードラインは、別々にプログラムされるセルの２つ以上のグループに分割される。個別の書き込みサイクルでプログラムされるワードラインのメモリセルの２つの異なるグループは、通常、互いにインターリーブされ、そして偶数セル及び奇数セルとして表される。物理的に、偶数及び奇数セルは、ワードライン上の交互のメモリセルである。奇数及び偶数ページをプログラミングすることは、書き込みサイクル中に１つおきのビットライン（例えば、ワードライン上の１つおきのメモリセル）をイネーブルすることにより遂行される。或いはまた、オールビットライン（ＡＢＬ）とも称される構成においてワードラインの全てのメモリセルを一緒にプログラムしてもよい。あるメモリ装置では、ワードラインのメモリセルの各グループ（例えば、奇数セル、偶数セルまたは全セル）が、各メモリセルに複数のビットを記憶することにより、２つ以上のページを記憶する。
【００２１】
書き込みサイクル中に書き込み欠陥（例えば、停電）が生じた場合には、そのとき書き込まれていたデータが通常は失われる。しかしながら、更に、メモリに以前に書き込まれたデータも失われることが考えられる。例えば、現在書き込まれるデータと同じワードラインに以前に書き込まれたデータが書き込み欠陥の結果として失われることがある。
【００２２】
例えば、ワードラインの奇数ページに以前に書き込まれたデータは、同じワードラインの偶数ページへのデータの書き込み中に書き込みエラーがあると、失われまたは破壊されることがある。別の例では、あるページに書き込まれたデータは、メモリセルの同じグループへ後続ページを書き込む間に欠陥があると、失われることがある。
【００２３】
多くのデータ記憶アプリケーションでは、書き込み欠陥の結果として現在書き込まれるデータを失うのは当然である。しかしながら、以前に書き込まれたデータを失うことは、典型的に許されず、回避されねばならない。
【００２４】
以下に述べる本発明の実施形態は、書き込み欠陥の場合にデータの損失を最小にするように不揮発性メモリにデータをプログラミングするための改良された方法を提供する。ある実施形態では、メモリコントローラは、データアイテムのセット、典型的に、メモリのページをメモリに記憶する。メモリコントローラは、データアイテムのセットにわたり、冗長情報、例えば、パリティを計算する。メモリコントローラは、データアイテムをメモリに記憶し、そしてデータアイテムのセットが首尾良く記憶されるまで冗長情報を（メモリまたはどこかに）保持する。データのセットを首尾良く記憶すると、メモリコントローラは、冗長情報を破棄する。データアイテムのセットを記憶する間に書き込み欠陥（例えば、停電）が生じた場合には、メモリコントローラは、冗長情報を使用して、失われたデータを再構成する。
【００２５】
冗長情報を長期記憶のために保持する既知の機構とは異なり、ここに開示する技術は、データアイテムのセットがメモリに首尾良く記憶されるまで、冗長情報を一時的に保持するだけである。データアイテムのセットが書き込み欠陥なく記憶されるや否や、冗長情報が破棄される。従って、ここに開示する技術は、オーバーヘッド及びメモリ容量に関して非常に効率的である。
【００２６】
換言すれば、ここに開示する技術は、データをプログラミングした後にいつでも生じ得るメモリ欠陥に対して保護する（この場合には、冗長情報をデータと共に永久的に記憶する必要がある）ことを目的としておらず、プログラミング動作中に欠陥（例えば、停電）に対して保護することを目的とする。従って、ここに開示する技術は、冗長情報を一時的に保持するだけであり、従って、メモリスペース及び管理オーバーヘッドを保存するものである。
【００２７】
ある実施形態では、データアイテム及び冗長情報がメモリの種々のページに書き込まれる順序は、以前のデータが失われるメカニズムを考えることにより予め定義される。例えば、現在書き込まれているデータと同じワードラインにある他のページへのデータに書き込み欠陥によりおそらくダメージが及ぶメモリについて考える。このような場合、メモリコントローラは、データアイテム及び冗長情報をメモリページへマッピングすることで、所与の時間に、首尾良く記憶されたデータアイテム及び冗長情報を使用して、失われたデータを再構成できることを保証する予め定義されたプログラミングスキームを使用する。このようなプログラミング機構の幾つかの例を以下に述べる。
【００２８】
ここに開示するスキームは、データ保護を提供すると同時に、僅かな付加的な数の書き込み動作しか受けないようにする。更に、ここに開示する技術の幾つかは、同じメモリブロックにプログラムされるデータアイテムに対してデータ保護を与えることができる。換言すれば、ここに開示するプログラミングスキームは、メモリコントローラが保護のために複数のブロックにわたってデータアイテムを分散することを要求しない。
【００２９】
システムの説明
図１は、本発明の一実施形態によるメモリシステム２０を概略的に示すブロック図である。このシステム２０は、コンピューティング装置、セルラーホン及びスマートホン、他の通信ターミナル、取り外し可能なメモリモジュール（「ＵＳＢフラッシュドライブ」とも称される）、ソリッドステートドライブ（ＳＳＤ）、デジタルカメラ、音楽及び他のメディアプレーヤ、及び／又はデータが記憶され検索される他のシステムまたは装置のような種々のホストシステム及び装置に使用することができる。
【００３０】
システム２０は、メモリセルアレイ２８にデータを記憶するメモリ装置２４を備えている。メモリセルアレイは、複数のメモリブロック３４を含む。各メモリブロックは、アナログメモリセル３２を含む。本特許出願に関して、「アナログメモリセル」という語は、電圧または電荷のような物理的パラメータの連続的なアナログ値を保持するメモリセルを表わすのに使用される。アレイ２８は、任意の種類のアナログセル、例えば、ＮＡＮＤ、ＮＯＲ及び電荷トラップフラッシュ（ＣＴＦ）セル、相変化ＲＡＭ（ＰＲＡＭ、相変化メモリ−ＰＣＭとも称される）、ニトリドリードオンリメモリ（ＮＲＯＭ）、強誘電ＲＡＭ（ＦＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）、及び／又はダイナミックＲＡＭ（ＤＲＡＭ）セルを含む。メモリセルは、適当な二次元又は三次元接続スキームで配置される。
【００３１】
セルに記憶される電荷レベル、及び／又はセルに書き込まれ及びセルから読み出されるアナログ値または電流は、ここでは、総体的に、アナログ値、アナログ記憶値、又は記憶値と称される。システム２０は、プログラミングレベルとも称される各プログラミング状態をとるようにセルをプログラミングすることによりアナログメモリセルにデータを記憶する。プログラミング状態は、考えられる状態の限定セットから選択され、そして各プログラミング状態は、ある公称記憶値に対応する。
【００３２】
シングルレベルセル（ＳＬＣ）は、セル当たり１ビットの密度での記憶に対応し、マルチレベルセル（ＭＬＣ）は、セル当たり２ビット以上の密度での記憶を指し、そしてトリプルレベルセル（ＴＬＣ）は、セル当たり３ビットの密度でのデータ記憶を指す。ＴＬＣは、８つの考えられるアナログ記憶値の１つをセルに書き込むことにより８つの考えられるプログラミング状態の１つをとるようにプログラムすることができる。
【００３３】
メモリ装置２４は、読み取り／書き込み（Ｒ／Ｗ）ユニット３６を備え、これは、メモリ装置に記憶するためのデータをアナログ記憶値へ変換して、それをメモリセル３２に書き込む。別の実施形態では、Ｒ／Ｗユニットは、変換を行わずに、電圧サンプルが与えられ、即ちセルに記憶するための記憶値が与えられる。アレイ２８からデータを読み出すときに、Ｒ／Ｗユニット３６は、メモリセル３２の記憶値を、１ビット以上の分解能を有するデジタルサンプルへ変換する。データは、典型的に、ページと称されるグループにおいてメモリセルに書き込まれ及びそこから読み取られる。ある実施形態では、Ｒ／Ｗ回路は、１つ以上の負の消去パルスをセルへ付与することにより、セル３２のグループを消去することができる。消去は、典型的に、全メモリブロックで遂行される。
【００３４】
メモリ装置２４からのデータの記憶及び検索は、メモリコントローラ４０により遂行される。このメモリコントローラは、メモリ装置２４と通信するためのインターフェイス４４と、種々のメモリ管理機能を実行するプロセッサ４８とを備えている。特に、プロセッサ４８は、以下に詳細に述べるように、書き込み欠陥に対してデータを保護するプログラミングスキームを実行する。
【００３５】
メモリコントローラ４０は、メモリ装置に記憶するためのデータを受け容れそしてメモリ装置から検索したデータを出力するためにホスト５２と通信する。メモリコントローラ４０及び特にプロセッサ４８は、ハードウェアで実施される。或いはまた、メモリコントローラは、適当なソフトウェア、或いはハードウェア及びソフトウェア要素の組み合わせを実行するマイクロプロセッサを含んでもよい。
【００３６】
図１の構成は、単にコンセプトを明瞭にするために示された規範的なシステム構成である。他の適当なメモリシステム構成も使用できる。本発明の原理を理解する上で必要のない要素、例えば、種々のインターフェイス、アドレス回路、タイミング・シーケンシング回路、及びデバッグ回路は、明瞭化のために図から省略されている。
【００３７】
図１の例は、単一のメモリ装置２４を示しているが、システム２０は、メモリコントローラ４０によりコントロールされる複数のメモリ装置を備えてもよい。図１に示す規範的なシステム構成では、メモリ装置２４及びメモリコントローラ４０は、２つの個別の集積回路（ＩＣ）として実施される。しかしながら、別の実施形態では、メモリ装置及びメモリコントローラは、単一のマルチチップパッケージ（ＭＣＰ）またはシステムオンチップ（ＳｏＣ）において個別の半導体ダイに一体化されて、内部バスにより相互接続されてもよい。更に、それとは別に、メモリコントローラ回路の幾つかまたは全部が、メモリアレイが配置された同じダイに存在してもよい。更に、それとは別に、メモリコントローラ４０の機能の幾つかまたは全部がソフトウェアで実施されて、ホストシステムのプロセッサまたは他の要素で実行されてもよい。ある実施形態では、ホスト４４及びメモリコントローラ４０は、同じダイに製造されてもよいし、または同じ装置パッケージの個別のダイに製造されてもよい。
【００３８】
ある実施形態において、メモリコントローラ４０は、ここに述べる機能を実行するためにソフトウェアでプログラムされた汎用プロセッサを含む。そのソフトウェアは、例えば、ネットワークを経て、電子的な形態でプロセッサにダウンロードされてもよいし、或いは、それとは別に又はそれに加えて、磁気、光学または電子メモリのような非一時的な有形媒体に設けられ及び／又は記憶されてもよい。
【００３９】
アレイ２８の規範的な構成において、メモリセル３２は、複数の行及び列に配置され、各メモリセルは、フローティングゲートトランジスタを含む。各ワードラインにおけるトランジスタのゲートは、ワードラインバスによって一緒に接続され、そして各列におけるトランジスタのソースは、ビットラインバスによって一緒に接続される。メモリアレイは、典型的に、複数のページに分割され、即ちプログラムされて同時に読み取られるメモリセルのグループに分割される。ページは、時々、セクタに細分化される。ある実施形態では、各ページは、アレイの行全体を含む。別の実施形態では、各行（ワードライン）は、２つ以上のページに分割される。例えば、ある装置では、上述したように、各行が２つのページに分割され、その一方は、奇数セルを含み、そしてその他方は、偶数セルを含む。
【００４０】
典型的に、メモリコントローラ４０は、ページ単位でデータをプログラムするが、メモリブロック３４全体を消去する。典型的に、必ずしもそうでないが、メモリブロックは、ほぼ１０6個のメモリセルであるが、ページは、ほぼ１０3−１０4個のメモリセルである。
【００４１】
書き込み欠陥及び潜在的なデータ損失シナリオ
書き込み欠陥中に不揮発性メモリにデータを書き込むと、現在書き込まれているデータは当然失われるが、以前に書き込まれたデータは失われるかもしれないが検索可能でなければならない。以下に述べるプログラミングスキームは、ワードラインにデータをプログラミングする順序を利用して、以前に書き込まれたデーが書き込み欠陥中に失われても、冗長データから検索できるように保証する。したがって、冗長データは、データプログラミング中に形成されて、フラッシュ又は他の適当な記憶媒体の予め定義された位置に書き込まれる。メモリコントローラがデータの書き込みが成功したことを確認すると、冗長情報は、次いで破棄される。
【００４２】
規範的なシナリオでは、データは、ＳＬＣプログラミングを使用して、奇数及び偶数セルに仕切られた同じワードラインへ書き込まれる。第１の以前の書き込みサイクルからのデータが、例えば偶数セルに記憶され、そして第２の現在書き込みサイクル中のデータが、書き込み欠陥発生時に、同じワードライン上の奇数セルに書き込まれるときは、第１の以前の書き込みサイクルからの偶数セルのデータが破壊されることがある（遡及データ破壊）。
【００４３】
（前記例は、所与のワードラインの奇数セルが偶数セルの後にプログラムされるシナリオを参照するもので、この場合には、奇数セルプログラミング中の欠陥は偶数セルに記憶されたデータを破壊し得る。これに対して、ここに開示する技術は、所与のワードラインの偶数セルが奇数セルの後にプログラムされるシナリオにおいて同様に適用することができる。）
【００４４】
別のシナリオにおいて、所与のワードラインの偶数セル及び奇数セルの各々は、複数のページ、例えば、２つ又は３つのページで順次にプログラムされる。そのようなページは、一般に、ＭＬＣ／ＴＬＣページプログラミングスキームの場合と同様に、最下位ビット（ＬＳＢ）ページ、中位ビット（ＣＳＢ）ページ、及び最上位ビット（ＭＳＢ）ページと称される。（ＣＳＢは、上位ページＵＳＢとも称される。）
【００４５】
新たなデータページが書き込まれるワードラインに以前に書き込まれたデータは、ここで、これらのシナリオに書き込み欠陥が生じた場合に潜在的なデータ破壊としての複数のメカニズムを受ける。最も破壊され易いページは、ＭＬＣ／ＴＬＣプログラミングのための次の章で説明されるプログラミングスキームに述べられたようにグループ分けされる。これらのグループからの冗長データは、メモリコントローラにより生成され、そして不揮発性メモリ又は別の適当な記憶媒体に書き込まれる。データページが首尾良く書き込まれると、冗長情報が破棄される。
【００４６】
一時的な冗長情報を使用した書き込み欠陥に対する保護
ある実施形態では、メモリコントローラ４０のプロセッサ４８は、異なるページの
0005479562.tif 000002
をとることにより、ページのセットにわたる冗長情報を発生する。この冗長情報は、ここでは、「バックアップ」又は「パリティ」データアイテムＰと称される。例えば、Ｐは、Ａ、Ｂ、Ｃで表される３つのデータページから次の式、
0005479562.tif 000003
により計算され、そしてＡ、Ｂ、Ｃがメモリに安全に書き込まれるまで記憶され、その後に、Ｐは、破棄される。３つのページの例は、単にコンセプトを明確にするために示されたもので、本発明の実施形態を何ら限定するものではない。
【００４７】
例えば、ページＣを破壊させる停電の場合に、ページＣは、Ａ、Ｂ及びＰから、次の式
0005479562.tif 000004
によって再構成することができる。更に、予め定義されたプログラミングスキームによりメモリへのデータアイテムの書き込み順序を最適にすることで、パリティデータ又は冗長情報を計算して記憶するためのオーバーヘッド及び計算効率が最適にされる。
【００４８】
ここに述べる実施形態は、主として、明瞭化のため単一ページの欠陥から保護する冗長情報を参照する。２ページ以上が破壊される場合には、より複雑な冗長スキームを使用しなければならない。ここに開示する技術は、そのような冗長スキームと共に使用することができる。
【００４９】
ここに述べる方法の効率及び速度は、典型的に、読み取り及び書き込み動作の数に依存する。というのは、フラッシュメモリの読み取り動作は、通常、書き込み動作より著しく短いからである。データアイテムが書き込まれると、プロセッサ４８は、冗長情報を破棄する。冗長情報からのデータの再構成を要求するデータアイテムの書き込み欠陥は、稀な事象であると仮定され、若干の余計な読み取り動作により生じるレイテンシーは、全体的なメモリシステム性能において無視できるものである。
【００５０】
図２は、本発明の一実施形態により書き込み欠陥に対して保護するようにデータを記憶する方法を例示するフローチャートである。受け容れ（acceptance）ステップ１００において、メモリコントローラ４０は、記憶のためのデータアイテムをホスト５２から受け容れる（アクセプトする）。書き込みステップ１１０において、メモリコントローラは、プロセッサ４８により構成される予め定義されたプログラミングスキームに基づいてメモリ装置２４にデータアイテムを書き込む。
【００５１】
第１の判断ステップ１２０において、プロセッサ４８は、データアイテムのバックアップが必要であるかどうかチェックする。バックアップが必要な場合、プロセッサ４８は、生成ステップ１３０において、上述したパリティデータのような冗長情報をデータアイテムから生成する。書き込みステップ１４０において、プロセッサ４８は、メモリ装置２４の予め定義された位置又は他の適当な記憶媒体（例えば、メモリコントローラのランダムアクセスメモリ）に冗長情報を書き込む。
【００５２】
バックアップが必要でない場合は、メモリコントローラ４０のプロセッサ４８は、第２の判断ステップ１５０において、受け容れ（acceptance）ステップ１００からの受け容れられた全てのデータアイテムがプログラミングスキームに基づいてメモリに書き込まれたかどうか評価する。もしそうであれば（すなわち、メモリに書き込まれた場合）、プロセッサ４８は、破棄ステップ１６０において、冗長情報を破棄する。もしそうでなければ（すなわち、メモリに書き込まれなかった場合）、プロセッサ４８は、第３の判断ステップ１７０において、新たなデータアイテムを記憶のために送るべきかどうか評価する。もしそうであれば（すなわち、送るべき場合）、この方法は、ステップ１００へループバックし、新たなデータアイテムが記憶のために受け容れられる。そうでなければ、終了ステップ１８０において、データ記憶が終了となる。
【００５３】
メモリコントローラのプロセッサ４８は、種々の仕方で冗長情報を破棄する。例えば、フラッシュベースシステムでは、プロセッサ４８は、典型的に、冗長情報のページ（１つ又は複数）を無効とマークする。その結果、メモリコントローラは、コンパクト化又は「ガーベージコレクション」中に冗長情報を新たなブロックにコピーせず、冗長情報は、結局、消去される。
【００５４】
図３は、本発明の一実施形態により不揮発性メモリの書き込み欠陥から失われたデータアイテムを再構成する方法を概略的に示すフローチャートである。監視ステップ２００において、メモリ装置２４に書き込まれたデータアイテムのセットは、メモリコントローラ４０のプロセッサ４８により監視される。
【００５５】
判断ステップ２１０において、プロセッサ４８は、データ書き込み欠陥事象が生じたかどうか確認する。生じていなければ、メモリコントローラ４０は、監視ステップ２００においてメモリに書き込まれたデータを監視し続ける。生じた場合には、プロセッサ４８は、ページのセットに対する冗長情報を、それが書き込まれた（図２の書き込みステップ１４０）予め定義された位置からフェッチする。再構成ステップ２３０において、プロセッサ４８は、冗長情報を使用して、失われたデータアイテムを再構成する。書き込みステップ２４０において、失われて再構成されたデータアイテムがメモリに書き込まれる。メモリコントローラ４０は、次いで、監視ステップ２００において、メモリに書き込まれたデータを監視し続ける。
【００５６】
書き込み欠陥中のデータ保護のためのプログラミングスキーム
図２及び３は、両方とも、書き込み欠陥の場合にデータを書き込み及び再構成するための一般的な方法を示している。データ損失が生じた場合には、予め定義されたプログラミングスキーム中に生成される冗長情報から、失われたデータを再構成することができる。  以下に述べる実施形態は、多数の異なるシナリオに対する予め定義されたプログラミングスキームの特定例を示す。異なる実施形態は、メモリセル当たりのビット数、奇数及び偶数セルに仕切るワードライン、及び書き込まれるデータアイテムのサイズに対する種々の可能性を考慮するものである。各プログラミングスキームは、以前に書き込まれたデータの損失をいつでも防止するために、ページのセットをプログラミングするある順序を指定する。
【００５７】
換言すれば、以下に述べるプログラミング順序は、書き込み欠陥が生じたときに、欠陥により影響を受けない首尾良く記憶されたデータを使用して以前のデータを常に回復できるように保証する。以下の例では、現在書き込まれるデータと同じワードラインに以前に書き込まれたデータが書き込み欠陥で破壊され得ると仮定する。しかしながら、ここに開示する技術は、この仮定に限定されない。別の実施形態では、他の仮定がなされ、それに応じて適当なプログラミング順序を定義することができる。
【００５８】
ある実施形態では、プロセッサ４８は、ページ書き込みが有効とされるまで、各ページを複写し、そしてバックアップページを冗長情報として記憶する。しかしながら、この技術は、オーバーヘッドが大きい。例えば、奇数／偶数２ビット／セルメモリでは、４つの外部データ書き込み動作のために３つの内部書き込み保護動作が必要となる。
【００５９】
他の実施形態では、プロセッサ４８は、データページを異なるブロックに順次に書き込む。Ｎ個のブロックがプログラムされたときに、プロセッサ４８は、書き込まれたブロックのデータが保護されるようにパリティバックアップブロックを生成する。パリティブロックをバックアップするためのメモリオーバーヘッドは、１／Ｎである。一実施形態において、Ｎ個のブロックにおけるデータの幾つか（例えば、各ワードラインの最後のページ）は、必ずしも保護を必要としないので、オーバーヘッドを小さくすることができる。
【００６０】
ＳＬＣ記憶装置を使用して、各ワードラインの偶数セルに、次いで、奇数セルに異なるページを記憶するメモリに使用される別の例について考える。ワードラインの奇数ページの書き込み欠陥は、同じワードラインの偶数ページに以前に書き込まれたデータを破壊することがある。このＳＬＣ構成は、プログラミングページの順序ずれをサポートする。
【００６１】
この実施形態では、プロセッサ４８は、Ｌ０・・・Ｌ１４と示された１５のデータページのセットと、パリティページを、次のテーブル１に基づいてプログラムする。
【表１】
0005479562.tif 000005
【００６２】
テーブルにおいて明らかなように、プロセッサは、先ず、ページＬ０・・・Ｌ６を次々のワードラインの偶数セルにプログラムする。偶数セルのプログラミング中には、書き込み欠陥が、以前に書き込まれたデータを破壊することはない。というのは、以前のデータは、異なるワードラインにプログラムされているからである。次いで、プロセッサ４８は、次のワードライン、例えば、ＷＬ７の、ＸＯＲ＿ＣＷ（Ｌ０−Ｌ６）と示された偶数セルにパリティページをプログラムする。
【００６３】
演算子ＸＯＲ＿ＣＲは、低密度パリティチェック（ＬＤＰＣ）又はボーズ・チョドーリ・オッケンジェム（Bose-Chaudhuri-Hocquenghem:ＢＣＨ）のようなＥＣＣでエンコードされたデータページに対して、
0005479562.tif 000006
を遂行する。この演算子を実行するときに、プロセッサ４８は、ＥＣＣ冗長ビットをもたないデータページのデータビットのみにわたってビットごとのＸＯＲを遂行し、次いで、ＥＣＣでＸＯＲ結果をエンコードして、冗長ページを発生する。（別の実施形態では、プロセッサ４８は、データビット及びＥＣＣ冗長ビットの両方を含めて、データページの全てのビットにわたりビットごとのＸＯＲを計算する。
【００６４】
ワードラインＷＬ０−ＷＬ６の偶数データページへのページＬ０−Ｌ６のプログラミングが完了すると、テーブル１に示されたように、プロセッサ４８は、バックアップページが必要とされ（判断ステップ１２０）、偶数ページデータ保護のためにページＬ０−Ｌ６からパリティバックアップページが生成され（生成ステップ１３０）そしてＷＬ７の偶数ページへ書き込まれる（書き込みステップ１４０）ことを検出する。
【００６５】
次いで、プロセッサ４８は、Ｌ７−Ｌ１４と示されたＬＳＢデータページをＷＬ０−ＷＬ７の連続する奇数ページに書き込む。全てのデータがＷＬ０−ＷＬ７の奇数及び偶数ページへ書き込まれると（判断ステップ１５０）、パリティデータ、この例では、ＷＬ７の偶数ページに記憶されたＸＯＲ＿ＣＷページが破棄される（ステップ１６０）。
【００６６】
テーブル１のデータページのインデックス術語(indexing nomenclature)、例えばＬ１−Ｌ１４は、ＬＳＢデータ（“Ｌ”）を表わし、そして数字は、データが書き込まれるここに示す８本のワードライン（ＷＬ０−ＷＬ７）へのデータ書き込みシーケンスのステップ数を表わす。従って、Ｌ０は、書き込まれるべき第１のデータページであり、Ｌ１は、書き込まれるべき第２のデータページであり、Ｌ２は、書き込まれるべき第３のデータページであり、等々となる。書き込みシーケンスを表わす術語は、それ以降のテーブルで、その後の実施形態における付加的なプログラミングスキームを示すのに使用される。
【００６７】
あるメモリ装置では、各偶数又は奇数ＳＬＣページは、２つの個別のプログラミング動作において、２つの半部分に書き込まれる。そのような装置に使用するための規範的なプログラミング順序がテーブル２に示されている。
【表２】
0005479562.tif 000007
【００６８】
この実施形態でも、プロセッサ４８は、ワードラインを、全てのデュアル偶数ページが順次にプログラムされた後に、デュアル奇数ページがプログラムされるように「順序ずれして（out of order）」プログラムする。しかしながら、テーブル２に示すように、ワードラインの順次グループのプログラミングの終わりにパリティページが生成されて、最後のワードラインに書き込まれる。
【００６９】
テーブル２において明らかなように、プロセッサ４８は、ＷＬ０−ＷＬ６の偶数セルの第１の半部分にデータセクタＬ０−Ｌ６を記憶し、次いで、ＷＬ７の偶数セルの第１の半部分にＬ０−Ｌ６のＸＯＲ＿ＣＷを記憶する。次いで、プロセッサ４８は、ＷＬ０−ＷＬ６の偶数セルの第２の半部分にデータセクタＬ７−Ｌ１３を記憶し、次いで、ＷＬ７の偶数セルの第２の半部分にＬ７−Ｌ１３のＸＯＲ＿ＣＷを記憶する。次いで、プロセッサ４８は、ＷＬ０−ＷＬ６の奇数セルの第１の半部分にデータセクタＬ１４−Ｌ２０を記憶し、次いで、ＷＬ７の奇数セルの第１の半部分にＬ１４−Ｌ２０のＸＯＲ＿ＣＷを記憶する。最後に、プロセッサ４８は、ＷＬ０−ＷＬ７の奇数セルの第２の半部分にデータセクタＬ２１−Ｌ２８を記憶する。この段階において、プロセッサ４８は、３つのＸＯＲ＿ＣＷセクタを破棄する（例えば、無効にする）。
【００７０】
テーブル１及び２に示した実施形態は、コンセプトを明確にするために選択されたものに過ぎないことに注意されたい。例えば、奇数ページを、偶数ページの前にプログラムすることができる。テーブル１及びテーブル２に示したパリティデータは、異なるメモリブロック又は他の適当な記憶媒体に記憶され、そしてメモリデータ書き込みシーケンスの完了時に破棄される。パリティデータが同じメモリブロックに記憶されずに、異なる位置に記憶される場合には、ＸＯＲ＿ＣＷ動作は、偶数又は奇数ページの全てのワードラインに書き込まれたデータを含み、そしてここでは、例えば、ＸＯＲ＿ＣＷ（Ｌ０−Ｌ７）のようなＷＬ７からのデータを含み、等々となる。
【００７１】
ある実施形態では、ワードラインを順序正しくプログラムすることが望まれる。これらの実施形態では、プロセッサ４８は、ページのセットのための冗長データを異なるブロックにプログラムし、そしてその後、ページのセット、及びページのセットのデータにダメージを及ぼし得るページが首尾良く書き込まれたときに、冗長データを破棄する。
【００７２】
ＭＬＣプログラミングでは、ワードラインにＭＳＢページをプログラミングするとき、同じワードラインに既に書き込まれたＬＳＢデータは、書き込み欠陥（例えば、停電）の場合に破壊されることがある。以下のテーブル３は、一実施形態によりそのような事象に対して保護するための規範的なスキームを示す。
【表３】
0005479562.tif 000008
【００７３】
テーブル３に示す例において、ワードライン３（ＷＬ３）のＭＳＢページＭ１６又はＭ１７をプログラミングするときに、ＷＬ３に以前に書き込まれたＬＳＢページＬ１０及び／又はＬ１１は、書き込み欠陥の場合に破壊されることがある。ここで、先に述べた術語によれば、Ｌ２は、例えば、シーケンスにおけるＬＳＢデータページの第２の書き込みステップを表わし、そしてＭ１３は、シーケンスにおけるＭＳＢデータページの１３番目の書き込みステップを表わす。
【００７４】
本発明の実施形態において、書き込み欠陥でデータ破壊が生じるリスクを最小にするため、データをワードラインへプログラムし、冗長情報を生成し、そして冗長情報を、予め定義された位置（典型的には別のブロック）に記憶するＭＬＣプログラミングスキームが実施される。
【００７５】
ＭＬＣプログラミングスキームのための以下に述べる冗長性生成フローは、ｉ＞０とすれば、ＷＬ（ｉ）で表されるｉ番目のワードラインに対して次の術語を使用する。一実施形態において、プロセッサ４８は、テーブル３に示したＭＬＣプログラミング順序を実行する。このプログラミング順序に関連して、プロセッサ４８は、次の冗長性スキームを実行する。
0005479562.tif 000009
【００７６】
ステップ３は、奇数ページを書き込みながら偶数ＬＳＢページに対する冗長性（１）を記憶する。同様に、ステップ７は、以前に記憶されていない奇数ＬＳＢページの冗長性（２）を記憶する。ステップ７は、奇数ページを書き込みながら偶数ＭＳＢページに対する冗長性を記憶する。ｉ＝０の特定のケースでは、ステップは、次の通りである。
0005479562.tif 000010
【００７７】
テーブル３のＭＬＣプログラミングスキーム及びそれに対応する冗長性生成フローは、４つのデータプログラミング書き込みステップごとに２つの冗長ページ（コードワード）を生じ、即ち１／２のコードレートを生じる。前記ＭＬＣプログラミングスキームが正しく動作するためには、偶数セルの場合には所与の時間に典型的に２つの冗長コードワードを、そして奇数セルの場合には２つの冗長コードワードを使用できねばならない。第３の冗長コードワードが生成されるときには、第１の冗長コードワードが破棄され、等々となる。
【００７８】
書き込み欠陥の場合には、次のＭＬＣデータ回復スキームを使用して、ＭＬＣプログラミングスキーム中にデータを回復することができる。
0005479562.tif 000011
【００７９】
更に別の実施形態では、メモリ装置は、ＬＳＢ、ＣＳＢ及びＭＳＢデータページが次の順序に基づいて奇数及び偶数メモリセルへプログラムされるＴＬＣプログラミングスキームをサポートする。
【表４】
0005479562.tif 000012
【００８０】
ここでは、上述した術語によれば、Ｌ２は、シーケンスにおけるＬＳＢデータページの第２の書き込みステップを表わし、Ｃ９は、ＣＳＢデータページの９番目の書き込みステップを表わし、そしてＭ１６は、ＭＳＢデータページの１６番目の書き込みステップを表わす。この実施形態では、テーブル４のＴＬＣプログラミングフロー中に、プロセッサ４８は、次の冗長データを発生する（ｉ＞１については、データがどこかにセーブされるので、偶数及び奇数ページをデータ損失なく一緒にプログラムできると仮定する）。
0005479562.tif 000013
【００８１】
このＴＣＬプログラミングスキームの場合、プログラミングスキームは、６つのデータプログラミング書き込みステップごとに２つの冗長コードワードを生じさせ、または１／３のコードレートを生じさせる。前記プログラミングスキームが正しく動作するためには、所与の時間に３＊２冗長コードワードを典型的に使用できねばならない。プログラミングスキームに基づいてデータが書き込まれると、冗長コードワードが破棄される。
【００８２】
他の実施形態では、プログラム書き込み中に、書き込み欠陥が生じた場合に奇数ページデータを書き込む間に、以前に書き込まれた偶数ページデータが破壊されることがある。このような実施形態の場合、プロセッサ４８は次の冗長データを発生する。
0005479562.tif 000014
【００８３】
このプログラミングスキームは、６つのデータプログラミング書き込みステップごとに３つの冗長コードワードを生じさせ、または１／２のコードレートを生じさせる。前記プログラミングスキームが正しく動作するためには、所与の時間に３＊３冗長コードワードを典型的に使用できねばならない。プログラミングスキームに基づいてデータが書き込まれると、冗長性が破棄される。
【００８４】
更に別の実施形態では、メモリ装置は、ワードライン上で奇数及び偶数セル分割がなされないＴＬＣ全ビットライン（ＡＢＬ）プログラミングスキームをサポートする。ＬＳＢ、ＣＳＢ及びＭＳＢデータは、テーブル５に示すステップのシーケンスでワードラインへ直接プログラムされる。
【表５】
0005479562.tif 000015
【００８５】
この実施形態では、プロセッサ４８は、次の冗長性生成フローを実行する。
0005479562.tif 000016
【００８６】
このＴＬＣ  ＡＢＬプログラミングスキームの場合、このプログラミングスキームは、３つのデータプログラミング書き込みステップごとに１つの冗長コードワードを生じさせ、または１／３のコードレートを生じさせる。前記プログラミングスキームが正しく動作するためには、所与の時間に３＊２冗長コードワードを典型的に使用できねばならない。プログラミングスキームに基づいてデータが書き込まれると、冗長性が破棄される。
【００８７】
テーブル１から５に示すプログラミングスキームは、単にコンセプトを明確にするために選択されたものであり、本発明の実施形態を限定するものではない。プログラム書き込みフロー中に、停電保護のように、書き込み欠陥の際に以前に書き込まれたデータを保護するための手段として冗長情報を生成する技術は、ブロックインターリービングと結合されて、冗長オーバーヘッドの少ない新たなプログラミングスキームを得ることができる。
【００８８】
ここに述べる実施形態は、主として、ＸＯＲベースの冗長性を参照している。他の実施形態では、プロセッサ４８は、ＸＯＲ以外の適当な冗長スキームを使用して冗長情報を発生する。例えば、プロセッサ４８は、この目的のために適当なＥＣＣを使用する。ＥＣＣが、例えば、２つのエラーを修正できる場合は、一緒に破壊される２つのページが、ＥＣＣにより保護される同じページセットに含まれてもよい。
【００８９】
ここに述べた実施形態は、主として、書き込み欠陥中に不揮発性メモリのデータ保護に向けられたが、ここに述べる方法及びシステムは、他の欠陥メカニズムを経験するメモリや、三次元メモリセルアレイのような他の幾何学形状より成るメモリのデータ保護のような他の用途に使用することもできる。
【００９０】
したがって、上述した実施形態は、例示に過ぎず、本発明は、特に図示して上述したものに限定されないことが明らかであろう。むしろ、本発明の範囲は、上述した種々の特徴の組み合わせ及びサブ組み合わせ、並びに以上の説明を読んだときに当業者に明らかとなり且つ従来開示されていない修正や変更を包含する。本特許出願に参考として援用される文書は、本出願の一体的部分とみなすべきであるが、本明細書において明示的又は暗示的になされた定義と矛盾するようにそれらの援用文書中に用語が定義されるものについては、本明細書の定義のみを考慮すべきである。
【符号の説明】
【００９１】
２０：メモリシステム
２４：メモリ装置
２８：メモリアレイ
３４：メモリブロック
３６：Ｒ／Ｗユニット
４０：メモリコントローラ
４４：インターフェイス
４８：プロセッサ
５２：ホスト
【図１】
0005479562.tif 000017
【図２】
0005479562.tif 000018
【図３】
0005479562.tif 000019