(57)【要約】【課題】一般的なデータ保障方法に比べ書き込み処理速度を向上させることが可能な情報記録媒体、データ読み書き方法、及びデータ読み書きプログラムを提供する。【解決手段】データ記憶領域ブロックに論理ブロック番号Ｎｙを保持させ、予備領域管理ブロックに予備領域ブロックの論理ブロック番号Ｎｘを保持させるように構成し、書き込み処理を行う場合に、予備領域管理ブロックを参照して予備領域ブロックを検索し、当該検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに書き込みデータを書き込んだ後、古くなったデータ記憶領域ブロックの物理ブロック番号Ｎｘを新たな予備領域ブロックの物理ブロック番号Ｎｘとして予備領域管理ブロックに書き込む。【選択図】図３
2014139737.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体であって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記コントローラは、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索手段と、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索手段と、
前記第１検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込手段と、
前記第２検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込手段と、
を備えることを特徴とする情報記録媒体。
【請求項２】
前記データ記憶領域ブロックには、当該データ記憶領域ブロックの使用回数を示す使用カウンタが記憶されており、
前記第１書込手段は、前記更新データと前記論理ブロック番号とを前記予備領域ブロックへ書き込む際に、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記使用カウンタを１インクリメントした使用カウンタを前記予備領域ブロックへ書き込むことを特徴とする請求項１に記載の情報記録媒体。
【請求項３】
前記第２書込手段は、前記第１検索手段により検索された複数の前記予備領域ブロックのうち前記第１書込手段により前記更新データが書き込まれなかった前記予備領域ブロックを新たな前記予備領域管理ブロックとして当該予備領域ブロックに、前記新たな予備領域ブロックの前記物理ブロック番号と、前記新たな前記データ記憶領域ブロック及び前記新たな前記予備領域管理ブロックとして使用されなかった前記予備領域ブロックの前記物理ブロック番号とを書き込むことを特徴とする請求項１または２に記載の情報記録媒体。
【請求項４】
前記予備領域管理ブロックには誤り検査情報がさらに記憶されており、
前記コントローラは、
前記第１検索手段により検索された前記予備領域ブロックが未使用でない場合、又は前記第２書込手段による書き込みが正常に終了しない場合、前記予備領域管理ブロックが２つ以上存在するか否かを判定する第１判定手段と、
前記第１判定手段により前記予備領域管理ブロックが２つ以上存在すると判定された場合、最も新しい前記予備領域管理ブロックに記憶されている誤り検査情報が正常であるかを判定する第２判定手段と、
前記第２判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常であると判定された場合、最も前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する一方、前記第２判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常でないと判定された場合、最も前記予備領域管理ブロック以外の前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する初期化手段と、
を備えることを特徴とする請求項１乃至３の何れか一項に記載の情報記録媒体。
【請求項５】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより行われるデータ読み書き方法であって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記データ読み書き方法は、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索ステップと、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索ステップと、
前記第１検索ステップにより検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索ステップにより検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込ステップと、
前記第２検索ステップにより検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込ステップによる前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込ステップと、
を含むことを特徴とするデータ読み書き方法。
【請求項６】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより実行されるデータ読み書きプログラムであって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記コントローラに、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索手段、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索手段、及び前記第１検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込手段、及び、
前記第２検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込手段として機能させることを特徴とするデータ読み書きプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のブロックに分割された記憶領域を有し、各ブロックには物理的なアドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備えるＩＣカードの技術に関する。
【背景技術】
【０００２】
現在普及しているＩＣカードは、外部端末から供給される電源を利用して動作する。そのため、データ書き込み中に外部端末からＩＣカードを引き抜くなどの電源供給を遮断する行為が行われた場合、動作に必要な電源が供給されなくなり、ＩＣカードの不揮発性メモリに記憶されているデータが破壊されてしまう。そのため、書き込み処理は、書き込みを正常に完了させるか、または書き込み前の状態に戻すかによってデータの完全性を保障しなければならない。また、電子マネーやＩＤカードに利用されるＩＣカードは、ユーザーの利便性を損なわないために処理速度を劣化させない工夫が必要である。
【０００３】
特許文献１には、大容量のデータブロック領域を取り扱う場合においても、電源途絶時のデータ保証を確保しながら、効率良くかつ高速に処理を実行することを可能とするＩＣカード及びその情報処理方法が開示されている。特許文献１に開示されるＩＣカードの不揮発性メモリは、利用者が必要とするデータが格納されるデータブロック領域と、リーダライタからＩＣカードへデータの読み書き時に指定されるデータが格納される予備ブロック領域と、ＩＣカードの不揮発性メモリにおいて論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報が格納されるアドレス管理領域とを有してなる。そして、書き込み処理時には、書き込み対象のデータブロック領域内のブロックの代わりに予備ブロック領域内のブロックに対象データを書き込み、そのブロックを書き込み対象のブロックと交換するようにアドレス管理領域を更新するようになっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３９２０１６６号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１の技術では、書き込み処理時には、予備ブロック領域のブロックへの書き込みが完了した後、アドレス管理領域が更新される。しかし、アドレス管理領域には、データブロック記憶領域を管理（つまり、論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報（テーブル）を管理）するブロックと、予備ブロック領域を管理（つまり、空き領域を管理）するブロックが含まれているため、一度の書き込み処理において、３回、ブロック（つまり、３ブロック）が更新されることになる。そのため、一般的なデータ保障方法（書き込み処理を実行する前に、その書き込み対象領域を不揮発性メモリ上の別のエリアに一時的に退避し、バックアップする方法）に比べ書き込み処理速度が低下してしまう可能性がある。
【０００６】
そこで、本発明は、一般的なデータ保障方法に比べ書き込み処理速度を向上させることが可能な情報記録媒体、データ読み書き方法、及びデータ読み書きプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体であって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記コントローラは、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索手段と、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索手段と、前記第１検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込手段と、前記第２検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込手段と、を備えることを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の情報記録媒体において、前記データ記憶領域ブロックには、当該データ記憶領域ブロックの使用回数を示す使用カウンタが記憶されており、前記第１書込手段は、前記更新データと前記論理ブロック番号とを前記予備領域ブロックへ書き込む際に、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記使用カウンタを１インクリメントした使用カウンタを前記予備領域ブロックへ書き込むことを特徴とする。
【０００９】
請求項３に記載の発明は、請求項１または２に記載の情報記録媒体において、前記第２書込手段は、前記第１検索手段により検索された複数の前記予備領域ブロックのうち前記第１書込手段により前記更新データが書き込まれなかった前記予備領域ブロックを新たな前記予備領域管理ブロックとして当該予備領域ブロックに、前記新たな予備領域ブロックの前記物理ブロック番号と、前記新たな前記データ記憶領域ブロック及び前記新たな前記予備領域管理ブロックとして使用されなかった前記予備領域ブロックの前記物理ブロック番号とを書き込むことを特徴とする。
【００１０】
請求項４に記載の発明は、請求項１乃至３の何れか一項に記載の情報記録媒体において、前記予備領域管理ブロックには誤り検査情報がさらに記憶されており、前記コントローラは、前記第１検索手段により検索された前記予備領域ブロックが未使用でない場合、又は前記第２書込手段による書き込みが正常に終了しない場合、前記予備領域管理ブロックが２つ以上存在するか否かを判定する第１判定手段と、前記第１判定手段により前記予備領域管理ブロックが２つ以上存在すると判定された場合、最も新しい前記予備領域管理ブロックに記憶されている誤り検査情報が正常であるかを判定する第２判定手段と、前記第２判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常であると判定された場合、最も前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する一方、前記第２判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常でないと判定された場合、最も前記予備領域管理ブロック以外の前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する初期化手段と、を備えることを特徴とする。
【００１１】
請求項５に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより行われるデータ読み書き方法であって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記データ読み書き方法は、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索ステップと、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索ステップと、前記第１検索ステップにより検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索ステップにより検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込ステップと、前記第２検索ステップにより検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込ステップによる前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込ステップと、を含むことを特徴とする。
【００１２】
請求項６に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより実行されるデータ読み書きプログラムであって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記コントローラに、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第１検索手段、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第２検索手段、及び前記第１検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第２検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第１書込手段、及び、前記第２検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第１書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第２書込手段として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、一度の書き込み処理において２ブロックの書き込みだけでデータを保障した書き込みを実現でき、書き込み処理速度を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】（Ａ）は、本実施形態に係るフラッシュメモリにおける物理アドレス空間を示す図であり、（Ｂ）は、本実施形態に係るフラッシュメモリにおける論理アドレス空間を示す図である。
【図３】ＣＰＵ１１により実行される書き込み処理を示すフローチャートである。
【図４】図３に示すステップＳ８における予備領域管理ブロックの更新処理の詳細を示すフローチャートである。
【図５】図３に示すステップＳ１１におけるロールバック処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１６】
先ず、図１及び図２を参照して、本実施形態に係るＩＣカードについて説明する。図１は、ＩＣカード１の概要構成例を示す図である。図２（Ａ）は、本実施形態に係るフラッシュメモリにおける物理アドレス空間を示す図であり、図２（Ｂ）は、本実施形態に係るフラッシュメモリにおける論理アドレス空間を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれる。また、ＩＣカード１は、上記カードの他に、不揮発性メモリを搭載した組込み機器、データ保障が必要なＵＳＢメモリなどの情報記録媒体であっても良い。
【００１７】
図１に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。なお、フラッシュメモリの代わりにＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory)であっても構わない。
【００１８】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、例えばオペレーティングシステム（ＯＳ）に組み込まれる本発明のデータ読み書きプログラムにしたがって、外部端末２から受信したコマンドに対応した所定のコマンド処理を実行し、ＲＡＭ１２及びフラッシュメモリ１３に対するデータの読み書き処理を行う。例えば、ＣＰＵ１１は、フラッシュメモリ１３に対して、ページ単位（読み書きを行う最小単位であり、例えば１２８バイト、２５６バイト、または５１２バイト）の消去と、１バイト単位での読み書きを行う。外部端末２は、ＩＣカード１との間で接触または非接触で通信を行うためのリーダーライタを備える。外部端末２の例としてはＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣカード１が携帯端末に搭載される場合、外部端末２には携帯端末の機能を担う制御部が該当する。
【００１９】
ＲＡＭ１２は、データを一時的に記憶する揮発性メモリである。フラッシュメモリ１３は、プログラム（本発明のデータ読み書きプログラムを含む）やデータを格納する不揮発性メモリである。フラッシュメモリ１３では、記憶されたデータを書き換える際、ページ単位の消去処理(0→1あるいは1→0)と、１バイト書き込み処理(1→0あるいは0→1)が発生する。また、フラッシュメモリ１３は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには、物理アドレス空間（物理的なアドレス空間）を形成する物理ブロック番号が付与されている。なお、ブロックはページを１つ以上連ねたものである。物理アドレス空間とは、メモリアドレスによってアクセス可能なメモリ空間を意味する。本実施形態では、ブロックを３種類に分類することでデータ保障を実現し、かつ書き込み処理時間やメモリの使用効率を向上させている。
【００２０】
図２（Ａ）の例では、物理ブロック番号Ｎｘが“01”と“02”と“04”のブロックが、それぞれ、データ記憶領域ブロックである。また、物理ブロック番号Ｎｘが“03”と“05”と“06”と“7F”のブロックが、それぞれ、予備領域ブロックである。また、物理ブロック番号Ｎｘが“80”のブロックが、予備領域管理ブロックである。データ記憶領域ブロックには、論理ブロック番号Ｎｙ、使用カウンタＣ、データＤ、及び誤り検査情報Ｐが記憶（格納）される。論理ブロック番号Ｎｙは、図２（Ｂ）に示すように、論理アドレス空間（論理的なアドレス空間）を形成（構築）するための情報である。使用カウンタＣは、当該使用カウンタＣを記憶するデータ記憶領域ブロックの使用回数を示す値であり、当該データ記憶領域ブロックにデータＤが書き込まれることで当該データ記憶領域ブロックが使用される度に１インクリメントされる。使用カウンタＣにより各ブロックの新旧を判定することができ、また、当該ブロックの使用回数を管理することができる。データＤは、例えば、ＣＰＵ１１によるコマンド処理の結果に基づいて外部端末２へ出力されるデータである。データＤの例としては、ＩＣチップ１ａ内に保持する値、またはＩＣチップ１ａ内で演算した結果の値である。例えば、論理ブロック番号Ｎｙ“01”が記憶されているデータ記憶領域ブロックには、データＤとして鍵データが記憶され、論理ブロック番号Ｎｙ“02”が記憶されているデータ記憶領域ブロックには、データＤとして報酬ポイント（或いは日付）が記憶されるというように、論理ブロック番号ＮｙとデータＤの種別とが関連付けられる。誤り検査情報Ｐは、当該誤り検査情報Ｐが記憶されるブロック内のデータの値が正当であるかどうかを判定するための情報である。誤り検査情報Ｐの例には、ＣＲＣ（Cyclic Redundancy Check, CRC）やチェックサム等がある。一方、予備領域ブロックには、初期化された値（例えば、FFFF…）が記憶される。また、予備領域管理ブロックには、予備領域管理ブロック識別子ＩＤ、使用カウンタＣ、予備領域ブロックの物理ブロック番号Ｎｘ、及び誤り検査情報Ｐが記憶される。予備領域管理ブロック識別子ＩＤは、予備領域管理ブロックを識別するために当該予備領域管理ブロックに付与された識別情報である。図２（Ａ）の例では、１つの予備領域管理ブロックを示しているが、予備領域管理ブロックは１つに限るものではなく、１ブロック内に予備領域ブロックの物理ブロック番号をすべて収めることができない場合は、複数の予備領域管理ブロックが確保される。予備領域ブロックの物理ブロック番号Ｎｘを予備領域管理ブロックに記憶することで予備領域ブロックが管理される。
【００２１】
ところで、仮に、予備領域管理ブロックに、物理ブロック番号から論理ブロック番号に変換するためのテーブルを記憶する場合、当該テーブルが複数ページに跨る可能性が増すことになる。このことは、データを書き換える際にページ単位の消去処理及び１バイト書き込み処理が発生するフラッシュメモリ１３において、書き込み処理速度を低下させる結果となる。本実施形態では、予備領域管理ブロックで予備領域ブロックを管理するものの、物理ブロック番号から論理ブロック番号に変換するためのテーブルを管理しないので、当該テーブルが複数ページに跨ることを回避でき、その結果、書き込み処理速度を向上することができる。
【００２２】
Ｉ／Ｏ回路１４は、外部端末２とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末２とのデータ通信を行う端子である。
【００２３】
そして、ＣＰＵ１１は、外部端末２からのコマンドに応じてデータの書き込み処理を行う場合に、本発明における第１検索手段として機能することにより、予備領域管理ブロックを参照して予備領域ブロックを検索し、本発明における第２検索手段として機能することにより、上記コマンドに応じて算出された論理ブロック番号Ｎｙを記憶しているデータ記憶領域ブロックを検索する。ここで、論理ブロック番号Ｎｙは、上記コマンドで指定される書き込み先論理アドレスと、１ブロックあたりのデータサイズとから算出される。
【００２４】
また、ＣＰＵ１１は、本発明における第１書込手段として機能することにより、上記第１検索手段により検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに、上記第２検索手段により検索されたデータ記憶領域ブロックに記憶されているデータＤに対応する更新データＤｚと、上記コマンドに応じて算出された論理ブロック番号Ｎｙとを書き込む。また、ＣＰＵ１１は、更新データＤｚと論理ブロック番号Ｎｙとを予備領域ブロックへ書き込む際に、上記第２検索手段により検索されたデータ記憶領域ブロックに記憶されている使用カウンタを１インクリメントした使用カウンタＣを上記予備領域ブロックへ書き込む。例えば、図２（Ａ）に示す物理ブロック番号Ｎｘ“03”の予備領域ブロックが第１検索手段により検索され、且つ、物理ブロック番号Ｎｘ“01”のデータ記憶領域ブロックが第２検索手段により検索されたとする。この場合、物理ブロック番号Ｎｘ“01”のデータ記憶領域ブロックに記憶されているデータＤ“33333333・・・”に対応する更新データＤｚ（例えば“33333333・・・”を上書きする値）と、同データ記憶領域ブロックに記憶されている論理ブロック番号Ｎｙ“03”と、同データ記憶領域ブロックに記憶されている使用カウンタＣ“02”を１インクリメントした使用カウンタＣ“03”とが物理ブロック番号Ｎｘ“03”の予備領域ブロックに書き込まれる。このとき、書き込まれた値に基づき誤り検査情報Ｐが新たに算出され、物理ブロック番号Ｎｘ“03”の予備領域ブロックに書き込まれる。こうして書き込まれた予備領域ブロックは、新たなデータ記憶領域ブロックとなる。
【００２５】
また、ＣＰＵ１１は、本発明における第２書込手段として機能することにより、上記第２検索手段により検索されたデータ記憶領域ブロックの物理ブロック番号Ｎｘを新たな予備領域ブロックの物理ブロック番号Ｎｘとして、上記更新データＤｚの書き込み後に予備領域管理ブロックに書き込む。つまり、上記第２検索手段により検索されたデータ記憶領域ブロックは、古くなったので新たな予備領域ブロックとして管理されるのである。この場合において、上記第１検索手段により複数の予備領域ブロックが検索されたとすると、ＣＰＵ１１は、検索された複数の予備領域ブロックのうち更新データＤｚが書き込まれなかった何れかの予備領域ブロックを新たな予備領域管理ブロックとし、当該新たな予備領域管理ブロックに、上記新たな予備領域ブロック（古くなったデータ記憶領域ブロック）の物理ブロック番号Ｎｘ（図２（Ａ）の例では、“01”）及び新たな予備領域管理ブロックとして使用されなかった予備領域ブロックの物理ブロック番号Ｎｘ（図２（Ａ）の例では、“05”及び“06”）を書き込む。これにより、データ記憶領域ブロックを効率良く使い回すことができる。このとき、元の予備領域管理ブロックに記憶されている予備領域管理ブロック識別子ＩＤ“AA”と、同予備領域管理ブロックに記憶されている使用カウンタＣ“12”を１インクリメントした使用カウンタＣ“13”と、新たに算出された誤り検査情報Ｐとが新たな予備領域管理ブロックに書き込まれる。
【００２６】
更に、ＣＰＵ１１は、書き込みに失敗や引き抜きなどによる電源遮断が発生した場合、書き込み処理発生前の状態に戻す、または書き込み処理を完了させるため、ロールバック処理を実行する。このロールバック処理において、ＣＰＵ１１は、本発明における第１判定手段として機能することにより、上記第１検索手段により検索された予備領域ブロックが未使用でない場合、又は予備領域管理ブロックへの物理ブロック番号Ｎｘの書き込みが正常に終了しない場合、予備領域管理ブロックが２つ以上存在するか否かを判定する。予備領域管理ブロックが２つ以上存在する場合には、例えば、新たな予備領域管理ブロックへの書き込み途中、又は書き込み完了直後に電源遮断が発生した場合が該当する。
【００２７】
そして、ＣＰＵ１１は、予備領域管理ブロックが２つ以上存在すると判定した場合、本発明における第２判定手段として機能することにより、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常であるかを判定する。ＣＰＵ１１は、予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常であると判定した場合、本発明における初期化手段として機能することにより、最も新しい予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックを初期化する（例えば、FFFF…を書き込む）。この場合、最も新しく作成された予備領域管理ブロック内の情報が正確であると推定できるため、この情報で示される予備領域ブロックを初期化することで予備領域ブロックが確保される。一方、ＣＰＵ１１は、予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常でないと判定された場合、本発明における初期化手段として機能することにより、最も新しい予備領域管理ブロック以外の予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックを初期化する。この場合、最も新しく作成された予備領域管理ブロック内の情報が正確でないと推定できるため、元々存在していた古い予備領域管理ブロック内の情報で示される予備領域ブロックを初期化することで予備領域ブロックが確保される。このようなロールバック処理により、書き込みに失敗や引き抜きなどによる電源遮断が発生した場合でも、データを保障することができる。
【００２８】
次に、図３〜図５を参照して、書き込み処理の詳細を説明する。図３は、ＣＰＵ１１により実行される書き込み処理を示すフローチャートである。図４は、図３に示すステップＳ８における予備領域管理ブロックの更新処理の詳細を示すフローチャートである。図５は、図３に示すステップＳ１１におけるロールバック処理の詳細を示すフローチャートである。
【００２９】
図３に示す処理は、ＣＰＵ１１が例えば外部端末２からＩ／Ｏ回路１４を介して書き込みコマンドを受信した場合に開始される。図３に示す処理が開始されると、ＣＰＵ１１は、予備領域管理ブロックを参照して予備領域ブロックを検索し、検索された予備領域ブロックの物理ブロック番号Ｎｘ（物理アドレスでもよい）を例えばＲＡＭ１２に記憶して保持する（ステップＳ１）。つまり、ＣＰＵ１１は、予備領域管理ブロック識別子ＩＤにより予備領域管理ブロックを求めて物理アドレス空間内を検索し、見つかった予備領域管理ブロック内の予備領域ブロックの物理ブロック番号Ｎｘを保持する。
【００３０】
次いで、ＣＰＵ１１は、ステップＳ１で保持された物理ブロック番号Ｎｘに基づき、未使用の予備領域ブロックが存在するか否かを判定する（ステップＳ２）。例えば、ステップＳ１で保持された物理ブロック番号Ｎｘが付与されている予備領域ブロック内が初期化された値（例えば、FFFF…）で満たされている場合、未使用の予備領域ブロックが存在すると判定される。未使用の予備領域ブロックが存在すると判定された場合（ステップＳ２：ＹＥＳ）、ステップＳ３へ進み、未使用の予備領域ブロックが存在しない（つまり、検索された予備領域ブロックが未使用でない）と判定された場合（ステップＳ２：ＮＯ）、ＣＰＵ１１は、異常終了として書き込みを終了して、ロールバック処理（ステップＳ１１）へ進む。ロールバック処理の詳細については後述する。
【００３１】
ステップＳ３では、ＣＰＵ１１は、上記コマンドで指定された書き込み先論理アドレスより論理ブロック番号Ｎｙを算出する。次いで、ＣＰＵ１１は、ステップＳ３で算出された論理ブロック番号Ｎｙを記憶しているデータ記憶領域ブロックを検索し、検索されたデータ記憶領域ブロックの物理ブロック番号Ｎｘ（物理アドレスでもよい）を例えばＲＡＭ１２に記憶して保持する（ステップＳ４）。つまり、ＣＰＵ１１は、論理ブロック番号Ｎｙと一致するデータ記憶領域ブロックを求めて物理アドレス空間内を検索し、見つかったデータ記憶領域ブロックの物理ブロック番号Ｎｘを保持する。
【００３２】
次いで、ＣＰＵ１１は、検索されたデータ記憶領域ブロック内のデータ（以下、「ブロックデータ」といい、論理ブロック番号Ｎｙ、使用カウンタＣ、データＤ、及び誤り検査情報Ｐが含まれる）をＲＡＭ１２に読み出し、当該読み出したブロックデータと、上記コマンドで指定されたデータとを基に、書き込みデータを構築する（ステップＳ５）。例えば、ＲＡＭ１２上で、上記読み出されたブロックデータに含まれる使用カウンタＣが１インクリメントされ、該ブロックデータに含まれるデータＤが上記コマンドで指定されたデータで更新データＤｚに更新される。そして、上記読み出されたブロックデータに含まれる論理ブロック番号Ｎｙと、１インクリメントされたカウンタＣと、更新された更新データＤｚと、これらのデータに基づき例えばＣＲＣ演算式により算出された誤り検査情報Ｐと、により書き込みデータが構築される。
【００３３】
次いで、ＣＰＵ１１は、ステップＳ５で構築された書き込みデータを、ステップＳ１で保持された物理ブロック番号Ｎｘに対応する予備領域ブロックに書き込む（ステップＳ６）。つまり、ステップＳ１で検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに、ステップＳ５で構築された書き込みデータが書き込まれる。
【００３４】
次いで、ＣＰＵ１１は、コマンドで指定された全てのデータの書き込みが完了したか否かを判定する（ステップＳ７）。そして、ＣＰＵ１１は、全てのデータの書き込みが完了していないと判定した場合（ステップ７：ＮＯ）、ステップＳ２に戻り、上記と同様の処理を行う。一方、ＣＰＵ１１は、全てのデータの書き込みが完了していると判定した場合（ステップ７：ＹＥＳ）、ステップＳ８へ進む。
【００３５】
ステップＳ８では、ＣＰＵ１１は、予備領域管理ブロックの更新処理を実行することで、古いデータ記憶領域ブロックを予備領域ブロックとして予備領域管理ブロックに登録して予備領域管理ブロックを更新する。予備領域管理ブロックの更新処理の詳細については後述する。
【００３６】
次いで、ＣＰＵ１１は、予備領域管理ブロックの更新が正常終了したか否かを判定する（ステップＳ９）。つまり、予備領域管理ブロックへの物理ブロック番号Ｎｘの書き込みが正常に終了したか否かが判定される。ＣＰＵ１１は、予備領域管理ブロックの更新が正常終了していないと判定した場合（ステップ９：ＮＯ）、異常終了として書き込みを終了して、ロールバック処理（ステップＳ１１）へ進む。一方、ＣＰＵ１１は、予備領域管理ブロックの更新が正常終了したと判定した場合（ステップ９：ＹＥＳ）、ステップＳ１０へ進む。
【００３７】
ステップＳ１０では、ＣＰＵ１１は、使用済の（古い）データ記憶領域ブロックと、使用済の予備領域管理ブロックとを消去（つまり、ブロック内のデータを初期化）して、書き込み処理を終了する。なお、ステップＳ１０の処理は書き込み処理内で行わずに、例えばＩＣカード１のリセット指令があったときに行われるように構成してもよい。
【００３８】
次に、図４に示す予備領域管理ブロックの更新処理では、ＣＰＵ１１は、先ず、更新後の予備領域管理ブロックとするための予備領域ブロックを、例えばステップＳ１で保持された物理ブロック番号Ｎｘの中から検索する（ステップＳ８１）。
【００３９】
次いで、ＣＰＵ１１は、ステップＳ２と同様に、未使用の予備領域ブロックが存在するか否かを判定する（ステップＳ８２）。そして、未使用の予備領域ブロックが存在すると判定された場合（ステップＳ８２：ＹＥＳ）、ステップＳ８３へ進み、未使用の予備領域ブロックが存在しないと判定された場合（ステップＳ８２：ＮＯ）、ＣＰＵ１１は、異常終了として書き込みを終了する。
【００４０】
ステップＳ８３では、ＣＰＵ１１は、ステップＳ８２で判定された未使用の予備領域ブロックの物理ブロック番号Ｎｘ（物理アドレスでもよい）を例えばＲＡＭ１２に記憶して保持する。
【００４１】
次いで、ＣＰＵ１１は、ステップＳ１で参照した予備領域管理ブロック内のデータ（以下、「管理ブロックデータ」といい、予備領域管理ブロック識別子ＩＤ、使用カウンタＣ、予備領域ブロックの物理ブロック番号Ｎｘ、及び誤り検査情報Ｐが含まれる）をＲＡＭ１２に読み出し、予備領域管理ブロック用の書き込みデータを構築する（ステップＳ８４）。例えば、ＲＡＭ１２上で、上記読み出された管理ブロックデータに含まれる使用カウンタＣが１インクリメントされる。さらに、ＲＡＭ１２上で、上記読み出された管理ブロックデータに含まれる物理ブロック番号Ｎｘのうち、更新データＤｚが書き込まれた予備領域ブロックの物理ブロック番号Ｎｘが削除される代わりに、ステップＳ５でブロックデータが読み出されたデータ記憶領域ブロック（新たな予備領域ブロックとなる）の物理ブロック番号Ｎｘが記憶される。これにより、ＲＡＭ１２における予備領域ブロックの物理ブロック番号Ｎｘは、読み出された予備領域ブロックの物理ブロック番号Ｎｘのうちで更新データＤｚが書き込まれなかった予備領域ブロックの物理ブロック番号Ｎｘと、ステップＳ５でブロックデータが読み出されたデータ記憶領域ブロックの物理ブロック番号Ｎｘとにより再構成される。そして、上記読み出されたブロックデータに含まれる予備領域管理ブロック識別子ＩＤと、１インクリメントされたカウンタＣと、再構成された予備領域ブロックの物理ブロック番号Ｎｘと、これらのデータに基づき例えばＣＲＣ演算式により算出された誤り検査情報Ｐと、により予備領域管理ブロック用の書き込みデータが構築される。
【００４２】
次いで、ＣＰＵ１１は、ステップＳ８４で構築された予備領域管理ブロック用の書き込みデータを、ステップＳ８３で保持された物理ブロック番号Ｎｘに対応する予備領域ブロックに書き込み（ステップＳ８５）、図３に示す処理に戻る。つまり、ステップＳ８１で検索された予備領域ブロックを新たな予備領域管理ブロックとして当該予備領域ブロックに、ステップＳ８４で構築された予備領域管理ブロック用の書き込みデータが書き込まれる。
【００４３】
次に、図５に示すロールバック処理では、ＣＰＵ１１は、先ず、予備領域管理ブロックが２つ以上存在するか否かを判定する（ステップＳ１１１）。そして、ＣＰＵ１１は、予備領域管理ブロックが２つ以上存在すると判定した場合（ステップＳ１１１：ＹＥＳ）、ステップＳ１１２に進み、予備領域管理ブロックが２つ以上存在しないと判定した場合（ステップＳ１１１：ＮＯ）、ステップＳ１１５に進む。
【００４４】
ステップＳ１１２では、ＣＰＵ１１は、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常であるか否かを判定する。例えば、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Ｐと、このとき算出した誤り検査情報Ｐとが一致する場合、正常であると判定される。そして、ＣＰＵ１１は、予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常であると判定した場合（ステップＳ１１２：ＹＥＳ）、最も新しい予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックを初期化し（ステップＳ１１３）、当該ロールバック処理を終了する。一方、ＣＰＵ１１は、予備領域管理ブロックに記憶されている誤り検査情報Ｐが正常でないと判定した場合（ステップＳ１１２：ＮＯ）、古い予備領域管理ブロック（つまり、最も予備領域管理ブロック以外の予備領域管理ブロック）に記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックを初期化し（ステップＳ１１４）、当該ロールバック処理を終了する。
【００４５】
一方、ステップＳ１１５では、ＣＰＵ１１は、ステップＳ１１１で判定された予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックが未使用であるか否かを判定する。そして、ＣＰＵ１１は、予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックが未使用である（つまり、初期化された値が保持されている）と判定した場合（ステップＳ１１５：ＹＥＳ）、当該ロールバック処理を終了する。一方、ＣＰＵ１１は、予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックが未使用でないと判定した場合（ステップＳ１１５：ＮＯ）、当該予備領域管理ブロックに記憶されている物理ブロック番号Ｎｘに対応する予備領域ブロックを初期化し（ステップＳ１１６）、当該ロールバック処理を終了する。
【００４６】
以上説明したように、上記実施形態によれば、データ記憶領域ブロックに論理ブロック番号Ｎｙを保持させ、予備領域管理ブロックに予備領域ブロックの論理ブロック番号Ｎｘを保持させるように構成し、書き込み処理を行う場合に、予備領域管理ブロックを参照して予備領域ブロックを検索し、当該検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに書き込みデータを書き込んだ後、古くなったデータ記憶領域ブロックの物理ブロック番号Ｎｘを新たな予備領域ブロックの物理ブロック番号Ｎｘとして予備領域管理ブロックに書き込むように構成したので、一度の書き込み処理において２ブロックの書き込みだけでデータを保障した書き込みを実現でき、書き込み処理速度を向上させることができる。
【符号の説明】
【００４７】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
2014139737.tif 000003
【図２】
2014139737.tif 000004
【図３】
2014139737.tif 000005
【図４】
2014139737.tif 000006
【図５】
2014139737.tif 000007