メモリシステムおよび瞬断判定方法
【課題】メモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるメモリシステムを提供する。
【解決手段】揮発性の第1の記憶部と、不揮発性の第2の記憶部と、データ転送とデータ管理を行うコントローラと、を備え、第2の記憶部は、起動時に必要な固定情報と固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、コントローラは、固定情報の更新時に、固定情報格納領域それぞれ対して、消去回数識別情報の退避処理、固定情報格納領域の消去処理、新たな固定情報の書込み処理、退避した消去回数識別情報の更新および新たな固定情報が書込まれた固定情報格納領域への保存処理を行い、起動時に、多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、固定情報の更新時に瞬断が発生したと判定する。
【解決手段】揮発性の第1の記憶部と、不揮発性の第2の記憶部と、データ転送とデータ管理を行うコントローラと、を備え、第2の記憶部は、起動時に必要な固定情報と固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、コントローラは、固定情報の更新時に、固定情報格納領域それぞれ対して、消去回数識別情報の退避処理、固定情報格納領域の消去処理、新たな固定情報の書込み処理、退避した消去回数識別情報の更新および新たな固定情報が書込まれた固定情報格納領域への保存処理を行い、起動時に、多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、固定情報の更新時に瞬断が発生したと判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性半導体記憶装置を用いて構成されるメモリシステムと、このメモリシステムでの瞬断判定方法に関する。
【背景技術】
【0002】
ハードディスク装置を2次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる(たとえば、特許文献1参照)。このような処理を行うことで、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。
【0003】
ところで、近年では、不揮発性半導体記憶装置であるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを有するメモリシステムを2次記憶装置とするパーソナルコンピュータが製品化されている。しかし、このようなNAND型フラッシュメモリに格納されるデータのバックアップに対して、ハードディスク装置に格納されるデータのバックアップの場合と同様に上記特許文献1の技術を適用することはできない。それは、NAND型フラッシュメモリの大容量化には、1つのメモリセルに2ビット以上の複数のデータ(多値データ)を記憶することが可能な多値メモリ技術が使用されているからである(たとえば、特許文献2参照)。
【0004】
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、1つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
【0005】
たとえば、4値を記憶することができる多値メモリでは、1つのメモリセルに下位ページと上位ページを設け、それぞれのページに1ビットのデータを書込むことによって、2ビット(4値)を記憶するものがある。このような多値メモリのデータ書込方法は、第1のメモリセルの下位ページにデータを書込んだ後、隣接メモリセル(第2のメモリセル)の下位ページにデータを書込む。そして、この隣接メモリセルへの書込み後に、第1のメモリセルの上位ページにデータを書込んでいる。
【0006】
しかし、このような多値メモリでは、先に書込んだメモリセルの閾値電圧が、このメモリセルと隣接し、後に書込まれるメモリセルの閾値電圧によって変動してしまう。このため、多値メモリでは、あるメモリセルの第2ページの書き込み中に、たとえば電源の異常遮断など(以下、瞬断という)によって書込みが中断されると、先に書込んだ同じメモリセルの第1ページのデータも破壊される下位ページデータ破壊が生じる可能性がある。
【0007】
そのため、NAND型フラッシュメモリを2次記憶装置とするパーソナルコンピュータにおいて、たとえば特許文献1のログをあるメモリセルの第2ページに書込み中に瞬断によって下位ページデータ破壊が生じてしまった場合には、書込み中のデータのほかに、この書込み中のメモリセルの第1ページのデータまで破壊されてしまい、データを復元することができなくなってしまうという問題点があった。つまり、NAND型フラッシュメモリを有するメモリシステムを2次記憶装置としたパーソナルコンピュータに対して特許文献1の技術を用いてバックアップをとる方法では、パーソナルコンピュータの状態を瞬断前の状態に復元するには不十分であるという問題点があった。
【0008】
特に、瞬断が発生した場合には、メモリシステムを次回起動する際に、瞬断が発生する前の最新の状態まで復帰させる必要があるが、従来の方法では、瞬断が発生したか否かを判定する方法が提案されていなかった。
【0009】
【特許文献1】米国特許出願公開第2006/0224636号明細書
【特許文献2】特開2004−192789号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明は、多値メモリを使用したNAND型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるメモリシステムと瞬断判定方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一態様によれば、揮発性の第1の記憶部と、不揮発性の第2の記憶部と、前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行うコントローラと、を備え、前記第2の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステムが提供される。
【0012】
また、本発明の一態様によれば、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法が提供される。
【発明の効果】
【0013】
本発明によれば、多値メモリを使用したNAND型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に添付図面を参照して、本発明にかかるメモリシステムと瞬断判定方法の最良な実施の形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【0015】
このメモリシステムは、不揮発性半導体記憶装置を含み、たとえば、パーソナルコンピュータなどのホスト装置の2次記憶装置(SSD:Solid State Drive)として使用され、ホスト装置から書込要求が出されたデータを記憶し、またホスト装置から読出要求のあったデータを読出してホスト装置に出力する機能を有する。図1は、本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。このメモリシステム10は、第1の記憶部としてのDRAM(Dynamic Random Access Memory)11と、第2の記憶部としてのNAND型フラッシュメモリ(以下、NANDメモリという)12と、電源回路13と、コントローラとしてのドライブ制御部14と、を備える。
【0016】
DRAM11は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としては、ホスト装置から書込要求があったデータをNANDメモリ12に書込む前に一時的に保存したり、ホスト装置から読出要求があったデータをNANDメモリ12から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報を格納するために使用される。さらに、作業領域用の記憶部としては、管理情報を復元する際に用いるログの展開時などに使用される。
【0017】
NANDメモリ12は、データ保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータを記憶したり、DRAM11で管理される管理情報をバックアップ用に記憶したり、メモリシステム10の管理プログラム(ファームウェア)を保存したりする。この図1では、NANDメモリ12が4つのチャネル120A〜120Dによって構成されている場合が示されている。1つのチャネル120A〜120Dは、所定のサイズの記憶容量を有する8個のチップ122が1つにまとめられたパッケージ121を2つ含んでいる。また、各チャネル120A〜120Dは、ドライブ制御部14とバス15を介して接続されている。
【0018】
電源回路13は、外部電源を受け、この外部電源を用いてメモリシステム10の各部に供給するための複数の内部電源を生成する。また、電源回路13は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号を生成する。このパワーオンリセット信号は、ドライブ制御部14に送られる。
【0019】
ドライブ制御部14は、DRAM11とNANDメモリ12を制御する。詳細は後述するが、たとえば、電源回路13からのパワーオンリセット信号を受信すると管理情報の復元処理または管理情報の保存処理を行う。また、ドライブ制御部14は、ATAインタフェース(図中では、ATA I/Fと表記)を介して、ホスト装置との間でデータを送受信し、RS232Cインタフェース(図中では、RS232C I/Fと表記)を介して、デバッグ用機器との間でデータを送受信する。さらに、ドライブ制御部14は、メモリシステム10の外部に設けられる状態表示用LEDを制御するための制御信号を出力する。
【0020】
ここで、NANDメモリ12の構成について説明する。NANDメモリ12は、データ消去の単位であるブロックを基板上に複数配列して構成される。図2は、NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。なお、この図2において、紙面上の左右方向をX方向とし、紙面上のX方向に垂直な方向をY方向としている。
【0021】
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と、を有する。
【0022】
各メモリセルトランジスタMT0〜MTnは、半導体基板上に形成された積層ゲート構造を有する電界効果型トランジスタから構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタMT0〜MTnは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じて2ビット以上のデータを記憶することができる多値メモリである。なお、以下に示す実施の形態では、メモリセルトランジスタMTは4値を記憶することができる多値メモリである場合を例に挙げて説明するが、4値よりも大きな値を記憶することができる多値メモリであってもよい。
【0023】
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では、このページ単位でデータの書込みと読出しが行われる。
【0024】
1つのブロックBLK内の(m+1)個の選択トランジスタST1のドレインにはそれぞれビット線BL0〜BLmが接続され、ゲートには選択ゲート線SGDが共通接続されている。また、選択トランジスタST1のソースはメモリセルトランジスタMT0のドレインと接続されている。同様に、1つのブロックBLK内の(m+1)個の選択トランジスタST2のソースにはソース線SLが共通接続され、ゲートには選択ゲート線SGSが共通接続されている。また、選択トランジスタST2のドレインはメモリセルトランジスタMTnのソースと接続されている。
【0025】
なお、図示されていないが、1つのブロックBLK内のビット線BLj(j=0〜m)は、他のブロックBLKのビット線BLjとの間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロックBLK内において同一列にあるNANDストリングNS間は、同一のビット線BLjによって接続される。
【0026】
つぎに、DRAM11とNANDメモリ12の機能構成について説明する。図3は、DRAMとNANDメモリの機能構成を模式的に示す図であり、(a)はDRAM11の機能構成を示し、(b)はNANDメモリ12の機能構成を示している。
【0027】
図3(a)に示されるように、DRAM11は、ホスト装置から書込要求のあったデータが記憶されるライトキャッシュ領域WCと、ホスト装置から読出要求のあったデータが記憶されるリードキャッシュ領域RCと、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報が記憶される一時記憶領域111と、管理情報を復元する際に使用される作業領域112と、を有する。
【0028】
図3(b)に示されるように、NANDメモリ12は、ホスト装置から書込要求のあったデータが格納されるデータ格納領域125と、DRAM11の一時記憶領域111で管理される管理情報が保存される管理情報保存領域126と、管理プログラムなどが多重化して保存される管理プログラム保存領域127と、を有する。また、NANDメモリ12は、メモリシステム10を動作させるのに必要な情報(固定情報)を固定した位置に保存する固定領域128と、NANDメモリ12内の固定領域128以外の領域である可変領域129と、に分けることができる。詳細は後述するが、管理プログラム保存領域127のすべてと管理情報保存領域126の一部は固定領域128に属し、管理情報保存領域126の他の部分とデータ格納領域125のすべては可変領域129に属している。この例では、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去の単位をブロックサイズ単位(たとえば512KB単位)とするものとする。そのため、ブロックサイズ単位で管理されるNANDメモリ12の各ブロックを記憶するための領域を、さらにページサイズ単位の領域に分割する。
【0029】
ここで、DRAM11の一時記憶領域111で管理される管理情報について説明する。図4は、メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。なお、ここで、データとは、ホスト装置から書込要求/読出要求のあったデータのことをいうものとする。このメモリシステム10では、キャッシュの役割をするDRAM11でのデータ管理を行うDRAM管理層31と、NANDメモリ12での論理的なデータ管理を行う論理NAND管理層32と、NANDメモリ12での物理的なデータ管理やNANDメモリ12の延命処理などを行う物理NAND管理層33の3層構造でデータ管理が行われる。
【0030】
DRAM11のライトキャッシュ領域WCとリードキャッシュ領域RCでは、ホスト装置のアドレス管理方法によって管理される論理アドレス(以下、LBA(Logical Block Address)という)で指定されたデータが、DRAM11上の所定の範囲の物理アドレス(以下、DRAM内物理アドレスという)に記憶される。また、DRAM管理層31内でのデータは、格納されるデータのLBAとDRAM内物理アドレスとの対応関係と、ページ中のセクタサイズ単位のデータの有無を示すセクタフラグと、を含むキャッシュ管理情報41によって管理される。
【0031】
図5は、キャッシュ管理情報テーブルの一例を示す図である。ここでは、キャッシュ管理情報41は、DRAM11の1ページサイズの領域1つに対して1エントリとし、エントリ数はライトキャッシュ領域WCとリードキャッシュ領域RCに収まるページ数以下とする。各エントリには、ページサイズのデータのLBAと、DRAM内物理アドレスと、このページをセクタサイズで分割した各領域における有効データの位置を示すセクタフラグと、が関連付けられている。
【0032】
NANDメモリ12では、DRAM11からのデータがNANDメモリ12上の所定の範囲の物理アドレス(以下、NAND内物理アドレスという)に格納される。多値メモリからなるNANDメモリ12では、書換可能回数に制約があるため、NANDメモリ12を構成する各ブロック間での書換回数が均等化するようにドライブ制御部14で制御されている。つまり、ドライブ制御部14は、NANDメモリ12内のあるNAND内物理アドレスに書込まれたデータの更新を行う場合に、そのデータが含まれるブロックのうち更新が必要な部分を反映させたデータを、元のブロックとは異なるブロックに書込み、元のブロックは無効化するようにして、NANDメモリ12を構成するブロック間での書換回数が均等化するように制御している。
【0033】
このように、NANDメモリ12では、データの書込/読出処理と消去処理とでは処理単位が異なるとともに、データの更新処理においては、更新前のデータの位置(ブロック)と更新後のデータの位置(ブロック)とが異なるため、この実施の形態では、NAND内物理アドレスのほかにNANDメモリ12内で独自に使用されるNAND内論理アドレス(以下、NAND内論理アドレスという)を設けることにする。
【0034】
そこで、論理NAND管理層32内でのデータは、DRAM11から受け取ったページサイズ単位のデータのLBAと、受け取ったデータを格納するNANDメモリ12の論理的なページ位置を示すNAND内論理アドレスとの間の関係と、NANDメモリ12における消去単位のブロック(以下、物理ブロックとする)とサイズが一致する論理的なブロック(以下、論理ブロックという)のアドレス範囲を示す関係と、を示す論理NAND管理情報42によって管理される。なお、物理ブロックを複数まとめたものを論理ブロックとしてもよい。また、物理NAND管理層33でのデータは、NANDメモリ12における論理ブロックのNAND内論理アドレスと、物理ブロックのNAND内物理アドレスとの対応関係を含むNAND内論理アドレス−物理アドレス変換情報(以下、論物変換情報という)43によって管理される。
【0035】
図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内論理アドレスとが対応付けられている。
【0036】
これらの管理情報によって、ホスト装置で使用されるLBAと、NANDメモリ12で使用されるNAND内論理アドレスと、NANDメモリ12で使用されるNAND内物理アドレスとの間を対応付けることができ、ホスト装置と当該メモリシステム10との間のデータのやり取りを行うことが可能となる。
【0037】
なお、以下では、DRAM管理層31で管理される管理情報は、電源オフなどによって消失するので、揮発性テーブルともいい、論理NAND管理層32および物理NAND管理層33で管理される管理情報は、電源オフなどによって消失した際にメモリシステム10の次回起動時に支障を与え、保存しておくことが必要なので、不揮発性テーブルともいう。
【0038】
この不揮発性テーブルは、NANDメモリ12に格納されているデータを管理するものであり、この不揮発性テーブルがなければNANDメモリ12に格納されている情報にアクセスできなかったり、既に記憶した領域内のデータを消してしまったりするので、不意の電源オフなどに備えて最新の情報に保存しておく必要がある。そのため、この実施の形態では、NANDメモリ12の管理情報保存領域126には、少なくとも不揮発性テーブルを含む管理情報を最新の状態で保存している。そこでつぎに、NANDメモリ12の管理情報保存領域126に保存される管理情報保存情報について説明する。なお、以下では、不揮発性テーブルのみを管理情報保存領域126に保存する場合を例に挙げる。
【0039】
図8は、管理情報保存領域126に記憶される管理情報保存情報の内容の一例を模式的に示す図である。この管理情報保存領域126には、ある時点における不揮発性テーブルの内容であるスナップショット210と、不揮発性テーブルの内容に変化があった場合に内容を変更した後の不揮発性テーブルとスナップショット210(またはスナップショット210と既に取られたログ)との差分情報であるログ220と、スナップショット210とこのスナップショット210に関する一番目に取得されたログ220の位置(ブロック)を示す第2のルートポインタ230と、第2のルートポインタ230が格納される位置(ブロック)を示す第1のルートポインタ240と、を含む管理情報保存情報が格納される。ここで、スナップショット210とは、DRAM11の一時記憶領域111に記憶される管理情報のうち、少なくとも不揮発性テーブルを含む管理情報を所定の時点で保存した情報のことをいう。
【0040】
また、ログ220は、管理情報が変化する処理(たとえば、NANDメモリ12のデータ格納領域125へのデータの書込処理)の前後で取られ、処理の前に保存するログを前ログ220Aといい、処理の後に保存するログを後ログ220Bという。なお、スナップショット210がとられた後の最初の前ログ220Aや前ログ220Aは、不揮発性テーブルとスナップショット210との差分情報であり、2回目以降の前ログ220Aまたは後ログ220Bは、既に取られた前ログ220Aまたは後ログ220Bとスナップショット210とを合わせたものと、不揮発性テーブルと、の差分情報である。
【0041】
この図8において、スナップショット210、前ログ220A、後ログ220B、第2のルートポインタ230および第1のルートポインタ240は、それぞれ異なるブロックに格納される。なお、これらのスナップショット210、前ログ220A、後ログ220B、第2のルートポインタ230および第1のルートポインタ240がそれぞれ格納されるブロックの大きさは、消去単位である物理ブロックと同じ大きさであるものとする。スナップショット210は、スナップショット格納用ブロックに格納される。スナップショット210には、NANDメモリ12の管理情報保存領域126内の不揮発性テーブルである論理NAND管理情報42とNAND内論物変換情報43とが含まれる。新しいスナップショット210が保存されると、以前に保存されていたスナップショット210とは別のブロックに保存される。
【0042】
前ログ220Aと後ログ220Bは、それぞれ前ログ格納用ブロックと後ログ格納用ブロックに格納される。これらの前ログ220Aと後ログ220Bは、スナップショット210の世代が変わっても、それぞれ同じ前ログ格納用ブロックと後ログ格納用ブロックに連続して書込まれる。図9は、ログの一例を示す図である。ログ220は、変更対象の管理情報となる対象情報と、その対象情報中の変更対象となるエントリである対象エントリと、その対象エントリ中の変更対象となる項目である対象項目と、その対象項目の変更の内容である変更内容と、を含む。なお、前ログ220Aと後ログ220Bとは、必ずしも同じ内容とする必要はなく、たとえば前ログ220Aには図9に示されるような管理情報が変化した際の差分情報を記録し、後ログ220Bには管理情報に変更が生じるような処理が終了したことを示すフラグを前ログ220Aに対応させて記録するようにしてもよい。
【0043】
第2のルートポインタ230は、第2のルートポインタ格納用ブロックに格納される。第2のルートポインタ230は、スナップショット210と前ログ220Aと後ログ220Bの格納位置を示すブロックの先頭アドレスを示すものであればよい。ただし、第2のルートポインタ230のうちスナップショット210の格納位置を示す部分は、スナップショット210に含まれる各管理情報(不揮発性テーブル)の先頭アドレスを示すものであってもよい。なお、ログ220の先頭アドレスを示すポインタがスナップショット210に格納され、第2のルートポインタ230としてはスナップショット210の先頭アドレスを示すポインタのみの構成であってもよい。また、第2のルートポインタ230は、スナップショット210が新たに保存された場合に更新される。
【0044】
図10は、第2のルートポインタの一例を示す図である。1ブロックのサイズを512KBとすると、4KBのサイズの1ページに第2のルートポインタ230が格納される。この第2のルートポインタ230は、スナップショットアクセス情報と、ログアクセス情報と、ネクストポインタと、を含む。ここで、スナップショットアクセス情報は、スナップショットが格納されているブロックへアクセスするための情報である。また、ログアクセス情報は、ログが格納されているブロックへアクセスするための情報であり、ブロックを指定する情報と、基準となるスナップショットに関係するログが格納されている上記ブロック内の先頭ページを指定する情報と、を含む。ネクストポインタは、つぎの第2のルートポインタ230が格納されるページを示すインデックスである。このネクストポインタによって、第2のルートポインタ230はリンクドリスト方式の情報となり、第1のルートポインタ240で指示された第2のルートポインタ格納用ブロックの先頭ページからネクストポインタをたどることによって、最新の第2のルートポインタ230へとたどり着くことが可能となる。なお、リンクドリスト方式ではなく、第2のルートポインタ格納領域の先頭ページから第2のルートポインタ230を順に追記的に格納してもよい。
【0045】
第1のルートポインタ240は、第1のルートポインタ格納用ブロックに格納される。第1のルートポインタ240は、第2のルートポインタ230が格納されている第2のルートポインタ格納用ブロックのブロック(位置)へアクセスするための情報であり、メモリシステム10の起動時に、管理情報を復元するための処理の際に最初に読み込まれる情報である。この第1のルートポインタ240は、第2のルートポインタが格納されるブロックが変わった場合に変更される。第1のルートポインタ240は、第1のルートポインタ格納用ブロックに、たとえば、ブロックの先頭ページから順に追記的に格納される。このような場合には、第1のルートポインタ格納用ブロック内の未書込ページの1つ前のページが最新情報を有することになるので、未書込ページの最上位のページを検索することで、最新の第1のルートポインタ240を検索することができる。また、第2のルートポインタ230の場合のように、リンクドリストを用いることも可能である。
【0046】
ここで、第1のルートポインタ240はNANDメモリ12内の固定領域128に格納され、スナップショット210、前ログ220A、後ログ220Bおよび第2のルートポインタ230はNANDメモリ12内の可変領域129に格納される。固定領域128とは、NANDメモリ12において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が固定化している領域であり、書換えや書込みがほとんど発生しない更新頻度の低い、メモリシステム10を稼働させるのに必要な情報が格納される領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域126(NANDメモリ12)内の他のブロックに情報(第1のルートポインタ240)を書込むのではなく、ブロックの情報を消去した後に同じブロックの先頭ページから書込むように設定された領域である。また、上述したように、管理プログラム保存領域127もこの固定領域128に設けられる。なお、この例では、NANDメモリ12は多値メモリで構成されるとしているが、固定領域128中に格納される第1のルートポインタ240のデータや管理プログラムの信頼性を高めるために、2値モードで使用することが望ましい。また、固定領域128に格納される第1のルートポインタ240や管理プログラムなどの情報は、特許請求の範囲における固定情報に対応している。
【0047】
一方の可変領域129とは、固定領域128を除くNANDメモリ12の領域において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が変化する領域であり、NANDメモリ12中の固定領域128以外の領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域126内の可変領域129中の書込可能なフリーブロックとなっている他のブロックにつぎの情報を書込むように設定された領域である。なお、この可変領域129は、上記したようにNANDメモリ12中の固定領域128を除いた領域であり、管理情報保存領域126中のスナップショット210、ログ220および第2のルートポインタ230が格納される領域のほかに、データ格納領域125も含まれる。つまり、固定領域128を除いたNANDメモリ12中の物理的な領域を可変領域129とし、この中で、データ格納領域125と管理情報保存領域126中のスナップショット210、ログ220および第2のルートポインタ230が格納される領域とが機能的に分離されている。
【0048】
図11は、管理プログラム保存領域127に保存される管理プログラムの状態の一例を示す図である。管理プログラム1272は、管理プログラム保存領域127内の管理プログラム格納用ブロック1271に保存され、多重化されている。この管理プログラム1272は、メモリシステム10の起動時に実行されるプログラムであり、バージョンアップがなされると更新処理が行われる。その際には、現在のバージョンの管理プログラム1272が格納されている管理プログラム格納用ブロック1271を消去した後に新しいバージョンの管理プログラム1272が上書きされる。何らかの原因によって管理プログラム1272が破壊されてしまうことを防ぐために、管理プログラム1272は多重化されている。一般的には、管理プログラム1272は二重化以上されていればよいが、たとえばバージョンアップによる管理プログラムの上書き処理時などにおいて、管理プログラム1272が常に二重化以上の状態を保つためには、全体で四重化以上されていることが望ましい。この図11では、管理プログラム1272が四重化されている場合を示している。また、管理プログラム格納用ブロック1271は、特許請求の範囲における固定情報格納領域に対応している。
【0049】
また、管理プログラム1272が格納される管理プログラム格納用ブロック1271の特定のページ(たとえば、最終ページ)には、その管理プログラム格納用ブロック1271の消去回数に対してユニークな消去回数識別子1273が記録されている。そして、この消去回数識別子1273は、多重化されている各管理プログラム格納用ブロック1271間で整合が取れている(一致した値となっている)。
【0050】
つぎに、ドライブ制御部14の機能について説明する。図12は、ドライブ制御部の機能構成の一例を示すブロック図である。ドライブ制御部14は、DRAM11−NANDメモリ12間のデータ転送やNANDメモリ12に関する各種機能の制御を行うデータ管理部141と、ATAインタフェースから受けた指示に基づいてデータ管理部141と協働してデータ転送処理を行うATAコマンド処理部142と、データ管理部141およびATAコマンド処理部142と協動して各種のセキュリティ情報を管理するセキュリティ管理部143と、電源オン時に、管理プログラム(ファームウェア)をNANDメモリ12の管理プログラム保存領域127から図示しないメモリ(たとえば、SRAM(Static RAM))にロードするブートローダ144と、ドライブ制御部14内の各コントローラや回路の初期化を行う初期化管理部145と、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理するデバッグサポート部146と、を備える。
【0051】
図13は、データ管理部の機能構成の一例を示すブロック図である。データ管理部141は、DRAM11とNANDメモリ12との間でデータ転送を行うデータ転送処理部151と、DRAM11およびNANDメモリ12に記憶されるデータの変更に伴って管理情報の変更や保存を行う管理情報管理部152と、電源オン時などにNANDメモリ12に保存された管理情報に基づいて最新の管理情報を復元する管理情報復元部155と、固定領域128に格納される管理プログラムなどのデータの管理を行う固定領域管理部156と、をさらに備える。
【0052】
また、管理情報管理部152は、管理情報書込機能153と、管理情報保存機能154と、をさらに備える。管理情報書込機能153は、データ転送処理部151によるDRAM11またはNANDメモリ12で記憶されるデータの変更処理によって管理情報の更新が必要な場合に、DRAM11に記憶されている管理情報の更新を行う。
【0053】
管理情報保存機能154は、メモリシステム10が所定の条件を満たしたとき、管理情報をスナップショット210として、または管理情報中の更新された分の情報をログ220として、NANDメモリ12の管理情報保存領域126に保存する。また、このスナップショット210またはログ220(前ログ220Aと後ログ220B)の保存に伴って第2のルートポインタ230または第2のルートポインタ230と第1のルートポインタ240が書込まれる位置が変更される場合には、この第2のルートポインタ230または第2のルートポインタ230と第1のルートポインタ240に対する更新処理も行う。
【0054】
管理情報保存機能154によるスナップショット210の保存は、以下に例示する3つのスナップショット保存条件のいずれかを満たす場合に実行される。
(1)スタンバイ(メモリシステム10本体の電力消費を最小限にまで落とすようにする指示)/スリープ(所定の時間アクセスがない場合にデバイスを停止する指示)/リセット(メモリシステム10を再起動する指示)を受けた場合。
(2)NANDメモリ12の管理情報保存領域126中のログ220(前ログ220Aと後ログ220B)を記憶するために設けられたログ記憶領域が埋まってしまった(領域がデータで満杯になった)場合。
【0055】
また、管理情報管理部152によるログ220(前ログ220A、後ログ220B)の保存は、DRAM11に記憶されている管理情報(不揮発性テーブル)の更新を伴うNANDメモリ12上のデータ更新時(NANDメモリ12へのデータ書込みが必要な時)である。
【0056】
管理情報復元部155は、メモリシステム10に電源がオンされると、NANDメモリ12の管理情報保存領域126に保存されている管理情報保存情報に基づいた管理情報の復元処理を行う。具体的には、固定領域128中の第1のルートポインタ240、可変領域129中の第2のルートポインタ230、およびログ220へと順にたどっていき、最新のスナップショット210に対するログ220が存在するか否かを判定する。ログ220が存在しない場合には、上記スナップショット保存条件の(1)に示した場合に相当する前回のメモリシステム10の終了が正常終了であると判定し、スナップショット格納用ブロックのスナップショット210を管理情報としてDRAM11に復元する。また、ログ220が存在する場合には、上記スナップショット保存条件の(1)に示した場合以外のメモリシステム10が正常終了ではなく瞬断などの異常終了であった場合であるので、スナップショット格納用ブロックからスナップショット210を取得し、ログ格納用ブロックからログ220を取得して、DRAM11上でスナップショット210にログ220を反映させて管理情報(不揮発性テーブル)の復元を行う。
【0057】
固定領域管理部156は、NANDメモリ12の固定領域128に格納されている管理プログラムや第1のルートポインタが格納されているブロックの書換処理(すなわち、ブロックを消去して、同じブロックへの書込みを行う処理)を行う。たとえば、多重化されている管理プログラムのバージョンアップを行ったり、第1のルートポインタ格納ブロックが満たされた場合の書換処理を行ったりする。
【0058】
ここで、管理情報管理部152によるメモリシステム10の管理情報の保存処理について説明する。図14は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているとともに、ホスト装置(メモリシステム10)が起動状態にあり、また、この起動状態の前のメモリシステム10の停止前にスナップショット210が保存されているものとする。
【0059】
まず、ホスト装置(メモリシステム10)の前回終了時に保存されたスナップショット210を基に、ホスト装置(メモリシステム10)が起動された状態にある(ステップS11)。ついで、管理情報管理部152は、上記(1)〜(2)で示したスナップショット保存条件を満たすか否かを判定する(ステップS12)。スナップショット保存条件を満たさない場合(ステップS12でNoの場合)には、管理情報の更新を伴う指示、ログ保存条件を満たす指示を受けたか否かを判定する(ステップS13)。管理情報の更新を伴う指示を受けなかった場合(ステップS13でNoの場合)には、ステップS12へと戻る。
【0060】
また、管理情報の更新を伴う指示を受けた場合(ステップS13でYesの場合)には、その指示を実行することによって管理情報がどのように更新されるか更新計画を決定し(ステップS14)、その更新計画をNANDメモリ12の管理情報保存領域126のログ格納用ブロックに前ログ220Aとして保存する(ステップS15)。この更新計画(ログ)は、前ログ格納用ブロックに前ログ220Aが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、前ログ格納用ブロックに前ログ220A(以下、過去ログという)が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット210と過去ログとを合わせたものとの間の差分情報である。なお、この前ログ220Aは、たとえば、前ログ220A(更新計画)をDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。
【0061】
ついで、論理NAND管理層は、ステップS13で受けた指示を実行する(ステップS16)。このような指示として、たとえばユーザデータのNANDメモリ12のデータ保存領域の所定のブロックへの書込処理が挙げられる。
【0062】
この後、実行した処理に応じて、DRAM11に記憶されている管理情報が更新される。そして、管理情報保存機能154は、管理情報が更新されたことを示す後ログ220Bを、NANDメモリ12の管理情報保存領域126に保存する(ステップS17)。この後ログ220Bは、前ログ220Aと同様に現時点の不揮発性テーブルと、スナップショット210またはスナップショット210と後ログ220Bとを合わせたものと、の差分情報であってもよいし、単なるフラグであってもよい。その後、ステップS12へと処理が戻る。
【0063】
また、ステップS12でスナップショット保存条件を満たす場合(ステップS12でYesの場合)には、DRAM11の一時記憶領域111内の少なくとも不揮発性テーブルを含む管理情報をスナップショット210としてNANDメモリ12の管理情報保存領域126に保存する(ステップS18)。そして、メモリシステム10の終了指示があるか否かを判定し(ステップS19)、終了指示がない場合(ステップS19でNoの場合)には再びステップS12へと戻り、終了指示がある場合(ステップS19でYesの場合)には、そのまま処理が終了する。
【0064】
つぎに、管理情報復元部155によるメモリシステム10の管理情報の復元処理について説明する。図15は、メモリシステムの管理情報の復元処理手順の一例を示すフローチャートであり、図16は、メモリシステムの管理情報の復元処理を説明するための図である。なお、ここでも、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
【0065】
まず、瞬断からの回復などによってホスト装置の電源がオンされ、メモリシステム10に対して起動指示が出されると(ステップS31)、管理情報復元部155は、NANDメモリ12の管理情報保存領域126中のポインタ230を読込み(ステップS32)、スナップショット210が格納されているブロックのアドレスと、前後ログ(前ログ220A、後ログ220B)が格納されているブロックのアドレスを取得する(ステップS33)。
【0066】
その後、管理情報復元部155は、スナップショット210をスナップショット格納用ブロックから取得し、DRAM11の管理情報格納領域111に復元する(ステップS34)。
【0067】
さらに、管理情報復元部155は、前ログ用のブロックと、NANDメモリ12内の後ログ用のブロックと、に対してEraseページ検索を行なう(ステップS35)。Eraseページ検索は、ブロック内でデータの書き込まれていないページ(Eraseページ)が何れのページであるかをブロックの先頭ページから順番に検索する方法であり、例えばECCエラーを有し且つ「0」が所定数よりも少ないページをEraseページと判断する方法である。すなわち、管理情報復元部155はステップS35において、ブロック内で最後に書き込まれたページを検索する。
【0068】
管理情報復元部155は、前ログ220Aが格納されているページのうち、最後のページ(Eraseページの1つ前のページ)が第何ページであるかを判断する。また、管理情報復元部155は、後ログ220Bが格納されているページのうち、最後のページが第何ページであるかを判断する。そして、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する(ステップS36)。本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じであるか否かのこの判断結果に基づいて、管理情報の復元に用いるログとして前ログ220Aと後ログ220Bの何れか一方を選択する。なお、ログ220A、220Bが格納されているブロックにEraseページが無い場合は、ブロックの最終ページが最後のログと判断する。
【0069】
後ログ220Bの保存中に瞬断が発生すると、この後ログ220Bに対応する前ログ220Aと、保存中の後ログ220Bと、がそれぞれ前ログ用のブロックと後ログ用のブロックに保存されることとなる。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが同じになる。また、後ログ220Bの保存中に瞬断が発生しているので、後ログ220Bは、瞬断に起因して破壊されている場合がある。このため、後ログ220Bの保存中に瞬断が発生した場合は、前ログ220Aを用いて管理情報を復元する必要がある。
【0070】
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページ(ページ数)が、後ログ220Bが格納されている最後のページ(ページ数)と同じであると判断した場合に(ステップS36でYesの場合)、管理情報の復元に用いるログとして前ログを選択する(ステップS37)。
【0071】
一方、データ書き込みに対応する前ログ220Aの保存中に瞬断が発生すると、このデータ書き込みに対応する前ログ220Aのみが前ログ用のブロック内に保存され、このデータ書き込みに対応する後ログ220Bは後ログ用のブロック内に保存されない。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが異なることとなる。また、前ログ220Aの保存中に瞬断が発生しているので、前ログ220Aは、瞬断に起因して破壊されている場合がある。このため、前ログ220Aの保存中に瞬断が発生した場合は、後ログ220Bを用いて管理情報を復元する必要がある。
【0072】
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なると判断した場合に(ステップS36でNoの場合)、管理情報の復元に用いるログとして後ログ220Bを選択する(ステップS38)。
【0073】
この後、管理情報復元部155は、前ログ220Aまたは後ログ220Bのうち選択した方のログの最初のログから最新のログまでをログ格納用ブロックから取得し、DRAM11の作業領域112に展開する(ステップS39)。そして、スナップショット210に対して、古いログから順にログを反映させて管理情報(不揮発性テーブル)を復元し(ステップS40)、管理情報の復元処理が終了する。
【0074】
具体的には、図16に示すように、前ログ220Aを格納しているブロック50Aに対してEraseページ検索が行なわれるとともに(1)、後ログ220Bを格納しているブロック50Bに対して、Eraseページ検索が行なわれる(2)。
【0075】
そして、前ログ220Aと後ログ220Bの最後のページ(ページ数)が同じか否かが判断される(3)。前ログ220Aと後ログ220Bの最後のページが同じであれば、前ログ220Aを用いて管理情報が復元され(4)、前ログ220Aと後ログ220Bの最後のページが異なれば後ログ220Bを用いて管理情報が復元される(5)。
【0076】
図17は、メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。まず、消去動作を行なうとメモリセルのデータは“0”となる。つぎに、図17(a)に示されるように、下位ページの書き込みを行なうと、メモリセルのデータはデータ“0”とデータ“2”になる。ついで、図17(b)に示されるように、上位ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“2”の閾値電圧の分布が大きくなる。この後、上位ページのデータが書き込まれると、メモリセルのデータは、図17(c)に示されるように、本来の閾値電圧を有するデータ“0”〜“3”となる。本実施の形態では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
【0077】
つぎに、NANDメモリ12への書込み処理について説明する。図17(d)に示されるように、ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。なお、図17(d)では、説明の便宜上、ワード線を4本としている。
【0078】
第1番目の書き込みは、メモリセル1の下位ページに1ビットのデータが書きこまれる。第2番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の下位ページに1ビットのデータが書きこまれる。第3番目の書き込みは、メモリセル1とビット方向に隣接したメモリセル3の下位ページに1ビットのデータが書きこまれる。第4番目の書き込みは、メモリセル1と対角に隣接したメモリセル4の下位ページに1ビットのデータが書きこまれる。
【0079】
第5番目の書き込みは、メモリセル1の上位ページに1ビットのデータが書きこまれる。第6番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の上位ページに1ビットのデータが書きこまれる。第7番目の書き込みは、メモリセル3とビット方向に隣接したメモリセル5の下位ページに1ビットのデータが書きこまれる。第8番目の書き込みは、メモリセル3と対角に隣接したメモリセル6の下位ページに1ビットのデータが書きこまれる。
【0080】
第9番目の書き込みは、メモリセル3の上位ページに1ビットのデータが書きこまれる。第10番目の書き込みは、メモリセル3とワード方向に隣接したメモリセル4の上位ページに1ビットのデータが書きこまれる。第11番目の書き込みは、メモリセル5とビット方向に隣接したメモリセル7の下位ページに1ビットのデータが書きこまれる。第12番目の書き込みは、メモリセル5と対角に隣接したメモリセル8の下位ページに1ビットのデータが書きこまれる。
【0081】
第13番目の書き込みは、メモリセル5の上位ページに1ビットのデータが書きこまれる。第14番目の書き込みは、メモリセル5とワード方向に隣接したメモリセル6の上位ページに1ビットのデータが書きこまれる。第15番目の書き込みは、メモリセル7の上位ページに1ビットのデータが書きこまれる。第16番目の書き込みは、メモリセル7とワード方向に隣接したメモリセル8の上位ページに1ビットのデータが書きこまれる。
【0082】
つぎに、管理情報の復元に用いるログの選択方法の具体例について説明する。図18〜図20は、管理情報の復元に用いるログの選択方法を説明するための図である。図18〜図20では、前ログや後ログが、それぞれ前ログ用のブロック(各図の左側のブロック)、後ログ用のブロック(各図の右側のブロック)にページ毎に格納された状態を示している。図18〜図20での1つの物理ブロック内のページは、図17に対応しているものとする。つまり、1〜4、7〜8、11〜12ページは図17の下位ページであり、5〜6、9〜10、13〜16ページは図17の上位ページである。また、前ログ用のブロックや後ログ用のブロックでは、ブロック内の各行が1ページに対応している。なお、図18〜図20では、下位ページと上位ページに説明上分離して表示しているが、これらの下位ページと上位ページとを合わせたものが1つの物理ブロックを構成するものとする。
【0083】
図18〜図20では、正常に保存されたログをログx1で示し、瞬断に起因して破壊されたログをログy1で示し、書き込み中のログをログz1で示している。ログz1の書き込み中に瞬断が発生してログy1が破壊されているので、ログz1のページに対応するメモリセルとログy1のページに対応するメモリセルは、同一のメモリセルである。そして、ログy1のページが下位側のページ(下位ページ)であり、ログz1のページが上位側のページ(上位ページ)である。また、各ブロックのログ(ページ)のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
【0084】
図18(a)は、通常時(電源の異常遮断が発生せずに電源オフとなった場合)の前ログと後ログを示す図であり、図18(b)〜(g)は、瞬断が発生した場合の前ログと後ログを示す図である。
【0085】
図18(a)では、スナップショット210を保存することなくメモリシステム10の電源をオフにした場合に、NANDメモリ12に保存されている前ログおよび後ログを示している。図18(a)の場合、下位ページ(1〜4ページ)にのみデータを書込んでいるので、下位ページの書込中に瞬断が発生しても、下位ページデータ破壊は発生しない。図18(a)に示すように、本実施の形態では前ログと後ログと、をそれぞれ異なるブロックの同一ページに保存しているので、通常時に電源がオフにされると、前ログの最後のページと後ログの最後のページとは、同じページ位置となる。したがって、この場合は前ログを用いて管理情報が復元されることとなる。なお、図18(a)に示す通常時の場合は、前ログの代わりに後ログを用いて管理情報を復元させてもよい。
【0086】
図18(b)は、前ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(b)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(b)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログz1(保存途中のログ)が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0087】
図18(c)は、後ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(c)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(c)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログz1が保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する前ログが既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0088】
図18(d)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。図18(d)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(d)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログz1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0089】
図19(e)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図19(e)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なった後、最初のデータ書き込みに対応する後ログとして「ログ書き込み(1)」を行なっている間に瞬断が発生している。図19(e)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図19(e)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログx1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(2)」に対応するログx1と「ログ書き込み(1)」に対応するログz1が保存される。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0090】
図19(f)は、前ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図19(f)に示すように、前ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図19(e)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1(前段ページ)とログz1(後段ページ)とが保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0091】
図19(g)は、後ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図19(g)に示すように、後ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図19(g)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログx1とログz1とが保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが2ページに渡って既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0092】
図20(h)は、前ログとして2ブロックに跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なっている間に、瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目は最初のページ(下位ページ)であるので前ログ側のブロックにはログy1が発生しない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」に対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0093】
図20(i)は、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、「ログ書き込み(1)」の再書込み処理として「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目の第2ページが下位ページであるので前ログ側のブロックにはログy1が発生していない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」の前段ページに対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応する後段ページのログx1が保存される。さらに、前ログ側の2ブロック目の第2ページに「ログ書き込み(2)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0094】
なお、本実施の形態では、NANDメモリ12が多値メモリである場合について説明したが、NANDメモリ12は2値モードのメモリであってもよい。この場合、瞬断によって前ログや後ログが破壊されることはないので、後ログ220Bとして保存する情報は、前ログ220Aとして保存する情報と同じ情報としておく必要はない。したがって、NANDメモリ12が2値モードのメモリである場合、後ログ220Bは、データを実際に更新した後にデータが更新されたことを承認するための情報(更新承認情報)であってもよい。
【0095】
NANDメモリ12が2値モードのメモリであって、後ログ220Bが更新承認情報である場合も、管理情報復元部155は管理情報を復元する際に、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する。そして、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じである場合に、前ログを用いて管理情報を復元させる。また、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なる場合、後ログと重複している前ログ(後ログが保存されているページと同じページの前ログ)を用いて管理情報を復元させる。例えば、後ログが第1ページから第10ページまで保存されている場合、管理情報復元部155は、第1ページから第10ページまでの前ログを用いて管理情報を復元させる。
【0096】
また、NANDメモリ12が2値モードのメモリの場合に、後ログ220Bとして保存する情報を、前ログ220Aと同じ情報としてもよい。この場合、管理情報復元部155は、NANDメモリ12が多値メモリである場合と同様の処理によって管理情報を復元させる。なお、この場合において、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと異なる場合、後ログと重複している前ログを用いて管理情報を復元させてもよい。
【0097】
つぎに、固定領域管理部156による固定領域のブロックの書換処理について説明する。ここでは、図11に示される四重化された管理プログラム1272の更新(バージョンアップ)処理を例に挙げて説明する。図21は、管理プログラムの更新処理の手順の一例を示すフローチャートであり、図22は、管理プログラムの更新処理の状態を模式的に示す図である。
【0098】
まず、固定領域管理部156は、最新のバージョンの管理プログラムを、たとえばネットワークを介したダウンロードなどによって取得し、メモリシステム10内のDRAM11や図示しないSRAMなどのメモリに格納する(ステップS51)。ついで、メモリに格納された最新の管理プログラムを管理プログラム保存領域127中に順に書込む処理を行う。なお、この場合、図22(a)に示されるように、各管理プログラム格納用ブロック1271A〜1271Dの消去回数識別子は、消去回数を示しており、「s」(自然数)であるとする。また、図22(a)は更新前の状態を示しており、各管理プログラム格納用ブロック1271A〜1271Dに格納されている管理プログラム1272は、更新される前の状態であるので図中では、「管理プログラム(更新前)」と表記している。
【0099】
最初に、管理プログラム保存領域127内の1つの管理プログラム格納用ブロック1271を選択する(ステップS52)。ここでは、第1の管理プログラム格納用ブロック1271Aを選択したものとする。ついで、選択した第1の管理プログラム格納用ブロック1271内の消去回数識別子1273を取得し、メモリの所定領域に記憶した後(ステップS53)、第1の管理プログラム格納用ブロック1271Aを消去し(ステップS54)、メモリ中に格納されている最新の管理プログラムを第1の管理プログラム格納用ブロック1271Aに書込む(ステップS55)。また、ステップS53で記憶した消去回数識別子を「s」から「s+1」にして、第1の管理プログラム格納用ブロック1271Aの所定のページ(たとえば、最終ページ)に書込む(ステップS56)。この状態が、図22(b)に示されている。ここでは、第1の管理プログラム格納用ブロック1271Aのみ「管理プログラム(更新後)」で消去回数識別子が「s+1」となっており、第2〜第4の管理プログラム格納用ブロック1271B〜1271Dでは「管理プログラム(更新前)」で消去回数識別子が「s」となっている。
【0100】
その後、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について管理プログラムの更新が行われたか否かを判定する(ステップS57)。ここでは、更新が行われていない第2〜第4の管理プログラム格納用ブロック1271B〜1271Dが存在するので(ステップS57でNoの場合)、ステップS52へと戻り、つぎに更新を行う管理プログラム格納用ブロック1271を選択し、上述した処理が繰り返し行われる。また、この管理プログラムの更新処理を管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について実行するまで行われる。図22(c)は、すべての第1〜第4の管理プログラム格納用ブロック1271A〜1271Dについて管理プログラムの更新処理が行われた状態を示している。ここでは、第1〜第4の管理プログラム格納用ブロック1271A〜1271Dで「管理プログラム(更新後)」となっており、消去回数識別子も「s+1」となっている。
【0101】
また、ステップS57で、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について管理プログラムの更新が行われた場合(ステップS57でYesの場合)には、管理プログラム1272の更新処理が終了する。
【0102】
管理プログラム1272の更新処理が正常に終了した場合には、図22(c)に示されるように、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271の消去回数識別子が一致した状態となる。しかし、上記した図21に示される処理の途中で、異常な電源断(瞬断)が発生する場合がある。たとえば、第1の管理プログラム格納用ブロック1271Aへの更新処理は正常に終了したが、つぎの第2の管理プログラム格納用ブロック1271Bへの更新処理の途中で瞬断が発生した場合には、図22(b)の状態でメモリシステム10が終了し、つぎにメモリシステム10の電源をオンにした場合には、図22(b)の状態で開始する。
【0103】
つまり、管理プログラム1272の更新処理中に瞬断が発生した場合には、管理プログラム保存領域127内の管理プログラム格納用ブロック1271A〜1271D間で消去回数識別子1273に違いが生じることになる。これを利用して、この実施の形態では、電源オン後に、管理プログラム保存領域127内の管理プログラム格納用ブロック1271A〜1271Dの消去回数識別子1273を比較することで、瞬断発生の有無を判断することが可能となる。
【0104】
そこで、図12のブートローダ144は、電源オン時に、管理プログラムを図示しないSRAMに転送して、この管理プログラムを起動する機能のほかに、電源オン時に、NANDメモリ12の管理プログラム保存領域127中の管理プログラム格納用ブロック1271の消去回数識別子1273を用いて瞬断が発生したか否かを判定する機能を有するものとする。
【0105】
図23は、ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
【0106】
まず、ホスト装置の電源がオンされ(ステップS71)、メモリシステム10に対して起動指示が出されると、ブートローダ144は、NANDメモリ12内の管理プログラム保存領域127から管理プログラム1272を図示しないSRAMなどのメモリに転送する(ステップS72)。ついで、ブートローダ144は、管理プログラム保存領域127中のすべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致するか否かを判定する(ステップS73)。
【0107】
すべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致しなかった場合(ステップS73でNoの場合)には、ブートローダ144は瞬断が発生したと判定する(ステップS74)。ついで、ブートローダ144はメモリに格納した管理プログラムを起動する(ステップS75)。この管理プログラムの起動によって図13に示される機能ブロックが動作可能な状態となる。このとき、ブートローダ144は、ステップS74で瞬断が発生したという判定を、起動した管理プログラムに伝え、データ管理部141の管理情報復元部155は瞬断発生時の管理情報復元処理を実行する(ステップS76)。つまり、図16に示した管理情報復元処理のフローチャートにおいて、ステップS33の処理の後に、ステップS34での管理情報復元部155による瞬断判定を行わずに、ステップS36の処理に移る。
【0108】
その後、データ管理部141の固定領域管理部156は、更新途中だった管理プログラム保存領域127の管理プログラム1272の更新処理を続行する(ステップS77)。この管理プログラム1272の更新処理は、各管理プログラム格納用ブロック1271の消去回数識別子1273が更新前の値であるものに対して行う。たとえば図22(b)の状態でメモリシステム10が再起動した場合には、固定領域管理部156は、第1の管理プログラム格納用ブロック1271A以外のブロックについて管理プログラム1272の更新処理を行う。以上によって、起動処理が終了する。
【0109】
一方、ステップS73ですべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致する場合(ステップS73でYesの場合)には、この情報からだけでは瞬断が発生したか否か判断できず、ブートローダ144はメモリに格納した管理プログラムを起動する(ステップS78)。ついで、管理プログラムの起動によって図13に示される機能ブロックが動作可能な状態となり、データ管理部141の管理情報復元部155は、通常の管理情報復元処理を実行する(ステップS79)。つまり、図16に示した管理情報復元処理のフローチャートをステップS32から順に実行する。以上によって、起動処理が終了する。
【0110】
なお、上述した説明では、固定領域128中の管理プログラム保存領域127での管理プログラム1272の更新処理時における瞬断判定の場合を例に挙げて説明したが、固定領域128のブロックに多重化して格納される情報であれば、上述した処理にどの情報を用いてもよい。たとえば、管理情報保存領域126に保存される管理情報保存情報のうち、固定領域128に保存される第1のルートポインタ240を多重化し、特定ページ(たとえば、最終ページ)に消去回数に対してユニークに割り振られる消去回数識別子を記憶した第1のルートポインタ格納用ブロックを瞬断判定に用いてもよい。この場合、第1のルートポインタ格納用ブロックは、特許請求の範囲における固定情報格納領域に対応している。また、これらの管理プログラム格納用ブロック1271や第1のルートポインタ格納用ブロックを瞬断判定に用いてもよい。
【0111】
以上のように、本実施の形態によれば、固定領域128中に多重化して保存されるブロックの特定のページに、そのブロックの消去回数に対してユニークに付される消去回数識別子を格納し、多重化される情報を格納するブロック間で消去回数識別子が同一となるように設定したので、メモリシステム10の起動時にこれらのブロックの消去回数識別子を確認し、消去回数識別子が異なっている場合には、瞬断が発生したものと判定することができる。その結果、瞬断が発生した場合には、2つのログを用いた瞬断発生の判定処理を行わずに、速やかに瞬断時の起動処理を行うことができるという効果を有する。
【0112】
なお、上述した説明では、DRAM11でのデータ管理単位をページサイズ単位とし、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去単位と管理単位をブロックサイズ単位としたが、これに限定される趣旨ではなく、それぞれ任意の単位を用いることが可能である。また、上述した説明では、NANDメモリ12を構成するメモリセルトランジスタMTが2ビット以上の多値メモリである場合を例に挙げたが、2値を記憶するメモリセルトランジスタMTに対しても適用することができる。また、電荷蓄積層は浮遊ゲート型に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor)構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
【図面の簡単な説明】
【0113】
【図1】本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。
【図2】NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。
【図3】DRAMとNANDメモリの機能構成を模式的に示す図である。
【図4】メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。
【図5】キャッシュ管理情報の一例を示す図である。
【図6】論理NAND管理情報の一例を示す図である。
【図7】NAND内論物変換情報の一例を示す図である。
【図8】管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。
【図9】ログの一例を示す図である。
【図10】第2のルートポインタの一例を示す図である。
【図11】管理プログラム保存領域に保存される管理プログラムの状態の一例を示す図である。
【図12】ドライブ制御部の機能構成の一例を示すブロック図である。
【図13】データ管理部の機能構成の一例を示すブロック図である。
【図14】メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。
【図15】メモリシステムの管理情報の復元処理手順の一例を示すフローチャートである。
【図16】メモリシステムの管理情報の復元処理を説明するための図である。
【図17】メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。
【図18】管理情報の復元に用いるログの選択方法を説明するための図である(その1)。
【図19】管理情報の復元に用いるログの選択方法を説明するための図である(その2)。
【図20】管理情報の復元に用いるログの選択方法を説明するための図である(その3)。
【図21】管理プログラムの更新処理の手順の一例を示すフローチャートである。
【図22】管理プログラムの更新処理の状態を模式的に示す図である。
【図23】ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。
【符号の説明】
【0114】
10…メモリシステム、11…DRAM、12…NANDメモリ、13…電源回路、14…ドライブ制御部、15…バス、31…DRAM管理層、32…論理NAND管理層、33…物理NAND管理層、41…キャッシュ管理情報、42…管理情報、42b…論理ブロック管理情報、42a…論理ページ管理情報、43…NAND内論物変換情報、111…一時記憶領域、112…作業領域、125…データ格納領域、126…管理情報保存領域、127…管理プログラム保存領域、128…固定領域、129…可変領域、141…データ管理部、151…データ転送処理部、152…管理情報管理部、153…管理情報書込機能、154…管理情報保存機能、155…管理情報復元部、156…固定領域管理部、210…スナップショット、220…ログ、220B…後ログ、220B…後ログ、230,230A,230B…第2のルートポインタ、240,240A〜240C…第1のルートポインタ、1271,1271A〜1271D…管理プログラム格納用ブロック、1272…管理プログラム、1273…消去回数識別子。
【技術分野】
【0001】
本発明は、不揮発性半導体記憶装置を用いて構成されるメモリシステムと、このメモリシステムでの瞬断判定方法に関する。
【背景技術】
【0002】
ハードディスク装置を2次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる(たとえば、特許文献1参照)。このような処理を行うことで、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。
【0003】
ところで、近年では、不揮発性半導体記憶装置であるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを有するメモリシステムを2次記憶装置とするパーソナルコンピュータが製品化されている。しかし、このようなNAND型フラッシュメモリに格納されるデータのバックアップに対して、ハードディスク装置に格納されるデータのバックアップの場合と同様に上記特許文献1の技術を適用することはできない。それは、NAND型フラッシュメモリの大容量化には、1つのメモリセルに2ビット以上の複数のデータ(多値データ)を記憶することが可能な多値メモリ技術が使用されているからである(たとえば、特許文献2参照)。
【0004】
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、1つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
【0005】
たとえば、4値を記憶することができる多値メモリでは、1つのメモリセルに下位ページと上位ページを設け、それぞれのページに1ビットのデータを書込むことによって、2ビット(4値)を記憶するものがある。このような多値メモリのデータ書込方法は、第1のメモリセルの下位ページにデータを書込んだ後、隣接メモリセル(第2のメモリセル)の下位ページにデータを書込む。そして、この隣接メモリセルへの書込み後に、第1のメモリセルの上位ページにデータを書込んでいる。
【0006】
しかし、このような多値メモリでは、先に書込んだメモリセルの閾値電圧が、このメモリセルと隣接し、後に書込まれるメモリセルの閾値電圧によって変動してしまう。このため、多値メモリでは、あるメモリセルの第2ページの書き込み中に、たとえば電源の異常遮断など(以下、瞬断という)によって書込みが中断されると、先に書込んだ同じメモリセルの第1ページのデータも破壊される下位ページデータ破壊が生じる可能性がある。
【0007】
そのため、NAND型フラッシュメモリを2次記憶装置とするパーソナルコンピュータにおいて、たとえば特許文献1のログをあるメモリセルの第2ページに書込み中に瞬断によって下位ページデータ破壊が生じてしまった場合には、書込み中のデータのほかに、この書込み中のメモリセルの第1ページのデータまで破壊されてしまい、データを復元することができなくなってしまうという問題点があった。つまり、NAND型フラッシュメモリを有するメモリシステムを2次記憶装置としたパーソナルコンピュータに対して特許文献1の技術を用いてバックアップをとる方法では、パーソナルコンピュータの状態を瞬断前の状態に復元するには不十分であるという問題点があった。
【0008】
特に、瞬断が発生した場合には、メモリシステムを次回起動する際に、瞬断が発生する前の最新の状態まで復帰させる必要があるが、従来の方法では、瞬断が発生したか否かを判定する方法が提案されていなかった。
【0009】
【特許文献1】米国特許出願公開第2006/0224636号明細書
【特許文献2】特開2004−192789号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明は、多値メモリを使用したNAND型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるメモリシステムと瞬断判定方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一態様によれば、揮発性の第1の記憶部と、不揮発性の第2の記憶部と、前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行うコントローラと、を備え、前記第2の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステムが提供される。
【0012】
また、本発明の一態様によれば、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法が提供される。
【発明の効果】
【0013】
本発明によれば、多値メモリを使用したNAND型フラッシュメモリを有するメモリシステムの起動時に、前回終了時に瞬断が発生したか否かを速やかに判定することができるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に添付図面を参照して、本発明にかかるメモリシステムと瞬断判定方法の最良な実施の形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
【0015】
このメモリシステムは、不揮発性半導体記憶装置を含み、たとえば、パーソナルコンピュータなどのホスト装置の2次記憶装置(SSD:Solid State Drive)として使用され、ホスト装置から書込要求が出されたデータを記憶し、またホスト装置から読出要求のあったデータを読出してホスト装置に出力する機能を有する。図1は、本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。このメモリシステム10は、第1の記憶部としてのDRAM(Dynamic Random Access Memory)11と、第2の記憶部としてのNAND型フラッシュメモリ(以下、NANDメモリという)12と、電源回路13と、コントローラとしてのドライブ制御部14と、を備える。
【0016】
DRAM11は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としては、ホスト装置から書込要求があったデータをNANDメモリ12に書込む前に一時的に保存したり、ホスト装置から読出要求があったデータをNANDメモリ12から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報を格納するために使用される。さらに、作業領域用の記憶部としては、管理情報を復元する際に用いるログの展開時などに使用される。
【0017】
NANDメモリ12は、データ保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータを記憶したり、DRAM11で管理される管理情報をバックアップ用に記憶したり、メモリシステム10の管理プログラム(ファームウェア)を保存したりする。この図1では、NANDメモリ12が4つのチャネル120A〜120Dによって構成されている場合が示されている。1つのチャネル120A〜120Dは、所定のサイズの記憶容量を有する8個のチップ122が1つにまとめられたパッケージ121を2つ含んでいる。また、各チャネル120A〜120Dは、ドライブ制御部14とバス15を介して接続されている。
【0018】
電源回路13は、外部電源を受け、この外部電源を用いてメモリシステム10の各部に供給するための複数の内部電源を生成する。また、電源回路13は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号を生成する。このパワーオンリセット信号は、ドライブ制御部14に送られる。
【0019】
ドライブ制御部14は、DRAM11とNANDメモリ12を制御する。詳細は後述するが、たとえば、電源回路13からのパワーオンリセット信号を受信すると管理情報の復元処理または管理情報の保存処理を行う。また、ドライブ制御部14は、ATAインタフェース(図中では、ATA I/Fと表記)を介して、ホスト装置との間でデータを送受信し、RS232Cインタフェース(図中では、RS232C I/Fと表記)を介して、デバッグ用機器との間でデータを送受信する。さらに、ドライブ制御部14は、メモリシステム10の外部に設けられる状態表示用LEDを制御するための制御信号を出力する。
【0020】
ここで、NANDメモリ12の構成について説明する。NANDメモリ12は、データ消去の単位であるブロックを基板上に複数配列して構成される。図2は、NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。なお、この図2において、紙面上の左右方向をX方向とし、紙面上のX方向に垂直な方向をY方向としている。
【0021】
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と、を有する。
【0022】
各メモリセルトランジスタMT0〜MTnは、半導体基板上に形成された積層ゲート構造を有する電界効果型トランジスタから構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタMT0〜MTnは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じて2ビット以上のデータを記憶することができる多値メモリである。なお、以下に示す実施の形態では、メモリセルトランジスタMTは4値を記憶することができる多値メモリである場合を例に挙げて説明するが、4値よりも大きな値を記憶することができる多値メモリであってもよい。
【0023】
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では、このページ単位でデータの書込みと読出しが行われる。
【0024】
1つのブロックBLK内の(m+1)個の選択トランジスタST1のドレインにはそれぞれビット線BL0〜BLmが接続され、ゲートには選択ゲート線SGDが共通接続されている。また、選択トランジスタST1のソースはメモリセルトランジスタMT0のドレインと接続されている。同様に、1つのブロックBLK内の(m+1)個の選択トランジスタST2のソースにはソース線SLが共通接続され、ゲートには選択ゲート線SGSが共通接続されている。また、選択トランジスタST2のドレインはメモリセルトランジスタMTnのソースと接続されている。
【0025】
なお、図示されていないが、1つのブロックBLK内のビット線BLj(j=0〜m)は、他のブロックBLKのビット線BLjとの間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロックBLK内において同一列にあるNANDストリングNS間は、同一のビット線BLjによって接続される。
【0026】
つぎに、DRAM11とNANDメモリ12の機能構成について説明する。図3は、DRAMとNANDメモリの機能構成を模式的に示す図であり、(a)はDRAM11の機能構成を示し、(b)はNANDメモリ12の機能構成を示している。
【0027】
図3(a)に示されるように、DRAM11は、ホスト装置から書込要求のあったデータが記憶されるライトキャッシュ領域WCと、ホスト装置から読出要求のあったデータが記憶されるリードキャッシュ領域RCと、DRAM11およびNANDメモリ12に記憶されるデータの格納位置を管理するための管理情報が記憶される一時記憶領域111と、管理情報を復元する際に使用される作業領域112と、を有する。
【0028】
図3(b)に示されるように、NANDメモリ12は、ホスト装置から書込要求のあったデータが格納されるデータ格納領域125と、DRAM11の一時記憶領域111で管理される管理情報が保存される管理情報保存領域126と、管理プログラムなどが多重化して保存される管理プログラム保存領域127と、を有する。また、NANDメモリ12は、メモリシステム10を動作させるのに必要な情報(固定情報)を固定した位置に保存する固定領域128と、NANDメモリ12内の固定領域128以外の領域である可変領域129と、に分けることができる。詳細は後述するが、管理プログラム保存領域127のすべてと管理情報保存領域126の一部は固定領域128に属し、管理情報保存領域126の他の部分とデータ格納領域125のすべては可変領域129に属している。この例では、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去の単位をブロックサイズ単位(たとえば512KB単位)とするものとする。そのため、ブロックサイズ単位で管理されるNANDメモリ12の各ブロックを記憶するための領域を、さらにページサイズ単位の領域に分割する。
【0029】
ここで、DRAM11の一時記憶領域111で管理される管理情報について説明する。図4は、メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。なお、ここで、データとは、ホスト装置から書込要求/読出要求のあったデータのことをいうものとする。このメモリシステム10では、キャッシュの役割をするDRAM11でのデータ管理を行うDRAM管理層31と、NANDメモリ12での論理的なデータ管理を行う論理NAND管理層32と、NANDメモリ12での物理的なデータ管理やNANDメモリ12の延命処理などを行う物理NAND管理層33の3層構造でデータ管理が行われる。
【0030】
DRAM11のライトキャッシュ領域WCとリードキャッシュ領域RCでは、ホスト装置のアドレス管理方法によって管理される論理アドレス(以下、LBA(Logical Block Address)という)で指定されたデータが、DRAM11上の所定の範囲の物理アドレス(以下、DRAM内物理アドレスという)に記憶される。また、DRAM管理層31内でのデータは、格納されるデータのLBAとDRAM内物理アドレスとの対応関係と、ページ中のセクタサイズ単位のデータの有無を示すセクタフラグと、を含むキャッシュ管理情報41によって管理される。
【0031】
図5は、キャッシュ管理情報テーブルの一例を示す図である。ここでは、キャッシュ管理情報41は、DRAM11の1ページサイズの領域1つに対して1エントリとし、エントリ数はライトキャッシュ領域WCとリードキャッシュ領域RCに収まるページ数以下とする。各エントリには、ページサイズのデータのLBAと、DRAM内物理アドレスと、このページをセクタサイズで分割した各領域における有効データの位置を示すセクタフラグと、が関連付けられている。
【0032】
NANDメモリ12では、DRAM11からのデータがNANDメモリ12上の所定の範囲の物理アドレス(以下、NAND内物理アドレスという)に格納される。多値メモリからなるNANDメモリ12では、書換可能回数に制約があるため、NANDメモリ12を構成する各ブロック間での書換回数が均等化するようにドライブ制御部14で制御されている。つまり、ドライブ制御部14は、NANDメモリ12内のあるNAND内物理アドレスに書込まれたデータの更新を行う場合に、そのデータが含まれるブロックのうち更新が必要な部分を反映させたデータを、元のブロックとは異なるブロックに書込み、元のブロックは無効化するようにして、NANDメモリ12を構成するブロック間での書換回数が均等化するように制御している。
【0033】
このように、NANDメモリ12では、データの書込/読出処理と消去処理とでは処理単位が異なるとともに、データの更新処理においては、更新前のデータの位置(ブロック)と更新後のデータの位置(ブロック)とが異なるため、この実施の形態では、NAND内物理アドレスのほかにNANDメモリ12内で独自に使用されるNAND内論理アドレス(以下、NAND内論理アドレスという)を設けることにする。
【0034】
そこで、論理NAND管理層32内でのデータは、DRAM11から受け取ったページサイズ単位のデータのLBAと、受け取ったデータを格納するNANDメモリ12の論理的なページ位置を示すNAND内論理アドレスとの間の関係と、NANDメモリ12における消去単位のブロック(以下、物理ブロックとする)とサイズが一致する論理的なブロック(以下、論理ブロックという)のアドレス範囲を示す関係と、を示す論理NAND管理情報42によって管理される。なお、物理ブロックを複数まとめたものを論理ブロックとしてもよい。また、物理NAND管理層33でのデータは、NANDメモリ12における論理ブロックのNAND内論理アドレスと、物理ブロックのNAND内物理アドレスとの対応関係を含むNAND内論理アドレス−物理アドレス変換情報(以下、論物変換情報という)43によって管理される。
【0035】
図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内論理アドレスとが対応付けられている。
【0036】
これらの管理情報によって、ホスト装置で使用されるLBAと、NANDメモリ12で使用されるNAND内論理アドレスと、NANDメモリ12で使用されるNAND内物理アドレスとの間を対応付けることができ、ホスト装置と当該メモリシステム10との間のデータのやり取りを行うことが可能となる。
【0037】
なお、以下では、DRAM管理層31で管理される管理情報は、電源オフなどによって消失するので、揮発性テーブルともいい、論理NAND管理層32および物理NAND管理層33で管理される管理情報は、電源オフなどによって消失した際にメモリシステム10の次回起動時に支障を与え、保存しておくことが必要なので、不揮発性テーブルともいう。
【0038】
この不揮発性テーブルは、NANDメモリ12に格納されているデータを管理するものであり、この不揮発性テーブルがなければNANDメモリ12に格納されている情報にアクセスできなかったり、既に記憶した領域内のデータを消してしまったりするので、不意の電源オフなどに備えて最新の情報に保存しておく必要がある。そのため、この実施の形態では、NANDメモリ12の管理情報保存領域126には、少なくとも不揮発性テーブルを含む管理情報を最新の状態で保存している。そこでつぎに、NANDメモリ12の管理情報保存領域126に保存される管理情報保存情報について説明する。なお、以下では、不揮発性テーブルのみを管理情報保存領域126に保存する場合を例に挙げる。
【0039】
図8は、管理情報保存領域126に記憶される管理情報保存情報の内容の一例を模式的に示す図である。この管理情報保存領域126には、ある時点における不揮発性テーブルの内容であるスナップショット210と、不揮発性テーブルの内容に変化があった場合に内容を変更した後の不揮発性テーブルとスナップショット210(またはスナップショット210と既に取られたログ)との差分情報であるログ220と、スナップショット210とこのスナップショット210に関する一番目に取得されたログ220の位置(ブロック)を示す第2のルートポインタ230と、第2のルートポインタ230が格納される位置(ブロック)を示す第1のルートポインタ240と、を含む管理情報保存情報が格納される。ここで、スナップショット210とは、DRAM11の一時記憶領域111に記憶される管理情報のうち、少なくとも不揮発性テーブルを含む管理情報を所定の時点で保存した情報のことをいう。
【0040】
また、ログ220は、管理情報が変化する処理(たとえば、NANDメモリ12のデータ格納領域125へのデータの書込処理)の前後で取られ、処理の前に保存するログを前ログ220Aといい、処理の後に保存するログを後ログ220Bという。なお、スナップショット210がとられた後の最初の前ログ220Aや前ログ220Aは、不揮発性テーブルとスナップショット210との差分情報であり、2回目以降の前ログ220Aまたは後ログ220Bは、既に取られた前ログ220Aまたは後ログ220Bとスナップショット210とを合わせたものと、不揮発性テーブルと、の差分情報である。
【0041】
この図8において、スナップショット210、前ログ220A、後ログ220B、第2のルートポインタ230および第1のルートポインタ240は、それぞれ異なるブロックに格納される。なお、これらのスナップショット210、前ログ220A、後ログ220B、第2のルートポインタ230および第1のルートポインタ240がそれぞれ格納されるブロックの大きさは、消去単位である物理ブロックと同じ大きさであるものとする。スナップショット210は、スナップショット格納用ブロックに格納される。スナップショット210には、NANDメモリ12の管理情報保存領域126内の不揮発性テーブルである論理NAND管理情報42とNAND内論物変換情報43とが含まれる。新しいスナップショット210が保存されると、以前に保存されていたスナップショット210とは別のブロックに保存される。
【0042】
前ログ220Aと後ログ220Bは、それぞれ前ログ格納用ブロックと後ログ格納用ブロックに格納される。これらの前ログ220Aと後ログ220Bは、スナップショット210の世代が変わっても、それぞれ同じ前ログ格納用ブロックと後ログ格納用ブロックに連続して書込まれる。図9は、ログの一例を示す図である。ログ220は、変更対象の管理情報となる対象情報と、その対象情報中の変更対象となるエントリである対象エントリと、その対象エントリ中の変更対象となる項目である対象項目と、その対象項目の変更の内容である変更内容と、を含む。なお、前ログ220Aと後ログ220Bとは、必ずしも同じ内容とする必要はなく、たとえば前ログ220Aには図9に示されるような管理情報が変化した際の差分情報を記録し、後ログ220Bには管理情報に変更が生じるような処理が終了したことを示すフラグを前ログ220Aに対応させて記録するようにしてもよい。
【0043】
第2のルートポインタ230は、第2のルートポインタ格納用ブロックに格納される。第2のルートポインタ230は、スナップショット210と前ログ220Aと後ログ220Bの格納位置を示すブロックの先頭アドレスを示すものであればよい。ただし、第2のルートポインタ230のうちスナップショット210の格納位置を示す部分は、スナップショット210に含まれる各管理情報(不揮発性テーブル)の先頭アドレスを示すものであってもよい。なお、ログ220の先頭アドレスを示すポインタがスナップショット210に格納され、第2のルートポインタ230としてはスナップショット210の先頭アドレスを示すポインタのみの構成であってもよい。また、第2のルートポインタ230は、スナップショット210が新たに保存された場合に更新される。
【0044】
図10は、第2のルートポインタの一例を示す図である。1ブロックのサイズを512KBとすると、4KBのサイズの1ページに第2のルートポインタ230が格納される。この第2のルートポインタ230は、スナップショットアクセス情報と、ログアクセス情報と、ネクストポインタと、を含む。ここで、スナップショットアクセス情報は、スナップショットが格納されているブロックへアクセスするための情報である。また、ログアクセス情報は、ログが格納されているブロックへアクセスするための情報であり、ブロックを指定する情報と、基準となるスナップショットに関係するログが格納されている上記ブロック内の先頭ページを指定する情報と、を含む。ネクストポインタは、つぎの第2のルートポインタ230が格納されるページを示すインデックスである。このネクストポインタによって、第2のルートポインタ230はリンクドリスト方式の情報となり、第1のルートポインタ240で指示された第2のルートポインタ格納用ブロックの先頭ページからネクストポインタをたどることによって、最新の第2のルートポインタ230へとたどり着くことが可能となる。なお、リンクドリスト方式ではなく、第2のルートポインタ格納領域の先頭ページから第2のルートポインタ230を順に追記的に格納してもよい。
【0045】
第1のルートポインタ240は、第1のルートポインタ格納用ブロックに格納される。第1のルートポインタ240は、第2のルートポインタ230が格納されている第2のルートポインタ格納用ブロックのブロック(位置)へアクセスするための情報であり、メモリシステム10の起動時に、管理情報を復元するための処理の際に最初に読み込まれる情報である。この第1のルートポインタ240は、第2のルートポインタが格納されるブロックが変わった場合に変更される。第1のルートポインタ240は、第1のルートポインタ格納用ブロックに、たとえば、ブロックの先頭ページから順に追記的に格納される。このような場合には、第1のルートポインタ格納用ブロック内の未書込ページの1つ前のページが最新情報を有することになるので、未書込ページの最上位のページを検索することで、最新の第1のルートポインタ240を検索することができる。また、第2のルートポインタ230の場合のように、リンクドリストを用いることも可能である。
【0046】
ここで、第1のルートポインタ240はNANDメモリ12内の固定領域128に格納され、スナップショット210、前ログ220A、後ログ220Bおよび第2のルートポインタ230はNANDメモリ12内の可変領域129に格納される。固定領域128とは、NANDメモリ12において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が固定化している領域であり、書換えや書込みがほとんど発生しない更新頻度の低い、メモリシステム10を稼働させるのに必要な情報が格納される領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域126(NANDメモリ12)内の他のブロックに情報(第1のルートポインタ240)を書込むのではなく、ブロックの情報を消去した後に同じブロックの先頭ページから書込むように設定された領域である。また、上述したように、管理プログラム保存領域127もこの固定領域128に設けられる。なお、この例では、NANDメモリ12は多値メモリで構成されるとしているが、固定領域128中に格納される第1のルートポインタ240のデータや管理プログラムの信頼性を高めるために、2値モードで使用することが望ましい。また、固定領域128に格納される第1のルートポインタ240や管理プログラムなどの情報は、特許請求の範囲における固定情報に対応している。
【0047】
一方の可変領域129とは、固定領域128を除くNANDメモリ12の領域において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が変化する領域であり、NANDメモリ12中の固定領域128以外の領域である。たとえば、現在書込み中のブロックがすべて満たされた場合には、管理情報保存領域126内の可変領域129中の書込可能なフリーブロックとなっている他のブロックにつぎの情報を書込むように設定された領域である。なお、この可変領域129は、上記したようにNANDメモリ12中の固定領域128を除いた領域であり、管理情報保存領域126中のスナップショット210、ログ220および第2のルートポインタ230が格納される領域のほかに、データ格納領域125も含まれる。つまり、固定領域128を除いたNANDメモリ12中の物理的な領域を可変領域129とし、この中で、データ格納領域125と管理情報保存領域126中のスナップショット210、ログ220および第2のルートポインタ230が格納される領域とが機能的に分離されている。
【0048】
図11は、管理プログラム保存領域127に保存される管理プログラムの状態の一例を示す図である。管理プログラム1272は、管理プログラム保存領域127内の管理プログラム格納用ブロック1271に保存され、多重化されている。この管理プログラム1272は、メモリシステム10の起動時に実行されるプログラムであり、バージョンアップがなされると更新処理が行われる。その際には、現在のバージョンの管理プログラム1272が格納されている管理プログラム格納用ブロック1271を消去した後に新しいバージョンの管理プログラム1272が上書きされる。何らかの原因によって管理プログラム1272が破壊されてしまうことを防ぐために、管理プログラム1272は多重化されている。一般的には、管理プログラム1272は二重化以上されていればよいが、たとえばバージョンアップによる管理プログラムの上書き処理時などにおいて、管理プログラム1272が常に二重化以上の状態を保つためには、全体で四重化以上されていることが望ましい。この図11では、管理プログラム1272が四重化されている場合を示している。また、管理プログラム格納用ブロック1271は、特許請求の範囲における固定情報格納領域に対応している。
【0049】
また、管理プログラム1272が格納される管理プログラム格納用ブロック1271の特定のページ(たとえば、最終ページ)には、その管理プログラム格納用ブロック1271の消去回数に対してユニークな消去回数識別子1273が記録されている。そして、この消去回数識別子1273は、多重化されている各管理プログラム格納用ブロック1271間で整合が取れている(一致した値となっている)。
【0050】
つぎに、ドライブ制御部14の機能について説明する。図12は、ドライブ制御部の機能構成の一例を示すブロック図である。ドライブ制御部14は、DRAM11−NANDメモリ12間のデータ転送やNANDメモリ12に関する各種機能の制御を行うデータ管理部141と、ATAインタフェースから受けた指示に基づいてデータ管理部141と協働してデータ転送処理を行うATAコマンド処理部142と、データ管理部141およびATAコマンド処理部142と協動して各種のセキュリティ情報を管理するセキュリティ管理部143と、電源オン時に、管理プログラム(ファームウェア)をNANDメモリ12の管理プログラム保存領域127から図示しないメモリ(たとえば、SRAM(Static RAM))にロードするブートローダ144と、ドライブ制御部14内の各コントローラや回路の初期化を行う初期化管理部145と、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理するデバッグサポート部146と、を備える。
【0051】
図13は、データ管理部の機能構成の一例を示すブロック図である。データ管理部141は、DRAM11とNANDメモリ12との間でデータ転送を行うデータ転送処理部151と、DRAM11およびNANDメモリ12に記憶されるデータの変更に伴って管理情報の変更や保存を行う管理情報管理部152と、電源オン時などにNANDメモリ12に保存された管理情報に基づいて最新の管理情報を復元する管理情報復元部155と、固定領域128に格納される管理プログラムなどのデータの管理を行う固定領域管理部156と、をさらに備える。
【0052】
また、管理情報管理部152は、管理情報書込機能153と、管理情報保存機能154と、をさらに備える。管理情報書込機能153は、データ転送処理部151によるDRAM11またはNANDメモリ12で記憶されるデータの変更処理によって管理情報の更新が必要な場合に、DRAM11に記憶されている管理情報の更新を行う。
【0053】
管理情報保存機能154は、メモリシステム10が所定の条件を満たしたとき、管理情報をスナップショット210として、または管理情報中の更新された分の情報をログ220として、NANDメモリ12の管理情報保存領域126に保存する。また、このスナップショット210またはログ220(前ログ220Aと後ログ220B)の保存に伴って第2のルートポインタ230または第2のルートポインタ230と第1のルートポインタ240が書込まれる位置が変更される場合には、この第2のルートポインタ230または第2のルートポインタ230と第1のルートポインタ240に対する更新処理も行う。
【0054】
管理情報保存機能154によるスナップショット210の保存は、以下に例示する3つのスナップショット保存条件のいずれかを満たす場合に実行される。
(1)スタンバイ(メモリシステム10本体の電力消費を最小限にまで落とすようにする指示)/スリープ(所定の時間アクセスがない場合にデバイスを停止する指示)/リセット(メモリシステム10を再起動する指示)を受けた場合。
(2)NANDメモリ12の管理情報保存領域126中のログ220(前ログ220Aと後ログ220B)を記憶するために設けられたログ記憶領域が埋まってしまった(領域がデータで満杯になった)場合。
【0055】
また、管理情報管理部152によるログ220(前ログ220A、後ログ220B)の保存は、DRAM11に記憶されている管理情報(不揮発性テーブル)の更新を伴うNANDメモリ12上のデータ更新時(NANDメモリ12へのデータ書込みが必要な時)である。
【0056】
管理情報復元部155は、メモリシステム10に電源がオンされると、NANDメモリ12の管理情報保存領域126に保存されている管理情報保存情報に基づいた管理情報の復元処理を行う。具体的には、固定領域128中の第1のルートポインタ240、可変領域129中の第2のルートポインタ230、およびログ220へと順にたどっていき、最新のスナップショット210に対するログ220が存在するか否かを判定する。ログ220が存在しない場合には、上記スナップショット保存条件の(1)に示した場合に相当する前回のメモリシステム10の終了が正常終了であると判定し、スナップショット格納用ブロックのスナップショット210を管理情報としてDRAM11に復元する。また、ログ220が存在する場合には、上記スナップショット保存条件の(1)に示した場合以外のメモリシステム10が正常終了ではなく瞬断などの異常終了であった場合であるので、スナップショット格納用ブロックからスナップショット210を取得し、ログ格納用ブロックからログ220を取得して、DRAM11上でスナップショット210にログ220を反映させて管理情報(不揮発性テーブル)の復元を行う。
【0057】
固定領域管理部156は、NANDメモリ12の固定領域128に格納されている管理プログラムや第1のルートポインタが格納されているブロックの書換処理(すなわち、ブロックを消去して、同じブロックへの書込みを行う処理)を行う。たとえば、多重化されている管理プログラムのバージョンアップを行ったり、第1のルートポインタ格納ブロックが満たされた場合の書換処理を行ったりする。
【0058】
ここで、管理情報管理部152によるメモリシステム10の管理情報の保存処理について説明する。図14は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているとともに、ホスト装置(メモリシステム10)が起動状態にあり、また、この起動状態の前のメモリシステム10の停止前にスナップショット210が保存されているものとする。
【0059】
まず、ホスト装置(メモリシステム10)の前回終了時に保存されたスナップショット210を基に、ホスト装置(メモリシステム10)が起動された状態にある(ステップS11)。ついで、管理情報管理部152は、上記(1)〜(2)で示したスナップショット保存条件を満たすか否かを判定する(ステップS12)。スナップショット保存条件を満たさない場合(ステップS12でNoの場合)には、管理情報の更新を伴う指示、ログ保存条件を満たす指示を受けたか否かを判定する(ステップS13)。管理情報の更新を伴う指示を受けなかった場合(ステップS13でNoの場合)には、ステップS12へと戻る。
【0060】
また、管理情報の更新を伴う指示を受けた場合(ステップS13でYesの場合)には、その指示を実行することによって管理情報がどのように更新されるか更新計画を決定し(ステップS14)、その更新計画をNANDメモリ12の管理情報保存領域126のログ格納用ブロックに前ログ220Aとして保存する(ステップS15)。この更新計画(ログ)は、前ログ格納用ブロックに前ログ220Aが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、前ログ格納用ブロックに前ログ220A(以下、過去ログという)が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット210と過去ログとを合わせたものとの間の差分情報である。なお、この前ログ220Aは、たとえば、前ログ220A(更新計画)をDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。
【0061】
ついで、論理NAND管理層は、ステップS13で受けた指示を実行する(ステップS16)。このような指示として、たとえばユーザデータのNANDメモリ12のデータ保存領域の所定のブロックへの書込処理が挙げられる。
【0062】
この後、実行した処理に応じて、DRAM11に記憶されている管理情報が更新される。そして、管理情報保存機能154は、管理情報が更新されたことを示す後ログ220Bを、NANDメモリ12の管理情報保存領域126に保存する(ステップS17)。この後ログ220Bは、前ログ220Aと同様に現時点の不揮発性テーブルと、スナップショット210またはスナップショット210と後ログ220Bとを合わせたものと、の差分情報であってもよいし、単なるフラグであってもよい。その後、ステップS12へと処理が戻る。
【0063】
また、ステップS12でスナップショット保存条件を満たす場合(ステップS12でYesの場合)には、DRAM11の一時記憶領域111内の少なくとも不揮発性テーブルを含む管理情報をスナップショット210としてNANDメモリ12の管理情報保存領域126に保存する(ステップS18)。そして、メモリシステム10の終了指示があるか否かを判定し(ステップS19)、終了指示がない場合(ステップS19でNoの場合)には再びステップS12へと戻り、終了指示がある場合(ステップS19でYesの場合)には、そのまま処理が終了する。
【0064】
つぎに、管理情報復元部155によるメモリシステム10の管理情報の復元処理について説明する。図15は、メモリシステムの管理情報の復元処理手順の一例を示すフローチャートであり、図16は、メモリシステムの管理情報の復元処理を説明するための図である。なお、ここでも、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
【0065】
まず、瞬断からの回復などによってホスト装置の電源がオンされ、メモリシステム10に対して起動指示が出されると(ステップS31)、管理情報復元部155は、NANDメモリ12の管理情報保存領域126中のポインタ230を読込み(ステップS32)、スナップショット210が格納されているブロックのアドレスと、前後ログ(前ログ220A、後ログ220B)が格納されているブロックのアドレスを取得する(ステップS33)。
【0066】
その後、管理情報復元部155は、スナップショット210をスナップショット格納用ブロックから取得し、DRAM11の管理情報格納領域111に復元する(ステップS34)。
【0067】
さらに、管理情報復元部155は、前ログ用のブロックと、NANDメモリ12内の後ログ用のブロックと、に対してEraseページ検索を行なう(ステップS35)。Eraseページ検索は、ブロック内でデータの書き込まれていないページ(Eraseページ)が何れのページであるかをブロックの先頭ページから順番に検索する方法であり、例えばECCエラーを有し且つ「0」が所定数よりも少ないページをEraseページと判断する方法である。すなわち、管理情報復元部155はステップS35において、ブロック内で最後に書き込まれたページを検索する。
【0068】
管理情報復元部155は、前ログ220Aが格納されているページのうち、最後のページ(Eraseページの1つ前のページ)が第何ページであるかを判断する。また、管理情報復元部155は、後ログ220Bが格納されているページのうち、最後のページが第何ページであるかを判断する。そして、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する(ステップS36)。本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じであるか否かのこの判断結果に基づいて、管理情報の復元に用いるログとして前ログ220Aと後ログ220Bの何れか一方を選択する。なお、ログ220A、220Bが格納されているブロックにEraseページが無い場合は、ブロックの最終ページが最後のログと判断する。
【0069】
後ログ220Bの保存中に瞬断が発生すると、この後ログ220Bに対応する前ログ220Aと、保存中の後ログ220Bと、がそれぞれ前ログ用のブロックと後ログ用のブロックに保存されることとなる。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが同じになる。また、後ログ220Bの保存中に瞬断が発生しているので、後ログ220Bは、瞬断に起因して破壊されている場合がある。このため、後ログ220Bの保存中に瞬断が発生した場合は、前ログ220Aを用いて管理情報を復元する必要がある。
【0070】
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページ(ページ数)が、後ログ220Bが格納されている最後のページ(ページ数)と同じであると判断した場合に(ステップS36でYesの場合)、管理情報の復元に用いるログとして前ログを選択する(ステップS37)。
【0071】
一方、データ書き込みに対応する前ログ220Aの保存中に瞬断が発生すると、このデータ書き込みに対応する前ログ220Aのみが前ログ用のブロック内に保存され、このデータ書き込みに対応する後ログ220Bは後ログ用のブロック内に保存されない。この場合、本実施の形態では、前ログ220Aと後ログ220Bと、をそれぞれ異なるブロックの同一ページに保存しているので、前ログ220Aが格納されている最後のページと、後ログ220Bが格納されている最後のページとが異なることとなる。また、前ログ220Aの保存中に瞬断が発生しているので、前ログ220Aは、瞬断に起因して破壊されている場合がある。このため、前ログ220Aの保存中に瞬断が発生した場合は、後ログ220Bを用いて管理情報を復元する必要がある。
【0072】
したがって、本実施の形態の管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なると判断した場合に(ステップS36でNoの場合)、管理情報の復元に用いるログとして後ログ220Bを選択する(ステップS38)。
【0073】
この後、管理情報復元部155は、前ログ220Aまたは後ログ220Bのうち選択した方のログの最初のログから最新のログまでをログ格納用ブロックから取得し、DRAM11の作業領域112に展開する(ステップS39)。そして、スナップショット210に対して、古いログから順にログを反映させて管理情報(不揮発性テーブル)を復元し(ステップS40)、管理情報の復元処理が終了する。
【0074】
具体的には、図16に示すように、前ログ220Aを格納しているブロック50Aに対してEraseページ検索が行なわれるとともに(1)、後ログ220Bを格納しているブロック50Bに対して、Eraseページ検索が行なわれる(2)。
【0075】
そして、前ログ220Aと後ログ220Bの最後のページ(ページ数)が同じか否かが判断される(3)。前ログ220Aと後ログ220Bの最後のページが同じであれば、前ログ220Aを用いて管理情報が復元され(4)、前ログ220Aと後ログ220Bの最後のページが異なれば後ログ220Bを用いて管理情報が復元される(5)。
【0076】
図17は、メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。まず、消去動作を行なうとメモリセルのデータは“0”となる。つぎに、図17(a)に示されるように、下位ページの書き込みを行なうと、メモリセルのデータはデータ“0”とデータ“2”になる。ついで、図17(b)に示されるように、上位ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“2”の閾値電圧の分布が大きくなる。この後、上位ページのデータが書き込まれると、メモリセルのデータは、図17(c)に示されるように、本来の閾値電圧を有するデータ“0”〜“3”となる。本実施の形態では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
【0077】
つぎに、NANDメモリ12への書込み処理について説明する。図17(d)に示されるように、ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。なお、図17(d)では、説明の便宜上、ワード線を4本としている。
【0078】
第1番目の書き込みは、メモリセル1の下位ページに1ビットのデータが書きこまれる。第2番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の下位ページに1ビットのデータが書きこまれる。第3番目の書き込みは、メモリセル1とビット方向に隣接したメモリセル3の下位ページに1ビットのデータが書きこまれる。第4番目の書き込みは、メモリセル1と対角に隣接したメモリセル4の下位ページに1ビットのデータが書きこまれる。
【0079】
第5番目の書き込みは、メモリセル1の上位ページに1ビットのデータが書きこまれる。第6番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の上位ページに1ビットのデータが書きこまれる。第7番目の書き込みは、メモリセル3とビット方向に隣接したメモリセル5の下位ページに1ビットのデータが書きこまれる。第8番目の書き込みは、メモリセル3と対角に隣接したメモリセル6の下位ページに1ビットのデータが書きこまれる。
【0080】
第9番目の書き込みは、メモリセル3の上位ページに1ビットのデータが書きこまれる。第10番目の書き込みは、メモリセル3とワード方向に隣接したメモリセル4の上位ページに1ビットのデータが書きこまれる。第11番目の書き込みは、メモリセル5とビット方向に隣接したメモリセル7の下位ページに1ビットのデータが書きこまれる。第12番目の書き込みは、メモリセル5と対角に隣接したメモリセル8の下位ページに1ビットのデータが書きこまれる。
【0081】
第13番目の書き込みは、メモリセル5の上位ページに1ビットのデータが書きこまれる。第14番目の書き込みは、メモリセル5とワード方向に隣接したメモリセル6の上位ページに1ビットのデータが書きこまれる。第15番目の書き込みは、メモリセル7の上位ページに1ビットのデータが書きこまれる。第16番目の書き込みは、メモリセル7とワード方向に隣接したメモリセル8の上位ページに1ビットのデータが書きこまれる。
【0082】
つぎに、管理情報の復元に用いるログの選択方法の具体例について説明する。図18〜図20は、管理情報の復元に用いるログの選択方法を説明するための図である。図18〜図20では、前ログや後ログが、それぞれ前ログ用のブロック(各図の左側のブロック)、後ログ用のブロック(各図の右側のブロック)にページ毎に格納された状態を示している。図18〜図20での1つの物理ブロック内のページは、図17に対応しているものとする。つまり、1〜4、7〜8、11〜12ページは図17の下位ページであり、5〜6、9〜10、13〜16ページは図17の上位ページである。また、前ログ用のブロックや後ログ用のブロックでは、ブロック内の各行が1ページに対応している。なお、図18〜図20では、下位ページと上位ページに説明上分離して表示しているが、これらの下位ページと上位ページとを合わせたものが1つの物理ブロックを構成するものとする。
【0083】
図18〜図20では、正常に保存されたログをログx1で示し、瞬断に起因して破壊されたログをログy1で示し、書き込み中のログをログz1で示している。ログz1の書き込み中に瞬断が発生してログy1が破壊されているので、ログz1のページに対応するメモリセルとログy1のページに対応するメモリセルは、同一のメモリセルである。そして、ログy1のページが下位側のページ(下位ページ)であり、ログz1のページが上位側のページ(上位ページ)である。また、各ブロックのログ(ページ)のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
【0084】
図18(a)は、通常時(電源の異常遮断が発生せずに電源オフとなった場合)の前ログと後ログを示す図であり、図18(b)〜(g)は、瞬断が発生した場合の前ログと後ログを示す図である。
【0085】
図18(a)では、スナップショット210を保存することなくメモリシステム10の電源をオフにした場合に、NANDメモリ12に保存されている前ログおよび後ログを示している。図18(a)の場合、下位ページ(1〜4ページ)にのみデータを書込んでいるので、下位ページの書込中に瞬断が発生しても、下位ページデータ破壊は発生しない。図18(a)に示すように、本実施の形態では前ログと後ログと、をそれぞれ異なるブロックの同一ページに保存しているので、通常時に電源がオフにされると、前ログの最後のページと後ログの最後のページとは、同じページ位置となる。したがって、この場合は前ログを用いて管理情報が復元されることとなる。なお、図18(a)に示す通常時の場合は、前ログの代わりに後ログを用いて管理情報を復元させてもよい。
【0086】
図18(b)は、前ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(b)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(b)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログz1(保存途中のログ)が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0087】
図18(c)は、後ログとして「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図18(c)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(c)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログz1が保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する前ログが既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0088】
図18(d)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。図18(d)に示すように、前ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(前ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図18(d)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログz1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0089】
図19(e)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図19(e)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なった後、最初のデータ書き込みに対応する後ログとして「ログ書き込み(1)」を行なっている間に瞬断が発生している。図19(e)に示すように、後ログの上位ページ(6ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図19(e)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログx1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(2)」に対応するログx1と「ログ書き込み(1)」に対応するログz1が保存される。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0090】
図19(f)は、前ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図19(f)に示すように、前ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図19(e)の場合、前ログの保存中に瞬断が発生しているので、前ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1(前段ページ)とログz1(後段ページ)とが保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0091】
図19(g)は、後ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、瞬断が発生した場合を示している。図19(g)に示すように、後ログの上位ページ(6ページと7ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの1ページと2ページ)で下位ページデータ破壊が発生する。すなわち、図19(g)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログx1とログz1とが保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが2ページに渡って既に保存されている。このため、前ログの最後のページと、後ログの最後のページとは、同じページとなり、前ログを用いて管理情報が復元されることとなる。
【0092】
図20(h)は、前ログとして2ブロックに跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なっている間に、瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目は最初のページ(下位ページ)であるので前ログ側のブロックにはログy1が発生しない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」に対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0093】
図20(i)は、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、「ログ書き込み(1)」の再書込み処理として「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。この場合、前ログの保存中に瞬断が発生しているが、2ブロック目の第2ページが下位ページであるので前ログ側のブロックにはログy1が発生していない。この場合において、前ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」の前段ページに対応するログx1が保存され、2ブロック目の最初のページに「ログ書き込み(1)」に対応する後段ページのログx1が保存される。さらに、前ログ側の2ブロック目の第2ページに「ログ書き込み(2)」に対応するログz1が保存される。一方、後ログ側のブロックには、「ログ書き込み(1)」に対応する後ログや「ログ書き込み(2)」に対応する後ログが保存されることはない。このため、前ログの最後のページと、後ログの最後のページとは、異なるページとなり、後ログを用いて管理情報が復元されることとなる。
【0094】
なお、本実施の形態では、NANDメモリ12が多値メモリである場合について説明したが、NANDメモリ12は2値モードのメモリであってもよい。この場合、瞬断によって前ログや後ログが破壊されることはないので、後ログ220Bとして保存する情報は、前ログ220Aとして保存する情報と同じ情報としておく必要はない。したがって、NANDメモリ12が2値モードのメモリである場合、後ログ220Bは、データを実際に更新した後にデータが更新されたことを承認するための情報(更新承認情報)であってもよい。
【0095】
NANDメモリ12が2値モードのメモリであって、後ログ220Bが更新承認情報である場合も、管理情報復元部155は管理情報を復元する際に、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと同じであるか否かを判断する。そして、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと同じである場合に、前ログを用いて管理情報を復元させる。また、管理情報復元部155は、前ログ220Aが格納されている最後のページが、後ログ220Bが格納されている最後のページと異なる場合、後ログと重複している前ログ(後ログが保存されているページと同じページの前ログ)を用いて管理情報を復元させる。例えば、後ログが第1ページから第10ページまで保存されている場合、管理情報復元部155は、第1ページから第10ページまでの前ログを用いて管理情報を復元させる。
【0096】
また、NANDメモリ12が2値モードのメモリの場合に、後ログ220Bとして保存する情報を、前ログ220Aと同じ情報としてもよい。この場合、管理情報復元部155は、NANDメモリ12が多値メモリである場合と同様の処理によって管理情報を復元させる。なお、この場合において、管理情報復元部155は、前ログ220Aの格納されている最後のページが、後ログ220Bの格納されている最後のページと異なる場合、後ログと重複している前ログを用いて管理情報を復元させてもよい。
【0097】
つぎに、固定領域管理部156による固定領域のブロックの書換処理について説明する。ここでは、図11に示される四重化された管理プログラム1272の更新(バージョンアップ)処理を例に挙げて説明する。図21は、管理プログラムの更新処理の手順の一例を示すフローチャートであり、図22は、管理プログラムの更新処理の状態を模式的に示す図である。
【0098】
まず、固定領域管理部156は、最新のバージョンの管理プログラムを、たとえばネットワークを介したダウンロードなどによって取得し、メモリシステム10内のDRAM11や図示しないSRAMなどのメモリに格納する(ステップS51)。ついで、メモリに格納された最新の管理プログラムを管理プログラム保存領域127中に順に書込む処理を行う。なお、この場合、図22(a)に示されるように、各管理プログラム格納用ブロック1271A〜1271Dの消去回数識別子は、消去回数を示しており、「s」(自然数)であるとする。また、図22(a)は更新前の状態を示しており、各管理プログラム格納用ブロック1271A〜1271Dに格納されている管理プログラム1272は、更新される前の状態であるので図中では、「管理プログラム(更新前)」と表記している。
【0099】
最初に、管理プログラム保存領域127内の1つの管理プログラム格納用ブロック1271を選択する(ステップS52)。ここでは、第1の管理プログラム格納用ブロック1271Aを選択したものとする。ついで、選択した第1の管理プログラム格納用ブロック1271内の消去回数識別子1273を取得し、メモリの所定領域に記憶した後(ステップS53)、第1の管理プログラム格納用ブロック1271Aを消去し(ステップS54)、メモリ中に格納されている最新の管理プログラムを第1の管理プログラム格納用ブロック1271Aに書込む(ステップS55)。また、ステップS53で記憶した消去回数識別子を「s」から「s+1」にして、第1の管理プログラム格納用ブロック1271Aの所定のページ(たとえば、最終ページ)に書込む(ステップS56)。この状態が、図22(b)に示されている。ここでは、第1の管理プログラム格納用ブロック1271Aのみ「管理プログラム(更新後)」で消去回数識別子が「s+1」となっており、第2〜第4の管理プログラム格納用ブロック1271B〜1271Dでは「管理プログラム(更新前)」で消去回数識別子が「s」となっている。
【0100】
その後、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について管理プログラムの更新が行われたか否かを判定する(ステップS57)。ここでは、更新が行われていない第2〜第4の管理プログラム格納用ブロック1271B〜1271Dが存在するので(ステップS57でNoの場合)、ステップS52へと戻り、つぎに更新を行う管理プログラム格納用ブロック1271を選択し、上述した処理が繰り返し行われる。また、この管理プログラムの更新処理を管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について実行するまで行われる。図22(c)は、すべての第1〜第4の管理プログラム格納用ブロック1271A〜1271Dについて管理プログラムの更新処理が行われた状態を示している。ここでは、第1〜第4の管理プログラム格納用ブロック1271A〜1271Dで「管理プログラム(更新後)」となっており、消去回数識別子も「s+1」となっている。
【0101】
また、ステップS57で、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271について管理プログラムの更新が行われた場合(ステップS57でYesの場合)には、管理プログラム1272の更新処理が終了する。
【0102】
管理プログラム1272の更新処理が正常に終了した場合には、図22(c)に示されるように、管理プログラム保存領域127内のすべての管理プログラム格納用ブロック1271の消去回数識別子が一致した状態となる。しかし、上記した図21に示される処理の途中で、異常な電源断(瞬断)が発生する場合がある。たとえば、第1の管理プログラム格納用ブロック1271Aへの更新処理は正常に終了したが、つぎの第2の管理プログラム格納用ブロック1271Bへの更新処理の途中で瞬断が発生した場合には、図22(b)の状態でメモリシステム10が終了し、つぎにメモリシステム10の電源をオンにした場合には、図22(b)の状態で開始する。
【0103】
つまり、管理プログラム1272の更新処理中に瞬断が発生した場合には、管理プログラム保存領域127内の管理プログラム格納用ブロック1271A〜1271D間で消去回数識別子1273に違いが生じることになる。これを利用して、この実施の形態では、電源オン後に、管理プログラム保存領域127内の管理プログラム格納用ブロック1271A〜1271Dの消去回数識別子1273を比較することで、瞬断発生の有無を判断することが可能となる。
【0104】
そこで、図12のブートローダ144は、電源オン時に、管理プログラムを図示しないSRAMに転送して、この管理プログラムを起動する機能のほかに、電源オン時に、NANDメモリ12の管理プログラム保存領域127中の管理プログラム格納用ブロック1271の消去回数識別子1273を用いて瞬断が発生したか否かを判定する機能を有するものとする。
【0105】
図23は、ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
【0106】
まず、ホスト装置の電源がオンされ(ステップS71)、メモリシステム10に対して起動指示が出されると、ブートローダ144は、NANDメモリ12内の管理プログラム保存領域127から管理プログラム1272を図示しないSRAMなどのメモリに転送する(ステップS72)。ついで、ブートローダ144は、管理プログラム保存領域127中のすべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致するか否かを判定する(ステップS73)。
【0107】
すべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致しなかった場合(ステップS73でNoの場合)には、ブートローダ144は瞬断が発生したと判定する(ステップS74)。ついで、ブートローダ144はメモリに格納した管理プログラムを起動する(ステップS75)。この管理プログラムの起動によって図13に示される機能ブロックが動作可能な状態となる。このとき、ブートローダ144は、ステップS74で瞬断が発生したという判定を、起動した管理プログラムに伝え、データ管理部141の管理情報復元部155は瞬断発生時の管理情報復元処理を実行する(ステップS76)。つまり、図16に示した管理情報復元処理のフローチャートにおいて、ステップS33の処理の後に、ステップS34での管理情報復元部155による瞬断判定を行わずに、ステップS36の処理に移る。
【0108】
その後、データ管理部141の固定領域管理部156は、更新途中だった管理プログラム保存領域127の管理プログラム1272の更新処理を続行する(ステップS77)。この管理プログラム1272の更新処理は、各管理プログラム格納用ブロック1271の消去回数識別子1273が更新前の値であるものに対して行う。たとえば図22(b)の状態でメモリシステム10が再起動した場合には、固定領域管理部156は、第1の管理プログラム格納用ブロック1271A以外のブロックについて管理プログラム1272の更新処理を行う。以上によって、起動処理が終了する。
【0109】
一方、ステップS73ですべての管理プログラム格納用ブロック1271の消去回数識別子1273が一致する場合(ステップS73でYesの場合)には、この情報からだけでは瞬断が発生したか否か判断できず、ブートローダ144はメモリに格納した管理プログラムを起動する(ステップS78)。ついで、管理プログラムの起動によって図13に示される機能ブロックが動作可能な状態となり、データ管理部141の管理情報復元部155は、通常の管理情報復元処理を実行する(ステップS79)。つまり、図16に示した管理情報復元処理のフローチャートをステップS32から順に実行する。以上によって、起動処理が終了する。
【0110】
なお、上述した説明では、固定領域128中の管理プログラム保存領域127での管理プログラム1272の更新処理時における瞬断判定の場合を例に挙げて説明したが、固定領域128のブロックに多重化して格納される情報であれば、上述した処理にどの情報を用いてもよい。たとえば、管理情報保存領域126に保存される管理情報保存情報のうち、固定領域128に保存される第1のルートポインタ240を多重化し、特定ページ(たとえば、最終ページ)に消去回数に対してユニークに割り振られる消去回数識別子を記憶した第1のルートポインタ格納用ブロックを瞬断判定に用いてもよい。この場合、第1のルートポインタ格納用ブロックは、特許請求の範囲における固定情報格納領域に対応している。また、これらの管理プログラム格納用ブロック1271や第1のルートポインタ格納用ブロックを瞬断判定に用いてもよい。
【0111】
以上のように、本実施の形態によれば、固定領域128中に多重化して保存されるブロックの特定のページに、そのブロックの消去回数に対してユニークに付される消去回数識別子を格納し、多重化される情報を格納するブロック間で消去回数識別子が同一となるように設定したので、メモリシステム10の起動時にこれらのブロックの消去回数識別子を確認し、消去回数識別子が異なっている場合には、瞬断が発生したものと判定することができる。その結果、瞬断が発生した場合には、2つのログを用いた瞬断発生の判定処理を行わずに、速やかに瞬断時の起動処理を行うことができるという効果を有する。
【0112】
なお、上述した説明では、DRAM11でのデータ管理単位をページサイズ単位とし、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去単位と管理単位をブロックサイズ単位としたが、これに限定される趣旨ではなく、それぞれ任意の単位を用いることが可能である。また、上述した説明では、NANDメモリ12を構成するメモリセルトランジスタMTが2ビット以上の多値メモリである場合を例に挙げたが、2値を記憶するメモリセルトランジスタMTに対しても適用することができる。また、電荷蓄積層は浮遊ゲート型に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor)構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
【図面の簡単な説明】
【0113】
【図1】本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。
【図2】NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。
【図3】DRAMとNANDメモリの機能構成を模式的に示す図である。
【図4】メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。
【図5】キャッシュ管理情報の一例を示す図である。
【図6】論理NAND管理情報の一例を示す図である。
【図7】NAND内論物変換情報の一例を示す図である。
【図8】管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。
【図9】ログの一例を示す図である。
【図10】第2のルートポインタの一例を示す図である。
【図11】管理プログラム保存領域に保存される管理プログラムの状態の一例を示す図である。
【図12】ドライブ制御部の機能構成の一例を示すブロック図である。
【図13】データ管理部の機能構成の一例を示すブロック図である。
【図14】メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。
【図15】メモリシステムの管理情報の復元処理手順の一例を示すフローチャートである。
【図16】メモリシステムの管理情報の復元処理を説明するための図である。
【図17】メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。
【図18】管理情報の復元に用いるログの選択方法を説明するための図である(その1)。
【図19】管理情報の復元に用いるログの選択方法を説明するための図である(その2)。
【図20】管理情報の復元に用いるログの選択方法を説明するための図である(その3)。
【図21】管理プログラムの更新処理の手順の一例を示すフローチャートである。
【図22】管理プログラムの更新処理の状態を模式的に示す図である。
【図23】ブートローダによる瞬断発生判定処理を含む起動処理手順の一例を示すフローチャートである。
【符号の説明】
【0114】
10…メモリシステム、11…DRAM、12…NANDメモリ、13…電源回路、14…ドライブ制御部、15…バス、31…DRAM管理層、32…論理NAND管理層、33…物理NAND管理層、41…キャッシュ管理情報、42…管理情報、42b…論理ブロック管理情報、42a…論理ページ管理情報、43…NAND内論物変換情報、111…一時記憶領域、112…作業領域、125…データ格納領域、126…管理情報保存領域、127…管理プログラム保存領域、128…固定領域、129…可変領域、141…データ管理部、151…データ転送処理部、152…管理情報管理部、153…管理情報書込機能、154…管理情報保存機能、155…管理情報復元部、156…固定領域管理部、210…スナップショット、220…ログ、220B…後ログ、220B…後ログ、230,230A,230B…第2のルートポインタ、240,240A〜240C…第1のルートポインタ、1271,1271A〜1271D…管理プログラム格納用ブロック、1272…管理プログラム、1273…消去回数識別子。
【特許請求の範囲】
【請求項1】
揮発性の第1の記憶部と、
不揮発性の第2の記憶部と、
前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行うコントローラと、
を備え、
前記第2の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、
前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステム。
【請求項2】
起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、
前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、
メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法。
【請求項1】
揮発性の第1の記憶部と、
不揮発性の第2の記憶部と、
前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行うコントローラと、
を備え、
前記第2の記憶部は、起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有し、
前記コントローラは、前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理を行い、起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とするメモリシステム。
【請求項2】
起動時に必要な固定情報と該固定情報の消去回数を示す消去回数識別情報が格納される固定情報格納領域が複数に多重化された固定領域を有する不揮発性の記憶部を備えたメモリシステムでの瞬断判定方法であって、
前記固定情報の更新時に、前記固定情報格納領域それぞれに対して、前記消去回数識別情報の退避処理、前記固定情報格納領域の消去処理、新たな固定情報の書込み処理、前記退避した消去回数識別情報の更新および前記新たな固定情報が書込まれた前記固定情報格納領域への保存処理が行われ、
メモリシステムの起動時に、前記多重化された複数の固定情報格納領域間の消去回数識別情報が一致しない場合には、前記固定情報の更新時に瞬断が発生したと判定することを特徴とする瞬断判定方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2009−211218(P2009−211218A)
【公開日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願番号】特願2008−51463(P2008−51463)
【出願日】平成20年3月1日(2008.3.1)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願日】平成20年3月1日(2008.3.1)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]