(57)【要約】【課題】フラッシュメモリの見た目上の耐久性を向上させることが可能なＩＣカード、データ消去処理方法、及びデータ消去処理プログラムを提供する。【解決手段】ＩＣカードは、複数のデータ格納領域のうち使用済でないデータ格納領域を管理情報に基づき特定し、特定したデータ格納領域へのブロックデータの書き込み処理を行う。そして、ＩＣカードは、管理情報に基づいて全てのデータ格納領域が使用済になったかを判定し、全てのデータ格納領域が使用済になったと判定した場合、全てのデータ格納領域におけるブロックデータの消去処理を行う。【選択図】図２
2014115959.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードであって、
前記フラッシュメモリには、複数のデータ格納領域と、各データ格納領域が前記データの書き込みにより使用済である否かを管理するための管理情報を格納する管理情報格納領域と、を有するページの領域が設けられており、
前記コントローラは、
前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行う書込手段と、
前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定する判定手段と、
前記判定手段により全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行う消去手段と、
を備えることを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
前記コントローラは、１ファイルを複数ページで管理するものであって、
前記フラッシュメモリには、複数の前記ページの領域が設けられており、
前記書込手段は、第１の前記ページにおける全てのデータ格納領域が使用済になったと判定された場合、第２の前記ページにおける前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行い、
前記消去手段は、第１の前記ページにおける全てのデータ格納領域が使用済になり、且つ第２の前記ページにおける前記複数のデータ格納領域のうち何れかのデータ格納領域へ前記データが書き込まれた場合に、第１の前記ページにおける全てのデータ格納領域における前記データの消去処理を行うことを特徴とするＩＣカード。
【請求項３】
フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードにおけるデータ消去処理方法であって、
前記フラッシュメモリには、複数のデータ格納領域と、各データ格納領域が前記データの書き込みにより使用済である否かを管理するための管理情報を格納する管理情報格納領域と、を有するページの領域が設けられており、
前記データ消去処理方法は、
前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行うステップと、
前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定するステップと、
前記全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行うステップと、
を含むことを特徴とするデータ消去処理方法。
【請求項４】
フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードにおける前記コントローラにより実行されるデータ消去処理プログラムであって、
前記データ消去処理プログラムは、前記コントローラを、
前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行う書込手段、
前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定する判定手段、及び
前記判定手段により全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行う消去手段として機能させることを特徴とするデータ消去処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリと、フラッシュメモリに所定サイズのページ単位でファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードの技術に関する。
【背景技術】
【０００２】
近年、安価で大容量なフラッシュメモリが普及してきた。ＩＣカードに採用されるチップもまたフラッシュメモリが採用されるようになってきた。フラッシュメモリの記憶素子は、その動作原理上において、書き換え処理の度に電子が絶縁体となる酸化膜を貫通し酸化膜が劣化していくため、寿命が存在する。一般に、フラッシュメモリを提供しているメーカの書き換え保障回数は、多くて１０万回程度である。
【０００３】
一方、ＩＣカードでは、数年以上は使われる用途上、１０万回程度の耐久性では不十分な場合が多い。パソコン上のファイルシステム等では、上記のハードウェアの制限に対して、ソフトウェアによって書き換えを分散させる技術は多くある。ＩＣカードにおいても、あるファイルを保持するのに必要な領域の倍以上の領域を確保し、順に書き換えを行うことによって、見た目上の耐久性を向上させる技術が存在する。例えば、特許文献１には、同一箇所へのアクセス集中が起こらないよう、使用記憶領域のローテーションを行う技術が開示されている。また、特許文献２には、一つのイレーズブロックに消去が集中しないフラッシュメモリのデータ書き換えを行う技術が開示されている。
【０００４】
ところで、ＩＣカードにおける、標準仕様(ISO7816, ETSI102.221等)で定められるＩＣカードに格納されるファイルは、数十バイトであることが多い。一方、フラッシュメモリのページ単位は128バイト、256バイト、512バイト等が多い。つまり、あるファイルを、メーカの書き換え保証回数（例えば、１０万回程度）耐久性を持たせようとした場合は、たとえ、数バイトの小さなファイルであろうと、ページに収まるようにアラインさせる必要がある。このときのページ内で使用してない領域のサイズは、ページサイズ（例えば、128バイト、256バイト、又は512バイト）から必要なファイルサイズを引いた余りとなる。このため、ページ内で使用してない領域のサイズが、そもそも必要なファイルサイズ以上に大きくなってしまい、メモリの保持効率が低い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１５１０９７号公報
【特許文献２】特開２００３−３１６６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１及び２で開示されたような書換え分散技術では、例えば、数十バイトのファイルの見た目上の耐久性をＮ×メーカの書き換え保証回数にするためには、１つのファイルを格納するのに必要なサイズは、ページサイズ×Ｎとなる。ここで、Ｎは、メーカの書き換え保証回数を何倍したいかを示す。一般に大きくても数百Ｋバイト〜数Ｍバイトの容量となるＩＣカード等の分野では、メモリ容量に比べて１つのファイルを格納するのに必要なサイズが大きくなるため、実現が困難である。
【０００７】
また、フラッシュメモリの記憶素子は、消去時にページ単位で寿命が減っていく特性がある。これは、フラッシュメモリでは、一般的に、データの上書き動作が行えないため、当該動作を行うためには、書き換えないデータを別に保持しておき、ページ単位でデータを消去してから書き込み処理を行う必要があることによる。つまり、フラッシュメモリが保持した値を書き換える際、ページ単位の消去処理（０→１あるいは１→０）と、１バイト書き込み処理（１→０あるいは０→１）が発生するためである。
【０００８】
本発明は、上記点に鑑みてなされたものであり、フラッシュメモリの見た目上の耐久性を向上させることが可能なＩＣカード、データ消去処理方法、及びデータ消去処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、請求項１に記載の発明は、フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードであって、前記フラッシュメモリには、複数のデータ格納領域と、各データ格納領域が前記データの書き込みにより使用済である否かを管理するための管理情報を格納する管理情報格納領域と、を有するページの領域が設けられており、前記コントローラは、前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行う書込手段と、前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定する判定手段と、前記判定手段により全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行う消去手段と、を備えることを特徴とする。
【００１０】
請求項２に記載の発明は、請求項１に記載のＩＣカードにおいて、前記コントローラは、１ファイルを複数ページで管理するものであって、前記フラッシュメモリには、複数の前記ページの領域が設けられており、前記書込手段は、第１の前記ページにおける全てのデータ格納領域が使用済になったと判定された場合、第２の前記ページにおける前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行い、前記消去手段は、第１の前記ページにおける全てのデータ格納領域が使用済になり、且つ第２の前記ページにおける前記複数のデータ格納領域のうち何れかのデータ格納領域へ前記データが書き込まれた場合に、第１の前記ページにおける全てのデータ格納領域における前記データの消去処理を行うことを特徴とする。
【００１１】
請求項３に記載の発明は、フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードにおけるデータ消去処理方法であって、前記フラッシュメモリには、複数のデータ格納領域と、各データ格納領域が前記データの書き込みにより使用済である否かを管理するための管理情報を格納する管理情報格納領域と、を有するページの領域が設けられており、前記データ消去処理方法は、前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行うステップと、前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定するステップと、前記全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行うステップと、を含むことを特徴とする。
【００１２】
請求項４に記載の発明は、フラッシュメモリと、前記フラッシュメモリに所定サイズのページ単位の消去と、１バイト単位でのファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードにおける前記コントローラにより実行されるデータ消去処理プログラムであって、前記データ消去処理プログラムは、前記コントローラを、前記複数のデータ格納領域のうち使用済でないデータ格納領域を前記管理情報に基づき特定し、特定したデータ格納領域への前記データの書き込み処理を行う書込手段、前記管理情報に基づいて全てのデータ格納領域が使用済になったかを判定する判定手段、及び前記判定手段により全てのデータ格納領域が使用済になったと判定された場合、全てのデータ格納領域における前記データの消去処理を行う消去手段として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、フラッシュメモリの見た目上の耐久性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】（Ａ）は、ＩＣカード１の概要構成例を示す図である。（Ｂ）は、フラッシュメモリのメモリ構造例を示す図である。
【図２】ブロックデータがデータ格納領域に書き込まれていく様子を示す概念図である。
【図３】１ファイルを２ページで管理する場合におけるフラッシュメモリのメモリ構造例、及びブロックデータがデータ格納領域に書き込まれていく様子を示す概念図である。
【図４】１ファイルを２ページで管理する場合におけるフラッシュメモリのメモリ構造例、及びブロックデータがデータ格納領域に書き込まれていく様子を示す概念図である。
【図５】実施例におけるＣＰＵ１の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１６】
先ず、図１を参照して、本実施形態に係るＩＣカードについて説明する。図１（Ａ）は、ＩＣカード１の概要構成例を示す図である。図１（Ｂ）は、フラッシュメモリのメモリ構造例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれるＳＩＭ（Subscriber Identity Module）カード、ＵＩＭ（User Identity Module）カードである。
【００１７】
図１に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。
【００１８】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、プログラムにしたがって、ＲＡＭ１２及びフラッシュメモリ１３に対するデータの読み書き処理を行う。なお、ＣＰＵ１１は、本発明における書込手段、判定手段、及び消去手段の一例である。ＲＡＭ１２は、データを一時的に記憶する揮発性メモリである。Ｉ／Ｏ回路１４は、図示しないリーダライタ装置等とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子はリーダライタ装置とのデータ通信を行う端子である。
【００１９】
フラッシュメモリ１３は、プログラムやファイルのデータを格納する不揮発性メモリである。基本的にフラッシュメモリ１３にはＮＯＲ型フラッシュメモリを使用することが望ましい。フラッシュメモリは記憶セルを接続する構造によりＮＡＮＤ型とＮＯＲ型とに分けられる。ＮＡＮＤ型は最小読み書き単位がページとなり、最小消去単位がブロックとなる。ブロックはページを連ねたものである。対してＮＯＲ型は最小読み書き単位が１バイトとなり、最小消去単位がページ、またはブロックとなる。ＮＡＮＤ型は安価なＵＳＢメモリ等の外部ストレージとして使われるのに対して、ＩＣカードでは一般的にＮＯＲ型が採用される。これは、ＮＯＲ型は１バイト単位の読み書きができるので、プログラム自体を書き込むことができるためである。ＣＰＵ１１は、ページ単位で消去を行い１バイト単位で読み書きを行うコントローラとしても機能する。
【００２０】
フラッシュメモリ１３には、図１（Ｂ）に示すように、１ページあたり、管理情報格納領域５１ａ〜５１ｃとデータ格納領域５２ａ〜５２ｃとを有するページの領域が設けられている。図１（Ｂ）に示す例では、３つのデータ格納領域５２ａ〜５２ｃが設けられているが、データ格納領域の数は、フラッシュメモリ１３の見た目上の耐久性を、書き換え保証回数の何倍にするかによって決定される。例えば、書き換え保証回数のＮ（例えば、３）倍にしたい場合、データ格納領域の数はＮに決定される。なお、図１（Ｂ）に示す例では、管理情報記憶領域５１ａ〜５１ｃ及びデータ格納領域５２ａ〜５２ｃが、１ページ内にそれぞれ３つ設けられている例を示すが、これに限定されるものではない。
【００２１】
管理情報記憶領域５１ａ〜５１ｃには、各データ格納領域５２ａ〜５２ｃがデータ（以下、「ブロックデータ」という）の書き込みにより使用済である否かを管理するための管理情報が格納される。ここで、「ブロックデータ」は、ページ内を論理的に区切った格納領域を意味し、ページを複数連ねた「ブロック」とは区別される。管理情報は、シーケンス番号でもよいし、フラグでもよい。図１（Ｂ）に示す例では、データ格納領域５２ａには、ブロックデータ“ＡＡＡＡ・・・”が格納されているため、データ格納領域５２ａに対応付けられた管理情報格納領域５１ａには、データ格納領域５２ａが使用済であることを示す管理情報“０１”が格納されている。一方、データ格納領域５２ｂには、初期化済を示す“ＦＦＦＦ・・・”（１６進数（ｈ）で表す）が格納されているため、データ格納領域５２ｂに対応付けられた管理情報格納領域５１ｂには、データ格納領域５２ｂが未使用であることを示す管理情報“ＦＦ”が格納されている。
【００２２】
ＣＰＵ１１は、複数のデータ格納領域のうち使用済でないデータ格納領域を管理情報に基づき特定し、特定したデータ格納領域へのブロックデータの書き込み処理を行う。そして、ＣＰＵ１１は、管理情報に基づいて全てのデータ格納領域が使用済になったかを判定し、全てのデータ格納領域が使用済になったと判定した場合、全てのデータ格納領域におけるブロックデータの消去処理を行う。
【００２３】
図２は、ブロックデータがデータ格納領域に書き込まれていく様子を示す概念図である。図２（Ａ）〜（Ｃ）に示すように、データ格納領域５２ａ〜５２ｃにはブロックデータが順次格納（ＡＡＡＡ・・・（例えば１月１日）→ＢＢＢＢ（例えば１月２日）・・・→ＣＣＣＣ・・・（例えば１月３日））されており、これに応じて管理情報格納領域５１ａ〜５１ｃには、使用済であることを示す管理情報が順次格納（０１→０２→０３）されている。そして、図２（Ｃ）に示すように全てのデータ格納領域５２ａ〜５２ｃが使用済になった場合、図２（Ｄ）に示すように全てのデータ格納領域５２ａ〜５２ｃにおけるブロックデータが消去（初期化）され、管理情報格納領域５１ａ〜５１ｃには未使用であることを示す管理情報“ＦＦ”が格納されている。このタイミングで、書き換え回数が−１なる。その後、図２（Ｅ）に示すように、再び、データ格納領域５２ａに戻って、新たなブロックデータ（ＤＤＤＤ・・・）が格納されている。このように、図２に示す例によれば、当該ページにおけるブロックデータの３回の書き換え（更新）において、１回の消去しか発生していないため、１ページの消去頻度が１／３となる。つまり、フラッシュメモリ１３の見た目上の耐久性は、書き換え保証回数（例えばメーカ保証の回数制限数）×３倍となる。
【００２４】
次に、図３〜図５を参照して、上述した構成を基に１ファイルを２ページで管理する場合の実施例について説明する。図３及び図４は、１ファイルを２ページで管理する場合におけるフラッシュメモリのメモリ構造例、及びブロックデータがデータ格納領域に書き込まれていく様子を示す概念図である。図５は、実施例におけるＣＰＵ１の処理例を示すフローチャートである。
【００２５】
図３に示す例では、フラッシュメモリ１３には、ページＡとページＢの２つのページの領域が設けられている。各ページの領域は、図３に示すように、データ格納領域６１ａ〜６１ｄと、ＣＲＣ格納領域６２ａ〜６２ｄと、管理情報格納領域６３ａ〜６３ｄと、未使用領域６４と、ページ消去フラグ格納領域６５とを含んで構成される。この構成によれば、フラッシュメモリ１３の消費が少なく、より高い書き換え耐久性を得ることができる。データ格納領域６１ａ〜６１ｄには、シーケンス番号とデータ本体により構成されるブロックデータが格納される。データ本体は、ユーザにより使用される例えば逐次更新される日付やカウント値等のユーザデータである。ブロックデータは、ユーザデータだけから構成されてもよい。図３においてデータ格納領域６１ａ〜６１ｄに格納されたシーケンス番号“ＦＦＦＦ”は初期化済を示し、シーケンス番号“００００”〜“ＦＦＦＦ”は、ブロックデータの書き込まれた順番を示す。ＣＲＣ格納領域６２ａ〜６２ｄは、ブロックデータのＣＲＣ（Cyclic Redundancy Check, CRC）値が格納される。ＣＲＣ値は、ブロックデータの誤り検出に用いられる誤り検出符号の一例である。なお、ＣＲＣ値以外の例えばチェックコードやチェックサム等を適用してもよい。管理情報格納領域６３ａ〜６３ｄには、各データ格納領域６１ａ〜６１ｄが使用済である否かを管理するための管理フラグ（管理情報の一例）が格納される。管理情報格納領域６３ａはデータ格納領域６１ａに管理上対応付けられ、管理情報格納領域６３ｂはデータ格納領域６１ｂに管理上対応付けられ、管理情報格納領域６３ｃはデータ格納領域６１ｃに管理上対応付けられ、管理情報格納領域６３ｄはデータ格納領域６１ｄに管理上対応付けられる。図３において管理情報格納領域６３ａに格納された管理フラグ“ＦＦＦＦＦＦＦＦｈ”はブロックデータの書き込み未完了（未使用）を示し、管理フラグ“００００００００ｈ”はブロックデータの書き込み完了（使用済）を示す。ページ消去フラグ格納領域６５には、ページ消去が完了したことを示すページ消去フラグが格納される。図３においてページ消去フラグ格納領域６５に格納されたページ消去フラグ“ＦＦＦＦＦＦＦＦｈ”は該当ページの消去が未完了であることを示し、ページ消去フラグ“５Ａ５Ａ５Ａ５Ａｈ”は該当ページの消去が完了したことを示す。
【００２６】
そして、図５に示す処理は、ＣＰＵ１１が例えばリーダライタ装置からＩ／Ｏ回路１４を介して、ページに対する書き込みコマンドを受信し引数をチェックして該当するプログラムを呼び出すことにより開始される。図５に示す処理が開始されると、ＣＰＵ１１は、カウンタをクリア（リセット）する（ステップＳ１）。次いで、ＣＰＵ１１は、カウンタの値が、フラッシュメモリ１３に設けられたページ数（図３に示す例では、２ページ）以上であるか否かを判定する（ステップＳ２）。カウンタの値がページ数以上でないと判定された場合（ステップＳ２：ＮＯ）、ステップＳ３へ進む。一方、カウンタの値がページ数以上であると判定された場合（ステップＳ２：ＹＥＳ）、エラー処理が行われ（ステップＳ７）、図５に示す処理が終了する。例えば、メモリの故障やメモリが磨耗しきってしまった等の理由で、復旧処理により直らなかった場合、エラー処理となる。
【００２７】
ステップＳ３では、ＣＰＵ１１は、ページ状態解析を実行する。ページ状態解析では、書き込みコマンドで書き込み指定されたアドレスに対応するページの状態を解析する。そして、ＣＰＵ１１は、ページの破損があるか否かを判定する（ステップＳ４）。例えば、ページの領域に格納されたブロックデータとＣＲＣ値に基づく誤り検出処理によりブロックデータに誤りが検出された場合、ページの破損があると判定される。ページの破損があると判定された場合（ステップＳ４：ＹＥＳ）、ステップＳ５へ進む。ページの破損がないと判定された場合（ステップＳ４：ＮＯ）、ステップＳ８へ進む。
【００２８】
ステップＳ５では、ＣＰＵ１１は、ページの復旧処理を実行する。この復旧処理では、最新データを保存し破損ページを消去するなどの処理が行われる。例えば、ＣＰＵ１１は、ページＡが破損している場合、ページＡ内のブロックデータの末尾のＣＲＣ値を使って、正常なブロックデータがあるか確認し、正常なブロックデータがあれば、ページＢに正常なブロックデータを書き込み（退避させ）、ページＡを消去する。
【００２９】
次いで、ＣＰＵ１１は、カウンタの値をインクリメントし（ステップＳ６）、ステップＳ２に戻る。つまり、ステップＳ２〜Ｓ６のループにおける処理は、ページ数分行われる。つまり、同一の処理が各ページに対して行われる。これは、ハードウェア自体が故障した場合を想定している。この処理を繰り返しているのは、復旧処理後において正しく直っているか確認するためである。
【００３０】
ステップＳ８では、ＣＰＵ１１は、書き込みデータ作成処理を実行する。書き込みデータ作成処理では、ＣＰＵ１１は、ページにおけるデータ格納領域に未だブロックデータが書き込まれていない場合、シーケンス番号“００００”及び書き込みコマンドにより指定されたデータをブロックデータとして作成する。一方、ページにおけるデータ格納領域に既にブロックデータが書き込まれて格納されている場合、ＣＰＵ１１は、最新のブロックデータが格納されているデータ格納領域（例えば、シーケンス番号が最も大きいブロックデータが格納されているデータ格納領域）からブロックデータを読み出してＲＡＭ１２に記憶する。そして、ＣＰＵ１１は、ＲＡＭ１２に読み出されたブロックデータに含まれるシーケンス番号をインクリメントし、且つＲＡＭ１２に記憶されたブロックデータに含まれるユーザデータを、上記書き込みコマンドにより指定されたデータにより書き換えて新たなブロックデータを作成（言い換えれば、ブロックデータを更新）する。更に、ＣＰＵ１１は、作成したブロックデータのＣＲＣ値を計算する。
【００３１】
次いで、ＣＰＵ１１は、書き込み位置を算出する（ステップＳ９）。これにより、ステップＳ８で作成されたブロックデータを書き込むデータ格納領域等が特定される。例えば、ページＡ及びＢのいずれのデータ格納領域にも未だブロックデータが書き込まれていない場合、ページＡにおける最初のデータ格納領域６１ａが特定される。一方、例えば、ページＡまたはＢにおけるデータ格納領域に既にブロックデータが書き込まれて格納されている場合、最新のブロックデータが読み出されたデータ格納領域の次のデータ格納領域（使用済でないデータ格納領域）が特定される。なお、このとき、ステップＳ８で作成されたブロックデータのＣＲＣ値が書き込まれるＣＲＣ格納領域が特定される。
【００３２】
次いで、ＣＰＵ１１は、データの書き込み処理を実行する（ステップＳ１０）。データの書き込み処理では、ＣＰＵ１１は、ステップＳ８で作成された、ＲＡＭ１２上のブロックデータをステップＳ９で特定されたデータ格納領域へ書き込むと共に上記計算したＣＲＣ値を、当該データ格納領域に対応付けられたＣＲＣ格納領域に書き込む。例えば、図３（Ｂ）に示すように、ページＡにおけるデータ格納領域６１ａ及びＣＲＣ格納領域６２ａにブロックデータ“００００ ０１０２０３０４・・・・ＸＸＸＸ”及びそのＣＲＣ値が書き込まれる。更に、ＣＰＵ１１は、作成されたブロックデータが書き込まれたデータ格納領域に対応付けられた管理情報格納領域にブロックデータの書き込み完了（使用済）を示す管理フラグを書き込む。例えば、図３（Ｂ）に示すように、ページＡにおける管理情報格納領域６３ａに管理フラグ“００００００００ｈ”が書き込まれる。
【００３３】
以上のように、図５に示す処理が行われる度に、ＣＰＵ１１は、ブロックデータをデータ格納領域に順次書き込み、例えば、図３（Ｃ）に示すように、ページＡ（第１のページ一例）における全てのデータ格納領域６１ａ〜６１ｄが使用済になったと判定した場合、図４（Ａ）に示すように、ページＢ（第２のページ）における複数のデータ格納領域６１ａ〜６１ｄのうち使用済でない最初のデータ格納領域６１ａを管理フラグに基づき特定し、特定したデータ格納領域６１ａへのデータの書き込み処理を行うことになる。
【００３４】
次いで、ＣＰＵ１１は、ページ消去処理を実行する（ステップＳ１１）。ページ消去処理では、例えばページＡ（第１のページの一例）における全てのデータ格納領域６１ａ〜６１ｄが使用済になり、且つページＢ（第２のページの一例）における複数のデータ格納領域６１ａ〜６１ｄのうち最初のデータ格納領域６１ａへブロックデータが書き込まれた場合に、ＣＰＵ１１は、例えばページＡにおける全てのデータ格納領域６１ａ〜６１ｄを含むページＡの領域におけるデータの消去処理を行う。この消去処理により、図４（Ｂ）に示すように、例えば初期化済を示す“ＦＦＦＦ・・・”がページＡの領域に書き込まれる。そして、図４（Ｃ）に示すように、例えばページＡにおけるページ消去フラグ格納領域６５に、ページＡの消去が完了したことを示すページ消去フラグ“５Ａ５Ａ５Ａ５Ａｈ”が書き込まれることになる。その後、例えばページＢにおけるデータ格納領域６１ｂ〜６１ｄにブロックデータが書き込まれ、ページＢ（第１のページの一例）における全てのデータ格納領域６１ａ〜６１ｄが使用済になり、且つページＡ（第２のページの一例）における複数のデータ格納領域６１ａ〜６１ｄのうち最初のデータ格納領域６１ａへブロックデータが書き込まれた場合に、ＣＰＵ１１は、ページＢにおける全てのデータ格納領域６１ａ〜６１ｄを含むページＢの領域におけるデータの消去処理を行うことになる。
【００３５】
なお、上記実施例では、１ファイルを２ページで管理する場合について説明したが、１ファイルを３ページ以上で管理するように構成してもよい。
【００３６】
以上説明したように、上記実施形態によれば、ページにおける全てのデータ格納領域が使用済になった場合に、全てのデータ格納領域におけるブロックデータの消去処理を行うように構成したので、１ページの消去頻度を低下させることができ、フラッシュメモリ１３の見た目上の耐久性を向上させることができる。
【００３７】
また、上記実施例によれば、第１のページにおける全てのデータ格納領域が使用済になり、且つ第２のページにおける複数のデータ格納領域のうち最初のデータ格納領域へブロックデータが書き込まれた場合に、第１のページの領域におけるデータの消去処理を行うように構成したので、第２のページにおけるデータ格納領域へのデータの書き込み途中で電源断が発生した場合であっても、第１のページにおけるデータ格納領域にはデータが消去されずに保持されているので、迅速に復旧処理を行うことができる。
【符号の説明】
【００３８】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
2014115959.tif 000003
【図２】
2014115959.tif 000004
【図３】
2014115959.tif 000005
【図４】
2014115959.tif 000006
【図５】
2014115959.tif 000007