(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）構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
【図面の簡単な説明】
【０１１７】
【図１】本発明の第１の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。
【図２】ＮＡＮＤメモリに含まれる１個のブロックの構成の一例を示す回路図である。
【図３】ＤＲＡＭとＮＡＮＤメモリの機能構成を模式的に示す図である。
【図４】メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。
【図５】キャッシュ管理情報の一例を示す図である。
【図６】論理ＮＡＮＤ管理情報の一例を示す図である。
【図７】ＮＡＮＤ内論物変換情報の一例を示す図である。
【図８】管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。
【図９】ログの一例を示す図である。
【図１０】ドライブ制御回路の機能構成の一例を示すブロック図である。
【図１１】第１の実施の形態に係るデータ管理部の機能構成の一例を示すブロック図である。
【図１２】メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。
【図１３】前ログと後ログの保存処理を説明するための図である。
【図１４】メモリシステムの管理情報の復元処理手順の一例を示すフローチャートである。
【図１５】メモリシステムの管理情報の復元処理を説明するための図である。
【図１６】第２の実施の形態に係るデータ管理部の機能構成の一例を示すブロック図である。
【図１７】各ブロックへの前後ログの保存順序と後ログの開放順序を説明するための図である。
【図１８】前ログ用の論理ブロックと後ログ用の論理ブロックを説明するための図である。
【符号の説明】
【０１１８】
１０…メモリシステム、１１…ＤＲＡＭ、１２…ＮＡＮＤメモリ、１３…電源回路、１４…ドライブ制御部、１５…バス、３１…ＤＲＡＭ管理層、３２…論理ＮＡＮＤ管理層、３３…物理ＮＡＮＤ管理層、４１…キャッシュ管理情報、４２…論理ＮＡＮＤ管理情報、４２ａ…論理ページ管理情報、４２ｂ…論理ブロック管理情報、４３…ＮＡＮＤ内論物変換情報、１１１…管理情報格納領域、１１２…作業領域、１２５…データ格納領域、１２６…管理情報保存領域、１４１…データ管理部、１５１…データ転送処理部、１５２…管理情報管理部、１５３…管理情報書込部、１５４…管理情報保存部、１５５…管理情報復元部、１５６…ログ格納ブロック開放部、１５７…書換ブロック均等化処理部、２１０…スナップショット、２２０Ａ…前ログ、２２０Ｂ…後ログ。
【図１】
0004551938.tif 000002
【図２】
0004551938.tif 000003
【図３】
0004551938.tif 000004
【図４】
0004551938.tif 000005
【図５】
0004551938.tif 000006
【図６】
0004551938.tif 000007
【図７】
0004551938.tif 000008
【図８】
0004551938.tif 000009
【図９】
0004551938.tif 000010
【図１０】
0004551938.tif 000011
【図１１】
0004551938.tif 000012
【図１２】
0004551938.tif 000013
【図１３】
0004551938.tif 000014
【図１４】
0004551938.tif 000015
【図１５】
0004551938.tif 000016
【図１６】
0004551938.tif 000017
【図１７】
0004551938.tif 000018
【図１８】
0004551938.tif 000019