(57)【特許請求の範囲】
【請求項１】
ページ単位でデータの書き込みを行い、複数のページで構成されるブロック単位でデータの消去を行う複数のブロックを有するフラッシュメモリの管理を行うフラッシュメモリ管理装置であって、
ブロックごとに、当該ブロックにおけるデータ消去回数を管理するデータ消去回数管理部と、
ページごとに、当該ページに書き込まれているデータの書込み時刻からの経過時間を管理するページ経過時間管理部と、
各ブロックにおけるデータ消去回数と、各ページのデータの書込み時刻からの経過時間とに基づき、前記複数のブロックの中から一つ以上のブロックを、書込み対象データの書き込み先の候補である書込み対象候補ブロックとして選択するブロック選択部と、
前記ブロック選択部により選択された書込み対象候補ブロックのいずれかに書込み対象データを書き込むデータ書込み部とを有することを特徴とするフラッシュメモリ管理装置。
【請求項２】
前記ページ経過時間管理部は、
データが書き込まれている書込み済みページを、当該書込み済みページに書き込まれているデータの書込み時刻からの経過時間に応じて複数のグループのいずれかに分類し、
前記ブロック選択部は、
各ブロックにおけるデータ消去回数と、前記ページ経過時間管理部による書込み済みページごとのグループ分類結果とに基づき、前記複数のブロックの中から一つ以上のブロックを書込み対象候補ブロックとして選択することを特徴とする請求項１に記載のフラッシュメモリ管理装置。
【請求項３】
前記ブロック選択部は、
前記複数のブロックのうちデータ消去回数が小さいブロックから順に抽出し、
抽出したブロックに含まれる書込み済みページが経過時間の短いグループに分類されている場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択することを特徴とする請求項２に記載のフラッシュメモリ管理装置。
【請求項４】
前記ブロック選択部は、
前記複数のブロックのうちデータ消去回数が小さいブロックから順に抽出し、
抽出したブロックにデータが書き込まれていない場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択し、
抽出したブロックに既にデータが書き込まれている場合に、抽出したブロックにデータが書き込まれていない空きページが存在するか否かを判断し、
空きページが存在しない場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択し、
空きページが存在する場合に、抽出した当該ブロックに含まれる書込み済みページがいずれのグループに分類されているかを判断し、
書込み済みページが経過時間の短いグループに分類されている場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択することを特徴とする請求項３に記載のフラッシュメモリ管理装置。
【請求項５】
前記ブロック選択部は、
抽出したブロックに空きページが存在する場合に、抽出した当該ブロックに含まれる書込み済みページがいずれのグループに分類されているかを判断し、
抽出した当該ブロックに含まれる全ての書込み済みページが経過時間の短いグループに分類されている場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択することを特徴とする請求項４に記載のフラッシュメモリ管理装置。
【請求項６】
前記フラッシュメモリ管理装置は、
前記フラッシュメモリ以外の他のメモリを管理し、
前記データ書込み部は、
前記ブロック選択部により選択された書込み対象候補ブロックのうちデータ消去回数が小さいブロックから順に抽出し、
抽出した書込み対象候補ブロックにデータが書き込まれていない場合に、抽出した当該書込み対象候補ブロックに書込み対象データを書き込み、
抽出した当該書込み対象候補ブロックに既にデータが書き込まれている場合に、抽出した当該書込み対象候補ブロックにデータが書き込まれていない空きページが存在するか否かを判断し、
空きページが存在する場合に、抽出した当該書込み対象候補ブロックの空きページに書込み対象データを書き込み、
空きページが存在しない場合に、抽出した当該書込み対象候補ブロックに書き込まれているデータを前記他のメモリに退避し、
前記他のメモリに退避させたデータを当該書込み対象候補ブロックから消去して書込み対象データを書き込むことを特徴とする請求項１〜５のいずれかに記載のフラッシュメモリ管理装置。
【請求項７】
前記データ書込み部は、
前記他のメモリに退避したデータを、書込み対象データとし、
前記他のメモリに退避したデータを、データ消去回数が特定数以上のブロックに書き込むことを特徴とする請求項６に記載のフラッシュメモリ管理装置。
【請求項８】
前記データ書込み部は、
前記他のメモリに退避したデータを、他の書込み対象データに優先して、データ消去回数が特定数以上のブロックに書き込むことを特徴とする請求項７に記載のフラッシュメモリ管理装置。
【請求項９】
前記ページ経過時間管理部は、
データが書き込まれている書込み済みページを、当該書込み済みページに書き込まれているデータの書込み時刻からの経過時間に応じて複数のグループのいずれかに分類し、
前記ブロック選択部は、
データ消去回数が特定数未満のブロックを一つ以上抽出するとともに、抽出したブロックに含まれる書込み済みページが経過時間の短いグループに分類されていない場合に、抽出した当該ブロックをデータ移管対象ブロックとして選択し、
前記データ書込み部は、
前記ブロック選択部により選択された前記データ移管対象ブロックに書き込まれている移管対象データを、前記データ消去回数が前記特定数以上のいずれかのブロックに書き込むとともに、前記移管対象データを前記データ移管対象ブロックから消去することを特徴とする請求項１〜８のいずれかに記載のフラッシュメモリ管理装置。
【請求項１０】
前記ブロック選択部は、
データ消去回数が前記特定数以上のブロックを移管先候補ブロックとして一つ以上選択し、
前記データ書込み部は、
前記ブロック選択部により選択された移管先候補ブロックを所定の順序で抽出し、
抽出した移管先候補ブロックにデータが書き込まれていない場合に、抽出した当該移管先候補ブロックに前記移管対象データを書き込み、
抽出した当該移管先候補ブロックに既にデータが書き込まれている場合に、抽出した当該移管先候補ブロックにデータが書き込まれていない空きページが存在するか否かを判断し、
空きページが存在する場合に、抽出した当該移管先候補ブロックの空きページに前記移管対象データを書き込み、
空きページが存在しない場合に、次の移管先候補ブロックを抽出することを特徴とする請求項９に記載のフラッシュメモリ管理装置。
【請求項１１】
前記ページ経過時間管理部は、
データが書き込まれている書込み済みページを、当該書込み済みページに書き込まれているデータの書込み時刻からの経過時間に応じて複数のグループのいずれかに分類し、
前記ブロック選択部は、
各ブロックに対して、書込み済みページごとに、当該書込み済みページが前記ページ経過時間管理部によりいずれのグループに分類されているかを判断し、同じブロックに異なるグループに分類される二以上のページが存在する場合に、当該ブロックをデータ移管対象ブロックとして選択するとともに、データ移管対象ブロックに書き込まれている移管対象データの移管先となるブロックを移管先候補ブロックとして一つ以上選択し、
前記データ書込み部は、
前記移管対象データをいずれかの移管先候補ブロックに書き込むとともに、前記移管対象データを移管元であるデータ移管対象ブロックから消去することを特徴とする請求項１〜８のいずれかに記載のフラッシュメモリ管理装置。
【請求項１２】
前記ブロック選択部は、
経過時間の短いグループに分類されているページに書き込まれている移管対象ページに対して、データ消去回数が少ないブロックを優先して前記移管先候補ブロックとして選択し、
経過時間の長いグループに分類されているページに書き込まれている移管対象ページに対して、データ消去回数が多いブロックを優先して前記移管先候補ブロックとして選択することを特徴とする請求項１１に記載のフラッシュメモリ管理装置。
【請求項１３】
前記ブロック選択部は、
共通するグループに属する二以上のページに書き込まれているデータが同じブロックに格納されるように、移管先候補ブロックを選択することを特徴とする請求項１１又は１２に記載のフラッシュメモリ管理装置。
【請求項１４】
前記データ消去回数管理部は、
いずれかのブロックおいてデータが消去される度に、データが消去されたブロックにデータ消去回数を書き込み、前記フラッシュメモリにブロックごとにデータ消去回数を記憶させて、ブロックごとのデータ消去回数を管理することを特徴とする請求項１〜１３のいずれかに記載のフラッシュメモリ管理装置。
【請求項１５】
前記フラッシュメモリ管理装置は、
前記フラッシュメモリ以外の他のメモリを管理し、
前記データ消去回数管理部は、
ブロックごとのデータ消去回数を示すデータ消去回数管理テーブルを前記他のメモリに記憶させ、いずれかのブロックおいてデータが消去される度に、データが消去されたブロックのデータ消去回数を前記データ消去回数管理テーブルに書き込んで、ブロックごとのデータ消去回数を管理することを特徴とする請求項１〜１４のいずれかに記載のフラッシュメモリ管理装置。
【請求項１６】
前記ページ経過時間管理部は、
前記書込み済みページに書き込まれているデータが用いられるアプリケーションプログラムごとに異なる経過時間の基準を用いて、前記書込み済みページを複数のグループのいずれかに分類することを特徴とする請求項２に記載のフラッシュメモリ管理装置。
【請求項１７】
前記データ書込み部は、
書込み対象データを書き込む際に、併せて、書込み先のページに書込み対象データの書込み時刻を書き込み、
前記ページ経過時間管理部は、
書込み済みページを、当該書込み済みページに書き込まれている書込み時刻からの経過時間に応じて複数のグループのいずれかに分類することを特徴とする請求項２に記載のフラッシュメモリ管理装置。
【請求項１８】
ページ単位でデータの書き込みを行い、複数のページで構成されるブロック単位でデータの消去を行う複数のブロックを有するフラッシュメモリの管理を行うフラッシュメモリ管理方法であって、
ブロックごとに、当該ブロックにおけるデータ消去回数を管理するデータ消去回数管理ステップと、
ページごとに、当該ページに書き込まれているデータの書込み時刻からの経過時間を管理するページ経過時間管理ステップと、
各ブロックにおけるデータ消去回数と、各ページのデータの書込み時刻からの経過時間とに基づき、前記複数のブロックの中から一つ以上のブロックを、書込み対象データの書き込み先の候補である書込み対象候補ブロックとして選択するブロック選択ステップと、
前記ブロック選択ステップにより選択された書込み対象候補ブロックのいずれかに書込み対象データを書き込むデータ書込みステップとを有することを特徴とするフラッシュメモリ管理方法。
【請求項１９】
ページ単位でデータの書き込みを行い、複数のページで構成されるブロック単位でデータの消去を行う複数のブロックを有するフラッシュメモリの管理を行うフラッシュメモリ管理装置に、
ブロックごとに、当該ブロックにおけるデータ消去回数を管理するデータ消去回数管理処理と、
ページごとに、当該ページに書き込まれているデータの書込み時刻からの経過時間を管理するページ経過時間管理処理と、
各ブロックにおけるデータ消去回数と、各ページのデータの書込み時刻からの経過時間とに基づき、前記複数のブロックの中から一つ以上のブロックを、書込み対象データの書き込み先の候補である書込み対象候補ブロックとして選択するブロック選択処理と、
前記ブロック選択処理により選択された書込み対象候補ブロックのいずれかに書込み対象データを書き込むデータ書込み処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯電話などの組み込み型の小型情報処理機器の補助記憶装置にかかり、とくにフラッシュメモリ装置（以下、単にフラッシュメモリともいう）の書込み消去などの管理装置および管理方法に関する。
【背景技術】
【０００２】
情報処理の記憶装置の一つとしてフラッシュメモリ装置があり、携帯電話などの組み込み型の装置に使われている。
このフラッシュメモリは例えば文献「メモリＩＣの実践活用法」（▲くわ▼野雅彦：ＣＱ出版株式会社）に開示されているように、ブロックという単位で消去し、ページという単位で書込みを行うことを特徴としている。
ブロックはページが複数集まった単位であり、消去の回数に保証できる限界があることが特徴である。
【０００３】
この消去の回数の限界を気にせずにメモリを利用し、メモリの消去回数に偏りがあると、利用できなくなる領域が出てくるという問題がある。
これらの問題を解決するために例えば特開平６−１２４５９６号公報や特開平８−２７３３９０号公報ではブロックごとの消去回数管理テーブルを設け、一定の回数を超えたブロックへの書込み時には、別の最小の消去回数のブロックへの書込みに変えるという手法をとり、各ブロックの消去回数の均質化を図るという解決策をとっている。
しかしながら、ブロック内のページのデータの特徴に触れていず、ブロックの一部でも書き換えが必要なら全部書き換えるということになりかねないという課題がある。
【０００４】
また、特開平１０−０９１５３５号公報では、消去最大回数のブロックを一定のタイミングで最小消去回数のブロックと入れ替える方法が開示されている。
しかし、これも前記と同様にページ内のデータの特徴に触れていず、ブロックの一部でも書き換えが必要なら全部書き換えるということになりかねないという課題がある。
【０００５】
また、特開２００２−８３７９号公報では書き換え時の書き換えデータの量によって実際に書き換えるのか修正領域に書き込むのかを分けており、ページ内のデータの特性を考慮したまとめ処理の概念が開示されているが、処理をまとめて行うというだけであり、本質的な解決にはなっていない。
【０００６】
特開２００１−３１８８２９号公報は、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のアクセス速度を高速にするためのキャッシュ方式に関するものである。
キャッシュしたときにはフラッシュＲＯＭから削除しておくことにより、書き換え発生時の時間を短縮することができる技術に関して開示している。
しかし、本方式では給電状態ではなくなった場合のことが考慮されておらず現実に利用することが困難である。
時間管理は行っているが、一定時間内でのアクセスの回数でキャッシュを消すかどうかという判定に利用しているに過ぎない。
【０００７】
特開２０００−２０２５２号公報では、書き換え頻度の高い部分を移動することによりアクセスの均等化を図ろうという技術が開示されている。
【０００８】
特開２００２−３１８７２９号公報では、消去ブロックをより小さな単位で管理し、一部の劣化部分を避けて使うような方式において、このような状態になってから一定時間たったものは優先的に再構成するという技術が開示されている。
【特許文献１】特開平６−１２４５９６号公報
【特許文献２】特開平８−２７３３９０号公報
【特許文献３】特開平１０−０９１５３５号公報
【特許文献４】特開２００２−８３７９号公報
【特許文献５】特開２００１−３１８８２９号公報
【特許文献６】特開２０００−２０２５２号公報
【特許文献７】特開２００２−３１８７２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のような従来における消去ブロックの管理方法ではブロック単位のデータの書き換えそのものの回数を減らすにはいたらない、または不十分であるし、まだ不必要な書き換えの発生頻度が高いという課題がある。
【００１０】
この発明は、上記のような課題を解決することを主な目的の一つとしており、データごとの書換えの可能性とブロックごとのデータ消去回数とに基づいてデータの書き込み先のブロックを決定することで、ブロックごとのデータ消去回数の均質化を図るとともに、フラッシュメモリ全体としてブロックの書換え回数を減少させ、また無駄な書換えの発生を抑制することを主な目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るフラッシュメモリ管理装置は、
ページ単位でデータの書き込みを行い、複数のページで構成されるブロック単位でデータの消去を行う複数のブロックを有するフラッシュメモリの管理を行うフラッシュメモリ管理装置であって、
ブロックごとに、当該ブロックにおけるデータ消去回数を管理するデータ消去回数管理部と、
ページごとに、当該ページに書き込まれているデータの書込み時刻からの経過時間を管理するページ経過時間管理部と、
各ブロックにおけるデータ消去回数と、各ページのデータの書込み時刻からの経過時間とに基づき、前記複数のブロックの中から一つ以上のブロックを書込み対象候補ブロックとして選択するブロック選択部と、
前記ブロック選択部により選択された書込み対象候補ブロックのいずれかに書込み対象データを書き込むデータ書込み部とを有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ブロックごとのデータ消去回数と、ページごとのデータ書込み時刻からの経過時間との関係で、書込み対象データの書込みに適した書込み対象候補ブロックを選択し、書込み対象候補ブロックに書込みを行うため、データ消去の可能性が高いデータをデータ消去回数の上限まで余裕があるデータ消去回数の少ないブロックに振り分けることができ、データ消去の可能性の高いデータがデータ消去回数の多いブロックに配置される危険性を回避することができ、この結果、ブロック間のデータ消去回数の均質化が図れ、フラッシュメモリの寿命を長くすることができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１．
本実施の形態では、データが将来書き換えられる可能性に着目した世代という考え方を導入し、世代の古いデータほどより長く生きる可能性が高いという性質を利用してブロック単位でのデータの消去の可能性を低くし、消去回数も均質化し、処理そのものも実行を分散することによりユーザの感じる処理時間をも短くする。
【００１４】
図１は、本実施の形態に係るフラッシュメモリ管理装置１００のハードウェア構成例を示す。フラッシュメモリ管理装置１００は、例えば、携帯電話機、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ−ｐｈｏｎｅ  Ｓｙｓｔｅｍ）（登録商標）端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）（登録商標）端末等の情報処理機器に搭載される。
【００１５】
図１において、１１は、様々な命令を実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
１２は、ＣＰＵが何をするべきかを指定するプログラムを格納するメモリ領域であり電源が切れてもデータを消失しない。
１３は、様々なデータを保存するためのフラッシュメモリ装置であり、電源が切れてもデータを消失しないという特徴がある。
１４は、様々なデータを保存するための不揮発性メモリ領域であり、電源が切れてもデータを消失しないが、バッテリーが放電してしまうとデータが消失してしまうという特徴がある。
１５は、実行にテンポラリに利用するデータ領域で、電源が切れるとデータも消えるという特徴がある。
１６は、１１〜１５の各要素を接続し、各要素間でデータを流通させるためのバスである。
【００１６】
また、フラッシュメモリ管理装置１００が携帯電話機、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ−ｐｈｏｎｅ  Ｓｙｓｔｅｍ）（登録商標）端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）（登録商標）端末等に搭載される場合は、ＣＰＵ１１は、バス１６を介して、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等の表示装置、通信ボード、テンキー、マイク、スピーカー、キーボード、非接触ＩＣカード、カメラ、バイブレータ、加速度センサ等に接続され、これらのハードウェアデバイスを制御するようにしてもよい。
通信ボード９１５は、公衆無線網通信の他、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、赤外線通信、ブルートゥース（登録商標）通信等に対応するインタフェースを有していてもよい。
【００１７】
プログラム格納用メモリ１２には、図３に示す各種プログラムが格納されている。図３のプログラムの詳細は後述する。
【００１８】
また、フラッシュメモリ１３、不揮発性メモリ１４、実行用ＲＡＭ１５には、以下の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の抽出」、「〜の選択」、「〜の指定」、「〜の設定」、「〜の登録」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶される。
フラッシュメモリ１３、不揮発性メモリ１４、実行用ＲＡＭ１５に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ１１により読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、例えばＣＰＵ１１内のレジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶されてもよい。
また、以下にて説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、例えばＣＰＵ１１内のレジスタ、キャッシュメモリ、バッファメモリ等又はフラッシュメモリ１３、不揮発性メモリ１４、実行用ＲＡＭ１５に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される場合がある。
【００１９】
本実施の形態及び以降の実施の形態に示すフラッシュメモリ管理装置１００は、処理装置たるＣＰＵ、記憶装置たるプログラム格納用メモリ、フラッシュメモリ、不揮発性メモリ、実行用ＲＡＭ等、入力装置たるテンキー、キーボード、通信ボード等、出力装置たる表示装置、通信ボード、非接触ＩＣカード等を備え、図３の「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【００２０】
図２は、図１におけるフラッシュメモリ１３を詳細に説明したもので、２１はデータを消去する単位であるブロックを示す。２２は、データを書き込む単位であるページを示している。
ブロック２１は、複数のページ２２からなる。
ここで、フラッシュメモリ１３では、データの消去回数が一定の回数までしか保障されないという特徴がある。
【００２１】
また、フラッシュメモリには、ＮＡＮＤ型フラッシュメモリとＮＯＲ型フラッシュメモリとがあるが、本実施の形態に係るフラッシュメモリ管理装置１００は、いずれのフラッシュメモリにも適用可能である。
【００２２】
図３に図１、図２に説明したハードウェア構成上に実装するソフトウェア構成を示す。
具体的には、図３に示す各要素は、起動前は図１のプログラム格納用メモリ１２に格納されており、起動の際に、実行用ＲＡＭ１５にロードされ、ＣＰＵ１１により読み出されて実行される。
【００２３】
３１はフラッシュメモリ書込み消去管理部であり、データを書き込みや消去するブロックを管理し最適配置を行う。
フラッシュメモリ書込み消去管理部３１は、後述する全ブロックデータ余命管理部３４により選択された書込み対象候補ブロックのいずれかに書込み対象データを書き込む。
フラッシュメモリ書込み消去管理部３１は、データ書込み部の例である。
【００２４】
３２は全データ世代管理部であり、どのデータがどの世代に属しているのかを全体として管理する。
【００２５】
３３は個々のブロックの余命管理部であり、そのブロックの余命がどの程度かを管理しており、全ブロックに対応して存在する。
つまり、ブロック余命管理部３３は、ブロックごとに、当該ブロックにおけるデータ消去回数（以下、単に消去回数ともいう）を管理し、データ消去回数に応じてブロックの余命を掌握する。
ブロック余命管理部３３は、本実施の形態では、フラッシュメモリに含まれるブロックの数と同数存在する。
ブロック余命管理部３３は、データ消去回数管理部の例である。
【００２６】
３４は全ブロックデータ余命管理部であり、全体として余命の長いものはどこで、短いものはどこでといった全体の状況を管理している。
また、全ブロックデータ余命管理部３４は、各ブロックにおけるデータ消去回数と、各ページのデータの書込み時刻からの経過時間とに基づき、複数のブロックの中から一つ以上のブロックを書込み対象候補ブロックとして選択する。
より具体的には、全ブロックデータ余命管理部３４は、各ブロックにおけるデータ消去回数と、後述するページデータ世代管理部３５による書込み済みページ（データが既に書き込まれているページ）ごとのグループ分類結果（世代の分類結果）とに基づき、複数のブロックの中から一つ以上のブロックを書込み対象候補ブロックとして選択する。選択にあたっては、全ブロックデータ余命管理部３４は、複数のブロックのうちデータ消去回数が小さいブロックから順に抽出し、抽出したブロックにデータが書き込まれていない場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択する。また、抽出したブロックに既にデータが書き込まれている場合に、抽出したブロックにデータが書き込まれていない空きページが存在するか否かを判断し、空きページが存在しない場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択し、空きページが存在する場合に、抽出した当該ブロックに含まれる書込み済みページがいずれのグループ（世代）に分類されているかを判断し、書込み済みページが経過時間の短いグループ（新世代）に分類されている場合に、抽出した当該ブロックを書込み対象候補ブロックとして選択する。
全ブロックデータ余命管理部３４は、ブロック選択部の例である。
【００２７】
３５は各ページに対応して存在するページデータ世代管理部３５であり、そのページのデータがどの世代に属しているかを管理している。
つまり、ページデータ世代管理部３５は、ページごとに、当該ページに書き込まれているデータの書込み時刻からの経過時間を管理し、データが書込み済みのページをデータの書込み時刻からの経過時間に応じて複数のグループ（複数の世代）のいずれかに分類して、書込み済みページごとにデータの世代を管理する。
ページデータ世代管理部３５は、、フラッシュメモリに含まれるブロックの数又はページ数と同数存在する。
ページデータ世代管理部３５は、ページ経過時間管理部の例である。
【００２８】
次に、本実施の形態に係るフラッシュメモリ管理装置１００のフラッシュメモリ管理の原理を説明する。
図１５は、フラッシュメモリ管理装置１００のフラッシュメモリ管理の原理を概念的に示す図である。
フラッシュメモリのブロック群において、消去回数が少ないブロックほど更新頻度が高くなり、また、各ページの世代が新しくなるように、データの書込み先の制御及びデータのブロック間の移管を行う。
つまり、データの更新を消去回数の少ないブロックから優先して行うことで、データ消去の機会を消去回数が少ないブロックに集中させ、これにより消去回数の多いブロックの消去回数の増加を抑えることができる。この結果、ブロック間の消去回数が均質化されることになる。
また、世代が古い（書込みからの経過時間が長い）データ（プリセットファイル等）は、消去、更新等がなく長時間保存されてきたため、今後も消去、更新の可能性が低いと考えられ、世代が新しい（書込みからの経過時間が短い）データ（新着メール等、ファイル管理のためのディレクトリ等）は、頻繁に消去、更新される傾向があると考えられる。
このため、消去、更新の可能性が高いと考えられる新しい世代のデータは、消去回数の少ないブロックに格納し、消去、更新が可能性の低いと考えられる世代の古いデータは、消去回数の多いブロックに格納して、データ消去の機会を消去回数が少ないブロックに集中させ、これにより消去回数の多いブロックの消去回数の増加を抑えることができる。この結果、ブロック間の消去回数が均質化されることになる。
【００２９】
次に、本実施の形態に係るフラッシュメモリ管理装置１００の全体としての動作の概要を図４のフローチャートに沿って説明する。
【００３０】
先ず、フラッシュメモリ書込み消去管理部３１により、フラッシュメモリ１３に書き込むべき書込み対象データが発生したか否かが判断される（Ｓ１０１）。
書込み対象データが発生している場合（Ｓ１０１でＹＥＳ）は、全ブロックデータ余命管理部３４が、書込み対象データの書込み先のブロックを決定するための準備段階として、データ消去回数の少ない順にブロックを並べ、複数のブロックをデータ消去回数の少ない順に示す１次書込み候補リストを作成する（Ｓ１０２）。１次書込み候補リストでは、全ブロックのブロック番号がデータ消去回数の少ない順に並べられている。なお、１次書込み候補リストは、レジスタやバッファメモリ等に格納されて、以降の処理に用いられる。
【００３１】
各ブロックのデータ消去回数は、データの消去がある度にブロック余命管理部３３により計数され、後述するように、ブロック内の特定領域にデータ消去回数が記録される。また、ブロック内での記録とともに、データ消去回数の管理ためのデータ消去回数管理テーブルに消去回数を記録してもよい。
全ブロックデータ余命管理部３４は、このようにして計数されている消去回数の小さい順に、複数のブロックを並べて、１次書込み候補リストを生成する。
【００３２】
次に、全ブロックデータ余命管理部３４は、１次書込み候補リストの順に、各ブロックに含まれる各ページの世代の算出を対応するページデータ世代管理部３５に依頼し、ページデータ世代管理部３５が、対応するブロックに含まれる各ページの世代の算出を行う（Ｓ１０３）（ページ経過時間管理ステップ）。
世代の算出手順は、後ほど詳述するが、ページデータ世代管理部３５は、該当するブロックのページごとに、当該ページに書き込まれているデータの書込み時刻から現在時刻までの経過時間を管理し、経過時間が一定時間以上のページを例えば旧世代に分類し、経過時間が一定時間未満のページを例えば新世代に分類する。世代の分類数は２つ（旧世代、新世代）に限らず、３つ以上でもよい。
なお、本実施の形態及び以降の実施の形態において、データの書込み時刻から一定時間が経過していないデータ、つまり相対的に新しいデータを新世代と呼び、データの書込み時刻から一定時間が経過しているデータ、つまり相対的に古いデータを旧世代と呼ぶ。このため、以降において、新世代、旧世代の語は、２つの世代に分類するケースに限定する趣旨ではなく、フラッシュメモリに格納されているデータのうち相対的に新しいデータ、相対的に古いデータという意味で用いる。
【００３３】
次に、全ブロックデータ余命管理部３４は、データ消去回数の少ない順に、各ブロックの使用有無（データが書き込まれているか否か）、各ブロックのページの世代に基づき、１次書込み候補リストの中から更に選択して２次書込み候補リストを作成する（Ｓ１０４）（ブロック選択ステップ）。
【００３４】
１次書込み候補リストの作成では、各ブロックにデータが既に書き込まれているか、各ブロックに空きページが存在するか否か、各ブロックに含まれるページの世代は考慮されていなかったので、これらを考慮してより適切な書込み候補ブロックを選択する。
処理の詳細は後述するが、全ブロックデータ余命管理部３４は、１次書込み候補リストの順、すなわちデータ消去回数の少ない順にブロックを抽出し、抽出したブロックが未使用（データが書き込まれていない）であるか、使用済みのであった場合に空きページが存在しないか、空きページが存在する場合には書込み済みページの世代が全て新世代であるかを判断する。そして、未使用のブロック、使用済みであって空きページが存在しないブロック、空きページが存在し書込み済みページが全て新世代であるブロックが書込み対象候補ブロックとして選択され、これら選択された書込み対象候補ブロックがデータ消去回数の少ない順に示される２次書込み候補リストが生成される。
２次書込み候補リストでは、上記の選択条件に合致した書込み対象候補ブロックのブロック番号がデータ消去回数の少ない順に並べられている。なお、２次書込み候補リストは、レジスタやバッファメモリ等に格納されて、以降の処理に用いられる。
【００３５】
次に、フラッシュメモリ書込み消去管理部３１が、２次書込み候補リストに従って、書込み対象データを書込み対象候補ブロックに書き込む（Ｓ１０５）（データ書込みステップ）。
【００３６】
詳細は後述するが、フラッシュメモリ書込み消去管理部３１は、２次書込み候補リストに示されている順、すなわち、データ消去回数が小さい書込み対象候補ブロックから順に抽出し、抽出した書込み対象候補ブロックにデータが書き込まれていない場合は、抽出した当該書込み対象候補ブロックに書込み対象データを書き込み、抽出した当該書込み対象候補ブロックに既にデータが書き込まれている場合は、抽出した当該書込み対象候補ブロックにデータが書き込まれていない空きページが存在するか否かを判断する。空きページが存在する場合は、抽出した当該書込み対象候補ブロックの空きページに書込み対象データを書き込み、空きページが存在しない場合は、抽出した当該書込み対象候補ブロックに書き込まれているデータを他のメモリ（例えば、不揮発性メモリ１４）に退避し、他のメモリに退避させたデータを当該書込み対象候補ブロックから消去して書込み対象データを書き込む。
また、フラッシュメモリ書込み消去管理部３１は、他のメモリに退避したデータを、書込み対象データとし、他の書込み対象データに優先して、データ消去回数が特定数以上のブロックに書き込む。
【００３７】
データ消去回数が多いブロックは、１次書込み候補リスト及び２次書込み候補リストにおいて後方に位置づけられるため、書込み対象データの書込み先になる可能性が少ない。他のメモリにデータを退避した場合、すなわち、ブロック内に空きページがない場合は、そのブロックに格納されているデータは変動（更新）の可能性が少ないデータと考えられるので、書込み対象データの書込み先になる可能性が少ないデータ消去回数の多いブロックに移管して、当該移管先のブロックでのデータの変動（データ消去）を抑える。このようにデータ変動（更新）の可能性の少ないデータをデータ消去回数の多いブロックに移管することで、データ消去回数の少ない移管元のブロックを新たな書込み対象データの書込み先として確保し、ブロック間のデータ消去回数の均等化を図ることができる。
【００３８】
次に、いずれかのブロックでデータの消去があった場合は、ブロック余命管理部３３が消去回数を計数し、該当するブロック内の特定領域にデータ消去回数を書き込み（Ｓ１０６）（データ消去回数管理ステップ）、Ｓ１０１に処理を戻す。
なお、データ消去のあったブロックがなければ、Ｓ１０６の処理は省略される。
なお、Ｓ１０６の処理は、データの消去と同時に行うようにしてもよい。
【００３９】
また、図４のフローでは、書込み対象データが発生した後に、１次書込み候補リスト及び２次書込み候補リストを生成しているが、書込み対象データの発生前に予め１次書込み候補リスト及び２次書込み候補リストを生成していてもよい。
具体的には、図５に示すように、書込み対象データが発生する前に１次書込み候補リストを生成し（Ｓ１０２）、１次書込み候補リストの各ブロックに含まれるページの世代を算出し（Ｓ１０３）、２次書込み候補リストを生成し（Ｓ１０４）、生成した２次書込み候補リストを例えば不揮発性メモリ１４に記憶する（Ｓ２０１）。
そして、書込み対象データが発生した場合（Ｓ１０１でＹＥＳ）は、記憶している２次書込み候補リストに従って、書込み対象データを該当ブロックに書込み（Ｓ１０５）、いずれかのブロックでデータの消去があった場合は、消去回数を計数し、該当するブロック内の特定領域にデータ消去回数を書き込む（Ｓ１０６）。
なお、Ｓ１０１〜Ｓ１０６の処理は、図４について説明した内容と同じである。
図５では、書込み対象データの発生前に予め１次書込み候補リスト及び２次書込み候補リストを生成し、２次書込み候補リストを記憶している点以外は、図４と同じである。
【００４０】
ここで、フラッシュメモリ１３の各ブロックへのデータ消去回数の記録の具体例について説明する。
例えば、図２におけるブロックのサイズをｎとし、ページのサイズをｍとする。ブロック内のページの数をｑとすると、ｎ＝ｍ＊ｑとなる。
ここで、ページ内の一部領域をデータの管理領域とし、ｍ＝ｍ１＋ｃとすると、結局ブロックとして有効なデータサイズは、ｎ１＝ｍ１＊ｑとなる。
このｃの部分にそのブロックの消去回数を書きこんでおくことする。
また、単純に、各ブロックの先頭ページの一部の領域に消去回数を書き込むようにしてもよい。
【００４１】
また、前述したように、データを消去するタイミングはデータを書く直前としておき、データを書き込む前に（１次書込み候補リストの生成の際に）必ずそのフラッシュメモリの消去回数を保持している領域を読むこととし、読みこんだ回数に１回分のカウントアップしたものを消去後にデータを書き込む際に同時に書くこととする。
【００４２】
次に、図４及び図５に示した各処理の詳細を図６〜図１２を用いて説明する。
【００４３】
先ず、図９を参照して、全ブロックデータ余命管理部３４による１次書込み候補リストの作成手順を説明する。
【００４４】
Ｓ７００で１次書込み候補リストの作成フローを開始する。
このフローの開始は、図４に示したように書込み対象データが発生した場合の他、例えば、図５の例では、タイマー機能などによって、一定時間間隔で呼ばれてもよい。またデータを消去したタイミングでもかまわない。
【００４５】
そして、全ブロックデータ余命管理部３４は、各ブロックに書き込まれている各ブロックのデータ消去回数又はデータ消去回数管理テーブルに書き込まれている各ブロックのデータ消去回数を調べ、１次書込み候補リストに入っていないブロックの中で消去回数が最小のものを抽出して、１次書込み候補リストに入れる（Ｓ７０１）。
次に、全ブロックデータ余命管理部３４は、全ブロックを１次書込み候補リストに入れたかどうかを確認し（Ｓ７０２）、１次書込み候補リストに入っていないブロックがあれば、Ｓ７０１に戻る。
このような操作を順番に繰り返すことにより消去回数が最小のブロックから順に選び出すことのできる１次書込み候補リストを作成する。
最後にＳ７０３で終了する。
【００４６】
なお、図９の例では、フラッシュメモリの全ブロックを１次書込み候補リストに入れることとしたが、１次書込み候補リストに入れるブロックを一部のブロックとしてもよい。
例えば、消去回数が最小のブロックから順に全ブロックの１／２の個数のブロックのみを１次書込み候補リストに入れるようにしてもよいし、一定の消去回数未満（例えば、保証消去回数が１０万回のフラッシュメモリにおいて１万回未満）のブロックのみを１次書込み候補リストに入れるようにしてもよい。
【００４７】
次に、図１１を参照して、全ブロックデータ余命管理部３４による１次書込み候補リストの抽出及び２次書込み候補リストの作成手順を説明する。
Ｓ９００で１次書込み候補リストの抽出及び２次書込み候補リストの作成フローが開始する。
先ず、全ブロックデータ余命管理部３４は、１次書込み候補リストから消去回数が最小のブロックを抽出する（Ｓ９０１）。
次に、全ブロックデータ余命管理部３４は、抽出したブロックが使用中かどうか（データが書込み済みかどうか）を判定する（Ｓ９０２）。使用中でなければ（Ｓ９０２でＮＯ）、そのブロックを２次書込み候補リストに入れ（Ｓ９０７）、１次書込み候補リストの全ブロックに対して処理を行ったか否かを判断し（Ｓ９０８）、全ブロックに対して処理を行っていれば（Ｓ９０８でＹＥＳ）、Ｓ９０３で処理を完了する。処理を行っていないブロックが存在すれば、Ｓ９０１に戻って処理を続ける。
【００４８】
他方、Ｓ９０２の判断において使用中であれば（Ｓ９０２でＹＥＳ）、全ブロックデータ余命管理部３４は、抽出したブロックに空きページがあるかないかを判定する（Ｓ９０４）。
空きページがなければ（Ｓ９０４でＮＯ）このブロックを２次書込み候補リストに入れ（Ｓ９０７）、Ｓ９０８に移行する。
空きページがあれば（Ｓ９０４でＹＥＳ）、全ブロックデータ余命管理部３４は、このブロック内の使用中のページの世代情報を獲得する（Ｓ９０５）。具体的には、全ブロックデータ余命管理部３４は、当該ブロックを管理対象としているページデータ世代管理部３５に対して使用中のページの世代の算出を依頼し、ページデータ世代管理部３５から世代情報を取得する。
ページデータ世代管理部３５による世代の算出処理の詳細は、後述する。
ページデータ世代管理部３５から世代情報を取得した後に、全ブロックデータ余命管理部３４は、対象となっているブロックの使用中のページの世代が全て新世代であるか否かを判断する（Ｓ９０６）。
全ての使用中のページが新世代であれば（Ｓ９０６でＹＥＳ）、このブロックを２次書込み候補リストに入れ（Ｓ９０７）、Ｓ９０８に移行する。
他方、全ての使用中のページが新世代でなければ、Ｓ９０１に戻り１次書込み候補リストにおいて次のブロックを選び再びＳ９０２以下の処理を繰り返す。
【００４９】
このように、使用中のページが全て新世代でないブロックを２次書込み候補リストから除外することで、旧世代のデータが格納されているブロックに書込み対象データ（新世代）が書き込まれ、新世代のデータと旧世代のデータが一つのブロックで混在することを回避している。
【００５０】
なお、図１１では、ページの世代を２世代に分類している例を説明したが、３世代以上に分類していてもよい。
３世代以上に分類している場合に、例えば、使用中のページの全てがである場合のみ当該ブロックを２次書込み候補ブロックに追加するようにしてもよいし、使用中のページの全てが最新世代及び２番目に新しい世代である場合のみ当該ブロックを２次書込み候補ブロックに追加するようにしてもよい。
この場合は、最新世代、または最新世代と２番目に新しい世代が図１１の新世代に該当する。
【００５１】
次に、図８を参照して、ページデータ世代管理部３５による世代計算の手順を説明する。
【００５２】
ページデータ世代管理部３５による世代計算は全ブロックデータ余命管理部３４から世代計算の依頼があった際にＳ６００で開始し、ページデータ世代管理部３５は使用中のページごとにそのページに格納されているデータの作成された日付（書き込み時刻）を獲得する。これは例えばデータをファイルの形式で作成していればファイルの情報に通常つけられる情報を利用する。ファイルではなく単なる文字列もしくは、バイナリデータである場合にはその管理情報の一つとしてデータの作成日付を入れておく。
日付情報はシステムの持つ時計機能から入れても良いし、ユーザが指定しても入力してもかまわない。
またファイルという論理的な単位ではなく、書き込むページという物理的な単位からそのページが作成された時点の日付情報をフラッシュメモリ上のページの管理領域や不揮発性メモリ上のページに関するテーブルなどに保持しておき、そこから論理的なデータ単位の日付情報を作成してもかまわない。
【００５３】
次に、ページデータ世代管理部３５は、使用中のページのデータの世代を計算する（Ｓ６０２）。
図８の例では、データが作成されて２４時間以内か、１週間以内か、それ以上かの３つの世代（短命世代、平均世代、半永久世代）に分けており、ページデータ世代管理部３５は、Ｓ６０１で取得した日付と現在時刻とを比較して、ページごとに世代を判定する（Ｓ６０３）。例えば、電子メールの分け方は上記のような分け方であるが、アドレス帳の分けかたは、作成して１週間以内、１ヶ月以内、それ以上というようにアプリケーションによって区別した分け方をしてもかまわない。
また、上記の例では、日を単位として世代を判定しているが、他の時刻単位、例えば秒、分、時間、週、月、年等を用いてもよい。
また、図８の例にかかわらず、３つ以外の世代に分けてもよい。
また、データが用いられるアプリケーションプログラムごとに異なる世代判定のための経過時間の基準を用いて世代を判定するようにしてもよい。
【００５４】
最後に、ページデータ世代管理部３５は、依頼元である全ブロックデータ余命管理部３４に世代情報の計算結果を返信し（Ｓ６０４）、Ｓ６０５で終了する。
【００５５】
次に、図１０を参照して、フラッシュメモリ書込み消去管理部３１による２次書込み候補リストの抽出及び書込み処理の手順を説明する。
【００５６】
図１１で説明した手順により２次書込み候補リストが作成された後に、フラッシュメモリ書込み消去管理部３１は、２次書込み候補リストの順に、候補ブロックをひとつ取り出す（Ｓ８０１）。
そして、フラッシュメモリ書込み消去管理部３１は、このブロックが現在使われているブロックかどうか、すなわち、データが書き込み済みであるかどうかを判断する（Ｓ８０２）。
この判断はブロック内の管理情報で判断しても良いし、不揮発性メモリ１４上にあるテーブル情報で判断してもかまわない。
【００５７】
当該ブロックが使用されていない場合（Ｓ８０２でＮＯ）には、フラッシュメモリ書込み消去管理部３１は、当該ブロックの先頭ページにデータの書込みを行い（Ｓ８０３）、全データが書き込めたかどうかを判断し（Ｓ８０７）、全データの書き込みが完了していたら（Ｓ８０７でＹＥＳ）、Ｓ８０４で終了する。
全データの書き込みが完了していない場合（Ｓ８０７でＮＯ）は、Ｓ８０１から再び同じフローを繰り返す。
【００５８】
他方、Ｓ８０２の判断において当該ブロックが使用中である場合（Ｓ８０２でＹＥＳ）は、フラッシュメモリ書込み消去管理部３１は、当該ブロックに空きページ（データが書き込まれていないページ）があるか否かを判断する（Ｓ８０５）。
空きページがある場合（Ｓ８０５でＹＥＳ）は、フラッシュメモリ書込み消去管理部３１は、空きページにデータを書込み（Ｓ８０６）、Ｓ８０７に進む。
【００５９】
他方、Ｓ８０５の判断において、空きページがない場合（Ｓ８０５でＮＯ）は、フラッシュメモリ書込み消去管理部３１は、当該ブロックの全データを読み込み、読み込んだデータを暫定的に不揮発性メモリ１４に書込み、当該ブロックの全データを不揮発性メモリ１４に退避させる（Ｓ８０８）。
次に、フラッシュメモリ書込み消去管理部３１は、不揮発性メモリ１４に退避させたデータを消去して、書込み対象データをデータ消去後のブロックに書き込む（Ｓ８０９）。
次に、フラッシュメモリ書込み消去管理部３１は、不揮発性メモリ１４に退避させたデータを書込み対象データとして（Ｓ８１０）、Ｓ８０１へ進む。
ここで、まず先に退避したデータの書込みを完了してから残りの書込み対象データの書込み処理に入る。つまり、退避したデータを他の書込み対象データに優先して書き込み処理を行う。
このように、使用されている領域のブロックが出てくる限り、操作を繰り返していき、最後に未使用領域が出た時点で終了となる。
【００６０】
次に、図１２を参照して、一時的に不揮発性メモリ１４に退避したデータを他のブロックに移管して書き込む処理の手順を説明する。
【００６１】
フラッシュメモリ書込み消去管理部３１によりデータが一時的に不揮発性メモリ１４に退避された場合に、全ブロックデータ余命管理部３４は、移管先候補リストを作成する（Ｓ１２０１）。
【００６２】
移管先候補リストとは、一時的に不揮発性メモリ１４に退避されたデータの格納先の候補となるブロックのリストであり、特定の消去回数以上のブロックが消去回数の少ない順に並べられたリストである。例えば、保証消去回数が１０万回のフラッシュメモリにおいて５万回以上の消去回数のブロックが消去回数が少ない順に並べられている。
前述したように、データ消去回数が多いブロックは、１次書込み候補リスト及び２次書込み候補リストにおいて後方に位置づけられるため、書込み対象データの書込み先になる可能性が少ない。不揮発性メモリ１４に退避されたデータは空きページがないブロックに格納されていたデータであり、変動（更新）の可能性が少ないデータと捉え、書込み対象データの書込み先になる可能性が少ないデータ消去回数の多いブロックに移管して、当該移管先のブロックでのデータの変動（データ消去）を抑える。そして、これにより、ブロック間のデータ消去回数の均等化を図ることができる。
【００６３】
全ブロックデータ余命管理部３４は、例えば、フラッシュメモリ１３の全ブロックが１次書込み候補リストに入っている場合（図９）に、１次書込み候補リストの特定回数以上のブロック（例えば、５万回以上のブロック）の部分を取り出して移管先候補リストとすることができる。
また、１次書込み候補リストに入っているブロックが消去回数の少ないブロック（例えば、１万回未満）のみである場合は、全ブロックデータ余命管理部３４は、図９と同様の手順にて、消去回数が特定回数以上のブロックを消去回数が少ない順に抽出して移管先候補リストを生成することができる。
また、全ブロックデータ余命管理部３４は、移管先候補リストに含ませるブロックの消去回数の上限を設定することも可能である。例えば、保証消去回数が１０万回のフラッシュメモリにおいて５万回以上で７万回未満の消去回数のブロックのみを対象とすることが可能である。
【００６４】
移管先候補リストが作成された後に、フラッシュメモリ書込み消去管理部３１は、移管先候補リストの順に、候補ブロックをひとつ取り出す（Ｓ１２０１）。
そして、フラッシュメモリ書込み消去管理部３１は、このブロックが現在使われているブロックかどうか、すなわち、データが書き込み済みであるかどうかを判断する（Ｓ１２０３）。
この判断はブロック内の管理情報で判断しても良いし、不揮発性メモリ１４上にあるテーブル情報で判断してもかまわない。
【００６５】
当該ブロックが使用されていない場合（Ｓ１２０３でＮＯ）には、フラッシュメモリ書込み消去管理部３１は、当該ブロックの先頭ページに退避したデータの書込みを行い（Ｓ８０３）、全データが書き込めたかどうかを判断し（Ｓ１２０７）、全データの書き込みが完了していたら（Ｓ１２０７でＹＥＳ）、不揮発性メモリ１４上の退避データを消去する。
一方、全データの書き込みが完了していない場合（Ｓ１２０７でＮＯ）は、Ｓ１２０２から再び同じフローを繰り返す。
【００６６】
他方、Ｓ１２０３の判断において当該ブロックが使用中である場合（Ｓ１２０３でＹＥＳ）は、フラッシュメモリ書込み消去管理部３１は、当該ブロックに空きページ（データが書き込まれていないページ）があるか否かを判断する（Ｓ１２０５）。
空きページがある場合（Ｓ１２０５でＹＥＳ）は、フラッシュメモリ書込み消去管理部３１は、空きページにデータを書込み（Ｓ１２０６）、Ｓ１２０７に進む。
【００６７】
他方、Ｓ１２０５の判断において、空きページがない場合（Ｓ１２０５でＮＯ）は、フラッシュメモリ書込み消去管理部３１は、Ｓ１２０２に戻り、移管先候補リストの次の候補のブロックを抽出してＳ１２０３以降の処理を繰り返す。
【００６８】
以上のようにして退避データの移管が終了した後に、他の書込み対象データが存在していれば、フラッシュメモリ書込み消去管理部３１は、残存している書込み対象データに対して図１０に示す処理を行う。
【００６９】
なお、フラッシュメモリ書込み消去管理部３１は、書込み対象データを書き込む際に、併せて、書込み先のページに書込み対象データの書込み時刻を書き込むようにしてもよい。また、ページデータ世代管理部３５は、このようにしてフラッシュメモリ書込み消去管理部３１によりページに書き込まれた書込み時刻からの経過時間に応じて世代の分類を行うようにしてもよい。
【００７０】
次に、図６を参照して、データ消去回数の管理手順について説明する。
なお、説明の都合上、図６の一部において図１０に示した処理と重複する処理が示されているが、これは同じ処理を異なる側面から捉えた結果であり、図６の処理と図１０の処理とが矛盾するものではない。
【００７１】
先ず、フラッシュメモリ書込み消去管理部３１が、書込み対象データの書込み候補のページを獲得する（Ｓ４０１）。
これは、例えば、図１０のＳ８０３又は図１２のＳ１２０４に示されるように書込み先のブロックが未使用であれば、当該ブロックの先頭データが書込み候補のページとなり、また、図１０のＳ８０６又は図１２のＳ１２０６に示されるように書込み先のブロックが使用済みであれば、空きページが書込み候補のページとなる。
【００７２】
次に、フラッシュメモリ書込み消去管理部３１は、書き込み候補のページが見つかると、そのページがブロック内の先頭ページかどうかを確認する（Ｓ４０２）。
先頭ページであった場合は、さらに今回の書き込みがそのブロックにとって初めての書込みであるかどうかをチェックする（Ｓ４０３）。例えば、図１０のＳ８０９に示されるように、一時的に不揮発性メモリに退避したデータが格納されているブロックが書込み先のブロックとなる場合には、先頭ページが書込み候補のページとなるが、この場合は、そのブロックにとって今回の書込みは初めての書込みではない。
また、このチェックはフラッシュメモリの初期状態から判断しても良い。例えば判断できない場合には、最初に初期化を行ってフラッシュメモリの消去回数の初期値を−１としておいてもかまわない。
【００７３】
初めての書込みで、しかも先頭ページの場合（Ｓ４０２、Ｓ４０３ともにＹＥＳ）は、フラッシュメモリ書込み消去管理部３１が先頭ページから順にデータを書き込むとともに、当該ブロックに対応するブロック余命管理部３３が管理領域の消去回数を示す場所に０を書き込み（Ｓ４０４）、Ｓ４０５で処理を終了する。
【００７４】
また、Ｓ４０３の判断において、初めてのページでない場合（すなわち当該ブロックに過去に書込みがされている場合）（Ｓ４０３でＮＯ）か、または判断できないため初期化してあるような場合には、当該ブロックに対応するブロック余命管理部３３が先頭ページの消去回数を読み込み（Ｓ４０７）、フラッシュメモリ書込み消去管理部３１が当該ブロックのデータを消去する（Ｓ４０８）。
そして、フラッシュメモリ書込み消去管理部３１が先頭ページから順にデータを書き込むとともに、当該ブロックに対応するブロック余命管理部３３が、ブロックの先頭ページの管理領域に読み込んだ消去回数に１を加えた値を書き込み（Ｓ４０９）、Ｓ４０５で処理を終了する。
【００７５】
他方、Ｓ４０２の判断において、書込み候補のページがブロックの先頭でないページであった場合（Ｓ４０２でＹＥＳ）は、そのブロック内で初めての書込みではないため、データの消去の必要もなく（従って、消去回数のインクリメントも必要なく）、フラッシュメモリ書込み消去管理部３１が普通にデータを書込み（Ｓ４０６）、Ｓ４０５でデータの書込みを終了する。
【００７６】
ここで、ブロックの先頭ページかどうかで、そのブロックにおける初めての書込みかどうかの判断をしているが、ここではブロック内では順番にページを利用するということを前提にしているためであるが、そうでない場合は、ブロック内で最初に使われるページかどうかで判断する。
【００７７】
ページの配列順に書込みが行われない場合は、ブロック内で最初に書込みが行われるページに対して、例えば、各ページ内の管理領域に使われているかどうかを示す１ビットのフラグを用意することで、最初に書き込みが行われるページを判別するような方法が考えられる。
【００７８】
次に、図７を参照して、ブロック余命管理部３３がブロックの消去回数の計数のためのテーブルを不揮発性メモリ１４で保持している状況で、全ブロックデータ余命管理部３４がシステム全体として余命の管理を行う例を説明する。
【００７９】
前提として、ブロック余命管理部３３は、それぞれ対応するブロックのデータ消去回数を計数するためのデータ消去回数管理テーブルを不揮発性メモリ１４に保持しているものとする。
また、全ブロックデータ余命管理部３４は、各ブロック余命管理部３３が管理しているデータ消去回数管理テーブルに示されるデータ消去回数を統合してフラッシュメモリ１３に含まれる全てのブロックのデータ消去回数を管理するための統合データ消去回数管理テーブルを有する。
また、図６のフローに従ってブロック内の管理領域にデータ消去回数を保存されているものとする。
これは不揮発性メモリの内容が放電などにより消えたときにフラッシュメモリのブロック内のデータ消去回数を利用できる利点があるが、放電を気にしない場合は、図６のフロー内におけるフラッシュメモリの管理領域への消去回数の保存は行わなくてもよい。
【００８０】
図７において、Ｓ５００でスタートする。
例えば、ブロック余命管理部３３が、ブロックの番号と消去回数のペアというデータ消去回数管理テーブルでブロックごとの消去回数を管理しているような場合には、ブロックの番号を元にその消去回数を得るようなテーブル検索を利用して該当するブロックの消去回数を獲得する（Ｓ５０１）。
前記テーブルは不揮発性メモリ１４上に置き、各ブロックの情報がテーブルの各要素としてブロック余命管理部３３に管理され、全体としてテーブルが全ブロックデータ余命管理部３４に管理される。
【００８１】
次に、全ブロックデータ余命管理部３４が、フラッシュメモリ１３上でもデータ消去回数を管理しているか否かを判断し（Ｓ５０２）、フラッシュメモリ１３でデータ消去回数を管理領域に保持する仕組みでないならば、Ｓ５０３へ進み、統合データ消去回数管理テーブルの特定のブロックのデータ消去回数を、対応するデータ消去回数管理テーブルに示されているデータ消去回数に更新して（Ｓ５０３）、Ｓ５０４で終了する。
フラッシュメモリ１３でデータ消去回数を管理領域に保持する仕組みならば、全ブロックデータ余命管理部３４が、不揮発性メモリ１４上のデータ消去回数管理テーブルにおけるデータ消去回数とフラッシュメモリ１３上のデータ消去回数が整合しているかどうかをチェックし（Ｓ５０５）、整合しているならば（Ｓ５０５でＹＥＳ）、ステップ５０３以下の処理となる。
整合していないならば（Ｓ５０５でＮＯ）、フラッシュメモリをアップデート直後になんらかの理由で電源が切られるなど障害があったことが想定されるため、統合データ消去回数管理テーブルの内容をフラッシュメモリ上のデータ消去回数に修正して、Ｓ５０４で終了する。
【００８２】
このように、フラッシュメモリの各ブロックで記憶されているデータ消去回数に整合させて、フラッシュメモリ以外のメモリ上のテーブルでデータ消去回数を管理することで、データ消去回数の検索時（回数の少ない順の並べ替え時等）に高速な処理を行うことができる。
【００８３】
以上説明したように、本実施の形態に係るフラッシュメモリ管理装置では、各ブロックごとに消去回数を管理するブロック余命管理部と全体のブロックを管理する全ブロックデータ余命管理部とデータの世代を管理するデータ世代管理部と各ページのデータの世代を管理するページデータ世代管理部とを設け、データを書込みをする際に、これらの情報を使いながらブロック、ページを選択して書き込むことによりフラッシュメモリ上へのデータの書込みが分散され、結果的にフラッシュメモリの寿命が長くなるという効果がある。
【００８４】
つまり、生成されてからの経過時間が短いデータは頻繁に更新の可能性があると考えられるためデータ消去回数の少ないブロックに格納し、経過時間の長いデータは以降も更新の可能性が少ないと考えられるため、データ消去回数が多いブロックに格納する。
これにより、データ消去の可能性が高いデータをデータ消去回数の上限まで余裕があるデータ消去回数の少ないブロックに振り分けることができ、データ消去の可能性の高いデータがデータ消去回数の多いブロックに配置される危険性を回避することができ、この結果、ブロック間のデータ消去回数の均質化が図れ、フラッシュメモリの寿命を長くすることができる。
【００８５】
また、アプリケーションごとに世代計算の経過時間の基準を変化させることで、アプリケーションの特徴に応じた最適なデータの分類を行うことができ、やはりフラッシュメモリの寿命が長くなるという効果がある。
【００８６】
実施の形態２．
実施の形態１では、新規に書き込むデータをデータ消去回数の少ないブロックから順に書き込むように制御する例について述べたが、本実施の形態では、書込みからの経過時間が一定時間以上のデータ（旧世代のデータ）をデータ消去回数の多いブロックに移管する例について説明する。
【００８７】
本実施の形態に係るフラッシュメモリ管理装置１００のハードウェア構成例及びソフトウェア構成例は実施の形態１で説明したものと同様である。
【００８８】
図１３及び図１４は、本実施の形態に係るフラッシュメモリ管理装置１００の動作例を示すフローチャートである。
図１３は、移管の対象となる移管対象データが含まれる移管対象ブロックを選択する処理を示している。
また、図１４は、移管対象ブロックから移管対象データを消去し、移管対象データを移管先に移管する処理を示している。
【００８９】
先ず、図１３の処理について説明する。
前提として、移管対象ブロックの指定に先立ち、１次書込み候補リストが生成されているものとする。
１次書込み候補リストの生成処理自体は、図９に示す通りである。
１次書込み候補リストは、図４のように書込み対象データが発生した後に生成する場合と、図５のように書込み対象データが発生していない状態で生成する場合があるが、図１３の処理で用いられる１次書込み候補リストは、図４及び図５のいずれのフローにより生成されたものであってもよい。
また、図１３の移管対象ブロックの指定は、２次書き込み候補リストの生成と独立したものとしているが、移管対象ブロックの指定と２次書き込み候補リストの生成を同時に行ってもよい。
【００９０】
図１３において、Ｓ１３００〜Ｓ１３０２以外の動作は、図１１に示す同符号の動作と同じである。
先ず、Ｓ１３００で移管対象ブロックの指定フローが開始する。
そして、全ブロックデータ余命管理部３４は、１次書込み候補リストから消去回数が最小のブロックを抽出する（Ｓ９０１）。
次に、全ブロックデータ余命管理部３４は、抽出したブロックが使用中かどうか（データが書込み済みかどうか）を判定する（Ｓ９０２）。使用中でなければ（Ｓ９０２でＮＯ）、１次書込み候補リストの全ブロックに対して処理を行ったか否かを判断し（Ｓ９０８）、全ブロックに対して処理を行っていれば（Ｓ９０８でＹＥＳ）、Ｓ１３０２で処理を完了する。処理を行っていないブロックが存在すれば、Ｓ９０１に戻って処理を続ける。
【００９１】
他方、Ｓ９０２の判断において使用中であれば（Ｓ９０２でＹＥＳ）、全ブロックデータ余命管理部３４は、このブロック内の使用中のページの世代情報を獲得する（Ｓ９０５）。具体的には、全ブロックデータ余命管理部３４は、当該ブロックを管理対象としているページデータ世代管理部３５に対して使用中のページの世代の算出を依頼し、ページデータ世代管理部３５から世代情報を取得する。
ページデータ世代管理部３５による世代の算出処理は図８に示した通りである。
ページデータ世代管理部３５から世代情報を取得した後に、全ブロックデータ余命管理部３４は、対象となっているブロックの使用中のページの世代が全て新世代であるか否かを判断する（Ｓ９０６）。
全ての使用中のページが新世代であれば（Ｓ９０６でＹＥＳ）、Ｓ９０８に移行する。
他方、全ての使用中のページが新世代でなければ、全ブロックデータ余命管理部３４は、当該ブロックを移管対象ブロックに指定する（Ｓ１３０１）。
全ての使用中のページが新世代でない場合とは、全ての使用中のページが旧世代である場合と、新旧の世代のページが一つのブロックに存在している場合である。
なお、全ブロックデータ余命管理部３４は、移管対象ブロックの指定に際して、移管対象ブロックのブロック番号と、移管対象ブロックに含まれる使用中の各ページの世代を示す世代情報をレジスタ、バッファメモリ等に格納する。図１４に示す各処理は、レジスタ、バッファメモリ等に格納されている移管対象ブロックのブロック番号、世代情報を用いて行われる。
移管対象ブロックの指定後、Ｓ９０８に移行する。
【００９２】
なお、図１３では、ページの世代を２世代に分類している例を説明したが、３世代以上に分類していてもよい。
３世代以上に分類している場合に、例えば、使用中のページの全てが最新世代でなければ移管対象ブロックにするようにしてもよいし、使用中のページの全てが最新世代又は２番目に新しい世代でなければ移管対象ブロックにするようにしてもよい。
この場合は、最新世代、または最新世代と２番目に新しい世代が図１３の新世代に該当する。
【００９３】
次に、図１４において、Ｓ１４００でデータ移管フローが開始する。
先ず、フラッシュメモリ書込み消去管理部３１が、移管対象ブロックに書き込まれている移管対象データを不揮発性メモリ１４に退避させる（Ｓ１４０１）。
次に、フラッシュメモリ書込み消去管理部３１は、データ退避後の移管対象ブロックの移管対象データを消去する（Ｓ１４０２）。
次に、移管対象ブロックを管理対象としているブロック余命管理部３３が、移管対象ブロックのデータ消去回数をインクリメントして、当該ブロックの管理領域に新たなデータ消去回数を書き込む（Ｓ１４０３）。
次に、フラッシュメモリ書込み消去管理部３１が、退避データ（移管対象データ）の世代を判別し、新世代のデータに対しては図１０のＳ８０１以降の処理を行う（Ｓ１４０４）。つまり、新世代のデータは、２次書込み候補リストに従って、データ消去回数が所定数未満（例えば１万回未満）のブロック（データ消去回数が少ないブロック）に移管する。
新世代以外のデータに対しては図１２のＳ１２０１以降の処理を行う（Ｓ１４０５）。つまり、新世代以外のデータは、移管先候補リストに従って、データ消去回数が所定数以上（例えば５万回以上）のブロック（データ消去回数が多いブロック）に移管する。
Ｓ１４０４及びＳ１４０５の処理の後、データ移管処理を終了する（Ｓ１４０６）。
退避データ（移管対象データ）が新世代以外のデータのみである場合は、Ｓ１４０５の処理だけが行われる。
【００９４】
なお、Ｓ１４０４の実行段階で、２次書込み候補リストが未作成である場合は、全ブロックデータ余命管理部３４が図９のフローにより２次書込み候補リストを生成した後、図１０のＳ８０１以降の処理を行う。
【００９５】
以上の処理により、共通する世代のデータが同じブロックに格納されるようになる。つまり、新世代のデータは、データ消去回数が少ないブロックに優先的に格納されるようになり、旧世代のデータは、データ消去回数が多いブロックに優先的に格納されるようになる。
【００９６】
また、上記の説明では、フラッシュメモリの全ブロックがデータ消去回数の順に１次書込み候補リストに示され、１次書込み候補リストの順に全てのブロックに対して移管対象ブロックとするか否かを判断を行うこととした。
この点、例えば、消去回数の少ないブロックから順に全ブロックの１／２の個数のブロックのみを１次書込み候補リストに入れるようにし、または一定の消去回数未満（例えば、保証消去回数が１０万回のフラッシュメモリにおいて１万回未満）のブロックのみを１次書込み候補リストに入れるようにし、これら消去回数の少ないブロックにおいて新世代以外の世代のページが含まれている場合に、移管対象ブロックとして指定するようにしてもよい。
そして、図１４のフローに従って、移管対象ブロックのうちの新世代のデータを２次書込み候補リストに従って、データ消去回数が所定数未満（例えば１万回未満）のブロック（データ消去回数が少ないブロック）に移管し（Ｓ１４０４）、旧世代のデータを、移管先候補リストに従って、データ消去回数が所定数以上（例えば５万回以上）のブロック（データ消去回数が多いブロック）に移管する。
また、これに代えて、移管対象ブロックの全データ（新世代のデータを含む）をＳ１４０５の処理の対象とし、移管対象ブロックの全データを、移管先候補リストに従って、データ消去回数が所定数以上（例えば５万回以上）のブロック（データ消去回数が多いブロック）に移管するようにしてもよい。
【００９７】
以上、本実施の形態の形態によれば、フラッシュメモリに書き込まれている書込み済みデータについても、データ生成からの経過時間とブロックごとのデータ消去回数との関係から最適なブロックを選択し、選択したブロックに書込み済みデータを移管することで、フラッシュメモリの寿命を長くすることができる。
つまり、データ移管により、データ生成からあまり時間が経過していないデータはデータ消去回数の少ないブロックに移管し、データ生成から一定時間が経過しているデータはデータ消去回数の多いブロックに移管して、同じ世代のデータを集中させることができ、ブロック内で一部消したり、一部残したりということが少なくなり、フラッシュメモリの寿命を長期化することができる。
【００９８】
以上、実施の形態１、２では、データをページ単位に書込みを行うことができ、複数の前記ページをブロックとしてブロック単位で消去を行うことができるフラッシュメモリ装置において、データが作成されてから消えるまでの時間を寿命とし、各データの残りの寿命である余命を計算するための指標として世代情報を管理するデータ世代管理部と、各ブロックのデータの消去回数で決まるブロックの利用できる寿命である余命を回数として管理するブロック余命管理部と、全ブロックのデータの消去回数を管理する全ブロックデータ余命管理部と各ページのデータの作成されてからの時間を管理するページデータ世代管理部、および前記各部の情報を元に、最適書込みブロックおよびページを決定するためのフラッシュメモリ書込み消去管理部とからなるフラッシュメモリ管理装置について説明した。
【００９９】
また、実施の形態１、２では、前記ブロック余命管理部において、データ消去するたびにそのブロック中の一部に消去回数を書きこんでおくことによりブロックデータの消去回数を管理するフラッシュメモリ管理装置について説明した。
【０１００】
また、実施の形態１、２では、前記フラッシュメモリ管理装置の全ブロックデータ余命管理部において全ブロックの消去回数をブロック中の一部書かれた消去回数の情報から得ることができるフラッシュメモリ管理装置について説明した。
【０１０１】
また、実施の形態１、２では、前記ブロック余命管理部において、少なくとも前記フラッシュメモリ以外に不揮発で情報を記憶することのできるメモリ記憶装置を備え、該メモリ記憶装置にブロックデータを消去するたびに書きこんでおくことによりブロックデータの消去回数を管理するフラッシュメモリ管理装置について説明した。
【０１０２】
また、実施の形態１、２では、前記全ブロックデータ余命管理部において、全ブロックの消去回数をテーブルで保持し、書き換え回数が少ないブロックや最小の回数はどこかであるかを知ることができるフラッシュメモリ管理装置について説明した。
【０１０３】
また、実施の形態１、２では、前記データ世代管理部が、データが作成された日付から現時点の時間までの経過を示す指標としての世代情報を管理する世代管理機能と世代を計算する世代計算機能とを持つフラッシュメモリ管理装置について説明した。
【０１０４】
また、実施の形態１、２では、前記データ世代管理部において、世代情報は日数であり、日数の多いもの、すなわち世代情報の大きいものが古い世代であり、日時情報から日数情報を示す世代情報に置き換えるフラッシュメモリ管理装置について説明した。
【０１０５】
また、実施の形態１、２では、世代情報は日数を元に、データが作成された直後であるものと、短期であるものと、長期であるものとに計算し区別するフラッシュメモリ管理装置について説明した。
【０１０６】
また、実施の形態１、２では、前記ページデータ寿命管理部において、該ページが書き込まれてからの時間の情報を経過時間または日数として管理するためにページ内に情報を書込む時に同時に書込み時間情報を書き込むフラッシュメモリ管理装置について説明した。
【０１０７】
また、実施の形態１、２では、前記ページデータ世代管理部において、該ページが書き込まれてからの時間の情報を経過情報として該フラッシュメモリ装置以外の不揮発のメモリ上のテーブルで管理するフラッシュメモリ管理装置について説明した。
【０１０８】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、データの書き換えを含んで書込みを行う場合には、優先度を決めた書込み候補ブロックよりデータを書き込む手段を有するフラッシュメモリ管理装置について説明した。
【０１０９】
また、実施の形態１、２では、前記書込み候補ブロックよりデータを書き込む手段において、一定の間隔で書き込みや消去の際に、書込み消去候補ブロックをリストにしておき、このリストから順次選んで利用するフラッシュメモリ管理装置について説明した。
【０１１０】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、データを消去した際には、そのブロックを書込み候補ブロックに入れ、消去回数の少ない順の候補にするフラッシュメモリ管理装置について説明した。
【０１１１】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、データを書き込む際には、書込み候補ブロックから候補を選んでデータを書き込むフラッシュメモリ管理装置について説明した。
【０１１２】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、データを書き換える際には、そのブロック内の全ページを読み出し、ページデータ寿命管理部の情報に基づき同じ世代のデータが同一ブロック上に来るようにブロックを利用し、必要であれば元はひとつのブロックのデータが複数のブロックに分かれることがありうるフラッシュメモリ管理装置について説明した。
【０１１３】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、一定の間隔または特定のタイミングにおいて、ブロック内にあるデータの世代が同一になるようにブロックのデータを読み出し書き換えるフラッシュメモリ管理装置について説明した。
【０１１４】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、データの読み書きのタイミングを特定のタイミングとするフラッシュメモリ管理装置について説明した。
【０１１５】
また、本実施の形態では、前記フラッシュメモリ書込み消去管理部において、同一の世代が集まったブロックのみが消去回数が少なくなることを避けるために、ブロックの置き換えを行うフラッシュメモリ管理装置について説明した。
【０１１６】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、周期的に順にブロック余命管理部から得られる消去回数の少ないブロックを置き換え候補ブロックとするフラッシュメモリ管理装置について説明した。
【０１１７】
また、実施の形態１、２では、前記フラッシュメモリ書込み消去管理部において、ブロックの置き換えは、書込み候補ブロックの最後にある消去回数の多いものから選んでそのブロックに書込み、消去したブロックは書込み候補ブロックに入れるフラッシュメモリ管理装置について説明した。
【図面の簡単な説明】
【０１１８】
【図１】実施の形態１に係るフラッシュメモリ管理装置のハードウェア構成例を示す図。
【図２】実施の形態１に係るフラッシュメモリのブロック構成、ページ構成の例を示す図。
【図３】実施の形態１に係るフラッシュメモリ管理装置のソフトウェア構成例を示す図。
【図４】実施の形態１に係るフラッシュメモリ管理装置の全体の動作例を示すフローチャート図。
【図５】実施の形態１に係るフラッシュメモリ管理装置の全体の動作例を示すフローチャート図。
【図６】実施の形態１に係るフラッシュメモリ管理装置のデータ書き込み処理の例を示すフローチャート図。
【図７】実施の形態１に係るフラッシュメモリ管理装置の消去回数管理処理の例を示すフローチャート図。
【図８】実施の形態１に係るフラッシュメモリ管理装置のデータの世代情報の獲得処理の例を示すフローチャート図。
【図９】実施の形態１に係るフラッシュメモリ管理装置の１次書込み候補リストの作成処理の例を示すフローチャート図。
【図１０】実施の形態１に係るフラッシュメモリ管理装置の２次書込み候補リストの抽出処理の例を示すフローチャート図。
【図１１】実施の形態１に係るフラッシュメモリ管理装置の１次書込み候補リストの抽出処理の例を示すフローチャート図。
【図１２】実施の形態１に係るフラッシュメモリ管理装置のデータ移管処理の例を示すフローチャート図。
【図１３】実施の形態２に係るフラッシュメモリ管理装置の移管対象ブロックの指定処理の例を示すフローチャート図。
【図１４】実施の形態２に係るフラッシュメモリ管理装置のデータ移管処理の例を示すフローチャート図。
【図１５】実施の形態１、２に係るフラッシュメモリ管理装置によるブロック管理の概念を示す図。
【符号の説明】
【０１１９】
１１  ＣＰＵ、１２  プログラム格納用メモリ、１３  フラッシュメモリ、１４  不揮発性メモリ、１５  実行用ＲＡＭ、１６  バス、２１  ブロック、２２  ページ、３１  フラッシュメモリ書込み消去管理部、３２  全データ世代管理部、３３  ブロック余命管理部、３４  全ブロックデータ余命管理部、３５  ページデータ世代管理部、１００  フラッシュメモリ管理装置。
【図１】
0005164506.tif 000002
【図２】
0005164506.tif 000003
【図３】
0005164506.tif 000004
【図４】
0005164506.tif 000005
【図５】
0005164506.tif 000006
【図６】
0005164506.tif 000007
【図７】
0005164506.tif 000008
【図８】
0005164506.tif 000009
【図９】
0005164506.tif 000010
【図１０】
0005164506.tif 000011
【図１１】
0005164506.tif 000012
【図１２】
0005164506.tif 000013
【図１３】
0005164506.tif 000014
【図１４】
0005164506.tif 000015
【図１５】
0005164506.tif 000016