(57)【要約】【課題】論理ページと物理ページの対応関係の管理に係る負担の増加を抑えつつ、データ書き換えの効率を向上させる記憶領域の管理技術を提供する。【解決手段】各論理ブロックに対して、論理ページと物理ページの対応関係を固定した記憶領域の管理、又論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用される。論理ページと物理ページの対応関係を固定しない記憶領域の管理が適用さている論理ブロック内の領域に対して、所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定回数以上指示されたときに、その論理ブロックに対する記憶領域の管理が、論理ページと物理ページの対応関係を固定しない記憶領域の管理に変更される。【選択図】図３
2009301491.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理手段と、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当て手段と、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断手段と、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込み手段と
を備え、
前記論理ブロック種別判断手段が、前記回数が所定回数未満の前記論理ブロックを第１の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第２の論理ブロックと判断し、
前記データ書き込み手段は、前記第１の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第２の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とするメモリコントローラ。
【請求項２】
前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写手段を更に備え
前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記論理ブロック種別判断手段は、前記いずれかの前記論理ブロックを第１の論理ブロックと判断し、前記データ複写手段は、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写す
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリと
を備えるフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられるアクセス指示に従って、複数個の物理ページを含む物理ブロック単位で消去が行われるフラッシュメモリの制御方法であって、
前記アクセス指示により指定される論理アドレスが割り当てられているセクタ単位の領域が複数個含まれる所定セクタ数の領域を論理ブロックとして管理する論理ブロック管理ステップと、
前記論理ブロックに対して、前記フラッシュメモリ内の所定個数の物理ブロックを割り当てる記憶領域割り当てステップと、
それぞれの前記論理ブロック内の領域に対する所定セクタ数より少ない容量の領域を指定したデータの書き込みが前記アクセス指示により指示される回数に基づいて、前記論理ブロックの種別を判断する論理ブロック種別判断ステップと、
前記アクセス指示により指定された書き込み先の領域が属する前記論理ブロックに対応する物理ブロックにデータを書き込むデータ書き込みステップと
を有し、
前記書き込み方式判断ステップでは、前記回数が所定回数未満の前記論理ブロックを第１の論理ブロックと判断し、前記回数が所定回数以上の前記論理ブロックを第２の論理ブロックと判断し、
前記データ書き込みステップでは、前記第１の論理ブロックと判断された前記論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番でデータを書き込み、前記第２の論理ブロックと判断された論理ブロックに対応する物理ブロックに対しては、前記論理アドレスの順番に依存せずにデータを書き込む
ことを特徴とするフラッシュメモリの制御方法。
【請求項５】
前記論理アドレスの順番でデータが書き込まれていない物理ブロック内の記憶データを、別の物理ブロックに前記論理アドレスの順番で書き写すデータ複写ステップを更に備え
前記回数が所定回数以上になったいずれかの前記論理ブロック内の領域に対して、前記所定セクタ数より少ない容量の領域を指定したデータの書き込みが所定期間指示されなかったときに、前記書き込み方式判断ステップにより、前記いずれかの前記論理ブロックが第１の論理ブロックと判断され、前記データ複写ステップにより、前記いずれかの前記論理ブロックに対応する物理ブロック内の記憶データが、別の物理ブロックに前記論理アドレスの順番で書き写される
ことを特徴とする請求項４に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置（ホストシステム）では、各種のファイルデータを保存するためにフラッシュメモリを記憶媒体として用いたＣＦ（Compact Flash）カード、ＳＳＤ（Solid State Drive）等の情報記憶装置（フラッシュメモリシステム）が使われることが多くなっている。このようなフラッシュメモリシステムでは、ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリに対するアクセスが行われる。また、ホストシステムから与えられるアクセス指示では、セクタ（５１２バイト）単位の領域に付けられたアドレスでアクセス対象の領域が指示される。
【０００３】
このようなフラッシュメモリシステムの記憶媒体として一般的に使用されているＮＡＮＤ型フラッシュメモリでは、ページ（物理ページ）単位でデータの書き込みが行われ、複数の物理ページを含む物理ブロック単位で記憶データの消去が行われる。
【０００４】
ＮＡＮＤ型フラッシュメモリを用いたフラッシュメモリシステムでは、ホストシステム側で管理されているアドレスが付けられたセクタ単位の領域を１個又は複数個集めた論理ページを物理ページに割り当てている。この論理ページと物理ページの対応関係の管理が煩雑になることを回避するため、複数個の論理ページを集めた論理ブロックを形成し、ブロック単位で論理ブロックと物理ブロックの対応関係を管理している。尚、論理ブロックに含まれる論理ページと、その論理ブロックと対応する物理ブロックに含まれる物理ページの対応関係については、固定されている場合と固定されていない場合がある。
【０００５】
論理ブロックに含まれる論理ページと、その論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係が固定された記憶領域の管理方式（以下、「ページ対応関係固定方式」と言う）は、例えば、特許文献１に記載されている。このページ対応関係固定方式では、ホストシステムからのアクセス指示に従ってデータを書き込むときに、そのアクセス指示により指定された書き込み先の論理ページを含んだ論理ブロックに対応する物理ブロック内に、データが書き込まれていない物理ページがあっても、上記書き込み先の論理ページに対応する物理ページにデータが書き込まれていれば、上記書き込み先の論理ページを含んだ論理ブロックに別の物理ブロックが新たに割り当てられ、その物理ブロックにデータが書き込まれる。従って、ページ対応関係固定方式では、ホストシステムから与えられる新たなデータをフラッシュメモリに書き込むときに、フラッシュメモリに記憶されているデータが別の物理ブロックに転送される頻度が高くなる。
【０００６】
論理ブロックに含まれる論理ページと、その論理ブロックに対応する物理ブロックに含まれる物理ページとの対応関係が固定されていない記憶領域の管理方式（以下、「ページ対応関係可変方式」と言う）は、例えば、特許文献２に記載されている。このページ対応関係可変方式では、ホストシステムから与えられる各論理ページに対応するデータが、物理ブロック内のデータが書き込まれていない先頭の物理ページから順番に書き込まれていく。従って、ページ対応関係可変方式では、上記のようなデータ転送の頻度は低くなるが、論理ページと物理ページの対応関係を管理する必要が生じる。
【０００７】
フラッシュメモリシステムに保存されるファイルデータは、通常、ＦＡＴ（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）領域等のファイル管理領域であるものとして説明したが、小容量領域がファイル管理領域でなくても本発明を適用することができる。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】ホストシステム側のアドレス空間とフラッシュメモリ内のアドレス空間との対応関係を説明するための図である。
【図３】論理ページと物理ページとの対応関係を説明するための図である。
【図４】小容量書き込み管理テーブルを説明するための図である。
【図５】冗長領域に書き込まれる情報を説明するための図である。
【図６】本発明の実施の形態によるメモリコントローラの動作を説明するためのフローチャートである。
【符号の説明】
【００８３】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ
【図１】
2009301491.tif 000003
【図２】
2009301491.tif 000004
【図３】
2009301491.tif 000005
【図４】
2009301491.tif 000006
【図５】
2009301491.tif 000007
【図６】
2009301491.tif 000008