(57)【要約】【課題】フラッシュメモリの信頼性の高さに関わらず、不良となったブロックを早期に認識する。【解決手段】メモリコントローラは、論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てようになっている。メモリコントローラは、書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、それらのブロックの各々に書込み対象データを書き込み、それらのブロックから書込み対象データをそれぞれ読み出し、それぞれ読み出された複数の書込み対象データについてエラーの有無を判断する。メモリコントローラは、エラーを有する書込み対象データが見つかった場合、エラーを有する書込み対象データの物理ページを含んだ物理ブロックを不良ブロックとして管理する。【選択図】図３
2014026376.tif 000002
【特許請求の範囲】
【請求項１】
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第１の通信インタフェースデバイスと、
複数の物理ブロックで構成された１以上のフラッシュメモリであるフラッシュメモリ群に接続される第２の通信インタフェースデバイスと、
前記第１及び第２の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
（Ａ）前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
（Ｂ）前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
（Ｃ）前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
（Ｄ）前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
（Ｅ）エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
メモリコントローラ。
【請求項２】
前記制御デバイスは、更に、
（Ｘ）前記論理空間に割り当て可能な物理ブロックの量が所定値以下か否かを判断し、
（Ｙ）前記（Ｘ）の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも１つの副物理ブロックの割り当てを解除し、前記少なくとも１つの副物理ブロックからデータをブロック単位で消去する、
請求項１記載のメモリコントローラ。
【請求項３】
前記（Ｙ）において、割り当てが解除される副物理ブロックは、少なくとも１つの論理ブロックに割り当てられている少なくとも１つの副物理ブロックであり、
前記（Ｙ）において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記少なくとも１つの論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された物理ブロックを正物理ブロックとして割り当てる、
請求項２記載のメモリコントローラ。
【請求項４】
前記（Ｙ）において、割り当てが解除される副物理ブロックは、２以上の論理ブロックに割り当てられている２以上の副物理ブロックであり、
前記（Ｙ）において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記２以上の論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された２以上の物理ブロックのうちの１つを正物理ブロックとして割り当て、且つ、それら２以上の物理ブロックのうちの別の少なくとも１つの物理ブロックを副物理ブロックとして割り当てる、
請求項３記載のメモリコントローラ。
【請求項５】
前記制御デバイスは、前記（Ｘ）を、前記第１の通信インタフェースデバイスが前記書込みコマンドを受信した場合に行い、前記（Ｘ）の判断の結果が否定的の場合に、前記（Ａ）を行う、
請求項２乃至４のうちのいずれか１項に記載のメモリコントローラ。
【請求項６】
前記制御デバイスは、第１乃至第３の記憶領域を有しており、
前記制御デバイスは、前記（Ｂ）において、前記第３の記憶領域に前記書込み対象データを書込み、前記第３の記憶領域から前記第１及び第２の記憶領域にそれぞれ前記書込み対象データをコピーし、前記第１の記憶領域から前記正物理ブロックに前記書込み対象データを書込み、前記第２の記憶領域から前記副物理ブロックに前記書込み対象データを書込み、
前記制御デバイスは、前記（Ｃ）において、前記正物理ブロックから前記第１の記憶領域に前記書込み対象データを読み出し、前記副物理ブロックから前記第２の記憶領域に前記書込み対象データを読み出し、
前記制御デバイスは、前記（Ｄ）において、前記第１の記憶領域内の書込み対象データと前記第２の記憶領域内の書込み対象データとを比較し、それらが不一致の場合に、前記第１の記憶領域内の書込み対象データと前記第３の記憶領域内の書込み対象データとを比較し、且つ、前記第２の記憶領域内の書込み対象データと前記第３の記憶領域内の書込み対象データとを比較することで、前記第１及び第２の記憶領域のいずれの記憶領域内の書込み対象データがエラーを有するかを特定する、
請求項１乃至５のうちのいずれか１項に記載のメモリコントローラ。
【請求項７】
前記制御デバイスは、前記（Ｂ）において、前記正物理ブロック及び前記副物理ブロックのそれぞれに対して、前記書込み対象データと当該データのＥＣＣ（Error-Correcting Code）とのセットを書込み、
前記制御デバイスは、前記（Ｄ）において、前記正物理ブロック及び前記副物理ブロックからそれぞれ読み出された２つの書込み対象データを比較し、それらが不一致の場合に、それぞれの書込み対象データについて、当該データのＥＣＣを用いてエラーの有無を判断する、
請求項１乃至５のうちのいずれか１項に記載のメモリコントローラ。
【請求項８】
請求項１乃至７のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続され複数の物理ブロックで構成された１以上のフラッシュメモリであるフラッシュメモリ群と
を有するフラッシュメモリシステム。
【請求項９】
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに対する論理空間における論理ブロックに、１以上のフラッシュメモリから複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、不良の物理ブロックである不良ブロックを前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックを含んだ論理ブロックに割り当て無いようになっているフラッシュメモリシステムで行われる記憶制御方法であって、
前記ホストシステムから書込みコマンドを受信し、
前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリの制御に関する。
【背景技術】
【０００２】
フラッシュメモリの出荷前に、一般に、出荷検査が行われる。出荷検査では、フラッシュメモリにおける各ブロックが不良かどうかが検査され、不良であると認定されたブロックは、不良ブロックとして管理される。
【０００３】
出荷検査において良品ブロックと認定されたブロックであっても、消去回数が上限値に達する前に不良となることもある。すなわち、出荷検査済みのフラッシュメモリに潜在的な不良ブロックが存在していることもある。
【０００４】
フラッシュメモリとメモリコントローラを搭載したモジュール（フラッシュメモリシステム）を生産する際に、一般に、潜在的な不良ブロックをあらかじめ不良ブロック化するように、フラッシュメモリをモジュールに組み込んだ状態で一回以上フラッシュメモリの全ブロックに対して書込み及び読出しを行うことによりエージングを施すことが行われている。
【０００５】
しかし、この方法だと、エージング時に潜在的な不良ブロックが不良にならなくても、出荷後に、ホストから潜在的な不良ブロックに対する１回目の書き込みで、その潜在的な不良ブロックが不良になる可能性がある。このため、上記方法は、根本的なスクリーニング法とはなりにくい。
【０００６】
また、ホストはメモリコントローラを通じて正常にデータを書き込んだつもりであるにもかかわらず、実際にはデータが正常に書き込まれておらず、且つ、フラッシュメモリからメモリコントローラにエラーを返さないというフラッシュメモリの不良の場合、メモリコントローラがその不良を認識することさえできないので、ブロックの不良化が行えない。このため、モジュール全体として動作不良を起こしデータを喪失する可能性がある。
【０００７】
そこで、特許文献１に開示の技術、すなわち、書き込み対象のデータを二重化してフラッシュメモリに書き込む技術を利用することが考えられる。
【０００８】
この技術によれば、信頼性は低いが高容量且つ低価格のフラッシュメモリにデータを書き込む際に、信頼性は高いが小容量且つ高価格のフラッシュメモリにも同時に書くことにより、信頼性が低いが高容量且つ低価格のフラッシュメモリに書き込みエラーが起こった場合でも、データの損失を防ぐことができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−１９８２５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、現実には信頼性が高いと言われている小容量且つ高価格のフラッシュメモリにも前述のような不具合（例えば、エラーが発生してもフラッシュメモリからメモリコントローラにエラーを返さないという不具合）があり、信頼性が高いからといって必ずしも不具合が発生しないとは言えない。
【００１１】
本発明の目的は、フラッシュメモリの信頼性の高さに関わらず、動作不良となりうるブロックを早期に認識することにある。
【課題を解決するための手段】
【００１２】
第１の観点に従うメモリコントローラは、
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第１の通信インタフェースデバイスと、
複数の物理ブロックで構成された１以上のフラッシュメモリであるフラッシュメモリ群に接続される第２の通信インタフェースデバイスと、
前記第１及び第２の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
（Ａ）前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
（Ｂ）前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
（Ｃ）前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
（Ｄ）前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
（Ｅ）エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
【００１３】
第２の観点に従うメモリコントローラでは、第１の観点において、前記制御デバイスは、更に、
（Ｘ）前記論理空間に割り当て可能な物理ブロックの量が所定値以下か否かを判断し、
（Ｙ）前記（Ｘ）の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも１つの副物理ブロックの割り当てを解除し前記少なくとも１つの副物理ブロックからブロック単位でデータを消去する。
【００１４】
第３の観点に従うメモリコントローラでは、第２の観点の前記（Ｙ）において、割り当てが解除される副物理ブロックは、少なくとも１つの論理ブロックに割り当てられている少なくとも１つの副物理ブロックである。第２の観点の前記（Ｙ）において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記少なくとも１つの論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された物理ブロックを正物理ブロックとして割り当てる。
【００１５】
第４の観点に従うメモリコントローラでは、第３の観点の前記（Ｙ）において、割り当てが解除される副物理ブロックは、２以上の論理ブロックに割り当てられている２以上の副物理ブロックである。第３の観点の前記（Ｙ）において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記２以上の論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された２以上の物理ブロックのうちの１つを正物理ブロックとして割り当て、且つ、それら２以上の物理ブロックのうちの別の少なくとも１つの物理ブロックを副物理ブロックとして割り当てる。
【００１６】
第５の観点に従うメモリコントローラでは、第２乃至第４のうちのいずれか１つの観点において、前記制御デバイスは、前記（Ｘ）を、前記第１の通信インタフェースデバイスが前記書込みコマンドを受信した場合に行い、前記（Ｘ）の判断の結果が否定的の場合に、前記（Ａ）を行う。
【００１７】
第６の観点に従うメモリコントローラでは、第１乃至第５のうちのいずれか１つの観点において、前記制御デバイスは、第１乃至第３の記憶領域を有している。前記制御デバイスは、前記（Ｂ）において、前記第３の記憶領域に前記書込み対象データを書込み、前記第３の記憶領域から前記第１及び第２の記憶領域にそれぞれ前記書込み対象データをコピーし、前記第１の記憶領域から前記正物理ブロックに前記書込み対象データを書込み、前記第２の記憶領域から前記副物理ブロックに前記書込み対象データを書込む。前記制御デバイスは、前記（Ｃ）において、前記正物理ブロックから前記第１の記憶領域に前記書込み対象データを読み出し、前記副物理ブロックから前記第２の記憶領域に前記書込み対象データを読み出す。前記制御デバイスは、前記（Ｄ）において、前記第１の記憶領域内の書込み対象データと前記第２の記憶領域内の書込み対象データとを比較し、それらが不一致の場合に、前記第１の記憶領域内の書込み対象データと前記第３の記憶領域内の書込み対象データとを比較し、且つ、前記第２の記憶領域内の書込み対象データと前記第３の記憶領域内の書込み対象データとを比較することで、前記第１及び第２の記憶領域のいずれの記憶領域内の書込み対象データがエラーを有するかを特定する。
【００１８】
第７の観点に従うメモリコントローラでは、第１乃至第５のうちのいずれか１つの観点において、前記制御デバイスは、前記（Ｂ）において、前記正物理ブロック及び前記副物理ブロックのそれぞれに対して、前記書込み対象データと当該データのＥＣＣ（Error-Correcting Code）とのセットを書込む。前記制御デバイスは、前記（Ｄ）において、前記正物理ブロック及び前記副物理ブロックからそれぞれ読み出された２つの書込み対象データを比較し、それらが不一致の場合に、それぞれの書込み対象データについて、当該データのＥＣＣを用いてエラーの有無を判断する。
【００１９】
第８の観点に従うフラッシュメモリシステムは、第１乃至７の観点のうちのいずれか１つの観点に従うメモリコントローラと、前記メモリコントローラに接続され複数の物理ブロックで構成された１以上のフラッシュメモリであるフラッシュメモリ群とを有する。
【００２０】
第９の観点に従う記憶制御方法は、書込み先アドレスを指定した書込みコマンドを送信するホストシステムに対する論理空間における論理ブロックに、１以上のフラッシュメモリの複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっているフラッシュメモリシステムで行われる記憶制御方法であって、
前記ホストシステムから書込みコマンドを受信し、
前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
【発明の効果】
【００２１】
書込み対象データが複数の物理ブロックにそれぞれ書き込まれ、その後、それら複数の物理ブロックからそれぞれ書込み対象データが読み出され、読み出された複数の書込み対象データについてエラーの有無が判断され、エラーを有する書込み対象データが見つかった場合、エラーを有する書込み対象データの物理ブロックが不良ブロックとして管理される。これにより、フラッシュメモリの信頼性の高さに関わらず、不良となった物理ブロックを早期に認識することができる。
【００２２】
また、不良ブロックを認識するだけでなく、書き込もうとしたデータも正しく保全することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、実施例１に係るフラッシュメモリ（ＦＭ）システムの構成例を示す。
【図２】図２は、ホストシステムが認識する論理アドレス空間とメモリセルアレイ内の物理アドレス空間との間の対応関係の一例を示す。
【図３】図３は、実施例１に係るＦＭシステムで行われる処理の概要を示す。
【図４】図４は、実施例１に係るＦＭシステムで行われる処理の流れを示す。
【図５】図５は、実施例１に係る、論理ページと物理ページの対応関係の遷移、の一例を示す。
【図６】図６は、実施例２に係るＦＭシステムで行われる処理の概要を示す。
【図７】図７は、実施例２に係るＦＭシステムで行われる処理の流れを示す。
【図８】図８は、実施例３に係る、論理ページと物理ページの対応関係の遷移、の一例の一部を示す。
【図９】図９は、実施例３に係る、論理ページと物理ページの対応関係の遷移、の一例の残りを示す。
【図１０】図１０は、ページペアからのデータ読み出しについての一変形例を示す。
【発明を実施するための形態】
【００２４】
以下、幾つかの実施例を説明する。なお、図面では、フラッシュメモリを「ＦＭ」と略記し、論理ブロックを「ＬＢ」と略記し、論理ページを「ＬＰ」と略記し、物理ブロックを「ＰＢ」と略記し、物理ページを「ＰＰ」と略記することがある。
【実施例１】
【００２５】
図１は、実施例１に係るＦＭシステムの構成例を示す。
【００２６】
ＦＭシステム１００は、ホストシステム２００からアクセス可能に接続される。ＦＭシステム１００は、メモリコントローラ１０２と、ＦＭ群１０５とを有する。ＦＭ群１０５は、１以上のＦＭ１０４である。メモリコントローラ１０２は、ホストシステム２００からＦＭ１０４へのアクセスを制御する。
【００２７】
ＦＭ１０４は、不揮発性のメモリセルアレイ１３４と、レジスタ（以下、ＦＭレジスタ）１３２とを有する。ＦＭレジスタ１３２は、メモリコントローラ１０２とメモリセルアレイ１３４との間で入出力されるデータを一時的に記憶するためのものである。
【００２８】
メモリセルアレイ１３４は、例えば、ＮＡＮＤ型である。メモリセルアレイ１３４は、少なくとも１つのＦＭチップで構成されており、複数の物理ブロックを有する。各物理ブロックは、複数の物理ページを有する。ここで、ＮＡＮＤ型のメモリセルアレイ１３４においては、データの書き込み／読み出しの単位（データの書き込み/読み出しの時に一度に入出力され得る記憶領域）は、ページ（物理ページ）単位であり、データの消去の単位は、ブロック（物理ブロック）単位である。この実施例では、ＦＭレジスタ１３２の記憶容量は、上述した書き込み/読み出しの単位である1個の物理ページ分の記憶容量に等しく設定されている。
【００２９】
図２は、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を例示している。図２の右側の部分に、メモリセルアレイ１３４内の多数の物理ページ（１個の物理ブロックの部分のみを抜粋）が例示されている。この右側部分に示されるように、各物理ページは、複数個（典型的には２のべき乗数に相当する個数）の物理セクタを有し、本実施例では例えば８個の物理セクタを有する。物理セクタは１セクタ（５１２バイト）のデータが記憶される領域であり、各物理セクタには１個の付加情報領域が割り当てられている。また、各物理ページは、１個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの1個の論理ページ（図２の左側に示す論理アドレス空間中で、＃０、＃１、＃２、…という各論理ページ番号（ＬＰＮ）が付与された記憶領域）が、メモリコントローラ１０２によって関連づけられ得る。このように各物理ページに１個の論理ページが関係付けられてもよいし、後に説明するように１個の論理ページに対して複数個の物理ページが関連付けられてもよい。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号（ＥＣＣ）は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報（例えば、論理ページ番号（ＬＰＮ））及びその他の管理及び／又は制御用の情報が格納される。
【００３０】
再び図１を参照する。ＦＭレジスタ１３２は、上述した１個の物理ページの構成に適合した構成を有する。すなわち、ＦＭレジスタ１３２は、１個の物理ページ内の８個の物理セクタと８個の付加情報領域にそれぞれ格納されるユーザデータとＥＣＣをそれぞれ保持するための８個のセクタ領域と８個のＥＣＣ領域のセットを有する。
【００３１】
さて、上述したように、ＮＡＮＤ型のＦＭ１０４では、データの書き込みと読み出しは物理ページを単位として行われる。ＦＭ１０４にデータが書き込まれる場合には、まず、メモリコントローラ１０２からＦＭ１０４内のＦＭレジスタ１３２に、書き込み先の１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が書き込まれ、その後に、ＦＭレジスタ１３２からメモリセルアレイ１３４内の書き込み先の物理ページにそのデータが書き込まれる。逆に、ＦＭ１０４からデータが読み出される場合には、まず、メモリセルアレイ１３４内の読み出し元の物理ページからＦＭレジスタ１３２へその１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が読み出され、その後に、ＦＭレジスタ１３２からメモリコントローラ１０２へそのデータが読み出される。
【００３２】
メモリコントローラ１０２は、ホストＩ／Ｆ５０と、ＦＭ  Ｉ／Ｆ６０と、レジスタ群１１３と、バッファ群１１５と、メモリ１１０と、マイクロプロセッサ（以下、ＭＰ）１１２とを有する。
【００３３】
ホストＩ／Ｆ５０は、ホストシステム２００に接続される通信インタフェースデバイスである。ホストＩ／Ｆ５０が、ホストシステム２００からコマンド（例えば書込みコマンド及び読出しコマンド）を受信する。
【００３４】
ＦＭ  Ｉ／Ｆ６０は、ＦＭ群１０５（１以上のＦＭ１０４）に接続される通信インタフェースデバイスである。ＦＭ  Ｉ／Ｆ６０を通じて、書込み対象データがＦＭ１０４に書き込まれたり、ＦＭ１０４から読み出されたデータが受信されバッファに格納されたりする。
【００３５】
レジスタ群１１３は、１以上のレジスタである。レジスタ群１１３におけるレジスタとしては、例えば、ホストシステム２００からのコマンド（例えば書き込みコマンド及び読出しコマンド）で指定されているＬＢＡが設定されるＬＢＡレジスタ、ホストシステム２００からのコマンドが書き込まれるコマンドレジスタ、及び、ホストシステム２００にとっての書き込み対象又は読み出し対象のデータ（ユーザデータ）が書き込まれるデータレジスタがある。
【００３６】
バッファ群１１５は、１以上のバッファである。バッファ群１１５におけるバッファの一例は後述する。
【００３７】
メモリ１１０は、ＦＭ１０４の制御又は管理のための情報を記憶する。例えば、その情報は、ＦＭ１０４毎の管理テーブルを含む。管理テーブルは、そのテーブルに対応するＦＭ１０４について、どの物理領域（例えば物理ブロック或いは物理ページ）がどの論理領域（例えば論理ブロック或いは論理ページ）に割り当たっているかを表す情報と、物理ページの属性（例えば、正物理ページか副物理ページか）を表す情報と、どの物理ブロックが不良ブロックであるかを表す情報とを含んでよい。また、メモリ１１０は、ＭＰ１１２で実行されるコンピュータプログラム（例えばファームウェア）を記憶してよい。
【００３８】
制御デバイスの一例であるＭＰ１１２は、メモリコントローラ１０２の動作を制御する。ＭＰ１１２が行う処理の一例は、後に説明する。
【００３９】
以下では、新しい書き込み要求を受信したときにメモリコントローラ１０２のＭＰ１１２が行なう制御について、より詳細に説明する。この説明に当たり、まず、図２を参照して、本実施例における、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を説明する。
【００４０】
図２の左側には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたＬＢＡによって識別される。そして、複数個（本実施例では８個）の論理セクタが集合して、１個の論理ページを構成する。さらに、複数個（本実施例では６４個）の論理ページが集合して、１個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたＬＢＮ（論理ブロック番号）によって識別される。また、各論理ブロック内では、複数個（例えば６４個）の論理ページが、各論理ページに付与された論理ページ番号（ＬＰＮ）によって識別される。
【００４１】
図２の右側には、メモリセルアレイ１３４内の物理アドレス空間が（１個の物理ブロックの部分のみ抜粋して）示されている。物理アドレス空間では、複数個（本実施例では６４個）の物理ページが集合して、１個の物理ブロックを構成する。図２では図示省略されているが、メモリセルアレイ１３４内には複数個（論理ブロックの総数より多い）の物理ブロックが存在し、それらの物理ブロックは、各物理ブックに付与された物理ブロックアドレス（ＰＢＡ）により識別される。そして、各物理ブロック内では、複数個（例えば６４個）の物理ページが、各物理ページに付与された物理ページ番号（ＰＰＮ）によって識別される。各物理ページは、既に説明したように、複数個（本実施例では８個）の物理セクタで構成され、更に、物理セクタに関連付けられた８個の付加情報領域と１個のページ情報領域とを有する。
【００４２】
図２に示されるように、メモリセル１３４内の各物理ブロック（例えば、ＰＢＡ＃０の論理ブロック）に対して、いずれか１個の論理ブロック（例えば、ＬＢＮ＃０の論理ブロック）が、メモリコントローラ１０２のＭＰ１１２によって関係付けられる。そして、各物理ブロック６４内の各物理ページ（例えば、ＰＰＮ＃７〜ＰＰＮ＃１２の各物理ページ）に対して、その物理ブロックに関係付けられた論理ブロック中いずれか１個の論理ページ（例えば、ＬＰＮ＃０〜ＬＰＮ＃５の各論理ページ）が、ＭＰ１１２によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報（例えば、ＬＰＮ）が記述される。
【００４３】
ところで、メモリセル１３４内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム２００からの書き込み要求に対応して、論理ページに対して１個の物理ページ（どの論理ページとも関連付けられていない物理ページ）が関連付けられ、その物理ページに対するデータ書き込みが行われる。
【００４４】
以下、実施例１に係るＦＭ群１０５が、２つのＦＭであるとして、本実施例の説明を続ける。なお、以下の説明では、同種の要素には同一の親番号を付し、同種の要素を、区別しないで説明する際には、参照符号のうちの親番号のみを用いて説明し、区別して説明する際には、親番号と子符号から成る参照符号を用いて説明することとする。
【００４５】
図３は、実施例１に係るＦＭシステムで行われる処理の概要を示す。図４は、実施例１に係るＦＭシステムで行われる処理の流れを示す。
【００４６】
ＦＭシステム１００は、第１のＦＭ１０４Ａと第２のＦＭ１０４Ｂとを有する。各ＦＭ１０４は、前述したように、複数の物理ブロックから成るメモリセルアレイ１３４と、メモリセルアレイにページ単位で書きこまれるデータが格納されるレジスタ（ＦＭレジスタ）１３２とを有する。
【００４７】
ＦＭコントローラ１０２において、レジスタ群１１３に含まれる１つのレジスタとして、ホストシステム２００からの書込み対象データが書き込まれるデータレジスタ１１１がある。バッファ群１１５に含まれているバッファとして、第１のＦＭ１０４Ａに対応した第１のバッファ１２０Ａと、第２のＦＭ１０４Ｂに対応した第２のバッファ１２０Ｂと、ＦＭ１０４Ａ及び１０４Ｂに共通のバッファ１２０Ｃとがある。
【００４８】
メモリ１１０が、第１のＦＭ１０４Ａにおける物理領域に関する情報を有する第１の管理テーブル１４４Ａと、第２のＦＭ１０４Ｂにおける物理領域に関する情報を有する第２の管理テーブル１４４Ｂとを記憶する。管理の形式は、テーブルに限られないで良い。
【００４９】
ＦＭコントローラ１０２（ＭＰ１１２）は、ホストシステム２００に論理空間（論理的な記憶空間）を提供するが、論理空間は、複数の論理ブロックで構成されている。ＦＭコントローラ１０２（ＭＰ１１２）は、論理ブロックに対して、原則、ＦＭ群１０５における２以上の物理ブロックを割り当てるようになっている。具体的には、例えば、論理ブロックに対して、１つの正物理ブロックと、１つの副物理ブロックとが割り当てられる。１つの論理ブロックに割り当てられる正物理ブロックと副物理ブロックは、異なるＦＭ１０４Ａ及び１０４Ｂに存在する。正物理ブロックと副物理ブロックは、それぞれ、ＦＭ１０４及び１０４Ｂのうちの決まった方から割り当てられても良いし、任意のＦＭ１０４から割り当てられても良い。具体的には、例えば、或る論理ブロックに対しては、正物理ブロックが第１のＦＭ１０４Ａから割り当てられ、副物理ブロックが第２のＦＭ１０４Ｂから割り当てられ、別の論理ブロックに対しては、正物理ブロックが第２のＦＭ１０４Ｂから割り当てられ、副物理ブロックが第１のＦＭ１０４Ａから割り当てられても良い。
【００５０】
本実施例では、１つの論理ブロックに割り当てられる副物理ブロックは１つであるが、１つの論理ブロックに複数の副物理ブロックが割り当てられても良い。
【００５１】
各管理テーブル１４４は、物理ブロックと論理ブロックとの対応関係（どの物理ブロックがどの論理ブロックに正物理ブロック又は副物理ブロックとして割り当てられているか）を含んで良い。また、各管理テーブル１４４は、論理ブロック毎のステータス（物理ブロックが未割当てか否か）、物理ブロック毎のステータス（論理ブロックに割当て済みか、空き（割り当て可能）か、不良ブロックか否か）を含んで良い。ＦＭコントローラ１０２（ＭＰ１１２）は、管理テーブル１４４Ａを参照することにより、ＦＭ１０４Ａに空きの物理ブロックが枯渇しているか否か（空きの物理ブロックの量（例えば、数、又は、全物理ブロック数に対する空き物理ブロックの割合）が所定値以下か否か）を判断することができる。
【００５２】
以下、図３及び図４を参照して、実施例１で行われる処理を説明する。
【００５３】
ＦＭコントローラ１０２がホストシステム２００から書込み先アドレス（例えばＬＢＡ（Logical Block Address））を指定した書込みコマンドを受信した場合、その書込みコマンドに従う書込み対象データが、データレジスタ１１１に書き込まれる（Ｓ１１）。データレジスタ１１１に書き込まれたデータは、共通バッファ１２０Ｃに格納される（Ｓ１２）。
【００５４】
共通バッファ１２０Ｃがデータで一杯になった場合（又は、ホストシステム２００から書込み指示があった場合）、ＦＭコントローラ１０２（ＭＰ１１２）は、管理テーブル１４４Ａ及び１４４Ｂをそれぞれ参照することにより、ＦＭ１０４Ａ及び１０４Ｂのそれぞれについて、空きの物理ブロックが枯渇しているか否かを判断する（Ｓ１３）。具体的には、例えば、ＦＭコントローラ１０２（ＭＰ１１２）は、書込み先アドレスが属する論理ブロック（書込み先論理ブロック）に物理ブロックが未割当ての場合、その論理ブロックに正副の物理ブロックとして割り当て可能な２個の物理ブロックが無いか否かを判断する。
【００５５】
Ｓ１２の判断の結果が否定的の場合（Ｓ１３：Ｎｏ）、ＦＭコントローラ１０２（ＭＰ１１２）は、書込み先論理ブロックに割り当てられている正物理ブロック及び副物理ブロックにそれぞれ共通バッファ１２０Ｃ内の書込み対象データを書き込む（Ｓ１４）。具体的には、例えば、ＦＭコントローラ１０２（ＭＰ１１２）は、
（＊）管理テーブル１４４Ａ及び１４４Ｂを用いて、書込み先論理ブロックにＦＭ１０４Ａ（又は１０４Ｂ）から正物理ブロックを割り当てＦＭ１０４Ｂ（又は１０４Ａ）から副物理ブロックを割り当てる（既に書込み先論理ブロックに正副の物理ブロックが割当て済みであればこの処理はスキップされて良い）、
（＊）共通バッファ１２０Ｃ内の書込み対象データをバッファ１２０Ａ及び１２０Ｂにそれぞれコピーする、
（＊）第１バッファ１２０Ａ内の書込み対象データとそのＥＣＣを書込み先論理ブロックに割り当てられている正物理ブロックにおける書込み先の正物理ページ（書込み先アドレスが属する領域を含んだ論理ページに対応する物理ページ）に書き込むよう第１のＦＭ１０４Ａに指示を出し、且つ、第２バッファ１２０Ｂ内の書込み対象データとそのＥＣＣを書込み先論理ブロックに割り当てられている副物理ブロックにおける書込み先の副物理ページに書き込むよう第２のＦＭ１０４Ｂに指示を出す、
を行う。これにより、バッファ１２０Ａ及び１２０ＢからＦＭレジスタ１３２Ａ及び１３２Ｂにそれぞれ書込み対象データ及びそのＥＣＣが書き込まれ、ＦＭレジスタ１３２Ａ及び１３２Ｂから書込み先の正副の物理ページにそれぞれ書込み対象データ及びそのＥＣＣが書き込まれる。すなわち、異なるＦＭ１０４Ａ及び１０４Ｂの正物理ブロック及び副物理ブロックに同じ書込み対象データが書き込まれることになる、つまり、書込み対象データの冗長化が行われる。
【００５６】
書込みが完了した場合、ＦＭコントローラ１０２（ＭＰ１１２）は、書込み先の正副の物理ページから書込み対象データ及びそのＥＣＣを読み出し書込み対象データを第１及び第２バッファ１２０Ａ及び１２０Ｂにそれぞれ書き込む（Ｓ１５）。この時点では、共通バッファ１２０Ｃには、Ｓ１４で書き込まれた書込み対象データが記憶されている。物理ページから読み出されたデータは、一旦、ＦＭレジスタ１３２に書き込まれ、ＦＭレジスタ１３２からＦＭ  Ｉ／Ｆ６０を通じてバッファ１２０Ａ又は１２０Ｂに書き込まれる。
【００５７】
ＦＭコントローラ１０２（ＭＰ１１２）は、第１及び第２バッファ１２０Ａ及び１２０Ｂにおける書込み対象データのエラーの有無を判断するエラーチェック処理を行う（Ｓ１６）。エラーチェック処理では、次の（Ｅ１）乃至（Ｅ４）のうちのいずれが行われても良い。
（Ｅ１）ＦＭコントローラ１０２（ＭＰ１１２）は、第１及び第２バッファ１２０Ａ及び１２０Ｂにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、ＦＭコントローラ１０２（ＭＰ１１２）は、第１バッファ１２０Ａ及び共通バッファ１２０Ｃにおける書込み対象データ同士を比較し、且つ、第２バッファ１２０Ｂ及び共通バッファ１２０Ｃにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ１２０Ａ又は１２０Ｂ内のデータにエラーが有ると判断される。
（Ｅ２）ＦＭコントローラ１０２（ＭＰ１１２）は、第１及び第２バッファ１２０Ａ及び１２０Ｂにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、ＦＭコントローラ１０２（ＭＰ１１２）は、第１バッファ１２０Ａ内の書込み対象データのエラーの有無を当該データのＥＣＣを用いて判断し、且つ、第２バッファ１２０Ｂ内の書込み対象データのエラーの有無を当該データのＥＣＣを用いて判断する。
（Ｅ３）ＦＭコントローラ１０２（ＭＰ１１２）は、第１バッファ１２０Ａ及び共通バッファ１２０Ｃにおける書込み対象データ同士を比較し、且つ、第２バッファ１２０Ｂ及び共通バッファ１２０Ｃにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ１２０Ａ又は１２０Ｂ内のデータにエラーが有ると判断される。
（Ｅ４）ＦＭコントローラ１０２（ＭＰ１１２）は、第１バッファ１２０Ａ内の書込み対象データのエラーの有無を当該データのＥＣＣを用いて判断し、且つ、第２バッファ１２０Ｂ内の書込み対象データのエラーの有無を当該データのＥＣＣを用いて判断する。
【００５８】
上記（Ｅ１）乃至（Ｅ４）のうち、（Ｅ１）及び（Ｅ２）が、（Ｅ３）及び（Ｅ４）よりも望ましいと考えられる。なぜなら、（Ｅ３）では、必ず２回の比較（第１バッファ１２０Ａ及び共通バッファ１２０Ｃにおける書込み対象データ同士の比較と、第２バッファ１２０Ｂ及び共通バッファ１２０Ｃにおける書込み対象データ同士の比較）が行われるが、（Ｅ１）及び（Ｅ２）では、一致が得られれば１回の比較で済むからである。また、（Ｅ４）では、ＥＣＣを用いたチェックのみであるが、（Ｅ１）及び（Ｅ２）では、二つの物理ページから読み出された２つのデータ同士の比較が行われるので、信頼性はより高いことが期待されるからである。
【００５９】
エラーチェック処理においてエラーが無いと判断された場合（Ｓ１７：Ｎｏ）、処理が終了する。
【００６０】
エラーチェック処理においてエラーが有ると判断された場合（Ｓ１７：Ｙｅｓ）、ＦＭコントローラ１０２（ＭＰ１１２）は、エラーの有る書込み対象データの読出し元の物理ページを含んだ物理ブロックを不良ブロックとして管理する（Ｓ１８）。具体的には、例えば、ＦＭコントローラ１０２（ＭＰ１１２）は、不良ブロックとされる物理ブロックを含むＦＭ１０４に対応した管理テーブル１４４における、不良ブロックとされる物理ブロックのステータスを、良品ブロックから不良ブロックに変える。
【００６１】
そして、ＦＭコントローラ１０２（ＭＰ１１２）は、Ｓ１８で不良ブロックとされた物理ブロックを含むＦＭ１０４に対応した管理テーブル１４４を基に、そのＦＭ１０４から空き物理ブロックを確保する（Ｓ１９）。その際、ＦＭコントローラ１０２（ＭＰ１１２）は、不良化したブロックの一部の物理ページが既に使われていた場合は、そのデータを新しく確保した物理ブロックにコピーする。
【００６２】
ＦＭコントローラ１０２（ＭＰ１１２）は、Ｓ１９で確保した物理ブロックに、エラーの無い書込み対象データを書き込む（Ｓ２０）。具体的には、例えば、ＦＭコントローラ１０２（ＭＰ１１２）は、Ｓ１９で確保した物理ブロックを含むＦＭ１０４Ａ又は１０４Ｂに対応したバッファ１２０Ａ又は１２０Ｂに、共通バッファ１２０Ｃから書込み対象データ（エラーの無いデータ）をコピーし、バッファ１２０Ａ又は１２０Ｂから、データを、Ｓ１９で確保した物理ブロックの物理ページに書き込む。ＦＭコントローラ１０２（ＭＰ１１２）は、Ｓ１９で確保した物理ブロックを、Ｓ１８で不良ブロックとされた物理ブロックに代えて、上記書込み先論理ブロックに割り当てる。例えば、不良ブロックとされた物理ブロックが副物理ブロックであれば、Ｓ１９で確保した物理ブロックは副ブロックとして割り当てられて良い。
【００６３】
または、Ｓ１９で確保した物理ブロックを含むＦＭ１０４が例えばＦＭ１０４Ａである場合、ＦＭコントローラ１０２（ＭＰ１１２）は、バッファ１２０Ｂからエラーの無いデータをバッファ１２０Ａにコピーし、バッファ１２０Ａからデータを、Ｓ１９で確保した物理ブロックの物理ページに書き込んでも良い。
【００６４】
この方法によれば、エラーの無いデータをバッファ１２０Ｃから読み込む必要がないので、書き込み直後以外の任意の状態（例えばホストシステム２００からの書き込み要求も読み込みも要求も無い状態）の時に、正物理ブロック及び副物理ブロック間の照合を行うことができ、経時変化によるデータ化けによるブロック不良も検出することができる。具体的には、例えば、図１０に示すように、ＦＭコントローラ１０２（ＭＰ１１２）は、ホストシステム２００から書込みコマンドを受信したタイミングとは別のタイミングで（例えば定期的に）、Ｓ７０を行ってよい。Ｓ７０では、ＦＭコントローラ１０２（ＭＰ１１２）は、１以上のページペアから選択したページペア（第１のＦＭ１０４Ａにおける物理ページと、その物理ページとペアを構成する物理ページであって第２のＦＭ１０４Ｂにおける物理ページ）からデータを読み出す。その後、前述したＳ１６〜Ｓ２０の動作が行われて良い。Ｓ７０の読み出しは、任意のページペアについてのみ行われても良いし、全てのページペアについて行われても良い。
【００６５】
さて、再び図３及び図４を参照する。Ｓ１３の判断の結果が肯定的である場合（Ｓ１３：Ｙｅｓ）、ＦＭコントローラ１０２（ＭＰ１１２）は、副物理ブロック解除処理を行う（Ｓ２１）。副物理ブロック解除処理とは、いずれかの論理ブロックに対する副物理ブロックの割り当てを解除し、且つ、割り当てが解除された副物理ブロックからブロック単位でデータを消去する（ブロック消去処理を行う）ことで、正物理ブロックとして割り当て可能な空きの物理ブロックを増やすことである。副物理ブロック解除処理については後に詳述する。
【００６６】
Ｓ２１の後、ＦＭコントローラ１０２（ＭＰ１１２）は、副物理ブロック解除処理の結果に応じた処理を行う（Ｓ２２）。この処理では、書込み先論理ブロックに少なくとも正物理ブロックが割り当てられる。例えば、ＦＭコントローラ１０２（ＭＰ１１２）は、空き物理ブロックを正物理ブロックとして書込み先論理ブロックに割り当て、割り当てた正物理ブロックに、バッファ１２０Ａ又は１２０Ｂ内の書込み対象データを書き込む。
【００６７】
Ｓ２２の結果、物理ブロックに書き込まれた書込み対象データの読み出しが必要であれば（Ｓ２３：Ｙｅｓ）、Ｓ１５が行われ、読み出しが不要であれば、処理が終了する。読み出しが必要になるケースとしては、例えば、後述する実施例３のケース、すなわち、書込み先論理ブロックに正物理ブロックに加えて副物理ブロックが割り当てられるケースがある。
【００６８】
以上が、図３及び図４の説明である。なお、図４のＳ１３のような判断、すなわち、空きの物理ブロックの量が所定値以下か否かの判断は、書込みコマンドを受信したタイミングとは別のタイミングで（例えば定期的に）行われても良い。
【００６９】
図５は、実施例１に係る、論理ページと物理ページの対応関係の遷移、の一例を示す。実施例１では正副の物理領域はブロック単位で割り当てられるが、図５では、正物理ブロック内の物理ページを正物理ページと示し、副物理ブロック内の物理ページを副物理ページと示している。
【００７０】
実施例１では、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量以下の場合は、５００Ａに示すように、書込み先とされた全ての論理ブロックのそれぞれに対して、正物理ブロックの他に副物理ブロックが割り当てられる。
【００７１】
しかし、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、新たに書込み先とされた論理ブロックに正副両方の物理ブロックを割り当てられるほどの空き物理ブロックは無い。
【００７２】
この場合、図４のＳ１３：Ｙｅｓとなり、副物理ブロック解除処理が行われる。具体的には、例えば、５００Ｂに示すように、或る論理ブロックから副物理ブロックの割り当てが解除され、副物理ブロックからデータが消去される。これにより、当該副物理ブロックは空き物理ブロックとなる。その空き物理ブロックが、正物理ブロックとして、新たな書込み先の論理ブロックに割り当てられる。
【００７３】
つまり、実施例１の副物理ブロック解除処理によれば、空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、いずれかの論理ブロックに割り当てられていた副物理ブロックが空き物理ブロックにされた後に正物理ブロックとして割り当てられる。当該概念を図５に示す通りページ単位で表現すると、参照符号５００Ｂに示す通り、例えば、正副の物理ページ＃１及び＃２が割り当てられている論理ページ＃１から副物理ページ＃２の割り当てが解除され（且つ、物理ページ＃２を含んだ物理ブロックからデータが消去され）、新たな論理ページ＃（Ｎ＋１）に、割り当てが解除された物理ページ＃２が正物理ページとして割り当てられる。空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、正物理ブロックのみが割り当てられ、副物理ブロックは割り当てられない。
【００７４】
このようなことが繰り返されると、やがて、５００Ｃに示すように、論理ブロックに割り当てられている物理ブロックは正物理ブロックのみとなる。つまり、論理ブロックと物理ブロックは１：１に対応するようになり、最大の物理記憶容量を使うことができるようになる。
【００７５】
以上、実施例１によれば、１つの論理ブロックに対して通常の２倍以上の物理ブロックが割り当てられそれらの物理ブロックにデータが書き込まれエラーの有無が判断されるので、潜在的な不良ブロックを見つける機会が早くなる。初期段階でＦＭ１０４に不具合があっても、ホストシステム２００（ユーザ側）からは、現象として感じられないため、使用上の不便さを感じさせることがない。これにより、潜在的不良ブロックの継続使用を回避し、正常の物理ブロックのみを選択的に使用することが可能となり、ＦＭシステム１００の寿命の向上に寄与することができる。
【００７６】
また、実施例１によれば、或る程度ＦＭシステム１００の使用が進み、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、副物理ブロックが空き物理ブロックとされることにより、論理空間の容量（使用可能容量）を減らすことなく継続使用が可能である。そして、副物理ブロックが空き物理ブロックとされ始めた頃には、既に全ての物理ブロックについてのチェックが済んでいるため、潜在的不良ブロックが無くなり、正常な物理ブロックのみで運用することが期待できる。
【実施例２】
【００７７】
以下、実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する。
【００７８】
図６は、実施例２に係るＦＭシステムで行われる処理の概要を示す。図７は、実施例２に係るＦＭシステムで行われる処理の流れを示す。
【００７９】
実施例２では、正副の物理ブロックが１つのＦＭ１０４から割り当てられる。ＦＭ群１１５が１つのＦＭ１０４であるが、ＦＭ１０４が複数あっても、正副の物理ブロックが１つのＦＭ１０４から割り当てられても良い。
【００８０】
ＦＭ１０４が１つでも、第１及び第２のバッファ１２０Ａ及び１２０Ｂが存在する。第１のバッファ１２０Ａに正物理ページに対して読み書きされるデータが記憶され、第２のバッファ１２０Ｂに副物理ページに対して読み書きされるデータが記憶される。
【００８１】
実施例２では、Ｓ１４及びＳ１５が若干異なる。
【００８２】
すなわち、図４のＳ１４の代わりに図７のＳ１４´が行われる。Ｓ１４´では、書込み対象データの書込み先となる正副の物理ページ（正物理ブロック内の物理ページと副物理ブロック内の物理ページ）は、１つのＦＭ１０４に存在している。
【００８３】
また、図４のＳ１５の代わりに図７のＳ１５´が行われる。Ｓ１５´では、１つのＦＭ１０４における正副の物理ページから、データが読み出され、正物理ページから読み出されたデータが第１バッファ１２０Ａに書き込まれ、副物理ページから読み出されたデータが第２バッファ１２０Ｂに書き込まれる。
【００８４】
その他は、実質的に実施例１と同様である。
【実施例３】
【００８５】
以下、実施例３を説明する。その際、実施例１及び２との相違点を主に説明し、実施例１及び２との共通点については説明を省略或いは簡略する。
【００８６】
図８及び図９は、実施例３に係る、論理ページと物理ページの対応関係の遷移、の一例の一部を示す。
【００８７】
実施例３では、８００Ａに示すように、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量以下の場合は、実施例１と同様、書込み先とされた全ての論理ブロックのそれぞれに対して、正物理ブロックの他に副物理ブロックが割り当てられる。
【００８８】
しかし、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、新たに書込み先とされる論理ブロックには、正物理ブロックだけが割り当てられるのではなく、２以上の論理ブロックに割り当て済みの副物理ブロックが空き物理ブロックとされ、新たに書込み先とされる論理ブロックに、２以上の空き物理ブロックのうちの１つの物理ブロックが正物理ブロックとして割り当てられ、それら２以上の空き物理ブロックのうちの別の１以上の物理ブロックが副物理ブロックとして割り当てられる。当該概念を図８及び図９に示す通りページ単位で表現すると、例えば、参照符号８００Ｂに示す通り、正副の物理ページ＃１及び＃２が割り当てられている論理ページ＃１から副物理ページ＃２が解除され、且つ、正副の物理ページ＃３及び＃４が割り当てられている論理ページ＃２から副物理ページ＃４が解除される（更に、物理ページ＃２及び＃４を含んだ１以上の物理ブロックからデータが消去される）。そして、新たに書込み先とされる論理ページ＃（Ｎ＋１）に、物理ページ＃２及び＃４のうち、物理ページ＃２が正物理ページとして割り当てられ、物理ページ＃４が副物理ページとして割り当てられる。
【００８９】
つまり、実施例３の副物理ブロック解除処理によれば、空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、正物理ブロックだけでなく副物理ブロックも割り当てられる。これにより、新たな書込み先の論理ブロックに対しても、正副の物理ブロックにデータを書き込むことができ、更に、実施例１のようなエラーチェック、すなわち、それらの正副の物理ブロックからデータをそれぞれ読み出して、それらのデータについてエラーの有無を判断することができる。
【００９０】
なお、このようなことが繰り返されると、やがて、８００Ｃに示すように、正物理ブロックとして割り当てられる物理ブロックが多くなり、８００Ｄに示すように、論理ブロックに割り当てられている物理ブロックは正物理ブロックのみとなる。
【００９１】
以上、幾つかの実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
【００９２】
例えば、１つの論理ブロックに正副の物理ブロックが割り当てられ、故に、書込み先として使用できる物理ブロックが不足してくる状況は、正副の物理ブロックに書き込まれたデータのエラーの有無が判断されるケースに限られない。そこで、上記実施例１乃至３の説明を基に、物理ブロックの不足を解消することそれ自体を１つの特徴としたＦＭコントローラ（メモリコントローラ）を、例えば、下記のように表現することができる。また、下記メモリコントローラと１以上のフラッシュメモリとを有するフラッシュメモリシステムや、下記メモリコントローラが行う処理に従う記憶制御方法も表現することができる。
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第１の通信インタフェースデバイスと、
複数の物理ブロックで構成された１以上のフラッシュメモリであるフラッシュメモリ群に接続される第２の通信インタフェースデバイスと、
前記第１及び第２の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックを含んだ論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
（Ａ）前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び１以上の副物理ブロックを特定し、
（Ｂ）前記特定した正物理ブロック及び１以上の副物理ブロックに、前記受信した書込みコマンドに従う書込み対象データを書き込み、
（Ｄ）前記複数の書込み先物理ブロックにそれぞれ書き込まれた複数の前記書込み対象データのいずれかにエラーの有る場合、エラーを有する書込み対象データの物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
ようになっており、
前記制御デバイスが、更に、
（Ｘ）前記論理空間に割り当て可能な物理ブロックの数が所定値以下か否かを判断し、
（Ｙ）前記（Ｘ）の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも１つの副物理ブロックの割り当てを解除し前記少なくとも１つの副物理ブロックの各々からデータをブロック単位で消去する、
ようになっているメモリコントローラ。
【符号の説明】
【００９３】
１００：フラッシュメモリシステム、１０２：メモリコントローラ、１０４：フラッシュメモリ
【図１】
2014026376.tif 000003
【図２】
2014026376.tif 000004
【図３】
2014026376.tif 000005
【図４】
2014026376.tif 000006
【図５】
2014026376.tif 000007
【図６】
2014026376.tif 000008
【図７】
2014026376.tif 000009
【図８】
2014026376.tif 000010
【図９】
2014026376.tif 000011
【図１０】
2014026376.tif 000012