(57)【要約】      （修正有）【課題】ハードウェア資源の情報を基に効果的にプログラム自動生成を行う組み込み用プログラム開発装置及び自動生成方法を提供する。【解決手段】複数の処理ブロックを組み合わせてプログラムの作成を行う組み込み用プログラム開発装置１であって、前記複数の処理ブロックに関するライブラリ情報を記憶する情報テーブル部５０と、前記情報テーブル部５０に記憶されたライブラリ情報に基づいて前記複数の処理ブロックを組み合わせてソースプログラムを生成する生成手段２０と、を有し、前記生成手段２０は、生成されるソースプログラムの必要ハードウェア資源データ、プログラム容量、及びサイクル数を算出し、生成されるソースプログラムが動作する一つのプロセッサの性能を超えるものである場合、処理ブロックを別の処理ブロックへの置き換えを行い、並列又は直列分割の方法を変更して複数のプロセッサに分けることにより、ソースプログラムを生成する。【選択図】図１
2008071314.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ブロックを組み合わせてプログラムの作成を行う組み込み用プログラム開発装置であって、
前記複数の処理ブロックに関するライブラリ情報を記憶する情報テーブル部と、
前記情報テーブル部に記憶されたライブラリ情報に基づいて前記複数の処理ブロックを組み合わせてソースプログラムを生成する生成手段と、
を有し、
前記生成手段は、生成されるソースプログラムの必要ハードウェア資源データ、プログラム容量、及びサイクル数を算出し、生成されるソースプログラムが動作する一つのプロセッサの性能を超えるものである場合、
処理ブロックを別の処理ブロックへの置き換えを行い、並列又は直列分割の方法を変更して複数のプロセッサに分けることにより、ソースプログラムを生成することを特徴とする組み込み用プログラム開発装置。
【請求項２】
前記情報テーブル部により記憶されるライブラリ情報は、各々の前記複数の処理ブロックの必要ハードウェア資源、プログラム容量、サイクル数、及び、他の処理ブロックとの関連情報に関するデータであることを特徴とする請求項１に記載の組み込み用プログラム開発装置。
【請求項３】
複数の処理ブロックに関するライブラリ情報を記憶する情報テーブル部を備え、前記複数の処理ブロックを組み合わせてプログラムの作成を行う組み込み用プログラム開発装置におけるプログラム自動生成方法であって、
前記情報テーブル部に記憶されたライブラリ情報に基づいて前記複数の処理ブロックを組み合わせてソースプログラムを生成する生成工程を有し、
前記生成工程は、生成されるソースプログラムの必要ハードウェア資源データ、プログラム容量、及びサイクル数を算出し、生成されるソースプログラムが一つのプロセッサの性能を超えるものである場合、処理ブロックを別の処理ブロックへの置き換えを行い、並列又は直列分割の方法を変更して複数のプロセッサに分けることにより、ソースプログラムを生成することを特徴とするプログラム自動生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み用プログラム開発装置、及びプログラム自動生成方法に関する。
【背景技術】
【０００２】
従来、ＰＣ等のコンピュータ機器上において、直接プログラムコードを記述してプログラミングするのではなく、マウス等を用いるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）操作によってプログラミングする、という組み込み用プログラム開発システムが利用されている。
【０００３】
上記の組み込み用プログラム開発システムでは、利用者（ユーザ）が、表示画面上で処理単位のブロックをいくつか繋ぎ合わせたり、ブロックの振る舞いそのものを定義したりすることにより、ソースプログラムが自動生成される。
【０００４】
自動生成されるソースプログラムは、スケルトン部分のみであり、実処理の内容はユーザ自身がプログラミングする必要がある、というものもある。しかしながら、ユーザ自身が実処理の内容をプログラミングする必要があるシステムでは元より、そうでないシステムでも、ＧＵＩ操作によりプログラミングした時点では全体のプログラミングサイズ、実行時間、必要なメモリ量、若しくはＩ／Ｏなどのハードウェア資源に関するデータが不明である。従って、自動生成されるソースプログラムが、一つのプロセッサの性能を超えたプログラムになるのか否かは明らかではない。つまり、処理を複数プロセッサに分割するとしても、結局ユーザ自身の判断に依存するしかない。
【０００５】
このようなことから、プログラムの自動生成等に関する種々の発明がなされている。
【０００６】
特許文献１には、プログラム部分毎に最適化方法が異なる場合にもプログラム実行を最適化するプログラムチューニングシステムの発明が開示されている。特許文献２には、複数のプロセッサを用いた並列コンパイル処理に要する時間を短縮し、並列コンパイルの処理効率を向上させることが可能な並列コンパイル方法（及び装置）の発明が開示されている。特許文献３には、ソフトウェアプログラムを部品モジュールの上位概念である処理モジュールの組み合わせとして表示するとともに、その表示形式として一覧表表示とフローチャート表示を選択し得るソフトウェアプログラム生成装置の発明が開示されている。また、特許文献４には、分離バイアス値制御を行うソフトウェアを個部の部品で構成して、ソフトウェアを再利用しやすくする技術が開示されている。特許文献５には、スケジューラを使用することなく、各ＣＰＵのロードバランスを改善し、効率の良い並列処理を可能とするコンパイラプログラムの発明が開示されている。特許文献６には、コンパイラを用いた開発のＴＡＴ短縮のために要求されるコンパイル時間が短縮できる並列コンパイル処理システムの発明が開示されている。特許文献７には、並列プロセッサで動作するプログラムを単一プロセッサでも実行できるような仕組みを再コンパイル等行うことなく最小の工数で実現する並列画像処理システムの発明が開示されている。
【特許文献１】特開２００３―１７３２６２号公報
【特許文献２】特開２００３―２８８２１７号公報
【特許文献３】特開平１１―３５３１６９号公報
【特許文献４】特開２００４―２０５８１５号公報
【特許文献５】特開２００４―９４５８１号公報
【特許文献６】特開平１１―６５８５３号公報
【特許文献７】特開２０００―２０４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１〜７等に開示された発明では、プログラム部品の組み合わせによりプログラムの自動生成を行う技術が示されているが、生成されたプログラムが必要とする、例えば、メモリ容量等のハードウェア資源情報を基に複数プロセッサに分けてプログラム生成を行うものはないという問題があった。また、生成されたソースプログラムの解析により複数のプロセッサに分けてプログラミングする技術も示されているが、ハードウェア資源に関する情報を基に分割しておらず、一プロセッサの機能を超えた分割になる可能性があった。
【０００８】
本発明は、上記の点に鑑みて、この問題を解消するために発明されたものであり、ハードウェア資源に関する情報を基に効果的にプログラム自動生成を行う組み込み用プログラム開発装置及びプログラム自動生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明の組み込み用プログラム開発装置は、複数の処理ブロックを組み合わせてプログラムの作成を行う組み込み用プログラム開発装置であって、前記複数の処理ブロックに関するライブラリ情報を記憶する情報テーブル部と、前記情報テーブル部に記憶されたライブラリ情報に基づいて前記複数の処理ブロックを組み合わせてソースプログラムを生成する生成手段と、を有し、前記生成手段は、生成されるソースプログラムの必要ハードウェア資源データ、プログラム容量、及びサイクル数を算出し、生成されるソースプログラムが動作する一つのプロセッサの性能を超えるものである場合、処理ブロックを別の処理ブロックへの置き換えを行い、並列又は直列分割の方法を変更して複数のプロセッサに分けることにより、ソースプログラムを生成するように構成することができる。
【００１０】
これにより、ハードウェア資源に関する情報を基に効果的にプログラム自動生成を行う組み込み用プログラム開発装置を提供することができる。
【００１１】
また、上記の目的を達成するために、本発明の前記情報テーブル部により記憶されるライブラリ情報は、各々の前記複数の処理ブロックの必要ハードウェア資源、プログラム容量、サイクル数、及び、他の処理ブロックとの関連情報に関するデータであるように構成することができる。
【００１２】
これにより、処理ブロックのライブラリ情報として、処理ブロックが必要とするハードウェア資源情報、サイクル数、ステップ数及び他の処理ブロックとの関連情報を具備することができる。
【００１３】
また、上記の目的を達成するために、本発明のプログラム自動生成方法は、複数の処理ブロックに関するライブラリ情報を記憶する情報テーブル部を備え、前記複数の処理ブロックを組み合わせてプログラムの作成を行う組み込み用プログラム開発装置におけるプログラム自動生成方法であって、前記情報テーブル部に記憶されたライブラリ情報に基づいて前記複数の処理ブロックを組み合わせてソースプログラムを生成する生成工程を有し、前記生成工程は、生成されるソースプログラムの必要ハードウェア資源データ、プログラム容量、及びサイクル数を算出し、生成されるソースプログラムが一つのプロセッサの性能を超えるものである場合、処理ブロックを別の処理ブロックへの置き換えを行い、並列又は直列分割の方法を変更して複数のプロセッサに分けることにより、ソースプログラムを生成するように構成することができる。
【００１４】
これにより、ハードウェア資源に関する情報を基に効果的にプログラム自動生成を行うプログラム自動生成方法を提供することができる。
【発明の効果】
【００１５】
本発明の組み込み用プログラム開発装置及びプログラム自動生成方法によれば、ハードウェア資源に関する情報を基に効果的にプログラム自動生成を行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態を図面に基づき説明する。
【実施例】
【００１７】
（システムの概要）
まず、本発明の組み込み用プログラム開発装置の概要について図１を用いて説明する。図１は、本発明の組み込み用プログラム開発装置１の概要を示す図である。本発明の組み込み用プログラム開発装置１では、直接プログラムコードを記述してプログラミングするのではなく、マウス等の後述の入力手段１０を用いるＧＵＩ操作によってプログラミングを行う。なお、組み込み用プログラム開発装置１は、例えばＰＣ等である。
【００１８】
図１において、組み込み用プログラム開発装置１は、入力手段１０，生成部２０、生成プログラム格納部３０、ブロックデータ部４０、情報テーブル部５０等により構成される。
【００１９】
入力手段１０は、入力を行う装置である。例えば、ＰＣに接続されたマウス等である。
【００２０】
生成部２０は、後述のブロックデータ部４０に保持された複数の処理ブロックを組み合わせて組み込み用プログラムを生成する部である。後述のシミュレーション部２１、表示部２２等により構成される。
【００２１】
シミュレーション部２１は、組み込み用プログラムの生成におけるシミュレーションを行う。シミュレーションとは、例えば、生成する組み込み用プログラム実行時の実サイクル数を計測すること等である。例えば、ＰＣに搭載されたＣＰＵ等が行う。
【００２２】
表示部２２は、表示を行う。例えば、ＰＣに搭載されたディスプレイ等を用いて組み込み用プログラムの作成に係るブロック線図の表示を行う。
【００２３】
生成プログラム格納部３０は、生成部２０において生成された組み込み用プログラムを格納する。例えば、ＰＣ内のＲＡＭ等である。
【００２４】
ブロックデータ部４０は、組み込み用プログラムを生成するための複数の処理ブロックデータを記憶する部である。例えば、ＰＣ内のＲＡＭ等である。なお、ここで記憶される複数の処理ブロックデータは、生成部２０の表示部２２上でＧＵＩ操作により組み込み用プログラムとして組み合わせられてもよい。
【００２５】
情報テーブル部５０は、ブロックデータ部４０により記憶される処理ブロックデータのライブラリ情報を記憶する部である。例えば、ＰＣ内のＲＡＭ等である。詳細については、次の情報テーブル部５０の概要において説明を行う。なお、ライブラリ情報とは、処理ブロックデータのプログラムステップ数、最大プログラムサイクル数、最小プログラムサイクル数、データＲＡＭ容量、使用ラインメモリ数、関連ライブラリ情報等である。
【００２６】
以上のシステムの構成により、本発明の組み込み用プログラム開発システム１では、  システムの利用者（ユーザ）は、マウス等の入力手段１０を介して組み込み用プログラムの生成に必要な処理ブロックのデータをブロックデータ部４０から生成部２０の表示部２２に呼び出す。更にユーザは、それらの処理ブロックデータを表示部２２上で組み合わせて組み込み用プログラムを作成する。生成された組み込み用プログラムは、生成プログラム格納部３０に格納される。なお、組み込み用プログラムの作成方法については、後述の組み込み用プログラムの作成方法の例において詳細に説明を行う。
【００２７】
なお、ユーザが、マウス等の入力手段１０を用いてＧＵＩ操作で各処理ブロックを繋ぎ合わせてプログラムの作成を行うとき、生成部２０は、情報テーブル部５０に記憶されたライブラリ情報を利用し、全てのプログラミングが終わった時点で、必要とされるハードウェア資源の合計が一つのプロセッサ性能を越えてしまった場合、必要とするステップ数がプログラムメモリ容量を越えてしまった場合、或いは、目的とする時間内に処理が終わらない場合等、個々のプロセッサの性能限界を越えないように、複数のプロセッサに分割してソースプログラムを生成する。なお、ここでの分割は、そのブロック線図の書き方により、並列になるか直列になるのかが、一意に決まる場合がある。
【００２８】
なお、本実施例に係る組み込み用プログラム開発装置１は、主として、画像処理用組み込みシステム向けソフトウェアの開発のために用いられるものとして以降説明をしていくが、この場合には限らないものとする。
（情報テーブル部５０の概要）
次に、情報テーブル部５０の概要について図２及び３を用いて説明を行う。図２は、実施例に係る情報テーブル部５０により記憶されるデータ項目の例を示す図である。
【００２９】
図２において、情報テーブル部５０により記憶されるデータ項目は、ブロックデータ部４０に記憶させる処理ブロックが要するハードウェア資源に関する情報を示す。プログラムステップ数（メモリ数）、最大プログラムサイクル数、最小プログラムサイクル数、データＲＡＭ容量、使用ラインメモリ数、関連ライブラリ情報等である。処理ブロックの作成時に、処理ブロックに対応づけて付属されるようにする。また、システム利用者が処理ブロックを作成する場合にも、処理ブロックに関する情報テーブルの情報を付属しておくようにする。
【００３０】
図３は、実施例に係る情報テーブル（図２参照）のデータ項目の一つである関連ライブラリ情報の概要を示す図である。ここでは、ある処理ブロックにおいて、置き換えを行うことが可能な別の処理ブロック等が定義されるものとする。詳細については後述の生成方法の例において説明を行う。
（組み込み用プログラムの生成方法の第１の例）
次に、本発明の組み込み用プログラムの生成方法の第１の例について図４〜８を用いて説明を行う。
【００３１】
ここでは、ブロックデータ部４０に記憶された後述の処理ブロックＡ〜Ｆを組み合わせて組み込み用プログラムを作成する場合の作成方法について説明を行う。また、カラーＲＧＢの３色の入力データに対して、画像処理を施した後出力を行う画像プロセッサＲ（図４参照）を、作成された組み込み用プログラムを動作させるプロセッサと想定して説明を行う。 
まず、ブロックデータ部４０並びに情報テーブル部５０に記憶された記憶内容について説明を行う。その後、処理ブロックＡ〜Ｆを組み合わせて組み込み用プログラムを作成する場合の作成方法について説明を行う。
【００３２】
ブロックデータ部４０には、処理ブロックＡ〜Ｆのデータが記憶されている。処理ブロックＡ〜Ｆは、カラーＲＧＢの３色の入力データに対して処理を行うカラーＲＧＢ用の処理ブロックである。処理の詳細については、本発明に関わる部分ではないので、説明を省略する。また、同様に処理ブロックａ〜ｆのデータが記憶されている。処理ブロックａ〜ｆは、モノクロの入力データに対して処理を行うモノクロ用の処理ブロックである。なお、処理Ａ〜Ｆは、それぞれ処理ａ〜ｆと等価な処理であるものとする。
【００３３】
情報テーブル部５０には、上記の処理ブロックＡ〜Ｆに関するライブラリ情報として、ここでは、使用するラインメモリ数、プログラム容量、関連ライブラリ情報が記憶されている（図５（ａ）参照）。また、同様に処理ブロックａ〜ｆについても記憶されている。ライブラリ情報の一項目である関連ライブラリ情報に着目すると、図５（ｂ）のように、処理ブロックＡは、処理ブロックａ３つに分割可能であることが示されている。即ち、カラーＲＧＢ用の処理ブロックＡは、モノクロ用の処理ブロックａをＲＧＢ３色分、即ち３つに分割することができることを表している。また、図５（ｃ）のように、処理ブロックａは、それを３つ合わせることで、処理ブロックＡとして結合可能であることが示されている。即ち、モノクロ用の処理ブロックａをＲＧＢ３色分合わせることによりカラーＲＧＢ用の処理ブロックＡとして結合できることを表している。
【００３４】
次に、処理ブロックＡ〜Ｆの処理ブロックを組み合わせて、カラーＲＧＢの３色の入力データに対して処理を行う組み込み用プログラムを作成する場合の作成方法について説明を行う。なお、処理ブロックＡ〜Ｆのデータは、ブロックデータ部４０から生成部２０の表示部２２に予め呼び出されているものとする。
【００３５】
まず、生成部２０は、処理ブロックＡ〜Ｆを組み合わせて生成される組み込み用プログラムの必要ハードウェア資源データ、プログラム容量を算出する。
【００３６】
ここでは、処理ブロックＡ〜Ｆを組み合わせると使用するラインメモリ数は、図５（ａ）を参照すると、２＋３＋４＋１＋４＋１＝１５ライン、プログラム容量は、４＋１０＋１２＋３＋１２＋２（＋２）＝４３Ｋバイト（４５Ｋバイト）となる。なお、プログラム容量の加算における最後の２（Ｋバイト）は、初期化処理、後処理、各処理ブロックの接続用のプログラミング等に要するプログラム容量を示す。
【００３７】
以上のことから、図４で示される画像プロセッサＲの性能と比較すると、ラインメモリ数が不足（８ライン＜１５ライン）、プログラム容量も不足（３２Ｋバイト＜４５Ｋバイト）している。即ち、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものであることが分かる。
【００３８】
組み込み用プログラムが画像プロセッサＲ一つの性能を超える場合、ここでは、生成部３０は、組み込み用プログラムを直列に分割する。即ち、図６における破線で示すように、処理ブロックＡ，Ｂ（合計ラインメモリ数５、プログラム容量１４Ｋバイト）が一つ目のプロセッサＸで、処理ブロックＣ、Ｄ（合計ラインメモリ数５、プログラム容量１５Ｋバイト）が二つ目のプロセッサＹ、処理ブロックＥ，Ｆ（合計ラインメモリ数５、プログラム容量１４Ｋバイト）が三つ目のプロセッサＺのように分割される。これにより、３つのプロセッサそれぞれ用のプログラムが生成できるようになることが分かる。なお、プロセッサＸ、Ｙ、Ｚは、それぞれ画像プロセッサＲと同等の性能を持っているものであるとする。
【００３９】
しかし、この分割方法では、まずプロセッサＸで、ＲＧＢ３色分の処理を行い、その後でプロセッサＹ、プロセッサＺと連続的に３色分の処理がなされることになり、ただプログラムが３つに分割されただけで、全体的な処理時間はそのまま累積され、プロセッサを３つ使ったことによる処理時間の向上は見込めない。
【００４０】
本実施例においては、生成部３０は、処理ブロックを別の処理ブロックへの置き換える動作を行う。具体的には、処理ブロックＡ〜Ｆを別の処理ブロックａ〜ｆへ置き換える動作を行う。処理ブロックａ〜ｆをＲＧＢの各色で使用するようにブロック線図を変換し、等価な処理とする。変換後のブロック線図は、図７に示される。
【００４１】
図７で示されるようにブロック線図を変換することにより、直列又は並列のいずれにも分割が可能になる。例えば、速度を優先する場合には、破線で示すように並列に分割することができるようになる。３色それぞれの処理を３つのプロセッサがそれぞれ処理できれば、おおよそ３倍の処理速度が見込むことができる。
【００４２】
さらに、一旦処理ブロックの分割ができると、３色分の処理ではプロセッサのリソースが不足していたものが、１色のみ、あるいは２色のみの処理を行うことにより、プロセッサの必要数を低減化することができる。
【００４３】
例えば、図７から図８への処理ブロック分割が発生した時、図８の破線で示すような分割も可能になる。この場合、必要なプロセッサ数が図６又は図７の３個から、プロセッサＸ'、プロセッサＹ'の２個に低減することも可能になる。即ち、ハードウェアコストを低減化することもできる。
【００４４】
以上の生成方法により、本発明の組み込み用プログラム開発装置１では、上記のブロックデータ部４０に記憶された処理ブロックＡ〜Ｆを別の処理ブロックａ〜ｆへの置き換えを行い、並列又は直列分割の方法を変更して２以上のプロセッサに分けることにより、ソースプログラムを生成する。
【００４５】
これにより、以下に掲げる効果を奏する。その効果とは、ハードウェア資源に関する情報を基に効果的にプログラム自動生成を行うことができることである。
（組み込み用プログラムの生成方法の変形例）
次に、本発明の組み込み用プログラムの生成方法の変形例について図９、１０を用いて説明を行う。
【００４６】
前述の組み込み用プログラムの生成方法の例では、ブロックデータ部４０に記憶された処理ブロックＡ〜Ｆを別の処理ブロックａ〜ｆへの置き換えを行い、並列又は直列分割の方法を変更して２以上のプロセッサに分けることにより、ソースプログラムを生成した。ここでは、その変形例として逆の置き換え、即ち処理ブロックａ〜ｆから処理ブロックＡ〜Ｆへの置き換えを行い、並列又は直列分割の方法を変更して２以上のプロセッサに分けることにより、ソースプログラムを生成する動作について説明を行う。
【００４７】
まず、ブロックデータ部４０並びに情報テーブル部５０に記憶された記憶内容について説明を行う。その後、処理ブロックＡ〜Ｆを組み合わせて組み込み用プログラムを作成する場合の作成方法について説明を行う。
【００４８】
最初にモノクロ用の処理ブロックａ，ｂが作成されていたとする。これらを用いてカラーＲＧＢ用のブロック線図を作成する場合、図９のようになる。その後、同様な処理を行うカラーＲＧＢ用の処理ブロックＡ，Ｂが追加された場合でも、ユーザが改めてブロック線図の書き換えを行わなくとも、自動的に図１０のように変換させることもできる。
【００４９】
これにより、組み込み用プログラムが画像プロセッサ一つの性能を超えない場合、即ち、特にプロセッサの分割が発生しない場合であっても、オーバヘッドの短縮、生成されるプログラムコードの短縮を図ることもできる。
【００５０】
また、図１０のようなブロック線図を作成していた場合、全体が一つのプロセッサ内に収まるにも関わらず、時間の短縮のために、図９の破線の部分で並列に３つのプロセッサに分割させることもできる。
【００５１】
これにより、プロセッサが３個になりハードウェア的には増大するものの、ＲＧＢ各色が同時に実行できるため、ハードウェアの増大よりも実行時間の短縮化が必要とされる場合には、その選択もできることにもなる。
（組み込み用プログラムの生成方法の第２の例）
次に、本発明の組み込み用プログラムの生成方法の第２の例について図１１を用いて説明を行う。
【００５２】
前述の第１の例では、処理ブロックＡ〜Ｆの処理ブロックを組み合わせて組み込み用プログラムを作成する際、生成部２０は、生成される組み込み用プログラムの必要ハードウェア資源データ、プログラム容量を算出して（図５（ａ）等参照）、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものである場合の動作を行った。ここでは、更に、生成される組み込み用プログラムのサイクル数を算出して、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものである場合の動作について説明を行う。  
ここでは、画像プロセッサＲ（図４参照）一つにおいて、サイクル数を１０００サイクル以内に収める必要がある場合を想定する。プログラミングにおいては、処理ブロックＧ、Ｈ、Ｉ，及びＪが必要であるとし、それら処理ブロックのハードウェア資源の条件が図１１に示されるものであるとする。
【００５３】
このとき、処理ブロックＧ〜Ｊを組み合わせると使用するラインメモリ数は、図１１を参照すると、１＋２＋３＋１＝７ライン、プログラム容量は、３＋１０＋８＋４（＋２）＝２５Ｋバイト（２７Ｋバイト）サイクル数は、２００＋３００＋４００＋１００＝１１００サイクルとなる。なお、プログラム容量の加算における最後の２（Ｋバイト）は、初期化処理、後処理、各処理ブロックの接続用のプログラミング等に要するプログラム容量を示す。
【００５４】
以上のことから、図４で示される画像プロセッサＲの性能と比較すると、ラインメモリ数が充足（８ライン＞７ライン）、プログラム容量も充足（３２Ｋバイト＞２７Ｋバイト）している。しかしながら、サイクル数が不足（１０００サイクル＜１１００サイクル）している。即ち、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものであることが分かる。
【００５５】
この場合、全体を２つに分割し、各々別のプロセッサに宛がうことになる。分割は、処理ブロックＧ、Ｈ及びＩと、処理ブロックＪとの２分割でもよい。或いは、処理ブロックＧ及びＨと、処理ブロックＩ及びＪとの２分割でもよい。更に、他の分割の組み合わせでもよい。
【００５６】
以上の動作により、生成される組み込み用プログラムのサイクル数を算出して、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものであるか否かを判定する動作を行う。なお、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものである場合の、以降の処理ブロックを別の処理ブロックへ置き換えを行う動作は、第１の例と同様であるものとしてここでは説明を省略する。
【００５７】
そのため、以下に掲げる効果を奏する。その効果とは、ハードウェア資源に関する情報であるハードウェア資源、プログラム容量、サイクル数及び関連ライブラリ情報を基に効果的にプログラム自動生成を行うことができることである。
（組み込み用プログラムの生成方法の第３の例）
次に、本発明の組み込み用プログラムの生成方法の第３の例について説明を行う。
【００５８】
前述の第２の例では、複数の処理ブロックを組み合わせて組み込み用プログラムを作成する際、組み込み用プログラムの必要ハードウェア資源、プログラム容量及びサイクル数を算出して、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものである場合の動作について説明を行った。ここでは、シミュレーション部２１（図１参照）を利用してシミュレーションにより導出された必要ハードウェア資源及びサイクル数の情報と、別の処理ブロックに関するライブラリ情報とを基にして、生成される組み込み用プログラムが必要とするハードウェア資源データ、プログラム容量、及びサイクル数を算出する動作について説明を行う。
【００５９】
ここでは、画像プロセッサＲ（図４参照）一つにおいて、サイクル数を１０００サイクル以内に収める必要がある場合を想定する。プログラミングにおいては、処理ブロックＩの代わりにＫが要求され、全体でＧ，Ｈ、Ｊ及びＫが必要であるとする（図１１参照）。なお、処理ブロックＫは、使用ラインメモリ数及びプログラム容量は処理ブロックＩに等しいが、内部の条件分岐によりサイクル数が１００〜４００に変動する。
【００６０】
生成部２０は、プログラミング時に、実サイクル数を求めるために、シミュレーション部２１によって処理ブロックのシミュレーションによるトレースを行う。シミュレーション実行に当たっては、各処理ブロック実行時の実サイクル数も計測しておくことが望ましい。
【００６１】
そのシミュレータ実行結果、処理ブロックＫが、２００サイクルで収まるとする。このとき、サイクル数の合計が９００サイクルとなり、この場合は複数のプロセッサにプログラムを分割する必要がなく、一つのプロセッサのみでプログラムを実行することが可能となる。
【００６２】
以上の動作により、シミュレーション部２１（図１参照）を利用してシミュレーションにより導出された必要ハードウェア資源及びサイクル数の情報と、別の処理ブロックに関するライブラリ情報とを基にして、生成される組み込み用プログラムが必要とするハードウェア資源データ、プログラム容量、及びサイクル数を算出する動作を行う。なお、ここでは、一つのプロセッサのみでプログラムを実行することが可能であるが、組み込み用プログラムが画像プロセッサＲ一つの性能を超えるものである場合の、以降の処理ブロックを別の処理ブロックへ置き換えを行う動作は、第１の例と同様であるものとしてここでは説明を省略する。
【００６３】
そのため、以下に掲げる効果を奏する。その効果とは、第２の例における効果に加えて、静的な処理ブロックの情報（第２の例では処理ブロックＧ，Ｈ及びＪ）と、シミュレーション部２１の実行による動的なサイクル数計算とにより、必要なプロセッサ数を算出しつつソースプログラムを自動生成することが可能となることである。
【００６４】
以上、実施例に基づき本発明の説明を行ってきたが、上記実施例にあげたその他の要素との組み合わせなど、ここで示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【図面の簡単な説明】
【００６５】
【図１】本発明の組み込み用プログラム開発装置１の概要を示す図
【図２】実施例に係る情報テーブル部５０により記憶されるデータ項目の例を示す図
【図３】実施例に係る情報テーブルのデータ項目の一つである関連ライブラリ情報の概要を示す図
【図４】実施例に係る画像プロセッサＲの性能を示す図
【図５】（ａ）実施例に係る処理ブロックＡ〜Ｆのハードウェア資源の条件例を示す図（ｂ）実施例に係る処理ブロックＡの関連ライブラリ情報の例を示す図（ｃ）実施例に係る処理ブロックａの関連ライブラリ情報の例を示す図
【図６】実施例に係る組み込み用プログラムの第１の例を示す図
【図７】図６の処理ブロックを別の処理ブロックへの置き換えた第１の例を示す図
【図８】図６の処理ブロックの別の処理ブロックへの置き換えた第２の例を示す図
【図９】実施例に係る組み込み用プログラムの第２の例を示す図
【図１０】図９の処理ブロックの別の処理ブロックへの置き換えを示す図
【図１１】実施例に係る処理ブロックＧ〜Ｋのハードウェア資源の条件例を示す図
【符号の説明】
【００６６】
１  組み込み用プログラム開発装置
１０  入力手段
２０  生成部
２１  シミュレーション部
２２  表示部
３０  生成プログラム格納部
４０  ブロックデータ部
５０  情報テブル部
【図１】
2008071314.tif 000003
【図２】
2008071314.tif 000004
【図３】
2008071314.tif 000005
【図４】
2008071314.tif 000006
【図５】
2008071314.tif 000007
【図６】
2008071314.tif 000008
【図７】
2008071314.tif 000009
【図８】
2008071314.tif 000010
【図９】
2008071314.tif 000011
【図１０】
2008071314.tif 000012
【図１１】
2008071314.tif 000013