(57)【要約】【課題】信頼性を向上させること。【解決手段】本発明の一つの実施形態によれば、メモリシステムは、不揮発性の第１メモリと、揮発性の第２メモリと、退避部とを備えている。前記第１メモリは、不良ブロックと良ブロックとを具備し、第１の良ブロックにホスト装置からのユーザデータを記憶する。前記第２メモリは、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第１の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する。前記退避部は、所定のタイミングで前記アドレス管理テーブルを前記第２メモリから読み出して、前記読み出したアドレス管理テーブルを前記第１の良ブロックとは異なる第２の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む。【選択図】図４
2013196674.tif 000002
【特許請求の範囲】
【請求項１】
不良ブロックと良ブロックとを具備し、第１の良ブロックにホスト装置からのユーザデータを記憶する不揮発性の第１メモリと、
前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第１の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する揮発性の第２メモリと、
前記第２メモリが記憶するアドレス管理テーブルを更新管理する更新部と、
所定のタイミングで前記アドレス管理テーブルを前記第２メモリから読み出して、前記読み出したアドレス管理テーブルを前記第１の良ブロックとは異なる第２の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む、退避部と、
を備ることを特徴とするメモリシステム。
【請求項２】
前記退避部は、前記複製データを前記不良ブロックに書き込んだ後、当該不良ブロックに書き込まれた複製データを検証し、検証結果が不合格である場合、前記不良ブロックに書き込む前の複製データの書き込み先の不良ブロックを変更する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記退避部は、前記複製データを前記良ブロックのサイズよりも小さい単位サイズの構成データ毎に前記不良ブロックに書き込んで、第１の構成データを前記不良ブロックに書き込んだ後に当該不良ブロックに書き込まれた第１の構成データを検証し、検証結果が合格である場合、前記第１の構成データに後続する第２の構成データを同一の不良ブロックの後続する物理アドレスに格納し、前記検証結果が不合格である場合、当該第１の構成データの書き込み先の不良ブロックを変更する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記退避部は、前記複製データを前記良ブロックのサイズよりも小さい単位サイズの構成データ毎に前記不良ブロックに書き込んで、第１の構成データを前記不良ブロックに書き込んだ後に当該不良ブロックに書き込まれた第１の構成データを検証し、検証結果が合格である場合、前記第１の構成データに後続する第２の構成データを同一の不良ブロックの後続する物理アドレスに格納し、前記検証結果が不合格である場合、当該第１の構成データの書き込み先を同一の不良ブロックの後続する物理アドレスに変更する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
電源オン時に前記第２の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第２メモリに書き込み、当該第２の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複製データを読み出して、当該読み出された複製データを前記第２メモリに書き込む、展開部をさらに備える、
ことを特徴とする請求項１乃至請求項４の何れか一項に記載のメモリシステム。
【請求項６】
前記退避部は、前記複製データを複数、前記不良ブロックに書き込み、
電源オン時に前記第２の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第２メモリに書き込み、当該第２の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複数の複製データ毎に前記複製データが含む前記破損した部分に対応する部分データを検証し、検証結果が合格である場合、前記破損した部分に替えて前記検証結果が合格である部分データを前記第２メモリに書き込む、展開部をさらに備える、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記所定のタイミングは、電源オフ時である、ことを特徴とする請求項１に記載のメモリシステム。
【請求項８】
不良ブロックと良ブロックとを具備し、第１の良ブロックにホスト装置からのユーザデータを記憶する不揮発性の第１メモリと、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第１の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する揮発性の第２メモリと、を備えるメモリシステムの前記アドレス管理テーブルの多重化方法であって、
前記第２メモリが記憶するアドレス管理テーブルを更新管理する更新ステップと、
所定のタイミングで前記アドレス管理テーブルを前記第２メモリから読み出して、前記読み出したアドレス管理テーブルを前記第１の良ブロックとは異なる第２の良ブロックに退避する退避ステップと、
前記アドレス管理テーブルを前記第２の良ブロックに退避する際に、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込むバックアップステップと、
を備ることを特徴とする多重化方法。
【請求項９】
電源オン時に前記第２の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第２メモリに書き込み、前記第２の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複製データを読み出して、当該読み出された複製データを前記第２メモリに書き込む、展開ステップ、
をさらに備えることを特徴とする多重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよび多重化方法に関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型のメモリセルを備えるメモリチップを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１９８１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、信頼性を向上させたメモリシステム、およびメモリシステムの信頼性を向上させるための、アドレス管理テーブルの多重化方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、メモリシステムは、不揮発性の第１メモリと、揮発性の第２メモリと、更新部と、退避部とを備えている。前記第１メモリは、不良ブロックと良ブロックとを具備し、第１の良ブロックにホスト装置からのユーザデータを記憶する。前記第２メモリは、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第１の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する。前記更新部は、前記第２メモリが記憶するアドレス管理テーブルを更新管理する。前記退避部は、所定のタイミングで前記アドレス管理テーブルを前記第２メモリから読み出して、前記読み出したアドレス管理テーブルを前記第１の良ブロックとは異なる第２の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のＳＳＤの構成例を示す図である。
【図２】図２は、１個のブロックの構成例を示す回路図である。
【図３】図３は、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４値データ記憶方式でのしきい値分布の例を示している。
【図４】図４は、ＮＡＮＤメモリのメモリ構成を説明する図である。
【図５】図５は、第１の実施形態のＳＳＤの機能構成を説明する図である。
【図６】図６は、第１の実施形態のＳＳＤの電源オン時の動作を説明するフローチャートである。
【図７】図７は、第１の実施形態のＳＳＤの電源オフ時の動作を説明するフローチャートである。
【図８】図８は、第１の実施形態の管理テーブル多重化処理を説明するフローチャートである。
【図９】図９は、第２の実施形態の管理テーブル多重化処理を説明するフローチャートである。
【図１０】図１０は、管理テーブル格納領域の構成例を説明する図である。
【図１１】図１１は、第２の実施形態のバックアップテーブル格納領域の構成例を説明する図である。
【図１２】図１２は、第３の実施形態の管理テーブル多重化処理を説明するフローチャートである。
【図１３】図１３は、第３の実施形態のバックアップテーブル格納領域の構成例を説明する図である。
【図１４】図１４は、第４の実施形態のバックアップテーブル格納領域の構成例を説明する図である。
【図１５】図１５は、第４の実施形態の管理テーブル多重化処理を説明するフローチャートである。
【図１６】図１６は、第４の実施形態のＳＳＤの電源オン時の動作を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび多重化方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のＳＳＤの構成例を示す図である。図示するように、ＳＳＤ１００は、パーソナルコンピュータなどのホスト装置２００と所定の通信インタフェースで接続され、ホスト装置２００の外部記憶装置として機能する。ＳＳＤ１００がホスト装置２００から受信する読み出し要求や書き込み要求は、ＬＢＡ（Logical  Block  Addressing）で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはＳＡＴＡ規格に限らず、ＳＡＳ（Serial  Attached  SCSI）、ＰＣＩｅ（PCI  Express）など様々な通信インタフェース規格を採用することが可能である。
【０００９】
ＳＳＤ１００は、ＮＡＮＤメモリ（第１メモリ）１と、ＣＰＵ２と、ホストインタフェース（ホストＩ／Ｆ）３と、ＤＲＡＭ（第２メモリ）４と、ＮＡＮＤコントローラ（ＮＡＮＤＣ）５と、ＥＣＣ（Error  Checking  and  Correcting）回路６と、を備えている。ＣＰＵ２、ホストＩ／Ｆ３、ＤＲＡＭ４、ＮＡＮＤＣ５、およびＥＣＣ回路６は、互いにバスで接続されている。また、ＮＡＮＤメモリ１は、ＮＡＮＤＣ５に接続されている。
【００１０】
ＣＰＵ２は、ファームウェア（後述するファームウェアプログラム１１１またはファームウェアプログラム１１２）に基づいて、ＳＳＤ１００全体の制御を実行する。
【００１１】
ＤＲＡＭ４は、ＣＰＵ２がＳＳＤ１００を制御するためのワークエリアとして機能する揮発性メモリである。特に、ＤＲＡＭ４は、ＬＢＡとＮＡＮＤメモリ１の物理アドレスとの対応関係を記録したアドレス管理テーブル１２１（後述する）が展開（格納）される。ＤＲＡＭ４に展開されたアドレス管理テーブル１２１は、ＬＢＡとＮＡＮＤメモリ１の物理アドレスとの対応関係が更新される毎にＣＰＵ２によって更新される。
【００１２】
ホストＩ／Ｆ３は、ホスト装置２００との間の通信インタフェースの制御およびホスト装置２００とＤＲＡＭ４との間のデータ転送を実行する。
【００１３】
ＮＡＮＤＣ５は、ＮＡＮＤメモリ１とＤＲＡＭ４との間のデータ転送を実行する。また、ＮＡＮＤＣ５は、ＮＡＮＤメモリ１に対するアクセス時に発生するエラーを訂正するＥＣＣ回路５１を備えている。ＥＣＣ回路５１は、第２の訂正符号のエンコードを行い、また、第１の誤り訂正符号のエンコードおよびデコードを行う。
【００１４】
ＥＣＣ回路６は、第２の誤り訂正符号のデコードを行う。第１の誤り訂正符号、第２の誤り訂正符号は、例えば、ハミング符号、ＢＣＨ（Bose  Chaudhuri  Hocqenghem）符号、ＲＳ（Reed  Solomon）符号、或いはＬＤＰＣ（Low  Density  Parity  Check）符号等であり、第２の誤り訂正符号の訂正能力は、第１の誤り訂正符号の訂正能力よりも高いとする。
【００１５】
ＥＣＣ回路５１が第１の誤り訂正符号のデコードでも訂正不可能なエラーを検出した場合には、ＥＣＣ回路５１はＣＰＵ２にその旨を通知する。通知をうけたＣＰＵ２は、ＥＣＣ回路６を起動して、第２の誤り訂正符号に基づくエラー訂正を実行する。
【００１６】
ＮＡＮＤメモリ１は、種々のデータを保持する記憶領域を備えている。ＮＡＮＤメモリ１の記憶領域は、メモリセルアレイによって構成される。このメモリセルアレイは、消去の単位となるブロックを複数備えて構成される。
【００１７】
図２は、ＮＡＮＤメモリ１の記憶領域を構成するメモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。図示するように、各ブロックは、Ｘ方向に沿って順に配列された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは、０以上の整数）。（ｍ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１８】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（metal  oxide  semiconductor  field  effect  transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じてしきい値電圧が変化し、このしきい値電圧の違いに応じてデータを記憶する。メモリセルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００１９】
各ＮＡＮＤストリングにおいて、（ｎ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２０】
ワード線ＷＬ０〜ＷＬｑは、ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｍ＋１）個のメモリセルトランジスタＭＴは１ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【００２１】
また、ビット線ＢＬ０〜ＢＬｐは、ブロック間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００２２】
なお、ＮＡＮＤメモリ１の記憶領域を構成するメモリセルアレイは、１つのメモリセルに２ビット以上を記憶する多値メモリ（MLC:  Multi  Level  Cell）であってもよいし、１つのメモリセルに１ビットを記憶する二値メモリ（SLC:  Single  Level  Cell）であってもよい。
【００２３】
図３は、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４値データ記憶方式でのしきい値分布の例を示している。４値データ記憶方式では、上位ページデータ“ｘ”と下位ページデータ“ｙ”で定義される４値データ“ｘｙ”の何れか一つをメモリセルトランジスタＭＴに保持可能である。この、４値データ“ｘｙ”は、メモリセルトランジスタＭＴのしきい値電圧の順に、例えば、データ“１１”、“０１”、“００”、“１０”が割り当てられる。データ“１１”は、メモリセルトランジスタＭＴのしきい値電圧が負の消去状態である。
【００２４】
下位ページ書き込み動作においては、データ“１１”（消去状態）のメモリセルトランジスタＭＴに対して選択的に、下位ビットデータ“ｙ”の書き込みによって、データ“１０”が書き込まれる。上位ページ書き込み前のデータ“１０”のしきい値分布は、上位ページ書き込み後のデータ“０１”とデータ“００”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。
【００２５】
上位ページ書き込み動作においては、データ“１１”のメモリセルと、データ“１０”のメモリセルに対して、それぞれ選択的に上位ビットデータ“ｘ”の書き込みが行われて、データ“０１”およびデータ“００”が書き込まれる。
【００２６】
図４は、ＮＡＮＤメモリ１のメモリ構成を説明する図である。図示するように、ＮＡＮＤメモリ１は、ユーザデータ格納領域１０と、ファームウェアプログラム格納領域１１と、管理テーブル格納領域１２と、バックアップテーブル格納領域１３と、バッドブロックプール１４と、フリーブロックプール１５とを備えている。
【００２７】
ユーザデータ格納領域１０は、ホスト装置２００から書き込み要求されたデータ（ユーザデータ）が格納される領域である。ユーザデータ格納領域１０は、ＬＢＡ空間上の所定の範囲が割り当てられている。なお、ファームウェアプログラム格納領域１１、管理テーブル格納領域１２、バックアップテーブル格納領域１３、バッドブロックプール１４、およびフリーブロックプール１５は、ＬＢＡが割り当てられない。
【００２８】
ファームウェアプログラム格納領域１１は、ファームウェアプログラム１１１とそのバックアップデータであるファームウェアプログラム１１２とが格納される。ＣＰＵ２は、起動時にファームウェアプログラム１１１を読み出して使用する。ファームウェアプログラム１１１に訂正不可能なエラーが存在する場合には、ＣＰＵ２は、ファームウェアプログラム１１２を読み出して使用する。
【００２９】
管理テーブル格納領域１２は、アドレス管理テーブル１２１を記憶する領域である。
【００３０】
ＮＡＮＤメモリ１への書き込み方式として、例えば以下に述べる方式が採用される。まず、書き込みの前に、ブロック内の無効データを消去する必要がある。すなわち、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、上述のように、ホスト装置２００から要求される書き込み番地は、ホスト装置２００で用いられる論理アドレスであるＬＢＡで指定される。一方、ＮＡＮＤメモリ１へのデータの書き込み番地は、ＮＡＮＤメモリ１の物理的な記憶位置（物理アドレス）に基づいて、ページの昇順に書き込みが行なわれる。即ち、物理アドレスは論理アドレスとは無関係に決定される。決定された論理アドレスと物理アドレスとの対応関係は、ＤＲＡＭ４にロードされたアドレス管理テーブル１２１に記録される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、ＣＰＵ２は、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、ＣＰＵ２は、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。ＤＲＡＭ４上のアドレス管理テーブル１２１は、所定のタイミング（ここでは電源オフ時とする）にフリーブロックに書き込まれ不揮発化される。
【００３１】
フリーブロックプール１５は、有効データを含まないブロックであるフリーブロックの集合である。フリーブロックプール１５に登録されているフリーブロックは、ＬＢＡが割り振られていないフリーブロック（第２の良ブロック）である。また、バッドブロックプール１４は、ＣＰＵ２によって使用不可の判定がなされたブロックであるバッドブロック（不良ブロック）の集合である。
【００３２】
ＣＰＵ２は、例えば、読み出しエラー、消去エラー、またはプログラムエラーなどが発生したときにこれらのエラーが発生したブロックをバッドブロックとしてバッドブロックプール１４に登録する。なお、ユーザデータ格納領域１０を構成するブロック（第１の良ブロック）がバッドブロックとなって当該バッドブロックがバッドブロックプール１４に追加されたとき、バッドブロックプール１４に追加されたブロック数と同数のフリーブロックがフリーブロックプール１５から取り出されてユーザデータ格納領域１０に追加される。これにより、ユーザデータ格納領域１０は、ユーザデータ格納領域１０を構成するブロックのいくつかがバッドブロックとなっても常に同じサイズを維持することができる。即ち、ホスト装置２００に対して、常に同一の容量のユーザデータ格納領域１０を提供することができる。フリーブロックプール１５に登録されているフリーブロックが枯渇したとき、ホスト装置２００に対して常に同一の容量のユーザデータ格納領域１０を提供することができなくなるので、ＳＳＤ１００は使用不可となる。
【００３３】
なお、ＤＲＡＭ４上のアドレス管理テーブル１２１が不揮発化されるとき、フリーブロックプール１５に登録されているフリーブロックに当該アドレス管理テーブル１２１が格納され、そのフリーブロックは管理テーブル格納領域１２となる。アドレス管理テーブル１２１が新規にフリーブロックに書き込まれたとき、それまで管理テーブル格納領域１２としてアドレス管理テーブル１２１を保持していたブロックは、保持しているアドレス管理テーブル１２１が無効化され、フリーブロックプール１５に戻される。なお、フリーブロックプール１５に登録されているフリーブロックは、ウェアレベリングやガベージコレクションにより、ユーザデータ格納領域１０に追加されたりユーザデータ格納領域１０から削除されてフリーブロックプール１５に追加されたりしてもよい。
【００３４】
バックアップテーブル格納領域１３は、バッドブロックにより構成され、アドレス管理テーブル１２１のバックアップデータであるバックアップテーブル１３１が格納される。
【００３５】
例えば、データリテンションが進行したことによって読み出しエラーが発生したり、プログラムディスターブの影響を受けて読み出しエラーが発生したりしたことでバッドブロックとされたブロックは、実際にはメモリセルアレイの健全性は損なわれていないため、内部に保持するデータを消去されることで再利用されることが可能である。本発明の第１の実施形態のＳＳＤ１００は、バッドブロックのうちの再利用可能なブロックに管理データを多重化して記憶するようにしているので、管理データの破損によりＳＳＤ１００が起動しなくなるなどの障害の発生を防止することができる。また、上述のように、フリーブロックプール１５に登録されているフリーブロックは、ユーザデータ格納領域１０を構成するブロックがバッドブロックとなったときに消費され、フリーブロックプール１５のフリーブロックが枯渇したとき、ＳＳＤ１００はそれ以上の使用が不可能となる。本発明の第１の実施形態によれば、バッドブロックとされたブロックに管理テーブルをバックアップするので、バックアップ用に新規にフリーブロックを用意する場合に比べて将来的にユーザデータ格納領域１０として使用可能なブロック数を増やすことができるので、ＳＳＤ１００が使用不可となるまでの時間を延ばすことができる。
【００３６】
図５は、ＣＰＵ２がファームウェアプログラム１１１またはファームウェアプログラム１１２を実行することによって実現する第１の実施形態のＳＳＤ１００の機能構成を説明する図である。図示するように、ＣＰＵ２は、アドレス管理部２１および退避・展開部２２を備えている。
【００３７】
アドレス管理部２１は、ホスト装置２００からの書き込み要求されたデータがユーザデータ格納領域１０に書き込まれる毎にＤＲＡＭ４上でのアドレス管理テーブル１２１の更新を実行する。また、アドレス管理部２１は、ウェアレベリングやガベージコレクションを行って、ウェアレベリングやガベージコレクションを行う毎にＤＲＡＭ４上のアドレス管理テーブル１２１を更新するようにしてもよい。即ち、アドレス管理部２１は、アドレス管理テーブル１２１をＤＲＡＭ４上で更新管理する。
【００３８】
退避・展開部２２は、管理テーブル格納領域１２に格納されたアドレス管理テーブル１２１をＤＲＡＭ４へ展開したり、ＤＲＡＭ４が記憶するアドレス管理テーブル１２１をＮＡＮＤメモリ１に退避したりする。退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を退避する毎に、バックアップテーブル１３１を更新する。
【００３９】
図６は、ＳＳＤ１００の電源オン時の動作を説明するフローチャートである。ＳＳＤ１００が電源オンされた時には、退避・展開部２２は、アドレス管理テーブル１２１をＮＡＮＤメモリ１（正確には管理テーブル格納領域１２）から読み出して、読み出したアドレス管理テーブル１２１をＤＲＡＭ４に展開する（ステップＳ１）。ここで、アドレス管理テーブル１２１がＮＡＮＤメモリ１から読み出された際に、ＥＣＣ回路５１、またはＥＣＣ回路５１およびＥＣＣ回路６により、エラーの検出と訂正とが行われる。退避・展開部２２は、ＥＣＣ回路６を用いても訂正不可能なエラーがあるか否かを判定する（ステップＳ２）。アドレス管理テーブル１２１にＥＣＣ回路６を用いても訂正不可能なエラーがあった場合には（ステップＳ２、Ｙｅｓ）、退避・展開部２２は、バックアップテーブル格納領域１３に格納されているバックアップテーブル１３１を読み出して、読み出したバックアップテーブル１３１をアドレス管理テーブル１２１としてＤＲＡＭ４に格納する（ステップＳ３）。ＥＣＣ回路６を用いても訂正不可能なエラーがなかった場合には（ステップＳ２、Ｎｏ）、ステップＳ３の処理はスキップされる。そして、退避・展開部２２は、ＳＳＤ１００の起動時の処理を終了する。なお、ＳＳＤ１００の起動時の処理が終了した後、アドレス管理部２１は、ユーザデータにかかるＬＢＡと物理アドレスとの対応関係が変化する毎に、当該対応関係の変化分をＤＲＡＭ４上のアドレス管理テーブル１２１に反映せしめる。ＬＢＡと物理アドレスとの対応関係の変化は、ホスト装置２００から新規にユーザデータの書き込みが発生したり、ガベージコレクションやウェアレベリングが実行されたりした際に起こる。
【００４０】
図７は、ＳＳＤ１００の電源オフ時の動作を説明するフローチャートである。ＳＳＤ１００が電源オフされた時には、退避・展開部２２は、フリーブロックプール１５からフリーブロックを１つ取得する（ステップＳ１１）。そして、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を、ステップＳ１１の処理により取得したフリーブロックに書き込む（ステップＳ１２）。この処理により、アドレス管理テーブル１２１が書き込まれたブロックは、管理テーブル格納領域１２となり、以前の管理テーブル格納領域１２を構成するフロックは、保持するデータが無効化されてフリーブロックプール１５に追加される。続いて、退避・展開部２２は、アドレス管理テーブル１２１を多重化する管理テーブル多重化処理を実行し（ステップＳ１３）、電源オフ時のＳＳＤ１００の動作が終了となる。
【００４１】
図８は、第１の実施形態の管理テーブル多重化処理を説明するフローチャートである。退避・展開部２２は、バッドブロックプール１４からバッドブロックを１つ取得する（ステップＳ２１）。そして、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１をステップＳ２１の処理により取得したバッドブロックに書き込む（ステップＳ２２）。そして、退避・展開部２２は、ステップＳ２２の処理によりバッドブロックに書き込まれたアドレス管理テーブル１２１を例えばＤＲＡＭ４に読み出して検証することで、当該バッドブロックに書き込まれたアドレス管理テーブル１２１を検証する（ステップＳ２３）。退避・展開部２２は、ＥＣＣ回路６が第２の訂正符号を用いてアドレス管理テーブル１２１の読み出し時に訂正不可能なエラーがあったか否かを監視することで、バッドブロックに書き込まれたアドレス管理テーブル１２１を検証することができる。即ち、退避・展開部２２は、バッドブロックに書き込まれたアドレス管理テーブル１２１にＥＣＣ回路６が第２の訂正符号を用いて訂正不可能なエラーが発生している場合には、当該アドレス管理テーブル１２１は不合格であると判定し、バッドブロックに書き込まれたアドレス管理テーブル１２１にＥＣＣ回路６が第２の訂正符号を用いて訂正不可能なエラーが発生していない場合には、当該アドレス管理テーブル１２１は合格であると判定することができる。ステップＳ２２の処理によりバッドブロックに書き込まれたアドレス管理テーブル１２１の検証結果が不合格である場合には（ステップＳ２４、Ｎｏ）、退避・展開部２２は、ステップＳ２１の処理を再び実行する。ステップＳ２２の処理によりバッドブロックに書き込まれたアドレス管理テーブル１２１の検証結果が合格である場合には（ステップＳ２４、Ｙｅｓ）、退避・展開部２２は、管理テーブル多重化処理を終了する。なお、バッドブロックに書き込まれ、検証結果が合格であったアドレス管理テーブル１２１はバックアップテーブル１３１として当該バッドブロックに保持されることとなり、当該バッドブロックはバックアップテーブル格納領域１３となる。
【００４２】
なお、以上の説明においては、簡単のために、アドレス管理テーブル１２１は、１ブロック内に収まるものとして説明したが、アドレス管理テーブル１２１のサイズは１ブロックのサイズを越えてもよい。その場合には、退避・展開部２２は、バックアップテーブル１３１を複数のバッドブロックに分割して格納するようにしてもよい。
【００４３】
また、アドレス管理テーブル１２１をバックアップ対象としたが、バッドブロックリストやフリーブロックリストなど、ＤＲＡＭ４に展開されて使用される管理データをバックアップ対象とするようにしてもよい。
【００４４】
このように、第１の実施形態によれば、ＳＳＤ１００は、所定のタイミングでアドレス管理テーブル１２１をＤＲＡＭ４から読み出して、前記読み出したアドレス管理テーブル１２１をフリーブロックに退避するとともに、当該退避対象のアドレス管理テーブル１２１の複製データであるバックアップテーブル１３１をバッドブロックに書き込む、ように構成したので、アドレス管理テーブル１２１が破損した場合であってもバッドブロックに書き込まれたバックアップテーブル１３１をアドレス管理テーブル１２１として使用することができるので、ＳＳＤ１００の信頼性が向上する。また、ＳＳＤ１００は、バックアップテーブル１３１の書き込み先としてフリーブロックではなくバッドブロックを使用するので、ＳＳＤ１００が使用不可となるまでの時間を延ばすことができる。
【００４５】
また、ＳＳＤ１００は、バックアップテーブル１３１をバッドブロックに書き込んだ後、当該バッドブロックに書き込まれたバックアップテーブル１３１を検証し、検証結果が不合格である場合、別のバッドブロックにバックアップテーブル１３１を格納する、ように構成したので、訂正不可能なエラーのないバックアップテーブル１３１を用意することができるので、ＳＳＤ１００の信頼性が向上する。
【００４６】
（第２の実施形態）
ブロック内の特定のワードラインが故障したとき、その他のワードラインが使用可能であっても、当該ブロックはバッドブロックとされる。第２の実施形態によれば、特定のワードラインのみが故障したバッドブロックのうちの故障していないワードラインにバックアップデータを格納することができる。
【００４７】
第２の実施形態のＳＳＤの構成は、第１の実施形態と同様であるので、第２の実施形態のＳＳＤの構成要素については、第１の実施形態と同様の名称および符号を用い、重複する説明を省略する。
【００４８】
第２の実施形態のＳＳＤ１００の動作は、管理データ多重化処理のみ第１の実施形態と異なっている。
【００４９】
図９は、第２の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部２２は、バッドブロックプール１４からバッドブロックを１つ取得する（ステップＳ３１）。そして、退避・展開部２２は、ステップＳ３３〜ステップＳ３９のループ処理で使用するループインデックスｉを１で初期化して（ステップＳ３２）、ステップＳ３１の処理により取得したバッドブロックに空きページが存在するか否かを判定する（ステップＳ３３）。なお、ステップＳ３３の処理における空きページとは、後述のステップＳ３５の処理による書き込みが一度も試みられていないページをいう。バッドブロックに空きページが存在しない場合（ステップＳ３３、Ｎｏ）、退避・展開部２２は、バッドブロックプール１４から別のバッドブロックを取得し（ステップＳ３４）、ステップＳ３３の判定処理を再び実行する。バッドブロックに空きページがある場合（ステップＳ３３、Ｙｅｓ）、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を構成するデータのうちのｉページ目をバッドブロックの空きページに書き込む（ステップＳ３５）。ステップＳ３５では、退避・展開部２２は、前回書き込みが行われたページから物理アドレスが後続するページにｉページ目のデータを書き込む。続いて、退避・展開部２２は、ステップＳ３５の処理によりバッドブロックに書き込まれたｉページ目のデータをＤＲＡＭ４に読み出して検証する（ステップＳ３６）。なお、ステップＳ３６の処理における検証方法は、ステップ２３の処理における検証方法と同じであってよい。
【００５０】
続いて、退避・展開部２２は、ステップＳ３６の処理による検証結果が合格であるか否かを判定する（ステップＳ３７）。ステップＳ３５の処理によりバッドブロックに書き込まれたｉページ目のデータの検証結果が不合格である場合には（ステップＳ３７、Ｎｏ）、退避・展開部２２は、ステップＳ３４の処理を実行する。これにより、退避・展開部２２は、ｉページ目のデータの検証結果が不合格である場合には、当該ｉページ目のデータの書き込み先のバッドブロックを別のバッドブロックに変更することになる。
【００５１】
ステップＳ３５の処理によりバッドブロックに書き込まれたｉページ目のデータの検証結果が合格である場合には（ステップＳ３７、Ｙｅｓ）、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を構成する全てのデータのバッドブロックへの書き込みが完了したか否かを判定する（ステップＳ３８）。バッドブロックへの書き込みが行われていないデータが存在する場合には（ステップＳ３８、Ｎｏ）、退避・展開部２２は、ループインデックスｉを１だけインクリメントし（ステップＳ３９）、ステップＳ３３の処理を実行する。これにより、退避・展開部２２は、ｉページ目のデータの検証結果が合格である場合には、ｉ＋１ページ目のデータ、言い換えるとｉページ目のデータに後続するデータを、ｉページ目のデータと同一のバッドブロックの後続のワードライン（即ち物理アドレスが後続するページ）に書き込む。
【００５２】
バッドブロックへの書き込みが行われていないデータが存在しない場合には（ステップＳ３８、Ｙｅｓ）、退避・展開部２２は、第２の実施形態の管理テーブル多重化処理を終了する。
【００５３】
図１０は、管理テーブル格納領域１２の構成例を説明する図であり、図１１は、第２の実施形態のバックアップテーブル格納領域１３の構成例を説明する図である。図１０に示すようにアドレス管理テーブル１２１が１つのブロック１２０により保持されるサイズを有する場合には、図１１に示すように、バックアップテーブル１３１は、第２の実施形態の管理テーブル多重化処理により、複数（ここでは２つ）のバックアップテーブル１３１ａ、１３１ｂに分割され、分割されたバックアップテーブル１３１ａ、１３１ｂは、夫々、バッドブロック１３０ａ、１３０ｂに夫々格納される。なお、バッドブロック１３０ａ、１３０ｂに描画されている斜線部分は、故障している箇所を示す。即ち、第２の実施形態によれば、バックアップテーブル１３１は、バッドブロック１３０ａの故障している箇所の直前まで書き込まれてバックアップテーブル１３１ａが生成され、残りの部分であるバックアップテーブル１３１ｂがバッドブロック１３０ｂの故障していない箇所に書き込まれる。
【００５４】
なお、ここでは、退避・展開部２２は、バックアップテーブル１３１を構成するデータをページサイズ（ワードラインのサイズ）毎にバッドブロックに書き込んで、書き込んだページサイズのデータを検証する、として説明したが、退避・展開部２２によりバッドブロックへ書き込まれ、検証されるデータの単位サイズは、ブロックサイズよりも小さければページサイズに等しくなくても構わない。例えば、退避・展開部２２によりバッドブロックに書き込まれ、検証されるデータの単位サイズは、ページサイズの自然数倍であってもよい。
【００５５】
このように、第２の実施形態によれば、ＳＳＤ１００は、バックアップテーブル１３１をブロックサイズよりも小さい単位サイズの構成データ毎にバッドブロックに書き込む。そして、ＳＳＤ１００は、構成データをバッドブロックに書き込んだ後に当該バッドブロックに書き込まれた構成データを検証する。検証結果が合格である場合、ＳＳＤ１００は、当該構成データに後続する構成データを同一のバッドブロックの後続する物理アドレスに格納する。構成データの検証結果が不合格である場合、ＳＳＤ１００は、当該検証結果が不合格の構成データを別のバッドブロックに書き込む。これにより、ＳＳＤ１００は、部分的に故障しているバッドブロックの故障していない部分をバックアップテーブル１３１の格納先として活用することができるようになる。即ち、バッドブロックを効率的に使用することができるようになる。
【００５６】
（第３の実施形態）
第３の実施形態によれば、バッドブロックを構成するワードラインのうちの全てを検証して、検証結果が合格となったワードラインにバックアップテーブルを格納することができる。
【００５７】
第３の実施形態のＳＳＤの構成は、第１の実施形態と同様であるので、第３の実施形態のＳＳＤの構成要素については、第１の実施形態と同様の名称および符号を用い、重複する説明を省略する。
【００５８】
第３の実施形態のＳＳＤ１００の動作は、管理データ多重化処理のみ第１の実施形態と異なっている。
【００５９】
図１２は、第３の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部２２は、バッドブロックプール１４からバッドブロックを１つ取得する（ステップＳ４１）。そして、退避・展開部２２は、ステップＳ４３〜ステップＳ４９のループ処理で使用するループインデックスｉを１で初期化して（ステップＳ４２）、ステップＳ４１の処理により取得したバッドブロックに空きページが存在するか否かを判定する（ステップＳ４３）。なお、ステップＳ４３の処理における空きページとは、後述のステップＳ４５の処理による書き込みが一度も試みられていないページをいう。バッドブロックに空きページが存在しない場合（ステップＳ４３、Ｎｏ）、退避・展開部２２は、バッドブロックプール１４から別のバッドブロックを取得し（ステップＳ４４）、ステップＳ４３の判定処理を再び実行する。バッドブロックに空きページがある場合（ステップＳ４３、Ｙｅｓ）、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を構成するデータのうちのｉページ目をバッドブロックの空きページに書き込む（ステップＳ４５）。そして、退避・展開部２２は、ステップＳ４５の処理によりバッドブロックに書き込まれたｉページ目のデータをＤＲＡＭ４に読み出して検証する（ステップＳ４６）。なお、ステップＳ４６の処理における検証方法は、ステップ２３の処理における検証方法と同じであってよい。
【００６０】
続いて、退避・展開部２２は、ステップＳ４６の処理による検証結果が合格であるか否かを判定する（ステップＳ４７）。ステップＳ４５の処理によりバッドブロックに書き込まれたｉページ目のデータの検証結果が不合格である場合には（ステップＳ４７、Ｎｏ）、退避・展開部２２は、ステップＳ４３の処理を実行する。ステップＳ４３〜ステップＳ４７、Ｎｏのループ処理が繰り返されることにより、バッドブロックのうちの使用可能なワードラインにアドレス管理テーブル１２１を構成するデータが書き込まれてゆく。即ち、退避・展開部２２は、ｉページ目のデータの検証結果が不合格である場合、当該ｉページ目のデータの書き込み先を同一のバッドブロックの後続する物理アドレスに変更する。
【００６１】
ステップＳ４５の処理によりバッドブロックに書き込まれたｉページ目のデータの検証結果が合格である場合には（ステップＳ４７、Ｙｅｓ）、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を構成する全てのデータのバッドブロックへの書き込みが完了したか否かを判定する（ステップＳ４８）。バッドブロックへの書き込みが行われていないデータが存在する場合には（ステップＳ４８、Ｎｏ）、退避・展開部２２は、ループインデックスｉを１だけインクリメントし（ステップＳ４９）、ステップＳ４３の処理を実行する。バッドブロックへの書き込みが行われていないデータが存在しない場合には（ステップＳ４８、Ｙｅｓ）、退避・展開部２２は、第３の実施形態の管理テーブル多重化処理を終了する。
【００６２】
図１３は、第３の実施形態のバックアップテーブル格納領域１３の構成例を説明する図である。図示するように、バッドブロック１３０ａ、１３０ｂの使用可能な領域に分割されてバックアップテーブル１３１ｃ〜１３１ｆが保持されている。特に、第３の実施形態によれば、バックアップテーブル１３１ｄ、１３１ｆのように、バッドブロックの先頭から故障部分を隔てて存在する使用可能な領域が存在する場合でも、これらの領域にバックアップテーブルを保持することができる。
【００６３】
このように、第３の実施形態によれば、ＳＳＤ１００は、アドレス管理テーブル１２１を構成する単位サイズの構成データをバッドブロックに書き込んだ後に当該バッドブロックに書き込まれた構成データを検証する。検証結果が合格である場合、ＳＳＤ１００は、当該構成データに後続する構成データを同一のバッドブロックの後続する物理アドレスに格納する。構成データの検証結果が不合格である場合、ＳＳＤ１００は、当該検証結果が不合格の構成データの書き込み先を同一のバッドブロックの後続する物理アドレスに変更する。これにより、ＳＳＤ１００は、部分的に故障しているバッドブロックの故障していない部分を第２の実施形態よりもさらに効率的にバックアップテーブル１３１の格納先として活用することができるようになる。
【００６４】
（第４の実施形態）
第４の実施形態のＳＳＤの構成は、第１の実施形態と同様であるので、第４の実施形態のＳＳＤの構成要素については、第１の実施形態と同様の名称および符号を用い、重複する説明を省略する。
【００６５】
図１４は、第４の実施形態のバックアップテーブル格納領域１３の構成例を説明する図である。本図において、バックアップテーブル１３１ｇおよびバックアップテーブル１３１ｈは、同一のアドレス管理テーブル１２１から生成された複製データである。即ち、バックアップテーブル１３１が多重化される。そして、本図に示すように、バックアップテーブル１３１ｇ、１３１ｈは、ワードラインが使用可能であるか故障しているかに関係なくバッドブロック１３０ａ、１３１ｂに夫々書き込まれており、管理テーブル格納領域１２に格納されているアドレス管理テーブル１２１が破損してバックアップテーブル１３１が必要となったとき、バックアップテーブル１３１ｇ、１３１ｈのうちの使用可能な部分に書き込まれた部分データをＤＲＡＭ４にロードする。
【００６６】
第４の実施形態のＳＳＤ１００の動作は、管理データ多重化処理と、電源オン時の動作とが第１の実施形態と異なっている。
【００６７】
図１５は、第４の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部２２は、ステップＳ５２〜ステップＳ５５のループ処理で使用するループインデックスｉを１で初期化して（ステップＳ５１）、バッドブロックプール１４からバッドブロックを１つ取得する（ステップＳ５２）。そして、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１を構成するデータを、所定のサイズ毎に誤り検出符号を付して、ステップＳ５２の処理により取得したバッドブロックに書き込む（ステップＳ５３）。ステップＳ５３にてアドレス管理テーブル１２１を構成するデータに付与される誤り検出符号は、どのような符号であってもよい。この誤り検出符号は、例えば、チェックサム、ハミング符号、ＢＣＨ（Bose  Chaudhuri  Hocqenghem）符号、ＲＳ（Reed  Solomon）符号、或いはＬＤＰＣ（Low  Density  Parity  Check）符号、ハッシュデータ等であってよい。そして、退避・展開部２２は、ループインデックスｉが予め設定された自然数であるＮに等しいか否かを判定する（ステップＳ５４）。自然数Ｎは、バックアップテーブル１３１を何重に多重化するかを記述した値であって、例えばバックアップテーブル１３１が３重化される場合にはＮ＝３が設定される。ループインデックスｉがＮと等しくない場合（ステップＳ５４、Ｎｏ）、退避・展開部２２は、ループインデックスＮを１だけインクリメントして（ステップＳ５５）、ステップＳ５２の処理を実行する。ループインデックスｉがＮと等しい場合（ステップＳ５５、Ｙｅｓ）、退避・展開部２２は、第４の実施形態の管理テーブル多重化処理を終了する。
【００６８】
これにより、バックアップテーブル１３１は、Ｎ重に多重化されて保持される。
【００６９】
図１６は、第４の実施形態のＳＳＤ１００の電源オン時の動作を説明するフローチャートである。ＳＳＤ１００が電源オンされた時には、退避・展開部２２は、アドレス管理テーブル１２１をＮＡＮＤメモリ１から読み出して、読み出したアドレス管理テーブル１２１をＤＲＡＭ４に展開する（ステップＳ６１）。ここで、アドレス管理テーブル１２１がＮＡＮＤメモリ１から読み出された際に、ＥＣＣ回路５１、またはＥＣＣ回路５１およびＥＣＣ回路６により、エラーの検出と訂正とが行われる。退避・展開部２２は、ＥＣＣ回路６を用いても訂正不可能なエラーがあるか否かを判定する（ステップＳ６２）。ＥＣＣ回路６を用いても訂正不可能なエラーがあった場合には（ステップＳ６２、Ｙｅｓ）、退避・展開部２２は、ステップＳ６４〜ステップＳ６７のループ処理で使用するループインデックスｉを１で初期化して（ステップＳ６３）、バックアップテーブル格納領域１３を構成するｉ番目のバッドブロックに格納されているバックアップテーブル１３１の、ステップＳ６２にて訂正不可能なエラーが含まれていた箇所に該当する部分を読み出して、当該部分を検証する（ステップＳ６４）。なおここで読み出されて検証される部分は、ステップＳ５３にて誤り検出符号が付与された単位の部分データであって、検証は、当該部分データに付与されている誤り検出符号が用いられる。
【００７０】
続いて、退避・展開部２２は、部分データの検証結果が合格であるか否かを判定する（ステップＳ６５）。部分データの検証結果が不合格であった場合（ステップＳ６５、Ｎｏ）、退避・展開部２２は、ループインデックスｉがステップＳ５４で用いた値と同じ自然数Ｎと等しいか否かを判定する（ステップＳ６６）。ループインデックスｉがＮと等しくない場合（ステップＳ６６、Ｎｏ）、退避・展開部２２は、ループインデックスｉを１だけインクリメントして（ステップＳ６７）、ステップＳ６４の処理を実行する。ループインデックスｉがＮと等しい場合（ステップＳ６６、Ｙｅｓ）、起動エラーとなる。
【００７１】
部分データの検証結果が合格であった場合（ステップＳ６５、Ｙｅｓ）、退避・展開部２２は、ＤＲＡＭ４上のアドレス管理テーブル１２１のエラー部分を当該部分データで置き換えて（ステップＳ６８）、電源オン時の動作を終了する。また、アドレス管理テーブル１２１に訂正不可のエラーがなかった場合（ステップＳ６２、Ｎｏ）、退避・展開部２２は、電源オン時の動作を終了する。
【００７２】
このように、第４の実施形態によれば、ＳＳＤ１００は、バックアップテーブル１３１を複数用意し、アドレス管理テーブル１２１が破損した場合、バックアップテーブル１３１毎にバックアップテーブル１３１が含む前記破損した部分に対応する部分データを検証し、検証結果が合格である場合、前記破損した部分に替えて前記検証結果が合格である部分データをＤＲＡＭ４に書き込む、ようにしたので、バックアップテーブル１３１を用意する際に第１〜第３の実施形態では必要としたバックアップテーブル１３１を検証する動作が必要なくなくので、電源オフ時の処理コストを低減することができる。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１  ＮＡＮＤメモリ、２  ＣＰＵ、３  ホストＩ／Ｆ、４  ＤＲＡＭ、５  ＮＡＮＤＣ、６  ＥＣＣ回路、１０  ユーザデータ格納領域、１１  ファームウェアプログラム格納領域、１２  管理テーブル格納領域、１３  バックアップテーブル格納領域、１４  バッドブロックプール、１５  フリーブロックプール、２１  アドレス管理部、２２  退避・展開部、５１  ＥＣＣ回路、１００  ＳＳＤ、１１１、１１２  ファームウェアプログラム、１２０  ブロック、１２１  アドレス管理テーブル、１３０ａ、１３０ｂ  バッドブロック、１３１、１３１ａ〜１３１ｈ  バックアップテーブル、２００  ホスト装置。
【図１】
2013196674.tif 000003
【図２】
2013196674.tif 000004
【図３】
2013196674.tif 000005
【図４】
2013196674.tif 000006
【図５】
2013196674.tif 000007
【図６】
2013196674.tif 000008
【図７】
2013196674.tif 000009
【図８】
2013196674.tif 000010
【図９】
2013196674.tif 000011
【図１０】
2013196674.tif 000012
【図１１】
2013196674.tif 000013
【図１２】
2013196674.tif 000014
【図１３】
2013196674.tif 000015
【図１４】
2013196674.tif 000016
【図１５】
2013196674.tif 000017
【図１６】
2013196674.tif 000018