(57)【要約】  そのメモリセルが同時に消去可能なセルのブロックをなすようにグループ分けされているフラッシュＥＥＰＲＯＭシステムのような再プログラム可能な不揮発性メモリシステムはホストコマンドの実行中にメモリシステムのハウスキーピング操作をフォアグラウンドで行うように操作され、そのハウスキーピング操作はホストコマンドの実行とは関連しない。１つ以上のそのようなハウスキーピング操作とホストコマンドの実行との両方が、その特定のコマンドを実行するために確立された時間割り当て内で行われる。１つのそのようなコマンドは、受信されたデータのメモリへの書き込みである。１つのそのようなハウスキーピング操作は繰り返される消去および再プログラミングを通して累積する個々のブロックの損耗を均すことである。
2008529130.tif 000002
【特許請求の範囲】
【請求項１】
消去可能で再プログラム可能な不揮発性メモリシステムを操作する方法であって、その実行のための時間割り当てを有する前記メモリシステムの外側からのコマンドを受信したことに応答して、
前記コマンドを実行するために必要な機能を実行するステップと、
前記時間割り当て内にとどまりながら前記必要な機能を実行するために利用されるそれを超えて継続する時間にわたって前記メモリシステムの外側にビジー信号をアサートするステップと、
前記受信されたコマンドを実行するために不必要な前記メモリシステム内での１つのハウスキーピング操作の少なくとも一部分を前記継続するビジー信号時間中に実行するステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記受信されたコマンドは、前記メモリシステムに書き込まれるべきデータの１つ以上のユニットが続く書き込みコマンドを含む方法。
【請求項３】
請求項２記載の方法において、
前記メモリシステムに書き込まれるべきデータの複数のユニットが受信され、前記ビジー信号は前記データユニットの受信の間の少なくとも２つの間隔においてアサートされ、その時間の間に前記少なくとも１つのハウスキーピング操作を完了させることによって１つのハウスキーピング操作の前記少なくとも一部分が実行される方法。
【請求項４】
請求項３記載の方法において、
前記少なくとも１つのハウスキーピング操作は、前記少なくとも２つの間隔のうちの２つ以上の間に実行される方法。
【請求項５】
請求項４記載の方法において、
前記コマンドを実行するために必要な前記機能は、ガーベッジコレクション操作と、受信されたデータを前記メモリシステムに書き込むこととを含む方法。
【請求項６】
請求項１記載の方法において、
前記１つのハウスキーピング操作は前記メモリシステム内で１つの量のデータを１つの場所から他の場所に転送することを含み、そのようなハウスキーピング操作の少なくとも一部分を実行することは前記量のデータの一部分だけを転送することを含む方法。
【請求項７】
請求項６記載の方法において、
前記量のデータの残りの部分は、後に、特に前記１つのハウスキーピング操作を実行するように向けられていないガーベッジコレクション操作の実行中に転送される方法。
【請求項８】
請求項１記載の方法において、
前記少なくとも１つのハウスキーピング操作は、前記メモリの、前記コマンドの実行に関わっていない部分において実行される損耗均等化操作を含む方法。
【請求項９】
請求項１記載の方法において、
前記少なくとも１つのハウスキーピング操作は、前記メモリの、前記コマンドの実行に関わっていない部分に格納されているデータをリフレッシュすることを含む方法。
【請求項１０】
請求項１記載の方法において、
前記少なくとも１つのハウスキーピング操作は、前記メモリの、前記コマンドの実行に関わっていない部分において実行されるガーベッジコレクション操作を含む方法。
【請求項１１】
消去可能で再プログラム可能な不揮発性メモリシステムを操作する方法であって、所与の時間割り当て内でデータの１つ以上のユニットを転送するコマンドを受信したことに応答して、
データの前記１つ以上のユニットを転送できるためにハウスキーピング操作が必要か否かを判定するステップと、
データの前記１つ以上のユニットを転送できるためにハウスキーピング操作が必要ならば、少なくともその必要なハウスキーピング操作を実行するステップと、
データの１つ以上のユニットの転送に不必要なハウスキーピング操作が継続しているか否かを判定するステップと、
前記データ転送に不必要なハウスキーピング操作が継続しているならば、前記データ転送に不必要なその継続しているハウスキーピング操作を実行するために前記時間割り当て内の残りの時間が充分であるか否かを判定するステップと、
前記時間割り当て内に充分な時間が残っているならば、前記受信されたコマンドの実行中に前記データ転送に不必要な前記継続しているハウスキーピング操作の少なくとも一部分を実行するステップと、
前記所与の時間割り当て内でデータの前記１つ以上のユニットを転送するステップと、
を含む方法。
【請求項１２】
請求項１１記載の方法において、
前記データの前記１つ以上のユニットを書き込み得るためにハウスキーピング操作が必要か否かを判定するステップは、前記メモリの２つ以上の場所を単一の場所に整理統合する必要があるか否かを判定し、必要があるならば、そのようなデータを前記所与の時間割り当て内で整理統合するステップを含む方法。
【請求項１３】
請求項１１記載の方法において、
前記データ転送に不必要なハウスキーピング操作が継続しているか否かを判定するステップは、継続している損耗均等化交換を識別するステップを含み、前記データ転送に不必要な前記継続しているハウスキーピング操作を実行するステップは前記継続している損耗均等化交換の少なくとも一部分を前記所与の時間割り当て内で実行するステップを含む方法。
【請求項１４】
請求項１３記載の方法において、
前記データ転送に不必要な前記継続しているハウスキーピング操作を実行するステップは、前記所与の時間割り当て内で前記継続している損耗均等化交換の全体を実行するステップを含む方法。
【請求項１５】
請求項１１記載の方法において、
前記データ転送に不必要なハウスキーピング操作が継続しているか否かを判定するステップは、前記メモリシステムの、前記受信されたデータ転送コマンドの実行に関わる部分とは別の部分に格納されている指定されたデータをリフレッシュする操作を識別するステップを含み、前記データ転送に不必要な前記継続しているハウスキーピング操作を実行するステップは、前記指定されたデータの少なくとも一部分を前記所与の時間割り当て内でリフレッシュするステップを含む方法。
【請求項１６】
請求項１５記載の方法において、
前記データ転送に不必要な前記継続しているハウスキーピング操作を実行するステップは、前記指定されたデータの全体を前記所与の時間割り当て内でリフレッシュするステップを含む方法。
【請求項１７】
請求項１１記載の方法において、
前記データ転送に不必要なハウスキーピング操作が継続しているか否かを判定するステップは、前記メモリシステムの、前記受信された書き込みコマンドの実行に関わる部分とは別の部分でガーベッジコレクションを実行する操作を識別し、その後にそのようなガーベッジコレクションの少なくとも一部分を前記所与の時間割り当て内で実行するステップを含む方法。
【請求項１８】
請求項１７記載の方法において、
前記データ転送に不必要な前記継続しているハウスキーピング操作を実行するステップは、そのようなデータ転送の全体を前記所与の時間割り当て内で実行するステップを含む方法。
【請求項１９】
請求項１１記載の方法において、
連続するデータの２つ以上のユニットを受信するステップをさらに含み、前記データ転送に不必要な前記ハウスキーピング操作を実行するための前記時間割り当て内の時間の残りの量を判定するステップは、充分な時間が残っていると判定するという結果をもたらし、また、前記データ転送コマンドの実行を完了させるために不必要な少なくとも１つのビジー期間をアサートするステップをさらに含む方法。
【請求項２０】
請求項１１記載の方法において、
前記データ転送に不必要なハウスキーピング操作が継続し、前記データ転送に不必要な前記継続しているハウスキーピング操作の少なくとも一部分を実行するための充分な時間が前記時間割り当て内になければ、その実行されないハウスキーピング操作をそのような実行されない操作のカウントに加える方法。
【請求項２１】
請求項２０記載の方法において、
複数の実行されないハウスキーピング操作が前記カウントに含まれていることに応じて、各々を順序正しく、前記カウントがゼロになるまで全ての後のデータ書き込みコマンドの実行中に実行されるべく継続しているものとされる方法。
【請求項２２】
請求項２０記載の方法において、
複数の実行されていないハウスキーピング操作が前記カウントに含まれていることに応じて、各々の実行されていないハウスキーピング操作は、前記カウントがゼロになるまで全ての後のデータ転送コマンドの実行中に実行されるべく、一度に１つずつ順序正しく、継続しているものとされる方法。
【請求項２３】
請求項２０記載の方法において、
前記データ転送コマンドの実行と関連のないハウスキーピング操作は通常所定間隔で行われ、複数の実行されていないハウスキーピング操作が前記カウントに含まれていることに応じて、前記実行されていないハウスキーピング操作は、前記カウントがゼロになるまで後のデータ転送コマンドの実行中に前記所定間隔より短い間隔で実行されるべく、一度に１つずつ順序正しく、継続しているものとされる方法。
【請求項２４】
請求項２０記載の方法において、
前記データ転送コマンドの実行と関連のないハウスキーピング操作は通常所定間隔で行われ、複数の実行されていないハウスキーピング操作が前記カウントに含まれていることに応じて、前記実行されていないハウスキーピング操作のうちの少なくとも１つが前記所定間隔より短い間隔で後のデータ転送コマンドの実行中に実行されるべく継続しているものとされる一方で、前記実行されていないハウスキーピング操作のうちの少なくとも１つの他のものは実行されない方法。
【請求項２５】
同時に消去可能な数個のメモリセルの複数の物理ブロックに組織された消去可能で再プログラム可能な不揮発性メモリセルのシステムを操作する方法であって、論理グループアドレス内のデータが前記物理ブロックにマッピングされ、前記論理グループの１つにデータを書き込むコマンドと書き込まれるべきデータとを受信したことに応答して、
前記論理グループ内のデータが前記物理ブロックのうちの２つ以上にマッピングされているか否かを判定するステップと、
前記複数のブロックのうちの２つの間に損耗均等化交換が継続しているか否かを判定するステップと、
（ａ）前記論理グループ内のデータが前記物理ブロックのうちの２つ以上にマッピングされているのであれば、
前記物理ブロックのうちの前記２つ以上のデータを単一のブロックに整理統合するステップと、
受信したデータを前記論理グループと関連付けられた更新ブロックに書き込むステップと、或いは
（ｂ）前記論理グループ内のデータが前記物理ブロックのうちの２つ以上にマッピングされていないが損耗均等化交換が継続しているならば、
前記物理ブロックのうちの前記２つの間の損耗均等化交換を実行するステップと、
受け取ったデータを前記論理グループと関連付けられている更新ブロックに書き込むステップと、
を含む方法。
【請求項２６】
同時に消去可能な数個のメモリセルの複数の物理ブロックに組織された消去可能で再プログラム可能な不揮発性メモリセルのシステムを操作する方法であって、前記物理ブロックのうちの１つにマッピングされた論理グループアドレス内の入ってくるデータは前記１つのブロックに論理的にリンクされた更新された物理ブロックにプログラムされ、書き込みコマンドと書き込まれるべきデータとを受信したことに応答して、
前記書き込まれるべきデータを受け取るために更新ブロックが利用可能であるか否かを判定するステップと、
（ａ）更新ブロックが利用可能でなければ、
複数の更新ブロックのうちの１つのデータを、その更新ブロックのデータが論理的にリンクされている物理ブロックのデータと整理統合し、これにより更新ブロックを利用可能にするステップと、
その後に前記利用可能な更新ブロックにデータを書き込むステップと、或いは
（ｂ）更新ブロックが利用可能であれば、
前記物理ブロックのうちの２つの間でデータの損耗均等化交換を実行するステップと、
その後にデータを前記利用可能な更新ブロックに書き込むステップと、
を含む方法。
【請求項２７】
同時に消去可能な数個のメモリセルの複数の物理ブロックに組織された消去可能で再プログラム可能な不揮発性メモリセルのシステムを操作する方法であって、前記物理ブロックのうちの１つにマッピングされた論理アドレス内の入ってくるデータは前記１つのブロックに論理的にリンクされた更新された物理ブロックにプログラムされ、前記複数のブロックのうちの限られた数のものは更新ブロックとして指定され、少なくとも２つのブロックからのデータを１つのブロックに整理統合するガーベッジコレクションによって新しい更新ブロックが作られ、書き込みコマンドと書き込まれるべきデータとを受信したことに応答して、
前記書き込みコマンドの実行に不必要なハウスキーピング操作が継続し、それが前記複数のブロックのうちの１つからのデータの複数のユニットの更新ブロックへのコピーの必要性を含むか否かを判定するステップと、
肯定ならば、前記書き込みコマンドの実行中にデータの前記複数のユニットのうちの、前記ユニットの四分の一よりは少ない１つ以上のユニットを前記１つのブロックから前記更新ブロックのうちの１つにコピーするステップと、
前記１つの更新ブロックを、次にそのデータが整理統合されるものとして識別するステップと、
前記書き込みコマンドの実行後に、前記１つの更新ブロックに対してガーベッジコレクションを実行し、これにより前記１つのブロックの中のデータの前記複数のユニットのうちの残りのものが前記１つ以上のコピーされたユニットとともに共通のブロックに置かれるステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には不揮発性フラッシュメモリシステムの操作に関し、特にそのようなメモリシステムにおける損耗均等化(wear leveling) のようなハウスキーピング操作を実行する手法に関する。本願明細書において参照された全ての特許、特許出願、論文および他の刊行物は、あらゆる目的のためにその全体が本願明細書において参照により援用されている。
【背景技術】
【０００２】
多くの商業的に成功した不揮発性メモリ製品が、特に小形形状の取り外し可能なファクタカードまたは埋め込みモジュールの形で、今日使用され、それらは、１つ以上の集積回路チップ上に形成されたフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）のアレイを使用する。普通は（必ずしもそうではないが）別の集積回路チップ上に存するメモリコントローラが、システムが接続されるホストとインターフェイスするようにメモリシステムに含まれてカード内のメモリアレイの動作を制御する。そのようなコントローラは、通常、マイクロプロセッサと、何らかの不揮発性読み出し専用メモリ（ＲＯＭ）と、揮発性ランダムアクセスメモリ（ＲＡＭ）と、データがデータのプログラミングおよび読み出しの間にコントローラを通過するときにデータから誤り訂正符号（ＥＣＣ）を計算するもののような１つ以上の特別の回路とを含む。他のメモリカードおよび埋め込みモジュールはそのようなコントローラを含まないが、それらが接続されるホストが、コントローラ機能を提供するソフトウェアを含む。カードの形のメモリシステムは、ホストの外側のレセプタクルと結合するコネクタを含む。一方、ホスト内に埋め込まれたメモリシステムは、取り外されるように意図されてはいない。
【０００３】
コントローラを含む商業的に入手可能なメモリカードの幾つかは、次の商標、すなわちコンパクトフラッシュ（ＣＦ）、マルチメディア（ＭＭＣ）、セキュアデジタル（ＳＤ）、ミニＳＤ、マイクロＳＤ、およびトランスフラッシュのもとで販売されている。コントローラを含まないメモリシステムの例はスマートメディアカードである。これらのカードの全ては、本願の譲受人であるサンディスク  コーポレイションから入手可能である。これらのカードの各々は、それが取り外し可能に接続されるホスト装置との特別な機械的および電気的インターフェイスを有する。小形のハンドヘルド式フラッシュメモリ装置の他のクラスは、標準的ユニバーサルシリアルバス（ＵＳＢ）コネクタを通してホストとインターフェイスするフラッシュドライブを含む。サンディスク  コーポレイションは、そのような装置をクルーザー（Ｃｒｕｚｅｒ）という登録商標の下で提供している。カードのためのホストは、パーソナルコンピュータ、ノートブックコンピュータ、個人用携帯情報端末（ＰＤＡ）、種々のデータ通信装置、デジタルカメラ、携帯電話機、携帯用オーディオプレーヤ、自動車音響システム、および類似のタイプの装置を含む。フラッシュドライブは、パーソナルコンピュータおよびノートブックコンピュータのような、ＵＳＢレセプタクルを有するどのようなホストとも協働する。
【０００４】
ＮＯＲおよびＮＡＮＤという２つの一般的なメモリセルアレイ構造が、商業的用途を見出した。代表的なＮＯＲアレイでは、メモリセルは列方向に延びる隣り合うビット線ソースおよびドレイン拡散の間に接続され、コントロールゲートはセルの行に沿って延びるワード線に接続される。メモリセルは、ソースおよびドレインの間のセルチャネル領域の少なくとも一部分の上に位置する少なくとも１つの記憶素子を含む。従って、記憶素子上の電荷のプログラムされたレベルはセルの動作特性を制御し、それは、アドレス指定されたメモリセルに適切な電圧を印加することによって読み出され得る。このようなセル、メモリシステムにおけるその使用およびその製造方法が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１３，４２１号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）、および第６，２２２，７６２号（特許文献７）で説明されている。
【０００５】
ＮＡＮＤアレイは、１つ以上の選択トランジスタと共に個々のビット線と基準電位との間に接続されてセルの列を形成する、１６個または３２個などの、２つより多いメモリセルの直列ストリングを利用する。ワード線は、多数のこれらの列の中でセルを横断して延びる。列内の個々のセルは、ストリングを流れる電流がアドレス指定されたセルに蓄積されている電荷のレベルに依存することとなるようにストリング中の残りのセルをオンに転換しにくくすることによって、プログラミング中に読み出されベリファイされる。メモリシステムの一部としてのＮＡＮＤ構造のアレイおよびその動作の例が、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）、第６，３７３，７４６号（特許文献１１）、第６，４５６，５２８号（特許文献１２）、第６，５２２，５８０号（特許文献１３）、第６，７７１，５３６号（特許文献１４）、および第６，７８１，８７７号（特許文献１５）に見出される。
【０００６】
前に引用された特許において論じられている、現行のフラッシュＥＥＰＲＯＭアレイの電荷記憶素子は、最も一般的には、通常伝導性にドープされたポリシリコン材料から形成される、導電性フローティングゲートである。フラッシュＥＥＰＲＯＭシステムにおいて有益な代わりのタイプのメモリセルは、電荷を不揮発性に蓄積するために伝導性フローティングゲートの代わりに非伝導性誘電体材料を利用する。酸化ケイ素、窒化ケイ素および酸化ケイ素から成る３層誘電体（ＯＮＯ）が、伝導性コントロールゲートと、メモリセルチャネルの上の半伝導性基板の表面との間に挟まれる。セルは、電子をセルチャネルから窒化物に注入することによってプログラムされ、そこでそれらは限られた領域に捕獲され蓄積され、窒化物にホットホールを注入することによって消去される。誘電体記憶素子を使用するいくつかの具体的なセル構造とアレイとが、ハラリらの米国公開特許出願第２００３／０１０９０９３号（特許文献１６）で説明されている。
【０００７】
ほとんど全ての集積回路の用途の場合と同じく、或る集積回路機能を実現するために必要とされるシリコン基板面積を小さくする圧力がフラッシュＥＥＰＲＯＭメモリセルアレイに関しても存在する。所与のサイズのメモリカードおよび他のタイプのパッケージの記憶容量を増やすために、或いは容量を増やしかつサイズを小さくするために、シリコン基板の所与の領域に格納され得るデジタルデータの量を増やすことがしばしば望まれる。データの記憶密度を増やす１つの方法は、メモリセルあたりおよび／または記憶ユニットまたは記憶素子あたり１ビットより多いデータを格納することである。これは、記憶素子電荷レベル電圧範囲のウィンドウを２つより多い状態に分割することによって達成される。そのような状態を４つ用いれば各セルは２ビットのデータを記憶することができ、８個の状態は記憶素子あたりに３ビットを記憶させるなどである。フローティングゲートを用いる多状態フラッシュＥＥＰＲＯＭ構造およびその動作が、米国特許第５，０４３，９４０号（特許文献１７）および第５，１７２，３３８号（特許文献１８）で説明され、誘電体フローティングゲートを用いる構造については前述した米国公開特許出願第２００３／０１０９０９３号（特許文献１６）で説明されている。多状態メモリセルアレイの選択された部分は、いろいろな理由から、米国特許第５，９３０，１６７号（特許文献１９）および第６，４５６，５２８号（特許文献１２）に記載されているように、２状態（バイナリ）でも操作され得る。
【０００８】
代表的なフラッシュＥＥＰＲＯＭアレイのメモリセルは、一緒に消去されるセルの別々のブロックに分けられる。すなわち、ブロックは消去単位、すなわち同時に消去可能な最小数のセル、である。各ブロックは通常１ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、別々のサブアレイまたはプレーンにおいて１ページより多くが並列にプログラムされ或いは読み出されてもよい。各ページは通常１セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより定められる。一例としてのセクタは、磁気ディスクドライブに関して確立された標準規格に従う５１２バイトのユーザデータと、これに加えられる、そのユーザデータにかつ／またはそれが格納されているブロックに関する数バイトのオーバーヘッド情報とを含む。そのようなメモリは通常各ブロック内に１６ページ、３２ページ、或いはそれより多くのページを有するように設定され、各ページは１つまたはほんの少数のホストセクタのデータを記憶する。
【０００９】
ユーザデータをメモリアレイにプログラムし、またメモリアレイからユーザデータを読み出す間の並列度を高めるために、アレイは、通常、一般にプレーンと称されるサブアレイに分割され、それらは、幾つかのプレーンの各々にまたは全プレーンに同時にデータのセクタをプログラムし或いはそれらから同時にデータのセクタを読み出し得るように並列動作を可能にするために、それら自身のデータレジスタおよび他の回路を含む。単一の集積回路上のアレイは物理的に複数のプレーンに分割され得、或いは各プレーンは別々の１つ以上の集積回路チップから形成され得る。このようなメモリの実施例が、米国特許第５，７９８，９６８号（特許文献２０）および第５，８９０，１９２号（特許文献２１）に記載されている。
【００１０】
メモリをさらに効率よく管理するために、ブロック同士を結合させて仮想ブロックまたはメタブロックを形成することができる。すなわち、各メタブロックは、各プレーンからの１つのブロックを含むように定められる。メタブロックの使用が、米国特許第６，７６３，４２４号（特許文献２２）で説明されている。メタブロックの物理アドレスは、データをプログラムしかつ読み出すための宛先として論理ブロックアドレスからの変換により確立される。同様に、メタブロックの全てのブロックは一緒に消去される。このような大きなブロックおよび／またはメタブロックを持って操作されるメモリシステムのコントローラは、ホストから受け取られた論理ブロックアドレス（ＬＢＡ）とメモリセルアレイ内の物理ブロック番号（ＰＢＮ）との間の変換を含む幾つかの機能を実行する。ブロック内の個々のページは、通常、ブロックアドレス内のオフセットにより識別される。アドレス変換は、しばしば、論理ブロック番号（ＬＢＮ）と論的ページとの中間用語 (intermediate terms) の使用を必要とする。
【００１１】
消去済みブロックプールにおいて維持される特別のブロックを用いて大きなブロックまたはメタブロックシステムを操作することは普通のことである。ブロックの容量より少ない１ページ以上のデータが更新されるとき、更新されたページをプールからの消去済みブロックに書き込み、その後に、変更されないページのデータを元ブロックから消去プールブロックにコピーするのが一般的である。この手法の変形例が、前述した米国特許第６，７６３，４２４号（特許文献２２）に記載されている。時間が経つと、ホストデータファイルが書き換えられ更新される結果として、多くのブロックの割合に少数のページが有効なデータを包含し、残りのページは最早現行のデータではないデータを包含するように多くのブロックがなり得る。アレイのデータ記憶容量を効率よく使えるようにするために、有効なデータの論理的に関連するページが多数のブロックの中のフラグメントから時折集められて、より少数のブロックの中に整理統合される。このプロセスは一般に“ガーベッジコレクション”と称される。
【００１２】
単一のブロックまたはメタブロック内のデータも、そのブロック内のかなりの量のデータが陳腐化したときに、圧縮され得る。これは、そのブロックの残りの有効なデータを空白の消去済みブロックの中にコピーし、その後に元ブロックを消去することを含む。そのコピーブロックは、元ブロックからの有効なデータの他に、以前は陳腐化したデータにより占められていた消去済み記憶容量を包含する。有効なデータは、通常、コピーブロックの中に論理的順序に配置され、これによりデータの読み出しをより容易にする。
【００１３】
メモリシステムの操作のための制御データは一般的には１つ以上の予備ブロックまたはメタブロックに格納される。そのような制御データは、プログラミング電圧および消去電圧のような操作パラメータと、ファイルディレクトリ情報およびブロック割り当て情報を含む。所与の時にコントローラがメモリシステムを操作するのに必要なだけの情報がＲＡＭにも格納され、更新時にフラッシュメモリに書き戻される。制御データの頻繁な更新は、予備ブロックの頻繁な圧縮および／またはガーベッジコレクションという結果をもたらす。複数の予備ブロックがある場合には、２つ以上の予備ブロックのガーベッジコレクションが同時にトリガーされることがあり得る。そのような時間を消費する操作を避けるために、予備ブロックの自発的なガーベッジコレクションが、必要になる前に、それらがホストに収容されうるときに時々開始され得る。そのような先制データ再配置手法が、２００４年８月１３日に出願された米国特許出願第１０／９１７，７２５号（特許文献２３）に記載されている。ガーベッジコレクションは、ユーザデータ更新ブロックに対して、それが完全に満杯になり、それによりホストから提供されたデータをメモリに書き込めるようになる直前に行われなければならないガーベッジコレクションをトリガーするのを待つのではなくて、それがほぼ満杯になったときに行われてもよい。
【００１４】
或るメモリシステムでは、物理的メモリセルは２つ以上のゾーンにもグループ分けされる。ゾーンは、物理的メモリまたはメモリシステムの、指定された範囲の論理ブロックアドレスが中にマッピングされる任意の区画されたサブセットであり得る。例えば、６４メガバイトのデータを記憶できるメモリシステムは、ゾーンあたりに１６メガバイトのデータを記憶する４つのゾーンに区画され得る。論理ブロックアドレスの範囲も４つのグループに分割され、１つのグループが４つのゾーンの各々の物理ブロックに割り当てられる。論理ブロックアドレスは、代表的な実施例では、その各々のデータが、それらの論理ブロックアドレスがマッピングされている単一の物理的ゾーンの外側には決して書き込まれないように、制限される。それ自身のアドレス指定回路、プログラミング回路および読み出し回路を各々有するプレーン（サブアレイ）に分割されているメモリセルアレイでは、各ゾーンは、好ましくは、複数のプレーンからのブロックを、一般的には各プレーンからの同数のブロックを、含む。ゾーンは、主として、論理から物理への変換のようなアドレス管理を簡略化するために使用され、その結果としてより小さな変換テーブルをもたらし、これらのテーブルを保持するために必要なＲＡＭメモリを少なくし、メモリの現在アクティブな領域をアドレス指定するためのアクセス時間を高速化するけれども、その制限の多い性質の故に最適には及ばない損耗均等化をもたらすことがあり得る。
【００１５】
個々のフラッシュＥＥＰＲＯＭセルは１ビット以上のデータを表す量の電荷を電荷記憶素子またはユニットに蓄積する。記憶素子の電荷レベルはそのメモリセルのしきい値電圧（一般にＶT として参照される）を制御し、それはセルの記憶状態を読み出す基礎として用いられる。しきい値電圧ウィンドウは、一般に、メモリセルの２つ以上の記憶状態の各々について１つずつ、数個の範囲に分割される。これらの範囲は、個々のセルの記憶状態を判定することを可能にする公称感知レベルを含むガードバンドにより分離される。これらの記憶レベルは、隣接するまたは関連する他のメモリセル、ページまたはブロックで実行される電荷を乱すプログラミング、読み出しまたは消去操作の結果として移動する。従って、通常、誤り訂正符号（ＥＣＣ）がコントローラによって計算されて、プログラムされるホストデータと共に格納され、読み出し中にデータをベリファイし、必要ならば或るレベルのデータ訂正を行うために使用される。また、移動する電荷レベルを、乱す操作がそれらを定められた範囲の外へ完全に移動させ、従って間違ったデータを読み出させるようになる前に、時折その状態範囲の中央に復帰させることができる。この、データリフレッシュまたはスクラブと称されるプロセスは、米国特許第５，５３２，９６２号（特許文献２４）および第５，９０９，４４９号（特許文献２５）と、２００３年１０月３日に出願された米国特許出願第１０／６７８，３４５号（特許文献２６）とに記載されている。
【００１６】
フラッシュメモリセルの応答性は、通常、時間が経つと、セルが消去され再プログラムされた回数の関数として変化する。これは、各々の消去および／または再プログラミング操作の間に少量の電荷が記憶素子誘電体層に捕獲され、それは時間が経つに連れて累積する結果であると考えられている。これは、一般に、メモリセルの信頼性が低下するという結果をもたらし、メモリセルが古くなるに連れて消去およびプログラミングのためにより高い電圧を必要とし得る。メモリ状態がそこでプログラムされ得るところの実効しきい値電圧ウィンドウも、電荷保持の結果として減少し得る。これは、例えば、米国特許第５，２６８，８７０号（特許文献２７）に記載されている。結果は、メモリセルの限られた有効寿命である。すなわち、メモリセルブロックは、システム外にマッピングされる前に、前もって決められた数の消去および再プログラミングサイクルのみを受けるに過ぎない。フラッシュメモリブロックが望ましく受けるサイクルの数は、メモリセルの具体的な構造、記憶状態のために使用されるしきい値ウィンドウの総量、各セルの記憶状態の数が増えるに連れて普通は増大するしきい値ウィンドウの大きさによる。これらの要素と、他の要素とにより、ライフタイムサイクルの数は少なくて１０，０００、多くて１００，０００または数十万であり得る。
【００１７】
前述した米国特許第５，２６８，８７０号（特許文献２７）に記載されているように、個々のブロックのメモリセルが受けたサイクルの数を追跡することが望ましいと考えられるならば、各ブロックのために、またはブロックのグループの各々のためにカウントを維持することができ、それはブロックが消去されるごとに増分される。このカウントは、そこに記載されているように、各ブロックに格納され得、或いは米国特許第６，４２６，８９３号（特許文献２８）に記載されているように別のブロックに他のオーバーヘッド情報と共に格納され得る。ブロックが最大ライフタイムサイクルカウントに達したときにブロックをシステム外にマッピングするために用いるほかに、カウントは、メモリセルブロックが古くなってゆくに連れて消去およびプログラミングパラメータを制御するために早くから使用され得る。サイクル数の正確なカウントを維持するのではなくて、米国特許第６，３４５，００１号（特許文献２９）はランダムなまたは擬似ランダムなイベントが発生したときにサイクル数の圧縮されたカウントを更新する手法を説明している。
【００１８】
サイクルカウントは、システムのメモリセルブロックの使用を、それらがその寿命の終わりに達する前に、均すためにも使用され得る。幾つかの異なる損耗均等化手法が、米国特許第６，２３０，２３３号（特許文献３０）、米国公開特許出願第２００４／００８３３３５号（特許文献３１）、並びに２００２年１０月２８日に出願された次の米国特許出願、すなわち第１０／２８１，７３９号（現在、国際公開特許出願第２００４／０４０５７８号として公開されている）（特許文献３２）、第１０／２８１，８２３号（現在、米国公開特許出願第２００４／０１７７２１２号として公開されている）（特許文献３３）、第１０／２８１，６７０号（現在、国際公開特許出願第２００４／０４０５８５号として公開されている）（特許文献３４）、および第１０／２８１，８２４号（現在、国際公開特許出願第２００４／０４０４５９号として公開されている）（特許文献３５）、に記載されている。損耗均等化の主な利点は、他のブロックがほとんど使用されていないのに或るブロックがその最大サイクルカウントに達し、これによりシステム外にマッピングされなければならなくなるのを防止することである。サイクルの数をシステムの全てのブロックに適度に均一に分散させることによって、メモリの総容量が良好な性能特性と共に長期間にわたって維持され得る。２００４年１１月１５日に出願された米国特許出願第１０／９９０，１８９号（特許文献３６）に記載されているように、損耗均等化は、メモリブロックサイクルカウントを維持せずに実行されてもよい。
【００１９】
損耗均等化の他のアプローチでは、論理−物理ブロックアドレス変換を、一度に１または数ブロック、増分することによってブロックの物理的ゾーン間の境界をメモリセルアレイ内で徐々に移動させる。これは、米国公開特許出願第２００４／００８３３３５号（特許文献３１）で説明されている。
【００２０】
メモリセルの少数のブロックがメモリシステムの他のものより遥かに多数の消去および再プログラミングサイクルを受けることの主な原因は、割合に少数の論理ブロックアドレスのデータセクタをホストが頻繁に書き換えることである。これは、ファイル割り当てテーブル（ＦＡＴ）などの、メモリに格納されているハウスキーピングデータの或るセクタをホストが頻繁に更新するメモリシステムの多くの用途において発生する。ホストの特定の使用も、少数の論理ブロックを他よりも遥かに頻繁にユーザデータで書き換えさせる原因になり得る。指定された論理ブロックアドレスにデータを書き込むホストからのコマンドを受け取ったことに応答して、そのデータは消去済みブロックのプールの小数のブロックのうちの１つに書き込まれる。すなわち、同じ論理ブロックアドレスの元データが存在する同じ物理ブロックにデータを再び書き込む代わりに、論理ブロックアドレスは消去済みブロックプールのブロックに再マッピングされる。元の現在無効なデータを含むブロックは、直ぐに消去されるか、または後のガーベッジコレクション操作の一部として消去され、その後に消去済みブロックプールに入れられる。小数の論理ブロックアドレス内のデータだけが他のブロックより遥かに多く更新されるとき、結果は、システムの割合に少数の物理ブロックがより高い率で循環されるということである。もちろん、前述した理由から、そのように著しく不均一な論理ブロックアクセスに遭遇するときには物理ブロックの損耗 (wear) を均す能力をメモリシステム内に設けることが望ましい。
【特許文献１】米国特許第５，０７０，０３２号
【特許文献３】米国特許第５，３１３，４２１号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，３７３，７４６号
【特許文献１２】米国特許第６，４５６，５２８号
【特許文献１３】米国特許第６，５２２，５８０号
【特許文献１４】米国特許第６，７７１，５３６号
【特許文献１５】米国特許第６，７８１，８７７号
【特許文献１６】米国公開特許出願第２００３／０１０９０９３号
【特許文献１７】米国特許第５，０４３，９４０号
【特許文献１８】米国特許第５，１７２，３３８号
【特許文献１９】米国特許第５，９３０，１６７号
【特許文献２０】米国特許第５，７９８，９６８号
【特許文献２１】米国特許第５，８９０，１９２号
【特許文献２２】米国特許第６，７６３，４２４号
【特許文献２３】米国特許出願第１０／９１７，７２５号
【特許文献２４】米国特許第５，５３２，９６２号
【特許文献２５】米国特許第５，９０９，４４９号
【特許文献２６】米国特許出願第１０／６７８，３４５号
【特許文献２７】米国特許第５，２６８，８７０号
【特許文献２８】米国特許第６，４２６，８９３号
【特許文献２９】米国特許第６，３４５，００１号
【特許文献３０】米国特許第６，２３０，２３３号
【特許文献３１】米国公開特許出願第２００４／００８３３３５号
【特許文献３２】国際公開特許出願第２００４／０４０５７８号
【特許文献３３】米国公開特許出願第２００４／０１７７２１２号
【特許文献３４】国際公開特許出願第２００４／０４０５８５号
【特許文献３５】国際公開特許出願第２００４／０４０４５９号
【特許文献３６】米国特許出願第１０／９９０，１８９号
【発明の開示】
【００２１】
メモリシステムと操作可能に接続されているホストシステムから受信されたコマンドの実行中に、そのコマンドの実行のために設定された時間割り当て内で、ハウスキーピング操作が実行される。メモリシステムがコマンドを実行し得るために必要なハウスキーピング操作に加えて、受信されたコマンドの実行とは直接関連していなくて、この実行のために必要ではないハウスキーピング操作も実行され得る。そのような関連のないハウスキーピング操作は、コマンドが実行されるたびに行われなくてもよいが、或るコマンド実行の間だけに実行されるように限定され得る。例えば、終えるのに時間がかかり過ぎる関連のないハウスキーピング操作は、コマンド関連のハウスキーピング操作がそのコマンドを実行するために不要であるために必要な時間が利用し得るようになるコマンドの受信を待ってもよい。ホストコマンドの実行の一部としてハウスキーピング機能を実行することにより、ホストがハウスキーピング操作を完了させることを許すか否かに関して、それらがホストにより設定された既知の時間割り当て内で完了する限りは、不確実性はない。
【００２２】
関連のないハウスキーピング操作は、損耗均等化、スクラッビング、データ圧縮、および先制ガーベッジコレクションを含むガーベッジコレクションを含む。ガーベッジコレクションまたはコマンド実行に必要な他のハウスキーピング操作に加えて、メモリシステムは、コマンドの実行に必要ではないハウスキーピング操作を実行することができる。例えば、損耗均等化は、書き込みコマンドを実行するためには不要であるけれども、割り当て内でそうする時間があるときには、そのようなコマンドの実行中に都合よく行われる。時間割り当ては、データ書き込みのようなコマンドを実行するためのホストタイムアウトなどにより、またはメモリシステムが投入されそうな用途において書き込みまたは読み出しの間に一定で最低の所要データ転送速度が存在することにより、確立される。複数のハウスキーピング操作を実行するのに充分な時間がない１つの特定の例では、ガーベッジコレクションが不要な書き込みコマンドの実行中に損耗均等化が実行される。
【００２３】
本発明の付加的な態様、利点および特徴は、添付図面と関連して検討されるべきであるその代表的な例についての以下の説明に含まれている。
【発明を実施するための最良の形態】
【００２４】
メモリ構造およびその動作
最初に図１Ａを参照すると、フラッシュメモリはメモリセルアレイとコントローラとを含む。示されている例では、２つの集積回路装置（チップ）１１および１３はメモリセルのアレイ１５と種々の論理回路１７とを含む。論理回路１７は、データ回路、コマンド回路およびステータス回路を通して別のチップ上のコントローラ１９とインターフェイスし、アドレス指定、データ転送、検知およびその他のサポートをアレイ１３に提供する。メモリアレイチップの数は、提供される記憶容量により、１から多数におよび得る。或いは、コントローラと一部またはアレイ全体とが単一の集積回路チップに統合されてよいが、それは現在では経済的な選択肢ではない。コントローラ機能を提供するためにホストに依存するフラッシュメモリ装置は、メモリ集積回路装置１１および１３以外のものをほとんど含まない。
【００２５】
典型的なコントローラ１９は、マイクロプロセッサ２１と、主としてファームウェアを記憶する読み出し専用メモリ（ＲＯＭ）２３と、主としてメモリチップ１１および１３に書き込まれまたはこれらから読み出されたユーザデータを一時的に記憶するバッファメモリ（ＲＡＭ）２５とを含む。回路２７はメモリアレイチップ(単数または複数）とインターフェイスし、回路２９は接続部３１を通してホストとインターフェイスする。この例ではデータの完全性は、コードの計算に専用される回路３３でＥＣＣを計算することにより判定される。ユーザデータがホストからフラッシュメモリアレイに格納されるべく転送されるとき、この回路はそのデータからＥＣＣを計算し、コードはメモリに格納される。そのユーザデータは、後にメモリから読み出される時、再び回路３３を通され、これは同じアルゴリズムによってＥＣＣを計算し、そのコードを、計算されてこのデータと共に格納されたものと比較する。それらが同等であれば、データの完全性が確認される。それらが違っていれば、利用される特定のＥＣＣアルゴリズムにより、間違っているビットは、アルゴリズムによりサポートされる数まで、識別されて訂正され得る。
【００２６】
図１Ａのメモリの接続部３１はホストシステムの接続部３１’と結合し、その例が図１Ｂにおいて示されている。ホストと図１Ａのメモリとの間でのデータ転送はインターフェイス回路３５を通して行われる。代表的なホストは、マイクロプロセッサ３７、ファームウェアコードを記憶するＲＯＭ３９、およびＲＡＭ４１も含む。他の回路およびサブシステム４３は、具体的なホストシステムに依存して、しばしば、大容量磁気データ記憶ディスクドライブ、キーボードのためのインターフェイス回路、モニタなどを含む。そのようなホストの幾つかの例は、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、個人用携帯情報端末（ＰＤＡ）、ＭＰ３および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線および有線電話装置、留守番電話、ボイスレコーダ、ネットワークルータおよびその他を含む。
【００２７】
図１Ａのメモリは、図１Ｂのホストと取り外し可能に接続され得る形でコントローラおよびその全てのメモリアレイ回路装置を含む小形の閉鎖形メモリカードまたはフラッシュドライブとして実現され得る。すなわち、結合する接続部３１および３１’は、カードを切り離して他のホストに移すこと、或いは他のカードをホストに接続することによってカードを取り替えることを可能にする。或いは、メモリアレイ装置１１および１３は、コントローラおよび接続部３１を含む他のカードと電気的にかつ機械的に接続可能な別個のカードに封入されてもよい。別の選択肢として、図１Ａのメモリは図１Ｂのホスト内に埋め込まれてもよく、その中では接続部３１および３１’は永久的に作られる。この場合、メモリは普通他のコンポーネントと共にホストのエンクロージャ内に含まれる。
【００２８】
本願明細書の発明手法は種々の具体的な構成を有するシステムで実施され得、その例が図２〜６において示されている。図２は、メモリセルがグループ分けされてブロックを成しているメモリアレイの一部分を示し、各ブロック内のセルは、単一の消去操作の一部として普通は同時に一緒に消去され得る。ブロックは消去の最小単位である。
【００２９】
図２の個々のメモリセルブロックのサイズは様々でありうるが、１つの商業的に実施されている形は１つのブロックに単一セクタのデータを含む。そのようなデータセクタの内容が図３に示されている。ユーザデータ５１は通常５１２バイトである。ユーザデータ５１のほかにオーバーヘッドデータがあり、このオーバーヘッドデータが、ユーザデータから計算されたＥＣＣ５３と、セクタデータおよび／またはそのセクタがプログラムされているブロックに関連するパラメータ５５と、パラメータ５５および包含され得る他のオーバーヘッドデータから計算されたＥＣＣ５７とを含む。或いは、ユーザデータ５１およびパラメータ５５の全部から単一のＥＣＣが計算されてもよい。
【００３０】
パラメータ５５は、そのブロックが経験したプログラミング／消去サイクルの数に関連する量を含むことができ、この量は、各サイクル後にまたは或る数のサイクルの後に更新される。この経験量が損耗均等化アルゴリズムに用いられるとき、全てのブロックの使用（損耗）を均すために論理ブロックアドレスは定期的に異なる物理ブロックアドレスに再マッピングされる。経験量の他の使用方法は、プログラミング、読み出しおよび／または消去の電圧および他のパラメータを、いろいろなブロックが経験したサイクルの数の関数として変更することである。
【００３１】
パラメータ５５は、メモリセルの記憶状態の各々に割り当てられたビット値の（それらの“ローテーション”と称される）表示を含むこともできる。これも、損耗均等化に有益な効果を有する。ステータスまたは状態を示す１つ以上のフラグもパラメータ５５に含まれ得る。ブロックをプログラミングおよび／または消去するために使用されるべき電圧レベルの表示もパラメータ５５の中に格納され得、これらの電圧は、ブロックが経験したサイクルの数と他の要素とが変化すると更新される。パラメータ５５の他の例は、ブロック内の欠陥のあるセルの識別と、この物理ブロックにマッピングされているブロックの論理アドレスと、主ブロックに欠陥がある場合の代替のブロックのアドレスとを含む。あらゆるメモリシステムにおいて使用されるパラメータ５５の具体的な組み合わせは、設計に応じて変化する。また、オーバーヘッドデータの一部または全部は、ユーザデータを含むかまたはそのオーバーヘッドデータが関連するブロックに格納されるのではなくて、そのような機能に専用されるブロックに格納されてもよい。
【００３２】
図４のマルチセクタブロックは、図２の単一データセクタブロックとは異なる。依然として消去の最小単位であるブロック５９の例は４つのページ０〜３を含み、その各々はプログラミングの最小単位である。データの１つ以上のホストセクタが、普通は、少なくともそのセクタのデータから計算されたＥＣＣを含むオーバーヘッドデータと共に各ページに格納され、図３のデータセクタの形をとることができる。
【００３３】
ブロック全体のデータ書き換えは、普通、新しいデータを消去ブロックプールの消去済みブロックにプログラムすることを含み、その後に元ブロックは消去されて消去プールに置かれる。ブロックの全ページよりは少ないデータが更新されるとき、更新されたデータは、通常、消去済みブロックプールからの消去済みブロックのページに格納され、残りの変更されないページは元ブロックからその新しいブロックにコピーされる。その後、元ブロックは消去される。或いは、新しいデータは、データが更新されるブロックと関連付けられた更新ブロックに書き込まれてよく、更新ブロックはこのブロックへのさらなる更新を受け入れるようになるべく長く開いたままにされる。更新ブロックが閉じられなければならないとき、更新ブロックと元ブロックとの中の有効なデータがガーベッジコレクション操作で単一のコピーブロックにコピーされる。これらの大ブロック管理手法は、しばしば、元ブロックからデータを移動させ或いはそれを消去することなく、更新されたデータを他のブロックのページに書き込む動作を含む。これは、データの複数のページが同じ論理アドレスを有するという結果をもたらす。データの最新のページは、セクタ内のフィールドまたはページのオーバーヘッドデータとして記録されるプログラミングの時点のような何らかの便利な手法によって識別される。
【００３４】
別のマルチセクタブロック構成が図５に示されている。ここでは、メモリセルアレイ全体が２つ以上のプレーンに物理的に分割され、４個のプレーン０〜３が図に示されている。各プレーンは、他のプレーンから大幅に独立して動作できるようにそれ自身のデータレジスタ、センス増幅器、アドレス指定デコーダなどを有する、メモリセルのサブアレイである。全てのプレーンが単一の集積回路装置上または複数の装置上に設けられ得る。図５のシステム例の各ブロックは１６ページＰ０〜Ｐ１５を含み、各ページは１,２またはもっと多くのホストデータセクタと多少のオーバーヘッドデータとの容量を有する。プレーンは単一の制御回路チップ上に、または複数のチップ上に、形成され得る。複数のチップ上の場合、例えば、プレーンのうちの２つは１つのチップ上に形成され、他の２つは別のチップ上に形成され得る。或いは、１つのチップ上のメモリセルがメモリプレーンのうちの１つを提供し、４つのそのようなチップが一緒に使用される。
【００３５】
別のメモリセル構成が図６に示されている。各プレーンはセルの多数のブロックを含む。動作の並列度を高めるために、別々のプレーン内のブロック同士が論理的に結合されてメタブロックを形成する。１つのそのようなメタブロックは、プレーン０のブロック３と、プレーン１のブロック１と、プレーン２のブロック１と、プレーン３のブロック２とから形成されるものとして図６に示されている。各メタブロックは論理的にアドレス指定可能であり、メモリコントローラは、個々のメタブロックを形成するブロックを割り当てて追跡する。ホストシステムは、好ましくは、個々のメタブロックの容量に等しいデータをユニットとしてメモリシステムとインターフェイスする。例えば、図６のそのような論理データブロック６１は、コントローラによりメタブロックを構成するブロックの物理ブロック番号（ＰＢＮ）にマッピングされる論理ブロックアドレスにより識別される。メタブロックの全てのブロックは一緒に消去され、各ブロックからのページは好ましくは同時にプログラムされ読み出される。
【００３６】
図２〜６に関して前に説明したモリを実現するために使用され得る多様なメモリアレイ構造、構成および具体的なセル構造が存在する。ＮＡＮＤ形のメモリアレイの１つのブロックが図７に示されている。直列接続されたメモリセルの多数の列方向ストリングが電圧ＶＳＳの共通ソース６５とビット線ＢＬ０〜ＢＬＮのうちの１つとの間に接続され、これらのビット線は、アドレスデコーダ、ドライバ、読み出しセンス増幅器などを含む回路６７と接続されている。具体的には、１つのそのようなストリングは、ストリングの両端の選択トランジスタ７７および７９の間に直列に接続された電荷蓄積トランジスタ７０，７１．．．７２および７４を含む。この例では、各ストリングは１６個の蓄積トランジスタを含むが、他の数も可能である。ワード線ＷＬ０〜ＷＬ１５は、各ストリングの１つの蓄積トランジスタを横断して延びて、ワード線のアドレスデコーダおよび電圧源ドライバを含む回路８１に接続されている。線８３および８４上の電圧は、ブロックの全ストリングの、それらの選択トランジスタを通しての電圧源６５および／またはビット線ＢＬ０〜ＢＬＮへの接続を一緒に制御する。データおよびアドレスはメモリコントローラから来る。
【００３７】
ブロックの電荷蓄積トランジスタ（メモリセル）の各行は１つ以上のページを含み、各ページのデータは一緒にプログラムされ読み出される。適切な電圧が、ワード線（ＷＬ）に、そのワード線に沿うメモリセルのデータをプログラムしまたは読み出すために、印加される。適切な電圧が、関心の対象であるセルと接続されているそれらのビット線（ＢＬ）にも印加される。図７の回路は行に沿う全てのセルが一緒にプログラムされ読み出されることを示しているが、行に沿う１つ置きのセルをユニットとしてプログラムし読み出すのが一般的である。この場合、一度に１つ置きのセルと操作可能に接続するように２セットの選択トランジスタが使用され（図示せず）、１つ置きのセルが１ページを形成する。残りのワード線に印加される電圧は、その各々の蓄積トランジスタを伝導性にするために選択される。１つの行のメモリセルをプログラムし或いは読み出す過程で、ビット線に印加された電圧がそれらに接続されているストリングの全てのセルに影響を及ぼし得るので、選択されていない行に前に蓄積された電荷レベルが乱され得る。
【００３８】
前述したタイプのメモリシステムの１つの具体的な構造とその動作とが図８により一般的に示されている。説明を容易にするために大幅に簡略化されているメモリセルアレイ２１３は、構造に依存して、ブロックまたはメタブロック（ＰＢＮ）Ｐ１〜Ｐｍを含む。ホストからメモリシステムにより受け取られたデータの論理アドレスは、個々の論理ブロックアドレス（ＬＢＡ）を有する論理グループまたはブロックＬ１〜Ｌｎを成すようにグループ分けされる。すなわち、メモリシステムの連続する論理アドレス空間全体がアドレスの複数のグループに分割される。論理グループＬ１〜Ｌｎの各々によりアドレス指定されるデータの量は、物理ブロックまたはメタブロックの各々の記憶容量と同じである。メモリシステムコントローラは、グループＬ１〜Ｌｎの各々の論理アドレスを物理ブロックＰ１〜Ｐｍの異なる１つにマッピングする機能２１５を含む。
【００３９】
メモリシステムアドレス空間に存在する論理グループより多いメモリの物理ブロックが含まれる。図８の例では、４つのそのような余分の物理ブロックが含まれている。本発明の用途を具体的に例示するために提供されるこの簡略化された説明の目的のために、余分のブロックのうちの２つはデータ書き込み中にデータ更新ブロックとして使われ、他の２つの余分のブロックは消去済みブロックプールを構成する。他の余分のブロックが種々の目的のために通常含まれ、１つはブロックに欠陥が生じた場合の余分として含まれる。メモリを操作するためにメモリシステムコントローラにより使用される制御データを格納するために１つ以上の他のブロックが普通使用される。普通は、特定の目的のために特定のブロックが指定されることはない。むしろ、マッピング２１５は、個々の論理グループのデータがマッピングされる物理ブロックを定期的に変更し、それがブロックＰ１〜Ｐｍのうちの任意のものである。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして役立つものも、メモリシステムの動作中に物理ブロックＰ１〜Ｐｍの隅から隅まで移動する。物理ブロックのうちの、更新ブロックおよび消去済みプールブロックとして現在指定されているもののアイデンティティはコントローラにより維持される。
【００４０】
図８により表されているメモリシステムへの新しいデータの書き込みを以下に説明する。論理グループＬ４のデータが物理ブロックＰ（ｍ−２）にマッピングされると仮定する。また、ブロックＰ２が更新ブロックとして指定され、完全に消去されて自由に使える状態であると仮定する。この場合、ホストがグループＬ４内の１つの論理アドレスまたは複数の連続する論理アドレスにデータを書き込むよう命令したとき、そのデータは更新ブロックＰ２に書き込まれる。新データと同じ論理アドレスを有するブロックＰ（ｍ−２）に格納されているデータは、その後、陳腐化されて、更新ブロックＬ４に格納されている新データにより取って代わられる。
【００４１】
後に、これらのデータはＰ（ｍ−２）ブロックおよびＰ２ブロックから単一の物理ブロックに整理統合される（ガーベッジコレクションされる）。これは、ブロックＰ（ｍ−２）からの残っている有効なデータと更新ブロックＰ２からの新データとを消去済みブロックプール中のブロックＰ５のような別のブロックに書き込むことにより成し遂げられる。ブロックＰ（ｍ−２）およびＰ２は、その後、後に更新ブロックまたは消去プールブロックとして役立つように消去される。或いは、元ブロックＰ（ｍ−２）内の残っている有効なデータは新データと共にブロックＰ２に書き込まれてもよく（それが可能ならば）、その後にブロックＰ（ｍ−２）は消去される。
【００４２】
所与のデータ記憶容量に必要なメモリアレイのサイズを最小にするために、余分のブロックの数は最少に保たれる。普通は限られた数（この例では２個）の更新ブロックがメモリシステムコントローラにより同時に存在することを許される。さらに、更新ブロックからのデータを元の物理ブロックからの残っている有効なデータと整理統合するガーベッジコレクションは、更新ブロックが関連付けられている物理ブロックにホストにより後に別の新データが書き込まれ得るので、普通はなるべく長く延期される。同じ更新ブロックが、その後、追加データを受け取る。ガーベッジコレクションは、時間を必要とし、またその結果として他の操作が遅らされるならば、メモリシステムの性能に悪影響を及ぼし得るので、それは実行され得る度に実行されるのではない。２つのブロックからのデータを別のブロックにコピーするには、特に個々のブロックのデータ記憶容量が非常に大きいときに（それが趨勢である）、かなりの時間がかかる。従って、ホストがデータを書き込むように命令したときに、それを受け入れるのに使える自由なまたは空の更新ブロックがないという事態がしばしば発生する。そのとき、その書き込みコマンドに応じて、その後にホストから新データを受け取れるように、１つの現存する更新ブロックがガーベッジコレクションされる。そのガーベッジコレクションがどれだけ長く延期され得るかの限度に達している。
【００４３】
第１の損耗均等化の実施形態
図９は、２つの更新ブロックのいずれもが自由でなく、消去されていなくて、どちらの更新ブロックとも関連付けられていないブロックのデータが更新されるときのメモリシステムの動作を示す。このとき、ホストから新データを受け取るために利用できる空白の消去済み更新ブロックを作るために更新ブロックのうちの一方がガーベッジコレクションされなければならない。図９の例では、データの２つのセクタまたは他のユニット１および２が書き込まれる。ホスト書き込みコマンドはデータ転送の長さを含み、この場合には２ユニットであり、その後にデータが続く。図９のタイミング図の２番目の線で示されているように、これら２つのデータユニットは、それらの間のメモリシステムビジー信号（図９の３番目の線）が維持されていないので、コマンドが受信された直後に（図９の１番目の線）直接連続して転送される。アサートされたとき、メモリシステムビジー信号はホストにメモリシステムとの通信を休止させる。
【００４４】
時点ｔ４およびｔ５の間のメモリシステムによるビジー信号のアサートは、図に示されているように、書き込みコマンドを実行するために必要なときにメモリシステムがガーベッジコレクションを実行し、その後に、受信されたデータを書き込むことを可能にする。ホストは、このビジー信号がアクティブであるときには他のコマンド或いはそれ以上のデータをメモリシステムに送らない。図９の最後の線で示されているように、これは、新しい更新ブロックを作るために必要なときにガーベッジコレクションをする時間を作る。コントローラは、データユニット１および２の転送にかかる時間がガーベッジコレクションを開始するために使用されるが、これはそれを完了させるのに充分な時間ではない。それ故に、メモリシステムは、ガーベッジコレクションと更新ブロックへのデータ書き込みとが完了するまでホストを寄せ付けない。データ書き込みの完了後、時点ｔ５でビジー信号が終わると、ホストはメモリシステムとさらに通信できるようになる。
【００４５】
しかし、ほとんどのホストはデータユニットが転送された後にメモリシステムが書き込みコマンドを実行するために限られた一定の時間を許すに過ぎないので、メモリシステムがアサートできるビジー信号の長さは限られている。それより長くビジー信号がアクティブ状態にとどまっていれば、或るホストはそのデータを伴うコマンドを繰り返すかもしれず、また他の或るホストはそのプロセスを完全に中止するかもしれない。メモリシステムは、このメモリがそれと協働するように設計されているところのホストのこのタイムアウト期間を超えないように操作される。１つの一般的なホストタイムアウト期間は２５０ミリ秒である。いずれにせよ、ホストと、これに接続されているメモリシステムとの間でのコマンドおよびデータの転送はメモリシステムによるビジー信号のアサートにより遅延させられ得るので、その使用は、メモリシステムの全体としての良好な性能にとって遅延が重要であるような場合に限定されるのが望ましい。
【００４６】
ホストのタイムアウト期間に加えて、メモリシステムの動作は、多くの用途において、維持されなければならない最低データ流量により制限される。これは、メモリシステムによりアサートされる個々のビジー信号の持続時間がホストのタイムアウトにより許される最大値より短いことを必要とし得る。
【００４７】
同様に、損耗均等化操作は、好ましくは、他の操作および全体としてのメモリシステムの性能に過度に強い影響を及ぼすことを避けるようにスケジュールされる。前述した特許および特許出願で説明されているように、損耗均等化は、損耗（消去サイクルの数）を均すために論理グループのアドレスの物理的メモリブロックへのマッピングを変更することを含む。例えばしばしば書き換えられる範囲の論理アドレスが、平均より高い率でサイクルされている１つの物理ブロックから、より低いサイクル履歴を有する他の物理ブロックにリダイレクトされる。多くの損耗均等化アルゴリズムがあり、そのうちの或るものは論理グループの再書き込みまたは個々の物理ブロック使用のサイクルカウントを監視し、他の或るものはそのようなカウントを使用しないで損耗を別の方法でメモリブロックに分散させる。
【００４８】
通常、損耗均等化操作は１つのブロックから他のブロックへのデータの転送（交換）を含み、これがこの操作の最も時間を消費する部分である。損耗均等化交換は、メモリブロックの使用の増大する不均衡を修正するためにメモリシステムコントローラによって時々開始される。損耗均等化の目的は、１つまたは少数のブロックがメモリの有効寿命を超える回数にわたってサイクルされることを避けることによってメモリの寿命を延ばすことである。少数の、時には唯一の、メモリブロックが使えなくなると、メモリシステムが動作不能になり得る。
【００４９】
損耗均等化は普通バックグラウンドで行われる。すなわち、ブロックの再マッピングおよびデータ転送はホストがアイドルであるときに行われる。これは、メモリシステムの性能に悪影響を与えないという利点を有するけれども、メモリシステムが損耗均等化を行っている間にホストがコマンドを送ることが防止されず、かつ損耗均等化交換中にメモリシステムから電源を切り離すことさえあり得るという欠点を有する。従って、本願明細書に記載されている例では、損耗均等化はデータ書き込みの一部として時々フォアグラウンドで行われる。
【００５０】
再び図９を参照すると、ガーベッジコレクションの代わりに、書き込みコマンドを実行するためにガーベッジコレクションが不要であるときに損耗均等化が行われ得る。ガーベッジコレクションおよび損耗均等化の両方がブロックのデータを転送する動作を含むので、これら２つの操作は同様の量の時間を必要とする。もちろん、前に論じられたように、ガーベッジコレクションは現在の書き込みコマンドを実行できるように更新ブロックを得るために必要なときに行われる。しかし、新データのために利用可能な更新ブロックがあってガーベッジコレクションが不要であるならば、代わりに損耗均等化を行うために時間を使うことができる。１つの特定の手法では、損耗均等化アルゴリズムは損耗均等化交換が望ましいことをその都度指摘し、交換はガーベッジコレクションが不要な次の書込み操作中に行われる。
【００５１】
図１０は、図９のタイミングでの図８のメモリシステムにおけるガーベッジコレクションおよびデータ書き込みの例を示す。２つの更新ブロック１および２が存在するが、現在のデータユニットを書き込むためにそのいずれもが利用できないとき、それらの一方が閉じられて、消去済みブロックプールからの別の１つのブロックがこのデータを受け入れるために開かれる。その理由は、この例では２つの更新ブロックだけが許されることにある。更新ブロック１が共通論理グループ内のデータ更新だけを受け取ることによってブロックＡにリンクされるならば、更新ブロック１は他の何らかの論理グループのデータを格納するためには使用され得ない。更新ブロック２も同じ制約を持ち得る。従って、更新ブロック１は図１０に示されているガーベッジコレクション操作により閉じられ、ブロックＡおよびその更新ブロック１の各々の中の有効なデータは消去済みブロックＢにコピーされる。その後、ブロックＡおよび更新ブロック１は消去され、これにより２つのさらなる消去プールブロックが提供される。それらの一方はその後、更新ブロック３として示されている新しい第２の更新ブロックとして開かれ得、その後、その中にメモリコントローラのバッファからのデータが格納される。
【００５２】
しかし、図８のメモリシステムにおける書き込みコマンドの実行は、ガーベッジコレクションが行われることを常に必要とするわけではない。例えば、それは、開いている更新ブロックにデータを書き込めるときには、不要である。そのような場合、図９に示されているようにガーベッジコレクションの代わりに損耗均等化操作が行われ得、このときも、損耗均等化操作中に使える更新ブロックが存在する。図１１は、この場合をさらに示している。損耗均等化は、この例では、データをソースブロックＡから更新ブロック１にコピーする動作を含む。その後、コントローラバッファからのデータが更新ブロック２に書き込まれる。その後、ソースブロックＡは消去されて、消去プールブロックとして利用可能になる。図１１の例は、ソースブロックＡに格納されている論理グループに更新ブロック１が割り当てられているということを仮定している。使用されているシステム更新ブロックは普通非常に少ないので、これは普通でない場合である。より一般的には、ソースブロックＡが損耗均等化交換を受けられるようになる前に新しい更新ブロックが開かれなければならない。新しい更新ブロックを開く動作は、通常、別の１つの更新ブロックを閉じる動作を含み、これも普通はガーベッジコレクションを含む。
【００５３】
図９のタイミング図に従う動作の具体的な例が図１２の動作フローチャートにより示され、ここで、書き込み動作を可能にするためにガーベッジコレクションが行われなくてもよいならば、代わりに損耗均等化が行われる。ステップ２２５でホストから書き込みコマンドを受け取ったことに応答して、書き込まれるべきデータがステップ２２７でホストから受け取られてメモリシステムコントローラのバッファメモリに格納される。ステップ２２９で、現在の書込み操作に用いるために更新ブロックを解放するためにガーベッジコレクションが必要か否かが判定され、必要ならば、ガーベッジコレクションが行われる。ステップ２２７および２２９の順序は逆にされてもよく、或いは、図９に示されているように、時間の一部にわたって同時に実行されてもよい。ステップ２２９は、ガーベッジコレクションが行われる場合にガーベッジコレクションのカウンタを増分することも含む。このカウンタは前もってリセットされ、このカウントは後にガーベッジコレクションが行われたか否かを判定するために参照される。
【００５４】
次のステップ２３１で、損耗均等化交換が継続しているか否かが問われる。すなわち、損耗均等化を開始するのに必要な条件が存在するか否かが判定される。前に援用されている特許および特許出願で説明されているように、多数の異なる損耗均等化アルゴリズムがあって、いろいろなイベントがその動作をトリガーする。本願明細書で説明されている損耗均等化の実施形態では、損耗均等化はメモリブロックまたはメタブロックのＮ消去サイクルごとに開始される。数Ｎは、例えば約５０であり得る。これは出発点であるが、以下で説明するように、損耗均等化がかなりの期間にわたって延期されなければならないときには判定は多少もっと複雑になる。そのような延期は、例えば、多数の連続する書き込み操作がガーベッジコレクションを各々必要とするときに、発生する。そのときには、損耗均等化のために使えるメモリシステムビジー期間はない。これは、例えば、別々の論理グループ内の単一ユニットのデータの連続する数個の書き込みがあるときに、発生する。
【００５５】
損耗均等化が継続していれば、次のステップ２３３はガーベッジコレクションのカウンタのカウントを調べる。そのカウントがゼロでなければ、これは、ステップ２２９でガーベッジコレクションが行われたことを、従って、損耗均等化を行う充分な時間がないことも示す。それゆえ損耗均等化は省かれる。しかし、カウントがゼロならば、これはガーベッジコレクションが行われていなくて、従って損耗均等化を行う充分な時間があるかもしれないことを示す。しかし、最初に、ステップ２３５により、損耗均等化に使うための自由な或いは空の更新ブロックがあるか否かが判定される。否であれば、更新ブロックを得るのに必要なガーベッジコレクションと損耗均等化との両方を行うのに充分な時間はないであろうから、損耗均等化は省かれる。しかし、利用可能な更新ブロックがあれば、前に特定された損耗均等化の特許および特許出願のうちの１つに記載されているアルゴリズムまたは以下のアルゴリズムに従ってステップ２３７で損耗均等化が行われる。一般に、損耗均等化操作は、損耗均等化のために利用可能な更新ブロックを開くことと、全てのデータをソースブロックからその開かれた更新ブロックにコピーすることと、その後にその更新ブロックを閉じると共にデータの論理グループをソースブロックから更新ブロック（宛先ブロック）に再マッピングするようにアドレス変換テーブルを更新することとを含む。
【００５６】
その後、ステップ２３９で、メモリシステムコントローラのバッファに受け取られたデータがフラッシュメモリのブロックまたはメタブロックに書き込まれる。その後、ガーベッジコレクションのカウンタは、図１２のフローチャートのプロセスによる次のデータ書き込みの間に使われるようにステップ２４１でゼロに戻される。
【００５７】
損耗均等化交換を開始する方法の例が次に説明される。これは図１２のステップ２３１の一部である。基本的に、損耗均等化は、システムのブロックがＮ回消去されるごとに開始される。これを監視するために、ブロックの消去の数のカウントがシステムレベルで維持される。しかし、この手法では、ブロックについての消去サイクルの数のカウントを個別に維持する必要はない。
【００５８】
図１２のフローチャートに表されているように、継続している損耗均等化交換は、所与のデータ書き込みサイクルの間、そうする充分な時間がないときには実行されなくてもよい。図９および１２の例では、継続している損耗均等化交換は、書き込みコマンドを実行するためにガーベッジコレクションが行われなくてはならない場合には省かれる。メモリシステムが一連の、その都度単一のセクタの、データ書き込みを受け、それらのセクタが連続していない論理アドレスを有する場合、ガーベッジコレクションが各書き込み中に行われる。この状態および他の状態では、継続している損耗均等化操作は延期される。このタイプの遅延が生じるかどうかは、メモリシステムがどのように使用されるかによる。しかし、それがしばしは生じるならば、損耗均等化は余り有効ではなくなる。最も有益であるために、損耗均等化は幾つかのシステムブロック消去の一定の間隔を置いて生じるのが好ましい。
【００５９】
従って、損耗均等化が著しい時間にわたって延期されたときには損耗均等化交換の間隔を名目上のＮブロック消去間隔から変えるのが望ましい。省略された損耗均等化操作の数が維持され、それらは後にＮブロック消去より短い間隔で各々継続され得る。図１３Ａ，１３Ｂおよび１３Ｃの曲線は、損耗均等化がＮ消去サイクルを超えて著しく延期された後に“追いつく”３つの異なる方法を示す。これらの曲線の水平軸は、総ブロックシステム消去カウントを示し、Ｎカウントごとに縦のマークが付いている。縦軸は、最後の損耗均等化操作以後のシステム消去サイクルの数（ＷＬカウント）を示す。図１３Ａ，１３Ｂおよび１３Ｃは、各々、これらの例において損耗均等化交換が行われ得る期間を示すために“交換が行われ得る”を表示している。名目上、ＷＬカウントの数がＮ（曲線を横切る破線）まで増大すると、損耗均等化が行われてＷＬカウントはゼロに戻る。これは、例えば、図１３Ａの２７１のところに示されている。
【００６０】
ＷＬカウントがＮに達した図１３Ａの消去カウント２７３では、スケジュールされている損耗均等化は行われない。損耗均等化は、事情が損耗均等化が行われることを許す消去カウント２７５まで、それ以上の多数の消去サイクル（Ｎのおよそ半分の）について行われない。そのときに、また、追いつくためにＮより小さい間隔（およそＮの半分）の後に消去カウント２７７で、損耗均等化が行われる。しかし、その後、損耗均等化が行われ得ない非常に長い期間がある。この長い期間の故に、省略された損耗均等化交換の全て（この場合には４）は、可能になり次第、許されるならば、消去カウント２７９以後の各書き込みコマンドの間継続して、行われる。この手法は、単純であるという利点を有するけれども、メモリシステムが過去に多数の損耗均等化交換の省略を経験しているならば、メモリシステムの性能に悪影響を及ぼし得る。
【００６１】
図１３Ｂは、損耗均等化が非常に長い間行われない場合を処理する改変された方法を示す。この例では、その長期間後の第１の損耗均等化交換は２８１で行われ、また連続する操作がＮの半分の消去カウントで行われる。この例でも省略された損耗均等化交換が補充され得るけれども、図１３Ａの場合のように損耗均等化がまた行われ得るようになったらなるべく速くそれらを行う代わりに、図１３Ｂの手法はその補充損耗均等化交換同士を或る程度少なくともＮの半分だけ離す。この手法は、損耗均等化交換のより均一な分散を提供する。
【００６２】
好ましい手法が図１３Ｃに示されている。省略された損耗均等化交換の全てを補充するのではなくて、それらの間の間隔は或る程度小さくされるが、それらのうちの他のものは全く補充されない。図１３Ａおよび１３Ｂの例と同じく、最後の損耗均等化を実行し得ることに関しての遅れを取り返すために、２８３における損耗均等化は最後のものからＮの半分の消去カウントで行われる。しかし、それから後に損耗均等化交換のない同じ長い期間がある場合、この期間後の２８５における第２の損耗均等化交換は２８７における第１のものからＮの半分の消去サイクルの後に行われるが、その後の交換は標準のＮ消去サイクル間隔で行われる。省略された損耗均等化交換のうちの幾つかは単に補充されない。この手法による損耗均等化交換を開始するための具体的な基準は、ＷＬカウントがＮより大きくなった後に損耗均等化交換が行われるとき、第２の交換がＮの半分の消去カウントの後に行われるということである。しかし、その後の損耗均等化交換は、どんなに多くの交換が省略されていたとしても、標準のＮ消去カウント間隔で行われる。
【００６３】
図１３Ａ，１３Ｂおよび１３Ｃは、損耗均等化を行えない長い期間を処理する３つの異なる方法を提供するが、そうする方法はこれらだけではない。
【００６４】
第２の損耗均等化の実施形態
図１４〜１６は、損耗均等化操作を行うための、更新ブロックが前から存在することを必要としない代わりの手法を示す。前述したように、図９の方法は、自由な或いは空の更新ブロックが存在しなければ、ステップ２３５により継続している損耗均等化操作の実行を省略する。一方、図１４の手法では、対応するステップ２３５’による、利用し得る更新ブロックがないという判定は、継続している損耗均等化操作を省略させない。むしろ、継続している損耗均等化操作は、現在の書き込みコマンドの実行中に、後に自動的に完了するように、開始される。現在の書き込みコマンド中に損耗均等化操作を始めるために要する時間は非常に短いので、ガーベッジコレクションまたは他の時間を消費するハウスキーピング機能もそのビジー期間中に行われ得る。また、開始された損耗均等化操作が後の書き込みコマンドの実行中に完了することを確実にするためにそれ以上何もしなくてもよい。なぜならば、それは標準のガーベッジコレクション操作により完了させられるからである。
【００６５】
利用可能な更新ブロックがあれば（図１４のステップ２３５’のところの“はい”）、図９の損耗均等化２３９に対応して、損耗均等化２３７’が現在の書き込みコマンドの実行中に行われる。しかし、限られた数のメモリシステム更新ブロックのうちのいずれも利用可能でなければ、図１４のステップ３０１〜３０４を損耗均等化操作を後に完了するようにセットアップする。同時に開いていることのできる更新ブロックの数を制限するメモリシステムにおいて損耗均等化交換に用いる更新ブロックを開くために、現存する更新ブロックが最初に閉じられなければならない。これはステップ３０１で行われ、ここでシステム更新ブロックが閉じられるが、例えばシステム更新ブロックのうちの、その時点で最も長く使用されていないもの（ＬＲＵ）を閉じるのが好ましい。次のステップ３０２で、消去済みブロックがこの損耗均等化操作のために更新ブロックとして開かれる。次のステップ３０３で、データの第１のページまたはメタページ（メモリ構造による）が、ソースブロックから今開かれたばかりの更新ブロックにコピーされる。現在の書き込みコマンドの実行中にはこの１つのページまたはメタページだけがコピーされればよいのであるが、時間が利用可能であればそれ以上がコピーされてもよい。全てのデータをソースブロックから新しい更新ブロックにコピーするために必要な時間の量は、特に非常に大きなブロックの場合には、現在の書き込みコマンドの実行中に利用し得るよりも長いことがある。従って、好ましくはソースブロックから最少量のデータ（好ましくはソースブロック内のデータのわずか４分の１）をコピーすることによって、現在の書き込みコマンドの実行から或る程度の時間の後に完了するように損耗均等化交換をセットアップするために充分なことが行われる。
【００６６】
オプションの最適化として、次のステップ３０４は、１つのページまたはメタページのデータを有する新しい更新ブロックを、強制的に、システム更新ブロックのうちのその時点で最も長く使用されていないもの（ＬＲＵ）として特定させ得る。この更新ブロックは、今開かれたばかりなので、確かにその時点で最も長く使用されていないものではない。しかし、それをＬＲＵ更新ブロックとして指定することによって、それは次に他の更新ブロックが開かれなければならないときに閉じられる。その閉じるプロセスは、最も便利にはソースブロックから残りのページをこのブロックにコピーすることによって実行される、行われるべきガーベッジコレクションを含む。このブロックはその後に閉じられ、必要な新しい更新ブロックが開かれる。損耗均等化交換はメモリシステムの標準的操作の間に完了している。損耗均等化交換の完了のために、それが一旦セットアップされたならば、特別の操作は不要である。
【００６７】
図１５は、このプロセスをタイミング図により示す。データの例としてのユニット１および２に関しての現在の書き込みコマンドの実行は間隔３０７中に行われる。更新ブロックを書き込みコマンドの実行に利用し得るようにするために必要なガーベッジコレクションは最初の間隔３０９の間に行われ、これに間隔３１１が続き、その間に、図１４のステップ３０１〜３０４に関して前述したように損耗均等化操作がセットアップされる。その後に、ホストからコントローラバッファメモリに受け取られたデータのユニット１および２は間隔３１３の間にフラッシュメモリに書き込まれる。
【００６８】
その後の間隔３１５の間に、開いた更新ブロックを設けるためにガーベッジコレクションを必要とする次の書き込みコマンドの実行が行われ、ガーベッジコレクション３１７は損耗均等化交換を完了させる。その後、この例においてデータユニット３および４は間隔３１９の間にフラッシュメモリに書き込まれる。
【００６９】
図１４および１５のプロセスは、さらに別の方法で図１６により示される。データの１つのページまたはメタページが、損耗均等化のために指定されたソースブロックから、新しく開かれた更新ブロック３にコピーされる（データコピー１）。何時でも同時に２つの更新ブロックだけが開かれていることを許すメモリシステムを仮定すると、更新ブロック３を開けるように更新ブロック２は閉じられた。これは、図１５の時間間隔３０７の間に、図１４のステップ３０１〜３０４により実行される。その後、図１５の時間間隔３１５の間に、ソースブロックからの残りのデータが更新ブロック３にコピーされる（データコピー２）。従って、後の書き込みコマンドを実行するために必要にされたガーベッジコレクション３１７は、前にセットアップされていた損耗均等化交換を完成させている。
【００７０】
１ページ以上のデータを新しい更新ブロックにコピーすることは、それを、ガーベッジコレクションプロセスを改変することを必要とせずに、後のガーベッジコレクションのためにセットアップする。損耗均等化交換は、いくぶん自動的に完了する。或いは、最初は新しい更新ブロックにデータをコピーする必要はないが、それにコピーされるべきデータのソースブロックを識別するフラグを付することができる。後にそのフラグに応じてデータ交換を行わせることができる。
【００７１】
同じデータ書き込みおよび損耗均等化操作を成し遂げる代わりの方法が図１７のタイミング図により示されている。メモリビジー信号は、単一の書き込みコマンドの実行中にデータユニット１，２および３の各々の転送の後にアサートされる。この例について、前述したように、書き込みコマンドを実行するための更新ブロックを得るためにガーベッジコレクションが必要であり、その後に損耗均等化を行うために他の１つのガーベッジコレクションが必要であるということが仮定される。これは、図１４のブロック２３５’からの“いいえ”経路をとるけれども、そこに示されているのとは別様に事態を処理する。データ書き込みに必要なガーベッジコレクション３２１（図１７）は、第１のビジー信号の間に行われる。その後、第２のビジー信号の間にガーベッジコレクション３２３は損耗均等化交換のための更新ブロックを作る。その後に損耗均等化交換３２５の全体が第３のビジー信号の間に行われ、データユニット１，２および３はフラッシュメモリに後に（図示せず）書き込まれる。
【００７２】
図１７の例では図１４〜１６の例と同じ機能が行われるが、それらを成し遂げるために余分のビジー信号期間を必要とする。これにより図１４〜１６の例では、書き込みコマンドを実行することと損耗均等化交換の大部分を実行することとの両方のためにガーベッジコレクション操作３１９を利用することによりメモリ性能がより良好である。
【００７３】
図１４〜１６の例では、損耗均等化交換は、１つが継続しているたびに開始され得る。従って、損耗均等化は、Ｎメモリシステム消去サイクルごとに、前述した第１の実施形態でそうであったように省略されることを必要とせずに定期的に行われ得る。従って、図１３Ａ，１３Ｂおよび１３Ｃの手続きのような手続きは不要である。
【００７４】
第３の損耗均等化の実施形態
図１８の動作フローチャートは、図１２の動作フローチャートに類似しているが、複数の連続するビジー期間中に単数または複数のハウスキーピングタスクを実行する。ステップ２４３で書き込みコマンドを受け取った後、次のステップ２４５で時間割り当てが計算される。すなわち、この書込み操作でハウスキーピング操作を実行するために利用可能な時間の量が最初に判定される。これは、主として、（１）ホストタイムアウトを超えずに各データユニットが転送された後にアサートされ得るメモリシステムビジー信号の最大持続時間に（２）現在の書き込みコマンドにより転送されるデータのユニットの数で表されたデータ転送の長さを乗ずることを含む。なぜならば、以下に説明する図１９および２０に最もよく示されているように、コントローラがハウスキーピングを行うために利用し得る時間がデータの各ユニットが転送されるときと同時に、またその後に現れるからである。
【００７５】
次のステップ２４７により、データの複数のユニットのうちの第１のユニットがコントローラバッファメモリに受け取られ、書き込みコマンドを実行できるために必要ならば、ガーベッジコレクションがステップ２４９で開始される。その後、カウンタなどを減らすことにより、ステップ２４５で判定された時間割り当てが、このガーベッジコレクションを行うのに要する量の時間だけ（図示せず）減らされ得る。
【００７６】
ステップ２５１で、データの第２のユニットが受け取られ、現在のデータ書込み操作中に損耗均等化も実行され得るか否かが判定される。ステップ２５３により、継続している損耗均等化交換があるか否かが、すなわち使用される特定の損耗均等化アルゴリズムに従って損耗均等化を開始する条件が存在するか否かが判定される。あるならば、次のステップ２５５で、損耗均等化に使用される自由な或いは空の更新ブロックの存在が判定される。１つ存在するならば、損耗均等化が実行され（ステップ２５７）、次に現在の書き込みコマンドのそれ以上のデータユニットを受け取り（ステップ２５９）、現在の書き込みコマンドのデータユニットをフラッシュメモリに書き込む（ステップ２６１）。もちろん、ステップ２５３によって継続中の損耗均等化がないと判定されたならば、処理はそこからステップ２５９にじかに移行する。
【００７７】
ステップ２５５に戻って、損耗均等化中に直ぐに利用できる更新ブロックがなかったならば、次のステップ２６３は、そのような更新ブロックを得るためにガーベッジコレクションを行う時間があるか否かを確かめる。この例では、ガーベッジコレクションおよび損耗均等化交換の各々はホストからのデータユニットの受け取り後のメモリシステムからのビジー信号の間に行われるので、この照会はデータの第３のユニットがあるか否かである。あるならば、それが受け取られ（ステップ２６５）、必要なガーベッジコレクション（ステップ２６７）が行われる。ステップ２５７の損耗均等化はその後に行われる。しかし、この付加的なガーベッジコレクションのための時間がなければ、プロセスはステップ２６１に直接進む。
【００７８】
図１８のプロセスの変形例として、時間割り当てステップ２４５の直後に、ガーベッジコレクションおよび損耗均等化交換のうちから、そのための時間があるものを選択することができる。そのための時間がある操作はその後に次々にスケジュールされ得る。これを行うために必要な全ての情報は、書き込みコマンドを受け取った直後に利用可能である。特定の操作が１つのメモリシステムビジー期間内に完了し得なければ、それは他の一つのビジー期間にまで及ぶようにスケジュールされ得る。このようにして、これらのおよび他のハウスキーピング操作のための最大量の時間が非常に効率的に利用され得る。
【００７９】
１つの具体的な操作方法が図１９のタイミング図により示され、ここでデータの２つのユニット１および２を書き込む単一の操作の間にガーベッジコレクションと損耗均等化との両方が行われる。メモリシステムは、第１のデータユニットの転送後に必要なガーベッジコレクションを行うために充分な時間にわたってそのビジー信号を維持する。ガーベッジコレクションが完了すると、直ちにビジー信号は除去され、ホストは第２のデータユニットを送る。メモリシステムは、その後、第２のデータユニットの転送後、損耗均等化を行うのに充分な時間にわたって再びビジー信号をアサートする。その後、両方のデータユニットがコントローラバッファメモリからフラッシュメモリのブロックに書き込まれ、その後に、メモリシステムが新しいコマンドを受け取れることをホストに示すためにビジー信号が非アクティブにされる。図１９において、メモリシステムバッファへのホストのユニット１および２の転送の間に付加的なビジー期間が挿入されている。前述した図１７の場合にもそうである。
【００８０】
２つの異なるハウスキーピング操作、すなわちガーベッジコレクションおよび損耗均等化が連続するメモリシステムビジー期間中に行われるが、図１９のメモリシステムビジー期間の各々の間に１つのそのような操作が実行される。その代わりに、特に、ブロック同士の間でデータを転送するためにほとんどの時間が使われるガーベッジコレクションと損耗均等化との場合には、ガーベッジコレクションまたは損耗均等化交換をその２つの連続する期間に分けることができる。その場合、データをコピーする操作の一部は第１のメモリシステムビジー期間の間に行われ、その後に第２のビジー期間の間に完了する。
【００８１】
データ書込み操作は、しばしば、図９および１９に示されている２つよりも多いデータユニットの転送を含む。これは、メモリシステム内でガーベッジコレクション、損耗均等化または他のハウスキーピング機能を実行する付加的な機会を提供する。図２０はこの例を示し、ここで１つのホスト書き込みコマンドは４つのデータユニット１，２，３および４のためのものである。メモリシステムは、必要であるかまたは望ましければ、連続する期間２１７，２１９および２２１にわたって１つ以上のガーベッジコレクション、損耗均等化または他のハウスキーピング操作を行うことができる。これを行い、またデータを書き込むために、メモリシステムは各データ転送後にビジー信号期間を挿入する。これは、個々のビジー期間を短縮し或いは充分に利用できるようにハウスキーピング機能の実行を複数のメモリシステムビジー期間に広げることができるという利点を有する。
【００８２】
図２０の例では、ハウスキーピング期間２１７，２１９および２２１の各々が終了するとビジー信号が非アクティブにされ、これに起因してホストは次のデータユニットを送る。或いは、ビジー信号のアサート解除は期間２１７，２１９および２２１の終了と同期しなくてもよい。ビジー信号の持続時間は、期間２１７，２１９および２２１を含む時間を単一の期間として利用できるように他の何らかの仕方で制御され得る。この場合にビジー信号のアサートを制御する１つの仕方は、所望の操作が完了するまで各々の場合にそれをなるべく長くすることであり、その後、ビジー信号は必要な短い時間だけアサートされる。ビジー信号を制御する他の仕方は、ビジー信号の各々に大体同じ持続時間を持たせることである。この共通の持続時間は、書き込みコマンドの受け取り時に、単数または複数の操作を完了するのに必要な時間を現在の書き込みコマンドにより転送されるデータユニットの数で割って決定される。
【００８３】
損耗均等化アルゴリズムの例
図１２のステップ２３７および図１８のステップ２５７で実行され得る具体的な損耗均等化アルゴリズムについて以下に説明する。１つのソースブロックと１つの宛先ブロックとが選択される。ソースブロックを選択するために論理グループ（図８の２１１）を通ってポインタが増分される。１つのブロックが損耗均等化を受けた後、ポインタは順番に次の論理グループに移り、そのグループがマッピングされる物理ブロックがソースブロックとして選択される。或いは、ポインタは直接に物理ブロックを通って増分されてもよい。
【００８４】
指されたブロックは、一定の付加的な基準が満たされるならば、ソースブロックとして選択される。ブロックは、ホストデータを包含しなければならず、それが(図８に関して説明したものに加えて）メモリシステム制御データを包含する予備ブロックであるならば選択されない。その理由は、予備ブロックの使用法の性質の故に、それらに対して損耗均等化を行うことを必要とせずにそれらがメモリを通って循環させられることにある。ブロックは、開いている更新ブロックがそれに関連付けられている場合にも、ソースブロックとしては選択されない。更新ブロックの存在は、そのブロックにマッピングされた論理グループのためのデータがそのブロックとその更新ブロックとの両方に包含されているということを意味する。また、もちろん、欠陥があるためにマッピングアウトされているブロックもソースブロックとして選択されない。
【００８５】
指されたブロックが、これらのまたは他の何らかの理由からソースブロックとして適していなければ、ポインタは順番に次の論理グループまたは物理ブロックへ増分され、この次のブロックも前述した基準と対照されて試験される。この第２のブロックが試験に合格しなければ、他のものが指されて試験される。適切なブロックが見つからないときに考慮されるブロックの数に好ましくは最大数が課される。その後、現在の損耗均等化交換は中止され、調査は次の損耗均等化交換中に再び始められる。
【００８６】
宛先ブロックは消去済みプールブロックから選択され、普通は、ホストからのデータの格納のために使われるように置かれている次のブロックである。しかし、ホストデータを格納する代わりに、ソースブロックからのデータがこの宛先ブロックにコピーされる。マッピングテーブル（２１５）は、その後、これらのデータが属する論理グループが新しいブロックにマッピングされるように、更新される。その後、ソースブロックは消去されて消去プール内に置かれる。
【００８７】
他の実施形態
図２１のタイミング図は、単一のハウスキーピング操作が２つ以上の書き込みコマンドの実行中に行われる例を示す。ハウスキーピング操作の一部分３３１は１つの書き込みコマンドの実行中に行われ、他の一部分３３３は次の書き込みコマンドの実行中に行われる。ハウスキーピング操作は３つ以上の書き込みコマンド実行に分散されてもよく、また連続する書き込み実行中に行われなくてもよいが、時間上でさらに分散され得る。この能力を持つことの利点は、特定のハウスキーピング操作を実行するのに必要な時間を特定の書き込みサイクルのメモリビジー信号持続時間から切り離せることである。実際に、連続する書き込みコマンド実行中にメモリシステムビジー信号に均一な持続時間を持たせることができ、個々のハウスキーピング操作を数個のそのようなビジー信号期間にわたって実行することができる。
【００８８】
拡張されたビジー期間（単数または複数）から利益を得る他の１つのハウスキーピング機能は、前述したメモリセルに蓄積された電荷レベルのリフレッシュ（スクラブ）である。受信されたコマンドの実行に関わらない１つ以上のブロックまたはメタブロック内のメモリセルがリフレッシュされる。他の一つは先制ガーベッジコレクションであり、これも前述した。そのようなガーベッジコレクションも、受信されたコマンドの実行に関わらないブロックまたはメタブロック内のデータに関して行われる。受信されたコマンドの実行に同様に不要で必要とされない他のオーバーヘッド操作も、メモリシステムによりアサートされたビジー期間中に実行され得る。これは、大量のデータをコピーすることを必要とするハウスキーピング操作のために特に有益である。なぜならば、そのようなコピー動作はかなりの時間を消費するからである。ホストコマンドの実行中に行われる損耗均等化、スクラッビング、先制ガーベッジコレクション或いは他の類似操作のいずれも、そのコマンドの実行の必須の部分ではない。それらは、受信されたコマンドに直接関連しておらず、またこのコマンドによりトリガーされない。そのような他の操作を行う時間の量についての制限を除けば、ホストコマンドの実行中に行うことのできることについての制限はほとんどない。
【００８９】
さらに、そのような関係のない操作を書き込みコマンドの実行中に実行することに加えて、メモリシステムがビジー信号のアサートまたは他の方法でさらなるホストコマンドの受信を遅らせるように動作できる他のホストコマンドの実行中にそれらを実行することもできる。１つのそのような他のコマンドは読み出しコマンドである。図２２は、間隔３４１中にデータユニットがフラッシュメモリからコントローラメモリに読み込まれることを示している。メモリビジー信号は、この期間中アクティブである。しかし、その直後にビジー信号を落とすのではなくて、それが間隔３４３中にハウスキーピング操作（または１つの一部分）が行われるための時間を提供するために延長される。ビジー信号が落ちると、データユニット１および２がホストに転送される。図に示されているように、ハウスキーピング操作もこの期間の終わりまで延長され得る。書き込みコマンドの実行中にハウスキーピングを行うために前に論じられた手法の多くは、読み出しコマンドの実行中にそうすることにも応用され得る。
【００９０】
結論
本発明の種々の態様をその代表的な実施形態に関して説明してきたが、本発明が添付されている特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【００９１】
【図１Ａ】協働する不揮発性メモリとホストシステムとのブロック図である。
【図１Ｂ】協働する不揮発性メモリとホストシステムとのブロック図である。
【図２】図１Ａのメモリアレイの第１の構成例を示す。
【図３】図１Ａのメモリアレイに格納されたオーバーヘッドデータを有するホストデータセクタの例を示す。
【図４】図１Ａのメモリアレイの第２の構成例を示す。
【図５】図１Ａのメモリアレイの第３の構成例を示す。
【図６】図１Ａのメモリアレイの第３の構成例の拡張を示す。
【図７】１つの特定の構成の図１Ａのアレイのメモリセルのグループの回路図である。
【図８】図１Ａのメモリアレイの構成および使用の例を示す。
【図９】第１の実施形態に従って書き込みコマンドを実行するメモリシステムの動作例を提供するタイミング図である。
【図１０】図９のタイミングでのメモリシステム動作の態様を示す。
【図１１】図９のタイミングでのメモリシステム動作の別の態様を示す。
【図１２】図９〜１１により示されている書き込み動作の１つの特定の実行を示す動作フローチャートである。
【図１３Ａ】図１２により示されている損耗均等化動作のためのタイミングを示す曲線である。
【図１３Ｂ】図１２により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図１３Ｃ】図１２により示されている損耗均等化動作のための別のタイミングを示す曲線である。
【図１４】図１２のフローチャートの改変形として示されている第２の実施形態に従って書き込みコマンドに応答したメモリシステムの動作を示すフローチャートである。
【図１５】図１４のフローチャートにおいて示されている動作の実行例のタイミング図である。
【図１６】図１５のタイミングでのメモリシステム動作の一態様を示す。
【図１７】図１５のタイミング図に代わるメモリシステムの動作を示すタイミング図である。
【図１８】第３の実施形態に従って書き込みコマンドの実行中のメモリシステムの動作を示すフローチャートである。
【図１９】図１８のフローチャートに従ってメモリシステムの動作例を示すタイミング図である。
【図２０】メモリシステム動作の別の実施形態を示すタイミング図である。
【図２１】メモリシステム動作の別の実施形態を示すタイミング図である。
【図２２】読み出しコマンド実行中における本発明のいろいろな態様の利用を示すタイミング図である。
【図１Ａ】
2008529130.tif 000003
【図１Ｂ】
2008529130.tif 000004
【図２】
2008529130.tif 000005
【図３】
2008529130.tif 000006
【図４】
2008529130.tif 000007
【図５】
2008529130.tif 000008
【図６】
2008529130.tif 000009
【図７】
2008529130.tif 000010
【図８】
2008529130.tif 000011
【図９】
2008529130.tif 000012
【図１０】
2008529130.tif 000013
【図１１】
2008529130.tif 000014
【図１２】
2008529130.tif 000015
【図１３Ａ】
2008529130.tif 000016
【図１３Ｂ】
2008529130.tif 000017
【図１３Ｃ】
2008529130.tif 000018
【図１４】
2008529130.tif 000019
【図１５】
2008529130.tif 000020
【図１６】
2008529130.tif 000021
【図１７】
2008529130.tif 000022
【図１８】
2008529130.tif 000023
【図１９】
2008529130.tif 000024
【図２０】
2008529130.tif 000025
【図２１】
2008529130.tif 000026
【図２２】
2008529130.tif 000027
【国際調査報告】
2008529130.tif 000028
2008529130.tif 000029
2008529130.tif 000030
2008529130.tif 000031
2008529130.tif 000032