(57)【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に基づいて、複数個の物理セクタ領域を含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の論理セクタ領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理セクタ領域の先頭を検索する空きセクタ領域検索手段と、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータを、前記空きセクタ領域検索手段によって検出されたデータが書き込まれていない先頭の前記物理セクタ領域から、末尾の前記物理セクタ領域に向かって順次書き込んでいくデータ書き込み手段と、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータの先頭データに対応する前記論理セクタ領域である第１の領域が、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域である第２の領域に後続する領域であるか否かを判断する判断手段と、
前記判断手段により前記第１の領域は前記第２の領域に後続する領域ではないと判断された場合に、前記データ書き込み手段により前記一連のデータが書き込まれた前記物理ブロック内の前記物理セクタ領域と、前記物理ブロックに対応する前記論理ブロック内の前記論理セクタ領域との対応関係を示すセクタ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理セクタ領域の次の前記物理セクタ領域に書き込むセクタ管理情報書き込み手段と、
を備え、
前記判断手段は、前記末尾の前記物理セクタ領域に記憶されているデータが前記セクタ管理情報である場合、前記第１の領域は前記第２の領域に後続する領域ではないと判断する、
ことを特徴とするメモリコントローラ。
【請求項２】
前記判断手段は、前記論理ブロック内の前記論理セクタ領域に付けられた通し番号に基づいて前記第１の領域が前記第２の領域に後続する領域であるか否かを判断する判断手段であって、前記第１の領域に対応する通し番号が第２の領域に対応する通し番号の次の番号でないときに、前記第１の領域は前記第２の領域に後続する領域ではないと判断する、
ことを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記アクセス指示により指定された前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内の前記物理セクタ領域に記憶されているデータを、前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されている前記セクタ管理情報に基づいて読み出すデータ読み出し手段を更に備える、
ことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記データ読み出し手段は、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内に前記セクタ管理情報が記憶されていないとき、前記物理ブロックに記憶されているデータは、前記物理ブロック内の先頭の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域以降の前記論理セクタ領域に対応するデータが前記論理セクタ領域の順番で書き込まれているとみなして、データの読出しを行う、
ことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
ホストシステムから与えられるアクセス指示に基づいて、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の論理ページで構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の論理ページとして指定された論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理ページの先頭を検索する空きページ検索手段と、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータを、前記空きページ検索手段によって検出されたデータが書き込まれていない先頭の前記物理ページから、末尾の前記物理ページに向かって順次書き込んでいくデータ書き込み手段と、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータの先頭データに対応する前記論理ページである第１のページが、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されているデータに対応する前記論理ページである第２のページに後続するページであるか否かを判断する判断手段と、
前記判断手段により前記第１のページは前記第２のページに後続するページではないと判断された場合に、前記データ書き込み手段により前記一連のデータが書き込まれた前記物理ブロック内の前記物理ページと、前記物理ブロックに対応する前記論理ブロック内の前記論理ページとの対応関係を示すページ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理ページの次の前記物理ページに書き込むページ管理情報書き込み手段と、
を備え、
前記判断手段は、前記末尾の前記物理ページに記憶されているデータが前記ページ管理情報である場合、前記第１のページは前記第２のページに後続するページではないと判断する、
ことを特徴とするメモリコントローラ。
【請求項６】
前記判断手段は、前記論理ブロック内の前記論理ページに付けられた通し番号に基づいて前記第１のページが前記第２のページに後続するページであるか否かを判断する判断手段であって、前記第１のページに対応する通し番号が第２のページに対応する通し番号の次の番号でないときに、前記第１のページは前記第２のページに後続するページではないと判断する、
ことを特徴とする請求項５記載のメモリコントローラ。
【請求項７】
前記アクセス指示により指定された前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内の前記物理ページに記憶されているデータを、前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されている前記ページ管理情報に基づいて読み出すデータ読み出し手段を更に備える、
ことを特徴とする請求項５又は６に記載のメモリコントローラ。
【請求項８】
前記データ読み出し手段は、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内に前記ページ管理情報が記憶されていないとき、前記物理ブロックに記憶されているデータは、前記物理ブロック内の先頭の前記物理ページに記憶されているデータに対応する前記論理ページ以降の前記論理ページに対応するデータが前記論理ページの順番で書き込まれているとみなして、データの読出しを行う、
ことを特徴とする請求項７に記載のメモリコントローラ。
【請求項９】
請求項１乃至８のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリと
を備えるフラッシュメモリシステム。
【請求項１０】
ホストシステムから与えられるアクセス指示に基づいて、複数個の物理セクタ領域を含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
複数個の論理セクタ領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理セクタ領域の先頭を検索する空きセクタ領域検索ステップと、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータを、前記空きセクタ領域検索ステップによって検出されたデータが書き込まれていない先頭の前記物理セクタ領域から、末尾の前記物理セクタ領域に向かって順次書き込んでいくデータ書き込みステップと、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータの先頭データに対応する前記論理セクタ領域である第１の領域が、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域である第２の領域に後続する領域であるか否かを判断する判断ステップと、
前記判断ステップにより前記第１の領域は前記第２の領域に後続する領域ではないと判断された場合に、前記データ書き込みステップにより前記一連のデータが書き込まれた前記物理ブロック内の前記物理セクタ領域と、前記物理ブロックに対応する前記論理ブロック内の前記論理セクタ領域との対応関係を示すセクタ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理セクタ領域の次の前記物理セクタ領域に書き込むセクタ管理情報書き込みステップと、
を備え、
前記判断ステップでは、前記末尾の前記物理セクタ領域に記憶されているデータが前記セクタ管理情報である場合、前記第１の領域は前記第２の領域に後続する領域ではないと判断する、
ことを特徴とするフラッシュメモリの制御方法。
【請求項１１】
ホストシステムから与えられるアクセス指示に基づいて、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
複数個の論理ページで構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の論理ページとして指定された論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理ページの先頭を検索する空きページ検索ステップと、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータを、前記空きページ検索ステップによって検出されたデータが書き込まれていない先頭の前記物理ページから、末尾の前記物理ページに向かって順次書き込んでいくデータ書き込みステップと、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータの先頭データに対応する前記論理ページである第１のページが、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されているデータに対応する前記論理ページである第２のページに後続するページであるか否かを判断する判断ステップと、
前記判断ステップにより前記第１のページは前記第２のページに後続するページではないと判断された場合に、前記データ書き込みステップにより前記一連のデータが書き込まれた前記物理ブロック内の前記物理ページと、前記物理ブロックに対応する前記論理ブロック内の前記論理ページとの対応関係を示すページ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理ページの次の前記物理ページに書き込むページ管理情報書き込みステップと、
を備え、
前記判断ステップでは、前記末尾の前記物理ページに記憶されているデータが前記ページ管理情報である場合、前記第１のページは前記第２のページに後続するページではないと判断する、
ことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
従来、論理ブロックに含まれる論理ページと、この論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係を固定せずに、ホストシステムから与えられる各論理ページに対応するデータを、ホストシステムから与えられる順番で物理ブロック内の物理ページに書き込んでいく方法が知られている（例えば特許文献１参照）。かかる書き込み方法では、物理ブロック内のデータが書き込まれていないページに対して、先頭から順番にホストシステムから与えられるデータを書き込んでいくため、データの書き換えを容易に行うことができる。一方、データを読み出すときには、論理ページと物理ページの対応関係が固定されていないため、論理ページと物理ページの対応関係を把握する必要が生じる。
【０００３】
【特許文献１】特開２００５−１９６７３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
各物理ページの冗長領域に対応する論理ページ（又は論理セクタ領域）の番号等の論理ページ（又は論理セクタ領域）を特定する情報を書き込んでおけば、この情報に基づいて、論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係を把握することができる。
【０００５】
しかし、データが書き込まれている各物理ページから論理ページ（又は論理セクタ領域）を特定する情報を順次読み出して、論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係を把握するのでは、処理効率が良くない。
【０００６】
そこで、本発明は、効率的に論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係を把握することができる論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係の管理技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第一の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、複数個の物理セクタ領域を含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の論理セクタ領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理セクタ領域の先頭を検索する空きセクタ領域検索手段と、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータを、前記空きセクタ領域検索手段によって検出されたデータが書き込まれていない先頭の前記物理セクタ領域から、末尾の前記物理セクタ領域に向かって順次書き込んでいくデータ書き込み手段と、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータの先頭データに対応する前記論理セクタ領域である第１の領域が、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域である第２の領域に後続する領域であるか否かを判断する判断手段と、
前記判断手段により前記第１の領域は前記第２の領域に後続する領域ではないと判断された場合に、前記データ書き込み手段により前記一連のデータが書き込まれた前記物理ブロック内の前記物理セクタ領域と、前記物理ブロックに対応する前記論理ブロック内の前記論理セクタ領域との対応関係を示すセクタ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理セクタ領域の次の前記物理セクタ領域に書き込むセクタ管理情報書き込み手段とを備える。前記判断手段は、前記末尾の前記物理セクタ領域に記憶されているデータが前記セクタ管理情報である場合、前記第１の領域は前記第２の領域に後続する領域ではないと判断する。
【０００８】
好適な実施形態では、前記論理ブロック内の前記論理セクタ領域に付けられた通し番号に基づいて前記第１の領域が前記第２の領域に後続する領域であるか否かを判断する判断手段であって、前記第１の領域に対応する通し番号が第２の領域に対応する通し番号の次の番号でないときに、前記第１の領域は前記第２の領域に後続する領域ではないと判断する。
【０００９】
好適な実施形態では、前記アクセス指示により指定された前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内の前記物理セクタ領域に記憶されているデータを、前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されている前記セクタ管理情報に基づいて読み出すデータ読み出し手段を更に備える。
【００１０】
好適な実施形態では、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内に前記セクタ管理情報が記憶されていないとき、前記物理ブロックに記憶されているデータは、前記物理ブロック内の先頭の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域以降の前記論理セクタ領域に対応するデータが前記論理セクタ領域の順番で書き込まれているとみなして、データの読出しを行う。
【００１１】
本発明の第二の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の論理ページで構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の論理ページとして指定された論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理ページの先頭を検索する空きページ検索手段と、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータを、前記空きページ検索手段によって検出されたデータが書き込まれていない先頭の前記物理ページから、末尾の前記物理ページに向かって順次書き込んでいくデータ書き込み手段と、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータの先頭データに対応する前記論理ページである第１のページが、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されているデータに対応する前記論理ページである第２のページに後続するページであるか否かを判断する判断手段と、
前記判断手段により前記第１のページは前記第２のページに後続するページではないと判断された場合に、前記データ書き込み手段により前記一連のデータが書き込まれた前記物理ブロック内の前記物理ページと、前記物理ブロックに対応する前記論理ブロック内の前記論理ページとの対応関係を示すページ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理ページの次の前記物理ページに書き込むページ管理情報書き込み手段とを備える。前記判断手段は、前記末尾の前記物理ページに記憶されているデータが前記ページ管理情報である場合、前記第１のページは前記第２のページに後続するページではないと判断する。
【００１２】
好適な実施形態では、前記論理ブロック内の前記論理ページに付けられた通し番号に基づいて前記第１のページが前記第２のページに後続するページであるか否かを判断する判断手段であって、前記第１のページに対応する通し番号が第２のページに対応する通し番号の次の番号でないときに、前記第１のページは前記第２のページに後続するページではないと判断する。
【００１３】
好適な実施形態では、前記アクセス指示により指定された前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内の前記物理ページに記憶されているデータを、前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されている前記ページ管理情報に基づいて読み出すデータ読み出し手段を更に備える。
【００１４】
好適な実施形態では、前記データ読み出し手段は、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内に前記ページ管理情報が記憶されていないとき、前記物理ブロックに記憶されているデータは、前記物理ブロック内の先頭の前記物理ページに記憶されているデータに対応する前記論理ページ以降の前記論理ページに対応するデータが前記論理ページの順番で書き込まれているとみなして、データの読出しを行う。
【００１５】
本発明の第三の側面に従うフラッシュメモリシステムは、前記第一又は第二の側面に従うメモリコントローラと、前記メモリコントローラによってアクセスされるフラッシュメモリとを備える。
【００１６】
本発明の第四の側面に従うフラッシュメモリの制御方法は、複数個の物理セクタ領域を含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
複数個の論理セクタ領域で構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理セクタ領域の先頭を検索する空きセクタ領域検索ステップと、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータを、前記空きセクタ領域検索ステップによって検出されたデータが書き込まれていない先頭の前記物理セクタ領域から、末尾の前記物理セクタ領域に向かって順次書き込んでいくデータ書き込みステップと、
前記アクセス指示により前記論理アクセス領域に対して書き込むことが指示された一連のデータの先頭データに対応する前記論理セクタ領域である第１の領域が、前記論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理セクタ領域に記憶されているデータに対応する前記論理セクタ領域である第２の領域に後続する領域であるか否かを判断する判断ステップと、
前記判断ステップにより前記第１の領域は前記第２の領域に後続する領域ではないと判断された場合に、前記データ書き込みステップにより前記一連のデータが書き込まれた前記物理ブロック内の前記物理セクタ領域と、前記物理ブロックに対応する前記論理ブロック内の前記論理セクタ領域との対応関係を示すセクタ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理セクタ領域の次の前記物理セクタ領域に書き込むセクタ管理情報書き込みステップとを備える。前記判断ステップでは、前記末尾の前記物理セクタ領域に記憶されているデータが前記セクタ管理情報である場合、前記第１の領域は前記第２の領域に後続する領域ではないと判断する。
【００１７】
本発明の第五の側面に従うフラッシュメモリの制御方法は、ホストシステムから与えられるアクセス指示に基づいて、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
複数個の論理ページで構成された論理ブロックと前記物理ブロックとの対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の論理ページとして指定された論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれていない前記物理ページの先頭を検索する空きページ検索ステップと、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータを、前記空きページ検索ステップによって検出されたデータが書き込まれていない先頭の前記物理ページから、末尾の前記物理ページに向かって順次書き込んでいくデータ書き込みステップと、
前記アクセス指示により前記論理アクセスページに対して書き込むことが指示された一連のデータの先頭データに対応する前記論理ページである第１のページが、前記論理アクセスページが属する前記論理ブロックと対応する前記物理ブロック内のデータが書き込まれている末尾の前記物理ページに記憶されているデータに対応する前記論理ページである第２のページに後続するページであるか否かを判断する判断ステップと、
前記判断ステップにより前記第１のページは前記第２のページに後続するページではないと判断された場合に、前記データ書き込みステップにより前記一連のデータが書き込まれた前記物理ブロック内の前記物理ページと、前記物理ブロックに対応する前記論理ブロック内の前記論理ページとの対応関係を示すページ管理情報を、前記一連のデータの末尾データが書き込まれた前記物理ページの次の前記物理ページに書き込むページ管理情報書き込みステップとを備える。前記判断ステップでは、前記末尾の前記物理ページに記憶されているデータが前記ページ管理情報である場合、前記第１のページは前記第２のページに後続するページではないと判断する。
【発明の効果】
【００１８】
効率的に論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係を把握することができる論理ページ（又は論理セクタ領域）と物理ページ（又は物理セクタ領域）の対応関係の管理技術を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の幾つかの実施の形態を、図面を参照しながら詳細に説明する。
【００２０】
＜第１の実施形態＞
【００２１】
図１は、本発明の第１の実施形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００２２】
図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００２３】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２４】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（Error Collection Code）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００２５】
ホストインターフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２６】
ホストインターフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２にはアクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡ（Logical Block Address）（後述）が書き込まれる。
【００２７】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル（後述）等が記憶される。
【００２８】
バッファ９は、フラッシュメモリ２から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、バッファ９は、フラッシュメモリ２に書き込むデータを、フラッシュメモリ２が書き込み可能な状態となるまで保持する。
【００２９】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００３０】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error Collection Code）を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００３１】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００３２】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインターフェースブロック１０に処理を実行させる。
【００３３】
フラッシュメモリ２はＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。
【００３４】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ（物理ページ）単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。物理ブロックは、複数のページ（物理ページ）で構成される。例えば、１個の物理ページは、所定サイズ（例えば２０４８バイト）のユーザ領域と、所定サイズ（例えば６４バイト）の冗長領域とで構成され、１個の物理ブロックが、所定個数（例えば６４個）の物理ページで構成されている。ユーザ領域は、ホストシステム４から与えられるデータを記憶するための領域であり、所定個数（例えば４個）の物理セクタ領域（５１２バイト単位の記憶領域）で構成されている。冗長領域は、誤り訂正符号（ＥＣＣ：Error Collection Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００３５】
図２は、本実施形態で用いるＮＡＮＤ型フラッシュメモリの１個の物理ページに含まれる記憶領域を示している。
【００３６】
ユーザ領域２５は、ホストシステム４から与えられるデータを記憶するための領域である。冗長領域２６は、誤り訂正符号（ＥＣＣ：Error Collection Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００３７】
本実施形態では、図２に示すようにユーザ領域２５は、１セクタ（例えば５１２バイト）の物理セクタ領域６０（６０ａ−６０ｄ）に分割して使用される。冗長領域２６は、所定サイズ（例えば８バイト）の共通冗長領域５０と、所定サイズ（例えば１４バイト）の分割冗長領域７０（７０ａ−７０ｄ）に分割して使用される。各物理ブロックの先頭物理ページに対応した共通冗長領域５０には、論理アドレス情報、ブロックステータス（フラグ）等の物理ブロック毎で管理される情報が書き込まれる。
【００３８】
４個の物理セクタ領域６０ａ−６０ｄと４個の分割冗長領域７０ａ−７０ｄは、１対１の対応関係が予め設定されている。本実施形態では、物理セクタ領域６０ａが分割冗長領域７０ａに、物理セクタ領域６０ｂが分割冗長領域７０ｂに、物理セクタ領域６０ｃが分割冗長領域７０ｃに、物理セクタ領域６０ｄが分割冗長領域７０ｄに、それぞれ対応している。分割冗長領域７０ａ−７０ｄには、対応関係にある物理セクタ領域６０ａ−６０ｄに記憶されるデータに付加される誤り訂正符号等の物理セクタ領域６０（６０ａ−６０ｄ）毎で管理される情報が書き込まれる。
【００３９】
このように、１個の物理ページがｍセクタのユーザ領域で構成され、１個の物理ブロックがｎ個の物理ページで構成されているＮＡＮＤ型フラッシュメモリでは、１個の物理ブロックは、ｍ×ｎ個の物理セクタ領域（１セクタ単位の領域）で構成されているＮＡＮＤ型フラッシュメモリとして取り扱うこともできる。つまり、本実施形態で用いたＮＡＮＤ型フラッシュメモリの場合には、２５６個の物理セクタ領域（１セクタ単位の領域）で構成されているＮＡＮＤ型フラッシュメモリとして取り扱うことができる。以下の説明で、物理ブロック内の物理セクタ領域に付けた通し番号を物理セクタ番号（ＰＳＮ）と言う。例えば、１個の物理ブロックが２５６個の物理セクタ領域で構成されている場合、各物理ブロック内の２５６個の物理セクタ領域には、ＰＳＮとして＃０−＃２５５が付与される。
【００４０】
論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。従って、記憶データが消去された物理ブロックのような、対応する論理ブロックの無い物理ブロックについては、その冗長領域２６に（先頭物理ページに対応した共通冗長領域５０に）、論理アドレス情報は格納されていない。
【００４１】
ブロックステータス（フラグ）は、物理ブロックの良否を示すフラグである。尚、初期不良の物理ブロックについては、不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。
【００４２】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、論理セクタ領域と言う）に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。又、メモリコントローラ内で行われるアドレス管理では、複数個の論理セクタ領域で論理ブロックが形成され、この論理ブロックに対して、１個又は複数個の物理ブロックが割り当てられる。
【００４３】
本実施形態では、図３に示したようにＬＢＡが連続する２５６個の論理セクタ領域をまとめたものを論理ブロックとし、この論理ブロックに通し番号を付している。以下、論理ブロックに付した通し番号を論理ブロック番号（ＬＢＮ）と言う。例えば、ＬＢＡ＃０−＃２５５の２５６個の論理セクタ領域は、ＬＢＮ＃０の論理ブロックに属し、ＬＢＡ＃２５６−＃５１１の２５６個の論理セクタ領域はＬＢＮ＃１の論理ブロックに属している。このように、ＬＢＡ＃０−＃２０４７９９９の２０４８０００個の論理セクタ領域は、ＬＢＮ＃０−＃７９９９の８０００個の論理ブロックのいずれかに属している。
【００４４】
更に、この論理ブロックを複数個まとめた論理グループが形成されている。以下、論理グループに付けられた通し番号を論理グループ番号（ＬＧＮ）と言う。図３の例では、ＬＢＮが連続する論理ブロックを、異なる論理グループに順次振り分けるようにして論理グループを形成する。例えば、ＬＢＮ＃０の論理ブロックはＬＧＮ＃０の論理グループに、ＬＢＮ＃１の論理ブロックはＬＧＮ＃１の論理グループに、ＬＢＮ＃２の論理ブロックはＬＧＮ＃２の論理グループにという順番でＬＧＮ＃７の論理グループまで振り分けていく。以下同様に、ＬＢＮ＃８の論理ブロックをＬＧＮ＃０の論理グループに、ＬＢＮ＃９の論理ブロックをＬＧＮ＃１の論理グループに、ＬＢＮ＃１０の論理ブロックをＬＧＮ＃２の論理グループに振り分けていく。このようにして、１０００個の論理ブロックからなる８個の論理グループが形成される。
【００４５】
この論理グループは単なるアドレス変換テーブルの作成単位であり、どの論理ブロックがどの物理ブロックに割り当てられても良い。
【００４６】
このアドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を記述したテーブルであり、全ての論理ブロックと物理ブロックとの対応関係を含むテーブルであってもよいが、本実施形態では、論理グループ単位でテーブルが作成される。このアドレス変換テーブルは、フラッシュメモリ２内に保存される。また、対応関係にある論理ブロック内の領域と物理ブロック内の領域を管理するために、論理セクタ領域と物理セクタ領域６０の対応関係が後述する方法によって把握される（なお、後述の第２の実施形態では、論理ページ（後述）と物理ページの対応関係が把握される）。
【００４７】
尚、フラッシュメモリ内の物理ブロックには、出荷時から不良である先天性の不良ブロックが含まれている。更に、出荷時に良品の物理ブロックであっても、使用開始後に劣化して不良ブロックになる物理ブロック（後天性の不良ブロック）もある。従って、本実施形態では、８０００個の論理ブロックに対し、８１９２個の物理ブロックを割り当てている。
【００４８】
第１の実施形態では、論理ブロックに含まれる２５６個の論理セクタ領域と物理ブロックに含まれる２５６個の物理セクタ領域６０との対応関係をセクタ単位で管理している。１個の物理ページに４個の物理セクタ領域６０が含まれている。第１の実施形態におけるＮＡＮＤ型フラッシュメモリは、各物理ページに対するデータの書き込みを物理セクタ領域６０毎に分けて実行することのできるＮＡＮＤ型フラッシュメモリである。つまり、１個の物理ページに含まれる４個の物理セクタ領域６０に対するデータの書き込みを４回に分けて実行することができる。
【００４９】
第１の実施形態の書き込み処理では、ホストシステム４によって、コマンドレジスタＲ１に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタＲ２に、書き込むデータのセクタ数が書き込まれ、ＬＢＡレジスタＲ３には、書き込みを開始する先頭データに対応するＬＢＡが書き込まれる。セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域６０の先頭から、ホストシステム４から与えられるデータが書き込まれる。
【００５０】
セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて判別される論理アクセス領域が複数個の論理ブロックに跨っている場合は、データの書き込み先になる物理ブロックも複数個になる。従って、論理アクセス領域が複数個の論理ブロックに跨っている場合は、論理アクセス領域が属する論理ブロック毎に領域を分割してデータの書き込み処理が行われる。例えば、論理アクセス領域が２個の論理ブロック（第１の論理ブロックと第２の論理ブロック）に跨っている場合は、第１の論理ブロックに対応する物理ブロックに対する書き込み処理と、第２の論理ブロックに対応する物理ブロックに対する書き込み処理とが行われる。第１の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータについては、第１の論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域６０に書き込まれる。第２の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータについては、第２の論理ブロックに対応する物理ブロック内のデータが書き込まれていない物理セクタ領域６０に書き込まれる。
【００５１】
以下の説明で、ホストシステム４から与えられる情報（つまり、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれる情報）に基づいて実行される１セクタ又は複数セクタのデータの書き込み処理において、書き込まれるデータを、「一連のデータ」と言う。例えば、セクタ数レジスタＲ２に書き込まれた値がｎの場合（ｎは１以上の整数）、ｎセクタ分のＬＢＡが連続するデータが、一連のデータに対応する。尚、論理アクセス領域が複数個の論理ブロックに跨っている場合は、論理ブロック毎に一連のデータは分割される。例えば、論理アクセス領域が２個の論理ブロック（第１の論理ブロックと第２の論理ブロック）に跨っている場合に、第１の論理ブロックに属する論理アクセス領域のセクタ数がｐセクタで、第２の論理ブロックに属する論理アクセス領域のセクタ数がｑセクタであれば、セクタ数レジスタＲ２に書き込まれた値がｎ（ｎ＝ｐ＋ｑ）であっても、一連のデータは、ｐセクタの一連のデータとｑセクタの一連のデータとに分割される。
【００５２】
ホストシステム４は、書き込むデータのアドレス又は読み出すデータのアドレスをＬＢＡで指示する。つまり、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて判別されるＬＢＡ（セクタ数レジスタＲ２に書き込まれた値が１の場合）、又は、ＬＢＡが連続する範囲（セクタ数レジスタＲ２に書き込まれた値が２以上の場合）が、書き込むデータの書き込み先を指示するアドレス又は読み出すデータの読み出し元を指示するアドレスになる。
【００５３】
ここで、１個の論理ブロックに含まれる論理セクタ領域の個数が２ｉ個（例えば、ｉ＝８のときは２５６個）の場合、ＬＢＡの下位ｉビット（例えば、ｉ＝８のときは下位８ビット）が、論理ブロック内の論理セクタ領域に付けた通し番号に対応する。以下、論理ブロック内の論理セクタ領域に付けた通し番号を、「論理セクタ番号（ＬＳＮ）」と言う。それに対し、物理ブロック内の物理セクタ領域６０に付けた通し番号を、「物理セクタ番号（ＰＳＮ）」と言う。又、ＬＢＡの下位ｉビット（例えば、ｉ＝８のときは下位８ビット）を除いた、ＬＢＡの上位側のビットが、前述したＬＢＮ（論理ブロック番号）に対応する。従って、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて判別される論理アクセス領域（ＬＢＡが連続する範囲）内の先頭の論理セクタ領域と末尾の論理セクタ領域のＬＢＡのＬＢＮに対応する部分のビットが示す値が同一であれば、論理アクセス領域は複数個の論理ブロックに跨っていない。
【００５４】
以下、本実施形態での書き込みの概要を説明する。
【００５５】
メモリコントローラ３は、ホストシステム４から与えられる書き込み指示（書き込みコマンド及び書き込み先のアドレス）に従って、この書き込み指示と共に与えられる一連のデータを、フラッシュメモリ２に書き込む。この書き込み処理では、書き込み先の論理セクタ領域が属する論理ブロックが特定され、その論理ブロックに対応する物理ブロック（又は、この論理ブロックに対して新たに割り当てた物理ブロック）に、一連のデータが書き込まれる。物理ブロック内の物理セクタ領域６０には、先頭から順番に（つまりＰＳＮが小さいほうから順番に）一連のデータが書き込まれていく。従って、メモリコントローラ３が一連のデータを書き込むときには、物理ブロック内のデータが書き込まれている物理セクタ領域の末尾の検索が行われる。そして、その末尾の物理セクタ領域６０の次の物理セクタ領域６０から一連のデータが順次書き込まれていく。言い換えれば、物理ブロック内のデータが書き込まれていない先頭の物理セクタ領域から一連のデータが順次書き込まれていく。
【００５６】
本実施形態では、一連のデータの末尾データが書き込まれた物理セクタ領域６０の次の物理セクタ領域６０に、論理セクタ領域と物理セクタ領域６０の対応関係を示す情報（以下、「セクタ管理情報」と言う）、例えば、論理セクタ領域と物理セクタ領域６０の対応関係を示すテーブルが書き込まれる。つまり、セクタ管理情報は、ホストシステム４から書き込み指示と共に与えられる一連のデータと同様に、ユーザ領域２５（物理セクタ領域６０）に書き込まれる。従って、物理ブロック内のデータが書き込まれている物理セクタ領域６０の末尾を検索し、その物理セクタ領域６０からセクタ管理情報を読み出すことにより、メモリコントローラ３は論理セクタ領域と物理セクタ領域６０の対応関係を把握することができる。本実施形態におけるセクタ管理情報は、例えば、２５６個の論理セクタ領域の論理セクタ番号にそれぞれ対応する２５６個のレコードを有するテーブルである（例えば、後述の図５（Ａ）参照）。
【００５７】
本実施形態では、一連のデータを書き込む際に、その一連のデータを書き込む物理ブロック内の物理セクタ領域６０にセクタ管理情報を書き込むか否かを決定するために、一連のデータの先頭データに対応する論理セクタ領域（以下、「第１の論理セクタ領域」と言う）が、その一連のデータを書き込む物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域（以下、「第２の論理セクタ領域」と言う）に後続する領域であるか否かが判断される。この判断で、第１の論理セクタ領域が第２の論理セクタ領域に後続する領域であると判断された場合は、セクタ管理情報の書き込みが行われない。一方、第１の論理セクタ領域が第２の論理セクタ領域に後続する領域ではないと判断された場合は、セクタ管理情報の書き込みが行われる。つまり、第１の論理セクタ領域のＬＳＮが第２の論理セクタ領域のＬＳＮの次の番号であれば、セクタ管理情報の書き込みが行われない。一方、第１の論理セクタ領域のＬＳＮが第２の論理セクタ領域のＬＳＮの次の番号でなければ、セクタ管理情報の書き込みが行われる。尚、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報の場合には、上記の判断を行わず、セクタ管理情報の書き込みが行われる。
【００５８】
従って、セクタ管理情報を書き込まれていない物理ブロックの場合、その物理ブロック内の先頭の物理セクタ領域６０からデータが書き込まれている末尾の物理セクタ領域６０までの複数個の物理セクタ領域６０に対して、先頭の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域以降の論理セクタ領域が、ＬＳＮの順番で割り当てられている（以下、このような状態を「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」と言う）。
【００５９】
例えば、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０がＰＳＮ＃６３の物理セクタ領域６０であり、物理ブロック内のＰＳＮ＃０〜＃６３の物理セクタ領域６０にＬＳＮ＃８〜＃７１の論理セクタ領域に対応するデータがＬＳＮの順番で書き込まれているような場合には、その物理ブロックにセクタ管理情報が書き込まれていない。
【００６０】
実際の書き込み処理では、一連のデータを書き込む際に次の２つの判断が行われる。
【００６１】
まず、書き込み先の物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータが、一連のデータとして書き込まれたデータであるか又はセクタ管理情報として書き込まれたデータであるかの判断が行われる。ここで、末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報である場合には、既に「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されていないため、次の判断は行われない。
【００６２】
次に、末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報でない場合には、末尾の物理セクタ領域６０の次の物理セクタ領域６０に書き込まれるデータ（今回の書き込み処理で書き込む一連のデータの先頭データ）に対応する論理セクタ領域のＬＳＮが、末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮの次の番号であるか否かの判断が行われる。末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報でない場合、既に書き込まれているデータについては、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」になっているので、今回の書き込み処理で一連のデータ書き込んだときに、その状態が維持できるか否かが問題になる。ここで、今回の書き込み処理で書き込む一連のデータの先頭データに対応する論理セクタ領域のＬＳＮが、データが書き込まれている末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮの次の番号であれば、この一連のデータを書き込んだ後も、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持される。従って、今回の書き込み処理で書き込む一連のデータの先頭データに対応する論理セクタ領域のＬＳＮが、データが書き込まれている末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮの次の番号であれば、セクタ管理情報の書き込みは行われない。
【００６３】
本実施の形態では、物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮを判別するために、図４に示したように一連のデータの先頭データを書き込んだ物理セクタ領域６０に対応する分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮを書き込むようにしている。従って、少なくとも物理ブロック内の先頭の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮについては、先頭の物理セクタ領域６０に対応する分割冗長領域７０に書き込まれている。
【００６４】
上記判断を行う際には、先頭の物理セクタ領域６０に書き込まれているデータに対応する論理セクタ領域のＬＳＮとデータが書き込まれている末尾の物理セクタ領域６０のＰＳＮに基づいて、データが書き込まれている末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮが求められる。具体的には、例えば、先頭の物理セクタ領域６０に書き込まれてデータに対応する論理セクタ領域のＬＳＮの値に、データが書き込まれている末尾の物理セクタ領域のＰＳＮの値を加えることにより、データが書き込まれている末尾の物理セクタ領域に記憶されているデータに対応する論理セクタ領域のＬＳＮが求められる。尚、メモリコントローラ３が、一連のデータの末尾データを書き込んだ物理セクタ領域６０に対応する分割冗長領域７０に、その物理セクタ領域６０に書き込まれたデータに対応する論理セクタ領域のＬＳＮを書き込むようにしてもよい。
【００６５】
本実施形態では、書き込み処理が電源遮断等により書き込み途中で終了した場合を検知するため、一連のデータの末尾データが書き込まれた物理セクタ領域６０に対応する分割冗長領域７０に、書き込み処理が正常に終了したことを示す情報である終了マークが書き込まれる。但し、セクタ管理情報が書き込まれる場合には、セクタ管理情報が書き込まれた物理セクタ領域６０に対応する分割冗長領域７０、つまり、一連のデータの末尾データが書き込まれた物理セクタ領域６０の次の物理セクタ領域６０に対応した分割冗長領域７０に、終了マークが書き込まれる。このようにすることにより、一連のデータの書き込みが終了した後、電源遮断等によりセクタ管理情報を書き込む前に書き込み処理が終了してしまったような場合に、メモリコントローラ３がセクタ管理情報を書き込まない場合に該当していると誤認することを回避することができる。
【００６６】
尚、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されていない場合、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータは、論理セクタ領域と物理セクタ領域６０の対応関係に関する最新のセクタ管理情報でなければならない。従って、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されていない物理ブロックに対して一連のデータを書き込む際には、セクタ管理情報の更新が行われる。更新されたセクタ管理情報は、その一連のデータの末尾データが書き込まれた物理セクタ領域６０の次の物理セクタ領域６０に書き込まれる。このセクタ管理情報の更新では、書き込む一連のデータに対応する部分について、セクタ管理情報の内容が更新される。尚、本実施形態では、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報であるか否かを判別可能にするために、セクタ管理情報が書き込まれた物理セクタ領域６０に対応する分割冗長領域７０に、セクタ管理情報が書き込まれたことを意味するフラグ（以下、「管理フラグ」と言う）が書き込まれる。これにより、メモリコントローラ３は、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に対応した分割冗長領域７０に、管理フラグが記憶されているか否かにより、その末尾の物理セクタ領域６０に記憶されているデータがセクタ管理情報であるか否かを判断することができる。
【００６７】
また、同一の物理ブロックに複数の一連のデータが連続的に書き込まれるような場合、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０からセクタ管理情報を読み出さずに、ワークエリア８に保持されているセクタ管理情報が、そのまま使用されるようにしてもよい。
【００６８】
ホストシステム４から書き込み指示と共に与えられるデータの容量が、書き込み先の物理ブロック（１個目の物理ブロック）内の空きセクタ領域の容量より大きい場合、メモリコントローラ３は、その物理ブロック内の最後尾の物理セクタ領域６０の１セクタ前の物理セクタ領域６０まで、ホストシステム４から与えられるデータを書き込み、最後尾の物理セクタ領域６０には、その時点での論理セクタ領域と物理セクタ領域６０の対応関係を示すセクタ管理情報を書き込む。残りのデータについては、新たに割り当てられた別の物理ブロック（２個目の物理ブロック）内の物理セクタ領域６０に書き込まれる。つまり、１個目の物理ブロックの先頭の物理セクタ領域６０から最後尾の物理セクタ領域６０まで、論理ブロック内の各論理セクタ領域に対応するデータが全てＬＳＮの順番で書き込まれる場合（先頭の論理セクタ領域に対応するデータからＬＳＮの順番で書き込まれる場合）を除き、最後尾の物理セクタ領域６０にはセクタ管理情報が書き込まれる。
【００６９】
尚、一連のデータを書き込む際に、１個目の物理ブロック内の空きセクタ領域が最後尾の物理セクタ領域６０だけの場合、その最後尾の物理セクタ領域６０には一連のデータが書き込まれず、２個目の物理ブロックの先頭の物理セクタ領域６０から一連のデータの書き込みが開始される。
【００７０】
以下、図４及び図５を参照して、本実施形態での書き込み処理の具体例を説明する。なお、一連のデータは、前述したように、ＰＳＮが小さい方から順番に書き込まれる。以下の説明では、ｎ番目（ｎは自然数）に書き込まれる一連のデータを「第ｎの一連のデータ」と言う。
【００７１】
まず、ホストシステム４から与えられる第１の書き込み指示に基づいて、論理アクセス領域として、ＬＢＡ＃１６−＃３１の１６個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃１６−＃３１の論理セクタ領域）が特定される。また、この論理アクセス領域が属する論理ブロックと対応する物理ブロックが無いため、この論理ブロックに対して新たな物理ブロックが割り当てられる。この物理ブロックには未だデータが書き込まれていないため、物理ブロック内のデータが書き込まれていない先頭の物理セクタ領域６０として、物理ブロック内の先頭の物理セクタ領域６０（ＰＳＮ＃０の物理セクタ領域６０）が特定される。この先頭の物理セクタ領域６０（ＰＳＮ＃０の物理セクタ領域６０）から、第１の書き込み指示に対応する第１の一連のデータの書き込み処理が開始される。この結果、ＬＳＮ＃１６−＃３１の１６個の論理セクタ領域に対応する第１の一連のデータが、ＰＳＮ＃０−＃１５の１６個の物理セクタ領域６０に書き込まれる。また、第１の一連のデータの先頭データが書き込まれた物理セクタ領域６０（ＰＳＮ＃０の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃１６−＃３１の１６個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃１６”が書き込まれる（図４（Ａ）参照）。
【００７２】
第１の一連のデータは、この物理ブロックに書き込まれる最初の一連のデータであるため、第１の一連のデータが書き込まれた段階では、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されている。このため、第１の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１５の物理セクタ領域６０）の次の物理セクタ領域６０に、セクタ管理情報は書き込まれず、ＰＳＮ＃１５の物理セクタ領域６０に対応した分割冗長領域７０に、終了マーク（ＥＭ（End Mark））が書き込まれる。
【００７３】
次に、ホストシステム４から与えられる第２の書き込み指示に基づいて、論理アクセス領域として、ＬＢＡ＃３２−＃４７の１６個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃３２−＃４７の論理セクタ領域）が特定される。また、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０として、ＰＳＮ＃１５の物理セクタ領域６０が特定される。特定された末尾の物理セクタ領域６０（ＰＳＮ＃１５の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１６の物理セクタ領域６０）から、第２の書き込み指示に対応する第２の一連のデータの書き込みが開始される。この結果、ＬＳＮ＃３２−＃４７の１６個の論理セクタ領域に対応する第２の一連のデータが、ＰＳＮ＃１６−＃３１の１６個の物理セクタ領域６０に書き込まれる。また、第２の一連のデータの先頭データが書き込まれている物理セクタ領域６０（ＰＳＮ＃１６の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃３２−＃４７の１６個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃３２”が書き込まれる（図４（Ａ）参照）。
【００７４】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１５の物理セクタ領域６０）に記憶されているデータがセクタ管理情報であるか否かが判断される。ＰＳＮ＃１５の物理セクタ領域６０に記憶されているデータはセクタ管理情報でないため、第１の論理セクタ領域（第２の一連のデータの先頭データに対応する論理セクタ領域）のＬＳＮが、第２の論理セクタ領域（データが書き込まれている末尾の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域）のＬＳＮの次の番号であるか否かが判断される。具体的には、先頭の物理セクタ領域６０に対応した分割冗長領域７０に書き込まれているＬＳＮの値“＃１６”に、データが書き込まれている末尾の物理セクタ領域６０のＰＰＮの値“＃１５”を加えた値である“＃３１”が、第２の論理セクタ領域のＬＳＮ として求められる。一方、第１の論理セクタ領域のＬＳＮは“＃３２”なので、第１の論理セクタ領域のＬＳＮは第２の論理セクタ領域のＬＳＮの次の番号であると判断される。このように第１の論理セクタ領域のＬＳＮが第２の論理セクタ領域のＬＳＮの次の番号である場合、一連のデータを書き込んだ後も、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持される。
【００７５】
この書き込み処理では、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されるため、第２の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃３１の物理セクタ領域６０）の次の物理セクタ領域６０にセクタ管理情報は書き込まれず、ＰＳＮ＃３１の物理セクタ領域６０に対応した分割冗長領域７０に、終了マークが書き込まれる。
【００７６】
図４（Ａ）に示すように、ホストシステム４から与えられる第３の書き込み指示と第４の書き込み指示にそれぞれ対応する第３の一連のデータと第４の一連のデータについても、第２の一連のデータと同様の書き込み処理が実行される。
【００７７】
次に、ホストシステム４から与えられる第５の書き込み指示に基づいて、論理アクセス領域として、ＬＢＡ＃０−＃３１の３２個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃０−＃３１の論理セクタ領域）が特定される。また、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０として、ＰＳＮ＃９５の物理セクタ領域６０が特定される。特定された末尾の物理セクタ領域６０（ＰＳＮ＃９５の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃９６の物理セクタ領域６０）から、第５の書き込み指示に対応する第５の一連のデータの書き込みが開始される。この結果、ＬＳＮ＃０−＃３１の３２個の論理セクタ領域に対応する第５の一連のデータが、ＰＳＮ＃９６−＃１２７の３２個の物理セクタ領域６０に書き込まれる。また、第５の一連のデータの先頭データが書き込まれた物理セクタ領域６０（ＰＳＮ＃９６の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃９６−＃１２７の３２個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃９６”が書き込まれる（図４（Ａ）参照）。
【００７８】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃３１の物理セクタ領域６０）に記憶されているデータがセクタ管理情報であるか否かが判断される。ＰＳＮ＃３１の物理セクタ領域６０に記憶されているデータはセクタ管理情報でないため、第１の論理セクタ領域（第５の一連のデータの先頭データに対応する論理セクタ領域）のＬＳＮが、第２の論理セクタ領域（データが書き込まれている末尾の物理セクタ領域６０に記憶されているデータ対応する論理セクタ領域）のＬＳＮの次の番号であるか否かが判断される。具体的には、先頭の物理セクタ領域６０に対応した分割冗長領域７０に書き込まれているＬＳＮの値“＃１６”に、データが書き込まれている末尾の物理セクタ領域のＰＰＮの値“＃９５”を加えた値である“＃１１１”が、第２の論理セクタ領域のＬＳＮとして求められる。一方、第１の論理セクタ領域のＬＳＮ
は“＃０”なので、第１の論理セクタ領域のＬＳＮは第２の論理セクタ領域のＬＳＮの次の番号でないと判断される。このように第１の論理セクタ領域のＬＳＮが第２の論理セクタ領域のＬＳＮの次の番号でない場合、一連のデータを書き込んだ後は、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されない。
【００７９】
この書き込み処理では、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されないため、メモリコントローラ３は、第５の一連のデータの書き込みが終了したときに物理ブロックに記憶されている有効なデータに関する物理セクタ領域６０と論理セクタ領域との対応関係を示すセクタ管理情報＃０を作成する。ここでは、第５の一連のデータを書き込む前のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃９５の物理セクタ領域６０）に記憶されているデータはセクタ管理情報でないため（ＰＳＮ＃９５の物理セクタ領域６０に対応した分割冗長領域７０に管理フラグが書き込まれていないため）、新規にセクタ管理情報が作成される。具体的には、ワークエリア８上にＬＳＮ＃０−２５５にそれぞれ対応する２５６個のレコードを有するテーブル作成領域が確保され、このテーブル作成領域の各レコードにＰＳＮが書き込まれる。図５（Ａ）に示したようなセクタ管理情報＃０を作成する場合には、まず、第１〜４の一連のデータとしてＰＳＮ＃０−＃９５の物理セクタ領域６０に書き込まれたＬＳＮ＃１６−＃１１１の論理セクタ領域に対応するデータに関するＰＳＮの書き込みが行われる。つまり、ＬＳＮ＃１６−＃１１１に対応したレコードに、＃０−＃９５の番号（ＰＳＮの値）が書き込まれる。次に、第５の一連のデータとしてＰＳＮ＃９６−＃１２７の物理セクタ領域６０に書き込まれるＬＳＮ＃０−３１の論理セクタ領域に対応するデータに関するＰＳＮの書き込みが行われる。つまり、ＬＳＮ＃０−３１に対応したレコードに＃９６−＃１２７の番号（ＰＳＮの値）が書き込まれる。この際、ＬＳＮ＃１６−３１に対応したレコードには、＃１１２−＃１２７の番号（ＰＳＮの値）が上書きされ、有効なデータに関する物理セクタ領域６０と論理セクタ領域との対応関係だけが残る。つまり、無効なデータに関する物理セクタ領域６０と論理セクタ領域との対応関係は、有効なデータに関する物理セクタ領域６０と論理セクタ領域との対応関係で上書きされる。これにより、図５（Ａ）に示したようなセクタ管理情報＃０の作成処理が完了する。
【００８０】
メモリコントローラ３は、作成したセクタ管理情報＃０を、第５の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１２７の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１２８の物理セクタ領域６０）に書き込む。また、セクタ管理情報＃０が書き込まれた物理セクタ領域６０（ＰＳＮ＃１２８の物理セクタ領域６０）に対応した分割冗長領域７０に、図示しない管理フラグと、前述した終了マークとが書き込まれる（図４（Ｂ）参照）。
【００８１】
尚、一度でもセクタ管理情報が書き込まれた物理ブロックについては、その物理ブロックに一連のデータが書き込まれる毎にセクタ管理情報が書き込まれる。なぜなら、一度でもセクタ管理情報が書き込まれた物理ブロックは、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されていないからである。
【００８２】
次に、ホストシステム４から与えられる第６の書き込み指示に基づいて、論理アクセス領域として、ＬＢＡ＃１６−＃３１の１６個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃１６−＃３１の論理セクタ領域）が特定される。また、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０として、ＰＳＮ＃１２８の物理セクタ領域６０が特定される。特定された末尾の物理セクタ領域６０（ＰＳＮ＃１２８の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１２９の物理セクタ領域６０）から、第６の書き込み指示に対応する第６の一連のデータの書き込みが開始される。この結果、ＬＳＮ＃１６−＃３１の１６個の論理セクタ領域に対応する第６の一連のデータが、ＰＳＮ＃１２９−＃１４４の１６個の物理セクタ領域６０に書き込まれる。また、第６の一連のデータの先頭データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１２９の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃１６−＃３１の１６個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃３１”が書き込まれる（図４（Ｂ）参照）。
【００８３】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１２８の物理セクタ領域６０）に記憶されているデータがセクタ管理情報であるか否かが判断される。ＰＳＮ＃１２８の物理セクタ領域６０に対応した分割冗長領域７０に管理フラグが書き込まれているため、ＰＳＮ＃１２８の物理セクタ領域６０に記憶されているデータがセクタ管理情報であると判断される。この判断は、この時点で、「ＬＳＮが連続する論理セクタ領域が割り当てられている状態」が維持されていないことを意味する。
【００８４】
従って、第６の一連のデータの書き込みが終了したときの物理セクタ領域６０と論理セクタ領域との対応関係を示すセクタ管理情報＃１が作成される。このセクタ管理情報＃１は、セクタ管理情報＃０に基づいて作成される。つまり、この作成処理では、第６の一連のデータに対応する部分について、セクタ管理情報＃０の内容が更新される。尚、ワークエリア８上にセクタ管理情報＃０が保持されていない場合には、セクタ管理情報＃１を作成するために、セクタ管理情報＃０がＰＳＮ＃１２８の物理セクタ領域６０からワークエリア８に読み出される。
【００８５】
具体的には、図５（Ｂ）に示すように、セクタ管理情報＃０における、ＬＳＮ＃１６−＃３１に対応するレコードに、第６の一連のデータが書き込まれた１６個の物理セクタ領域６０に対応したＰＳＮが書き込まれる。つまり、セクタ管理情報＃１の作成処理では、セクタ管理情報＃０のＬＳＮ＃１６−＃３１に対応するレコードに、＃１２９−＃１４４の番号（ＰＳＮの値）が上書きされる。作成されたセクタ管理情報＃１は、第６の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１４４の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１４５の物理セクタ領域６０）に書き込まれる。また、セクタ管理情報＃１が書き込まれた物理セクタ領域６０（ＰＳＮ＃１４５の物理セクタ領域６０）に対応した分割冗長領域７０に、図示しない管理フラグと前述した終了フラグとが書き込まれる。
【００８６】
以後、同様にして、ホストシステム４から与えられる第７及び第８の書き込み指示にそれぞれ対応する第７及び第８の一連のデータ並びにセクタ管理情報＃２及び＃３がそれぞれ同一の物理ブロックに書き込まれる。
【００８７】
すなわち、ＬＢＡ＃８０−＃９５の１６個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃８０−＃９５の論理セクタ領域）に対応する第７の一連のデータが、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１４５の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１４６の物理セクタ領域６０）以降の１６個の物理セクタ領域６０（ＰＳＮ＃１４６−１６１の物理セクタ領域６０）に書き込まれる（図４（Ｂ）参照）。また、第７の一連のデータの先頭データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１４６の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃８０−＃９５の１６個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃８０”が書き込まれる。また、第７の一連のデータが書き込まれる前のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１４５の物理セクタ領域６０）に記憶されているセクタ管理情報＃１に基づいて、セクタ管理情報＃２が作成される。具体的には、図５（Ｃ）に示すように、セクタ管理情報＃１における、ＬＳＮ＃８０−＃９５に対応するレコードに、第７の一連のデータが書き込まれた１６個の物理セクタ領域６０に対応したＰＳＮである＃１４６−１６１が上書きされる。このようにして作成されたセクタ管理情報＃２は、第７の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１６１の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１６２の物理セクタ領域６０）に書き込まれる。また、セクタ管理情報＃２が書き込まれた物理セクタ領域６０（ＰＳＮ＃１６２の物理セクタ領域６０）に対応した分割冗長領域７０に、図示しない管理フラグと前述した終了フラグとが書き込まれる。
【００８８】
次に、ＬＢＡ＃９６−＃１２７の３２個の論理セクタ領域（ＬＢＮ＃０の論理ブロック内のＬＳＮ＃９６−＃１２７の論理セクタ領域）に対応した第８の一連のデータが、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１６２の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１６３の物理セクタ領域６０）以降の３２個の物理セクタ領域６０（ＰＳＮ＃１６３−１９４の物理セクタ領域６０）に書き込まれる（図４（Ｂ）参照）。また、第８の一連のデータの先頭データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１６３の物理セクタ領域６０）に対応した分割冗長領域７０に、その先頭データに対応する論理セクタ領域のＬＳＮ（ＬＳＮ＃９６−＃１２７の３２個の論理セクタ領域のうちの先頭の論理セクタ領域のＬＳＮ）の値“＃９６”が書き込まれる。また、第８の一連のデータが書き込まれる前のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１６２の物理セクタ領域６０）に記憶されているセクタ管理情報＃２に基づいて、セクタ管理情報＃３が作成される。具体的には、図５（Ｄ）に示すように、セクタ管理情報＃２における、ＬＳＮ＃９６−＃１２７に対応するレコードに、第８の一連のデータが書き込まれた３２個の物理セクタ領域６０に対応したＰＳＮである＃１６３−１９４が上書きされる。このようにして作成されたセクタ管理情報＃３は、第８の一連のデータの末尾データが書き込まれた物理セクタ領域６０（ＰＳＮ＃１９４の物理セクタ領域６０）の次の物理セクタ領域６０（ＰＳＮ＃１９５の物理セクタ領域６０）に書き込まれる。また、セクタ管理情報＃３が書き込まれた物理セクタ領域６０（ＰＳＮ＃１９５の物理セクタ領域６０）に対応した分割冗長領域７０に、図示しない管理フラグと前述した終了フラグとが書き込まれる。
【００８９】
さて、この後、物理ブロックから各物理セクタ領域６０に格納されているデータを読み出すときには、メモリコントローラ３は、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０（ＰＳＮ＃１９５の物理セクタ領域６０）からセクタ管理情報＃３を読み出し、このセクタ管理情報＃３に基づいて論理セクタ領域と物理セクタ領域６０の対応関係を把握する。ここでは、ＰＳＮ＃１９５の物理セクタ領域６０に書き込まれているセクタ管理情報＃３が、論理セクタ領域と物理セクタ領域６０の最新の対応関係を示しているため、メモリコントローラ３は、そのセクタ管理情報＃５を参照するだけで、論理セクタ領域と物理セクタ領域６０の最新の対応関係を把握することができる。つまり、本実施形態によれば、効率的に、論理セクタ領域と物理セクタ領域６０の対応関係を把握することができる。
【００９０】
尚、第１の一連のデータが書き込まれてから第５の一連のデータが書き込まれる前までの間に（つまりセクタ管理情報が全く書き込まれていない場合に）、物理ブロックからデータを読み出すときには、メモリコントローラ３は、物理ブロック内の先頭の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域（ＬＳＮ＃１６の論理セクタ領域）以降の論理セクタ領域に対応するデータがＬＳＮの順番で、この物理ブロック内の物理セクタ領域６０に書き込まれていると判断して、論理セクタ領域と物理セクタ領域６０の対応関係を把握する。また、物理ブロック内の先頭の物理セクタ領域６０に記憶されているデータに対応する論理セクタ領域のＬＳＮについては、先頭の物理セクタ領域６０に対応した分割冗長領域７０に書き込まれているＬＳＮにより把握される。
【００９１】
以上が、第一の実施形態の説明である。
【００９２】
なお、セクタ管理情報は、前述したような、論理セクタ領域と物理セクタ領域６０の対応関係を示すテーブルであることが好ましいが、一変形例として、物理ブロックに書き込まれているそれぞれの一連のデータの先頭データに対応する論理セクタ領域の論理セクタ番号であるスタート論理セクタ番号（以下、「ＳＬＳＮ」と言う）と、その先頭データが書き込まれている物理セクタ領域６０の物理セクタ番号であるスタート物理セクタ番号（以下、「ＳＰＳＮ」と言う）と、その一連のデータのセクタ数（以下、「ＳＣＮＴ」と言う）とを示す情報であってもよい。このような情報が書き込まれている場合には、この情報に基づいて、論理セクタ領域と物理セクタ領域６０の対応関係を示すテーブルが作成される。
【００９３】
例えば、図６（Ａ）〜（Ｄ）は、セクタ管理情報＃０〜＃３のそれぞれの変形例であるセクタ管理情報＃０´〜＃３´をそれぞれ示している。セクタ管理情報＃０´〜＃３´において、第ｎのＳＬＳＮ、ＳＰＳＮ及びＳＣＮＴの組は、第ｎの一連のデータに対応する。尚、物理ブロック内の先頭の物理セクタ領域６０からＬＳＮの順番でデータが書き込まれている部分については、複数個の一連のデータに対応する部分が、１つの情報としてまとめられてもよい。例えば、第１乃至第４の一連のデータに対応する部分が、ＳＬＳＮが＃１６、ＳＰＳＮが＃０、ＳＣＮＴが９６というような１つの情報にまとめられてもよい。
【００９４】
この変形例では、論理セクタ領域と物理セクタ領域６０の最新の対応関係を示すテーブルは、最新のセクタ管理情報に基づいて作成される。この作成処理では、後から書き込まれた一連のデータに対応する論理セクタ領域と物理セクタ領域６０の対応関係が優先されるようにして、ＬＳＮ＃０−＃２５５の２５６個の論理セクタ番号に対応したレコードに物理セクタ番号（ＰＳＮ）が書き込まれていく。つまり、各レコードに書き込まれる物理セクタ番号（ＰＳＮ）については、後から書き込まれた一連のデータに対応する物理セクタ番号（ＰＳＮ）の方が上書きされるようにすればよい。尚、論理セクタ領域と物理セクタ領域６０の対応関係は、ＳＬＳＮ、ＳＰＳＮ及びＳＣＮＴの組に基づいて把握される。
【００９５】
例えば、セクタ管理情報＃３´に基づいて、図５（Ｄ）に示したようなテーブルが作成される。このテーブル作成処理では、それぞれの一連のデータに対応する論理セクタ領域と物理セクタ領域６０の対応関係に基づいて、各レコードに物理セクタ番号（ＰＳＮ）が書き込まれていく。この物理セクタ番号（ＰＳＮ）の書き込みは、先に書き込まれた一連のデータに対応する方から順番に行われ、書き込み先のレコードに既に物理セクタ番号（ＰＳＮ）が書き込まれていても、後から物理セクタ番号（ＰＳＮ）が上書きされる。従って、後から書き込まれた一連のデータに対応する論理セクタ領域と物理セクタ領域６０の対応関係を優先したテーブルが作成される。
【００９６】
＜第２の実施形態＞
【００９７】
以下、本発明の第２の実施形態を説明する。その際、第１の実施形態との相違点を主に説明し、第１の実施形態との共通点については説明を省略或いは簡略する。
【００９８】
第２の実施形態では、論理ブロック内の論理セクタ領域を先頭から順番に１個の物理ページ６０に含まれるユーザ領域２５の容量と等しいセクタ数単位でまとめたものを論理ページとして取り扱い、ページ単位（１個の物理ページに含まれるユーザ領域２５の容量と等しいセクタ数単位）で論理ブロックに含まれる論理ページと物理ブロックに含まれる物理ページとの対応関係を管理する。以下の説明で、各物理ブロック内の物理ページに付けた通し番号を物理ページ番号（ＰＰＮ）と言う。又、各論理ブロック内の論理ページに付けた通し番号を論理ページ番号（ＬＰＮ）と言う。尚、複数個の物理ブロックを集めたグループを構成し、このグループに対して１個の論理ブロックを割り当てるような場合には、複数個の物理ページに対して１個の論理ページを割り当てるようにしてもよい。この場合、論理ページの容量は、複数個の物理ページに含まれるユーザ領域２５の容量と等しくなる。
【００９９】
本実施形態では、１個の物理ページが４セクタ（２０４８バイト）のユーザ領域２５で構成され（１個の物理ページに４個の物理セクタ領域６０含まれ）、１個の物理ブロックが６４個の物理ページで構成されているＮＡＮＤ型フラッシュメモリを用いる。尚、図２に示したように、各物理ページに含まれる４個の物理セクタ領域６０については、先頭から順番に（カラムアドレスが小さい方から順番に）、第１物理セクタ領域６０ａ、第２物理セクタ領域６０ｂ、第３物理セクタ領域６０ｃ、第４物理セクタ領域６０ｄと言う。ここで、ＰＰＮ＃０の物理ページに含まれる第１物理セクタ領域６０ａがＰＳＮ＃０の物理セクタ領域に対応し、ＰＰＮ＃０の物理ページに含まれる第２物理セクタ領域６０ｂがＰＳＮ＃１の物理セクタ領域に対応し、ＰＰＮ＃０の物理ページに含まれる第３物理セクタ領域６０ｃがＰＳＮ＃２の物理セクタ領域に対応し、ＰＰＮ＃０の物理ページに含まれる第４物理セクタ領域６０ｄがＰＳＮ＃３の物理セクタ領域に対応する。ＰＰＮ＃１の物理ページに含まれる第１物理セクタ領域６０ａ、第２物理セクタ領域６０ｂ、第３物理セクタ領域６０ｃ及び第４物理セクタ領域６０ｄには、ＰＳＮ＃４−＃７の物理セクタ領域がそれぞれ対応し、以下同様の対応関係で、ＰＰＮ＃６３の物理ページに含まれる第１物理セクタ領域６０ａ、第２物理セクタ領域６０ｂ、第３物理セクタ領域６０ｃ及び第４物理セクタ領域６０ｄには、ＰＳＮ＃２５２−＃２５５の物理セクタ領域がそれぞれ対応する。
【０１００】
また、各論理ページには４個の論理セクタ領域が含まれる。ＬＰＮ＃０の論理ページには、ＬＳＮ＃０−＃３の論理セクタ領域が含まれ、ＬＰＮ＃１の論理ページには、ＬＳＮ＃４−＃７の論理セクタ領域が含まれ、以下同様に順次割り当てられ、ＬＰＮ＃６３の論理ページには、ＬＳＮ＃２５２−＃２５５の論理セクタ領域が含まれる。各論理ページに含まれる４個の論理セクタ領域は、各物理ページに含まれる４個の物理セクタ領域（第１物理セクタ領域６０ａ、第２物理セクタ領域６０ｂ、第３物理セクタ領域６０ｃ及び第４物理セクタ領域６０ｄ）に対して、ＬＳＮが小さい方から順番に割り当てられる。
【０１０１】
第２の実施形態では、論理ページと物理ページとの対応関係は変化するが、物理ページ内の４個の物理セクタ領域６０と論理ページ内の４個の論理セクタ領域の相対的な関係は変化しない。従って、第２の実施形態では、論理ページと物理ページとの対応関係を管理することにより、論理ブロックに含まれる２５６個の論理セクタ領域と物理ブロックに含まれる２５６個の物理セクタ領域６０との対応関係を管理することができる。つまり、本実施形態のように、１個の物理ページに４個の物理セクタ領域６０が含まれる場合であれば、ＰＳＮの下位２ビットとＬＳＮの下位２ビットが常に一致するように物理セクタ領域６０と論理セクタ領域との対応関係が定められている。即ち、下位２ビットが００のＬＳＮに対応したデータは、第１物理セクタ６０ａに保存され、下位２ビットが０１のＬＳＮに対応したデータは第２物理セクタ６０ｂに保存され、下位２ビットが１０のＬＳＮに対応したデータは第３物理セクタに保存され、下位２ビットが１１のＬＳＮに対応したデータは第４物理セクタに保存される。尚、論理ページ番号（ＬＰＮ）は、８ビットのＬＳＮの上位６ビットに対応し、物理ページ番号は８ビットのＰＳＮの上位６ビットに対応する。
【０１０２】
以下、本実施形態での書き込みの概要を説明する。
【０１０３】
メモリコントローラ３は、ホストシステム４から与えられる書き込み指示（書き込みコマンド及び書き込み先のアドレス）に従って、この書き込み指示と共に与えられる一連のデータを、フラッシュメモリ２に書き込む。この書き込み処理では、書き込み先の論理ページが属する論理ブロックが特定され、その論理ブロックに対応する物理ブロック（又は、この論理ブロックに対して新たに割り当てた物理ブロック）に、一連のデータが書き込まれる。物理ブロック内の物理ページには、先頭から順番に（つまりＰＰＮが小さいほうから順番に）一連のデータが書き込まれていく。従って、メモリコントローラ３が一連のデータを書き込むときには、物理ブロック内のデータが書き込まれている物理ページの末尾の検索が行われる。そして、その末尾の物理ページの次の物理ページから一連のデータが順次書き込まれていく。言い換えれば、物理ブロック内のデータが書き込まれていない先頭の物理ページから一連のデータが順次書き込まれていく。
【０１０４】
本実施形態では、一連のデータの末尾データが書き込まれた物理ページの次の物理ページに、論理ページと物理ページの対応関係を示す情報（以下、「ページ管理情報」と言う）、例えば、論理ページと物理ページの対応関係を示すテーブルが書き込まれる。つまり、ページ管理情報は、ホストシステム４から書き込み指示と共に与えられる一連のデータと同様に、物理ページのユーザ領域２５に書き込まれる。従って、物理ブロック内のデータが書き込まれている物理ページの末尾の検索し、その物理ページからページ管理情報を読み出すことにより、メモリコントローラ３は、論理ページと物理ページの対応関係を把握することができる。本実施形態におけるページ管理情報は、例えば、６４個の論理ページの論理ページ番号にそれぞれ対応する６４個のレコードを有するテーブルである（例えば、後述の図８（Ａ）参照）。
【０１０５】
本実施形態では、一連のデータを書き込む際に、その一連のデータを書き込む物理ブロック内の物理ページにページ管理情報を書き込むか否かを決定するために、一連のデータの先頭データに対応する論理ページ（以下、「第１の論理ページ」と言う）が、その一連のデータを書き込む物理ブロック内のデータが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページ（以下、「第２の論理ページ」と言う）に後続する領域であるか否かが判断される。この判断で、第１の論理ページが第２の論理ページに後続する領域であると判断された場合は、ページ管理情報の書き込みが行われない。一方、第１の論理ページが第２の論理ページに後続する領域ではないと判断された場合は、ページ管理情報の書き込みが行われる。つまり、第１の論理ページのＬＰＮが第２の論理ページのＬＰＮの次の番号であれば、ページ管理情報の書き込みは行われない。一方、第１の論理ページのＬＰＮが第２の論理ページのＬＰＮの次の番号でなければ、ページ管理情報の書き込みが行われる。尚、物理ブロック内のデータが書き込まれている末尾の物理セクタ領域６０に記憶されているデータがページ管理情報の場合には、上記の判断を行わず、ページ管理情報の書き込みが行われる。
【０１０６】
従って、ページ管理情報を書き込まれていない物理ブロックの場合、その物理ブロック内の先頭の物理ページからデータが書き込まれている末尾の物理ページまでの複数個の物理ページに対して、先頭の物理ページに記憶されているデータに対応する論理ページ以降の論理ページが、ＬＰＮの順番で割り当てられている（以下、このような状態を「ＬＰＮが連続する論理ページが割り当てられている状態」と言う）。
【０１０７】
例えば、物理ブロック内のデータが書き込まれている末尾の物理ページがＰＰＮ＃４２の物理ページであり、物理ブロック内のＰＰＮ＃０〜＃４２の物理ページにＬＰＮ＃８〜＃５０の論理ページに対応するデータがＬＰＮの順番で書き込まれているような場合には、その物理ブロックにページ管理情報が書き込まれていない。
【０１０８】
実際の書き込み処理では、一連のデータを書き込む際に次の２つの判断が行われる。
【０１０９】
まず、書き込み先の物理ブロック内のデータが書き込まれている末尾の物理ページに記憶されているデータが、一連のデータとして書き込まれたデータであるか又はページ管理情報として書き込まれたデータであるかの判断が行われる。ここで、末尾の物理ページに記憶されているデータがページ管理情報である場合には、既に「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていないため、次の判断は行われない。
【０１１０】
次に、末尾の物理ページに記憶されているデータがページ管理情報でない場合には、末尾の物理ページの次の物理ページに書き込まれるデータ（今回の書き込み処理で書き込む一連のデータの先頭データ）に対応する論理ページのＬＰＮが、末尾の物理ページに記憶されているデータに対応する論理ページのＬＰＮの次の番号であるか否かの判断が行われる。末尾の物理ページに記憶されているデータがページ管理情報でない場合、既に書き込まれているデータについては、「ＬＰＮが連続する論理ページが割り当てられている状態」になっているので、今回の書き込み処理で一連のデータ書き込んだときに、その状態が維持できるか否かが問題になる。ここで、今回の書き込み処理で書き込む一連のデータの先頭データに対応する論理ページのＬＰＮが、データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページのＬＰＮの次の番号であれば、この一連のデータを書き込んだ後も、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持される。従って、今回の書き込み処理で書き込む一連のデータの先頭データに対応する論理ページのＬＰＮが、データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページのＬＰＮの次の番号であれば、ページ管理情報の書き込みは行われない。
【０１１１】
本実施の形態では、物理ページに記憶されているデータに対応する論理ページのＬＰＮを判別するために、図７に示したように一連のデータの先頭データを書き込んだ物理ページに対応する共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮを書き込むようにしている。従って、少なくとも物理ブロック内の先頭の物理ページに記憶されているデータに対応する論理ページのＬＰＮについては、先頭の物理ページに対応する共通冗長領域５０に書き込まれている。
【０１１２】
上記判断を行う際には、先頭の物理ページに書き込まれているデータに対応する論理ページのＬＰＮとデータが書き込まれている末尾の物理ページのＰＰＮに基づいて、データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページのＬＰＮが求められる。具体的には、例えば、先頭の物理ページに書き込まれてデータに対応する論理ページのＬＰＮの値に、データが書き込まれている末尾の物理ページのＰＰＮの値を加えることにより、データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページのＬＰＮが求められ。尚、メモリコントローラ３が一連のデータの末尾データを書き込んだ物理ページに対応する共通冗長領域５０に、その物理ページに記憶されているデータに対応する論理ページのＬＰＮを書き込むようにしてもよい。
【０１１３】
本実施形態では、書き込み処理が電源遮断等により書き込み途中で終了した場合を検知するために、一連のデータの末尾データが書き込まれた物理ページに対応する共通冗長領域５０に、書き込み処理が正常に終了したことを示す情報である終了マークが書き込まれる。但し、ページ管理情報が書き込まれる場合には、ページ管理情報が書き込まれた物理ページに対応する共通冗長領域５０、つまり、一連のデータの末尾データが書き込まれた物理ページの次の物理ページに対応した共通冗長領域５０に、終了マークが書き込まれる。このようにすることにより、一連のデータの書き込みが終了した後、電源遮断等によりページ管理情報を書き込む前に書き込み処理が終了してしまったような場合に、メモリコントローラ３がページ管理情報を書き込まない場合に該当していると誤認することを回避することができる。
【０１１４】
尚、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていない場合、物理ブロック内のデータが書き込まれている末尾の物理ページに記憶されているデータは、論理ページと物理ページの対応関係に関する最新のページ管理情報でなければならない。従って、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていない物理ブロックに対して一連のデータを書き込む際には、ページ管理情報の更新が行われる。更新されたページ管理情報は、その一連のデータの末尾データが書き込まれた物理ページの次の物理ページに書き込まれる。このページ管理情報の更新では、書き込む一連のデータに対応する部分について、ページ管理情報の内容が更新される。尚、本実施形態では、物理ブロック内のデータが書き込まれている末尾の物理ページに記憶されているデータがページ管理情報であるか否かを判別可能にするために、ページ管理情報が書き込まれた物理ページに対応した共通冗長領域５０に、ページ管理情報が書き込まれたことを意味するフラグ（以下、「管理フラグ」と言う）が書き込まれる。これにより、メモリコントローラ３は、物理ブロック内のデータが書き込まれている末尾の物理ページに対応した共通冗長領域５０に、管理フラグが記憶されているか否かにより、その末尾の物理ページに記憶されているデータがページ管理情報であるか否かを判断することができる。
【０１１５】
また、同一の物理ブロックに複数の一連のデータが連続的に書き込まれるような場合、物理ブロック内のデータが書き込まれている末尾の物理ページからページ管理情報を読み出さずに、ワークエリア８に保持されているページ管理情報が、そのまま使用されるようにしてもよい。
【０１１６】
ホストシステム４から書き込み指示と共に与えられるデータの容量が、書き込み先の物理ブロック（１個目の物理ブロック）内の空きページの容量より大きい場合、メモリコントローラ３は、その物理ブロック内の最後尾の物理ページの１ページ前の物理ページまで、ホストシステム４から与えられるデータを書き込み、最後尾の物理ページには、その時点での論理ページと物理ページの対応関係を示すページ管理情報を書き込む。残りのデータについては、新たに割り当てられた別の物理ブロック（２個目の物理ブロック）内の物理ページに書き込まれる。つまり、１個目の物理ブロックの先頭の物理ページから最後尾の物理ページまで、論理ブロック内の各論理ページに対応するデータが全てＬＰＮの順番で書き込まれる場合（先頭の論理ページに対応するデータからＬＰＮの順番で書き込まれる場合）を除き、最後尾の物理ページにはページ管理情報が書き込まれる。
【０１１７】
尚、一連のデータを書き込む際に、１個目の物理ブロック内の空きページが最後尾の物理ページだけの場合、その最後尾の物理ページには一連のデータが書き込まれず、２個目の物理ブロックの先頭の物理ページから一連のデータの書き込が開始される。
【０１１８】
物理ブロックから各物理ページに格納されているデータを読み出すときに、メモリコントローラ３は、物理ブロック内のデータが書き込まれている末尾の物理ページからページ管理情報を読み出し、このページ管理情報に基づいて論理ページと物理ページの対応関係を把握する。
【０１１９】
以下、図７乃至図９を参照して、本実施形態での書き込み処理の具体例を説明する。なお、一連のデータは、前述したように、ＰＰＮが小さい方から順番に書き込まれる。以下の説明では、ｎ番目（ｎは自然数）に書き込まれる一連のデータを「第ｎの一連のデータ」と言う。また、アクセス対象の論理ページ（一連のデータの先頭データに対応する論理セクタ領域が属する論理ページから一連のデータの末尾データに対応する論理セクタ領域が属する論理ページまでの１個または複数個の論理ページ）を「論理アクセスページ」と言う。また、この具体例では、図７（Ａ）に示すように、ＬＢＮ＃０の論理ブロックに対してＰＢＡ＃７の物理ブロックが割り当てられる。
【０１２０】
まず、ホストシステム４から与えられる第１の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃８−＃１５の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックに対応する物理ブロックが無いため、ＬＢＮ＃０の論理ブロックに対してＰＢＡ＃７の物理ブロックが割り当てられる。この物理ブロックには未だデータが書き込まれていないため、物理ブロック内のデータが書き込まれていない先頭の物理ページとして、ＰＢＡ＃７の物理ブロック内の先頭の物理ページ（ＰＰＮ＃０の物理ページ）が特定される。この先頭の物理ページ（ＰＰＮ＃０の物理ページ）から、第１の書き込み指示に対応する第１の一連のデータの書き込み処理が開始される。この結果、ＬＰＮ＃８−＃１５の８個の論理ページに対応する第１の一連のデータが、ＰＰＮ＃０−＃７の８個の物理ページに書き込まれる。また、第１の一連のデータの先頭データが書き込まれた物理ページ（ＰＰＮ＃０の物理ページ）に対応した共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮ（ＬＰＮ＃８−＃１５の８個の論理ページのうちの先頭の論理ページのＬＰＮ）の値“＃８”が書き込まれる（図７（Ａ）参照）。
【０１２１】
第１の一連のデータは、この物理ブロックに書き込まれる最初の一連のデータであるため、第１の一連のデータが書き込まれた段階では、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されている。このため、第１の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃７の物理ページ）の次の物理ページにページ管理情報は書き込まれず、ＰＰＮ＃７の物理ページに対応する共通冗長領域５０に、終了マーク（ＥＭ（End Mark））が書き込まれる。
【０１２２】
次に、ホストシステム４から与えられる第２の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃１６−＃２３の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックと対応するＰＢＡ＃７の物理ブロック内のデータが書き込まれている末尾の物理ページとして、ＰＰＮ＃７の物理ページが特定される。特定された末尾の物理ページ（ＰＰＮ＃７の物理ページ）の次の物理ページ（ＰＰＮ＃８の物理ページ）から、第２の書き込み指示に対応する第２の一連のデータの書き込が開始される。この結果、ＬＰＮ＃１６−＃２３の８個の論理ページに対応する第２の一連のデータが、ＰＰＮ＃８−＃１５の８個の物理ページに書き込まれる。また、第２の一連のデータの先頭データが書き込まれている物理ページ（ＰＰＮ＃８の物理ページ）に対応した共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮ（ＬＰＮ＃１６−＃２３の８個の論理ページのうちの先頭の論理ページのＬＰＮ）の値“＃１６”が書き込まれる（図７（Ａ）参照）。
【０１２３】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃７の物理ページ）に記憶されているデータがページ管理情報であるか否かが判断される。ＰＰＮ＃７の物理ページに記憶されているデータはページ管理情報でないため、第１の論理ページ（第２の一連のデータの先頭データに対応する論理ページ）のＬＰＮが、第２の論理ページ（データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページ）のＬＰＮの次の番号であるか否かが判断される。具体的には、先頭の物理ページに対応した共通冗長領域５０に書き込まれているＬＰＮの値“＃８”に、データが書き込まれている末尾の物理ページのＰＰＮの値“＃７”を加えた値である“＃１５”が第２の論理ページのＬＰＮとして求められる。一方、第１の論理ページのＬＰＮ
は“＃１６”なので、第１の論理ページのＬＰＮは第２の論理ページのＬＰＮの次の番号であると判断される。このように第１の論理ページのＬＰＮが第２の論理ページのＬＰＮの次の番号である場合、一連のデータを書き込んだ後も、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持される。
【０１２４】
この書き込み処理では、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されるため、第２の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃１５の物理ページ）の次の物理ページにページ管理情報は書き込まれず、ＰＰＮ＃１５の物理ページに対応した共通冗長領域５０に、終了マークが書き込まれる。
【０１２５】
図７（Ａ）に示すように、ホストシステム４から与えられる第３の書き込み指示と第４の書き込み指示にそれぞれ対応する第３の一連のデータと第４の一連のデータについても、第２の一連のデータと同様の書き込み処理が実行される。
【０１２６】
次に、ホストシステム４から与えられる第５の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃０−＃７の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックと対応するＰＢＡ＃７の物理ブロック内のデータが書き込まれている末尾の物理ページとして、ＰＰＮ＃４７の物理ページが特定される。特定された末尾の物理ページ（ＰＰＮ＃４７の物理ページ）の次の物理ページ（ＰＰＮ＃４８の物理ページ）から、第５の書き込み指示に対応する第５の一連のデータの書き込みが開始される。この結果、ＬＰＮ＃０−＃７の８個の論理ページに対応する第５の一連のデータが、ＰＰＮ＃４８−＃５５の８個の物理ページに書き込まれる。また、第５の一連のデータの先頭データが書き込まれた物理ページ（ＰＰＮ＃４８の物理ページ）に対応した共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮ（ＬＰＮ＃０−＃７の８個の論理ページのうちの先頭の論理ページのＬＰＮ）の値“＃０”が書き込まれる（図７（Ａ）参照）。
【０１２７】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃４７の物理ページ）に記憶されているデータがページ管理情報であるか否かが判断される。ＰＰＮ＃４７の物理ページに記憶されているデータはページ管理情報でないため、第１の論理ページ（第５の一連のデータの先頭データに対応する論理ページ）のＬＰＮが、第２の論理ページ（データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページ）のＬＰＮの次の番号であるか否かが判断される。具体的には、先頭の物理ページに対応した共通冗長領域５０に書き込まれているＬＰＮの値“＃８”に、末尾の物理ページのＰＰＮの値“＃４７”を加えた値である“＃５５”が第２の論理ページのＬＰＮとして求められる。一方、第１の論理ページのＬＰＮ
は“＃０なので、第１の論理ページのＬＰＮは第２の論理ページのＬＰＮの次の番号でないと判断される。このように第１の論理ページのＬＰＮが第２の論理ページのＬＰＮの次の番号でない場合、一連のデータを書き込んだ後は、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されない。
【０１２８】
この書き込み処理では、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されないため、メモリコントローラ３は、第５の一連のデータの書き込みが終了したときに物理ブロックに記憶されている有効なデータに関する物理ページ（ＰＰＮ＃０−＃５５の物理ページ）と論理ページとの対応関係を示すページ管理情報＃０を作成する。ここでは、第５の一連のデータを書き込む前のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃４７の物理ページ）に記憶されているデータはページ管理情報でないため（ＰＰＮ＃４７の物理ページに対応した共通冗長領域５０に管理フラグが書き込まれていないため）、新規にページ管理情報が作成される。具体的には、ワークエリア８上にＬＰＮ＃０−＃６３にそれぞれ対応する６４個のレコードを有するテーブル作成領域が確保され、このテーブル作成領域の各レコードにＰＰＮが書き込まれる。図８（Ａ）に示したようなページ管理情報＃０を作成する場合には、まず、第１〜４の一連のデータとしてＰＰＮ＃０−＃４７の物理ページに書き込まれたＬＰＮ＃８−＃５５の論理ページに対応するデータに関するＰＰＮの書き込みが行われる。つまり、ＬＰＮ＃８−＃５５に対応したレコードに、ＰＰＮ＃０−＃４７の番号（ＰＰＮの値）が書き込まれる。次に、第５の一連のデータとしてＰＰＮ＃４８−＃５４の物理ページに書き込まれるＬＰＮ＃０−＃７の論理ページに対応するデータに関するＰＰＮの書き込みが行われる。つまり、ＬＰＮ＃０−＃７に対応したレコードに、ＰＰＮ＃４８−＃５４の番号（ＰＰＮの値）が書き込まれる。これにより、図８（Ａ）に示したようなページ管理情報＃０の作成処理が完了する。
【０１２９】
メモリコントローラ３は、作成したページ管理情報＃０を、第５の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃５５の物理ページ）の次の物理ページ（ＰＰＮ＃５６の物理ページ）に書き込む。また、ページ管理情報＃０が書き込まれた物理ページ（ＰＰＮ＃５６の物理ページ）に対応した共通冗長領域５０に、図示しない管理フラグと、前述した終了マークとが書き込まれる（図７（Ａ）参照）。
【０１３０】
尚、一度でもページ管理情報が書き込まれた物理ブロックについては、その物理ブロックに一連のデータが書き込まれる毎にページ管理情報が書き込まれる。なぜなら、一度でもページ管理情報が書き込まれた物理ブロックは、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていないからである。
【０１３１】
次に、ホストシステム４から与えられる第６の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃８−＃１５の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックに対応するＰＢＡ＃７の物理ブロック内のデータが書き込まれている末尾の物理ページとして、ＰＰＮ＃５６の物理ページが特定される。
【０１３２】
しかし、ＰＢＡ＃７の物理ブロック内の空きページはＰＰＮ＃５７−＃６３の７個の物理ページだけなので、メモリコントローラ３は、ホストシステム４から与えられた第６の書き込み指示に基づく８個の論理ページに対応するデータを、全てＰＢＡ＃７の物理ブロック内の空きページに書き込むことができない。
【０１３３】
また、物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＳＮ＃５６の物理ページ）に記憶されているデータはページ管理情報なので、既に、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていない。従って、メモリコントローラ３は、物理ブロック内の最後尾の物理ページにページ管理情報を書き込まなければならない。
【０１３４】
このため、第６の書き込み指示に基づく８個の論理ページに対応するデータは、６個の論理ページに対応するデータを含む第６の一連のデータと２個の論理ページに対応するデータを含む第７の一連のデータに分割される。
【０１３５】
まず、第６の一連のデータの書き込み処理について説明する。第６の一連のデータは、ＰＢＡ＃７の物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＳＮ＃５６の物理ページ）の次の物理ページ（ＰＳＮ＃５６の物理ページ）から、最後尾の物理ページ（ＰＰＮ＃６３の物理ページ）の１ページ前の物理ページ（ＰＰＮ＃６２の物理ページ）までの６個の物理ページに書き込まれる。ＰＢＡ＃７の物理ブロック内の最後尾の物理ページ（ＰＰＮ＃６３の物理ページ）には、第６の一連のデータの書き込みが終了した時点での論理ページと物理ページの対応関係を示すページ管理情報＃１が書き込まれる。また、ページ管理情報＃１が書き込まれた最後尾の物理ページ（ＰＰＮ＃６３の物理ページ）に対応した共通冗長領域５０には、図示しない管理フラグと、前述した終了マークとが書き込まれる。
【０１３６】
次に、第７の一連のデータの書き込み処理について説明する。図７（Ｂ）に示すように、ＬＢＮ＃０の論理ブロックに別の物理ブロック（ＰＢＡ＃１６の物理ブロック）が新たに割り当てられ、そのＰＢＡ＃１６の物理ブロック内の先頭の物理ページ（ＰＰＮ＃０の物理ページ）から第７の一連のデータが書き込まれる。また、第７の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃１の物理ページ）に対応した共通冗長領域５０には、終了マークが書き込まれる。
【０１３７】
この結果、ホストシステム４から与えられた８個の論理ページに対応するデータのうち、先頭から６個目までの論理ページに対応するデータは、ＰＢＡ＃７の物理ブロック内のＰＰＮ＃５７−＃６２の物理ページに第６の一連のデータとして書き込まれ（図７（Ａ）参照）、残りの２個の論理ページに対応するデータは、ＰＢＡ＃１６の物理ブロック内のＰＰＮ＃０−＃１の物理ページに第７の一連のデータとして書き込まれる（図７（Ｂ）参照）。
【０１３８】
尚、メモリコントローラ３は、上述のようにＰＢＡ＃７の物理ブロック内の空きページに、ホストシステム４から書き込み指示と共に与えられる全てのデータを書き込むことができない場合、その全てのデータを新たに割り当てたＰＢＡ＃１６の物理ブロックに書き込むようにしてもよい。
【０１３９】
また、ホストシステム４から与えられる書き込み指示で指定される書き込み先の論理ページの個数が、書き込み先の物理ブロック内のデータが書き込まれていない物理ページの個数以上の場合、物理ブロック内の最後尾の物理ページにはホストシステム４から与えられるデータではなくページ管理情報が書き込まれる。最後尾の物理ページに記憶されているデータがページ管理情報でない場合、物理ブロックの先頭の物理ページから最後尾の物理ページまで、論理ブロック内の各論理ページに対応するデータが全てＬＰＮの順番で書き込まれている（先頭の論理ページに対応するデータからＬＰＮの順番で書き込まれている）と判断されるからである。
【０１４０】
従って、物理ブロック内の最後尾の物理ページまでホストシステム４から与えられるデータ（一連のデータ）を書き込んでも、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持される場合には、最後尾の物理ページにページ管理情報ではなくホストシステム４から与えられるデータ（一連のデータ）が書き込まれる。
【０１４１】
また、１個の論理ブロックに２個の物理ブロックが割り当てられている場合、２個目の物理ブロックには、１個目の物理ブロックと２個目の物理ブロックを合わせたページ管理情報が保存されていることが好ましい。但し、２個目の物理ブロック内で、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されていれば、２個目の物理ブロックにページ管理情報が保存されていなくてもよい。２個目の物理ブロックにページ管理情報が保存されていない場合には、１個目の物理ブロックに関するページ管理情報に基づいて、１個目の物理ブロックと２個目の物理ブロックを合わせたページ管理情報が作成される。
【０１４２】
前述したページ管理情報＃１は、以下のようにして作成される。
【０１４３】
すなわち、第６の一連のデータが書き込まれる前のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃５６の物理ページ）に、ページ管理情報＃０が書き込まれているため（データが書き込まれている末尾の物理ページに対応した共通冗長領域５０に管理フラグが書き込まれているため）、ワークエリア８にページ管理情報＃０が保持されていない場合には、ＰＰＮ＃５６の物理ページからページ管理情報＃０が読み出される。ページ管理情報＃１は、読み出されたページ管理情報＃０に基づいて作成される。この作成処理では、図８（Ｂ）に示すように、ページ管理情報＃０における、ＬＰＮ＃８−＃１３に対応するレコードに、第６の一連のデータが書き込まれる６個の物理ページ６０に対応したＰＰＮ＃５７−＃６２が上書きされる。
【０１４４】
なお、前述したように、ＰＢＡ＃１６の物理ブロックには、２ページ分のデータである第７の一連のデータが書き込まれるが、このＰＢＡ＃１６の物理ブロックには、初めて一連のデータが書き込まれたため、第７の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃１の物理ページ）の次の物理ページにページ管理情報を書込まないと判断し、ＰＰＮ＃１の物理ページに対応した共通冗長領域５０に、終了マークを書込む。
【０１４５】
次に、ホストシステム４から与えられる第７の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃１６−＃２３の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックと対応するＰＢＡ＃１６の物理ブロック内のデータが書き込まれている末尾の物理ページとして、ＰＰＮ＃１の物理ページが特定される。特定された末尾の物理ページ（ＰＰＮ＃１の物理ページ）の次の物理ページ（ＰＰＮ＃２の物理ページ）から、第７の書き込み指示に対応する第８の一連のデータの書き込み処理が開始される。この結果、ＬＰＮ＃１６−＃２３の８個の論理ページに対応する第８の一連のデータが、ＰＰＮ＃２−＃９の８個の物理ページに書き込まれる。また、第８の一連のデータの先頭データが書き込まれた物理ページ（ＰＰＮ＃２の物理ページ）に対応した共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮ（ＬＰＮ＃１６−＃２３の８個の論理ページのうちの先頭の論理ページのＬＰＮ）の値“＃１６”が書き込まれる（図７（Ｂ）参照）。
【０１４６】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃１の物理ページ）に記憶されているデータがページ管理情報であるか否かが判断される。ＰＰＮ＃１の物理ページに記憶されているデータはページ管理情報でないため、第１の論理ページ（第８の一連のデータの先頭データに対応する論理ページ）のＬＰＮが、第２の論理ページ（データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページ）のＬＰＮの次の番号であるか否かが判断される。ここで、第１の論理ページのＬＰＮの値は“＃１６”であり、第２の論理ページのＬＰＮの値は“＃１５”であるため、第１の論理ページのＬＰＮは第２の論理ページのＬＰＮの次の番号であると判断される。このため、第８の一連のデータの末尾データが書き込まれた物理ページ（ＰＰＮ＃９の物理ページ）の次の物理ページにページ管理情報は書き込まれず、ＰＰＮ＃９の物理ページに対応した共通冗長領域５０に、終了マークが書き込まれる。
【０１４７】
次に、ホストシステム４から与えられる第８の書き込み指示に基づいて、論理アクセスページとして、ＬＢＮ＃０の論理ブロック内のＬＰＮ＃０−＃７の８個の論理ページが特定される。また、ＬＢＮ＃０の論理ブロックと対応するＰＢＡ＃１６の物理ブロック内のデータが書き込まれている末尾の物理ページとして、ＰＰＮ＃９の物理ページが特定される。特定された末尾の物理ページ（ＰＰＮ＃９の物理ページ）の次の物理ページ（ＰＰＮ＃１０の物理ページ）から、第８の書き込み指示に対応する第９の一連のデータの書き込みが開始される。ここでは、図７（Ｂ）に示したように、ＬＰＮ＃０−＃７の８個の論理ページに対応する第９の一連のデータが、ＰＰＮ＃１０−＃１７の８個の物理ページに書き込まれる。また、第９の一連のデータの先頭データが書き込まれている物理ページ（ＰＰＮ＃１０の物理ページ）に対応した共通冗長領域５０に、その先頭データに対応する論理ページのＬＰＮ（ＬＰＮ＃０−＃７の８個の論理ページのうちの先頭の論理ページのＬＰＮ）の値“＃０”が書き込まれる（図７（Ｂ）参照）。
【０１４８】
この書き込み処理を開始するときに、物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃９の物理ページ）に記憶されているデータがページ管理情報であるか否かが判断される。ＰＰＮ＃９の物理ページに記憶されているデータはページ管理情報でないため、第１の論理ページ（第９の一連のデータの先頭データに対応する論理ページ）のＬＰＮが、第２の論理ページ（データが書き込まれている末尾の物理ページに記憶されているデータに対応する論理ページ）のＬＰＮの次の番号であるか否かが判断される。ここで、第１の論理ページのＬＰＮの値は“＃０”であり、第２の論理ページのＬＰＮの値“は＃２３”であるため、第１の論理ページのＬＰＮは第２の論理ページのＬＰＮの次の番号ではないと判断される。
【０１４９】
従って、第９の一連のデータの書き込み処理では、「ＬＰＮが連続する論理ページが割り当てられている状態」が維持されないため、メモリコントローラ３は、ページ管理情報＃２を作成する。ＰＢＡ＃１６の物理ブロックは、ＬＢＮ＃０の論理ブロックに対応する２個目の物理ブロックである。そのため、メモリコントローラ３は、１個目の物理ブロックの最後尾の物理ページに書き込まれているページ管理情報＃１に基づいて、ページ管理情報＃２を作成する。
【０１５０】
第９の一連のデータを書き込む際に作成されるページ管理情報＃２の作成処理を、図９を参照して説明する。ページ管理情報＃２の基礎となるページ管理情報＃１の各レコードに記載されているＰＰＮは、１個目の物理ブロック内の物理ブロックに対応するＰＰＮであるため、ＰＰＮが書き込まれている各レコードに、１個目の物理ブロックであることを示す情報である旧ブロックフラグ（図では、「旧ブロックＦ」と記載する）が書き込まれる。次に、第７及び８の一連のデータとしてＰＰＮ＃０−＃９の物理ページに書き込まれたＬＰＮ＃１４−＃２３の論理ページに対応するデータに関して、ページ管理情報＃１の内容が更新される。つまり、ＬＰＮ＃１４−＃２３に対応したレコードに、ＰＰＮ＃０−＃９の番号（ＰＰＮの値）が上書きされ、番号（ＰＰＮの値）が上書きされたレコードに記載されている旧ブロックフラグは消去される。次に、第９の一連のデータとしてＰＰＮ＃１０−＃１７の物理ページに書き込まれるＬＰＮ＃０−＃７の論理ページに対応するデータに関して、ページ管理情報＃１の内容が更新される。つまり、ＬＰＮ＃０−＃７に対応したレコードに、ＰＰＮ＃１０−＃１７の番号（ＰＰＮの値）が上書きされ、番号（ＰＰＮの値）が上書きされたレコードに記載されている旧ブロックフラグは消去される。
【０１５１】
旧ブロックフラグは、各レコードに書き込まれているＰＰＮが、１個目の物理ブロック（本具体例ではＰＢＡ＃７の物理ブロック）内の物理ページのＰＰＮであるか、又は２個目の物理ブロック（本具体例ではＰＢＡ＃１６の物理ブロック）内の物理ページのＰＰＮであるかを判断するための情報である。つまり、旧ブロックフラグが書き込まれているレコードに書き込まれているＰＰＮは、１個目の物理ブロック（本具体例ではＰＢＡ＃７の物理ブロック）内の物理ページのＰＰＮであると判断される。つまり、ページ管理情報＃２を参照することで、ＬＰＮ＃０−＃７及びＬＰＮ＃１４−＃２３の論理ページに対応するデータは、２個目の物理ブロック（本具体例ではＰＢＡ＃１６の物理ブロック）に書き込まれているが、他の論理ページに対応するデータは、２個目の物理ブロックに書き込まれていることがわかる。尚、以上のようにして作成されたページ管理情報＃２は、第９の一連のデータの末尾データが書き込まれた物理ページ（２個目の物理ブロック内のＰＰＮ＃１７の物理ページ）の次の物理ページ（２個目の物理ブロック内のＰＰＮ＃１８の物理ページ）に書き込まれ、ページ管理情報＃２が書き込まれた物理ページ（２個目の物理ブロック内のＰＰＮ＃１８の物理ページ）に対応した共通冗長領域５０には、図示しない管理フラグと前述した終了マークが書き込まれる。
【０１５２】
尚、本具体例において、ＰＢＡ＃７の物理ブロック（１個目の物理ブロック）とＰＢＡ＃１６の物理ブロック（２個目の物理ブロック）が同一の論理ブロック（ＬＢＮ＃０の論理ブロック）に対応することは、これらの物理ブロックに書き込まれている論理アドレス情報を参照することにより判断することができる。また、これらの物理ブロックの新旧関係を判断（１個目の物理ブロックか２個目の物理ブロックを判断）するために、メモリコントローラ３が、先頭物理ページに対応した共通冗長領域５０に新旧関係を判断するためシリアル番号を書き込むようにすることが好ましい。また、新ブロック（２個目の物理ブロック）の先頭物理ページに対応した共通冗長領域５０や、ページ管理情報が書き込まれた物理ページに対応した共通冗長領域５０に、メモリコントローラ３が、旧ブロック（１個目の物理ブロック）のＰＢＡを書き込むようにしてもよい。このようにすれば、それらの共通冗長領域５０を参照することにより、旧ブロック（１個目の物理ブロック）のＰＢＡを把握することができる。
【０１５３】
さて、この後、同じ論理ブロックに割り当てられた１個目の物理ブロック又は２個目の物理ブロックからデータを読み出すときには、メモリコントローラ３は、２個目の物理ブロック内のデータが書き込まれている末尾の物理ページ（ＰＰＮ＃１８の物理ページ）からページ管理情報＃２を読み出し、このページ管理情報＃２に基づいて論理ページと物理ページの対応関係を把握する。ここでは、新ブロック内のＰＰＮ＃１８の物理ページに書き込まれているページ管理情報＃２が、論理ページと物理ページの最新の対応関係を示しているため、そのページ管理情報＃２を参照するだけで、論理ページと物理ページの最新の対応関係を把握することができる。具体的には、ＬＰＮ＃０−＃７及びＬＰＮ＃１４−＃２３の論理ページに対応したデータは、２個目の物理ブロックに書き込まれており、他の論理ページに対応したデータは、１個目の物理ブロックに書き込まれていることが把握される。つまり、本実施形態によれば、効率的に、論理ページと物理ページの対応関係を把握することができる。
【０１５４】
尚、第１の一連のデータが書き込まれてから第５の一連のデータが書き込まれる前までの間に（つまりページ管理情報が全く書き込まれていない場合に）、物理ブロックからデータを読み出すときには、メモリコントローラ３は、物理ブロック内の先頭の物理ページに記憶されているデータに対応する論理ページ（ＬＰＮ＃８の論理ページ）以降の論理ページに対応するデータがＬＰＮの順番で書き込まれていると判断して、論理ページと物理ページの対応関係を把握する。また、物理ブロック内の先頭の物理ページに記憶されているデータに対応する論理ページのＬＳＮについては、先頭の物理ページに対応した共通冗長領域５０に書き込まれているＬＳＮにより把握される。
【０１５５】
また、第７の一連のデータが書き込まれてから第９の一連のデータが書き込まれる前までの間に（つまり、１個目の物理ブロックにページ管理情報が書き込まれているが２個目の物理ブロックにページ管理情報が全く書き込まれていない場合に）、物理ブロック（１個目の物理ブロック又は２個目の物理ブロック）からデータを読み出すときには、メモリコントローラ３は、１個目の物理ブロックに書き込まれているページ管理情報に基づいて、１個目の物理ブロックと２個目の物理ブロックを合わせたページ管理情報を作成する。この作成処理では、２個目ブロックに記憶されているデータに対応する部分について、１個目の物理ブロックに書き込まれているページ管理情報の内容が更新される。この際、２個目ブロックブロックに関しては、ＬＰＮ１４の論理ページに対応するデータからＬＰＮの順番でデータが格納されていると判断して、論理ページと物理ページの対応関係を把握される。
【０１５６】
以上が、第二の実施形態の説明である。
【０１５７】
なお、ページ管理情報は、前述したような、論理ページと物理ページの対応関係を示すテーブルであることが好ましいが、一変形例として、物理ブロックに書き込まれているそれぞれの一連のデータの先頭データに対応する論理ページの論理ページ番号であるスタート論理ページ番号（以下、「ＳＬＰＮ」と言う）と、その先頭データが書き込まれている物理ページの物理ページ番号であるスタート物理ページ番号（以下、「ＳＰＰＮ」と言う）と、その一連のデータが書き込まれるページ数（先頭データが属する論理ページから末尾データが属する論理ページまでの論理ページの個数であるページカウント値、以下、「ＰＣＮＴ」と言う）と、その一連のデータが書き込まれる物理ブロックを示す情報（１個目の物理ブロック又は２個目の物理ブロックを示す情報）であってもよい。このような情報が書き込まれている場合には、この情報に基づいて、論理ページと物理ページの対応関係を示すテーブルが作成される。
【０１５８】
例えば、図１０（Ａ）〜（Ｃ）は、ページ管理情報＃０〜＃２のそれぞれの変形例であるページ管理情報＃０´〜＃２´をそれぞれ示している。ページ管理情報＃０´〜＃２´において、第ｎのＳＬＰＮ、ＳＰＰＮ及びＰＣＮＴの組は、第ｎの一連のデータに対応する。また、２個目の物理ブロックに書き込まれたページ管理情報＃２´において、２個目の物理ブロックに書き込まれている一連のデータに対応するＳＬＰＮ、ＳＰＰＮ及びＰＣＮＴの組には、旧ブロックフラグが関連付けられる。尚、物理ブロック内の先頭の物理ページからＬＰＮの順番でデータが書き込まれている部分については、複数個の一連のデータに対応する部分が、１つの情報としてまとめられてもよい。例えば、第１乃至第４の一連のデータに対応する部分が、ＳＬＰＮが＃８、ＳＰＰＮが＃０、ＰＣＮＴが４８というような１つの情報にまとめられてもよい。
【０１５９】
この変形例では、論理ページと物理ページの最新の対応関係を示すテーブルは、最新のページ管理情報に基づいて作成される。この作成処理では、後から書き込まれた一連のデータに対応する論理ページと物理ページの対応関係が優先されるようにして、ＬＰＮ＃０−＃６３の６４個の論理ページ番号（ＬＰＮ）に対応したレコードに物理ページ番号（ＰＰＮ）が書き込まれていく。つまり、各レコードに書き込まれる物理ページ番号（ＰＰＮ）については、後から書き込まれた一連のデータに対応する物理ページ番号（ＰＰＮ）の方が上書きされるようにすればよい。尚、論理ページと物理ページの対応関係は、ＳＬＰＮ、ＳＰＰＮ及びＰＣＮＴの組に基づいて把握される。
【０１６０】
例えば、ページ管理情報＃２´に基づいて、図９に示したようなテーブルが作成される。このテーブル作成処理では、それぞれの一連のデータに対応する論理ページと物理ページの対応関係に基づいて、各レコードに物理ページ番号（ＰＰＮ）が書き込まれていく。この物理ページ番号（ＰＰＮ）の書き込みは、先に書き込まれた一連のデータに対応する方から順番に行われ、書き込み先のレコードに既に物理ページ番号（ＰＰＮ）が書き込まれていても、後から物理ページ番号（ＰＰＮ）が上書きされる。従って、後から書き込まれた一連のデータに対応する論理ページと物理ページの対応関係を優先したテーブルが作成される。
【０１６１】
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１６２】
例えば、上記の実施の形態では、論理ブロックに含まれる論理セクタ領域と物理ブロックとに含まれる物理セクタ領域の数は一致していた。しかしながら、論理ブロックに含まれる論理セクタ領域の数を物理ブロックに含まれる物理セクタ領域の数より少なくしてもよい。こうすることで、論理ブロックに含まれる全ての論理セクタ領域に対応するデータを物理ブロックに保存した後であっても、そのデータの書き替えデータを、当該物理ブロックの空き領域（データが書き込まれていない物理セクタ領域又は物理ページ）に保存することができる。これにより効率的なデータの書き換えが可能となる。例えば、論理ブロックに含まれる論理セクタ領域の数と、物理ブロックに含まれる物理セクタ領域の数を、共に２のべき乗で与えられる数にする場合には、論理ブロックに含まれる論理セクタ領域の数を１２８とし、物理ブロックに含まれる物理セクタ領域の数を２５６とする。
【０１６３】
また、上記の実施の形態では、書き込み処理が正常に終了したことを示す終了マークが分割冗長領域７０又は共通冗長領域５０に書き込まれていたが、管理フラグ、論理セクタ番号又は論理ページ番号にこの終了マークの役割をさせるようにしてもよい。
【０１６４】
つまり、セクタ管理情報（又はページ管理情報）が書き込まれない場合にだけ、一連のデータの末尾データが書き込まれた物理セクタ領域６０（又は物理ページ）に対応する分割冗長領域７０（又は共通冗長領域５０）に、その末尾データに対応する論理セクタ領域（又は論理ページ）の論理セクタ番号（又は論理ページ番号）が書き込まれるようにすればよい。セクタ管理情報（又はページ管理情報）が書き込まれる場合には、一連のデータの末尾データが書き込まれた物理セクタ領域６０（又は物理ページ）に対応する分割冗長領域７０（又は共通冗長領域５０）に論理セクタ番号（又は論理ページ番号）が書き込まれず、セクタ管理情報（又はページ管理情報）が書き込まれた物理セクタ領域６０（又は物理ページ）に対応する分割冗長領域７０（又は共通冗長領域５０）に管理フラグが書き込まれる。このようにすれば、書き込み処理が正常に終了したときにだけ、分割冗長領域７０（又は共通冗長領域５０）に管理フラグ又は論理セクタ番号（又は論理ページ番号）が書き込まれる。また、セクタ管理情報（又はページ管理情報）が書き込まれない場合には、データが書き込まれている末尾の物理セクタ領域６０（又は物理ページ）に記憶されているデータに対応する論理セクタ領域（又は論理ページ）の論理セクタ番号（又は論理ページ番号）が、データが書き込まれている末尾の物理セクタ領域６０（又は物理ページ）に対応する分割冗長領域７０（又は共通冗長領域５０）に記憶されているため、第２の論理セクタ領域の論理セクタ番号を容易に求めることができる。尚、このようにした場合には、一連のデータの先頭データが書き込まれた物理セクタ領域６０（又は物理ページ）に対応する分割冗長領域７０（又は共通冗長領域５０）に、その先頭データに対応する論理セクタ領域（又は論理ページ）の論理セクタ番号（又は論理ページ番号）は書き込まれる必要がなくなるため、その先頭データに対応する論理セクタ領域（又は論理ページ）の論理セクタ番号（又は論理ページ番号）は書き込まれない。
【図面の簡単な説明】
【０１６５】
【図１】本発明の第１の実施形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】フラッシュメモリの物理ページの構成を示す図である。
【図３】論理ブロックと物理ブロックの対応関係を示す図である。
【図４】図４（Ａ）は、物理ブロック内の２５６個の物理セクタ領域のうちの前半部分に対する書き込みの結果の一例を示す。図４（Ｂ）は、物理ブロック内の２５６個の物理セクタ領域のうちの後半部分に対する書き込みの結果の一例を示す。
【図５】図５（Ａ）は、図４（Ａ）に示したセクタ管理情報＃０の中身を示す。図５（Ｂ）は、図４（Ａ）に示したセクタ管理情報＃１の中身を示す。図５（Ｃ）は、図４（Ｂ）に示したセクタ管理情報＃２の中身を示す。図５（Ｄ）は、図４（Ｂ）に示したセクタ管理情報＃３の中身を示す。
【図６】図６（Ａ）は、図５（Ａ）に示したセクタ管理情報＃０の変形例を示す。図６（Ｂ）は、図５（Ｂ）に示したセクタ管理情報＃１の変形例を示す。図６（Ｃ）は、図５（Ｃ）に示したセクタ管理情報＃２の変形例を示す。図６（Ｄ）は、図５（Ｄ）に示したセクタ管理情報＃３の変形例を示す。
【図７】図７（Ａ）は、同一の論理ブロックに割り当てられた一方の物理ブロックＰＢＡ＃７に対する書き込みの結果の一例を示す。図７（Ｂ）は、同一の論理ブロックに割り当てられた他方の物理ブロックＰＢＡ＃１６に対する書き込みの結果の一例を示す。
【図８】図８（Ａ）は、図７（Ａ）に示したページ管理情報＃０の中身を示す。図８（Ｂ）は、図７（Ａ）に示したページ管理情報＃１の中身を示す。
【図９】図９は、図７（Ｂ）に示したページ管理情報＃２の中身を示す。
【図１０】図１０（Ａ）は、図８（Ａ）に示したページ管理情報＃０の変形例を示す。図１０（Ｂ）は、図８（Ｂ）に示したページ管理情報＃１の変形例を示す。図１０（Ｃ）は、図９に示したページ管理情報＃２の変形例を示す。
【符号の説明】
【０１６６】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ、６…マイクロプロセッサ
【図１】
0004687720.tif 000002
【図２】
0004687720.tif 000003
【図３】
0004687720.tif 000004
【図４】
0004687720.tif 000005
【図５】
0004687720.tif 000006
【図６】
0004687720.tif 000007
【図７】
0004687720.tif 000008
【図８】
0004687720.tif 000009
【図９】
0004687720.tif 000010
【図１０】
0004687720.tif 000011