(57)【要約】【課題】停電後の不揮発性メモリの回復システムを提供する。【解決手段】停電後に不揮発性メモリアレイを回複することができる。一実施例では、メモリアレイのページがスキャニングされて、停電後の第１のフリーページを見出す。この第１のフリーページは、使用可能とマークされ、そして使用可能とマークされたページは、次の書き込みサイクルで書き込まれる。【選択図】図２
2010157216.tif 000002
【特許請求の範囲】
【請求項１】
メモリアレイのページをスキャニングして第１のフリーページを見出すステップと、
前記第１のフリーページを使用可能とマーキングするステップと、
使用可能とマーキングされた前記ページに次の書き込みサイクルで書き込みするステップと、
を備えた方法。
【請求項２】
前記第１のフリーページの前のページを無効とマーキングするステップと、
無効とマーキングされた前記ページを消去するステップと、
を更に備えた請求項１に記載の方法。
【請求項３】
ページをスキャニングする前記ステップは、ページを、それが書き込まれた順序でスキャニングし、ページにデータが記憶されているかどうか決定し、そしてページにデータが記憶されていない場合には、次のページが第１のフリーページであると決定することを含む、請求項１に記載の方法。
【請求項４】
ページをスキャニングする前記ステップは、更に、ページにデータが記憶されている場合には、ページが有効とマークされるかどうか決定し、そしてページが有効とマークされない場合には、次のページが第１のフリーページであると決定することを含む、請求項３に記載の方法。
【請求項５】
ページが有効とマークされるかどうか決定することは、ページに関連したヘッダを読み取ることを含む、請求項４に記載の方法。
【請求項６】
前記ヘッダを読み取ることは、ページのブロックに対してヘッダを読み取ることを含む、請求項５に記載の方法。
【請求項７】
前記ヘッダを読み取ることは、ページに関連したメモリアレイのスペアエリアにおいてヘッダを読み取ることを含む、請求項５に記載の方法。
【請求項８】
無効とマーキングする前記ステップは、ページに関連したヘッダへマーカーを書き込むことを含む、請求項１に記載の方法。
【請求項９】
無効とマーキングする前記ステップは、第１のフリーページを含むページのブロックに関連したヘッダへマーカーを書き込むことを含む、請求項１に記載の方法。
【請求項１０】
有効とマーキングすることは、第１のフリーページに関連したルックアップテーブルに書き込みすることを含む、請求項１に記載の方法。
【請求項１１】
前記メモリアレイは、ブロックへと分割され、各ブロックは、複数のページを含み、ページをスキャニングする前記ステップは、ブロックのページをスキャニングすることを含み、前記方法は、更に、
他の各ブロックのページをスキャニングして各ブロックにおける第１のフリーページを見出すステップと、
各ブロックにおける前記第１のフリーページの前のページを無効とマーキングするステップと、
前記第１のフリーページを各ブロックにおいて使用可能とマーキングするステップと、
を備えた請求項１に記載の方法。
【請求項１２】
メモリアレイのための停電回復システムにおいて、
メモリアレイのページをスキャニングして第１のフリーページを見出すためのページスキャナと、
前記第１のフリーページを使用可能とマークするためのページマーカーと、
使用可能とマークされた前記ページに次の書き込みサイクルで書き込みするためのプログラム回路と、
を備えたシステム。
【請求項１３】
前記ページマーカーは、更に、第１のフリーページの前のページを無効とマークし、そして前記プログラム回路は、更に、無効とマークされた前記ページを消去する、請求項１２に記載のシステム。
【請求項１４】
前記ページスキャナは、ページに関連したヘッダにおいてページが有効とマークされたかどうか決定することによりフリーページを見出す、請求項１２に記載のシステム。
【請求項１５】
ヘッダを読み取ることは、ページのブロックに対してヘッダを読み取ることを含む、請求項５に記載のシステム。
【請求項１６】
複数のブロックへとグループ分けされる複数のメモリセルを含むメモリセルアレイと、
前記メモリセルアレイに結合され、メモリアレイのページをスキャンして第１のフリーページを見出し、前記第１のフリーページの前のページを無効とマークし、前記第１のフリーページを使用可能とマークし、前記無効とマークされたページを消去し、そして前記使用可能とマークされたページへ書き込みを行うためのメモリコントローラと、
を備えたメモリデバイス。
【請求項１７】
前記メモリコントローラは、ページを、それが書き込まれた順序でスキャニングし、ページにデータが記憶されているかどうか決定し、そしてページにデータが記憶されていない場合には、次のページが第１のフリーページであると決定する、請求項１６に記載のデバイス。
【請求項１８】
ページにデータが記憶されている場合には、前記メモリコントローラは、ページが有効とマークされるかどうか決定し、そしてページが有効とマークされない場合には、次のページが第１のフリーページであると決定する、請求項１７に記載のデバイス。
【請求項１９】
前記メモリセルアレイは、フラッシュメモリセルアレイである、請求項１６に記載のデバイス。
【請求項２０】
前記メモリセルアレイは、相変化メモリセルアレイである、請求項１６に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、停電後の不揮発性メモリの回復に係る。
【背景技術】
【０００２】
不揮発性メモリデバイスは、記憶されたデータを安全に維持するために電力を要求することなくデータを記憶するという利益をもたらす。しかしながら、記憶されたデータの読み取り及びデータの最初の書き込みには、電力が必要である。多くの不揮発性メモリ形式では、典型的に、停電に関わりなく読み取りオペレーション中にデータは安全である。しかしながら、書き込みプロセス中に電力が遮断又は停電した場合には、書き込みが停止するだけでなく、幾つかのセルには、不安定な値が書き込まれることがある。従って、復電した後に、どこで書き込みを再開すべきか決定することは困難である。
【０００３】
更に、メモリに既に書き込まれた値をチェックしても、どこで書き込みを再開すべきか確実に指示できないことがある。例えば、フラッシュメモリの場合、メモリセルの値は、電荷をセットすることにより記憶される。電荷素子の電圧がスレッシュホールドと比較され、記憶された値が０であるか１であるか決定する。意図された電荷がセットされる前に停電が生じたために記憶された値がほぼスレッシュホールドである場合には、それが、あるときには、０と読まれ、又、他のときには、１と読まれる。同様に、相変化メモリセルでは、相変化材料の抵抗をセットすることにより値が記憶される。抵抗値がスレッシュホールドと比較され、抵抗値がスレッシュホールドに近い場合に、セルは、あるときには、０と読まれ、又、他のときには、１と読まれる。メモリセルがある範囲の値をとることのできるいずれの形式の不揮発性メモリでも、このような不安定な又は一貫性のない値が生じることになる。
【０００４】
停電後にフラッシュメモリに留まる不安定なデータのためにクラッシュを生じることからシステムを保護する方法が存在する。この保護方法は、典型的に、メモリデバイス全体をスキャニングするか、又はファイル全体を再び始めから書き直すことを含む。しかしながら、不安定なメモリ値では、メモリをスキャンしても、正確な答えが得られないことがある。他方、データの再書き込みには、時間がかかる。
【０００５】
本発明の要旨は、明細書の結論部分に詳細に指摘され、個別に請求される。しかしながら、本発明は、その編成及び動作方法、並びにその目的、特徴及び効果と共に、添付図面を参照した以下の詳細な説明から最も良く理解できよう。
【図面の簡単な説明】
【０００６】
【図１】一実施形態によりページ及びブロックへと編成されるメモリセルをもつフラッシュメモリアレイのブロック図である。
【図２】一実施形態によりメモリアレイのページをスキャニングして第１のフリーページを見出すためのプロセスフロー図である。
【図３】別の実施形態によりメモリアレイのページをスキャニングして第１のフリーページを見出すためのプロセスフロー図である。
【図４】一実施形態によりメモリアレイのブロックを通してページをスキャニングして第１のフリーブロックを見出すためのプロセスフロー図である。
【図５】別の実施形態によりメモリアレイのブロックを通してページをスキャニングして第１のフリーブロックを見出すためのプロセスフロー図である。
【図６】一実施形態により図２から５のプロセスを具現化できる移動装置のブロック図である。
【図７】一実施形態による停電回復システムのブロック図である。
【発明を実施するための形態】
【０００７】
図示簡単化及び明瞭化のために、図示された要素は、必ずしも正しいスケールで描かれていないことが明らかである。例えば、幾つかの要素の大きさは、明瞭化のために、他の要素に対して誇張されている。更に、適切と考えられるところでは、対応する要素又は同様の要素を指示するために幾つかの図面において参照番号が繰り返されている。
【０００８】
本発明の実施形態は、フラッシュ又は他の不揮発性メモリハードウェアのプログラミングオペレーション中に停電事故が生じたときにデータの完全性に対して完全なカバレージを与えることができる。従って、不安定な、破損した又は部分的にプログラムされたデータ断片を、良好なデータ断片から安全に区別することができる。これは、停電回復を最適な仕方で遂行できるようにする。これは、メモリの部分的再書き込みをメモリデバイスの特定エリアへ向けることができ、より少ない書き込みサイクルで、完全な停電回復を得られるようにする。これは、書き込みの回数を減少することにより良好なメモリ寿命サイクルを与える。又、特に、ＮＡＮＤ形式のフラッシュメモリデバイスに対してハードウェアエラーを回避する上で助けとなる。本発明の実施形態は、ＮＯＲ（ｎｏｔ  ｏｒ）フラッシュ、ＮＡＮＤ（ｎｏｔ  ａｎｄ）フラッシュ、及びＰＣＭを含む広範囲な異なる不揮発性メモリに適用することができる。又、広範囲な異なるメモリファイルシステム及びメモリセクタマネージメントシステムにも適用することができる。
【０００９】
本発明の一実施形態によれば、ブロックごとにデータをメモリデバイスに書き込むために逐次のモデルが使用される。このモデルでは、デバイスに新たなデータを書き込むときに第１の使用可能なスペース又は第１のフリースペースが常に使用される。システムの初期化中、及び予期せぬ遮断に続いて、メモリの非書き込みエリアへのワーストケースの破損が仮定される。例えば、フラッシュメモリでは、１つのブロックのページが逐次に書き込まれるので、停電又は電力遮断が生じたときに、全メモリブロック又は全メモリアレイを無効化する必要はない。むしろ、どのページが破損を被るかを知的に決定することで、それらの特定ページを修理の焦点とすることができる。
【００１０】
使用中のメモリデバイスにデータ断片を書き込む間に停電が生じたときにデータの破損が発生する。この破損により、未知の状態で存在するデバイス内のビットが生じる。未知の状態とは、正しい値のこともあるし、間違った値のこともあるし、或いは不安定又は非信頼性の無効値のこともある。
【００１１】
停電から完全に回復するためには、全メモリを再書き込みしなければならないか、又はアレイ内の各メモリセルの状態を決定する何らかの方法がなければならない。上述したように、フラッシュ及びＰＣＭを含む多数の形式の不揮発性メモリシステムでは、プログラム又は消去オペレーション中のシステム電力の中断が、あるメモリセルを未知の状態のままにし、及びおそらく、そのようにする。これらの状態は、０であるか、１であるか又はそれらの間のどこかである。
【００１２】
回復するための１つの解決策は、単にフラッシュを読み取り、消去された値としてそれが読み取られる場合に、消去された状態にあると仮定することである。しかしながら、フラッシュメモリにおける各セルの値は、アナログ状態で存在するので、プログラミング又は消去が首尾良く行われた後でなければ、２進値を表すものと考えることができない。
【００１３】
別の解決策は、最初に、メモリのあるエリアを、そのエリアに値を書き込む前に、無効（又はダーティ）とマークすることである。しかしながら、あるフラッシュデバイスは、それが消去されねばならない前に、ページに対して限定された数のプログラミングオペレーションしか許さないので、「ダーティ」マーカーを書き込むと、書き込まれたデータの断片ごとに遂行されねばならない書き込みの回数が増加する。これは、書き込みソフトウェアの書き込み速度を下げる。というのは、ページを消去して同じ値を再書き込みしなければならない頻度が高くなるからである。
【００１４】
別の解決策は、メモリエリアのどんなエリアが常時使用されるか安全に追跡するよう試みることである。この解決策は、ランタイムの書き込み速度を下げる。別の解決策では、特定の書き込みシーケンスを使用して、欠陥が発生するおそれを最小にする。
【００１５】
別の解決策では、各ページが読み取られて、その有効性が確認される。これは、時間がかかるだけでなく、完全に安全ではない。というのは、不安定なセルが、あるときには、正確に読み取りを行い、又、別のときには、不正確な読み取りになるからである。
【００１６】
対照的に、本発明の実施形態では、ワーストケースを仮定することで、各データビットを読み取らねばならないオーバーヘッドが排除され、安定なメモリセルのみの使用を保証することができる。換言すれば、本発明の実施形態では、各データエリアは、その旨指示がない限り、使用が安全でないと仮定する。以下に述べるように、プログラム又は消去オペレーション中に停電事故が生じた場合に、システムは安全に維持され回復される。同時に、システム性能は妥協されることがない。
【００１７】
フラッシュメモリシステムの一実施例が図１に示されている。このシステムは、コントローラ１１１及びアレイ１１３を有する。コントローラは、入力／出力バス１１５に結合され、データを受け取ってアレイに記憶すると共に、アレイから読み取ったデータを伝送する。又、コントローラは、メモリバスにも結合され、このバスを経て、アレイを制御し維持する。又、データをアレイに書き込むと共に、アレイからメモリバスを経てデータを読み取る。
【００１８】
アレイ１１３は、１つ以上のブロック１１９に分割され、各ブロックは、１つ以上のページ１２１を含む。ページは、電荷を使用してデータを記憶するために個々のメモリセル１２３を含む。又、ブロックは、メモリセルを読み取り、書き込み及びフラッシュするための必要な回路も含む。これらは、行コントローラ１２５及び列コントローラ１２７として図１に示されている。特定のシステムにおけるコンポーネントの数は、システムのコンフィギュレーション及びその意図されたアプリケーションに依存する。１つのページは、５１２から２Ｋの８ビットバイトのデータを記憶するためのセルをもつことができる。しかしながら、１６、３２及び６４ビットバイトが使用されてもよく、又、ページのサイズは、それより小さくても大きくてもよい。各ブロックは、１６、３２、６４又は１２８ページを有するが、それより大きくても小さくてもよい。各アレイは、アプリケーションに基づいて、８又は１６ブロックを有する。あるアレイは、構造を簡単化するために単一のブロックを有する。大きなアレイは、より多数のブロックを有することができる。ここに与えられる数は、一例に過ぎず、本発明は、特定のブロックサイズに限定されるものではない。
【００１９】
典型的なフラッシュ動作では、一度に１つの全ブロックがフラッシュされる。これは、ブロックに記憶された値を消去し、全てのビットを同じ値、典型的に、０にセットする。しかしながら、フラッシュされたセルは、むしろ値１を有すると解釈されてもよい。次いで、各セルは、必要に応じて、１でプログラムされるか、又は０状態に留まることが許される。書き込みプロセスは、フラッシュされたセルをプログラミングすることより成る。各セルがプログラムされた後は、再びフラッシュされた後でなければ再書き込みすることができない。これは、全ブロックを消去するので、記憶されたデータに僅かな変更を頻繁に有するメモリとしては、小さなブロックが好ましい。大きなブロックは、変更の頻度が低いか又はコストがより重要なメモリにとってより効率的である。
【００２０】
データは、典型的に、一度に１ページが書き込まれる。典型的な実施例では、データは、単一の書き込みサイクルにおいて同じページに全部が書き込まれる。書き込みサイクルが完了すると、そのページに対してコミットマーカーが入れられ、ページに再び書き込むことができない。書き込みサイクル中に電力が遮断された場合には、メモリの値が不安定になる。別のメモリ構成では、コミットマーカーが書き込まれる前に２つ以上の書き込みサイクルを単一のページに向けることができる。
【００２１】
図１のフラッシュメモリ実施例では、ページは、デバイスに書き込むことのできるデータエレメントの最小の粒度と考えられる。同様に、最も大きなデータ断片サイズは、ブロックの残りであると考えられる。この実施例では、データ断片は、ブロック境界を横切ることがない。他の形式のメモリは、ページ及びブロックへと編成することができ、或いはここに述べる解決策は、他の形式のメモリ構造に適応させることができる。
【００２２】
停電中にデバイスが動作する場合には、フラッシュメモリセルアレイに、あるページを書き込むことがある。停電の後に、デバイスの各有効ブロックを繰り返し通ることで、各ページの各ヘッダをスキャンして、空きページヘッダを見出すことができる。このページは、第１の非書き込みページ、又はフラッシュされるがプログラムされないページと考えることができる。
【００２３】
あるフラッシュメモリアレイでは、各ページが、フリースペース或いはスペアエリア又はスペースと称される特別なセルを有する。これらのセルは、ページ内の他のセルがフェイルした場合に使用されるべきアレイに組み込まれ、そしてハウスキーピング又はマネージメントの目的で使用することもできる。ヘッダは、このフリーページに記憶されてもよい。
【００２４】
一実施例では、各ページは、エラー修正コード（ＥＣＣ）及びヘッダを有する。ヘッダは、ページが首尾良く完全にプログラムされるか又は書き込まれたときに、コミットマーカーを書き込むために使用される。コミットマーカーは、プログラミングオペレーションが首尾良く完了したかどうか指示するために使用できる。マーカーは、プログラミングオペレーションが首尾良く完了した後に書き込まれる。フラッシュメモリの場合に、セルがフラッシュ又は消去された後に、セルに書き込みするプロセスは、プログラミングと称される。
【００２５】
一実施例では、各ページは、ページがフラッシュされたとき及びページがプログラムされたときに書き込まれるヘッダを有する。このヘッダは、次いで、プログラムされた有効なレジスタの数を追跡する。ヘッダの読み取りが完全な場合には、ページが、プログラムされたレジスタを有し、ページは、フリーではなく、そしてこれは第１のブロックであるから、プロセスは、第１の非書き込みページへ進む。それとは別に、ヘッダは、全ブロックのみに対するものでもよいし、アレイの他のサブセットに対するものでもよい。ヘッダは、フリースペースにあってもよいし、個別のテーブルにあってもよいし、或いはページ又はブロックの特に割り当てられた部分にあってもよい。
【００２６】
停電の後に、メモリがスキャンされて、どのページが有効であり、どのページが有効でないか決定する。メモリマネージメントソフトウェアのようなメモリマネージャーを再スタートするか又はマウンティングするときにブロックのいずれか１つが停電データを含むと仮定するのが最も安全である。ブロックをスキャニングするときに、ブロックを見出すことのできる停電状態は、次の４つが考えられる。
１）最後に見つかったデータ断片は、コミットマーカーを含む。
２）最後に見つかったデータ断片は、空き断片である。
３）不完全なデータ断片が見つかる。これは、無効ヘッダ、又はコミットマーカーをもたない有効ヘッダにより指示することができる。
４）リクレイム又はフラッシュ消去がブロックにおいて進行し、データもヘッダも存在しない。
【００２７】
ケース１及び２では、停電の仮定は、このブロック（停電を経験したもの）への最後の書き込みが、ブロックをスキャニングするときに見つかった第１のフリーページへのものであることを意味する。一実施例では、取るべきアクションは、このページ（第１のフリーページ）をダーティと物理的にマークし、そしてそれに続くページをこのブロックにおける第１の使用可能なフリーページとして使用することである。ダーティマーカーは、このページのデータが有効でないこと、及びそれを、メモリアレイの形式に基づいて、新たなデータでフラッシュ、クリア、リクレイム又は再書き込みすべきであることを指示する１つの仕方である。同様に、最初に見つかったフリーページがブロックの第１ページである場合には、その第１のフリーページをダーティとマークすることができる。しかしながら、このケースでは、以前の有効なデータ断片が存在しない。次のページが第１のフリーページとなり、これは、新たな書き込みが行われるところである。
【００２８】
ダーティマーカーは、種々の異なる仕方で書き込むことができる。一実施例において、ヘッダｉｄ又はヘッダにおける異なるフィールドの組合せが全て０にプログラムされる。しかしながら、それに代わって、他のマーカーを使用することもできる。このブロックのその後のマウントは、無効ヘッダフィールドを伴うデータ断片をダーティスペースとして見る。
【００２９】
ダーティマーカーは、明確な利益を与える。メモリコントローラは、新たなデータの書き込みを開始するときに、次の位置を探す。これは、そのシーケンスで書き込まれた最後の位置の後の位置である。この位置は、第１のフリーページ内にある。ページがダーティを示すようにマークされない場合に、その後のマウントは、スキップされたページを第１のフリーページであると考える。ページは、それをダーティとマークすることにより、スキップされ、次のページが使用される。これは、このページが再び使用される前にこのページをクリアするのを許す。
【００３０】
ケース３では、ヘッダが無効であるか、又はデータ断片がコミットマークを有していない。このようなページ又はブロックは、停電が生じたときに書き込み中であった。従って、影響を受ける全てのデータは、信頼性がなく、これは、ヘッダに書き込まれる情報、例えば、有効又は無効断片のサイズを含む。一実施例では、このデータ断片のいずれかのページへ書き込んでいる間に停電が発生し、そして特定のページを安全に決定できないと仮定する。それ故、データ断片は、ブロックの残りである最大サイズのものであると仮定する。従って、このブロックの残りは、ダーティであると考えられ、そのようにマークすることができる。付加的なデータ断片がそれらのページに書き込まれようとしていない場合には、その影響を受けるページをダーティと実際にマークする必要はない。無効ヘッダを見るか又はコミットマークを見ないその後のマウントは、そのたびに同じ仕方でブロックをポピュレートする。
【００３１】
他方、ヘッダが不安定である場合には、将来のマウントがこの断片の第１ページをフリースペースとして読み取ってもよい。これは、停電ケース１に対応する。不安定なヘッダは、ダーティとマークされ、それに依存することはない。いずれにせよ、ダーティとマークされたスペースは、ブロックがリクレイムされたときに回復される。これらの実施例を通して明らかなように、マウント中に全ての停電ケースをハンドリングすることで、システム始動後の書き込み性能への影響が防止される。
【００３２】
ケース４では、ブロックにおいてリクレイムが進行中である場合には、リクレイムプロセスが単に再スタートされる。他の解決策は必要とされない。より特定にこのケースに対処するために他の解決策を使用することができる。
【００３３】
上述した考え方は、フローチャートを使用して示すことができる。図２は、一形式の基本的ページスキャニングの一例である。図２のプロセスは、次のフリーページを見出すことを目的としてブロックの各ページを通してスキャンする。フリーページとは、プログラミングに使用される次のページである。換言すれば、フリーページは、このブロックに書き込まれる次のページである。
【００３４】
ボックス２１１において、ページスキャンプロセスが開始される。これは、いつでも行うことができるが、上述した実施例では、メモリへの書き込み中に停電が生じた後に行われる。又、これは、始動のたびに、又は停電事故の後の始動のたびに行うことができる。初期化は、始動すべきブロックを選択する。典型的に、２つ以上のブロックがある場合には、それらブロックは、例えば、０から４までの数字の指示子を伴う何らかの仕方で順序付けされる。この順序付けは、それらが埋められる順序に対応する。第１のブロックは、典型的に、アレイにおける唯一のブロックであるか、又は０で示された第１ブロックである。しかしながら、プロセスは、いずれのブロックで開始してもよい。
【００３５】
ボックス２１３において、シーケンスにおける第１ページが選択される。上述したように、メモリコントローラは、典型的に、アレイ内のページ書き込むためにそれが使用するシーケンスを有する。特定のシーケンスは、メモリアレイの特定の設計に依存する。番号０は、典型的に、物理的又は位置的な順序付けではなく、論理的な順序付けに対応する。ボックス２１５において、ページごとのスキャニングが開始する。
【００３６】
ページがいずれのデータも含まない場合には、ボックス２１７において、ページがダーティとマークされる。図２に示す解決策では、管理されるデバイスにおいて見出された第１の空のページのみがダーティとマークされ、それに続くページが第１のフリーページとなることに注意されたい。ボックス２１９では、このページが最後のページであるかどうか決定される。もしそうでない場合には、ボックス２２１において、次のページがフリーページとしてマークされ、そしてボックス２２３において、プロセスが終了となる。他方、データを伴わないこのページが最後のページである場合には、ボックス２２５において、フリーページは存在せず、プロセスは、ボックス２２３で終了となる。
【００３７】
スキャン中のページがデータを含む場合には、プロセスは、次いで、ボックス２２７において、ヘッダをコミットマーカーに対してチェックする。この実施例では、ページが首尾良く且つ完全に書き込まれた後に、コミットマーカーがヘッダに書き込まれる。或いは又、全ブロックに対してのみコミットマーカーが存在してもよい。これは、各ページに書き込むときに時間を節約し、又、停電は稀な事故であるから、停電が生じたときにシステムの回復への影響はめったにない。
【００３８】
ページに対してコミットマーカーがない場合には、ボックス２１７において、ページが再びダーティとマークされる。ダーティページで上述したように、ボックス２１９において、次のページがある場合には、ボックス２２１において、それがフリーとマークされる。
【００３９】
データを伴うページに対してコミットマーカーがある場合には、それが良好なページであり、スキャンは、次のページへと続くことが仮定される。図２のボックス２２９において、現在ページが最後のページでない場合には、ボックス２３１において、スキャンは、次のページへと続く。これが第１の繰り返しである場合には、現在ページは、第１ブロック（ブロック０）において第１ページ（ページ０）となる。ブロックと同様に、それらは、典型的に、順序付けされ、そして全ての書き込みは、そのページがいっぱいになるまで１つのページに行われる。次いで、書き込みは、シーケンスにおいて次のページへ進む（ページ１、ブロック０）。従って、この停電回復プロセス中に、ページは、同じ順序で分析される。
【００４０】
ボックス２２９において、現在ページが最後のページである場合には、ボックス２２５において、フリーページはなく、プロセスは、ボックス２２３で終了となる。
【００４１】
図２の戻りループで示されたように、図２のプロセスは、一度に１ページで、メモリアレイの各有効ブロックを通して繰り返すことができる。このプロセスは、第１の非書き込みページを見出すまで、各ページをスキャンする。これは、一実施形態では、ページヘッダが空きであることにより指示される。
【００４２】
図３は、上述したオペレーションの変更を示す。図３は、コミットマーク決定ボックス３２７との間の接続が変更された以外は、図２と同じである。ここでは、ボックス３１５においてページがデータを含むが、ボックス３２７においてコミットマークを含まないときには、ボックス３１７においてページダーティをマークするのではなく、プロセスは、ブロックを、フリーページをもたないものとマークする。従って、プロセスは、ボックス３１５、３２７、３２９及び３３１を経て循環するブロックの各ページを通してスキャンする。次のフリーページが見出されたときには、そのフリーページが、プログラミングに使用されるべき次のページであり、プロセスは、先行ページをダーティとマークしてフリーページを指示するように分岐する。
【００４３】
図３において、プロセス及びファイルシステムには、コミットマークを書き込む変更がなされる。この実施例では、コミットマークは、ページごとに保持されず、多数のページの大きな断片に対して保持される。この断片は、ブロックであり、又は他のページグループを使用することもできる。図２の実施例では、ボックス２１５において、グループコミットマーカーを分析することができる。しかしながら、図３では、データ断片がプログラムされ始めたがコミットマーカーが見つからない場合に、ページの全範囲が無効化されるようにプロセスが更に洗練化される。このアルゴリズムは、依然、ワーストケースのページ破損を仮定する原理に従う。しかし、ここでは、プログラム領域の最小粒度は、１ページからブロックの残り又は他のページグループへと増加する。
【００４４】
それとは別に、プロセスは、データを含まない２つの連続するページを見出し、次いで、第１のページを無効にするよう試みることができる。この変更は、依然、書き込むことのできる最後のページを見出して、それを無効にする。これら全ての変更において、コミットされたデータに続いて空きページがあるか、又はブロックの始めに空きページがある場合には、最悪でも、１ページしか破損されていない。このため、プロセスは、そのページをダーティとマークし、次のページをフリーとマークするボックス２１７、２１９及び２２１を含む。
【００４５】
同じ位置から読み取る上述した不安定なセルは、０（プログラムされたビット）を出力してもよいし、又は、時々、１（最近フラッシュされたフリービット又は空きに対応する）を出力してもよい。フラッシュメモリのオペレーションにおいて、セルは、首尾良くフラッシュされるか又は首尾良くプログラムされた場合だけ信頼できるものとなる。これらプロセスのいずれかが中断された場合には、セルが不安定であるか又は破損されている。安定な状態へ戻る唯一の方法は、セルを含むページ全体をフラッシュすることである。従って、空きヘッダをもつページは、フラッシュされ再書き込みされる。その後続ページもフラッシュされて、次のフリーページとなる。
【００４６】
以前のページが、有効で且つ確認されたデータ（非停電断片）を含まない場合には、このブロックにおける以前の有効データ断片（又は有効断片が見つからない場合にはブロックの開始）から前方に向かって、最大サイズのデータ断片が無効化されると仮定する。
【００４７】
初期化中に第１のフリーブロックに対して少なくとも１ページを無効化することで失われるスペースは、取るに足らないものと考えられる。というのは、この状態は、予想外の遮断に続いて生じるに過ぎないからである。又、このスペースは、リクレイム又は不要データ収集手順により無効ページが既知の状態（消去された）にリセットされたときに取り戻される。この種のプロセスは、ページに書き込む前にページに破損がないことを保証する。
【００４８】
図４は、本発明のより基本的な態様を示す。図４の実施例では、プロセスは、ボックス４１１で開始する。ボックス４１３において、第１ブロックが識別され、ページごとにスキャニングが開始する。ボックス４１５では、ブロックの各ページがスキャンされる。ボックス４１７では、現在ブロックが最後のブロックである場合に、プロセスは、ボックス４１９で終了となる。現在ブロックが最後のブロックでない場合には、ボックス４２１において、プロセスは、次のブロックへ進んで、繰り返される。ページスキャンプロセスは、図２又は３のプロセスであるか、或いは他のプロセス及びここに述べる変形例のいずれかである。
【００４９】
図５は、図４のプロセスの更なる変形例を示す。図４と同様に、プロセスは、ボックス５１１でスタートし、ボックス５１３において、第１の論理的ブロックへ初期化される。そのブロックのページがボックス５１５においてスキャンされる。プロセスは、ボックス５１７を経て繰り返され、ブロックが最後のブロックである場合に、プロセスは、ボックス５１９で終了となる。ボックス５１７において、現在ブロックが最後のブロックでない場合には、プロセスは、ボックス５２１において次のブロックへ進み、そしてボックス５１５へ繰り返される。
【００５０】
しかしながら、図５の実施例では、ボックス５２３において単一のフリーページが見つかるまで各ブロックのページがスキャンされる。換言すれば、ボックス５１５において、ブロックのページがスキャンされる。フリーページが見つからない場合には、ボックス５２３の判断で、プロセスがボックス５１７に向けられ、そして図４の場合と同様に、プロセスは、次のブロックで繰り返すか、又は現在ブロックが最後のブロックである場合には終了となる。しかしながら、ページスキャニングがフリーページを見つけた場合には、判断ボックス５２３は、プロセスをボックス５１９において終了させる。これは、ドライブをマウントして、破損したページを見出すのに要する時間を著しく短縮できる。
【００５１】
この別の態様は、ブロックが常に同じシーケンス又は順序で使用されるときには特に良好に機能する。一度に１つのページしか使用されない場合には、ブロックにおける第１のフリーページが全メモリアレイに対する第１のフリーページとなる。従って、このページは、唯一の考えられる破損ページである。他方、メモリコントローラが、ページを通して常に同じシーケンスをたどらないか、又は２つ以上のページを同時に書き込むことができる場合には、プロセスは、全てのブロックを通り続けて、各ブロックに対する第１のフリーページを決定することができる。
【００５２】
上述したように、フラッシュメモリの場合、メモリセルが非書き込みであるときには、確認された有効データも、確認された無効データも含まない。どれが有効データであるか又はどれが有効データでないかを決定するために様々な異なる方法が考えられる。上述した実施例では、有効データ断片が書き込まれた後にそれらをマークするためにコミットマーカーが使用される。しかしながら、特定のアプリケーションに基づき、コミットマーカーに代えて、他の解決策をとることもできる。又、コミットマーカー及び他の技術を、他の形式のメモリセル、例えば、ＰＣＭ、ＭＲＡＭ及びＦＲＡＭに使用することもできる。
【００５３】
図６は、本発明の実施形態を適用できる例示的システム６１１を示す。ここに示す実施例では、システムは、モバイル、ハンドヘルド、セルラー電話であるが、若干変更することで、システムは、広範囲な異なる装置を表すことができる。システムは、チップセットを含んでも含まなくてもよい中央処理ユニット（ＣＰＵ）６１３により駆動される。ＣＰＵは、オペレーティングシステムを使用してプログラムを実行するアプリケーション区分６１５と、電話機能を取り扱う基本帯域区分６１７とを有する。両区分は、バスを経てシステムメモリと通信するメモリインターフェイス６１９に結合される。
【００５４】
ここに示す実施例では、システムメモリは、高速アクセスのためにランダムアクセスメモリ（ＲＡＭ）として具現化される揮発性区分６２１と、停電を切り抜けねばならないデータのためにフラッシュとして具現化される不揮発性区分６２３とを有する。典型的に、素早くアクセスされねばならないデータ及びインストラクションに対して短期間記憶としてＲＡＭが使用され、一方、オペレーティングシステム、システムパラメータ及びアプリケーションを記憶するためにフラッシュが使用される。或いは又、メモリは、完全にフラッシュの単一メモリとして具現化されてもよいし、又、フラッシュ区分は、他の形式の不揮発性メモリ、例えば、ＰＣＭ（相変化メモリ）、ＭＲＭ又はＦＲＭ或いはメモリ形式の何らかの組合せで具現化されてもよい。図２及び３に関して上述したオペレーションは、不揮発性メモリに適用される。停電事故では、揮発性メモリに記憶された全てのデータが失われる。
【００５５】
ＣＰＵの基本帯域区分は、ユーザインターフェイスに結合される。ここに示す実施例では、ユーザインターフェイスは、キーパッド６２５と、スピーカ及びマイクロホンを伴うヘッドセット６２７とを有する。特定のアプリケーションに基づき、タッチスクリーン、ブルーツース装置、加速度計、接近センサ及び他のインターフェイスのような種々の他のインターフェイスを使用することができる。又、基本帯域区分は、システムが無線接続を使用して外部装置と通信できるように、ＲＦ（高周波）回路６２９にも結合される。無線接続は、セルラー電話、データ、ワイヤレスネットワーク、又は必要に応じて他のインターフェイスでよい。
【００５６】
又、ＣＰＵは、種々の周辺機器６３１、例えば、カメラ、ロケーションシステム、ディスプレイ、プリンタ、ブルーツース装置、及びシステム６１１の付加的な機能をサポートするための他の周辺機器、のいずれかに結合することもできる。又、図６は、種々のコンポーネントの電力消費を調整するためにバッテリのような電源を含む電力マネージメントシステム６３３も示している。この装置は、ＣＰＵによりソフトウェア駆動及び制御されてもよいし、自律式でもよいし、或いは両方の組合せでもよい。一実施例では、この電力マネージメントにより、停電時に、ＣＰＵに対してアクセス可能なレジスタにフラグがセットされる。
【００５７】
図７は、上述したフロー図のプロセスを具現化することのできる停電回復システムの一実施例を示すブロック図である。このシステムは、ホストシステム７０９にアタッチされる。ホストシステムは、コンピュータ、セルラー電話、モバイルインターネット装置、娯楽システムコンポーネント、又は種々の他の装置のいずれかである。ホストシステムは、特殊なハードウェアの形態でよいメモリインターフェイスコントローラ７１１に結合される。このメモリインターフェイスコントローラは、ページスキャナ７１３及びページマーカー７１５に結合され、これらは、次いで、プログラム回路７１７及びセンス回路７１９に結合される。センス及びプログラム回路は、フラッシュメモリセル７２０−１から７２０−４に結合される。４つのセルしか示されていないが、典型的に、実際のアレイには、数百、数千、又はそれ以上のセルがある。
【００５８】
ページスキャナは、上述したように、メモリセルのページをスキャンし、そしてどのページが有効で、フリーで、無効であるか決定するように動作する。ページマーカーは、ページスキャナの結果に基づき、及びメモリの使用中に、ページをマークするように動作する。センス回路は、セル及びマーカーの値を読み取り、それらの値をページスキャナに与える。プログラム回路は、セルへの書き込みを行い、そしてメモリアレイにマーカーがある場合には、マーカーを書き込む。マーカーが個別の位置にある場合には、それらが、その個別の位置に書き込まれる。メモリインターフェイスコントローラは、メモリ及びここに示す他のコンポーネントのオペレーションを制御する。又、ホストシステムへのインターフェイスのオペレーションも制御する。
【００５９】
「コンピュータ読み取り可能な媒体」という語は、プロセッサ、メモリコントローラ、又は他の適当な装置へプログラムインストラクションを実行のために与えるのに関与する適当な媒体を指す。このような媒体は、これに限定されないが、不揮発性媒体及び揮発性媒体を含む多数の形態をとることができる。不揮発性媒体は、例えば、光学又は磁気ディスク、ソリッドステート記憶装置及び他のメモリ、ＲＯＭ、等を含む。揮発性媒体は、ダイナミックメモリ、例えば、システムメモリ、ＤＲＡＭ、ＳＲＡＭ、及び他の形式の揮発性メモリを含む。コンピュータ読み取り可能な媒体の共通形態は、例えば、磁気媒体（例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、及び他の磁気媒体）、光学媒体（例えば、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、及び他の光学媒体）、パターンをもつ物理的媒体（例えば、パンチカード、ペーパーテープ、他の物理的媒体）、メモリチップ又はカートリッジ（例えば、ＲＡＭ、プログラマブルリードオンリメモリ（ＰＲＯＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、及び他のメモリチップ又はカートリッジ）、並びにコンピュータで読み取ることのできる他の媒体を含む。
【００６０】
以下の詳細な説明では、本発明の完全な理解を与えるために多数の特定の細部について述べる。しかしながら、当業者であれば、本発明は、これら特定の細部を伴わずに実施できることが理解されよう。他の点では、本発明を不明瞭にしないために、良く知られた方法、手順、コンポーネント及び回路は、詳細に述べない。
【００６１】
詳細な説明のある部分は、コンピュータメモリ内のデータビット又は２進デジタル信号に対するオペレーションのアルゴリズム及び記号表現に関して表される。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者がそれらの仕事の実体を他の当業者に伝えるために使用される技術である。
【００６２】
アルゴリズムは、ここでは、一般的に、希望の結果を導くアクション及びオペレーションの自己一貫性シーケンスであると考えられる。これらは、物理量の物理的操作を含む。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、その他、操作することのできる電気的又は磁気的信号の形態をとる。主として共通使用の理由で、これらの信号をビット、値、エレメント、記号、キャラクタ、項、番号、等として参照するのが時々は便利であると分かっている。しかしながら、これら及び同様の語は、全て、適当な物理量に関連されるべきであり、且つそれらの量に適用される便利な表示に過ぎないことを理解されたい。
【００６３】
特に指示のない限り、以下の説明から明らかなように、明細書全体にわたり、「処理」、「コンピューティング」、「計算」、「決定」、等の語を使用する説明は、コンピューティングシステムのレジスタ及び／又はメモリ内の物理的（電子的）量として表されたデータを、コンピューティングシステムのメモリ、レジスタ又は他のそのような情報記憶、伝達又は表示装置内の物理的量として同様に表された他のデータへと操作及び／又は変換するコンピュータ又はコンピューティングシステム又は同様の電子的コンピューティング装置のアクション及び／又はプロセスを指すことが明らかである。
【００６４】
本発明の実施形態は、ここに述べるオペレーションを遂行するための装置を包含する。装置は、望ましい目的に対して特別に構成されてもよいし、或いは装置に記憶されたプログラムにより選択的にアクチベートされ又は再構成される汎用のコンピューティング装置を含んでもよい。このようなプログラムは、これに限定されないが、フロッピーディスク、光学ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、磁気−光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的にプログラム可能なリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能なリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適し且つコンピューティング装置のためのシステムバスに結合できる他の形式の媒体、等の記憶媒体に記憶することができる。
【００６５】
ここに示したプロセス及び表示は、特定のコンピューティング装置又は他の装置に固有に関連していない。ここに述べる技術に基づくプログラムと共に種々の汎用システムを使用することもできるし、或いは望ましい方法を遂行するように更に特殊な装置を構成するのが便利であると分かっている。種々のこれらシステムに対する望ましい構造は、ここでの説明から明らかとなろう。更に、本発明の実施形態は、特定のプログラミング言語を参照して説明しなかった。ここに述べる本発明の技術を実施するのに種々のプログラミング言語を使用できることが明らかであろう。更に、ここに述べるオペレーション、能力及び特徴は、ハードウェア（個別回路又は集積回路）及びソフトウェアの組合せで実施できることを理解されたい。
【００６６】
「結合(coupled)」及び「接続(connected)」という語は、そこから派生する語と共に、使用することができる。これらの語は、互いに同意語として意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続」とは、２つ以上の要素が互いに物理的又は電気的に直接接触することを指示するために使用される。一方、「結合」とは、２つ以上の要素が互いに物理的又は電気的に直接的又は間接的に（それらの間に他の要素が介在して）接触すること、及び／又は２つ以上の要素が互いに協働又は相互作用する（例えば、原因と効果の関係のように）ことを指示するために使用される。
【００６７】
本発明の特定の実施形態を以上に説明したが、本発明は、そのような実施形態の細部に限定されず、特許請求の範囲及びその合理的な等効物によって限定される。
【符号の説明】
【００６８】
１１１：コントローラ
１１３：アレイ
１１５：入力／出力バス
１１９：ブロック
１２１：ページ
１２３：メモリセル
１２５：行コントローラ
１２７：列コントローラ
６１１：システム
６１３：中央処理ユニット（ＣＰＵ）
６１５：アプリケーション区分
６１７：基本帯域区分
６１９：メモリインターフェイス
６２１：揮発性区分
６２３：不揮発性区分
６２５：キーパッド
６２７：ヘッドセット
６２９：ＲＦ回路
６３１：周辺機器
６３３：電力マネージメントシステム
７０９：ホストシステム
７１１：メモリインターフェイスコントローラ
７１３：ページスキャナ
７１５：ページマーカー
７１７：プログラム回路
７１９：センス回路
７２０：フラッシュメモリセル
【図１】
2010157216.tif 000003
【図２】
2010157216.tif 000004
【図３】
2010157216.tif 000005
【図４】
2010157216.tif 000006
【図５】
2010157216.tif 000007
【図６】
2010157216.tif 000008
【図７】
2010157216.tif 000009
【外国語明細書】
2010157216.tif 000010
2010157216.tif 000011
2010157216.tif 000012
2010157216.tif 000013
2010157216.tif 000014
2010157216.tif 000015
2010157216.tif 000016
2010157216.tif 000017
2010157216.tif 000018
2010157216.tif 000019
2010157216.tif 000020
2010157216.tif 000021
2010157216.tif 000022
2010157216.tif 000023
2010157216.tif 000024
2010157216.tif 000025
2010157216.tif 000026
2010157216.tif 000027
2010157216.tif 000028
2010157216.tif 000029
2010157216.tif 000030
2010157216.tif 000031
2010157216.tif 000032
2010157216.tif 000033
2010157216.tif 000034
2010157216.tif 000035