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