(57)【要約】【課題】ＤＲＡＭログの容量サイズを削減し、不正な電源断の際にも管理情報の整合を保つ。【解決手段】ログ記憶エリアに蓄積記録されるタイプＢログが設定値を超えた場合、タイプＢの管理情報に関しては、マスターテーブルを更新し、ログ記憶エリアへの記録動作を中止し、コミット実行条件が成立したときに、コミットではなく、スナップショットを実行する。【選択図】図１
2010186340.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の第１の記憶部と、不揮発性の第２の記憶部と、前記第１の記憶部を介してホスト装置と前記第２の記憶部との間のデータ転送を行うコントローラとを備えるメモリシステムにおいて、
前記第２の記憶部には、前記第２の記憶部でのデータを管理するための第１および第２の管理テーブルが記憶され、
前記コントローラは、
前記第２の記憶部に記憶された第１および第２の管理テーブルを起動時にマスターテーブルとして前記第１の記憶部に転送するテーブル転送手段と、
前記マスターテーブルにおける第１の管理テーブルを更新すべき事象が発生した際、第１の管理テーブルの更新情報を第１ログとして第１の記憶部のログ記憶エリアに蓄積記録し、前記マスターテーブルにおける第２の管理テーブルを更新すべき事象が発生した際、第２の管理テーブルの更新情報を第２ログとして第１の記憶部のログ記憶エリアに蓄積記録するとともに、前記マスターテーブルにおける第２の管理テーブルを更新するログ記録手段と、
第１の条件が成立したときに、前記ログ記憶エリアに蓄積記録された第１ログおよび第２ログを前記第２の記憶部に保存するとともに第１ログの内容を前記マスターテーブルにおける第１の管理テーブルに反映するコミット動作を行うログ反映手段と、
第１の条件とは異なる第２の条件が成立したときに、前記マスターテーブルにおける第１および第２の管理テーブルを前記第２の記憶部にスナップショットとして保存するスナップショット保存手段と、
前記ログ記憶エリアに蓄積記録される第２ログが設定値を超える前記第１または第２の条件とは異なる第３の条件が成立したときに、前記ログ記録手段によるログ記憶エリアへの第２ログの記録動作を中止し、第１の条件がつぎに成立したときに、前記ログ反映手段によるコミット動作を禁止し、前記スナップショット保存手段によるスナップショット保存動作を実行させるログ溢れ制御手段と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記第１の条件は、第１および第２の管理テーブルで管理される管理情報と、第２の記憶部でのデータの状態とが一致している場合を含むことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第２の条件は、正常な電源断シーケンスが発生した場合、第２の記憶部に記憶される第１および第２ログの量が所定の閾値を越えた場合を含むことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記第２の記憶部は、ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさである物理ブロック単位で消去が行われる不揮発性半導体メモリから構成され、
前記コントローラは、
ホスト装置が使用するセクタ単位のデータと、１以上の前記物理ブロックに対応付けられた論理ブロックとの対応を管理する論理層コントローラと、
前記論理ブロックと物理ブロックとの対応およびバッドブロックを管理する物理層コントローラと、
を有し、
前記第１の管理テーブルには、前記論理層コントローラが管理する論理層管理情報が登録され、
前記第２の管理テーブルには、前記物理層コントローラが管理する物理層管理情報が登録され、
第１ログは、前記論理層管理情報に関するログを含み、前記第２ログは前記物理層管理情報に関するログを含むことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記第１ログは、第１の管理テーブルの更新前後の差分をコピーした差分ログを含み、
前記第２ログは、第２の管理テーブルに関するイベントが発生したことを記録するイベントログを含むことを特徴とする請求項４に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
ハードディスク装置を２次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる（たとえば、特許文献１参照）。このような処理を行うことで、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。
【０００３】
ところで、近年では、不揮発性半導体記憶装置であるＮＡＮＤ型フラッシュメモリの大容量化が進行し、このＮＡＮＤ型フラッシュメモリを搭載したメモリシステムとしてのＳＳＤ（Solid State Drive）が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。しかし、このようなＮＡＮＤ型フラッシュメモリを２次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップに対して、ハードディスク装置を２次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップの場合と同様に上記特許文献１の技術を適用することはできない。それは、ＮＡＮＤ型フラッシュメモリの大容量化には、１つのメモリセルに２ビット以上の複数のデータ（多値データ）を記憶することが可能な多値メモリ技術（ＭＬＣ）が使用されているからである（たとえば、特許文献２参照）。
【０００４】
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、１つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
【０００５】
また、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際に外部から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、ＮＡＮＤ型フラッシュメモリを利用するメモリシステムでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われる。ウェアレベリング処理では、例えば、ホスト機器から指定される論理アドレスを、データ更新箇所が均等に分散されるように不揮発性半導体メモリの物理アドレスにアドレス変換している。
【０００６】
このようなアドレス変換の際には、外部から供給される論理アドレス（ＬＢＡ）と、ＮＡＮＤフラッシュメモリ上でデータが記憶されている位置を示す物理アドレス(ＮＡＮＤアドレス)の対応関係を表すアドレス変換テーブルなどの管理テーブルを用いて、データの記憶位置を管理することが多い。この管理テーブルは、起動時、不揮発性のＮＡＮＤフラッシュメモリから揮発性のＤＲＡＭなどのメモリに展開され、ＤＲＡＭ上に展開された管理テーブルはデータが書き込まれるたびに更新される。ＤＲＡＭ上に展開された管理テーブルは、電源断をまたいでも使用するために、例えば、上記スナップショットおよびログなどのバックアップ技術を用いてバックアップすることが必要となる。
【０００７】
このため、通常は、揮発性のＤＲＡＭ上には、不揮発性のＮＡＮＤフラッシュメモリから起動時に展開した管理テーブルと、該管理テーブルの変更内容を示すログとを記憶させ、ＮＡＮＤへのデータ書き込みに伴って、管理テーブルを更新してログを蓄積し、また、ＤＲＡＭ上の管理テーブルおよびログを適宜のタイミングで不揮発性のＮＡＮＤフラッシュメモリにバックアップするようにしている。
【０００８】
ところが、昨今は、ＳＳＤの高性能化のために、ある一定処理単位中のＮＡＮＤフラッシュメモリへのデータ書き込み量が増え、その分管理テーブルの更新量も増え、蓄積するログも増えている。ＤＲＡＭは、通常、ＮＡＮＤフラッシュメモリのキャッシュメモリとしても使用されることが多いために、ＤＲＡＭ中で、いかに管理テーブルのサイズを小さくし蓄積するログ量を少なくする対策が望まれている。特に、ＤＲＡＭ上のログに関しては、発生した事象に伴ってログが蓄積されるため、発生する事象によっては、その事象を原因として蓄積すべきログ量の上限を見積もることができず、適切なＤＲＡＭ上のログ設定容量（ログ蓄積量の上限設定値）を設定することが難しい。このため、蓄積すべきログ量がＤＲＡＭ上のログ容量より大きくなった場合は、ＤＲＡＭ上のログ領域以外の領域にあるデータを破壊してしまうなどの不具合を起こしてしまう可能性を排除することができなかった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２００６／０２２４６３６号明細書
【特許文献２】特開２００４−１９２７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、揮発性メモリ上での適切なログ蓄積量の上限設定値を設定可能であってかつ不正な電源断が発生した場合でも管理情報の整合性を保つことが可能なメモリシステムを提供する。
【課題を解決するための手段】
【００１１】
本願発明の一態様によれば、揮発性の第１の記憶部と、不揮発性の第２の記憶部と、前記第１の記憶部を介してホスト装置と前記第２の記憶部との間のデータ転送を行うコントローラとを備えるメモリシステムにおいて、前記第２の記憶部には、前記第２の記憶部でのデータを管理するための第１および第２の管理テーブルが記憶され、前記コントローラは、前記第２の記憶部に記憶された第１および第２の管理テーブルを起動時にマスターテーブルとして前記第１の記憶部に転送するテーブル転送手段と、前記マスターテーブルにおける第１の管理テーブルを更新すべき事象が発生した際、第１の管理テーブルの更新情報を第１ログとして第１の記憶部のログ記憶エリアに蓄積記録し、前記マスターテーブルにおける第２の管理テーブルを更新すべき事象が発生した際、第２の管理テーブルの更新情報を第２ログとして第１の記憶部のログ記憶エリアに蓄積記録するとともに、前記マスターテーブルにおける第２の管理テーブルを更新するログ記録手段と、第１の条件が成立したときに、前記ログ記憶エリアに蓄積記録された第１ログおよび第２ログを前記第２の記憶部に保存するとともに第１ログの内容を前記マスターテーブルにおける第１の管理テーブルに反映するコミット動作を行うログ反映手段と、第１の条件とは異なる第２の条件が成立したときに、前記マスターテーブルにおける第１および第２の管理テーブルを前記第２の記憶部にスナップショットとして保存するスナップショット保存手段と、前記ログ記憶エリアに蓄積記録される第２ログが設定値を超える前記第１または第２の条件とは異なる第３の条件が成立したときに、前記ログ記録手段によるログ記憶エリアへの第２ログの記録動作を中止し、第１の条件がつぎに成立したときに、前記ログ反映手段によるコミット動作を禁止し、前記スナップショット保存手段によるスナップショット保存動作を実行させるログ溢れ制御手段とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、揮発性メモリ上での適切なログ蓄積量の上限設定値を設定可能であってかつ不正な電源断が発生した場合でも管理情報の整合性を保つことが可能なメモリシステムを提供できる。
【図面の簡単な説明】
【００１３】
【図１】ＳＳＤの構成例を示すブロック図。
【図２】プロセッサの機能構成例を示すブロック図。
【図３】データ管理部の機能構成を示すブロック図。
【図４】本実施の形態の要部構成を示す機能ブロック図。
【図５】スナップショットとログの生成形態を概念的に示す図。
【図６】ＤＲＡＭログ領域の記憶上限サイズを概念的に示す図。
【図７】本実施の形態の動作例を示すフローチャート。
【図８】ログ溢れ時の動作を概念的に示す図。
【図９】ＳＳＤを搭載したパーソナルコンピュータの全体図。
【図１０】ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１５】
（第１の実施の形態）
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、コントローラとしてのドライブ制御回路４と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、揮発性半導体メモリとしてのＤＲＡＭ２０と、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースなどを備えている。ＳＳＤ１００は、ＡＴＡ  Ｉ／Ｆ２を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１６】
ＮＡＮＤメモリ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＤＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１０は、、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページおよび下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ１０は、複数のＮＡＮＤメモリチップによって構成され、各ＮＡＮＤメモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ１０では、物理ページごとにデータの書き込みおよびデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。この実施の形態では、ＮＡＮＤメモリ１０においては、４つの並列動作要素１０ａ〜１０ｄが各複数ビットの４チャネル（４ｃｈ）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１３に並列接続されており、４つの並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。
【００１７】
ＤＲＡＭ２０は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部（データ転送用キャッシュ）としては、ホスト１から書込要求があったデータをＮＡＮＤメモリ１０に書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤメモリ１０から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリ１０に記憶されるデータの格納位置を管理するための管理情報（ＮＡＮＤメモリ１０に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分のコピーである差分ログ、イベントが発生したことを記録するイベントログなど）を格納するために使用される。さらに、作業領域用の記憶部としては、管理情報を復元する際に用いるログの展開時などに使用される。
【００１８】
ドライブ制御回路４は、ホスト１とＮＡＮＤメモリ１０との間でＤＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。
【００１９】
ドライブ制御回路４は、データアクセス用バス１０１、回路制御用バス１０２を備えている。回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。回路制御用バス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。
【００２０】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、ＮＡＮＤコントローラ１１３、およびＤＲＡＭコントローラ１１４は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。ＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介してホスト１との間でデータを送受信する。データアクセス用バス１０１には、データ作業領域およびファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤメモリ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。
【００２１】
ＤＲＡＭコントローラ１１４は、プロセッサ１０４とＤＲＡＭ２０とのインタフェース処理などを実行する。ＮＡＮＤコントローラ１１３は、プロセッサ１０４とＮＡＮＤメモリ１０とのインタフェース処理、ＮＡＮＤメモリ１０−ＤＲＡＭ２０間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００２２】
図２は、プロセッサ１０４により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ１０４により実現されるファームウェアの各機能は、大きくは、データ管理部（ＤＭ：Data Manager）１２０、ＡＴＡコマンド処理部（ＡＭ：ATA Manager）１２１、セキュリティ管理部１２２、ブートローダ１２３、初期化管理部１２４などに分類される。
【００２３】
データ管理部１２０は、ＮＡＮＤコントローラ１１３、ＤＲＡＭコントローラ１１４などを介して、ＮＡＮＤメモリ１０−ＤＲＡＭ２０間のデータ転送、ＮＡＮＤメモリ１０に関する各種機能を制御する。ＡＴＡコマンド処理部１２１は、ＡＴＡコントローラ１１１、ＤＲＡＭコントローラ１１４を介して、データ管理部１２０と協動してＤＲＡＭ２０−ホスト１間のデータ転送処理を行う。セキュリティ管理部１２２は、データ管理部１２０およびＡＴＡコマンド処理部１２１と協動して各種のセキュリティ情報を管理する。
【００２４】
ブートローダ１２３は、パワーオン時、各管理プログラム（ファームウェア）をＮＡＮＤメモリ１０からＳＲＡＭ１１５にロードする。初期化管理部１２４は、ドライブ制御回路４内の各コントローラ／回路の初期化を行う。
【００２５】
つぎに、データ管理部１２０について詳しく説明する。データ管理部１２０は、ＡＴＡコマンド処理部１２１が記憶デバイスであるＮＡＮＤメモリ１０やＤＲＡＭ２０に対して要求する機能の提供（ホスト１からのWrite要求、Cache  Flush要求、Read要求等の各種コマンドへの応答）と、ホスト１から与えられる論理アドレスとＮＡＮＤメモリ１０との対応関係の管理と、スナップショット、ログによる管理情報の保護と、ＤＲＡＭ２０およびＮＡＮＤメモリ１０を利用した高速で効率の良いデータ読み出し／書き込み機能の提供と、ＮＡＮＤメモリ１０の信頼性の確保などを行う。
【００２６】
データ管理部１２０では、図３に示すように、多層の管理構成が採用されており、データ管理部１２０は、上層からＡＴＡ層管理部１２０ａ、ＤＲＡＭ層管理部１２０ｂ、論理層管理部１２０ｃ、物理層管理部１２０ｄを備えている。
【００２７】
ＡＴＡ層管理部１２０ａは、ＡＴＡコマンド処理部１２１からの要求を受付け、この要求に応答するとともに、要求を適切な下位層の管理部に通知する。ＤＲＡＭ層管理部１２０ｂは、ＤＲＡＭ管理テーブル３０を使用してＤＲＡＭ２０上のデータを管理する。
【００２８】
ここで、ホスト１はＳＳＤ１００対し、ReadまたはWrite要求を発行する際には、ＡＴＡインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical  Block  Addressing）及びデータサイズを入力する。ＬＢＡは、セクタ（サイズ：５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。また、論理ブロックとは、ＮＡＮＤメモリ１０のチップ上の物理ブロックを複数組み合わせて構成される仮想的なブロックのことであり、この実施の形態では、論理ブロックは１つの物理ブロックを並列チャネル数分（この場合、図１に示すように４ｃｈ）まとめた単位のことをいう。論理ページも同様であり、物理ページを４ｃｈ分まとめた単位のことをいう。
【００２９】
論理層管理部１２０ｃは、各種の論理層管理テーブル４０を使用してＮＡＮＤメモリ１０上のデータを管理するものであり、
・ＬＢＡと論理ブロックの対応関係の管理
・ＤＲＡＭ２０からＮＡＮＤメモリ１０へのデータ書き込み制御
・ＮＡＮＤメモリ１０からＤＲＡＭ２０へのデータ読み出し制御
・ＮＡＮＤメモリ１０内のユーザデータの整理
などを実行する。
【００３０】
物理層管理部１２０ｄは、各種の物理層管理テーブル５０を使用してＮＡＮＤメモリ１０を管理するとともに、論理ブロックの提供、不揮発情報の管理、ＮＡＮＤコントローラ１１３の制御などを実行する。具体的には、
・フリーブロック、バッドブロック、アクティブブロックの管理
・論理ブロックと物理ブロックの対応の管理
・物理的エラーの管理
・ウェアレベリング、リフレッシュの実行
・不揮発情報（スナップショット、ログ）の管理
ＮＡＮＤコントローラ１１３の制御
などを実行する。
【００３１】
フリーブロック（ＦＢ）とは、内部に有効データを含まない、用途未割り当ての論理ブロックのことである。アクティブブロック（ＡＢ）とは、用途が割り当てられた論理ブロックのことである。バッドブロック（ＢＢ）は、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックＢＢとして登録される。
【００３２】
図３に示した各管理テーブル３０、４０、５０で管理される管理情報によって、ホスト１で使用されるＬＢＡと、ＳＳＤ１００で使用される論理ＮＡＮＤアドレス（論理ブロックアドレスなど）と、ＮＡＮＤメモリ１０で使用される物理ＮＡＮＤアドレス（物理ブロックアドレスなど）との間を対応付けることができ、ホスト１とＮＡＮＤメモリ１０との間のデータのやり取りを行うことが可能となる。
【００３３】
図４は、本実施の形態の要部の機能構成を示すブロック図である。ＮＡＮＤメモリ１０には、ユーザデータを記憶するユーザデータ記憶部２０１と、ＮＡＮＤメモリ１０上の所定の記憶領域に記憶され、図３に示した各管理テーブルのうちＮＡＮＤメモリ１０を管理するためのＮＡＮＤ管理テーブル２０２（論理層管理テーブル４０および物理層管理テーブル５０などを含む）と、ＮＡＮＤ管理テーブル２０２と同様、ＮＡＮＤメモリ１０上の所定の記憶領域に記憶され、ＮＡＮＤ管理テーブル２０２の変更差分情報としてのログ（以下、ＮＡＮＤログ）２０３とが記憶されている。
【００３４】
ＤＲＡＭ２０には、キャッシュメモリ２０６の他に、ＤＲＡＭ２０上に展開されたＮＡＮＤ管理テーブル２０２であるマスターテーブル２０４と、マスターテーブル２０４に加えた変更内容を蓄積記憶するためのＤＲＡＭ２０上のログバッファ領域であるＤＲＡＭログ領域２０５とが用意される。
【００３５】
ＮＡＮＤメモリ１０の所定の領域に記憶されているＮＡＮＤ管理テーブル２０２は、起動時に、揮発性のＤＲＡＭ２０上に展開される。ＤＲＡＭ２０上に展開されたＮＡＮＤ管理テーブル２０２がマスターテーブル２０４である。マスターテーブル２０４を、データ管理部１２０が使用することで、マスターテーブル２０４は更新されていく。マスターテーブル２０４は、電源が切れても、電源が切れる以前の状態に復元する必要があり、このためマスターテーブル２０４を不揮発性のＮＡＮＤメモリ１０に保存する仕組みが必要となる。ＮＡＮＤメモリ１０上の不揮発性のＮＡＮＤ管理テーブル２０２はスナップショットとも呼び、ＤＲＡＭ２０上で使用されているマスターテーブル２０４をそのままＮＡＮＤメモリ１０に保存することを、スナップショットをとるとも表現する。
【００３６】
ログは、マスターテーブル２０４の変更差分情報である。マスターテーブル２０４の更新の度に、スナップショットをとっていたのでは、速度も遅く、ＮＡＮＤメモリ１０への書き込み数が増えるために、通常は、ＤＲＡＭログ領域２０５に蓄積される変更差分情報としてのログだけをＮＡＮＤメモリ１０に蓄積記録していく。ログをマスターテーブル２０４に反映し、ＮＡＮＤメモリ１０に保存することを、コミットするとも表現する。コミットによってＮＡＮＤメモリ１０に保存されたログがＮＡＮＤログ２０３である。
【００３７】
図５に、データ更新時に、スナップショットとログがどのように更新されるかを示す。データ管理部１２０がデータ更新する際に、マスターテーブル２０４に加えた変更内容の差分情報としてのログをＤＲＡＭログ領域２０５に蓄積する。ここで、データ管理部１２０が管理する管理情報には、２つのタイプがある。１つは、データ更新の際に、ＤＲＡＭログ領域２０５に対するログ（差分情報）の蓄積のみを行い、マスターテーブル２０４の更新は行わないタイプであり、タイプＡと呼ぶ。もう一つは、データ更新の際に、ＤＲＡＭログ領域２０５に対するログ（差分情報）の蓄積を行い、かつマスターテーブル２０４の更新も行うタイプであり、タイプＢと呼ぶ。なお、データの読み書き処理の際には、マスターテーブル２０４の他にＤＲＡＭログ領域２０５に蓄積されたログも参照する。
【００３８】
データの更新が安定したとき、すなわち管理情報とデータの一貫性がとれるときに（各管理テーブルで管理される管理情報と、ＮＡＮＤメモリ１０でのデータの状態とが一致するとき）、ログのコミットを行う。コミット処理では、ＤＲＡＭログ領域２０５中のタイプＡのログの内容をマスターテーブル２０４に反映させ、さらにＤＲＡＭログ領域２０５の全内容（タイプＡおよびタイプＢ）をＮＡＮＤメモリ１０に保存して不揮発化する。スナップショットをＮＡＮＤメモリ１０に保存するのは、正常な電源断シーケンスの際、あるいはＮＡＮＤログ２０３の保存領域が不足した場合などとする。このように、通常は、スナップショットの保存処理の実行間隔に比べ、コミット処理の実行間隔は、短い。ログまたはスナップショットがＮＡＮＤメモリ１０に書き終わった時点で、管理情報の不揮発化が完了する。スナップショットまたはコミットが行われると、ＤＲＡＭログ領域２０５上に積み上げてきたログは、無効化される。
【００３９】
タイプＡは、ＤＲＡＭ２０上に蓄積されたログを無効にし、ある時点の状態まで戻ることを可能にしたい管理情報に採用され、タイプＢは、状態を戻す必要がない管理情報に採用される。例えば、タイプＡは、論理層管理部１２０ｃで使用される管理情報に利用され、タイプＢは、物理層管理部１２０ｄで使用される管理情報に利用される。物理層管理部１２０ｄは、ＮＡＮＤメモリ１０の物理的な状態（エラー発生など）を管理しているので、状態を戻す必要がない。一方、論理層管理部１２０ｃは、前述したように仮想的な論理ブロックでデータを管理しているので、例えば、データをある論理ブロックに書き込む際に、この論理ブロック内でエラーが発生した場合、この書き込み動作をキャンセルしてから、他の論理ブロックにデータ書き込みを行いたい場合などがあり、このような状況下で状態を戻す必要がある。因みに、上記した論理ブロック内のエラーは、物理層管理部１２０ｄで管理されている。なお、前述したように、更新差分情報を記録するログには、管理テーブルの変更差分のコピーである差分ログと、イベントが発生したことを記録するイベントログ（差分ログよりデータサイズが小さい）があるが、論理層管理部１２０ｃで使用されるタイプＡのログには、差分ログが使用されることが多く、また物理層管理部１２０ｄで使用されるタイプＢのログには、イベントログが使用されることが多い。
【００４０】
ＳＳＤ１００では、ホスト１からの書き込みデータのサイズが大きくても、ＡＭ１２１によって書き込みデータが分割されて所定のサイズ以下の書き込みしか行われないために、タイプＡのログに関しては、ＤＲＡＭログ領域２０５に蓄積するログの上限数を見積もることが可能である。しかしながら、タイプＢのログに関しては、エラー発生などの物理現象を管理しているので、上限を定めることが難しい。例えば、バッドブロックＢＢが発生する場合、バッドブロックＢＢの発生個数の上限を予測することは難しく、バッドブロックＢＢの発生を記録するログ（イベントログ）によって、ＤＲＡＭログ領域２０５を溢れさせる可能性がある。ＤＲＡＭログ領域２０５として、充分な記憶容量が確保できればよいが、これでは、蓄積するログ量を少なくし、ログを記憶する不揮発性メモリの記憶容量を小さくするという要望に反することになる。
【００４１】
そこで、本実施の形態においては、図５を用いて説明したスナップショットの成立条件（正常な電源断シーケンスの際、あるいはＮＡＮＤログ２０３の保存領域が不足した場合）の他に、新たなスナップショットの成立条件を追加する。すなわち、タイプＢのログをＤＲＡＭログ領域２０５に蓄積する時点で、ＤＲＡＭログ領域２０５の残量が少ない場合、すなわちタイプＢのログが溢れたことを検出した時点で（タイプＢのログの蓄積量が予め設定した上限値を超えた時点で）、ＤＲＡＭログ領域２０５にタイプＢのログを残すことを中止し、コミットの条件がつぎに成立した時に、マスターテーブル２０４をＮＡＮＤメモリ１０にスナップショット２０２として保存するスナップショット処理を実行し、ＤＲＡＭログ領域２０５のタイプＡおよびタイプＢの蓄積ログをＮＡＮＤメモリ１０にＮＡＮＤログ２０３として保存するコミット処理を実行しないようにする。
【００４２】
タイプＢのログは、ＤＲＡＭログ領域２０５に、ログを記録するタイミングで、マスターテーブル２０４を更新するため、タイプＢのログ溢れを検出した場合、その後のタイプＢのログを破棄したとしても、マスターテーブル２０４を、次回のコミットのタイミングで、スナップショットするようにすれば、不正な電源断が発生しても、タイプＢに関する管理情報を復元することができる。前述したように、タイプＡのログは上限サイズが決まっているため、タイプＢのログの上限サイズを決定すると、ＤＲＡＭログ領域２０５のサイズは、これらの和として定めることができる。図６は、ＤＲＡＭログ領域２０５におけるタイプＡログの記憶上限サイズと、タイプＢログの記憶上限サイズを示すものである。
【００４３】
このような制御を行うデータ管理部１２０の機能構成を図４に示す。データ管理部１２０（コントローラ）１２０は、読み書き制御部２１０、スナップショット転送部２１１、ログ記録部２１２、ログ反映部２１３、スナップショット保存部２１４およびログ溢れ制御部２１５などによって構成されている。
【００４４】
読み書き制御部２１０は、マスターテーブル２０４およびＤＲＡＭログ領域２０５に蓄積されたログに基づいて、キャッシュメモリ２０６を介してＮＡＮＤメモリ１０に対するデータの読み書き制御を行う。スナップショット転送部２１１は、ＮＡＮＤメモリ１０に記憶されたタイプＡの管理情報を管理するためのタイプＡ管理テーブルとタイプＢの管理情報を管理するためのタイプＢ管理テーブルと有するＮＡＮＤ管理テーブル（スナップショット）２０２を起動時にマスターテーブル２０４としてＤＲＡＭ２０上に展開する。
【００４５】
ログ記録部２１２は、マスターテーブル２０４におけるタイプＡの管理テーブルを更新すべき事象が発生した際、タイプＡの管理テーブルの差分情報としてのタイプＡのログをＤＲＡＭログ領域２０５に蓄積記憶する。また、ログ記録部２１２は、マスターテーブル２０４におけるタイプＢの管理テーブルを更新すべき事象が発生した際、タイプＢの管理テーブルの差分情報としてのタイプＢのログをＤＲＡＭログ領域２０５に蓄積記憶し、かつマスターテーブル２０４におけるタイプＢの管理テーブルを更新する。
【００４６】
ログ反映部２１３は、前述のコミット実行条件が成立すると、ＤＲＡＭログ領域２０５に蓄積されたタイプＡおよびタイプＢのログをＮＡＮＤメモリ１０にＮＡＮＤログ２０３として保存するとともに、タイプＡのログの内容をマスターテーブル２０４におけるタイプＡの管理テーブルに反映する。
【００４７】
スナップショット保存部２１４は、前述のスナップショット実行条件が成立すると、前記マスターテーブルにおけるタイプＡの管理テーブルおよびタイプＢの管理テーブルをＮＡＮＤメモリ１０にスナップショット２０２として保存する。
【００４８】
ログ溢れ制御部２１５は、本実施の形態の主要な機能構成部であり、その処理内容を図７を用いて説明する。ＤＲＡＭログ領域２０５に蓄積記録されるタイプＢのログが所定の上限サイズを超えるログ溢れが発生した場合（ステップＳ３００）、ログ溢れ制御部２１５は、ログ記録部２１２によるＤＲＡＭログ領域２０５へのタイプＢのログの記録動作を中止させ（マスターテーブルのタイプＢの管理テーブルへの更新動作は実行させる）、これ以後は、タイプＢのログを廃棄させる。そして、次回のコミット実行条件が成立すると（ステップＳ３３０）、ログ反映部２１３によるコミット動作を禁止する一方、スナップショット保存部２１４によるスナップショット保存動作を実行させる（ステップＳ３４０）。
【００４９】
図８は、通常動作時と、タイプＢのログ溢れ時の動作例を示すものである。通常時には、マスターテーブル２０４におけるタイプＡの管理テーブルを更新すべき事象が発生した際、あるいはマスターテーブル２０４におけるタイプＢの管理テーブルを更新すべき事象が発生した際には、ログ記録部２１２によって、タイプＡあるいはタイプＢのログをＤＲＡＭログ領域２０５に蓄積記憶している。そして、コミット実行条件が成立すると、ログ反映部２１３は、ＤＲＡＭログ領域２０５に蓄積されたタイプＡおよびタイプＢのログをＮＡＮＤメモリ１０にＮＡＮＤログ２０３として保存する。
【００５０】
一方、ＤＲＡＭログ領域２０５に蓄積記録されるタイプＢのログが所定の上限サイズを超えるログ溢れが発生した場合は、ログ溢れ制御部２１５は、ＤＲＡＭログ領域２０５へのタイプＢのログの記録動作を中止させるとともに、マスターテーブル２０４のタイプＢの管理テーブルへの更新動作は実行させる。この結果、これ以降は、タイプＡのログのみがＤＲＡＭログ領域２０５に蓄積可能となり、タイプＢのログは廃棄される。そして、次回のコミット実行条件が成立すると（ステップＳ３３０）、ログ溢れ制御部２１５は、コミット動作を禁止する一方、スナップショット保存部２１４によるスナップショット保存動作を実行させる。
【００５１】
このようにこの実施の形態によれば、ＤＲＡＭログ領域２０５においてタイプＢのログが溢れた場合には、これ以降は、タイプＡのみをＤＲＡＭログ領域２０５に蓄積し、タイプＢの管理情報に関しては、マスターテーブル２０４を更新するようにし、次回のコミット実行条件が成立すると、コミットではなくスナップショットをとるようにしており、これにより本実施の形態では、ＤＲＡＭログ領域２０５のサイズを充分に確保する必要がなくなり、ＤＲＡＭログ領域２０５の容量サイズを削減すること可能となり、タイプＢのログでタイプＡのログを書く領域を書きつぶすこともなく、さらに不正な電源断の際にも管理情報の整合を保つことも可能となる。
【００５２】
因みに、上述したバッドブロックＢＢなどのエラーが発生する度に、マスターテーブル２０４を更新し、かつＮＡＮＤメモリ１０にスナップショットをとる手法も考えられが、この手法では、スナップショットをとる回数が増え、ＮＡＮＤメモリ１０に対する書き込み回数、書き込み量が増えるという問題がある。
【００５３】
［第２の実施の形態］
図９は、ＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００５４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００５５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００５６】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００５７】
図１０は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１１、及びネットワークコントローラ１３１２等を備えている。
【００５８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００５９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００６０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００６１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス１３１４等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００６２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。
【００６３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００６４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００６５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【００６６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がＳＳＤ１００に入力される。
【００６７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００６８】
ＥＣ／ＫＢＣ１３１１は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００６９】
このＥＣ／ＫＢＣ１３１１は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１２は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００７０】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、以上のように表わしかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付のクレームおよびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００７１】
１  ホスト、２  ＡＴＡインタフェース、４  ドライブ制御回路、１０  ＮＡＮＤメモリ、２０  ＤＲＡＭ、４０  論理層管理テーブル、５０  物理層管理テーブル、１０４  プロセッサ、１２０  データ管理部、１２０ｃ  論理層管理部、１２０ｄ  物理層管理部、２０２  ＮＡＮＤ管理テーブル（スナップショット）、２０３  ＮＡＮＤログ、２０４  マスターテーブル、２０５  ＤＲＡＭログ領域、２１１  スナップショット転送部、２１２  ログ記録部、２１３  ログ反映部、２１４  スナップショット保存部、ログ溢れ制御部。
【図１】
2010186340.tif 000003
【図２】
2010186340.tif 000004
【図３】
2010186340.tif 000005
【図４】
2010186340.tif 000006
【図５】
2010186340.tif 000007
【図６】
2010186340.tif 000008
【図７】
2010186340.tif 000009
【図８】
2010186340.tif 000010
【図９】
2010186340.tif 000011
【図１０】
2010186340.tif 000012