(57)【要約】【課題】フラッシュメモリなどの不揮発性メモリに対してデータの書き込み、上書き、削除などの処理を行っている際に、パワーオフなどによってメモリ異常が発生した場合でも、これを正常な状態に的確に復旧することが可能なメモリ管理装置を提供する。【解決手段】データ用ブロックＤＢには、データが記憶される複数のデータ部分領域を含むデータ領域が設けられているとともに、テーブル用ブロックＴＢには、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルが記憶されている。データ用ブロック管理部４ａが、データ用ブロックＤＢに対してデータの書き込み処理を行った場合に、テーブル用ブロック管理部４ｂが、該データに対応するテーブルに書き込み処理の進行状況を示すステータスを記憶する。【選択図】  図１
2005025401.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、
上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、
上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、
上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、
上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスを記憶することを特徴とするメモリ管理装置。
【請求項２】
上記テーブル用ブロック管理手段が、上記ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶することを特徴とする請求項１記載のメモリ管理装置。
【請求項３】
上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶することを特徴とする請求項１または２記載のメモリ管理装置。
【請求項４】
複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、
上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段を備え、
上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、
上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、
上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了することを特徴とするメモリ管理装置。
【請求項５】
上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶することを特徴とする請求項４記載のメモリ管理装置。
【請求項６】
上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項５記載のメモリ管理装置。
【請求項７】
複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、
上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段と、
上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、
上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶するテーブル領域を備えており、
上記データ用ブロックに記憶されているデータの削除処理を行う場合に、
上記テーブル用ブロック管理手段が、
削除処理の対象となるデータに対応する上記テーブルに、削除対象であることを示すステータスを記憶し、
上記データ用ブロック管理手段が、
削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴とするメモリ管理装置。
【請求項８】
上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶することを特徴とする請求項７記載のメモリ管理装置。
【請求項９】
上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項８記載のメモリ管理装置。
【請求項１０】
上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、
上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、
削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴とする請求項７、８、または９記載のメモリ管理装置。
【請求項１１】
上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶することを特徴とする請求項１０記載のメモリ管理装置。
【請求項１２】
上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項１１記載のメモリ管理装置。
【請求項１３】
請求項１ないし１２のいずれか一項に記載のメモリ管理装置が備える各手段をコンピュータに実現させるためのメモリ管理プログラム。
【請求項１４】
請求項１ないし１２のいずれか一項に記載のメモリ管理装置が備える各手段をコンピュータに実現させるためのメモリ管理プログラムを記録した記録媒体。
【請求項１５】
請求項１ないし１２のいずれか一項に記載のメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および／または外部の装置から電力供給を行うインターフェース部とを備えていることを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばＩＣカードに搭載されるフラッシュメモリの記憶動作を管理するメモリ管理装置に関するものである。
【０００２】
【従来の技術】
従来、例えばクレジットカードやキャッシュカードなどの用途で、磁気を利用してカードに各種情報が記録されている磁気カードが広く普及している。これに対して、昨今では、カードにＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を埋め込んだＩＣカードが磁気カードに代わって普及しつつある。ＩＣカードは、磁気カードと比較して、記憶可能な情報量が大きいという点、および、複製が極めて困難であることによるセキュリティが高いという点においてメリットを有している。
【０００３】
通常、ＩＣカードに搭載されているメモリは、電力が供給されない状態でも記憶内容を保存できるように不揮発性メモリが用いられることが多い。このようなＩＣカードに搭載される不揮発性メモリとしては、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ／Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュＥＥＰＲＯＭ、およびＦＲＡＭ（ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）などが採用されている。これらの中でも、大容量化を低コストで実現可能なフラッシュＥＥＰＲＯＭが広く用いられている。なお、以降では、このフラッシュＥＥＰＲＯＭを単にフラッシュメモリと称する。
【０００４】
【特許文献１】
特開平６−１１１５８８号公報（公開日１９９４年４月２２日）
【０００５】
【発明が解決しようとする課題】
しかしながら、フラッシュメモリには、ＳＲＡＭまたはＤＲＡＭにはない制限がある。まず、各メモリビットは、０から１への変更、あるいは１から０への変更のどちらか一方しか行えないようになっている。したがって、既にデータが書き込まれている記憶位置に新たなデータを書き込む場合は、まず、その記憶位置を含むブロックまたはセクタ単位を一括消去することによって、ブロック／セクタ内全てのメモリを０または１に設定した後に書き込みを行うこととなる。ここで、フラッシュメモリにおける、１ワードのデータの書き込みに伴う処理時間は、数１０マイクロ秒かかる。また、一括消去単位ブロックの消去に至っては、数１００ミリ秒から数秒の時間が必要となる。
【０００６】
したがって、フラッシュメモリを搭載したＩＣカードでは、データの書き込みまたは消去に対して時間がかかるので、データの書き込みまたは消去中にパワーオフが生じる可能性が高くなるという問題がある。特に、非接触型のＩＣカードでは、ＩＣカードが動作中に動作磁界内からはずれるなどして、パワーオフが発生する可能性が高い。また、接触型のＩＣカードの場合においても、ＩＣカードの動作中にパワーオフが発生する場合がある。例えば、ユーザーが、ＩＣカードの動作中にリーダーライターからＩＣカードを引き抜いたり、または外部からの振動などにより端子がはずれたりすることによってパワーオフが生じる。
【０００７】
もし、ＩＣカード内に搭載されているフラッシュメモリの消去中、または書き込み中にパワーオフが発生した場合には、記憶されているデータ内容が異常な状態になる可能性がある。このような状況になった場合、再度ＩＣカードを作動したときに、ＩＣカードが正常に動作しない可能性がある。そのため、従来からフラッシュメモリへの書き込み中あるいは、消去中にパワーオフが起きないように注意する必要があった。特に、非接触型ＩＣカードにおいては、パワーオフが生じる恐れがあるため、消去や書き込みは極力避けるようにしなければならなかった。
【０００８】
上記にて示した問題点を鑑みて、特許文献１では、パワーオフ時における書き込みエラーを検出し、これを訂正する構成が開示されている。具体的には次のような構成となっている。フラッシュメモリの外部にＲＡＭが備えられており、このＲＡＭの記憶領域に、フラッシュメモリを構成するブロック（セクタ）に関する制御情報が記録されている。このＲＡＭに記憶されている制御情報を用いて、異常パワーオフによるエラーを検出訂正することが可能となっている。
【０００９】
しかしながら、特許文献１にて示される構成では、ブロック（セクタ）の制御情報を記憶しておくためのＲＡＭなどを２次メモリとして使用しているので、コストがかかるという問題が生じる。つまり、ＩＣカードにおける記憶手段として用いるフラッシュメモリにＲＡＭも内蔵させることが必要となるので、記憶手段の大型化やコストの上昇を招くという問題がある。
【００１０】
また、特許文献１にて示される構成では、データの書き込み中／消去中にパワーオフが生じた場合、パリティ検査によって、ブロックのヘッダにエラーが生じているか調べることができる。しかし、訂正不能エラーがある場合は、訂正不能エラーが生じているブロックを消去することとなる。したがって、訂正不能であるエラーを検出した場合は、エラーが生じているブロックを消去するだけで、書き込まれたデータを訂正して復旧することができない。
【００１１】
本発明は、上記の問題点を解決するためになされたもので、その目的は、フラッシュメモリなどの不揮発性メモリに対してデータの書き込み、上書き、削除などの処理を行っている際に、パワーオフなどによってメモリ異常が発生した場合でも、これを正常な状態に的確に復旧することが可能なメモリ管理装置およびこれを備えたＩＣカードを提供することにある。
【００１２】
【課題を解決するための手段】
上記の課題を解決するため、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスを記憶することを特徴としている。
【００１３】
上記の構成によれば、データ用ブロック管理手段によって、データ用ブロックに対してデータの書き込み処理が行われると、テーブル用ブロック管理手段によって、該データに対応するテーブルに対して、書き込み処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの書き込み処理の最中にパワーオフが発生し、書き込み処理が中断されたとしても、テーブルのステータスを確認することによって、どの時点で書き込み処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び書き込み処理を行うことによって、書き込み処理を正常に完了させることが可能となる。
【００１４】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、上記ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶する構成としてもよい。
【００１５】
上記の構成によれば、ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報がテーブルに記憶されることになる。よって、書き込み処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【００１６】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶する構成としてもよい。
【００１７】
上記の構成によれば、データ用ブロックに、データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップが記憶されるようになっている。よって、この有効マップを確認することによって、データ用ブロックにおけるデータ領域の空き領域の大きさを把握することが可能となる。また、復旧処理を行う際にも、この有効マップを確認することによって、書き込み処理がどの段階まで進んでいるかをより正確に把握することが可能となる。
【００１８】
また、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段を備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了することを特徴としている。
【００１９】
上記の構成では、データ用ブロックに記憶されているデータの上書き処理を行う場合に、まず、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている内容が、データ書き換え用ブロックにコピーされ、上書きするデータもデータ書き換え用ブロックに書き込まれる。この時点では、データ用ブロックには、上書き処理前のデータがそのまま記憶されており、データ書き換え用ブロックには、上書き処理後のデータが記憶されていることになる。
【００２０】
次に、データ用ブロックのデータ領域に記憶されている内容が消去される。この時点では、データ書き換え用ブロックにのみ、上書き処理後のデータが記憶されていることになる。そして、データ書き換え用ブロックをデータ用ブロックに変更することによって上書き処理が完了する。
【００２１】
以上のような処理によれば、どの時点で上書き処理が中断されても、中断されている時点から再度処理を行うことによって、正常に上書き処理を完了させることが可能となる。
【００２２】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶する構成としてもよい。
【００２３】
上記の構成によれば、データ用ブロックに対してデータの上書き処理が行われると、管理情報領域に上書き処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの上書き処理の最中にパワーオフが発生し、上書き処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で上書き処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び上書き処理を行うことによって、上書き処理を正常に完了させることが可能となる。
【００２４】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【００２５】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、上書き処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【００２６】
また、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶するテーブル領域を備えており、上記データ用ブロックに記憶されているデータの削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴としている。
【００２７】
上記の構成では、データ用ブロックに記憶されているデータの削除処理を行う場合に、まず、削除処理の対象となるデータに対応するテーブルに、削除対象であることを示すステータスが記憶される。そして、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている内容が、削除処理の対象となるデータを除いてデータ書き換え用ブロックにコピーされる。次に、データ用ブロックのデータ領域に記憶されている内容が消去される。そして、データ書き換え用ブロックとデータ用ブロックとを入れ替える処理が行われ、これによって削除処理が完了する。
【００２８】
以上のような処理によれば、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となる。
【００２９】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【００３０】
上記の構成によれば、データ用ブロックに対してデータの削除処理が行われると、管理情報領域に削除処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となる。
【００３１】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【００３２】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【００３３】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成としてもよい。
【００３４】
上記の構成では、データ用ブロックに記憶されているデータの削除処理を行う場合に、まず、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容が、テーブル書き換え用ブロックにコピーされる。次に、テーブル用ブロックのテーブル領域に記憶されている内容が消去される。そして、テーブル書き換え用ブロックとテーブル用ブロックとを入れ替える処理が行われ、これによって削除処理が完了する。
【００３５】
以上のような処理によれば、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となる。
【００３６】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【００３７】
上記の構成によれば、データ用ブロックに対してデータの削除処理が行われると、管理情報領域に削除処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となる。
【００３８】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【００３９】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【００４０】
また、本発明に係るメモリ管理プログラムは、上記本発明に係るメモリ管理装置が備える各手段をコンピュータに実現させることを特徴としている。
【００４１】
上記プログラムをコンピュータシステムにロードすることによって、上記メモリ管理装置を実現することが可能となる。
【００４２】
また、本発明に係るＩＣカードは、上記本発明に係るメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および／または外部の装置から電力供給を行うインターフェース部とを備えていることを特徴としている。
【００４３】
上記のようなＩＣカードでは、インターフェース部を介して外部の装置から受信したデータを不揮発性メモリに書き込んだり、不揮発性メモリに記憶されているデータを消去したりする際に、何らかの原因によりパワーオフが発生することが考えられる。このような場合でも、上記の構成によれば、上記のようなメモリ管理装置によって不揮発性メモリの管理が行われるので、パワーオフによってメモリの状態が異常になったとしても、これを正常な状態に復旧することが可能となる。よって、データの正当性の保証を確実にすることができ、動作信頼性の高いＩＣカードを提供することができる。
【００４４】
【発明の実施の形態】
本発明の一実施形態について図１〜図１９に基づいて説明すれば、以下のとおりである。
【００４５】
（ＩＣカードの構成）
図１は、本実施形態に係るＩＣカード１の概略構成を示すブロック図である。同図に示すように、このＩＣカード１は、マイコン部２およびＩ／Ｆ部３を備えており、これらの構成が、例えばプラスチックなどからなるカードに埋め込まれた構成となっている。マイコン部２は、ＩＣカード１における各種情報処理を行うブロックであり、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）によって構成されている。Ｉ／Ｆ部３は、外部の装置との間でデータの送受信を行う際のインターフェース、および、外部から電力供給を受ける際のインターフェースとして機能するものである。
【００４６】
マイコン部２は、制御部４とフラッシュメモリ５とを備えた構成となっている。制御部４は、ＩＣカード１における処理動作を制御するものであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）７、およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８を備えた構成となっている。ＲＯＭ８には、制御部４が行う各種処理を実現するための各種プログラムが記憶されている。そして、このプログラムがバスを介して作業メモリとしてのＲＡＭ７に読み出され、ＣＰＵ６がプログラムを実行することによって、制御部４における処理が実現される。この制御部４が実行する処理としては、Ｉ／Ｆ部３を介して外部装置から受信したデータをフラッシュメモリ５に記録する処理、フラッシュメモリ５に記録されているデータを消去したり書き換えたりする処理などが挙げられる。
【００４７】
フラッシュメモリ５は、ＩＣカード１における不揮発性メモリとして機能するものであり、フラッシュＥＥＰＲＯＭによって構成されるものである。このフラッシュメモリ５には、ＩＣカード１において書き換えや消去が行われるべき各種データが記憶される。また、上記ＣＰＵ６によって実行されるプログラムがフラッシュメモリ５に記憶されていてもよい。なお、フラッシュメモリ５の構成の詳細については後述する。
【００４８】
Ｉ／Ｆ部３は、非接触用Ｉ／Ｆ９および接触用Ｉ／Ｆ１０を備えている。非接触用Ｉ／Ｆ９は、ＩＣカード１と外部の装置との間で非接触型データ通信および非接触型電力供給が行われる際に用いられるインターフェースである。具体的には、非接触用Ｉ／Ｆ９は、例えば電磁誘導を起動させるアンテナコイル、整流回路、変調回路、復調回路、クロック抽出回路、およびパワーオンリセット回路などによって構成される（図示せず）。このような構成により、外部から加えられた電磁波による電磁誘導によって電力を発生させるとともに、該電磁波にデータ信号が重畳されることによって、データ信号の送受信が行われる。
【００４９】
なお、本実施形態において用いられるＩＣカード１、およびこのＩＣカード１に対応した外部の装置としてのリーダライタ装置は、例えばＩＳＯ／ＩＥＣ１４４４３のｔｙｐｅＢ規格に準拠するものとしてもよい。また、非接触用Ｉ／Ｆ９は、リーダライタ装置が送信する１３．５６ＭＨｚのキャリア波を受信し、ＡＳＫ（Ａｍｐｌｉｔｕｄｅ  Ｓｈｉｆｔ  Ｋｅｙｉｎｇ）１０％振幅変調によってキャリア波に重畳されたデータを変復調するものとしてもよい。
【００５０】
一方、接触用Ｉ／Ｆ１０は、ＩＣカード１と外部の装置との間で接触型データ通信および接触型電力供給が行われる際に用いられるインターフェースである。具体的には、外部の装置との電力供給端子およびデータ信号端子と接触するための端子などによって構成される（図示せず）。
【００５１】
なお、本実施形態では、Ｉ／Ｆ部３は、非接触用Ｉ／Ｆ９および接触用Ｉ／Ｆ１０の両方を備えた構成となっているが、これに限定されるものではなく、どちらか一方のみを備えた構成であってもよい。
【００５２】
（制御部の構成）
次に、マイコン部２における、制御部４およびフラッシュメモリ５の機能的な構成について図１を参照しながら説明する。同図に示すように、制御部４は、データ用ブロック管理部４ａおよびテーブル用ブロック管理部４ｂを備えている。また、フラッシュメモリ５は、データ用ブロックＤＢ、データ書き換え用ブロックＤＢ’、テーブル用ブロックＴＢ、およびテーブル書き換え用ブロックＴＢ’を備えている。なお、フラッシュメモリ５の構成の詳細については後述する。
【００５３】
データ用ブロック管理部４ａは、データ用ブロックＤＢ、およびデータ書き換え用ブロックＤＢ’の管理を行うものである。また、テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢ、およびテーブル書き換え用ブロックＴＢ’の管理を行うものである。これらのデータ用ブロック管理部４ａおよびテーブル用ブロック管理部４ｂによる処理の詳細については後述する。
【００５４】
なお、データ用ブロック管理部４ａおよびテーブル用ブロック管理部４ｂは、上記したように、例えばＲＯＭ８に記憶されているデータ用ブロック管理プログラムおよびテーブル用ブロック管理プログラムがバスを介して作業メモリとしてのＲＡＭ７に読み出され、ＣＰＵ６がこれらのプログラムを実行することによって実現される。
【００５５】
（フラッシュメモリの構成）
次に、フラッシュメモリ５の構成に関して説明する。本実施形態に係るフラッシュメモリ５は、図３に示すように、ｎ個のブロックから構成されており、各ブロック単位で一括消去可能となっている。各ブロックは、データを格納する為に使用するデータ用ブロックＤＢ、該データを管理するためのテーブルを格納する為に使用するテーブル用ブロックＴＢ、データ用ブロックＤＢの消去、書き換え用としてのデータ書き換え用ブロックＤＢ’、およびテーブル用ブロックＴＢの消去、書き換え用としてのテーブル書き換え用ブロックＴＢ’のいずれかに割り当てられる。
【００５６】
テーブル用ブロックＴＢは、フラッシュメモリ５内のブロックのうち少なくとも１つのブロックであればよい。また、データ書き換え用ブロックＤＢ’およびテーブル書き換え用ブロックＴＢ’は、それぞれ１つのブロックに割り当てられていればよく、また、後述するデータ部あるいはテーブル部に何も書き込みがされていないブロックであればよい。
【００５７】
図４（ａ）および図４（ｂ）は、それぞれデータ用ブロックＤＢおよびテーブル用ブロックＴＢの概略構成を示している。データ用ブロックＤＢは、同図（ａ）に示すように、当該データ用ブロックＤＢの中に格納しているデータに関する情報を管理するための管理情報領域ＤＢ１、およびデータを格納するための領域であるデータ領域ＤＢ２から構成されている。また、テーブル用ブロックＴＢは、同図（ｂ）に示すように、当該テーブル用ブロックＴＢのブロック情報を管理するための管理情報領域ＴＢ１、およびテーブルを格納するための領域であるテーブル領域ＴＢ２から構成されている。なお、データ書き換え用ブロックＤＢ’は、データ用ブロックＤＢと同じ構成となっており、テーブル書き換え用ブロックＴＢ’は、テーブル用ブロックＴＢと同じ構成となっている。
【００５８】
データ用ブロックＤＢおよびデータ書き換え用ブロックＤＢ’における管理情報領域ＤＢ１は、図５に示すように、論理番号Ａ部ＤＢ１１、論理番号Ｂ部ＤＢ１２、退避ステータス部ＤＢ１３、退避元実アドレス部ＤＢ１４、退避準備ステータス部ＤＢ１５、退避先論理番号部ＤＢ１６、退避先実アドレスＤＢ１７、および有効マップ部ＤＢ１８を備えている。また、テーブル用ブロックＴＢおよびテーブル書き換え用ブロックＴＢ’における管理情報領域ＴＢ１は、図６に示すように、論理番号Ａ部ＴＢ１１、論理番号Ｂ部ＴＢ１２、退避ステータス部ＴＢ１３、退避元実アドレス部ＴＢ１４、退避準備ステータス部ＴＢ１５、退避先論理番号部ＴＢ１６、および退避先実アドレスＴＢ１７を備えている。
【００５９】
論理番号Ａ部ＤＢ１１・ＴＢ１１および論理番号Ｂ部ＤＢ１２・ＴＢ１２は、それぞれ論理番号Ａおよび論理番号Ｂを格納するための領域である。論理番号とは、一括消去単位である各ブロックに割り付けた番号である。例えば、各ブロックの論理番号Ａ部ＤＢ１１・ＴＢ１１にそれぞれ１〜ｎまでの値を書き込んでおく場合、その値が該ブロックの論理番号となる。なお、論理番号Ｂ部ＤＢ１２・ＴＢ１２に論理番号が割り振られている場合は、その値が該当ブロックの論理番号となる。また、論理番号Ｂ部ＤＢ１２・ＴＢ１２に論理番号が割り振られていない場合は、論理番号Ａ部ＤＢ１１・ＴＢ１１に割り振られた論理番号が該当ブロックの論理番号となるものとする。
【００６０】
退避ステータス部ＤＢ１３は、データ書き換え用ブロックＤＢ’において、データの削除処理や上書き処理を行う際の退避処理の進行状況を示す情報を格納する領域である。同様に、退避ステータス部ＴＢ１３は、テーブル書き換え用ブロックＴＢ’において、データの削除処理や上書き処理を行う際の退避処理の進行状況を示す情報を格納する領域である。具体的には、退避ステータス部ＤＢ１３・ＴＢ１３には、退避処理が開始されているか、消去処理が行われているか、または退避処理が完了しているかを示すステータスが格納される。なお、退避処理の詳細については後述する。
【００６１】
退避準備ステータス部ＤＢ１５は、データ用ブロックＤＢにおいて、データの削除処理や上書き処理を行う際の退避準備処理の進行状況を示す情報を格納する領域である。同様に、退避準備ステータス部ＴＢ１５は、テーブル用ブロックＴＢにおいて、データの削除処理や上書き処理を行う際の退避準備処理の進行状況を示す情報を格納する領域である。具体的には、退避準備ステータス部ＤＢ１５・ＴＢ１５には、退避準備処理が開始されているか、または退避準備処理が完了しているかを示すステータスが格納される。なお、退避準備処理の詳細については後述する。
【００６２】
退避元実アドレス部ＤＢ１４は、データ書き換え用ブロックＤＢ’において、退避処理が行われたデータのデータ用ブロックＤＢ中におけるアドレスを示す情報を格納する領域である。同様に、退避元実アドレス部ＴＢ１４は、テーブル書き換え用ブロックＴＢ’において、退避処理が行われたテーブルのテーブル用ブロックＴＢ中におけるアドレスを示す情報を格納する領域である。
【００６３】
退避先論理番号部ＤＢ１６は、データ用ブロックにおいて、退避処理が行われたデータのデータ書き換え用ブロックＤＢ’の論理番号を格納する領域である。同様に、退避先論理番号部ＴＢ１６は、テーブル用ブロックにおいて、退避処理が行われたテーブルのテーブル書き換え用ブロックＴＢ’の論理番号を格納する領域である。
【００６４】
退避先実アドレス部ＤＢ１７は、データ用ブロックＤＢにおいて、退避処理が行われたデータのデータ書き換え用ブロックＤＢ’中におけるアドレスを格納する領域である。同様に、退避先実アドレス部ＴＢ１７は、テーブル用ブロックＴＢにおいて、退避処理が行われたテーブルのテーブル書き換え用ブロックＴＢ’中におけるアドレスを格納する領域である。
【００６５】
また、有効マップ部ＤＢ１８は、データ領域ＤＢ２において、有効なデータが記録されている領域を示す情報を格納している。具体的には、有効マップ部ＤＢ１８における各ビットがデータ領域ＤＢ２の最小書き込みサイズに対応している。データを書き込む領域が確保された場合には、その対応したビットが０となる。つまり、図８に示すように、データ領域ＤＢ２において、確保されているデータ書き込み領域が管理情報領域に近くなるにつれて有効マップの上位アドレスに対応するようになっている。なお、フラッシュメモリは、１を０に書き換えることは可能であるが、０を１に書き換えることができない。そこで、確保されたデータ領域の位置を示すために、有効マップを１から０に書き換えるのである。
【００６６】
例えば、データ書き込み用に確保されたデータ部分領域Ａおよびデータ部分領域ＢがＤＢにおいて確保されていたとする。そして、データ部分領域Ｂは、データ部分領域Ａの２倍の領域を確保しており、データ部分領域Ａよりも管理情報領域に近い位置にあるものとする。この場合、有効マップにおいて、データ部分領域Ａに対応するビットは、データ部分領域Ｂに対応するビットよりも下位になる。また、データ部分領域Ｂは、データ部分領域Ａの２倍の領域を確保しているので２ビット分が０となる。したがって、有効マップを検査することにより、各データブロックＤＢの空き領域を計算することができる。
【００６７】
なお、ＤＢのデータ領域ＤＢ２は、書き込む最小サイズ毎に分割されるものとする。例えば、上記データ領域ＤＢ２において最小書き込みサイズが１２８バイトの場合、３００バイトのデータを書き込むとき、そのデータの領域は、１２８バイトの倍数である３８４バイトとなる。
【００６８】
次に、テーブルの構成について図７を参照しながら説明する。同図に示すように、テーブルは、該テーブルのステータスを格納するためのステータス部Ｔ１、データ用ブロックＤＢに格納しているデータのアドレスを記憶する領域であるアドレス部Ｔ２、データを格納しているデータ用ブロックＤＢの論理番号を記憶する領域である論理番号部Ｔ３、データのサイズを記憶する領域であるサイズ部Ｔ４、および、データに関する情報を格納する領域であるデータ情報部Ｔ５から構成されている。
【００６９】
また、データ用ブロックＤＢにデータを記録する場合、テーブル用ブロックＴＢのテーブルには、記録されるデータに関する管理情報が必ず記録される。テーブルのサイズ部Ｔ４に書き込まれる値は、データ用ブロックＤＢにおけるデータ領域ＤＢ２の最小書き込みサイズの整数倍となる。例えば、データ用ブロックＤＢのデータ領域ＤＢ２の最小書き込みサイズが１２８バイトの場合、データ領域ＤＢ２に３００バイトのデータを書き込むとき、テーブルのサイズ部Ｔ４に書き込まれるデータのサイズは、３００バイトではなく、１２８バイトの整数倍（３倍）である３８４バイトとなる。
【００７０】
図９は、テーブルのステータス部Ｔ１に格納されるステータスの種類を示している。テーブルのステータス部Ｔ１に格納されるステータスとしては、テーブル書き込み開始を示すステータスＡ、テーブル書き込み完了を示すステータスＢ、データ書き込み完了を示すステータスＣ、および、削除中を示すステータスＤの４種類が挙げられる。
【００７１】
図１０は、テーブル用ブロックＴＢ、あるいは、データ用ブロックＤＢの管理情報領域ＴＢ１・ＤＢ１の退避準備ステータス部ＴＢ１５あるいはＤＢ１５に格納されるステータスの種類を示している。退避準備ステータス部ＴＢ１５・ＤＢ１５に格納されるステータスとしては、退避準備開始を示すステータスＥ、退避準備完了を示すステータスＦの２種類が挙げられる。
【００７２】
図１１は、テーブル書き換え用ブロックＴＢ’あるいはデータ書き換え用ブロックＤＢ’の管理情報領域ＴＢ１・ＤＢ１の退避ステータス部ＴＢ１３あるいはＤＢ１３に格納されるステータスを示している。退避ステータス部ＴＢ１３・ＤＢ１３に格納されるステータスとしては、退避開始を示すステータスＧ、消去中を示すステータスＨ、退避完了を示すステータスＩの３種類が挙げられる。
【００７３】
ここで、テーブルのステータス部Ｔ１、退避準備ステータス部ＴＢ１５・ＤＢ１５、および、退避ステータス部ＴＢ１３・ＤＢ１３におけるステータスの表現形式について説明する。なお、以下では、ステータス部Ｔ１について説明するが、退避準備ステータス部ＴＢ１５・ＤＢ１５、および、退避ステータス部ＴＢ１３・ＤＢ１３においても同様に考えればよい。
【００７４】
図９に示すように、本実施形態では、ステータスＡに対応する値としてＦＥｈ、ステータスＢに対応する値としてＦＣｈ、ステータスＣに対応する値としてＦ８ｈ、およびステータスＤに対応する値としてＥＣｈがステータス部Ｔ１に格納されるようになっている。これらの値は、次のような理由によって設定されている。
【００７５】
まず、ステータス部Ｔ１に値が設定されていない場合には、ＦＦｈが格納されていることになる。これは、２進数のビットで表すと‘１１１１１１１１’となる。この状態からステータスＡに移行すると、ステータス部Ｔ１にはＦＥｈが格納される。これを２進数のビットで表すと‘１１１１１１１０’となる。さらにこの状態からステータスＢに移行すると、ステータス部Ｔ１にはＦＣｈが格納される。これを２進数のビットで表すと‘１１１１１１００’となる。さらにこの状態からステータスＣに移行すると、ステータス部Ｔ１にはＦ８ｈが格納される。これを２進数のビットで表すと‘１１１１１０００’となる。さらにこの状態からステータスＤに移行すると、ステータス部Ｔ１にはＥ８ｈが格納される。これを２進数のビットで表すと‘１１１０１０００’となる。
【００７６】
以上のように、ステータス部Ｔ１において、値が設定されていない状態から、ステータスＡ、ステータスＢ、ステータスＣに順にステータスが移行する場合、１ビットずつ１から０に書き換えていくことになる。このように、ステータスの書き換えが１ビットずつ行われることによって、パワーオフなどが発生しても、ステータスに異常が発生することを防止することができる。これは以下のような理由による。
【００７７】
例えば、ステータスのメモリ状態がＦＦｈ（‘１１１１１１１１’）である状態から００ｈ（‘００００００００’）に変更する場合には、複数（この場合は８個）のビットを変更することになる。この書き換え中にパワーオフが発生し、書き換えが中断されると、変更対象となっているビットが全て不定となり、メモリ状態は複数の状態のいずれかになる可能性がある。これに対して、上記のように、ステータスを変更する際には、メモリ状態を１ビットだけ変更すればよいようにしておけば、書き換えが中断されたとしても、メモリ状態は書き換え前の状態か書き換え後の状態のいずれかであることになる。よって、ステータスに異常が発生することがなくなる。
【００７８】
（データの読み出し処理）
ここで、制御部４によってデータの読み出し処理が行われる場合について説明する。制御部４がフラッシュメモリ５に格納されているデータの読み出し処理を行う場合、まず、テーブル用ブロック管理部４ｂが、フラッシュメモリ５のテーブル用ブロックＴＢにアクセスする。そして、要求するデータの情報に基づいて、テーブル用ブロックＴＢの管理情報領域部ＴＢ１の論理番号Ａ部ＴＢ１１または論理番号Ｂ部ＴＢ１２を参照することによって、テーブル用ブロックＴＢの中から要求するデータを管理しているテーブルを検索する。次に該データを管理しているテーブルにアクセスできたら、テーブルの論理番号部Ｔ３を参照して、データ用ブロック管理部４ａが、記憶されている論理番号に対応するデータ用ブロックＤＢを検索する。要求するデータが格納されているデータ用ブロックＤＢを特定した後、データ用ブロック管理部４ａは、テーブルのアドレス部Ｔ２に記憶されている、要求するデータの格納先アドレスの値に基づいて、データ用ブロックＤＢの中に格納されているデータにアクセスすることができる。
【００７９】
上記した操作をより具体的にするために、再度図８を参照して説明する。一例として、データ用ブロックＤＢのデータ領域ＤＢ２に格納しているデータへのアクセスが行われる場合を想定する。まず、要求するデータについての情報に基づいて、要求するデータを管理しているテーブルを記憶しているテーブル用ブロックＴＢに対してテーブル用ブロック管理部４ｂがアクセスする。そして、テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢの管理情報領域ＴＢ１にある論理番号Ａ部ＴＢ１１または論理番号Ｂ部ＴＢ１２を参照することによって、テーブル用ブロックＴＢの中から該当テーブルを特定する。
【００８０】
次に、テーブルの論理番号部Ｔ３を参照することによって、データ用ブロック管理部４ａは、該論理番号に対応するデータ用ブロックＤＢ、すなわち要求するデータが格納されているデータ領域ＤＢ２を含むデータ用ブロックＤＢを検索し、特定する。そして、テーブルのアドレス部Ｔ２に記憶されているデータ領域ＤＢ２の格納先アドレスの値に基づいて、データ用ブロック管理部４ａは、データ用ブロックＤＢのデータ領域ＤＢ２中におけるデータにアクセスすることができる。
【００８１】
（データ書き込み処理の流れ）
次に、図１２および図１３を参照して、データの書き込み要求がある場合の処理と、その処理の流れに対応する各ステータスの状態遷移および有効マップの状態遷移についてより具体的に説明する。
【００８２】
まず、データの書き込み要求がなされた場合、テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢの管理情報領域ＴＢ１およびデータ用ブロックＤＢの管理情報領域ＤＢ１にアクセスして、テーブル領域ＴＢ２の空き領域およびデータ領域ＤＢ２の空き領域とを調べる（ステップ１、以降、Ｓ１のように称する）。
【００８３】
次に、検索によって見つけられたテーブル領域ＴＢ２の空き領域にテーブルが確保され、テーブル用ブロック管理部４ｂは、該テーブルのステータス部Ｔ１にステータスＡを書き込む（Ｓ２）。これにより、テーブルのステータス部Ｔ１を確認することによって、テーブル領域ＴＢ２の空き領域とデータ領域ＤＢ２の空き領域とを調べる処理が完了し、テーブルに対して書き込みが開始されたことが分かる。なお、Ｓ２における各ステータスおよび有効マップの状態は、図１３に示す状態Ｊ１である。
【００８４】
次いで、テーブル用ブロック管理部４ｂは、Ｓ１にて検索した、データ用ブロックＤＢに空き領域があるブロックの論理番号、書き込み先として確保したデータ領域ＤＢ１における書き込み開始アドレス（オフセットアドレス）、および書き込むデータのサイズを上記テーブルに書き込む。また、必要に応じて、書き込むデータの情報もテーブルに書き込んでもよい（Ｓ３）。
【００８５】
Ｓ３にて、書き込み要求がなされたデータ（以下書き込みデータと称す）の管理情報に関するそれぞれの情報がテーブルに書き込まれた後、テーブル用ブロック管理部４ｂは、テーブルにおけるステータス部Ｔ１のステータスをステータスＡからステータスＢに書き換える（Ｓ４）。これにより、テーブルのステータス部Ｔ１を確認することによって、テーブルにデータの管理情報を書き込む処理が完了したことが判定できる。また、データの管理情報をテーブルに書き込む最中にパワーオフが発生した場合、この書き込み処理が異常終了していないかを判断することも可能となる。なお、この時点において、各ステータスおよび有効マップの状態は、図１３に示す状態Ｊ２となる。
【００８６】
Ｓ５にて、データ用ブロック管理部４ａは、データ用ブロックＤＢの管理情報領域ＤＢ１にある有効マップにおいて、データを書き込む領域のアドレスに対応する位置のビットを０にする。ここで、テーブルのサイズ部Ｔ４に記憶されているデータのサイズに基づいて０にするビットの数が決定される。つまり、書き込むデータサイズが、最小書き込みサイズの２倍のサイズに相当する場合は、２ビット分を０とする。この場合の各ステータスおよび有効マップの状態は、図１３に示す状態Ｊ３となる。
【００８７】
有効マップのビットを０にした後、データを書き込むために確保したデータ領域ＤＢ２に、データ用ブロック管理部４ａはデータを書き込む（Ｓ６）。書き込み処理が完了すると、テーブル用ブロック管理部４ａは、テーブルのステータス部Ｔ１のステータスを、ステータスＢからステータスＣに書き換える（Ｓ７）。したがって、テーブルのステータス部Ｔ１のステータスがステータスＣであることから、データの書き込み処理が完了したことを判定できる。なお、この場合における各ステータスおよび有効マップの状態は、図１３に示す状態Ｊ４となる。
【００８８】
上記したように、データの書き込み処理時に、例えばパワーオフが発生するなどによってフラッシュメモリ５における記憶状態が異常になっているかどうかの判定は、テーブルのステータスおよび有効マップの状態から判断することができる。例えば、テーブルのステータスがＡである場合は、状態Ｊ１で処理が止まっていることがわかる。また、テーブルのステータスがＢであり、かつ論理番号およびアドレスから割り出される有効マップのビットが０でない場合は、状態Ｊ２で処理が止まっていることがわかる。さらに、テーブルのステータスがＢであり、かつ上記有効マップのビットが０である場合は、状態Ｊ３で処理が止まっていることがわかる。そして、テーブルのステータスがＣである場合は、状態Ｊ４であり、データの書き込み処理時に異常が発生せず、無事に処理が完了したものと判断できる。
【００８９】
（データの上書き処理の流れ）
次に、図１４および図１５を参照しながら、データの上書き処理の流れについて説明する。図１４は、上書き処理の流れを示すフローチャートであり、図１５は、上書き処理中の各ステータスおよび有効マップの状態を示す。
【００９０】
データの上書き処理の要求があった場合、データ用ブロック管理部４ａは、上書きする前のデータを一旦退避させておくための領域として、フラッシュメモリ５の中からデータ書き換え用ブロックＤＢ’を検索する（Ｓ１１）。
【００９１】
次に、データ用ブロック管理部４ａは、上書きされるデータが格納されているデータ用ブロックＤＢの退避準備ステータス部ＤＢ１５にステータスＥを書き込む（Ｓ１２）。この時点での各ステータスおよび有効マップの状態は図１５の状態Ｊ１１である。このように、退避準備ステータス部ＤＢ１５にステータスＥが書き込まれることによって、データ用ブロックＤＢの上書きする前のデータを退避するためのデータ書き換え用ブロックＤＢ’を確保している状態であることが分かる。言い換えれば、データ用ブロックＤＢに記録されているデータに対して上書き処理を開始するための準備がなされている状態であることを示すことができる。
【００９２】
データ用ブロックＤＢの退避準備ステータス部ＤＢ１５にステータスＥが書き込まれた後、データ用ブロックＤＢの退避先論理番号部ＤＢ１６に、データの退避先であるデータ書き換え用ブロックＤＢ’の論理番号が書き込まれる。また同時に、データ用ブロックＤＢの退避先実アドレス部に、データ書き換え用ブロックＤＢ’の実アドレスが書き込まれる。このことによって、データ用ブロックＤＢからどのデータ書き換え用ブロックＤＢ’にデータが移動するのかを確認することが可能となる（Ｓ１３）。
【００９３】
退避先であるデータ書き換え用ブロックＤＢ’の論理番号および実アドレスの書き込みが完了したことが確認されると、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５にステータスＦが書き込まれる（Ｓ１４）。この時点での各ステータスおよび有効マップの状態は、図１５に示す状態Ｊ１２となる。このように、退避準備ステータス部ＤＢ１５にステータスＦを書き込むことによって、データの上書き処理は、退避先であるデータ書き換え用ブロックＤＢ’の論理番号および実アドレスの書き込みまでの処理が完了したことを確認することが可能となる。
【００９４】
次に、データ用ブロック管理部４ａは、データ用ブロックＤＢのデータの退避先であるデータ書き換え用ブロックＤＢ’の論理番号Ｂ部ＤＢ１２に、データ用ブロックＤＢの論理番号を書き込む（Ｓ１５）。このことによって、退避されてきたデータがどのデータ用ブロックＤＢから送信されてきたものかを確認することが可能となる。
【００９５】
データ用ブロック管理部４ａが、データ書き換え用ブロックＤＢ’の論理番号Ｂ部ＤＢ１２にデータ用ブロックＤＢの論理番号が正常に書き込まれたことを確認すると、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３にステータスＧを書き込む（Ｓ１６）。この時点での、各ステータスおよび有効マップの状態は図１５に示す状態Ｊ１３となる。このように、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３にステータスＧが書き込まれることによって、データ書き換え用ブロックＤＢ’の論理番号Ｂ部ＤＢ１２にデータ用ブロックＤＢの論理番号が正常に書き込まれている状態にあることを確認することが可能となる。
【００９６】
次に、データ用ブロック管理部４ａは、データ用ブロックＤＢの中にある上書きする前の有効データのうち、上書き対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを、データ用ブロックＤＢからデータ書き換え用ブロックＤＢ’へコピーするように指令を発行する。そして、新たに上書きするデータをデータ書き換え用ブロックＤＢ’の上書き対象となるデータ部分領域に書き込む（Ｓ１７）。
【００９７】
次に、データ用ブロック管理部４ａは、Ｓ１７における処理が正常に行われたことを確認し、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３にステータスＨを書き込む（Ｓ１８）。なお、この時点での各ステータスおよび有効マップの状態は、図１５に示す状態Ｊ１４となる。
【００９８】
次に、データ書き換え用ブロックＤＢ’においてデータの上書き処理が完了した後、データ用ブロック管理部４ａは、データ用ブロックＤＢの中の上書きする前のデータを一括消去する（Ｓ１９）。データ書き換え用ブロックＤＢ’からデータ用ブロックＤＢへの上書きデータのコピーが完了した後、データ用ブロック管理部４ａは、データ用ブロックＤＢの論理番号Ａ部ＤＢ１１にデータ書き換え用ブロックＤＢ’の論理番号Ａ部に記憶されている論理番号を書き込む（Ｓ２０）。以上の処理によって、上書き処理前のデータ書き換え用ブロックＤＢ’が、上書き処理後にはデータ用ブロックＤＢとなる。
【００９９】
次に、データ用ブロック管理部４ａは、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３にステータスＩを書き込み、データの上書き処理が完了する（Ｓ２１）。つまりデータ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３にステータスＩが書き込まれることによって、退避先であるデータ書き換え用ブロックＤＢ’から退避元であるデータ用ブロックＤＢに、上書きデータのコピーが終了したことを判定できる。同時に、データの上書き処理のためのシーケンスが完了したことを判定できる。また、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５のステータスが消去される。なお、この場合における各ステータスおよび有効マップの状態は、図１５に示す状態Ｊ１５となる。
【０１００】
以上のようなステップによる上書き処理によれば、各ステータスの状態から処理が正常に行われたか判定できる。つまり、パワーオフによってフラッシュメモリの状態が異常になっているかどうかの判定は、データ用ブロックＤＢおよびデータ書き換え用ブロックＤＢ’のステータスを検査することにより判断できる。具体的には、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５がステータスＥである場合は、状態Ｊ１１で処理が止まっていることがわかる。データ用ブロックＤＢの退避準備ステータス部ＤＢ１５がステータスＦでありかつデータ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３に値が書き込まれていない場合は、状態Ｊ１２で処理が止まっていることがわかる。
【０１０１】
データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３がステータスＧの場合は、状態Ｊ１３で処理が止まっていることがわかる。データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３がステータスＨの場合は、状態Ｊ１４で処理が止まっていることがわかる。データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３がステータスＩの場合は、状態Ｊ１５であり、データの上書き処理時に異常が発生せず無事に処理が完了したものと判断できる。
【０１０２】
（データの削除処理の流れ）
次に、図１６〜図１８を参照しながら、データの削除処理の流れについて説明する。図１６および図１７は、削除処理の流れを示すフローチャートであり、図１８は、削除処理中の各ステータスおよび有効マップの状態を示す。なお、図１６は、Ｓ３１からＳ４３までの処理を示しており、図１７は、Ｓ４４からＳ５７までの処理を示しており、Ｓ４３に引き続いてＳ４４が行われる。
【０１０３】
まず、テーブル用ブロック管理部４ｂは、削除するデータに対応するテーブルのステータス部Ｔ１にステータスＤを書き込むように指令を発行する（Ｓ３１）。このように、テーブルのステータス部Ｔ１にステータスＤを書き込むことによって、データの削除についての処理が開始されたことが分かる。なお、この時点での各ステータスの状態は図１８の状態Ｊ２１となる。
【０１０４】
次に、テーブル用ブロック管理部４ｂは、フラッシュメモリ５の中からテーブル書き換え用ブロックＴＢ’を検索する（Ｓ３２）。つまり、削除するデータの管理情報であるテーブルデータを退避させる領域を確保するために、フラッシュメモリ５の記憶領域の中からテーブル書き換え用ＴＢ’が検索される。
【０１０５】
テーブル書き換え用ブロックＴＢ’の検索が完了すると、制テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５にステータスＥを書き込む（Ｓ３３）。これにより、制御部は、削除処理時において、テーブル書き換え用ブロックＴＢ‘の検索処理までが終了していることが判定できる。なお、この時点での各ステータスの状態は図１８の状態Ｊ２２となる。
【０１０６】
次に、テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢの退避先論理番号部ＴＢ１６にテーブル書き換え用ブロックＴＢ‘の論理番号を書き込み、退避先実アドレス部ＴＢ１７に、テーブルデータの退避先となる、テーブル書き換え用ブロックＴＢ‘のデータ領域の実アドレスを書き込む（Ｓ３４）。したがって、テーブル用ブロックＴＢの退避先論理番号部ＴＢ１６を参照することによって、テーブルデータの退避先であるテーブル書き換え用ブロックＴＢ‘を特定することが可能となる。またテーブル用ブロックＴＢの退避先実アドレスＴＢ１７によって、テーブル書き換え用ブロックＴＢ‘の中のテーブルデータが格納されている場所を特定することが可能となる。
【０１０７】
次にテーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５にステータスＦを書き込む（Ｓ３５）。この時点での各ステータスおよび有効マップの状態は、図１８の状態Ｊ２３となる。
【０１０８】
次に、データ用ブロック管理部４ａは、削除するデータをデータ用ブロックＤＢから退避させておくための領域を確保するために、データ書き換え用ブロックＤＢ’を検索する（Ｓ３６）。そして、データ書き換え用ブロックＤＢ’の検索が完了すると、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５にステータスＥが書き込まれる（Ｓ３７）。したがって、退避準備ステータス部ＤＢ１５のステータスがステータスＥであることから、データ書き換え用ブロックＤＢ’の検索が完了したことが判定可能となる。なお、この時点での、各ステータスおよび有効マップの状態は、図１８の状態Ｊ２４となる。
【０１０９】
次に、データ用ブロックＤＢの退避先論理番号部ＤＢ１６にデータ書き換え用ブロックＤＢ’の論理番号が書き込まれ、退避先実アドレス部ＤＢ１７にデータ書き換え用ブロックＤＢ’の実アドレスが書き込まれる（Ｓ３８）。したがって、データ用ブロックＤＢの退避先論理番号部ＤＢ１６を参照することによって、テーブルデータの退避先であるデータ書き換え用ブロックＤＢ’が特定できる。またデータ用ブロックＤＢの退避先実アドレス部ＤＢ１７を参照することによって、データ書き換え用ブロックＤＢ’の中のテーブルデータが格納されている場所が特定できる。
【０１１０】
その後、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５にステータスＦが書き込まれる（Ｓ３９）。これにより、データ用ブロックＤＢの退避準備が完了したことを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ２５となる。また、テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３にステータスＧが書き込まれる（Ｓ４０）。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ２６となる。
【０１１１】
次に、テーブル用ブロック管理部４ｂは、テーブル書き換え用ブロックＴＢ’の論理番号Ｂ部ＴＢ１２にテーブル用ブロックＴＢの論理番号を書き込むとともに、退避元実アドレス部ＴＢ１４にテーブル用ブロックＴＢの実アドレスを書き込む（Ｓ４１）。したがって、テーブル書き換え用ブロックＴＢ’の論理番号Ｂ部ＴＢ１２および退避元実アドレス部ＴＢ１４を参照することによって、退避されてきたデータがどのテーブル用ブロックＴＢのどの場所から送信されてきたものかを確認することが可能となる。
【０１１２】
次に、データ用ブロック管理部４ａは、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１５にステータスＧを書き込む（Ｓ４２）。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ２７となる。
【０１１３】
次に、データ用ブロック管理部４ａは、データ書き換え用ブロックＤＢ’の論理番号Ｂ部ＤＢ１２にデータ用ブロックＤＢの論理番号を書き込むとともに、退避元実アドレス部ＤＢ１４にデータ用ブロックＤＢの実アドレスを書き込む（Ｓ４３）。これにより、データ書き換え用ブロックＤＢ’の論理番号Ｂ部ＤＢ１２および退避元実アドレス部ＤＢ１４を参照することによって、退避されてきたデータがどのデータ用ブロックＤＢのどの場所から送信されてきたものかを確認することが可能となる。
【０１１４】
次に、テーブル用ブロック管理部４ｂは、テーブル用ブロックＴＢに存在するテーブルの論理番号部Ｔ３を検査する（Ｓ４４）。この検査は、テーブル用ブロックＴＢの先頭にあるテーブルから１つずつ行われる。そして、Ｓ４５において、そのテーブルのテーブルステータスがＤ、すなわち、削除中であるかどうかの判定がされる。Ｓ４５において、ＹＥＳである場合は、Ｓ４８へ進む。一方、Ｓ４５においてＮＯの場合は、Ｓ４６において、その論理番号が、削除対象のデータがあるデータ用ブロックＤＢの論理番号と一致するか否かが判定される。
【０１１５】
Ｓ４６においてＮＯ、すなわち、検査対象となっているテーブルの論理番号と、削除対象のデータがあるデータ用ブロックＤＢの論理番号とが異なる場合は、Ｓ４８へ進み、そのテーブルがテーブル用ブロックＴＢからテーブル書き換え用ブロックＴＢ’の空き領域の先頭へコピーされる。
【０１１６】
一方、Ｓ４６においてＹＥＳ、すなわち、検査対象となっているテーブルの論理番号と、削除対象のデータがあるデータ用ブロックＤＢの論理番号とが一致する場合は、Ｓ４７へ進み、そのテーブルのアドレス部Ｔ２からアドレス、サイズ部Ｔ４からサイズが読み出され、該当データがデータ書き換え用ブロックＤＢ’の空き領域の先頭へコピーされる。この際に、データ書き換え用ブロックＤＢ’の有効マップも更新される。次に、テーブル用ブロック管理部４ｂは、テーブルをテーブル用ブロックＴＢからテーブル書き換え用ブロックＴＢ’の空き領域の先頭へコピーすることになるが、ここで、先にコピーしたデータの書き込みアドレスを、テーブルのアドレス部Ｔ２へ書き込むようにする。ここで、論理番号部Ｔ３は変わらない。
【０１１７】
Ｓ４７あるいはＳ４８の処理が終了すると、Ｓ４９へ進み、テーブル用ブロックＴＢにおける次のテーブルを検査し、テーブルデータが存在する場合（Ｓ５０においてＮＯ）は、再度、Ｓ４５からの処理が繰り返される。
【０１１８】
一方、次のテーブルデータが存在しない場合（Ｓ５０においてＹＥＳ）は、Ｓ５１へ進み、データ書き換え用ブロックＤＢ’の退避ステータスＤＢ１３にステータスＨが書き込まれる。これにより、データ書き換え用ブロックＤＢ’に対してデータ用ブロックＤＢからデータの退避が行われていることを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ２８となる。
【０１１９】
次に、Ｓ５２において、テーブル用ブロック管理部４ａは、テーブル書き換え用ブロックＴＢ’の退避ステータスＴＢ１３にステータスＨを書き込む。これにより、テーブル書き換え用ブロックＴＢ’に対してテーブル用ブロックＴＢからデータの退避が行われていること確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図１７の状態Ｊ２９となる。
【０１２０】
次に、Ｓ５３においてデータ用ブロックＤＢが消去され、Ｓ５４において、データ用ブロックＤＢの論理番号Ａ部ＤＢ１１にデータ書き換え用ブロックＤＢ’の論理番号Ａ部に記憶されている論理番号が書き込まれる。以上の処理によって、削除処理前のデータ書き換え用ブロックＤＢ’が、削除処理後にはデータ用ブロックＤＢとなる。
【０１２１】
その後、Ｓ５５において、データ書き換え用ブロックＤＢ’の退避ステータスにステータスＩが書き込まれる。これにより、データ書き換え用ブロックＤＢ’に対してデータ用ブロックＤＢからデータの退避が行われ、かつ、データ用ブロックＤＢにおけるデータの削除が行われていることを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ３０となる。
【０１２２】
次に、Ｓ５６において、テーブル用ブロックＴＢが消去され、Ｓ５７において、テーブル用ブロックＴＢの論理番号Ａ部ＴＢ１１に、テーブル書き換え用ブロックＴＢ’の論理番号Ａ部に記憶されている論理番号が書き込まれる。以上の処理によって、削除処理前のテーブル書き換え用ブロックＴＢ’が、削除処理後にはテーブル用ブロックＴＢとなる。
【０１２３】
Ｓ５８において、テーブル書き換え用ブロックＴＢ’の退避ステータスＴＢ１３にステータスＩが書き込まれ、データの削除処理が完了する。この時点で、各ステータスおよび有効マップの状態は、図１８の状態Ｊ３１となる。
【０１２４】
データの削除処理中にパワーオフが発生した際に、フラッシュメモリ５における記憶状態が異常になっているかどうかの判定は、テーブルのステータス、および、テーブル用ブロックＴＢ、テーブル書き換え用ブロックＴＢ’、データ用ブロックＤＢ、およびデータ書き換え用ブロックＤＢ’のステータスを検査することによって判断することが可能である。具体的には、次のようにして判断される。
【０１２５】
テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢ、テーブル書き換え用ブロックＴＢ’、データ用ブロックＤＢ、およびデータ書き換え用ブロックＤＢ’のステータスに何も書かれていない場合は、状態Ｊ２１で処理が止まっていることがわかる。テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５がステータスＥとなっており、他のステータスに何も書かれていない場合は、状態Ｊ２２で処理が止まっていることがわかる。テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５がステータスＦとなっており、他のステータスに何も書かれていない場合は、状態Ｊ２３で処理が止まっていることがわかる。
【０１２６】
テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５がステータスＦとなっており、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５がステータスＥとなっており、他のステータスに何も書かれていない場合は、状態Ｊ２４で処理が止まっていることがわかる。テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５がステータスＦとなっており、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５がステータスＦとなっており、他のステータスに何も書かれていない場合は、状態Ｊ２５で処理が止まっていることがわかる。テーブルのステータス部Ｔ１がステータスＤとなっており、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５がステータスＦとなっており、テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３がステータスＧとなっており、データ用ブロックＤＢの退避準備ステータス部ＤＢ１５がステータスＦとなっており、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３に何も書かれていない場合は、状態Ｊ２６で処理が止まっていることがわかる。
【０１２７】
テーブルのステータスＴ１がステータスＤとなっており、テーブル書き換え用ブロックＴＢ’およびデータ書き換え用ブロックＤＢ’の退避ステータス部ＴＢ１３・ＤＢ１３がともにステータスＧとなっている場合は、状態Ｊ２７で処理が止まっていることがわかる。テーブルのステータスＴ１がＤとなっており、テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３がステータスＧとなっており、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３がステータスＨとなっている場合は、状態Ｊ２８で処理が止まっていることがわかる。
【０１２８】
テーブルのステータスＴ１がステータスＤとなっており、テーブル書き換え用ブロックＴＢ’およびデータ書き換え用ブロックＤＢ’の退避ステータス部ＴＢ１３・ＤＢ１３がともにステータスＨとなっている場合は、状態Ｊ２９で処理が止まっていることがわかる。テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３がステータスＨで、データ書き換え用ブロックＤＢ’の退避ステータス部ＤＢ１３がステータスＩの場合は、状態Ｊ３０で処理が止まっていることがわかる。そして、テーブル書き換え用ブロックＴＢ’およびデータ書き換え用ブロックＤＢ’の退避ステータス部ＴＢ１３・ＤＢ１３がともにステータスＩとなっている場合は、パワーオフによるフラッシュメモリ５の記憶状態異常が生じていないと判断することができる。
【０１２９】
（データ復旧処理）
次に、各処理中にパワーオフが発生し、フラッシュメモリ５の記憶状態に電源断異常が発生した場合の復旧処理について、図１９および図２０を参照しながら説明する。図１９は、図１３に示した状態Ｊ１および状態Ｊ２となっている場合の復旧処理の流れを示すフローチャートであり、図２０は、その復旧処理中にパワーロスが発生した場合の各ステータスの状態を示している。なお、状態Ｊ１は、検索によって見つけられたテーブル領域ＴＢ２の空き領域にテーブルが確保された状態で処理が止まっている状態であり、状態Ｊ２は、書き込みデータの管理情報に関するそれぞれの情報がテーブルに書き込まれた状態で処理が止まっている状態である。すなわち、状態Ｊ１および状態Ｊ２で復旧しなければならないのは、テーブル用ブロックのみである。
【０１３０】
なお、以下の処理において、データ用ブロックＤＢあるいはデータ書き換え用ブロックＤＢ’に対して行われる処理はデータ用ブロック管理部４ａによって行われ、テーブル用ブロックＴＢあるいはテーブル書き換え用ブロックＴＢ’に対して行われる処理はテーブル用ブロック管理部４ｂによって行われるものとする。
【０１３１】
まず、Ｓ６１において、書き込もうとしたデータに対応するテーブルのステータス部Ｔ１にステータスＤが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４１となる。次に、Ｓ６２において、テーブル書き換え用ブロックＴＢ’の検索が行われ、Ｓ６３において、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５にステータスＥが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４２となる。
【０１３２】
次に、Ｓ６４において、テーブル用ブロックＴＢの退避先論理番号部ＴＢ１６にテーブル書き換え用ブロックＴＢ’の論理番号が書き込まれる。その後、Ｓ６５において、テーブル用ブロックＴＢの退避準備ステータス部ＴＢ１５にステータスＦが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４３となる。
【０１３３】
次に、Ｓ６６において、テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３にステータスＧが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４４となる。
【０１３４】
次に、Ｓ６８において、テーブル書き換え用ブロックＴＢ’の論理番号Ｂ部ＴＢ１２に、テーブル用ブロックＴＢの論理番号が書き込まれる。そして、Ｓ６９において、書き込もうとしたデータに対応するテーブル以外のテーブルが、テーブル用ブロックＴＢからテーブル書き換え用ブロックＴＢ’へコピーされる。その後、Ｓ７０において、テーブル書き換え用ブロックＴＢ’の退避ステータスＴＢ１３にステータスＨが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４５となる。
【０１３５】
次に、Ｓ７１において、テーブル用ブロックＴＢが消去される。その後、Ｓ７２において、テーブル用ブロックＴＢの論理番号Ａ部ＴＢ１１にテーブル書き換え用ブロックＴＢ’の論理番号が書き込まれるとともに、Ｓ７３において、テーブル書き換え用ブロックＴＢ’の退避ステータス部ＴＢ１３にステータスＩが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図２０の状態Ｊ４６となる。以上の手順により、状態Ｊ１および状態Ｊ２となっている場合の復旧処理が完了し、データを書き込む前の状態に戻ることになる。
【０１３６】
次に、上記の復旧処理中にパワーオフが発生し、フラッシュメモリ５における記憶状態が異常となった場合の復旧処理について説明する。状態Ｊ４１あるいは状態Ｊ４２となっている状態から復旧処理を行う場合には、再度上記した復旧処理、すなわち状態Ｊ１あるいは状態Ｊ２からの復旧処理を繰り返すことにより復旧することができる。
【０１３７】
状態Ｊ４３あるいは状態Ｊ４４となっている状態から復旧処理を行う場合には、まず、一度テーブル書き換え用ブロックＴＢ’を消去する。そして、テーブル書き換え用ブロックＴＢ’の論理番号Ａ部ＴＢ１１にテーブル用ブロックＴＢの退避先論理番号部ＴＢ１６に書かれている値を書き込むことにより、状態Ｊ４３と同じ状態となる。続いて、上記した図１９に示すフローチャートにおけるＳ６６からの処理を行えば、復旧することができる。また、テーブル書き換え用ブロックＴＢ’の消去中あるいは論理番号の書き込み中にパワーオフが発生しても、再度消去から繰り返すことにより状態Ｊ４３と同じ状態にすることができるので、復旧可能である。
【０１３８】
状態Ｊ４５あるいは状態Ｊ４６となっている状態から復旧処理を行う場合には、上記した図１９に示すフローチャートにおけるＳ７０からの処理を行うことにより、復旧することができる。
【０１３９】
一方、状態Ｊ３となっている状態から復旧処理を行う場合には、データの削除処理を行うことによって復旧できる。なお、状態Ｊ３は、データ用ブロックＤＢの管理情報領域ＤＢ１にある有効マップにおいて、データを書き込む領域のアドレスに対応する位置のビットが０に設定された状態である。このように、データの削除処理によって復旧を行っている最中にパワーオフが発生して、フラッシュメモリ５に記憶異常が発生した場合には、後述の削除中の復旧処理で説明する。
【０１４０】
状態Ｊ１１となっている状態から復旧処理を行う場合には、上記した図１４に示すフローチャートにおけるＳ１３からの処理を再度実行することによって復旧できる。状態Ｊ１２あるいは状態Ｊ１３となっている状態から復旧処理を行う場合には、まず、データ書き換え用ブロックＤＢ’を一度消去してから、データ書き換え用ブロックＤＢ’の論理番号Ａ部ＤＢ１１にデータ用ブロックＤＢの退避先論理番号部ＤＢ１６に書かれている値を書き込む。これにより、状態Ｊ１２と同じ状態になるので、続いて、上記した図１４に示すフローチャートにおけるＳ１５からの処理を実行することによって復旧できる。状態Ｊ１４あるいは状態Ｊ１５となっている状態から復旧処理を行う場合には、上記した図１４に示すフローチャートにおけるＳ１８からの処理を行うことにより復旧できる。
【０１４１】
次に、データの削除処理中にパワーオフなどが発生した場合の復旧処理について説明する。状態Ｊ２１となっている状態から復旧処理を行う場合には、再度、上記した図１６に示すフローチャートにおけるＳ３１からの処理を実行することにより復旧できる。状態Ｊ２２となっている状態から復旧処理を行う場合には、上記した図１６に示すフローチャートにおけるＳ３４からの処理を実行することにより復旧できる。状態Ｊ２３となっている状態から復旧処理を行う場合には、上記した図１６に示すフローチャートにおけるＳ３６からの処理を実行することにより復旧できる。状態Ｊ２４となっている状態から復旧処理を行う場合には、上記した図１６に示すフローチャートにおけるＳ３８からの処理を実行することにより復旧できる。
【０１４２】
状態Ｊ２５となっている状態から復旧処理を行う場合には、上記した図１６に示すフローチャートにおけるＳ４０からの処理を実行することにより復旧できる。状態Ｊ２６となっている状態から復旧処理を行う場合には、まず、テーブル書き換え用ブロックＴＢ’を一度消去し、テーブル書き換え用ブロックＴＢ’の論理番号Ａ部ＴＢ１１にテーブル用ブロックＴＢの退避先論理番号部ＴＢ１６に書かれている値を書き込む。これにより、状態Ｊ２５と同じ状態になるので、続いて、上記した図１６に示すフローチャートにおけるＳ４０からの処理を行えば、復旧できる。
【０１４３】
状態Ｊ２７となっている状態から復旧処理を行う場合には、まず、データ書き換え用ブロックＤＢ’およびテーブル書き換え用ブロックＴＢ’を消去し、テーブル書き換え用ブロックＴＢ’の論理番号Ａ部ＴＢ１１にテーブル用ブロックＴＢの退避先論理番号部ＴＢ１６に書かれている値を書き込むとともに、データ書き換え用ブロックＤＢ’の論理番号Ａ部ＤＢ１１にデータ用ブロックＤＢの退避先論理番号部ＤＢ１６に書かれている値を書き込む。これにより、状態Ｊ２５と同じ状態になるので、続いて、上記した図１６に示すフローチャートにおけるＳ４０から処理を行えば復旧できる。
【０１４４】
状態Ｊ２８となっている状態から復旧処理を行う場合には、上記した図１７に示すフローチャートにおけるＳ５１からの処理を行えば復旧できる。状態Ｊ２９あるいは状態Ｊ３０となっている状態から復旧処理を行う場合には、上記した図１７に示すフローチャートにおけるＳ５２から処理を行えば復旧できる。状態Ｊ３１あるいは状態Ｊ３２となっている状態から復旧処理を行う場合には、上記した図１７に示すフローチャートにおけるＳ５５からの処理を行えば復旧できる。
【０１４５】
以上のような処理によれば、フラッシュメモリ５に対して書き込み処理や消去処理などを行っている最中に、例えばパワーオフが発生することによって記憶状態が異常になったとしても、これを正常な状態に復旧させることができる。また、復旧処理中にパワーオフが発生したとしても、同様に正常な状態に復旧させることができる。また、パワーオフが発生した場合、ＩＣカード１は、必ず不活性化状態となるので、メモリ異常の検査は、活性化直後に一度だけ行うようにすればよい。異常があった場合には、復旧処理を施すようにすることによって、正常な状態に復旧することができる。
【０１４６】
【発明の効果】
以上のように、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスを記憶する構成である。
【０１４７】
これにより、例えばデータの書き込み処理の最中にパワーオフが発生し、書き込み処理が中断されたとしても、テーブルのステータスを確認することによって、どの時点で書き込み処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び書き込み処理を行うことによって、書き込み処理を正常に完了させることが可能となるという効果を奏する。
【０１４８】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、上記ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶する構成としてもよい。
【０１４９】
これにより、上記の構成による効果に加えて、書き込み処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【０１５０】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶する構成としてもよい。
【０１５１】
これにより、上記の構成による効果に加えて、有効マップを確認することによって、データ用ブロックにおけるデータ領域の空き領域の大きさを把握することが可能となるという効果を奏する。また、復旧処理を行う際にも、この有効マップを確認することによって、書き込み処理がどの段階まで進んでいるかをより正確に把握することが可能となるという効果を奏する。
【０１５２】
また、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段を備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了する構成である。
【０１５３】
これにより、どの時点で上書き処理が中断されても、中断されている時点から再度処理を行うことによって、正常に上書き処理を完了させることが可能となるという効果を奏する。
【０１５４】
また、本発明に係るメモリ管理装置は、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶する構成としてもよい。
【０１５５】
これにより、上記の構成による効果に加えて、例えばデータの上書き処理の最中にパワーオフが発生し、上書き処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で上書き処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び上書き処理を行うことによって、上書き処理を正常に完了させることが可能となるという効果を奏する。
【０１５６】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【０１５７】
これにより、上記の構成による効果に加えて、上書き処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【０１５８】
また、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶するテーブル領域を備えており、上記データ用ブロックに記憶されているデータの削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成である。
【０１５９】
これにより、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となるという効果を奏する。
【０１６０】
また、本発明に係るメモリ管理装置は、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【０１６１】
これにより、上記の構成による効果に加えて、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となるという効果を奏する。
【０１６２】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【０１６３】
これにより、上記の構成による効果に加えて、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【０１６４】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成としてもよい。
【０１６５】
これにより、上記の構成による効果に加えて、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となるという効果を奏する。
【０１６６】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【０１６７】
これにより、上記の構成による効果に加えて、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となるという効果を奏する。
【０１６８】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【０１６９】
これにより、上記の構成による効果に加えて、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【０１７０】
また、本発明に係るメモリ管理プログラムは、上記本発明に係るメモリ管理装置が備える各手段をコンピュータに実現させるものである。
【０１７１】
これにより、上記プログラムをコンピュータシステムにロードすることによって、上記メモリ管理装置を実現することが可能となるという効果を奏する。
【０１７２】
また、本発明に係るＩＣカードは、上記本発明に係るメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および／または外部の装置から電力供給を行うインターフェース部とを備えている構成である。
【０１７３】
これにより、パワーオフによってメモリの状態が異常になったとしても、これを正常な状態に復旧することが可能となるので、データの正当性の保証を確実にすることができ、動作信頼性の高いＩＣカードを提供することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るＩＣカードが備えるマイコン部の機能的な構成を示すブロック図である。
【図２】上記ＩＣカードの概略構成を示すブロック図である。
【図３】上記ＩＣカードに搭載されているフラッシュメモリのブロック構成を示す図である。
【図４】同図（ａ）は、上記フラッシュメモリが備えるデータ用ブロックの概略構成を示す図であり、同図（ｂ）は、上記フラッシュメモリが備えるテーブル用ブロックの概略構成を示す図である。
【図５】上記データ用ブロックにおける管理情報領域の構成を示す図である。
【図６】上記テーブル用ブロックにおける管理情報領域の構成を示す図である。
【図７】テーブルの構成を示す図である。
【図８】テーブル用ブロック、データ用ブロック、および有効マップの関係を示す図である。
【図９】テーブルのステータスについての表である。
【図１０】退避準備ステータスについての表である。
【図１１】退避ステータスについての表である。
【図１２】データの書き込み処理の流れを示すフローチャートである。
【図１３】データの書き込み処理中における状態を示す表である。
【図１４】データの上書き処理の流れを示すフローチャートである。
【図１５】データの上書き処理中における状態を示す表である。
【図１６】データの削除処理の流れの前半を示すフローチャートである。
【図１７】データの削除処理の流れの後半を示すフローチャートである。
【図１８】データの削除処理中における状態を示す表である。
【図１９】状態Ｊ１、Ｊ２の復旧処理の流れを示すフローチャートである。
【図２０】状態Ｊ１、Ｊ２の復旧処理中における状態を示す表である。
【符号の説明】
１    ＩＣカード
２    マイコン部
３    Ｉ／Ｆ部
４    制御部
４ａ    データ用ブロック管理部（データ用ブロック管理手段）
４ｂ    テーブル用ブロック管理部（テーブル用ブロック管理手段）
５    フラッシュメモリ（不揮発性メモリ）
６    ＣＰＵ
７    ＲＡＭ
８    ＲＯＭ
９    非接触用Ｉ／Ｆ
１０    接触用Ｉ／Ｆ
ＤＢ    データ用ブロック
ＤＢ’  データ書き換え用ブロック
ＴＢ    テーブル用ブロック
ＴＢ’  テーブル書き換え用ブロック
ＤＢ１  管理情報領域
ＤＢ２  データ領域
ＴＢ１  管理情報領域
ＴＢ２  テーブル領域
【図１】
2005025401.tif 000003
【図２】
2005025401.tif 000004
【図３】
2005025401.tif 000005
【図４】
2005025401.tif 000006
【図５】
2005025401.tif 000007
【図６】
2005025401.tif 000008
【図７】
2005025401.tif 000009
【図８】
2005025401.tif 000010
【図９】
2005025401.tif 000011
【図１０】
2005025401.tif 000012
【図１１】
2005025401.tif 000013
【図１２】
2005025401.tif 000014
【図１３】
2005025401.tif 000015
【図１４】
2005025401.tif 000016
【図１５】
2005025401.tif 000017
【図１６】
2005025401.tif 000018
【図１７】
2005025401.tif 000019
【図１８】
2005025401.tif 000020
【図１９】
2005025401.tif 000021
【図２０】
2005025401.tif 000022