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