(57)【特許請求の範囲】
【請求項１】
外部からコマンドが入力されると、このコマンドに対応した所定の処理を実行してその処理結果を外部へ出力する機能を有する携帯可能電子装置において、
選択的に実行される複数のアプリケーションプログラムが格納され、かつ、記憶内容が書換え可能な記憶手段と、
この記憶手段内に設けられ、トランザクションアトミシティを保証するために書込みデータとこの書込みデータを書込む前記記憶手段の書込み先アドレスとを一時的に保持するコミットバッファ領域と、
トランザクションアトミシティを保証する書込みを実施する際、最初に前記コミットバッファ領域への書込みデータの書込みを実施し、その後、前記記憶手段の実際の書込み領域への書込みデータの書込みを実施する第１の手段と、
前記コミットバッファ領域への書込み開始、前記記憶手段の実際の書込み領域への書込み開始および終了を判断できる第２の手段と、
当該携帯可能電子装置の起動時に外部から始めてのコマンドが入力された際、前記第２の手段において実際の書込み領域への書込み開始状態のままであれば、前記コミットバッファ領域の内容を前記記憶手段の実際の書込み領域に反映する処理を実施する第３の手段と、
前記記憶手段内の複数のアプリケーションプログラムの個々に対応して前記コミットバッファ領域への書込み開始、前記記憶手段の実際の書込み領域への書込み開始および終了を判断できる第４の手段とを具備し、
前記アプリケーションプログラムが選択された際、前記第４の手段により前回の起動時に当該アプリケーションプログラムが選択され、その際に前記コミットバッファ領域への書込みが開始されたが実際の書込み領域への書込みは終了していないことを当該アプリケーションプログラムが判断できることを特徴とする携帯可能電子装置。
【請求項２】
選択されたアプリケーションプログラムが前記第４の手段により前回の起動時に当該アプリケーションプログラムが選択され、その際に前記コミットバッファ領域への書込みが開始されたが実際の書込み領域への書込みは終了していないことを判断した際、前記コミットバッファ領域を参照することにより前回の起動時に処理がどこまで進んでいたかを判断できることを特徴とする請求項１記載の携帯可能電子装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、たとえば、書込み、書換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を有し、外部からのデータの入出力を行なう手段を備えたＩＣチップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置に関する。
【０００２】
【従来の技術】
この種のＩＣカードにおいて、不揮発性メモリに対するデータの書換えの際に、データの書換え中に不慮の事故（電源断あるいはＩＣカードの抜取りなどの事態の発生を指し、本発明ではこれをティアリングと称する）が発生しても、書込み箇所の内容が書込み以前または書込み後の状態を保証する（本発明ではこの保証をトランザクションアトミシティと称する）方式がある。
【０００３】
データの書換えは、コミットバッファと称される不揮発性メモリ内の特定領域に一度実施され、その後、不揮発性メモリの実際の書込み領域へ実施する。これにより、コミットバッファ領域に全ての書込みデータが書かれる以前にティアリングが発生した場合には、実際の書込み領域には書換え以前のデータが残り、コミットバッファ領域に全ての書込みデータが書かれた以降にティアリングが発生した場合には、コミットバッファ領域に書換え後のデータが残る。
【０００４】
前者の場合には、ティアリング発生後にＩＣカードを再起動した時点で、書込み箇所のデータが書換え以前であることが保証できる。後者の場合には、ティアリング発生後にＩＣカードを再起動した後、コミットバッファ領域の内容を書込み箇所に反映する（本発明ではこの処理をロールフォワードと称する）ことで、書込み箇所のデータが書換え後であることが保証できる。以上がトランザクションアトミシティの実装である。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記のトランザクションアトミシティの技術では、ロールフォワードのタイミングとティアリングが発生したことを通知する手段が明確にされていないため問題となっている。
【０００６】
たとえば、複数のアプリケーションプログラムを有するマルチアプリケーションカードにおいて、ティアリングが発生した際に動作していたアプリケーションプログラムと、ティアリング発生後にＩＣカードを再起動した後に動作するアプリケーションプログラムが異なることは充分に有りえる。ＩＣカードの再起動後に別のアプリケーションプログラムが動いている最中にティアリングの発生を通知しても、このアプリケーションプログラムは処置の判断をすることができない。また、このアプリケーションプログラムが動作中にトランザクションアトミシティ機能を使用すると、ティアリング発生時点のコミットバッファ領域の内容が壊されてしまい、ロールフォワードできなくなってしまう。
【０００７】
そこで、本発明は、ティアリング発生後、再起動した後にロールフォワードを自動的に実施し、ティアリング発生時点で動作していたアプリケーションプログラムは再起動後に当該アプリケーションプログラムが選択された後ティアリング発生の事実とその際のコミットバッファ領域の内容を知る手段を有することで、外部のシステムも含めたティアリング対策を効果的に構築できる携帯可能電子装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明の携帯可能電子装置は、外部からコマンドが入力されると、このコマンドに対応した所定の処理を実行してその処理結果を外部へ出力する機能を有する携帯可能電子装置において、選択的に実行される複数のアプリケーションプログラムが格納され、かつ、記憶内容が書換え可能な記憶手段と、この記憶手段内に設けられ、トランザクションアトミシティを保証するために書込みデータとこの書込みデータを書込む前記記憶手段の書込み先アドレスとを一時的に保持するコミットバッファ領域と、トランザクションアトミシティを保証する書込みを実施する際、最初に前記コミットバッファ領域への書込みデータの書込みを実施し、その後、前記記憶手段の実際の書込み領域への書込みデータの書込みを実施する第１の手段と、前記コミットバッファ領域への書込み開始、前記記憶手段の実際の書込み領域への書込み開始および終了を判断できる第２の手段と、当該携帯可能電子装置の起動時に外部から始めてのコマンドが入力された際、前記第２の手段において実際の書込み領域への書込み開始状態のままであれば、前記コミットバッファ領域の内容を前記記憶手段の実際の書込み領域に反映する処理を実施する第３の手段と、前記記憶手段内の複数のアプリケーションプログラムの個々に対応して前記コミットバッファ領域への書込み開始、前記記憶手段の実際の書込み領域への書込み開始および終了を判断できる第４の手段とを具備し、前記アプリケーションプログラムが選択された際、前記第４の手段により前回の起動時に当該アプリケーションプログラムが選択され、その際に前記コミットバッファ領域への書込みが開始されたが実際の書込み領域への書込みは終了していないことを当該アプリケーションプログラムが判断できることを特徴とする。
【００１０】
また、本発明の携帯可能電子装置は、選択されたアプリケーションプログラムが前記第４の手段により前回の起動時に当該アプリケーションプログラムが選択され、その際に前記コミットバッファ領域への書込みが開始されたが実際の書込み領域への書込みは終了していないことを判断した際、前記コミットバッファ領域を参照することにより前回の起動時に処理がどこまで進んでいたかを判断できることを特徴とする。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【００１３】
図１は、本実施の形態に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムでは、ＩＣカード１０１はカードリーダ・ライタ１０２を介してパーソナルコンピュータなどの端末装置１０３と接続され、更に端末装置１０３と接続されたホストコンピュータ１０４とも通信可能に構成されている。
【００１４】
図２は、ＩＣカード１０１の構成例を示すもので、制御手段としてのＣＰＵなどの制御素子２０１、記憶内容が書換え可能な記憶手段としての不揮発性のデータメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４、および、カードリーダ・ライタ１０２との通信を行なうための通信部２０５によって構成されていて、これらは１つのＩＣチップ（あるいは、複数のＩＣチップ）で構成されている。このＩＣチップはＩＣカード内に埋設されており、接触式の場合にはＩＣカード表面の接点部分を介してカードリーダ・ライタ１０２と電気的に接続するようになっている。
【００１５】
データメモリ２０２は、各種データの記憶に使用されるもので、たとえば、ＥＥＰＲＯＭなどの記憶内容が書換え可能な不揮発性メモリで構成されている。
【００１６】
ワーキングメモリ２０３は、制御素子２０１が処理を行なう際の処理データなどを一時的に保持するための作業用メモリであり、たとえば、ＲＡＭなどで構成される。
【００１７】
プログラムメモリ２０４は、たとえば、マスクＲＯＭで構成されており、制御素子２０１の制御プログラムなどを記憶するものである。
【００１８】
通信部２０５は、外部装置であるカードリーダ・ライタ１０２との通信を行なうためのものである。
【００１９】
図３は、データメモリ２０２のフォーマットを示していて、アプリケーション管理テーブル領域Ｅ１１およびコミットバッファ領域Ｅ１２を含むシステム領域Ｅ１と、複数のアプリケーションプログラムが格納されるアプリケーション領域Ｅ２に２分される。
【００２０】
図４は、コミットバッファ領域Ｅ１２のフォーマットを示すもので、１バイトで表わされるコミットバッファ状態フラグ部Ｅ１３、および、コミットバッファ本体部Ｅ１４に２分される。コミットバッファ状態フラグ部Ｅ１３は、その値により以下の状態が示される。
【００２１】
００…コミットバッファ未使用あるいは実際の書込み領域への書込み終了
０１…コミットバッファ処理開始
０２…実際の書込み領域への書込み開始
コミットバッファ本体部Ｅ１４は、書込みデータとこの書込みデータを書込むデータメモリ２０２の書込み先アドレスデータとの対で構成されるブロックが複数登録（記憶）できるように構成されている。
【００２２】
図５は、アプリケーション管理テーブル領域Ｅ１１を示すもので、カード内部に登録されたアプリケーションプログラムの数だけデータが登録される。このデータの中には１バイトで表わされるコミット状態フラグ部Ｅ１５が含まれる。
【００２３】
図４のコミットバッファ状態フラグ部Ｅ１３が変化する際に同じ値を対応するアプリケーションプログラムのコミット状態フラグ部Ｅ１５に保持する。ただし、ティアリング発生後のロールフォワード処理により、図４のコミットバッファ状態フラグ部Ｅ１３は「００」となるが、これはコミット状態フラグ部Ｅ１５には反映されないようになっている。
【００２４】
以下、要部の処理について説明する。
【００２５】
［ＩＣカード起動時の処理］
当該ＩＣカードが起動され、第１コマンド（起動後に始めて入力されたコマンド）が受信された際、あるいは、コミットバッファ領域Ｅ１２の使用を開始する直前にコミットバッファ状態フラグ部Ｅ１３の値を見て、「０２」であればコミットバッファ本体部Ｅ１４の内容に沿って書込み先アドレスにデータを反映するとともに、コミットバッファ状態フラグ部Ｅ１３を「００」とするロールフォワード処理を実施する。
【００２６】
［通常のトランザクションアトミシティ処理］
アプリケーションプログラムでトランザクションアトミシティ処理が宣言されると、コミットバッファ状態フラグ部Ｅ１３を「０１」として、以降の書込み処理はトランザクションアトミシティ処理終了が宣言されるまでコミットバッファ領域Ｅ１２に対して実施される。
【００２７】
トランザクションアトミシティ処理終了が宣言されると、コミットバッファ状態フラグ部Ｅ１３を「０２」として前述のロールフォワード処理を実施する。処理の最後にコミットバッファ状態フラグ部Ｅ１３を「００」に戻してトランザクションアトミシティ処理が終了する。
【００２８】
［ティアリング通知］
アプリケーションプログラムは、アプリケーション管理テーブルＥ１１の中から対応するアプリケーションプログラムの内容のみを参照できる。これにより、コミット状態フラグ部Ｅ１３を参照することで、以前に選択された際にティアリングが発生したか否かを判断できる。アプリケーションプログラムは、ティアリング発生を確認した場合には外部と協調してその対応を実施するとともに、このコミット状態フラグ部Ｅ１３をクリア（００）することができる。
【００２９】
次に、全体的な処理の流れについて図６に示すフローチャートを参照して説明する。当該ＩＣカードが起動されると、制御素子２０１は、カードリーダ・ライタ１０２に対してアンサー・ツー・リセット（ＡＴＲ）と称される初期応答データを送信し（ステップＳ１）、受信待機状態となる（ステップＳ２）。
【００３０】
この状態において、カードリーダ・ライタ１０２から第１コマンド（起動後の最初のコマンド）を受信すると（ステップＳ３）、制御素子２０１は、コミットバッファ状態フラグ部Ｅ１３の値を参照することにより、コミットバッファ領域Ｅ１２に未処理データがあるか否かをチェックする（ステップＳ４）。この場合、コミットバッファ領域Ｅ１２に未処理データはないので、受信したコマンドに対する処理を開始する（ステップＳ５）。
【００３１】
コマンド処理開始後、当該アプリケーションプログラムでトランザクションアトミシティ処理開始が宣言されると（ステップＳ６）、制御素子２０１は、コミットバッファ状態フラグ部Ｅ１３を「０１」として、以降の全てのデータ書込み処理はトランザクションアトミシティ処理終了が宣言されるまでコミットバッファ領域Ｅ１２に対して実施する（ステップＳ７）。
【００３２】
その後、当該アプリケーションプログラムでトランザクションアトミシティ処理終了が宣言されると（ステップＳ８）、制御素子２０１は、コミットバッファ状態フラグ部Ｅ１３を「０２」としてロールフォワード処理を実施する（ステップＳ９）。処理の最後に、コミットバッファ状態フラグ部Ｅ１３を「００」に戻してトランザクションアトミシティ処理が終了する。
【００３３】
次に、コマンド処理が終了すると（ステップＳ１０）、制御素子２０１は、そのコマンド処理に対するレスポンスをカードリーダ・ライタ１０２へ送信し（ステップＳ１１）、受信待機状態となる（ステップＳ１２）。ここで、カードリーダ・ライタ１０２から第２コマンド（起動後２番目のコマンド）を受信すると（ステップＳ１３）、制御素子２０１はステップＳ５に戻り、上記同様な処理を繰り返す。
【００３４】
ところで、たとえば、ステップＳ９のロールフォワード処理、すなわち、コミットバッファ領域Ｅ１２の内容をデータメモリ２０２の書込みが指示された領域へ反映する処理を行なっている途中において、ティアリングが発生した場合、その後、当該ＩＣカードが再起動される。再起動されると、制御素子２０１は、カードリーダ・ライタ１０２に対してアンサー・ツー・リセット（ＡＴＲ）と称される初期応答データを送信し（ステップＳ１４）、受信待機状態となる（ステップＳ１５）。
【００３５】
この状態において、カードリーダ・ライタ１０２から第１コマンド（再起動後の最初のコマンド）を受信すると（ステップＳ１６）、制御素子２０１は、コミットバッファ状態フラグ部Ｅ１３の値を参照することにより、コミットバッファ領域Ｅ１２に未処理データがあるか否かをチェックする（ステップＳ１７）。この場合、コミットバッファ領域Ｅ１２は「０２」となっている、すなわち、コミットバッファ領域Ｅ１２に未処理データが存在するので、コミットバッファ領域Ｅ１２の未処理データをデータメモリ２０２の書込みが指示された領域へ反映する処理を行なうとともに、コミットバッファ状態フラグ部Ｅ１３を「００」とするロールフォワード処理を実施する。
【００３６】
ロールフォワード処理が終了すると、制御素子２０１は、受信したコマンドに対する処理を開始する（ステップＳ１９）。
【００３７】
【発明の効果】
以上詳述したように本発明によれば、ティアリング発生後、再起動した後にロールフォワードを自動的に実施し、ティアリング発生時点で動作していたアプリケーションプログラムは再起動後に当該アプリケーションプログラムが選択された後ティアリング発生の事実とその際のコミットバッファ領域の内容を知る手段を有することで、外部のシステムも含めたティアリング対策を効果的に構築できる携帯可能電子装置を提供できる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成例を示すブロック図。
【図３】データメモリのフォーマットを示す図。
【図４】コミットバッファ領域のフォーマットを示す図。
【図５】アプリケーション管理テーブル領域のフォーマットを示す図。
【図６】全体的な処理の流れについて説明するフローチャート。
【符号の説明】
１０１…ＩＣカード（携帯可能電子装置）、１０２…カードリーダ・ライタ、１０３…端末装置、１０４…ホストコンピュータ、２０１…制御素子、２０２…データメモリ（記憶手段）、２０３…ワーキングメモリ、２０４…プログラムメモリ、２０５…通信部、Ｅ１…システム領域、Ｅ２…アプリケーション領域、Ｅ１１…アプリケーション管理テーブル領域、Ｅ１２…コミットバッファ領域、Ｅ１３…コミットバッファ状態フラグ部、Ｅ１４…コミットバッファ本体部。
【図１】
0003607658.tif 000002
【図２】
0003607658.tif 000003
【図３】
0003607658.tif 000004
【図４】
0003607658.tif 000005
【図５】
0003607658.tif 000006
【図６】
0003607658.tif 000007