JP2010015591A - 不揮発性記憶システムにおける最高頻度消去ブロックの追跡 - Google Patents

不揮発性記憶システムにおける最高頻度消去ブロックの追跡 Download PDF

Info

Publication number
JP2010015591A
JP2010015591A JP2009202432A JP2009202432A JP2010015591A JP 2010015591 A JP2010015591 A JP 2010015591A JP 2009202432 A JP2009202432 A JP 2009202432A JP 2009202432 A JP2009202432 A JP 2009202432A JP 2010015591 A JP2010015591 A JP 2010015591A
Authority
JP
Japan
Prior art keywords
block
memory
elements
erase count
erase
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
JP2009202432A
Other languages
English (en)
Inventor
Robert Chang
チャン,ロバート
Bahman Qawami
クゥワミ,バーマン
Farshid Sabet-Sharghi
サベット−シャーギー,ファーシッド
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 JP2010015591A publication Critical patent/JP2010015591A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Non-Volatile Memory (AREA)
  • Filling Or Discharging Of Gas Storage Vessels (AREA)
  • Radiation-Therapy Devices (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】不揮発性メモリシステムにおいて摩耗一様化を実施する方法および装置を提供する。
【解決手段】メモリシステムの不揮発性メモリに含まれる要素を処理する方法が、複数の消去要素に関連付けられた消去カウントを得ることを含む。複数の要素に含まれる各要素は、要素が消去された回数を示す関連付けられた消去カウントを有する。方法は、また、複数の要素に含まれるいくつかの消去カウントを第1セットにグループ分けすることと、第1セットに関連付けられた消去カウントをメモリシステムのメモリ構成要素に記憶することとを含む。その数の要素を第1セットにグループ分けすることは、通常、複数の要素に関連付けられた消去カウントの最高の関連付けられた消去カウントを有する複数の要素に含まれる消去要素を選択することを含む。
【選択図】図5a

Description

本発明は、一般に、大量デジタルデータ記憶システムに関する。より具体的には、本発明は、不揮発性記憶システムの記憶領域に関連付けられた摩損(摩耗)がほぼすべての記憶領域にわたって拡散されることを可能にするシステムおよび方法に関する。
本発明は、同時係属米国特許出願_(弁理士整理番号SANDP005/SDK0278.000US)、名称「AUTOMATED WEAR LEVELING IN NON−VOLATILE STORAGE SYSTEMS」、同時係属米国特許出願10/281739(弁理士整理番号SANDP023/SDK0366.000US)、名称「WEAR−LEVELING IN NON−VOLATILE SYSTEMS」、2002年10月28日出願、同時係属米国特許出願10/281824(弁理士整理番号SANDP026/SDK0366.003)、名称「TRACKING THE LEAST FEQUENTLY ERASED BLOCKS IN NON−VOLATILE MEMORY SYSTEMS」、2002年10月28日出願、同時係属米国特許出願10/281631(弁理士整理番号SANDP028/SDK0371.000US)、名称「METHOD AND APPARATUS FOR SPLITTING A LOGICAL BLOCK」、2002年10月28日出願、同時係属米国特許出願10/281855(弁理士整理番号SANDP029/SDK0410.000US)、名称「METHOD AND APPARATUS FOR GROUPING PAGES WITHIN A BLOCK」、2002年10月28日出願、同時係属米国特許出願10/281762(弁理士整理番号SANDP030/SDK0416.000US)、名称「METHOD AND APPARATUS FORRESOLVING PHYSICAL BLOCKS ASSOCIATED WITH A COMMON LOGICAL BLOCK」、2002年10月28日出願、米国特許第6081447号、および米国特許第6230233号に関する。これらは、それぞれ、参照によって本明細書に完全に組み込まれる。
フラッシュメモリ記憶システムなどの不揮発性メモリの使用は、そのようなメモリシステムのコンパクトな物理的サイズ、および不揮発性メモリが反復して再プログラムされる能力のために増大している。フラッシュメモリ記憶システムのコンパクトな物理的サイズにより、ますます普及している装置においてそのような記憶システムを使用することが促進される。フラッシュメモリ記憶システムを使用する装置には、デジタルカメラ、デジタルカムコーダ、デジタル音楽プレーヤ、手持ち式パーソナルコンピュータ、および大域的位置決め装置があるが、これに限定されるものではない。フラッシュメモリ記憶システムに含まれる不揮発性メモリを反復して再プログラムする能力により、フラッシュメモリ記憶システムが使用および再使用されることが可能になる。
一般に、フラッシュメモリ記憶システムは、フラッシュ・メモリ・カードおよびフラッシュ・メモリ・チップ・セットを含むことが可能である。フラッシュ・メモリ・チップ・セットは、一般に、フラッシュメモリ構成要素および制御装置構成要素を含む。通常、フラッシュ・メモリ・チップ・セットは、埋込みシステムに組み立てられるように構成されることが可能である。そのようなアセンブリまたはホストシステムの製造業者は、通常、構成要素形態のフラッシュメモリ、ならびに他の構成要素を獲得し、次いでフラッシュメモリおよび他の構成要素をホストシステムに組み立てる。
不揮発性メモリ、またはより具体的にはフラッシュ・メモリ・システム内のフラッシュ・メモリ・ブロックは、反復してプログラムおよび消去されることが可能であるが、各ブロックまたは物理的位置は、ブロックが摩耗する前に、すなわち、メモリがより小さくなり始める前に、ある回数のみ消去されることが可能である。すなわち、各ブロックは、プログラムおよび消去サイクルの制限を有する。いくつかのメモリでは、ブロックが使用不能と見なされる前に、約1万回、ブロックが消去されることが可能である。他のメモリでは、ブロックが摩耗された見なされる前に、約数10万回またはさらには最高で100万回、ブロックが消去されることが可能である。ブロックが摩耗して、それにより、フラッシュ・メモリ・システムの全記憶ボリュームの一部に対し、使用の損失または性能の著しい低下が生じるとき、フラッシュ・メモリ・システムのユーザは、たとえば記憶データを損失する、またはデータを記憶することができないなど、悪影響を受ける可能性がある。
フラッシュ・メモリ・システム内におけるブロックまたは物理的位置に関する摩耗は、ブロックのそれぞれがどの程度プログラムされるかに応じて変化する。ブロック、またはより一般的には記憶要素が、1度プログラムされ、次いで事実上決して再プログラムされない場合、プログラムおよび消去サイクルの数、したがってブロックに関連付けられる摩耗は、一般に比較的小さい。ブロックが、循環されるなど、反復して書き込まれ、かつ消去される場合、ブロックに関連付けられる摩耗は、一般に比較的大きい。論理ブロックアドレス(LBA)が、フラッシュ・メモリ・システムに記憶されているデータにアクセスするために、フラッシュ・メモリ・システムにアクセスする、またはそれを使用するシステムなど、ホストによって使用される際に、ホストがデータを書き込み、かつ上書きするために同じLBAを反復して使用する場合、当業者なら理解するように、フラッシュ・メモリ・システム内の同じ物理的位置またはブロックは、反復して書き込まれ、かつ消去される。
いくつかのブロックが、他のブロックが比較的摩耗していない間に事実上摩耗される場合、摩耗ブロックの存在は、一般に、フラッシュ・メモリ・システムの全性能を損なう。摩耗ブロック自体に関連する性能の低下に加えて、フラッシュ・メモリ・システムの全性能は、摩耗されていない不十分な数のブロックが所望のデータを記憶するために利用可能であるとき、損なわれる可能性がある。しばしば、フラッシュ・メモリ・システムは、限界数の摩耗ブロックがフラッシュ・メモリ・システムに存在するとき、フラッシュ・メモリ・システムの多くの他のセルが比較的摩耗していないときでも、使用不能であると見なされる可能性がある。相当数の比較的摩耗していないブロックを含むフラッシュ・メモリ・システムが、使用不能であると見なされるとき、そのフラッシュ・メモリ・システムに関連付けられる多くのリソースは、事実上浪費される。
フラッシュ・メモリ・システム内のブロックが比較的一様(即ち、均一)に摩耗される可能性を増大させるために、摩耗一様化動作が、しばしば実施される。摩耗一様化動作は、当業者なら理解するように、一般に、特定のLBAに関連付けられた物理的位置またはブロックが、同じLBAが同じ物理的位置またはブロックに常に関連付けられるとは限らないように、変更されることが可能であるように構成される。LBAのブロック関連付けを変化させることによって、他のブロックが摩耗するかなり前に、特定のブロックが摩耗することがある可能性が低くなる。
1つの従来の摩耗一様化プロセスは、顧客またはホストのLBAの2つの比較的大きな部分がマッピングされる物理的位置をスワップすることを含む。すなわち、記憶セルの比較的大きなセクションに関連付けられたLBAが、スワップされる。そのようなスワッピングは、たとえばホストを使用することにより、ホストシステムからの手動コマンドにより開始され、その結果、ホストシステムには透過的ではない。また、記憶セルの2つの比較的大きなセクション間でデータを移動させることを含むスワップ動作は、時間がかかり、したがって、非効率的である。さらに、フラッシュ・メモリ・システム全体の性能は、フラッシュ・メモリ・システム全体に関連付けられた著しいリソースを消費する比較的長い継続時間のスワップ動作によって、悪影響を受ける可能性がある。当業者なら理解するように、第1位置からデータを移動させることは、通常、データを他の位置にコピーすることと、データを第1位置から消去することとを含む。
他の従来の摩耗一様化プロセスは、ブロックが摩耗することを可能にすることを含む。ブロックが事実上摩耗した後、セクタが記憶されているブロックが摩耗した後に、または使用不能になった後に、ブロックに割り当てられたセクタは、そのセクタに関連付けられたアドレスをスペア領域にマッピングすることによって、再度割り当てられることが可能である。スペア領域またはブロックの数は限定され、かつ貴重であるので、使用不能ブロックに関連付けられたセクタがマッピングされることが可能であるスペア領域が常に存在するとは限らない可能性がある。さらに、ブロックが使用不能になった後でのみ、セクタを事実上再度マッピングすることにより、一般に、フラッシュ・メモリ・システム全体の性能を低下させる。
したがって、フラッシュメモリ記憶システム内において摩耗一様化を効率的かつほぼ透過的に実施する方法および装置が所望される。すなわち、計算リソースを著しく使用することを必要とせずに、フラッシュメモリ記憶システムに関連付けられた位置において、より一様な摩耗を促進する摩耗一様化プロセスが必要とされる。
本発明は、不揮発性メモリシステムにおいて摩耗一様化を実施するシステムおよび方法に関する。本発明の一態様によれば、メモリシステムの不揮発性メモリに含まれる要素を処理する方法が、複数の要素に関連付けられた消去カウントを得ることを含む。複数の要素に含まれる各要素は、要素が消去された回数を示す関連付けられた消去カウントを有する。本方法は、また、複数の要素に含まれるいくつかの要素を第1セットにグループ分けすることと、第1セットに関連付けられた消去カウントをメモリシステムのメモリ構成要素に記憶することとを含む。その複数の要素を第1セットにグループ分けすることは、通常、複数の要素に関連付けられた消去カウントの最高に関連付けられた消去カウントを有する複数の要素に含まれる消去要素を選択することを含む。
一実施形態では、方法は、複数の要素に関連付けられた平均消去カウントを得ることを含む。そのような実施形態では、その数の要素をグループ分けすることは、複数の要素に関連付けられた消去カウントを平均消去カウントと比較することと、その数の消去要素が、所定の限界値より大きいことによって、平均消去カウントより大きい関連付けられた消去カウントを有する複数の消去要素から選択された要素であると識別することとを含む。
例えば拡張ブロックなどの不揮発性メモリの摩耗要素を摩耗要素のグループにおいて維持することによって、摩耗要素の摩耗を、本質的に、より軽度の摩耗要素が最終的により摩耗されるまで、摩耗要素が割り付けられることを防止することによって管理することが可能である。したがって、すべての要素の摩耗を、一様化することが可能であるが、その理由は、よりしばしば消去された要素は、他の要素がさらに使用および消去されるまで、使用されること、したがって再び消去されることが有効に防止されるからである。例えば埋込みフラッシュメモリやフラッシュ・メモリ・カードを含む装置などの媒体の全寿命は、比較的大きいと見なされる消去カウントをブロックがもはや有さなくなるまで、比較的大きい消去カウントを有するブロックの使用を実質的に防止する場合、延長することが一般に可能である。
本発明の他の態様によれば、メモリシステムは、表を記憶する第1メモリ、記憶要素を含む第2メモリ、およびプロセッサを含む。第1メモリに記憶される表は、消去され、かつそのメモリシステムに関連付けられた平均消去カウントより大きい関連付けられた消去カウンタを有する第1セットの記憶要素に関連付けられたエントリを含む。第1セットの記憶要素の各記憶要素の関連付けられた消去カウンタは、その記憶要素が消去された回数を示す。記憶要素は、第1セットの記憶要素を含み、平均消去カウントは、記憶要素に関連付けられた消去カウンタを使用して決定される。一実施形態では、第1セットの記憶要素は、表を使用して実質的に識別される。
本発明の他の態様によれば、メモリシステムの不揮発性メモリに含まれる要素を処理する方法が、第1セットの要素に含まれていない消去要素より重度に摩耗した消去要素を含む第1セットの要素を識別することを含む。第1セットの要素に関連付けられたエントリが、データ構造に配置され、ソートされる。最後に、第1セットの要素内の第1の要素が、ソートされたエントリを使用して識別される。第1要素は、第1セットの要素に含まれる他の要素より軽度に摩耗されている。
一実施形態では、各要素が、関連付けられた消去カウントを有し、第1セットの要素を識別することは、関連付けられた消去カウントが比較的大きい複数の消去された要素を識別することと、関連付けられた消去カウントが比較的大きいその複数の要素を第1セットにグループ分けすることとを含む。そのような実施形態では、本方法は、また、第1セットの各要素の関連付けられた消去カウントを使用して第1平均消去カウントを決定することと、第1セットに含まれていない第2要素の関連付けられた消去カウントが、第1平均消去カウントを実質的に超えるときを決定することと、第2要素の関連付けられた消去カウントが第1平均消去カウントを実質的に超えると判定されるとき、第1要素を第1セットから除去することと、第2要素の関連付けられた消去カウントが第1平均消去カウントを実質的に超えると判定されるとき、第2要素を第1セットに追加することとを含むことが可能である。
本発明の他の態様によれば、不揮発性メモリシステムに関連付けられた1セットのメモリ要素を処理する方法が、そのセットのメモリ要素の消去されたメモリ要素の少なくとも1つを、第1グループにグループ分けされない消去されたメモリ要素のセットからのメモリ要素と同程度に最低に消去されたと特徴付けられる第1グループにグループ分けすることを含む。
本発明のこれらおよび他の利点は、以下の詳細な記述を読み、かつ図面の様々な図を研究することにより、直ちに明らかになるであろう。
本発明は、添付の図面に関連して取り入れられた以下の記述を参照することによって、最適に理解されることが可能である。
フラッシュ・メモリ・システム内の不揮発性メモリ記憶ブロックは、反復してプログラムおよび消去されることが可能であるが、各ブロックは、一般に、ブロックが摩耗する前に、有限回のみ消去されることが可能である。ブロックが摩耗するとき、摩耗ブロックを含むフラッシュメモリ記憶システムの全記憶ボリュームの一部に関連する性能の比較的著しい低下が生じ、その部分に記憶されているデータが損失される可能性があり、または、データをその部分に記憶することが不可能になる可能性がある。
ブロックがフラッシュメモリ記憶システム内においてより一様に摩耗する可能性を増大させるために、ブロックは、より一様に使用されることが可能である。たとえば消去カウントを使用することにより、各ブロックが消去された回数を追跡することによって、システム内のメモリがより一様に使用されることが可能である。消去カウント管理技術が、特定のブロックが、そのブロックに関連付けられた冗長領域において消去された回数を追跡する消去カウントを記憶することが可能である。表が、使用中のブロックが比較的大きい消去カウントを有するブロックおよび比較的小さい消去カウントを有するブロックから事実上分離されることを実質的に可能にするシステムメモリにおいて構築されることが可能である。使用中のブロックが消去されるとき、ブロックは、適宜、比較的大きい消去カウントを有するブロックの表、または比較的小さい消去カウントを有するブロックの表に「追加」されることが可能である。同様に、ブロックが、比較的大きい消去カウントを有するブロックの表、または比較的小さい消去カウントを有するブロックの表から、ブロックマッピング表に、すなわち使用中のブロックの1セットの表に、ブロックマッピング表から再度割り当てられたあらゆるブロックを実質的に置き換えるために、「移動」されることが可能である。
ブロックをカテゴリ化することによって、ブロックがより一様に使用されることが可能であるが、その理由は、各ブロックの使用が、ブロックに関連付けられた摩耗を一様にするように、より有効に管理されることが可能であるからである。さらに、ブロックを表にカテゴリ化することは、小さい消去カウントを有するブロックおよび大きい消去カウントを有するブロックが容易に識別されることを可能にし、したがって、著しい量の計算リソースを使用しない。したがって、摩耗一様化は、比較的効率的に行われる。その結果、フラッシュ・メモリ・システムの寿命は、フラッシュ・メモリ・システムの性能に著しい影響を与えずに、大幅に延長されることが可能である。
フラッシュ・メモリ・システム、またはより一般的には不揮発性メモリ装置は、一般に、フラッシュ・メモリ・カードおよびチップセットを含む。通常、フラッシュ・メモリ・システムは、ホストシステムがフラッシュ・メモリ・システムにデータを書き込み、またはフラッシュ・メモリ・システムからデータを読み取ることが可能であるように、ホストシステムと関連して使用される。しかし、いくつかのフラッシュ・メモリ・システムは、埋込みフラッシュメモリと、埋込みフラッシュメモリの制御装置として実質的に作用するようにホスト上で実行されるソフトウエアとを含む。まず図1aを参照すると、コンパクトフラッシュ(登録商標)・メモリ・カードまたは埋込みシステムなど、不揮発性メモリ装置を含む汎用ホストシステムが記述される。ホストまたはコンピュータシステム100は、一般に、マイクロプロセッサ108、ランダム・アクセス・メモリ(RAM)112、および入力/出力回路116が通信することを可能にするシステムバス104を含む。ホストシステム100は、例示の目的では図示されていないディスプレイ装置およびネットワーキング装置など、他の構成要素を一般に含むことが可能であることを理解されたい。
一般に、ホストシステム100は、静止画像情報、音声情報、およびビデオ画像情報などを含むが、これに限定されない情報を得ることができるとすることが可能である。そのような情報は、実時間で得られることが可能であり、また、無線方式でホストシステム100に伝送されることが可能である。ホストシステム100は、実質的にあらゆるシステムとすることが可能であるが、ホストシステム100は、通常、デジタルカメラ、ビデオカメラ、セルラ通信装置、オーディオプレーヤ、またはビデオプレーヤなどのシステムである。しかし、ホストシステム100は、一般に、データまたは情報を記憶し、またデータまたは情報を取り出すほぼあらゆるシステムとすることが可能であることを理解されたい。
ホストシステム100は、データを得るのみである、またはデータを取り出すのみであるシステムとすることも可能である。すなわち、ホストシステム100は、データを記憶する専用システムとすることが可能であり、または、ホストシステム100は、データを読み取る専用システムとすることが可能である。例として、ホストシステム100は、データを書き込む、または記憶するようにのみ構成されるメモリライタとすることが可能である。代替として、ホストシステム100は、データを読み取る、または取り出すように通常構成され、またデータを得るようには構成されないMP3プレーヤなどの装置とすることが可能である。
一実施形態では、取外し可能不揮発性メモリ装置である不揮発性メモリ装置120が、情報を記憶するためにバス104とインタフェースするように構成される。随意選択のインタフェースブロック116により、不揮発性メモリ装置120がバス104と間接的にインタフェースすることが可能になると考えられる。存在するとき、入力/出力回路ブロック116が、当業者になら理解するように、バス104に対する負荷を低減するように作用する。不揮発性メモリ装置120は、不揮発性メモリ124および随意選択メモリ制御システム128を含む。一実施形態では、不揮発性メモリ装置120は、単一チップまたはダイの上において実施されることが可能である。代替として、不揮発性メモリ装置120は、マルチチップモジュールの上において、またはチップセットを形成することが可能であり、かつ不揮発性メモリ装置120として共に使用されることが可能である複数の離散構成要素の上において実施されることが可能である。不揮発性メモリ装置120の一実施形態が、図1bを参照して以下でより詳細に記述される。
たとえばNANDフラッシュメモリなどのフラッシュメモリである不揮発性メモリ124は、必要に応じてデータにアクセスして読み取ることが可能であるように、データを記憶するように構成される。不揮発性メモリ124に記憶されているデータは、適宜、消去されることも可能であるが、不揮発性メモリ124のいくつかのデータは、消去可能ではないとすることが可能であることを理解されたい。データを記憶する、データを読み取る、およびデータを消去するプロセスは、一般に、メモリ制御システム128によって制御され、または、メモリ制御システム128が存在しないときは、マイクロプロセッサ108によって実行されるソフトウエアによって制御される。不揮発性メモリ124の動作は、本質的に不揮発性メモリ124のセクションをほぼ一様に摩耗させることによって、不揮発性メモリ124の寿命がほぼ最大になるように管理されることが可能である。
不揮発性メモリ装置120は、随意選択メモリ制御システム128、すなわち制御装置を含むとして一般的に記述された。しばしば、不揮発性メモリ装置120は、不揮発性メモリ124およびメモリ制御システム128について別々のチップ、すなわち制御装置機能を含むことが可能である。例として、PCカード、コンパクトフラッシュ(登録商標)カード、マルチメディアカード、およびセキュア・デジタル・カードを含むがこれに限定されない不揮発性メモリ装置は、別々のチップ上で実施されることが可能である制御装置を含むが、他の不揮発性メモリ装置は、別々のチップ上で実施される制御装置を含まないことが可能である。不揮発性メモリ装置120が別々のメモリおよび制御装置のチップを含まない実施形態では、メモリおよび制御装置の機能は、当業者には理解されるように、単一チップに統合されることが可能である。代替として、メモリ制御システム128の機能は、上記で議論されたように、たとえば不揮発性メモリ装置120がメモリ制御装置128を含まない実施形態では、マイクロプロセッサ108によって提供されることが可能である。
図1bを参照すると、本発明の実施形態による不揮発性メモリ装置120が、より詳細に記述される。上述されたように、不揮発性メモリ装置120は、不揮発性メモリ124を含み、また、メモリ制御システム128を含むことが可能である。メモリ124および制御システム128、または制御装置は、不揮発性メモリ装置120の主要構成要素とすることが可能であるが、たとえば、メモリ124が埋込みNAND装置であるとき、不揮発性メモリ装置120は、制御システム128を含まないことが可能である。メモリ124は、半導体基板の上に形成されたメモリセルのアレイとすることが可能であり、2つ以上の電荷レベルの1つをメモリセルの個々の記憶要素に記憶することによって、データの1つまたは複数のビットが、個々のメモリセルに記憶される。不揮発性フラッシュ電気的消去可能プログラム可能読取り専用メモリ(EEPROM)は、そのようなシステムの一般的なタイプのメモリの例である。
存在するとき、制御システム128は、データを記憶するために、メモリシステムを使用しているホストコンピュータまたは他のシステムとバス15で通信する。バス15は、一般に、図1aのバス104の一部である。制御システム128は、ホストによって提供されるデータを書き込み、ホストによって要求されたデータを読み取り、動作メモリ124において様々なハウスキーピング機能を実施するために、メモリ・セル・アレイ11を含むことが可能であるメモリ124の動作も制御する。制御システム128は、一般に、関連する不揮発性ソフトウエアメモリ、様々な論理回路などを有する汎用マイクロプロセッサを含む。1つまたは複数の状態機械も、特定のルーチンの性能を制御するために、しばしば含まれる。
メモリ・セル・アレイ11は、通常、アドレスでコーダ17を経て制御システム128またはマイクロプロセッサ108によってアドレスされる。デコーダ17は、制御システム128によってアドレスされているメモリセルのグループに対し、データをプログラムするため、またはそのグループからデータを読み取るため、またはそのグループを消去するために、適切な電圧をアレイ11のゲートおよびビット線に印加する。追加の回路19が、セルの対処されたグループにプログラムされているデータに依拠するアレイの要素に印加された電圧を制御するプログラミングドライバを含む。回路19は、メモリセルのアドレスされたグループからデータを読み取るのに必要な感知増幅器および他の回路をも含む。アレイ11にプログラムされるデータ、またはアレイ11から最近読み取られたデータは、通常、制御システム128内のバッファメモリ21に記憶される。制御システム128は、通常、コマンドおよび状況データなどを一時的に記憶する様々なレジスタをも含む。
アレイ11は、多数のBLOCK0〜Nのメモリセルに分割される。フラッシュEEPROMシステムに一般的であるように、ブロックは、通常、消去の最小単位である。すなわち、各ブロックは、共に消去される最小数のメモリセルを含む。各ブロックは、図2にも示されるように、通常、いくつかのページに分割される。ページは、通常、プログラミングの最小単位である。すなわち、基本的なプログラミング動作が、メモリセルの1ページの最小限にデータを書き込み、またはそれからデータを読み取る。データの1つまたは複数のセクタが、各ページ内に通常記憶される。図1bに示されるように、1つのセクタが、ユーザデータおよびオーバーヘッドデータを含む。オーバーヘッドデータは、通常、ページのユーザデータおよびオーバーヘッドデータから計算されたエラー補正コード(ECC)を含む。制御システム128の一部23が、データがアレイ11にプログラムされているとき、ECCを計算し、また、データがアレイ11から読み取られているとき、ECCを検査する。代替として、ECCは、それらが属するユーザデータとは異なるページ、または異なるブロックに記憶される。
ユーザデータのセクタは、磁気ディスクドライブのセクタのサイズに対応して、通常512バイトである。オーバーヘッドデータは、通常、追加の16バイトである。データの1つのセクタが、各ページに含まれることが最も一般的であるが、代わりに、2つ以上のセクタが、ページを形成することが可能である。任意の数のページが、ブロックを形成することが一般に可能である。例として、ブロックは、8ページから最高で512、1024、またはそれを超えるページから形成されることが可能である。ブロックの数は、望ましいデータ記憶能力をメモリシステムに提供するように選択される。アレイ11は、いくつかのサブアレイ(図示せず)に通常分割され、それぞれは、様々なメモリ動作の実行において並行の程度を増大させるために、互いにある程度独立に動作するある割合のブロックを含む。複数サブアレイの使用の例が、参照によって本明細書に完全に組み込まれている米国特許第5890192号において記載されている。
不揮発性メモリ124の記憶要素などの特定のセクションが、反復して書き込まれ、消去されるなど、連続的にプログラムされるとき、その特定の領域は、一般に、連続的にプログラムされない領域より迅速に摩耗される。不揮発性メモリ124内の異なる領域の摩耗を事実上「一様にする」ために、連続的にプログラムされる領域がより少なくプログラムされ、一方、連続的にプログラムされない領域がより多くプログラムされることが可能であるように、摩耗一様化が、ほぼ自動的に実施されることが可能である。
一般に、摩耗一様化を実施するために、物理位置に関連付けられる1セットのセクタなど、反復してプログラムされるブロックが、反復してプログラムされない物理位置に関連付けられるブロックとスワップされることが可能である。すなわち、反復してプログラムされ、したがって消去された物理的ブロックが、より頻繁でなくプログラムされ、かつ消去された物理的ブロックとスワップされることが可能である。
本発明の一実施形態では、特定の物理ブロックが反復してプログラムされ、かつ消去されたかを容易に判定するために、消去カウントがブロックと共に記憶されることが可能である。すなわち、ブロックが消去された回数を追跡するカウンタが維持されて、ブロックが消去されるたびに増分されることが可能である。そのような消去カウントは、特定のブロックが、より頻繁ではなく消去された他のブロックとスワップされるべきであるかの判定を容易にするために使用されることが可能である。図2は、本発明の実施形態による、フラッシュメモリの一部の概略図である。フラッシュメモリ200は、ページ204に分割されることが可能である。約512バイトのユーザデータを一般に含む各ページ204は、冗長領域206を実際に含み、たとえば、ページ204aは、冗長領域206aを含む。各冗長領域206またはオーバーヘッド領域は、グループ識別子216、更新インデックス212、および消去カウント214を通常含むが、これに限定されない、最高で約16バイトの情報を含むことが可能である。
通常、任意の数のページ204が、ブロック210に含まれる。例示を容易にするために、ページ204a、204bが、ブロック210に含まれるように示されているが、ブロック210に含まれるページ204の数は、大きく変化することが可能であることを理解されたい。記述される実施形態では、ブロック210は、約32ページを含むように構成されることが可能である。たとえば、フラッシュメモリ200が約512メガビット(Mb)を含むとき、フラッシュメモリ200は、それぞれが32ページの約4096ブロックに事実上分割されることが可能である。
以前に記述されたように、消去カウント214は、ユーザデータが関連ブロックから消去されるたびに増分されることが可能である。たとえば、ブロック210に関連付けられる消去カウント214は、データがブロック210から消去されるたびに増分されることが可能である。ブロック210に含まれる各ページ204a、204bは、一般に消去カウント214を有するので、各ページ204a、204bに関連付けられた消去カウント214は、ブロック210が消去されるとき、増分されることが可能である。
データを含むブロックが消去されるとき、データ領域および冗長領域の両方とも、消去される、または空にされる。消去ブロックは、他の表の消去ブロックと比較してより小さい消去カウントを含む消去ブロックを含むスペア・ブロック・プールに追加される。スペアブロック表は、本質的に、LFEB(最低頻度消去ブロック)表である。本発明の一実施形態では、大きな消去カウントを有する消去ブロックは、他の表の消去ブロックと比較してより大きい消去カウントを含む消去カウントを含むプールに追加される。そのプールは、MFEB(最高頻度消去ブロック)表である。消去ブロックの消去カウントは、1だけ増分され、カウントの値に応じて、LFEB表またはMFEB表に保存される。
消去カウント214などの消去カウントが、初期化要求中にアクセスされることが可能である。たとえば、埋込みフラッシュメモリを含むシステムなどのシステムが給電されるとき、システム内のスペアブロックがローで実行されているとき、ユーザがブロックの割付けを均衡させることを要求するとき、およびユーザがブロックの使用がより一様に行われることを要求するとき、初期化要求が作成されることが可能である。図3は、本発明の実施形態による、フラッシュ・メモリ・システムに関する初期化要求を処理することに関連するステップを示すプロセス流れ図である。一般に、初期化要求は、たとえば周期的に、またはトリガ条件が満たされるとき、ユーザによって開始される、またはフラッシュ・メモリ・システムに関連付けられた制御装置によってほぼ自動的に開始されることが可能である。初期化要求に応答するプロセス300が、ステップ304において開始され、初期化要求が実際に受信される。初期化要求は、初期化されるフラッシュメモリと通信する制御装置またはプロセッサによって受信されることが可能である。そのような要求は、たとえば、給電時に、またはブロック割付けが均衡されるときに、ホストを介してユーザによって提供されることが可能である。
初期化要求が受信された後、平均消去カウントが、ステップ306において得られる。一実施形態では、平均消去カウントは、システムに関連付けられたNANDメモリに書き込まれる消去カウントブロックに記憶される。平均消去カウントおよび各ブロックの消去カウントを含む消去カウントブロック(ECB)は、フラッシュメモリのブロックに記憶される。システムが当初フォーマットされるときなど、消去カウントが創出されるとき、表の平均消去カウントおよび各ブロックの消去カウントは、通常、ゼロの値に初期化されることを理解されたい。平均消去カウントが得られた後、システム内のほぼすべてのブロックの消去カウントが得られる。図2に関して上述されたように、データを含む特定のブロックの消去カウントは、そのブロックに関連付けられる冗長領域に記憶されることが可能である。したがって、データを含むほぼすべてのブロックの消去カウントを得ることは、各ブロックに関連付けられた冗長領域にアクセスすることと、初期化要求において、各消去カウントを消去カウントブロックに記憶することとを含むことが可能である。
初期化要求時に、消去ブロックの消去カウントは、消去カウントブロックから得られる。消去カウントブロックは、そのブロックの冗長領域が消去されるので、一般にその値を維持する。システム全体がシャットダウンされるとき、終了要求が通常作成され、したがって、ほぼすべてのブロックの最後の消去カウントを得るように、消去カウント表が更新される。任意の所与の時間において、ブロックは、最高頻度消去ブロック表、最低頻度消去ブロック表、消去カウントブロック、またはブロックマッピング表に属する。消去カウントブロックに属するブロックの消去カウントは、ブロックの冗長領域に記憶される。データを含むブロックの消去カウントは、しばしば、ブロックマッピング表に属し、冗長領域に記憶される。ブロックマッピング表に属する消去ブロックの消去カウントは、ゼロの消去カウントを有するが、その理由は、ブロックが事実上全く使用されていないからである。最低頻度消去ブロック表または最高頻度消去ブロック表のブロックから消去カウントを得ることは、表から値を得ることを含むが、その理由は、表の各エントリが、消去ブロックのブロック数およびその消去カウントの両方を一般に含むからである。初期化要求の処理が完了すると直ちに、消去ブロックの消去カウントは、消去カウントブロックにおいて必ずしも更新されることが可能であるとは限らないことを理解されたい。消去カウントブロックは、その値を保持するが、その理由は、そのブロックの冗長領域が消去されるからである。システムがシャットダウンされるとき、消去カウントブロックが更新されて、すべてのブロックの最終消去カウントを含むように、終端要求が作成されることが可能である。最低頻度消去ブロックに属する消去ブロックの消去カウントは、最低頻度消去ブロック表から取り出され、一方、最高頻度消去ブロックに属する消去ブロックの消去カウントは、最高頻度消去ブロック表から取り出される。残りの消去ブロックの消去カウントは、一般に、消去カウントブロックから取り出される。
ステップ320において、ブロックマッピング表が、NANDシステムメモリにおいて割り付けられる。当業者なら理解するように、ブロックマッピング表は、論理ブロックアドレス(LBA)と物理ブロックアドレス(PBA)との間のマッピングを提供するように構成されることが可能である。さらに、最高頻度消去ブロック表および最低頻度消去ブロック表も、ステップ320において割り付けられる。
最高頻度消去ブロック表は、通常、最も頻繁に消去された消去ブロックに関する情報を有効に保持するようにサイズ決めされ、そうでない場合は構成される。すなわち、最高頻度消去ブロックが、消去カウントおよびマッピング情報など、システムの最高消去カウントを有する消去ブロックに属する情報を保持するように構成される。同様に、最低頻度消去ブロック表が、一般に、最低消去カウントを有する消去ブロックに属する情報を収容するようにサイズ決めされ、そうでない場合は構成される。最高頻度消去ブロック表のサイズおよび最低頻度消去ブロック表のサイズは、大きく変化することが可能であるが、サイズは、最高頻度で消去されると指定されるブロックの数、および最低頻度で消去されると指定されるブロックの数に依拠する。通常、最高頻度消去ブロック表は、一般に、最低頻度消去ブロック表より少ない消去ブロックの情報を収容するようにサイズ決めされる。例として、最高頻度消去ブロック表は、約18の消去ブロックの情報を収容するようにサイズ決めされることが可能であり、一方、最低頻度消去ブロック表は、約70の消去ブロックに関する情報を収容するようにサイズ決めされることが可能である。代替として、最高頻度消去ブロック表は、約10の消去ブロックの情報を収容するようにサイズ決めされることが可能であり、一方、最低頻度消去ブロック表は、約50の消去ブロックの情報を収容するようにサイズ決めされることが可能である。
表がステップ320において割り付けられた後、消去ブロックが、ステップ324において識別される。次いで、ステップ328において、「N」の消去ブロックが、最高頻度消去ブロックに割り当てられ、かつ本質的に、最高頻度消去ブロック表に割り当てられることが可能である。一実施形態では、「N」の消去ブロックは、すべての消去カウントの比較によって決定される最高消去カウントを有する「N」の消去ブロックとすることが可能である。代替として、最高頻度消去ブロック表に記憶される「N」の消去ブロックは、ステップ306において得られる平均消去カウントとの比較に基づいて決定されることが可能である。たとえば、「N」の消去ブロックは、平均消去カウントより大きい約24パーセントなどの少なくとも所与のパーセンテージである消去カウントを有する「N」の消去ブロックとすることが可能である。
最高頻度消去ブロックが有効にポピュレートされた後、ステップ332において、「M」の消去ブロックが、識別され、最低頻度消去ブロック表に有効に割り当てられることが可能である。「M」の消去ブロックは、一般に、システムに関連付けられたすべての消去ブロックの最低消去カウントを有する「M」の消去ブロックとすることが可能であり、または、「M」の消去ブロックは、平均消去カウントより小さい少なくとも所与のパーセンテージである消去カウントを有する「M」の消去ブロックとすることが可能である。「M」の消去ブロックは、事実上、適宜ブロックマッピング表に割り当てられるスペアブロックである。
残りの消去ブロック、すなわち最低頻度消去ブロック表または最高頻度消去ブロック表に割り当てられなかった消去ブロックが、ステップ336において、「未消去」ブロックと共に、ブロックマッピング表に割り当てられる。すなわち、残りの消去ブロックならびに関連付けられた冗長領域以外においてデータを含むブロックが、ブロックマッピング表に関連付けられる。
たとえば対応するブロックに属する消去カウントおよびマッピング情報と共に、ブロックマッピング表、最低頻度消去ブロック表、および最高頻度消去ブロック表が有効にポピュレートされた後、平均消去カウントが、ステップ338において決定されることが可能である。平均消去カウントを決定することは、通常、ステップ308において得られた個々のブロックの消去カウントを合計することと、ブロックの総数によって合計を除算することとを含む。
ステップ338において計算された平均消去カウントは、システムに関連付けられた消去カウントブロックに記憶される。以前に記述されたように、平均消去カウントは、システムに関連付けられたNANDメモリに書き込まれる消去カウントブロックに記憶される。平均消去カウントを消去カウントブロックに記憶すると直ちに、静止ブロック、またはデータを含み、かつ比較的小さい関連付けられた消去カウントを有するブロックが、ステップ342において処理されることが可能である。静止ブロックを処理する一方法に関連するステップは、図4に関して以下で記述される。静止ブロックが処理された後、初期化要求の処理は、完了される。
フラッシュメモリに関連付けられたブロックのグループ内には、任意の所与の時間において、消去されるブロック、およびデータ、すなわちユーザデータを含むブロックが通常存在する。データを含むブロックのいくつかは、「通常」ブロックと見なされることが可能であり、一方、他は、静止ブロックと見なされることが可能である。静止ブロックは、まれにしか変更されないデータを含むブロックである。すなわち、静止ブロックは、まれにしか消去されない。通常、静止ブロックは、フラッシュメモリに記憶されている比較的古いドキュメント、フラッシュメモリに記憶されている実行可能なプログラム、またはフラッシュメモリに記憶されているオペレーティングシステムに関連付けられることが可能である。静止ブロックは、一般に、フラッシュメモリ内の大半のブロックの消去カウントよりかなり小さい消去カウントを有することが可能である。一実施形態では、ブロックの消去カウントが、フラッシュ・メモリ・システムに関連付けられた平均消去カウントの約20パーセントなど、あるパーセンテージより小さい場合、データを含むブロックが静止ブロックと見なされることが可能である。
静止ブロックは、まれにしか変更されないデータを含むので、静止ブロックに含まれるデータは、比較的大きい消去カウントを有するブロックにコピーされることが可能である。すなわち、特定の物理ブロックの内容が比較的静止しており、したがって一般に変更されない場合、比較的小さい消去カウントを有する当初の物理ブロックを、最も頻繁に変更される内容を記憶するために使用することを可能にするために、内容は、比較的大きい消去カウントを有する異なる物理ブロックに有効に再度割り当てられることが可能である。図4を参照すると、静止ブロックを処理することに関連するステップ、すなわち図3のステップ342が、本発明の実施形態により記述される。システムの静止ブロックを処理するプロセス342が、ステップ404において開始され、ブロック「A」など、ブロックの消去カウントがアクセスされる。ブロック「A」の消去カウントがアクセスされた後、ステップ408において、ブロック「A」の消去カウントが、システムに関連付けられた平均消去カウントと比較して非常に小さいかについて判定が行われる。
ブロック「A」の消去カウントが、平均消去カウントと比較して小さいかに関する判定は、ほぼあらゆる適切な基準に基づくことが可能であるが、一実施形態では、判定は、ブロック「A」の消去カウントが、平均消去カウントの端数に関連付けられた値より小さい値を有するかに基づいて行われる。たとえば、ブロック「A」の消去カウントは、消去カウントが平均消去カウントの所定のパーセンテージより小さいとき、小さいと見なされることが可能である。
ステップ408において、ブロック「A」の消去カウントが平均消去カウントと比較して非常に小さくないと判定される場合、ブロック「A」は、静止ブロックではない可能性が最も高いことを意味する。ブロック「A」は、ブロック「A」の消去カウントが非常に小さいとは見なされない場合でも、依然として静止ブロックであるとすることが可能であるが、そのような場合のブロック「A」の消去カウントは、他のブロックとのブロック「A」のスワップを事実上トリガしないことを理解されたい。したがって、静止ブロックを処理するプロセスは、完了される。
代替として、ステップ408において、ブロック「A」の消去カウントが平均消去カウントと比較して非常に小さいと判定される場合、ブロック小さい消去カウントを有するブロック「A」が、比較的頻繁に変更されるデータを記憶するのに自由であるとすることが可能であるように、「A」の内容は、比較的大きい消去カウントを有するブロックに書き込まれることが可能である。すなわち、ブロック「A」の消去カウントが平均消去カウントと比較して非常に小さいとき、ブロック「A」は静止ブロックであることを意味する。したがって、プロセス流れは、ステップ408からステップ412に移行し、ブロック「A」は、静止ブロックと識別される。ブロック「A」が静止ブロックと識別された後、ステップ416において、ブロック、すなわちブロック「B」が、最高頻度消去ブロック表によって識別された最高頻度消去ブロックのグループから得られることが可能である。
ブロック「B」が得られた後、ステップ420において、ブロック「A」の内容は、ブロック「B」にコピーされる。すなわち、ステップ420において、ブロック「A」に含まれるユーザデータは、ブロック「B」にコピーされる。ブロック「A」の内容がブロック「B」にコピーされた後、ステップ424において、ブロック「A」は消去される。通常、ブロック「A」が消去されるとき、ブロック「A」に関連付けられた消去カウントは増分される。ブロック「C」などのブロックが、ブロック「C」の関連付けが、最低頻度消去ブロック表から最高頻度消去ブロック表に有効に変更されるように、ステップ428において最低頻度消去ブロックのグループから最高頻度消去ブロックのグループに移動されることが可能である。すなわち、ブロック「C」は、最低頻度消去ブロック表から分離されて、最高頻度消去ブロック表に関連付けられる。そのような移動により、最低頻度消去ブロック表のスペースが、小さい消去カウントを有し、したがってシステムの最低頻度消去ブロックの1つであるブロック「A」を収容するように、有効に開放されることが可能になる。
ブロック「C」を最低頻度消去ブロックのグループから移動させる、またはそうでない場合はブロック「C」を最低頻度消去ブロックから分離すると直ちに、プロセス流れは、ステップ428からステップ432に移行し、ステップ432において、ブロック「A」は、ブロックマッピング表から最低頻度消去ブロックに有効に移動される。次いで、ステップ434において、ブロック「A」に以前に含まれていた内容を含むブロック「B」が、ブロックマッピング表に関連付けられる。当業者なら理解するように、ブロック「B」をブロックマッピング表に「移動」させることは、通常、この段階でブロック「B」に関連付けられるブロック「A」に関連付けられていた論理ブロックアドレスのマッピングを更新することを含む。ブロック「C」に属する情報が、最高頻度消去ブロック表に存在し、ブロック「B」に属する情報が、ブロックマッピング表に存在し、ブロック「A」に属する情報が、最低頻度消去ブロック表に存在するとき、静止ブロックを処理するプロセスは完了される。プロセス342は、システムに関連付けられたほぼすべての静止ブロックが識別され、処理されるまで、反復されることが可能であることを理解されたい。
一般に、ブロックマッピング表、最低頻度消去ブロック表、および最高頻度消去ブロック表は、初期化要求がフラッシュ・メモリ・システム全体に送信されるとき、図1aのRAM112など、システムメモリにおいて創出されることが可能である。表を構築するために、スペースが、表を収容するように、システムメモリにおいてまず割り付けられることが可能である。
前述されたように、ブロックマッピング表、最低頻度消去ブロック表、および最高頻度消去ブロック表が、平均消去カウントの場合のように、システムメモリにおいて創出される。各ブロックの平均消去カウントおよび消去カウントも、消去カウントブロックに書き込まれる。図5aは、本発明の実施形態による、システムメモリの概略的なブロック図である。システムメモリ454およびフラッシュメモリ460が、全システムに含まれ、たとえば、メモリカードの構成要素またはフラッシュメモリ460が埋め込まれるホスト装置の構成要素と事実上することが可能である。システムメモリ454は、ブロックが関連付けられることが可能であるブロックマッピング表462を記憶するように構成される。通常、ブロックマッピング表462は、LBAを、フラッシュメモリ460に関連付けられた物理ブロックに関連付けるために使用されることが可能である。
システムメモリ454は、ブロックマッピング表462と同様に、初期化要求に応答して一般に形成される最低頻度消去ブロック表466および最高頻度消去ブロック表470をも保持する。ブロックの平均消去カウントをフラッシュメモリ460内に保持するように構成される平均消去カウント474が、フラッシュ・メモリ・システム全体がフォーマットされるとき創出される。一実施形態では、消去カウントブロック480が、ほぼすべてのブロックの消去カウントをフラッシュメモリ460内に含むように構成される。初期化要求が作成されるたびに、更新された平均消去カウントが計算されて、消去カウントブロック480に記憶されることが可能である。
図5bは、本発明の実施形態による、「通常」ブロックのグループ、最低頻度消去ブロックのグループ、および最高頻度消去ブロックのグループの概略図である。ブロック502のグループが、ブロック514を含み、ブロック514は、消去されることが可能であるが、最低頻度消去ブロックまたは最高頻度消去ブロックのカテゴリに入らないユーザデータを一般に含む正規ブロックまたは静止ブロックとすることが可能である。最低頻度消去ブロック506のグループが、全システム内において最低消去カウントを有するブロック518を一般に含み、一方、最高頻度消去ブロック510のグループが、消去ブロックの最高消去カウントを全システム内において有するブロック522を一般に含む。一般に、ブロック518は、スペアブロックとして有効に使用される。
ブロック514が消去されるとき、消去ブロック514が、比較的小さい関連付けられた消去カウントまたは比較的大きい関連付けられた消去カウントを有するかについて判定されることが可能である。消去ブロック514が、比較的小さい関連付けられた消去ブロックを有するとき、消去ブロック514は、最低頻度消去ブロック506のグループに追加されることが可能である。一方、消去ブロック514が、比較的大きい関連付けられた消去カウントを有するとき、消去ブロック514は、最高頻度消去ブロック510のグループに再度割り当てられることが可能である。
ほぼあらゆるサイズとすることが可能である最低頻度消去ブロック506のグループは、ソートされたグループとすることが可能である。すなわち、ブロック518は、消去カウントに基づいて実質的にソートされることが可能である。ソートは、通常、ブロック518に関連付けられたエントリを含む対応する最低頻度消去ブロック表(図示せず)において反映される。たとえば、新しいブロック518が最低頻度消去ブロック506のグループに移動される、または追加される、あるいはそうでない場合は関連付けられるたびに、ブロック518は、最低頻度消去ブロック506のグループにおける最低頻度消去ブロック518が、グループ502になど、再度割り当てられる次のブロック518とすることが可能であるように、消去カウントに基づいて本質的にソートされることが可能である。すなわち、データがコピーされる新しいブロックが必要であるとき、ブロック518の最低消去ブロック518は、最低頻度消去ブロック表を使用して識別されて、最低頻度消去ブロック506のグループから取り入れられる。通常、必要とされないデータを含むブロック514が消去されるとき、そのブロック514は、最低頻度消去ブロック506のグループにソートされることが可能であり、最低頻度消去ブロック表は、相応して更新されることが可能である。すなわち、追加ブロックに対応するエントリが、最低頻度消去ブロック表に含まれることが可能である。
最高頻度消去ブロック510のグループのブロック522も、最低頻度消去ブロック506のグループに記憶されているブロック518と同様に、消去カウントに基づいて実質的にソートされることが可能である。ソートは、通常、ブロック522を識別するように作用する最高頻度消去ブロック表(図示せず)においてエントリを分離することによって実施される。一実施形態では、ブロック522に関連付けられた平均消去カウントが、計算されることが可能である。すなわち、最高頻度消去ブロック510のグループの平均消去カウントが、決定されることが可能である。グループ502からのブロック514が消去され、消去ブロック514の消去カウントが、約20パーセントを超えるなど所与のパーセンテージを超えることによって、最高頻度消去ブロック510のグループの平均消去カウントを超えることが判明するとき、消去ブロック514は、最高頻度消去ブロック510のグループに追加されることが可能である。新しいブロック522が最高頻度消去ブロック510のグループに有効に追加されるとき、最低消去カウントを有する頻度消去ブロック510のグループ内のブロック522が、グループ520に再度割り当てられることが可能である。そのような再度割当ては、通常、関連付けられたブロックマッピング表、最低頻度消去ブロック表、および最高頻度消去ブロック表(図示せず)を更新することによって反映される。
グループ502、最低頻度消去ブロック506のグループ、および最高頻度消去ブロック510との間においてブロックをスワップすることは、一般に、グループ502に含まれるブロック514が消去または更新されるときに行われることが可能である。代替として、ブロックのスワップまたは更新は、実質的に、スペアブロックがグループ502において使用されるために割り付けられることが所望されるたびに、行われることが可能である。次に図6を参照すると、ブロックのより一様な摩耗を見込むために、埋込みフラッシュメモリを有するホストシステムなどのメモリシステム全体においてブロックのスワップまたは更新を実施する1つの方法が、本発明の実施形態により記述される。ブロックのスワップまたは更新を実施するプロセス600が、ステップ604において開始され、ブロック「Y」などのブロックが、ブロックマッピング表から「得られ」、そうでない場合は、ブロックマッピング表を使用して識別される。得られるブロックは、内容をコピーまたは更新するために、ブロックマピング表から有効にスワップされるブロックである。
ブロック「Y」が得られた後、ステップ608において、ブロック「X」などのブロックが、最低頻度消去ブロック表から有効に得られる。すなわち、スペアブロックが、適切なスペアブロックを識別するために、最低頻度消去ブロック表を使用して最低頻度消去ブロックのグループから得られる。一般に、ブロック「X」は、最低頻度消去ブロックのグループにおいて最低消去カウントを有するブロックであるが、ブロック「X」は、最低頻度消去ブロックのグループ、したがって最低頻度消去ブロック表に関連付けられたほぼあらゆるブロックとすることが可能である。ブロック「Y」に記憶されている内容またはより詳細にはデータ内容、またはブロック「Y」の当初の内容と置き換えられる新しい内容が、ステップ612においてブロック「X」にコピーされる。
ブロック「Y」の内容がブロック「X」にコピーされた後、ブロック「X」は、ステップ616において、ブロックマピング表に有効に移動される、または関連付けられる。すなわち、ブロック「Y」およびブロック「X」に関連するマッピングは、ブロック「Y」に以前にマッピングされたLBAがブロック「X」に再度マッピングされるように、有効に更新される。ブロック「X」がブロックマッピング表に有効に移動されるとき、ステップ620において、ブロック「Y」は消去される。具体的には、ユーザ内容など、ブロック「Y」に記憶されているデータ内容は、ほぼあらゆる適切な技術を使用して消去されることが可能である。次いで、ブロック「Y」に関連付けられた冗長領域に記憶されているブロック「Y」に関連付けられた消去カウントは、ブロック「Y」が再び消去されたことを示すために、ステップ624において増分される。一実施形態では、消去カウントブロックに有効に記憶されている「Y」の消去カウントが、更新されることが可能であることを理解されたい。
ステップ628において、最高頻度消去ブロック表において最低消去カウントを有するブロックが識別される。上述されたように、一実施形態では、最高頻度消去ブロック表において参照されるブロックが、それぞれの消去カウントに従ってソートされる。ブロックをソートすることは、ブロックの消去カウントに従って、最高頻度消去ブロック表内においてブロックに対する参照を位置決めすることを含むことが可能である。したがって、最高消去カウントを有するブロックを識別することは、最低消去カウントを有するブロック参照に収容するように構成される最高頻度消去ブロック表内の位置において、ブロック参照にアクセスすることを一般に含む。
最高頻度消去ブロック表において参照された最低消去カウントを有するブロックが識別された後、プロセス流れは、ステップ628からステップ632に移行し、ブロック「Y」の消去カウントが、最高頻度消去ブロック表において参照された最低消去カウントを有するブロックの消去カウントより大きいかについて判定される。ブロック「Y」の消去カウントが、最高頻度消去カウント表において参照された最低消去カウントを有するブロックの消去カウントより大きくないと判定される場合、ブロック「Y」は、頻繁に消去されると見なされないことを意味する。したがって、プロセス流れは、ステップ632からステップ636に進行し、ブロック「Y」は、最低頻度消去ブロックのグループから移動され、最低頻度消去ブロック表に有効に移動される。すなわち、ブロック「Y」に対応するエントリが、最低頻度消去ブロック表に追加される。一実施形態では、ブロック「Y」を最低頻度消去ブロックのグループに移動させることは、各ブロックの消去カウントを使用して最低頻度消去ブロック表においてほぼすべてのブロック参照を再ソートすることを含むことが可能である。ブロック「Y」が最低頻度消去ブロック表に有効に移動された後、ブロックをスワップまたは更新するプロセスは、完了される。
ステップ632に戻ると、ステップ632において、ブロック「Y」の消去カウントが、最高頻度消去ブロック表に関連付けられた最低消去カウントを超えると判定される場合、ブロック「Y」は、最高頻度消去ブロックのグループに移動されるべきであり、かつ最高頻度消去ブロック表に有効に移動されるべきであることを意味する。ブロック「Y」が最高頻度消去ブロック表において参照される余地が存在するために、最高頻度消去ブロック表において参照された最低消去カウントを有するブロックなどのブロックが、最高頻度消去ブロック表から除去されることが、実際上必要である。したがって、ステップ640において、最高頻度消去ブロック表において参照された最低消去カウントを有するブロックは、最低頻度消去ブロックのグループに移動され、かつ最低頻度消去ブロック表に有効に移動される。ブロックを最低頻度消去ブロックのグループに移動させることは、各ブロックの消去カウントに従って、最低頻度消去ブロック表においてブロック参照を再度ソートすることを含むことが可能である。
最高頻度消去ブロック表において最低消去カウントを有するブロックが、最高頻度消去ブロック表から有効に移動された後、ステップ644において、ブロック「Y」は、最高頻度消去ブロック表に有効に移動される。一実施形態では、ブロック「Y」を最高頻度消去ブロックのグループに移動させ、したがって最高頻度消去ブロック表に有効に移動させることは、ブロック「Y」を含めて、各ブロックの消去カウントに従って最高頻度消去ブロックを再ソートすることを含むことが可能である。ブロック「Y」が最高頻度消去ブロック表に有効に移動されるとき、ブロックをスワップまたは更新するプロセスは、完了される。
一般に、ブロックをスワップまたは更新する要求に応答することなど、表を維持すること、初期化要求に対処すること、および摩耗一様化を実施することに関連付けられる機能は、プログラムコード装置などのソフトウエアにおいて、またはファームウエアとしてホストシステムに提供される。摩耗一様化が行われることを可能にするために、ホストシステムに提供されるソフトウエアまたはファームウエアに関連付けられる適切なシステムアーキテクチャの一実施形態が、図7に示される。システムアーキテクチャ700は、アプリケーションインタフェース704、システム・マネジャ・モジュール708、データ・マネジャ・モジュール712、データ保全マネジャ716、ならびに装置マネジャおよびインタフェースモジュール720などを含むが、これに限定されない、様々なモジュールを一般に含む。一般に、システムアーキテクチャ700は、図1aのプロセッサ108など、プロセッサによってアクセスされることが可能であるソフトウエアコード装置またはファームウエアを使用して実施されることが可能である。
一般に、アプリケーション・インタフェース・モジュール704は、ホスト、オペレーティングシステム、またはユーザと直接通信するように構成されることが可能である。アプリケーション・インタフェース・モジュール704は、システム・マネジャ・モジュール708およびデータ・マネジャ・モジュール712とも通信する。ユーザがフラッシュメモリを読み取る、それに書き込む、またはそれをフォーマットすることを望むとき、ユーザは、要求をオペレーティングシステムに送信し、要求は、アプリケーション・インタフェース・モジュール704に渡される。アプリケーション・インタフェース・モジュール704は、要求に応じて、要求をシステム・マネジャ・モジュール708またはデータ・マネジャ・モジュール712に向ける。
システム・マネジャ・モジュール708は、システム初期化サブモジュール724、消去カウントブロック管理サブモジュール726、および電力管理ブロックサブモジュール730を含む。システム初期化サブモジュール724は、一般に、初期化要求が処理されることを可能にするように構成され、通常、消去カウントブロック管理サブモジュール726と通信する。一実施形態では、システム初期化サブモジュール724は、ブロックの消去カウントが更新されることを可能にし、最低頻度消去ブロック表および最高頻度使用ブロック表を創出する役割を実質的に担う。
消去カウントブロック管理サブモジュール726は、ブロックの消去カウントを記憶する機能、および個々の消去カウントを使用して、平均消去カウントを計算ならびに更新する機能を含む。すなわち、消去カウントブロック管理モジュール726により、平均消去カウントを維持することが事実上可能になる。さらに、一実施形態では、消去カウントブロック管理サブモジュール726は、また、システム全体の中に、消去カウント起動ブロックのほぼすべてのブロックの消去カウントをほぼ同期させる。消去カウントブロック管理サブモジュール726は、平均消去カウントが消去カウントブロックに記憶されるように構成されることが可能であるが、電力管理ブロックサブモジュール730は、代わりに、平均消去カウントが記憶されることを可能にするために使用されることが可能であることを理解されたい。
アプリケーション・インタフェース・モジュール704と通信することに加えて、システム・マネジャ・モジュール708は、データ・マネジャ・モジュール712、ならびに装置マネジャおよびインタフェースモジュール720とも通信する。システム・マネジャ・モジュール708およびアプリケーション・インタフェース・モジュール704の両方と通信するデータ・マネジャ・モジュール712は、ページまたはブロックのマッピングを提供する機能を含むことが可能である。データ・マネジャ・モジュール712は、オペレーティングシステムおよびファイル・システム・インタフェース層に関連する機能を含むことも可能である。
システム・マネジャ・モジュール708、データ・マネジャ712、およびデータ保全マネジャ716と通信する装置マネジャおよびインタフェースモジュール720は、通常、フラッシュ・メモリ・インタフェースを提供し、I/Oインタフェースなど、ハードウエアアブストラクションに関連する機能を含む。データ保全マネジャモジュール716は、機能の中でも、ECCハンドリングを提供する。
本発明のごくわずかな実施形態について記述したが、本発明は、本発明の精神または範囲から逸脱せずに、多くの他の特有の形態において実現されることが可能であることを理解されたい。例として、平均消去ブロックに対する各ブロックの比較に基づいてブロックを最高頻度消去ブロック表および最低頻度消去ブロック表にブロックを割り当てる代わりに、ブロックは、どのブロックが最高消去カウントを有し、どのブロックが最低消去カウントを有するかのほぼ絶対的な判定に基づいて、最高頻度消去ブロック表および最低頻度消去ブロック表に代わりに割り当てられることが可能である。すなわち、個々のブロック消去カウントを平均消去カウントに対して比較するのではなく、ブロック消去カウントが、ブロックを挿入すべき適切な表を決定するために、互いに実際に比較されることが可能である。
最低頻度消去ブロック表が、スペアブロックとして比較的小さい消去カウントを有するブロックに対する参照を保持するように記述された。スペアブロックは、実質的にスペアブロックが必要とされるたびに、最低頻度消去ブロック表において参照された最低消去カウントが使用のために提供されるように、ブロックマッピング表を使用することにより、使用のために有効に割り付けられる。すなわち、ブロックマッピング表において識別されたブロックがスワップされるとき、最低頻度消去ブロックのグループにおいて最低消去カウントを有するブロックへの参照が、ブロックマッピング表に移動される。しかし、ほぼあらゆるブロックが、ブロック・スワップまたは更新プロセス中に、最低頻度消去ブロックのグループから一般に取り入れられることが可能であることを理解されたい。ブロックマッピング表に移動させるために、最低頻度消去ブロック表を使用して最低頻度消去ブロックからほぼあらゆるブロックを選択することにより、システム全体に関連付けられたオーバーヘッドを低減することが可能であるが、その理由は、最低頻度消去ブロック表内のブロックは、必ずしもソートされる可能性がないからである。
静止ブロックを識別および処理することは、一般に、全メモリシステム内のブロックが一様に摩耗することを可能にする能力を向上させる。しかし、一実施形態では、静止ブロックは、必ずしも識別および処理されない。たとえば、比較的少数の静止ブロックがシステム内において予期される場合、静止ブロックの識別および処理は、本発明の精神または範囲から逸脱せずに、ほぼ排除されることが可能である。
不揮発性メモリシステムは、関連付けられたメモリ制御装置によって制御され、またはホストシステムに関連付けられたソフトウエアもしくはファームウエアを使用して制御されると記述されたが、消去カウントの管理を含む摩耗一様化プロセスは、不揮発性メモリシステムの実質的に外部にある制御装置と通信する不揮発性メモリシステムに適用されることが可能であることを理解されたい。制御装置を使用する適切なメモリシステムは、PCカード、コンパクトフラッシュ(登録商標)カード、マルチメディアカード、セキュア・デジタル・カード、ならびにフラッシュメモリおよびフラッシュメモリ制御装置を含む埋込みチップセットを含むが、これに限定されるものではない。ホストウエアにロードされたソフトウエアまたはファームウエアの使用により制御されるメモリシステムは、埋込みメモリ装置を含む。一実施形態では、上述された消去管理技術を使用することが可能であり、かつメモリシステムに関連付けられた制御装置を使用しないメモリシステムが、摩耗一様化を実施するために、ホストコンピュータシステムなど、ホストに関連付けられた制御装置を使用することが可能である。すなわち、ホストが、摩耗一様化がホスト上の制御装置を使用することにより行われるメモリに直接対処して、管理することが可能である。
一般に、摩耗一様化の様々なプロセスおよび方法に関連するステップは、大きく変更されることが可能である。ステップは、一般に、本発明の範囲の精神から逸脱せずに、追加、除去、変更、および再順序付けされることが可能である。例として、静止ブロックを処理することは、初期化要求を処理することに必ずしも含まれないことが可能である。また、一実施形態では、新しく消去されたブロックを最高頻度消去ブロック表に実際に配置するかの判定は、消去ブロックが、最高頻度消去ブロック表に関連付けられた最低消去カウントより大きい消去カウントを有するかに基づく代わりに、他の基準に基づくことが可能である。たとえば、そのような決定は、消去ブロックの消去カウントが、約20パーセントなど、あるパーセンテージの最高頻度消去ブロック表に関連付けられたほぼすべてのブロックの平均消去カウントを超えるかに基づくことが可能である。消去ブロックの消去カウントが、あるパーセンテージを超えて平均消去カウントを超えるとき、最高頻度消去ブロック表において参照された最低消去カウントを有するブロックは、最低頻度消去ブロック表に移動されることが可能であり、一方、消去ブロックは、最高頻度消去ブロック表に移動される。したがって、本例は、例示としてであり、限定的と見なされるべきではなく、本発明は、本明細書において与えられた詳細に限定されず、添付の請求項の範囲内において修正されることが可能である。
図1aは本発明の実施形態による、不揮発性メモリ装置を含む汎用ホストシステムの概略図である。 図1bは本発明の実施形態による、図1aのメモリ装置120など、メモリ装置の概略図である。 本発明の実施形態による、フラッシュメモリの一部の概略図である。 本発明の実施形態による、フラッシュ・メモリ・システムに関する初期化要求を処理することに関連するステップを示すプロセス流れ図である。 本発明の実施形態による、静止ブロックを処理する1つの方法に関連するステップを示すプロセス流れ図である。 本発明の実施形態による、システムメモリを示す概略的なブロック図である。 本発明の実施形態による、通常ブロック、最低頻度消去ブロック、および最高頻度消去ブロックを示す概略図である。 本発明の実施形態による、ブロックのより一様な摩耗を見込むために、メモリシステム全体のシステムメモリにおいてブロック・スワップまたは更新を実施する一方法を示す概略図である。 本発明の実施形態による、システムアーキテクチャを示す概略的なブロック図である。

Claims (10)

  1. メモリシステムの不揮発性メモリに含まれ、それぞれが関連する消去カウントを有する要素を処理する方法であって、前記方法が、
    前記不揮発性メモリ内の消去要素を識別するステップと、
    第1セットの消去要素を画定するステップであって、前記第1セットの消去要素に含まれる前記要素が、前記第1セットの要素に含まれていない消去要素より高い関連する消去カウントを有するステップと、
    前記第1セットの要素に関連付けられ、前記関連する消去カウントを含むエントリをデータ構造に配置するステップと、
    前記エントリを前記データ構造内においてソートするステップと、
    前記ソートされたエントリを使用して、前記第1セット要素内において第1要素を識別するステップであって、前記第1要素が、前記第1セットの要素に含まれる他の要素より低い関連する消去カウントを有するステップと、
    第2要素の内容を消去するステップと、
    前記第2要素の関連する消去カウントが、前記識別された第1要素の関連する消去カウントを超えたことに応答して、前記消去要素の第1セットから前記第1要素を除去するステップと、
    前記第2要素を前記消去要素の第1セットに追加するステップと、
    を含む、方法
  2. 第1平均消去カウントを決定するステップであって、前記第1平均消去カウントが、前記第1セットの各要素の前記関連付けられた消去カウントを使用して決定されるステップをさらに含み、
    前記除去するステップと、追加するステップが、前記第2要素の関連する消去カウントが前記第1の平均消去カウントを超えたことに応答して実行される、
    請求項1に記載の方法。
  3. 前記第1要素を前記消去要素の第1セットから除去するステップが、前記第1要素に関連付けられたエントリを前記データ構造から除去することを含み、
    前記第2要素を前記第1セットに追加するステップが、前記第2の要素に関連付けられたエントリを前記データ構造に配置するステップを含む、請求項1に記載の方法。
  4. 前記エントリをデータ構造内において再ソートするステップと、
    前記ソートされたエントリを使用して、前記第1セットの要素内において第3要素を識別するステップであって、前記第3要素が、前記第1セットの要素に含まれる他の要素より軽度に摩損しているステップとをさらに含む、請求項3に記載の方法。
  5. 前記第1セットの要素に含まれる前記要素が、実際上使用停止されている、請求項1に記載の方法。
  6. 前記不揮発性メモリが、フラッシュメモリであり、前記要素が、ブロックである、請求項1に記載の方法。
  7. メモリ要素と、
    前記メモリ要素のそれぞれに対する関連する消去カウントを記憶するためのシステムメモリ構成要素と、
    前記メモリ要素の内の消去されたものを識別する手段と、
    第1セットの前記消去メモリ要素を画定する手段であって、前記第1セットの消去メモリ要素に含まれる前記メモリ要素が、前記第1セットのメモリ要素に含まれていない消去メモリ要素より高い関連する消去カウントを有する、手段と、
    前記第1セットの消去メモリ要素に関連付けられ、各消去メモリ要素に関連する消去カウントを含むエントリを、前記システムメモリ構成要素に関連付けられたデータ構造に配置する手段と、
    前記データ構造内において前記エントリをソートする手段と、
    前記ソートされたエントリを使用して、前記第1セットのメモリ要素内において第1メモリ要素を識別する手段であって、前記第1メモリ要素が、前記第1セットのメモリ要素に含まれる他のメモリ要素より低い関連する消去カウントを有する手段と、
    第2の要素の関連する消去カウントが前記識別された第1要素の関連する消去カウントを超えたことに応答して前記消去要素の第1セットから前記第1メモリ要素を除去し、次に前記第2要素を前記消去要素の第1セットに追加する手段と、
    を備える、メモリシステム。
  8. 前記第1メモリ要素を前記第1セットから除去する前記手段が、前記第1メモリ要素に関連付けられたエントリを前記データ構造から除去する手段を含み、前記第2メモリ要素を前記第1セットに追加する前記手段が、前記第2セットのメモリ要素に関連付けられたエントリをデータ構造に配置する手段を含む、請求項7に記載の前記メモリシステム。
  9. 前記第1セットのメモリ要素に含まれる前記メモリ要素が、実際上使用停止されている、請求項7に記載の前記メモリシステム。
  10. 前記メモリ要素が、不揮発性メモリブロックである、請求項7に記載の前記メモリシステム。
JP2009202432A 2002-10-28 2009-09-02 不揮発性記憶システムにおける最高頻度消去ブロックの追跡 Pending JP2010015591A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/281,670 US6973531B1 (en) 2002-10-28 2002-10-28 Tracking the most frequently erased blocks in non-volatile memory systems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004548320A Division JP2006504221A (ja) 2002-10-28 2003-09-10 不揮発性記憶システムにおける最高頻度消去ブロックの追跡

Publications (1)

Publication Number Publication Date
JP2010015591A true JP2010015591A (ja) 2010-01-21

Family

ID=32228770

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004548320A Pending JP2006504221A (ja) 2002-10-28 2003-09-10 不揮発性記憶システムにおける最高頻度消去ブロックの追跡
JP2009202432A Pending JP2010015591A (ja) 2002-10-28 2009-09-02 不揮発性記憶システムにおける最高頻度消去ブロックの追跡

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004548320A Pending JP2006504221A (ja) 2002-10-28 2003-09-10 不揮発性記憶システムにおける最高頻度消去ブロックの追跡

Country Status (10)

Country Link
US (1) US6973531B1 (ja)
EP (1) EP1559113B1 (ja)
JP (2) JP2006504221A (ja)
KR (1) KR20050059314A (ja)
CN (1) CN1701390A (ja)
AT (1) ATE387714T1 (ja)
AU (1) AU2003270545A1 (ja)
DE (1) DE60319407T2 (ja)
TW (1) TWI267866B (ja)
WO (1) WO2004040585A1 (ja)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
US7328301B2 (en) * 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US7139863B1 (en) * 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7224604B2 (en) * 2005-03-14 2007-05-29 Sandisk Il Ltd. Method of achieving wear leveling in flash memory using relative grades
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7640389B2 (en) * 2006-02-28 2009-12-29 Freescale Semiconductor, Inc. Non-volatile memory having a multiple block erase mode and method therefor
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
JP5171840B2 (ja) * 2006-11-24 2013-03-27 サンドフォース インコーポレイテッド メモリの寿命を縮める動作を遅延させる方法及びストレージシステム
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US20080126685A1 (en) * 2006-11-24 2008-05-29 Radoslav Danilak System, method, and computer program product for reducing memory write operations using an instruction set
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8090980B2 (en) * 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US8356152B2 (en) * 2006-12-27 2013-01-15 Intel Corporation Initiative wear leveling for non-volatile memory
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
CN101211314B (zh) * 2006-12-31 2010-07-14 创惟科技股份有限公司 闪存资料读写寿命提升方法
CN100504814C (zh) 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
US7731365B2 (en) * 2007-03-19 2010-06-08 Johnson&Johnson Vision Care, Inc. Method of fitting contact lenses
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN100538662C (zh) * 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
KR101401560B1 (ko) * 2007-12-13 2014-06-03 삼성전자주식회사 반도체 메모리 시스템 및 그것의 마모도 관리 방법
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
JP4762261B2 (ja) * 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
JP2009266349A (ja) 2008-04-28 2009-11-12 Toshiba Corp 不揮発性半導体記憶装置
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
US20100017566A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer
KR20100013485A (ko) 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
US20100064093A1 (en) * 2008-09-09 2010-03-11 Radoslav Danilak System, method, and computer program product for converting data in a binary representation to a non-power of two representation
US20100146236A1 (en) * 2008-12-08 2010-06-10 Radoslav Danilak System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
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
US8291152B2 (en) 2009-01-07 2012-10-16 Silicon Motion, Inc. Method for operating non-volatile memory and data storage system using the same
TWI409819B (zh) 2009-03-03 2013-09-21 Silicon Motion Inc 平均地使用一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US8230159B2 (en) 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US20110004718A1 (en) * 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US8140712B2 (en) * 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
CN101989458B (zh) * 2009-07-31 2013-10-30 慧帝科技(深圳)有限公司 平均地使用一闪存的多个区块的方法、记忆装置及控制器
KR20110024832A (ko) * 2009-09-03 2011-03-09 주식회사 하이닉스반도체 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법
KR101086876B1 (ko) * 2009-09-30 2011-11-25 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8108737B2 (en) * 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device
JP2011081561A (ja) * 2009-10-06 2011-04-21 Canon Inc 情報処理装置
TW201120898A (en) * 2009-12-07 2011-06-16 Jmicron Technology Corp Mehtod for wear-leveling and apparatus thereof
US8677054B1 (en) * 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9170933B2 (en) 2010-06-28 2015-10-27 International Business Machines Corporation Wear-level of cells/pages/sub-pages/blocks of a memory
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
KR20120096212A (ko) * 2011-02-22 2012-08-30 삼성전자주식회사 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법
GB2490991B (en) * 2011-05-19 2017-08-30 Ibm Wear leveling
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
KR101989018B1 (ko) * 2012-06-25 2019-06-13 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
CN102929794B (zh) * 2012-09-26 2015-12-02 惠州市德赛西威汽车电子股份有限公司 一种eeprom的存储方法
KR20150044753A (ko) * 2013-10-17 2015-04-27 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
TWI517165B (zh) * 2014-03-31 2016-01-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9875039B2 (en) 2014-09-30 2018-01-23 Sandisk Technologies Llc Method and apparatus for wear-leveling non-volatile memory
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US10338817B2 (en) 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US9766819B2 (en) 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
HUE056995T2 (hu) * 2016-12-09 2022-04-28 Hoffmann La Roche Legalább egy orvosi mûvelet elvégzésére szolgáló eszköz
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
CN111261218B (zh) * 2020-04-27 2020-08-21 深圳市芯天下技术有限公司 多颗Norflash样品同时测试的方法
DE102021116828A1 (de) 2021-06-30 2023-01-05 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JP2002032256A (ja) * 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0618535B1 (en) 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5832493A (en) 1997-04-24 1998-11-03 Trimble Navigation Limited Flash file management system
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JP2002032256A (ja) * 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置

Also Published As

Publication number Publication date
DE60319407T2 (de) 2009-03-19
ATE387714T1 (de) 2008-03-15
EP1559113A1 (en) 2005-08-03
US6973531B1 (en) 2005-12-06
AU2003270545A1 (en) 2004-05-25
TWI267866B (en) 2006-12-01
WO2004040585A1 (en) 2004-05-13
TW200418038A (en) 2004-09-16
CN1701390A (zh) 2005-11-23
JP2006504221A (ja) 2006-02-02
EP1559113B1 (en) 2008-02-27
DE60319407D1 (de) 2008-04-10
KR20050059314A (ko) 2005-06-17

Similar Documents

Publication Publication Date Title
JP4456486B2 (ja) 不揮発性記憶システムにおける摩耗一様化
JP4445394B2 (ja) 消去カウントブロックを管理する方法および装置
JP4372013B2 (ja) 不揮発性記憶システムにおける消去カウントの維持
JP4758648B2 (ja) 不揮発性記憶システムにおける平均消去カウントの維持
EP1559113B1 (en) Tracking the most frequently erased blocks in non-volatile storage systems
US7096313B1 (en) Tracking the least frequently erased blocks in non-volatile memory systems
JP5005171B2 (ja) 論理ブロックをスプリットする方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111215