(57)【特許請求の範囲】
【請求項１】
頁単位に書き込みする不揮発性メモリを有し、外部機器からのコマンドに基づいて前記不揮発性メモリへの書き込み読み出し処理が複数回行なわれるＩＣカードであって、
揮発性メモリに複数頁分の記憶領域が設けられ、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容が読み出される頁バッファと、
外部機器からのコマンド処理の実行により、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容を前記頁バッファに読み出して、前記頁バッファの記憶内容を編集する編集手段と、
前記コマンド処理が終了した際に、前記揮発性メモリ上の頁バッファの記憶内容で前記不揮発性メモリの書き込み対象頁の記憶内容を更新記憶する処理手段と、
を具備したことを特徴とするＩＣカード。
【請求項２】
頁単位に書き込みする不揮発性メモリを有し、外部機器からのコマンドに基づいて前記不揮発性メモリへの書き込み読み出し処理が複数回行なわれるＩＣカードであって、
揮発性メモリに複数頁分の記憶領域が設けられ、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容が読み出される頁バッファと、
外部機器からのコマンド処理の実行により、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容を前記頁バッファに読み出して、前記頁バッファの記憶内容を編集する編集手段と、
前記コマンド処理が終了した際に、前記揮発性メモリ上の頁バッファの記憶内容で前記不揮発性メモリの書き込み対象頁の記憶内容を更新記憶する処理手段と、
前記頁バッファと前記編集手段と前記処理手段とを有するＩＣモジュールを埋設するＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【請求項３】
前記不揮発性メモリ上のデータを読み出す場合、前記不揮発性メモリ上の読み出しデータを一旦、前記揮発性メモリの頁バッファに転送を行ない、当該頁バッファからデータの読み出しを行なうことを特徴とする請求項１または請求項２記載のＩＣカード。
【請求項４】
前記頁バッファはサイクリックに管理されており、データの書き込みを行なう際に、前記頁バッファが一杯になっていた場合、時間的に最も古い１頁が記憶されている領域の記憶データを前記不揮発性メモリに書き込み、その領域に新しい書き込み対象データの転送を行なうことを特徴とする請求項１または請求項２記載のＩＣカード。
【請求項５】
前記頁バッファはサイクリックに管理されており、データの書き込みを行なう際に、前記頁バッファが一杯になっていた場合、時間的に最も古い１頁が記憶されている領域の記憶データが書き込みにより書き換わっていないかを確認し、書き換わっていた場合、書き換わったデータを前記不揮発性メモリに書き込み、書き換わっていない場合、その領域に新しい書き込み対象データの転送を行なうことを特徴とする請求項１または請求項２記載のＩＣカード。
【請求項６】
前記頁バッファの頁ごとに、コマンド処理におけるデータの書き込み頻度を記録し、書き込みの頻度の最も低い頁から順に書き換え可能な不揮発性メモリへの反映、および、頁バッファの上書きを行なうことを特徴とする請求項１または請求項２記載のＩＣカード。
【請求項７】
前記頁バッファが一杯になった場合の処理をフラグにより選択できることを特徴とする請求項１または請求項２記載のＩＣカード。
【請求項８】
頁単位に書き込みする不揮発性メモリを有し、外部機器からのコマンドに基づいて前記不揮発性メモリへの書き込み読み出し処理が複数回行なわれるＩＣカードの処理方法であって、
揮発性メモリに複数頁分の記憶領域が設けられ、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容が読み出される頁バッファを有し、
外部機器からのコマンド処理の実行により、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容を前記頁バッファに読み出して、前記頁バッファの記憶内容を編集し、
前記コマンド処理が終了した際に、前記揮発性メモリ上の頁バッファの記憶内容で前記不揮発性メモリの書き込み対象頁の記憶内容を更新記憶する、
ことを特徴とするＩＣカードの処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、書き込み・書き換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を有し、外部からのデータ入出力を行う手段を備えたＩＣチップを内蔵した、いわゆるＩＣカードとこのＩＣカードの処理方法に関する。
【０００２】
【従来の技術】
ＩＣカードは、その使用目的・用途に応じて、必要な鍵ファイルやデータファイル等をＩＣカード内部の不揮発性メモリ上に定義し、更にそれらのファイルにデータを書き込むことによって使用可能な状態になる。
この書き込み・書き換えが可能な不揮発性メモリへの書き込みは、書き込みが必要な都度、書き込み対象エリアに対して行っていた。また、不揮発性メモリからの読み出しは、直接、不揮発性メモリから行っていた。（たとえば特許文献１参照）。
このような不揮発性メモリとしてＥＥＰＲＯＭやフラッシュメモリなどを用いているが、これらの素子は一回のデータ書き込みに数ｍＳから数百ｍＳの時間を要するという短所がある。
【０００３】
上記の技術の場合、たとえば、Ｊａｖａ（登録商標名）言語のような高級言語でカードのアプリケーションを開発すると、ユーザーがメモリのどのエリアに対して書き込みを行っているのか意識しないで済む反面、フラッシュメモリのようなページ書き込みが必要な場合、同一ページ内に対する書き込みが、書き込みの都度、発生している可能性があった。
【０００４】
従来のＩＣカードは、不揮発性メモリへのデータ書き込みがランダムに行われ、また同一アドレスデータに対する複数回書き込み（書き換え）が発生することにより不揮発性メモリへの書き込みに要する時間が長くなり処理時間が長くなるという問題点があった。
また、不揮発性メモリへの書き込み回数が多くなることにより、不揮発性メモリの寿命が短くなってしまうという問題点があった。
【０００５】
【特許文献１】
特開２００３−８５５１１号公報。
【０００６】
【発明が解決しようとする課題】
この発明は、書き換え可能な不揮発性メモリを有し、この不揮発性メモリに記憶されているアプリケーションにより処理を行うＩＣカードにおいて、不揮発性メモリへの書き込み回数を減らすことにより、処理時間を短縮化でき、かつ、不揮発性メモリの寿命を長くすることができるＩＣカードとＩＣカードの処理方法を提供することを目的としている。
【０００７】
【課題を解決するための手段】
この発明のＩＣカードは、頁単位に書き込みする不揮発性メモリを有し、外部機器からのコマンドに基づいて前記不揮発性メモリへの書き込み読み出し処理が複数回行なわれるＩＣカードであって、揮発性メモリに複数頁分の記憶領域が設けられ、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容が読み出される頁バッファと、外部機器からのコマンド処理の実行により、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容を前記頁バッファに読み出して、前記頁バッファの記憶内容を編集する編集手段と、前記コマンド処理が終了した際に、前記揮発性メモリ上の頁バッファの記憶内容で前記不揮発性メモリの書き込み対象頁の記憶内容を更新記憶する処理手段とを具備している。
また、この発明のＩＣカードの処理方法は、頁単位に書き込みする不揮発性メモリを有し、外部機器からのコマンドに基づいて前記不揮発性メモリへの書き込み読み出し処理が複数回行なわれるＩＣカードの処理方法であって、揮発性メモリに複数頁分の記憶領域が設けられ、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容が読み出される頁バッファを有し、外部機器からのコマンド処理の実行により、前記不揮発性メモリの書き込み読み出し対象頁の記憶内容を前記頁バッファに読み出して、前記頁バッファの記憶内容を編集し、前記コマンド処理が終了した際に、前記揮発性メモリ上の頁バッファの記憶内容で前記不揮発性メモリの書き込み対象頁の記憶内容を更新記憶することを特徴とする。
【０００８】
【発明の実施の形態】
以下、図面を参照してこの発明のＩＣカード処理システムを説明する。
このＩＣカード処理システムは、図１に示すように、上位装置としてのパソコン（ＰＣ）１とこのＰＣ１と通信ライン２を介して接続されているリーダライタ３とからなる。このリーダライタ３には、図示しないコネクタ等で接続される取引対象カードとしてのＩＣカード４が装着されるようになっている。
【０００９】
ＰＣ１は、ＰＣ１の全体を制御する制御部５、制御用のプログラムが記憶されていたり種々のデータが記憶されるメモリ６、操作指示を行うキーボード等の操作部７、操作案内等が表示される表示部８、リーダライタ３とのデータのやり取りを行うインターフェース９により構成されている。
【００１０】
リーダライタ３は、リーダライタ３の全体を制御するＣＰＵ１０、制御用のプログラムが記憶されていたり種々のデータが記憶されるメモリ１１、ＰＣ１とのデータのやり取りを行うインターフェース１２、ＩＣカード４とのデータのやり取りを行うインターフェース１３により構成されている。また、リーダライタ３には、ＩＣカード４の挿入検知を行う検知器（図示しない）を有し、この検知結果をＰＣ１へ出力するようになっている。
【００１１】
ＩＣカード４は、図２に示すように、ＩＣカード４の全体を制御するＣＰＵ（制御素子）１４、カード内部動作の制御用のプログラムが記憶されているマスクＲＯＭ（プログラムメモリ）１５、外部（リーダライタ３）と交換する電文の送受信バッファとＣＰＵ１４の処理中のデータの一時格納バッファとして利用されるＲＡＭ（ワーキングメモリ、揮発性メモリ）１６、アプリケーション運用でその内容をリードライトして使用される運用データが格納されるデータメモリ（不揮発性メモリ、フラッシュメモリ、ＥＥＰＲＯＭ）１７、リーダライタ３とのデータのやり取りを行うインターフェース１８、コンタクト部１９により構成されている。ＲＯＭ（プログラムメモリ）１５は、３０Ｋから４０Ｋバイトで構成されている。個別アプリケーションプログラムとしては、一例として、銀行取引業務処理、クレジット取引業務処理、プリペイド取引業務処理となっている。
【００１２】
上記データメモリ１７は、「ページ書き込み」或いは「ブロック書き込み」等と称する機能を有し、ランダムなアドレスに対する書き込みよりも連続したアドレスに対する連続データの書き込みがより高速に行えるといった特徴を持つものである。上記データメモリ１７は、図３に示すように、複数ページ（たとえば８頁）の領域１７ａ、…により構成されている。また、データメモリ１７には、バッファ部３０ａ、…がいっぱいになった場合の制御方式を示すフラグが記憶される領域４１を有している。
【００１３】
上記ＲＡＭ１６には、上記データメモリ１７用の複数のバッファ部３０ａ、…を有している。各バッファ部３０ａ、…は、図４に示すように、書き込み読み出し対象の頁単位のデータが記憶される記憶領域３１、書き込み読み出し対象データが格納されるデータメモリ１７のアドレスが記憶される記憶領域３２、記憶領域３１におけるデータの書き込み読み出しが発生した頻度または、バッファ部３０ａ、…の順位を示すデータが記憶される記憶領域３３により構成されている。
上記ＩＣカード４は、比較的低速のシリアル・インターフェースを介して外部から命令を受けたり命令に対する応答を返すものであり、その速度は一般的な接触型ＩＣカードで通常、毎秒９６００ビットとなっている。
上記ＣＰＵ１４、ＲＯＭ１５、ＲＡＭ１６、データメモリ１７、インターフェース１８は、ＩＣチップ２０により構成され、コンタクト部１９およびＩＣチップ２０は一体的にモジュール化され、ＩＣカード本体に埋設されている。
【００１４】
次に、ＩＣカード４におけるデータの書き込み読み出し処理を、図５、図６に示すフローチャートを用いて説明する。
まず、ＣＰＵ１４は、データメモリ１７上に書き込む際のページの先頭アドレスを取得する（ＳＴ１）。ついで、ＣＰＵ１４は、書き込み読み出し対象エリアが、すでに、バッファ部３０ａ、…のいずれかに展開されているか、各バッファ部３０ａ、…の記憶領域３２のアドレスと上記取得したアドレスとの比較により、確認する（ＳＴ２）。
【００１５】
また、ＣＰＵ１４は、上記アドレスの比較に基づいて、バッファ部３０ａ、…がすでにいっぱいになっているかを確認する（ＳＴ３）。この確認の結果がいっぱいとなっている場合、ＣＰＵ１４は、データメモリ１７上の領域４１のフラグの設定が頻度になっているか順位（古いものからの順位）になっているかを確認する（ＳＴ４）。
【００１６】
この確認の結果が頻度の場合、ＣＰＵ１４は、各バッファ部３０ａ、…の記憶領域３３に記憶されている書き込み回数の頻度がもっとも低いバッファ部３０ａ、…を選択する（ＳＴ５）。上記ステップ４の確認の結果が順位の場合、ＣＰＵ１４は、各バッファ部３０ａ、…の記憶領域３３に記憶されている順位により、書き込みの行われたのが、もっとも古いバッファ部３０ａ、…を選択する（ＳＴ６）。
【００１７】
また、ＣＰＵ１４は、上記ステップ５、６のいずれかにより選択されたバッファ部３０ａ、…の１つに対応する記憶領域３１に記憶されている１ページ分のデータを読出し、記憶領域３２に記憶されているデータメモリ１７のアドレスに対応する領域に書き込む（ＳＴ７）。
【００１８】
さらに、ＣＰＵ１４は、上記書き込みの完了したバッファ部３０ａ、…の記憶領域３２に対して、ステップ１で取得したアドレスのデータを転送し、記憶する（ＳＴ８）。これにより、ＣＰＵ１４は、バッファ部３０ａ、…の記憶領域３１上でデータの編集を行う（ＳＴ９）。ついで、ＣＰＵ１４は、次の書き込みデータがあるか否かを判断する（ＳＴ１０）。この判断の結果、ＣＰＵ１４は、次の書き込みデータがあると判断した場合、ステップ１に戻り、次の書き込みデータがないと判断した場合、処理を終了する。
【００１９】
次に、ＩＣカード４におけるコマンド処理を、図７に示すフローチャートを用いて説明する。
すなわち、コマンド処理により、上述した書き込み読み出し処理が複数回行われている（ＳＴ１１）。コマンド処理完了後の処理として、ＣＰＵ１４は、バッファ部３０ａ、…の記憶領域３１に展開されている書き込みデータの全データを、バッファ部３０ａ、…の記憶領域３２に記憶されているデータメモリ１７のアドレスに対応する領域に書き込む（ＳＴ１２）。
【００２０】
たとえば、クレジットのアプリケーションにおいて、アプリケーションの読出し、暗証の読出し、取引限度額の読出し、取引結果の登録、取引回数の読出し、取引回数の更新内容の登録、ポイントの読出し、ポイントの更新内容の登録が行われる際の処理を、図８を用いて説明する。
【００２１】
まず、クレジットのアプリケーションのデータメモリ１７のアドレス（たとえば領域１７ａの先頭アドレス）が付与されている読出しコマンドがＰＣ１からＩＣカード４のＣＰＵ１４に送信される。ついで、ＣＰＵ１４は、取得したアドレスと各バッファ部３０ａ、…の記憶領域３２のアドレスとを比較し、領域１７ａの記憶内容がバッファ部３０ａ、…の記憶領域３１のいずれかに展開されているか否かを判断する。展開されている場合、対応するバッファ部の記憶領域３１の記憶内容を利用する。
【００２２】
また、ＣＰＵ１４は、領域１７ａの記憶内容がバッファ部３０ａ、…のいずれかに展開されていない場合、バッファ部３０ａ、…のいずれかに空きがあるか否かを判断し、空きが無かった場合、上述した頻度あるいは古い順に基づいて利用するバッファ部を確保し、空きがあった場合、領域１７ａの記憶内容を空きのあったバッファ部（たとえばバッファ部３０ａの記憶領域３１）に記憶する。
これにより、ＣＰＵ１４は、バッファ部３０ａの記憶領域３１に記憶されたクレジットのアプリケーションを読出し、ＲＡＭ１６の作業領域に記憶する。
【００２３】
この状態において、ＣＰＵ１４は、ＰＣ１に応答信号を送信することにより、暗証照合コマンド、取引限度額の読出しコマンド、取引結果の登録、取引回数の読出しコマンド、取引回数の更新内容の登録コマンド、ポイントの読出しコマンド、ポイントの更新内容の登録コマンドが順次供給され、たとえば各内容がデータメモリ１７の領域１７ｇに対応し、その記憶内容をバッファ部３０ｂの記憶領域３１に記憶する。これにより、各コマンドごとにバッファ部３０ｂの記憶領域３１の記憶内容が一括読み出しされて、各コマンドに対応する処理が為され、バッファ部３０ｂの記憶領域３１の記憶内容が一括して更新記憶される。
【００２４】
そして、一連の処理が終了した際、ＣＰＵ１４はバッファ部３０ａの記憶領域３１の記憶内容で領域１７ａの記憶内容を一括して更新記憶し、バッファ部３０ｂの記憶領域３１の記憶内容で領域１７ｇの記憶内容を一括して更新記憶する。
上記したように、書き換え可能な不揮発性メモリに対する書き込みにおいて、書き換え可能な不揮発性メモリから、いったん、揮発性メモリ（書き込みバッファ）にデータを読み出して、揮発性メモリ上でデータの編集を行い、データ編集が完了した時点で、書き換え可能な不揮発性メモリに書き込むことで、不揮発性メモリへの書き込み回数を減らすことにより、コマンド処理時間を短縮化し、かつ、メモリの寿命を長くするものである。
【００２５】
【発明の効果】
以上詳述したようにこの発明によれば、書き換え可能な不揮発性メモリを有し、この不揮発性メモリに記憶されているアプリケーションにより処理を行うＩＣカードにおいて、不揮発性メモリへの書き込み回数を減らすことにより、処理時間を短縮化でき、かつ、不揮発性メモリの寿命を長くすることができるＩＣカードとＩＣカードの処理方法を提供できる。
【図面の簡単な説明】
【図１】この発明の実施の形態に係るＩＣカード処理システムの構成例を概略的に示すブロック図。
【図２】ＩＣカードの構成例を概略的に示すブロック図。
【図３】ＩＣカードのデータメモリの各領域を説明するための図。
【図４】バッファ部を説明するための図。
【図５】ＩＣカードにおけるデータの書き込み読み出し処理を説明するフローチャート。
【図６】ＩＣカードにおけるデータの書き込み読み出し処理を説明するフローチャート。
【図７】ＩＣカードにおけるコマンド処理を説明するフローチャート。
【図８】アクセス処理を説明するための図。
【符号の説明】
１…ＰＣ、２…通信ライン、３…リーダライタ、４…ＩＣカード、５…制御部、６…メモリ、７…操作部、８…表示部、９…インターフェース、１０…ＣＰＵ、１１…メモリ、１４…ＣＰＵ、１５…ＲＯＭ、１６…ＲＡＭ、１７…データメモリ、１７ａ〜…領域、１９…コンタクト部、２０…ＩＣチップ、３０ａ〜…バッファ部、４１…領域。
【図１】
0004460850.tif 000002
【図２】
0004460850.tif 000003
【図３】
0004460850.tif 000004
【図４】
0004460850.tif 000005
【図５】
0004460850.tif 000006
【図６】
0004460850.tif 000007
【図７】
0004460850.tif 000008
【図８】
0004460850.tif 000009