(57)【要約】ホストコンピュータ上に１）〜４）の手段が設けられ、ターゲットコンピュータ上に生成したインタプリタとアプリケーション特化命令組込コードが搭載される。１）アプリケーション特化命令を定義する特化命令定義手段、２）アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段、３）特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段、４）汎用のプログラム言語で書かれたソースコードを、コンパイラ生成手段が生成したコンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段。
2014163168.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータ上に、
１）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段と、
２）定義された前記アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段と、
３）前記特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段と、
４）汎用のプログラム言語で書かれたソースコードを、前記コンパイラ生成手段が生成した前記コンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段と、
を備え、
５）ターゲットコンピュータ上に、
前記インタプリタ生成手段が生成した前記インタプリタと、
前記特化命令組込コード生成手段が生成した前記アプリケーション特化命令組込コードと、が搭載される、
ことを特徴とするアプリケーション特化仮想マシン生成システム。
【請求項２】
前記特化命令組込コード生成手段が、更新前プログラムのソースコードと更新後プログラムのソースコードをそれぞれ前記コンパイラでコンパイルし、更新前プログラムのアプリケーション特化命令組込コードと更新後プログラムのアプリケーション特化命令組込コードを解析しアプリケーション特化命令組込差分コードを生成し、
前記インタプリタが、前記アプリケーション特化命令組込差分コードと、更新前の前記アプリケーション特化命令組込コードをマージして解釈実行する、
ことを特徴とする請求項１に記載のアプリケーション特化仮想マシン生成システム。
【請求項３】
前記インタプリタが不揮発性素子を用いた不揮発性論理回路で構成され、
前記ターゲットコンピュータの回路基板の一部が前記不揮発性論理回路で構成される、
ことを特徴とする請求項１又は２に記載のアプリケーション特化仮想マシン生成システム。
【請求項４】
前記アプリケーション特化命令は、
複数ワードで構成されている命令コードを、短縮して、より短い長さの命令コードに置換するものである、ことを特徴とする請求項１〜３のいずれかに記載のアプリケーション特化仮想マシン生成システム。
【請求項５】
前記アプリケーション特化命令は、
複数の命令コードを、統合して、より短い長さの命令コードに置換するものである、ことを特徴とする請求項１〜３のいずれかに記載のアプリケーション特化仮想マシン生成システム。
【請求項６】
前記アプリケーション特化命令は、
処理データを、想定される値に応じたビット数に短縮し、
或いは、
処理データのアドレスを、想定されるアドレスに応じたビット数に短縮した位置識別子に変更するものであることを特徴とする請求項１〜３のいずれかに記載のアプリケーション特化仮想マシン生成システム。
【請求項７】
前記アプリケーション特化命令は、
命令コード数を限定することにより、命令コードビットを短縮するものである、ことを特徴とする請求項１〜３のいずれかに記載のアプリケーション特化仮想マシン生成システム。
【請求項８】
１）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段と、
２）定義された前記アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段と、
３）前記特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段と、
４）汎用のプログラム言語で書かれたソースコードを、前記コンパイラ生成手段が生成した前記コンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段と、
を備えたことを特徴とするアプリケーション特化仮想マシン生成装置。
【請求項９】
１）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義ステップと、
２）定義された前記アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成ステップと、
３）前記特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成ステップと、
４）汎用のプログラム言語で書かれたソースコードを、前記コンパイラ生成手段が生成した前記コンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成ステップと、
を備えたことを特徴とするアプリケーション特化仮想マシン生成方法。
【請求項１０】
ターゲットコンピュータに対して、前記インタプリタ生成ステップにより生成された前記インタプリタと、前記特化命令組込コード生成ステップにより生成された前記アプリケーション特化命令組込コードとを転送する転送ステップを、
更に備えたことを特徴とする請求項９に記載のアプリケーション特化仮想マシン生成方法。
【請求項１１】
前記インタプリタ生成ステップにより生成された前記インタプリタを、不揮発性素子を用いた不揮発性論理回路で構成し、ターゲットコンピュータの回路基板の一部を前記不揮発性論理回路で構成する回路構成ステップと、
ターゲットコンピュータに、
前記特化命令組込コード生成ステップにより生成された前記アプリケーション特化命令組込コードを転送する転送ステップを、
更に備えたことを特徴とする請求項９に記載のアプリケーション特化仮想マシン生成方法。
【請求項１２】
前記特化命令組込コード生成ステップにおいて、更新前プログラムのソースコードと更新後プログラムのソースコードをそれぞれ前記コンパイラでコンパイルし、更新前プログラムのアプリケーション特化命令組込コードと更新後プログラムのアプリケーション特化命令組込コードを解析しアプリケーション特化命令組込差分コードを生成し、
前記インタプリタが、前記アプリケーション特化命令組込差分コードと、更新前の前記アプリケーション特化命令組込コードをマージして解釈実行する、
ことを特徴とする請求項９〜１１のいずれかに記載のアプリケーション特化仮想マシン生成方法。
【請求項１３】
コンピュータを、
１）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段、
２）定義された前記アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段、
３）前記特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段、
４）汎用のプログラム言語で書かれたソースコードを、前記コンパイラ生成手段が生成した前記コンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段、
として機能させるアプリケーション特化仮想マシン生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのプログラム更新時の消費電力を少なくするためのアプリケーションに特化した仮想マシンの生成技術に関するものである。
【背景技術】
【０００２】
近年、センシング機能を有するセンサノードを無線通信によってネットワーク化するセンサネットワークが注目を集めている。センサネットワークには多数のセンサノードが分散配置しているため、センサノードのバッテリーの交換回数を削減あるいは交換不要（交換回数を０回）とし、システム全体の可用時間の長期化を図ることが、センサネットワークの実用化に必要である。一方で、センサノードのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に汎用性が要求され、アクセス可能なメモリ量が多くなると共に、センサノードに搭載されるプログラムサイズが大きくなっている。センサノードに搭載されるプログラムサイズが大きくなると、プログラムの更新時の電力の消費量が大きくなる問題がある。
また、センサノード以外にも、ターゲットコンピュータのＣＰＵに汎用性が要求され、アクセス可能なメモリ量も大きい場合、ターゲットコンピュータの命令コードのサイズは大きくなる傾向にある。通常、このようなターゲットコンピュータの命令コードは、ホストコンピュータで生成している。したがって、ターゲットコンピュータは、プログラムの更新時に受信するプログラムサイズが大きくなるため、消費電力が大きくなるという問題がある。
このようなシステムは、図８に示すように、例えば命令コードのプログラムを生成するホストコンピュータ１と、命令コードのプログラムを実行させるターゲットコンピュータ２とから構成される。
一般的なセンサネットワークでは、図８に示すように、ホストコンピュータ１上で、コンパイラ２０がターゲットコンピュータ２の処理プログラム（Ｃ言語などのプログラミング言語で記述されたソースプログラム）をコンパイルする。そして、コンパイラ２０はターゲットコンピュータ２の第２ＣＰＵ２２の命令コード（第２ＣＰＵ２２命令プログラム２３）のプログラムを生成する。コンパイラ２０によって生成された第２ＣＰＵ２２命令プログラム２３は、ホストコンピュータ１からターゲットコンピュータ２へ転送され、ターゲットコンピュータ２のメモリに格納される。そして、第２ＣＰＵ２２は、ターゲットコンピュータ２のメモリから第２ＣＰＵ２２命令プログラム２３を読み出して実行する。また第２ＣＰＵ２２命令プログラム２３に変更があれば、上記の処理を繰り返す。
ここで、プログラムをコンピュータで実行するとき、その実行方法には大きく分けて、コンパイラ方式とインタプリタ方式の２つの方法がある。以下で、コンパイラとインタプリタについて説明する。
コンパイラは、プログラミング言語で記述されたプログラムをＣＰＵが理解できる機械語の命令コードに変換する処理である。ＣＰＵは、機械語の命令コードに基づいてプログラムを実行する。コンパイル方式では、ＣＰＵがプログラムを実行する段階では、構文解析や機械語への翻訳は終わっているため、ＣＰＵによる最適な実行処理速度が得られる。しかしながら、コンパイラ方式の場合、実行する命令コードの変更が難しいという問題がある。
コンパイラに対して、インタプリタは、プログラミング言語で記述されたプログラムを機械語とは異なる中間命令コードに翻訳する処理である。そして、インタプリタは、中間命令コードに基づいてプログラムを解釈実行する。そのため、インタプリタ方式では、命令コードの追加がコンパイル方式に比べて容易である。
また、インタプリタを変更することで、命令コードの機能を変更することが容易にできる。しかしながら、インタプリタ方式の場合、中間命令コードをインタプリタがプログラムで実行するため、高速化が困難であった。最近は、ＣＰＵ自体の処理速度が非常に高速になり、高速処理が必要な特別なアプリケーションでない限り、インタプリタ方式でも要求処理を満足できるようになってきている。
なお、本明細書および図面におけるインタプリタは、仮想マシンと同義で用いている。つまり、インタプリタは、特定のプログラミング言語のソースプログラムを中間命令コードに変換すると共に、中間命令コードプログラムを解釈実行するソフトウェアである。
また、下記に示すようなセンサノード等のバッテリー駆動で動作するターゲットコンピュータの場合に、汎用性を維持しつつ、プログラムサイズを小さくすることで、高速実行する技術が知られている。
例えば、マルチメディアアプリケーションにおいて、マルチメディアで利用されるマルチメディア拡張命令や飽和命令をＣＰＵ命令に追加することにより、プログラムサイズを小さくすることができる。
また、アプリケーション固有の命令コードをＣＰＵにハードウェアで実現したもの、すなわち、アプリケーション固有命令プロセッサ（ＡＳＩＰ  ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｐｒｏｃｅｓｓｏｒ）が知られている（例えば、非特許文献１を参照。）。
また、ターゲットコンピュータのＣＰＵから独立した仮想マシン命令形式（バイトコード）でＪａｖａ（登録商標）等のプログラムを生成し、ターゲットコンピュータのＣＰＵ上では仮想マシン命令インタプリタにより、当該プログラムを実行する技術知られている（例えば、非特許文献２を参照。）。
この技術の場合、バイトコードはスタックで実行されるため、オペランドを指定しなくてすむため命令コードサイズは小さくなる。その結果としてプログラムサイズが小さくなるという効果がある。
また、センサノードに専用のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上に、プログラムのダウンロードサイズを小さくするために、仮想マシンを提案する技術が知られている（例えば、非特許文献３を参照。）。
非特許文献３に開示された技術では、プログラムのダウンロードサイズを小さくするために、仮想マシン命令コードは固定されている。
また、仮想マシンコードのバイト命令コードをマクロ命令コードで置換し、仮想マシンが当該マクロ命令コードをインタプリトするときに、マクロ命令コードの実装アドレスを調べて、その命令を実行する技術が知れている（特許文献１を参照。）。
また、近年、製造後の論理回路において仕様の変更を可能とする不揮発性素子を用いた不揮発性論理回路が知られている（例えば、特許文献２〜７を参照。）。ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのプログラム可能な半導体集積回路では、論理回路や演算回路の動作や論理回路や演算回路同士の接続をメモリに記憶することで論理動作や配線の接続の変更を可能とする。しかしながら、メモリ素子が半導体基板上のトランジスタと同じ層に形成されているため、非常に大きな面積を占有する問題がある。このことから、プログラム可能な集積回路はチップ面積が大きくなり、製造コストが上昇するという問題がある。また、ＦＰＧＡでは、論理回路や演算回路同士の接続を変更する配線スイッチの面積が大きくなるために、チップ面積に占める論理回路や演算回路の割合が低くなってしまうも問題がある。
上記の不揮発性素子を用いた不揮発性論理回路では、構成情報を記憶するためのメモリ素子またはメモリ回路と、配線同士の接続を行うためのパストランジスタの双方を配線構造で置き換えることが可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００３−５１０６８１号公報
【特許文献２】特開２００９−１２４１７５号公報
【特許文献３】特開２００９−１１７８６６号公報
【特許文献４】特許第４９９２８５９号
【特許文献５】特許第４９８５５８３号
【特許文献６】特許第４９９２８５８号
【特許文献７】特許第４３５６５４２号
【非特許文献】
【０００４】
【非特許文献１】（ｈｔｔｐ：／／ｔｅｃｈｏｎ．ｎｉｋｋｅｉｂｐ．ｃｏ．ｊｐ／ａｒｔｉｃｌｅ／ＷＯＲＤ／２００９０３１８／１６７３９５／）
【非特許文献２】ティム・リンドホルム，フランク・イェリン、Ｊａｖａ仮想マシン仕様、ピアソンエデュケーション
【非特許文献３】Ｐ．Ｌｅｖｉｓ  ａｎｄ  Ｄ．Ｃｕｌｌｅｒ．Ｍａｔ´ｅ：Ａ  Ｔｉｎｙ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  ｆｏｒ  Ｓｅｎｓｏｒ  Ｎｅｔｗｏｒｋｓ．Ｉｎ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｓｕｐｐｏｒｔ  ｆｏｒ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌａｎｇｕａｇｅｓ  ａｎｄ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ，Ｏｃｔ．２００２．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記状況に鑑みて、本発明は、センサノードなどのターゲットコンピュータへ転送・実行するプログラムサイズを小さくすることで、ターゲットコンピュータのプログラム更新時と実行時に必要となる電力消費を低減することを目的とする。
また、本発明は、ターゲットコンピュータでのプログラムを一部ハードウェア実行することにより、プログラム更新時と実行時に必要となる電力消費を低減することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成すべく、本発明のアプリケーション特化仮想マシン生成システムは、ホストコンピュータ上に下記１）〜４）の手段が設けられ、ターゲットコンピュータ上に下記３）のインタプリタ生成手段が生成したインタプリタと、下記４）の特化命令組込コード生成手段が生成したアプリケーション特化命令組込コードが搭載される構成とされる。
１）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段。
２）定義されたアプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段。
３）特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段。
４）汎用のプログラム言語で書かれたソースコードを、コンパイラ生成手段が生成したコンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段。
上記の構成のシステムでは、ターゲットコンピュータへ転送・実行するプログラムサイズを小さくでき、ターゲットコンピュータのプログラム更新時と実行時に必要となる電力を低減することができる。
ここで、アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）とは、高級プログラム言語で記述されたアプリケーションのソースコードの特性に応じてコンパクト化した仮想マシンの命令コードを意味する。
アプリケーションのソースコードの特性とは、例えば、繰り返し処理（ループ処理）が頻出すること、条件分岐処理が頻出すること、ストア命令が頻出すること、ストアするデータの個数が予測できること、ストアする定数・データのケタ数が予測できること、一連の処理が頻出すること等を示す特性ある。
特化命令定義手段は、アプリケーションのソースコードの特性を解析し、それらの特性をソースコードには出現しない特化した文字列・数字列・記号・符号に置き換える置換テーブルを作成する。具体的には、ホストコンピュータの画面上で、繰り返し処理（ループ処理）を置き換える特化命令コード、条件分岐処理を置き換える特化命令コード、ストア・フォワードなどの一連の処理を置き換える特化命令コードを定義する。
また、汎用の仮想マシン命令は、ホストコンピュータが目的の処理プログラムをコンパイルして、ターゲットコンピュータのＣＰＵの命令コードのプログラムを生成するものと同じ命令である。
上記２）のコンパイラ生成手段は、上記１）で定義されたアプリケーション特化命令と、汎用の仮想マシン命令とを組合せた特化命令組込コードを生成できるコンパイラを生成する。このコンパイラは、アプリケーション特化命令と、汎用の仮想マシン命令とを組合せた特化命令組込コードを生成できる点で、従来のコンパイラと異なる。
また、上記３）のインタプリタ生成手段は、特化命令組込コードを解釈実行できるインタプリタを生成する。ホストコンピュータ上で生成されたインタプリタは、ターゲットコンピュータに転送され、ターゲットコンピュータに搭載される。
また、上記４）の特化命令組込コード生成手段は、汎用のプログラム言語（すなわち、高級プログラム言語）で記述されたプログラムのソースコードを、コンパイラ生成手段が生成したコンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する。
即ち、コンパイラ生成手段が生成したコンパイラは、目的とするプロセスのソースコードを解析する。また、このコンパイラは、ソースコードに含まれるアプリケーション特化命令コードと、汎用の仮想マシン特化命令コードとを判別しながらコンパイルする。したがって、コンパイラは、アプリケーション特化命令コードと、仮想マシン命令コードとを組み合わせた特化命令組み込みコードを生成することができる。
また、本発明のアプリケーション特化仮想マシン生成システムにおいて、特化命令組込コード生成手段は、更新前プログラムのソースコードと更新後プログラムのソースコードをそれぞれ前記コンパイラでコンパイルし、更新前プログラムのアプリケーション特化命令組込コードと更新後プログラムのアプリケーション特化命令組込コードを解析して、アプリケーション特化命令組込差分コードを生成し、また、インタプリタは、アプリケーション特化命令組込差分コードと、更新前のアプリケーション特化命令組込コードをマージして解釈実行することがより好ましい。
差分コードを生成し、それをターゲットコンピュータに転送することにより、ターゲットコンピュータへ転送・実行するプログラムサイズを更に小さくでき、転送に伴う消費電力を更に低減することができる。
また、本発明のアプリケーション特化仮想マシン生成システムにおいて、インタプリタが不揮発性素子を用いた不揮発性論理回路で構成され、ターゲットコンピュータの回路基板の一部が不揮発性論理回路で構成されることがより好ましい。
上記構成によれば、ターゲットコンピュータのプログラムの一部を不揮発性論
2014163168.tif 000003
を低減することができる。また、電源のＯＮ，ＯＦＦ操作が頻繁に行われるセンサノードに本発明を適用した場合、不揮発性であるために、復帰時に毎回発生するインタプリタのコンフィギュレーションデータの転送が不要になり、電力が低減でき、かつ、起動時の遅延を回避することができる。
また、不揮発性論理回路には、拡張命令の追加と、追加命令に対するハードコーディング（ハードウェア化）が可能であり、本発明におけるインタプリタを実現することができる。
また、本発明のアプリケーション特化仮想マシン生成システムにおいて、アプリケーション特化命令とは、具体的には、複数ワードで構成されている命令コードを短縮して、より短い長さの命令コードに置換するものである。
また、他のアプリケーション特化命令は、複数の命令コードを、統合して、より短い長さの命令コードに置換するものである。
また、他のアプリケーション特化命令は、処理データを想定される値に応じたビット数に短縮し、或いは、処理データのアドレスを想定されるアドレスに応じたビット数に短縮した位置識別子に変更するものである。例えば、想定されるアドレスに応じたビット数に短縮するというのは、想定されるアドレスが０〜１５であれば４ビットの位置識別子、０〜２５５であれば８ビットの位置識別子に変更するということである。
また、他のアプリケーション特化命令は、命令コード数を限定することにより、命令コードビットを短縮するものである。例えば、命令コード数が３２個であれば命令コードビットが５ビットで表現でき、また、更に命令コードを限定して４つの命令コードに限定、すなわち、命令コード数を４個にすれば、命令コードビットが２ビットで表現できる。
次に、本発明のアプリケーション特化仮想マシン生成装置は、下記ａ）〜ｄ）を備える。
ａ）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段。
ｂ）定義されたアプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段。
ｃ）特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段。
ｄ）汎用のプログラム言語で書かれたソースコードを、コンパイラ生成手段が生成したコンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段。
本発明のアプリケーション特化仮想マシン生成装置によれば、ターゲットコンピュータへ転送・実行するプログラムサイズを小さくでき、ターゲットコンピュータのプログラム更新時と実行時に必要となる電力消費を低減することができる。
なお、上記ａ）〜ｄ）の説明は、上述の１）〜４）と同じであり説明は割愛する。
次に、本発明のアプリケーション特化仮想マシン生成方法は、下記Ａ）〜Ｄ）を備える。
Ａ）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義ステップ。
Ｂ）定義されたアプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成ステップ。
Ｃ）特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成ステップ。
Ｄ）汎用のプログラム言語で書かれたソースコードを、コンパイラ生成手段が生成したコンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成ステップ。
本発明のアプリケーション特化仮想マシン生成方法によれば、ターゲットコンピュータへ転送・実行するプログラムサイズを小さくできるため、ターゲットコンピュータのプログラム更新時と実行時に必要となる電力消費を低減することができる。
なお、上記Ａ）〜Ｄ）の説明は、上述の１）〜４）と同じであり説明は割愛する。
本発明のアプリケーション特化仮想マシン生成方法において、ターゲットコンピュータに対して、インタプリタ生成ステップにより生成されたインタプリタと、特化命令組込コード生成ステップにより生成されたアプリケーション特化命令組込コードとを転送する転送ステップを更に備えたことがより好ましい。
特化命令組込コード生成ステップにより生成されたアプリケーション特化命令組込コードは、プログラムサイズを最適化していることから、ターゲットコンピュータのプログラム更新時のデータ転送による電力消費を低減することができる。
また、本発明のアプリケーション特化仮想マシン生成方法において、インタプリタ生成ステップにより生成されたインタプリタを、不揮発性素子を用いた不揮発性論理回路で構成し、ターゲットコンピュータの回路基板の一部を不揮発性論理回路で構成する回路構成ステップと、ターゲットコンピュータに、特化命令組込コード生成ステップにより生成されたアプリケーション特化命令組込コードを転送する転送ステップを更に備えたことがより好ましい。
これにより、ターゲットコンピュータでのプログラムを一部ハードウェア実行することになり、プログラム更新時と実行時に必要となる電力消費を低減できる。
また、本発明のアプリケーション特化仮想マシン生成方法における特化命令組込コード生成ステップにおいて、更新前プログラムのソースコードと更新後プログラムのソースコードをそれぞれ前記コンパイラでコンパイルし、更新前プログラムのアプリケーション特化命令組込コードと更新後プログラムのアプリケーション特化命令組込コードを解析して、アプリケーション特化命令組込差分コードを生成し、インタプリタが、アプリケーション特化命令組込差分コードと、更新前の前記アプリケーション特化命令組込コードをマージして解釈実行することがより好ましい。
差分コードを生成し、それをターゲットコンピュータに転送することにより、ターゲットコンピュータへ転送・実行するプログラムサイズを更に小さくでき、転送に伴う電力消費を更に低減することができる。
本発明のアプリケーション特化仮想マシン生成プログラムは、コンピュータを下記ｉ）〜ｉｖ）として機能させる。
ｉ）アプリケーション毎に特化した仮想マシン命令（アプリケーション特化命令）を定義する特化命令定義手段。
ｉｉ）定義された前記アプリケーション特化命令と汎用の仮想マシン命令とを組合せた特化命令組込コードを生成し得るコンパイラを生成するコンパイラ生成手段。
ｉｉｉ）前記特化命令組込コードを解釈実行し得るインタプリタを生成するインタプリタ生成手段。
ｉｖ）汎用のプログラム言語で書かれたソースコードを、前記コンパイラ生成手段が生成した前記コンパイラでコンパイルすることにより、アプリケーション特化命令組込コードを生成する特化命令組込コード生成手段。
本発明のアプリケーション特化仮想マシン生成プログラムによれば、ターゲットコンピュータへ転送・実行するプログラムサイズを小さくでき、ターゲットコンピュータのプログラム更新時と実行時に必要となる電力消費を低減することができる。
なお、上記ｉ）〜ｉｖ）の説明は、上述の１）〜４）と同じであり説明は割愛する。
【発明の効果】
【０００７】
本発明によれば、プログラムの命令コードをアプリケーションに特化したものにすることにより、プログラムサイズを小さくすることができ、その結果、プログラム更新時に送信するプログラムサイズが小さくなるといった効果を有する。
また、本発明によれば、ターゲットコンピュータでのプログラムを一部ハードウェア実行することによりプログラム実行時の消費電力も小さくすることができるといった効果を有する。
【図面の簡単な説明】
【０００８】
図１は、アプリケーション特化仮想マシン生成システムを示すブロック図である。
図２Ａは、従来のＣＰＵによる定数ストア命令を示す概念図である。
図２Ｂは、アプリケーション特化命令を示す概念図である。
図３Ａは、センサノード間のストアとフォワードの動作を示す模式図である。
図３Ｂは、従来のＣＰＵによるストア命令とフォワード命令を示す概念図である。
図３Ｃは、アプリケーション特化命令を示す概念図である。
図４は、関数呼び出し命令についての特化命令の説明図である。
図５は、他の形態のアプリケーション特化仮想マシン生成システムを示すブロック図である。
図６は、ホストコンピュータの処理の流れを示すフローチャートである。
図７は、ターゲットコンピュータの処理の流れを示すフローチャートである。
図８は、従来システムを示すブロック図である。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
本発明のアプリケーション特化仮想マシン生成システムについて、図１を参照して説明する。本発明のアプリケーション特化仮想マシン生成システムは、ホストコンピュータ１とターゲットコンピュータ２から構成され、それらが無線通信等の通信ネットワークを含むデータ転送手段で接続可能なシステムである。接続可能なシステムとは、常時接続するもの、一時的に接続するものの双方を含む。
まず、図１に示すように、特化命令定義手段１２は、アプリケーション毎に特化した命令（以下、「ＡＰ特化命令」と称する。）を定義する。コンパイラ生成手段１４は、ＡＰ特化命令と、通常の仮想マシン命令とのプログラムを生成するコンパイラ１６（以下、「ＡＰ特化コンパイラ１６」と称する。）を生成する。インタプリタ生成手段１５は、ＡＰ特化命令と、通常の仮想マシン命令とのプログラムを解釈実行するインタプリタ１７（以下、「ＡＰ特化命令インタプリタ１７」と称する。）を生成する。コンパイラ生成手段１４とインタプリタ生成手段１５を、アプリケーションに特化した仮想マシンジェネレータ１３と呼ぶ。
不揮発性回路化手段１８は、ＡＰ特化命令インタプリタ１７を不揮発性論理回路によるＡＰ特化インタプリタ２５に変換する。
特化命令組込コード生成手段１９は、ＡＰ特化コンパイラ１６を有している。ＡＰ特化コンパイラ１６は、ホストコンピュータ１上で動作し、Ｃ言語などのプログラミング言語で書かれた処理プログラム３をＡＰ特化命令によるプログラム２４にコンパイルする。ＡＰ特化命令によるプログラム２４はターゲットコンピュータ２に転送される。ターゲットコンピュータ２では不揮発性回路によるＡＰ特化命令インタプリタ２５がＡＰ特化命令によるプログラム２４を解釈実行する。この際、プログラムの実行命令コードをアプリケーションに特化することにより、プログラムサイズを小さくすることができるため、プログラムの送信に関わる電力を小さくすることができる。また、ＡＰ特化命令によるプログラム２４は、不揮発性回路によるＡＰ特化命令インタプリタ２５により実行されるため、消費電力が小さくなる。
【実施例１】
【００１０】
図２Ａおよび図２Ｂを参照して、定数ストア命令におけるプログラムの変数値を変更する方法について説明する。
センサノードでは、データ収集のパラメータの調整のために、センサノード中のプログラムの変数値を変更する場合が多いと予想される。
プログラムの変数値を変更する場合、図２Ａに示すように、一般のＣＰＵでは定数ストア命令が用意されていた。しかしながら、通常はＣＰＵが汎用的であるために、２つの３２ビット（１ワード）が必要となる。
図２Ｂを参照すると、アプリケーション特化仮想マシン生成システムでは、プラグラムの変数値の変更は、定数値を１６ビットで表される値で、ストアする場所を８ビットの識別子で指定可能であるならば１つの３２ビット（１ワード）で実現可能である。したがって、アプリケーション特化仮想マシン生成システムでは、複数の２ワードで構成されている定数ストア命令コードを、短縮して１ワードの定数ストア命令コードに置換する。
【実施例２】
【００１１】
図３Ａ、図３Ｂおよび図３Ｃを参照して、センサネットワークにおけるセンサノードがセンサコマンドを転送する動作について説明する。
図３Ａを参照すると、センサノードＢは、隣接したセンサノードＡから受信したセンサコマンドをストアすると共に、そのデータを次の隣接したセンサノードＣに送信する。センサノードＣは、更に隣接したセンサノードがある場合には、センサノードＢと同様の処理を行う。
この動作を汎用命令コードでプログラムするためには、図３Ｂに示すように、ストア命令コードと、フォワード命令コードとが別々に必要である。実際には、数十ステップの命令が必要になる。
これに対してアプリケーション特化仮想マシン生成システムでは、図３Ｃに示すようなストア・フォワードの１つの命令で動作を実現できる。この場合、センサノードのコマンドデータのストアアドレスは８ビットの識別子で指定可能であり、隣接するノードのアドレスは無線ドライバが保有していると仮定している。ストア・フォワードの１つの命令で実現できることから、ＡＰ特化命令によるプログラム２４のサイズは小さくなるため、データ送信に要する電力を低減できる。
【実施例３】
【００１２】
次に、図４を参照して、関数呼び出し命令が頻出するプログラムに関するアプリケーション特化命令について説明する。例えば、ｃｈａｎｇｅＣａｌＶａｌ（  ）という関数を頻繁に用いるプログラムを想定する。そして、このｃｈａｎｇｅＣａｌＶａｌ（  ）という関数は２つの実引数を有し、その実引数の１つは変数であり、もう１つは閾値の定数であるとする。またプログラムの運用時に変数がとり得る値が１００以下の整数であることも予想できるとする。
このような場合、アプリケーション特化命令は、ｃｈａｎｇｅＣａｌＶａｌ（ｘ，ｖ）に対してアプリケーション特化命令コードを定義する。具体的には、ｃｈａｎｇｅＣａｌＶａｌ（ｘ，ｖ）の記述があれば（ｘ，ｖは引数）、それをｃｏｄｅｏｆ（ｃｈａｎｇｅＣａｌＶａｌ），ｃｏｄｅｏｆ（ｘ），ｃｏｄｅｏｆ（ｖ）の３行の連続する命令と認識する。そして、図４で示すような３２ビットのコード内における上位１６ビットに実行関数ｃｈａｎｇｅＣａｌＶａｌに対応するコードを配置し、下位１６ビットに実行関数の２つの実引数（ｘ，ｖ）に対応する値を配置する。ここで、ｃｏｄｅｏｆ（Ａ）はＡをコード化したものを表している。
下記定義は、：：＝の左辺にあるｃｈａｎｇｅＣａｌＶａｌ（ｘ，ｖ）を、：：＝の右辺のアプリケーション特化命令コードに対応させていることを示している。
ｃｈａｎｇｅＣａｌＶａｌ（ｘ，ｖ）：：＝
ｃｏｄｅｏｆ（ｃｈａｎｇｅＣａｌＶａｌ）
ｃｏｄｅｏｆ（ｘ）
ｃｏｄｅｏｆ（ｖ）
これにより、関数のポインター情報（アドレス情報）、実引数ｘの３２ビット情報および実引数ｖの３２ビット情報を合わせた少なくとも９６ビットを要していた命令コードを３２ビットに圧縮することが可能になる。アプリケーション（ＡＰ）特化コンパイラ１６は、プログラムのソースコードに、ｃｈａｎｇｅＣａｌＶａｌ（ｘ，ｖ）があれば、３２ビットに圧縮された特化命令コードに変換する。
【実施例４】
【００１３】
次に、頻出する実行文パターンを有するプログラムに関するアプリケーション特化命令について説明する。例えば、頻出する実行文パターンとして条件分岐命令が頻出するプログラムを想定する。
このような場合、下記に示すように条件分岐の条件パラメータを、分岐後の呼び出し関数と連続する命令と認識し、これらを圧縮した特化命令コードに変換する。
下記定義は、：：＝の左辺にあるｉｆ文の実行文パターンを、：：＝の右辺のアプリケーション特化命令コードに対応させていることを示している。
ｉｆ（ｘ＞０）｛
ｍｅｔｈｏｄ１（）；
｝ｅｌｓｅ｛
ｍｅｔｈｏｄ２（）；
｝
：：＝  ｃｏｄｅｏｆ（ｃａｌｌＭｅｔｈｏｄ）
ｃｏｄｅｏｆ（０）
ｃｏｄｅｏｆ（ｍｅｔｈｏｄ１）
ｃｏｄｅｏｆ（ｍｅｔｈｏｄ２）
【実施例５】
【００１４】
図５は、実施例５のアプリケーション特化仮想マシン生成システムの機能を示すブロック図である。図５を参照すると、上述したシステムと異なり、ターゲットコンピュータ２となるセンサノードへ転送するプログラムの量を減らすために、更新前プログラム３ａのソースコードと更新後プログラム３ｂのソースコードとをそれぞれＡＰ特化コンパイラ１６でコンパイルする。ＡＰ特化コンパイラ１６は、更新前プログラム３ａのアプリケーション特化命令組込コードと、更新後プログラム３ｂのアプリケーション特化命令組込コードとを解析しアプリケーション特化命令組込差分コードである差分プログラム２６を生成する。
ターゲットコンピュータ２であるセンサノードでは、ＡＰ特化命令による更新前プログラム２７と差分プログラム２６をマージしたプログラムを、不揮発性回路によるＡＰ特化命令インタプリタ２５が解釈実行する。
【実施例６】
【００１５】
図６はホストコンピュータ１が実行する処理のフローチャートであり、図７はターゲットコンピュータ２が実行する処理のフローチャートである。
図６を参照してホストコンピュータ１の処理フローを説明する。
まず、ホストコンピュータ１は、アプリケーション毎に特化した仮想マシン命令（ＡＰ特化命令）を定義する（ステップＳ１１）。
次いで、アプリケーション（ＡＰ）特化命令と、汎用の仮想マシン命令とを組合せた特化命令組込コードを生成できるＡＰ特化コンパイラを生成する（ステップＳ１２）。
次に、特化命令組込コードを解釈実行できるＡＰ特化命令インタプリタを生成する（ステップＳ１３）。
そして、プログラムのソースコードを、ステップＳ１２で生成したＡＰ特化コンパイラでコンパイルし、アプリケーション（ＡＰ）特化命令組込コードを生成する（ステップＳ１４）。
図７を参照してターゲットコンピュータ２の処理フローを説明する。
まず、ターゲットコンピュータ１は、ＡＰ特化命令インタプリタをホストコンピュータ１からダウンロード（ホストコンピュータからターゲットコンピュータへ転送）する（ステップＳ２１）。
次いで、ＡＰ特化命令組込コードをホストコンピュータ１からダウンロードする（ステップＳ２２）。
そして、ＡＰ特化命令インタプリタがＡＰ特化命令組込コードを解釈実行する（ステップＳ２３）。
なお、図７において実施例１のように、ＡＰ特化命令インタプリタが不揮発性素子を用いた不揮発性論理回路で構成され、かつ、ターゲットコンピュータの回路基板の一部が不揮発性論理回路で構成される場合、上記ステップＳ２１を行わずに、上記ステップＳ２２とＳ２３を行うことになる。
【産業上の利用可能性】
【００１６】
本発明は、バッテリー駆動動作のセンサノードやアクチュエータノードに有用である。また、バッテリーのみで数十年に渡って利用可能なコンピュータシステムに適用可能である。例えば、建築物、トンネル、農場、道路など広範囲でデータ収集が必要な分野で利用可能である。
【符号の説明】
【００１７】
１    ホストコンピュータ
２    ターゲットコンピュータ
３    プログラム
３ａ  更新前プログラム
３ｂ  更新後プログラム
１２  特化命令定義手段
１３  仮想マシンジェネレータ
１４  コンパイラ生成手段
１５  インタプリタ生成手段
１６  ＡＰ特化コンパイラ
１７  ＡＰ特化インタプリタ
１８  不揮発性回路化手段
１９  特化命令組込コード生成手段
２０  コンパイラ
この出願は、２０１３年３月３０日に出願された日本出願特願第２０１３−０７５５０４号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【図１】
2014163168.tif 000004
【図２Ａ】
2014163168.tif 000005
【図２Ｂ】
2014163168.tif 000006
【図３Ａ】
2014163168.tif 000007
【図３Ｂ】
2014163168.tif 000008
【図３Ｃ】
2014163168.tif 000009
【図４】
2014163168.tif 000010
【図５】
2014163168.tif 000011
【図６】
2014163168.tif 000012
【図７】
2014163168.tif 000013
【図８】
2014163168.tif 000014
【国際調査報告】
2014163168.tif 000015
2014163168.tif 000016
2014163168.tif 000017
2014163168.tif 000018
2014163168.tif 000019