説明

記憶装置におけるマッピングアドレステーブルの維持

方法およびシステムは、記憶装置において論理グループを物理アドレスにマッピングするためのアドレステーブルを維持する。この方法は、アドレステーブルにおいてエントリをセットする要求を受け取ることと、アドレステーブルキャッシュ内のエントリを、キャッシュ内におけるエントリの存在に依存し、かつキャッシュがフラッシングしきい値基準を満たすか否かに依存して、選択してフラッシングすることとを含む。フラッシングされるエントリは、アドレステーブルキャッシュの最大容量未満を含む。フラッシングしきい値基準は、アドレステーブルキャッシュが満杯であるか否かあるいは変更されているエントリのしきい値をページが超えているか否かを含む。アドレステーブルおよび/またはアドレステーブルキャッシュは不揮発性メモリおよび/またはランダムアクセスメモリに格納され得る。この方法およびシステムを使用すれば、アドレステーブルキャッシュをアドレステーブルに部分的にフラッシングするために必要な書き込み操作の数および時間が減少するので、性能の向上が生じ得る。

【発明の詳細な説明】
【技術分野】
【0001】
本願は、一般的に記憶装置に関する。より具体的には、本願は、再プログラム可能な不揮発性半導体フラッシュメモリにおける論理対物理マッピングアドレステーブルの維持に関する。
【背景技術】
【0002】
フラッシュメモリなどの不揮発性メモリシステムは消費者向け製品に用いられるべく広く採用されている。フラッシュメモリは、例えばホスト装置間で持ち運ばれ得る携帯可能なメモリカードの形で、あるいはホスト装置に埋め込まれたソリッドステートディスク(SSD)として、種々の形で見出され得る。従来のフラッシュメモリシステムにデータを書き込むときには、ホストは通例メモリシステムの論理アドレス空間中のアドレスにデータの書き込み、データの読み出しを行う。メモリシステムはそのとき一般的に論理アドレス空間とメモリの物理的ブロックまたはメタブロックとの間でデータをマッピングし、そのデータは論理アドレス空間内のレンジに対応する固定された論理グループに格納される。一般的に、各々の固定された論理グループはメモリシステムの別々の物理的ブロックに格納される。メモリシステムは論理アドレス空間が物理メモリにどのようにマッピングされているかを追跡するけれども、ホストはそれを知らない。ホストは論理アドレス空間の中の自分自身のデータファイルのアドレスを追跡するけれども、メモリシステムは一般にそのマッピングについての知識なしで動作する。
【0003】
メモリシステム内のアドレステーブルは、論理アドレス空間の物理メモリへのマッピングを含む。特に、アドレステーブルは、メモリシステムにおける論理グループの物理的ブロックへのマッピングを示すページを含む。既にマッピングされている論理グループにホストがデータを書き込むとき、アドレステーブルは、関係するマッピング情報で更新され得る。
【0004】
或るメモリシステムは、データが書き込まれるときのアドレステーブルに対する変更を一時的に格納するためにアドレステーブルのためのキャッシュを包含する。アドレステーブルに書き込む代わりにアドレステーブルキャッシュに書き込めば、時間と書き込み操作のオーバーヘッドとを或る程度節約することができる。アドレステーブルキャッシュを有するメモリシステムは、キャッシュ内の実際の変更されたエントリの量に関わらず、アドレステーブルのためのキャッシュ全体を更新することによって、キャッシュ内の変更されたエントリを定期的にアドレステーブルと同期させることができる。しかし、アドレステーブル内に百ページ以上を有し得る大きなメモリシステムでは、アドレステーブルキャッシュ内の変更されたエントリでアドレステーブル全体を更新すると、性能に悪影響が及んでメモリシステムにおける他の操作が遅れることがある。変更が全く行われなかったならば、アドレステーブル内のページは不必要に再書き込みされることがある。アドレステーブル全体が書かれるときには、アドレステーブルを格納するために使用されるフラッシュメモリセルが早く損耗することがある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】「Non-Volatile Memory and Method with Improved Block Management System」という米国仮特許出願
【発明の概要】
【0006】
前述した問題を処理するために、論理グループを物理アドレスにマッピングするアドレステーブルを維持する方法およびシステムが開示される。
本発明の第1の態様に従って、記憶装置において論理グループを物理アドレスにマッピングするためのアドレステーブルを維持する方法が開示される。この方法は、論理グループを物理アドレスにマッピングするエントリをアドレステーブルにおいてセットする要求を受け取ることを含む。アドレステーブルは複数のページを含む。この方法は、アドレステーブルに対する変更を記憶するアドレステーブルキャッシュ内にエントリが存在するかを判定することと、アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することをも含む。エントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たすならば、アドレステーブルのページの量が選択される。選択されるページ量はアドレステーブル内のページの総数よりは少ない。アドレステーブル内のページは、変更されているエントリと変更されていないエントリとを含む。選択されたページ内の変更されているエントリはアドレステーブルキャッシュからアドレステーブルにフラッシングされる。要求されたエントリはアドレステーブルキャッシュ内で割り当てられてセットされる。
【0007】
或る実施形態では、フラッシングしきい値基準はアドレステーブルキャッシュの最大容量を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルキャッシュ内のエントリの数がアドレステーブルキャッシュの最大容量であるかを判定することを含む。他の実施形態では、フラッシングしきい値基準は変更されているエントリのしきい値を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えているかを判定することを含む。
【0008】
アドレステーブル内のフラッシングするページ量を選択することは、最大数の変更されているエントリを有するページを選択することを含み得る。代わりに、アドレステーブル内のフラッシングするページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含み得る。フラッシングされるべく選択されるページの量は1であり得る。変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングすることは、アドレステーブル内のエントリをアドレステーブルキャッシュ内の変更されているエントリで更新することを含み得る。
【0009】
この方法は、アドレステーブルキャッシュ内の論理グループのための既存のエントリを、そのエントリがアドレステーブルキャッシュ内に既に存在するならば、更新することをさらに含み得る。この方法は、アドレステーブルキャッシュ内の論理グループのためのエントリを、そのエントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たしていなければ、割り当ててセットすることをも含み得る。アドレステーブルおよび/またはアドレステーブルキャッシュは、不揮発性メモリまたはランダムアクセスメモリのうちの1つ以上に格納され得る。
【0010】
他の1つの態様に従って、記憶装置は、論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルと、アドレステーブルに対する変更を記憶するアドレステーブルキャッシュと、コントローラと、を備える。コントローラは、論理グループを物理アドレスにマッピングするエントリをアドレステーブルにおいてセットする要求を受け取るように構成される。アドレステーブルは複数のページを含む。コントローラは、エントリがアドレステーブルキャッシュ内に存在するかを判定すると共に、アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するようにも構成される。エントリがアドレステーブルキャッシュ内に存在しなくてアドレステーブルキャッシュがフラッシングしきい値基準を満たすとコントローラが判定すれば、アドレステーブルのページの量が選択される。選択されるページ量はアドレステーブル内のページの総数よりは少ない。アドレステーブル内のページは、変更されているエントリと変更されていないエントリとを含む。コントローラは、選択されたページ内の変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングする。要求されたエントリは、コントローラによって、アドレステーブルキャッシュ内で割り当てられてセットされる。
【0011】
或る実施形態では、フラッシングしきい値基準はアドレステーブルキャッシュの最大容量を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルキャッシュ内のエントリの数がアドレステーブルキャッシュの最大容量であるかを判定するようにコントローラが構成されることを含む。他の実施形態では、フラッシングしきい値基準は変更されているエントリのしきい値を含むことができ、アドレステーブルキャッシュが基準を満たすかを判定することは、アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えているかを判定するようにコントローラが構成されることを含む。
【0012】
アドレステーブル内のフラッシングするページ量を選択することは、最大数の変更されているエントリを有するページを選択することを含み得る。代わりに、アドレステーブル内のフラッシングするページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含み得る。フラッシングされるべく選択されるページの量は1であり得る。変更されているエントリをアドレステーブルキャッシュからアドレステーブルにフラッシングすることは、アドレステーブル内のエントリをアドレステーブルキャッシュ内の変更されているエントリで更新することを含み得る。
【0013】
コントローラは、アドレステーブルキャッシュ内の論理グループのための既存のエントリを、そのエントリがアドレステーブルキャッシュ内に既に存在するならば、更新するようにさらに構成され得る。コントローラは、論理グループのためのエントリを、エントリがアドレステーブルキャッシュ内に存在せず、アドレステーブルキャッシュがフラッシングしきい値基準を満たしていなければ、アドレステーブルキャッシュにおいて割り当ててセットするようにも構成され得る。アドレステーブルおよび/またはアドレステーブルキャッシュは、不揮発性メモリまたはランダムアクセスメモリのうちの1つ以上に格納され得る。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態を実施するのに適するメモリシステムの主なハードウェアコンポーネントを示す。
【図2】一実施形態に従って、セクタの物理的グループ(すなわち、メタブロック)に編成されてコントローラのメモリマネージャにより管理されるメモリを示す。
【図3A】一実施形態に従う、論理グループとメタブロックとの間のマッピングを示す。
【図3B】論理グループとメタブロックとの間のマッピングを示す。
【図4】コントローラおよびフラッシュメモリに実装されたメタブロック管理システムの略ブロック図である。
【図5】初期状態のグループアドレステーブルブロックを示す。
【図6】データが再書き込みされた後のグループアドレステーブルブロックを示す。
【図7】グループアドレステーブルキャッシュ更新後のグループアドレステーブルブロックを示す。
【図8】論理グループを物理アドレスにマッピングするグループアドレステーブルおよびグループアドレステーブルキャッシュを維持する方法を示す流れ図である。
【図9】ランダムアクセスメモリおよびフラッシュメモリにおいてグループアドレステーブルキャッシュを維持する方法を示す流れ図である。
【発明を実施するための形態】
【0015】
図1は、本発明の実施形態を実施するのに適するメモリシステムの主なハードウェアコンポーネントを示す。メモリシステム20は、通例、ホストインターフェイスを通してホスト10と協同する。メモリシステムは、通例、メモリカードあるいはソリッドステートディスク(SSD)ドライブなどの埋め込みメモリシステムの形をとる。メモリシステム20は、コントローラ100によって動作を制御されるメモリ200を含む。メモリ200は、1つ以上の集積回路チップに分散する不揮発性メモリセルの1つ以上のアレイを含む。コントローラ100は、インターフェイス110、プロセッサ120、随意のコプロセッサ121、ROM122(読み出し専用メモリ)、RAM130(ランダムアクセスメモリ)および随意のプログラム可能な不揮発性メモリ124を含む。インターフェイス110は、コントローラをホストにインターフェイスさせる1つのコンポーネントと、メモリ200にインターフェイスする他の1つのコンポーネントとを有する。不揮発性ROM122および/または随意の不揮発性メモリ124に格納されているファームウェアは、プロセッサ120がコントローラ100の機能を実行するためのコードを提供する。エラー訂正コードは、プロセッサ120または任意的なコプロセッサ121により処理され得る。1つの代わりの実施形態では、コントローラ100は状態マシン(図示せず)により実装される。さらに他の1つの実施形態では、コントローラ100はホストの中に実装される。
【0016】
図2は、一実施形態に従って、セクタの物理的グループ(すなわち、メタブロック)に編成されてコントローラのメモリマネージャにより管理されるメモリを示す。メモリ200はメタブロックMB0 ・・・MBi に編成され、各メタブロックは、一緒に消去可能な物理的セクタS0 ・・・SN-1 のグループである。
【0017】
ホスト10は、ファイルシステムまたはオペレーティングシステムの下でアプリケーションを動作させるときにメモリ200にアクセスする。通例、ホストシステムは論理セクタ単位でデータをアドレス指定し、例えば各セクタは512バイトのデータを包含し得る。また、ホストが1つ以上の論理セクタからそれぞれ成る論理クラスタを単位としてメモリシステムに読み書きすることも普通のことである。或るホストシステムでは、ホストにおいて低レベルのメモリ管理を行う随意のホスト側メモリマネージャが存在し得る。大抵の場合、読み出し操作または書き込み操作の間に、ホスト10は、本質的に、連続するアドレスを有するデータの論理セクタのストリングを包含するセグメントを読み出すかあるいは書き込むためにメモリシステム20にコマンドを発する。
【0018】
フラッシュメモリ200のメタブロックの中でのホスト論理セクタのデータの記憶および検索を管理するメモリ側メモリマネージャがメモリシステム20のコントローラ100に実装される。好ましい実施形態では、メモリマネージャは、メタブロックの消去操作、読み出し操作および書き込み操作を管理するための多数のソフトウェアモジュールを包含する。メモリマネージャは、また、その動作に関連付けられているシステム制御データおよびディレクトリデータをフラッシュメモリ200およびコントローラRAM130の中に維持する。
【0019】
図3A(i)〜3A(iii)は、一実施形態に従う、論理グループとメタブロックとの間のマッピングを示す。物理メモリのメタブロックは、論理グループのデータのN個の論理セクタを記憶するためのN個の物理的セクタを有する。図3A(i)は論理グループLGiからのデータを示し、論理セクタは連続的な論理的順序「シーケンシャル」であると言われる。一般的に、メタブロックは異なる順序でデータを格納することがあり、その場合にはメタブロックは「非シーケンシャル」または「カオス的」であると言われる。
【0020】
論理グループの最下位アドレスと、それがマッピングされているメタブロックの最下位アドレスとの間にはオフセットが存在し得る。この場合、論理セクタアドレスは、メタブロックの中で論理グループの底部から頂部へループとしてラップアラウンドする。例えば、図3A(iii)では、メタブロックは、その第1の位置に、論理セクタkのデータから格納する。最後の論理セクタN−1に達すると、それはセクタ0にラップアラウンドし、最後に、論理セクタk−1と関連付けられているデータをその最後の物理的セクタに格納する。好ましい実施形態では、メタブロックの第1の物理的セクタに格納されているデータの開始論理セクタアドレスを特定するなど、オフセットを特定するためにページタグが使用される。2つのブロックが、それらがページタグにより違っているに過ぎないときにそれらの論理セクタが同様の順序で格納されるように、考慮される。
【0021】
図3Bは、論理グループとメタブロックとの間のマッピングを示す。データが現在更新されつつある少数の論理グループを除いて、各論理グループは一意のメタブロックにマッピングされる。論理グループは、更新された後に、異なるメタブロックにマッピングされ得る。以下に説明するように、マッピング情報は、グループアドレステーブルおよびグループアドレステーブルキャッシュなどの、論理対物理ディレクトリのセットにおいて維持される。
【0022】
図4は、コントローラおよびフラッシュメモリに実装されたメタブロック管理システムのブロック図である。メタブロック管理システムは、コントローラ100に実装される種々の機能モジュールを含み、フラッシュメモリ200およびコントローラRAM130内のテーブルおよびリストにおいて種々の制御データを維持する。コントローラ100に実装される機能モジュールは、インターフェイスモジュール110と論理対物理アドレス変換モジュール140とを含む。インターフェイス110により、メタブロック管理システムはホストシステムとインターフェイスすることができる。論理対物理アドレス変換モジュール140は、ホストからの論理アドレスを物理的メモリ位置にマッピングする。
【0023】
動作中、メタブロック管理システムは、アドレス情報、制御情報およびステータス情報などの制御データを生成し、それらを用いて動作する。制御データの多くは小さなサイズの頻繁に変化するデータでありがちなので、それを大きなブロック構造を有するフラッシュメモリに容易に格納して効率的に維持することはできない。より静的な制御データを不揮発性フラッシュメモリに格納し、より少量のより変化する制御データを、より効率的な更新およびアクセスのためにコントローラRAMに置くために、階層的分散型方式を採用することができる。電源シャットダウンまたは障害が発生した場合、この方式により、不揮発性メモリ内の制御データの小さなセットをスキャンすることによって揮発性コントローラRAM内の制御データを速やかに再構築することができる。
【0024】
不揮発性フラッシュメモリ200は、グループアドレステーブル(GAT)210およびグループアドレステーブルキャッシュ(GATデルタ)220などの制御データを記憶することができる。GAT210は、セクタの論理グループと、それらの対応するメタブロックとの間のマッピングを追跡する。GAT210は、各論理グループに1つずつのエントリを包含し、それらは論理アドレスに従ってシーケンシャルに配列されている。GAT210は複数のページを含み、各ページは、メモリシステム内の全ての論理グループのためにメタブロックアドレスを定義するエントリを含む。GATデルタ220は、GAT210のマッピングにおける変更されたエントリのリストであるキャッシュとして作用する。1つの実施形態では、GAT210およびGATデルタ220の両方がフラッシュメモリ200に格納される。GATデルタ220からGAT210への変更されたエントリのフラッシングは、この実施形態ではフラッシュメモリ200の中で行われる。
【0025】
或る実施形態では、RAM130はGATデルタコピー132を含むことができる。GATデルタコピー132は、変更されたエントリの、GATデルタ220内のものと同じリストを包含することができる。定期的に、コントローラは、GATデルタコピー132とGATデルタ220とが同じ情報を包含するように、これらを同期させることができる。このプロセスは、以下で図9と関連してより詳しく述べられる。
【0026】
図5〜図7は、(1)空のGATデルタを有する初期状態、(2)更新されたGATデルタで論理グループが再書き込みされた後、(3)GATデルタがGATに部分的にフラッシングされた後のグループアドレステーブル(GAT)ブロック500を示す。図8は、論理グループを物理アドレスにマッピングするグループアドレステーブルおよびグループアドレステーブルキャッシュを維持する方法800を示す流れ図である。方法800について図8に記載されているステップの各々は、単独で、あるいは他のステップと組み合わされて、実行され得る。
【0027】
図5は、初期状態のグループアドレステーブル(GAT)ブロック500を示す。GATブロック500は、空きブロックリスト(FBL)504と、GATデルタ506と、複数のページを含むGAT508とを包含するマスターインデックスページ502を含み、各ページは、書き込まれた論理グループのためのメタブロックアドレスをマッピングするエントリを含む。FBL504は、後に論理グループにマッピングされ得る利用可能な空きブロックをリストする。FBL504は、空きブロックが前に割り当てられた順序であることができる。図5では、代表的なFBL504は、メタブロックF、G、H、J、およびKを空きブロックとしてリストしている。
【0028】
メモリシステムの初期状態では、書き込まれた論理グループは、GAT508内のページのエントリにおいて物理的メタブロックに既に割り当てられている。図5の代表的なGAT508は、論理グループに対応する416個のエントリを各々有するページ0、1、2、および3を含む。GATデルタ506は、初期状態ではGAT508に対して変更がまだ行われていないので、空である。換言すれば、図5に示されている初期状態では、GAT508は、論理グループ対物理的メタブロックのための最も更新されたマッピングを包含する。
【0029】
図6は、ホストによってデータが再書き込みされた後のGATブロック500を示す。図5に示されているマスターインデックスページ502の旧コピーは図6には示されていない。ホストからデータが書き込まれるとき、論理グループを物理的メタブロックにマッピングするエントリをGAT508においてセットする要求が、図8に示されている方法800のステップ802において受け取られ得る。GATデルタ506は、GAT508より新しいマッピング情報を包含し得るので、セット要求において指定されているエントリが既に存在するかを調べるためにGATデルタ506がステップ804で検査される。ステップ804でそのエントリが既に存在すれば、ステップ814で、それは要求からの新しいマッピング情報で更新される。或る実施形態では、エントリがGATデルタ506内に既に存在すれば、その既に存在するエントリについての論理グループを包含するGAT508内の対応するページはGATデルタ506から直ぐに更新され得る。他の実施形態では、エントリがGATデルタ506内に既に存在すれば、要求で指定されている論理グループのためにGATデルタ506において新しいエントリが割り当てられてセットされ得る。
【0030】
しかし、ステップ804においてエントリがGATデルタ506内に既に存在しているのでない場合、ステップ806でフラッシングしきい値基準が満たされなければ、エントリが割り当てられてセットされ得る。この場合、エントリは、ステップ812および814で要求に基づいてGATデルタ506内で割り当てられてセットされる。フラッシングしきい値基準は、GAT508内の1つ以上のページがしきい値より多い数の変更されたエントリを有する場合あるいは一定時間が経過した後に、GATデルタ506がその最大容量に達することを含む。フラッシングしきい値基準は、マスターインデックスページ502が他の理由で更新された場合に先制的フラッシングを行うことも含み得る。
【0031】
他の1つのフラッシングしきい値基準は、GAT508が圧縮される場合を含み得る。一実施形態では、GAT508が圧縮されるとき、その圧縮されたGATブロックからGAT508内の有効なページがコピーされ、GAT508のための更新されたインデックスがマスターインデックスページ502に書き込まれる。他の1つの実施形態では、GAT508が圧縮されるとき、GAT508内のページはコピーされて、GATデルタ506からの変更されているエントリで更新される。この圧縮の場合、GAT508の圧縮および更新の後にGATデルタ506は部分的にあるいは完全にフラッシングされ得る。最低でも、この圧縮の場合、GATデルタ506は、圧縮されたGAT508内のページのためのエントリを最早含まない。
【0032】
従って、エントリがGATデルタ506内に存在していなくてステップ806でフラッシングしきい値基準が満たされなければ、GATデルタ506はフラッシングされず、GAT508と同期させられる。ホストがデータを論理グループに再書き込みするとき、そのデータが書き込まれる対応する物理的メタブロックは、GAT508に直接にではなくてステップ812および814でGATデルタ506内のエントリに記録される。例えば、図6では、ホストは論理グループ410、411、520、413、および1101を再書き込みする。これらの論理グループのためのエントリをセットする要求がステップ802で受け取られ得る。ステップ804でGATデルタ506は空であるので、これらの論理グループのためのエントリは図5のGATデルタ506内に既に存在してはいない。GATデルタ506内にエントリが存在しないことに加えて、GATデルタ506のためのフラッシングしきい値基準がステップ806で満たされないので、ステップ812および814で論理グループのためのエントリが割り当てられてセットされる。ステップ812および814の後、GATデルタ506は最早空ではなくて、論理グループ410、411、520、413、および1101を物理的メタブロックF、G、H、J、およびKにそれぞれマッピングするエントリを含む。メモリコントローラは、これらのブロックのためのデータを、FBL504においてリストされている利用可能な空きブロックに基づいて、空きブロックF、G、H、J、およびKにそれぞれ書き込む。
【0033】
論理グループ410、411、520、413、および1101は前は物理的メタブロックA、B、C、D、およびEにそれぞれマッピングされていた。この段階では、GAT508は依然としてこの最初のマッピングを包含しているけれども、これらの論理グループのためのGAT508内のエントリは今はGATデルタ506内のエントリによって取って代わられる。図6は、GAT508内の取って代わられた物理的メタブロックA、B、C、D、およびEを灰色で示している。物理的メタブロックA、B、C、D、およびEは有効なデータを最早包含していないので、FBL504は今はこれらのメタブロックを空きブロックとしてリストしている。
【0034】
FBL504、GATデルタ506およびGAT508を含むマスターインデックスページ502は単一の書き込み操作時に更新されかつ/または単一のデータ構造の中に包含され得る。マスターインデックスページ502は、例えば、更新ブロック情報(例えば、更新されている論理グループ、ブロック位置、および書き込まれている長さ)、アクティブなバイナリキャッシュブロックへのポインタ、GAT508のページのためのインデックス、損耗レベリングカウンタ、および他の情報などの、単一の書き込み操作時に更新される他の情報も含むことができる。マスターインデックスページ502は、中に包含されるテーブルの同期スナップショットを提供するので、GAT508のページへの全ての書き込みの後に完全に再書き込みされる必要はない。
【0035】
マスターインデックスページ502内の全ての物理的ブロック参照は、紛失ブロックあるいは二重参照されるブロックがないように、単一書き込み操作時に更新される。全ての物理的ブロックは、GAT508、マスターインデックスページ502により、あるいは制御ブロック(例えば、GAT508内のブロックへのポインタ、バイナリキャッシュブロックなど)において、参照される。ブロックがFBL504から取られるとき、ブロックは、マスターインデックスページ502内の更新ブロック情報において任意的に参照され得る。FBL504から取られたブロックは、その後、GATデルタ506およびGAT508により参照される。マスターインデックスページ502に対して単一の書き込み操作が行われるときにブロックのための参照は、複数の場所において、例えば、新しい割り当てられたブロックが消滅して新しい空きブロックが出現するFBL504において、また新しい参照としてGAT508において、変更される。従って、別々の書き込みを有する1つのアトミック書き込み操作を用いてFBL504およびGAT508を同時に更新する代わりに、マスターインデックスページ502に対する単一の書き込み操作がFBL504、GAT508、ブロック情報、および論理対物理テーブルをまとめて更新する。
【0036】
図7は、図6からのマスターインデックスページ502の旧コピーを含む、GAT更新の後のGATブロック500を示す。フラッシングしきい値基準は、GATデルタ506からの対応する変更されているエントリでのGAT508の部分的更新を誘発し得る。例えば、図7のGATブロック500に示されているように、(1)論理グループを物理的メタブロックにマッピングするエントリをGAT508においてセットする要求がステップ802で受け取られ、(2)エントリがステップ804でGATデルタ506内に既に存在してはおらず、(3)フラッシングしきい値基準がステップ806で満たされるならば、ステップ808および810でGAT508の部分的更新が行われる。ステップ808および810でGAT508の部分的更新が行われた後、前述したように、その要求されたエントリはステップ812および814でGATデルタ506内で割り当てられてセットされ得る。
【0037】
GAT508の部分的更新が行われるとき、GAT508内の取って代わられたエントリの全てが更新されるわけではない。代わりに、GAT508の部分的更新は、ステップ808で選択されたGAT508の幾つかのページを含む。ステップ808で更新のために選択されるGAT508内のページは、最大数の変更されたエントリを有するページあるいはしきい値より多い一定数の変更されたエントリを有するページであり得る。選択されるページは、他の基準に基づくこともできる。選択されるページの数は、1ページあるいはGAT508内のページの総数より少ない任意のページの数であり得る。
【0038】
ステップ806でフラッシングしきい値基準が満たされて部分的更新が誘発されたとき、GAT508の選択されたページのためのGATデルタ506内のエントリは、ステップ810でGAT508のこれらのページにフラッシングされる。図7では、ステップ808でGATページ0が選択されているが、それがGAT508内の他のページと比べて最大数の変更されたエントリを有するから、すなわち、GATページ0が論理グループ410、411、および413のための3つの変更されたエントリを有するのに対してGATページ1および2はそれぞれ1つの変更されたエントリを有するからである。これらの論理グループのためのGAT508内のエントリは、論理グループ410、411、および413が今GAT508内で物理的メタブロックF、G、およびJにそれぞれマッピングされるように、ステップ810でGATデルタからのエントリで更新される。
【0039】
論理グループ410、411、および413を物理的メタブロックA、B、およびDにそれぞれマッピングしていた前のGATページ0はオーバーライトされる(図7において灰色で示されている)。GAT508の部分的更新が完了した後、図7のGATデルタ506は前にセットされていた論理グループ520および1101のための残りの変更されているマッピングのためのエントリを包含している。GATページ0だけがフラッシングされるべく選択されたので、論理グループ520および1101のためのGAT508内の対応するページは更新されない。
【0040】
GATデルタ全体をGATにフラッシングする代わりにGATデルタの一部をGATにフラッシングすることにより、フラッシングのプロセスにおける書き込み操作の数と所要時間とが低減される。例えば、大きなメモリシステムにおいてGAT(これは100ページ以上を含み得る)の全てのページのためにGATデルタからエントリをフラッシングする代わりに、GATの1ページだけが、GATデルタからの変更されているエントリで更新される。GATアドレステーブルを維持するのに必要な時間および操作が少なくなるので、メモリシステムの総合的な性能が向上し得る。
【0041】
図9は、一実施形態でランダムアクセスメモリおよびフラッシュメモリにおいてグループアドレステーブルキャッシュを維持する方法900を示す流れ図である。方法900は、例えば、RAM130内のGATデルタコピー132とフラッシュメモリ200内のGATデルタ220とを用いて実行され得る。GATデルタ220に対する変更は、始めにGATデルタコピー132に書き込まれ、定期的にフラッシュメモリ200内のGATデルタ220と同期させられ得る。フラッシュメモリ200内のGATデルタ220内のエントリは、その後、GATブロック500および方法800と関連して前に図5〜図8を参照して説明したように、同じくフラッシュメモリ200内にあるGAT210に定期的にフラッシングされ得る。RAM130はフラッシュメモリ200と比べてより迅速なアクセス時間および修正時間を有するので、RAM130内のGATデルタコピー132への書き込みは、メモリシステム全体の性能をさらに高めるのに資することができる。
【0042】
図9において、前述した方法800の場合と同じく、論理グループを物理的メタブロックにマッピングするエントリがセットあるいは更新され得る。換言すると、方法800におけるGATエントリをセットする要求の結末は、(1)ステップ802、804、および814を使用するGATデルタコピー132内の既存のGATエントリの更新、(2)ステップ802、804、806、812、および814を使用するGATデルタコピー132におけるGATエントリの割り当ておよびセッティング、または(3)ステップ802〜814を使用する、更新するGATページの選択、変更されたエントリのGATデルタからGATへのフラッシング、およびGATデルタコピー132における新しいエントリの割り当ておよびセッティングであり得る。しかし、図5〜図8と関連して前述したように、フラッシュメモリ200内のGATデルタ220にエントリを書き込む代わりに、エントリはRAM130内のGATデルタコピー132に書き込まれる。
【0043】
GATエントリをセットする要求が方法800で遂行された後、ステップ902でGATデルタコピー132をGATデルタ220にフラッシングするかが判定される。GATデルタコピー132のGATデルタ220へのフラッシングは、例えば、空きブロックリスト(FBL)内のブロックの数が尽きたときに行われ得る。新しいブロックはFBLから割り当てられ得るだけであるから、FBLは、空であるときには、もっと多くの空きブロックを持たなければならない。FBLが空のままならば、初期化中にどのブロックをスキャンするべきかを知ること、およびブロックが最後の制御更新以後に最近になって使用されたかを調べることは不可能であり得る。
【0044】
一実施形態では、以前にGATまたは更新ブロック情報により参照されて今は使用済みとなっているブロックがFBLに存在することがある。例えば、GATデルタ内の論理グループのためのマッピングエントリは新しい物理的ブロック(これはFBLから得られる)を指すことがある。GAT内の論理グループのためのマッピングエントリは、今は空きブロックになっている古い物理的ブロックを依然として指していることがある。GAT内の論理グループが新しい物理的ブロックを指すようにGATデルタ内のエントリがGATにフラッシングされた後、その古い物理的ブロックはFBLに加えられ得る。他の実施形態では、FBLには、予備GAT(SGAT)などの他のテーブル内のあるいは他のパーティションからの空きブロックが存在し得る。
【0045】
ステップ902でフラッシングが行われるべきであると判定されたならば、RAM内のGATデルタコピー132はフラッシュメモリ内のGATデルタ220と同期させられる。しかし、ステップ902でフラッシングが行われるべきではないと判定されたならば、方法900は、GATエントリをセットするその後の要求が受け取られたならば、GATデルタコピー132にさらなるエントリを書き込むために方法800に戻る。
【0046】
同時に出願され(2009年1月5日)、同一の譲渡人による「Non-Volatile Memory and Method with Improved Block Management System」という米国仮特許出願(代理人整理番号:0084567.639US0−SDA−1418)(特許文献1)は、その全体が本願明細書において参照により援用されている。
【0047】
記憶装置において論理グループを物理アドレスにマッピングするためのアドレステーブルを維持する方法およびシステムが開示されている。この方法は、アドレステーブルにおいてエントリをセットする要求を受け取ることと、キャッシュ内におけるエントリの存在に依存して、かつキャッシュがフラッシングしきい値基準を満たすか否かに依存して、アドレステーブルキャッシュからエントリの一部を選択してアドレステーブルへフラッシングすることとを含む。フラッシングしきい値基準は、アドレステーブルキャッシュが満杯であるか、あるいは変更されているエントリのしきい値をページが超えているかということを含む。アドレステーブルおよび/またはアドレステーブルキャッシュは不揮発性メモリおよび/またはランダムアクセスメモリに格納され得る。この方法およびシステムを使用すれば、アドレステーブルキャッシュ内の変更されているエントリを単に部分的にアドレステーブルにフラッシングするために必要な書き込み操作の数および時間のオーバーヘッドが減少するので、性能の向上が生じ得る。
【0048】
前の詳細な説明が限定ではなくて例証であると見なされるべきこと、および本発明の趣旨および範囲を定義するべく意図されているのは全ての同等物を含む添付の特許請求の範囲であるということが理解されるべきであるということが意図されている。

【特許請求の範囲】
【請求項1】
論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルを前記記憶装置において維持する方法であって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取るステップと、
前記アドレステーブルに対する変更を記憶するアドレステーブルキャッシュ内に前記エントリが存在するかを判定するステップと、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップと、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択するステップと、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングするステップと、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定することを含む方法。
【請求項3】
請求項1記載の方法において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定することを含む方法。
【請求項4】
請求項1記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの最大数を有するページを選択することを含む方法。
【請求項5】
請求項1記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含む方法。
【請求項6】
請求項1記載の方法において、
選択される前記ページ量は、1である方法。
【請求項7】
請求項1記載の方法において、
前記フラッシングするステップは、前記選択されたページのための前記アドレステーブル内のエントリを前記アドレステーブルキャッシュ内の変更されているエントリで更新することを含む方法。
【請求項8】
請求項1記載の方法において、
前記エントリが前記アドレステーブルキャッシュ内に存在するならば、
前記要求に基づいて前記論理グループのための存在するエントリを更新するステップと、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たさないならば、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
をさらに含む方法。
【請求項9】
請求項1記載の方法において、
前記アドレステーブルまたは前記アドレステーブルキャッシュのうちの1つ以上は、不揮発性メモリまたはランダムアクセスメモリのうちの1つ以上に格納される方法。
【請求項10】
記憶装置であって、
論理グループを前記記憶装置内の物理アドレスにマッピングするためのアドレステーブルと、
前記アドレステーブルに対する変更を記憶するアドレステーブルキャッシュと、
コントローラであって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取り、
前記エントリが前記アドレステーブルキャッシュ内に存在するかを判定し、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定し、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択し、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングし、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当て、かつ
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするように構成されるコントローラと、
を備える記憶装置。
【請求項11】
請求項10記載の記憶装置において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定するように前記コントローラが構成されることを含む記憶装置。
【請求項12】
請求項10記載の記憶装置において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定することは、前記アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定するように前記コントローラが構成されることを含む記憶装置。
【請求項13】
請求項10記載の記憶装置において、
前記ページ量を選択することは、変更されているエントリの最大数を有するページを選択するように前記コントローラが構成されることを含む記憶装置。
【請求項14】
請求項10記載の記憶装置において、
前記ページ量を選択することは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択するように前記コントローラが構成されることを含む記憶装置。
【請求項15】
請求項10記載の記憶装置において、
選択される前記ページ量は、1である記憶装置。
【請求項16】
請求項10記載の記憶装置において、
前記フラッシングすることは、前記選択されたページのためのアドレステーブル内のエントリを前記アドレステーブルキャッシュ内の変更されているエントリで更新するように前記コントローラが構成されることを含む記憶装置。
【請求項17】
請求項10記載の記憶装置において、
前記コントローラは、
前記エントリが前記アドレステーブルキャッシュ内に存在するならば、
前記要求に基づいて前記論理グループのための存在するエントリを更新し、
前記エントリが前記アドレステーブルキャッシュ内に存在せず、前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たさないならば、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当て、かつ
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするようにさらに構成される記憶装置。
【請求項18】
請求項10記載の記憶装置において、
不揮発性メモリとランダムアクセスメモリとをさらに備え、前記アドレステーブルまたは前記アドレステーブルキャッシュのうちの1つ以上は前記不揮発性メモリまたは前記ランダムアクセスメモリのうちの1つ以上に格納される記憶装置。
【請求項19】
論理グループを記憶装置内の物理アドレスにマッピングするためのアドレステーブルを前記記憶装置において維持する方法であって、
複数のページを含む前記アドレステーブルにおいて、論理グループを前記記憶装置内の物理アドレスにマッピングするためのエントリをセットする要求を受け取り、かつ前記エントリを加えることまたは更新することを含むエントリをセットするステップと、
アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップと、
前記アドレステーブルキャッシュが前記フラッシングしきい値基準を満たすならば、
前記アドレステーブル内の、変更されているエントリと変更されていないエントリとを含むページの総数より少ない量の前記アドレステーブルのページ量を選択するステップと、
選択されたページのための変更されているエントリを前記アドレステーブルキャッシュから前記アドレステーブルにフラッシングするステップと、
前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリを割り当てるステップと、
前記要求に基づいて前記アドレステーブルキャッシュにおいて前記論理グループのためのエントリをセットするステップと、
を含む方法。
【請求項20】
請求項19記載の方法において、
前記フラッシングしきい値基準は、前記アドレステーブルキャッシュの最大容量を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルキャッシュ内のエントリの数が前記アドレステーブルキャッシュの最大容量であるかを判定することを含む方法。
【請求項21】
請求項19記載の方法において、
前記フラッシングしきい値基準は、変更されているエントリのしきい値を含み、
前記アドレステーブルキャッシュがフラッシングしきい値基準を満たすかを判定するステップは、前記アドレステーブルのページ内の変更されているエントリの数が変更されているエントリのしきい値を超えるかを判定することを含む方法。
【請求項22】
請求項19記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの最大数を有するページを選択することを含む方法。
【請求項23】
請求項19記載の方法において、
前記ページ量を選択するステップは、変更されているエントリの所定のしきい値より多い数の変更されているエントリを有するページを選択することを含む方法。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2012−514794(P2012−514794A)
【公表日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2011−544640(P2011−544640)
【出願日】平成22年1月4日(2010.1.4)
【国際出願番号】PCT/US2010/020027
【国際公開番号】WO2010/078545
【国際公開日】平成22年7月8日(2010.7.8)
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】