(57)【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備え、
前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当て、
前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込み、
前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する、
ことを特徴とするメモリコントローラ。
【請求項２】
前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除し、
前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する物理ブロックに記憶されているデータを、前記いずれかの前記論理ブロックに対応する物理ブロックに転送する、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備え、
前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当て、
前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込み、
前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する、
ことを特徴とするメモリコントローラ。
【請求項４】
前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除し、
前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する前記所定容量の記憶領域に記憶されているデータを、前記いずれかの前記論理ブロックに対応する前記所定容量の記憶領域に転送する、
ことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリと
を備えるフラッシュメモリシステム。
【請求項６】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに割り当てられた物理ブロックにデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
を含み、
前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当て、
前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込み、
前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する、
ことを特徴とするフラッシュメモリの制御方法。
【請求項７】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
を含み、
前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当て、
前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込み、
前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する、
ことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置（ホストシステム）では、各種のファイルデータを保存するためにフラッシュメモリを記憶媒体として用いたＣＦ（Compact Flash）カード、ＳＳＤ（Solid State Device）等の情報記憶装置（フラッシュメモリシステム）が使われることが多くなっている。このようなフラッシュメモリシステムでは、ホストシステムから与えられる書き込み指示に基づいて、アクセス指示と共に与えられるデータがフラッシュメモリに保存される。
【０００３】
フラッシュメモリシステムに保存されるファイルデータは、通常、ＦＡＴ（File Allocation Table）ファイルシステム・ＮＴファイルシステム等のファイルシステムで管理されている。従って、フラッシュメモリシステムには、ファイルデータだけでなく、ファイルデータを管理するための情報も保存される。例えば、ＦＡＴファイルシステムの場合には、ルートディレクトリを含む情報や、ファイルが使用するクラスタの番号の情報が保存される。ＮＴファイルシステムの場合にも、ファイル名やインデックスを含む情報が保存される。
【０００４】
また、ＦＡＴファイルシステム・ＮＴファイルシステム等で管理されるファイルデータは、所定のクラスタサイズのデータに分割され、分割されたデータがフラッシュメモリに保存される。このクラスタサイズは、フラッシュメモリシステムの記憶容量が大きくなるにつれて５１２バイト・１ｋバイト・２ｋバイト・４ｋバイトというように段階的に大きくなっていく。従って、ホストシステムから与えられる書き込み指示に基づいて書き込まれるデータがファイルデータの場合、このクラスタ単位でデータの書き込みが指示される。つまり、書き込まれるデータがファイルデータの場合は、このクラスタサイズよりも小さい単位で、データの書き込みが指示されることがない。一方、書き込まれるデータがファイルデータを管理するための情報の場合は、このクラスタサイズよりも小さい単位（例えばセクタ単位）で、データの書き込みが指示されることがある。
【０００５】
記憶媒体として一般的に使用されているＮＡＮＤ型フラッシュメモリは、ページ（物理ページ）単位でデータが書き込まれる。このＮＡＮＤ型フラッシュメモリでは、記憶容量が大きくなるにつれて、物理ページの記憶容量が大きくなっている。従って、物理ページの記憶容量よりも小さい単位でのデータの書き込みや書き換えは、フラッシュメモリシステムのアクセス速度を低下させる要因になる。この問題を解決するために、特許文献１では、小さい容量でデータの書き込みが行われる領域が、ブロックサイズ（物理ブロックの記憶容量）の小さいフラッシュメモリに、つまり、ページサイズ（物理ページの記憶容量）の小さいフラッシュメモリに割り当てられるようにしている。
【０００６】
この小さい容量でデータの書き込みが行われる領域（以下、「小容量アクセス領域」と言う）としては、例えば、ＦＡＴファイルシステムやＮＴファイルシステムにおけるファイルデータを管理するための情報が保存される領域が挙げられる。ＦＡＴファイルシステムであれば、ファイル名やルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるＦＡＴ領域が、小容量アクセス領域に該当する。ＮＴファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるＭＦＴ（Master File Table）領域（管理レコードに割り当てられた領域）が、小容量アクセス領域に該当する。
【０００７】
【特許文献１】特開２００５−９２６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ホストシステムに電気的に接続されるフラッシュメモリシステムは、ホストシステムから与えられる指示に基づいてフラッシュメモリシステム内のフラッシュメモリにアクセスする。このホストシステムから与えられる指示には、書き込みや読み出しを指示するコマンドとアクセス対象の領域を指定する論理アドレスが含まれている。フラッシュメモリシステムは、ホストシステムから与えられる論理アドレスと、フラッシュメモリ内の記憶領域に割り当てられている物理アドレスとの対応関係を管理し、この対応関係に基づいて、ホストシステムから与えられるデータをフラッシュメモリに書き込んだり、フラッシュメモリに記憶されているデータをフラッシュメモリから読み出したりする。
【０００９】
このようなアクセス処理において、ホストシステムから与えられる論理アドレスが、上述のディレクトリ領域、ＦＡＴ領域及びＭＦＴ領域等の小容量アクセス領域に割り当てられた論理アドレスであるか否かを、フラッシュメモリシステム側で判断することはできない。つまり、これらの領域は、ホストシステム側で特定の論理アドレスに割り当てられるため、通常、フラッシュメモリシステム側ではこれらの領域が割り当てられている論理アドレスを把握することができない。
【００１０】
従って、特許文献１のように小さい容量でデータの書き込みが行われる領域が、フラッシュメモリシステム側でブロックサイズ（物理ブロックの記憶容量）の小さいフラッシュメモリに割り当てられるようにするためには、小さい容量でデータの書き込みが行われる領域に割り当てられる論理アドレスの範囲が予め決められている必要がある。このような論理アドレスの範囲が予め決められていれば、ホストシステムから与えられる論理アドレスに基づいて、小さい容量でデータの書き込みが行われる領域がブロックサイズ（物理ブロックの記憶容量）の小さいフラッシュメモリ内の記憶領域に割り当てるようにすることができる。また、特許文献１のような記憶領域の割り当てが可能であっても、小さい容量でデータの書き込みが行われる領域のために、ブロックサイズ（物理ブロックの記憶容量）の小さいフラッシュメモリを別途用意するのはコスト的に好ましくない。
【００１１】
そこで、本発明は、ホストシステムからの指示に基づいて動作するフラッシュメモリシステムにおいて、小さい容量でのデータの書き込みが指示されたときのアクセス速度の低下を抑えることができる記憶領域の管理技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第一の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備える。前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当てる。前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込む。前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する。
【００１３】
好適な実施形態では、前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除する。前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する物理ブロックに記憶されているデータを、前記いずれかの前記論理ブロックに対応する物理ブロックに転送する。
【００１４】
本発明の第二の側面に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当て手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込み手段と、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割手段と、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送手段と、
を備える。前記記憶領域割り当て手段は、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当てる。前記データ書き込み手段は、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込む。前記データ転送手段は、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する。
【００１５】
好適な実施形態では、前記論理ブロック分割手段は、複数個の前記論理サブブロックに分割された前記いずれかの前記論理ブロック内の領域に対して前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記いずれかの前記論理ブロックの分割を解除する。前記データ転送手段は、前記いずれかの前記論理ブロックの分割が解除されたときに、前記いずれかの前記論理ブロックから分割された前記論理サブブロックに対応する前記所定容量の記憶領域に記憶されているデータを、前記いずれかの前記論理ブロックに対応する前記所定容量の記憶領域に転送する。
【００１６】
本発明の第三の側面に従うメモリコントローラは、上記第一及び第二の側面や上記実施形態のうちのいずれかのメモリコントローラと、前記メモリコントローラによってアクセスされるフラッシュメモリとを備える。
【００１７】
本発明の第四の側面に従う方法は、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに割り当てられた物理ブロックにデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
を含む。前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定個数の物理ブロックを割り当てる。前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する物理ブロックに対してデータを書き込む。前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する物理ブロックに記憶されているデータを、分割後の前記論理サブブロックに対応する物理ブロックに転送する。
【００１８】
本発明の第五の側面に従う方法は、ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定容量の記憶領域を割り当てる記憶領域割り当てステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する所定容量の記憶領域にデータを書き込むデータ書き込みステップと、
前記アクセス指示により、いずれかの前記論理ブロック内の領域に対して所定セクタ数より少ない容量の領域を指定したデータの書き込みが指示された回数が、所定回数以上になったときに、前記いずれかの前記論理ブロック内の領域を１個又は複数個のセクタ単位の領域を含む論理サブブロックに分割する論理ブロック分割ステップと、
前記フラッシュメモリに記憶されているデータを前記フラッシュメモリ内の他の記憶領域に転送するデータ転送ステップと、
を含む。前記記憶領域割り当てステップでは、前記論理サブブロックに対して前記フラッシュメモリ内の前記所定容量の記憶領域を割り当てる。前記データ書き込みステップでは、前記アクセス指示により指定された書き込み先の領域が前記論理サブブロックに属するときに、前記論理サブブロックに対応する前記所定容量の記憶領域に対してデータを書き込む。前記データ転送ステップでは、前記論理ブロックが分割されるときに、分割前の前記論理ブロックに対応する前記所定容量の記憶領域に記憶されているデータを、分割後の前記論理サブブロックに対応する前記所定容量の記憶領域に転送する。
【発明の効果】
【００１９】
ホストシステムからの指示に基づいて動作するフラッシュメモリシステムにおいて、本発明にかかる記憶領域の管理を適用すれば、小さい容量でのデータの書き込みが指示されたときのアクセス速度の低下を抑えることができる。この記憶領域の管理は、小さい容量でデータの書き込みが行われる領域に割り当てられる論理アドレスの範囲が予め決められていない場合や、その論理アドレスの範囲が変化する場合であっても適用することができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明に係るフラッシュメモリシステム１の構成を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。メモリコントローラ３とフラッシュメモリ２は、内部バス１４を介して接続されている。
【００２１】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２２】
図１に示したように、メモリコントローラ３は、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭ８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（Error Correcting Code）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００２３】
ホストインターフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、コマンド等の授受を行う。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２４】
ＳＲＡＭ（Static Random Access Memory）８は、揮発性の記憶素子であり、その記憶領域にはフラッシュメモリ２の制御に必要な情報が一時的に保持される。例えば、アドレス変換テーブルや空きブロック検索テーブル等が保持される。ここで、アドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を示したテーブルであり、空きブロック検索テーブルは、消去状態の物理ブロック（又は、有効なデータが保存されていない物理ブロック）を検索するためのテーブルである。
【００２５】
ＲＯＭ１２は、不揮発性の記憶素子であり、メモリコントローラ３が動作するために必要なファームウェアが保存される。
【００２６】
バッファ９は、ホストシステム４から与えられたデータやフラッシュメモリ２から読み出されたデータを一時的に保持する。例えば、フラッシュメモリ２に書き込まれるデータは、フラッシュメモリ２が書き込み可能な状態になるまでバッファ９に保持される。また、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態になるまでバッファ９に保持される。
【００２７】
フラッシュメモリインターフェースブロック１０は、フラッシュメモリ２に対する各種の処理を実行する。この処理では、フラッシュメモリインターフェースブロック１０とフラッシュメモリ２との間で、データ、アドレス情報、ステータス情報、コマンド等の授受が、内部バス１４を介して行なわれる。
【００２８】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error Correcting Code）を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００２９】
マイクロプロセッサ６は、ＲＯＭ１２から読み込んだプログラムコードに従って、メモリコントローラ３の全体の動作を制御する。
【００３０】
以上の機能ブロックで構成されたメモリコントローラ３は、ホストシステム４から与えられるアクセス指示に従って動作する。このアクセス指示には、書き込み、読み出し又は消去等の動作を指示するコマンド（以下、ホストシステム４から与えられるコマンドを「外部コマンド」という）が含まれている。更に、書き込み又は読み出しを指示する外部コマンドがホストシステム４から与えられるときには、この外部コマンドと共に、アクセス対象の領域を指示するアドレス情報がホストシステム４から与えられる。このアドレス情報には、アクセス対象の領域の先頭アドレスと容量（セクタ数）を示す情報が含まれている。
【００３１】
メモリコントローラ３は、ホストシステム４から与えられるアクセス指示に基づいて、フラッシュメモリ２に、書き込み、読み出し又は消去等の動作を指示するコマンド（以下、メモリコントローラ３がフラッシュメモリ２に与えられるコマンドを「内部コマンド」という）を与える。メモリコントローラ３がフラッシュメモリ２に書き込み又は読み出しを指示する内部コマンドを与えるときには、その内部コマンドと共にフラッシュメモリ２内の記憶領域を指示する物理アドレスがフラッシュメモリ２に与えられる。
【００３２】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択された各メモリセル群の中のメモリセルとレジスタとの間で、レジスタからメモリセルへのデータの書き込み又はメモリセルからレジスタへのデータの読み出しが行われる。
【００３３】
ＮＡＮＤ型フラッシュメモリでは、データの読み出し及び書き込みはページ（物理ページ）単位で行われ、データの消去はブロック（物理ブロック）単位で行われる。物理ブロックは、複数のページ（物理ページ）で構成される。例えば、１個の物理ページは、２０４８バイトのユーザー領域と、６４バイトの冗長領域とで構成され、１個の物理ブロックは、６４個の物理ページで構成されている。冗長領域は、誤り訂正符号（ＥＣＣ：Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データが記憶される領域である。尚、論理アドレス情報は、その物理ブロックと対応する論理ブロックを示す情報である。ブロックステータス（フラグ）は、その物理ブロックの良否を示す情報である。
【００３４】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、論理セクタ領域と言う）に付けられた通し番号であるＬＢＡ（Logical Block Address）で管理されている。メモリコントローラ３は、複数個の論理セクタ領域からなる領域を論理ブロックとして取り扱い、この論理ブロックに対して、１個又は複数個の物理ブロックを割り当てる。この論理ブロックと物理ブロックの対応関係は、アドレス変換テーブルで管理されている。このアドレス変換テーブルでは、論理ブロックに付けられた論理ブロック番号（ＬＢＮ）に対して物理ブロックに付けられた物理ブロックアドレス（ＰＢＡ）とを関連付けることにより論理ブロックと物理ブロックの対応関係を管理している。
【００３５】
本実施形態では、図２に示したようにＬＢＡが連続する２５６個の論理セクタ領域をまとめたものを論理ブロックとし、この論理ブロックに論理ブロック番号（ＬＢＮ）が付けられている。例えば、ＬＢＡ＃０〜＃２５５の２５６個の論理セクタ領域は、ＬＢＮ＃０の論理ブロックに属し、ＬＢＡ＃２５６〜＃５１１の２５６個の論理セクタ領域はＬＢＮ＃１の論理ブロックに属している。このように、ＬＢＡ＃０〜＃２０４７９９９の２０４８０００個の論理セクタ領域は、ＬＢＮ＃０〜＃７９９９の８０００個の論理ブロックのいずれかに属している。
【００３６】
更に、アドレス変換テーブルを管理するための便宜として、メモリコントローラ３は、複数個の論理ブロックをまとめたものを論理グループとして取り扱い、この論理グループ単位でアドレス変換テーブルを管理している。以下、論理グループに付けられた通し番号を論理グループ番号（ＬＧＮ）と言う。また、図２に示した例では、ＬＢＮが連続する論理ブロックが、異なる論理グループに順次振り分けられるようにして論理グループが形成されている。ここでは、ＬＢＮ＃０の論理ブロックはＬＧＮ＃０の論理グループに、ＬＢＮ＃１の論理ブロックはＬＧＮ＃１の論理グループに、ＬＢＮ＃２の論理ブロックはＬＧＮ＃２の論理グループにという順番でＬＧＮ＃０〜＃７の各論理グループにＬＢＮ＃０〜＃７９９９の８０００個の論理ブロックが１０００個ずつ振り分けられている。各論理グループに含まれる論理ブロックの個数は、適宜設定することができるが、アドレス変換テーブルが保存されるフラッシュメモリ２の物理ページの記憶領域を考慮して設定することが好ましい。つまり、各論理グループに対応するアドレス変換テーブルは、１個の物理ページに保存できる容量であることが好ましい。
【００３７】
次に、本実施形態の特徴の一つである論理ブロックの分割について説明する。ホストシステム４がフラッシュメモリシステム１に対してデータの書き込みを指示するときには、ホストシステム４から書き込みを指示する外部コマンドと書き込み先の領域を指示するアドレス情報が与えられる。このアドレス情報には、書き込み先の領域のセクタ数を示す情報が含まれている。ここで、書き込むデータがファイルデータであれば、クラスタ単位でデータの書き込みが行われるため、書き込み先の領域のセクタ数はクラスタのサイズ（セクタ数）より小さくなることがない。一方、書き込むデータがファイルデータを管理するための情報であれば、書き込み先の領域のセクタ数はクラスタのサイズ（セクタ数）より小さくなることがある。
【００３８】
従って、特定範囲のＬＢＡに対応した領域に対して、クラスタのサイズ（セクタ数）より小さい単位での書き込みが指示されるような場合には、その領域がファイルデータを管理するための情報の保存先に割り当てられている可能性が高い。例えば、ホストシステム４が、ＦＡＴファイルシステムを採用している場合には、ファイル名やファイルのルートディレクトリを含む情報が保存されるディレクトリ領域や、クラスタの番号の情報が保存されるＦＡＴ領域が割り当てられているＬＢＡの範囲が、クラスタのサイズ（セクタ数）より小さい単位での書き込みが指示される可能性が高い。また、ＮＴファイルシステムであれば、ファイル名やインデックスを含む情報が保存されるＭＦＴ（Master File Table）領域（管理レコードに割り当てられた領域）が、クラスタのサイズ（セクタ数）より小さい単位での書き込みが指示される可能性が高い。
【００３９】
そこで、本実施形態では、ホストシステム４から与えられるアドレス情報に含まれる書き込み先の領域のセクタ数に基づいて、ディレクトリ領域、ＦＡＴ領域又はＭＦＴ（Master File Table）領域等のファイルデータを管理するための情報が保存される領域（以下、「ファイル管理領域」と言う）が含まれる論理ブロックの特定が行われる。更に、このようにして特定された論理ブロックに含まれる領域が、複数個の領域に分割される。この分割された各領域（以下、「論理サブブロック」と言う）には、それぞれフラッシュメモリ２内の記憶領域が割り当てられる。１個の論理ブロックを何個の論理サブブロックに分割するかは適宜設定することができる。
【００４０】
図３に示した例では、ＬＢＮ＃２の論理ブロックがファイル管理領域が含まれる論理ブロックとして特定され、この論理ブロックが４個の論理サブブロック（ＬＢＮ＃２−０〜＃２−３の論理サブブロック）に分割される。つまり、ＬＢＡ＃５１２〜＃７６７の論理セクタ領域が含まれるＬＢＮ＃２の論理ブロックは、ＬＢＡ＃５１２〜＃５７５の論理セクタ領域が含まれる枝番号０の論理サブブロック（ＬＢＮ＃２−０の論理サブブロック）と、ＬＢＡ＃５７６〜＃６３９の論理セクタ領域が含まれる枝番号１の論理サブブロック（ＬＢＮ＃２−１の論理サブブロック）と、ＬＢＡ＃６４０〜＃７０３の論理セクタ領域が含まれる枝番号２の論理サブブロック（ＬＢＮ＃２−２の論理サブブロック）と、ＬＢＡ＃７０４〜＃７６７の論理セクタ領域が含まれる枝番号３の論理サブブロック（ＬＢＮ＃２−３の論理サブブロック）とに分割される。
【００４１】
ＬＢＮ＃２−０〜＃２−３の各論理サブブロックには、分割前の論理ブロックと同様に１個の物理ブロックが割り当てられる。図３に示した例では、ＬＢＮ＃２−０の論理サブブロックにＰＢＡ＃１１の物理ブロックが割り当てられ、ＬＢＮ＃２−１の論理サブブロックにＰＢＡ＃１４の物理ブロックが割り当てられ、ＬＢＮ＃２−２の論理サブブロックにＰＢＡ＃１２の物理ブロックが割り当てられ、ＬＢＮ＃２−３の論理サブブロックにＰＢＡ＃１７の物理ブロックが割り当てられている。
【００４２】
本実施の形態では、１個の論理ブロックに含まれる領域の容量と１個の物理ブロックに含まれる記憶領域の容量が等しくなるように論理ブロックに含まれる領域の容量が設定されているので、１個の論理サブブロックに含まれる領域の容量は、１個の物理ブロックに含まれる記憶領域の容量の４分の１になる。つまり、１個の物理ページのユーザー領域の容量が２ｋバイトで、１個の物理ブロックに６４個の物理ページが含まれるＮＡＮＤ型フラッシュメモリを使用されているので、論理ブロックに含まれる領域の容量は２５６セクタ（１２８ｋバイト）に設定されている。そして、論理サブブロックに含まれる領域の容量は６４セクタ（３２ｋバイト）になる。
【００４３】
論理ブロックが複数個の論理サブブロックに分割された場合、論理サブブロックに含まれる領域の容量が、その論理サブブロックに割り当てられるフラッシュメモリ２内の記憶領域よりも小さくなるので、その論理サブブロックに割り当てられる記憶領域内で、その論理サブブロックに対応する書き換えデータを書き込むために使用できる領域が増加する。また、論理サブブロックに含まれる領域の容量が減少するため、論理サブブロックにフラッシュメモリ２内の記憶領域を新たに割り当てたとき等に行われるデータ転送（以前に割り当てられていた記憶領域から新たに割り当てられた記憶領域へのデータ転送）のデータ容量も減少する。従って、論理ブロックが複数個の論理サブブロックに分割されることにより、その論理ブロックに含まれる領域（各論理サブブロックに含まれる領域）に対応するデータの書き換え効率が向上する。
【００４４】
以下、本実施の形態におけるメモリコントローラ３の動作について説明する。
【００４５】
まず、メモリコントローラ３が、ファイル管理領域が含まれる論理ブロックを特定する動作について説明する。
【００４６】
メモリコントローラ３のホストインターフェースブロック７は、ホストシステム４からアクセス可能な各種のレジスタ（以下、「ホストインターフェースレジスタ」と言う）を備えている。ホストシステム４からメモリコントローラ３に与えられるアクセス指示は、このホストインターフェースレジスタに書き込まれる。ホストシステム４がメモリコントローラ３に対してデータの書き込みを指示する場合には、「データの書き込みを指示する外部コマンド」、「先頭データの書き込みを指示するＬＢＡ」及び「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」がホストインターフェースレジスタに書き込まれる。
【００４７】
本実施の形態では、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」に基づいて、書き込むデータがファイルデータであるか、又はファイルデータを管理するための情報であるかが判別される。この判別を行うため、ホストインターフェースレジスタに書き込まれる「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」に対して閾値（以下、「セクタ数設定値」と言う）が設けられる。そして、「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」がセクタ数設定値以上の場合には、書き込むデータがファイルデータであると判断され、セクタ数設定値より小さい場合には、書き込むデータがファイルデータを管理するための情報であると判断される。
【００４８】
尚、既に説明したように、書き込むデータがファイルデータあれば、クラスタ単位でデータの書き込みが行われるため、セクタ数設定値はクラスタのセクタ数に合わせて設定されることが好ましい。但し、セクタ数設定値がクラスタのセクタ数よりも小さくても構わない。例えば、クラスタのセクタ数が８セクタの場合に、セクタ数設定値が“４”であっても構わない。
【００４９】
次に、ファイル管理領域が含まれる論理ブロックを特定するために使用されるテーブル（以下、「小容量書き込み管理テーブル」と言う）について図４を参照して説明する。図４に示した小容量書き込み管理テーブルには、各論理ブロックが分割されているか否かを示す分割フラグとセクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数（以下、「小容量書き込み指示回数」と言う）が書き込まれる。小容量書き込み管理テーブルに書き込まれる分割フラグと小容量書き込み指示回数は、各ＬＢＮに関連付けられている。分割フラグの“０”は論理ブロックが分割されていない状態を示し、分割フラグの“１”は論理ブロックが分割されている状態を示している。この小容量書き込み管理テーブルはＳＲＡＭ８上で更新され、フラッシュメモリ２に保存される。この小容量書き込み管理テーブルがフラッシュメモリ２に保存されていないときには、分割フラグを“０”に、小容量書き込み指示回数を“０”に設定した小容量書き込み管理テーブル（図４（ａ）参照）がＳＲＡＭ８上に作成され、作成された小容量書き込み管理テーブルはフラッシュメモリ２に保存される。
【００５０】
ホストシステム４から書き込みを指示するアクセス指示が与えられたとき、つまり、ホストインターフェースレジスタに「データの書き込みを指示する外部コマンド」が書き込まれたとき、メモリコントローラ３は、その外部コマンドと共にホストインターフェースレジスタに書き込まれた「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」がセクタ数設定値より小さいか否かを判断する。セクタ数設定値より小さいと判断した場合、メモリコントローラ３は、更に、その外部コマンドに対応するデータの書き込み先の領域が属する論理ブロックを特定する。つまり、この処理では、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックが特定される。例えば、セクタ数設定値が“４”の場合に、ホストインターフェースレジスタにデータの書き込みを指示する外部コマンドと共に、先頭データの書き込みを指示するＬＢＡとして“５１２”が、データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）として“１”が書き込まれたときは、ＬＢＮ＃２の論理ブロックがセクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックとして特定される。
【００５１】
小容量書き込み管理テーブルは、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックが特定されたときに更新される。この更新処理では、小容量書き込み管理テーブル上の、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックのＬＢＮに関連付けられている小容量書き込み指示回数が１回増やされる。例えば、セクタ数設定値より小さいセクタ数のデータの書き込みが指示された領域が属する論理ブロックがＬＢＮ＃２の論理ブロックである場合に、小容量書き込み管理テーブル上のＬＢＮ＃２に関連付けられている小容量書き込み指示回数が“１０”であったとすれば、その小容量書き込み指示回数が“１１”に書き換えられる。
【００５２】
本実施の形態では、小容量書き込み管理テーブル上の小容量書き込み指示回数に対しても閾値（以下、「書き込み回数設定値」と言う）が設けられている。そして、小容量書き込み管理テーブル上のいずれかの小容量書き込み指示回数が書き込み回数設定値以上になったときには、その小容量書き込み指示回数に関連付けられているＬＢＮの論理ブロックが複数個の論理サブブロックに分割される。また、論理ブロックが分割されたときには、その論理ブロックのＬＢＮに関連付けられている分割フラグが“０”から“１”に書き換えられる。例えば、書き込み回数設定値が“１２８”に設定されている場合に、ＬＢＮ＃２に関連付けられている小容量書き込み指示回数が“１２８”に達したときには、ＬＢＮ＃２の論理ブロックが複数個の論理サブブロックに分割される。また、ＬＢＮ＃２に関連付けられている分割フラグが“０”から“１”に書き換えられる（図４（ｂ）参照）。
【００５３】
ファイル管理領域に割り当てられたＬＢＡの範囲が、ホストシステム４側で変更された場合について説明する。このような変更が行われた場合、ファイル管理領域に割り当てられたＬＢＡの範囲に対応する論理セクタ領域を含んでいた論理ブロックが、そのＬＢＡの範囲に対応する論理セクタ領域を含まない論理ブロックになってしまうことがある。つまり、ファイル管理領域に割り当てられたＬＢＡの範囲が変更された場合には、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域が属する論理ブロックが変わってしまうことがある。このような場合、論理サブブロックに割り当てられている物理ブロック対して、クラスタのサイズ（セクタ数）より小さい単位でのデータの書き込みが行われなくなる。一方、分割されていない論理ブロックに割り当てられている物理ブロック対して、クラスタのサイズ（セクタ数）より小さい単位でのデータの書き込みが行われるようになる。
【００５４】
ファイル管理領域に割り当てられたＬＢＡの範囲が変更されたことにより、そのＬＢＡの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックについては、複数個の論理サブブロックに分割されたまま放置されていることは好ましくない。例えば、ファイル管理領域に割り当てられたＬＢＡの範囲が、＃５１２〜＃７６７の範囲から＃７６８〜＃１０２３の範囲に変更された場合、ＬＢＮ＃２の論理ブロックが複数個の論理サブブロックに分割されたまま放置されていることは好ましくない。
【００５５】
このような問題に対処するためには、メモリコントローラ３は、ファイル管理領域に割り当てられたＬＢＡの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの分割を解除する必要がある。論理ブロックの分割が解除された場合、複数個の論理サブブロック内の領域は結合され、元の論理ブロックに戻され、１個の論理ブロックとして取り扱われるようになる。従って、各論理サブブロックに対応する物理ブロックに記憶されている有効なデータは、分割を解除する際に、それらの論理サブブロックが結合された元の論理ブロックに割り当てられた物理ブロックに転送される。例えば、ＬＢＮ＃２の論理ブロックの分割が解除された場合には、ＬＢＮ＃２−０〜＃２−３の各論理サブブロックは、論理サブブロック単位で取り扱われなくなり、分割前のＬＢＮ＃２の論理ブロックとして取り扱われるようになる。従って、ＬＢＮ＃２−０〜＃２−３の各論理サブブロックに対応する物理ブロックに記憶されている有効なデータは、分割を解除する際にＬＢＮ＃２の論理ブロックに割り当てられた物理ブロックに転送される。
【００５６】
次に、図４に示したような小容量書き込み管理テーブルを用いて、ファイル管理領域に割り当てられたＬＢＡの範囲に対応する論理セクタ領域を含まなくなってしまった論理ブロックを特定し、その論理ブロックの分割を解除する場合について説明する。この例では、所定期間毎（例えば、ホストシステムからデータの書き込み指示を所定回数与えられる毎）に、小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“０”に戻されるようにする（図４（ｃ）参照）。この際、分割フラグはそのままの値が維持される。従って、複数個の論理サブブロックに分割されている論理ブロック（論理ブロック＃２）については、その論理ブロックのＬＢＮに関連付けられている分割フラグは“１”のままであるが、小容量書き込み指示回数だけが“０”に戻される。この小容量書き込み指示回数が“０”に戻される直前に、対応する分割フラグが“１”のＬＢＮについて（つまり、複数個の論理サブブロックに分割されている論理ブロックのＬＢＮについて）、そのＬＢＮに関連付けられている小容量書き込み指示回数が“０”であるか否かが確認される。そして、そのＬＢＮに関連付けられている小容量書き込み指示回数が“０”である場合、そのＬＢＮの論理ブロックの分割が解除される。つまり、複数個の論理サブブロックに分割された論理ブロック内の領域に対して、セクタ数設定値より小さいセクタ数のデータの書き込みが所定期間中に指示されなかった場合、その論理ブロックに、ファイル管理領域に割り当てられたＬＢＡの範囲に対応する論理セクタ領域が含まれなくなってしまったと判断される。
【００５７】
尚、いずれかの論理ブロック又は論理サブブロックが割り当てられている物理ブロック内の冗長領域には、その物理ブロックに対応する論理ブロックに関する分割フラグ及び小容量書き込み指示回数が書き込まれることが好ましい。ここで、本実施の形態を説明するために必要な範囲で、この冗長領域及びこの冗長領域に書き込まれる情報について説明する。物理ブロックに含まれる各物理ページは、通常、ホストシステムから与えられるデータが書き込まれるユーザー領域とその他のデータが書き込まれる冗長領域に分けて使用される。ユーザー領域に記憶されるデータは、通常、セクタ単位で誤り訂正符号（ＥＣＣ：Error Correcting Code）が生成され、その誤り訂正符号は冗長領域に書き込まれる。従って、図５に示したように冗長領域２０は、物理ブロック又は物理ページに共通の情報が書き込まれる共通冗長領域２１とユーザー領域のセクタ単位の領域にそれぞれ割り当てられている分割冗長領域２２に分けて使用される。上記の分割フラグは物理ブロック内の先頭物理ページの共通冗長領域２１又は各物理ページの共通冗長領域２１に書き込まれることが好ましい。また、論理サブブロックに割り当てられている物理ブロックの場合には、その物理ブロックに対応する論理ブロックを示す論理アドレス情報（例えば、ＬＢＮ）と共に、その物理ブロックに対応する論理サブブロックを示す枝番号が共通冗長領域２１に書き込まれることが好ましい。小容量書き込み指示回数については、各物理ページの共通冗長領域２１又は分割冗長領域２２に書き込まれることが好ましい。
【００５８】
次に、本実施の形態におけるメモリコントローラ３の動作を、図６のフローチャートを参照して説明する。
【００５９】
ステップ１（Ｓ１）：
メモリコントローラ３は、ホストシステムからアクセス指示を与えられえたときに、そのアクセス指示が、書き込みの指示であるか否かを判断する。つまり、ホストシステムから与えられた外部コマンドが書き込みコマンドであるか否かを判断する。ホストシステムから与えられた外部コマンドが書き込みコマンドである場合（Ｓ１：Ｙｅｓ）は、ステップ２（Ｓ２）に進む。
【００６０】
ステップ２（Ｓ２）：
メモリコントローラ３は、セクタ数設定値ｋより小さいセクタ数のデータの書き込みが指示されたか否かを判断する。つまり、ホストシステムから書き込みコマンドと共に与えられる「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」の値がｋ未満であるか否かを判断する。「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」の値がｋ未満である場合（Ｓ２：Ｙｅｓ）は、ステップ３（Ｓ３）に進む。
【００６１】
ステップ３（Ｓ３）：
メモリコントローラ３は、ホストシステムからの書き込みの指示で指定された、データの書き込み先の領域が属する論理ブロックを特定する。つまり、メモリコントローラ３は、ホストシステムから書き込みコマンドと共に与えられる「先頭データの書き込みを指示するＬＢＡ」及び「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」に基づいて、データの書き込み先の領域に対応するＬＢＡの範囲を求める。そして、このＬＢＡの範囲の論理セクタ領域が含まれる論理ブロックを特定する。
【００６２】
ステップ４（Ｓ４）：
メモリコントローラ３は、小容量書き込み管理テーブルを更新する。つまり、メモリコントローラ３は、ステップ３（Ｓ３）で特定された論理ブロックのＬＢＮに関連付けられている小容量書き込み指示回数の値を１増加させる。
【００６３】
ステップ５（Ｓ５）：
メモリコントローラ３は、ステップ３（Ｓ３）で特定された論理ブロック内の領域に対するセクタ数設定値ｋ（ｋは自然数）より小さいセクタ数のデータの書き込み指示回数が、書き込み回数設定値ｎ（ｎは自然数）に達したか否かを判断する。つまり、メモリコントローラ３は、ステップ４（Ｓ４）で小容量書き込み管理テーブルを更新したことにより、ステップ３（Ｓ３）で特定された論理ブロックのＬＢＮに関連付けられている小容量書き込み指示回数の値がｎに達したか否かを判断する。ステップ３（Ｓ３）で特定された論理ブロックのＬＢＮに関連付けられている小容量書き込み指示回数の値がｎに達している場合（Ｓ５：Ｙｅｓ）は、ステップ６（Ｓ６）に進む。
【００６４】
ステップ６（Ｓ６）：
メモリコントローラ３は、ステップ３（Ｓ３）で特定された論理ブロックを複数個の論理サブブロックに分割する。つまり、メモリコントローラ３は、論理ブロック内の領域を複数個の論理サブブロックとして取り扱うため、各論理サブブロックに対してフラッシュメモリ２内の物理ブロックを新たに割り当てる。ステップ３（Ｓ３）で特定された論理ブロックに対応する物理ブロックに記憶されているデータは、そのデータが対応する論理ブロックに応じて各論理サブブロックに対して新たに割り当てられた物理ブロックに転送される。つまり、論理ブロックに対応する物理ブロックに記憶されているデータに対応するＬＢＡが枝番号＃０の論理サブブロックに属する場合、そのデータは、枝番号＃０の論理サブブロックに対して新たに割り当てられた物理ブロックに転送される。これらの処理が終了した後に、メモリコントローラ３は、分割された論理ブロックのＬＢＮに関連付けられている分割フラグを“０”から“１”に変更する。尚、ステップ６（Ｓ６）の処理を実行する前に、既にステップ３（Ｓ３）で特定された論理ブロックが複数個の論理サブブロックに分割されていた場合はステップ６（Ｓ６）の処理は実行されない。
【００６５】
尚、セクタ数設定値ｋの値、書き込み回数設定値ｎの値、論理ブロックに含まれる領域の容量、各論理ブロックに割り当てる物理ブロックの個数、及び論理ブロックの分割数（１個の論理ブロックを何個の論理サブブロックに分割するか）等は適宜設定することができる。また、上述のように、所定期間毎（例えば、ホストシステム４からデータの書き込み指示を所定回数与えられる毎）に小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“０”に戻されるようにしたい場合には、ホストシステム４からデータの書き込み指示される毎にカウントアップされるカウンタを設け、そのカウント値が所定の値に達したときに小容量書き込み管理テーブル上の全ての小容量書き込み指示回数が“０”に戻されるようにすればよい。
【００６６】
以上、本発明の実施の形態を説明したが、これは本発明を説明するための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００６７】
例えば、上述の実施の形態では、小容量書き込み管理テーブルを用いて小容量書き込み指示回数（セクタ数設定値より小さいセクタ数のデータの書き込みが指示された回数）を管理していたが、他の方法でこの小容量書き込み指示回数が管理されてもよい。例えば、メモリコントローラ３は、各物理ブロックに対してデータの書き込みを行う毎に、その物理ブロックの冗長領域に最新の小容量書き込み指示回数を書き込むようにすれば、物理ブロックの冗長領域に書き込まれている小容量書き込み指示回数に基づいて、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックを特定することができる。
【００６８】
また、セクタ数設定値より小さいセクタ数のデータの書き込みが指示される毎に、その指示に対応する「先頭データの書き込みを指示するＬＢＡ」及び「データを書き込む領域のセクタ数（書き込むデータの容量に対応するセクタ数）」のデータを累積的に記録してき、このデータが所定回数分蓄えられたときに、このデータを集計し、セクタ数設定値より少ない領域を指定したデータの書き込みが所定回数指示された論理ブロックを特定するようにしてもよい。
【００６９】
また、実施の形態では、小容量アクセス領域（セクタ数設定値より小さいセクタ数のデータの書き込みが指示される領域）が、ディレクトリ領域、ＦＡＴ領域又はＭＦＴ（Master File Table）領域等のファイル管理領域であるものとして説明したが、小容量アクセス領域がファイル管理領域でなくても本発明を適用することができる。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】ホストシステム側のアドレス空間とフラッシュメモリ内のアドレス空間との対応関係を説明するための図である。
【図３】論理ブロック又は論理サブブロックと物理ブロックとの対応関係を説明するための図である。
【図４】小容量書き込み管理テーブルを説明するための図である。
【図５】冗長領域に書き込まれる情報を説明するための図である。
【図６】本発明の実施の形態によるメモリコントローラの動作を説明するためのフローチャートである。
【符号の説明】
【００７１】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ
【図１】
0004737223.tif 000002
【図２】
0004737223.tif 000003
【図３】
0004737223.tif 000004
【図４】
0004737223.tif 000005
【図５】
0004737223.tif 000006
【図６】
0004737223.tif 000007