(57)【要約】【課題】不揮発性記憶装置の長寿命化を図ることができる不揮発性記憶装置及び不揮発性記憶装置の制御方法を提供する。【解決手段】制御部１４は、書き換え前の処理用データ及び管理情報のうちの１つである書換前データが書き換えられる場合、複数の物理メモリブロックＰのうちの、書換前データが書き込まれていた物理メモリブロックＰと異なる物理メモリブロックＰであって、書き込み先として指定された物理メモリブロックＰに、書換後データが書き込まれ、書換前データが書き込まれていた物理メモリブロックＰを次回以降の書き込みで使用する新たな書き込み先として待機させるように複数の物理メモリブロックＰを制御する。【選択図】図１
2016071447.tif 000002
【特許請求の範囲】
【請求項１】
処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックと、
書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御する制御部と、
を含む不揮発性記憶装置。
【請求項２】
前記複数の物理メモリブロックは、前記処理用データが書き込まれており、異なる論理メモリブロックにより各々特定される複数の第１ブロックと、前記書き込み先としての書込順位であって、前記書き込み動作毎に繰り上がる書込順位が付与された複数の第２ブロックと、前記管理情報が書き込まれた第３ブロックとの３つの用途ブロックに分類され、
前記制御部は、前記書換前データが書き換えられる場合、前記書込順位のうちの最高順位が付与された前記第２ブロックに前記書換後データが書き込まれ、前記書換後データが書き込まれた前記第２ブロックが、前記書換前データが書き込まれていた前記用途ブロックに変更され、前記書換前データが書き込まれていた前記用途ブロックが、前記書込順位のうちの最低順位が付与された前記第２ブロックに変更されるように前記複数の物理メモリブロックを制御する請求項１に記載の不揮発性記憶装置。
【請求項３】
前記管理情報は、前記論理メモリブロックと前記物理メモリブロックとの対応関係、及び前記書込順位と前記物理メモリブロックとの対応関係を示す対応関係情報を含む管理情報である請求項２に記載の不揮発性記憶装置。
【請求項４】
前記第３ブロックは、複数の前記管理情報を格納可能であり、
前記制御部は、前記対応関係情報が更新される毎に、更新後の前記対応関係情報を含む前記管理情報が時系列で前記第３ブロックに格納されるように前記複数の物理メモリブロックを制御する請求項３に記載の不揮発性記憶装置。
【請求項５】
前記制御部は、前記第３ブロックにおける前記対応関係情報の更新回数が所定回数を超えた場合、前記最高順位が付与された前記第２ブロックが前記第３ブロックに変更されるように前記複数の物理メモリブロックを制御する請求項４に記載の不揮発性記憶装置。
【請求項６】
前記制御部は、更新前の前記対応関係情報である旧対応関係情報を含む前記書換前データとしての前記管理情報が書き込まれていた前記第３ブロックが、前記最低順位が付与された前記第２ブロックに変更される場合、前記第３ブロックから変更された前記第２ブロックに、前記旧対応関係情報の消去を許可する消去許可情報が書き込まれるように前記複数の物理メモリブロックを制御し、前記書込順位が繰り上がった結果、前記消去許可情報が書き込まれた状態で前記最高順位が付与された前記第２ブロックに前記書換後データが書き込まれる場合、前記最高順位が付与された前記第２ブロックから前記旧対応関係情報が消去されるように前記複数の物理メモリブロックを制御する請求項３から請求項５の何れか１項に記載の不揮発性記憶装置。
【請求項７】
前記制御部は、前記最高順位が付与された前記第２ブロックに、最新の前記対応関係情報である新対応関係情報を含む前記書換後データとしての前記管理情報が書き込まれてから、前記消去許可情報の書き込みが完了するまでの間に電源が遮断された場合、前記電源の復旧後、前記電源が遮断される前の最新の前記書換後データが有効となるように前記複数の物理メモリブロックを制御する請求項６に記載の不揮発性記憶装置。
【請求項８】
前記制御部は、前記対応関係情報の更新中に電源が遮断された場合、前記電源の復旧後、前記電源が遮断される前の前記書換前データが書き換え対象とされるように前記複数の物理メモリブロックを制御する請求項３から請求項７の何れか１項に記載の不揮発性記憶装置。
【請求項９】
前記複数の第２ブロックのうちの前記最高順位が付与された第２ブロックは、前記複数の第２ブロックのうちの前記消去動作の回数が最少の第２ブロックである請求項２から請求項８の何れか１項に記載の不揮発性記憶装置。
【請求項１０】
前記制御部は、前記複数の第２ブロックの各々で前記消去動作の回数が閾値を超えた場合、前記複数の第１ブロックにおける現時点で書き換え対象とされていない前記処理用データが書き込まれていた第１ブロックのうちの前記消去動作の回数が最少の第１ブロックと、前記複数の第２ブロックのうちの前記最高順位以外の順位が前記書込順位として付与された第２ブロックとを入れ替えるように前記複数の物理メモリブロックを制御する請求項２から請求項９の何れか１項に記載の不揮発性記憶装置。
【請求項１１】
前記管理情報は、前記論理メモリブロックと前記物理メモリブロックとの対応関係、及び前記書込順位と前記物理メモリブロックとの対応関係を示す対応関係情報を含む管理情報であり、
前記制御部は、前記最少の第１ブロックと前記最高順位以外の順位が付与された第２ブロックとの入れ替えが行われてから前記対応関係情報が更新されるまでの間に電源が遮断された場合、前記電源の復旧後、前記電源が遮断される前の前記書換前データが書き換え対象とされるように前記複数の物理メモリブロックを制御する請求項１０に記載の不揮発性記憶装置。
【請求項１２】
前記制御部は、前記複数の第２ブロックの各々で前記消去動作の回数が前記閾値を超えたことを条件に前記閾値を増加させる請求項１０又は請求項１１に記載の不揮発性記憶装置。
【請求項１３】
前記制御部は、前記複数の第１ブロックにおける現時点で書き換え対象とされていない前記処理用データが書き込まれていた第１ブロック及び前記複数の第２ブロックの各々で前記消去動作の回数が前記閾値を超えたことを条件に前記閾値を増加させる請求項１２に記載の不揮発性記憶装置。
【請求項１４】
前記制御部は、前記書換後データの書き込み中に電源が遮断された場合、前記電源の復旧後、前記電源が遮断される前の前記書換前データが書き換え対象とされるように前記複数の物理メモリブロックを制御する請求項１から請求項１３の何れか１項に記載の不揮発性記憶装置。
【請求項１５】
処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックを含む不揮発性記憶装置の制御方法であって、
書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御することを含む不揮発性記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置及び不揮発性記憶装置の制御方法に関する。
【背景技術】
【０００２】
従来、不揮発性記憶装置であるフラッシュメモリでは、例えば、１個当たり１０キロバイトの複数のブロックに記憶領域が区分され、データの書き込みは１バイト単位や１ワード単位で行われるが、消去はブロック単位で行われる（例えば、特許文献１及び特許文献２参照）。書き込みと消去とを繰り返すと、いずれ消去又は書き込みができなくなり、このときブロックは寿命を迎える。
【０００３】
フラッシュメモリは、消去回数に制限があるので、不揮発性記憶装置としての寿命を延ばすために、多数の予備のブロックを備えており、書き換えの寿命に達した現用のブロックに代えて予備のブロックを使用している。
【０００４】
また、特許文献３に記載の不揮発性メモリは、メモリブロックの書き換え回数をカウントし、書き換え限度回数に達しているメモリブロックへの書き込みが発生した場合、代替メモリブロックとして、空きメモリブロックにデータを書き込んでいる。そして、データの所在を管理する管理情報に、データが書き込まれた空きメモリブロックのアドレスを書き込むことで、寿命に達したメモリブロックの使用を回避している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１１２４５５号公報
【特許文献２】特開２０１０−１９８２１９号公報
【特許文献３】特開平４−２７１０９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献３に記載の不揮発性メモリは、論理メモリブロックと物理メモリブロックとの対応関係を示すブロック接続情報を含む管理情報を、常に同じ物理メモリブロックに格納している。従って、ブロック接続情報の更新に伴って管理情報が更新される毎に、同じ物理メモリブロックで消去動作が行われるため、結果的にフラッシュメモリ全体の書き換え限度回数が制限されてしまう。
【０００７】
本発明は上記問題点を解決するために成されたものであり、管理情報を特定の物理メモリブロックのみに格納する場合に比べ、不揮発性記憶装置の長寿命化を図ることができる不揮発性記憶装置及び不揮発性記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に記載の不揮発性記憶装置は、処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックと、書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御する制御部と、を含む。
【０００９】
上記目的を達成するために、請求項１５に記載の不揮発性記憶装置の制御方法は、処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックを含む不揮発性記憶装置の制御方法であって、書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御することを含む。
【発明の効果】
【００１０】
本発明によれば、ブロック接続情報を特定の物理メモリブロックのみに格納する場合に比べ、不揮発性記憶装置の長寿命化を図ることができる、という効果が得られる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係るフラッシュメモリの要部機能の一例を示すブロック図である。
【図２】実施形態に係るフラッシュメモリの電気系のハードウェア構成の一例を示すブロック図である。
【図３】実施形態に係るフラッシュメモリの物理メモリに含まれる管理用メモリブロックに格納されている管理情報の構成の一例を示す概略構成図である。
【図４】実施形態に係る起動処理の流れの一例を示すフローチャートである。
【図５】実施形態に係る書換処理の流れの一例を示すフローチャートである。
【図６】図５に示すフローチャートの続きである。
【図７】実施形態に係る予備ブロック交換処理の流れの一例を示すフローチャートである。
【図８】予備用メモリブロック間で入れ替えが行われる前の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図９】予備用メモリブロック間で入れ替えが行われた場合の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係、並びに、物理メモリブロック毎の消去カウント値の一例を示す相関図である。
【図１０】図９に示す対応関係において、第１書換後データが新たな書き込み先に書き込まれた場合の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図１１】図１０に示す対応関係において、第２書換後データが新たな書き込み先に書き込まれた場合の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図１２】データ用メモリブロックと予備用メモリブロックとの間で入れ替えが行われる前の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図１３】データ用メモリブロックと予備用メモリブロックとの間で入れ替えが行われた場合の実施形態に係るフラッシュメモリの論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図１４】図１３に示す対応関係において、第１書換後データが新たな書き込み先に書き込まれた場合の論理メモリブロック、物理メモリブロック、及び用途メモリブロックの対応関係の一例を示す相関図である。
【図１５】実施形態に係るフラッシュメモリにおける第１電源断パターンの説明に供する模式図である。
【図１６】実施形態に係るフラッシュメモリにおける第２電源断パターンの説明に供する模式図である。
【図１７】実施形態に係るフラッシュメモリにおける第３電源断パターンの説明に供する模式図である。
【図１８】実施形態に係るフラッシュメモリにおける第４電源断パターンの説明に供する模式図である。
【図１９】管理用メモリブロックに１個の管理情報のみが格納される場合の論理メモリブロック、物理メモリブロック、及び用途ブロックの対応関係の一例を示す相関図である。
【図２０】図１９に示す対応関係において、新たな書き込み先に第１書換後データが書き込まれた場合の論理メモリブロック、物理メモリブロック、及び用途ブロックの対応関係の一例を示す相関図である。
【図２１】図２０に示す対応関係において、更新されたブロック接続情報を含む管理情報が新たな書き込み先に書き込まれた場合の論理メモリブロック、物理メモリブロック、及び用途ブロックの対応関係の一例を示す相関図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、本発明を実施するための形態例について詳細に説明する。
【００１３】
一例として図１に示すように、本発明に係る不揮発性記憶装置の一例であるフラッシュメモリ１０は、半導体のメモリである物理メモリ１２、及び制御部１４を含む。物理メモリ１２は、複数の物理メモリブロックＰに区分され、制御部１４によって制御される。なお、以下では、説明の便宜上、１個の物理メモリブロックＰが５１２バイトの記憶容量を備えている場合について説明する。
【００１４】
複数の物理メモリブロックＰは、処理用データが書き込まれた物理メモリブロックＰと、処理用データの所在を管理する管理情報ＭＤ（図３参照）が書き込まれた物理メモリブロックＰとを一部に含む。
【００１５】
処理用データは、書き換え対象とされるデータである。すなわち、処理用データは、制御部１４によって物理メモリブロックＰから読み出され、書き換えられる。そして、書き換え後のデータが、新たな書き込み先である他の物理メモリブロックＰに書き込まれる。
【００１６】
なお、以下では、説明の便宜上、書き換え前の処理用データ、及び書き換え前の管理情報ＭＤを区別して説明する必要がない場合、「書換前データ」と称し、書換前データが書き換えられて得られたデータを「書換後データ」と称する。また、以下では、説明の便宜上、書換後データが書き込まれる新たな書き込み先である他の物理メモリブロックＰを、「新たな書き込み先」と称する。また、以下では、説明の便宜上、「書き換え」を「更新」とも称する。
【００１７】
物理メモリブロックＰでは、制御部１４の指示に従って新たな書き込み先への書き込み動作が行われ、書き込み動作が行われる前に消去動作が行われる。すなわち、物理メモリブロックＰでは、１回の書き込み動作が行われる前提として消去動作（準備動作としての消去動作）が１回行われる。
【００１８】
また、書換前データが書き込まれていた物理メモリブロックＰは、保持している書換前データが書き換えられた後も、他の書換後データの新たな書き込み先として消去動作が行われるまでの間、書換前データを保持する。
【００１９】
制御部１４は、書換前データを書き込む場合、指定ブロックに、書換後データを書き込む。そして、制御部１４は、書換前データが書き込まれていた物理メモリブロックＰを次回以降の書き込みで使用する新たな書き込み先として待機させるように複数の物理メモリブロックＰを制御する。なお、指定ブロックとは、物理メモリブロックＰのうちの、書換前データが書き込まれていた物理メモリブロックＰと異なる物理メモリブロックＰであって、新たな書き込み先として指定された物理メモリブロックＰを指す。ここで、新たな書き込み先として指定された物理メモリブロックＰとは、例えば、特定の物理メモリブロックＰに対する書き込み回数の偏りが抑制されるように指定された物理メモリブロックＰを指す。
【００２０】
複数の物理メモリブロックＰは、３つの用途ブロックに分類される。３つの用途ブロックとは、本発明に係る複数の第１ブロックの一例である複数のデータ用メモリブロックＤ、本発明に係る第２ブロックの一例である予備用メモリブロックＲ、及び本発明に係る第３ブロックの一例である管理用メモリブロックＭを指す。
【００２１】
データ用メモリブロックＤに分類されている物理メモリブロックＰには、処理用データが書き込まれている。また、複数のデータ用メモリブロックＤの各々には、異なる論理メモリブロックＬが対応付けられている。そのため、データ用メモリブロックＤに分類されている物理メモリブロックＰは、論理空間の１区分を示す論理メモリブロックＬによって一意に特定される。すなわち、フラッシュメモリ１０では、１個の物理メモリブロックＰに対して、１個の論理メモリブロックＬが対応付けられている。
【００２２】
なお、以下では、説明の便宜上、論理メモリブロックＬ０〜Ｌ２７を例に挙げて説明し、論理メモリブロックＬ０〜Ｌ２７を区別して説明する必要がない場合、論理メモリブロックＬと称する。また、本実施形態において、論理メモリブロックと論理アドレスとの一般的な関係は下記の表１に示す通りである。
【００２３】
【表１】
2016071447.tif 000003
【００２４】
複数の予備用メモリブロックＲは、書き込み先としての書込順位が付与されている。書込順位は、書き込み動作が行われる毎に繰り上がる。
【００２５】
管理用メモリブロックＭに分類されている物理メモリブロックＰには、管理情報ＭＤが書き込まれている。
【００２６】
なお、以下では、説明の便宜上、データ用メモリブロックＤに分類されている物理メモリブロックＰを、データ用メモリブロックＤと称する。また、以下では、説明の便宜上、予備用メモリブロックＲに分類されている物理メモリブロックＰを、予備用メモリブロックＲと称する。更に、以下では、説明の便宜上、管理用メモリブロックＭに分類されている物理メモリブロックＰを、管理用メモリブロックＭと称する。
【００２７】
制御部１４は、書換前データを書き換える場合、書込順位のうちの最高順位が付与された予備用メモリブロックＲに書換後データを書き込む。また、制御部１４は、書換後データを書き込んだ予備用メモリブロックＲを、書換前データが書き込まれていた用途ブロックに変更する。更に、制御部１４は、書換前データが書き込まれていた用途ブロックを、書込順位のうちの最低順位が付与された予備用メモリブロックＲに変更する。
【００２８】
管理情報ＭＤは、本発明に係る対応関係情報の一例であるブロック接続情報を含む。ブロック接続情報は、論理メモリブロックＬと物理メモリブロックＰとの対応関係、及び書込順位と物理メモリブロックＰとの対応関係を示す情報である。すなわち、ブロック接続情報は、論理メモリブロックＬと物理メモリブロックＰとの対応関係が変更される毎に更新され、書込順位と物理メモリブロックＰとの対応関係が変更される毎に更新される。
【００２９】
管理用メモリブロックＭは、複数の管理情報ＭＤを格納可能な物理メモリブロックＰである。制御部１４は、ブロック接続情報が更新される毎に、更新後のブロック接続情報を含む管理情報ＭＤを時系列で管理用メモリブロックＭに格納する。なお、以下では、説明の便宜上、管理情報ＭＤが６４バイトで、管理用メモリブロックＭに８個格納できる場合を例に挙げて説明する。
【００３０】
なお、以下では、説明の便宜上、物理メモリブロックＰ０〜Ｐ３１を例に挙げて説明し、物理メモリブロックＰ０〜Ｐ３１を区別して説明する必要がない場合、物理メモリブロックＰと称する。また、以下では、説明の便宜上、データ用メモリブロックＤ０〜Ｄ２７を例に挙げて説明し、データ用メモリブロックＤ０〜Ｄ２７を区別して説明する必要がない場合、データ用メモリブロックＤと称する。更に、以下では、説明の便宜上、予備用メモリブロックＲ０〜Ｒ２を例に挙げて説明し、予備用メモリブロックＲ０〜Ｒ２を区別して説明する必要がない場合、予備用メモリブロックＲと称する。
【００３１】
一例として図８に示すように、物理メモリブロックＰ０〜Ｐ２７には、添え字の番号が一致するように論理メモリブロックＬ０〜Ｌ２７が対応付けられている。また、物理メモリブロックＰ０〜Ｐ２７は、データ用メモリブロックＤに分類されている。図８に示す例では、物理メモリブロックＰ０〜Ｐ２７は、添え字の番号が一致するようにデータ用メモリブロックＤ０〜Ｄ２７に分類されている。また、物理メモリブロックＰ２８〜Ｐ３０は、予備用メモリブロックＲに分類されている。図８に示す例では、物理メモリブロックＰ２８は、予備用メモリブロックＲ０に分類され、物理メモリブロックＰ２９は、予備用メモリブロックＲ１に分類され、物理メモリブロックＰ３０は、予備用メモリブロックＲ２に分類されている。また、物理メモリブロックＰ３１は、管理用メモリブロックＭに分類されている。更に、物理メモリブロックＰ０〜Ｐ３１には、消去動作の回数を示す消去カウント値が記憶されている。例えば、物理メモリブロックＰ０の消去動作の回数を示す消去カウント値は、物理メモリブロックＰ０に記憶され、物理メモリブロックＰ３１の消去動作の回数を示す消去カウント値は、物理メモリブロックＰ３１に記憶される。
【００３２】
一例として図２に示すように、フラッシュメモリ１０は、メモリコントローラ１６を含む。メモリコントローラ１６は、ＣＰＵ（Central Processing Unit）２０、ＲＡＭ（Random Access Memory）２２、及びＲＯＭ（Read Only Memory）２４を含み、ＣＰＵ２０、ＲＡＭ２２、及びＲＯＭ２４は、バス２６を介して相互に接続されている。
【００３３】
ＲＯＭ２４は、起動プログラム２８及び書換プログラム３０を記憶している。なお、以下では、説明の便宜上、起動プログラム２８及び書換プログラム３０を区別して説明する必要がない場合、「プログラム」と称する。
【００３４】
ＣＰＵ２０は、ＲＯＭ２４からプログラムを読み出してＲＡＭ２２に展開し、プログラムを実行することで、図１に示す制御部１４として動作する。
【００３５】
メモリコントローラ１６は、ホストインタフェース（Ｉ／Ｆ）３２及びメモリＩ／Ｆ３４を含む。
【００３６】
ホストＩ／Ｆ３２は、バス２６に接続されている。ホストＩ／Ｆ３２は、ホストコンピュータ３６に接続され、ＣＰＵ２０とホストコンピュータ３６との間の各種情報の送受信を司る。
【００３７】
メモリＩ／Ｆ３４は、バス２６に接続されている。メモリＩ／Ｆ３４は、物理メモリ１２に接続され、ＣＰＵ２０と物理メモリ１２との間の各種情報の送受信を司る。
【００３８】
なお、本実施形態では、例えば“unsigned int SectorEraseCnt[];”というデータ構造の消去カウンタがＣＰＵ２０によって実現される。ここで、消去カウンタとは、消去カウント値を計数するカウンタを指す。
【００３９】
一例として図３に示すように、管理用メモリブロックＭには、各々６４バイトの管理情報ＭＤ０〜ＭＤ７が時系列で格納されている。なお、以下では、管理情報ＭＤ０〜ＭＤ７を区別して説明する必要がない場合、管理情報ＭＤと称する。
【００４０】
図３に示す例では、管理情報ＭＤ０〜ＭＤ７のうち、添え字の番号が小さい管理情報ＭＤほど古いブロック接続情報を含む管理情報ＭＤとされている。すなわち、図３に示す例では、管理情報ＭＤ７に最新のブロック接続情報が含まれている。
【００４１】
管理情報ＭＤは、先頭シグネチャ、ブロック接続情報、及び末尾シグネチャを有する。先頭シグネチャは、１個の管理情報ＭＤの先頭を特定すると共に、管理用メモリブロックＭ内の一定サイズのデータが管理情報ＭＤであることを示すシグネチャである。末尾シグネチャは、１個の管理情報ＭＤが最後まで書き込まれていることを示すシグネチャである。また、管理情報ＭＤ０には、管理情報ＭＤ７の末尾シグネチャが書き込まれたことを条件に、本発明に係る消去許可情報の一例である消去シグネチャが付与される。消去シグネチャは、管理用メモリブロックＭに書き込まれている管理情報ＭＤ０〜ＭＤ７の消去を許可するシグネチャである。
【００４２】
本実施形態において、例えば“Threshold”というデータ構造で示される閾値変数には、消去動作の回数の閾値が格納される。また、本実施形態において、例えば“SectorAssignTb1”というデータ構造で示されるテーブル変数には、物理データブロックＰ０〜Ｐ３１の添え字の番号の物理データブロックＰに何らかのデータが書き込まれているか否かを示すビット値が格納される。
【００４３】
本実施形態において、例えば“LogPhyTb1”というデータ構造で示される変数配列は、論理メモリブロックＬと物理メモリブロックＰとの対応関係、予備用メモリブロックＲと物理メモリブロックＰとの対応関係、及び管理用メモリブロックＭと物理メモリブロックＰとの対応関係を示す変数配列である。従って、ＣＰＵ２０は、“LogPhyTb1”というデータ構造で示される変数配列を参照することで、用途ブロックを特定することができ、書換前データが書き込まれていた物理メモリブロックＰ、及び書換後データが書き込まれていた物理メモリブロックＰを特定することができる。なお、以下では、説明の便宜上、“LogPhyTb1”というデータ構造で示される変数配列を単に「変数配列」と称する。
【００４４】
ここで、変数配列の要素数を物理メモリブロックＰの個数とする。この場合、変数配列の要素０〜“論理メモリブロック数−１”には、論理メモリブロックＬの添え字の番号に対応する物理メモリブロックＰの添え字の番号が格納される。また、配列要素の“論理メモリブロックＬの個数”〜“予備用メモリブロックＲの個数−１”には、予備用メモリブロックＲ０〜Ｒ２に対応する物理メモリブロックＰの添え字の番号が格納される。更に、配列要素の最後の要素には、管理用メモリブロックＭに対応する物理メモリブロックＰの添え字の番号が格納される。
【００４５】
なお、物理メモリブロックＰが８個、データ用メモリブロックＤが４個、及び予備用メモリブロックＲが３個の場合の変数配列の一例は下記の表２の通りである。
【００４６】
【表２】
2016071447.tif 000004
【００４７】
また、本実施形態では、例えば“unsigned int LutSaveOffsetAddr”というデータ構造で示されるアドレスポインタがＣＰＵ２０によって実現される。ここで、アドレスポインタとは、管理用メモリブロックＭにおける最新の管理情報ＭＤの格納位置を示す変数を指す。最新の管理情報ＭＤとは、管理用メモリブロックＭにおける最新のブロック接続情報を含む管理情報ＭＤを意味する。
【００４８】
ここで、管理用メモリブロックＭに管理情報ＭＤが格納されていない状態で、書換後データが新たな書き込み先に書き込まれる場合、ブロック接続情報が更新される。ブロック接続情報が更新されると、管理用メモリブロックＭの先頭に６４バイト分の管理情報ＭＤである管理情報ＭＤ０が書き込まれる。これに応じて、アドレスポインタが“６４”に更新される。次に、書換後データが新たな書き込み先に書き込まれる場合、ブロック接続情報が更新され、管理用メモリブロックＭの６４バイト目から管理情報ＭＤ１が書き込まれる。これに応じて、アドレスポインタが“１２８”に更新される。この動作は、管理用メモリブロックＭに８個の管理情報ＭＤが書き込まれるまで、すなわち、アドレスポインタが“５１２”に達するまで繰り返される。アドレスポインタが“５１２”に達してから最初に書換後データが新たな書き込み先に書き込まれる場合、予備用メモリブロックＲ０が管理用メモリブロックＭに変更されると共に、元の管理用メモリブロックＭが予備用メモリブロックＲ２に変更される。そして、新たな管理用メモリブロックＭの先頭に最新のブロック接続情報を含む管理情報ＭＤ０が書き込まれ、アドレスポインタが“６４”に更新され、新たな予備用メモリブロックＲ２に残っている管理情報ＭＤ０に消去シグネチャが付与される。
【００４９】
次に、本実施形態に係るフラッシュメモリ１０の作用を説明する。先ず、フラッシュメモリ１０に対して電源が投入された場合にＣＰＵ２０が起動プログラム２８を実行することでＣＰＵ２０によって行われる起動処理について、図４を参照して説明する。
【００５０】
図４に示す起動処理では、先ず、ステップ１００で、制御部１４は、ホストコンピュータ３６により送信された書換指示情報がホストＩ／Ｆ３２によって受信されたか否かを判定する。書換指示情報とは、ホストコンピュータ３６がフラッシュメモリ１０に対して物理メモリブロックＰの書き換えを指示する情報である。書換指示情報には、書き換え内容を示す情報が含まれる。ステップ１００において、ホストコンピュータ３６により送信された書換指示情報がホストＩ／Ｆ３２によって受信されていない場合は、判定が否定されて、ステップ１００の判定が再び行われる。ステップ１００において、ホストコンピュータ３６により送信された書換指示情報がホストＩ／Ｆ３２によって受信された場合は、判定が肯定されて、ステップ１０２へ移行する。
【００５１】
ステップ１０２で、制御部１４は、物理メモリ１２に管理用メモリブロックＭが存在しているか否かを判定する。ステップ１０２において、物理メモリ１２に管理用メモリブロックＭが存在していない場合は、判定が否定されて、ステップ１０４へ移行する。ステップ１０２において、物理メモリ１２に管理用メモリブロックＭが存在している場合は、判定が肯定されて、ステップ１０８へ移行する。
【００５２】
ステップ１０４で、制御部１４は、全ての物理メモリブロックＰの記憶内容を消去し、その後、ステップ１０６へ移行する。
【００５３】
ステップ１０６で、制御部１４は、ブロック接続情報及び消去カウント値を初期化し、その後、ステップ１１０へ移行する。ブロック接続情報及び消去カウント値の初期化とは、ブロック接続情報及び消去カウンタの新規作成を意味する。
【００５４】
ステップ１０８で、制御部１４は、管理用メモリブロックＭから最新の管理情報ＭＤを取得し、物理メモリブロックＰの各々から消去カウント値を取得する。そして、制御部１４は、取得した最新の管理情報ＭＤに含まれるブロック接続情報、及び取得した消去カウント値をＲＡＭ２２に展開する。
【００５５】
次のステップ１１０で、制御部１４は、起動処理を終了する条件を満たしたか否かを判定する。起動処理を終了する条件の一例としては、ホストコンピュータ３６によって起動処理の終了が指示された場合が挙げられる。ステップ１１０において、起動処理を終了する条件を満たしていない場合は、判定が否定されて、ステップ１００へ移行する。ステップ１１０において、起動処理を終了する条件を満たした場合は、判定が肯定されて、本起動処理を終了する。
【００５６】
次に、上記ステップ１０８の処理が実行された場合にＣＰＵ２０が書換プログラム３０を実行することでＣＰＵ２０によって行われる書換処理について、図５を参照して説明する。
【００５７】
なお、以下では、説明の便宜上、論理メモリブロックＬ０が対応付けられた新たな書き込み先としての物理メモリブロックＰに、第１書換後データが書き込まれる場合を例に挙げて説明する。ここで、第１書換後データとは、書換前データとしての処理用データがＣＰＵ２０によって書換指示情報に従って書き換えられて得られたデータを指す。また、以下では、説明の便宜上、更新後の最新のブロック接続情報を含む最新の管理情報ＭＤのうち、新たな書き込み先に書き込まれる管理情報ＭＤ０を「第２書換後データ」と称する。また、以下では、説明の便宜上、第１書換後データ及び第２書換後データを区別して説明する必要がない場合、単に「書換後データ」と称する。
【００５８】
また、以下では、説明の便宜上、物理メモリブロックＰからＲＡＭ２２に展開された消去カウント値を、物理メモリブロックＰに対応する消去カウント値と称する。また、以下では、説明の便宜上、データ用メモリブロックＤからＲＡＭ２２に展開された消去カウント値を、データ用メモリブロックＤに対応する消去カウント値と称する。また、以下では、説明の便宜上、予備用メモリブロックＲからＲＡＭ２２に展開された消去カウント値を、予備用メモリブロックＲに対応する消去カウント値と称する。更に、以下では、説明の便宜上、管理用メモリブロックＭからＲＡＭ２２に展開された消去カウント値を、管理用メモリブロックＭに対応する消去カウント値と称する。
【００５９】
図５に示す書換処理では、先ず、ステップ１２０で、制御部１４は、ＲＡＭ２２上のブロック接続情報を参照して、予備用メモリブロックＲの各々に対応する消去カウント値の各々が閾値以下か否かを判定する。なお、本実施形態では、閾値の一例として“１０００”を採用している。また、予備用メモリブロックＲに対応する消去カウント値とは、予備用メモリブロックＲからＲＡＭ２２上に展開された消去カウント値を指す。
【００６０】
ステップ１２０において、予備用メモリブロックＲの各々に対応する消去カウント値の各々が閾値以下の場合は、ステップ１２１へ移行する。ステップ１２０において、予備用メモリブロックＲの各々に格納されている消去カウント値の各々が閾値以下の場合は、判定が肯定されて、ステップ１２２へ移行する。
【００６１】
ステップ１２１で、制御部１４は、一例として図７に示す予備ブロック交換処理を実行し、その後、ステップ１２６へ移行する。
【００６２】
図７に示す予備ブロック交換処理では、先ず、ステップ１２１Ａで、制御部１４は、データ用メモリブロックＤ０を除く全データ用メモリブロックＤのうち、最小の消去カウント値に対応するデータ用メモリブロックＤと予備用メモリブロックＲ１とを入れ替える。すなわち、最小の消去カウント値に対応するデータ用メモリブロックＤに分類されていた物理メモリブロックＰを、記憶内容を保持したまま、予備用メモリブロックＲ１に分類し直す。また、予備用メモリブロックＲ１に分類されていた物理メモリブロックＰを、記憶内容を保持したまま、最小の消去カウント値に対応するデータ用メモリブロックＤに分類し直す。
【００６３】
ここで、データ用メモリブロックＤと予備用メモリブロックＲ１との入れ替えを実現するためには、先ず、最小の消去カウント値に対応するデータ用メモリブロックＤと論理メモリブロックＬとの対応付けが解除される。そして、最小の消去カウント値に対応するデータ用メモリブロックＤとの対応付けが解除された論理メモリブロックＬが、予備用メモリブロックＲ１に分類されている物理メモリブロックＰに対応付けられる。これにより、予備用メモリブロックＲ１に分類されていた物理メモリブロックＰがデータ用メモリブロックＤに分類し直される。
【００６４】
また、図１２及び図１３に示す例では、ステップ１２１Ａの処理が実行されることで、消去カウント値が“１０００”のデータ用メモリブロックＤ１と消去カウント値が“１００２”の予備用メモリブロックＲ１とが入れ替えられている。すなわち、データ用メモリブロックＤ１に分類されていた物理メモリブロックＰ１と論理メモリブロックＬ１との対応付けが解除され、データ用メモリブロックＤ１に分類されていた物理メモリブロックＰ１が予備用メモリブロックＲ１に分類し直されている。また、予備用メモリブロックＲ１に分類されていた物理メモリブロックＰ２９には、論理メモリブロックＬ１が対応付けられており、物理メモリブロックＰ２９がデータ用メモリブロックＤ１に分類し直されている。
【００６５】
また、ステップ１２１Ａで、制御部１４は、最小の消去カウント値に対応するデータ用メモリブロックＤと予備用メモリブロックＲ１との入れ替えを行うと、ＲＡＭ２２上のブロック接続情報を更新する。ブロック接続情報の更新は、変数配列が更新されることによって実現される。
【００６６】
次のステップ１２１Ｂで、制御部１４は、消去カウント値の閾値に所定値を加算する。本ステップ１２１Ｂでは、所定値の一例として“１”が採用されているが、本発明はこれに限定されるものではなく、“１”以外の自然数であってもよい。また、所定値は、不変値であってもよいし、ホストコンピュータ３６の指示に応じてカスタマイズされる可変値であってもよい。
【００６７】
次のステップ１２１Ｃで、制御部１４は、ステップ１２１Ａの処理による入れ替え後のデータ用メモリブロックＤの記憶内容を消去する。なお、図１３に示す例では、データ用メモリブロックＤ１が、ステップ１２１Ａの処理による入れ替え後のデータ用メモリブロックＤに該当する。
【００６８】
次のステップ１２１Ｄで、制御部１４は、ステップ１２１Ａの処理による入れ替え後のデータ用メモリブロックＤの消去カウント値に１を加算する。なお、図１３及び図１４に示す例では、物理メモリブロックＰ２９に対応する消去カウント値が“１００２”から“１００３”に増加している。
【００６９】
次のステップ１２１Ｅで、制御部１４は、ステップ１２１Ａの処理による入れ替え後のデータ用メモリブロックＤに、元の物理メモリブロックＰに記憶されている処理用データを書き込み、その後、本予備用ブロック交換処理を終了する。
【００７０】
なお、本ステップ１２１Ｅにおいて、元の物理メモリブロックＰとは、ステップ１２１Ａの処理の実行開始の時点でデータ用メモリブロックＤ１に分類されていた物理メモリブロックＰを指し、図１２に示す例では、物理メモリブロックＰ１を指す。
【００７１】
ステップ１２２で、制御部１４は、全ての物理メモリブロックＰの各々に対応する消去カウント値のうち、予備用メモリブロックＲ０に対応する消去カウント値が最小の消去カウント値か否かを判定する。
【００７２】
ステップ１２２において、全ての物理メモリブロックＰの各々に対応する消去カウント値のうち、予備用メモリブロックＲ０に対応する消去カウント値が最小の消去カウント値でない場合は、判定が否定されて、ステップ１２４へ移行する。ステップ１２２において、全ての物理メモリブロックＰの各々に対応する消去カウント値のうち、予備用メモリブロックＲ０に対応する消去カウント値が最小の消去カウント値の場合は、判定が肯定されて、ステップ１２６へ移行する。
【００７３】
ステップ１２４で、制御部１４は、全ての予備用メモリブロックＲのうち、最小の消去カウント値に対応する予備用メモリブロックＲと予備用メモリブロックＲ０とを入れ替える。すなわち、最小の消去カウント値に対応する予備用メモリブロックＲに分類されていた物理メモリブロックＰを、記憶内容を保持したまま、予備用メモリブロックＲ０に分類し直す。また、予備用メモリブロックＲ０に分類されていた物理メモリブロックＰを、記憶内容を保持したまま、最小の消去カウント値に対応する予備用メモリブロックＲに分類し直す。なお、図８及び図９に示す例では、予備用メモリブロックＲ０と予備用メモリブロックＲ２とが入れ替えられている。
【００７４】
また、ステップ１２４で、制御部１４は、最小の消去カウント値に対応する予備用メモリブロックＲと予備用メモリブロックＲ０とを入れ替えを行うと、ＲＡＭ２２上のブロック接続情報を更新し、その後、ステップ１２６へ移行する。ブロック接続情報の更新は、変数配列が更新されることによって実現される。
【００７５】
ステップ１２６で、制御部１４は、現時点で論理メモリブロックＬ０が対応付けられている物理メモリブロックＰと論理メモリブロックＬ０との対応付けを解除する。そして、制御部１４は、予備用メモリブロックＲ０に分類されている物理メモリブロックＰに論理メモリブロックＬ０を対応付けることで、予備用メモリブロックＲ０に分類されている物理メモリブロックＰをデータ用メモリブロックＤ０に分類し直す。なお、図１０に示す例では、論理メモリブロックＬ０が対応付けられている物理メモリブロックＰ３０がデータ用メモリブロックＤ０に分類し直されている。また、図１４に示す例では、論理メモリブロックＬ０が対応付けられている物理メモリブロックＰ２８がデータ用メモリブロックＤ０に分類し直されている。
【００７６】
また、ステップ１２６の処理が実行されることで、予備用メモリブロックＲの書込順位が繰り上がる。ここで、書込順位が繰り上がるとは、予備用メモリブロックＲの添え字の番号が１減算されることを意味する。例えば、図９に示す予備用メモリブロックＲ１に分類されている物理メモリブロックＰ２９は、一例として図１０に示すように、予備用メモリブロックＲ０に分類し直される。また、例えば、図９に示す予備用メモリブロックＲ２に分類されている物理メモリブロックＰ２８は、予備用メモリブロックＲ１に分類し直される。また、図１３に示す予備用メモリブロックＲ１に分類されている物理メモリブロックＰ１は、一例として図１４に示すように、予備用メモリブロックＲ０に分類し直される。更に、図１３に示す予備用メモリブロックＲ２に分類されている物理メモリブロックＰ３０は、一例として図１４に示すように、予備用メモリブロックＲ１に分類し直される。
【００７７】
次のステップ１２８で、制御部１４は、元の物理メモリブロックＰを、記憶内容を保持したまま、予備用メモリブロックＲ２に分類し直す。本ステップ１２８において、元の物理メモリブロックＰとは、ステップ１２６の処理が実行されることで論理メモリブロックＬ０との対応付けが解除された物理メモリブロックＰを指す。なお、図１０及び図１４に示す例では、物理メモリブロックＰ０が予備用メモリブロックＲ２に分類し直されている。このように、元の物理メモリブロックＰが予備用メモリブロックＲ２に分類し直されることで、元の物理メモリブロックＰを次回以降の書き込みで使用される新たな書き込み先として待機させることが可能となる。
【００７８】
次のステップ１３０で、制御部１４は、データ用メモリブロックＤ０の記憶内容を消去する。
【００７９】
次のステップ１３２で、制御部１４は、データ用メモリブロックＤ０に分類された物理メモリブロックＰに対応する消去カウント値に１を加算する。なお、本ステップ１３２の処理が実行されることで、図９及び図１０に示す例では、物理メモリブロックＰ３０に対応する消去カウント値が“１”から“２”に増加している。また、図１３及び図１４に示す例でも、物理メモリブロックＰ２８に対応する消去カウント値が“１００１”から“１００２”に増加している。
【００８０】
次のステップ１３４で、制御部１４は、第１書換後データをデータ用メモリブロックＤ０に書き込む。
【００８１】
次のステップ１３６で、制御部１４は、アドレスポインタ（“LutSaveOffsetAddr”）が“５１２”以上か否かを判定する。ステップ１３６において、アドレスポインタが“５１２”未満の場合は、判定が否定されて、ステップ１５２へ移行する。ステップ１３６において、アドレスポインタが“５１２”以上の場合は、判定が肯定されて、ステップ１３８へ移行する。
【００８２】
ステップ１３８で、制御部１４は、予備用メモリブロックＲ０に分類されている物理メモリブロックＰを、管理用メモリブロックＭに分類し直す。例えば、図１０に示す例では、物理メモリブロックＰ２９が予備用メモリブロックＲ０に分類されているが、本ステップ１３８の処理が実行されることによって、物理メモリブロックＰ２９は、一例として図１１に示すように管理メモリブロックＭに分類し直される。
【００８３】
次のステップ１４０で、制御部１４は、元の物理メモリブロックＰを、記憶内容を保持したまま、予備用メモリブロックＲ２に分類し直す。本ステップ１４０において、元の物理メモリブロックＰとは、ステップ１３８の処理の実行開始の時点で管理用メモリブロックＭに分類されていた物理メモリブロックＰを指す。なお、図１０に示す例では、物理メモリブロックＰ３１が元の物理メモリブロックＰに該当する。また、本ステップ１４０の処理が実行されることによって、物理メモリブロックＰ３１は、一例として図１１に示すように、予備用メモリブロックＲ２に分類し直される。
【００８４】
次のステップ１４２で、制御部１４は、管理用メモリブロックＭの記憶内容を消去する。
【００８５】
次のステップ１４４で、制御部１４は、管理用メモリブロックＭに対応する消去カウント値に１を加算する。
【００８６】
次のステップ１４６で、制御部１４は、管理用メモリブロックＭの先頭に第２書換後データを書き込む。
【００８７】
次のステップ１４８で、制御部１４は、アドレスポインタに“６４”を代入する。これにより、制御部１４は、アドレスポインタを参照することで、管理用メモリブロックＭに管理情報ＭＤ０のみが書き込まれていることを認識することが可能となる。また、次回、管理用メモリブロックＭに対して管理情報ＭＤが書き込まれる場合、６４バイト目から管理情報ＭＤ１が書き込まれることになる（ステップ１５２参照）。
【００８８】
次のステップ１５０で、制御部１４は、元の物理メモリブロックＰに消去シグネチャを書き込む。すなわち、制御部１４は、元の物理メモリブロックＰに保持されている管理情報ＭＤ０に消去シグネチャを付与し、その後、本書換処理を終了する。なお、本ステップ１５０において、元の物理メモリブロックＰとは、ステップ１４０における元の物理メモリブロックＰを指す。
【００８９】
管理情報ＭＤ０に消去シグネチャが付与されるということは、管理情報ＭＤ０が格納されている物理メモリブロックＰの記憶内容の消去が許可されたことを意味する。すなわち、消去シグネチャが管理情報ＭＤ０に付与されることで、これ以降、消去シグネチャが付与された管理情報ＭＤ０が格納されている物理メモリブロックＰの記憶内容は、更新後データの書き込み時に、書き込みに先立って消去される。
【００９０】
ステップ１５２で、制御部１４は、管理用メモリブロックＭの先頭にアドレスポインタの値を加算したアドレスに最新の管理情報ＭＤを書き込む。この場合、例えば、図１３及び図１４に示すように、物理メモリブロックＰ３１が管理用メモリブロックＭに分類されている状態が保持される。これは、物理メモリブロックＰ３１に管理情報ＭＤが格納される余地が残されていることを意味する。
【００９１】
次のステップ１５４で、制御部１４は、アドレスポインタに“６４”を代入し、その後、本書換処理を終了する。
【００９２】
なお、制御部１４は、ステップ１５４の処理が実行した後、アドレスポインタを参照することで、管理用メモリブロックＭに書き込まれている最新の管理情報ＭＤが先頭から何番目の管理情報ＭＤなのかを認識することが可能となる。
【００９３】
ところで、図６に示す書込処理では、管理用メモリブロックＭに最大で８個の管理情報ＭＤが時系列で格納され、ステップ１５０の処理が実行されることで、管理情報ＭＤ０に消去シグネチャが付与される。これにより、新たな書き込み先に対して書き込みが行われている間に電源が遮断された場合であっても、電源の復旧後の最初の書き込み動作は、旧ブロック接続情報に従って行われる。そこで、以下では、第１〜第４電源断パターンについて説明する。ここで、電源断とは、フラッシュメモリ１０に対する電源の供給が遮断されることを意味する。第１電源断パターンとは、データ書き込み中に電源断が発生するパターンを指す。第２電源断パターンとは、管理情報ＭＤの更新中に電源断が発生するパターンを指す。第３電源断パターンとは、管理情報ＭＤの更新後に消去シグネチャが書き込まれる迄の間に電源断が発生するパターンを指す。第４電源断パターンとは、データ用メモリブロックＤと予備用メモリブロックＲとの入れ替え後に電源断が発生するパターンを指す。
【００９４】
一例として図１５に示すように、第１電源断パターンでは、書換前データとしての処理用データである旧データが書き換えられて得られた第１書換後データが新たな書き込み先に書き込まれている途中で電源断が発生している。この場合、管理情報ＭＤが更新されないため、電源の復旧後の最初の書き込みは、電源断の発生前における最新の管理情報ＭＤである旧管理情報ＭＤに従って行われる。また、一例として図１５に示すように、電源の復旧後、電源断の発生前の最新の旧データが有効なデータとして扱われる。なお、旧管理情報ＭＤとは、例えば、電源断が発生する前の最新の管理情報ＭＤが管理情報ＭＤ２の場合、管理情報ＭＤ２を指す。
【００９５】
一例として図１６に示すように、第２電源断パターンでは、第１書換後データの新たな書き込み先への書き込みが完了し、書換前データとしての管理情報ＭＤである旧管理情報ＭＤが新たな書き込み先に書き込まれている途中で電源断が発生している。この場合、管理情報ＭＤが更新されていないため、電源の復旧後の最初の書き込みは、電源断の発生前の最新の管理情報ＭＤである旧管理情報ＭＤに従って行われる。また、一例として図１６に示すように、電源の復旧後、電源断の発生前の最新の旧データが有効なデータとして扱われる。
【００９６】
一例として図１７に示すように、第３電源断パターンでは、第１書換後データ及び第２書換後データの新たな書き込み先への書き込みが完了し、旧管理情報ＭＤに消去シグネチャが付与される前に電源断が発生している。この場合、電源の復旧後、電源断の発生前の最新の第１書換後データ及び第２書換後データが有効なデータとして扱われる。また、電源の復旧に伴って旧管理情報ＭＤに消去シグネチャが付与される。
【００９７】
一例として図１８に示すように、第４電源断パターンでは、データ用メモリブロックＤと予備用メモリブロックＲとの入れ替え後でブロック接続情報の更新前に（図１２及び図１３参照）、電源断が発生している。この場合、電源の復旧後の最初の書き込みは、電源断の発生前における最新の管理情報ＭＤである旧管理情報ＭＤに従って行われる。また、一例として図１８に示すように、電源の復旧後、予備用メモリブロックＲとの入れ替え動作前のデータ用メモリブロックＤの処理用データ、すなわち、予備用メモリブロックＲにコピーされる前の処理用データが有効なデータとして扱われる。なお、電源の復旧後、データ用メモリブロックＤとの入れ替え対象とされた予備用メモリブロックＲでは、入れ替え動作前の記憶内容が有効な記憶内容として扱われる。
【００９８】
以上説明したように、フラッシュメモリ１０では、書換前データが書き込まれていた物理メモリブロックＰと異なる物理メモリブロックＰであって、特定の物理メモリブロックＰに対する書き込み回数の偏りが抑制されるように指定された物理メモリブロックＰに書換後データが書き込まれる。そして、書換前データが書き込まれていた物理メモリブロックＰを次回以降の書き込みで使用する新たな書き込み先として待機させるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、特定の物理メモリブロックＰのみに書換後データとしての管理情報ＭＤが書き込まれる場合に比べ、長寿命化を図ることができる。
【００９９】
なお、特定の物理メモリブロックＰに対する書き込み回数の偏りの抑制は、書換処理に含まれるステップ１２１，１２４，１２６，１２８，１３８，１４０の各処理が実行されることによって実現されるが、これはあくまでも一例である。例えば、ステップ１２１，１２４，１２６，１２８，１３８，１４０のうちのステップ１２１の処理及びステップ１２４の処理の少なくとも一方が実行されてなくも、特定の物理メモリブロックＰに対する書き込み回数の偏りを抑制することは可能である。
【０１００】
また、フラッシュメモリ１０では、複数の物理メモリブロックＰが複数のデータ用メモリブロックＤ、複数の予備用メモリブロックＲ、及び管理用メモリブロックＭの３つの用途ブロックに分類されている。そして、最高順位が付与された予備用メモリブロックＲ０に書換後データが書き込まれる。また、書換後データが書き込まれた予備用メモリブロックＲ０が、書換前データが書き込まれていた用途ブロックに変更され、書換前データが書き込まれていた用途ブロックが、最低順位が付与された予備用メモリブロックＲ２に変更されるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、特定の物理メモリブロックＰのみに書換後データとしての管理情報が書き込まれる場合に比べ、特定の物理メモリブロックＰに対する書き込み回数の偏りを簡易に抑制することができる。
【０１０１】
また、フラッシュメモリ１０では、管理情報ＭＤとして、論理メモリブロックＬと物理メモリブロックＰとの対応関係、書込順位と物理メモリブロックＰとの対応関係を示すブロック接続情報を含む管理情報ＭＤが採用されている。これにより、フラッシュメモリ１０は、ブロック接続情報が更新される場合であっても、特定の物理メモリブロックＰに対する書き込み回数の偏りを簡易に抑制することができる。
【０１０２】
また、フラッシュメモリ１０では、複数の管理情報ＭＤが格納される管理用メモリブロックＭが採用されている。そして、ブロック接続情報が更新される毎に、更新後のブロック接続情報を含む管理情報ＭＤが時系列で管理用メモリブロックＭに格納されるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、１個の管理情報ＭＤのみが格納される管理用メモリブロックＭを採用する場合に比べ、ブロック接続情報の更新に伴う消去回数の増加を抑制することができる。例えば、１個の管理情報ＭＤのみが格納される管理用メモリブロックＭを採用して、処理用データが書き換えられた書換後データの書き込みを８回行う場合、消去回数は１６回になるのに対し、本実施形態によれば、消去回数を９回に抑えることができる。
【０１０３】
また、フラッシュメモリ１０では、管理用メモリブロックＭに格納されている管理情報ＭＤのブロック接続情報の更新回数が所定回数を超えた場合（ステップ１３６：Ｙ）、予備用メモリブロックＲ０が管理用メモリブロックＭに変更される（ステップ１３８）。これにより、フラッシュメモリ１０は、管理用メモリブロックＭに格納されている管理情報ＭＤのブロック接続情報の更新回数が所定回数を超えた場合であっても、最新のブロック接続情報の格納場所を簡易に確保することができる。
【０１０４】
また、フラッシュメモリ１０では、管理用メモリブロックＭが予備用メモリブロックＲ２に変更される場合、管理用メモリブロックＭから変更された予備用メモリブロックＲ２に消去シグネチャが書き込まれる（ステップ１５０）。そして、書込順位が繰り上がった結果、消去シグネチャが書き込まれた予備用メモリブロックＲ０に書換後データが書き込まれる場合、予備用メモリブロックＲ０から旧管理情報ＭＤが消去される（ステップ１３０）。これにより、フラッシュメモリ１０は、管理用メモリブロックＭから変更された予備用メモリブロックＲ２が結果的に予備用メモリブロックＲ０に変更された場合であっても、予備用メモリブロックＲ０を新たな書込み先として使用することができる。
【０１０５】
また、フラッシュメモリ１０では、複数の予備用メモリブロックＲのうちの消去回数が最少の予備用メモリブロックＲが予備用メモリブロックＲ０とされている。これにより、フラッシュメモリ１０は、複数の予備用メモリブロックＲのうちの特定の予備用メモリブロックＲに書き込みが集中することを回避することができる。
【０１０６】
また、フラッシュメモリ１０では、全ての予備用メモリブロックＲの各々の消去カウント値が閾値を超えた場合、予備ブロック交換処理が実行される（ステップ１２１）。これにより、フラッシュメモリ１０は、特定の物理メモリブロックＰに対する書き込み回数の偏りを簡易に抑制することができる。
【０１０７】
また、フラッシュメモリ１０では、全ての予備用メモリブロックＲの各々に対応する各消去カウント値が閾値を超えた場合（ステップ１２０：Ｎ）、閾値を増加させている（ステップ１２１Ｂ）。これにより、フラッシュメモリ１０は、全ての予備用メモリブロックＲの各々に対応する各消去カウント値が閾値を超えた場合であっても、再び予備ブロック交換処理を実行することができる。
【０１０８】
また、フラッシュメモリ１０では、第１電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データが書き換え対象とされるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、第１電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データを書き換えることができる。
【０１０９】
また、フラッシュメモリ１０では、第２電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データが書き換え対象とされるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、第２電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データを書き換えることができる。
【０１１０】
また、フラッシュメモリ１０では、第３電源断パターンの場合、電源の復旧後、電源断の発生前の最新の書換後データが有効となるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、第３電源断パターンの場合、電源の復旧後、電源断の発生前の最新の書換後データを、以降の書換前データとして使用することができる。
【０１１１】
更に、フラッシュメモリ１０では、第４電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データが書き換え対象とされるように物理メモリ１２が制御される。これにより、フラッシュメモリ１０は、第４電源断パターンの場合、電源の復旧後、電源断の発生前の書換前データを書き換えることができる。
【０１１２】
なお、上記実施形態では、管理用メモリブロックＭに複数の管理情報ＭＤが格納される場合を例示したが、管理用メモリブロックＭに１個の管理情報ＭＤのみが格納される場合であっても本発明は成立する。
【０１１３】
ここで、管理用メモリブロックＭに１個の管理情報ＭＤのみが格納される場合について図１９〜図２１を参照しつつ説明する。
【０１１４】
図１９には、論理メモリブロックＬ、物理メモリブロックＰ、及び用途ブロックの対応関係の一例が示されている。図２０には、論理メモリブロックＬ０を介して新たな書き込み先に第１書換後データが書き込まれた場合の論理メモリブロックＬ、物理メモリブロックＰ、及び用途ブロックの対応関係の一例が示されている。図２１には、更新されたブロック接続情報を含む管理情報ＭＤが新たな書き込み先に書き込まれた場合の論理メモリブロックＬ、物理メモリブロックＰ、及び用途ブロックの対応関係の一例が示されている。なお、図１９に示す論理メモリブロックＬ、物理メモリブロックＰ、及び用途ブロックの対応関係は、図８に示す論理メモリブロックＬ、物理メモリブロックＰ、及び用途ブロックの対応関係と同一である。
【０１１５】
一例として図１９に示す物理メモリブロックＰ０の書換前データが書き換えられて、第１書換後データが物理メモリブロックＰ２８に書き込まれると、一例として図２０に示すように、物理メモリブロックＰに対する用途ブロックの割り当てが変更される。すなわち、物理メモリブロックＰ０が予備用メモリブロックＲ２に分類し直され、物理メモリブロックＰ２８がデータ用メモリブロックＤ０に分類し直される。そして、予備用メモリブロックＲ１が予備用メモリブロックＲ０に変更され、予備用メモリブロックＲ２が予備用メモリブロックＲ１に変更されることで、予備用メモリブロックＲの書込順位が繰り上がる。
【０１１６】
この場合、管理用メモリブロックＭの管理情報ＭＤが更新されて、一例として図２１に示すように、書込順位が最高の予備用メモリブロックＲ０に第２書換後データが書き込まれ、物理メモリブロックＰ２９が管理用メモリブロックＭに分類し直される。また、物理メモリブロックＰ３１が。書込順位が最低の予備用メモリブロックＲ２に分類し直される。そして、物理メモリブロックＰ３１に格納されている古い管理情報ＭＤに消去シグネチャが付与されると共に、予備用メモリブロックＲ１が予備用メモリブロックＲ０に変更され、予備用メモリブロックＲ２が予備用メモリブロックＲ１に変更される。
【０１１７】
従って、管理用メモリブロックＭに１個の管理情報ＭＤのみが格納される場合、第１書換後データが新たな書き込み先に書き込まれる毎に、異なる物理メモリブロックＰに管理用メモリブロックＭが分類し直される。そのため、特定の物理メモリブロックＰで集中的に消去動作が行われることが回避される。この結果、特定の物理メモリブロックＰのみに管理情報ＭＤが書き込まれる場合に比べ、フラッシュメモリ１０の長寿命化を図ることが可能となる。
【０１１８】
また、上記実施形態では、全ての予備用メモリブロックＲの各々に対応する各消去カウント値が閾値を超えた場合に閾値を増加させる場合を例示したが、本発明はこれに限定されるものではない。例えば、書換前データが書き換えられる場合、特定のデータ用メモリブロックＤを除くデータ用メモリブロックＤの各々に対応する各消去カウント値、及び全予備用メモリブロックＲの各消去カウント値が閾値を超えたことを条件に閾値を増加させるようにしてもよい。なお、ここで、特定のデータ用メモリブロックＤとは、全てのデータ用メモリブロックＤのうちの現時点で書き換え対象とされている処理用データが書き込まれていたデータ用メモリブロックＤを指す。
【０１１９】
また、上記実施形態では、図７に示す予備ブロック交換処理に含まれるステップ１２１Ａで、データ用メモリブロックＤ１と予備用メモリブロックＲ１とが入れ替えられる場合を例示したが、本発明はこれに限定されるものではない。例えば、データ用メモリブロックＤ１と予備用メモリブロックＲ２とが入れ替えられてもよい。このように、データ用メモリブロックＤ１と入れ替えられる予備用メモリブロックＲは、予備用メモリブロックＲ０以外の予備用メモリブロックＲであればよい。また、予備用メモリブロックＲのうちの消去回数が最多の予備用メモリブロックＲ（本実施形態では、予備用メモリブロックＲ２）が入れ替え対象とされることが好ましい。
【０１２０】
また、上記実施形態では、用途ブロックの変更後に書き換えが行われる場合を例示したが、本発明はこれに限定されるものではなく、書き換えが行われてから用途ブロックが変更されるようにしてもよい。
【０１２１】
また、上記実施形態では、ブロックに対して書き込む直前に消去動作が行われる場合を例示したが、本発明はこれに限定されるものではなく、書き込む前の予備用メモリブロックＲの割り当ての際に消去動作が行われるようにしてもよい。
【０１２２】
また、上記実施形態では、プログラムをＲＯＭ２４から読み出す場合を例示したが、最初からＲＯＭ２４に記憶させておく必要はない。例えば、ホストコンピュータ３６の記憶装置に先ずはプログラムを記憶させておいてもよい。そして、ＣＰＵ２０がホストコンピュータ３６の記憶装置からプログラムを取得して実行するようにしてもよい。また、ホストコンピュータ３６の記憶装置に記憶されているプログラムは、外部装置から通信網を介して提供されたプログラムであってもよい。
【０１２３】
また、上記実施形態で説明した起動処理（図４参照）及び書換処理（図５〜図７参照）は、あくまでも一例である。従って、主旨を逸脱しない範囲内において不要なステップを削除したり、新たなステップを追加したり、処理順序を入れ替えたりしてもよいことは言うまでもない。
【０１２４】
以上の実施形態に関し、更に以下の付記を開示する。
【０１２５】
（付記１）
コンピュータに、処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックにおける書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御することを含む処理を実行させるためのプログラム。
【０１２６】
（付記２）
コンピュータに、処理用データが書き込まれた物理メモリブロックと、前記処理用データの所在を管理する管理情報が書き込まれた物理メモリブロックとを一部に含み、新たな書き込み先への書き込み動作が行われる前に消去動作が行われる複数の物理メモリブロックにおける書き換え前の前記処理用データ及び前記管理情報のうちの１つである書換前データが書き換えられる場合、前記複数の物理メモリブロックのうちの、前記書換前データが書き込まれていた物理メモリブロックと異なる物理メモリブロックであって、前記書き込み先として指定された物理メモリブロックに、前記書換前データが書き換えられた書換後データが書き込まれ、前記書換前データが書き込まれていた物理メモリブロックを次回以降の書き込みで使用する前記書き込み先として待機させるように前記複数の物理メモリブロックを制御することを含む処理を実行させるためのプログラムを格納したコンピュータ可読記憶媒体。
【符号の説明】
【０１２７】
１０  フラッシュメモリ
１４  制御部
Ｄ  データ用メモリブロック
Ｌ  論理メモリブロック
Ｍ  管理用メモリブロック
Ｐ  物理メモリブロック
Ｒ  予備用メモリブロック
【図１】
2016071447.tif 000005
【図２】
2016071447.tif 000006
【図３】
2016071447.tif 000007
【図４】
2016071447.tif 000008
【図５】
2016071447.tif 000009
【図６】
2016071447.tif 000010
【図７】
2016071447.tif 000011
【図８】
2016071447.tif 000012
【図９】
2016071447.tif 000013
【図１０】
2016071447.tif 000014
【図１１】
2016071447.tif 000015
【図１２】
2016071447.tif 000016
【図１３】
2016071447.tif 000017
【図１４】
2016071447.tif 000018
【図１５】
2016071447.tif 000019
【図１６】
2016071447.tif 000020
【図１７】
2016071447.tif 000021
【図１８】
2016071447.tif 000022
【図１９】
2016071447.tif 000023
【図２０】
2016071447.tif 000024
【図２１】
2016071447.tif 000025