(57)【要約】【課題】実質的な記憶容量の低下が抑制されつつ効率的にデータ更新が行われるようにするメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供する。【解決手段】論理ブロックに割り当てられている物理ブロックを対象に、論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になる優先順位の管理が行われ、論理ブロックに有効なデータが格納されていない物理ブロックが新たに割り当てられるときに、その物理ブロック（新ブロック）と同一の論理ブロックに既に割り当てられている物理ブロック（旧ブロック）の前記優先順位における順位が、所定順位より上位であるか否かが判断される。そして、否定的な判断がなされた場合は、旧ブロックから新ブロックへのデータ転送が行われる。【選択図】図７
2010191782.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理手段と、
前記論理ブロックに割り当てられている物理ブロックを対象に、前記論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になるように優先順位を管理する第２のブロック管理手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１のブロック管理手段により前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている物理ブロックである旧ブロックを特定する旧ブロック特定手段と、
前記第１のブロック管理手段が前記論理ブロックに前記空きブロックを割り当てるときに、前記旧ブロック特定手段により特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断手段と、
前記判断手段が否定的な判断をしたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理手段により割り当てられる前記空きブロックに転送するデータ転送手段とを備え、
前記データ転送手段によりデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理手段により前記空きブロックとして管理される
メモリコントローラ。
【請求項２】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理手段と、
前記論理ブロックに割り当てられている前記仮想ブロックを対象に、前記論理ブロックに割り当てられた順序が後の前記仮想ブロックの方が上位になるように優先順位を管理する第２のブロック管理手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１のブロック管理手段により前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている前記仮想ブロックである旧ブロックを特定する旧ブロック特定手段と、
前記第１のブロック管理手段が前記論理ブロックに前記空きブロックを割り当てるときに、前記旧ブロック特定手段により特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断手段と、
前記判断手段が否定的な判断をしたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている論理ブロックと同一の前記論理ブロックに前記第１のブロック管理手段により割り当てられる前記空きブロックに転送するデータ転送手段とを備え、
前記データ転送手段によりデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理手段により前記空きブロックとして管理される
メモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリを備えるフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理ステップと、
前記論理ブロックに割り当てられている物理ブロックを対象に、前記論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になるように優先順位を管理する第２のブロック管理ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている物理ブロックである旧ブロックを特定する旧ブロック特定ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに前記空きブロックが割り当てられるときに、前記旧ブロック特定ステップにより特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断ステップと、
前記判断ステップにより否定的な判断がなされたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理ステップにより割り当てられる前記空きブロックに転送するデータ転送ステップとを備え、
前記データ転送ステップにおいてデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理ステップにより前記空きブロックとして管理される
フラッシュメモリの制御方法。
【請求項５】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理ステップと、
前記論理ブロックに割り当てられている前記仮想ブロックを対象に、前記論理ブロックに割り当てられた順序が後の前記仮想ブロックの方が上位になるように優先順位を管理する第２のブロック管理ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている前記仮想ブロックである旧ブロックを特定する旧ブロック特定ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに前記空きブロックが割り当てられるときに、前記旧ブロック特定ステップにより特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断ステップと、
前記判断ステップにより否定的な判断がなされたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理ステップにより割り当てられる前記空きブロックに転送するデータ転送ステップとを備え、
前記データ転送ステップにおいてデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理ステップにより前記空きブロックとして管理される
フラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
例えば、特許文献１又は特許文献２に記載されているように、物理ブロック単位で記憶データの消去が行われるＮＡＮＤ型フラッシュメモリを記憶媒体として用いた記憶装置では、フラッシュメモリに記憶されているデータが更新されるときに、更新後のデータ（新データ）は更新前のデータ（旧データ）が格納されている物理ブロックと別の物理ブロックに格納される。このような場合に、更新されるデータ（旧データ）と同じ物理ブロックに格納されている更新されないデータが、新データが格納される別の物理ブロックに転送されるようにすると、データ更新処理に掛かる時間が長くなる。これを避けるため、新データが格納される物理ブロック（新ブロック）と旧データが格納された物理ブロック（旧ブロック）とが、同じ論理アドレスの範囲（同一の論理ブロック）に割り当てられたまま残されることがある。つまり、データ更新処理の便宜により、新ブロックと旧ブロックが並存することがある。
【０００３】
このように同じ論理アドレスの範囲に割り当てられている新ブロックと旧ブロックを並存させた場合、更新されたデータについては、後からその論理アドレスの範囲に割り当てられた新ブロックに格納されたデータ（つまり新データ）が有効なデータとして扱われ、更新されなかったデータについては、先にその論理アドレスの範囲に割り当てられた旧ブロックに格納されているデータが有効なデータとして扱われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００４−５３３０２９号公報
【特許文献２】特開２００５−１９０２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、１個の物理ブロックに格納されるべきデータが、２個の物理ブロック（新ブロックと旧ブロック）に分散して格納されるため、このような分散格納が増加するとフラッシュメモリの実質的な記憶容量が低下する。また、このような分散格納では、同じ論理アドレスの範囲に２個の物理ブロック（新ブロックと旧ブロック）が割り当てられるため、論理アドレスと物理ブロックに格納されているデータとの対応関係の管理に関わる負担が増加する。
【０００６】
一方、旧ブロックに格納されている更新されなかったデータが新ブロックに転送されれば、新ブロックと並存する旧ブロックの個数は減少する。しかし、旧ブロックから新ブロックへのデータ転送が行われた後に、転送されたデータの更新がホストシステムからのアクセスにより行われた場合、旧ブロックから新ブロックへのデータ転送が無駄になってしまう。従って、更新される可能性の高いデータ、例えば、他のデータに比べて書き換え頻度の高いデータについては、旧ブロックから新ブロックへのデータ転送を行わずに、旧ブロックに格納されたままにしておくことが好ましい。
【０００７】
そこで、本発明は、実質的な記憶容量の低下が抑制されつつ効率的にデータ更新が行われるメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理手段と、
前記論理ブロックに割り当てられている物理ブロックを対象に、前記論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になるように優先順位を管理する第２のブロック管理手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１のブロック管理手段により前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている物理ブロックである旧ブロックを特定する旧ブロック特定手段と、
前記第１のブロック管理手段が前記論理ブロックに前記空きブロックを割り当てるときに、前記旧ブロック特定手段により特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断手段と、
前記判断手段が否定的な判断をしたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理手段により割り当てられる前記空きブロックに転送するデータ転送手段とを備え、
前記データ転送手段によりデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理手段により前記空きブロックとして管理される。
【０００９】
本発明の第２の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理手段と、
前記論理ブロックに割り当てられている前記仮想ブロックを対象に、前記論理ブロックに割り当てられた順序が後の前記仮想ブロックの方が上位になるように優先順位を管理する第２のブロック管理手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１のブロック管理手段により前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている前記仮想ブロックである旧ブロックを特定する旧ブロック特定手段と、
前記第１のブロック管理手段が前記論理ブロックに前記空きブロックを割り当てるときに、前記旧ブロック特定手段により特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断手段と、
前記判断手段が否定的な判断をしたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている論理ブロックと同一の前記論理ブロックに前記第１のブロック管理手段により割り当てられる前記空きブロックに転送するデータ転送手段とを備え、
前記データ転送手段によりデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理手段により前記空きブロックとして管理される。
【００１０】
本発明の第３の観点に従うフラッシュメモリシステムは、前記第１又は第２の観点に従うメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備える。
【００１１】
本発明の第４の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理ステップと、
前記論理ブロックに割り当てられている物理ブロックを対象に、前記論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になるように優先順位を管理する第２のブロック管理ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている物理ブロックである旧ブロックを特定する旧ブロック特定ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに前記空きブロックが割り当てられるときに、前記旧ブロック特定ステップにより特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断ステップと、
前記判断ステップにより否定的な判断がなされたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理ステップにより割り当てられる前記空きブロックに転送するデータ転送ステップとを備え、
前記データ転送ステップにおいてデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理ステップにより前記空きブロックとして管理される。
【００１２】
本発明の第５の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと、
有効なデータが格納されていない物理ブロックを空きブロックとして管理する空きブロック管理ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記論理ブロックに前記空きブロックを割り当てる第１のブロック管理ステップと、
前記論理ブロックに割り当てられている前記仮想ブロックを対象に、前記論理ブロックに割り当てられた順序が後の前記仮想ブロックの方が上位になるように優先順位を管理する第２のブロック管理ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに割り当てられる前記空きブロックと同一の前記論理ブロックに既に割り当てられている前記仮想ブロックである旧ブロックを特定する旧ブロック特定ステップと、
前記第１のブロック管理ステップにより前記論理ブロックに前記空きブロックが割り当てられるときに、前記旧ブロック特定ステップにより特定された前記旧ブロックの前記優先順位における順位が、所定順位より上位であるか否かを判断する判断ステップと、
前記判断ステップにより否定的な判断がなされたときに、判断対象の前記旧ブロックに格納されている有効なデータを、前記旧ブロックが割り当てられている前記論理ブロックと同一の前記論理ブロックに前記第１のブロック管理ステップにより割り当てられる前記空きブロックに転送するデータ転送ステップとを備え、
前記データ転送ステップにおいてデータ転送が行われた場合、当該データ転送の転送元の前記旧ブロックが、前記空きブロック管理ステップにより前記空きブロックとして管理される。
【発明の効果】
【００１３】
本発明によれば、論理ブロックに割り当てられている物理ブロックを対象に、論理ブロックに割り当てられた順序が後の物理ブロックの方が上位になる優先順位の管理が行われ、論理ブロックに有効なデータが格納されていない物理ブロックが新たに割り当てられるときに、その物理ブロック（新ブロック）と同一の論理ブロックに既に割り当てられている物理ブロック（旧ブロック）の前記優先順位における順位が、所定順位より上位であるか否かが判断される。そして、否定的な判断がなされた場合は、旧ブロックから新ブロックへのデータ転送が行われる。従って、新ブロックと並存する旧ブロックの個数が増加することによる実質的な記憶容量の低下が抑制されつつ、効率的なデータ更新が行われる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】論理ブロックと物理ブロックの対応関係を示す図である。
【図３】使用ブロック管理を示す説明図である。
【図４】空きブロック管理を示す説明図である。
【図５】使用ブロック管理及び空きブロック管理に用いられるテーブルの構成を示す説明図である。
【図６】旧ブロックの使用優先順位（使用ブロック管理における優先順位）が所定の順位（閾値）より上位である場合に行われる処理の説明図である。
【図７】旧ブロックの使用優先順位が所定の順位（閾値）より上位でない場合に行われる処理の説明図である。
【図８】２個の旧ブロックのうちの一方の旧ブロックの使用優先順位だけが所定の順位（閾値）より上位でない場合に行われる処理の説明図である。
【発明を実施するための最良の形態】
【００１５】
図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００１６】
図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００１７】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１８】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（Error Correcting Code）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１９】
ホストインターフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を介してフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を介してホストシステム４に供給される。
【００２０】
ホストインターフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、アクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭セクタのＬＢＡ（Logical Block Address）（後述）が書き込まれる。
【００２１】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が格納される。
【００２２】
バッファ９は、フラッシュメモリ２から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、バッファ９は、フラッシュメモリ２に書き込むデータを、フラッシュメモリ２が書き込み可能な状態となるまで保持する。
【００２３】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２４】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error Correcting Code）を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００２５】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２６】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読み出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインターフェースブロック１０に処理を実行させる。
【００２７】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。
【００２８】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。物理ブロックは、複数のページ（物理ページ）で構成される。例えば、１個の物理ページは、所定サイズ（例えば２０４８バイト）のユーザ領域と、所定サイズ（例えば６４バイト）の冗長領域とで構成され、１個の物理ブロックが、所定個数（例えば６４個）の物理ページで構成されている。ユーザ領域は、ホストシステム４から与えられるデータを記憶するための領域であり、通常、５１２バイト単位の記憶領域（以下、「論理セクタ領域」と言う）に分割して管理されている。冗長領域は、誤り訂正符号（ＥＣＣ：Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００２９】
論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。ブロックステータス（フラグ）は、物理ブロックの良否を示すフラグである。尚、初期不良の物理ブロックについては、不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。
【００３０】
書き込み処理では、ホストシステム４によって、コマンドレジスタＲ１に、書き込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタＲ２に、書き込むデータのセクタ数が書き込まれ、ＬＢＡレジスタＲ３には、書き込みを開始する先頭データに対応するＬＢＡが書き込まれる。セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータが書き込まれる。
【００３１】
セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて判別される論理アクセス領域が複数個の論理ブロックに跨っている場合は、論理アクセス領域が属する論理ブロック毎に領域を分割してデータの書き込み処理が行われる。例えば、論理アクセス領域が２個の論理ブロック（第１の論理ブロックと第２の論理ブロック）に跨っている場合は、第１の論理ブロックに対応する物理ブロックに対する書き込み処理と、第２の論理ブロックに対応する物理ブロックに対する書き込み処理とが行われる。第１の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第１の論理ブロックに対応する物理ブロックに書き込まれる。第２の論理ブロックに属する論理アクセス領域に対して書き込むことが指示されたデータは、第２の論理ブロックに対応する物理ブロックに書き込まれる。
【００３２】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、「論理セクタ領域」と言う）に付けた通し番号であるＬＢＡ（Logical Block Address）で管理されている。又、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、１個又は複数個の物理ブロックが割り当てられる。
【００３３】
この論理ブロックと物理ブロックの対応関係は、ゾーン単位で管理されることが多い。具体的には、複数個の論理ブロックで１個の論理ゾーンが構成され、この論理ゾーン単位で論理ブロックと物理ブロックの対応関係を示すアドレス変換テーブルの作成処理や更新処理が行われる。
【００３４】
このアドレス変換テーブルの作成処理や更新処理は、通常、ワークエリア８上で行われる。アドレス変換テーブルは、一般に、起動時又はアクセス時に、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成されるが、フラッシュメモリ２に格納しておき、必要なときにフラッシュメモリ２から読み出すようにしてもよい。こうすることより、各物理ブロックの冗長領域から論理アドレス情報を読み出してアドレス変換テーブルを作成する場合に比べて、短時間で、アドレス変換テーブルを得ることができる。
【００３５】
また、アドレス変換テーブルをフラッシュメモリ２に格納する場合は、突然の電源遮断に対応するため、常に最新のアドレス変換テーブルがフラッシュメモリ２に格納されているようにすることが好ましい。つまり、論理ブロックと物理ブロックとの対応関係が変化する毎に（つまりワークエリア８上でアドレス変換テーブルが更新される毎に）、最新のアドレス変換テーブルがフラッシュメモリ２に保存されることが好ましい。このアドレス変換テーブルの格納処理も、作成処理や更新処理と同様に論理ゾーン単位で行われる。
【００３６】
図２を参照して、論理ブロックと物理ブロックの対応関係の一例を説明する。
【００３７】
図２に示した例では、ＬＢＡ＃０−＃２０４７９９９からなる２０４８０００個の論理セクタ領域が、フラッシュメモリ２を構成する８１９２個の物理ブロックからなる記憶領域に割り当てられている。
【００３８】
それぞれの物理ブロックは、複数個の論理セクタ領域で構成された論理ブロックに割り当てられる。以下、この論理ブロックに付けられた通し番号を「論理ブロック番号（ＬＢＮ）」と言う。この例では、セクタ単位の論理アドレスであるＬＢＡが連続する２５６個の論理セクタ領域をまとめたものを論理ブロックとしている。つまり、ＬＢＡ＃０−＃２５５の２５６個の論理セクタ領域によりＬＢＮ＃０の論理ブロックが構成され、ＬＢＡ＃２５６−＃５１１の２５６個の論理セクタ領域によりＬＢＮ＃１の論理ブロックが構成されている。このように、ＬＢＡ＃０−＃２０４７９９９の２０４８０００個の論理セクタ領域によりＬＢＮ＃０−＃７９９９の８０００個の論理ブロックが構成されている。
【００３９】
更に、この論理ブロックを複数個まとめたものを論理ゾーンとしている。以下、この論理ゾーンに付けられた通し番号を「論理ゾーン番号（ＬＺＮ）」と言う。この例では、ＬＢＮ＃０−＃７９９９の８０００個の論理ブロックが、ＬＺＮ＃０−＃７の８個の論理ゾーンに対して１０００個ずつ割り当てられている。つまり、ＬＢＮ＃０−＃９９９の論理ブロックがＬＺＮ＃０の論理ゾーンに、ＬＢＮ＃１０００−＃１９９９の論理ブロックがＬＺＮ＃１の論理ゾーンに、ＬＢＮ＃２０００−＃２９９９の論理ブロックがＬＺＮ＃２の論理ゾーンに、以下、同様に、ＬＢＮ＃７０００−＃７９９９の論理ブロックがＬＺＮ＃７の論理ゾーンに割り当てられている。
【００４０】
フラッシュメモリ２を構成する８１９２個の物理ブロックには、固有の物理ブロックアドレス（ＰＢＡ）が付されている。フラッシュメモリ２を構成する物理ブロックには、出荷時からデータの書き込みや消去を正常に行うができない不良ブロックである先天性の不良ブロックと、書き込みや消去を繰返すことにより不良ブロックになった後天性の不良ブロックとがある。フラッシュメモリ２を構成する物理ブロックに含まれる後天性の不良ブロックの個数は、一般に、メーカにより規定されている保証消去回数を超えると顕著に増加する。
【００４１】
また、一般的に使用されているＮＡＮＤ型フラッシュメモリには、ＳＬＣ（single level cell）タイプのメモリセルで構成されているものと、ＭＬＣ（multi level cell）タイプのメモリセルで構成されているものとがある。ＭＬＣタイプのメモリセルで構成されたフラッシュメモリは、一般に、ＳＬＣタイプのメモリセルで構成されたフラッシュメモリに比べデータ保持期間が短く、そのデータ保持期間は、所定の消去回数を超えると顕著に短くなる。従って、ＭＬＣタイプのメモリセルで構成されたフラッシュメモリでは、保証消去回数に達していない物理ブロックであっても、所定の消去回数を超えると、その物理ブロックに格納されているデータの信頼性が低下する。
【００４２】
それぞれの論理ブロックに対応するデータは、その論理ブロックに割り当てられた物理ブロックに格納される。この論理ブロックと物理ブロックとの対応関係は、上述したアドレス変換テーブルによって管理されている。論理ブロックに割り当てる物理ブロックは、有効なデータが格納されていない物理ブロックを特定するためのテーブルである空きブロックテーブルを用いて特定される。
【００４３】
フラッシュメモリに格納されているデータを更新するときには、旧データが格納されている物理ブロックと同じ論理ブロックに有効なデータが格納されていない別の物理ブロックを新たに割り当て、その別の物理ブロックに新データが格納される。そして、全ての旧データが新データで置き換えられたとき、旧データが格納されている物理ブロックは、有効なデータが格納されていない物理ブロックになる。
【００４４】
つまり、いずれかの論理ブロックに対応するデータが格納されている物理ブロック内の全てのデータが別の物理ブロックに格納されているデータにより置き換えられたとき、その物理ブロックは有効なデータが格納されていない物理ブロックになる。尚、このような有効なデータが格納されていない物理ブロックの消去処理は、別の物理ブロックに格納されているデータにより全ての有効なデータが置き換えられたときに行っても（つまり、物理ブロックが、有効なデータが格納されていない物理ブロックになったときに行われても）、又は、その物理ブロックが論理ブロックに割り当てられる直前に行われてもよい。
【００４５】
フラッシュメモリに格納されているデータは、通常、更新される毎に格納先の物理ブロックが遷移していく。この格納先の物理ブロックの遷移は、更新頻度が高いデータに関しては多くなり、更新頻度が低いデータに関しては少なくなる。従って、格納されたデータの更新頻度の差異により、それぞれの物理ブロックの消去回数に偏りが生じる。この消去回数の偏りが過度に進行すると、消去回数が多い一部の物理ブロックが、他の物理ブロックよりも早く不良ブロックになったり、他の物理ブロックよりも早くデータ保持期間が著しく短くなったりして好ましいない。
【００４６】
このような問題を回避するためには、例えば、空きブロック（有効なデータが格納されていない物理ブロック）のうちで消去回数が最小の物理ブロックの消去回数が、更新頻度が低いデータが格納されている物理ブロックの消去回数よりも所定回数以上多くなったときに、更新頻度が低いデータが格納されている物理ブロックに格納されているデータを別の物理ブロックに転送されるようにすればよい。このデータ転送では、有効なデータが格納されていない物理ブロックのうちで消去回数が最大の物理ブロックが転送先になる。次に、この処理を、図３及び図４を参照して説明する。
【００４７】
この処理では、有効データが格納されている物理ブロックを対象とした優先順位管理と、有効データが格納されていない物理ブロックを対象とした優先順位管理が行われている。以下、有効データが格納されている物理ブロックを対象とした優先順位管理を「使用ブロック管理」と言い、有効データが格納されていない物理ブロックを対象とした優先順位管理を「空きブロック管理」と言う。
【００４８】
使用ブロック管理における優先順位管理を、図３を参照して説明する。この使用ブロック管理では、論理ブロックに割り当てられている物理ブロック、つまり、いずれかの論理ブロックと対応関係にある物理ブロックを対象にした優先順位管理が行われている。この優先順位管理では、論理ブロックに対して物理ブロックが新たに割り当てられたときに、新たに割り当てられた物理ブロックの優先順位が最上位になる優先順位の管理が行われている。従って、論理ブロックに対して先に割り当てられた物理ブロックの方が、優先順位が下位になる。そして、優先順位が最下位の物理ブロックは、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。メモリコントローラ３は、このような優先順位の管理を行うことにより、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックを特定することができる。
【００４９】
図３に示した例では、ＰＢＮ＃３６の物理ブロックの優先順位が最上位になっており、ＰＢＮ＃８５７の物理ブロックの優先順位が最下位になっている。従って、ＰＢＮ＃３６の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も後に論理ブロックに割り当てられた物理ブロックに対応し、ＰＢＮ＃８５７の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。ここで、ＰＢＮ＃５２３の物理ブロックが論理ブロックに新たに割り当てられた場合、ＰＢＮ＃５２３の物理ブロックの優先順位が最上位になり、ＰＢＮ＃３６の物理ブロックの優先順位は２番目になる。また、ＰＢＮ＃２３４の物理ブロックが有効なデータが格納されていない物理ブロックになった場合、又はＰＢＮ＃２３４の物理ブロックに格納されているデータが消去された場合、ＰＢＮ＃２３４の物理ブロックがこの優先順位管理の対象から外される。つまり、ＰＢＮ＃９９５の物理ブロック、ＰＢＮ＃２３４の物理ブロック、ＰＢＮ＃６４５の物理ブロックという順序であった優先順位が、ＰＢＮ＃９９５の物理ブロック、ＰＢＮ＃６４５の物理ブロックという順序になる。
【００５０】
空きブロック管理における優先順位管理を、図４を参照して説明する。この空きブロック管理では、論理ブロックに対して割り当てることが可能な物理ブロックを対象にした優先順位管理が行われている。ここで、論理ブロックに対して割り当てることが可能な物理ブロックとは、不良ブロックではない物理ブロックであって、記憶データが消去されている物理ブロック又は有効なデータが格納されていない物理ブロックであることを意味する。尚、有効なデータが格納されていない物理ブロックについては、論理ブロックに割り当てられる前に記憶データが消去される。以下、論理ブロックに対して割り当てることが可能な物理ブロックを「空きブロック」と言う。つまり、「空きブロック」には、有効なデータが格納されていない物理ブロックであって、記憶データが消去されていない物理ブロックも含まれる。
【００５１】
この空きブロックを対象にした優先順位管理では、消去回数の少ない空きブロックの優先順位が高くなり、消去回数の多い空きブロックの優先順位が低くなるように優先順位が管理されている。つまり、消去回数の少ない方から多い方に向かって優先順位が下がっていくように優先順位が管理されている。従って、優先順位が最上位の空きブロックは、空きブロックのうちで消去回数が一番少ない空きブロックに対応し、優先順位が最下位の空きブロックは、空きブロックのうちで消去回数が一番多い空きブロックに対応する。
【００５２】
図４に示した例では、ＰＢＮ＃７５３の物理ブロックの優先順位が最上位になっており、ＰＢＮ＃３８の物理ブロックの優先順位が最下位になっている。従って、ＰＢＮ＃７５３の物理ブロックは空きブロックのうちで消去回数が最も少ない物理ブロックであり、ＰＢＮ＃３８の物理ブロックは空きブロックのうちで消去回数が最も多い物理ブロックである。
ここで、優先順位が最上位の空きブロックであるＰＢＮ＃７５３の物理ブロックの消去回数は１１７８回であり、優先順位が２番目の空きブロックであるＰＢＮ＃２２８の物理ブロックの消去回数は１１９３回であり、以下、優先順位が下がるにつれて消去回数が増加していく。そして、優先順位が最下位の空きブロックであるＰＢＮ＃３８の物理ブロックの消去回数は２５３６回になっている。
【００５３】
論理ブロックに対して割り当てられていた物理ブロックが空きブロックになった場合、その物理ブロックは、使用ブロック管理の対象から外され、空きブロック管理の対象に追加される。例えば、ＰＢＮ＃２３４の物理ブロックが空きブロックになったときは、ＰＢＮ＃２３４の物理ブロックが空きブロック管理の対象に追加される。ＰＢＮ＃２３４の物理ブロックの消去回数は１２２３回なので、ＰＢＮ＃２３４の物理ブロックの優先順位は、消去回数が１２０５回であるＰＢＮ＃４３１の物理ブロックと消去回数が１２５３回であるＰＢＮ＃７１２の物理ブロックの間に設定される。つまり、ＰＢＮ＃４３１の物理ブロック、ＰＢＮ＃７１２の物理ブロックという順序であった優先順位が、ＰＢＮ＃４３１の物理ブロック、ＰＢＮ＃２３４の物理ブロック、ＰＢＮ＃７１２の物理ブロックという順序になる。
【００５４】
次に、ホストシステム４からのアクセスに応答して、メモリコントローラ３が実行する処理について説明する。ホストシステム４から与えられるデータがフラッシュメモリ２に書き込まれる場合、メモリコントローラ３は、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域を判別し、更に、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータを書き込むことが可能か否かを判断する。その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックが無い場合、又は、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータを書き込むための空き領域が無い場合、メモリコントローラ３は、その論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定する。
【００５５】
この物理ブロックを決定するため、メモリコントローラ３は、空きブロックのうちで消去回数が最も少ない物理ブロックと論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックとを特定する。つまり、メモリコントローラ３は、空きブロック管理における優先順位が最上位の物理ブロック（空きブロック）と使用ブロック管理における優先順位が最下位の物理ブロックと特定する。以下、空きブロック管理における優先順位が最上位の空きブロックを「最上位空きブロック」と言い、空きブロック管理における優先順位が最下位の空きブロックを「最下位空きブロック」と言い、使用ブロック管理における優先順位が最下位の物理ブロックを「最先ブロック」と言う。
【００５６】
メモリコントローラ３は、特定された最上位空きブロックの消去回数と最先ブロックの消去回数とを比較し、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多いか否かを判断する。この所定回数は、フラッシュメモリの仕様等に応じて適宜設定される。
【００５７】
この比較に基づいて否定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多くない場合、論理アクセス領域が含まれる論理ブロックに最上位空きブロックである物理ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム４から与えられるデータが格納される。
【００５８】
この比較に基づいて肯定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多い場合、メモリコントローラ３は、最下位空きブロックを特定し、その最下位空きブロックに、最先ブロックに格納されているデータを転送する。このデータ転送の終了後に、転送元の最先ブロックに格納されているデータが消去され（この際、転送元の最先ブロックの消去回数が１回増加する）、論理アクセス領域が含まれる論理ブロックに転送元の最先ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム４から与えられるデータが格納される。尚、このデータ転送の転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックと対応する物理ブロックになる。つまり、転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックに新たに割り当てられる。
【００５９】
最先ブロックに格納されているデータは書き換え頻度が低い場合が多いため、このデータ転送が行われることにより、転送先の最下位空きブロックであった物理ブロックの消去回数の増加が抑制される。一方、転送元の最先ブロックであった物理ブロックには書き換え頻度が高いデータが格納される確率が高くなる。従って、このデータ転送が行われることにより、フラッシュメモリを構成する複数個の物理ブロックにおける消去回数の偏りが抑制される。
【００６０】
次に、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックが決定されるまでの処理を図３及び図４を参照して具体的に説明する。以下の説明では、上述の所定回数が１０００回であるものとして説明する。
【００６１】
メモリコントローラ３は、空きブロックのうちで消去回数が最も少ない物理ブロックである最上位空きブロックとしてＰＢＡ＃７５３の物理ブロックを特定し、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックである最先ブロックとしてＰＢＡ＃８５７の物理ブロックを特定する。ここで、ＰＢＡ＃７５３の物理ブロックの消去回数は１１７８回で、ＰＢＡ＃８５７の物理ブロックの消去回数は７５回なので、最上位空きブロックと最先ブロックの消去回数の比較では、１１７８回と７５回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも１０００回以上多いという肯定的な判断がなされる。
【００６２】
メモリコントローラ３は、最上位空きブロックと最先ブロックの消去回数の比較に基づいて肯定的な判断した後、その判断に基づいて空きブロックのうちで消去回数が最も多い物理ブロックである最下位空きブロックとしてＰＢＡ＃３８の物理ブロックを特定する。そして、特定された最下位空きブロックであるＰＢＡ＃３８の物理ブロックには、最先ブロックであるＰＢＡ＃８５７の物理ブロックに格納されているデータが転送される。このデータ転送の終了後に、ＰＢＡ＃８５７の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。つまり、ＰＢＡ＃８５７の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックとして決定される。
【００６３】
尚、ＰＢＡ＃８５７の物理ブロックが論理ブロックに割り当てられることにより、使用ブロック管理における優先順位が最上位の物理ブロックはＰＢＡ＃８５７の物理ブロックになり、使用ブロック管理における優先順位が最下位の物理ブロックはＰＢＡ＃９０１の物理ブロックになる。従って、メモリコントローラ３が、次に論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定するときには、最上位空きブロックとしてＰＢＡ＃７５３の物理ブロックを特定し、最先ブロックとしてＰＢＡ＃９０１の物理ブロックを特定する。最上位空きブロックと最先ブロックの消去回数の比較では、ＰＢＡ＃７５３の物理ブロックの消去回数である１１７８回とＰＢＡ＃９０１の物理ブロックの消去回数である１０５回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも１０００回以上多いという肯定的な判断がなされる。このため、ＰＢＡ＃９０１の物理ブロックに記憶されているデータが最下位空きブロック（ＰＢＡ＃５３２の物理ブロック）に転送された後、ＰＢＡ＃９０１の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。
【００６４】
また、最先ブロックから最下位空きブロックへのデータ転送が行われた場合、転送先の最下位空きブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。例えば、最先ブロックであるＰＢＡ＃８５７の物理ブロックから最下位空きブロックであるＰＢＡ＃３８の物理ブロックへのデータ転送が行われた場合、ＰＢＡ＃３８の物理ブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。論理ブロックに物理ブロックが新たに割り当てられ、その物理ブロックにデータが格納されたことにより、その物理ブロックと同じ論理ブロックに割り当てられている別の物理ブロックが空きブロックになった場合、その別の物理ブロックは使用ブロック管理の対象から外され空きブロック管理の対象に追加される。
【００６５】
フラッシュメモリ２に格納されているデータの更新処理では、通常、更新される毎に格納先の物理ブロックが遷移していく。従って、書き換え頻度が高いデータが格納された物理ブロックは、使用ブロック管理の対象から空きブロック管理の対象に移行する傾向が強くなり、書き換え頻度が低いデータが格納された物理ブロックは、使用ブロック管理の対象として留まる傾向が強くなる。このような傾向に基づいて、使用ブロック管理における優先順位が最下位の物理ブロックに格納されているデータが、書き換え頻度が低いデータとみなされている。また、消去回数の少ない物理ブロックが空きブロックになった場合、その空きブロックは論理ブロックに割り当てられる確率が高くなるので、消去回数の少ない物理ブロックに書き換え頻度が低いデータが格納される確率を低くすれば、消去回数の少ない物理ブロックの消去回数は増加する傾向が強くなる。従って、書き換え頻度が低いとみなされたデータが、消去回数の少ない物理ブロックに格納されることを避けるために、上述のデータ転送（最先ブロックから最下位空きブロックへのデータ転送）が行われる。
【００６６】
次に、フラッシュメモリ２を構成する物理ブロックの消去回数の管理並びに使用ブロック管理及び空きブロック管理における優先順位管理の方法を、図５に示した例を参照して説明する。図５に示したテーブルには、ＰＢＡの順序で各物理ブロックの優先順位リンク番号と消去回数が記載されている。２つ優先順位リンク番号は、その物理ブロックより優先順位が１つ上の物理ブロックのＰＢＡと、その物理ブロックより優先順位が１つ下の物理ブロックのＰＢＡに対応している。従って、論理ブロックに割り当てられている物理ブロックについては、使用ブロック管理における優先順位が、その物理ブロックよりも１つ上の物理ブロックのＰＢＡと１つ下の物理ブロックのＰＢＡとが、優先順位リンク番号として書き込まれる。空きブロックになった物理ブロックについては、空きブロック管理における優先順位が、その物理ブロックよりも１つ上の物理ブロックのＰＢＡと１つ下の物理ブロックのＰＢＡとが、優先順位リンク番号として書き込まれる。尚、優先順位が最上位の物理ブロックについては、その物理ブロックより優先順位が１つ上の物理ブロックのＰＢＡが書き込まれておらず、優先順位が最下位の物理ブロックについては、その物理ブロックより優先順位が１つ下の物理ブロックのＰＢＡが書き込まれていない。
【００６７】
このテーブルを参照することにより、例えば、ＰＢＡ＃０の物理ブロックの場合、その物理ブロックより優先順位が１つ上の物理ブロックはＰＢＡ＃１１８であり、その物理ブロックより優先順位が１つ下の物理ブロックはＰＢＡ＃５７２であることが分かる。
【００６８】
このテーブルには、使用ブロック管理及び空きブロック管理における優先順位が最上位の物理ブロックと最下位の物理ブロックのＰＢＡも記載されており、優先順位が最上位の物理ブロック又は最下位の物理ブロックが変わったときは変更される。
【００６９】
使用ブロック管理における優先順位管理の場合、論理ブロックに新たに物理ブロックが割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すＰＢＡが変更される。また、優先順位が最下位の物理ブロックである最先ブロックに記憶されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すＰＢＡが変更される。
【００７０】
空きブロック管理における優先順位管理の場合、優先順位が最上位の物理ブロックである最上位空きブロックよりも消去回数が少ない物理ブロックが空きブロックになったときや、最上位空きブロックが論理ブロックに割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すＰＢＡが変更される。また、優先順位が最下位の物理ブロックである最下位空きブロックよりも消去回数が多い物理ブロックが空きブロックになったときや、最先ブロックに格納されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すＰＢＡが変更される。
【００７１】
例えば、ＰＢＡ＃７５３の物理ブロックが論理ブロックに新たに割り当てられた場合、使用ブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが、＃３６から＃７５３に変更される。また、ＰＢＡが＃３６の物理ブロックの優先順位リンク番号として、優先順位が１つ上の物理ブロックを示すＰＢＡである＃７５３が記載される。ＰＢＡが＃７５３の物理ブロックの優先順位リンク番号として、優先順位が１つ下の物理ブロックを示すＰＢＡである＃３６が記載される。このように優先順位リンク番号が記載されることにより、ＰＢＡが＃７５３の物理ブロックが使用ブロック管理の対象になる。
【００７２】
最上位空きブロックであったＰＢＡ＃７５３の物理ブロックが論理ブロックに新たに割り当てられた場合、ＰＢＡ＃７５３の物理ブロックが空きブロック管理の対象から外される。このため、空きブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが変更される。最上位空きブロックであったＰＢＡ＃７５３の物理ブロックの優先順位リンク番号として記載されていた優先順位が１つ下の物理ブロックを示すＰＢＡが＃２２８であった場合、空きブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが＃７５３から＃２２８に変更される。そして、ＰＢＡ＃２２８の物理ブロックの優先順位リンク番号として記載されている優先順位が１つ上の物理ブロックを示すＰＢＡ（＃７５３）は消去される。また、このテーブルに記載されている消去回数は、それぞれの物理ブロックが空きブロック管理の対象に追加される毎に、追加された物理ブロックの消去回数が１ずつ増やされる。
【００７３】
本発明の実施の形態では、メモリコントローラ３が、論理ブロックに物理ブロック（空きブロック）を新たに割り当てるときに、所定の条件に従って、その論理ブロックに既に割り当てられている物理ブロックに格納されているデータを、新たに割り当てる物理ブロック（空きブロック）に転送している。次に、このデータ転送について説明する。以下の説明では、使用ブロック管理における優先順位を「使用優先順位」と言う。また、新たに割り当てる物理ブロック（空きブロック）を「新ブロック」と言い、既に割り当てられている物理ブロックを「旧ブロック」と言う。つまり、「新ブロック」と「旧ブロック」は同じ論理ブロックに対応する物理ブロックであり、旧ブロックは新ブロックよりも先にその論理ブロックに割り当てられた物理ブロックである。
【００７４】
ホストシステム４から与えられるデータは、ＬＢＡが割り当てられているセクタ単位のデータであるが、フラッシュメモリ２におけるデータ読み出し動作及びデータ書き込み動作はページ単位で行われる。このため、通常、物理ブロック内の物理ページの記憶容量と等しいセクタ数のデータが論理ページ単位のデータとして扱われ、この論理ページ単位で物理ブロックに格納されるデータが管理されている。つまり、メモリコントローラ３は、この論理ページ単位のデータに対して論理ページ番号を割り当て、物理ブロック内の物理ページに付けられた物理ページ番号と論理ページ番号との対応関係を管理している。この対応関係の管理では、論理ページ番号と物理ページ番号の対応関係が予め定められている場合と、定められていない場合がある。この対応関係が定められていない場合、書き込み先の物理ページを適宜選択することができるが、論理ページ番号と物理ページ番号の対応関係の管理に関する負担が増加する。尚、この対応関係が予め定められていても定められていなくても本発明を適用することができる。以下の説明では、論理ページ番号と物理ページ番号の対応関係が定められていないものとして説明する。従って、論理ページ番号と物理ページ番号の対応関係が定められている場合のように、旧ブロックに格納されている更新前のデータと新ブロックに格納される更新後のデータは必ずしも同じ物理ページに格納される必要はない。
【００７５】
本発明の実施の形態では、論理ブロックに新ブロックが割り当てられるときに、旧ブロックの使用優先順位（使用ブロック管理における優先順位）に基づいて、旧ブロックに格納されている有効なデータ（更新されていないデータ）が新ブロックに転送されるか否かが決まる。具体的には、例えば、使用優先順位に閾値が設けられており、旧ブロックの使用優先順位が、その閾値より上位でないと判断された場合には、旧ブロックに格納されている有効なデータが新ブロックに転送される。つまり、旧ブロックの使用優先順位が閾値より上位でないという条件を満たす場合に、旧ブロックに格納されている有効なデータが新ブロックに転送される。
【００７６】
ここで、論理ブロックに新ブロックが割り当てられるときに、その新ブロックの使用優先順位は最上位になるので、旧ブロックの使用優先順位がｎ番目（ｎは自然数）であれば、旧ブロックはその新ブロックよりもｎ番前に論理ブロックに割り当てられた物理ブロックであることが分かる。従って、閾値がｋ番目（ｋは自然数）である場合、旧ブロックがその新ブロックよりもｋ番以上前に論理ブロックに割り当てられた物理ブロックであれば、旧ブロックに格納されている有効なデータがその新ブロックに転送される。
【００７７】
次に、旧ブロックの使用優先順位が所定の順位（閾値）より上位である場合を、図６を参照して説明する。図６に示した例では、ＰＢＡ＃１４５の物理ブロックが旧ブロックに対応し、ＰＢＡ＃５２３の物理ブロックが新ブロックに対応している。ここで、論理ブロックにＰＢＡ＃５２３の物理ブロック（新ブロック）を割り当てるときに、その論理ブロックに既に割り当てられているＰＢＡ＃１４５の物理ブロック（旧ブロック）の使用優先順位が、所定の順位（閾値）より上位であるか否かが判断される。例えば、所定の順位（閾値）が５００番目であれば、ＰＢＡ＃１４５の物理ブロック（旧ブロック）の使用優先順位が、５００番目より上位であるか否かが判断される。
【００７８】
ＰＢＡ＃１４５の物理ブロック（旧ブロック）の使用優先順位が、５００番目より上位であるという肯定的な判断がなされた場合、論理ブロックに割り当てられるＰＢＡ＃５２３の物理ブロック（新ブロック）には、ホストシステム４から与えられるデータ（新データ）は格納されるが、ＰＢＡ＃１４５の物理ブロック（旧ブロック）からＰＢＡ＃５２３の物理ブロック（新ブロック）へのデータ転送は行われない。ＰＢＡ＃５２３の物理ブロック（新ブロック）に新データが格納されることにより、ＰＢＡ＃１４５の物理ブロック（旧ブロック）に格納されているデータのうち、その新データで置き換えられたデータ（旧データ）が無効なデータになる。つまり、ＰＢＡ＃１４５の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃５２３の物理ブロック（新ブロック）に格納された新データと異なる論理ページに対応するデータは有効なデータのままであるが、新データと同じ論理ページに対応するデータ（旧データ）は無効なデータとなる。尚、論理ページ番号と物理ページ番号の対応関係が定められている場合には、ＰＢＡ＃１４５の物理ブロック（旧ブロック）内の旧データが格納されている物理ページの物理ページ番号とＰＢＡ＃５２３の物理ブロック（新ブロック）内の新データが格納されている物理ページの物理ページ番号は、同じ物理ページ番号になる。  このように肯定的な判断がなされた場合には、ＰＢＡ＃１４５の物理ブロック（旧ブロック）及びＰＢＡ＃５２３の物理ブロック（新ブロック）の双方に有効なデータが存在するため、この２つの物理ブロック（旧ブロックと新ブロック）は、同じ論理ブロックに割り当てられたまま並存する。
【００７９】
次に、旧ブロックの使用優先順位が所定の順位（閾値）より上位でない場合を、図７を参照して説明する。図７に示した例では、ＰＢＡ＃１０３３の物理ブロックが旧ブロックに対応し、ＰＢＡ＃５２３の物理ブロックが新ブロックに対応している。ここで、論理ブロックにＰＢＡ＃５２３の物理ブロック（新ブロック）を割り当てるときに、その論理ブロックに既に割り当てられているＰＢＡ＃１０３３の物理ブロック（旧ブロック）の使用優先順位が、所定の順位（閾値）より上位であるか否かが判断される。例えば、所定の順位（閾値）が５００番目であれば、ＰＢＡ＃１０３３の物理ブロック（旧ブロック）の使用優先順位が、５００番目より上位であるか否かが判断される。
【００８０】
ＰＢＡ＃１０３３の物理ブロック（旧ブロック）の使用優先順位が、５００番目より上位でないという否定的な判断がなされた場合、論理ブロックに割り当てられるＰＢＡ＃５２３の物理ブロック（新ブロック）には、ホストシステム４から与えられるデータ（新データ）が格納されると共に、ＰＢＡ＃１０３３の物理ブロック（旧ブロック）に格納されている有効なデータが転送される。このデータ転送では、ＰＢＡ＃１０３３の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データで置き換えられないデータが、ＰＢＡ＃１０３３の物理ブロック（旧ブロック）からＰＢＡ＃５２３の物理ブロック（新ブロック）へ転送される。つまり、ＰＢＡ＃１０３３の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データと異なる論理ページに対応するデータはＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されるが、新データと同じ論理ページに対応するデータ（旧データ）は転送されない。尚、論理ページ番号と物理ページ番号の対応関係が定められている場合には、ＰＢＡ＃１４５の物理ブロック（旧ブロック）からＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されるデータの転送元の物理ページ（旧ブロック内の物理ページ）の物理ページ番号と転送先の物理ページ（新ブロック内の物理ページ）の物理ページ番号は、同じ物理ページ番号になる。
【００８１】
このように否定的な判断がなされた場合には、ＰＢＡ＃１４５の物理ブロック（旧ブロック）に格納されている有効なデータがＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されるため、ＰＢＡ＃１４５の物理ブロック（旧ブロック）に格納されているデータは全て無効なデータになり、ＰＢＡ＃１４５の物理ブロック（旧ブロック）は空きブロックになる。従って、ＰＢＡ＃５２３の物理ブロック（新ブロック）と対応する論理ブロックに割り当てられている物理ブロックは、ＰＢＡ＃５２３の物理ブロック（新ブロック）だけになる。
【００８２】
次に、旧ブロックが２個存在し、その一方の旧ブロックの使用優先順位だけが所定の順位（閾値）より上位でない場合を、図８を参照して説明する。図８に示した例では、ＰＢＡ＃１９９７の物理ブロック及びＰＢＡ＃９５５の物理ブロックが旧ブロックに対応し、ＰＢＡ＃５２３の物理ブロックが新ブロックに対応している。ここで、論理ブロックにＰＢＡ＃５２３の物理ブロック（新ブロック）を割り当てるときに、その論理ブロックに既に割り当てられているＰＢＡ＃１９９７の物理ブロック（旧ブロック）及びＰＢＡ＃９５５の物理ブロック（旧ブロック）の使用ブロック管理におけるそれぞれ優先順位が、所定の順位（閾値）より上位であるか否かが判断される。例えば、所定の順位（閾値）が５００番目であれば、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）及びＰＢＡ＃９５５の物理ブロック（旧ブロック）の使用ブロック管理におけるそれぞれの優先順位が、５００番目より上位であるか否かが判断される。
【００８３】
ＰＢＡ＃９５５の物理ブロック（旧ブロック）の使用優先順位は５００番目より上位であるが、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）の使用優先順位が５００番目より上位でない場合、ＰＢＡ＃９５５の物理ブロック（旧ブロック）については肯定的な判断がなされ、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）については否定的な判断がなされる。従って、論理ブロックに割り当てられるＰＢＡ＃５２３の物理ブロック（新ブロック）には、ホストシステム４から与えられるデータ（新データ）が格納されると共に、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されている有効なデータが転送される。このデータ転送では、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃９５５の物理ブロック（旧ブロック）に格納されているデータで置き換えられていないデータであって、更にＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データでも置き換えられないデータが転送される。つまり、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃９５５の物理ブロック（旧ブロック）に同じ論理ページに対応するデータが無く、更にＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データと異なる論理ページに対応するデータだけがＰＢＡ＃５２３の物理ブロック（新ブロック）に転送される。従って、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃９５５の物理ブロック（旧ブロック）に同じ論理ページに対応するデータが存在するデータはＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されない。また、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されているデータのうち、ＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データと同じ論理ページに対応するデータもＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されない。
【００８４】
このデータ転送では、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されている有効なデータがＰＢＡ＃５２３の物理ブロック（新ブロック）に転送されるため、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）に格納されているデータは全て無効なデータになり、ＰＢＡ＃１９９７の物理ブロック（旧ブロック）は空きブロックになる。ＰＢＡ＃９５５の物理ブロック（旧ブロック）については、有効なデータについては、ＰＢＡ＃５２３の物理ブロック（新ブロック）に格納される新データにより、全ての有効なデータが置き換えられなければ、有効なデータが保存されている物理ブロックとしてＰＢＡ＃５２３の物理ブロック（新ブロック）と並存する。つまり、ＰＢＡ＃９５５の物理ブロック（旧ブロック）とＰＢＡ＃５２３の物理ブロック（新ブロック）は、同じ論理ブロックに割り当てられた物理ブロックとして並存する。尚、論理ページ番号と物理ページ番号の対応関係が定められていない場合には、同じ論理ページに対応するデータを物理ブロック内の異なる物理ページに格納することができるため、同じ論理ページに対応するデータについては、後からの物理ブロック内の物理ページに格納されたデータが有効なデータとして管理される。つまり、同じ物理ブロック内の他の物理ページに格納されたデータで置き換えられることにより、格納されているデータが無効なデータになる場合もある。
【００８５】
上述のような処理を行っているのは、使用優先順位が低い物理ブロックに格納されているデータは書き換え頻度が低い場合が多いからである。このような理由により、使用優先順位が低い物理ブロックは、書き換え頻度が低いデータが格納されている物理ブロックであると判断される。そして、旧ブロックを書き換え頻度が低いデータが格納されている物理ブロックと見なすことができる場合には、新ブロックへのデータ転送が行われるが、旧ブロックを書き換え頻度が低いデータが格納されている物理ブロックと見なすことができない場合には、新ブロックへのデータ転送は行われない。従って、旧ブロックを書き換え頻度が低いデータが格納されている物理ブロックと見なすことがでない場合にだけ、同じ論理ブロックに割り当てられた旧ブロックと新ブロックが並存する。尚、書き換え頻度が低いデータが格納されている物理ブロックであると判断するときの基準については、優先順位に対して設定した閾値により適宜変更することができる。
【００８６】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００８７】
また、例えば、上述の実施の形態では、物理ブロック単位で使用ブロック管理及び空きブロック管理を行っていたが、論理ブロックに対して複数個の物理ブロックで構成された仮想ブロックを割り当てる場合には、これらの管理を仮想ブロック単位で行うようにしてもよい。つまり、それぞれの仮想ブロックを構成する物理ブロックが初期設定等により決められている場合には、同じ仮想ブロックに属する物理ブロックの消去回数は同じなる。また、論理ブロックへの割り当てとデータの消去が仮想ブロック単位で行われるため、使用ブロック管理及び空きブロッ管理も仮想ブロック単位で行うことができる。使用ブロック管理及び空きブロック管理を仮想ブロック単位で行う場合には、仮想ブロック単位で上述の優先順位を管理（つまり、優先順位リンク番号を仮想ブロックに付けた通し番号で管理）すればよい。
【００８８】
このように仮想ブロック単位で使用ブロック管理及び空きブロック管理が行われる場合、旧ブロックに対応する仮想ブロックの使用優先順位が、閾値より上位であるか否かが判断され、その判断に基づいて、旧ブロックに対応する仮想ブロックから新ブロックに対応する仮想ブロックへのデータ転送が行われるか否かが決まる。
【００８９】
尚、使用ブロック管理及び空きブロック管理の方法については、最上位空きブロック、最下位空きブロック及び最先ブロックを特定することができれば、上述の方法以外の方法であってもよい。
【符号の説明】
【００９０】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ、６…マイクロプロセッサ
【図１】
2010191782.tif 000003
【図２】
2010191782.tif 000004
【図３】
2010191782.tif 000005
【図４】
2010191782.tif 000006
【図５】
2010191782.tif 000007
【図６】
2010191782.tif 000008
【図７】
2010191782.tif 000009
【図８】
2010191782.tif 000010