(57)【特許請求の範囲】
【請求項１】
大容量記憶メモリシステムであって、
同時に消去可能なメモリセルの複数のブロックを形成するように配置されるとともに、ブートレコード、ファイルアロケーションテーブル（「ＦＡＴ」）、およびディレクトリを蓄積するシステム領域とファイルを蓄積するデータ領域とをそれぞれ有する少なくとも２つのメモリパーティションに分割される書き換え可能な不揮発性メモリセルと、
論理インターフェイスを介してホストシステムからデータを受信するようになっているメモリコントローラであって、第１のメモリパーティションがいっぱいであるかまたはしきい値に達し、また第２のメモリパーティションが未使用の記憶空間を有する際に、第１のメモリパーティションへ第２のメモリパーティションの１つ以上のブロックを再割り当てし、かつマッピングテーブルを用いることにより１つ以上のブロックを再割り当てし、前記マッピングテーブルには各システム領域および各データ領域の仮想論理ブロックアドレスが含まれるので、前記ホストシステムには前記パーティションのそれぞれが連続したブロックを形成しているように見え、さらに前記マッピングテーブルが前記仮想論理ブロックアドレスを実論理ブロックアドレスにマッピングし、前記実論理ブロックアドレスは前記メモリコントローラが１つ以上のブロックを再割り当てした後では連続していないものである、メモリコントローラと、
を備える大容量記憶メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にメモリ記憶装置に関し、特に、記憶装置内のパーティションの管理に関する。
【背景技術】
【０００２】
一般的に、従来のコンピュータシステムは幾つかの機能的な構成要素を含む。これら構成要素は、中央処理装置（ＣＰＵ）、メインメモリ、入出力（「Ｉ／Ｏ」）装置および大容量記憶装置を含むことができる。従来のシステムでは、メインメモリは、システムバスまたはローカルメモリバスを介してＣＰＵに結合されている。メインメモリは、実行時間にメインメモリ内に蓄積されたデータおよび／またはプログラム情報に対するＣＰＵアクセスを行うのに用いられる。一般的に、メインメモリは、ランダムアクセスメモリ（ＲＡＭ）回路から成る。ＣＰＵおよびメインメモリを有するコンピュータシステムは、ホストシステムと称されることが多い。
【０００３】
一般的に、大容量記憶装置は、データを保存するのに用いられている。通常、大容量記憶装置に蓄積されたプログラムは、ＣＰＵにより実行される前にメインメモリにコピーされる。一般的な大容量記憶装置は、フロッピー（登録商標）ディスク、ハードディスク、光ディスクおよびテープドライブを含む。さらに、ホストシステム用にフラッシュメモリを用いて不揮発性記憶装置を構成することができる。
【０００４】
ホストシステムは、インターフェイスを介してフラッシュメモリ（本願明細書を通して交換可能に「フラッシュ装置」、「フラッシュ」または「フラッシュカード」とも称する）とインターフェイスをとる。一般的に、フラッシュメモリは、情報を蓄積する不揮発性メモリセルアレイを含む。フラッシュメモリシステムは、パーソナルコンピュータやカメラなどのような様々なホストと取り外し可能に接続されるがこのようなホストシステム内に埋め込むこともできるメモリカードまたはフラッシュドライブの形態で最も一般的に提供されている。
【０００５】
一般的に、フラッシュメモリコントローラはメモリアレイの動作を制御する。メモリコントローラは、マイクロプロセッサ、ある不揮発性読み出し専用メモリ（「ＲＯＭ」）、揮発性ランダムアクセスメモリ（「ＲＡＭ」）、および１つ以上の特殊回路、例えばエラー訂正コード（「ＥＣＣ」）回路を含む。ＥＣＣ回路は、データがメモリコントローラを介して受け渡されたとき、このデータからＥＣＣを計算する。
【０００６】
市販のフラッシュメモリシステムの初期世代では、メモリセルの長方形アレイは多数の群のセルに分割され、各群は、標準のディスクドライブセクタのデータ量、すなわち５１２バイトを蓄積した。一般的に、１６バイトのようなさらなるデータ量も、エラー訂正コード（ＥＣＣ）を蓄積するために各群に含まれ、場合によっては、ユーザデータおよび／またはユーザデータが蓄積されているメモリセル群に関する他のオーバヘッドデータが各群に含まれる。このような各群内のメモリセルは、同時に消去できる最小数のメモリセルである。すなわち、実際上、消去単位は、１つのデータセクタを蓄積し任意のオーバヘッドデータが含まれるメモリセルの数である。この種のメモリシステムの例が、米国特許第５，６０２，９８７号（特許文献１）および第６，４２６，８９３号（特許文献２）に記載されている。データを用いてメモリセルを再プログラムする前にメモリセルを消去する必要があることは、フラッシュメモリの特性である。
【０００７】
論理インターフェイスを介してデータをフラッシュメモリに書き込むとき、一般的に、ホストは固有の論理アドレスをセクタ、クラスタ、またはメモリシステムの連続的な仮想アドレス空間内の他のデータ単位に割り当てする。一般的に、ホストはファイルシステムを維持し、ファイルデータを論理クラスタに割り当てし、ここで、クラスタの大きさは一般的に固定されている。フラッシュ装置は複数の論理セクタに分割され、ホストは複数の論理セクタから成るクラスタ内の空間を割り当てする。クラスタは論理アドレスの再分割であり、クラスタマップはファイルアロケーションテーブル（「ＦＡＴ」）として指定される。一般的に、ＦＡＴは記憶装置自体に蓄積されている。
【０００８】
ディスクオペレーティングシステム（ＤＯＳ）のように、ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込み、このアドレスからデータを読み出す。メモリシステム内のコントローラは、ホストから受信した論理アドレスを、データが実際に蓄積されているメモリアレイ内の物理アドレスに変換し、その後、これらのアドレス変換を追跡し続ける。
【０００９】
一般的に、メモリ装置（例えば、フラッシュメモリ）は、ホストシステムによりパーティション化される。通常、２つのパーティションはドライブを共有し、各パーティションの大きさはホストシステムにより設定されている。常に、一方のパーティションがいっぱいになり、他方のパーティションに空きが残っている場合、各パーティションに割り当てられた空間の量を再割り当てすることが有益である。従来のシステムでは、ホストは、ドライブを再フォーマットすることによりこの機能を実行する。この処理は、再フォーマットする前にすべてのデータをドライブからコピーし、その後、空間を各パーティションに再割り当てすることを含む。この処理はつまらなく、多大な時間を必要とし、従って望ましくない。
【００１０】
従って、メモリ記憶装置の空間を最適に使用するため、パーティションを効率良く管理する方法およびシステムが必要とされる。
【特許文献１】米国特許第５，６０２，９８７号
【特許文献２】米国特許第６，４２６，８９３号
【特許文献３】米国特許第５，５７０，３１５号
【特許文献４】米国特許第５，７７４，３９７号
【特許文献５】米国特許第６，０４６，９３５号
【特許文献６】米国特許第６，３７３，７４６号
【特許文献７】米国特許第６，４５６，５２８号
【特許文献８】米国特許第６，５２２，５８０号
【特許文献９】米国特許第６，７７１，５３６号
【特許文献１０】米国特許第６，７８１，８７７号
【特許文献１１】米国公開特許出願第２００３／０１４７２７８号
【発明の開示】
【００１１】
本発明の一態様では、大容量記憶メモリシステムを提供する。このシステムは、再プログラム可能な不揮発性メモリセルであって、メモリセルは、データを蓄積するため、メモリセルの行を規定する複数の連続ストリングに互いに接続されている同時に消去可能なメモリセルの複数のブロック内に配置され、メモリセルは、少なくとも２つのメモリパーティションに分割され、各メモリパーティションがシステム領域およびデータ領域を有するメモリセルと、論理インターフェイスを介してホストシステムからデータを受信するようになっているマイクロプロセッサを含むコントローラと、を含み、コントローラは、マッピングテーブルを用いることにより、未使用の記憶空間を有する第２のメモリパーティションから、いっぱいであるかまたはしきい値に達した第１のメモリパーティションへメモリ空間を再割り当てし、マッピングテーブルは、ホストシステムにシステム領域およびデータ領域が連続しているように見えるシステム領域およびデータ領域の仮想ブロックアドレスと、仮想ブロックアドレスを実際の論理ブロックアドレスにマッピングする実論理ブロックアドレスとを用いる。
【００１２】
本発明の別の態様では、論理インターフェイスを介してホストシステムからデータを受信するようになっているマイクロプロセッサを含むコントローラと、システム領域およびデータ領域を有する第１のメモリパーティションと、システム領域およびデータ領域を有する第２のメモリパーティションと、を含む大容量記憶メモリメモリシステムであって、コントローラは、ホストシステムにシステム領域およびデータ領域が連続しているように見えるようにシステム領域およびデータ領域の仮想ブロックアドレスを用いることにより、未使用の記憶空間を有する第２のメモリパーティションから、いっぱいであるかまたはしきい値に達した第１のメモリパーティションへメモリ空間を再割り当てする大容量記憶メモリシステムを提供する。
【００１３】
さらなる別の態様では、システム領域およびデータ領域を有する第１のメモリパーティションと、システム領域およびデータ領域を有する第２のメモリパーティションとの間で大容量記憶メモリシステムのデータ記憶空間を動的に再割り当てする方法を提供する。この方法は、第１のメモリパーティションがいっぱいであり、かつ／または、しきい値に達したかどうかを判断するステップと、いっぱいであり、かつ／または、しきい値に達した第１のメモリパーティションに割り当てすることができる空き空間を第２のメモリパーティションが有するかどうかを判断するステップと、ある空き空間を第２のメモリパーティションから第１のメモリパーティションへ割り当てするステップと、を含み、メモリコントローラは空き空間を割り当てする。
【００１４】
この概要は、本発明の性質を素早く理解できるように提供されている。本発明の好適な実施形態の以下の詳細な説明を添付図面と併せて参照することにより本発明をより充分に理解することができる。
【００１５】
次に、好適な実施形態の図面を参照して本発明の前述した特徴および他の特徴を説明する。図中、同一の符号は、同様な部分を示す。図に示されている実施形態は、本発明を説明するものであって、本発明を制限するものではない。
【発明を実施するための最良の形態】
【００１６】
好適な実施形態の理解を容易にするため、ホストシステム／フラッシュ装置の一般構造および動作を説明する。次に、一般構造を参照して、好適な実施形態の特定の構造および動作を説明する。
【００１７】
ホストシステム
図１Ａには、本発明を用いることができる汎用コンピュータシステム（ホストシステム）１００を示す。システム１００の構成要素は、コンピュータ１６０と、マウス１２０、キーボード１６５、モニタ１２０およびプリンタ１２５のような様々な入出力（「Ｉ／Ｏ」）装置とを含む。
【００１８】
図１Ｂには、コンピュータシステム１００の抽象表現を示す。構成要素１３０は、ユーザをコンピュータシステム１００と対話させることができるマウスおよびキーボードのような複数の入力装置を表すものである。これと同様に、出力１３５は、１つ以上の出力装置、例えば、モニタ１２０およびプリンタ１２５を表す。
【００１９】
コンピュータシステム１００は、システムバス１５５に接続された中央処理装置（「ＣＰＵ」）（またはマイクロプロセッサ）１７５を含む。メインメモリ１４５（例えば、ランダムアクセスメインメモリ（「ＲＡＭ」））もシステムバス１５５に結合され、ＣＰＵ１７５にメモリ記憶装置へのアクセス権を与える。プログラム命令を実行するとき、ＣＰＵ１７５はこれらの処理ステップをＲＡＭ１４５に蓄積し、蓄積された処理ステップをＲＡＭ１４５から取り出して実行する。
【００２０】
読み出し専用メモリ（「ＲＯＭ」）（図示せず）は、始動命令シーケンスまたは基本入出力オペレーティングシステム（ＢＩＯＳ）シーケンスのような不変命令シーケンスを蓄積するのに設けられている。
【００２１】
大容量記憶装置１５０によりコンピュータシステム１００はデータを永続的に蓄積することができる。大容量記憶装置１５０をフラッシュメモリ装置、ハードディスクまたは別の種類の媒体記憶装置とすることができる。本発明の適応的な態様の以下の説明は、フラッシュメモリ装置に基づくが、他の種類のメモリ装置に適用することもできる。大容量記憶装置１５０をフラッシュ装置１５０とも称する。
【００２２】
現在では、多くの異なるフラッシュ装置（またはフラッシュメモリカード）が市販され、例として、コンパクトフラッシュ（ＣＦ）（登録商標）、マルチメディアカード（ＭＭＣ）（登録商標）、セキュアデジタル（ＳＤ）、ミニＳＤ、メモリスティック、スマートメディア（登録商標）およびトランスフラッシュカードが挙げられる。これらのカードの各々は、標準仕様に従って固有の機械的および／または電気的インターフェイスを有するが、各々に含まれるフラッシュメモリは極めて類似する。これらのカードはすべて、本発明の譲受人であるサンディスク  コーポレイションから入手可能である。サンディスクは、Ｃｒｕｚｅｒ（クルーザー）（登録商標）による一連のフラッシュドライブも提供する。このフラッシュドライブは、ホストのユニバーサル・シリアル・バス（ＵＳＢ）コンセントに接続することによりホストと接続するＵＳＢプラグを有する小型パッケージ内のハンドヘルドメモリシステムである。これらのメモリカードおよびフラッシュドライブの各々は、ホストとインターフェイスをとり、ホスト内のフラッシュメモリの動作を制御するコントローラを含む。
【００２３】
前述した不揮発性メモリカードおよびフラッシュドライブは市販され、５１２メガバイト（ＭＢ）、１ギガバイト（ＧＢ）、２ＧＢおよび４ＧＢのデータ記憶容量を有し、データ記憶容量がこれ以上高いものもある。
【００２４】
このようなメモリカードおよびフラッシュドライブを用いるホストシステムは多種多様である。ホストシステムは、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータおよび他の携帯用コンピュータ、携帯電話、個人用携帯情報端末（ＰＤＡ）、デジタル静止カメラ、デジタル動画カメラ、並びに、携帯用音声プレーヤを含む。一般的に、ホストは、１種類以上のメモリカードまたはフラッシュドライブ用の内蔵コンセントを含むが、一部のホストは、メモリカードが差し込まれるアダプタを必要とする。
【００２５】
メモリセルアレイのＮＡＮＤ構造が現在のところ好ましいが、その代わりにＮＯＲのような他の構造も用いることができる。ＮＡＮＤフラッシュメモリと、メモリシステムの一部としての動作との例として、米国特許第５，５７０，３１５号（特許文献３）、第５，７７４，３９７号（特許文献４）、第６，０４６，９３５号（特許文献５）、第６，３７３，７４６号（特許文献６）、第６，４５６，５２８号（特許文献７）、第６，５２２，５８０号（特許文献８）、第６，７７１，５３６号（特許文献９）、第６，７８１，８７７号（特許文献１０）および米国公開特許出願第２００３／０１４７２７８号（特許文献１１）を参照することができる。
【００２６】
フラッシュ装置１５０は、（「メモリシステムコントローラ」、または「メモリコントローラ」あるいは「コントローラ」とも称することができる）メモリコントローラモジュールと、固体メモリモジュールとを含む。図１Ｃには、コントローラモジュール１５０Ａの内部構造のブロック図を示す。コントローラ１５０Ａは、論理インターフェイスまたは別の周辺バス（図示せず）あるいはシステムバス１５５を介してホストシステム１００とインターフェイスをとる。コントローラモジュール１５０Ａは、インターフェイスロジック１５０Ｅを介して様々な他の構成要素とインターフェイスをとるマイクロコントローラ１５０Ｃを含む。メモリ１５０Ｄは、フラッシュ装置１５０の動作を制御するためにマイクロコントローラ１５０Ｃにより用いられるファームウェアおよびソフトウェア命令を蓄積する。メモリ１５０Ｄを、揮発性再プログラム可能なランダムアクセスメモリ（「ＲＡＭ」）、再プログラム可能でない不揮発性メモリ（「ＲＯＭ」）、１度プログラム可能なメモリ、または、再プログラム可能なフラッシュＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）とすることができる。
【００２７】
フラッシュインターフェイス１５０Ｆがメモリモジュール１５０Ｂとインターフェイスをとる間、ホストインターフェイス１５０Ｇはホストシステム１００とインターフェイスをとる。
【００２８】
図１Ｄには、以下のさらなる説明で一例として用いられるフラッシュメモリセルアレイ（１５０Ｂ）の編成を概念的に示す。メモリセルの４つのプレーンまたはサブアレイ１３１〜１３４は、単一集積メモリセルチップ上、（各チップ上にプレーンの２つが存在する）２つのチップ上、または、４つの分離したチップ上に存在しうる。以下の説明に対して、特定の配置は重要ではない。１，２，８，１６またはそれ以上の数のようなその他の数のプレーンがシステムに存在しうることもちろんである。プレーンは、それぞれのプレーン１３１〜１３４に位置するブロック１３７，１３８，１３９，１４０Ａのような長方形により図１Ｄに示されたメモリセルのブロックに個々に分割されている。各プレーンには、数十または数百のブロックが存在しうる。
【００２９】
メモリセルの一ブロックは消去の単位であって、物理的に同時に消去可能なメモリセルの最小数である。しかし、増大された並列性のため、ブロックは、より大規模なメタブロック単位で動作される。各プレーンからの１つのブロックは、メタブロックを形成するように論理的に互いに結合されている。４つのブロック１３７〜１４０Ａは、１つのメタブロック１４１を形成するように示されている。一般的に、メタブロック内のセルのすべては同時に消去される。ブロック１４５〜１４８を構成する他のメタブロック１４３に示されるように、メタブロックを形成するのに用いられたブロックをそれぞれのプレーン内で同じ相対的位置に限定する必要はない。
【００３０】
高いシステム性能のため、一般的にプレーンのすべてにわたってメタブロックを拡張するのが好ましいが、異なるプレーン内の１つ、２つまたは３つのブロックのいずれかまたはすべてからメタブロックを動的に形成する機能を用いてメモリシステムを動作することができる。これにより、メタブロックの大きさを、１つのプログラム動作で記憶するのに利用できるデータの量と厳密に一致させることができる。
【００３１】
次に、個々のブロックは、動作目的のため、図１Ｅに示されるようにメモリセルのページに分割されている。例えば、ブロック１３１〜１３４の各々のメモリセルは、それぞれ８つのページＰ０〜Ｐ７に分割されている。あるいはまた、各ブロック内のメモリセルには、１６個、３２個、またはそれ以上のページが存在しうる。ページは、１ブロック内でのデータプログラムおよび読み出しの単位であって、１度にプログラムされる最小量のデータを含む。
【００３２】
ＮＡＮＤ構造では、ページは、ブロック内でワード線に沿っているメモリセルから形成されている。しかし、メモリシステム動作の並列性を増大させるため、２つ以上のブロック内のこのようなページをメタページ内で論理的に結合することができる。図１Ｅに示されているメタページ１５１は、４つのブロック１３１〜１３４の各々から１つの物理ページの形態を成す。例えば、メタページ１５１は、４つのブロックの各々からのページＰ２を含むが、メタページのページは、各ブロック内で必ずしも同じ相対的位置を有する必要はない。
【００３３】
図１Ｆには、ホストと大容量メモリシステムとの間の論理インターフェイスの利用を示す。ホストは、ホストにより実行されるアプリケーションソフトウェアまたはファームウェアプログラムにより作成されるかまたは用いられるデータファイルを処理する。一例としてワード処理データファイルが挙げられ、別の例としてコンピュータ支援設計（ＣＡＤ）ソフトウェアの描画ファイルが挙げられる。これらのファイルは主に、ＰＣやラップトップコンピュータなどのような汎用コンピュータホスト内に見られる。ＰＤＦフォーマットの文書も、このようなファイルである。静止デジタルビデオカメラは、メモリカードに蓄積されたピクチャごとにデータファイルを作成する。携帯電話は、電話ディレクトリのような内部メモリカードのファイルからデータを用いる。ＰＤＡは、アドレスファイルやカレンダファイルなどのような幾つかの異なるファイルを蓄積し用いる。任意のこのような用途では、メモリカードは、ホストを動作するソフトウェアも含むことができる。
【００３４】
連続的な論理アドレス空間１６１は、メモリシステムに蓄積できるすべてのデータのアドレスを提供するのに充分大きい。一般的に、ホストアドレス空間は、データのクラスタのインクリメントに分割されている。多数のセクタ、一般的には４から６４までのセクタのデータを含むように各クラスタを所定のホストシステム内に設計することができる。標準のセクタは、５１２バイトのデータを含む。
【００３５】
作成された３つのデータファイル１，２，３が、図１Ｆの例に示されている。ホストシステム上で実行するアプリケーションプログラムは、順序付けられたデータセットとして各ファイルを作成し、固有の名前または他の基準により特定する。他のファイルにまだ割り当てられていない充分に利用可能な論理アドレス空間は、ホストによりファイル１に割り当てられる。ファイル１には連続範囲の利用可能な論理アドレスが割り当てられたとして示される。特定の範囲がホストオペレーティングソフトウェア用に割り当てられるように、一般的にアドレスの範囲は特定の目的のためにも割り当てられる。この場合、ホストが論理アドレスをデータに割り当てする時点でこれらのアドレスが用いられていなかったとしても、データを蓄積するためにこれらのアドレスは回避される。
【００３６】
後でファイル２がホストにより作成された場合、図１Ｆに示されるように同様にホストは論理アドレス空間１６１内の２つの異なる範囲の連続アドレスを割り当てする。連続論理アドレスにファイルを割り当てする必要はなく、むしろ、他のファイルに既に割り当てられたアドレス範囲の間にアドレスの小部分を割り当てすることができる。従って、この例は、ホストにより作成されたさらなる別のファイル３が、ファイル１，２および他のデータに前もって割り当てられていないホストアドレス空間の他の部分に割り当てられることを示す。
【００３７】
ホストは、ホストが様々なホストファイルに割り当てする論理アドレスが維持されているファイルアロケーションテーブル（ＦＡＴ）を維持することによりメモリ論理アドレス空間を追跡し続ける。一般的に、ＦＡＴテーブルは、不揮発性メモリとホストメモリとに蓄積され、新たなファイルが蓄積されたり、他のファイルが削除されたり、ファイルが変更されたりなどすると、ＦＡＴテーブルはホストにより頻繁に更新される。例えば、ホストファイルが削除された場合、ホストは、ＦＡＴテーブルを更新することにより、削除されたファイルに前もって割り当てられた論理アドレスを割り当て解除して、論理アドレスが他のデータファイル用に今では利用可能であることを示す。
【００３８】
ホストは、メモリシステムコントローラがファイルの蓄積のために選択する物理位置に関心を持たない。一般的なホストは、論理アドレス空間と、ホストが様々なファイルに割り当てした論理アドレスとだけを理解する。その一方で、メモリシステムは、一般的なホスト／カードインターフェイスを介して、データが書き込まれた論理アドレス空間の部分だけを理解するが、特定のホストファイルに割り当てられた論理アドレスを理解せず、あるいは、ホストファイルの数さえも理解しない。メモリシステムコントローラ１５０Ａは、データを蓄積するかまたは取り出すため、ホストにより提供された論理アドレスを、ホストデータが蓄積されているフラッシュメモリセルアレイ内の固有の物理アドレスに変換する。ブロック１６３は、これらの論理−物理アドレス変換の作業テーブルを表す。論理−物理アドレス変換の作業テーブルは、メモリシステムコントローラ１５０Ａにより維持されている。
【００３９】
メモリシステムコントローラ１５０Ａは、メモリアレイ１６５のブロックおよびメタブロック内のデータファイルを蓄積するため、システムの性能を高水準に維持するようにプログラムされている。この図では、４つのプレーンまたはサブアレイが用いられている。各プレーンからのブロックにより形成されたメタブロックの全体にわたってシステムが可能にする最大級の並列性を用いてデータをプログラムし読み出すのが好ましい。一般的に、少なくとも１つのメタブロック１６７は、メモリコントローラにより用いられるオペレーティングファームウェアおよびデータを蓄積するための予約済みブロックとして割り当てられている。ホストオペレーティングソフトウェアやホストＦＡＴテーブルなどを記憶するため、別のメタブロック１６９または複数のメタブロックを割り当てすることができる。物理記憶空間の大部分は、データファイルを記憶するために残る。
【００４０】
しかし、メモリシステムコントローラ１５０Ａは、受信されたデータが様々なファイルオブジェクト間でホストによりどのようにして割り当てられたかを理解しない。ホストにより特定の論理アドレスに書き込まれたデータが、コントローラの論理−物理アドレステーブル１６３により維持された対応する物理アドレスに蓄積されたことを、一般的に、すべてのメモリコントローラ１５０Ａはホストと対話することから理解する。
【００４１】
一般的なメモリシステムでは、アドレス空間１６１内にデータの量を蓄積するのに必要とされるよりも数個追加されたブロックの記憶容量が備えられている。これらの追加されたブロックの１つ以上は、メモリの存続期間中に欠陥品となることがある他のブロックの代替とする冗長ブロックとして設けられている。メタブロックにもともと割り当てられていた欠陥ブロックを冗長ブロックで代替することを含む様々な理由のため、一般的に、個々のメタブロック内に含まれるブロックの論理グループ化を変更することができる。メタブロック１７１のような１つ以上の追加のブロックは、一般的に消去済みブロックプール内に維持されている。
【００４２】
ホストがデータをメモリシステムに書き込む場合、コントローラ１５０Ａは、ホストにより割り当てられた論理アドレスを消去済みブロックプールのメタブロック内の物理アドレスに変換する。次に、論理アドレス空間１６１内でデータを蓄積するのに用いられていない他のメタブロックは消去され、その後のデータ書き込み動作中に用いられるように消去済みプールブロックとして指定される。
【００４３】
メモリパーティション
図２Ａは、一般的にメモリ記憶装置１５０がどのようにしてパーティション化されるかを示す一例である。記憶装置１５０は、２つのパーティション、すなわちパーティション１およびパーティション２を含む。パーティション１は、システム領域２０１およびデータ領域２０２を含む。また、パーティション２は、システム領域２０３およびデータ領域２０４を有する。２つのパーティションだけが図２Ａに示され、以下の再割り当て技術は、この例に基づいて行われるが、本発明の適応的な態様は、任意の特定数のメモリパーティションに限定されるものではない。
【００４４】
図２Ｂには、パーティション２に類似するパーティション１のブロック図を示す。図２Ｂに示されるように、システム領域２０１は、様々な小部分、例えば、マスタブートレコード（「ＭＢＲ」）領域２０５、パーティションブートレコード（「ＰＢＲ」）領域２０６、ＦＡＴ１領域２０７、ＦＡＴ２領域２０８およびルートディレクトリ領域２０９を有する。
【００４５】
ＭＢＲ領域２０５は全体的なパーティション情報を蓄積し、媒体がブート可能な装置である場合、ＭＢＲ２０５は、ＭＢＲ領域２０５からＰＢＲ領域２０６へジャンプする命令を含む。ＭＢＲ領域２０５は、ＭＢＲ領域２０５とＰＢＲ領域２０６との間の予約済み空間である隠し領域をも含む。
【００４６】
ＰＢＲ領域２０６は、パーティション（この例では、パーティション１）のパーティション／ブート情報を含む。例えば、ＰＢＲ領域２０６は、ＦＡＴの種類（例えば、１２／１６／３２ビット）、ラベル（すなわち、ドライブ名）、ドライブの大きさ、クラスタの大きさ（すなわち、割り当て単位ごとのセクタの数）、ＦＡＴ領域の数（２つのＦＡＴ領域、すなわち、図２Ｂに示されたＦＡＴ１およびＦＡＴ２）、および、ＦＡＴごとのセクタの数に関する情報を含む。
【００４７】
ＦＡＴ領域（２０７，２０８）は、ファイルごとにクラスタ情報を含む。例えば、ＦＡＴ１２の場合、領域２０７，２０８内の各項目は１２ビットを含み、全部で４，０９６個の項目が存在する。クラスタ０およびクラスタ１は、０ＸＦＦＦＦＦ８（媒体の種類）およびクラスタの終わりのために予約されている。特定のクラスタ（例えば、クラスタ４，０８７）は、不良のクラスタを示すのに用いられる。ＦＡＴ１６の場合、各項目は１６ビットを含み、ＦＡＴ３２の場合、各項目は３２ビットを含む。
【００４８】
ルートディレクトリ領域２０９は、ファイルごとに項目を含む。各ディレクトリ項目は、ファイル名またはディレクトリに対する特定のバイト数（例えば、８バイト）、拡張子に対するバイト数（例えば、３バイト）、ファイル属性（例えば、ファイルが読み出し専用、隠しファイル、システムファイル、ボリュームラベル、ディレクトリ、または、変更されたファイルである場合）に対するバイト数（例えば、１バイト）、ファイルが作成された日時を示すバイト数、開始クラスタに対する特定のバイトの数（例えば、２）、および、ファイル長を示す特定のバイトの数（例えば、４）を含む。
【００４９】
開始クラスタに対するバイトの数はＦＡＴ内の最初のクラスタを指し示し、最後のクラスタを０ｘＦＦＦ、０ｘＦＦＦＦまたは０Ｘｆｆｆｆｆｆにより示すことができる。
【００５０】
ディレクトリにファイル名を書き込むため、ホストシステムはＦＡＴ１領域２０７内で空いているクラスタ空間を検出し、データはデータ領域２０２に書き込まれる。次に、ＦＡＴ１およびＦＡＴ２の双方の項目は更新される。ディレクトリ項目、すなわち日付／時間／開始クラスタ／ファイル長も更新される。
【００５１】
本発明の一態様では、一方のパーティションがいっぱいになるか、あるいは特定のしきい値に達し、他方のパーティションが空き空間を有する場合、メモリコントローラ１５０Ａはパーティション空間を再割り当てする。従って、一方のパーティションの大きさを増大させながら、他方の大きさを減少させる。メモリコントローラ１５０Ａによりしきい値をプログラムすることができる。（本願明細書で「仮想マップ」と称する）マッピング方式は、以下で説明するように、双方のパーティションにおけるクラスタ使用率を追跡するのに用いられる。この処理全体は、メモリコントローラ１５０Ａにより効率良く実行される。ホストシステムは、すべてのデータをコピーし、記憶装置を再フォーマットする必要はない。
【００５２】
図２Ｃには、ホストシステムに見える再割り当てされたパーティション１およびパーティション２の割り付けを示す。パーティション１のシステム領域２０１Ａは、再割り当て後の更新されたクラスタおよびパーティション情報を含む。元のパーティション領域２０２はいっぱいであるか、または、これ以上のデータがそこでは書き込まれないしきい値の大きさに達している。新たなデータ領域２０２Ａは、パーティション２からパーティション１へ割り当てられている。減少されたパーティション２は、システム領域２０３Ａと、減少された新たなデータ領域２０４Ａとを有する。次に、パーティションを再割り当てする処理を詳細に説明する。
【００５３】
図２Ｄには、再割り当てがメモリコントローラ１５０Ａにより実行された後のパーティション１およびパーティション２の実際の割り付けを示す。パーティション２のシステム領域２０３Ａは、領域２０２Ａがパーティション１に割り当てられた後の調整済み領域である。パーティション２は、図２Ｃに示したデータ領域２０４Ａに等しい２０４Ｂおよび２０４Ｃとして示されるデータ領域を有する。
【００５４】
図３は、本発明の一態様に従ってパーティションの大きさを再割り当てする処理を示すフローチャートである。処理はステップＳ３００から開始し、フラッシュ装置１５０を初期化する。
【００５５】
ステップＳ３０２では、コントローラ１５０Ａは、パーティションがいっぱいかどうかを判断する。パーティションにこれ以上データを蓄積することができないか、あるいはパーティションがプログラム可能な特定のしきい値に達した場合、パーティションはいっぱいであると見なされる。パーティションがいっぱいでない場合、コントローラ１５０Ａは、パーティションがいっぱいになるまで待機する。
【００５６】
パーティション（例えば、図２Ａのパーティション１）がいっぱいである場合、ステップＳ３０４では、コントローラ１５０Ａは、空き空間が別のパーティション（例えば、パーティション２）から利用可能であるかどうかを判断する。空き空間が利用可能でない場合、処理はステップＳ３０２に戻る。
【００５７】
空き空間が利用可能である場合、ステップＳ３０６では、この空き空間の特定量（例えば、２０２Ａ）を、いっぱいのパーティションに割り当てする。再割り当て後、ステップＳ３０８では、以下に詳細に説明するように双方のパーティションのＦＡＴ項目を調整する。ステップＳ３１０では、ディレクトリ項目も調整する。このステップも以下に詳細に説明する。ステップＳ３１２では、処理を終了する。
【００５８】
前述した処理の流れは、「いっぱいのパーティション」を検出するメモリコントローラ１５０Ａに基づいて行われたメモリパーティションの再割り当てについて説明しているが、本発明はこの状況だけに限定されるものではないことに留意すべきである。例えば、ホストは特定のコマンド（例えば、「ドライブの再パーティション化」）をコントローラ１５０Ａに送信してメモリ装置を再パーティション化することができ、次に、コントローラは、前述した処理のステップを実行してメモリ空間を再割り当てする。
【００５９】
図４Ａ〜４Ｆには、少なくとも２つのメモリパーティション間のメモリ空間を再割り当てするための前述した処理のステップを示す。図４Ａ〜４Ｆに用いられる様々な値は単に例示として用いられ、本発明の適応的な態様を限定するものではないことに留意すべきである。
【００６０】
図４Ａ〜４Ｆの例は、フラッシュ装置１５０のクラスタの大きさが３２キロバイト（ＫＢ）であり、従って、１２０メガバイト（ＭＢ）のフラッシュ装置は４，０９６個のクラスタを有すると仮定する。各システム領域（２０１，２０３）は６つのクラスタを用い、各パーティションは２，０４２個のクラスタのデータ領域を有する。各クラスタをブロックと称することができ、すなわち、１つのブロックの大きさはクラスタの大きさに等しい。
【００６１】
図４Ａには、（図２Ａに示されるような）最初のパーティション状態のテーブルを示す。各パーティションはシステム領域に対して６つのブロックを有し、データ領域に対して２，０４２個のブロックを有する。
【００６２】
パーティション１の場合、システム領域２０１にはブロック番号０〜５が割り当てられ、データ領域２０２にはブロック番号６〜２，０４７が割り当てられている。ファイルシステムがパーティション１の最初のデータクラスタに書き込む場合には書き込み動作を論理ブロックアドレス１９２（ここで、１９２＝６×３２）すなわちブロック６に送信する。
【００６３】
パーティション２の場合、システム領域２０３にはブロック２，０４８〜２，０５３が割り当てられ、データ領域２０４にはブロック番号２，０５４〜４，０９５が割り当てられている。
【００６４】
図４Ｂには、行４００に仮想ブロック番号を有し、行４０１には実ブロック番号を有するマッピングテーブル４００Ａの一例を示す。列４０２〜４０９の項目は一目瞭然であって、システム領域、使用中のデータ領域および空きデータ領域に対する仮想ブロック番号および実論理ブロック番号を備える。
【００６５】
最初の段階（図２Ａおよび図４Ａ）では、仮想ブロック番号および実論理ブロック番号は同じであり連続的である。図４Ｂに示されるように、列４０２〜４０９の全項目は仮想ブロック番号および実論理ブロック番号の双方に対して同じである。
【００６６】
図４Ｃには、更新されたマッピングテーブル４００Ｂを示す。行４００にはホストシステムの視点（図２Ｃ）を示し、行４０１には実論理メモリ空間の視点（図２Ｄ）を示す。
【００６７】
行４００と行４０１とにおいてパーティション１に対する（列４１０に示される）システム領域項目は同じである。列４１１は、パーティション１がいっぱいであり、すなわち、ブロック６〜２，０４７のすべてが使用中であることを示す。パーティション２は、（図４Ｂに３，００１〜４，０００として示される）幾つかの空きブロックを有し、これら空きブロックのうちの５００個はパーティション１に割り当てられている。ホストは、パーティション１に対するこれら５００個のブロックが、仮想ブロック番号に基づいて行４００および列４１４に示された２，０４８〜２，５４７からのものであることを理解する。従って、ホストシステムの場合、パーティション１はブロック０からブロック２，５４７まで延長する。図２Ｄに示された実論理メモリ空間では、パーティション１に対する５００個のブロックは（図４Ｃの行４０１および列４１４に示されるように）ブロック番号３，００１〜３，５００に位置付けられている。
【００６８】
パーティション２に関して、ホストは、パーティション領域のシステム領域が連続的である、すなわち、（行４００および列４１２に示されるように）２，５４８〜２，５５３からのものであることを理解し、実際には、システム領域は（行４０１および列４１２に示されるように）２，０４８〜２，０５３からのものである。
【００６９】
パーティション２に用いられている空間のデータブロックは列４１３に示されている。この場合も、仮想ブロック番号は２，５５４〜３，５００であるが、実際のブロック番号は（行４０１および列４１３に示されるように）２，０５４〜３，０００からのものである。行４００，４０１に対して列４１５，４１６の項目は同じである。
【００７０】
前述した例により示されるように、ホストは、パーティション空間を再割り当てするためにデータをコピーすることはしない。マッピングテーブル４００Ａを用い更新することにより、未使用の空間は、いっぱいのメモリパーティションに再割り当てされる。
【００７１】
前述した例（図４Ａ〜４Ｃ）に基づいて、パーティション１に対するＦＡＴテーブルは変更されない。パーティション２の場合、ＦＡＴ項目は、パーティション１に割り当てられた領域に合うように調整される。図２Ｄの例に関して、（２０４Ｃとして示された）パーティション２のデータ領域Ｂは、パーティション１に割り当てられたデータ領域により減少された項目を有する。例えば、新たなデータ領域２０２ＡにＦＡＴの項目が５００個存在する場合、（２０４Ｃとして示された）パーティション２のデータ領域Ｂが（２０４Ｂとして示された）パーティション２のデータ領域Ａよりも下位にあるならば、（２０４Ｃとして示された）パーティション２のデータ領域Ｂにある各ファイル名項目の開始クラスタは５００だけ調整される。
【００７２】
図４Ｄには、前述した例を表形式で示す。（図２Ｄの２０４Ｂとして示された）パーティション２のデータ領域Ａは１，０００個の項目を有する。領域２０２Ａは５００個の項目を有し、領域２０４Ｃは５００個の項目を有する。
【００７３】
一実施例では、フラッシュ装置１５０の各パーティションは、パーティションに利用できる特定の容量を有するためにホストに公開する。例えば、フラッシュ装置１５０が４ＧＢである場合、各パーティションは２ＧＢであることを公開する。従って、ＦＡＴ領域がフラッシュ装置の空間全体に合うことができるように、各パーティションに利用できる充分なＦＡＴ領域を有するのが望ましい。この追加のＦＡＴテーブル空間はパーティションを増大させる。従って、メモリコントローラ１５０Ａの下、ＦＡＴ１領域２０７およびＦＡＴ２領域２０８は、フラッシュメモリ装置の容量全部のＦＡＴ項目を含む程度に充分に大きい。
【００７４】
図４Ｅには、パーティションマップのホスト／ユーザの視点を示す列４１７と、実際のパーティションマップ／実パーティションマップを示す列４１８とを有するテーブルを示す。列４１８の下に示すように、実パーティションマップは、ＦＡＴ領域の拡張のための予約済み領域２０７Ａを含む。この領域は、ＦＡＴ１およびＦＡＴ２内のＦＡＴ項目が記憶装置全体に合うことができるように充分に大きい。パーティション（例えば、前述した例では、パーティション１）が拡張すると、予約済み領域２０７Ａは、拡張のために追加の空間を提供するのに用いられる。パーティション領域がメモリコントローラ１５０Ａにより再割り当てされると、ＦＡＴ領域は、パーティションの大きさの変化に合うように調整される。
【００７５】
パーティション空間がメモリコントローラ１５０Ａにより再割り当てされる場合、ＦＡＴ項目／領域に加えて、ディレクトリ領域内のファイル名項目も調整される（図３のステップＳ３１０）。前述した例（図４Ａ〜４Ｃ）に基づいて、パーティション１のファイル名項目は変更されない。パーティション２の場合、ファイル名項目の開始クラスタは、パーティション１に割り当てられた領域に合うように調整される。
【００７６】
図２Ｄの例に関して、（２０４Ｃとして示された）パーティション２のデータ領域Ｂは、パーティション１に割り当てられたデータ領域だけ減少された項目を有する。例えば、新たなデータ領域２０２ＡにＦＡＴの項目が５００個存在する場合、（２０４Ｃとして示された）パーティション２のデータ領域Ｂが（２０４Ｂとして示された）パーティション２のデータ領域Ａよりも下位にあるならば、（２０４Ｃとして示された）パーティション２のデータ領域Ｂにある各ファイル名項目の開始クラスタは５００だけ調整される。
【００７７】
図４Ｆには、前述した例を表形式で示す。（図２Ｄの２０４Ｂとして示された）パーティション２のデータ領域Ａは１，０００個の項目を有する。領域２０２Ａは５００個の項目を有し、領域２０４Ｃは５００個の項目を有する。
【００７８】
新たなパーティション領域２（＝ｎ）がブロック１，０００を超えて位置付けられている場合、新たなパーティション領域２（＝ｎ）の各ファイル名項目の開始クラスタは５００だけ調整される。従って、ｎ≧１０００である場合、ｎ’（調整されたファイル名項目）は、ｎ−５００に等しい。この調整は、領域２０４Ｂ，２０４Ｃ内の項目を含むすべての項目に対して実行される。ファイル名項目がディレクトリまたはサブディレクトリであることを示す場合、ディレクトリ（またはサブディレクトリ）項目も調整される。
【００７９】
本発明の一態様では、多大な時間を必要とするつまらない動作ですべてのデータをコピーすることなしにパーティション領域はメモリ装置コントローラにより再割り当て／調整される。ホストシステムは、ドライブをコピー／再フォーマットしてパーティション記憶空間を再割り当てするために多大な時間を必要とする処理を実行する必要はない。
【００８０】
特定の実施形態を参照して本発明を説明してきたが、これらの実施形態は一例にすぎず、本発明を限定するものではない。例えば、前述した例はフラッシュメモリ装置に基づくが、他の種類のメモリ装置、例えばハードディスクに同様に適用することができる。本願明細書と特許請求の範囲とを踏まえると、本発明の他の多くの用途および実施形態は明らかになるであろう。
【図面の簡単な説明】
【００８１】
【図１Ａ】フラッシュ装置を用いるホストシステムを示すブロック図である。
【図１Ｂ】図１Ａのホストシステムの構造を示す図である。
【図１Ｃ】本発明の一態様に従って用いられるフラッシュ装置のメモリコントローラを示すブロック図である。
【図１Ｄ】フラッシュメモリシステムの物理メモリ編成の一例を示す図である。
【図１Ｅ】図１Ｄの物理メモリの一部を示す拡大図である。
【図１Ｆ】ホストと再プログラム可能なメモリシステムとの間の従来の論理アドレスインターフェイスを示す。
【図２Ａ】記憶装置内の２つのメモリパーティションを示すブロック図である。
【図２Ｂ】図２Ａに示したパーティションのシステム領域の割り付けを示すブロック図である。
【図２Ｃ】本発明の一態様に従って再割り当てされたメモリパーティションをホストシステムの視点から示す。
【図２Ｄ】本発明の一態様に従って再割り当てされたメモリパーティションの実際の割り付けを示す。
【図３】本発明の一態様に従って大容量記憶装置内のメモリ空間を再割り当てする全体的な処理を示すフローチャートである。
【図４Ａ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図４Ｂ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図４Ｃ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図４Ｄ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図４Ｅ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図４Ｆ】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図１Ａ】
0005143730.tif 000002
【図１Ｂ】
0005143730.tif 000003
【図１Ｃ】
0005143730.tif 000004
【図１Ｄ】
0005143730.tif 000005
【図１Ｅ】
0005143730.tif 000006
【図１Ｆ】
0005143730.tif 000007
【図２Ａ】
0005143730.tif 000008
【図２Ｂ】
0005143730.tif 000009
【図２Ｃ】
0005143730.tif 000010
【図２Ｄ】
0005143730.tif 000011
【図３】
0005143730.tif 000012
【図４Ａ】
0005143730.tif 000013
【図４Ｂ】
0005143730.tif 000014
【図４Ｃ】
0005143730.tif 000015
【図４Ｄ】
0005143730.tif 000016
【図４Ｅ】
0005143730.tif 000017
【図４Ｆ】
0005143730.tif 000018