(57)【特許請求の範囲】
【請求項１】
複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップを複数のチャネル並列動作要素に跨ってそれぞれがレディ／ビジー信号を共有する複数のバンクに分割した不揮発性半導体メモリと、
前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックに基づいてフリーブロックを管理し、前記プレーン、バンク、またはチャネル並列動作要素による並列動作を制御するコントローラと、
備え、
前記コントローラは、
同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つ前記論理ブロックをフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、
前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記フリーブロック選択部は、１つのバンクに所属しかつ１つのチップに所属するバッドブロック数が少ない１つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記フリーブロック選択部は、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、１つのバンクに所属しかつ１つのチップに所属するバッドブロック数が少ない１つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記フリーブロック選択部は、バッドブロック数に逆対応する値で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項３に記載のメモリシステム。
【請求項５】
前記フリーブロック選択部は、フリーブロック管理リストにエントリされる論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項３に記載のメモリシステム。
【請求項６】
前記フリーブロック選択部は、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項３に記載のメモリシステム。
【請求項７】
前記フリーブロック選択部は、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項３に記載のメモリシステム。
【請求項８】
前記フリーブロック選択部は、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックのうちのフリーブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項３に記載のメモリシステム。
【請求項９】
並列動作可能なフリーブロックの個数を計算するフリーブロック並列度計算部をさらに備えることを特徴とする請求項１に記載のメモリシステム。
【請求項１０】
前記フリーブロック選択部は、並列動作するフリーブロックの個数である並列度が指定された場合、各プレーンの並列動作を優先させる第１のモードと、バンクの並列動作を優先させる第２のモードとの切替えが可能であり、選択されたモードに応じた所要数のフリーブロック管理リストを複数本のフリーブロック管理リストから選択することを特徴とする請求項９に記載のメモリシステム。
【請求項１１】
前記フリーブロック選択部は、第１のモードにおけるバンク間の選択優先度を示す第１の情報と、第２のモードにおけるバンク間の選択優先度を示す第２の情報とを各バンク別に登録するテーブルを備え、このテーブルの登録情報にしたがって複数本のフリーブロック管理リストから選択されたモードに応じた所要数のフリーブロック管理リストを選択することを特徴とする請求項１０に記載のメモリシステム。
【請求項１２】
プレーン余裕度を当該バンク内に所属する各チップ内各プレーンでのフリーブロックの個数とし、チップ余裕度を同一チップに含まれる複数のプレーンのプレーン余裕度の最小値とし、
前記第１の情報には、当該バンク内に所属する各チップのうちで前記チップ余裕度が最大値を有するチップを識別する情報と、チップ余裕度の最大値とが含まれ、
前記第２の情報には、当該バンク内に所属する各チップ内各プレーンのうちで前記プレーン余裕度が最大値を有するチップ内プレーンを識別する情報と、プレーン余裕度の最大値とが含まれることを特徴とする請求項１１に記載のメモリシステム。
【請求項１３】
前記フリーブロック選択部は、第１のモードを実行する場合は、前記テーブルに登録された第２の情報に含まれるチップ内プレーンを第１の情報に含まれるチップよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択し、
第２のモードを実行する場合は、前記テーブルに登録された第１の情報に含まれるチップを第２の情報に含まれるチップ内プレーンよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択することを特徴とする請求項１２に記載のメモリシステム。
【請求項１４】
複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップが複数のチャネル並列動作要素に跨ってそれぞれがレディ／ビジー信号を共有する複数のバンクに分割される不揮発性半導体メモリを前記プレーン、バンク、またはチャネル並列動作要素による並列動作が可能なように制御するメモリシステムの制御方法であって、
前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックとしてのフリーブロックを、複数本のフリーブロック管理リストによって、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つフリーブロックとしてそれぞれ管理し、
前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得することを特徴とするメモリシステムの制御方法。
【請求項１５】
前記フリーブロックの取得の際には、１つのバンクに所属しかつ１つのチップに所属するバッドブロック数が少ない１つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１４に記載のメモリシステムの制御方法。
【請求項１６】
前記フリーブロックの取得の際には、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、１つのバンクに所属しかつ１つのチップに所属するバッドブロック数が少ない１つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１４に記載のメモリシステムの制御方法。
【請求項１７】
前記フリーブロックの取得の際には、バッドブロック数に逆対応する値で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１６に記載のメモリシステムの制御方法。
【請求項１８】
前記フリーブロックの取得の際には、フリーブロック管理リストにエントリされる論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１６に記載のメモリシステムの制御方法。
【請求項１９】
前記フリーブロックの取得の際には、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１６に記載のメモリシステムの制御方法。
【請求項２０】
前記フリーブロックの取得の際には、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１６に記載のメモリシステムの制御方法。
【請求項２１】
前記フリーブロックの取得の際には、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックのうちのフリーブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項１６に記載のメモリシステムの制御方法。
【請求項２２】
さらに、並列動作可能なフリーブロックの個数を計算することを特徴とする請求項１４に記載のメモリシステムの制御方法。
【請求項２３】
前記フリーブロックの取得の際には、並列動作するフリーブロックの個数である並列度が指定された場合、各プレーンの並列動作を優先させる第１のモードと、バンクの並列動作を優先させる第２のモードとの切替えが可能であり、選択されたモードに応じた所要数のフリーブロック管理リストを前記複数本のフリーブロック管理リストから選択することを特徴とする請求項２２に記載のメモリシステムの制御方法。
【請求項２４】
前記フリーブロックの取得の際には、第１のモードにおけるバンク間の選択優先度を示す第１の情報と、第２のモードにおけるバンク間の選択優先度を示す第２の情報とが各バンク別に登録されるテーブルの登録情報にしたがって複数本のフリーブロック管理リストから選択されたモードに応じた所要数のフリーブロック管理リストを選択することを特徴とする請求項２３に記載のメモリシステムの制御方法。
【請求項２５】
プレーン余裕度を当該バンク内に所属する各チップ内各プレーンでのフリーブロックの個数とし、チップ余裕度を同一チップに含まれる複数のプレーンのプレーン余裕度の最小値とし、
前記第１の情報には、当該バンク内に所属する各チップのうちで前記チップ余裕度が最大値を有するチップを識別する情報と、チップ余裕度の最大値とが含まれ、
前記第２の情報には、当該バンク内に所属する各チップ内各プレーンのうちで前記プレーン余裕度が最大値を有するチップ内プレーンを識別する情報と、プレーン余裕度の最大値とが含まれることを特徴とする請求項２４に記載のメモリシステムの制御方法。
【請求項２６】
前記フリーブロックの取得の際には、第１のモードを実行する場合は、前記テーブルに登録された第２の情報に含まれるチップ内プレーンを第１の情報に含まれるチップよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択し、
第２のモードを実行する場合は、前記テーブルに登録された第１の情報に含まれるチップを第２の情報に含まれるチップ内プレーンよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択することを特徴とする請求項２５に記載のメモリシステムの制御方法。
【請求項２７】
複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップが複数のチャネル並列動作要素に跨ってそれぞれがレディ／ビジー信号を共有する複数のバンクに分割される不揮発性半導体メモリを前記プレーン、バンク、またはチャネル並列動作要素による並列動作が可能なように制御するコントローラであって、
前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックとしてのフリーブロックを、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、
前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部と
を備えることを特徴とするコントローラ。
【請求項２８】
前記フリーブロック選択部は、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、１つのバンクに所属しかつ１つのチップに所属するバッドブロック数が少ない１つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項２７に記載のコントローラ。
【請求項２９】
請求項１に記載のメモリシステムを備えることを特徴とするパーソナルコンピュータ。
【請求項３０】
請求項３に記載のメモリシステムを備えることを特徴とするパーソナルコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関するものである。
【背景技術】
【０００２】
不揮発性半導体メモリには、ＮＡＮＤ型フラッシュメモリのように、データを記憶させる場合にブロック単位で一度データを消去してからその後に書き込みを行うもの、ページ単位で書き込み／読み出しを行うものなど、消去／書き込み／読み出しの単位が固定されているものがある。
【０００３】
一方、パーソナルコンピュータなどのホスト機器がハードディスクをはじめとする２次記憶装置に対してデータの書き込み／読み出しを行う単位は、セクタと呼ばれる。セクタは、半導体記憶装置の消去／書き込み／読み出しの単位とは独立に定められる。通常、ホスト機器のセクタの大きさ（セクタサイズ）は、不揮発性半導体メモリのブロックの大きさ（ブロックサイズ）、ページの大きさ（ページサイズ）よりも小さい。
【０００４】
そこで、不揮発性半導体メモリを用いてハードディスクのようなパーソナルコンピュータの２次記憶装置を構成する場合、ホスト機器としてのパーソナルコンピュータからの小さなサイズのデータは、不揮発性半導体メモリのブロックサイズ、ページサイズに適合させて書き込みを行う必要がある。
【０００５】
また、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている（例えば、非特許文献１参照。）。そのため、データを記録する際に外部から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、即ち消去処理が集中し、消去回数の偏りが大きくなる。そのため、ＮＡＮＤ型フラッシュメモリでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われる。ウェアレベリング処理では、例えば、ホスト機器から指定される論理アドレスを、データ更新箇所が均等に分散されるように不揮発性半導体メモリの物理アドレスにアドレス変換している。
【０００６】
ＮＡＮＤ型フラッシュメモリを用いて大容量の２次記憶装置を構成する場合においては、上記アドレス変換を行う場合に、データ管理の単位が小さいサイズ（例えば、ページサイズ）であると、管理テーブルのサイズが大きくなって、２次記憶装置のコントローラの主記憶メモリに納まらなくなり、アドレス変換が高速にできなくなるという問題がある。このように、２次記憶装置としてのＮＡＮＤ型フラッシュメモリの大容量化に伴い管理テーブルのサイズは必然的に大きくなるため、管理テーブルをできるだけ小容量にするための手法が求められている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００７−５１７３２５号公報
【非特許文献】
【０００８】
【非特許文献１】David A. Patterson and John L. Hennessy, “Computer Organization and Design: The Hardware/Software Interface”, Morgan Kaufmann Pub, 2004/8/31
【発明の概要】
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップを複数のチャネル並列動作要素に跨ってそれぞれがレディ／ビジー信号を共有する複数のバンクに分割した不揮発性半導体メモリと、前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックに基づいてフリーブロックを管理し、前記プレーン、バンク、またはチャネル並列動作要素による並列動作を制御するコントローラと備え、前記コントローラは、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つ前記論理ブロックをフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部とを備えることを特徴とする。
【図面の簡単な説明】
【００１０】
【図１】図１は、ＳＳＤの構成例を示すブロック図。
【図２】図２は、ＮＡＮＤコントローラとＮＡＮＤメモリとの接続態様を示す図。
【図３】図３は、ＮＡＮＤコントローラの内部構成例を示すブロック図。
【図４】図４は、ＮＡＮＤメモリの物理的構成を示す図。
【図５】図５は、プロセッサの機能構成例を示すブロック図。
【図６】図６は、データ管理部の機能構成を示すブロック図。
【図７】図７は、バンクによる並列動作がない場合の比較例による論理ブロック構成を概念的に示す図。
【図８】図８は、バンクによる並列動作がある場合の比較例による論理ブロック構成を概念的に示す図。
【図９】図９は、第１の実施の形態によるＦＢ管理部の構成例を示す図。
【図１０】図１０は、ＦＢ管理リストを示す図。
【図１１】図１１は、第１の実施形態による論理ブロックの構成を概念的に示す図。
【図１２】図１２は、リザーブ領域、マージン領域を概念的に示す図。
【図１３】図１３は、第２の実施形態によるＦＢ管理部の構成例を示す図。
【図１４】図１４は余裕度テーブルを示す図。
【図１５】図１５はプレーン余裕度、チップ余裕度を説明するための図。
【図１６】図１６は第３の実施形態における倍速優先モードの制御手順を示すフローチャート。
【図１７】図１７は余裕度テーブルの登録データの一例を示す図。
【図１８】図１８は、第３の実施形態におけるバンク優先モードの制御手順を示すフローチャート。
【図１９】図１９は、第４の実施形態によるパーソナルコンピュータの外観を示す斜視図。
【図２０】図２０は、第４の実施形態によるパーソナルコンピュータの機能構成例を示す図。
【発明を実施するための形態】
【００１１】
ところで、フラッシュメモリのセルの劣化に関しては、ホスト機器側からの書き込みデータ量に対する必要なフラッシュメモリのブロックの消去量が重要なファクターとなる。このようなホスト機器からの書き込みデータ量に対するブロックの消去量を書き込み効率と呼び、値が小さいほどよい。通常、ＮＡＮＤ型フラッシュメモリでは、ブロックの消去処理及び書き込み処理に多くの時間を費やすため、書き込み効率が悪いということは、ホスト機器からのデータ書き込み量に対して、ブロックの消去や消去したブロックへの書き込みが多いことを表し、フラッシュメモリの速度性能を悪くすることを同時に意味する。このように、フラッシュメモリに対する書き込みデータ量を、ブロックの消去量に近づけて書き込み効率をよくするための手法も求められている。
【００１２】
そこで、消去単位である物理ブロックを複数個組み合わせた仮想ブロックの概念を導入し（例えば、特許文献１参照。）、この仮想ブロック単位に並列に消去／書き込み／読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図っている。
【００１３】
しかしながら、物理ブロックによる仮想ブロックの構成の仕方、即ち物理ブロックの組み合わせの仕方には、制約がある場合が多く、仮想ブロックのサイズが大きすぎる場合は、少量のデータを保存したい場合でも無駄に多くの物理ブロックを使用することになり、書き込み効率が悪化することになる。
【００１４】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１５】
［第１の実施形態］
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、コントローラとしてのドライブ制御回路４と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、揮発性半導体メモリとしてのＤＲＡＭ２０と、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースなどを備えている。ＳＳＤ１００は、ＡＴＡ  Ｉ／Ｆ２を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１６】
ＮＡＮＤメモリ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＤＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図１では、ＮＡＮＤメモリ１０は、４チャネル（４ｃｈ：ｃｈ０〜ｃｈ３）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１３に並列接続されており、４つのチャネル並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。チャネル数は４つに限らず、任意のチャネル数を採用可能である。
【００１７】
ＤＲＡＭ２０は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部（データ転送用キャッシュ）としては、ホスト１から書込要求があったデータをＮＡＮＤメモリ１０に書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤメモリ１０から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリ１０に記憶されるデータの格納位置を管理するための管理情報（ＮＡＮＤメモリ１０に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分情報であるログなど）を格納するために使用される。
【００１８】
ドライブ制御回路４は、ホスト１とＮＡＮＤメモリ１０との間でＤＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。
【００１９】
ドライブ制御回路４は、データアクセス用バス１０１、回路制御用バス１０２を備えている。回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。回路制御用バス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。
【００２０】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、ＮＡＮＤコントーラ１１３、及びＤＲＡＭコントローラ１１４は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。ＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介してホスト１との間でデータを送受信する。データアクセス用バス１０１には、データ作業領域及びファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤメモリ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。
【００２１】
ＤＲＡＭコントローラ１１４は、プロセッサ１０４とＤＲＡＭ２０とのインタフェース処理などを実行する。ＮＡＮＤコントローラ１１３は、プロセッサ１０４とＮＡＮＤメモリ１０とのインタフェース処理、ＮＡＮＤメモリ１０−ＤＲＡＭ２０間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００２２】
図２は、ＮＡＮＤコントローラ１１３とＮＡＮＤメモリ１０との接続態様を示すものである。ＮＡＮＤメモリ１０は、前述したように、複数個のチャネル並列動作要素１０ａ〜１０ｄによって構成されている。各チャネル並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数のバンク（図２では４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各チャネル並列動作要素１０ａ〜１０ｄ内の各々のバンクは、複数のメモリチップ（図２では、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。
【００２３】
図２に示すように、ＮＡＮＤコントローラ１１３は、複数のチャネルを有し、各チャネルでは、コントロールＩ／Ｏ信号（ＣｔｒｌＩ／Ｏ）を共有する複数のメモリチップを４本のチップイネーブル信号（ＣＥ）でバンク毎に個別に制御する。また、複数のチャネルを跨って４本のレディ／ビジー信号（ＲｙＢｙ）を共有し、レディ／ビジー信号（ＲｙＢｙ）を共有する各チャネルのメモリチップが同時に動作するように制御を行う。レディ／ビジー信号（ＲｙＢｙ）を共有するメモリチップ群をバンクと呼び、複数のバンクは独立して書き込み／読み出し／消去動作を行うことが可能である。
【００２４】
図３は、ＮＡＮＤコントローラ１１３の内部構成例を示すものである。ＮＡＮＤコントローラ１１３では、各チャネルを独立して動作させるために、チャネル毎に、ＤＭＡコントローラ（ＤＭＡＣ）５０と、誤り訂正回路（ＥＣＣ）５１、コマンド発行を行うＮＡＮＤインタフェース（ＮＡＮＤＩ／Ｆ）５２を備える。各ＮＡＮＤＩ／Ｆ５２には、４バンク分のＣＥ信号（ＣＥ０〜ＣＥ３）制御線が接続され、アクセスするバンクに応じてＣＥ信号（ＣＥ０〜ＣＥ３）を制御する。また、４バンクを独立して動作させるために、バンク毎に共通接続されたＲｙＢｙ信号を監視してバンクの状態を管理するバンクコントローラ（ＢＡＮＫ−Ｃ）５３を４つ備える。ＢＡＮＫ−Ｃ５３は、それぞれのバンクに対する要求をキューイングする機能を備え、各バンクへの要求がある場合にチャネルの使用権を確保し、自らが管理するバンクへの読み出し／書き込み／消去要求を実行する。
【００２５】
図４は、ＮＡＮＤメモリ１０のより詳細な内部構成を示すものである。図４では、チャネル数を（Ｍ＋１）個として示し、バンク数をＮ＋１個として示し、チップ数をＫ＋１個として示した。図４に示すように、各メモリチップ（ｃｈｉｐ０〜ｃｈｉｐＫ）は、例えば、それぞれ複数の物理ブロックを含むプレーン０（ｐｌａｎｅ０）、プレーン１（ｐｌａｎｅ１）の２つの領域（District）に分割されている。プレーン０及びプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、倍速モードを使用することで、同時に消去／書き込み／読み出しを行うことが可能である。１メモリチップ内のプレーン数は２個に限らず、任意である。また、１個のメモリチップは、図４で拡大して示すように、複数の物理ブロックで構成されている（図４ではＸ＋１個の物理ブロック）。
【００２６】
このように、ＮＡＮＤメモリ１０では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を４、バンク数を４、プレーン数を２とした場合、最大３２個の物理ブロックを並列動作させることが可能となる。
【００２７】
図５は、プロセッサ１０４により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ１０４により実現されるファームウェアの各機能は、大きくは、データ管理部１２０（ＤＭ：Data Manager）、ＡＴＡコマンド処理部１２１（ＡＭ：ATA Manager）、セキュリティ管理部１２２、ブートローダ１２３、初期化管理部１２４などに分類される。
【００２８】
データ管理部１２０は、ＮＡＮＤコントローラ１１３、ＤＲＡＭコントローラ１１４などを介して、ＮＡＮＤメモリ１０−ＤＲＡＭ２０間のデータ転送、ＮＡＮＤメモリ１０に関する各種機能を制御する。ＡＴＡコマンド処理部１２１は、ＡＴＡコントローラ１１１、ＤＲＡＭコントローラ１１４を介して、データ管理部１２０と協動してＤＲＡＭ２０−ホスト１間のデータ転送処理を行う。セキュリティ管理部１２２は、データ管理部１２０及びＡＴＡコマンド処理部１２１と協動して各種のセキュリティ情報を管理する。
【００２９】
ブートローダ１２３は、パワーオン時、各管理プログラム（ファームウェア）をＮＡＮＤメモリ１０からＳＲＡＭ１１５にロードする。初期化管理部１２４は、ドライブ制御回路４内の各コントローラ／回路の初期化を行う。
【００３０】
データ管理部１２０は、ＡＴＡコマンド処理部１２１が記憶デバイスであるＮＡＮＤメモリ１０やＤＲＡＭ２０に対して要求する機能の提供（ホスト１からのWrite要求、Cache Flush要求、Read要求等の各種コマンドへの応答）と、ホスト１から与えられる論理アドレスとＮＡＮＤメモリ１０との対応関係の管理と、スナップショット、ログによる管理情報の保護と、ＤＲＡＭ２０及びＮＡＮＤメモリ１０を利用した高速で効率の良いデータ読み出し／書き込み機能の提供と、ＮＡＮＤメモリ１０の信頼性の確保などを行う。
【００３１】
データ管理部１２０では、図６に示すように、多層の管理構成が採用されており、データ管理部１２０は、上層からＡＴＡ層管理部１２０ａ、ＤＲＡＭ層管理部１２０ｂ、論理層管理部１２０ｃ、物理層管理部１２０ｄを備えている。
【００３２】
ＡＴＡ層管理部１２０ａは、ＡＴＡコマンド処理部１２１からの要求を受付け、この要求に応答するとともに、要求を適切な下位層の管理部に通知する。ＤＲＡＭ層管理部１２０ｂは、ＤＲＡＭ層管理テーブル３０を使用してＤＲＡＭ２０上のデータを管理する。
【００３３】
ここで、ホスト１はＳＳＤ１００に対し、ReadまたはWrite要求を発行する際には、ＡＴＡインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）及びデータサイズを入力する。ＬＢＡは、セクタ（サイズ：５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。また、ＮＡＮＤメモリ１０内の物理ブロックを複数組み合わせて、論理ブロックと呼ばれる仮想的なブロックが構成される。論理ブロックを構成する個々の物理ブロックは並列に動作可能であり、同時に消去／書き込み／読み出しが実行される。本実施形態では、基本的には異なるチャネルから１つの物理ブロックを選択することで論理ブロックを構成する。論理ブロックを構成する物理ブロックの組み合わせ方の詳細については後述する。
【００３４】
論理層管理部１２０ｃは、各種の論理層管理テーブル３１を使用してＮＡＮＤメモリ１０上のデータを管理するものであり、
・ＬＢＡと論理ブロックの対応関係の管理
・ＤＲＡＭ２０からＮＡＮＤメモリ１０へのデータ書き込み制御
・ＮＡＮＤメモリ１０からＤＲＡＭ２０へのデータ読み出し制御
・ＮＡＮＤメモリ１０内のユーザデータの整理
などを実行する。
【００３５】
物理層管理部１２０ｄは、各種の物理層管理テーブル３２を使用してＮＡＮＤメモリ１０を管理するとともに、論理ブロックの提供、不揮発情報の管理、ＮＡＮＤコントローラ１１３の制御などを実行する。具体的には、
・フリーブロック、バッドブロック、アクティブブロックの管理
・論理ブロックと物理ブロックの対応の管理
・物理的エラーの管理
・ウェアレベリング、リフレッシュの実行
・不揮発管理情報（スナップショット、ログ）の管理
・ＮＡＮＤコントローラ１１３の制御
などを実行する。
【００３６】
フリーブロック（ＦＢ）とは、内部に有効データを含まない、用途未割り当ての論理ブロックのことである。アクティブブロック（ＡＢ）とは、用途が割り当てられた論理ブロックのことである。バッドブロック（ＢＢ）は、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックＢＢとして登録される。
【００３７】
図６に示した各管理テーブル３０、３１、３２で管理される管理情報によって、ホスト１で使用されるＬＢＡと、ＳＳＤ１００で使用される論理ＮＡＮＤアドレス（論理ブロックアドレスなど）と、ＮＡＮＤメモリ１０で使用される物理ＮＡＮＤアドレス（物理ブロックアドレスなど）との間を対応付けることができ、ホスト１とＮＡＮＤメモリ１０との間のデータのやり取りを行うことが可能となる。このようにＬＢＡと論理ＮＡＮＤアドレス、論理ＮＡＮＤアドレスと物理ＮＡＮＤアドレスとを対応付ける技術については、例えば、国際特許出願ＰＣＴ／ＪＰ０９／０５２５９８に開示されており、これらの全内容は本出願において援用される。
【００３８】
次に、本実施の形態の要部について説明する。前述したように、本装置においては、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、これらの並列動作を用いて複数の物理ブロックを並列処理することが可能である。本実施形態では、上記の各並列動作を効率良く行わせ、書き込み効率を向上させるために、論理ブロックを構成する物理ブロックの組み合わせ方を最適化する。
【００３９】
最初に、比較例に係る論理ブロックの構成方法について説明する。例えば、図４に示す物理的構成を持つＳＳＤに対して、常に最大並列度を確保できるように論理ブロックを構成することを考える。比較例では、最大並列度の確保を優先した場合の物理ブロック選択の制約について、図７及び図８を参照して説明する。
【００４０】
（比較例）
比較例に係るＳＳＤでは、論理ブロックを構成する物理ブロックの組み合わせ方に関して、下記（１）乃至（３）の制約を設ける。
（１）複数のチャネル並列動作要素（１０ａ〜１０ｄ）から選択する物理ブロックは、同じチップ番号（ｃｈｉｐ０〜ｃｈｉｐＫ）を持つメモリチップに所属する物理ブロックであること。
（２）チャネル内では、プレーン０（ｐｌａｎｅ０）とプレーン１（ｐｌａｎｅ１）の組み合わせであること。
（３）各バンク内は（１）（２）の制約を満足させること。
【００４１】
上記（１）〜（３）の制約を満たせば、複数のチャネル、複数のプレーン及び複数のバンクによる並列動作を実行させることができる。ここで、バンクによる並列動作がない場合と、ある場合を比較する。バンクによる並列動作がない場合は、図７に示すように、上記の（１）（２）の制約を満たしながら、同じチップ番号の全てのチャネルから２物理ブロック（ｐｌａｎｅ０／ｐｌａｎｅ１）を選択して論理ブロックを構成する。図７では、チャネル数及びプレーン数分の複数の物理ブロックによって１つの論理ブロックＬＢＬＫ０が構成され、同様に複数の物理ブロックによって１つの論理ブロックＬＢＬＫ１が構成されている。このような論理ブロックの構成例については、例えば、国際特許出願ＰＣＴ／ＪＰ０９／０５２５９５に開示されており、これらの全内容は本出願において援用される。
【００４２】
これに対し、バンクによる並列動作がある場合は、図８に示すように、全てのバンク（ｂａｎｋ０〜ｂａｎｋＮ）に対して、同じチップ番号の全てのチャネルから２物理ブロック（ｐｌａｎｅ０／ｐｌａｎｅ１）を選択して論理ブロックを構成する。図８では、チャネル数、プレーン数及びバンク数分の複数の物理ブロックによって１つの論理ブロックＬＢＬＫ０が構成され、同様に複数の物理ブロックによって１つの論理ブロックＬＢＬＫ１が構成されている。このように、バンクによる並列動作がある場合は、ない場合に比べ、論理ブロックを構成する(＝同時に動作する)物理ブロック数がバンク数倍だけ増加する。
【００４３】
ところで、前述したように、論理ブロックと物理ブロックとの対応関係は、物理層管理部１２０ｄで管理されている。論理ブロックには、前述したように、フリーブロックＦＢ、アクティブブロックＡＢなどがあるが、有効データを含まない用途未割り当てのフリーブロックＦＢは、ＦＢ管理リストによって管理されている。ＦＢ管理リストは、フリーブロックＦＢとなった順にソートされたＦＩＦＯ形式のリストであり、各エントリには、論理ブロックＩＤが保持される。論理層管理部１２０ｃから返却されたフリーブロックＦＢは、ＦＢ管理リストの最後尾に追加され、論理層管理部１２０ｃに論理ブロックを渡す際には、ＦＢ管理リストの先頭の論理ブロックを取り出す。ＦＢ管理リストでは、全ての論理ブロックの消去回数、消去間隔を概ね等しくするウェアレベリング処理が実行されている。
【００４４】
バンクによる並列動作がない場合は、ＦＢ管理リストを一本のリストで構成しても問題は少ないが、バンクによる並列動作がある場合は、論理ブロックを構成する(＝同時に動作する)物理ブロック数がバンク数倍だけ増加するので、少量のデータを保存したい場合でも無駄に多くの物理ブロックを使用することになり、書き込み効率の悪化に繋がる。書き込み効率の悪化は、メモリセルに対する消去／書き込み回数の増加を意味するため、システム全体としての寿命が短くなる可能性がある。このように、書き込み速度(＝並列度)と書き込み効率とはトレードオフの関係にある。
【００４５】
そこで、本実施形態においては、論理ブロックを構成する物理ブロック数の増加を抑制すると供に、書き込み要求の処理に必要な論理ブロック数によって並列度を制御し、並列度が不要な場合は、書き込み効率を優先する。そのため、本実施形態に係るＳＳＤ１００は、複数本のＦＢ管理リストを備えるようにしており、各ＦＢ管理リストでは、同一のバンク番号／チップ番号／プレーン番号を持つ論理ブロックを管理するようにしている。以下、本実施形態に係るＳＳＤ１００の論理ブロック構成方法、及び並列度制御方法について詳細に説明する。
【００４６】
図９は、フリーブロックＦＢの管理を行うＦＢ管理部４０の構成を示すものである。ＦＢ管理部４０は、複数のＦＢリスト５０−１〜５０−Ｌから構成されるＦＢ管理リスト５０と、ＦＢ選択部４２と、ＦＢ提供部４３とから構成されており、例えば、物理層管理部１２０ｄが提供する機能ブロックとして実現される。ＦＢ提供部４３は、論理層管理部１２０ｃなどからの要求に応じて、必要な論理ブロック数などの情報をＦＢ選択部４２に通知する。ＦＢ選択部４２は、ＦＢ提供部４３から通知された論理ブロック数に基づいてＦＢ管理リスト５０中の複数のＦＢリスト５０−１〜５０−Ｌから必要数の論理ブロック（論理ブロックＩＤ）を選択し、選択した１〜複数の論理ブロックＩＤをＦＢ提供部４３に通知する。ＦＢ提供部４３は、通知された１〜複数の論理ブロックＩＤをフリーブロックＦＢとして論理層管理部１２０ｃに通知する。
【００４７】
図１０は、ＦＢ管理リスト５０を構成する複数のＦＢリスト５０−１〜５０−Ｌを示すものである。各ＦＢリスト５０−１〜５０−Ｌには、同一のバンク番号／チップ番号／プレーン番号を持つ論理ブロックの論理ブロックＩＤがエントリされている。また、ＦＢリスト５０−１〜５０−Ｌは、それぞれ返却ＦＢリスト５０ａと、割り当てＦＢリスト５０ｂとの２段構成になっている。各エントリには、論理ブロックＩＤが記録されている。
【００４８】
返却ＦＢリスト５０ａは、消去時刻順に整列しており、割り当てＦＢリスト５０ｂでは、消去回数の少ない論理ブロックほどリストの先頭に位置する。これは、短い時間間隔で消去動作を繰り返すことを防ぐための構成である。不要になり、論理層管理部１２０ｃから返却された論理ブロックは、返却ＦＢリスト５０ａの最後尾に追加され、一定の期間にここに保持される。返却ＦＢリスト５０ａから押し出された論理ブロックは、その消去回数に応じて割り当てＦＢリスト５０ｂの途中に挿入される。ＦＢ選択部４２は、論理ブロックを取得する際には、割り当てＦＢリスト５０ｂの先頭から取り出し、割り当てを行う。割り当てＦＢリスト５０ｂから取り出されたＦＢとしての論理ブロックは、用途が割り当てられたアクティブブロック（ＡＢ）として登録される。
【００４９】
このような返却ＦＢリスト５０ａと、割り当てＦＢリスト５０ｂとの２段構成を有しているので、全ての論理ブロックの消去回数、消去間隔が概ね等しくなるように、消去する論理ブロックを均等に分散させる（ウェアレベリング処理）ことが可能となる。ＮＡＮＤ型フラッシュメモリの寿命は、消去回数の他に、消去処理の間隔にも依存しており、その間隔が長いほどリテンション特性が良く、寿命が延びることが知られている。これは、消去間隔が短いとリテンション特性が悪く、寿命が損なわれることも示している。また、短い間隔で書き込みを行ったとしても、相応の長期間消去を行わなければリテンション特性が回復することも知られている。このようなウェアレベリング処理に係る技術については、例えば、国際特許出願ＰＣＴ／ＪＰ０８／０６６５０８に開示されており、これらの全内容は本出願において援用される。
【００５０】
本実施形態では、論理ブロックは、図１１に示すように、各チャネルから同一のバンク番号／チップ番号／プレーン番号を持つ物理ブロックを集めて構成する。即ち、本実施形態では、論理ブロックを構成する物理ブロックの組み合わせ方に関して、下記（１）乃至（４）の制約を設ける。
（１）各チャネルの物理ブロックを１つずつ選択すること。
（２）各チャネルの物理ブロックは、同じチップ番号に属する物理ブロックから選択すること。
（３）各チャネルの物理ブロックは、同じプレーン番号に属する物理ブロックから選択すること。
（４）同一バンク内の物理ブロックを選択すること。
【００５１】
したがって、論理ブロックは、バンク毎に、チップ毎に、プレーン毎に分類可能になる。また、図１０に示すように、各ＦＢリスト５０−１〜５０−Ｌは、それぞれ、同一のバンク番号／チップ番号／プレーン番号を持つ論理ブロックのリストとして構成される。
【００５２】
ＦＢ選択部４２は、ＦＢ提供部４３からの要求に従って、ＦＢリスト５０−１〜５０−Ｌの中から並列動作可能な１〜複数個のフリーブロックＦＢを取得するためのリストの組み合わせを決定する。図１１に示す論理ブロック構成の場合、ＦＢ選択部４２は、最大並列度が必要な時は倍速モードを考慮し、
（１）１つのバンク内の同一チップ番号のプレーン０及びプレーン１の論理ブロックを選択する。これにより、バンク０に関しては、例えば、ｃｈｉｐ ａに属し、プレーン０に属する複数のチャネル分の１つの論理ブロック（ＬＢＬＫ０）と、ｃｈｉｐ ａに属し、プレーン１に属する複数のチャネル分の１つの論理ブロック（ＬＢＬＫ１）が選択され、２論理ブロックが選択される。
（２）同様の処理を全てのバンクに対して実行することで、２×バンク数（Ｎ＋１）個分の論理ブロック（ＬＢＬＫ０〜ＬＢＬＫ２Ｎ＋１）を選択する。これにより、２×バンク数（Ｎ＋１）個分の論理ブロック（ＬＢＬＫ０〜ＬＢＬＫ２Ｎ＋１）に対する並列書き込みが実行可能となる。
【００５３】
一方、ＦＢ選択部４２は、ＦＢ提供部４３から論理ブロックを１個として要求された場合は、複数のＦＢリスト５０−１〜５０−Ｌの中から１つのリストを選択し、選択したリストからフリーブロックＦＢを取得することで、例えば論理ブロックＬＢＬＫ０〜ＬＢＬＫ２Ｎ＋１の中から１つを選択する。このように必要な並列度に応じて実際に書き込みを行う並列度を決定できるので、少量のデータを書き込む場合でも書き込み効率を悪化させることはない。
【００５４】
尚、ＦＢ提供部４３が要求する論理ブロック数は、最大並列度に応じた論理ブロック数、または最小の論理ブロック数である１個に限らず、１個から最大並列度に応じた論理ブロック数までの任意の値を取ることが可能である。ＦＢ選択部４２は、要求された任意の論理ブロック数に応じて、複数のＦＢリスト５０−１〜５０−Ｌの中からリストを選択し、選択したリストからフリーブロックＦＢを取得する。
【００５５】
次に、複数のＦＢリスト５０−１〜５０−ＬからＦＢを取得するリストを選ぶためのアルゴリズムについて説明する。以下では、２つのアルゴリズム（第１のアルゴリズム、及び第２のアルゴリズム）について説明する。
【００５６】
第１のアルゴリズムでは、各バンク／チップ／プレーンで発生したバッドブロックＢＢの個数（ＢＢ数）に逆対応する値（例えばＢＢ数の逆数）や各バンク／チップ／プレーンで利用可能な論理ブロック数(フリーブロックＦＢの数とアクティブブロックＡＢの数との総和)や各ＦＢリストに属するブロックの個数などで重み付けしたラウンドロビン方式により、フリーブロックＦＢを取得するリスト（バンク／チップ／プレーン）を選ぶ。即ち、ＢＢ数が少ないほどフリーブロックＦＢを取得する確率が上昇するような重み付けがなされたラウンドロビンを採用する。バッドブロックＢＢとは、前述したように、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックＢＢとして登録される。
【００５７】
更新データの書き込みに伴って有効データが無くなったアクティブブロックＡＢは、フリーブロックＦＢとして登録され、再びアクティブブロックＡＢとして再利用されるのを待つ。ＢＢ数の多くなったバンク／チップ／プレーンでは、利用可能な論理ブロック数（フリーブロックＦＢの数とアクティブブロックＡＢの数との総和）が減少する。利用可能な論理ブロック数に拘らず同じ確率でフリーブロックＦＢを取得すると、バッドブロックＢＢの多発により論理ブロック数が減少しているＦＢ管理リスト５０では、再利用までの使用間隔が短くなる。ＮＡＮＤ型フラッシュメモリでは、再利用間隔（リラクゼーション時間）の短縮は寿命を縮めることに繋がるので避けなければならない。ＢＢ数で重みをつけたラウンドロビン方式では、論理ブロック数の多少に拘らずリラクゼーション時間を平準化することができる。
【００５８】
第２のアルゴリズムでは、バンク間とバンク内とで独立したラウンドロビン方式を採用する。バンク間では重みなしラウンドロビン方式を採用して、毎回バンクの異なるフリーブロックＦＢが取得できるようにする。バンク間には優先順位を設けていない（毎回異なるバンクのフリーブロックを取得できる）ので、最低でもバンク数だけの並列度は達成することができる。バンク内では、上述した第１のアルゴリズムと同様に、各チップ／プレーンで発生したＢＢ数に逆対応する値（例えばＢＢ数の逆数）や各バンク／チップ／プレーンで利用可能な論理ブロック数や各ＦＢリストに属するブロックの個数などで重み付けしたラウンドロビン方式により、フリーブロックＦＢを取得するリスト（チップ／プレーン）を選ぶことで、バンク内では、ＢＢ数が少ないチップとプレーンからフリーブロックＦＢ取得の機会が多くなり、リラクゼーション時間の平準化を図ることができる。
【００５９】
第２のアルゴリズムを採用すると更に次のような利点がある。１論理ブロックずつ論理ブロックを取得すると、バンク０→バンク１→バンク２→バンク３→…→バンクＮ(Ｎはバンク番号の最大値)→バンク０の順に、毎回異なるバンクからフリーブロックＦＢを取得することができるが、この点が重要な情報を二重化する場合に有効となる。図２に示す様に、バンクが異なると物理的なメモリチップが異なるので、ＲｙＢｙ０〜ＲｙＢｙ３に共通接続される信号線も別々となる。即ち、ＲｙＢｙ信号線の内一本が切れて動作不可能になっても、バックアップ側からデータが読み出せる。従って、重要な情報を二重化する場合に、物理的に同一のメモリチップ内に二重化する場合と比べて、信頼性の向上に寄与する。
【００６０】
二重化が必要な情報としては、例えば、上述したログやスナップショット等、ＳＳＤ１００上で動作するファームウェアの不揮発管理情報が考えられる。これらの情報が失われると、既にＮＡＮＤメモリ１０に書き込まれたデータを正常に読み出すことが不可能となるからである。この様な二重化が必要な管理情報を保存するメモリチップを選択する場合に、第２のアルゴリズムを採用する事で、１論理ブロックずつフリーブロックＦＢを取得するだけで、簡便に信頼性向上を見込むことができる。
【００６１】
なお、ラウンドロビンの重み付け値に次のような値を採用しても良い。ＮＡＮＤメモリ１０は、ホスト１から見えるユーザデータ記憶領域（リザーブド領域という）の他に、ホスト１からは見えない記憶領域（マージン領域という）を通常備えている。リザーブド領域は、ホスト１で使用される論理アドレスとしてのＬＢＡによって指定可能な領域である。マージン領域は、ＤＲＡＭ２０からリザーブド領域へのデータ転送の際のバッファ領域として使用されたり、管理情報（論理層管理テーブル３１，物理層管理テーブル３２などを含む）を記憶するためなどに使用される。
【００６２】
リザーブド領域は、ユーザから見えるＳＳＤの容量に等しいから、バッドブロックＢＢが発生しても、リザーブド領域の容量は常に一定に確保しなくてはいけない。従って、バッドブロックＢＢが増えると、ＳＳＤ全体としては、その分だけマージン領域が減ることになる。なお、ある１つの論理ブロックに注目して考えた場合、その論理ブロックがリザーブド領域／マージン領域のいずれに属するかは、ＳＳＤの使用状況に応じて時間と共に変化する。リザーブド領域として使用される論理ブロックをリザーブドブロックといい、マージン領域として使用される論理ブロックをマージンブロックという。
【００６３】
例えば、管理情報の記憶用として使用されていた論理ブロックが、解放されてフリーブロックリストに返却され、その後ユーザデータ記憶用の論理ブロックとして割り当てられた場合、この論理ブロックは管理情報の記憶用として使用されていた時点ではマージンブロックのうちの１つであったが、ユーザデータ記憶用の論理ブロックとして割り当てられた時点ではリザーブドブロックの１つとなっている。またブロックがフリーブロックリストに保持されている状況では、例外的な状況を除けば、１つのブロックがマージン／リザーブドのいずれに該当するかを、特定することは不可能である。
【００６４】
ＦＢリスト５０−１〜５０−Ｌ毎のマージンブロック数あるいは未使用マージンブロック数を管理するようにすれば、マージンブロック数あるいは未使用マージンブロック数で重み付けしたラウンドロビン方式を用いてフリーブロックＦＢを取得するリスト（チップ／プレーン）を選ぶことで、バンク内では、ＢＢ数が少ないチップとプレーンからフリーブロックＦＢ取得の機会を多くすることができる。マージンブロック数とは、マージン領域に属するフリーブロックＦＢの数とアクティブブロックＡＢの数との総和である。未使用マージンブロック数とは、マージン領域に属するフリーブロックＦＢの数である。
【００６５】
１本のＦＢリストのマージンブロック数、未使用マージンブロック数はつぎのようにして求める。マージン領域とリザーブド領域を合計したＮＡＮＤメモリ１０の全体の記憶容量をＦＢリストの全本数で除算し、この除算結果を１論理ブロックの記憶容量で除算すれば、１本のＦＢリストにエントリ可能な論理ブロックの個数Ｄが導出される。
【００６６】
図１２は、１本のＦＢリストにおけるマージン／リザーブの割り当てを概念的に示すものである。リザーブド領域は、前述したように常に一定量を確保しなくてはいけないので、１本のＦＢリストにエントリ可能な論理ブロックの個数Ｄからリザーブドブロック用の所定個数Ｄ１を差し引いた論理ブロック数Ｄ２は、バッドブロックＢＢが存在しなければ全てマージンブロック用となる。論理ブロック数Ｄ２から、このＦＢリストに対応するバンク／チップ／プレーンでのバッドブロックＢＢ数Ｄ３を差し引けば、マージンブロック数Ｄ４を求めることができる。また、マージンブロック数Ｄ４から管理領域やバッファ領域として使用中のマージンブロックを使用状況に応じて逐次減算すると、未使用マージンブロック数を求めることができる。
【００６７】
このように、各ＦＢリスト毎のマージンブロック数あるいは未使用マージンブロック数に応じて重み付けしたラウンドロビン方式により、フリーブロックＦＢを取得するリストを選ぶことで、バッドブロックの少ないバンク／チップ／プレーンから優先的にフリーブロックを取得することができる。
【００６８】
このように、本実施形態では、複数本のＦＢ管理リストを備え、各ＦＢ管理リストでは、同一のバンク番号／チップ番号／プレーン番号を持つ論理ブロックＦＢを管理するようにし、論理層管理部１２０ｃからの要求に応じて、ＦＢ選択部４２が必要な論理ブロック（フリーブロックＦＢ）を取得するようにしているので、大きな並列度が必要なときは多並列処理による高速化が可能となり、また並列度が少なくて良い場合は、書き込み効率を優先した処理が可能となる。
【００６９】
［第２の実施形態］
図１３は、この発明の第２の実施形態を示すものであり、図９のＦＢ管理部４０内に、並列動作可能なフリーブロックＦＢ数を計算するＦＢ並列度計算部４５が追加されている。
【００７０】
論理層管理部１２０ｃは、ＦＢ提供部４３にフリーブロックＦＢを要求する前に、ＦＢ並列度計算部４５に現在並列動作可能なフリーブロックＦＢ数の計算を要求する。ＦＢ並列度計算部４５は、論理層管理部１２０ｃからの要求により、現在、並列動作可能なフリーブロックＦＢ数を計算する。並列動作可能なフリーブロックＦＢ数は次の手順で求める。
（１）バンク内での並列度を求める。
（２）各バンク内で求めた並列度を全バンク分加算する。
【００７１】
バンク内での並列度（そのバンクだけで、何個のフリーブロックＦＢを同時に使用することができるか）は、バンク内のフリーブロックＦＢで同一チップ番号を持つプレーン０とプレーン１の組が存在するか否か（倍速モードで動作可能なプレーンの組が存在するか否か）で決まる。あるバンク内で同一チップ番号を持つプレーン０とプレーン１の組が存在すれば、これらは倍速モードで並列動作が可能であるため並列度２、プレーン０かプレーン１の一方しか存在しない場合は並列度１、バンク内にフリーブロックＦＢが全くない場合は並列度０である。
【００７２】
ＦＢ並列度計算部４５は、計算した並列動作可能なフリーブロックＦＢ数を論理層管理部１２０ｃに通知する。論理層管理部１２０ｃは、通知結果(並列度)に従って自身の処理を変更することも可能である。例えば、並列度が十分に確保できる場合は大量のデータを集めてから書き込み処理を実行する。
【００７３】
このように、第２の実施形態では、可能な並列数を計算して論理層管理部１２０ｃに通知するようにしているので、論理層管理部１２０ｃは、通知結果に応じて自身の処理を変更することでより効率の良い処理が可能となり、書き込み効率が向上する。
【００７４】
［第３の実施の形態］
第３の実施の形態では、第２の実施の形態のより具体的な処理内容について説明する。さらに、第３の実施の形態では、物理層管理部１２０ｄが論理層管理部１２０ｃから要求された並列度ｎを確保する際に、倍速優先で並列度を確保する倍速優先モードと、バンク並列優先で並列度を確保するバンク優先モードとの２つのモードを切替え可能にしている。
【００７５】
図１３に示すＦＢ並列度計算部４５は、図１４に示すような余裕度テーブルを有している。図１４に示すように、余裕度テーブルでは、各バンク毎に、倍速モードを使用する場合におけるチップの余裕度に関する情報と、倍速を使用せずに通常モードを使用する場合におけるプレーンの余裕度に関する情報が登録されている。余裕度テーブルは登録データを更新すべき事象が発生する度に更新される。
【００７６】
図１０に示した、同一のバンク番号／チップ番号／プレーン番号を持つ論理ブロックのリストとして構成される１つのＦＢリスト５０−１〜５０−Ｌにおける現時点でのフリーブロックＦＢ数を「プレーン余裕度」と定義する。１つのＦＢリスト５０−１におけるフリーブロックＦＢ数が例えば２０個であれば、そのＦＢリストが持つプレーン余裕度＝２０となる。また、チップを構成する２つの「プレーン余裕度」をＸ，Ｙとするとき、小さい方の「プレーン余裕度」をそのチップの「チップ余裕度」として定義する。あるチップにおけるプレーン０のプレーン余裕度が２０で、同じチップにおけるプレーン１のプレーン余裕度が１５の場合、そのチップのチップ余裕度は１５となる。
【００７７】
余裕度テーブルにおける倍速モード視点の欄には、当該バンクに属するチップの中で、チップ余裕度が一番高いのはどのチップであるかを示す情報（チップ番号）と、チップの余裕度の値（以下この値を「倍速時のバンク余裕度」と呼ぶ）が保持されている。余裕度テーブルにおける通常モード視点の欄には、当該バンクに属するプレーンの中で、余裕度が一番高いのはどのチップのどのプレーンかを示す情報（チップ番号／プレーン番号）と、プレーンの余裕度の値（以下この値を「通常時のバンク余裕度」と呼ぶ）が保持されている。倍速時のバンク余裕度に基づいて倍速優先モードの際のバンク間の選択優先度が決められ、通常時のバンク余裕度に基づいてバンク優先モードの際のバンク間の選択優先度が決められる。
【００７８】
例えば、バンク０における各チップ／各プレーンにおけるプレーン余裕度およびチップ余裕度が図１５に示すような状態にあるとき、バンク０において、チップ余裕度が一番高いチップは、チップ余裕度２０を持つチップ３であり、またプレーン余裕度が一番高いプレーンは、プレーン余裕度３０を持つチップ０のプレーン１である。したがって、余裕度テーブルにおけるバンク０の倍速モード視点の欄には、チップ３を示すチップ番号と、その余裕度の値２０が登録され、同通常モード視点の欄には、チップ０／プレーン１を示すチップ番号／プレーン番号と、その余裕度の値３０が登録される。
【００７９】
前述したように、上位層としての論理層管理部１２０ｃがＦＢ提供部４３にフリーブロックＦＢ選択を要求する場合には、論理層管理部１２０ｃは、その時点で選択可能な並列度の最高値を、あらかじめＦＢ並列度計算部４５に問い合わせた上で、その最高値を越えない並列度でのブロック割り当てを、ＦＢ提供部４３を介してＦＢ選択部４２に要求する。従ってＦＢ選択部４２は、論理層管理部１２０ｃからフリーブロックＦＢの割り当てを要求された場合、指定された並列度での割り当てを、必ず達成できる状態にある。
【００８０】
ＦＢ並列度計算部４５での並列度計算は、第２の実施の形態での説明と同様、以下のような手順で行う。
（a）バンク０の並列度を以下のようにして求める。
（a-1）倍速時の余裕度が０より大きい場合はバンク０の並列度を２とする。
（a-2）倍速時の余裕度が０で、かつ通常時の余裕度が０より大きい場合には、バンク０の並列度を１とする。
（a-3）倍速時/通常時の余裕度が共に０の場合は、バンク０の並列度を０とする。
（b）バンク１〜Ｎの並列度を、バンク０と同様にして求める。
（c）（a）（b）で求めた各バンクの並列度の和を、その時点でのブロック選択の並列度とし、論理層管理部１２０ｃに報告する。
【００８１】
つぎに、図１６に従って倍速優先で並列度を確保する倍速優先方式について説明する。前述したように、倍速動作はバンクとチップが同一でプレーンが異なるフリーブロックＦＢの組に限られる。論理層管理部１２０ｃから、並列度ｎでのブロック割り当てを要求されたものとする。
【００８２】
図１２のＦＢ選択部４２では、図１４に示した余裕度テーブルを参照し、倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、２つのプレーンに属するフリーブロックＦＢを１つずつ、合計２つ選択する（ステップＳ１００）。ＦＢ選択部４２は、選択したフリーブロックＦＢの合計がＩｎｔ（ｎ／２）＊２に達したか否かを判定する（ステップＳ１１０）。Ｉｎｔ（ｎ／２）は、ｎ／２の除算結果の小数点以下を切り捨てて整数値とする演算を表している。例えば、ｎ＝３のとき、Ｉｎｔ（ｎ／２）＝１であり、Ｉｎｔ（ｎ／２）＊２＝２である。ステップＳ１１０の判定結果がＹｅｓのときは、手順はステップＳ１２５に移行し、その判定結果がＮｏのとき、手順はステップＳ１２０に移行する。
【００８３】
ステップＳ１２０では、ＦＢ選択部４２は、余裕度テーブルを参照し、倍速時の余裕度が０でないバンクが存在するか否かを判定する（ステップＳ１２０）。倍速時の余裕度が０でないバンクが存在している場合は、ＦＢ選択部４２は、先のステップＳ１００で既に選択されたバンク以外のなかで、倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、２つのプレーンに属するフリーブロックＦＢを１つずつ、合計２つ選択する（ステップＳ１００）。
【００８４】
このようにして、選択したフリーブロックＦＢの総和がＩｎｔ（ｎ／２）＊２に達するか、倍速時の余裕度が０でないバンクが無くなるまで、ステップＳ１００〜Ｓ１２０の手順を繰り返す。
【００８５】
ステップＳ１２５において、ＦＢ選択部４２は、選択したフリーブロックＦＢの合計が論理層管理部１２０ｃから要求された並列度ｎに達したか否かを判定し、合計が並列度ｎに達した場合はここで処理を終了する。
【００８６】
ステップＳ１２５の判断がＮＯの場合、ＦＢ選択部４２は、余裕度テーブルを参照し、未選択バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ／プレーンに属するフリーブロックＦＢを１つ選択する（ステップＳ１３０）。これ以降、選択されたフリーブロックの総和が並列度ｎに達するまで、未選択バンクについて、ステップＳ１３０，Ｓ１４０の処理を繰り返す。選択されたフリーブロックの総和がｎに達した場合には、選択処理を終了する。
【００８７】
例えば、余裕度テーブルが図１７に示すような状態であったとする。図１７において、バンク０においては、チップ０が倍速時の最大余裕度を示し、その余裕度は１５であり、チップ０／プレーン１が通常時の最大余裕度を示し、その余裕度は２０である。バンク１においては、チップ２が倍速時の最大余裕度を示し、その余裕度は１０であり、チップ２／プレーン０が通常時の最大余裕度を示し、その余裕度は３０である。バンク２においては、倍速時の最大余裕度は０であり、チップ３／プレーン１が通常時の最大余裕度を示し、その余裕度は２７である。バンク３においては、倍速時の最大余裕度は０であり、チップ２／プレーン０が通常時の最大余裕度を示し、その余裕度は９である。
【００８８】
このようなテーブル状態の場合に、並列度ｎ＝５が論理層管理部１２０ｃから要求され、倍速優先のフリーブロックＦＢ選択を行うとする。まず、倍速時の最大余裕度１５を有するバンク０が選択され、バンク０のチップ０のプレーン０，１からフリーブロックＦＢが１個ずつ計２個選択される（ステップＳ１００）。この状態では、ステップＳ１１０、Ｓ１２０の判断はＮＯになるので、つぎに、バンク０以外のバンク１〜３のなかから倍速時の最大余裕度１０を有するバンク１が選択され、バンク１のチップ２のプレーン０，１からフリーブロックＦＢが１個ずつ計２個選択される（ステップＳ１００）。この段階で、選択されたフリーブロック数は４個となり、ステップＳ１１０の判断はＹｅｓとなり、ステップＳ１２５の判断がＮＯとなり、手順はステップＳ１３０に移行する。
【００８９】
ステップＳ１３０においては、未選択バンク２，３のなかで、通常時の最大余裕度２７を有するバンク２を選択し、バンク２のチップ３のプレーン１からフリーブロックＦＢが１個選択される。この段階で選択されたフリーブロック数は５個となり、ステップＳ１４０の判断はＹＥＳとなるので、ここで選択処理は終了する。
【００９０】
この結果、バンク０のチップ０のプレーン０，１と、バンク１のチップ２のプレーン０，１と、バンク２のチップ３のプレーン１からフリーブロックＦＢが１個ずつ選択され、倍速優先で並列度５を達成させることができる。
【００９１】
また、図１７に示すテーブル状態の場合に、並列度ｎ＝３が論理層管理部１２０ｃから要求され、倍速優先のフリーブロックＦＢ選択が行われる場合は、まず、倍速時の最大余裕度１５を有するバンク０が選択され、バンク０のチップ０のプレーン０，１からフリーブロックＦＢが１個ずつ計２個選択される（ステップＳ１００）。この段階で、選択されたフリーブロック数は２個となり、ステップＳ１１０の判断はＹｅｓとなり、ステップＳ１２５の判断がＮＯとなり、手順はステップＳ１３０に移行される。ステップＳ１３０においては、未選択バンク１，２，３のなかで、通常時の最大余裕度３０を有するバンク１を選択し、バンク１のチップ２のプレーン０からフリーブロックＦＢが１個選択される。この段階で選択されたフリーブロック数は３個となり、ステップＳ１４０の判断はＹＥＳとなるので、ここで選択処理は終了する。
【００９２】
この結果、バンク０のチップ０のプレーン０，１と、バンク１のチップ２のプレーン０からフリーブロックＦＢが１個ずつ選択され、倍速優先で並列度３を達成させることができる。
【００９３】
つぎに、図１８に従ってバンク並列優先で並列度を確保するバンク優先方式について説明する。前述したように、論理層管理部１２０ｃから、並列度ｎでのブロック割り当てを要求されたものとする。
【００９４】
ＦＢ選択部４２では、まず、余裕度テーブルを参照して、通常時の余裕度が０でないバンクの個数ｍを求める（ステップＳ２００）。論理層管理部１２０ｃから指定された並列度ｎとｍとを比較し（ステップＳ２１０）、ｍ≧ｎである場合は、ステップＳ２２０〜Ｓ２３０の処理を実行し、ｍ＜ｎである場合は、ステップＳ２５０〜Ｓ２８０の処理を実行する。
【００９５】
ｍ≧ｎである場合、ＦＢ選択部４２は、余裕度テーブルを参照し、全バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ／プレーンに属するフリーブロックＦＢを１つ選択する（ステップＳ２２０）。ＦＢ選択部４２は、選択したフリーブロックＦＢの合計が論理層管理部１２０ｃから要求された並列度ｎに達したか否かを判定し（ステップＳ２３０）、達していない場合は、これ以降、選択されたフリーブロックの総和が並列度ｎに達するまで、未選択バンクについて、ステップＳ２２０，Ｓ２３０の処理を繰り返す。選択されたフリーブロックの総和がｎに達した場合には、選択処理を終了する。
【００９６】
ｍ＜ｎである場合、ＦＢ選択部４２は、余裕度テーブルを参照し、全バンクから倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、２つのプレーンに属するフリーブロックＦＢを１つずつ、合計２つ選択する（ステップＳ２５０）。ＦＢ選択部４２は、選択したフリーブロックＦＢの合計が２（ｎ−ｍ）に達したか否かを判定し（ステップＳ２６０）、合計が２（ｎ−ｍ）に達していない場合は、未選択バンクから倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、２つのプレーンに属するフリーブロックＦＢを１つずつ、合計２つ選択する（ステップＳ２５０）。選択したフリーブロックＦＢの合計が２（ｎ−ｍ）に達するまで、ステップＳ２５０，Ｓ２６０の処理を繰り返す。
【００９７】
選択したフリーブロックＦＢの合計が２（ｎ−ｍ）に達した場合は、ＦＢ選択部４２は、余裕度テーブルを参照し、未選択バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ／プレーンに属するフリーブロックＦＢを１つ選択する（ステップＳ２７０）。これ以降、選択されたフリーブロックの総和が並列度ｎに達するまで、未選択バンクについて、ステップＳ２７０，Ｓ２８０の処理を繰り返す。選択されたフリーブロックの総和がｎに達した場合には（ステップＳ２８０）、選択処理を終了する。
【００９８】
図１７に示したテーブル状態の場合に、並列度ｎ＝３が論理層管理部１２０ｃから要求され、バンク並列優先のフリーブロックＦＢ選択を行うとする。図１７に示したテーブル状態の場合、通常時の余裕度が０でないバンク数ｍ＝４であるので、ステップＳ２１０においてｍ≧ｎが成立する。先ず、通常時の余裕度が最大のバンク１が選択され、バンク１のチップ２のプレーン０からフリーブロックＦＢが１個選択される（ステップＳ２２０）。つぎに、バンク２が選択され、バンク２のチップ３のプレーン１からフリーブロックＦＢが１個選択され、さらにバンク０が選択され、バンク０のチップ０のプレーン１からフリーブロックＦＢが１個選択されることで、３個のフリーブロックが選択されて、並列度ｎ＝３を達成することができる。
【００９９】
つぎに、図１７に示したテーブル状態の場合に、並列度ｎ＝５が論理層管理部１２０ｃから要求され、バンク並列優先のフリーブロックＦＢ選択を行うとする。ｍ＝４であるので、ステップＳ２１０においてｍ＜ｎが成立する。まず、ステップＳ２５０において倍速時の最大余裕度１５を有するバンク０が選択され、バンク０のチップ０のプレーン０，１からフリーブロックＦＢが１個ずつ計２個選択される。この選択段階で、ステップＳ２６０の判断がＹＥＳとなり、ステップＳ２７０，Ｓ２８０の処理を３回繰り返すことで、未選択バンク１〜３からフリーブロックＦＢが１個ずつ選択される（バンク１のチップ２のプレーン０、バンク２のチップ３のプレーン１、バンク３のチップ２のプレーン０）。これにより、合計５個のフリーブロックＦＢが選択され、並列度ｎ＝５を達成することができる。
【０１００】
このようにバンク並列優先の場合は、ステップＳ２５０，Ｓ２６０の処理を行うことで、バンク並列でまかないきれない分だけ倍速モードを使うようにしている。すなわち、４バンク、２プレーン構成の場合に５並列が要求された場合に、バンク並列優先を行う場合は、１バンクのみ倍速モードを使用し、残りの３バンクは通常モード使用する。因みに、４バンク、２プレーン構成の場合に５並列が要求された場合に、倍速優先を行う場合は、可能な限り２バンクで倍速モードを使用し、残りの１バンクで通常モードを使用する。
【０１０１】
このように、第３の実施の形態では、通常時のバンクの余裕度および倍速時のバンク余裕度が登録された余裕度テーブルを用い、要求された並列度ｎを確保する際に、倍速優先で並列度を確保する倍速優先モードと、バンク並列優先で並列度を確保するバンク優先モードとの２つのモードを切替え可能にしている。倍速モードを使用すると、通常モードより、より大きな並列度を確保する可能性が高くなる。したがって、要求された並列度が小さいときは、通常モード優先のバンク並列優先方式を使用し、要求された並列度が大きいときに、倍速優先方式を使用するようにすれば、小さな並列度で動作させるときは、倍速動作が可能な論理ブロックの組を多く確保しておくことが可能になり、実際に大きな並列度で動作させるときに、倍速動作を多くの回数続行させる可能性が高くなり、大きなデータの書き込み処理を高速化することが可能となる。
【０１０２】
なお、第３の実施の形態では、余裕度テーブルには、現時点でのフリーブロックＦＢ数を余裕度として登録し、この余裕度に基づいて倍速優先モードあるいはバンク優先モードでのＦＢリストを選択するようにしたが、第１の実施の形態で説明したバッドブロックＢＢ数に逆対応する値（例えばＢＢ数の逆数）や各バンク／チップ／プレーンで利用可能な論理ブロック数やマージンブロックや未使用マージンブロック数を余裕度とし、この余裕度に応じて倍速優先モードあるいはバンク優先モードでのＦＢリストを選択するようにしてもよい。
【０１０３】
［第４の実施の形態］
図１９は、ＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１０４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【０１０５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１０６】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１０７】
図２０は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１０８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１０９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１１０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１１１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１１２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＤＲＡＭから構成される。
【０１１３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１１４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１１５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【０１１６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【０１１７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１１８】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１１９】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１２０】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、以上のように表わしかつ記述した特定の詳細及び代表的な実施形態に限定されるものではない。したがって、添付のクレーム及びその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【０１２１】
１０  ＮＡＮＤ型フラッシュメモリ、２０  ＤＲＡＭ、４０  フリーブロック管理部、５０  フリーブロック管理リスト、１００  ＳＳＤ。
【図１】
0005323199.tif 000002
【図２】
0005323199.tif 000003
【図３】
0005323199.tif 000004
【図４】
0005323199.tif 000005
【図５】
0005323199.tif 000006
【図６】
0005323199.tif 000007
【図７】
0005323199.tif 000008
【図８】
0005323199.tif 000009
【図９】
0005323199.tif 000010
【図１０】
0005323199.tif 000011
【図１１】
0005323199.tif 000012
【図１２】
0005323199.tif 000013
【図１３】
0005323199.tif 000014
【図１４】
0005323199.tif 000015
【図１５】
0005323199.tif 000016
【図１６】
0005323199.tif 000017
【図１７】
0005323199.tif 000018
【図１８】
0005323199.tif 000019
【図１９】
0005323199.tif 000020
【図２０】
0005323199.tif 000021