(57)【要約】【課題】管理情報の再構築の時間を短縮するでき、また、領域ごとの管理情報の有効／無効の判断を素早く行える不揮発性半導体記憶装置およびその管理方法を提供する。【解決手段】電気的に書き換え可能な不揮発性メモリ２と、不揮発性メモリ２の管理に関する情報に基づいて不揮発性メモリ２のアクセス領域を制御するコントローラ３と、を有し、コントローラ３は、不揮発性メモリ２の領域を分割して管理し、領域ごとにデータを管理する管理情報と、管理情報を束ねるマップに対して、統一した番号をつけて不揮発性メモリ２に書くことで、その番号を元に各管理情報およびマップがそれぞれ正常であるかどうかを判断する。【選択図】図１
2008191930.tif 000002
【特許請求の範囲】
【請求項１】
電気的に書き換え可能な不揮発性メモリと、
上記不揮発性メモリの管理に関する情報に基づいて当該不揮発性メモリのアクセス領域を制御するコントローラと、を有し、
上記コントローラは、
不揮発メモリの領域を分割して管理し、領域ごとにデータを管理する管理情報と、管理情報を束ねるマップに対して、統一した番号をつけて不揮発メモリに書くことで、その番号を元に各管理情報およびマップがそれぞれ正常であるかどうかを判断する
不揮発性半導体記憶装置。
【請求項２】
上記コントローラは、
管理情報を書き込むときにマップの番号より大きな番号をつけ、マップを書くときに管理情報の番号の最大値以上の番号をつけることで、管理情報がマップ以下の番号を持つ領域はマップのその領域が正しいと判断する
請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記コントローラは、
データを書き始める前にマップより大きな番号をつけた管理情報を書きこむことで、管理情報がマップ以下の番号を持つ領域は管理情報もマップも正しいと判断する
請求項２記載の不揮発性半導体記憶装置。
【請求項４】
上記コントローラは、
マップの番号を特別な最小値で書き換え、全ての管理情報の番号をそれより大きな値で書き換え、マップの番号をその値で再度書き換えることにより、大きくなった番号の小さな値へのリセットを行う
請求項２記載の不揮発性半導体記憶装置。
【請求項５】
上記コントローラは、
データを書き始める前には管理情報に書き込み中であることを示す情報をつけて書きこみ、データを書き終わった後には管理情報の更新完了時にその情報を外して書きこむことで、その情報の有無によって管理情報が正しいかどうかを判断する
請求項１記載の不揮発性半導体記憶装置。
【請求項６】
上記コントローラは、
管理情報の番号がマップの番号より大きい場合、管理情報に書き込み中であることを示す情報が無ければ、管理情報は正しく、マップのその領域だけが正しくないと判断する
請求項５記載の不揮発性半導体記憶装置。
【請求項７】
上記コントローラは、
起動時に管理情報およびマップを領域毎に正しいかどうか判断することで正しくないときの再構築範囲を限定する
請求項１記載の不揮発性半導体記憶装置。
【請求項８】
上記コントローラは、
一つの領域に対し複数の管理情報がある場合、最後に書き込む管理情報にのみ番号をつけることでその領域を代表する
請求項１記載の不揮発性半導体記憶装置。
【請求項９】
上記コントローラは、
管理情報が管理する領域がさらに細分化されている場合、書き込み中であることを示す情報が細分化された領域のどれか一つを示すことで管理情報のうちその領域の部分のみ正しくないと判断する
請求項１記載の不揮発性半導体記憶装置。
【請求項１０】
上記コントローラは、
管理情報が管理する領域がさらに細分化されている場合、書き込み中であることを示す情報を細分化された領域のそれぞれに対して示すことで管理情報のうちその領域の部分のみ正しくないと判断する
請求項１記載の不揮発性半導体記憶装置。
【請求項１１】
上記コントローラは、
更新された管理情報を書き込む際に、マップの更新が不要な場合は元の番号を管理情報につけることで、マップの書き込みを行わずに正しいと判断できる状態に戻す
請求項１記載の不揮発性半導体記憶装置。
【請求項１２】
電気的に書き換え可能な不揮発性メモリと、
上記不揮発性メモリの管理に関する情報に基づいて当該不揮発性メモリのアクセス領域を制御するコントローラと、を有し、
上記コントローラは、
上記不揮発メモリを階層化して管理し、下位の管理情報では自身に状態を反映するフラグを設けて書き込み、上位の管理情報と下位の管理情報で新旧比較のための情報を付加して書き込む
不揮発性半導体記憶装置。
【請求項１３】
上記コントローラは、
下位の管理情報が最新の状態を反映していることを確認するために、管理情報そのものをチェックすることで、データの全数チェックを行わない。
請求項１２記載の不揮発性半導体記憶装置。
【請求項１４】
上記コントローラは、
上位の管理情報が最新の状態を反映していることを確認するために、上位の管理情報と下位の管理情報をそれぞれ更新する際に書き込む新旧比較の情報を使用することで、下位の各管理情報の最新の状態を反映しているか個別に確認する
請求項１２記載の不揮発性半導体記憶装置。
【請求項１５】
不揮発性メモリを有する不揮発性半導体記憶装置の管理方法であって、
上記不揮発メモリの領域を分割して管理し、
領域ごとにデータを管理する管理情報と、管理情報を束ねるマップに対して、統一した番号をつけて不揮発メモリに書き込み、
上記番号を元に各管理情報およびマップがそれぞれ正常であるかどうかを判断する
不揮発性半導体記憶装置の管理方法。
【請求項１６】
不揮発性メモリを有する不揮発性半導体記憶装置の管理方法であって、
上記不揮発メモリを階層化して管理し、
下位の管理情報では自身に状態を反映するフラグを設けて書き込み、
上位の管理情報と下位の管理情報で新旧比較のための情報を付加して書き込む
不揮発性半導体記憶装置の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性半導体記憶装置およびその管理方法に関するものである。
【背景技術】
【０００２】
一般的に、不揮発メモリを使用する上では、不揮発メモリの同一領域を過度に書き換えないようにするためや、不良ブロック代替を目的として、ユーザデータの論理アドレスと不揮発メモリ上の物理アドレスを対応付ける論理物理（論物）変換テーブルなどの管理情報を作成して運用することが多い。
また、この管理情報自体を不揮発メモリ上に格納することにより、起動時に毎回構築しなおすのを省く手法を取ることもある。
【０００３】
ユーザデータの書き換えが発生すると管理情報の内容も変化するため、ユーザデータの状態を正確に不揮発メモリ上に反映させるためには、ユーザデータの書き換えに加えて管理情報の書き換えも毎回行う必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、管理情報を毎回書き換えるとその分処理時間が伸びて性能が低下してしまうことから管理情報の書き換えを省くことがある。
また、ユーザデータと同時に管理情報を書くことはできないのでユーザデータのみ書き換えられた瞬間は発生する。
これらのために、不意の電源遮断等により不揮発メモリ上に存在するユーザデータと管理情報の間に不整合を生じることがある。
【０００５】
システムを起動した時に不整合が無いことを素早く確認するために、ユーザデータ書き込みの開始前にその旨を示す情報を不揮発メモリに書き込み、管理情報の更新まで終了したら書き込みが終了している旨を示す情報を代わりに不揮発メモリに書き込む方法がある。
起動時には、その情報が書き込みを開始した後であることを示していれば、管理情報が正しいという保証ができないので、管理情報を再構築することになる。
【０００６】
しかし、管理情報を全て再構築する場合、不揮発メモリの容量によっては全領域での再構築には非常に多くの時間がかかってしまい、システムに重大な影響を及ぼすおそれがある。
【０００７】
本発明は、管理領域の再構築の時間を短縮することができ、また、管理情報の有効／無効の判断を素早く行える不揮発性半導体記憶装置およびその管理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の観点の不揮発性半導体記憶装置は、電気的に書き換え可能な不揮発性メモリと、上記不揮発性メモリの管理に関する情報に基づいて当該不揮発性メモリのアクセス領域を制御するコントローラと、を有し、上記コントローラは、不揮発メモリの領域を分割して管理し、領域ごとにデータを管理する管理情報と、管理情報を束ねるマップに対して、統一した番号をつけて不揮発メモリに書くことで、その番号を元に各管理情報およびマップがそれぞれ正常であるかどうかを判断する。
【０００９】
本発明の第２の観点の不揮発性半導体記憶装置は、電気的に書き換え可能な不揮発性メモリと、上記不揮発性メモリの管理に関する情報に基づいて当該不揮発性メモリのアクセス領域を制御するコントローラと、を有し、上記コントローラは、上記不揮発メモリを階層化して管理し、下位の管理情報では自身に状態を反映するフラグを設けて書き込み、上位の管理情報と下位の管理情報で新旧比較のための情報を付加して書き込む。
【００１０】
本発明の第３の観点は、不揮発性メモリを有する不揮発性半導体記憶装置の管理方法であって、上記不揮発メモリの領域を分割して管理し、領域ごとにデータを管理する管理情報と、管理情報を束ねるマップに対して、統一した番号をつけて不揮発メモリに書き込み、上記番号を元に各管理情報およびマップがそれぞれ正常であるかどうかを判断する。
【００１１】
本発明の第４の観点は、不揮発性メモリを有する不揮発性半導体記憶装置の管理方法であって、上記不揮発メモリを階層化して管理し、下位の管理情報では自身に状態を反映するフラグを設けて書き込み、上位の管理情報と下位の管理情報で新旧比較のための情報を付加して書き込む。
【００１２】
本発明によれば、領域を分割して管理し、領域ごとに管理情報の有効／無効を判断できるようにして、再構築が必要となる範囲を限定することでその時間を短縮する。
また、管理情報を階層化してそれぞれの新旧がわかるようにすることで、領域ごとの管理情報の有効／無効の判断を素早く行う。
【発明の効果】
【００１３】
本発明によれば、管理情報を不揮発メモリ上に保存する不揮発メモリシステムにおいて、管理情報の状態を表す手段の改良により、起動時に必要とされる管理情報の整合性のチェックに要する手間を大きく増やすことなく、また、管理情報等の書き込みの頻度を大きく増やすことなく、再構築が必要になったときに要する処理と時間を大きく削減することが可能となる。
これにより、総容量が大きく増えた不揮発メモリシステムにおいても、起動時に必要となる処理時間を短くおさえることができ、不揮発メモリシステムのより一層の大容量化が可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態を図面に関連付けて説明する。
【００１５】
図１は、本発明の実施形態に係る不揮発性半導体記憶装置を採用したメモリシステムの構成例を示す図である。
【００１６】
本システム１は、一つ以上（本実施形態では一つ）の不揮発性メモリ２、コントローラ３、およびＣＰＵを含むホストシステム４により形成されている。
【００１７】
不揮発性メモリ２は、一つ以上の不揮発性メモリバンクを有する。不揮発性メモリ２は、たとえばＮＡＮＤ型フラッシュメモリにより構成されている。
不揮発性メモリ２は１つでも複数でも良い。ユーザデータ、管理情報、マップは不揮発性メモリ２に格納される。不揮発性メモリ２上の配置は管理の方法に応じたものとなる。
【００１８】
コントローラ３は、一方の揮発性メモリ３１が不揮発性メモリ２に接続され、他方のロジック部３２がホストインタフェースを介してホストシステム４に接続されている。
コントローラ３内には揮発性メモリ３１とロジック部３２が配置されている。揮発性メモリ３１上には不揮発性メモリ２から読み出したマップや管理情報の一部または全部が展開される。
コントローラ３においては、データを書き換えた際には揮発性メモリ３１上で情報の更新が行われ、その後その情報を不揮発性メモリ２に書き込む。
【００１９】
なお、コントローラ３は、ホストシステム４に内蔵されたものでも良い。その場合、不揮発性メモリ２はホストシステム４に直接接続されることとなる。コントローラ３をホストシステム４に内蔵する場合、ロジック部はホストシステム４に搭載されたＣＰＵ上で動作するソフトウェアであっても良い。この場合には専用のハードウェアが不要となる利点がある。また、揮発性メモリ３１はホストシステム４の持つ揮発メモリと共用でも良い。この場合にはメモリの個数を減らすことができる利点がある。
【００２０】
このような構成を有するメモリシステム１は、フラッシュメモリなどの不揮発性メモリ２の管理において、階層化された管理情報のそれぞれに相対的な新旧を表す情報を付加することで、上位の情報が下位の情報を正しく反映できているかどうかを判別できるように構成されている。
また、ユーザデータ書き込みの前に下位の管理情報を更新することで、上位の管理情報が下位の管理情報を正しく反映できていればシステム全体として管理情報が正しいと判別できるように構成されている。
【００２１】
図２は、本実施形態における階層化された管理情報の相関関係を示す図である。
【００２２】
本実施形態においては、図２に示すように、ユーザデータＵＤを複数の領域ＡＲ１〜ＡＲｍ（図２の例ではｍ＝４）に区切り、区切られたそれぞれの領域に対して論理物理（論物）変換テーブル等の管理情報ＣＩＮＦを設ける。
また、管理情報ＣＩＮＦを管理するマップＭＰを設ける。マップＭＰに管理情報ＣＩＮＦの不揮発性メモリ２上のアドレス等を記録しておき、このマップＭＰを不揮発性メモリ２上の特定の場所などの探索しやすい場所に保存しておく。これにより、起動後にマップおよびそこにアドレスが記録された管理情報の位置を素早く知ることができる。
【００２３】
ユーザデータＵＤの領域の分割方法は、物理的なアドレスや論理的なアドレスなど何でも良い。また、物理的に分割した領域に対する管理情報と論理的に分割した領域に対する管理情報など複数の系統で管理情報を持っても良い。
複数の系統を持つ場合の利点として、論物変換テーブルは論理的な分割の方が、効率が良いが、ブロックの状態を表すテーブルは物理的な分割の方が効率が良いといったように、管理する内容に応じて適切な分割が可能となるということが挙げられる。複数の系統で持った場合には、あるデータの管理情報が正しいかどうかはそのデータにかかわる全ての系統で判断する必要がある。
【００２４】
図３（Ａ），（Ｂ）は、不揮発メモリへの管理情報の格納の仕方とその表現の仕方の例を示す図である。
【００２５】
図３（Ａ）は、たとえばＮＡＮＤフラッシュメモリの１つの消去ブロックを表し、その中に６４個の書き込み単位であるページを含む。１つのページＰＧ内にはデータ部ＤＴＰの他に冗長部ＲＤＮＰがあり、管理情報ＣＩＮＦでは冗長部ＲＤＮＰに新旧を表すＩＤと書込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤを持つ。
ブロックＢＬＫ内はページ番号の若い順にデータが書き込まれ、最後に書かれたページの内容のみが有効である。
これを表現するものとして図３（Ｂ）では有効な情報のみを用いた表現としている。図１２等ではこの図３（Ｂ）の表現を不揮発メモリ内の管理情報の表現として用いる。
【００２６】
図４（Ａ），（Ｂ）から図７（Ａ），（Ｂ）は、ブロックの先頭から順に管理情報を更新していく際の様子とその表現の仕方を示す図である。
【００２７】
図４（Ａ）はブロックの先頭ページであるＰＧ０に管理情報ＣＩＮＦが書かれた状態であり、図４（Ｂ）はそれを表現したものである。
この状態から管理情報ＣＩＮＦを更新するといった場合には、図５（Ａ）に示すように有効なデータのあるＰＧ０の次のページであるＰＧ１に更新すべきデータを書き込む。この際、冗長部ＲＤＮＰにはその時々に応じた情報を書き込む。図５（Ｂ）は更新された状態を表現するもので、ＩＤおよび書込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤが更新されたＰＧ１のものとなっている。
図６（Ａ）および（Ｂ）は図５（Ａ）および（Ｂ）の状態に対して更新を行った様子を示す。図６（Ａ）に示すように有効なデータのあるＰＧ１の次のページであるＰＧ２にデータ部ＤＴＰおよび冗長部ＲＤＮＰを書き込み、更新された状態として図６（Ｂ）のように示す。図７（Ａ）および（Ｂ）はさらに更新を行った様子を示す。
【００２８】
図８（Ａ），（Ｂ）および図９（Ａ），（Ｂ）はブロックの最終ページまで使用された状態の管理情報をさらに更新する際の様子とその表現の仕方を示す図である。
【００２９】
図８（Ａ）は、ブロックの最終ページであるＰＧ６３まで書き込まれ、ページＰＧ６３のデータ部ＤＴＰおよび冗長部ＲＤＮＰが有効となっている状態を示す。図８（Ｂ）は、この状態を示したもので、有効な情報を用いた表現としている。
図９（Ａ）は、図８（Ａ）の状態に対して管理情報の更新を行う様子を示したものである。始めに、使用中のブロックとは別の空きブロックを割当て、その先頭ページであるＰＧ０に更新データおよび冗長部を書き込む。その後、それまで使用していたブロックを消去する。これにより、ページＰＧ０に有効なデータの書かれたブロックが残る。図９（Ｂ）は、更新後の状態を表現したものである。この表現にはブロックがどのページまで使用されたかという情報を含まないため、単純に有効な情報が更新されたものとして他の更新と同様の変化となる。
【００３０】
図１０（Ａ）および（Ｂ）は、不揮発メモリへのマップの格納の仕方とその表現の仕方を示す図である。
【００３１】
図１０（Ａ）は、不揮発性メモリ２内の１つの消去ブロックを表し、その中に６４個の書き込み単位であるページを含む。１つのページＰＧ内にはデータ部ＤＴＰの他に冗長部ＲＤＮＰがあり、マップＭＰでは冗長部ＲＤＮＰに新旧を表すＩＤを持つ。
管理情報ＣＩＮＦは書込み中であるかどうかを表すフィールドを持つが、マップＭＰではその領域への情報の割当ては行わない。ブロックＢＬＫ内はページ番号の若い順にデータが書き込まれ、最後に書かれたページの内容のみが有効である。これを表現する物として図１０（Ｂ）では有効な情報のみを用いた表現としている。こちらは管理情報と違い、データ部ＤＴＰとＩＤのみの表現としている。図１２等ではこの図１０（Ｂ）の表現を不揮発性メモリ２内のマップＭＰの表現として用いる。
【００３２】
図１１（Ａ）および（Ｂ）は、図１０（Ａ）および（Ｂ）の状態に対してマップの更新を行った様子を示す図である。
【００３３】
図１１（Ａ）ではページＰＧ４に有効なデータを含んでおり、その次のページであるＰＧ５に新しいデータを書き込む。その際、冗長部ＲＤＮＰにはその時々に応じた情報を書き込む。
図１１（Ｂ）は更新された状態を表現するもので、ＩＤが更新されたページＰＧ５のものとなっている。
【００３４】
図１２（Ａ）および（Ｂ）は、本実施形態におけるマップおよび管理情報の、起動時における正常な状態の例を示す図である。
【００３５】
不揮発性メモリ２上には管理情報ＣＩＮＦのマップＭＰおよび分割した領域のそれぞれに対応した管理情報ＣＩＮＦが保存されている。管理情報ＣＩＮＦには、新旧を表すＩＤと書き込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤを持つ。
ここでは書込み中の状態を表す場合は０ｘ１、書込み中でない状態を表す場合は０ｘ０とする。また、マップＭＰにも新旧を表すＩＤのフィールドがある。
管理情報ＣＩＮＦやマップＭＰは不揮発性メモリ２上のどこに置いてあっても構わない。マップＭＰのＩＤが管理情報ＣＩＮＦのＩＤ以上の番号を持つ場合は、マップＭＰの情報が管理情報ＣＩＮＦよりも新しく、管理情報ＣＩＮＦの最新の状態を反映していることを示す。
初期状態では、ＩＤは全ての管理情報ＣＩＮＦおよびマップで０ｘ１とし、書き込み中を示すデータを持つ管理情報ＣＩＮＦはなしとする。この状態で、不揮発性メモリ２上の全ての管理情報ＣＩＮＦがデータの最新の状態を反映し、マップＭＰも全ての管理情報ＣＩＮＦの最新の状態を反映していることになる。また、揮発性メモリ３１上にはまだ何もデータを展開していない状態である。
【００３６】
図１３から図１７は、起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す図である。
【００３７】
図１３は領域ＡＲ１に対する書き込み要求が発生した際に、不揮発性メモリ２からマップＭＰおよび管理情報ＣＩＮＦを揮発性メモリ３１へ展開する動作を示す。
マップＭＰを不揮発性メモリ２から揮発性メモリ３１へ展開するのは、起動後最初の１回のみで良い。揮発性メモリ３１上のマップＭＰを参照して、領域ＡＲ１の管理情報ＣＩＮＦを揮発性メモリ３１上に読み出す。この状態では、まだ不揮発性メモリ２上の管理情報ＣＩＮＦおよびマップＭＰはそれぞれユーザデータＵＤおよび管理情報ＣＩＮＦの最新の状態を反映したものとなっている。
【００３８】
図１４は、ユーザデータＵＤの書き換えを実際に行う前に領域ＡＲ１の管理情報ＣＩＮＦに書き込みを行う動作を示す。書き込みを行う管理情報ＣＩＮＦには、ＩＤとしてそれまでのマップＭＰのＩＤである０ｘ１よりも大きな番号として０ｘ２を設定し、書き込み中であるかどうかを示す情報として書き込み中である状態を設定する。
管理情報ＣＩＮＦを書き込んだだけの状態では、実際には管理情報ＣＩＮＦはユーザデータＵＤの最新の状態を反映している。
しかし、管理情報ＣＩＮＦのＩＤがマップＭＰのＩＤより大きくなるため、マップＭＰの情報が管理情報ＣＩＮＦの最新の状態を反映していると保証できなくなり、管理情報に書き込み中の状態を設定しているために管理情報ＣＩＮＦがユーザデータの最新の状態を反映していると保証できなくなる。このため、これ以降に電源遮断が発生した場合は、次回の起動時に管理情報ＣＩＮＦおよびマップＭＰの再構築を行う必要がある。
【００３９】
図１５は、ユーザデータＵＤの書き換えを実際に行っている間の管理情報の関係を示す。ユーザデータの書き換えに合わせて、揮発性メモリ３１上で管理情報ＣＩＮＦやマップＭＰの更新を行う。これにより、不揮発性メモリ２上の管理情報ＣＩＮＦは最新のユーザデータＵＤを反映しなくなる。
【００４０】
図１６は、ユーザデータＵＤの書き換えが終了した後に領域ＡＲ１の管理情報ＣＩＮＦの書き込みを行う動作を示す。ユーザデータＵＤの書き換えが終了した後で、最後に書き込み中でない状態として管理情報ＣＩＮＦの書き込みを行う。このときのＩＤはそれまでと同じとする。
これにより、不揮発性メモリ２上の管理情報ＣＩＮＦは最新のユーザデータを反映したものとなる。ただし、不揮発性メモリ２上のマップＭＰは最新の管理情報ＣＩＮＦを反映したものとはなっていない。
【００４１】
図１７は、管理情報の書き込みが終了した後にマップの書き込みを行う動作を示す。管理情報ＣＩＮＦの書き込みが終了し、不揮発性メモリ２上の管理情報ＣＩＮＦが最新のユーザデータＵＤを反映したものとなってから、マップＭＰを不揮発性メモリ２に書き込む。このときのＩＤは管理情報ＣＩＮＦのＩＤの最大値（ここでは０ｘ２）以上の番号として、同じ０ｘ２を使用する。
これにより、不揮発性メモリ２上のマップが最新の管理情報ＣＩＮＦを反映したものとなる。この状態で、不揮発性メモリ２上のマップのＩＤは不揮発性メモリ２上の全ての管理情報ＣＩＮＦのＩＤの最大値以上の値（ここでは同じ値）となり、不揮発性メモリ２上のマップＭＰが全ての管理情報ＣＩＮＦの最新の状態を反映していると保証することができるようになる。
また、ユーザデータを書き換える前に管理情報ＣＩＮＦを書きこむようにしてあるため、不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の状態を反映していれば、管理情報ＣＩＮＦもユーザデータＵＤの最新の状態を反映していると保証することができ、全ての情報が最新の状態を反映していると保証することができるようになる。
【００４２】
図１８は、領域ＡＲ１に対して書き込みを行う際のマップおよび管理情報が管理情報やユーザデータの最新の状態を反映していると保証できる期間を示す図である。
図１８中、白抜きの矢印は、不揮発性メモリ２上の冗長部ＲＤＮＰにおいて最新の状態を反映していると保証可能な期間を示す。一方、黒の矢印は、不揮発性メモリ２上のマップＭＰ／管理情報ＣＩＮＦが実際に最新の状態を反映している期間を示す。
【００４３】
図１８において、最初に管理情報ＣＩＮＦを書き込んだ時点で（ＳＴ１）、マップＭＰは管理情報ＣＩＮＦの最新の状態を反映していると保証できなくなり、ユーザデータの書き換えを始めた時点で（ＳＴ２）、管理情報ＣＩＮＦはユーザデータの最新の状態を反映しなくなる。
ただし、管理情報ＣＩＮＦについては、書き込み中である状態を設定して書き込みを行った段階で、ユーザデータの最新の状態を反映していると保証することはできなくなる。
ユーザデータの書き換えが終わり、書き込み中でない状態として管理情報ＣＩＮＦを書き込んだ時点で（ＳＴ３）、不揮発性メモリ２上の管理情報ＣＩＮＦはユーザデータＵＤの最新の状態を反映することになり、実際に最新の状態を反映していると保証するようになる。また、マップＭＰを書き込んだ時点で（ＳＴ４）、不揮発性メモリ２上のマップＭＰは管理情報ＣＩＮＦの最新の状態を反映するようになり、実際に最新の状態を反映していると保証するようになる。
【００４４】
図１９および図２０は、図１６の領域ＡＲ１の管理情報を書き込んだ状態から、別の領域として領域ＡＲ２のユーザデータの書き換えを行い、管理情報およびマップの書き込みを行う様子を示す図である。
【００４５】
図１９は、領域ＡＲ１へのユーザデータＵＤの書き換えおよび管理情報ＣＩＮＦの書き込みが終了した後に、マップＭＰの書き込みを行わずに領域ＡＲ２のユーザデータ書き換えを行っている様子を示す。
マップＭＰへの書き込みを行わずに別の領域に対するユーザデータＵＤの書き換えを行うことは可能である。この場合はマップＭＰの書きこみ回数を減らすことにより高速化やマップを書き込む領域の長寿命化といった利点がある。
領域ＡＲ２へのユーザデータＵＤの書き込みを行う前には、領域ＡＲ１のときと同様に管理情報ＣＩＮＦのＩＤをマップＭＰのＩＤより大きな番号（ここでは０ｘ２）とし、書き込み中である状態を設定して書き込みを行う。
また、領域ＡＲ２の他の管理情報ＣＩＮＦの展開や退避も必要に応じて行う。この状態では、領域ＡＲ１および領域ＡＲ２については、管理情報ＣＩＮＦのＩＤがマップＭＰのＩＤより大きい。このために、不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の状態を反映していないことを意味する。領域ＡＲ２については、書き込み中である状態と設定されているために、不揮発性メモリ２上の管理情報ＣＩＮＦがユーザデータＵＤの最新の状態を反映していないことを意味する。
【００４６】
図２０は、領域ＡＲ２へのユーザデータＵＤの書き換え終了後に管理情報ＣＩＮＦおよびマップＭＰの書き込みを行う様子を示す。
領域ＡＲ２へのユーザデータＵＤの書き換えが終了した後で、最後に書き込み中でない状態として管理情報ＣＩＮＦの書き込みを行う。このときのＩＤはそれまでと同じとする。これにより、領域ＡＲ１と同様に不揮発性メモリ２上の管理情報ＣＩＮＦがユーザデータＵＤの最新の状態を反映したものとなる。その後、マップＭＰの書き込みを行うことで、全領域について不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の状態を反映したものとなる。
【００４７】
なお、最終的にマップＭＰを書き込むようにしてあれば、マップＭＰを書き込まずに別の領域ＡＲへの書き込みを行うことはいくらでも可能である。マップＭＰを書き込む頻度を下げれば、その分書き込み時間を短縮し、書き換え回数を削減することができる。
一方で、不揮発性メモリ２上のマップＭＰのうち管理情報ＣＩＮＦの最新の状態を反映していない部分が多くなるため、途中で電源を遮断された場合に再構築を必要とする範囲が広がることになる。
【００４８】
図２１は、領域ＡＲ１と領域ＡＲ２に対して書き込みを行う際のマップおよび管理情報が管理情報やユーザデータの最新の状態を反映していると保証できる期間を示す図である。
【００４９】
図中の矢印の意味は図２０と同じである。管理情報ＣＩＮＦについては、書き込み中である状態を設定してその領域の管理情報を書き込んだ時点から（ＳＴ１１）、ユーザデータを書き変えた後で書き込み中でない状態として管理情報を書き込むまでが（ＳＴ１２〜ＳＴ１６）、ユーザデータの最新の状態を反映していると保証できない期間である。これは、領域ＡＲ１も領域ＡＲ２も同様の期間となる。
マップＭＰについては、その領域の管理情報ＣＩＮＦを書き込んだ時点から最後にマップＭＰを書き込むまでが（ＳＴ１７）、管理情報ＣＩＮＦの最新の状態を反映していると保証できない期間となる。こちらは、領域ＡＲ１についての書き換えが終わって領域ＡＲ２についての書き換えを開始した後でも、領域ＡＲ１についてマップが管理情報の最新の状態を反映していると保証はできない。
【００５０】
図２２および図２３は、ユーザデータの書き換えを行うがマップの書き込みが不要となる場合を示す図である。
【００５１】
図２２は、図１３の初期状態から、領域ＡＲ１に対しユーザデータＵＤの書き換えを行っているときの状態を示す。ただし、管理情報ＣＩＮＦの書き込みに対してマップＭＰで管理する要素に変更が入らず、実際には不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の情報を反映しているものとする。
【００５２】
図２３は、図２２の状態から管理情報の書き込みのみによって不揮発性メモリ２上のマップＭＰおよび管理情報ＣＩＮＦが、管理情報ＣＩＮＦやユーザデータＵＤの最新の状態を反映する様子を示す。
図２２の状態に対し、最後の管理情報ＣＩＮＦの書き込みの際にＩＤをマップＭＰと同じもの（ここでは０ｘ１）とし、書き込み中でない状態として書き込むことによって、不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の状態を反映したものと判断できるようにしている。
ただし、この最後の管理情報ＣＩＮＦの書き込みによってもマップＭＰを変更する必要が無い場合に限られる。これにより、マップの書き込みを純粋に削減することが可能となる。
【００５３】
図２４は、起動時に行う管理情報およびマップのチェックと再構築のフローを示す図である。
【００５４】
起動時には、全管理領域についてチェックを行うことになる。全管理領域についてマップＭＰのＩＤと管理情報のＩＤを比較し（ＳＴ２１〜ＳＴ２７）、マップＭＰのＩＤが管理情報ＣＩＮＦのＩＤ以上であればその領域についてはマップＭＰが最新の管理情報ＣＩＮＦを反映し、管理情報ＣＩＮＦが最新のユーザデータＵＤを反映していると判断することができる。この場合には、その領域のマップや管理情報の再構築は不要である（ＳＴ２３）。
マップのＩＤが管理情報のＩＤより小さい場合は、管理情報の書き込み後に更新の必要なマップを書きこんでいない状態で電源が遮断されたことになる。その場合は管理情報の書き込み中であるかどうかを示すフィールドをチェックし（ＳＴ２４）、書き込み中であると設定されていた場合はその領域についてユーザデータを実際に用いて管理情報の再構築を行う必要がある（ＳＴ２５）。
また、書き込み中であると設定されていた場合もそうでない場合も、その領域についてマップの再構築を行う必要がある（ＳＴ２６）。
【００５５】
図２５は、ある時点で電源遮断が起こった場合の、次の起動時の不揮発メモリ上の管理情報およびマップを示す図である。
【００５６】
この状態では、マップＭＰのＩＤが０ｘ１、領域ＡＲ１の管理情報ＣＩＮＦのＩＤが０ｘ２で書き込み中でない状態、領域ＡＲ２の管理情報ＣＩＮＦのＩＤが０ｘ２で書き込み中であると設定された状態、それ以外の領域ＡＲは管理情報ＣＩＮＦのＩＤが０ｘ１で書き込み中でない状態であるとする。
この場合、領域ＡＲ１についてはマップＭＰの当該領域に対応する部分の再構築が必要であり、領域ＡＲ２については管理情報ＣＩＮＦの再構築とマップＭＰの当該領域に対応する部分の再構築が必要である。
それ以外の領域については管理情報ＣＩＮＦの再構築もマップＭＰの当該領域に対応する部分の再構築も不要である。
なお、領域ＡＲ１と領域ＡＲ２については、マップＭＰが管理情報ＣＩＮＦの最新の状態を反映していないため、マップＭＰによって求められた管理情報ＣＩＮＦの位置が正しくない場合がある。その場合には不揮発性メモリ２上から管理情報ＣＩＮＦを探し出すことも必要となる。
【００５７】
図２６から図３４は、各領域に管理情報が複数存在する場合の例を示す図である。
【００５８】
図２６は、揮発性メモリ３１上および不揮発性メモリ２上の各領域に複数の管理情報ＣＩＮＦが存在する様子を示したものである。ここで、複数の管理情報ＣＩＮＦのうち一つを代表の管理情報として、ＩＤおよび書込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤを持たせ、それ以外の管理情報ＣＩＮＦはＩＤおよび書込み中であるかどうかを表すフィールドを設けない。
【００５９】
図２７（Ａ）および（Ｂ）は、代表でない管理情報ＣＩＮＦの不揮発性メモリ２への格納の仕方とその表現の仕方を示す。
図２７（Ａ）は、不揮発性メモリ２内の１つの消去ブロックを表し、その中に６４個の書き込み単位であるページを含む。１つのページＰＧ内にはデータ部ＤＴＰの他に冗長部ＲＤＮＰがあるが、代表以外の管理情報ＣＩＮＦではＩＤや書込み中であるかどうかを表すフィールドへの情報の割当ては行わない。
ブロックＢＬＫ内はページ番号の若い順にデータが書き込まれ、最後に書かれたページの内容のみが有効である。これを表現する物として図２７（Ｂ）では有効な情報のみを用いた表現としている。代表の管理情報ＣＩＮＦと違い、データ部のみの表現としている。図２９等ではこの図２７の表現を不揮発メモリ内の代表以外の管理情報の表現として用いる。
【００６０】
図２８（Ａ）および（Ｂ）は、図２７（Ａ）および（Ｂ）の状態に対して代表以外の管理情報の更新を行った様子を示す。図２７（Ａ）ではページＰＧ４に有効なデータを含んでおり、図２８（Ａ）に示すように、その次のページであるＰＧ５に新しいデータを書き込む。図２８（Ｂ）は更新された状態を表現するものであるが、冗長部に有効な情報を含まないために表現は変わらない。
【００６１】
図２９は、一つの領域に２つの管理情報ＣＩＮＦを持つ実施形態におけるマップＭＰおよび管理情報ＣＩＮＦの、起動時における正常な状態の例を示す。
不揮発性メモリ２上には管理情報ＣＩＮＦのマップＭＰおよび分割した領域のそれぞれに対応した複数の管理情報ＣＩＮＦが保存されている。
各領域に一つの代表となる管理情報ＣＩＮＦには、新旧を表すＩＤと書き込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤを持つ。ここでは書込み中の状態を表す場合は０ｘ１、書込み中でない状態を表す場合は０ｘ０とする。
【００６２】
代表以外の管理情報ＣＩＮＦにはＩＤおよび書込み中であるかどうかを表すフィールドは持たない。また、マップＭＰにも新旧を表すＩＤのフィールドがある。管理情報ＣＩＮＦやマップＭＰは不揮発性メモリ２上のどこに置いてあっても構わない。マップＭＰのＩＤが管理情報ＣＩＮＦのＩＤ以上の番号を持つ場合は、マップＭＰの情報が管理情報ＣＩＮＦよりも新しく、管理情報ＣＩＮＦの最新の状態を反映していることを示す。
初期状態では、ＩＤは全ての代表となる管理情報ＣＩＮＦおよびマップＭＰで０ｘ１とし、書き込み中を示すデータを持つ管理情報ＣＩＮＦはなしとする。この状態で、不揮発メモリ上２の全ての管理情報ＣＩＮＦがデータの最新の状態を反映し、マップＭＰも全ての管理情報ＣＩＮＦの最新の状態を反映していることになる。また、揮発性メモリ３１上にはまだ何もデータを展開していない状態である。
【００６３】
図３０から図３４は、起動後最初に領域１に対して書き込みが行われ、最新の状態を反映するように不揮発性メモリ２上の管理情報ＣＩＮＦおよびマップＭＰを更新するまでを示す。
【００６４】
図３０は、領域ＡＲ１に対する書き込み要求が発生した際に、不揮発性メモリ２からマップＭＰおよび代表となる管理情報ＣＩＮＦを揮発性メモリ３１へ展開する動作を示す。
マップＭＰを不揮発性メモリ２から揮発性メモリ３１へ展開するのは、起動後最初の１回のみで良い。揮発性メモリ３１上のマップを参照して、領域ＡＲ１の代表となる管理情報ＣＩＮＦを揮発性メモリ３１上に読み出す。
この状態では、まだ不揮発性メモリ２上の管理情報ＣＩＮＦおよびマップＭＰはそれぞれユーザデータＵＤおよび管理情報ＣＩＮＦの最新の状態を反映したものとなっている。
【００６５】
図３１は、ユーザデータＵＤの書き換えを実際に行う前に領域ＡＲ１の代表となる管理情報ＣＩＮＦに書き込みを行う動作を示す。
書き込みを行う管理情報ＣＩＮＦには、ＩＤとしてそれまでのマップＭＰのＩＤである０ｘ１よりも大きな番号として０ｘ２を設定し、書き込み中であるかどうかを示す情報として書き込み中である状態を設定する。
代表となる管理情報ＣＩＮＦを書き込んだだけの状態では、実際には管理情報ＣＩＮＦはユーザデータＵＤの最新の状態を反映しているが、管理情報ＣＩＮＦのＩＤがマップＭＰのＩＤより大きくなるため、マップＭＰの情報が管理情報ＣＩＮＦの最新の状態を反映していると保証できなくなり、代表となる管理情報ＣＩＮＦに書き込み中の状態を設定しているために管理情報ＣＩＮＦがユーザデータの最新の状態を反映していると保証できなくなる。
このため、これ以降に電源遮断が発生した場合は、次回の起動時に管理情報ＣＩＮＦおよびマップＭＰの再構築を行う必要がある。
【００６６】
図３２は、ユーザデータＵＤの書き換えを実際に行っている間の管理情報ＣＩＮＦの関係を示す。
ユーザデータＵＤの書き換えに合わせて、揮発性メモリ３１上で管理情報ＣＩＮＦやマッＭＰプの更新を行う。これにより、不揮発性メモリ２上の管理情報ＣＩＮＦは最新のユーザデータＵＤを反映しなくなる。
代表となる管理情報以外の管理情報ＣＩＮＦについてはユーザデータと同様に自由に不揮発性メモリ２を書き換えて良い。
【００６７】
図３３は、ユーザデータＵＤの書き換えが終了した後に領域ＡＲ１の代表となる管理情報ＣＩＮＦの書き込みを行う動作を示す。
ユーザデータＵＤの書き換えが終了し、同じ領域の他の全ての管理情報ＣＩＮＦを不揮発性メモリ２上に退避した後で、最後に書き込み中でない状態として代表となる管理情報ＣＩＮＦの書き込みを行う。このときのＩＤはそれまでと同じとする。
これにより、不揮発性メモリ２上の管理情報ＣＩＮＦは最新のユーザデータＵＤを反映したものとなる。ただし、不揮発性メモリ２上のマップＭＰは最新の管理情報ＣＩＮＦを反映したものとはなっていない。
【００６８】
図３４は、管理情報ＣＩＮＦの書き込みが終了した後にマップＭＰの書き込みを行う動作を示す。
管理情報ＣＩＮＦの書き込みが終了し、不揮発性メモリ２上の管理情報ＣＩＮＦが最新のユーザデータＵＤを反映したものとなってから、マップＭＰを不揮発性メモリ２に書き込む。このときのＩＤは代表となる管理情報ＣＩＮＦのＩＤの最大値（ここでは０ｘ２）以上の番号として、同じ０ｘ２を使用する。
これにより、不揮発性メモリ２上のマップＭＰが最新の管理情報ＣＩＮＦを反映したものとなる。この状態で、不揮発性メモリ２上のマップＭＰのＩＤは不揮発性メモリ２上の全ての代表となる管理情報ＣＩＮＦのＩＤの最大値以上の値（ここでは同じ値）となり、不揮発性メモリ２上のマップＭＰが全ての管理情報ＣＩＮＦの最新の状態を反映していると保証することができるようになる。
また、ユーザデータＵＤを書き換える前に代表となる管理情報ＣＩＮＦを書きこむようにしてあるため、不揮発性メモリ２上のマップＭＰが管理情報ＣＩＮＦの最新の状態を反映していれば、管理情報ＣＩＮＦもユーザデータＵＤの最新の状態を反映していると保証することができ、全ての情報が最新の状態を反映していると保証することができるようになる。
【００６９】
図３５は、揮発メモリに十分な大きさがあり、複数の領域の管理情報を展開しておける場合の例を示す図である。
【００７０】
揮発性メモリ３１が複数の領域の管理情報ＣＩＮＦを展開しておけるだけの大きさを持つ場合、管理情報ＣＩＮＦに書き込み中である状態を設定して書き込み、書き込み中としての扱いをする領域を複数持つことが可能である。
この場合、複数の領域を行ったり来たりしながら（アクセスしながら）書き込みが行われるようなときに管理情報ＣＩＮＦの展開や退避を毎回行わなくても済むという利点がある。
複数の領域の管理情報ＣＩＮＦを展開する場合には、マップＭＰの書き込みを行うときには全ての領域で書き込み中でない状態の管理情報ＣＩＮＦが書きこまれた状態としてから、全管理情報のＩＤの最大値以上のＩＤを持つマップを書き込む必要がある。
これにより、管理情報ＣＩＮＦのＩＤがマップＭＰのＩＤ以下である領域は、不揮発性メモリ２上のマップＭＰも管理情報ＣＩＮＦも最新の状態を反映しているとすることができる。
【００７１】
図３６は、領域の中をさらに複数のサブ領域に細分化した場合の例を示す図である。
【００７２】
管理情報ＣＩＮＦも含めてサブ領域に細分化するが、管理情報ＣＩＮＦに対してつけるＩＤおよび書き込み中であるかどうかを表すフィールドＩＤＦＬＤ，ＷＲＦＬＤは細分化する前の領域に対して一つずつつけるようにする。
ただし、書き込み中であるかどうかを表すフィールドＷＲＦＬＤについてはサブ領域の中のどれが書き込み中であるのかをわかるような形にする。
図３６では４つのサブ領域のうち書き込み中の扱いをするのは１つのみとして、そのサブ領域の番号を用いて書き込み中であることを示すものとしている。サブ領域の個数分のフラグを用意して、独立して書き込み中かそうでないかを表せるようにしても良い。
サブ領域に細分化することによって、管理情報ＣＩＮＦについてユーザデータＵＤの最新の状態を反映しているかどうかをサブ領域ごとに判別することができるようになり、管理情報ＣＩＮＦの再構築が必要になった場合の対象範囲を狭めることができるようになる。
これにより、ＩＤ比較によるマップおよび管理情報ＣＩＮＦの整合性の判別の手間を増やすことなく、管理情報ＣＩＮＦの再構築に要する時間を短縮することができるようになる。サブ領域の書き込み中フラグについて、サブ領域ごとに独立して表せるようにした場合は、複数のサブ領域を書き込み中の扱いにすることが可能となる利点があるが、その分だけ再構築対象となるサブ領域が増える可能性がある。
【００７３】
図３７から図４０は、ＩＤを小さな値にリセットする手順を示す図である。
【００７４】
図３７は、ある段階での管理情報ＣＩＮＦおよびマップＭＰの状態を示す。この例ではマップＭＰのＩＤは０ｘＦＥ、領域ＡＲ１のＩＤは０ｘＦＥ、領域ＡＲ２のＩＤは０ｘＦ０、領域ＡＲｍのＩＤは０ｘ５８とする。ＩＤは管理情報ＣＩＮＦおよびマップＭＰの書き込みに伴い次第に大きな値となって行くが、不揮発性メモリ２上には有限の範囲の値しか記録することはできない。したがって、ある程度大きくなった段階で値を小さなものにリセットする必要が生じる。
【００７５】
図３８は、マップに特殊な最小値、０ｘ０のＩＤをつけて書き込みをした状態を示す。この時点で、不揮発性メモリ２上のマップＭＰの内容は管理情報ＣＩＮＦの最新の状態を反映しているが、ＩＤとしてはマップＭＰの内容を保証できない状態になっているので、この段階で電源遮断等が発生した場合には全ての領域についてマップＭＰの再構築が必要となる。
【００７６】
図３９は、全領域の管理情報ＣＩＮＦにＩＤとして０ｘ１をつけて書き込みをした状態を示す。
管理情報ＣＩＮＦの書き込みをしているので、マップＭＰの更新が必要な場合もあるため、不揮発性メモリ２上のマップＭＰは管理情報ＣＩＮＦの最新の状態を反映しているとは限らなくなる。しかし、既にマップＭＰを０ｘ０のＩＤで書き込んでいるため、最新の状態を反映していると誤認識することはない。
【００７７】
図４０は、マップＭＰに管理情報ＣＩＮＦのＩＤの最大値と同じ０ｘ１をつけて書き込みをした状態を示す。
不揮発性メモリ２上のマップは管理情報の最新の状態を反映している。これにより、ＩＤの小さな値へのリセットが完了したことになる。
【００７８】
図４１から図４４は、図３７から図４０のそれぞれにおいてマップおよび領域ＡＲ２の管理情報が不揮発メモリ上でどのように更新されるかを表した図である。
【００７９】
図４１は、図３７の状態における不揮発性メモリ２上のマップＭＰおよび領域ＡＲ２の管理情報ＣＩＮＦの様子を示したものである。
マップＭＰおよび管理情報ＣＩＮＦはそれぞれ別のブロックの途中のページに有効なデータが書かれた状態である。
【００８０】
図４２は、図３８の状態における不揮発性メモリ２上のマップおよび領域ＡＲ２の管理情報ＣＩＮＦの様子を示したものである。
図４１の状態に対してマップをＩＤ＝０ｘ０で更新することになるが、不揮発性メモリ２上ではＩＤ＝０ｘＦＥの書かれたページの次のページにＩＤ＝０ｘ０で書き込みを行う。
【００８１】
図４３は、図３９の状態における不揮発メモリ上のマップおよび領域ＡＲ２の管理情報ＣＩＮＦの様子を示したものである。
図４２の状態に対して各管理情報ＣＩＮＦをＩＤ＝０ｘ１で更新することになる。たとえば領域ＡＲ２については、不揮発性メモリ２上ではＩＤ＝０ｘＦ０の書かれたページの次のページにＩＤ＝０ｘ１で書き込みを行う。
【００８２】
図４４は、図４０の状態における不揮発性メモリ２上のマップＭＰおよび領域ＡＲ２の管理情報ＣＩＮＦの様子を示したものである。
図４３の状態に対してマップをＩＤ＝０ｘ１で更新することになるが、不揮発性メモリ２上ではＩＤ＝０ｘ０の書かれたページの次のページにＩＤ＝０ｘ１で書き込みを行う。
【００８３】
以上説明したように、本実施形態によれば、管理情報ＣＩＮＦを不揮発性メモリ２上に保存する不揮発メモリシステム１において、管理情報ＣＩＮＦの状態を表す手段の改良により、起動時に必要とされる管理情報ＣＩＮＦの整合性のチェックに要する手間を大きく増やすことなく、また、管理情報等ＣＩＮＦの書き込みの頻度を大きく増やすことなく、再構築が必要になったときに要する処理と時間を大きく削減することが可能となる。
これにより、総容量が大きく増えた不揮発メモリシステム１においても、起動時に必要となる処理時間を短くおさえることができ、不揮発メモリシステムのより一層の大容量化が可能となる。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施形態に係る不揮発性半導体記憶装置を採用したメモリシステムの構成例を示す図である。
【図２】本実施形態における階層化された管理情報の相関関係を示す図である。
【図３】不揮発メモリへの管理情報の格納の仕方とその表現の仕方の例を示す図であって、たとえばＮＡＮＤフラッシュメモリの１つの消去ブロックを表す図である。
【図４】ブロックの先頭から順に管理情報を更新していく際の様子とその表現の仕方を示す第１図である。
【図５】ブロックの先頭から順に管理情報を更新していく際の様子とその表現の仕方を示す第２図である。
【図６】ブロックの先頭から順に管理情報を更新していく際の様子とその表現の仕方を示す第３図である。
【図７】ブロックの先頭から順に管理情報を更新していく際の様子とその表現の仕方を示す第４図である。
【図８】ブロックの最終ページまで使用された状態の管理情報をさらに更新する際の様子とその表現の仕方を示す第１図である。
【図９】はブロックの最終ページまで使用された状態の管理情報をさらに更新する際の様子とその表現の仕方を示す第２図である。
【図１０】不揮発メモリへのマップの格納の仕方とその表現の仕方を示す図である。
【図１１】図１０の状態に対してマップの更新を行った様子を示す図である。
【図１２】本実施形態におけるマップおよび管理情報の、起動時における正常な状態の例を示す図である。
【図１３】起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す第１図である。
【図１４】起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す第２図である。
【図１５】起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す第３図である。
【図１６】起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す第４図である。
【図１７】起動後最初に領域ＡＲ１に対して書き込みが行われ、最新の状態を反映するように不揮発メモリ上の管理情報およびマップを更新するまでを示す第５図である。
【図１８】領域ＡＲ１に対して書き込みを行う際のマップおよび管理情報が管理情報やユーザデータの最新の状態を反映していると保証できる期間を示す図である。
【図１９】図１６の領域ＡＲ１の管理情報を書き込んだ状態から、別の領域として領域ＡＲ２のユーザデータの書き換えを行い、管理情報およびマップの書き込みを行う様子を示す第１図である。
【図２０】図１６の領域ＡＲ１の管理情報を書き込んだ状態から、別の領域として領域ＡＲ２のユーザデータの書き換えを行い、管理情報およびマップの書き込みを行う様子を示す第２図である。
【図２１】領域ＡＲ１と領域ＡＲ２に対して書き込みを行う際のマップおよび管理情報が管理情報やユーザデータの最新の状態を反映していると保証できる期間を示す図である。
【図２２】ユーザデータの書き換えを行うがマップの書き込みが不要となる場合を示す第１図である。
【図２３】ユーザデータの書き換えを行うがマップの書き込みが不要となる場合を示す第２図である。
【図２４】起動時に行う管理情報およびマップのチェックと再構築のフローを示す図である。
【図２５】ある時点で電源遮断が起こった場合の、次の起動時の不揮発メモリ上の管理情報およびマップを示す図である。
【図２６】各領域に管理情報が複数存在する場合の例を示す第１図である。
【図２７】各領域に管理情報が複数存在する場合の例を示す第２図である。
【図２８】各領域に管理情報が複数存在する場合の例を示す第３図である。
【図２９】各領域に管理情報が複数存在する場合の例を示す第４図である。
【図３０】各領域に管理情報が複数存在する場合の例を示す第５図である。
【図３１】各領域に管理情報が複数存在する場合の例を示す第６図である。
【図３２】各領域に管理情報が複数存在する場合の例を示す第７図である。
【図３３】各領域に管理情報が複数存在する場合の例を示す第８図である。
【図３４】各領域に管理情報が複数存在する場合の例を示す第９図である。
【図３５】揮発メモリに十分な大きさがあり、複数の領域の管理情報を展開しておける場合の例を示す図である
【図３６】領域の中をさらに複数のサブ領域に細分化した場合の例を示す図である。
【図３７】ＩＤを小さな値にリセットする手順を示す第１図である。
【図３８】ＩＤを小さな値にリセットする手順を示す第２図である。
【図３９】ＩＤを小さな値にリセットする手順を示す第３図である。
【図４０】ＩＤを小さな値にリセットする手順を示す第４図である。
【図４１】図３７から図４０のそれぞれにおいてマップおよび領域ＡＲ２の管理情報が不揮発メモリ上でどのように更新されるかを表した第１図である。
【図４２】図３７から図４０のそれぞれにおいてマップおよび領域ＡＲ２の管理情報が不揮発メモリ上でどのように更新されるかを表した第２図である。
【図４３】図３７から図４０のそれぞれにおいてマップおよび領域ＡＲ２の管理情報が不揮発メモリ上でどのように更新されるかを表した第３図である。
【図４４】図３７から図４０のそれぞれにおいてマップおよび領域ＡＲ２の管理情報が不揮発メモリ上でどのように更新されるかを表した第４図である。
【符号の説明】
【００８５】
１、１Ａ・・・メモリシステム、２・・・不揮発性メモリ、３・・・コントローラ、３１・・・揮発性メモリ、３２・・・ロジック部、４・・・ホストシステム、ＣＩＮＦ・・・管理情報、ＭＰ・・・マップ。
【図１】
2008191930.tif 000003
【図２】
2008191930.tif 000004
【図３】
2008191930.tif 000005
【図４】
2008191930.tif 000006
【図５】
2008191930.tif 000007
【図６】
2008191930.tif 000008
【図７】
2008191930.tif 000009
【図８】
2008191930.tif 000010
【図９】
2008191930.tif 000011
【図１０】
2008191930.tif 000012
【図１１】
2008191930.tif 000013
【図１２】
2008191930.tif 000014
【図１３】
2008191930.tif 000015
【図１４】
2008191930.tif 000016
【図１５】
2008191930.tif 000017
【図１６】
2008191930.tif 000018
【図１７】
2008191930.tif 000019
【図１８】
2008191930.tif 000020
【図１９】
2008191930.tif 000021
【図２０】
2008191930.tif 000022
【図２１】
2008191930.tif 000023
【図２２】
2008191930.tif 000024
【図２３】
2008191930.tif 000025
【図２４】
2008191930.tif 000026
【図２５】
2008191930.tif 000027
【図２６】
2008191930.tif 000028
【図２７】
2008191930.tif 000029
【図２８】
2008191930.tif 000030
【図２９】
2008191930.tif 000031
【図３０】
2008191930.tif 000032
【図３１】
2008191930.tif 000033
【図３２】
2008191930.tif 000034
【図３３】
2008191930.tif 000035
【図３４】
2008191930.tif 000036
【図３５】
2008191930.tif 000037
【図３６】
2008191930.tif 000038
【図３７】
2008191930.tif 000039
【図３８】
2008191930.tif 000040
【図３９】
2008191930.tif 000041
【図４０】
2008191930.tif 000042
【図４１】
2008191930.tif 000043
【図４２】
2008191930.tif 000044
【図４３】
2008191930.tif 000045
【図４４】
2008191930.tif 000046