(57)【特許請求の範囲】
【請求項１】
コンピュータシステムの外部記憶装置として用いられる半導体記憶装置内に配置された不揮発性メモリ内における物理ブロックアドレスを、アドレス値の小さい値から順番に第１の所定数ずつ抽出して物理ブロックアドレスグループを生成する第１のグループ生成ステップと、
前記物理ブロックアドレスグループの中にバッドブロックの物理ブロックアドレスが含まれている場合に、前記バッドブロックよりも後の最初のグッドブロックの物理ブロックアドレスを次の物理ブロックアドレスグループの先頭の物理ブロックアドレスに設定して、前記次の物理ブロックアドレスグループを生成する第２のグループ生成ステップと、
前記物理ブロックアドレスグループのそれぞれに対し、最初のバッドブロック以降の物理ブロックアドレスを全てバッドブロックに設定する第１のバッドブロック設定ステップと、
前記物理ブロックアドレスグループの全体から前記グッドブロックの多い順番で前記物理ブロックアドレスグループを第２の所定数ずつ抽出して物理ブロックアドレスグループ群を生成するグループ群生成ステップと、
生成した物理ブロックアドレスグループ群のそれぞれに対し、各物理ブロックアドレスグループ内におけるバッドブロックの連続数および先頭からのグッドブロックの連続数が、前記物理ブロックアドレスグループ群内の中で最もグッドブロックが少ない物理ブロックアドレスグループと同じ値となるよう前記各物理ブロックアドレスグループにバッドブロックを設定する第２のバッドブロック設定ステップと、
ホスト装置から指定される論理アドレスに対応する前記不揮発性メモリ内の論理ブロックアドレスを用いて設定された複数の連続した論理ブロックアドレスである論理ブロックアドレスグループと、前記物理ブロックアドレスグループ群と、を対応付けしたアドレス管理テーブルを生成するテーブル生成ステップと、
前記論理ブロックアドレスグループ内の各論理ブロックアドレスがグッドブロックであるか否かを示す有効性情報を前記論理ブロックアドレスに設定した有効性管理テーブルを、前記物理ブロックアドレスがグッドブロックであるか否かに基づいて生成する有効性設定ステップと、
前記第２のバッドブロック設定ステップでバッドブロックに設定された物理ブロックアドレスを用いて、前記物理ブロックアドレスグループを生成する第３のグループ生成ステップと、
を含み、
前記第３のグループ生成ステップで生成した物理ブロックアドレスグループに対し、前記第２のグループ生成ステップ、前記第１のバッドブロック設定ステップ、前記グループ群生成ステップ、前記第２のバッドブロック設定ステップ、前記テーブル生成ステップ、前記有効性設定ステップおよび前記第３のグループ生成ステップを繰り返すことを特徴とする管理情報生成方法。
【請求項２】
コンピュータシステムの外部記憶装置として用いられる半導体記憶装置内に配置された不揮発性メモリ内における物理ブロックアドレスを、アドレス値の小さい値から順番に第１の所定数ずつ抽出して物理ブロックアドレスグループを生成する第１のグループ生成ステップと、
前記物理ブロックアドレスグループの中にバッドブロックの物理ブロックアドレスが含まれている場合に、前記バッドブロックよりも後の最初のグッドブロックの物理ブロックアドレスを次の物理ブロックアドレスグループの先頭の物理ブロックアドレスに設定して、前記次の物理ブロックアドレスグループを生成する第２のグループ生成ステップと、
前記物理ブロックアドレスグループのそれぞれに対し、最初のバッドブロック以降の物理ブロックアドレスを全てバッドブロックに設定する第１のバッドブロック設定ステップと、
前記物理ブロックアドレスグループの全体から前記グッドブロックの多い順番で前記物理ブロックアドレスグループを第２の所定数ずつ抽出して物理ブロックアドレスグループ群を生成するグループ群生成ステップと、
生成した物理ブロックアドレスグループ群のそれぞれに対し、各物理ブロックアドレスグループ内におけるバッドブロックの連続数および先頭からのグッドブロックの連続数が、前記物理ブロックアドレスグループ群内の中で最もグッドブロックが少ない物理ブロックアドレスグループと同じ値となるよう前記各物理ブロックアドレスグループにバッドブロックを設定する第２のバッドブロック設定ステップと、
ホスト装置から指定される論理アドレスに対応する前記不揮発性メモリ内の論理ブロックアドレスを用いて設定された複数の連続した論理ブロックアドレスである論理ブロックアドレスグループと、前記物理ブロックアドレスグループ群と、を対応付けしたアドレス管理テーブルを生成するテーブル生成ステップと、
を含むことを特徴とする管理情報生成方法。
【請求項３】
前記論理ブロックアドレスグループ内の各論理ブロックアドレスがグッドブロックであるか否かを示す有効性情報を前記論理ブロックアドレスに設定した有効性管理テーブルを、前記物理ブロックアドレスがグッドブロックであるか否かに基づいて生成する有効性設定ステップと、
前記第２のバッドブロック設定ステップでバッドブロックに設定された物理ブロックアドレスを用いて、前記物理ブロックアドレスグループを生成する第３のグループ生成ステップと、
をさらに含み、
前記第３のグループ生成ステップで生成した物理ブロックアドレスグループに対し、前記第２のグループ生成ステップ、前記第１のバッドブロック設定ステップ、前記グループ群生成ステップ、前記第２のバッドブロック設定ステップおよび前記テーブル生成ステップを行うことを特徴とする請求項２に記載の管理情報生成方法。
【請求項４】
前記論理ブロックアドレスグループ内の各論理ブロックアドレスがグッドブロックであるか否かを示す有効性情報を前記論理ブロックアドレスに設定した有効性管理テーブルを、前記物理ブロックアドレスがグッドブロックであるか否かに基づいて生成する有効性設定ステップと、
前記第２のバッドブロック設定ステップでバッドブロックに設定された物理ブロックアドレスを用いて、前記物理ブロックアドレスグループを生成する第３のグループ生成ステップと、
をさらに含み、
前記第３のグループ生成ステップで生成した物理ブロックアドレスグループに対し、前記第２のグループ生成ステップ、前記第１のバッドブロック設定ステップ、前記グループ群生成ステップ、前記第２のバッドブロック設定ステップ、前記テーブル生成ステップ、前記有効性設定ステップおよび前記第３のグループ生成ステップを繰り返すことを特徴とする請求項２に記載の管理情報生成方法。
【請求項５】
不揮発性メモリと、
ホスト装置から指定された論理アドレスに基づいて、前記不揮発性メモリに対してデータの読み出し／書き込み制御を行うコントローラと、
を備え、
前記コントローラは、
前記論理アドレスに対応する前記不揮発性メモリ内の論理ブロックアドレスと当該論理ブロックアドレスに対応する前記不揮発性メモリ内の物理ブロックアドレスとが対応付けされたアドレス管理テーブルを構築するテーブル構築部を有し、
前記不揮発性メモリは、前記アドレス管理テーブルを記憶するとともに、前記コントローラは、前記アドレス管理テーブルを用いて前記不揮発性メモリに対するデータの読み出し／書き込み制御を行ない、
前記テーブル構築部は、
前記物理ブロックアドレスを、アドレス値の小さい値から順番に第１の所定数ずつ抽出して物理ブロックアドレスグループを生成し、
前記物理ブロックアドレスグループの中にバッドブロックの物理ブロックアドレスが含まれている場合に、前記バッドブロックよりも後の最初のグッドブロックの物理ブロックアドレスを次の物理ブロックアドレスグループの先頭の物理ブロックアドレスに設定して、前記次の物理ブロックアドレスグループを生成し、
前記物理ブロックアドレスグループのそれぞれに対し、最初のバッドブロック以降の物理ブロックアドレスを全てバッドブロックに設定し、
前記物理ブロックアドレスグループの全体から前記グッドブロックの多い順番で前記物理ブロックアドレスグループを第２の所定数ずつ抽出して物理ブロックアドレスグループ群を生成し、
生成した物理ブロックアドレスグループ群のそれぞれに対し、前記物理ブロックアドレスグループ群の各物理ブロックアドレスグループの先頭からのグッドブロックの連続数およびバッドブロックの連続数が、前記物理ブロックアドレスグループ群の中で最もグッドブロックが少ない物理ブロックアドレスグループと同じ値となるよう前記各物理ブロックアドレスグループにバッドブロックを設定し、
ホスト装置から指定される論理アドレスに対応する前記不揮発性メモリ内の論理ブロックアドレスを用いて設定された複数の連続した論理ブロックアドレスである論理ブロックアドレスグループと、前記物理ブロックアドレスグループ群と、を対応付けしたアドレス管理テーブルを生成することを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、管理情報生成方法およびメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性半導体記憶装置であるＮＡＮＤフラッシュメモリの大容量化が進行し、このＮＡＮＤフラッシュメモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。
【０００３】
従来、ＳＳＤでは、揮発性メモリ上の管理テーブルをそのままを不揮発性メモリであるＮＡＮＤフラッシュメモリへ記憶させていた。しかしながら、管理テーブルのサイズが大きい場合、大きなメモリサイズの揮発性メモリが必要となる。また、管理テーブルのサイズが大きい場合、ＮＡＮＤフラッシュメモリから揮発性メモリへの読み込みに長時間を要する。このため、管理テーブルのサイズを縮小化することが望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１１２３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、小さいサイズの管理テーブルで不揮発性メモリ内のデータを管理できる管理情報生成方法およびメモリシステムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、コンピュータシステムの外部記憶装置として用いられる半導体記憶装置内に配置された不揮発性メモリ内における物理ブロックアドレスを、アドレス値の小さい値から順番に第１の所定数ずつ抽出して物理ブロックアドレスグループを生成する。さらに、前記物理ブロックアドレスグループの中にバッドブロックの物理ブロックアドレスが含まれている場合に、前記バッドブロックよりも後の最初のグッドブロックの物理ブロックアドレスを次の物理ブロックアドレスグループの先頭の物理ブロックアドレスに設定して、前記次の物理ブロックアドレスグループを生成する。そして、前記物理ブロックアドレスグループのそれぞれに対し、最初のバッドブロック以降の物理ブロックアドレスを全て第１のバッドブロックに設定する。さらに、前記物理ブロックアドレスグループの全体から前記グッドブロックの多い順番で前記物理ブロックアドレスグループを第２の所定数ずつ抽出して物理ブロックアドレスグループ群を生成する。生成した物理ブロックアドレスグループ群のそれぞれに対し、各物理ブロックアドレスグループ内におけるバッドブロックの連続数および先頭からのグッドブロックの連続数が、前記物理ブロックアドレスグループ群内の中で最もグッドブロックが少ない物理ブロックアドレスグループと同じ値となるよう前記各物理ブロックアドレスグループに第２のバッドブロックを設定する。ホスト装置から指定される論理アドレスに対応する前記不揮発性メモリ内の論理ブロックアドレスを用いて設定された複数の連続した論理ブロックアドレスである論理ブロックアドレスグループと、前記物理ブロックアドレスグループ群と、を対応付けしたアドレス管理テーブルを生成する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態に係るＳＳＤの構成例を示すブロック図である。
【図２】図２は、ＳＳＤ内で行われるアドレス変換を説明するための図である。
【図３】図３は、第１の実施形態に係るＢＡ変換テーブルと有効性管理テーブルの構成例を示す図である。
【図４】図４は、ＮＡＮＤメモリ内からのデータ読み出し処理手順を示すフローチャートである。
【図５】図５は、第２の実施形態に係るＢＡ変換テーブルの構築処理手順を示すフローチャートである。
【図６】図６は、第２の実施形態に係るＢＡ変換テーブルの構築前段処理を説明するための図である。
【図７】図７は、第２の実施形態に係るＢＡ変換テーブルの構築後段処理を説明するための図である。
【図８】図８は、第２の実施形態に係るＢＡ変換テーブルと有効性管理テーブルの構成例を示す図である。
【図９】図９は、ＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。
【図１０】図１０は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態に係る管理情報生成方法およびメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
【００１０】
図１は、第１の実施形態に係るＳＳＤの構成例を示すブロック図である。半導体記憶装置（メモリシステム）としてのＳＳＤ（Solid  State  Drive）１は、コンピュータシステムに用いられる外部記憶装置であり、ＲＡＭ２と、実際にデータを記憶するＮＡＮＤメモリ４（不揮発性メモリ）と、コントローラ３と、を備えている。
【００１１】
ＲＡＭ２は、ホスト装置１０、コントローラ３、ＮＡＮＤメモリ４に接続されている。また、ＮＡＮＤメモリ４は、コントローラ３、ＲＡＭ２に接続されている。そして、コントローラ３は、ホスト装置１０、ＲＡＭ２、ＮＡＮＤメモリ４に接続されている。
【００１２】
ＲＡＭ２は、例えばＳＲＡＭ、ＤＲＡＭ、ＦＥＲＡＭなどのメモリである。ＲＡＭ２は、ホスト装置１０から送られてくるデータを一時的に記憶するとともに、記憶したデータをＮＡＮＤメモリ４に送る。また、ＲＡＭ２は、ホスト装置１０から読み出し要求のあったデータがＮＡＮＤメモリ４から読み出されると、読み出したデータを一時的に記憶しておく。ＮＡＮＤメモリ４から読み出されてＲＡＭ２に一時的に記憶されたデータは、ホスト装置１０に送られる。
【００１３】
ＲＡＭ２は、ホストアドレス変換テーブル２１、リード・ライトバッファ２２、管理テーブルとしてのＢＡ（Block  Address）変換テーブル２３Ａおよび有効性管理テーブル２４Ａなどを記憶する。ホストアドレス変換テーブル２１は、ホスト装置１０から与えられる論理アドレスと、ＮＡＮＤメモリ４の論理ブロックアドレスとの間の対応関係を示す変換テーブルである。ＮＡＮＤメモリ４の論理ブロックは、ＳＳＤ１内で設定される消去単位であり、１以上の物理ブロックに対応付けられている。
【００１４】
ＢＡ変換テーブル２３Ａは、ＮＡＮＤメモリ４の論理ブロックアドレスと、ＮＡＮＤメモリ４の物理ブロックアドレス（記憶位置）との間の対応関係を示す変換テーブル（アドレス管理テーブル）であり、アドレス管理（読み出し／書き込み制御）に用いられる。物理ブロックは、ＮＡＮＤメモリ４内において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。なお、以下では論理ブロックアドレスを論理ＢＡといい、物理ブロックアドレスを物理ＢＡという。
【００１５】
本実施形態のＢＡ変換テーブル２３Ａでは、アドレス番号が連続している論理ＢＡがグループ化されている。また、アドレス番号が連続している物理ＢＡがグループ化されている。そして、グループ化された論理ＢＡとグループ化された物理ＢＡとが対応付けされている。有効性管理テーブル２４Ａは、論理ＢＡの有効性や消去回数などを論理ＢＡ毎に示すテーブルである。
【００１６】
ホストアドレス変換テーブル２１、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａは、ＳＳＤ１の起動時等の所定タイミングで、ＮＡＮＤメモリ４からＲＡＭ２に展開される。
【００１７】
また、ＮＡＮＤメモリ４内のデータ書き込みやデータ消去等に伴い、ホスト装置１０から与えられる論理アドレスとＮＡＮＤメモリ４の論理ＢＡとの間の対応関係が更新された場合、ＲＡＭ２に展開されたホストアドレス変換テーブル２１が更新される。
【００１８】
ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａは、例えば、ＳＳＤ１を最初に使用する際などに構築される。また、論理ＢＡの有効性や書き換え回数などが更新された場合、ＲＡＭ２に展開された有効性管理テーブル２４Ａが更新される。
【００１９】
リード・ライトバッファ２２は、ＮＡＮＤメモリ４とホスト装置１０との間でデータ転送を行う際に用いられるバッファメモリである。ＮＡＮＤメモリ４から読み出されたデータは、リード・ライトバッファ２２でバッファリングされてホスト装置１０に送られる。また、ホスト装置１０から書き込み要求のあったデータは、リード・ライトバッファ２２でバッファリングされてＮＡＮＤメモリ４に書き込まれる。
【００２０】
コントローラ３は、ＮＡＮＤメモリ４が記憶しているテーブル群（ホストアドレス変換テーブル２１、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａ）を、所定のタイミング（起動時など）でＲＡＭ２に取込むとともに、ＲＡＭ２内のテーブル群を所定のタイミングでＮＡＮＤメモリ４に記憶させる。また、コントローラ３は、ホスト装置１０とＮＡＮＤメモリ４との間でＲＡＭ２を介してデータ転送を行う。
【００２１】
コントローラ３は、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを用いて、ＲＡＭ２、ＮＡＮＤメモリ４を制御することにより、ＮＡＮＤメモリ４に対してデータの読み出し／書き込み制御を行う。コントローラ３は、テーブル構築部（Generator）３１、書き込み制御部３２、読み出し制御部３３、ホストアドレス変換部３４、ブロックアドレス変換部３５を有している。
【００２２】
テーブル構築部３１は、論理ＢＡや物理ＢＡのアドレス番号の連続性を利用して、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを構築する。テーブル構築部３１は、何れのタイミングでＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを構築してもよい。また、テーブル構築部３１は、必要に応じてＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを再構築してもよい。
【００２３】
書き込み制御部３２は、ＲＡＭ２内のホストアドレス変換テーブル２１、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを用いて、ＮＡＮＤメモリ４内へのデータの書き込みを行う。
【００２４】
読み出し制御部３３は、ＲＡＭ２内のホストアドレス変換テーブル２１、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを用いて、ＮＡＮＤメモリ４からのデータの読み出しを行なう。
【００２５】
また、書き込み制御部３２、読み出し制御部３３は、データ転送の際に、テーブル群をＲＡＭ２およびＮＡＮＤメモリ４で更新しながらテーブル群に基づいてＲＡＭ２およびＮＡＮＤメモリ４でのデータ管理を行なう。
【００２６】
ホストアドレス変換部３４は、ホストアドレス変換テーブル２１を用いて論理アドレスを論理ＢＡに変換する。また、ホストアドレス変換部３４は、ホストアドレス変換テーブル２１を用いて論理アドレスを論理ＢＡに変換する。
【００２７】
ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを用いて、論理ＢＡをＮＡＮＤメモリ４内の記憶位置である物理ＢＡに変換する。また、ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａ、有効性管理テーブル２４Ａを用いて、物理ＢＡを論理ＢＡに変換する。
【００２８】
例えば、ＮＡＮＤメモリ４内にデータを書き込む場合、書き込み制御部３２は、有効性管理テーブル２４Ａを参照して、利用されていない有効な論理ブロック（書き込み可能な論理ブロック）を選択する。そして、書き込み制御部３２は、選択した論理ブロックに論理アドレスで指定されたデータを書き込む。さらに、書き込み制御部３２は、選択した論理ブロックの論理ＢＡと論理アドレスとの対応関係を、ホストアドレス変換テーブル２１に登録する。
【００２９】
また、ＮＡＮＤメモリ４内からデータを読み出す場合、読み出し制御部３３は、ホストアドレス変換部３４、ブロックアドレス変換部３５にデータ変換指示を送る。これにより、ホストアドレス変換部３４は、ホストアドレス変換テーブル２１を用いて論理アドレスを論理ＢＡに変換する。
【００３０】
ＳＳＤ１は、図示しないインタフェースを介して、ホスト装置１０からの読み書き指示を受ける。ホスト装置１０とＳＳＤ１との間のインタフェースは、例えば、ＳＡＴＡ（Serial  ATA）規格に準拠するが、これに限定されるものではない。
【００３１】
ＮＡＮＤメモリ４は、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリである。ＮＡＮＤメモリ４は、複数の不揮発性メモリセルが行列上に配置されたメモリセルアレイ及び当該メモリセルアレイに対する書き込み、読み出し、消去動作を制御するための周辺回路を含んでいる。メモリセルアレイは、データ消去の最小単位であるブロックを複数配列して構成されている。各々のブロックは、データ書き込み及び読み出しの最小単位であるページを複数配列して構成されている。各々のメモリセルは、１ビットを記憶するように構成されていてもよいし、２ビット以上を記憶するように構成されていてもよい。ＮＡＮＤメモリ４では、ブロック内の同一ページに対する再書き込みは、一度当該ページを含むブロック全体を消去した後でなければ許可されない。
【００３２】
ホスト装置１０からＳＳＤ１に書き込まれたデータは、所定の管理単位でＮＡＮＤメモリ４に記憶される。論理ＢＡ空間上の連続したアドレスを論物変換（論理ＢＡと物理ＢＡとの変換）の単位として、当該連続したアドレスがまとめてＮＡＮＤメモリ４上の物理的な領域に割り当てられる。管理単位内においては、論理ＢＡが連続する複数のセクタが順に配置されている。管理単位の大きさは任意であるが、例えば、ＮＡＮＤメモリ４のページサイズやブロックサイズ、あるいはホスト装置１０が採用するファイルシステムのクラスタサイズ等に一致させることができる。なお、クラスタサイズは、セクタサイズ以上でブロックサイズ以下である。
【００３３】
ホスト装置１０から書き込まれた更新データが管理単位にアラインされていない場合には、ＮＡＮＤメモリ４上の管理単位の大きさの領域に既に記憶されているデータと、管理単位の大きさに満たない新たに書き込まれた更新データと、がＲＡＭ２上でマージされ、管理単位のデータが作成されたうえでＮＡＮＤメモリ４の空き領域に書き込まれる（リードモディファイライト）。ホスト装置１０から書き込まれたデータがＮＡＮＤメモリ４上のどの論理ＢＡに書き込まれるかは動的に変化するものであり、その対応関係がホストアドレス変換テーブル２１によって管理される。論理アドレスとしては、例えば、論理容量に対してセクタ単位で０から通し番号が付されたＬＢＡ（Logical  Block  Address）が採用される。
【００３４】
ここで、管理単位でアラインされたＬＢＡとＮＡＮＤメモリ４上において管理単位に割り振られているデータ領域との対応関係について説明する。ホスト装置１０が書き込み要求で指定する論理アドレスはセクタ単位であるが、ＳＳＤ１内部では論理アドレスは管理単位の大きさ（例えば、クラスタサイズ）でアラインされる。そして、管理単位内の連続するＬＢＡに対応するセクタが、ＮＡＮＤメモリ４の管理単位の領域にまとめて記憶される。例えば、管理単位の大きさがクラスタサイズに等しい場合、クラスタサイズでアラインされたＬＢＡに対応する複数のセクタが、ＮＡＮＤメモリ４のクラスタサイズ分の領域に書き込まれる。
【００３５】
図２は、ＳＳＤ内で行われるアドレス変換を説明するための図である。論理アドレスで指定されるデータが何れの論理ＢＡに書き込まれているかを示すテーブルがホストアドレス変換テーブル２１である。また、論理ＢＡで示されるデータが、ＮＡＮＤメモリ４内の何れの物理ＢＡに書き込まれているかを示すテーブルがＢＡ変換テーブル２３Ａである。
【００３６】
例えば、ＮＡＮＤメモリ４内にデータを書き込む場合、ホスト装置１０から論理アドレス４１が指定される。書き込み制御部３２は、有効性管理テーブル２４Ａを参照して、利用されていない有効な論理ブロックを選択する。そして、書き込み制御部３２は、選択した論理ブロックに論理アドレスで指定されたデータを書き込む。さらに、書き込み制御部３２は、選択した論理ブロックの論理ＢＡと論理アドレスとの対応関係を、ホストアドレス変換テーブル２１に登録する。さらに、ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａを用いて、論理ＢＡ４２を物理ＢＡ４３に変換する。そして、書き込み制御部３２は、物理ＢＡ４３を含むライトコマンドをＮＡＮＤメモリ４に送る。これにより、論理アドレス４１に対応する物理ＢＡ４３にデータが書き込まれる。
【００３７】
同様に、ＮＡＮＤメモリ４内からデータを読み出す場合、ホスト装置１０から論理アドレス４１が指定される。ホストアドレス変換部３４は、ホストアドレス変換テーブル２１を用いて論理アドレス４１を論理ＢＡ４２に変換する。さらに、ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａを用いて、論理ＢＡ４２を物理ＢＡ４３に変換する。そして、読み出し制御部３３は、物理ＢＡ４３を含むリードコマンドをＮＡＮＤメモリ４に送る。これにより、論理アドレス４１に対応する物理ＢＡ４３からデータが読み出される。
【００３８】
このように、ＳＳＤ１を有したコンピュータシステムでは、ＮＡＮＤメモリ４内のデータにアクセスする際に、ＢＡ変換テーブル２３Ａを用いて、論理ＢＡが物理ＢＡに変換される。
【００３９】
つぎに、本実施形態の特徴の１つであるＢＡ変換テーブル２３Ａについて説明する。図３は、第１の実施形態に係るＢＡ変換テーブルと有効性管理テーブルの構成例を示す図である。図３の（ａ）は、ＢＡ変換テーブル２３Ａを示し、図３の（ｂ）は、有効性管理テーブル２４Ａを示している。
【００４０】
ＢＡ変換テーブル２３Ａでは、アドレスが連続している論理ＢＡと、アドレスが連続している物理ＢＡと、が対応付けされている。具体的には、ＢＡ変換テーブル２３Ａでは、連続した１６ブロック分の論理ＢＡと、連続した１６ブロック分の物理ＢＡと、が対応付けされている。
【００４１】
例えば、テーブル構築部３１は、１６ブロック分の論理ＢＡ「００」〜「１５」を１つの論理ＢＡグループに設定する。換言すると、複数の論理ＢＡが、ＢＡ変換テーブル２３Ａ内の１つのエントリに設定される。図３のＢＡ変換テーブル２３Ａでは、論理ＢＡ「００」〜「１５」のグループを「論理ＢＡ  ００／１５」で示している。
【００４２】
また、テーブル構築部３１は、論理ＢＡ「００」〜「１５」に対応する６４Slot数分の物理ＢＡの組（物理ＢＡグループ群）を論理ＢＡ「００」〜「１５」に対応付けする。物理ＢＡグループ群内の各物理ＢＡグループは、１６ブロック分の物理ＢＡである。したがって、テーブル構築部３１は、例えば１６ブロック分の物理ＢＡを１つの物理ＢＡグループに設定する。
【００４３】
テーブル構築部３１は、例えば、１６ブロック分の物理ＢＡ「ｘ＋０」〜「ｘ＋１５」を１つの物理ＢＡグループに設定し、１６ブロック分の物理ＢＡ「ｖ＋０」〜「ｖ＋１５」を１つの物理ＢＡグループに設定する。
【００４４】
そして、テーブル構築部３１は、論理ＢＡ「００」〜「１５」のSlot「００」に対応する物理ＢＡグループに物理ＢＡ「ｘ＋０」〜「ｘ＋１５」を割り当てる。また、テーブル構築部３１は、論理ＢＡ「００」〜「１５」のSlot「６３」に対応する物理ＢＡグループに物理ＢＡ「ｖ＋０」〜「ｖ＋１５」を割り当てる。
【００４５】
ＢＡ変換テーブル２３Ａには、例えば、物理ＢＡ「ｘ＋０」〜「ｘ＋１５」や物理ＢＡ「ｖ＋０」〜「ｖ＋１５」の先頭アドレスが登録される。図３の（ａ）では、物理ＢＡ「ｘ＋０」〜「ｘ＋１５」の物理ＢＡグループを物理ＢＡ「ｘ」で示している。また、図３の（ａ）では物理ＢＡ「ｖ＋０」〜「ｖ＋１５」の物理ＢＡグループを物理ＢＡ「ｖ」で示している。
【００４６】
同様に、テーブル構築部３１は、１６ブロック分の論理ＢＡ「Ｎ」〜「Ｎ＋１５」（Ｎは１６の倍数）を１つの論理ＢＡグループに設定する。そして、テーブル構築部３１は、ＢＡ変換テーブル２３Ａ内の各Slotに、１６ブロック分の物理ＢＡを１つの物理ＢＡグループとして登録する。このように、テーブル構築部３１は、各Slotの物理ＢＡグループと、論理ＢＡグループと、を対応付けしてＢＡ変換テーブル２３Ａに登録する。
【００４７】
なお、図３のＢＡ変換テーブル２３Ａでは、論理ＢＡ「００」〜「１５」やSlot「００」などのインデックスを示したが、インデックスは省略してもよい。この場合、各論理ＢＡグループが１６ブロック分の論理ＢＡを含み、かつ各論理ＢＡグループのSlot数が６４であることを前提に、ＢＡ変換テーブル２３Ａ内から物理ＢＡが読み出される。
【００４８】
物理ＢＡの中には、誤りが多いなど記憶領域として使用できないバッドブロックが含まれている。例えば、消去エラーやプログラムエラー（書き込み失敗）によって、物理ブロックがバッドブロックとなる場合がある。
【００４９】
図３の（ｂ）に示す有効性管理テーブル２４Ａは、各論理ブロックの有効性を管理するテーブルである。有効性管理テーブル２４Ａでは、各論理ブロックの論理ＢＡと、有効性を示す情報（有効性情報）と、が対応付けされている。有効性を示す情報が「有効」である論理ブロックは、正常な論理ブロック（グッドブロック）であり、有効性を示す情報が「無効」である論理ブロックは、バッドブロックである。
【００５０】
例えば、物理ＢＡ「００」〜「１５」のSlot「６３」に対応する物理ＢＡ「ｖ＋１」がバッドブロックである場合、物理ＢＡ「ｖ＋１」に対応する論理ＢＡ「０１」が有効性管理テーブル２４Ａ内に「無効」として登録される。なお、有効性管理テーブル２４Ａには、各論理ＢＡグループの消去回数などを登録しておいてもよい。
【００５１】
ここで、ＮＡＮＤメモリ４内からのデータ読み出し処理手順について説明する。図４は、ＮＡＮＤメモリ内からのデータ読み出し処理手順を示すフローチャートである。ホスト装置１０は、リードコマンドと、データ読み出し対象の論理アドレス４１を、ＳＳＤ１のコントローラ３に送る。
【００５２】
コントローラ３のホストアドレス変換部３４は、ホストアドレス変換テーブル２１を用いて論理アドレス４１を論理ＢＡ４２に変換する（ステップＳ１０）。このとき、ホストアドレス変換部３４は、論理アドレス４１を、論理ＢＡ４２と論理ブロック内のオフセットと、に変換する。オフセットの値は、Slotの位置を算出される際に用いられる値であり、オフセットの単位は、ＳＳＤ１内のデータ管理単位である。ホストアドレス変換部３４は、オフセットの値を用いてSlot位置Ｃ（Ｃは、００〜６３の何れか）を算出しておく。
【００５３】
さらに、ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａを用いて、論理ＢＡ４２を物理ＢＡ４３に変換する。具体的には、ブロックアドレス変換部３５は、論理ＢＡを１６で割った値「Ａ」と余り「Ｂ」を算出する（ステップＳ２０）。そして、ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａの「Ａ＋１」段目を物理ＢＡの読み出し対象位置に設定する。ブロックアドレス変換部３５は、ＢＡ変換テーブル２３Ａから「Ａ＋１」段目でSlot位置Ｃの物理ＢＡを読み出す（ステップＳ３０）。ブロックアドレス変換部３５は、読み出した物理ＢＡに「Ｂ」を足した値を、読み出し対象の物理ＢＡ４３として算出する（ステップＳ４０）。
【００５４】
ブロックアドレス変換部３５によって算出された物理ＢＡ４３が、ホスト装置１０から送られてきた論理アドレス４１に対応する物理ＢＡとなる。読み出し制御部３３は、物理ＢＡ４３を含むリードコマンドをＮＡＮＤメモリ４に送る。これにより、論理アドレス４１に対応する物理ＢＡ４３のデータが読み出される。
【００５５】
なお、本実施の形態では、論理ＢＡグループや物理ＢＡグループを１６個のブロックアドレス群で構成する場合について説明したが、論理ＢＡグループや物理ＢＡグループは、２個以上のブロックアドレス群で構成すればよい。
【００５６】
また、本実施の形態では、論理ＢＡグループに６４個のSlotを割り当てる場合について説明したが、論理ＢＡグループに割り当てるSlotは、６４個未満であってもよいし、６５個以上であってもよい。
【００５７】
このように第１の実施形態によれば、ＢＡ変換テーブル２３Ａ内で、アドレスが連続している論理ＢＡと、アドレスが連続している物理ＢＡと、が対応付けされているので、ＢＡ変換テーブル２３Ａを効率良く圧縮できる。したがって、ＳＳＤ１に必要なＲＡＭ２のメモリ容量を減らすことが可能となる。
【００５８】
また、ＮＡＮＤメモリ４やＲＡＭ２内に記憶させるＢＡ変換テーブル２３Ａのサイズが小さくなるので、ＳＳＤ１を長寿命化することが可能となる。また、ＮＡＮＤメモリ４に記憶させるＢＡ変換テーブル２３Ａのサイズが小さくなるので、ＢＡ変換テーブル２３Ａの、ＮＡＮＤメモリ４への書き込み、読み出しに必要な時間を短縮することが可能となる。
【００５９】
また、ＢＡ変換テーブル２３Ａのサイズが小さくなるので、ＳＳＤ１の起動時間やスタンバイ状態への移行時間を短縮することが可能となる。また、論理ＢＡから物理ＢＡへのブロックアドレス変換コストを抑制することが可能となる。また、論理ブロックの数を増やすことなく、ＢＡ変換テーブル２３Ａを構築できる。
【００６０】
また、ＢＡ変換テーブル２３Ａを用いることにより、論理ＢＡと物理ＢＡとの間のアドレス変換が速くなる（圧縮していない場合と比べてアドレス変換が遅くならない）。
【００６１】
（第２の実施形態）
つぎに、図５〜図９を用いてこの発明の第２の実施形態について説明する。第２の実施形態では、グッドブロック数が略同数の物理ＢＡグループを集めて１つの論理ＢＡグループに対応付ける。
【００６２】
図５は、第２の実施形態に係るＢＡ変換テーブルの構築処理手順を示すフローチャートである。また、図６は、第２の実施形態に係るＢＡ変換テーブルの構築処理（前段処理）を説明するための図であり、図７は、第２の実施形態に係るＢＡ変換テーブルの構築処理（後段処理）を説明するための図である。
【００６３】
図６に示すように、テーブル構築部３１は、ＮＡＮＤメモリ４にアクセスし、ＮＡＮＤメモリ４の物理ブロックの状態（有効／無効）を示す物理ブロック状態５１を、物理ＢＡ毎に読み出す（ステップＳ１１０）。を読み出す。物理ブロック状態５１では、物理ＢＡの順番で各物理ブロックの有効／無効が示されている。図６では、物理ブロック状態５１において、物理ＢＡ「０２」，「２４」，「３１」の各物理ブロックがバッドブロック（無効）である場合を示している。
【００６４】
テーブル構築部３１は、物理ブロック状態５１に基づいて、物理ＢＡグループを生成し、物理ＢＡグループを整理する（ステップＳ１２０）。例えば、テーブル構築部３１は、物理ＢＡグループとして、物理ブロック状態５１から１６個ずつの物理ＢＡをアドレス値の小さい順番で抽出する。このとき、テーブル構築部３１は、１６個の物理ＢＡで構成される物理ＢＡグループにバッドブロックの物理ＢＡが含まれていると、バッドブロックの次のグッドブロックの物理ＢＡを次の物理ＢＡグループの先頭の物理ＢＡとする。なお、以下では、バッドブロックの物理ＢＡをバッド物理ＢＡといい、グッドブロックの物理ＢＡをグッド物理ＢＡという。
【００６５】
例えば、図６に示す物理ブロック状態５１から物理ＢＡグループを生成する場合、テーブル構築部３１は、物理ＢＡ「００」〜「１５」を、１つの物理ＢＡグループとして抽出する。具体的には、テーブル構築部３１は、物理ＢＡ「００」〜「１５」を、第１の物理ＢＡグループＧ１として抽出する（図６のｓ１）。
【００６６】
ここでは、物理ＢＡ「０２」がバッド物理ＢＡなので、テーブル構築部３１は、次に抽出する物理ＢＡグループの先頭の物理ＢＡを、物理ＢＡ「０２」の次のグッド物理ＢＡである物理ＢＡ「０３」とする。そして、テーブル構築部３１は、物理ＢＡ「０３」からスタートして連続した合計１６個の物理ＢＡを１つの物理ＢＡグループとして抽出する。具体的には、テーブル構築部３１は、物理ＢＡ「０３」〜「１９」を、１つの物理ＢＡグループＧ２として抽出する（図６のｓ２）。
【００６７】
なお、テーブル構築部３１は、バッド物理ＢＡが複数連続する場合は、連続するバッド物理ＢＡが途切れた後の次のグッド物理ＢＡを、次の物理ＢＡグループの先頭の物理ＢＡとする。
【００６８】
テーブル構築部３１は、第２の物理ＢＡグループＧ２として、物理ＢＡ「０３」〜「１９」を抽出した後、３つ目の物理ＢＡグループを抽出する。ここでは、物理ＢＡ「０３」〜「１９」にバッド物理ＢＡが含まれていないので、テーブル構築部３１は、次の物理ＢＡグループの先頭の物理ＢＡを物理ＢＡ「２０」とする。そして、テーブル構築部３１は、物理ＢＡ「２０」からスタートして連続した合計１６個の物理ＢＡを１つの物理ＢＡグループとして抽出する。具体的には、テーブル構築部３１は、物理ＢＡ「２０」〜「３５」を、第３の物理ＢＡグループＧ３として抽出する（図６のｓ３）。
【００６９】
ここでは、物理ＢＡ「２４」がバッド物理ＢＡなので、テーブル構築部３１は、次の物理ＢＡグループの先頭の物理ＢＡを物理ＢＡ「２５」とする。そして、テーブル構築部３１は、物理ＢＡ「２５」からスタートして連続した合計１６個の物理ＢＡを１つの物理ＢＡグループとして抽出する。具体的には、テーブル構築部３１は、物理ＢＡ「２５」〜「４０」を、第４の物理ＢＡグループＧ４として抽出する（図６のｓ４）。
【００７０】
ここでは、物理ＢＡ「３１」がバッド物理ＢＡなので、テーブル構築部３１は、次の物理ＢＡグループの先頭の物理ＢＡを物理ＢＡ「３２」とする。そして、テーブル構築部３１は、物理ＢＡ「３２」からスタートして連続した合計１６個の物理ＢＡを第５の物理ＢＡグループＧ５として抽出する（図６のｓ５）。
【００７１】
テーブル構築部３１は、全ての物理ＢＡに対して物理ＢＡグループへのグループ分けを行う。すなわち、テーブル構築部３１は、以下の処理を繰り返す。
（１）テーブル構築部３１は、合計１６個の連続した物理ＢＡを１つの物理ＢＡグループとして抽出する。
（２）抽出した物理ＢＡグループにバッド物理ＢＡが含まれていれば、テーブル構築部３１は、バッド物理ＢＡの後の最初のグッド物理ＢＡを次の物理ＢＡグループの先頭の物理ＢＡに設定する。
【００７２】
さらに、テーブル構築部３１は、各物理ＢＡグループ内において最初のバッド物理ＢＡ以降の物理ＢＡを全てバッド物理ＢＡに設定する。例えば、物理ＢＡ「００」〜「１５」からなる物理ＢＡグループＧ１では、物理ＢＡ「０２」がバッド物理ＢＡなので、テーブル構築部３１は、物理ＢＡグループＧ１内の物理ＢＡ「０２」〜「１５」を全てバッド物理ＢＡに設定する。
【００７３】
これにより、物理ＢＡ「００」〜「１５」からなる物理ＢＡグループＧ１のバッド物理ＢＡ数は、１４個に設定される。また、物理ＢＡグループＧ２のバッド物理ＢＡ数は、０個に設定され、物理ＢＡグループＧ３のバッド物理ＢＡ数は、１２個に設定される。
【００７４】
そして、テーブル構築部３１は、物理ＢＡグループを整理する。具体的には、テーブル構築部３１は、各物理ＢＡグループを、バッド物理ＢＡ数でグループ分けすることにより、バッドブロック数情報５２を生成する（図６のｓ１１〜ｓ１４）。バッドブロック数情報５２は、各物理ＢＡグループを、バッド物理ＢＡ数でグループ分けした情報である。バッドブロック数情報５２では、バッド物理ＢＡ数と、物理ＢＡグループ（グループリスト）と、が対応付けされている。
【００７５】
例えば、バッドブロック数情報５２では、バッド物理ＢＡ数が０個の物理ＢＡグループに、物理ＢＡ「０３」〜「１９」からなる物理ＢＡグループＧ２が登録される。なお、バッドブロック数情報５２へは、物理ＢＡグループＧ２を示す情報として、物理ＢＡグループＧ２内の先頭の物理ＢＡである物理ＢＡ「０３」を登録しておけばよい。
【００７６】
同様に、バッドブロック数情報５２では、バッド物理ＢＡ数が１４個の物理ＢＡグループに、物理ＢＡグループＧ１が登録される。バッドブロック数情報５２へは、物理ＢＡグループＧ１を示す情報として、物理ＢＡグループＧ１内の先頭の物理ＢＡである物理ＢＡ「００」が登録される。
【００７７】
この後、テーブル構築部３１は、バッドブロック数情報５２を用いて、後述するＢＡ変換テーブル２３Ｂを構築する。ＢＡ変換テーブル２３Ｂは、ＢＡ変換テーブル２３Ａと同様の構成を有したテーブルである。すなわち、ＢＡ変換テーブル２３Ｂでは、６４Slot数分の物理ＢＡグループが、１つの論理ＢＡグループに対応付けされている。
【００７８】
ＢＡ変換テーブル２３Ｂを構築するため、テーブル構築部３１は、バッドブロック数情報５２から、バッド物理ＢＡ数の少ない物理ＢＡグループを、６４Slot数分ずつ順番に抽出する（図７のｓ２１）。換言すると、物理ＢＡグループの全体からグッドブロックの多い順番で物理ＢＡグループを６４Slot数分ずつ抽出する。図７では、バッド物理ＢＡ数が４個〜３個である物理ＢＡグループが６４Slot数分だけ抽出された場合を示している。以下では、ｓ２１の処理によって抽出された６４Slot数分の物理ＢＡグループを、物理ＢＡグループ群Ｈｘという。
【００７９】
テーブル構築部３１は、物理ＢＡ「Ｗ」〜「Ｗ＋１５」を１つの物理ＢＡグループとして抽出し、物理ＢＡ「Ｘ」〜「Ｘ＋１５」を１つの物理ＢＡグループとして抽出する。同様に、テーブル構築部３１は、物理ＢＡ「Ｙ」〜「Ｙ＋１５」を１つの物理ＢＡグループとして抽出し、物理ＢＡ「Ｚ」〜「Ｚ＋１５」を１つの物理ＢＡグループとして抽出する。このように、テーブル構築部３１は、１６個の物理ＢＡを１つの物理ＢＡグループとして、６４グループ（６４Slot数）分の物理ＢＡグループ群Ｈｘを抽出する。
【００８０】
そして、テーブル構築部３１は、抽出した６４Slot数分の物理ＢＡ毎に論理ＢＡグループを組んでいく。具体的には、テーブル構築部３１は、抽出した６４Slot数分の物理ＢＡグループを用いて論理ＢＡグループ（１６個の論理ＢＡからなるグループ）を組むことができるか否かを判断する（ステップＳ１３０）。テーブル構築部３１は、６４Slot数分の論理ＢＡを抽出できた場合に、６４Slot数分の物理ＢＡグループを用いて論理ＢＡグループを組むことができると判断する。
【００８１】
論理ＢＡグループを組むことができる場合（ステップＳ１３０、Ｙｅｓ）、テーブル構築部３１は、論理ＢＡグループを組んで、ＢＡ変換テーブル２３Ｂに登録する（ステップＳ１４０）。ＢＡ変換テーブル２３Ｂに登録された物理ＢＡグループは、バッドブロック数情報５２から削除される。
【００８２】
テーブル構築部３１は、論理ＢＡグループをＢＡ変換テーブル２３Ｂに登録する際に、論理ＢＡグループ内の各論理ＢＡに有効性を設定する。このとき、テーブル構築部３１は、物理ＢＡグループ群Ｈｘの中から、バッド物理ＢＡ数が最も多いSlotの物理ＢＡグループを選択する。テーブル構築部３１は、バッド物理ＢＡ数の少ない順番で物理ＢＡグループを抽出しているので、最後のSlotであるSlot６３の物理ＢＡグループ（物理ＢＡ「Ｚ」の物理ＢＡグループ）を選択する。そして、選択した物理ＢＡグループのバッド物理ＢＡと同じ段に設定されている物理ＢＡを全てバッド物理ＢＡに設定する。
【００８３】
換言すると、テーブル構築部３１は、物理ＢＡグループ群内において、各物理ＢＡグループ内におけるバッドブロックの連続数および先頭からのグッドブロックの連続数が、物理ＢＡグループ群の中で最もグッドブロックが少ない物理ＢＡグループと同じ値となるよう各物理ＢＡグループにバッドブロックを設定する。
【００８４】
例えば、Slot６３の物理ＢＡグループにおいて、第Ｍ（Ｍは自然数）段目以降がバッド物理ＢＡである場合、他のSlotの物理ＢＡグループも、全て第Ｍ段目以降をバッド物理ＢＡに設定する。図７の場合、物理ＢＡ「Ｚ」の物理ＢＡグループにおいて、ｃ３段目までがグッド物理ＢＡであり、ｃ４段目以降はバッド物理ＢＡである。このため、テーブル構築部３１は、Slot００〜６３の全ての物理ＢＡグループに対して、ｃ３段目までをグッド物理ＢＡに設定し、ｃ４段目以降をバッド物理ＢＡに設定した論理ＢＡグループ群Ｈｘ２（図示せず）を生成する。
【００８５】
図７のｓ２１で抽出された物理ＢＡグループ群Ｈｘの場合、物理ＢＡ「Ｗ＋４」や物理ＢＡ「Ｘ＋４」は、ｃ４段目の物理ＢＡである。このため、テーブル構築部３１は、物理ＢＡ「Ｗ＋４」や物理ＢＡ「Ｘ＋４」をバッド物理ＢＡに設定した論理ＢＡグループ群Ｈｘ２を生成する。
【００８６】
そして、ｃ０段目のSlot００〜６３の物理ＢＡが１つの論理ＢＡに設定され、ｃ１段目のSlot００〜６３の物理ＢＡが１つの論理ＢＡに設定される。同様に、ｃ３段目のSlot００〜６３の物理ＢＡ、ｃ４段目のSlot００〜６３の物理ＢＡ、・・・、ｃ１５段目のSlot００〜６３の物理ＢＡが、それぞれ１つの論理ＢＡに設定される。そして、テーブル構築部３１は、各論理ＢＡに有効性を設定する。
【００８７】
図８は、第２の実施形態に係るＢＡ変換テーブルと有効性管理テーブルの構成例を示す図である。図８の（ａ）は、ＢＡ変換テーブル２３Ｂを示し、図８の（ｂ）は、有効性管理テーブル２４Ｂを示している。ＢＡ変換テーブル２３Ｂは、ＢＡ変換テーブル２３Ａと同様の構成を有したテーブルであり、有効性管理テーブル２４Ｂは、有効性管理テーブル２４Ａと同様の構成を有したテーブルである。
【００８８】
ＢＡ変換テーブル２３Ｂへは、論理ＢＡグループに対応する物理ＢＡグループ郡Ｈｘ２が登録される。物理ＢＡグループ群Ｈｘ２の場合、ｃ０段目の物理ＢＡ「Ｗ」〜「Ｚ」が論理ＢＡ「Ｐ」に設定され、ｃ１段目の物理ＢＡ「Ｗ＋１」〜「Ｚ＋１」が論理ＢＡ「Ｐ＋１」に設定される。同様に、ｃ３段目の物理ＢＡ「Ｗ＋３」〜「Ｚ＋３」、ｃ４段目の物理ＢＡ「Ｗ＋４」〜「Ｚ＋４」、・・・、ｃ１５段目の物理ＢＡ「Ｗ＋１５」〜「Ｚ＋１５」が、それぞれ論理ＢＡ「Ｐ＋３」，「Ｐ＋４」〜「Ｐ＋１５」に設定される。
【００８９】
そして、１６ブロック分の論理ＢＡ「Ｐ」〜「Ｐ＋１５」が、１つの論理ＢＡグループに設定され、１６ブロック分×６４Slot数分の物理ＢＡグループ群Ｈｘ２に対応付けされて、ＢＡ変換テーブル２３Ｂに登録される。
【００９０】
図８（ａ）のＢＡ変換テーブル２３Ｂでは、論理ＢＡ「Ｐ」〜「Ｐ＋１５」の論理ＢＡグループを「論理ＢＡ  Ｐ／（Ｐ＋１５）」で示している。また、各Slotの物理ＢＡグループには、物理ＢＡグループの先頭の物理ＢＡが登録される。これにより、ＢＡ変換テーブル２３Ｂには、物理ＢＡ「Ｗ」〜「Ｚ」が、「論理ＢＡ  Ｐ／（Ｐ＋１５）」に対応付けされて登録される（図７のｓ２２）。
【００９１】
また、テーブル構築部３１は、論理ＢＡグループ内の各論理ＢＡの有効性を有効性管理テーブル２４Ｂに登録する（ステップＳ１５０）。ここでは、ｃ０〜ｃ３段目までの論理ＢＡ「Ｐ」〜「Ｐ＋３」がグッド物理ＢＡに設定されているので、論理ＢＡ「Ｐ」〜「Ｐ＋３」には、「有効」が設定される。また、ｃ４〜ｃ１５段目がバッド物理ＢＡに設定されているので、ｃ４〜ｃ１５段目までの論理ＢＡ「Ｐ＋４」〜「Ｐ＋１５」には、「無効」が設定される。
【００９２】
この後、無効な論理ＢＡのグッドブロックを物理ＢＡグループに変更して、整理する（ステップＳ１６０）。具体的には、テーブル構築部３１は、物理ＢＡグループ群Ｈｘのうち、物理ＢＡグループ群Ｈｘ２を生成する際にグッド物理ＢＡからバッド物理ＢＡに変換された物理ＢＡを有した物理ＢＡグループを抽出する。換言すると、テーブル構築部３１は、物理ＢＡグループ群Ｈｘのうち、ＢＡ変換テーブル２３Ｂに登録されなかったグッド物理ＢＡを有した物理ＢＡグループを抽出する。
【００９３】
ここでは、物理ＢＡグループ群Ｈｘの論理ＢＡグループを組む際に、物理ＢＡ「Ｗ＋４」〜「Ｘ＋４」のグッドブロックが利用されていないので、テーブル構築部３１は、物理ＢＡ「Ｗ＋４」〜「Ｘ＋４」を用いて新しい論理ＢＡグループを生成する。このとき、論理ＢＡグループの先頭は、物理ＢＡ「Ｗ＋４」となり、バッドブロック数は１５となる。
【００９４】
換言すると、物理ＢＡグループ群Ｈｘ２を生成する際に、物理ＢＡ「Ｗ＋４」〜「Ｘ＋４」がバッド物理ＢＡに変換されたので、物理ＢＡ「Ｗ」〜「Ｘ」の物理ＢＡグループが抽出される（図７のｓ２３）。
【００９５】
そして、テーブル構築部３１は、抽出した各物理ＢＡグループに対し、ＢＡ変換テーブル２３Ｂに登録されなかったグッド物理ＢＡ（以下、未登録物理ＢＡという）を用いた新たな物理ＢＡグループを生成する。このとき、テーブル構築部３１は、抽出した各物理ＢＡグループの中で最も小さな値の未登録物理ＢＡを、新たな物理ＢＡグループの先頭の物理ＢＡに設定する。テーブル構築部３１は、抽出した全ての物理ＢＡグループに対して、新たな物理ＢＡグループを生成する。
【００９６】
ここでは、物理ＢＡ「Ｗ＋４」〜「Ｗ＋１９」からなる物理ＢＡグループや、物理ＢＡ「Ｘ＋４」〜「Ｘ＋１９」からなる物理ＢＡグループが、新たな物理ＢＡグループとして生成される。
【００９７】
そして、テーブル構築部３１は、生成した新たな物理ＢＡグループを、バッドブロック数情報５２に登録する（図７のｓ２４）。例えば、物理ＢＡ「Ｗ＋４」〜「Ｗ＋１９」からなる物理ＢＡグループは、グッド物理ＢＡ数が１個なので、バッド物理ＢＡ数が１５個のグループリストに登録される。
【００９８】
テーブル構築部３１は、新たに登録されたバッドブロック数情報５２を用いて、上述した図７のｓ２１〜ｓ２４と同様の処理を繰り返す。これにより、バッドブロック数情報５２に新たに登録された物理ＢＡグループもＢＡ変換テーブル２３Ｂに登録される。このとき、新たに登録された物理ＢＡグループは、他の物理ＢＡグループとともに６４Slot数分の物理ＢＡグループ群を構成し、物理ＢＡグループ群としてＢＡ変換テーブル２３Ｂに登録される。
【００９９】
具体的には、ｄ０段目の物理ＢＡ「Ｗ＋４」〜「Ｘ＋４」が論理ＢＡ「Ｑ」に設定され、ｄ１段目の物理ＢＡ「Ｗ＋５」〜「Ｘ＋５」が論理ＢＡ「Ｑ＋１」に設定され、ｄ１５段目の物理ＢＡ「Ｗ＋１９」〜「Ｘ＋１９」が、論理ＢＡ「Ｑ＋１５」に設定される。同様に、他の物理ＢＡグループのｄ０段目の物理ＢＡ「Ｓ」〜「Ｔ」が、論理ＢＡ「Ｑ」に設定される。
【０１００】
なお、ＢＡ変換テーブル２３Ｂに登録される物理ＢＡグループは、１６個の物理ＢＡである必要はない。例えば、１２個の物理ＢＡ「Ｗ＋４」〜「Ｗ＋１９」からなる新しい物理ＢＡグループを、ＢＡ変換テーブル２３Ｂに登録してもよい。この場合、１３個目以降の物理ＢＡに対応する論理ＢＡは、バッドブロック数情報５２において「無効」に設定される。換言すると、新たな物理ＢＡグループにおいて、物理ＢＡが１６個に満たない場合は、足りない物理ＢＡの箇所にバッドブロックが存在するものとして扱われる。
【０１０１】
論理ＢＡが設定された後、１６ブロック分の論理ＢＡ「Ｑ」〜「Ｑ＋１５」が、１つの論理ＢＡグループに設定され、１６ブロック分×６４Slot数分の物理ＢＡグループ群Ｈｘ３（図示せず）に対応付けされて、ＢＡ変換テーブル２３Ｂに登録される。
【０１０２】
図８（ａ）のＢＡ変換テーブル２３Ｂでは、論理ＢＡ「Ｑ」〜「Ｑ＋１５」のグループを「論理ＢＡ  Ｑ／（Ｑ＋１５）」で示している。また、各Slotの物理ＢＡには、物理ＢＡグループの先頭の物理ＢＡが登録される。これにより、ＢＡ変換テーブル２３Ｂには、物理ＢＡ「Ｗ＋４」〜「Ｘ＋４」，「Ｓ」〜「Ｔ」が、「論理ＢＡ  Ｑ／（Ｑ＋１５）」に対応付けされて登録される。
【０１０３】
そして、テーブル構築部３１は、論理ＢＡグループ内の各論理ＢＡの有効性を有効性管理テーブル２４Ｂに登録する。ここでは、ｄ０段目の論理ＢＡ「Ｑ」がグッド物理ＢＡに設定されているので、論理ＢＡ「Ｑ」には、「有効」が設定される。また、ｄ１〜ｄ１１段目がバッド物理ＢＡに設定され、ｄ１２段目〜ｄ１５段目には物理ＢＡが存在しないので、ｄ１〜ｄ１５段目までの論理ＢＡ「Ｑ＋１」〜「Ｑ＋１５」には、「無効」が設定される。
【０１０４】
この後、論理ＢＡグループを組むことができなくなるまで、ステップＳ１３０〜Ｓ１６０の処理が繰り返される。論理ＢＡグループを組むことができなくなると（ステップＳ１３０、Ｎｏ）、ＢＡ変換テーブル２３Ｂの生成処理は終了する。
【０１０５】
なお、６４Slot数未満の物理ＢＡグループが余った場合、テーブル構築部３１は、６４Slot数未満のまま物理ＢＡグループ群をＢＡ変換テーブル２３Ｂに登録する。この場合において、物理ＢＡグループ内に複数のグッドブロックがある場合、物理ＢＡグループを複数に分割し、分割した物理ＢＡグループにグッドブロックを分配してもよい。例えば、２つのグッドブロックを有した物理ＢＡグループが残った場合、テーブル構築部３１は、１つのグッドブロックを有した物理ＢＡグループと１つのグッドブロックを有した物理ＢＡグループとの２つの物理ＢＡグループを生成する。そして、テーブル構築部３１は、２つの物理ＢＡグループを用いて物理ＢＡグループ群を生成するとともに、論理ＢＡグループと対応付けしてＢＡ変換テーブル２３Ｂに登録する。
【０１０６】
ＢＡ変換テーブル２３Ｂを構成する際に、バッドブロックがあると、バッドブロックに対応する論理ブロックを利用することができなくなる。本実施形態では、バッドブロックを整理しながら、ＢＡ変換テーブル２３Ｂを構築することにより、ＢＡ変換テーブル２３Ｂの圧縮度を上げ、これによりＳＳＤ１に必要なＲＡＭ２のメモリ容量を減らしている。
【０１０７】
このように、テーブル構築部３１は、ＢＡ変換テーブル２３Ｂを構築する際に、グッドブロック数が略同数の物理ＢＡグループを集めて１つの論理ＢＡグループに対応付けしている。これにより、ＢＡ変換テーブル２３Ｂの圧縮率を高めることが可能となる。
【０１０８】
図９は、ＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。パーソナルコンピュータ１２００は、ＳＳＤ１と、本体１２０１と、表示ユニット１２０２と、を備えている。なお、ここでは、パーソナルコンピュータ１２００がＳＳＤ１を備えている場合について説明する。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４と、を備えている。
【０１０９】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及びＳＳＤ１等が収容されている。
【０１１０】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１１１】
ＳＳＤ１は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１１２】
図１０は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１１３】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読み出し処理及び書き込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１１４】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１１５】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１１６】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１１７】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１１８】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１を、ＡＴＡインタフェースを介して制御する。
【０１１９】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１へのアクセスを行う。ＡＴＡインタフェース（Ｉ／Ｆ）を介して、書き込みコマンド、読み出しコマンド、フラッシュコマンド等がＳＳＤ１に入力される。
【０１２０】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１２１】
パーソナルコンピュータ１２００は、ＳＳＤ１に電源供給を行い、また、ＳＳＤ１に停止要求（Standby要求）を発行する。仮にパーソナルコンピュータ１２００からＳＳＤ１への電源供給が不正に断たれた場合であっても、書き込みエラーの発生を未然に防ぐことができる。
【０１２２】
このように第２の実施形態によれば、連続した物理ＢＡで構成された物理ＢＡグループをＢＡ変換テーブル２３Ｂに登録しているので、ＢＡ変換テーブルの構築処理時間を短縮できる。また、論理ＢＡから物理ＢＡへの変換を短時間で行うことが可能となる。
【０１２３】
また、バッド物理ブロック数が少ない順番で、物理ＢＡグループを組んでいるので、バッド物理ブロックを集めることが可能となる。したがって、ＢＡ変換テーブル２３Ｂの圧縮率を上げることが可能となる。
【０１２４】
また、バッド物理ＢＡ数の少ない物理ＢＡグループを順番に抽出してＢＡ変換テーブル２３Ｂを構築していくので、グッドブロック同士の組み合わせやバッドブロック同士の組み合わせなどを探索することなく、ＢＡ変換テーブル２３Ｂを構築できる。したがって、ＢＡ変換テーブル２３Ｂの構築処理は、物理ブロック数のリニアオーダーに応じた短い時間で行うことが可能となる。
【０１２５】
このように第１および第２の実施形態によれば、小さいサイズの管理テーブルで不揮発性メモリ内のデータを管理することが可能となる。
【０１２６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２７】
１…ＳＳＤ、３…コントローラ、４…ＮＡＮＤメモリ、１０…ホスト装置、２３Ａ，２３Ｂ…ＢＡ変換テーブル、２４Ａ，２４Ｂ…有効性管理テーブル、３１…テーブル構築部、３５…ブロックアドレス変換部、５１…物理ブロック状態、５２…バッドブロック数情報、Ｈｘ…物理ＢＡグループ群。
【図１】
0005694212.tif 000002
【図２】
0005694212.tif 000003
【図３】
0005694212.tif 000004
【図４】
0005694212.tif 000005
【図５】
0005694212.tif 000006
【図６】
0005694212.tif 000007
【図７】
0005694212.tif 000008
【図８】
0005694212.tif 000009
【図９】
0005694212.tif 000010
【図１０】
0005694212.tif 000011