以下に、本発明に係るメモリシステムおよび管理情報の保存方法の実施の形態を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
(第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ビット以上のデータを記憶することができる多値メモリである。なお、以下に示す実施の形態では、メモリセルトランジスタ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つのページを形成する単位となる。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内論理アドレスと、このページが有効か否かを示すページフラグと、を含む。また、論理ブロック管理情報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は生成される。
ポインタ230は、スナップショット210の位置と、このスナップショット210の保存後に一番目に取得された前ログ220Aの位置と、このスナップショット210の保存後に一番目に取得された後ログ220Bの位置と、を示している。
この図8において、スナップショット210、前ログ220A、後ログ220Bおよびポインタ230は、それぞれ異なるブロックに格納される。スナップショット210は、スナップショット格納用ブロックに格納される。スナップショット210には、NANDメモリ12の管理情報保存領域126内の不揮発性テーブルである論理NAND管理情報42とNAND内論物変換情報43とが含まれる。新しいスナップショット210が保存されると、以前に保存されていたスナップショット210とは別のブロックに保存される。
前ログ220A、後ログ220Bは、それぞれログ格納用ブロックに格納される。この前ログ220Aや後ログ220Bは、スナップショットの世代が変わっても、同じログ格納用ブロックに連続して書き込まれる。
図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が存在しない場合には、上記スナップショット保存条件の(1)に示した場合に相当する前回のメモリシステム10の終了が正常終了であると判定し、スナップショット格納用ブロックのスナップショット210を管理情報としてDRAM11に復元する。また、前ログ220Aや後ログ220Bが存在する場合には、上記スナップショット保存条件の(1)に示した場合以外のメモリシステム10が正常終了ではなく瞬断などの異常終了であった場合であるので、スナップショット格納用ブロックからスナップショット210を取得し、ログ格納用ブロックから前ログ220Aまたは後ログ220Bを取得して、DRAM11上でスナップショット210に前ログ220Aまたは後ログ220Bを反映させて管理情報(不揮発性テーブル)の復元を行う。
ここで、管理情報管理部152によるメモリシステム10の管理情報の保存の処理について説明する。図12は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートであり、図13は、前ログと後ログの保存処理を説明するための図である。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているとともに、ホスト装置(メモリシステム10)が起動状態にあり、また、この起動状態の前のメモリシステム10の停止前にスナップショット210が保存されているものとする。
まず、ホスト装置(メモリシステム10)の前回終了時に保存されたスナップショット210を基に、ホスト装置(メモリシステム10)が起動された状態にある(ステップS11)。この後、必要に応じてホスト装置からNANDメモリ12へデータの読み書きが行なわれる。管理情報管理部152は、上記(1)〜(3)で示したスナップショット保存条件を満たすか否かを判定する(ステップ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として保存される。このとき、前ログ220Aとして例えば情報y1が保存される。なお、ここでの前ログ220Aは、たとえば、前ログ220A(更新計画)をDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。
ついで、論理NAND管理層は、ステップS13で受けた指示を実行する(ステップS16)。このような指示として、たとえばユーザデータのNANDメモリ12のデータ保存領域の所定のブロックへの書込処理が挙げられる。具体的には、NANDメモリ12内のデータ格納領域125にデータ書き込み(X)が行なわれる。
この後、実行した処理に応じて、DRAM11に記憶されている管理情報が更新される。そして、管理情報保存部154は、管理情報中の更新された分の情報を後ログ220Bとして、NANDメモリ12の管理情報保存領域126に保存する(ステップS17)。ここでのログ220Bは、ログ格納用ブロックに後ログ220Bが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、ログ格納用ブロックに後ログ220B(以下、過去の後ログ220Bという)が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット210と過去ログとを合わせたものと、の間の差分情報である。
これにより、データ書き込み(X)に対応する後ログ220B(X)がNANDメモリ12内に後ログ220Bとして保存される。このとき、後ログ220Bとして例えば情報y1が保存される。このように、後ログ220Bとして保存される情報y1は、前ログ220Aとして保存される情報y1と同じ情報である。なお、ここでの後ログ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としては、例えば情報y2が保存される。そして、NANDメモリ12内のデータ格納領域125にデータ書き込み(X+1)が行なわれる。さらに、データ書き込み(X+1)に対応する後ログ(X+1)がNANDメモリ12内に後ログ220Bとして保存される。このとき、後ログ220Bとして例えば情報y2が保存される。このように、後ログ220Bとして保存される情報y2は、前ログ220Aとして保存される情報y2と同じ情報である。
また、ステップ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は、ステップS33で取得したNANDメモリ12中のアドレスからスナップショット210を読込み、DRAM11の一時記憶領域111に復元する(ステップ34)。
その後、管理情報復元部155は、NANDメモリ12中の前ログ220Aや後ログ220Bを参照して、瞬断が発生したか否かを判定する(ステップS35)。瞬断が発生したか否かの判断は、例えば前ログ220Aと後ログ220Bを比較することによって行なってもよい。本実施の形態では、前ログ220Aと後ログ220Bとで同じ情報を保存している。このため、例えば、前ログ220Aとして保存されているページの数と後ログ220Bとして保存されているページの数が一致しない場合には、瞬断が発生したと判断できる。また、ECCエラーの有無や、前ログ220Aとして保存されているページのデータ、後ログ220Bとして保存されているページのデータに基づいて瞬断の有無を判断してもよい。
管理情報復元部155は瞬断が発生したと判定した場合(ステップS34でYesの場合)、NANDメモリ12内の最新の前ログ220Aと最新の後ログ220Bに基づいて、瞬断の発生したタイミングを確認し(ステップS36)、瞬断の発生したタイミングが後ログ220Bの保存中であったか否かを判断する(ステップS37)。例えば、後ログ220B内の最後のページが書き込み途中である場合、この最後のページを読み出すことはできないので、後ログ220Bの保存中に瞬断が発生したと判断される。また、前ログ220A内の最後のページが書き込み途中である場合、この最後のページを読み出すことはできないので、前ログ220Aの保存中に瞬断が発生したと判断される。また、前ログ220A内の最後のページにはログが書き込まれており、かつ後ログ220B内の最後のページにはログが書き込まれていない場合には、データの書き込み途中で瞬断が発生したと判断される。
管理情報復元部155は、瞬断の発生したタイミングが後ログ220Bの保存中であったと判断した場合(ステップS37でYesの場合)に、最新の前ログ220Aを選択する(ステップS38)。一方、管理情報復元部155は、瞬断の発生したタイミングが後ログ220Bの保存中でなかったと判断した場合(ステップS37でNoの場合)に、保存の完了している最新の後ログ220Bを選択する(ステップS39)。換言すると、前ログ220A内の最後のページが書き込み途中であった場合や前ログ220A内の最後のページにはログが書き込まれており、かつ後ログ220B内の最後のページにはログが書き込まれていない場合に、最新の後ログ220Bが選択される。
具体的には、図15に示すように、処理(X−1)に対する後ログ(X−1)の保存中に瞬断(s1)が発生すると、データ書き込み(X−1)は完了しているので、管理情報復元部155は、処理(X−1)は完了したと判断する。そして、管理情報復元部155は、最新の前ログとして前ログ(X−1)を選択する。
また、後ログ(X−1)の保存後から後ログXの保存開始までの間に瞬断(s2)が発生すると、データ書き込みXは完了していないので、管理情報復元部155は、処理Xは完了していないと判断する。そして、管理情報復元部155は、保存の完了している最新の後ログとして後ログ(X−1)を選択する。
同様に、処理Xに対する後ログXの保存中に瞬断(s3)が発生すると、データ書き込みXは完了しているので、管理情報復元部155は、処理Xは完了したと判断する。そして、管理情報復元部155は、最新の前ログとして前ログXを選択する。
さらに、後ログXの保存後から後ログ(X+1)の保存開始までの間に瞬断(s4)が発生すると、データ書き込み(X+1)は完了していないので、管理情報復元部155は、処理(X+1)は完了していないと判断する。そして、管理情報復元部155は、保存の完了している最新の後ログとして後ログXを選択する。
この後、前ログ220Aまたは後ログ220Bのうち選択した方のログの最初のログから最新のログまでをログ格納用ブロックから取得し、DRAM11の作業領域112に展開する(ステップS40)。そして、スナップショット210に対して、古いログから順にログを反映させて管理情報(不揮発性テーブル)を復元し(ステップS41)、管理情報の復元処理が終了する。
例えば、管理情報復元部155は、前ログ(X−1)を選択した場合には、スナップショット210に対して、前ログ(X−1)内の古いログから順にログを反映させて管理情報を復元(t1)する。また、管理情報復元部155は、後ログ(X−1)を選択した場合には、スナップショット210に対して、後ログ(X−1)内の古いログから順にログを反映させて管理情報を復元(t2)する。
また、管理情報復元部155は、前ログXを選択した場合には、スナップショット210に対して、最初の前ログから前ログXまでを古いログから順に反映させて管理情報を復元(t3)し、後ログXを選択した場合には、スナップショット210に対して、最初の後ログから後ログXまでを古いログから順に反映させて管理情報を復元(t4)する。
一方、管理情報復元部155は瞬断が発生していないと判定した場合(ステップS34でNoの場合)には、ステップS34でDRAM11の一時記憶領域111に復元したスナップショット210から管理情報を復元し(ステップS42)、復元処理が終了する。
なお、管理情報復元部155は、瞬断に起因するログの破壊の有無に関わらず、前ログ220Aとして保存されているページの数と、後ログ220Bとして保存されているページの数と、に基づいて、前ログ220Aと後ログ220Bの何れか一方を選択して管理情報を復元してもよい。例えば、管理情報復元部155は、前ログ220Aとして保存されているページの数と、後ログ220Bとして保存されているページの数が同じ場合に、前ログ220Aを選択して管理情報を復元する。また、管理情報復元部155は、前ログ220Aとして保存されているページの数が、後ログ220Bとして保存されているページの数よりも多い場合に、後ログ220Bを選択して管理情報を復元する。
なお、以上の説明において、第1の記憶部としてDRAMを用いる場合を例示したが、他の揮発性半導体記憶装置や不揮発性半導体記憶装置を用いてもよい。また、メモリシステム10がNAND10に保存する後ログはログそのものに限らず、前ログと同じ情報であればよい。従って、例えば、前ログをコピーした情報を後ログとして保存してもよい。
このように第1の実施の形態によれば、多値メモリのメモリセルトランジスタによってデータが記憶されるメモリシステム10において瞬断が起きた場合であっても、前ログ220Aと後ログ220Bとで同一の情報(差分情報)を保存しておくので、少なくとも前ログ220Aと後ログ220Bの何れか一方は瞬断に起因して破壊されることはない。したがって、何れのタイミングで瞬断が起きた場合であっても、前ログ220Aと後ログ220Bとの何れか一方を用いることによって、メモリシステム10を瞬断が起きる前の状態に容易に復帰させることが可能となる。
(第2の実施の形態)
つぎに、図16および図17を用いてこの発明の第2の実施の形態について説明する。第2の実施の形態では、後ログのログ長(サイズ)が所定長を超えた場合に、後ログを保存しているブロックのうち古くなったブロックから順番に所定のブロック数だけ開放する。
図16は、第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が格納されていたブロックであるか、を問わず、書込先のブロックを指定することができる。
図17は、各ブロックへの前後ログの保存順序と後ログの開放順序を説明するための図である。ここでは、前ログが、ブロック50A、ブロック51A、ブロック52Aの順番で、各ブロック内に保存され、後ログが、ブロック50B、ブロック51B、ブロック52Bの順番で、各ブロック内に保存される場合について説明する。
図17(a)に示すように、前ログは、ブロック50A内の先頭ページから順番に保存されていき、後ログは、ブロック50B内の先頭ページから順番に保存されていく。この後、図17(b)に示すように、ブロック50A内の全てのページに前ログが書き込まれると(1)、次のブロック51Aを用いて前ログが保存されていく(2)。また、ブロック50B内の全てのページに後ログが書き込まれると(1)、次のブロック51Bを用いて後ログが保存されていく(2)。このとき、前ログは、ブロック51A内の先頭ページから順番に保存されていき、後ログは、ブロック51B内の先頭ページから順番に保存されていく。
さらに、ブロック51A内の全てのページに前ログが書き込まれると、次のブロック52Aを用いて前ログが保存されていく。また、ブロック51B内の全てのページに後ログが書き込まれると、次のブロック52Bを用いて後ログが保存されていく。このとき、前ログは、ブロック52A内の先頭ページから順番に保存されていき、後ログは、ブロック52B内の先頭ページから順番に保存されていく。
ログ格納ブロック開放部156は、後ログのログ長(サイズ)が所定長(例えば1ブロック)を超えた場合に、図17(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は、後ログ用の古いブロックを開放する代わりに、前ログ用の古いブロックを開放してもよい。
また、本実施の形態では、古いブロックから順番に開放していく場合について説明したが、消去回数の少ないブロックから順番に開放してもよい。これにより、消去回数の少ないブロックが、消去回数の多いブロックよりも開放されやすくなる。
このように第2の実施の形態によれば、後ログのログ長が所定長を超えた場合に、後ログを格納している古いブロックを開放するので、開放ブロックが増加し、この結果効率良く平準化処理を行なうことが可能となる。
また、古いブロックから順番に開放していくので、消去から書き込みまでの時間をブロック間で平均化することが可能となる。これにより、NANDメモリ12では、リラクゼーションを行なう時間を十分に確保できる。
(第3の実施の形態)
つぎに、図18を用いてこの発明の第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のサイズとなる。
図18は、前ログ用の論理ブロックと後ログ用の論理ブロックを説明するための図である。図18(a)、図18(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である。
図18(a)では、ブロックP0〜P7によって1つの論理ブロックを構成し、ブロックQ0〜Q7によって1つの論理ブロックを構成している場合を示しており、図18(b)では、ブロックR0〜R7によって1つの論理ブロックを構成している場合を示している。
この場合において、本実施の形態では、図18(a)に示すように、ブロックP0〜P7からなる論理ブロックを前ログ用のブロックに割り当てるとともに、ブロックQ0〜Q7からなる論理ブロックを後ログ用のブロックに割り当てる。これにより、前ログが保存される論理ブロックと、後ログが保存される論理ブロックと、を別々の論理ブロックとする。さらに、前ログが保存される論理ブロック内のブロックと、後ログが保存される論理ブロック内のブロックと、を同一チャネルで同一プレーンのブロックとする。さらに、前ログが保存されるブロック内の領域(ページ位置)と、後ログが保存されるブロック内の領域(ページ位置)とを、同一の領域とする。
本実施の形態では、前ログとして保存される情報と後ログとして保存される情報とを、同一の情報としているので、前ログ内の情報と後ログ内の情報とが一致していることが確認されれば、前ログまたは後ログの一方は開放(消去)してもよい。例えば、後ログ用の論理ブロックが全て後ログで満たされた場合、前ログ用の論理ブロックを保存しておけば、後ログ用の論理ブロックを開放してもよい。また、前ログ用の論理ブロックが全て前ログで満たされた場合、後ログ用の論理ブロックを保存しておけば、前ログ用の論理ブロックを開放してもよい。
このように、前ログ用の論理ブロックや後ログ用の論理ブロックは、それぞれ各チャネル120A〜120Dを並列で動作させるとともに、各チャネル120A〜120D内で2つのチャネルを用いてデータの読み書きを行なうことができる論理ブロックであるので、ブロックの開放や消去を高速に行なうことが可能となる。
一方、図18(c)に示すように、1つの論理ブロックに前ログ用と後ログ用のブロックを混在させて保存する場合、各ログの開放(消去)を行なう際にはブロック毎に開放を行なう必要があり、低速な開放処理となる。
なお、本実施の形態では、前ログが保存される論理ブロック内のブロックと、後ログをが保存される論理ブロック内のブロックと、を同一チャネルで同一プレーンのブロックとする場合について説明したが、前ログが保存される論理ブロック内のブロックと、後ログが保存される論理ブロック内のブロックと、を異なるチャネルの異なるプレーンのブロックとしてもよい。また、本実施の形態では、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…後ログ。