JP2009507302A - フラッシュドライブの高速ウェアレベリング - Google Patents
フラッシュドライブの高速ウェアレベリング Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
Abstract
データを格納するための一つまたは複数のメモリブロックを有する不揮発性メモリと、前記一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタが格納されているウェアレベリングテーブルと、を備え、前記制御部は、前記ウェアレベリングテーブル内で一つまたは複数のポインタを識別し、その後その識別されたポインタと関連している割り当てられていないメモリブロックをデータの格納のために割り当てるようになっているシステムおよび方法。
【選択図】 図1
【選択図】 図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は、そのフラッシュメモリ領域と関連しているウェアレベリングテーブルのデータに基づいて、それらの割り当てられていないメモリブロックを識別してもよい。
図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へ格納されてもよい。
当業者であればここで教示された概念が多くの他の有効な方法で独特な用途に適用できるということを理解するであろう。特に、当業者であれば、図示された実施形態が本件出願の開示を読むことで明らかとなるであろう多くの代替の実施形態のほんの一例であるということを理解するであろう。
上述した実施形態は、一例にすぎない。本明細書は、様々な個所で、“ある”、“ひとつの”、“別の”または“いくつかの”実施形態について言及することがあるが、これは必ずしもこれらの各言及が同一の実施形態に対するものであることを意味せず、また上述した特徴が一つの実施形態だけに適用されることを意味しない。
Claims (21)
- 不揮発性メモリ内の一つまたは複数のメモリブロックをデータの格納のために割り当てる制御部と、
前記不揮発性メモリ内のメモリブロックに対する複数のポインタを格納している論理−物理変換テーブルと、
前記不揮発性メモリ内の割り当てられていないメモリブロックに対するポインタを格納しているウェアレベリングテーブルと、
を備えているシステムであって、
前記制御部は、最初に、前記論理−物理テーブル内の前記ポインタにしたがって、データを格納するメモリブロックを割り当てるようになっており、
前記割り当てられていないメモリブロックは、前記論理−物理テーブル内の前記ポインタにしたがって、既に、前記制御部によってデータを格納するように割り当てられており、
前記制御部は、前記ウェアレベリングテーブル内の一つまたは複数のポインタを識別するとともに、当該識別されたポインタと関連している前記メモリブロックにデータを格納するようになっていることを特徴とする前記システム。 - 前記制御部は、前記一つまたは複数のメモリブロック内に格納されているデータを消去するとともに、前記ウェアレベリングテーブルに、前記消去済みメモリブロックに対するポインタを加えるように構成されている請求項1に記載のシステム。
- 前記制御部は、前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するように構成されている請求項2に記載のシステム。
- 前記制御部は、データの格納に利用できる割り当てられていないメモリブロックに対するポインタを、前記ウェアレベリングテーブル内で線形検索するように構成されている請求項3に記載のシステム。
- 前記制御部は、前記不揮発性メモリにおける消去されたメモリブロックおよび欠陥のあるメモリブロックを識別し、識別された消去されたメモリブロックおよび欠陥のあるメモリブロックの数をスレッショルドと比較し、前記比較結果または前記不揮発性メモリの初期化に応じて、前記ウェアレベリングテーブルに前記比較結果に応じてポインタを加えるようになっている請求項1に記載のシステム。
- 前記制御部は、前記割り当てられていないメモリブロックに対するポインタを前記ウェアレベリングテーブルに加えると同時に前記ポインタを有する前記論理−物理変換テーブルを初期化する請求項1に記載のシステム。
- 前記制御部は、前記割り当てられていないメモリブロックに対するポインタを求めて前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックが割り当てられるように構成されている請求項6に記載のシステム。
- 前記ウェアレベリングテーブルは、前記割り当てられたメモリブロックに対するポインタを格納しておらず、かつ前記割り当てられていないメモリブロックは、既に、前記制御部によって消去済みである請求項1に記載のシステム。
- 前記割り当てられていないメモリブロックには、データの格納に利用できる一つまたは複数のメモリブロックと、データを格納できない一つまたは複数の欠陥メモリブロックと、が含まれる請求項1に記載のシステム。
- 前記ウェアレベリングテーブルは、前記制御部に、前記ポインタのうちのどのポインタが前記欠陥メモリブロックと関連しているのかを示すように構成されている請求項9に記載のシステム。
- 前記不揮発性メモリが、複数のメモリ領域を備えており、各メモリ領域が複数のメモリブロックと別のウェアレベリングテーブルとを有しており、前記制御部は、データを格納するメモリ領域を特定する書き込み命令を受け取り、前記ウェアレベリングテーブルが前記特定されたメモリ領域に対応していないことを判定し、さらに前記特定されたメモリ領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するようになっている請求項1に記載のシステム。
- ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
前記ウェアレベリングテーブル内の消去済みメモリブロックと関連している少なくとも一つのポインタを識別するステップと、
前記識別されたポインタと関連している前記メモリブロックにデータを格納するステップと、
前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
消去済みメモリブロックと欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果または前記フラッシュメモリの初期化に応じて、前記ウェアレベリングテーブルに、前記比較結果に対応する前記メモリブロックに対するポインタを加えるステップと、を含む方法。 - 前記ウェアレベリングテーブル内のポインタを少なくとも一つ識別することに応じて、前記識別されたポインタと関連している前記メモリブロックにデータを格納する前に、一つまたは複数の前記メモリブロック内に格納されているデータを消去するステップをさらに含む請求項12に記載の方法。
- 前記ポインタと関連している前記メモリブロックがいつ消去されたかに応じて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップをさらに含む請求項12に記載の方法。
- 前記優先ステップに従って、ポインタを求めて前記ウェアレベリングテーブルにアクセスするステップをさらに含む請求項14に記載の方法。
- 前記ポインタと関連している前記メモリブロックに対して行われた書き込み操作の数に基づいて、前記ウェアレベリングテーブル内の前記ポインタを優先するステップを含む請求項12に記載の方法。
- 前記ウェアレベリングテーブルに、前記消去済みメモリブロックと関連しているポインタを加えるのと同時に、前記フラッシュメモリ内の前記メモリブロックに対するポインタを格納している論理−物理変換テーブルを初期化するステップをさらに含む請求項12に記載の方法。
- 前記消去済みメモリブロックに対するポインタを求めて、前記ウェアレベリングテーブルにアクセスする前に、前記論理−物理変換テーブル内の前記ポインタと関連している前記メモリブロックを割り当てるステップをさらに含む請求項17に記載の方法。
- ウェアレベリングテーブルに、フラッシュメモリ内の一つまたは複数のメモリブロックに対するポインタであって、複数の消去済みメモリブロックまたは欠陥メモリブロックと関連するポインタを加えるステップと、
データを格納する前記フラッシュメモリの領域を識別する書き込みコマンドを受け取るステップと、
前記ウェアレベリングテーブルが前記識別された領域に対応していないかを判定するステップと、
前記識別された領域に対応するメモリブロックに対するポインタを前記ウェアレベリングテーブルに再格納するステップと、
前記再格納されたウェアレベリングテーブル内の少なくとも一つのポインタを識別するステップと、
前記識別されたポインタと関連する前記メモリブロックにデータを格納するステップと、
を含むことを特徴とする方法。 - 前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果に応じて、前記ウェアレベリングテーブルに、前記識別された消去済みメモリブロックおよび欠陥メモリブロックに対するポインタを加えるステップと、
を含む請求項19に記載の方法。 - 前記フラッシュメモリ内の消去済みメモリブロックおよび欠陥メモリブロックを識別するステップと、
前記識別された消去済みメモリブロックおよび欠陥メモリブロックの数をスレッショルドと比較するステップと、
前記比較結果に応じて、前記メモリブロックに対するポインタを格納している前記フラッシュメモリを初期化するステップと、
を含む請求項19に記載の方法。
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)
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)
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)
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 |
-
2006
- 2006-08-30 US US11/468,569 patent/US7853749B2/en active Active
- 2006-08-31 KR KR1020087007800A patent/KR101383853B1/ko active IP Right Grant
- 2006-08-31 JP JP2008529311A patent/JP2009507302A/ja active Pending
- 2006-08-31 WO PCT/US2006/034243 patent/WO2007028026A2/en active Application Filing
-
2010
- 2010-12-13 US US12/966,338 patent/US8417881B1/en active Active
Cited By (1)
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 |