(57)【要約】【課題】  本発明によれば、物理セクタのデータ書き換え処理を制御して、メモリの寿命を延ばすことができるメモリ制御装置、情報処理装置およびメモリ制御方法を提供する。【解決手段】  書込み時期が最も新しい最新データを格納するセクタおよび書込み時期が最も古い最古データを格納するセクタを検索する検索手段１０３と、前記検索手段で検索した前記最新データを格納するセクタに隣接する、データを格納しないセクタにデータを書き込む書込手段１０４と、前記検索手段で検索した前記最古データを格納するセクタに格納された前記最古データを消去する消去手段１０５とを備え、前記書込手段１０４は、前記消去手段１０５で消去する前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを示すデータが前記記憶領域に存在しない場合、前記最新データを格納するセクタに隣接する、データを格納しないセクタに前記最古データを書込む。【選択図】      図１
2009140354.tif 000002
【特許請求の範囲】
【請求項１】
メモリの記憶領域を区分するセクタの中で、書込み時期が最も新しい最新データを格納するセクタおよび書込み時期が最も古い最古データを格納するセクタを検知する検知手段と、
前記検知手段で検知した前記最新データを格納するセクタに隣接する、データを格納しないセクタにデータを書き込む書込手段と、
前記検知手段で検知した前記最古データを格納するセクタに格納された前記最古データを消去する消去手段と
を備え、
前記書込手段は、前記消去手段で消去する前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを示すデータが前記記憶領域に存在しない場合、前記最新データを格納するセクタに隣接する、データを格納しないセクタに前記最古データを書込むこと
を特徴とするメモリ制御装置。
【請求項２】
データを格納しないセクタの数を調べる管理手段を更に具備し、
前記消去手段は、前記管理手段で調べる前記データを格納しないセクタの数が第１の所定数以下である場合、前記最古データを消去する
ことを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記消去手段は、前記管理手段で調べる前記データを格納しないセクタの数が第２の所定数以下である場合、同一の論理アドレスを有するデータを物理アドレスの順に消去する
ことを特徴とする請求項２記載のメモリ制御装置。
【請求項４】
前記書込手段で書き込むデータの論理アドレスと、該データを格納する前記セクタの物理アドレスとを対応付ける変換表を作成する変換表作成手段を更に具備し、
前記検出手段は、前記変換表作成手段で作成する前記変換表を基にセクタを検出する
ことを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
前記セクタ検出手段は、起動時に、前記記憶領域に存在するデータを格納するセクタを検出し、
前記変換表作成手段は、前記セクタ検出手段で検出する前記データを格納するセクタの物理アドレスと、該セクタが格納するデータの論理アドレスとを対応付ける前記変換表を作成する
ことを特徴とする請求項４記載のメモリ制御装置。
【請求項６】
前記検知手段は、前記記憶領域内の所在を示す物理アドレスの順に、前記最新データを格納するセクタおよび前記最古データを格納するセクタを検知する
ことを特徴とする請求項５記載のメモリ制御装置。
【請求項７】
前記消去手段で消去する前記同一の論理アドレスを有するデータの数を選択する選択手段を更に具備する消去する
ことを特徴とする請求項６記載のメモリ制御装置。
【請求項８】
メモリと、
前記メモリにデータを書き込むコマンドを出力するＣＰＵと、
前記ＣＰＵが出力する前記データを書き込むコマンドを受けて、書込み時期が最も新しい最新データを格納するセクタに隣接する、データを格納しないセクタにデータを書き込む書込手段と、
書込み時期が最も古い最古データを格納するセクタに格納された前記最古データを消去する消去手段と
を備え、
前記書込手段は、前記消去手段で消去する前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを示すデータが前記記憶領域に存在しない場合、前記最新データを格納するセクタに隣接する、データを格納しないセクタに前記最古データを書込むこと
を特徴とする情報処理装置。
【請求項９】
メモリの記憶領域を区分する物理セクタを、該物理セクタの配置を示す物理アドレスの順に確認して、データを格納する物理セクタの次に確認するデータを格納しない物理セクタを検出し、
検出した前記物理セクタにデータを書き込み、
書込んだ時期が最も古い最古データを消去し、
消去した前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを有するデータが前記記憶領域に存在しない場合、前記検出した物理セクタに前記最古データを書込むこと
を特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理アドレスの順にデータを格納して制御するメモリ制御装置、情報処理装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
一般的に、ＮＡＮＤ型フラッシュメモリ等のデータの書き換えが可能な不揮発性メモリにおいて、データの書き換え処理はメモリの記憶領域を区分した１つの物理セクタ単位で実行される。しかし、不揮発性メモリでは、特定の物理セクタにおけるデータの書き換え処理が繰り返されると、該物理セクタを構成する素子が劣化して書き換えが不可能となる。そこで、特定の物理セクタにおいて書き換え処理が集中することを防ぎ、メモリの寿命を延ばすため、記憶領域の各物理セクタの書き換え回数を平均化する手法が知られている（例えば、特許文献１参照）。
【０００３】
特許文献１には、規定した消去回数に達したら消去回数の少ない物理ブロックとデータの交換を行い、各物理ブロックの消去回数を平均化する記録装置が開示されている。
【特許文献１】特開２００３−２０３０１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載の記録装置では、規定した回数以上の書き換えについて、各物理ブロックの書き換え回数を平均化することを考慮していない。
一般に、物理セクタを構成する素子が劣化するまでの書き換え可能回数を正確に把握することは難しく、該回数を予測する際は、実際の書き換えが可能な回数より少ない値に見積もる。よって、規定した回数以上の書き換えについては特定の物理セクタに集中する可能性があり、記憶領域内の各物理セクタを構成する夫々の素子が劣化するまで、メモリを使用することができない場合が考えられる。
【０００５】
そこで、物理セクタにおけるデータ書き換え処理を制御して、各物理セクタを構成する素子が夫々劣化するまで書き換え回数を平均化するシステムが求められる。
本発明は上述の事情を考慮してなされたものであり、物理セクタの書き換え処理を制御して、メモリの寿命を延ばすことができるメモリ制御装置およびメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するため、本発明のメモリ制御装置は、メモリの記憶領域を区分するセクタの中で、書込み時期が最も新しい最新データを格納するセクタおよび書込み時期が最も古い最古データを格納するセクタを検索する検索手段と、前記検索手段で検索した前記最新データを格納するセクタに隣接する、データを格納しないセクタにデータを書き込む書込手段と、前記検索手段で検索した前記最古データを格納するセクタに格納された前記最古データを消去する消去手段とを備え、前記書込手段は、前記消去手段で消去する前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを示すデータが前記記憶領域に存在しない場合、前記最新データを格納するセクタに隣接する、データを格納しないセクタに前記最古データを書込むことを特徴とする。
【０００７】
また、本発明の情報処理装置は、メモリと、前記メモリにデータを書き込むコマンド、または前記メモリからデータを消去するコマンドを出力するＣＰＵと、前記ＣＰＵが出力する前記データを書き込むコマンドを受けて、書込み時期が最も新しい最新データを格納するセクタに隣接する、データを格納しないセクタにデータを書き込む書込手段と、前記ＣＰＵが出力する前記データを消去するコマンドを受けて、書込み時期が最も古い最古データを格納するセクタに格納された前記最古データを消去する消去手段とを備え、前記書込手段は、前記消去手段で消去する前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを示すデータが前記記憶領域に存在しない場合、前記最新データを格納するセクタに隣接する、データを格納しないセクタに前記最古データを書込むことを特徴とする。
【０００８】
また、本発明は、メモリの記憶領域を区分する物理セクタを、該物理セクタの配置を示す物理アドレスの順に確認して、データを格納する物理セクタの次に確認するデータを格納しない物理セクタを検出し、検出した前記物理セクタにデータを書き込み、書込んだ時期が最も古い最古データを消去し、消去した前記最古データの論理上の所在を示す論理アドレスと同一の論理アドレスを有するデータが前記記憶領域に存在しない場合、前記検出した物理セクタに前記最古データを書込むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、物理セクタのデータ書き換え処理を制御して、メモリの寿命を延ばすことができるメモリ制御装置、情報処理装置およびメモリ制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施形態を説明する。
まず、図１を参照して、本発明の一実施形態に係るメモリ制御装置の構成を説明する。図１は、本発明の一実施形態に係るメモリ制御装置１００のシステム構成を示した図である。本実施の形態であるメモリ制御装置１００は、例えば、不揮発性メモリ１０を内蔵したパーソナルコンピュータ等を実現する。例えば、不揮発性メモリ１０の記憶領域はN個の物理セクタに区分される。
【００１１】
本実施の形態では、物理セクタにデータを書き込む際、物理セクタの配置を示す物理アドレスの順にデータを書き込む機能を備えている。本実施の形態におけるデータの書込み機能は、例えば、記憶領域の物理アドレス０番地の物理セクタから実行される場合、次に、１番地の物理セクタ、２番地の物理セクタ、３番地の物理セクタ、と書込み処理が継続する。
【００１２】
また、本実施の形態は、データを格納できる容量が所定の値以下となる場合、例えば、書き込み更新時の最も古いデータ（以下、最古データと称する）を格納する物理セクタから物理アドレスの順にデータを消去する機能を備える。
【００１３】
本実施の形態では、例えば、最古データを格納する物理セクタの物理アドレスが０番地であった場合、データの消去は０番地の物理セクタから実行されて、次に、１番地の物理セクタ、２番地の物理セクタ、３番地の物理セクタ、と消去処理が継続する。
【００１４】
また、本実施の形態の書込み処理は、例えば、記憶領域のN番地の物理セクタまでデータの書き込むと、物理アドレス０番地の物理セクタに戻り、書き込みを継続する。
【００１５】
本実施の形態では、これらの機能により、物理アドレスの順に書込み及び消去処理を継続して実行する。また、該機能により、本実施の形態は、記憶領域内の１つの物理セクタに連続してデータが書き込まれることを回避して、物理セクタの書き換え回数を平均化する。
【００１６】
従って、本実施の形態におけるメモリ制御装置は、物理セクタのデータ書き換え処理を制御することで、書き換え回数を平均化してメモリの寿命を延ばすことができる。
【００１７】
図１に示すように、本実施の形態におけるメモリ制御装置１００は、例えば、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｉｎｔ）１０１、不揮発性メモリ１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２、およびＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２００を備えている。
【００１８】
不揮発性メモリ１０は、データの書き換えが可能な記憶媒体である。本実施の形態では、不揮発性メモリ１０の記憶領域は、Ｎ個の物理セクタで区分され、該物理セクタ単位でデータの書き込み処理および消去処理が実行される。
【００１９】
ＭＰＵ１０１は、物理セクタ使用情報、変換テーブル等の情報を管理及び処理する。また、本実施の形態におけるＭＰＵ１０１は、例えば、ＲＡＭ１０２内で実行される各種機能を制御する。また、本実施の形態におけるＭＰＵ１０１は、ＣＰＵ２００からデータの書込要求およびデータの消去要求を受けて各種機能を制御する。
【００２０】
ＲＡＭ１０２は、例えば、電気信号の読み込み及び書込みを行う作業エリアをＭＰＵ１０１に提供する制御装置の主メモリとして利用される。尚、本実施の形態における論理アドレスとは、ＣＰＵ２００が利用する論理アドレス空間においてデータの所在を示すアドレスである。
【００２１】
ＣＰＵ２００は、例えば、本実施の形態におけるメモリ制御装置全体の機能を制御する。また、本実施の形態におけるＣＰＵ２００は、データの書込要求およびデータの消去要求をＭＰＵ１０１に送りデータの書き込みおよび消去を実行させる。
【００２２】
次に、図２を参照して、ＭＰＵ１０１で制御される各機能を説明する。本実施の形態のＭＰＵ１０１は、例えば、物理セクタの使用状況を確認する物理セクタ検出部１０３、データを物理セクタに書き込む書込部１０４、物理セクタに書き込まれたデータを消去する消去部１０５、論理アドレスと物理アドレスの対応付ける変換テーブル３００を作成および管理する変換テーブル管理部１０６、およびメモリの記憶許容量を管理する記憶容量管理部１０７等の機能を制御する。
【００２３】
物理セクタ検出部１０３は、ＭＰＵ１０１のコマンドの下、データを格納する物理セクタの物理アドレス、データを格納しない物理セクタの物理アドレス、および同一の論理アドレスを格納する物理セクタの物理アドレスを検出して変換テーブル管理部１０６に出力する。
【００２４】
本実施の形態における物理セクタ検出部１０３は、例えば、ＣＰＵ２００からデータの書込要求があれば、物理アドレスの順に物理セクタを確認し、所望のデータを格納することができる物理セクタの物理アドレスを検出して書込部１０４に出力する。また、本実施の形態における物理セクタ検出部１０３は、例えば、記憶容量管理部１０７のコマンドを受けて、最古データを格納する物理セクタの物理アドレス、または同一の論理アドレスを格納する物理セクタの物理アドレスを検出して消去部１０５に出力する。
【００２５】
書込部１０４は、ＣＰＵ２００からデータの書込要求があった場合、物理セクタ検出部１０３から指定された物理アドレスの物理セクタに所望のデータを書き込む。また、本実施の形態における書込部１０４は、書き込んだデータの論理アドレスと、該データを書き込んだ物理セクタの物理アドレスを変換テーブル管理部１０６に出力する。
【００２６】
消去部１０５は、記憶容量管理部１０７からデータの消去要求があった場合、物理セクタ検出部１０３から指定された物理アドレスの物理セクタに格納されたデータを消去する。また、本実施の形態における消去部１０５は、データを消去した物理セクタの物理アドレスを変換テーブル管理部１０６に出力する。
【００２７】
変換テーブル管理部１０６は、書込部１０４、消去部１０５、及び物理セクタ検出部１０３から受ける情報を基に記憶領域内に格納されたデータの論理アドレスと、該データを格納する物理セクタの物理アドレスとを対応付ける変換テーブル３００をＲＡＭ１０２内に作成し、管理する。
【００２８】
記憶容量管理部１０７は、変換テーブル３００を基に記憶領域内に残されているデータを格納可能な容量を管理する。記憶容量管理部１０７は、例えば、データを格納しない物理セクタが所定の値を下回ると、最古データを格納する物理セクタに格納されたデータ、または同一の論理アドレスを有する複数のデータを消去するため、ＭＰＵ１０１にコマンドを出力する。
【００２９】
次に、図３乃至図５を参照して、本実施の形態における起動時の処理について説明する。本実施の形態におけるメモリ制御装置１００は、例えば起動した後に、記憶領域内の各物理セクタの使用状況を確認して変換テーブル３００を作成する。
【００３０】
本実施の形態は、作成された変換テーブル３００に基づき、書込み更新時の最も新しいデータ（以下、最新データと称する）を格納する物理セクタから継続して物理アドレスの順に書込処理を実行できる。
【００３１】
図３は、本実施の形態における不揮発性メモリ１０の記憶領域を示す。ここでは、例えば、不揮発性メモリ１０の記憶領域のデータを格納する物理セクタが記憶領域の０番地から１００００番地、および１５００１番地からＮ番地に夫々存在し、１０００１番地から１５０００番地にデータを格納しない物理セクタが存在している場合を想定する。
【００３２】
図３に示した記憶領域では、最古データを格納する物理セクタ、最新データを格納する物理セクタは、夫々１５００１番地の物理セクタ、１００００番地の物理セクタである。本実施の形態では、例えば、メモリ制御装置１００を起動してデータを書き込む場合、１０００１番地の物理セクタから、１０００２番地の物理セクタ、１０００３番地の物理セクタ、と物理アドレスの順にデータを書き込む。
【００３３】
また、本実施の形態では、書込処理を行う度に変換テーブル３００を更新する。以下では、図４を参照して、本実施の形態における変換テーブル３００の管理形式を説明する。
【００３４】
図４は、本実施の形態における変換テーブル３００を示す。本実施の形態における変換テーブル３００は、物理セクタの物理アドレスと、該物理セクタに格納されたデータの論理アドレスとを対応付けて管理する。
【００３５】
また、本実施の形態の変換テーブル３００では、最新データおよび最古データが格納される所在を示すためフラグを付ける。図４に示す変換テーブル３００では、例えば、最新データを格納する物理セクタの物理アドレス１５００１番地に対応する、０００１０２０１番地の論理アドレスにＮｅｗｅｓｔＵｓｅｄのフラグが付けられ、最古データを格納する物理セクタの物理アドレス１００００番地に対応する、０１９９８０００番地の論理アドレスにＯｌｄｅｓｔＵｓｅｄのフラグが付けられている。
【００３６】
本実施の形態では、例えば、データの書き込みまたは消去処理を行う度に変換テーブル３００を更新する。また、本実施の形態における変換テーブル３００は、例えば、メモリ制御装置１００を起動した後、物理セクタ検出部から受ける情報を基に変換テーブル３００を作成する。以下では、図５を参照して、本実施形態における起動時の処理の流れを説明する。
【００３７】
図５は、本実施の形態における起動時の処理の流れを示すフローチャートである。本実施の形態では、起動した後に初期化処理を行う（ステップＳ１０１）。
本実施の形態における初期化処理では、ＭＰＵ１０１は、ＲＡＭ内の作業エリアを用いて処理を進める。まず、ＭＰＵ１０１は、現在確認対象の物理セクタの物理アドレスを示す変数であるＰｈｙ＿Ａｄｄｒの値、条件判断用のフラグであるＦｌａｇの値、最新データを格納する物理セクタの物理アドレスを示す変数であるＮｅｗｅｓｔＵｓｅｄの値、および最古データを格納する物理セクタの物理アドレスを示す変数であるＯｌｄｅｓｔＵｓｅｄの値を夫々初期化する。
【００３８】
ここでは、例えば、Ｐｈｙ＿Ａｄｄｒには、確認を開始する最初の物理セクタの物理アドレスである０の値を代入する。Ｆｌａｇには、初期値として０の値を代入する。また、ＮｅｗｅｓｔＵｓｅｄおよびＯｌｄｅｓｔＵｓｅｄには、例えば、現時点で最新データおよび最古データを格納する物理セクタを確認していないことを示す初期値として、マイナス１の値を夫々代入する。また、ＭＰＵ１０１は、変換テーブル（Ｔａｂｌｅ）３００の全ての情報をＮＯ_ＡＳＳＩＧＮとして初期化する。
【００３９】
本実施の形態では、先述の通り、Ｐｈｙ＿Ａｄｄｒの初期値が０となっているので、物理セクタ検出部１０３は、Ｐｈｙ_Ａｄｄｒで示される物理アドレスである0番地の物理セクタからデータを読み込む（ステップＳ１０２）。
【００４０】
次に、物理セクタ検出部１０３は、ステップＳ１０２で読み込んだ物理セクタのデータから、該データの論理アドレスをＬｏｇ_Ａｄｄｒに代入する（ステップＳ１０３）。ここで、Ｌｏｇ_Ａｄｄｒは、現在の処理対象の物理セクタが格納するデータの論理アドレスを示す変数である。もし、該物理セクタがデータを格納しない場合には、Ｌｏｇ＿Ａｄｄｒの値は、ＮＯ＿ＡＳＳＩＧＮとなる。
【００４１】
ステップＳ１０２で読み込む物理セクタがデータを格納する場合（ステップＳ１０４のＹｅｓ）、ＭＰＵ１０１は、現時点で確認している物理セクタのデータが記憶領域内の唯一のデータであり、最新データおよび最古データとなるため、最新データを格納する物理セクタの物理アドレスを示すＮｅｗｅｓｔＵｓｅｄ、および最新データを格納する物理セクタの物理アドレスを示すＯｌｄｅｓｔＵｓｅｄに、Ｐｈｙ＿Ａｄｄｒを代入する。また、記憶領域の０番地の物理セクタにデータが格納されている場合には、ＭＰＵ１０１は、Ｆｌａｇの値に１の値を代入する（ステップＳ１０５）。
【００４２】
例えば、物理セクタがデータを格納しており、該データの論理アドレスがＬｏｇ_Ａｄｄｒに値が代入されると（ステップＳ１０４のＮｏ）、変換テーブル管理部１０６は、ステップＳ１０１で初期化した変換テーブル（Ｔａｂｌｅ）３００に値を入れていく。より具体的には、論理アドレスＬｏｇ＿Ａｄｄｒに対応する物理アドレスＰｈｙ＿Ａｄｄｒを書き込む（ステップＳ１０６）。例えば、０番地の物理セクタの確認を行い、読み込んだデータの論理アドレスが０００００１００番地であった場合、変換テーブル管理部１０６は、図４に示すように、変換テーブルの物理アドレス０番地を示す「０ｈ」の欄の隣の列に論理アドレス「０００００１００ｈ」を書込む。
【００４３】
現在確認している物理セクタの処理を終えると、ＭＰＵ１０１は、Ｐｈｙ_Ａｄｄｒを１加算して次の物理セクタの処理に進む（ステップＳ１０７）。また、この時点で、Ｐｈｙ_Ａｄｄｒが記憶領域のＮ番地の物理アドレスを超えていれば（ステップＳ１０８のＮｏ）、まだ確認対象が残っているため、物理セクタ検出部１０３は、物理アドレスＰｈｙ＿Ａｄｄｒの物理セクタを読み込む（ステップＳ１０９）。
【００４４】
この時点で、Ｐｈｙ_Ａｄｄｒの値がＮ＋１であれば（ステップＳ１０８のＹｅｓ）、ＭＰＵ１０１は、記憶領域の０〜Ｎ番地の全ての物理セクタを確認したとみなしてステップＳ１１９の処理に進む。
【００４５】
次に、物理セクタ検出部１０３は、Ｐｈｙ_Ａｄｄｒで示される物理アドレスの物理セクタからデータを読み込み（ステップＳ１０９）、読み込んだ物理セクタのデータの論理アドレスをＬｏｇ＿Ａｄｄｒに代入する（ステップＳ１１０）。ステップＳ１０９で読み込んだ物理セクタがデータを格納する場合、即ちＬｏｇ＿ＡｄｄｒがＮＯ＿ＡＳＳＩＧＮではなかった場合（ステップＳ１１１のＮｏ）、ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄに正常な値が書き込まれているか否か、即ち、ＯｌｄｅｓｔＵｓｅｄがマイナス１ではないか確認する。
【００４６】
ＯｌｄｅｓｔＵｓｅｄがマイナス１でない場合、即ちステップＳ１０７までの処理でデータを格納する物理セクタを確認している場合（ステップＳ１１２のＮｏ）、ＭＰＵ１０１は、０番地の物理セクタにデータが格納された場合で、且つステップＳ１０７までの処理でデータを格納しない物理セクタを確認している場合であるか否か、即ちフラグの値が２であるか確認する。
【００４７】
０番地の物理セクタにデータが格納されているが、ステップＳ１０７までの処理でデータを格納しない物理セクタを確認していない場合、即ちフラグの値が２ではない場合（ステップＳ１１５のＮｏ）、ステップＳ１０９で読み込む物理セクタのデータが最新データであるため、ＭＰＵ１０１は、ＮｅｗｅｓｔＵｓｅｄにＰｈｙ＿Ａｄｄｒで示される値を代入する（ステップＳ１１６）。
【００４８】
０番地の物理セクタにデータが格納された場合で、且つステップＳ１０７までの処理でデータを格納しない物理セクタを確認している場合、即ちフラグの値が２である場合（ステップＳ１１５のＹｅｓ）、ＭＰＵ１０１は、変換テーブル（Ｔａｂｌｅ）３００に物理アドレスＰｈｙ＿Ａｄｄｒと、該物理アドレスに対応する論理アドレスＬｏｇ＿Ａｄｄｒの値を代入して（ステップＳ１１７）、ステップＳ１０７に処理を戻す。
【００４９】
ＯｌｄｅｓｔＵｓｅｄがマイナス１である場合、即ちステップＳ１０７までの処理でデータを格納する物理セクタを確認していない場合（ステップＳ１１２のＹｅｓ）、ステップＳ１０９で読み込む物理セクタのデータが最古データであるため、ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄにＰｈｙ＿Ａｄｄｒで示される値を代入する（ステップＳ１１３）。次に、ＭＰＵ１０１は、ＮｅｗｅｓｔＵｓｅｄに正常な値が書き込まれているか否か、即ち、ＮｅｗｅｓｔＵｓｅｄがマイナス１ではないか確認する。
【００５０】
ＮｅｗｅｓｔＵｓｅｄがマイナス１である場合、即ちステップＳ１０７までの処理でデータを格納する物理セクタを確認していない場合（ステップＳ１１４のＹｅｓ）、ステップＳ１０９で読み込む物理セクタのデータが最新データであるため、ＭＰＵ１０１は、ＮｅｗｅｓｔＵｓｅｄにＰｈｙ＿Ａｄｄｒで示される値を代入する（ステップＳ１１６）。
【００５１】
ＮｅｗｅｓｔＵｓｅｄがマイナス１でない場合、即ちステップＳ１０７までの処理でデータを格納する物理セクタを確認している場合（ステップＳ１１４のＮｏ）、ＭＰＵ１０１は、変換テーブル（Ｔａｂｌｅ）３００に物理アドレスＰｈｙ＿Ａｄｄｒと、該物理アドレスに対応する論理アドレスＬｏｇ＿Ａｄｄｒの値を代入して、ステップＳ１０７に処理を戻す。
【００５２】
ステップＳ１０９で読み込んだ物理セクタがデータを格納しない場合、即ちＬｏｇ＿ＡｄｄｒがＮＯ＿ＡＳＳＩＧＮである場合（ステップＳ１１１のＹｅｓ）、ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄに正常な値が書き込まれているか否か、即ち、ＯｌｄｅｓｔＵｓｅｄがマイナス１ではないか確認する。
【００５３】
ステップＳ１０７までの処理でデータを格納する物理セクタを確認していない場合（ステップＳ１１８のＹｅｓ）、ＭＰＵ１０１は、ステップＳ１０７に戻り処理を続ける。ステップＳ１０７までの処理でデータを格納する物理セクタを確認している場合（ステップＳ１１８のＮｏ）、ＭＰＵ１０１は、物理アドレス0番地の物理セクタがデータを格納しているか否か、即ち条件判断用のフラグの値が１ではないか確認する。
【００５４】
0番地の物理セクタがデータを格納している場合、即ち、条件判断用のフラグの値が１である場合（ステップＳ１１９のＹｅｓ）、0番地の物理セクタの前にデータが書き込まれるＮ番地の物理セクタにもデータが格納されている可能性がある。よって、ＭＰＵ１０１は、Ｎ番地の物理セクタまで確認するためステップＳ１０７に戻り処理を続ける。この際、ＭＰＵ１０１は、Ｆｌａｇの値を２に書き換えると共に、ＯｌｄｅｓｔＵｓｅｄの値を初期値であるマイナス１に戻し、ＮｅｗｅｓｔＵｓｅｄの値にＰｈｙ＿Ａｄｄｒを代入する（ステップＳ１２０）。
【００５５】
0番地の物理セクタがデータを格納していない場合、即ち、条件判断用のフラグの値が０である場合（ステップＳ１１９のＮｏ）、ＭＰＵは、データを格納する物理セクタを全て確認したとみなして次の処理に進む。
【００５６】
本実施の形態では、上述の処理を行うことで記憶領域に格納されたデータを全て確認できる。また、本実施の形態では、起動後にメモリの記憶領域の使用状況を確認する際、最古データと同一の論理アドレスを有するデータを消去して容量を増やす機能を有する。本実施の形態において、該機能は、例えばステップＳ１０１〜ステップＳ１２０の処理の後に行われる。
【００５７】
物理セクタ検出部１０３は、最古データを格納するＯｌｄｅｓｔＵｓｅｄの物理セクタを確認して、該データの論理アドレスをＬｏｇ_Ａｄｄｒに代入する（ステップＳ１２１）。例えば、本実施の形態における変換テーブル管理部１０６は、各物理セクタを処理する過程で最古データと同一の論理アドレスを有するデータを格納する物理セクタを見つけると、変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスをＯｌｄｅｓｔＵｓｅｄの物理セクタの物理アドレスから、新たに見つけた物理セクタの物理アドレスの値を書き換える。
【００５８】
従って、変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスがＯｌｄｅｓｔＵｓｅｄの物理セクタの物理アドレスと一致していない場合、最古データの論理アドレスと同一の論理アドレスを有するデータが記憶領域内に存在することになる。
【００５９】
変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスがＯｌｄｅｓｔＵｓｅｄと一致していない場合、即ち、最古データの論理アドレスと同一の論理アドレスを有するデータが記憶領域内に存在する場合（ステップＳ１２２のＹｅｓ）、消去部は１０５は、最古データを格納する物理セクタから最古データを削除する（ステップＳ１２３）。ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄがＮ＋１であれば（ステップＳ１２４のＮｏ）、折り返して0番地の物理セクタを確認するためにＯｌｄｅｓｔＵｓｅｄに０を代入してステップＳ１１９に処理を戻す。ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄがＮ番地の物理アドレスを超えていない場合（ステップＳ１２４のＹｅｓ）、ステップＳ１１９に処理を戻す。
【００６０】
変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスがＯｌｄｅｓｔＵｓｅｄと一致する場合、即ち、最古データの論理アドレスと同一の論理アドレスを有するデータが記憶領域内に存在しない場合（ステップＳ１２２のＮｏ）、ＭＰＵ１０１は、データを格納しない空の物理セクタの数を算出して（ステップＳ１２６）、処理を終了する。
【００６１】
本実施の形態は、物理アドレスの順に物理セクタを確認して初期化処理を行うことで、過去に書き込まれたデータの中で更新時の最も新しいデータが格納された物理セクタに継続して物理アドレスの順に書込処理を実行できる。
【００６２】
また、本実施の形態におけるメモリ制御装置１００は、変換テーブル管理部１０６で作成された変換テーブル（Ｔａｂｌｅ）３００を基に、記憶領域内に存在するデータを格納できる物理セクタの総数と、同一の論理アドレスを有するデータを格納する物理セクタを確認できる。
【００６３】
本実施の形態では、例えば、記憶領域内に存在するデータを格納しない物理セクタが第１の所定数（以下、フリーライン１と称する）以下となる場合、最古データを格納する物理セクタからデータを消去する機能を備える。以下に、図６および図７を参照して、この機能を説明する。
【００６４】
図６は、本実施の形態における最古データを消去する手順を示す。本実施の形態では、例えば、最古データの消去処理をデータの書込処理と合わせて実行する。ここでは、例えば、データを格納する物理セクタの数がフリーライン１以下となった状況で、ＣＰＵ２００から論理アドレス００００００１０のデータの書込要求がある場合を想定する。
【００６５】
書込要求を受けて、本実施の形態では、まず、物理アドレス１５００１番地の物理セクタに格納された最古データの情報を読み込み、変換テーブル（Ｔａｂｌｅ）３００を参照して記憶領域の中に最古データと同一の論理アドレスを有するデータが存在するか確認する。
【００６６】
最古データと同一の論理アドレスを有するデータがない場合、最古データは１０００１番地の物理セクタに書き込まれる。
最古データが書き込まれると、１５００１番地物理セクタに格納されたデータは消去される。この時、最古データを格納する物理セクタの物理アドレスは１つ上がり、１５００２番地となる。
【００６７】
最古データを格納する物理セクタに格納されたデータが消去されると、論理アドレス００００００１０のデータは１０００２番地の物理セクタに書き込まれる。この時、最新データを格納する物理セクタの物理アドレスは、１つ上がって１０００２番地となる。
【００６８】
上述した通り、本実施の形態では、最古データを消去する前に記憶領域から最古データと同一の論理アドレスを有するデータを検索する。最古データと同一の論理アドレスを有するデータがない場合、最古データを別の物理セクタに移して、該物理セクタの次の物理セクタに新しいデータを書き込む。最古データと同一の論理アドレスを有するデータが存在する場合、最古データを移さずに消去する。
【００６９】
本実施の形態では、最古データを消去する際、最古データと同一の論理アドレスを有するデータを確認して消去することで、記憶領域の中で唯一の論理アドレスを有するデータがユーザの意図に反して消去されることを回避できる。以下では、図６を参照して、本実施の形態における最古データを消去して最新データを書込む流れを具体的に説明する。
【００７０】
図７は、本実施の形態における最古データを消去して最新データを書込む具体的な流れを説明するフローチャートである。
ＣＰＵ２００からデータの書込要求があった場合、記憶容量管理部１０７は、変換テーブル（Ｔａｂｌｅ）３００を参照して、データを格納しない物理セクタの総数がフリーライン１以下であるか確認する。
【００７１】
データを格納しない物理セクタの総数がフリーライン１以下である場合（ステップＳ２０１のＹｅｓ）、物理セクタ検出部１０３は、最古データを格納するＯｌｄｅｓｔＵｓｅｄの物理セクタからデータを読み込み、読み込んだデータの論理アドレスをＬｏｇ_Ａｄｄｒに代入する（ステップＳ２０２）。
【００７２】
Ｌｏｇ＿Ａｄｄｒに値が代入されると、ＭＰＵ１０１は、変換テーブル（Ｔａｂｌｅ）３００を参照して、最古データと同一の論理アドレスを有するデータが記憶領域に存在するか確認する。
【００７３】
変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスがＯｌｄｅｓｔＵｓｅｄと一致していない場合、即ち、最古データと同一の論理アドレスを有するデータが記憶領域内に存在する場合（ステップＳ２０３のＹｅｓ）、消去部１０５は、最古データを消去する（ステップＳ２０４）。次に、物理セクタ検出部１０３は、ＯｌｄｅｓｔＵｓｅｄの値を１つ加算して、次に書き込み更新時の古いデータを格納する物理セクタを処理する。
【００７４】
ここで、ＯｌｄｅｓｔＵｓｅｄの値がＮ＋１であれば（ステップＳ２０６のＹｅｓ）、ＭＰＵ１０１は、折り返して0番地の物理セクタを処理するためにＯｌｄｅｓｔＵｓｅｄに０を代入する（ステップＳ２０７）。Ｎ番地の物理アドレスを超えていなければ（ステップＳ２０６のＮｏ）、ＭＰＵ１０１は次へ進む。
【００７５】
変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスがＯｌｄｅｓｔＵｓｅｄと一致する場合、即ち、最古データと同一の論理アドレスを有するデータが記憶領域内に存在しない場合（ステップＳ２０３のＮｏ）、ＭＰＵは、最古データを移動させるためにＮｅｗｅｓｅｔＵｓｅｄの値を１つ加算する（ステップＳ２０８）。
【００７６】
ここで、ＮｅｗｅｓｔＵｓｅｄの値がＮ＋１であれば（ステップＳ２０９のＹｅｓ）、ＭＰＵ１０１は、折り返して0番地の物理セクタに最古データを移動させるためにＮｅｗｅｓｔＵｓｅｄに０を代入する（ステップＳ２１０）。ＮｅｗｅｓｔＵｓｅｄの値がＮ番地の物理アドレスを超えていなければ（ステップＳ２０９のＮｏ）、ＭＰＵ１０１は次へ進む。
【００７７】
ステップＳ２１０までの時点でＮｅｗｅｓｔＵｓｅｄの物理セクタに移動させる最古データの論理アドレスＬｏｇ_Ａｄｄｒと書込要求の論理アドレスとが同一である場合、（ステップＳ２１１のＹｅｓ）、該データは消去できるデータである。しかし、本実施の形態における書込部１０４は、ＲＡＭ内の作業エリアの一部であるＥｒａｓｅＳｅｃｔｏｒに最古データを格納する物理セクタの物理アドレスＯｌｄｅｓｔＵｓｅｄを書き込み（ステップＳ２１５）、該データを消去せずに次の処理に進む。これにより、本実施の形態では、例えば、新たなデータの書込処理の途中でメモリ制御装置１００の電源が切れてしまう場合等、唯一の論理アドレスを有するデータが失われる事態を回避できる。
【００７８】
最古データの論理アドレスＬｏｇ_Ａｄｄｒと書込要求の論理アドレスとが同一の値でない場合（ステップＳ２１１のＮｏ）、書込部１０４は、最古データをＮｅｗｅｓｅｔＵｓｅｄの物理セクタに書き込む（ステップＳ２１２）。最古データを移動すると、消去部１０５は、ＯｌｄｅｓｔＵｓｅｄの物理セクタが格納する最古データを消去する（ステップＳ２１３）。ステップＳ２１３までの処理を終えると、変換テーブル管理部１０６は、変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ_Ａｄｄｒに対応する物理アドレスをＮｅｗｅｓｅｔＵｓｅｄに更新する（ステップＳ２１４）。
【００７９】
データを格納しない物理セクタの総数がフリーライン１以上である場合（ステップＳ２０１のＮｏ）、ＭＰＵ１０１は、書込要求があったデータの処理を行うため、ＮｅｗｅｓｔＵｓｅｄを１つ加算する（ステップＳ２１６）。ここで、ＮｅｗｅｓｔＵｓｅｄの値がＮ＋１であれば（ステップＳ２１７のＹｅｓ）、ＭＰＵ１０１は、折り返して0番地の物理セクタを処理するためにＮｅｗｅｓｔＵｓｅｄに０を代入する（ステップＳ２１８）。ＮｅｗｅｓｔＵｓｅｄの値がＮ番地の物理アドレスを超えていない場合（ステップＳ２１７のＮｏ）、ＭＰＵ１０１は次の処理に進む。
【００８０】
次に、書込部１０４は、書込要求があったデータをＮｅｗｅｓｔＵｓｅｄの物理セクタに書き込む（ステップＳ２１９）。ここで、ＥｒａｓｅＳｅｃｔｏｒが有効な値を有していない場合、即ち、ＥｒａｓｅＳｅｃｔｏｒに物理アドレスが書込まれていない場合（ステップＳ２２０のＮｏ）、ＭＰＵは処理を終了する。ＥｒａｓｅＳｅｃｔｏｒが有効な値を有している場合、即ち、ＥｒａｓｅＳｅｃｔｏｒに物理アドレスが書込まれている場合（ステップＳ２２０のＹｅｓ）、消去部１０５は、ＥｒａｓｅＳｅｃｔｏｒで参照される物理セクタのデータを消去する（ステップＳ２２１）。
【００８１】
本実施の形態は、例えば、新しく書き込むデータの論理アドレスと、既に記憶領域に書き込まれたデータの論理アドレスとが同一の値であっても、記憶領域のデータを即座に消去することはなく、データを格納しない物理セクタの数がフリーライン１以下となるまで書き込まれたデータを保持する。従って、物理アドレスの順にデータを参照すれば、過去に書き込まれた履歴を容易に調査することができる。
【００８２】
また、本実施の形態では、記憶領域内に最古データの論理アドレスと同一の値を有するデータが複数存在する場合、消去要求に従って夫々のデータを同時に消去する機能を備える。該機能により本実施の形態では、消去するデータの数を一括して調整できる。
【００８３】
上述の方法では、例えば、データを格納できる容量が少ない状況で同じ論理アドレスを有するデータの書込要求が連続すると、同一の論理アドレスに対応する物理セクタが存在するにもかかわらず優先して削除できない。
【００８４】
そこで、本実施の形態では、記憶領域内に存在するデータを格納しない物理セクタの総数が第２の所定数（以下、フリーライン２と称する）以下となる状況で、同じ論理アドレスを有するデータの書込要求が連続する場合、同一の論理アドレスを有するデータを消去して記憶領域内を整理する物理セクタ整理機能を備える。以下に、図８および図９を参照して、物理セクタ整理機能を説明する。
【００８５】
図８は、本実施の形態における物理セクタ整理機能の手順を示す。ここでは、例えば、本実施の形態における物理セクタ整理機能は、図６および図７で説明した最古データの消去処理と合わせて実行される状況を想定する。
【００８６】
例えば、図３に示した記憶領域の使用状況で、論理アドレス０００００００１番地のデータの書込要求があった場合、本実施の形態では、まず、最古データを格納する１５００１番地の物理セクタから、１０００１番地の物理セクタに最古データを移動させる。次に、１０００２番地の物理セクタに書込要求のあった論理アドレス０００００００１番地のデータを書込む。
【００８７】
次に書込要求があったデータの論理アドレスが０００００００１番地であった場合、同様に、最古データを１５００２番地の物理セクタから１０００３番地の物理セクタに移動させて、１０００４番地の物理セクタに書込要求のあったデータを書込む。この状況では、物理アドレス１０００２番地の物理セクタに格納されたデータは消去できるデータであるが、該データが最古データであると判断されるまで消去されずに記憶領域に保持される。
【００８８】
そこで、データを格納しない物理セクタの総数がフリーライン２以下となった場合、物理アドレス１０００２番地の物理セクタに格納されたデータを消去する。データが消去された後、１０００２番地の物理セクタには１５００３番地の物理セクタに格納された最古データを移動させる。
【００８９】
上述した通り、本実施の形態では、同一の論理アドレスを有するデータを消去した後、該データを格納していた物理セクタに最古データを移動させる。従って、本実施の形態では、記憶領域内で不規則に存在する同一の論理アドレスを有するデータを消去しても連続して存在するデータを格納した物理セクタ群の間にデータを格納しない物理セクタが発生する状況を回避できる。よって、同一の論理アドレスを有するデータを消去した後も物理アドレスの順に書込処理を継続できる。以下では、図９を参照して、本実施の形態における物理セクタ整理機能の流れを具体的に説明する。
【００９０】
図９は、本実施の形態における物理セクタ整理機能の具体的な流れを説明するフローチャートである。ここでは、例えば、データを格納しない物理セクタの総数がフリーライン２以下となった状況で、記憶容量管理部１０７から物理セクタ整理要求があった場合を想定する。
【００９１】
まず、ＭＰＵ１０１は、Ｐｈｙ＿Ａｄｄｒに物理アドレスＯｌｄｅｓｔＵｓｅｄを代入する（ステップＳ３０１）。物理セクタ検出部１０３は、ＯｌｄｅｓｔＵｓｅｄが示す物理セクタのデータを読み込み、該物理セクタに格納されたデータの論理アドレスをＬｏｇ＿Ａｄｄｒに代入する（ステップＳ３０２）。
【００９２】
次に、物理セクタ検出部１０３は、変換テーブル（Ｔａｂｌｅ）３００を参照して、Ｌｏｇ＿Ａｄｄｒと同一の論理アドレスを有するデータを格納する物理セクタが記憶領域に存在するか確認する。変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ＿Ａｄｄｒと対応する物理アドレスとＰｈｙ＿Ａｄｄｒとが一致する場合、即ち、同一の論理アドレスを有するデータを格納する物理セクタが記憶領域に存在しない場合（ステップＳ３０３のＹｅｓ）、Ｐｈｙ＿Ａｄｄｒの物理セクタのデータは削除出来ないため、ＭＰＵ１０１は、Ｐｈｙ＿Ａｄｄｒを１つ加算する（ステップＳ３０４）。
【００９３】
ここで、Ｐｈｙ＿Ａｄｄｒが示す物理アドレスが最新データを格納する物理セクタの物理アドレスＮｅｗｅｓｔＵｓｅｄではない場合（ステップＳ３０５のＮｏ）、ＭＰＵ１０１は、ステップＳ３０１に処理を戻す。Ｐｈｙ＿Ａｄｄｒが示す物理アドレスが最新データを格納する物理セクタの物理アドレスＮｅｗｅｓｔＵｓｅｄである場合（ステップＳ３０５のＹｅｓ）、ＭＰＵ１０１は、データを格納する物理セクタを全て処理したとみなして、物理セクタ整理機能の処理を終了する。
【００９４】
変換テーブル（Ｔａｂｌｅ）３００のＬｏｇ＿Ａｄｄｒと対応する物理アドレスとＰｈｙ＿Ａｄｄｒとが一致しない場合、即ち、Ｌｏｇ＿Ａｄｄｒと同一の論理アドレスを有するデータを格納する物理セクタが記憶領域に存在する場合（ステップＳ３０３のＮｏ）、消去部１０５は、Ｐｈｙ＿Ａｄｄｒが示す物理セクタに格納されたデータを削除する。
【００９５】
次に、ＭＰＵ１０１は、Ｐｈｙ＿ＡｄｄｒがＯｌｄｅｓｔＵｓｅｄで示される物理アドレスと一致するか否か、即ち、現在処理している物理セクタが最古データを格納する物理セクタである否かを確認する。
【００９６】
Ｐｈｙ＿ＡｄｄｒがＯｌｄｅｓｔＵｓｅｄで示される物理アドレスと一致しない場合、即ち、現在処理している物理セクタが最古データを格納する物理セクタではない場合（ステップＳ３０７のＮｏ）、書込部１０４は、ＯｌｄｅｓｔＵｓｅｄの物理セクタのデータをＰｈｙ＿Ａｄｄｒの物理セクタに書き込む（ステップＳ３０８）。データが書き込まれると、消去部１０５は、ＯｌｄｅｓｔＵｓｅｄの物理セクタが格納するデータを消去する（ステップＳ３０９）。
【００９７】
ここで、ＯｌｄｅｓｔＵｓｅｄの値がＮ＋１を超えた場合（ステップＳ３１１のＹｅｓ）、ＭＰＵ１０１は、折り返して0番地の物理セクタを処理するためにＯｌｄｅｓｔＵｓｅｄに０を代入する（ステップＳ３１２）。ＯｌｄｅｓｔＵｓｅｄの値がＮ番地の物理アドレスを超えていない場合（ステップＳ３１１のＮｏ）、ＭＰＵ１０１は処理を終了する。
【００９８】
Ｐｈｙ＿ＡｄｄｒがＯｌｄｅｓｔＵｓｅｄで示される物理アドレスと一致する場合、即ち、現在処理している物理セクタが最古データを格納する物理セクタである場合（ステップＳ３０７のＹｅｓ）、ＭＰＵ１０１は、Ｐｈｙ＿Ａｄｄｒを１つ加算する（ステップＳ３１３）。
【００９９】
ここで、Ｐｈｙ＿Ａｄｄｒの物理アドレスとＮｅｗｅｓｔＵｓｅｄの物理アドレスとが一致しない場合、即ち、Ｐｈｙ＿Ａｄｄｒが最新データを格納する物理セクタではない場合（ステップＳ３１４のＮｏ）、ＭＰＵ１０１は、ＯｌｄｅｓｔＵｓｅｄにＰｈｙ＿Ａｄｄｒが示す物理アドレスを代入して更新し（ステップＳ３１５）、ステップＳ３０１に処理を戻す。
【０１００】
Ｐｈｙ＿Ａｄｄｒの物理アドレスとＮｅｗｅｓｔＵｓｅｄの物理アドレスとが一致する場合、即ち、Ｐｈｙ＿Ａｄｄｒが最新データを格納する物理セクタである場合（ステップＳ３１４のＹｅｓ）、ＭＰＵ１０１は、データを格納する物理セクタを全て処理したとみなして物理セクタ整理機能の処理を終了する。
【０１０１】
また、本実施の形態では、フリーライン１およびフリーライン２を設定する機能を有する。該機能により、ユーザは、メモリに記憶できる容量を予測できる。また、ユーザの予測以上に記憶できる容量が少ない場合、記憶領域内に記憶されたデータは唯一の論理アドレスを有するデータが多く含まれていることを知ることができる。
【０１０２】
本実施の形態では、上述の処理を繰り返して、最新データを格納する物理セクタまで同一の論理アドレスを有するデータを検索して消去する。
また、本実施の形態では、記憶領域内に同一の論理アドレスを有するデータが複数存在する場合、ＣＰＵ２００から消去要求に従って夫々のデータを同時に消去する機能を備える。該機能により本実施の形態では、消去するデータの数を一括して調整できる。また、同一の論理アドレスを有するデータが消去された後、該データを格納していた物理セクタには、格納される物理セクタの物理アドレスの順に同一の論理アドレスを有さないデータを書き込む。
【０１０３】
上述した通り、本実施の形態におけるメモリ制御装置１００は、各物理セクタを構成する素子が夫々劣化するまで書き換え回数を平均化することを実現し、メモリの寿命を延ばすことができる。本実施の形態におけるメモリ制御装置１００は、物理アドレスの順に書込及び消去処理を継続して実行する。よって、本実施の形態は、記憶領域内の１つの物理セクタに連続してデータが書き込まれることを回避して、物理セクタの書き換え回数を平均化する。
【０１０４】
本実施の形態では、最古データを消去する前に記憶領域から最古データと同一の論理アドレスを有するデータを検索する。最古データと同一の論理アドレスを有するデータがない場合、最新データを格納する物理セクタに最古データを移して、その次の物理セクタに新しいデータを書き込む。最古データと同一の論理アドレスを有するデータが存在する場合、最古データを移さずに消去する。
【０１０５】
本実施の形態では、最古データを消去する際、最古データと同一の論理アドレスを有するデータを確認して消去することで、記憶領域の中で唯一の論理アドレスを有するデータがユーザの意図に反して消去されることを回避できる。
【０１０６】
また、本実施の形態におけるメモリ制御装置１００は、変換テーブル管理部１０６で作成された変換テーブル３００を基に、記憶領域内に存在するデータを格納しない物理セクタの総数と、同一の論理アドレスを有するデータを格納する物理セクタの物理アドレスとを確認できる。
【０１０７】
本実施の形態は、例えば、新しく書き込むデータの論理アドレスと、既に記憶領域に書き込まれたデータの論理アドレスとが同一の値であっても、記憶領域のデータを即座に消去することはなく、データを記憶可能な容量が所定量となるまで書き込まれたデータを保持する。従って、物理アドレスの順にデータを参照すれば、過去に書き込まれた履歴を容易に調査することができる。
【０１０８】
なお、本実施の形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【０１０９】
【図１】本実施の形態におけるメモリ制御装置のブロック図である。
【図２】本実施の形態におけるメモリ制御装置のＭＰＵ内のブロック図である。
【図３】本実施の形態における不揮発性メモリの記憶領域を説明する図である。
【図４】本実施の形態における変換テーブルを示す図である。
【図５】本実施の形態における起動時の処理の流れを示すフローチャートである。
【図６】本実施の形態における最古データを消去する手順を示す図である。
【図７】本実施の形態における最古データを消去して最新データを書込む具体的な流れを説明するフローチャートである。
【図８】本実施の形態における物理セクタ整理機能の手順を示す図である。
【図９】本実施の形態における物理セクタ整理機能の具体的な流れを説明するフローチャートである。
【符号の説明】
【０１１０】
１０  不揮発性メモリ
１００  メモリ制御装置本体
１０１  ＭＰＵ
１０２  ＲＡＭ
１０３  物理セクタ検出部
１０４  書込部
１０５  消去部
１０６  変換テーブル管理部
１０７  記憶容量管理部
２００  ＣＰＵ
３００  変換テーブル
【図１】
2009140354.tif 000003
【図２】
2009140354.tif 000004
【図３】
2009140354.tif 000005
【図４】
2009140354.tif 000006
【図５】
2009140354.tif 000007
【図６】
2009140354.tif 000008
【図７】
2009140354.tif 000009
【図８】
2009140354.tif 000010
【図９】
2009140354.tif 000011