説明

ICチップ、ICカード、制御方法及び制御プログラム

【課題】不揮発性メモリへの負担を軽減させつつ、所定のプログラミング言語で記述されたプログラムを処理することができるICチップ、ICカード、制御方法及び制御プログラムを提供すること。
【解決手段】不揮発性メモリ21と、所定の処理を実行する第1の実行部22と、所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換部23と、コード変換部23により変換されたコードを、第1の実行部22により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の第2の形式のコードに基づいて所定の処理を実行する第2の実行部24を備える。第2の実行部24は、第2の形式のコードに基づいて所定の処理を実行する際に、最後の命令コードのみを命令コードとして実行する。

【発明の詳細な説明】
【技術分野】
【0001】
所定のプログラム言語で記述されたプログラムを処理するICチップと、当該ICチップを備えるICカードと、当該ICチップの制御方法と、当該ICチップの制御プログラムに関する。
【背景技術】
【0002】
情報機器は、制御部と、揮発性メモリと、不揮発性メモリ(例えば、NAND型フラッシュメモリ)を協調して動作させることによって、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作(例えば、動画を再生処理する動作)を実行している。
【0003】
NAND型フラッシュメモリは、書き換え回数に制限があり、書き換え回数が増加すると処理速度が低下する問題がある。特に、インタプリタで動作するプログラム(Java(登録商標)、Ruby等)においては、生成されたコードを順序どおりに実行することが基本的な動作になるため、NAND型フラッシュメモリの同一領域への書き込みが頻発する場合がある。このような場合には、NAND型フラッシュメモリは、書き込みが頻発する領域の寿命が他の領域に比して低下してしまう問題がある。
【0004】
ここで、特許文献1では、書き換え可能回数が大きい不揮発性メモリ(A)と、不揮発性メモリ(A)に比較して書き換え可能回数が小さい不揮発性メモリ(B)を備えるデータ記憶装置が記載されている。このデータ記憶装置は、不揮発性メモリ(A)にデータを蓄積しておいて、一定条件下に不揮発性メモリ(B)にデータを移行することによって、不揮発性メモリ(B)の寿命を低下させないようにしている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−9213号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、このデータ記憶装置は、不揮発性メモリを2つ備えるので、装置の小型化と、コストダウンを図れない問題がある。
【0007】
そこで、本発明は、不揮発性メモリへの負担を軽減させつつ、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができるICチップ、ICカード、制御方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、以下のような解決手段により、前記課題を解決する。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。請求項1の発明は、データを格納する不揮発性メモリ(21)と、所定の処理を実行する第1の実行部(22)と、所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換部(23)と、前記コード変換部により変換された前記第1の形式のコードを、前記第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を実行する第2の実行部(24)を備え、前記第2の実行部は、前記第2の形式のコードに基づいて所定の処理を実行する際に、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行するICチップ(10)である。
【0009】
請求項2の発明は、請求項1に記載のICチップにおいて、前記第2の形式のコードに含まれているコードの中から、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する検索部(25)を備え、前記第2の実行部は、前記第2の形式のコードに基づいて所定の処理を実行する際に、前記検索部により前記命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行するICチップ(10)である。
【0010】
請求項3の発明は、請求項2に記載のICチップにおいて、前記検索部は、前記第2の形式のコードにおいて、所定のコード数の中から前記命令コードを検索するICチップ(10)である。
【0011】
請求項4の発明は、請求項1に記載のICチップにおいて、前記第1の形式のコードに含まれているコードの中から、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する検索部(25)と、前記検索部により前記命令コードが複数個検索された場合、最後の命令コード以外の命令コードが含まれないように前記コード変換部により変換された前記第1の形式のコードを再生成する再生成部(26)を備え、前記第2の実行部は、前記再生成部により前記第1の形式のコードが再生成された場合、当該再生成された第1の形式のコードを、前記第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を実行するICチップ(10)である。
【0012】
請求項5の発明は、請求項1から4までのいずれか1項に記載のICチップ(10)を備えるICカード(1)である。
【0013】
請求項6の発明は、所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換工程と、前記コード変換工程により変換された前記第1の形式のコードを、所定の処理を実行する第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を第2の実行部により実行する実行工程を備え、前記実行工程は、前記第2の形式のコードに基づいて所定の処理を実行する際に、データを格納する不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行するICチップ(10)の制御方法である。
【0014】
請求項7の発明は、コンピュータに、所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換工程と、前記コード変換工程により変換された前記第1の形式のコードを、所定の処理を実行する第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を第2の実行部に実行させる実行工程を行わせ、前記実行工程は、前記第2の形式のコードに基づいて所定の処理を実行する際に、データを格納する不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行する制御プログラムである。
【発明の効果】
【0015】
不揮発性メモリへの負担を軽減させつつ、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【図面の簡単な説明】
【0016】
【図1】ICカードの構成を示す図である。
【図2】ICカードが備える制御処理部の構成を示す機能ブロック図である。
【図3】実行コードを実行する際のCPUと不揮発性メモリの動作についての説明に供する図である。
【図4】実行コードを実行する際の第2の実行処理部と不揮発性メモリの動作についての説明に供する図である。
【発明を実施するための形態】
【0017】
以下、図面等を参照しながら、本発明の実施の形態について詳しく説明する。図1は、外部機器(ホスト機器)と通信を行うICチップ10を内蔵するICカード1の外観を模式的に示す図である。なお、図1には、ICチップ10に接続される制御処理部20を模式的に示している。
【0018】
ICチップ10は、図1に示すように、8個の外部接触端子(端子C1〜端子C8)が設けられている。端子C1及び端子C5は、それぞれ、ICカード1の制御処理部(不図示)のVCCパッド及びGNDパッドに接続されており、内蔵されている制御処理部20に電力を供給する。また、端子C4及び端子C8は、それぞれマイクロコントローラのD+及びD−に接続されている。ICカード1では、この端子C4及び端子C5をUSB(universal serial bus)により規定される通信端子に利用する。端子C2は、リセット(RST)信号が入力される端子であり、端子C3は、クロック(CLK)信号が入力される端子である。また、端子C6は、不揮発性メモリ(例えば、EEPROM)に対するプログラム電圧(Vpp)が供給される端子であり、端子C7は、データが入出力(I/O)される端子である。
【0019】
また、本実施形態に係るICカード1は、外部装置に挿入されて、外部機器から送信される所定のプログラムを実行処理する機能を有している。
ここで、プログラムの実行処理の概略について説明する。なお、プログラムとは、Javaを代表とするバイトコードを用いて実行されるプログラムを意味する。このようなプログラムは、OS(Operating System)やマイクロプロセッサ(制御処理部)に依存することなく、どのようなプラットフォームでも動作するように設計されている。
【0020】
特に、Javaで記述されたソースコードは、コンパイル時にJavaバイトコードと呼ばれる中間コードにいったん変換される。この中間コードは、実行時にJava仮想マシン(以下、制御処理部という。)によって、実行するプラットフォームに対応した形式のコード(ネイティブコード)に変換され、実行される。プラットフォーム間の違いは、制御処理部が吸収するので、外部装置は、ICカード1のプラットフォームを意識せずにプログラムをICカード1に送信することができる。なお、Javaを代表とするバイトコードを用いて実行されるプログラムは、実際にはインタプリタで動作するものである。
【0021】
ここで、ICカード1は、上述したプログラムが実行される場合に、データをメモリに書き込む処理が発生する。具体的には、インタプリタで動作するコードは、制御処理部によって1命令ずつ中間コード又は実行プログラムを解釈しながら実行される。そのため、制御処理部は、コードが以下のようなパターンであった場合、パターン1とパターン3において、メモリAに同じデータxの書き込みを行うことになる。
コード1.メモリAにデータxを書き込む
コード2.メモリBにデータyを読み込む
コード3.メモリAにデータxを書き込む
【0022】
また、メモリAが書き換え回数に制限のあるEEPROM等の不揮発性メモリの場合、メモリAは、このようなコードが実行されると、製品の寿命が大幅に短くなる恐れがある。
また、コード1.の書き込み処理を制限し、コード3.の書き込み処理のみを実行した場合には、書き込み回数が1/2に低減され、メモリAの製品寿命が倍になる計算になる。
【0023】
本実施形態に係るICカード1は、特にバイトコードやインタプリタで動作するプログラムにおいて、書換えを予測等することにより、不揮発性メモリに対する書換え回数を制御する機能を有する。
【0024】
ここで、上述した機能を発揮するための制御処理部20の具体的な構成と動作について詳細に説明する。
制御処理部20は、図2に示すように、不揮発性メモリ21と、第1の実行部22と、コード変換部23と、第2の実行部24を備える。なお、制御処理部20は、ICチップ10の端子C7を介してデータが外部機器から入力され、当該端子C7を介してデータを外部機器に出力する。
【0025】
不揮発性メモリ21は、データを格納する機能を有しており、電源の供給が無くても格納されているデータを保持することができる。第1の実行部22は、所定の処理を実行する。例えば、第1の実行部22は、電源の供給が行われたときに他のメモリに格納されているOSを読み出し、起動する処理を実行する。
【0026】
コード変換部23は、所定のプログラミング言語(例えば、Java)で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換する。
第2の実行部24は、コード変換部23により変換された第1の形式のコードを、第1の実行部22により所定の処理が実行される環境に基づいて第2の形式のコード(ネイティブコード)に変換し、変換後の第2の形式のコードに基づいて所定の処理を実行する。
【0027】
また、第2の実行部24は、第2の形式のコードに基づいて所定の処理を実行する際に、不揮発性メモリ21の同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行する。
【0028】
このように構成されることによって、ICカード1は、上述したようなコード1.からコード3.を実行する場合には、コード1.を実行せず、コード3.のみを実行する。したがって、ICカード1は、不揮発性メモリ21への負担を軽減させつつ、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【0029】
なお、第2の実行部24は、不揮発性メモリ21の同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行しても問題が生じないことを事前に確認する処理を実行しても良い。また、第2の実行部24は、問題が生じない範囲で命令コードの数を低減するような構成であっても、不揮発性メモリ21の寿命を延ばすことができる。
【0030】
また、ICカード1は、図2に示すように、第2の形式のコードに含まれているコードの中から、不揮発性メモリ21の同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する検索部25を備える構成であっても良い。
【0031】
このような構成の場合には、第2の実行部24は、第2の形式のコードに基づいて所定の処理を実行する際に、検索部25により命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行する。
【0032】
具体的には、検索部25は、インタプリタの実行時において、書き込み命令が発生した場合に、複数の実行コードの中から命令コードを検索し、同一の書き込み命令が存在するかどうかを検索する。そして、第2の実行部24は、検索部25による検索結果から同様の書き込み命令が複数存在する場合には、同一領域への書き込みであるかどうかを判定し、同一領域への書き込みであり、かつ書き換えずとも問題ないと判断した場合には、その命令コードにしたがって書き換えを実行しない。
【0033】
このように構成されることによって、ICカード1は、不揮発性メモリ21への負担を軽減させつつ、命令コードの数の低減を動的に行い、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【0034】
また、検索部25は、第2の形式のコードにおいて、所定のコード数の中から命令コードを検索する。具体的には、検索部25は、第2の形式のコードを100コード先読みして、その100コードの中に当該命令コードが複数含まれているかどうかを検索する。
【0035】
このように構成されることにより、ICカード1は、全体のスループットが書き込み命令数により低下する可能性を排除して、命令コードの数の低減を動的に行い、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【0036】
また、検索部25は、第1の形式のコードに含まれているコードの中から、不揮発性メモリ21の同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する構成であっても良い。
【0037】
このような構成の場合には、ICカード1は、図2に示すように、検索部25により命令コードが複数個検索された場合、最後の命令コード以外の命令コードが含まれないようにコード変換部23により変換された第1の形式のコードを再生成する再生成部26を備える。なお、本実施形態では、再生成部26は、ICカード1の内部に備えられるものとして説明するが、ICカード1の各構成要素と協調して動作する構成であれば良く、例えば、外部に備えられていても良い。
【0038】
また、第2の実行部24は、再生成部26により第1の形式のコードが再生成された場合、当該再生成された第1の形式のコードを、第1の実行部22により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の第2の形式のコードに基づいて所定の処理を実行する。
【0039】
具体的には、検索部25は、インタプリタで実行される中間コードを実行前に確認し、不揮発性メモリ21の同一領域への書き換えが複数あるかどうかを確認する。再生成部26は、検索部25によって、不揮発性メモリ21の同一領域への書き換えを命ずる命令コードが複数確認され、そのうち書き換えが低減可能(書き換えずとも結果に変化がない)な場合、書き換え回数を低減した状態の中間コードを再生成する。そして、第2の実行部24は、再生成された中間コードを実行する。
【0040】
このように構成されることによって、ICカード1は、不揮発性メモリ21への負担を軽減させつつ、命令コードの数の低減を静的に行い、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【0041】
<実施例>
ここで、実行コードに対する具体的な処理について説明する。なお、以下の実施例では、制御処理部20は、EEPROM(Erasable Programmable ROM)としての不揮発性メモリ21の他、プログラムの格納領域としてのROM27と、ワーキングメモリとしてのRAM28を備えている。
【0042】
また、ROM27又は不揮発性メモリ21には、コード実行のためのインタプリタ及び実行コードが保持されているものとする。また、実行コードは、インタプリタ上で動作するものであり、不揮発性メモリ21への書き込み処理が存在するコードであるものとする。以下に、実行コードの一例を示す。
【0043】
コード1.ADD a,a,b //a=a+b
コード2.CMP a,b //a>b?
コード3.BPL LABEL10 //YES:LABEL10へ
コード4.MOV x,a //x=a
コード5.LABEL10:
コード6.MOV a,x //a=x
コード7.SHTL b //b<<1
コード8.ADD a,a,b //a=a+b
コード9.MOV x,a //x=a
コード10.SUB a,x,b //a=x−b
コード11.MOV x,a //x=a
【0044】
なお、「a」及び「b」は、それぞれRAM28に確保される変数であり、「x」は、不揮発性メモリ21に確保される変数であるとする。ここで、RAM28は、例えば、スタック(stack)により構成されている。
【0045】
検索部25は、例えば、実行コードの中から「MOV」で示される実行コードを検索する。検索部25は、コード4、コード6、コード9及びコード11を発見する。
ここで、コード4、コード9及びコード11は、不揮発性メモリ21の変数「x」に値「a」を格納し、不揮発性メモリ21を更新することを命ずるコードである。
【0046】
また、逐次実行するインタプリタの場合、「MOV」で示される実行コード(コード4、コード6及びコード11)を実行すると、「x」に対して3回の書込み処理が発生する(図3を参照)。なお、図3においては、CPUが不揮発性メモリに書き込み処理を実行するとして、模式的に示している。
【0047】
ところで、「MOV」で示される実行コード(コード4、コード9及びコード11)は、不揮発性メモリ21の同一領域への書き込み命令であり、かつ書き換えずとも問題が生じないものである。
【0048】
本実施形態に係るICカード1は、このような場合において、前2回の書き込み処理(コード4及びコード9)を実行せず、最後の実行コード(コード11)のみを実行する(図4を参照)。このように構成されることにより、ICカード1は、不揮発性メモリ21への負担を軽減させつつ、命令コードの数の低減を静的又は動的に行い、所定のプログラミング言語で記述されたプログラムを処理し、所定の動作を実行することができる。
【0049】
なお、本実施例では、実行コードに含まれる「MOV」コマンドのみを低減する対象にしたが、これに限られず他のコマンドであっても良い。
【0050】
また、第2の実行部24は、前2回の書き込み処理(コード4及びコード9)を実行せず、最後の実行コード(コード11)のみを実行するものとしているが、これに限られない。例えば、第2の実行部24と不揮発性メモリ21との間に不揮発性メモリ21に書き込み処理を実行する書込処理部を備える構成であっても良い。
【0051】
このような構成の場合には、第2の実行部24は、書込処理部を介して不揮発性メモリ21に書き込み処理を命令する。書込処理部は、例えば、上述の実施例によれば、第2の実行部24から命令される3回の書き込み処理に対して、前2回の書き込み処理(コード4及びコード9)を実行せず、最後の実行コード(コード11)のみを実行する。
【符号の説明】
【0052】
1 ICカード
10 ICチップ
20 制御処理部
21 不揮発性メモリ
22 第1の実行部
23 コード変換部
24 第2の実行部
25 検索部
26 再生成部
27 ROM
28 RAM

【特許請求の範囲】
【請求項1】
データを格納する不揮発性メモリと、
所定の処理を実行する第1の実行部と、
所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換部と、
前記コード変換部により変換された前記第1の形式のコードを、前記第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を実行する第2の実行部を備え、
前記第2の実行部は、前記第2の形式のコードに基づいて所定の処理を実行する際に、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行するICチップ。
【請求項2】
前記第2の形式のコードに含まれているコードの中から、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する検索部を備え、
前記第2の実行部は、前記第2の形式のコードに基づいて所定の処理を実行する際に、前記検索部により前記命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行する請求項1記載のICチップ。
【請求項3】
前記検索部は、前記第2の形式のコードにおいて、所定のコード数の中から前記命令コードを検索する請求項2記載のICチップ。
【請求項4】
前記第1の形式のコードに含まれているコードの中から、前記不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードを検索する検索部と、
前記検索部により前記命令コードが複数個検索された場合、最後の命令コード以外の命令コードが含まれないように前記コード変換部により変換された前記第1の形式のコードを再生成する再生成部を備え、
前記第2の実行部は、前記再生成部により前記第1の形式のコードが再生成された場合、当該再生成された第1の形式のコードを、前記第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を実行する請求項1記載のICチップ。
【請求項5】
請求項1から4までのいずれか1項に記載のICチップを備えるICカード。
【請求項6】
所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換工程と、
前記コード変換工程により変換された前記第1の形式のコードを、所定の処理を実行する第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を第2の実行部により実行する実行工程を備え、
前記実行工程は、前記第2の形式のコードに基づいて所定の処理を実行する際に、データを格納する不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行するICチップの制御方法。
【請求項7】
コンピュータに、
所定のプログラミング言語で記述されたプログラムを逐次的に解釈し、第1の形式のコードに変換するコード変換工程と、
前記コード変換工程により変換された前記第1の形式のコードを、所定の処理を実行する第1の実行部により所定の処理が実行される環境に基づいて第2の形式のコードに変換し、変換後の前記第2の形式のコードに基づいて所定の処理を第2の実行部に実行させる実行工程を行わせ、
前記実行工程は、前記第2の形式のコードに基づいて所定の処理を実行する際に、データを格納する不揮発性メモリの同一のエリアに対して同一のデータを書き込むことを命ずる命令コードが複数個検索された場合、最後の命令コードのみを命令コードとして実行する制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−181049(P2011−181049A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−47558(P2010−47558)
【出願日】平成22年3月4日(2010.3.4)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】