(57)【要約】【課題】フラッシュメモリにおける遅延破壊によるデータの破損に対応することが可能なＩＣカード、データ読み書き方法、及びデータ読み書きプログラムを提供する。【解決手段】ＣＰＵ１１は、ページリングに含まれる各ページからデータをＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データに含まれる誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれるフラグを用いてページリングＲに含まれる各ページの中で書き込みが最も新しいページと最も古いページを検索して特定してから、特定した最も新しいページからデータをＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データを更新し、更新したデータを上記特定した最も古いページに書き込む。【選択図】図３
2014102792.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードであって、
前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、
前記コントローラは、
前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定手段と、
前記特定手段により特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定手段により特定された前記最も古い前記ページの前記格納領域に書き込む制御手段と、
を備えることを特徴とするＩＣカード。
【請求項２】
前記コントローラは、前記データに誤り検出された場合、誤りが検出された前記データが格納されていたページより書き込みが新しいページの前記格納領域からデータを読み出して、前記誤りが検出されたデータを前記揮発性メモリ上で上書きし、当該上書きしたデータを、前記誤りが検出された前記データが格納されていた前記ページの前記格納領域に書き込むことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードにおけるデータ読み書き方法であって、
前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、
前記データ読み書き方法は、
前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定ステップと、
前記特定ステップにより特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定ステップにより特定された前記最も古い前記ページの前記格納領域に書き込むステップと、
を含むことを特徴とするデータ読み書き方法。
【請求項４】
揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードにおける前記コントローラにより実行されるデータ読み書きプログラムであって、
前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、
前記データ読み書きプログラムは、前記コントローラを、
前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定手段、及び
前記特定手段により特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定手段により特定された前記最も古い前記ページの前記格納領域に書き込む制御手段として機能させることを特徴とするデータ読み書きプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページを複数含んで構成されるページ群を１単位としてデータの読み書きが行われるフラッシュメモリにデータの読み書きを行うＩＣカードの技術に関する。
【背景技術】
【０００２】
携帯電話機をはじめとする携帯端末に挿入されるＳＩＭカードでは、電池が不足すると、ＳＩＭカードへの電圧供給も途絶えることとなる。この現象を断電と定義する。ファイル書き込み中に断電が発生すると、書き込みが失敗し、ファイルの値が壊れる現象が起こる。このような現象の対策について、従来から、書き込み保証が行われてきた。書き込み保証とは一般に、書き込み処理時にバックアップをとっておくことで、断電が発生した際にも、データ更新前、あるいはデータ更新後の何れかに値を遷移させることにより、データ書き込みの一貫性を守る機能のことである。
【０００３】
近年、ＩＣカードに搭載されるＩＣチップでは、フラッシュメモリが採用されるようになってきた。そのため、従来の不揮発性メモリであるＥＥＰＲＯＭとは異なり、書き込み処理のロジックが異なることとなる。フラッシュメモリでは、保持した値を書き換える際、ページ単位（読み書きを行う最小単位であり、例えば１２８バイト、２５６バイト、または５１２バイト）の消去処理(0→1あるいは1→0)と、１バイト書き込み処理(1→0あるいは0→1)が発生する。この二つの処理は、供給される電圧によって実現することになる。
【０００４】
ＥＥＰＲＯＭとフラッシュメモリの特性が異なることにより、断電時のデータの破損現象も、従来のＥＥＰＲＯＭとは異なることが知られている。データの破損現象の差異として、ＥＥＰＲＯＭでは書き込み中にアクセスしたアドレスの範囲のみ壊れるのに対して、フラッシュメモリでは、ページ単位に電圧がかかるためページ単位に値が壊れることが知られている。フラッシュメモリにおけるデータの破損を検知（つまり、データの誤りを検出）するために、ページ内に例えばＣＲＣ（Cyclic Redundancy Check, CRC）を保持しておくことにより、破損を検知し、バックアップの値によって修復することが可能である。従来の技術においても、バックアップを取り、書き込み保証を実現する技術は数多く提案されている（例えば特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−３１８８３６号公報
【特許文献２】特開２００４−０６２５０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、フラッシュメモリに格納された値の書き換え処理の途中で断電が発生すると、当該値は０または１のどちらかの領域に留まるかで値が決定するが、０または１の領域の境界付近で断電が発生した場合、供給電圧が中途半端なため、フラッシュメモリ上に浅く書き込まれることがある。このとき、断電直後は、フラッシュメモリ上の格納値は書き込み前の正常な値となっているが、時間経過とともに値が壊れる現象が発生することがある。この現象を遅延破壊と定義する。従来技術のようにデータの破損を単純にＣＲＣやチェックコードといった手段で検知する方法では、上記遅延破壊によるデータの破損を検知することが困難である。
【０００７】
そこで、本発明は、フラッシュメモリにおける遅延破壊によるデータの破損に対応することが可能なＩＣカード、データ読み書き方法、及びデータ読み書きプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードであって、前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、前記コントローラは、前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定手段と、前記特定手段により特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定手段により特定された前記最も古い前記ページの前記格納領域に書き込む制御手段と、を備えることを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載のＩＣカードにおいて、前記コントローラは、前記データに誤り検出された場合、誤りが検出された前記データが格納されていたページより書き込みが新しいページの前記格納領域からデータを読み出して、前記誤りが検出されたデータを前記揮発性メモリ上で上書きし、当該上書きしたデータを、前記誤りが検出された前記データが格納されていた前記ページの前記格納領域に書き込むことを特徴とする。
【００１０】
請求項３に記載の発明は、揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードにおけるデータ読み書き方法であって、前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、前記データ読み書き方法は、前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定ステップと、前記特定ステップにより特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定ステップにより特定された前記最も古い前記ページの前記格納領域に書き込むステップと、を含むことを特徴とする。
【００１１】
請求項４に記載の発明は、揮発性メモリと、データの読み書きが行われる最小単位であるページを複数含んで構成されるページ群を１単位として前記データの読み書きが行われるフラッシュメモリと、前記揮発性メモリ及び前記フラッシュメモリに対する前記データの読み書きを行うコントローラと、を備えるＩＣカードにおける前記コントローラにより実行されるデータ読み書きプログラムであって、前記ページ群に含まれる各ページは、値を格納するための値格納領域と、前記値格納領域への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域とを有し、前記データ読み書きプログラムは、前記コントローラを、前記ページ群に含まれる各ページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれる前記フラグを用いて前記ページ群に含まれる各ページの中で書き込みが最も新しいページと最も古いページを特定する特定手段、及び前記特定手段により特定された前記最も新しいページの前記格納領域からデータを前記揮発性メモリに読み出し、当該揮発性メモリ上で当該データに含まれる前記値、前記フラグ、及び前記誤り検出符号を更新し、更新した前記値、前記フラグ、及び前記誤り検出符号を含むデータを、前記特定手段により特定された前記最も古い前記ページの前記格納領域に書き込む制御手段として機能させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、フラッシュメモリにおける遅延破壊によるデータの破損に対応することができる。
【図面の簡単な説明】
【００１３】
【図１】（Ａ）は、ＩＣカード１の概要構成例を示す図であり、（Ｂ）は、ページリングの構成例を示す図であり、（Ｃ）は、ページ内のメモリ構成例を示す図である。
【図２】フラグを使って実現される順番管理の一例を示す概念図である。
【図３】ＣＰＵ１１により実行される読み書き処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１５】
先ず、図１を参照して、本実施形態に係るＩＣカードについて説明する。図１（Ａ）は、ＩＣカード１の概要構成例を示す図であり、図１（Ｂ）は、ページリングの構成例を示す図であり、図１（Ｃ）は、ページ内のメモリ構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレージットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれる。
【００１６】
図１（Ａ）に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。
【００１７】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、プログラムにしたがって、ＲＡＭ１２及びフラッシュメモリ１３に対するデータの読み書き処理を行う。ＲＡＭ１２は、データを一時的に記憶する揮発性メモリである。Ｉ／Ｏ回路１４は、図示しないリーダライタ装置等とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子はリーダライタ装置とのデータ通信を行う端子である。
【００１８】
フラッシュメモリ１３は、プログラムやファイルのデータを格納する不揮発性メモリである。ＣＰＵ１１からフラッシュメモリ１３へのアクセスは、データの読み書きが行われる最小単位であるページ単位で行われるように構成されている。また、フラッシュメモリ１３には、ページを複数含んで構成されるページ群を１単位としてデータの読み書きが行われる。このページ群は、例えば、図１（Ｂ）に示すように、３つのページを連ねたページリング（ページ群の一例）Ｒとして構成される。なお、図１（Ｂ）に示す例では、３つのページＰ１〜Ｐ３を連ねたページリングＲを示すが、２つのページを連ねたページリングであってもよいし、４つ以上のページを連ねたページリングであってもよい。また、ページリングＲは、ページＰ１〜Ｐ３を物理構造的に連ねて構成されてもよいし、ページＰ１〜Ｐ３が管理上、論理構造的に連ねていれば物理構造的には連ねていなくてもよい。
【００１９】
ページリングＲに含まれる各ページＰ１〜Ｐ３は、図１（Ｃ）に示すように、値を格納するための値格納領域５２と、値格納領域５２への書き込みの順番の決定に用いられるフラグを格納するためのフラグ格納領域５１と、データの誤り検出に用いられる誤り検出符号を格納するための誤り検出符号格納領域５３とを有する。ここで、値の例としては、例えば逐次更新される日付やカウント値等が挙げられる。誤り検出符号の例としては、ＣＲＣ、チェックコード、チェックサム等が挙げられる。ページリングＲは、上記フラグによって書き込みの順番が決定される。そして、最も順番が古いページに書き込みが発生し、書き込みが発生したページは最も新しいページとなる。値が読み出される際には、最も新しいページが参照される。つまり、ページリングＲでデータの読み書きが実行される際に、書き込みが発生するのは最も古いページであり、読み込みが発生するのは最も新しいページであるという特性がある。そのため、ページリングＲに対して書き込みが発生した際に断電によって破損するのは最も古いページである。この特性によって、遅延破壊の現象が発生し、誤り検出符号で検出（検知）できなかったとしても、読み出されるデータは遅延破壊の影響を受けないようにすることができる。
【００２０】
図２は、フラグを使って実現される順番管理の一例を示す概念図である（図中矢印で示されるページが、書き込みが発生するページ）。図２に示す例では、ページリングＲの各ページで管理されるフラグには、２値（“５Ａ”と“Ａ５”）が使用されている。対象ページへの書き込み時、フラグの値が反転（“５Ａ”→“Ａ５”または“Ａ５”→“５Ａ”）されることでページの順番が管理される。２値の境界値が最も新しいページと最も古いページの境界値となる。また、フラグの値が同一の場合、図２中、“Low Address”のページが最も古いページであり、“High Address”のページが最も新しいページである。
【００２１】
ＣＰＵ１１は、ページリングでのデータの読み書き処理において、先ずはページリングをチェックし破損しているページがあれば当該ページの修復（ページリングのチェック及び修復）を行い、その次に、上記フラグを用いて最も新しいページと最も古いページを検索し、当該検索により特定した最も新しいページからデータをＲＡＭ１２に読み出して更新した後、上記検索により特定した最も古いページに更新されたデータを書き込む。ところで、上述した遅延破壊の現象において問題の起因となる浅い書き込みは、電圧をかけ直せば上書きされる。よって、遅延破壊で破損される可能性のあるページのデータは、上記読み書き処理において破損が発生しなければ、次回の書き込み時に上書きされる。一方、次回の読み書き処理までに遅延破壊によりページが破損していれば、ページリングのチェックによって破損が検出され、例えば２番目に古いデータで、書き込みが発生した最も古いページが修復されることになる。しかし、ページリングのチェックによりページが破損していないことを確認できたとしても、当該チェック後に、遅延破壊によりページが破損する場合が想定される。もし、当該チェック後、遅延破壊によって、最も新しいページと最も古いページの検索中（フラグのチェック中）にページ破損が発生すると、ページリングの順番管理を正常に行えなくなる。
【００２２】
そこで、本実施形態において、ＣＰＵ１１は、ページリングに含まれる各ページの格納領域５１〜５３からデータ（つまり、値、フラグ、及び誤り検出符号）をＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データに含まれる誤り検出符号を用いて当該データの誤り検出（破損検出）を行い、誤りが検出されなかった当該データに含まれるフラグを用いてページリングＲに含まれる各ページの中で書き込みが最も新しいページと最も古いページを検索して特定する（本発明の特定手段の一例）。これにより、リングページＲの順番を保証することができる。これは、フラッシュメモリ１３からＲＡＭ１２にコピーされ、誤り検出符号で破損されていないことが確認されたデータは、少なくともＲＡＭ１２上にあるうちは破損しないためである。
【００２３】
そして、ＣＰＵ１１は、上記ＲＡＭ１２上のフラグを用いて特定した最も新しいページの格納領域５１〜５３からデータをＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データに含まれる値、フラグ、及び誤り検出符号を更新し、更新した値、フラグ、及び誤り検出符号を含むデータを、上記ＲＡＭ１２上のフラグを用いて特定した最も古いページの格納領域５１〜５３に書き込む（本発明の制御手段の一例）。
【００２４】
次に、図３を参照して、ページリングＲでのデータの読み書き処理の詳細を説明する。図３は、ＣＰＵ１１により実行される読み書き処理を示すフローチャートである。
【００２５】
図３に示す処理は、ＣＰＵ１１が例えばリーダライタ装置からＩ／Ｏ回路１４を介して、特定のページリングに対する書き込みコマンドを受信した場合に開始される。図３に示す処理が開始されると、ＣＰＵ１１は、対象のページリングに含まれるページ数分（例えば、ページリングＲにおけるページＰ１〜Ｐ３全て）の検索処理が実行されたか否かを判定する（ステップＳ１）。この検索処理（ステップＳ２〜Ｓ７の処理）は、例えば、ＣＰＵ１１における検索処理部（検索処理プログラムに基づくモジュール）により実行される。そして、対象のページリングに含まれるページ数分の検索処理が実行されていないと判定された場合（ステップＳ１：ＮＯ）、ステップＳ２へ進む。一方、対象のページリングに含まれるページ数分の検索処理が実行されたと判定された場合（ステップＳ１：ＹＥＳ）、ステップＳ７へ進む。
【００２６】
ステップＳ２では、ＣＰＵ１１は、ページリングＲにおける対象ページの格納領域５１〜５３からデータを読み出してＲＡＭ１２にコピーする。次いで、ＣＰＵ１１は、ＲＡＭ１２にコピーされたデータ（ＲＡＭ１２上のデータ）に含まれる誤り検出符号を用いて当該データに誤りがあるか否かを判定する（ステップＳ３）。例えば、誤り検出符号としてＣＲＣを用いる場合、ＲＡＭ１２上のデータを入力値として所定の関数に代入することにより得られた固定長の値と、ＲＡＭ１２上のデータに含まれるＣＲＣとが一致していればデータに誤りがないと判定され、一致していなければデータに誤りがあると判定（つまり、誤りの検出）される。そして、ＲＡＭ１２上のデータに誤りがないと判定された場合（ステップＳ３：ＮＯ）、ステップＳ４へ進む。一方、ＲＡＭ１２上のデータに誤りがあると判定された場合（ステップＳ３：ＹＥＳ）、ステップＳ５へ進む。
【００２７】
ステップＳ４では、ＣＰＵ１１は、ＲＡＭ１２上のデータからフラグを取得し、当該取得したフラグを、例えばＲＡＭ１２に予め用意されたバッファ（ページ数×フラグの容量分）に格納し、ステップＳ１に戻る。
【００２８】
ステップＳ５では、ＣＰＵ１１は、ＲＡＭ１２上のデータを、フラッシュメモリ１３上の例えば次ページのデータにより上書きする。つまり、ＣＰＵ１１は、ＲＡＭ１２上で誤りが検出されたデータが格納されていた破損ページより書き込みが新しいページの格納領域５１〜５３からデータを読み出して、上記誤りが検出されたデータをＲＡＭ１２上で上書きする。例えば、破損ページはページリングの管理で最も古いページであるため、ＲＡＭ１２上のデータが例えば２番目に古いページのデータで上書きされる。これにより、破損ページがあったとしても、そのデータを迅速に修復することができる。次いで、ＣＰＵ１１は、ＲＡＭ１２上で上書きされたデータをフラッシュメモリ１３上の対象ページに反映し（ステップＳ６）、ステップＳ４へ進む。つまり、ＣＰＵ１１は、データに誤りが検出された場合、誤りが検出されたデータが格納されていた破損ページより書き込みが新しいページの格納領域５１〜５３からデータを読み出して、誤りが検出されたデータをＲＡＭ１２上で上書きし、当該上書きしたデータを、誤りが検出されたデータが格納されていた破損ページの格納領域５１〜５３に書き込む。
【００２９】
ステップＳ７では、ＣＰＵ１１は、バッファに格納したフラグ（つまり、誤りが検出されなかった当該データに含まれるフラグ）を検索してフラグの２値の境界を探すことでページの書き込みの順番を決定し、書き込みが最も新しいページと最も古いページを特定する。こうして、上記検索処理が終了すると、続いて、ステップＳ８以降のデータ更新処理が開始される。このデータ更新処理は、例えば、ＣＰＵ１１におけるデータ更新処理部（データ更新処理プログラムに基づくモジュール）により実行される。なお、ステップＳ７で特定された最も新しいページへのアドレス及び特定された最も古いページへのアドレスは、検索処理部からデータ更新処理部へ通知される。
【００３０】
ステップＳ８では、ＣＰＵ１１は、ステップＳ７で特定された最も新しいページへのアドレスにしたがって、当該最も新しいページの格納領域５１〜５３からデータを読み出してＲＡＭ１２にコピーする。次いで、ＣＰＵ１１は、上記書き込みコマンドにより指定された値（書き換えたい値）によりＲＡＭ１２にコピーされたデータに含まれる値を書き換えて更新（反映）する（ステップＳ９）。次いで、ＣＰＵ１１は、ＲＡＭ１２にコピーされたデータに含まれるフラグを反転させ、誤り検出符号を再計算する（ステップＳ１０）。これにより、フラグ及び誤り検出符号も更新される。そして、ＣＰＵ１１は、更新した値、フラグ、及び誤り検出符号を含むデータを、ステップＳ７で特定された最も新しいページへのアドレスにしたがって、当該最も古いページの格納領域５１〜５３に書き込み（ステップＳ１１）、上記処理を終了する。
【００３１】
以上説明したように、上記実施形態によれば、ＣＰＵ１１は、ページリングに含まれる各ページからデータをＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データに含まれる誤り検出符号を用いて当該データの誤り検出を行い、誤りが検出されなかった当該データに含まれるフラグを用いてページリングＲに含まれる各ページの中で書き込みが最も新しいページと最も古いページを検索して特定してから、特定した最も新しいページからデータをＲＡＭ１２に読み出し、当該ＲＡＭ１２上で当該データを更新し、更新したデータを上記特定した最も古いページに書き込むように構成したので、ページリングの破損チェック後に遅延破壊によって最も新しいページと最も古いページの検索中にページ破損が発生するという事態を防止することができ、リングページの順番を保証することができる。よって、フラッシュメモリ１３における遅延破壊によるデータの破損に対応することができる。
【符号の説明】
【００３２】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
2014102792.tif 000003
【図２】
2014102792.tif 000004
【図３】
2014102792.tif 000005