(57)【要約】【課題】ユーザがウェアー・レベリング（ＷＬ）制御方式の設定を行う必要がなく、フラッシュメモリを構成する複数個の物理ブロック（ＰＢ）において消去回数の偏りが大きくなったときにだけ、書き換え頻度が低いデータが格納されているＰＢを含めたＷＬ制御が行われるようにする。【解決手段】ホストシステム側の論理アドレスが割り当てられている複数セクタの領域に対応する論理ブロック（ＬＢ）に割り当てられているＰＢのうちで最も先にＬＢに割り当てられたＰＢである最先ＰＢの消去回数と、有効なデータが格納されていないＰＢである空きＰＢのうちで消去回数が最小の空きＰＢの消去回数とが比較される。この比較において、空きＰＢの消去回数が最先ＰＢの消去回数よりも所定回数以上多い場合は、最先ＰＢに格納されているデータが別のＰＢに転送される。このデータ転送では、消去回数が最大の空きＰＢが転送先のＰＢとして割り当てられる。【選択図】図３
2010182268.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理手段と、
前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第１の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる
メモリコントローラ。
【請求項２】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理手段と、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第１の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる
メモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備えるフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第１の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる
フラッシュメモリの制御方法。
【請求項５】
ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第１の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる
フラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
例えば、特許文献１に開示されているように、フラッシュメモリを用いたメモリシステムでは、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数に偏りが生じないようにウェアー・レベリング（Wear-leveling）制御が行われている。このウェアー・レベリング制御には、大きくは２つの方式がある。
【０００３】
１つは、書き換えが行われないデータが記憶されている物理ブロックを放置しておき、それ以外の物理ブロックの消去回数又は書き換え回数が平均化されるように制御するウェアー・レベリング制御（ダイナミック・ウェアー・レベリング（Dynamic-wear-leveling）制御方式又はパッシブ・ウェアー・レベリング（Passive-wear-leveling）制御方式と呼ばれている制御方式であり、以下、ダイナミック・ウェアー・レベリングと言う）である。もう一つは、書き換えが行われないデータが記憶されている物理ブロックを含めて、全ての物理ブロックの消去回数又は書き換え回数が平均化されるように制御するウェアー・レベリング制御（スタティック・ウェアー・レベリング（Static-wear-leveling）制御方式又はアクティブ・ウェアー・レベリング（Active-wear-leveling）制御方式と呼ばれている制御方式であり、以下、スタティック・ウェアー・レベリングと言う）である。
【０００４】
ここで、書き換えが行わないデータが記憶されている物理ブロックが少ない場合は、ダイナミック・ウェアー・レベリング制御方式が適している。しかし、書き換えが行われないデータが記憶されている物理ブロックが多い場合は、スタティック・ウェアー・レベリング制御方式が適している。従って、特許文献１には、メモリシステムに記憶されるデータの書き換え頻度に応じて（つまり、書き換えが行われないデータが記憶されている物理ブロックが多いか少ないかに応じて）、ダイナミック・ウェアー・レベリング制御方式、スタティック・ウェアー・レベリング制御方式又はこれらを組み合わせたウェアー・レベリング制御方式のうちのいずれかのウェアー・レベリング制御を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１３３６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１では、ウェアー・レベリング制御方式の選択や条件設定を、ユーザが行うようになっている。しかしながら、メモリシステムに記憶されるデータの書き換え頻度に応じて、適切なウェアー・レベリング制御方式を選択することは、必ずしも容易でない。
【０００７】
そして、ウェアー・レベリング制御方式の選択が適切でなかった場合、スタティック・ウェアー・レベリング制御方式を選択しなかったために消去回数が極端に少ない物理ブロックがウェアー・レベリング制御の対象にならずに放置されることや、スタティック・ウェアー・レベリング制御方式を選択したために物理ブロック間で不必要なデータ転送が行われることがある。
【０００８】
そこで、本発明は、ユーザがウェアー・レベリング制御方式の設定を行う必要がなく、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数の偏りが大きくなったときにだけ、書き換え頻度が低いデータが格納されている物理ブロックを含めたウェアー・レベリング制御が行われるようにしたメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理手段と、
前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第１の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる。
【００１０】
本発明の第２の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成手段と、
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理手段と、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定手段と、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定手段と、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理手段と、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定手段と、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納手段と、
前記第１の空きブロック特定手段により特定された前記空きブロックの消去回数が前記最先ブロック特定手段により特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断手段と、
前記最先ブロック特定手段により特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定手段により特定された前記空きブロックに転送するデータ転送手段とを備え、
前記判断手段が否定的な判断をしたときに、前記ブロック管理手段は前記第１の空きブロック特定手段により特定された前記空きブロックを前記論理ブロックに割り当て、
前記判断手段が肯定的な判断をしたときに、前記データ転送手段は前記最先ブロックから前記空きブロックへのデータ転送を行い、前記ブロック管理手段は前記データ転送の転送元になった前記最先ブロックを前記論理ブロックに割り当てる。
【００１１】
本発明の第３の観点に従うメモリコントローラは、上記第１又は第２の観点に従うメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備える。
【００１２】
本発明の第４の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成するそれぞれの物理ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、フラッシュメモリを構成する物理ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
前記論理ブロックに割り当てられている物理ブロックのうちで最も先に前記論理ブロックに割り当てられた物理ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている物理ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第１の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる。
【００１３】
本発明の第５の観点に従う方法は、ホストシステムから与えられるアクセス指示に基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリを構成する物理ブロックを複数個集めた仮想ブロックを複数個形成する仮想ブロック形成ステップと
それぞれの前記仮想ブロックの消去回数を管理する消去回数管理ステップと、
有効なデータが格納されていない前記仮想ブロックである空きブロックのうちで消去回数が最小のものを特定する第１の空きブロック特定ステップと、
前記空きブロックのうちで消去回数が最大のものを特定する第２の空きブロック特定ステップと、
前記アクセス指示として与えられる論理アドレスが割り当てられているセクタ単位の領域を複数個集めた複数セクタの領域を論理ブロックとして管理し、前記仮想ブロックを前記論理ブロックに割り当てるブロック管理ステップと、
前記論理ブロックに割り当てられている前記仮想ブロックのうちで最も先に前記論理ブロックに割り当てられた前記仮想ブロックである最先ブロックを特定する最先ブロック特定ステップと、
前記アクセス指示に基づいてアクセス対象の領域が属する前記論理ブロックを特定し、特定した前記論理ブロックに割り当てられている前記仮想ブロックにホストシステムから与えられるデータを格納するデータ格納ステップと、
前記第１の空きブロック特定ステップにより特定された前記空きブロックの消去回数が前記最先ブロック特定ステップにより特定された前記最先ブロックの消去回数よりも所定回数以上多いか否かを判断する判断ステップと、
前記最先ブロック特定ステップにより特定された前記最先ブロックに格納されているデータを前記第２の空きブロック特定ステップにより特定された前記空きブロックに転送するデータ転送ステップとを備え、
前記判断ステップにより否定的な判断がなされたときに、前記ブロック管理ステップでは前記第１の空きブロック特定ステップにより特定された前記空きブロックが前記論理ブロックに割り当てられ、
前記判断ステップにより肯定的な判断がなされたときに、前記データ転送ステップにおける前記最先ブロックから前記空きブロックへのデータ転送が行われ、前記ブロック管理ステップでは前記データ転送の転送元になった前記最先ブロックが前記論理ブロックに割り当てられる。
【発明の効果】
【００１４】
本発明によれば、ホストシステム側の論理アドレスが割り当てられている複数セクタの領域に対応する論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックである最先ブロックの消去回数と、有効なデータが格納されていない物理ブロックである空きブロックのうちで消去回数が最小の空きブロックの消去回数とが比較される。この比較において、空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多い場合は、最先ブロックに格納されているデータが別の物理ブロックに転送される。このデータ転送では、消去回数が最大の空きブロックが転送先の物理ブロックとして割り当てられる。このデータ転送が行われることにより、フラッシュメモリを構成する複数個の物理ブロックにおいて消去回数の偏りが大きくなったときに、その偏りが抑制される。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係るフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】論理ブロックと物理ブロックの対応関係を示す図である。
【図３】使用ブロック管理を示す説明図である。
【図４】空きブロック管理を示す説明図である。
【図５】使用ブロック管理及び空きブロック管理に用いられるテーブルの構成を示す説明図である。
【発明を実施するための最良の形態】
【００１６】
図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００１７】
図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００１８】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（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）タイプのメモリセルで構成されているものとがある。ＭＬＣタイプのメモリセルで構成されたフラッシュメモリは、一般に、ＳＬＣタイプのメモリセルで構成されたフラッシュメモリに比べデータ保持期間が短く、そのデータ保持期間は、所定の消去回数を超えると顕著に短くなる。従って、ＭＬＣタイプのメモリセルで構成されたフラッシュメモリでは、保証消去回数に達していない物理ブロックであっても、所定の消去回数を超えると、その物理ブロックに格納されているデータの信頼性が低下する。
【００４３】
それぞれの論理ブロックに対応するデータは、その論理ブロックに割り当てられた物理ブロックに格納される。この論理ブロックと物理ブロックとの対応関係は、上述したアドレス変換テーブルによって管理されている。論理ブロックに割り当てる物理ブロックは、有効なデータが格納されていない物理ブロックを特定するためのテーブルである空きブロックテーブルを用いて特定される。
【００４４】
フラッシュメモリに格納されているデータを更新するときには、旧データが格納されている物理ブロックと同じ論理ブロックに有効なデータが格納されていない別の物理ブロックを新たに割り当て、その別の物理ブロックに新データが格納される。そして、全ての旧データが新データで置き換えられたとき、旧データが格納されている物理ブロックは、有効なデータが格納されていない物理ブロックになる。
【００４５】
つまり、いずれかの論理ブロックに対応するデータが格納されている物理ブロック内の全てのデータが別の物理ブロックに格納されているデータにより置き換えられたとき、その物理ブロックは有効なデータが格納されていない物理ブロックになる。尚、このような有効なデータが格納されていない物理ブロックの消去処理は、別の物理ブロックに格納されているデータにより全ての有効なデータが置き換えられたときに行っても（つまり、物理ブロックが、有効なデータが格納されていない物理ブロックになったときに行われても）、又は、その物理ブロックが論理ブロックに割り当てられる直前に行われてもよい。
【００４６】
フラッシュメモリに格納されているデータは、通常、更新される毎に格納先の物理ブロックが遷移していく。この格納先の物理ブロックの遷移は、更新頻度が高いデータに関しては多くなり、更新頻度が低いデータに関しては少なくなる。従って、格納されたデータの更新頻度の差異により、それぞれの物理ブロックの消去回数に偏りが生じる。この消去回数の偏りが過度に進行すると、消去回数が多い一部の物理ブロックが、他の物理ブロックよりも早く不良ブロックになったり、他の物理ブロックよりも早くデータ保持期間が著しく短くなったりして好ましいない。
【００４７】
このような問題を回避するため、本発明の一実施形態に係るメモリコントローラ３は、有効なデータが格納されていない物理ブロックのうちで消去回数が最小の物理ブロックの消去回数が、更新頻度が低いデータが格納されている物理ブロックの消去回数よりも所定回数以上多くなったときに、更新頻度が低いデータが格納されている物理ブロックに格納されているデータを別の物理ブロックする。このデータ転送では、有効なデータが格納されていない物理ブロックのうちで消去回数が最大の物理ブロックが転送先になる。次に、この処理を、図３及び図４を参照して説明する。
【００４８】
本実施の形態では、有効データが格納されている物理ブロックを対象とした優先順位管理と、有効データが格納されていない物理ブロックを対象とした優先順位管理が行われている。以下、有効データが格納されている物理ブロックを対象とした優先順位管理を「使用ブロック管理」と言い、有効データが格納されていない物理ブロックを対象とした優先順位管理を「空きブロック管理」と言う。
【００４９】
使用ブロック管理における優先順位管理を、図３を参照して説明する。この使用ブロック管理では、論理ブロックに割り当てられている物理ブロック、つまり、いずれかの論理ブロックと対応関係にある物理ブロックを対象にした優先順位管理が行われている。この優先順位管理では、論理ブロックに対して物理ブロックが新たに割り当てられたときに、新たに割り当てられた物理ブロックの優先順位が最上位になる優先順位の管理が行われている。従って、論理ブロックに対して先に割り当てられた物理ブロックの方が、優先順位が下位になる。そして、優先順位が最下位の物理ブロックは、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。メモリコントローラ３は、このような優先順位の管理を行うことにより、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックを特定することができる。
【００５０】
図３に示した例では、ＰＢＮ＃３６の物理ブロックの優先順位が最上位になっており、ＰＢＮ＃８５７の物理ブロックの優先順位が最下位になっている。従って、ＰＢＮ＃３６の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も後に論理ブロックに割り当てられた物理ブロックに対応し、ＰＢＮ＃８５７の物理ブロックは論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックに対応する。ここで、ＰＢＮ＃５２３の物理ブロックが論理ブロックに新たに割り当てられた場合、ＰＢＮ＃５２３の物理ブロックの優先順位が最上位になり、ＰＢＮ＃３６の物理ブロックの優先順位は２番目になる。また、ＰＢＮ＃２３４の物理ブロックが有効なデータが格納されていない物理ブロックになった場合、又はＰＢＮ＃２３４の物理ブロックに格納されているデータが消去された場合、ＰＢＮ＃２３４の物理ブロックがこの優先順位管理の対象から外される。つまり、ＰＢＮ＃９９５の物理ブロック、ＰＢＮ＃２３４の物理ブロック、ＰＢＮ＃６４５の物理ブロックという順番であった優先順位が、ＰＢＮ＃９９５の物理ブロック、ＰＢＮ＃６４５の物理ブロックという順番になる。
【００５１】
空きブロック管理における優先順位管理を、図４を参照して説明する。この空きブロック管理では、論理ブロックに対して割り当てることが可能な物理ブロックを対象にした優先順位管理が行われている。ここで、論理ブロックに対して割り当てることが可能な物理ブロックとは、不良ブロックではない物理ブロックであって、記憶データが消去されている物理ブロック又は有効なデータが格納されていない物理ブロックであることを意味する。尚、有効なデータが格納されていない物理ブロックについては、論理ブロックに割り当てられる前に記憶データが消去される。以下、論理ブロックに対して割り当てることが可能な物理ブロックを「空きブロック」と言う。つまり、「空きブロック」には、有効なデータが格納されていない物理ブロックであって、記憶データが消去されていない物理ブロックも含まれる。
【００５２】
この空きブロックを対象にした優先順位管理では、消去回数の少ない空きブロックの優先順位が高くなり、消去回数の多い空きブロックの優先順位が低くなるように優先順位が管理されている。つまり、消去回数の少ない方から多い方に向かって優先順位が下がっていくように優先順位が管理されている。従って、優先順位が最上位の空きブロックは、空きブロックのうちで消去回数が一番少ない空きブロックに対応し、優先順位が最下位の空きブロックは、空きブロックのうちで消去回数が一番多い空きブロックに対応する。
【００５３】
図４に示した例では、ＰＢＮ＃７５３の物理ブロックの優先順位が最上位になっており、ＰＢＮ＃３８の物理ブロックの優先順位が最下位になっている。従って、ＰＢＮ＃７５３の物理ブロックは空きブロックのうちで消去回数が最も少ない物理ブロックであり、ＰＢＮ＃３８の物理ブロックは空きブロックのうちで消去回数が最も多い物理ブロックである。
ここで、優先順位が最上位の空きブロックであるＰＢＮ＃７５３の物理ブロックの消去回数は１１７８回であり、優先順位が２番目の空きブロックであるＰＢＮ＃２２８の物理ブロックの消去回数は１１９３回であり、以下、優先順位が下がるにつれて消去回数が増加していく。そして、優先順位が最下位の空きブロックであるＰＢＮ＃３８の物理ブロックの消去回数は２５３６回になっている。
【００５４】
論理ブロックに対して割り当てられていた物理ブロックが空きブロックになった場合、その物理ブロックは、使用ブロック管理の対象から外され、空きブロック管理の対象に追加される。例えば、ＰＢＮ＃２３４の物理ブロックが空きブロックになったときは、ＰＢＮ＃２３４の物理ブロックが空きブロック管理の対象に追加される。ＰＢＮ＃２３４の物理ブロックの消去回数は１２２３回なので、ＰＢＮ＃２３４の物理ブロックの優先順位は、消去回数が１２０５回であるＰＢＮ＃４３１の物理ブロックと消去回数が１２５３回であるＰＢＮ＃７１２の物理ブロックの間に設定される。つまり、ＰＢＮ＃４３１の物理ブロック、ＰＢＮ＃７１２の物理ブロックという順番であった優先順位が、ＰＢＮ＃４３１の物理ブロック、ＰＢＮ＃２３４の物理ブロック、ＰＢＮ＃７１２の物理ブロックという順番になる。
【００５５】
次に、ホストシステム４からのアクセスに応答して、メモリコントローラ３が実行する処理について説明する。ホストシステム４から与えられるデータがフラッシュメモリ２に書き込まれる場合、メモリコントローラ３は、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域を判別し、更に、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータを書き込むことが可能か否かを判断する。その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックが無い場合、又は、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロックにホストシステム４から与えられるデータを書き込むための空き領域が無い場合、メモリコントローラ３は、その論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定する。
【００５６】
この物理ブロックを決定するため、メモリコントローラ３は、空きブロックのうちで消去回数が最も少ない物理ブロックと論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックとを特定する。つまり、メモリコントローラ３は、空きブロック管理における優先順位が最上位の物理ブロック（空きブロック）と使用ブロック管理における優先順位が最下位の物理ブロックと特定する。以下、空きブロック管理における優先順位が最上位の空きブロックを「最上位空きブロック」と言い、空きブロック管理における優先順位が最下位の空きブロックを「最下位空きブロック」と言い、使用ブロック管理における優先順位が最下位の物理ブロックを「最先ブロック」と言う。
【００５７】
メモリコントローラ３は、特定された最上位空きブロックの消去回数と最先ブロックの消去回数とを比較し、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多いか否かを判断する。この所定回数は、フラッシュメモリの仕様等に応じて適宜設定される。
【００５８】
この比較に基づいて否定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多くない場合、論理アクセス領域が含まれる論理ブロックに最上位空きブロックである物理ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム４から与えられるデータが格納される。
【００５９】
この比較に基づいて肯定的な判断がなされた場合、つまり、最上位空きブロックの消去回数が最先ブロックの消去回数よりも所定回数以上多い場合、メモリコントローラ３は、最下位空きブロックを特定し、その最下位空きブロックに、最先ブロックに格納されているデータを転送する。このデータ転送の終了後に、転送元の最先ブロックに格納されているデータが消去され（この際、転送元の最先ブロックの消去回数が１回増加する）、論理アクセス領域が含まれる論理ブロックに転送元の最先ブロックが割り当てられる。そして、論理アクセス領域が含まれる論理ブロックに割り当てられた物理ブロックにホストシステム４から与えられるデータが格納される。尚、このデータ転送の転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックと対応する物理ブロックになる。つまり、転送先の最下位空きブロックは、転送元の最先ブロックが割り当てられていた論理ブロックに新たに割り当てられる。
【００６０】
最先ブロックに格納されているデータは書き換え頻度が低い場合が多いため、このデータ転送が行われることにより、転送先の最下位空きブロックであった物理ブロックの消去回数の増加が抑制される。一方、転送元の最先ブロックであった物理ブロックには書き換え頻度が高いデータが格納される確率が高くなる。従って、このデータ転送が行われることにより、フラッシュメモリを構成する複数個の物理ブロックにおける消去回数の偏りが抑制される。
【００６１】
次に、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックが決定されるまでの処理を図３及び図４を参照して具体的に説明する。以下の説明では、上述の所定回数が１０００回であるものとして説明する。
【００６２】
メモリコントローラ３は、空きブロックのうちで消去回数が最も少ない物理ブロックである最上位空きブロックとしてＰＢＡ＃７５３の物理ブロックを特定し、論理ブロックに割り当てられている物理ブロックのうちで最も先に論理ブロックに割り当てられた物理ブロックである最先ブロックとしてＰＢＡ＃８５７の物理ブロックを特定する。ここで、ＰＢＡ＃７５３の物理ブロックの消去回数は１１７８回で、ＰＢＡ＃８５７の物理ブロックの消去回数は７５回なので、最上位空きブロックと最先ブロックの消去回数の比較では、１１７８回と７５回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも１０００回以上多いという肯定的な判断がなされる。
【００６３】
メモリコントローラ３は、最上位空きブロックと最先ブロックの消去回数の比較に基づいて肯定的な判断した後、その判断に基づいて空きブロックのうちで消去回数が最も多い物理ブロックである最下位空きブロックとしてＰＢＡ＃３８の物理ブロックを特定する。そして、特定された最下位空きブロックであるＰＢＡ＃３８の物理ブロックには、最先ブロックであるＰＢＡ＃８５７の物理ブロックに格納されているデータが転送される。このデータ転送の終了後に、ＰＢＡ＃８５７の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。つまり、ＰＢＡ＃８５７の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる物理ブロックとして決定される。
【００６４】
尚、ＰＢＡ＃８５７の物理ブロックが論理ブロックに割り当てられることにより、使用ブロック管理における優先順位が最上位の物理ブロックはＰＢＡ＃８５７の物理ブロックになり、使用ブロック管理における優先順位が最下位の物理ブロックはＰＢＡ＃９０１の物理ブロックになる。従って、メモリコントローラ３が、次に論理アクセス領域が含まれる論理ブロックに割り当てる物理ブロックを決定するときには、最上位空きブロックとしてＰＢＡ＃７５３の物理ブロックを特定し、最先ブロックとしてＰＢＡ＃９０１の物理ブロックを特定する。最上位空きブロックと最先ブロックの消去回数の比較では、ＰＢＡ＃７５３の物理ブロックの消去回数である１１７８回とＰＢＡ＃９０１の物理ブロックの消去回数である１０５回とが比較される。この比較に基づいて、最上位空きブロックの消去回数が最先ブロックの消去回数よりも１０００回以上多いという肯定的な判断がなされる。このため、ＰＢＡ＃９０１の物理ブロックに記憶されているデータが最下位空きブロック（ＰＢＡ＃５３２の物理ブロック）に転送された後、ＰＢＡ＃９０１の物理ブロックが、論理アクセス領域が含まれる論理ブロックに割り当てられる。
【００６５】
また、最先ブロックから最下位空きブロックへのデータ転送が行われた場合、転送先の最下位空きブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。例えば、最先ブロックであるＰＢＡ＃８５７の物理ブロックから最下位空きブロックであるＰＢＡ＃３８の物理ブロックへのデータ転送が行われた場合、ＰＢＡ＃３８の物理ブロックは空きブロック管理の対象から外され使用ブロック管理の対象に追加される。論理ブロックに物理ブロックが新たに割り当てられ、その物理ブロックにデータが格納されたことにより、その物理ブロックと同じ論理ブロックに割り当てられている別の物理ブロックが空きブロックになった場合、その別の物理ブロックは使用ブロック管理の対象から外され空きブロック管理の対象に追加される。
【００６６】
フラッシュメモリ２に格納されているデータの更新処理では、通常、更新される毎に格納先の物理ブロックが遷移していく。従って、書き換え頻度が高いデータが格納された物理ブロックは、使用ブロック管理の対象から空きブロック管理の対象に移行する傾向が強くなり、書き換え頻度が低いデータが格納された物理ブロックは、使用ブロック管理の対象として留まる傾向が強くなる。本実施形態では、このような傾向を考慮して、使用ブロック管理における優先順位が最下位の物理ブロックに格納されているデータが、書き換え頻度が低いデータとみなされる。また、消去回数の少ない物理ブロックが空きブロックになった場合、その空きブロックは論理ブロックに割り当てられる確率が高くなるので、消去回数の少ない物理ブロックに書き換え頻度が低いデータが格納される確率を低くすれば、消去回数の少ない物理ブロックの消去回数は増加する傾向が強くなる。従って、書き換え頻度が低いとみなされたデータが、消去回数の少ない物理ブロックに格納されることを避けるために、上述のデータ転送（最先ブロックから最下位空きブロックへのデータ転送）が行われる。
【００６７】
次に、フラッシュメモリ２を構成する物理ブロックの消去回数の管理並びに使用ブロック管理及び空きブロック管理における優先順位管理の方法を、図５に示した例を参照して説明する。図５に示したテーブルには、ＰＢＡの順番で各物理ブロックの優先順位リンク番号と消去回数が記載されている。２つ優先順位リンク番号は、その物理ブロックより優先順位が１つ上の物理ブロックのＰＢＡと、その物理ブロックより優先順位が１つ下の物理ブロックのＰＢＡに対応している。従って、論理ブロックに割り当てられている物理ブロックについては、使用ブロック管理における優先順位が、その物理ブロックよりも１つ上の物理ブロックのＰＢＡと１つ下の物理ブロックのＰＢＡとが、優先順位リンク番号として書き込まれる。空きブロックになった物理ブロックについては、空きブロック管理における優先順位が、その物理ブロックよりも１つ上の物理ブロックのＰＢＡと１つ下の物理ブロックのＰＢＡとが、優先順位リンク番号として書き込まれる。尚、優先順位が最上位の物理ブロックについては、その物理ブロックより優先順位が１つ上の物理ブロックのＰＢＡが書き込まれておらず、優先順位が最下位の物理ブロックについては、その物理ブロックより優先順位が１つ下の物理ブロックのＰＢＡが書き込まれていない。
【００６８】
このテーブルを参照することにより、例えば、ＰＢＡ＃０の物理ブロックの場合、その物理ブロックより優先順位が１つ上の物理ブロックはＰＢＡ＃１１８であり、その物理ブロックより優先順位が１つ下の物理ブロックはＰＢＡ＃５７２であることが分かる。
【００６９】
このテーブルには、使用ブロック管理及び空きブロック管理における優先順位が最上位の物理ブロックと最下位の物理ブロックのＰＢＡも記載されており、優先順位が最上位の物理ブロック又は最下位の物理ブロックが変わったときは変更される。
【００７０】
使用ブロック管理における優先順位管理の場合、論理ブロックに新たに物理ブロックが割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すＰＢＡが変更される。また、優先順位が最下位の物理ブロックである最先ブロックに記憶されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すＰＢＡが変更される。
【００７１】
空きブロック管理における優先順位管理の場合、優先順位が最上位の物理ブロックである最上位空きブロックよりも消去回数が少ない物理ブロックが空きブロックになったときや、最上位空きブロックが論理ブロックに割り当てられたときは、優先順位が最上位の物理ブロックが変わるので、そのときに優先順位が最上位の物理ブロックを示すＰＢＡが変更される。また、優先順位が最下位の物理ブロックである最下位空きブロックよりも消去回数が多い物理ブロックが空きブロックになったときや、最先ブロックに格納されているデータが最下位空きブロックに転送されたときは、優先順位が最下位の物理ブロックが変わるので、そのときに優先順位が最下位の物理ブロックを示すＰＢＡが変更される。
【００７２】
例えば、ＰＢＡ＃７５３の物理ブロックが論理ブロックに新たに割り当てられた場合、使用ブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが、＃３６から＃７５３に変更される。また、ＰＢＡが＃３６の物理ブロックの優先順位リンク番号として、優先順位が１つ上の物理ブロックを示すＰＢＡである＃７５３が記載される。ＰＢＡが＃７５３の物理ブロックの優先順位リンク番号として、優先順位が１つ下の物理ブロックを示すＰＢＡである＃３６が記載される。このように優先順位リンク番号が記載されることにより、ＰＢＡが＃７５３の物理ブロックが使用ブロック管理の対象になる。
【００７３】
最上位空きブロックであったＰＢＡ＃７５３の物理ブロックが論理ブロックに新たに割り当てられた場合、ＰＢＡ＃７５３の物理ブロックが空きブロック管理の対象から外される。このため、空きブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが変更される。最上位空きブロックであったＰＢＡ＃７５３の物理ブロックの優先順位リンク番号として記載されていた優先順位が１つ下の物理ブロックを示すＰＢＡが＃２２８であった場合、空きブロック管理における優先順位が最上位の物理ブロックを示すＰＢＡが＃７５３から＃２２８に変更される。そして、ＰＢＡ＃２２８の物理ブロックの優先順位リンク番号として記載されている優先順位が１つ上の物理ブロックを示すＰＢＡ（＃７５３）は消去される。また、このテーブルに記載されている消去回数は、それぞれの物理ブロックが空きブロック管理の対象に追加される毎に、追加された物理ブロックの消去回数が１ずつ増やされる。
【００７４】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００７５】
例えば、上述の実施の形態では、物理ブロック単位で使用ブロック管理及び空きブロッ管理を行っていたが、論理ブロックに対して複数個の物理ブロックで構成された仮想ブロックを割り当てる場合には、これらの管理を仮想ブロック単位で行うようにしてもよい。つまり、それぞれの仮想ブロックを構成する物理ブロックが初期設定等により決められている場合には、同じ仮想ブロックに属する物理ブロックの消去回数は同じなる。また、論理ブロックへの割り当てとデータの消去が仮想ブロック単位で行われるため、使用ブロック管理及び空きブロッ管理も仮想ブロック単位で行うことができる。使用ブロック管理及び空きブロック管理を仮想ブロック単位で行う場合には、仮想ブロック単位で上述の優先順位を管理（つまり、優先順位リンク番号を仮想ブロックに付けた通し番号で管理）すればよい。
【００７６】
尚、使用ブロック管理及び空きブロッ管理の方法については、最上位空きブロック、最下位空きブロック及び最先ブロックを特定することができれば、上述の方法以外の方法であってもよい。
【符号の説明】
【００７７】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ、６…マイクロプロセッサ
【図１】
2010182268.tif 000003
【図２】
2010182268.tif 000004
【図３】
2010182268.tif 000005
【図４】
2010182268.tif 000006
【図５】
2010182268.tif 000007