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