(57)【特許請求の範囲】
【請求項１】
一組のソリッドステート不揮発性メモリセルに、前記組の中の各メモリセルが書込により関連する初期プログラム状態になるように、データを書込むステップと、
前記組の中の選択されたメモリセルのプログラム状態のドリフトを検出するステップと、
前記選択されたメモリセルを部分的に再プログラムして前記選択されたメモリセルを前記関連する初期プログラム状態に戻すステップとを含み、前記組の中の少なくとも１つのその他のメモリセルは部分的に再プログラムされず、
電荷の複数の増分を与えて前記選択されたメモリセルを前記初期プログラム状態にプログラムし、その後、電荷の、より小さい複数の増分を与えて前記選択されたメモリセルを部分的に再プログラムして前記初期プログラム状態に戻す、方法。
【請求項２】
前記一組のソリッドステート不揮発性メモリセルは、各フラッシュメモリセルのフローティングゲートに電荷を蓄積することにより１ページ分のデータを同時に格納することによってプログラムされる一行のフラッシュメモリセルを含む、請求項１に記載の方法。
【請求項３】
前記フラッシュメモリセルは各々、２ページ分のデータが前記メモリセルによって格納されるように、マルチレベルセル（ＭＬＣ）として構成される、請求項２に記載の方法。
【請求項４】
第１の書込パルス幅を与えることによって、各メモリセルを前記関連する初期プログラム状態にプログラムし、その後第２の書込パルス幅を与えることによって、選択されたメモリセルをその関連するプログラム状態に再プログラムし、前記第２の書込パルス幅は前記第１の書込パルス幅よりも短い、請求項１から請求項３のいずれか１項に記載の方法。
【請求項５】
前記プログラム状態のドリフトは、電圧しきい値を選択されたメモリセルに与えることによって検出される、請求項１に記載の方法。
【請求項６】
前記プログラム状態のドリフトは、選択されたメモリセルに関連するビットエラーレート（ＢＥＲ）に応じて検出される、請求項１に記載の方法。
【請求項７】
前記プログラム状態のドリフトは、選択されたメモリセルが前記関連する初期プログラム状態にプログラムされてから経過した時間に応じて検出される、請求項１に記載の方法。
【請求項８】
前記プログラム状態のドリフトは、選択されたメモリセルに関連する温度測定値に応じて検出される、請求項１に記載の方法。
【請求項９】
前記メモリセルは、抵抗ランダムアクセスメモリ（ＲＲＡＭ（登録商標））セル、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）セル、またはスピントルクトランスファーランダムアクセスメモリ（ＳＴＲＡＭ）セルのうちの選択されたいずれか１つである、請求項１に記載の方法。
【請求項１０】
前記選択されたメモリセルを、再プログラムされたものとして、前記選択されたメモリセルに関連する制御データにマークするステップをさらに含む、請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
アドレス可能な単位になるように配列されたソリッドステート不揮発性メモリセルのアレイと、
メモリの選択されたアドレス可能単位に、前記選択されたアドレス可能単位の中の各メモリセルが関連する初期プログラム状態を有するように、データを書込むようにされた書込回路と、
前記選択されたアドレス可能単位の中のメモリセルのうちの少なくとも１つのプログラム状態のドリフトを検出するように、かつ、前記選択されたアドレス可能単位の中の全メモリセルよりも少ないメモリセルを部分的に再プログラムして前記関連する初期プログラム状態にすることを前記書込回路に指示するようにされた、部分再プログラミング回路とを備え、
前記部分再プログラミング回路は、前記選択されたメモリセルの消去を挟まずに、前記初期プログラム状態にプログラムした際の複数の電荷の増分よりも小さい、複数の電荷の増分を与えて前記選択されたメモリセルを部分的に再プログラムして前記初期プログラム状態に戻す、装置。
【請求項１２】
前記選択されたアドレス可能単位は、１行のフラッシュメモリセルであり、前記書込回路は、前記フラッシュメモリセルに電荷の第１の増分を蓄積し移動することによって１ページのデータを前記行に書込み、前記書込回路は、前記電荷の第１の増分よりも小さい電荷の第２の増分を蓄積し移動することによって前記行の前記フラッシュメモリセルを部分的に再プログラムする、請求項１１に記載の装置。
【請求項１３】
第１の書込パルス幅を与えることによって、各メモリセルを前記関連する初期プログラム状態にプログラムし、その後第２の書込パルス幅を与えることによって、選択されたメモリセルをその関連するプログラム状態に再プログラムし、前記第２の書込パルス幅は前記第１の書込パルス幅よりも短い、請求項１１または請求項１２に記載の装置。
【請求項１４】
前記プログラム状態のドリフトは、電圧しきい値を選択されたメモリセルに与えることによって検出される、請求項１１に記載の装置。
【請求項１５】
前記プログラム状態のドリフトは、選択されたメモリセルに関連するビットエラーレート（ＢＥＲ）に応じて検出される、請求項１１に記載の装置。
【請求項１６】
前記プログラム状態のドリフトは、選択されたメモリセルが前記関連する初期プログラム状態にプログラムされてから経過した時間に応じて検出される、請求項１１に記載の装置。
【請求項１７】
前記プログラム状態のドリフトは、選択されたメモリセルに関連する温度測定値に応じて検出される、請求項１１に記載の装置。
【請求項１８】
一単位として消去され割当てられる複数のガーベジコレクション単位（ＧＣＵ）になるように配列された不揮発性フラッシュメモリセルを含むフラッシュメモリアレイと、
選択されたＧＣＵからデータを読出し選択されたＧＣＵにデータを書込み選択されたＧＣＵを消去するようにされた、読出／書込／消去（Ｒ／Ｗ／Ｅ）回路と、
前記選択されたＧＣＵの中のプログラムされた一組のフラッシュメモリセルをプログラミングドリフトが生じたものであると識別し、かつ、前記プログラムされた一組のフラッシュメモリセルを部分的に再プログラムすることで電荷を前記メモリセルに移動させて前記メモリセルを前記選択されたＧＣＵの消去を挟まずにその初期プログラム状態に戻すことを前記Ｒ／Ｗ／Ｅ回路に指示する、部分再プログラミング回路とを備え、
電荷の複数の増分を与えて、選択されたメモリセルを前記初期プログラム状態にプログラムし、その後、電荷の、より小さい複数の増分を与えて前記選択されたメモリセルを部分的に再プログラムして前記初期プログラム状態に戻す、装置。
【請求項１９】
前記部分再プログラミング回路はさらに、前記部分的に再プログラムする動作の前に１つ以上の電圧しきい値を前記プログラムされた一組のフラッシュメモリセルに与えて各々のプログラム状態を評価することを前記Ｒ／Ｗ／Ｅ回路に指示する、請求項１８に記載の装置。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
概要
本開示のさまざまな実施の形態は概してフラッシュメモリアレイ等のメモリ内のデータの管理に関する。
【０００２】
いくつかの実施の形態に従うと、一組のソリッドステート不揮発性メモリセルに、この組の中の各メモリセルが書込により関連する初期プログラム状態になるように、データを書込む。この組の中の選択されたメモリセルのプログラム状態のドリフトを検出し、この選択されたメモリセルを部分的に再プログラムして上記関連する初期プログラム状態に戻す。
【０００３】
さまざまな実施の形態を特徴付ける上記およびその他の特徴は、以下の詳細な説明および添付の図面に鑑みて理解することができる。
【図面の簡単な説明】
【０００４】
【図１】さまざまな実施の形態に従う、ホスト装置と通信するように配置されたデータ記憶装置の機能ブロック図を示す。
【図２】いくつかの実施の形態に従う、図１のデータ記憶装置のブロック図を示す。
【図３】図１の装置で使用することができるフラッシュメモリセル構造を示す。
【図４】図３のセルを用いたフラッシュメモリアレイの一部の概略図である。
【図５】消去ブロックの代表的なフォーマットを示す。
【図６】消去ブロックをガーベジコレクション単位（garbage collection unit）（ＧＣＵ）になるように配列したものを示す。
【図７】図６のメモリセルの電荷密度分布を示す。
【図８】図７から選択された分布における電荷ドリフトを示す。
【図９】さまざまな実施の形態に従い動作することにより図８の電荷ドリフトを修正するデータ記憶装置の部分再プログラミング回路である。
【図１０】データ記憶装置の読出／書込／消去回路の読出部である。
【図１１】読出／書込／消去回路の書込部である。
【図１２】プログラミングドリフトの評価のために異なる電圧検知しきい値をメモリセルの分布に与える様子を示す。
【図１３】通常プログラミング動作および部分プログラミング動作それぞれの間に図１１の書込部によって与えられる通常プログラミングの増分および部分プログラミングの増分を示す。
【図１４】部分プログラミングシーケンスである。
【図１５】いくつかの実施の形態に従う部分プログラミングルーチンのフローチャートである。
【発明を実施するための形態】
【０００５】
詳細な説明
本開示は概して、データ記憶装置のフラッシュメモリアレイ等であるがこれに限定されないメモリモジュールに格納されたデータの管理に関する。
【０００６】
当該技術では多様な不揮発性データ記憶メモリが知られている。いくつかの不揮発性メモリは、フラッシュメモリ、抵抗ランダムアクセスメモリ（ＲＲＡＭ（登録商標））、スピントルクトランスファーランダムアクセスメモリ（ＳＴＲＡＭ）、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）等の、ソリッドステートメモリセルの形態を取る。
【０００７】
これらおよびその他の種類のメモリセルは、半導体構造であり、セルの、プログラムされた電気的、機械的、および／または構造的状態との関連でデータを格納する。プログラム状態が長期間維持されるという点では名目上不揮発性であるが、メモリセルはプログラムされた状態の変化（プログラミングドリフト）を引起すさまざまな影響を受ける可能性がある。こういった影響は、読出ディスターブ（disturb）、書込ディスターブ、電荷ドリフト、温度劣化、減磁、累積する書込／消去サイクル、消耗等を含み得るものであり、時間の経過に伴ってセルのプログラム完全性に影響する可能性がある。
【０００８】
プログラミングドリフトが進行しプログラムされたデータの確実なリカバリを妨げるようになる前に、現在格納されているデータに対してリフレッシュ動作を実行して現在のセルを再プログラムするか、または、データを新たな一組のセルに書込むことが一般的である。メモリセルの中には、データをセルに再び書込む前に、消去動作を挟むことが必要なメモリセルがある。ガーベジコレクション動作は、現在のデータを新たな場所に再度書込み続いて消去を行なうかそうでなければメモリの１ブロックをリセットすることによって、このメモリブロックを、利用できる割当プール（allocation pool)に戻すことを含み得る。
【０００９】
現在のリフレッシュ動作（ガーベジコレクション動作を含むがこれに限定される訳ではない）は、機能するものの、その問題は、データの再書込および必要に応じてメモリセルの消去が行なわれることによって、メモリセルの動作総寿命が短縮する可能性があることである。たとえば、いくつかの種類のフラッシュメモリセルは、わずか約５０００書込／消去サイクル後に消耗して使えなくなる。それ以外の種類のメモリセルは、書込および／または消去の繰返しが原因で、同じように消耗し易くなる可能性がある。
【００１０】
ライトアンプリフィケーション（write amplification）は、フラッシュメモリセルを含むソリッドステート不揮発性メモリセルに付随する関連現象である。ライトアンプリフィケーションは一般的に、あるメモリ内に特定のデータセットが書込まれる総回数に関係する。理想的なライトアンプリフィケーション値は１に等しいであろう。なぜなら、１つのデータセットを一旦受けたらそのメモリへの書込みは一度だけであることが最適であるからである。しかしながら実際は、ガーベジコレクションおよびその他のリフレッシュ動作の結果、１つのアレイ内でのデータの移動、再書込、コピーまたは複製が複数回行なわれることが多い。現世代のソリッドステートドライブ（ＳＳＤ）の中には、典型的なライトアンプリフィケーション値が３以上であるものがある。これは、ホストから受けた各データセットを、受けたときにメモリに最初に書込んだ後、最終的にはさらに少なくとも二回書込むことを意味する。
【００１１】
ライトアンプリフィケーションのレベルが高ければ、メモリの動作寿命が短くなる可能性があり、もしこのメモリ内において異なる場所に同一データの複数のセットが現在存在している場合は新たなデータを収容する能力が低下する可能性もあることが、理解できる。
【００１２】
したがって、本開示のさまざまな実施の形態は概して、ライトアンプリフィケーションを減じるようにソリッドステート不揮発性メモリ内のデータを管理するための装置および方法に関する。以下で説明するように、１ブロックのメモリセルを、初期プログラミング状態にプログラムする。推定または検出されたプログラミングドリフトの結果、上記メモリセルのうちの１つ以上を部分再プログラミングの候補であると識別する。
【００１３】
部分再プログラミングはこの１つ以上のメモリセルに適用される。すなわち、メモリセルに、電荷の小さな増分等のプログラミング力（programming effort）の相対的に小さい増分を与えることによって、このセルを、前に適用されたプログラミング状態に戻す。このセルは、再プログラムされたことを示すために、タイム／日付スタンプまたはその他の表示データでマークしてもよい。このようにして、オーバヘッド時間およびメモリアレイ内でデータを移動させるのに必要なリソースを減じることができ、不必要な消去および書込動作を原因とするメモリアレイの消耗を回避することができる。
【００１４】
いくつかの実施の形態では、部分再プログラミングを、フラッシュメモリ環境内で、フラッシュメモリセルに与えられた電圧しきい値またはフラッシュメモリセルのビットエラーレートを読取ることによって測定された、時間の経過に伴いフラッシュメモリセルが失った電荷の量に基づいて、実行する。次に、このセルを優先的に部分的に再プログラムして元の状態に戻す。これにより、データを新しいフレッシュなブロックにコピーし古いブロックを再利用する必要はなくなる。
【００１５】
この部分再プログラミングは、小さくしたプログラミング電圧、パルス等を用いて実行することができる。フラッシュメモリセル、ＰＣＲＡＭセル、ＳＴＲＡＭセル、ＲＲＡＭセル等を含む、種類が異なるメモリセルを、部分的に再プログラムすることができる。フラッシュメモリセルの場合は、実質上、セルの電圧しきい値をその元のプログラム状態に戻すのに十分な電子だけをフローティングゲートの境界を越えて移動させる。
【００１６】
さらに他の実施の形態では、ルックアップテーブル、または、伝達関数等の他の手法を使用して、所与のメモリセルにとって適切な回復プログラミング力を決定することができる。フラッシュメモリセル内の電荷消失に影響し得る変数は、温度、時間、およびプログラム／消去サイクルを含む。この装置は、これらおよびその他の変数を追跡し、バックグラウンドにおいて部分再プログラミングの適用をスケジュールすることにより、特定の分布許容差の中でプログラミング状態を維持することができる。
【００１７】
さまざまな実施の形態の上記およびその他の特徴は、先ず図１を検討することによって理解できる。図１は、ホスト装置１０２に結合されたデータ記憶装置１００を特徴とするデータ処理システムの簡略化されたブロック図を示している。記憶装置１００およびホスト１０２は各々、任意の適切な形態を取ることができる。いくつかの実施の形態において、ホスト１０２は、デスクトップコンピュータ、サーバ、携帯型電子機器、スマートフォン、ラップトップコンピュータ、タブレット、ゲーム機等の、ネットワークアクセス可能な計算装置である。記憶装置１００は、ホスト１０２に組込まれてもよく、または、ホストにローカル接続もしくはネットワークを介して接続されることによって、ホスト１０２に対し揮発性および／または不揮発性メモリデータ記憶機能を提供してもよい。
【００１８】
図２は、いくつかの実施の形態に従う図１の記憶装置１０２の代表的な構造を示す。この装置１０２は制御モジュール１０４とメモリモジュール１０６とを含む。制御モジュール１０４は、データ処理システムに対してトップレベルの制御を提供し、メモリモジュール１０６は、主データ記憶装置を提供する。メモリモジュール１０６は、制御／メモリモジュール通信インターフェイス１０５を通して制御モジュール１０４からメモリモジュール１０６に対して発せられたコマンドを受信し、処理し、実行するようにされている。
【００１９】
モジュール１０４、１０６はそれぞれいくつかの形態を取り得る。ソリッドステートドライブ（ＳＳＤ）に適用された場合、制御モジュール１０４およびメモリモジュール１０６双方を、一体化されたスタンドアローンアセンブリに組込んでもよい。ハイブリッドディスクドライブに適用された場合、メモリモジュール１０６はフラッシュおよびディスク双方に基づくメモリを含むものであってもよい。メモリカードに適用された場合、制御モジュール機能の一部またはすべてをホスト装置１０２（図１）に組込んでもよい。
【００２０】
図２に示される代表的な制御モジュール１０４は、コントローラ１０８と、インターフェイス（Ｉ／Ｆ）回路１１０と、メモリバッファ１１２とを含む。コントローラ１０８は、ホスト１０２とメモリモジュール１０６との間でのデータ転送を指示することを含めて、装置１００に対する全体的な制御機能を提供する。Ｉ／Ｆ回路１０８は、ホストとの、およびメモリモジュール１０６との、インターフェイス通信を提供する。バッファ１１２は、コントローラ１０８が使用するプログラミングおよび制御データの記憶場所を提供することができ、かつ、データアクセス動作中のデータの一時記憶領域を提供することができる。図２には具体的に示されていないが、制御モジュール１０４は、暗号化、エラー検出および訂正、ならびにその他の信号処理機能を含むさらに他の機能を含み得る。
【００２１】
示されているメモリモジュール１０６は、読出／書込／消去（Ｒ／Ｗ／Ｅ）回路１１４と、１つ以上のフラッシュメモリアレイ１１６とを含む。Ｒ／Ｗ／Ｅ回路１１４は、制御モジュール１０４からの制御入力に応答してフラッシュメモリアレイ１１６に対して読出、書込、および消去機能を果たすように動作する。このメモリはフラッシュメモリを利用しているが、これは例示にすぎず限定ではない。なぜなら、複数種類のメモリ（たとえばフラッシュ、ＲＲＡＭ、ＳＴＲＡＭ、ＰＣＲＡＭ等）を備えたハイブリッドシステムを含めて、任意の数の異種のソリッドステート不揮発性メモリを使用できるからである。
【００２２】
フラッシュメモリアレイ１１６は、図３に概要が示されている個々のフラッシュメモリセル１１８からなるものであってもよい。フラッシュメモリセル１１８は、間隔をおいて設けられたｎ＋ドープ領域１２２を有する半導体基板１２０上に形成される。ゲート構造１２４は、このフラッシュセルが一般的なｎＭＯＳトランジスタ構成となるように、一対の隣合うドープ領域にまたがっている。隣接するドープ領域１２２の対各々に、関連するゲート構造１２４が設けられるように、追加のフラッシュセルを基板上に形成することができる。
【００２３】
ゲート構造１２４は、導電性ゲート１２６、１２８と絶縁性領域１３０、１３２を交互に積層したものを提供する。データは、各セル１１８に、フローティングゲート（ＦＧ）として特徴付けられている下部ゲート１２６上に蓄積された電荷の相対的な量との関連で格納される。
【００２４】
フローティングゲートは、プログラミング動作中、隣接するドープ（ドレインおよびソース）領域１２２と制御ゲート（ＣＧ）として特徴付けられている上部ゲート１２８とに対する適切な電圧の選択的な印加により、電荷を蓄積する。印加されたこれらの電圧により、半導体基板１２０のチャネル（ＣＨ）部分から絶縁領域１３０を通してフローティングゲート１２６に、電荷の制御された移動が生じる。
【００２５】
初期消去状態では、通常、電荷はフローティングゲート上に実質的に蓄積されていないであろう。この状態において、セルは一般的に、制御ゲートに電圧を印加しなくても、チャネルを通したドレイン−ソース間の導通を示す傾向がある。一旦フローティングゲート上に電荷が蓄積すると、十分に高いゲート制御電圧を制御ゲートに印加してその時点でセルが導通しない限り、ドレイン−ソース間の経路は非導通状態であろう。セルのプログラム状態は、一般的にフローティングゲート上に蓄積された電荷の量に対応する、ドレイン−ソース電流がセルを流れるのに必要な制御ゲート電圧のレベルを観察することにより、判別することができる。
【００２６】
セル１１８は、シングルレベルセル（ＳＬＣ）として構成してもマルチレベルセル（ＭＬＣ）として構成してもよい。ＳＬＣは１ビットを格納し、通常は論理ビット値１を消去されたセルに割当て（実質的に蓄積電荷はない）論理ビット値０をプログラムされたセルに割当てる（蓄積電荷の選択されたしきい値が存在）。ＭＬＣは２ビット等のマルチビットを格納する。一般的に２ｎの格納状態を用いてｎビットを格納することができる。通常は、マルチビット論理値１１を電荷Ｃ０（実質的に蓄積電荷はない）の消去されたセルに割当て、次に残りのマルチビット論理値０１、００および１０を、より高くなる電荷レベルＣ１、Ｃ２およびＣ３に順次割当てる。
【００２７】
蓄積電荷をフローティングゲート１２６から抜くためには、一般的に特別な消去動作が必要である。消去は、相対的に高い電圧を制御ゲートに印加して電荷をフローティングゲートからチャネルに戻るように移動させることによって、行なうことができる。その後データ書込動作中に異なる一組の電圧をセルに印加することによってフローティングゲートに電荷を加えてもよい。
【００２８】
図３の１１８のようなメモリセルを、メモリモジュール１０６において、概ね図４に示されるようにメモリセルの行と列からなるアレイとして配置することができる。隣接するセルの各列は、１本以上のビット線（ＢＬ）１３４を介して結合することができる。各行に沿うセル１１８の制御ゲート１２８は、個々のワード線（ＷＬ）１３６を介して相互に接続することができる。
【００２９】
図４に示されるメモリセルのアレイを、図５および図６に示されるように消去ブロック１４０にグループ分けしてもよい。各消去ブロック１４０は、メモリの個別にアドレス可能なブロックであってもよく、一回で同時に消去できるメモリの最小単位を表わしている。各消去ブロック１４０は、メモリセルの複数の行１４２として配置してもよく、各行は、共通のワード線（図４）を共有し、選択された量のユーザデータの記憶場所を提供する。希望に応じてその他の内部配列および相互接続を利用することができる。
【００３０】
ブロックレベルのウェアレベリング（wear leveling）を採用することにより、さまざまなブロック１４０の消去および書込状態を追跡してもよい。新たに受信したデータを収容するために、必要に応じて新たなブロック割当てて使用する。いくつかの実施の形態では、ブロック１４０のグループを集めて、一単位として割当てられ、使用され、消去されるより大きなガーベジコレクション単位（ＧＣＵ）１４４にしてもよい。ＧＣＵ１４４は任意の適切な大きさにすればよい。
【００３１】
少なくともいくつかの実施の形態では、ページと呼ばれることもある固定サイズのデータセットを、一回で各行１４２に書込む。ページサイズは論理セクタに対応していてもよく、または、複数のユーザセクタを各ページ分のデータに組込んでもよい。セクタは各々、論理ブロックアドレス（ＬＢＡ）等の、関連する論理アドレスを有してもよい。パリティビットまたはリードソロモン符号等のエラー訂正符号をページレベルで組込むことによって、１ページ分のデータを取出したときにエラーを訂正してもよい。メタデータおよびその他の制御情報は、各消去ブロック１４０に格納してもよく、または、この目的専用の特定のブロック等の他の場所に格納してもよい。
【００３２】
図７は、図６のアレイのさまざまなフラッシュメモリセル１１８上に蓄積される電荷のレベルの違いについて、代表的な正規化電荷分布１５０、１５２、１５４および１５６を示す。
【００３３】
これらの分布は、電圧の大きさを示す共通のｘ軸１５８およびセル分布総数を示す共通のｙ軸１５９に対してグラフ化されている。
【００３４】
分布１５０、１５２、１５４および１５６は、名目上の蓄積電荷状態Ｃ０＜Ｃ１＜Ｃ２＜Ｃ３の相違を表わしており、ＭＬＣのプログラム状態１１、０１、００および１０に対応する。その他の符号化方式を用いてもよい。分布１５０は状態１１にプログラムされたアレイのメモリセル上の電荷量の一例を表わし、分布１５２は状態０１に対応し、分布１５４は状態００に対応し、分布１５６は状態１０に対応する。分布１５６におけるセルの蓄積電荷が最も多く、分布１５０におけるセルの蓄積電荷が最も少ない。
【００３５】
プログラム状態１１、０１、００および１０は、各セルにおけるデータの、異なる２つのページ(ブロック）のデータを表わすものであってもよい。この場合、プログラム状態の最下位ビット（ＬＳＢ）は第１ページのビット値を与えてもよく、プログラム状態の最上位ビット（ＭＳＢ）は第２ページのビット値を与えてもよい。
【００３６】
理想的なのは、電荷分布１５０〜１５６が重なり合っていないことによって、適切な読出しきい値電圧Ｔ１、Ｔ２、Ｔ３およびＴ４を印加すると、異なるプログラム状態が区別されることである。しきい値Ｔ１は名目上、分布１５０のメモリセルすべてをソース−ドレイン導通状態にするのに十分であるが分布１５２、１５４および１５６のセルを導通状態にするには不十分な電圧レベルを与える。しきい値Ｔ４は概ね、プログラム状態に関係なくすべてのセルを導通状態にするのに十分大きい。
【００３７】
選択されたフラッシュメモリセルのプログラム状態は、この選択セルのためのビット線１３４（図４）を適切な順方向電圧（たとえば＋３Ｖ等）にし、残りの非選択ビット線をそれ以外のより低い何らかの基準電圧（たとえば０Ｖ）にすることによって、読出すことができる。上記選択セルを含まない行のための非選択ワード線１３６を最大のしきい値Ｔ４にすることによって、選択セル以外の、選択列のセルすべてを、ソース−ドレイン導通状態にすることができる。
【００３８】
その後、選択セルに関連するＷＬ１３６に１つ以上の読出しきい値電圧を印加してもよく、選択セルのプログラム状態を、ビット線１３４および選択列のその他のセルに電流が流れるか否かに基づいて、判別してもよい。読出動作はこのようにして、所与の読出しきい値電圧が選択されたセルを導通状態にするのに十分であるか否かを評価し、列に電流を流すのに必要な印加電圧が高いほど、フローティングゲート上の蓄積電荷量は多い。
【００３９】
いくつかの実施の形態では、第１ページのデータを、ＳＬＣモードのセルの選択行に沿ってセルに書込む。第１ページのデータは、何らかの順序の論理０と１のビットシーケンスを構成するであろう（たとえば００１０１１１１０１００００１００…）。各セルには１ビットが格納されるであろう。論理１を格納すべきセルは、プログラミング力を受けない（または最小プログラミング力を受ける）ことによって、「１１」分布１５０の範囲内の電荷レベルを有することができる。論理０を格納すべきセルは、電荷レベルを「００」分布１５４の範囲内に引上げるのに十分なプログラミング力を受けるであろう。
【００４０】
格納されたビットシーケンスをＳＬＣから読出す場合、今度は読出しきい値電圧Ｔ２を各セルに印加すればよく、格納状態（論理１または０）は、この読出しきい値電圧を印加した結果セルが導通状態になったか否かに基づいて判別すればよい。
【００４１】
次に、第２ページのデータをＳＬＣセルに実質的に上書きすることにより、セルをＭＬＣ形態に変換してもよい。先に述べたのと同じく、第２ページのデータは論理０と１のビットシーケンスを構成し、各セルには第２ページのデータのうちの１ビットが格納されるであろう。論理１を格納すべきセルは、それ以上プログラム力を受けないであろう。論理０を格納すべきセルは、次に高い分布に電荷レベルを増分するのに十分な追加の電荷を受けるであろう。
【００４２】
論理１を「１１」分布１５０内のプログラムされたメモリセルに書込む場合、電荷を追加することによってこのセルは「０１」分布１５２に移行するであろう。同様に、論理１を「００」分布１５４内のプログラムされたメモリセルに書込む場合、電荷を追加することによってこのセルは「１０」分布１５６に移行するであろう。いずれの場合も、プログラムされたセルのＬＳＢ（右端のビット）は第１ページのデータのビット値を示し、プログラムされたセルのＭＳＢ（左端のビット）は第２ページのデータのビット値を示す。
【００４３】
理想的なのは、分布１５０〜１５６が十分な間隔を保っていることにより、異なるしきい値Ｔ１〜Ｔ４によってセルのプログラム状態を正確に識別できることである。しかしながら、時間の経過に伴い、消耗、読出ディスターブ、書込ディスターブ、温度、電荷ドリフト、製造許容差等のさまざまな影響が、図８において点線で示した分布１５２のシフトのように、所与の分布内のセルのドリフトを引起す可能性がある。シフトされた分布１５２のメモリセルのうちのいくつかは、実際のプログラム状態０１ではなくプログラム状態１１を格納しているものとして検出されるであろうことがわかる。電荷ドリフトの結果、総電荷蓄積量が増加または減少し、図８の分布の右方向のシフトが生じる可能性もある。
【００４４】
図９は、さまざまな実施の形態に従う、メモリセル１６２内のプログラミングドリフトを修正するように動作可能な部分再プログラミング回路１６０を示す。フラッシュメモリセルの場合、プログラミングドリフトは、図８に示されるような電荷ドリフトの形態であってもよい。その他、メモリセルは、ＰＣＲＡＭセル、ＲＲＡＭセル、ＳＴＲＡＭセル等の異なる形態を取ってもよく、プログラミングドリフトは、相変化ドリフト、抵抗ドリフト、減磁等の形態であってもよい。
【００４５】
部分再プログラミング回路１６０は、再プログラミング力をメモリセル１６２に与えることにより、このセルを以前のプログラム状態に戻す。再プログラミング力は、時間、パルス幅、電荷移動量、印加電界強度等の点で、通常のプログラミング力よりも少ない。このようにして、回路１６０は、現在のプログラミング状態を「微調整」することによってプログラミング分布を引き締める。
【００４６】
いくつかの実施の形態において、部分再プログラミング回路１６０は、コントローラ１０８もしくは読出／書込／消去（Ｒ／Ｗ／Ｅ）回路１１４の一部を形成するか、または、これらその他の回路とインターフェイスするスタンドアローン回路である。回路１６０は、検出または推定されたビットエラーレート（ＢＥＲ）、時間情報、温度測定値、累積書込／消去（Ｗ／Ｅ）回数等を含むいくつかの制御入力を用いることにより、再プログラミング力を与えるべきメモリセル候補を識別してもよい。ルックアップテーブル１６４は、さまざまな環境条件または状況の下で回路１６０が特定のセルを再プログラムできるようにするために使用されるプロファイル情報を格納することができる。
【００４７】
図１０は、たとえば選択行に沿って１グループのＭＬＣから２ページ（ブロック）のデータを読出すように動作可能な図２の読出／書込／消去回路１１４の読出部１７０を示す。コマンドデコーダブロック１７２は、読出コマンドを処理し、１つ以上のデジタル読出しきい値Ｔを、デジタルアナログ（ＤＡＣ）／ドライバ回路１７４に出力する。これに対し、ＤＡＣ／ドライバ１７４は、対応するアナログゲート電圧を（図９のメモリセル１６２によって表される）各セルに出力する。電源電圧Ｖｓが電源１７６によって印加される。セルの導通状態は、比較器１７８と、電源１８０からの適切な基準電圧Ｖｒを用いることによって、検知される。検知されたデータは、出力バッファ１８２に与えられ、出力バッファは格納データを別々に格納する（それぞれページ１およびページ２）。
【００４８】
各セルの格納状態の検知には、複数のしきい値が必要であろう。電圧しきい値Ｔ２を最初に印加することにより、ＭＳＢのページ１のデータの格納状態を検知することができる。次に、電圧しきい値Ｔ１およびＴ３を印加することにより、ＬＳＢのページ２のデータの格納状態を検知することができる。しきい値Ｔ２がセルを導通状態にした場合は、次にＴ１を印加することにより、セルが分布１５０にあるのか１５２にあるのか判別すればよい。同様に、しきい値Ｔ２がセルを導通状態にしなかった場合は、Ｔ３の印加によってセルが分布１５４にあるのか１５６にあるのか判別されるであろう。
【００４９】
このように、格納状態１１、０１、００または１０を容易に判別することができ、第１（ＭＳＢ）ビットは第１ページにおけるビットを示し、第２（ＬＳＢ）ビットは第２ページにおけるビットを示す。上記ステップを各ＭＬＣについて繰り返すことにより、第１および第２ページについて、回復されたビットシーケンスが生じるであろう。
【００５０】
セルのプログラミングは、図１０に示されるように読出／書込／消去回路１１４の書込回路部１９０によって実行することができる。チャージポンプ機構を用いることにより、離散的な量の蓄積電荷が順次選択されたセル１６２に移動し、それにより、電荷の総蓄積量が所望のプログラミング分布まで引上げられる。
【００５１】
電圧源１９２は、プログラミング電圧を、キャパシタ１９４またはその他の電荷蓄積素子に供給する。パワーＭＯＳＦＥＴまたはそれ以外の適切な装置の形態であってもよい、選択的に起動されたスイッチ１９６が周期的に閉じることにより、蓄積された電荷をキャパシタ１９４から選択されたメモリセル１６２に移動させる。
【００５２】
図１０の読出回路１７０を用いることにより、電荷の蓄積中に、いくつかのプログラムベリファイ（ＰＶ）読出しきい値電圧のうちの１つを、セルに周期的に印加することができる。いくつかの実施の形態において、図１１のプログラム処理は、セル１６２が特定のＰＶ読出しきい値に反応して導通状態になることがなくなるまで、続く。選択されたセルに対するプログラミング処理はその時点で終了する。
【００５３】
図１２は、プログラムされたメモリセルの分布について、もう１つの分布曲線１９８を示す。一連の電圧しきい値の印加により、この分布の大きさおよび形状を判別することができる。図１２に示されるように、低い方のベースラインしきい値Ｖａを、ベースラインしきい値よりもわずかに低いおよびわずかに高い（たとえば＋／−５％等）増分されたしきい値（Ｖａ−，Ｖａ＋）とともに印加することによって、分布曲線１９８の低い方の境界を特徴付けることができる。同様に、高い方のベースラインしきい値Ｖｂとそれに関連する増分されたしきい値Ｖｂ−、Ｖｂ＋を印加することにより、分布曲線１９８の高い方の境界を特徴付けることができる。
【００５４】
図１３は、通常プログラミングおよび部分プログラミング力の間に図１１の書込回路１９０によって与え図１０の読出回路１７０によって検知することができる、大きさが異なるプログラミング増分を示す。書込回路１９０によって、蓄積された電荷の相対的に大きいプログラミング増分２００を与えることにより、メモリセルを初期状態にプログラムしてもよく、次に、書込回路１９０によって、蓄積された電荷の相対的に小さい再プログラミング増分２０２を与えることにより、このセルを初期プログラム状態に戻してもよい。
【００５５】
たとえば、再び図７を参照して、初期プログラム状態１１の消去されたメモリセルは、蓄積電荷の総量を、電圧Ｖ２よって設定されたしきい値と電圧Ｖ３によって設定されたしきい値の間のレベルになるまで増加させるための、５または６（５〜６）個の増分２００を与えることによって、００状態にプログラムしてもよい。
【００５６】
その後、メモリセルのフローティングゲートから電荷が漏れて電荷の総量がしきい値Ｖ２の方向にドリフトすると、蓄積電荷の相対的に小さい部分プログラミング増分２０２を１つ以上与えることによって、メモリセルを以前のプログラム状態（たとえば蓄積電荷の総量が名目上以前と同一）に戻すことができる。
【００５７】
この部分プログラミングシーケンスは図１４に示されている。セルの最初の分布を、分布曲線２０４によって示される特定の状態にプログラムする。時間の経過に伴い、セルのうちの少なくともいくつかが電荷を失い、曲線２０６で示されるドリフトされた分布になる。
【００５８】
部分プログラミングの増分２０２を与えると、曲線２０８で示されるように分布全体が増す。増分２０２を引続き与えると、最終の部分プログラミング分布（曲線２１０）は、名目上元の曲線２０４と一致するであろう。
【００５９】
図１４のメモリセルの部分再プログラミングによって、完全な１サイクルの消去およびプログラミングを回避することにより、セルの消耗を減じメモリモジュール内におけるデータのコピーの総数を減じることができる。
【００６０】
図１５は、さまざまな実施の形態に従い実行されるステップを説明する部分再プログラミングルーチン２２０のフローチャートである。説明のために、ルーチン２２０を、図２〜図６に示されるフラッシュメモリアレイとの関連で述べる。これは例示であって限定ではない。
【００６１】
ステップ２２２で、メモリセルを選択状態にプログラムする。これは、希望に応じて、プログラム状態が１ページのデータに対応するかまたは複数ページのデータに対応する、ＳＬＣ状態またはＭＬＣ状態であってもよい。プログラム状態は、図７の分布曲線で表される状態から選択された１つの状態（たとえば１１、０１、００または１０）であってもよい。
【００６２】
選択されたある時間間隔の後、ステップ２２４で、このセルを部分再プログラミングの候補であると識別する。これはさまざまなやり方で実行できる。メモリセルの保持時間を、このセルが過度の劣化なしでプログラム状態を維持し得る経過時間として計算することができる。セルがそのプログラム状態を維持した実際の時間が計算された保持時間に等しくなるかそれ以上になった場合、このセルを部分再プログラミングの候補としてマークしてもよい。
【００６３】
その代わりに、セルに対して読出動作を行なってもよく、このセルを含むメモリのブロックのビットエラーレート（ＢＥＲ）が予め定められたしきい値を超える場合がある。その他の実施の形態では、このブロックの書込／消去回数が、このセルを評価する必要があることを示す特定のしきい値に達する場合がある。さらに他の実施の形態では、セルおよび／または隣接するセルに対して、読出ディスターブデータの可能性を示すのに十分多い回数の読出動作が行なわれる。その他任意の適切な要因、パラメータ、測定値、またはそれ以外の徴候を用いて、スケジュールに基づく全セルの周期的な再プログラミングを含む、部分再プログラミングの候補として、セルを識別することができる。
【００６４】
次にステップ２２６で、選択されたメモリセルに対して電圧しきい値テストを実行する。これは、図１２に示されるような１つ以上の電圧しきい値を印加してセルのプログラム状態を確認することを含み得る。
【００６５】
セルが十分なプログラミング劣化を示している場合、このルーチンは判定ステップ２２８からステップ２３０に進み電荷の１つ以上の増分をこのセルに与える。これは、図１１の回路１９０を用いて図１３の小さい増分２０２を与え、続いてステップ２３２に示されるように図１２の回路１８０によって適切な読出／プログラムベリファイ電圧しきい値を与えることを含み得る。このプロセスは、判定ステップ２３４で示されるように、セルが適切なレベルに回復するまで続行される。その後、ステップ２３６で、このセルは再プログラムされたものとしてマークされる。これは、上記メモリセルの関連メタデータにおける記録を含み得るものであり、セルがいつ再プログラムされたかを示すための日付／タイムスタンプを含んでもよい。その後ルーチンはステップ２３８で終了する。
【００６６】
本明細書で先に述べた部分再プログラミングを適用することによって、データの再書込および消去の発生頻度の低下が可能であることがわかる。それでもなお必要に応じてガーベジコレクション動作を行なうことはできるが、所与のＧＣＵ内のデータは、データリフレッシュが必要な状態ではなく（すなわち十分に古いためにプログラミングドリフトが生じた）、概ね古い（すなわち修正の範囲を超えている）という前提がある。
【００６７】
必ずしもプログラムセルの最初の一組のすべてのセルを再プログラムする訳ではない。むしろ、ビットエラーを示しているセルを評価およびプログラミングの対象とすればよく、残りのセルはそのままにしておけばよい。同様に、プログラミングドリフトが生じる可能性がより高いプログラミング状態のセル（たとえば「１０」にプログラムされたセル等）を部分的に再プログラムしてもよく、残りのセルはそのままにしておけばよい。その他の場合は、一行のメモリセルのうちのすべてのセルをプログラミングドリフトについて評価し最悪Ｘパーセント（たとえば最悪２０％等）を部分的に再プログラムし残りのセルはそのままにしておく。
【００６８】
フラッシュメモリセルに関連して本明細書に開示されているさまざまな実施の形態では、ドリフトメカニズムとして電荷レベルの低下を検討してきたが、状況によっては過剰な読出の場合のように電荷の増加が発生することが考えられる。追加量の電荷をゲートに加えるのではなく、プログラミング電圧の他の組を与えて電荷のごく一部をフローティングゲートから抜くように、書込回路を構成することが可能である。同様に、その他の種類のメモリセルに対しては双方向プログラミング調整を適用することもできる。
【００６９】
さまざまな実施の形態の構造および機能の詳細と併せて、本開示のさまざまな実施の形態の数多くの特徴および利点について上記説明の中で述べてきたが、この詳細な説明は例示にすぎず、以下の請求項を表現する用語の広い一般的な意味によって示される全範囲の本開示の原理の中で、詳細事項、特に構成要素の構造および配置を変更してもよいことが、理解されるはずである。
【図１】
0006027059.tif 000002
【図２】
0006027059.tif 000003
【図３】
0006027059.tif 000004
【図４】
0006027059.tif 000005
【図５】
0006027059.tif 000006
【図６】
0006027059.tif 000007
【図７】
0006027059.tif 000008
【図８】
0006027059.tif 000009
【図９】
0006027059.tif 000010
【図１０】
0006027059.tif 000011
【図１１】
0006027059.tif 000012
【図１２】
0006027059.tif 000013
【図１３】
0006027059.tif 000014
【図１４】
0006027059.tif 000015
【図１５】
0006027059.tif 000016