説明

メモリシステム

【課題】データ書き込み中にプログラムエラーが発生した場合でも確実に管理情報の復元が可能なメモリシステムを提供すること。
【解決手段】前ログの「ログ書き込み(1)」後、データ書き込みを行なっている時にプログラムエラーが発生した場合に(データ書き込みエラー)、データ再書き込み処理に対応する前ログを取得することなく、再度、データ書き込みを行なう。そして、データ書き込みを終えた後に、後ログを取ることなく、替わりにスナップショットを取得して処理を終了する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性半導体記憶装置を用いて構成されるメモリシステムに関する。
【背景技術】
【0002】
ハードディスク装置を2次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる(たとえば、特許文献1参照)。そして、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。このようなログとしては、データの更新前にデータがどのように更新されるかの更新計画として生成しておくログ(以下、更新前ログという)と、データを実際に更新した後にデータが更新されたことを承認するためのログ(以下、更新後ログという)と、がある。
【0003】
ところで、近年では、不揮発性半導体記憶装置であるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを有するメモリシステムを2次記憶装置とするパーソナルコンピュータが製品化されている。しかし、このようなNAND型フラッシュメモリを2次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップに対して、ハードディスク装置を2次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップの場合と同様に上記特許文献1の技術を適用することはできない。それは、NAND型フラッシュメモリの大容量化には、1つのメモリセルに2ビット以上の複数のデータ(多値データ)を記憶することが可能な多値メモリ技術が使用されているからである。
【0004】
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、1つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
【0005】
たとえば、4値を記憶することができる多値メモリでは、1つのメモリセルに第1(下位)ページと第2(上位)ページを設け、それぞれのページに1ビットのデータを書き込むことによって、2ビット(4値)を記憶することが可能となっている。このような多値メモリのデータ書込方法は、第1のメモリセルの第1ページにデータを書き込んだ後、隣接メモリセル(第2のメモリセル)の第1ページにデータを書き込む。そして、この隣接メモリセルへの書き込み後に、第1のメモリセルの第2ページにデータを書き込んでいる。(たとえば、特許文献2参照)
【0006】
しかし、このような多値メモリでは、先に書き込んだメモリセルの閾値電圧が、このメモリセルと隣接し、後に書き込まれるメモリセルの閾値電圧によって変動してしまう。このため、多値メモリでは、あるメモリセルの第2ページの書き込み中に、たとえば電源の異常遮断などによって書き込みが中断されると、先に書き込んだ第1ページのデータも破壊される下位ページデータ破壊が生じてしまうという問題がある。
【0007】
このため、NAND型フラッシュメモリを採用したメモリシステムに、ログを保存してバックアップを取るという上記従来の技術を適用した場合には、ログの書き込み中に電源の異常遮断が発生すると、書き込み中のログや既に保存されているログが破壊されてしまうという問題がある。
【0008】
データの書き込みを行なっている途中でプログラムエラーが発生した場合には、データの再書き込みを行なうこととなるが、このような場合のログの取り方、特に、ログの書き込み中にさらに電源の異常遮断が発生した場合の復帰時の処理まで含めたログの取り方については従来考慮されていなかった。
【0009】
【特許文献1】米国特許出願公開第2006/0224636号明細書
【特許文献2】特開2004−192789号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明は、上記に鑑みてなされたものであって、データ書き込み中にプログラムエラーが発生した場合でも確実に管理情報の復元が可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本願発明の一態様によれば、揮発性の第1の記憶部と、多値データを記憶可能なメモリセルからなる不揮発性の第2の記憶部と、前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行なうとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行なうコントローラと、を備え、前記コントローラは、所定の条件が成立したときに前記第1の記憶部に記憶された管理情報をスナップショットとして前記第2の記憶部に保存するとともに、前記管理情報の更新差分情報であり、前記管理情報に変更が生じる前に保存される更新前ログと、前記管理情報の更新差分情報であり、前記管理情報に変更が生じた後に保存される更新後ログとを前記第2の記憶部に保存する管理情報保存部と、起動時に、前記更新前ログまたは前記更新後ログが存在する場合には前記スナップショットと前記更新前ログまたは前記更新後ログとに基づいて前記第1の記憶部にて管理情報の復元を行い、前記更新前ログおよび前記更新後ログが存在しない場合には前記スナップショットに基づいて前記第1の記憶部にて管理情報の復元を行なう管理情報復元部と、を有し、前記管理情報保存部は、前記更新前ログの保存後、更新処理としての前記第2の記憶部へのデータの書き込みがなされている途中でプログラムエラーが発生した場合には、前記データ書き込みを再度行なった後、新たなログの書き込みを行うことなく前記スナップショットを保存することを特徴とする。
【0012】
本願発明の別の一態様によれば、揮発性の第1の記憶部と、多値データを記憶可能なメモリセルからなる不揮発性の第2の記憶部と、前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行なうとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行なうコントローラと、を備え、前記コントローラは、所定の条件が成立したときに前記第1の記憶部に記憶された管理情報をスナップショットとして前記第2の記憶部に保存するとともに、前記管理情報の更新差分情報であり、前記管理情報に変更が生じる前に保存される更新前ログと、前記管理情報の更新差分情報であり、前記管理情報に変更が生じた後に保存される更新後ログとを前記第2の記憶部に保存する管理情報保存部と、起動時に、前記更新前ログまたは前記更新後ログが存在する場合には前記スナップショットと前記更新前ログまたは前記更新後ログとに基づいて前記第1の記憶部にて管理情報の復元を行い、前記更新前ログおよび前記更新後ログが存在しない場合には前記スナップショットに基づいて前記第1の記憶部にて管理情報の復元を行なう管理情報復元部と、を有し、前記管理情報保存部は、前記更新前ログの保存後、更新処理としての前記第2の記憶部へのデータの書き込みがなされている途中でプログラムエラーが発生した場合には、前記データの再書き込み処理に対応する更新前ログを再度保存するとともに、前記再書き込み処理の完了後には、前記再書き込み処理に対応する更新後ログを保存した後、前記プログラムエラーが発生する前に保存された前記更新前ログに対応する更新後ログを保存することを特徴とする。
【発明の効果】
【0013】
この発明によれば、データ書き込み中にプログラムエラーが発生した場合でも確実に管理情報を復元することができる、という効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に、本発明に係るメモリシステムおよび管理情報の保存方法の実施の形態を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【0015】
(実施の形態)
このメモリシステムは、不揮発性半導体記憶装置を含み、たとえば、パーソナルコンピュータなどのホスト装置の2次記憶装置(SSD:Solid State Drive)として使用され、ホスト装置から書込要求を出されたデータを記憶し、またホスト装置から読出要求のあったデータを読み出してホスト装置に出力する機能を有する。図1は、本発明の第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で管理される管理情報をバックアップ用に記憶したりする。この図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は、半導体基板上に形成された積層ゲート構造を有するMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタMT0〜MTnは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じて2ビット以上のデータを記憶することができる多値メモリである。なお、以下に示す実施の形態では、メモリセルトランジスタMTはこの多値メモリである場合を例に挙げて説明する。
【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と、を有する。この例では、NANDメモリ12でのデータの書込/読出単位をページサイズ単位とし、消去の単位をブロックサイズ単位とするものとする。そのため、ブロックサイズ単位で管理される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には、ある時点における不揮発性テーブルの内容であるスナップショット210と、次にスナップショットを取るまでの不揮発性テーブルの内容の更新差分情報であるとともに更新前に取得された更新前ログ(以下、前ログという)220Aと、この前ログ220Aと同一の内容のログ情報であるとともに更新後に保存された更新後ログ(以下、後ログという)220Bと、スナップショット210の位置(ブロック)、このスナップショット210に対して取得された前ログ220Aの位置(ブロック)、およびこのスナップショット210に対して取得された後ログ220Bの位置(ブロック)を示すセカンドポインタ230と、セカンドポインタ230が格納される位置(ブロック)を示すルートポインタ240と、を含む管理情報保存情報が格納される。ここで、スナップショット210とは、DRAM11の一時記憶領域111に記憶される管理情報のうち、少なくとも不揮発性テーブルを含む管理情報を所定の時点で保存した情報のことをいう。
【0040】
この図8において、スナップショット210、前ログ220A、後ログ220B、セカンドポインタ230、およびルートポインタ240は、それぞれ異なるブロックに格納される。また、これらのブロックの大きさは、消去単位である物理ブロックと同じ大きさとする。スナップショット210は、スナップショット格納用ブロックに格納される。スナップショット210には、NANDメモリ12の管理情報保存領域126内の不揮発性テーブルである論理NAND管理情報42とNAND内論物変換情報43とが含まれる。新しいスナップショット210が保存されると、以前に保存されていたスナップショット210とは別のブロックに保存される。
【0041】
前ログ220Aおよび後ログ220Bは、データ書き込み処理等に伴い不揮発性テーブルの内容に変更があった場合の内容更新後の不揮発性テーブルとスナップショット210(またはスナップショット210と既に取られたログ)との差分情報である。具体的には、スナップショット210が取られた後の最初の前ログ220Aまたは最初の後ログ220Bは、不揮発性テーブルとスナップショット210との差分情報である。また、スナップショット210が取られた後の2番目以降の前ログ220Aは、既に取られた前ログ220Aとスナップショット210とを合わせたものと、不揮発性テーブルとの差分情報である。また、スナップショット210が取られた後の2番目以降の後ログ220Bは、既に取られた後ログ220Bとスナップショット210とを合わせたものと、不揮発性テーブルとの差分情報である。
【0042】
前ログ220Aは、管理情報が実際に更新される前に生成しておく情報である。このため、データの書き込み処理などが行なわれることによって管理情報が実際に更新される前に、管理情報がどのように更新されるかの更新計画に基づいて、前ログ220Aは生成される。また、後ログ220Bは、管理情報が実際に更新された後に生成される情報である。このため、データの書き込み処理などが行なわれることによって管理情報が実際に更新された後に、実際の管理情報などを用いて後ログ220Bは生成される。
【0043】
前ログ220Aおよび後ログ220Bは、それぞれログ格納用ブロックに格納される。前ログ220Aおよび後ログ220Bは、スナップショットの世代が変わっても、同じログ格納用ブロックに追記される。
【0044】
図9は、ログの一例を示す図である。なお、前ログ220Aと後ログ220Bは、同一の情報を有しているので、ここでは前ログ220Aをログの一例として説明する。ログ220Aは、変更対象の管理情報となる対象情報と、その対象情報中の変更対象となるエントリである対象エントリと、その対象エントリ中の変更対象となる項目である対象項目と、その対象項目の変更の内容である変更内容と、を含む。前ログ220Aおよび後ログ220Bはスナップショット210に対する更新差分情報であるため、新たなスナップショット210の保存に伴い刷新される。
【0045】
セカンドポインタ230は、セカンドポインタ格納用ブロックに格納される。セカンドポインタ230は、スナップショット210、前ログ220A、後ログ220Bの格納位置を示すブロックの先頭アドレスを示すものであればよい。また、セカンドポインタ230は、スナップショット210が新たに保存された場合や、スナップショット格納用ブロックとログ格納用ブロックが変更された場合に更新される。なお、前ログ220Aと後ログ220Bのポインタは、セカンドポインタ格納用ブロック内ではなく、スナップショット210の中に格納されていてもよい。
【0046】
セカンドポインタ230は、スナップショット格納用ブロックへアクセスするためのスナップショットアクセス情報と、前ログ220Aおよび後ログ220Bの各ログ格納用ブロックへアクセスするためのログアクセス情報と、次のセカンドポインタが格納されるページ位置を示すネクストポインタと、を含む。このネクストポインタによって、セカンドポインタ230はリンクドリスト方式の情報となり、ルートポインタ240で指示されたセカンドポインタ格納用ブロックの先頭ページからネクストポインタをたどることによって、最新のセカンドポインタ230へとたどり着くことが可能となる。なお、リンクドリスト方式ではなく、セカンドポインタ格納用ブロックの先頭ページからセカンドポインタ230を順に追記的に格納してもよい。
【0047】
ルートポインタ240は、ルートポインタ格納用ブロックに格納される。ルートポインタ240は、セカンドポインタ230が格納されているセカンドポインタ格納用ブロックへアクセスするための情報であり、メモリシステム10の起動時に、管理情報を復元するための処理の際に最初に読み込まれる情報である。このルートポインタ240は、セカンドポインタ格納用ブロックが変更された場合に変更される。ルートポインタ240は、ルートポインタ格納用ブロックに、例えば、ブロックの先頭ページから順に追記的に格納される。このような場合には、ルートポインタ格納用ブロック内の未書込ページの1つの前のページが最新情報を有することになるので、未書込ページの最上位のページを検索することで、最新のルートポインタ240を検索することができる。また、セカンドポインタ230の場合のように、リンクドリスト方式を用いることもできる。
【0048】
ここで、ルートポインタ240はNANDメモリ12内の固定領域1261に格納され、スナップショット210、前ログ220A、後ログ220Bおよびセカンドポインタ230はNANDメモリ12内の可変領域1262に格納される。固定領域1261とは、NANDメモリ内において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が固定化している保護領域であり、書換えや書き込みがほとんど発生しない更新頻度の低い、メモリシステム10を稼動させるのに必要な情報が格納される領域である。
【0049】
一方の可変領域1262とは、固定領域1261を除くNANDメモリ12の領域において、論理NAND管理層32で管理される論理ブロックと、物理NAND管理層33で管理される物理ブロックとの関係が可変な領域であり、ウェアレベリングの対象となる領域である。
【0050】
つぎに、ドライブ制御部14の機能について説明する。図10は、ドライブ制御部14の機能構成の一例を示すブロック図である。ドライブ制御部14は、DRAM11−NANDメモリ12間のデータ転送やNANDメモリ12に関する各種機能の制御を行なうデータ管理部141と、ATAインタフェースから受けた指示に基づいてデータ管理部141と協働してデータ転送処理を行なうATAコマンド処理部142と、データ管理部141およびATAコマンド処理部142と協動して各種のセキュリティ情報を管理するセキュリティ管理部143と、電源オン時に、各管理プログラム(FW)をNANDメモリ12から図示しないメモリ(たとえば、SRAM(Static RAM))にロードするブートローダ144と、ドライブ制御部14内の各コントローラや回路の初期化を行なう初期化管理部145と、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理するデバッグサポート部146と、を備える。
【0051】
図11は、本実施の形態に係るデータ管理部の機能構成の一例を示すブロック図である。データ管理部141は、DRAM11とNANDメモリ12との間でデータ転送を行なうデータ転送処理部151と、DRAM11およびNANDメモリ12に記憶されるデータの変更に伴って管理情報の変更や保存を行なう管理情報管理部152と、電源オン時などに保存された管理情報に基づいて最新の管理情報を復元する管理情報復元部155と、をさらに備える。
【0052】
また、管理情報管理部152は、管理情報書込部153と、管理情報保存部154と、をさらに備える。管理情報書込部153は、データ転送処理部151によるDRAM11またはNANDメモリ12で記憶されるデータの変更処理によって管理情報の更新が必要な場合に、DRAM11に記憶されている管理情報の更新を行なう。
【0053】
管理情報保存部154は、メモリシステム10が所定の条件を満たしたとき、管理情報をスナップショット210として、管理情報中の更新される分の情報を前ログ220Aとして、管理情報中の更新された分の情報を後ログ220Bとして、NANDメモリ12の管理情報保存領域126に保存する。また、このスナップショット210、前ログ220Aまたは後ログ220Bの保存に伴ってセカンドポインタ230の書き込まれる位置が変更される場合には、このセカンドポインタ230に対する更新処理も行なう。
【0054】
管理情報保存部154によるスナップショット210は、NANDメモリ12の管理情報保存領域126中のログ220(前ログ220Aと後ログ220B)を記憶するために設けられたログ記憶領域が埋まってしまった(領域がデータで満杯になった)場合など、本メモリシステムの所定の条件に応じて実行される。
【0055】
また、管理情報管理部152によるログ220(前ログ220Aと後ログ220B)の保存は、DRAM11に記憶されている管理情報(不揮発性テーブル)の更新を伴うNANDメモリ12上のデータ更新時(NANDメモリ12へのデータ書込みが必要な場合)に行われる。
【0056】
管理情報復元部155は、メモリシステム10に電源がオンされると、NANDメモリ12の管理情報保存領域126に保存されている管理情報保存情報に基づいた管理情報の復元処理を行なう。具体的には、固定領域1261の中のルートポインタ240、可変領域1262の中のセカンドポインタ230、スナップショット210、前ログ220A、後ログ220Bへと順にたどっていき、最新のスナップショット210に対する前ログ220Aや後ログ220Bが存在するか否かを判定する。前ログ220Aや後ログ220Bが存在しない場合には、スナップショット格納用ブロックのスナップショット210を管理情報としてDRAM11に復元する。また、前ログ220Aや後ログ220Bが存在する場合には、プログラムエラーや瞬断(電源の異常遮断)などの異常終了であった場合であるので、スナップショット格納用ブロックからスナップショット210を取得し、ログ格納用ブロックから前ログ220Aまたは後ログ220Bを取得して、DRAM11上でスナップショット210に前ログ220Aまたは後ログ220Bを反映させて管理情報(不揮発性テーブル)の復元を行なう。
【0057】
ここで、管理情報管理部152によるメモリシステム10の管理情報の保存の処理について説明する。図12は、メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。また、図13は、前ログと後ログの保存処理を説明するための図である。なお、ここでは、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているとともに、ホスト装置(メモリシステム10)が起動状態にあり、また、この起動状態の前のメモリシステム10の停止前にスナップショット210が保存されているものとする。
【0058】
まず、ホスト装置(メモリシステム10)の前回終了時に保存されたスナップショット210を基に、ホスト装置(メモリシステム10)が起動された状態にある(ステップS11)。この後、必要に応じてホスト装置からNANDメモリ12へデータの読み書きが行なわれる。管理情報管理部152は、スナップショット保存条件を満たすか否かを判定する(ステップS12)。スナップショット保存条件(ログ記憶領域が埋まってしまった(領域がログデータで満杯)になった)を満たさない場合(ステップS12でNoの場合)には、管理情報の更新を伴う指示(NANDメモリへのデータ書込み指示など)を受けたか否かを判定する(ステップS13)。管理情報の更新を伴う指示を受けなかった場合(ステップS13でNoの場合)には、ステップS12へと戻る。
【0059】
また、管理情報の更新を伴う指示を受けた場合(ステップS13でYesの場合)には、その指示を実行することによって管理情報がどのように更新されるか更新計画を決定し(ステップS14)、その更新計画をNANDメモリ12の管理情報保存領域126のログ格納用ブロックに前ログ220Aとして保存する(ステップS15)。
【0060】
この更新計画(前ログ)は、ログ格納用ブロックに前ログ220Aが格納されていない場合には、管理情報が更新された場合の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、ログ格納用ブロックに前ログ220A(以下、過去の前ログ220Aという)が既に格納されている場合には、管理情報が更新された場合の不揮発性テーブルと、スナップショット210と過去の前ログ220Aとを合わせたものと、の間の差分情報である。具体的には、図13に示すように、X番目のデータの書き込み処理としてデータ書き込み(X)を行なう前に、このデータ書き込み(X)に対応する前ログ(X)がNANDメモリ12内に前ログ220Aとして保存される。このとき、前ログ220Aとして例えば情報y1が保存される。なお、ここでの前ログ220Aは、たとえば、前ログ220A(更新計画)をDRAM11上に記録した後、NANDメモリ12の管理情報保存領域126に保存される。
【0061】
ついで、論理NAND管理層は、ステップS13で受けた指示(たとえばユーザデータのNANDメモリ12のデータ格納領域125への書き込み(X)処理)を実行する(ステップS16)。
【0062】
この後、実行した処理に応じて、DRAM11に記憶されている管理情報が更新される。そして、管理情報保存部154は、管理情報中の更新された分の情報を後ログ220Bとして、NANDメモリ12の管理情報保存領域126に保存する。ここでの後ログ220Bは、ログ格納用ブロックに後ログ220Bが格納されていない場合には、現時点の不揮発性テーブルとスナップショット格納用ブロックに保存されているスナップショット210との間の差分情報であり、ログ格納用ブロックに後ログ220B(以下、過去の後ログ220Bという)が既に格納されている場合には、現時点の不揮発性テーブルと、スナップショット210と過去ログとを合わせたものと、の間の差分情報である。
【0063】
これにより、データ書き込み(X)に対応する後ログ220B(X)がNANDメモリ12内に後ログ220Bとして保存される(ステップS17)。このとき、後ログ220Bとして例えば情報y1が保存される。このように、後ログ220Bとして保存される情報y1は、前ログ220Aとして保存される情報y1と同じ情報である。その後、ステップS12へと戻る。
【0064】
スナップショット保存条件を満たさない場合(ステップ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と同じ情報である。
【0065】
また、ステップS12でスナップショット保存条件を満たす場合(ステップS12でYesの場合)には、DRAM11の一時記憶領域111内の少なくとも不揮発性テーブルを含む管理情報をスナップショット210としてNANDメモリ12の管理情報保存領域126に保存する(ステップS18)。そして、メモリシステム10の終了指示があるか否かを判定し(ステップS19)、終了指示がない場合にはステップS12へと戻り、終了指示がある場合には、そのまま処理が終了する。
【0066】
つぎに、管理情報復元部155によるメモリシステム10の管理情報の復元処理について説明する。図14は、メモリシステムの管理情報の復元処理手順の一例を示すフローチャートであり、図15は、メモリシステムの復元処理を説明するための図である。なお、ここでも、メモリシステム10がホスト装置と接続され、ホスト装置の2次記憶装置として動作しているものとする。
【0067】
まず、瞬断からの回復などによってホスト装置の電源がオンされ、メモリシステム10に対して起動指示が出されると(ステップS31)、管理情報復元部155は、NANDメモリ12の管理情報保存領域126中のルートポインタ240、セカンドポインタ230を順に読込み(ステップS32)、スナップショット210と前後ログ(前ログ220A、後ログ220B)が格納されているそれぞれのブロックのアドレスを取得し(ステップS33)、スナップショット210を取得する(ステップS34)。
【0068】
その後、管理情報復元部155は、NANDメモリ12中の前ログ220Aや後ログ220Bを参照して、瞬断が発生したか否かを判定する(ステップS35)。例えば、前ログ220Aや後ログ220BがNANDメモリ12中に存在する場合は、瞬断が発生したと判断される。また、瞬断が発生したか否かの判断は、例えば前ログ220Aと後ログ220Bを比較することによって行なってもよい。本実施の形態では、前ログ220Aと後ログ220Bとが同じ情報を保存している。このため、例えば、前ログ220Aとして保存されているページの数と後ログ220Bとして保存されているページの数とが一致しない場合には、瞬断が発生したと判断できる。また、ECCエラーの有無や、前ログ220Aとして保存されているページのデータ、後ログ220Bとして保存されているページのデータに基づいて瞬断の有無を判断してもよい。
【0069】
瞬断が発生した場合(ステップS35でYesの場合)、NANDメモリ12内の最新の前ログ220Aと最新の後ログ220Bとに基づいて、瞬断の発生したタイミングを確認する(ステップS36)。
【0070】
さらに、管理情報復元部155は、瞬断の発生したタイミングが後ログ220Bの保存中であったか否かを判断する(ステップS37)。例えば、後ログ220B内の最後のページが書き込み途中である場合、この最後のページを読み出すことはできないので、後ログ220Bの保存中に瞬断が発生したと判断される。また、前ログ220A内の最後のページが書き込み途中である場合、この最後のページを読み出すことはできないので、前ログ220Aの保存中に瞬断が発生したと判断される。また、前ログ220A内の最後のページにはログが書き込まれており、かつ後ログ220B内の最後のページにはログが書き込まれていない場合には、データの書き込み途中で瞬断が発生したと判断される。
【0071】
管理情報復元部155は、瞬断の発生したタイミングが後ログ220Bの保存中であったと判断した場合(ステップS37でYesの場合)に、最新の前ログ220Aを選択する(ステップS38)。一方、管理情報復元部155は、瞬断の発生したタイミングが後ログ220Bの保存中でなかったと判断した場合(ステップS37でNoの場合)に、保存の完了している最新の後ログ220Bを選択する(ステップS39)。換言すると、前ログ220A内の最後のページが書き込み途中であった場合や前ログ220A内の最後のページにはログが書き込まれており、かつ後ログ220B内の最後のページにはログが書き込まれていない場合に、最新の後ログ220Bが選択される。
【0072】
この後、選択したログ(前ログ220Aまたは後ログ220B)をログ格納用ブロックから取得し、DRAM11の作業領域112に展開する(ステップS40)。そして、スナップショット210に対して、古いログから順にログを反映させて管理情報(不揮発性テーブル)を復元し(ステップS41)、管理情報の復元処理が終了する。
【0073】
一方、瞬断が発生していない場合(ステップS35でNoの場合)には、DRAM11の管理情報格納領域111に、管理情報を復元し、管理情報復元処理が終了する。
【0074】
図15は、メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。まず、消去動作を行なうとメモリセルのデータは“0”となる。つぎに、図15(a)に示されるように、下位ページの書き込みを行なうと、メモリセルのデータはデータ“0”とデータ“2”になる。ついで、図15(b)に示されるように、上位ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“2”の閾値電圧の分布が大きくなる。この後、上位ページのデータが書き込まれると、メモリセルのデータは、図15(c)に示されるように、本来の閾値電圧を有するデータ“0”〜“3”となる。本実施の形態では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
【0075】
つぎに、NANDメモリ12への書込み処理について説明する。図15(d)に示されるように、ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。なお、図15(d)では、説明の便宜上、ワード線を4本としている。
【0076】
第1番目の書き込みは、メモリセル1の下位ページに1ビットのデータが書きこまれる。第2番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の下位ページに1ビットのデータが書きこまれる。第3番目の書き込みは、メモリセル1とビット方向に隣接したメモリセル3の下位ページに1ビットのデータが書きこまれる。第4番目の書き込みは、メモリセル1と対角に隣接したメモリセル4の下位ページに1ビットのデータが書きこまれる。
【0077】
第5番目の書き込みは、メモリセル1の上位ページに1ビットのデータが書きこまれる。第6番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の上位ページに1ビットのデータが書きこまれる。第7番目の書き込みは、メモリセル3とビット方向に隣接したメモリセル5の下位ページに1ビットのデータが書きこまれる。第8番目の書き込みは、メモリセル3と対角に隣接したメモリセル6の下位ページに1ビットのデータが書きこまれる。
【0078】
第9番目の書き込みは、メモリセル3の上位ページに1ビットのデータが書きこまれる。第10番目の書き込みは、メモリセル3とワード方向に隣接したメモリセル4の上位ページに1ビットのデータが書きこまれる。第11番目の書き込みは、メモリセル5とビット方向に隣接したメモリセル7の下位ページに1ビットのデータが書きこまれる。第12番目の書き込みは、メモリセル5と対角に隣接したメモリセル8の下位ページに1ビットのデータが書きこまれる。
【0079】
第13番目の書き込みは、メモリセル5の上位ページに1ビットのデータが書きこまれる。第14番目の書き込みは、メモリセル5とワード方向に隣接したメモリセル6の上位ページに1ビットのデータが書きこまれる。第15番目の書き込みは、メモリセル7の上位ページに1ビットのデータが書きこまれる。第16番目の書き込みは、メモリセル7とワード方向に隣接したメモリセル8の上位ページに1ビットのデータが書きこまれる。
【0080】
つぎに、管理情報の復元に用いるログの選択方法の具体例について説明する。図16は、管理情報の復元に用いるログの選択方法を説明するための図である。図16では、前ログや後ログが、それぞれ前ログのログ格納用ブロック(各図の左側のブロック。以下、前ログ用のブロックという)、後ログのログ格納用ブロック(各図の右側のブロック。以下、後ログ用のブロックという)にページ毎に格納された状態を示している。図16での1つの物理ブロック内のページは、図15に対応しているものとする。つまり、1〜4、7〜8、11〜12ページは図15の下位ページであり、5〜6、9〜10、13〜16ページは図15の上位ページである。また、前ログ用のブロックや後ログ用のブロックでは、ブロック内の各行が1ページに対応している。なお、図16では、下位ページと上位ページに説明上分離して表示しているが、これらの下位ページと上位ページとを合わせたものが1つの物理ブロックを構成するものとする。
【0081】
図16では、正常に保存されたログをログx1で示し、瞬断に起因して破壊されたログをログy1で示し、書き込み中のログをログz1で示している。ログz1の書き込み中に瞬断が発生してログy1が破壊されているので、ログz1のページに対応するメモリセルとログy1のページに対応するメモリセルは、同一のメモリセルである。そして、ログy1のページが下位側のページ(下位ページ)であり、ログz1のページが上位側のページ(上位ページ)である。また、各ブロックのログ(ページ)のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
【0082】
図16(a)は、通常時(電源の異常遮断が発生せずに電源オフとなった場合)の前ログと後ログを示す図であり、図16(b)、(c)は、瞬断が発生した場合の前ログと後ログを示す図である。
【0083】
図16(a)では、スナップショット210を保存することなくメモリシステム10の電源をオフにした場合に、NANDメモリ12に保存されている前ログおよび後ログを示している。図16(a)の場合、下位ページ(1〜4ページ)にのみデータを書き込んでいるので、下位ページの書き込み中に瞬断が発生しても、下位ページデータ破壊は発生しない。図16(a)に示すように、本実施の形態では前ログと後ログと、をそれぞれ異なるブロックの同一ページに保存しているので、通常時に電源がオフにされると、前ログの最後のページと後ログの最後のページとは、同じページ位置となる。したがって、この場合は前ログを用いて管理情報が復元されることとなる。なお、図16(a)に示す通常時の場合は、前ログの代わりに後ログを用いて管理情報を復元させてもよい。
【0084】
図16(b)は、前ログとして2ページに渡る「ログ書き込み(1)」を行なった後、後ログとして2ページに渡る「ログ書き込み(1)」を行なっている間に、1ページ目の書き込み中に瞬断が発生した場合を示している。図16(b)に示すように、後ログの上位ページ(5ページ)への書き込み中に瞬断が発生すると、書き込み中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図16(b)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1(例えば2ページ)が発生する。この場合において、後ログ側のブロックには、「ログ書き込み(1)」に対応するログz1が保存される。また、前ログ側のブロックには、「ログ書き込み(1)」に対応する前ログが2ページに渡って既に保存されている。このため、ログが破壊されていない前ログを用いて管理情報が復元されることとなる。
【0085】
図16(c)では、前ログとして「ログ書き込み(1)」を行なった後、前ログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図16(c)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なっている間に瞬断が発生している。図16(c)に示すように、後ログの上位ページ(5ページ)への書込中に瞬断が発生すると、書込中の上位ページに対応する下位ページ(後ログの2ページ)で下位ページデータ破壊が発生する。すなわち、図16(c)の場合、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。この場合において、前ログ側のブロックには、「ログ書き込み(1)」に対応するログx1と、「ログ書き込み(2)」に対応するログx1と、が保存される。一方、後ログ側のブロックには、「ログ書き込み(2)」に対応するログz1が保存される。このため、ログが破壊されていない前ログを用いて管理情報が復元されることとなる。
【0086】
図18は、通常時における前後ログの取り方を示す図であり、図19は、データ書き込みエラーが発生した場合のログの取り方の一例を示す図である。図18は図16(a)の場合に対応し、前ログの「ログ書き込み(1)」後に、データ書き込みがプログラムエラー等なく完了し、続いて後ログの「ログ書き込み(1)」が行われたことを示している。一方、図19は図16(c)の場合に対応し、前ログの「ログ書き込み(1)」後、データ書き込みを行なっている時にプログラムエラーが発生したため(データ書き込みエラー、例えばデータ書込み領域の消去動作が正常に終了せずにデータ書込み領域がバッドブロック化した場合など)、データ再書き込み処理に対応する前ログとして「ログ書き込み(2)」を行ない、データ書き込みを行なっている。さらに、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なっているが、図16(c)では、この時に瞬断が発生している。瞬断が発生しない場合には、図19に示すように、後ログとしての「ログ書き込み(2)」に続いて、前ログの「ログ書き込み(1)」に対応する後ログの「ログ書き込み(1)」を行なって処理が終了する。
【0087】
つぎに、管理情報の復元に用いるログの選択方法の別の具体例について説明する。図17は、管理情報の復元に用いるログの選択方法を説明するための別の図である。図17では、図16と同様に、前ログや後ログが、それぞれ前ログのログ格納用ブロック(各図の左側のブロック。以下、前ログ用のブロックという)、後ログのログ格納用ブロック(各図の右側のブロック。以下、後ログ用のブロックという)にページ毎に格納された状態を示している。図17では、前ログおよび後ログに対してそれぞれ2つのブロックが例示されており、1つのブロック内のページは、図15に対応しているものとする。ここで、ブロック内の各行が1ページに対応している。なお、図17では、簡単のため、下位ページと上位ページの区別を省略し、さらに1つのブロックのページ数を8ページとしているが、ページ書き込みの順序などの書き込み処理の詳細については図15、図16と同様の設定のもとに説明することができる。
【0088】
また、図17では、図16と同様に、正常に保存されたログをログx1で示し、瞬断に起因して破壊されたログをログy1で示し、書き込み中のログをログz1で示している。ログz1の書き込み中に瞬断が発生してログy1が破壊されているので、ログz1のページに対応するメモリセルとログy1のページに対応するメモリセルは、同一のメモリセルである。また、各ブロックのログ(ページ)のうち、円で囲まれたログが、管理情報の復元に用いるログとして選択されるログである。
【0089】
図17(a)は、後ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、1ブロック目へのログ書き込みを行なっている間に、瞬断が発生した場合を示している。この場合において、後ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(1)」に対応するログz1が保存される。また、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。一方、前ログ側のブロックには、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」が既に行なわれている。このため、ログが破壊されていない前ログを用いて管理情報が復元されることとなる。
【0090】
図17(b)は、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図17(b)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行なっている間に瞬断が発生した場合を示している。この場合において、後ログ側のブロックには、1ブロック目の最後のページに「ログ書き込み(2)」に対応するログz1が保存される。また、後ログの保存中に瞬断が発生しているので、後ログ側のブロックにログy1が発生する。このため、ログが破壊されていない前ログを用いて管理情報が復元されることとなる。
【0091】
図17(c)は、前ログとして2ブロック(2ページ)に跨る「ログ書き込み(1)」のうち、2ブロック目へのログ書き込みを行なった後、このログに対応するデータ書き込み時にエラーが発生し、データ書き込みの再書き込み処理に対応する前ログとして「ログ書き込み(2)」が行なわれている。さらに、図17(c)では、データ書き込みの再書き込み処理に対応する後ログとして「ログ書き込み(2)」を行ない、後ログとして2ページに渡る「ログ書き込み(1)」のうち、1ページ目へのログ書き込みを行なっている間に瞬断が発生した場合を示している。この場合において、後ログ側のブロックには、2ブロック目の先頭のページに「ログ書き込み(1)」に対応するログz1が保存される。このように後ログの保存中に瞬断が発生しているが、2ブロック目の先頭ページの保存中に瞬断が発生しているので、ログy1が発生しない。ログが破壊されていない前ログを用いて管理情報が復元される。
【0092】
図16および図17では、円で囲まれた前ログを管理情報の復元に用いることとした。ただし、図16および図17においてバツを付された前ログも既に保存されたログであるので復元に用いることができる。したがって、円で囲まれた前ログに加えてバツを付された前ログを管理情報の復元に用いることもできる。
【0093】
また、本実施の形態では、図19を用いて説明したように、データの書き込み中にプログラムエラーが発生した場合には、再書き込み処理に対応する前後ログを取り、さらにエラーの発生した書き込み処理に対応する前後ログを取ることで、ログの整合性を確保しつつ瞬断判定処理などを行なっている。これにより、データ書き込み中にプログラムエラーが発生した場合でも確実に管理情報を復元することが可能となる。
【0094】
ところで、図19では、プログラムエラーの発生に応じて、前ログおよび後ログをそれぞれ2重に取得しているため、瞬断判定処理などが複雑となる。そこで、本実施の形態では、さらにプログラムエラーが発生した場合の別の処理方法について図20を参照して説明する。
【0095】
図20は、データ書き込みエラーが発生した場合のログの取り方の別の一例を示す図である。図20に示すように、前ログの「ログ書き込み(1)」後、データ書き込みを行なっている時にプログラムエラーが発生した場合に(データ書き込みエラー)、データ再書き込み処理に対応する前ログを取得することなく、再度、データ書き込みを行なう。そして、データ書き込みを終えた後に、後ログを取ることなく、替わりにスナップショットを取得して処理を終了する。
【0096】
このように、前ログを保存し、データ書き込みを失敗した場合に、再書き込みを行なった後に、後ログは取らないでスナップショットを保存して処理を終了する。
【0097】
本実施の形態によれば、前ログ保存後で後ログの保存前にプログラムエラーが発生した場合、エラー対応による管理情報の更新をログに記憶せずにスナップショットを保存することで、瞬断発生時の復元処理を簡素化でき、ログ管理を単純化することができる。すなわち、前ログとして既に書き込まれた更新予定以外の処理が発生した場合には、スナップショットを取り直すことで、複雑なログ管理を行なう必要がなく、スナップショットを用いて確実に管理情報を復元することが可能となる。
【0098】
なお、電荷蓄積層は浮遊ゲート型に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor)構造のようなシリコン窒化膜を用いた電荷トラップ型やその他の方式であってもよい。
【図面の簡単な説明】
【0099】
【図1】本発明の実施の形態にかかるメモリシステムの構成の一例を示すブロック図である。
【図2】NANDメモリに含まれる1個のブロックの構成の一例を示す回路図である。
【図3】DRAMとNANDメモリの機能構成を模式的に示す図である。
【図4】メモリシステムで記憶されるデータを管理する層構造の一例を示す図である。
【図5】キャッシュ管理情報の一例を示す図である。
【図6】論理NAND管理情報の一例を示す図である。
【図7】NAND内論物変換情報の一例を示す図である。
【図8】管理情報保存領域に記憶される管理情報保存情報の内容の一例を模式的に示す図である。
【図9】ログの一例を示す図である。
【図10】ドライブ制御回路の機能構成の一例を示すブロック図である。
【図11】実施の形態にかかるデータ管理部の機能構成の一例を示すブロック図である。
【図12】メモリシステムの管理情報の保存処理手順の一例を示すフローチャートである。
【図13】前ログと後ログの保存処理を説明するための図である。
【図14】メモリシステムの管理情報の復元処理手順の一例を示すフローチャートである。
【図15】メモリセルのデータとメモリセルの閾値電圧の関係とNANDメモリに対する書き込み順序の一例を示す図である。
【図16】管理情報の復元に用いるログの選択方法を説明するための図である。
【図17】管理情報の復元に用いるログの選択方法を説明するための別の図である。
【図18】通常時における前後ログの取り方を示す図である。
【図19】データ書き込みエラーが発生した場合のログの取り方の一例を示す図である。
【図20】データ書き込みエラーが発生した場合のログの取り方の別の一例を示す図である。
【符号の説明】
【0100】
10…メモリシステム、11…DRAM、12…NANDメモリ、13…電源回路、14…ドライブ制御部、15…バス、31…DRAM管理層、32…論理NAND管理層、33…物理NAND管理層、41…キャッシュ管理情報、42…管理情報、42a…論理ページ管理情報、42b…論理ブロック管理情報、43…NAND内論物変換情報、45,46,50,51,60,61…ログ格納用ブロック、111…一時記憶領域、112…作業領域、125…データ格納領域、126…管理情報保存領域、141…データ管理部、151…データ転送処理部、152…管理情報管理部、153…管理情報書込部、154…管理情報保存部、155…管理情報復元部、156…ログ格納ブロック開放部、210…スナップショット、220…ログ、220A…前ログ、220B…後ログ、230…セカンドポインタ、240…ルートポインタ

【特許請求の範囲】
【請求項1】
揮発性の第1の記憶部と、
多値データを記憶可能なメモリセルからなる不揮発性の第2の記憶部と、
前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行なうとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行なうコントローラと、
を備え、
前記コントローラは、
所定の条件が成立したときに前記第1の記憶部に記憶された管理情報をスナップショットとして前記第2の記憶部に保存するとともに、前記管理情報の更新差分情報であり、前記管理情報に変更が生じる前に保存される更新前ログと、前記管理情報の更新差分情報であり、前記管理情報に変更が生じた後に保存される更新後ログとを前記第2の記憶部に保存する管理情報保存部と、
起動時に、前記更新前ログまたは前記更新後ログが存在する場合には前記スナップショットと前記更新前ログまたは前記更新後ログとに基づいて前記第1の記憶部にて管理情報の復元を行い、前記更新前ログおよび前記更新後ログが存在しない場合には前記スナップショットに基づいて前記第1の記憶部にて管理情報の復元を行なう管理情報復元部と、を有し、
前記管理情報保存部は、前記更新前ログの保存後、更新処理としての前記第2の記憶部へのデータの書き込みがなされている途中でプログラムエラーが発生した場合には、前記データ書き込みを再度行なった後、新たなログの書き込みを行うことなく前記スナップショットを保存することを特徴とするメモリシステム。
【請求項2】
揮発性の第1の記憶部と、
多値データを記憶可能なメモリセルからなる不揮発性の第2の記憶部と、
前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行なうとともに、起動時に前記第2の記憶部に記憶された前記データの格納位置を含む管理情報を前記第1の記憶部に取込み、該取り込んだ管理情報を更新しながら管理情報に基づいて前記第1および第2の記憶部でのデータ管理を行なうコントローラと、
を備え、
前記コントローラは、
所定の条件が成立したときに前記第1の記憶部に記憶された管理情報をスナップショットとして前記第2の記憶部に保存するとともに、前記管理情報の更新差分情報であり、前記管理情報に変更が生じる前に保存される更新前ログと、前記管理情報の更新差分情報であり、前記管理情報に変更が生じた後に保存される更新後ログとを前記第2の記憶部に保存する管理情報保存部と、
起動時に、前記更新前ログまたは前記更新後ログが存在する場合には前記スナップショットと前記更新前ログまたは前記更新後ログとに基づいて前記第1の記憶部にて管理情報の復元を行い、前記更新前ログおよび前記更新後ログが存在しない場合には前記スナップショットに基づいて前記第1の記憶部にて管理情報の復元を行なう管理情報復元部と、を有し、
前記管理情報保存部は、前記更新前ログの保存後、更新処理としての前記第2の記憶部へのデータの書き込みがなされている途中でプログラムエラーが発生した場合には、前記データの再書き込み処理に対応する更新前ログを再度保存するとともに、前記再書き込み処理の完了後には、前記再書き込み処理に対応する更新後ログを保存した後、前記プログラムエラーが発生する前に保存された前記更新前ログに対応する更新後ログを保存することを特徴とするメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2009−211215(P2009−211215A)
【公開日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願番号】特願2008−51455(P2008−51455)
【出願日】平成20年3月1日(2008.3.1)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】