(57)【要約】【課題】フラッシュメモリシステムにおいて、ホストシステムによるフラッシュメモリへのアクセスに支障を来たさずに、メモリコントローラ内のバッファからフラッシュメモリへのデータ転送動作及びフラッシュメモリへのデータ書込み動作の実行回数を減らす。【解決手段】メモリコントローラは、ホストシステムから書き込みコマンドを受信すると（Ｓ３でYes）、ホストシステムから与えられるユーザデータの書き込み先の論理ページと、バッファ内の既存データの書き込み先の論理ページとが一致するかどうか判断する（Ｓ４）。一致する場合、バッファ内の既存データをフラッシュメモへ書き込まずに、ホストシステムからのユーザデータをバッファに書き込む（Ｓ５）。一致しない場合、バッファ内の既存データをフラッシュメモへ書き込んだ（Ｓ６）後、ホストシステムからのユーザデータをバッファに書き込む（Ｓ５）。【選択図】図６
2011118949.tif 000002
【特許請求の範囲】
【請求項１】
複数個の物理ページを有する少なくとも１チップのフラッシュメモリに対する、ホストシステムによるアクセスを制御するためのメモリコントローラにおいて、
前記フラッシュメモリ内の各物理ページに、論理アドレス空間内のいずれか１個の論理ページを関連付ける関連付け手段と、
１個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファと、
前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信手段と、
前記書き込み要求が受信されたとき、前記書き込み要求により特定された書き込み先の論理セクタが含まれる第１の論理ページを識別し、そして、前記識別された第１の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第２の論理ページとが、一致するか否かを判断する判断手段と、
前記判断手段により前記第１の論理ページと前記第２の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込み、他方、前記判断手段により前記第１の論理ページと前記第２の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、メモリ書き込み制御手段と、
を備え、
前記メモリ書き込み制御手段は、前記判断手段により前記第１の論理ページと前記第２の論理ページとが一致しないと判断され且つ前記第１の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記第１の論理ページに含まれる複数個の論理セクタの中から、前記書き込み要求により特定された書き込み先の論理セクタに該当しないブランク論理セクタを検出し、そして、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第１の論理ページに含まれる前記ブランク論理セクタに対応するユーザデータのみを、前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む、
メモリコントローラ。
【請求項２】
請求項１項記載のメモリコントローラにおいて、
複数チップのフラッシュメモリに並列にアクセスすることができ、そして、前記バッファ内に既存するユーザデータを前記複数チップのフラッシュメモリへ分散して並列に書き込む、
メモリコントローラ。
【請求項３】
請求項１又は２記載のメモリコントローラと、
前記メモリコントローラにより制御される少なくとも１チップのフラッシュメモリと
を備えたフラッシュメモリシステム。
【請求項４】
複数個の物理ページを有する少なくとも１チップのフラッシュメモリに対するホストシステムによるアクセスを、メモリコントローラにより制御するための方法であって、
前記メモリコントローラが、１個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファを備え、
前記方法は、
前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信ステップと、
前記書き込み要求が受信されたとき、前記書き込み要求より特定された書き込み先の論理セクタが含まれる第１の論理ページを識別し、そして、前記識別された第１の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第２の論理ページとが、一致するか否かを判断する判断ステップと、
前記判断ステップにより前記第１の論理ページと前記第２の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第１の書き込みステップと、
前記判断ステップにより前記第１の論理ページと前記第２の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第２の書き込みステップと、
を有し、
前記第１の書き込みステップでは、前記判断ステップにより前記第１の論理ページと前記第２の論理ページとが一致しないと判断され且つ前記第１の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記第１の論理ページに含まれる複数個の論理セクタの中から、前記書き込み要求により特定された書き込み先の論理セクタに該当しないブランク論理セクタを検出し、そして、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第１の論理ページに含まれる前記ブランク論理セクタに対応するユーザデータのみを、前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、フラッシュメモリへのデータ書き込みの制御に関わり、特に、フラッシュメモリへ書き込まれるべきデータのメモリコントローラによるバッファリングの制御に関する。
【背景技術】
【０００２】
大容量の不揮発性の読み書き可能な記憶媒体として、ハードディスクの他に、フラッシュメモリが、近年好んで使用されている。フラッシュメモリを記憶媒体として用いた記憶装置であるフラッシュメモリシステムは、通常、フラッシュメモリそれ自体に加えて、ホストシステム及びフラッシュメモリに対するインタフェース並びに両者間のデータ中継の機能をもつメモリコントローラを備える。メモリコントローラは、ホストシステムとフラッシュメモリの間で転送されるデータ、つまり、フラッシュメモリへの書き込み／フラッシュメモリからの読み出しデータを一時的に記憶するバッファを有する。特許文献１には、２つのバッファがホストシステム側とのデータ転送とフラッシュメモリ側とのデータ転送に交互に用いられるように構成されたモリコントローラが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１７５３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術によれば、メモリコントローラは、ホストシステムから書き込み要求を受信した後、ホストシステムから与えられるユーザデータをバッファに保持し（第1ステップ）、その後、そのユーザデータをバッファからフラッシュメモリに転送する（第２ステップ）、という２ステップの動作を行う。従って、ホストシステムから複数セクタのデータ書き込みが要求された場合、上述した２ステップ動作が、連続的に複数回繰り返し行われることになる。
【０００５】
しかし、このようにホストシステムからの書き込み要求に応答して、上記２ステップ動作を逐次実行するという方法は、必ずしも最適なやり方であるとはいえない。特に、ホストシステムからみた実質的な書き込み速度を高速化するためには、バッファからフラッシュメモリへの無駄なデータ転送を減らすことが望ましい。また、フラッシュメモリの寿命を延ばすためには、フラッシュメモリへの無駄な書き込み回数を減らすことが望ましい。
【０００６】
従って、本発明の目的は、フラッシュメモリシステムにおいて、ホストシステムによるフラッシュメモリへのアクセスに支障を来たさずに、メモリコントローラ内のバッファからフラッシュメモリへのデータ転送動作及びフラッシュメモリへのデータ書込み動作の実行回数を減らすことにある。
【課題を解決するための手段】
【０００７】
本発明の第１の側面に従えば、複数個の物理ページを有する少なくとも１チップのフラッシュメモリに対する、ホストシステムによるアクセスを制御するためのメモリコントローラは、
前記フラッシュメモリ内の各物理ページに、論理アドレス空間内のいずれか１個の論理ページを関連付ける関連付け手段と、
1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファと、
前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信手段と、
前記書き込み要求が受信されたとき、前記書き込み要求により特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断手段と、
前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込み、他方、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、メモリ書き込み制御手段と
を備える。
【０００８】
一つの実施形態に従えば、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
【０００９】
この場合、上記メモリ書き込み制御手段は、次のように構成されてよい。すなわち、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる全ての論理セクタに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
【００１０】
あるいは、上記メモリ書き込み制御手段は、次のように構成されてもよい。すなわち、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記第1の論理ページに含まれる複数個の論理セクタの中から、前記書き込み要求により特定された書き込み先の論理セクタに該当しないブランク論理セクタを検出し、そして、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる前記ブランク論理セクタに対応するユーザデータのみを、前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
【００１１】
他方、別の実施形態に従えば、上記メモリ書き込み制御手段は、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータが有効であることを示す有効情報を記憶する。そして、上記メモリ書き込み制御手段は、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むとき、前記フラッシュメモリ内のメモリセルアレイ内に有る前記第2の論理ページに対応するユーザデータを前記フラッシュメモリ内のレジスタへ読み出し、その後、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータの中から前記有効情報により識別される有効なユーザデータのみを、前記フラッシュメモリ内のレジスタへ書き込み、その後に、前記レジスタ内のユーザデータを前記メモリセルアレイへ書き込む。
【００１２】
本発明に従うメモリコントローラは、前記複数チップのフラッシュメモリに並列にアクセスすることができ、そして、前記バッファ内に既存するユーザデータを前記複数チップのフラッシュメモリへ分散して並列に書き込むように構成されてよい。
【００１３】
本発明の別の側面に従えば、上述したメモリコントローラと、それにより制御される少なくとも１チップのフラッシュメモリとを備えたフラッシュメモリシステムが、提供される。
【００１４】
本発明のまた別の観点に従えば、複数個の物理ページを有する少なくとも１チップのフラッシュメモリに対するホストシステムによるアクセスを、メモリコントローラにより制御するための方法が提供される。この方法を実行するメモリコントローラは、1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファを備える。そして、この方法は、
前記書き込み要求が受信されたとき、前記書き込み要求より特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断ステップと、
前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第1の書き込みステップと、
前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第2の書き込みステップと
を有する。
【発明の効果】
【００１５】
本発明によれば、ホストシステムによるフラッシュメモリへのアクセスに支障を来たさずに、メモリコントローラ内のバッファからフラッシュメモリへのデータ転送動作及びフラッシュメモリへのデータ書込み動作の実行回数が減少する。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態にかかるフラッシュメモリシステムの構成を示すブロック図。
【図２】同実施形態において、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を例示する図。
【図３】同実施形態において、ホストシステム２００から書き込みコマンドを受けたときに、メモリコントローラ１０２のマイクプロセッサ１１２が行う、バッファ１２０への受信ユーザデータの書き込みのやり方と、バッファ１２０内の既存ユーザデータのフラッシュメモリ１０４への書き込みのやり方を示す図。
【図４】２チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ１０２内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す図。
【図５】４チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ１０２内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す図。
【図６】メモリコントローラ１０２のマイクロプロセッサ１１２が行う、ホストシステム２００からコマンドを受信したときの制御の流れを示す図。
【図７】図６の制御によって実現されるバッファへのデータの書き込み動作の具体例を示す図。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施形態について説明する。
【００１８】
図１は、本発明の実施形態にかかるフラッシュメモリシステムの構成を示す。
【００１９】
図１に示されるように、フラッシュメモリシステム１００は、ホストシステム２００からアクセス可能に接続される。フラッシュメモリシステム１００は、メモリコントローラ１０２と、少なくとも１チップのフラッシュメモリ１０４とを備える（図１は１チップの場合を例示するが、後に、複数チップの場合についても説明する。）。メモリコントローラ１０２は、ホストシステム２００からフラッシュメモリ１０４へのアクセスを制御する。
【００２０】
フラッシュメモリ１０４は、大容量で不揮発性のメモリセルアレイ１３４と、レジスタ１３４とを有する。レジスタ１３４は、メモリコントローラ１０２とメモリセルアレイ１３４との間で入出力されるデータを一時的に記憶するためのものである。
【００２１】
この実施形態では、メモリセルアレイ１３４はNAND型である。メモリセルアレイ１３４は、多数の物理ページを有する（図２参照）。ここで、NAND型のメモリセルアレイ１３４においては、各物理ページが、データの書き込み／読み出しの単位（データの書き込み/読み出しの時に一度に入出力され得る記憶領域）である。この実施形態では、レジスタ１３２の記憶容量は、上述した書き込み/読み出しの単位である1個の物理ページ分の記憶容量に等しく設定されている。
【００２２】
図２は、本実施形態において、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を例示している。図２の右側の部分に、メモリセルアレイ１３４内の多数の物理ページ（１個の物理ブロックの部分のみを抜粋）が例示されている。この右側部分に示されるように、各物理ページは、複数個（典型的には２のべき乗数に相当する個数）の物理セクタを有し、本実施形態では例えば８個の物理セクタを有する。物理セクタは１セクタ（５１２バイト）のデータが記憶される領域であり、各物理セクタには１個の付加情報領域が割り当てられている。また、各物理ページは、１個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの1個の論理ページ（図２の左側に示す論理アドレス空間中で、＃０、＃１、＃２、…という各論理ページ番号（ＬＰＮ）が付与された記憶領域）が、メモリコントローラ１０２によって関連づけられ得る。このように各物理ページに１個の論理ページが関係付けられる場合、後に説明するように１個の論理ページに対して複数個の物理ページが関連付けられてもよいが、本実施形態では、１個の論理ページに対して１個の物理ページが関連付けられる（つまり、論理ページと物理ページが１対１の関係で関連付けられる）。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号（ＥＣＣ）は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報（例えば、論理ページ番号（ＬＰＮ））及びその他の管理・制御用の情報が格納される。
【００２３】
再び図１を参照して、フラッシュメモリ１０４内のレジスタ１３２は、上述した１個の物理ページの構成に適合した構成を有する。すなわち、レジスタ１３２は、１個の物理ページ内の８個の物理セクタと８個の付加情報領域にそれぞれ格納されるユーザデータとＥＣＣをそれぞれ保持するための８個のセクタ領域ＳＥＣ１〜ＳＥＣ８と８個のＥＣＣ領域ＥＣ１〜ＥＣ８のセットを有する。すなわち、レジスタ１３２の第１セクタ領域ＳＥＣ１と第１ＥＣＣ領域ＥＣ１は、物理ページ内の第１の物理セクタと第１の付加情報領域に格納されるユーザデータとＥＣＣをそれぞれ保持するためのものであり、第２セクタ領域ＳＥＣ２と第２ＥＣＣ領域ＥＣ２は、物理ページ内の第２の物理セクタと第２の付加情報領域に格納されるユーザデータとＥＣＣコードをそれぞれ保持するためのものであり、以下のセクタ領域ＳＥＣ３〜ＳＥＣ８とＥＣＣ領域ＥＣ３〜ＥＣ８についても同様である。
【００２４】
レジスタ１３２は、さらに、物理ページ内のページ情報領域に格納される情報を保持するための管理情報領域ＭＮＧを有する。
【００２５】
さて、上述したように、ＮＡＮＤ型のフラッシュメモリ１０４では、データの書き込みと読み出しは物理ページを単位として行われる。フラッシュメモリ１０４にデータが書き込まれる場合には、まず、メモリコントローラ１０２からフラッシュメモリ１０４内のレジスタ１３２に、書き込み先の１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が書き込まれ、その後に、レジスタ１３２からメモリセルアレイ１３４内の書き込み先の物理ページにそのデータが書き込まれる。逆に、フラッシュメモリ１０４からデータが読み出される場合には、まず、メモリセル１３２内の読み出し元の物理ページからレジスタ１３２へその１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が読み出され、その後に、レジスタ１３２からメモリコントローラ１０２へそのデータが読み出される。
【００２６】
図１に示すように、メモリコントローラ１０２内には、上記のようにしてフラッシュメモリ１０４へ／からデータを書き込み／読み出す際に、そのデータを一時的に保持するためのバッファ１２０が設けられる。このようにバッファ１２０にデータを一時的に保持することで、ホストシステム２００とフラッシュメモリ１０４の間のデータ転送速度の違いを補償することもできる。
【００２７】
メモリコントローラ１０２内のバッファ１２０は、１個の論理ページ分のユーザデータを保持できる。１個の論理ページは、複数個（典型的には２のべき乗数に相当する個数）の論理セクタを有し、本実施形態では例えば８個の論理セクタを有する。そのため、バッファ１２０は、１個の論理ページを構成する８個の論理セクタにそれぞれ割り当てられ得る８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８を有する。
【００２８】
上述したように、本実施形態では、１個の論理ページ（８個の論理セクタをもつ）に対して１個の物理ページ（８個の物理セクタをもつ）が関連づけられる。そのため、図１に示すように、バッファ１２０内の８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８と、フラッシュメモリ１０４内のレジスタ１３２内の８個のセクタ領域ＳＥＣ１〜ＳＥＣ８とが、１対１に対応する。すなわち、バッファ１２０内の第１サブバッファ領域ＳＢＦ１とレジスタ１３２内の第１セクタ領域ＳＥＣ１とが対応関係にあり、両領域ＳＢＦ１とＳＥＣ１間でユーザデータ（１個の論理／物理セクタ分のユーザデータ）が授受される。また、バッファ１２０内の第２サブバッファ領域ＳＢＦ２とレジスタ１３２内の第２セクタ領域ＳＥＣ２とが対応関係にあり、両領域ＳＢＦ２とＳＥＣ２間でユーザデータ（１個の論理／物理セクタ分のユーザデータ）が授受される。他のサブバッファ領域ＳＢＦ３〜ＳＢＦ８とセクタ領域ＳＥＣ３〜ＳＥＣ８との間の対応関係についても同様である。
【００２９】
メモリコントローラ１０２は、ユーザデータに基づいてＥＣＣを生成するＥＣＣブロック１２２を有する。ＥＣＣブロック１２２には、バッファ１２０内のユーザデータがフラッシュメモリ１０４のレジスタ１３２へ書き込まれる際に、バッファ１２０内の８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８からユーザデータが入力される。ＥＣＣブロック１２２は、８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８から入力されるユーザデータに基づいて、それら８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８のユーザデータのための８個のＥＣＣを生成する。そして、生成された上記８個のＥＣＣは、レジスタ１３２内の８個のＥＣＣ領域ＥＣ１〜ＥＣ８に書き込まれる。尚、レジスタ１３２に対するデータ転送では、第１サブバッファ領域ＳＢＦ１に保持されているユーザデータが第１セクタ領域ＳＥＣ１に転送された後に、第１サブバッファ領域ＳＢＦ１に保持されているユーザデータに基づいて生成されるＥＣＣが第１ＥＣＣ領域ＥＣ１に転送される。続いて、第２サブバッファ領域ＳＢＦ２に保持されているユーザデータが第２セクタ領域ＳＥＣ２に転送された後に、第２サブバッファ領域ＳＢＦ２に保持されているユーザデータに基づいて生成されるＥＣＣが第２ＥＣＣ領域ＥＣ２に転送される。以下同様に、ユーザデータ、そのユーザデータに基づいて生成されるＥＣＣという順番でレジスタ１３２に対するデータ転送が行われる。
【００３０】
また、レジスタ１３２からのデータ読み出しでは、８個のセクタ領域ＳＥＣ１〜ＳＥＣ８から読み出されたユーザデータは、対応関係にある８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８にそれぞれ保持される。この際、ＥＣＣブロック１２２には、レジスタ１３２内の８個のセクタ領域ＳＥＣ１〜ＳＥＣ８から読み出されたユーザデータと８個のＥＣＣ領域ＥＣ１〜ＥＣ８から読み出されたＥＣＣが入力される。ＥＣＣブロック１２２は、８個のセクタ領域ＳＥＣ１〜ＳＥＣ８から読み出されたユーザデータと、８個のＥＣＣ領域ＥＣ１〜ＥＣ８から読み出されたＥＣＣを用いて、８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８に保持されているユーザデータのエラーを検出し、そのエラーを訂正する。
【００３１】
ところで、本発明は、メモリコントローラ１０２がホストシステムから書き込み要求（書き込み先のアドレスを特定する情報と、フラッシュメモリ１０４への書き込みを指示するコマンドを含む書き込み要求）を受信した場合に、どのようにメモリコントローラ１０２内のバッファ１２０を使用するかという点、及び、どのようにバッファ１２０とフラッシュメモリ１０４との間でデータを読み書きするかという点に関連する。そこで、以下では、これらの点に関わるメモリコントローラ１０２の構成と機能に焦点を絞って説明する。
【００３２】
図１に示すように、メモリコントローラ１０２は、上述したバッファ１２０及びＥＣＣブロック１２２の他に、さらに、マイクロプロセッサ１１２、コマンドレジスタ１１４、新ＬＢＡレジスタ１１６、セクタカウントレジスタ１１８、及び前ＬＢＡレジスタ１１９を備える。
【００３３】
マイクロプロセッサ１２２は、メモリコントローラ１０２の全体の機能を実行し制御する。マイクロプロセッサ１２２が行う処理と制御のうち、本発明に関連性の深いものを例示すると、次のとおりである。
【００３４】
マイクロプロセッサ１１２は、ホストシステム２００から書き込みコマンド、読み出しコマンド或いはその他のコマンドを受信する。これらのコマンドは、ホストシステム２００によってメモリコントローラ１０２内のコマンドレジスタ１１４に書き込まれる。コマンドレジスタ１１４に書き込みコマンドが書き込まれる場合には、更に、その書き込み先を示す情報が、新ＬＢＡレジスタ１１６とセクタカウントレジスタ１１８に書き込まれる。
【００３５】
続いて、新ＬＢＡレジスタ１１６とセクタカウントレジスタ１１８に書き込まれた情報に基づいて書き込み先が特定されたユーザデータがホストシステム２００からフラッシュメモリに与えられる。そして、この書き込み先が特定されたユーザデータ（以下、「受信ユーザデータ」という）はバッファ１２０に保持される。書き込みコマンドを受信した場合、マイクロプロセッサ１１２は、さらに、後に詳述するようなやり方で、バッファ１２０からフラッシュメモリ１０４へのデータの書き込み、及び、フラッシュメモリ１０４からバッファ１２０へのデータの読み出しを制御する。さらに、マイクロプロセッサ１２２は、論理アドレス空間上の領域（例えば論理ブロック及び論理ページ）と、物理アドレス空間上の領域（例えば、物理ブロック及び物理ページ）との間の関連付け（対応関係の設定）も行なう。
【００３６】
論理アドレス空間上の領域は、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）によって管理されている。ＬＢＡは、論理アドレス空間上のセクタ単位（５１２バイト単位）の領域（以下、「論理セクタ」という）に付けた番号であり、ホストシステム２００から与えられるユーザデータの書き込み先は、このＬＢＡで特定される。
【００３７】
新ＬＢＡレジスタ１１６には、ホストシステム２００から与えられるユーザデータの先頭データに対応する論理セクタのＬＢＡが書き込まれる。セクタカウントレジスタ１１８には、書き込むユーザデータのセクタ数が書き込まれる。つまり、新ＬＢＡレジスタ１１６に書き込まれたＬＢＡに対応する論理セクタ以降のＬＢＡが連続する１個又は複数個の論理セクタ（セクタカウントレジスタ１１８に書き込まれた数値に対応する個数の論理セクタ）がホストシステム２００から与えられるユーザデータの書き込み先になる。
【００３８】
マイクロプロセッサ１１２は、コマンドレジスタ１１４に書き込みコマンドが書き込まれた際に、新ＬＢＡレジスタ１１６とセクタカウントレジスタ１１８に書き込まれた情報と前ＬＢＡレジスタ１１９に書き込まれている情報に基づいて、バッファ１２０内に既に存在するユーザデータ（以下、「既存ユーザデータ」という）をフラッシュメモリ１０４へ書き込む必要性が有るか否かを判断する。そして、マイクロプロセッサ１１２は、その必要性があると判断すれば、バッファ１２０内に既存する既存ユーザデータをフラッシュメモリ１０４へ書き込み、その後に、受信ユーザデータをバッファ１２０に書き込む。他方、その必要性がないと判断した場合には、マイクロプロセッサ１１２は、バッファ１２０内に既存する既存ユーザデータをフラッシュメモリ１０４へ書き込むことを省略して、受信ユーザデータをバッファ１２０に書き込む。この制御については、後に詳述する。
【００３９】
さて、前ＬＢＡレジスタ１１９は、上述したバッファ１２０内に既存する既存ユーザデータの書き込み先のＬＢＡを記憶するために用いられる。すなわち、新しい書き込みコマンドが受信されると（コマンドレジスタ１１４に書き込みコマンドが書き込まれると）、上述したように、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込む必要性が有るか否かを判断し、既存ユーザデータをフラッシュメモリ１０４へ書き込む必要性が無いと判断した場合には、その判断の後、既存ユーザデータをフラッシュメモリ１０４へ書き込む必要性が有ると判断した場合には、既存ユーザデータをフラッシュメモリ１０４へ書き込んだ後、受信ユーザデータがバッファ１２０に書き込まれる。受信ユーザデータがバッファ１２０に書き込まれると、新ＬＢＡレジスタ１１６に書き込まれた上記ＬＢＡが、前ＬＢＡレジスタ１１９にコピーされる。従って、前ＬＢＡレジスタ１１９に格納されているＬＢＡは、バッファ１２０に最近過去に書き込まれた既存ユーザデータの書き込み先の先頭論理セクタを指し示すことになる。尚、書き込み先の論理ページが２個の論理ページに跨っているときには、論理ページ毎に分割した２つの書き込み要求として処理される。
【００４０】
マイクロプロセッサ１１２は、コマンドレジスタ１１４に書き込みコマンドが書き込まれた際に、新ＬＢＡレジスタ１１６とセクタカウントレジスタ１１８に書き込まれた情報に基づいて、受信ユーザデータの書き込み先の論理セクタと、その論理セクタが含まれる論理ページを特定する。更に、マイクロプロセッサ１１２は、前ＬＢＡレジスタ１１９に書き込まれているＬＢＡに基づいて、バッファ１２０内の既存ユーザデータの書き込み先の論理ページを特定する。そして、プロセッサ１１２は、特定された両方の論理ページを比較する。
【００４１】
その比較の結果、両論理ページが一致してなければ、プロセッサ１１２は、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断する。この場合、プロセッサ１１２は、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込み、その後に、受信ユーザデータをバッファ１２０に書き込む。他方、上記比較の結果、両論理ページが一致していれば、プロセッサ１１２は、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４に書き込む必要性はないと判断する（何故なら、既存ユーザデータは受信ユーザデータによって書き換えられるべきものであるからである）。この場合、プロセッサ１１２は、上述したように、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込まず、受信ユーザデータをバッファ１２０に書き込む。
【００４２】
このように、前に受信した書き込み要求（コマンド及びアドレス情報を含む）により特定された書き込み先の論理ページと、新しく受信した書き込み要求（コマンド及びアドレス情報を含む）により特定された書き込み先の論理ページとが一致した場合には、バッファ１２０内の既存ユーザデータのフラッシュメモリ１０４への書き込みが省略される。この場合とは、換言すれば、同一の論理ページへのデータの書き込みが連続してホストシステム２００から要求された場合である。この場合、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４に保存せずに、バッファ１２０上で受信ユーザデータに書き換えても、ホストシステム２００にとり何の不都合もない。他方、前に受信した書き込み要求（コマンド及びアドレス情報を含む）により特定された書き込み先の論理ページと、新しく受信した書き込み要求（コマンド及びアドレス情報を含む）により特定された書き込み先の論理ページとが一致しない場合、すなわち、前とは別の論理ページへの書き込みが要求された場合には、バッファ１２０内の既存ユーザデータは、有効なデータとしてフラッシュメモリ１０４に保存しておく必要があるため、この場合には、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４に保存する。
【００４３】
ところで、前ＬＢＡレジスタ１１９に書き込まれたＬＢＡは、上述したように、バッファ１２０内の既存ユーザデータの書き込み先の論理ページを識別するために用いられる。ここで、「論理ページ」を識別するときには、ＬＢＡ中の論理ページを特定するビット列部分、例えば、図３，４，５に例示するような、論理ブロック番号（ＬＢＮ）と論理ページ番号（ＬＰＮ）を特定する上位所定数ビット列部分を参照する。従って、「論理ページ」を識別するときには、必ずしもＬＢＡを用いなくてもよく、変形例として、前ＬＢＡレジスタ１１９に代えて、ＬＢＡ中の論理ページを特定するビット列部分だけを登録するレジスタが用いられてもよい。
【００４４】
以下では、新しい書き込み要求を受信したときにメモリコントローラ１０２のマイクロプロセッサ１１２が行なう制御について、より詳細に説明する。この説明に当たり、まず、図２を参照して、本実施形態における、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を説明する。
【００４５】
図２の左側には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたＬＢＡによって識別される。そして、複数個（本実施形態では８個）の論理セクタが集合して、１個の論理ページを構成する。さらに、複数個（本実施形態では６４個）の論理ページが集合して、１個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたＬＢＮ（論理ブロック番号）によって識別される。また、各論理ブロック内では、複数個（例えば６４個）の論理ページが、各論理ページに付与された論理ページ番号（ＬＰＮ）によって識別される。
【００４６】
図２の右側には、メモリセルアレイ１３４内の物理アドレス空間が（１個の物理ブロックの部分のみ抜粋して）示されている。物理アドレス空間では、複数個（本実施形態では６４個）の物理ページが集合して、１個の物理ブロックを構成する。図２では図示省略されているが、メモリセルアレイ１３４内には複数個（論理ブロックの総数より多い）の物理ブロックが存在し、それらの物理ブロックは、各物理ブックに付与された物理ブロックアドレス（ＰＢＡ）により識別される。そして、各物理ブロック内では、複数個（例えば６４個）の物理ページが、各物理ページに付与された物理ページ番号（ＰＰＮ）によって識別される。各物理ページは、既に説明したように、複数個（本実施形態では８個）の物理セクタで構成され、更に、物理セクタに関連付けられた８個の付加情報領域と１個のページ情報領域とを有する。
【００４７】
図２に示されるように、メモリセル１３４内の各物理ブロック（例えば、ＰＢＡ＃０の論理ブロック）に対して、いずれか１個の論理ブロック（例えば、ＬＢＮ＃０の論理ブロック）が、メモリコントローラ１０２のマイクロプロセッサ１１２によって関係付けられる。そして、各物理ブロック６４内の各物理ページ（例えば、ＰＰＮ＃７〜ＰＰＮ＃１２の各物理ページ）に対して、その物理ブロックに関係付けられた論理ブロック中いずれか１個の論理ページ（例えば、ＬＰＮ＃０〜ＬＰＮ＃５の各論理ページ）が、マイクロプロセッサ１１２によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報（例えば、ＬＰＮ）が記述される。
【００４８】
ところで、メモリセル１３４内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム２００からの書き込み要求に応答して、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性が有るか否かを判断し、その結果、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断した場合に、既存ユーザデータの書き込み先として識別されている論理ページに対して１個の物理ページ（どの論理ページとも関連付けられていない物理ページ）が関連付けられ、その物理ページに対するデータ書き込みが行われる。
【００４９】
例えば、図２に示された例は、次のようにして物理ページと論理ページの関連付けが行われた場合の例である。
【００５０】
すなわち、当初、ＰＢＡ＃０の物理ブロック内の全ての物理ページが空きである状態で、バッファ１２０内の既存ユーザデータの書き込み先として識別されている論理ページがＬＰＮ＃０の論理ページで、ホストシステム２００からの書き込み要求により特定された書き込み先の論理ページがＬＰＮ＃０の論理ページである場合、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性は無いと判断される。一方、ホストシステム２００からの書き込み要求により特定された書き込み先の論理ページがＬＰＮ＃１の論理ページである場合、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断され、バッファ１２０内の既存ユーザデータの書き込み先として識別されているＬＰＮ＃０の論理ページがＰＰＮ＃０の物理ページに関連付けられ、ＰＰＮ＃０の物理ページにバッファ１２０内の既存ユーザデータが書き込まれる。このように、バッファ１２０内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断されたときに、バッファ１２０内の既存ユーザデータがフラッシュメモリに書き込まれる。
【００５１】
論理ページに関連付けられた物理ページのページ情報領域には、その物理ページ関連付けられている論理ページのＬＰＮを示す情報が書き込まれる。図２に示された例では、ＰＰＮ＃０の物理ページのページ情報領域にＬＰＮ＃０を示す情報が書き込まれ、ＰＰＮ＃１の物理ページのページ情報領域にＬＰＮ＃１を示す情報が書き込まれ、ＰＰＮ＃２の物理ページのページ情報領域にＬＰＮ＃２を示す情報が書き込まれている。従って、ＬＰＮ＃０の論理ページがＰＰＮ＃０の物理ページに関連付けられ、ＬＰＮ＃１の論理ページがＰＰＮ＃１の物理ページに関連付けられ、ＬＰＮ＃２の論理ページがＰＰＮ＃２の物理ページに関連付けられている。
【００５２】
図２の例では、ＰＰＮ＃１３以降のＰＰＮをもつ物理ページは、まだ空きであり、それらには、まだいずれの論理ページも関連付けられていないが、将来、そこにもデータが書き込まれて、いずれかの論理ページに関連付けられることになる。
【００５３】
図３は、本実施形態において、ホストシステム２００から書き込み要求を受信したときに、メモリコントローラ１０２のマイクプロセッサ１１２が行う、バッファ１２０への受信ユーザデータの書き込みのやり方と、バッファ１２０内の既存ユーザデータのフラッシュメモリ１０４への書き込みのやり方を示す。
【００５４】
図３に示すとともに、既に説明したように、バッファ１２０内には、１個の論理ページ内の複数個（例えば８個）の論理セクタにそれぞれ割り当てられた複数個（例えば８個）のサブバッファ領域ＳＢＦ１〜ＳＢＦ８が存在する。ホストシステム２００から新しい書き要求が受信されると、その受信された書き込み要求によって特定される受信ユーザデータの書き込み先の論理ページと、バッファ１２０内の既存ユーザデータの書き込み先の論理ページとが一致するかどうかが判断される。ここで、前者の論理ページは、図１に示された新ＬＢＡレジスタ１１６内のＬＢＡに基づいて特定することができ、後者の論理ページは、図１に示された前ＬＢＡレジスタ１１９内のＬＢＡに基づいて特定することができる。すなわち、いずれのＬＢＡについても、図３に示すように、そのＬＢＡ内のＬＢＮとＬＰＮに相当する上位所定数ビット列から、書き込み先の論理ページが特定される。このようにして特定された上記前者と後者の論理ページが異なっている場合には、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込む必要があると判断され、他方、上記両論理ページが一致している場合には、その必要がないと判断される。
【００５５】
上記判断結果が、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込む必要がないとの判断であった場合には、バッファ１２０内の既存ユーザデータをフラッシュメモリ１０４へ書き込むことなしに、上記書き込み要求によって書き込み先の論理ページが特定された受信ユーザデータがバッファ１２０に書き込まれる。この受信ユーザデータをバッファ１２０に書き込む動作は次のとおりである。
【００５６】
すなわち、書き込み要求に含まれる（つまり、図１に示された新ＬＢＡレジスタ１１６とセクタカウントレジスタ１１８に書き込まれた）ＬＢＡとセクタカウンタから、受信ユーザデータの書き込み先範囲が、書き込み先の論理ページ内のどの論理セクタであるかが、特定される。すなわち、上記ＬＢＡとセクタカウントから、書き込み先範囲に相当する１個以上の論理セクタのＬＢＡが求められ、そして、図３に示すように、求まった各ＬＢＡ中の下位所定ビット列（本実施形態では下位３ビット列）により、書き込み先範囲内の各論理セクタの論理セクタ番号（ＬＳＮ）が特定される。
【００５７】
続いて、バッファ１２０内の、上記特定された書き込み先範囲に相当する１個以上の論理セクタ（そのＬＳＮ）に割り当てられたサブバッファ領域に、受信ユーザデータが書き込まれる。ここで、各論理セクタと各サブバッファ領域の対応関係は、予め設定されている。例えば、図３の例において、「０１１」〜「１１１」が書き込み先範囲の論理セクタのＬＳＮであったならば、それらのＬＳＮに割り当てられたサブバッファ領域ＳＢＦ４〜ＳＢＦ８に書き込みが行われことになる。
【００５８】
さて、上述した判断結果が、バッファ１２０内のユーザデータをフラッシュメモリ１０４へ書き込む必要があるとの判断であった場合には、上記受信ユーザデータがバッファ１２０に書き込まれる前に、バッファ１２０内の既存ユーザデータがフラッシュメモリ１０４へ書き込まれる。バッファ１２０内の既存ユーザデータがフラッシュメモリ１０４へ書き込む動作は、次のとおりである。
【００５９】
すなわち、図３に示すように、バッファ１２０内のサブバッファ領域ＳＢＦ１〜ＳＢＦ８に保持されている８個の論理セクタ分のユーザデータが読み出されてフラッシュメモリ内のレジスタ１３４に転送されると共に、ＥＣＣブロック１２２に入力される。すると、ＥＣＣブロック１２２から、上記８個の論理セクタ分のユーザデータのための８個のＥＣＣが生成される。ＥＣＣブロック１２２で生成されたＥＣＣもフラッシュメモリ内のレジスタ１３４に転送される。
【００６０】
尚、各論理セクタのＬＳＮとバッファ１２０内のサブバッファ領域ＳＢＦ１〜ＳＢＦ８との対応関係、及びサブバッファ領域ＳＢＦ１〜ＳＢＦ８とレジスタ１３４内のセクタ領域ＳＥＣ１〜ＳＥＣ８との対応関係は予め設定されている。図３に示した例では、ＬＳＮ＃０の論理セクタに対応するデータはサブバッファ領域ＳＢＦ１に保持され、サブバッファ領域ＳＢＦ１に保持されたＬＳＮ＃０の論理セクタに対応するデータは、セクタ領域ＳＥＣ１に書き込まれ、そのＬＳＮ＃０の論理セクタに対応するデータのＥＣＣはＥＣＣ領域ＥＣ１に書き込まれる。ＬＳＮ＃１の論理セクタに対応するデータはサブバッファ領域ＳＢＦ２に保持され、サブバッファ領域ＳＢＦ２に保持されたＬＳＮ＃１の論理セクタに対応するデータは、セクタ領域ＳＥＣ２に書き込まれ、そのＬＳＮ＃１の論理セクタに対応するデータのＥＣＣはＥＣＣ領域ＥＣ２に書き込まれる。以下同様に対応関係が設定されており、ＬＳＮ＃７の論理セクタに対応するデータはサブバッファ領域ＳＢＦ８に保持され、サブバッファ領域ＳＢＦ８に保持されたＬＳＮ＃７の論理セクタに対応するデータは、セクタ領域ＳＥＣ８に書き込まれ、そのＬＳＮ＃７の論理セクタに対応するデータのＥＣＣはＥＣＣ領域ＥＣ８に書き込まれる。
【００６１】
また、バッファ１２０内のユーザデータの書き込み先である論理ページに関連付けられるべきフラッシュメモリ１０４内の物理ページ（つまり、バッファ１２０内のユーザデータの書き込み先に該当する物理ページ）が決定される。また、図示省略してあるが、その書き込み先の物理ページのページ情報領域に書き込まれるべき、上記書き込み先論理ページのＬＰＮを示す情報などが生成され、フラッシュメモリ内のレジスタ１３４に転送される。
【００６２】
そして、上述したサブバッファ領域ＳＢＦ１〜ＳＢＦ８から読み出された８個の論理セクタ分のユーザデータと、ＥＣＣブロック１２２から出力された８個のＥＣＣと、上記生成された管理・制御用データは、これらのデータをフラッシュメモリ１０４内のレジスタ１３４に書き込むことを指示する命令（上述の書き込み先の物理ページを指示する情報も含む）がメモリコントローラ１０２からフラッシュメモリ１０４に与えられた後にフラッシュメモリ１０４に転送される。これにより、上述したサブバッファ領域ＳＢＦ１〜ＳＢＦ８から読み出された８個の論理セクタ分のユーザデータと、ＥＣＣブロック１２２から出力された８個のＥＣＣと、上記生成されたページ情報領域用の情報とが、フラッシュメモリ１０４内のレジスタ１３２内の対応するセクタ領域ＳＥＣ１〜ＳＥＣ８とＥＣＣ領域ＥＣ１〜ＥＣ８と管理情報領域ＭＮＧにそれぞれ書き込まれる。その後、図示省略してあるが、レジスタ１３４に書き込まれたデータを、上述の書き込み先の物理ページへ書き込むことを命じる書き込み命令が、メモリコントローラ１０２からフラッシュメモリ１０４に与えられ、レジスタ１３２内の全てのデータが、メモリセル１３４内の上記書き込み先の物理ページに書き込まれる。
【００６３】
上記のようにして、バッファ１２０内の既存ユーザデータがフラッシュメモリ１０４のレジスタ１３２へ書き込まれた後に、上記新しく受信された書き込み要求により書き込み先が特定される受信ユーザデータが、上述したやり方で、バッファ１２０内の書き込み先範囲の論理セクタに割り当てられたサブバッファ領域ＳＢＦ１〜ＳＢＦ８に、書き込まれる。
【００６４】
ところで、上述した本実施形態では、図１に示すように、１チップのフラッシュメモリ１０４が、１個のメモリコントローラ１０２により制御される。しかし、変形例として、複数チップ（典型的には、２のべき乗数に相当するチップ数）のフラッシュメモリが、１個のメモリコントローラ１０２により制御されてもよい。図４と図５は、そのような場合を示している。
【００６５】
図４は、１個のメモリコントローラ１０２が２チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ１０２内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す。
【００６６】
図４に示すように、メモリコントローラ１０２内には、２チップのフラッシュメモリ（図示省略）にそれぞれ割り当てられた２つのバッファ１２００、１２０１が存在する。バッファ１２００、１２０１の各々は、それに割り当てられたフラッシュメモリチップに付与されたチップ番号（ＣＰＮ）によって識別される。この場合、ＣＰＮは、ＣＰＮ＃０とＣＰＮ＃１の２つであり、図４に示すように、ＬＳＮの下位１ビット、つまりＬＢＡの下位１ビットによって特定され得る。
【００６７】
各チップのフラッシュメモリの構成は、図１及び図２に示された前述の実施形態のフラッシュメモリ１０４の構成と同様である。バッファ１２００、１２０１の各々の構成は、図１と図３に示された前述の実施形態のバッファ１２０の構成と同様である。従って、バッファ１２００、１２０１の各々は、例えば８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８を有し、各バッファの記憶容量は、１チップのフラッシュメモリ内の１個の物理ページ分のユーザデータを記憶できる容量（本実施形態では、８セクタ分のユーザデータを記憶できる容量）である。
【００６８】
他方、この変形例で使用される論理アドレス空間では、１個の論理ページを構成する論理セクタの個数が例えば１６個であり、これは２個の物理ページ内の合計の物理セクタ数に相当する。それら１６個の論理セクタのそれぞれのＬＳＮは、図４に示すように、ＬＢＡ中の下位４ビット列により特定される。２つのバッファ１２００、１２０１が連合して、１個の論理ページ分のユーザデータを記憶することができる。バッファ１２００内の８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８と、バッファ１２０１内の８個のサブバッファ領域ＳＢＦ１〜ＳＢＦ８が、１個の論理ページ内の１６個の論理セクタにそれぞれ割り当てられる。
【００６９】
望ましくは、２チップのフラッシュメモリの双方に対して、メモリコントローラ１０２が並行にアクセスできるようになっている。すなわち、望ましくは、２チップのフラッシュメモリの双方へ／から同時に、データを書き込み／読み出すことができるようになっている。そして、望ましくは、一方のバッファ１２００内のサブバッファ領域ＳＢＦ１〜ＳＢＦ８と、他方のバッファ１２０１内のサブバッファ領域ＳＢＦ１〜ＳＢＦ８とが、１個の論理ページ内のＬＳＮの連続する１６個の論理セクタに対して、交互に割り当てられる。
【００７０】
例えば、図４に例示するように、ＬＳＮが「００００」の１番目の論理セクタに、第１のバッファ１２００内の第１サブバッファ領域ＳＢＦ１が割り当てられ、ＬＳＮが「０００１」の２番目の論理セクタに、第２のバッファ１２０１内の第１サブバッファ領域ＳＢＦ１が割り当てられ、ＬＳＮが「００１０」の２番目の論理セクタに、第１のバッファ１２００内の第２サブバッファ領域ＳＢＦ２が割り当てられ、ＬＳＮが「００１１」の４番目の論理セクタに、第２のバッファ１２０１内の第２サブバッファ領域ＳＢＦ２が割り当てられ、以下同様である。
【００７１】
このような交互の割り当てが設定されていると、２つのバッファ１２００、１２０１内のＬＳＮの連続する複数個の論理セクタ分のユーザデータを２チップのフラッシュメモリへ書き込むとき、一方のバッファ１２００から一方のチップのフラッシュメモリへの書き込みと、他方のバッファ１２０１から他方のチップのフラッシュメモリへの書き込みとが、同時並行的に行えるので、高速書き込みが可能である。また、ＬＳＮの連続する複数個の論理セクタ分のユーザデータを２チップのフラッシュメモリから読み出す時も、同様に、高速読み出しが可能である。但し、本発明を実施するときに、１個の論理ページ内のＬＳＮの連続する１６個の論理セクタを、必ずしも２つのバッファ１２００、１２０１に交互に割り当てなくてもよく、例えば、ＣＰＮをＬＳＮの上位１ビットで特定するようにしてもよい。
【００７２】
図４に示したバッファ構成の下で、メモリコントローラ１０２のマイクロプロセッサ１１２は、２チップのフラッシュメモリの各々から１個ずつ選んだ２個の物理ぺージを組み合わせて、１個の仮想物理ページを定義する。このようにして、２チップのフラッシュメモリ内に、複数個の仮想物理ページが定義される。マイクロプロセッサ１１２は、ホストシステム２００から書き込み要求を受信すると、前述の実施形態の場合と同様に、新ＬＢＡレジスタ１１６に書き込まれたＬＢＡ中のＬＢＮとＬＰＮの部分と、前ＬＢＡレジスタ１１９に書き込まれたＬＢＡ中のＬＢＮとＬＰＮの部分とから、２つのバッファ１２００、１２０１内の既存ユーザデータを２チップのフラッシュメモリへ書き込む必要があるかどうかを判断する。
【００７３】
その結果、書き込む必要があると判断すれば、マイクロプロセッサ１１２は、上記既存ユーザデータの書き込み先に該当する仮想物理ページを決定し、そして、上記既存ユーザデータが上記仮想物理ページに書き込まれるように、第１のバッファ１２００内のユーザデータを第１のチップ（ＣＰＮ＃０）のフラッシュメモリへ書き込み、第２のバッファ１２０１内のユーザデータを第２のチップ（ＣＰＮ＃１）のフラッシュメモリへ書き込む。その後に、受信した書き要求により書き込み先が特定された受信ユーザデータを、２つのバッファ１２００、１２０１内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
【００７４】
他方、上記判断の結果、書き込む必要がないと判断すれば、マイクロプロセッサ１１２は、２個のバッファ１２００、１２０１内の既存ユーザデータを２チップのフラッシュメモリへ書き込む動作を省略し、そして、受信した書き込み要求により書き込み先が特定された受信ユーザデータを、２個のバッファ１２００、１２０１内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
【００７５】
図５は、１個のメモリコントローラ１０２が４チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ１０２内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す。
【００７６】
図５の変形例の図４の変形例との主たる違いは、フラッシュメモリのチップ数が４個になったことに伴い、メモリコントローラ１０２内のバッファの個数も４個になっている点である。これら４個のバッファ１２００〜１２０３の各々は、それに割り当てられたフラッシュメモリのＣＰＮ（ＣＰＮ＃０〜ＣＰＮ＃４）によって識別され、ＣＰＮは、ＬＢＡの下位２ビット列で特定される。これら４個のバッファ１２００〜１２０３の各々は、それに割り当てられたフラッシュメモリ内の１個の物理ページ分のユーザデータを格納できる。
【００７７】
この変形例で使用される論理アドレス空間では、１個の論理ページが３２個の論理セクタから構成され、これは、４個の物理ページの物理セクタの合計個数に相当する。４個のバッファ１２００〜１２０３が連合して、１個の論理ページ分のユーザデータを格納することができる。
【００７８】
望ましくは、４チップのフラッシュメモリ（図示省略）の全部に、メモリコントローラ１０２が並行してアクセスできるようになっている。そして、望ましくは、図５に例示するように、１個の論理ページ内のＬＳＮ（ＬＢＡの下位５ビット列）が連続する３２個の論理セクタに、異なるバッファ１２００〜１２０３内のサブバッファ領域が順次に割り当てられる。例えば、ＬＳＮが「０００００」の１番目の論理セクタに、第１のバッファ１２００内の第１サブバッファ領域ＳＢＦ１が割り当てられ、ＬＳＮが「００００１」の２番目の論理セクタに、第２のバッファ１２０１内の第１サブバッファ領域ＳＢＦ１が割り当てられ、ＬＳＮが「０００１０」の３番目の論理セクタに、第３のバッファ１２０２内の第１サブバッファ領域ＳＢＦ１が割り当てられ、ＬＳＮが「０００１１」の４番目の論理セクタに、第４のバッファ１２０３内の第１サブバッファ領域ＳＢＦ１が割り当てられ、以下同様である。尚、１個の論理ページ内のＬＳＮの連続する３２個の論理セクタを、必ずしも４個のバッファ１２００〜１２０３に図５に示したように割り当てなくてもよく、例えば、ＣＰＮをＬＳＮの上位２ビットで特定するようにしてもよい。
【００７９】
図５に示したバッファ構成の下で、メモリコントローラ１０２のマイクロプロセッサ１１２は、４チップのフラッシュメモリの各々から１個ずつ選んだ４個の物理ぺージを組み合わせて、１個の仮想物理ページを定義する。このようにして、４チップのフラッシュメモリ内に、複数個の仮想物理ページが定義される。マイクロプロセッサ１１２は、ホストシステム２００から書き込み要求を受信すると、既に説明したのと同様に方法で、４つのバッファ１２００〜１２０３内の既存ユーザデータを４チップのフラッシュメモリへ書き込む必要があるかどうかを判断する。
【００８０】
その結果、書き込む必要があると判断すれば、マイクロプロセッサ１１２は、上記既存ユーザデータの書き込み先に該当する仮想物理ページを決定し、そして、上記既存ユーザデータが上記仮想物理ページに書き込まれるように、４個のバッファ１２００〜１２０３内のユーザデータを、４チップのフラッシュメモリへそれぞれ書き込む。その後に、受信した書き要求により書き込み先が特定された受信ユーザデータを、４個のバッファ１２００〜１２０３内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
【００８１】
他方、上記判断の結果、書き込む必要がないと判断すれば、マイクロプロセッサ１１２は、４個のバッファ１２００〜１２０３内の既存ユーザデータを４チップのフラッシュメモリへ書き込む動作を省略し、そして、受信した書き要求により書き込み先が特定された受信ユーザデータを、４個のバッファ１２００〜１２０３内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
【００８２】
図６は、メモリコントローラ１０２のマイクロプロセッサ１１２が行う、ホストシステム２００から要求を受信したときの制御の流れを示す。
【００８３】
図６に示すように、ステップＳ１で、ホストシステム２００からコマンドが受信されたか否かがチェックされる。コマンドが受信されたなら（ステップＳ１でYes）、ステップＳ２で、受信されたコマンドがフラッシュキャッシュコマンド（バッファ内のユーザデータをフラッシュメモリへ書き込むことを要求するコマンド）であるかがチェックされる。受信されたコマンドがフラッシュキャッシュコマンドでなければ（ステップＳ２でNo）、ステップＳ３で、受信されたコマンドが書き込みコマンドであるかがチェックされる。
【００８４】
受信されたコマンドが書き込みコマンドである場合（ステップＳ３でYes）、ステップＳ４で、受信ユーザデータの書き込み先と、バッファ内の既存ユーザデータの書き込み先とが、論理ページ（ＬＢＡ中のＬＢＮとＬＰＮ）において一致するか否かがチェックされる。両ユーザデータの書き込み先の論理ページが一致する場合（ステップＳ４でYes）には、バッファ内の既存ユーザデータをフラッシュメモリに書き込む必要性がないことを意味する。その場合、バッファからフラッシュメモリへの書き込みは行われずに、ステップＳ５で、受信ユーザデータが、その書き込み先である１個以上の論理セクタにそれぞれ割り当てられたバッファ１２０内の１個以上のサブバッファ領域に書き込まれる。
【００８５】
他方、ステップＳ４において、両ユーザデータの書き込み先の論理ページが一致しない場合（ステップＳ４でNo）には、バッファ内の既存ユーザデータをフラッシュメモリに書き込む必要性があることを意味する。その場合、ステップＳ６で、バッファ内の全てのサブバッファ領域の既存ユーザデータがフラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ＥＣＣや管理・制御用データもフラッシュメモリに書き込まれる。
【００８６】
ステップＳ４でNoの場合、さらに、ステップＳ７で、受信ユーザデータの書き込み先の論理ページに対応するユーザデータがフラッシュメモリ内に存在するか否か（すなわち、フラッシュメモリ内に、受信ユーザデータの書き込み先の論理ページに関連付けられた物理ページが存在するか否か）がチェックされる。このチェックの結果、受信ユーザデータの書き込み先の論理ページに対応するユーザデータがフラッシュメモリ内に存在しない（ステップＳ７でNo）場合、制御は、上述したステップＳ６の後に、既に説明したステップＳ５へ進む。他方、受信ユーザデータの書き込み先の論理ページに対応するデータがフラッシュメモリ内に存在する（ステップＳ７でYes）場合には、制御は、ステップＳ６の後に、ステップＳ８へ進む。
【００８７】
ステップＳ８では、受信ユーザデータの書き込み先の論理ページに対応するフラッシュメモリ内のユーザデータが（すなわち、受信ユーザデータの書き込み先の論理ページに関連付けられたフラッシュメモリ内の物理ページに格納されているユーザデータが）、メモリコントローラ１０２へ読み出され、バッファ１２０に保持される。このとき、そのユーザデータとともに、そのユーザデータのＥＣＣも、フラッシュメモリからメモリコントローラ１０２へ読み出される。そして、その読み出されたユーザデータとＥＣＣを用いて、メモリコントローラ１０２内のＥＣＣブロック１２２が、読み出されたユーザデータのエラーをチェックし、エラーがあれば、バッファ１２０に保持されているユーザデータのエラーを修正する。
【００８８】
ステップＳ８の後に、制御はステップＳ５へ進んで、受信ユーザデータが、その書き込み先範囲の論理セクタに割り当てられたバッファ内のサブバッファ領域に書き込まれる。ステップＳ５の前にステップＳ８が行われているので、バッファ内では、書き込み先範囲の論理セクタに割り当たられたサブバッファ領域だけでなく、ブランク論理セクタに割り当てられたサブバッファ領域にも、然るべきユーザデータが保持される。
【００８９】
ステップＳ５の後、制御はステップＳ１へ戻る。
【００９０】
ステップＳ３で、受信されたコマンドが書き込みコマンド以外のもの（例えば、読み出しコマンドなど）であった場合（ステップＳ３でNo）、ステップＳ１０で、バッファ内の全てのサブバッファ領域の既存ユーザデータが、フラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ＥＣＣや管理・制御用データもフラッシュメモリに書き込まれる。その後、ステップＳ１１で、受信されたコマンドにより要求された処理（例えば、データ読み出し）が行われる。その後、制御はステップＳ１へ戻る。
【００９１】
また、ステップＳ２で、受信されたコマンドがフラッシュキャッシュコマンド（バッファ内のユーザデータをフラッシュメモリへ書き込むことを要求するコマンド）であった場合（ステップＳ２でYes）、ステップＳ９で、バッファ内の全てのサブバッファ領域に既存するユーザデータが、フラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ＥＣＣや管理・制御用データもフラッシュメモリに書き込まれる。その後、制御はステップＳ１へ戻る。
【００９２】
ところで、図６の制御流れ中のステップＳ８の動作は、次の２通りのやり方のいずれか一方で行うことができる。その１つ目のやり方は、受信ユーザデータの書き込み先の論理ページ中の「全ての論理セクタ」に対応するフラッシュメモリ内のユーザデータを、バッファ１２０の「全てのサブバッファ領域」へ読み出すやり方である。
【００９３】
ステップＳ８の２つ目のやり方は、受信ユーザデータの書き込み先の論理ページ中から、受信ユーザデータの書き込み先として特定されてない論理セクタ（以下、「ブランク論理セクタ」という）を検出し、そして、検出された「ブランク論理セクタ」に対応するフラッシュメモリ内のユーザデータだけを選択的に、バッファ１２０の「ブランク論理セクタに割り当てられたサブバッファ領域」に読み出すやり方である。例えば、図２を参照して、受信された書き込み要求により特定された論理ページがＬＰＮ＃０であり、そして、同書き込み要求により特定された書き込み先の論理セクタがＬＳＮ＃１〜ＬＳＮ＃６だけである場合を想定すると、ブランク論理セクタはＬＳＮ＃０とＬＳＮ＃７の論理セクタである。この例の場合、上記２つ目の方法によれば、ＬＰＮ＃０の論理ページ中のブランク論理セクタであるＬＳＮ＃０とＬＳＮ＃７の論理セクタに対応するユーザデータだけが選択的に、ＬＳＮ＃０とＬＳＮ＃７の論理セクタに割り当てられたバッファ１２０内のサブバッファ領域へ読み出されることになる。これに対し、上記１つ目の方法によれば、フラッシュメモリ内のＬＰＮ＃０の論理ページ内の全ての論理セクタ（ＬＳＮ＃０〜ＬＳＮ＃７の論理セクタ）に対応するユーザデータが、バッファ１２０内の全てのサブバッファ領域へ読み出されることになる。このような２通りのやり方のうち、いずれを採用することも可能である。
【００９４】
また、図６の制御流れの変形例として、ステップＳ８の動作に代替して、フラッシュメモリに対するコピーバックコマンドを使った次のような動作を採用することもできる。すなわち、メモリコントローラ１０２は、新しく受信された書き込み要求により書き込み先が特定される受信ユーザデータをバッファ１２０内のサブバッファ領域に書き込む度に、そのサブバッファ領域に書き込まれた受信ユーザデータがバッファ１２０内で有効であることを示す有効情報を記憶し、以後、バッファ１２０内の既存ユーザデータがフラッシュメモリへ書き込まれるまで、その有効情報を保持する。その後、バッファ１２０内の既存ユーザデータをフラッシュメモリへ書き込む必要が生じたとき、メモリコントローラ１０２は、まず、コピーバック読み出しコマンドをフラッシュメモリ１０４に与えて、バッファ１２０内の既存ユーザデータの書き込み先の論理ページに対応するフラッシュメモリ１０４のメモリセルアレイ１３４内のユーザデータを全て、フラッシュメモリのレジスタへ読み出す。続いて、メモリコントローラ１０２は、バッファ１２０内の各サブバッファ領域に保持されている既存ユーザデータ中、記憶されている有効情報により有効であると示されている各サブバッファ領域に保持されている既存ユーザデータ（換言すれば、バッファ１２０からフラッシュメモリ１０４へのデータ書き込み動作が最後に行われた時から現在までの間に、受信された書き込み要求よりバッファ１２０に書き込まれた有効なユーザデータ）のみを、コピーバック読み出しコマンドにより、フラッシュメモリ１０４内のレジスタ１３２へ書き込む。この時、バッファ１２０内の既存ユーザデータ中、有効情報により有効であるとは示されていないサブバッファ領域のデータ（換言すれば、バッファ１２０からフラッシュメモリへのデータ書き込み動作が最後に行われた時より現在までの間に、受信された書き込み要求より受信ユーザデータが書き込まれていないサブバッファ領域のデータ）は、フラッシュメモリ１０４内のレジスタ１３２へ書き込まれない。続いて、フラッシュメモリ１０４内のレジスタ１０４のユーザデータはフラッシュメモリ１０４内のメモリセルアレイ１３４に書き込まれる。このようなコピーバック読み出しコマンドを使った代替動作によって、上述したステップＳ８と同様の効果が得られる。
【００９５】
図７は、上述した図６の制御によって実現されるバッファ１２０への受信ユーザデータの書き込み動作の具体例を示す。ここでは、図６のステップＳ８の動作は、上述した１つ目のやり方で行われるものとする。
【００９６】
図７に示された具体例では、説明上の例示として、１個の論理ページ（ＬＢＮ＃０，ＬＰＮ＃０の論理ページ）に着目し、その論理ページ（ＬＢＮ＃０，ＬＰＮ＃０の論理ページ）は、３２個の論理セクタ（ＬＢＡ＃０〜ＬＢＡ＃３１に対応するＬＰＮ＃０の論理ページ内のＬＳＮ＃０〜ＬＳＮ＃３１の論理セクタ）より構成されるものとする。
【００９７】
ここで、着目しているＬＰＮ＃０の論理ページとは異なる論理ページへのアクセスが最後に行われた後に、逐次に４個の書き込み要求が受信され、それら４個の書き込み要求は、図７の上部に示されているようなＬＢＡ（先頭のＬＢＡ）とセクタカウント（受信ユーザデータのセクタ数）のセットをそれぞれ指定している、という場合を想定する。
【００９８】
この場合、１番目の書き込み要求が受信されると、まず、バッファ内の既存ユーザデータが、フラッシュメモリ１０４に書き込まれる（この動作は、図７には図示されていない）。１番目の書き込み要求により特定される書き込み先は、ＬＰＮ＃０の論理ページ内のＬＳＮ＃４〜ＬＳＮ＃２７（ＬＢＡ＃４〜ＬＢＡ＃２７）の論理セクタである。同じＬＰＮ＃０の論理ページ内の他の論理セクタ（ＬＳＮ＃０〜ＬＳＮ＃３に対応するＬＢＡ＃０〜ＬＢＡ＃３の論理セクタ及びＬＳＮ＃２８〜ＬＳＮ＃３１に対応するＬＢＡ＃２８〜ＬＢＡ＃３１の論理セクタ）は、上述したブランク論理セクタに該当することになる。
【００９９】
続いて、１番目の書き込みコマンドにより特定された論理ページＬＰＮ＃０の全ての論理セクタ（ＬＳＮ＃０〜ＬＳＮ＃３１に対応するＬＢＡ＃０〜ＬＢＡ＃３１の論理セクタ）に対応するフラッシュメモリ内のユーザデータが、バッファ内の全てのサブバッファ領域へ読み出される。続いて、１番目の書き込み要求により書き込み先が特定された受信ユーザデータが、その書き込み先の論理セクタ（ＬＳＮ＃４〜ＬＳＮ＃２７に対応するＬＢＡ＃４〜ＬＢＡ＃２７の論理セクタ）に割り当てられたバッファ１２０内のサブバッファ領域に書き込まれる。その結果、バッファ内に存在する論理ページＬＰＮ＃０のユーザデータは、書き込み要求により書き込み先が特定された論理セクタ（ＬＳＮ＃４〜ＬＳＮ＃２７に対応するＬＢＡ＃４〜ＬＢＡ＃２７の論理セクタ）に保持されているユーザデータと、フラッシュメモリから読み出されたブランク論理セクタ（ＬＳＮ＃０〜ＬＳＮ＃３に対応するＬＢＡ＃０〜ＬＢＡ＃３の論理セクタ及びＬＳＮ＃２８〜ＬＳＮ＃３１に対応するＬＢＡ＃２８〜ＬＢＡ＃３１の論理セクタ）に保持されているユーザデータとから、構成されることになる。
【０１００】
その後に、２番目の書き込みコマンドが受信される。この２番目の書き込みコマンドにより特定される書き込み先は、ＬＢＮ＃０，ＬＰＮ＃０の論理ページ内のＬＳＮ＃０〜ＬＳＮ＃１５（ＬＢＡ＃０〜ＬＢＡ＃１５）の論理セクタであり、その論理ページ（ＬＢＮ＃０，ＬＰＮ＃０の論理ページ）は、バッファ内の既存ユーザデータの論理ページ（最初の書き込み要求により特定された論理ページであるＬＢＮ＃０，ＬＰＮ＃０の論理ページ）と一致する。従って、バッファからフラッシュメモリへのデータ書き込みは省略され、単に、２番目の書き込み要求により特定された論理セクタ（ＬＳＮ＃０〜ＬＳＮ＃１５に対応するＬＢＡ＃０〜ＬＢＡ＃１５の論理セクタ）のユーザデータが、バッファ１２０内の対応するサブバッファ領域に書き込まれる。
【０１０１】
その後に、３番目の書き込みコマンドが受信される。この３番目の書き込みコマンドにより特定される書き込み先は、ＬＢＮ＃０，ＬＰＮ＃０の論理ページ内のＬＳＮ＃１６〜ＬＳＮ＃３１（ＬＢＡ＃１６〜ＬＢＡ＃３１）の論理セクタであり、その論理ページ（ＬＢＮ＃０，ＬＰＮ＃０の論理ページ）は、バッファ内の既存ユーザデータの論理ページ（１番目と２番目の書き込み要求により特定された論理ページであるＬＢＮ＃０，ＬＰＮ＃０の論理ページ）と一致する。従って、バッファからフラッシュメモリへのデータ書き込みは省略され、単に、３番目の書き込み要求により特定された論理セクタ（ＬＳＮ＃１６〜ＬＳＮ＃３１に対応するＬＢＡ＃１６〜ＬＢＡ＃３１の論理セクタ）のユーザデータが、バッファ１２０内の対応するサブバッファ領域に書き込まれる。
【０１０２】
その後に、４番目の書き込み要求が受信される。この４番目の書き込み要求により特定される書き込み先は、ＬＢＮ＃０，ＬＰＮ＃１の論理ページ内のＬＳＮ＃０〜ＬＳＮ＃１５（ＬＢＡ＃３２〜ＬＢＡ＃４７）の論理セクタであり、その論理ページ（ＬＢＮ＃０，ＬＰＮ＃１の論理ページ）は、バッファ１２０内の既存ユーザデータの論理ページ（１番目〜３番目の書き込みコマンドにより特定される論理ページであるＬＢＮ＃０，ＬＰＮ＃０の論理ページ）と一致しない。従って、まず、バッファ内の既存ユーザデータが、フラッシュメモリに書き込まれる。その後に、図７には示されてないが、４番目の書き込み要求により特定された論理ページ（ＬＢＮ＃０，ＬＰＮ＃１の論理ページ）の全ての論理セクタに対応するフラッシュメモリ内のユーザデータが、バッファの全てのサブバッファ領域へ書き込まれ、その後に、４番目の書き込み要求により特定されたＬＢＮ＃０，ＬＰＮ＃１の論理ページ内のＬＳＮ＃０〜ＬＳＮ＃１５（ＬＢＡ＃３２〜ＬＢＡ＃４７）の論理セクタの受信ユーザデータが、バッファへ書き込まれる。
【０１０３】
以上説明した本発明の実施形態及び変形例によれば、ホストシステムから同じ論理ページへのデータ書き込みが連続して要求された場合には、メモリコントローラ内のバッファに保持されている同じ論理ページ内の既存ユーザデータをフラッシュメモリへ書き込む動作が、自動的に省略される。これにより、ホストシステムにとっての実質的なデータ書き込み速度の向上や、フラッシュメモリのアクセス回数の減少によるフラッシュメモリの寿命の改善などの利点が期待できる。
【０１０４】
以上説明した本発明の実施形態とその変形例は、本発明の説明のための例示に過ぎず、本発明の範囲をこれらに限定する趣旨ではない。本発明は、その要旨を逸脱することなしに、上述した実施形態とその変形例以外の種々の態様でも実施することができる。例えば、論理アドレス空間と物理アドレス空間との間の関連付け（対応関係の設定）のやり方には、上述の説明で例示したやり方以外の種々のやり方が採用でき、いずれのやり方が採用された場合にも、本発明は適用可能である。
【符号の説明】
【０１０５】
２００  ホストシステム
１００  フラッシュメモリシステム
１０２  メモリコントローラ
１０４  フラッシュメモリ
１１２  マイクロプロセッサ
１１４  コマンドレジスタ
１１６  新ＬＢＡレジスタ
１１８  セクタカウントレジスタ
１１９  前ＬＢＡレジスタ
１２０  バッファ
１２２  ＥＣＣブロック
１３２  レジスタ
１３２  メモリセルアレイ
ＳＢＦ１〜ＳＢＦ８  サブバッファ領域
ＳＥＣ１〜ＳＥＣ８  セクタ領域
ＥＣ１〜ＥＣ８  ＥＣＣ領域
ＭＮＧ  管理情報領域
【図１】
2011118949.tif 000003
【図２】
2011118949.tif 000004
【図３】
2011118949.tif 000005
【図４】
2011118949.tif 000006
【図５】
2011118949.tif 000007
【図６】
2011118949.tif 000008
【図７】
2011118949.tif 000009