説明

記憶装置内のパーティションを管理する方法およびシステム

【課題】大容量記憶メモリシステムと、メモリパーティション空間を再割り当てする方法とを提供する。
【解決手段】記憶システムは、論理インターフェイスを介してホストシステムからデータを受信するようになっているマイクロプロセッサを含むメモリコントローラと、システム領域およびデータ領域を有する第1のメモリパーティションと、システム領域およびデータ領域を有する第2のメモリパーティションと、を含み、メモリコントローラは、ホストシステムにシステム領域およびデータ領域が連続しているように見えるようにシステム領域およびデータ領域の仮想ブロックアドレスを用いることにより、第2のメモリパーティションから、いっぱいであるかまたはしきい値に達した第1のメモリパーティションへメモリ空間を再割り当てする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にメモリ記憶装置に関し、特に、記憶装置内のパーティションの管理に関する。
【背景技術】
【0002】
一般的に、従来のコンピュータシステムは幾つかの機能的な構成要素を含む。これら構成要素は、中央処理装置(CPU)、メインメモリ、入出力(「I/O」)装置および大容量記憶装置を含むことができる。従来のシステムでは、メインメモリは、システムバスまたはローカルメモリバスを介してCPUに結合されている。メインメモリは、実行時間にメインメモリ内に蓄積されたデータおよび/またはプログラム情報に対するCPUアクセスを行うのに用いられる。一般的に、メインメモリは、ランダムアクセスメモリ(RAM)回路から成る。CPUおよびメインメモリを有するコンピュータシステムは、ホストシステムと称されることが多い。
【0003】
一般的に、大容量記憶装置は、データを保存するのに用いられている。通常、大容量記憶装置に蓄積されたプログラムは、CPUにより実行される前にメインメモリにコピーされる。一般的な大容量記憶装置は、フロッピー(登録商標)ディスク、ハードディスク、光ディスクおよびテープドライブを含む。さらに、ホストシステム用にフラッシュメモリを用いて不揮発性記憶装置を構成することができる。
【0004】
ホストシステムは、インターフェイスを介してフラッシュメモリ(本願明細書を通して交換可能に「フラッシュ装置」、「フラッシュ」または「フラッシュカード」とも称する)とインターフェイスをとる。一般的に、フラッシュメモリは、情報を蓄積する不揮発性メモリセルアレイを含む。フラッシュメモリシステムは、パーソナルコンピュータやカメラなどのような様々なホストと取り外し可能に接続されるがこのようなホストシステム内に埋め込むこともできるメモリカードまたはフラッシュドライブの形態で最も一般的に提供されている。
【0005】
一般的に、フラッシュメモリコントローラはメモリアレイの動作を制御する。メモリコントローラは、マイクロプロセッサ、ある不揮発性読み出し専用メモリ(「ROM」)、揮発性ランダムアクセスメモリ(「RAM」)、および1つ以上の特殊回路、例えばエラー訂正コード(「ECC」)回路を含む。ECC回路は、データがメモリコントローラを介して受け渡されたとき、このデータからECCを計算する。
【0006】
市販のフラッシュメモリシステムの初期世代では、メモリセルの長方形アレイは多数の群のセルに分割され、各群は、標準のディスクドライブセクタのデータ量、すなわち512バイトを蓄積した。一般的に、16バイトのようなさらなるデータ量も、エラー訂正コード(ECC)を蓄積するために各群に含まれ、場合によっては、ユーザデータおよび/またはユーザデータが蓄積されているメモリセル群に関する他のオーバヘッドデータが各群に含まれる。このような各群内のメモリセルは、同時に消去できる最小数のメモリセルである。すなわち、実際上、消去単位は、1つのデータセクタを蓄積し任意のオーバヘッドデータが含まれるメモリセルの数である。この種のメモリシステムの例が、米国特許第5,602,987号(特許文献1)および第6,426,893号(特許文献2)に記載されている。データを用いてメモリセルを再プログラムする前にメモリセルを消去する必要があることは、フラッシュメモリの特性である。
【0007】
論理インターフェイスを介してデータをフラッシュメモリに書き込むとき、一般的に、ホストは固有の論理アドレスをセクタ、クラスタ、またはメモリシステムの連続的な仮想アドレス空間内の他のデータ単位に割り当てする。一般的に、ホストはファイルシステムを維持し、ファイルデータを論理クラスタに割り当てし、ここで、クラスタの大きさは一般的に固定されている。フラッシュ装置は複数の論理セクタに分割され、ホストは複数の論理セクタから成るクラスタ内の空間を割り当てする。クラスタは論理アドレスの再分割であり、クラスタマップはファイルアロケーションテーブル(「FAT」)として指定される。一般的に、FATは記憶装置自体に蓄積されている。
【0008】
ディスクオペレーティングシステム(DOS)のように、ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込み、このアドレスからデータを読み出す。メモリシステム内のコントローラは、ホストから受信した論理アドレスを、データが実際に蓄積されているメモリアレイ内の物理アドレスに変換し、その後、これらのアドレス変換を追跡し続ける。
【0009】
一般的に、メモリ装置(例えば、フラッシュメモリ)は、ホストシステムによりパーティション化される。通常、2つのパーティションはドライブを共有し、各パーティションの大きさはホストシステムにより設定されている。常に、一方のパーティションがいっぱいになり、他方のパーティションに空きが残っている場合、各パーティションに割り当てられた空間の量を再割り当てすることが有益である。従来のシステムでは、ホストは、ドライブを再フォーマットすることによりこの機能を実行する。この処理は、再フォーマットする前にすべてのデータをドライブからコピーし、その後、空間を各パーティションに再割り当てすることを含む。この処理はつまらなく、多大な時間を必要とし、従って望ましくない。
【0010】
従って、メモリ記憶装置の空間を最適に使用するため、パーティションを効率良く管理する方法およびシステムが必要とされる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】米国特許第5,602,987号
【特許文献2】米国特許第6,426,893号
【特許文献3】米国特許第5,570,315号
【特許文献4】米国特許第5,774,397号
【特許文献5】米国特許第6,046,935号
【特許文献6】米国特許第6,373,746号
【特許文献7】米国特許第6,456,528号
【特許文献8】米国特許第6,522,580号
【特許文献9】米国特許第6,771,536号
【特許文献10】米国特許第6,781,877号
【特許文献11】米国公開特許出願第2003/0147278号
【発明の概要】
【0012】
本発明の一態様では、大容量記憶メモリシステムを提供する。このシステムは、再プログラム可能な不揮発性メモリセルであって、メモリセルは、データを蓄積するため、メモリセルの行を規定する複数の連続ストリングに互いに接続されている同時に消去可能なメモリセルの複数のブロック内に配置され、メモリセルは、少なくとも2つのメモリパーティションに分割され、各メモリパーティションがシステム領域およびデータ領域を有するメモリセルと、論理インターフェイスを介してホストシステムからデータを受信するようになっているマイクロプロセッサを含むコントローラと、を含み、コントローラは、マッピングテーブルを用いることにより、未使用の記憶空間を有する第2のメモリパーティションから、いっぱいであるかまたはしきい値に達した第1のメモリパーティションへメモリ空間を再割り当てし、マッピングテーブルは、ホストシステムにシステム領域およびデータ領域が連続しているように見えるシステム領域およびデータ領域の仮想ブロックアドレスと、仮想ブロックアドレスを実際の論理ブロックアドレスにマッピングする実論理ブロックアドレスとを用いる。
【0013】
本発明の別の態様では、論理インターフェイスを介してホストシステムからデータを受信するようになっているマイクロプロセッサを含むコントローラと、システム領域およびデータ領域を有する第1のメモリパーティションと、システム領域およびデータ領域を有する第2のメモリパーティションと、を含む大容量記憶メモリメモリシステムであって、コントローラは、ホストシステムにシステム領域およびデータ領域が連続しているように見えるようにシステム領域およびデータ領域の仮想ブロックアドレスを用いることにより、未使用の記憶空間を有する第2のメモリパーティションから、いっぱいであるかまたはしきい値に達した第1のメモリパーティションへメモリ空間を再割り当てする大容量記憶メモリシステムを提供する。
【0014】
さらなる別の態様では、システム領域およびデータ領域を有する第1のメモリパーティションと、システム領域およびデータ領域を有する第2のメモリパーティションとの間で大容量記憶メモリシステムのデータ記憶空間を動的に再割り当てする方法を提供する。この方法は、第1のメモリパーティションがいっぱいであり、かつ/または、しきい値に達したかどうかを判断するステップと、いっぱいであり、かつ/または、しきい値に達した第1のメモリパーティションに割り当てすることができる空き空間を第2のメモリパーティションが有するかどうかを判断するステップと、ある空き空間を第2のメモリパーティションから第1のメモリパーティションへ割り当てするステップと、を含み、メモリコントローラは空き空間を割り当てする。
【0015】
この概要は、本発明の性質を素早く理解できるように提供されている。本発明の好適な実施形態の以下の詳細な説明を添付図面と併せて参照することにより本発明をより充分に理解することができる。
【0016】
次に、好適な実施形態の図面を参照して本発明の前述した特徴および他の特徴を説明する。図中、同一の符号は、同様な部分を示す。図に示されている実施形態は、本発明を説明するものであって、本発明を制限するものではない。
【図面の簡単な説明】
【0017】
【図1A】フラッシュ装置を用いるホストシステムを示すブロック図である。
【図1B】図1Aのホストシステムの構造を示す図である。
【図1C】本発明の一態様に従って用いられるフラッシュ装置のメモリコントローラを示すブロック図である。
【図1D】フラッシュメモリシステムの物理メモリ編成の一例を示す図である。
【図1E】図1Dの物理メモリの一部を示す拡大図である。
【図1F】ホストと再プログラム可能なメモリシステムとの間の従来の論理アドレスインターフェイスを示す。
【図2A】記憶装置内の2つのメモリパーティションを示すブロック図である。
【図2B】図2Aに示したパーティションのシステム領域の割り付けを示すブロック図である。
【図2C】本発明の一態様に従って再割り当てされたメモリパーティションをホストシステムの視点から示す。
【図2D】本発明の一態様に従って再割り当てされたメモリパーティションの実際の割り付けを示す。
【図3】本発明の一態様に従って大容量記憶装置内のメモリ空間を再割り当てする全体的な処理を示すフローチャートである。
【図4A】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図4B】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図4C】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図4D】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図4E】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【図4F】本発明の一態様に従ってメモリパーティションの再割り当ての一例を示す。
【発明を実施するための形態】
【0018】
好適な実施形態の理解を容易にするため、ホストシステム/フラッシュ装置の一般構造および動作を説明する。次に、一般構造を参照して、好適な実施形態の特定の構造および動作を説明する。
【0019】
ホストシステム
図1Aには、本発明を用いることができる汎用コンピュータシステム(ホストシステム)100を示す。システム100の構成要素は、コンピュータ160と、マウス120、キーボード165、モニタ120およびプリンタ125のような様々な入出力(「I/O」)装置とを含む。
【0020】
図1Bには、コンピュータシステム100の抽象表現を示す。構成要素130は、ユーザをコンピュータシステム100と対話させることができるマウスおよびキーボードのような複数の入力装置を表すものである。これと同様に、出力135は、1つ以上の出力装置、例えば、モニタ120およびプリンタ125を表す。
【0021】
コンピュータシステム100は、システムバス155に接続された中央処理装置(「CPU」)(またはマイクロプロセッサ)175を含む。メインメモリ145(例えば、ランダムアクセスメインメモリ(「RAM」))もシステムバス155に結合され、CPU175にメモリ記憶装置へのアクセス権を与える。プログラム命令を実行するとき、CPU175はこれらの処理ステップをRAM145に蓄積し、蓄積された処理ステップをRAM145から取り出して実行する。
【0022】
読み出し専用メモリ(「ROM」)(図示せず)は、始動命令シーケンスまたは基本入出力オペレーティングシステム(BIOS)シーケンスのような不変命令シーケンスを蓄積するのに設けられている。
【0023】
大容量記憶装置150によりコンピュータシステム100はデータを永続的に蓄積することができる。大容量記憶装置150をフラッシュメモリ装置、ハードディスクまたは別の種類の媒体記憶装置とすることができる。本発明の適応的な態様の以下の説明は、フラッシュメモリ装置に基づくが、他の種類のメモリ装置に適用することもできる。大容量記憶装置150をフラッシュ装置150とも称する。
【0024】
現在では、多くの異なるフラッシュ装置(またはフラッシュメモリカード)が市販され、例として、コンパクトフラッシュ(登録商標)(CF)、マルチメディアカード(MMC)(登録商標)、セキュアデジタル(SD)、ミニSD、メモリスティック、スマートメディア(登録商標)およびトランスフラッシュカードが挙げられる。これらのカードの各々は、標準仕様に従って固有の機械的および/または電気的インターフェイスを有するが、各々に含まれるフラッシュメモリは極めて類似する。これらのカードはすべて、本発明の譲受人であるサンディスク コーポレイションから入手可能である。サンディスクは、Cruzer(クルーザー)(登録商標)による一連のフラッシュドライブも提供する。このフラッシュドライブは、ホストのユニバーサル・シリアル・バス(USB)コンセントに接続することによりホストと接続するUSBプラグを有する小型パッケージ内のハンドヘルドメモリシステムである。これらのメモリカードおよびフラッシュドライブの各々は、ホストとインターフェイスをとり、ホスト内のフラッシュメモリの動作を制御するコントローラを含む。
【0025】
前述した不揮発性メモリカードおよびフラッシュドライブは市販され、512メガバイト(MB)、1ギガバイト(GB)、2GBおよび4GBのデータ記憶容量を有し、データ記憶容量がこれ以上高いものもある。
【0026】
このようなメモリカードおよびフラッシュドライブを用いるホストシステムは多種多様である。ホストシステムは、パーソナルコンピュータ(PC)、ラップトップコンピュータおよび他の携帯用コンピュータ、携帯電話、個人用携帯情報端末(PDA)、デジタル静止カメラ、デジタル動画カメラ、並びに、携帯用音声プレーヤを含む。一般的に、ホストは、1種類以上のメモリカードまたはフラッシュドライブ用の内蔵コンセントを含むが、一部のホストは、メモリカードが差し込まれるアダプタを必要とする。
【0027】
メモリセルアレイのNAND構造が現在のところ好ましいが、その代わりにNORのような他の構造も用いることができる。NANDフラッシュメモリと、メモリシステムの一部としての動作との例として、米国特許第5,570,315号(特許文献3)、第5,774,397号(特許文献4)、第6,046,935号(特許文献5)、第6,373,746号(特許文献6)、第6,456,528号(特許文献7)、第6,522,580号(特許文献8)、第6,771,536号(特許文献9)、第6,781,877号(特許文献10)および米国公開特許出願第2003/0147278号(特許文献11)を参照することができる。
【0028】
フラッシュ装置150は、(「メモリシステムコントローラ」、または「メモリコントローラ」あるいは「コントローラ」とも称することができる)メモリコントローラモジュールと、固体メモリモジュールとを含む。図1Cには、コントローラモジュール150Aの内部構造のブロック図を示す。コントローラ150Aは、論理インターフェイスまたは別の周辺バス(図示せず)あるいはシステムバス155を介してホストシステム100とインターフェイスをとる。コントローラモジュール150Aは、インターフェイスロジック150Eを介して様々な他の構成要素とインターフェイスをとるマイクロコントローラ150Cを含む。メモリ150Dは、フラッシュ装置150の動作を制御するためにマイクロコントローラ150Cにより用いられるファームウェアおよびソフトウェア命令を蓄積する。メモリ150Dを、揮発性再プログラム可能なランダムアクセスメモリ(「RAM」)、再プログラム可能でない不揮発性メモリ(「ROM」)、1度プログラム可能なメモリ、または、再プログラム可能なフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)とすることができる。
【0029】
フラッシュインターフェイス150Fがメモリモジュール150Bとインターフェイスをとる間、ホストインターフェイス150Gはホストシステム100とインターフェイスをとる。
【0030】
図1Dには、以下のさらなる説明で一例として用いられるフラッシュメモリセルアレイ(150B)の編成を概念的に示す。メモリセルの4つのプレーンまたはサブアレイ131〜134は、単一集積メモリセルチップ上、(各チップ上にプレーンの2つが存在する)2つのチップ上、または、4つの分離したチップ上に存在しうる。以下の説明に対して、特定の配置は重要ではない。1,2,8,16またはそれ以上の数のようなその他の数のプレーンがシステムに存在しうることもちろんである。プレーンは、それぞれのプレーン131〜134に位置するブロック137,138,139,140Aのような長方形により図1Dに示されたメモリセルのブロックに個々に分割されている。各プレーンには、数十または数百のブロックが存在しうる。
【0031】
メモリセルの一ブロックは消去の単位であって、物理的に同時に消去可能なメモリセルの最小数である。しかし、増大された並列性のため、ブロックは、より大規模なメタブロック単位で動作される。各プレーンからの1つのブロックは、メタブロックを形成するように論理的に互いに結合されている。4つのブロック137〜140Aは、1つのメタブロック141を形成するように示されている。一般的に、メタブロック内のセルのすべては同時に消去される。ブロック145〜148を構成する他のメタブロック143に示されるように、メタブロックを形成するのに用いられたブロックをそれぞれのプレーン内で同じ相対的位置に限定する必要はない。
【0032】
高いシステム性能のため、一般的にプレーンのすべてにわたってメタブロックを拡張するのが好ましいが、異なるプレーン内の1つ、2つまたは3つのブロックのいずれかまたはすべてからメタブロックを動的に形成する機能を用いてメモリシステムを動作することができる。これにより、メタブロックの大きさを、1つのプログラム動作で記憶するのに利用できるデータの量と厳密に一致させることができる。
【0033】
次に、個々のブロックは、動作目的のため、図1Eに示されるようにメモリセルのページに分割されている。例えば、ブロック131〜134の各々のメモリセルは、それぞれ8つのページP0〜P7に分割されている。あるいはまた、各ブロック内のメモリセルには、16個、32個、またはそれ以上のページが存在しうる。ページは、1ブロック内でのデータプログラムおよび読み出しの単位であって、1度にプログラムされる最小量のデータを含む。
【0034】
NAND構造では、ページは、ブロック内でワード線に沿っているメモリセルから形成されている。しかし、メモリシステム動作の並列性を増大させるため、2つ以上のブロック内のこのようなページをメタページ内で論理的に結合することができる。図1Eに示されているメタページ151は、4つのブロック131〜134の各々から1つの物理ページの形態を成す。例えば、メタページ151は、4つのブロックの各々からのページP2を含むが、メタページのページは、各ブロック内で必ずしも同じ相対的位置を有する必要はない。
【0035】
図1Fには、ホストと大容量メモリシステムとの間の論理インターフェイスの利用を示す。ホストは、ホストにより実行されるアプリケーションソフトウェアまたはファームウェアプログラムにより作成されるかまたは用いられるデータファイルを処理する。一例としてワード処理データファイルが挙げられ、別の例としてコンピュータ支援設計(CAD)ソフトウェアの描画ファイルが挙げられる。これらのファイルは主に、PCやラップトップコンピュータなどのような汎用コンピュータホスト内に見られる。PDFフォーマットの文書も、このようなファイルである。静止デジタルビデオカメラは、メモリカードに蓄積されたピクチャごとにデータファイルを作成する。携帯電話は、電話ディレクトリのような内部メモリカードのファイルからデータを用いる。PDAは、アドレスファイルやカレンダファイルなどのような幾つかの異なるファイルを蓄積し用いる。任意のこのような用途では、メモリカードは、ホストを動作するソフトウェアも含むことができる。
【0036】
連続的な論理アドレス空間161は、メモリシステムに蓄積できるすべてのデータのアドレスを提供するのに充分大きい。一般的に、ホストアドレス空間は、データのクラスタのインクリメントに分割されている。多数のセクタ、一般的には4から64までのセクタのデータを含むように各クラスタを所定のホストシステム内に設計することができる。標準のセクタは、512バイトのデータを含む。
【0037】
作成された3つのデータファイル1,2,3が、図1Fの例に示されている。ホストシステム上で実行するアプリケーションプログラムは、順序付けられたデータセットとして各ファイルを作成し、固有の名前または他の基準により特定する。他のファイルにまだ割り当てられていない充分に利用可能な論理アドレス空間は、ホストによりファイル1に割り当てられる。ファイル1には連続範囲の利用可能な論理アドレスが割り当てられたとして示される。特定の範囲がホストオペレーティングソフトウェア用に割り当てられるように、一般的にアドレスの範囲は特定の目的のためにも割り当てられる。この場合、ホストが論理アドレスをデータに割り当てする時点でこれらのアドレスが用いられていなかったとしても、データを蓄積するためにこれらのアドレスは回避される。
【0038】
後でファイル2がホストにより作成された場合、図1Fに示されるように同様にホストは論理アドレス空間161内の2つの異なる範囲の連続アドレスを割り当てする。連続論理アドレスにファイルを割り当てする必要はなく、むしろ、他のファイルに既に割り当てられたアドレス範囲の間にアドレスの小部分を割り当てすることができる。従って、この例は、ホストにより作成されたさらなる別のファイル3が、ファイル1,2および他のデータに前もって割り当てられていないホストアドレス空間の他の部分に割り当てられることを示す。
【0039】
ホストは、ホストが様々なホストファイルに割り当てする論理アドレスが維持されているファイルアロケーションテーブル(FAT)を維持することによりメモリ論理アドレス空間を追跡し続ける。一般的に、FATテーブルは、不揮発性メモリとホストメモリとに蓄積され、新たなファイルが蓄積されたり、他のファイルが削除されたり、ファイルが変更されたりなどすると、FATテーブルはホストにより頻繁に更新される。例えば、ホストファイルが削除された場合、ホストは、FATテーブルを更新することにより、削除されたファイルに前もって割り当てられた論理アドレスを割り当て解除して、論理アドレスが他のデータファイル用に今では利用可能であることを示す。
【0040】
ホストは、メモリシステムコントローラがファイルの蓄積のために選択する物理位置に関心を持たない。一般的なホストは、論理アドレス空間と、ホストが様々なファイルに割り当てした論理アドレスとだけを理解する。その一方で、メモリシステムは、一般的なホスト/カードインターフェイスを介して、データが書き込まれた論理アドレス空間の部分だけを理解するが、特定のホストファイルに割り当てられた論理アドレスを理解せず、あるいは、ホストファイルの数さえも理解しない。メモリシステムコントローラ150Aは、データを蓄積するかまたは取り出すため、ホストにより提供された論理アドレスを、ホストデータが蓄積されているフラッシュメモリセルアレイ内の固有の物理アドレスに変換する。ブロック163は、これらの論理−物理アドレス変換の作業テーブルを表す。論理−物理アドレス変換の作業テーブルは、メモリシステムコントローラ150Aにより維持されている。
【0041】
メモリシステムコントローラ150Aは、メモリアレイ165のブロックおよびメタブロック内のデータファイルを蓄積するため、システムの性能を高水準に維持するようにプログラムされている。この図では、4つのプレーンまたはサブアレイが用いられている。各プレーンからのブロックにより形成されたメタブロックの全体にわたってシステムが可能にする最大級の並列性を用いてデータをプログラムし読み出すのが好ましい。一般的に、少なくとも1つのメタブロック167は、メモリコントローラにより用いられるオペレーティングファームウェアおよびデータを蓄積するための予約済みブロックとして割り当てられている。ホストオペレーティングソフトウェアやホストFATテーブルなどを記憶するため、別のメタブロック169または複数のメタブロックを割り当てすることができる。物理記憶空間の大部分は、データファイルを記憶するために残る。
【0042】
しかし、メモリシステムコントローラ150Aは、受信されたデータが様々なファイルオブジェクト間でホストによりどのようにして割り当てられたかを理解しない。ホストにより特定の論理アドレスに書き込まれたデータが、コントローラの論理−物理アドレステーブル163により維持された対応する物理アドレスに蓄積されたことを、一般的に、すべてのメモリコントローラ150Aはホストと対話することから理解する。
【0043】
一般的なメモリシステムでは、アドレス空間161内にデータの量を蓄積するのに必要とされるよりも数個追加されたブロックの記憶容量が備えられている。これらの追加されたブロックの1つ以上は、メモリの存続期間中に欠陥品となることがある他のブロックの代替とする冗長ブロックとして設けられている。メタブロックにもともと割り当てられていた欠陥ブロックを冗長ブロックで代替することを含む様々な理由のため、一般的に、個々のメタブロック内に含まれるブロックの論理グループ化を変更することができる。メタブロック171のような1つ以上の追加のブロックは、一般的に消去済みブロックプール内に維持されている。
【0044】
ホストがデータをメモリシステムに書き込む場合、コントローラ150Aは、ホストにより割り当てられた論理アドレスを消去済みブロックプールのメタブロック内の物理アドレスに変換する。次に、論理アドレス空間161内でデータを蓄積するのに用いられていない他のメタブロックは消去され、その後のデータ書き込み動作中に用いられるように消去済みプールブロックとして指定される。
【0045】
メモリパーティション
図2Aは、一般的にメモリ記憶装置150がどのようにしてパーティション化されるかを示す一例である。記憶装置150は、2つのパーティション、すなわちパーティション1およびパーティション2を含む。パーティション1は、システム領域201およびデータ領域202を含む。また、パーティション2は、システム領域203およびデータ領域204を有する。2つのパーティションだけが図2Aに示され、以下の再割り当て技術は、この例に基づいて行われるが、本発明の適応的な態様は、任意の特定数のメモリパーティションに限定されるものではない。
【0046】
図2Bには、パーティション2に類似するパーティション1のブロック図を示す。図2Bに示されるように、システム領域201は、様々な小部分、例えば、マスタブートレコード(「MBR」)領域205、パーティションブートレコード(「PBR」)領域206、FAT1領域207、FAT2領域208およびルートディレクトリ領域209を有する。
【0047】
MBR領域205は全体的なパーティション情報を蓄積し、媒体がブート可能な装置である場合、MBR205は、MBR領域205からPBR領域206へジャンプする命令を含む。MBR領域205は、MBR領域205とPBR領域206との間の予約済み空間である隠し領域をも含む。
【0048】
PBR領域206は、パーティション(この例では、パーティション1)のパーティション/ブート情報を含む。例えば、PBR領域206は、FATの種類(例えば、12/16/32ビット)、ラベル(すなわち、ドライブ名)、ドライブの大きさ、クラスタの大きさ(すなわち、割り当て単位ごとのセクタの数)、FAT領域の数(2つのFAT領域、すなわち、図2Bに示されたFAT1およびFAT2)、および、FATごとのセクタの数に関する情報を含む。
【0049】
FAT領域(207,208)は、ファイルごとにクラスタ情報を含む。例えば、FAT12の場合、領域207,208内の各項目は12ビットを含み、全部で4,096個の項目が存在する。クラスタ0およびクラスタ1は、0XFFFFF8(媒体の種類)およびクラスタの終わりのために予約されている。特定のクラスタ(例えば、クラスタ4,087)は、不良のクラスタを示すのに用いられる。FAT16の場合、各項目は16ビットを含み、FAT32の場合、各項目は32ビットを含む。
【0050】
ルートディレクトリ領域209は、ファイルごとに項目を含む。各ディレクトリ項目は、ファイル名またはディレクトリに対する特定のバイト数(例えば、8バイト)、拡張子に対するバイト数(例えば、3バイト)、ファイル属性(例えば、ファイルが読み出し専用、隠しファイル、システムファイル、ボリュームラベル、ディレクトリ、または、変更されたファイルである場合)に対するバイト数(例えば、1バイト)、ファイルが作成された日時を示すバイト数、開始クラスタに対する特定のバイトの数(例えば、2)、および、ファイル長を示す特定のバイトの数(例えば、4)を含む。
【0051】
開始クラスタに対するバイトの数はFAT内の最初のクラスタを指し示し、最後のクラスタを0xFFF、0xFFFFまたは0Xffffffにより示すことができる。
【0052】
ディレクトリにファイル名を書き込むため、ホストシステムはFAT1領域207内で空いているクラスタ空間を検出し、データはデータ領域202に書き込まれる。次に、FAT1およびFAT2の双方の項目は更新される。ディレクトリ項目、すなわち日付/時間/開始クラスタ/ファイル長も更新される。
【0053】
本発明の一態様では、一方のパーティションがいっぱいになるか、あるいは特定のしきい値に達し、他方のパーティションが空き空間を有する場合、メモリコントローラ150Aはパーティション空間を再割り当てする。従って、一方のパーティションの大きさを増大させながら、他方の大きさを減少させる。メモリコントローラ150Aによりしきい値をプログラムすることができる。(本願明細書で「仮想マップ」と称する)マッピング方式は、以下で説明するように、双方のパーティションにおけるクラスタ使用率を追跡するのに用いられる。この処理全体は、メモリコントローラ150Aにより効率良く実行される。ホストシステムは、すべてのデータをコピーし、記憶装置を再フォーマットする必要はない。
【0054】
図2Cには、ホストシステムに見える再割り当てされたパーティション1およびパーティション2の割り付けを示す。パーティション1のシステム領域201Aは、再割り当て後の更新されたクラスタおよびパーティション情報を含む。元のパーティション領域202はいっぱいであるか、または、これ以上のデータがそこでは書き込まれないしきい値の大きさに達している。新たなデータ領域202Aは、パーティション2からパーティション1へ割り当てられている。減少されたパーティション2は、システム領域203Aと、減少された新たなデータ領域204Aとを有する。次に、パーティションを再割り当てする処理を詳細に説明する。
【0055】
図2Dには、再割り当てがメモリコントローラ150Aにより実行された後のパーティション1およびパーティション2の実際の割り付けを示す。パーティション2のシステム領域203Aは、領域202Aがパーティション1に割り当てられた後の調整済み領域である。パーティション2は、図2Cに示したデータ領域204Aに等しい204Bおよび204Cとして示されるデータ領域を有する。
【0056】
図3は、本発明の一態様に従ってパーティションの大きさを再割り当てする処理を示すフローチャートである。処理はステップS300から開始し、フラッシュ装置150を初期化する。
【0057】
ステップS302では、コントローラ150Aは、パーティションがいっぱいかどうかを判断する。パーティションにこれ以上データを蓄積することができないか、あるいはパーティションがプログラム可能な特定のしきい値に達した場合、パーティションはいっぱいであると見なされる。パーティションがいっぱいでない場合、コントローラ150Aは、パーティションがいっぱいになるまで待機する。
【0058】
パーティション(例えば、図2Aのパーティション1)がいっぱいである場合、ステップS304では、コントローラ150Aは、空き空間が別のパーティション(例えば、パーティション2)から利用可能であるかどうかを判断する。空き空間が利用可能でない場合、処理はステップS302に戻る。
【0059】
空き空間が利用可能である場合、ステップS306では、この空き空間の特定量(例えば、202A)を、いっぱいのパーティションに割り当てする。再割り当て後、ステップS308では、以下に詳細に説明するように双方のパーティションのFAT項目を調整する。ステップS310では、ディレクトリ項目も調整する。このステップも以下に詳細に説明する。ステップS312では、処理を終了する。
【0060】
前述した処理の流れは、「いっぱいのパーティション」を検出するメモリコントローラ150Aに基づいて行われたメモリパーティションの再割り当てについて説明しているが、本発明はこの状況だけに限定されるものではないことに留意すべきである。例えば、ホストは特定のコマンド(例えば、「ドライブの再パーティション化」)をコントローラ150Aに送信してメモリ装置を再パーティション化することができ、次に、コントローラは、前述した処理のステップを実行してメモリ空間を再割り当てする。
【0061】
図4A〜4Fには、少なくとも2つのメモリパーティション間のメモリ空間を再割り当てするための前述した処理のステップを示す。図4A〜4Fに用いられる様々な値は単に例示として用いられ、本発明の適応的な態様を限定するものではないことに留意すべきである。
【0062】
図4A〜4Fの例は、フラッシュ装置150のクラスタの大きさが32キロバイト(KB)であり、従って、120メガバイト(MB)のフラッシュ装置は4,096個のクラスタを有すると仮定する。各システム領域(201,203)は6つのクラスタを用い、各パーティションは2,042個のクラスタのデータ領域を有する。各クラスタをブロックと称することができ、すなわち、1つのブロックの大きさはクラスタの大きさに等しい。
【0063】
図4Aには、(図2Aに示されるような)最初のパーティション状態のテーブルを示す。各パーティションはシステム領域に対して6つのブロックを有し、データ領域に対して2,042個のブロックを有する。
【0064】
パーティション1の場合、システム領域201にはブロック番号0〜5が割り当てられ、データ領域202にはブロック番号6〜2,047が割り当てられている。ファイルシステムがパーティション1の最初のデータクラスタに書き込む場合には書き込み動作を論理ブロックアドレス192(ここで、192=6×32)すなわちブロック6に送信する。
【0065】
パーティション2の場合、システム領域203にはブロック2,048〜2,053が割り当てられ、データ領域204にはブロック番号2,054〜4,095が割り当てられている。
【0066】
図4Bには、行400に仮想ブロック番号を有し、行401には実ブロック番号を有するマッピングテーブル400Aの一例を示す。列402〜409の項目は一目瞭然であって、システム領域、使用中のデータ領域および空きデータ領域に対する仮想ブロック番号および実論理ブロック番号を備える。
【0067】
最初の段階(図2Aおよび図4A)では、仮想ブロック番号および実論理ブロック番号は同じであり連続的である。図4Bに示されるように、列402〜409の全項目は仮想ブロック番号および実論理ブロック番号の双方に対して同じである。
【0068】
図4Cには、更新されたマッピングテーブル400Bを示す。行400にはホストシステムの視点(図2C)を示し、行401には実論理メモリ空間の視点(図2D)を示す。
【0069】
行400と行401とにおいてパーティション1に対する(列410に示される)システム領域項目は同じである。列411は、パーティション1がいっぱいであり、すなわち、ブロック6〜2,047のすべてが使用中であることを示す。パーティション2は、(図4Bに3,001〜4,000として示される)幾つかの空きブロックを有し、これら空きブロックのうちの500個はパーティション1に割り当てられている。ホストは、パーティション1に対するこれら500個のブロックが、仮想ブロック番号に基づいて行400および列414に示された2,048〜2,547からのものであることを理解する。従って、ホストシステムの場合、パーティション1はブロック0からブロック2,547まで延長する。図2Dに示された実論理メモリ空間では、パーティション1に対する500個のブロックは(図4Cの行401および列414に示されるように)ブロック番号3,001〜3,500に位置付けられている。
【0070】
パーティション2に関して、ホストは、パーティション領域のシステム領域が連続的である、すなわち、(行400および列412に示されるように)2,548〜2,553からのものであることを理解し、実際には、システム領域は(行401および列412に示されるように)2,048〜2,053からのものである。
【0071】
パーティション2に用いられている空間のデータブロックは列413に示されている。この場合も、仮想ブロック番号は2,554〜3,500であるが、実際のブロック番号は(行401および列413に示されるように)2,054〜3,000からのものである。行400,401に対して列415,416の項目は同じである。
【0072】
前述した例により示されるように、ホストは、パーティション空間を再割り当てするためにデータをコピーすることはしない。マッピングテーブル400Aを用い更新することにより、未使用の空間は、いっぱいのメモリパーティションに再割り当てされる。
【0073】
前述した例(図4A〜4C)に基づいて、パーティション1に対するFATテーブルは変更されない。パーティション2の場合、FAT項目は、パーティション1に割り当てられた領域に合うように調整される。図2Dの例に関して、(204Cとして示された)パーティション2のデータ領域Bは、パーティション1に割り当てられたデータ領域により減少された項目を有する。例えば、新たなデータ領域202AにFATの項目が500個存在する場合、(204Cとして示された)パーティション2のデータ領域Bが(204Bとして示された)パーティション2のデータ領域Aよりも下位にあるならば、(204Cとして示された)パーティション2のデータ領域Bにある各ファイル名項目の開始クラスタは500だけ調整される。
【0074】
図4Dには、前述した例を表形式で示す。(図2Dの204Bとして示された)パーティション2のデータ領域Aは1,000個の項目を有する。領域202Aは500個の項目を有し、領域204Cは500個の項目を有する。
【0075】
一実施例では、フラッシュ装置150の各パーティションは、パーティションに利用できる特定の容量を有するためにホストに公開する。例えば、フラッシュ装置150が4GBである場合、各パーティションは2GBであることを公開する。従って、FAT領域がフラッシュ装置の空間全体に合うことができるように、各パーティションに利用できる充分なFAT領域を有するのが望ましい。この追加のFATテーブル空間はパーティションを増大させる。従って、メモリコントローラ150Aの下、FAT1領域207およびFAT2領域208は、フラッシュメモリ装置の容量全部のFAT項目を含む程度に充分に大きい。
【0076】
図4Eには、パーティションマップのホスト/ユーザの視点を示す列417と、実際のパーティションマップ/実パーティションマップを示す列418とを有するテーブルを示す。列418の下に示すように、実パーティションマップは、FAT領域の拡張のための予約済み領域207Aを含む。この領域は、FAT1およびFAT2内のFAT項目が記憶装置全体に合うことができるように充分に大きい。パーティション(例えば、前述した例では、パーティション1)が拡張すると、予約済み領域207Aは、拡張のために追加の空間を提供するのに用いられる。パーティション領域がメモリコントローラ150Aにより再割り当てされると、FAT領域は、パーティションの大きさの変化に合うように調整される。
【0077】
パーティション空間がメモリコントローラ150Aにより再割り当てされる場合、FAT項目/領域に加えて、ディレクトリ領域内のファイル名項目も調整される(図3のステップS310)。前述した例(図4A〜4C)に基づいて、パーティション1のファイル名項目は変更されない。パーティション2の場合、ファイル名項目の開始クラスタは、パーティション1に割り当てられた領域に合うように調整される。
【0078】
図2Dの例に関して、(204Cとして示された)パーティション2のデータ領域Bは、パーティション1に割り当てられたデータ領域だけ減少された項目を有する。例えば、新たなデータ領域202AにFATの項目が500個存在する場合、(204Cとして示された)パーティション2のデータ領域Bが(204Bとして示された)パーティション2のデータ領域Aよりも下位にあるならば、(204Cとして示された)パーティション2のデータ領域Bにある各ファイル名項目の開始クラスタは500だけ調整される。
【0079】
図4Fには、前述した例を表形式で示す。(図2Dの204Bとして示された)パーティション2のデータ領域Aは1,000個の項目を有する。領域202Aは500個の項目を有し、領域204Cは500個の項目を有する。
【0080】
新たなパーティション領域2(=n)がブロック1,000を超えて位置付けられている場合、新たなパーティション領域2(=n)の各ファイル名項目の開始クラスタは500だけ調整される。従って、n≧1000である場合、n’(調整されたファイル名項目)は、n−500に等しい。この調整は、領域204B,204C内の項目を含むすべての項目に対して実行される。ファイル名項目がディレクトリまたはサブディレクトリであることを示す場合、ディレクトリ(またはサブディレクトリ)項目も調整される。
【0081】
本発明の一態様では、多大な時間を必要とするつまらない動作ですべてのデータをコピーすることなしにパーティション領域はメモリ装置コントローラにより再割り当て/調整される。ホストシステムは、ドライブをコピー/再フォーマットしてパーティション記憶空間を再割り当てするために多大な時間を必要とする処理を実行する必要はない。
【0082】
特定の実施形態を参照して本発明を説明してきたが、これらの実施形態は一例にすぎず、本発明を限定するものではない。例えば、前述した例はフラッシュメモリ装置に基づくが、他の種類のメモリ装置、例えばハードディスクに同様に適用することができる。本願明細書と特許請求の範囲とを踏まえると、本発明の他の多くの用途および実施形態は明らかになるであろう。

【特許請求の範囲】
【請求項1】
大容量記憶装置であって、
システム領域およびデータ領域を有する第1のメモリパーティションとシステム領域およびデータ領域を有する第2のメモリパーティションとを含む不揮発性メモリであって、各システム領域がブートレコード、ファイルアロケーションテーブル(「FAT」)およびディレクトリを蓄積するように構成され、各データ領域がファイルを蓄積するように構成される、不揮発性メモリと、
前記不揮発性メモリへアクセスするために結合されたメモリコントローラであって、前記メモリコントローラは、論理インターフェイスを介して外部のホスト装置からデータを受信するようになっており、さらにマッピングテーブルを用いることにより前記第1のメモリパーティションの1つ以上のブロックを前記第2のメモリパーティションへ再割り当てするようになっており、前記第1のメモリパーティションから前記第2のメモリパーティションへ再割り当てされた1つ以上のブロックが外部のホスト装置にはあたかも連続しているように見え、前記第1のメモリパーティションおよび前記第2のメモリパーティションが有する各システム領域および各データ領域の論理ブロックアドレスと仮想ブロックアドレスとを前記マッピングテーブルが含む、メモリコントローラと、を備え、
前記第1のメモリパーティションが有するシステム領域の仮想ブロックアドレスは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てする前の前記第1のメモリパーティションが有するシステム領域の論理ブロックアドレスと同じものであり、
前記第1のメモリパーティションが有するデータ領域の仮想ブロックアドレスは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てする前の前記第1のメモリパーティションが有するデータ領域の論理ブロックアドレスと同じものであり、
前記第1のメモリパーティションが有するシステム領域の仮想ブロックアドレスと前記第1のメモリパーティションが有するシステム領域の論理ブロックアドレスとは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした後では互いに異なるものであり、
前記第1のメモリパーティションが有するデータ領域の仮想ブロックアドレスと前記第1のメモリパーティションが有するデータ領域の論理ブロックアドレスとは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした後では互いに異なるものである大容量記憶装置。
【請求項2】
請求項1記載の大容量記憶装置において、
前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした際に、前記第1のメモリパーティションのFATを蓄積する記憶空間が縮小され、また1つ以上のブロックを再割り当てした際に、前記第2のメモリパーティションのFATを蓄積する記憶空間が拡張される大容量記憶装置。
【請求項3】
請求項1記載の大容量記憶装置において、
前記第2のメモリパーティションがいっぱいであるかまたはしきい値に達した際に、前記メモリコントローラは、前記第1のメモリパーティションから前記第2のメモリパーティションへ記憶空間を再割り当てする大容量記憶装置。
【請求項4】
請求項1記載の大容量記憶装置において、
前記大容量記憶装置は、フラッシュメモリ装置である大容量記憶装置。
【請求項5】
請求項4記載の大容量記憶装置において、
前記フラッシュメモリ装置は、コンパクトフラッシュ(登録商標)カード、マルチメディアカード、セキュアデジタルカード、ミニSDカード、メモリスティックカード、トランスフラッシュカードのうちの1つを含む大容量記憶装置。
【請求項6】
請求項1記載の大容量記憶装置において、
前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした際に、前記第1のメモリパーティション内のディレクトリのファイル名項目は調整される大容量記憶装置。
【請求項7】
方法であって、
メモリコントローラと不揮発性メモリとを備える大容量記憶装置であって、前記不揮発性メモリがシステム領域およびデータ領域を有する第1のメモリパーティションとシステム領域およびデータ領域を有する第2のメモリパーティションとを含み、各システム領域がブートレコード、ファイルアロケーションテーブル(「FAT」)およびディレクトリを蓄積するように構成され、各データ領域がファイルを蓄積するように構成される大容量記憶装置にて、前記メモリコントーラによって、
前記大容量記憶装置が論理インターフェイスを介して外部のホスト装置へ接続された際に、論理インターフェイスを介して外部のホスト装置からデータを受信し、かつ
マッピングテーブルを用いることにより前記第1のメモリパーティションの1つ以上のブロックを前記第2のメモリパーティションへ再割り当てし、前記第1のメモリパーティションから前記第2のメモリパーティションへ再割り当てされた1つ以上のブロックが外部のホスト装置にはあたかも連続しているように見え、前記第1のメモリパーティションおよび前記第2のメモリパーティションが有する各システム領域および各データ領域の論理ブロックアドレスと仮想ブロックアドレスとを前記マッピングテーブルが含むことが実行され、
前記第1のメモリパーティションが有するシステム領域の仮想ブロックアドレスは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てする前の前記第1のメモリパーティションが有するシステム領域の論理ブロックアドレスと同じものであり、
前記第1のメモリパーティションが有するデータ領域の仮想ブロックアドレスは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てする前の前記第1のメモリパーティションが有するデータ領域の論理ブロックアドレスと同じものであり、
前記第1のメモリパーティションが有するシステム領域の仮想ブロックアドレスと前記第1のメモリパーティションが有するシステム領域の論理ブロックアドレスとは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした後では互いに異なるものであり、
前記第1のメモリパーティションが有するデータ領域の仮想ブロックアドレスと前記第1のメモリパーティションが有するデータ領域の論理ブロックアドレスとは、前記第1のメモリパーティションから前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした後では互いに異なるものである方法。
【請求項8】
請求項7記載の方法において、
前記第2のメモリパーティションへ1つ以上のブロックを再割り当てした際に、前記第1のメモリパーティションのFATを蓄積する記憶空間が縮小され、また1つ以上のブロックを再割り当てした際に、前記第2のメモリパーティションのFATを蓄積する記憶空間が拡張される方法。
【請求項9】
請求項7記載の方法において、
前記第2のメモリパーティションがいっぱいであるかまたはしきい値に達した際に、前記第1のメモリパーティションから前記第2のメモリパーティションへ記憶空間を再割り当てする方法。
【請求項10】
請求項7記載の方法において、
前記大容量記憶装置は、フラッシュメモリ装置である方法。
【請求項11】
請求項10記載の方法において、
前記フラッシュメモリ装置は、コンパクトフラッシュ(登録商標)カード、マルチメディアカード、セキュアデジタルカード、ミニSDカード、メモリスティックカード、トランスフラッシュカードのうちの1つを含む方法。
【請求項12】
請求項7記載の方法において、
前記第1のメモリパーティションが記憶素子の複数のブロック内に配置された不揮発性記憶素子の第1のセットを含み、前記第2のメモリパーティションが記憶素子の複数のブロック内に配置された不揮発性記憶素子の第2のセットを含む方法。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図1D】
image rotate

【図1E】
image rotate

【図1F】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図2C】
image rotate

【図2D】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図4E】
image rotate

【図4F】
image rotate


【公開番号】特開2013−12212(P2013−12212A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2012−176609(P2012−176609)
【出願日】平成24年8月9日(2012.8.9)
【分割の表示】特願2008−519586(P2008−519586)の分割
【原出願日】平成18年6月28日(2006.6.28)
【出願人】(506197901)サンディスク コーポレイション (175)