(57)【要約】【課題】各メモリセルが複数のページのデータを保持する多値ＮＡＮＤフラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置において、データの書き込み中にエラーが生じてそのページと同一グループの他のページに記載されたデータが変化する問題点を解消すること。【解決手段】不揮発性メモリ１１０にデータを書き込む際に、あるページへの書き込み中にエラーが発生したときに、エラーページ特定部１２８によってエラーの種類とエラーが生じたページの物理アドレスを特定する。そしてエラーがあったページと同一グループに属する他のページに記憶されたデータに生じたエラーを、エラー解消部１２９によって解消する。【選択図】図１
2006318366.tif 000002
【特許請求の範囲】
【請求項１】
複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリに、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラであって、
書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を具備するメモリコントローラ。
【請求項２】
前記メモリコントローラは、
前記不揮発性メモリにデータを書き込み、及び不揮発性メモリ内のデータを読み出す読み書き制御部と、
前記不揮発性メモリのあるページへの書き込み中にエラーが発生したときにそのエラーの生じたページを特定するエラーページ特定部と、を更に具備する請求項１記載のメモリコントローラ。
【請求項３】
エラーページ特定部は、
電源遮断の発生を判断する電源遮断判断部と、
前記不揮発性メモリ内部での異常の発生を判断するメモリ異常判断部と、を有する請求項２記載のメモリコントローラ。
【請求項４】
前記エラー解消部は、
同一のグループを構成するページに関するページ情報を出力するページ情報指示部と、
前記エラー発生ページと前記ページ情報に基づいて該エラー発生ページと同一のグループを構成するページを修復ページとして特定する修復ページ特定部と、
前記修復ページ特定部によって特定された修復ページを含むデータの修復を行う代替・修復処理部と、を有する請求項２又は３記載のメモリコントローラ。
【請求項５】
前記メモリコントローラは、
外部から与えられたデータを一時記憶するバッファメモリを更に具備し、
前記バッファメモリは、夫々のグループについて全てのページを含む領域の記憶容量以上の記憶容量を有する請求項４に記載のメモリコントローラ。
【請求項６】
前記バッファメモリは、不揮発性ＲＡＭである請求項４記載のメモリコントローラ。
【請求項７】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理をする請求項５に記載のメモリコントローラ。
【請求項８】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項６に記載のメモリコントローラ。
【請求項９】
前記不揮発性ＲＡＭは、強誘電体メモリ（ＦｅＲＡＭ）、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）のうちのいずれか１つで構成される請求項６に記載のメモリコントローラ。
【請求項１０】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）の情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
前記エラーページを含む書き込み対象物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項２又は３に記載のメモリコントローラ。
【請求項１１】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理をする請求項１０に記載のメモリコントローラ。
【請求項１２】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項１０に記載のメモリコントローラ。
【請求項１３】
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの同一ページに書き込む際に、各々のブロックへの書き込みタイミングが重ならないように交互に書き込む請求項１０〜１２のいずれか１項に記載のメモリコントローラ。
【請求項１４】
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの異なるページに書き込む際に、各々のブロックへ同時に書き込む請求項１０〜１２のいずれか１項に記載のメモリコントローラ。
【請求項１５】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）とページ種別情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラーページを含む前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有し、
前記アドレス管理部は、前記ページ種別情報と書き込み先のページに基づき書き込み先の物理ブロックを選択する請求項２又は３に記載のメモリコントローラ。
【請求項１６】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項１５に記載のメモリコントローラ。
【請求項１７】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のメモリセルを構成するページ数Ｎ（Ｎは２以上の整数）を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラー発生ページを含む物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項２又は３に記載のメモリコントローラ。
【請求項１８】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックに書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項１７に記載のメモリコントローラ。
【請求項１９】
前記読み書き制御部は、前記書き込み対象物理ブロックの各々への書き込みタイミングが重ならないように書き込み制御を行う請求項１７に記載のメモリコントローラ。
【請求項２０】
複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリと、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラとを有する不揮発性記憶装置であって、
前記メモリコントローラは、
書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を有する不揮発性記憶装置。
【請求項２１】
前記メモリコントローラは、
前記不揮発性メモリにデータを書き込み、及び不揮発性メモリ内のデータを読み出す読み書き制御部と、
前記不揮発性メモリのあるページへの書き込み中にエラーが発生したときにそのエラーの生じたページを特定するエラーページ特定部と、を更に具備する請求項２０記載の不揮発性記憶装置。
【請求項２２】
エラーページ特定部は、
電源遮断の発生を判断する電源遮断判断部と、
前記不揮発性メモリ内部での異常の発生を判断するメモリ異常判断部と、を有する請求項２１記載の不揮発性記憶装置。
【請求項２３】
前記エラー解消部は、
同一のグループを構成するページに関するページ情報を出力するページ情報指示部と、
前記エラー発生ページと前記ページ情報に基づいて該エラー発生ページと同一のグループを構成するページを修復ページとして特定する修復ページ特定部と、
前記修復ページ特定部によって特定された修復ページを含むデータの修復を行う代替・修復処理部と、を有する請求項２１又は２２記載の不揮発性記憶装置。
【請求項２４】
前記メモリコントローラは、外部から与えられたデータを一時記憶するバッファメモリを更に有し、
前記バッファメモリは、夫々のグループについて全てのページを含む領域の記憶容量以上の記憶容量を有する請求項２３に記載の不揮発性記憶装置。
【請求項２５】
前記バッファメモリは、不揮発性ＲＡＭである請求項２４記載の不揮発性記憶装置。
【請求項２６】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理をする請求項２４に記載の不揮発性記憶装置。
【請求項２７】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項２５に記載の不揮発性記憶装置。
【請求項２８】
前記不揮発性ＲＡＭは、強誘電体メモリ（ＦｅＲＡＭ）、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）のうちのいずれか１つで構成される請求項２５に記載の不揮発性記憶装置。
【請求項２９】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）の情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
前記エラーページを含む書き込み対象物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項２１又は２２に記載の不揮発性記憶装置。
【請求項３０】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理をする請求項２９に記載の不揮発性記憶装置。
【請求項３１】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項２９に記載の不揮発性記憶装置。
【請求項３２】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの同一ページに書き込む際に、各々のブロックへの書き込みタイミングが重ならないように交互に書き込む請求項２９〜３１のいずれか１項に記載の不揮発性記憶装置。
【請求項３３】
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの異なるページに書き込む際に、各々のブロックへ同時に書き込む請求項２９〜３１のいずれか１項に記載の不揮発性記憶装置。
【請求項３４】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）とページ種別情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラーページを含む前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有し、
前記アドレス管理部は、前記ページ種別情報と書き込み先のページに基づき書き込み先の物理ブロックを選択する請求項２１又は２２に記載の不揮発性記憶装置。
【請求項３５】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項３４に記載の不揮発性記憶装置。
【請求項３６】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のメモリセルを構成するページ数Ｎ（Ｎは２以上の整数）を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラー発生ページを含む物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項２１又は２２に記載の不揮発性記憶装置。
【請求項３７】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックに書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項３６に記載の不揮発性記憶装置。
【請求項３８】
前記読み書き制御部は、前記書き込み対象物理ブロックの各々への書き込みタイミングが重ならないように書き込み制御を行う請求項３７に記載の不揮発性記憶装置。
【請求項３９】
アクセス装置と不揮発性記憶装置を具備する不揮発性記憶システムであって、
前記アクセス装置は、
前記不揮発性記憶装置に書き込みコマンドとデータを送出するものであり、
前記不揮発性記憶装置は、
複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリと、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラとを有するものであり、
前記メモリコントローラは、
書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を有する不揮発性記憶システム。
【請求項４０】
前記メモリコントローラは、
前記不揮発性メモリにデータを書き込み、及び不揮発性メモリ内のデータを読み出す読み書き制御部と、
前記不揮発性メモリのあるページへの書き込み中にエラーが発生したときにそのエラーの生じたページを特定するエラーページ特定部と、を更に有する請求項３９記載の不揮発性記憶システム。
【請求項４１】
エラーページ特定部は、
電源遮断の発生を判断する電源遮断判断部と、
前記不揮発性メモリ内部での異常の発生を判断するメモリ異常判断部と、を有する請求項４０記載の不揮発性記憶システム。
【請求項４２】
前記エラー解消部は、
同一のグループを構成するページに関するページ情報を出力するページ情報指示部と、
前記エラー発生ページと前記ページ情報に基づいて該エラー発生ページと同一のグループを構成するページを修復ページとして特定する修復ページ特定部と、
前記修復ページ特定部によって特定された修復ページを含むデータの修復を行う代替・修復処理部と、を有する請求項４０又は４１記載の不揮発性記憶システム。
【請求項４３】
前記メモリコントローラは、外部から与えられたデータを一時記憶するバッファメモリを更に具備し、
前記バッファメモリは、夫々のグループについて全てのページを含む領域の記憶容量以上の記憶容量を有する請求項４２に記載の不揮発性記憶システム。
【請求項４４】
前記バッファメモリは、不揮発性ＲＡＭである請求項４３記載の不揮発性記憶システム。
【請求項４５】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理をする請求項４３に記載の不揮発性記憶システム。
【請求項４６】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項４４に記載の不揮発性記憶システム。
【請求項４７】
前記不揮発性ＲＡＭは、強誘電体メモリ（ＦｅＲＡＭ）、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）のうちのいずれか１つで構成される請求項４４に記載の不揮発性記憶システム。
【請求項４８】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）の情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
前記エラーページを含む書き込み対象物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項４０又は４１に記載の不揮発性記憶システム。
【請求項４９】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理をする請求項４８に記載の不揮発性記憶システム。
【請求項５０】
前記代替処理部は、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項４８に記載の不揮発性記憶システム。
【請求項５１】
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの同一ページに書き込む際に、各々のブロックへの書き込みタイミングが重ならないように交互に書き込む請求項４８〜５０のいずれか１項に記載の不揮発性記憶システム。
【請求項５２】
前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの異なるページに書き込む際に、各々のブロックへ同時に書き込む請求項４８〜５０のいずれか１項に記載の不揮発性記憶システム。
【請求項５３】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）とページ種別情報を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラーページを含む前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有し、
前記アドレス管理部は、前記ページ種別情報と書き込み先のページに基づき書き込み先の物理ブロックを選択する請求項４０又は４１に記載の不揮発性記憶システム。
【請求項５４】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項５３に記載の不揮発性記憶システム。
【請求項５５】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消部は、
同一のメモリセルを構成するページ数Ｎ（Ｎは２以上の整数）を出力するページ情報指示部と、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、
エラーが生じたときに前記エラー発生ページを含む物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有する請求項４０又は４１に記載の不揮発性記憶システム。
【請求項５６】
前記代替処理部は、
前記コピー処理に加えて、前記書き込み中の物理ブロックに書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項５５に記載の不揮発性記憶システム。
【請求項５７】
前記読み書き制御部は、前記書き込み対象物理ブロックの各々への書き込みタイミングが重ならないように書き込み制御を行う請求項５５に記載の不揮発性記憶システム。
【請求項５８】
複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリに、外部から与えられるデータを書き込むデータ書き込み方法であって、
書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するデータ書き込み方法。
【請求項５９】
前記データ書き込み方法は、
外部から与えられたデータをバッファメモリに一時記憶し、
前記バッファメモリから不揮発性メモリにデータを書き込み、
前記不揮発性メモリのあるページへの書き込み中にエラーが発生したときにそのエラーの生じたページを特定するステップを更に有する請求項５８記載のデータ書き込み方法。
【請求項６０】
前記エラー解消ステップは、
同一のグループを構成するページに関するページ情報を出力し、
前記エラー発生ページと前記ページ情報に基づいて該エラー発生ページと同一のグループを構成するページを修復ページとして特定し、
前記修復ページ特定部によって特定された修復ページを含むデータの修復を行う請求項５９記載のデータ書き込み方法。
【請求項６１】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記代替・修復処理ステップは、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理をする請求項６０に記載のデータ書き込み方法。
【請求項６２】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記バッファは不揮発性ＲＡＭであり、
前記代替・修復処理ステップは、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項６０に記載のデータ書き込み方法。
【請求項６３】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消ステップは、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）の情報を出力し、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得し、
前記エラーページを含む書き込み対象物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する請求項５９に記載のデータ書き込み方法。
【請求項６４】
前記代替処理ステップは、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理をする請求項６３に記載のデータ書き込み方法。
【請求項６５】
前記代替処理ステップは、
書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をする請求項６３に記載のデータ書き込み方法。
【請求項６６】
同一の書き込みデータを前記複数の書き込み対象物理ブロックの同一ページに書き込む際に、各々のブロックへの書き込みタイミングが重ならないように交互に書き込む請求項６３〜６５のいずれか１項に記載のデータ書き込み方法。
【請求項６７】
同一の書き込みデータを前記複数の書き込み対象物理ブロックの異なるページに書き込む際に、各々のブロックへ同時に書き込む請求項６３〜６５のいずれか１項に記載のデータ書き込み方法。
【請求項６８】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消ステップは、
同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）とページ種別情報を出力し、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込み、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおし、
エラーが生じたときに前記エラーページを含む前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消し、
前記アドレス管理ステップは、前記ページ種別情報と書き込み先のページに基づき書き込み先の物理ブロックを選択する請求項５９に記載のデータ書き込み方法。
【請求項６９】
前記代替処理ステップは、
前記コピー処理に加えて、前記書き込み中の物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項６８に記載のデータ書き込み方法。
【請求項７０】
前記不揮発性メモリは、複数の物理ブロックから成り、
前記エラー解消ステップは、
同一のメモリセルを構成するページ数Ｎ（Ｎは２以上の整数）を出力し、
外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込み、
所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおし、
エラーが生じたときに前記エラー発生ページを含む物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを別の無効物理ブロックにコピーすることにより、エラーを解消する請求項５９に記載のデータ書き込み方法。
【請求項７１】
前記代替処理ステップは、
前記コピー処理に加えて、前記書き込み中の物理ブロックに書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含む請求項７０に記載のデータ書き込み方法。
【請求項７２】
前記読み書き制御ステップは、前記書き込み対象物理ブロックの各々への書き込みタイミングが重ならないように書き込み制御を行う請求項７０に記載のデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え可能な不揮発性メモリを備えた不揮発性記憶装置、及びこれを制御するメモリコントローラ、不揮発性記憶システム、及びデータ書き込み方法に関する。
【背景技術】
【０００２】
書き換え可能な不揮発性の主記憶メモリを備えた不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。このメモリカードは、不揮発性メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラやパソコン（パーソナルコンピュータ）本体等のアクセス装置からの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行うものとなっている。フラッシュメモリは、ＲＡＭなどの揮発性メモリに比べて記憶素子の特性のばらつきが大きいため、比較的頻繁に書込みエラーが発生する。そのため、不揮発性メモリを内蔵したメモリカードにおいては、書込みエラーが発生した記憶領域を他の記憶領域と置き換える代替処理を行なうようにしたものがある（特許文献１）。ここでは、不揮発性メモリは、２値ＮＡＮＤのように各メモリセルがひとつのページ内で閉じているフラッシュメモリが通常用いられている。
【０００３】
さて、多値ＮＡＮＤフラッシュメモリは、低価格なフラッシュメモリとしての期待が大きく、今後メモリカードの主記憶メモリとして主流となる可能性が高い。特許文献２には、高速アクセスを実現するために、多値ＮＡＮＤフラッシュメモリのページ構造を改良した技術を開示している。２値のメモリである従来のフラッシュメモリは、ひとつのメモリセルはひとつのページのあるビットのデータを保持するものである。一方、多値ＮＡＮＤフラッシュメモリは、各メモリセルが複数のページ、例えば２つのページにまたがって構成される、即ち複数のビットのデータを保持するものである。
【０００４】
図２９〜図３１は、多値ＮＡＮＤフラッシュメモリのように各メモリセルが複数ページに跨って構成される不揮発性メモリを表す構成図である。図２９〜図３１において、同一のグループ番号（ＧＮ）が付与されたページが、１つのメモリセルで保持されるデータが含まれる２つのページである。ハッチングを施していないページを第１ページとし、斜線でハッチングを施したページを第２ページとする。
【０００５】
例えば図２９に示した多値ＮＡＮＤフラッシュメモリは、偶数ページと奇数ページが対となって、ひとつのメモリセルを構成する。図中ＧＮで示すグループ番号が同じページが、ひとつのメモリセルを共有するページ対である。各ページ対において、アドレスが低順位のページを第１ページ、高順位のページ（ハッチングを施したページ）を第２ページとする。図２９では、第１ページと第２ページが隣接しているが、図３０や図３１では、第１ページと第２ページが離れている。これは一方のページへの書き込みによって、他方のページに記憶されたデータへの影響（ディスターブ）を少なくするために隔離されたものである。
【０００６】
しかし、ひとつのメモリセルが２つのページに跨って構成された場合、一方のページの書き込み中にエラーが発生すると、他方のページに記憶されていたデータが変化してしまうという問題がある。この問題について、以下図３２〜図３４を用いて説明する。
【０００７】
図３２は、図２９〜図３１に示す多値ＮＡＮＤフラッシュメモリのメモリセルの電圧分布を表す特性図である。このメモリセルは２ビットの情報を記憶する。横軸がメモリセルより得られる電圧Ｖであり、縦軸はその電圧となる確率Ｐである。
【０００８】
さて図３２の４つの分布において、左から“１１”、“１０”、“００”、“０１”のコードが割り当てられる。各コードの右側の桁（ビット）が第１ページに対応し、左側の桁（ビット）が第２ページに対応する。各メモリセルは消去済みの状態で“１１”である。この状態から第１ページ側に書き込むと、正常に書き込めた場合は、各メモリセルは“１１”の状態のままか、あるいは“１１”から“１０”の状態に遷移する。その後、第２ページ側に書き込むと、正常に書き込めた場合は、各メモリセルは“１１”の状態から“１１”の状態のままか、若しくは“０１” の状態に遷移する。あるいは“１０”から“１０”のまま、若しくは“００”の状態に遷移することとなる。
【０００９】
図３３は、メモリセルへ正常に書き込めた場合の状態を示す特性図である。図３３において、第１ページと第２ページの書き込みによって、目標値である“０１”の情報を書き込むことを想定する。書き込み過程としては、まず第１ページの書き込みによって、“１１”の状態にし、次に第２ページの書き込みによって、“０１”の状態にすることとなる。
【００１０】
図３４は、メモリセルへ正常に書き込めなかった場合の状態を示す特性図である。図３４では、第２ページの書き込みにおいて、メモリセルへの印加電圧が“１１”の状態から“０１”の状態に遷移する過程において、フラッシュメモリ内部の電圧変動などの異常によって“１０”又は“００”の状態にはまることを示している。以下、これを「フラッシュ異常」という。また第２ページの書き込みにおいて、メモリセルへの印加電圧が“１１”の状態から“０１”の状態に遷移する過程において、“１０”又は“００”の状態にまで電圧が到達した時点で不揮発性メモリに供給される電源がＯＦＦされてしまい、“１０”や“００”の状態にはまる場合がある。以下、これを「電源遮断」という。
【００１１】
なお、メモリカードの場合、通常、電源はアクセス装置側から供給されるので、データ書き込み中に不用意にアクセス装置の電源をオフとしたり、メモリカードをアクセス装置から強制的に取り出してしまうと、電源遮断が発生することとなる。
【特許文献１】特開２００３−７６６１５号公報
【特許文献２】特開２００１−９３２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
図３１で示した多値ＮＡＮＤフラッシュメモリを従来の不揮発性記憶システムに適用した場合のシステム上の課題について説明する。まず、図３５を用いて、多値ＮＡＮＤのフラッシュメモリを使用した場合に、フラッシュ異常が発生した場合の従来のエラー解消処理について説明する。図３５Ａは図中左端に示すバッファから物理ブロックＰＢ１０に順次ＡＢＣに示すようにデータを書き込む状態を示している。
【００１３】
さて図３５Ａに示すように、ある物理ブロック、例えば物理ブロックＰＢ１０にグループＧＮ７の第２ページであるページ１７を書き込み中にフラッシュ異常が発生したとする。ここで星印は異常を示す。グループＧＮ７はページ１１と１７により構成されているので、ページ１１に記憶されたデータが変化する場合がある。
【００１４】
図３５Ｂは、フラッシュ異常が発生した際のエラー解消処理を示す動作説明図である。従来のエラー解消処理では、物理ブロックＰＢ１０のページ０〜１６に記憶されたデータをＰＢ５の対応ページにコピーし、更にＰＢ１０のページ１７に記憶されるべきデータ、すなわち論理アドレスＬＡ６８〜７１のデータを、ＰＢ５のページ１７にリトライ書き込みする。又電源遮断が生じた場合には、次の電源が投入された時点でページ１７から新たなデータを再び書き込む。この場合にもページ０〜１６に記録されたデータをＰＢ５の対応ページにコピーする。
【００１５】
しかし、ＰＢ１０のページ１１に記憶されたデータが変化していた場合、従来の不揮発性記憶装置では当該データを修復しないため、誤ったデータのまま使用されつづけることとなる。当該データがファイルシステムのような重要データであった場合は、不揮発性記憶装置からの読み出しができなくなるといった致命的な問題をひきおこす可能性があった。即ち特許文献２に示した多値ＮＡＮＤフラッシュメモリに対して特許文献１に示されているエラー解消処理を適用すると、信頼性が著しく低下するという課題を有していた。
【００１６】
そこで、本発明は、上記問題点に鑑み、所定ページへの書き込み処理の失敗に起因して該所定ページと同一のメモリセルを構成する他のページに記憶されたデータが変化してしまうエラーを解消できる高信頼性のメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、データ書き込み方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
この課題を解決するために、本発明のメモリコントローラは、複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリに、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラであって、書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を具備するものである。
【００１８】
ここで前記メモリコントローラは、前記不揮発性メモリにデータを書き込み、及び不揮発性メモリ内のデータを読み出す読み書き制御部と、前記不揮発性メモリのあるページへの書き込み中にエラーが発生したときにそのエラーの生じたページを特定するエラーページ特定部と、を更に具備するようにしてもよい。
【００１９】
ここでエラーページ特定部は、電源遮断の発生を判断する電源遮断判断部と、前記不揮発性メモリ内部での異常の発生を判断するメモリ異常判断部と、を有するようにしてもよい。
【００２０】
ここで前記エラー解消部は、同一のグループを構成するページに関するページ情報を出力するページ情報指示部と、前記エラー発生ページと前記ページ情報に基づいて該エラー発生ページと同一のグループを構成するページを修復ページとして特定する修復ページ特定部と、前記修復ページ特定部によって特定された修復ページを含むデータの修復を行う代替・修復処理部と、を有するようにしてもよい。
【００２１】
ここで前記メモリコントローラは、外部から与えられたデータを一時記憶するバッファメモリを更に具備し、前記バッファメモリは、夫々のグループについて全てのページを含む領域の記憶容量以上の記憶容量を有するようにしてもよい。
【００２２】
ここで前記バッファメモリは、不揮発性ＲＡＭとしてもよい。
【００２３】
ここで前記不揮発性メモリは、複数の物理ブロックから成り、前記代替・修復処理部は、書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理をするようにしてもよい。
【００２４】
ここで前記不揮発性メモリは、複数の物理ブロックから成り、前記代替・修復処理部は、書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、書き込みを誤ったデータであって前記バッファメモリに残るデータを前記無効物理ブロックの修復ページに再び書き込む修復処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をするようにしてもよい。
【００２５】
ここで前記不揮発性ＲＡＭは、強誘電体メモリ（ＦｅＲＡＭ）、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）のうちのいずれか１つで構成されるようにしてもよい。
【００２６】
ここで前記不揮発性メモリは、複数の物理ブロックから成り、前記エラー解消部は、同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）の情報を出力するページ情報指示部と、外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、前記エラーページを含む書き込み対象物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有するようにしてもよい。
【００２７】
ここで前記代替処理部は、書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理をするようにしてもよい。
【００２８】
ここで前記代替処理部は、書き込み中の物理ブロックの誤りのないページに書き込まれたデータを、前記不揮発性メモリの別の無効物理ブロックに転写するコピー処理、及び物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理をするようにしてもよい。
【００２９】
ここで前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの同一ページに書き込む際に、各々のブロックへの書き込みタイミングが重ならないように交互に書き込むようにしてもよい。
【００３０】
ここで前記読み書き制御部は、同一の書き込みデータを前記複数の書き込み対象物理ブロックの異なるページに書き込む際に、各々のブロックへ同時に書き込むようにしてもよい。
【００３１】
ここで前記不揮発性メモリは、複数の物理ブロックから成り、前記エラー解消部は、同一のグループを構成するページ数Ｎ（Ｎは２以上の整数）とページ種別情報を出力するページ情報指示部と、外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、エラーが生じたときに前記エラーページを含む前記書き込み対象物理ブロックに記憶されたデータを、別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有し、前記アドレス管理部は、前記ページ種別情報と書き込み先のページに基づき書き込み先の物理ブロックを選択するようにしてもよい。
【００３２】
ここで前記代替処理部は、前記コピー処理に加えて、前記書き込み中の物理ブロックの書き損じたデータを再度前記無効物理ブロックに書き込むリトライ処理を含むようにしてもよい。
【００３３】
ここで前記不揮発性メモリは、複数の物理ブロックから成り、前記エラー解消部は、同一のメモリセルを構成するページ数Ｎ（Ｎは２以上の整数）を出力するページ情報指示部と、外部から与えられたデータの書き込み先として前記ページ情報指示部より得られたページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得する書き込みブロック取得部と、所定のタイミングで前記書き込み対象物理ブロックに書き込まれたデータを少なくともひとつの物理ブロックに集約して書きなおす集約処理部と、エラーが生じたときに前記エラー発生ページを含む物理ブロックとは異なる前記書き込み対象物理ブロックに記憶されたデータを別の無効物理ブロックにコピーすることにより、エラーを解消する代替処理部と、を有するようにしてもよい。
【００３４】
ここで前記代替処理部は、前記コピー処理に加えて、前記書き込み中の物理ブロックに書き損じたデータを再度前記無効物理ブロックに書き込むようにしてもよい。
【００３５】
ここで前記読み書き制御部は、前記書き込み対象物理ブロックの各々への書き込みタイミングが重ならないように書き込み制御を行うようにしてもよい。
【００３６】
この課題を解決するために、本発明の不揮発性記憶装置は、複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリと、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラとを有する不揮発性記憶装置であって、前記メモリコントローラは、書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を有するものである。
【００３７】
この課題を解決するために、本発明の不揮発性記憶システムは、アクセス装置と不揮発性記憶装置を具備する不揮発性記憶システムであって、前記アクセス装置は、前記不揮発性記憶装置に書き込みコマンドとデータを送出するものであり、前記不揮発性記憶装置は、複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリと、外部から与えられるデータを書き込み、該不揮発性メモリからデータを読み出すメモリコントローラとを有するものであり、前記メモリコントローラは、書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するエラー解消部を有するものである。
【００３８】
この課題を解決するために、本発明のデータ書き込み方法は、複数のページによって構成され、各メモリセルがグループを構成する複数ページのデータを保持する不揮発性メモリに、外部から与えられるデータを書き込むデータ書き込み方法であって、書き込みエラーがあったエラーページと同一グループの他のページに記憶されたデータに生じるエラーを解消するものである。
【発明の効果】
【００３９】
本発明によれば、エラー解消部によって、あるメモリセルが複数ページのデータを記憶するメモリに特有のエラーが発生した場合においても、エラーを解消することができる。そのため今後主流となる多値ＮＡＮＤなどのフラッシュメモリを適用したメモリカードにおいても、メモリセルが１つのページのデータを記憶する従来のメモリを用いたメモリカードと同等以上の高信頼性を確保することができるという効果が得られる。
【発明を実施するための最良の形態】
【００４０】
（第１の実施の形態）
以下、本発明の第１の実施の形態による不揮発性記憶システムについて説明する。図１は、不揮発性記憶システムのブロック図である。不揮発性記憶システムは不揮発性記憶装置１００とアクセス装置１０１とによって構成される。
【００４１】
不揮発性記憶装置１００は、フラッシュメモリからなる不揮発性メモリ１１０とメモリコントローラ１２０とを有している。不揮発性メモリ１１０は、ひとつのメモリセルが２つのページに跨ってデータを保持する多値ＮＡＮＤフラッシュメモリである。不揮発性メモリ１１０は例えば図２に示すように、４０９６個の物理ブロックＰＢ０〜ＰＢ４０９５から構成される。物理ブロックは消去の単位であって、夫々１２８ページから構成される。各ページはメモリコントローラ１２０からのアクセス単位であり、２１１２バイトの記憶容量をもつ。ここでは図３１と同一のグループ構成のメモリとする。
【００４２】
アクセス装置１０１は、不揮発性記憶装置１００にユーザデータ（以下、単にデータ）の読み書き命令と、そのデータが格納されている論理アドレスの送信と、データの送受信を行うものである。このアクセス装置１０１からの読み書き命令を受けて、メモリコントローラ１２０は、不揮発性メモリ１１０に受け取ったデータを書き込んだり、不揮発性メモリ１１０からデータを読み込み外部へ出力する。
【００４３】
次に、メモリコントローラ１２０の詳細について述べる。不揮発性記憶装置１００に備えられたメモリコントローラ１２０は、ホストＩＦ１２１と、メモリコントローラ１２０全体の制御を行うＣＰＵ１２２とを備えている。また、ＣＰＵ１２２の作業領域であるＲＡＭ１２３と、ＣＰＵ１２２が実行するプログラムを格納したＲＯＭ１２４とを有している。さらに、メモリコントローラ１２０は、不揮発性メモリ１１０へアクセスする際にデータを一時記憶するためのバッファメモリ１２５と、不揮発性メモリ１１０のアドレスを指定するアドレス管理部１２６とを有している。
【００４４】
読み書き制御部１２７は、アドレス管理部１２６が指定したアドレスに基づいて、不揮発性メモリ１１０内にデータを書き込んだり、不揮発性メモリ１１０内のデータを読み出したりするものである。
【００４５】
エラーページ特定部１２８は、不揮発性メモリ１１０内のあるページへの書き込み中にエラーが発生した際に、当該ページの物理アドレス（以下、エラーページ番号とする）とエラーの種類を特定すると共に、当該エラーの種類を識別するためのエラー種別フラグをエラー解消部１２９に転送するものである。エラーページ特定部１２８は、カレントブロックステータステーブル（図中ではＣＢＳＴ）１３１，電源遮断判断部１３２，フラッシュ異常判断部１３３を有している。
【００４６】
カレントブロックステータステーブル１３１は現在アクセス中の物理ブロックへの書き込み状態を記憶するテーブルである。カレントブロックステータステーブル１３１は、強誘電体メモリ（ＦｅＲＡＭ）、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）などの不揮発性ＲＡＭで構成されており、その中に、現在書き込み中の論理ブロックアドレスと物理ブロックアドレスと各ページの書き込み状況が記録されている。
【００４７】
電源遮断判断部１３２はエラーの発生要因のひとつである電源遮断の発生状況を判断する。電源遮断判断部１３２はカレントブロックステータステーブル１３１に記憶されているカレントブロックステータスと、不揮発性メモリ１１０へのデータの書き込み後に不揮発性メモリ１１０から転送されるレディ／ビジーフラグと、アドレス管理部１２６から転送される現在書き込み中のページの物理アドレスを表すカレントページ番号に基づいて、エラーが発生したエラーページ番号を特定する。そしてエラーページ番号とエラー種別フラグをエラー解消部１２９に転送するものである。
【００４８】
フラッシュ異常判断部１３３は同じくエラーの発生要因のひとつであるフラッシュメモリ内部での異常の発生状況を判断するメモリ異常判断部である。フラッシュ異常判断部１３３は、不揮発性メモリ１１０へのデータの書き込み後に不揮発性メモリ１１０から転送されるエラーステータスと、アドレス管理部１２６から転送されるカレントページ番号に基づいて、エラーが発生したエラーページ番号を特定し、エラーページ番号とエラー種別フラグをエラー解消部１２９に転送する。
【００４９】
図３は、不揮発性メモリ１１０内の物理ブロックのフォーマットを示したものである。この図に示すように、１つの物理ブロックはページ番号（ＰＮ）０〜１２７までの１２８ページから構成され、各ページは４セクタ分のデータ領域と管理領域ＭＲとからなる、１セクタは５１２バイト、１ページは４セクタで構成され、２０４８バイトである。管理領域ＭＲは１ページ当たり６４バイトであり、そのページ番号に対応する論理ブロックアドレスとステータスフラグとを有している。ステータスフラグは物理ブロック単位で有効ブロック、無効ブロック又は不良ブロックを示すものである。１クラスタの情報を記憶するために必要なページ数は８ページである。なお、図３で左上からＰＳＡ０，ＰＳＡ１，…，ＰＳＡ５１１というように物理的な配置記号を付している。ＰＳＡとは物理セクタアドレス（Physical Sector Address）の頭文字をとった略号である。
【００５０】
図４は、論理アドレスＬＡのフォーマットを示した説明図である。この図に示すように、下位ビットから順に、セクタ番号、ページ番号、論理ブロックアドレスＬＢＡとなっており、論理ブロックアドレスＬＢＡに対応する１２ビット分がアドレス変換の対象、すなわち論理物理変換テーブル１４２のアドレスに相当する。アクセス装置１０１のファイルシステムで規定されるセクタサイズは５１２バイト、クラスタサイズは１６ｋバイトであるので、クラスタ番号のＬＳＢはビット５（ｂ５）に対応する。論理アドレスＬＡのｂ８〜ｂ２がページ番号に対応する。
【００５１】
アドレス管理部１２６は、物理領域管理テーブル１４１と論理物理変換テーブル１４２を含む。アドレス管理部１２６は、これらのテーブルを参照しながら、アクセス装置１０１から転送されたデータの書き込み先の物理ブロックの選択や、当該物理ブロック内の書き込み先のページ、すなわちカレントページ番号の指示など、いわゆるアドレス管理を行うものである。物理領域管理テーブル１４１には、不揮発性メモリ１１０内における消去単位である物理ブロックの状態、すなわち有効なデータが記憶されているか否かのステータスフラグが記憶されている。論理物理変換テーブル１４２は、アクセス装置１０１が転送した論理アドレスを不揮発性メモリ１１０内の物理アドレスに変換するに必要なテーブルである。
【００５２】
図５は、物理領域管理テーブル１４１のフォーマットを示している。この図からわかるように、物理領域管理テーブル１４１のアドレスは不揮発性メモリ１１０の物理ブロックアドレスＰＢＡに対応し、各物理ブロックのステータスフラグを記憶している。ステータスフラグとして、２進数で値００は有効なデータが記憶されている有効ブロックを示し、値１１は消去済み又はデータが書き込まれているが不要である無効ブロックを示し、値１０はメモリセル上のソリッドエラー等により使用できなくなった不良ブロックを示す。
【００５３】
図６は、論理物理変換テーブル１４２のフォーマットを示す。このテーブル１４２は、各論理ブロックアドレスＬＢＡに対応する物理ブロックアドレスＰＢＡを保持するテーブルである。
【００５４】
図７は、カレントブロックステータステーブル１３１を示す。カレントブロックステータステーブル１３１は１８ワードから構成され、１ワードは１６ビットからなる。ワード０のｂ１１〜ｂ０には１２ビットの物理ブロックアドレスＰＢＡが一時記憶され、ワード１のｂ１１〜ｂ０には１２ビットの論理ブロックアドレスＬＢＡが一時記憶される。ワード２からワード１７は書き込み状況ステータスエリアである。このエリアは、カレントブロックを構成する各ページ（ページ０〜ページ１２７）の書き込み状況を識別する書き込み状況を識別する識別フラグが一時記憶される。この識別フラグは各ページあたり２ビットで構成されている。電源遮断判断部１３２は、アドレス管理部１２６が出力するカレントページ番号と不揮発性メモリ１１０が出力するレディ／ビジーフラグに基づいて識別フラグを設定する。上位側のビットは、カレントページ番号に基づいて設定されるビットであり、下位側のビットは、レディ／ビジーフラグに基づいて設定されるビットである。この識別フラグは２進数で値００のとき、当該ページが未プログラムであることを表し、２進数で値１０のとき、当該ページが書き込み中であることを表し、２進数で値１１のとき、当該ページが書き込み済であることを表す。
【００５５】
なお、ＣＰＵ１２２がアクセス装置１０１の書き込み命令に応じて無効物理ブロックをカレントブロックとして取得する指示をアドレス管理部１２６に転送した際に、電源遮断判断部１３２がカレントブロックステータステーブル１３１をオールクリアする。そしてワード０に物理ブロックアドレスＰＢＡを、ワード１に論理ブロックアドレスＬＢＡをセットし、その後カレントブロックの各ページの書き込み処理に応じて、識別フラグをセットする。
【００５６】
エラー解消部１２９は、代替・修復処理部１５１と、修復ページ特定部１５２と、ページ情報指示部１５３とから構成される。
【００５７】
代替・修復処理部１５１は、エラーページ番号に基づき、コピー処理、リトライ処理と修復処理を行うものである。コピー処理はエラー発生ページを含む物理ブロック（書き込み対象ブロック）に既に記憶されているデータを他の消去済みブロックにコピーするものであり、リトライ処理は書き込み対象ブロックのエラー発生ページに書き込もうとしていたデータをこの消去済みブロックのエラーの発生したエラーページに対応するページに対して再度書き込む処理である。修復ページをエラーページと同一のメモリセルを構成する他のページとすると、修復処理とは前記消去済みブロックの修復ページに対応するページに対して修復データを書き込む処理を指示するものである。
【００５８】
ページ情報指示部１５３はページ情報テーブル１５４を有し、メモリセルに保持するデータのページに関するページ情報を記憶するものである。図８は、ページ情報指示部１５３に含まれるページ情報テーブル１５４のフォーマットを表すアドレスマップである。ページ情報テーブル１５４は１２９ワードからなり、先頭から１２８ワードはページ番号（ＰＮ）０〜１２７の順に配列されている。各ワードにはページ番号関係情報１５４ａとページ種別情報１５４ｂを記憶する。ページ番号関係情報１５４ａは同一グループ内の他のページ番号を記憶する。ページ種別情報１５４ｂは、図中ＰＮと記載されたページ番号が第１ページか第２ページなのかを識別するフラグを記憶する。ここで“０”は第１ページ、“１”は第２ページを示す。なお、前述したとおり、第１ページは第２ページよりも低順位アドレス側のページのことである。
【００５９】
ページ情報テーブル１５４の最終ワードには、１つのメモリセルによって構成されるページ数、ここでは２が記憶されている。なお、図８のページ情報テーブル１５４は、図２に示した多値ＮＡＮＤフラッシュメモリのページ構成をテーブル化したものであり、その内容は多値ＮＡＮＤフラッシュメモリの種類によって変わる。
【００６０】
なお、ページ情報テーブルはＳＲＡＭなどの揮発性ＲＡＭや、強誘電体メモリ（ＦｅＲＡＭ）などの不揮発性ＲＡＭあるいはＲＯＭで構成される。揮発性ＲＡＭの場合は、電源立ち上げ時の初期化処理においてＣＰＵ１２２が不揮発性メモリ１１０から読み込んだデバイスコードに基づいて、ＣＰＵ１２２がＳＲＡＭなどに構成すればよい。具体的な構成方法のひとつとして、予めＲＯＭ１２４などにデバイス種ごとに当該ページ情報テーブルを記憶しておき、デバイスコードに基づいて選択的にＲＯＭ１２４からＳＲＡＭに転送してもよい。また、図２９に示すような、比較的ページ構成が簡単な多値ＮＡＮＤフラッシュメモリであれば、偶数／奇数の関係性（規則性）があるので、ページ情報指示部１５３はページ情報テーブルを有する必要はなく、デバイスコードに基づいてビット演算でページ番号関係情報を算出することができる。具体的には、図２９に示すような多値ＮＡＮＤフラッシュメモリであれば、数式（１）に基づいて算出することができる。ここで演算子＾は、排他的論理和をとる演算子である。
ページ番号関係情報＝ページ番号  ＾  0x01  ・・・（１）
【００６１】
図９は、バッファメモリ１２５の記憶フォーマットを示すアドレスマップである。バッファメモリ１２５は１クラスタ分、即ち１６ｋバイトの容量を持つ不揮発性ＲＡＭで構成される。不揮発性ＲＡＭとしては強誘電体メモリ（ＦｅＲＡＭ）や、磁性記録式随時書き込み読み出しメモリ（ＭＲＡＭ）、オボニックユニファイドメモリ（ＯＵＭ）、レジスタンスＲＡＭ（ＲＲＡＭ）などの不揮発性ＲＡＭを用いる。なおバッファメモリ１２５はＳＲＡＭなどの揮発性ＲＡＭで構成してもよいが、信頼性が少し低下する。
【００６２】
バッファメモリ１２５は３２ワードから構成される。各ワードは５１２バイトのデータ領域１２５ａと、２１ビットの論理アドレス領域１２５ｂと、２ビットのデータ保持状態フラグ１２５ｃとからなる。４ワード分のデータ領域は、１ページ分のデータを一時記憶する。論理アドレス領域１２５ａはそのページのデータの論理アドレスを示す。データ状態保持フラグ１２５ｃは、２進数で“００”はデータ領域に何も書かれておらずアクセス装置１０１からのデータ待ち状態、“１１”はデータを保持しており、不揮発性メモリ１１０へのデータ転送待ち状態、“１０”は不揮発性メモリ１１０へのデータ転送中であることを示す。図９の例では、ワード番号０〜３は既にデータが記憶されていたが不揮発性メモリ１１０に転送されて書き込みが完了した状態であり、ワード番号４〜７は記憶されているデータが現在不揮発性メモリ１１０に転送中であり、ワード番号８〜１１は記憶されているデータが現在不揮発性メモリ１１０への転送待ち状態であることを表す。ＣＰＵ１２２はデータ保持状態フラグを参照して、バッファメモリ１２５のリードポインタＲＰとライトポインタＷＰを決める。リードポインタＲＰとは現在読み出し中の領域（ここではワード番号４〜７）を特定し、ライトポインタＷＰとは次に書き込む領域（ここではワード番号１２〜１５）を特定するものである。これらのポインタはＲＡＭ１２３に一時記憶され逐次更新されるものである。この例においては、リードポインタＲＰはワード番号４を指し、ライトポインタＷＲはワード番号１２を指す。
【００６３】
修復ページ特定部１５２は、フローチャートを用いて後述するように、エラーページ特定部１２８より受信したエラーページ番号とエラー種別フラグを代替・修復処理部１５１に転送する。そして当該エラーページ番号に基づいて、ページ情報指示部１５３が有するページ情報テーブルを参照するか、あるいは数式１の演算を実行することにより修復ページを決定し、それを代替・修復処理部１５１に転送するものである。
【００６４】
以下に、不揮発性記憶装置１００の動作について説明する。
［初期状態］
まず、出荷直後における不揮発性メモリ１１０や論理物理変換テーブル１４２などの内容について説明する。不揮発性メモリ１１０内には、デバイスコードやセキュリティ情報等のシステム情報を記憶したシステム領域と、ユーザがデータを読み書きする通常領域とがある。システム領域内の各種情報は、出荷前にメーカ側で書き込まれるものである。
【００６５】
出荷後の不揮発性メモリ１１０内の通常領域の良ブロックは全て消去された状態となっており、物理ブロックの先頭ページの管理領域ＭＲ（図３のハッチング部分）には、ステータスフラグと論理ブロックアドレスとが設定されている。このステータスフラグは、初期状態であるため、値１１（無効ブロック）もしくは値１０（不良ブロック）となっている。
【００６６】
論理ブロックアドレスについては、１６進数で値ＦＦＦが設定されている。なお、値ＦＦＦとは不揮発性メモリ１１０の物理アドレスがＦＦＦ番地ではなく、何も物理アドレスが設定されていないことを意味する。ゆえに、不揮発性メモリ１１０の物理アドレスがＦＦＦ番地の物理ブロックは使用できない物理ブロックであり、アクセス装置１０１が管理する論理アドレスは、物理ブロックサイズである２５６ｋバイト単位で００００番地〜ＦＦＦ番地までの４０９６番地よりも少ない空間を指定するものとする。
【００６７】
［電源立ち上げ時の初期化処理］
図１０Ａ，図１０Ｂは電源投入後の処理を示すフローチャートである。電源が投入されると、まず、ＣＰＵ１２２をリセットし、ＲＯＭ１２４に記憶されたプログラムに基づいて初期化処理を行う（Ｓ１０１）。かかる初期化処理においては、まず、ＲＡＭ１２３やバッファメモリ１２５をオールクリアする。読み書き制御部１２７を介して、不揮発性メモリ１１０内のシステム領域からデバイスコードを読み出し、当該デバイスコードに基づいて不揮発性メモリ１１０の種類や容量を特定する（Ｓ１０２）。
【００６８】
次いで不揮発性メモリ１１０から読み出したデバイスコ−ドに基づいて、ページ情報指示部１５３内にページ情報テーブル１５４を構成する（Ｓ１０３）。あるいはページ情報指示部１５３が当該デバイスコ−ドに基づいた演算機能（数式１に対応）によりページ構成情報を把握してもよい。
【００６９】
次に電源遮断判断部１３２は、読み書き制御部１２７を介して、不揮発性メモリ１１０の全ての物理ブロックの先頭ページの管理領域を読み出す（Ｓ１０４）。その後、アドレス管理部１２６内に、物理領域管理テーブル１４１と論理物理変換テーブル１４２とを作成する（Ｓ１０５）。
【００７０】
その後、ＣＰＵ１２２はカレントブロックステータステーブル１３１をチェックすることにより、電源立ち上げ前の書き込み動作などで電源遮断によるエラーが発生していないかどうかをチェックする。ここでは出荷直後の状態、すなわち書き込み中のページがなかった場合について説明し、書き込み中のページがあった場合については後で詳細に説明する。書き込み中のページがなければ、図１０ＡのフローチャートにおいてＳ１０７，Ｓ１０８より直ちに図１０ＢのステップＳ１１６に進み、アクセス装置１０１からの読み書きコマンド等の受付許可状態に入る。
【００７１】
コマンド等の受付許可状態に入った後、不揮発性記憶装置１００が未フォーマットの場合は、アクセス装置１０１は、ＦＡＴファイルシステムに基づいて不揮発性記憶装置１００をフォーマットし、論理アドレス空間を構成する。その後、通常動作時の処理に移行する。
【００７２】
［通常動作時の処理］
次に、初期化後の通常動作時の処理について説明する。なお本発明は、書き込み処理におけるエラー解消を改善するものであるので、ここでも書き込み処理についてのみ説明する。また、通常、アクセス装置１０１からはクラスタ単位での書き込まれる場合が多いので、簡単のために、クラスタ単位での書き込みについてのみ説明する。
【００７３】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００に転送する。ホストＩＦ１２１は書き込みコマンドを受信すると、ＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ１２５に書き込む。
【００７４】
不揮発性記憶装置１００はアクセス装置１０１からの書き込みコマンドとともに転送された１クラスタ分のデータと論理アドレスを、ホストＩ／Ｆ１２１を介してバッファメモリ１２５に転送する。バッファメモリ１２５は不揮発性ＲＡＭであるので、電源立ち上げ時の初期化処理直後においても、電源立ち上げ前に一時記憶されたデータなどはバッファメモリ１２５に残った状態である。但し、出荷直後においては全領域オールクリアされている。ここでは、簡単のため、出荷直後の状態について説明する。
【００７５】
バッファメモリ１２５のデータ保持状態フラグは２進数で全て値００、すなわちアクセス装置１０１からのデータ転送待ち状態になっている。その場合はバッファメモリ１２５の低順位アドレス側、すなわちワード番号が０側から昇順にデータと論理アドレスを記憶していく。
【００７６】
このときバッファメモリ１２５に何も記憶されていない場合は、バッファメモリ１２５内のデータ保持フラグが全て値００であり、ライトポインタＷＰとリードポインタＲＰともにワード番号０をポイントする。そしてＣＰＵ１２２は、ライトポインタがポイントするワード番号０の記憶位置から昇順に１クラスタ分のデータを不揮発性メモリ１１０に記憶していき、逐次ライトポインタをインクリメントし、記憶したワードのデータ保持フラグを値１１にセットする。バッファメモリ１２５の全ての領域にデータが一時記憶された段階で、アクセス装置１０１からの１クラスタ分の書き込み処理は完了する。ＣＰＵ１２２はホストＩＦ１２１を介してアクセス装置１０１に対して「対応するクラスタが正常に書き込めたこと」を通知する。
【００７７】
上記と併行してホストＩＦ１２１がアクセス装置１０１からの書き込みコマンドを受信すると、それをトリガーとしてＣＰＵ１２２はアドレス管理部１２６に対してひとつの書き込み先の物理ブロックの取得を指示する。アドレス管理部１２６は物理領域管理テーブル１４１を参照し、ランダムに選択された番地から昇順に無効ブロックをサーチし、最初に見つかった無効の物理ブロック、例えばＰＢ１０を書き込み対象の物理ブロックとする。これにより書き込み対象ブロックを特定ブロックに集中させないウェアレベリングを実現することが可能となる。アドレス管理部１２６は読み書き制御部１２７を介してＰＢ１０の消去命令を不揮発性メモリ１１０に送信し、ＰＢ１０を消去した後にデータの書き込みを行う。
【００７８】
次に、バッファメモリ１２５に一時記憶されたデータを不揮発性メモリ１１０内の物理ブロックへ書き込む流れについて、図１１Ａを用いて説明する。ＰＢ１０やＰＢ５は不揮発性メモリ１１０内の物理ブロックを示す。なお図１１Ａの左端はバッファメモリ１２５であり、ＬＡ０〜ＬＡ３１までの領域がバッファサイズである。このバッファに記録される領域は図１１Ａにおいて順次下方にずれていき、後述するようにエラーが発生した時刻、すなわちＰＢ１０のページ１７への書き込みがなされた時刻において、バッファメモリ１２５は実線で囲んだ状態にある。
【００７９】
ＣＰＵ１２２は、バッファメモリ１２５へ記憶させる一方で、記憶状態に応じてＰＢ１０へのデータの書き込み処理を併行して行う。具体的にはライトポインタＲＰがリードポインタより４ワード分以上先行した位置をポイントしていた場合、ＰＢ１０へのデータの書き込み指示をアドレス管理部１２６に発行する。例えばリードポインタＲＰがワード番号０をポイントし、ライトポインタＷＰがワード番号４をポイントしている場合は、バッファメモリ１２５のワード番号０〜３までの領域にデータが一時記憶されていることになるので、ＰＢ１０に１ページ分のデータ書き込み指示を発行する。
【００８０】
ＣＰＵ１２２は、バッファメモリ１２５のワード番号０〜３までの領域に記憶されたデータＬＡ０〜ＬＡ３を読み書き制御部１２７に転送し、バッファメモリ１２５のワード番号０〜３のデータ保持フラグを値１０にセットする。それと併行して、アドレス管理部１２６は、バッファメモリ１２５に記憶された論理アドレスＬＡを参照し、図４の論理アドレスフォーマット中のページ番号を書き込み先のページ番号（カレントページ番号）とし、逐次読み書き制御部１２７とエラーページ特定部１２８に転送する。
【００８１】
読み書き制御部１２７は、不揮発性メモリ１１０内のＰＢ１０の対応するページにデータを書き込み、書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部１２８とＣＰＵ１２２に通知する。通知の結果、エラーが発生して正常に書き込めなかった場合は、エラー解消処理に移行する。
【００８２】
更に、エラーが発生しなかった場合は、ＣＰＵ１２２は上記レディ／ビジーフラグの受信後、バッファメモリ１２５のワード番号０〜３のデータ保持フラグを値００にセットし、リードポインタＲＰがワード番号４をポイントするように更新する。そしてライトポインタがワード番号８以上のワード番号をポイントしていれば、ワード番号４〜７に記憶されたデータをＰＢ１０へ書き込む。
【００８３】
以上のようして、バッファメモリ１２５に記憶したデータを順次ＰＢ１０の対応するページに書き込んでいく。なおアクセス装置１０１からバッファメモリ１２５へのデータの一時記憶においては、上述したライトポインタに応じて巡回的にバッファメモリ１２５に書き込む。つまり、ライトポインタがワード番号２８の次はワード番号０に戻ることになる。その際、ワード番号０のデータ保持状態フラグ値が００でない場合は、バッファメモリ１２５への一時記憶を禁止する状態を表しており、その場合は、もしアクセス装置１０１が書き込みコマンドのデータ転送中であれば、メモリコントローラ１２０はホストＩＦ１２１を介してアクセス装置１０１に対してデータの転送を中断するためのウェイト信号を出力する。アクセス装置１０１はこのウェイト信号が解除されるまでデータ転送を中断する。こうしてバッファメモリ１２５に記憶された論理アドレスＬＡ０〜ＬＡ３１のデータがＰＢ１０のページ０〜７に記憶される。この処理は図１１Ａの矢印Ａに対応する。
【００８４】
アクセス装置１０１が継続して論理アドレスＬＡ３２〜ＬＡ６３の１クラスタ分のデータを書き込む場合は、これと同様の処理を行い、ＰＢ１０のページ８〜１５に記憶する。この処理は図１１Ａの矢印Ｂに対応する。更に、アクセス装置１０１が継続して論理アドレスＬＡ６４〜ＬＡ９５の１クラスタ分の書き込み処理を行う場合は、上述した一連の処理と同様の処理を行い、ＰＢ１０のページ１６〜２３に記憶する。
【００８５】
［フラッシュ異常が発生した際のエラー解消処理］
ここで、ＰＢ１０のページ１７への書き込みにおいて、フラッシュ異常が発生して正常に書き込めなった場合の処理について、図１１〜図１４を用いて説明する。
【００８６】
図１２において、フラッシュ異常判断部１３３はＰＢ１０のページ１７への書き込みへの書き込みに際して、アドレス管理部１２６よりカレントページ番号を受信する（Ｓ２０１）。ＰＢ１０のページ１７への書き込みが完了すると、不揮発性メモリ１１０がメモリコントローラ１２０に対してエラーステータスを転送し、フラッシュ異常判断部１３３がこれを受信する（Ｓ２０２）。フラッシュ異常判断部１３３はエラーステータスをチェックし、エラーが発生したことを表すフラグが立っていた場合（Ｓ２０３）、ＰＢ１０のページ１７の書き込み中にフラッシュ異常が発生したと認識する。そしてページ１７をエラー発生ページとして、エラーページ番号（物理アドレス）とエラー種別フラグを値１にセットして修復ページ特定部１５２に転送する（Ｓ２０４）。なお、エラー種別フラグは、値０の場合は電源遮断によるエラー、値１の場合はフラッシュ異常によるエラーであることを表す。
【００８７】
修復ページ特定部１５２は、図１３に示すフローチャートにおいて、エラーページ特定部１２８から転送されたエラーページ番号とエラー種別フラグを受信し（Ｓ３０１）、エラーページ番号をページ情報指示部１５３に転送する。ページ情報指示部１５３はページ情報テーブル１５４を参照することによって、そのエラーページ番号に対するページ番号関係情報１５４ａを修復ページ特定部１５２に転送する。例えば、エラーページ番号がページ１７であれば、関係ページ番号はページ１１を修復ページ特定部１５２に転送することとなる。
【００８８】
次に関係ページ番号がエラー発生ページより低順位アドレスかどうかを判断する（Ｓ３０３）。２値あるいは多値によらずＮＡＮＤフラッシュメモリは、低順位アドレス側からデータを書き込まなければならないという制約がある。したがって、関係ページ番号がエラー発生ページより低順位アドレスでなければ、関係ページ番号のページにはデータが書き込まれていないことになるので、関係ページ番号のページに対するデータの修復処理は不要となる。例えば関係ページ番号がページ１１であり、エラーページ番号がページ１７の場合は、関係ページ番号を修復ページとして代替・修復処理部１５１に転送する（Ｓ３０４）。更に修復ページ特定部１５２は、エラーページ番号とエラー種別フラグを代替・修復処理部１５１に転送するとともに、制御を代替・修復処理部１５１に移す（Ｓ３０５）。なおＳ３０４を実行しなかった場合、すなわち修復ページ特定部１５２が修復ページを代替・修復処理部１５１に転送しなかった場合は、修復処理を行わないとする。
【００８９】
代替・修復処理部１５１に制御が移ると、図１４に示すように、エラー種別フラグが１であるかどうかを判別する（Ｓ４０１）。このフラグが１でなければ処理を終了する。このフラグが１、即ちフラッシュ異常によるエラーであれば、ステップＳ４０２に進み、代替・修復処理部１５１が代替処理（コピー処理と修復処理とリトライ処理）を行う（Ｓ４０２）。
【００９０】
コピー処理とは、図１１Ｂのエラー解消処理において、ＰＢ１０からＰＢ５への白抜き矢印Ｄ，Ｆに示すように、ＰＢ１０の誤りのないページに書き込まれたデータを、別の消去済みの物理ブロック（例えばＰＢ５）に転写する処理である。コピー処理において、まずアドレス管理部１２６がコピー先ブロックとして、消去済みの物理ブロックＰＢ５を取得する（Ｓ４０３）。代替・修復処理部１５１はエラー発生ページより低順位アドレスのページであって修復ページ（ページ１１）を除く全てのページのコピー処理を実行する（Ｓ４０４）。ここではエラー発生ページが１７、修復ページが１１であるので、ページ０〜１０とページ１２〜１６をコピーする。
【００９１】
次いでステップＳ４０５において修復処理を行う。修復処理とは、バッファメモリ１２５に残っているデータを用いて修復ページに再び書き込む処理である。例えば図１１Ｂのエラー解消処理では、破線矢印Ｆに示すようにバッファメモリ１２５中からＬＡ４４〜４７に対応するデータをＰＢ５のページ１１（修復ページ）に書き込む。ここで、修復ページに書き込むべきデータがバッファメモリのＬＡ４４〜４７に対応するデータであることを判断する方法について説明する。
【００９２】
図４に示す論理アドレスフォーマットにおいて、ページ１１はＬＡ４４〜４７に対応するので、代替・修復処理部１５１はバッファメモリ１２５の論理アドレス領域１２５ｂを調べることにより、修復ページに書き込むべきデータがバッファメモリ１２５のどこに記憶されているかがわかる。ここでバッファメモリ１２５は、不揮発性メモリ１１０の同一のメモリセルを構成するページのアドレスの間隔の最大値分の容量以上であることが必要となる。例えば図２の不揮発性メモリ１１０では最大で６ページ分（１２ｋバイト分）なので、バッファメモリ１２５は１２ｋバイト分以上のバッファサイズを持っていなければならない。本実施の形態においては、少し余裕をもたせて１６ｋバイト分のバッファサイズをもつこととした。
【００９３】
さて、リトライ処理とは、図１１Ｂのエラー解消処理において、ＰＢ１０のページ１７に書き損じたデータを再度ＰＢ５のページ１７に書き込む処理であり、図１１Ｂの破線矢印Ｇである。リトライ処理において、アドレス管理部１２６がエラー発生ページのリトライ処理を実行する（Ｓ４０６）。書き込みに成功した場合は（Ｓ４０７）、ページ１８以降の書き込みを継続する（Ｓ４０８）。失敗した場合は、アクセス装置に対して「対応するクラスタが正常に書き込めなったこと」を通知し（Ｓ４０９）、当該クラスタの再書き込みコマンドをうながす。
【００９４】
以上説明した代替処理によって、フラッシュ異常によるエラーを解消することができる。なおＰＢ１０は次に消去して使えるようにするために、アドレス管理部１２６が物理領域管理テーブル内の対応するステータスフラグを無効ブロックにセットする。
【００９５】
［電源遮断が発生した際のエラー解消処理］
次に電源遮断が発生した際のエラー解消処理について図１５〜図１８を用いて説明する。まず図１５を用いて通常動作時の処理における電源遮断判断部１３２のフローについて説明する。ここで通常処理とは、電源立ち上げ直後に実行される初期化処理以外の処理、言い換えればアクセス装置１０１からのコマンド受付が許可された以降の処理をさす。このフローチャートは、カレントブロックステータステーブル１３１の初期設定処理及び更新処理からなる。初期設定処理において、まずアクセス装置１０１からの書き込み指示に応じて、新規に無効物理ブロックを取得するかどうか判断する（Ｓ５０１）。取得する場合はカレントブロックステータステーブル１３１をオールクリアし（Ｓ５０２）、物理ブロックアドレスＰＢＡ１０をカレントブロックステータステーブル１３１のワード０にセットし（Ｓ５０３）、論理ブロックアドレスＬＢＡをカレントブロックステータステーブル１３１のワード１にセットする（Ｓ５０４）。
【００９６】
それ以降Ｓ５０５〜Ｓ５０９の処理は、新規に無効物理ブロックを取得するかしないかに関わらず、ＰＢ１０の各ページへの書き込み毎に実行される。電源遮断判断部１３２は、アドレス管理部１２６よりカレントページ番号を受信し（Ｓ５０５）、バッファメモリ１２５に一時記憶されたデータを読み出す際に、カレントページに対応する書き込み状況の識別フラグの上位側ビットを値１にセットする（Ｓ５０６）。また読み書き制御部１２７が不揮発性メモリ１１０にデータを書き込んだ直後にレディ／ビジーフラグを受信する（Ｓ５０７）。レディになった際に（Ｓ５０８）、カレントページに対応する識別フラグの下位側ビットを値１にセットすることにより（Ｓ５０９）、所定ページのプログラムが完了したことをカレントブロックステータステーブル１３１に履歴として残す。
【００９７】
以上のように、カレントブロックステータステーブル１３１に、各ページへの書き込み状況を記録しておくことにより、どのページへの書き込み中に電源遮断が発生したかを、電源遮断直後の電源立ち上げ時の初期化処理において識別できるようにしておく。図７に示したカレントブロックステータステーブル１３１の例は、ページ０〜１６までは書き込みが完了し、ページ１７の書き込み中に電源遮断が発生したことを表している。
【００９８】
ページ１７の書き込み中に電源遮断が発生した後に、初期化処理を行った場合について図１０Ａを用いて説明する。電源遮断判別部１３２はカレントブロックステータステーブル１３１の識別フラグをチェックする（Ｓ１０６）。書き込み中のページがあった場合（Ｓ１０７）、該当ページをエラー発生ページとして、エラーページ番号とエラー種別フラグを代替・修復処理部１５１に転送する（Ｓ１０９）。
【００９９】
エラーが発生していた場合は、Ｓ１０９の処理の後、図１０Ｂに進み修復ページの特定処理を行う（Ｓ１１０）。これは、前述した図１３のフローチャートどおりである。すなわち、関係ページ番号がエラー発生ページより低順位アドレスの場合は（Ｓ３０３）、修復ページ特定部１５２は、修復ページを代替・修復処理部１５１に転送し（Ｓ３０４）、更に、代替・修復処理部１５１に、エラーページ番号とエラー種別フラグを転送する（Ｓ３０５）。関係ページ番号がエラー発生ページより低順位アドレスでない場合は（Ｓ３０３）、修復ページ特定部１５２は、代替・修復処理部１５１に、エラーページ番号とエラー種別フラグを転送するが（Ｓ３０５）、修復ページは転送しない。
【０１００】
さて代替・修復処理部１５１は修復ページ特定部１５２から転送されたエラー種別フラグをチェックし、値０の時、すなわち電源遮断によるエラーと判断した場合、エラー解消を実行する。図１６はこのエラー解消処理を示す。代替・修復処理部１５１は代替処理（コピー処理と修復処理）を開始する（Ｓ１１２）。代替・修復処理部１５１はコピー先ブロックとして無効の物理ブロックＰＢ５を取得する（Ｓ１１３）。次いでエラー発生ページ（ページ１７）より低順位アドレスのページ（ページ０〜１６）のコピー処理（矢印Ｄ，Ｅ）を実行する。但し修復ページ（ページ１１）のコピーは行わない。最後に代替・修復処理部１５１は修復データをバッファメモリ１２５から取得し、ページ番号１１の修復ページに書き込む（Ｓ１１５、矢印Ｆ）。なお修復データの取得方法は、前述したフラッシュ異常のときの処理と同様である。
【０１０１】
電源遮断によるエラーの場合は、フラッシュ異常によるエラーと異なり、リトライ処理は行わない。その理由はエラーが発生したクラスタに関して、ＣＰＵ１２２はアクセス装置１０１に対して、「対応するクラスタが正常に書き込めたこと」を通知していないので特にリトライ処理をする必要性がない。加えて、電源遮断によってエラー発生ページ（ページ１７）に書き込むべきデータが消失してしまっているので、リトライ処理をすることができない。従って電源遮断の場合においては、少なくとも正常に書き込めたことをアクセス装置１０１に通知したクラスタ分についてコピー処理を実行すればよい。言い換えれば、エラー発生ページより低順位アドレスのページ（修復ページ以外）についてのコピー処理と、修復ページの修復処理を実行しておけば十分である。
【０１０２】
［論理アドレスが不連続に書き込まれた場合のエラー解消処理］
図１１Ａ，図１１Ｂや図１６においては、論理アドレスが連続して書き込まれる場合、即ち論理アドレスＬＡ０〜ＬＡ３１に続いて論理アドレスＬＡ３２〜ＬＡ６３が書き込まれる場合のエラー解消処理について説明した。次にクラスタが論理アドレス上、不連続の場合のエラー解消処理について図１７Ａ，１７Ｂを用いて説明する。不連続とは、例えば論理アドレスＬＡ０〜ＬＡ３１の書き込みの後に、論理アドレスＬＡ３１〜ＬＡ６３が書き込まれることなく、論理アドレスＬＡ６４以降の書き込み指示がきた場合のことをさす。
【０１０３】
論理アドレスＬＡとページとの関係は、論理アドレスフォーマットに従うものであるので、論理アドレスＬＡ６４以降の書き込みは、ＰＢ１０のページ８からではなく、ページ１６以降に書き込まれる。すなわちＰＢ１０のページ８〜１５は消去状態のままである。
【０１０４】
エラー発生前の処理において、論理アドレスＬＡ３２〜ＬＡ６３に対応する旧データが物理ブロックＰＢ１４に記憶されていた場合、ＰＢ１０のページ１６に書き込み前に、その旧データを矢印Ｂに示すようにＰＢ１０のページ８〜１５にコピーする。その後論理アドレスＬＡ６４以降のデータをＰＢ１０のページ１６以降に書き込む（矢印Ｃ）。
【０１０５】
その後、ＰＢ１０のページ１７でフラッシュ異常が発生した場合に、エラー解消処理のうち矢印Ｄ，Ｅのコピー及びリトライ処理Ｇについては図１１Ｂの場合と同様である。ここでは図１１Ｂの処理と異なり、図１７Ｂに示すように修復ページに対応するデータを旧データが記憶されているＰＢ１４のページ１１から取得する（矢印Ｈ）。
【０１０６】
修復ページに対応するデータをバッファメモリ１２５から取得するか否かについては、代替・修復処理部１５１がバッファメモリ１２５内の論理アドレス領域をチェックすることによって決定する。図１７Ａに示す場合は、バッファメモリ１２５内には、修復ページに書き込むべきデータ、すなわち論理アドレスＬＡ３２〜ＬＡ６３に対応するデータが記憶されていないので、不揮発性メモリ１１０から取得することとなる。
【０１０７】
この場合、代替・修復処理部１５１はアドレス管理部１２６を介して論理物理変換テーブル１４２をチェックし、論理アドレスＬＡ３２〜ＬＡ６３に対応する物理ブロックアドレスＰＢＡが割り当てられているかどうかを判断する。割り当てられていた場合は、物理領域管理テーブル１４１をチェックし、対応する物理ブロックアドレスＰＢＡのステータスフラグを調べ、有効データがある場合は、図１７Ｂの矢印Ｈに示すような修復処理を行う。有効データがない場合、すなわちステータスフラグが無効ブロックの場合は、修復処理を行わない。
【０１０８】
以上、説明したように、本発明の第１の実施の形態は、エラー解消部１２９が修復処理を行うようにしたので、２ページに跨って同一のメモリセルを構成する不揮発性メモリ１１０の特有のエラー、すなわち第２ページの書き込みエラーによって第１ページに記憶されていたデータが変化してしまうエラーを解消することができる。
【０１０９】
なお、バッファメモリ１２５は強誘電体メモリ（ＦｅＲＡＭ）などの不揮発性メモリで構成する例を示したが、従来のようにＳＲＡＭなどの揮発性ＲＡＭで構成することも可能である。但し、その場合は電源遮断が発生した場合は、バッファメモリ１２５内の修復データが消失してしまうので、電源遮断によるエラー発生時にはエラー解消はできない。言い換えれば、フラッシュ異常によるエラー発生時のエラー解消のみに適用できる。
【０１１０】
また不揮発性メモリ１１０は、各メモリセルが２ページに跨ってデータを保持するタイプのメモリであったが、３ページに跨ってデータを保持するタイプのメモリであっても、本発明を適用することができる。またメモリセルがページ内に閉じている、例えば２値ＮＡＮＤフラッシュメモリを不揮発性メモリ１１０として使用してもかまわない。その場合は、ページ情報指示部１５３が関係ページ番号として常にページ０を修復ページ特定部１５２に返すようにすることで、修復処理の実行をマスクできる。
【０１１１】
表１は、従来の不揮発性記憶システムと、本発明の第１の実施の形態における不揮発性記憶システムのエラー処理の相違点についてまとめたものである。本発明はエラー解消処理を追加することにより、従来の課題である、多値ＮＡＮＤフラッシュメモリなどの複数ページに跨ってメモリセルを構成する不揮発性メモリに特有のエラーにも対応することができる。
【０１１２】
【表１】
2006318366.tif 000003
【０１１３】
（第２の実施の形態）
以下、本発明の第２の実施の形態による不揮発性記憶システムについて説明する。なお
第２の実施の形態は、２つの物理ブロックに対して同じデータを書き込む処理を行うことによって、書き込みエラーが発生して一方の物理ブロックの所定ページに記憶されていたデータが変化した場合、他方の物理ブロックから修復データを取得するものである。
【０１１４】
図１８は、不揮発性記憶システムのブロック図である。不揮発性記憶システムは不揮発性記憶装置１００Ａとアクセス装置１０１とからなる。アクセス装置１０１は、図１に示した第１の実施の形態の不揮発性記憶システムを構成するアクセス装置１０１と同様である。不揮発性記憶装置１００Ａは、メモリコントローラ１２０Ａと、フラッシュメモリからなる不揮発性メモリ１１０とを有している。不揮発性メモリ１１０は、第１の実施の形態と同様である。
【０１１５】
次に、不揮発性記憶装置１００Ａの詳細について述べる。不揮発性記憶装置１００Ａに備えられたメモリコントローラ１２０Ａは、ホストＩＦ１２１と、メモリコントローラ１２０Ａ全体の制御を行うＣＰＵ１２２とを備えている。また、ＣＰＵ１２２の作業領域であるＲＡＭ１２３と、ＣＰＵ１２２が実行するプログラムを格納したＲＯＭ１２４とを有している。
【０１１６】
さらに、メモリコントローラ１２０Ｂは、不揮発性メモリ１１０へアクセスする際にデータを一時記憶するためのバッファメモリ２１０と、不揮発性メモリ１１０のアドレスを指定するアドレス管理部１２６とを有している。バッファメモリ２１０の記憶内容は第１の実施の形態と同様である。ＳＲＡＭなどの揮発性メモリで構成される。なお、不揮発性ＲＡＭで構成してもかまわない。アドレス管理部１２６は実施の形態１の不揮発性記憶システムを構成するアドレス管理部１２６と同様である。
【０１１７】
読み書き制御部２２０は、書き込みブロック取得部２４２の指示によってアドレス管理部１２６が取得した複数、例えば２つの物理ブロックに対して、同一データを書き込む機能を有するものである。この場合の書き込みは時間差をもたせて同一のページ番号の位置に書き込む。
【０１１８】
エラーページ特定部２３０は、カレントブロックステータステーブル（ＣＢＳＴ）２３１と電源遮断判断部１３２とフラッシュ異常判断部１３３を含む。電源遮断判断部１３２とフラッシュ異常判断部１３３は、第１の実施の形態と同様である。カレントブロックステータステーブル２３１は図７に示した第１の実施の形態のカレントブロックステータステーブル１３１を複数有する。この数は並列書き込みをする物理ブロック数に相当する。
【０１１９】
エラー解消部２４０は、代替処理部２４１と、書き込みブロック取得部２４２と、ページ情報指示部２４３とから構成される。代替処理部２４１は、エラーページ特定部２６０から転送されたエラー発生ページアドレスとエラー種別フラグを受信し、エラー種別フラグが値１、すなわちフラッシュ異常によるエラーの場合に、エラー発生ページを含む物理ブロックの代替処理を行う。代替処理部２４１は、エラー発生ページより低順位アドレスのページのコピー処理を実行し、さらに、コピー先の物理ブロックにおいて、エラー発生ページのページ番号と同じページに再書き込み（以降リトライ処理とする）を実行する。ページ情報指示部２４３は、書き込みブロック取得部２４２からの出力要求信号に応じてページ数Ｎを返すものである。なおページ数Ｎとは、同じメモリセルで構成されるグループのページ数である。第２の実施に形態においては、ページ情報としてページ数Ｎだけで十分なので、図８に示したページ情報テーブルを持つまでもなく、単にページ数Ｎのみを記憶するか、あるいは不揮発性メモリ１１０から読み込んだデバイスコードに基づくビット操作処理によってページ数Ｎを指示できるようにしてもよい。書き込みブロック取得部２４２は、アクセス装置１０１からの書き込みコマンドに応じて、ページ数Ｎに基づきＮ個の書き込み対象物理ブロックを取得するブロックである。
【０１２０】
次に不揮発性記憶装置１００Ａの動作について説明する。
［初期状態］
出荷直後の状態については、第１の実施の形態と同様である。
【０１２１】
［電源立ち上げ時の初期化処理］
次に、図１０Ａ，図１０Ｂに示した電源立ち上げ時の初期化処理は第１の実施の形態とほぼ同様である。但し、図８に示したページ情報テーブルは、単にページ数Ｎのみを記憶するものとする。
【０１２２】
［通常動作時の処理］
次に、初期化後の通常動作時の処理について説明する。なお本発明は、書き込み処理におけるエラー解消を改善するものであるので、ここでも書き込み処理についてのみ説明する。また、通常、アクセス装置１０１からはクラスタ単位での書き込まれる場合が多いので、簡単のために、クラスタ単位での書き込みについてのみ説明する。
【０１２３】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００に転送する。ホストＩＦ１２１は書き込みコマンドを受信すると、ＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ２１０に書き込む。
【０１２４】
データ保持状態フラグは２進数で全て値００、すなわちアクセス装置１０１からのデータ転送待ち状態になっている。その場合はバッファメモリ２１０の低順位アドレス側、すなわちワード番号が０側から昇順にデータと論理アドレスを記憶していく。
【０１２５】
図１９は、書き込みブロック取得部２４２とページ情報指示部２４３の処理内容を示したフローチャートである。
【０１２６】
上記と併行してホストＩＦ１２１がアクセス装置１０１からの書き込みコマンドを受信すると、図１９に示すようにコマンド受信を書き込みブロック取得部２４２に通知する（Ｓ６０１）。書き込みブロック取得部２４２はページ情報指示部２４３に対して出力要求信号を転送し、ページ情報指示部２４３はページ数Ｎを書き込みブロック取得部２４２に返す（Ｓ６０２）。なお、本実施の形態ではＮ＝２である。書き込みブロック取得部２４２はアドレス管理部１２６に対して、Ｎ個（２個）の書き込み先物理ブロックの取得を指示する（Ｓ６０３）。
【０１２７】
アドレス管理部１２６は物理領域管理テーブル１４１を参照し、物理領域管理テーブル１４１のランダムに選択した番地から昇順に無効ブロックをサーチし、２つの無効ブロック、例えばＰＢ１０とＰＢ８を書き込み対象ブロックとする。これにより書き込み対象ブロックを特定ブロックに集中させないウェアレベリングを実現することが可能となる。読み書き制御部２２０はＰＢ１０とＰＢ８の消去命令を不揮発性メモリ１１０に送信し、ＰＢ１０とＰＢ８を消去した後にデータの書き込みを行う。
【０１２８】
次に、バッファメモリ２１０に一時記憶されたデータを不揮発性メモリ１１０内の物理ブロックへ書き込む流れについて、図２０Ａを用いて説明する。図２０Ａの左端はバッファメモリ２１０であり、ＬＡ０〜ＬＡ３１までの領域がバッファサイズである。このバッファに記録される領域は図２０Ａにおいて順次下方にずれていき、後述するようにエラーが発生した時刻、すなわちＰＢ１０のページ１７への書き込みがなされた時刻において、バッファメモリ１２５は実線で囲んだ状態にある。
【０１２９】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）のデータ書き込みコマンドと不揮発性記憶装置１００６に転送する。ホストＩＦ１２１は書き込みコマンドを受信するとＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ２１０に書き込む。
【０１３０】
このときバッファメモリ２１０に何も記憶されていない場合は、バッファメモリ２１０内のデータ保持フラグが全て値００であり、ライトポインタとリードポインタともにワード番号０をポイントする。そしてＣＰＵ１２２は、ライトポインタがポイントするワード番号０の記憶位置から昇順に１クラスタ分のデータと論理アドレスを記憶していき、逐次ライトポインタをインクリメントし、記憶したワードのデータ保持フラグを値１１にセットする。
【０１３１】
一方、書き込みブロック取得部２４２は、アドレス管理部１２６に対して２個の書き込み先物理ブロックの取得要求を発行すると共に、カレントブロックステータステーブル１００１をオールクリアする。なおカレントブロックステータステーブル２３１は図７に示すカレントブロックステータステーブル１３１を２個有しており、それぞれＰＢ１０とＰＢ８に対応したものである。
【０１３２】
アドレス管理部１２６はこれを受けて、物理領域管理テーブル１４１を参照し、ステータスフラグが無効ブロックとなっている物理ブロックから選択的に書き込み先の物理ブロックを決定する。ここでは２つの物理ブロックＰＢ１０とＰＢ８を選択し、ＰＢ１０をメインブロック、ＰＢ８をサブブロックとする。そしてメインブロックＰＢ１０のアドレスＰＢＡ１０を論理物理変換テーブル１４２上の対応する論理ブロックアドレスＬＢＡ０に書き込むと共に、ＣＰＵ１２２に対して、ＰＢ１０，ＰＢ８の物理ブロックアドレスＰＢＡ１０，ＰＢＡ８を通知する。
【０１３３】
ＣＰＵ１２２は、ＰＢＡ１０及びこれと対応するＬＢＡ０及びＰＢＡ８及びこれと対応するＬＢＡ０をカレントブロックステータステーブル２３１に書き込み、その後、バッファメモリ２１０に一時記憶されたデータをＰＢ１０とＰＢ８に書き込む処理に移行する。
【０１３４】
ＣＰＵ１２２は、バッファメモリ２１０への記憶処理を行う一方で、記憶状態に応じてＰＢ１０とＰＢ８へのデータの書き込み処理を併行して行う。具体的にはライトポインタがリードポインタより４ワード以上先行した位置をポイントしていた場合、ＰＢ１０とＰＢ８へのデータの書き込み指示をアドレス管理部１２６に発行する。例えばリードポインタがワード番号０をポイントしライトポインタがワード番号４をポイントしている場合は、バッファメモリ２１０のワード番号０〜３までの領域にデータを一時記憶していることになるので、ＰＢ１０とＰＢ８に１ページ分のデータ書き込み指示を発行することが可能となる。
【０１３５】
ＣＰＵ１２２は、バッファメモリ２１０のワード番号０〜３までの領域に記憶されたデータを読み書き制御部２２０に転送し、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値１０にセットする。それと併行して、アドレス管理部１２６は、バッファメモリ２１０に記憶された論理アドレスＬＡを参照し、図４の論理アドレスフォーマット中のページ番号を書き込み先のページ番号（カレントページ番号）とし、逐次読み書き制御部２２０とエラーページ特定部２３０に転送する。
【０１３６】
読み書き制御部２２０は、不揮発性メモリ１１０内のＰＢ１０の対応するページにデータを書き込む。書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部２３０とＣＰＵ１２２に通知する。通知の結果、エラーが発生することなく正常に書き込めたと判断した場合は、同じデータをＰＢ８の対応するページにも書き込む。
【０１３７】
ＰＢ１０とＰＢ８の両方もしくはいずれか一方の書き込みにおいてエラーが発生して正常に書き込めなかった場合は、エラー解消処理に移行する。
【０１３８】
更に、エラーが発生しなかった場合は、ＣＰＵ１２２は上記レディ／ビジーフラグの受信後、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値００にセットし、リードポインタがワード番号４をポイントするように更新する。そしてライトポインタがワード番号８以上のワード番号をポイントしていれば、ワード番号４〜７に記憶されたデータをＰＢ１０に書き込む。この書き込み後にワード番号４〜７のデータをＰＢ８へ書き込む。
【０１３９】
以上のようして、バッファメモリ２１０の記憶されたデータを順次ＰＢ１０とＰＢ８の対応するページに書き込んでいく。なおアクセス装置１０１からバッファメモリ２１０へのデータの一時記憶においては、上述したライトポインタに応じて巡回的にバッファメモリ２１０に書き込む。つまり、ライトポインタがワード番号２８の次はワード番号０に戻ることになる。尚ワード番号０のデータ保持状態フラグは００でない場合は、バッファメモリ２１０への一時記憶を禁止する状態を表している。その場合は、もしアクセス装置１０１が書き込みコマンド中であれば、メモリコントローラ１２０ＢはホストＩＦ１２１を介してアクセス装置１０１に対してデータの転送を中断するためのウェイト信号を出力する。アクセス装置１０１はこのウェイト信号が解除されるまでデータ転送を中断する。
【０１４０】
バッファメモリ２１０の全ての領域にデータが一時記憶された段階で、アクセス装置１０１からの１クラスタ分の書き込み処理は完了し、バッファメモリ２１０に記憶された論理アドレスＬＡ０〜ＬＡ３１のデータがＰＢ１０とＰＢ８のページ０〜７に記憶される。この処理は図２０Ａの矢印Ａ１，Ａ２に対応する。この書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部２３０とＣＰＵ１２２に通知する。通知の結果、エラーが発生することなく正常に書き込めた場合は、ＣＰＵ１２２はホストＩＦ１２１を介してアクセス装置１０１に対して「対応するクラスタが正常に書き込めたこと」を通知する。
【０１４１】
アクセス装置１０１が継続して論理アドレスＬＡ３２〜ＬＡ６３の１クラスタ分の書き込み処理を行う場合は、不揮発性記憶装置１００Ａはこれと同様の一連の処理を行い、データをＰＢ１０とＰＢ８のページ８〜１５に記憶する。この処理は図２０ＡのＢ１，Ｂ２に対応する。更に、アクセス装置１０１が継続して論理アドレスＬＡ６４〜ＬＡ９５の１クラスタ分の書き込み処理を行う場合は、不揮発性記憶装置１００Ａはこれと同様の一連の処理（Ｃ１，Ｃ２）を行い、データをＰＢ１０とＰＢ８のページ１６〜２３に記憶する。
【０１４２】
［フラッシュ異常が発生した際のエラー解消処理］
ここで、ＰＢ１０のページ１７への書き込みにおいて、フラッシュ異常が発生して正常に書き込めなった場合の処理について、図２０Ａ，２０Ｂを用いて説明する。なお、フラッシュ異常判断部１３３の処理は、第１の実施の形態の図１２と同様である。
【０１４３】
図１２において、ＰＢ１０のページ１７への書き込みへの書き込みに際して、アドレス管理部１２６はカレントページ番号を読み書き制御部２２０とエラーページ特定部２３０に転送する。ＰＢ１０のページ１７への書き込みが完了すると、不揮発性メモリ１１０がメモリコントローラ１２０Ａに対してエラーステータスを転送し、フラッシュ異常判断部１３３がこれを受信する（Ｓ２０２）。フラッシュ異常判断部１３３はエラーステータスをチェックしエラーが発生したことを表すフラグが立っていた場合（Ｓ２０３）、ＰＢ１０のページ１７の書き込み中にフラッシュ異常が発生したと認識し、ページ１７をエラー発生ページとして、エラーページ番号（物理アドレス）とエラー種別フラグを値１にセットして代替処理部２４１に転送する（Ｓ２０４）。なお、エラー種別フラグは、値０の場合は電源遮断によるエラー、値１の場合はフラッシュ異常によるエラーであることを表す。
【０１４４】
エラーページ特定部２３０から転送されたエラーページ番号とエラー種別フラグを代替処理部２４１が受信し、エラー種別フラグが値１の場合、代替処理部２４１が代替処理として、コピー処理とリトライ処理を実行する。
【０１４５】
コピー処理とは、エラーが発生しなかったサブブロックＰＢ８のページ０〜１６に書き込まれたデータを、別の消去済みの物理ブロック（ＰＢ５）にコピーすることによって、新しいメインブロックを構成する処理であり、図２０Ｂの矢印Ｄの処理である。コピー処理において、まずアドレス管理部１２６がコピー先ブロックとして消去済みの物理ブロック。例えばＰＢ５を取得し、代替処理部２４１がエラー発生ページ（ページ１７）より低順位アドレスのページ（ページ０〜１６）のコピー処理を実行する。
【０１４６】
一方リトライ処理とは、ＰＢ１０のページ１７に書き損じたデータを再度ＰＢ５のページ１７に書き込む処理であり、図２０Ｂの矢印Ｅの処理である。リトライ処理において、代替処理部２４１がエラー発生ページのリトライ処理を実行し、書き込みに成功した場合はページ１８以降の書き込みを継続する。失敗した場合はアクセス装置に対して「対応するクラスタが正常に書き込めなったこと」を通知し、当該クラスタの再書き込みコマンドをうながす。
【０１４７】
以上説明した代替処理によって、フラッシュ異常によるエラーを解消することができる。なおＰＢ１０は次に消去して使えるようにするために、アドレス管理部１２６が物理領域管理テーブル１４１内の対応するステータスフラグを無効ブロックにセットする。
【０１４８】
［電源遮断が発生した際のエラー解消処理］
電源遮断が発生した場合のエラー解消処理は、上述したフラッシュ異常時のエラー解消処理を、電源立ち上げ後の初期時において実行するものであり、処理内容としては、図２０Ｂのコピー処理のみを行う。すなわちリトライ処理は実施しない。
【０１４９】
次に実施の形態２の変形例について説明する。この変形例では図２１Ａ，図２１Ｂに示すように、メインブロックＰＢ１０とサブブロックＰＢ８に同時にページ番号をずらせてデータを書き込むようにしたものである。例えばバッファメモリの論理アドレスＬＡ０〜ＬＡ３１を物理ブロックＰＢＡ１０のページ番号０〜７に書き込むが、このとき同時にＰＢ８のページ番号１〜８に書き込む。以下同様にページ番号をずらせて書き込む。この場合にはメインブロックＰＢ１０とサブブロックＰＢ８とに同時に書き込むことができる。前述の場合には、同時に書き込むと電源遮断やフラッシュ異常が生じた場合にメインブロックとサブブロック共にページ１１が異常状態になる可能性があり、コピー処理によってページ１１を修復することができない。そのためメインブロックとサブブロックの交互に書き込みをしている。この変形例ではページ番号をずらせているため、同一の論理アドレスのデータをメインブロックとサブブロックに同時に書き込むことができる。従って書き込み速度は２倍となり、書き込み性能を向上させることができる。
【０１５０】
表２は、従来の不揮発性記憶システムと、本発明の第２の実施の形態における不揮発性記憶システムのエラー処理の相違点についてまとめたものである。本実施の形態はエラー解消処理を追加することにより、各メモリセルが複数ページに跨ってデータを保持する不揮発性メモリに特有のエラーにも対応することができる。
【０１５１】
【表２】
2006318366.tif 000004
【０１５２】
以上、説明したように、本発明の第２の実施の形態は、書き込みブロック取得部２４２が、アクセス装置１０１からの書き込みコマンドに応じて、複数物理ブロックに同一データを書き込むようにしたので、物理ブロックで書き込みのエラーが発生した場合、他の物理ブロックに記憶されているデータ（全て正常データ）を用いて代替処理することができる。そのため２ページに跨って同一のメモリセルを構成する不揮発性メモリ１１０の特有のエラー、すなわち第２ページの書き込みエラーによって第１ページに記憶されていたデータが変化してしまうエラーを解消することが可能となる。
【０１５３】
なお、不揮発性メモリ１１０は、各メモリセルが２つのページに跨ってデータを保持するメモリであったのでＮ＝２としたが、３つ以上のページに跨ってデータを保持するメモリを使用する場合は、Ｎ≧３となるようにページ情報指示部１５３が指示すればよい。
【０１５４】
（第３の実施の形態）
以下、本発明の第３の実施の形態による不揮発性記憶システムについて説明する。第３の実施の形態は、第２の実施の形態のように、２つの物理ブロックに対して同一のデータを書き込む不揮発性記憶システムである。第３の実施の形態では、第２の実施の形態とは異なり、２つの物理ブロックの一方の物理ブロック（第１ブロック）には第１ページのみへの書き込みを行い、他方の物理ブロック（第２ブロック）には第２ページのみへの書き込みを行い、最後に第１ブロックの第１ページと第２ブロックの第２ページを読み出し、ひとつの物理ブロックに集約させることにより、エラー解消を実現するものである。
【０１５５】
図２２は、不揮発性記憶システムのブロック図である。不揮発性記憶システムは不揮発性記憶装置１００Ｂとそれが接続されたアクセス装置１０１とからなる。なおアクセス装置１０１は実施の形態１の不揮発性記憶システムと同様である。
【０１５６】
不揮発性記憶装置１００Ｂは、メモリコントローラ１２０Ｂと、フラッシュメモリからなる不揮発性メモリ１１０とを有している。不揮発性メモリ１１０は、第１の実施の形態と同様である。
【０１５７】
次に、不揮発性記憶装置１００Ｂの詳細について述べる。不揮発性記憶装置１００Ｂに備えられたメモリコントローラ１２０Ｂは、ホストＩＦ１２１と、メモリコントローラ１２０Ｂ全体の制御を行うＣＰＵ１２２とを備えている。また、ＣＰＵ１２２の作業領域であるＲＡＭ１２３と、ＣＰＵ１２２が実行するプログラムを格納したＲＯＭ１２４とを有している。
【０１５８】
さらに、メモリコントローラ１２０Ｂは、不揮発性メモリ１１０へアクセスする際にデータを一時記憶するためのバッファメモリ２１０と、第１の実施の形態と同様の読み書き制御部１２７と、アドレス管理部３１０とを有している。バッファメモリ２１０はＳＲＡＭなどの揮発性メモリで構成するが、不揮発性ＲＡＭで構成してもかまわない。
【０１５９】
アドレス管理部３１０は、ページ情報指示部３３１が指示するページ種別情報に応じて書き込み先のブロックを選択する点が第１の実施の形態と異なり、その他は同一である。アドレス管理部３１０は、物理領域管理テーブル１４１と論理物理変換テーブル３１１を有している。物理領域管理テーブル１４１は実施の形態１の物理領域管理テーブル１４１と同様である。論理物理変換テーブル３１１は、図６に示す論理物理変換テーブル１４２と異なり、ひとつの論理ブロックアドレスに対して２６ビット分の記憶領域を有し、当該２６ビットの領域には、１３ビットずつの２つの物理ブロックアドレス記憶領域を有する。一方の記憶領域を第１ブロック用の記憶領域とし、他方の記憶領域を第２ブロック用の記憶領域とする。
【０１６０】
エラーページ特定部２３０は、第２の実施の形態と同様である。エラー解消部３３０は、代替処理部２４１と、書き込みブロック取得部２４２と、ページ情報指示部３３１と、集約処理部３３２とから構成される。代替処理部２４１は、第２の実施の形態の代替処理部２４１と同様である。ページ情報指示部３３１は、ページ情報テーブルを保持し、書き込みブロック取得部２４２からの出力要求信号に応じてページ数Ｎとページ種別情報を返すものである。なおページ数Ｎとは、１つのメモリセルで構成されるグループのページ数である。第３の実施に形態においては、ページ情報としてページ数Ｎとページ種別情報だけで十分である。なお、図２９に示したような、比較的簡単なページ構成のＮＡＮＤフラッシュメモリであれば、図８に示したページ情報テーブルをもつまでもなく、例えばカレントページ番号に基づき、その最下位ビットをページ種別情報として出力するようにしてもよい。書き込みブロック取得部２４２は、第１の実施の形態と同様である。集約処理部３３２は２つの書き込み対象ブロック（第１ブロックと第２ブロック）への書き込みが終了した時点で、ひとつの物理ブロックに集約して書き込む命令を発行するブロックである。
【０１６１】
次に不揮発性記憶装置１００Ｂの動作について説明する。
［初期状態］
出荷直後の状態については、第１の実施の形態と同様である。
【０１６２】
［電源立ち上げ時の初期化処理］
次に、電源立ち上げ時の初期化処理について説明する。第１の実施の形態と同様にページ情報指示部３３１内にページ情報テーブルを生成する。
【０１６３】
［通常動作時の処理］
次に、初期化後の通常動作時の処理について説明する。なお本発明は、書き込み処理におけるエラー解消を改善するものであるので、ここでも書き込み処理についてのみ説明する。また、通常、アクセス装置１０１からはクラスタ単位での書き込まれる場合が多いので、簡単のために、クラスタ単位での書き込みについてのみ説明する。
【０１６４】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００に転送する。ホストＩＦ１２１は書き込みコマンドを受信すると、ＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ１２５に書き込む。
【０１６５】
データ保持状態フラグは２進数で全て値００、すなわちアクセス装置１０１からのデータ転送待ち状態になっている。その場合はバッファメモリ２１０の低順位アドレス側、すなわちワード番号が０側から昇順にデータと論理アドレスを記憶する。
【０１６６】
上記と併行して図２３に示すように、ホストＩＦ１２１がアクセス装置１０１からの書き込みコマンドを受信すると、ホストＩＦ１２１はコマンド受信を書き込みブロック取得部２４２に通知する（Ｓ７０１）。書き込みブロック取得部２４２はページ情報指示部３３１に対して出力要求信号を転送し、ページ情報指示部３３１からページ数Ｎを受信する（Ｓ７０２）。なお、本実施の形態ではＮ＝２である。書き込みブロック取得部２４２はアドレス管理部３１０に対して、Ｎ個（２個）の書き込み先物理ブロックの取得を指示する（Ｓ７０３）。
【０１６７】
ページ情報指示部３３１は、更に書き込みブロック取得部２４２からの出力要求信号を受信する（Ｓ７０４）と、内部にあるページ情報テーブル（図８参照）をアドレス管理部３１０に転送する（Ｓ７０５）。なおアドレス管理部３１０には、ページ情報テーブルを一時記憶するだけのＳＲＡＭが必要である。なお、アドレス管理部３１０が、ページ情報指示部３３１の内部にあるページ情報テーブルを逐次参照しにいっても構わない。
【０１６８】
アドレス管理部３１０は物理領域管理テーブル１４１を参照し、ランダムに選択した番地から昇順に無効物理ブロックをサーチし、２つの無効ブロック、例えばＰＢ１０とＰＢ８を書き込み対象物理ブロックとする。これにより、書き込み対象物理ブロックを特定ブロックに集中させないウェアレベリングを実現することができる。アドレス管理部３１０は読み書き制御部２２０を介してＰＢ１０とＰＢ８の消去命令を不揮発性メモリ１１０に送信し、ＰＢ１０とＰＢ８を消去した後にデータの書き込みを行う。
【０１６９】
次に、バッファメモリ２１０に一時記憶されたデータを不揮発性メモリ１１０内の物理ブロックへ書き込む流れについて、図２４Ａを用いて説明する。図２４Ａの左端はバッファメモリ２１０であり、ＬＡ０〜ＬＡ３１までの領域がバッファサイズである。このバッファに記録される領域は図２４Ａにおいて順次下方にずれていき、後述するようにエラーが発生した時刻、すなわちＰＢ１０のページ１７への書き込みがなされた時刻において、バッファメモリ１２５は実線で囲んだ状態にある。
【０１７０】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００Ｂに転送する。ホストＩＦ１２１は書き込みコマンドを受信するとＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ２１０に書き込む。
【０１７１】
このときバッファメモリ２１０に何も記憶されていない場合は、バッファメモリ２１０内のデータ保持フラグが全て値００であり、ライトポインタＷＰとリードポインタＲＰと共にワード番号０をポイントする。そしてＣＰＵ１２２は、ライトポインタがポイントするワード番号０の記憶位置から昇順に１クラスタ分のデータと論理アドレスを記憶していき、逐次ライトポインタをインクリメントし、記憶したワードのデータ保持フラグを値１１にセットする。
【０１７２】
一方、書き込みブロック取得部２４２は、アドレス管理部３１０に対して２個の書き込み先物理ブロックの取得要求を発行すると共に、カレントブロックステータステーブル２３１をオールクリアする。なおカレントブロックステータステーブル２３１は図７に示すカレントブロックステータステーブル１３１を２個有しており、それぞれＰＢ１０とＰＢ８に対応したものである。
【０１７３】
ここでＰＢ１０を第１ブロック、ＰＢ８を第２ブロックとする。そして論理物理変換テーブル３１１の論理ブロックアドレスＬＡＢ０上に対応する第１ブロック用の物理ブロックアドレス記憶領域に第１ブロックＰＢ１０のアドレスＰＢＡ１０を書き込む。論理物理変換テーブル３１１上の論理ブロックアドレスＬＢＡ０に対応する第２ブロック用の物理ブロックアドレス記憶領域に第２ブロックＰＢ８のアドレスＰＢＡ８を書き込む。そして、ＣＰＵ１２２に対して、ＰＢＡ１０とＰＢＡ８を通知する。
【０１７４】
ＣＰＵ１２２は、物理ブロックアドレス（ＰＢＡ１０）と対応する論理ブロックアドレス（ＬＢＡ０）及び物理ブロックアドレス（ＰＢＡ８）と対応する論理ブロックアドレス（ＬＢＡ０）を夫々カレントブロックステータステーブルに書き込み、その後、バッファメモリ２１０に一時記憶されたデータをＰＢ１０とＰＢ８に書き込む処理に移行する。
【０１７５】
ＣＰＵ１２２は、バッファメモリ２１０への記憶処理を行う一方で、記憶状態に応じてＰＢ１０とＰＢ８へのデータの書き込み処理を併行して行う。具体的にはライトポインタＷＰがリードポインタＲＰより４ワード分以上先行した位置をポイントしていた場合、ＰＢ１０とＰＢ８へのデータの書き込み指示を読み書き制御部１２７に発行する。例えばリードポインタがワード番号０をポイントしライトポインタがワード番号４をポイントしている場合は、バッファメモリ２１０のワード番号０〜３までの領域にデータが一時記憶されていることになるので、ＰＢ１０とＰＢ８に１ページ分のデータ書き込み指示を発行することが可能となる。
【０１７６】
ＣＰＵ１２２は、バッファメモリ２１０のワード番号０〜３までの領域に記憶されたデータを読み書き制御部１２７に転送し、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値１０にセットする。それと併行して、アドレス管理部３１０は、バッファメモリ２１０に記憶された論理アドレスＬＡを参照し、図４の論理アドレスフォーマット中のページ番号を書き込み先のページ番号（カレントページ番号）とし、逐次読み書き制御部１２７とエラーページ特定部２３０に転送する。
【０１７７】
ＣＰＵ１２２はＰＢ１０とＰＢ８へのデータの書き込み指示を受けると、書き込み先のページ番号（カレントページ番号）と、ページ情報指示部３３１から転送されたページ識別情報を比較する。そして図２４Ａに示すように、カレントページ番号が第１ページであればデータを第１ブロック側へ書き込み、カレントページ番号が第２ページであればデータを第２ブロック側へ書き込むように、読み書き制御部１２７を制御する。
【０１７８】
ＰＢ１０とＰＢ８のいずれか一方の書き込みにおいてエラーが発生して正常に書き込めなかった場合は、エラー修正処理に移行することとなる。
【０１７９】
更に、エラーが発生しなかった場合は、ＣＰＵ１２２は上記レディ／ビジーフラグの受信後、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値００にセットし、リードポインタがワード番号４をポイントするように更新する。そしてライトポインタがワード番号８以上のワード番号をポイントしていれば、ワード番号４〜７に記憶されたデータを書き込む。
【０１８０】
読み書き制御部１２７は、不揮発性メモリ１１０内のＰＢ１０もしくはＰＢ８の対応するページにデータを書き込む。バッファメモリ２１０の全ての領域にデータが一時記憶された段階で、アクセス装置１０１からの１クラスタ分の書き込み処理は完了し、バッファメモリ２１０に記憶された論理アドレスＬＡ０〜ＬＡ３１のデータがＰＢ１０とＰＢ８の対応するページに記憶されることとなる。この処理は図２４Ａの矢印Ａ〜Ｃに対応する。
【０１８１】
書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部２３０とＣＰＵ１２２に通知する。通知の結果、エラーが発生することなく正常に書き込めたと判断した場合は、ＣＰＵ１２２はホストＩＦ１２１を介してアクセス装置１０１に対して「対応するクラスタが正常に書き込めたこと」を通知する。
【０１８２】
以上のようして、バッファメモリ２１０に記憶されたデータを順次ＰＢ１０とＰＢ８の対応するページに交互に書き込んでいく。なおアクセス装置１０１からバッファメモリ２１０へのデータの一時記憶においては、上述したライトポインタに応じて巡回的にバッファメモリ２１０に書き込むことになる。つまり、ライトポインタがワード番号２８の次はワード番号０に戻ることになる。その際、ワード番号０のデータ保持状態フラグ値００でない場合は、バッファメモリ２１０への一時記憶を禁止する状態を表しており、その場合は、もしアクセス装置１０１が書き込みコマンド中であれば、メモリコントローラ１３０４はホストＩＦ１２１を介してアクセス装置１０１に対してデータの転送を中断するためのウェイト信号を出力する。アクセス装置１０１はこのウェイト信号が解除されるまでデータ転送を中断する。
【０１８３】
アクセス装置１０１が継続して論理アドレスＬＡ３２〜ＬＡ６３の１クラスタ分の書き込み処理を行う場合は、上述した一連の処理と同様の処理を行い、データをＰＢ１０とＰＢ８の対応するページに記憶する。この処理は図２４ＡのＤ〜Ｇに対応する。更に、アクセス装置１０１が継続して論理アドレスＬＡ６４〜ＬＡ９５の１クラスタ分の書き込み処理を行う場合は、上述した一連の処理と同様の処理を行い、データをＰＢ１０とＰＢ８の対応するページに記憶する。
【０１８４】
［フラッシュ異常が発生した際のエラー解消処理］
ここで、ＰＢ８のページ１７への書き込みにおいて、フラッシュ異常が発生して正常に書き込めなった場合の処理について図２４Ｂを用いて説明する。図２４Ｂにおいて星印は異常の発生を示す。なお、フラッシュ異常判断部１３３の処理は、第１の実施の形態の図１２と同様である。
【０１８５】
図１２において、ＰＢ８のページ１７への書き込みへの書き込みに際して、アドレス管理部３１０はカレントページ番号を読み書き制御部１２７とエラーページ特定部２０３に転送する。ＰＢ８のページ１７への書き込みが完了すると、不揮発性メモリ１１０がメモリコントローラ１３０４に対してエラーステータスを転送し、フラッシュ異常判断部１３３がこれを受信する（Ｓ２０２）。フラッシュ異常判断部１３３はエラーステータスをチェックしエラーが発生したことを表すフラグが立っていた場合（Ｓ２０３）、ＰＢ８のページ１７の書き込み中にフラッシュ異常が発生したと認識する。そしてページ１７をエラー発生ページとして、エラーページ番号（物理アドレス）とエラー種別フラグを値１にセットして代替処理部２４１に転送する（Ｓ２０４）。なお、エラー種別フラグは、値０の場合は電源遮断によるエラー、値１の場合はフラッシュ異常によるエラーであることを表す。
【０１８６】
エラーページ特定部２３０から転送されたエラーページ番号とエラー種別フラグを代替処理部２４１が受信し、エラー種別フラグが値１の場合、代替処理部２４１は代替処理として、コピー処理とリトライ処理を行う。
【０１８７】
コピー処理とは、サブブロックＰＢ８のページ０〜１６に書き込まれたデータを、別の消去済みの物理ブロック（ＰＢ５）に転写することによって、新しい第２ブロックを構成する処理であり、図２４Ｂの矢印Ｉに対応する。コピー処理において、まずアドレス管理部３１０がコピー先ブロックとして消去済みの物理ブロック、例えばＰＢ５を取得し、エラー発生ページ（ページ１７）より低順位アドレスのページ（ページ０〜１６）のコピー処理を実行する。ここで物理ブロックＰＢ８のページ番号１１は異常が生じたデータであるが、これは第１のブロックで記憶しているデータであって、第２ブロック側では使用しないため、そのままコピーしても問題はない。
【０１８８】
一方リトライ処理とは、ＰＢ８のページ１７に書き損じたデータを再度ＰＢ５のページ１７に書き込む処理であり、図２４Ｂの矢印Ｊに対応する。リトライ処理において、アドレス管理部３１０がエラー発生ページのリトライ処理を実行し、書き込みに成功した場合はページ１８以降の書き込みを継続する。失敗した場合はアクセス装置に対して「対応するクラスタが正常に書き込めなったこと」を通知し、当該クラスタの再書き込みコマンドをうながす。
【０１８９】
以上説明した代替処理によって、フラッシュ異常によるエラーを解消することができる。なおＰＢ８は次に消去して使えるようにするために、アドレス管理部３１０が物理領域管理テーブル内の対応するステータスフラグを無効ブロックにセットする。
【０１９０】
［電源遮断が発生した際のエラー解消処理］
電源遮断が発生した場合のエラー解消処理は、上述したフラッシュ異常時のエラー解消処理を、電源立ち上げ後の初期時において実行するものであり、処理内容としては、図２４Ｂのコピー処理のみを行う。すなわちリトライ処理は実施しない。
【０１９１】
［集約処理］
所定の論理ブロックアドレスの書き込みが終了し、別の論理ブロックへの書き込みに移行した時点で、ＣＰＵ１２２は集約処理部３３２に対して、論理ブロックアドレスが移行したことを通知する。図２５Ａの書き込み処理が正常に終了した状態を示している。集約処理部３３２はこれを受けて、集約処理を行う。
【０１９２】
集約処理部３３２は、図２５Ｂに示すとおり、第１ブロックＰＢ１０と第２ブロックＰＢ８に記憶されたデータを、新たな消去済みブロックＰＢ２２にコピーする。又集約処理部３３２は、論理物理変換テーブル３１１の対応する論理ブロックアドレス位置の第１ブロック用の物理ブロックアドレス記憶領域にＰＢ２２の物理ブロックアドレスＰＢＡ２２を書き込むと共に、物理領域管理テーブル１４１のＰＢ２２の物理ブロックアドレスＰＢＡ２２のステータスフラグを有効ブロックにセットする。
【０１９３】
更に、ＰＢ１０とＰＢ８は次に使用できるように、アドレス管理部３１０は物理領域管理テーブル１４１のステータスフラグを無効ブロックにする。
【０１９４】
以上、説明したように、本発明の第３の実施の形態は、書き込みブロック取得部２４２が、アクセス装置１０１からの書き込みコマンドに応じて、アドレス管理部３１０が第１，第２ブロックを書き込み対象物理ブロックとし、更に、第１ページへの書き込みは第１ブロックへ、第２ページへの書き込みは第２ブロックへ書き込む。更に集約処理部３３２が所定の論理ブロックの書き込みが終了した時点で、第１ブロックと第２ブロックを、別のブロックに集約して書き込む。こうすれば結果として、各メモリセルが複数ページに跨ってデータを保持する不揮発性メモリ１１０の特有のエラー、すなわちあるページの書き込みエラーによって他のページに記憶されていたデータが変化してしまうエラーを解消することが可能となる。
【０１９５】
なお、不揮発性メモリ１１０は、各メモリセルが２つのページに跨ってデータを保持するメモリであったのでＮ＝２としたが、３つ以上のページに跨ってデータを保持するメモリを使用する場合は、Ｎ≧３となるようにページ情報指示部３３３が指示すればよい。
【０１９６】
表３は、従来の不揮発性記憶システムと、本発明の第３の実施の形態における不揮発性記憶システムのエラー処理の相違点についてまとめたものである。本実施の形態はエラー解消処理を追加することにより、従来の課題である、複数ページに跨ってメモリセルを構成する不揮発性メモリ特有のエラーにも対応することができる。
【０１９７】
【表３】
2006318366.tif 000005
【０１９８】
（第４の実施の形態）
以下、本発明の第４の実施の形態による不揮発性記憶システムについて説明する。なお
第４の実施の形態は、第２の実施の形態と第３の実施の形態の特徴を融合させた実施の形態である。すなわち、２つの物理ブロックに対して同じデータを書き込む処理を行い、更に集約処理によって、当該２つの物理ブロックをひとつにまとめる処理を行うことによって、書き込みエラーが発生して一方の物理ブロックの所定ページに記憶されていたデータが変化した場合においても、エラー解消を可能とするものである。
【０１９９】
図２６は、不揮発性記憶システムのブロック図である。不揮発性記憶システムは不揮発性記憶装置１００Ｃとアクセス装置１０１とからなる。なおアクセス装置１０１は第１の実施の形態の不揮発性記憶システムと同様である。
【０２００】
不揮発性記憶装置１００Ｃは、メモリコントローラ１２０Ｃと、フラッシュメモリからなる不揮発性メモリ１１０とを有している。不揮発性メモリ１１０は、第１の実施の形態と同様である。
【０２０１】
次に、不揮発性記憶装置１００Ｃの詳細について述べる。不揮発性記憶装置１００Ｃに備えられたメモリコントローラ１２０Ｃは、ホストＩＦ１２１と、メモリコントローラ１２０Ｃ全体の制御を行うＣＰＵ１２２とを備えている。また、ＣＰＵ１２２の作業領域であるＲＡＭ１２３と、ＣＰＵ１２２が実行するプログラムを格納したＲＯＭ１２４とを有している。
【０２０２】
さらに、メモリコントローラ１２０Ｃは、不揮発性メモリ１１０へアクセスする際にデータを一時記憶するためのバッファメモリ２１０と、不揮発性メモリ１１０のアドレスを指定するアドレス管理部４１０とを有している。
【０２０３】
また、アドレス管理部４１０は、物理領域管理テーブル１４１と論理物理変換テーブル４１１を有している。物理領域管理テーブル１４１は実施の形態１，２の物理領域管理テーブル１４１と同様である。論理物理変換テーブル４１１は、図６に示す論理物理変換テーブル１４２と異なり、ひとつの論理ブロックアドレスに対して２６ビット分の記憶領域を有する。この記憶領域には、１３ビットずつの２つの物理ブロックアドレス記憶領域を有する。一方を第１ブロック用、他方を第２ブロック用の物理ブロックアドレス記憶領域とする。
【０２０４】
読み書き制御部２２０は、第２の実施の形態の読み書き制御部２２０と同様である。エラーページ特定部２３０は、第２の実施の形態のエラーページ特定部２３０と同様である。尚カレントブロックステータステーブル１３１には図８に示したページ情報テーブルが生成される。但し、第４の実施に形態においては、ページ情報としてページ数Ｎだけで十分なので、図８に示したページ情報テーブルをもつまでもなく、単にページ数Ｎのみを記憶するか、あるいは不揮発性メモリ１１０から読み込んだデバイスコードに基づくビット操作処理によってページ数Ｎを指示できるようにしてもよい。
【０２０５】
エラー解消部４２０は、代替処理部２４１と、書き込みブロック取得部２４２と、ページ情報指示部２４３と、集約処理部３３２から構成される。代替処理部２４１は、第２の実施の形態の代替処理部２４１と同様である。ページ情報指示部２４３は、第２の実施の形態のページ情報指示部２４３と同様である。書き込みブロック取得部２４２は、第２の実施の形態の書き込みブロック取得部２４２と同様である。集約処理部３３２は、第３の実施の形態の集約処理部３３２と同様である。
【０２０６】
図１９は、フラッシュ異常が発生した際のエラー解消処理を示す動作説明図である。なお電源遮断が発生した際のエラー解消はリトライ処理は不要である。
【０２０７】
次に不揮発性記憶装置１００Ｃの動作について説明する。
［初期状態］
出荷直後の状態については、第１の実施の形態と同様である。
【０２０８】
［電源立ち上げ時の初期化処理］
次に、電源立ち上げ時の初期化処理について説明する。第１の実施の形態と同様にページ情報指示部２４３内にページ情報テーブルを生成する。
【０２０９】
［通常動作時の処理］
次に、初期化後の通常動作時の処理について説明する。なお本発明は、書き込み処理におけるエラー解消を改善するものであるので、ここでも書き込み処理についてのみ説明する。また、通常、アクセス装置１０１からはクラスタ単位での書き込まれる場合が多いので、簡単のために、クラスタ単位での書き込みについてのみ説明する。
【０２１０】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００Ｃに転送する。ホストＩＦ１２１は書き込みコマンドを受信すると、ＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ２１０に書き込む。
【０２１１】
データ保持状態フラグは２進数で全て値００、すなわちアクセス装置１０１からのデータ転送待ち状態になっている。その場合はバッファメモリ２１０の低順位アドレス側、すなわちワード番号が０側から昇順にデータと論理アドレスが記憶されていく。
【０２１２】
上記と併行してホストＩＦ１２１がアクセス装置１０１からの書き込みコマンドを受信すると、図１９に示すようにホストＩＦ１２１はコマンド受信を書き込みブロック取得部２４２に通知する（Ｓ６０１）。書き込みブロック取得部２４２はページ情報指示部２４３に対して出力要求信号を転送し、ページ情報指示部２４３はページ数Ｎを書き込みブロック取得部２４２に返す（Ｓ６０２）。なお、本実施の形態ではＮ＝２である。書き込みブロック取得部２４２はアドレス管理部１２６に対して、Ｎ個（２個）の書き込み先物理ブロックの取得を指示する（Ｓ６０３）。
【０２１３】
アドレス管理部４１０は物理領域管理テーブル１４１を参照し、物理領域管理テーブル１４１のランダムに選択した番地から昇順に無効ブロックをサーチし、２つの無効ブロック、例えばＰＢ１０とＰＢ８を書き込み対象物理ブロックとする。これにより、書き込み対象ブロックを特定ブロックに集中させないウェアレベリングを実現することができる。アドレス管理部４１０は読み書き制御部２２０を介してＰＢ１０とＰＢ８の消去命令を不揮発性メモリ１１０に送信し、ＰＢ１０とＰＢ８を消去した後にデータの書き込みを行う。
【０２１４】
次に、バッファメモリ２１０に一時記憶されたデータを不揮発性メモリ１１０内の物理ブロックへ書き込む流れについて、図２７Ａを用いて説明する。図２７Ａの左端はバッファメモリ２１０であり、ＬＡ０〜ＬＡ３１までの領域がバッファサイズである。このバッファに記録される領域は図２７Ａにおいて順次下方にずれていき、後述するようにエラーが発生した時刻、すなわちＰＢ１０のページ１７への書き込みがなされた時刻において、バッファメモリ１２５は実線で囲んだ状態にある。
【０２１５】
まずアクセス装置１０１が論理アドレスＬＡ０〜ＬＡ３１の１６ｋバイト（１クラスタ分）の書き込みコマンドを不揮発性記憶装置１００Ｃに転送する。ホストＩＦ１２１は書き込みコマンドを受信するとＣＰＵ１２２に受信したことを通知し、ＣＰＵ１２２は転送されたデータと論理アドレスをバッファメモリ２１０に書き込む。
【０２１６】
このときバッファメモリ２１０に何も記憶されていない場合は、バッファメモリ２１０内のデータ保持フラグが全て値００であり、ライトポインタとリードポインタはともにワード番号０をポイントする。そしてＣＰＵ１２２は、ライトポインタがポイントするワード番号０の記憶位置から昇順に１クラスタ分のデータと論理アドレスを記憶していき、逐次ライトポインタをインクリメントし、記憶したワードのデータ保持フラグを値１１にセットする。
【０２１７】
一方、書き込みブロック取得部２４２は、アドレス管理部４１０に対して２個の書き込み先物理ブロックの取得要求を発行すると共に、カレントブロックステータステーブル１００１をオールクリアする。なおカレントブロックステータステーブル２３１は図７に示すカレントブロックステータステーブル１３１を２個有しており、それぞれＰＢ１０とＰＢ８に対応したものである。
【０２１８】
アドレス管理部４１０はこれを受けて、物理領域管理テーブル１４１を参照し、ステータスフラグが無効ブロックとなっている物理ブロックから選択的に書き込み先の物理ブロックを決定する。この物理ブロックをＰＢ１０とＰＢ８とする。ここでＰＢ１０を第１ブロック、ＰＢ８を第２ブロックとする。そして第１ブロックＰＢ１０の物理ブロックアドレスＰＢＡ１０を論理物理変換テーブル４１１上の対応する論理ブロックアドレス位置ＬＢＡ０の第１ブロック用の記憶領域に書き込み、第２ブロックＰＢ８の物理ブロックアドレスＰＢＡ８を論理物理変換テーブル４１１上の対応する論理ブロックアドレス位置ＬＢＡ０の第２ブロック用の記憶領域に書き込む。そして、ＣＰＵ１２２に対して、ＰＢ１０の物理ブロックアドレスＰＢＡ１０とＰＢ８の物理ブロックアドレスＰＢＡ８を通知する。
【０２１９】
ＣＰＵ１２２は、ＰＢＡ１０と対応するＬＢＡ０及びＰＢＡ８と対応するＬＢＡ０をカレントブロックステータステーブル２３１に書き込み、その後、バッファメモリ２１０に一時記憶されたデータをＰＢ１０とＰＢ８に書き込む処理に移行する。
【０２２０】
ＣＰＵ１２２は、バッファメモリ２１０への記憶処理を行う一方で、記憶状態に応じてＰＢ１０とＰＢ８へのデータの書き込み処理を併行して行う。具体的にはライトポインタがリードポインタより４ワード分以上先行した位置をポイントしていた場合、ＰＢ１０とＰＢ８へのデータの書き込み指示を読み書き制御部２２０に発行する。例えばリードポインタがワード番号０をポイントしライトポインタがワード番号４をポイントしている場合は、バッファメモリ２１０のワード番号０〜３までの領域にデータが一時記憶されていることになるので、ＰＢ１０とＰＢ８に１ページ分のデータ書き込み指示を発行することが可能となる。
【０２２１】
ＣＰＵ１２２は、バッファメモリ２１０のワード番号０〜３までの領域に記憶されたデータを読み書き制御部２２０に転送し、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値１０にセットする。それと併行して、アドレス管理部４１０は、バッファメモリ２１０に記憶された論理アドレスＬＡを参照し、図４の論理アドレスフォーマット中のページ番号を書き込み先のページ番号（カレントページ番号）とし、逐次読み書き制御部２２０とエラーページ特定部２３０に転送する。
【０２２２】
読み書き制御部２２０は、不揮発性メモリ１１０内のＰＢ１０の対応するページにデータを書き込み、書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部２３０とＣＰＵ１２２に通知する。通知の結果、エラーが発生することなく正常に書き込めたと判断した場合は、同じデータをＰＢ８の対応するページにも書き込む。
【０２２３】
更に、エラーが発生しなかった場合は、ＣＰＵ１２２はレディ／ビジーフラグの受信後、バッファメモリ２１０のワード番号０〜３のデータ保持フラグを値００にセットし、リードポインタがワード番号４をポイントするように更新する。そしてライトポインタがワード番号８以上のワード番号をポイントしていれば、ワード番号４〜７に記憶されたデータを同様にＰＢ１０とＰＢ８へ書き込む。
【０２２４】
バッファメモリ２１０の全ての領域にデータが一時記憶された段階で、アクセス装置１０１からの１クラスタ分の書き込み処理は完了し、バッファメモリ２１０に記憶された論理アドレスＬＡ０〜ＬＡ３１のデータがＰＢ１０とＰＢ８のページ０〜７に記憶されることとなる。この処理は図２７Ａの矢印Ａ１，Ａ２に対応する。
【０２２５】
書き込みが終了すると不揮発性メモリ１１０がレディ／ビジーフラグをレディ状態にしてエラーページ特定部２３０とＣＰＵ１２２に通知する。通知の結果、エラーが発生することなく正常に書き込めたと判断した場合は、ＣＰＵ１２２はホストＩＦ１２１を介してアクセス装置１０１に対して「対応するクラスタが正常に書き込めたこと」を通知する。
【０２２６】
以上のようして、バッファメモリ２１０の記憶されたデータを順次ＰＢ１０とＰＢ８の対応するページに書き込んでいく。なおアクセス装置１０１からバッファメモリ２１０へのデータの一時記憶においては、上述したライトポインタに応じて巡回的にバッファメモリ２１０に書き込むことになる。つまり、ライトポインタがワード番号２８の次はワード番号０に戻ることになる。その際、ワード番号０のデータ保持状態フラグ値００でない場合は、バッファメモリ２１０への一時記憶を禁止する状態を表しており、その場合は、もしアクセス装置１０１が書き込みコマンド中であれば、メモリコントローラ１２０ＣはホストＩＦ１２１を介してアクセス装置１０１に対してデータの転送を中断するためのウェイト信号を出力する。アクセス装置１０１はこのウェイト信号が解除されるまでデータ転送を中断する。
【０２２７】
ＰＢ１０とＰＢ８の両方もしくはいずれか一方の書き込みにおいてエラーが発生して正常に書き込めなかった場合は、エラー解消処理に移行する。
【０２２８】
アクセス装置１０１が継続して論理アドレスＬＡ３２〜ＬＡ６３の１クラスタ分の書き込み処理を行う場合は、上述した一連の処理と同様の処理を行い、ＰＢ１０とＰＢ８のページ８〜１５に記憶することとなる。この処理は図２７ＡのＢ１，Ｂ２に対応する。更に、アクセス装置１０１が継続して論理アドレスＬＡ６４〜ＬＡ９５の１クラスタ分の書き込み処理を行う場合は、上述した一連の処理と同様の処理を行い、ＰＢ１０とＰＢ８のページ１６〜２３に記憶することとなる。
【０２２９】
［フラッシュ異常が発生した際のエラー解消処理］
ここで、ＰＢ１０のページ１７への書き込みにおいて、フラッシュ異常が発生して正常に書き込めなった場合の処理について図２７Ｂを用いて説明する。なお、フラッシュ異常判断部１３３の処理は、第１の実施の形態の図１２と同様である。
【０２３０】
図１２において、ＰＢ８のページ１７への書き込みへの書き込みに際して、アドレス管理部３１０はカレントページ番号を読み書き制御部１２７とエラーページ特定部２０３に転送する。ＰＢ８のページ１７への書き込みが完了すると、不揮発性メモリ１１０がメモリコントローラ１３０４に対してエラーステータスを転送し、フラッシュ異常判断部１３３がこれを受信する（Ｓ２０２）。フラッシュ異常判断部１３３はエラーステータスをチェックしエラーが発生したことを表すフラグが立っていた場合（Ｓ２０３）、ＰＢ８のページ１７の書き込み中にフラッシュ異常が発生したと認識する。そしてページ１７をエラー発生ページとして、エラーページ番号（物理アドレス）とエラー種別フラグを値１にセットして代替処理部２４１に転送する（Ｓ２０４）。なお、エラー種別フラグは、値０の場合は電源遮断によるエラー、値０の場合はフラッシュ異常によるエラーであることを表す。
【０２３１】
エラーページ特定部２３０から転送されたエラーページ番号とエラー種別フラグを代替処理部２４１が受信し、エラー種別フラグが値１の場合、代替処理部２４１は代替処理として、コピー処理とリトライ処理を行う。
【０２３２】
コピー処理とは、エラーが発生しなかった方のブロック、即ちサブブロックＰＢ８のページ０〜１６に書き込まれたデータを、別の無効物理ブロック（ＰＢ５）に転写することによって、新しいメインブロックを構成する処理であり、図２７Ｂの矢印Ｄに対応する。コピー処理において、まずアドレス管理部１２６がコピー先ブロックとして消去済みの物理ブロックＰＢ５を取得し、代替処理部２４１はエラー発生ページ（ページ１７）より低順位アドレスのページ（ページ０〜１６）のコピー処理を実行する。
【０２３３】
一方リトライ処理とは、ＰＢ１０のページ１７に書き損じたデータを再度ＰＢ５のページ１７に書き込む処理であり、図２７Ｂの矢印Ｅに対応する。リトライ処理において、代替処理部２４１はエラー発生ページのリトライ処理を実行し、書き込みに成功した場合はページ１８以降の書き込みを継続し、失敗した場合はアクセス装置に対して「対応するクラスタが正常に書き込めなったこと」を通知し、当該クラスタの再書き込みコマンドをうながす。
【０２３４】
以上説明した代替処理によって、フラッシュ異常によるエラーを解消することができる。なおＰＢ１０は次に消去して使えるようにするために、アドレス管理部４１０が物理領域管理テーブル内の対応するステータスフラグを無効ブロックにセットする。
【０２３５】
［電源遮断が発生した際のエラー解消処理］
電源遮断が発生した場合のエラー解消処理は、上述したフラッシュ異常時のエラー解消処理を、電源立ち上げ後の初期時において実行するものであり、処理内容としては、図２７Ｂのコピー処理のみを行う。すなわちリトライ処理は実施しない。
【０２３６】
［集約処理］
所定の論理ブロックアドレスの書き込みが終了し、別の論理ブロックへの書き込みに移行した時点で、ＣＰＵ１２２は集約処理部３３２に対して、論理ブロックアドレスが移行したことを通知する。集約処理部３３２はこれを受けて、集約処理を行う。
【０２３７】
集約処理部３３２は、図２８に示すとおり、第１ブロックＰＢ１０と第２ブロックＰＢ８に記憶されたデータを、新たな無効物理ブロックＰＢ２２にコピーする。又集約処理部３３２は、論理物理変換テーブル４１１の対応する論理ブロックアドレス位置の記憶領域にＰＢＡ２２を書き込むとともに、物理領域管理テーブル１４１のＰＢＡ２２のステータスフラグを有効ブロックにセットする。
【０２３８】
更に、ＰＢ１０とＰＢ８は次に使用できるように、アドレス管理部４１０は物理領域管理テーブル１４１のステータスフラグを無効ブロックにする。
【０２３９】
以上、説明したように、本発明の第４の実施の形態は、書き込みブロック取得部２４２が、アクセス装置１０１からの書き込みコマンドに応じて、ページ情報指示部２４３が指示したページ数Ｎ（Ｎ＝２）と同じ数の物理ブロックを取得するようにアドレス管理部１２６に指示し、２個の物理ブロックを書き込み対象ブロックとして取得する。読み書き制御部２２０が、これらの物理ブロックに同一データを書き込む。そのため一方の物理ブロックでエラーが発生した場合、他方の物理ブロックに記憶されているデータ（全て正常データ）を用いて代替処理を行うようにし、更に集約処理部３３２が第１ブロックの第１ページと第２ブロックの第２ページのデータを、無効物理ブロックにコピーするようにしたので、各メモリセルが２ページに跨ってデータを保持する不揮発性メモリ１１０の特有のエラー、すなわち第２ページの書き込みエラーによって第１ページに記憶されていたデータが変化してしまうエラーを解消することが可能となる。
【０２４０】
なお、不揮発性メモリ１１０は、各メモリセルが２つのページに跨ってデータを保持するメモリであったのでＮ＝２としたが、３つ以上のページに跨ってデータを保持するメモリを使用する場合は、Ｎ≧３となるようにページ情報指示部１５３が指示すればよい。
【０２４１】
表４は、従来の不揮発性記憶システムと、本発明の第４の実施の形態における不揮発性記憶システムのエラー処理の相違点についてまとめたものである。本発明はエラー解消処理を追加することにより、従来の課題である、各メモリセルが複数ページに跨ってデータを保持する不揮発性メモリ（多値ＮＡＮＤフラッシュメモリ）特有のエラーに対応することができる。
【０２４２】
【表４】
2006318366.tif 000006
なお、本発明は、上記実施の形態に限定されるものではない。
【産業上の利用可能性】
【０２４３】
本発明にかかるメモリコントローラ、不揮発性記憶装置、不揮発性記憶システムは、多値ＮＡＮＤフラッシュメモリのように、各メモリセルが複数のページに跨ってデータを保持する不揮発性メモリを使用した装置において、信頼性を向上させることができる。本発明は、静止画記録再生装置や動画記録再生装置等のポータブルＡＶ機器、あるいは携帯電話等のポータブル通信機器の記録媒体に適用することができる。
【図面の簡単な説明】
【０２４４】
【図１】本発明の第１の実施の形態による不揮発性記憶システムのブロック図
【図２】第１の実施の形態による不揮発性メモリの構成を示す図
【図３】不揮発性メモリ１１０内に設けられた物理ブロックのフォーマットを示した説明図
【図４】論理アドレスＬＡのフォーマットを示した説明図
【図５】物理領域管理テーブル１４１のフォーマットを示した説明図
【図６】論理物理変換テーブル１４２のフォーマットを示した説明図
【図７】カレントブロックステータステーブルを示した説明図
【図８】ページ情報テーブルのフォーマットを表すアドレスマップ
【図９】バッファメモリの記憶フォーマットを示すアドレスマップ
【図１０Ａ】初期化処理及びエラー解消処理内容を示したフローチャート
【図１０Ｂ】初期化処理及びエラー解消処理内容を示したフローチャート
【図１１Ａ】フラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図１１Ｂ】フラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図１２】フラッシュ異常判断部の処理内容を示したフローチャート
【図１３】修復ページ特定部の処理内容を示したフローチャート
【図１４】通常処理におけるエラー解消処理内容を示したフローチャート
【図１５】通常処理における電源遮断判断の処理内容を示したフローチャート
【図１６】電源遮断が発生した際のエラー解消処理を示す動作説明図
【図１７Ａ】クラスタが不連続に書き込まれた際にフラッシュ異常が発生した場合のエラー解消処理を示す動作説明図
【図１７Ｂ】クラスタが不連続に書き込まれた際にフラッシュ異常が発生した場合のエラー解消処理を示す動作説明図
【図１８】本発明の第２の実施の形態による不揮発性記憶システムのブロック図
【図１９】本発明の第２の実施の形態による書き込みブロック取得部とページ情報指示部の処理内容を示したフローチャート
【図２０Ａ】本発明の第２の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２０Ｂ】本発明の第２の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２１Ａ】実施の形態２の変形例によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２１Ｂ】実施の形態２の変形例によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２２】本発明の第３の実施の形態による不揮発性記憶システムのブロック図
【図２３】第３の実施の形態による書き込みブロック取得部２４２とページ情報指示部３３１の処理内容を示したフローチャート
【図２４Ａ】第３の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２４Ｂ】第３の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２５Ａ】第３の実施の形態による集約処理を示す動作説明図
【図２５Ｂ】第３の実施の形態による集約処理を示す動作説明図
【図２６】本発明の第４の実施の形態による不揮発性記憶システムのブロック図
【図２７Ａ】第４の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２７Ｂ】第４の実施の形態によるフラッシュ異常が発生した際のエラー解消処理を示す動作説明図
【図２８】第４の実施の形態による集約処理を示す動作説明図
【図２９】多値ＮＡＮＤ不揮発性メモリを表す構成図
【図３０】多値ＮＡＮＤ不揮発性メモリを表す構成図
【図３１】多値ＮＡＮＤ不揮発性メモリを表す構成図
【図３２】多値ＮＡＮＤフラッシュメモリのメモリセルの電圧分布を表す特性図
【図３３】メモリセルへ正常に書き込めた場合の状態を示す特性図
【図３４】メモリセルへ正常に書き込めなかった場合の状態を示す特性図
【図３５Ａ】従来の不揮発性記憶システムにおける通常処理におけるデータ書き込み処理を示したフローチャート
【図３５Ｂ】従来の不揮発性記憶システムにおける通常処理における代替処理を示したフローチャート
【符号の説明】
【０２４５】
１００，１００Ａ，１００Ｂ，１００Ｃ  不揮発性記憶装置
１０１  アクセス装置
１１０  不揮発性メモリ
１２０，１２０Ａ，１２０Ｂ，１２０Ｃ  メモリコントローラ
１２２  ＣＰＵ
１２５，２１０  バッファメモリ
１２６，４１０  アドレス管理部
１２７  読み書き制御部
１２８，２３０  エラーページ特定部
１２９，２４０，３３０，４２０  エラー解消部
１３１，２３１  カレントブロックステータステーブル
１３２  電源遮断判断部
１３３  フラッシュ異常判断部
１４１  物理領域管理テーブル
１４２，３１１，４１１  論理物理変換テーブル
１５１  代替・修復処理部
１５２  修復ページ特定部
１５３，３３１  ページ情報指示部
２４１  代替処理部
２４２  書き込みブロック取得部
２４３  ページ情報指示部
３３２  集約処理部
【図１】
2006318366.tif 000007
【図２】
2006318366.tif 000008
【図３】
2006318366.tif 000009
【図４】
2006318366.tif 000010
【図５】
2006318366.tif 000011
【図６】
2006318366.tif 000012
【図７】
2006318366.tif 000013
【図８】
2006318366.tif 000014
【図９】
2006318366.tif 000015
【図１０Ａ】
2006318366.tif 000016
【図１０Ｂ】
2006318366.tif 000017
【図１１Ａ】
2006318366.tif 000018
【図１１Ｂ】
2006318366.tif 000019
【図１２】
2006318366.tif 000020
【図１３】
2006318366.tif 000021
【図１４】
2006318366.tif 000022
【図１５】
2006318366.tif 000023
【図１６】
2006318366.tif 000024
【図１７Ａ】
2006318366.tif 000025
【図１７Ｂ】
2006318366.tif 000026
【図１８】
2006318366.tif 000027
【図１９】
2006318366.tif 000028
【図２０Ａ】
2006318366.tif 000029
【図２０Ｂ】
2006318366.tif 000030
【図２１Ａ】
2006318366.tif 000031
【図２１Ｂ】
2006318366.tif 000032
【図２２】
2006318366.tif 000033
【図２３】
2006318366.tif 000034
【図２４Ａ】
2006318366.tif 000035
【図２４Ｂ】
2006318366.tif 000036
【図２５Ａ】
2006318366.tif 000037
【図２５Ｂ】
2006318366.tif 000038
【図２６】
2006318366.tif 000039
【図２７Ａ】
2006318366.tif 000040
【図２７Ｂ】
2006318366.tif 000041
【図２８】
2006318366.tif 000042
【図２９】
2006318366.tif 000043
【図３０】
2006318366.tif 000044
【図３１】
2006318366.tif 000045
【図３２】
2006318366.tif 000046
【図３３】
2006318366.tif 000047
【図３４】
2006318366.tif 000048
【図３５Ａ】
2006318366.tif 000049
【図３５Ｂ】
2006318366.tif 000050