(57)【特許請求の範囲】
【請求項１】
論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルを前記記憶装置において維持する方法であって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取るステップであって、複数のページの各ページが論理グループに対応する１つ以上のエントリを含むものである受け取るステップと、
前記アドレステーブルに対する変更を記憶するアドレステーブルキャッシュ内に前記エントリが存在するかを判定するステップと、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップと、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択するステップと、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングするステップと、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定することを含む方法。
【請求項３】
請求項１記載の方法において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルの選択されたページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定することを含む方法。
【請求項４】
請求項１記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの最大数を有するページを選択することを含む方法。
【請求項５】
請求項１記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含む方法。
【請求項６】
請求項１記載の方法において、
選択される前記ページ量は、１である方法。
【請求項７】
請求項１記載の方法において、
前記フラッシングするステップは、前記選択されたページのための前記アドレステーブル内のエントリを前記アドレステーブルキャッシュ内の変更されているエントリで更新することを含む方法。
【請求項８】
請求項１記載の方法において、
前記エントリが前記アドレステーブルキャッシュ内に存在するならば、
前記要求に基づいて前記論理グループのための存在するエントリを更新するステップと、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たさないならば、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
をさらに含む方法。
【請求項９】
請求項１記載の方法において、
前記アドレステーブルまたは前記アドレステーブルキャッシュのうちの１つ以上は、不揮発性メモリまたはランダムアクセスメモリのうちの１つ以上に格納される方法。
【請求項１０】
記憶装置であって、
論理グループを前記記憶装置内の物理アドレスにマッピングするためのアドレステーブルと、
前記アドレステーブルに対する変更を記憶するアドレステーブルキャッシュと、
コントローラであって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取り、複数のページの各ページが論理グループに対応する１つ以上のエントリを含むものであり、
前記エントリが前記アドレステーブルキャッシュ内に存在するかを判定し、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定し、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択し、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングし、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当て、かつ
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするように構成されるコントローラと、
を備える記憶装置。
【請求項１１】
請求項１０記載の記憶装置において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定するように前記コントローラが構成されることを含む記憶装置。
【請求項１２】
請求項１０記載の記憶装置において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することは、前記アドレステーブルの選択されたページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定するように前記コントローラが構成されることを含む記憶装置。
【請求項１３】
請求項１０記載の記憶装置において、
前記ページ量を選択することは、変更されているエントリの最大数を有するページを選択するように前記コントローラが構成されることを含む記憶装置。
【請求項１４】
請求項１０記載の記憶装置において、
前記ページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択するように前記コントローラが構成されることを含む記憶装置。
【請求項１５】
請求項１０記載の記憶装置において、
選択される前記ページ量は、１である記憶装置。
【請求項１６】
請求項１０記載の記憶装置において、
前記フラッシングすることは、前記選択されたページのためのアドレステーブル内のエントリを前記アドレステーブルキャッシュ内の変更されているエントリで更新するように前記コントローラが構成されることを含む記憶装置。
【請求項１７】
請求項１０記載の記憶装置において、
前記コントローラは、
前記エントリが前記アドレステーブルキャッシュ内に存在するならば、
前記要求に基づいて前記論理グループのための存在するエントリを更新し、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たさないならば、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当て、かつ
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするようにさらに構成される記憶装置。
【請求項１８】
請求項１０記載の記憶装置において、
不揮発性メモリとランダムアクセスメモリとをさらに備え、前記アドレステーブルまたは前記アドレステーブルキャッシュのうちの１つ以上は前記不揮発性メモリまたは前記ランダムアクセスメモリのうちの１つ以上に格納される記憶装置。
【請求項１９】
論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルを前記記憶装置において維持する方法であって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取り、複数のページの各ページが論理グループに対応する１つ以上のエントリを含むものであり、かつ前記エントリを加えることまたは更新することを含むエントリをセットするステップと、
アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップと、
前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択するステップと、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングするステップと、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
を含む方法。
【請求項２０】
請求項１９記載の方法において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定することを含む方法。
【請求項２１】
請求項１９記載の方法において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルの選択されたページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定することを含む方法。
【請求項２２】
請求項１９記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの最大数を有するページを選択することを含む方法。
【請求項２３】
請求項１９記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、一般的に記憶装置に関する。より具体的には、本願は、再プログラム可能な不揮発性半導体フラッシュメモリにおける論理対物理マッピングアドレステーブルの維持に関する。
【背景技術】
【０００２】
フラッシュメモリなどの不揮発性メモリシステムは消費者向け製品に用いられるべく広く採用されている。フラッシュメモリは、例えばホスト装置間で持ち運ばれ得る携帯可能なメモリカードの形で、あるいはホスト装置に埋め込まれたソリッドステートディスク（ＳＳＤ）として、種々の形で見出され得る。従来のフラッシュメモリシステムにデータを書き込むときには、ホストは通例メモリシステムの論理アドレス空間中のアドレスにデータの書き込み、データの読み出しを行う。メモリシステムはそのとき一般的に論理アドレス空間とメモリの物理的ブロックまたはメタブロックとの間でデータをマッピングし、そのデータは論理アドレス空間内のレンジに対応する固定された論理グループに格納される。一般的に、各々の固定された論理グループはメモリシステムの別々の物理的ブロックに格納される。メモリシステムは論理アドレス空間が物理メモリにどのようにマッピングされているかを追跡するけれども、ホストはそれを知らない。ホストは論理アドレス空間の中の自分自身のデータファイルのアドレスを追跡するけれども、メモリシステムは一般にそのマッピングについての知識なしで動作する。
【０００３】
メモリシステム内のアドレステーブルは、論理アドレス空間の物理メモリへのマッピングを含む。特に、アドレステーブルは、メモリシステムにおける論理グループの物理的ブロックへのマッピングを示すページを含む。既にマッピングされている論理グループにホストがデータを書き込むとき、アドレステーブルは、関係するマッピング情報で更新され得る。
【０００４】
或るメモリシステムは、データが書き込まれるときのアドレステーブルに対する変更を一時的に格納するためにアドレステーブルのためのキャッシュを包含する。アドレステーブルに書き込む代わりにアドレステーブルキャッシュに書き込めば、時間と書き込み操作のオーバーヘッドとを或る程度節約することができる。アドレステーブルキャッシュを有するメモリシステムは、キャッシュ内の実際の変更されたエントリの量に関わらず、アドレステーブルのためのキャッシュ全体を更新することによって、キャッシュ内の変更されたエントリを定期的にアドレステーブルと同期させることができる。しかし、アドレステーブル内に百ページ以上を有し得る大きなメモリシステムでは、アドレステーブルキャッシュ内の変更されたエントリでアドレステーブル全体を更新すると、性能に悪影響が及んでメモリシステムにおける他の操作が遅れることがある。変更が全く行われなかったならば、アドレステーブル内のページは不必要に再書き込みされることがある。アドレステーブル全体が書かれるときには、アドレステーブルを格納するために使用されるフラッシュメモリセルが早く損耗することがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】「Non-Volatile Memory and Method with Improved Block Management System」という米国仮特許出願
【発明の概要】
【０００６】
前述した問題を処理するために、論理グループを物理アドレスにマッピングするアドレステーブルを維持する方法およびシステムが開示される。
本発明の第１の態様に従って、記憶装置において論理グループを物理アドレスにマッピングするためのアドレステーブルを維持する方法が開示される。この方法は、論理グループを物理アドレスにマッピングするエントリをアドレステーブルにおいてセットする要求を受け取ることを含む。アドレステーブルは複数のページを含む。この方法は、アドレステーブルに対する変更を記憶するアドレステーブルキャッシュ内にエントリが存在するかを判定することと、アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することをも含む。エントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たすならば、アドレステーブルのページの量が選択される。選択されるページ量はアドレステーブル内のページの総数よりは少ない。アドレステーブル内のページは、変更されているエントリと変更されていないエントリとを含む。選択されたページ内の変更されているエントリはアドレステーブルキャッシュからアドレステーブルにフラッシングされる。要求されたエントリはアドレステーブルキャッシュ内で割り当てられてセットされる。
【０００７】
或る実施形態では、フラッシングしきい値基準はアドレステーブルキャッシュの最大容量を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルキャッシュ内のエントリの数がアドレステーブルキャッシュの最大容量であるかを判定することを含む。他の実施形態では、フラッシングしきい値基準は変更されているエントリのしきい値を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えているかを判定することを含む。
【０００８】
アドレステーブル内のフラッシングするページ量を選択することは、最大数の変更されているエントリを有するページを選択することを含み得る。代わりに、アドレステーブル内のフラッシングするページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含み得る。フラッシングされるべく選択されるページの量は１であり得る。変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングすることは、アドレステーブル内のエントリをアドレステーブルキャッシュ内の変更されているエントリで更新することを含み得る。
【０００９】
この方法は、アドレステーブルキャッシュ内の論理グループのための既存のエントリを、そのエントリがアドレステーブルキャッシュ内に既に存在するならば、更新することをさらに含み得る。この方法は、アドレステーブルキャッシュ内の論理グループのためのエントリを、そのエントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たしていなければ、割り当ててセットすることをも含み得る。アドレステーブルおよび／またはアドレステーブルキャッシュは、不揮発性メモリまたはランダムアクセスメモリのうちの１つ以上に格納され得る。
【００１０】
他の１つの態様に従って、記憶装置は、論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルと、アドレステーブルに対する変更を記憶するアドレステーブルキャッシュと、コントローラと、を備える。コントローラは、論理グループを物理アドレスにマッピングするエントリをアドレステーブルにおいてセットする要求を受け取るように構成される。アドレステーブルは複数のページを含む。コントローラは、エントリがアドレステーブルキャッシュ内に存在するかを判定すると共に、アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するようにも構成される。エントリがアドレステーブルキャッシュ内に存在しなくてアドレステーブルキャッシュがフラッシングしきい値基準を満たすとコントローラが判定すれば、アドレステーブルのページの量が選択される。選択されるページ量はアドレステーブル内のページの総数よりは少ない。アドレステーブル内のページは、変更されているエントリと変更されていないエントリとを含む。コントローラは、選択されたページ内の変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングする。要求されたエントリは、コントローラによって、アドレステーブルキャッシュ内で割り当てられてセットされる。
【００１１】
或る実施形態では、フラッシングしきい値基準はアドレステーブルキャッシュの最大容量を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルキャッシュ内のエントリの数がアドレステーブルキャッシュの最大容量であるかを判定するようにコントローラが構成されることを含む。他の実施形態では、フラッシングしきい値基準は変更されているエントリのしきい値を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えているかを判定するようにコントローラが構成されることを含む。
【００１２】
アドレステーブル内のフラッシングするページ量を選択することは、最大数の変更されているエントリを有するページを選択することを含み得る。代わりに、アドレステーブル内のフラッシングするページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含み得る。フラッシングされるべく選択されるページの量は１であり得る。変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングすることは、アドレステーブル内のエントリをアドレステーブルキャッシュ内の変更されているエントリで更新することを含み得る。
【００１３】
コントローラは、アドレステーブルキャッシュ内の論理グループのための既存のエントリを、そのエントリがアドレステーブルキャッシュ内に既に存在するならば、更新するようにさらに構成され得る。コントローラは、論理グループのためのエントリを、エントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たしていなければ、アドレステーブルキャッシュにおいて割り当ててセットするようにも構成され得る。アドレステーブルおよび／またはアドレステーブルキャッシュは、不揮発性メモリまたはランダムアクセスメモリのうちの１つ以上に格納され得る。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態を実施するのに適するメモリシステムの主なハードウェアコンポーネントを示す。
【図２】一実施形態に従って、セクタの物理的グループ（すなわち、メタブロック）に編成されてコントローラのメモリマネージャにより管理されるメモリを示す。
【図３Ａ】一実施形態に従う、論理グループとメタブロックとの間のマッピングを示す。
【図３Ｂ】論理グループとメタブロックとの間のマッピングを示す。
【図４】コントローラおよびフラッシュメモリに実装されたメタブロック管理システムの略ブロック図である。
【図５】初期状態のグループアドレステーブルブロックを示す。
【図６】データが再書き込みされた後のグループアドレステーブルブロックを示す。
【図７】グループアドレステーブルキャッシュ更新後のグループアドレステーブルブロックを示す。
【図８】論理グループを物理アドレスにマッピングするグループアドレステーブルおよびグループアドレステーブルキャッシュを維持する方法を示す流れ図である。
【図９】ランダムアクセスメモリおよびフラッシュメモリにおいてグループアドレステーブルキャッシュを維持する方法を示す流れ図である。
【発明を実施するための形態】
【００１５】
図１は、本発明の実施形態を実施するのに適するメモリシステムの主なハードウェアコンポーネントを示す。メモリシステム２０は、通例、ホストインターフェイスを通してホスト１０と協同する。メモリシステムは、通例、メモリカードあるいはソリッドステートディスク（ＳＳＤ）ドライブなどの埋め込みメモリシステムの形をとる。メモリシステム２０は、コントローラ１００によって動作を制御されるメモリ２００を含む。メモリ２００は、１つ以上の集積回路チップに分散する不揮発性メモリセルの１つ以上のアレイを含む。コントローラ１００は、インターフェイス１１０、プロセッサ１２０、随意のコプロセッサ１２１、ＲＯＭ１２２（読み出し専用メモリ）、ＲＡＭ１３０（ランダムアクセスメモリ）および随意のプログラム可能な不揮発性メモリ１２４を含む。インターフェイス１１０は、コントローラをホストにインターフェイスさせる１つのコンポーネントと、メモリ２００にインターフェイスする他の１つのコンポーネントとを有する。不揮発性ＲＯＭ１２２および／または随意の不揮発性メモリ１２４に格納されているファームウェアは、プロセッサ１２０がコントローラ１００の機能を実行するためのコードを提供する。エラー訂正コードは、プロセッサ１２０または任意的なコプロセッサ１２１により処理され得る。１つの代わりの実施形態では、コントローラ１００は状態マシン（図示せず）により実装される。さらに他の１つの実施形態では、コントローラ１００はホストの中に実装される。
【００１６】
図２は、一実施形態に従って、セクタの物理的グループ（すなわち、メタブロック）に編成されてコントローラのメモリマネージャにより管理されるメモリを示す。メモリ２００はメタブロックＭＢ0 ・・・ＭＢi に編成され、各メタブロックは、一緒に消去可能な物理的セクタＳ0 ・・・ＳN-1 のグループである。
【００１７】
ホスト１０は、ファイルシステムまたはオペレーティングシステムの下でアプリケーションを動作させるときにメモリ２００にアクセスする。通例、ホストシステムは論理セクタ単位でデータをアドレス指定し、例えば各セクタは５１２バイトのデータを包含し得る。また、ホストが１つ以上の論理セクタからそれぞれ成る論理クラスタを単位としてメモリシステムに読み書きすることも普通のことである。或るホストシステムでは、ホストにおいて低レベルのメモリ管理を行う随意のホスト側メモリマネージャが存在し得る。大抵の場合、読み出し操作または書き込み操作の間に、ホスト１０は、本質的に、連続するアドレスを有するデータの論理セクタのストリングを包含するセグメントを読み出すかあるいは書き込むためにメモリシステム２０にコマンドを発する。
【００１８】
フラッシュメモリ２００のメタブロックの中でのホスト論理セクタのデータの記憶および検索を管理するメモリ側メモリマネージャがメモリシステム２０のコントローラ１００に実装される。好ましい実施形態では、メモリマネージャは、メタブロックの消去操作、読み出し操作および書き込み操作を管理するための多数のソフトウェアモジュールを包含する。メモリマネージャは、また、その動作に関連付けられているシステム制御データおよびディレクトリデータをフラッシュメモリ２００およびコントローラＲＡＭ１３０の中に維持する。
【００１９】
図３Ａ（ｉ）〜３Ａ（ｉｉｉ）は、一実施形態に従う、論理グループとメタブロックとの間のマッピングを示す。物理メモリのメタブロックは、論理グループのデータのＮ個の論理セクタを記憶するためのＮ個の物理的セクタを有する。図３Ａ（ｉ）は論理グループＬＧｉからのデータを示し、論理セクタは連続的な論理的順序「シーケンシャル」であると言われる。一般的に、メタブロックは異なる順序でデータを格納することがあり、その場合にはメタブロックは「非シーケンシャル」または「カオス的」であると言われる。
【００２０】
論理グループの最下位アドレスと、それがマッピングされているメタブロックの最下位アドレスとの間にはオフセットが存在し得る。この場合、論理セクタアドレスは、メタブロックの中で論理グループの底部から頂部へループとしてラップアラウンドする。例えば、図３Ａ（ｉｉｉ）では、メタブロックは、その第１の位置に、論理セクタｋのデータから格納する。最後の論理セクタＮ−１に達すると、それはセクタ０にラップアラウンドし、最後に、論理セクタｋ−１と関連付けられているデータをその最後の物理的セクタに格納する。好ましい実施形態では、メタブロックの第１の物理的セクタに格納されているデータの開始論理セクタアドレスを特定するなど、オフセットを特定するためにページタグが使用される。２つのブロックが、それらがページタグにより違っているに過ぎないときにそれらの論理セクタが同様の順序で格納されるように、考慮される。
【００２１】
図３Ｂは、論理グループとメタブロックとの間のマッピングを示す。データが現在更新されつつある少数の論理グループを除いて、各論理グループは一意のメタブロックにマッピングされる。論理グループは、更新された後に、異なるメタブロックにマッピングされ得る。以下に説明するように、マッピング情報は、グループアドレステーブルおよびグループアドレステーブルキャッシュなどの、論理対物理ディレクトリのセットにおいて維持される。
【００２２】
図４は、コントローラおよびフラッシュメモリに実装されたメタブロック管理システムのブロック図である。メタブロック管理システムは、コントローラ１００に実装される種々の機能モジュールを含み、フラッシュメモリ２００およびコントローラＲＡＭ１３０内のテーブルおよびリストにおいて種々の制御データを維持する。コントローラ１００に実装される機能モジュールは、インターフェイスモジュール１１０と論理対物理アドレス変換モジュール１４０とを含む。インターフェイス１１０により、メタブロック管理システムはホストシステムとインターフェイスすることができる。論理対物理アドレス変換モジュール１４０は、ホストからの論理アドレスを物理的メモリ位置にマッピングする。
【００２３】
動作中、メタブロック管理システムは、アドレス情報、制御情報およびステータス情報などの制御データを生成し、それらを用いて動作する。制御データの多くは小さなサイズの頻繁に変化するデータでありがちなので、それを大きなブロック構造を有するフラッシュメモリに容易に格納して効率的に維持することはできない。より静的な制御データを不揮発性フラッシュメモリに格納し、より少量のより変化する制御データを、より効率的な更新およびアクセスのためにコントローラＲＡＭに置くために、階層的分散型方式を採用することができる。電源シャットダウンまたは障害が発生した場合、この方式により、不揮発性メモリ内の制御データの小さなセットをスキャンすることによって揮発性コントローラＲＡＭ内の制御データを速やかに再構築することができる。
【００２４】
不揮発性フラッシュメモリ２００は、グループアドレステーブル（ＧＡＴ）２１０およびグループアドレステーブルキャッシュ（ＧＡＴデルタ）２２０などの制御データを記憶することができる。ＧＡＴ２１０は、セクタの論理グループと、それらの対応するメタブロックとの間のマッピングを追跡する。ＧＡＴ２１０は、各論理グループに１つずつのエントリを包含し、それらは論理アドレスに従ってシーケンシャルに配列されている。ＧＡＴ２１０は複数のページを含み、各ページは、メモリシステム内の全ての論理グループのためにメタブロックアドレスを定義するエントリを含む。ＧＡＴデルタ２２０は、ＧＡＴ２１０のマッピングにおける変更されたエントリのリストであるキャッシュとして作用する。１つの実施形態では、ＧＡＴ２１０およびＧＡＴデルタ２２０の両方がフラッシュメモリ２００に格納される。ＧＡＴデルタ２２０からＧＡＴ２１０への変更されたエントリのフラッシングは、この実施形態ではフラッシュメモリ２００の中で行われる。
【００２５】
或る実施形態では、ＲＡＭ１３０はＧＡＴデルタコピー１３２を含むことができる。ＧＡＴデルタコピー１３２は、変更されたエントリの、ＧＡＴデルタ２２０内のものと同じリストを包含することができる。定期的に、コントローラは、ＧＡＴデルタコピー１３２とＧＡＴデルタ２２０とが同じ情報を包含するように、これらを同期させることができる。このプロセスは、以下で図９と関連してより詳しく述べられる。
【００２６】
図５〜図７は、（１）空のＧＡＴデルタを有する初期状態、（２）更新されたＧＡＴデルタで論理グループが再書き込みされた後、（３）ＧＡＴデルタがＧＡＴに部分的にフラッシングされた後のグループアドレステーブル（ＧＡＴ）ブロック５００を示す。図８は、論理グループを物理アドレスにマッピングするグループアドレステーブルおよびグループアドレステーブルキャッシュを維持する方法８００を示す流れ図である。方法８００について図８に記載されているステップの各々は、単独で、あるいは他のステップと組み合わされて、実行され得る。
【００２７】
図５は、初期状態のグループアドレステーブル（ＧＡＴ）ブロック５００を示す。ＧＡＴブロック５００は、空きブロックリスト（ＦＢＬ）５０４と、ＧＡＴデルタ５０６と、複数のページを含むＧＡＴ５０８とを包含するマスターインデックスページ５０２を含み、各ページは、書き込まれた論理グループのためのメタブロックアドレスをマッピングするエントリを含む。ＦＢＬ５０４は、後に論理グループにマッピングされ得る利用可能な空きブロックをリストする。ＦＢＬ５０４は、空きブロックが前に割り当てられた順序であることができる。図５では、代表的なＦＢＬ５０４は、メタブロックＦ、Ｇ、Ｈ、Ｊ、およびＫを空きブロックとしてリストしている。
【００２８】
メモリシステムの初期状態では、書き込まれた論理グループは、ＧＡＴ５０８内のページのエントリにおいて物理的メタブロックに既に割り当てられている。図５の代表的なＧＡＴ５０８は、論理グループに対応する４１６個のエントリを各々有するページ０、１、２、および３を含む。ＧＡＴデルタ５０６は、初期状態ではＧＡＴ５０８に対して変更がまだ行われていないので、空である。換言すれば、図５に示されている初期状態では、ＧＡＴ５０８は、論理グループ対物理的メタブロックのための最も更新されたマッピングを包含する。
【００２９】
図６は、ホストによってデータが再書き込みされた後のＧＡＴブロック５００を示す。図５に示されているマスターインデックスページ５０２の旧コピーは図６には示されていない。ホストからデータが書き込まれるとき、論理グループを物理的メタブロックにマッピングするエントリをＧＡＴ５０８においてセットする要求が、図８に示されている方法８００のステップ８０２において受け取られ得る。ＧＡＴデルタ５０６は、ＧＡＴ５０８より新しいマッピング情報を包含し得るので、セット要求において指定されているエントリが既に存在するかを調べるためにＧＡＴデルタ５０６がステップ８０４で検査される。ステップ８０４でそのエントリが既に存在すれば、ステップ８１４で、それは要求からの新しいマッピング情報で更新される。或る実施形態では、エントリがＧＡＴデルタ５０６内に既に存在すれば、その既に存在するエントリについての論理グループを包含するＧＡＴ５０８内の対応するページはＧＡＴデルタ５０６から直ぐに更新され得る。他の実施形態では、エントリがＧＡＴデルタ５０６内に既に存在すれば、要求で指定されている論理グループのためにＧＡＴデルタ５０６において新しいエントリが割り当てられてセットされ得る。
【００３０】
しかし、ステップ８０４においてエントリがＧＡＴデルタ５０６内に既に存在しているのでない場合、ステップ８０６でフラッシングしきい値基準が満たされなければ、エントリが割り当てられてセットされ得る。この場合、エントリは、ステップ８１２および８１４で要求に基づいてＧＡＴデルタ５０６内で割り当てられてセットされる。フラッシングしきい値基準は、ＧＡＴ５０８内の１つ以上のページがしきい値より多い数の変更されたエントリを有する場合あるいは一定時間が経過した後に、ＧＡＴデルタ５０６がその最大容量に達することを含む。フラッシングしきい値基準は、マスターインデックスページ５０２が他の理由で更新された場合に先制的フラッシングを行うことも含み得る。
【００３１】
他の１つのフラッシングしきい値基準は、ＧＡＴ５０８が圧縮される場合を含み得る。一実施形態では、ＧＡＴ５０８が圧縮されるとき、その圧縮されたＧＡＴブロックからＧＡＴ５０８内の有効なページがコピーされ、ＧＡＴ５０８のための更新されたインデックスがマスターインデックスページ５０２に書き込まれる。他の１つの実施形態では、ＧＡＴ５０８が圧縮されるとき、ＧＡＴ５０８内のページはコピーされて、ＧＡＴデルタ５０６からの変更されているエントリで更新される。この圧縮の場合、ＧＡＴ５０８の圧縮および更新の後にＧＡＴデルタ５０６は部分的にあるいは完全にフラッシングされ得る。最低でも、この圧縮の場合、ＧＡＴデルタ５０６は、圧縮されたＧＡＴ５０８内のページのためのエントリを最早含まない。
【００３２】
従って、エントリがＧＡＴデルタ５０６内に存在していなくてステップ８０６でフラッシングしきい値基準が満たされなければ、ＧＡＴデルタ５０６はフラッシングされず、ＧＡＴ５０８と同期させられる。ホストがデータを論理グループに再書き込みするとき、そのデータが書き込まれる対応する物理的メタブロックは、ＧＡＴ５０８に直接にではなくてステップ８１２および８１４でＧＡＴデルタ５０６内のエントリに記録される。例えば、図６では、ホストは論理グループ４１０、４１１、５２０、４１３、および１１０１を再書き込みする。これらの論理グループのためのエントリをセットする要求がステップ８０２で受け取られ得る。ステップ８０４でＧＡＴデルタ５０６は空であるので、これらの論理グループのためのエントリは図５のＧＡＴデルタ５０６内に既に存在してはいない。ＧＡＴデルタ５０６内にエントリが存在しないことに加えて、ＧＡＴデルタ５０６のためのフラッシングしきい値基準がステップ８０６で満たされないので、ステップ８１２および８１４で論理グループのためのエントリが割り当てられてセットされる。ステップ８１２および８１４の後、ＧＡＴデルタ５０６は最早空ではなくて、論理グループ４１０、４１１、５２０、４１３、および１１０１を物理的メタブロックＦ、Ｇ、Ｈ、Ｊ、およびＫにそれぞれマッピングするエントリを含む。メモリコントローラは、これらのブロックのためのデータを、ＦＢＬ５０４においてリストされている利用可能な空きブロックに基づいて、空きブロックＦ、Ｇ、Ｈ、Ｊ、およびＫにそれぞれ書き込む。
【００３３】
論理グループ４１０、４１１、５２０、４１３、および１１０１は前は物理的メタブロックＡ、Ｂ、Ｃ、Ｄ、およびＥにそれぞれマッピングされていた。この段階では、ＧＡＴ５０８は依然としてこの最初のマッピングを包含しているけれども、これらの論理グループのためのＧＡＴ５０８内のエントリは今はＧＡＴデルタ５０６内のエントリによって取って代わられる。図６は、ＧＡＴ５０８内の取って代わられた物理的メタブロックＡ、Ｂ、Ｃ、Ｄ、およびＥを灰色で示している。物理的メタブロックＡ、Ｂ、Ｃ、Ｄ、およびＥは有効なデータを最早包含していないので、ＦＢＬ５０４は今はこれらのメタブロックを空きブロックとしてリストしている。
【００３４】
ＦＢＬ５０４、ＧＡＴデルタ５０６およびＧＡＴ５０８を含むマスターインデックスページ５０２は単一の書き込み操作時に更新されかつ／または単一のデータ構造の中に包含され得る。マスターインデックスページ５０２は、例えば、更新ブロック情報（例えば、更新されている論理グループ、ブロック位置、および書き込まれている長さ）、アクティブなバイナリキャッシュブロックへのポインタ、ＧＡＴ５０８のページのためのインデックス、損耗レベリングカウンタ、および他の情報などの、単一の書き込み操作時に更新される他の情報も含むことができる。マスターインデックスページ５０２は、中に包含されるテーブルの同期スナップショットを提供するので、ＧＡＴ５０８のページへの全ての書き込みの後に完全に再書き込みされる必要はない。
【００３５】
マスターインデックスページ５０２内の全ての物理的ブロック参照は、紛失ブロックあるいは二重参照されるブロックがないように、単一書き込み操作時に更新される。全ての物理的ブロックは、ＧＡＴ５０８、マスターインデックスページ５０２により、あるいは制御ブロック（例えば、ＧＡＴ５０８内のブロックへのポインタ、バイナリキャッシュブロックなど）において、参照される。ブロックがＦＢＬ５０４から取られるとき、ブロックは、マスターインデックスページ５０２内の更新ブロック情報において任意的に参照され得る。ＦＢＬ５０４から取られたブロックは、その後、ＧＡＴデルタ５０６およびＧＡＴ５０８により参照される。マスターインデックスページ５０２に対して単一の書き込み操作が行われるときにブロックのための参照は、複数の場所において、例えば、新しい割り当てられたブロックが消滅して新しい空きブロックが出現するＦＢＬ５０４において、また新しい参照としてＧＡＴ５０８において、変更される。従って、別々の書き込みを有する１つのアトミック書き込み操作を用いてＦＢＬ５０４およびＧＡＴ５０８を同時に更新する代わりに、マスターインデックスページ５０２に対する単一の書き込み操作がＦＢＬ５０４、ＧＡＴ５０８、ブロック情報、および論理対物理テーブルをまとめて更新する。
【００３６】
図７は、図６からのマスターインデックスページ５０２の旧コピーを含む、ＧＡＴ更新の後のＧＡＴブロック５００を示す。フラッシングしきい値基準は、ＧＡＴデルタ５０６からの対応する変更されているエントリでのＧＡＴ５０８の部分的更新を誘発し得る。例えば、図７のＧＡＴブロック５００に示されているように、（１）論理グループを物理的メタブロックにマッピングするエントリをＧＡＴ５０８においてセットする要求がステップ８０２で受け取られ、（２）エントリがステップ８０４でＧＡＴデルタ５０６内に既に存在してはおらず、（３）フラッシングしきい値基準がステップ８０６で満たされるならば、ステップ８０８および８１０でＧＡＴ５０８の部分的更新が行われる。ステップ８０８および８１０でＧＡＴ５０８の部分的更新が行われた後、前述したように、その要求されたエントリはステップ８１２および８１４でＧＡＴデルタ５０６内で割り当てられてセットされ得る。
【００３７】
ＧＡＴ５０８の部分的更新が行われるとき、ＧＡＴ５０８内の取って代わられたエントリの全てが更新されるわけではない。代わりに、ＧＡＴ５０８の部分的更新は、ステップ８０８で選択されたＧＡＴ５０８の幾つかのページを含む。ステップ８０８で更新のために選択されるＧＡＴ５０８内のページは、最大数の変更されたエントリを有するページあるいはしきい値より多い一定数の変更されたエントリを有するページであり得る。選択されるページは、他の基準に基づくこともできる。選択されるページの数は、１ページあるいはＧＡＴ５０８内のページの総数より少ない任意のページの数であり得る。
【００３８】
ステップ８０６でフラッシングしきい値基準が満たされて部分的更新が誘発されたとき、ＧＡＴ５０８の選択されたページのためのＧＡＴデルタ５０６内のエントリは、ステップ８１０でＧＡＴ５０８のこれらのページにフラッシングされる。図７では、ステップ８０８でＧＡＴページ０が選択されているが、それがＧＡＴ５０８内の他のページと比べて最大数の変更されたエントリを有するから、すなわち、ＧＡＴページ０が論理グループ４１０、４１１、および４１３のための３つの変更されたエントリを有するのに対してＧＡＴページ１および２はそれぞれ１つの変更されたエントリを有するからである。これらの論理グループのためのＧＡＴ５０８内のエントリは、論理グループ４１０、４１１、および４１３が今ＧＡＴ５０８内で物理的メタブロックＦ、Ｇ、およびＪにそれぞれマッピングされるように、ステップ８１０でＧＡＴデルタからのエントリで更新される。
【００３９】
論理グループ４１０、４１１、および４１３を物理的メタブロックＡ、Ｂ、およびＤにそれぞれマッピングしていた前のＧＡＴページ０はオーバーライトされる（図７において灰色で示されている）。ＧＡＴ５０８の部分的更新が完了した後、図７のＧＡＴデルタ５０６は前にセットされていた論理グループ５２０および１１０１のための残りの変更されているマッピングのためのエントリを包含している。ＧＡＴページ０だけがフラッシングされるべく選択されたので、論理グループ５２０および１１０１のためのＧＡＴ５０８内の対応するページは更新されない。
【００４０】
ＧＡＴデルタ全体をＧＡＴにフラッシングする代わりにＧＡＴデルタの一部をＧＡＴにフラッシングすることにより、フラッシングのプロセスにおける書き込み操作の数と所要時間とが低減される。例えば、大きなメモリシステムにおいてＧＡＴ（これは１００ページ以上を含み得る）の全てのページのためにＧＡＴデルタからエントリをフラッシングする代わりに、ＧＡＴの１ページだけが、ＧＡＴデルタからの変更されているエントリで更新される。ＧＡＴアドレステーブルを維持するのに必要な時間および操作が少なくなるので、メモリシステムの総合的な性能が向上し得る。
【００４１】
図９は、一実施形態でランダムアクセスメモリおよびフラッシュメモリにおいてグループアドレステーブルキャッシュを維持する方法９００を示す流れ図である。方法９００は、例えば、ＲＡＭ１３０内のＧＡＴデルタコピー１３２とフラッシュメモリ２００内のＧＡＴデルタ２２０とを用いて実行され得る。ＧＡＴデルタ２２０に対する変更は、始めにＧＡＴデルタコピー１３２に書き込まれ、定期的にフラッシュメモリ２００内のＧＡＴデルタ２２０と同期させられ得る。フラッシュメモリ２００内のＧＡＴデルタ２２０内のエントリは、その後、ＧＡＴブロック５００および方法８００と関連して前に図５〜図８を参照して説明したように、同じくフラッシュメモリ２００内にあるＧＡＴ２１０に定期的にフラッシングされ得る。ＲＡＭ１３０はフラッシュメモリ２００と比べてより迅速なアクセス時間および修正時間を有するので、ＲＡＭ１３０内のＧＡＴデルタコピー１３２への書き込みは、メモリシステム全体の性能をさらに高めるのに資することができる。
【００４２】
図９において、前述した方法８００の場合と同じく、論理グループを物理的メタブロックにマッピングするエントリがセットあるいは更新され得る。換言すると、方法８００におけるＧＡＴエントリをセットする要求の結末は、（１）ステップ８０２、８０４、および８１４を使用するＧＡＴデルタコピー１３２内の既存のＧＡＴエントリの更新、（２）ステップ８０２、８０４、８０６、８１２、および８１４を使用するＧＡＴデルタコピー１３２におけるＧＡＴエントリの割り当ておよびセッティング、または（３）ステップ８０２〜８１４を使用する、更新するＧＡＴページの選択、変更されたエントリのＧＡＴデルタからＧＡＴへのフラッシング、およびＧＡＴデルタコピー１３２における新しいエントリの割り当ておよびセッティングであり得る。しかし、図５〜図８と関連して前述したように、フラッシュメモリ２００内のＧＡＴデルタ２２０にエントリを書き込む代わりに、エントリはＲＡＭ１３０内のＧＡＴデルタコピー１３２に書き込まれる。
【００４３】
ＧＡＴエントリをセットする要求が方法８００で遂行された後、ステップ９０２でＧＡＴデルタコピー１３２をＧＡＴデルタ２２０にフラッシングするかが判定される。ＧＡＴデルタコピー１３２のＧＡＴデルタ２２０へのフラッシングは、例えば、空きブロックリスト（ＦＢＬ）内のブロックの数が尽きたときに行われ得る。新しいブロックはＦＢＬから割り当てられ得るだけであるから、ＦＢＬは、空であるときには、もっと多くの空きブロックを持たなければならない。ＦＢＬが空のままならば、初期化中にどのブロックをスキャンするべきかを知ること、およびブロックが最後の制御更新以後に最近になって使用されたかを調べることは不可能であり得る。
【００４４】
一実施形態では、以前にＧＡＴまたは更新ブロック情報により参照されて今は使用済みとなっているブロックがＦＢＬに存在することがある。例えば、ＧＡＴデルタ内の論理グループのためのマッピングエントリは新しい物理的ブロック（これはＦＢＬから得られる）を指すことがある。ＧＡＴ内の論理グループのためのマッピングエントリは、今は空きブロックになっている古い物理的ブロックを依然として指していることがある。ＧＡＴ内の論理グループが新しい物理的ブロックを指すようにＧＡＴデルタ内のエントリがＧＡＴにフラッシングされた後、その古い物理的ブロックはＦＢＬに加えられ得る。他の実施形態では、ＦＢＬには、予備ＧＡＴ（ＳＧＡＴ）などの他のテーブル内のあるいは他のパーティションからの空きブロックが存在し得る。
【００４５】
ステップ９０２でフラッシングが行われるべきであると判定されたならば、ＲＡＭ内のＧＡＴデルタコピー１３２はフラッシュメモリ内のＧＡＴデルタ２２０と同期させられる。しかし、ステップ９０２でフラッシングが行われるべきではないと判定されたならば、方法９００は、ＧＡＴエントリをセットするその後の要求が受け取られたならば、ＧＡＴデルタコピー１３２にさらなるエントリを書き込むために方法８００に戻る。
【００４６】
同時に出願され（２００９年１月５日）、同一の譲渡人による「Non-Volatile Memory and Method with Improved Block Management System」という米国仮特許出願（代理人整理番号：００８４５６７．６３９ＵＳ０−ＳＤＡ−１４１８）（特許文献１）は、その全体が本願明細書において参照により援用されている。
【００４７】
記憶装置において論理グループを物理アドレスにマッピングするためのアドレステーブルを維持する方法およびシステムが開示されている。この方法は、アドレステーブルにおいてエントリをセットする要求を受け取ることと、キャッシュ内におけるエントリの存在に依存して、かつキャッシュがフラッシングしきい値基準を満たすか否かに依存して、アドレステーブルキャッシュからエントリの一部を選択してアドレステーブルへフラッシングすることとを含む。フラッシングしきい値基準は、アドレステーブルキャッシュが満杯であるか、あるいは変更されているエントリのしきい値をページが超えているかということを含む。アドレステーブルおよび／またはアドレステーブルキャッシュは不揮発性メモリおよび／またはランダムアクセスメモリに格納され得る。この方法およびシステムを使用すれば、アドレステーブルキャッシュ内の変更されているエントリを単に部分的にアドレステーブルにフラッシングするために必要な書き込み操作の数および時間のオーバーヘッドが減少するので、性能の向上が生じ得る。
【００４８】
前の詳細な説明が限定ではなくて例証であると見なされるべきこと、および本発明の趣旨および範囲を定義するべく意図されているのは全ての同等物を含む添付の特許請求の範囲であるということが理解されるべきであるということが意図されている。
【図１】
0005571691.tif 000002
【図２】
0005571691.tif 000003
【図３Ａ】
0005571691.tif 000004
【図３Ｂ】
0005571691.tif 000005
【図４】
0005571691.tif 000006
【図５】
0005571691.tif 000007
【図６】
0005571691.tif 000008
【図７】
0005571691.tif 000009
【図８】
0005571691.tif 000010
【図９】
0005571691.tif 000011