(57)【要約】一括消去するメモリセルブロックを有するタイプの不揮発性メモリシステムであり、メモリセルブロックは、１ブロック当たり多数のページ単位で消去状態からプログラムが可能となる。１ブロックのほんの数ページのデータを更新しなければならない場合、この更新を行う目的のために提供される別のブロックの中へ更新済みページは書き込まれる。複数のブロックから更新されたページは、更新ページの原アドレスのオフセット値とは必ずしも対応しない順序で別のブロック中へプログラムされる。次いで、更新データの合成がメモリの性能にインパクトを与えなければ、有効な元の更新データは将来合成されることになる。しかし、１ブロックの多数のページのデータを更新しなければならない場合、更新ページは未使用の消去済みブロックの中へ書き込まれ、変更のないページも同じ未使用ブロックへ書き込まれる。数ページ分の更新を別様に処理することにより、小さな更新を行う場合のメモリ性能が改善される。メモリコントローラは、メモリシステムのホストによる使用状況に応じてこれら別のブロックの動的作成と動作とを行うことができる。
2007517319.tif 000002
【特許請求の範囲】
【請求項１】
データのプログラミングを行って、同時消去が可能で、かつ所定数のホストデータ単位を個々に記憶するメモリセルブロックを有するタイプの再プログラム可能な不揮発性メモリシステムの中へ前記データを入れる方法において、シーケンシャルな論理アドレスを有する、ホストプログラミングコマンドによって指定された、複数のホストデータ単位に少なくとも部分的に対応して、２つの指定ブロックのうちの一方のブロック内のデータをプログラムすることによって前記ホストプログラミングコマンドに応じるステップを有する方法。
【請求項２】
同時消去が可能で、かつ所定数のホストデータ単位を個々に記憶するメモリセルブロックを有する不揮発性メモリシステムの中へデータを書き込む方法において、
ホストコマンドに応じて、前記データを書き込むことによってシーケンシャルでない論理アドレスを有するデータ単位をシーケンシャルな物理アドレスと共に第１の指定ブロックの中へ書き込むステップと、
ホストコマンドに応じて、前記データを第２の指定ブロックの中へ書き込むことによって、前記所定数の所定の比率に等しいか、或いは前記比率以上のシーケンシャルな論理アドレスを有するデータ単位を書き込むステップと、
を有する方法。
【請求項３】
前記第１の指定ブロックの中へデータを書き込むステップが、前記所定数よりも少ないシーケンシャルな論理アドレスを有する前記第１の指定ブロックの中へ複数のホストデータ単位を書き込むステップを含む請求項２記載の方法。
【請求項４】
前記不揮発性メモリセルがマルチサブアレイの中へ編成され、さらに前記メモリセルブロックが２以上の前記サブアレイのメモリセルを含む請求項２記載の方法。
【請求項５】
同時消去が可能で、かつ指定されたページ番号の所定数のデータページを記憶する最小数のセルの複数のグループからなる１以上のブロックの形で編成されたメモリセルを有する不揮発性メモリにおいて、第１のプログラムされたグループからなるブロックの前記所定数のページより少ないページ数のデータを更新する方法において、
前記第１のプログラムされたグループからなるブロックの前記所定数より少ないページ数のページの更新済みデータを受け取るために少なくとも第１と第２のブロックを指定するステップと、
所定数より少ないページ数の、複数のシーケンシャルな論理アドレスを有する１以上のページのデータを前記第１の指定ブロックのページへ書き込むステップと、
前記所定数のページに等しいか、或いは前記所定数のページ数よりも多い、複数のシーケンシャルな論理アドレスを有する複数のページのデータを前記第２の指定ブロックへ書き込むステップと、
を有する方法。
【請求項６】
前記所定数より少ないページ数のページ内の第２のプログラムされたグループからなるブロックのデータを更新するステップは、
前記所定数のページより少ないページ数の、複数のシーケンシャルな論理アドレスを有する１以上のページのデータを前記第１のブロックのページへ書き込むステップを有する請求項５記載の方法。
【請求項７】
前記第１のプログラムされたグループからなるブロック内の前記所定数より少ないページ数のページを更新するレベルに応じて、前記第１の指定ブロックを、前記第１のプログラムされたグループからなるブロックのみのための更新データ受信専用ブロックにする請求項５記載の方法。
【請求項８】
同時消去が可能な最小数のセルの１以上のブロックからなるグループで編成されたメモリセルを有する不揮発性メモリであって、所定数のデータページをプログラムして、前記グループのブロックの個々のデータページに変える不揮発性メモリであって、所定の１グループからなる１以上のブロックのページすべてよりも少ない数のページ内のデータを更新する方法において、
前記データ更新の少なくとも１つの予め定義された条件が満たされているかどうかを判定するステップと、
前記条件が満たされていると判定された場合には、その後、更新中の前記所定グループのブロック内の前記データページのページ番号から独立に選択されたページ番号を有する１以上のブロックからなる第１の別のグループのページの中へ前記更新済みのデータページを書き込むステップを有するステップと、
前記条件が満たされていないと判定された場合には、その後、１以上のブロックからなる第２の別のグループの相応に番号が付されたページの中へ前記更新済みのデータページを書き込むステップと、
を有する方法。
【請求項９】
前記条件が満たされていなかった場合、更新中でない前記所定グループのブロックのページから得られるデータを合成して、前記データを前記共通グループのブロックの別のページ内の前記更新済みデータを含む相応に番号が付されたページ内の前記グループのブロックのうちの１つの共通グループにする請求項８記載の方法。
【請求項１０】
前記条件が、前記所定グループのブロック内の前記所定数のページの所定比率よりも低い更新中のページ数を含む請求項８記載の方法。
【請求項１１】
前記所定のブロックを含む複数の前記個々のグループのブロックの更新済みバージョンのページを記憶するために前記第１の別のグループのブロックを利用する請求項８記載の方法。
【請求項１２】
前記所定グループのブロックのみの更新バージョンのページを記憶するために前記第１の別のブロックを利用する請求項８記載の方法。
【請求項１３】
更新されなかった前記所定グループのブロックから得られるページと、前記所定グループのブロックのページ番号の記憶位置に対応するページ番号の記憶位置で以前に消去されたグループのブロックの中へ入れられた更新バージョンの前記所定グループのブロックのデータページである前記第１の別のグループのブロックから得られるページとの双方のページをコピーすることによってデータを統合するステップをさらに有する請求項８記載の方法。
【請求項１４】
前記所定グループのブロックのすべてのページより少ない数のページにおいて、複数のデータ更新の発生後に間隔をおいて反復して前記データ統合の発生が生じる請求項１３記載の方法。
【請求項１５】
データの統合後、前記第１の別のブロックからデータを消去するステップをさらに有する請求項１３記載の方法。
【請求項１６】
前述した少なくとも１つのデータ書き込みパターンの存在に応じて、前記所定グループのブロックのみの更新バージョンのページを記憶するために前記第１の別のグループのブロックを指定するステップをさらに有する請求項８記載の方法。
【請求項１７】
前記少なくとも１つのデータ書き込みパターンが、１以上のページの前記所定グループのブロックへの反復書き込み動作を含む請求項１６記載の方法。
【請求項１８】
前記少なくとも１つのデータ書き込みパターンが、前記書き込み動作の大部分の動作中に書き込まれるよりも少ないページ数の、１データページまたは数ページ分のデータページを反復して個々の書き込み動作中に書き込むステップを有する請求項１６記載の方法。
【請求項１９】
前記少なくとも１つのデータ書き込みパターンが、前記複数のグループのブロックのうちの別のブロックのオーバーヘッドデータを記憶するために前記所定グループのブロックを指定するステップを有する請求項１６記載の方法。
【請求項２０】
同時消去が可能な最小数のセルからなる１以上のグループのブロックからなる編成済みメモリセルを有する不揮発性メモリであり、かつ所定数のホストデータ単位をプログラムして、前記１以上のグループからなるブロックの個々のグループに変える不揮発性メモリであって、所定の１グループからなる１以上のブロックに記憶されたすべてのデータよりも少ないデータをホストコマンドに応じて更新する方法において、
このようなデータの論理アドレスがシーケンシャルであるのか、或いはないのかに関係なく、第１の論理アドレスの範囲内のシーケンシャルな物理ブロックの記憶位置にホストデータ単位を記憶するために、少なくとも第１のグループからなる１以上のブロックを指定するステップと、
アドレス・オフセット値０またはそれ以上のアドレス・オフセット値を持つシーケンシャルな物理記憶位置に対応して第２の論理アドレスに指定されたシーケンシャルな論理アドレスを有する第２の論理アドレスの範囲内にホストデータ単位を記憶するために、少なくとも第２のグループからなる１以上のブロックを指定するステップと、
を有する方法。
【請求項２１】
前記第１のグループのブロックが、共通の論理アドレスを持つ前記第２のグループのブロック内に含まれるデータの更新値を含むことも可能である請求項２０記載の方法。
【請求項２２】
前記第１のグループのブロックが、前記第２のグループのブロック内のデータによって表されない論理アドレスを有するデータを含むことも可能である請求項２０記載の方法。
【請求項２３】
前記第１と第２の論理アドレスの範囲は、論理ブロックの共通アドレスを含む請求項２０記載の方法。
【請求項２４】
前記第１と第２の論理アドレスの範囲は、論理ブロックの共通アドレスを含まない請求項２０記載の方法。
【請求項２５】
メモリシステムにおいて、
アドレス指定用回路と、プログラミング用回路と、読み出し用回路とを個々に含む、複数のサブアレイの中へ編成された不揮発性メモリセルアレイであって、前記サブアレイは一括消去されるメモリセル単位に分割され、前記消去単位はまとめてプログラムされるセル単位にさらに分割され、前記プログラミング単位はそれらの消去単位の範囲内のプログラミング単位のオフセットアドレスによって特定される不揮発性メモリセルアレイと、
前記メモリセルアレイの動作を制御するコントローラと、
前記少なくとも１つの別の消去単位の範囲内にある前記プログラミング単位と同じアドレス順序を有するアドレス・オフセット値０またはそれ以上のアドレス・オフセット値を持つプログラミング単位で、前記サブアレイの個々のサブアレイ内の前記消去単位の１以上の別の消去単位の第１のグループのシーケンシャルにアドレス指定されるプログラミング単位の更新済みデータを記憶するための、前記コントローラにより指定される前記サブアレイの個々のサブアレイ内の少なくとも１つの消去単位と、
更新中の前記プログラミング単位データの前記アドレス・シーケンスまたはプログラミング単位のオフセット値に関係なく所定のシーケンスに従って、前記サブアレイの個々のサブアレイ内の前記消去単位の１以上の別の消去単位の第２のグループのプログラミング単位の更新されたデータをページ内に記憶するための、前記コントローラにより指定された前記サブアレイの個々のサブアレイ内の少なくとも別の消去単位と、
を有するメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、フラッシュメモリなどの半導体不揮発性メモリシステムの動作に関し、特に、非常に大きな消去可能なメモリセルブロックを有し、かつデータのプログラミングとデータの読み出しとを行うためのずっと小さな単位のブロックにアクセスするようなメモリシステムの動作に関する。
【背景技術】
【０００２】
今日使用されている商業的に成功を収めた多数の不揮発性メモリ製品、特に小形形状のファクタカードの形の不揮発性メモリ製品が存在し、これらのメモリ製品では、１以上の集積回路チップ上に形成されたフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）セルアレイが用いられている。必ずというわけではないが、通常別々の集積回路チップ上に在るメモリコントローラは、カードが取り外し可能に接続された接続先のホストとインターフェイスを行い、カード内のメモリアレイの動作の制御を行う。このようなコントローラに含まれるものとして、典型的には、マイクロプロセッサ、或る種の不揮発性読み出し専用メモリ（ＲＯＭ）、揮発性ランダムアクセスメモリ（ＲＡＭ）、およびプログラミング中並びにデータの読み出し中にデータがコントローラを通り抜けるとき、そのデータから誤り訂正符号（ＥＣＣ）を算出する１以上の特別の回路がある。いくつかの市販されているカードとして、コンパクトフラッシュ（登録商標）（ＣＦ）カード、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）カード、スマートメディアカード、個人タグ（Ｐ−Ｔａｇ）、およびメモリスティックカードがある。ホストには、パーソナルコンピュータ、ノート形コンピュータ、携帯情報端末（ＰＤＡ）、種々のデータ通信装置、デジタルカメラ、携帯電話、携帯用オーディオプレイヤ、自動車用サウンドシステム、および同様のタイプの機器が含まれる。メモリカードの実装例の他にも、種々のタイプのホストシステムの中へこのタイプのメモリを代わりに内蔵することができる。
【０００３】
２つの一般的なメモリセルアレイの構成として、市販されている用途としてＮＯＲおよびＮＡＮＤがある。典型的なＮＯＲアレイでは、メモリセルは、列方向に延在して隣接するビットラインソース拡散部とドレイン拡散部との間で接続され、コントロールゲートが、セル行に沿って延在するワードラインと接続される。メモリセルは、ソースとドレインとの間のセルのチャネル領域の少なくとも１部分の上にわたって配置された少なくとも１つの記憶素子を含む。したがって、記憶素子上でプログラムされた電荷レベルは、アドレス指定されたメモリセルへ適正な電圧を印加することによってその後読み出すことができるセルの動作特性を制御する。このようなセルの例、メモリシステムにおけるこれらのセルの利用例、およびこれらのセルの製造方法については、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１３，４２１号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）、および第６，２２２，７６２号（特許文献７）に記載されている。
【０００４】
ＮＡＮＤアレイは、個々のビットライン間で１以上の選択トランジスタと接続された１６や３２などの３以上のメモリセルの連続ストリングと、１つの基準電位とを利用して複数のセル列を形成する。ワードラインは、これら多数の列内の複数のセルの両端にわたって延在する。ストリング内の残りのセルを強くオンに転換させることによって、プログラミング中に１つの列内の個々のセルの読み出しと検証とを行うので、ストリングの中を流れる電流は、アドレス指定されたセルに記憶されている電荷レベルに左右される。１つのメモリシステムの一部としてのＮＡＮＤ構成のアレイおよびその動作の例が、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）、および第６，５２２，５８０号（特許文献１１）で見いだされる。
【０００５】
前に引用されている特許で説明されているような、最新のフラッシュＥＥＰＲＯＭアレイの電荷蓄積素子は、最も一般的な導電性を有するフローティングゲートであり、このゲートは、典型的には導電的にドープされたポリシリコン材から形成される。フラッシュＥＥＰＲＯＭシステムにおいて有用な別のタイプのメモリセルとして、不揮発性の態様で電荷を記憶する導電性フローティングゲートの代わりに、非導電性誘電体材料を利用するものがある。シリコン酸化膜と、窒化シリコンと、シリコン酸化膜（ＯＮＯ）とから形成される３層誘電体が、導電性コントロールゲートとメモリセルチャネルの上方にある半導電基板の表面との間に挟まれる。セルはセルチャネルから窒化物の中へ電子を注入することによりプログラムされ、その場合これらの電子はトラップされ、限定領域に記憶され、熱いホールを窒化物の中へ注入することによりセルは消去される。誘電体記憶素子を用いるいくつかの特定のセル構造およびアレイが、ハラリらによる米国公開特許出願第２００３／０１０９０９３号（特許文献１２）に記載されている。
【０００６】
ほとんどすべての集積回路の用途における場合のように、フラッシュＥＥＰＲＯＭメモリセルアレイの場合にも、いくつかの集積回路機能の実現に必要なシリコン基板面積の縮小に対する圧力が存在する。所定サイズのメモリカードおよび別のタイプのパッケージの記憶容量を増やすために、所定面積のシリコン基板に記憶することができるデジタルデータ量を増加させて、容量の増加とサイズの小型化の双方を図るようにする要望が継続的に存在する。データの記憶密度を高める１つの方法として、１個のメモリセル当たりおよび／または記憶素子または記憶ユニット当たり１個のメモリセルについて２ビット以上のデータを記憶する方法がある。これは、記憶素子電荷レベルの電圧範囲のウィンドウを３以上の状態に分割することにより達成される。このような４状態を利用することにより、個々のセルは、記憶素子当たり２ビットのデータや、３ビットのデータを記憶する８状態などを記憶することが可能となる。記憶素子の電荷レベルによって、記憶素子のメモリセルのしきい値電圧（一般にＶＴと呼ばれる）が制御され、このしきい値電圧はセルの記憶状態を読み出す基礎として利用される。しきい値電圧ウィンドウは一般に複数の範囲に分割され、メモリセルの２以上の記憶状態の個々の記憶状態に対して１つの範囲が当てられる。これらの範囲は、個々のセルの記憶状態を読み出す名目上の検知基準レベルを個々に含む保護帯域によって分離される。
【０００７】
フローティングゲートを利用する多状態フラッシュＥＥＰＲＯＭ構造については、米国特許第５，０４３，９４０号（特許文献１３）、および第５，１７２，３３８号（特許文献１４）に記載があり、さらに、誘電体フローティングゲートを用いる構造については、前述した米国特許出願第１０／２８０，３５２号（特許文献１５）に記載がある。多状態メモリセルアレイの選択された部分は、米国特許第５，９３０，１６７号（特許文献１６）、および米国特許第６，４５６，５２８号（特許文献１７）に記載されているように種々の理由のために２状態（２進）で動作することも可能である。
【０００８】
典型的なフラッシュＥＥＰＲＯＭアレイのメモリセルは、一括消去される個別のセルブロックに分割される。すなわち、この１ブロックが消去単位であり、同時に消去可能な最小数のセルである。個々のブロックは通常１以上のデータページを記憶し、１ページがプログラミングと読み出しとを行う最小限の単位であるが、同時に異なるサブアレイ、すなわちプレーンで２以上のページのプログラミングや読み出しを行うことも可能である。個々のページは通常１以上のデータセクタを記憶し、このセクタサイズはホストシステムによって定義される。一つの例示のセクタには、磁気ディスク駆動装置に関して定義されている標準規格に準拠して５１２バイトのユーザデータに加えてユーザデータおよび／またはユーザデータが記憶されているブロックに関する数バイトのオーバーヘッド情報を示す或る数値が含まれている。このようなメモリは一般に、１６、３２またはそれ以上のページを持つ個々のブロック内に構成され、個々のページには１セクタまたはわずか数セクタのホストデータが記憶される。
【０００９】
ユーザデータをプログラムしてメモリアレイの中へ入れ、このメモリアレイからユーザデータを読み出す最中の並行性レベルを高めるために、このアレイはプレーンと一般的に呼ばれているサブアレイに通常分割され、これらのサブアレイは、並列動作が可能となるようにサブアレイ自身のデータレジスタ、およびその他の回路を備えることによって、数個のプレーンまたはすべてのプレーンの各々に対してデータセクタを同時にプログラムしたり、或いは数個のプレーンまたはすべてのプレーンの各々からデータセクタを同時に読み出したりすることができるようになる。単一集積回路上のアレイを物理的に分割してプレーンに変えることも可能であるし、或いは別々の１以上の集積回路チップから個々のプレーンを形成することも可能である。このようなメモリの実装例については、米国特許第５，７９８，９６８号（特許文献１８）、および米国特許第５，８９０，１９２号（特許文献１９）に記載されている。
【００１０】
メモリをさらに効率的に管理するために、ブロックを仮想ブロック、すなわちメタブロックを形成するために一体にリンクすることも可能である。すなわち、個々のメタブロックが、プレーンのうちのいくつかのプレーンまたはすべてのプレーンの個々のプレーンから１つのブロックを含むように定義される。メタブロックの利用については、米国公開特許出願第２００２−００９９９０４号（特許文献２０）に記載されている。メタブロックは、データのプログラミングと読み出し用の宛先としてホストの論理ブロックアドレスにより特定される。同様に、メタブロックからなるすべてのブロックは一括消去される。このような大きなブロックおよび／またはメタブロックを用いて動作するメモリシステム内のコントローラは、ホストから受信した論理ブロックアドレス（ＬＢＡ）およびメモリセルアレイ内の物理ブロック数（ＰＢＮ）の間での変換を含む複数の機能を実行する。論理ブロック番号（ＬＢＮ）の中間の量を利用してもよく、１つのＬＢＮは一般に１以上のメモリアレイブロックまたはメタブロックの記憶容量に等しいデータ量を含むＬＢＡの範囲を指定するものであってもよい。ブロック内の個々のページは典型的に、このブロックアドレス内のオフセット値によって特定される。アドレス変換は、論理ブロック数（ＬＢＮ）と論理ページの利用を伴う場合が多い。
【００１１】
理想的な場合では、ブロックのすべてのページ内のデータは、割り当てられていない消去済みブロック内のページへの更新済みデータの書き込みによってまとめて更新され、次いで、論理ブロック番号から物理ブロック番号への番号テーブルが新たなアドレスによって更新される。次いで、原ブロックが利用可能となり、将来利用するために消去済みブロックプールの中で消去と配置とが行われる。しかし、所定ブロック内のすべてのページより少ないページ数に記憶されたデータの更新を行う必要がある場合の方が一般的である。所定ブロックの残りのページに記憶されたデータは変更のない状態のまま残る。ブロック当たりに記憶されるデータページ数が多いシステムほどこのようなことが生じる発生確率は高くなる。このような部分的なブロックの更新が行われる今回利用する１つの技法は、更新すべきページのデータを対応する数の消去済みブロックのページの中へ書き込み、次いで、原ブロックから新しいブロックのページの中へ、変更のないページをコピーする技法である。原ブロックを消去し、次いで、この原ブロックを消去済みブロックプールに追加することも可能である。時間の経過に伴い、ホストデータファイルが書き換えられ、更新される結果、多くのブロックが、有効データを含む相対的に少数のページと、もはや最新のものではないデータを含む残りのページとに結局落ち着くことが可能となる。アレイのデータ記憶容量を効率的に利用することができるようにするために、有効データの論理的に関連づけられたデータページが、複数のブロックの間でフラグメントから一括して時折収集され、より少ない数のブロックの中へ一体に統合される。この処理は一般に“ガーベッジコレクション”と称されているものである。
【００１２】
別の技法では、原データを含むブロックとは異なるブロックへ更新済みページが書き込まれるが、特定された更新済みデータを同じ論理アドレスによって置換データと区別するために、データに適当にマークを付けることによって新しいブロックの中へ別のデータページをコピーする必要はなくなる。これは前述した米国公開特許出願第２００２−００９９９０４号（特許文献２０）で論じられている主題である。次いで、データが読み出されると、新しいブロックのページから読み出された更新済みデータは、現時点の状態のままの原ブロックのページから読み出された変更のないデータと合成され、無効な置換データは無視される。
【００１３】
メモリシステムコントローラは、その構造と、制御用ファームウェアとによって、種々の条件の下でホストにデータをプログラムさせ、データを読み出させる能力があることが望ましい。１つの極端な例では、オーディオデータ、ビデオデータ、またはその他のストリーミングデータの高速受信が可能であり、メモリシステムはリアルタイムでのデータの記憶を要求される。別の極端な例では、ホストはメモリシステムに１つのセクタのデータを時折プログラムさせたり、シーケンシャルでない論理アドレスを有する複数の単一データセクタをまとめてプログラムさせたりすることも可能である。同じデータセクタを頻繁に更新することも可能である。例えば、アレイに記憶されたファイルアロケーションテーブル（ＦＡＴ）が書き込み中のとき、或いは更新中のとき、このような単一セクタのプログラミングを行うことが可能である。大きな消去ブロックメモリに対するこのような処理によって示される問題点として、メモリの記憶容量を効率良く利用するために頻繁なガーベッジコレクションが必要となるという点が挙げられる。コントローラは、ガーベッジコレクションを実行するために、メモリにおいて、並びにメモリの中からデータ転送を行うコントローラの主要機能を一時的に停止する必要があり、それによってシステムの性能に不利な影響を与えることになる。
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１３，４２１号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，５２２，５８０号
【特許文献１２】米国公開特許出願第２００３／０１０９０９３号
【特許文献１３】米国特許第５，０４３，９４０号
【特許文献１４】米国特許第５，１７２，３３８号
【特許文献１５】米国特許出願第１０／２８０，３５２号
【特許文献１６】米国特許第５，９３０，１６７号
【特許文献１７】米国特許第６，４５６，５２８号
【特許文献１８】米国特許第５，７９８，９６８号
【特許文献１９】米国特許第５，８９０，１９２号
【特許文献２０】米国公開特許出願第２００２−００９９９０４号
【特許文献２１】米国特許出願第０９／５０５，５５５号
【発明の開示】
【００１４】
したがって、メモリシステム全体の性能を上げるために、ホストから受信した書き込みコマンドの特性に従ってデータのプログラミングを行う少なくとも２つの異なるメカニズムが維持される。一般に、シーケンシャルでないアドレス指定されたデータの記憶は、いずれかのタイプの動作を用いて、メモリシステムの性能を最適化するように、シーケンシャルなアドレス指定されたデータの記憶とは別様に処理される。
【００１５】
１つの実装例では、単一のホストデータ単位（セクタが一般的な例である）、シーケンシャルな論理アドレスを持つ少数の単位、またはシーケンシャルでない論理アドレスを持つデータ単位をプログラムするホストコマンドは、個々の論理ブロックやメタブロックの記憶容量と比較して大きな複数のデータ単位であり、シーケンシャルな論理アドレスを有するデータ単位をプログラムするホストコマンドとは別様に処理される。単一の、少数のシーケンシャルなデータ単位、またはシーケンシャルでないデータ単位が、第１のタイプの指定論理ブロック、またはメタブロックへ書き込まれるのに対して、より大きな数のシーケンシャルなデータ単位は第２のタイプの指定論理ブロック、すなわちメタブロックへ書き込まれる。第１のタイプの指定ブロック、すなわちメタブロック（本願明細書ではＥ１と呼ばれている）が広い範囲の論理アドレスにわたって拡散したデータの更新値を受信するのに対して、第２のタイプの指定ブロック、すなわちメタブロック（本願明細書ではＥ２と呼ばれている）は、単一ブロックに限定された論理アドレスの範囲に記憶されたデータの更新値を受信する。さらに、単一データ単位またはシーケンシャルでないデータ単位が周囲に論理アドレスを持つ他のデータ単位よりもさらに頻繁に更新される場合、更新値を単位の論理アドレス範囲に専用の第１のタイプの指定論理ブロック、すなわちメタブロック（本願明細書ではｄＥ１と呼ばれている）に記憶することも可能である。
【００１６】
これらの指定ブロックを利用する主要な効果として、ブロックに記憶することも可能な少数のデータを更新する際に一般に必要となるデータ統合量が減少することが挙げられる。この更新済みデータは同じ論理ブロックの変更のないデータを含む単一物理ブロックの中に直接再合成を行う必要はなく、したがってシステムの性能の改善が図られることになる。メモリシステムのデータの取得と記憶とに対するこのような再合成による干渉が少なくなる時まで、このような再合成を延期することも可能である。さらに、種々の指定ブロックを好ましくは動的に形成し、受信するプログラミングコマンドを収容し、それによって多種多様のデータ記憶の用途における高性能な動作のためにメモリシステムを適合させるようにすることが望ましい。
【００１７】
本発明の追加の態様、特徴、および利点は、添付図面を参照して読まれるべきである例示の実施形態の以下の説明に含まれる。本願で引用されているすべての特許、特許出願、論文およびその他の文献は、すべての目的のためにその全体が本願明細書において参照により援用されている。
【発明を実施するための最良の形態】
【００１８】
現行の大ブロック管理技法についての説明
図１は、典型的なフラッシュメモリデバイスの内部構成を示す。主要機能には、外部コントローラとのインターフェイスを行うための入出力（Ｉ／Ｏ）バス４１１および制御信号４１２、コマンド用レジスタ、アドレス信号、および状態信号を用いて内部メモリ動作を制御するメモリ制御回路４５０とが含まれる。フラッシュＥＥＰＲＯＭセルの１以上のアレイ４００が含まれ、個々のアレイは、それ自体の行デコーダ（ＸＤＥＣ）４０１と列デコーダ（ＹＤＥＣ）４０２、１グループのセンス増幅器とプログラム制御回路（ＳＡ／ＰＲＯＧ）４５４、並びにデータレジスタ４０４を有する。現在、メモリセルには通常、記憶素子として１以上の導電性フローティングゲートが含まれているが、この代わりに、電荷トラッピング誘電体を含む別の長時間の電荷記憶素子を利用することも可能である。定義された２つの電荷レベルを用いてメモリセルアレイを動作させ、それによって個々の記憶素子が個々の素子を用いて１ビットデータを記憶することができるようにすることも可能である。これとは別に、個々の記憶素子に対して３以上の記憶状態を定義することも可能であり、その場合２以上のビットデータが個々の記憶素子に記憶される。
【００１９】
所望の場合、例えば、本願の譲受人であるサンディスク  コーポレイションに譲渡され、１９９９年３月３０日に登録された米国特許第５，８９０，１９２号（特許文献１９）によって教示されているように、複数のアレイ４００には、個々に関連づけられたＸデコーダ、Ｙデコーダ、プログラミング／検証済み回路、データレジスタなどが設けられる。この特許は、その全体が本願明細書において参照により援用されている。関連するメモリシステムの機能については、ケビン・コンレーらによる同時継続中の２０００年２月１７日出願の米国特許出願第０９／５０５，５５５号（特許文献２１）に記載されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【００２０】
外部インターフェイスＩ／Ｏバス４１１と制御信号４１２とは、以下を含むことができる。
ＣＳ−チップ選択：フラッシュメモリインターフェイスの起動に用いる。
ＲＳ−読み出しストローブ：Ｉ／Ｏバスが、メモリアレイからのデータ転送に用いられ
ていることを示すのに用いる。
ＷＳ−書き込みストローブ：Ｉ／Ｏバスが、メモリアレイへのデータ転送に用いられて
いることを示すのに用いる。
ＡＳ−アドレスストローブ：Ｉ／Ｏバスがアドレス情報の転送に用いられていることを
示す。
ＡＤ［７：０］−アドレス／データバス：このＩ／Ｏバスを利用して、コントローラと
フラッシュメモリコマンド間、並びにメモリ
制御４５０のアドレスレジスタとデータレジ
スタ間でデータ転送を行う。
【００２１】
このインターフェイスは単に一例として示すものにすぎず、このインターフェイスの代わりに、同じ機能性を与える別の信号構成を用いることも同様に可能である。図１は、その関連する構成要素を備えた唯一のフラッシュメモリアレイ４００を示すが、多数のこのようなアレイは共通のインターフェイスとメモリ制御回路とを共有する単一のフラッシュメモリチップ上に存在することができるが、アレイ間での並列的な読み出し動作とプログラミング動作とを可能にするために、別々のＸＤＥＣ、ＹＤＥＣ、ＳＡ／ＰＲＯＧおよびデータＲＥＧ回路を有するようにしてもよい。
【００２２】
データは、データレジスタ４０４を介するメモリアレイと、Ｉ／ＯバスＡＤ［７：０］４１１とのデータレジスタの結合を介する外部コントローラとの間で転送される。データレジスタ４０４はセンス増幅器／プログラミング回路４５４とも接続される。個々のセンス増幅器／プログラミング回路素子とに結合されたデータレジスタの構成要素の数は、メモリセルの個々の記憶素子に記憶されているビット数によって決めることも可能である。１つのポピュラーな形では、個々のフラッシュＥＥＰＲＯＭセルの中に電荷記憶素子として１以上のフローティングゲートが含まれる。個々の電荷記憶素子は、メモリセルが多状態モードで動作する場合、２や４などの複数のビットを記憶することも可能である。これとは別に、記憶素子当たり１ビットデータを記憶するためにメモリセルを２進モードで動作させることも可能である。
【００２３】
行デコーダ４０１は、アクセスすべき物理ページを選択するためにアレイ４００用の行アドレスを復号化する。行デコーダ４０１は、内部行アドレスライン４１９を介してメモリ制御論理回路４５０から行アドレスを受信する。列デコーダ４０２は、内部列アドレスライン４２９を介してメモリ制御論理回路４５０から列アドレスを受信する。
【００２４】
図２は、典型的な不揮発性データ記憶システムの構成を示し、この場合、記憶媒体としてフラッシュメモリセルが用いられている。１つの形では、このシステムは、ホストのレセプタクル内へ挿入されるとき、ホストインターフェイスを提供する１つの側部に沿って延在する電気コネクタを有する取り外し可能なカード内にカプセル化される。これとは別に、取り外せないようにインストールされた回路の形で、或いは別様に、図２のシステムをホストシステムの中へ組み込むことも可能である。このシステムは、高レベルのホスト機能およびメモリ制御機能を実行する単一コントローラ３０１を利用するものである。フラッシュメモリメディアは１以上のフラッシュメモリデバイスから構成され、個々のこのようなデバイスはそれ自身の集積回路チップ上に形成される場合が多い。システムコントローラとフラッシュメモリとは、コントローラ３０１が、コマンドをロードし、アドレス指定を行い、フラッシュメモリアレイ間を往来するデータの転送を行うことを可能にするバス３０２によって接続される。コントローラ３０１は、フラッシュメモリアレイ間を往来してユーザデータを転送するホストシステム（図示せず）とインターフェイスを行う。図２のシステムがカードに含まれる場合では、ホストインターフェイスは、カードとホスト機器とに差込プラグとソケット組立（図示せず）とを含むものとなる。コントローラ３０１は、特定の論理アドレスから始まる１以上のセクタのユーザデータを読み出したり、或いは書き込んだりするためにホストからコマンドを受信する。このアドレスは、メモリセルの物理ブロックの境界と位置合わせを行うものであってもよいし、行わないものであってもよい。
【００２５】
フラッシュメモリアレイ４００は通常２以上のサブアレイ（本願明細書ではプレーンと呼ばれている）に分割され、２つのこのようなプレーン４００ａと４００ｂとが図３に例示されている。これとは別に、４または８などのさらに多数のプレーンをメモリアレイ４００に含むことも可能である。個々のプレーンは例示の便宜上１６個の物理ブロック０〜１５を有するように図に示されているが、実際のプレーンは典型的にはさらにずっと多くのブロックを含むものとなる。このブロックには、消去単位である一回で消去可能な最小数のメモリセルが含まれる。プレーンの各々は、それ自身のデータレジスタ４０４ａと４０４ｂ、並びにプログラミング回路４５４ａと４５４ｂをそれぞれ備えている。これによって、プレーン４００ａと４００ｂの各メモリセルブロックの中へデータの同時プログラミングを行うことが可能となる。これらプレーンの各々は、サブアレイとして他のプレーンとはある程度独立して動作可能である。
【００２６】
図４は、図３のブロックのうちの１つのブロックを示し、このブロックには例示の便宜上１６ページの０〜１５のデータが含まれる。というのは、個々のブロックの中にさらに多くのページが含まれることも予想されるからである。１ページには、１回のプログラミング動作時にまとめてプログラム可能な最小数のメモリセル（プログラム可能な単位）が含まれる。個々のページはホストから順番に１以上のデータセクタを記憶し、メモリコントローラにより生成された若干のオーバーヘッドデータが通常ホストへ追加される。ホストに加えてオーバーヘッドデータ４４３から取得されたユーザデータ４４１の情報および／またはデータセクタが記憶されている物理ブロックのユーザデータ４４１の情報を含むように、１ページに記憶されたデータセクタの一例が図５に示されている。１セクタ内のユーザデータ量４４１は好便には５１２バイトのデータにするとよい。この記憶単位は、データセクタ単位でメモリ間を往来するデータを転送するホストを備えたメモリシステムの利用時に特に有用であり、このようなホストとしては、ほとんどのパーソナルコンピュータが含まれる。オーバーヘッドデータは各５１２バイトのユーザデータ用として１６バイトのオーダーとなるようにすることも可能である。
【００２７】
１ビットデータが個々のメモリセル記憶素子に記憶される２進状態を用いてメモリシステムを動作する場合、ユーザデータに加えてオーバーヘッドデータからなる１つのセクタが５２８のメモリセルを占有する。メモリセルを４状態で動作する場合、したがって１セル当たり２ビットのデータが記憶される場合、単一データセクタを記憶するには、同数のセルの１／２のセルが必要となる、すなわち個々のセルが２つのデータセクタの各々から１ビットを記憶する場合のように、同数のセルが２つのデータセクタを記憶することが可能となる、記憶素子当たりより多くの状態数が用いられる動作では、アレイのデータ記憶密度がさらに上昇する。
【００２８】
前述したように、複数ページに分割された大容量メモリセルブロックを有する従来技術によるシステムでは、原ブロックから、ホストによって書き込まれた新たな、更新済みデータも含む新しいブロックへ、更新中でない１ブロック内のページデータをコピーする必要がある。この技法が図６に例示されているが、この場合、図３のプレーンのうちの１つのプレーンのブロックのうちの２つのブロック（例えば、プレーン０のブロック３と１３）が示されている。原ブロック３のページ７〜１０内のデータは図に示されている更新済みデータの４ページによって更新中である。新規データは未使用の消去済みブロック１３の対応するページ７〜１０の中へ書き込まれる。次いで、原ブロック１３内のページ０〜６および１１〜１５からの変更のないユーザデータは新しいブロック１３の対応するページの中へコピーされる。新しいブロック１３のすべてのページは単一シーケンスのプログラミング動作でプログラムすることが望ましい。ブロック１３が完全にプログラムされた後、原ブロック３は消去され、後で利用するために消去済みブロックプールの中へ入れられる。ブロック３と１３との間でのデータのコピーは、原ブロック内の１以上のページからのデータの読み出し、および新しく割り当てられたブロック内のページへの同じデータの後続するプログラミングを含むことになり、メモリアレイの書き込み性能と使用可能な耐用期間とに悪影響を与える。
【００２９】
図７Ａと図７Ｂとを参照すると、部分的なテーブルによって、図６に関連して先程説明した、データの更新前（図７Ａ）と更新後（図７Ｂ）の論理ブロックの、新たな原物理ブロック３と１３へのマッピングが示されている。データ更新前に、この例では、原ブロック３は、ＰＢＮ３の対応するページ０〜１５にＬＢＮ３のページ０〜１５を記憶する。図６に従うデータの更新後、新しいブロック１３は、ＰＢＮ１３のそれぞれのページ０〜１５にＬＢＮ３のページ０〜１５を記憶する。図７Ｂにアドレス変換表が示され、このようにして更新が行われることが示されている。次いで、ＬＢＮ３からのデータの読み出しを要求する旨のホストからの受信は、原物理ブロック３（ＰＢＮ３）の代わりに物理ブロック１３（ＰＢＮ１３）へ向けられる。
【００３０】
市販のフラッシュメモリ製品で行われているように個々のページ内のデータのＬＢＮをこのページ内のオーバーヘッドデータとして記憶することも可能である。次いで、コントローラは、物理ページから読み出されたＬＢＮフィールドとこれらページのＰＢＮとから図７Ａと図７Ｂに示されているテーブルの形でテーブルを構成する。このテーブルは、アクセスを容易にするためにコントローラの揮発性メモリに記憶することも可能であるが、システム全体用の完全なテーブルの一部分だけを任意の時点に記憶する必要がある。テーブル部分に含まれるブロックに関係する読み出し動作またはプログラミング動作の直前にテーブルの一部を形成することも可能である。
【００３１】
図６に関して説明したものとは別様に動作する従来技術による別のシステムでは、ユーザデータと共に記憶されたオーバーヘッドとして新／旧のフラグが各ページの中に含まれ、新規データを含むページと、置換済みデータを含むページとの区別が図られる。新規データのみが新しく割り当てられたブロックへ書き込まれる。更新中でない原ブロックのページ内のデータを新しいブロックの中へコピーする必要はない。次いで、１つの論理ブロックのデータが２つの物理ブロック間で分割され、部分的に複製される。これは、所定のメモリ容量を有するシステムに対してさらに多くのメモリブロックを利用することができるようになることを要求するものである。これも、旧いページを最初に消去する必要なく、ページへのフラグの書き込みを可能にするメモリの利用も要求するものである。
【００３２】
種々のフラグが典型的に、ＬＢＮなどのオーバーヘッドとして他の関連するオーバーヘッドデータと同じ物理ページ、およびＥＣＣフィールドの中に記憶される。したがって、データが置換されたページの中に新／旧フラグをプログラムすることは、ページがマルチプログラミングサイクルをサポートすることを必要要件とすることになる。すなわち、メモリアレイは消去操作間の少なくとも２つの段階でプログラムすべき個々のページに対する能力を有する必要がある。さらに、ブロックは、より高いオフセット値やアドレスを持つブロック内の別のページが予めプログラムされているとき、ページをプログラムする能力をサポートする必要がある。しかし、いくつかのフラッシュメモリの限界に起因して、専ら物理的にシーケンシャルな態様でのみ、ブロック内のページのプログラミングが可能である旨を指定することによるこのようなフラグの利用は妨げられる。さらに、このようなフラッシュメモリでは、ページは有限数のプログラミングサイクルをサポートし、プログラムされたページの追加のプログラミングは場合よって許可されなくなることがある。多くの様々なタイプのフラッシュＥＥＰＲＯＭが存在するが、これらのフラッシュＥＥＰＲＯＭの各々は、少量の集積回路領域上に形成される高性能のメモリシステムを動作させるために対処しなければならないそれ自身の限界を提示している。
【００３３】
必要とされているものは、ホストの利用状況データのパターンに基づいてデータを最適に管理するメカニズムである。
【００３４】
本発明の例示の実施形態についての説明
フラッシュＥＥＰＲＯＭシステムの開発トレンドは、集積メモリ回路チップの製造コストを下げるために、メモリセルの数を大幅に増やし、それによって個々のブロックに記憶されるデータ量を大幅に増加させることを目的とするものである。約５１２または１０２４個のデータセクタ（各々５２８バイト）のブロックサイズは、したがって２７０，３３６バイトまたは５４０，６７２バイトのユーザデータおよびオーバーヘッドデータの個々の容量を有するものと考えられる。１ページの中にただ１つのセクタが含まれていれば、同数のページが存在することになるが、トレンドとして、やはり２つのデータセクタ、またはそれ以上のデータセクタを個々のページの中に含むようにすることによって、１回のプログラミング動作の一部としてプログラムされるデータ量を増やす傾向があり、その場合、所定数のデータセクタを記憶するブロック内のページ数は減少する。しかし、特定のいずれの実装例の詳細にも関係なく、ブロック内のデータの一部のみを更新する前述した現行技術は、個々のブロックのデータ記憶容量が増大するにつれて、メモリの性能および／または容量の利用に対する逆効果を強めるものとなる。
【００３５】
１ブロックの５２８バイト程度からなる数ページのみのデータを更新している場合、図６と関連して説明した現行技術は、旧いブロックから新しいブロックへ残りの変更のないページ（通常１回につき１ページ）をコピーする時間という点から見て著しいオーバーヘッドを有することがわかる。これは、リアルタイムデータの記憶用途で現在使用されているずっと小さなブロックサイズに関して問題になる可能性があるが、ブロックサイズの増大につれてさらに悪化するものである。さらに、原ブロック内の旧いデータページに１個置きにタグをつける技法を利用する場合、新しいブロック内の残りページが未使用状態のままになる可能性を有する別の大きなブロックの中へ数ページ分の更新済みデータが書き込まれる。
【００３６】
したがって、本発明の１つの態様によれば、プレーン内の若干の別のブロック、またはすべての別のブロックのデータのうちのこのような少量の更新値を受信するために、メモリの個々のプレーンの中に少なくとも１つのブロックが提供される。図８に示されているメモリプレーンでは、１つのタイプのブロック１０がそのように指定され、本願明細書ではＥ１ブロックとして特定される。以下に説明するように、別様に動作する個々のメモリプレーン用として指定される少なくとも１つのタイプのブロック（Ｅ２ブロックと呼ばれる）も存在する。プレーン内の未使用ブロックのいずれもＥ１ブロックまたはＥ２ブロックとして指定することが可能であり、メモリの動作中、場合に応じてこの指定を変更することができる。Ｅ１とＥ２ブロックの指定はホストのプログラミングパターンによって決められる。
【００３７】
図９を参照しながらＥ１ブロックの利用について説明する。この例では、図６と関連して前述した例の場合のように、ブロック３のページ７〜１０内のデータが更新中である。しかし、新しいブロック内の同じ範囲のページへ更新済みデータを書き込む代わりに、更新済みデータは任意の都合のよい未使用の消去済みページ内のＥ１ブロックに、通常順を追って書き込まれる。図９では、Ｅ１ブロックは、３ページの論理ブロック７から得られる更新済みデータをＥ１ブロックのページ０〜２に記憶し、論理ブロック２から得られる更新済みデータをＥ１ブロックのページ３と４とに記憶しているものとして示されている。論理ブロック３から得られる現在のページ７〜１０の更新済みデータを記憶するのに最も都合のよい場所は、それぞれ順に次の４ページの次のページ５〜８の中にある。Ｅ１ブロックの残りの消去済みページ９〜１５は別のブロックのページからの更新済みデータを記憶するのに利用可能である。
【００３８】
更新済みデータを記憶する時点で、ブロック３のページ７〜１０内の原データはこの例では旧いデータになっている。したがって、ブロック３のデータを読み出すとき、メモリシステムコントローラはＥ１ブロックから更新済みページ７〜１０を特定し、原ブロック内のページ７〜１０のデータの代わりに更新済みページのデータを使用することも必要となる。この目的のために、コントローラの高速揮発性メモリの中にアドレスマップが保持される。システムの少なくとも一部の中のページのオーバーヘッドデータから、或いは不揮発性メモリ内の別の記憶データから、Ｅ１ブロック内のデータを含むアドレスマップ用データがシステムの初期化時に取得される。このデータは、個々のページのオーバーヘッドデータの一部として一般に含まれる個々のページのＬＢＮを含むデータである。Ｅ１ブロックでは、ページは、何らかの特定の順序で書き込む旨の制約を受けていないため、個々のデータページのオーバーヘッドはその論理ページオフセット値をブロック内に含むことも望ましい。次いで、アドレスマップのデータは、Ｅ１ブロック内で変更されるいずれかのデータページのオーバーヘッドフィールドから更新される。
【００３９】
これまで任意の所定ページの唯一の更新値がＥ１ブロックの中に存在するものと仮定してきた。この仮定はある用途によって当てはまる場合もあれば、当てはまらない場合もある。例えば、図９の例では、原ブロック３のページ８が２度目に更新される場合も考えられ、この第２の更新値も利用可能な消去済みページ内の別のページの中の同じＥ１ブロックに記憶される。ブロック３に記憶されたデータを読み出す際、コントローラは、コントローラメモリ内で保持されているテーブルからか、或いはページ自体からかのいずれかから得られる、Ｅ１ブロック内のページのヘッダ（オーバーヘッドデータ）からもデータを読み出す。Ｅ１ブロック内でプログラムされたページのヘッダは、図９の例では、プログラム済みのページ８からページ０へのように毎回同じ方向で読み出される。ページが順番に書き込まれるタイプのメモリで遭遇する複製の更新済みページの場合には、逆方向のシーケンスで第１に読み出すページが最新のページであることをコントローラは認知し、同じＬＢＮとページオフセット値とを有するＥ１ブロック内の後続する他のすべてのページを無視する。完全なマップを維持するためにメモリの初期化中、Ｅ１ブロック内のページのヘッダを読み出すことも可能である。
【００４０】
同じＬＢＮとページオフセット値とを有する２ページのうちの最新のページの方を特定するさらに一般的な代替方法として、個々のページのオーバーヘッドが、同じ論理アドレスを持つ別のページをプログラムする時点に少なくとも関連して、プログラミングを行う時点の指示をさらに含むようにすることも可能である。これを行うことによって、コントローラは、特定のメモリブロックからデータの読み出しを行う際に、同じ論理アドレスが割り当てられたデータページの相対的経過時間を決定することが可能となる。この技法は、この技法を可能にするメモリシステムにおいて任意の順序で更新済みページをＥ１ブロックの中へ書き込むことを可能にするものである。この技法は、単一プレーンの中に２以上のＥ１ブロックを設けたメモリシステムの動作をさらに容易にすることができるものである。旧いデータを最新のデータと区別するこの方法については、前述した米国公開特許出願第２００２−００９９９０４号（特許文献２０）の中にさらに十分な記載がある。
【００４１】
個々のページにタイムスタンプを記録することができる複数の方法が存在する。最も簡単な方法として、その関連するページのデータがプログラムされたとき、システム内のリアルタイムの刻時出力値を記録する方法がある。同じ論理アドレスを持った後でプログラムされたページは、後で記録されたタイプスタンプをその時点で持つことになる。しかし、このようなリアルタイム刻時がシステムで利用することができないとき、別の技法を利用することもできる。１つの具体的な技法としてモジュールＮカウンタの出力をタイムスタンプとして記憶する技法がある。このカウンタ値の範囲は、同じ論理ページ番号を用いて記憶されていると考えられるページ数よりも１だけ多い範囲とすることが望ましい。図９の原ブロック３で特定ページのデータを更新するとき、例えば、コントローラはまずページのオーバーヘッドに記憶されている、更新中のデータのカウント値を読み出し、このカウント値を１などの或る量だけ増分し、次いで、Ｅ１ブロックに記憶されている新たな更新済みページに増分したカウント値が書き込まれる。このカウント値がコントローラメモリの中に保持されているテーブルに含まれていれば、コントローラはこのカウント値をそのテーブルから読み出す。含まれていなければ、コントローラは更新中のページのヘッダからカウント値を読み出す。カウンタ値は、カウント値Ｎに達すると０へロール・オーバーする。記憶されたカウント値の中に不連続点が存在することを保証するために、同じＬＢＮを持つブロックの番号はＮ未満にされる。こうすることによってシステムカウンタは、低いカウント値を持つＬＢＮの方が、より高いカウント値を持つＬＢＮよりも最新のものである場合を検出することが可能となる。
【００４２】
コントローラは、データを読み出すように要求されると、ページのオーバーヘッド内のタイムスタンプ値を比較することによって、同じＬＢＡとページオフセット値とを有する新規のページデータと置換ページデータとの区別を容易に行う。次いで、データファイルの最新バージョンを読み出す必要性に応じて、特定された新たなページからのデータを原ページによって更新し、最新バージョンのデータファイルの中へ組み込む。
【００４３】
図９の個々のページに記憶されたデータの単一セクタの構造の一例を図１０に示す。最大の部分はユーザデータ４５である。ユーザデータから計算される誤り訂正符号（ＥＣＣ）４７もページに記憶される。ＬＢＮおよびページタグ（論理ページオフセット値）を記憶するフィールド４１、タイムスタンプ４３およびオプションとしてオーバーヘッドデータから計算されるＥＣＣ５０を含むオーバーヘッドデータ４９もページに記憶される。ユーザデータＥＣＣ４７から分離しているオーバーヘッドデータをカバーするＥＣＣ５０を有することによって、ユーザデータからオーバーヘッド４９を別々に読み出し、ページに記憶されているデータのすべてを転送する必要なく、オーバーヘッド４９を有効なものとして評価することも可能である。しかし、これとは別に、オーバーヘッドデータ４９の別個の読み出しが頻繁なイベントでなければ、単一ＥＣＣによってページ内のデータのすべてをカバーして、ページ内のＥＣＣの総ビット数を減らすように図ることも可能である。ＥＣＣを利用する代替例として代わりに別の周知の冗長性技法を用いること可能である。マルチバージョンについての同じデータページを追跡する技法の追加の説明が、前述した米国公開特許出願第２００２−００９９９０４号（特許文献２０）に含まれている。
【００４４】
例えば、単一ホストコマンドによって更新中のページ数が個々のブロック内の総ページ数と比較して少ない場合、更新用のＥ１ブロックが利用される。１ブロックの十分に大きな比率のページが更新中のとき、図６に関連して説明した現行技術を代わりに用いるとさらに効率がよくなり、その場合、更新済みページと変更のないページとは、それらページの原ページの順序を保持した状態で新しいブロックへ直接書き込まれる。一度に更新中のブロックの比率および／または一度に更新中のブロックの絶対ページ数や、更新が行われている時点におけるおそらくメモリの動作の別の要因に応じて、一方の処理か、或いは他方の処理がコントローラにより選択される。このような別の１つの要因は、Ｅ２ブロックとして指定することができる新規ブロック１３の中にページを統合するのに不都合なものとなる場合があり、この場合、更新済みデータはブロックＥ１に一時的に記憶される。
【００４５】
２つの更新技法を呼び出す判定基準として役立つ最適比率または最適な更新ページ数は、異なる方法で構成および／または動作されるメモリシステム間で異なる数にすることが可能である。しかし、２つの更新技法の呼出しを実現するには固定した基準を設けるのが最も好便である。例えば、ブロック内の更新中のページ数が総ページ数の５０パーセント未満であるが、少なくとも１ページが更新中である場合、図９の新規の技法が利用される。この比率が５０パーセント以上であるが、少なくとも１ページが更新中でない場合には、図６の現行技術、或いは同様の技術が利用される。判定用数値は、例えばシステムによっては７５％のような高い比率としてもよいし、２５％のような低い比率としてもよい。この判定用数値の選択基準は、例えば、（プログラミング動作速度のような）メモリシステムの性能の最適化基準であってもよい。この数値はシステムの最適化を行うために製品構成中に変更することができるようなシステムパラメータとして記憶することが可能である。ガーベッジコレクション活動を含む最新のホスト動作の履歴に基づく判定用数値の更新と最適化とを行うためにコントローラ操作の中にアルゴリズムを含むようにすることも可能である。
【００４６】
ひとたびＥ１ブロックへ向けて着信データを送る決定がコントローラにより行われると、１以上のページがＥ１ブロックの中へ書き込まれた後、プログラミング動作の性質が検出されて、Ｅ２ブロックへ向けてより良好な送信を行うことも可能となる。１つの状況例として、シーケンシャルな書き込みコマンドがシーケンシャルなページ（一度に１ページまたは数ページ）を単一ブロックの中に同時に書き込んでいるのが発見される場合がある。コントローラは、このような数ページがＥ１ブロックの中へ書き込まれた後、この状況に気がつくことが可能であり、その後、Ｅ１ブロックへの更なる書き込みは停止され、残りのシーケンシャルな書き込みが代わりにＥ２ブロックへ向けて送信される。次いで、Ｅ１ブロックへすでに書き込まれたそれらページはＥ２ブロックへ転送される。処理手順によって、このプログラミング動作の結果、ブロックＥ１のページが統合される可能性は小さくなる。これとは別に、シーケンシャルなページ書き込みが消去済みのＥ１ブロックで始まる場合では、ブロックをＥ２ブロックへ変換することも可能である。
【００４７】
図１１Ａは、更新中のページ数が所定の識別レベルよりも高くなる場合のＥ２ブロック１３（図８）の利用を示す。この状況では、Ｅ１ブロック１０は使用されない。代わりに、原ブロック３に記憶されたページＰ２〜Ｐ１１の更新済みデータセクタが、例としてＥ２ブロック１３の同じページＰ１〜Ｐ１１の中へ直接書き込まれ、このＥ２ブロックは事前に消去されたものである。変更されない原ブロック３の残りのページＰ１、Ｐ２およびＰ１２〜Ｐ１５のデータセクタは、次いで、同じページ番号でＥ２ブロック１３の中へコピーされる。ほとんどの場合、２以上のデータセクタが１ページの中に記憶され、１ページ内のデータセクタのすべてを同時にコピーすることが望ましい。次のステップは、図１１Ｂによって示されているように、原ブロック３を消去し、将来の動作のために新たなＥ２ブロックとして原ブロック３を指定するステップである。図７Ａと図７Ｂとに例示するタイプの変換テーブルが更新されて、同じＬＢＮに対応する変更済みのＰＢＮが示される。
【００４８】
前述したように、１つのブロックのデータの更新済みページは、原ブロックの場合と同じオフセット値を含むＥ２ブロックのページに好ましくは記憶される。しかし、いくつかの用途に適した１つの代替例として、システムコントローラは、原ブロック内のページのオフセット値用と考えることなく、Ｅ２ブロックにページを記憶することができる。この代替例では、Ｅ２ブロックのページＰ０から始まる順序でこれらのページを記憶することができる。これは通常のブロックとは異なるＥ１ブロックの１つの特性を利用するものではあるが、まだ何らかのデータページの２以上のコピーをＥ２ブロックに記憶することができるものではない。この代替タイプのＥ２ブロックを使用するとき、データ統合はさらに複雑なものとなる可能性がある。というのは、これらの更新済みページを原ブロックの変更のないページと合成するために、Ｅ２ブロック内のページがＥ２ブロック内のページの原ブロックのページオフセット値を有する別のブロックのページの中へ間違った順序で転送されるからである。
【００４９】
Ｅ１ブロックとして機能するように取っておかれるシステム内のブロック数に限度を設けることができるようにするために、これらのブロックを効率良く利用して、小さな部分的なブロックの更新に対する予想される要求を満たすために利用可能な十分な数の消去されたＥ１ブロックページが存在するようにすることが望ましい。したがって、一次物理ブロックとＥ１ブロックとに記憶された論理ブロックのデータページの間欠的統合が行われる。これは、この論理ブロックに属している更新済みデータページのうちの少なくともいくつかのページをＥ１ブロックから除去し、それによってこれらのページを将来の利用のために利用可能にするものである。これらのページは単一物理ブロックの中へ統合される。
【００５０】
このような消去統合動作（ガーベッジコレクション）の一例として、図１２Ａ、１２Ｂおよび１２Ｃの時間的にシーケンシャルなブロック図を示す。これらの各図は、最上部の結線図は、図８のメモリアレイプレーンのブロック３のページの使用状況を表し、この使用状況は最初に（図１２Ａ）特定の論理ブロックのデータを記憶する一次ブロックとなる。ブロック３のページＰ７〜Ｐ１０から得られるデータは更新されたものであるが、これらデータページはページＰ５〜Ｐ１０の指定済みＥ１ブロック１０に記憶されていたものである（図１２Ａの中央結線図）。残りのページＰ０〜Ｐ６およびＰ１１〜Ｐ１５のブロック３には有効なデータが含まれる。別のページＰ０〜Ｐ４のＥ１ブロック１０には、図８のブロック３以外のブロックから得られる更新済みデータが含まれる。
【００５１】
消去統合動作時の第１のステップとして、Ｅ１ブロックのページのうちのいくつかを解放して使える状態にするために、ブロック１０の４ページＰ５〜Ｐ８から得られるデータがコピーされて、指定されたＥ２ブロック１３のページＰ７〜Ｐ１０の中へ入れられる（図１２Ａの最下部の結線図）。ブロック１３は以前に消去されるものである。次に、これらのデータは、データが更新される前にブロック３の中で当初有していたのと同じアドレス・オフセット値を有するブロック１３のページに記憶される。次のステップは、有効データページＰ０〜Ｐ６とＰ１１〜Ｐ１５とをブロック３からコピーして、図１２Ｂによって示されているように、Ｅ２ブロック１３のページの中へ入れるステップとなる。この時、ブロック１３は、更新中のブロック１３のページＰ６〜Ｐ１０内のデータと共に、原ブロック３から得られるすべてのデータページを単一物理ブロック１３内に含む。次いで、ブロック３が消去され（図１２Ｂ）、図８のメモリプレーン用の新たなＥ２ブロックとして指定される。これらのステップの多くを並行して同時に実行することも可能である。
【００５２】
Ｅ１ブロック１０のページＰ５〜Ｐ８内のデータはもはや必要ではない（図１２Ｂ）が、Ｅ１ブロックのページＰ０〜Ｐ４内のデータはまだ有効であり、別の物理ブロックの更新済みページデータとなる。次いで、このデータは、図１２Ｃに示されているように、消去済みブロック３のページＰ０〜Ｐ４の中へコピーされる。次いで、ブロック３は、Ｅ１ブロックとしてコントローラにより再指定され、将来利用するために消去済みページＰ５〜Ｐ１５を残して、前述した場合と同様に、更新済みデータのページを一時的に記憶する。次いで、ブロック１０は消去され、コントローラによりＥ２ブロックとして指定される。置換済みデータページは処理の一部としてすべて削除されている。
【００５３】
図１２Ａ〜１２Ｃと関連して前述した消去統合動作を開始するために、メモリシステムコントローラにより利用可能な複数のトリガイベントが存在する。最も普通のイベントとして、その時点でＥ１ブロックとして指定されたブロックが、更新済みデータで満たされたブロックのページの或る一定比率を有する場合のイベントが挙げられる。或る一定数の消去済みページは、Ｅ１ブロックで利用可能となるように保つ必要があり、この一定数は、更新値用の個々のＥ１ブロックを利用するブロック数などの複数の要因に応じて決められる。Ｅ１ブロック内の最も旧いデータページを含むブロックを統合することがＥ１ブロックにとって最も有益である。次いで、単一の消去統合動作によって、Ｅ１ブロックから最大数の不要ページが消去される。ブロックＥ１内のこのようなブロックのデータページのデータ内の誤り検出などの、統合対象ブロックＥ１内にデータページを有するブロックの選択に用いることも可能な別の基準が存在する。この基準は、ブロックＥ１ページ内の何らかの後続する誤りの発生がそのＥＣＣを無力化する見込みを最も小さくするものである。
【００５４】
図１２Ａ〜１２Ｃの消去統合をトリガするために利用可能な別のイベントとして、メモリの性能が指定されたＥ１ブロック内の不十分な空間に起因して低下する場合のイベントが考えられる。１つのブロックの一定数のページが更新中で、消去済みページがＥ１ブロックの中にほとんど存在しないために、更新中のページを記憶することができない場合、コントローラは、更新中の原データページと同じページオフセット値と共に更新済みページをＥ２ブロック、または別の消去済みブロックの中へ書き込むことが望ましい。この状況は、たとえ更新中のページ数が、通常Ｅ１ブロックの利用を必要とする所定数よりも少なくなった場合であっても必然的に生じる状況である。次いで、有効なページデータまたは旧くないデータページが原ブロックからコピーされ、同じＥ２、または別の消去済みブロックの中へ入れられ、論理ブロック用のすべての最新のデータが合成されて単一物理ブロックに変えられる。この状況は、指定したＥ１ブロックを利用することができる場合よりも多くの時間を要することになり、したがってシステムの性能に悪い影響を与える。したがって、この状況が所定回数生じたことが検出された後、さらに多くのページを解放してＥ１ブロックで使える状態にするために、図１２Ａ〜１２Ｃの統合動作が実行される。そうしないと、Ｅ１ブロックを備え、このブロックを利用する十分な利点が失われる。所定回数を予め設定したパラメータとしてもよいし、或いはメモリコントローラによって所定回数を適宜最適化するようにしてもよい。
【００５５】
また、Ｅ１ブロック内の更新済みデータページを有するデータブロックをリフレッシュする必要があるとき、このデータリフレッシュがメモリ動作の一部であれば、そのリフレッシュステップの中に図１２Ａ〜１２Ｃの消去統合動作を含むようにすることができる。別のオーバーヘッド動作の一部として、このデータリフレッシュを同様に含むことが可能である。というのは、この時点でデータリフレッシュを行うことは効率のよいものになる場合が多いからである。さらに、別のトリガイベントとして、コントローラが別様に占有されていなかったり、統合動作を実行することができるほど十分な時間の間、占有することができるようにスケジュールされていなかったりした場合、消去統合を行うことが可能である。前述した要因のうちの任意の１つの要因、複数の要因、またはすべての要因を用いて、図１２Ａ〜１２Ｃの消去統合動作を開始することが可能となる。さらに、単一ブロックに対してデータページを統合するための消去統合動作について説明したが、この処理は、Ｅ１ブロックにおいてさらに多くのページを解放して使える状態にするために、２以上のブロックに対して繰り返し行うことが可能である。また、メタブロックの統合を利用してこれらのデータページの統合を行うことが可能である。この統合は、Ｅ１ブロックに関係するマルチ消去統合動作を実行することができるほど十分な時間の間、別の機能を実行するためにコントローラを必要としなければ、好便に行われる。
【００５６】
図１２Ａ〜１２Ｃと関連して説明した統合動作は、Ｅ１ブロックで利用可能な消去済みページを利用する処理である。というのは、１つの時点で更新中のページ数が、Ｅ１ブロックでは、ページ数の１／２のような現在のページ数よりも少ない数ページとなり、ブロックＥ１の利用基準のうちの１つの基準をセットすることも可能となるからである。ページ数よりも多いページ数が更新されている場合、図１１Ａ〜１１Ｂと関連して前述したように、更新済みデータがＥ２ブロックの中へ直接書き込まれる。１つの時点で更新中の論理ブロックのページ数が所定数を上回り、ブロックＥ１を利用する別の確定基準が存在せず、しかも、この論理ブロックの１以上の更新済みページがＥ１ブロックの中へ事前に書き込まれている場合には、別の統合動作が行われる。この場合、更新済みブロックはＥ２ブロックの中へ直接書き込まれる。この状況を処理するメモリシステムコントローラの動作について図１３Ａ〜１３Ｃと関連して説明する。
【００５７】
図１３Ａの例では、ブロック３（最上部の結線図）に記憶されているデータのページＰ２〜Ｐ１１が１つの時点で更新中である。データページＰ１２〜Ｐ１３は事前に更新され、更新済みデータはページＰ５〜Ｐ６の図８のメモリプレーンの指定されたＥ１ブロック１０（図１３Ａの中央の結線図）に記憶される。データページＰ２〜Ｐ１１を更新する際の第１のステップとして、更新済みデータは、指定されたＥ２ブロック１３（図１３Ａの最下部の結線図）の対応するページＰ２〜Ｐ１１の中へ直接書き込まれる。事前に更新済みのページＰ１２〜Ｐ１３も、Ｅ１ブロックのページＰ５〜Ｐ６内のデータの位置からＥ２ブロックのページＰ１２〜Ｐ１３の中へコピーされる。
【００５８】
図１３Ｂに例示する次のステップは、ブロック３のページＰ１〜Ｐ２およびＰ１４〜Ｐ１５内の変更のないデータをブロック１３の対応するページ位置の中へコピーさせるステップである。この時、ブロック１３は最新の更新済みデータのページをすべて記憶する。次いで、ブロック３は消去され、Ｅ２ブロックとして指定される。ブロック１３以外の或るブロックから得られる残りの更新済みデータが、Ｅ１ブロック１０の有効データページＰ１〜Ｐ５に記憶され、次いで、図１３Ｃによって示されているように、データは、ブロック３の対応するページの中へコピーされる。次いで、ブロック３はＥ１ブロックとして指定される。次いで、ブロック１０は消去され、Ｅ２ブロックの利用に必要な将来の何らかの処理を行うためにブロック１０はＥ２ブロックになる。旧い、置換済みのデータページのすべては処理の際に削除される。
【００５９】
図１３Ａ〜１３Ｃによって示されている消去統合動作は、Ｅ２ブロックへの書き込み中の更新済みデータページに応じて開始されることが望ましい（図１３Ａ）。メモリプレーン内のＥ２ブロックを直ちに解放して将来利用することができる状態にするために、応答を即時に行うことができ、或いはこれとは別に、或る遅延時間後に統合を開始することもできる。更新済みデータページをＥ２ブロックに書き込んだ後、１回または数回の別のプログラミングサイクルを実行することができる遅延時間によって、統合動作時に含まれる、最初の物理ブロック３に記憶されていた論理ブロックのデータに対して任意の別の更新を行うことが可能になる。これによって同じデータブロックに対して近接して連続的にこのような統合を２回実施する手間が省ける。
【００６０】
図１２Ａ〜１２Ｃと、図１３Ａ〜１３Ｃとに関連して前述したように、Ｅ１ブロックに関係する消去統合動作は、パーソナルコンピュータ、コンピュータサーバ、携帯情報端末、サウンドとビデオの処理装置などを備えたメモリシステムに対する一般的な応用を含むものである。これらの応用例の多くでは、頻繁な間隔でメモリの１個、または数個のブロックの１ページ、或いはほんの数ページのデータページが一度に更新される。一例として、多くのコンピュータシステムの普通に見られる構成要素であるファイルアロケーションテーブル（ＦＡＴ）の保持がある。ＦＡＴはメモリの単一プレーンの唯一のブロック、または数ブロックに記憶されている場合が多い。個々のデータがホストによってメモリへ書き込まれる度に、そして、それ以外に、個々の消去統合動作の一部として、コントローラにより指定される物理メモリブロックへのホスト指定論理ブロックの記憶位置の割当てが変更されるときはいつでも、ＦＡＴテーブルの一部を記憶している少なくとも１ページの更新が行われる。頻繁なデータ更新の別の例として、メモリ処理の一部として保持されるオーバーヘッドデータに関連する例がある。例えば、個々のメモリブロックの使用状況や特性に関する或る情報が別のブロック内に一緒に保持されていることがある。このデータはメモリが使用されるとき、ほとんど連続的に更新される。
【００６１】
かなりの量のデータをこのように頻繁に更新するシステムの場合、１回に少量の更新を行うことによって、これらの頻繁な更新を受けるメモリ領域に対して２以上のＥ１ブロックを指定することによりメモリシステムの性能が改善される。主として更新されるデータ、またはこのような頻繁に更新されるデータのみを記憶する記憶先のＬＢＡの範囲に対応して、ホストが、専らこのブロックのみに関して使用する専用ブロックとしてＥ１ブロック、すなわちメタブロックに指定することが可能である。追加のブロック、または専用Ｅ１（ｄＥ１）ブロックとして機能するために、結果として生じた改善された性能が、一般的なサービスから１以上の追加のブロックを取り除かなければならないコストに見合うだけの価値があれば、この指定は実行される。この状況は、ＦＡＴテーブル、ブロックオーバーヘッドデータなどを記憶するブロックの場合に頻繁に生じる場合である。追加のＥ１ブロック、または専用Ｅ１ブロックの指定を行った結果、図１２Ａ〜１２Ｃの消去統合動作が実行されなければならない必要頻度を極めて大幅に減らすことが可能となる。
【００６２】
図１４は、１つの時点における１つのメモリプレーン内でのブロックの記憶位置の割当てを示し、この割当ては図８の割当てとは異なるものである。メモリプレーン用のＥ１ブロック全体として、メモリコントローラが指定するブロック１０に加えて、ブロック２はブロック１のみから行われる更新用ｄＥ１ブロックとして指定される。ブロック１に対応づけられたＬＢＮのページデータが更新され、かつブロックＥ１への書き込み条件が存在する（ブロックＥ２への書き込み条件ではなく）ときはいつでも、更新済みデータページはｄＥ１ブロック２の利用可能な消去済みページの中へ書き込まれる。更新済みデータを受信するｄＥ１ブロック２の範囲内のページは、このようなシーケンスにおいてその個々のブロックの中へのページの書き込みを要求するタイプのメモリの中で次の順序のページとなる。同様に、ブロック４は、ブロック３に対応づけられたＬＢＮの更新データを受信する専用ｄＥ１ブロックとして指定され、ブロック６は、ブロック５のＬＢＮ専用のｄＥ１ブロックである。プレーン内での３つの専用Ｅ１ブロックの利用例が、説明されている原理の唯一の具体例である。いくつかの用途の中に唯一のｄＥ１ブロックを示すことも可能であり、或いはプレーン内のブロックの１／２までをｄＥ１ブロックとして指定することも可能である。ブロック１３は、図１４のプレーンの例のためのＥ２ブロックとして指定されている。
【００６３】
専用Ｅ１ブロックの継続的使用によって、Ｅ１ブロックが最終的に満たされることは言うまでもない。Ｅ１ブロックが満たされる前に、Ｅ１ブロックを専用ブロックとするデータブロックの或るページを複数回書き換えることが可能である。個々のページは、この例では、Ｅ１ブロックの利用可能な次の消去済みページの中へ書き込まれ、さらに、原データブロック内のそのページオフセット値は、ブロック用のオーバーヘッドデータの一部として記憶される。いずれかの専用Ｅ１ブロックが満たされるちょっと前か、或いはいずれかの専用Ｅ１ブロックが満たされた時点で、そのＥ１ブロックといずれかの変更のないデータページとから得られる最新のページを含むようにデータブロックの書き換えを行う統合動作が行われる。この一例が図１５Ａと１５Ｂとに示されている。
【００６４】
図１５Ａに、図１４のブロック３とそのＥ１ブロック４とから得られるデータページの、Ｅ２ブロック１３内への統合が示されている。この例では、ページＰ０〜Ｐ１、Ｐ５〜Ｐ９、およびＰ１３〜Ｐ１４のデータが、変更のないデータである。この例では、残りのページＰ２〜Ｐ４、およびＰ１０〜Ｐ１２並びにＰ１５は、それぞれのページＰ７、Ｐ２、Ｐ１１、Ｐ１３、Ｐ１０、Ｐ８、およびＰ１２でｄＥ１ブロック４に記憶されている最新の更新済みページによって更新されている。この実施例では、統合処理がすでに始まっている。というのは、ｄＥ１ブロック４ページのすべてが最大の２ページＰ１４とＰ１５を除いてプログラムされているからである。ｄＥ１ブロックはほとんど満たされている。原データブロック３内の変更のないページ、およびｄＥ１ブロック４内の最新の更新済みページは、次いで、プログラミング処理によって組み立てられ、Ｅ２ブロック１３の中へ入れられる。個々のこのようなページはページの物理オフセット値を有するＥ２ブロックページの中へ書き込まれる。すなわち、更新済みページはｄＥ１ブロックの中にこれらのページが更新された順序で一時的に記憶されるが、ページのそれぞれの物理ページにおける記憶位置ではなく、原データブロック３から得られるページの最新の更新値が、これらページのアドレスのオフセット値に対応する記憶位置を有するＥ２ブロック１３のページの中へコピーされる。次いで、図１５Ｂに示されているように、ブロック３と４とを消去し、一方のブロックを新しいデータブロック１３専用のＥ１ブロックとして指定し、他方のブロックをメモリプレーン用のＥ２ブロックとする。
【００６５】
しかし、Ｅ２ブロック１３内のデータページは更新済みページ、またはコピー済みページと同じアドレスのオフセット値を持つことを要求されない。データページが同じ相対的順序でそのまま残っていることで十分である。例えば、最も左側の物理ページの代わりに左側から３番目の物理ページ内の第１のデータページＰ０を図１５ＡのＥ２ブロック１３に記憶することも可能である。残りのデータページはブロック１３内のデータページの論理アドレスの順に配置され、Ｅ２ブロック１３の最も左側の２ページに記憶された最後のページＰ１４とＰ１５とによってラップアラウンドが行われる。このようなページシフトを利用するとき、ユーザデータオーバーヘッドのページタグ４１（図１０）を用いて、Ｅ２ブロック内のデータページのオフセット値を追跡することが可能となる。
【００６６】
図１４のメモリプレーン内の追加のＥ１ブロックの指定と利用とをプログラムして、メモリシステムコントローラ用ファームウェアの中へ入れ、複数のＬＢＮであり、しかもプレーンの中へ対応づけられたＬＢＮのすべてよりも少数のＬＢＮを専用の追加のＥ１ブロックに動作させることが望ましい場合、ファームウェアが実行するようにすることも可能である。個々の関連するＥ１ブロックを持つように選ばれたＬＢＮは、ホストがそのデータを頻繁に更新すると予想される更新先のＬＢＮである。これとは別に、コントローラ用ファームウェアは、メモリが実際に使用される方法に応じて、個々の唯一の別のＬＢＮと関連づけられたｄＥ１ブロックを動的に指定することができる。例えば、ホストによって、ホストコマンド当たり１つのセクタだけ、或いは通常よりも少数のセクタ数でデータがＬＢＮへ書き込まれているとき、ＬＢＮをＬＢＮ自身のｄＥ１ブロックに割り当てるようにすることも可能である。さらに、データが連続して上書きされるＬＢＮにｄＥ１ブロックを割り当てることも可能である。ｄＥ１ブロックの利用によって、プレーンブロックＥ１全体の中からデータページの頻繁な統合が減少する。
【００６７】
ｄＥ１ブロックに対する必要性が存在する場合を示す別の例として、特定のデータブロックによる図１２Ａ〜１２Ｃの統合処理を他のブロックによる利用よりも高度に利用することによって、頻繁に更新されるデータのＬＢＮを利用して、専用Ｅ１ブロックとして指定すべきプレーンの未使用ブロックを動作可能にする例がある。性能を最適化するために、ブロックｄＥ１を頻繁に統合が行われる専用ブロックとすることが望ましい。ｄＥ１ブロックとしてＥ１ブロックを所定のＬＢＮ専用ブロックにすることが望ましい時点をコントローラ用ファームウェアが決定する処理の一例として、（１）Ｅ１ブロックへの書き込みを引き起こす、所定ブロックへの書き込み用ホストコマンドの数と、（２）所定ブロックへの書き込み動作の総数、および／または（３）Ｅ１ブロックへ書き込まれる同じ論理アドレスを持つセクタの数とのカウント値を保持する例がある。これらのカウント値の比率が所定値を上回れば、専用のブロックｄＥ１が確定される。次いで、図１５Ａと図１５Ｂとの統合動作によって、このようなデータを含む個々の論理ブロックと関連づけられた状態にＥ１ブロックが保たれる。
【００６８】
ｄＥ１ブロックを動的に確定する別の例として、メモリコントローラをプログラムして、更新頻度の高いタイプのデータを更新頻度の低いタイプのデータと区別するように、適当なブロックへ向けてこのようなデータを送ることが可能である。例えば、メモリコントローラは、それほど頻繁には更新されないユーザデータに特有の単一コマンドを持つマルチデータセクタを送信するホストと比べて、頻繁に更新されるＦＡＴテーブル用エントリに特有の個々のコマンドを持つ単一セクタデータがホストによって送信される時点を認識することができる。単一データセクタが受信されると、これらのデータセクタはｄＥ１ブロックを専用ブロックとする物理ブロックに対応づけられる。メモリシステムがマルチデータセクタを単位として受信すると、マルチデータセクタは別のデータブロックとＥ１ブロックを共用するデータブロックへ送信される。この非専用Ｅ１ブロックにはマルチＬＢＮから得られるデータが含まれている。
【００６９】
本発明の技法は、１プレーン、或いは論理的に分割してゾーンに変えられるマルチプレーンを有するメモリ構成に適用することも可能であるが、このゾーンの利用は本発明の実施に必要のないものである。マルチプレーンの場合、個々のゾーンは、プレーンの両端にわたって延在する。メタブロックは利用してもよいし、利用しなくてもよい。マルチプレーンの両端にわたる論理ゾーンを定義するメモリシステムの一例を概略的に図１６に示す。４つのプレーン０〜３が示されているが、メモリシステムは、これよりも少数のプレーン、またはこれ以上のプレーンを含むものであってもよい。個々のプレーンは多数のブロックを含むが、これらのブロックの一部は図１６では矩形によって示されている。個々のブロックは、別のメモリシステムに関連して前述したように、ブロック６１のうちの１つのブロック用のデータページ数を有している。この例での違いとして、プレーンがさらに別のゾーンに分割され、その場合個々のゾーンには２以上の各プレーンから得られる所定ブロック数が含まれるという点が挙げられる。例えば、図１６を参照すると、ゾーン０はプレーン０〜４の各々から得られるブロック数を有し、ゾーン１は、プレーンの各々から得られる別のグループのブロックを有するなどである。１つのゾーンの範囲内の個々のプレーン内のブロックは通常、同じ隣接する１セットの物理ブロックアドレスを占有するが、これは必要なことではない。ホストの論理アドレスの別個の範囲が個々のゾーンの中へ対応づけられる。
【００７０】
図１６のメモリシステムの動作単位はメタブロックにすることが望ましい。この例では、メタブロックには、メタブロックの形成のために論理的に一体に接続された個々のプレーンから得られる１つのブロックが含まれる。この場合では、個々のメタブロックは単一ゾーン内に形成される。１つのメタブロックが図１６のゾーン１内に示され、メタブロックは、一例としてブロック６３、６４、６５、６６から形成されている。メタブロックの特徴的動作には、メタブロック内でのすべてのブロックの同時消去、同時プログラミング、およびメタブロックの個々のブロックからの１以上のページの読み出しが含まれる。この高度な並行性によって、メモリシステムの性能は大幅に上昇する。システム内の任意の都合のよい記憶位置に固定された、或いは動的にリンクされたリスト、アレイテーブルなどとして、種々のメタブロック内に個々のブロックの識別子を保持することが可能である。通常、個々のページのユーザデータと共に記憶されたオーバーヘッドデータには、アドレス（プレーンを特定することができるほど十分な論理アドレスおよび／または物理アドレス）と、ゾーンと、ページが存在するブロックおよびこのブロック内のページのオフセット値とが含まれる。次いで、ページのオーバーヘッドデータのこれらのアドレスフィールドを読み出すコントローラによって、アドレスマップがコントローラのメモリ内に形成される。このアドレスマップの形成は通常、メモリの一部を対象とするプログラミング動作、読み出し動作、または消去動作に先行して、メモリの一部に対して一度に行われる。ゾーンに分割されないシステムの場合、マルチプレーンの利用可能な物理アドレス空間全体を通じてずっと、ブロックから個々のメタブロックを形成することが可能である。
【００７１】
ゾーン内の別のブロック用のブロックＥ１とブロックＥ２として使用するために、個々のゾーン内の１以上のブロックの記憶位置の割当てを行うことができる。図１６に示されている例では、ゾーン１は１つのブロックＥ１の中に設けられている。この場合、ゾーン１内のメタブロックのうちのいずれかのメタブロックへのデータの部分的なブロックの書き込みは、その書き込み動作がブロックＥ１の使用基準を満たす場合、ブロック６９を対象とする書き込みとなる。通常、ゾーンのサイズに応じて２以上のブロックＥ１が個々のゾーンに必要となる。特に、プレーン０〜３の各々から得られるそれぞれの１ブロック、ブロックＥ１ａ、Ｅ１ｂ、Ｅ１ｃ、Ｅ１ｄによってゾーン１内でメタブロックが形成される図１７に示されているように、Ｅ１機能用の１以上のメタブロックの記憶位置を個々のゾーン内に割り当てることができる。図１６または図１７の場合のいずれかでは、個々のゾーンに対する１以上のメタブロックＥ２の記憶位置が割り当てられる。これとは別に、単一ゾーン内にＥ１とＥ２ブロック機能をグループ化することによって、すべてのゾーンに対するＥ１とＥ２ブロック機能として機能するメタブロックのプールをシステム内のどこかに設けることができる。頻繁な書き込みを受ける別の単一メタブロック専用としてメタブロックＥ１を指定することも可能である。特に、これとは別に、図１２と図１３との統合のような単一ブロックＥ１に関連する前の説明をメタブロックＥ１に関して実現することが可能である。ブロック単位のサイズは基本的な処理を変更するものではない。Ｅ２用メタブロックの利用は通常、単一ブロックに対して行うことが望ましいが、Ｅ１用の単一ブロックの利用がメタブロックの効率を図るために望ましい場合もある。マルチゾーンアレイの単一ゾーン内でのメタブロックの利用に関わる説明は、アレイ全体が唯一のゾーンを含む場合にも当てはまることに留意されたい。
【００７２】
論理ブロックアドレスの個別の範囲内で更新済みデータページを受信する物理ブロックＥ１、ｄＥ１とＥ２の典型的な記憶位置の割当ての際に、２以上のオーバーラップしないセットの隣接する論理ブロックアドレスの各々と共に使用するために複数のこのようなブロックの記憶位置が割り当てられ、このような記憶位置の割当ては典型的に、システムがそのブロック、すなわちメタブロックを前述したゾーンの中へ編成させる場合に行われる。次いで、同じ規定が、それらの記憶位置が割り当てられたＥ１、ｄＥ１、およびＥ２ブロック、すなわちメタブロックを使用する場合と、方法とに関して、個々の論理ブロックアドレスに対して最も好便に適用される。
【００７３】
しかし、物理Ｅ１、ｄＥ１、およびＥ２ブロックのいずれか、或いはすべての使用は必ずしもこのような制約に従う必要はない。例えば、これらの特別のブロックが使用される場合と、方法とについての規定は、別の範囲と比較して１つの論理ブロックアドレスの範囲によって異なる場合もある。これによって、ホストの典型的な様々な使用状況パターンや、ホストの論理アドレスの様々な範囲に記憶されたデータタイプの認識が可能となる。さらに、特定の１セットのＥ１、ｄＥ１、およびＥ２ブロックの専用論理ブロックアドレスの範囲が隣接している必要は全くなくなる。異なる個々のオーバーラップしている範囲専用のＥ１、ｄＥ１、Ｅ２ブロックを使用する規定を用いて別の範囲とオーバーラップするように１つの論理ブロックアドレスの範囲を作成することさえ可能である。この後者の場合では、オーバーラップしている範囲内の論理ブロックアドレスを持つデータのホストによるプログラミングは、２以上のセットの物理Ｅ１、ｄＥ１、またはＥ２ブロックのうちの１つのブロックに記憶するのに適格であり、ホスト操作によって満たされる１セットの規定によって左右される。好ましくは、生じる可能性のあるセットのＥ１、ｄＥ１、Ｅ２ブロックのうちの唯一のブロックにおける記憶用としてオーバーラップしている論理アドレス範囲における任意の１つのプログラミング動作が適格となるように、これらの規定を設定することが望ましい。
【００７４】
図１８は、物理Ｅ１、ｄＥ１、およびＥ２ブロックを論理ブロックアドレスへ割り当てる一例を示す。図に示されているシーケンシャルな論理アドレスを持つＬＢＮ｛ｘ｝からＬＢＮ｛ｘ＋３｝までの４つの論理ブロックの間で、ＬＢＮ｛ｘ｝、ＬＮＢ｛ｘ＋１｝、ＬＢＮ｛ｘ＋２｝がＥ１ブロックの使用基準を満たす更新済みデータを記憶するための共通のＥ１ブロックを共有しているのに対して、論理ブロックは、Ｅ２ブロックの使用基準を満たす更新済みデータを記憶する別個のＥ２ブロックの中へそれぞれ対応づけられている。専用のＥ１とＥ２ブロックを使用するように指定された論理ブロックアドレスの範囲は、若干オーバーラップしたり、或いは互いに独占的であったりする同じ範囲であったり、異なる範囲であったりするものであってもよい。その場合、メモリをホストの使用状況に適合させることも可能である。例えば、頻繁な単一データセクタの更新を受ける論理アドレス範囲をＥ１ブロック、またはｄＥ１ブロックに対応づけることはできるが、Ｅ２ブロックに対応づけることはできない。というのは、一回で十分なデータ更新を行って、Ｅ２ブロックを有効なものにするようなことは起りそうなことではないからである。
【００７５】
Ｅ２ブロックに記憶されたデータは、一部分がさらに更新されると、同じデータ論理アドレス用として指定されたＥ１ブロックに記憶される。もちろん、この論理アドレスのデータをＥ２ブロック内にまず記憶する必要なく、Ｅ２ブロック用として指定された論理アドレスを有する更新済みデータをＥ１ブロックに記憶することができることは言うまでもない。更新済みデータの記憶用Ｅ１ブロック、またはＥ２ブロックの選択は、前述した基準によって決められる。
【００７６】
図１９のフローチャートは、メモリシステムの性能を最適化するために、ホスト処理のパターンに動的に応答するように前述したブロックＥ１、ｄＥ１、Ｅ２を利用するフラッシュメモリシステム動作の例を示す。メモリシステムが、接続先のホストシステムから書き込みコマンドを受信する度に、１０１で示されているように、処理が開始する。書き込みコマンドには、書き込むべきデータセクタの数を示すＬＢＮデータなどが含まれている。ＬＢＮは、プログラムされた特定のメモリアレイの構造および動作に応じて、メモリプレーンのブロックの中へ、またはマルチプレーンの両端にわたって延在するメタブロックの中へデータの対応づけを行わせるものである。第１のステップ１０３は、受信したＬＢＮと関連づけられた現行のＥ２ブロック、すなわちメタブロックの中に、プログラム中のデータセクタ数を書き込むだけの余地があるかどうかのチェックを行うステップである。その余地があれば、次のステップ１０５によって、現在の書き込み動作のデータセクタがシーケンシャルなアドレスを持つ前回の書き込み処理の続きであるかどうかが判定される。そうであれば、ステップ１０７で示されているように、データは現行のＥ２ブロックの中へプログラムされる。
【００７７】
しかし、ステップ１０５で、新たな書き込みが前回のシーケンスのセクタの続きであるセクタの書き込みではないと判定された場合、１または数個のセクタなどの少数のセクタが論理セクタアドレスの間隙に含まれているかどうかがステップ１０９で判定される。これらの変更のないデータセクタは、或る予めセットされたセクタ数よりも少なければ、ステップ１１１で示されているにように、Ｅ２ブロックの中へ順にコピーされ、新規のデータセクタがステップ１０７毎にＥ２ブロックへ書き込まれる。数個のセクタの変更のないデータを現行のＥ２ブロックの中へコピーすることは、セクタの間隙の数が少なくなるため、前の書き込みから全く切り離してその後の書き込み処理を行うよりは最適なコピーになる可能性がある。
【００７８】
しかし、論理アドレスの間隙が予めセットされたセクタ数よりも大きなものである場合、保留中の書き込み動作を含むＬＢＮの範囲用の新たなＥ２ブロックを形成することが望ましいかどうかについて次のステップ１１３で考慮される。考慮された統計値には、記憶処理や最近の書き込み処理の分析結果が含まれる場合もあれば、現在の書き込み動作のセクタ数の方が固定値の数値、または動的に決定されたしきい値の数値よりも大きいかどうかを判定するような単純なものもある。例えば、しきい値の数値は、ブロックに記憶されたデータセクタ数よりも少ないけれども、ブロックの容量の１／２、または３／４を越える場合もある。定義された統計値から新たなＥ２ブロックの形成が決定された場合、これはステップ１１５で行われ、次いで、保留中の書き込みのデータがステップ１０７で新たなＥ２ブロックの中へプログラムされる。図２０のフローチャートを参照しながら、新たなＥ２ブロックに対して記憶位置の割当てを行う処理について以下説明する。
【００７９】
この説明は、保留中の書き込み動作のデータセクタ数のための余地が現行のＥ２ブロックの中に存在するというステップ１０３で行われる判定に基づくものである。これに対して、十分な余地が存在しない場合には、処理は、新たなＥ２ブロックを形成すべきかどうかを判定するステップ１１３へジャンプする。
【００８０】
保留中の書き込み処理のデータ用として新たなＥ２ブロックを形成すべきではないとステップ１１３で判定された場合、その理由として、セクタ数がステップ１１３で用いられる予めセットされたしきい値の数値よりも小さい（または等しい）ことが予想され、したがってＥ１ブロックへのさらに適切な書き込みを行うことが可能であることが考えられる。したがって、次のステップ１１７では最新のデータセクタが存在するＬＢＡの範囲用として現行のｄＥ１ブロックが存在するかどうかの判定が行われる。最新のデータセクタが存在すれば、ステップ１１９でこれらのデータセクタはそのｄＥ１ブロックの中へプログラムされる。しかし、最新のデータセクタが存在しなければ、新たなｄＥ１ブロックを形成すべきかどうかがステップ１２１で判定される。この判定は、論理的なものであれ、物理的なものであれ、記憶された処理の分析結果に基づいて行うことも可能であり、或いは瞬時動作に基づいて判定を行うことも可能である。考慮される統計値には、ガーベッジコレクション動作の発生件数、形成されたＥ１ブロックの数、または所定のＬＢＡ範囲内のシーケンシャルでない単一セクタ書き込み動作の回数を含むことができる。或るブロック内のデータの更新回数と頻度がシステム内の大半のブロックの一般的な更新回数と頻度に比べてずっと大きなものである場合、ｄＥ１ブロックがその或るブロック専用となる。その結果として、ｄＥ１の記憶位置の割当てを行う場合、この割当ては図２０のフローチャートに従ってステップ１２３で行われる。
【００８１】
しかし、現行のｄＥ１ブロックの中に余地が存在しないため、別のブロックの記憶位置の割当てを行わない旨の決定が行われた場合、保留中の書き込み動作のＬＢＡと関連づけられた現行のＥ１ブロック内の余地がステップ１２５でサーチされる。前述したように、個々のプレーン内に１つのＥ１ブロックを指定するようにして、Ｅ１ブロックの管理をさらに容易にするために、Ｅ１ブロックをＬＢＡのある特定範囲のデータセクタの記憶に個々に限定することも可能である。或いは、Ｅ１ブロックがアレイ内の任意の場所から得られるＬＢＡと共にデータの記憶を行うことも可能である。データ用の十分な空間が存在すれば、次のステップ１２７で、そのデータはデータのＬＢＡと関連づけられたＥ１ブロックの中へ書き込まれる。
【００８２】
一方、データのＬＢＡと関連づけられたＥ１ブロックに余地がなければ、ステップ１２９によって示されているように、別のＥ１ブロック内で空間がサーチされる。このような空間が存在すれば、最新データのＬＢＡを有するために別のＥ１ブロックによって処理されたＬＢＡの範囲を拡大するかどうかに関する判定が行われる。ホストの使用状況パターンに応じて、システム内の複数のＥ１ブロック、またはすべてのＥ１ブロックのうちのいずれかの中の任意のＬＢＡと共にデータを記憶するか、或いは個々のＥ１ブロックをＬＢＡの設定範囲に厳密に限定するかのいずれかを行うのが好適であると考えられる。別のＥ１ブロックへデータを書き込む決定が行われた場合、これはステップ１２７で行われる。これに対して、別のＥ１ブロックへのデータの書き込みが決定されなかった場合、ステップ１３１毎に新たなＥ１ブロックの記憶位置が割り当てられ、ステップ１２７でデータはＥ１ブロックの中へ書き込まれる。
【００８３】
ステップ１１５、１２３、１３１のうちのいずれかのステップで新しいブロックの記憶位置を割り当てるルーチンが図２０のフローチャートによって示されている。最初のステップ１３３で、消去された未使用ブロックのプールでメモリブロックが利用可能であると判定された場合、このようなブロックが、ステップ１３５で、Ｅ２、ｄＥ１、またはＥ１ブロックとなるように割り当てられ、図１９のそれぞれのステップ１１５、１２３、または１３１のブロックに応じて実行される。これに対して、このようなブロックが利用可能でない場合、現行のＥ１、ｄＥ１、またはＥ２ブロックの記憶位置の割当てが解除され、新たな役割の再割当てが行われる。図２０の残りのステップによって、この目的のために、Ｅ１、ｄＥ１、またはＥ２ブロックの記憶位置の割当てが解除されたかどうかが判定される。この例で適用された原理は、使用頻度が最も低く、有用性が最も低いブロックの記憶位置の割当てを解除するものである。
【００８４】
新たなＥ１ブロックが形成された場合、図１９の処理がステップ１３１にあるとき、図２０のステップ１３９で、最大数のＥ１ブロックがすでに存在するかどうかの判定が行われる。この数はセットされたものであってもよいし、或いは３つのタイプのブロックすべての使用状況を好適に最適化するように変化するものであってもよい。指定されたＥ１、ｄＥ１、Ｅ２ブロックの総数は、その最大の論理アドレス空間に応えるのに必要な数以上の、システムにおいて提供される割増しのブロック数によって一般に限定される。最大数のＥ１ブロックが形成されていると判定された場合、次のステップ１４１はＥ１ブロックの記憶位置の割当てを解除し、ステップ１３５でこのブロックは新たなＥ１ブロックとして指定される。これに対して、最大数のＥ１ブロックが形成されていないとステップ１３９で判定された場合、後のステップで、新たなＥ１ブロック用としてｄＥ１ブロックか、或いはＥ２ブロックかの記憶位置の割当てを解除するかどうかの判定が行われる。新たなＥ１ブロックはＬＢＡの所定の範囲と共に使用するように限定することも可能であるし、或いはメモリアレイ全体をカバーするようにすることも可能である。
【００８５】
ステップ１４３によって判定されたように、Ｅ１ブロックの代わりに新たなｄＥ１ブロックが形成されている場合（図１９のステップ１２３）、ステップ１４５で解決すべき問題としてｄＥ１ブロックの最大許容数がすでに存在するかどうかという問題がある。ｄＥ１ブロックの最大許容数がすでに存在すれば、ステップ１３５で、ｄＥ１ブロックのうちの１つの記憶位置の割当てがステップ１４７で解除され、新たなｄＥ１ブロックとして割り当てられる。ｄＥ１ブロックの最大許容数が存在しなければ、ステップ１４９に達し、使用状況パターン統計を利用して現行のｄＥ１ブロックの記憶位置の割当てを解除すべきかどうかの判定が行われる。統計結果は、現行のｄＥ１ブロックが陳腐なものであるかどうかを示す測定値を含むものであってもよい。
【００８６】
新たなｄＥ１と新たなＥ１ブロックのいずれも形成されていなかった場合、ステップ１４３からもやはりステップ１４９に達し、最大数のＥ１ブロックが形成されていなかった場合、ステップ１３９からステップ１４９に達する。ｄＥ１ブロックの記憶位置の割当てを解除することがステップ１４９で判定された場合、ステップ１４７でこの解除が行われ、形成されている新たなＥ１ブロック、またはｄＥ１ブロックのうちの一方のブロックとしてブロックの再割当てがステップ１３５で行われる。しかし、現行のｄＥ１ブロックの記憶位置の割当てが解除されなければ、ステップ１５１に達し、その場合、Ｅ２ブロックの記憶位置の割当てが解除され、そのブロックが新たなＥ１、またはｄＥ１ブロックとして割り当てられるステップが後続する。ブロックは、ｄＥ１ブロックとして割り当てられる場合、別の単一物理ブロックのＬＢＮ範囲を上回るＬＢＮ範囲に割り当てることも可能である。
【００８７】
種々の例示の実施形態と関連して本発明について説明してきたが、本発明は添付の特許請求の範囲の最大の範囲内においてその権利が保護されるべきであることを理解されたい。
【図面の簡単な説明】
【００８８】
【図１】メモリセルアレイ、制御論理回路、およびデータレジスタとアドレスレジスタを備えた典型的な現行のフラッシュＥＥＰＲＯＭメモリデバイスのブロック図である。
【図２】システムコントローラを備えた図１の複数のメモリデバイスを利用する構成を示す。
【図３】図１のメモリアレイの一例として２つのプレーンにおけるブロックの配置構成を概略的に例示する。
【図４】複数ページ０〜１５を記憶する図３の１つのブロックの一例を示す。
【図５】図３および図４のブロックのページに記憶されるデータセクタの表示である。
【図６】マルチページ化ブロックのページのすべてよりも少ない数のページ内のデータを更新する現行の処理工程を示す。
【図７Ａ】図６の原ブロックと新しいブロック用の対応する論理ページと物理ページのアドレステーブルである。
【図７Ｂ】図６の原ブロックと新しいブロック用の対応する論理ページと物理ページのアドレステーブルである。
【図８】図３のアレイの１つのプレーン内の統合ブロックＥ１とＥ２の指定の一例を示す。
【図９】別のブロックのページのうちの数ページの中でデータを更新するための図８の統合ブロックＥ１の利用の一例である。
【図１０】図９のページに記憶されたデータセクタ内のデータフィールドの一例を示す。
【図１１Ａ】図８のブロックＥ２を利用するが、ブロックＥ１は利用しない所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。
【図１１Ｂ】図８のブロックＥ２を利用するが、ブロックＥ１は利用しない所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。
【図１２Ａ】図８のブロックＥ１とブロックＥ２の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。
【図１２Ｂ】図８のブロックＥ１とブロックＥ２の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。
【図１２Ｃ】図８のブロックＥ１とブロックＥ２の双方を利用する所定のデータブロックの更新済みデータページを統合するシーケンシャルな動作の一例を示す。
【図１３Ａ】図８のブロックＥ１とＥ２の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。
【図１３Ｂ】図８のブロックＥ１とＥ２の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。
【図１３Ｃ】図８のブロックＥ１とＥ２の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の別の例を示す。
【図１４】図３のアレイの単位内の統合ブロックＥ１とＥ２の指定の別の例を示す。
【図１５Ａ】図１４の統合ブロックＥ１とＥ２の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の一例を示す。
【図１５Ｂ】図１４の統合ブロックＥ１とＥ２の双方を利用する所定のブロックの数データページを更新するシーケンシャルな動作の一例を示す。
【図１６】メタブロックにデータを記憶するタイプのメモリ構成内のブロックＥ１とＥ２の利用を示す。
【図１７】Ｅ１ブロックがメタブロックである図１６のメモリ構成の変更例を示す。
【図１８】１セットのＥ１、ｄＥ１（専用Ｅ１）、およびＥ２ブロック内への論理アドレスのマッピングの一例を示す。
【図１９】安らぎブロックＥ１、ｄＥ１、およびＥ２を利用するホスト書き込みコマンドに応じて図１〜５のメモリシステム動作を示すフローチャートである。
【図２０】Ｅ１、ｄＥ１、およびＥ２ブロックのうちのいずれかの記憶位置を割り当てるために図１８の処理で行われるステップを示すフローチャートである。
【図１】
2007517319.tif 000003
【図２】
2007517319.tif 000004
【図３】
2007517319.tif 000005
【図４】
2007517319.tif 000006
【図５】
2007517319.tif 000007
【図６】
2007517319.tif 000008
【図７Ａ】
2007517319.tif 000009
【図７Ｂ】
2007517319.tif 000010
【図８】
2007517319.tif 000011
【図９】
2007517319.tif 000012
【図１０】
2007517319.tif 000013
【図１１Ａ】
2007517319.tif 000014
【図１１Ｂ】
2007517319.tif 000015
【図１２Ａ】
2007517319.tif 000016
【図１２Ｂ】
2007517319.tif 000017
【図１２Ｃ】
2007517319.tif 000018
【図１３Ａ】
2007517319.tif 000019
【図１３Ｂ】
2007517319.tif 000020
【図１３Ｃ】
2007517319.tif 000021
【図１４】
2007517319.tif 000022
【図１５Ａ】
2007517319.tif 000023
【図１５Ｂ】
2007517319.tif 000024
【図１６】
2007517319.tif 000025
【図１７】
2007517319.tif 000026
【図１８】
2007517319.tif 000027
【図１９】
2007517319.tif 000028
【図２０】
2007517319.tif 000029
【国際調査報告】
2007517319.tif 000030
2007517319.tif 000031