JP4966965B2 - 電源喪失によるデータ破損に強いフラッシュメモリ管理方法 - Google Patents

電源喪失によるデータ破損に強いフラッシュメモリ管理方法 Download PDF

Info

Publication number
JP4966965B2
JP4966965B2 JP2008510725A JP2008510725A JP4966965B2 JP 4966965 B2 JP4966965 B2 JP 4966965B2 JP 2008510725 A JP2008510725 A JP 2008510725A JP 2008510725 A JP2008510725 A JP 2008510725A JP 4966965 B2 JP4966965 B2 JP 4966965B2
Authority
JP
Japan
Prior art keywords
page
pages
written
data
writing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008510725A
Other languages
English (en)
Other versions
JP2008544345A (ja
Inventor
パレイ、アレクサンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
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 IL Ltd filed Critical SanDisk IL Ltd
Publication of JP2008544345A publication Critical patent/JP2008544345A/ja
Application granted granted Critical
Publication of JP4966965B2 publication Critical patent/JP4966965B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/22Safety or protection circuits preventing unauthorised or accidental access to memory cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、フラッシュメモリの管理方法に関し、特に、電力が不意に遮断された場合にデータ破損に強い、マルチレベルセルフラッシュメモリの管理方法に関する。
フラッシュメモリは、EEPROM(電気的消去可能プログラム可能読み出し専用メモリ)不揮発性メモリ型である。図1Aは、一般的なフラッシュベースデータ記憶装置10の高レベル概略ブロック図であるが、この装置10は、1つまたは複数のNANDフラッシュ媒体12にデータを格納するためにホスト装置(図示せず)によって用いられる。装置10の動作は、ランダムアクセスメモリ(RAM)16および補助不揮発性メモリ18の助けを借りて、マイクロプロセッサベースコントローラ14によって制御される。このために、フラッシュ装置10およびホストシステムは、フラッシュ装置10の通信ポート20を介して通信する。典型的には、磁気ハードディスクなどのブロックメモリ装置へ向けて自身のオペレーティングシステムが適応されているホスト装置との後方互換性のために、フラッシュ装置10は、米国特許公報5,404,485号明細書および米国特許公報5,937,425号明細書においてバン(Ban)が教示する方法などのフラッシュ管理方法を実行する補助不揮発性メモリ18に格納されたファームウェアを用いて、ブロックメモリ装置をエミュレートする。またこれらの特許の両方とも、本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている。装置10の構成要素は、共通ハウジング15に共に収容される。
データを格納するためにNANDフラッシュ媒体を用いる他の装置が知られている。図1Bは、パーソナルコンピュータ10’を示すが、このコンピュータ10’では、長期的な不揮発性データ記憶のための磁気ハードディスクに加えてまたは代替品としてNANDフラッシュ媒体12が用いられる。ここで、コントローラ14は、パーソナルコンピュータ10’の中央処理装置を表わす。ここで、補助不揮発性メモリ18は、パーソナルコンピュータ10’の他の不揮発性メモリの全てを表わすが、これらのメモリには、ブートコードが格納されるBIOSと、フラッシュ管理システムを始めとする、パーソナルコンピュータ10’のオペレーティングシステムを格納するための磁気ハードディスク(NANDフラッシュ媒体12が磁気ハードディスクの代替品である場合を除く。なぜなら、その場合には、オペレーティングシステムはNANDフラッシュ媒体12に格納されるからである)とが含まれる。パーソナルコンピュータ10’のNANDフラッシュ媒体12、コントローラ14、RAM16、補助不揮発性メモリ18および他の構成要素(図示せず)は、バス19を介して互いに通信する。パーソナルコンピュータ10’のいくつかの構成において、NANDフラッシュ媒体12は、着脱自在なカード上にある。パーソナルコンピュータ10’の他の構成では、図示の構成要素は、単一の一体型物理装置に統合され、その結果、NANDフラッシュ媒体12は、物理的に別個のエンティティではなくなる。
コントローラ14がNANDフラッシュ媒体12に対して実行する動作には、読み出し動作、書き込み動作および消去動作が含まれる。NANDフラッシュ媒体12は、典型的には、「ページ」と呼ばれる単位で書き込まれ、ページのそれぞれは、典型的には512バイト〜2048バイトを含み、典型的には「ブロック」と呼ばれる単位で消去され、またブロックのそれぞれは、典型的には16〜64ページを含む。NANDフラッシュ媒体12の消去可能な単位を指す単語「ブロック」の使用を、用語「ブロックメモリ装置」における単語「ブロック」の使用と混同すべきでないことに留意されたい。ブロックメモリ装置の「ブロック」の本質は、次の事実を指す。すなわち、デバイスドライバが、典型的には「セクタ」と呼ばれる固定サイズ単位の整数倍の単位でのみデータを交換するインタフェースをエクスポートする、という事実である。
NANDフラッシュ媒体12の管理を容易にするために、コントローラ14は、「未書き込み」または「書き込み済み」のステータスを各ページに割り当てる。ステータスが「未書き込み」のページは、それが最後に消去されたとき以来書き込まれていないページであり、したがって、書き込みに利用可能である。ステータスが「書き込み済み」のページは、データが書き込まれて、まだ消去されていないページである。装置10のいくつかの実施形態において、コントローラ14はまた、いくつかのページに、「削除済み」のステータスを割り当てる。ステータスが「削除済み」のページは、無効(典型的には破棄されたか期限切れの)データを含むページである。「削除済み」ページをサポートする装置10の実施形態において、「書き込み済み」ステータスは、有効データを含むページのために取っておかれる。本明細書において、ステータスが「未書き込み」のページは、「未書き込みページ」と呼ばれ、ステータスが「書き込み済み」のページは、「書き込み済みページ」と呼ばれ、ステータスが「削除済み」ページは、「削除済みページ」と呼ばれる。
装置10は不揮発性データ記憶に用いられるので、装置10が、そこに書き込まれたデータを、全ての状況下で保持することが不可欠である。装置10に格納されたデータの完全性に対する主な危険は、装置10が動作している最中に、装置10への電源が事前通知なしに遮断される突然の電源異常である。かかる電源異常のために、中断された動作が、不安定なまたは予測できない結果をもたらすことが多い。
装置10が、NANDフラッシュ媒体12の内容を変更する動作の最中に、たとえばデータページの書き込みの最中かまたはブロックを消去している最中に、電源異常が発生した場合には、中断されたページまたはブロックの内容は、装置10が再び電源投入された後は予測不能であり、実際にはでたらめになる可能性がある。その理由として、影響を受けたビットのうちのいくつかは、電力が遮断された時間までの動作によって、それらに割り当てられた状態に到着したかもしれないが、一方で他のビットが遅れて、まだそれらの目標値に達しなかったからである。さらに、いくつかのビットが中間ステータスに捕捉され、したがって、これらのビットは、それらの読み出しが様々な読み出し動作において異なる結果を返す信頼できないモードに、入る可能性がある。
この問題は、多くの先行技術のフラッシュ管理ソフトウェアシステム、たとえば、イスラエルのクファル サバ(Kfar Saba)のエム−システムズ フラッシュ ディスク パイオニアーズ リミテッド(M−Systems Flash Disk Pioneers Ltd.)が用いるツルーFFS(TrueFFS)TMフラッシュ管理システムによってうまく処理される。これらの先行技術のシステムがこの問題を防ぐことができる理由は、データ破損が、電源異常が発生したときに変更されているページまたはブロックに局所化されるからである。NANDフラッシュ媒体12における他の全てのページは、それらの内容を維持し、破損されない。したがって、書き込み動作が中断された場合に、先行技術のフラッシュ管理システムは、他の全てのページの有効性を仮定し、最後に書き込まれたページに専念することができる。利用可能ないくつかのアプローチがある。
1つのアプローチは、書き込むべきページまたは消去すべきブロックへのポインタを、動作の前に所定の位置に格納することであり、その結果、装置10が再び電源投入されたときに、コントローラ14は、このポインタを調べて、直ちに、どのページまたはブロックが最後に目標とされたものだったかを知ることができる。この方法は、動作が成功裡に完了したかどうかをコントローラ14に知らせる1つまたは複数の有効性フラグを通常用いる。たとえば米国特許公報6,977,847号明細書を参照されたいが、この特許は、本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている。この特許出願は、消去中の電源喪失に対する保護のためのかかる方法の例を教示している。
別のアプローチは、所与の時間にデータを書き込み可能な位置を、ページのサブセットだけに制限することである。次に、コントローラ14は、全てのかかる位置を潜在的に破損しているものと見なすことができ、電源投入時にそこに格納されたデータの利用を避けることができる。代わりにコントローラ14は、それらのデータを破損していないとして信頼する前に、データを「有効性テスト」にかけることができる。このアプローチを適用できるフラッシュ管理方法の例が、米国特許公報6,678,785号明細書で教示されており、またこの特許は、本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている。米国特許公報6,678,785号明細書によれば、書き込みアルゴリズムは、各ブロック内で順次的に新しいページを書き込むことに制限されている。したがって、電源投入時に、所与のブロックにおいて最後に書き込まれたページが、そのブロックにおいて最も高い番号を付けられた書き込み済みページであることが分かる。
他のシステムは、かかる近道に適してなく、疑わしいページを識別する総当り方法を用いてもよい。しかしながら、電源喪失データ破損問題の処理は、最後に書き込まれたページのデータだけが破損したかもしれず、他の全てのページに格納されたデータは信頼できるということを知ることによって比較的簡単になる。
上記の解説が、スタンドアロンエンティティとしてのページの有効性に当てはまることを指摘すべきである。たとえページの書き込みが中断されなかった場合でも、システム全体が有効かどうかは、全く別の問題である。かかる問題は、たとえば、ユーザレベル動作がいくつかのページレベル動作からなるファイルシステムにおいて発生する場合がある。たとえば、新しいファイルの作成には、ディレクトリエントリを書き込むこと、1つまたは複数のセクタ割り当てテーブルを書き込むこと、およびそのときになってようやく実際のファイルデータを書き込むことが含まれる。電源が故障したときまでにこれらの書き込み動作のうちのいくつかだけが完了し、一方で残りの書き込み動作がまだ始まっていない場合には、ページは破損しないが、しかしファイルシステム全体は破損している。かかる問題に対して保護する方法が知られている(たとえば、同時係属中の米国特許出願第10/397,398号明細書を参照されたい)が、それらは、本発明の範囲外である。
最近、電源喪失時におけるデータ破損の局所性に関する上記の仮定が有効でないNANDフラッシュ媒体12が、使用されるようになった。かかるNANDフラッシュ媒体12の例には、トーシバ(Toshiba)のマルチレベルセル(MLC)NANDフラッシュ素子(たとえばTC58DVG04B1FT00)が含まれる。かかる素子では、各セルは、1ビットではなく2ビットを格納する。その素子の内部配置は、物理ページが528×8=4224セルのグループ内に存在するようになる。しかし他の素子において、かかるセルグループが528バイトの1ページを格納するのに対して、トーシバ(Toshiba)MLC NANDフラッシュ素子では、かかるセルグループは、かかる2データページを格納する。2以上のデータページを格納するかかるセルグループは、本明細書において「スーパーページ」と呼ばれる。
図2は、1つのかかるMLC NANDフラッシュ素子のブロック30の概略図である。ブロック30には、32のスーパーページ34において、論理アドレスがそれぞれ0〜63である64のページ32が含まれる。ページ32の論理アドレスは、図2においてブロック30の左側の列に示す。
ここで、次のイベントシーケンスを考える。
1.2ページのスーパーページ34のうちのページ32の1つが、成功裡に書き込まれ、もう一方のページが、書き込まれていない。
2.2ページのスーパーページ34のうちのもう一方のページ32への書き込みが、電源喪失によって中断される。
このスーパーページ34の2つのページ32が同じ物理セルを共有するので、電源喪失は、両方のページ32を破損する可能性がある。両方のページ32がどのように破損される可能性があるかを理解するために、MLCフラッシュセル内でビットがどのように符号化されるかを考えることが必要である。MLCフラッシュセルでビットを符号化する一方法が、米国特許公報5,095,344号明細書および米国特許公報5,043,940号明細書においてハラーリ(Harari)によって教示されている。この方法によれば、ビットは、異なる電荷量をフラッシュセルのフローティングゲートに注入し、それによりセルの異なるレベルの閾値電圧VT1を生成することによって、MLCフラッシュセルにおいて符号化される。次のテーブルは、セルに格納された2つのビットの値を閾値電圧に応じて示す。
(表1)
T1 ビット1の値 ビット2の値
−3.0V 1 1
−0.5V 1 0
+2.0V 0 1
+4.5V 0 0
実際には、2ビットフラッシュセルの4つの可能なビット組み合わせが、4つの異なる閾値電圧範囲として格納される。上記の例において、閾値電圧範囲は、(0、0)のための+3.25V〜+5.75V、(0、1)のための+0.75V〜+3.25V、(1、0)のための−1.75V〜+0.75V、および(1、1)のための−4.25V〜−1.75Vである。2つのビットのいずれか1つを変更することには、セルの同じ物理属性(すなわち閾値電圧)を変更することが含まれるので、1ビットを変更するプロセスが、もう一方のビットを、その以前の安定状態からシフトさせることは明らかである。変更が正確に完了しない場合には、それは、どちらかまたは両方のビットの値に対する間違った解釈に帰着する可能性がある。
この問題に対して防御する際の真の困難は、スーパーページ34の2つのページ32が、2つの異なった、広く離れた時間に書き込まれる可能性があるために生じる。考えられるところでは、あるときに書き込まれたスーパーページ34の第1のページ32は、そのスーパーページ34の第2のページ32への不完全な書き込みによって、何年も後に破損される可能性がある。さらに、フラッシュ管理システムの上位に位置するほとんどのファイルシステムは、連続的または非連続的にページ32をファイルに割り当てるので、結果として、同じスーパーページ34のページ32が全く無関係なファイルに属する場合がある。一ファイルの更新中における電源喪失は、危険にさらされているとは思えないような全く無関係なファイルを破損する可能性がある。明らかに、これらの状態は、先行技術のフラッシュ管理システムの対処能力を超えている。
米国特許公報6,988,175号明細書(本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている)は、ページの書き込みが、他のページにおける他の無関係な以前に書き込まれたデータを、危険にさらすことのないページにのみ着信データを格納する方針を採用することによって、電力遮断のこの問題を解決する。米国特許公報6,988,175号明細書の方法は、書き込みの中断よってデータが破損される可能性があるページの「危険ゾーン」を定義することに基づいている。新しいデータを書き込むために1つまたは複数のページが選択された場合に、その書き込み動作のために選択されたページの危険ゾーンは、その/それらの危険ゾーンにおける他のページのいずれかが有効データを格納している可能性があるかどうか、すなわち、その/それらの危険ゾーンにおける他のページのいずれかのステータスが「書き込み済み」かどうかを確認するためにチェックされる。その/それらの危険ゾーンにおける他のページのいずれかが、実際に有効データ格納している可能性がある場合には、選択されたページは書き込まれない。代わりに、フラッシュ管理システムは、書き込み動作のために異なるページ(単数または複数)を捜す。
ページの危険ゾーンは、ページが書き込まれた場合に、データが破損の危険にさらされる他のページのセットとして、米国特許公報6,988,175号明細書で定義されている。たとえば、図2では、各ページ32の危険ゾーンは、そのページ32のスーパーページ34のもう一方のページ32である。1つまたは複数の未書き込みページが書き込みのために選択される場合には、選択されたページ(単数または複数)は、それらの危険ゾーンのいずれにも書き込み済みページがない場合にのみ書き込まれる。
書き込まれるデータが2ページ以上にわたる場合には、目標ページは、順次的にかまたはランダムな順序で書き込んでもよい。「順次」書き込みは、米国特許公報6,678,785号明細書におけるように、ブロックのページが、論理アドレスの増加順でのみ書き込まれることを意味する。「ランダム」書き込みは、任意の論理アドレス順でブロックのページを書き込んでもよいことを意味する。米国特許公報6,988,175号明細書および本発明双方の方法は、両方のケースに等しく適用可能である。
米国公報特許第6,988,175号明細書の方法は、電力遮断の結果としてのデータ破損問題への解決策を提供するが、これらの方法には、2つの主な欠点がある。第1の欠点は、以前に書き込まれたページの危険ゾーン内にあるページへの書き込みを避けることによって、それらのページを抜かして未使用にしておかなければならないということである。これによって、フラッシュメモリの物理アドレス空間内に「穴」が生成され、書き込み済みページに囲まれた未使用ページができる。たとえば、図2の(および順次書き込みを仮定する)場合に、ユーザが最初にページ0を書き込んだ後、そのブロックに書き込まれる次のデータはページ2へ向けられ、ページ1を未使用にしておく。したがって、ページ1は、ページ0とページ2と間の「穴」になる。フラッシュメモリへのデータの書き込み中における穴の生成は、貴重な空間を無駄にし、また読み出し時にこれらの穴に遭遇する準備をし、かつ有効データを含むものとしてこれらの穴を解釈することを避けなければならないフラッシュ管理ソフトウェアを複雑にする。
米国特許公報6,988,175号明細書の方法における第2の欠点は、危険ゾーンの配置が図2におけるほど対称的でないフラッシュ素子を取り扱う際に比較的非効率なことである。図2において、ページ番号20の危険ゾーンはページ番号21であり、ページ番号21の危険ゾーンはページ番号20である。したがって、我々は、これらのページを、互いに素なグループに分割されているかのように見ることができる。この場合に、グループのメンバーは、互いを危険にさらす可能性があるが、それらのグループ外のページは決して危険にさらさない。ページ20およびページ21は1つのかかるグループを構成するが、実際には、それらのどちらも、それらのグループ外の他のどんなページも危険にさらさない。しかしながら、これが事実でない、すなわち、図2においてページ21とページ22との間にある境界のように「危険の伝播」を止める「境界」がないフラッシュメモリ素子がある。これらの素子では、全てのページは、少なくともそれに続くページを危険にさらし、いくつかのページは、より高いアドレスを有するさらなるページを危険にさらす。かかる複雑な危険ゾーン構造は、マルチレベルセルフラッシュ素子が、そのフラッシュセル配列の隣接するワード線間の干渉を低減または除去するための技術を実行する場合に生成されることがあるが、それは、かかる技術が、ページの書き込み順序に影響するからである。かかる技術の例が、「複数のデータ状態で動作する不揮発性メモリのストレージエレメント間の結合による影響を低減させるための動作技術(Operating Techniques For Reducing Effects Of Coupling Between Storage Elements Of a Non−Volatile Memory Operated in Multiple Data States)」なる名称の米国特許公報6,522,580号明細書においてチェン(Chen)らによって開示されており、またこの特許は、本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている。かかる素子に米国特許公報6,988,175号明細書の方法を適用すると、記憶空間の非常に非効率的な利用に帰着する。すなわち、ブロック内のどのページが書き込み動作の目標かにかかわらず、(ブロックのまさに最初のページに書き始めるときを除いて)我々は、常に少なくとも1ページを抜かし、穴を生成しなければならない。
かくして、マルチレベルセルに基づくNANDフラッシュ媒体12に対する電力遮断に対処でき、かつフラッシュ素子の広範な種類に対する効率的で改善されたフラッシュ管理システムの必要性があり、それを有することは非常に有利であろう。
本発明によれば、以前に書き込まれたページの危険ゾーンの使用を避けるのではなく、我々は、危険ゾーン内のページを用いるが、危険性のあるページを危険にさらす前に、それらをバックアップする。
したがって、本発明に従い、複数のページを含むメモリの管理方法が提供されるが、この方法には、(a)各ページのそれぞれの危険ゾーンを識別するステップと、(b)新しいデータを書き込むための少なくとも1つの未書き込みページを選択するステップと、(c)危険ゾーンが少なくとも1つの書き込み済みページを含む各未書き込みページのために、各書き込み済みページをログにコピーするステップと、が含まれる。
さらに、本発明に従って、データ記憶システムが提供されるが、このシステムには、(a)複数のページを含むデータ記憶媒体と、(b)ログと、(c)(i)複数のページにおける各ページのそれぞれの危険ゾーンを識別するステップと、(ii)新しいデータを書き込むために複数のページのうちの少なくとも1つの未書き込みページを選択するステップと、(iii)複数のページのうちの少なくとも1つの書き込み済みページを自身の危険ゾーンが含む各未書き込みページのために、各書き込み済みページをログにコピーするステップと、を含むステップによって、新しいデータを複数のページに書き込むためのコントローラと、が含まれる。
さらに、本発明に従って、コンピュータ可読コードを自身に埋め込んだコンピュータ可読記憶媒体が提供されるが、このコンピュータ可読コードは、データ記憶媒体の複数のページの少なくとも1つに新しいデータを書き込むためにあり、またこのコンピュータ可読コードには、(a)各ページのそれぞれの危険ゾーンを識別するためのプログラムコードと、(b)新しいデータを書き込むための少なくとも1つの未書き込みページを選択するためのプログラムコードと、(c)少なくとも1つの書き込み済みページを自身の危険ゾーンが含む各未書き込みページのために、各書き込み済みページをログにコピーするためのプログラムコードと、が含まれる。
メモリを管理するための本発明の基本的方法に従って、メモリの各ページのそれぞれの危険ゾーンが識別される。新しいデータがメモリに書き込まれる場合に、1つまたは複数の未書き込みページが、新しいデータを書き込むために選択される。選択されたページの危険ゾーンにおける書き込み済みページがもしあれば、ログにコピーされる。次に、新しいデータが、選択されたページに書き込まれる。
新しいデータが2ページ以上にわたる場合には、選択されたページへの新しいデータの書き込みは、ほぼ同時に行われるのが好ましい。
危険ゾーンにおける書き込み済みページのコピーイングおよび選択されたページへの新しいデータの書き込みは、ほぼ同時に行われるのが好ましい。
たとえば、メモリを含むシステムが電源投入された場合に、メモリの書き込み済みページに格納されたデータは、それらのデータが破損しているかどうかを判定するためにチェックされるのが好ましい。破損していると判定されたデータは、ログからの対応するデータと取り替えられる。チェックは、誤り検出符号を用いて行われるのが最も好ましい。
代替として、選択されたページに書き込まれる新しいデータは、危険ゾーンにおける全ての書き込み済みページがログにコピーされた後でのみ、そのように書き込まれる。書き込み済みページがログにコピーされると、対応するフラグが設定される。その書き込み済みページを自身の危険ゾーンが含む選択されたページに書き込まれることになる新しいデータがそのように書き込まれた後で、フラグがクリアされる。後で、たとえば、メモリを含むシステムが電源投入されたときに、設定されたフラグに対応する書き込み済みページに格納されたデータは、ログからの対応するデータと取り替えられる。
新しいデータが2ページ以上にわたる場合には、選択された未書き込みページは、順次的にかまたはランダムな順序で書き込まれる。
選択されたページへの新しいデータの書き込みおよびログへの書き込み済みページのコピーイングは、それぞれ異なるモードを用いて行われるのが好ましい。コピーイングのために用いられるモードは、書き込みのために用いられるモードより、メモリのセル当たり少数のビットを書き込むのが最も好ましい。たとえば、以下で解説する本発明の一実施形態において、コピーイングは、シングルレベルセルモードで行われ、書き込みは、マルチレベルセルモードで行われる。
全ての危険ゾーンには、等しいページ数、たとえば危険ゾーン当たり1ページが含まれるのが好ましい。代替として、少なくとも2つの危険ゾーンには、異なるページ数が含まれる。
本発明の基本データ記憶システムには、複数のページを備えたデータ記憶媒体、ログ、およびコントローラが含まれる。複数のページに新しいデータを書き込むために、コントローラは、ページのそれぞれの危険ゾーンを識別し、ページの中から少なくとも1つの未書き込みページを選択する。コントローラは、選択されたページの危険ゾーンにおける書き込み済みページ(もしあれば)をログへコピーする。
データ記憶媒体は、フラッシュメモリなどの不揮発性メモリであるのが好ましい。かかるフラッシュメモリには、複数のマルチレベルセルが含まれるのが好ましい。また、かかるフラッシュメモリには、複数のブロックが含まれ、各ブロックには、複数のページのそれぞれのサブ複数が含まれるのが好ましい。本発明の好ましい代替実施形態において、コントローラは、新しいデータを各ブロックのページに、順次的にだけかまたはランダムな順序で書き込む。
ログは、データ記憶媒体の一部であるのが好ましい。
コントローラは、選択された未書き込みページに新しいデータを書き込むのが好ましい。コピーイングおよび書き込みは、それぞれ異なる書き込みモードを用いて行われるのがより好ましい。書き込み済みページをコピーするために用いられる書き込みモードは、新しいデータを書き込むために用いられる書き込みモードより、データ記憶媒体のセル当たり少数のビットを書き込むのが最も好ましい。
本発明の範囲にはまた、コンピュータ可読記憶媒体が含まれるが、この記憶媒体において、本発明の基本方法に従って新しいデータをデータ記憶媒体のページに書き込むためのコンピュータ可読コードが具現される。
本発明は、本明細書では添付の図面に関連してあくまでも例として説明される。
本発明は、書き込み動作の中断による、以前に書き込まれたページのデータ破損を防ぐように、ページベースのメモリの管理方法である。具体的には、本発明を用いて、マルチレベルセルを備えたフラッシュメモリを管理することができる。
本発明によるメモリ管理の原理および動作は、図面および付随する説明に関連して、よりよく理解されるであろう。
再び図2を参照するが、しかし今は、危険ゾーンを定義する規則が以前とは異なる例を挙げる。すなわち、ブロックのページ番号Nの危険ゾーンは、ページN−1およびページN−2から構成される(ブロックの最初の2ページを除いて。すなわち、ページ1の危険ゾーンはページ0であり、ページ0の危険ゾーンはない)。異なるページの危険ゾーンが、上記の例においてページ1を過ぎたページの場合のように全て同じサイズである必要が必ずしもないことを強調すべきである。2ページの危険ゾーンを有するページがある一方で、3ページの危険ゾーンを有する他のページがあってもよい。いくつかのページにはまた、両方向に向かう危険ゾーン、すなわち、上記の例におけるように後ろだけでなく前後に向かう危険ゾーンがあってもよい。本発明の方法は、上記の例に限定されないが、しかし簡単にするために、以下の説明は、この単一の例の文脈で提供される。
図3は、書き込みコマンドが、本発明の方法に従ってどのように処理されるかを示す。ステップ100において、記憶システムにデータを書き込むための書き込みコマンドが受信されるが、データは、単一のページまたは多数のページ用である。ステップ110において、データが書き込まれることになる物理位置を発見する。書き込むべき物理ページの発見は、そのシステムの特定のアルゴリズムに従ってフラッシュ管理システムによって行われる。米国特許公報6,678,785号明細書または米国特許公報5,937,425号明細書に開示されたものなどの異なるフラッシュ管理システムは、ホストコンピュータの目標論理アドレスを物理アドレスへマッピングするために異なる方法を用いるが、しかし本発明の方法は、かかる全てのマッピング方法に等しく適用可能である。
簡単にするために、本明細書では、目標物理アドレスとしてステップ110で発見された物理ページは全て、1つのブロック内に存在すると仮定する。これが事実でない場合には、同じ論理が、同じブロック内に含まれる、これらの物理ページの各サブグループに別々に適用される。
ステップ120において、目標物理ページへの書き込みが、いくつかの以前に書き込まれたページを危険にさらすかどうかがチェックされる。これは、以前に書き込まれたどのページが、目標ページの少なくとも1つの危険ゾーン内に含まれるかどうかを発見することによって行われる。たとえば、図2のページ0〜20が既に書き込まれ、ページ21〜63が自由に利用できると仮定する。5ページを書き込むためのコマンドが受信され、ページ21〜25が、書き込むべき目標物理ページとして発見される。危険にさらされる、以前に書き込まれたページを探すと、
a.ページ19およびページ20が、ページ21の危険ゾーン内にあること、
b.ページ20が、ページ22の危険ゾーン内にあること、
c.ページ23が、その危険ゾーン内に書き込み済みページを含まないこと、
d.ページ24が、その危険ゾーン内に書き込み済みページを含まないこと、
e.ページ25が、その危険ゾーン内に書き込み済みページを含まないこと、
が分かる。
結論として、書き込み済みページ19および20は、書き込み動作によって危険にさらされるが、しかしページ0〜18のどれも危険にさらされない。本発明の方法は、米国特許公報6,988,175号明細書の方法とは、たとえ両方が危険ゾーンの同じ概念に依存していても、同じではないことに留意されたい。両方の方法において、「この目標ページは、以前に書き込まれたページをその危険ゾーン内に含むか?」と尋ねられる。しかし米国特許公報6,988,175号明細書では、意図は、「目標ページの危険ゾーン内に書き込み済みページがある場合には、我々はその目標ページを抜かす」であるのに対し、本発明では、意図は、「目標ページの危険ゾーン内に書き込み済みページがある場合には、我々は書き込み済みページのバックアップを取る」である。
ステップ120の質問に対する答えが、危険にさらされる、以前に書き込まれたページがないということである場合には(たとえば、ブロックがまだ完全に未使用の場合には)、新しいデータが目標物理ページに書き込まれるステップ140に直接移る。しかしながら、質問に対する答えが、危険にさらされるページがあるということである場合には、ステップ130を介して進む。ステップ130において、危険にさらされるページ(上記の例ではページ19およびページ20)は、バックアップログにコピーされる。我々は、そのときになってようやくステップ140に到達し、新しいデータを目標物理ページに書き込む。
図4は、バックアップログが、電源喪失によって引き起こされたデータ破損から回復するために、どのように用いられるかを示す。ステップ200において、記憶システムが電源投入される。ステップ210において、いずれかのページが電源喪失の結果として破損しているかどうかが、チェックされる。これは、典型的には各データページに関連する誤り検出符号(EDC)を作動させることによって行ってもよい。ページ内容を読み出し、かつ結果としてのシンドロームを計算することによって、格納データが有効かどうかを見出す。破損したページが見つからない場合には、システムは、ステップ230において通常動作を継続する。しかしながら、少なくとも1ページが破損していると分かった場合に、ステップ220は、書き込み動作に先立ってそのデータが格納されたバックアップログから破損したデータを回復し、図3に示すように、それらのデータを1つまたは複数の未書き込みページに書き込む。
これらの方法は、以前に書き込まれたページの回復を保証するが、最後の書き込みコマンドによって書き込まれたページの回復は保証しないことに留意されたい。上記の例において、ページ21の書き込み最中に電源が故障した場合に、ページ19およびページ20は、ひとたび図4の回復手順が完了すれば、有効で破損していないことが保証される。しかし、ページ21は、バックアップされず、たとえ破損していることが分かった場合でも回復できない。しかしながら、これは、我々が達成したかったこと、すなわち、書き込みが不意に中断された現在の新しいデータの保護ではなく、システムに以前に格納されたデータの保護である。
上記の方法の変形は、バックアップログにおける各ページを、そのページがバックアップのためにまだ必要かどうかを示すフラグと関連付けることである。図3においてバックアップログにページを書き込む場合には、最初に、フラグを「必要」に設定する。書き込み動作を完了した後で、現在の動作によってバックアップログにコピーされた全てのページは、「不必要」に設定される。書き込み動作の最中に電源異常が発生した場合には、バックアップログにおけるページは、「必要」フラグを残され、一方で動作が成功裡に完了した場合には、ページは「不必要」フラグを残される。電源投入時に、バックアップログにおける最後のページのフラグが、チェックされる。すなわち、少なくとも1ページが「必要」であると分かった場合には、我々は、電源異常が発生したことを知り、「フラグを立てられた」ページを含むブロックのために回復を実行する。方法におけるこの変形は、ランダムな破損データが、そのようなものとしてEDCによって識別されないことが理論的にあり得るEDC技術に依存するよりも信頼できるデータ破損検出を提供する。
バックアップログは、ログを実現するための、先行技術において周知の任意の方法で実現してもよい。一インプリメンテーションは、ログに割り当てられたフラッシュエリアに、バックアップされたページを順次的に書き込み、ひとたびそのエリアの端部に達したならば、エリアの始めに戻ることである。もはや必要でないブロックのガーベジコレクションのためのハウスキーピング動作もまた管理しなければならない。しかしながら、電力遮断がバックアップログを破損しないように注意しなければならない。これは、米国特許公報6,988,175号明細書の方法で達成され、その結果、ログにおけるいくつかの物理ページが抜かされて、バックアップされたページが決して危険にさらされないように保証する。代替として、ログは、フラッシュ媒体の異なる書き込みモード、すなわち、危険ゾーンを有しないことによって電源異常のデータ破損を免れたモードを用いて書き込まれる。例として、マルチレベルセル(MLC)およびシングルレベルセル(SLC)モードの両方を提供するフラッシュメモリ素子を用いるフラッシュシステムがある。かかる素子が、米国特許公報6,456,528号明細書においてチェン(Chen)によって開示され、またこの特許は、本明細書に完全に述べられているかのように、参照により全ての目的のために組み込まれている。システムに格納される通常のデータが、高記憶密度を達成するために「危険な」MLCモードを用いて書き込まれるのに対して、バックアップログは、危険ゾーンを生成しない安全なSLCモードを用いて書き込まれる。これにはまた、バックアップログを書き込む際に費やされるオーバーヘッドタイムを低減するという追加的な利点がある。なぜなら、SLC書き込みは、MLC書き込みよりはるかに迅速だからである。
書き込みコマンドが、多数のページの書き込み用である場合には、上記の方法が非常に効率的であることに注目されたい。かかる場合に、典型的には、以前に書き込まれたバックアップすべきページ数は、書き込み済みページの数よりはるかに少なく、したがって、書き込み済みページごとの相対的オーバヘッドは、コマンドにおけるページ数が大きければ大きいほど小さい。単一コマンドの結果としての多数ページの書き込みは、本明細書において、これらのページの「同時」書き込みと見なされる。
本発明の方法を米国特許公報6,988,175号明細書と比較すると、本発明が使用ブロック内に未使用ギャップを残さず、決してページを抜かさない限り、本発明が米国特許公報6,988,175号明細書より優れていることが分かる。したがって、本発明は、フラッシュメモリのスペース利用の効率において、米国特許公報6,988,175号明細書よりはるかによく、また、システムの論理を複雑にするギャップに対処する必要のないフラッシュ管理システムによって取り扱うのがより簡単である。さらに、本発明は、上記で提示した例を始めとする多くのケースにおいてかなり非効率的な米国特許公報6,988,175号明細書と異なり、任意の種類の危険ゾーンパターンに効率的に適用可能である。
図5Aは、本発明のフラッシュベース記憶装置110の高レベル概略ブロック図であるが、この記憶装置110は、図1Aにおける先行技術の装置10のように、1つまたは複数のNANDフラッシュ媒体112にデータを格納するためにホスト装置によって用いられる。装置110の動作は、RAM116および補助不揮発性メモリ118の助けを借りてマイクロプロセッサベースコントローラ114によって制御される。このため、フラッシュ装置110およびホストシステムは、フラッシュ装置110における共通のポート120を介して通信する。装置110の構成要素は、共通ハウジング115に共に収容される。
先行技術の装置10のように、フラッシュ装置110は、補助不揮発性メモリ118に格納されたファームウェアを用いて、ブロックメモリ素子をエミュレートする。電源異常の場合にこれらのデータを破損から保護するために、補助不揮発性メモリ118に格納されたファームウェアにはまた、本発明の方法に従って、破損の危険にさらされるデータをバックアップログへおよびそこからコピーするためのコードが含まれる。NANDフラッシュ媒体112は、通常のデータ記憶に用いられるMLC部分106およびバックアップログに用いられるSLC部分108に分割される。本発明によって、ホスト装置のソフトウェアアプリケーションは、それがファイル管理アプリケーションであれ任意の他のソフトウェアアプリケーションであれ、任意のランダムな順序で、本発明のかかる装置110へ書き込みコマンドを自由に送信することが可能になり、またソフトウェアアプリケーションは、NANDフラッシュ媒体112のページ間の危険関係を無視することが可能になる。本発明の方法は、電源喪失が書き込みコマンドを中断する場合に破損される可能性がある唯一のページが、中断された書き込みコマンドによって書き込まれているページであるという意味で、電源喪失に対する完全な保護を提供する。他の全てのページは、有効なままであることが保証される。
図5Bは、図1Bにおける先行技術のパーソナルコンピュータ10’に似たパーソナルコンピュータ110’の高レベル部分概略ブロック図であり、NANDフラッシュ媒体112が、長期的な不揮発性データ記憶のために、磁気ハードディスクに加えてかまたはその代替品として用いられる。ここで、コントローラ114は、パーソナルコンピュータ110’の中央処理装置を表わす。ここで、補助メモリ118は、パーソナルコンピュータ110’の他の不揮発性メモリの全てを表わすが、これらのメモリには、ブートコードが格納されるBIOSと、パーソナルコンピュータ110’の、フラッシュ管理システムを始めとするオペレーティングシステムを格納するための磁気ハードディスク(NANDフラッシュ媒体112が磁気ハードディスクの代替品である場合を除く。なぜなら、その場合には、オペレーティングシステムはNANDフラッシュ媒体112に格納されるからである)とが含まれる。パーソナルコンピュータ110’のNANDフラッシュ媒体112、コントローラ114、RAM116、補助不揮発性メモリ118および他の構成要素(図示せず)は、バス119を介して互いに通信する。
パーソナルコンピュータ110’のオペレーティングシステムコードの一部として補助不揮発性メモリ118またはNANDフラッシュ媒体112に格納され、かつコントローラ114によって実行されるフラッシュ管理ソフトウェアには、NANDフラッシュ媒体112への書き込み動作が電源異常によって中断された場合に、NANDフラッシュ媒体112のMLC部分106に以前に格納されたデータの破損を防ぐために、本発明のフラッシュ管理方法を実行するためのコードが含まれる。具体的には、破損の危険にさらされるデータは、上記のように、NANDフラッシュ媒体112のSLC部分108におけるバックアップログへおよびそこからコピーされる。
装置110および110’の補助不揮発性メモリ118(およびオペレーティングシステムがNANDフラッシュ媒体112に格納された装置110’の実施形態における装置110’のNAND媒体フラッシュ112)は、本発明の方法を実行するためのコンピュータ可読コードが具現されるコンピュータ可読記憶媒体の例である。
限られた数の実施形態に関連して本発明を説明したが、本発明の多くの変形、修正および他の適用例が達成可能であることが認識されよう。
不揮発性データ記憶のためにNANDフラッシュ媒体を用いる先行技術の装置の高レベル概略ブロック図である。 不揮発性データ記憶のためにNANDフラッシュ媒体を用いる先行技術の装置の高レベル概略ブロック図である。 マルチレベルセルフラッシュメモリのブロックの例示的な実施形態の概略図である。 本発明に従って、新しいデータをメモリに書き込むフローチャートである。 本発明に従って、電源投入時に破損データを復元するフローチャートである。 本発明に従って修正された図1Aおよび1Bの装置の高レベル概略ブロック図である。 本発明に従って修正された図1Aおよび1Bの装置の高レベル概略ブロック図である。

Claims (29)

  1. マルチレベルセルに複数のページを格納し、シングルレベルセルにログを格納するメモリの管理方法であって、
    (a)各ページのそれぞれの危険ゾーンを識別するステップと、
    (b)新しいデータを書き込むために少なくとも1つの未書き込みページを選択するステップと、
    (c)少なくとも1つの書き込み済みページを自身の危険ゾーンが含む各前記未書き込みページのために、各前記書き込み済みページを、シングルレベルセルの前記ログにコピーするステップと、
    を含む方法。
  2. (d)前記新しいデータを前記少なくとも1つの未書き込みページに書き込むステップを含む、請求項1に記載の方法。
  3. 前記新しいデータが2ページ以上にわたる場合に、前記書き込むステップが同時に行われる、請求項2に記載の方法。
  4. 前記コピーするステップおよび前記書き込むステップが、同時に行われる、請求項2または3に記載の方法。
  5. (e)少なくとも1つの書き込み済みページに格納されたデータが破損しているかどうかをチェックするステップと、
    (f)前記データが破損している場合には、前記データを前記ログからの対応するデータと取り替えるステップと、
    をさらに含む、請求項2から4のいずれかに記載の方法。
  6. 前記チェックするステップが誤り検出符号を用いて行われる、請求項5に記載の方法。
  7. 前記チェックするステップおよび前記取り替えるステップが、メモリを含むシステムが電源投入されるときに行われる、請求項5に記載の方法。
  8. 未書き込みページに書き込まれる前記新しいデータが、前記未書き込みページの前記危険ゾーンにおける全ての書き込み済みページが前記ログとしてコピーされて初めて、前記未書き込みページに書き込まれる請求項2に記載の方法であって、前記方法が、前記ログとしてコピーされる各書き込み済みページのために、
    (e)対応するフラグを設定するステップと、
    (f)前記各書き込み済みページを自身の危険ゾーンが含む前記少なくとも1つの未書き込みページに書き込まれることになる前記新しいデータが、前記各書き込み済みページを自身の危険ゾーンが含む全ての前記少なくとも1つの未書き込みページに書き込まれた後で、前記対応するフラグをクリアするステップと、
    をさらに含む、請求項2に記載の方法。
  9. (g)設定される各前記フラグについて、前記各フラグに対応する前記書き込み済みページに格納されたデータを、前記ログからの対応するデータと取り替えるステップをさらに含む、請求項8に記載の方法。
  10. 前記取り替えるステップが、前記メモリを含むシステムが電源投入されるときに行われる、請求項9に記載の方法。
  11. 前記新しいデータが2ページ以上にわたる場合には、前記選択された未書き込みページが順次的に書き込まれる、請求項2に記載の方法。
  12. 前記新しいデータが2ページ以上にわたる場合には、前記選択された未書き込みページがランダムな順序で書き込まれる、請求項2に記載の方法。
  13. 前記コピーするステップおよび前記書き込むステップが、それぞれ異なる書き込みモードを用いて行われる、請求項2に記載の方法。
  14. 前記コピーするステップの前記書き込みモードが、前記書き込むステップの前記書き込みモードより、メモリのセルに少数のビットを書き込む、請求項13に記載の方法。
  15. 全ての前記危険ゾーンが等しいページ数を含む、請求項1に記載の方法。
  16. 各前記危険ゾーンが1ページを含む、請求項15に記載の方法。
  17. 少なくとも2つの前記危険ゾーンが、異なるページ数を含む、請求項1に記載の方法。
  18. (a)複数のページを格納するマルチレベルセルと、ログを格納するシングルレベルセルと、を含むデータ記憶媒体と、
    (b)(i)前記複数のページにおける各ページのそれぞれの危険ゾーンを識別するステップと、
    (ii)前記新しいデータを書き込むために、前記複数のページの少なくとも1つの未書き込みページを選択するステップと、
    (iii)前記複数のページの少なくとも1つの書き込みページを自身の危険ゾーンが含む各前記未書き込み済みページのために、各前記書き込み済みページを、前記シングルレベルセルにログとしてコピーするステップと、を含むステップによって、前記複数のページに新しいデータを書き込むためのコントローラと、
    を含むデータ記憶システム。
  19. 前記データ記憶媒体が不揮発性である、請求項18に記載のデータ記憶システム。
  20. 前記データ記憶媒体がフラッシュメモリである、請求項19に記載のデータ記憶システム。
  21. 前記フラッシュメモリが複数のマルチレベルセルを含む、請求項20に記載のデータ記憶システム。
  22. 前記フラッシュメモリが、複数のブロックの各ブロックのそれぞれが前記複数のページの一部の複数ページを含むように、前記複数のブロックを含み、前記コントローラが、前記新しいデータを、各前記ブロックの前記ページに順次的にのみ書き込む、請求項20に記載のデータ記憶システム。
  23. 前記フラッシュメモリが、複数のブロックの各ブロックのそれぞれが前記複数のページの一部の複数ページを含むように、前記複数のブロックを含み、前記コントローラが、前記新しいデータを、各前記ブロックの前記ページにランダムな順序で書き込む、請求項20に記載のデータ記憶システム。
  24. 前記ログが、前記データ記憶媒体の一部に格納される、請求項18に記載のデータ記憶システム。
  25. 前記コントローラが、
    (iv)前記複数のページの前記少なくとも1つの未書き込みページに前記新しいデータを書き込むステップ、
    をさらに含むステップによって、前記複数のページに前記新しいデータを書き込む、請求項18に記載のデータ記憶システム。
  26. 前記ログとして前記コピーするステップおよび前記少なくとも1つの未書き込みページへの前記書き込むステップが、それぞれ異なる書き込みモードを用いて行われる、請求項25に記載のデータ記憶システム。
  27. 前記ログとして前記コピーするステップの前記書き込みモードが、前記少なくとも1つの未書き込みページへの前記書き込むステップの前記書き込みモードより、前記データ記憶媒体のセルに少数のビットを書き込む、請求項26に記載のデータ記憶システム。
  28. コンピュータ可読コードを自身に埋め込んだコンピュータ可読記憶媒体であって、前記コンピュータ可読コードが、データ記憶媒体の複数のページの少なくとも1つに新しいデータを書き込むためのものであり、
    前記データ記憶媒体が、複数のページを格納するマルチレベルセルと、ログを格納するシングルレベルセルと、を含み
    前記コンピュータ可読コードが、
    (a)各ページのそれぞれの危険ゾーンを識別するためのプログラムコードと、
    (b)新しいデータを書き込むために少なくとも1つの未書き込みページを選択するためのプログラムコードと、
    (c)少なくとも1つの書き込み済みページを自身の危険ゾーンが含む各前記未書き込みページのために、各前記書き込み済みページを、前記シングルレベルセルにログとしてコピーするためのプログラムコードと、を含むコンピュータ可読記憶媒体。
  29. 複数のページを含むメモリの管理方法であって、
    (a)各ページのそれぞれの危険ゾーンを識別するステップと、
    (b)新しいデータを書き込むために少なくとも1つの未書き込みページを選択するステップと、
    (c)少なくとも1つの書き込み済みページを自身の危険ゾーンが含む各前記未書き込みページのために、各前記書き込み済みページをログとしてコピーするステップと、
    (d)前記新しいデータを前記少なくとも1つの未書き込みページに書き込むステップと、
    (e)少なくとも1つの書き込み済みページに格納されたデータが破損しているかどうかをチェックするステップと、
    (f)前記データが破損している場合には、前記データを前記ログからの対応するデータと取り替えるステップと、を含み、
    前記チェックステップが誤り検出符号を用いて行われる、方法。
JP2008510725A 2005-05-12 2006-05-11 電源喪失によるデータ破損に強いフラッシュメモリ管理方法 Expired - Fee Related JP4966965B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67982505P 2005-05-12 2005-05-12
US11/370,942 US7275140B2 (en) 2005-05-12 2006-03-09 Flash memory management method that is resistant to data corruption by power loss
PCT/IL2006/000558 WO2006120686A2 (en) 2005-05-12 2006-05-11 Flash memory management method that is resistant to data corruption by power loss

Publications (2)

Publication Number Publication Date
JP2008544345A JP2008544345A (ja) 2008-12-04
JP4966965B2 true JP4966965B2 (ja) 2012-07-04

Family

ID=37396974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008510725A Expired - Fee Related JP4966965B2 (ja) 2005-05-12 2006-05-11 電源喪失によるデータ破損に強いフラッシュメモリ管理方法

Country Status (7)

Country Link
US (1) US7275140B2 (ja)
EP (1) EP1883884B1 (ja)
JP (1) JP4966965B2 (ja)
KR (1) KR101215864B1 (ja)
CN (1) CN101198939B (ja)
AT (1) ATE537504T1 (ja)
WO (1) WO2006120686A2 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
WO2007023674A1 (ja) * 2005-08-22 2007-03-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR100791006B1 (ko) * 2006-12-06 2008-01-03 삼성전자주식회사 싱글레벨 셀 및 멀티레벨 셀을 구비하는 반도체 메모리장치 및 그 구동방법
JP4563992B2 (ja) * 2006-12-26 2010-10-20 株式会社京都ソフトウェアリサーチ 多値フラッシュメモリおよび多値フラッシュメモリへのデータ書き込み方法
KR100877610B1 (ko) * 2007-01-23 2009-01-09 삼성전자주식회사 페이지 데이터 저장 방법과 저장 장치
US20080189473A1 (en) * 2007-02-07 2008-08-07 Micron Technology, Inc Mlc selected multi-program for system management
KR100889781B1 (ko) 2007-04-30 2009-03-20 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템
KR100873825B1 (ko) * 2007-05-02 2008-12-15 삼성전자주식회사 비휘발성 메모리의 멀티 비트 프로그래밍 장치 및 방법
KR101300821B1 (ko) * 2007-07-04 2013-08-26 삼성전자주식회사 비휘발성 메모리의 데이터 손실을 방지하기 위한 장치 및방법
US8151034B2 (en) * 2007-09-12 2012-04-03 Sandisk Technologies Inc. Write abort and erase abort handling
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
JP4703673B2 (ja) * 2008-03-12 2011-06-15 株式会社東芝 メモリシステム
US8276043B2 (en) 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20090287893A1 (en) * 2008-05-16 2009-11-19 Skymedi Corporation Method for managing memory
US20120311243A1 (en) * 2008-05-30 2012-12-06 Ite Tech. Inc. Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
TW200949840A (en) * 2008-05-30 2009-12-01 Ite Tech Inc Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
US20090319721A1 (en) * 2008-06-19 2009-12-24 Silicon Motion, Inc. Flash memory apparatus and method for operating the same
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8074012B2 (en) * 2008-07-02 2011-12-06 Silicon Motion, Inc. Flash memory apparatus and method for securing a flash memory from data damage
TWI386803B (zh) * 2008-07-02 2013-02-21 Silicon Motion Inc 快閃記憶卡及快閃記憶體預防資料毀損的方法
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US7962801B2 (en) * 2008-10-15 2011-06-14 Silicon Motion, Inc. Link table recovery method
CN101727397B (zh) * 2008-10-20 2012-06-27 群联电子股份有限公司 区块管理与更换方法、闪存储存系统及其控制器
US8103631B2 (en) * 2008-11-19 2012-01-24 Sandisk Il Ltd Merging files on storage and retrieve
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic Corp 不揮発性記憶装置および不揮発性メモリコントローラ
US8966176B2 (en) 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
US8738844B2 (en) 2011-04-14 2014-05-27 Macronix International Co., Ltd. Program method, data recovery method, and flash memory using the same
US20120297248A1 (en) * 2011-05-17 2012-11-22 Alan David Bennett Block write handling after corruption
KR101856506B1 (ko) * 2011-09-22 2018-05-11 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US20130205066A1 (en) * 2012-02-03 2013-08-08 Sandisk Technologies Inc. Enhanced write abort management in flash memory
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US8923045B2 (en) 2012-05-31 2014-12-30 Seagate Technology Llc Multi-level cell (MLC) update with protected mode capability
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
US9053011B2 (en) 2012-09-28 2015-06-09 Sandisk Technologies Inc. Selective protection of lower page data during upper page write
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
JP5695112B2 (ja) * 2013-03-18 2015-04-01 富士通テン株式会社 データ記憶装置、データの記憶方法および車載用制御装置
US9305655B2 (en) 2013-09-27 2016-04-05 Virtium Technology, Inc. Solving MLC NAND paired page program using reduced spatial redundancy
US8819337B1 (en) * 2014-04-16 2014-08-26 Sandisk Technologies Inc. Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data
US9715345B2 (en) 2014-04-25 2017-07-25 Micron Technology, Inc. Apparatuses and methods for memory management
CN104503707B (zh) * 2014-12-24 2018-03-06 华为技术有限公司 读取数据的方法以及装置
KR102222444B1 (ko) 2015-03-05 2021-03-04 삼성전자주식회사 전력 상태 정보를 사용하는 저장 장치 및 그것의 동작 방법
US9558839B2 (en) * 2015-03-09 2017-01-31 Toshiba Corporation Power fail saving modes in solid state drive with MLC memory
KR20160133283A (ko) * 2015-05-12 2016-11-22 삼성전자주식회사 비휘발성 메모리 저장장치를 운영하는 방법 및 이를 구현한 전자장치
US10055236B2 (en) 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US10303571B2 (en) * 2015-11-04 2019-05-28 Intel Corporation Data recovery in memory devices
CN106776362B (zh) * 2015-11-24 2019-12-03 中芯国际集成电路制造(上海)有限公司 存储器的控制方法及装置
KR102641107B1 (ko) 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
CN106227623B (zh) * 2016-08-03 2019-03-26 深圳市智行畅联科技有限公司 一种基于智能终端的文件格式及数据掉电修复方法及系统
US10048887B2 (en) 2016-10-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for single level cell caching
US10977186B2 (en) * 2017-11-21 2021-04-13 Micron Technology, Inc. Last written page searching
US11249845B2 (en) 2017-12-06 2022-02-15 Rambus Inc. Error-correction-detection coding for hybrid memory module
US11163679B2 (en) * 2018-04-04 2021-11-02 SK Hynix Inc. Garbage collection strategy for memory system and method of executing such garbage collection
TWI669610B (zh) 2018-06-13 2019-08-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11106372B2 (en) * 2019-12-27 2021-08-31 Micron Technology, Inc. Asynchronous power loss handling approach for a memory sub-system
KR20220153863A (ko) 2021-05-12 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11960757B2 (en) 2021-10-04 2024-04-16 Samsung Electronics Co., Ltd. Flash translation layer with rewind
US11893243B2 (en) * 2021-10-06 2024-02-06 Western Digital Technologies, Inc. Storage system and method for program reordering to mitigate program disturbs

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
EP0913834A1 (en) * 1996-07-10 1999-05-06 Hitachi, Ltd. Nonvolatile semiconductor storage device
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
CN1255733C (zh) * 2001-07-25 2006-05-10 索尼株式会社 非易失性存储器和非易失性存储器的数据改写方法
US6773083B2 (en) * 2001-08-29 2004-08-10 Lexmark International, Inc. Method and apparatus for non-volatile memory usage in an ink jet printer
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6977847B2 (en) * 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
US6542407B1 (en) * 2002-01-18 2003-04-01 Sandisk Corporation Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells
US7702659B2 (en) 2003-03-27 2010-04-20 Sandisk Il Ltd. Robust, self-maintaining file system
US6988175B2 (en) * 2003-06-30 2006-01-17 M-Systems Flash Disk Pioneers Ltd. Flash memory management method that is resistant to data corruption by power loss
JP4874566B2 (ja) * 2005-04-11 2012-02-15 株式会社東芝 半導体記憶装置
WO2007023674A1 (ja) * 2005-08-22 2007-03-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP2007094921A (ja) * 2005-09-30 2007-04-12 Toshiba Corp メモリカードとその制御方法
JP2007109352A (ja) * 2005-10-17 2007-04-26 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置およびその駆動方法。

Also Published As

Publication number Publication date
WO2006120686A3 (en) 2007-11-01
US20060259718A1 (en) 2006-11-16
EP1883884A2 (en) 2008-02-06
EP1883884B1 (en) 2011-12-14
ATE537504T1 (de) 2011-12-15
JP2008544345A (ja) 2008-12-04
EP1883884A4 (en) 2010-10-27
WO2006120686A2 (en) 2006-11-16
CN101198939B (zh) 2011-11-23
KR101215864B1 (ko) 2013-01-02
KR20080008419A (ko) 2008-01-23
US7275140B2 (en) 2007-09-25
CN101198939A (zh) 2008-06-11

Similar Documents

Publication Publication Date Title
JP4966965B2 (ja) 電源喪失によるデータ破損に強いフラッシュメモリ管理方法
US7603525B2 (en) Flash memory management method that is resistant to data corruption by power loss
KR101392701B1 (ko) 메모리 장치를 위한 삽입된 매핑 정보
US9665301B2 (en) Methods and devices for storing user data along with addresses corresponding to physical pages storing valid data
JP4256175B2 (ja) 不揮発性半導体メモリ
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
US8046528B2 (en) Data writing method for flash memory, and flash memory controller and storage device thereof
US7389397B2 (en) Method of storing control information in a large-page flash memory device
KR100672996B1 (ko) 메타 데이터가 저장되는 에프램을 포함하는 메모리 장치
JP2003187585A (ja) フラッシュデバイスにおける部分的に消去されたユニットの検出
US9558128B2 (en) Selective management of security data
US20110138113A1 (en) Raid storage systems having arrays of solid-state drives and methods of operation
KR20200076886A (ko) 저장 장치 및 그 동작 방법
US8954692B2 (en) File protecting method and system, and memory controller and memory storage apparatus thereof
Lin et al. Achieving fast sanitization with zero live data copy for MLC flash memory
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
JP4551938B2 (ja) メモリシステム
JP5264459B2 (ja) 半導体記憶装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110518

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110616

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120210

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120216

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120402

R150 Certificate of patent or registration of utility model

Ref document number: 4966965

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees