(57)【要約】メモリデバイスは、ホスト（１２）とコントローラ（１４）を備える。コントローラ（１４）は、セクタ（３４，３６）に組織化された情報の不揮発性メモリユニット（１６）からの読み出しおよび書き込みを制御する。コントローラ（１４）は、揮発性メモリ内に格納されたＬＵＴにおけるセクタ情報のマッピングを保持する。各不揮発性メモリユニット（１６）の各ブロック内部に保持されるアドレス値およびフラグ情報の使用によって、ブロックは本発明の様々な代替的な実施形態における異なる数の書き込み動作を用いることによって再書き込みされる。フラグ情報はブロックの状態を示すため、電源投入の間コントローラ（１４）は、ブロックのアドレス値およびフラグ情報を読み出し、ブロックの状態を判定し、それに従ってブロックの再書き込みを終了し、必要ならばＬＵＴをそれに応じて更新する。
2005516264.tif 000002
【特許請求の範囲】
【請求項１】
ホストおよび不揮発性メモリユニットと共に使用する固体格納システムであって、該ホストはセクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、１以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも１つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
該ホストによって識別される特定の群のセクタ情報を再書き込みするために、該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ情報は、該不揮発性メモリユニットの以前に書き込まれたブロック内部に含まれ、該コントローラデバイスは、空きブロックを識別し、少なくとも２つのセクタ格納空間、すなわち第１のセクタ格納空間および第２のセクタ格納空間を含むように該空きブロックを構成し、
該第１のセクタ格納空間は、データ格納フィールドおよびオーバヘッド格納フィールドを含み、該第１のオーバヘッド格納フィールドは、該空きブロックを識別するアドレス値を格納するためのアドレスフィールドを含み、該第２のセクタ格納空間は、データ格納フィールドおよびオーバヘッド格納フィールドを含み、該第２のオーバヘッド格納フィールドは、該空きブロックの状態を示すフラグフィールドを含み、該コントローラデバイスは、該第１のセクタ格納空間上で書き込み動作を実行して該データ格納フィールドにデータを書き込み、該アドレスフィールドにアドレス値を書き込み、該コントローラデバイスは、さらなる書き込み動作を実行して該特定の群のセクタ情報を書き込み、またさらなる書き込み動作を実行して該以前に書き込まれたブロックから空きブロック内の同じセクタの格納空間にセクタ情報を移動し、セクタ情報を該第２の格納空間に書き込む場合、該コントローラは、該フラグフィールドの内容を修正して、該空きブロックへの書き込みの終了を示す、コントローラデバイスを備え、
ブロックの再書き込みの間、書き込み動作の数がブロック内のセクタ格納空間の数以下であり、それにより該システムの全性能を増大する、固体格納システム。
【請求項２】
前記アドレス値は、前記コントロールデバイスによる使用のための前記空きブロックを識別する仮想論理ブロック値（ＶＬＢＡ）である、請求項１に記載の固体格納システム。
【請求項３】
前記空きブロックへの書き込みの終了は、該空きブロックの状態を「ブロック終了」として示すバイナリ値によって示される、請求項１に記載の固体格納システム。
【請求項４】
前記コントローラデバイスは、ホストによって提供されたセクタアドレス間のマッピング情報を格納するためのルックアップテーブル（ＬＵＴ）と前記不揮発性メモリユニット内部のブロックとを含み、対応するセクタ格納領域が位置付けられる、請求項１に記載の固体格納システム。
【請求項５】
電源投入の間、前記コントローラデバイスは、前記アドレスフィールドおよび前記フラグフィールドの内容を読み出し、該フラグフィールドの内容に従って、情報が該フラグフィールドにプログラミングされたかった場合、該コントローラは、前記アドレスフィールドの内容を用いてセクタが転送される元の前記ブロックを判定し、該セクタの前記空きブロックへの転送を終了し、前記ルックアップテーブルを修正して前記アドレス値と該空きブロックとの間の現在の対応を反映する、請求項４に記載の固体格納システム。
【請求項６】
前記第１のセクタ格納空間は、前記空きブロックの最初のセクタ格納空間である、請求項１に記載の固体格納システム。
【請求項７】
前記第２のセクタ格納空間は、前記空きブロックの最後のセクタ格納空間である、請求項１に記載の固体格納システム。
【請求項８】
ホストおよび不揮発性メモリユニットと共に使用する固体格納システムであって、該ホストは、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、１以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも１つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
該ホストによって識別される特定の群のセクタ格納空間にセクタ情報を再書き込みするために、該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ格納空間は、該ホストによって以前に該セクタ格納空間に書き込まれ、該コンとローラデバイスは、複数のセクタ格納空間を有する空きブロックを識別し、該セクタ格納空間の１つを構成し、該空きブロックの状態を示す状態フラグ値を格納するための状態フラグフィールドを含み、該コントローラデバイスは、該状態フラグ値を変更して該空きブロックが「使用中」であることを示し、該特定の群のセクタ情報をセクタ格納空間の１つに書き込み、該状態フラグ値をさらに変更して該空きブロックが「処理中」であることを示し、セクタ情報を該特定の群のセクタ格納空間の残りに書き込み、書き込み動作を実行して該空きブロックに再書き込みされていない以前に書き込まれたセクタ格納空間の該内容を転送し、該状態フラグ値をさらに変更して該空きブロックが「ブロック完了」であることを示す、コントローラデバイスを備え、
ブロックを再書き込みするための書き込み動作の数は、３つのさらなる書き込み動作を加えたブロック内部の該セクタ格納空間の数に低減され、それにより該システムの全性能を増大する、システム。
【請求項９】
前記状態フラグフィールドは、前記空きブロックの最後のセクタ格納空間内部に存在する、請求項８に記載の固体格納システム。
【請求項１０】
前記コントローラデバイスは、前記以前に書き込まれたセクタ格納空間を消去するための手段を含む、請求項８に記載の固体格納システム。
【請求項１１】
前記空きブロックは、前記不揮発性メモリユニット内部の該空きブロックを識別するアドレス情報を格納するためのアドレスフィールドをさらに含む、請求項８に記載の固体格納システム。
【請求項１２】
前記空きブロックは、該空きブロックが欠陥があるか否かを示すフラグフィールドをさらに含む、請求項８に記載の固体格納システム。
【請求項１３】
不揮発性メモリ内の情報のブロックを再書き込みするための固体格納システムにおいて実行される書き込み動作の数を低減する方法であって、該固体格納システムは、該コントローラデバイスの制御下において、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、かつ該不揮発性メモリユニットに書き込むためのホストを含み、該不揮発性メモリユニットは、１以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、該セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも１つのブロックを含み、各セクタ格納空間は、データおよびオーバーヘッド情報を格納するための格納空間を含み、該方法は、
特定の群のセクタ情報を識別する工程であって、該ホストと該不揮発性メモリユニットとの間に結合されたコントローラデバイスは、特定の群のセクタ情報を再書き込みし、該特定の群のセクタ情報は、該不揮発性メモリユニットの以前に書き込まれたブロック内部に含まれる、工程と、
該特定の群のセクタ情報の格納のための該不揮発性メモリユニット内部の空きブロックを識別する工程と、
少なくとも２つのセクタ格納空間、すなわち第１のセクタ格納空間および第２のセクタ格納空間を含む該空きブロックを構成する工程であって、該第１のセクタ格納空間はデータ格納フィールドおよびオーバーヘッド格納フィールドを含み、該第１のオーバーヘッド格納フィールドは、該空きブロックを識別するアドレス値を格納するアドレスフィールドを有し、該第２のセクタ格納空間はデータ格納フィールドおよびオーバーヘッド格納フィールドを含み、該第２のオーバヘッド格納フィールドは、該空きブロックの状態を示す状態フラグフィールドを有する、工程と、
該第１のセクタ格納空間上で書き込み動作を実行する工程であって、データが該データ格納フィールドに書き込まれ、該アドレス値が該アドレスフィールドに書き込まれる、工程と、
さらなる書き込み動作を実行する工程であって、該特定の群のセクタ情報が該空きブロックに書き込まれる、工程と、
なおさらなる書き込み動作を実行する工程であって、セクタ情報は、該以前に書き込まれたブロックのセクタ格納空間から該空きブロック内部の同じセクタ格納空間に移動する、工程と、
該空きブロックの該第２の格納空間にセクタ情報を書き込む際に、該状態フラグフィールドの内容を変更して、該空きブロックへの書き込みの完了を示す、工程と
を含む、方法。
【請求項１４】
ホストおよび不揮発性メモリユニットと共に使用される固体格納システムであって、該ホストは、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、かつ該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、１以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、該セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも１つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
該ホストによって識別される特定の群のセクタ格納空間にセクタ情報を再書き込みするために該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ格納空間は、該ホストによって以前に書き込まれており、該コントローラデバイスは、複数のセクタ格納空間を有する空きブロックを識別し、該空きブロックの状態を示す状態フラグ値を格納するための状態フラグフィールドを含むように該セクタ格納空間の１つを構成し、該コントローラデバイスは、以前に書き込まれたセクタ格納空間の該内容を該空きブロック内部の同じセクタの格納空間に転送し、該状態フラグ値を変更して該空きブロックの状態が「処理中」であることを示し、該空きブロック内部の該特定の群のセクタ格納空間にセクタ情報を書き込み、該特定のセクタ格納空間の最後の１つを書き込む間、該状態フラグフィールドを変更して該空きブロックの状態が「ブロック完了」であることを示す、コントローラデバイスを備え、
ブロックを再書き込みするための書き込み動作の数は、１つの追加的な書き込み動作を加えたブロック内部のセクタ格納空間の数まで減少され、それによって該システムの全性能が増大する、固体格納システム。
【請求項１５】
前記状態フラグフィールドは、前記空きブロックの最後のセクタ格納空間内部に存在する、請求項１４に記載の固体格納システム。
【請求項１６】
前記コントローラデバイスが前記以前に書き込まれたセクタ格納空間を消去する手段を含む、請求項１４に記載の固体格納システム。
【請求項１７】
前記空きブロックは、前記不揮発性メモリユニット内部の該空きブロックを識別するアドレス情報を格納するためのアドレスフィールドをさらに含む、請求項１４に記載の固体格納システム。
【請求項１８】
前記空きブロックは、該空きブロックが欠陥があるか否かを示すフラグフィールドをさらに含む、請求項１４に記載の固体格納システム。
【発明の詳細な説明】
【０００１】
（発明の背景）
（関連出願の相互参照）
本願は、以前に出願された特許出願、すなわち「ＳＰＡＣＥ  ＭＡＮＡＧＥＭＥＮＴ  ＦＯＲ  ＭＡＮＡＧＩＮＧ  ＨＩＧＨ  ＣＡＰＡＣＩＴＹ  ＮＯＮＶＯＬＡＴＩＬＥ  ＭＥＭＯＲＹ」と題された１９９９年４月１日に出願された特許出願第０９／２８３，７２８号であり、発明者は、Ｐｅｔｒｏ  Ｅｓｔａｋｈｒｉ，  Ｂｅｒｈａｎｕ  Ｉｍａｎ、およびＭｉｎ  Ｇｕｏと、別の以前に出願された出願「ＭＯＶＩＮＧ  ＳＥＣＴＯＲＳ  ＷＩＴＨＩＮ  Ａ  ＢＬＯＣＫ  ＯＦ  ＩＮＦＯＲＭＡＴＩＯＮ  ＩＮ  Ａ  ＦＬＡＳＨ  ＭＥＭＯＲＹ  ＭＡＳＳ  ＳＴＯＲＡＧＥ  ＡＲＣＨＩＴＥＣＴＵＲＥ」と題された１９９９年３月８日に出願された特許出願第０９／２６４，３４０号であり、発明者は、Ｐｅｔｏｒｏ  Ｅｓｔａｋｈｒｉ、Ｂｅｒｈａｎｕ  ＩｍａｎおよびＡｌｉ  Ｇａｎｊｕｅｉ、（これは「ＭＯＶＩＮＧ  ＳＥＣＴＯＲＳ  ＷＩＴＨＩＮ  Ａ  ＢＬＯＣＫ  ＯＦ  ＩＮＦＯＲＭＡＴＩＯＮ  ＩＮ  Ａ  ＦＬＡＳＨ  ＭＥＭＯＲＹ  ＭＡＳＳ  ＳＴＯＲＡＧＥ  ＡＲＣＨＩＴＥＣＴＵＲＥ」と題された米国特許第５，９０７，８５６号の継続出願）との一部継続出願である。これら特許書類の両方の開示を全体的に記載されたかのように本明細書で参考として援用する。
【０００２】
（発明の分野）
本発明は不揮発性メモリを利用するデジタルシステムの分野に関し、特に、コンピュータ、デジタルカメラ等の大容量記憶装置としてのフラッシュメモリに関する。
【０００３】
（従来技術の説明）
近年、固体メモリは、コンピュータ、デジタルカメラ、モデムなど様々な技術領域において大容量記憶ユニットを配置することに使用する際に人気を得ている。例えば、デジタルカメラでは、固体メモリ（例えば、フラッシュメモリ、）の使用は、従来の薄膜メモリを代替する。
【０００４】
概してフラッシュメモリは、各デバイスが多数のトランジスタメモリセルから形成され、各セルが個別にプログラム可能な半導体デバイス（またはチップ）の形態で供給される。このようなメモリセルのプログラミング（または書き込み）および消去は、有限数の消去−書き込みサイクルに限定され、本質的にデバイスの寿命を決定する。さらに、フラッシュメモリセルの固有の特性は、フラッシュメモリセルが消去され、プログラミングされる前に消去が成功したことを確認しなければならない点である。
【０００５】
しかし、フラッシュメモリの使用について、情報を含むメモリの領域は、再プログラミングされる前にまず一旦消去されなければならない。概してフラッシュメモリデバイスでは、書き込みおよび消去サイクルが遅く、大容量記憶装置のようなフラッシュメモリを利用するシステム性能を著しく低減し得る。
【０００６】
フラッシュメモリデバイス（例えば、パーソナルコンピュータおよびデジタルカメラ）を利用する用途において、ホストは、コントローラデバイスを介するフラッシュメモリデバイスに情報を書き込みかつ読み込む。これは、通常の半導体デバイスの形態である。このような情報は、各セクタがユーザデータ情報およびオーバーヘッド情報を含む各セクタを有するセクタで組織化される。セクタのユーザデータ部分は、典型的には長さ５１２バイトであるが、他のサイズのセクタ同様に使用され得る。ホストからセクタ情報を受信する際、ホストコマンド書き込み動作の間、コントローラは、所定のセクタ組織化に従って、フラッシュメモリデバイスに情報を書き込む。ホストが複数のセクタにアクセスされている間、その時点で、各セクタは一度にフラッシュデバイスに書き込まれ得る。
【０００７】
現在では、市販のソフトウェアおよびユーザプログラム等の大きなファイルがフラッシュメモリ内部に格納されたコンピュータ、ならびに大きな画像ファイルがフラッシュデバイス内部に格納されたデジタルカメラにおいて、ファイルはフラッシュ内部で一度に１つのセクタに書き込まれる。各書き込み動作に関連する待ち時間のために、多量の情報が格納される場合、これらのシステムの性能は限定される。
【０００８】
データファイル（データファイルは、市販のソフトウェア、ユーザプログラム、ワードプロセッサソフトウェア文書、拡張シートファイル等）を格納および／または取り出す場合、ホストはデータファイルが大容量記憶装置内部に存在することを信じる領域を示す論理ブロックアドレスとして参照することをコンピュータ（またはホスト）システムが提供する。ホストに提供されたアドレスは、円筒形の、ヘッドおよびセクタ（ＣＨＳ）の形態で存在し得、コントローラが受け取った際、論理ブロックアドレスフォーマットに変換される。同じことはデジタルカメラ用途に適用される。次いでコントローラは、論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換し後者をフラッシュメモリ内部のデータファイルにアクセスするために用いる。データファイルが変化するたびにファイルの最新のバージョンが新しい物理領域（または新しいＰＢＡ）によって識別されるフラッシュメモリ内部の有効な（または「未使用の」）領域に格納される。フラッシュメモリ内部で更新されたファイルのための多くの空き領域または有効な領域を用いる際、消去動作は、追加的情報の格納のために有効な「古い」領域を形成する必要があり得る。消去動作は、時間を消費する（書き込み動作に対して）ために、次の消去動作の前にさらに多くの領域が使用されること、およびフラッシュメモリ内部の空き領域を検索するために消費される時間まで消去動作を実行する頻度に対して、トレードオフが存在する。
【０００９】
様々な異なるアルゴリズムが利用されて、消去動作がいつ発生するか、およびアルゴリズムの関数として、フラッシュメモリ（大容量記憶装置）内部で次の有効な空きブロックがデータファイルを格納するためにどこに位置付けられるかを決定する。コントローラデバイスの空間マネージャユニットは、この関数を実行する。
【００１０】
不揮発性メモリまたはフラッシュメモリにおける情報は、コントローラの方向に格納され、その情報はセクタの形態でそのようになされ、そしてセクタの数はブロックを規定する。１つのブロックは、１６、３２または他の数のセクタを含み得る。しかし、一旦ブロックが所定数のセクタを含むことを決定すると、この決定されたサイズは各ブロックを規定する。従って、不揮発性メモリに格納される情報は、ブロックに組織化され、各ブロックは独自にコントローラによってアドレス可能である。各ブロックは、複数のセクタをさらに含み、各セクタは、５１２バイトと、フラグ、アドレス、およびエラー訂正コード（ＥＣＣ）情報等の非データ情報を格納するための追加的格納空間によって規定される。セクタは、５１２バイト以外のデータ格納空間を有し得るが、いくつかの従来技術のシステムでは、消去動作の間、全体のブロックが消去されるが、他の従来技術のシステムではセクタが消去され得る。ブロック内部の各セクタは、不揮発性メモリから情報を読み出し、不揮発性メモリに情報を書き込むために独自にアドレス可能である。独自の値は、電源投入の間、不揮発性メモリと関連付けられた情報のアドレシングまたはマッピングを再構築する際に使用するための仮想論理ブロックアドレス（ＶＬＢＡ）としてセクタ情報を含む各ブロック内部に維持される。このマッピング情報は、ここでさらに説明されるように、不揮発性メモリ内で維持されるルックアップテーブルの内容である。
【００１１】
コントローラデバイスの空間マネージャユニットは、「古い」（変更された情報）およびまだ消去されていないおよび／または「欠陥のある」（領域は、いくつかの種類の欠陥によって情報を格納するために用いることができない）または「使用された」（現在最新の情報を含む）と考えられている情報の領域に加えて、フラッシュメモリ内部の最新のデータの領域に関連する情報のテーブルを維持する。情報のこのテーブルは、コントローラデバイスの外部または内部のいずれかで、ＲＡＭのような揮発性メモリ領域において格納されかつ更新される。ホストによって情報がアクセスされるたびに、空間マネージャテーブルを用いて、フラッシュメモリデバイスに書き込まれおよび／またはフラッシュメモリデバイスから読み出される情報の領域を見出す。
【００１２】
不揮発性メモリデバイスを用いる従来技術の方法および装置についての問題は、例えば、特定の不揮発性メモリデバイス内部の情報ブロックが書き込まれた場合、その動作に関連する多くの書き込み動作が存在することである。現在、例えば、１６のセクタを含むブロックを書き込むためには、実行される少なくとも２０の書き込み動作が存在し、１６の動作はセクタを書き込み、４よりも大きい動作は、非セクタ情報を書き込む。これは、概して不揮発性メモリ上で実行される書き込み動作が時間を消費し、ブロックがアクセスされるたびにブロックが不揮発性メモリ内部の異なる位置に移動する必要があるためにシステム性能に実質的に影響を与え、ブロックの書き込みを要求する。ブロックが再度繰り返してアクセスされる場合、発生するブロックの書き込みを要求する多くの移動動作が存在する。
【００１３】
従って、ブロックが複数のセクタを含む不揮発性メモリのブロックへの書き込みことを効率的に実行する方法および装置に対して必要性が生じる。
【００１４】
（発明の要旨）
簡単に、本発明の好適な実施形態は、ホストによって以前に書き込まれた情報のブロックを再書き込みする場合、書き込み動作の数を低減するための固体格納装置システムおよび方法を含む。システムは、ホストによって命令される場合、不揮発性メモリユニットからセクタ内で組織化された情報を読み出し、かつ不揮発性メモリユニットにセクタ内で組織化された情報を書き込みを制御するためのホストおよび不揮発性メモリユニットに結合されたコントローラを含む。コントローラは、電力が失われた場合に揮発性メモリの内容が失われる揮発性メモリ内に格納されるＬＵＴにおけるセクタ情報のマッピングを維持する。不揮発性メモリユニットの各ブロック内に維持されるアドレス値およびフラグ情報の使用によって、本発明の様々な例示的な実施形態における異なる数の書き込み動作を用いてブロックが再書き込みされる。フラグ情報はブロックの状態を示すため、電源投入の間、コントローラは、ブロックのアドレス値およびフラグ情報を読み出し、ブロックの状態を判定し、それに従ってブロックの再書き込みを終了し、従って必要であればＬＵＴを更新する。
【００１５】
本発明の上述および他の目的、特徴、利点は、いくつかの図面を参照することによって好適な実施形態の以下の詳細な説明から明らかになる。
【００１６】
（好適な実施形態の詳細な説明）
図１を参照して、コンピュータ（パーソナルコンピュータ（ＰＣ））、デジタルカメラ等の一部であり得るデジタルシステム１０は、ホスト１２、コントローラデバイス１４、および不揮発性メモリユニット１６を含む、本発明の実施形態に従って示される。ホスト１２は、コントローラデバイス１４の指示のもとメモリユニット１６から情報を読み出し、メモリユニット１６に情報を書き込むように結合されることを示す。上述のように、メモリユニット１６は、本発明による少なくとも２つの不揮発性メモリデバイスから構成され、各不揮発性メモリデバイスは、集積回路（または通常、当該産業によって呼ばれる半導体デバイス）である。不揮発性メモリデバイスは、フラッシュ、ＥＥＰＲＯＭ（電気的消去可能プログラム可能読み出し専用メモリ）または固体メモリの他のタイプであり得る。
【００１７】
ホスト１２は、ホストバス１８を介してコンローラ１４と通信し、コントローラデバイス１４は、メモリ信号２０を介してメモリユニット１６に結合することが示される。
【００１８】
コントローラデバイス１４は、ホストインターフェース回路２２、マイクロプロセッサ回路２４、揮発性格納ユニット２６、および空間マネージャ／フラッシュインターフェース回路２８を含むことが示される集積回路（または半導体回路）である。ホストインターフェース回路２２は、ホストバス１８を介してホスト１２に結合し、ホストバス１８は、アドレスバス、双方向データバス、および制御信号（個別に図示しない）を含む。利用されるホストのアーキテクチャに依存して、ホストアドレスバスおよびデータバスは、同一のバスにバスアドレス信号およびデータ信号を多重送信することによって、アドレス情報およびデータ情報の両方を搬送する信号バスから構成され得る。本明細書中で使用されれる用語バスは、複数の電気導電体または信号線を含むことを留意すべきである。ホストバス１８は、ＰＣＭＣＩＡインターフェース、ＡＴＡインターフェースまたは当該産業で利用される他の種類のインターフェースであり得る。
【００１９】
ホストインターフェース回路２２は、ホストバス１８に結合されるように示され、マイクロプロセッサバス３０を介してマイクロプロセッサ回路２４に接続されるようにさらに示される。マイクロプロセッサ回路２４は、マイクロプロセッサバス３０を介して空間マネージャ／フラッシュインターフェース回路２８にさらに接続される。マイクロプロセッサバス３０は、マイクロプロセッサ回路２４と空間マネージャ／フラッシュインターフェース回路２８との間のアドレス情報およびデータ情報と制御信号の通信を容易にする。マイクロプロセッサ回路２４は、揮発性格納バス３２を介して揮発性格納ユニット２６に情報を読み出し、かつ揮発性格納ユニット２６に書き込むように結合される。
【００２０】
本発明の１実施形態では、マイクロプロセッサ回路２４は、Ｉｎｔｅｌ（登録商標）８０５１プロセッサであり、あるいはマイクロプロセッサユニット２４は、任意の汎用プロセッサユニットであり得る。概して揮発性格納ユニット２６は、マイクロプロセッサ回路２４によって実行されるファームウェアコードを格納するための読み出しアクセスメモリ（ＲＡＭ）である。ホスト１２とコントローラ１４との間の情報は、ホストバス１８を介して転送され、コントローラ１４とメモリユニット１６との間の情報は、メモリ信号２０を介して結合される。メモリユニット１６は、２以上の不揮発性メモリデバイス（３４および３６等）から構成される。不揮発性メモリデバイス３４および３６のそれぞれのサイズは、デジタルシステム１０の用途に依存して変更され得る。それでもなお、このサイズは、概して各バイトが８ビットであるバイト別に参照される。例えば、１つの用途において、不揮発性メモリユニット１６のサイズは、３２ＭＢである各フラッシュメモリデバイスまたは不揮発性メモリデバイスを加えて１６０ＭＢ（メガバイト）である。別の用途では、不揮発性メモリユニット１６のサイズは、各フラッシュメモリデバイスが１８ＭＢを有する８０ＭＢである。不揮発性メモリデバイス３４および３６は、パワーダウンの間、メモリの内容を保持するタイプのメモリである。不揮発性メモリデバイスの典型的な例は、Ｔｏｓｈｉｂａ，Ｈｉｔａｃｈｉ等の会社によって製造される浮動ゲートセルから構成されるフラッシュまたはＥＥＰＲＯＭデバイスである。
【００２１】
図１には示されていないが、空間マネージャ／フラッシュインターフェース回路２８は、空間マネージャ制御ユニット３８、フラッシュインターフェース回路４０、および空間マネージャ格納ユニット４２を含む。本発明の１実施形態における空間マネージャユニット３８は、空間マネージャ格納ユニット４２内部に保持されたルックアップテーブル（ＬＵＴ）に格納された情報を制御する状態マシンから構成される。あるいは、空間マネージャ制御ユニット３８の機能は，当業者に理解されるようなハードウェアおよび／またはソフトウェアの他のタイプによって実行され得る。空間マネージャ制御ユニット４２は、ＬＵＴ内部のブロックアドレシング情報およびステータス情報を格納するためのＲＡＭ等の揮発性のメモリのタイプからなる。
【００２２】
やはり図１には示されていないが、メモリ信号２０は、フラッシュアドレスバス、双方向フラッシュデータバス、およびフラッシュ制御信号を含む。これらの信号のいくつかは、本明細書に含まれる他の図面に関してさらに説明される。
【００２３】
動作において、ホスト１２は、時々メモリユニット１６にアクセスしたり、メモリユニット１６への読み出しおよびメモリユニット１６への書き込み動作のような様々な動作の実行の間、メモリユニット１６にアクセスする。そうする際に、ホスト１２は、データの読み出しまたは書き込みのため領域を識別するアドレスを提供する。ホストが提供されたアドレスは、情報をメモリユニット１６にアクセスする場合、または情報をメモリユニット１６から読み出す場合、コントローラ１４によって用いるためにホストバス１８に結合する。１実施形態において、ホストが提供したアドレスは、ＣＨＳ（シリンダー、ヘッドおよびセクタ）の形態で存在する。このタイプのアドレシングは、ハードディスクを用いるシステムから適用され、このようなアドレシング方式を用いて、ディスク上の特定の領域を識別する。しかし、情報の格納のための不揮発性メモリの出現によって、ＣＨＳアドレスフォーマットは、不揮発性メモリユニット内部の領域を識別するための値に変換される必要がある。従って、ＣＨＳアドレスがホストバス１８に結合される場合、コントローラ１４は、ＣＨＳアドレスフォーマットを論理ブロックアドレス（ＬＢＡ）に変換する。次いでＬＢＡは、空間マネージャ／フラッシュインターフェースユニット２８が用いるためのマイクロプロセッサバス３０を介して結合される。あるいは、ホスト１２は、ＬＢＡ型のアドレスをコントローラ１４に提供する。この場合、変換がなおも実行されるが、この変換はＣＨＳ／ＬＢＡ変換ではない。前者の変換（すなわち、ＣＨＳ／ＬＢＡが用いられる場合）もまた実行され、後者の変換は、単にＬＢＡを置換するだけである。読者は、本明細書中で上記にて議論したようにブロックが、１６、３２または他の数のセクタ等の所定数のセクタを含むように規定されることを留意する。
【００２４】
ＬＢＡ計算は、ハードウェアまたはファームウェアによって実行され得る。ファームウェアが用いられてＬＢＡを計算する場合、マイクロプロセッサ２４は、揮発性格納ユニット２６において格納されるファームウェアコードの実行によってこのような関数を実行する。ハードウェアが用いられてＬＢＡを計算する場合、状態マシンブロック（図１に示されていない）がこのような計算を実行する。
【００２５】
上記の式によるＬＢＡの計算後、ＬＢＡは、ＬＢＡの所定の最下位ビットをマスキングすることによってＶＬＢＡ（仮想論理ブロックアドレス）値に変換される。例えば、ブロック当たり１６セクタを用いる場合、ＶＬＢＡは、６進数値０ｘ３ＦＦＦＦ０を有するＬＢＡの論理「ＡＮＤ」によるＬＢＡから計算される。これにより本質的には、ＬＢＡはＬＢＡの４つの最下位ビットを除いて保存されることになる。ブロック当たり３２セクタを使用する場合、ＶＬＢＡは６進数値０ｘ３ＦＦＦＥ０を有するＬＢＡ値の論理「ＡＮＤ」によって計算され、ＬＢＡの５つの最下位ビットを効率的にマスキング除去し、残りのビットを保存する等である。ＬＢＡのＶＬＢＡへの変換は、空間マネージャー／フラッシュインターフェース２８によって実行される。この変換は、ハードウェアまたはソフトウェアのいずれかで実行され得る。
【００２６】
図１において、ＶＬＢＡは、マイクロプロセッサ２４から空間マネージャ／フラッシュインターフェース回路２８の空間マネージャ制御ユニット３８までマイクロプロセッサバス３０に結合され、ＶＬＢＡは、空間マネージャー格納ユニット４２のＬＵＴ（ルックアップテーブル）にアドレスするために用いられる。実際に、ＶＬＢＡは、ＶＰＢＡ（仮想物理ブロックアドレス）が取り出されるＬＵＴの特定の領域をアドレスするために使用される。特定のＬＢＡ値は、様々なＰＢＡ値を示すために用いられ得ることを留意すべきである。例えば、ホストが特定のＬＢＡ値によって識別される領域に書き込むことを望む場合、特定のＬＢＡ値は、ＬＵＴ内のＶＰＢＡ値を参照するために用いられる。このＶＰＢＡ値は、例えば「２０」であるが、次に、ホストが同一のＬＢＡ識別領域に書き込むことを望む場合には、ＬＵＴから取り出されるＶＰＢＡ値は、「２０」ではなく「２００」であり得る。これが為される方法は、ＬＵＴ内部でも保存される所定のフラグ情報の使用による。簡単には、消去動作の後に初めて特定のＬＢＡ領域が、そこに書き込むためのホストによってアドレスされ、情報が書き込まれ、そして特定のＬＢＡに対応するＬＵＴ内のフラグフィールド「使用された」としてマーキングされるため、次回ホストは消去動作の前に同一の領域への書き込みを望む場合に、メモリユニット１６内部の異なる領域は、このような書き込みのための異なるＰＢＡによって識別される。従ってＬＢＡとＰＢＡとの間の１対１対応は存在しない。フラグフィールドおよびＬＢＡおよびＰＢＡ  ＬＵＴアドレシングのさらなる説明について、読者は、「Ｍｏｖｉｎｇ  Ｓｅｃｔｏｒｓ  Ｗｉｔｈｉｎ  ａ  Ｂｌｏｃｋ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  ｉｎ  ａ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された１９９７年３月３１日に出願された米国出願を参照されたい。この出願の発明者は、Ｐｅｔｒｏ  Ｅｓｔａｋｈｒｉ，Ｂｅｒｈａｎｕ  Ｉｍａｎ，およびＡｌｉ  Ｒ．Ｇａｎｊｕｅｉであり、この開示があたかも完全に記載されたものとして本明細書中で参考として援用する。
【００２７】
ＰＣ用途では、情報のブロックは、典型的には、従来のハードディスクドライブにおいて使用されるようなセクタであり、各セクタは、典型的には５１２バイトのデータのための空間およびオーバーヘッド情報のための追加的な空間を含むが、他のサイズのセクタが同様に使用され得る。
【００２８】
マイクロプロセッサ２４は、マイクロプロセッサ２４の内部または外部のいずれかに位置付けられる揮発性メモリユニット２６（ＲＯＭ（読み出し専用メモリ）またはＲＡＭ（読み出しおよび書き込みメモリ）等）からプログラムコードの形態で命令を実行する。マイクロプロセッサ２４は、空間マネージャ制御ユニット３８に、ホストによって提供されたＣＨＳ値によって発生するＬＢＡを使用して、メモリユニット１６内部で利用可能な次の未使用の（または空き）アドレス可能格納ブロック領域を見付けるように命令する。ホスト書き込み動作時に、この未使用ブロック領域はＬＵＴに格納され、ホスト読み出し動作間で、この未使用ブロック領域はＬＵＴから読み出される。ＬＵＴ内部に格納されるように、メモリユニット１６内部の領域を識別するアドレス値は、仮想物理ブロックアドレス（ＶＰＢＡ）と呼ばれる。空間マネージャ制御ユニット３８は、様々なアルゴリズムの任意の１つを用いて、フラッシュメモリデバイス内部に位置付けられる次の利用可能な（または空き）ブロックを見付ける。空間マネージャの１例は、「Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｎｃｏｒｐｏｒａｔｉｎｇ  Ｗｅａｒ  Ｌｅｖｅｌ  Ｔｅｃｈｎｉｑｕｅ  Ｗｉｔｈｏｕｔ  Ｕｓｉｎｇ  Ｃａｍ  Ｃｅｌｌｓ」と題された１９９６年１月１６日に発行された初期に付与された米国特許第５，４８５，５９５号において開示され、発明者は、Ｍａｈｍｕｄ  Ａｓｓａｒ，Ｐｅｔｒｏ  Ｅｓｔａｋｈｒｉ，Ｓｉａｍａｃｋ  Ｎｅｍａｚｉｅ，およびＭａｈｍｏｏｄ  Ｍｏｚａｆｆａｒｉであり、この開示を完全に記載されたかのように本明細書で参考として援用する。読者は、特に図１１〜図１３およびこれらの図についての説明を参照されたい。しかし、別の実施形態では、他の空間マネージメント方法および装置が本発明によって同様に使用され得る。
【００２９】
ＶＬＢＡ値は、最終的にはＬＵＴからのＶＰＢＡ値を参照するために使用される。ＬＵＴは、行および列から構成され、各行はＶＬＢＡ値によってアドレスされる。読み出し動作の間、ＶＬＢＡ値を用いてＬＵＴから取り出すためにＬＵＴの特定の行にアドレスする。ＶＰＢＡは所定のフラグ情報を含む。書き込み動作の間、ＶＬＢＡを用いて、所定のフラグ情報を含むＶＰＢＡ値を格納するためにＬＵＴの特定の行をアドレスする。ＶＰＢＡは、メモリユニット１６内部の特定のセクタ領域を識別するために、最終的には物理ブロックアドレス（ＰＢＡ）に変換される。
【００３０】
ＬＢＡ値は、空間マネージャ／フラッシュインターフェース２８によって使用するためにマイクロプロセッサ２４によってマイクロプロセッサバス３０に結合され、ＬＢＡ値はＶＬＢＡアドレスに変換される。４ビットのセクタは、２の４乗が１６に等しいためブロック当たり１６のセクタの使用を示す。ＶＬＢＡはセクタビットをマスキングする（マスキングされたセクタビットは、セクタオフセット値と呼ぶ）ことによって得られ、この例では４ビットを含む。ブロックおよびチップ選択情報は同じままである。チップ選択ビットを用いて、メモリユニット１６内部に含まれる複数の不揮発性メモリデバイスの特定のうちの１つのデバイス（例えばデバイス３４または３６のうちの１つ）を選択する。ブロック情報は選択された不揮発性メモリデバイス内部の特定のブロックを識別する。ＶＬＢＡはまた、ブロックが不揮発性メモリ内に格納され、書き込まれ、または移動される場合、不揮発性メモリに書き込まれる。すなわち、ブロックのセクタの全てを書き込んだ後、ＶＬＢＡはブロックの最後の行に書き込まれる。あるいは、ＶＬＢＡはブロックの任意の他の行に書き込まれ得る。これは以下の図面に関してさらに説明される。
【００３１】
図２に戻って、ブロック２００は１６のセクタ含むことを示し、各セクタ格納空間２０２はデータおよびＥＣＣ情報を格納するために用いられる。代替的な実施形態では、ブロック２００は１６セクタ以外のセクタを含み得る。例えば、容量１２８Ｍｂｉｔのメモリユニットを有するシステムでは、ブロック当たり用いるのは３２セクタであり得るが、６４Ｍｂｉｔの容量を用いると１６セクタブロックを必要とし得る。図２において各セクタはブロック２００の格納空間の行において格納される。
【００３２】
図２に示されるようにブロック２００の最後の行では、セクタ格納領域２０２の後、ＶＬＢＡを格納するためのＶＬＢＡフィールド２０４、ブロック状態フラグフィールド２０６、および欠陥フィールド２０８が存在する。ブロック状態フラグフィールド２０６は、本明細書で提供される以後の例を参照して、明らかになるようにブロック２００の状態を格納するために用いられる。欠陥フィールド２０８は、ブロック２００が欠陥であるか否かを示すフラグを格納するために用いられる。以後の例では、このフィールドは、「ＧＤ」として示され、ブロックが破壊的ではないが、実際的にこのフィールド専用の１バイト（または８ビット）が存在し得ることを示す。ブロックステータスフラグフィールド２０６はまた、１バイトを占有し、ＶＬＢＡフィールド２０４は、２バイトを占有する。フィールド２０４〜２０８のサイズは設計選択であり、本明細書中で記載されるサイズと異なってもよい。
【００３３】
図３は、空間マネージャブロック２１０の内容を示し、ＶＬＢＡ値の１つ（ＶＬＢＡ値によって識別される空間マネージャの行）は、フラッシュメモリユニットおよび特に図３におけるフラッシュデバイス２１４内部において、ブロック「０２２０」（１６進数表記）をアドレスするために「００２０」（１６進数表記）である。図３に示されるように値「０２２０」はＶＰＢＡ値として用いられ、ＰＢＡ値「０２２０」によって識別されるフラッシュデバイス２１４内部の特定の領域を示す。識別されたブロックはフラッシュデバイス２１４内部の２１６（図３）によって参照される。ブロック２１６内部では、ブロックの最後の行においてすなわち、ＶＬＢＡフィールド２１８において「００２０」（１６進数表記）のＶＬＢＡ値が格納される。これはブロック２１６をＶＬＢＡ「００２０」に属するものとして識別するためであり、何らかの理由で電力が中断され、次いで再度電源が入り、空間マネージャ２１０の内容が失われた場合、空間マネージャ内容は、フラッシュデバイス２１４における情報からやはり再構築され得る。例えば電源を入れた場合、ブロック２１６の最後の行が検査され、特にＶＬＢＡフィールド２１８が読み出される。ＶＬＢＡフィールド２１８は、値「００２０」を含み、このＶＬＢＡ値に対応する行は空間マネージャにおいて到達され、「０２２０」の値がその行に配置される。
【００３４】
図３において、ブロック２１６，２２４およびブロック２３２等の各ブロックは、複数のセクタ（例えば、１６、３２または任意の他の数２N（Ｎは整数））を含む。各セクタはデータおよびＥＣＣ情報を含む。
【００３５】
図３において、ブロック２１６には、格納されたブロック状態フラグフィールド２２０および欠陥フィールド２２２にさらに存在し、初めに議論したようにブロック２１６に関する所定の情報を識別する。１６進数で「４８０」のアドレスを有するブロック２２４は、フラッシュデバイス２１４内部でさらに示される。ブロック２２４の最後の行は、以後の例に関して明らかになるように、ブロック２２４へのブロック２１６の内容の移動により値「００２０」を含むように示されるＶＬＢＡフィールド２２６を含む。ブロック２２４は、ブロック状態フラグフィールド２２８および欠陥フィールド２３０をさらに含む。ブロック２１６および２２４を示す理由は、同じブロックがアクセスまたは書き込まれた場合、ブロック（ブロック２１６等）のフラッシュデバイス２１４内部の別のブロック（ブロック２２４等）への移動の概念を読者に理解させやすくすることである。言い換えれば、同じのＬＢＡまたはＶＬＢＡに識別された領域が消去される前に再書き込みされる場合（フラッシュまたはＥＥＰＲＯＭ等の不揮発性メモリ特性の１つが、書き込みまたはプログラミングされる場合、再書き込みまたは再プログラミングされる前に消去される必要があることであるが、頻繁な消去を避けるために、本発明および従来の発明の発明者らは、再書き込みが発生する場合、同じＶＬＢＡを有する異なるブロックを用いるようにシステムを設計してきたことを読者は想起されたい）、再書き込みされるブロック部分、すなわち再書き込みされるブロックの特定のセクタは、同一のＶＬＢＡによって識別され、別のブロックに書き込まれるが、フラッシュメモリユニット内部で物理的に異なる位置の別のブロックにまず書き込まれる。次に書き換えられないされないセクタは、新しいブロックに移動し得、次いで以前のブロックは消去され得る。図３において、例えばＶＬＢＡに識別されたブロック、すなわちＶＬＢＡ「００２０」は、第１にブロック２１６に、フラッシュデバイス２１４内部のブロック「０２２０」を示す。しかし、同じＶＬＢＡに識別された領域、すなわちＶＬＢＡ「００２０」は、コントローラがブロック２１６を消去する機会を有する前に、ホストによって書き換えられる場合、後者のブロックは、物理的にまたは実際的に再プログラミングできない。従って別のブロック、すなわちブロック２２４は、再書き込みのために識別される。これらのブロックの状態は、任意の所与の時間、特に電源投入の間、コントローラは、どのブロックが「使用状態」にあるか、および／または「古い」情報を含むか等を知らなければならない点で重要である。この種の情報は、以前に記載したように各ブロックのブロック状態フラグフィールドによって識別される。移動の動作は、恐らく図４ａ〜図４ｉに示されるように実施例によって最良に理解され、ホストはＬＢＡ２７〜２Ｆ（１６進数表記）によって識別される９個のセクタを再書き込みする。
【００３６】
図４ａでは、空間マネージャ４００が、ＶＬＢＡ「２０」によって識別される行において値「２２０」を含むように示される。この行は、ＬＢＡ値２７〜２Ｆによって識別されるセクタがＶＬＢＡ「２０」によってアドレスされたブロック内部に存在するために示される。なぜなら、図４ａ〜図４ｉの例では、各ブロックが１６セクタを含むためである。対応するブロック２２０は、フラッシュデバイス２１４のブロック４０２に物理的に格納される。フラッシュデバイス２１４は１６のセクタを含み、各セクタはデータおよびＥＣＣ情報、ならびにブロックの最後の行を含み、ブロック最後の行は、ＶＬＢＡフィールド４０４、ブロック状態フラグフィールド４０６と欠陥フィールド４０８とを含む。ブロック４０２は、以前にホストによってブロック４０２に書き込まれたために、ブロック４０２のブロック状態フラグフィールド４０６は、図４ａに「ｚｚ」として示される値を含む。「ｚｚ」は、単にブロック４０２が完了している。すなわちブロック４０２を「ブロック完了」として指定することを表す表記として本明細書中で使用する。実際には、「ｚｚ」は、１バイト等のバイナリ値であり、「ブロック完了」を示す所定値を有する。「ｚｚ」および「ｘｘ」、「ｙｙ」等の他の用語は、本特許文書にわたって使用され、ブロック状態フラグフィールドの状態を説明する一方で、実際これらの用語はバイナリ値を表す。
【００３７】
ブロック４０２のＶＬＢＡフィールド４０４は値「２０」を含み、ブロック４０２が属する空間マネージャ４００内部の特定領域を示す。電源が入れられた場合、空間マネージャ４００ＬＵＴの内容がその揮発的な性質により失われる一方で、フラッシュデバイス２１４の内容が保持されるので、ブロック４０２の内容は空間マネージャを再構築するために用いられる。実際には、フラッシュメモリユニット内部の全てのブロックの内容は、空間マネージャ４００のＬＵＴを再構築するために使用される。図４ａでは、ＶＬＢＡフィールド４０４の内容（２０である）が用いられて、ＶＬＢＡ２０によって識別される対応する領域または行を示し、値「２２０」をそこに格納する。
【００３８】
ＬＢＡに識別されたセクタ２７−２Ｆを書き込む例は、図４ｂに続く。ここで空きブロックは、ブロック４１０のような空間マネージャによって位置付けられる。ＶＰＢＡ値「４８０」によって識別されるブロック４１０は、１６のセクタ格納空間およびＶＬＢＡフィールド４１２、ブロック状態フラグフィールド４１４、ならびに欠陥フィールド４１６を含む。ブロック４０２の状態は同じままであるが、ブロック４１０はこの時点で空いているため、フィールド４１２、４１４、および４１６内に有効なデータ、ＥＣＣ、または情報が存在しない。
【００３９】
図４ｃでは、ブロック４１０は、「使用中」であるとしてマーキングされる。これはフィールド４１４における「ｘｘ」値およびフィールド４１２における「００２０」を書き込むことによって行われる。また、これは実際の「ｘｘ」値ではなく、本明細書中で「ｘｘ」は、ブロック４１０が「使用中」であることを示す所定のバイナリ値を示すように用いられる。「使用中」としてのブロック４１０のマーキングは、データ以外のセクタ情報（すなわち「オーバーヘッド情報」）の書き込み動作を要求する。従って、図４ｃにおけるブロックのマーキングが、この例で行われる第１の「オーバーヘッド」書き込み動作である。読者は、全体で３回のオーバーヘッド書き込みが存在し、全体で３＋１６（セクタ書き込み）すなわち１９回の書き込みが実行されることを留意する。
【００４０】
次に、図４ｄでは、書き込むために必要な第１のセクタ、すなわちＬＢＡ２７Ｈによって識別されるセクタが、ブロック４１０内のセクタ４２０によって示されるように、書き込まれ、フィールド４１２、４１４、および４１６の内容は、この書き込み動作の間、不変のままである。読者は、またこの書き込み動作が実際にＬＢＡ２７Ｈによって識別されるセクタの再書き込みであることを気付かせる。すなわち、後者のセクタは、「２２０」のアドレスを有するブロック４０２内に前に書き込まれ、ここでブロック４０２の消去の前にホストによって再書き込みされる。ブロック４０２は、ブロック４０２の消去の欠如によって書き込まれ得ないため、空きブロック４１０は、新しいセクタ情報の格納のために設計され得る。
【００４１】
図４ｅでは、セクタ４２０が書き込まれた後、ブロック４１０のブロック状態フラグフィールド４１４の内容は、ブロック４１０が「処理中」であることを示す「ｙｙ」に変更される。そうでなければ、ブロック４１０の残りの内容は同じままである。この書き込み動作は、別の「オーバーヘッド」書き込み動作であり、セクタ情報が書き込まれない。読者が留意するように、これは本例の第２のオーバーヘッド動作である。図４ｃ〜４ｅでは、ＶＬＢＡフィールド４１２は同じ（すなわち「２０」）ままである。なぜならこれは、このブロックがそこに書き込まれるための空きブロックとして見出されてからずっとブロック４１０に対応するＶＬＢＡ領域に存在するためである。さらに、このブロックは、欠陥があるとは考えられておらず、従って欠陥フィールド４１６は、「ＧＤ」すなわち良好なブロックを示す。以前に説明したように、欠陥フィールドは、実際に、バイナリ値を含み、このブロックが欠陥があるか否かを示す。
【００４２】
図４ｆでは、２８〜２ＦのＬＢＡ値によって識別された残りのセクタは、セクタの各領域においてブロック４１０に書き込まれる。フィールド４１２〜４１６の内容は同一のままである。この時点まで本例では、全１１の書き込み動作が存在し、このうち２つは、「オーバヘッド」書き込み動作であり、９つはセクタ書き込み動作である。
【００４３】
図４ｇでは、７の追加のセクタ書き込み動作（または移動動作）が実行され、ブロック４０２においてＬＢＡ値２０〜２６によって識別されるセクタの内容がコントローラによって読み出され、ブロック４１０の対応するブロックに書き込まれる。フィールド４１２〜４１６の内容は、同じままであり、この時点で、ブロック２２０が消去される。図４ｈでは、最後の書き込み動作が実行されてブロック４１０のブロック状態フラグフィールド４１４の内容を、「ブロック完了」状態を示す「ｚｚ」に変更する。「ブロック完了」状態は、ブロックが完全に書き込まれていることを意味する。これは、ブロック４０２の状態と同じであることを留意すべきである。ここで、全１９の書き込み動作が実行される。
【００４４】
この文書にわたって、ブロック状態フラグフィールドの内容を変更させることについて参照する。このような変更は、ブロック状態フラグフィールドを含むブロックの消去の前に実行される。これは、このフィールドが、書き込み前の消去を要求する、不揮発性メモリユニット内部に含まれる場合、先に消去されることなくどのようにしてブロック状態フィールドが更新され得るかについて読者の心に疑問を生じさせ得る。簡単には、これは２バイト（各バイトは８ビットである）のようなビット数をブロック状態フラグフィールドに割り当てることによって為される。このフィールドの第１の更新または変更の前に、このフィールドが存在するブロックの消去動作後に、このフィールドの値は、全てバイナリ表記で「１」または１６進数表記で「ＦＦＦＦ．．．」である。ブロックの各状態に割り当てられる所定の値が存在する。説明のために、「１１１１１１００」（バイナリ表記または１６進数表記で「ＦＣ」）の値が、状態「ｘｘ」に割り当てられ、次いでフィールドの２つの最下位ビット（ＬＳＢ）が「１」から「０」に変更され、値「１１１１１１００」（バイナリ表記）を得る。その後フィールドが「ｙｙ」の状態を反映する値に更新される必要があり、この値を「１１１１００００」（バイナリ表記または１６進数表記で「Ｆ０」）であると仮定する場合、第３および第４のＬＳＢは「０」にプログラミングされ、ビットの残りは不変のままである。最後に、例えば「ｚｚ」状態を表す値は「１１００００００」であり得、第５および第６のＬＳＢは、不変のままのビットの残りを有する「０」にプログラミングされる。従って、ブロック状態フラグフィールドは、論理状態「１」において存在するビットの状態を「０」に変更することによって変更され得るが、論理状態「０」において既に存在するビットと同じにする。これは、フィールドが変更される必要があるたびにフィールドを消去する必要性を除去する。
【００４５】
本発明に従って、電源投入の間、フラッシュメモリユニットのブロックが空間マネージャＬＵＴを再構築するために読み出される場合、各ブロックのブロック状態フラグフィールドは、以下のブロックの状態を示す。「使用中」は、ブロック内に格納された有効なデータがまだ存在しないが、使用のためにブロックが指定されたブロックを意味し、「処理中」は、第１のセクタがブロックに書き込まれたことを意味し、「ブロック完了」は、ブロックが完全に書き込まれたことを意味する。
【００４６】
図４ｉでは、ブロック４１０が「ブロック完了」にマーキングされるとすぐにブロック２２０が消去されるため、ブロック２２０が消去される。
【００４７】
本発明の代替的な実施形態では、ブロック状態フラグフィールドは、３つの値ではなく２つの値を獲得し、それによって１つの「オーバーヘッド」書込み動作を除去し得る。すなわち、第１の状態「ｘｘ」は実際には記されず、実際には結果的に１９回ではなく１８回の全書込み動作を生じる。これはブロック４１０のフィールド４１４が減少する変更によって行われ、フィールドの状態の第１の変更は処理中であるとして示される。セクタ情報は、図４ａ〜図４ｉを参照して上述の例で示されるようにブロックにさらに書き込まれる。
【００４８】
本発明のさらに別の実施形態では、システムの性能はさらに改良され、ブロックまたはブロックの部分に再書き込みするために、ブロック内に存在するセクタと同一の回数の書き込み動作に１回の追加的な書き込み動作を加えたのみが実行される。例えば、図５に示されるように例によって説明されるように、ブロックは１６のセクタを含み、１７回の書き込み動作は、ブロックの１以上のセクタに再書き込みされる場合に実行される。
【００４９】
図５において、フローチャートは、ブロック０のＬＡＢ１３、１４、および１５によって識別されるセクタを再書き込みする際に実行される工程を示すように図示される。工程５００では、ホストは、コントローラにコマンドを送信し、ブロック０に以前に書き込まれたＬＢＡ１３〜１５によって識別される不揮発性メモリユニット内のセクタ格納領域に書き込む。コントローラは、この書き込みをこれら特定のセクタの再書き込みであると認識し、工程５０２において空間マネージャは、以前に書き込まれた同じ領域内の空きブロック（すなわちブロック０）を検索し、それがまず消去されなければ再書き込みできない。
【００５０】
工程５０４において、空間マネージャによってブロック１であると見出された空きブロックの場合を考慮する。工程５０８において、ブロック１内のＶＬＢＡフィールドおよびブロック状態フラグフィールドが更新される。ブロック１の状態を「処理中」として示すために、ブロック１内のブロック状態フラグフィールドが「ｙｙ」にプログラムされる。工程５０８における書き込み動作は、１回の書込み動作であり、ホストによって命令されてブロック１を書き込む場合に実行される第１の「オーバヘッド」書き込み動作である。本明細書で前に議論したように、「ｙｙ」は実際には所定のバイナリ値であることを留意すべきである。
【００５１】
次に工程５０６において、実行される１３回の書き込み動作が存在し、各書き込み動作は、ブロック０からブロック１にＬＢＡによって識別されたセクタを移動する。例えば、ＬＢＡ０によって識別されるセクタの内容は、ブロック０から読み出され、ブロック１−ブロック１のＬＢＡ０の対応するセクタに書き込まれる。同じ動作がブロック０からブロック１に転送させる残りの１２のセクタに対して行われる。
【００５２】
最後に工程５１０において、新しい情報、すなわちＬＢＡ１３−１５においてホストによって識別されるセクタ情報がブロック１に書き込まれる。これはブロック０からブロック１への同じセクタの転送ではないことを留意されたい。むしろブロック１に書き込まれる新しいセクタ情報である。すなわち、ＬＢＡ１３〜１５が更新されたため、ブロック０におけるＬＢＡ１３−１５によって識別されたセクタ内のセクタ情報がブロック１に移動する必要がない。最後のセクタ、すなわちＬＢＡ１５によって識別されるセクタは、同じ書き込み動作の範囲内で書き込まれ、またブロック１内のブロック状態フラグフィールドはまた、「ブロック完了」であるとしてブロック１の状態を示すために「ｚｚ」に変更される。工程５１０は、３回よりも多くの書き込み動作を必要とし、それにより１６セクタブロックに対する全書き込み動作数を１７（１６回のデータ書き込み動作と１回の「オーバーヘッド」書き込み動作）にする。この方式で、書き込み動作数は、低減され、それにより、システム性能（特に多くの書き込みおよび再書き込み動作が実行される必要のある用途において）を増大する。図５の上記の工程の後、ブロック０の内容は、ブロック０が消去され得、その後、ブロック０は、「空き」ブロックまたはさらなる格納使用のための有用なブロックのプールに戻される。
【００５３】
本発明のさらなる実施形態では、システム性能は、ブロック内に存在する数と同じに過ぎないような書き込み動作を実行することによってさらに改善される。これは図６ａおよび６ｂに示される例の使用によって最良に理解される。図６ａは、消去動作後最初にＬＢＡ５〜１５を書き込む場合、不揮発性メモリユニット６０２内のブロック０の状態を示し、図６ｂは、ＬＢＡ５〜１５を書き込む場合、ブロック０および１の状態を示す。
【００５４】
図６ａでは、ホストはコントローラに命令し、セクタ情報をＬＢＡ５−１５によって識別される領域に書き込む場合、コントローラはＬＢＡ５〜１５によって識別されたセクタが以前に書き込まれたか否かを判定する。この場合、まだ書き込まれておらず、したがって「空き」ブロックは、そのような書き込み処理に対して識別される。この場合、「空き」ブロックはブロック０である。ブロック０は１６セクタ（ｓ０〜ｓ１５）から構成され、各セクタは、少なくともデータフィールドおよびＥＣＣフィールドを有する。ブロック０の第１のセクタｓ０はまた、ＶＬＢＡ情報を格納するためのＶＬＢＡフィールド６０４を含み、最後のセクタｓ１５は、ブロック状態情報を格納するためのブロック状態フラグフィールド６０６を含む。
【００５５】
第１に、「オーバヘッド」書き込み動作が実行されて、第１のセクタｓ０のＶＬＢＡフィールド６０４に適切なＶＬＢＡ値（この値は最初の図に関して上記に示したように決定される）を書き込む。次にデータおよびＥＣＣは、ＬＢＡ値５〜１５によって識別される各セクタに書き込まれ、１１回の書き込み動作を必要とし、最後のセクタｓ１５を書き込む間、ブロック状態フラグフィールド６０６が書き込まれて「ｚｚ」すなわち「ブロック完了」を示す。
【００５６】
図６ｂでは、ホストはコントローラに命令して再度ＬＢＡ５〜１５に書き込むと仮定すると、不揮発性メモリユニット６０２は、以下のように変更される。コントローラはこれらのＬＢＡが以前にブロック０に書き込まれたことを判定する。従って、ブロック１が位置付けられ、セクタ格納領域内の情報はＬＢＡ０〜４によって識別され、「空き」ブロック、すなわちｓ０〜ｓ４は、ブロック０からブロック１に動かされる。第１のセクタｓ０がコントローラによって書き込まれる場合、ＶＬＢＡはまたＶＬＢＡフィールド６０８に書き込まれ、従って別の書き込み動作に対する必要性を避ける。次にホストによって提供される新しい情報が連続的な順序で１１回の書き込み動作を用いてブロック１のセクタｓ５〜ｓ１５に書き込まれる。最後のセクタｓ１５を書き込む間、ブロック状態フラグがまたブロック１のブロック状態フィールド６１０に、「ブロック完了」を示す「ｚｚ」として書き込まれる。最初に議論したように、「ｚｚ」は実際には、長さ、バイであるバイナリ値である。従って全ブロックは、必要な別の「オーバヘッド」書き込み動作がないように１６回の書き込み動作のみ書き込まれる。その後、ブロック０の内容は消去され、ブロック０は、さらなる格納使用のため「空き」ブロックのプールに戻される。
【００５７】
電源投入の間、システムの突然のまたは典型的なパワーダウンの後発生するように、空間マネージャにおけるＬＵＴの内容は、ＬＵＴが不揮発性メモリで保持されるために失われる。揮発性メモリは、電力がシステムに供給されない場合メモリの内容を失う。従って、コントローラは、ホストに提供されたセクタアドレスと使用されたアドレスとの間の必要なマッピングを提供するため、および不揮発性メモリユニットから情報を読み出し、不揮発性メモリユニット内部に情報を書き込むように、電源投入の間ＬＵＴの内容を再構築しなければならない。
【００５８】
電源投入の間、コントローラは、ブロックの状態を判定するために不揮発性メモリユニット内の各ブロックに対して２回の読み出し動作を実行する。これは例を提供することによって最良に理解される。多くのブロック０内のセクタがブロック１に再書き込みされるが、以前に書き込まれたセクタの再書き込みおよび移動がパワーダウンが起こった前にまだ完了していない場合を検討する。パワーダウンの前に空間マネージャにおけるＶＬＢＡ２０がブロック０を示すことをさらに考慮する。すなわち、ＬＵＴの行２０（１６進数で）は、不揮発性メモリユニットにおけるブロック０を識別するアドレスを含む。ブロック０におけるセクタのいくつかはブロック１への移動を受けるため、ブロック０の状態フラグは、「ｚｚ」すなわち「ブロック完了」を示し、セクタの移動はまだ完了していないために、ブロック１の状態フラグは「ＦＦ．」を示す。「ＦＦ．」は、フラッシュセルがまだプログラムされていない場合のフラッシュセルの状態である。読者が思い出すように、１６回のみの書き込み動作のみがブロックを再書き込みすることを要求される場合に、状態フラグが最後のセクタ（すなわちセクタ１５）書き込まれる場合のみ更新される。この場合、全セクタがブロック１にまだ書き込まれていないために、ブロック１の最後のセクタ（すなわちｓ１５）の内容は、プログラミングされていないままであり、または「ＦＦＦＦ．．．．」である。
【００５９】
電源投入の間、コントローラはブロック１内の第１のセクタｓ０の内容を読み出し、ＶＬＢＡ値を取り出す。この場合、ＶＬＢＡは「２０」（１６進数表記で）である。次にコントローラは、ブロック１の最後のセクタｓ１５の内容を読み出し、状態フラグが「ＦＦ．」であることを示す。これはブロック１が書き込まれるが、書き込み動作は完了していないことをコントローラに知らせる。ブロック０のＶＬＢＡフィールドがブロック１のＶＬＢＡ値（すなわち「２０」）と同じ値を含むことを留意すべきである。従ってコントローラは、不揮発性メモリユニット内部のブロックを検索し、ブロック１に含まれるＶＬＢＡ値と同じＶＬＢＡを見つけ出し、同じ値２０を有するブロック０を見つけ出す。従って、コントローラはブロック０からブロック１にまだ移動していない全セクタを移動することを認識する。コントローラは、以前に書き込まれたセクタに関してセクタの内容が全て「ＦＦＦＦ．．．．．」以外の値であり、まだ書き込まれていないセクタに関してセクタの値が「ＦＦＦＦ．．．．．」であるために、セクタの内容に従ってどのセクタが移動するかを認識する。
【００６０】
ブロック０からブロック１に移動する必要があり、まだ移動されていないセクタが、ブロック１に移動され、ブロック１内の状態フラグフィールド「ｚｚ」すなわち「ブロック完了」としてプログラミングされる。次いでコントローラはブロック１のアドレスを含むように空間マネージャのＬＵＴにおいて行「２０」を更新する。
【００６１】
本発明は特定の実施形態の点において説明されてきたが、本発明の変更および改変が疑いなく当業者に明白であることが理解される。従って上記請求の範囲は本発明の真の精神および範囲内にあるように、このような変更および改変を全て含むものとして解釈されることが意図される。
【図面の簡単な説明】
【図１】
図１は、本発明の実施形態によるデジタルシステムを示す。
【図２】
図２は、図１のデジタルシステムにおいて使用される場合のフラッシュメモリユニットのフラッシュデバイスの１つの内部のブロックの組織の例を示す。
【図３】
図３は、図１の空間マネージャブロック内容内にブロックが反映される場合、フラッシュメモリデバイス１つの内部にある情報のブロックを移動する例を示す。
【図４ａ】
図４ａは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｂ】
図４ｂは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｃ】
図４ｃは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｄ】
図４ｄは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｅ】
図４ｅは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｆ】
図４ｆは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｇ】
図４ｇは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｈ】
図４ｈは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図４ｉ】
図４ｉは、本発明の実施形態によるブロックがフラッシュメモリユニットの１つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図５】
図５は、ブロックを再書き込みする場合、１７回の書き込み動作が実行される本発明の代替的実施形態による書き込み動作の間実行される工程のフローチャートを示す。
【図６ａ】
図６ａは、ブロックを再書き込みする場合、１６回の書き込み動作が実行される本発明のさらに別の実施形態による不揮発性メモリの内容の一例を示す。
【図６ｂ】
図６ｂは、ブロックを再書き込みする場合、１６回の書き込み動作が実行される本発明のさらに別の実施形態による不揮発性メモリの内容の一例を示す。
【図１】
2005516264.tif 000003
【図２】
2005516264.tif 000004
【図３】
2005516264.tif 000005
【図４ａ】
2005516264.tif 000006
【図４ｂ】
2005516264.tif 000007
【図４ｃ】
2005516264.tif 000008
【図４ｄ】
2005516264.tif 000009
【図４ｅ】
2005516264.tif 000010
【図４ｆ】
2005516264.tif 000011
【図４ｇ】
2005516264.tif 000012
【図４ｈ】
2005516264.tif 000013
【図４ｉ】
2005516264.tif 000014
【図５】
2005516264.tif 000015
【図６ａ】
2005516264.tif 000016
【図６ｂ】
2005516264.tif 000017
【国際調査報告】
2005516264.tif 000018