(57)【要約】【課題】データの書き込み及び読み出しの処理途中に電源が途絶した場合におけるデータ破壊に対するデータ保証を、処理時間やメモリ使用効率を劣化させることなく実現可能にする。【解決手段】ＩＣカードに搭載される不揮発性メモリに、記憶保持するデータを格納するデータブロック領域Ａ１５０１、Ｂ１５０２と、書き込み処理時または読み出し処理時において対象のデータを格納する予備ブロック領域Ａ１５０３、Ｂ１５０４と、データブロック領域Ａ１５０１、Ｂ１５０２及び予備ブロック領域Ａ１５０３、Ｂ１５０４に関する論理アドレスと物理アドレスとを対応づけるアドレス情報を格納するアドレス管理領域Ａ１５０５、Ｂ１５０６とを設ける。書き込み処理時には、バッファ判定フラグ領域１５０８の値を基に対象領域となるデータ領域を判断し、該当するアドレス管理領域においてデータブロック領域と予備ブロック領域のブロック番号の更新を行う。【選択図】　図３
2004062504.tif 000002
【特許請求の範囲】
【請求項１】
記憶保持するデータを格納する１つ以上の記憶データ領域と、書き込み処理時において対象のデータを格納する１つ以上のバッファ領域と、前記記憶データ領域及びバッファ領域に関する論理アドレスと物理アドレスとを対応づけるアドレス情報を格納する１つ以上のアドレス管理領域とを有するメモリと、
前記メモリへの書き込み処理時において、コマンドと対応して送られる書き込みデータを前記バッファ領域に格納し、前記アドレス管理領域における前記バッファ領域に対応するアドレス情報と前記コマンドで指定された前記記憶データ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新するメモリ制御手段と、
を備えたことを特徴とするＩＣカード。
【請求項２】
前記メモリは、前記アドレス管理領域において更新処理時の対象のアドレス情報を保持するアドレス保持領域を備えるとともに、前記１つ以上のバッファ領域のうちのどの領域が有効であるかを示すバッファ領域の有効性情報を格納するバッファ判定フラグ領域と、書き込み処理の途中であることを示す書き込み処理中情報を格納するパラメータ領域とを備え、
前記メモリ制御手段は、前記書き込み処理時において、前記コマンドで指定された論理アドレスを基に、前記１つ以上の記憶データ領域及びバッファ領域から書き込み対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報を前記バッファ判定フラグ領域に格納し、前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを前記アドレス保持領域に一旦保持するとともに、前記書き込み処理中情報を前記パラメータ領域に設定し、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記記憶データ領域に対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを互いに書き換える更新処理を行った後に、前記書き込み処理中情報を元の状態に戻すことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記メモリ制御手段は、前記書き込み処理中情報によって前記書き込み処理が完了したか否かを判断し、前記書き込み処理が正常に完了していない場合は、処理再開時に前記パラメータ領域に格納されている前記物理アドレスの更新総ブロック数及び更新済みブロック数と前記アドレス保持領域に保持されているアドレス情報と前記バッファ判定フラグ領域の有効性情報とに基づいて、未処理の前記物理アドレスの更新処理を完了させることを特徴とする請求項２に記載のＩＣカード。
【請求項４】
記憶保持するデータを格納する１つ以上の記憶データ領域と、読み出し処理時において対象のデータを格納する１つ以上のバッファ領域と、前記記憶データ領域及びバッファ領域に関する論理アドレスと物理アドレスとを対応づけるアドレス情報を格納する１つ以上のアドレス管理領域とを有するメモリと、
前記メモリからの読み出し処理時において、前記アドレス管理領域におけるコマンドで指定された前記記憶データ領域に対応するアドレス情報と前記バッファ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新し、この更新後のバッファ領域に格納された読み出しデータを読み出した後、前記アドレス管理領域を元の状態に復帰するメモリ制御手段と、
を備えたことを特徴とするＩＣカード。
【請求項５】
前記メモリは、前記アドレス管理領域において更新処理時の対象のアドレス情報を保持するアドレス保持領域を備えるとともに、前記１つ以上のバッファ領域のうちのどの領域が有効であるかを示すバッファ領域の有効性情報を格納するバッファ判定フラグ領域と、読み出し処理の途中であることを示す読み出し処理中情報を格納するパラメータ領域とを備え、
前記メモリ制御手段は、前記読み出し処理時において、前記コマンドで指定された論理アドレスを基に、前記１つ以上の記憶データ領域及びバッファ領域から読み出し対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報を前記バッファ判定フラグ領域に格納し、前記アドレス管理領域における前記バッファ領域に対応する物理アドレスを前記アドレス保持領域に一旦保持するとともに、前記読み出し処理中情報を前記パラメータ領域に設定し、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスを前記バッファ領域に対応する物理アドレスへ書き換える更新処理を行い、この更新後のバッファ領域に格納された読み出しデータを読み出してから前記保持したバッファ領域に対応する物理アドレスを元に戻す復元処理を行った後に、前記読み出し処理中情報を元の状態に戻すことを特徴とする請求項４に記載のＩＣカード。
【請求項６】
前記メモリ制御手段は、前記読み出し処理中情報によって前記読み出し処理が完了したか否かを判断し、前記読み出し処理が正常に完了していない場合は、処理再開時に前記パラメータ領域に格納されている前記物理アドレスの復元総ブロック数及び復元済みブロック数と前記アドレス保持領域に保持されているアドレス情報と前記バッファ判定フラグ領域の有効性情報とに基づいて、未処理の前記物理アドレスの復元処理を完了させることを特徴とする請求項５に記載のＩＣカード。
【請求項７】
ＩＣカード内のメモリへのデータの書き込み処理時において、
コマンドと対応して送られる書き込みデータを前記メモリのバッファ領域に格納するステップと、
前記コマンドで指定された論理アドレスを基に、１つ以上の記憶データ領域及びバッファ領域から書き込み対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報をバッファ判定フラグ領域に格納するステップと、
前記メモリのアドレス情報を格納するアドレス管理領域における、前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスと前記バッファ領域に対応する物理アドレスとをアドレス保持領域に一旦保持するステップと、
書き込み処理の途中であることを示す書き込み処理中情報を設定するステップと、
前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記記憶データ領域に対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを互いに書き換えて前記アドレス管理領域の更新処理を行うステップと、
前記更新処理の後に前記書き込み処理中情報を元の状態に戻すステップと、
を有することを特徴とするＩＣカードの情報処理方法。
【請求項８】
ＩＣカード内のメモリからのデータの読み出し処理時において、
コマンドで指定された論理アドレスを基に、１つ以上の記憶データ領域及びバッファ領域から読み出し対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報をバッファ判定フラグ領域に格納するステップと、
前記メモリのアドレス情報を格納するアドレス管理領域における、前記バッファ領域に対応する物理アドレスを前記アドレス保持領域に一旦保持するステップと、
読み出し処理の途中であることを示す読み出し処理中情報を設定するステップと、
前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスを前記バッファ領域に対応する物理アドレスへ書き換えて前記アドレス管理領域の更新処理を行うステップと、
前記更新後のバッファ領域に格納された読み出しデータを読み出してから前記保持したバッファ領域に対応する物理アドレスを元に戻す復元処理を行うステップと、
前記復元処理の後に前記読み出し処理中情報を元の状態に戻すステップと、
を有することを特徴とするＩＣカードの情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば電子マネーやＩＤカードなどに利用されるＩＣカード及びその情報処理方法に関し、特にＩＣカードに搭載される不揮発性メモリに格納される情報の処理技術に関するものである。
【０００２】
【従来の技術】
レジャー施設の利用券や金融機関などにおける電子財布として、情報を格納するメモリを所有するＩＣカードとリーダライタとの間でデータの読み書きを行うＩＣカードシステムが利用されている。ＩＣカードには、リーダライタと接触して信号の受け渡しをするための接点を有する接触式ＩＣカードと、電波を利用して通信を行う非接触式ＩＣカードとがある。
【０００３】
接触式ＩＣカードは、電源、グランド、クロック、データ、リセットなどの信号とのインターフェース用接点を持っており、リーダライタより安定な電源が供給されている。一方、非接触式ＩＣカードは、リーダライタからのキャリアを受けるためのアンテナコイルやキャパシタを内蔵しており、電源はリーダライタからのキャリアを整流して電源として用いている。
【０００４】
上述した接触式ＩＣカードにおいて、データの書き込み途中で機器からＩＣカードの抜き差しが行われたり、また、非接触式ＩＣカードにて同じくデータの書き込み途中で通信エリアから離れて、動作に必要な電力が得られなくなると、ＩＣカードに搭載されているメモリ内のデータが破壊されることになってしまう。メモリ内のデータは所定のデータ長、例えば１６バイトからなるブロック単位で構成されており、この複数のブロックデータに対して１回のコマンド処理にて同時に読み書きを行うこと可能な場合もあり、いかなる場合においてもデータの保証を行う必要がある。
【０００５】
この課題に対して、第１の解決例として、例えばブロックデータの書き込みを行う際に、書き込み指定されたブロックデータについて、書き込み処理を行う前に有効であった旧のブロックデータを不揮発性メモリの別エリアに一旦保持し、その後にデータを書き込むといった旧データバックアップによるデータ保護手法がある。図１２に示すように、複数のブロックデータから構成されるデータブロック領域に対して複数のブロックデータを同時に書き込む場合には、まず、指定されたブロック番号のブロックデータを予備ブロック領域における予備ブロックデータにそれぞれ保持した後、データブロック領域における指定されたブロック番号のブロックデータの書き込みを行う。これにより、データの書き込み途中で電源が途絶した場合においても、予備ブロック領域に書き込み処理を行う前のブロックデータが保持されているためデータを元の状態に戻すことができ、データ保証が可能となる。
【０００６】
また、第２の解決例として、２つ以上のメモリ領域を確保し、どちらのメモリ領域が有効であるかを示す有効性情報を合わせて持たせておく有効性情報保持によるデータ保護手法も存在する。図１３に示すように、データブロック領域Ａとデータブロック領域Ｂの２つのメモリエリアを確保しており、それぞれのブロック番号のブロックデータにおいてどちらのデータが有効であるかのデータ有効性判定情報を保持することにする。ブロックデータを書き込む際にはデータ有効性判定情報を確認し、無効であるメモリ領域のブロックデータに新ブロックデータを書き込んだうえで、有効／無効情報をそれぞれ互いに書き換え更新することでデータの書き込み処理を行う。この場合においても、電源が途絶したときには、書き込み処理を行う前に有効であったブロックデータは保持されていることから有効性判定情報を書き込み処理前の状態にすることにより、データを元の状態に戻すことが可能となる。
【０００７】
【発明が解決しようとする課題】
前述したブロックデータ管理方式により、不揮発性メモリに保持するデータも大量に必要とされることなく、少ない記憶領域で効率良くメモリを管理することが可能となる。
【０００８】
しかしながら、論理アドレスと物理アドレスとを対応づけるアドレス管理方式では、データブロック領域と予備ブロック領域の総数が２５６ブロック以内であれば、アドレス管理領域内のブロック番号を１バイトで管理することが可能であるが、２５６ブロックを超えるブロック数を取り扱う際には、アドレス管理領域内のブロック番号を２バイト、３バイトといったように複数バイトで管理する必要が生じる。このため、アドレス管理領域のメモリ容量が２倍、３倍といったように多く必要となり、チップサイズが増大してしまうことになる。
【０００９】
本発明は、このような大容量のデータブロック領域を取り扱う場合においても、電源途絶時のデータ保証を確保しながら、効率良くかつ高速に処理を実行することを可能とするＩＣカード及びその情報処理方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明は、第１に、記憶保持するデータを格納する１つ以上の記憶データ領域と、書き込み処理時において対象のデータを格納する１つ以上のバッファ領域と、前記記憶データ領域及びバッファ領域に関する論理アドレスと物理アドレスとを対応づけるアドレス情報を格納する１つ以上のアドレス管理領域とを有するメモリと、前記メモリへの書き込み処理時において、コマンドと対応して送られる書き込みデータを前記バッファ領域に格納し、前記アドレス管理領域における前記バッファ領域に対応するアドレス情報と前記コマンドで指定された前記記憶データ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新するメモリ制御手段と、を備えたＩＣカードを提供する。
【００１１】
第２に、前記メモリは、前記アドレス管理領域において更新処理時の対象のアドレス情報を保持するアドレス保持領域を備えるとともに、前記１つ以上のバッファ領域のうちのどの領域が有効であるかを示すバッファ領域の有効性情報を格納するバッファ判定フラグ領域と、書き込み処理の途中であることを示す書き込み処理中情報を格納するパラメータ領域とを備え、前記メモリ制御手段は、前記書き込み処理時において、前記コマンドで指定された論理アドレスを基に、前記１つ以上の記憶データ領域及びバッファ領域から書き込み対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報を前記バッファ判定フラグ領域に格納し、前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを前記アドレス保持領域に一旦保持するとともに、前記書き込み処理中情報を前記パラメータ領域に設定し、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記記憶データ領域に対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを互いに書き換える更新処理を行った後に、前記書き込み処理中情報を元の状態に戻すことを特徴とする。
【００１２】
第３に、前記メモリ制御手段は、前記書き込み処理中情報によって前記書き込み処理が完了したか否かを判断し、前記書き込み処理が正常に完了していない場合は、処理再開時に前記パラメータ領域に格納されている前記物理アドレスの更新総ブロック数及び更新済みブロック数と前記アドレス保持領域に保持されているアドレス情報と前記バッファ判定フラグ領域の有効性情報とに基づいて、未処理の前記物理アドレスの更新処理を完了させることを特徴とする。
【００１３】
本発明は、第４に、記憶保持するデータを格納する１つ以上の記憶データ領域と、読み出し処理時において対象のデータを格納する１つ以上のバッファ領域と、前記記憶データ領域及びバッファ領域に関する論理アドレスと物理アドレスとを対応づけるアドレス情報を格納する１つ以上のアドレス管理領域とを有するメモリと、前記メモリからの読み出し処理時において、前記アドレス管理領域におけるコマンドで指定された前記記憶データ領域に対応するアドレス情報と前記バッファ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新し、この更新後のバッファ領域に格納された読み出しデータを読み出した後、前記アドレス管理領域を元の状態に復帰するメモリ制御手段と、を備えたＩＣカードを提供する。
【００１４】
第５に、前記メモリは、前記アドレス管理領域において更新処理時の対象のアドレス情報を保持するアドレス保持領域を備えるとともに、前記１つ以上のバッファ領域のうちのどの領域が有効であるかを示すバッファ領域の有効性情報を格納するバッファ判定フラグ領域と、読み出し処理の途中であることを示す読み出し処理中情報を格納するパラメータ領域とを備え、前記メモリ制御手段は、前記読み出し処理時において、前記コマンドで指定された論理アドレスを基に、前記１つ以上の記憶データ領域及びバッファ領域から読み出し対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報を前記バッファ判定フラグ領域に格納し、前記アドレス管理領域における前記バッファ領域に対応する物理アドレスを前記アドレス保持領域に一旦保持するとともに、前記読み出し処理中情報を前記パラメータ領域に設定し、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスを前記バッファ領域に対応する物理アドレスへ書き換える更新処理を行い、この更新後のバッファ領域に格納された読み出しデータを読み出してから前記保持したバッファ領域に対応する物理アドレスを元に戻す復元処理を行った後に、前記読み出し処理中情報を元の状態に戻すことを特徴とする。
【００１５】
第６に、前記メモリ制御手段は、前記読み出し処理中情報によって前記読み出し処理が完了したか否かを判断し、前記読み出し処理が正常に完了していない場合は、処理再開時に前記パラメータ領域に格納されている前記物理アドレスの復元総ブロック数及び復元済みブロック数と前記アドレス保持領域に保持されているアドレス情報と前記バッファ判定フラグ領域の有効性情報とに基づいて、未処理の前記物理アドレスの復元処理を完了させることを特徴とする。
【００１６】
本発明は、第７に、ＩＣカード内のメモリへのデータの書き込み処理時において、コマンドと対応して送られる書き込みデータを前記メモリのバッファ領域に格納するステップと、前記コマンドで指定された論理アドレスを基に、１つ以上の記憶データ領域及びバッファ領域から書き込み対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報をバッファ判定フラグ領域に格納するステップと、前記メモリのアドレス情報を格納するアドレス管理領域における、前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスと前記バッファ領域に対応する物理アドレスとをアドレス保持領域に一旦保持するステップと、書き込み処理の途中であることを示す書き込み処理中情報を設定するステップと、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記記憶データ領域に対応する物理アドレスと前記バッファ領域に対応する物理アドレスとを互いに書き換えて前記アドレス管理領域の更新処理を行うステップと、前記更新処理の後に前記書き込み処理中情報を元の状態に戻すステップと、を有するＩＣカードの情報処理方法を提供する。
【００１７】
本発明は、第８に、ＩＣカード内のメモリからのデータの読み出し処理時において、コマンドで指定された論理アドレスを基に、１つ以上の記憶データ領域及びバッファ領域から読み出し対象の記憶データ領域及びバッファ領域を選択し、この対象領域を指定する有効性情報をバッファ判定フラグ領域に格納するステップと、前記メモリのアドレス情報を格納するアドレス管理領域における、前記バッファ領域に対応する物理アドレスを前記アドレス保持領域に一旦保持するステップと、読み出し処理の途中であることを示す読み出し処理中情報を設定するステップと、前記バッファ判定フラグ領域の有効性情報に基づき、有効な対象領域の前記アドレス管理領域における前記コマンドで指定された記憶データ領域の論理アドレスに対応する物理アドレスを前記バッファ領域に対応する物理アドレスへ書き換えて前記アドレス管理領域の更新処理を行うステップと、前記更新後のバッファ領域に格納された読み出しデータを読み出してから前記保持したバッファ領域に対応する物理アドレスを元に戻す復元処理を行うステップと、前記復元処理の後に前記読み出し処理中情報を元の状態に戻すステップと、を有するＩＣカードの情報処理方法を提供する。
【００１８】
本発明では、メモリへの書き込み処理時において、コマンドと対応して送られる書き込みデータをバッファ領域に格納し、アドレス管理領域におけるバッファ領域に対応するアドレス情報と前記コマンドで指定された記憶データ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新する。このとき、１つ以上の記憶データ領域及びバッファ領域のうちから指定された書き込み対象の記憶データ領域及びバッファ領域を選択して対象領域を示す有効性情報をバッファ判定フラグ領域に格納し、このバッファ判定フラグ領域の有効性情報に基づき、有効な対象領域のアドレス管理領域の更新処理を行う。これにより、書き込みデータ自体を一旦バッファ領域に格納してから記憶データ領域に書き移すような手順が不要であり、書き込みデータを一度バッファ領域に格納した後にアドレス情報を更新するのみで書き込み処理が完了するため、データ伝送処理と並行して略同時にコマンドパケットに付加される書き込みデータをバッファ領域に格納することができ、効率良くかつ高速に処理を実行することが可能となる。また、電源途絶時にも電源復帰後に処理中断前の状態から書き込み処理を復帰して完了させることができ、データの誤りや喪失を防止し、常にデータ保証を確保することが可能となる。さらに、大容量のデータ領域を有するメモリに対しても、書き込み処理に用いるアドレス管理領域などのシステム制御用のメモリ容量が大幅に増加することを防止できる。
【００１９】
また、メモリへのデータの読み出し処理時において、アドレス管理領域におけるコマンドで指定された記憶データ領域に対応するアドレス情報とバッファ領域に対応するアドレス情報とを書き換えてアドレス管理領域を更新し、更新後のバッファ領域に格納された読み出しデータを読み出した後、アドレス管理領域を元の状態に復帰する。このとき、１つ以上の記憶データ領域及びバッファ領域のうちから指定された読み出し対象の記憶データ領域及びバッファ領域を選択して対象領域を示す有効性情報をバッファ判定フラグ領域に格納し、このバッファ判定フラグ領域の有効性情報に基づき、有効な対象領域のアドレス管理領域の更新処理を行う。これにより、読み出しデータ自体を記憶データ領域からバッファ領域に書き写して読み出すような手順が不要であり、アドレス情報を更新して更新後のバッファ領域から読み出しデータを読み出した後にアドレス情報を復帰させることで読み出し処理が完了するため、データ伝送処理と並行して略同時にバッファ領域に格納された読み出しデータを読み出してレスポンスパケットに付加することができ、効率良くかつ高速に処理を実行することが可能となる。また、電源途絶時にも電源復帰後に処理中断前の状態から読み出し処理を復帰して完了させることができ、データの誤りや喪失を防止し、常にデータ保証を確保することが可能となる。さらに、大容量のデータ領域を有するメモリに対しても、読み出し処理に用いるアドレス管理領域などのシステム制御用のメモリ容量が大幅に増加することを防止できる。
【００２０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の一実施の形態における情報処理方式が適用される非接触式ＩＣカードシステムの構成を示すブロック図である。ＩＣカード１０１とＩＣカード１０１に対してデータの読み書きを行うリーダライタ１０２との間のデータの送受信は、それぞれアンテナ１０３、１０４を用いて電磁誘導方式等により行われる。リーダライタ１０２は、ＩＣカード１０１への送信データを内部で作成し、変調信号としてアンテナ１０４を通してＩＣカード１０１へ送信する。通信エリア内に存在するＩＣカード１０１は、アンテナ１０３にて変調されたデータを受信する。受信したデータは復調部１０５で復調され、制御部１０６へ送られる。
【００２１】
制御部１０６は、例えばＣＰＵ等のプロセッサにより構成され、制御用メモリＲＯＭ１０７に格納された制御プログラムに従って受信データの解析や受信したデータをＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ　Ｅｒａｓａｂｌｅ　Ｐｒｏｇｒａｍｍａｂｌｅ　ＲＯＭ）やＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｏｎｉｃ　ＲＡＭ　）等のメモリからなる不揮発性メモリ１０９に格納するなどの処理を行う。受信データの格納は、不揮発性メモリ１０９にＦｅＲＡＭなどの書き込み速度が速いメモリを用いる場合は直接この不揮発性メモリ１０９に書き込むようにする。また、受信データをＲＡＭ１０８内の送受信バッファに一旦書き込むようにしてもよい。
【００２２】
その後、受信データについて、不揮発性メモリ１０９においてデータの読み出し、書き込み処理を行い、応答のための送信データを作成する。この送信データは、制御部１０６を介して変調部１１０で変調され、この変調信号をアンテナ１０３よりリーダライタ１０２へ送信する。
【００２３】
図１に示すＩＣカード１０１の不揮発性メモリ１０９は、リーダライタ１０２から見た論理的なメモリ空間において、図２に示すようなファイル構成を持つ。すなわち、利用者が必要とするデータが格納されるデータブロック領域１４０１（記憶データ領域に相当する）と、リーダライタ１０２からＩＣカード１０１へデータの読み書き時に指定されるデータが格納される予備ブロック領域１４０２（バッファ領域に相当する）と、ＩＣカード１０１の不揮発性メモリ１０９において論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報が格納されるアドレス管理領域１４０３とを有してなる。また、不揮発性メモリ１０９には、データ更新の際に用いる書き込み処理中情報や読み出し処理中情報を含む各種パラメータを格納するパラメータ領域１４０４と、アドレス管理領域１４０３の更新処理において更新対象となるアドレス管理領域を指定する有効性情報を示すフラグを格納するバッファ判定フラグ領域１４０５とが設けられる。
【００２４】
本実施形態は、ＩＣカード１０１の不揮発性メモリ１０９に関して、ブロック単位でデータを管理する場合に、ブロックの総数が２５６ブロックを超えるような大容量のメモリにおける論理構成及びその情報処理方法の例を示したものである。ここでは、データブロック領域１４０１と予備ブロック領域１４０２の総数が２５６ブロックを超える場合の例を示す。なお、本実施形態においては、データブロック領域１４０１のブロック数を４８０ブロック、予備ブロック領域１４０２のブロック数を３２ブロックとしているが、これらのブロック数に限られるものではない。
【００２５】
データブロック領域１４０１及び予備ブロック領域１４０２は、それぞれ所定のデータ長、例えば１６バイトからなるブロック単位で構成される複数のブロックデータが論理ブロック番号を基準として記憶するように構成されている。図２の例では、データブロック領域１４０１は、論理ブロック番号００、０１、０２、・・・、１ＤＦで示される４８０の論理ブロックデータを記憶し、また、予備ブロック領域１４０２は、論理ブロック番号１Ｅ０、１Ｅ１、・・・、１ＦＦで示される３２の予備ブロックデータを記憶している。なお、本実施形態の説明において、論理ブロック番号や物理ブロック番号などのメモリ上のブロックのアドレスを示す値、各領域に格納されるデータの内容やフラグなどの値は、１６進数で表すものとする。
【００２６】
図２のようなブロック構成では、データブロック領域１４０１のブロック数と予備ブロック領域１４０２のブロック数の総数が２５６を超えるため、そのままではアドレス管理領域１４０３の管理ブロック番号を１バイトで管理することができない。そこで、本実施形態においては、データブロック領域のブロック数と予備ブロック領域のブロック数の総数が２５６×２以下であることから、図３に示すように、ブロック領域を論理的なメモリ空間において２つの領域に分割する。すなわち、２つのデータブロック領域Ａ１５０１及びデータブロック領域Ｂ１５０２、２つの予備ブロック領域Ａ１５０３及び予備ブロック領域Ｂ１５０４、それぞれの領域の論理的なメモリ空間と物理的なメモリ空間とを関連付けるアドレス情報が格納される２つのアドレス管理領域Ａ１５０５及びアドレス管理領域Ｂ１５０６、パラメータ領域１５０７、バッファ判定フラグ領域１５０８から構成することとする。なお、図３では２つの領域に分割しているが、３つ以上に分割してもよく、データブロック領域と予備ブロック領域の総数に応じて適切な数の領域に分割してもよい。
【００２７】
図３のブロック構成の場合、各ブロックデータは図２で示した論理ブロック番号に代わって、分割された複数の領域毎に定義されたエリア別論理ブロック番号によって管理される。すなわち、データブロック領域Ａ１５０１及びデータブロック領域Ｂ１５０２は、それぞれの領域において、エリア別論理ブロック番号００、０１、０２、・・・、ＥＦで示される２４０の論理ブロックデータを記憶し、予備ブロック領域Ａ１５０３及び予備ブロック領域Ｂ１５０４は、それぞれの領域において、論理ブロック番号Ｆ０、Ｆ１、・・・、ＦＦで示される１６の予備ブロックデータを記憶している。
【００２８】
リーダライタ１０２はＩＣカード１０１に対して、搭載される不揮発性メモリ１０９内のデータブロック領域Ａ１５０１及びデータブロック領域Ｂ１５０２に対してデータを読み書きを行うことが可能である。この場合、バッファ判定フラグ領域１５０８のフラグにより更新対象となるアドレス管理領域を選択し、対応するデータブロック領域Ａ１５０１またはデータブロック領域Ｂ１５０２において、データの読み書きを行う論理ブロックデータのエリア別論理ブロック番号を指定してデータの読み書きを行うことになる。また、１回のコマンドにて複数の論理ブロック番号を指定することも可能であり、例えば、エリア別論理ブロック番号００と０１を指定することにより複数の論理ブロックデータに対して同時にデータの読み書きを行うことができる。
【００２９】
また本実施形態において、データの書き込み処理においては、ライトコマンドに付加される書き込み指定ブロックデータが受信データ伝送処理と略同時に並行して予備ブロック領域Ａ１５０３または予備ブロック領域Ｂ１５０４の予備ブロック０データから予備ブロックＦデータまで順に格納される。すなわち２つのブロックデータの同時書き込み処理を行った際には、ライトコマンドに付加される１番目に指定されたブロックデータが予備ブロック０データに、２番目に指定されたブロックデータが予備ブロック１データに格納されることになる。
【００３０】
さらに、データの読み出し処理においては、リードコマンドにて指定されたエリア別論理ブロック番号のブロックデータが送信処理時において予備ブロック領域Ａ１５０３または予備ブロック領域Ｂ１５０４の予備ブロック０データから予備ブロックＦデータまで順に格納される。そして制御部１０６は、リードレスポンス返送時に予備ブロック０データから順にブロックデータの読み出しを行いながらリードレスポンスにブロックデータを付加して、送信データ伝送処理を行う。
【００３１】
また、このとき不揮発性メモリ１０９は、実際のメモリ構成となる物理的なメモリ空間において、図４に示すようなファイル構成を持つ。物理的なメモリ空間は、アドレス管理領域Ａ１６０１及びアドレス管理領域Ｂ１６０２と、データ領域Ａ１６０３及びデータ領域Ｂ１６０４とを有して構成される。アドレス管理領域Ａ１６０１は、論理ブロックデータのブロック番号を管理するデータブロック用アドレス管理領域Ａ１６１１と、予備ブロックデータのブロック番号を管理する予備ブロック用アドレス管理領域Ａ１６１２と、電源途絶時のデータ保証のため、ブロックデータの書き込み処理及び読み出し処理を行うときにブロック番号が記録されるブロック番号保持領域Ａ１６１３と有して構成される。同様に、アドレス管理領域Ｂ１６０２は、データブロック用アドレス管理領域Ｂ１６１４と、予備ブロック用アドレス管理領域Ｂ１６１５と、ブロック番号保持領域Ｂ１６１６とを有して構成される。
【００３２】
また、不揮発性メモリ１０９には、データ更新の際に用いる書き込み処理中情報や読み出し処理中情報を含む各種パラメータを格納するパラメータ領域１６０５と、それぞれのアドレス管理領域Ａ１６０１、アドレス管理領域Ｂ１６０２の更新処理において、更新対象となるアドレス管理領域を指定するフラグを格納するバッファ判定フラグ領域１６０６とが設けられる。
【００３３】
本実施形態では、データ領域を複数に分割し、それぞれのデータ領域Ａ１６０３とデータ領域Ｂ１６０４のブロック数を２５６ブロック以下とすることにより、対応するアドレス管理領域Ａ１６０１、アドレス管理領域Ｂ１６０２においてはそれぞれ１バイトのブロック番号で管理することができる。
【００３４】
図３に示される論理的なメモリ空間におけるデータブロック領域Ａ１５０１と予備ブロック領域Ａ１５０３は、図４に示される物理的なメモリ空間においてはアドレス管理領域Ａ１６０１内の各ブロック番号によりそれぞれ対応づけられ、双方がデータ領域Ａ１６０３に混在して格納されている。同様に、図３に示される論理的なメモリ空間におけるデータブロック領域Ｂ１５０２と予備ブロック領域Ｂ１５０４は、図４に示される物理的なメモリ空間においてはアドレス管理領域Ｂ１６０２内の各ブロック番号によりそれぞれ対応づけられ、双方がデータ領域Ｂ１６０４に混在して格納されている。
【００３５】
また、図３に示す論理的なメモリ空間におけるデータブロック領域Ａ１５０１における論理ブロックデータは、図４に示す物理的なメモリ空間においては、アドレス管理領域Ａ１６０１内のデータブロック用アドレス管理領域Ａ１６１１における各ブロック番号により関連付けられてデータ領域Ａ１６０３に記録されている。さらに、図３に示す論理的なメモリ空間における予備ブロック領域Ａ１５０３における予備ブロックデータは、図４に示す物理的なメモリ空間においては、アドレス管理領域Ａ１６０１内の予備ブロック用アドレス管理領域Ａ１６１２における各ブロック番号により関連付けられてデータ領域Ａ１６０３に記録されている。一方、図３に示す論理的なメモリ空間におけるデータブロック領域Ｂ１５０２における論理ブロックデータは、図４に示す物理的なメモリ空間においては、アドレス管理領域Ｂ１６０２内のデータブロック用アドレス管理領域Ｂ１６１４における各ブロック番号により関連付けられてデータ領域Ｂ１６０４に記録されている。また、図３に示す論理的なメモリ空間における予備ブロック領域Ｂ１５０４における予備ブロックデータは、図４に示す物理的なメモリ空間においては、アドレス管理領域Ｂ１６０２内の予備ブロック用アドレス管理領域Ｂ１６１５における各ブロック番号により関連付けられてデータ領域Ｂ１６０４に記録されている。
【００３６】
さらに、アドレス管理領域Ａ１６０１内のブロック番号保持領域Ａ１６１３は、ブロックデータの書き込み処理及び読み出し処理時にコマンドにて指定される論理ブロック番号を保持する論理ブロック番号保持領域Ａ１６２１と、指定された論理ブロック番号に対応する物理ブロック番号を保持する物理ブロック番号保持領域Ａ１６２３と、書き込み処理時にコマンドパケットに付加される書き込みデータ及び、読み出し処理にレスポンスパケットに付加される読み出しデータが格納される予備ブロック番号を保持する予備ブロック番号保持領域Ａ１６２５とを有して構成される。同様に、アドレス管理領域Ｂ１６０２内のブロック番号保持領域Ｂ１６１６は、論理ブロック番号保持領域Ｂ１６２２と、物理ブロック番号保持領域Ｂ１６２４と、予備ブロック番号保持領域Ｂ１６２６とを有して構成される。また、これら不揮発性メモリ１０９内のブロックデータの値が誤りなく正当なものであるかを判定、確認するために、それぞれのブロックデータにはブロック単位毎に誤り検査情報（パリティデータ）１６０７が格納される。
【００３７】
次に、それぞれのアドレス管理領域Ａ１６０１、アドレス管理領域Ｂ１６０２とバッファ判定フラグ領域１６０６の構成及び制御内容について図５を用いて説明する。
【００３８】
データブロック用アドレス管理領域Ａ１６１１は、先頭から順に、論理ブロック番号００、論理ブロック番号０１、・・・、論理ブロック番号ＤＦに対応する物理ブロック番号がそれぞれ格納されている。図５においては、データブロック用アドレス管理領域Ａ１６１１の論理ブロック番号００に対応する物理ブロック番号は００が格納されているため、論理的なメモリ空間において論理ブロック番号００に格納されている論理ブロック００データは、物理的なメモリ空間においては物理ブロック番号００に格納されている。同様に論理ブロック番号０１に対応する物理ブロック番号はＦ１が格納されているため、論理的なメモリ空間において論理ブロック番号０１に格納されている論理ブロック０１データは、物理的なメモリ空間においては物理ブロック番号Ｆ１に格納されている。また、データブロック用アドレス管理領域Ｂ１６１４についても同様に、論理ブロック番号００〜論理ブロック番号ＤＦに対応する物理ブロック番号がそれぞれ格納されている。
【００３９】
予備ブロック用アドレス管理領域Ａ１６１２及び予備ブロック用アドレス管理領域Ｂ１６１５は、それぞれデータブロック用アドレス管理領域Ａ１６１１及びデータブロック用アドレス管理領域Ｂ１６１４と同様に、論理ブロック番号Ｆ０〜論理ブロック番号ＦＦに対応する物理ブロック番号がそれぞれ格納されている。例えば、予備ブロック用アドレス管理領域Ａ１６１２の論理ブロック番号Ｆ０に対応する物理ブロック番号は０２が格納されているため、論理的なメモリ空間において論理ブロック番号Ｆ０に格納されている予備ブロック０データは、物理的なメモリ空間においては物理ブロック番号０２に格納されている。
【００４０】
このように本実施形態では、データブロック用アドレス管理領域Ａ１６１１及び予備ブロック用アドレス管理領域Ａ１６１２と、データブロック用アドレス管理領域Ｂ１６１４及び予備ブロック用アドレス管理領域Ｂ１６１５とにおいて、それぞれ１バイトの物理ブロック番号が格納されている。
【００４１】
また本実施形態においては、論理ブロック番号保持領域Ａ１６２１は、データブロック領域Ａ１５０１及びデータブロック領域Ｂ１５０２の総ブロック数が２５６ブロックを超え、かつ５１２ブロック以下であることから、２バイトで構成した論理ブロック番号を保持するようにしている。この論理ブロック番号保持領域Ａ１６２１には、１６個の論理ブロック番号を記憶保持することが可能となっている。そして、書き込みまたは読み出しブロックデータ数に応じて、また、書き込みまたは読み出しの順序に合わせて先頭より指定された論理ブロック番号が格納される。このとき論理ブロック番号保持領域Ｂ１６２２には同一データが格納されることになるため、確保しなくてもどちらでもよい。また、それぞれの論理ブロック番号保持領域Ａ１６２１と論理ブロック番号保持領域Ｂ１６２２には、対応する各データ領域Ａ１６０３、データ領域Ｂ１６０４を個別に指定できるように２５６ブロック以下の論理ブロック番号に変換した値を格納するようにしてもよい。なお、論理ブロック番号保持領域Ａ１６２１及び論理ブロック番号保持領域Ｂ１６２２でそれぞれ記憶保持することが可能なブロック数は１６個に限られるものではない。
【００４２】
物理ブロック番号保持領域Ａ１６２３及び物理ブロック番号保持領域Ｂ１６２４では、１バイトの物理ブロック番号をそれぞれ１６個記憶保持することが可能となっている。そして、この物理ブロック番号保持領域Ａ１６２３及び物理ブロック番号保持領域Ｂ１６２４には、書き込みまたは読み出しブロックデータ数に応じて、また、書き込みまたは読み出しの順序に合わせて先頭より指定される論理ブロック番号に対し、アドレス管理領域Ａ１６０１またはアドレス管理領域Ｂ１６０２により対応付けられる物理ブロック番号が格納される。なお、物理ブロック番号保持領域Ａ１６２３及び物理ブロック番号保持領域Ｂ１６２４でそれぞれ記憶保持することが可能なブロック数についても１６個に限られるものではない。
【００４３】
予備ブロック番号保持領域Ａ１６２５及び予備ブロック番号保持領域Ｂ１６２６では、１バイトの予備ブロック番号をそれぞれ１６個記憶保持することが可能となっている。そして、この予備ブロック番号保持領域Ａ１６２５及び予備ブロック番号保持領域Ｂ１６２６には、書き込みまたは読み出しブロックデータ数に応じて、また、書き込みまたは読み出しの順序に合わせて先頭よりライトコマンドに付加されるブロックデータまたはリードレスポンスに付加されるブロックデータが格納される論理的なメモリ空間における予備ブロック領域Ａ１５０３または予備ブロック領域Ｂ１０４の論理ブロック番号に対応する物理的なメモリ空間における物理ブロック番号が格納される。なお、予備ブロック番号保持領域Ａ１６２５及び予備ブロック番号保持領域Ｂ１６２６でそれぞれ記憶保持することが可能なブロック数についても１６個に限られるものではない。
【００４４】
このように論理ブロック番号、物理ブロック番号、及び予備ブロック番号を保持することによって、データの書き込みや読み出しの処理中に電源途絶などによって処理が中断しても、確実にデータを中断時点または元の状態に復帰させることが可能であり、データの誤りを防止できる。
【００４５】
次に、図６に示すフローチャートを参照して、本実施形態のコマンド処理について説明する。
【００４６】
ＩＣカード１０１はリーダライタ１０２からのコマンド受信を開始すると（ステップＳ１７０１）、受信したコマンドがどのコマンドであるかの判定を行い（ステップＳ１７０２）、ライトコマンドであった場合にはコマンドの受信を行いながら付加されたブロックデータを予備ブロックに格納する（ステップＳ１７０３）。このとき書き込みブロックデータは予備ブロック用アドレス管理領域に示される物理ブロック番号のブロックデータに格納されることになる。なお、ここでは予備ブロック領域Ａ１５０３と予備ブロック領域Ｂ１５０４のそれぞれに同一データを書き込むようにする。
【００４７】
受信したコマンドがライトコマンドでない場合はステップＳ１７０３の処理をスキップする。コマンド受信完了後（ステップＳ１７０４）、各コマンドに対する処理内容を実行する（ステップＳ１７０５）。ここで、受信データの確認を行った結果（ステップＳ１７０６）、伝送上の不具合により受信データに誤りがあったり、指定されたパラメータに異常が確認された場合には、エラーレスポンスを送信し（ステップＳ１７０７）、コマンド受信待ちに移行したり、エラーレスポンスを送信せずそのままコマンド受信待ちに移行する。
【００４８】
各処理を正常に実行することが可能であった場合には、受信コマンドの判定を行う（ステップＳ１７０８）。受信コマンドがライトコマンドあるいは、リードコマンドでなかった場合には、レスポンスの送信を開始し（ステップＳ１７１１）、レスポンス送信完了後（ステップＳ１７１４）、コマンド受信待ちに移行する。受信コマンドがライトコマンドであった場合には、後述するバッファ判定フラグ領域の更新処理を行った後（ステップＳ１７０９）、ライトコマンドに対応するアドレス管理領域の更新処理を行う（ステップＳ１７１０）。その後、レスポンスの送信を開始し（ステップＳ１７１１）、レスポンス送信完了後（ステップＳ１７１４）、コマンド受信待ちに移行する。
【００４９】
また、受信コマンドがリードコマンドであった場合には、バッファ判定フラグ領域の更新処理を行った後（ステップＳ１７０９）、リードコマンドに対応するアドレス管理領域の更新処理を行う（ステップＳ１７１１）。その後、レスポンスの送信を開始し（ステップＳ１７１１）、更新処理によって書き換えられた予備ブロックよりブロックデータを読み出しながらレスポンスを送信する（ステップＳ１７１２、ステップＳ１７１３）。そして、レスポンスの送信が完了し（ステップＳ１７１４）、アドレス管理領域の復帰処理を行った後に（ステップＳ１７１５、ステップＳ１７１６）、コマンド受信待ちに移行する。
【００５０】
次に、図６のステップＳ１７０９に示されるバッファ判定フラグ領域の更新処理について、図７に示すフローチャートを参照して説明する。
【００５１】
まずコマンドにて指定された論理ブロック番号を先頭から取り出し（ステップＳ１８０１）、そのＭ（Ｍ＝１、２…）番目の論理ブロック番号がＦ０以上であるかどうかの判定処理を行う（ステップＳ１８０２）。本実施形態では、複数に分割した個々のデータブロック領域のブロック数をＦ０としているため、このステップＳ１８０２での論理ブロック番号の判定処理によって、指定された書き込みブロックがデータブロック領域Ａ１５０１に該当するものか、あるいはデータブロック領域Ｂ１５０２に該当するものかどうかを判定することになる。
【００５２】
ここで、指定された論理ブロック番号がＦ０より小さい場合には、対応するＭ番目のバッファ判定フラグに００を書き込み（ステップＳ１８０３）、Ｆ０以上であった場合には、対応するＭ番目のバッファ判定フラグに０１を書き込む（ステップＳ１８０４）。そして、指定された全ブロックについて終了したかを判断し（ステップＳ１８０５）、終了するまでステップＳ１８０１〜Ｓ１８０４の処理を繰り返して、バッファ判定フラグへの書き込み処理をコマンドで指定されたブロック数全てに対して実施する。
【００５３】
図５にはコマンドにおいて０００１、００Ｆ２、００００、００Ｆ３の順序で書き込みを行う論理ブロックが指定された場合の例を示している。この場合、バッファ判定フラグ領域の更新処理により、バッファ判定フラグ領域１６０６には００、０１、００、０１の順序でフラグの値が格納されることになる。
【００５４】
次に、図６のステップＳ１７１０に示されるアドレス管理領域の更新処理について、図８に示すフローチャートを参照して説明する。まず、ライトコマンド受信時における処理内容として、論理ブロック番号０００１、００Ｆ２、００００、００Ｆ３の順序で指定してデータブロック領域Ａ１５０１とデータブロック領域Ｂ１５０２に交互に１つずつ合計２つずつのブロックデータの書き込み処理を行う場合の手順を説明する。なお、図５にはライトコマンドを受信して書き込み処理を実行する前の状態のメモリ構成が示されている。
【００５５】
アドレス管理領域の更新処理では、まず、ライトコマンド処理かリードコマンド処理かの判定を行う（ステップＳ１９０１）。ライトコマンド処理であった場合には、論理ブロック番号の保持処理を行う（ステップＳ１９０２）。本実施形態では、指定された論理ブロック番号０００１、００Ｆ２、００００、００Ｆ３の順序で、図５に示す論理ブロック番号保持領域Ａ１６２１に記録される。なお、論理ブロック番号保持領域Ｂ１６２２において同様に論理ブロック番号を保持してもよい。
【００５６】
続いて、バッファ判定フラグ領域１６０６に保持されたバッファ判定フラグの値に基づき、各ブロック番号の保持処理や更新処理を行う領域をアドレス管理領域Ａ１６０１とアドレス管理領域Ｂ１６０２のいずれかより選択する（ステップＳ１９０３）。その後、対象領域の物理ブロック番号保持領域Ａ１６２３またはＢ１６２４に物理ブロック番号を保持する（ステップＳ１９０４）。指定された論理ブロック番号０００１、００Ｆ２、００００、００Ｆ３に対応する物理ブロック番号は、データブロック用アドレス管理領域Ａ１６１１及びＢ１６１４より図５において太線枠で示すＦ１、Ｆ０、００、１３となり、これらの物理ブロック番号が順に物理ブロック番号保持領域Ａ１６２３及びＢ１６２４に交互にそれぞれ記録される。
【００５７】
さらに、対象領域の予備ブロック番号保持領域Ａ１６２５またはＢ１６２６に予備ブロック番号を保持する（ステップＳ１９０５）。図５の例では、処理前の予備ブロック用アドレス管理領域Ａ１６１２における１ブロック目、３ブロック目の物理ブロック番号は、図中太線枠で示す０２、０５であり、予備ブロック用アドレス管理領域Ｂ１６１５における２ブロック目、４ブロック目の物理ブロック番号は、図中太線枠で示す１１、Ｆ３である。よって、これらの物理ブロック番号が予備ブロック番号保持領域Ａ１６２５及びＢ１６２６にそれぞれ格納される。また、ライトブロック数（書き込みブロック数、更新総ブロック数に相当する）（Ｎ＝４）を不揮発性メモリのパラメータ領域１６０５に保持する（ステップＳ１９０６）。
【００５８】
次に、ライト処理カウンタ数（更新済みブロック数に相当する）（Ｍ＝０）をインクリメント（＋１）して値（Ｍ＝１）を不揮発性メモリのパラメータ領域１６０５に保持する（ステップＳ１９０７）。続いて（Ｍ＝１）番目のライト処理に対応する物理ブロック番号を更新する（ステップＳ１９０８）。本実施形態では、データブロック用アドレス管理領域Ａ１６１１における１番目の論理ブロック番号０１に対応する物理ブロック番号Ｆ１に、対応する１番目の予備ブロックの物理ブロック番号０２を書き込み更新する。またさらに、（Ｍ＝１）番目のライト処理に対応する予備ブロック番号を更新する（ステップＳ１９０９）。ここでは、予備ブロック用アドレス管理領域Ａ１６１２における１番目の物理ブロック番号０２に、対応する１番目のデータブロックの物理ブロック番号Ｆ１を書き込み、データブロック及び予備ブロックのそれぞれの物理ブロック番号を互いに書き換える。
【００５９】
その後、ライトブロック数及びライト処理カウンタ数により得られる書き込み処理中情報によってライト処理が完了したかどうかの確認を行い（Ｎ＝Ｍ）（ステップＳ１９１０）、完了していない場合にはステップＳ１９０７へ戻り、ライト処理カウンタ数をインクリメント（＋１）するとともに、継続して対象領域の２ブロック目のデータブロック及び予備ブロックのそれぞれの物理ブロック番号を互いに書き換える（ステップＳ１９０７〜ステップＳ１９０９）。ライト処理が完了した場合には、ライト処理カウンタ数をクリアし（Ｍ＝０）（ステップＳ１９１１）、アドレス管理領域Ａ１６０１及びＢ１６０２の更新処理を終了する。このときの書き込み処理が完了した状態のメモリ構成を図９に示す。また、アドレス管理領域の更新処理完了後にライトコマンドに対するレスポンスの送信を行う。
【００６０】
上記のアドレス管理領域の更新処理がブロックデータの書き込み処理となる。すなわち、複数に分割されたデータ領域中のコマンドで指定された対象領域において、それぞれライトコマンドによって書き込むブロックデータを一旦予備ブロックに格納し、アドレス管理領域においてライトコマンドで指定された論理ブロックと予備ブロックとを入れ替えるようにブロック番号を書き換えることによって、ブロックデータの書き込み処理が完了する。このアドレス管理領域におけるブロック番号の更新処理は、従来の書き込み処理におけるブロックデータの書き込み処理に比べ高速に処理を行うことが可能である。
【００６１】
また、本実施形態では、各データ領域において書き込み処理時に指定されたブロックデータが格納される予備ブロック領域の論理ブロック番号がＦ０〜ＦＦのように固定されることから、常に同じ論理ブロック番号に対して書き込み、読み出しの処理がなされ、かつ受信データの伝送処理と略同時に並行してブロックデータの予備ブロック領域への格納が行われるため、実質的なブロックデータの書き込み処理時間が別途必要なく、書き込み処理の高速化が実現される。
【００６２】
また、書き込み処理途中時に電源途絶が発生した場合、書き込み処理が未完了であるので不揮発性メモリのパラメータ領域１６０５に格納されているライト処理カウンタ数（Ｍ）がクリアされていない状態（≠０）となる。このため、電源復帰時にライト処理カウンタ数（Ｍ）の値を確認することにより、書き込み処理時の電源途絶が発生したかどうかを確認することが可能となる。
【００６３】
このように書き込み処理が未完了の場合は、処理再開時に、パラメータ領域１６０５に格納されているライトブロック数及びライト処理カウンタ数と、ブロック番号保持領域Ａ１６１３、Ｂ１６１６に保持されているブロック番号と、バッファ判定フラグ領域１６０６のフラグの値とに基づいて、未処理のブロック番号の更新処理などを行って書き込み処理を完了させる。
【００６４】
次に、リードコマンド受信時における処理内容として、論理ブロック番号０００１、００Ｆ２、００００、００Ｆ３の順序で指定してデータブロック領域Ａ１５０１とデータブロック領域Ｂ１５０２に交互に１つずつ合計２つずつのブロックデータの読み出し処理を行う場合の手順を説明する。
【００６５】
図８のステップＳ１９０１でのコマンド判定処理において、リードコマンド処理であった場合には、前述のライトコマンド処理の場合と同様に、バッファ判定フラグ領域１６０６に保持されたバッファ判定フラグの値に基づき、各ブロック番号の保持処理や更新処理を行う領域をアドレス管理領域Ａ１６０１とアドレス管理領域Ｂ１６０２のいずれかより選択する（ステップＳ１９１２）。
【００６６】
その後、対象領域の予備ブロック番号保持領域Ａ１６２５またはＢ１６２６に予備ブロック番号を保持する（ステップＳ１９１３）。図５の例では、処理前の予備ブロック用アドレス管理領域Ａ１６１２における１ブロック目、３ブロック目の物理ブロック番号は、図中太線枠で示す０２、０５であり、予備ブロック用アドレス管理領域Ｂ１６１５における２ブロック目、４ブロック目の物理ブロック番号は、図中太線枠で示す１１、Ｆ３である。よって、これらの物理ブロック番号が予備ブロック番号保持領域Ａ１６２５及びＢ１６２６にそれぞれ格納される。また、リードブロック数（読み出しブロック数、復元総ブロック数に相当する）（Ｎ＝４）を不揮発性メモリのパラメータ領域１６０５に保持する（ステップＳ１９１４）。
【００６７】
次に、リード処理カウンタ数（復元済みブロック数に相当する）（Ｍ＝０）をインクリメント（＋１）して値（Ｍ＝１）を不揮発性メモリのパラメータ領域１６０５に保持する（ステップＳ１９１５）。続いて（Ｍ＝１）番目のリード処理に対応する予備ブロック番号を更新する（ステップＳ１９１６）。ここでは、予備ブロック用アドレス管理領域Ａ１６１２における１番目の物理ブロック番号０２に、対応する１番目のデータブロックの物理ブロック番号Ｆ１を書き込み更新する。
【００６８】
その後、リードブロック数及びリード処理カウンタ数により得られる読み出し処理中情報によってリード処理が完了したかどうかの確認を行い（Ｎ＝Ｍ）（ステップＳ１９１７）、完了していない場合にはステップＳ１９１５へ戻り、リード処理カウンタ数をインクリメント（＋１）するとともに、継続して対象領域の２ブロック目の予備ブロックの物理ブロック番号を書き換える（ステップＳ１９１５、Ｓ１９１６）。リード処理が完了した場合には、アドレス管理領域Ａ１６０１及びＢ１６０２の更新処理を終了する。
【００６９】
なお、ライト処理カウンタ数（Ｍ）とリード処理カウンタ数（Ｍ）、ライトブロック数（Ｎ）とリードブロック数（Ｎ）は、それぞれ兼用してもよいし、別個に設けてもよい。
【００７０】
そして、アドレス管理領域の更新処理完了後にリードコマンドに対するレスポンスの送信を行う。リードコマンドのレスポンスに付加される読み出しブロックデータは、予備ブロック用アドレス管理領域Ａ１６１２またはＢ１６１５にて指定される物理ブロック番号のブロックデータであり、リードブロック数分だけ予備ブロック０データから順に読み出されながら送信される。そして、レスポンスの送信後、アドレス管理領域の復帰処理を行う。これにより、予備ブロック用アドレス管理領域Ａ１６１２及びＢ１６１５における各物理ブロック番号をリードコマンドを受信する前の状態に戻すようにする。
【００７１】
上記のアドレス管理領域の更新処理及び復帰処理がブロックデータの読み出し処理となる。すなわち、複数に分割されたデータ領域中のコマンドで指定された対象領域において、それぞれアドレス管理領域においてリードコマンドで指定された論理ブロックと予備ブロックとを入れ替えるようにブロック番号を書き換えて予備ブロックよりブロックデータを読み出し、その後この予備ブロックと論理ブロックのブロック番号を互いに書き換えて元の状態に戻すことによって、ブロックデータの読み出し処理が完了する。このアドレス管理領域におけるブロック番号の更新処理及び復帰処理は、従来の読み出し処理におけるブロックデータの読み出し処理に比べ高速に処理を行うことが可能である。
【００７２】
また、本実施形態では、各データ領域において読み出し処理時に指定されたブロックデータが格納される予備ブロック領域の論理ブロック番号がＦ０〜ＦＦのように固定されることから、常に同じ論理ブロック番号に対して読み出しの処理がなされ、かつ送信データの伝送処理と略同時に並行してブロックデータの予備ブロック領域からの読み出し処理が行われるため、実質的なブロックデータの読み出し処理時間が別途必要なく、読み出し処理の高速化が実現される。
【００７３】
また、読み出し処理途中時に電源途絶が発生した場合、読み出し処理が未完了であるので不揮発性メモリのパラメータ領域１６０５に格納されているリード処理カウンタ数（Ｍ）がクリアされていない状態（≠０）となる。このため、電源復帰時にリード処理カウンタ数（Ｍ）の値を確認することにより、読み出し処理時の電源途絶が発生したかどうかを確認することが可能となる。
【００７４】
このように読み出し処理が未完了の場合は、処理再開時に、パラメータ領域１６０５に格納されているリードブロック数及びリード処理カウンタ数と、ブロック番号保持領域Ａ１６１３、Ｂ１６１６に保持されているブロック番号と、バッファ判定フラグ領域１６０６のフラグの値とに基づいて、未処理のブロック番号の更新処理などを行って読み出し処理を完了させる。
【００７５】
上述したように、本実施形態では複数に分割されたデータ領域において、アドレス管理領域の更新処理時の各ブロック番号の保持処理や更新処理については、バッファ判定フラグの値を読み出し、バッファ判定フラグの値が００であった場合にはアドレス管理領域Ａ１６０１のみ処理行い、バッファ判定フラグの値が０１であった場合にはアドレス管理領域Ｂ１６０２のみ処理を行うことにする。
【００７６】
ここで、アドレス管理領域Ａ１５０５の論理ブロック番号は、リーダライタ１０２から見た論理的なメモリ空間における論理ブロック番号と一致することになる。一方、アドレス管理領域Ｂ１５０６の論理ブロック番号は、リーダライタ１０２から見た論理的なメモリ空間における論理ブロック番号からＦ０を減算した値として管理制御される。例えば、ライトコマンドで２ブロック目の指定として００Ｆ２が指定された場合、論理ブロック番号とＦ０との判定処理の結果、アドレス管理領域Ｂ１６０２に対する処理であると判断されて制御が行われ、この対象領域内の論理ブロック番号として、００Ｆ２−００Ｆ０＝０００２の演算結果が得られる。したがってこの場合、アドレス管理領域Ｂ１６０２における論理ブロック０２への書き込みとして処理されることになる。
【００７７】
なお、上記処理手順の説明では、ライトコマンド受信時の予備ブロックへのブロックデータ格納処理を、予備ブロック領域Ａ１５０３と予備ブロック領域Ｂ１５０４のそれぞれに同一データを書き込むこととしていたが、これに限るものではない。例えば、上記のバッファ判定フラグ領域の更新処理において行われる対象領域判定処理によって、コマンドに付加された論理ブロック番号に基づいて指定された書き込みブロックがデータブロック領域Ａに該当するものか、あるいはデータブロック領域Ｂに該当するものかどうかの判定を行い、該当する予備ブロック領域のみに書き込むことにしてもよい。
【００７８】
以上の処理により、本実施形態においてはメモリ空間においてデータブロック領域の論理ブロック番号が１ＤＦまで定義された場合など、ブロック単位でデータを管理する際にブロックの総数が２５６ブロックを超えるような場合であっても、アドレス管理領域などのメモリ容量の大幅な増加を伴うことなく、書き込みや読み出しに関する処理を効率よく行うことが可能となる。すなわち、本実施形態によれば、大容量のデータ領域を有する不揮発性メモリに対しても、システム制御用のメモリ容量を大量に要することなく、ブロックデータの読み出し処理及び書き込み処理中に電源途絶が発生した場合におけるデータの保証を行うことが可能であり、さらに効率良くかつ高速に処理を実行することができる。
【００７９】
【発明の効果】
以上説明したように本発明によれば、ＩＣカードにおいて大容量のデータブロック領域を取り扱う場合においても、電源途絶時のデータ保証を確保しながら、効率良くかつ高速に処理を実行することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるＩＣカードシステムのブロック構成図。
【図２】本実施形態による論理的なメモリ空間におけるメモリ構成図。
【図３】本実施形態による分割された論理的なメモリ空間におけるメモリ構成図。
【図４】本実施形態による物理的なメモリ空間におけるメモリ構成図。
【図５】本実施形態による物理的なメモリ空間におけるアドレス管理領域の構成図。
【図６】本実施形態によるデータ処理の流れを示すフローチャート図。
【図７】本実施形態によるバッファ判定フラグ領域の更新処理の流れを示すフローチャート図。
【図８】本実施形態によるアドレス管理領域の更新処理の流れを示すフローチャート図。
【図９】本実施形態による書き込み処理後の物理的なメモリ空間におけるアドレス管理領域の構成図。
【符号の説明】
１０１　ＩＣカード
１０２　リーダライタ
１０３，１０４　アンテナ
１０５　復調部
１０６　制御部
１０７　ＲＯＭ
１０８　ＲＡＭ
１０９　不揮発性メモリ
１１０　変調部
１４０１　データブロック領域
１４０２　予備ブロック領域
１４０３　アドレス管理領域
１４０４　パラメータ領域
１４０５　バッファ判定フラグ領域
１５０１　データブロック領域Ａ
１５０２　データブロック領域Ｂ
１５０３　予備ブロック領域Ａ
１５０４　予備ブロック領域Ｂ
１５０５　アドレス管理領域Ａ
１５０６　アドレス管理領域Ｂ
１５０７　パラメータ領域
１５０８　バッファ判定フラグ領域
１６０１　アドレス管理領域Ａ
１６０２　アドレス管理領域Ｂ
１６０３　データ領域Ａ
１６０４　データ領域Ｂ
１６０５　パラメータ領域
１６０６　バッファ判定フラグ領域
１６０７　誤り検査情報
１６１１　データブロック用アドレス管理領域Ａ
１６１２　予備ブロック用アドレス管理領域Ａ
１６１３　ブロック番号保持領域Ａ
１６１４　データブロック用アドレス管理領域Ｂ
１６１５　予備ブロック用アドレス管理領域Ｂ
１６１６　ブロック番号保持領域Ｂ
１６２１　論理ブロック番号保持領域Ａ
１６２２　論理ブロック番号保持領域Ｂ
１６２３　物理ブロック番号保持領域Ａ
１６２４　物理ブロック番号保持領域Ｂ
１６２５　予備ブロック番号保持領域Ａ
１６２６　予備ブロック番号保持領域Ｂ
【図１】
2004062504.tif 000003
【図２】
2004062504.tif 000004
【図３】
2004062504.tif 000005
【図４】
2004062504.tif 000006
【図５】
2004062504.tif 000007
【図６】
2004062504.tif 000008
【図７】
2004062504.tif 000009
【図８】
2004062504.tif 000010
【図９】
2004062504.tif 000011