(57)【要約】【課題】  ＧＵＩ操作でプログラミングを行う組み込み用プログラムの開発において、生成されるプログラムが必要とするハードウエア資源情報、プログラムステップ数、及びサイクル数を適切に予測し、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを自動生成する【解決手段】  処理ブロックに関するライブラリ情報を基にして、生成されるプログラムが必要とするハードウエア資源データ、プログラム容量、及びサイクル数を算出し、生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成する。【選択図】図１
2007080049.tif 000002
【特許請求の範囲】
【請求項１】
処理ブロックをＧＵＩ操作で組み合わせてプログラミングを行う組み込み用プログラム生成方法であって、
処理ブロックに関するライブラリ情報を基にして、生成されるプログラムが必要とするハードウエア資源データ、プログラム容量、及びサイクル数を算出し、
生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成する組み込み用プログラム生成方法。
【請求項２】
ＧＵＩ操作で組み合わせられる処理ブロックから、組み込み用プログラムを生成する生成部と、
処理ブロック及びＧＵＩ操作を表示する表示部と、
ＧＵＩ操作に係るデータが入力される入力手段と、
処理ブロックに係るデータを格納するブロックデータ部と、
生成されたプログラムを格納する生成プログラム格納部を含む組み込み用プログラム開発システムにおいて、
ブロックデータ部が、個々の処理ブロックに関する情報テーブル部であって処理ブロックの必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶する情報テーブル部を有し、
生成部は、処理ブロックに関する情報テーブルを基にして、生成されるプログラムで必要とされるハードウエア資源データ、プログラム容量、及びサイクル数を算出し、生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成することを特徴とする組み込み用プログラム開発システム。
【請求項３】
請求項２に記載の組み込み用プログラム開発システムにおいて、個々の処理ブロックに関する必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶し、ブロックデータ部に付属することを特徴とする情報テーブル部。
【請求項４】
処理ブロックをＧＵＩ操作で組み合わせてプログラミングを行う組み込み用プログラム生成方法であって、
組み合わせられる処理ブロックが条件分岐を含む場合、シミュレーションによるトレースを用いて、当該処理ブロックの必要ハードウエア資源、及びサイクル数を導出し、
シミュレーションにより導出された必要ハードウエア資源及びサイクル数の情報と、他の処理ブロックに関するライブラリ情報とを基にして、生成されるプログラムが必要とするハードウエア資源データ、プログラム容量、及びサイクル数を算出し、
生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成する組み込み用プログラム生成方法。
【請求項５】
ＧＵＩ操作で組み合わせられる処理ブロックから、組み込み用プログラムを生成する生成部と、
処理ブロック及びＧＵＩ操作を表示する表示部と、
ＧＵＩ操作に係るデータが入力される入力手段と、
処理ブロックに係るデータを格納するブロックデータ部と、
シミュレーションによるトレースを用いて処理ブロックの必要ハードウエア資源及びサイクル数を導出するシミュレーション部と、
生成されたプログラムを格納する生成プログラム格納部を含む組み込み用プログラム開発システムにおいて、
ブロックデータ部が、個々の処理ブロックに関する情報テーブル部であって処理ブロックの必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶する情報テーブル部を有し、
生成部は、まず、組み合わせられる処理ブロックが条件分岐を含む場合、シミュレーション部を用いて当該処理ブロックの必要ハードウエア資源及びサイクル数を導出し、
更に、生成部は、シミュレーションにより導出された必要ハードウエア資源及びサイクル数の情報と、他の処理ブロックに関する情報テーブルとを基にして、生成されるプログラムで必要とされるハードウエア資源データ、プログラム容量、及びサイクル数を算出し、生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成することを特徴とする組み込み用プログラム開発システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発システム、特に画像処理用組み込み用プログラム開発システムに関する。
【背景技術】
【０００２】
パーソナルコンピュータ等のコンピュータ機器上において、直接プログラムコードを記述してプログラミングするのではなく、マウス等を用いるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）操作によってプログラミングする、というような組み込み用プログラム開発システムが従来利用されている。
【０００３】
上記の組み込み用プログラム開発システムでは、利用者（ユーザ）が、表示画面上で処理単位のブロックをいくつか繋ぎ合わせたり、ブロックの振る舞いそのものを定義したりすることによって、ソースプログラムが自動生成される。
【０００４】
自動生成されるソースプログラムはスケルトン部分のみであり、実処理の内容はユーザ自身がプログラミングする必要がある、というものもある。しかしながら、ユーザ自身が実処理の内容をプログラミングする必要があるシステムでは元より、そうでないシステムでも、ＧＵＩ操作によりプログラミングした時点では全体のプログラムサイズ、実行時間、必要メモリ量、若しくはＩ／Ｏなどのハードウエア資源に関するデータが不明である。従って、自動生成されるソースプログラムが、一つのプロセッサの性能を超えたプログラムになるのか否かは明らかではない。つまり、処理を複数プロセッサに分割するとしても、結局ユーザ自身の判断に依存するしかない。
【０００５】
なお、下記の特許文献１は、プログラム部分毎に最適化方法が異なる場合にもプログラム実行を最適化するプログラムチューニングシステムを開示する。特許文献２は、複数のプロセッサを用いた並列コンパイル処理に要する時間を短縮し、並列コンパイルの処理効率を向上させることが可能な並列コンパイル方法（及び装置）を開示する。特許文献３は、ソフトウエアプログラムを部品モジュールの上位概念である処理モジュールの組合せとして表示するとともに、その表示形式として一覧表表示とフローチャート表示を選択し得るソフトウエアプログラム生成装置を開示する。特許文献４は、分離バイアス値制御を行うソフトウエアを個部の部品で構成してソフトウエアを再利用しやすくする技術を開示する。特許文献５は、スケジューラを使用することなく、各ＣＰＵのロードバランスを改善し、効率の良い並列処理を可能とするコンパイラプログラムを開示する。特許文献６は、コンパイラを用いた開発のＴＡＴ短縮のために要求されるコンパイル時間が短縮できる並列コンパイル処理システムを開示する。特許文献７は、並列プロセッサで動作するプログラムを単一プロセッサでも実行できるような仕組みを再コンパイルなどを行うことなく最小の工数で実現する並列画像処理システムを開示する。
【０００６】
要するに、従来技術では、（１）プログラム部品の組み合わせによりプログラムの自動生成を行う技術があるが、ハードウエア資源に関する情報を基に複数プロセッサに分けてプログラム生成を行うものではない。また、（２）生成されたソースプログラムの解析により複数のプロセッサに分けてプログラミングする技術もあるが、ハードウエア資源に関する情報を基に分割しているのではない。
【特許文献１】特開２００３−１７３２６２公報
【特許文献２】特開２００３−２８８２１７公報
【特許文献３】特開平１１−３５３１６９号公報
【特許文献４】特開２００４−２０５８１５公報
【特許文献５】特開２００４−９４５８１公報
【特許文献６】特開平１１−６５８５３号公報
【特許文献７】特開２０００−２０４８１公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、直接プログラムコードを記述することなく図や記号を用いたＧＵＩ操作でプログラミングを行う組み込み用プログラムの開発において、生成されるプログラムが必要とするハードウエア資源情報、プログラムステップ数、及びサイクル数を適切に予測し、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを自動生成することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載の組み込み用プログラム生成方法は、
処理ブロックをＧＵＩ操作で組み合わせてプログラミングを行う組み込み用プログラム生成方法であって、
処理ブロックに関するライブラリ情報を基にして、生成されるプログラムが必要とするハードウエア資源データ、プログラム容量、及びサイクル数を算出し、
生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成する。
【０００９】
本発明に係る請求項２に記載の組み込み用プログラム開発システムは、
ＧＵＩ操作で組み合わせられる処理ブロックから、組み込み用プログラムを生成する生成部と、
処理ブロック及びＧＵＩ操作を表示する表示部と、
ＧＵＩ操作に係るデータが入力される入力手段と、
処理ブロックに係るデータを格納するブロックデータ部と、
生成されたプログラムを格納する生成プログラム格納部を含む組み込み用プログラム開発システムにおいて、
ブロックデータ部が、個々の処理ブロックに関する情報テーブル部であって処理ブロックの必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶する情報テーブル部を有し、
生成部は、処理ブロックに関する情報テーブルを基にして、生成されるプログラムで必要とされるハードウエア資源データ、プログラム容量、及びサイクル数を算出し、生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成することを特徴とする。
【００１０】
本発明に係る請求項３に記載の情報テーブル部は、
請求項２に記載の組み込み用プログラム開発システムにおいて、個々の処理ブロックに関する必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶し、ブロックデータ部に付属することを特徴とする情報テーブル部である。
【００１１】
本発明に係る請求項４に記載の組み込み用プログラム生成方法は、
処理ブロックをＧＵＩ操作で組み合わせてプログラミングを行う組み込み用プログラム生成方法であって、
組み合わせられる処理ブロックが条件分岐を含む場合、シミュレーションによるトレースを用いて、当該処理ブロックの必要ハードウエア資源、及びサイクル数を導出し、
シミュレーションにより導出された必要ハードウエア資源及びサイクル数の情報と、他の処理ブロックに関するライブラリ情報とを基にして、生成されるプログラムが必要とするハードウエア資源データ、プログラム容量、及びサイクル数を算出し、
生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成する。
【００１２】
本発明に係る請求項５に記載の組み込み用プログラム開発システムは、
ＧＵＩ操作で組み合わせられる処理ブロックから、組み込み用プログラムを生成する生成部と、
処理ブロック及びＧＵＩ操作を表示する表示部と、
ＧＵＩ操作に係るデータが入力される入力手段と、
処理ブロックに係るデータを格納するブロックデータ部と、
シミュレーションによるトレースを用いて処理ブロックの必要ハードウエア資源及びサイクル数を導出するシミュレーション部と、
生成されたプログラムを格納する生成プログラム格納部を含む組み込み用プログラム開発システムにおいて、
ブロックデータ部が、個々の処理ブロックに関する情報テーブル部であって処理ブロックの必要ハードウエア資源、プログラム容量、及びサイクル数に関するデータを記憶する情報テーブル部を有し、
生成部は、まず、組み合わせられる処理ブロックが条件分岐を含む場合、シミュレーション部を用いて当該処理ブロックの必要ハードウエア資源及びサイクル数を導出し、
更に、生成部は、シミュレーションにより導出された必要ハードウエア資源及びサイクル数の情報と、他の処理ブロックに関する情報テーブルとを基にして、生成されるプログラムで必要とされるハードウエア資源データ、プログラム容量、及びサイクル数を算出し、生成されるプログラムが一つのプロセッサの性能を超えるものである場合、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを生成することを特徴とする。
【発明の効果】
【００１３】
本発明を利用することにより、直接プログラムコードを記述することなく図や記号を用いたＧＵＩ操作でプログラミングを行う組み込み用プログラム開発システムにおいて、処理ブロックのライブラリ情報、及びプログラム全体のシミュレーションを基にして、並列又は直列に接続される複数のプロセッサに分けてソースプログラムを自動生成することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
【００１５】
《第１の実施形態》
図１は、本発明の第１の実施形態に係る組み込み用プログラム開発システム２の全体のブロック図である。ここでの組み込み用プログラム開発システム２は、主として、画像処理用組み込みシステム向けソフトウエアの開発のために用いられる。上述したように、組み込み用プログラム開発システム２は、直接プログラムコードを記述してプログラミングするのではなく、マウス等を用いるＧＵＩ操作によってプログラミングを行う。
【００１６】
ブロックデータ部６は、多数の処理ブロックデータを有する。システムの利用者は、マウスなどの入力手段１０を介して必要な処理ブロックデータをブロックデータ部６から生成部４の表示部１６に呼び出す。更にシステムの利用者は、それら処理ブロックデータを表示部１６上で組み合わせて組み込み用プログラムを作成する。生成された組み込み用プログラムは、生成プログラム格納部１２に格納される。これらの生成部４、表示部１６、ブロックデータ部６、入力手段１０、及び生成プログラム格納部１２の機能・動作は、従来技術に係るものと同様である。
【００１７】
更に、本発明の第１の実施形態では、ブロックデータ部６の各処理ブロックデータに情報テーブル（情報テーブル部８）が備わる。
【００１８】
即ち、マウス等の入力手段１０を用いてＧＵＩ操作で各ライブラリブロック（処理ブロック）を繋ぎ合わせてプログラミングを行うとき、生成部４は、処理ブロックに付属する情報テーブル内のデータを利用して、選択されるライブラリブロック（処理ブロック）が使用するハードウエア資源、プログラムステップ数、及びサイクル数等を算出し管理する。そして、全てのプログラミングが終わった時点で、必要とされるハードウエア資源の合計が一つのプロセッサ性能を超えてしまわないか、必要とするステップ数がプログラムメモリ容量を超えてしまわないか、若しくは目的とする時間内に処理が終わらないのではないか、などが生成部４で確認される。そこで、プロセッサのそのような性能限界を超えているような場合、生成部４は複数のプロセッサに自動分割してソースコードを生成する。
【００１９】
上記のような本発明の第１の実施形態に係る組み込み用プログラム開発システム２は、一般的なパーソナルコンピュータなどに搭載されて実現される。
【００２０】
次に、図２に、本発明の第１の実施形態で用いるライブラリブロック（処理ブロック）内の情報テーブルのデータ項目の例を示す。予め用意するライブラリブロック（処理ブロック）には、その作成時に夫々情報テーブルの情報を付属させておく。また、システム利用者が処理ブロックを作成する場合にも、処理ブロックに関する情報テーブルの情報を付属しておくようにする。
【００２１】
（第１の実施形態における例１）
例えば、対象プロセッサとして図３に示すような性能の、ライン単位で処理を行う画像プロセッサを想定する。図３に示すように、内蔵ラインメモリ数が８ライン、プログラム最大容量が３２Ｋバイトである。
【００２２】
この画像プロセッサ用のプログラミングを行う場合、ライブラリブロック（処理ブロック）Ａ、Ｂ、Ｃ、及びＤが必要であるとし、それらライブラリブロックのハードウエア資源の条件が図４に示されるものであるとする。即ち、ライブラリブロックＡが、ラインメモリを２本、プログラム容量を４Ｋバイト使用し、ライブラリブロックＢが、ラインメモリを３本、プログラム容量を１０Ｋバイト使用し、ライブラリブロックＣが、ラインメモリを４本、プログラム容量を１２Ｋバイト使用し、ライブラリブロックＤが、ラインメモリ１本、プログラム容量を３Ｋバイト使用するとする。
【００２３】
プログラム容量として、更に、初期化処理、後処理、及び、ブロックの接続に関する接続用プログラミングのために、２Ｋバイトを要するとする。そうすると、全体として必要とされるラインメモリの数は１０本、プログラム容量は３１Ｋバイトとなり、プログラム容量は１つのプロセッサ内に収まるとしても、ラインメモリが不足することになる。
【００２４】
このとき、ライブラリブロックＡとライブラリブロックＢの部分を、一つのプロセッサに宛がい、ライブラリブロックＣとライブラリブロックＤの部分を、更に一つのプロセッサに宛がうように、プログラムを分割生成する。つまり、二つのプロセッサを使用するように全体プログラムが生成されることになる。従って、図６に示すフローチャートの処理が、図７に示すフローチャートのように２分割されることになる。あるいは、図８に示すように、ライブラリブロックＡと、ライブラリブロックＢ、Ｃ、及びＤとに、２分割することも可能である。
【００２５】
（第１の実施形態における例２）
また、上記と同じプロセッサにおいて、サイクル数を１０００サイクル以内に収める必要がある場合を想定する。プログラミングにおいては、ライブラリブロックＥ、Ｆ、Ｇ、及びＨが必要であるとし、それらライブラリブロックのハードウエア資源の条件が図５に示されるものであるとする。
【００２６】
即ち、ライブラリブロックＥが、ラインメモリを１本、プログラム容量を３Ｋバイト、サイクル数を２００サイクルとし、ライブラリブロックＦが、ラインメモリを２本、プログラム容量を１０Ｋバイト、サイクル数を３００サイクルとし、ライブラリブロックＧが、ラインメモリを３本、プログラム容量を８Ｋバイト、サイクル数を４００サイクルとし、ライブラリブロックＨが、ラインメモリを１本、プログラム容量を４Ｋバイト、サイクル数を１００サイクルとするとする。
【００２７】
プログラム容量として、更に、初期化処理、後処理、及び、ブロックの接続に関する接続用のプログラミングのために、２Ｋバイトを要するとし、サイクル数には、１００サイクルを要するとする。そうすると、全体として必要とされるラインメモリの数は７本、プログラム容量は２７Ｋバイト、サイクル数は１１００サイクルとなり、ハードウエア資源、及びプログラム容量は一つのプロセッサに収まるとしても、サイクル数が不足することになる。
【００２８】
この場合も、全体を二つに分割し夫々別のプロセッサに宛がうことになる。分割は、ライブラリブロックＥ、Ｆ及びＧと、ライブラリブロックＨとの２分割でもよい。あるいは、ライブラリブロックＥ及びＦと、ライブラリブロックＧ及びＨとの２分割でもよい。更に他の分割の組み合わせでもよい。
【００２９】
《第２の実施形態》
本発明の第２の実施形態に係る組み込み用プログラム開発システム２は、図１に示す組み込み用プログラム開発システム２におけるシミュレーション部１４を利用する。
【００３０】
図４及び図５に示すような、ライブラリブロック（処理ブロック）のデータは、通常、静的な情報である。但し、ライブラリブロック（処理ブロック）が条件分岐を含む場合、条件の内容によりハードウエア資源数やサイクル数が変動することがある。そこで第２の実施形態に係る組み込み用プログラム開発システム２では、ＧＵＩ操作で各ライブラリブロック（処理ブロック）を繋ぎ合わせてプログラミングを行うとき、生成部４のシミュレーション部１４がライブラリブロックのシミュレーションによるトレースを行う。このことにより、ハードウエア資源数及びサイクル数を算出する。
【００３１】
（第２の実施形態における例）
図３に示すプロセッサにおいて、サイクル数を１０００サイクル以内に収める必要がある場合を想定する。プログラミングにおいては、図５に示すライブラリブロックＧの代わりにライブラリブロックＩが要求され、全体でライブラリブロックＥ、Ｆ、Ｈ、及びＩが必要であるとする（図５参照）。ライブラリブロックＩは、使用ラインメモリ数及びプログラム容量がライブラリブロックＧに等しいが、内部の条件分岐によりサイクル数が１００〜４００に変動する。
【００３２】
生成部４は、プログラミング時に、実サイクル数を求めるために、シミュレーション部１４によってライブラリブロックのシミュレーションによるトレースを行う。シミュレーション実行に当たっては、各ライブラリブロック実行時の実サイクル数も計測しておくことが望ましい。
【００３３】
そのシミュレータ実行結果、ライブラリブロックＩが、２００サイクルで収まるとする。そうすると、サイクル数の合計が９００サイクルとなり、この場合は複数のプロセッサにプログラムを分割する必要がなく、一つのプロセッサのみでプログラムを実行することが可能となる。
【００３４】
以上のようにして、静的なライブラリブロック内情報と、シミュレーション部の実行による動的なサイクル数計算とにより、必要なプロセッサ数を算出しつつソースプログラムを自動生成する。
【図面の簡単な説明】
【００３５】
【図１】本発明の第１の実施形態に係る組み込み用プログラム開発システムの全体のブロック図である。
【図２】本発明の第１の実施形態で用いるライブラリブロック内の情報テーブルのデータ項目の例である。
【図３】対象プロセッサ性能の例である。
【図４】ライブラリブロック（処理ブロック）のハードウエア資源の条件の例である。
【図５】ライブラリブロック（処理ブロック）のハードウエア資源の条件の例である。
【図６】１つのプロセッサで行うときのフローチャートの例である。
【図７】２つのプロセッサに分割されたフローチャートの例である。
【図８】２つのプロセッサに分割されたフローチャートの例である。
【符号の説明】
【００３６】
２・・・組み込み用プログラム開発システム、４・・・生成部、６・・・ブロックデータ部、８・・・情報テーブル部、１０・・・入力手段、１２・・・生成プログラム格納部、１４・・・シミュレーション部、１６・・・表示部。
【図１】
2007080049.tif 000003
【図２】
2007080049.tif 000004
【図３】
2007080049.tif 000005
【図４】
2007080049.tif 000006
【図５】
2007080049.tif 000007
【図６】
2007080049.tif 000008
【図７】
2007080049.tif 000009
【図８】
2007080049.tif 000010