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

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

Info

Publication number
JP5571691B2
JP5571691B2 JP2011544640A JP2011544640A JP5571691B2 JP 5571691 B2 JP5571691 B2 JP 5571691B2 JP 2011544640 A JP2011544640 A JP 2011544640A JP 2011544640 A JP2011544640 A JP 2011544640A JP 5571691 B2 JP5571691 B2 JP 5571691B2
Authority
JP
Japan
Prior art keywords
address table
entry
table cache
entries
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011544640A
Other languages
English (en)
Other versions
JP2012514794A (ja
Inventor
アナトリエヴィッチ ゴロベッツ,セルゲイ
ペイリー,アレクサンダー
ジルバーマン,ユージーン
ディビッド ベネット,アラン
トライスター,シャイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2012514794A publication Critical patent/JP2012514794A/ja
Application granted granted Critical
Publication of JP5571691B2 publication Critical patent/JP5571691B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Description

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

Claims (23)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/348,782 2009-01-05
US12/348,782 US8250333B2 (en) 2009-01-05 2009-01-05 Mapping address table maintenance in a memory device
PCT/US2010/020027 WO2010078545A1 (en) 2009-01-05 2010-01-04 Mapping address table maintenance in a memory device

Publications (2)

Publication Number Publication Date
JP2012514794A JP2012514794A (ja) 2012-06-28
JP5571691B2 true JP5571691B2 (ja) 2014-08-13

Family

ID=42040445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011544640A Expired - Fee Related JP5571691B2 (ja) 2009-01-05 2010-01-04 記憶装置におけるマッピングアドレステーブルの維持

Country Status (5)

Country Link
US (1) US8250333B2 (ja)
EP (1) EP2377023B1 (ja)
JP (1) JP5571691B2 (ja)
KR (1) KR20110117099A (ja)
WO (1) WO2010078545A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP5570406B2 (ja) * 2010-12-14 2014-08-13 株式会社日立製作所 メモリコントローラ、及びデータ記録装置
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9473424B2 (en) * 2011-09-19 2016-10-18 Fujitsu Limited Address table flushing in distributed switching systems
US9727453B2 (en) * 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9275095B2 (en) 2013-07-31 2016-03-01 International Business Machines Corporation Compressing a multi-version database
US8838936B1 (en) 2013-11-27 2014-09-16 NXGN Data, Inc. System and method for efficient flash translation layer
US9772781B2 (en) 2013-11-27 2017-09-26 Ngd Systems, Inc. System and method for supporting atomic writes in a flash translation layer
US9466383B2 (en) * 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
US9760295B2 (en) 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
US9436615B2 (en) 2014-10-03 2016-09-06 Sandisk Technologies Llc Optimistic data read
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
TWI534618B (zh) * 2015-07-13 2016-05-21 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
CN106372000B (zh) * 2015-07-20 2019-10-11 群联电子股份有限公司 映射表更新方法、存储器控制电路单元及存储器存储装置
US9996473B2 (en) * 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
EP3485362B1 (en) * 2016-10-04 2021-08-11 Pure Storage, Inc. Maintaining data associated with a storage device related applications
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
KR20180051706A (ko) 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
US10318421B2 (en) * 2017-04-12 2019-06-11 International Business Machines Corporation Lightweight mechanisms for selecting infrequently executed methods for eviction from code cache
TWI637651B (zh) * 2018-01-03 2018-10-01 和碩聯合科技股份有限公司 無線熱點運作方法
US10459839B1 (en) 2018-05-02 2019-10-29 International Business Machines Corporation Accelerating garbage collection of flushed logical erase blocks in non-volatile memory
US11094381B2 (en) * 2019-06-02 2021-08-17 Apple Inc. Rapid restart protection for a non-volatile memory system
US11194521B1 (en) 2020-05-27 2021-12-07 Western Digital Technologies, Inc. Rate limit on the transitions of streams to open
US11126378B1 (en) 2020-05-27 2021-09-21 Western Digital Technologies, Inc. Rate limit on the transitions of zones to open
EP4134826A1 (en) * 2021-08-09 2023-02-15 Giesecke+Devrient Mobile Security GmbH Management of memory of a processing device
KR102545175B1 (ko) * 2022-05-02 2023-06-20 삼성전자주식회사 어드레스 테이블을 포함하는 메모리 장치, 및 메모리 컨트롤러의 동작 방법
EP4276642A1 (en) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Computing system including cxl switch, memory device and storage device and operating method thereof

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895488A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US20040088474A1 (en) * 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
TWM317043U (en) * 2006-12-27 2007-08-11 Genesys Logic Inc Cache device of the flash memory address transformation layer
TW200828014A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
US7721040B2 (en) * 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks

Also Published As

Publication number Publication date
US8250333B2 (en) 2012-08-21
EP2377023A1 (en) 2011-10-19
KR20110117099A (ko) 2011-10-26
WO2010078545A1 (en) 2010-07-08
US20100174869A1 (en) 2010-07-08
JP2012514794A (ja) 2012-06-28
EP2377023B1 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
CN110678836B (zh) 用于键值存储的持久性存储器
USRE45577E1 (en) Method of writing to a flash memory including data blocks and log blocks
US9323659B2 (en) Cache management including solid state device virtualization
US7698495B2 (en) Computer system having logically ordered cache management
US8510500B2 (en) Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US9489296B1 (en) Methods, devices and systems for hardware-based garbage collection in solid state drives
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
US9990277B2 (en) System and method for efficient address translation of flash memory device
US20140068152A1 (en) Method and system for storage address re-mapping for a multi-bank memory device
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
EP2530612A1 (en) Mount-time unmapping of unused logical addresses in non-volatile memory systems
US20130097365A1 (en) Reducing a number of close operations on open blocks in a flash memory
KR101430097B1 (ko) 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140421

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140626

R150 Certificate of patent or registration of utility model

Ref document number: 5571691

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees