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