JP2009507302A - フラッシュドライブの高速ウェアレベリング - Google Patents

フラッシュドライブの高速ウェアレベリング Download PDF

Info

Publication number
JP2009507302A
JP2009507302A JP2008529311A JP2008529311A JP2009507302A JP 2009507302 A JP2009507302 A JP 2009507302A JP 2008529311 A JP2008529311 A JP 2008529311A JP 2008529311 A JP2008529311 A JP 2008529311A JP 2009507302 A JP2009507302 A JP 2009507302A
Authority
JP
Japan
Prior art keywords
memory
pointer
wear leveling
erased
leveling table
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.)
Pending
Application number
JP2008529311A
Other languages
English (en)
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.)
Cypress Semiconductor Corp Belgium BVBA
Original Assignee
Cypress Semiconductor Corp Belgium BVBA
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 Cypress Semiconductor Corp Belgium BVBA filed Critical Cypress Semiconductor Corp Belgium BVBA
Publication of JP2009507302A publication Critical patent/JP2009507302A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Abstract

データを格納するための一つまたは複数のメモリブロックを有する不揮発性メモリと、前記一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタが格納されているウェアレベリングテーブルと、を備え、前記制御部は、前記ウェアレベリングテーブル内で一つまたは複数のポインタを識別し、その後その識別されたポインタと関連している割り当てられていないメモリブロックをデータの格納のために割り当てるようになっているシステムおよび方法。
【選択図】 図1

Description

本発明は、大まかにはメモリデバイスに関し、より詳しくは、改良されたフラッシュメモリのウェアレベリングに関する。
発明の背景
フラッシュメモリのような不揮発性のメモリデバイスは、データ格納用途で広く用いられている。フラッシュメモリの物理的特性は、不揮発性なデータ格納を可能にするが、フラッシュメモリには、寿命が有限であるという欠点がある。例えば、NAND型のフラッシュメモリブロックは、通常、おおよそ十万回から百万回の書き込み操作が行われると、損耗するか(wear out)機能しなくなる。
フラッシュドライバは、通常、読み込みや、書き込みや、消去などのメモリ操作をメモリブロックに対して行う。通常、フラッシュドライバは、書き込み操作時に、データの格納に利用できる消去済みメモリブロックを識別する(特定する)ように要求される。多くのフラッシュドライバは、これらの書き込み操作を、直前に(most recently)消去されたメモリブロックに対して行う。この方法ならば、書き込み操作を行う消去済みメモリブロックを最も効率よく見つけることができるが、その一方、この方法では、書き込み操作は必ずしもメモリブロック間で均等に割り振られるわけではなく、そのためフラッシュメモリの寿命を減らすこととなる。
多くのシステムでは、フラッシュメモリの寿命を最大限に延ばすために、メモリブロックに対してより均等に書き込み操作(write operation)を割り振るようにするウェアレベリング技術(wear-leveling techniques)が実施される。例えば、フラッシュドライバは、フラッシュメモリ内の全メモリブロックに対してポインタを提供する論理−物理変換テーブル(logical-to-physical table)内で線形検索(linear search)を行うことで、ウェアレベリングの達成度を高めることがある。一般的に、この論理−物理変換テーブル内のポインタには付随するフラグが存在する。このフラグには、例えば、そのポインタに対応するメモリブロックは消去されているということを示す消去フラグ(erase flag)や、メモリブロックが機能しなくなったということを示す不良ブロックフラグ(bad block flag)などがある。
確かに、このウェアレベリング技術は、書き込み操作を割り振ることによってフラッシュメモリの寿命を延ばすことができるが、次にデータを書き込む消去済みブロックを探すのに利用される論理−物理変換テーブル内での線形検索は、非効率的である。さらに、フラッシュドライバに対する処理要求を考えると、状況次第では、線形検索は実行できない。例えば、フラッシュドライバが24個の利用可能な消去済みメモリブロックを含む1024個のメモリブロックを有するフラッシュメモリに対して論理−物理変換テーブル内で線形検索を行うと、消去済みメモリブロックを一つ見つけるのに、平均して44回論理−物理変換テーブルにアクセスすることが必要となる。この場合、論理−物理変換テーブルに1000回アクセスしてやっと消去済みメモリブロックが見つかるという最悪のシナリオも考えられる。フラッシュメモリが、10個の不良メモリブロックと、わずか14個の消去済みメモリブロックしか有していない場合、フラッシュドライバは、消去済みブロックを見つけるために、平均して77回論理−物理変換テーブルにアクセスしなければならない。
本発明は、添付図面を参照しつつ開示内容を読むことで最もよく理解できるであろう。
好適実施形態の詳細な説明
図1は、本発明の実施形態で利用可能なメモリシステム100をブロック図で示している。図1に関して、メモリシステム100は、データを格納するための複数のメモリブロック105−1〜105−Nを有するフラッシュメモリ110を備えている。いくつかの実施形態では、フラッシュメモリ110は、例えば、スマートメディア(登録商標)の仕様に従って構成された1024個のメモリブロックを有しており、その1024個のメモリブロックのうち最大1000個のメモリブロックが常にデータの格納のために割り当てられていてもよい。残りの割り当てられていないメモリブロックには、データの格納に利用できる消去済みまたは消去可能メモリブロックか、不良または欠陥メモリブロックもしくはその両方が含まれる。フラッシュメモリ110は、NAND型のフラッシュメモリであるか、あるいはデータを格納可能な何らかの他のタイプの不揮発性メモリであってもよい。
メモリシステム100は、フラッシュメモリ110内のメモリブロック105−1〜105−Nに対して、読み込みや、書き込みや、消去などのメモリアクセス操作を行うフラッシュメモリ制御部(flash memory controller)120を備えている。このフラッシュメモリ制御部120は、フラッシュメモリ110にデータを書き込むように指示されると、フラッシュメモリ110内のデータの格納に利用できる割り当てられていないメモリブロック(unallocated memory blocks)を一つまたは複数個識別し(特定し)、その後、その(それらの)識別されたメモリブロックにデータを書き込む。フラッシュメモリ制御部120は、ファームウェアや、コンピュータで読み取り可能な媒体内に格納された命令を実行するプロセッサまたは複数間で通信可能なプロセッサ(multiple communicating processors)や、離散的(discrete)ハードウェア構成要素のセットなどとして実施してもよい。
メモリシステム100は、フラッシュメモリ110内のメモリブロック105−1〜105−Nに対するポインタを格納している論理−物理変換テーブル130を備えている。これらのポインタは、フラッシュメモリ110内のメモリブロック105−1〜105〜Nの物理的位置に対するアドレスであってもよい。論理−物理変換テーブル130は、フラッシュメモリの冗長(redundant)領域に設けられてもよいし、もしくはメモリシステム100が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
フラッシュメモリ制御装置120は、メモリシステム100の初期構成時に、論理−物理変換テーブル130内のポインタを、例えば、フラッシュメモリ110内のメモリブロック105−1〜105−Nと1対1対応する構成へと初期化する。いくつかの実施形態では、メモリブロック105−1〜105−Nに対する1対1マッピングは、メモリシステム100の製造中または初使用時に行われてもよい。したがって、フラッシュメモリ110に最初にデータを書き込むとき、フラッシュメモリ制御部120は、論理−物理変換テーブル130を線形シーケンシンス(linearly sequencing)することで、データを格納するメモリブロック105−1〜105−Nを識別することができる。
論理−物理変換テーブル130の初期化後もしくはフラッシュメモリ制御部120が論理−物理変換テーブル130を通しての線形シーケンス化を終えた後、フラッシュメモリ制御部120は、データ書き込み操作時に、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを識別する。論理−物理変換テーブル130内での検索は、フラッシュメモリ制御部120にとって非効率的で、厄介なタスクとなる可能性があるので、メモリシステム100の実施形態は、フラッシュメモリ110内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブル(wear-leveling table) 140を備えている。これらの割り当てられていないメモリブロックは、フラッシュメモリ制御部120が以前に消去したメモリブロックのようなデータの格納に利用できるメモリブロック105−1〜105−Nと、機能しなくなったまたは欠陥のあるメモリブロック105−1〜105−Nのどちらかであるか、もしくはそれらの組み合わせからなる。ウェアレベリングテーブル140は、フラッシュメモリの冗長領域に設けられてもよいし、もしくはメモリシステム100が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
フラッシュメモリ制御部120は、ウェアレベリングテーブル140に、割り当てられていないメモリブロックに対するポインタを加えるウェアレベリングユニット(wear-leveling unit) 125を有している。いくつかの実施形態では、このウェアレベリングユニット125は下記のタイミングで、ウェアレベリングテーブル140に割り当てられていないメモリブロックに対するポインタを加える。ここで言うタイミングとしては、論理−物理変換テーブル130の初期化後またはそれと同時、もしくはフラッシュメモリ制御部120が論理−物理変換テーブル130内の初期化されたポインタに対応するメモリブロック105−1〜105−Nにデータを格納した後またはそれと同時などがある。
フラッシュメモリ制御部120がフラッシュメモリ110にデータを書き込むことを決定すると、ウェアレベリングユニット125はウェアレベリングテーブル140にアクセスしてフラッシュメモリ110内の、データの格納に利用できる消去済みまたは消去可能メモリブロックを少なくとも一つ識別する(特定する)。また、ウェアレベリングテーブル140は、どのポインタが消去済みまたは消去可能メモリブロックに対応し、どのポインタが欠陥のあるまたは機能しないメモリブロック(faulty or failed memory blocks)に対応するのかを示すデータを格納していてもよい。ウェアレベリングテーブル140は、フラッシュメモリ110内の割り当てられていないメモリブロックに対するポインタを格納しているので、ウェアレベリングユニット125がデータ書き込み操作時に消去済みまたは消去可能メモリブロックを識別するのにかかる時間を減らすことができる。
ウェアレベリングユニット125は、例えばウェアレベリングテーブル140にデータを投入する際にウェアレベリングテーブル140に優先順位を付ける優先スキームを実施してもよい。ウェアレベリングユニット125は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット125は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。このウェアレベリングテーブル140での優先順位付けによって、ウェアレベリングユニット125は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)することが可能となる。これにより、メモリシステム100は、メモリブロック105−1〜105−N間でより均等に書き込み操作を割り振り、フラッシュメモリ110の寿命を延ばすことができる。
図2は、図1に示されているメモリシステムの動作の例を示すフローチャート200である。図2に関して、ブロック210では、フラッシュメモリ制御部120は、フラッシュメモリ110内の割り当てられていないメモリブロックを識別する。いくつかの実施形態では、フラッシュメモリ制御部120は、フラッシュメモリ110内の一つまたは複数のメモリブロック105−1〜105−Nはこれ以上データを格納し続ける必要がないという判定に応じて、フラッシュメモリ110内の割り当てられていないメモリブロックを識別してもよい。そして、そのように判定されたメモリブロックを消去するかそれを消去可能とみなす。また、フラッシュメモリ制御部120は、フラッシュメモリ110内のあるメモリブロック105−1〜105−Nは欠陥があるもしくは機能しないという判定に応じて割り当てられていないメモリブロックを識別してもよい。
ブロック220では、フラッシュメモリ制御部120は、ウェアレベリングテーブル140にフラッシュメモリ内の割り当てられていないメモリブロックに対するポインタを加える。いくつかの実施形態では、ウェアレベリングユニット125がウェアレベリングテーブル140にポインタを加える。ウェアレベリングテーブル140は、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを含んでいるかもしれないし、フラッシュメモリ110内の欠陥のあるまたは機能しないメモリブロックに対するポインタを含んでいるかもしれない。
フラッシュメモリ制御部120は、例えばウェアレベリングテーブル140にデータを投入する際にウェアレベリングテーブル140に優先順位を付ける優先スキームを実行してもよい。フラッシュメモリ制御部120は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット125は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。
ブロック230では、フラッシュメモリ制御部120は、ウェアレベリングテーブル140内において、フラッシュメモリ制御部120からのデータを格納するのに利用できる割り当てられていないメモリブロックに対するポインタを識別する。識別されたポインタは、消去済みまたは消去可能メモリブロックのような、データの格納に利用できる割り当てられていないメモリブロックに対するポインタである可能性がある。そのメモリブロックが消去可能なメモリブロックである場合、フラッシュメモリ制御部120は、そのメモリブロックにデータを書き込む前にそのメモリブロックを消去してもよい。
フラッシュメモリ制御部120は、フラッシュメモリ110内の消去済みまたは消去可能メモリブロックに対するポインタを求めてウェアレベリングテーブル140にアクセスすることで、割り当てられていないメモリブロックに対するポインタを識別してもよい。ウェアレベリングテーブル140がフラッシュメモリ制御部120によって優先順位付けされている場合、ウェアレベリングユニット125は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)でき、それによって検索時間を減らすとともにメモリシステム100がメモリブロック105−1〜105−N間でより均等に書き込み操作を割り振ることを可能にする。
次のブロック240では、フラッシュメモリ制御部120は、識別されたポインタに対応するメモリブロックにデータを書き込む。いくつかの実施形態では、フラッシュメモリ制御部120は、このメモリブロックにデータを書き込む前に、この識別されたポインタに対応するメモリブロックのデータを消去してもよい。
図3は、本発明の実施形態で利用できる別のメモリシステム300をブロック図で示している。図3に関して、メモリシステム300は、フラッシュメモリ制御部330からのデータを格納するための複数のフラッシュメモリ領域(flash memory zones) 310−1〜310−Nを備えている。いくつかの実施形態では、各フラッシュメモリ領域310−1〜310−Nは、例えば、スマートメディア(登録商標)の仕様に従って構成された1024個のメモリブロックを有しており、その1024個のメモリブロックのうち最大1000個のメモリブロックが常にデータの格納のために割り当てられていてもよい。残りの割り当てられていないメモリブロックには、データの格納に利用できる消去済みまたは消去可能メモリブロックか、不良または欠陥メモリブロックもしくはその両方が含まれる。フラッシュメモリ領域310−1〜310−Nは、NAND型のフラッシュメモリであるか、あるいはデータを格納可能な何らかの他種の不揮発性メモリであってもよい。
メモリシステム300は、フラッシュメモリ領域310−1〜310−Nに対して、読み込みや、書き込みや、消去などのメモリアクセス操作を行うフラッシュメモリ制御部320を備えている。このフラッシュメモリ制御部320は、フラッシュメモリ領域310−1〜310−Nのうちの一つにデータを書き込むように指示されると、フラッシュメモリ領域310と関連しているデータの格納に利用できる割り当てられていない(unallocated)メモリブロックを一つまたは複数個識別し、その後、その(それらの)識別されたメモリブロックにデータを書き込む。フラッシュメモリ制御部320は、ファームウェアや、コンピュータに読み込み可能な媒体内に格納された命令を実行するプロセッサまたは複数間で通信可能なプロセッサ(multiple communicating processors)や、離散的(discrete)ハードウェア構成要素のセットなどとして実施してもよい。
メモリシステム300は、一つまたは複数のフラッシュメモリ領域310−1〜310−N内のメモリブロックに対するポインタを格納している論理−物理変換テーブル330を備えている。これらのポインタは、フラッシュメモリ領域310−1〜310−N内のメモリブロックの物理的位置に対するアドレスであってもよい。論理−物理変換テーブル330は、フラッシュメモリの冗長(redundant)領域に設けられてもよいし、もしくはメモリシステム300が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
フラッシュメモリ制御装置320は、メモリシステム300の初期構成時に、論理−物理変換テーブル330内のポインタを、例えば、少なくとも一つのフラッシュメモリ領域310−1〜310−N内のメモリブロックと1対1対応する構成へと初期化する。いくつかの実施形態では、これらのメモリブロックに対する1対1マッピングは、メモリシステム300の製造中または初使用時に行われてもよい。したがって、フラッシュメモリ領域310−1〜310−Nに最初にデータを書き込むとき、フラッシュメモリ制御部320は、論理−物理変換テーブル330を線形シーケンシンス(linearly sequencing)することで、データを格納するメモリブロックを識別することができる。
論理−物理変換テーブル330の初期化後もしくは、フラッシュメモリ制御部320が論理−物理変換テーブル330の線形シーケンス化を終えた後、フラッシュメモリ制御部320は、データ書き込み操作時に、フラッシュメモリ領域310−1〜310−N内の消去済みまたは消去可能メモリブロックに対するポインタを識別するように要求される。論理−物理変換テーブル330内での検索は、フラッシュメモリ制御部320にとって非効率的で、厄介なタスクとなる可能性があるので、メモリシステム300の実施形態は、一つまたは複数のフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブル(wear-leveling table) 340を備えている。ウェアレベリングテーブル340は、フラッシュメモリの冗長領域に設けられてもよいし、もしくはメモリシステム300が備えている別のメモリ(例えばランダムアクセスメモリ(RAM)など)に格納されてもよい。
フラッシュメモリ制御部320は、ウェアレベリングテーブル340に、一つまたは複数のフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタを加えるウェアレベリングユニット(wear-leveling unit) 325を有している。いくつかの実施形態では、ウェアレベリングユニット325は、フラッシュメモリ領域310−1〜310−Nからのウェアレベリングテーブルのデータに従って、ウェアレベリングテーブル340にポインタを加えてもよい。ウェアレベリングテーブルのデータは、対応するフラッシュメモリ領域310−1〜310−N内の割り当てられていないメモリブロックに対するポインタであってもよい。ウェアレベリングユニット325は、下記のタイミングで、ウェアレベリングテーブル340に、割り当てられていないメモリブロックに対するポインタを加える。ここで言うタイミングとしては、論理−物理変換テーブル330の初期化後またはそれと同時、もしくはフラッシュメモリ制御部320が、論理−物理変換テーブル330内の初期化されたポインタに対応するメモリブロックにデータを格納した後またはそれと同時などがある。
ウェアレベリングユニット325は、例えばウェアレベリングテーブル340にデータを投入する際に、ウェアレベリングテーブル340に優先順位を付ける優先スキームを実施してもよい。ウェアレベリングユニット325は、各メモリブロックに対して行われた書き込み操作の数に基づいて、割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。別のやり方としては、ウェアレベリングユニット325は、メモリブロックがいつ消去されたかあるいは消去可能とみなされたかに応じて、それらの割り当てられていないメモリブロックもしくは消去済みまたは消去可能メモリブロックを優先してもよい。このウェアレベリングテーブル340での優先順位付けによって、ウェアレベリングユニット325は、消去済みまたは消去可能メモリブロックに対するポインタに線形アクセス(linearly access)することが可能となる。これにより、メモリシステム300は、メモリブロック間でより均等に書き込み操作を割り振り、フラッシュメモリ領域310−1〜310−Nの寿命を延ばすことができる。
フラッシュメモリ制御部320が、フラッシュメモリ領域のうちの一つ(例えばフラッシュメモリ領域310−1)にデータを書き込むことを決定したとき、ウェアレベリングユニット325は、ウェアレベリングテーブル340内に格納されているポインタの中にフラッシュメモリ領域310−1と対応しているものがあるかどうか確認してもよい。ウェアレベリングテーブル340内に格納されているポインタの中にフラッシュメモリ領域310−1と対応しているものがあった場合、ウェアレベリングユニット325は、ウェアレベリングテーブル340にアクセスして、フラッシュメモリ領域310−1〜310−N内におけるデータの格納に利用できる消去済みまたは消去可能メモリブロックを、少なくとも一つ識別することができる。
ウェアレベリングテーブル340内に、フラッシュメモリ領域310−1に対応するポインタが格納されていなかった場合、ウェアレベリングユニット325は、ウェアレベリングテーブル340にフラッシュメモリ領域310−1に対するポインタを加える。例えば、ウェアレベリングユニット325は、ウェアレベリングテーブル340に、フラッシュメモリ領域310−1の冗長領域に格納されていたウェアレベリングテーブルのデータを格納してもよい。いくつかの実施形態では、フラッシュメモリ制御部320は、ウェアレベリングテーブル340にフラッシュメモリ領域310−1に対応するポインタを加える前に、ウェアレベリングテーブル340内に格納されているポインタを、それぞれが対応しているフラッシュメモリ領域310−2〜310−Nの冗長領域に格納してもよい
図4は、図3に示されているメモリシステムの動作の例を示すフローチャート400である。図4に関して、ブロック410では、フラッシュメモリ制御部320は、フラッシュメモリ領域310−1〜310−Nのうちの一つと関連している割り当てられていないメモリブロックを識別する。フラッシュメモリ制御部320は、そのフラッシュメモリ領域と関連しているウェアレベリングテーブルのデータに基づいて、それらの割り当てられていないメモリブロックを識別してもよい。
判定ブロック415では、フラッシュメモリ制御部320は、識別された、割り当てられていないメモリブロックの数がスレッショルド(閾値)を超えているかどうか判定する。このスレッショルドは、フラッシュメモリ制御部320内であらかじめ設定されているか、動的に決定される。このスレッショルドは、ウェアレベリングテーブル内のエントリーの数に対応するものであってもよいし、フラッシュメモリ制御部320に、論理−物理変換テーブル330が初期化されたかどうかを示すものであってもよい。
識別された割り当てられていないメモリブロックの数が、スレッショルドを超えている場合、ブロック420において、フラッシュメモリ制御部320は、論理−物理変換テーブル330を当該フラッシュメモリ領域310−1〜310−Nに関して初期化する。論理−物理変換テーブル330の初期化には、ウェアレベリングテーブル340にアクセスする前に、論理−物理変換テーブル330内のポインタに線形アクセス(linearly access)を行うことが含まれていてもよい。識別された割り当てられていないメモリブロックの数がスレッショルドを超えていない場合、実行プログラムはブロック430へ進む。
ブロック430では、フラッシュメモリ制御部320は、ウェアレベリングテーブル340に、当該フラッシュメモリ領域310−1〜310−N内の識別されたメモリブロックに対するポインタを加える。ブロック440では、フラッシュメモリ制御部320は、当該フラッシュメモリ領域310−1〜310−N内の一つまたは複数のメモリブロックにデータを書き込めという命令を受け取る。この命令は、データを格納するフラッシュメモリ領域310−1〜310−Nを指示するものであってもよい。
判定ブロック445では、フラッシュメモリ制御部320は、この書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応関係を持っているかどうかどうか判定する。書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応している場合、ブロック450において、フラッシュメモリ制御部320は、ウェアレベリングテーブル340内のポインタに対応するメモリブロックにデータを書き込む。
書き込み命令が現在のフラッシュメモリ領域310−1〜310−Nと対応していない場合、実行プログラムはブロック410へ戻り、そこで、フラッシュメモリ制御部320は、書き込み命令によって特定されたフラッシュメモリ領域310−1〜310−Nと関連している割り当てられていないメモリブロックを識別する。いくつかの実施形態では、ウェアレベリングテーブル340内のポインタは、ブロック410が再実行される前に、関連しているフラッシュメモリ領域310−1〜310−Nへ格納されてもよい。
当業者であればここで教示された概念が多くの他の有効な方法で独特な用途に適用できるということを理解するであろう。特に、当業者であれば、図示された実施形態が本件出願の開示を読むことで明らかとなるであろう多くの代替の実施形態のほんの一例であるということを理解するであろう。
上述した実施形態は、一例にすぎない。本明細書は、様々な個所で、“ある”、“ひとつの”、“別の”または“いくつかの”実施形態について言及することがあるが、これは必ずしもこれらの各言及が同一の実施形態に対するものであることを意味せず、また上述した特徴が一つの実施形態だけに適用されることを意味しない。
本発明の実施形態で利用できるメモリシステムをブロック図で示している。 図1に示されているメモリシステムのオペレーションの例を示しているフローチャートである。 本発明の実施形態で利用できる別のメモリシステムをブロック図で示している。 図3に示されているメモリシステムのオペレーションの例を示しているフローチャートである。

Claims (21)

  1. 不揮発性メモリ内の一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、
    前記不揮発性メモリ内のメモリブロックに対する複数のポインタを格納している論理−物理変換テーブルと、
    前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブルと、
    を備えているシステムであって、
    前記制御部は、最初に、前記論理−物理テーブル内の前記ポインタにしたがって、データを格納するメモリブロックを割り当てるようになっており、
    前記割り当てられていないメモリブロックは、前記論理−物理テーブル内の前記ポインタにしたがって、既に、前記制御部によってデータを格納するように割り当てられており、
    前記制御部は、前記ウェアレベリングテーブル内の一つまたは複数のポインタを識別するとともに、当該識別されたポインタと関連している前記メモリブロックにデータを格納するようになっていることを特徴とする前記システム。
  2. 前記制御部は、前記一つまたは複数のメモリブロック内に格納されているデータを消去するとともに、前記ウェアレベリングテーブルに、前記消去済みメモリブロックに対するポインタを加えるように構成されている請求項1に記載のシステム。
  3. 前記制御部は、前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するように構成されている請求項2に記載のシステム。
  4. 前記制御部は、データの格納に利用できる割り当てられていないメモリブロックに対するポインタを、前記ウェアレベリングテーブル内で線形検索するように構成されている請求項3に記載のシステム。
  5. 前記制御部は、前記不揮発性メモリにおける消去されたメモリブロックおよび欠陥のあるメモリブロックを識別し、識別された消去されたメモリブロックおよび欠陥のあるメモリブロックの数をスレッショルドと比較し、前記比較結果または前記不揮発性メモリの初期化に応じて、前記ウェアレベリングテーブルに前記比較結果に応じてポインタを加えるようになっている請求項1に記載のシステム。
  6. 前記制御部は、前記割り当てられていないメモリブロックに対するポインタを前記ウェアレベリングテーブルに加えると同時に前記ポインタを有する前記論理−物理変換テーブルを初期化する請求項1に記載のシステム。
  7. 前記制御部は、前記割り当てられていないメモリブロックに対するポインタを求めて前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックが割り当てられるように構成されている請求項6に記載のシステム。
  8. 前記ウェアレベリングテーブルは、前記割り当てられたメモリブロックに対するポインタを格納しておらず、かつ前記割り当てられていないメモリブロックは、既に、前記制御部によって消去済みである請求項1に記載のシステム。
  9. 前記割り当てられていないメモリブロックには、データの格納に利用できる一つまたは複数のメモリブロックと、データを格納できない一つまたは複数の欠陥メモリブロックと、が含まれる請求項1に記載のシステム。
  10. 前記ウェアレベリングテーブルは、前記制御部に、前記ポインタのうちのどのポインタが前記欠陥メモリブロックと関連しているのかを示すように構成されている請求項9に記載のシステム。
  11. 前記不揮発性メモリが、複数のメモリ領域を備えており、各メモリ領域が複数のメモリブロックと別のウェアレベリングテーブルとを有しており、前記制御部は、データを格納するメモリ領域を特定する書き込み命令を受け取り、前記ウェアレベリングテーブルが前記特定されたメモリ領域に対応していないことを判定し、さらに前記特定されたメモリ領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するようになっている請求項1に記載のシステム。
  12. ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
    前記ウェアレベリングテーブル内の消去済みメモリブロックと関連している少なくとも一つのポインタを識別するステップと、
    前記識別されたポインタと関連している前記メモリブロックにデータを格納するステップと、
    前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
    消去済みメモリブロックと欠陥メモリブロックの数をスレッショルドと比較するステップと、
    前記比較結果または前記フラッシュメモリの初期化に応じて、前記ウェアレベリングテーブルに、前記比較結果に対応する前記メモリブロックに対するポインタを加えるステップと、を含む方法。
  13. 前記ウェアレベリングテーブル内のポインタを少なくとも一つ識別することに応じて、前記識別されたポインタと関連している前記メモリブロックにデータを格納する前に、一つまたは複数の前記メモリブロック内に格納されているデータを消去するステップをさらに含む請求項12に記載の方法。
  14. 前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップをさらに含む請求項12に記載の方法。
  15. 前記優先ステップに従って、ポインタを求めて前記ウェアレベリングテーブルにアクセスするステップをさらに含む請求項14に記載の方法。
  16. 前記ポインタと関連している前記メモリブロックに対して行われた書き込み操作の数に基づいて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップを含む請求項12に記載の方法。
  17. 前記ウェアレベリングテーブルに、前記消去済みメモリブロックと関連しているポインタを加えるのと同時に、前記フラッシュメモリ内の前記メモリブロックに対するポインタを格納している論理−物理変換テーブルを初期化するステップをさらに含む請求項12に記載の方法。
  18. 前記消去済みメモリブロックに対するポインタを求めて、前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックを割り当てるステップをさらに含む請求項17に記載の方法。
  19. ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
    データを格納する前記フラッシュメモリの領域を識別する書き込みコマンドを受け取るステップと、
    前記ウェアレベリングテーブルが前記識別された領域に対応していないかを判定するステップと、
    前記識別された領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するステップと、
    前記再格納されたウェアレベリングテーブル内の少なくとも一つのポインタを識別するステップと、
    前記識別されたポインタと関連する前記メモリブロックにデータを格納するステップと、
    を含むことを特徴とする方法。
  20. 前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
    前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
    前記比較結果に応じて、前記ウェアレベリングテーブルに、前記識別された消去済みメモリブロックおよび欠陥メモリブロックに対するポインタを加えるステップと、
    を含む請求項19に記載の方法。
  21. 前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
    前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
    前記比較結果に応じて、前記メモリブロックに対するポインタを格納している前記フラッシュメモリを初期化するステップと、
    を含む請求項19に記載の方法。
JP2008529311A 2005-09-01 2006-08-31 フラッシュドライブの高速ウェアレベリング Pending JP2009507302A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71391305P 2005-09-01 2005-09-01
US11/468,569 US7853749B2 (en) 2005-09-01 2006-08-30 Flash drive fast wear leveling
PCT/US2006/034243 WO2007028026A2 (en) 2005-09-01 2006-08-31 Flash drive fast wear leveling

Publications (1)

Publication Number Publication Date
JP2009507302A true JP2009507302A (ja) 2009-02-19

Family

ID=37805689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008529311A Pending JP2009507302A (ja) 2005-09-01 2006-08-31 フラッシュドライブの高速ウェアレベリング

Country Status (4)

Country Link
US (2) US7853749B2 (ja)
JP (1) JP2009507302A (ja)
KR (1) KR101383853B1 (ja)
WO (1) WO2007028026A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157141B2 (en) 2016-03-09 2018-12-18 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
WO2007132452A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
WO2007132453A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Distortion estimation and cancellation in memory devices
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2007132456A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. Estimation of non-linear distortion in memory devices
CN101601094B (zh) 2006-10-30 2013-03-27 苹果公司 使用多个门限读取存储单元的方法
WO2008053472A2 (en) * 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7900102B2 (en) * 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US8151166B2 (en) * 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8086785B2 (en) * 2007-02-22 2011-12-27 Mosaid Technologies Incorporated System and method of page buffer operation for memory devices
WO2008101316A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
US8369141B2 (en) * 2007-03-12 2013-02-05 Apple Inc. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8234545B2 (en) * 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8527819B2 (en) * 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8068360B2 (en) * 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
KR101509836B1 (ko) * 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) * 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) * 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
TWI354996B (en) * 2007-12-31 2011-12-21 Phison Electronics Corp Wear leveling method and controller thereof
US8156398B2 (en) * 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) * 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8082384B2 (en) * 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
KR101437123B1 (ko) 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090259819A1 (en) * 2008-04-09 2009-10-15 Skymedi Corporation Method of wear leveling for non-volatile memory
TWI385667B (zh) * 2008-06-26 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料管理方法、儲存系統與控制器
FR2933803B1 (fr) * 2008-07-08 2010-09-24 Thales Sa Dispositif et procede de sauvegarde de donnees sur des supports de memoire non volatile, de type flash nand, destines a des calculateurs embarques
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8082386B2 (en) * 2008-10-21 2011-12-20 Skymedi Corporation Method of performing wear leveling with variable threshold
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8275933B2 (en) * 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
US8208304B2 (en) * 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8825940B1 (en) 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8266344B1 (en) * 2009-09-24 2012-09-11 Juniper Networks, Inc. Recycling buffer pointers using a prefetch buffer
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
KR101097438B1 (ko) * 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
JP5612508B2 (ja) * 2010-03-25 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9003247B2 (en) 2011-04-28 2015-04-07 Hewlett-Packard Development Company, L.P. Remapping data with pointer
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
CN104102459A (zh) * 2014-07-03 2014-10-15 优佰特电子科技(无锡)有限公司 一种闪存设备的数据处理方法及闪存设备
KR102211868B1 (ko) * 2014-12-15 2021-02-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
EP3035195A1 (en) * 2014-12-16 2016-06-22 SFNT Germany GmbH A wear leveling method and a wear leveling system for a non-volatile memory
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US6263399B1 (en) * 1998-06-01 2001-07-17 Sun Microsystems, Inc. Microprocessor to NAND flash interface
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
TWI235915B (en) * 2003-03-13 2005-07-11 Ritek Corp Device and method for recording the status of block of a nonvolatile memory
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157141B2 (en) 2016-03-09 2018-12-18 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory

Also Published As

Publication number Publication date
US20070050536A1 (en) 2007-03-01
KR101383853B1 (ko) 2014-04-17
US8417881B1 (en) 2013-04-09
WO2007028026A3 (en) 2007-12-27
WO2007028026A2 (en) 2007-03-08
WO2007028026B1 (en) 2008-03-06
US7853749B2 (en) 2010-12-14
KR20080082601A (ko) 2008-09-11

Similar Documents

Publication Publication Date Title
JP2009507302A (ja) フラッシュドライブの高速ウェアレベリング
US10055159B2 (en) Morphic storage device
US8041879B2 (en) Flash memory backup system and method
EP1891529B1 (en) Flash memory with programmable endurance
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US6034897A (en) Space management for managing high capacity nonvolatile memory
US8495320B1 (en) Method and apparatus for storing data in a flash memory including single level memory cells and multi level memory cells
JP5728672B2 (ja) ハイブリッドメモリ管理
US8316176B1 (en) Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US7224604B2 (en) Method of achieving wear leveling in flash memory using relative grades
US10073771B2 (en) Data storage method and system thereof
US20100169540A1 (en) Method and apparatus for relocating selected data between flash partitions in a memory device
WO2000060605A1 (en) Space management for managing high capacity nonvolatile memory
KR20100097456A (ko) 메모리 시스템 및 그것의 플래시 변화 계층의 주소 할당 방법
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
US20120179859A1 (en) Nonvolatile memory apparatus performing ftl function and method for controlling the same
US20100205356A1 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
US20180276123A1 (en) Memory system and control method
JP2012216234A (ja) フラッシュメモリの優先順位付き消去のためのデバイスおよび方法
JP2021507373A (ja) マルチレベルアドレッシング
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20160106240A (ko) 반도체 장치 및 그 동작 방법
TWI786288B (zh) 儲存裝置、儲存裝置的控制方法及記錄媒體
US11256432B2 (en) Memory controller and memory system