JP4060245B2 - メモリ管理装置およびこれを備えたicカード - Google Patents
メモリ管理装置およびこれを備えたicカード Download PDFInfo
- Publication number
- JP4060245B2 JP4060245B2 JP2003188841A JP2003188841A JP4060245B2 JP 4060245 B2 JP4060245 B2 JP 4060245B2 JP 2003188841 A JP2003188841 A JP 2003188841A JP 2003188841 A JP2003188841 A JP 2003188841A JP 4060245 B2 JP4060245 B2 JP 4060245B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- status
- area
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、例えばICカードに搭載されるフラッシュメモリの記憶動作を管理するメモリ管理装置に関するものである。
【0002】
【従来の技術】
従来、例えばクレジットカードやキャッシュカードなどの用途で、磁気を利用してカードに各種情報が記録されている磁気カードが広く普及している。これに対して、昨今では、カードにIC(Integrated Circuit)を埋め込んだICカードが磁気カードに代わって普及しつつある。ICカードは、磁気カードと比較して、記憶可能な情報量が大きいという点、および、複製が極めて困難であることによるセキュリティが高いという点においてメリットを有している。
【0003】
通常、ICカードに搭載されているメモリは、電力が供給されない状態でも記憶内容を保存できるように不揮発性メモリが用いられることが多い。このようなICカードに搭載される不揮発性メモリとしては、EEPROM(Electrically Erasable/Programmable Read Only Memory)、フラッシュEEPROM、およびFRAM(ferroelectric random access memory)などが採用されている。これらの中でも、大容量化を低コストで実現可能なフラッシュEEPROMが広く用いられている。なお、以降では、このフラッシュEEPROMを単にフラッシュメモリと称する。
【0004】
【特許文献1】
特開平6−111588号公報(公開日1994年4月22日)
【0005】
【発明が解決しようとする課題】
しかしながら、フラッシュメモリには、SRAMまたはDRAMにはない制限がある。まず、各メモリビットは、0から1への変更、あるいは1から0への変更のどちらか一方しか行えないようになっている。したがって、既にデータが書き込まれている記憶位置に新たなデータを書き込む場合は、まず、その記憶位置を含むブロックまたはセクタ単位を一括消去することによって、ブロック/セクタ内全てのメモリを0または1に設定した後に書き込みを行うこととなる。ここで、フラッシュメモリにおける、1ワードのデータの書き込みに伴う処理時間は、数10マイクロ秒かかる。また、一括消去単位ブロックの消去に至っては、数100ミリ秒から数秒の時間が必要となる。
【0006】
したがって、フラッシュメモリを搭載したICカードでは、データの書き込みまたは消去に対して時間がかかるので、データの書き込みまたは消去中にパワーオフが生じる可能性が高くなるという問題がある。特に、非接触型のICカードでは、ICカードが動作中に動作磁界内からはずれるなどして、パワーオフが発生する可能性が高い。また、接触型のICカードの場合においても、ICカードの動作中にパワーオフが発生する場合がある。例えば、ユーザーが、ICカードの動作中にリーダーライターからICカードを引き抜いたり、または外部からの振動などにより端子がはずれたりすることによってパワーオフが生じる。
【0007】
もし、ICカード内に搭載されているフラッシュメモリの消去中、または書き込み中にパワーオフが発生した場合には、記憶されているデータ内容が異常な状態になる可能性がある。このような状況になった場合、再度ICカードを作動したときに、ICカードが正常に動作しない可能性がある。そのため、従来からフラッシュメモリへの書き込み中あるいは、消去中にパワーオフが起きないように注意する必要があった。特に、非接触型ICカードにおいては、パワーオフが生じる恐れがあるため、消去や書き込みは極力避けるようにしなければならなかった。
【0008】
上記にて示した問題点を鑑みて、特許文献1では、パワーオフ時における書き込みエラーを検出し、これを訂正する構成が開示されている。具体的には次のような構成となっている。フラッシュメモリの外部にRAMが備えられており、このRAMの記憶領域に、フラッシュメモリを構成するブロック(セクタ)に関する制御情報が記録されている。このRAMに記憶されている制御情報を用いて、異常パワーオフによるエラーを検出訂正することが可能となっている。
【0009】
しかしながら、特許文献1にて示される構成では、ブロック(セクタ)の制御情報を記憶しておくためのRAMなどを2次メモリとして使用しているので、コストがかかるという問題が生じる。つまり、ICカードにおける記憶手段として用いるフラッシュメモリにRAMも内蔵させることが必要となるので、記憶手段の大型化やコストの上昇を招くという問題がある。
【0010】
また、特許文献1にて示される構成では、データの書き込み中/消去中にパワーオフが生じた場合、パリティ検査によって、ブロックのヘッダにエラーが生じているか調べることができる。しかし、訂正不能エラーがある場合は、訂正不能エラーが生じているブロックを消去することとなる。したがって、訂正不能であるエラーを検出した場合は、エラーが生じているブロックを消去するだけで、書き込まれたデータを訂正して復旧することができない。
【0011】
本発明は、上記の問題点を解決するためになされたもので、その目的は、フラッシュメモリなどの不揮発性メモリに対してデータの書き込み、上書き、削除などの処理を行っている際に、パワーオフなどによってメモリ異常が発生した場合でも、これを正常な状態に的確に復旧することが可能なメモリ管理装置およびこれを備えたICカードを提供することにある。
【0012】
【課題を解決するための手段】
上記の課題を解決するため、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスを記憶することを特徴としている。
【0013】
上記の構成によれば、データ用ブロック管理手段によって、データ用ブロックに対してデータの書き込み処理が行われると、テーブル用ブロック管理手段によって、該データに対応するテーブルに対して、書き込み処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの書き込み処理の最中にパワーオフが発生し、書き込み処理が中断されたとしても、テーブルのステータスを確認することによって、どの時点で書き込み処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び書き込み処理を行うことによって、書き込み処理を正常に完了させることが可能となる。
【0014】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、上記ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶する構成としてもよい。
【0015】
上記の構成によれば、ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報がテーブルに記憶されることになる。よって、書き込み処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【0016】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶する構成としてもよい。
【0017】
上記の構成によれば、データ用ブロックに、データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップが記憶されるようになっている。よって、この有効マップを確認することによって、データ用ブロックにおけるデータ領域の空き領域の大きさを把握することが可能となる。また、復旧処理を行う際にも、この有効マップを確認することによって、書き込み処理がどの段階まで進んでいるかをより正確に把握することが可能となる。
【0018】
また、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段を備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了することを特徴としている。
【0019】
上記の構成では、データ用ブロックに記憶されているデータの上書き処理を行う場合に、まず、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている内容が、データ書き換え用ブロックにコピーされ、上書きするデータもデータ書き換え用ブロックに書き込まれる。この時点では、データ用ブロックには、上書き処理前のデータがそのまま記憶されており、データ書き換え用ブロックには、上書き処理後のデータが記憶されていることになる。
【0020】
次に、データ用ブロックのデータ領域に記憶されている内容が消去される。この時点では、データ書き換え用ブロックにのみ、上書き処理後のデータが記憶されていることになる。そして、データ書き換え用ブロックをデータ用ブロックに変更することによって上書き処理が完了する。
【0021】
以上のような処理によれば、どの時点で上書き処理が中断されても、中断されている時点から再度処理を行うことによって、正常に上書き処理を完了させることが可能となる。
【0022】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶する構成としてもよい。
【0023】
上記の構成によれば、データ用ブロックに対してデータの上書き処理が行われると、管理情報領域に上書き処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの上書き処理の最中にパワーオフが発生し、上書き処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で上書き処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び上書き処理を行うことによって、上書き処理を正常に完了させることが可能となる。
【0024】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0025】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、上書き処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【0026】
また、本発明に係るメモリ管理装置は、複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶するテーブル領域を備えており、上記データ用ブロックに記憶されているデータの削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴としている。
【0027】
上記の構成では、データ用ブロックに記憶されているデータの削除処理を行う場合に、まず、削除処理の対象となるデータに対応するテーブルに、削除対象であることを示すステータスが記憶される。そして、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている内容が、削除処理の対象となるデータを除いてデータ書き換え用ブロックにコピーされる。次に、データ用ブロックのデータ領域に記憶されている内容が消去される。そして、データ書き換え用ブロックとデータ用ブロックとを入れ替える処理が行われ、これによって削除処理が完了する。
【0028】
以上のような処理によれば、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となる。
【0029】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【0030】
上記の構成によれば、データ用ブロックに対してデータの削除処理が行われると、管理情報領域に削除処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となる。
【0031】
また、本発明に係るメモリ管理装置は、上記の構成において、上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0032】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【0033】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成としてもよい。
【0034】
上記の構成では、データ用ブロックに記憶されているデータの削除処理を行う場合に、まず、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容が、テーブル書き換え用ブロックにコピーされる。次に、テーブル用ブロックのテーブル領域に記憶されている内容が消去される。そして、テーブル書き換え用ブロックとテーブル用ブロックとを入れ替える処理が行われ、これによって削除処理が完了する。
【0035】
以上のような処理によれば、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となる。
【0036】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【0037】
上記の構成によれば、データ用ブロックに対してデータの削除処理が行われると、管理情報領域に削除処理の進行状況を示すステータスが記憶されるようになっている。よって、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となる。
【0038】
また、本発明に係るメモリ管理装置は、上記の構成において、上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0039】
上記の構成によれば、ステータスとして、退避処理の開始、消去処理中、および退避処理の完了を示す情報が管理情報領域に記憶されることになる。よって、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができる。
【0040】
また、本発明に係るメモリ管理プログラムは、上記本発明に係るメモリ管理装置が備える各手段をコンピュータに実現させることを特徴としている。
【0041】
上記プログラムをコンピュータシステムにロードすることによって、上記メモリ管理装置を実現することが可能となる。
【0042】
また、本発明に係るICカードは、上記本発明に係るメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および/または外部の装置から電力供給を行うインターフェース部とを備えていることを特徴としている。
【0043】
上記のようなICカードでは、インターフェース部を介して外部の装置から受信したデータを不揮発性メモリに書き込んだり、不揮発性メモリに記憶されているデータを消去したりする際に、何らかの原因によりパワーオフが発生することが考えられる。このような場合でも、上記の構成によれば、上記のようなメモリ管理装置によって不揮発性メモリの管理が行われるので、パワーオフによってメモリの状態が異常になったとしても、これを正常な状態に復旧することが可能となる。よって、データの正当性の保証を確実にすることができ、動作信頼性の高いICカードを提供することができる。
【0044】
【発明の実施の形態】
本発明の一実施形態について図1〜図19に基づいて説明すれば、以下のとおりである。
【0045】
(ICカードの構成)
図1は、本実施形態に係るICカード1の概略構成を示すブロック図である。同図に示すように、このICカード1は、マイコン部2およびI/F部3を備えており、これらの構成が、例えばプラスチックなどからなるカードに埋め込まれた構成となっている。マイコン部2は、ICカード1における各種情報処理を行うブロックであり、IC(Integrated Circuit)によって構成されている。I/F部3は、外部の装置との間でデータの送受信を行う際のインターフェース、および、外部から電力供給を受ける際のインターフェースとして機能するものである。
【0046】
マイコン部2は、制御部4とフラッシュメモリ5とを備えた構成となっている。制御部4は、ICカード1における処理動作を制御するものであり、CPU(Central Processing Unit)6、RAM(Random Access Memory)7、およびROM(Read Only Memory)8を備えた構成となっている。ROM8には、制御部4が行う各種処理を実現するための各種プログラムが記憶されている。そして、このプログラムがバスを介して作業メモリとしてのRAM7に読み出され、CPU6がプログラムを実行することによって、制御部4における処理が実現される。この制御部4が実行する処理としては、I/F部3を介して外部装置から受信したデータをフラッシュメモリ5に記録する処理、フラッシュメモリ5に記録されているデータを消去したり書き換えたりする処理などが挙げられる。
【0047】
フラッシュメモリ5は、ICカード1における不揮発性メモリとして機能するものであり、フラッシュEEPROMによって構成されるものである。このフラッシュメモリ5には、ICカード1において書き換えや消去が行われるべき各種データが記憶される。また、上記CPU6によって実行されるプログラムがフラッシュメモリ5に記憶されていてもよい。なお、フラッシュメモリ5の構成の詳細については後述する。
【0048】
I/F部3は、非接触用I/F9および接触用I/F10を備えている。非接触用I/F9は、ICカード1と外部の装置との間で非接触型データ通信および非接触型電力供給が行われる際に用いられるインターフェースである。具体的には、非接触用I/F9は、例えば電磁誘導を起動させるアンテナコイル、整流回路、変調回路、復調回路、クロック抽出回路、およびパワーオンリセット回路などによって構成される(図示せず)。このような構成により、外部から加えられた電磁波による電磁誘導によって電力を発生させるとともに、該電磁波にデータ信号が重畳されることによって、データ信号の送受信が行われる。
【0049】
なお、本実施形態において用いられるICカード1、およびこのICカード1に対応した外部の装置としてのリーダライタ装置は、例えばISO/IEC14443のtypeB規格に準拠するものとしてもよい。また、非接触用I/F9は、リーダライタ装置が送信する13.56MHzのキャリア波を受信し、ASK(Amplitude Shift Keying)10%振幅変調によってキャリア波に重畳されたデータを変復調するものとしてもよい。
【0050】
一方、接触用I/F10は、ICカード1と外部の装置との間で接触型データ通信および接触型電力供給が行われる際に用いられるインターフェースである。具体的には、外部の装置との電力供給端子およびデータ信号端子と接触するための端子などによって構成される(図示せず)。
【0051】
なお、本実施形態では、I/F部3は、非接触用I/F9および接触用I/F10の両方を備えた構成となっているが、これに限定されるものではなく、どちらか一方のみを備えた構成であってもよい。
【0052】
(制御部の構成)
次に、マイコン部2における、制御部4およびフラッシュメモリ5の機能的な構成について図1を参照しながら説明する。同図に示すように、制御部4は、データ用ブロック管理部4aおよびテーブル用ブロック管理部4bを備えている。また、フラッシュメモリ5は、データ用ブロックDB、データ書き換え用ブロックDB’、テーブル用ブロックTB、およびテーブル書き換え用ブロックTB’を備えている。なお、フラッシュメモリ5の構成の詳細については後述する。
【0053】
データ用ブロック管理部4aは、データ用ブロックDB、およびデータ書き換え用ブロックDB’の管理を行うものである。また、テーブル用ブロック管理部4bは、テーブル用ブロックTB、およびテーブル書き換え用ブロックTB’の管理を行うものである。これらのデータ用ブロック管理部4aおよびテーブル用ブロック管理部4bによる処理の詳細については後述する。
【0054】
なお、データ用ブロック管理部4aおよびテーブル用ブロック管理部4bは、上記したように、例えばROM8に記憶されているデータ用ブロック管理プログラムおよびテーブル用ブロック管理プログラムがバスを介して作業メモリとしてのRAM7に読み出され、CPU6がこれらのプログラムを実行することによって実現される。
【0055】
(フラッシュメモリの構成)
次に、フラッシュメモリ5の構成に関して説明する。本実施形態に係るフラッシュメモリ5は、図3に示すように、n個のブロックから構成されており、各ブロック単位で一括消去可能となっている。各ブロックは、データを格納する為に使用するデータ用ブロックDB、該データを管理するためのテーブルを格納する為に使用するテーブル用ブロックTB、データ用ブロックDBの消去、書き換え用としてのデータ書き換え用ブロックDB’、およびテーブル用ブロックTBの消去、書き換え用としてのテーブル書き換え用ブロックTB’のいずれかに割り当てられる。
【0056】
テーブル用ブロックTBは、フラッシュメモリ5内のブロックのうち少なくとも1つのブロックであればよい。また、データ書き換え用ブロックDB’およびテーブル書き換え用ブロックTB’は、それぞれ1つのブロックに割り当てられていればよく、また、後述するデータ部あるいはテーブル部に何も書き込みがされていないブロックであればよい。
【0057】
図4(a)および図4(b)は、それぞれデータ用ブロックDBおよびテーブル用ブロックTBの概略構成を示している。データ用ブロックDBは、同図(a)に示すように、当該データ用ブロックDBの中に格納しているデータに関する情報を管理するための管理情報領域DB1、およびデータを格納するための領域であるデータ領域DB2から構成されている。また、テーブル用ブロックTBは、同図(b)に示すように、当該テーブル用ブロックTBのブロック情報を管理するための管理情報領域TB1、およびテーブルを格納するための領域であるテーブル領域TB2から構成されている。なお、データ書き換え用ブロックDB’は、データ用ブロックDBと同じ構成となっており、テーブル書き換え用ブロックTB’は、テーブル用ブロックTBと同じ構成となっている。
【0058】
データ用ブロックDBおよびデータ書き換え用ブロックDB’における管理情報領域DB1は、図5に示すように、論理番号A部DB11、論理番号B部DB12、退避ステータス部DB13、退避元実アドレス部DB14、退避準備ステータス部DB15、退避先論理番号部DB16、退避先実アドレスDB17、および有効マップ部DB18を備えている。また、テーブル用ブロックTBおよびテーブル書き換え用ブロックTB’における管理情報領域TB1は、図6に示すように、論理番号A部TB11、論理番号B部TB12、退避ステータス部TB13、退避元実アドレス部TB14、退避準備ステータス部TB15、退避先論理番号部TB16、および退避先実アドレスTB17を備えている。
【0059】
論理番号A部DB11・TB11および論理番号B部DB12・TB12は、それぞれ論理番号Aおよび論理番号Bを格納するための領域である。論理番号とは、一括消去単位である各ブロックに割り付けた番号である。例えば、各ブロックの論理番号A部DB11・TB11にそれぞれ1〜nまでの値を書き込んでおく場合、その値が該ブロックの論理番号となる。なお、論理番号B部DB12・TB12に論理番号が割り振られている場合は、その値が該当ブロックの論理番号となる。また、論理番号B部DB12・TB12に論理番号が割り振られていない場合は、論理番号A部DB11・TB11に割り振られた論理番号が該当ブロックの論理番号となるものとする。
【0060】
退避ステータス部DB13は、データ書き換え用ブロックDB’において、データの削除処理や上書き処理を行う際の退避処理の進行状況を示す情報を格納する領域である。同様に、退避ステータス部TB13は、テーブル書き換え用ブロックTB’において、データの削除処理や上書き処理を行う際の退避処理の進行状況を示す情報を格納する領域である。具体的には、退避ステータス部DB13・TB13には、退避処理が開始されているか、消去処理が行われているか、または退避処理が完了しているかを示すステータスが格納される。なお、退避処理の詳細については後述する。
【0061】
退避準備ステータス部DB15は、データ用ブロックDBにおいて、データの削除処理や上書き処理を行う際の退避準備処理の進行状況を示す情報を格納する領域である。同様に、退避準備ステータス部TB15は、テーブル用ブロックTBにおいて、データの削除処理や上書き処理を行う際の退避準備処理の進行状況を示す情報を格納する領域である。具体的には、退避準備ステータス部DB15・TB15には、退避準備処理が開始されているか、または退避準備処理が完了しているかを示すステータスが格納される。なお、退避準備処理の詳細については後述する。
【0062】
退避元実アドレス部DB14は、データ書き換え用ブロックDB’において、退避処理が行われたデータのデータ用ブロックDB中におけるアドレスを示す情報を格納する領域である。同様に、退避元実アドレス部TB14は、テーブル書き換え用ブロックTB’において、退避処理が行われたテーブルのテーブル用ブロックTB中におけるアドレスを示す情報を格納する領域である。
【0063】
退避先論理番号部DB16は、データ用ブロックにおいて、退避処理が行われたデータのデータ書き換え用ブロックDB’の論理番号を格納する領域である。同様に、退避先論理番号部TB16は、テーブル用ブロックにおいて、退避処理が行われたテーブルのテーブル書き換え用ブロックTB’の論理番号を格納する領域である。
【0064】
退避先実アドレス部DB17は、データ用ブロックDBにおいて、退避処理が行われたデータのデータ書き換え用ブロックDB’中におけるアドレスを格納する領域である。同様に、退避先実アドレス部TB17は、テーブル用ブロックTBにおいて、退避処理が行われたテーブルのテーブル書き換え用ブロックTB’中におけるアドレスを格納する領域である。
【0065】
また、有効マップ部DB18は、データ領域DB2において、有効なデータが記録されている領域を示す情報を格納している。具体的には、有効マップ部DB18における各ビットがデータ領域DB2の最小書き込みサイズに対応している。データを書き込む領域が確保された場合には、その対応したビットが0となる。つまり、図8に示すように、データ領域DB2において、確保されているデータ書き込み領域が管理情報領域に近くなるにつれて有効マップの上位アドレスに対応するようになっている。なお、フラッシュメモリは、1を0に書き換えることは可能であるが、0を1に書き換えることができない。そこで、確保されたデータ領域の位置を示すために、有効マップを1から0に書き換えるのである。
【0066】
例えば、データ書き込み用に確保されたデータ部分領域Aおよびデータ部分領域BがDBにおいて確保されていたとする。そして、データ部分領域Bは、データ部分領域Aの2倍の領域を確保しており、データ部分領域Aよりも管理情報領域に近い位置にあるものとする。この場合、有効マップにおいて、データ部分領域Aに対応するビットは、データ部分領域Bに対応するビットよりも下位になる。また、データ部分領域Bは、データ部分領域Aの2倍の領域を確保しているので2ビット分が0となる。したがって、有効マップを検査することにより、各データブロックDBの空き領域を計算することができる。
【0067】
なお、DBのデータ領域DB2は、書き込む最小サイズ毎に分割されるものとする。例えば、上記データ領域DB2において最小書き込みサイズが128バイトの場合、300バイトのデータを書き込むとき、そのデータの領域は、128バイトの倍数である384バイトとなる。
【0068】
次に、テーブルの構成について図7を参照しながら説明する。同図に示すように、テーブルは、該テーブルのステータスを格納するためのステータス部T1、データ用ブロックDBに格納しているデータのアドレスを記憶する領域であるアドレス部T2、データを格納しているデータ用ブロックDBの論理番号を記憶する領域である論理番号部T3、データのサイズを記憶する領域であるサイズ部T4、および、データに関する情報を格納する領域であるデータ情報部T5から構成されている。
【0069】
また、データ用ブロックDBにデータを記録する場合、テーブル用ブロックTBのテーブルには、記録されるデータに関する管理情報が必ず記録される。テーブルのサイズ部T4に書き込まれる値は、データ用ブロックDBにおけるデータ領域DB2の最小書き込みサイズの整数倍となる。例えば、データ用ブロックDBのデータ領域DB2の最小書き込みサイズが128バイトの場合、データ領域DB2に300バイトのデータを書き込むとき、テーブルのサイズ部T4に書き込まれるデータのサイズは、300バイトではなく、128バイトの整数倍(3倍)である384バイトとなる。
【0070】
図9は、テーブルのステータス部T1に格納されるステータスの種類を示している。テーブルのステータス部T1に格納されるステータスとしては、テーブル書き込み開始を示すステータスA、テーブル書き込み完了を示すステータスB、データ書き込み完了を示すステータスC、および、削除中を示すステータスDの4種類が挙げられる。
【0071】
図10は、テーブル用ブロックTB、あるいは、データ用ブロックDBの管理情報領域TB1・DB1の退避準備ステータス部TB15あるいはDB15に格納されるステータスの種類を示している。退避準備ステータス部TB15・DB15に格納されるステータスとしては、退避準備開始を示すステータスE、退避準備完了を示すステータスFの2種類が挙げられる。
【0072】
図11は、テーブル書き換え用ブロックTB’あるいはデータ書き換え用ブロックDB’の管理情報領域TB1・DB1の退避ステータス部TB13あるいはDB13に格納されるステータスを示している。退避ステータス部TB13・DB13に格納されるステータスとしては、退避開始を示すステータスG、消去中を示すステータスH、退避完了を示すステータスIの3種類が挙げられる。
【0073】
ここで、テーブルのステータス部T1、退避準備ステータス部TB15・DB15、および、退避ステータス部TB13・DB13におけるステータスの表現形式について説明する。なお、以下では、ステータス部T1について説明するが、退避準備ステータス部TB15・DB15、および、退避ステータス部TB13・DB13においても同様に考えればよい。
【0074】
図9に示すように、本実施形態では、ステータスAに対応する値としてFEh、ステータスBに対応する値としてFCh、ステータスCに対応する値としてF8h、およびステータスDに対応する値としてEChがステータス部T1に格納されるようになっている。これらの値は、次のような理由によって設定されている。
【0075】
まず、ステータス部T1に値が設定されていない場合には、FFhが格納されていることになる。これは、2進数のビットで表すと‘11111111’となる。この状態からステータスAに移行すると、ステータス部T1にはFEhが格納される。これを2進数のビットで表すと‘11111110’となる。さらにこの状態からステータスBに移行すると、ステータス部T1にはFChが格納される。これを2進数のビットで表すと‘11111100’となる。さらにこの状態からステータスCに移行すると、ステータス部T1にはF8hが格納される。これを2進数のビットで表すと‘11111000’となる。さらにこの状態からステータスDに移行すると、ステータス部T1にはE8hが格納される。これを2進数のビットで表すと‘11101000’となる。
【0076】
以上のように、ステータス部T1において、値が設定されていない状態から、ステータスA、ステータスB、ステータスCに順にステータスが移行する場合、1ビットずつ1から0に書き換えていくことになる。このように、ステータスの書き換えが1ビットずつ行われることによって、パワーオフなどが発生しても、ステータスに異常が発生することを防止することができる。これは以下のような理由による。
【0077】
例えば、ステータスのメモリ状態がFFh(‘11111111’)である状態から00h(‘00000000’)に変更する場合には、複数(この場合は8個)のビットを変更することになる。この書き換え中にパワーオフが発生し、書き換えが中断されると、変更対象となっているビットが全て不定となり、メモリ状態は複数の状態のいずれかになる可能性がある。これに対して、上記のように、ステータスを変更する際には、メモリ状態を1ビットだけ変更すればよいようにしておけば、書き換えが中断されたとしても、メモリ状態は書き換え前の状態か書き換え後の状態のいずれかであることになる。よって、ステータスに異常が発生することがなくなる。
【0078】
(データの読み出し処理)
ここで、制御部4によってデータの読み出し処理が行われる場合について説明する。制御部4がフラッシュメモリ5に格納されているデータの読み出し処理を行う場合、まず、テーブル用ブロック管理部4bが、フラッシュメモリ5のテーブル用ブロックTBにアクセスする。そして、要求するデータの情報に基づいて、テーブル用ブロックTBの管理情報領域部TB1の論理番号A部TB11または論理番号B部TB12を参照することによって、テーブル用ブロックTBの中から要求するデータを管理しているテーブルを検索する。次に該データを管理しているテーブルにアクセスできたら、テーブルの論理番号部T3を参照して、データ用ブロック管理部4aが、記憶されている論理番号に対応するデータ用ブロックDBを検索する。要求するデータが格納されているデータ用ブロックDBを特定した後、データ用ブロック管理部4aは、テーブルのアドレス部T2に記憶されている、要求するデータの格納先アドレスの値に基づいて、データ用ブロックDBの中に格納されているデータにアクセスすることができる。
【0079】
上記した操作をより具体的にするために、再度図8を参照して説明する。一例として、データ用ブロックDBのデータ領域DB2に格納しているデータへのアクセスが行われる場合を想定する。まず、要求するデータについての情報に基づいて、要求するデータを管理しているテーブルを記憶しているテーブル用ブロックTBに対してテーブル用ブロック管理部4bがアクセスする。そして、テーブル用ブロック管理部4bは、テーブル用ブロックTBの管理情報領域TB1にある論理番号A部TB11または論理番号B部TB12を参照することによって、テーブル用ブロックTBの中から該当テーブルを特定する。
【0080】
次に、テーブルの論理番号部T3を参照することによって、データ用ブロック管理部4aは、該論理番号に対応するデータ用ブロックDB、すなわち要求するデータが格納されているデータ領域DB2を含むデータ用ブロックDBを検索し、特定する。そして、テーブルのアドレス部T2に記憶されているデータ領域DB2の格納先アドレスの値に基づいて、データ用ブロック管理部4aは、データ用ブロックDBのデータ領域DB2中におけるデータにアクセスすることができる。
【0081】
(データ書き込み処理の流れ)
次に、図12および図13を参照して、データの書き込み要求がある場合の処理と、その処理の流れに対応する各ステータスの状態遷移および有効マップの状態遷移についてより具体的に説明する。
【0082】
まず、データの書き込み要求がなされた場合、テーブル用ブロック管理部4bは、テーブル用ブロックTBの管理情報領域TB1およびデータ用ブロックDBの管理情報領域DB1にアクセスして、テーブル領域TB2の空き領域およびデータ領域DB2の空き領域とを調べる(ステップ1、以降、S1のように称する)。
【0083】
次に、検索によって見つけられたテーブル領域TB2の空き領域にテーブルが確保され、テーブル用ブロック管理部4bは、該テーブルのステータス部T1にステータスAを書き込む(S2)。これにより、テーブルのステータス部T1を確認することによって、テーブル領域TB2の空き領域とデータ領域DB2の空き領域とを調べる処理が完了し、テーブルに対して書き込みが開始されたことが分かる。なお、S2における各ステータスおよび有効マップの状態は、図13に示す状態J1である。
【0084】
次いで、テーブル用ブロック管理部4bは、S1にて検索した、データ用ブロックDBに空き領域があるブロックの論理番号、書き込み先として確保したデータ領域DB1における書き込み開始アドレス(オフセットアドレス)、および書き込むデータのサイズを上記テーブルに書き込む。また、必要に応じて、書き込むデータの情報もテーブルに書き込んでもよい(S3)。
【0085】
S3にて、書き込み要求がなされたデータ(以下書き込みデータと称す)の管理情報に関するそれぞれの情報がテーブルに書き込まれた後、テーブル用ブロック管理部4bは、テーブルにおけるステータス部T1のステータスをステータスAからステータスBに書き換える(S4)。これにより、テーブルのステータス部T1を確認することによって、テーブルにデータの管理情報を書き込む処理が完了したことが判定できる。また、データの管理情報をテーブルに書き込む最中にパワーオフが発生した場合、この書き込み処理が異常終了していないかを判断することも可能となる。なお、この時点において、各ステータスおよび有効マップの状態は、図13に示す状態J2となる。
【0086】
S5にて、データ用ブロック管理部4aは、データ用ブロックDBの管理情報領域DB1にある有効マップにおいて、データを書き込む領域のアドレスに対応する位置のビットを0にする。ここで、テーブルのサイズ部T4に記憶されているデータのサイズに基づいて0にするビットの数が決定される。つまり、書き込むデータサイズが、最小書き込みサイズの2倍のサイズに相当する場合は、2ビット分を0とする。この場合の各ステータスおよび有効マップの状態は、図13に示す状態J3となる。
【0087】
有効マップのビットを0にした後、データを書き込むために確保したデータ領域DB2に、データ用ブロック管理部4aはデータを書き込む(S6)。書き込み処理が完了すると、テーブル用ブロック管理部4aは、テーブルのステータス部T1のステータスを、ステータスBからステータスCに書き換える(S7)。したがって、テーブルのステータス部T1のステータスがステータスCであることから、データの書き込み処理が完了したことを判定できる。なお、この場合における各ステータスおよび有効マップの状態は、図13に示す状態J4となる。
【0088】
上記したように、データの書き込み処理時に、例えばパワーオフが発生するなどによってフラッシュメモリ5における記憶状態が異常になっているかどうかの判定は、テーブルのステータスおよび有効マップの状態から判断することができる。例えば、テーブルのステータスがAである場合は、状態J1で処理が止まっていることがわかる。また、テーブルのステータスがBであり、かつ論理番号およびアドレスから割り出される有効マップのビットが0でない場合は、状態J2で処理が止まっていることがわかる。さらに、テーブルのステータスがBであり、かつ上記有効マップのビットが0である場合は、状態J3で処理が止まっていることがわかる。そして、テーブルのステータスがCである場合は、状態J4であり、データの書き込み処理時に異常が発生せず、無事に処理が完了したものと判断できる。
【0089】
(データの上書き処理の流れ)
次に、図14および図15を参照しながら、データの上書き処理の流れについて説明する。図14は、上書き処理の流れを示すフローチャートであり、図15は、上書き処理中の各ステータスおよび有効マップの状態を示す。
【0090】
データの上書き処理の要求があった場合、データ用ブロック管理部4aは、上書きする前のデータを一旦退避させておくための領域として、フラッシュメモリ5の中からデータ書き換え用ブロックDB’を検索する(S11)。
【0091】
次に、データ用ブロック管理部4aは、上書きされるデータが格納されているデータ用ブロックDBの退避準備ステータス部DB15にステータスEを書き込む(S12)。この時点での各ステータスおよび有効マップの状態は図15の状態J11である。このように、退避準備ステータス部DB15にステータスEが書き込まれることによって、データ用ブロックDBの上書きする前のデータを退避するためのデータ書き換え用ブロックDB’を確保している状態であることが分かる。言い換えれば、データ用ブロックDBに記録されているデータに対して上書き処理を開始するための準備がなされている状態であることを示すことができる。
【0092】
データ用ブロックDBの退避準備ステータス部DB15にステータスEが書き込まれた後、データ用ブロックDBの退避先論理番号部DB16に、データの退避先であるデータ書き換え用ブロックDB’の論理番号が書き込まれる。また同時に、データ用ブロックDBの退避先実アドレス部に、データ書き換え用ブロックDB’の実アドレスが書き込まれる。このことによって、データ用ブロックDBからどのデータ書き換え用ブロックDB’にデータが移動するのかを確認することが可能となる(S13)。
【0093】
退避先であるデータ書き換え用ブロックDB’の論理番号および実アドレスの書き込みが完了したことが確認されると、データ用ブロックDBの退避準備ステータス部DB15にステータスFが書き込まれる(S14)。この時点での各ステータスおよび有効マップの状態は、図15に示す状態J12となる。このように、退避準備ステータス部DB15にステータスFを書き込むことによって、データの上書き処理は、退避先であるデータ書き換え用ブロックDB’の論理番号および実アドレスの書き込みまでの処理が完了したことを確認することが可能となる。
【0094】
次に、データ用ブロック管理部4aは、データ用ブロックDBのデータの退避先であるデータ書き換え用ブロックDB’の論理番号B部DB12に、データ用ブロックDBの論理番号を書き込む(S15)。このことによって、退避されてきたデータがどのデータ用ブロックDBから送信されてきたものかを確認することが可能となる。
【0095】
データ用ブロック管理部4aが、データ書き換え用ブロックDB’の論理番号B部DB12にデータ用ブロックDBの論理番号が正常に書き込まれたことを確認すると、データ書き換え用ブロックDB’の退避ステータス部DB13にステータスGを書き込む(S16)。この時点での、各ステータスおよび有効マップの状態は図15に示す状態J13となる。このように、データ書き換え用ブロックDB’の退避ステータス部DB13にステータスGが書き込まれることによって、データ書き換え用ブロックDB’の論理番号B部DB12にデータ用ブロックDBの論理番号が正常に書き込まれている状態にあることを確認することが可能となる。
【0096】
次に、データ用ブロック管理部4aは、データ用ブロックDBの中にある上書きする前の有効データのうち、上書き対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを、データ用ブロックDBからデータ書き換え用ブロックDB’へコピーするように指令を発行する。そして、新たに上書きするデータをデータ書き換え用ブロックDB’の上書き対象となるデータ部分領域に書き込む(S17)。
【0097】
次に、データ用ブロック管理部4aは、S17における処理が正常に行われたことを確認し、データ書き換え用ブロックDB’の退避ステータス部DB13にステータスHを書き込む(S18)。なお、この時点での各ステータスおよび有効マップの状態は、図15に示す状態J14となる。
【0098】
次に、データ書き換え用ブロックDB’においてデータの上書き処理が完了した後、データ用ブロック管理部4aは、データ用ブロックDBの中の上書きする前のデータを一括消去する(S19)。データ書き換え用ブロックDB’からデータ用ブロックDBへの上書きデータのコピーが完了した後、データ用ブロック管理部4aは、データ用ブロックDBの論理番号A部DB11にデータ書き換え用ブロックDB’の論理番号A部に記憶されている論理番号を書き込む(S20)。以上の処理によって、上書き処理前のデータ書き換え用ブロックDB’が、上書き処理後にはデータ用ブロックDBとなる。
【0099】
次に、データ用ブロック管理部4aは、データ書き換え用ブロックDB’の退避ステータス部DB13にステータスIを書き込み、データの上書き処理が完了する(S21)。つまりデータ書き換え用ブロックDB’の退避ステータス部DB13にステータスIが書き込まれることによって、退避先であるデータ書き換え用ブロックDB’から退避元であるデータ用ブロックDBに、上書きデータのコピーが終了したことを判定できる。同時に、データの上書き処理のためのシーケンスが完了したことを判定できる。また、データ用ブロックDBの退避準備ステータス部DB15のステータスが消去される。なお、この場合における各ステータスおよび有効マップの状態は、図15に示す状態J15となる。
【0100】
以上のようなステップによる上書き処理によれば、各ステータスの状態から処理が正常に行われたか判定できる。つまり、パワーオフによってフラッシュメモリの状態が異常になっているかどうかの判定は、データ用ブロックDBおよびデータ書き換え用ブロックDB’のステータスを検査することにより判断できる。具体的には、データ用ブロックDBの退避準備ステータス部DB15がステータスEである場合は、状態J11で処理が止まっていることがわかる。データ用ブロックDBの退避準備ステータス部DB15がステータスFでありかつデータ書き換え用ブロックDB’の退避ステータス部DB13に値が書き込まれていない場合は、状態J12で処理が止まっていることがわかる。
【0101】
データ書き換え用ブロックDB’の退避ステータス部DB13がステータスGの場合は、状態J13で処理が止まっていることがわかる。データ書き換え用ブロックDB’の退避ステータス部DB13がステータスHの場合は、状態J14で処理が止まっていることがわかる。データ書き換え用ブロックDB’の退避ステータス部DB13がステータスIの場合は、状態J15であり、データの上書き処理時に異常が発生せず無事に処理が完了したものと判断できる。
【0102】
(データの削除処理の流れ)
次に、図16〜図18を参照しながら、データの削除処理の流れについて説明する。図16および図17は、削除処理の流れを示すフローチャートであり、図18は、削除処理中の各ステータスおよび有効マップの状態を示す。なお、図16は、S31からS43までの処理を示しており、図17は、S44からS57までの処理を示しており、S43に引き続いてS44が行われる。
【0103】
まず、テーブル用ブロック管理部4bは、削除するデータに対応するテーブルのステータス部T1にステータスDを書き込むように指令を発行する(S31)。このように、テーブルのステータス部T1にステータスDを書き込むことによって、データの削除についての処理が開始されたことが分かる。なお、この時点での各ステータスの状態は図18の状態J21となる。
【0104】
次に、テーブル用ブロック管理部4bは、フラッシュメモリ5の中からテーブル書き換え用ブロックTB’を検索する(S32)。つまり、削除するデータの管理情報であるテーブルデータを退避させる領域を確保するために、フラッシュメモリ5の記憶領域の中からテーブル書き換え用TB’が検索される。
【0105】
テーブル書き換え用ブロックTB’の検索が完了すると、制テーブル用ブロック管理部4bは、テーブル用ブロックTBの退避準備ステータス部TB15にステータスEを書き込む(S33)。これにより、制御部は、削除処理時において、テーブル書き換え用ブロックTB‘の検索処理までが終了していることが判定できる。なお、この時点での各ステータスの状態は図18の状態J22となる。
【0106】
次に、テーブル用ブロック管理部4bは、テーブル用ブロックTBの退避先論理番号部TB16にテーブル書き換え用ブロックTB‘の論理番号を書き込み、退避先実アドレス部TB17に、テーブルデータの退避先となる、テーブル書き換え用ブロックTB‘のデータ領域の実アドレスを書き込む(S34)。したがって、テーブル用ブロックTBの退避先論理番号部TB16を参照することによって、テーブルデータの退避先であるテーブル書き換え用ブロックTB‘を特定することが可能となる。またテーブル用ブロックTBの退避先実アドレスTB17によって、テーブル書き換え用ブロックTB‘の中のテーブルデータが格納されている場所を特定することが可能となる。
【0107】
次にテーブル用ブロック管理部4bは、テーブル用ブロックTBの退避準備ステータス部TB15にステータスFを書き込む(S35)。この時点での各ステータスおよび有効マップの状態は、図18の状態J23となる。
【0108】
次に、データ用ブロック管理部4aは、削除するデータをデータ用ブロックDBから退避させておくための領域を確保するために、データ書き換え用ブロックDB’を検索する(S36)。そして、データ書き換え用ブロックDB’の検索が完了すると、データ用ブロックDBの退避準備ステータス部DB15にステータスEが書き込まれる(S37)。したがって、退避準備ステータス部DB15のステータスがステータスEであることから、データ書き換え用ブロックDB’の検索が完了したことが判定可能となる。なお、この時点での、各ステータスおよび有効マップの状態は、図18の状態J24となる。
【0109】
次に、データ用ブロックDBの退避先論理番号部DB16にデータ書き換え用ブロックDB’の論理番号が書き込まれ、退避先実アドレス部DB17にデータ書き換え用ブロックDB’の実アドレスが書き込まれる(S38)。したがって、データ用ブロックDBの退避先論理番号部DB16を参照することによって、テーブルデータの退避先であるデータ書き換え用ブロックDB’が特定できる。またデータ用ブロックDBの退避先実アドレス部DB17を参照することによって、データ書き換え用ブロックDB’の中のテーブルデータが格納されている場所が特定できる。
【0110】
その後、データ用ブロックDBの退避準備ステータス部DB15にステータスFが書き込まれる(S39)。これにより、データ用ブロックDBの退避準備が完了したことを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図18の状態J25となる。また、テーブル書き換え用ブロックTB’の退避ステータス部TB13にステータスGが書き込まれる(S40)。この時点で、各ステータスおよび有効マップの状態は、図18の状態J26となる。
【0111】
次に、テーブル用ブロック管理部4bは、テーブル書き換え用ブロックTB’の論理番号B部TB12にテーブル用ブロックTBの論理番号を書き込むとともに、退避元実アドレス部TB14にテーブル用ブロックTBの実アドレスを書き込む(S41)。したがって、テーブル書き換え用ブロックTB’の論理番号B部TB12および退避元実アドレス部TB14を参照することによって、退避されてきたデータがどのテーブル用ブロックTBのどの場所から送信されてきたものかを確認することが可能となる。
【0112】
次に、データ用ブロック管理部4aは、データ書き換え用ブロックDB’の退避ステータス部DB15にステータスGを書き込む(S42)。この時点で、各ステータスおよび有効マップの状態は、図18の状態J27となる。
【0113】
次に、データ用ブロック管理部4aは、データ書き換え用ブロックDB’の論理番号B部DB12にデータ用ブロックDBの論理番号を書き込むとともに、退避元実アドレス部DB14にデータ用ブロックDBの実アドレスを書き込む(S43)。これにより、データ書き換え用ブロックDB’の論理番号B部DB12および退避元実アドレス部DB14を参照することによって、退避されてきたデータがどのデータ用ブロックDBのどの場所から送信されてきたものかを確認することが可能となる。
【0114】
次に、テーブル用ブロック管理部4bは、テーブル用ブロックTBに存在するテーブルの論理番号部T3を検査する(S44)。この検査は、テーブル用ブロックTBの先頭にあるテーブルから1つずつ行われる。そして、S45において、そのテーブルのテーブルステータスがD、すなわち、削除中であるかどうかの判定がされる。S45において、YESである場合は、S48へ進む。一方、S45においてNOの場合は、S46において、その論理番号が、削除対象のデータがあるデータ用ブロックDBの論理番号と一致するか否かが判定される。
【0115】
S46においてNO、すなわち、検査対象となっているテーブルの論理番号と、削除対象のデータがあるデータ用ブロックDBの論理番号とが異なる場合は、S48へ進み、そのテーブルがテーブル用ブロックTBからテーブル書き換え用ブロックTB’の空き領域の先頭へコピーされる。
【0116】
一方、S46においてYES、すなわち、検査対象となっているテーブルの論理番号と、削除対象のデータがあるデータ用ブロックDBの論理番号とが一致する場合は、S47へ進み、そのテーブルのアドレス部T2からアドレス、サイズ部T4からサイズが読み出され、該当データがデータ書き換え用ブロックDB’の空き領域の先頭へコピーされる。この際に、データ書き換え用ブロックDB’の有効マップも更新される。次に、テーブル用ブロック管理部4bは、テーブルをテーブル用ブロックTBからテーブル書き換え用ブロックTB’の空き領域の先頭へコピーすることになるが、ここで、先にコピーしたデータの書き込みアドレスを、テーブルのアドレス部T2へ書き込むようにする。ここで、論理番号部T3は変わらない。
【0117】
S47あるいはS48の処理が終了すると、S49へ進み、テーブル用ブロックTBにおける次のテーブルを検査し、テーブルデータが存在する場合(S50においてNO)は、再度、S45からの処理が繰り返される。
【0118】
一方、次のテーブルデータが存在しない場合(S50においてYES)は、S51へ進み、データ書き換え用ブロックDB’の退避ステータスDB13にステータスHが書き込まれる。これにより、データ書き換え用ブロックDB’に対してデータ用ブロックDBからデータの退避が行われていることを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図18の状態J28となる。
【0119】
次に、S52において、テーブル用ブロック管理部4aは、テーブル書き換え用ブロックTB’の退避ステータスTB13にステータスHを書き込む。これにより、テーブル書き換え用ブロックTB’に対してテーブル用ブロックTBからデータの退避が行われていること確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図17の状態J29となる。
【0120】
次に、S53においてデータ用ブロックDBが消去され、S54において、データ用ブロックDBの論理番号A部DB11にデータ書き換え用ブロックDB’の論理番号A部に記憶されている論理番号が書き込まれる。以上の処理によって、削除処理前のデータ書き換え用ブロックDB’が、削除処理後にはデータ用ブロックDBとなる。
【0121】
その後、S55において、データ書き換え用ブロックDB’の退避ステータスにステータスIが書き込まれる。これにより、データ書き換え用ブロックDB’に対してデータ用ブロックDBからデータの退避が行われ、かつ、データ用ブロックDBにおけるデータの削除が行われていることを確認することが可能となる。この時点で、各ステータスおよび有効マップの状態は、図18の状態J30となる。
【0122】
次に、S56において、テーブル用ブロックTBが消去され、S57において、テーブル用ブロックTBの論理番号A部TB11に、テーブル書き換え用ブロックTB’の論理番号A部に記憶されている論理番号が書き込まれる。以上の処理によって、削除処理前のテーブル書き換え用ブロックTB’が、削除処理後にはテーブル用ブロックTBとなる。
【0123】
S58において、テーブル書き換え用ブロックTB’の退避ステータスTB13にステータスIが書き込まれ、データの削除処理が完了する。この時点で、各ステータスおよび有効マップの状態は、図18の状態J31となる。
【0124】
データの削除処理中にパワーオフが発生した際に、フラッシュメモリ5における記憶状態が異常になっているかどうかの判定は、テーブルのステータス、および、テーブル用ブロックTB、テーブル書き換え用ブロックTB’、データ用ブロックDB、およびデータ書き換え用ブロックDB’のステータスを検査することによって判断することが可能である。具体的には、次のようにして判断される。
【0125】
テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTB、テーブル書き換え用ブロックTB’、データ用ブロックDB、およびデータ書き換え用ブロックDB’のステータスに何も書かれていない場合は、状態J21で処理が止まっていることがわかる。テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTBの退避準備ステータス部TB15がステータスEとなっており、他のステータスに何も書かれていない場合は、状態J22で処理が止まっていることがわかる。テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTBの退避準備ステータス部TB15がステータスFとなっており、他のステータスに何も書かれていない場合は、状態J23で処理が止まっていることがわかる。
【0126】
テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTBの退避準備ステータス部TB15がステータスFとなっており、データ用ブロックDBの退避準備ステータス部DB15がステータスEとなっており、他のステータスに何も書かれていない場合は、状態J24で処理が止まっていることがわかる。テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTBの退避準備ステータス部TB15がステータスFとなっており、データ用ブロックDBの退避準備ステータス部DB15がステータスFとなっており、他のステータスに何も書かれていない場合は、状態J25で処理が止まっていることがわかる。テーブルのステータス部T1がステータスDとなっており、テーブル用ブロックTBの退避準備ステータス部TB15がステータスFとなっており、テーブル書き換え用ブロックTB’の退避ステータス部TB13がステータスGとなっており、データ用ブロックDBの退避準備ステータス部DB15がステータスFとなっており、データ書き換え用ブロックDB’の退避ステータス部DB13に何も書かれていない場合は、状態J26で処理が止まっていることがわかる。
【0127】
テーブルのステータスT1がステータスDとなっており、テーブル書き換え用ブロックTB’およびデータ書き換え用ブロックDB’の退避ステータス部TB13・DB13がともにステータスGとなっている場合は、状態J27で処理が止まっていることがわかる。テーブルのステータスT1がDとなっており、テーブル書き換え用ブロックTB’の退避ステータス部TB13がステータスGとなっており、データ書き換え用ブロックDB’の退避ステータス部DB13がステータスHとなっている場合は、状態J28で処理が止まっていることがわかる。
【0128】
テーブルのステータスT1がステータスDとなっており、テーブル書き換え用ブロックTB’およびデータ書き換え用ブロックDB’の退避ステータス部TB13・DB13がともにステータスHとなっている場合は、状態J29で処理が止まっていることがわかる。テーブル書き換え用ブロックTB’の退避ステータス部TB13がステータスHで、データ書き換え用ブロックDB’の退避ステータス部DB13がステータスIの場合は、状態J30で処理が止まっていることがわかる。そして、テーブル書き換え用ブロックTB’およびデータ書き換え用ブロックDB’の退避ステータス部TB13・DB13がともにステータスIとなっている場合は、パワーオフによるフラッシュメモリ5の記憶状態異常が生じていないと判断することができる。
【0129】
(データ復旧処理)
次に、各処理中にパワーオフが発生し、フラッシュメモリ5の記憶状態に電源断異常が発生した場合の復旧処理について、図19および図20を参照しながら説明する。図19は、図13に示した状態J1および状態J2となっている場合の復旧処理の流れを示すフローチャートであり、図20は、その復旧処理中にパワーロスが発生した場合の各ステータスの状態を示している。なお、状態J1は、検索によって見つけられたテーブル領域TB2の空き領域にテーブルが確保された状態で処理が止まっている状態であり、状態J2は、書き込みデータの管理情報に関するそれぞれの情報がテーブルに書き込まれた状態で処理が止まっている状態である。すなわち、状態J1および状態J2で復旧しなければならないのは、テーブル用ブロックのみである。
【0130】
なお、以下の処理において、データ用ブロックDBあるいはデータ書き換え用ブロックDB’に対して行われる処理はデータ用ブロック管理部4aによって行われ、テーブル用ブロックTBあるいはテーブル書き換え用ブロックTB’に対して行われる処理はテーブル用ブロック管理部4bによって行われるものとする。
【0131】
まず、S61において、書き込もうとしたデータに対応するテーブルのステータス部T1にステータスDが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J41となる。次に、S62において、テーブル書き換え用ブロックTB’の検索が行われ、S63において、テーブル用ブロックTBの退避準備ステータス部TB15にステータスEが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J42となる。
【0132】
次に、S64において、テーブル用ブロックTBの退避先論理番号部TB16にテーブル書き換え用ブロックTB’の論理番号が書き込まれる。その後、S65において、テーブル用ブロックTBの退避準備ステータス部TB15にステータスFが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J43となる。
【0133】
次に、S66において、テーブル書き換え用ブロックTB’の退避ステータス部TB13にステータスGが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J44となる。
【0134】
次に、S68において、テーブル書き換え用ブロックTB’の論理番号B部TB12に、テーブル用ブロックTBの論理番号が書き込まれる。そして、S69において、書き込もうとしたデータに対応するテーブル以外のテーブルが、テーブル用ブロックTBからテーブル書き換え用ブロックTB’へコピーされる。その後、S70において、テーブル書き換え用ブロックTB’の退避ステータスTB13にステータスHが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J45となる。
【0135】
次に、S71において、テーブル用ブロックTBが消去される。その後、S72において、テーブル用ブロックTBの論理番号A部TB11にテーブル書き換え用ブロックTB’の論理番号が書き込まれるとともに、S73において、テーブル書き換え用ブロックTB’の退避ステータス部TB13にステータスIが書き込まれる。この時点で、各ステータスおよび有効マップの状態は、図20の状態J46となる。以上の手順により、状態J1および状態J2となっている場合の復旧処理が完了し、データを書き込む前の状態に戻ることになる。
【0136】
次に、上記の復旧処理中にパワーオフが発生し、フラッシュメモリ5における記憶状態が異常となった場合の復旧処理について説明する。状態J41あるいは状態J42となっている状態から復旧処理を行う場合には、再度上記した復旧処理、すなわち状態J1あるいは状態J2からの復旧処理を繰り返すことにより復旧することができる。
【0137】
状態J43あるいは状態J44となっている状態から復旧処理を行う場合には、まず、一度テーブル書き換え用ブロックTB’を消去する。そして、テーブル書き換え用ブロックTB’の論理番号A部TB11にテーブル用ブロックTBの退避先論理番号部TB16に書かれている値を書き込むことにより、状態J43と同じ状態となる。続いて、上記した図19に示すフローチャートにおけるS66からの処理を行えば、復旧することができる。また、テーブル書き換え用ブロックTB’の消去中あるいは論理番号の書き込み中にパワーオフが発生しても、再度消去から繰り返すことにより状態J43と同じ状態にすることができるので、復旧可能である。
【0138】
状態J45あるいは状態J46となっている状態から復旧処理を行う場合には、上記した図19に示すフローチャートにおけるS70からの処理を行うことにより、復旧することができる。
【0139】
一方、状態J3となっている状態から復旧処理を行う場合には、データの削除処理を行うことによって復旧できる。なお、状態J3は、データ用ブロックDBの管理情報領域DB1にある有効マップにおいて、データを書き込む領域のアドレスに対応する位置のビットが0に設定された状態である。このように、データの削除処理によって復旧を行っている最中にパワーオフが発生して、フラッシュメモリ5に記憶異常が発生した場合には、後述の削除中の復旧処理で説明する。
【0140】
状態J11となっている状態から復旧処理を行う場合には、上記した図14に示すフローチャートにおけるS13からの処理を再度実行することによって復旧できる。状態J12あるいは状態J13となっている状態から復旧処理を行う場合には、まず、データ書き換え用ブロックDB’を一度消去してから、データ書き換え用ブロックDB’の論理番号A部DB11にデータ用ブロックDBの退避先論理番号部DB16に書かれている値を書き込む。これにより、状態J12と同じ状態になるので、続いて、上記した図14に示すフローチャートにおけるS15からの処理を実行することによって復旧できる。状態J14あるいは状態J15となっている状態から復旧処理を行う場合には、上記した図14に示すフローチャートにおけるS18からの処理を行うことにより復旧できる。
【0141】
次に、データの削除処理中にパワーオフなどが発生した場合の復旧処理について説明する。状態J21となっている状態から復旧処理を行う場合には、再度、上記した図16に示すフローチャートにおけるS31からの処理を実行することにより復旧できる。状態J22となっている状態から復旧処理を行う場合には、上記した図16に示すフローチャートにおけるS34からの処理を実行することにより復旧できる。状態J23となっている状態から復旧処理を行う場合には、上記した図16に示すフローチャートにおけるS36からの処理を実行することにより復旧できる。状態J24となっている状態から復旧処理を行う場合には、上記した図16に示すフローチャートにおけるS38からの処理を実行することにより復旧できる。
【0142】
状態J25となっている状態から復旧処理を行う場合には、上記した図16に示すフローチャートにおけるS40からの処理を実行することにより復旧できる。状態J26となっている状態から復旧処理を行う場合には、まず、テーブル書き換え用ブロックTB’を一度消去し、テーブル書き換え用ブロックTB’の論理番号A部TB11にテーブル用ブロックTBの退避先論理番号部TB16に書かれている値を書き込む。これにより、状態J25と同じ状態になるので、続いて、上記した図16に示すフローチャートにおけるS40からの処理を行えば、復旧できる。
【0143】
状態J27となっている状態から復旧処理を行う場合には、まず、データ書き換え用ブロックDB’およびテーブル書き換え用ブロックTB’を消去し、テーブル書き換え用ブロックTB’の論理番号A部TB11にテーブル用ブロックTBの退避先論理番号部TB16に書かれている値を書き込むとともに、データ書き換え用ブロックDB’の論理番号A部DB11にデータ用ブロックDBの退避先論理番号部DB16に書かれている値を書き込む。これにより、状態J25と同じ状態になるので、続いて、上記した図16に示すフローチャートにおけるS40から処理を行えば復旧できる。
【0144】
状態J28となっている状態から復旧処理を行う場合には、上記した図17に示すフローチャートにおけるS51からの処理を行えば復旧できる。状態J29あるいは状態J30となっている状態から復旧処理を行う場合には、上記した図17に示すフローチャートにおけるS52から処理を行えば復旧できる。状態J31あるいは状態J32となっている状態から復旧処理を行う場合には、上記した図17に示すフローチャートにおけるS55からの処理を行えば復旧できる。
【0145】
以上のような処理によれば、フラッシュメモリ5に対して書き込み処理や消去処理などを行っている最中に、例えばパワーオフが発生することによって記憶状態が異常になったとしても、これを正常な状態に復旧させることができる。また、復旧処理中にパワーオフが発生したとしても、同様に正常な状態に復旧させることができる。また、パワーオフが発生した場合、ICカード1は、必ず不活性化状態となるので、メモリ異常の検査は、活性化直後に一度だけ行うようにすればよい。異常があった場合には、復旧処理を施すようにすることによって、正常な状態に復旧することができる。
【0146】
【発明の効果】
以上のように、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスを記憶する構成である。
【0147】
これにより、例えばデータの書き込み処理の最中にパワーオフが発生し、書き込み処理が中断されたとしても、テーブルのステータスを確認することによって、どの時点で書き込み処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び書き込み処理を行うことによって、書き込み処理を正常に完了させることが可能となるという効果を奏する。
【0148】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、上記ステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶する構成としてもよい。
【0149】
これにより、上記の構成による効果に加えて、書き込み処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【0150】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶する構成としてもよい。
【0151】
これにより、上記の構成による効果に加えて、有効マップを確認することによって、データ用ブロックにおけるデータ領域の空き領域の大きさを把握することが可能となるという効果を奏する。また、復旧処理を行う際にも、この有効マップを確認することによって、書き込み処理がどの段階まで進んでいるかをより正確に把握することが可能となるという効果を奏する。
【0152】
また、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段を備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了する構成である。
【0153】
これにより、どの時点で上書き処理が中断されても、中断されている時点から再度処理を行うことによって、正常に上書き処理を完了させることが可能となるという効果を奏する。
【0154】
また、本発明に係るメモリ管理装置は、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶する構成としてもよい。
【0155】
これにより、上記の構成による効果に加えて、例えばデータの上書き処理の最中にパワーオフが発生し、上書き処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で上書き処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び上書き処理を行うことによって、上書き処理を正常に完了させることが可能となるという効果を奏する。
【0156】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0157】
これにより、上記の構成による効果に加えて、上書き処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【0158】
また、本発明に係るメモリ管理装置は、上記不揮発性メモリに設けられるデータ用ブロックおよびデータ書き換え用ブロックを管理するデータ用ブロック管理手段と、上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶するテーブル領域を備えており、上記データ用ブロックに記憶されているデータの削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成である。
【0159】
これにより、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となるという効果を奏する。
【0160】
また、本発明に係るメモリ管理装置は、上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【0161】
これにより、上記の構成による効果に加えて、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となるという効果を奏する。
【0162】
また、本発明に係るメモリ管理装置は、上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0163】
これにより、上記の構成による効果に加えて、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【0164】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了する構成としてもよい。
【0165】
これにより、上記の構成による効果に加えて、どの時点で削除処理が中断されても、中断されている時点から再度処理を行うことによって、正常に削除処理を完了させることが可能となるという効果を奏する。
【0166】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶する構成としてもよい。
【0167】
これにより、上記の構成による効果に加えて、例えばデータの削除処理の最中にパワーオフが発生し、削除処理が中断されたとしても、管理情報領域のステータスを確認することによって、どの時点で削除処理が中断されているのかを正確に把握することができる。したがって、復旧処理として、中断された時点から再び削除処理を行うことによって、削除処理を正常に完了させることが可能となるという効果を奏する。
【0168】
また、本発明に係るメモリ管理装置は、上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶する構成としてもよい。
【0169】
これにより、上記の構成による効果に加えて、削除処理の進行状況を正確に把握することが可能となるので、復旧処理を正確に行うことができるという効果を奏する。
【0170】
また、本発明に係るメモリ管理プログラムは、上記本発明に係るメモリ管理装置が備える各手段をコンピュータに実現させるものである。
【0171】
これにより、上記プログラムをコンピュータシステムにロードすることによって、上記メモリ管理装置を実現することが可能となるという効果を奏する。
【0172】
また、本発明に係るICカードは、上記本発明に係るメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および/または外部の装置から電力供給を行うインターフェース部とを備えている構成である。
【0173】
これにより、パワーオフによってメモリの状態が異常になったとしても、これを正常な状態に復旧することが可能となるので、データの正当性の保証を確実にすることができ、動作信頼性の高いICカードを提供することができるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るICカードが備えるマイコン部の機能的な構成を示すブロック図である。
【図2】上記ICカードの概略構成を示すブロック図である。
【図3】上記ICカードに搭載されているフラッシュメモリのブロック構成を示す図である。
【図4】同図(a)は、上記フラッシュメモリが備えるデータ用ブロックの概略構成を示す図であり、同図(b)は、上記フラッシュメモリが備えるテーブル用ブロックの概略構成を示す図である。
【図5】上記データ用ブロックにおける管理情報領域の構成を示す図である。
【図6】上記テーブル用ブロックにおける管理情報領域の構成を示す図である。
【図7】テーブルの構成を示す図である。
【図8】テーブル用ブロック、データ用ブロック、および有効マップの関係を示す図である。
【図9】テーブルのステータスについての表である。
【図10】退避準備ステータスについての表である。
【図11】退避ステータスについての表である。
【図12】データの書き込み処理の流れを示すフローチャートである。
【図13】データの書き込み処理中における状態を示す表である。
【図14】データの上書き処理の流れを示すフローチャートである。
【図15】データの上書き処理中における状態を示す表である。
【図16】データの削除処理の流れの前半を示すフローチャートである。
【図17】データの削除処理の流れの後半を示すフローチャートである。
【図18】データの削除処理中における状態を示す表である。
【図19】状態J1、J2の復旧処理の流れを示すフローチャートである。
【図20】状態J1、J2の復旧処理中における状態を示す表である。
【符号の説明】
1 ICカード
2 マイコン部
3 I/F部
4 制御部
4a データ用ブロック管理部(データ用ブロック管理手段)
4b テーブル用ブロック管理部(テーブル用ブロック管理手段)
5 フラッシュメモリ(不揮発性メモリ)
6 CPU
7 RAM
8 ROM
9 非接触用I/F
10 接触用I/F
DB データ用ブロック
DB’ データ書き換え用ブロック
TB テーブル用ブロック
TB’ テーブル書き換え用ブロック
DB1 管理情報領域
DB2 データ領域
TB1 管理情報領域
TB2 テーブル領域
Claims (14)
- 複数のブロックを含む一括消去型の不揮発性メモリを管理するメモリ管理装置であって、
上記不揮発性メモリに設けられるデータ用ブロックを管理するデータ用ブロック管理手段と、
上記不揮発性メモリに設けられるテーブル用ブロックを管理するテーブル用ブロック管理手段とを備え、
上記データ用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するためのテーブルを記憶しており、
上記データ用ブロック管理手段が、上記データ用ブロックに対してデータの書き込み処理を行った場合に、上記テーブル用ブロック管理手段が、該データに対応する上記テーブルに書き込み処理の進行状況を示すステータスとして、テーブル書き込み開始、テーブル書き込み完了、および、データ書き込み完了を示す情報を上記テーブルに記憶することを特徴とするメモリ管理装置。 - 上記データ用ブロック管理手段が、上記データ用ブロックに、上記データ領域に有効なデータが記録されている領域を示す情報を格納する有効マップを記憶することを特徴とする請求項1記載のメモリ管理装置。
- 上記データ用ブロック管理手段は、上記不揮発性メモリに設けられるデータ用ブロックに加え、データ書き換え用ブロックを管理しており、
上記データ書き換え用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、
上記データ用ブロックに記憶されているデータの上書き処理を行う場合に、上記データ用ブロック管理手段が、
上書き処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、上書き処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行うとともに、上書きするデータを該データ書き換え用ブロックにおける上書き対象となるデータ部分領域に書き込む処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、上書き処理を完了することを特徴とする請求項1記載のメモリ管理装置。 - 上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記データ用ブロック管理手段が、上記管理情報領域に、上記上書き処理の進行状況を示すステータスを記憶することを特徴とする請求項3記載のメモリ管理装置。 - 上記データ用ブロック管理手段が、上書き処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項4記載のメモリ管理装置。
- 上記データ用ブロック管理手段は、上記データ用ブロックに加え、データ書き換え用ブロックを管理しており、
上記データ書き換え用ブロックが、データが記憶される複数のデータ部分領域を含むデータ領域を備えており、上記テーブル用ブロックが、上記各データ部分領域に記憶されているデータに対応する、該データを管理するための上記テーブルを記憶するテーブル領域を備えており、
上記データ用ブロックに記憶されているデータの削除処理を行う場合に、
上記テーブル用ブロック管理手段が、
削除処理の対象となるデータに対応する上記テーブルに、削除対象であることを示すステータスを記憶し、
上記データ用ブロック管理手段が、
削除処理の対象となるデータを含むデータ用ブロックのデータ領域に記憶されている有効データのうち、削除処理の対象となるデータを含むデータ部分領域以外のデータ部分領域のデータを上記データ書き換え用ブロックにコピーする退避処理を行った後に、データ用ブロックのデータ領域に記憶されている内容を消去する消去処理を行い、上記データ書き換え用ブロックをデータ用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴とする請求項1記載のメモリ管理装置。 - 上記データ用ブロックおよび上記データ書き換え用ブロックが、それぞれ、上記データ領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記データ用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶することを特徴とする請求項6記載のメモリ管理装置。 - 上記データ用ブロック管理手段が、削除処理前の上記データ書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項7記載のメモリ管理装置。
- 上記テーブル用ブロック管理手段が、上記不揮発性メモリに設けられるテーブル書き換え用ブロックをさらに管理するとともに、
上記削除処理を行う場合に、上記テーブル用ブロック管理手段が、
削除処理の対象となるデータに対応するテーブルを含むテーブル用ブロックのテーブル領域に記憶されている内容を上記テーブル書き換え用ブロックにコピーする退避処理を行った後に、テーブル用ブロックのテーブル領域に記憶されている内容を消去する消去処理を行い、上記テーブル書き換え用ブロックをテーブル用ブロックに変更し、上記テーブル用ブロックを上記テーブル書き換え用ブロックに変更することによって退避処理を完了し、削除処理を完了することを特徴とする請求項6、7、または8記載のメモリ管理装置。 - 上記テーブル用ブロックおよび上記テーブル書き換え用ブロックが、それぞれ、上記テーブル領域を管理するための管理情報が記憶される管理情報領域をさらに備えており、
上記テーブル用ブロック管理手段が、上記管理情報領域に、上記削除処理の進行状況を示すステータスを記憶することを特徴とする請求項9記載のメモリ管理装置。 - 上記テーブル用ブロック管理手段が、削除処理前の上記テーブル書き換え用ブロックの管理情報領域に、上記ステータスとして、上記退避処理の開始、上記消去処理中、および上記退避処理の完了を示す情報を記憶することを特徴とする請求項10記載のメモリ管理装置。
- 請求項1ないし11のいずれか一項に記載のメモリ管理装置が備える各手段をコンピュータに実現させるためのメモリ管理プログラム。
- 請求項1ないし11のいずれか一項に記載のメモリ管理装置が備える各手段をコンピュータに実現させるためのメモリ管理プログラムを記録した記録媒体。
- 請求項1ないし11のいずれか一項に記載のメモリ管理装置と、該メモリ管理装置によって管理される一括消去型の不揮発性メモリと、外部の装置との間でデータの送受信を行う、および/または外部の装置から電力供給を行うインターフェース部とを備えていることを特徴とするICカード。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003188841A JP4060245B2 (ja) | 2003-06-30 | 2003-06-30 | メモリ管理装置およびこれを備えたicカード |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003188841A JP4060245B2 (ja) | 2003-06-30 | 2003-06-30 | メモリ管理装置およびこれを備えたicカード |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005025401A JP2005025401A (ja) | 2005-01-27 |
JP4060245B2 true JP4060245B2 (ja) | 2008-03-12 |
Family
ID=34187249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003188841A Expired - Fee Related JP4060245B2 (ja) | 2003-06-30 | 2003-06-30 | メモリ管理装置およびこれを備えたicカード |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4060245B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4661369B2 (ja) * | 2005-05-31 | 2011-03-30 | Tdk株式会社 | メモリコントローラ |
JP4536785B2 (ja) * | 2008-02-01 | 2010-09-01 | 富士通株式会社 | 情報処理装置、該情報処理装置で行われるデータ記憶を制御する制御部およびデータ記憶の制御方法 |
KR101878200B1 (ko) | 2012-01-09 | 2018-07-16 | 삼성전자 주식회사 | 서든 파워 오프 발생 시 메모리 시스템을 제어하는 방법 |
JP5990430B2 (ja) * | 2012-08-29 | 2016-09-14 | 株式会社バッファローメモリ | Ssd(ソリッドステートドライブ)装置 |
KR102050729B1 (ko) | 2013-02-12 | 2019-12-02 | 삼성전자 주식회사 | 메모리 시스템 |
JP6311525B2 (ja) * | 2014-08-08 | 2018-04-18 | 株式会社デンソー | 記憶媒体の管理装置 |
-
2003
- 2003-06-30 JP JP2003188841A patent/JP4060245B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2005025401A (ja) | 2005-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100377120C (zh) | 非易失性存储器装置的控制方法 | |
US6601132B2 (en) | Nonvolatile memory and method of writing data thereto | |
US5841699A (en) | Storage device and method to detect its degradation | |
WO2003056433A1 (fr) | Dispositif a memoire et appareil d'enregistrement/reproduction utilisant ledit dispositif | |
TWI451248B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
JP2010182270A (ja) | 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法 | |
CN103914667B (zh) | 一种安全读写eeprom的方法及其系统 | |
JPH09506460A (ja) | Eepromメモリの安全更新方法 | |
US20110022746A1 (en) | Method of dispatching and transmitting data streams, memory controller and memory storage apparatus | |
JP4060245B2 (ja) | メモリ管理装置およびこれを備えたicカード | |
CN100364013C (zh) | 在闪存中存放校验码的方法及装置 | |
JP4776462B2 (ja) | 携帯可能電子装置および携帯可能電子装置の制御方法 | |
JP3675375B2 (ja) | 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法 | |
JP3950316B2 (ja) | Icカードおよびicカードのメモリアクセス制御方法 | |
JP2003196165A (ja) | 不揮発性メモリ及びそのデータ更新方法 | |
US20070274302A1 (en) | Data Storage Device, Memory Managing Method, and Program | |
JP6314859B2 (ja) | 電子制御装置及びソフトウェア書き換えシステム | |
JPH10198776A (ja) | 携帯可能情報記録媒体およびこれに対する情報書込/読出方法 | |
JP3620478B2 (ja) | 記憶装置、この記憶装置を用いたデータ処理システム及びデータ読み出し方法 | |
JP2000357216A (ja) | Icカード | |
CN112711378B (zh) | 数据储存方法及读写设备 | |
JP2015049722A (ja) | マイクロコンピュータ及び不揮発性メモリのブロック管理方法 | |
CN111949198A (zh) | 一种坏块管理方法、装置和存储设备 | |
JP2008305263A (ja) | 不揮発性半導体記憶装置及びメモリ管理方法 | |
JP2006107363A (ja) | 携帯可能電子装置と携帯可能電子装置に用いられるメモリアクセス方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050810 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070809 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070809 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071219 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101228 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111228 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111228 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121228 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121228 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |