以下に、本発明に係るメモリシステムの実施の形態を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
(第1の実施の形態)
本実施の形態のメモリシステムは、多値メモリのメモリセルトランジスタ(後述のNANDメモリ12)を用いてデータを記憶するシステムであり、データの書き込み処理などに対するログ(メモリシステムの管理情報に対する差分情報)として、データの書き込み処理前とデータの書き込み処理後とに、それぞれログを保存する。以下、データの書き込み処理前に保存されるのログを前ログといい、データの書き込み処理後に保存されるログを後ログという。本実施の形態では、前ログと後ログと、をそれぞれ同サイズとし、異なるブロックの同一ページ(位置)に保存する。さらに、前ログと後ログをそれぞれブロックの先頭ページから順番に保存するとともに、前ログと後ログとを同一の情報とする。そして、メモリシステムは、電源の異常遮断(例えば瞬断)などが起きた場合には、保存しておいた前ログまたは後ログのうち、何れか一方のログを用いて、管理情報を電源の異常遮断前の状態に復元する。本実施の形態では、電源の異常遮断が瞬断である場合について説明する。
以下では、本実施の形態のメモリシステムの概要について説明し、その後、メモリシステムの特徴と変形例について説明する。このメモリシステムは、不揮発性半導体記憶装置を含み、たとえば、パーソナルコンピュータなどのホスト装置の2次記憶装置(SSD:Solid State Drive)として使用され、ホスト装置から書込要求を出されたデータを記憶し、またホスト装置から読出要求のあったデータを読み出してホスト装置に出力する機能を有する。図1は、本発明の第1の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。このメモリシステム10は、第1の記憶部としてのDRAM(Dynamic Random Access Memory)11と、第2の記憶部としてのNAND型フラッシュメモリ(以下、NANDメモリという)12と、電源回路13と、コントローラとしてのドライブ制御部14と、を備える。
DRAM11は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としては、ホスト装置から書込要求があったデータをNANDメモリ12に書き込む前に一時的に保存したり、ホスト装置から読出要求があったデータをNANDメモリ12から読み出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報を格納するために使用される。さらに、作業領域用の記憶部としては、管理情報を復元する際に用いる前後ログ(前ログおよび後ログ)の展開時などに使用される。
NANDメモリ12は、データ保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータを記憶したり、DRAM11で管理される管理情報をバックアップ用に記憶したりする。この図1では、NANDメモリ12が4つのチャネル120A〜120Dによって構成されている場合が示されている。1つのチャネル120A〜120Dは、所定のサイズの記憶容量を有する8個のチップ122が1つにまとめられたパッケージ121を2つ含んでいる。また、各チャネル120A〜120Dは、ドライブ制御部14とバス15を介して接続されている。
電源回路13は、外部電源を受け、この外部電源を用いてメモリシステム10の各部に供給するための複数の内部電源を生成する。また、電源回路13は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号を生成する。このパワーオンリセット信号は、ドライブ制御部14に送られる。
ドライブ制御部14は、DRAM11とNANDメモリ12を制御する。詳細は後述するが、たとえば、電源回路13からのパワーオンリセット信号に応じて、管理情報の復元処理や管理情報の保存処理を行う。また、ドライブ制御部14は、ATAインタフェース(図中では、ATA I/Fと表記)を介して、ホスト装置との間でデータを送受信し、RS232Cインタフェース(図中では、RS232C I/Fと表記)を介して、デバッグ用機器との間でデータを送受信する。さらに、ドライブ制御部14は、メモリシステム10の外部に設けられる状態表示用LEDを制御するための制御信号を出力する。
ここで、NANDメモリ12の構成について説明する。NANDメモリ12は、データ消去の単位であるブロック(消去単位領域)を基板上に複数配列して構成される。図2は、NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。なお、この図2において、紙面上の左右方向をX方向とし、紙面上のX方向に垂直な方向をY方向としている。
NANDメモリ12の各ブロックBLKは、X方向に沿って順に配列された(m+1)個(mは0以上の整数)のNANDストリングNSを備えている。各NANDストリングNSは、Y方向に隣接するメモリセルトランジスタMT間で拡散領域(ソース領域またはドレイン領域)を共有してY方向に直列に接続された(n+1)個(nは0以上の整数)のメモリセルトランジスタMT0〜MTnと、この(n+1)個のメモリセルトランジスタMT0〜MTnの列の両端に配置される選択トランジスタST1,ST2と、を有する。
各メモリセルトランジスタMT0〜MTnは、半導体基板上に形成された積層ゲート構造を有するMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタMT0〜MTnは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じて2ビット以上のデータを記憶することができる多値メモリである。
なお、本実施の形態では、メモリセルトランジスタMT0〜MTnが多値メモリである場合について説明するが、各メモリセルトランジスタMT0〜MTnは、1ビットのデータを記憶する2値型のメモリであってもよい。また、以下に示す実施の形態では、メモリセルトランジスタMTは4値を記憶することができる多値メモリである場合を例に挙げて説明するが、4値よりも大きな値を記憶することができる多値メモリであってもよい。
NANDストリングNSを構成するメモリセルトランジスタMT0〜MTnの制御ゲート電極には、それぞれワード線WL0〜WLnが接続されており、また各NANDストリングNS中のメモリセルトランジスタMTi(i=0〜n)間は、同一のワード線WLi(i=0〜n)によって共通接続されている。つまり、ブロックBLK内において同一行にあるメモリセルトランジスタMTiの制御ゲート電極は、同一のワード線WLiに接続される。この同一のワード線WLiに接続される(m+1)個のメモリセルトランジスタMTiは1ページとして取り扱われ、NANDメモリ12では、このページ単位でデータの書き込みと読み出しが行われる。この同一のワード線WLiに接続される(m+1)個のメモリセルトランジスタMTiの群は1つのページを形成する単位となる。4値を記憶することができる多値メモリの場合には、同一のワード線WLiに接続されるメモリセルトランジスタMTiの群は、2つのページを形成する。最初に書込みが行われるページを下位ページとし、2回目に書込みが行われるページを上位ページとすると、NANDメモリ12では、このページ単位でデータの書込みと読み出しが行われる。
1つのブロックBLK内の(m+1)個の選択トランジスタST1のドレインにはそれぞれビット線BL0〜BLmが接続され、ゲートには選択ゲート線SGDが共通接続されている。また、選択トランジスタST1のソースはメモリセルトランジスタMT0のドレインと接続されている。同様に、1つのブロックBLK内の(m+1)個の選択トランジスタST2のソースにはソース線SLが共通接続され、ゲートには選択ゲート線SGSが共通接続されている。また、選択トランジスタST2のドレインはメモリセルトランジスタMTnのソースと接続されている。
なお、図示されていないが、1つのブロックBLK内のビット線BLj(j=0〜m)は、他のブロックBLKのビット線BLjとの間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロックBLK内において同一列にあるNANDストリングNS間は、同一のビット線BLjによって接続される。
つぎに、DRAM11とNANDメモリ12の機能構成について説明する。図3は、DRAMとNANDメモリの機能構成を模式的に示す図であり、(a)はDRAM11の機能構成を示し、(b)はNANDメモリ12の機能構成を示している。
図3(a)に示されるように、DRAM11は、ホスト装置から書込要求のあったデータが記憶されるライトキャッシュ領域WCと、ホスト装置から読出要求のあったデータが記憶されるリードキャッシュ領域RCと、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報が記憶される管理情報格納領域111と、管理情報を復元する際に使用される作業領域112と、を有する。
図3(b)に示されるように、NANDメモリ12は、ホスト装置から書込要求のあったデータが格納されるデータ格納領域125と、DRAM11の管理情報格納領域111で管理される管理情報が保存される管理情報保存領域126と、を有する。管理情報保存領域126は、管理情報として、後述するスナップショットと、前ログと、後ログと、後述するポインタ230などが保存される。この例では、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去の単位をブロックサイズ単位(たとえば512KB単位)とするものとする。そのため、ブロックサイズ単位で管理されるNANDメモリ12の各ブロックを記憶するための領域を、さらにページサイズ単位の領域に分割する。このとき、ページサイズを4KBとし、ブロックサイズを512KBとすると、1ブロック内には128個のページが形成される。
ここで、DRAM11の管理情報格納領域111で管理される管理情報について説明する。図4は、メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。なお、ここで、データとは、ホスト装置から書込要求/読出要求のあったデータのことをいうものとする。このメモリシステム10では、キャッシュの役割をするDRAM11でのデータ管理を行うDRAM管理層31と、NANDメモリ12での論理的なデータ管理を行う論理NAND管理層32と、NANDメモリ12での物理的なデータ管理やNANDメモリ12の延命処理などを行う物理NAND管理層33の3層構造でデータ管理が行われる。
DRAM11のライトキャッシュ領域WCとリードキャッシュ領域RCでは、ホスト装置のアドレス管理方法によって管理される論理アドレス(以下、LBA(Logical Block Address)という)で指定されたデータが、DRAM11上の所定の範囲の物理アドレス(以下、DRAM内物理アドレスという)に記憶される。また、DRAM管理層31内でのデータは、格納されるデータのLBAとDRAM内物理アドレスとの対応関係と、ページ中のセクタサイズ単位のデータの有無を示すセクタフラグと、を含むキャッシュ管理情報41によって管理される。
図5は、キャッシュ管理情報テーブルの一例を示す図である。ここでは、キャッシュ管理情報41は、DRAM11の1ページサイズの領域1つに対して1エントリとし、エントリ数はライトキャッシュ領域WCとリードキャッシュ領域RCに収まるページ数以下とする。各エントリには、ページサイズのデータのLBAと、DRAM内物理アドレスと、このページをセクタサイズで分割した各領域における有効データの位置を示すセクタフラグと、が関連付けられている。
NANDメモリ12では、DRAM11からのデータがNANDメモリ12上の所定の範囲の物理アドレス(以下、NAND内物理アドレスという)に格納される。また、多値メモリからなるNANDメモリ12では、書換可能回数に制約があるため、NANDメモリ12を構成する各ブロック間での書換回数が均等化するようにドライブ制御部14で制御されている。つまり、ドライブ制御部14は、NANDメモリ12内のあるNAND内物理アドレスに書き込まれたデータの更新を行う場合に、そのデータが含まれるブロックのうち更新が必要な部分を反映させたデータを、元のブロックとは異なるブロックに書き込み、元のブロックは無効化するようにして、NANDメモリ12を構成するブロック間での書換回数が均等化するように制御している。
このように、NANDメモリ12では、データの書込/読出処理と消去処理とでは処理単位が異なるとともに、データの更新処理においては、更新前のデータの位置(ブロック)と更新後のデータの位置(ブロック)とが異なるため、この実施の形態では、NAND内物理アドレスのほかにNANDメモリ12内で独自に使用されるNAND内論理アドレス(以下、NAND内論理アドレスという)を設けることにする。
そこで、論理NAND管理層32内でのデータは、DRAM11から受け取ったページサイズ単位のデータのLBAと、受け取ったデータが格納されるNANDメモリ12の論理的なページ位置を示すNAND内論理アドレスとの間の関係と、NANDメモリ12における消去単位のブロックとサイズが一致する論理的なブロック(以下、論理ブロックという)のアドレス範囲を示す関係と、を示す論理NAND管理情報42によって管理される。なお、この論理ブロックを複数まとめたものを論理ブロックとしてもよい。また、物理NAND管理層33でのデータは、NANDメモリ12におけるNAND内論理アドレスとNAND内物理アドレスとの対応関係を含むNAND内論理アドレス−物理アドレス変換情報(以下、論物変換情報という)43によって管理される。
図6は、論理NAND管理情報テーブルの一例を示す図であり、図7は、NAND内論物変換情報テーブルの一例を示す図である。図6に示されるように、論理NAND管理情報42は、論理ページ管理情報42aと論理ブロック管理情報42bとを含む。論理ページ管理情報42aは、1ページサイズの論理的な領域1つに対して1エントリとし、各エントリには、1ページサイズのデータのLBAと、NAND内論理アドレス(論理NANDブロックアドレス)と、このページが有効か否かを示すページフラグと、を含む。また、論理ブロック管理情報42bは、NANDメモリ12の1ブロックサイズの物理的な領域に対して設定されるNAND内物理アドレス(物理ブロックアドレス)を含む。また、図7に示されるように、NAND内論物変換情報43は、NANDメモリ12のNAND内物理アドレスとNAND内論理アドレスとが対応付けられている。
これらの管理情報によって、ホスト装置で使用されるLBAと、NANDメモリ12で使用されるNAND内論理アドレスと、NANDメモリ12で使用されるNAND内物理アドレスとの間を対応付けることができ、ホスト装置と当該メモリシステム10との間のデータのやり取りを行うことが可能となる。
なお、以下では、DRAM管理層31で管理される管理情報は、電源オフなどによって消失するので、揮発性テーブルともいい、論理NAND管理層32および物理NAND管理層33で管理される管理情報は、電源オフなどによって消失した際にメモリシステム10の次回起動時に支障を与え、保存しておくことが必要なので、不揮発性テーブルともいう。
この不揮発性テーブルは、NANDメモリ12に格納されているデータを管理するものであり、この不揮発性テーブルがなければNANDメモリ12に格納されている情報にアクセスできなかったり、既に記憶した領域内のデータを消してしまったりするので、不意の電源オフなどに備えて最新の情報に保存しておく必要がある。そのため、この実施の形態では、NANDメモリ12の管理情報保存領域126には、少なくとも不揮発性テーブルを含む管理情報を最新の状態で保存している。そこでつぎに、NANDメモリ12の管理情報保存領域126に保存される管理情報保存情報について説明する。なお、以下では、不揮発性テーブルのみが管理情報保存領域126に保存される場合を例に挙げる。
図8は、管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。この管理情報保存情報200には、ある時点における不揮発性テーブルの内容であるスナップショット210と、前ログ220Aと、後ログ220Bと、ポインタ(管理情報保存位置指示情報)230と、が格納される。
ここで、スナップショット210とは、DRAM11の管理情報格納領域111に記憶される管理情報のうち、少なくとも不揮発性テーブルを含む管理情報を所定の時点で保存した情報のことをいう。
前ログ220Aや後ログ220Bは、不揮発性テーブルの内容に変化があった場合に内容を変更した後の不揮発性テーブルとスナップショット210(またはスナップショット210と既に取られたログ)との差分情報である。具体的には、スナップショット210が取られた後の最初の前ログ220Aや最初の後ログ220Bは、不揮発性テーブルとスナップショット210との差分情報である。また、スナップショット210が取られた後の2番目以降の前ログ220Aは、既に取られた前ログ220Aとスナップショット210とを合わせたものと、不揮発性テーブルと、の差分情報である。また、スナップショット210が取られた後の2番目以降の後ログ220Bは、既に取られた後ログ220Bとスナップショット210とを合わせたものと、不揮発性テーブルと、の差分情報である。
前ログ220Aは、管理情報が実際に更新される前に生成しておく情報である。このため、データの書き込み処理などが行なわれることによって管理情報が実際に更新される前に、管理情報がどのように更新されるかの更新計画に基づいて、前ログ220Aは生成される。
また、後ログ220Bは、管理情報が実際に更新された後に生成される情報である。このため、データの書き込み処理などが行なわれることによって管理情報が実際に更新された後に、後ログ220Bは生成される。本実施の形態では、前ログ220Aのデータサイズと後ログ220Bのデータサイズを同じサイズとし、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの先頭ページから順番に保存することによって、前ログ220Aと後ログ220Bとを異なるブロックの同一ページに保存する。後ログ220Bは、前ログ220Aをコピーした情報であってもよいし、前ログ220Aと同様に不揮発性テーブルとスナップショット210(またはスナップショット210と既に取られたログ)とに基づいて算出された不揮発性テーブルとスナップショット210との差分情報であってもよい。
ポインタ230は、スナップショット210の位置と、このスナップショット210の保存後に一番目に取得された前ログ220Aの位置(第1ページ)と、このスナップショット210の保存後に一番目に取得された後ログ220Bの位置(第1ページ)と、を示している。
この図8において、スナップショット210、前ログ220A、後ログ220Bおよびポインタ230は、それぞれ異なるブロックに格納される。スナップショット210は、スナップショット格納用ブロックに格納される。スナップショット210には、NANDメモリ12の管理情報保存領域126内の不揮発性テーブルである論理NAND管理情報42とNAND内論物変換情報43とが含まれる。新しいスナップショット210が保存されると、以前に保存されていたスナップショット210とは別のブロックに保存される。
前ログ220A、後ログ220Bは、それぞれログ格納用ブロックに格納される。この前ログ220Aや後ログ220Bは、スナップショット210の世代が変わった場合に、新たなログ格納用ブロックの先頭ページから書き込まれる。
図9は、ログの一例を示す図である。なお、前ログ220Aと後ログ220Bは、同一の情報を有しているので、ここでは前ログ220Aをログの一例として説明する。前ログ220Aは、変更対象の管理情報となる対象情報と、その対象情報中の変更対象となるエントリである対象エントリと、その対象エントリ中の変更対象となる項目である対象項目と、その対象項目の変更の内容である変更内容と、を含む。
ポインタ230は、指示情報格納用ブロックに格納される。ポインタ230は、スナップショット210、前ログ220A、後ログ220Bの格納位置を示すブロックの先頭アドレスを示すものであればよい。ただし、ポインタ230のうちスナップショット210の格納位置を示す部分は、スナップショット210に含まれる各管理情報の先頭アドレスを示すものであってもよい。また、ポインタ230は、スナップショット210が新たに保存された場合や、スナップショット格納用ブロックまたはログ格納用ブロックが変更された場合に更新される。なお、前ログ220Aと後ログ220Bのポインタは、指示情報格納用ブロック内ではなく、スナップショット210の中に格納されていてもよい。
つぎに、ドライブ制御部14の機能について説明する。図10は、ドライブ制御回路の機能構成の一例を示すブロック図である。ドライブ制御部14は、DRAM11−NANDメモリ12間のデータ転送やNANDメモリ12に関する各種機能の制御を行うデータ管理部141と、ATAインタフェースから受けた指示に基づいてデータ管理部141と協働してデータ転送処理を行うATAコマンド処理部142と、データ管理部141およびATAコマンド処理部142と協動して各種のセキュリティ情報を管理するセキュリティ管理部143と、電源オン時に、各管理プログラム(FW)をNANDメモリ12から図示しないメモリ(たとえば、SRAM(Sstatic RAM))にロードするブートローダ144と、ドライブ制御部14内の各コントローラや回路の初期化を行う初期化管理部145と、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理するデバッグサポート部146と、を備える。
図11は、第1の実施の形態に係るデータ管理部の機能構成の一例を示すブロック図である。データ管理部141は、DRAM11とNANDメモリ12との間でデータ転送を行うデータ転送処理部151と、DRAM11およびNANDメモリ12に記憶されるデータの変更に伴って管理情報の変更や保存を行う管理情報管理部152と、電源オン時などに保存された管理情報に基づいて最新の管理情報を復元する管理情報復元部155と、をさらに備える。
また、管理情報管理部152は、管理情報書込部153と、管理情報保存部154と、をさらに備える。管理情報書込部153は、データ転送処理部151によるDRAM11またはNANDメモリ12で記憶されるデータの変更処理によって管理情報の更新が必要な場合に、DRAM11に記憶されている管理情報の更新を行う。
管理情報保存部154は、メモリシステム10が所定の条件を満たしたとき、管理情報をスナップショット210として、管理情報中の更新される分の情報を前ログ220Aとして、管理情報中の更新された分の情報を後ログ220Bとして、NANDメモリ12の管理情報保存領域126に保存する。また、このスナップショット210、前ログ220Aまたは後ログ220Bの保存に伴ってポインタ230の書き込まれる位置が変更される場合には、このポインタ230に対する更新処理も行う。
管理情報保存部154によるスナップショット210は、NANDメモリ12の管理情報保存領域126中のログ220(前ログ220Aと後ログ220B)を記憶するために設けられたログ記憶領域が埋まってしまった(領域がデータで満杯)になった場合など、本メモリシステムの所定の条件に応じて実行される。
また、管理情報保存部154が前ログ220Aと後ログ220Bを保存するタイミングは、管理情報書込部153によってDRAM11に記憶されている管理情報(不揮発性テーブル)の更新を伴うNANDメモリ12上のデータ更新時(NANDメモリ12へのデータ書込みが必要な場合)である。具体的には、データの書き込みを行なう処理の前と後とに、前ログ220Aと後ログ220Bとが保存される。
管理情報復元部155は、メモリシステム10の電源がオンされると、NANDメモリ12の管理情報保存領域126に保存されている管理情報保存情報に基づいた管理情報の復元処理を行う。具体的には、ポインタ230、スナップショット210、前ログ220A、後ログ220Bへと順にたどっていき、最新のスナップショット210に対する前ログ220Aや後ログ220Bが存在するか否かを判定する。前ログ220Aや後ログ220Bが存在しない場合には、スナップショット格納用ブロックのスナップショット210を管理情報としてDRAM11に復元する。また、前ログ220Aや後ログ220Bが存在する場合には、スナップショット格納用ブロックからスナップショット210を取得し、ログ格納用ブロックから前ログ220Aまたは後ログ220Bを取得して、DRAM11上でスナップショット210に前ログ220Aまたは後ログ220Bを反映させて管理情報(不揮発性テーブル)の復元を行う。
ここで、管理情報管理部152によるメモリシステム10の管理情報の保存処理について説明する。図12は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートであり、図13は、前ログと後ログの保存処理を説明するための図である。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているとともに、ホスト装置(メモリシステム10)が起動状態にあり、また、この起動状態の前のメモリシステム10の停止前にスナップショット210が保存されているものとする。
まず、ホスト装置(メモリシステム10)の前回終了時に保存されたスナップショット210を基に、ホスト装置(メモリシステム10)が起動された状態にある(ステップS11)。この後、必要に応じてホスト装置からNANDメモリ12へデータの読み書きが行なわれる。管理情報管理部152は、上記スナップショット保存条件を満たすか否か(ログ記憶領域が埋まってしまったか否か)を判定する(ステップS12)。スナップショット保存条件を満たさない場合(ステップS12でNoの場合)には、管理情報の更新を伴う指示(データの書き込みなど)を受けたか否かを判定する(ステップS13)。管理情報の更新を伴う指示を受けなかった場合(ステップS13でNoの場合)には、ステップS12へと戻る。
また、管理情報の更新を伴う指示を受けた場合(ステップS13でYesの場合)には、その指示を実行することによって管理情報がどのように更新されるか更新計画を決定し(ステップS14)、その更新計画をNANDメモリ12の管理情報保存領域126のログ格納用ブロックに前ログ220Aとして保存する(ステップS15)。
この更新計画(前ログ)は、ログ格納用ブロックに前ログ220Aが格納されていない場合には、管理情報が更新された場合の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、ログ格納用ブロックに前ログ220A(過去の前ログ220A)が既に格納されている場合には、管理情報が更新された場合の不揮発性テーブルと、スナップショット210と過去の前ログ220Aとを合わせたものと、の間の差分情報である。例えば、図13に示すように、X番目のデータの書き込み処理としてデータ書き込み(X)を行なう前に、このデータ書き込み(X)に対応する前ログ(X)がNANDメモリ12内に前ログ220Aとして保存される。ここでの前ログ(X)は、ログ格納用ブロックに過去の前ログ220Aが格納されていない場合のログであり、管理情報が更新された場合の不揮発性テーブルとスナップショット210との間の差分情報である。すなわち、ここでの前ログ(X)は、スナップショット210を取った後の最初の前ログである。この場合において、前ログ(X)は、ブロック50A(前ログ用のブロック)内のページ(1)(先頭ページ)に保存される。そして、管理情報保存機能154は、最初の前ログの格納位置として、ブロック50Aの第1ページの位置(アドレス)をポインタ230に格納する。ポインタ230へは、例えばブロック50AのIDと、第1ページのID(有効先頭ページID)を格納する。なお、ここでの前ログ220Aは、たとえば、前ログ220A(更新計画)をDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。
ついで、管理情報書込部153は、ステップS13で受けた指示を実行する(ステップS16)。このような指示として、たとえばユーザデータのNANDメモリ12のデータ保存領域の所定のブロックへの書込処理が挙げられる。具体的には、NANDメモリ12内のデータ格納領域125にデータ書き込み(X)が行なわれる。
この後、実行した処理に応じて、DRAM11に記憶されている管理情報が更新される。そして、管理情報保存部154は、管理情報中の更新された分の情報を後ログ220Bとして、NANDメモリ12の管理情報保存領域126に保存する(ステップS17)。ここでの後ログ220Bは、ログ格納用ブロックに後ログ220Bが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、ログ格納用ブロックに後ログ220B(過去の後ログ220B)が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット210と過去の後ログ220Bとを合わせたものと、の間の差分情報である。
これにより、データ書き込み(X)に対応する後ログ220B(X)がNANDメモリ12内に後ログ220Bとして保存される。このとき、後ログ220Bは、ブロック50B(ブロック50Aとは異なるブロック)内のページ(1)(前ログ220Aと同じ先頭ページ)に保存される。そして、管理情報保存機能154は、最初の後ログの格納位置として、ブロック50Bの第1ページの位置(アドレス)をポインタ230に格納する。ポインタ230へは、例えばブロック50BのIDと、第1ページのID(有効先頭ページID)を格納する。このように、後ログ220Bは、前ログ220Aとは異なるブロック内であって、前ログ220Aが保存されるページと同一のページに保存される。さらに、後ログ220Bとして保存される情報を、前ログ220Aとして保存される情報と同じ情報としておく。なお、ここでの後ログ220Bは、たとえば、後ログ220BをDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。その後、ステップS12へと戻る。
スナップショット保存条件を満たさない場合(ステップS12でNoの場合)であって、管理情報の更新を伴う指示を受けた場合(ステップS13でYesの場合)には、ステップS14〜S17の処理が繰り返される。具体的には、X番目のデータの書き込み処理と同様に(X+1)番目のデータの書き込み処理が行なわれる。すなわち、(X+1)番目のデータの書き込み処理としてデータ書き込み(X+1)を行なう前に、このデータ書き込み(X+1)に対応する前ログ(X+1)がNANDメモリ12内に前ログ220Aとして保存される。このとき、前ログ220Aは、ブロック50A内のページ(2)に保存される。
そして、NANDメモリ12内のデータ格納領域125にデータ書き込み(X+1)が行なわれる。さらに、データ書き込み(X+1)に対応する後ログ(X+1)がNANDメモリ12内に後ログ220Bとして保存される。このとき、後ログ220Bは、ブロック50B内のページ(2)の位置に保存される。このように、後ログ220Bは、前ログ220Aとは異なるブロック内であって、前ログ220Aが保存されるページと同一のページに保存される。さらに、後ログ220Bとして保存される情報と、前ログ220Aとして保存される情報と、を同じ情報としておく。
また、ステップS12でスナップショット保存条件を満たす場合(ステップS12でYesの場合)には、DRAM11の管理情報格納領域111内の少なくとも不揮発性テーブルを含む管理情報がスナップショット210としてNANDメモリ12の管理情報保存領域126に保存される(ステップS18)。そして、メモリシステム10の終了指示があるか否かを判定し(ステップS19)、終了指示がない場合にはステップS12へと戻り、終了指示がある場合には、そのまま処理が終了する。
つぎに、管理情報復元部155によるメモリシステム10の管理情報の復元処理について説明する。図14は、メモリシステムの管理情報の復元処理手順の一例を示すフローチャートであり、図15は、メモリシステムの管理情報の復元処理を説明するための図である。なお、ここでも、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
まず、瞬断からの回復などによってホスト装置の電源がオンされ、メモリシステム10に対して起動指示が出されると(ステップS31)、管理情報復元部155は、NANDメモリ12の管理情報保存領域126中のポインタ230を読込み(ステップS32)、スナップショット210が格納されているブロックのアドレスと、前後ログ(前ログ220A、後ログ220B)が格納されているブロックのアドレスを取得する(ステップS33)。
その後、管理情報復元部155は、スナップショット210をスナップショット格納用ブロックから取得し、DRAM11の管理情報格納領域111に復元する(ステップS34)。
さらに、管理情報復元部155は、前ログ用のブロックと、NANDメモリ12内の後ログ用のブロックと、に対してEraseページ検索を行なう(ステップS35)。Eraseページ検索は、ブロック内でデータの書き込まれていないページ(Eraseページ)が何れのページであるかをブロックの先頭ページから順番に検索する方法であり、例えばECCエラーを有し且つ「0」が所定数よりも少ないページをEraseページと判断する方法である。すなわち、管理情報復元部155はステップS35において、ブロック内で最後に書き込まれたページを検索する。
管理情報復元部155は、前ログ220Aが格納されているページのうち、最後のページ(Eraseページの1つ前のページ)が第何ページであるかを判断する。また、管理情報復元部155は、後ログ220Bが格納されているページのうち、最後のページが第何ページであるかを判断する。そして、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する(ステップS36)。本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じであるか否かのこの判断結果に基づいて、管理情報の復元に用いるログとして前ログ220Aと後ログ220Bの何れか一方を選択する。なお、ログ220A、220Bが格納されているブロックにEraseページが無い場合は、ブロックの最終ページが最後のログと判断する。
後ログ220Bの保存中に瞬断が発生すると、この後ログ220Bに対応する前ログ220Aと、保存中の後ログ220Bと、がそれぞれ前ログ用のブロックと後ログ用のブロックに保存されることとなる。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが同じになる。また、後ログ220Bの保存中に瞬断が発生しているので、後ログ220Bは、瞬断に起因して破壊されている場合がある。このため、後ログ220Bの保存中に瞬断が発生した場合は、前ログ220Aを用いて管理情報を復元する必要がある。
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページ(ページ数)が、後ログ220Bが格納されている最後のページ(ページ数)と同じであると判断した場合に(ステップS36でYesの場合)、管理情報の復元に用いるログとして前ログを選択する(ステップS37)。
一方、データ書き込みに対応する前ログ220Aの保存中に瞬断が発生すると、このデータ書き込みに対応する前ログ220Aのみが前ログ用のブロック内に保存され、このデータ書き込みに対応する後ログ220Bは後ログ用のブロック内に保存されない。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが異なることとなる。また、前ログ220Aの保存中に瞬断が発生しているので、前ログ220Aは、瞬断に起因して破壊されている場合がある。このため、前ログ220Aの保存中に瞬断が発生した場合は、後ログ220Bを用いて管理情報を復元する必要がある。
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なると判断した場合に(ステップS36でNoの場合)、管理情報の復元に用いるログとして後ログ220Bを選択する(ステップS38)。
この後、管理情報復元部155は、前ログ220Aまたは後ログ220Bのうち選択した方のログの最初のログから最新のログまでをログ格納用ブロックから取得し、DRAM11の作業領域112に展開する(ステップS39)。そして、スナップショット210に対して、古いログから順にログを反映させて管理情報(不揮発性テーブル)を復元し(ステップS40)、管理情報の復元処理が終了する。
具体的には、図15に示すように、前ログ220Aを格納しているブロック50Aに対してEraseページ検索が行なわれるとともに(1)、後ログ220Bを格納しているブロック50Bに対して、Eraseページ検索が行なわれる(2)。
そして、前ログ220Aと後ログ220Bの最後のページ(ページ数)が同じか否かが判断される(3)。前ログ220Aと後ログ220Bの最後のページが同じであれば、前ログ220Aを用いて管理情報が復元され(4)、前ログ220Aと後ログ220Bの最後のページが異なれば後ログ220Bを用いて管理情報が復元される(5)。
図16は、メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。まず、消去動作を行なうとメモリセルのデータは“0”となる。つぎに、図16(a)に示されるように、下位ページの書き込みを行なうと、メモリセルのデータはデータ“0”とデータ“2”になる。ついで、図16(b)に示されるように、上位ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“2”の閾値電圧の分布が大きくなる。この後、上位ページのデータが書き込まれると、メモリセルのデータは、図16(c)に示されるように、本来の閾値電圧を有するデータ“0”〜“3”となる。本実施の形態では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
つぎに、NANDメモリ12への書込み処理について説明する。図16(d)に示されるように、ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。なお、図16(d)では、説明の便宜上、ワード線を4本としている。
第1番目の書き込みは、メモリセル1の下位ページに1ビットのデータが書きこまれる。第2番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の下位ページに1ビットのデータが書きこまれる。第3番目の書き込みは、メモリセル1とビット方向に隣接したメモリセル3の下位ページに1ビットのデータが書きこまれる。第4番目の書き込みは、メモリセル1と対角に隣接したメモリセル4の下位ページに1ビットのデータが書きこまれる。
第5番目の書き込みは、メモリセル1の上位ページに1ビットのデータが書きこまれる。第6番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の上位ページに1ビットのデータが書きこまれる。第7番目の書き込みは、メモリセル3とビット方向に隣接したメモリセル5の下位ページに1ビットのデータが書きこまれる。第8番目の書き込みは、メモリセル3と対角に隣接したメモリセル6の下位ページに1ビットのデータが書きこまれる。
第9番目の書き込みは、メモリセル3の上位ページに1ビットのデータが書きこまれる。第10番目の書き込みは、メモリセル3とワード方向に隣接したメモリセル4の上位ページに1ビットのデータが書きこまれる。第11番目の書き込みは、メモリセル5とビット方向に隣接したメモリセル7の下位ページに1ビットのデータが書きこまれる。第12番目の書き込みは、メモリセル5と対角に隣接したメモリセル8の下位ページに1ビットのデータが書きこまれる。
第13番目の書き込みは、メモリセル5の上位ページに1ビットのデータが書きこまれる。第14番目の書き込みは、メモリセル5とワード方向に隣接したメモリセル6の上位ページに1ビットのデータが書きこまれる。第15番目の書き込みは、メモリセル7の上位ページに1ビットのデータが書きこまれる。第16番目の書き込みは、メモリセル7とワード方向に隣接したメモリセル8の上位ページに1ビットのデータが書きこまれる。
つぎに、管理情報の復元に用いるログの選択方法の具体例について説明する。図17〜図19は、管理情報の復元に用いるログの選択方法を説明するための図である。図17〜図19では、前ログや後ログが、それぞれ前ログ用のブロック(各図の左側のブロック)、後ログ用のブロック(各図の右側のブロック)にページ毎に格納された状態を示している。図17〜図19での1つの物理ブロック内のページは、図16に対応しているものとする。つまり、1〜4、7〜8、11〜12ページは図16の下位ページであり、5〜6、9〜10、13〜16ページは図16の上位ページである。また、前ログ用のブロックや後ログ用のブロックでは、ブロック内の各行が1ページに対応している。なお、図17〜図19では、下位ページと上位ページに説明上分離して表示しているが、これらの下位ページと上位ページとを合わせたものが1つの物理ブロックを構成するものとする。
図17〜図19では、正常に保存されたログをログx1で示し、瞬断に起因して破壊されたログをログy1で示し、書き込み中のログをログz1で示している。ログz1の書き込み中に瞬断が発生してログy1が破壊されているので、ログz1のページに対応するメモリセルとログy1のページに対応するメモリセルは、同一のメモリセルである。そして、ログy1のページが下位側のページ(下位ページ)であり、ログz1のページが上位側のページ(上位ページ)である。また、各ブロックのログ(ページ)のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
図17(a)は、通常時(電源の異常遮断が発生せずに電源オフとなった場合)の前ログと後ログを示す図であり、図17(b)〜(g)は、瞬断が発生した場合の前ログと後ログを示す図である。
図17(a)では、スナップショット210を保存することなくメモリシステム10の電源をオフにした場合に、NANDメモリ12に保存されている前ログおよび後ログを示している。図17(a)の場合、下位ページ(1〜4ページ)にのみデータを書込んでいるので、下位ページの書込中に瞬断が発生しても、下位ページデータ破壊は発生しない。図17(a)に示すように、本実施の形態では前ログと後ログと、をそれぞれ異なるブロックの同一ページに保存しているので、通常時に電源がオフにされると、前ログの最後のページと後ログの最後のページとは、同じページ位置となる。したがって、この場合は前ログを用いて管理情報が復元されることとなる。なお、図17(a)に示す通常時の場合は、前ログの代わりに後ログを用いて管理情報を復元させてもよい。
図17(b)は、前ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図17(b)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図17(b)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログz1(保存途中のログ)が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
図17(c)は、後ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図17(c)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図17(c)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログz1が保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する前ログが既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
図17(d)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。図17(d)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図17(d)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログz1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
図18(e)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図18(e)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なった後、最初のデータ書き込みに対応する後ログとして「ログ書き込み(1)」を行なっている間に瞬断が発生している。図18(e)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(e)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログx1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(2)」に対応するログx1と「ログ書き込み(1)」に対応するログz1が保存される。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
図18(f)は、前ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(f)に示すように、前ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図18(e)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1(前段ページ)とログz1(後段ページ)とが保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
図18(g)は、後ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(g)に示すように、後ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図18(g)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログx1とログz1とが保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが2ページに渡って既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
図19(h)は、前ログとして2ブロックに跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なっている間に、瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目は最初のページ(下位ページ)であるので前ログ側のブロックにはログy1が発生しない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」に対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
図19(i)は、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、「ログ書き込み(1)」の再書込み処理として「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目の第2ページが下位ページであるので前ログ側のブロックにはログy1が発生していない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」の前段ページに対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応する後段ページのログx1が保存される。さらに、前ログ側の2ブロック目の第2ページに「ログ書き込み(2)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
なお、本実施の形態では、NANDメモリ12が多値メモリである場合について説明したが、NANDメモリ12は2値モードのメモリであってもよい。この場合、瞬断によって前ログや後ログが破壊されることはないので、後ログ220Bとして保存する情報は、前ログ220Aとして保存する情報と同じ情報としておく必要はない。したがって、NANDメモリ12が2値モードのメモリである場合、後ログ220Bは、データを実際に更新した後にデータが更新されたことを承認するための情報(更新承認情報)であってもよい。
NANDメモリ12が2値モードのメモリであって、後ログ220Bが更新承認情報である場合も、管理情報復元部155は管理情報を復元する際に、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する。そして、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じである場合に、前ログを用いて管理情報を復元させる。また、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なる場合、後ログと重複している前ログ(後ログが保存されているページと同じページの前ログ)を用いて管理情報を復元させる。例えば、後ログが第1ページから第10ページまで保存されている場合、管理情報復元部155は、第1ページから第10ページまでの前ログを用いて管理情報を復元させる。
また、NANDメモリ12が2値モードのメモリの場合に、後ログ220Bとして保存する情報を、前ログ220Aと同じ情報としてもよい。この場合、管理情報復元部155は、NANDメモリ12が多値メモリである場合と同様の処理によって管理情報を復元させる。なお、この場合において、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと異なる場合、後ログと重複している前ログを用いて管理情報を復元させてもよい。
このように、本実施の形態では、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かの比較結果に基づいて、管理情報復元部155が前ログまたは後ログの何れか一方を選択している。さらに、管理情報復元部155は、前記比較結果に基づいて、選択した前ログまたは後ログのうち管理情報の復元に用いるログ(正常部分)をNANDメモリ12から抽出している。そして、管理情報復元部155は、抽出したログを用いて管理情報を復元している。
ここで、NANDメモリ12が多値メモリである場合や2値モードのメモリである場合に、管理情報復元部155が抽出する前ログまたは後ログについて説明する。図20は、抽出される前ログまたは後ログを説明するための図である。処理(X−1)に対する後ログ(X−1)の保存中に瞬断(g1)が発生すると、データ書き込み(X−1)は完了しているので、管理情報復元部155は、処理(X−1)は完了したと判断する。そして、管理情報復元部155は、正常な最新の前ログとして前ログ(X−1)を選択する。この後、管理情報復元部155は、スナップショット210を取った後の、最初の前ログから前ログ(X−1)までを用いて管理情報を復元する(h1)。
また、後ログ(X−1)の保存後から後ログ(X)の保存開始までの間に瞬断(g2)が発生すると、データ書き込み(X)は完了していないので、管理情報復元部155は、処理Xは完了していないと判断する。そして、管理情報復元部155は、保存の完了している最新の後ログとして後ログ(X−1)を選択する。この後、管理情報復元部155は、スナップショット210を取った後の、最初の後ログから後ログ(X−1)までを用いて管理情報を復元する(h2)。なお、NANDメモリ12が2値モードのメモリである場合、管理情報復元部155は、保存の完了している最新の前ログとして前ログ(X−1)を選択してもよい。この場合、管理情報復元部155は、スナップショット210を取った後の、最初の前ログから前ログ(X−1)までを用いて管理情報を復元する(h3)。
同様に、処理Xに対する後ログ(X)の保存中に瞬断(g3)が発生すると、データ書き込み(X)は完了しているので、管理情報復元部155は、処理Xは完了したと判断する。そして、管理情報復元部155は、正常な最新の前ログとして前ログ(X)を選択する。この後、管理情報復元部155は、スナップショット210を取った後の、最初の前ログから前ログ(X)までを用いて管理情報を復元する(h4)。
また、後ログ(X)の保存後から後ログ(X+1)の保存開始までの間に瞬断(g4)が発生すると、データ書き込み(X+1)は完了していないので、管理情報復元部155は、処理(X+1)は完了していないと判断する。そして、管理情報復元部155は、保存の完了している最新の後ログとして後ログ(X)を選択する。この後、管理情報復元部155は、スナップショット210を取った後の、最初の後ログから後ログ(X)までを用いて管理情報を復元する(h5)。なお、NANDメモリ12が2値モードのメモリである場合、管理情報復元部155は、保存の完了している最新の前ログとして前ログ(X)を選択してもよい。この場合、管理情報復元部155は、スナップショット210を取った後の、最初の前ログから前ログ(X)までを用いて管理情報を復元する(h6)。
なお、、本実施の形態では、スナップショット210の世代が変わった場合に、前ログ220Aや後ログ220Bを新たなログ格納用ブロックの先頭ページから書き込むこととしたが、スナップショット210の世代が変わっても、前ログ220Aや後ログ220Bを、同じログ格納用ブロックに連続して書き込んでもよい。なお、以上の説明において、第1の記憶部としてDRAMを用いる場合を例示したが、他の揮発性半導体記憶装置や不揮発性半導体記憶装置を用いてもよい。
このように第1の実施の形態によれば、メモリシステム10において瞬断が起きた場合であっても、前ログ220Aと後ログ220Bとを異なるブロックの同一ページに保存しておくので、前ログ220Aの最後のページと後ログ220Bの最後のページに基づいて、瞬断の発生タイミングが何れのタイミングであったかを容易に判断することが可能となる。また、前ログおよび後ログの中から何れのログを用いて管理情報を復元できるか(復元ポイント)を容易に判断することが可能となる。したがって、メモリシステム10を異常遮断が起きる前の状態に容易かつ迅速に復帰させることができる。
また、前ログと後ログとを異なるブロックの各先頭ページから保存していくので、前ログや後ログのログ管理や、ブロックの管理が容易になる。また、NANDメモリ12が多値メモリの場合、少なくとも前ログ220Aと後ログ220Bの何れか一方は瞬断に起因して破壊されることはない。したがって、何れのタイミングで瞬断が起きた場合であっても、前ログ220Aと後ログ220Bとの何れか一方を用いることによって、メモリシステム10を瞬断が起きる前の状態に容易に復帰させることが可能となる。
また、前ログ220Aと後ログ220Bとを異なるブロックの同一ページに保存しておくので、前ログ用のブロックと後ログ用のブロックをログ用のブロックとして獲得するタイミングや、前ログ用のブロックと後ログ用のブロックを開放するタイミングを容易に合わせることが可能となる。したがって、前ログ用のブロックや後ログ用のブロックの管理が容易になる。
(第2の実施の形態)
つぎに、図21および図22を用いてこの発明の第2の実施の形態について説明する。第2の実施の形態では、後ログのログ長(サイズ)が所定長を超えた場合に、後ログを保存しているブロックのうち古くなったブロックから順番に所定のブロック数だけ開放する。
図21は、第2の実施の形態に係るデータ管理部の機能構成の一例を示すブロック図である。ここでのデータ管理部141は、データ転送処理部151と、管理情報管理部152と、管理情報復元部155と、に加えて、ログ格納ブロック開放部156と、書換ブロック均等化処理部157と、をさらに備える。
ログ格納ブロック開放部156は、後ログのログ長(サイズ)が所定長を超えたか否かを判断するとともに、後ログのログ長が所定長を超えた場合には、後ログを保存しているブロックのうち最も古いブロック(後ログの保存期間が最も長いブロック)を開放する。
書換ブロック均等化処理部157は、各ブロックの消去回数を揃えるために、平準化処理を実行する。書換ブロック均等化処理部157は、データ格納領域125中のブロックや管理情報保存領域126中のブロックを、他のブロックに書換える際に、各ブロックの書換可能回数が均等化されるよう書換先のブロックを選択する。そして、書換ブロック均等化処理部157は、選択した書換先のブロックを用いてデータの書換えを行なうよう、データ転送処理部151や管理情報管理部152の管理情報保存部154に指示する。
また、書換ブロック均等化処理部157は、新たなブロックにデータ、スナップショット210、前ログ220A、後ログ220B、ポインタ230などを書込む際にも、各ブロックの書換可能回数が均等化されるよう書込先のブロックを選択する。そして、書換ブロック均等化処理部157は、選択した書換先のブロックを用いてデータの書換えを行なうよう、データ転送処理部151や管理情報管理部152の管理情報保存部154に指示する。なお、この場合において、利用可能なブロックであれば、そのブロックが過去にデータ格納領域125として使用されていたブロックであるか、管理情報保存領域126が格納されていたブロックであるか、を問わず、書込先のブロックを指定することができる。
図22は、各ブロックへの前後ログの保存順序と後ログの開放順序を説明するための図である。ここでは、前ログが、ブロック50A、ブロック51A、ブロック52Aの順番で各ブロック内に保存され、後ログが、ブロック50B、ブロック51B、ブロック52Bの順番で各ブロック内に保存される場合について説明する。
図22(a)に示すように、前ログは、ブロック50A内の先頭ページから順番に保存されていき、後ログは、ブロック50B内の先頭ページから順番に保存されていく。この後、図22(b)に示すように、ブロック50A内の全てのページに前ログが書き込まれると(1)、次のブロック51Aを用いて前ログが保存されていく(2)。また、ブロック50B内の全てのページに後ログが書き込まれると(1)、次のブロック51Bを用いて後ログが保存されていく(2)。このとき、前ログは、ブロック51A内の先頭ページから順番に保存されていき、後ログは、ブロック51B内の先頭ページから順番に保存されていく。
さらに、ブロック51A内の全てのページに前ログが書き込まれると、次のブロック52Aを用いて前ログが保存されていく。また、ブロック51B内の全てのページに後ログが書き込まれると、次のブロック52Bを用いて後ログが保存されていく。このとき、前ログは、ブロック52A内の先頭ページから順番に保存されていき、後ログは、ブロック52B内の先頭ページから順番に保存されていく。
ログ格納ブロック開放部156は、後ログのログ長(サイズ)が所定長(例えば1ブロック)を超えた場合に、図22(c)に示すように、後ログを保存しているブロックのうち最も古いブロックを開放する。このとき、ログ格納ブロック開放部156は、開放するブロック内の後ログが前ログと同一の情報を格納しているか否かを確認しておく。そして、開放するブロック内の後ログが、前ログと同一の情報を格納している場合に限り、ログ格納ブロック開放部156は、後ログを格納しているブロックを開放対象のブロックとする。
例えば、後ログのログ長が1ブロックを超えた場合に最も古いブロックを開放するよう設定されている場合、ログ格納ブロック開放部156は、ブロック51Bへの書き込みを開始した後に、ブロック50Bを開放する(ST1)。また、ログ格納ブロック開放部156は、ブロック52Bへの書き込みを開始した後に、ブロック51Bを開放する(ST2)。
また、後ログのログ長が2ブロックを超えた場合に最も古いブロックから順番に開放するよう設定されている場合、後ログ用のブロックとしてはブロック50Bが最も古いので、ブロック52Bへの書き込みを開始した後に、ログ格納ブロック開放部156は、ブロック50Bを開放し(ST1)、続いてブロック51Bを開放する(ST2)。なお、後ログのログ長が2ブロックを超えた場合に、最も古いブロックを1ブロックだけ開放させてもよい。この場合、ログ格納ブロック開放部156は、ブロック50Bのみを開放する(ST1)。
メモリシステム10では、書換ブロック均等化処理部157が、各ブロックの消去回数を揃える処理として平準化処理(ウェアレベリング:wear leveling)を実行している。これにより、メモリシステム10では、一部のブロックへ消去処理が集中するのを防ぐことができるため、NANDメモリ12の寿命を延ばすことが可能となる。本実施の形態では、平準化処理の対象となるブロックを開放するので平準化処理の効率が向上する。
なお、本実施の形態では、後ログのログ長が1ブロックや2ブロックを越えた場合にブロックを開放させる場合について説明したが、ブロックを開放させるタイミングはこれらのタイミングに限らず、後ログのログ長が1ブロック以上であればよい。例えば、後ログのログ長が1.5ブロックを越えた場合に古いブロックを開放させてもよいし、後ログのログ長が1ブロックと所定のページ数を越えた場合に古いブロックを開放させてもよい。
また、メモリシステム10は、古いブロックを開放した後、開放したブロックを何れのタイミングで消去してもよい。メモリシステム10は、例えば、メモリシステム10への処理に負荷のかからないタイミングで古いブロックを消去する。また、メモリシステム10は、後ログ用の古いブロックを開放する代わりに、前ログ用の古いブロックを開放してもよい。なお、NANDメモリ12が2値モードのメモリであって、後ログ220Bがデータの更新承認情報である場合は、ログ長が所定長を越えた場合の開放対象を、後ログ用の古いブロックとし、前ログ用のブロックは、ログ長が所定長を越えた場合の開放対象としない。
また、本実施の形態では、古いブロックから順番に開放していく場合について説明したが、消去回数の少ないブロックから順番に開放してもよい。これにより、消去回数の少ないブロックが、消去回数の多いブロックよりも開放されやすくなる。
このように第2の実施の形態によれば、後ログのログ長が所定長を超えた場合に、後ログを格納している古いブロックを開放するので、開放ブロックが増加し、この結果効率良く平準化処理を行なうことが可能となる。
また、前ログと後ログとを異なるブロックの各先頭ページから保存していくので、開放対象となるブロックの管理が容易になる。また、古いブロックから順番に開放していくので、消去から書き込みまでの時間をブロック間で平均化することが可能となる。これにより、NANDメモリ12では、リラクゼーションを行なう時間を十分に確保できる。
(第3の実施の形態)
つぎに、図23を用いてこの発明の第3の実施の形態について説明する。第3の実施の形態では、前ログを保存していくブロック群と、後ログを保存していくブロック群とを、それぞれ異なるブロック群とし、さらに各ブロック群を高速なアクセスが可能なブロック群(論理ブロック)とする。
第1の実施の形態の図1で示したように、メモリシステム10は、NANDメモリ12が4つのチャネル120A〜120Dによって構成されており、各チャネル120A〜120Dは、ドライブ制御部14とバス15を介してそれぞれ接続されている。
これにより、メモリシステム10は、4つのチャネル120A〜120Dを並列して動作させることができる構成となっている。例えば、各バス15が8ビットバスである場合、メモリシステム10は、4つのチャネル120A〜120Dを並列で動作させることによって、32ビット単位でNANDメモリ12にアクセスすることができる。
メモリシステム10では、8ビットバスでNANDメモリ12にアクセスする際には、アクセスするブロック毎にアドレスが指定され、32ビットバスでNANDメモリ12にアクセスする際には、アクセスするブロック群毎にアドレスが指定される。
さらに、各チャネル120A〜120Dは、それぞれ2つのプレーンを有している。例えば、チャネル120Aは、プレーン0用のブロックとプレーン1用のブロックを有している。プレーン0に対応するブロックは、プレーン0用のバッファを介して8ビット単位でアクセス(8ビット毎のデータの読み書き)され、プレーン1に対応するブロックは、プレーン1用のバッファを介して8ビット単位でアクセスされる。
チャネル120Aでは、プレーン1用のバッファに記憶しているデータをプレーン1側のブロックに書き込んでいる間、プレーン0用のバッファにはホスト装置などからのデータを書き込んでおく。また、プレーン0用のバッファに記憶しているデータをプレーン0側のブロックに書き込んでいる間、プレーン1用のバッファにはホスト装置などからのデータを書き込んでおく。チャネル120Aでは、これらの処理を交互に繰り返すことによって、1つのプレーンを用いてデータの読み書きを行なう場合の2倍の速度でデータの読み書きを行なうことができる。
同様に、チャネル120B〜120Dでは、2つのプレーンを用いてデータの読み書きを行なうことによって、1つのプレーンを用いてデータの読み書きを行なう場合の2倍の速度でデータの読み書きを行なうことができる。
そこで、本実施の形態では、各チャネル120A〜120Dを並列で動作させるとともに、各チャネル120A〜120D内では2つのプレーンを用いてデータの読み書きを行なうことができる論理ブロック(ブロック群)に対して、前ログと後ログを保存する。また、本実施の形態では、前ログを保存していく論理ブロックと、後ログを保存していく論理ブロックとを、それぞれ異なる論理ブロックとする。ここでの論理ブロックは、各チャネル120A〜120D内の各プレーンからそれぞれ1つずつのブロックを集めた8ブロックからなるブロック群である。例えば、1つのブロックが512Kのサイズを有している場合、論理ブロックは4Mのサイズとなる。
図23(a)、図23(b)に示すように、チャネル120A〜120Dは、それぞれプレーン0とプレーン1(図中では、PL0、PL1と表記)を有している。ブロックP0,Q0,R0は、チャネル120Aのプレーン0であり、ブロックP1,Q1,R1は,チャネル120Aのプレーン1である。また、ブロックP2,Q2,R2は、チャネル120Bのプレーン0であり、ブロックP3,Q3,R3は、チャネル120Bのプレーン1である。また、ブロックP4,Q4,R4は、チャネル120Cのプレーン0であり、ブロックP5,Q5,R5は、チャネル120Cのプレーン1である。また、ブロックP6,Q6,R6は、チャネル120Dのプレーン0であり、ブロックP7,Q7,R7は、チャネル120Dのプレーン1である。
図23(a)では、ブロックP0〜P7によって1つの論理ブロックを構成し、ブロックQ0〜Q7によって1つの論理ブロックを構成している場合を示しており、図21(b)では、ブロックR0〜R7によって1つの論理ブロックを構成している場合を示している。
この場合において、本実施の形態では、図23(a)に示すように、ブロックP0〜P7からなる論理ブロックを前ログ用のブロックに割り当てるとともに、ブロックQ0〜Q7からなる論理ブロックを後ログ用のブロックに割り当てる。
これにより、前ログが保存される論理ブロックと、後ログが保存される論理ブロックと、を別々の論理ブロックとする。さらに、前ログが保存される論理ブロック内のブロック(保存開始ブロックなど)と、後ログが保存される論理ブロック内のブロック(保存開始ブロックなど)と、を同一チャネルで同一プレーンのブロックとする。さらに、前ログが保存されるブロック内の領域(ページ位置)と、後ログが保存されるブロック内の領域(ページ位置)とを、同一の領域とする。
例えば、前ログとして保存する情報と後ログとして保存する情報とが、同一の情報である場合、前ログ内の情報と後ログ内の情報とが一致していることが確認されれば、前ログまたは後ログの一方は開放(消去)してもよい。例えば、後ログ用の論理ブロックが全て後ログで満たされた場合、前ログ用の論理ブロックを保存しておけば、後ログ用の論理ブロックを開放してもよい。また、前ログ用の論理ブロックが全て前ログで満たされた場合、後ログ用の論理ブロックを保存しておけば、前ログ用の論理ブロックを開放してもよい。
このように、前ログ用の論理ブロックや後ログ用の論理ブロックは、それぞれ各チャネル120A〜120Dを並列で動作させるとともに、各チャネル120A〜120D内で2つのチャネルを用いてデータの読み書きを行なうことができる論理ブロックであるので、ブロックの開放や消去を高速に行なうことが可能となる。
一方、図23(c)に示すように、1つの論理ブロックに前ログ用と後ログ用のブロックを混在させて保存する場合、各ログの開放(消去)を行なう際にはブロック毎に開放を行なう必要があり、低速な開放処理となる。
なお、NANDメモリ12が2値モードのメモリであって、後ログ220Bがデータの更新承認情報である場合は、ログ長が所定長を越えた場合の開放対象を、後ログ用の論理ブロックとし、前ログ用の論理ブロックは、ログ長が所定長を越えた場合の開放対象としない。
また、本実施の形態では、前ログを保存する論理ブロック内のブロックと、後ログを保存する論理ブロック内のブロックと、を同一チャネルで同一プレーンのブロックとする場合について説明したが、前ログを保存する論理ブロック内のブロックと、後ログを保存する論理ブロック内のブロックと、を異なるチャネルの異なるプレーンのブロックとしてもよい。
また、本実施の形態では、NANDメモリ12が4つのチャネル120A〜120Dによって構成されている場合について説明したが、NANDメモリ12のチャネル数は3つ以下であってもよいし5つ以上であってもよい。
また、本実施の形態では、チャネル120A〜120Dがそれぞれ2つのプレーンを有している場合について説明したが、各チャネルを3つ以上のプレーンを有する構成としてもよいし、1つのプレーンを有する構成としてもよい。
このように第3の実施の形態によれば、前ログを保存していく論理ブロックと、後ログを保存していく論理ブロックとを、それぞれ異なる論理ブロックとしているので、複数のチャネルを並列で動作させつつ複数のプレーンを用いて論理ブロックの開放や消去を行なうことができる。したがって、不要となった論理ブロックを高速に開放や消去することが可能となる。
また、前ログと後ログとを異なるブロックの同一ページに保存しているので、ブロックや論理ブロックを開放できるタイミングが前ログ用のブロックと後ログ用のブロックとで同じになる。また、前ログと後ログとを異なる論理ブロック内の同一ブロックに、それぞれ先頭ページから保存していくので、ブロックの管理や論理ブロックの管理が容易になる。
なお、上述した説明では、NANDメモリ12を構成するメモリセルトランジスタMTが2ビットの多値メモリである場合を例に挙げたが、2ビット以上の多値メモリであれば、どのようなメモリセルトランジスタMTに対しても適用することができる。その際、ページは上位ページ、中位ページ、下位ページというように3ページ以上で構成されることもあり、その構成においては上位ページ書き込み時に中位ページおよび下位ページで下位ページデータ破壊が発生する可能性がある。
また、電荷蓄積層は浮遊ゲート型に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor)構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
10…メモリシステム、11…DRAM、12…NANDメモリ、13…電源回路、14…ドライブ制御部、15…バス、31…DRAM管理層、32…論理NAND管理層、33…物理NAND管理層、41…キャッシュ管理情報、42…論理NAND管理情報、42a…論理ページ管理情報、42b…論理ブロック管理情報、43…NAND内論物変換情報、111…管理情報格納領域、112…作業領域、125…データ格納領域、126…管理情報保存領域、141…データ管理部、151…データ転送処理部、152…管理情報管理部、153…管理情報書込部、154…管理情報保存部、155…管理情報復元部、156…ログ格納ブロック開放部、157…書換ブロック均等化処理部、210…スナップショット、220A…前ログ、220B…後ログ。