(57)【特許請求の範囲】
【請求項１】
所定のブロック単位で情報を記憶する記憶手段を用いた情報処理方法であって、
前記記憶手段は、
複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、
前記複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域と
を有し、
前記最新情報に基づいて選択された前記第１および第２の領域のうちの一方の領域の、前記第２のブロック番号群が示すブロック番号のブロックに、前記更新後のデータを記憶させ、
前記第１および第２の領域のうちの他方の領域の前記第１ブロック番号群に、前記更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の前記第２のブロック番号群に、前記更新前のデータが記憶されているブロックのブロック番号を記憶させる
ことを特徴とする情報処理方法。
【請求項２】
前記第１および第２の領域は、それぞれ、その領域が記憶している記憶内容の有効性に関する有効性情報を記憶し、
前記最新情報および前記有効性情報に基づいて、前記第１および第２の領域のうちの一方の領域を選択する
ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記他方の領域の前記最新情報を更新する
ことを特徴とする請求項１または２に記載の情報処理方法。
【請求項４】
前記最新情報と前記有効性情報に基づいて、前記第１および第２の領域のいずれかを選択し、選択した領域が記憶している前記第１のブロック番号群が示すブロックに記憶されている更新前のデータを読み出す
ことを特徴とする請求項２に記載の情報処理方法。
【請求項５】
所定のブロック単位で情報を記憶する記憶手段を用いて情報処理を行う情報処理装置であって、
前記記憶手段は、
複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、
前記複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域と
を有し、
前記最新情報に基づいて選択された前記第１および第２の領域のうちの一方の領域の、前記第２のブロック番号群が示すブロック番号のブロックに、前記更新後のデータを記憶させるデータ記憶制御手段と、
前記第１および第２の領域のうちの他方の領域の前記第１ブロック番号群に、前記更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の前記第２のブロック番号群に、前記更新前のデータが記憶されているブロックのブロック番号を記憶させるブロック番号記憶制御手段と
を備えることを特徴とする情報処理装置。
【請求項６】
前記第１および第２の領域は、それぞれ、その領域が記憶している記憶内容の有効性に関する有効性情報を記憶している
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
所定のブロック単位で情報を記憶する記憶手段を用いた情報処理方法であって、
前記記憶手段は、
複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、
複数のブロックから構成され、ブロック単位で、前記データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、
前記ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する前記第１および第２の領域と
を有し、
前記第１および第２の領域は、更新前のデータが記憶されている前記データブロックのデータブロック番号を記憶する、前記ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶する前記データブロックのデータブロック番号を記憶する、前記ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、
前記最新情報に基づいて選択された前記第１および第２の領域のうちの一方の領域の、前記第２のブロック番号群が示すポインタブロック番号の前記ポインタブロックに記憶されているデータブロック番号の前記データブロックに、前記更新後のデータを記憶させ、
前記更新後のデータを記憶させたデータブロックのデータブロック番号を、前記ポインタブロックに記憶させ、
そのポインタブロックのポインタブロック番号を、前記第１および第２の領域のうちの他方の領域に記憶させる
ことを特徴とする情報処理方法。
【請求項８】
前記第１および第２の領域は、それぞれ、その領域が記憶している記憶内容の有効性に関する有効性情報を記憶し、
前記最新情報と前記有効性情報に基づいて、前記第１および第２の領域のうちの一方の領域を選択する
ことを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記他方の領域の前記最新情報を更新する
ことを特徴とする請求項７または８に記載の情報処理方法。
【請求項１０】
前記最新情報と前記有効性情報に基づいて、前記第１および第２の領域のいずれかを選択し、選択した領域が記憶している前記第１のブロック番号群が示すポインタブロック番号のポインタブロックが記憶する、データブロック番号のデータブロックに記憶されている更新前のデータを読み出す
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１１】
所定のブロック単位で情報を記憶する記憶手段を用いて情報処理を行う情報処理装置であって、
前記記憶手段は、
複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、
複数のブロックから構成され、ブロック単位で、前記データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、
前記ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する前記第１および第２の領域と
を有し、
前記第１および第２の領域は、更新前のデータが記憶されている前記データブロックのデータブロック番号を記憶する、前記ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶する前記データブロックのデータブロック番号を記憶する、前記ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、
前記最新情報に基づいて選択された前記第１および第２の領域のうちの一方の領域の、前記第２のブロック番号群が示すポインタブロック番号の前記ポインタブロックに記憶されているデータブロック番号の前記データブロックに、前記更新後のデータを記憶させるデータ記憶手段と、
前記更新後のデータを記憶させたデータブロックのデータブロック番号を、前記ポインタブロックに記憶させ、そのポインタブロックのポインタブロック番号を、前記第１および第２の領域のうちの他方の領域に記憶させるブロック番号記憶手段と
を備えることを特徴とする情報処理装置。
【請求項１２】
前記第１および第２の領域は、それぞれ、その領域が記憶している記憶内容の有効性に関する有効性情報を記憶している
ことを特徴とする請求項１１に記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理方法および情報処理装置に関し、特に、例えば、データの送受信を非接触で行うＩＣ（Interrated Curcuit）カードなどに用いて好適な情報処理方法および情報処理装置に関する。
【０００２】
【従来の技術】
電子マネーシステムやセキュリティシステムでの利用が期待されているＩＣカード（スマートカード）が開発されている。
【０００３】
ＩＣカードは、各種処理を行うＣＰＵや、処理に必要なデータなどを記憶するメモリを内蔵し、所定のリーダ／ライタ（Ｒ／Ｗ）に接触させた状態で、データの送受信が行われる。
【０００４】
ところで、ＩＣカードの中には、自らはバッテリを有していないバッテリレス型のＩＣカードがあり、このようなバッテリレス型のＩＣカードは、Ｒ／Ｗから電力が供給される。
【０００５】
さらに、ＩＣカードには、電磁波を利用して、非接触でＲ／Ｗとの間でデータの送受信を行うとともに、その電磁波により必要な電力を取得するようなものもある。
【０００６】
【発明が解決しようとする課題】
しかしながら、非接触でＩＣカードとＲ／Ｗと間でデータの送受信を行う場合においては、ＩＣカードが内蔵するメモリにアクセスしている途中で、電磁波の受信状態が不良になった場合に十分な電力が得られなくなり、メモリにおけるデータの整合性に欠陥が生じる（メモリコラプション（Memory Corruption）が生じる）課題があった。
【０００７】
また、ＩＣカードとＲ／Ｗとを接触させてデータの送受信を行う場合においても、ユーザが、ＩＣカードを、Ｒ／Ｗに対して自由に抜き差しすることができるときには、メモリにアクセスしている途中で、ＩＣカードがＲ／Ｗから抜かれると、やはり、メモリコラプションが生じることがあった。
【０００８】
ここで、ＩＣカードにおいて、例えば、ＭＳ−ＤＯＳ（Microsoft-Disc Operating System）（登録商標）のＦＡＴ（File Allocation Table）のように、データが記憶される単位（ＭＳ−ＤＯＳの場合はセクタ）毎に、情報が保持される場合には、ＦＡＴにメモリコラプションが生じると、データ（ファイル）の位置情報がすべて失われ、データにアクセスすることができなくなる。
【０００９】
従って、メモリコラプションが生じると、最悪の場合で、ＩＣカードが使用不能となるため、メモリコラプションについては、何らかの対処が必要となる。
【００１０】
さらに、ＩＣカードでは、一般に、所定のブロック単位でデータの読み書きが行われるため、関連する複数のデータが、複数のブロックにそれぞれ書き込まれることがある。即ち、例えば、ＩＣカードを、電車賃の支払いのための電子マネーなどとして利用する場合に、ログ（利用した履歴）を記憶しておきたいことがある。そして、いま、ログとして、例えば、乗車した駅と時刻、降車した駅と時刻、乗降車した駅間の運賃などの関連する情報が記憶されるとすると、これらの関連する情報が、複数のブロックに分けて書き込まれることがある。従って、このような場合には、１ブロックについてのメモリコラプションに対処するだけでなく、関連するデータが書き込まれる複数のブロックのいずれかでメモリコラプションが生じたときにも対処する必要がある。
【００１１】
本発明は、このような状況に鑑みてなされたものであり、メモリコラプションに対して、効果的に対処することができるようにするものである。
【００１２】
【課題を解決するための手段】
本発明の第１の情報処理方法は、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域とを有し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すブロック番号のブロックに、更新後のデータを記憶させ、第１および第２の領域のうちの他方の領域の第１ブロック番号群に、更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の第２のブロック番号群に、更新前のデータが記憶されているブロックのブロック番号を記憶させることを特徴とする。
【００１３】
本発明の第１の情報処理装置は、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域とを有し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すブロック番号のブロックに、更新後のデータを記憶させるデータ記憶制御手段と、第１および第２の領域のうちの他方の領域の第１ブロック番号群に、更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の第２のブロック番号群に、更新前のデータが記憶されているブロックのブロック番号を記憶させるブロック番号記憶制御手段とを備えることを特徴とする。
【００１４】
本発明の第２の情報処理方法は、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックから構成され、ブロック単位で、データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する第１および第２の領域とを有し、第１および第２の領域は、更新前のデータが記憶されているデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶するデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すポインタブロック番号のポインタブロックに記憶されているデータブロック番号のデータブロックに、更新後のデータを記憶させ、更新後のデータを記憶させたデータブロックのデータブロック番号を、ポインタブロックに記憶させ、そのポインタブロックのポインタブロック番号を、第１および第２の領域のうちの他方の領域に記憶させることを特徴とする。
【００１５】
本発明の第２の情報処理装置は、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックから構成され、ブロック単位で、データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する第１および第２の領域とを有し、第１および第２の領域は、更新前のデータが記憶されているデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶するデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すポインタブロック番号のポインタブロックに記憶されているデータブロック番号のデータブロックに、更新後のデータを記憶させるデータ記憶手段と、更新後のデータを記憶させたデータブロックのデータブロック番号を、ポインタブロックに記憶させ、そのポインタブロックのポインタブロック番号を、第１および第２の領域のうちの他方の領域に記憶させるブロック番号記憶手段とを備えることを特徴とする。
【００１６】
本発明の第１の情報処理方法においては、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域とを有し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すブロック番号のブロックに、更新後のデータを記憶させ、第１および第２の領域のうちの他方の領域の第１ブロック番号群に、更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の第２のブロック番号群に、更新前のデータが記憶されているブロックのブロック番号を記憶させる。
【００１７】
本発明の第１の情報処理装置においては、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックの各ブロックに割当てられたブロック番号であって、更新前のデータが記憶されているブロックのブロック番号を示す第１のブロック番号群、更新後のデータを記憶するブロックのブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶する第１の領域並びに第２の領域とを有し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すブロック番号のブロックに、更新後のデータを記憶させ、第１および第２の領域のうちの他方の領域の第１ブロック番号群に、更新後のデータを記憶させたブロックのブロック番号を記憶させ、その他方の領域の第２のブロック番号群に、更新前のデータが記憶されているブロックのブロック番号を記憶させる。
【００１８】
本発明の第２の情報処理方法においては、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックから構成され、ブロック単位で、データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する第１および第２の領域とを有し、第１および第２の領域は、更新前のデータが記憶されているデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶するデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すポインタブロック番号のポインタブロックに記憶されているデータブロック番号のデータブロックに、更新後のデータを記憶させ、更新後のデータを記憶させたデータブロックのデータブロック番号を、ポインタブロックに記憶させ、そのポインタブロックのポインタブロック番号を、第１および第２の領域のうちの他方の領域に記憶させる。
【００１９】
本発明の第２の情報処理装置においては、記憶手段は、複数のブロックから構成され、ブロック単位でデータを記憶するデータ領域と、複数のブロックから構成され、ブロック単位で、データ領域の各ブロックであるデータブロックに割当てられたデータブロック番号を記憶するポインタ領域と、ポインタ領域の各ブロックであるポインタブロックに割当てられたポインタブロック番号を記憶する第１および第２の領域とを有し、第１および第２の領域は、更新前のデータが記憶されているデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第１のブロック番号群、更新後のデータを記憶するデータブロックのデータブロック番号を記憶する、ポインタブロックのポインタブロック番号を示す第２のブロック番号群、および記憶内容の新しさに関する情報である最新情報を、それぞれ記憶し、最新情報に基づいて選択された第１および第２の領域のうちの一方の領域の、第２のブロック番号群が示すポインタブロック番号のポインタブロックに記憶されているデータブロック番号のデータブロックに、更新後のデータを記憶させ、更新後のデータを記憶させたデータブロックのデータブロック番号を、ポインタブロックに記憶させ、そのポインタブロックのポインタブロック番号を、第１および第２の領域のうちの他方の領域に記憶させる。
【００２０】
【発明の実施の形態】
図１は、本発明を適用した非接触カードシステムの一実施の形態の構成例を示している。
【００２１】
この非接触カードシステムは、Ｒ／Ｗ１，ＩＣカード２、およびコントローラ３で構成され、Ｒ／Ｗ１とＩＣカード２との間では、電磁波を利用して非接触で、データの送受信が行われるようになされている。
【００２２】
即ち、Ｒ／Ｗ１が、所定のコマンドをＩＣカード２に送信し、ＩＣカード２は、そのコマンドを受信し、そのコマンドに対応する処理を行う。そして、ＩＣカード２は、その処理結果に対応する応答データをＲ／Ｗ１に送信する。
【００２３】
Ｒ／Ｗ１は、所定のインタフェース（例えば、ＲＳ−４８５Ａの規格などに準拠したもの）を介してコントローラ３に接続されており、コントローラ３は、Ｒ／Ｗ１に対して所定の制御信号を供給することで、所定の処理を行わせる。
【００２４】
図２は、図１のＲ／Ｗ１の構成例を示している。
【００２５】
ＩＣ２１においては、データの処理を行うＤＰＵ（Data Processing Unit）３１、ＩＣカード２に送信するデータおよびＩＣカード２から受信したデータの処理を行うＳＰＵ（Signal Processing Unit）３２、コントローラ３との通信を行うＳＣＣ（Serial Communication Controller）３３、および、データの処理に必要な情報を予め記憶しているＲＯＭ部４１と、処理途中のデータを一時的に記憶するＲＡＭ部４２で構成されるメモリ部３４が、バスを介して接続されている。
【００２６】
また、このバスには、所定のデータを記憶するフラッシュメモリ２２も接続されている。
【００２７】
ＤＰＵ３１は、ＩＣカード２に送信するコマンドをＳＰＵ３２に出力するとともに、ＩＣカード２から受信した応答データをＳＰＵ３２から受け取るようになされている。
【００２８】
ＳＰＵ３２は、ＩＣカード２に送信するコマンドに対して所定の処理（例えば、ＢＰＳＫ（BiPhase Shift Keying）変調（マンチェスタコードへのコーディング）など）を行った後、変調回路２３に出力するとともに、ＩＣカード２により送信されてきた応答データを復調回路２５から受け取り、そのデータに対して所定の処理を行うようになされている。
【００２９】
変調回路２３は、発振器２６より供給された所定の周波数（例えば１３．５６ＭＨｚ）の搬送波を、ＳＰＵ３２より供給されたデータで、ＡＳＫ（Amplitude Shift Keying）変調し、生成された変調波をアンテナ２７を介して、電磁波としてＩＣカード２に出力するようになされている。このとき、変調回路２３は、変調度を１未満にして、ＡＳＫ変調を行う。即ち、データがローレベルのときにおいても、変調波の最大振幅がゼロにならないようにする。
【００３０】
復調回路２５は、アンテナ２７を介して受信した変調波（ＡＳＫ変調波）を復調し、復調されたデータをＳＰＵ３２に出力するようになされている。
【００３１】
図３は、図１のＩＣカード２の構成例を示している。このＩＣカード２においては、ＩＣ５１は、アンテナ５３を介して、Ｒ／Ｗ１により送信された変調波を受信するようになされている。なお、コンデンサ５２は、アンテナ５３とともにＬＣ回路を構成し、所定の周波数（キャリア周波数）の電磁波に同調（共振）するようになされている。
【００３２】
ＩＣ５１においては、ＲＦインタフェース部６１は、ＡＳＫ復調部８１で、アンテナ５３を介して受信した変調波（ＡＳＫ変調波）を検波して復調し、復調後のデータをＢＰＳＫ復調回路６２およびＰＬＬ（Phase Locked Loop）部６３に出力するとともに、電圧レギュレータ８２で、ＡＳＫ復調部８１が検波した信号を安定化し、各回路に直流電力として供給するようになされている。
【００３３】
また、ＲＦインタフェース部６１は、発振回路８３でデータのクロック周波数と同一の周波数の信号を発振し、その信号をＰＬＬ部６３に出力するようになされている。
【００３４】
そして、ＲＦインタフェース部６１のＡＳＫ変調部８１は、演算部６４より供給されたデータに対応して、ＩＣカード２の電源としてのアンテナ５３の負荷を変動させる（例えば、データに対応して所定のスイッチング素子をオン／オフさせ、スイッチング素子がオン状態であるときだけ所定の負荷をアンテナ５３に並列に接続させる）ことにより、アンテナ５３を介して受信している変調波をＡＳＫ変調し（ＩＣカード２からデータを送信するときは（ＩＣカード２にデータを送信させるときは）、Ｒ／Ｗ１は、その出力する変調波の最大振幅を一定にしており、この変調波が、アンテナ５３の負荷の変動により、ＡＳＫ変調される）、その変調成分を、アンテナ５３を介してＲ／Ｗ１に送信する（Ｒ／Ｗ１のアンテナ２７の端子電圧を変動させる）ようになされている。
【００３５】
ＰＬＬ部６３は、ＡＳＫ復調部８１より供給されたデータより、そのデータに同期したクロック信号を生成し、そのクロック信号をＢＰＳＫ復調回路６２およびＢＰＳＫ変調回路６８に出力するようになされている。
【００３６】
ＢＰＳＫ復調回路６２は、ＡＳＫ復調部８１で復調されたデータが、ＢＰＳＫ変調されている場合、ＰＬＬ部６３より供給されたクロック信号に従って、そのデータの復調（マンチェスタコードのデコード）を行い、復調したデータを演算部６４に出力するようになされている。
【００３７】
演算部６４は、ＢＰＳＫ復調回路６２より供給されたデータが暗号化されている場合、そのデータを暗号／復号部９２で復号化した後、そのデータを、シーケンサ９１（データ書き込み手段）（ブロック番号書き込み手段）（第１および第２のブロック番号書き込み手段）で処理するようになされている。なお、データが暗号化されていない場合、ＢＰＳＫ復調回路６２より供給されたデータは、暗号／復号部９２を介さず、シーケンサ９１に、直接供給される。
【００３８】
シーケンサ９１は、そこに供給されるコマンドとしてのデータに対応する処理を行うようになされている。即ち、例えば、シーケンサ９１は、ＥＥＰＲＯＭ６６（記憶手段）に対するデータの書き込みや読み出しなどを行う。
【００３９】
演算部６４のパリティ演算部９３は、ＥＥＰＲＯＭ６６に記憶されるデータや、ＥＥＰＲＯＭ６６に記憶されているデータから、パリティとして、リードソロモン符号を算出するようになされている。
【００４０】
さらに、演算部６４は、シーケンサ９１で所定の処理を行った後、その処理に対応する応答データ（Ｒ／Ｗ１に送信するデータ）をＢＰＳＫ変調回路６８に出力するようになされている。
【００４１】
ＢＰＳＫ変調回路６８は、演算部６４より供給されたデータをＢＰＳＫ変調し、変調後のデータをＲＦインタフェース部６１のＡＳＫ変調部８４に出力するようになされている。
【００４２】
ＲＯＭ６５は、シーケンサ９１が行うべき処理プログラムその他の必要なデータを記憶している。ＲＡＭ６７は、シーケンサ９１が処理を行うとき、処理の途中のデータなどを、一時的に記憶するようになされている。
【００４３】
ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）６６は、不揮発性のメモリであり、ＩＣカード２がＲ／Ｗ１との通信を終了し、電力供給が停止した後も、データを記憶し続けるようになされている。
【００４４】
次に、Ｒ／Ｗ１とＩＣカード２との間のデータの送受信処理について説明する。
【００４５】
Ｒ／Ｗ１（図２）は、アンテナ２７から所定の電磁波を放射して、アンテナ２７の負荷状態を監視し、ＩＣカード２が接近することによる負荷状態の変化が検出されるまで待機する。なお、ここでは、Ｒ／Ｗ１は、所定の短いパターンのデータでＡＳＫ変調した電磁波を放射して、ＩＣカード２への呼びかけを、ＩＣカード２からの応答が一定時間において得られるまで繰り返す処理（ポーリング）を行うようにしてもよい。
【００４６】
Ｒ／Ｗ１において、ＩＣカード２の接近が検出されると、Ｒ／Ｗ１のＳＰＵ３２は、所定の周波数（例えば、データのクロック周波数の２倍の周波数）の矩形波を搬送波として、ＩＣカード２に送信するデータ（ＩＣカード２に実行させる処理に対応するコマンドや、ＩＣカード２に書き込むデータなど）で、ＢＰＳＫ変調を行い、生成した変調波（ＢＰＳＫ変調信号）（マンチェスタコード）を変調回路２３に出力する。
【００４７】
なお、ＢＰＳＫ変調時においては、差動変換を利用して、変調波の位相の変化に、データを対応させることができ、このようにした場合、ＢＰＳＫ変調信号が反転しても、元のデータに復調されるので、復調するとき変調波の極性を配慮する必要が無くなる。
【００４８】
変調回路２３は、入力されたＢＰＳＫ変調信号で、所定の搬送波を１未満（例えば０．１）の変調度（＝データ信号の最大振幅／搬送波の最大振幅）でＡＳＫ変調し、生成された変調波（ＡＳＫ変調波）を、アンテナ２７を介してＩＣカード２に送信する。
【００４９】
なお、送信を行わないとき、変調回路２３は、ディジタル信号の２つのレベル（ハイレベルとローレベル）のうちの、例えばハイレベルで変調波を生成するようになされている。
【００５０】
ＩＣカード２（図３）では、アンテナ５３およびコンデンサ５２で構成されるＬＣ回路において、Ｒ／Ｗ１のアンテナ２７が放射した電磁波の一部が電気信号に変換され、その電気信号（変調波）が、ＩＣ５１のＲＦインタフェース６１に出力される。そして、ＲＦインタフェース６１のＡＳＫ復調部８１は、その変調波を整流平滑化することで、包絡線検波を行い、これにより生成される信号を電圧レギュレータ８２に供給するとともに、その信号の直流成分を抑制してデータ信号を抽出し、そのデータ信号をＢＰＳＫ復調回路６２およびＰＬＬ部６３に出力する。
【００５１】
電圧レギュレータ８２は、ＡＳＫ復調部８１より供給された信号を安定化し、直流電力を生成し、各回路に供給する。
【００５２】
なお、このとき、アンテナ５３の端子電圧Ｖ0は、例えば次のようになる。
Ｖ0＝Ｖ10（１＋ｋ×Ｖｓ（ｔ））ｃｏｓ（ωｔ）
但し、Ｖ10ｃｏｓ（ωｔ）は、搬送波を、ｋは変調度を、Ｖｓ（ｔ）はＳＰＵ３２が出力するデータを、それぞれ表す。
【００５３】
また、ＡＳＫ復調部８１による整流後の電圧Ｖ1におけるローレベルの値ＶLRは、例えば次のようになる。
ＶLR＝Ｖ10（１＋ｋ×（−１））−Ｖｆ
【００５４】
ここで、Ｖｆは、ＡＳＫ復調部８１において、整流平滑化を行うための整流回路を構成するダイオードにおける電圧降下を示しており、一般に０．７ボルト程度である。
【００５５】
電圧レギュレータ８２は、ＡＳＫ復調部８１により整流平滑化された信号を受信すると、その信号を安定化し、直流電力として、演算部６４を始めとする各回路に供給する。なお、変調波の変調度ｋは１未満であるので、整流後の電圧変動（ハイレベルとローレベルの差）が小さい。従って、電圧レギュレータ８２において、直流電力を容易に生成することができる。
【００５６】
例えば、変調度ｋが５％の変調波を、Ｖ10が３ボルト以上になるように受信した場合、整流後のローレベル電圧ＶLRは、２．１５（＝３×（１−０．０５）−０．７）ボルト以上となり、電圧レギュレータ８２は、電源として充分な電圧を各回路に供給することができる。さらに、この場合、整流後の電圧Ｖ1の交流成分（データ成分）の振幅２×ｋ×Ｖ10（Peak-to-Peak値）は、０．３（＝２×０．０５×３）ボルト以上になり、ＡＳＫ復調部８１は、十分高いＳ／Ｎ比でデータの復調を行うことができる。
【００５７】
このように、変調度ｋが１未満のＡＳＫ変調波を利用することにより、エラーレートの低い（Ｓ／Ｎ比の高い状態で）通信を行うとともに、電源として充分な直流電圧がＩＣカード２に供給される。
【００５８】
ＢＰＳＫ復調回路６２は、ＡＳＫ復調部８１からデータ信号（ＢＰＳＫ変調信号）を受信すると、そのデータ信号を、ＰＬＬ部６３より供給されるクロック信号に従って復調し、復調したデータを演算部６４に出力する。
【００５９】
演算部６４は、ＢＰＳＫ復調回路６２より供給されたデータが暗号化されている場合は、暗号／復号部９２で復号化した後、そのデータ（コマンド）をシーケンサ９１に供給して処理する。なお、この期間、即ち、ＩＣカード２にデータを送信後、それに対する返答を受信するまでの間、Ｒ／Ｗ１は、値が１のデータを送信したまま待機している。従って、この期間においては、ＩＣカード２は、最大振幅が一定である変調波を受信している。
【００６０】
シーケンサ９１は、処理が終了すると、その処理結果などについてのデータ（Ｒ／Ｗ１に送信するデータ）を、ＢＰＳＫ変調回路６８に出力する。ＢＰＳＫ変調回路６８は、Ｒ／Ｗ１のＳＰＵ３２と同様に、そのデータをＢＰＳＫ変調（マンチェスタコードにコーディング）した後、ＲＦインタフェース部６１のＡＳＫ変調部８４に出力する。
【００６１】
そして、ＡＳＫ変調部８４は、アンテナ５３の両端に接続される負荷を、スイッチング素子を利用し、ＢＰＳＫ変調回路６８からのデータに応じて変動させることにより、受信している変調波（ＩＣカード２によるデータの送信時においては、上述したように、Ｒ／Ｗ１が出力する変調波の最大振幅は一定になっている）を、送信するデータに応じてＡＳＫ変調し、これによりＲ／Ｗ１のアンテナ２７の端子電圧を変動させて、そのデータをＲ／Ｗ１に送信する。
【００６２】
一方、Ｒ／Ｗ１の変調回路２３は、ＩＣカード２からのデータの受信時においては、値が１（ハイレベル）のデータの送信を継続している。そして、復調回路２５において、ＩＣカード２のアンテナ５３と電磁気的に結合しているアンテナ２７の端子電圧の微小な変動（例えば、数十マイクロボルト）から、ＩＣカード２により送信されてきたデータが検出される。
【００６３】
さらに、復調回路２５では、検出した信号（ＡＳＫ変調波）が高利得の増幅器で増幅されて復調され、その結果得られるディジタルデータがＳＰＵ３２に出力される。ＳＰＵ３２は、そのデータ（ＢＰＳＫ変調信号）を復調し、ＤＰＵ３１に出力する。ＤＰＵ３１は、ＳＰＵ３２からのデータを処理し、その処理結果に応じて、通信を終了するか否かを判断する。そして、再度、通信を行うと判断した場合、上述した場合と同様にして、Ｒ／Ｗ１とＩＣカード２との間で通信が行われる。一方、通信を終了すると判断した場合、Ｒ／Ｗ１は、ＩＣカード２との通信処理を終了する。
【００６４】
以上のように、Ｒ／Ｗ１は、変調度ｋが１未満であるＡＳＫ変調を利用して、ＩＣカード２にデータを送信し、ＩＣカード２は、そのデータを受け取り、そのデータに対応する処理を行って、その処理の結果に対応するデータを、Ｒ／Ｗ１に返送する。
【００６５】
次に、ＩＣカード２（図３）のシーケンサ９１による、ＥＥＰＲＯＭ６６に対するデータの読み書き処理について説明するが、その前に、その前段階の準備として、本発明によるメモリコラプションに対する対処方法について説明する。
【００６６】
まず、メモリコラプションに対する対処方法の基本原理について説明する。
【００６７】
例えば、いま、メモリに対して、情報の読み書きが所定のブロック単位で行われるとし、あるブロックＢ１に記憶されたデータを更新する（ブロックＢ１に記憶されているデータを、他のデータに書き換える）ことを考える。
【００６８】
この場合、ブロックＢ１自体に、新たなデータを書き込むと（既に記憶されているデータに上書きすると）、その書き込みの最中に、ＩＣカードへの電力の供給が不足したりしたときには、新たなデータは完全には書き込まれず、さらに、ブロックＢ１に記憶されていたデータは破壊されることになり、メモリコラプションが生じる。従って、ブロックＢ１に書き込むべき新たなデータを、そのブロックＢ１に実際に書き込む場合には、メモリコラプションが生じると、それに対処することはできなくなる。即ち、例えば、ブロックＢ１に記憶されていたデータが、電子マネーの残金などであって、新たに買い物をして、その代金を差し引いた額を、新たなデータとして書き込むようなことを、上述のような手法を用いて行った場合には、メモリコラプションが生じると、ＩＣカードは使用不可能になる。
【００６９】
そこで、ブロックＢ１に書き込むべき新たなデータを、そのブロックＢ１とは異なるブロックＢ２に書き込む。このようにすることで、ブロックＢ２への書き込みの最中にメモリコラプションが生じた場合には、新たなデータの書き込みは完全に行われず、その有効性は保証されないが、少なくとも、ブロックＢ１に記憶されていたデータが破壊されることは防止することができる。
【００７０】
なお、さらに新たなデータが供給されたときには、そのデータは、ブロックＢ２とは異なるブロックである、例えばブロックＢ１に書き込まれる。このように、新たなデータが供給された場合に、前回書き込まれたデータが記憶されているブロック以外のブロックに、その新たなデータを書き込むようにすることで、少なくとも、新たなデータの書き込みによる、前回書き込まれたデータの破壊が行われないようにし、これにより、ＩＣカードが最悪の場合でも、使用不可にならないようにする。
【００７１】
次に、図４を参照して、以上のような基本原理を適用したメモリの読み書き方法について説明する。
【００７２】
図４においては、１ブロックが、１バイト（８ビット）の最新情報、８バイトのデータ、および２バイトの有効性情報が、その先頭から順次配置された１１バイトで構成されている。但し、１ブロックのビット数、さらには、最新情報、データ、および有効性情報に割り当てるビット数は、上述したものに特に限定されるものではない。
【００７３】
最新情報は、そのブロックの記憶内容の新しさ（最新性）を示すもので、例えば、絶対的な日付および時刻や、シーケンシャルな番号その他を用いることができる。即ち、絶対的な日付および時刻を用いる場合には、データが記憶された日付および時刻を最新情報として記憶するようにすれば、その最新情報により、データの記憶がなされた最新のブロックを検出することができる。また、シーケンシャルな番号を用いる場合には、データの書き込みが行われるたびに、例えばインクリメントされる番号を最新情報として記憶するようにすれば、その値の最も大きいブロックが、データの書き込みがなされた最新のものということになる。
【００７４】
なお、ここでは、少なくとも２つのブロックのうちのいずれが新しいかが認識できれば充分であり、従って、最新情報は、少なくとも３つの状態を表すことができれば良い。即ち、例えば、いま、３つの状態を表すことのできる最新情報として、０，１，２の３値を用いることとすると、２つのブロックのうちのいずれかに書き込みが行われるごとに、０，１，２，０，・・・を、その書き込みが行われたブロックの最新情報とすれば良い。この場合、２つのブロックの最新情報が０と１ならば１のブロックの方が新しく、１と２ならば２のブロックの方が新しく、２と０ならば０のブロックの方が新しいということになる。このように、最新情報として、０，１，２の３値を用いる場合には、そのビット数は２ビットで済む。その他、例えば、最新情報としては、１ビットのフラグを３個用い、ブロックの書き込みが行われるごとに、ビットをたてるフラグを順次変化させるようにしても良い。
【００７５】
ここで、以下では、最新情報として、０，１，２の３値を用いることとする。
【００７６】
次に、有効性情報は、そのブロックの最新性情報およびデータの書き込みが正常に終了したかどうかの、いわば、最新性情報およびデータの有効性（有効か無効か）を示すもので、例えば、ＲＳ（リードソロモン）符号などを用いることができる。
【００７７】
なお、有効性情報は、ＲＳ符号などの誤り訂正符号に限定されるものではない。即ち、有効性情報は、上述のように最新性情報およびデータが有効か、または無効かを表すことができれば良く、従って、例えば、最新性情報およびデータを書き込みながら計算されるパリティであっても、また、例えば、最新性情報およびデータが正常に書き込まれた後に付加される１ビットのフラグなどであっても良い。
【００７８】
図４では、メモリが、第１および第２の領域としての２つのブロックを有しており、図４（Ａ）は、第１の領域としてのブロックにデータ０１Ｈ乃至０８Ｈ（Ｈは１６進数を表す）が、第２の領域としてのブロックに８つのデータＦＦＨが、それぞれ既に記憶されている様子を示している。
【００７９】
この場合において、例えば、１１Ｈ乃至１８Ｈが、新たに書き込むべきデータとして供給されたとすると、まず、第１および第２の領域としての２つのブロックの有効性が、有効性情報を参照することで判定される。なお、ここでは、いずれのブロックも有効であったとする。
【００８０】
２つのブロックの両方とも有効である場合には、そのうちのいずれが新しいかを、最新情報を参照して判定する。図４（Ａ）では、第１または第２の領域としてのブロックの最新情報が０１Ｈまたは００Ｈにそれぞれなっているので、第１の領域としてのブロックの方が新しい（第１の領域としてのブロックが最新）ということになる。
【００８１】
新たなデータの書き込みを行う場合、上述したように、前回書き込まれたデータの破壊を行わないようにするために、最新のブロックではないブロックに、新たなデータの書き込みを行う。従って、この場合、データ１１Ｈ乃至１８Ｈは、例えば図４（Ｂ）に示すように、第２の領域としてのブロックに書き込まれる。データ１１Ｈ乃至１８Ｈの書き込みの終了後は、まず、その書き込みが行われた方のブロックの最新情報を更新する。即ち、最新のブロックであった、第１の領域としてのブロックの最新情報が０１Ｈであったから、いま書き込みの行われた第２の領域としてのブロックの最新情報は、０１Ｈを１だけインクリメントした０２Ｈとされる。
【００８２】
そして、最後に、第２の領域としてのブロックに対して、データ１１Ｈ乃至１８Ｈおよび最新情報０２Ｈの有効性を表す有効性情報の書き込みが行われる。
【００８３】
次に、図４に示した構成のメモリに対するデータの読み書き処理について、図５および図６のフローチャートを参照してさらに説明する。
【００８４】
まず、図５のフローチャートを参照して、読み出し処理について説明する。
【００８５】
この場合、まず最初に、ステップＳ１において、第１および第２の領域の有効性情報を参照することで、その有効性が判定される。ステップＳ１において、第１の領域としてのブロックのみが有効であると判定された場合、即ち、第１の領域としてのブロックが有効で、第２の領域としてのブロックが無効である場合、ステップＳ２に進み、その有効なブロックである第１の領域からデータが読み出され、処理を終了する。また、ステップＳ１において、第２の領域としてのブロックのみが有効であると判定された場合、即ち、第１の領域としてのブロックが無効で、第２の領域としてのブロックが有効である場合、ステップＳ３に進み、その有効なブロックである第２の領域からデータが読み出され、処理を終了する。
【００８６】
一方、ステップＳ１において、第１および第２の領域としてのブロックのいずれも有効であると判定された場合、ステップＳ４に進み、第１および第２の領域としてのブロックの最新情報を参照することで、その最新性が判定される。ステップＳ４において、第１の領域の方が第２の領域より新しいと判定された場合、ステップＳ２に進み、その新しい方の第１の領域としてのブロックからデータが読み出され、処理を終了する。また、ステップＳ４において、第２の領域の方が第１の領域より新しいと判定された場合、ステップＳ３に進み、その新しい方の第２の領域としてのブロックからデータが読み出され、処理を終了する。
【００８７】
次に、図６のフローチャートを参照して、書き込み処理について説明する。
【００８８】
この場合、ステップＳ１１において、図５のステップＳ１における場合と同様に、有効性が判定される。ステップＳ１１において、第１の領域としてのブロックのみが有効であると判定された場合、ステップＳ１２に進み、有効でないブロックである第２の領域に、データと、その最新情報および有効性情報を更新したものが書き込まれ、処理を終了する。また、ステップＳ１１において、第２の領域としてのブロックのみが有効であると判定された場合、ステップＳ１４に進み、有効でないブロックである第１の領域に、データと、その最新情報および有効性情報を更新したものが書き込まれ、処理を終了する。
【００８９】
一方、ステップＳ１１において、第１および第２の領域としてのブロックのいずれも有効であると判定された場合、ステップＳ１６に進み、図５のステップＳ４における場合と同様に、第１および第２の領域としてのブロックの最新性が判定される。ステップＳ１６において、第１の領域の方が第２の領域より新しいと判定された場合、ステップＳ１２に進み、その新しい方の第１の領域としてのブロックを保持するために、古い方の第２の領域としてのブロックに、上述したように、データと、最新情報および有効性情報が書き込まれる。また、ステップＳ１６において、第２の領域の方が第１の領域より新しいと判定された場合、ステップＳ１４に進み、その新しい方の第２の領域としてのブロックを保持するために、古い方の第１の領域としてのブロックに、上述したようにデータと、最新情報および有効性情報が書き込まれる。
【００９０】
なお、第１および第２の領域としての２つのブロックは、外部からは、同一の論理的なブロックである論理ブロックとして認識されるようになされている。即ち、第１および第２の領域としてのブロックは、物理的に存在するブロックである物理ブロックであり、各物理ブロックには、その識別のために、ユニークな番号である物理ブロック番号が割り当てられている。そして、第１および第２の領域としての物理ブロックの物理ブロック番号には、いずれにも、論理ブロックを識別するための論理ブロック番号として、同一の番号が対応付けられており、これにより、第１および第２の領域としての物理ブロックは、外部からは１つの論理ブロックとして認識されるようになされている。
【００９１】
つまり、図４において、第１および第２の領域としての物理ブロックの物理ブロック番号は異なるが、いずれにも、同一の論理ブロック番号が割り当てられており、外部からは、そのような論理ブロック番号を有する論理ブロックにアクセスの要求がなされる。そして、メモリ側では、論理ブロックへのアクセスの要求があると、それに対応する物理ブロック番号のブロック、即ち、第１および第２の領域について、図５または図６で説明した読み出しまたは書き込み処理がそれぞれ行われる。
【００９２】
なお、以下では、物理ブロック番号および論理ブロック番号のいずれも１バイトで表されるとする。
【００９３】
次に、上述の場合においては、１の物理ブロックのデータの書き込みの終了後に、その物理ブロックの最新情報と有効性情報が更新されるため、関連する複数のデータを、複数の物理ブロックに書き込む場合においては、新旧混在したデータが生じることがある。即ち、外部から見た場合において、複数の論理ブロックに、複数のデータを書き込んでいる最中にメモリコラプションが生じると、メモリコラプションが生じる前に書き込みのなされた論理ブロックには、新しいデータが存在することになるが、メモリコラプションの生じた論理ブロックから、メモリコラプションが生じなければ新たなデータの書き込みが行われたはずの論理ブロックまでには、古いデータが存在することになる。
【００９４】
関連する複数のデータが一括で意味のあるものであり、従って、それ全体で有用なものである場合においては、上述のように、その中に、新しいものと古いものとが混在すると、その整合性がとれなくなる。即ち、関連する複数のデータが、例えば、前述したように、乗車した駅と時刻、降車した駅と時刻、乗降車した駅間の運賃などである場合において、乗車した駅については新しいデータが書き込まれ、乗車した時刻については古いデータのままでは、その整合性がとれず、意味のないものとなる。
【００９５】
従って、複数の論理ブロックに、関連する複数のデータが書き込まれる場合において、その複数のデータの書き込みが終了するまでにメモリコラプションが生じたときには、外部から見て、論理ブロックに、その関連する複数のデータすべての古いものが存在するようにする必要がある。
【００９６】
そこで、メモリを、例えば、図７に示すように構成する。
【００９７】
即ち、メモリを、データを記憶するデータ領域としての物理ブロックと、データ領域を構成する物理ブロックの物理ブロック番号を記憶する第１および第２の領域としての物理ブロックとで構成する。
【００９８】
なお、図７においても、図４における場合と同様に、１つの物理ブロックは、１１バイトで構成されている。
【００９９】
データ領域を構成する各物理ブロックは、１１バイト単位でデータを記憶するようになされており、図７においては、データ領域は、物理ブロック番号として＃００Ｈ乃至＃０７それぞれが割り当てられた８の物理ブロックで構成されている（＃は、物理ブロック番号であることを表す）。
【０１００】
また、ここでは、外部からは、４つの論理ブロックが見えるようになされており、その４つの論理ブロックそれぞれには、論理ブロック番号として％００Ｈ乃至％０３Ｈが割り当てられている。なお、図７に示した状態では、論理ブロック番号％００Ｈ乃至％０３Ｈと、物理ブロック番号＃００Ｈ乃至＃０３Ｈとがそれぞれ対応付けられている。
【０１０１】
第１および第２の領域としての物理ブロックは、その先頭の１バイトが最新情報に、終わりの２バイトが有効性情報に、それぞれ割り当てられている点で、図４における場合と共通している。但し、最新情報と有効性情報との間の８バイトには、データ領域の物理ブロックの物理ブロック番号、即ち、データ領域を構成する物理ブロックへのポインタが配置される。
【０１０２】
第１および第２の領域における最新情報と有効性情報との間の８バイトのうち、前半の４バイトには、データ領域の対象ブロックの物理ブロック番号が配置され、その後半の４バイトには、データ領域の更新ブロックの物理ブロック番号が配置される。
【０１０３】
ここで、対象ブロックとは、情報を書き込む場合に、本来、その書き込みの対象となるべき物理ブロックを意味する。即ち、例えば、基本原理では、上述したように、ブロックＢ１に記憶されたデータを、新しいデータに書き換える場合に、その新しいデータを、ブロックＢ２に書き込むが、この場合において、本来、新しいデータを書き込むべきブロックＢ１が、対象ブロックに相当する。
【０１０４】
また、更新ブロックとは、ある物理ブロックに情報を書き込んでその記憶内容を更新するときに用いられる更新用の物理ブロックを意味する。即ち、例えば、基本原理において、ブロックＢ１に記憶されたデータを、新しいデータに書き換える場合に、その新しいデータを実際に書き込むブロックＢ２が、更新ブロックに相当する。
【０１０５】
第１および第２の領域における最新情報と有効性情報との間の８バイトのうちの前半の４バイトに配置される４つの物理ブロック番号は、論理ブロック番号と対応付けられるようになされている。即ち、例えば、その１乃至４バイト目に配置される物理ブロック番号は、それぞれ論理ブロック番号％００Ｈ乃至％０３Ｈに対応付けられるようになされている。
【０１０６】
なお、図７では、第１または第２の領域の物理ブロック番号は、それぞれ＃ＦＥまたは＃ＦＦとなっている。
【０１０７】
以上のように構成されるメモリにおいて、図７では、４つの関連するデータが、物理ブロック＃００Ｈ（物理ブロック番号が＃００Ｈの物理ブロック）乃至＃０３に記憶されており、その物理ブロック番号＃００Ｈ乃至０３Ｈが、第１の領域における最新情報と有効性情報との間の８バイトのうちの前半の４バイト（以下、適宜、データ領域の対象ブロックへのポインタの欄という）に、その順番で配置されている。
【０１０８】
従って、例えば、第１の領域に注目した場合には、物理ブロック番号＃００Ｈ乃至０３Ｈそれぞれは、論理ブロック番号％００Ｈ乃至％０３Ｈと対応付けられている。
【０１０９】
ここで、第１の領域に注目した場合においては、論理ブロック％００Ｈ（論理ブロック番号が％００Ｈの論理ブロック）乃至％０３Ｈに対応付けられた物理ブロック＃００Ｈ乃至＃０３Ｈのうちのいずれかが、アクセスの対象となるべきブロック、即ち、対象ブロックとなる。
【０１１０】
更新ブロックは、その時点で対象ブロックとはならない、いわば空き領域となっている物理ブロックがなり得る。従って、図７において、第１の領域に注目した場合には、物理ブロック＃０４Ｈ乃至＃０７Ｈが更新ブロックとなり得るので、その第１の領域における最新情報と有効性情報との間の８バイトのうちの後半の４バイト（以下、適宜、データ領域の更新ブロックへのポインタの欄という）には、それらの更新ブロックの物理ブロック番号＃０４Ｈ乃至＃０７Ｈが配置されている。
【０１１１】
いま、例えば、第１または第２の領域のうちの一方の領域としての、例えば、第１の領域のみが有効であるとされているとして、外部から、論理ブロック番号％００Ｈと％０２Ｈに対応する論理ブロックそれぞれに、関連する２つのデータの書き込みの要求があったとする。
【０１１２】
この場合、有効である第１の領域のうちの、データ領域の対象ブロックへのポインタの欄を参照することで、論理ブロック番号％００Ｈと％０２Ｈに対応する物理ブロック番号＃００Ｈと＃０２Ｈとが認識され、それらの物理ブロック＃００Ｈおよび＃０２Ｈが、関連する２つのデータそれぞれを書き込むべき対象ブロックとして認識される。
【０１１３】
さらに、第１の領域のうちの、データ領域の更新ブロックへのポインタの欄を参照することで、対象ブロックと同一の数の更新ブロックの物理ブロック番号＃０４Ｈおよび＃０５Ｈが認識される。なお、更新ブロックの物理ブロック番号は、例えば、データ領域の更新ブロックへのポインタの欄の左から配置されているものから順番に認識される。
【０１１４】
そして、本来ならば、対象ブロックである物理ブロック＃００Ｈまたは＃０２Ｈに書き込むべき２つのデータが、図８に示すように、更新ブロックである物理ブロック＃０４Ｈまたは＃０５Ｈそれぞれに書き込まれる。
【０１１５】
ここで、図８は、論理ブロック番号％００Ｈと％０２Ｈに対応する物理ブロック番号＃００Ｈと＃０２Ｈに書き込むべき２つのデータが、それぞれ４０Ｈ乃至４ＡＨと５０Ｈ乃至５ＡＨであったとして、これらが、更新ブロックである物理ブロック＃０４Ｈと＃０５Ｈそれぞれに書き込まれた状態を示している。
【０１１６】
その後、新たなデータを書き込んだ、更新ブロックであった物理ブロックのブロック番号＃０４Ｈと＃０５Ｈとが、有効でなかった第２の領域におけるデータ領域の対象ブロックへのポインタの欄に書き込まれる。即ち、第１の領域におけるデータ領域の対象ブロックへのポインタの欄が、第２の領域にコピーされ、そのうちの、対象ブロックの物理ブロック番号＃００Ｈまたは＃０２Ｈが、図８に示すように、実際にデータが書き込まれた更新ブロックの物理ブロック番号＃０４Ｈまたは＃０５Ｈにそれぞれ書き換えられる。その結果、第２の領域に注目した場合には、物理ブロック番号＃０４Ｈまたは＃０５Ｈは、物理ブロック番号＃００Ｈまたは＃０２Ｈが対応付けられていた論理ブロック番号％００Ｈまたは％０２Ｈにそれぞれ対応付けられる。
【０１１７】
また、データを書き込むべきであった物理ブロック＃００Ｈと＃０２Ｈは更新ブロックとされ、その物理ブロック番号＃００Ｈと＃０２Ｈが、有効でなかった第２の領域におけるデータ領域の更新ブロックへのポインタの欄に書き込まれる。即ち、第１の領域におけるデータ領域の更新ブロックへのポインタの欄が、第２の領域にコピーされ、そのうちの、データが書き込まれた物理ブロックの物理ブロック番号＃０４Ｈまたは＃０５Ｈが、図８に示すように、対象ブロックの物理ブロック番号＃００Ｈまたは＃０２Ｈにそれぞれ書き換えられる。その結果、第２の領域に注目した場合には、物理ブロック＃００Ｈおよび＃０２Ｈは更新ブロックとなる。
【０１１８】
以上のようにして、第２の領域を更新した後は、図４における場合と同様に、その第２の領域における最新情報と有効性情報とが順次書き込まれる（書き換えられる）。
【０１１９】
従って、この場合、第２の領域について、データ領域の対象ブロックへのポインタの欄の書き込みが終了しないと、有効である旨の有効性情報は書き込まれない。即ち、上述の場合においては、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが両方とも終了しなければ、第２の領域には、有効である旨の有効性情報は書き込まれない。
【０１２０】
その結果、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが行われている間にメモリコラプションが生じた場合には、第１の領域のみが有効な状態となったままになり、論理ブロック％００Ｈと％０２Ｈからは、有効である第１の領域を参照することで、その論理ブロック％００Ｈと％０２Ｈにそれぞれ対応付けられている物理ブロック＃００Ｈと＃０２Ｈに記憶されている古いデータが読み出されることになる。
【０１２１】
一方、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが終了し、第２の領域における最新情報と有効性情報の更新が行われた場合には、論理ブロック％００Ｈと％０２Ｈからは、有効で且つ最も新しい第２の領域を参照することで、その論理ブロック％００Ｈと％０２Ｈにそれぞれ対応付けられている物理ブロック＃０４Ｈと＃０５Ｈに記憶されている新しいデータが読み出されることになる。
【０１２２】
従って、この場合、論理ブロック％００Ｈと％０２Ｈに記憶される、複数のデータとしての２つデータが関連性を有するものであるときには、メモリコラプションが生じても、個々のデータの整合性とともに、その２つのデータの間の整合性を維持することが可能となる。
【０１２３】
次に、図７および図８に示した構成のメモリに対するデータの読み書き処理について、図９および図１０のフローチャートを参照してさらに説明する。
【０１２４】
まず、図９のフローチャートを参照して、読み出し処理について説明する。
【０１２５】
この場合、まず最初に、ステップＳ２１またはＳ２６において、図５のステップＳ１またはＳ４における場合とそれぞれ同様の判定処理が行われる。
【０１２６】
そして、第１の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第１の領域の方が新しい場合は、ステップＳ２２に進み、また、第２の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第２の領域の方が新しい場合は、ステップＳ２４に進む。
【０１２７】
ステップＳ２２では、第１の領域におけるデータ領域の対象ブロックへのポインタの欄を参照することで、読み出すべきデータの論理ブロック番号（この論理ブロック番号は、例えば、外部から供給されるものとする）に対応する物理ブロック番号、即ち、対象ブロックへのポインタとしての、その物理ブロック番号が認識され、ステップＳ２３に進む。ステップＳ２３では、ステップＳ２３で認識された物理ブロック番号に対応する物理ブロックからデータが読み出され、処理を終了する。
【０１２８】
一方、ステップＳ２４では、第２の領域におけるデータ領域の対象ブロックへのポインタの欄を参照することで、読み出すべきデータの論理ブロック番号に対応する物理ブロック番号、即ち、対象ブロックへのポインタとしての、その物理ブロック番号が認識され、ステップＳ２５に進む。ステップＳ２５では、ステップＳ２４で認識された物理ブロック番号に対応する物理ブロックからデータが読み出され、処理を終了する。
【０１２９】
次に、図１０のフローチャートを参照して、読み出し処理について説明する。
【０１３０】
この場合も、ステップＳ３１またはＳ４０において、図５のステップＳ１またはＳ４における場合とそれぞれ同様の判定処理が行われる。
【０１３１】
そして、第１の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第１の領域の方が新しい場合は、ステップＳ３２に進み、第１の領域におけるデータ領域の更新ブロックへのポインタの欄を参照することで、更新ブロックとすることができる物理ブロックの物理ブロック番号が認識され、ステップＳ３３に進む。ステップＳ３３では、その認識された物理ブロックの番号に対応する物理ブロック、即ち、更新ブロックに、外部などから供給された、書き込むべきデータが書き込まれる。
【０１３２】
なお、外部から、複数の論理ブロックに書き込むデータが供給された場合には、ステップＳ３２では、その複数の論理ブロックと同一の数の更新ブロックの物理ブロック番号が、第１の領域におけるデータ領域の更新ブロックへのポインタの欄を、例えば、左から右方向に順次サーチすることで認識されるようになされている。さらに、この場合、ステップＳ３３では、このようにして認識された複数の物理ブロック番号それぞれに対応する更新ブロックに、外部からのデータが順次書き込まれるようになされている。
【０１３３】
その後、ステップＳ３４に進み、第１の領域におけるデータ領域の対象ブロックへのポインタの欄と、データ領域の更新ブロックへのポインタの欄とを更新し、かつその最新情報および有効性情報を更新したものが、第２の領域にコピーされる。
【０１３４】
即ち、第１の領域におけるデータ領域の対象ブロックへのポインタの欄については、外部から供給されたデータを書き込む論理ブロックの論理ブロック番号に対応付けられていた物理ブロック番号（図７および図８の例では、＃００Ｈと＃０２Ｈ）が、実際にデータを書き込んだ更新ブロックの物理ブロック番号（図７および図８の例では、＃０４Ｈと＃０５Ｈ）に更新される。また、第１の領域におけるデータ領域の更新ブロックへのポインタの欄については、データの書き込まれた物理ブロック（更新ブロックであった物理ブロック）の物理ブロック番号（図７および図８の例では、＃０４Ｈと＃０５Ｈ）が、データを書き込む論理ブロックの論理ブロック番号に対応付けられていた物理ブロック番号（図７および図８の例では、＃００Ｈと＃０２Ｈ）に更新される。さらに、最新情報と有効性情報とが更新され、以上の更新結果が、第２の領域に書き込まれて、処理を終了する。
【０１３５】
一方、第２の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第２の領域の方が新しい場合は、ステップＳ３６乃至Ｓ３８に順次進み、第１または第２の領域についての処理が、逆に第２または第１の領域についてそれぞれ行われることを除けば、ステップＳ３２乃至Ｓ３４における場合とそれぞれ同様の処理が行われる。
【０１３６】
なお、以上の図７乃至図１０で説明したメモリに対する読み書き方式は、データ領域への１段のポインタを利用したものなので、以下、適宜、シングルポインタ方式という。
【０１３７】
ところで、シングルポインタ方式による場合には、図７および図８に示したように、データ領域の対象ブロックへのポインタの欄に、４つの物理ブロック番号の記憶が可能なようになっていることから、最大で、４ブロック分のデータの整合性を維持することができる。
【０１３８】
ここで、図７および図８において、データ領域の更新ブロックへのポインタの欄を、データ領域の対象ブロックへのポインタの欄と同様に、４つの物理ブロック番号の記憶が可能なようにしたのは、整合性の維持が可能な最大のブロック数である４ブロック分のデータの書き込みを行うのに、やはり、４つの更新ブロックが必要となるためである。
【０１３９】
シングルポインタ方式を、図７および図８のメモリ構成に適用した場合には、上述のように、最大で、４ブロック分のデータの整合性を維持することができるが、逆に言えば、それより多いブロック分の整合性の維持を図ることは困難である。即ち、第１および第２の領域としての物理ブロックに、データ領域を構成する物理ブロックの物理ブロック番号を記憶させて管理するだけでは、第１および第２の領域としての物理ブロックに、物理ブロック番号を記憶させることのできる数によって、データの整合性を維持することができるブロック数が制限される。
【０１４０】
そこで、メモリを、例えば、図１１に示すように構成する。
【０１４１】
即ち、ここでは、メモリを、データを記憶するデータ領域としての物理ブロックと、データ領域を構成する物理ブロックへのポインタとしての、そのブロック番号を記憶するポインタ領域としての物理ブロック、およびポインタ領域を構成する物理ブロックへのポインタとしての、そのブロック番号を記憶する第１および第２の領域としての物理ブロックとで構成する。
【０１４２】
なお、図１１では、スペースの関係上、１つの物理ブロックは、８バイトで構成されている。
【０１４３】
データ領域を構成する各物理ブロックは、８バイト単位でデータを記憶するようになされており、図１１においては、データ領域は、物理ブロック番号として＃００Ｈ乃至＃１７Ｈそれぞれが割り当てられた２４の物理ブロックで構成されている。
【０１４４】
なお、ここでは、外部からは、１６の論理ブロックが見えるようになされており、その１６の論理ブロックそれぞれには、論理ブロック番号として％００Ｈ乃至％０ＦＨが割り当てられている。但し、ここでは、説明の都合上、データ領域を構成する物理ブロックと同一の数だけ論理ブロックが存在するものとし、外部から論理ブロックとして見える物理ブロック以外の８つの物理ブロックそれぞれに、論理ブロック番号として％１０乃至％１７を仮想的に割り当てておく。図１１に示した状態では、論理ブロック番号％００Ｈ乃至％１７Ｈと、物理ブロック番号＃００Ｈ乃至＃１７Ｈとがそれぞれ対応付けられている。
【０１４５】
ポインタ領域（ブロック番号領域）を構成する各物理ブロックは、８バイト単位で、データ領域を構成する物理ブロックへのポインタとしての、その物理ブロック番号を記憶するようになされており、図１１においては、ポインタ領域は、物理ブロック番号として＃１Ｂ乃至＃１Ｄそれぞれが割り当てられた６の物理ブロックで構成されている。ここでは、ポインタ領域を構成する各物理ブロックは、８バイト単位で物理ブロック番号を記憶するようになされており、また、物理ブロック番号は１バイトで表されるから、１の物理ブロックには、８個の物理ブロック番号が記憶されるようになされている。
【０１４６】
なお、ポインタ領域の各物理ブロックに配置される８つの物理ブロック番号は、論理ブロック番号と対応付けられるようになされている。即ち、その１乃至８バイト目に配置される物理ブロック番号は、ある論理ブロック番号（後述するように、％００Ｈ，％０８Ｈ、または％１０Ｈ）を基準として０乃至７だけオフセットした（ずれた）論理ブロック番号に対応付けられるようになされている。
【０１４７】
第１および第２の領域としてのブロックは、その先頭の１バイトが最新情報に、終わりの１バイトが有効性情報に、それぞれ割り当てられている。そして、最新情報と有効性情報との間の６バイトには、ポインタ領域の物理ブロックへのポインタとしての、その物理ブロック番号が配置されている。
【０１４８】
即ち、第１および第２の領域における最新情報と有効性情報との間の６バイトのうち、前半の４バイト（以下、適宜、ポインタ領域の対象ブロックへのポインタの欄という）には、ポインタ領域の対象ブロックの物理ブロック番号が配置され、その後半の４バイト（以下、適宜、ポインタ領域の更新ブロックへのポインタの欄という）には、ポインタ領域の更新ブロックの物理ブロック番号が配置される。
【０１４９】
第１および第２の領域におけるポインタ領域の対象ブロックへのポインタの欄に配置される３つの物理ブロック番号に対応するポインタ領域の物理ブロックが記憶している物理ブロック番号は、論理ブロック番号と対応付けられるようになされている。即ち、例えば、その１乃至３バイト目に配置される物理ブロック番号に対応するポインタ領域の物理ブロックが記憶している物理ブロック番号は、それぞれ論理ブロック番号％００Ｈ乃至％０７Ｈ、％０８Ｈ乃至％０ＦＨ、または％１０Ｈ乃至％１７Ｈに対応付けられるようになされている。
【０１５０】
具体的には、例えば、図１１において、第１の領域に注目した場合においては、ポインタ領域の対象ブロックへのポインタの欄における１バイト目の物理ブロック番号＃１８Ｈが指しているポインタ領域の物理ブロックの１乃至８バイト目に配置された物理ブロック番号＃００Ｈ乃至＃０７Ｈは、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄における１バイト目に対応付けられている論理ブロック番号％００Ｈ乃至％０７Ｈにそれぞれ対応付けられる。即ち、ポインタ領域の対象ブロックへのポインタの欄における１バイト目の物理ブロック番号が指すポインタ領域の物理ブロックの１乃至８バイト目に配置された物理ブロック番号は、論理ブロック番号％００Ｈを基準として０乃至７だけオフセットした論理ブロック番号％００Ｈ乃至％０７Ｈにそれぞれ対応付けられる。
【０１５１】
また、ポインタ領域の対象ブロックへのポインタの欄における２バイト目の物理ブロック番号＃１９Ｈが指しているポインタ領域の物理ブロックの１乃至８バイト目に配置された物理ブロック番号＃０８Ｈ乃至＃０ＦＨは、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄における２バイト目に対応付けられている論理ブロック番号％０８Ｈ乃至％０ＦＨにそれぞれ対応付けられる。即ち、ポインタ領域の対象ブロックへのポインタの欄における２バイト目の物理ブロック番号が指すポインタ領域の物理ブロックの１乃至８バイト目に配置された物理ブロック番号は、論理ブロック番号％０８Ｈを基準として０乃至７だけオフセットした論理ブロック番号％０８Ｈ乃至％０ＦＨにそれぞれ対応付けられる。
【０１５２】
同様にして、ポインタ領域の対象ブロックへのポインタの欄における３バイト目の物理ブロック番号が指すポインタ領域の物理ブロックの１乃至８バイト目に配置された物理ブロック番号は、論理ブロック番号％１０Ｈを基準として０乃至７だけオフセットした論理ブロック番号％１０Ｈ乃至％１７Ｈにそれぞれ対応付けられる。
【０１５３】
なお、図１１では、第１または第２の領域の物理ブロック番号は、それぞれ＃１Ｅまたは＃１Ｆとなっている。
【０１５４】
以上のように構成されるメモリにおいて、例えば、第１の領域に注目した場合には、ポインタ領域の対象ブロックへのポインタの欄に記述された物理ブロック番号に対応する物理ブロックが、アクセス対象となるべきポインタ領域の対象ブロックとなる。従って、図１１では、物理ブロック＃１８Ｈ乃至＃１ＡＨがポインタ領域の対象ブロックとなっている。また、図１１では、ポインタ領域の残りの物理ブロック＃１ＢＨ乃至＃１ＤＨが、ポインタ領域の更新のための更新ブロックとなっており、これにより、その物理ブロック番号＃１ＢＨ乃至＃１ＤＨが、第１の領域におけるポインタ領域の更新ブロックへのポインタの欄に記述されている。
【０１５５】
さらに、図１１では、ポインタ領域の対象ブロックに記述された物理ブロック番号に対応する、データ領域の物理ブロックのうち、例えば、論理ブロック％００Ｈ乃至％０ＦＨに対応するものがデータ領域の対象ブロックとなるようになされている。従って、図１１では、物理ブロック＃００Ｈ乃至＃０ＦＨがデータ領域の対象ブロックとなり、データ領域の残りの物理ブロック（論理ブロック％１０Ｈ乃至％１７Ｈに対応する物理ブロック）＃１０Ｈ乃至＃１７Ｈが、データ領域の更新のための更新ブロックとなっている。
【０１５６】
ここで、上述したように、ポインタ領域の更新ブロックは、その物理ブロック番号が、ポインタ領域の更新ブロックへのポインタの欄に記述されているので、その欄を参照することで認識することができる。一方、データ領域の更新ブロックは、論理ブロック％１０Ｈ乃至％１７Ｈに対応する物理ブロックであるから、ポインタ領域の対象ブロックへのポインタの欄の３バイト目に記述されている物理ブロック番号に対応するポインタ領域の物理ブロックを参照することで、そこに記述されている物理ブロック番号から認識することができる。
【０１５７】
いま、第１または第２の領域のうちの一方の領域としての、例えば、第１の領域のみが有効であるとされているとして、外部から、例えば、論理ブロック番号％００Ｈと％０２Ｈに対応する論理ブロックそれぞれに、関連する２つのデータの書き込みの要求があったとする。
【０１５８】
この場合、有効である第１の領域のうちの、ポインタ領域の対象ブロックへのポインタの欄を参照し、さらに、そこに記述されている物理ブロック番号に対応する物理ブロックを参照することで、関連する２つのデータを書き込むべきデータ領域の物理ブロックである対象ブロックが認識される。即ち、まず、上述したことから、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄の１バイト目を参照することで、論理ブロック％００Ｈと％０２Ｈに対応するデータ領域の物理ブロックの物理ブロック番号が記述された、ポインタ領域の物理ブロック＃１８Ｈを認識することができる。そして、その物理ブロック＃１８Ｈの１バイト目と３バイト目を参照することで、論理ブロック％００Ｈと％０２Ｈに対応するデータ領域の物理ブロック（対象ブロック）の物理ブロック番号＃００Ｈと＃０２Ｈをそれぞれ認識することができる。
【０１５９】
その後、データ領域の更新ブロックが認識される。即ち、上述したことから、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄の３バイト目を参照することで、データ領域の更新ブロックとなる論理ブロック％１０Ｈ乃至％１７Ｈに対応する物理ブロックの物理ブロック番号が記述された、ポインタ領域の物理ブロック＃１ＡＨを認識することができる。そして、その物理ブロック＃１ＡＨを参照することで、データ領域の更新ブロックとなっている物理ブロックの物理ブロック番号＃１０Ｈ乃至＃１７Ｈを認識することができる。なお、ここでは、データ領域の更新ブロックとして、データの書き込み対象である、データ領域の対象ブロックと同一の数の物理ブロックが、物理ブロック＃１ＡＨを、例えば左から順次参照することで認識されるようになされている。従って、ここでは、物理ブロック番号＃１０Ｈと＃１１Ｈに対応する、データ領域の物理ブロックが更新ブロックとされる。
【０１６０】
そして、本来ならば、データ領域の対象ブロックである物理ブロック＃００Ｈまたは＃０２Ｈに書き込むべき２つのデータが、図１２に示すように、データ領域の更新ブロックである物理ブロック＃１０Ｈまたは＃１１Ｈそれぞれに書き込まれる。
【０１６１】
ここで、図１２は、論理ブロック番号％００Ｈと％０２Ｈに対応する物理ブロック番号＃００Ｈと＃０２Ｈに書き込むべき２つのデータが、それぞれ８バイトの００Ｈと８バイトの０２Ｈであったとして、これらが、データ領域の更新ブロックである物理ブロック＃１０Ｈと＃１１Ｈそれぞれに書き込まれた状態を示している。
【０１６２】
以上のようにして、第１の領域が記憶しているポインタ領域の物理ブロック番号＃１８Ｈに対応する物理ブロックに記憶されているデータ領域の物理ブロック番号＃００Ｈおよび＃０２Ｈに対応する物理ブロックに書き込むべき２つのデータを、データ領域の更新ブロック＃１０Ｈと＃１１Ｈにそれぞれ書き込んだ後は、そのデータを書き込んだ、データ領域の更新ブロックであった物理ブロックのブロック番号＃１０Ｈと＃１１Ｈが、ポインタ領域の更新ブロックに書き込まれるとともに、本来ならばデータが書き込まれたはずであったデータ領域の物理ブロック（対象ブロック）の物理ブロック番号＃００Ｈおよび＃０２Ｈが、ポインタ領域の、他の更新ブロックに書き込まれる
【０１６３】
即ち、まず、第１の領域におけるポインタ領域の更新ブロックへのポインタの欄を参照することで、ポインタ領域の更新ブロックが認識される。なお、ここでは、ポインタ領域の更新ブロックとして、ポインタ領域の対象ブロックのうち、上述のようなデータ領域への書き込みに伴って変更（更新）する必要のあるものと同一の数の物理ブロックが、ポインタ領域の更新ブロックへのポインタの欄を、例えば左から順次参照することで認識されるようになされている。従って、上述の場合においては、本来、データが書き込まれるべき物理ブロック（データ領域の対象ブロック）の物理ブロック番号＃００Ｈと＃０２Ｈが記憶されている、ポインタ領域の物理ブロック＃１８Ｈ、および実際にデータが書き込まれた物理ブロックの物理ブロック番号＃１０Ｈと＃１１Ｈが記憶されている、ポインタ領域の物理ブロック＃１ＡＨの２つの物理ブロックと同一の数である、ポインタ領域の更新ブロック＃１ＢＨと＃１ＣＨの２つが、第１の領域におけるポインタ領域の更新ブロックへのポインタの欄を左から順次参照することで認識される。
【０１６４】
そして、認識されたポインタ領域の更新ブロック＃１ＢＨまたは＃１ＣＨのうちの、例えば、更新ブロック＃１ＢＨには、データ領域の対象ブロックの物理ブロック番号＃００Ｈと＃０２Ｈが記憶されている、ポインタ領域の物理ブロック＃１８Ｈの記憶内容がコピーされ、そのうちの、データ領域の対象ブロックの物理ブロック番号＃００Ｈまたは＃０２Ｈが、図１２に示すように、実際にデータが書き込まれたデータ領域の更新ブロックの物理ブロック番号＃１０Ｈまたは＃１１Ｈにそれぞれ書き換えられる。
【０１６５】
また、認識されたポインタ領域の更新ブロック＃１ＢＨまたは＃１ＣＨのうちの残りの更新ブロック＃１ＣＨには、実際にデータが書き込まれた物理ブロックの物理ブロック番号＃１０Ｈと＃１１Ｈが記憶されている、ポインタ領域の物理ブロック＃１ＡＨの記憶内容がコピーされ、その物理ブロック番号＃１０Ｈと＃１１Ｈが、図１２に示すように、本来、データが書き込まれるべき物理ブロックの物理ブロック番号（データ領域の対象ブロック）＃００Ｈまたは＃０２Ｈにそれぞれ書き換えられる。
【０１６６】
その後、物理ブロック番号が更新されたポインタ領域の更新ブロックであった物理ブロックのブロック番号＃１ＢＨと＃１ＣＨが、有効でなかった第２の領域におけるポインタ領域の対象ブロックへのポインタの欄に書き込まれる。即ち、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄が、第２の領域にコピーされ、そのうちの、論理アドレス％００Ｈ乃至％０７Ｈに対応する１バイト目が、ポインタ領域の物理ブロックの物理ブロック番号＃１ＢＨに書き換えられるとともに、論理アドレス％１０Ｈ乃至％１７Ｈに対応する３バイト目が、ポインタ領域の物理ブロックの物理ブロック番号＃１ＣＨに書き換えられる（図１２）。
【０１６７】
その結果、第２の領域に注目した場合には、物理ブロック＃１ＢＨ，＃１９Ｈ、および＃１ＣＨが、ポインタ領域の対象ブロックとなり、これにより、データ領域の更新ブロックであった物理ブロック＃１０Ｈまたは＃１１Ｈは、データ領域の対象ブロックであった物理ブロック＃００Ｈまたは＃０２Ｈが対応付けられていた論理ブロック番号％００Ｈまたは％０２Ｈにそれぞれ対応付けられるとともに、対象ブロックであった物理ブロック＃００Ｈまたは＃０２Ｈは、論理ブロック％１０Ｈまたは％１１Ｈにそれぞれ対応付けられ、更新ブロックとされる。
【０１６８】
即ち、第２の領域におけるポインタ領域の対象ブロックへのポインタの欄の１バイト目を参照すると、論理ブロック％００Ｈと％０２Ｈに対応するデータ領域の物理ブロックの物理ブロック番号が記述された、ポインタ領域の物理ブロックは、物理ブロック＃１ＢＨということになり、さらに、その物理ブロック＃１ＢＨの１バイト目と３バイト目を参照すると、論理ブロック％００Ｈと％０２Ｈに対応するデータ領域の物理ブロックは、それぞれ物理ブロック＃１０Ｈと＃１１Ｈということになる。また、第２の領域におけるポインタ領域の対象ブロックへのポインタの欄の３バイト目を参照すると、論理ブロック％１０Ｈと％１１Ｈに対応するデータ領域の物理ブロックの物理ブロック番号が記述された、ポインタ領域の物理ブロックは、物理ブロック＃１ＣＨということになり、さらに、その物理ブロック＃１ＣＨの１バイト目と２バイト目を参照すると、論理ブロック％１０Ｈと％１１Ｈに対応するデータ領域の物理ブロック、つまりデータ領域の更新ブロックは、物理ブロック＃００Ｈと＃０２Ｈということになる。
【０１６９】
さらに、ポインタ領域のうちの、本来、データが書き込まれるべき物理ブロックの物理ブロック番号＃００Ｈと＃０２Ｈが記憶されていた物理ブロックの物理ブロック番号＃１８Ｈ、および実際にデータが書き込まれた物理ブロックの物理ブロック番号＃１０Ｈと＃１１Ｈが記憶されていた物理ブロックの物理ブロック番号＃１ＡＨが、有効でなかった第２の領域におけるポインタ領域の更新ブロックへのポインタの欄に書き込まれる。即ち、第１の領域におけるポインタ領域の更新ブロックへのポインタの欄が、第２の領域にコピーされ、そのうちの、記憶内容の更新がされたポインタ領域の物理ブロックの物理ブロック番号＃１ＢＨまたは＃１ＣＨが、図１２に示すように、論理アドレス％００Ｈ乃至％０７Ｈに対応していた物理ブロック番号が記憶された物理ブロック番号＃１８Ｈ、または論理アドレス％１０Ｈ乃至％１７Ｈに対応していた物理ブロック番号が記憶された物理ブロック番号＃１ＡＨに、それぞれ書き換えられる。
【０１７０】
その結果、第２の領域に注目した場合には、物理ブロック＃１８Ｈ，＃１ＡＨ、および＃１ＤＨが、ポインタ領域の更新ブロックとなる。
【０１７１】
以上のようにして、第２の領域を更新した後は、シングルポインタ方式における場合と同様に、その第２の領域における最新情報と有効性情報とが順次書き込まれる。
【０１７２】
従って、この場合、データ領域、さらにはポインタ領域の書き込みが終了しないと、有効である旨の有効性情報は書き込まれない。即ち、上述の場合においては、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが終了しなければ、第２の領域には、有効である旨の有効性情報は書き込まれない。
【０１７３】
その結果、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが行われている間にメモリコラプションが生じた場合には、第１の領域のみが有効な状態となったままになり、論理ブロック％００Ｈと％０２Ｈからは、有効である第１の領域を参照することで、その論理ブロック％００Ｈと％０２Ｈにそれぞれ対応付けられている物理ブロック＃００Ｈと＃０２Ｈに記憶されている古いデータが読み出されることになる。
【０１７４】
一方、２つの論理ブロック％００Ｈと％０２Ｈへのデータの書き込みが終了し、第２の領域における最新情報と有効性情報の更新が行われた場合には、論理ブロック％００Ｈと％０２Ｈからは、有効で且つ最も新しい第２の領域を参照することで、その論理ブロック％００Ｈと％０２Ｈにそれぞれ対応付けられている物理ブロック＃１０Ｈと＃１１Ｈに記憶されている新しいデータが読み出されることになる。
【０１７５】
従って、この場合、論理ブロック％００Ｈと％０２Ｈに記憶される、複数のデータとしての２つデータが関連性を有するものであるときには、メモリコラプションが生じても、シングルポインタ方式における場合と同様に、その２つのデータの間の整合性を維持することが可能となる。
【０１７６】
さらに、第１および第２の領域におけるポインタ領域の対象ブロックへのポインタの欄には、ポインタ領域の物理ブロックの３つ分の物理ブロック番号を記憶させることができ、また、ポインタ領域の１の物理ブロックには、データ領域の物理ブロックの８つ分の物理ブロック番号を記憶させることができるので、最大で、データ領域の物理ブロックを、２４（＝３×８）個管理することができる。従って、最大で、２４ブロックのうちの半分である１２ブロックをデータ領域の更新ブロックとすることができ、そのブロック数分、即ち、シングルポインタ方式よりも多いブロック数のデータの整合性を維持することができる。なお、図１１および図１２では、２４ブロックのうちの８ブロックを更新ブロックとしてあり、最大で、８ブロック分のデータの整合性を維持することができるようになされている。
【０１７７】
ここで、以上の図１１および１２で説明したメモリに対する読み書き方式は、データ領域への、いわば２段のポインタを利用したものなので、以下、適宜、ダブルポインタ方式という。
【０１７８】
次に、ダブルポインタ方式によるデータの読み書き処理について、図１３および図１４のフローチャートを参照してさらに説明する。
【０１７９】
まず、図１３のフローチャートを参照して、読み出し処理について説明する。
【０１８０】
この場合、まず最初に、ステップＳ５１またはＳ５８において、図５のステップＳ１またはＳ４における場合とそれぞれ同様の判定処理が行われる。
【０１８１】
そして、第１の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第１の領域の方が新しい場合は、ステップＳ５２に進み、また、第２の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第２の領域の方が新しい場合は、ステップＳ５５に進む。
【０１８２】
ステップＳ５２では、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄を参照することで、読み出すべきデータの論理ブロック番号に対応する物理ブロック番号が記憶されている、ポインタ領域の物理ブロックの物理ブロック番号（ポインタ）が認識され、ステップＳ５３に進む。即ち、例えば、図１１で説明したようにメモリが構成される場合において、論理ブロック番号が％００Ｈ乃至％０７Ｈ、または％０８Ｈ乃至％０ＦＨのとき、ポインタ領域の対象ブロックへのポインタの欄の１または２バイト目に記憶されている物理ブロック番号がそれぞれ認識される。
【０１８３】
ステップＳ５３では、ステップＳ５２で認識された物理ブロック番号に対応するポインタ領域の物理ブロックを参照することで、読み出すべきデータの論理ブロック番号に対応する物理ブロック番号が認識され、ステップＳ５４に進む。即ち、読み出すべきデータの論理ブロック番号が、ある基準値（図１１の場合においては、％００Ｈまたは％０８Ｈ）から０乃至７だけオフセットした値である場合には、ステップＳ５２で認識された物理ブロック番号に対応する物理ブロックの左から、そのオフセット分だけずれた位置に記憶された物理ブロック番号が、読み出すべきデータの論理ブロック番号に対応する物理ブロック番号として認識される。
【０１８４】
そして、ステップＳ５４では、ステップＳ５３で認識された物理ブロック番号に対応する物理ブロックからデータが読み出され、処理を終了する。
【０１８５】
一方、ステップＳ５５では、第２の領域におけるポインタ領域の対象ブロックへのポインタの欄を参照することで、読み出すべきデータの論理ブロック番号に対応する物理ブロック番号が記憶されている、ポインタ領域の物理ブロックの物理ブロック番号が認識され、以下、ステップＳ５６，Ｓ５７に順次進み、ステップＳ５３，Ｓ５４それぞれに相当する処理が行われ、処理を終了する。
【０１８６】
次に、図１４のフローチャートを参照して、書き込み処理について説明する。
【０１８７】
この場合も、ステップＳ６１またはＳ７４において、図５のステップＳ１またはＳ４における場合とそれぞれ同様の判定処理が行われる。
【０１８８】
そして、第１の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第１の領域の方が新しい場合は、ステップＳ６２に進み、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄を参照することで、更新ブロックとすることができるデータ領域の物理ブロックの物理ブロック番号が記憶されたポインタ領域の物理ブロックの物理ブロック番号が認識され、ステップＳ６３に進む。即ち、例えば、図１１に示したようにメモリが構成される場合においては、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄の３バイト目に記憶された物理ブロック番号＃１ＡＨが認識される。
【０１８９】
ステップＳ６３では、ステップＳ６２で認識された物理ブロック番号に対応する物理ブロックに記憶された、データ領域の更新ブロックの物理ブロック番号を参照することで、データ領域の更新ブロックが認識され、ステップＳ６４に進み、そのデータ領域の更新ブロックに、外部などから供給された、書き込むべきデータが書き込まれる。
【０１９０】
なお、外部から、複数の論理ブロックに書き込むデータが供給された場合には、ステップＳ６３では、その複数の論理ブロックと同一の数の、データ領域の更新ブロックの物理ブロック番号が、ステップＳ６２で認識された物理ブロック番号に対応する物理ブロック（ポインタ領域の物理ブロック）を、例えば、左から右方向に順次サーチすることで認識されるようになされている。さらに、この場合、ステップＳ６４では、このようにして認識された複数の物理ブロック番号それぞれに対応するデータ領域の更新ブロックに、外部からのデータが順次書き込まれるようになされている。
【０１９１】
その後、ステップＳ６５に進み、データの書き込みの対象とした論理ブロックの論理ブロック番号が対応付けられていた物理ブロック番号を記憶していた物理ブロックを更新したものが、ポインタ領域の更新ブロックにコピーされる。即ち、例えば、図１１および図１２で説明した場合においては、データの書き込みの対象とした論理ブロックの論理ブロック番号％００Ｈ，％０２Ｈが対応付けられていた物理ブロック番号＃００Ｈ，＃０２Ｈを記憶していた物理ブロック＃１８Ｈを更新し、そのうちの物理ブロック番号＃００Ｈ，＃０２Ｈをそれぞれ＃１０Ｈ，＃１１Ｈとしたものが、ポインタ領域の更新ブロック＃１ＢＨにコピーされる。
【０１９２】
さらに、ステップＳ６５では、データ領域の更新ブロックへのポインタ（データ領域の更新ブロックの物理ブロック番号）を記憶している物理ブロックを更新したものが、ポインタ領域の更新ブロックにコピーされる。即ち、例えば、図１１および図１２で説明した場合においては、データ領域の更新ブロックの物理ブロック番号＃１０Ｈ乃至＃１７Ｈを記憶している物理ブロック＃１ＡＨを更新し、そのうちの物理ブロック番号＃１０Ｈ，＃１１Ｈをそれぞれ＃００Ｈ，＃０２Ｈとしたものが、ポインタ領域の更新ブロック＃１Ｃにコピーされる。
【０１９３】
そして、ステップＳ６６に進み、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄、およびポインタ領域の更新ブロックへのポインタの欄とを更新し、さらに、その最新情報および有効性情報を更新したものが、第２の領域にコピーされる。
【０１９４】
即ち、例えば、図１１および図１２の場合を例にすれば、第１の領域におけるポインタ領域の対象ブロックへのポインタの欄については、外部から供給されたデータを書き込む論理ブロックに対応付けられていたデータ領域の物理ブロック＃００Ｈ，＃０２Ｈへのポインタのポインタとなっている１バイト目に記憶されていた物理ブロック番号＃１８Ｈが、実際にデータを書き込んだデータ領域の物理ブロック＃１０Ｈ，＃１１Ｈへのポインタのポインタである物理ブロック番号＃１ＢＨに更新されるとともに、実際にデータを書き込んだデータ領域の物理ブロック＃１０Ｈ，＃１１Ｈへのポインタのポインタとなっていた物理ブロック番号＃１ＡＨが、データを書き込む論理ブロックに対応付けられていたデータ領域の物理ブロック＃００Ｈ，＃０２Ｈへのポインタのポインタとなった物理ブロック番号＃１ＣＨに更新される。
【０１９５】
また、第１の領域におけるポインタ領域の更新ブロックへのポインタの欄については、物理ブロック番号の更新されたポインタ領域の物理ブロック（更新ブロックであった物理ブロック）の物理ブロック番号＃１ＢＨ，＃１ＣＨが、ポインタ領域の更新ブロックとなった物理ブロックの物理ブロック番号＃１８Ｈ，＃１ＡＨにそれぞれ更新される。
【０１９６】
さらに、第１の領域における最新情報および有効性情報が更新され、以上の更新結果が、第２の領域に書き込まれ、処理を終了する。
【０１９７】
一方、第２の領域のみが有効の場合、および第１と第２の領域の両方が有効であるが、第２の領域の方が新しい場合は、ステップＳ６８乃至Ｓ７２に順次進み、第１または第２の領域についての処理が、逆に第２または第１の領域についてそれぞれ行われることを除けば、ステップＳ６２乃至Ｓ６６における場合とそれぞれ同様の処理が行われる。
【０１９８】
なお、ダブルポインタ方式の場合においても、シングルポインタ方式と同様に、整合性を維持することができる物理ブロックの数には制限があるが、シングルポインタ方式をダブルポインタ方式に拡張するのと同様にして、ダブルポインタ方式を拡張していき、データ領域へのポインタを、３段、４段、・・・とすれば、整合性を維持することができる物理ブロックの数を、より多くすることができる。従って、１ブロックの長さを考慮して、データ領域へのポインタの段数を適切に設定することで、整合性を維持することができる物理ブロックの数の上限を、所望の値にすることができる。
【０１９９】
次に、図３に示したＩＣカード２のシーケンサ９１による、ＥＥＰＲＯＭ６６に対するデータの読み書き処理は、上述のダブルポインタ方式により行われるようになされており、この場合のＥＥＰＲＯＭ６６のメモリ割り当ての例を、図１５に示す。
【０２００】
図１５では、ＥＥＰＲＯＭ６６は、物理ブロックを２５６個有している。各物理ブロックは、３２バイトのデータ部（Ｄ００乃至Ｄ１Ｆ）と、８バイトのパリティ部（Ｐ０乃至Ｐ５）との合計４０バイトで構成されている。
【０２０１】
また、図１５では、２５６の物理ブロックに物理ブロック番号＃００Ｈ乃至＃ＦＦＨがそれぞれ割り当てられており、このうち、物理ブロック＃００Ｈ乃至＃ＥＦＨがデータ領域を、物理ブロック＃Ｆ０Ｈ乃至＃ＦＤＨがポインタ領域を、物理ブロック＃ＦＥＨ，＃ＦＦＨが第１、第２の領域を、それぞれ構成している。
【０２０２】
さらに、データ領域については、２４０の物理ブロック＃００Ｈ乃至＃ＥＦＨのうち、２２４の物理ブロックが対象ブロック（以下、データブロックともいう）とされ、残りの１６の物理ブロックが更新ブロックとされている。従って、ここでは、最大で、１６ブロック分のデータの整合性を維持することができるようになされている。なお、図１５に示した状態では、物理ブロック＃００Ｈ乃至＃ＤＦＨがデータブロックに、物理ブロック＃Ｅ０Ｈ乃至ＥＦＨが更新ブロックになっている。
【０２０３】
ポインタ領域については、１４の物理ブロック＃Ｆ０Ｈ乃至＃ＦＤＨのうちの７個ずつが、それぞれ対象ブロック（以下、ポインタブロックともいう）または更新ブロックとされている。なお、図１５に示した状態では、物理ブロック＃Ｆ０Ｈ乃至＃Ｆ６Ｈがポインタブロックに、物理ブロック＃Ｆ７Ｈ乃至ＦＤＨが更新ブロックになっている。
【０２０４】
なお、図１５では、第１および第２の領域は、有効判定ブロックとして図示してある。
【０２０５】
図１６は、有効判定ブロック（第１および第２の領域）の構成例を示している。
【０２０６】
同図（Ａ）に示すように、有効判定ブロックのデータ部の１バイト目（Ｄ００）には、最新情報（最新性判定情報）が配置され、２乃至８バイト目（Ｄ０１乃至Ｄ０７）には、ポインタ領域の対象ブロック（ポインタブロック）の物理ブロック番号が配置される。
【０２０７】
有効判定ブロックのデータ部の９乃至２４バイト目（Ｄ０８乃至Ｄ１７）には、データ領域の更新ブロックの物理ブロック番号が配置される。即ち、上述の場合においては、第１および第２の領域に、データ領域の更新ブロックの物理ブロック番号が記憶されたポインタ領域の物理ブロックの物理ブロック番号（データ領域の更新ブロックへのポインタのポインタ）が記憶されるようになされていたが、ここでは、データ領域の更新ブロックの物理ブロック番号（データ領域の更新ブロックへのポインタ）が、直接、有効判定ブロックに配置されている。
【０２０８】
従って、ここでは、ポインタ領域に、データ領域の更新ブロックの物理ブロック番号が記憶される物理ブロックはない。
【０２０９】
有効判定ブロックのデータ部の２５乃至３１バイト目（Ｄ１８乃至Ｄ１Ｅ）には、ポインタ領域の更新ブロックの物理ブロック番号が配置され、その３２バイト目（Ｄ１Ｆ）は予備とされている。
【０２１０】
また、有効判定ブロックのパリティ部には、上述の有効性判定情報に相当する、例えばＲＳ符号などが配置される。
【０２１１】
ここで、図１５に示すように、ＥＥＰＲＯＭ６６が構成されている場合の、有効性判定ブロックのデータ部の初期値の例を、図１６（Ｂ）に示す。
【０２１２】
次に、図１７は、ポインタ領域を構成する物理ブロック（ポインタブロックおよびその更新ブロック）の構成例を示している。
【０２１３】
同図（Ａ）に示すように、データ部（Ｄ００乃至Ｄ１Ｆ）には、データ領域の物理ブロックの物理ブロック番号が３２個単位で配置される。なお、ポインタ領域を構成する物理ブロックのパリティ部は、上述した有効性情報として用いられるものではなく、通常のパリティとしての役割を果たすものであり、従って、このパリティ部に配置される情報は、誤り訂正能力を有するものであることが好ましい。これは、ダブルポインタ方式では、ポインタ領域を構成する物理ブロックのデータ部に配置された情報に誤りがないかどうかの有効性は、そのパリティ部に配置される情報によってではなく、有効判定ブロックの有効性情報としてのパリティ部に基づいて、最終的に判定されるからである。
【０２１４】
ここで、図１５に示すように、ＥＥＰＲＯＭ６６が構成されている場合の、ポインタ領域を構成する物理ブロックのデータ部の初期値の例を、図１７（Ｂ）に示す。
【０２１５】
なお、データ領域を構成する物理ブロック（データブロックおよびその更新ブロック）は、データ部に物理ブロック番号ではなく、読み書きされるデータが配置される他は、ポインタ領域を構成する物理ブロックと同様に構成されるので、その説明は省略する。
【０２１６】
次に、以上のようにＥＥＰＲＯＭ６６が構成される場合の、そのＥＥＰＲＯＭ６６に対するデータの読み書き処理について説明する。
【０２１７】
上述したように、ＩＣカード２がＲ／Ｗ１に近接し、ＩＣカード２を構成する各ブロックに電源の供給が開始されると、シーケンサ９１では、図１８のフローチャートにしたがった初期処理が行われる。
【０２１８】
即ち、この場合、まず最初に、ステップＳ８１において、シーケンサ９１は、ＥＥＰＲＯＭ６６を参照することにより、有効で、かつ最新の有効判定ブロックを選択し、ステップＳ８２に進み、その選択した有効判定ブロックをＲＡＭ６７にコピーする。さらに、シーケンサ９１は、ステップＳ８３に進み、選択した有効性判定ブロックに配置されているポインタ領域のポインタブロックの物理ブロック番号を参照し、その物理ブロック番号に対応するポインタブロックを、ＥＥＰＲＯＭ６６から読み出し、ＲＡＭ６７にコピーして、初期処理を終了する。
【０２１９】
以上のような初期処理により、ＲＡＭ６７には、図１９に示すように、有効かつ最新の有効判定ブロックと、７つのポインタブロックに記憶されているデータ領域のデータブロックの物理ブロック番号（図１５に示すように、ＥＥＰＲＯＭ６６が構成されていた場合には、物理ブロック番号＃００Ｈ乃至＃ＤＦＨ）とが記憶される。
【０２２０】
次に、図２０のフローチャートは、図１８のステップＳ８１の処理の詳細を示している。
【０２２１】
この場合、まず最初に、ステップＳ９１において、シーケンサ９１は、物理ブロック番号＃ＦＥＨと＃ＦＦＨに対応する有効判定ブロックの有効性情報としてのパリティ部を参照し、有効かどうかを判定する。
【０２２２】
ステップＳ９１において、物理ブロック番号＃ＦＥＨに対応する有効判定ブロックのみ有効であると判定された場合、ステップＳ９２に進み、シーケンサ９１は、選択すべき有効判定ブロックの物理ブロック番号を格納する変数Ｂnに、物理ブロック番号＃ＦＥＨをセットし、リターンする。また、ステップＳ９１において、物理ブロック番号＃ＦＦＨに対応する有効判定ブロックのみ有効であると判定された場合、ステップＳ９３に進み、シーケンサ９１は、変数Ｂnに、物理ブロック番号＃ＦＦＨをセットし、リターンする。
【０２２３】
一方、ステップＳ９１において、物理ブロック番号＃ＦＥＨおよび＃ＦＦＨに対応するいずれの有効判定ブロックも有効であると判定された場合、ステップＳ９４に進み、シーケンサ９１は、それぞれの有効判定ブロックの最新情報としての、そのデータ部の１バイト目を参照することで、いずれの有効判定ブロックが新しいかを判定する。ステップＳ９４において、物理ブロック番号＃ＦＥＨまたは＃ＦＦＨに対応する有効判定ブロックが新しいと判定された場合、ステップＳ９２またはＳ９３に進み、それぞれ上述した場合と同様の処理が行われ、リターンする。
【０２２４】
次に、以上のような初期処理が行われた後、シーケンサ９１に対して、ＥＥＰＲＯＭ６６からのデータの読み出しの要求が行われた場合の、シーケンサ９１の読み出し処理について説明する。なお、ここでは、データの読み出しの要求とともに、その読み出すデータが記憶されている論理ブロックの論理ブロック番号も、シーケンサ９１に供給されるものとする。
【０２２５】
この場合、図２１のフローチャートに示すように、まず最初に、ステップＳ１０１において、シーケンサ９１は、読み出すべきデータのブロック数を変数ｎにセットするとともに、そのブロック数をカウントするための変数ｉに、初期値としての、例えば１をセットする。ここで、シーケンサ９１には、上述したように、読み出すべきデータが記憶されている論理ブロックの論理ブロック番号が供給されるようになされており、シーケンサ９１では、その論理ブロック番号の数により、読み出すべきデータのブロック数ｎが認識されるようになされている。
【０２２６】
その後、シーケンサ９１は、ステップＳ１０２において、変数Ｂｌに、ｉ番目の論理ブロックの論理ブロック番号をセットし、ステップＳ１０３に進み、ＲＡＭ６７を参照することにより、上述したようにして、論理ブロック番号Ｂｌに対応付けられている物理ブロック番号Ｂｐを認識する。
【０２２７】
そして、シーケンサ９１は、ステップＳ１０４において、ＥＥＰＲＯＭ６６の、物理ブロック番号Ｂｐに対応する物理ブロックからデータを読み出し、ＲＡＭ６７に確保された送信バッファに転送する。即ち、ＲＡＭ６７には、図１８で説明した初期処理の結果を記憶する領域の他に、送信バッファとなる領域が確保されており、その送信バッファに、ＥＥＰＲＯＭ６６から読み出されたデータが転送される。
【０２２８】
その後、ステップＳ１０５において、シーケンサ９１は、変数ｉを１だけインクリメントし、ステップＳ１０６に進み、変数ｉがｎ以下であるかどうかを判定する。ステップＳ１０６において、変数ｉがｎ以下であると判定された場合、即ち、要求されたブロック数だけのデータを、まだ読み出していない場合、ステップＳ１０２に戻り、以下、上述した場合と同様の処理が行われる。また、ステップＳ１０６において、変数ｉがｎより大きいと判定された場合、即ち、要求された論理ブロックのデータの読み出しを完了した場合、ステップＳ１０７に進み、ＲＡＭ６７の送信バッファに記憶されていたデータが、上述したようにしてＲ／Ｗ１に送信され、読み出し処理を終了する。
【０２２９】
次に、図２２のフローチャートは、図２１のステップＳ１０３の処理のより詳細を示している。
【０２３０】
この場合、まず最初に、ステップＳ１１１において、シーケンサ９１は、論理ブロック番号Ｂｌが、％００Ｈ以上％ＤＦＨ以下の範囲の値であるかどうかを判定する。
【０２３１】
ここで、ＥＥＰＲＯＭ６６では、論理ブロック番号として、例えば、％００Ｈ乃至％ＤＦＨの２２４個（データブロックと同一の数）が用意されており、ステップＳ１１１の判定処理は、論理ブロック番号Ｂｌが、使用し得る値のものかを確認するために行われる。
【０２３２】
ステップＳ１１１において、論理ブロック番号Ｂｌが、％００Ｈ以上％ＤＦＨ以下の範囲の値でないと判定された場合、ステップＳ１１２に進み、所定のエラー処理が行われ、読み出し処理を終了する。即ち、この場合、論理ブロック番号Ｂｌが使用し得る値ではないため、その後の処理は行われない。
【０２３３】
一方、ステップＳ１１１において、論理ブロック番号Ｂｌが、％００Ｈ以上％ＤＦＨ以下の範囲の値であると判定された場合、ステップＳ１１３に進み、ＲＡＭ６７を参照することで、論理ブロック番号Ｂｌに対応する物理ブロック番号Ｂｐが認識され、リターンする。
【０２３４】
次に、図１８で説明した初期処理が行われた後、シーケンサ９１に対して、ＥＥＰＲＯＭ６６へのデータの書き込み（ＥＥＰＲＯＭ６６に記憶されたデータの更新）の要求が行われた場合の、シーケンサ９１の書き込み処理について説明する。
【０２３５】
なお、ここでは、データの書き込み要求とともに、そのデータおよびそのデータを書き込む論理ブロックの論理ブロック番号も、シーケンサ９１に供給されるものとする。さらに、ＲＡＭ６７には、上述した領域の他に、シーケンサ９１で受信された、書き込むデータを記憶する受信バッファの領域も確保されており、その受信バッファに、書き込むデータが記憶されるものとする。
【０２３６】
この場合、図２３のフローチャートに示すように、まず最初に、ステップＳ１２１において、シーケンサ９１は、書き込むデータのブロック数を変数ｎにセットするとともに、そのブロック数をカウントするための変数ｉに、初期値としての、例えば１をセットする。ここで、シーケンサ９１では、上述したように、そこに供給される論理ブロック番号の数から、書き込むデータのブロック数ｎが認識されるようになされている。
【０２３７】
その後、シーケンサ９１は、ステップＳ１２２において、変数Ｂｌに、ｉ番目の論理ブロック（ｉ番目のデータを書き込む論理ブロック）の論理ブロック番号をセットし、ステップＳ１２３に進み、ＲＡＭ６７を参照することにより、上述したようにして、論理ブロック番号Ｂｌに対応する論理ブロックに書き込むべきデータを実際に書き込む、データ領域の更新ブロックの物理ブロック番号Ｂｒを求め、さらに、それに伴い、その更新ブロックＢｒをデータブロックとするための処理を行う。
【０２３８】
即ち、ステップＳ１２３では、図２４のフローチャートに示すように、まず最初に、ステップＳ１４１において、シーケンサ９１は、ＲＡＭ６７を参照することで、論理ブロック番号Ｂｌに対応する論理ブロックに書き込むべきデータを実際に書き込む、データ領域の更新ブロックの物理ブロック番号Ｂｒを求める。具体的には、ＲＡＭ６７に記憶された有効判定ブロックの、データ領域の更新ブロックの物理ブロック番号が記述された部分の左からｉ番目を参照し、そこに記述されている物理ブロック番号を、変数Ｂｒにセットする。
【０２３９】
そして、ステップＳ１４２に進み、シーケンサ９１は、図２１のステップＳ１０３における場合と同様に、ＲＡＭ６７を参照することで、論理ブロック番号Ｂｌに対応付けられている物理ブロック番号Ｂｐを認識する。
【０２４０】
その後、シーケンサ９１は、ステップＳ１４３において、物理ブロック番号Ｂｐを、ＲＡＭ６７の、データ領域の更新ブロックの物理ブロック番号Ｂｒが記述されていた位置に書き込み、ステップＳ１４４に進み、その物理ブロック番号Ｂｒを、ＲＡＭ６７の、論理ブロック番号Ｂｌに対応付けられていた物理ブロック番号Ｂｐが記述されていた位置に書き込み、リターンする。
【０２４１】
即ち、ステップＳ１４３およびＳ１４４では、図２５に示すように、物理ブロック番号ＢｒとＢｐとの記憶位置が交換され、これにより、データ領域の更新ブロックであった物理ブロックＢｒが、論理ブロックＢｌに対応するデータブロックとされ、論理ブロックＢｌに対応付けられていた物理ブロックＢｐがデータ領域の更新ブロックとされる。
【０２４２】
図２３に戻り、ステップＳ１２３の処理後は、ステップＳ１２４に進み、シーケンサ９１において、データ領域の更新ブロックＢｒ（正確には、データ領域の更新ブロックであったが、図２４で説明した処理によりデータブロックとされた物理ブロックＢｒ）に、受信バッファに記憶された、ｉ番目のデータが書き込まれ、ステップＳ１２５に進む。
【０２４３】
ステップＳ１２５では、シーケンサ９１は、変数ｉを１だけインクリメントし、ステップＳ１２６に進み、変数ｉがｎ以下であるかどうかを判定する。ステップＳ１２６において、変数ｉがｎ以下であると判定された場合、即ち、要求されたブロック数だけのデータを、まだ書き込んでいない場合、ステップＳ１２２に戻り、以下、上述した場合と同様の処理が行われる。また、ステップＳ１２６において、変数ｉがｎより大きいと判定された場合、即ち、要求されたブロック数のデータの書き込みを完了した場合、ステップＳ１２８に進み、シーケンサ９１は、ステップＳ１２２乃至Ｓ１２６の処理を行うことにより、ＲＡＭ６７に記憶されたポインタブロックのうち、その記憶内容が変更（更新）されたものの数を、変数ｍにセットし、その変更されたポインタブロックをカウントするための変数ｊに、初期値としての、例えば１をセットする。
【０２４４】
ここで、ＲＡＭ６７に記憶されたポインタブロックの記憶内容は、ステップＳ１２３の処理（図２４で説明した処理）により変更されるが、このようにして、ポインタブロックの記憶内容が変更された場合、そのポインタブロックが記憶されているＲＡＭ６７の領域に、その旨を示すフラグがたてられるようになされており、ステップＳ１２８では、そのフラグを参照することで、記憶内容が変更されたポインタブロックの数が認識されるようになされている。
【０２４５】
その後、ステップＳ１２９に進み、シーケンサ９１において、変更されたポインタブロックの、例えば、ＲＡＭ６７の上からｊ番目のものの物理ブロック番号が変数Ｂｎにセットされる。そして、シーケンサ９１は、ステップＳ１３０において、ＲＡＭ６７を参照することにより、本来、データを書き込むべき物理ブロックの物理ブロック番号を記憶しているポインタブロックの物理ブロック番号Ｂｎを認識し、さらに、そのポインタブロックＢｎを、ポインタ領域の更新ブロックとするための処理を行う。
【０２４６】
即ち、ステップＳ１３０では、図２６のフローチャートに示すように、まず最初に、ステップＳ１５１において、シーケンサ９１は、ＲＡＭ６７を参照することで、新たにポインタブロックとする、ポインタ領域の更新ブロックの物理ブロック番号Ｂｔを求める。具体的には、ＲＡＭ６７に記憶された有効判定ブロックの、ポインタ領域の更新ブロックの物理ブロック番号が記述された部分の左からｊ番目を参照し、そこに記述されている物理ブロック番号を、変数Ｂｔにセットする。
【０２４７】
そして、シーケンサ９１は、ステップＳ１５２において、物理ブロック番号Ｂｔを、ＲＡＭ６７の、ポインタブロックの物理ブロック番号Ｂｎが記述されていた位置に書き込み、ステップＳ１５３に進み、物理ブロック番号Ｂｎを、ＲＡＭ６７の、ポインタ領域の更新ブロックの物理ブロック番号Ｂｔが記述されていた位置に書き込み、リターンする。
【０２４８】
即ち、ステップＳ１５２およびＳ１５３では、図２７に示すように、物理ブロック番号ＢｎとＢｔとの記憶位置が交換され、これにより、ポインタ領域の更新ブロックであった物理ブロックＢｔがポインタブロックとされ、ポインタブロックであった物理ブロックＢｎが、ポインタ領域の更新ブロックとされる。
【０２４９】
再び、図２３に戻り、ステップＳ１３０の処理後は、ステップＳ１３１に進み、シーケンサ９１は、ＥＥＰＲＯＭ６６に記憶されている、ポインタ領域の更新ブロックＢｔに、ＲＡＭ６７の更新されたポインタブロックのうちの、上からｊ番目のものをコピーし、ステップＳ１３２に進む。ステップＳ１３２では、シーケンサ９１は、変数ｊを１だけインクリメントし、ステップＳ１３３に進み、変数ｊがｍ以下であるかどうかを判定する。ステップＳ１３３において、変数ｊがｍ以下であると判定された場合、即ち、変更されたポインタブロックすべてについての処理が、まだ終了していない場合、ステップＳ１２９に戻り、以下、上述した場合と同様の処理が行われる。また、また、ステップＳ１３３において、変数ｊがｍより大きいと判定された場合、即ち、変更されたポインタブロックすべてについての処理が終了した場合、ステップＳ１３４に進み、シーケンサ９１は、ＲＡＭ６７に記憶されている有効判定ブロックの最新情報としての、そのデータ部の１バイト目を１だけインクリメントする。
【０２５０】
なお、本実施の形態では、上述したように、最新情報として、０，１，２の３値が順次用いられるようになされており、前回の最新情報のインクリメントの結果得られた値が２である場合には、ステップＳ１３４では、最新情報は０とされるようになされている。
【０２５１】
ステップＳ１３４の処理後は、ステップＳ１３５に進み、シーケンサ９１は、ＲＡＭ６７が記憶している有効判定ブロックのパリティ部に書き込むべきＲＳ符号をパリティ演算部９３に演算させ、その有効判定ブロックに書き込み、ステップＳ１３６に進む。ステップＳ１３６では、シーケンサ９１は、ＲＡＭ６７が記憶している有効判定ブロックを、図２８に示すように、ＥＥＰＲＯＭ６６に記憶されている、初期処理（図１８）のステップＳ８１で選択しなかった方の有効判定ブロックの位置に上書きし、ステップＳ１３７に進む。ステップＳ１３７では、シーケンサ９１において、データの書き込みが正常に終了したことを示す書き込み終了情報を、Ｒ／Ｗ１に送信するための制御が行われ、書き込み処理を終了する。
【０２５２】
以上のように、データ領域への書き込みが終了し、さらに、データ領域を構成する物理ブロックへのポインタを記憶するポインタ領域への書き込みが終了してから、ポインタ領域を構成する物理ブロックへのポインタを記憶する有効判定ブロック（第１または第２の領域）の記憶内容を更新するようにしたので、１以上の物理ブロックにおける物理的なメモリコラプションに対処することが可能となる。即ち、データ領域を構成する１の物理ブロックのメモリコラプションに対処するのと同時に、複数の物理ブロックのメモリコラプションにも対処することが可能となる。
【０２５３】
また、上述したことから、有効判定ブロックと、ポインタ領域とに記憶される情報は、データ領域における論理ブロック番号を物理ブロック番号に変換する、いわば変換表の役割を果たすから、有効判定ブロックや、ポインタ領域の書き込みの最中に障害が発生すると、論理的なメモリコラプションが生じるが、そのような論理的なメモリコラプションにも対処することが可能となる。
【０２５４】
その結果、複数の関連性のあるデータの書き込みの最中に障害が発生し、メモリコラプションが生じても、それらの複数のデータの整合性を維持するという、メモリコラプションに対する効果的な対処が可能となる。
【０２５５】
以上、本発明を非接触カードシステムに適用した場合について説明したが、本発明は、その他、メモリその他の記憶手段に、データを書き込むあらゆる装置に適用可能である。但し、本発明は、例えば、上述の非接触カードシステムや、また、接触型であっても、ユーザがＩＣカードの抜き差しを自由に行うことができるシステムなどの、いわば、データの送受信が不安定な状態で行われるシステムについて、特に有用である。
【０２５６】
なお、本実施の形態では、有効判定ブロックまたはポインタ領域に、ポインタ領域またはデータ領域の、いわば空き領域としての、ポインタ領域の更新ブロックの物理ブロック番号、またはデータ領域の更新ブロックの物理ブロック番号をそれぞれ記憶させるようにしたが、これらの更新ブロックの物理ブロック番号は、必ずしも記憶させる必要はない。但し、更新ブロックの物理ブロック番号を記憶させておかない場合には、データの書き込みの際に、更新ブロックとなる物理ブロックを、ＥＥＰＲＯＭ６６の記憶内容をサーチすることにより検出する必要があるため、処理の高速化などの観点からは、更新ブロックの物理ブロック番号を記憶させておくようにするのが望ましい。
【０２５７】
また、本実施の形態では、ＥＥＰＲＯＭ６６上の所定の位置に、有効判定ブロックを記憶させる領域、ポインタ領域、およびデータ領域を割り当てるようにしたが、これらの領域を割り当てる位置は、特に限定されるものではない。さらに、これらの領域は、ＥＥＰＲＯＭ６６上に連続した範囲の領域として確保する必要もない。即ち、有効判定ブロックを記憶させる領域、ポインタ領域、またはデータ領域それぞれは、ＥＥＰＲＯＭ６６上の不連続な位置に確保することが可能である。
【０２５８】
さらに、本実施の形態では、ＥＥＰＲＯＭ６６に、前回の記憶内容のみを保持しておくようにしたが、その他、例えば、前回と前々回の記憶内容を保持しておくようにすることなども可能である。但し、この場合、より多くの記憶容量が必要となる。
【０２５９】
【発明の効果】
以上のように、本発明によれば、メモリコラプションにより１のブロックに記憶されていたデータが破壊されることを防止することができる。
【０２６０】
また、本発明によれば、メモリコラプションによりＩＣカードが最悪の状態となった場合でも、使用不可にならないようにすることができる。
【図面の簡単な説明】
【図１】本発明を適用した非接触カードシステムの一実施の形態の構成例を示すブロック図である。
【図２】図１のリーダ／ライタ１の構成例を示すブロック図である。
【図３】図１のＩＣカード２の構成例を示すブロック図である。
【図４】本発明の基本原理を説明するための図である。
【図５】図４に示す構成のメモリに対する読み出し処理を説明するためのフローチャートである。
【図６】図４に示す構成のメモリに対する書き込み処理を説明するためのフローチャートである。
【図７】シングルポインタ方式が適用されるメモリの構成例を示す図である。
【図８】シングルポインタ方式が適用されるメモリの構成例を示す図である。
【図９】シングルポインタ方式による読み出し処理を説明するためのフローチャートである。
【図１０】シングルポインタ方式による書き込み処理を説明するためのフローチャートである。
【図１１】ダブルポインタ方式が適用されるメモリの構成例を示す図である。
【図１２】ダブルポインタ方式が適用されるメモリの構成例を示す図である。
【図１３】ダブルポインタ方式による読み出し処理を説明するためのフローチャートである。
【図１４】ダブルポインタ方式による書き込み処理を説明するためのフローチャートである。
【図１５】ダブルポインタ方式によりデータの読み書きを行う場合の、図３のＥＥＰＲＯＭ６６の構成例を示す図である。
【図１６】有効判定ブロックとなる物理ブロックの構成例を示す図である。
【図１７】ポインタ領域を構成する物理ブロックの構成例を示す図である。
【図１８】ＥＥＰＲＯＭ６６に対する読み書き処理を行う前に行われる初期処理を説明するためのフローチャートである。
【図１９】ＲＡＭ６７の記憶内容を示す図である。
【図２０】図１８のステップＳ８１の処理をより詳細を説明するためのフローチャートである。
【図２１】ＥＥＰＲＯＭ６６に対する読み出し処理を説明するためのフローチャートである。
【図２２】図２１のステップＳ１０３の処理のより詳細を説明するためのフローチャートである。
【図２３】ＥＥＰＲＯＭ６６に対する書き込み処理を説明するためのフローチャートである。
【図２４】図２３のステップＳ１２３の処理のより詳細を説明するためのフローチャートである。
【図２５】図２４のステップＳ１４３およびＳ１４４の処理を説明するための図である。
【図２６】図２３のステップＳ１３０の処理のより詳細を説明するためのフローチャートである。
【図２７】図２６のステップＳ１５２およびＳ１５３の処理を説明するための図である。
【図２８】図２３のステップＳ１３５の処理を説明するための図である。
【符号の説明】
１  リーダ／ライタ，  ２  ＩＣカード，  ３  コントローラ，  ２１  ＩＣ，  ２３  変調回路，  ２５  復調回路，  ２７  アンテナ，  ５１  ＩＣ，  ５２  コンデンサ，  ５３  アンテナ，  ６１  ＲＦインタフェース部，  ６２ＢＰＳＫ復調回路，  ６３  ＰＬＬ部，  ６４  演算部，  ６５  ＲＯＭ，  ６６  ＥＥＰＲＯＭ，  ６７  ＲＡＭ，  ６８  ＢＰＳＫ変調回路，  ８１  ＡＳＫ復調部，  ８２  電圧レギュレータ，  ８３  発振回路，  ８４  ＡＳＫ変調部，  ９１  シーケンサ，  ９２  暗号／復号部，  ９３  パリティ演算部
【図１】
0003702923.tif 000002
【図２】
0003702923.tif 000003
【図３】
0003702923.tif 000004
【図４】
0003702923.tif 000005
【図５】
0003702923.tif 000006
【図６】
0003702923.tif 000007
【図７】
0003702923.tif 000008
【図８】
0003702923.tif 000009
【図９】
0003702923.tif 000010
【図１０】
0003702923.tif 000011
【図１１】
0003702923.tif 000012
【図１２】
0003702923.tif 000013
【図１３】
0003702923.tif 000014
【図１４】
0003702923.tif 000015
【図１５】
0003702923.tif 000016
【図１６】
0003702923.tif 000017
【図１７】
0003702923.tif 000018
【図１８】
0003702923.tif 000019
【図１９】
0003702923.tif 000020
【図２０】
0003702923.tif 000021
【図２１】
0003702923.tif 000022
【図２２】
0003702923.tif 000023
【図２３】
0003702923.tif 000024
【図２４】
0003702923.tif 000025
【図２５】
0003702923.tif 000026
【図２６】
0003702923.tif 000027
【図２７】
0003702923.tif 000028
【図２８】
0003702923.tif 000029