(57)【要約】フラッシュＥＥＰＲＯＭなどの不揮発性メモリ記憶システムでは、性能を向上させて摩耗を低減するために、ホストのプログラミングパターンおよびコントローラのデータ整理統合パターンに応じて、コントローラは、データセクタがメモリのブロックおよびメタブロックにマップされる方法を切り換える。データは、さまざまな並列処理度でメモリにプログラムされる。
2007517320.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリシステムにおいて、
少なくとも２つのサブアレイに分割された不揮発性メモリセルのアレイであって、前記少なくとも２つのサブアレイの各々においてデータが同時にアクセス可能な不揮発性メモリセルのアレイと、
少なくとも第１および第２の異なるインタリーブ配列で前記少なくとも２つのサブアレイ内に記憶されたデータと、
を備える不揮発性メモリシステム。
【請求項２】
前記少なくとも２つのサブアレイの各々において同時にアクセス可能な前記データは、データのセクタを含み、前記少なくとも２つのサブアレイ内に記憶されたデータのセクタは、
前記第１のインタリーブ配列に従って前記サブアレイを跨いでインタリーブされた第１の連続した論理アドレスのセットによって識別される少なくとも第１のデータセクタのセットと、
前記第２のインタリーブ配列に従って前記少なくとも２つのサブアレイのうちの単一のサブアレイ内にインタリーブされた第２の連続した論理アドレスのセットによって識別される少なくとも第２のデータセクタのセットと、
を備える請求項１記載のメモリシステム。
【請求項３】
記憶されたデータのセクタのインタリービングの度合いを示す表示も記憶される請求項２記載のメモリシステム。
【請求項４】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタ内にオーバーヘッドとして記憶される請求項３記載のメモリシステム。
【請求項５】
前記インタリービングの度合いを示す表示は、それらが関係する前記記憶されたデータのセクタとは別のセクタに記憶される請求項３記載のメモリシステム。
【請求項６】
ブロックを個々に複数のメモリセルサブアレイに論理的にリンクする不揮発性メモリシステムを動作させる方法。
【請求項７】
複数単位のデータをプログラムするために、またデータを並列に読み出すために同時にアクセス可能な複数のメモリセルサブアレイを有する不揮発性メモリにおいて、個々のサブアレイが同時に消去可能なある最小数のメモリセルのブロックに分割され、前記メモリを動作させる方法は、
前記複数のサブアレイの各々における１ブロックの総データ記憶容量よりも小さく、かつ連続した論理アドレスを有する所定数の単位のデータを前記メモリ内へプログラムするコマンドを受信するステップと、
プログラム対象の前記所定数の単位のデータを受信するステップと、
前記サブアレイの各々における１ブロックの前記総データ記憶容量を基準としてプログラムされている前記所定数の単位のデータに合わせて前記複数のメモリセルサブアレイのうちの１つまたはそれ以上のサブアレイの複数ブロックにわたって順番に配列された連続した論理アドレスを有する前記受信された単位のデータをプログラムするステップと、
を含む方法。
【請求項８】
不揮発性メモリシステムを動作させる方法において、
少なくとも第１の並列処理度および第２の並列処理度の各々でデータを書き込みおよび読み出しを実行して前記メモリを動作させるステップと、
前記メモリシステムによって受信されたデータ書き込み要求を観察するステップと、
前記受信された書き込み要求の個々の要求に添付されたデータを、前記受信された書き込み要求の少なくとも１つの特性に応じて、前記少なくとも第１および第２の並列処理度のうちの１つで書き込むステップと、
を含む方法。
【請求項９】
前記少なくとも１つの特性は、前記メモリ内に書き込まれるべき書き込み要求と共に受信されたある量のデータを含む請求項８記載の方法。
【請求項１０】
消去の単位としてブロック内に配列された不揮発性メモリセルのアレイ、その内部に配置されたデータのプログラミングおよび読み出しの単位としてのページ、および独立してアクセス可能な複数のブロックからなるプレーンを有するフラッシュメモリシステムにおける動作方法は、
複数の前記プレーンからのブロックを個々に含むメタブロックを論理的に形成するステップと、
さまざまな量のデータを有する書き込みコマンドを連続して受信するステップと、
前記ホスト書き込みコマンドのさまざまな特性に応じて、前記プレーンのうちの１つのプレーンの個々のブロック内のページに並列または順次に、あるいは前記メタブロックのうちの１つのメタブロックの２つまたはそれ以上のブロック内のページに並列に、前記受信されたデータをさまざまに書き込むステップと、
を含む方法。
【請求項１１】
データが並列に書き込まれている前記ブロックを識別する表示を、前記受信されたデータと同時に書き込むステップをさらに含む請求項１０記載の方法。
【請求項１２】
共に消去可能でかつ複数のデータの単位を個々に記憶するセルのブロックに構成されたメモリセルのアレイを有する不揮発性メモリシステムにおいて、書き込み対象の１つまたはそれ以上の単位のデータの論理アドレスを個々に指定し、かつ連続して受信されている前記指定された１つまたはそれ以上の単位のデータが添付されている一連の書き込みコマンドに応答する方法は、
個々の書き込みコマンドの前記論理アドレスを、前記添付の１つまたはそれ以上の単位のデータを並列に書き込むことができる１つまたはそれ以上の前記ブロックのメモリセル内の物理アドレスに変換するステップであって、ある数の前記１つまたはそれ以上のブロックが、前記１つまたはそれ以上の単位のデータを受信するために、前記受信された一連の書き込みコマンドのうちの少なくとも１つによって指定されたデータの単位数の関数として選択されるステップと、
前記選択された１つまたはそれ以上の単位のデータを前記１つまたはそれ以上のブロックに並列に書き込むステップと、
を含む方法。
【請求項１３】
不揮発性メモリのメモリセルのアレイを動作させる方法において、
第１および第２の異なるインタリーブ配列でデータを記憶するステップと、
前記第２のインタリーブ配列で記憶することによってより最適な性能特性がもたらされると考えられる前記第１のインタリーブ配列で記憶された前記データのうちの少なくとも一部を更新するコマンドの受信に応答して、前記第１のインタリーブ配列で記憶されたデータを読み出すステップと、
前記読み出されたデータおよび前記更新されたデータを、前記第２のインタリーブ配列で前記メモリアレイに書き込むステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性フラッシュメモリの動作に関し、より具体的には、大容量メモリセルブロックの管理に関する。
【背景技術】
【０００２】
今日、商業的に成功している不揮発性メモリ製品、特に小形形状のファクタカード形式のメモリ製品が数多く使用され、それらには、１つまたはそれ以上の集積回路チップ上に形成されたフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）セルのアレイが用いられている。必ずしもそうであるとは限らないが、通常は別個の集積回路チップ上に位置するメモリコントローラが、カードの接続されているホストと連動し、カード内部のメモリアレイの動作を制御する。このようなコントローラは一般に、マイクロプロセッサと、ある種の不揮発性読み出し専用メモリ（ＲＯＭ）と、揮発性ランダムアクセスメモリ（ＲＡＭ）と、データのプログラミングおよび読み出し中にデータがコントローラを通過する際にデータから誤り訂正符号（ＥＣＣ）を計算する回路のような１つまたはそれ以上の特殊回路とを含む。幾種類かの市販カードには、コンパクトフラッシュ（登録商標）（ＣＦ）カード、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）カード、スマートメディアカード、個人タグ（Ｐ−Ｔａｇ）、およびメモリスティックカードがある。この種類のメモリシステムは、メモリカードの実装以外に、さまざまな種類のホストシステム内に代替的に組み込むことができる。
【０００３】
ＮＯＲおよびＮＡＮＤの２種類の汎用メモリセルアレイ構造には、商業上の応用が見出されている。典型的なＮＯＲアレイでは、メモリセルは、列方向に延在する隣接するビットラインのソース拡散部とドレイン拡散部との間で接続され、コントロールゲートは、セルの行に沿って延在するワードラインに接続されている。メモリセルは、ソースとドレインとの間に位置するセルのチャネル領域の少なくとも一部分の上に配置された少なくとも１つの記憶素子を含む。従って、記憶素子上のプログラムされた電荷レベルによってセルの動作特性が制御され、次いでそれをアドレス指定されたメモリセルに適切な電圧を印加することによって読み出すことができる。このようなセルの例、メモリシステム内でのそれらの使用法、およびそれらを製造する方法は、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１３，４２１号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）、および第６，２２２，７６２号（特許文献７）に記載されている。
【０００４】
ＮＡＮＤアレイは、１つまたはそれ以上の選択トランジスタと共に個々のビットラインと基準電位との間に接続された、例えば１６または３２などの２つより多いメモリセルの直列ストリングを用いてセルの列を形成する。ワードラインは、多数のこれらの列内のセルを横断して延びる。１つの列内の個々のセルでは、１つのストリングに流れる電流がアドレス指定されたセル内に蓄積された電荷レベルに依存するように、そのストリング内の残りのセルに強制的に通電することにより、プログラミング時に読み出しおよび検証が行われる。ＮＡＮＤ構造のアレイの例およびメモリシステムの一部としてのそれらの動作に関する記載は、米国特許第５，５７０，３１５号（特許文献８）、第５，７７４，３９７号（特許文献９）、第６，０４６，９３５号（特許文献１０）および第６，５２２，５８０号（特許文献１１）に見出されている。
【０００５】
前に参照した特許に論じられているように、ごく一般的には導電性のフローティングゲートである現在のフラッシュＥＥＰＲＯＭアレイの電荷蓄積素子は一般に、導電性のドープされたポリシリコン材料から形成される。フラッシュＥＥＰＲＯＭシステムに有益な別の種類のメモリセルは、導電性フローティングゲートの代わりに非導電性の誘電体を用いて、不揮発的な方法で電荷を蓄積する。酸化シリコン、窒化シリコン、および酸化シリコン（ＯＮＯ）で形成された三層誘電体が、導電性コントロールゲートとメモリセルチャネル上方の半導体基板表面との間に挟まれている。セルには、セルチャネルから窒化物内へ電子を注入することによってプログラミングが行われ、窒化物内で電子は限定された領域内に閉じ込められて蓄積され、窒化物内に熱いホールを注入することによって消去が行われる。誘電体記憶素子を用いるいくつかの特定のセル構造およびアレイについては、２００２年１０月２５日に出願された米国特許出願第１０／２８０，３５２号（特許文献１２）に記載されている。
【０００６】
ほとんどすべての集積回路の用途と同じく、ある集積回路機能を実装するのに要するシリコン基板面積の縮小に対する強い要望が、フラッシュＥＥＰＲＯＭメモリセルアレイについても存在する。所与のサイズのメモリカードおよび他の種類のパッケージの記憶容量を増大させるために、或いは容量を増大させると同時にサイズを縮小するために、シリコン基板の所与の領域に記憶することができるデジタルデータの量を増大させることが絶えず望まれている。データの記憶密度を高める１つの方法は、１メモリセルおよび／または１記憶素子当たりに１ビットより多いデータを記憶することである。これは、記憶素子の電荷レベル電圧範囲のウィンドウを２つより多い状態に分割することによって達成される。４つのこのような状態を使用することによって各セルが２ビットのデータを記憶することが可能となり、８つの状態では１記憶素子につき３ビットのデータを記憶するなどとなる。フローティングゲートを用いた多状態フラッシュＥＥＰＲＯＭ構造およびそれらの動作については、米国特許第５，０４３，９４０号（特許文献１３）および第５，１７２，３３８号（特許文献１４）に記載され、誘電体フローティングゲートを用いた構造については、前述した米国特許出願第１０／２８０，３５２号（特許文献１２）に記載されている。多状態メモリセルアレイの選択された部分は、米国特許第５，９３０，１６７号（特許文献１５）および第６，４５６，５２８号（特許文献１６）に記載されている方法で、種々の理由に対して２つの状態（２値）で動作することもできる。
【０００７】
一般的なフラッシュＥＥＰＲＯＭアレイのメモリセルは、一括して消去されるセル群からなる別個のブロックに分割されている。すなわち、ブロックは、消去単位、同時に消去可能な最小のセル数である。１ページより多いデータを一回の動作でプログラムするかもしくは読み出すことができるが、各ブロックは通常、プログラミングおよび読み出しの最小単位である１ページまたはそれ以上のデータを記憶する。各ページは通常、ホストシステムによってサイズが定義されている１つまたはそれ以上のセクタのデータを記憶する。例示的なセクタは、磁気ディスクドライブに関して制定された基準に従った５１２バイトのユーザデータを含み、それに加えて、ユーザデータおよび／またはそれらが記憶されているブロックに関する数バイトのオーバーヘッド情報を含む。メモリシステムは通常、各ブロックにおいて１６、３２、またはそれ以上のページで構成され、各ページは、１つまたはごく少数のホストのデータセクタを記憶する。
【０００８】
ユーザデータをメモリアレイにプログラムし、かつそれからユーザデータを読み出す間の並列処理度を高めるために、アレイは通常、一般にプレーンと呼ばれるサブアレイに分割され、プレーンが、並列動作を可能にするためにそれら自体のデータレジスタおよび他の回路を含み、これによりデータの各セクタへのプログラミングまたはプレーンの各々からの読み出しを同時に行うことができる。単一の集積回路上のアレイを物理的にプレーンに分割してもよく、或いは各プレーンを１つまたはそれ以上の別個の集積回路チップから形成してもよい。このようなメモリシステムの例は、米国特許第５，７９８，９６８号（特許文献１７）および第５，８９０，１９２号（特許文献１８）に記載されている。
【０００９】
メモリをさらに効率的に管理するために、ブロックをメタブロックとして一緒に結合することができる。すなわち、各々の論理的にアドレス指定可能なメタブロックは、各プレーンから１つの物理ブロックを含むように定義される。メタブロックの使用については、国際公開特許出願第ＷＯ０２／０５８０７４号（特許文献１９）に記載されている。メタブロックは、データのプログラミング先および読み出し先としての共通の論理アドレスによって識別される。同様に、メタブロックのすべてのブロックは、一括して消去される。このような大きなブロックおよび／またはメタブロックで動作するメモリシステム内のコントローラは、ホストから受け取った論理ブロックアドレス（ＬＢＡ）と、メモリセルアレイ内の物理ブロック番号（ＰＢＮ）およびページアドレスとの間の変換を含むいくつかの機能を実行する。この変換は、論理ブロック番号（ＬＢＮ）と論理ページとの中間項の使用を含むことが多い。
【００１０】
メモリシステムのコントローラは、その構造および制御ファームウェアによって、ホストによりそれに課される種々の条件下でデータのプログラミングおよび読み出しを行わせることができるのが好ましい。一例を挙げれば、音声、ビデオまたは他のストリーミングデータを高速で受信することができ、データは、メモリシステムが起動されると、リアルタイムで記憶される。別の例を挙げれば、ホストは、アレイに記憶されたファイルアロケーションテーブル（ＦＡＴ）の書き込み時または更新時に行われるように、メモリシステムに１セクタのデータのプログラミングまたは読み出しを一度で行わせる。
【００１１】
メタブロックに記憶されたデータは頻繁に更新され、更新の可能性は、メタブロックのデータ容量が増大するにつれて高くなる。１つのメタブロックの更新されたセクタは通常、別のメタブロックに書き込まれる。変更のないセクタも通常、データを整理統合するために、同一のプログラミング動作の一部として、当初のメタブロックから新たなメタブロックへコピーされる。あるいは、更新されたデータと一括した単一のメタブロック内への後の再整理統合まで、変更のないデータを当初のメタブロック内に残しておいてもよい。
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１３，４２１号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，７７４，３９７号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第６，５２２，５８０号
【特許文献１２】米国特許出願第１０／２８０，３５２号
【特許文献１３】米国特許第５，０４３，９４０号
【特許文献１４】米国特許第５，１７２，３３８号
【特許文献１５】米国特許米国特許第５，９３０，１６７号
【特許文献１６】米国特許第６，４５６，５２８号
【特許文献１７】米国特許第５，７９８，９６８号
【特許文献１８】米国特許第５，８９０，１９２号
【特許文献１９】国際公開特許出願第ＷＯ０２／０５８０７４号
【発明の開示】
【００１２】
本発明によれば、データがプログラムされるメモリユニットのサイズは、ホストによってプログラムされているデータの特性および量に適応される。単一のプレーン内の１つまたはそれ以上のブロック内で連続してプログラムされている場合のように、特定の状況において行われるデータ整理統合の事例の増加という不利な点がメタブロックにデータを書き込むことによって提供される高度な並列処理の利点を上回る場合は、データの各セクタは、メタブロック内で論理的に一緒に結合されるよりも少ない数のブロックに書き込まれる。
【００１３】
メタブロックの容量を基準としてプログラムされているデータセクタの数が、実行するだけの価値を有する高度な並列処理の利点をもたらす場合は、データの各セクタは、メタブロックの全ブロックに並列に書き込まれる。しかし、特定のデータプログラミング動作がメタブロックの記憶容量に比して少数のデータセクタしか含まず、その結果としてのデータ整理統合動作の増加により、より高度な並列処理が役立つ度合いよりも性能が損なわれる可能性の方が高い場合、メタブロックの使用によって提供される並列処理の利点は実現されない。
【００１４】
本発明の特定の態様によれば、メモリコントローラは、ホストの書き込みコマンド内および／または一連の書き込みコマンド内に含まれたセクタ数に応じて、メタブロック内への高度な並列処理によるか、或いはメタブロックを構成しないより少数のブロックへの低度な並列処理により、データのいくつかのセクタを適応的にプログラムする。データは、物理ブロック内にマップされた論理ブロックに対するホストのデータプログラミングパターンに応じて、Ｍが４、８または別の整数であるＭ物理ブロックからなる１メタブロック全体にプログラムしてもよく、Ｍ／２、Ｍ／４、Ｍ／８、またはこれらに類似するもののようなより少ない数のブロックからなる１つのユニットにプログラムしてもよい。特定の種類のホストプログラミング動作では、ホストがＦＡＴテーブルなどの演算ファイルを更新するような通常の動作において行われることが多い単一のデータセクタのプログラミングは、メタブロックまたはサブメタブロックではなく、単一のブロックに向けられる。メタブロックは、一回で１セクタをプログラムするためには使用されない。メタブロックは、並列プログラミングによってメタブロックのいくつかのブロックにわたって分散されることになり、それにより１つまたは少数のデータセクタが一回でメタブロックの各ブロックに書き込まれる結果となる、論理的に連続するアドレスを有するほんの少数のセクタのプログラミング動作に使用される可能性もない。単一のブロックは、このような場合に使用されるのが好ましい。これにより、メタブロックのいくつかのブロック全部からのデータを新たなブロックに整理統合し、その後メタブロックのこのような数セクタが更新されるたびに当初のブロックを消去する必要性が回避される。このような単一ブロックに関するデータの整理統合では、単一ブロックの消去のみに終わり、その結果、メモリの耐用寿命を短縮する可能性のあるメモリのプログラミング／消去のサイクル数（磨耗）が減少する。
【００１５】
本発明の別の特定の態様によれば、１つの並列処理度で記憶されたデータへのアクセスは、その方がより最適な性能特性を提供する可能性がある場合、別の並列処理度によるアクセスに変換される。例えば、メタブロックへの並列プログラミングは、メタブロックへのデータ書き込みが変更され、それによって性能が向上すると考えられる場合、単一のプレーン内の各ブロックへの順次プログラミングに変換することができる。このような変換には、メタブロックのブロックからのデータを単一のプレーン内の他のブロックへコピーするステップが含まれる。逆に、単一のプレーン内のブロックへの順次プログラミングは、当初のブロックからメタブロックへデータをコピーするステップを含め、性能を向上させるためのメタブロック内での並列プログラミングに変換することができる。
【００１６】
例示的な実施例では、モードビットはフラッシュメモリアレイに記憶することができ、かつ個々のセクタのユーザデータに対応付け、セクタがメタブロック内で他と共に並列にプログラムされてきたか、或いはそうではなく単一のブロック内で他と共に論理的順序でプログラムされたかを示すことができる。モードビットは、１つのセクタのユーザデータと共に記憶してもよく、代替的に、多くのユーザデータセクタに対するオーバーヘッドデータを含む別のセクタの一部として記憶してもよい。ホストによってあるセクタのユーザデータを読み出すか、或いは再プログラムするように命令されたときにこのビットを読み出すことにより、コントローラは、適切なモードでセクタにアクセスする。初期動作時、コントローラは並列モードで機能するが、一連の１つまたは少数のセクタ書き込み動作を指示するホストのプログラミングコマンドに応答し、順次モードに変更する。次いで、コントローラは、影響を受けたデータセクタと関連するモードビットを変更し、ユーザデータを順次プログラムする。セクタのしきい値数を超過してデータのいくつかのセクタを一括してプログラムすることを指示する１つまたはそれ以上のプログラミングコマンドをホストから受信した場合、コントローラの動作を切り換えて、並列プログラミングモードに復帰させることができる。
【００１７】
さらに、特定の実施例では、各メタブロックは、メモリアレイのいくつかまたはすべてのプレーンの各々からの１つのブロックで形成される。次いで、ユーザデータが、２つの主モードのうちの１つでプログラミングおよび読み出しを実行する。第１の主モードでは、いくつかの連続してアドレス指定されたデータセクタが、このメタブロックの複数のブロックにわたって並列にプログラムされる。この結果、データセクタは、個々のブロック内にランダムな順序で記憶される。それらは、メタブロックが内部に形成されたプレーン間でインタリーブされる。第２の主モードでは、データセクタは、メタブロックの個々のブロック内で順次書き込まれる。コントローラは、並列プログラミングと順次プログラミングとの間でのデータセクタの変更に応じて、プレーン横断的（第１のモード）もしくは単一プレーン内で順次に（第２のモード）物理アドレスの順序を指定しなおすこともできる。これは、ブロック間でデータを移動させるステップを含むことができる。メモリシステムは一般に、メモリシステムの性能を向上させるために、これらの２つのモードのうちの異なるモードにおいて、異なるブロックで動作する。
【００１８】
本発明の追加の態様、利点および特徴は、添付図面と併せてなされる以下の本発明の例示的な実施例の説明に含まれる。本願明細書に参照されるすべての特許、特許出願、論文および他の出版物は、あらゆる目的に対してその全体が本願明細書において参照により援用されている。
【発明を実施するための最良の形態】
【００１９】
図１に、本発明の種々の態様を組み込むことができるフラッシュメモリを含む、コンピュータシステムなどの電子システムを全体として示す。この電子システムのいくつかの例には、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、ＭＰ３、および他のオーディオプレーヤ、デジタルカメラ、ビデオカメラ、電子ゲーム機、無線／有線電話通信装置、応答装置、ボイスレコーダ、ネットワークルータなどが含まれる。
【００２０】
図１のこの電子システムは、ランダムアクセスの主システムメモリ２５、およびキーボード、モニタ、モデムなどのような少なくとも１つまたはそれ以上の入出力装置２７と共にシステムバス２３に接続されたプロセッサもしくはマイクロプロセッサ２１を含む。一般的なコンピュータシステムバス２３に接続された別の主要なコンピュータシステムの構成要素は、ある量の長期の不揮発性メモリである。ＤＲＡＭ（ダイナミックＲＡＭ）またはＳＲＡＭ（スタティックＲＡＭ）などの揮発性メモリとは対照的に、不揮発性メモリは、その記憶状態を、デバイスから電力が除去された後においてもなおかつ保持する。一般に、このようなメモリは、メガバイト、ギガバイト、またはテラバイトのデータ記憶容量を有する磁気技術もしくは光技術を用いたディスクドライブである。このデータは、現行処理に用いるためにシステムの揮発性メモリ２５に取り込まれ、かつ容易に捕捉、変更、または修正することができる。
【００２１】
図１の場合、大容量記憶装置のメモリは、不揮発性のフラッシュメモリシステム２９である。メモリ２９は、取り外し可能なメモリカードの形状であってもよく、コンピュータシステム内にハード的に組み込んでも（埋め込んでも）よい。メモリシステム２９は、コンピュータシステムバス２３に接続されたコントローラ３１、および１つまたは複数の集積回路チップで形成されたメモリセルアレイ３３を含む。データおよび命令は、コントローラ３１から、主としてライン３５を介してメモリセルアレイ３３に伝達される。同様に、データおよび状態信号は、メモリセルアレイ３３からコントローラ３１にライン３７を介して伝達される。データライン３５および３７は、実装に応じて直列または並列とすることができる。コントローラ３１とアレイ３３との間の他の制御回路および状態回路は、図１には示されていない。いくつかのシステムでは、コントローラ３１はコンピュータシステム内に埋め込まれ、メモリセルアレイ３３は、取り外し可能なカードに実装される。
【００２２】
アレイ３３は、各電荷蓄積素子または各電荷蓄積領域が１ビットのデータを記憶するように動作させることができる。代替的に、アレイ３３は、多状態セルまたはマルチレベルセルと呼ばれるメモリセルの各電荷蓄積素子または各電荷蓄積領域に記憶された１つよりも多いビット数のデータで動作させることができる。
【００２３】
図２に、ホストインターフェイスおよびメモリ制御機能を実行する単一のコントローラ集積回路チップ１２１、および複数の集積回路チップ１２７で構成されたフラッシュメモリセルアレイを含む例示的なメモリカード構造を示す。システムコントローラおよびメモリセルアレイチップは、コントローラ１２１とメモリチップ１２７との間でコマンド、アドレス、およびデータを転送することを可能にするバス１２４によって接続されている。これは一般的であるが、メモリシステムのなかには専用のコントローラを持たずにホストシステムによる直接制御に依存するものもあることに留意されたい。
【００２４】
１セクタにプログラムされたホストデータの各セクタの量に、記憶されたデータの妥当性を判定するために用いられる誤り検出および誤り訂正符号（ＥＣＣ）が追加されることは、一般的な方法である。次いで、いくつかのこのようなシステムは、データが破損されていないことを保証する１つの方法としてＥＣＣを用いることによって読み出されているデータの妥当性をチェックする。ユーザデータのセクタは、ＥＣＣおよびヘッダ形式の他のオーバーヘッドデータと共に記憶することもできる。
【００２５】
メモリアレイにアクセスして順次にアドレス指定されたデータのプログラミングまたは読み出しを実行するステップの１つの特性は、「並列処理度」である。すなわち、メモリシステムの性能、すなわちアレイを往復してデータを転送する速度を向上させるために、実行可能な限り多くのデータを並列にプログラムし、かつ読み出すことが通常好ましい。用語「並列処理度」は、本願明細書では、並列にプログラミングまたは読み出しを実行することができるメモリのページ数を指す。１単位モードでは、単一のページのみが一度にアクセスされる。４単位モードでは、複数の連続してアドレス指定されたホストセクタには、一度に最大４ページアクセスされる。いくつかのホストデータアクセスパターンの下で性能および耐久性を向上させるためには、より高い並列処理度を可能にするためのマッピングを構成する必要がある一方で、他のホストデータアクセスパターンの下では、より低い並列処理度に対するマッピングを構成する必要がある。ホストがメモリシステムの異なる部分のデータに異なるパターンでアクセスする可能性があり、メモリシステムの異なる部分に対して異なるようにマッピングを構成することが必要となる。記憶装置の特定のアドレス範囲に記憶されたデータのホストデータアクセスパターンが経時変化する可能性もあり、特定のアドレス範囲のマッピング構成を経時変更することが必要となる。あり得る種々のホストの使用パターンを受けてメモリ利用を最適化するメモリ管理に対する全体的な必要性がある。
【００２６】
図３に、図１および図２のメモリセルアレイの一例を示す。この例では、アレイは、２つの集積回路デバイス、フラッシュ０およびフラッシュ１を含む。もちろん、メモリシステムの所望の記憶容量に応じて１つまたは３つより多いデバイスを用いることができる。各デバイス内のアレイ部分は、４つのプレーン、０〜３に分割されているが、他の実施形態では、２つ、３つまたは４つより多いプレーンを用いることもできる。複数のＱページ（１ページは、プログラミングおよび読み出しの最小単位である）がメモリセルの各ブロック（消去の最小単位）内に含まれ、複数のＮブロックが各プレーン内に含まれる。１ページは、１つまたは複数のホストデータセクタを記憶する容量を有し、これにより各ブロックにおいて複数のＱページとなる可能性があるＭデータセクタを各ブロックが記憶する。各プレーンは、プレーン内のメモリブロックおよびページにアクセスするそれ自体の回路を有する。通常、１ページのみが、各プレーン内で同時に書き込みまたは読み出しを実行する。特定の実施形態では、各セクタが、５１２バイトのユーザデータを含む。各セクタは、フラグ、ユーザデータＥＣＣ、種々のパラメータ、および他のオーバーヘッドデータ用の追加のビットまたはバイトをも含むことができる。
【００２７】
プレーンの数によって可能な並列処理度が決定され、その度合いでメモリシステムを動作させることができる。並列処理度は、同時にプログラミングまたは読み出しを実行することができるページ数を表す。より高い並列処理度では、より多くのデータを同時に操作することができる。並列処理度は、１、２またはそれ以上とすることができる。高度の並列処理では、複数のプレーン内の複数のページが同時にアクセスされるように、論理アドレス−物理アドレス変換は、コントローラによって行われる。連続した論理アドレスを有するいくつかのデータのセクタは、同時にアクセスされる。このセクタ数は、各ページに記憶されたセクタ数に並列にアクセスを受けているページの数を乗じたものに等しい。並列処理度が１である場合に対しては、本願明細書において、これを１単位モードと呼ぶ。この最も低い並列処理度では、１プレーンの１ページのみが一度にアクセスされる。この場合、単一のページ内に記憶することができる連続した論理アドレスを有するいくつかのホストデータセクタは、一度にアクセスすることができる。
【００２８】
コントローラは、ホストからの書き込みコマンドに指定された一連の論理アドレスを有するデータセクタの数によって、データをメモリにプログラムする際の並列処理度を決定することができる。いくつかのホストコマンドは、単一のコマンド中に、プログラム対象の多数の連続したデータセクタを指定する。コントローラは、より量の多い並列処理でメモリにデータを書き込むことによって、この種類のコマンドに応答し、その一例を図４に示す。他のホストコマンドは、１つのみまたはごく少数の連続した論理アドレスを有するデータセクタを書き込むように指定し、このコマンドは、最低限の並列処理度で実行され、その一例を図５に示す。
【００２９】
説明された特定のメモリの実施例では、最高度の並列処理度に対して、各プレーンに１つずつ、多数のデータセクタを多数の物理ページに同時にプログラムすることができる。これにより、より高度なデータ書き込み性能が可能となる。詳細に述べると、４プレーンに対して、最大４ページを同時に書き込むことができ、これによりデータを一度に１セクタしか書き込むことができないメモリより最大で約４倍の速度でメモリが動作する。その量のデータをプログラムするのに要する別々のプログラミング動作数は有意に減少する。さらに別の例を挙げれば、８プレーンを有するメモリに対して、最高並列処理度でのこのメモリのプログラミングは、データを一度に１ページしかプログラムすることができないメモリより最大で約８倍速い。
【００３０】
マルチプレーンメモリ構成では、各プレーンからの１ブロックを論理的にまとめてメタブロックを形成することができる。ページを示す線を含む図３の８ブロックの組み合わせは、メタブロックの一例である。メタブロックは、ある範囲の連続したホストアドレス内のデータセクタを含むブロックの論理的グループ化である。サブメタブロックは、セットまたは単位として管理されるメタブロック内のブロックのサブセットである。データ管理の目的でいったんメタブロックがサブメタブロックに区分化されると、各サブメタブロックは、その中のデータがメタブロックの他の部分から独立してそれらだけで整理統合されるという点で、実質的に並列処理が少ないメタブロックと同様に管理される。例えば、図３では、このデバイスの各々のデバイス上の４ブロックが、メタブロックを両方のデバイスにわたって拡張せずにメタブロックまたはサブメタブロックを形成することができる。
【００３１】
以下の説明では、以下の専門用語を用いる。（１）当初のブロックは、いくつかの当初のデータセットを含むメタブロックまたはサブメタブロックとする。（２）更新ブロックは、当初のブロックからのいくつかのデータ、または当初のブロックからコピーされたいくつかのデータ、もしくはその両方の更新版を含むメタブロックまたはサブメタブロックとする。（３）論理ブロックまたは論理サブメタブロックは、ブロックの物理位置に関係なく、またはデータが単一の位置に含まれているか、或いは当初のブロックおよび更新ブロックに含まれているかに関係なく、物理メタブロックまたは物理サブメタブロックにマップされたホスト論理セクタのセットとする。
【００３２】
論理メタブロックは、任意の所与の時刻にメタブロックを形成するブロックの物理セットと、任意の所与の時刻にデータが中に存在する物理ブロックを無視して、ある範囲のデータを含むようにホストによって管理される論理構成体との間に位置する中間単位である。さらに、メタブロックは、いくつかのメモリ回路チップにわたってマップすることができ、これにより１つの回路チップ上のメモリセルアレイがＮプレーンを含む場合、２つのチップにわたる場合には、メタブロックは最大２Ｎのブロックを含み、より多くのチップにわたってマップされる場合、より多くのブロックを含む。
【００３３】
所与の論理ブロックアドレス（ＬＢＡ）を有するデータは、物理ブロック番号（ＰＢＮ）で識別されたプレーン内の特定の物理メモリブロック内へ、コントローラによってマップされる。メタブロックを構成しているブロックのＰＢＮは、同一である必要はない。図６に、数ブロックで形成されたメタブロックの一例を示し、この数ブロックは、それらのプレーンの各々の中で異なる物理位置を有する。さらに、メタブロックまたはメタブロックの各部分を構成しているブロックがメモリシステムの動作中に変更される際に、各プレーンは固定されたままである必要はなく、各プレーン内で互いに関係なく再配置することができる。
【００３４】
あるセクタが新たなデータで更新される際に、所与のセクタと関連するブロックは、プレーン内の新たなブロックにコピーされる。このブロックは、プレーン内のどこにでも配置することができる。図７に、ある他の任意の物理ブロックへ移動中のサブメタブロックに関する１つの例を示す。
【００３５】
最高度の並列処理のために構成されたメタブロックは、連続する論理アドレスを有する多数のデータセクタにアクセスするホストコマンドに最適である。１ホスト読み出しコマンドまたは１ホスト書き込みコマンド当たりのセクタ数が並列にアクセスすることができるセクタ数を越える場合、高レベルの性能が達成される。漸進的に数が増大するセクタコマンド上で一度に動作するインクリメンタルゲインがホストコマンドについて達成される。というのは、これによって個々のコマンドを発行するステップに関連する１セクタ当たりの処理のオーバーヘッド量が減少するからである。
【００３６】
部分的に更新されたメタブロック内のデータを整理統合することが必要となるため、メタブロックでメモリを動作させる欠点は、ホストが１プレーンについて１セクタのみ書き込み、次いでアレイ内の他の箇所で書き込む場合に明らかとなる。この整理統合は、更新されたデータがプログラムされた新たなメタブロックへの当初のメタブロックからの変化していない全データセクタのコピー、およびその後の当初のメタブロック内の全ブロックの消去を必要とする。８プレーン、１ブロック当たり６４ページ、および各ページに記憶された１データセクタを有するメモリアレイの場合、５０４セクタのコピーおよび８ブロックの消去が必要となる。逆に、新たなデータセクタが１の並列処理度で動作する１つのサブメタブロックに書き込まれた場合、整理統合には５６セクタのコピーおよび単一のブロック消去が必要となり、少数のデータセクタを更新することによって生じるオーバーヘッドが大幅に減少する。
【００３７】
データの整理統合および移動に関連する消去はメモリを摩耗させるので、短い、不連続の書き込みは、メモリ磨耗を加速することになる。各メモリブロックは、適切に動作しなくなる前にそれが耐えることのできる有限数の消去／プログラミングサイクルを有する。サイクルの最大数は、いくつかある要因の中でも特に、メモリアレイの構造およびメモリの記憶状態を保持しなければならない精度に依存する。この数値は、１０，００００サイクルの低さとすることもでき、１００，０００サイクルまたはそれ以上のように極めて大きくすることもできるが、メモリシステム内の全ブロックの動作可能性を保持することが重要である。磨耗を最小化するには、ブロック消去を最小限度に抑えるのが好ましい。
【００３８】
以下は、メタブロック、サブメタブロック、またはいずれか一方の一部分が再配置されるか／もしくはデータが整理統合される種々のシナリオである。
（１）ホストがブロック内の１つまたはそれ以上のデータセクタを書き換える場合。このようなとき、このシステムは、消去されたブロックを更新用ブロックとして割り当て、書き換えられたデータは、更新用ブロックに書き込まれる。当初のブロック内の変化していないデータの一部または全部も更新用ブロックにコピーされ、その後同一の論理アドレスでのデータ要求の受信に応じて新たなブロックをアドレス指定するために、このシステム内に保持された論理アドレス−物理アドレス変換が更新される。ホストによるデータコピーまたはデータ書き換えによる更新用ブロックへのプログラミングが当初のブロックに記憶された全データに取って代わると、その後当初のブロックが消去される。
（２）特に当初のブロックが存在するプレーンにおいて、更新用ブロックとして割り当るために消去されたブロックが必要であるが、事前消去されたブロックが使用できない場合、２つまたはそれ以上の他のブロック内のデータが１つまたはそれ以上の他のブロックに整理統合される。次いで、それらの全データが移動された１つまたはそれ以上のブロックが消去され、現行プログラミング動作の更新用ブロックとして用いるのに使用可能となる。
（３）一実施形態では、更新用ブロックとするために必要な１つまたは複数のプレーン内のメタブロックの部分のみを整理統合することができる。残りのプレーン内のメタブロックの各ブロックは、残りのプレーン内の更新用ブロックが必要となった際に、要求に応じて後に整理統合することができる。
（４）さらに別の代替的な実施形態では、いくつかのプレーンでは整理統合が完了しているが、他はそうではないメタブロックは、ホストによって書き込みが行われ、かつ整理統合されたプレーン内の消去されたブロックを要求する。なんらかの所与のメタブロックのデータを完全に整理統合する（ガーベッジコレクションを行う）必要はなく、代わりに、要求に応じたブロックの整理統合および割り当てを可能にするために、各プレーン内のブロックが独立して管理される。この方法で、所与のメタブロックの他の部分から独立して、サブメタブロックをシステムの動作時に新たな物理アドレスに移動させることができる。
【００３９】
データを記憶する際は、高速動作を可能にする方法でデータセクタを物理ブロック内にマップすることにより、コントローラは、メモリ内への書き込みをさらに構成することができる。図４に、アクセスにおいて最大並列度、この例では４Ｘ並列インタリービングを可能にする方法でのプレーン０〜プレーン３にわたるメモリのインタリービングを示す。並列インタリービングとは、順次にアドレス指定されたホストセクタがプレーン間にインタリーブされるように、すなわち複数の順次にアドレス指定されたデータセクタが異なるプレーンのページ内で並列に同時にプログラムされるように、メモリがフォーマットされていることを指す。データは、別のメタブロックを形成する次の一連のブロックにデータが書き込まれる前に、１つのメタブロックを構成している各プレーンの１ブロックに同時にプログラムされる。１データセクタのみが各ブロックの個々のページに記憶された図４の例を想定すると、コントローラは、第１のセクタ、セクタ０をプレーン０内の１つのブロックに、第２のセクタ、セクタ１をプレーン１内の１つのブロックに、第３のセクタ、セクタ２をプレーン２内の１つのブロックに、第４のセクタ、セクタ３をプレーン３内の１つのブロックに書き込む。このメモリ構成は、並列マッピングと呼ぶことができる。この場合、これは、「４単位」インタリービングまたは「ｘ４」インタリービングもしくは「４Ｘ」インタリービングとなる。このフォーマットへのデータの書き込みを構成すれば、これにより、４つの異なるプレーンの４つのセクタが一度にプログラムされるので、連続してアドレス指定されたホストからの入力データ、通常はビットストリームを、高速の方法で書き込むことができる。
【００４０】
特定の実施例では、入力データは、レジスタとすることができる、各プレーンと関連するバッファによって逐次受信され、データは、コントローラがメモリをインタリーブした方法に従って、１つまたは複数のレジスタから不揮発性メモリセルに並列に書き込まれる。メモリセルの特定のインタリービングは、メモリをそれに応じてフォーマットすることによって得ることができる。データは、それが書き込まれたものと同一のインタリービングフォーマットに従ってメモリから取り出すことができる。
【００４１】
他の度合いの並列インタリービングを含み、多くの異なるメモリをマップする方法がある。その度合いの並列インタリービングよりも多いプレーンがあるかもしれない。例えば、４つのプレーンがあったとしても、特定のプログラミング動作に対する並列インタリービングでは、２つのプレーンに同時にアクセスすることができるだけかもしれない。これは、「２単位」インタリービングまたは「ｘ２」インタリービングもしくは「２Ｘ」インタリービングと呼ぶことができる。メモリは、「３単位」インタリービングまたは「ｘ３」インタリービングもしくは「３Ｘ」インタリービングで動作することもできる。
【００４２】
図５に、メモリの１単位インタリービングを示す。並列処理度は１である。アクセスが一度に１つのプレーン内の単一のページ毎となるので、これは、非並列処理と呼ばれることもある。図５では、セクタは、１ブロックの全ページが一杯になるまで、そのブロックに順次書き込まれ、その後、書き込みは、別のブロックへ進む。これは、「１単位」インタリービングまたは「ｘ１」インタリービングと呼ぶことができる。
【００４３】
タイミングの例は、図４と図５のインタリービング間の性能の差を示す。図５に従って４つの連続セクタに書き込むと、単一のプレーンの１データレジスタは順次４回充填され、書き込みは順次４回実行される。レジスタロードに２５マイクロ秒かかり、書き込みに１ミリ秒かかれば、総使用時間は、４＊２５マイクロ秒＋４＊１０００マイクロ秒＝４１００マイクロ秒となる。しかし、図４の並列書き込みでは、４セクタ書き込みには依然として４回の順次データレジスタロードが含まれるが、書き込み動作は１回のみとなる。総使用時間は、４＊２５マイクロ秒＋１０００マイクロ秒＝１１００マイクロ秒となる。この４Ｘ並列マッピングは、１Ｘマッピングを３．７倍上回る性能向上をもたらす。異なるメモリは異なるタイミング特性を有するので、これらの特定の数値は、比較例を提供するためにのみ使用されている。
【００４４】
データセクタに記憶された方法をコントローラに認識させるために、１つまたは複数のインタリービングインジケータビットがコントローラもしくはメモリに記憶されていてもよい。この１つまたは複数のインタリービングインジケータビットを用いて、コントローラは、更新データを記憶する順番もしくはデータを読み出す順番を決定することができる。例えば、メモリ上の各セクタは、セクタが記憶された方法を示すために含まれた１つまたはそれ以上のインジケータビットを有することができる。４プレーンメモリに対して、可能なメモリインタリーブ構成が７通りある。これらのインタリービングインジケータビットは、ユーザデータビットおよびＥＣＣなどの他のオーバーヘッドビットに追加されるビットである。インジケータビットは、代替的に、ヘッダではなくテーブルに別個に記憶してもよい。
【００４５】
単一のメモリアレイは通常、異なるインタリービングでアクセスされるブロックを有する。例えば、同一のメモリが、１単位（図５）で記憶されたデータおよび４単位（図４）で記憶された他のデータを有することができる。セクタインタリービングインジケータビットは、セクタを１つまたはそれ以上のブロックに記憶するのに用いられるインタリービングの方法を示す。例えば、１単位インタリービングを用いて第１のデータファイルをメモリに記憶することができ、第１のサブメタブロックに記憶されたセクタに対するインジケータビットがこれを示す。２単位インタリービングを用いることによって、サブメタブロックに第２のデータファイルを記憶することができ、そのように記憶されたセクタに対するインジケータビットがこれを示す。同じ方法で３単位インタリービングを用いることによって、サブメタブロックに第３のデータファイルを記憶することができる。単一のメモリアレイでは、種々のメモリセルブロックを、これらの方法のうちのいくつかで構成することができる。
【００４６】
コントローラは、ホストのプログラミングコマンドの性質から、データを導く方法を決定する。例えば、ホストがＦＡＴファイルシステム（ＭＳ−ＤＯＳファイルフォーマット）を更新している場合、各データ書き込みコマンドは通常、単一のセクタを指定することになる。すなわち、各ホスト書き込みコマンドに応答して、１つのセクタのみがフラッシュメモリにプログラムされる。この場合、データは、メタブロックにではなく、メモリの単一のブロックに、１単位動作によって順次記憶することができる。大容量のファイルがプログラムされる別の種類のデータプログラミング動作では、ホスト書き込みコマンドは、少なくとも１つのメタブロックのかなりの部分または全部を占有する可能性のある極めて多数のデータセクタを論理アドレス順に書き込むように指定する。コントローラは、ホストの活動に応答し、並列処理度をデータ書き込みの性質に合わせる。
【００４７】
論理アドレスを物理アドレスへマップする方法を決定するにあたって個々のデータ書き込みコマンドに応答することに加え、コントローラは、ホスト書き込みコマンドのパターンを監視することができる。この監視は、特定の１ブロックまたは複数ブロックがホストによってアクセスされた回数のカウント値を保持するステップを含むことができる。この情報は、それらのブロックに、或いは別個の物理ブロックに記憶されたデータセクタにオーバーヘッドデータとして記憶することができる。記憶された１つまたは複数の数値の分析には、しきい値の数値と比較するステップ、もしくは２つまたはそれ以上のアクセス利用パターンの頻度差をしきい値の数値と比較するステップを含むことができる。この情報は、例えば、データが頻繁に書き換えられるメタブロックを特定するのに有益であり、この場合、コントローラは、同一の論理アドレスを有するその後の書き込みをむしろ単一のブロックにマップするように決定することができる。これにより、データ更新の結果として整理統合しなければならないデータの量が減少する。
【００４８】
コントローラによって監視および記憶することができる別のプログラミング特性は、ホストが命令した書き込みにより１つまたはそれ以上のページもしくはブロックに書き込みが実行された回数対コントローラによって開始されたデータ整理統合（ガーベッジコレクション）の回数の値である。さらに別のプログラミング特性は、ブロックまたはメタブロックが繰り返し部分的にアクセスされると、このようなブロックにデータを書き込む場合の並列度を下げるのが望ましいことを信号で伝えることができるので、１つのブロックまたはメタブロックの全ページがデータ書き込みのためにアクセスされた回数よりも少ない回数の値である。さらに、個々のホストプログラミングコマンドによって書き込みが実行されたセクタ数の統計値を保持し、物理アドレスへの論理アドレスのマッピングを決定する際に使用することができる。例えば、一度に書き込むようにホスト書き込みコマンドによって指定されるデータセクタが主として１セクタであるのか、或いは４セクタまたはそれ以上であるのかは、極めて有益となりうる。
【００４９】
図４および図５の説明図は、この概念を説明する目的で２つのうちの１つのインタリービング手法で動作される集積回路デバイスのほぼ全体を示しているが、これは通常、メモリを使用する効率的な方法ではない。各デバイスは通常、そのブロックの一部分は並列アクセス（図４による）用のメタブロックを形成するのに用いられ、そのブロックの他の部分は一度に１ブロック（図５による）アクセスされている状態で動作される。
【００５０】
複数のプレーンにわたってセクタアドレスがインタリーブされる方法にはいくつかの利点および不利な点がある。より高度な並列インタリービングの利点は、順次にアドレス指定されたセクタを並列にメモリに書き込むことができる点である。より低度な並列マッピングまたは順次マッピングの利点は、部分的なブロック更新に応答してコピーを要するデータが少ない点、および特に少数のデータセクタが書き換えられる際にガーベッジコレクションを行う必要のあるブロック数が少ない点である。メタブロックに記憶されたデータの一部が書き換えられる際に、当初のブロックに存在する書き換えられなかったデータが新たなブロックにコピーされ、それが新たなデータと共に記憶される。並列マッピングを用いてデータが記憶された場合、データが異なる複数のプレーンにわたって拡がるために、メタブロック全体を書き換えることが必要となる。しかし、データが順次マッピングを用いてサブメタブロックに記憶されていた場合、サブメタブロック内のデータのみが、ガーベッジコレクションを行う必要がある。書き換え対象のデータは、書き換えられていないあらゆるデータと共に新たなブロックに書き込まれ、新たなブロックが、そのメタブロックの他のブロックと連結される。これにより、行う必要のあるコピー、書き込み、書き換え、およびガーベッジコレクションの量が最小化される。
【００５１】
一般に、フラッシュメモリセルは、それらの信頼性が許容できないレベルまで潜在的に低下する以前での有限数の消去／書き込みサイクル（例えば、１０，０００サイクルと１００，０００サイクルの間のいずれか）を有する。従って、書き換えおよび書き込みの量を最小化することにより、これがメモリの寿命を増大させる。ガーベッジコレクションには時間がかかるため、ガーベッジコレクションの量を減らすことも性能を向上させる。
【００５２】
以下の実施例は、フラッシュメモリを用いた本発明の特定の実施形態である。しかし、フラッシュメモリは、単に一例として用いられ、本発明は、他のメモリ技術にも用いることができる。特定の実施形態において、本発明は、多数のセクタ「ブロック」を含むフラッシュメモリ素子を含む記憶装置を扱う。ブロックは、１消去動作によって消去されるメモリの単位として定義される。言い換えれば、ブロックは、消去の単位である。本発明は、具体的に、それらのブロックのマッピングおよびアクセスに用いられる機構に取り組む。
【００５３】
ホストデバイスがフラッシュメモリカードにアクセスする際に、いくつかの特有の使用パターンがある。ＦＡＴファイルシステムは、（１）ＦＡＴ領域およびディレクトリ領域における単一セクタと、（２）記憶装置のユーザデータ領域におけるマルチセクタとの２つの相異なるパターンに至る。ボリューム内に断片化があれば、特定の用途に対しては、使用は、その後、順次的ではなく「ランダム」となる。
【００５４】
ホストは、種々のホスト使用パターンによってフラッシュメモリにアクセスすることができる。１つの使用パターンは単一セクタモードであり、このモードでは、セクタは一度に１つずつアクセスされる。他の使用パターンはマルチセクタモードであり、この場合、記憶システムは、各フラッシュデバイス内の多数のプレーンにわたり、１プレーンにつき１セクタずつ同時にアクセスする。
【００５５】
本発明は、不揮発性メモリのホスト使用パターン間の並列処理度および不揮発性メモリが構成またはフォーマットされている方法に適合する。並列処理度は、１単位（順次とも呼ばれる）、２単位、３単位、４単位などとすることができる。１単位方式、すなわち順次アクセス方式では、次のブロックへ進む前に、１つのブロック内の各セクタがアドレス指定され、そのアクセスは、一度に１セクタに限定される。並列アクセス方式（１単位アクセスより大きい）では、いくつかの順次的動作、すなわち１単位動作ではなく、１動作において各プレーンからのセクタがアドレス指定される。並列動作によって、処理能力を高めることによるより高い性能が可能となる。これらの２つの方式は、性能および磨耗に関して利点と不利な点とを有する。
【００５６】
本発明は、ホストアクセスを監視し、データをメモリに記憶する方法を切り換えて、いずれかのアクセスモードのメモリ磨耗特性および性能特性をうまくとらえて利用する。
【００５７】
マッピング情報を保持する種々の方式があり、開始ＬＢＡのテーブルは、１つの例である。メモリ内に保持されたテーブルは、開始ＬＢＡを各物理メモリブロックに対して配置するために用いられる。
【００５８】
セクタマッピングおよびブロック管理を伴うブロックマッピングの適応的並列処理は、新たなデータで上書きされているセクタを含むブロック上でコピー動作または消去動作、もしくは両方を行うだけで、フラッシュメモリに対して最適な書き込み／消去摩耗性能を提供する。
【００５９】
データセクタが単一セクタ並列処理用にマッピングされている領域へのアクセスは、所与の論理ブロック内の順次的アドレス順序づけを保持するために、順次にアドレス指定されたセクタに一回で１つ書き込むように限定される。並列アクセス（１単位アクセスより大きい）では、１プレーンにつき１セクタに同時に書き込むことができ、並列に書き込まれるプレーンの数に等しい係数により、性能が向上する。例えば、４プレーンを有するデバイスは、単一セクタ書き込みより約４倍速くデータを書き込むことができる。８プレーンを有するデバイスは、単一セクタ書き込みより約８倍速くデータを書き込むことができる。１６プレーンを有するデバイスは、単一セクタ書き込みより約１６倍速くデータを書き込むことができる。
【００６０】
図８に、順次マッピングを用いた場合のデータの修正を示す。４つの連続したセクタを上書きするには、新データを新たなブロックに書き込んで旧データを新たなブロックにコピーし、旧ブロックを消去する必要がある。１回の消去のみ実行する必要があることになる。コピー処理では消去済みセクタはコピーされない。
【００６１】
図９に、並列マッピングを用いた場合のデータの修正を示す。４つの連続したセクタを上書きするには、４つの新たなブロックを見つけ出し、旧データと新データを新たなブロックにコピーし、４つの旧ブロックを消去する必要がある。４回の消去を行う必要がある。ランダムまたは単一のセクタアクセスの下で行われるかもしれない場合、ホスト書き込み数に対して多くのデータ整理統合動作が必要となれば、チップの寿命が消去数の増加によって影響を受けることになる。
【００６２】
各セクタは一般に、ユーザデータ、ＥＣＣデータ、およびオーバーヘッドデータを含む。オーバーヘッド情報には、データ管理に必要なセクタＩＤ、物理アドレス情報、および他のシステム関連情報が含まれる。本発明の一実施形態では、オーバーヘッド情報は、データマッピングの適合的態様を管理するのに必要な付加情報を含む。いくらかのビット数を、並列処理度、サブメタブロックのサイズ、セクタインタリーブ、またはデータマッピングに関する他の指示を示すために保持することができる。
【００６３】
一例を挙げれば、最大メタブロックサイズが４ブロックである場合、２ビットのマッピングフィールドを用いて並列処理度を示すことができ、００ｂで１単位を示すことができ、０１ｂで２単位を示すことができるなどとなる。このシナリオでは、第１のプレーン内の第１のブロックは、それがフォーマットされている並列処理度を示すマッピングフィールドを有することになり、それに基づいて、ある別の数のブロックが同一のサブメタブロックに含まれることになる。例えば、第１の値が並列処理度２を示す０１ｂであった場合、メタブロック内の次のブロックのみが同一のサブメタブロックに入ることを示す。
【００６４】
メタブロックの各ブロック内の１つのセクタ、または所与のブロック内の連続したセクタから論理アドレス情報を読み出すことによってデータマッピングを決定し、かつそれに基づいてレイアウトを決定することが可能となるので、このマッピングフィールド情報は、便宜上保持されることになる。例えば、所与のブロック内の最初の２つの物理セクタが離れた２つの論理アドレスであった場合、インターリーブファクタは２となり、従って並列処理度は２となる。データマッピング情報は、セクタのオーバーヘッド情報にではなく、別個のテーブルに記憶してもよく、またデータマッピングが所与のメタブロックまたはサブメタブロックに対して修正されるたびに更新することができる。テーブルは、メモリ素子上の予約領域内の一実施形態の不揮発性メモリに保持される。
【００６５】
さらに、一実施形態では、最適なデータマッピングを決定するための後の分析のために、ホスト使用および／またはカード使用率を追跡記録する統計データが保持される。１つの統計データは、所与のホストコマンドに書き込まれたセクタ数である。この統計データが１つのメタブロックまたはサブメタブロック内の各セクタと共に記憶されれば、この統計データをグループとして分析することができ、最適な並列処理度に関しての決定を行うことができる。特定の実施形態では、この統計データは、セクタに書き込みが行われたときに、セクタのオーバーヘッドに記憶される。別の実施形態では、統計データは、一時的に揮発性メモリに記憶することができ、次いで揮発性メモリ内の別個のテーブルに転送することができる。
【００６６】
統計データは、書き込まれた各セクタまたはブロックに関して、例えばテーブル内に蓄積することもでき、これによって各々の発生回数または相対的発生回数が蓄積され、あるしきい値に基づいて並列処理度が変更される。蓄積の目的で、統計データは、許可された最も近い並列処理にビンされる。例えば、１度の並列処理と４度の並列処理のみが許可された場合、３つのセクタ上で動作している書き込みコマンドは、４つセクタ上で動作しているホストコマンドと共にカウントに蓄積されることになり、４つよりも多いセクタ上でのすべての書き込みコマンドは、４つのセクタ上での動作のカウントにビンされる。最高の並列処理度を表すビンは、コマンドのセクタカウントを最大並列処理度で除算した値だけ増分される。
【００６７】
一例を挙げれば、４が最大並列処理度である場合、１６セクタのホスト書き込みは、４単位カウントを４だけ増分することになる。１つの領域が大部分は単一セクタホストコマンドで書き込まれた場合、最適並列処理度は１であることを示す統計データが蓄積される。同様に、１つの領域が大部分は４セクタホストコマンドで書き込まれた場合、最適並列処理度は４であることを示す統計データが蓄積される。
【００６８】
別の統計データは、セクタがホスト書き込みにより書き込まれたか、あるいはデータの整理統合により書き込まれたかである。このような統計データは、例えば別個のテーブルまたは個々のセクタのオーバーヘッド内に、また２つの機構間の相対数の特定のしきい値、もしくは比率に基づいて蓄積することができ、これにより各々の発生回数または相対的発生回数が蓄積され、並列処理度が特定のしきい値に基づいて変更される。例えば、セクタが大部分はデータの整理統合により書き込まれていると判断された場合、データの整理統合活動に含まれるブロック数を最小化するためにこの領域が１単位並列処理用にフォーマットし直されれば、性能または耐久性全体を向上させることができる。
【００６９】
第２の統計データを用いてしきい値に到達することによって、次いで最適並列処理度を決定するための第１の統計データの評価が引き起こされるように、２つの前述した統計データのセットを結合することができる。このような蓄積された統計データを保持するテーブルは、不揮発性メモリに保持されることになり、一実施形態では、メモリ素子上の予約領域に保持される。蓄積された統計データはセクタ毎に保持することはできず、むしろメタブロック毎、またはひとまとまりのメタブロックのようなより大きい領域に保持されることに留意されたい。
【００７０】
このシステムは、空間を節約して使い続けるために、蓄積された統計データを関心のある領域のみで保持するように最適化することができる。例えば、所与の領域に対する蓄積された統計データの保持は、領域が最適にフォーマットされたセクタとは数の異なるセクタ上で動作しているコマンドが検出されたときに開始することができる。このような書き込みは、非最適書き込みコマンドと呼ばれる。
【００７１】
例えば、ある領域が１単位並列処理用にフォーマットされ、領域において４セクタ書き込みが行われている場合、これにより蓄積された統計データをその領域用に格納することができる。ひとたび非最適書き込みコマンドがしきい値を超えると、このシステムは、並列処理度をその領域がフォーマットされているものに切り換える。蓄積された統計データは、１つのホストセクタカウントの発生があれば増分され、もう一つの発生があれば減分されるカウンタとして実装することができる。例えば、１単位および４単位の並列処理のみが許可される場合、単一セクタ書き込みの発生毎に単一カウンタを増分し、４セクタ書き込みの発生毎に減分することができる。特定のしきい値に達したときに、領域のデータ構成が切り換えられる。
【００７２】
ブロックアクセスモード情報を記憶する別の方法は、ブロック用モードビットをシステムエリアに記憶されたマッピングセクタに記憶することである。アクセス統計データもシステムエリアに記憶することができる。
【００７３】
図１０に、ホストによる以下の一連の書き込み動作後のブロックの各セクタ内のカウントフィールドの一例を示す。
（１）  セクタ０をはじめとして１６セクタのホスト書き込み
（２）  セクタ１６をはじめとして８セクタのホスト書き込み
（３）  セクタ２４のホスト書き込み（１セクタのみ）
（４）  セクタ２５のホスト書き込み
（５）  セクタ２６のホスト書き込み
（６）  セクタ２７のホスト書き込み
（７）  セクタ２８のホスト書き込み
（８）  セクタ２９のホスト書き込み
（９）  セクタ３０のホスト書き込み、および
（１０）セクタ３１のホスト書き込み
【００７４】
これも示すのは、１単位（１４０５）および４単位（１４０８）の並列処理度のみが可能であると仮定して収集した統計データである。単一セクタ書き込みによって行うことができる８つの書き込み（１４０５）がある。この統計データは、セクタ２４〜セクタ３１への書き込みから収集された。４単位書き込みによって行うことができる６つの書き込み（１４０８）がある。より具体的には、４つの４セクタ書き込みに分割することができる１つの１６セクタ書き込み、および２つの４セクタ書き込みに分割することができる１つの８セクタ書き込みがあった。
【００７５】
収集された統計データに基づいて、１単位マッピングまたは４単位マッピング用にフォーマットし直すことができる。例えば、いつ１つのマッピングから別のマッピングへ切り換えるかに関する基準は、（ｘ４のような）あるカウントが別のカウント（ｘ１）を越える時に基づくことができる。他の基準を用いてもよい。
【００７６】
ｘ１およびｘ４に関する統計データ収集の一例も示す。しかし、他の実施形態では、統計データは、ｘ５、ｘ８、およびｘ１６などの他の可能な並列処理度に対する追跡記録を行うことができる。
【００７７】
図１１に異なる種類のセクタマッピング構想の例を示す。各ブロックに対して用いられるアクセス方法に関する知識、また一実施形態では、各ブロックにおけるユーザデータの位置は、各ブロックのＩＤが入手されたときに読まれて、変換テーブルが初期化される。アクセスモードビットはヘッダから読み出され、ブロックのアクセス方式を示すために変換テーブルに書き込まれる。ブロックは、プレーンからプレーンへと連続している必要はない。
【００７８】
図１１に、並列ブロックセクタナンバリングスキーム、１単位ブロックセクタナンバリングスキーム、すなわち順次ブロックセクタナンバリングスキーム、および一部が１単位アクセスで他の部分が１単位より大きい並列セクタナンバリングスキームの例を示す。一部が１単位アクセスで他の部分が１単位より大きい並列セクタナンバリングスキームは、混合モードスキームと呼ぶことができる。これらは、並列アクセス方式、順次（１単位）アクセス方式、および混合モードアクセス方式で、それぞれ用いられる。
【００７９】
図１２に、４Ｘ対１Ｘのマッピング変換の一例を示す。これは、４Ｘマッピングから１Ｘマッピングへの変換である。通常動作時、フラッシュメモリは一般に、最初は並列モード（１単位アクセスより大きい）であることを意味する最高性能で動作するようにセットアップされる。一般に、更新ブロックの割り当ての機会をトリガとして使用し、メタブロックを１つのフォーマットから別のフォーマットに変換すべきかどうかが決定される。１ブロックにおける単一セクタ書き込みの数がしきい値（ユーザが定義しても、システムの設計者が定義してもよい）を越えると、アクセス方式は、１単位方式に変換される。これには、全セクタが新たなブロックのそれらの適切な位置に書き込まれ、それらのアクセスビットがしかるべく設定されることが必要となる。
【００８０】
図１３に、順次マッピングから並列マッピングへの変換の一例を示す。先の場合とは逆に、１つのブロック内のセクタが単一セクタアクセスからマルチセクタアクセスへ移行する場合、アクセス方式が並列アクセスに合わせて変換され、セクタがしかるべく新たなブロックへ再書き込みされ、各セクタ内のアクセスモードビットが調整される。第１の並列処理度のマッピングから第２の並列処理度のマッピングへの変更は、同様の方法で実行される。例えば、マッピングは、２Ｘから４Ｘへ、または４Ｘから８Ｘへ変換することができ、逆の場合も同様となる。図１３における第１の並列処理度は、１Ｘマッピングである。これは、１Ｘマッピングから４Ｘマッピングへの変換である。
【００８１】
すでにデータが書き込まれているセクタへホストからデータの書き込みが行われているときには、このシステムは通常、１つのフォーマットから別のフォーマットへの変更を新たなブロックの割り当てと結び付けることに留意されたい。新たなメタブロックまたはサブメタブロックは、ホストが所与の領域にデータを再書き込みする際に割り当てられる。このようなときに、当初の領域に存在するデータの一部を新たに割り当てられた領域にコピーすることができる。ときには、それは、後のデータの整理統合時にコピーされる。いずれにしてもこのシステムは、全体として、新たな領域を論理ブロックに対して割り当てるイベントをうまく利用してフォーマットを遷移させる。このようなときに、その領域に関する使用ログをリセットすることができる。
【００８２】
コントローラは、必要に応じて、各アクセスモード間で切り換えを行う能力を有する。コントローラは、ホストの使用率に基づいて、いずれのモードを使用すべきかを決定することができる。ある数の単一セクタアクセスが発生した場合、これによって並列アクセスモードから順次アクセスモードへの変換をトリガすることができる。
【００８３】
さらに、混合モードブロックアクセスも可能である。同一のメモリ集積回路内に、一部のデータは順次アクセス向けに記憶することができ、他のデータは並列アクセス向けに記憶することができる。さらに、同一のフラッシュカードシステム内で、１つのメモリ集積回路が順次アクセス用に記憶されたデータを有することができ、それと同時に、別のメモリ集積回路上に記憶された他のデータが並列アクセス向けに記憶される。
【００８４】
結論
本発明の種々の態様を例示的な実施形態に関して説明してきたが、本発明は添付の特許請求の範囲の全範囲内でその権利が保護されるべきことが理解できよう。
【図面の簡単な説明】
【００８５】
【図１】不揮発性メモリシステムおよびホストシステムと一体となったその使用法を全体として示す。
【図２】図１のメモリシステムの例示的な構造を示す。
【図３】図１および図２のメモリシステムのメモリセルアレイの特定の構成を示す。
【図４】図７のメモリセルアレイの第１の例示的なブロックの連なりを示す。
【図５】図７のメモリセルアレイの第２の例示的なブロックの連なりを示す。
【図６】論理ブロックアドレスを図７のメモリセルアレイの物理ブロックへマッピングする方法の一例を示す。
【図７】論理ブロックアドレスを図７のメモリセルアレイの物理ブロックへマッピングする方法の別の例を示す。
【図８】図７のメモリセルアレイ内のデータの修正の第１の例を示す。
【図９】図７のメモリセルアレイ内のデータの修正の第２の例を示す。
【図１０】ホストによる書き込み動作を追跡記録するための各データセクタ内のカウントフィールドの一例を示す。
【図１１】データセクタを構成するさまざまな方法の例を示す。
【図１２】第１の順序から第２の順序へのメモリセルアレイブロックの変換の一例を示す。
【図１３】第２の順序から第１の順序へのメモリセルアレイブロックの変換の一例を示す。
【図１】
2007517320.tif 000003
【図２】
2007517320.tif 000004
【図３】
2007517320.tif 000005
【図４】
2007517320.tif 000006
【図５】
2007517320.tif 000007
【図６】
2007517320.tif 000008
【図７】
2007517320.tif 000009
【図８】
2007517320.tif 000010
【図９】
2007517320.tif 000011
【図１０】
2007517320.tif 000012
【図１１】
2007517320.tif 000013
【図１２】
2007517320.tif 000014
【図１３】
2007517320.tif 000015
【国際調査報告】
2007517320.tif 000016
2007517320.tif 000017
2007517320.tif 000018