(57)【要約】【課題】不揮発性メモリの寿命を伸ばすことができる仕組みと、アプリケーションの実行速度の低下を軽減できる仕組みを有する電子情報記憶媒体を提供する。【解決手段】処理部が、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す第１の記憶領域上の位置に記憶されたデータの書き換え又は読み出しと、変換情報に基づく変換がなされていない物理アドレスが示す第２の記憶領域上の位置に記憶されたデータの書き換え又は読み出しを行う電子情報記憶媒体とする。【選択図】図３
2019128905.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体であって、
前記処理部は、
仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しと、
前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しと、
を行うことを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記処理部は、前記第１の記憶領域上の前記データについて書き換えを行う場合に、それまでの書き込み回数が相対的に低い記憶素子に書き換えのデータを書き込み、当該データに対応する仮想アドレスが当該記憶素子を示す物理アドレスに変換されるように前記変換情報を更新することを特徴とする電子情報記憶媒体。
【請求項３】
請求項１又は２に記載の電子情報記憶媒体であって、
前記第２の記憶領域は、書き換え頻度より読み込み頻度が高い前記データを記憶することを特徴とする電子情報記憶媒体。
【請求項４】
請求項３に記載の電子情報記憶媒体であって、
書き換え頻度より読み込み頻度が高い前記データは、プログラムコードであることを特徴とする電子情報記憶媒体。
【請求項５】
請求項１乃至４の何れか一項に記載の電子情報記憶媒体であって、
前記第１の記憶領域は、読み込み頻度より書き換え頻度が高い前記データを記憶することを特徴とする電子情報記憶媒体。
【請求項６】
請求項５に記載の電子情報記憶媒体であって、
読み込み頻度より書き換え頻度が高い前記データは、カウンタであることを特徴とする電子情報記憶媒体。
【請求項７】
請求項１乃至６の何れか一項に記載の電子情報記憶媒体を備えるＩＣカード。
【請求項８】
ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体による情報処理方法であって、
前記処理部が、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第１工程と、
前記処理部が、前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第２工程と、
を含むことを特徴とする情報処理方法。
【請求項９】
ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体における前記処理部を、
仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第１手段、
前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第２手段、
として機能させることを特徴とするＯＳ。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣ（Integrated Circuit）チップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【０００２】
ＩＣチップなどの電子情報記憶媒体は、ＣＰＵ、ＲＡＭに加え、フラッシュメモリ等の不揮発性メモリを備え、不揮発性メモリにはＯＳ（Operating System）やアプリケーションプラグラム、各種データを記憶する。不揮発性メモリは沢山の記憶素子からなり、その構造上、数万〜数十万程度の書き換え回数の上限が存在し、その上限を超えた書き換えが行われた記憶素子については正常にデータの記録が行えなくなる。その上限による影響を受け難いようにするために、一般に不揮発性メモリについてウェアレベリング処理が行われている。
【０００３】
ウェアレベリング処理とは、書き換えが行われる記憶素子が特定のものに偏らないように分散することで、特定のデータについて繰り返し書き換えが発生した場合でもデバイス全体として記憶素子の消耗を平均化する技術である。ＯＳは、ウェアレベリング処理を実現するために、アプリケーションに対して見せるアドレスを仮想アドレスとする。そして、アプリケーションが仮想アドレスに対応するデータに対して書き込み又は読み込みの要求をした場合、ＯＳは自身が管理する仮想アドレスを物理アドレスに変換するための変換情報を用いて、仮想アドレスを物理アドレスに変換し、当該物理アドレスに記憶されたデータへの要求として処理する。このように、ＯＳは、仮想アドレスと物理アドレスを用いて不揮発性メモリを管理する仮想メモリ管理機構を有する。これにより、例えば、アプリケーションから見て特定のデータに対して書き込みを繰り返す場合であっても、データの位置を変更するとともにこれに合わせて変換情報を更新することによって、複数の記憶素子にストレスを分散することができ、不揮発性メモリ全体として飛躍的に書き換え耐久性を向上させることができる。
【０００４】
特許文献１には、フラッシュメモリに対してウェアレベリング処理を行う記憶装置について開示されている。当該記憶装置は、ホストシステムから指示されたデータを記憶しておくためのユーザ領域と、各ブロックは消去済み状態であり、各ブロックの書き換え回数を平均化するために使用されるブロックのあつまりである代替領域とを備えるフラッシュメモリを備え、ユーザ領域中でデータが格納されていない論理セクタアドレスと物理セクタアドレスとの対応関係を解除するとともに、対応関係が解除された物理ブロックを消去し代替領域のブロックとして使用可能化する。これにより、ウェアレベリング処理に用いられる代替領域を増やすことができ、ウェアレベリング処理をより有効に行うことができるため、フラッシュメモリの寿命を伸ばすことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３７６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ウェアレベリング処理を実現することにより、不揮発性メモリの寿命を伸ばすことができる一方、仮想メモリ管理機構のアドレス変換を要するという特性による処理オーバーヘッドにより、アプリケーションの実行速度が低下するという問題がある。例えば、非接触決済用アプリケーションは、短時間に処理を完了させることが要求されるため実行速度の低下は致命的な欠陥となり得る。
【０００７】
そこで、本発明は、不揮発性メモリの寿命を伸ばすことができる仕組みと、アプリケーションの実行速度の低下を軽減できる仕組みを有する電子情報記憶媒体等を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体であって、前記処理部は、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しと、前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しと、を行うことを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記処理部は、前記第１の記憶領域上の前記データについて書き換えを行う場合に、それまでの書き込み回数が相対的に低い記憶素子に書き換えのデータを書き込み、当該データに対応する仮想アドレスが当該記憶素子を示す物理アドレスに変換されるように前記変換情報を更新することを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１又は２に記載の電子情報記憶媒体であって、前記第２の記憶領域は、書き換え頻度より読み込み頻度が高い前記データを記憶することを特徴とする。
【００１１】
請求項４に記載の発明は、請求項３に記載の電子情報記憶媒体であって、書き換え頻度より読み込み頻度が高い前記データは、プログラムコードであることを特徴とする。
【００１２】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載の電子情報記憶媒体であって、前記第１の記憶領域は、読み込み頻度より書き換え頻度が高い前記データを記憶することを特徴とする。
【００１３】
請求項６に記載の発明は、請求項５に記載の電子情報記憶媒体であって、読み込み頻度より書き換え頻度が高い前記データは、カウンタであることを特徴とする。
【００１４】
請求項７に記載の発明は、請求項１乃至６の何れか一項に記載の電子情報記憶媒体を備えるＩＣカードである。
【００１５】
請求項８に記載の発明は、ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体による情報処理方法であって、前記処理部が、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第１工程と、前記処理部が、前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第２工程と、を含むことを特徴とする。
【００１６】
請求項９に記載の発明は、ＯＳにより管理される第１の記憶領域と第２の記憶領域を有し、アプリケーションに関するデータを記憶する不揮発性メモリと、前記ＯＳを実行する処理部とを有する電子情報記憶媒体における前記処理部を、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す前記第１の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第１手段、前記変換情報に基づく変換がなされていない物理アドレスが示す前記第２の記憶領域上の位置に記憶された前記データの書き換え又は読み出しを行う第２手段、として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、アドレス変換を介して不揮発性メモリ上のデータにアクセスする仕組みを有することにより、ウェアレベリング処理を実現でき、不揮発性メモリの寿命を伸ばすことができる。また、アドレス変換を介さずに不揮発性メモリ上のデータにアクセスする仕組みを有することにより、データの相対的な高速読み出しを実現でき、アプリケーションの実行速度の低下を軽減できる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態に係るＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。
【図２】本実施形態に係るＯＳの機能を説明するためブロック図である。
【図３】（Ａ）、（Ｂ）は、本実施形態に係る物理メモリ管理機構２１０と仮想メモリ管理機構２２０の概要を説明するための例図である。
【図４】（Ａ）は、本実施例に係るＩＣチップ１ａがアプリケーションをインストールする際の基本処理の一例を示すシーケンス図であり、（Ｂ）は、本実施例に係る不揮発性メモリ１３の構成例を示す図である。
【図５】（Ａ）は、アプリケーションに関するデータを不揮発性メモリ１３に配置する配置処理例１を示すシーケンス図であり、（Ｂ）−（Ｄ）は、配置処理例１における不揮発性メモリ１３に配置されるデータの遷移例を示す図である。
【図６】配置処理例１におけるＯＳの動作例を示すフローチャートである。
【図７】（Ａ）は、アプリケーションに関するデータを不揮発性メモリ１３に配置する配置処理例２を示すシーケンス図であり、（Ｂ）、（Ｃ）は、配置処理例２における不揮発性メモリ１３に配置されるデータの遷移例を示す図である。
【図８】配置処理例２におけるＯＳの動作例を示すフローチャートである。
【図９】（Ａ）は仮想アドレスと物理アドレスの関係を示す図であり、（Ｂ）−（Ｄ）は、不揮発性メモリ１３に配置されたデータを参照する際の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップを搭載するＩＣカードに対して本発明を適用した場合の実施の形態である。
【００２０】
［１．ＩＣチップ１ａの構成］
まず、図１を参照して、ＩＣカード１に搭載されるＩＣチップ１ａの構成について説明する。図１は、ＩＣチップ１ａのハードウェア構成例を示す図である。本実施形態のＩＣカード１は、接触によるデータ通信と非接触によるデータ通信の２つの通信機能を兼ね備えたデュアルインターフェース型ＩＣカードである。但し、ＩＣカード１の種類はデュアルインターフェース型ＩＣカードに限定されず、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードにＩＣチップ１ａがエンベットされた接触型ＩＣカードであってもよいし、また、アンテナコイルを内蔵し無線でリーダ・ライタとデータ通信する非接触型ＩＣカードであってもよい。
【００２１】
図１に示すように、ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。ＣＰＵ１０は、ＲＯＭ１２又は不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。なお、Ｉ／Ｏ回路１４は、外部機器２とのインターフェイスを担う。これにより、ＩＣチップ１ａは、リーダ・ライタを備える外部機器２との間で接触又は非接触で通信を行うことができる。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部機器２には通信機器の機能を担う制御部が該当する。
【００２２】
不揮発性メモリ１３には、例えばフラッシュメモリ、強誘電体メモリ又は「Electrically Erasable Programmable Read-Only Memory」を適用することができる。不揮発性メモリ１３は、ＩＣカードＯＳ（以下、「ＯＳ」という場合がある）や各種アプリケーション及びこれらが使用するデータを記憶する。
【００２３】
ＩＣチップ１ａにインストールされるアプリケーションは、例えば、ＪＡＶＡ（登録商標）でプログラミングされており、コンパイラによって中間言語と呼ばれる実行形式であるバイトコードに変換される。バイトコードは、算術や分岐といった命令を含んだデータ列であり、仮想マシン（Virtual Machine）により実行される。
【００２４】
［２．ＯＳの機能］
図２は、ＯＳの機能を説明するためブロック図である。ＩＣチップ１ａ上で動作するＯＳは不揮発性メモリ１３を管理するために、物理メモリ管理機構２１０と、仮想メモリ管理機構２２０を実現する。また、物理メモリ管理機構２１０には、不揮発性メモリ１３上の物理メモリ管理記憶領域２３０が割り当てられ、仮想メモリ管理機構２２０には、不揮発性メモリ１３上の仮想メモリ管理記憶領域２４０が割り当てられる。アプリケーションに関するデータは、物理メモリ管理機構２１０に管理される物理メモリ管理記憶領域２３０、又は、仮想メモリ管理機構２２０に管理される仮想メモリ管理記憶領域２４０に記憶される。
【００２５】
図３（Ａ）に示すように、物理メモリ管理機構２１０には、不揮発性メモリ１３（実メモリ空間）の一部が物理メモリ管理記憶領域２３０として割り当てられる。また、仮想メモリ管理機構２２０にも、不揮発性メモリ１３の一部が仮想メモリ管理記憶領域２４０として割り当てられる。
【００２６】
物理メモリ管理機構２１０は、アプリケーションが扱うアドレスを変換せずに物理アドレスとして扱い、不揮発性メモリ１３（実メモリ空間）の位置を特定する機構である。一方、仮想メモリ管理機構２２０は、仮想メモリ空間を提供し、アプリケーションが扱うアドレス（仮想アドレス）を変換情報（仮想アドレスを 物理アドレスに変換するための情報（図示しない））に基づいて変換し、変換後の物理アドレスにより不揮発性メモリ１３（実メモリ空間）の位置を特定する機構である。なお、変換情報は不揮発性メモリ１３に記憶されるとともに、ＯＳが仮想メモリ管理機構２２０を実現する際にＲＡＭ１１に複写されてアドレス変換に利用される。また、ＲＡＭ１１の変換情報が更新された場合には、その更新内容が不揮発性メモリ１３の変換情報に反映される。 
【００２７】
ここで、物理メモリ管理機構２１０と仮想メモリ管理機構２２０についてデータを読み込む速度を比較すると、物理メモリ管理機構２１０はアドレス変換をしない一方、仮想メモリ管理機構２２０はアドレス変換をするため、物理メモリ管理記憶領域２３０に記憶されているデータを読み込む速度は、仮想メモリ管理記憶領域２４０に記憶されているデータを読み込む速度より速い。
【００２８】
次に、物理メモリ管理機構２１０と仮想メモリ管理機構２２０についてデータを書き換える時間を比較する。ＯＳは、不揮発性メモリ１３上のデータを書き換える際には、トランザクション制御を行う。トランザクション制御は、データの書き込みに関する一連の処理が電源断等により中断した場合に、一連の処理の開始前又は終了後の状態とする制御である。
【００２９】
物理メモリ管理記憶領域２３０のデータに対して行うトランザクション制御は、次の（１）〜（４）の手順で実行され、（１）〜（４）の手順で不揮発性メモリ１３への書き込みを伴う。
（１）更新前のデータが記憶されているページのコピーを不揮発性メモリ１３に書き込む（バックアップ）
（２）ログ情報（電源断発生時にＯＳの初期化処理の一環で、バックアップしたデータで一連の処理の開始前に戻すための情報）を作成し、不揮発性メモリ１３に書き込む
（３）該当ページに更新後のデータを書き込む
（４）（２）で作成して不揮発性メモリ１３に記憶させたログ情報を消去する
【００３０】
一方、仮想メモリ管理記憶領域２４０のデータに対して行うトランザクション制御は、次の手順で実行され、（１）、（３）の手順で不揮発性メモリ１３への書き込みを伴う。
（１）更新後のデータを更新前のデータが記憶されているページとは異なるページに書き込む
（２）ＲＡＭ１１上の変換情報を更新する
（３）ＲＡＭ１１上の変換情報の更新を不揮発性メモリ１３上の変換情報に反映する
【００３１】
このように、物理メモリ管理記憶領域２３０のデータに対して行うトランザクション制御時の不揮発性メモリ１３への書き込み回数は、仮想メモリ管理記憶領域２４０のデータに対して行うトランザクション制御時の不揮発性メモリ１３への書き込み回数よりも多い。そのため、物理メモリ管理記憶領域２３０のデータに対して行うトランザクション制御に要する処理時間は、仮想メモリ管理記憶領域２４０のデータに対して行うトランザクション制御に要する処理時間よりも長い。これにより、仮想メモリ管理記憶領域２４０のデータを書き換える時間は、物理メモリ管理記憶領域２３０のデータを書き換える時間よりも短い。
【００３２】
次に、物理メモリ管理機構２１０と仮想メモリ管理機構２２０について、不揮発性メモリ１３の記憶素子に対するストレスを比較する。物理メモリ管理機構２１０では、データが物理メモリ管理記憶領域２３０に固定的に配置されるため、当該データの書き換え頻度が高いと、当該データを記憶する記憶素子にストレスが集中し、製品寿命が短くなる。一方、仮想メモリ管理機構２２０では、所定の再配置条件が満たされた場合に（例えば、データの書き換え時又は定期的に）、仮想メモリ管理記憶領域２４０における使用頻度の低い位置にデータが再配置されるため、ストレスが平準化され、製品寿命が長くなる。なお、物理メモリ管理記憶領域２３０の一部が故障すると製品としての故障に直結するが、仮想メモリ管理記憶領域２４０の一部が故障しても他の領域へデータを移動することができるため、製品としての故障に繋がらない。
【００３３】
このように、物理メモリ管理機構２１０（物理メモリ管理記憶領域２３０）と仮想メモリ管理機構２２０（仮想メモリ管理記憶領域２４０）には夫々特性があることから、その特性に応じて、アプリケーションに関するデータを配置することが好ましい。具体的には、物理メモリ管理記憶領域２３０には、書き換え頻度より読み込み頻度が高いデータを記憶させ、仮想メモリ管理記憶領域２４０には、読み込み頻度より書き換え頻度が高いデータを記憶させるのが好ましい。例えば、図３（Ｂ）に示すように、書き換え頻度より読み込み頻度が高い、プログラムコード（ＣＰＵが読み込み、解釈して、実行するというサイクルが繰り返されるため、処理速度に与える影響が大きい）及びアプリケーションデータ（アプリケーションで利用されるデータ）といったデータを物理メモリ管理記憶領域２３０に記憶させ、読み込み頻度より書き換え頻度が高いカウンタ（アプリケーションで利用されるカウンタ）といったデータを仮想メモリ管理記憶領域２４０に記憶させる。なお、読み込み頻度より書き換え頻度が高いデータであっても、高速で読み出すことを重視するデータについては、故障のリスクを把握した上で、物理メモリ管理記憶領域２３０に記憶させることとしてもよい。
【００３４】
ここで、プログラムコード、アプリケーションデータ及びカウンタなどのアプリケーションに関するデータを、物理メモリ管理記憶領域２３０と仮想メモリ管理記憶領域２４０の何れにどのように配置するかについて説明する。まず、プログラムコードは、基本的に書き換えが行われず頻繁に読み込まれるデータであるため、サーバ等からプログラムコードがロードされると、ＯＳは物理メモリ管理記憶領域２３０に配置する。一方、アプリケーションデータやカウンタなどについては、その用途をＯＳは把握できないため、アプリケーション側から何れに配置するかを指定してもらい配置するのが好ましい。例えば、ＯＳはアプリケーションのインストール時に、プログラムコードに記述されたインスタンスを生成する処理手順を実行する中で、処理手順にて指定された何れかの記憶領域に記憶させる。また、何れかの記憶領域をインストールパラメータで指定することとしてもよい。更に、データにタグを付けておいて、仮想アドレス管理記憶領域２４０に配置するデータのタグ一覧をコマンドに組み込むこととし、それに従ってＯＳが何れかの領域に配置することとしてもよい。
【００３５】
次に、アプリケーションに関するデータを不揮発性メモリ１３に配置する際の実施例、及び、不揮発性メモリ１３に配置されたアプリケーションに関するデータを参照する際の実施例について説明する。
【００３６】
［３．基本処理］
まず、図４（Ａ）を用いて、ＩＣチップ１ａが、サーバからアプリケーションを受信してインストールする際の基本的な処理の流れについて説明する。
【００３７】
ステップＳ１において、サーバはＩＣチップ１ａに対してＩＣチップ１ａ内の管理アプリケーションであるＳＤ（Ｓｅｃｕｒｉｔｙ  Ｄｏｍａｉｎ）であって、インストールするアプリケーションを管理するＳＤとの通信路を形成するためにＳＥＬＥＣＴコマンドを送信する。ＳＥＬＥＣＴコマンドは、通信路の相手先となるアプリケーションを識別するＩＤであるＡＩＤと、当該アプリケーションとの通信路（ロジカルチャネル）を識別するロジカルチャネル番号を含む。これに対して、ＩＣチップ１ａのＯＳ（を実行するＣＰＵ１０）はコマンドに応じて通信路を形成するための処理を実行し、ＯＫレスポンスをサーバに送信する。但し、コマンドに応じた処理を正常終了できなかった場合にはエラーが発生したことを示すレスポンスをサーバに送信する（以下、ステップＳ２〜Ｓ９について同様）。これにより、ロジカルチャネル番号で識別される通信路（ロジカルチャネル）が形成され、以降、サーバはコマンドに当該ロジカルチャネル番号を含ませることにより、当該ロジカルチャネル番号で識別される通信路を介して、ＳＤと通信を行うことができる。
【００３８】
次いで、ステップＳ２及びステップＳ３において、サーバは、通信路の機密性を高めるためにそれまでに形成した通信路（ロジカルチャネル）をセキュアな通信路にするセキュア処理（ＳＣＰでコマンドを保護するための相互認証処理）を実行する。相互認証処理は、プロトコルで決められたアルゴリズムに従い、暗号演算の元となる鍵を互いが知っているという前提の下、サーバとＩＣチップ１ａが互いを認証する処理である。具体的には、サーバが相互認証用のコマンドであるＩＮＩＴＩＡＬＩＺＥ  ＵＰＤＡＴＥコマンド及びＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドをＩＣチップ１ａに送信し、ＩＣチップ１ａのＯＳがそれぞれのコマンドに応じた処理を実行し、正常に処理を完了するとＯＫレスポンスをサーバに送信することにより行われる。
【００３９】
次いで、ステップＳ４において、サーバは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドをＩＣチップ１ａに送信する。ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドでは、後からＬＯＡＤコマンドにより送信されるプログラムコードのＡＩＤの長さ等が送信される。これに対して、ＩＣチップ１ａのＯＳがコマンドに応じた処理を実行し、正常に処理を完了するとＯＫレスポンスをサーバに送信する。
【００４０】
次いで、ステップＳ５〜ステップＳ８において、サーバは、プログラムコードをＮ個に分割して、それぞれ、ＬＯＡＤコマンド（１ｓｔ）〜ＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））によりＩＣチップ１ａに送信する。これに対して、ＩＣチップ１ａのＯＳはそれぞれのＬＯＡＤコマンドに応じた処理を実行し、正常に処理を完了するとＯＫレスポンスをサーバに送信する。
【００４１】
次いで、ステップＳ９において、サーバは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンドをＩＣチップ１ａに送信する。これに対して、ＩＣチップ１ａのＯＳは、先にロードされたプログラムコードに基づき、インスタンスの生成処理を実行し、正常に処理を完了するとＯＫレスポンスをサーバに送信する。
【００４２】
次に、図４（Ｂ） を用いて、実施例における物理メモリ管理記憶領域２３０と仮想メモリ管理記憶領域２４０の構成例について説明する。本実施例では、物理メモリ管理記憶領域２３０は、物理メモリ管理記憶領域２３０Ａと物理メモリ管理記憶領域２３０Ｂとを含む。例えば、物理メモリ管理記憶領域２３０Ａと仮想メモリ管理記憶領域２４０は、アプリケーションに関連する情報（「ＡＰ関連情報」という場合がある）を記憶するために用いられる領域として、物理メモリ管理記憶領域２３０Ｂは、ＯＳに関連する情報（「ＯＳ関連情報」という場合がある）を記憶するために用いられる領域として使い分けることができる。ＯＳ関連情報とは、例えば、プログラムの識別子やサイズ等を管理するための管理データ（レジストリデータ）や変換情報（アドレス変換テーブル）などであり、生成、更新、削除イベントなどが固定的に発生（特定のコマンド処理にて動作）するという性質や、各情報のサイズが予め決まっており、且つ、その多くが固定長データであるという性質がある。一方、ＡＰ関連情報とは、例えば、インスタンス、配列、プログラムコードなどであり、生成、更新、削除イベントは固定的なものであるが、アプリケーションの設計に依存するため予め特定処理に関連して実行することが困難であるという性質や、各情報のサイズがまちまちでＯＳが事前に想定できないという性質がある。このように、ＡＰ関連情報とＯＳ関連情報には性質の違いがあるため、ＡＰ関連情報とＯＳ関連情報を記憶させる領域を分けておくことにより、ＯＳがＡＰ関連情報とＯＳ関連情報の生成、検索、更新、削除などをシンプルなアルゴリズムで行うことができ、延いては、処理速度や書き換え耐久性を向上させることができる。
【００４３】
［４．配置処理例１］
次に、図５を用いて、アプリケーションに関するデータを不揮発性メモリ１３に配置する配置処理例１について説明する。配置処理例１は、図５（Ａ）に示すように、上述した基本処理のステップＳ４〜ステップＳ８において、プログラムコードを不揮発性メモリ１３に配置する例である。ここでは、ステップＳ４〜ステップＳ８について説明し、その他のステップについての説明を省略する。
【００４４】
サーバは、上述した基本処理のステップＳ１〜ステップ３を終えると、ステップＳ４において、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドをＩＣチップ１ａに送信する。サーバはＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドにより、後続のＬＯＡＤコマンドにてプログラムコードをロードすることを宣言し、プログラム名を予約する。これに対して、ＩＣチップ１ａのＯＳ（を実行するＣＰＵ１０）は、プログラムの識別子やサイズ等を管理するための管理データ（レジストリデータ）３０１を作成し、図５（Ｂ）に示すように、ＯＳが管理する物理メモリ管理記憶領域２３０Ｂに配置する。なお、管理データ（レジストリデータ）３０１は、更新頻度が低いため物理メモリ管理記憶領域２３０Ｂに配置するのが好ましい。ＯＳは、正常に処理を完了するとＯＫレスポンスをサーバに送信する。
【００４５】
次いで、サーバは、ステップＳ５〜ステップＳ８において、ＬＯＡＤコマンド（１ｓｔ）〜ＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））のペイロードに、プログラムコードと、ＩＣチップ１ａ内のプログラム（ＡＰＩ（Application Programming Interface））へのリンク情報を、Ｎ個に分割して格納して、ＩＣチップ１ａに送信する。ＡＰＩは、アプリケーションからＯＳの機能を利用するためのインターフェイスである。これに対して、ＩＣチップ１ａのＯＳ（を実行するＣＰＵ１０）は、図５（Ｃ）に示すように、それぞれのＬＯＡＤコマンドにより受信した分割されたプログラムコード３１１〜３１４を物理メモリ管理記憶領域２３０Ａに配置する。また、ＯＳは、ＬＯＡＤコマンドの中盤で受信するリンク情報３２１Ｂを仮想メモリ管理記憶領域２４０に配置する。但し、物理メモリ管理記憶領域２３０Ａの仮想メモリ管理記憶領域２４０との境界に接する位置にリンク情報３２１Ａとして配置したり、物理メモリ管理記憶領域２３０Ｂの仮想メモリ管理記憶領域２４０との境界に接する位置にリンク情報３２１Ｃとして配置したりしてもよい。 物理メモリ管理記憶領域２３０Ａの仮想メモリ管理記憶領域２４０との境界に接する位置へリンク情報３２１Ａを配置することによる効果は、ＯＳが物理メモリ管理記憶領域２３０Ａに断片化が発生した場合に断片化を回収する機能を備えており、且つ、物理メモリ管理記憶領域２３０Ａに断片化が発生していない場合に生ずる。物理メモリ管理記憶領域２３０Ａに断片化が発生していない状態でＬＯＡＤ処理が始まると、ＯＳは、ＬＯＡＤコマンドにより受信したプログラムコード３１１〜３１４を物理メモリ管理記憶領域２３０Ａの前方（図５（Ｂ）の左側）から順次配置していく。ここで、リンク情報３２１は、ＬＯＡＤ処理の中盤でＩＣチップ１ａに送信され、ＬＯＡＤ処理の完了後に削除されるデータであるため、リンク情報３２１を受信した際にプログラムコードと混在させて配置してしまうと、ＬＯＡＤ処理の完了後にリンク情報３２１が配置された位置（プログラムコードとプログラムコードの間）で断片化が発生してしまう。そこで、リンク情報３２１を受信した際に、物理メモリ管理記憶領域２３０Ａの仮想メモリ管理記憶領域２４０との境界に接する位置（すなわち、物理メモリ管理記憶領域２３０Ａの末尾）にリンク情報３２１Ａを配置することで、ＬＯＡＤ処理の完了後にリンク情報３２１が削除されることによる断片化の発生を回避することができ、断片化を回収するための処理を省くことができる。なお、物理メモリ管理記憶領域２３０Ｂの仮想メモリ管理記憶領域２４０との境界に接する位置にリンク情報３２１Ｃとして配置する場合についても同様である。そして、ＯＳが、物理メモリ管理記憶領域２３０Ａ、２３０Ｂ又は仮想メモリ管理記憶領域２４０の何れの記憶領域にリンク情報を配置するかは、ＯＳが空き状態や削除の容易さに基づいて決定するのが好ましい。そして、ＯＳは、ＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））を受信すると、図５（Ｄ）に示すように、分割されたプログラムコード３１１〜３１４を連結してプログラム３１０を生成するとともに、ＩＣチップ１ａ内のプログラム（ＡＰＩ）とリンク処理を実行し、リンク情報３２１Ａ��又はリンク情報３２１Ｂ、３２１Ｃ）を削除する。ＯＳは、正常に処理を完了するとＯＫレスポンスをサーバに送信する。
【００４６】
次に、図６のフローチャートを用いて、図５で示した配置処理例１におけるＯＳの動作について説明する。図６のフローチャートは、ＩＣチップ１ａがサーバからコマンドを受信した場合に開始される。
【００４７】
まず、ＯＳ（を実行するＣＰＵ１０）は、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信したか否かを判定する（ステップＳ１０１）。ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信したと判定した場合には（ステップＳ１０１：ＹＥＳ）、管理データ（レジストリデータ）を作成し（ステップＳ１０２）、物理メモリ管理記憶領域２３０Ｂに配置し（ステップＳ１０３）、当該フローチャートの処理を終了する。一方、ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを受信していないと判定した場合には（ステップＳ１０１：ＮＯ）、次いで、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを処理済み、且つ、受信したコマンドが ＬＯＡＤコマンドか否かを判定する（ステップＳ１０４）。
【００４８】
ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを処理済みでない、又は、受信したコマンドがＬＯＡＤコマンドではないと判定した場合には（ステップＳ１０４：ＮＯ）、コマンドに応じた処理を実行し（ステップＳ１０５）、当該フローチャートの処理を終了する。なお、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを処理済みでなく、且つ、受信したコマンドがＬＯＡＤコマンドである場合には、ステップＳ１０５の処理において、エラーを示すＳＷ（Ｓｔａｔｕｓ  Ｗｏｒｄ）をサーバに送信する。一方、ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｌｏａｄ］コマンドを処理済み、且つ、受信したコマンドがＬＯＡＤコマンドであると判定した場合には（ステップＳ１０４：ＹＥＳ）、受信したコマンドはＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））か否かを判定する（ステップＳ１０６）。
【００４９】
ＯＳは、受信したコマンドはＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））であると判定した場合には（ステップＳ１０６：ＹＥＳ）、ＬＯＡＤコマンド（１ｓｔ）からＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））に分割されて受信したプログラムコードであって、物理メモリ管理記憶領域２３０に記憶されているプログラムコードを結合する（ステップＳ１０７）。次いで、ＯＳはＩＣチップ上のＡＰＩとリンク処理を行い（ステップＳ１０８）、リンク情報を削除し（ステップＳ１０９）、当該フローチャートの処理を終了する。
【００５０】
一方、ＯＳは、受信したコマンドはＬＯＡＤコマンド（Ｎｔｈ（ｌａｓｔ））ではないと判定した場合には（ステップＳ１０６：ＮＯ）、コマンドデータの内容はリンク情報であるか否かを判定する（ステップＳ１１０）。ＯＳは、コマンドデータの内容はリンク情報であると判定した場合には（ステップＳ１１０：ＹＥＳ）、リンク情報を仮想メモリ管理記憶領域２４０に配置し（ステップＳ１１１）、当該フローチャートの処理を終了する。但し、上述したように、リンク情報は、物理メモリ管理記憶領域２３０Ａ又は物理メモリ管理記憶領域２３０Ｂに配置してもよい。
【００５１】
一方、ＯＳは、コマンドデータの内容はリンク情報ではない（すなわち、コマンドデータの内容がプログラムコードである）と判定した場合には（ステップＳ１１０：ＮＯ）、プログラムコードを物理メモリ管理記憶領域２３０Ａに配置し（ステップＳ１１２）、当該フローチャートの処理を終了する。
【００５２】
［５．配置処理例２］
次に、図７を用いて、アプリケーションに関するデータを不揮発性メモリ１３に配置する配置処理例２について説明する。配置処理例２は、図７（Ａ）に示すように、上述した基本処理のステップＳ９及び、その後のステップＳ１０、ステップＳ１１において、プログラムコード以外のアプリケーションに関するデータを不揮発性メモリ１３に配置する例である。ここでは、ステップＳ９〜ステップＳ１１について説明し、その他のステップについての説明を省略する。
【００５３】
サーバは、上述した基本処理のステップＳ１〜ステップ８を終えると、ステップＳ９において、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンドをＩＣチップ１ａに送信する。これに対して、ＩＣチップ１ａのＯＳ（を実行するＣＰＵ１０）は、先にロードされたプログラムコードに基づき、アプリケーションをインストールする（アプリケーションのインスタンスを生成する）。このとき、ＯＳは、図７（Ｂ）に示すように、アプリケーションの指示に基づき、書き換え頻度より読み込み頻度が高いデータ３３１、３３２を物理メモリ管理記憶領域２３０Ａに配置する。また、ＯＳは、アプリケーションの指示に基づき、読み込み頻度より書き換え頻度が高いデータ３３３、３３４を仮想メモリ管理記憶領域２４０に配置する。更に、ＯＳは、インスタンス（アプリケーションをインスタンス化して得られたインスタンス）の識別子やサイズ等を管理するための管理データ（レジストリデータ）３３５を作成し、ＯＳが管理する物理メモリ管理記憶領域２３０Ｂに配置する。なお、管理データ（レジストリデータ）３３５は、更新頻度が低いため物理メモリ管理記憶領域２３０Ｂに配置するのが好ましい。
【００５４】
次いで、ステップＳ１０において、サーバは、アプリケーションをインスタンス化して得られたインスタンスを選択するためのＳＥＬＥＣＴコマンドをＩＣチップ１ａに送信する。これに対して、ＩＣチップ１ａのＯＳは、ＳＥＬＥＣＴコマンドで指定されたインスタンスを選択し、ＯＫレスポンスをサーバに送信する。
【００５５】
次いで、ステップＳ１１において、サーバは、ステップＳ１０において選択したインスタンス（アプリケーション）がサポートするＡｐｐｌｉｃａｔｉｏｎ'ｓ  Ｐｒｏｐｒｉｅｔａｒｙコマンドにより、アプリケーションに関するデータ（インスタンス）を生成する。このとき、何れの記憶領域に当該インスタンスを配置するかを指定する。これに対して、ＩＣチップ１ａのＯＳは、Ａｐｐｌｉｃａｔｉｏｎ'ｓ  Ｐｒｏｐｒｉｅｔａｒｙコマンドに基づいて、アプリケーションに関するデータ（インスタンス）を生成し、当該コマンドで指定された記憶領域に配置する。ＯＳは、例えば、物理メモリ管理記憶領域２３０Ａが指定された場合には、図７（Ｃ）に示すように、アプリケーションに関するデータ（インスタンス）３４１を物理メモリ管理記憶領域２３０Ａに配置する。
【００５６】
このように、プログラムコード以外のアプリケーションに関するデータについては、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンド、又は、Ａｐｐｌｉｃａｔｉｏｎ'ｓ  Ｐｒｏｐｒｉｅｔａｒｙコマンドで生成するインスタンスとして、物理メモリ管理記憶領域２３０Ａ、２３０Ｂ又は仮想メモリ管理記憶領域２４０に配置することができる。
【００５７】
次に、図８のフローチャートを用いて、図７で示した配置処理例２におけるＯＳの動作について説明する。図８のフローチャートは、ＩＣチップ１ａがサーバからコマンドを受信した場合に開始される。
【００５８】
まず、ＯＳ（を実行するＣＰＵ１０）は、受信したコマンドのコマンドヘッダを参照し、コマンドの配送先は管理アプリケーションであるか又はアプリケーションであるかを判定する（ステップＳ２０１）。ＯＳは、コマンドの配送先は管理アプリケーションであると判定した場合には、次いで、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンドを受信したか否かを判定する（ステップＳ２０２）。ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンドを受信したと判定した場合には（ステップＳ２０２：ＹＥＳ）、管理データ（レジストリデータ）を作成し（ステップＳ２０３）、物理メモリ管理記憶領域２３０Ｂに配置し（ステップＳ２０４）、ステップＳ２０６に移行する。一方、ＯＳは、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンドを受信していないと判定した場合には（ステップＳ２０２：ＮＯ）、コマンドに応じた処理を実行し（ステップＳ２１４）、当該フローチャートの処理を終了する。
【００５９】
一方、ＯＳは、ステップＳ２０１の処理において、コマンドの配送先はアプリケーションであると判定した場合には、次いで、メモリ確保が必要なコマンド を受信したか否かを判定する（ステップＳ２０５）。ＯＳは、メモリ確保が必要なコマンドを受信していないと判定した場合には（ステップＳ２０５：ＮＯ）、コマンドに応じた処理を実行し（ステップＳ２１４）、当該フローチャートの処理を終了する。一方、ＯＳは、メモリ確保が必要なコマンドを受信したと判定した場合には（ステップＳ２０５：ＹＥＳ）、ステップＳ２０６に移行する。
【００６０】
次いで、ＯＳは、命令をフェッチする（ステップＳ２０６）。次いで、ＯＳは命令がＲｅｔｕｒｎ命令であるか否かを判定する（ステップＳ２０７）。なお、Ｒｅｔｕｒｎ命令とはコマンド処理の最終命令である。ＯＳは命令がＲｅｔｕｒｎ命令であると判定した場合には（ステップＳ２０７：ＹＥＳ）、当該フローチャートの処理を終了する。一方、ＯＳは、命令がＲｅｔｕｒｎ命令ではないと判定した場合には（ステップＳ２０７：ＮＯ）、次いで、命令がインスタンス生成命令であるか否かを判定する（ステップＳ２０８）。
【００６１】
ＯＳは、命令がインスタンス生成命令ではないと判定した場合には（ステップＳ２０８：ＮＯ）、その命令を実行し（ステップＳ２０９）、ステップＳ２０６に移行する。一方、ＯＳは、命令がインスタンス生成命令であると判定した場合には（ステップＳ２０８：ＹＥＳ）、次いで、生成方法はｎｅｗ  ｂｙｔｅ［ｘ］によるものか否かを判定する（ステップＳ２１０）。
【００６２】
ＯＳは、生成方法はｎｅｗ  ｂｙｔｅ［ｘ］によるものであると判定した場合には（ステップＳ２１０：ＹＥＳ）、物理メモリ管理記憶領域２３０Ａにｘを配置し（ステップＳ２１１）、ステップＳ２０６に移行する。一方、ＯＳは、生成方法はｎｅｗ  ｂｙｔｅ［ｘ］によるものではないと判定した場合には（ステップＳ２１０：ＮＯ）、次いで、生成方法はｍａｋｅＡｒｒａｙ（ｘ）によるものか否かを判定する（ステップＳ２１２）。
【００６３】
ＯＳは、生成方法はｍａｋｅＡｒｒａｙ（ｘ）によるものであると判定した場合には（ステップＳ２１２：ＹＥＳ）、仮想メモリ管理記憶領域２４０にｘを配置し（ステップＳ２１３）、ステップＳ２０６に移行する。一方、ＯＳは、生成方法はｍａｋｅＡｒｒａｙ（ｘ）によるものではないと判定した場合には（ステップＳ２１２：ＮＯ）、ステップＳ２０６に移行する。
【００６４】
なお、ＩＮＳＴＡＬＬ［ｆｏｒ  ｉｎｓｔａｌｌ］コマンド以外のコマンドにおいてもオブジェクトを生成する可能性があり、それらのコマンドについても図８のステップＳ２０６以降の処理を適用することができる。
【００６５】
［６．参照処理例］
次に、図９を用いて、不揮発性メモリ１３に配置されたアプリケーションに関するデータに対する読み込み／書き換え時の参照処理例について説明する。
【００６６】
まず、図９（Ａ）に示すように、物理メモリ管理記憶領域２３０Ａには、不揮発性メモリ１３（実メモリ空間）の「１０１ｈ」から「１５０ｈ」までが割り当てられ、仮想メモリ管理記憶領域２４０には、不揮発性メモリ１３（実メモリ空間）の「１５１ｈ」から「１９０ｈ」までが割り当てられ、また、物理メモリ管理記憶領域２３０Ｂには、不揮発性メモリ１３（実メモリ空間）の「１９１ｈ」から「２２０ｈ」までが割り当てられているとする。なお、実メモリ空間の位置を示す数値は物理アドレスである。
【００６７】
また、仮想メモリ管理記憶領域２４０として割り当てられた実メモリ空間の「１５１ｈ」から「１９０ｈ」に対して、例えば、仮想メモリ空間の「１５１ｈ」から「１７０ｈ」までが割り当てられる。なお、仮想メモリ空間の位置を示す数値は仮想アドレスである。実メモリ空間の「１５１ｈ」から「１９０ｈ」までと、仮想メモリ空間の「１５１ｈ」から「１７０ｈ」までは、仮想メモリ管理機構２２０により管理される。仮想メモリ空間の「１５１ｈ」から「１７０ｈ」までの仮想アドレスは、図示しない変換情報に基づいて物理アドレスに変換され、不揮発性メモリ１３（実メモリ空間）に記憶されたデータの参照に用いられる。例えば、仮想メモリ管理機構２２０により、仮想メモリ空間におけるデータ３３３Ｖの位置を示す仮想アドレスは、変換情報に基づいて、実メモリ空間のデータ３３３Ｒの位置を示す物理アドレスに変換され、同様に、仮想メモリ空間におけるデータ３３４Ｖの位置を示す仮想アドレスは、変換情報に基づいて、実メモリ空間のデータ３３４Ｒの位置を示す物理アドレスに変換される。
【００６８】
仮想メモリ空間及び実メモリ空間の「１０１ｈ」から「１５０ｈ」まで、及び「１９１ｈ」から「２２０ｈ」までは、物理メモリ管理機構２１０により管理される。仮想メモリ空間の「１０１ｈ」から「１５０ｈ」まで、及び「１９１ｈ」から「２２０ｈ」までの仮想アドレスは、アドレス変換がなされず、仮想アドレスがそのまま物理アドレスとして、不揮発性メモリ１３（実メモリ空間）に記憶されたデータの参照に用いられる。
【００６９】
次に、図９（Ｂ）から（Ｄ）を用いて、アプリケーションが不揮発性メモリ１３に配置されたアプリケーションに関するデータを参照する際の処理例について説明する。図９（Ｂ）及び図９（Ｃ）は、アプリケーションが、自らが使用するアプリケーションに関する各データが物理メモリ管理記憶領域２３０又は仮想メモリ管理記憶領域２４０の何れに記憶されているかを把握していることを前提している。図９（Ｂ）は、アプリケーションが物理メモリ管理記憶領域２３０に記憶されているデータ「ａ」（図９（Ａ）参照）を参照する際のフローチャートであり、図９（Ｃ）は、アプリケーションが仮想メモリ管理記憶領域２４０に記憶されているデータ「ｂ」（図９（Ａ）参照）を参照する際のフローチャートである。一方、図９（Ｄ）は、アプリケーションはデータの記憶されている位置を特定せずに、参照するデータ（ここではデータ「ｘ」）のみを指定し、ＯＳが当該指定されたデータが何れの領域に記憶されているかを判定した上でデータを参照する際のフローチャートである。
【００７０】
まず、図９（Ｂ）に示す例について説明する。アプリケーションが物理メモリ管理記憶領域２３０Ａ、２３０Ｂに記憶されているデータ「ａ」を参照する場合には、例えば、プログラムコードに「ｔｅｍｐ＝ａ；」といった文字列が記述される。なお、ｔｅｍｐはＲＡＭ１１のＳｔａｃｋ上に割り当てられるローカル変数である（以下、同様）。ＯＳは、「ｔｅｍｐ＝ａ；」に基づいて、データ「ａ」の仮想アドレスＶａｄｄｒを取得する（ステップＳ３０１）。
【００７１】
次いで、ＯＳは、データ「ａ」の物理アドレスＰａｄｄｒを、ステップＳ３０１の処理で取得したＶａｄｄｒとする（ステップＳ３０２）。つまり、ＯＳは、変換情報を用いたアドレス変換を行わない。
【００７２】
次いで、ＯＳは、物理アドレスＰａｄｄｒによりデータ「ａ」を参照し（ステップＳ３０３）、当該フローチャートに示す処理を終了する。
【００７３】
次に、図９（Ｃ）に示す例について説明する。アプリケーションが仮想メモリ管理記憶領域２４０に記憶されているデータ「ｂ」を参照する場合には、例えば、プログラムコードに「ｔｅｍｐ＝Ｖｒｅａｄ（ｂ）；」といった文字列が記述される。ＯＳは、「ｔｅｍｐ＝Ｖｒｅａｄ（ｂ）；」に基づいて、データ「ｂ」の仮想アドレスＶａｄｄｒを取得する（ステップＳ４０１）。
【００７４】
次いで、ＯＳは、Ｖｒｅａｄ（ｂ）を実行する（ステップＳ４０２）。Ｖｒｅａｄ（ｂ）は、ステップＳ４０１の処理で取得したデータ「ｂ」の仮想アドレスを変換情報に基づいてアドレス変換して（ｏｆｆｓｅｔを加算して）、物理アドレスＰａｄｄｒを取得する関数である。
【００７５】
次いで、ＯＳは、ステップＳ４０２の処理で取得した物理アドレスＰａｄｄｒによりデータ「ｂ 」を参照し（ステップＳ４０３）、当該フローチャートに示す処理を終了する。
【００７６】
次に、図９（Ｄ）に示す例について説明する。アプリケーションがデータ「ｘ」を参照する場合には、例えば、プログラムコードに「ｔｅｍｐ＝ｘ 」といった文字列が記述される。ＯＳは、「ｔｅｍｐ＝ｘ」に基づいて、データ「ｘ」の仮想アドレスＶａｄｄｒを取得する（ステップＳ５０１）。
【００７７】
次いで、ＯＳは、「１０１ｈ≦Ｖａｄｄｒ≦１５０ｈ」又は「１９１ｈ≦Ｖａｄｄｒ≦２２０ｈ」であるか否かを判定する（ステップＳ５０２） 。ＯＳは、「１０１ｈ≦Ｖａｄｄｒ≦１５０ｈ」又は「１９１ｈ≦Ｖａｄｄｒ≦２２０ｈ」であると判定した場合には（ステップＳ５０２：ＹＥＳ）、データ「ｘ」の物理アドレスＰａｄｄｒを、ステップＳ５０１の処理で取得したＶａｄｄｒとする（ステップＳ５０３）。つまり、ＯＳは、変換情報を用いたアドレス変換を行わない。一方、ＯＳは、「１０１ｈ≦Ｖａｄｄｒ≦１５０ｈ」及び「１９１ｈ≦Ｖａｄｄｒ≦２２０ｈ」の何れでもないと判定した場合には（ステップＳ５０２：ＮＯ）、データ「ｘ」の物理アドレスＰａｄｄｒを、ステップＳ５０１の処理で取得したＶａｄｄｒにｏｆｆｓｅｔを加算したアドレスとする（ステップＳ５０４）。ｏｆｆｓｅｔは、変換情報に記述された値であり、仮想アドレスＶａｄｄｒに加算することにより、物理アドレスＰａｄｄｒを求めることができる。つまり、ＯＳは、変換情報を用いたアドレス変換を行う。
【００７８】
ステップＳ５０３及びステップＳ５０４を終えると、ＯＳは、物理アドレスＰａｄｄｒによりデータ「ｘ」を参照し（ステップＳ５０５）、当該フローチャートに示す処理を終了する。
【００７９】
以上のように、本実施形態のＩＣチップ１ａ（「電子情報記憶媒体」の一例）は、ＯＳにより管理される仮想メモリ管理記憶領域２４０（「第１の記憶領域」の一例）と物理メモリ管理記憶領域２３０（「第２の記憶領域」の一例）を有し、アプリケーションに関するデータを記憶する不揮発性メモリ１３と、ＯＳを実行するＣＰＵ１０（「処理部」の一例）とを有し、ＣＰＵ１０は、仮想アドレスを物理アドレスに変換するための変換情報に基づいて変換された物理アドレスが示す仮想メモリ管理記憶領域２４０上の位置に記憶されたデータの書き換え又は読み出しと、変換情報に基づく変換がなされていない物理アドレスが示す物理メモリ管理記憶領域２３０上の位置に記憶されたデータの書き換え又は読み出しと、を行う。
【００８０】
したがって、本実施形態のＩＣチップ１ａによれば、アドレス変換を介して不揮発性メモリ１３上のデータにアクセスする仕組みを有することにより、ウェアレベリング処理を実現でき、不揮発性メモリ１３の寿命を伸ばすことができる。また、アドレス変換を介さずに不揮発性メモリ１３上のデータにアクセスする仕組みを有することにより、データの相対的な高速読み出しを実現でき、アプリケーションの実行速度の低下を軽減できる。
【００８１】
また、ＣＰＵ１０は、仮想メモリ管理記憶領域２４０上のデータについて書き換えを行う場合に、それまでの書き込み回数が相対的に低い記憶素子に書き換えのデータを書き込み、当該データに対応する仮想アドレスが当該記憶素子を示す物理アドレスに変換されるように変換情報を更新する。すなわち、ＩＣチップ１ａは仮想メモリ管理記憶領域２４０についてウェアレベリング処理を実現することにより、不揮発性メモリ１３の寿命を伸ばすことができる。
【００８２】
更に、物理メモリ管理記憶領域２３０は、書き換え頻度より読み込み頻度が高いデータを記憶することが好ましい。これにより、書き換え頻度より読み込み頻度が高いデータを高速に読み出すことができる。例えば、アプリケーションのプログラムコードを物理メモリ管理記憶領域２３０に記憶させることにより、アプリケーションの実行速度が低下を防ぐことができる。なお、実際にアプリケーションが動作する場合、不揮発性メモリ１３上のプログラムコード（バイトコード）を１バイト毎に読み込み、その値によって命令を判定し、命令に対応する関数を実行する。この読み込み処理がアプリケーションのプログラムサイズに依存してループするため読み込み処理毎にアドレス変換を行うとアプリケーションの動作速度が著しく低下してしまう。よって、プログラムコードを物理メモリ管理記憶領域２３０に記憶させることが好ましい。
【００８３】
更にまた、仮想メモリ管理記憶領域２４０は、読み込み頻度より書き換え頻度が高いデータを記憶することが好ましい。例えば、カウンタを仮想メモリ管理記憶領域２４０に記憶させる。これにより、読み込み頻度より書き換え頻度が高いデータを書き換えることによる記憶素子に対するストレスを分散するでき、不揮発性メモリ１３の寿命を伸ばすことができる。
【符号の説明】
【００８４】
１  ＩＣカード
１ａ  ＩＣチップ
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
２  外部機器
【図１】
2019128905.tif 000003
【図２】
2019128905.tif 000004
【図３】
2019128905.tif 000005
【図４】
2019128905.tif 000006
【図５】
2019128905.tif 000007
【図６】
2019128905.tif 000008
【図７】
2019128905.tif 000009
【図８】
2019128905.tif 000010
【図９】
2019128905.tif 000011