(57)【要約】      （修正有）【課題】ＣＰＵとメモリを備えたＩＣカードに格納されたデータをメモリ内の他の領域に移動させる場合に、ＣＰＵが移動処理のために出力する制御信号を従来より減らしてデータ移動処理に要する時間を短縮しうるＩＣカードを提供する。【解決手段】本発明に係るＩＣカードは、アドレスの連続する領域が所定量単位に区分された各格納領域にデータを記憶するメモリと、当該メモリに格納されているデータを移動させる際に、各格納領域について移動させるデータ長毎に予め設定された各アドレスのうち、移動元となるアドレスをアドレス信号線に送出するＣＰＵと、ＣＰＵと接続されたアドレス信号線に送出されたアドレスに基づいて、格納領域のアドレスと移動させるデータ長を特定するメモリ制御部とを備える。【選択図】図２
2008171146.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣカードであって、
メモリアドレスの連続する領域が所定量単位に区分された各格納領域にデータを記憶するメモリと、
前記メモリに格納されたデータの移動を命令するためにアドレス信号を少なくとも含む信号群を送出するＣＰＵと、
前記ＣＰＵから送出された前記信号群を受付け、所定の条件が満たされている場合に、受付けた前記信号群に基づいて、前記各格納領域のアドレスで示される移動元アドレス、移動先アドレス、及び移動させるデータ量を特定する特定処理を行い、特定したデータ量の前記データを特定した移動元アドレスから移動先アドレスに移動させるよう制御するメモリ制御部とを備え、
前記特定処理は、受付けた前記アドレス信号に基づいて、前記移動元アドレスと前記移動先アドレスの少なくとも一方のアドレスと、格納領域を単位としての移動させるデータ量を特定することを含むこと
を特徴とするＩＣカード。
【請求項２】
前記ＣＰＵは、前記メモリに格納されたデータを移動させる場合、移動元又は移動先の各格納領域について、移動させるデータ量毎に予め設定された個々のアドレスのうち、移動させる格納領域のデータ量に応じた1つのアドレスを示すアドレス信号を送出し、
前記メモリ制御部は、前記アドレス信号に基づいて、前記データ量を特定すること
を特徴とする請求項１記載のＩＣカード。
【請求項３】
前記信号群は、前記各格納領域のデータを、格納領域のデータ量を最小単位として移動させるブロック転送モードか否かを示すモード信号を含み、
前記個々のアドレスは、各々に対応する格納領域中の別々のアドレスを指し示すものであり、
前記ＣＰＵは、前記格納領域単位にデータを移動させる場合、前記ブロック転送モードを示すモード信号を送出し、前記アドレスを指定して前記アドレス信号を送出し、
前記所定の条件は、前記ブロック転送モードを示すモード信号が前記ＣＰＵから送出されたことであり、
前記メモリ制御部は、前記指定されたアドレスに基づいてデータ量を特定し、当該指定されたアドレスを含む格納領域の先頭アドレスを移動元アドレス又は移動先アドレスとして特定すること
を特徴とする請求項２記載のＩＣカード。
【請求項４】
前記所定の条件は、前記アドレス信号の示すアドレス値が、前記メモリ上のいずれの格納領域を示すアドレスとも異なる値であること
を特徴とする請求項１記載のＩＣカード。
【請求項５】
前記ＣＰＵは、前記格納領域のデータを移動させる場合、移動元アドレスを示すデータ信号と、移動先アドレスを示すアドレス信号と、書込みを示す制御信号とを送出し、
前記メモリ制御部は、前記ＣＰＵから受付けた前記データ信号に基づいて、前記格納領域のアドレスで示される移動元アドレスを特定し、前記アドレス信号に基づいて、前記格納領域のアドレスで示される移動先アドレスと前記データ量とを特定すること
を特徴とする請求項１記載のＩＣカード。
【請求項６】
前記信号群は、ベースアドレス信号を含み、
前記ＣＰＵは、前記ベースアドレス値を変更できること
を特徴とする請求項１記載のＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに関し、特に、情報処理装置に格納されているデータを移動する際の技術に関する。
【背景技術】
【０００２】
従来、リーダライタから電力が供給されることによりデータを送受信し、受信したデータをメモリに記憶するＩＣカードが普及しており、例えば、このようなＩＣカードの利用形態としては、駅の改札をユーザが通行する際にＩＣカードをリーダライタにかざす等の方法により電子的な乗車券として用いる利用形態がある。
上記の様に、ＩＣカードは、リーダライタから無線通信等によって電力が供給されるため、例えば、ＩＣカードのメモリにデータを書込む途中で電力の供給が絶たれる事態が生じることが考えられる。
【０００３】
このような事態を想定して、メモリ上のデータを更新する場合に、元のデータを退避させてからデータの更新を行う等の方法によりデータを保障するＩＣカードが知られており、このようなＩＣカードとしては、ＩＣカード内にＣＰＵとメモリ制御部とを備えたものがある。
このＩＣカードは、ＣＰＵからの命令に応じてメモリ制御部がメモリ上のデータの移動を制御するものであり、メモリ制御部は、ＣＰＵから送出されたメモリ上の移動元アドレスと移動先アドレスと移動させるべきデータ長を示す情報を受取ってメモリ制御部内の各レジスタに設定し、設定した各情報に基づいてメモリ内のデータを移動させるよう制御する。
【０００４】
尚、元のデータを退避させてからデータの更新を行うＩＣカードの技術が以下の特許文献１に開示されている。
【特許文献１】特開２００４−３２６２７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来のＩＣカードは、ＣＰＵがメモリ上のデータを移動させる場合に、上記移動元アドレス等の各情報をレジスタに設定するための命令を実行しなければならないため、移動させるデータが多いほど実行する命令数も増え、ＣＰＵとメモリ制御部間で必要とされる制御信号の量が増加し、データの移動処理に多くの時間を要してしまう。
【０００６】
上述した様に、特にＩＣカードが駅の改札で用いられる等、リーダライタとの間のデータ通信をできるだけ早く行わなければならない状況下で用いられる場合には、メモリ上のデータの移動処理ができるだけ高速に行われることが要求される。
本発明は、上記状況に鑑みてなされたものであり、ＩＣカード内のデータを移動させる際の命令数、すなわち制御信号の量を従来より減らして、データ移動処理に要する時間を短縮しうる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係るＩＣカードは、ＩＣカードであって、  メモリアドレスの連続する領域が所定量単位に区分された各格納領域にデータを記憶するメモリと、前記メモリに格納されたデータの移動を命令するためにアドレス信号を少なくとも含む信号群を送出するＣＰＵと、前記ＣＰＵから送出された前記信号群を受付け、所定の条件が満たされている場合に、受付けた前記信号群に基づいて、前記各格納領域のアドレスで示される移動元アドレス、移動先アドレス、及び移動させるデータ量を特定する特定処理を行い、特定したデータ量の前記データを特定した移動元アドレスから移動先アドレスに移動させるよう制御するメモリ制御部とを備え、前記特定処理は、受付けた前記アドレス信号に基づいて、前記移動元アドレスと前記移動先アドレスの少なくとも一方のアドレスと、格納領域を単位としての移動させるデータ量を特定することを含むことを特徴とする。
【発明の効果】
【０００８】
上述の構成によって、本発明に係るＩＣカードは、メモリに格納されているデータを移動させるとき、ＣＰＵが送出するアドレス信号の信号線から移動させるデータ量を特定することができる。そのため、複数の格納領域のデータを移動させる場合には、ＣＰＵは各格納領域について移動させるためのアドレス信号等の制御信号を出力する必要がないため、ＣＰＵが出力する制御信号を従来より少なくすることができ、データの移動処理に要する時間を短縮することができる。尚、このデータ量の特定は、例えば、一つの格納領域分の量や、二つの連続した格納領域分の量等を特定することである。  
【０００９】
また、前記ＣＰＵは、前記メモリに格納されたデータを移動させる場合、移動元又は移動先の各格納領域について、移動させるデータ量毎に予め設定された個々のアドレスのうち、移動させる格納領域のデータ量に応じた1つのアドレスを示すアドレス信号を送出し、前記メモリ制御部は、前記アドレス信号に基づいて、前記データ量を特定することとしてもよい。
【００１０】
この構成によれば、ＣＰＵは、データが格納されている各格納領域について予めデータ長毎に設定されたメモリ上の各アドレスを移動元又は移動先を示すアドレスとしてアドレス信号線に送出することができる。そのため、ＣＰＵが移動元アドレスをアドレス信号線に送出するだけで、メモリ制御部は当該アドレス信号線により移動元アドレスと移動させるデータ長を特定することができるので、複数の格納領域のデータを移動させる場合に、ＣＰＵは移動元の各格納領域についてアドレス信号等の制御信号を送出することなく格納領域のデータを移動させることができる。
【００１１】
また、前記信号群は、前記各格納領域のデータを、格納領域のデータ量を最小単位として移動させるブロック転送モードか否かを示すモード信号を含み、前記個々のアドレスは、各々に対応する格納領域中の別々のアドレスを指し示すものであり、前記ＣＰＵは、前記格納領域単位にデータを移動させる場合、前記ブロック転送モードを示すモード信号を送出し、前記アドレスを指定して前記アドレス信号を送出し、前記所定の条件は、前記ブロック転送モードを示すモード信号が前記ＣＰＵから送出されたことであり、前記メモリ制御部は、前記指定されたアドレスに基づいてデータ量を特定し、当該指定されたアドレスを含む格納領域の先頭アドレスを移動元アドレス又は移動先アドレスとして特定することとしてもよい。
【００１２】
この構成によれば、ＣＰＵは、メモリ上のデータを格納領域単位に移動させるブロック転送を行う場合にはブロック転送モードを示すモード信号を送出し、移動元又は移動先の各格納領域中のアドレスであって、移動させるデータ長毎に設定されたアドレスを指定することができる。そのため、ＣＰＵは移動させるデータ量を示す情報をメモリ制御部に送出する必要がなく、メモリ制御部は、ブロック転送モードをモード信号が示すときには、ＣＰＵからアドレス信号線に送出されるアドレス信号の違いにより、移動させるデータ量を特定することができる。
【００１３】
また、前記所定の条件は、前記アドレス信号の示すアドレス値が、前記メモリ上のいずれの格納領域を示すアドレスとも異なる値であることとしてもよい。
この構成によれば、ＣＰＵはデータが格納されている格納領域のアドレスとは異なるアドレスであって、各格納領域についてデータ長毎に予め定めたアドレスを指定することができるので、メモリ制御部は、ＣＰＵから送出されたアドレス信号が示すアドレスが各格納領域のアドレスとは異なるアドレスである場合には、当該アドレスに基づいて、データ長を特定すべきであると判断することができる。また、ＣＰＵは、データの格納領域中のアドレスを指定して従来のメモリアクセスを行えることに加えて、その領域外のアドレスを指定して格納領域単位のデータ転送を指示することができ、移動データ量を示す情報をメモリ制御部に送出することが不要になるため、ＣＰＵとメモリ制御部との間の制御信号を減らすことができる。
【００１４】
また、前記ＣＰＵは、前記格納領域のデータを移動させる場合、移動元アドレスを示すデータ信号と、移動先アドレスを示すアドレス信号と、書込みを示す制御信号とを送出し、前記メモリ制御部は、前記ＣＰＵから受付けた前記データ信号に基づいて、前記格納領域のアドレスで示される移動元アドレスを特定し、前記アドレス信号に基づいて、前記格納領域のアドレスで示される移動先アドレスと前記データ量とを特定することとしてもよい。
【００１５】
この構成によれば、ＣＰＵはデータの書込み命令を送出する際に、移動元アドレスを示す情報をデータ信号として送出することで、メモリ制御部により移動元アドレスと移動させるデータ量とが特定される。つまり、アドレス信号線とデータ信号線とを通じた１回の信号の伝達により、移動元アドレスと移動先アドレスとデータ長とが特定されることになるので、複数の格納領域のデータを移動させる際にＣＰＵが送出するアドレス信号や制御信号を従来と比べて減らすことができ、データの移動処理に要する時間を短縮することができる。
【００１６】
また、前記信号群は、ベースアドレス信号を含み、前記ＣＰＵは、前記ベースアドレス値を変更できることとしてもよい。
この構成によれば、ＣＰＵは移動元又は移動先となる各格納領域のベースアドレス値を変更することができるので、各格納領域のメモリ内での配置がシフトしていてもメモリの構成を修正することなく対応することができる。
【発明を実施するための最良の形態】
【００１７】
＜実施の形態１＞  
＜構成＞
図１は、本実施の形態におけるリーダライタとＩＣカードの構成を示している。
本実施の形態に係るＩＣカード１００は、リーダライタ２００から電力を供給すると共に、リーダライタからのデータ読み出し又は書き込みのアクセス要求に応じて、ＩＣカード１００内のメモリ１７０のデータを読み出し又は書き込むものである。
【００１８】
また、ＩＣカード１００は、メモリ１７０に格納されているデータの更新要求をリーダライタ２００から受付けた際、更新対象となる領域のデータをメモリ１７０の退避用領域に退避させ、リーダライタ２００から受付けたデータを更新対象の領域に書き込むよう制御するものである。
以下、各構成について説明する。
【００１９】
リーダライタ２００は、ＩＣカード１００との間でデータ及び電力の伝送を行うアンテナ部２４０と、ＩＣカード１００との間の通信処理を制御する通信部２３０と、ＩＣカード１００から受信した情報に応じて処理を実行する処理部２２０と、リーダライタ２００の外部の装置と通信を行うためのＩ／Ｆ部２１０とを備えている。
また、ＩＣカード１００は、リーダライタ２００との間でデータ及び電力の伝送を行うアンテナ部１１０と、アンテナから受信した搬送波を整流してＩＣカード１００を動作させるための電力を取得する整流部１２０と、リーダライタ２００との間の通信動作を制御する通信部１３０と、ＣＰＵ１５０を初期化するリセット部１４０と、リーダライタ２００との間の通信制御とメモリ１７０へのアクセスを行うＣＰＵ１５０と、ＣＰＵ１５０からのアクセス要求に応じてメモリ１７０のアクセス制御を行うメモリ制御部１６０とを備える。
【００２０】
以下、本実施の形態に係るＩＣカード１００の特徴部分であるＣＰＵ１５０、メモリ制御部１６０、及びメモリ１７０の構成について詳細に説明する。
図２は、ＣＰＵ１５０、メモリ制御部１６０、及びメモリ１７０の具体的な構成を示している。
ここで、メモリ１７０へアクセスするためのアドレスについて説明する。
【００２１】
アクセスのためのアドレス空間は、図２に示す様に、物理領域１７１と仮想領域１７６で構成されている。
物理領域１７１は、固定長１６バイトの各レコードデータをレコードデータ０〜Ｂの各領域に記憶する領域であり、レコードデータＣ領域１７２及びレコードデータＤ領域１７３は、リーダライタ２００から受信したデータを一時保管するための受信用バッファとして用いられ、レコードデータＥ領域１７４及びレコードデータＦ領域１７５は、既存のレコードデータを更新する場合に、当該レコードデータを退避させるための退避用バッファとして用いられるものである。
【００２２】
また、仮想領域１７６は、ユーザによって予め設定された物理領域１７１以外のアドレスを示す領域であり、レコードデータ領域０〜Ｆの各領域と対応する１バイト単位の各仮想部分領域０〜Ｆ(以下、「１６バイト移動用仮想領域１７７」と言う。)と、レコードデータ領域０〜Ｆの各領域と対応する１バイト単位の各仮想部分領域１０〜１Ｆ(以下、「３２バイト移動用仮想領域１７８」と言う。)とから構成されており、各仮想部分領域には実際の記憶素子が対応しておらず、実際にはデータを記憶させることはできない。
【００２３】
仮想領域１７６における各仮想部分領域のアドレスは、ＣＰＵ１５０からメモリアクセスを行う際にアクセス対象となるアドレスとして指定されるものである。
例えば、ＣＰＵ１５０が、レコードデータ０から１６バイトのレコードデータを移動させる場合には、１６バイト移動用仮想領域１７７の仮想部分領域０のアドレスを指定し、３２バイトのレコードデータを移動させる場合には、３２バイト移動用仮想領域１７８の仮想部分領域１０のアドレスを指定する。レコードデータ２から１６バイトのレコードデータを移動させる場合には、仮想部分領域２のアドレスを指定し、３２バイトのレコードデータを移動させる場合には、仮想部分領域１２のアドレスを指定する。
【００２４】
尚、本実施の形態において仮想領域１７６の先頭アドレスは、物理領域１７１のレコードデータ領域Ｆより大きなアドレスである。
次に、ＣＰＵ１５０について説明する。
ＣＰＵ１５０とメモリ制御部１６０との間は、アドレス信号線１１、制御信号線１２、データ信号線１３、Ack信号線１４で接続されている。
【００２５】
ＣＰＵ１５０は、アンテナ部１１０及び通信部１３０を介してリーダライタ２００からメモリへのアクセス要求を受信し、受信したアクセス要求に基づいて、当該アクセスを行うようメモリ制御部１６０に命令する機能を有する。
メモリ制御部１６０への命令は、アクセス対象となるアドレスを示すアドレス信号をアドレス信号線１１に送出し、読み出し又は書き込みを示す制御信号を制御信号線１２に送出することにより行う。
【００２６】
また、ＣＰＵ１５０は、メモリ１７０から読み出したデータ又はメモリ１７０に書き込むデータをデータ信号線１３により送受信する機能と、メモリ制御部１６０からメモリ１７０へのアクセスが完了したことを示す信号をAck信号線により受信する機能を有する。
尚、ＣＰＵ１５０からメモリ１７０へのアクセス指示は、物理領域１７１のレコードデータ領域のデータ長(１６バイト)を最小単位として、１又は連続する２つのレコードデータ領域から別の１又は連続する２つのレコードデータ領域へデータを移動させるブロック転送と、１バイトや２バイト等の単位での通常のメモリアクセスのいずれかの指示となる。
【００２７】
ここで、物理領域１７１に格納されているデータへの通常のメモリアクセスについて説明する。
ＣＰＵ１５０は、例えば、物理領域１７１のレコードデータ領域の一部のデータを他の領域に転送する場合には、まず、移動させるデータが格納されている物理領域１７１の移動元アドレスをアドレス信号線を介して、１バイトや２バイト等といったデータ長を示す情報を指定し、移動元アドレスからデータ長分のデータを読み出すためのリードコマンドを制御信号線を介してメモリ制御部１６０に送出する。その結果として、データ信号線を介して読み出したデータを受け取り、次に、アドレス信号線を介して移動先アドレスを指定し、データ信号線を介して先ほど読み出したデータを出力し、データを書き込むためのライトコマンドを制御信号線を介してメモリ制御部１６０に送出する。
【００２８】
また、ＣＰＵ１５０は、ブロック転送を行う場合、移動元となる物理領域１７１のレコードデータ領域に対応する仮想領域１７６の仮想部分領域のアドレスを指定してリードコマンドを送出し、続いて、移動先となる物理領域１７１のレコードデータ領域に対応する仮想部分領域のアドレスを指定して、リードコマンドで読み出したデータを書き込むライトコマンドを送出する。
【００２９】
尚、本実施の形態では、ＣＰＵ１５０は、リードコマンドで１６バイト移動用仮想領域１７７の仮想部分領域のアドレスを指定した場合には、ライトコマンド送出時も１６バイト移動用仮想領域のアドレスを指定し、３２バイト移動用仮想領域１７８の仮想部分領域のアドレスをリードコマンドで指定した場合には、ライトコマンド送出時も３２バイト移動用仮想領域の仮想部分領域のアドレスを指定するものとする。
【００３０】
メモリ制御部１６０は、仮想領域アクセス検知部１６１と、データ移動制御部１６５とで構成されており、仮想領域アクセス検知部１６１は、仮想領域アドレス検出部１６２と、アドレス変換部１６３と、データ長判別部１６４とを含んで構成されており、メモリ１７０とはアドレス信号線２１、データ信号線２２、及び制御信号線２３により接続されている。
【００３１】
仮想領域アドレス検出部１６２は、ＣＰＵ１５０から制御信号線１２によりデータの読み出し又は書き込みを示すコマンドを受信した場合に、コマンド受信時にアドレス信号線１１により指定されたアドレスが予め設定された仮想領域１７６内のアドレスであるか否かを判断する機能と、仮想領域１７６内のアドレスであると判断した場合に、アドレス変換部１６３とデータ長判別部１６４に、仮想部分領域アドレスに対するアクセス(以下、「仮想アクセス」と言う。)である旨を通知し、仮想領域１７６内のアドレスでない場合は通常アクセスである旨を通知する機能を有する。
【００３２】
アドレス変換部１６３は、仮想領域アドレス検出部１６２から仮想アクセスであることを通知された場合、アドレス信号線１１によりＣＰＵ１５０から受信した仮想部分領域アドレスに対応する物理領域１７１の先頭アドレスを特定し、当該特定した物理領域１７１の先頭アドレスを示す情報をデータ移動制御部１６５に通知する機能を有する。
尚、仮想部分領域アドレスに対応する物理領域１７１の先頭アドレスの特定、つまり、物理領域１７１の各レコードデータが格納された移動元及び移動先のレコードデータ領域の先頭アドレスの特定は、以下のように行う。
【００３３】
まず、指定された仮想部分領域アドレスから仮想領域１７６の先頭アドレスを減算して得られる差分値に応じて、当該仮想部分領域アドレスが、１６バイト移動用仮想領域１７７のアドレスか３２バイト移動用仮想領域１７８のアドレスか判断する。本実施の形態の場合、レコードデータ領域数は１６であり、１６バイト移動用仮想領域及び３２バイト移動用仮想領域の各々の仮想部分領域数が１６であるため、差分値が１６バイト未満であれば１６バイト移動用仮想領域のアドレスであり、１６バイト以上であれば３２バイト移動用仮想領域のアドレスであると判断する。
【００３４】
１６バイト移動用仮想領域のアドレスと判断した場合、上記減算して得られる差分値に１６バイトを乗算し、物理領域１７１の先頭ブロックのアドレスに加算して目的のブロックの先頭アドレスを特定する。また、３２バイト移動用仮想領域のアドレスであれば、当該仮想部分領域アドレスから３２バイト移動用仮想領域の先頭アドレスを減算して得られる差分値に１６バイトを乗算して、物理領域１７１の先頭ブロックのアドレスに加算して目的のブロックの先頭アドレスを特定する。
【００３５】
また、アドレス変換部１６３が、仮想領域アドレス検出部１６２から通常メモリアクセスである旨の通知を受付けた場合、アドレス信号線１１を通じてＣＰＵ１５０から受付けたアドレスをデータ移動制御部１６５に送出する機能を有する。
データ長判別部１６４は、仮想領域アドレス検出部１６２から仮想アクセスであることを通知された場合において、リードコマンドを受付けた時は、ＣＰＵ１５０から受付けた仮想部分領域のアドレスに基づいて、物理領域１７１から読み出すデータ長を特定し、特定したデータ長を示す情報をデータ移動制御部１６５に通知する機能を有する。
【００３６】
また、データ長判別部１６４が、仮想領域アドレス検出部１６２から通常メモリアクセスである旨の通知を受付けた場合、アドレス信号線１１を通じて受付けたアドレスからデータ長を判別する処理を停止する。
ここで、データ長の特定は、受信した仮想部分領域アドレスが、上述したアドレス変換部１６３の場合と同様、仮想領域１７６の先頭アドレスと仮想部分領域アドレスとの差分値が１６バイト未満であればデータ長を１６バイトと特定し、１６バイト以上であればデータ長を３２バイトと特定する。
【００３７】
データ移動制御部１６５は、アドレス変換部１６３から送出された物理領域１７１のレコードデータ領域の先頭アドレスを示す情報と、データ長判別部１６４から送出されたデータ長を示す情報と、ＣＰＵ１２から制御信号線１２を通じて送出されたリードコマンド又はライトコマンドと、ＣＰＵ１２からデータ信号線１３を通じて送出されたメモリ１７０への書き込みデータとを受付ける機能と、メモリ１７０から読み出したデータをデータ信号線１２を通じてＣＰＵ１５０へ送出する機能とを有する。
【００３８】
また、データ移動制御部１６５は、ＣＰＵ１５０から仮想アクセスとしてのデータのリードコマンドを受付け、続いてデータのライトコマンドを受付けた場合に、リードコマンドを受付けた際にアドレス変換部１６３から送出されたレコードデータ領域の先頭アドレスを移動元アドレスとし、ライトコマンドを受付けた際にアドレス変換部１６３から送出されたレコードデータ領域の先頭アドレスを移動先アドレスとし、データ信号線２２のバス幅に応じて、受付けたデータ長分のデータを移動元アドレスから順次読み出し、移動先アドレスから順に書き込むようにアドレス信号線２１、データ信号線２２、及び制御信号線２３を通じて制御する機能を有する。
【００３９】
尚、データ移動制御部１６５が、通常のメモリアクセスとしてのリードコマンド又はライトコマンドを受付けた場合、リードコマンドであれば、アドレス変換部１６３から受付けたアドレスから、データ信号線１３を通じて受付けたデータ長分のデータを読み出し、ライトコマンドであればアドレス変換部１６３から受付けたアドレスにＣＰＵ１５０からデータ信号線１３を通じて受付けたデータを書き込む機能を有する。
＜動作＞
図３は、本実施の形態に係るメモリ制御部１６０の動作フローを示している。以下、同図に従って動作を説明する。
【００４０】
ステップＳ１１において、仮想領域アドレス検出部１６２及びデータ移動制御部１６５が、制御信号線１２を通じてＣＰＵ１５０から受付けたコマンドがリードコマンドである場合(ステップＳ１１：Ｙ)、仮想領域アドレス検出部１６２は、リードコマンドを受付けた際にアドレス信号線１１を通じて受付けたアドレスが仮想領域１７６のアドレスか否か判断する（ステップＳ１２）。
【００４１】
ステップＳ１２において、仮想領域アドレス検出部１６２が、仮想領域１７６のアドレスであると判断した場合(ステップＳ１２：Ｙ)、仮想領域アドレス検出部１６２は、仮想アクセスである旨をアドレス変換部１６３及びデータ長判別部１６４に通知する。
アドレス変換部１６３及びデータ長判別部１６４は、仮想領域アドレス検出部１６２から仮想アクセスである旨の通知を受付けると、リードコマンドの受付時に指定された仮想部分領域アドレスに基づいて、仮想領域１７６の先頭アドレスとアドレス信号線１１により受信した仮想部分領域アドレスとの差分を算出し、１６バイト移動用仮想領域１７７のアドレスか否か判断する(ステップＳ１３)。
【００４２】
ステップＳ１３において、差分値が１６バイト未満であり、１６バイト移動用仮想領域１７７のアドレスであれば(ステップＳ１３：Ｙ)、アドレス変換部１６３は、当該差分値に１６バイトを乗算して物理領域１７１の先頭アドレスに加算したブロックの先頭アドレスを特定し、当該ブロックの先頭アドレスを示す情報をデータ移動制御部１６５に送出する。また、データ長判別部１６４は、差分値が１６バイト未満であるため、データ長１６バイトを示す情報をデータ移動制御部１６５に送出する(ステップＳ１４)。
【００４３】
また、ステップＳ１３において、アドレス変換部１６３及びデータ長判別部１６４が、１６バイト移動用仮想領域１７７のアドレスでないと判断した場合(ステップＳ１３：Ｎ)、すなわち、差分値が１６バイト以上であれば、アドレス変換部１６３は、３２バイト移動用仮想領域１７８の先頭アドレスと当該仮想部分領域アドレスとの差分を算出し、当該差分値に１６バイトを乗算して物理領域１７１の先頭アドレスに加算したブロックの先頭アドレスを特定する。アドレス変換部１６３は、特定した当該ブロックの先頭アドレスを示す情報をデータ移動制御部１６５に送出する。また、データ長判別部１６４は、ステップＳ１３で算出した差分値が１６バイト以上であれば、データ長３２バイトを特定し、データ移動制御部１６５にデータ長３２バイトを示す情報を送出する(ステップＳ１５)。
【００４４】
リードコマンドに続いて、アドレス変換部１６３及びデータ移動制御部１６５が、ＣＰＵ１５０から制御信号線１２を通じてライトコマンドを受付けた場合（ステップＳ１６：Ｙ）、アドレス変換部１６３は、ＣＰＵ１５０から指定された仮想領域アドレスに対応するレコードデータ領域のブロックを特定し、当該ブロックの先頭アドレスを示す物理領域アドレスをデータ移動制御部１６５に送出する。
【００４５】
データ移動制御部１６５は、ステップＳ１４又はステップＳ１５において特定された物理領域アドレスを移動元アドレスとし、当該移動元アドレスからステップＳ１３において特定されたデータ長分のデータをデータ信号線２２のバス幅に応じて順次読み出す(ステップＳ１７)。
続いて、データ移動制御部１６５は、ライトコマンドの受付時にアドレス変換部１６３から送出された物理領域アドレスを移動先アドレスとして、ステップＳ１７において順次読み出したデータを当該移動先アドレスへ順次書き込む(ステップＳ１８)。
【００４６】
また、ステップＳ１２において、仮想領域アドレス検出部１６２が、リードコマンドを受付けた際に指定されたアドレスが、仮想領域１７６のアドレスでないと判断した場合(ステップＳ１２：Ｎ)、つまり、物理領域１７１アドレスである場合、通常アクセスである旨の通知をアドレス変換部１６３に送出し、アドレス変換部１６３は、アドレス信号線１１を通じて受付けたアドレスをデータ移動制御部１６５に送出する。
【００４７】
データ移動制御部１６５は、アドレス変換部１６３から受付けたアドレスと、リードコマンドとを、アドレス信号線２１及び制御信号線２３から各々送出し、物理領域１７１のアドレスに格納されているデータをデータ信号線２２を通じて読み出し、読み出したデータをデータ信号線１３を通じてＣＰＵ１５０に送出する(ステップＳ１９)。
また、ステップＳ１１において、仮想領域アドレス検出部１６２が受付けたコマンドがリードコマンドでない場合(ステップＳ１１:Ｎ)の処理について、図４を用いて説明する。
【００４８】
図４のステップＳ２１において、仮想領域アドレス検出部１６２がライトコマンドを受付けた場合(ステップＳ２１:Ｙ)、ライトコマンドを受付けた際にアドレス信号線１１を通じて指定されたアドレスが仮想領域１７６のアドレスか否か判断し（ステップＳ２２）、仮想領域１７６のアドレスであると判断した場合に、アドレス変換部１６３に仮想アクセスであることを通知する。また、データ移動制御部１６５は、ライトコマンドを受付けると、ＣＰＵ１５０から受信した受信データを受信用レコードデータ領域Ｄに順次書き込む(ステップＳ２２:Ｙ)。
【００４９】
ステップＳ２３において、アドレス変換部１６３は、仮想アクセスである旨の通知を受付け、上述したステップＳ１２と同様に、ライトコマンドで指定された仮想部分領域アドレスに対応するレコードデータ領域のブロックの先頭アドレスを特定し、当該アドレスを示す情報をデータ移動制御部１６５に送出する。データ移動制御部１６５は、データ信号線２２のバス幅に応じて、レコードデータ領域Ｄから順次読み出し、アドレス変換部１６３から受付けたレコードデータ領域の先頭アドレスから順次書き込む(ステップＳ２３)。
【００５０】
また、ステップＳ２２において、仮想領域アドレス検出部１６２が、仮想領域アドレスでないと判断した場合(ステップＳ２２:Ｎ)、アドレス変換部１６３に通常アクセスである旨を通知し、アドレス変換部１６３は、アドレス信号線１１を通じて受付けたアドレスをデータ移動制御部１６５に送出する。データ移動制御部１６５は、アドレス変換部１６３から受付けたアドレスをアドレス信号線２１から送出し、データ信号線１３を通じて受信したデータをデータ信号線２２から送出し、ライトコマンドを制御信号線２３から送出することで、ＣＰＵ１５０から指定された物理領域１７１のアドレスに受信データを書き込む(ステップＳ２４)。
＜動作例＞
上述したＩＣカード１００の動作例について図５を用いて説明する。
【００５１】
図５は、ＩＣカード１００が、リーダライタ２００から図２に示すメモリ１７０における物理領域１７１のレコードデータＡ及びＢのデータを更新する要求を受付けた場合のＣＰＵ１５０、メモリ制御部１６０の動作フローである。
以下、同図に即して説明する。
ステップＳ３０において、リーダライタ２００は、アンテナ部２４０を通じてレコードデータＡ及びＢにデータを書き込むコマンドを送出する。
【００５２】
ＣＰＵ１５０は、リーダライタ２００からアンテナ部１１０を介してレコードデータ領域Ａ及びＢへデータを書き込むライトコマンドを受信する。ＣＰＵ１５０は受信したデータ長が３２バイトであることを確認し、仮想領域１７６における受信用仮想領域１Ｃ(以下、「仮想受信用領域１Ｃ」と言う。)のアドレスをアドレス信号線１１を通じて送出し、データ信号線１３を通じて受信データを送出し、制御信号線１２にライトコマンドを送出する(ステップＳ４０)。
【００５３】
メモリ制御部１６０において、仮想領域アドレス検出部１６２は、ステップＳ４０においてＣＰＵ１５０から送出されたライトコマンドと仮想受信用領域１Ｃのアドレスを受付けると、仮想受信用領域１Ｃのアドレスが仮想領域１７６のアドレスであると判断して、仮想アクセスである旨をアドレス変換部１６３に通知する。
アドレス変換部１６３は、アドレス信号線１１を通じて受付けた仮想受信用領域１Ｃアドレスに基づいて、物理領域１７１のレコードデータＣ領域(以下、「物理領域Ｃ」と言う。)の先頭アドレスを特定し、当該先頭アドレスを示す情報をデータ移動制御部１６５に送出する。
【００５４】
データ移動制御部１６５は、アドレス変換部１６３によって特定された物理領域Ｃの先頭アドレスから順に、物理領域Ｄまで受信データを順次書き込むことにより、受信用バッファ領域に受信データを格納する(ステップＳ５０)。
ＣＰＵ１５０は、ステップＳ４０に続いて、受信データのデータ長３２バイトに基づいて、仮想領域１Ａのアドレスを指定してリードコマンドを送出し(ステップＳ４１)、続いて、リードコマンドにより読み出したデータを仮想領域１Ｅ(以下、「仮想退避用領域１Ｅ」と言う。)に書き込むライトコマンドを送出する(ステップＳ４２)。
【００５５】
メモリ制御部１６０において、仮想領域アドレス検出部１６２は、ステップＳ４１で送出されたリードコマンドを受付けると、仮想領域１Ａのアドレスが仮想部分領域アドレスであると判断し、アドレス変換部１６３及びデータ長判別部１６４に仮想アクセスである旨を通知する。
アドレス変換部１６３及びデータ長判別部１６４は、受付けた仮想領域１Ａのアドレスと仮想領域１７１の先頭アドレスに基づいて、３２バイト移動用仮想領域のアドレスであると判断する。アドレス変換部１６３は、仮想領域１Ａのアドレスに対応する物理領域Ａのブロックの先頭アドレスを示す情報をデータ移動制御部１６５に送出し、データ長判別部１６４は、データ長３２バイトを示す情報をデータ移動制御部１６５に送出する(ステップＳ５１)。
【００５６】
また、仮想領域アドレス検出部１６２及びアドレス変換部１６３は、ステップＳ４２で送出されたライトコマンドを受付け、アドレス変換部１６３は、ライトコマンドの受付時に指定された仮想領域１Ｅのアドレスに対応する物理領域のレコードデータＥ領域(以下、「物理退避用領域Ｅ」と言う。)のアドレスを示す情報を送出する。
データ移動制御部１６５は、ステップＳ５１で特定された物理領域Ａの先頭アドレスからデータ長判別部１６４によって特定されたデータ長３２バイト分のデータを順次読み出し、物理退避用領域Ｅの先頭アドレスから順次書き込む(ステップＳ５２)。
【００５７】
ＣＰＵ１５０は、ステップＳ４２に続いて、仮想受信用領域１Ｃの先頭アドレスを指定して、リードコマンドをメモリ制御部１６０に送出する(ステップＳ４３)。
メモリ制御部１６０の仮想領域アドレス検出部１６２は、ＣＰＵ１５０からのリードコマンドの受付時に指定された仮想受信用領域１Ｃの先頭アドレスに基づいて、当該仮想受信用領域１Ｃの先頭アドレスが仮想領域アドレスであると判断し、アドレス変換部１６３及びデータ長判別部１６４に仮想アクセスである旨の通知を行う。
【００５８】
アドレス変換部１６３及びデータ長判別部１６４は、ＣＰＵ１５０から指定された仮想領域１Ｃの先頭アドレスが３２バイト移動用仮想領域１７８のアドレスであると判断する。アドレス変換部１６３は、仮想領域１Ｃに対応する物理領域Ｃのブロックを特定し、当該物理領域Ｃの先頭アドレスを示す情報をデータ移動制御部１６５に送出し、データ長判別部１６４は、データ長３２バイトを示す情報をデータ移動制御部１６５に送出する（ステップＳ５３）。
【００５９】
ＣＰＵ１５０は、ステップＳ４３に続いて、仮想領域１Ａアドレスを指定して、ステップＳ４３で読み出したデータを書き込むライトコマンドをメモリ制御部１６０に送出する（ステップＳ４４）。
メモリ制御部１６０の仮想領域アドレス検出部１６２は、ＣＰＵ１５０からライトコマンドを受付けると、ライトコマンド受付時に指定された仮想領域１Ａの先頭アドレスが仮想領域アドレスであると判断して、アドレス変換部１６３に仮想アクセスである旨を通知する。
【００６０】
アドレス変換部１６３は、ＣＰＵ１５０から指定された仮想領域１Ａの先頭アドレスに対応する物理領域Ａのブロックを特定し、当該物理領域Ａの先頭アドレスを示す情報をデータ移動制御部１６５に送出し、データ長判別部１６４は、データ長３２バイトを示す情報をデータ移動制御部１６５に送出する。
データ移動制御部１６５は、ステップＳ５３で特定された物理領域Ｃの先頭アドレスからデータ長判別部１６４によって特定されたデータ長３２バイト分のデータを順次読み出し、物理領域Ａの先頭アドレスから順次書き込むことにより、物理領域Ａ及びＢにＣＰＵ１５０から受信したデータを書き込む(ステップＳ５４)。
【００６１】
データ移動制御部１６５は、ＣＰＵ１５０から受信したデータの書き込みが完了したとき、Ack信号線１４を通じてＣＰＵ１５０にAck信号を送出し、データの書き込みが完了したことを通知する(ステップＳ５５)。
ＣＰＵ１５０は、データ移動制御部１６５からAck信号線１４を通じてAck信号を受信し、ＩＣカード１００のメモリアクセスを終了する(ステップＳ４５)。
＜実施の形態２＞
＜概要＞
上述した実施の形態１は、メモリ１７０において物理領域と仮想領域(１６バイト移動用仮想領域と３２バイト移動用仮想領域)を別に設け、仮想領域アドレス検出部１６２がＣＰＵ１５０から指定されたアドレスが仮想領域アドレスか否か判断することで、仮想アクセスか否か判断するものとして説明した。
【００６２】
本実施の形態は、アドレス空間として物理領域とは別に仮想領域を設けず、ＣＰＵ１５０は、仮想アクセスを行う場合、レコードデータが格納されている各レコードデータ領域の先頭アドレス群を１６バイト移動用仮想アドレスとし、各先頭アドレスに１バイト増分させたアドレス群を３２バイト移動用仮想アドレスとして、リードコマンド及びライトコマンド出力時にはこれらのアドレスを指定する。
【００６３】
また、本実施の形態では、ＣＰＵ１５０が上記仮想アドレスを指定してブロック転送を行う場合において、コマンドを送出する前に上記仮想アドレスを指定したブロック転送を行う仮想モードに変更する通知をメモリ制御部１６０に行い、アドレス変換部１６３及びデータ長判別部１６４を仮想モードに設定する。また、リーダライタ２００からの電力供給開始時、及び仮想モード信号がＣＰＵ１５０から送出されていない時は、アドレス変換部１６３及びデータ長判別部１６４を通常のアクセスモードに設定し、ＣＰＵ１５０から指定されたメモリ１７０のアドレスに対して通常のメモリアクセスを行う。
＜構成＞
以下、本実施の形態に係るＩＣカード１００の構成について、図６を用いて説明する。
尚、上述した実施の形態１と同じ構成については説明を省略する。
【００６４】
ＣＰＵ１５０は、実施の形態１で説明した信号線以外に、モード切替信号線１５によりメモリ制御部１６０と接続されている。
ＣＰＵ１５０は、仮想アクセスを行う場合に、モード切替信号線１５に仮想モードを示す信号を送出して、モードの切替を指示する機能を有する。
尚、ＣＰＵ１５０は、仮想モードにおいてメモリ１７０に対してアクセスを行う場合、移動させるデータ長に応じて、各レコードデータ領域について設定された１６バイト移動用仮想アドレス又は３２バイト移動用仮想アドレスを指定する。
【００６５】
メモリ制御部１６０は、実施の形態１と異なり、仮想領域アドレス検出部１６２を含まない構成であり、アドレス変換部１６３及びデータ長判別部１６４は、ＣＰＵ１５０からモード切替信号線１５を通じて仮想モード切替信号を受付ける機能を有する。
また、アドレス変換部１６３は、仮想モード切替信号を受付けている間は、通常のアクセスモードから仮想モードに切替えて、ＣＰＵ１５０から指定されたアドレスを含むレコードデータ領域の先頭アドレスに変換する機能と、仮想モード切替信号を受付けていない間、すなわち、通常のアクセスモードの時は、ＣＰＵ１５０からアドレス信号線１１を通じて指定されたアドレスを変換せずにデータ移動制御部１６５に送出する機能とを有する。
【００６６】
データ長判別部１６４は、仮想モード切替信号を受付けている間、通常のアクセスモードから仮想モードに切替え、ＣＰＵ１５０からリードコマンドを受付けた場合に、ＣＰＵ１５０から指定されたアドレスを含むレコードデータ領域の先頭アドレスと当該指定されたアドレスとの差分値が０であれば、データ長１６バイトを特定し、差分値が１であれば３２バイトを特定する機能を有する。また、仮想モード切替信号を受付けていない間、すなわち、通常のアクセスモードの時はデータ長の判別処理を停止する機能を有する。
【００６７】
メモリ１７０は、実施の形態１と同様に、レコードデータを格納するためのレコードデータ領域０〜Ｆで構成されており、本実施の形態では、仮想モードにおいて、Ad０、Ad１・・・等の各レコードデータ領域の先頭アドレス群が１６バイト移動用仮想アドレスであり、Ad１０、Ad１１・・・等の各レコードデータ領域の２バイト目の先頭アドレス群が３２バイト移動用仮想アドレスである。
【００６８】
従って、ＣＰＵ１５０が、レコードデータ０領域からブロック単位にデータを読み出す場合において、仮想モードを示すモード信号を送出してAd０のアドレスを指定したときは、レコードデータ０領域から１６バイトのデータが読み出され、Ad１０のアドレスを指定したときは、レコードデータ０領域及びレコードデータ１領域から３２バイトのデータが読み出される。
＜動作＞
以下、本実施の形態に係るメモリ制御部１６０の動作について説明する。
【００６９】
アドレス変換部１６３及びデータ長判別部１６４は、リーダライタ２００からの電力供給開始時に通常アクセスモードに設定する(ステップＳ１１１)
アドレス変換部１６３及びデータ長判別部１６４が、ＣＰＵ１５０からモード切替信号線１５を通じて仮想モードを示すモード信号を受信した場合(ステップＳ１１２：Ｙ)、アドレス変換部１６３及びデータ長判別部１６４は、仮想モードに切替える(ステップＳ１１３)。
【００７０】
データ移動制御部１６５が、ＣＰＵ１５０から制御信号線１２を通じて送出されたリードコマンドを受付け、アドレス変換部１６３及びデータ長判別部１６４が、アドレス信号線１１を通じてメモリ１７０のアドレスを受付けた場合(ステップＳ１１４：Ｙ)、アドレス変換部１６３は、受付けたアドレスを、当該アドレスを含むレコードデータ領域の先頭アドレスに変換する。また、データ長判別部１６４は、受付けたアドレスを含むレコードデータ領域の先頭アドレスと、当該受付けたアドレスとの差分値に応じて、受付けたアドレスが当該レコードデータ領域の１バイト目のアドレスか否か判断する(ステップＳ１１５)。
【００７１】
ステップＳ１１４において、ステップＳ１１５の差分値が０あれば、当該レコードデータ領域の１バイト目のアドレスであると判断し(ステップＳ１１５：Ｙ)、データ長判別部１６４はデータ長１６バイトを特定してデータ移動制御部１６５に当該先頭アドレスとデータ長１６バイトを示す情報を送出し、アドレス変換部１６４は、当該レコードデータ領域の先頭アドレスをデータ移動制御部１６５に送出する(ステップＳ１１６)。
【００７２】
また、ステップＳ１１５において、受付けたアドレスが、対応するレコードデータ領域の１バイト目のアドレスでない場合(ステップＳ１１５：Ｎ)、すなわち、レコードデータ領域の先頭アドレスと受付けたアドレスとの差分値が１であり、当該レコードデータ領域の２バイト目のアドレスである場合、アドレス変換部１６４は、当該レコードデータ領域の先頭アドレスを特定し、データ長判別部１６４はデータ長３２バイトを特定し、データ移動制御部１６５に当該先頭アドレスとデータ長３２バイトを示す情報を送出する(ステップＳ１１７)。
【００７３】
データ移動制御部１６５が、ステップＳ１１３のリードコマンドに続いてライトコマンドを受付けた場合(ステップＳ１１８：Ｙ) 、アドレス変換部１６３は、ライトコマンドの受付時に指定されたアドレスを含むレコードデータ領域の先頭アドレスを示す情報をデータ移動制御部１６５に送出する。
データ移動制御部１６５は、ステップＳ１１６又はステップＳ１１７で特定されたレコードデータ領域の先頭アドレスを移動元アドレスとして、特定されたデータ長分のデータを順次読み出し(ステップＳ１１９)、ライトコマンドの受付け時にアドレス変換部１６３から受付けた先頭アドレスを移動先アドレスとして、読み出した各データを当該移動先アドレスに順次書き込む（ステップＳ１２０）。
【００７４】
データ移動制御部１６５は、読み出したデータの書き込みが全て完了したとき、ＣＰＵ１５０にAck信号を送出する(ステップＳ１２１)。
＜動作例＞
上述したＩＣカード１００の動作例について図９を用いて説明する。
図８は、ＩＣカード１００が、リーダライタ２００から図６に示すメモリ１７０のレコードデータＡ及びＢのデータを更新する要求を受付けた場合のＣＰＵ１５０、メモリ制御部１６０の動作フローである。
【００７５】
以下、同図に即して説明する。
ステップＳ３０において、リーダライタ２００は、アンテナ部２４０を通じてレコードデータＡ及びＢにデータを書き込むライトコマンドを送出する。
ＣＰＵ１５０は、リーダライタ２００からアンテナ部１１０を介してレコードデータＡ及びＢへデータを書き込むライトコマンドを受信する。ＣＰＵ１５０は受信したデータ長が３２バイトであることを確認し、レコードデータ領域Ｃ(受信用)のアドレスをアドレス信号線１１を通じて送出し、データ信号線１３を通じて受信データを送出し、制御信号線１２にライトコマンドを送出する(ステップＳ１４０)。
【００７６】
メモリ制御部１６０のアドレス変換部１６３は、ＣＰＵ１５０から受付けたレコードデータ領域Ｃの先頭アドレスを示す信号をデータ移動制御部１６５に送出する。データ移動制御部１６５は、ＣＰＵ１５０から３２バイトの受信データとライトコマンドを受付け、データ信号線１３のバス幅に応じて、アドレス変換部１６３から受付けたレコードデータ領域Ｃの先頭アドレスから受信データを順次書き込み、受信データを受信用レコードデータ領域Ｃ及びＤに格納する(ステップＳ１５０)。
【００７７】
ＣＰＵ１５０は、ステップＳ１４０に続いて、モード切替信号線１５を通じて仮想モード信号の送出を開始し(ステップＳ１４１)、レコードデータ領域Ａの２バイト目アドレス(Ad１Ａ)を指定して、リードコマンドを送出する(ステップＳ１４２)。
メモリ制御部１６０のアドレス変換部１６３及びデータ長判別部１６４は、モード切替信号線１５を通じて仮想モード信号を受付けると、通常アクセスモードから仮想モードに切替える(ステップＳ１５１)。
【００７８】
続いて、アドレス変換部１６３及びデータ長判別部１６４は、ＣＰＵ１５０から受付けたアドレスを含むレコードデータ領域Ａのアドレスであることを特定し、データ長判別部１６４は、レコードデータ領域Ａの先頭アドレスと当該アドレスとの差分値が１であると判断してデータ長３２バイトを特定する。また、アドレス変換部１６３は、レコードデータ領域Ａの先頭アドレスを示す情報をデータ移動制御部１６５に送出し、データ長判別部１６４はデータ長３２バイトを示す情報をデータ移動制御部１６５に送出する(ステップＳ１５２)。
【００７９】
ＣＰＵ１５０は、ステップＳ１４２に続いて、レコードデータ領域Ｅの２バイト目アドレス（Ad１Ｅ）指定して、ステップＳ１４２で読み出したデータを書き込むライトコマンドを送出する(ステップＳ１４３)。
メモリ制御部１６０のアドレス変換部１６３は、ライトコマンド送出時に指定されたAd１Ｅに基づいて、レコードデータ領域Ｅを特定し、レコードデータ領域Ｅの先頭アドレスを示す情報をデータ移動制御部１６５に送出する。データ移動制御部１６５は、ステップＳ１５２でアドレス変換部１６３及びデータ長判別部１６４から送出されたレコードデータ領域Ａの先頭アドレスからデータ長３２バイトのデータを順次読み出し、読み出した各データを、ライトコマンド受付時にアドレス変換部１６３からデータ移動制御部１６５に送出されたレコードデータ領域Ｅの先頭アドレスから順次書き込む(ステップＳ１５３)。この処理により、レコードデータ領域Ａ及びＢに格納されているデータをレコードデータ領域Ｅ及びＦに退避させる。
【００８０】
ＣＰＵ１５０は、ステップＳ１４３に続いて、レコードデータ領域Ｅの２バイト目のアドレス(Ad１Ｅ)を指定してリードコマンドを送出し(ステップＳ１４４)、続いて、ステップＳ１４４で読み出したデータをレコードデータ領域Ａの２バイト目アドレス(Ad１Ａ)に書き込むライトコマンドを送出する(ステップＳ１４５)。
メモリ制御部１６０のアドレス変換部１６３及びデータ長判別部１６４は、ステップＳ１４４のリードコマンドとアドレス(Ad１Ｅ)を受付け、当該アドレスを含むレコードデータ領域Ｅを特定する。アドレス変換部１６３はレコードデータ領域Ｅの先頭アドレスを示す情報をデータ移動制御部１６５に送出し、データ長判別部１６４は、レコードデータ領域Ｅの先頭アドレスと受付けたアドレスとの差分値１に基づきレコードデータ領域Ｅの２バイト目のアドレスであると判断し、データ長３２バイトを示す情報をデータ移動制御部１６５に送出する(ステップＳ１５４)。
【００８１】
また、アドレス変換部１６３は、ステップＳ１４５のライトコマンドとレコードデータ領域Ａの２バイト目アドレス（Ad１Ａ）を受付け、当該アドレスを含むレコードデータ領域Ａを特定し、当該レコードデータ領域Ａの先頭アドレスを示す情報をデータ移動制御部１６５に送出する。データ移動制御部１６５は、ステップＳ１５４でアドレス変換部１６３及びデータ長判別部１６４から受付けたレコードデータ領域Ｅの先頭アドレスからデータ長３２バイトのデータを順次読み出し、読み出した各データを、ライトコマンドの受付け時にアドレス変換部１６３から受付けたレコードデータ領域Ａの先頭アドレスから順次書き込み、リーダライタ２００から受信したデータをレコードデータ領域Ａ及びＢに書き込む(ステップＳ１５５)。
【００８２】
データ移動制御部１６５は、レコードデータ領域Ｅから順次読み出したデータの全てをレコードデータ領域Ａ及びＢに書き込む処理が完了した時、ＣＰＵ１５０にAck信号を送出する（ステップＳ１５６）。
ＣＰＵ１５０は、データ移動制御部１６５からAck信号を受付け(ステップＳ１４６)、仮想モード信号送出を終了する(ステップＳ１４７)。
【００８３】
メモリ制御部１６０のアドレス変換部１６３及びデータ長判別部１６４は、仮想モードから通常のアクセスモードに切替える(ステップＳ１５７)。
＜補足＞
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）図９は、実施の形態１の変形例に係るＩＣカード３００の構成を示しており、本変形例のＩＣカード３００は、上述した実施の形態１のメモリ１７０とは同様の構成であるが、メモリ制御部３６０にベースアドレス制御部１６６を含み、ＣＰＵ１５０とメモリ制御部３６０との間がベースアドレス変更指示信号線１６で接続されている点が実施の形態１と異なる。
【００８４】
上述した実施の形態１は、メモリ１７０の物理領域１７１の開始アドレスと仮想領域１７６の開始アドレスが固定であるため、物理領域１７１のベースアドレスを変更する場合には、メモリ１７０の物理領域１７１と仮想領域１７６との対応を修正する必要がある。
本変形例に係るＩＣカード３００は、物理領域１７１のベースアドレスを変更する場合、ＣＰＵ１５０からベースアドレスを変更するためのベースアドレス値をベースアドレス制御部１６６に送出し、ベースアドレス制御部１６６は、アドレス変換部１６３から受付けた物理領域アドレスにベースアドレス値を合わせた物理領域アドレスを特定し、当該特定した物理領域アドレスをデータ移動制御部１６５に送出する。
【００８５】
従って、本変形例の場合、メモリ１７０の物理領域と仮想領域との対応を修正することなく、ＣＰＵ１５０からベースアドレス値をメモリ制御部３６０に送出することにより、物理領域アドレスのベースアドレスを変更することができる。
（２）また、上述した実施の形態１及び２は、メモリ１７０の物理領域のレコードデータを移動させる場合、ＣＰＵ１５０からメモリ制御部１６０に当該レコードデータ領域に対応する仮想領域アドレスを指定してリードコマンドを送出する。続いて、ＣＰＵ１５０が、当該レコードデータの移動先となる物理領域アドレスに対応する仮想領域アドレスを指定してライトコマンドをメモリ制御部１６０に送出し、リードコマンドで読み出したレコードデータをライトコマンドで指定された移動先アドレスに書き込むことで、データの移動を行うものとして説明したが、ＣＰＵ１５０がリードコマンドを送出せず、ライトコマンドのみ送出してレコードデータを移動させることとしてもよい。
【００８６】
以下、この場合について説明する。
ＣＰＵ１５０は、レコードデータを移動させる場合、移動先となるレコードデータ領域と対応する仮想領域アドレスを指定し、移動元となるレコードデータ領域に対応する仮想領域アドレスを示す情報をデータ部に設定してライトコマンドを送出する。
メモリ制御部１６０は、ライトコマンドを受付けた場合に、ＣＰＵ１５０から受付けた仮想領域アドレスに対応するレコードデータ領域の先頭アドレスを移動先アドレスとして特定し、当該仮想領域アドレスに対応するデータ長を特定する。
【００８７】
メモリ制御部１６０は、ライトコマンドを受付けた場合に、ＣＰＵ１５０から受付けた仮想領域アドレスを示す情報に基づいて、当該仮想領域アドレスに対応するレコードデータ領域の先頭アドレスを移動元アドレスとして特定し、特定した移動元アドレスから特定したデータ長に従ってレコードデータを順次読み出し、読み出した各レコードデータを、特定した移動先アドレスに順次書き込む。
【００８８】
上記方法により、ＣＰＵ１５０は、レコードデータを移動させる場合に、ライトコマンドのみ送出することで、当該レコードデータの読み出しと書き込みを行い、レコードデータを移動させることができるので、実施の形態１と比べて命令数を減らすことができ、ＣＰＵ１５０によるデータ移動処理時間を短縮することができる。
（３）上述した実施の形態において、リーダライタ２００からのデータ更新要求に応じてＩＣカード１００が更新対象となるレコードデータを退避させ、リーダライタから受信した受信データを更新対象となるレコードデータ領域に書き込む際にリーダライタからの電源供給が絶たれた場合について説明する。
【００８９】
ＣＰＵ１５０は、更新対象となるレコードデータ領域へのデータ書込み処理の開始及び終了を示す各フラグ（開始フラグと終了フラグ）と更新対象となるレコードデータ領域を示す情報を保持し、データ書込み処理前は各フラグをOFFに設定する。ＣＰＵ１５０は、更新対象となるレコードデータ領域に対応する仮想領域アドレスを指定し、退避用レコードデータ領域に対応する仮想領域アドレスに書き込むライトコマンドを送出した時に開始フラグをONに設定する。
【００９０】
メモリ制御部１６０は、上記実施の形態と同様に、ＣＰＵ１５０から送出された上記ライトコマンドを受付けたときに、更新対象となるレコードデータ領域に受信データを書き込む処理を開始し、全データの書込み処理が終了したときにAck信号をＣＰＵ１５０に送出し、ＣＰＵ１５０は、メモリ制御部１６０からAck信号を受付けたときに終了フラグをONに設定し、更新対象となるレコードデータ領域の情報を消去する。
【００９１】
尚、リーダライタ２００からの電源供給が絶たれたことにより全データの書込み処理が完了しなかった場合には、メモリ制御部１６０はAck信号を送出せず、終了フラグはOFFの状態が保持される。
以下、リーダライタ２００からの電源供給が絶たれた場合のデータ復旧処理について説明する。
【００９２】
ＣＰＵ１５０は、リーダライタ２００から再度電源が供給されて、次のデータ更新要求を受付けた際に、終了フラグがONかOFFかを確認し、終了フラグがOFFである場合に、退避用レコードデータ領域に対応する仮想領域アドレスを指定してリードコマンドを送出し、続いて、前回の更新対象のレコードデータ領域に対応する仮想領域アドレスを指定し、読み出したデータを当該仮想領域アドレスに書き込むライトコマンドを送出する。
【００９３】
メモリ制御部１６０は、ＣＰＵ１５０から上記リードコマンド及びライトコマンドを受付け、退避用レコードデータ領域に格納されているデータを読み出し、ライトコマンドで指定されたレコードデータ領域に読み出したデータを書き込む。
（４）上述した実施の形態では、メモリ制御部１６０のデータ移動制御部１６５はＣＰＵ１５０から受付けた受信データの書込みが全て完了したときにAck信号を送出するものとして説明したが、データ移動制御部１６５は、データの書込み開始時又は開始前にAck信号をＣＰＵ１５０に送出することとしてもよい。
【００９４】
データ書込み開始時又は開始前にAck信号を送出することにより、メモリへの書込み処理と並列して、ＣＰＵ１５０は演算処理等の他の処理を行うことができる。
（５）上述した実施の形態１は、ＣＰＵ１５０がメモリ１７０の物理領域１７１のレコードデータを移動させる場合、物理領域１７１の各レコードデータ領域と対応するように予め設定された仮想領域１７６のアドレスの中から移動元アドレスと移動先アドレスを指定し、メモリ制御部１６０が当該仮想領域の移動元アドレスと移動先アドレスの各々に対応する各レコードデータ領域の先頭アドレスと移動データ長を特定し、当該先頭アドレスから特定したデータ長分のデータを順次読み出し、移動先のレコードデータ領域の先頭アドレスから順次書込むものとして説明したが、以下の方法によりレコードデータの移動を行うことも可能である。
【００９５】
ＣＰＵ１５０は、物理領域のレコードデータを移動させる場合、レコードデータ領域以外のアドレスであって、予め１６バイト移動用及び３２バイト移動用のレジスタ領域(以下、「仮想レジスタ」と言う。)として設定された各領域のアドレスのうちのいずれか一方を指定し、指定した仮想レジスタに物理領域のレコードデータ領域アドレス(移動元アドレス)を書き込むライトコマンドを送出する。続いて、ＣＰＵ１５０は、移動先アドレスを示す物理領域のレコードデータ領域アドレスを指定してライトコマンドを送出し、データの移動を開始させる移動開始信号をメモリ制御部１６０に送出する。
【００９６】
尚、仮想レジスタには移動元アドレスの設定を行わず、メモリ制御部１６０内部に移動元アドレス及び移動先アドレスを設定するための各レジスタが設けられているものとする。
メモリ制御部１６０は、ＣＰＵ１５０から仮想レジスタを指定した移動元アドレスのライトコマンドを受付けた場合に、移動元アドレスをメモリ制御部１６０内のレジスタに設定し、当該指定された仮想レジスタが１６バイト移動用レジスタか３２バイト移動用レジスタかに応じて、１６バイト又は３２バイトの移動データ長を特定する。また、メモリ制御部１６０が、移動元アドレスのライトコマンドに続いて、移動先アドレスを指定したライトコマンドをＣＰＵ１５０から受付けた場合、当該移動先アドレスをメモリ制御部１６０内のレジスタに設定し、ＣＰＵ１５０からデータ移動開始信号を受付けた時に、メモリ制御部１６０内のレジスタに設定した移動元アドレスから特定したデータ長分のデータを順次読み出し、読み出した各データをメモリ制御部１６０内のレジスタに設定した移動先アドレスに順次書き込む。メモリ制御部１６０は、データの移動処理が完了したときにデータ移動終了を示す信号をＣＰＵ１５０に送出する。
【００９７】
尚、上述したデータの移動処理は、ＣＰＵ１５０からデータ移動開始信号をメモリ制御部１６０が受付けた時に行うものとして説明したが、データ移動開始信号を送出せずに、メモリ制御部１６０が移動先アドレスを内部のレジスタに設定した際に行うこととしてもよい。また、メモリ制御部１６０は、データ移動終了を示す信号を送出する代わりにAck信号をＣＰＵ１５０に送出してもよい。
【００９８】
上記データの移動処理により、ＣＰＵが移動元アドレスを仮想レジスタに書き込むコマンドを送出した際に、当該仮想レジスタに基づいて移動データ長を特定するため、従来の様にＣＰＵから移動データ量を示す情報をレジスタに書き込むコマンドを送出する必要がない。従って、レコードデータを移動させる際のＣＰＵが送出する命令数が従来と比べて少ないので、データの移動処理に要する時間も従来より短縮することができる。
（６）上述した実施の形態では、１６バイト移動用仮想領域と３２バイト移動用仮想領域を設定するものとして説明したが、４８バイト、６４バイト等の移動用仮想領域を設定してもよい。
（７）上述した実施の形態１及び２では、ＣＰＵ１５０から送出されるアドレス信号に基づいて、メモリ制御部１６０が移動させるべきデータ長を特定するものとして説明したが、ＣＰＵ１５０が、移動させるべきデータ長に応じて命令長を変えてメモリ制御部１６０に移動命令を行ってもよい。
【００９９】
上記の場合、例えば、ＣＰＵ１５０が、１６バイトのレコードデータを移動させる場合、１バイトの命令をメモリ制御部１６０に送出し、３２バイトのレコードデータを移動させる場合には、２バイトの命令をメモリ制御部１６０に送出する。メモリ制御部１６０のデータ長判別部１６４は、ＣＰＵ１５０から送出されたアドレス信号、データ信号、及び制御信号で示される命令長が１バイトか２バイトか判断し、１バイトであればデータ長１６バイトを特定し、２バイトであればデータ長３２バイトを特定する。
（８）また、上述した実施の形態１では、メモリ制御部１６０は、ＣＰＵ１５０から受付けた仮想部分領域アドレスと仮想領域の先頭アドレスとの差分値を求めることにより、受付けた仮想部分領域アドレスが１６バイト移動用仮想領域１７７のアドレスか３２バイト移動用仮想領域１７８のアドレスか判断するものとして説明した。
【０１００】
仮想領域の先頭アドレスが、例えば、１６バイト(２の４乗)のｎ倍(ｎは整数)である場合、データ長判別部１６４は、２の４乗のアドレス信号線が１であれば、受付けた仮想部分領域アドレスは１６バイト移動用仮想領域１７７のアドレスであり、データ長を１６バイトと特定し、２の４乗のアドレス信号線が０であれば、仮想部分領域アドレスは３２バイト移動用仮想領域１７８のアドレスであり、データ長を３２バイトと特定してもよい。
（９）また、上述した実施の形態２では、メモリ制御部１６０は、ＣＰＵ１５０から受付けた仮想領域アドレスを含むレコードデータ領域の先頭アドレスとの差分値を求めることにより、受付けた仮想領域アドレスが１６バイト移動用仮想アドレスか３２バイト移動用仮想アドレスか判断するものとして説明した。
【０１０１】
データ長判別部１６４は、アドレス信号線の最下位の桁が１であれば、ＣＰＵ１５０から受付けたアドレスが、３２バイト移動用仮想アドレスとして特定し、最下位の桁が０であれば、１６バイト移動用仮想アドレスとして特定してもよい。
（１０）また、上述した実施の形態１及び実施の形態２は、ＣＰＵ１５０が移動させるデータ長に応じたアドレスをアドレス信号線を介して送出することにより、ＣＰＵ１５０がデータを移動させる場合に送出する制御信号を減らして移動処理に要する時間を短縮するものとして説明したが、レコードデータ領域のデータの読み書きが正しく行われたか否かをＣＲＣ(Cyclic Redundancy Check)を用いて行うこととしてもよい。
【０１０２】
以下、この場合について説明する。
尚、本変形例では、各レコードデータ領域について、ＣＲＣを行う場合と行わない場合の各々について仮想アドレスが予め割り当てられているものとし、レコードデータが１４バイト、ＣＲＣコードが２バイトであるものとする。また、ＣＲＣを行わない場合については上述した実施の形態１と同様であるため説明を省略する。
【０１０３】
ＣＰＵ１５０は、リーダライタ２００から受信したデータを受信用レコードデータ領域に受信データを書き込むライトコマンドをメモリ制御部１６０に送出する。
メモリ制御部１６０は、ＣＰＵ１５０からアドレス信号線を通じて受付けた受信用レコードデータ領域のアドレスに、データ信号線を通じて受付けた受信データを書き込む。
ＣＰＵ１５０は、受信データのライトコマンドに続いて、メモリ制御部１６０からAck信号を受付けると、受信用レコードデータ領域に対応するＣＲＣを行う場合の仮想アドレスをアドレス信号線に送出してリードコマンドを送出し、移動先となるレコードデータ領域のアドレスをアドレス信号線に送出する。
【０１０４】
メモリ制御部１６０は、ＣＰＵ１５０からリードコマンドを受付けると、受信用レコードデータ領域のデータを読み出し、当該データに所定の演算を行ってＣＲＣコードを生成し、生成したＣＲＣコードを読み出したデータに付加する。また、メモリ制御部１６０は、当該ＣＲＣコードと移動先アドレスとを示す情報をＣＰＵ１５０へ送出し、Ack信号を送出する。
【０１０５】
メモリ制御部１６０は、続いて、ライトコマンドを受付けた際に指定された移動先のレコードデータ領域にＣＲＣコードを付加したデータを書き込み、Ack信号をＣＰＵ１５０に送出する。
次に、ＣＰＵ１５０が、ＣＲＣコードが付加されたデータを移動させる際にＣＲＣを行う場合について説明する。
【０１０６】
ＣＰＵ１５０は、上記データが格納されたレコードデータ領域に対応し、ＣＲＣを行う場合に用いる仮想アドレスを移動元アドレスとしてリードコマンドをメモリ制御部１６０に送出する。
メモリ制御部１６０は、ＣＰＵ１５０からリードコマンドを受付けると、仮想アドレスに対応するレコードデータ領域のアドレスを特定し、当該アドレスに格納されているデータを読み出してＣＲＣコードを生成し、当該ＣＲＣコードと特定したアドレスとを示す情報を送出し、Ack信号を送出する。
【０１０７】
ＣＰＵ１５０は、メモリ制御部１６０によって特定されたアドレスを受付けると、先ほどメモリ制御部１６０から受付けた当該アドレスのＣＲＣコードを読み出し、受付けたＣＲＣコードと比較し、ＣＲＣコードが一致する場合は、次の命令を実行し、ＣＲＣコードが一致しない場合は、所定のエラー処理を行う。
（１１）上述した実施の形態では、レコードデータを更新する際のレコードデータの移動には、退避用バッファとしてのレコードデータ領域を用いるものとして説明したが、レコードデータの更新を伴わずにデータを移動させる場合、更に、物理領域において移動用バッファとしてのレコードデータ領域(以下、「移動用レコードデータ領域」と言う。) を設定し、当該移動用レコードデータ領域に対応する仮想アドレスを予め設定してもよい。
【０１０８】
このレコードデータの更新を伴わない移動の場合には、ＣＰＵ１５０は、移動元レコードデータ領域に対応する仮想アドレスを指定してリードコマンドを送出する。
メモリ制御部１６０は、仮想アドレスとリードコマンドを受付けると、実施の形態１と同様に、当該仮想アドレスに対応する物理領域の移動元アドレスを特定し、特定した移動元アドレスからデータを順次読み出して移動用レコードデータ領域に書き込む。
【０１０９】
ＣＰＵ１５０は、上記リードコマンドに続いて、移動先レコードデータ領域に対応する仮想アドレスを指定してライトコマンドを送出する。
メモリ制御部１６０は、ＣＰＵ１５０から仮想アドレスとライトコマンドを受付けた時に、当該仮想アドレスに対応する物理領域の移動先アドレスを特定し、移動用レコードデータ領域からデータを順次読み出して、特定した移動先アドレスに書き込む。
（１２）また、本発明に係る処理は、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記処理を実現するためのＬＳＩであるとしてもよい。
【産業上の利用可能性】
【０１１０】
本発明に係るＩＣカードは、ＣＰＵ及びメモリを備えるＩＣカードやＰＣ等の処理装置に利用され得る。
【図面の簡単な説明】
【０１１１】
【図１】本実施の形態１及び２に係るＩＣカード及びリーダライタの構成を示す図である。
【図２】実施の形態１に係るＩＣカードの構成を示す図である。
【図３】実施の形態１に係るＩＣカードの動作フローを示す図である。
【図４】実施の形態１に係るＩＣカードの動作フローを示す図である。
【図５】実施の形態１に係るＩＣカードとリーダライタの動作例を示す図である。
【図６】実施の形態２に係るＩＣカードの構成を示す図である。
【図７】実施の形態２に係るＩＣカードの動作フローを示す図である。
【図８】実施の形態２に係るＩＣカードとリーダライタの動作例を示す図である。
【図９】実施の形態１の変形例に係るＩＣカードの構成を示す図である。
【符号の説明】
【０１１２】
１００  ＩＣカード
１５０  ＣＰＵ
１６０  メモリ制御部
１６１  仮想領域アクセス検知部
１６２  仮想領域アドレス検出部
１６３  アドレス変換部
１６４  データ長判別部
１６５  データ移動制御部
１７０  メモリ
１７１  物理領域
１７６  仮想領域
２００  リーダライタ
【図１】
2008171146.tif 000003
【図２】
2008171146.tif 000004
【図３】
2008171146.tif 000005
【図４】
2008171146.tif 000006
【図５】
2008171146.tif 000007
【図６】
2008171146.tif 000008
【図７】
2008171146.tif 000009
【図８】
2008171146.tif 000010
【図９】
2008171146.tif 000011