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