(57)【要約】【課題】メモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるメモリシステムを提供する。【解決手段】揮発性の第１の記憶部と、不揮発性の第２の記憶部と、データ転送とデータ管理を行うコントローラと、を備え、第２の記憶部は、起動時に必要な固定情報と固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、コントローラは、固定情報の更新時に、固定情報格納領域それぞれ対して、消去回数識別情報の退避処理、固定情報格納領域の消去処理、新たな固定情報の書込み処理、退避した消去回数識別情報の更新および新たな固定情報が書込まれた固定情報格納領域への保存処理を行い、起動時に、多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、固定情報の更新時に瞬断が発生したと判定する。【選択図】        図２２
2009211218.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の第１の記憶部と、
不揮発性の第２の記憶部と、
前記第１の記憶部を介してホスト装置と前記第２の記憶部との間のデータ転送を行うとともに、起動時に前記第２の記憶部に記憶された前記データの格納位置を含む管理情報を前記第１の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第１および第２の記憶部でのデータ管理を行うコントローラと、
を備え、
前記第２の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、
前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステム。
【請求項２】
起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、
前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、
メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置を用いて構成されるメモリシステムと、このメモリシステムでの瞬断判定方法に関する。
【背景技術】
【０００２】
ハードディスク装置を２次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる（たとえば、特許文献１参照）。このような処理を行うことで、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。
【０００３】
ところで、近年では、不揮発性半導体記憶装置であるＮＡＮＤ型フラッシュメモリの大容量化が進行し、このＮＡＮＤ型フラッシュメモリを有するメモリシステムを２次記憶装置とするパーソナルコンピュータが製品化されている。しかし、このようなＮＡＮＤ型フラッシュメモリに格納されるデータのバックアップに対して、ハードディスク装置に格納されるデータのバックアップの場合と同様に上記特許文献１の技術を適用することはできない。それは、ＮＡＮＤ型フラッシュメモリの大容量化には、１つのメモリセルに２ビット以上の複数のデータ（多値データ）を記憶することが可能な多値メモリ技術が使用されているからである（たとえば、特許文献２参照）。
【０００４】
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、１つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
【０００５】
たとえば、４値を記憶することができる多値メモリでは、１つのメモリセルに下位ページと上位ページを設け、それぞれのページに１ビットのデータを書込むことによって、２ビット（４値）を記憶するものがある。このような多値メモリのデータ書込方法は、第１のメモリセルの下位ページにデータを書込んだ後、隣接メモリセル（第２のメモリセル）の下位ページにデータを書込む。そして、この隣接メモリセルへの書込み後に、第１のメモリセルの上位ページにデータを書込んでいる。
【０００６】
しかし、このような多値メモリでは、先に書込んだメモリセルの閾値電圧が、このメモリセルと隣接し、後に書込まれるメモリセルの閾値電圧によって変動してしまう。このため、多値メモリでは、あるメモリセルの第２ページの書き込み中に、たとえば電源の異常遮断など（以下、瞬断という）によって書込みが中断されると、先に書込んだ同じメモリセルの第１ページのデータも破壊される下位ページデータ破壊が生じる可能性がある。
【０００７】
そのため、ＮＡＮＤ型フラッシュメモリを２次記憶装置とするパーソナルコンピュータにおいて、たとえば特許文献１のログをあるメモリセルの第２ページに書込み中に瞬断によって下位ページデータ破壊が生じてしまった場合には、書込み中のデータのほかに、この書込み中のメモリセルの第１ページのデータまで破壊されてしまい、データを復元することができなくなってしまうという問題点があった。つまり、ＮＡＮＤ型フラッシュメモリを有するメモリシステムを２次記憶装置としたパーソナルコンピュータに対して特許文献１の技術を用いてバックアップをとる方法では、パーソナルコンピュータの状態を瞬断前の状態に復元するには不十分であるという問題点があった。
【０００８】
特に、瞬断が発生した場合には、メモリシステムを次回起動する際に、瞬断が発生する前の最新の状態まで復帰させる必要があるが、従来の方法では、瞬断が発生したか否かを判定する方法が提案されていなかった。
【０００９】
【特許文献１】米国特許出願公開第２００６／０２２４６３６号明細書
【特許文献２】特開２００４−１９２７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、多値メモリを使用したＮＡＮＤ型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるメモリシステムと瞬断判定方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様によれば、揮発性の第１の記憶部と、不揮発性の第２の記憶部と、前記第１の記憶部を介してホスト装置と前記第２の記憶部との間のデータ転送を行うとともに、起動時に前記第２の記憶部に記憶された前記データの格納位置を含む管理情報を前記第１の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第１および第２の記憶部でのデータ管理を行うコントローラと、を備え、前記第２の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステムが提供される。
【００１２】
また、本発明の一態様によれば、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法が提供される。
【発明の効果】
【００１３】
本発明によれば、多値メモリを使用したＮＡＮＤ型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、本発明にかかるメモリシステムと瞬断判定方法の最良な実施の形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【００１５】
このメモリシステムは、不揮発性半導体記憶装置を含み、たとえば、パーソナルコンピュータなどのホスト装置の２次記憶装置（ＳＳＤ：Solid  State  Drive）として使用され、ホスト装置から書込要求が出されたデータを記憶し、またホスト装置から読出要求のあったデータを読出してホスト装置に出力する機能を有する。図１は、本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。このメモリシステム１０は、第１の記憶部としてのＤＲＡＭ（Dynamic  Random  Access  Memory）１１と、第２の記憶部としてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）１２と、電源回路１３と、コントローラとしてのドライブ制御部１４と、を備える。
【００１６】
ＤＲＡＭ１１は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としては、ホスト装置から書込要求があったデータをＮＡＮＤメモリ１２に書込む前に一時的に保存したり、ホスト装置から読出要求があったデータをＮＡＮＤメモリ１２から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＤＲＡＭ１１およびＮＡＮＤメモリ１２に記憶されるデータの格納位置を管理するための管理情報を格納するために使用される。さらに、作業領域用の記憶部としては、管理情報を復元する際に用いるログの展開時などに使用される。
【００１７】
ＮＡＮＤメモリ１２は、データ保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータを記憶したり、ＤＲＡＭ１１で管理される管理情報をバックアップ用に記憶したり、メモリシステム１０の管理プログラム（ファームウェア）を保存したりする。この図１では、ＮＡＮＤメモリ１２が４つのチャネル１２０Ａ〜１２０Ｄによって構成されている場合が示されている。１つのチャネル１２０Ａ〜１２０Ｄは、所定のサイズの記憶容量を有する８個のチップ１２２が１つにまとめられたパッケージ１２１を２つ含んでいる。また、各チャネル１２０Ａ〜１２０Ｄは、ドライブ制御部１４とバス１５を介して接続されている。
【００１８】
電源回路１３は、外部電源を受け、この外部電源を用いてメモリシステム１０の各部に供給するための複数の内部電源を生成する。また、電源回路１３は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号を生成する。このパワーオンリセット信号は、ドライブ制御部１４に送られる。
【００１９】
ドライブ制御部１４は、ＤＲＡＭ１１とＮＡＮＤメモリ１２を制御する。詳細は後述するが、たとえば、電源回路１３からのパワーオンリセット信号を受信すると管理情報の復元処理または管理情報の保存処理を行う。また、ドライブ制御部１４は、ＡＴＡインタフェース（図中では、ＡＴＡ  Ｉ／Ｆと表記）を介して、ホスト装置との間でデータを送受信し、ＲＳ２３２Ｃインタフェース（図中では、ＲＳ２３２Ｃ  Ｉ／Ｆと表記）を介して、デバッグ用機器との間でデータを送受信する。さらに、ドライブ制御部１４は、メモリシステム１０の外部に設けられる状態表示用ＬＥＤを制御するための制御信号を出力する。
【００２０】
ここで、ＮＡＮＤメモリ１２の構成について説明する。ＮＡＮＤメモリ１２は、データ消去の単位であるブロックを基板上に複数配列して構成される。図２は、ＮＡＮＤメモリに含まれる１個のブロックの構成の一例を示す回路図である。なお、この図２において、紙面上の左右方向をＸ方向とし、紙面上のＸ方向に垂直な方向をＹ方向としている。
【００２１】
ＮＡＮＤメモリ１２の各ブロックＢＬＫは、Ｘ方向に沿って順に配列された（ｍ＋１）個（ｍは０以上の整数）のＮＡＮＤストリングＮＳを備えている。各ＮＡＮＤストリングＮＳは、Ｙ方向に隣接するメモリセルトランジスタＭＴ間で拡散領域（ソース領域またはドレイン領域）を共有してＹ方向に直列に接続された（ｎ＋１）個（ｎは０以上の整数）のメモリセルトランジスタＭＴ０〜ＭＴｎと、この（ｎ＋１）個のメモリセルトランジスタＭＴ０〜ＭＴｎの列の両端に配置される選択トランジスタＳＴ１，ＳＴ２と、を有する。
【００２２】
各メモリセルトランジスタＭＴ０〜ＭＴｎは、半導体基板上に形成された積層ゲート構造を有する電界効果型トランジスタから構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタＭＴ０〜ＭＴｎは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じて２ビット以上のデータを記憶することができる多値メモリである。なお、以下に示す実施の形態では、メモリセルトランジスタＭＴは４値を記憶することができる多値メモリである場合を例に挙げて説明するが、４値よりも大きな値を記憶することができる多値メモリであってもよい。
【００２３】
ＮＡＮＤストリングＮＳを構成するメモリセルトランジスタＭＴ０〜ＭＴｎの制御ゲート電極には、それぞれワード線ＷＬ０〜ＷＬｎが接続されており、また各ＮＡＮＤストリングＮＳ中のメモリセルトランジスタＭＴｉ（ｉ＝０〜ｎ）間は、同一のワード線ＷＬｉ（ｉ＝０〜ｎ）によって共通接続されている。つまり、ブロックＢＬＫ内において同一行にあるメモリセルトランジスタＭＴｉの制御ゲート電極は、同一のワード線ＷＬｉに接続される。この同一のワード線ＷＬｉに接続される（ｍ＋１）個のメモリセルトランジスタＭＴｉは１ページとして取り扱われ、ＮＡＮＤメモリ１２では、このページ単位でデータの書込みと読出しが行われる。
【００２４】
１つのブロックＢＬＫ内の（ｍ＋１）個の選択トランジスタＳＴ１のドレインにはそれぞれビット線ＢＬ０〜ＢＬｍが接続され、ゲートには選択ゲート線ＳＧＤが共通接続されている。また、選択トランジスタＳＴ１のソースはメモリセルトランジスタＭＴ０のドレインと接続されている。同様に、１つのブロックＢＬＫ内の（ｍ＋１）個の選択トランジスタＳＴ２のソースにはソース線ＳＬが共通接続され、ゲートには選択ゲート線ＳＧＳが共通接続されている。また、選択トランジスタＳＴ２のドレインはメモリセルトランジスタＭＴｎのソースと接続されている。
【００２５】
なお、図示されていないが、１つのブロックＢＬＫ内のビット線ＢＬｊ（ｊ＝０〜ｍ）は、他のブロックＢＬＫのビット線ＢＬｊとの間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロックＢＬＫ内において同一列にあるＮＡＮＤストリングＮＳ間は、同一のビット線ＢＬｊによって接続される。
【００２６】
つぎに、ＤＲＡＭ１１とＮＡＮＤメモリ１２の機能構成について説明する。図３は、ＤＲＡＭとＮＡＮＤメモリの機能構成を模式的に示す図であり、（ａ）はＤＲＡＭ１１の機能構成を示し、（ｂ）はＮＡＮＤメモリ１２の機能構成を示している。
【００２７】
図３（ａ）に示されるように、ＤＲＡＭ１１は、ホスト装置から書込要求のあったデータが記憶されるライトキャッシュ領域ＷＣと、ホスト装置から読出要求のあったデータが記憶されるリードキャッシュ領域ＲＣと、ＤＲＡＭ１１およびＮＡＮＤメモリ１２に記憶されるデータの格納位置を管理するための管理情報が記憶される一時記憶領域１１１と、管理情報を復元する際に使用される作業領域１１２と、を有する。
【００２８】
図３（ｂ）に示されるように、ＮＡＮＤメモリ１２は、ホスト装置から書込要求のあったデータが格納されるデータ格納領域１２５と、ＤＲＡＭ１１の一時記憶領域１１１で管理される管理情報が保存される管理情報保存領域１２６と、管理プログラムなどが多重化して保存される管理プログラム保存領域１２７と、を有する。また、ＮＡＮＤメモリ１２は、メモリシステム１０を動作させるのに必要な情報（固定情報）を固定した位置に保存する固定領域１２８と、ＮＡＮＤメモリ１２内の固定領域１２８以外の領域である可変領域１２９と、に分けることができる。詳細は後述するが、管理プログラム保存領域１２７のすべてと管理情報保存領域１２６の一部は固定領域１２８に属し、管理情報保存領域１２６の他の部分とデータ格納領域１２５のすべては可変領域１２９に属している。この例では、ＮＡＮＤメモリ１２でのデータの書込／読出単位をページサイズ単位とし、消去の単位をブロックサイズ単位（たとえば５１２ＫＢ単位）とするものとする。そのため、ブロックサイズ単位で管理されるＮＡＮＤメモリ１２の各ブロックを記憶するための領域を、さらにページサイズ単位の領域に分割する。
【００２９】
ここで、ＤＲＡＭ１１の一時記憶領域１１１で管理される管理情報について説明する。図４は、メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。なお、ここで、データとは、ホスト装置から書込要求／読出要求のあったデータのことをいうものとする。このメモリシステム１０では、キャッシュの役割をするＤＲＡＭ１１でのデータ管理を行うＤＲＡＭ管理層３１と、ＮＡＮＤメモリ１２での論理的なデータ管理を行う論理ＮＡＮＤ管理層３２と、ＮＡＮＤメモリ１２での物理的なデータ管理やＮＡＮＤメモリ１２の延命処理などを行う物理ＮＡＮＤ管理層３３の３層構造でデータ管理が行われる。
【００３０】
ＤＲＡＭ１１のライトキャッシュ領域ＷＣとリードキャッシュ領域ＲＣでは、ホスト装置のアドレス管理方法によって管理される論理アドレス（以下、ＬＢＡ（Logical  Block  Address）という）で指定されたデータが、ＤＲＡＭ１１上の所定の範囲の物理アドレス（以下、ＤＲＡＭ内物理アドレスという）に記憶される。また、ＤＲＡＭ管理層３１内でのデータは、格納されるデータのＬＢＡとＤＲＡＭ内物理アドレスとの対応関係と、ページ中のセクタサイズ単位のデータの有無を示すセクタフラグと、を含むキャッシュ管理情報４１によって管理される。
【００３１】
図５は、キャッシュ管理情報テーブルの一例を示す図である。ここでは、キャッシュ管理情報４１は、ＤＲＡＭ１１の１ページサイズの領域１つに対して１エントリとし、エントリ数はライトキャッシュ領域ＷＣとリードキャッシュ領域ＲＣに収まるページ数以下とする。各エントリには、ページサイズのデータのＬＢＡと、ＤＲＡＭ内物理アドレスと、このページをセクタサイズで分割した各領域における有効データの位置を示すセクタフラグと、が関連付けられている。
【００３２】
ＮＡＮＤメモリ１２では、ＤＲＡＭ１１からのデータがＮＡＮＤメモリ１２上の所定の範囲の物理アドレス（以下、ＮＡＮＤ内物理アドレスという）に格納される。多値メモリからなるＮＡＮＤメモリ１２では、書換可能回数に制約があるため、ＮＡＮＤメモリ１２を構成する各ブロック間での書換回数が均等化するようにドライブ制御部１４で制御されている。つまり、ドライブ制御部１４は、ＮＡＮＤメモリ１２内のあるＮＡＮＤ内物理アドレスに書込まれたデータの更新を行う場合に、そのデータが含まれるブロックのうち更新が必要な部分を反映させたデータを、元のブロックとは異なるブロックに書込み、元のブロックは無効化するようにして、ＮＡＮＤメモリ１２を構成するブロック間での書換回数が均等化するように制御している。
【００３３】
このように、ＮＡＮＤメモリ１２では、データの書込／読出処理と消去処理とでは処理単位が異なるとともに、データの更新処理においては、更新前のデータの位置（ブロック）と更新後のデータの位置（ブロック）とが異なるため、この実施の形態では、ＮＡＮＤ内物理アドレスのほかにＮＡＮＤメモリ１２内で独自に使用されるＮＡＮＤ内論理アドレス（以下、ＮＡＮＤ内論理アドレスという）を設けることにする。
【００３４】
そこで、論理ＮＡＮＤ管理層３２内でのデータは、ＤＲＡＭ１１から受け取ったページサイズ単位のデータのＬＢＡと、受け取ったデータを格納するＮＡＮＤメモリ１２の論理的なページ位置を示すＮＡＮＤ内論理アドレスとの間の関係と、ＮＡＮＤメモリ１２における消去単位のブロック（以下、物理ブロックとする）とサイズが一致する論理的なブロック（以下、論理ブロックという）のアドレス範囲を示す関係と、を示す論理ＮＡＮＤ管理情報４２によって管理される。なお、物理ブロックを複数まとめたものを論理ブロックとしてもよい。また、物理ＮＡＮＤ管理層３３でのデータは、ＮＡＮＤメモリ１２における論理ブロックのＮＡＮＤ内論理アドレスと、物理ブロックのＮＡＮＤ内物理アドレスとの対応関係を含むＮＡＮＤ内論理アドレス−物理アドレス変換情報（以下、論物変換情報という）４３によって管理される。
【００３５】
図６は、論理ＮＡＮＤ管理情報テーブルの一例を示す図であり、図７は、ＮＡＮＤ内論物変換情報テーブルの一例を示す図である。図６に示されるように、論理ＮＡＮＤ管理情報４２は、論理ページ管理情報４２ａと論理ブロック管理情報４２ｂとを含む。論理ページ管理情報４２ａは、１ページサイズの論理的な領域１つに対して１エントリとし、各エントリには、１ページサイズのデータのＬＢＡと、ＮＡＮＤ内論理アドレスと、このページが有効か否かを示すページフラグと、を含む。また、論理ブロック管理情報４２ｂは、ＮＡＮＤメモリ１２の１ブロックサイズの論理的な領域に対して設定されるＮＡＮＤ内論理アドレスを含む。また、図７に示されるように、ＮＡＮＤ内論物変換情報４３は、ＮＡＮＤメモリ１２のＮＡＮＤ内物理アドレスとＮＡＮＤ内論理アドレスとが対応付けられている。
【００３６】
これらの管理情報によって、ホスト装置で使用されるＬＢＡと、ＮＡＮＤメモリ１２で使用されるＮＡＮＤ内論理アドレスと、ＮＡＮＤメモリ１２で使用されるＮＡＮＤ内物理アドレスとの間を対応付けることができ、ホスト装置と当該メモリシステム１０との間のデータのやり取りを行うことが可能となる。
【００３７】
なお、以下では、ＤＲＡＭ管理層３１で管理される管理情報は、電源オフなどによって消失するので、揮発性テーブルともいい、論理ＮＡＮＤ管理層３２および物理ＮＡＮＤ管理層３３で管理される管理情報は、電源オフなどによって消失した際にメモリシステム１０の次回起動時に支障を与え、保存しておくことが必要なので、不揮発性テーブルともいう。
【００３８】
この不揮発性テーブルは、ＮＡＮＤメモリ１２に格納されているデータを管理するものであり、この不揮発性テーブルがなければＮＡＮＤメモリ１２に格納されている情報にアクセスできなかったり、既に記憶した領域内のデータを消してしまったりするので、不意の電源オフなどに備えて最新の情報に保存しておく必要がある。そのため、この実施の形態では、ＮＡＮＤメモリ１２の管理情報保存領域１２６には、少なくとも不揮発性テーブルを含む管理情報を最新の状態で保存している。そこでつぎに、ＮＡＮＤメモリ１２の管理情報保存領域１２６に保存される管理情報保存情報について説明する。なお、以下では、不揮発性テーブルのみを管理情報保存領域１２６に保存する場合を例に挙げる。
【００３９】
図８は、管理情報保存領域１２６に記憶される管理情報保存情報の内容の一例を模式的に示す図である。この管理情報保存領域１２６には、ある時点における不揮発性テーブルの内容であるスナップショット２１０と、不揮発性テーブルの内容に変化があった場合に内容を変更した後の不揮発性テーブルとスナップショット２１０（またはスナップショット２１０と既に取られたログ）との差分情報であるログ２２０と、スナップショット２１０とこのスナップショット２１０に関する一番目に取得されたログ２２０の位置（ブロック）を示す第２のルートポインタ２３０と、第２のルートポインタ２３０が格納される位置（ブロック）を示す第１のルートポインタ２４０と、を含む管理情報保存情報が格納される。ここで、スナップショット２１０とは、ＤＲＡＭ１１の一時記憶領域１１１に記憶される管理情報のうち、少なくとも不揮発性テーブルを含む管理情報を所定の時点で保存した情報のことをいう。
【００４０】
また、ログ２２０は、管理情報が変化する処理（たとえば、ＮＡＮＤメモリ１２のデータ格納領域１２５へのデータの書込処理）の前後で取られ、処理の前に保存するログを前ログ２２０Ａといい、処理の後に保存するログを後ログ２２０Ｂという。なお、スナップショット２１０がとられた後の最初の前ログ２２０Ａや前ログ２２０Ａは、不揮発性テーブルとスナップショット２１０との差分情報であり、２回目以降の前ログ２２０Ａまたは後ログ２２０Ｂは、既に取られた前ログ２２０Ａまたは後ログ２２０Ｂとスナップショット２１０とを合わせたものと、不揮発性テーブルと、の差分情報である。
【００４１】
この図８において、スナップショット２１０、前ログ２２０Ａ、後ログ２２０Ｂ、第２のルートポインタ２３０および第１のルートポインタ２４０は、それぞれ異なるブロックに格納される。なお、これらのスナップショット２１０、前ログ２２０Ａ、後ログ２２０Ｂ、第２のルートポインタ２３０および第１のルートポインタ２４０がそれぞれ格納されるブロックの大きさは、消去単位である物理ブロックと同じ大きさであるものとする。スナップショット２１０は、スナップショット格納用ブロックに格納される。スナップショット２１０には、ＮＡＮＤメモリ１２の管理情報保存領域１２６内の不揮発性テーブルである論理ＮＡＮＤ管理情報４２とＮＡＮＤ内論物変換情報４３とが含まれる。新しいスナップショット２１０が保存されると、以前に保存されていたスナップショット２１０とは別のブロックに保存される。
【００４２】
前ログ２２０Ａと後ログ２２０Ｂは、それぞれ前ログ格納用ブロックと後ログ格納用ブロックに格納される。これらの前ログ２２０Ａと後ログ２２０Ｂは、スナップショット２１０の世代が変わっても、それぞれ同じ前ログ格納用ブロックと後ログ格納用ブロックに連続して書込まれる。図９は、ログの一例を示す図である。ログ２２０は、変更対象の管理情報となる対象情報と、その対象情報中の変更対象となるエントリである対象エントリと、その対象エントリ中の変更対象となる項目である対象項目と、その対象項目の変更の内容である変更内容と、を含む。なお、前ログ２２０Ａと後ログ２２０Ｂとは、必ずしも同じ内容とする必要はなく、たとえば前ログ２２０Ａには図９に示されるような管理情報が変化した際の差分情報を記録し、後ログ２２０Ｂには管理情報に変更が生じるような処理が終了したことを示すフラグを前ログ２２０Ａに対応させて記録するようにしてもよい。
【００４３】
第２のルートポインタ２３０は、第２のルートポインタ格納用ブロックに格納される。第２のルートポインタ２３０は、スナップショット２１０と前ログ２２０Ａと後ログ２２０Ｂの格納位置を示すブロックの先頭アドレスを示すものであればよい。ただし、第２のルートポインタ２３０のうちスナップショット２１０の格納位置を示す部分は、スナップショット２１０に含まれる各管理情報（不揮発性テーブル）の先頭アドレスを示すものであってもよい。なお、ログ２２０の先頭アドレスを示すポインタがスナップショット２１０に格納され、第２のルートポインタ２３０としてはスナップショット２１０の先頭アドレスを示すポインタのみの構成であってもよい。また、第２のルートポインタ２３０は、スナップショット２１０が新たに保存された場合に更新される。
【００４４】
図１０は、第２のルートポインタの一例を示す図である。１ブロックのサイズを５１２ＫＢとすると、４ＫＢのサイズの１ページに第２のルートポインタ２３０が格納される。この第２のルートポインタ２３０は、スナップショットアクセス情報と、ログアクセス情報と、ネクストポインタと、を含む。ここで、スナップショットアクセス情報は、スナップショットが格納されているブロックへアクセスするための情報である。また、ログアクセス情報は、ログが格納されているブロックへアクセスするための情報であり、ブロックを指定する情報と、基準となるスナップショットに関係するログが格納されている上記ブロック内の先頭ページを指定する情報と、を含む。ネクストポインタは、つぎの第２のルートポインタ２３０が格納されるページを示すインデックスである。このネクストポインタによって、第２のルートポインタ２３０はリンクドリスト方式の情報となり、第１のルートポインタ２４０で指示された第２のルートポインタ格納用ブロックの先頭ページからネクストポインタをたどることによって、最新の第２のルートポインタ２３０へとたどり着くことが可能となる。なお、リンクドリスト方式ではなく、第２のルートポインタ格納領域の先頭ページから第２のルートポインタ２３０を順に追記的に格納してもよい。
【００４５】
第１のルートポインタ２４０は、第１のルートポインタ格納用ブロックに格納される。第１のルートポインタ２４０は、第２のルートポインタ２３０が格納されている第２のルートポインタ格納用ブロックのブロック（位置）へアクセスするための情報であり、メモリシステム１０の起動時に、管理情報を復元するための処理の際に最初に読み込まれる情報である。この第１のルートポインタ２４０は、第２のルートポインタが格納されるブロックが変わった場合に変更される。第１のルートポインタ２４０は、第１のルートポインタ格納用ブロックに、たとえば、ブロックの先頭ページから順に追記的に格納される。このような場合には、第１のルートポインタ格納用ブロック内の未書込ページの１つ前のページが最新情報を有することになるので、未書込ページの最上位のページを検索することで、最新の第１のルートポインタ２４０を検索することができる。また、第２のルートポインタ２３０の場合のように、リンクドリストを用いることも可能である。
【００４６】
ここで、第１のルートポインタ２４０はＮＡＮＤメモリ１２内の固定領域１２８に格納され、スナップショット２１０、前ログ２２０Ａ、後ログ２２０Ｂおよび第２のルートポインタ２３０はＮＡＮＤメモリ１２内の可変領域１２９に格納される。固定領域１２８とは、ＮＡＮＤメモリ１２において、論理ＮＡＮＤ管理層３２で管理される論理ブロックと、物理ＮＡＮＤ管理層３３で管理される物理ブロックとの関係が固定化している領域であり、書換えや書込みがほとんど発生しない更新頻度の低い、メモリシステム１０を稼働させるのに必要な情報が格納される領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域１２６（ＮＡＮＤメモリ１２）内の他のブロックに情報（第１のルートポインタ２４０）を書込むのではなく、ブロックの情報を消去した後に同じブロックの先頭ページから書込むように設定された領域である。また、上述したように、管理プログラム保存領域１２７もこの固定領域１２８に設けられる。なお、この例では、ＮＡＮＤメモリ１２は多値メモリで構成されるとしているが、固定領域１２８中に格納される第１のルートポインタ２４０のデータや管理プログラムの信頼性を高めるために、２値モードで使用することが望ましい。また、固定領域１２８に格納される第１のルートポインタ２４０や管理プログラムなどの情報は、特許請求の範囲における固定情報に対応している。
【００４７】
一方の可変領域１２９とは、固定領域１２８を除くＮＡＮＤメモリ１２の領域において、論理ＮＡＮＤ管理層３２で管理される論理ブロックと、物理ＮＡＮＤ管理層３３で管理される物理ブロックとの関係が変化する領域であり、ＮＡＮＤメモリ１２中の固定領域１２８以外の領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域１２６内の可変領域１２９中の書込可能なフリーブロックとなっている他のブロックにつぎの情報を書込むように設定された領域である。なお、この可変領域１２９は、上記したようにＮＡＮＤメモリ１２中の固定領域１２８を除いた領域であり、管理情報保存領域１２６中のスナップショット２１０、ログ２２０および第２のルートポインタ２３０が格納される領域のほかに、データ格納領域１２５も含まれる。つまり、固定領域１２８を除いたＮＡＮＤメモリ１２中の物理的な領域を可変領域１２９とし、この中で、データ格納領域１２５と管理情報保存領域１２６中のスナップショット２１０、ログ２２０および第２のルートポインタ２３０が格納される領域とが機能的に分離されている。
【００４８】
図１１は、管理プログラム保存領域１２７に保存される管理プログラムの状態の一例を示す図である。管理プログラム１２７２は、管理プログラム保存領域１２７内の管理プログラム格納用ブロック１２７１に保存され、多重化されている。この管理プログラム１２７２は、メモリシステム１０の起動時に実行されるプログラムであり、バージョンアップがなされると更新処理が行われる。その際には、現在のバージョンの管理プログラム１２７２が格納されている管理プログラム格納用ブロック１２７１を消去した後に新しいバージョンの管理プログラム１２７２が上書きされる。何らかの原因によって管理プログラム１２７２が破壊されてしまうことを防ぐために、管理プログラム１２７２は多重化されている。一般的には、管理プログラム１２７２は二重化以上されていればよいが、たとえばバージョンアップによる管理プログラムの上書き処理時などにおいて、管理プログラム１２７２が常に二重化以上の状態を保つためには、全体で四重化以上されていることが望ましい。この図１１では、管理プログラム１２７２が四重化されている場合を示している。また、管理プログラム格納用ブロック１２７１は、特許請求の範囲における固定情報格納領域に対応している。
【００４９】
また、管理プログラム１２７２が格納される管理プログラム格納用ブロック１２７１の特定のページ（たとえば、最終ページ）には、その管理プログラム格納用ブロック１２７１の消去回数に対してユニークな消去回数識別子１２７３が記録されている。そして、この消去回数識別子１２７３は、多重化されている各管理プログラム格納用ブロック１２７１間で整合が取れている（一致した値となっている）。
【００５０】
つぎに、ドライブ制御部１４の機能について説明する。図１２は、ドライブ制御部の機能構成の一例を示すブロック図である。ドライブ制御部１４は、ＤＲＡＭ１１−ＮＡＮＤメモリ１２間のデータ転送やＮＡＮＤメモリ１２に関する各種機能の制御を行うデータ管理部１４１と、ＡＴＡインタフェースから受けた指示に基づいてデータ管理部１４１と協働してデータ転送処理を行うＡＴＡコマンド処理部１４２と、データ管理部１４１およびＡＴＡコマンド処理部１４２と協動して各種のセキュリティ情報を管理するセキュリティ管理部１４３と、電源オン時に、管理プログラム（ファームウェア）をＮＡＮＤメモリ１２の管理プログラム保存領域１２７から図示しないメモリ（たとえば、ＳＲＡＭ（Static  RAM））にロードするブートローダ１４４と、ドライブ制御部１４内の各コントローラや回路の初期化を行う初期化管理部１４５と、外部からＲＳ２３２Ｃインタフェースを介して供給されたデバッグ用データを処理するデバッグサポート部１４６と、を備える。
【００５１】
図１３は、データ管理部の機能構成の一例を示すブロック図である。データ管理部１４１は、ＤＲＡＭ１１とＮＡＮＤメモリ１２との間でデータ転送を行うデータ転送処理部１５１と、ＤＲＡＭ１１およびＮＡＮＤメモリ１２に記憶されるデータの変更に伴って管理情報の変更や保存を行う管理情報管理部１５２と、電源オン時などにＮＡＮＤメモリ１２に保存された管理情報に基づいて最新の管理情報を復元する管理情報復元部１５５と、固定領域１２８に格納される管理プログラムなどのデータの管理を行う固定領域管理部１５６と、をさらに備える。
【００５２】
また、管理情報管理部１５２は、管理情報書込機能１５３と、管理情報保存機能１５４と、をさらに備える。管理情報書込機能１５３は、データ転送処理部１５１によるＤＲＡＭ１１またはＮＡＮＤメモリ１２で記憶されるデータの変更処理によって管理情報の更新が必要な場合に、ＤＲＡＭ１１に記憶されている管理情報の更新を行う。
【００５３】
管理情報保存機能１５４は、メモリシステム１０が所定の条件を満たしたとき、管理情報をスナップショット２１０として、または管理情報中の更新された分の情報をログ２２０として、ＮＡＮＤメモリ１２の管理情報保存領域１２６に保存する。また、このスナップショット２１０またはログ２２０（前ログ２２０Ａと後ログ２２０Ｂ）の保存に伴って第２のルートポインタ２３０または第２のルートポインタ２３０と第１のルートポインタ２４０が書込まれる位置が変更される場合には、この第２のルートポインタ２３０または第２のルートポインタ２３０と第１のルートポインタ２４０に対する更新処理も行う。
【００５４】
管理情報保存機能１５４によるスナップショット２１０の保存は、以下に例示する３つのスナップショット保存条件のいずれかを満たす場合に実行される。
（１）スタンバイ（メモリシステム１０本体の電力消費を最小限にまで落とすようにする指示）／スリープ（所定の時間アクセスがない場合にデバイスを停止する指示）／リセット（メモリシステム１０を再起動する指示）を受けた場合。
（２）ＮＡＮＤメモリ１２の管理情報保存領域１２６中のログ２２０（前ログ２２０Ａと後ログ２２０Ｂ）を記憶するために設けられたログ記憶領域が埋まってしまった（領域がデータで満杯になった）場合。
【００５５】
また、管理情報管理部１５２によるログ２２０（前ログ２２０Ａ、後ログ２２０Ｂ）の保存は、ＤＲＡＭ１１に記憶されている管理情報（不揮発性テーブル）の更新を伴うＮＡＮＤメモリ１２上のデータ更新時（ＮＡＮＤメモリ１２へのデータ書込みが必要な時）である。
【００５６】
管理情報復元部１５５は、メモリシステム１０に電源がオンされると、ＮＡＮＤメモリ１２の管理情報保存領域１２６に保存されている管理情報保存情報に基づいた管理情報の復元処理を行う。具体的には、固定領域１２８中の第１のルートポインタ２４０、可変領域１２９中の第２のルートポインタ２３０、およびログ２２０へと順にたどっていき、最新のスナップショット２１０に対するログ２２０が存在するか否かを判定する。ログ２２０が存在しない場合には、上記スナップショット保存条件の（１）に示した場合に相当する前回のメモリシステム１０の終了が正常終了であると判定し、スナップショット格納用ブロックのスナップショット２１０を管理情報としてＤＲＡＭ１１に復元する。また、ログ２２０が存在する場合には、上記スナップショット保存条件の（１）に示した場合以外のメモリシステム１０が正常終了ではなく瞬断などの異常終了であった場合であるので、スナップショット格納用ブロックからスナップショット２１０を取得し、ログ格納用ブロックからログ２２０を取得して、ＤＲＡＭ１１上でスナップショット２１０にログ２２０を反映させて管理情報（不揮発性テーブル）の復元を行う。
【００５７】
固定領域管理部１５６は、ＮＡＮＤメモリ１２の固定領域１２８に格納されている管理プログラムや第１のルートポインタが格納されているブロックの書換処理（すなわち、ブロックを消去して、同じブロックへの書込みを行う処理）を行う。たとえば、多重化されている管理プログラムのバージョンアップを行ったり、第１のルートポインタ格納ブロックが満たされた場合の書換処理を行ったりする。
【００５８】
ここで、管理情報管理部１５２によるメモリシステム１０の管理情報の保存処理について説明する。図１４は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム１０がホスト装置と接続され、ホスト装置の２次記憶装置として動作しているとともに、ホスト装置（メモリシステム１０）が起動状態にあり、また、この起動状態の前のメモリシステム１０の停止前にスナップショット２１０が保存されているものとする。
【００５９】
まず、ホスト装置（メモリシステム１０）の前回終了時に保存されたスナップショット２１０を基に、ホスト装置（メモリシステム１０）が起動された状態にある（ステップＳ１１）。ついで、管理情報管理部１５２は、上記（１）〜（２）で示したスナップショット保存条件を満たすか否かを判定する（ステップＳ１２）。スナップショット保存条件を満たさない場合（ステップＳ１２でＮｏの場合）には、管理情報の更新を伴う指示、ログ保存条件を満たす指示を受けたか否かを判定する（ステップＳ１３）。管理情報の更新を伴う指示を受けなかった場合（ステップＳ１３でＮｏの場合）には、ステップＳ１２へと戻る。
【００６０】
また、管理情報の更新を伴う指示を受けた場合（ステップＳ１３でＹｅｓの場合）には、その指示を実行することによって管理情報がどのように更新されるか更新計画を決定し（ステップＳ１４）、その更新計画をＮＡＮＤメモリ１２の管理情報保存領域１２６のログ格納用ブロックに前ログ２２０Ａとして保存する（ステップＳ１５）。この更新計画（ログ）は、前ログ格納用ブロックに前ログ２２０Ａが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット２１０との間の差分情報であり、前ログ格納用ブロックに前ログ２２０Ａ（以下、過去ログという）が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット２１０と過去ログとを合わせたものとの間の差分情報である。なお、この前ログ２２０Ａは、たとえば、前ログ２２０Ａ（更新計画）をＤＲＡＭ１１上に記録した後、ＮＡＮＤメモリ１２の管理情報保存領域１２６に保存される。
【００６１】
ついで、論理ＮＡＮＤ管理層は、ステップＳ１３で受けた指示を実行する（ステップＳ１６）。このような指示として、たとえばユーザデータのＮＡＮＤメモリ１２のデータ保存領域の所定のブロックへの書込処理が挙げられる。
【００６２】
この後、実行した処理に応じて、ＤＲＡＭ１１に記憶されている管理情報が更新される。そして、管理情報保存機能１５４は、管理情報が更新されたことを示す後ログ２２０Ｂを、ＮＡＮＤメモリ１２の管理情報保存領域１２６に保存する（ステップＳ１７）。この後ログ２２０Ｂは、前ログ２２０Ａと同様に現時点の不揮発性テーブルと、スナップショット２１０またはスナップショット２１０と後ログ２２０Ｂとを合わせたものと、の差分情報であってもよいし、単なるフラグであってもよい。その後、ステップＳ１２へと処理が戻る。
【００６３】
また、ステップＳ１２でスナップショット保存条件を満たす場合（ステップＳ１２でＹｅｓの場合）には、ＤＲＡＭ１１の一時記憶領域１１１内の少なくとも不揮発性テーブルを含む管理情報をスナップショット２１０としてＮＡＮＤメモリ１２の管理情報保存領域１２６に保存する（ステップＳ１８）。そして、メモリシステム１０の終了指示があるか否かを判定し（ステップＳ１９）、終了指示がない場合（ステップＳ１９でＮｏの場合）には再びステップＳ１２へと戻り、終了指示がある場合（ステップＳ１９でＹｅｓの場合）には、そのまま処理が終了する。
【００６４】
つぎに、管理情報復元部１５５によるメモリシステム１０の管理情報の復元処理について説明する。図１５は、メモリシステムの管理情報の復元処理手順の一例を示すフローチャートであり、図１６は、メモリシステムの管理情報の復元処理を説明するための図である。なお、ここでも、メモリシステム１０がホスト装置と接続され、ホスト装置の２次記憶装置として動作しているものとする。
【００６５】
まず、瞬断からの回復などによってホスト装置の電源がオンされ、メモリシステム１０に対して起動指示が出されると（ステップＳ３１）、管理情報復元部１５５は、ＮＡＮＤメモリ１２の管理情報保存領域１２６中のポインタ２３０を読込み（ステップＳ３２）、スナップショット２１０が格納されているブロックのアドレスと、前後ログ（前ログ２２０Ａ、後ログ２２０Ｂ）が格納されているブロックのアドレスを取得する（ステップＳ３３）。
【００６６】
その後、管理情報復元部１５５は、スナップショット２１０をスナップショット格納用ブロックから取得し、ＤＲＡＭ１１の管理情報格納領域１１１に復元する（ステップＳ３４）。
【００６７】
さらに、管理情報復元部１５５は、前ログ用のブロックと、ＮＡＮＤメモリ１２内の後ログ用のブロックと、に対してＥｒａｓｅページ検索を行なう（ステップＳ３５）。Ｅｒａｓｅページ検索は、ブロック内でデータの書き込まれていないページ（Ｅｒａｓｅページ）が何れのページであるかをブロックの先頭ページから順番に検索する方法であり、例えばＥＣＣエラーを有し且つ「０」が所定数よりも少ないページをＥｒａｓｅページと判断する方法である。すなわち、管理情報復元部１５５はステップＳ３５において、ブロック内で最後に書き込まれたページを検索する。
【００６８】
管理情報復元部１５５は、前ログ２２０Ａが格納されているページのうち、最後のページ（Ｅｒａｓｅページの１つ前のページ）が第何ページであるかを判断する。また、管理情報復元部１５５は、後ログ２２０Ｂが格納されているページのうち、最後のページが第何ページであるかを判断する。そして、管理情報復元部１５５は、前ログ２２０Ａの格納されている最後のページが、後ログ２２０Ｂの格納されている最後のページと同じであるか否かを判断する（ステップＳ３６）。本実施の形態の管理情報復元部１５５は、前ログ２２０Ａが格納されている最後のページが、後ログ２２０Ｂが格納されている最後のページと同じであるか否かのこの判断結果に基づいて、管理情報の復元に用いるログとして前ログ２２０Ａと後ログ２２０Ｂの何れか一方を選択する。なお、ログ２２０Ａ、２２０Ｂが格納されているブロックにＥｒａｓｅページが無い場合は、ブロックの最終ページが最後のログと判断する。
【００６９】
後ログ２２０Ｂの保存中に瞬断が発生すると、この後ログ２２０Ｂに対応する前ログ２２０Ａと、保存中の後ログ２２０Ｂと、がそれぞれ前ログ用のブロックと後ログ用のブロックに保存されることとなる。この場合、本実施の形態では、前ログ２２０Ａと後ログ２２０Ｂと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ２２０Ａが格納されている最後のページと、後ログ２２０Ｂが格納されている最後のページとが同じになる。また、後ログ２２０Ｂの保存中に瞬断が発生しているので、後ログ２２０Ｂは、瞬断に起因して破壊されている場合がある。このため、後ログ２２０Ｂの保存中に瞬断が発生した場合は、前ログ２２０Ａを用いて管理情報を復元する必要がある。
【００７０】
したがって、本実施の形態の管理情報復元部１５５は、前ログ２２０Ａが格納されている最後のページ（ページ数）が、後ログ２２０Ｂが格納されている最後のページ（ページ数）と同じであると判断した場合に（ステップＳ３６でＹｅｓの場合）、管理情報の復元に用いるログとして前ログを選択する（ステップＳ３７）。
【００７１】
一方、データ書き込みに対応する前ログ２２０Ａの保存中に瞬断が発生すると、このデータ書き込みに対応する前ログ２２０Ａのみが前ログ用のブロック内に保存され、このデータ書き込みに対応する後ログ２２０Ｂは後ログ用のブロック内に保存されない。この場合、本実施の形態では、前ログ２２０Ａと後ログ２２０Ｂと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ２２０Ａが格納されている最後のページと、後ログ２２０Ｂが格納されている最後のページとが異なることとなる。また、前ログ２２０Ａの保存中に瞬断が発生しているので、前ログ２２０Ａは、瞬断に起因して破壊されている場合がある。このため、前ログ２２０Ａの保存中に瞬断が発生した場合は、後ログ２２０Ｂを用いて管理情報を復元する必要がある。
【００７２】
したがって、本実施の形態の管理情報復元部１５５は、前ログ２２０Ａが格納されている最後のページが、後ログ２２０Ｂが格納されている最後のページと異なると判断した場合に（ステップＳ３６でＮｏの場合）、管理情報の復元に用いるログとして後ログ２２０Ｂを選択する（ステップＳ３８）。
【００７３】
この後、管理情報復元部１５５は、前ログ２２０Ａまたは後ログ２２０Ｂのうち選択した方のログの最初のログから最新のログまでをログ格納用ブロックから取得し、ＤＲＡＭ１１の作業領域１１２に展開する（ステップＳ３９）。そして、スナップショット２１０に対して、古いログから順にログを反映させて管理情報（不揮発性テーブル）を復元し（ステップＳ４０）、管理情報の復元処理が終了する。
【００７４】
具体的には、図１６に示すように、前ログ２２０Ａを格納しているブロック５０Ａに対してＥｒａｓｅページ検索が行なわれるとともに（１）、後ログ２２０Ｂを格納しているブロック５０Ｂに対して、Ｅｒａｓｅページ検索が行なわれる（２）。
【００７５】
そして、前ログ２２０Ａと後ログ２２０Ｂの最後のページ（ページ数）が同じか否かが判断される（３）。前ログ２２０Ａと後ログ２２０Ｂの最後のページが同じであれば、前ログ２２０Ａを用いて管理情報が復元され（４）、前ログ２２０Ａと後ログ２２０Ｂの最後のページが異なれば後ログ２２０Ｂを用いて管理情報が復元される（５）。
【００７６】
図１７は、メモリセルのデータとメモリセルの閾値電圧の関係とＮＡＮＤメモリに対する書き込み順序の一例を示す図である。まず、消去動作を行なうとメモリセルのデータは“０”となる。つぎに、図１７（ａ）に示されるように、下位ページの書き込みを行なうと、メモリセルのデータはデータ“０”とデータ“２”になる。ついで、図１７（ｂ）に示されるように、上位ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“２”の閾値電圧の分布が大きくなる。この後、上位ページのデータが書き込まれると、メモリセルのデータは、図１７（ｃ）に示されるように、本来の閾値電圧を有するデータ“０”〜“３”となる。本実施の形態では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
【００７７】
つぎに、ＮＡＮＤメモリ１２への書込み処理について説明する。図１７（ｄ）に示されるように、ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。なお、図１７（ｄ）では、説明の便宜上、ワード線を４本としている。
【００７８】
第１番目の書き込みは、メモリセル１の下位ページに１ビットのデータが書きこまれる。第２番目の書き込みは、メモリセル１とワード方向に隣接したメモリセル２の下位ページに１ビットのデータが書きこまれる。第３番目の書き込みは、メモリセル１とビット方向に隣接したメモリセル３の下位ページに１ビットのデータが書きこまれる。第４番目の書き込みは、メモリセル１と対角に隣接したメモリセル４の下位ページに１ビットのデータが書きこまれる。
【００７９】
第５番目の書き込みは、メモリセル１の上位ページに１ビットのデータが書きこまれる。第６番目の書き込みは、メモリセル１とワード方向に隣接したメモリセル２の上位ページに１ビットのデータが書きこまれる。第７番目の書き込みは、メモリセル３とビット方向に隣接したメモリセル５の下位ページに１ビットのデータが書きこまれる。第８番目の書き込みは、メモリセル３と対角に隣接したメモリセル６の下位ページに１ビットのデータが書きこまれる。
【００８０】
第９番目の書き込みは、メモリセル３の上位ページに１ビットのデータが書きこまれる。第１０番目の書き込みは、メモリセル３とワード方向に隣接したメモリセル４の上位ページに１ビットのデータが書きこまれる。第１１番目の書き込みは、メモリセル５とビット方向に隣接したメモリセル７の下位ページに１ビットのデータが書きこまれる。第１２番目の書き込みは、メモリセル５と対角に隣接したメモリセル８の下位ページに１ビットのデータが書きこまれる。
【００８１】
第１３番目の書き込みは、メモリセル５の上位ページに１ビットのデータが書きこまれる。第１４番目の書き込みは、メモリセル５とワード方向に隣接したメモリセル６の上位ページに１ビットのデータが書きこまれる。第１５番目の書き込みは、メモリセル７の上位ページに１ビットのデータが書きこまれる。第１６番目の書き込みは、メモリセル７とワード方向に隣接したメモリセル８の上位ページに１ビットのデータが書きこまれる。
【００８２】
つぎに、管理情報の復元に用いるログの選択方法の具体例について説明する。図１８〜図２０は、管理情報の復元に用いるログの選択方法を説明するための図である。図１８〜図２０では、前ログや後ログが、それぞれ前ログ用のブロック（各図の左側のブロック）、後ログ用のブロック（各図の右側のブロック）にページ毎に格納された状態を示している。図１８〜図２０での１つの物理ブロック内のページは、図１７に対応しているものとする。つまり、１〜４、７〜８、１１〜１２ページは図１７の下位ページであり、５〜６、９〜１０、１３〜１６ページは図１７の上位ページである。また、前ログ用のブロックや後ログ用のブロックでは、ブロック内の各行が１ページに対応している。なお、図１８〜図２０では、下位ページと上位ページに説明上分離して表示しているが、これらの下位ページと上位ページとを合わせたものが１つの物理ブロックを構成するものとする。
【００８３】
図１８〜図２０では、正常に保存されたログをログｘ１で示し、瞬断に起因して破壊されたログをログｙ１で示し、書き込み中のログをログｚ１で示している。ログｚ１の書き込み中に瞬断が発生してログｙ１が破壊されているので、ログｚ１のページに対応するメモリセルとログｙ１のページに対応するメモリセルは、同一のメモリセルである。そして、ログｙ１のページが下位側のページ（下位ページ）であり、ログｚ１のページが上位側のページ（上位ページ）である。また、各ブロックのログ（ページ）のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
【００８４】
図１８（ａ）は、通常時（電源の異常遮断が発生せずに電源オフとなった場合）の前ログと後ログを示す図であり、図１８（ｂ）〜（ｇ）は、瞬断が発生した場合の前ログと後ログを示す図である。
【００８５】
図１８（ａ）では、スナップショット２１０を保存することなくメモリシステム１０の電源をオフにした場合に、ＮＡＮＤメモリ１２に保存されている前ログおよび後ログを示している。図１８（ａ）の場合、下位ページ（１〜４ページ）にのみデータを書込んでいるので、下位ページの書込中に瞬断が発生しても、下位ページデータ破壊は発生しない。図１８（ａ）に示すように、本実施の形態では前ログと後ログと、をそれぞれ異なるブロックの同一ページに保存しているので、通常時に電源がオフにされると、前ログの最後のページと後ログの最後のページとは、同じページ位置となる。したがって、この場合は前ログを用いて管理情報が復元されることとなる。なお、図１８（ａ）に示す通常時の場合は、前ログの代わりに後ログを用いて管理情報を復元させてもよい。
【００８６】
図１８（ｂ）は、前ログとして「ログ書き込み（１）」を行なっている間に、瞬断が発生した場合を示している。図１８（ｂ）に示すように、前ログの上位ページ（６ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（前ログの２ページ）で下位ページデータ破壊が発生する。すなわち、図１８（ｂ）の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログｙ１が発生する。この場合において、前ログ側のブロックには、「ログ書き込み（１）」に対応するログｚ１（保存途中のログ）が保存される。一方、後ログ側のブロックには、「ログ書き込み（１）」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【００８７】
図１８（ｃ）は、後ログとして「ログ書き込み（１）」を行なっている間に、瞬断が発生した場合を示している。図１８（ｃ）に示すように、後ログの上位ページ（６ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（後ログの２ページ）で下位ページデータ破壊が発生する。すなわち、図１８（ｃ）の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログｙ１が発生する。この場合において、後ログ側のブロックには、「ログ書き込み（１）」に対応するログｚ１が保存される。また、前ログ側のブロックには、「ログ書き込み（１）」に対応する前ログが既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【００８８】
図１８（ｄ）では、前ログとして「ログ書き込み（１）」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み（２）」を行なっている間に瞬断が発生した場合を示している。図１８（ｄ）に示すように、前ログの上位ページ（６ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（前ログの２ページ）で下位ページデータ破壊が発生する。すなわち、図１８（ｄ）の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログｙ１が発生する。この場合において、前ログ側のブロックには、「ログ書き込み（１）」に対応するログｘ１と、「ログ書き込み（２）」に対応するログｚ１と、が保存される。一方、後ログ側のブロックには、「ログ書き込み（１）」に対応する後ログや「ログ書き込み（２）」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【００８９】
図１９（ｅ）では、前ログとして「ログ書き込み（１）」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み（２）」が行なわれている。さらに、図１９（ｅ）では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み（２）」を行なった後、最初のデータ書き込みに対応する後ログとして「ログ書き込み（１）」を行なっている間に瞬断が発生している。図１９（ｅ）に示すように、後ログの上位ページ（６ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（後ログの２ページ）で下位ページデータ破壊が発生する。すなわち、図１９（ｅ）の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログｙ１が発生する。この場合において、前ログ側のブロックには、「ログ書き込み（１）」に対応するログｘ１と、「ログ書き込み（２）」に対応するログｘ１と、が保存される。一方、後ログ側のブロックには、「ログ書き込み（２）」に対応するログｘ１と「ログ書き込み（１）」に対応するログｚ１が保存される。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【００９０】
図１９（ｆ）は、前ログとして２ページに渡る「ログ書き込み（１）」を行なっている間に、瞬断が発生した場合を示している。図１９（ｆ）に示すように、前ログの上位ページ（６ページと７ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（後ログの１ページと２ページ）で下位ページデータ破壊が発生する。すなわち、図１９（ｅ）の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログｙ１（例えば２ページ）が発生する。この場合において、前ログ側のブロックには、「ログ書き込み（１）」に対応するログｘ１（前段ページ）とログｚ１（後段ページ）とが保存される。一方、後ログ側のブロックには、「ログ書き込み（１）」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【００９１】
図１９（ｇ）は、後ログとして２ページに渡る「ログ書き込み（１）」を行なっている間に、瞬断が発生した場合を示している。図１９（ｇ）に示すように、後ログの上位ページ（６ページと７ページ）への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ（後ログの１ページと２ページ）で下位ページデータ破壊が発生する。すなわち、図１９（ｇ）の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログｙ１（例えば２ページ）が発生する。この場合において、後ログ側のブロックには、「ログ書き込み（１）」に対応するログｘ１とログｚ１とが保存される。また、前ログ側のブロックには、「ログ書き込み（１）」に対応する後ログが２ページに渡って既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【００９２】
図２０（ｈ）は、前ログとして２ブロックに跨る「ログ書き込み（１）」のうち、２ブロック目へのログ書き込みを行なっている間に、瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、２ブロック目は最初のページ（下位ページ）であるので前ログ側のブロックにはログｙ１が発生しない。この場合において、前ログ側のブロックには、１ブロック目の最後のページに「ログ書き込み（１）」に対応するログｘ１が保存され、２ブロック目の最初のページに「ログ書き込み（１）」に対応するログｚ１が保存される。一方、後ログ側のブロックには、「ログ書き込み（１）」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【００９３】
図２０（ｉ）は、前ログとして２ブロック（２ページ）に跨る「ログ書き込み（１）」のうち、２ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、「ログ書き込み（１）」の再書込み処理として「ログ書き込み（２）」を行なっている間に瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、２ブロック目の第２ページが下位ページであるので前ログ側のブロックにはログｙ１が発生していない。この場合において、前ログ側のブロックには、１ブロック目の最後のページに「ログ書き込み（１）」の前段ページに対応するログｘ１が保存され、２ブロック目の最初のページに「ログ書き込み（１）」に対応する後段ページのログｘ１が保存される。さらに、前ログ側の２ブロック目の第２ページに「ログ書き込み（２）」に対応するログｚ１が保存される。一方、後ログ側のブロックには、「ログ書き込み（１）」に対応する後ログや「ログ書き込み（２）」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【００９４】
なお、本実施の形態では、ＮＡＮＤメモリ１２が多値メモリである場合について説明したが、ＮＡＮＤメモリ１２は２値モードのメモリであってもよい。この場合、瞬断によって前ログや後ログが破壊されることはないので、後ログ２２０Ｂとして保存する情報は、前ログ２２０Ａとして保存する情報と同じ情報としておく必要はない。したがって、ＮＡＮＤメモリ１２が２値モードのメモリである場合、後ログ２２０Ｂは、データを実際に更新した後にデータが更新されたことを承認するための情報（更新承認情報）であってもよい。
【００９５】
ＮＡＮＤメモリ１２が２値モードのメモリであって、後ログ２２０Ｂが更新承認情報である場合も、管理情報復元部１５５は管理情報を復元する際に、前ログ２２０Ａの格納されている最後のページが、後ログ２２０Ｂの格納されている最後のページと同じであるか否かを判断する。そして、管理情報復元部１５５は、前ログ２２０Ａが格納されている最後のページが、後ログ２２０Ｂが格納されている最後のページと同じである場合に、前ログを用いて管理情報を復元させる。また、管理情報復元部１５５は、前ログ２２０Ａが格納されている最後のページが、後ログ２２０Ｂが格納されている最後のページと異なる場合、後ログと重複している前ログ（後ログが保存されているページと同じページの前ログ）を用いて管理情報を復元させる。例えば、後ログが第１ページから第１０ページまで保存されている場合、管理情報復元部１５５は、第１ページから第１０ページまでの前ログを用いて管理情報を復元させる。
【００９６】
また、ＮＡＮＤメモリ１２が２値モードのメモリの場合に、後ログ２２０Ｂとして保存する情報を、前ログ２２０Ａと同じ情報としてもよい。この場合、管理情報復元部１５５は、ＮＡＮＤメモリ１２が多値メモリである場合と同様の処理によって管理情報を復元させる。なお、この場合において、管理情報復元部１５５は、前ログ２２０Ａの格納されている最後のページが、後ログ２２０Ｂの格納されている最後のページと異なる場合、後ログと重複している前ログを用いて管理情報を復元させてもよい。
【００９７】
つぎに、固定領域管理部１５６による固定領域のブロックの書換処理について説明する。ここでは、図１１に示される四重化された管理プログラム１２７２の更新（バージョンアップ）処理を例に挙げて説明する。図２１は、管理プログラムの更新処理の手順の一例を示すフローチャートであり、図２２は、管理プログラムの更新処理の状態を模式的に示す図である。
【００９８】
まず、固定領域管理部１５６は、最新のバージョンの管理プログラムを、たとえばネットワークを介したダウンロードなどによって取得し、メモリシステム１０内のＤＲＡＭ１１や図示しないＳＲＡＭなどのメモリに格納する（ステップＳ５１）。ついで、メモリに格納された最新の管理プログラムを管理プログラム保存領域１２７中に順に書込む処理を行う。なお、この場合、図２２（ａ）に示されるように、各管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄの消去回数識別子は、消去回数を示しており、「ｓ」（自然数）であるとする。また、図２２（ａ）は更新前の状態を示しており、各管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄに格納されている管理プログラム１２７２は、更新される前の状態であるので図中では、「管理プログラム（更新前）」と表記している。
【００９９】
最初に、管理プログラム保存領域１２７内の１つの管理プログラム格納用ブロック１２７１を選択する（ステップＳ５２）。ここでは、第１の管理プログラム格納用ブロック１２７１Ａを選択したものとする。ついで、選択した第１の管理プログラム格納用ブロック１２７１内の消去回数識別子１２７３を取得し、メモリの所定領域に記憶した後（ステップＳ５３）、第１の管理プログラム格納用ブロック１２７１Ａを消去し（ステップＳ５４）、メモリ中に格納されている最新の管理プログラムを第１の管理プログラム格納用ブロック１２７１Ａに書込む（ステップＳ５５）。また、ステップＳ５３で記憶した消去回数識別子を「ｓ」から「ｓ＋１」にして、第１の管理プログラム格納用ブロック１２７１Ａの所定のページ（たとえば、最終ページ）に書込む（ステップＳ５６）。この状態が、図２２（ｂ）に示されている。ここでは、第１の管理プログラム格納用ブロック１２７１Ａのみ「管理プログラム（更新後）」で消去回数識別子が「ｓ＋１」となっており、第２〜第４の管理プログラム格納用ブロック１２７１Ｂ〜１２７１Ｄでは「管理プログラム（更新前）」で消去回数識別子が「ｓ」となっている。
【０１００】
その後、管理プログラム保存領域１２７内のすべての管理プログラム格納用ブロック１２７１について管理プログラムの更新が行われたか否かを判定する（ステップＳ５７）。ここでは、更新が行われていない第２〜第４の管理プログラム格納用ブロック１２７１Ｂ〜１２７１Ｄが存在するので（ステップＳ５７でＮｏの場合）、ステップＳ５２へと戻り、つぎに更新を行う管理プログラム格納用ブロック１２７１を選択し、上述した処理が繰り返し行われる。また、この管理プログラムの更新処理を管理プログラム保存領域１２７内のすべての管理プログラム格納用ブロック１２７１について実行するまで行われる。図２２（ｃ）は、すべての第１〜第４の管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄについて管理プログラムの更新処理が行われた状態を示している。ここでは、第１〜第４の管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄで「管理プログラム（更新後）」となっており、消去回数識別子も「ｓ＋１」となっている。
【０１０１】
また、ステップＳ５７で、管理プログラム保存領域１２７内のすべての管理プログラム格納用ブロック１２７１について管理プログラムの更新が行われた場合（ステップＳ５７でＹｅｓの場合）には、管理プログラム１２７２の更新処理が終了する。
【０１０２】
管理プログラム１２７２の更新処理が正常に終了した場合には、図２２（ｃ）に示されるように、管理プログラム保存領域１２７内のすべての管理プログラム格納用ブロック１２７１の消去回数識別子が一致した状態となる。しかし、上記した図２１に示される処理の途中で、異常な電源断（瞬断）が発生する場合がある。たとえば、第１の管理プログラム格納用ブロック１２７１Ａへの更新処理は正常に終了したが、つぎの第２の管理プログラム格納用ブロック１２７１Ｂへの更新処理の途中で瞬断が発生した場合には、図２２（ｂ）の状態でメモリシステム１０が終了し、つぎにメモリシステム１０の電源をオンにした場合には、図２２（ｂ）の状態で開始する。
【０１０３】
つまり、管理プログラム１２７２の更新処理中に瞬断が発生した場合には、管理プログラム保存領域１２７内の管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄ間で消去回数識別子１２７３に違いが生じることになる。これを利用して、この実施の形態では、電源オン後に、管理プログラム保存領域１２７内の管理プログラム格納用ブロック１２７１Ａ〜１２７１Ｄの消去回数識別子１２７３を比較することで、瞬断発生の有無を判断することが可能となる。
【０１０４】
そこで、図１２のブートローダ１４４は、電源オン時に、管理プログラムを図示しないＳＲＡＭに転送して、この管理プログラムを起動する機能のほかに、電源オン時に、ＮＡＮＤメモリ１２の管理プログラム保存領域１２７中の管理プログラム格納用ブロック１２７１の消去回数識別子１２７３を用いて瞬断が発生したか否かを判定する機能を有するものとする。
【０１０５】
図２３は、ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム１０がホスト装置と接続され、ホスト装置の２次記憶装置として動作しているものとする。
【０１０６】
まず、ホスト装置の電源がオンされ（ステップＳ７１）、メモリシステム１０に対して起動指示が出されると、ブートローダ１４４は、ＮＡＮＤメモリ１２内の管理プログラム保存領域１２７から管理プログラム１２７２を図示しないＳＲＡＭなどのメモリに転送する（ステップＳ７２）。ついで、ブートローダ１４４は、管理プログラム保存領域１２７中のすべての管理プログラム格納用ブロック１２７１の消去回数識別子１２７３が一致するか否かを判定する（ステップＳ７３）。
【０１０７】
すべての管理プログラム格納用ブロック１２７１の消去回数識別子１２７３が一致しなかった場合（ステップＳ７３でＮｏの場合）には、ブートローダ１４４は瞬断が発生したと判定する（ステップＳ７４）。ついで、ブートローダ１４４はメモリに格納した管理プログラムを起動する（ステップＳ７５）。この管理プログラムの起動によって図１３に示される機能ブロックが動作可能な状態となる。このとき、ブートローダ１４４は、ステップＳ７４で瞬断が発生したという判定を、起動した管理プログラムに伝え、データ管理部１４１の管理情報復元部１５５は瞬断発生時の管理情報復元処理を実行する（ステップＳ７６）。つまり、図１６に示した管理情報復元処理のフローチャートにおいて、ステップＳ３３の処理の後に、ステップＳ３４での管理情報復元部１５５による瞬断判定を行わずに、ステップＳ３６の処理に移る。
【０１０８】
その後、データ管理部１４１の固定領域管理部１５６は、更新途中だった管理プログラム保存領域１２７の管理プログラム１２７２の更新処理を続行する（ステップＳ７７）。この管理プログラム１２７２の更新処理は、各管理プログラム格納用ブロック１２７１の消去回数識別子１２７３が更新前の値であるものに対して行う。たとえば図２２（ｂ）の状態でメモリシステム１０が再起動した場合には、固定領域管理部１５６は、第１の管理プログラム格納用ブロック１２７１Ａ以外のブロックについて管理プログラム１２７２の更新処理を行う。以上によって、起動処理が終了する。
【０１０９】
一方、ステップＳ７３ですべての管理プログラム格納用ブロック１２７１の消去回数識別子１２７３が一致する場合（ステップＳ７３でＹｅｓの場合）には、この情報からだけでは瞬断が発生したか否か判断できず、ブートローダ１４４はメモリに格納した管理プログラムを起動する（ステップＳ７８）。ついで、管理プログラムの起動によって図１３に示される機能ブロックが動作可能な状態となり、データ管理部１４１の管理情報復元部１５５は、通常の管理情報復元処理を実行する（ステップＳ７９）。つまり、図１６に示した管理情報復元処理のフローチャートをステップＳ３２から順に実行する。以上によって、起動処理が終了する。
【０１１０】
なお、上述した説明では、固定領域１２８中の管理プログラム保存領域１２７での管理プログラム１２７２の更新処理時における瞬断判定の場合を例に挙げて説明したが、固定領域１２８のブロックに多重化して格納される情報であれば、上述した処理にどの情報を用いてもよい。たとえば、管理情報保存領域１２６に保存される管理情報保存情報のうち、固定領域１２８に保存される第１のルートポインタ２４０を多重化し、特定ページ（たとえば、最終ページ）に消去回数に対してユニークに割り振られる消去回数識別子を記憶した第１のルートポインタ格納用ブロックを瞬断判定に用いてもよい。この場合、第１のルートポインタ格納用ブロックは、特許請求の範囲における固定情報格納領域に対応している。また、これらの管理プログラム格納用ブロック１２７１や第１のルートポインタ格納用ブロックを瞬断判定に用いてもよい。
【０１１１】
以上のように、本実施の形態によれば、固定領域１２８中に多重化して保存されるブロックの特定のページに、そのブロックの消去回数に対してユニークに付される消去回数識別子を格納し、多重化される情報を格納するブロック間で消去回数識別子が同一となるように設定したので、メモリシステム１０の起動時にこれらのブロックの消去回数識別子を確認し、消去回数識別子が異なっている場合には、瞬断が発生したものと判定することができる。その結果、瞬断が発生した場合には、２つのログを用いた瞬断発生の判定処理を行わずに、速やかに瞬断時の起動処理を行うことができるという効果を有する。
【０１１２】
なお、上述した説明では、ＤＲＡＭ１１でのデータ管理単位をページサイズ単位とし、ＮＡＮＤメモリ１２でのデータの書込／読出単位をページサイズ単位とし、消去単位と管理単位をブロックサイズ単位としたが、これに限定される趣旨ではなく、それぞれ任意の単位を用いることが可能である。また、上述した説明では、ＮＡＮＤメモリ１２を構成するメモリセルトランジスタＭＴが２ビット以上の多値メモリである場合を例に挙げたが、２値を記憶するメモリセルトランジスタＭＴに対しても適用することができる。また、電荷蓄積層は浮遊ゲート型に限らず、ＭＯＮＯＳ（Metal-Oxide-Nitride-Oxide-Semiconductor）構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
【図面の簡単な説明】
【０１１３】
【図１】本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。
【図２】ＮＡＮＤメモリに含まれる１個のブロックの構成の一例を示す回路図である。
【図３】ＤＲＡＭとＮＡＮＤメモリの機能構成を模式的に示す図である。
【図４】メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。
【図５】キャッシュ管理情報の一例を示す図である。
【図６】論理ＮＡＮＤ管理情報の一例を示す図である。
【図７】ＮＡＮＤ内論物変換情報の一例を示す図である。
【図８】管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。
【図９】ログの一例を示す図である。
【図１０】第２のルートポインタの一例を示す図である。
【図１１】管理プログラム保存領域に保存される管理プログラムの状態の一例を示す図である。
【図１２】ドライブ制御部の機能構成の一例を示すブロック図である。
【図１３】データ管理部の機能構成の一例を示すブロック図である。
【図１４】メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。
【図１５】メモリシステムの管理情報の復元処理手順の一例を示すフローチャートである。
【図１６】メモリシステムの管理情報の復元処理を説明するための図である。
【図１７】メモリセルのデータとメモリセルの閾値電圧の関係とＮＡＮＤメモリに対する書き込み順序の一例を示す図である。
【図１８】管理情報の復元に用いるログの選択方法を説明するための図である（その１）。
【図１９】管理情報の復元に用いるログの選択方法を説明するための図である（その２）。
【図２０】管理情報の復元に用いるログの選択方法を説明するための図である（その３）。
【図２１】管理プログラムの更新処理の手順の一例を示すフローチャートである。
【図２２】管理プログラムの更新処理の状態を模式的に示す図である。
【図２３】ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。
【符号の説明】
【０１１４】
１０…メモリシステム、１１…ＤＲＡＭ、１２…ＮＡＮＤメモリ、１３…電源回路、１４…ドライブ制御部、１５…バス、３１…ＤＲＡＭ管理層、３２…論理ＮＡＮＤ管理層、３３…物理ＮＡＮＤ管理層、４１…キャッシュ管理情報、４２…管理情報、４２ｂ…論理ブロック管理情報、４２ａ…論理ページ管理情報、４３…ＮＡＮＤ内論物変換情報、１１１…一時記憶領域、１１２…作業領域、１２５…データ格納領域、１２６…管理情報保存領域、１２７…管理プログラム保存領域、１２８…固定領域、１２９…可変領域、１４１…データ管理部、１５１…データ転送処理部、１５２…管理情報管理部、１５３…管理情報書込機能、１５４…管理情報保存機能、１５５…管理情報復元部、１５６…固定領域管理部、２１０…スナップショット、２２０…ログ、２２０Ｂ…後ログ、２２０Ｂ…後ログ、２３０，２３０Ａ，２３０Ｂ…第２のルートポインタ、２４０，２４０Ａ〜２４０Ｃ…第１のルートポインタ、１２７１，１２７１Ａ〜１２７１Ｄ…管理プログラム格納用ブロック、１２７２…管理プログラム、１２７３…消去回数識別子。
【図１】
2009211218.tif 000003
【図２】
2009211218.tif 000004
【図３】
2009211218.tif 000005
【図４】
2009211218.tif 000006
【図５】
2009211218.tif 000007
【図６】
2009211218.tif 000008
【図７】
2009211218.tif 000009
【図８】
2009211218.tif 000010
【図９】
2009211218.tif 000011
【図１０】
2009211218.tif 000012
【図１１】
2009211218.tif 000013
【図１２】
2009211218.tif 000014
【図１３】
2009211218.tif 000015
【図１４】
2009211218.tif 000016
【図１５】
2009211218.tif 000017
【図１６】
2009211218.tif 000018
【図１７】
2009211218.tif 000019
【図１８】
2009211218.tif 000020
【図１９】
2009211218.tif 000021
【図２０】
2009211218.tif 000022
【図２１】
2009211218.tif 000023
【図２２】
2009211218.tif 000024
【図２３】
2009211218.tif 000025