特許第6015461号(P6015461)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 大日本印刷株式会社の特許一覧

特許6015461情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム
<>
  • 特許6015461-情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム 図000002
  • 特許6015461-情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム 図000003
  • 特許6015461-情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム 図000004
  • 特許6015461-情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム 図000005
  • 特許6015461-情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6015461
(24)【登録日】2016年10月7日
(45)【発行日】2016年10月26日
(54)【発明の名称】情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム
(51)【国際特許分類】
   G06F 12/02 20060101AFI20161013BHJP
   G06F 12/00 20060101ALI20161013BHJP
   G06F 11/14 20060101ALI20161013BHJP
【FI】
   G06F12/02 570A
   G06F12/02 510A
   G06F12/00 597U
   G06F11/14 641A
【請求項の数】6
【全頁数】15
(21)【出願番号】特願2013-8430(P2013-8430)
(22)【出願日】2013年1月21日
(65)【公開番号】特開2014-139737(P2014-139737A)
(43)【公開日】2014年7月31日
【審査請求日】2015年11月27日
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】特許業務法人 インテクト国際特許事務所
(74)【代理人】
【識別番号】100083839
【弁理士】
【氏名又は名称】石川 泰男
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】橋村 雄介
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2012−128545(JP,A)
【文献】 特開2007−323159(JP,A)
【文献】 特開2005−190288(JP,A)
【文献】 特開2003−122646(JP,A)
【文献】 特開平10−105661(JP,A)
【文献】 特開平 8− 77074(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/02
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体であって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記コントローラは、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索手段と、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索手段と、
前記第1検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込手段と、
前記第2検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込手段と、
を備えることを特徴とする情報記録媒体。
【請求項2】
前記データ記憶領域ブロックには、当該データ記憶領域ブロックの使用回数を示す使用カウンタが記憶されており、
前記第1書込手段は、前記更新データと前記論理ブロック番号とを前記予備領域ブロックへ書き込む際に、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記使用カウンタを1インクリメントした使用カウンタを前記予備領域ブロックへ書き込むことを特徴とする請求項1に記載の情報記録媒体。
【請求項3】
前記第2書込手段は、前記第1検索手段により検索された複数の前記予備領域ブロックのうち前記第1書込手段により前記更新データが書き込まれなかった前記予備領域ブロックを新たな前記予備領域管理ブロックとして当該予備領域ブロックに、前記新たな予備領域ブロックの前記物理ブロック番号と、前記新たな前記データ記憶領域ブロック及び前記新たな前記予備領域管理ブロックとして使用されなかった前記予備領域ブロックの前記物理ブロック番号とを書き込むことを特徴とする請求項1または2に記載の情報記録媒体。
【請求項4】
前記予備領域管理ブロックには誤り検査情報がさらに記憶されており、
前記コントローラは、
前記第1検索手段により検索された前記予備領域ブロックが未使用でない場合、又は前記第2書込手段による書き込みが正常に終了しない場合、前記予備領域管理ブロックが2つ以上存在するか否かを判定する第1判定手段と、
前記第1判定手段により前記予備領域管理ブロックが2つ以上存在すると判定された場合、最も新しい前記予備領域管理ブロックに記憶されている誤り検査情報が正常であるかを判定する第2判定手段と、
前記第2判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常であると判定された場合、最も前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する一方、前記第2判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常でないと判定された場合、最も前記予備領域管理ブロック以外の前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する初期化手段と、
を備えることを特徴とする請求項1乃至3の何れか一項に記載の情報記録媒体。
【請求項5】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより行われるデータ読み書き方法であって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記データ読み書き方法は、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索ステップと、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索ステップと、
前記第1検索ステップにより検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索ステップにより検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込ステップと、
前記第2検索ステップにより検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込ステップによる前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込ステップと、
を含むことを特徴とするデータ読み書き方法。
【請求項6】
データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより実行されるデータ読み書きプログラムであって、
前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、
前記コントローラに、
前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索手段、
前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索手段、及び前記第1検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込手段、及び、
前記第2検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込手段として機能させることを特徴とするデータ読み書きプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のブロックに分割された記憶領域を有し、各ブロックには物理的なアドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備えるICカードの技術に関する。
【背景技術】
【0002】
現在普及しているICカードは、外部端末から供給される電源を利用して動作する。そのため、データ書き込み中に外部端末からICカードを引き抜くなどの電源供給を遮断する行為が行われた場合、動作に必要な電源が供給されなくなり、ICカードの不揮発性メモリに記憶されているデータが破壊されてしまう。そのため、書き込み処理は、書き込みを正常に完了させるか、または書き込み前の状態に戻すかによってデータの完全性を保障しなければならない。また、電子マネーやIDカードに利用されるICカードは、ユーザーの利便性を損なわないために処理速度を劣化させない工夫が必要である。
【0003】
特許文献1には、大容量のデータブロック領域を取り扱う場合においても、電源途絶時のデータ保証を確保しながら、効率良くかつ高速に処理を実行することを可能とするICカード及びその情報処理方法が開示されている。特許文献1に開示されるICカードの不揮発性メモリは、利用者が必要とするデータが格納されるデータブロック領域と、リーダライタからICカードへデータの読み書き時に指定されるデータが格納される予備ブロック領域と、ICカードの不揮発性メモリにおいて論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報が格納されるアドレス管理領域とを有してなる。そして、書き込み処理時には、書き込み対象のデータブロック領域内のブロックの代わりに予備ブロック領域内のブロックに対象データを書き込み、そのブロックを書き込み対象のブロックと交換するようにアドレス管理領域を更新するようになっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第3920166号
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、特許文献1の技術では、書き込み処理時には、予備ブロック領域のブロックへの書き込みが完了した後、アドレス管理領域が更新される。しかし、アドレス管理領域には、データブロック記憶領域を管理(つまり、論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報(テーブル)を管理)するブロックと、予備ブロック領域を管理(つまり、空き領域を管理)するブロックが含まれているため、一度の書き込み処理において、3回、ブロック(つまり、3ブロック)が更新されることになる。そのため、一般的なデータ保障方法(書き込み処理を実行する前に、その書き込み対象領域を不揮発性メモリ上の別のエリアに一時的に退避し、バックアップする方法)に比べ書き込み処理速度が低下してしまう可能性がある。
【0006】
そこで、本発明は、一般的なデータ保障方法に比べ書き込み処理速度を向上させることが可能な情報記録媒体、データ読み書き方法、及びデータ読み書きプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、請求項1に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体であって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記コントローラは、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索手段と、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索手段と、前記第1検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込手段と、前記第2検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込手段と、を備えることを特徴とする。
【0008】
請求項2に記載の発明は、請求項1に記載の情報記録媒体において、前記データ記憶領域ブロックには、当該データ記憶領域ブロックの使用回数を示す使用カウンタが記憶されており、前記第1書込手段は、前記更新データと前記論理ブロック番号とを前記予備領域ブロックへ書き込む際に、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記使用カウンタを1インクリメントした使用カウンタを前記予備領域ブロックへ書き込むことを特徴とする。
【0009】
請求項3に記載の発明は、請求項1または2に記載の情報記録媒体において、前記第2書込手段は、前記第1検索手段により検索された複数の前記予備領域ブロックのうち前記第1書込手段により前記更新データが書き込まれなかった前記予備領域ブロックを新たな前記予備領域管理ブロックとして当該予備領域ブロックに、前記新たな予備領域ブロックの前記物理ブロック番号と、前記新たな前記データ記憶領域ブロック及び前記新たな前記予備領域管理ブロックとして使用されなかった前記予備領域ブロックの前記物理ブロック番号とを書き込むことを特徴とする。
【0010】
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載の情報記録媒体において、前記予備領域管理ブロックには誤り検査情報がさらに記憶されており、前記コントローラは、前記第1検索手段により検索された前記予備領域ブロックが未使用でない場合、又は前記第2書込手段による書き込みが正常に終了しない場合、前記予備領域管理ブロックが2つ以上存在するか否かを判定する第1判定手段と、前記第1判定手段により前記予備領域管理ブロックが2つ以上存在すると判定された場合、最も新しい前記予備領域管理ブロックに記憶されている誤り検査情報が正常であるかを判定する第2判定手段と、前記第2判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常であると判定された場合、最も前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する一方、前記第2判定手段により前記予備領域管理ブロックに記憶されている誤り検査情報が正常でないと判定された場合、最も前記予備領域管理ブロック以外の前記予備領域管理ブロックに記憶されている前記物理ブロック番号に対応する前記予備領域ブロックを初期化する初期化手段と、を備えることを特徴とする。
【0011】
請求項5に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより行われるデータ読み書き方法であって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記データ読み書き方法は、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索ステップと、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索ステップと、前記第1検索ステップにより検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索ステップにより検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込ステップと、前記第2検索ステップにより検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込ステップによる前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込ステップと、を含むことを特徴とする。
【0012】
請求項6に記載の発明は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには物理アドレス空間を形成する物理ブロック番号が付与されている不揮発性メモリと、コマンドに応じて前記不揮発性メモリに対するデータの読み書きを行うコントローラと、を備える情報記録媒体における前記コントローラにより実行されるデータ読み書きプログラムであって、前記データ記憶領域ブロックにはデータ及び論理アドレス空間を形成する論理ブロック番号が記憶され、前記予備領域ブロックには初期化された値が記憶され、前記予備領域管理ブロックには前記予備領域ブロックの前記物理ブロック番号が記憶されており、前記コントローラに、前記コマンドに応じてデータの書き込み処理を行う場合に、前記予備領域管理ブロックを参照して前記予備領域ブロックを検索する第1検索手段、前記コマンドに応じて算出された前記論理ブロック番号を記憶している前記データ記憶領域ブロックを検索する第2検索手段、及び前記第1検索手段により検索された前記予備領域ブロックを新たな前記データ記憶領域ブロックとして当該予備領域ブロックに、前記第2検索手段により検索された前記データ記憶領域ブロックに記憶されている前記データに対応する更新データと、前記コマンドに応じて算出された前記論理ブロック番号とを書き込む第1書込手段、及び、前記第2検索手段により検索された前記データ記憶領域ブロックの前記物理ブロック番号を新たな予備領域ブロックの前記物理ブロック番号として、前記第1書込手段による前記更新データの書き込み後に前記予備領域管理ブロックに書き込む第2書込手段として機能させることを特徴とする。
【発明の効果】
【0013】
本発明によれば、一度の書き込み処理において2ブロックの書き込みだけでデータを保障した書き込みを実現でき、書き込み処理速度を向上させることができる。
【図面の簡単な説明】
【0014】
図1】ICカード1の概要構成例を示す図である。
図2】(A)は、本実施形態に係るフラッシュメモリにおける物理アドレス空間を示す図であり、(B)は、本実施形態に係るフラッシュメモリにおける論理アドレス空間を示す図である。
図3】CPU11により実行される書き込み処理を示すフローチャートである。
図4図3に示すステップS8における予備領域管理ブロックの更新処理の詳細を示すフローチャートである。
図5図3に示すステップS11におけるロールバック処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【0016】
先ず、図1及び図2を参照して、本実施形態に係るICカードについて説明する。図1は、ICカード1の概要構成例を示す図である。図2(A)は、本実施形態に係るフラッシュメモリにおける物理アドレス空間を示す図であり、図2(B)は、本実施形態に係るフラッシュメモリにおける論理アドレス空間を示す図である。なお、ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等に組み込まれる。また、ICカード1は、上記カードの他に、不揮発性メモリを搭載した組込み機器、データ保障が必要なUSBメモリなどの情報記録媒体であっても良い。
【0017】
図1に示すように、ICカード1には、ICチップ1aが搭載されている。ICチップ1aは、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、フラッシュメモリ13、及びI/O回路14を備えて構成される。なお、フラッシュメモリの代わりにEEPROM(Electrically Erasable Programmable Read-Only Memory)であっても構わない。
【0018】
CPU11は、各種プログラムを実行するコントローラであり、例えばオペレーティングシステム(OS)に組み込まれる本発明のデータ読み書きプログラムにしたがって、外部端末2から受信したコマンドに対応した所定のコマンド処理を実行し、RAM12及びフラッシュメモリ13に対するデータの読み書き処理を行う。例えば、CPU11は、フラッシュメモリ13に対して、ページ単位(読み書きを行う最小単位であり、例えば128バイト、256バイト、または512バイト)の消去と、1バイト単位での読み書きを行う。外部端末2は、ICカード1との間で接触または非接触で通信を行うためのリーダーライタを備える。外部端末2の例としてはATM、改札機、認証用ゲート等が挙げられる。或いは、ICカード1が携帯端末に搭載される場合、外部端末2には携帯端末の機能を担う制御部が該当する。
【0019】
RAM12は、データを一時的に記憶する揮発性メモリである。フラッシュメモリ13は、プログラム(本発明のデータ読み書きプログラムを含む)やデータを格納する不揮発性メモリである。フラッシュメモリ13では、記憶されたデータを書き換える際、ページ単位の消去処理(0→1あるいは1→0)と、1バイト書き込み処理(1→0あるいは0→1)が発生する。また、フラッシュメモリ13は、データ記憶領域ブロック、予備領域ブロック、及び予備領域管理ブロックを含む複数のブロックに分割された記憶領域を有し、各ブロックには、物理アドレス空間(物理的なアドレス空間)を形成する物理ブロック番号が付与されている。なお、ブロックはページを1つ以上連ねたものである。物理アドレス空間とは、メモリアドレスによってアクセス可能なメモリ空間を意味する。本実施形態では、ブロックを3種類に分類することでデータ保障を実現し、かつ書き込み処理時間やメモリの使用効率を向上させている。
【0020】
図2(A)の例では、物理ブロック番号Nxが“01”と“02”と“04”のブロックが、それぞれ、データ記憶領域ブロックである。また、物理ブロック番号Nxが“03”と“05”と“06”と“7F”のブロックが、それぞれ、予備領域ブロックである。また、物理ブロック番号Nxが“80”のブロックが、予備領域管理ブロックである。データ記憶領域ブロックには、論理ブロック番号Ny、使用カウンタC、データD、及び誤り検査情報Pが記憶(格納)される。論理ブロック番号Nyは、図2(B)に示すように、論理アドレス空間(論理的なアドレス空間)を形成(構築)するための情報である。使用カウンタCは、当該使用カウンタCを記憶するデータ記憶領域ブロックの使用回数を示す値であり、当該データ記憶領域ブロックにデータDが書き込まれることで当該データ記憶領域ブロックが使用される度に1インクリメントされる。使用カウンタCにより各ブロックの新旧を判定することができ、また、当該ブロックの使用回数を管理することができる。データDは、例えば、CPU11によるコマンド処理の結果に基づいて外部端末2へ出力されるデータである。データDの例としては、ICチップ1a内に保持する値、またはICチップ1a内で演算した結果の値である。例えば、論理ブロック番号Ny“01”が記憶されているデータ記憶領域ブロックには、データDとして鍵データが記憶され、論理ブロック番号Ny“02”が記憶されているデータ記憶領域ブロックには、データDとして報酬ポイント(或いは日付)が記憶されるというように、論理ブロック番号NyとデータDの種別とが関連付けられる。誤り検査情報Pは、当該誤り検査情報Pが記憶されるブロック内のデータの値が正当であるかどうかを判定するための情報である。誤り検査情報Pの例には、CRC(Cyclic Redundancy Check, CRC)やチェックサム等がある。一方、予備領域ブロックには、初期化された値(例えば、FFFF…)が記憶される。また、予備領域管理ブロックには、予備領域管理ブロック識別子ID、使用カウンタC、予備領域ブロックの物理ブロック番号Nx、及び誤り検査情報Pが記憶される。予備領域管理ブロック識別子IDは、予備領域管理ブロックを識別するために当該予備領域管理ブロックに付与された識別情報である。図2(A)の例では、1つの予備領域管理ブロックを示しているが、予備領域管理ブロックは1つに限るものではなく、1ブロック内に予備領域ブロックの物理ブロック番号をすべて収めることができない場合は、複数の予備領域管理ブロックが確保される。予備領域ブロックの物理ブロック番号Nxを予備領域管理ブロックに記憶することで予備領域ブロックが管理される。
【0021】
ところで、仮に、予備領域管理ブロックに、物理ブロック番号から論理ブロック番号に変換するためのテーブルを記憶する場合、当該テーブルが複数ページに跨る可能性が増すことになる。このことは、データを書き換える際にページ単位の消去処理及び1バイト書き込み処理が発生するフラッシュメモリ13において、書き込み処理速度を低下させる結果となる。本実施形態では、予備領域管理ブロックで予備領域ブロックを管理するものの、物理ブロック番号から論理ブロック番号に変換するためのテーブルを管理しないので、当該テーブルが複数ページに跨ることを回避でき、その結果、書き込み処理速度を向上することができる。
【0022】
I/O回路14は、外部端末2とのインターフェイスを担う。I/O回路14には、例えばISO/IEC7816によって定められたC1〜C8の8個の端子が設けられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末2とのデータ通信を行う端子である。
【0023】
そして、CPU11は、外部端末2からのコマンドに応じてデータの書き込み処理を行う場合に、本発明における第1検索手段として機能することにより、予備領域管理ブロックを参照して予備領域ブロックを検索し、本発明における第2検索手段として機能することにより、上記コマンドに応じて算出された論理ブロック番号Nyを記憶しているデータ記憶領域ブロックを検索する。ここで、論理ブロック番号Nyは、上記コマンドで指定される書き込み先論理アドレスと、1ブロックあたりのデータサイズとから算出される。
【0024】
また、CPU11は、本発明における第1書込手段として機能することにより、上記第1検索手段により検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに、上記第2検索手段により検索されたデータ記憶領域ブロックに記憶されているデータDに対応する更新データDzと、上記コマンドに応じて算出された論理ブロック番号Nyとを書き込む。また、CPU11は、更新データDzと論理ブロック番号Nyとを予備領域ブロックへ書き込む際に、上記第2検索手段により検索されたデータ記憶領域ブロックに記憶されている使用カウンタを1インクリメントした使用カウンタCを上記予備領域ブロックへ書き込む。例えば、図2(A)に示す物理ブロック番号Nx“03”の予備領域ブロックが第1検索手段により検索され、且つ、物理ブロック番号Nx“01”のデータ記憶領域ブロックが第2検索手段により検索されたとする。この場合、物理ブロック番号Nx“01”のデータ記憶領域ブロックに記憶されているデータD“33333333・・・”に対応する更新データDz(例えば“33333333・・・”を上書きする値)と、同データ記憶領域ブロックに記憶されている論理ブロック番号Ny“03”と、同データ記憶領域ブロックに記憶されている使用カウンタC“02”を1インクリメントした使用カウンタC“03”とが物理ブロック番号Nx“03”の予備領域ブロックに書き込まれる。このとき、書き込まれた値に基づき誤り検査情報Pが新たに算出され、物理ブロック番号Nx“03”の予備領域ブロックに書き込まれる。こうして書き込まれた予備領域ブロックは、新たなデータ記憶領域ブロックとなる。
【0025】
また、CPU11は、本発明における第2書込手段として機能することにより、上記第2検索手段により検索されたデータ記憶領域ブロックの物理ブロック番号Nxを新たな予備領域ブロックの物理ブロック番号Nxとして、上記更新データDzの書き込み後に予備領域管理ブロックに書き込む。つまり、上記第2検索手段により検索されたデータ記憶領域ブロックは、古くなったので新たな予備領域ブロックとして管理されるのである。この場合において、上記第1検索手段により複数の予備領域ブロックが検索されたとすると、CPU11は、検索された複数の予備領域ブロックのうち更新データDzが書き込まれなかった何れかの予備領域ブロックを新たな予備領域管理ブロックとし、当該新たな予備領域管理ブロックに、上記新たな予備領域ブロック(古くなったデータ記憶領域ブロック)の物理ブロック番号Nx(図2(A)の例では、“01”)及び新たな予備領域管理ブロックとして使用されなかった予備領域ブロックの物理ブロック番号Nx(図2(A)の例では、“05”及び“06”)を書き込む。これにより、データ記憶領域ブロックを効率良く使い回すことができる。このとき、元の予備領域管理ブロックに記憶されている予備領域管理ブロック識別子ID“AA”と、同予備領域管理ブロックに記憶されている使用カウンタC“12”を1インクリメントした使用カウンタC“13”と、新たに算出された誤り検査情報Pとが新たな予備領域管理ブロックに書き込まれる。
【0026】
更に、CPU11は、書き込みに失敗や引き抜きなどによる電源遮断が発生した場合、書き込み処理発生前の状態に戻す、または書き込み処理を完了させるため、ロールバック処理を実行する。このロールバック処理において、CPU11は、本発明における第1判定手段として機能することにより、上記第1検索手段により検索された予備領域ブロックが未使用でない場合、又は予備領域管理ブロックへの物理ブロック番号Nxの書き込みが正常に終了しない場合、予備領域管理ブロックが2つ以上存在するか否かを判定する。予備領域管理ブロックが2つ以上存在する場合には、例えば、新たな予備領域管理ブロックへの書き込み途中、又は書き込み完了直後に電源遮断が発生した場合が該当する。
【0027】
そして、CPU11は、予備領域管理ブロックが2つ以上存在すると判定した場合、本発明における第2判定手段として機能することにより、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Pが正常であるかを判定する。CPU11は、予備領域管理ブロックに記憶されている誤り検査情報Pが正常であると判定した場合、本発明における初期化手段として機能することにより、最も新しい予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックを初期化する(例えば、FFFF…を書き込む)。この場合、最も新しく作成された予備領域管理ブロック内の情報が正確であると推定できるため、この情報で示される予備領域ブロックを初期化することで予備領域ブロックが確保される。一方、CPU11は、予備領域管理ブロックに記憶されている誤り検査情報Pが正常でないと判定された場合、本発明における初期化手段として機能することにより、最も新しい予備領域管理ブロック以外の予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックを初期化する。この場合、最も新しく作成された予備領域管理ブロック内の情報が正確でないと推定できるため、元々存在していた古い予備領域管理ブロック内の情報で示される予備領域ブロックを初期化することで予備領域ブロックが確保される。このようなロールバック処理により、書き込みに失敗や引き抜きなどによる電源遮断が発生した場合でも、データを保障することができる。
【0028】
次に、図3図5を参照して、書き込み処理の詳細を説明する。図3は、CPU11により実行される書き込み処理を示すフローチャートである。図4は、図3に示すステップS8における予備領域管理ブロックの更新処理の詳細を示すフローチャートである。図5は、図3に示すステップS11におけるロールバック処理の詳細を示すフローチャートである。
【0029】
図3に示す処理は、CPU11が例えば外部端末2からI/O回路14を介して書き込みコマンドを受信した場合に開始される。図3に示す処理が開始されると、CPU11は、予備領域管理ブロックを参照して予備領域ブロックを検索し、検索された予備領域ブロックの物理ブロック番号Nx(物理アドレスでもよい)を例えばRAM12に記憶して保持する(ステップS1)。つまり、CPU11は、予備領域管理ブロック識別子IDにより予備領域管理ブロックを求めて物理アドレス空間内を検索し、見つかった予備領域管理ブロック内の予備領域ブロックの物理ブロック番号Nxを保持する。
【0030】
次いで、CPU11は、ステップS1で保持された物理ブロック番号Nxに基づき、未使用の予備領域ブロックが存在するか否かを判定する(ステップS2)。例えば、ステップS1で保持された物理ブロック番号Nxが付与されている予備領域ブロック内が初期化された値(例えば、FFFF…)で満たされている場合、未使用の予備領域ブロックが存在すると判定される。未使用の予備領域ブロックが存在すると判定された場合(ステップS2:YES)、ステップS3へ進み、未使用の予備領域ブロックが存在しない(つまり、検索された予備領域ブロックが未使用でない)と判定された場合(ステップS2:NO)、CPU11は、異常終了として書き込みを終了して、ロールバック処理(ステップS11)へ進む。ロールバック処理の詳細については後述する。
【0031】
ステップS3では、CPU11は、上記コマンドで指定された書き込み先論理アドレスより論理ブロック番号Nyを算出する。次いで、CPU11は、ステップS3で算出された論理ブロック番号Nyを記憶しているデータ記憶領域ブロックを検索し、検索されたデータ記憶領域ブロックの物理ブロック番号Nx(物理アドレスでもよい)を例えばRAM12に記憶して保持する(ステップS4)。つまり、CPU11は、論理ブロック番号Nyと一致するデータ記憶領域ブロックを求めて物理アドレス空間内を検索し、見つかったデータ記憶領域ブロックの物理ブロック番号Nxを保持する。
【0032】
次いで、CPU11は、検索されたデータ記憶領域ブロック内のデータ(以下、「ブロックデータ」といい、論理ブロック番号Ny、使用カウンタC、データD、及び誤り検査情報Pが含まれる)をRAM12に読み出し、当該読み出したブロックデータと、上記コマンドで指定されたデータとを基に、書き込みデータを構築する(ステップS5)。例えば、RAM12上で、上記読み出されたブロックデータに含まれる使用カウンタCが1インクリメントされ、該ブロックデータに含まれるデータDが上記コマンドで指定されたデータで更新データDzに更新される。そして、上記読み出されたブロックデータに含まれる論理ブロック番号Nyと、1インクリメントされたカウンタCと、更新された更新データDzと、これらのデータに基づき例えばCRC演算式により算出された誤り検査情報Pと、により書き込みデータが構築される。
【0033】
次いで、CPU11は、ステップS5で構築された書き込みデータを、ステップS1で保持された物理ブロック番号Nxに対応する予備領域ブロックに書き込む(ステップS6)。つまり、ステップS1で検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに、ステップS5で構築された書き込みデータが書き込まれる。
【0034】
次いで、CPU11は、コマンドで指定された全てのデータの書き込みが完了したか否かを判定する(ステップS7)。そして、CPU11は、全てのデータの書き込みが完了していないと判定した場合(ステップ7:NO)、ステップS2に戻り、上記と同様の処理を行う。一方、CPU11は、全てのデータの書き込みが完了していると判定した場合(ステップ7:YES)、ステップS8へ進む。
【0035】
ステップS8では、CPU11は、予備領域管理ブロックの更新処理を実行することで、古いデータ記憶領域ブロックを予備領域ブロックとして予備領域管理ブロックに登録して予備領域管理ブロックを更新する。予備領域管理ブロックの更新処理の詳細については後述する。
【0036】
次いで、CPU11は、予備領域管理ブロックの更新が正常終了したか否かを判定する(ステップS9)。つまり、予備領域管理ブロックへの物理ブロック番号Nxの書き込みが正常に終了したか否かが判定される。CPU11は、予備領域管理ブロックの更新が正常終了していないと判定した場合(ステップ9:NO)、異常終了として書き込みを終了して、ロールバック処理(ステップS11)へ進む。一方、CPU11は、予備領域管理ブロックの更新が正常終了したと判定した場合(ステップ9:YES)、ステップS10へ進む。
【0037】
ステップS10では、CPU11は、使用済の(古い)データ記憶領域ブロックと、使用済の予備領域管理ブロックとを消去(つまり、ブロック内のデータを初期化)して、書き込み処理を終了する。なお、ステップS10の処理は書き込み処理内で行わずに、例えばICカード1のリセット指令があったときに行われるように構成してもよい。
【0038】
次に、図4に示す予備領域管理ブロックの更新処理では、CPU11は、先ず、更新後の予備領域管理ブロックとするための予備領域ブロックを、例えばステップS1で保持された物理ブロック番号Nxの中から検索する(ステップS81)。
【0039】
次いで、CPU11は、ステップS2と同様に、未使用の予備領域ブロックが存在するか否かを判定する(ステップS82)。そして、未使用の予備領域ブロックが存在すると判定された場合(ステップS82:YES)、ステップS83へ進み、未使用の予備領域ブロックが存在しないと判定された場合(ステップS82:NO)、CPU11は、異常終了として書き込みを終了する。
【0040】
ステップS83では、CPU11は、ステップS82で判定された未使用の予備領域ブロックの物理ブロック番号Nx(物理アドレスでもよい)を例えばRAM12に記憶して保持する。
【0041】
次いで、CPU11は、ステップS1で参照した予備領域管理ブロック内のデータ(以下、「管理ブロックデータ」といい、予備領域管理ブロック識別子ID、使用カウンタC、予備領域ブロックの物理ブロック番号Nx、及び誤り検査情報Pが含まれる)をRAM12に読み出し、予備領域管理ブロック用の書き込みデータを構築する(ステップS84)。例えば、RAM12上で、上記読み出された管理ブロックデータに含まれる使用カウンタCが1インクリメントされる。さらに、RAM12上で、上記読み出された管理ブロックデータに含まれる物理ブロック番号Nxのうち、更新データDzが書き込まれた予備領域ブロックの物理ブロック番号Nxが削除される代わりに、ステップS5でブロックデータが読み出されたデータ記憶領域ブロック(新たな予備領域ブロックとなる)の物理ブロック番号Nxが記憶される。これにより、RAM12における予備領域ブロックの物理ブロック番号Nxは、読み出された予備領域ブロックの物理ブロック番号Nxのうちで更新データDzが書き込まれなかった予備領域ブロックの物理ブロック番号Nxと、ステップS5でブロックデータが読み出されたデータ記憶領域ブロックの物理ブロック番号Nxとにより再構成される。そして、上記読み出されたブロックデータに含まれる予備領域管理ブロック識別子IDと、1インクリメントされたカウンタCと、再構成された予備領域ブロックの物理ブロック番号Nxと、これらのデータに基づき例えばCRC演算式により算出された誤り検査情報Pと、により予備領域管理ブロック用の書き込みデータが構築される。
【0042】
次いで、CPU11は、ステップS84で構築された予備領域管理ブロック用の書き込みデータを、ステップS83で保持された物理ブロック番号Nxに対応する予備領域ブロックに書き込み(ステップS85)、図3に示す処理に戻る。つまり、ステップS81で検索された予備領域ブロックを新たな予備領域管理ブロックとして当該予備領域ブロックに、ステップS84で構築された予備領域管理ブロック用の書き込みデータが書き込まれる。
【0043】
次に、図5に示すロールバック処理では、CPU11は、先ず、予備領域管理ブロックが2つ以上存在するか否かを判定する(ステップS111)。そして、CPU11は、予備領域管理ブロックが2つ以上存在すると判定した場合(ステップS111:YES)、ステップS112に進み、予備領域管理ブロックが2つ以上存在しないと判定した場合(ステップS111:NO)、ステップS115に進む。
【0044】
ステップS112では、CPU11は、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Pが正常であるか否かを判定する。例えば、最も新しい予備領域管理ブロックに記憶されている誤り検査情報Pと、このとき算出した誤り検査情報Pとが一致する場合、正常であると判定される。そして、CPU11は、予備領域管理ブロックに記憶されている誤り検査情報Pが正常であると判定した場合(ステップS112:YES)、最も新しい予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックを初期化し(ステップS113)、当該ロールバック処理を終了する。一方、CPU11は、予備領域管理ブロックに記憶されている誤り検査情報Pが正常でないと判定した場合(ステップS112:NO)、古い予備領域管理ブロック(つまり、最も予備領域管理ブロック以外の予備領域管理ブロック)に記憶されている物理ブロック番号Nxに対応する予備領域ブロックを初期化し(ステップS114)、当該ロールバック処理を終了する。
【0045】
一方、ステップS115では、CPU11は、ステップS111で判定された予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックが未使用であるか否かを判定する。そして、CPU11は、予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックが未使用である(つまり、初期化された値が保持されている)と判定した場合(ステップS115:YES)、当該ロールバック処理を終了する。一方、CPU11は、予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックが未使用でないと判定した場合(ステップS115:NO)、当該予備領域管理ブロックに記憶されている物理ブロック番号Nxに対応する予備領域ブロックを初期化し(ステップS116)、当該ロールバック処理を終了する。
【0046】
以上説明したように、上記実施形態によれば、データ記憶領域ブロックに論理ブロック番号Nyを保持させ、予備領域管理ブロックに予備領域ブロックの論理ブロック番号Nxを保持させるように構成し、書き込み処理を行う場合に、予備領域管理ブロックを参照して予備領域ブロックを検索し、当該検索された予備領域ブロックを新たなデータ記憶領域ブロックとして当該予備領域ブロックに書き込みデータを書き込んだ後、古くなったデータ記憶領域ブロックの物理ブロック番号Nxを新たな予備領域ブロックの物理ブロック番号Nxとして予備領域管理ブロックに書き込むように構成したので、一度の書き込み処理において2ブロックの書き込みだけでデータを保障した書き込みを実現でき、書き込み処理速度を向上させることができる。
【符号の説明】
【0047】
1 ICカード
1a ICチップ
11 CPU
12 RAM
13 フラッシュメモリ
14 I/O回路
図1
図2
図3
図4
図5