(57)【要約】【課題】  ソフトウェアの変更のみでは対応できないような大きな変更にも対処することのできる組み込みシステムを実現する。【解決手段】  組み込み装置１００のプロセッサ１０１は、生成手段１によって生成されたソフトウェアコードに基づくソフトウェア処理を実行する。組み込み装置１００の可変論理素子１０３は、生成手段１によって生成されたハードウェアコードに基づくハードウェア処理を実行する。ソフトウェア処理は、最適化判定手段１０により解析され、その解析結果に基づいてソフトウェア処理とハードウェア処理の実行割合を示す情報が生成手段１に与えられる。生成手段１はこれに基づいて、ソフトウェアコードとハードウェアコードを生成する。【選択図】        図１
2006011840.tif 000002
【特許請求の範囲】
【請求項１】
組み込み装置を構成するソフトウェアとハードウェアを区別なく記述したシステム記述からソフトウェアコードとハードウェアコードとを生成する生成手段と、
前記組み込み装置に設けられ、前記生成手段で生成されたソフトウェアコードに基づく処理を実行するソフトウェア実行手段と、
前記組み込み装置に設けられ、前記生成手段で生成されたハードウェアコードに基づいたハードウェアにより処理を実行するハードウェア実行手段と、
前記ソフトウェア実行手段の実行状況を解析し、当該解析結果に基づいて、ハードウェア実行手段の実行割合を決定する最適化判定手段とを備え、
前記生成手段は、前記最適化判定手段の決定結果に基づいて、ソフトウェアコードとハードウェアコードを生成することを特徴とする組み込みシステム。
【請求項２】
生成手段と最適化判定手段は、組み込み装置に一体に組み込まれていることを特徴とする請求項１記載の組み込みシステム。
【請求項３】
システム記述は、当該システム記述よりも抽象化度の高いモデル記述言語から生成することを特徴とする請求項１または請求項２記載の組み込みシステム。
【請求項４】
最適化判定手段は、ソフトウェア実行手段での処理時間の長い処理の順にハードウェア実行手段が実行する処理となるよう実行割合を決定することを特徴とする請求項１から請求項３のうちのいずれか１項記載の組み込みシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、外部環境によりソフトウェアとハードウェアの両方の内部構造を変化させることにより、動作を変化させる組み込みシステムに関するものである。
【背景技術】
【０００２】
従来、組み込みシステムにおいて、その動作を変化させるためには、プログラム、即ちソフトウェアのみをバーションアップさせることにより実現していた（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２００２−３３３９９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の組み込みシステムにおける動作の変更はソフトウェアの変更のみで実施しているため、ソフトウェアの変更のみでは対応できない大きな変更はできないという問題があった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、ソフトウェアの変更のみでは対応できないような大きな変更にも対処することのできる組み込みシステムを実現することを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る組み込みシステムは、組み込み装置を構成するソフトウェアとハードウェアを区別なく記述したシステム記述からソフトウェアコードとハードウェアコードとを生成する生成手段と、組み込み装置に設けられ、生成手段で生成されたソフトウェアコードに基づく処理を実行するソフトウェア実行手段と、組み込み装置に設けられ、生成手段で生成されたハードウェアコードに基づいたハードウェアにより処理を実行するハードウェア実行手段と、ソフトウェア実行手段の実行状況を解析し、この解析結果に基づいて、ハードウェア実行手段の実行割合を決定する最適化判定手段とを備え、生成手段は、最適化判定手段の決定結果に基づいて、ソフトウェアコードとハードウェアコードを生成するようにしたものである。
【発明の効果】
【０００７】
この発明の組み込みシステムは、ソフトウェアとハードウェアの両者で処理を実行している組み込み装置のソフトウェア実行状況を解析し、この解析結果に基づいてソフトウェア処理とハードウェア処理との実行割合を制御するようにしたので、組み込み装置の内部構造を変化させ、より実行速度が速く、かつ、消費電力が少ない組み込み装置に変化していくことができるという効果がある。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、この発明の実施の形態１による組み込みシステムを示す構成図である。
図示の組み込みシステムは、対象とする組み込み装置のハードウェアとソフトウェアの内部構造を変化させるようにした環境適応型組み込みシステムを示している。
【０００９】
図において、組み込みシステムは、生成手段１、コンパイル手段２、リンク手段３、メモリ書込手段４、高位合成手段５、論理合成手段６、配置・配線手段７、構成用メモリ書込手段８、実行状況記録手段９、最適化判定手段１０からなる。また、組み込み装置１００は、プロセッサ１０１、メモリ１０２、可変論理素子１０３、可変論理素子構成用メモリ１０４、バス１０５を備えている。
【００１０】
生成手段１は、システム全体をソフトウェアとハードウェアの区別なく記述したシステム記述１１から、最適化判定手段１０の判定結果に基づいて、ソフトウェアコード、ハードウェアのコードおよびソフトウェアとハードウェアのインタフェースを生成する機能を有している。図中、ソフトウェアコード（Ｓ／Ｗコード）１２、ハードウェアコード（Ｈ／Ｗコード）１３は、生成手段１によって生成されたソフトウェアコードとハードウェアコードを示している。
【００１１】
システム記述１１として、ソフトウェアとハードウェアの区別なくシステム全体を記述できる言語としては、例えばSpecC などのシステム記述言語がある。また、これを用いた記述から、生成手段１は、ソフトウェアの生成物であるソフトウェアコード１２としてC やC++ 言語を、ハードウェアの生成物であるハードウェアコード１３としてVerilogHDLやVHDLなどを生成する。
【００１２】
コンパイル手段２は、ソフトウェアコード１２をコンパイルする機能部であり、リンク手段３は、関数とそのロケートアドレスとの対応関係の情報を生成する機能部である。オブジェクトコード１４は、コンパイル手段２によって生成されるオブジェクトコードである。また、メモリ書込手段４は、オブジェクトコード１４を、組み込み装置１００におけるメモリ１０２に書き込むための機能部である。
【００１３】
高位合成手段５は、生成手段１で生成されたハードウェアコード１３のように、対象となる処理のアルゴリズムを直接的に記述した動作記述から、レジスタやクロックによる同期などハードウェアに特有の概念を意識したＲＴＬ（Register Transfer Level）記述を自動的に合成する高位合成処理を行うための機能部である。論理合成手段６は、高位合成手段５が出力するＲＴＬ記述から、対象となる可変ハードウェアの構造に適した論理回路を生成する機能部である。この論理合成手段６は、例えば、ハードウェアを記述するＨＤＬ（Hardware Description Language)などのコードを論理回路に変換する機能を有している。配置・配線手段７は、ＨＤＬ等のコードから変換された論理回路をＬＳＩに実装するためのコンフィグレーションデータ１５を出力する機能部である。
【００１４】
コンフィグレーションデータ１５は、例えばネットリストであり、ソフトウェアにおけるオブジェクトコード１４にあたる回路を直接表すデータに相当するものである。構成用メモリ書込手段８は、コンフィグレーションデータ１５を、組み込み装置１００における可変論理素子構成用メモリ１０４に書き込むための機能部である。
【００１５】
組み込み装置１００は、例えば、レーダやロボットあるいは工作機械といったソフトウェア処理とハードウェア処理とが強調して行われる装置である。プロセッサ１０１は、メモリ１０２上に書き込まれたソフトウェアコードを実行し、種々の処理を行うものである。メモリ１０２は、ＲＡＭ等からなるメモリである。可変論理素子１０３は、例えば、ＦＰＧＡといった可変論理のハードウェア回路である。可変論理素子構成用メモリ１０４は、構成用メモリ書込手段８によって書き込まれたコンフィグレーションデータ１５を、可変論理素子１０３に与えるためのメモリである。バス１０５は、プロセッサ１０１、メモリ１０２および可変論理素子１０３を相互に接続するための装置内バスである。
【００１６】
また、プロセッサ１０１とメモリ１０２が、組み込み装置１００におけるソフトウェア実行手段に相当し、可変論理素子１０３と可変論理素子構成用メモリ１０４がハードウェア実行手段に相当している。
【００１７】
実行状況記録手段９は、プロセッサ１０１の実行状況を記録する手段であり、具体的には次のように構成されている。
図２は、組み込み装置１００と実行状況記録手段９との接続状態を示す説明図である。
図３は、実行状況記録手段９の内部構成を示すブロック図である。
【００１８】
図２に示すように、実行状況記録手段９は、組み込み装置１００におけるプロセッサ１０１のアドレス線１６に接続され、このアドレス線１６のアドレスに基づいて、ソフトウェアの実行状況を記録するよう構成されている。
【００１９】
即ち、プロセッサ１０１の実行中にジャンプ命令や関数呼び出し、サブルーチン呼び出しなど、通常は順番に実行されるプログラムの流れに変化があった時に、プロセッサ１０１から外部に割り込みを発行することにより知らせるものであり、その時プロセッサ１０１のアドレス線には、実行の流れが変化した後のアドレスが示される。従って、このアドレスの記録を行うことによって、ソフトウェアの実行状況を記録することができるものである。
【００２０】
実行状況記録手段９は、図３に示すように、プロセッサ９１、タイマ９２、実行記録用メモリ９３を備えている。プロセッサ９１は、組み込み装置１００のプロセッサ１０１とは別に設けられた実行状況記録手段９のプロセッサであり、アドレス線１６を流れるアドレスに基づいてプロセッサ１０１の実行状況を演算するものである。タイマ９２は、プロセッサ９１が実行状況の記録を行う際に、時刻情報を供給するためのタイマである。実行記録用メモリ９３は、プロセッサ９１によって記録されるアドレスと発生時刻の情報（実行時刻対応表２０１）を記録するためのメモリである。
【００２１】
図４は、実行記録用メモリ９３に記録される実行時刻対応表２０１の説明図である。
図示のように、実行時刻対応表２０１は、発生時刻とアドレスのレコードが記録されるようになっている。
【００２２】
最適化判定手段１０は、実行状況記録手段９の実行状況の記録情報を解析し、その解析結果に基づいてハードウェア処理の実行割合を決定して、その結果を生成手段１に出力する機能部である。即ち、最適化判定手段１０は、ソフトウェア実行手段での処理時間の長い処理の順にハードウェア実行手段が実行する処理となるよう実行割合を決定する機能を有している。
【００２３】
次に、実施の形態１の動作について説明する。
最初に、システム全体を記述したシステム記述１のうちどの部分をソフトウェアで実行させどの部分をハードウェアウェアで実行させるかは任意であるが、経験などに基づいて、人間が判断し、生成手段１に適当に指示する。生成手段１は、その指示に従って、ソフトウェアコード１２とハードウェアコード１３とを各々生成する。あるいは、生成手段１に対して、最初は全てソフトウェアで実行すると指示してもよい。その場合、生成手段１はシステム記述１を全てソフトウェアで実行するように、ソフトウェアコード１２を生成する。
【００２４】
上記のように生成され、組み込み装置１００で実行されるコードは、その実行中に、実行状況記録手段９によってそれぞれの実行を記録される。この実行状況記録手段９のプロセッサ９１は、記録対象である組み込み装置１００のプロセッサ１０１で実行されるソフトウェアコードの実行の流れが変化した時の割り込み信号が入力された時に、アドレス線１６のデータを読み取り、実行記録用メモリ９３に書き込む。また同時に、実行状況記録手段９に備えられているタイマ９２からの時刻情報を得、これを記録する。即ち、実行記録用メモリ９３には、図４に示すようなデータ構造で実行状況が記録される。但し、最初の行にはシステムの電源投入時など、実行記録を開始する時刻とプロセッサによって固有の実行開始アドレスを記録する。電源投入時と記録の開始が同時でない場合は最初の組み込み装置１００のプロセッサ１０１からの割り込みから記録を開始する。
【００２５】
実行記録用メモリ９３に記録データが一杯になった時、あるいは、任意のタイミングで対象の組み込み装置１００の実行を停止して、最適化判定手段１０による最適化判定処理を実行する。この処理の流れを以下に示す。
【００２６】
図５は、最適化判定処理のフローチャートである。
最適化判定処理では、先ず、最適化判定手段１０は、実行状況記録手段９の実行記録用メモリ９３のデータ（実行時刻対応表２０１）を読み込む（ステップＳＴ１）。次いで、リンク手段３によって生成される関数とそのロケートアドレスの対応表を読み込む（ステップＳＴ２）。ここでいう対応表とは、関数名とその関数が組み込み装置１００のメモリ１０２のどこのアドレスに配置されるかの対応表である。尚、このリンク手段３と最適化判定手段１０とを結ぶ線は図１では省略している。
【００２７】
次いで、読み込んだ対応表を元に、実行時刻対応表２０１から無効情報を削除する（ステップＳＴ３）。ここでいう無効情報とは次のような意味である。例えば、最初に全てソフトウェアで実行するようにシステムを生成した場合、一般にソフトウェアで実行する部分をハードウェアで実行するようにすると実行速度が向上し、更に消費電力も低減できる。しかし通常はシステム全体をハードウェア化するほど可変論理素子１０３などの容量は大きくない。そこで組み込み装置１００のどの部分をハードウェアで実行するかをハードウェアの容量の範囲内で選択しなければならない。一般的には、ソフトウェアで実行される時間が長い処理ほどハードウェア化することが効果的である。しかしその部分を前もって決めることは難しく、また環境によってその動作が異なり、実際に設置されるまでその実行パターンが決められない組み込み装置も多い。
【００２８】
そこで実際に設置した時のデータでハードウェア化する部分を決めることが望ましいことになる。しかし実行時に一番長時間実行されていてもその部分が何も実行することがない場合に実行されるアイドルループなど、意味のない処理の場合はその部分をハードウェア化して実行速度を向上させても意味を持たない。従って、そのようなハードウェア化しても意味のない部分を削除する必要があり、ステップＳＴ３の処理はこれを行うためのものである。
【００２９】
次に、最適化判定手段１０は、実行時刻対応表２０１のデータに基づき、実行時刻から実行時間を処理単位で計算して関数と実行時間の対応表を作成する（ステップＳＴ４）。
図６は、実行時間対応表２０２の説明図である。
上述したリンク手段３の情報と、実行記録用メモリ９３から実行される関数名とそれが実行される時間は計算できる。なぜならば、関数呼び出しが発生すると実行記録用メモリ９３にそのアドレスが発生時刻と共に記録され、ある関数の実行開始時刻と次の関数実行開始時刻の差がその関数の実行時間になるからである。もちろん同じ関数が複数呼び出される場合も多く、その場合は実行記録用メモリ９３の別の場所にも同じアドレスが現れるがそれは一つにまとめることとする。また、当然ながら、実行時間はすべての同じ関数の実行時間の合計とする。
【００３０】
尚、実行時間対応表２０２は、最適化判定手段１０の内部に備えられている図示しない記録用メモリ上に作成するものである。
【００３１】
このようにして、実行時間対応表２０２を作成すると、その中から実行時間が最も長い処理を選択し、この情報を判定結果として生成手段１に送出する（ステップＳＴ５）。生成手段１は、その関数を記述しているシステム記述１１の部分から、今度はハードウェアコードを生成する（ステップＳＴ６）。また、最適化判定手段１０は、実行時間対応表２０２から今選択した部分を削除する（ステップＳＴ７）。
【００３２】
次に、最適化判定手段１０は、ステップＳＴ６で生成されたハードウェアコードと対照の組み込み装置のハードウェアの容量を比較して、容量の範囲以内であるかを判定する（ステップＳＴ８）。尚、最適化判定手段１０は、その内部に組み込み装置１００におけるハードウェア容量の情報を保持しているとする。ステップＳＴ８において、容量の範囲内であれば、高位合成手段５〜構成用メモリ書込手段８により、最初に説明した手順に従って対象の組み込み装置１００の可変論理素子構成用メモリ１０４に書き込む（ステップＳＴ９）。
【００３３】
次に、最適化判定手段１０は、残りハードウェアの容量を更新し（ステップＳＴ１０）、実行時間対応表２０２の関数を全て調べたかを判定する（ステップＳＴ１１）。このステップＳＴ１１において、関数がまだ残っている場合は、ステップＳＴ５に戻り、全て調べた場合は、最適化判定処理を終了する。
【００３４】
このような処理により、ソフトウェア処理の実行時間の長い順にハードウェア処理となるよう実行割合が変更されていき、そして、これがハードウェアの容量までハードウェア処理が行われるよう設定され、組み込み装置１００は最初と異なる内部構成のものとなる。
【００３５】
尚、上記実施の形態１では、図５で示したソフトウェアで実行している部分をハードウェア化する判定処理のなかで、対象外となった部分を実行時間対応表２０２から削除する処理としたが、テーブルの項目を増やして無効フラグを追加するような実装方法でも、上記実施の形態と同様の効果がある。
【００３６】
また、上記実施の形態１では、対象の組み込み装置１００を停止させて内部構造の書き換えを行ったが、変更する部分と別の部分を実行中に書き換えても、上記実施の形態１と同様の効果がある。
【００３７】
以上のように、実施の形態１によれば、組み込み装置を構成するソフトウェアとハードウェアを区別なく記述したシステム記述からソフトウェアコードとハードウェアコードとを生成する生成手段と、組み込み装置に設けられ、生成手段で生成されたソフトウェアコードに基づく処理を実行するソフトウェア実行手段と、組み込み装置に設けられ、生成手段で生成されたハードウェアコードに基づいたハードウェアにより処理を実行するハードウェア実行手段と、ソフトウェア実行手段の実行状況を解析し、この解析結果に基づいて、ハードウェア実行手段の実行割合を決定する最適化判定手段とを備え、生成手段は、最適化判定手段の決定結果に基づいて、ソフトウェアコードとハードウェアコードを生成するようにしたので、組み込み装置の内部構造を変化させ、より実行速度が速く、かつ消費電力が少ない組み込み装置に変化させることができるという効果がある。
【００３８】
また、実施の形態１によれば、最適化判定手段は、ソフトウェア実行手段での処理時間の長い処理の順にハードウェア実行手段が実行する処理となるよう実行割合を決定するようにしたので、より効率的に、実行速度が速く、かつ、消費電力が少ない組み込み装置とすることができる。
【００３９】
実施の形態２．
図７は実施の形態２の組み込みシステムの構成図である。
実施の形態２では、実施の形態１では別構成としていた生成手段１、コンパイル手段２、リンク手段３、メモリ書込手段４、高位合成手段５、論理合成手段６、配置・配線手段７、構成用メモリ書込手段８、実行状況記録手段９、最適化判定手段１０を、組み込み装置１００ａ内に設けるようにしたものである。即ち、これら生成手段１〜最適化判定手段１０を、組み込み装置１００ａにおけるプロセッサ１０１を用いて実現するようにしたものである。
【００４０】
従って、システム記述１１や、生成手段１によって生成されるソフトウェアコード１２およびハードウェアコード１３、また、オブジェクトコード１４やコンフィグレーションデータ１５の構成は実施の形態１と同様であるため、ここでの説明は省略する。
【００４１】
また、実行状況記録手段９もプロセッサ１０１を用いて構成されているため、プロセッサ１０１におけるソフトウェアコードの実行を記録するには、実行状況記録手段９を実現するためのプロセッサ１０１の動作によって行うものとする。
【００４２】
このように構成された実施の形態２の組み込みシステムにおける最適化処理は、実施の形態１と同様に行われるため、その動作説明は省略する。
【００４３】
以上のように、実施の形態２によれば、生成手段と最適化判定手段を、組み込み装置に一体に組み込むようにしたので、組み込みシステムとして構成を簡素化できると共に、任意の時間にソフトウェアとハードウェアの最適化を実行できる効果がある。
【００４４】
実施の形態３．
図８は実施の形態３の組み込みシステムの構成図である。
実施の形態３では、システム記述１１よりも抽象度の高いＵＭＬ（Unified Modeling Language)といったモデル記述言語で記述されたシステム仕様１７から、ＳＬＤＬコード生成手段１８によってシステム記述１１を生成するようにしたものである。その他の生成手段１〜最適化判定手段１０および組み込み装置１００の構成は、実施の形態１と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【００４５】
このように構成された組み込みシステムでは、ＵＭＬで記述されたシステム仕様１７から、ＳＬＤＬコード生成手段１８は、ＵＭＬよりやや抽象化度の低いシステム記述言語を生成し、これをシステム記述１１として出力する。これ以降の動作は実施の形態１と同様である。
【００４６】
以上のように、実施の形態３によれば、システム記述を、そのシステム記述よりも抽象化度の高いモデル記述言語から生成するようにしたので、組み込みシステムの開発効率をより効率化することができる。
【００４７】
尚、上記各実施の形態では、実行状況記録手段９と最適化判定手段１０とを別の構成として図示しているが、もちろんこの両者は一つの装置として実現しても同様の効果がある。
【図面の簡単な説明】
【００４８】
【図１】この発明の実施の形態１による組み込みシステムを示す構成図である。
【図２】この発明の実施の形態１の組み込みシステムにおける組み込み装置と実行状況記録手段との接続状態を示す説明図である。
【図３】この発明の実施の形態１の組み込みシステムにおける実行状況記録手段の内部構成を示すブロック図である。
【図４】この発明の実施の形態１の組み込みシステムにおける実行時刻対応表の説明図である。
【図５】この発明の実施の形態１の組み込みシステムにおける最適化判定処理のフローチャートである。
【図６】この発明の実施の形態１の組み込みシステムにおける実行時間対応表の説明図である。
【図７】この発明の実施の形態２による組み込みシステムを示す構成図である。
【図８】この発明の実施の形態３による組み込みシステムを示す構成図である。
【符号の説明】
【００４９】
１  生成手段、９  実行状況記録手段、１０  最適化判定手段、１７  システム仕様、１８  ＳＬＤＬコード生成手段、１００，１００ａ  組み込み装置、１０１  プロセッサ、１０２  メモリ、１０３  可変論理素子、１０４  可変論理素子構成用メモリ。
【図１】
2006011840.tif 000003
【図２】
2006011840.tif 000004
【図３】
2006011840.tif 000005
【図４】
2006011840.tif 000006
【図５】
2006011840.tif 000007
【図６】
2006011840.tif 000008
【図７】
2006011840.tif 000009
【図８】
2006011840.tif 000010