説明

ICカード及びICカードのリフレッシュ方法

【課題】リフレッシュ処理中に発生した不測の電源断により、フラッシュメモリに保持されているデータが破損することを防止できるICカードを提供する。
【解決手段】ICカード1には、ICカード1に実装されたフラッシュメモリをリフレッシュ処理できるように、フラッシュメモリに保持されているデータをページ単位で取得し、フラッシュメモリにページ単位で該データを再書き込みするリフレッシュ処理を実行するリフレッシュモジュール12が実装され、コマンド実行中にリフレッシュ処理を行えるように、外部装置からコマンドを受信すると、該コマンドを処理した後、リフレッシュモジュール12を作動させるトリガー条件が成立していると、リフレッシュモジュール12を呼び出し、リフレッシュモジュール12の処理が終了すると、該コマンドのレスポンスを外部装置へ送信するコマンド管理モジュール10が実装される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路(ICチップ)をもつ記録担体であるICカードに実装されたフラッシュメモリをリフレッシュ処理するための技術に係わる。
【背景技術】
【0002】
半導体集積回路(ICチップ)をもつ記録担体であるICカードには、書き換え可能な不揮発性メモリが搭載され、電源未投入の状態でもデータを保持することが可能で、ICカードに搭載された書き換え可能な不揮発性メモリには暗号鍵などのデータが記憶される。
【0003】
従来、ICカードに実装されるICチップの書き換え可能な不揮発性メモリとしては、EEPROM (Electrically Erasable Programmable Read-Only Memory)が広く用いられてきたが、大容量化や高集積化を狙いとして、書き換え可能な不揮発性メモリとしてフラッシュメモリ(Flash Memory)が採用されたICチップが近年増加している。
【0004】
EEPROMとフラッシュメモリでは同じメモリであってものその特性は異なり、フラッシュメモリを実装したICチップを利用する際は、フラッシュメモリの特性に応じたプログラミングが必要になる。例えば、EEPROMとフラッシュメモリではデータの書き込み単位が異なり、EEPROMではデータを1バイト単位でアクセスが可能だが、フラッシュメモリではページ単位(現時点では、1ページは128〜256Bytes程度)でのみアクセスが可能なため、ページ単位でアクセスするためのプログラミングが必要になる。
【0005】
一方で、ICカードの一つの形態であるSIM (Subscriber Identification Module)の利用分野の一つとして、M2M(Machine to Machine)が近年注目されている。M2Mとは、機器間で相互に通信を行うことにより、各機器の制御を行うための技術で、このM2Mに対し、SIMを用いた携帯電話網による通信形態を適用することにより、新たなサービスやインフラの構築が可能となる。
【0006】
M2MにSIMを適用する際、SIMは装置に実装されて利用されるため、フラッシュメモリのデータ保持期間(一般的には10年)を超えてデータを保持できることが要求される。データ保持期間はフラッシュメモリへの最後の書き込み時点からの経過時間が基準となることから、データ保持期間を延長する手法として、データをフラッシュメモリへ書き込んだ後、然るべきタイミングでデータを再書き込みするリフレッシュ処理を用いることができるが、SIMに対してリフレッシュ処理を行う場合、リフレッシュ処理を行うタイミングが問題となる。
【0007】
コンデンサに電荷を蓄えることでデータを保持するメモリであるDRAMであれば、DRAMには常時通電されているため、リフレッシュ処理のタイミングを一定時間の経過とすればよいが、M2MでSIMを利用する場合、不測の電源断が発生する可能性があるため、不測の電源断を考慮してフラッシュメモリをリフレッシュ処理するタイミングを決定する必要がある。
【0008】
フラッシュメモリをリフレッシュ処理する発明として、例えば、特許文献1において、コマンドメッセージが送信されない時間を利用し、メモリを自律的にリフレッシュ処理する機能を備えたストレージデバイスが開示されている。
【0009】
しかしながら、特許文献1で開示されている発明をM2Mで利用されるSIMに適用する場合、特許文献1で開示されている発明では自律的にリフレッシュ処理が行われるため、リフレッシュ処理中に不測の電源断が発生した場合、フラッシュメモリに記憶されていた内容が破壊される可能性がある。
【0010】
また、特許文献2では、ページ単位のデータをフラッシュメモリからRAMに退避させ、RAMに退避させたフラッシュメモリのデータを消去し、再度、RAMからフラッシュメモリに退避させたデータを再書き込みして、ページ単位でリフレッシュすることで、フレッシュメモリに記憶されたデータの劣化を防止する発明が開示されている。
【0011】
しかしながら、特許文献2で開示されている発明をM2Mで利用されるSIMに適用する場合、特許文献2で開示されている発明では、不測の電源断が発生した場合、RAMの退避されたデータは、RAM及びフラッシュメモリにも残らないため、フラッシュメモリに記憶されていた内容が破壊される可能性がある。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2009―99185号公報
【特許文献2】特許第3641066号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
そこで、本発明は、データ保持期間の延長を目的として、ICカードに実装されたフラッシュメモリをリフレッシュ処理する際、リフレッシュ処理中に発生した不測の電源断により、フラッシュメモリに保持されているデータが破損することを防止できるICカード及びICカードのリフレッシュ方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決する第1の発明のICカードは、ICカードに実装されたフラッシュメモリをリフレッシュ処理できるように、フラッシュメモリに保持されているデータをページ単位で取得し、フラッシュメモリにページ単位で該データを再書き込みするリフレッシュ処理を実行するリフレッシュ手段を備え、コマンド実行中にリフレッシュ処理を行えるように、外部装置からコマンドを受信すると、該コマンドを処理した後、前記リフレッシュ手段を作動させるトリガー条件が成立していると、前記リフレッシュ手段を呼び出し、前記リフレッシュ手段の処理が終了すると、該コマンドのレスポンスを外部装置へ送信するコマンド管理手段を備える。
【0015】
第1の発明によれば、外部装置から受信したコマンドを処理している間は電源断が発生する可能性は低いと想定できるため、コマンド実行中にリフレッシュ処理を行うことで、不足の電源断が発生しにくいタイミングでリフレッシュ処理を行うことができる。
【0016】
更に、第2の発明のICカードは、外部装置から受信したコマンドの実行回数の規定値を前記トリガー条件として保持し、前記コマンド管理手段は、外部装置から受信したコマンドの実行回数をカウントするカウンタを有し、前記カウンタをインクリメントした後の値が前記規定値になると、前記リフレッシュ手段を呼び出すことを特徴とする第1の発明に記載のICカードである。
【0017】
コマンド実行毎にリフレッシュ処理を行うと、フラッシュメモリ20のリフレッシュ処理が頻繁に行われ、リフレッシュ処理中にデータが破損する可能性が高くなるため、第2の発明のICカードのように、外部装置から受信したコマンドの実行回数をカウントし、コマンドの実行回数が規定になるとリフレッシュ処理を開始するようにするとよい。
【0018】
更に、第3の発明のICカードは、論理ページ番号に対応する物理ページ番号を記述したページ管理テーブルを有し、前記リフレッシュ手段は、次にリフレッシュ処理する論理ページの論理ページ番号である次回ページ番号を保持し、前記コマンド管理手段から呼び出されると、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページ番号で特定されるページをリフレッシュ処理した後、前記次回ページ番号を更新する処理として、前記次回ページ番号が最終の論理ページ番号でなければ、前記次回ページ番号を一つインクリメントし、前記次回ページ番号が最終の論理ページ番号であれば、前記次回ページ番号及び前記カウンタを初期化することを特徴とする第2の発明に記載のICカードである。
【0019】
データ保持に用いられている全ページを一度にリフレッシュ処理を行うと、リフレッシュ処理を行う際、外部装置からコマンドを受信してからレスポンスを返信するまでの時間が長くなり過ぎるため、第3の発明のICカードのように、リフレッシュ処理をページ単位で行うものとし、コマンド実行回数が規定値に達した後は、コマンド実行する毎にページ単位で最終のページまでリフレッシュ処理を行うようにするとよい。
【0020】
更に、第4の発明のICカードは、データ保持に利用しない空きページが設けられるように論理ページの総数が設定され、前記リフレッシュ手段は、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページのデータを、所定のアルゴリズムにより決定した前記空ページにページコピーした後、前記次回ページ番号を更新する処理を実行する前に、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を該空ページの物理ページ番号に更新する処理を行うことを特徴とする第3の発明に記載のICカードである。
【0021】
リフレッシュ処理の対象となるページのデータをRAMに退避させると、不測の電源断がリフレッシュ処理中に発生した場合、リフレッシュ処理の対象となるページのデータが破損する可能性があるため、第4の発明のように、データ保持に利用されていない空きページにリフレッシュ処理の対象となるページのデータをページコピーし、リフレッシュ処理の対象となるページのデータがRAMに退避しないようにするとよい。
【0022】
更に、第5の発明に記載のICカードは、前記リフレッシュ手段は、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を、リフレッシュ処理される前の旧物理ページ番号として該論理ページ番号に対応付けて前記ページ管理テーブルに記憶する処理を行い、前記次回ページ番号を更新する処理を実行する前に、前回の前記旧物理ページ番号が前記ページ管理テーブルに記憶されていれば、該旧物理ページ番号を前記ページ管理テーブルから削除すると共に、該旧物理ページ番号で特定されるページを初期化することを特徴とする第4の発明に記載のICカードである。
【0023】
データ保持に利用されていない空きページにリフレッシュ処理の対象となるページのデータをページコピーするようにした場合、第5の発明のように、リフレッシュ処理が完了したページのデータを初期化するようにするとよい。
【0024】
更に、第6の発明は方法に係る発明で、第6の発明のICカードのリフレッシュ方法では、ICカードが、外部装置からコマンドを受信すると、該コマンドを処理した後、フラッシュメモリのリフレッシュ処理を行うトリガー条件を確認するステップa、 前記ICカードが、前記トリガー条件が成立している場合、前記ICカードに実装されたフラッシュメモリに保持されているデータをページ単位で取得し、フラッシュメモリにページ単位で該データを再書き込みするリフレッシュ処理を実行するステップb、
リフレッシュ処理が終了すると、ステップaで受信したコマンドのレスポンスを外部装置へ送信するステップcが実行される。
【0025】
更に、第7の発明は、前記ICカードは、外部装置から受信したコマンドの実行回数の規定値を前記トリガー条件として保持し、前記ステップaにおいて、前記ICカードは、外部装置から受信したコマンドの実行回数をカウンタを利用してカウントし、前記ステップbにおいて、前記ICカードは、インクリメント後の前記カウンタの値が前記規定値になると、リフレッシュ処理を実行することを特徴とする第6の発明に記載のICカードのリフレッシュ方法である。
【0026】
更に、第8の発明は、前記ICカードは、論理ページ番号に対応する物理ページ番号を記述したページ管理テーブルと、次にリフレッシュ処理する論理ページの論理ページ番号である次回ページ番号を保持し、前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページ番号で特定されるページをリフレッシュ処理した後、前記次回ページ番号を更新する処理として、前記次回ページ番号が最終の論理ページ番号でなければ、前記次回ページ番号を一つインクリメントし、前記次回ページ番号が最終の論理ページ番号であれば、前記次回ページ番号及び前記カウンタを初期化することを特徴とする第7の発明に記載のICカードのリフレッシュ方法である。
【0027】
更に、第9の発明は、前記ICカードは、データ保持に利用しない空きページが設けられるように論理ページの総数が設定され、前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページのデータをページ単位で取得し、所定のアルゴリズムにより決定した前記空ページに該データをページ単位で再書き込みした後、前記次回ページ番号を更新する処理を実行する前に、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を該空ページの物理ページ番号に更新する処理を行うことを特徴とする第8の発明に記載のICカードのリフレッシュ方法である。
【0028】
更に、第10の発明は、前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を、リフレッシュ処理される前の旧物理ページ番号として該論理ページ番号に対応付けて前記ページ管理テーブルに記憶する処理を行い、前記次回ページ番号を更新する処理を実行する前に、前回の前記旧物理ページ番号が前記ページ管理テーブルに記憶されていれば、該旧物理ページ番号を前記ページ管理テーブルから削除すると共に、該旧物理ページ番号で特定されるページを初期化することを特徴とする第9の発明に記載のICカードのリフレッシュ方法である。
【0029】
第6の発明から第10の発明によれば、第1の発明から第5の発明と同様の効果が得られる。
【発明の効果】
【0030】
このように、本発明によれば、データ保持期間の延長を目的として、ICカードに実装されたフラッシュメモリをリフレッシュ処理する際、リフレッシュ処理中に発生した不測の電源断により、フラッシュメモリに保持されているデータが破損することを防止できるICカード及びICカードのリフレッシュ方法を提供できる。
【図面の簡単な説明】
【0031】
【図1】本実施形態に係るICカードを説明する図。
【図2】ICカードに実装されるコンピュータプログラムを説明する図。
【図3】フラッシュメモリの内容を説明する図。
【図4】コマンド管理モジュールの動作を説明するフロー図。
【図5】リフレッシュモジュールの動作を説明するフロー図。
【図6】コマンド実行の回数が21回目のケースを説明する図。
【図7】初回のリフレッシュ処理が実行されるケースを説明する図。
【図8】2回目のリフレッシュ処理が実行されるケースを説明する図。
【図9】最終のリフレッシュ処理を行うケースを説明する図。
【発明を実施するための形態】
【0032】
ここから,本発明の実施形態について,本発明の技術分野に係わる当業者が,発明の内容を理解し,発明を実施できる程度に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、本発明は,これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。
【0033】
図1は、本実施形態に係るICカード1を説明する図である。本実施形態において、ICカード1は、半導体集積回路(ICチップ2)をもつ記録担体で、図1で図示したICカード1には、ICチップ2がモールドされたICモジュールが実装される。
【0034】
本実施形態ではICカード1の形態を、ICモジュールの近傍を短冊状に切り取った形状のSIMとして図示しているが、本発明は、ICカード1の形態に係る発明でないため、ICカード1の形態は任意でよく、ICカード1の形態はICカード1の用途に依存する。
【0035】
例えば,ICカード1の利用用途が金融関係システムの場合、ICカード1はキャッシカード/クレジットカードの形態になり、また、携帯電話/スマートフォンでICカード1を利用する場合、図1に図示した形態と同様のUSIM(Universal Subscriber Identity Module)になる。
【0036】
ICモジュール1aにモールドされたICチップ2には、CPU2a(Central Processing Unit)、RAM2b(Random Access Memory)、ROM2c(ReadOnly Memory)などに加え、書き換え可能な不揮発性メモリとしてフラッシュメモリ20が実装され、本実施形態では、フラッシュメモリ20をリフレッシュ処理するためのコンピュータプログラムがICカード1のICチップ2に記憶されている。
【0037】
図2は、ICカード1に実装されるコンピュータプログラムを説明する図である。図2に図示したように、ICカード1には、コンピュータプログラムとして、コマンド実行を管理するコマンド管理手段として機能するコンピュータプログラムであるコマンド管理モジュール10と、外部装置3から受信したコマンドをコマンド処理するためのコンピュータプログラムであるコマンドモジュール11と、フラッシュメモリ20をリフレッシュ処理するリフレッシュ手段として機能するコンピュータプログラムであるリフレッシュモジュール12が少なくとも実装される。
【0038】
本実施形態において、コマンド管理モジュール10及びリフレッシュモジュール12のプログラムコードはROM2cに実装されるが、コマンド実行とリフレッシュ処理は平行して実施されないため、コマンドモジュール11のプログラムコードを実装するメモリはROM2c又はフラッシュメモリ20のいずれかでよい。
【0039】
フラッシュメモリ20のデータ保持期間を超えてデータを保持できるようするためには、フラッシュメモリ20をリフレッシュ処理することが必要になるが、ICカード1の場合は不測の電源断が発生する可能性があるため、不足の電源断が生じても、フラッシュメモリ20のデータが破損しないタイミングでリフレッシュ処理を行う必要がある。
【0040】
このことに対応すべく本発明では、外部装置3から受信したコマンドを処理している間は電源断が発生する可能性は低いと考え、コマンド管理モジュール10は、リフレッシュ処理を行うトリガーをコマンド実行とし、コマンド実行の結果を示すレスポンスを外部装置3へ送信する前に、リフレッシュモジュール12を作動させるトリガー条件が成立していると、リフレッシュモジュール12を作動させてフラッシュメモリ20をリフレッシュ処理させる。
【0041】
なお、コマンド実行毎にリフレッシュ処理を行うと、フラッシュメモリ20のリフレッシュ処理が頻繁に行われ、リフレッシュ処理中にデータが破損する可能性が高くなるため、本実施形態のコマンド管理モジュール10は、外部装置3から受信したコマンドの実行回数の規定値をトリガー条件として保持し、コマンド実行回数をカウントした回数が、コマンド実行回数が所定値に達するとリフレッシュ処理を開始するようにしている。
【0042】
更に、データ保持に用いられている全ページを一度にリフレッシュ処理を行うと、リフレッシュ処理を行う際、外部装置3からコマンドを受信してからレスポンスを返信するまでの時間が長くなり過ぎるため、本実施形態では、リフレッシュ処理をページ単位で行うものとし、コマンド実行回数が所定値に達した後は、コマンド実行する毎に1ページ単位で最終のページまでリフレッシュ処理を行うようにしている。なお、コマンドの実行回数をカウントするカウンタは、最終のページをリフレッシュ処理すると、リフレッシュモジュール12によって初期化される。
【0043】
更に、リフレッシュ処理するページのデータを同一のページに書き込むと、不測の電源断がリフレッシュ処理中に発生した場合、リフレッシュ処理するページのデータが破損する可能性があるため、本実施形態においてリフレッシュモジュール12は、データ保持に利用されていない空きページにリフレッシュ処理するページのデータを書き込むようにすることで、不測の電源断がリフレッシュ処理中に発生しても、リフレッシュ元のデータが発生しないようにしている。
【0044】
図3は、フラッシュメモリ20の内容を説明する図である。本実施形態では、フラッシュメモリ20は管理領域20aとデータ領域20bに分割される。データ領域20bは、アプリケーションなどが利用するデータ保持に利用される領域で、本実施形態では、データ領域20bに含まれる全てのページ25をデータ保持に利用されず、データ保持に利用されない空きページが設けられる。例えば、図3では、データ領域20bは合計で9ページであるが、データ保持に利用されるページ25は5ページで、残りの4ページが空きページとなる。
【0045】
なお、リフレッシュ処理の対象となるのは、フラッシュメモリ20のデータ領域20bであるが、管理領域20aは、コマンド実行やリフレッシュ処理が実行される毎に更新されるため、管理領域20aが更新されずに、データ保持期間が短くなることはない。
【0046】
フレッシュメモリの管理領域20aには、論理ページ番号と物理ページ番号の対応関係を示すページ管理テーブル21と、コマンド実行の回数をカウントするための実行回数カウンタ22と、外部装置3から受信したコマンドの実行回数の規定値で、リフレッシュモジュール12を作動させるトリガー条件となるリフレッシュ開始値23と、次回にリフレッシュを行うページ25の論理ページ番号を示す次回ページ番号24が記憶される。なお、論理ページ番号とは、アプリケーションなどのコマンドから参照されるページ番号で、物理ページ番号とは、ICチップ2のハードウェアが物理的にページ25を識別するためのページ番号である。
【0047】
実行回数カウンタ22は、コマンド管理モジュール10及びリフレッシュモジュール12によって操作されるカウンタで、コマンド管理モジュール10は、コマンド実行を行う毎に実行回数カウンタ22を一つだけインクリメントし、リフレッシュモジュール12が、データの保存に利用される全てのページ25(ここでは、5ページ)についてリフレッシュ処理が完了すると、実行回数カウンタ22は初期化される。
【0048】
リフレッシュ開始値23はコマンド管理モジュール10から参照されるデータで、リフレッシュ開始値23によって、リフレッシュモジュール12を作動させる際の実行回数カウンタ22の値が示され、コマンド管理モジュール10は、コマンド実行する毎に実行回数カウンタ22を一つインクリメントした後、実行回数カウンタ22の値がリフレッシュ開始値23以上の場合、リフレッシュモジュール12を作動させてリフレッシュ処理を行う。
【0049】
リフレッシュモジュール12によって操作される次回ページ番号24は、次にリフレッシュ処理するページ25の論理ページ番号が格納され、リフレッシュモジュール12は、コマンド管理モジュール10から呼び出されると1ページ単位でのリフレッシュ処理を行い、リフレッシュ処理が完了すると、次回ページ番号24を一つだけインクリメントし、データ保持に利用されている全てのページ25(ここでは、5ページ)に全てについてリフレッシュ処理が完了すると、実行回数カウンタ22に加え、次回ページ番号24を初期値(ここでは、「1」)に初期化する。
【0050】
ページ管理テーブル21には、データ保持に利用するページ数(ここでは、5ページ)に合わせた論理ページ番号(ここでは、1から5)が記述され、ページ管理テーブル21によって、それぞれの論理ページ番号に対応する物理ページ番号が示される。また、本実施形態では、リフレッシュ処理したページ25を空ページにできるように、リフレッシュ処理したページ25の論理ページ番号に対応して、リフレッシュ処理する前の物理ページ番号である旧物理ページ番号が記述される。
【0051】
ここから、リフレッシュ処理に係るコンピュータプログラムの動作について説明する。図4は、コマンド管理モジュール10の動作を説明するフロー図で、図5は、リフレッシュモジュール12の動作を説明するフロー図である。
【0052】
まず、図4を参照しながら、コマンド管理モジュール10の動作について説明する。外部装置3からコマンドを受信すると(S1)、コマンド管理モジュール10が動作し、コマンド管理モジュール10は動作すると、外部装置3から受信したコマンドに対応するコマンドモジュール11を呼び出して、外部装置3から受信したコマンドに係る処理を実行する(S2)。
【0053】
呼び出したコマンドモジュール11の処理が終了すると、コマンド管理モジュール10は、この時点で、コマンド実行に対するレスポンスを送信せずに、実行回数カウンタ22を一つだけインクリメントした後(S3)、実行回数カウンタ22の値がリフレッシュ開始値23以上であるか確認する(S4)。
【0054】
コマンド管理モジュール10は、実行回数カウンタ22の値がリフレッシュ開始値23以上の場合、リフレッシュモジュール12を呼び出してリフレッシュ処理を実行した後(S5)、リフレッシュ処理が終了すると、外部装置3から受信したコマンドの実行結果を示すレスポンスを外部装置3へ送信して(S6)、この手順は終了する。
【0055】
また、コマンド管理モジュール10は、実行回数カウンタ22の値がリフレッシュ開始値23未満の場合、リフレッシュモジュール12を呼び出すことなく、外部装置3から受信したコマンドの実行結果を示すレスポンスを外部装置3へ送信して(S6)、この手順は終了する。
【0056】
次に、図5を参照しながら、リフレッシュモジュール12の動作について説明する。リフレッシュモジュール12は、コマンド管理モジュール10から呼び出されると、次回ページ番号24を参照し、リフレッシュ処理の対象となるページ25の論理ページ番号であるリフレッシュ元の論理ページ番号を取得した後(S10)、ページ管理テーブル21を確認し、リフレッシュ元の論理ページ番号に対応する物理ページ番号をリフレッシュ元の物理ページ番号として特定する(S11)。
【0057】
リフレッシュモジュール12は、リフレッシュ元の物理ページ番号と特定すると、リフレッシュ元の物理ページ番号のページに保持されているデータをページコピーするページの物理ページ番号であるリフレッシュ先の物理ページ番号を決定する処理を実行する(S12)。
【0058】
リフレッシュ先の物理ページ番号を決定する方法は様々考えられるが、ここでは、リフレッシュ元の物理ページ番号から番号の大きい順に空きページの物理ページ番号を検索し、最初に検索した空きページの物理ページ番号をリフレッシュ先の物理ページ番号として決定する。なお、リフレッシュ元の物理ページ番号より番号が大きい空きページがない場合、物理ページ番号の先頭に戻り空ページの物理ページ番号を検索する。なお、ページ管理テーブル21において、論理ページ番号に対応付けられていない物理ページ番号が空ページの物理ページ番号になる。
【0059】
リフレッシュモジュール12は、リフレッシュ先の物理ページ番号を決定すると、リフレッシュ元の物理ページ番号のページ25で保持されているデータをリフレッシュ先の物理ページ番号のページ25へページコピーを行うことで、リフレッシュ処理の対象となるページ25のデータをリフレッシュ処理する(S13)。
【0060】
なお、ページコピーの処理では、RAM2bにデータが退避されないため、不測の電源断がリフレッシュ処理中に発生しても、リフレッシュ元の物理ページ番号のページに保持されていたデータは破損することはない。
【0061】
リフレッシュモジュール12は、リフレッシュ処理の対象となるページ25のデータをリフレッシュ処理すると、リフレッシュ処理の対象となるページ25のリフレッシュ処理が正常に完了したことを確定する処理として、ページ管理テーブル21を更新する処理を行う(S14)。なお、ここでは、ページ管理テーブル21を更新する処理として、リフレッシュモジュールは、リフレッシュ元の論理ページ番号に対応する物理ページ番号をリフレッシュ元の物理ページ番号からリフレッシュ先の物理ページ番号に更新し、更に、旧物理ページ番号をリフレッシュ元の物理ページ番号に更新する。
【0062】
次に、リフレッシュモジュール12は、前回のリフレッシュ処理に係るデータがページ管理テーブル21に残っているかを確認し(S15)、前回のリフレッシュ処理に係るデータが残っていれば、前回のリフレッシュ処理に係るデータを削除する処理を実行する(S16)。具体的には、ページ管理テーブル21に、今回書き込んだ以外の旧物理ページ番号が残っているかを確認し、残っている場合には、今回書き込んだ以外の旧物理ページ番号に加え、該旧物理ページ番号のページ25で保持されているデータを初期化する処理を実行する。
【0063】
次に、リフレッシュモジュール12は、今回、リフレッシュ処理した論理ページ番号が最終の論理ページ番号であるかを確認することで、今回、リフレッシュ処理したページが最終のページであるか確認する(S17)。
【0064】
リフレッシュモジュール12は、最終のページでなければ、次回ページ番号24を一つだけインクリメントする処理を行い(S18)、最終のページであれば、次回ページ番号24を先頭の論理ページ番号(ここでは、「1」)に更新し(S19)、更に、実行回数カウンタ22を「0」に初期化する(S20)。
【0065】
ここから、図4及び図5で図示したフローについて補足説明を行う。まず、図4において、リフレッシュ処理が実行されないときの処理について説明する。図6は、リフレッシュ処理が実行されないケールを説明する図である。
【0066】
図6は、コマンド実行の回数が21回目のケースを説明する図である。21回目に実行されるコマンドが論理ページ番号(ここでは、「4」)のデータを更新するコマンド処理の場合、図4のS2において、ページ管理テーブル21が参照され、論理ページ番号(ここでは、「4」)に対応する物理ページ番号「5」のページ25に対して書き込み処理が実行された後、図4のS3において、実行回数カウンタ22が一つだけインクリメントされる。
【0067】
21回目のコマンド処理が実行される前は、実行回数カウンタ22の値は「20」であるため、図4のS3において、実行回数カウンタ22の値は「21」にインクリメントされるが、「21」はリフレッシュ開始値23「100」未満であるため、図4のS5のリフレッシュ処理は実行されない。
【0068】
次に、初回のリフレッシュ処理が実行される際の処理について説明する。図7は、初回のリフレッシュ処理が実行されるケースを説明する図である。
【0069】
図7では、リフレッシュ開始値23が「100」であるため、初回のリフレッシュ処理が実行される前は、実行回数カウンタ22の値は「99」で、初回のリフレッシュ処理が実行されるケースでは、図4のS3において、実行回数カウンタ22の値は「100」にインクリメントされ、図5で詳細な手順を説明した図4のS5のリフレッシュ処理が実行される。
【0070】
図5のS10において、リフレッシュ元の論理ページ番号は次回ページ番号24で示され、ここでは、初回のリフレッシュ処理であるため該論理ページ番号は「1」である。また、リフレッシュ元の論理ページ番号に対応する物理ページ番号は、図7のページ管理テーブル21によれば、リフレッシュ元の物理ページ番号は「1」である。
【0071】
図5のS12において、リフレッシュ元の物理ページ番号(ここでは、「1」)から番号の大きい順に空きページの物理ページ番号が検索され、最初に検索される空ページの物理ページ番号は「6」になるため、リフレッシュ先の物理ページ番号は「6」として決定され、図5のS13において、リフレッシュ元の物理ページ番号「1」のページ25に保持されているデータがリフレッシュ先の物理ページ番号(ここでは、「6」)のページ25にページコピーされることで、リフレッシュ元の論理ページ番号(ここでは、「1」)のページ25に保持されていたデータがリフレッシュ処理される。
【0072】
また、リフレッシュ処理の対象となる論理ページ番号(ここでは、「1」)に対応する物理ページ番号は「6」になるため、図5のS14において、リフレッシュ処理の対象となる論理ページ番号(ここでは、「1」)に対応する物理ページ番号は「1」から「6」に更新され、リフレッシュ処理の対象となる論理ページ番号(ここでは、「1」)に対応付けられた旧物理ページ番号に「1」が記述される。
【0073】
また、ここでは、初回のリフレッシュ処理であるため、図5のS15において、前回のリフレッシュ処理に係るデータはなく、かつ、今回、リフレッシュ処理した論理ページ番号(ここでは、「1」)は最終の論理ページ番号(ここでは、「5」)ではないため、図5のS18において、次回ページ番号24を「1」から「2」へ更新する処理が実行される。
【0074】
次に、2回目のリフレッシュ処理を行う際の処理について説明する。図8は、2回目のリフレッシュ処理が実行されるケースを説明する図である。
【0075】
図8では、2回目のリフレッシュ処理を行う際の処理が実行される前、実行回数カウンタ22の値は「100」であるため、図4のS2においてコマンドが実行された後、図4のS3において、実行回数カウンタ22は「100」から「101」にインクリメントされる。
【0076】
実行回数カウンタ22の値「101」はリフレッシュ開始値23「100」以上であるため、図4のS5のリフレッシュ処理が実行される。図5のS10において、リフレッシュ元の論理ページ番号は次回ページ番号24で示され、ここでは、2回目のリフレッシュ処理であるためリフレッシュ元の論理ページ番号は「2」である。また、図5のS11において、リフレッシュ元の論理ページ番号に対応する物理ページ番号で、リフレッシュ元の物理ページ番号は、図8のページ管理テーブル21によれば「3」になる。
【0077】
図5のS12において、リフレッシュ元の物理ページ番号(ここでは、「3」)から順に空きページの物理ページ番号を検索し、最初に検索される空ページの物理ページ番号は「7」になるため、リフレッシュ先の物理ページ番号は「7」として決定される。
【0078】
また、図5のS13において、リフレッシュ元の物理ページ番号(ここでは、「3」)のページ25に保持されているデータがリフレッシュ先の物理ページ番号(ここでは、「7」)のページ25にページコピーされることで、リフレッシュ元の論理ページ番号のページ25に保持されていたデータがリフレッシュ処理される。
【0079】
また、リフレッシュ処理の対象となる論理ページ番号(ここでは、「2」)に対応する物理ページ番号は「7」に変更されるため、図5のS14において、リフレッシュ処理の対象となる論理ページ番号(ここでは、「2」)に対応する物理ページ番号は「3」から「7」に更新され、リフレッシュ処理の対象となる論理ページ番号(ここでは、「2」)に対応付けられた旧物理ページ番号に「3」が記述される。
【0080】
また、ここでは、2回目のリフレッシュ処理であるため、図5のS15において、初回のリフレッシュ処理に係るデータが存在し、ここでは、図5のS16において、論理ページ番号「1」に対応付けられている旧物理ページ番号「1」と、旧物理ページ番号「1」のページ25に保持されているデータが初期化される。更に、今回、リフレッシュ処理した論理ページ番号は最終の論理ページ番号(ここでは、「5」)ではないため、図5のS17において、次回ページ番号24を「2」から「3」へ更新する処理が実行される。
【0081】
次に、最終のリフレッシュ処理を行う際の処理について説明する。図9は、最終のリフレッシュ処理を行うケースを説明する図である。
【0082】
図9では、最終(ここでは、5回目)のリフレッシュ処理が実行される前、実行回数カウンタ22の値は「103」で、最終のリフレッシュ処理が実行される際、図4のS3において、実行回数カウンタ22は「103」から「104」にインクリメントされる。
【0083】
実行回数カウンタ22の値「104」はリフレッシュ開始値23「100」以上であるため、図4のS5において、最終(ここでは、5回目)のリフレッシュ処理が実行される。図5のS10において、リフレッシュ処理元の論理ページ番号は次回ページ番号24で示され、ここでは、5回目のリフレッシュ処理であるためリフレッシュ処理元の論理ページ番号は「5」である。また、図5のS11において、リフレッシュ処理元の論理ページ番号に対応する物理ページ番号で、リフレッシュ元の物理ページ番号は、図9のページ管理テーブル21によれば「4」になる。
【0084】
図5のS12において、リフレッシュ元の物理ページ番号(ここでは、「4」)から番号の大きい順に空きページの物理ページ番号を検索しても、空きページの物理ページ番号は検索されないため、物理ページ番号の先頭に戻り空ページの物理ページ番号が検索され、最初に検索される空ページの物理ページ番号は「1」になるため、リフレッシュ先の物理ページ番号は「1」として決定される。
【0085】
そして、図5のS13において、リフレッシュ元の物理ページ番号「4」のページ25に保持されているデータがリフレッシュ先の物理ページ番号「1」のページ25へページコピーされることで、リフレッシュ対象となる論理ページ番号(ここでは、「5」)のページ25に保持されているデータがリフレッシュ処理される。
【0086】
また、リフレッシュ処理の対象となる論理ページ番号(ここでは、「5」)に対応する物理ページ番号は「1」に変更されるため、図5のS14において、リフレッシュ処理の対象となる論理ページ番号(ここでは、「5」)に対応する物理ページ番号は「4」から「1」に更新され、リフレッシュ処理の対象となる論理ページ番号(ここでは、「5」)に対応付けられた旧物理ページ番号に「4」が記述される。
【0087】
また、最終のリフレッシュ処理であるため、図5のS15において、4回目のリフレッシュ処理に係るデータは存在し、図5のS15において、論理ページ番号「4」に対応付けられている旧物理ページ番号「5」と、旧物理ページ番号「5」のページ25に保持されているデータが初期化される。
【0088】
また、図5のS17において、最終のリフレッシュ処理すなわち、今回、リフレッシュ処理した論理ページ番号は最終のページ番号であるため、図5のS19において、次回ページ番号24は先頭の論理ページ番号「1」に更新され、更に、図5のS20において、実行回数カウンタ22の値は「0」に初期化される。
【符号の説明】
【0089】
1 ICカード
10 コマンド管理モジュール
11 コマンドモジュール
12 リフレッシュモジュール
20 フラッシュメモリ
21 ページ管理テーブル
22 実行回数カウンタ
23 リフレッシュ開始値
24 次ページ番号
25 データ領域のページ


【特許請求の範囲】
【請求項1】
フラッシュメモリに保持されているデータを再書き込みするリフレッシュ処理を実行するリフレッシュ手段と、外部装置からコマンドを受信すると、該コマンドを処理した後、前記リフレッシュ手段を作動させるトリガー条件が成立していると、前記リフレッシュ手段を呼び出し、前記リフレッシュ手段の処理が終了すると、該コマンドのレスポンスを外部装置へ送信するコマンド管理手段と、を備えたことを特徴とするICカード。
【請求項2】
外部装置から受信したコマンドの実行回数の規定値を前記トリガー条件として保持し、前記コマンド管理手段は、外部装置から受信したコマンドの実行回数をカウントするカウンタを有し、前記カウンタをインクリメントした後の値が前記規定値になると、前記リフレッシュ手段を呼び出すことを特徴とする、請求項1に記載のICカード。
【請求項3】
論理ページ番号に対応する物理ページ番号を記述したページ管理テーブルを有し、前記リフレッシュ手段は、次にリフレッシュ処理する論理ページの論理ページ番号である次回ページ番号を保持し、前記コマンド管理手段から呼び出されると、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページ番号で特定されるページをリフレッシュ処理した後、前記次回ページ番号を更新する処理として、前記次回ページ番号が最終の論理ページ番号でなければ、前記次回ページ番号を一つインクリメントし、前記次回ページ番号が最終の論理ページ番号であれば、前記次回ページ番号及び前記カウンタを初期化することを特徴とする、請求項2に記載のICカード。
【請求項4】
データ保持に利用しない空きページが設けられるように論理ページの総数が設定され、前記リフレッシュ手段は、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページのデータを、所定のアルゴリズムにより決定した前記空ページにページコピーした後、前記次回ページ番号を更新する処理を実行する前に、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を該空ページの物理ページ番号に更新する処理を行うことを特徴とする、請求項3に記載のICカード。
【請求項5】
前記リフレッシュ手段は、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を、リフレッシュ処理される前の旧物理ページ番号として該論理ページ番号に対応付けて前記ページ管理テーブルに記憶する処理を行い、前記次回ページ番号を更新する処理を実行する前に、前回の前記旧物理ページ番号が前記ページ管理テーブルに記憶されていれば、該旧物理ページ番号を前記ページ管理テーブルから削除すると共に、該旧物理ページ番号で特定されるページを初期化することを特徴とする、請求項4に記載のICカード。
【請求項6】
ICカードが、外部装置からコマンドを受信すると、該コマンドを処理した後、フラッシュメモリのリフレッシュ処理を行うトリガー条件を確認するステップa、
前記ICカードが、前記トリガー条件が成立している場合、前記ICカードに実装されたフラッシュメモリに保持されているデータをページ単位で取得し、フラッシュメモリにページ単位で該データを再書き込みするリフレッシュ処理を実行するステップb、
リフレッシュ処理が終了すると、ステップaで受信したコマンドのレスポンスを外部装置へ送信するステップcが実行されることを特徴とする、ICカードのリフレッシュ方法。
【請求項7】
前記ICカードは、外部装置から受信したコマンドの実行回数の規定値を前記トリガー条件として保持し、前記ステップaにおいて、前記ICカードは、外部装置から受信したコマンドの実行回数をカウンタを利用してカウントし、前記ステップbにおいて、前記ICカードは、インクリメント後の前記カウンタの値が前記規定値になると、リフレッシュ処理を実行することを特徴とする、請求項6に記載のICカードのリフレッシュ方法。
【請求項8】
前記ICカードは、論理ページ番号に対応する物理ページ番号を記述したページ管理テーブルと、次にリフレッシュ処理する論理ページの論理ページ番号である次回ページ番号を保持し、前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページ番号で特定されるページをリフレッシュ処理した後、前記次回ページ番号を更新する処理として、前記次回ページ番号が最終の論理ページ番号でなければ、前記次回ページ番号を一つインクリメントし、前記次回ページ番号が最終の論理ページ番号であれば、前記次回ページ番号及び前記カウンタを初期化することを特徴とする、請求項7に記載のICカードのリフレッシュ方法。
【請求項9】
前記ICカードは、データ保持に利用しない空きページが設けられるように論理ページの総数が設定され、前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを参照し、前記次回ページ番号に対応する物理ページのデータをページ単位で取得し、所定のアルゴリズムにより決定した前記空ページに該データをページ単位で再書き込みした後、前記次回ページ番号を更新する処理を実行する前に、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を該空ページの物理ページ番号に更新する処理を行うことを特徴とする、請求項8に記載のICカードのリフレッシュ方法。
【請求項10】
前記ステップbにおいて、前記ICカードは、前記ページ管理テーブルを更新する処理として、前記次回ページ番号で示される論理ページ番号に対応付けられた物理ページ番号を、リフレッシュ処理される前の旧物理ページ番号として該論理ページ番号に対応付けて前記ページ管理テーブルに記憶する処理を行い、前記次回ページ番号を更新する処理を実行する前に、前回の前記旧物理ページ番号が前記ページ管理テーブルに記憶されていれば、該旧物理ページ番号を前記ページ管理テーブルから削除すると共に、該旧物理ページ番号で特定されるページを初期化することを特徴とする、請求項9に記載のICカードのリフレッシュ方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−242925(P2012−242925A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−110067(P2011−110067)
【出願日】平成23年5月17日(2011.5.17)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】