(57)【要約】【課題】ソフトウェアおよびハードウェアの連携からなる情報処理システムの開発期間を短縮可能なプログラム生成システムを提供する。【解決手段】例えば、情報処理システムで複数のインスタンスＩＡ〜ＩＥを実行する際のスケジュールを決定するため、プログラム生成システムは、まず、最短繰り返し周期（ここでは３スロット）を持ち、その中でＩＡ〜ＩＥの実行スロット位置を様々に組み合わせた複数の単位スケジュール表１５０３を生成する。次いで、これらに対してインスタンス制約（リソースの競合確認）１６０３等といった動作条件チェック１６０２を行い、これを満足したスケジュール候補を対象に、レイテンシ、必要なメモリ容量、ピーク電力等を見積もった後に比較評価（１６０６）を行うことで最適なスケジュールを選定する（１６１２）。【選択図】図１５
2010250717.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムを用いたプログラム処理を用いて第１、第２、…、第Ｎインスタンスのそれぞれの起動タイミングを定めるプログラム生成システムであって、
ユーザによって入力された前記第１、第２、…、第Ｎインスタンス間の先行関係を保持する第１機能と、
前記第１、第２、…、第Ｎインスタンス毎の実行時間を見積もり、前記第１、第２、…、第Ｎインスタンス毎の実行時間を所定の単位時間で規格化し、前記第１、第２、…、第Ｎインスタンス毎にそれぞれ整数値となる第１、第２、…、第Ｎ規格化実行時間を算出する第２機能と、
前記第１、第２、…、第Ｎ規格化実行時間の中の最大値以上の値となる最短繰り返し周期を決定する第３機能と、
前記最短繰り返し周期の範囲内で前記第１、第２、…、第Ｎインスタンスの起動タイミングを定義し、前記第１、第２、…、第Ｎインスタンスの起動タイミングをそれぞれ前記単位時間の単位で変更しながら、それぞれ異なる起動タイミングの組み合わせを持つ複数のスケジュール候補を生成し、前記複数のスケジュール候補の中から特定のスケジュールを選定する第４機能とを有し、
前記第４機能は、前記特定のスケジュールを選定する際に、
前記第１、第２、…、第Ｎインスタンスのそれぞれに対応するリソースを認識し、評価対象となるスケジュール候補内のあるタイミングにおいてリソースの競合が有る場合に当該スケジュール候補を候補から除外し、残ったスケジュール候補を対象とし、前記最短繰り返し周期の範囲内での前記第１、第２、…、第Ｎインスタンスの起動時期を前記第１、第２、…、第Ｎインスタンス夫々が動作している定常状態での起動タイミングとみなして前記第１、第２、…、第Ｎインスタンスの実行が規則的に繰り返される場合を想定し、前記第１機能による前記先行関係を満足するように前記第１、第２、…、第Ｎインスタンスの起動タイミングを定める第１評価と、
前記第１評価によって前記先行関係を満足する起動タイミングが定められたスケジュール候補を対象として、それぞれの性能値を算出し、これらを比較することで特定のスケジュールを選定する第２評価とを行うことを特徴とするプログラム生成システム。
【請求項２】
請求項１記載のプログラム生成システムにおいて、
前記第３機能は、前記第１、第２、…、第Ｎインスタンスのそれぞれに対応するリソースを認識し、同じリソースを使用するインスタンスが無い場合には、前記第１、第２、…、第Ｎ規格化実行時間の中の最大値を前記最短繰り返し周期として規定し、同じリソースを使用するインスタンスが有る場合には、同じリソースを使用する複数のインスタンスの規格化実行時間の合計値を新たな規格化実行時間とし、それぞれの規格化実行時間の中の最大値を前記最短繰り返し周期として定めることを特徴とするプログラム生成システム。
【請求項３】
請求項２記載のプログラム生成システムにおいて、
前記第４機能は、前記第２評価において、前記第１、第２、…、第Ｎインスタンスを一回実行するのに要する規格化実行時間を前記性能値の一つとして算出することを特徴とするプログラム生成システム。
【請求項４】
請求項３記載のプログラム生成システムにおいて、
前記第４機能は、前記第２評価において、評価対象となるスケジュール候補で必要とされるメモリ容量を前記性能値の一つとして算出し、前記メモリ容量の算出に際しては、情報を出力するインスタンスの起動タイミングから当該出力情報を入力とするインスタンスの終了タイミングまでの期間で１面のメモリを確保するものとして、最大で何面のメモリが必要となるかを算出することを特徴とするプログラム生成システム。
【請求項５】
請求項３記載のプログラム生成システムにおいて、
前記第４機能は、前記第２評価において、前記単位時間毎の消費電力のばらつきを性能値の一つとして算出し、前記消費電力のばらつきの算出に際しては、一つのインスタンスにおける前記単位時間毎の消費電力が当該インスタンスに対応するリソースの回路規模に比例し、なおかつ当該インスタンスの規格化実行時間に反比例するものとして算出し、前記単位時間毎に、当該単位時間で実行しているインスタンスに基づいて消費電力を算出し、この算出した消費電力の平均値および分散を算出することを特徴とするプログラム生成システム。
【請求項６】
請求項２記載のプログラム生成システムにおいて、
前記第１機能で保持される前記第１、第２、…、第Ｎインスタンス間の先行関係では、他のインスタンスからの入力が無い始点となるインスタンス、または他のインスタンスへの出力が無い終点となるインスタンスのそれぞれが複数存在することを特徴とするプログラム生成システム。
【請求項７】
並行かつ連続して実行される複数の処理からなる処理群を対象に、前記複数の処理の実行スケジュールをコンピュータシステムを用いたプログラム処理によって定めるプログラム生成システムであって、
前記複数の処理のそれぞれの実行時間を近似的に整数値となるスロット長に換算する第１機能と、
所定のスロット長を備えた単位スケジュール表を生成し、前記単位スケジュール表の中に前記複数の処理の実行期間を配置すると共に、前記複数の処理が起動するスロット位置を様々に変更した複数のスケジュール候補を生成する第２機能と、
前記複数のスケジュール候補に対して複数の評価を行うことで特定のスケジュールを選定する第３機能とを有し、
前記単位スケジュール表は、前記処理群の実行状態が定常状態となっている場合において、前記複数の処理の時間軸上での実行期間を表すスケジュール表の中から最小の繰り返し単位を表すものであり、
前記第３機能は、前記複数の評価の一つとして、前記複数のスケジュール候補に対応する前記単位スケジュール表を繰り返すことで前記スケジュール表を作成し、前記スケジュール表に対して前記複数の処理間の入出力関係から得られる先行関係を反映させて前記処理群を１回実行するのに要する最短のスロット長を算出することを特徴とするプログラム生成システム。
【請求項８】
請求項７記載のプログラム生成システムにおいて、
前記単位スケジュール表が持つ所定のスロット長は、前記複数の処理の中で同じリソースを使用する処理が無い場合には、前記複数の処理のスロット長の中の最大値に定められ、同じリソースを使用する処理が有る場合には、同じリソースを使用する複数の処理のスロット長を新たなスロット長とし、それぞれのスロット長の中の最大値に定められることを特徴とするプログラム生成システム。
【請求項９】
請求項８記載のプログラム生成システムにおいて、
前記第３機能は、前記複数の評価の他の一つとして、前記複数の処理に伴う消費電力の１スロットにおける平均値と各スロット間での分散を算出し、この算出に際しては、一つのスロットにおける消費電力が当該スロットで実行される単数または複数の処理にそれぞれ対応したリソースの回路規模に比例するものとし、さらに、ある一つの処理が複数のスロットで実行される場合には、当該処理に対応するリソースの回路規模に基づく消費電力が複数のスロットに分散されるものとして算出することを特徴とするプログラム生成システム。
【請求項１０】
請求項９記載のプログラム生成システムにおいて、
前記第３機能は、前記複数の評価で得られたそれぞれの算出値に対してユーザの設定に基づいて適宜重み付けを行った後に演算することで一つの性能値を算出し、この性能値を前記複数のスケジュール候補の間で比較することで特定のスケジュールを選定することを特徴とするプログラム生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成システムに関し、特に、動画処理等を代表に、情報処理システム内の複数のリソースを用いて規則的な処理を実行するプログラムを生成する為のシステムに適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、特許文献１には、複数のモジュールで構成される電子システムを構築する際に、最適なモジュール実行順序を自動的に決定する方法が開示されている。具体的には、各モジュールにおけるＣＰＵとの並列動作可能性及び接続関係の情報をもとに複数のモジュール間の実行順序の組み合わせを導出し、各モジュールの実行処理時間及び復帰時間の情報をもとに前記導出された実行順序の各組み合わせで動作させたときの全体プログラムの実行時間を計算する。その結果、全体プログラム実行時間が最短になるモジュール実行順序の組み合わせを選択する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１８４２０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図３は、本発明の前提として検討した情報処理システムの開発方法の一例を示すフロー図である。図３の情報処理システム開発３０１では、ハード（ハードウェア）開発３０２の完了後、ドライバ・ミドル（デバイスドライバおよびミドルウェア）開発３０３が行われ、アプリケーション開発３０４が行われた後、性能評価３０５が行われる。アプリケーション開発３０４は、主に手作業で行われる。まず、プログラム開発者等が、機能選定３１０において、アプリケーションとして必要な機能を、ハードウェア、デバイスドライバ、ミドルウェアの仕様に従って選定する。次いで、アプリケーション制御モデルの準備３１１を行い、選定した機能を用いて動作フロー作成３１２を行った後、プログラムのコーディング３１３を行う。
【０００５】
ここで、仮に、性能評価３０５で問題が発生した場合には、その原因解析や対策に膨大な時間を要することになる。その主要因としては、アプリケーション開発３０４が手作業に基づくものであるため、その自由度が非常に大きく、それに要する期間や完成したプログラム性能が、プログラム開発者等の能力に大きく依存してしまうことが挙げられる。この場合、性能評価３０５で発生した問題が、本質的に、ソフトウェア上の問題なのか、あるいはハードウェアでの解決が必要な問題なのかの切り分けが困難となる。また、それを判断する際にも、ソフトウェア設計が手作業で行われている為、様々な設計データが多岐に存在し、それらを人手によって逐次見直す必要がある。そうすると、問題の原因を判断する際の根拠を見出すのが容易ではなく、原因解析に伴うトレーサビリティが悪くなる。さらに、仮に、ハードウェアでの解決が必要な問題となった場合には、ハード開発３０２にフィードバックを行った後に、再び図３のフローを辿ることになるため、多大な時間的損失を被る。
【０００６】
近年、組み込みシステム等においては多様化が進んでおり、短い期間で必要十分な性能を備えたシステムを開発することが益々重要となってきている。このような組み込みシステムを開発する際には、開発初期段階で、所望の要求仕様を満たすためのハードウェア仕様とソフトウェア仕様を早期に定めると共に、この連携によって得られるシステム性能を精度よく見積もることが重要となる。しかしながら、実際上は、前述したように、アプリケーション開発３０４によって得られるプログラム性能を予め精度よく反映させた上でシステム全体の性能を見積もることは容易ではない。特に、複数の並列処理を行うようなシステムでは、各処理のスケジューリングによって性能は大きく変わるため、それを如何に勘案できるかが問われる。
【０００７】
以上のようなことから、システム全体の性能を、短い期間で精度よく見積もる技術が求められる。こうした中、例えば、特許文献１の技術を応用して、システム全体の性能を見積もることが考えられる。具体的には、特許文献１の技術を利用して最も効率のよいモジュール実行順序を決定できれば、それをプログラム性能とみなしてシステム全体の性能を見積もることができる。しかしながら、この技術は、複数の並列処理からなる処理系を一度だけ実行するようなシステムに対して有益なものとなっている。すなわち、この処理系を複数回連続して実行するようなシステムの場合には、必ずしも最適なプログラム性能（言い換えれば高精度なシステム性能の見積もり）が得られるとは限らず、また、この処理系の他に更に別の処理系が加わったようなシステムの場合には、当該技術を利用することができなくなる。
【０００８】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、ソフトウェアおよびハードウェアの連携からなる情報処理システムを構築する際に、当該システムの開発期間を短縮可能にするプログラム生成システムを提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【００１０】
本実施の形態によるプログラム生成システムは、コンピュータシステムによるプログラム処理を用いて次のような処理を行うことで、複数のインスタンスが連続して規則的な処理を行う場合のスケジューリングを行うものとなっている。すなわち、プログラム生成システムは、まず、ユーザからＧＵＩ等を介して各インスタンスの先行関係等を表すインスタンスフローが入力されると、各インスタンスに対応するリソースを参照して各インスタンス毎の実行時間を概算し、これらをスロット長に規格化（実行時間を別途算出した単位時間（スロット）の数：スロット長で定義する処理）する。次いで、このインスタンス毎のスロット長から最短繰り返し周期を定め、この最短繰り返し周期の中で、各インスタンスの起動スロット位置を変えた複数のスケジュール候補を生成する。続いて、この複数のスケジュール候補の中から、各スロットにおけるリソースの競合等により動作不可能なスケジュール候補を早期に排除し、残ったスケジュール候補に対して様々な観点から評価を行い、最適なスケジュールを選定する。
【００１１】
この評価に際し、プログラム生成システムは、例えば、最短繰り返し周期内の各インスタンスの実行状態を定常状態（パイプライン起動時若しくは終了時の全インスタンスが動作していない状態を非定常状態とした場合、パイプライン起動後で全てのインスタンスが動作している状態を定常状態とする）における最短の繰り返し単位とみなすことで定常状態でのスケジュールを想定する。そして、この定常状態でのスケジュールに対して、前述したインスタンスフローの先行関係を加味してインスタンスフローを１回実行するのに要する最短のスロット長（レイテンシ）を算出し、このレイテンシを各スケジュール候補間で比較する。または、この定常状態でのスケジュールに対して、出力を行うインスタンスの起動からこの出力が入力されるインスタンスの終了までにメモリを１面確保するものとして、スケジュール全体で必要とされるメモリ面数を算出し、このメモリ面数を各スケジュール候補間で比較する。あるいは、各インスタンスに対応するリソースの回路規模や各インスタンスのスロット長に基づいて各スロット毎の消費電力を見積もり、その平均値および分散を算出し、この分散を各スケジュール候補間で比較する。
【００１２】
このようなプログラム生成システムを用いることで、自動処理によって最適なスケジュールを早期に得ることが可能となり、当該スケジュールの実際の動作元となる情報処理システムの開発期間を短縮可能になる。また、スケジュールの選定に際しては、自動処理によって様々な候補を様々な観点から評価しているため、選定されたスケジュールの性能自体も十分なものとなる。
【発明の効果】
【００１３】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、ソフトウェアおよびハードウェアの連携からなる情報処理システムの開発期間を短縮できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１によるプログラム生成システムにおいて、その概要と、情報処理システム開発内での適用先を示す説明図である。
【図２】本発明の実施の形態１によるプログラム生成システムにおいて、その概要と、情報処理システム開発内での適用先を示す説明図である。
【図３】本発明の前提として検討した情報処理システムの開発方法の一例を示すフロー図である。
【図４】本発明の実施の形態１によるプログラム生成システムにおいて、その処理内容の一例を示すフロー図である。
【図５】図４のアプリケーション開発において、その機能選定、プレ処理および動作モデル定義の詳細な処理内容の一例を示すフロー図である。
【図６】図５のプレ処理において、その入力処理の詳細な処理内容の一例を示す説明図である。
【図７】図５のプレ処理において、その実行時間計算の詳細な処理内容の一例を示す説明図である。
【図８】図４のアプリケーション開発において、最短繰り返し周期の算出と実行時間の規格化の詳細な処理内容の一例を示すフロー図である。
【図９】図８の最短繰り返し周期の算出と実行時間の規格化において、実行時間の規格化の詳細な処理内容の一例を示す説明図である。
【図１０】図８の最短繰り返し周期の算出と実行時間の規格化において、最短繰り返し周期の算出の詳細な処理内容の一例を示す説明図である。
【図１１】図４のアプリケーション開発において、スケジュール探索の入出力内容の一例を示す説明図である。
【図１２】図１１のスケジュール探索の対象として仮定するインスタンスフローの一例を示す説明図である。
【図１３】図１２のインスタンスフローに対してスケジュール探索を行う場合のその動作概要を示す説明図である。
【図１４】図１３のスケジュールを適用した情報処理システムの動作フローの一例を示す説明図である。
【図１５】図４のアプリケーション開発において、スケジュール探索の詳細な処理内容の一例を示すフロー図である。
【図１６】図１５のスケジュール探索において、スケジュール候補の生成の詳細内容を示す説明図である。
【図１７】図１５のスケジュール探索において、そのインスタンス制約の詳細内容を示す説明図である。
【図１８】図１５のスケジュール探索において、そのインスタンス制約の詳細内容を示す説明図である。
【図１９】（ａ）〜（ｄ）は、図１５のスケジュール探索において、そのレイテンシ計算の詳細内容を示す説明図である。
【図２０】図１５のスケジュール探索において、そのレイテンシ計算の詳細な動作例を示すフロー図である。
【図２１】図１５のスケジュール探索において、そのメモリ容量計算の概要を示す説明図である。
【図２２】図２１のインスタンスフローにおいて、そのメモリ計算方式の概要を示す説明図である。
【図２３】図１５のスケジュール探索において、そのメモリ容量計算の詳細な処理内容の一例を示すフロー図である。
【図２４】図１５のスケジュール探索において、そのピーク電力計算の概要を示す説明図である。
【図２５】図１５のスケジュール探索において、そのピーク電力計算の詳細な処理内容の一例を示すフロー図である。
【図２６】図１５のスケジュール探索において、そのバスモジュールストップ計算の概要を示す説明図である。
【図２７】図１５のスケジュール探索において、そのバスモジュールストップ計算の詳細な処理内容の一例を示すフロー図である。
【図２８】図１５のスケジュール探索において、その評価関数の処理内容を示す説明図である。
【図２９】図４のアプリケーション開発において、インスタンス個別の調整の詳細な処理内容の一例を示すフロー図である。
【図３０】（ａ）、（ｂ）は、本発明の実施の形態２によるプログラム生成システムにおいて、図４の機能選定で入力されるインスタンスフローの一例を示すものである。
【図３１】本発明の実施の形態３によるプログラム生成システムにおいて、図１５等のスケジュール探索内で行われるメモリ使用量の削減機能について説明する図である。
【図３２】図１５のスケジュール探索において、各インスタンスが定常状態となっている場合を示す説明図である。
【発明を実施するための形態】
【００１５】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１６】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
（実施の形態１）
図１および図２のそれぞれは、本発明の実施の形態１によるプログラム生成システムにおいて、その概要と、情報処理システム開発内での適用先を示す説明図である。図１の情報処理システム開発１０１は、図３の情報処理システム開発３０１と同様に、ハード（ハードウェア）開発３０２の完了後、ドライバ・ミドル（デバイスドライバおよびミドルウェア）開発３０３が行われ、アプリケーション開発３０４が行われた後、性能評価３０５が行われる。但し、図３の場合と異なり、別途、本実施の形態によるプログラム生成システムを用いて性能評価アプリケーション開発１１５ａを行い、その結果をハード開発３０２にフィードバックするフローとなっている。
【００１９】
性能評価アプリケーション開発１１５ａでは、詳細は後述するが、アプリケーション開発３０４の場合と同様に、順に、機能選定１１０、アプリケーション制御モデルの準備１１１、動作フロー作成（各機能のスケジュール）１１２、プログラムのコーディング１１３が行われる。その後、性能評価１１４の結果を受けて、ハード開発３０２にフィードバックが行われる。但し、アプリケーション開発３０４の場合と異なり、機能選定１１０では、プログラム開発者等が、予め設計資産（ＩＰ）等として備わっている機能（具体的にはインスタンス）を選定する。ここで、このインスタンスは、アプリケーションで実際に必要とされる機能を評価するのに十分な機能を備えたものであり、例えば、アプリケーションの主要な機能の一部を抜粋したようなものが挙げられる。この選定が行われると、プログラム生成システムが、アプリケーション制御モデルの準備１１１、動作フロー作成１１２、プログラムのコーディング１１３をほぼ自動的に行う。
【００２０】
プログラム生成システムは、この動作フロー作成１１２の際に、予め規定されたアプリケーション制御モデルに基づいて、インスタンスの実行順序を様々に組み合わせたスケジュールを広く探索し、その中で最も効率的なスケジュールを選定する。仮に、アプリケーション制御モデルの準備１１１や動作フロー作成１１２を手作業で行う場合、プログラム開発者の能力に応じて、作成されるスケジュールに違いが生じてしまうが、この部分をプログラム生成システムによって自動化することで、作成されるスケジュールはプログラム開発者によらず同一となる。また、実際上、手作業の場合よりも広い範囲でのスケジュール探索が行えるため、十分に妥当な探索結果を得ることができる。更に、スケジュールの探索過程を適宜ログとして残すこともできるため、仮に性能評価１１４によって問題が生じた際にもトレーサビリティが保てる。
【００２１】
このような性能評価アプリケーション開発１１５ａによって得られた結果は、ハード開発３０２にフィードバックされる。性能評価アプリケーション開発１１５ａでは、前述したように、コンピュータシステムによる自動処理を用いているため、非常に短い時間で情報処理システムの性能に関する仮の評価結果を得ることができる。したがって、性能が満たせないような場合には、早期にハード開発３０２にフィードバックすることができ（具体的にはソフトウェア処理をハードウェア処理に置き換える等）、結果的に、情報処理システム開発１０１に要する期間を短縮することが可能になる。
【００２２】
一方、図２の情報処理システム開発２０１は、図３の情報処理システム開発３０１と同様に、ハード（ハードウェア）開発３０２の完了後、ドライバ・ミドル（デバイスドライバおよびミドルウェア）開発３０３が行われ、アプリケーション開発１１５ｂが行われた後、性能評価３０５が行われる。但し、図３の場合と異なり、アプリケーション開発１１５ｂが本実施の形態によるプログラム生成システムを用いて行われ、それに対する性能評価３０５の結果がハード開発３０２にフィードバックされるフローとなっている。
【００２３】
アプリケーション開発１１５ｂでは、図１で述べた性能評価アプリケーション開発１１５ａと同様な処理が行われるが、機能選定１１０の内容が異なっている。図２のアプリケーション開発１１５ｂでは、性能評価用ではなく情報処理システムで実際に用いられるプログラムを生成する必要があるため、機能選定１１０の中で情報処理システムで必要な機能が全て盛り込まれる。仮に、この必要な機能を実現するインスタンスが設計資産として存在しない場合には、新規に作成する必要があるが、それを作成してしまえば、後は、そのインスタンスを含めた最適なスケジュールがプログラム生成システムによって自動生成される。これにより、アプリケーション開発１１５ｂの期間が短縮可能となり、仮にその後の性能評価３０５において問題が生じた場合にも、結果的に早期のフィードバックが可能となるため、情報処理システム開発２０１に要する期間を短縮可能になる。
【００２４】
図４は、本発明の実施の形態１によるプログラム生成システムにおいて、その処理内容の一例を示すフロー図である。図４に示すアプリケーション開発１１５は、前述した図１の性能評価アプリケーション開発１１５ａまたは図２のアプリケーション開発１１５ｂの詳細な処理内容を示すものである。ここでは、動画処理、音声処理等を代表に、繰り返し周期の定まった処理を実行するアプリケーションを開発する場合を例とする。
【００２５】
図４のアプリケーション開発１１５では、まず、機能選定１１０において、プログラム開発者等が、コンピュータシステム上のＧＵＩ（Graphical User Interface）等を用いて、必要な機能（インスタンス）や、それらの接続関係等を入力する。プログラム生成システムには、この入力を補助するための各種ツールが備わっている。機能選定１１０が行われると、プログラム生成システムは、コンピュータシステムによるプログラム処理を用いて、動作フロー作成１１２やポスト処理１１３を自動的に行う。プログラム生成システムは、この動作フロー作成１１２に伴い、アプリケーション（ＡＰ）制御モデル準備１１１を行うが、このＡＰ制御モデルは、プログラム生成システム自身のプログラムやデータとして予め実装されているものである。
【００２６】
動作フロー作成１１２では、まず、機能選定１１０の結果がプレ処理４０１に入力される。プレ処理４０１において、プログラム生成システムは、各インスタンスの接続情報等を纏め、ＡＰ制御モデルの一部となる動作モデル定義４１０を用いて各インスタンスの実行時間を計算する。次いで、最短繰り返し周期の算出と実行時間の規格化４０２において、各インスタンスの実行時間を規格化し、各インタンスを用いた処理を繰り返し行う際の最短繰り返し周期を求める。
【００２７】
続いて、スケジュール探索４０３において、プログラム生成システムは、各インスタンスの実行順序（起動時間）を様々に組み合わせたスケジュールを探索し、評価関数定義４１１に基づいて後述する第１評価および第２評価を行った後に最適なスケジュールを選定する。評価関数定義４１１には、例えば、リソース競合のチェックや、メモリ量および最小レイテンシといった動作コストなどをチェックするための各種条件が規定されている。その後、インスタンス個別の調整４０４において、個別モデル定義４１２に従って、この選定したスケジュールに対する実装上の調整を行い、その結果を受けたポスト処理１１３において、アプリケーションのプログラム（ソースコード）を自動生成する。以下においては、この図４に示した各処理の更なる詳細内容について説明する。
【００２８】
《１》プレ処理
図５は、図４のアプリケーション開発１１５において、その機能選定１１０、プレ処理４０１および動作モデル定義４１０の詳細な処理内容の一例を示すフロー図である。まず、機能選定１１０においては、プログラム生成システムが、各インスタンスをモデル化した部品を予め準備しており、ＧＵＩ入力によってそれらの接続を行える機能を提供している。プログラム開発者等は、この機能を用いて、アプリケーションを実現するのに必要なインスタンスを選定し、それらの依存関係等を考慮して各インスタンスの接続を行うと共に、場合によっては各インスタンスを実行する際に必要な動作パラメータの設定を行う。これを受けて、プログラム生成システムは、プレ処理４０１において、前述したＧＵＩ入力からの情報に対して入力処理５０１を行うことで、各インスタンスの動作パラメータを抽出し、各インタンス間の接続情報５０２を求める。続いて、実行時間計算５０３において、動作モデル定義４１０に基づいて各インスタンスの実行時間５０４を求める。
【００２９】
《１−１》入力処理
図６は、図５のプレ処理４０１において、その入力処理５０１の詳細な処理内容の一例を示す説明図である。入力処理５０１では、プログラム生成システムが、ＧＵＩ入力された各インスタンスの情報に対してｔｏｋｅｎ解析６０１を行うことでパラメータを抽出する。次いで、抽出したパラメータに対して、エラーチェック６０２を行った後、接続情報５０２を出力する。また、抽出したパラメータは、実行時間計算５０３にも渡される。接続情報５０２は、パラメータ記述、インスタンス名、入力ポート、出力ポートの構成となっている。なお、インスタンス構成の一例を６０３に、インスタンス間の接続関係の一例を６０４に示す。インスタンス構成６０３は、インスタンス名と、当該インスタンスに対応するリソースとなるコンポーネント名と、入力ポートと出力ポートから構成される。
【００３０】
《１−２》実行時間計算
図７は、図５のプレ処理４０１において、その実行時間計算５０３の詳細な処理内容の一例を示す説明図である。実行時間計算５０３では、プログラム生成システムが、入力処理５０１で抽出したパラメータに基づいて各インスタンス毎の実行時間計算７０１を行う。この際に、プログラム生成システムは、予め、インスタンス毎の動作モデル定義４１０を備えており、パラメータに加えてこの動作モデル定義４１０を用いて各インスタンスの実行時間５０４を計算する。
【００３１】
《１−２−１》動作モデル定義
動作モデル定義４１０では、各インスタンス毎の実行時間を計算する際の計算方法が規定されている。その計算方法の一例として、例えば、各インスタンス毎に、それ自体に要する処理時間（インスタンス処理時間）とバス転送時間とを比較して大きい方の値を実行時間（インスタンス実行時間）５０４とする方法が挙げられる。ここで、インスタンス処理時間Ｓは、動画処理を例とすると、画素量Ｐ（パラメータ）と１画素を処理するサイクル数Ｒｓ（パラメータ）によって、「Ｓ＝ｆ（Ｐ，Ｒｓ）」で求められる。一方、バス転送時間Ｂは、入力および出力のデータ量ＤｉおよびＤｏ（パラメータ）とバス転送レートＲｂ（パラメータ）によって、「Ｂ＝ｇ（Ｄｉ，Ｄｏ，Ｒｂ）」で求められる。そして、インスタンス実行時間５０４は、インスタンス処理時間Ｓとバス転送時間Ｂを比較して大きい方の値をとり、「Ｔ（実行時間５０４）＝ＭＡＸ（Ｓ，Ｂ）」で求められる。
【００３２】
なお、ここでは、ある一つのインスタンス（動画処理用）を例にその動作モデルの内容を説明したが、その他のインスタンスに対しても、同様にして、それぞれの処理内容に応じた個別の動作モデル定義４１０を行うことが可能である。実行時間計算５０３では、このような動作モデル定義４１０に基づいて、使用するインスタンス全てを対象としてそれぞれの実行時間５０４を算出する。
【００３３】
《２》最短繰り返し周期の算出と実行時間の規格化
図８は、図４のアプリケーション開発１１５において、最短繰り返し周期の算出と実行時間の規格化４０２の詳細な処理内容の一例を示すフロー図である。最短繰り返し周期の算出と実行時間の規格化４０２において、プログラム生成システムは、まず、接続情報５０２よりインスタンス名を取得し、前述した実行時間計算５０３によって得られた各インスタンス毎の実行時間５０４に対して実行時間の規格化８０１を行い、規格化実行時間８０３を得る。更に、この規格化実行時間８０３を用いて、最短繰り返し周期の算出８０２を行い、最短繰り返し周期８０４を求める。
【００３４】
《２−１》実行時間の規格化
図９は、図８の最短繰り返し周期の算出と実行時間の規格化４０２において、実行時間の規格化８０１の詳細な処理内容の一例を示す説明図である。
【００３５】
この実行時間の規格化は、各インスタンスの実行時間５０４を別途計算された単位時間９０３幾つ分であるか（すなわち単位時間９０３の数）で表す処理であり、その後に行うスケジュール探索４０３の計算時間を短縮（または計算を容易）にするために行われる。以下に、プログラム生成システムが行うその詳細な処理手順を示す。
【００３６】
［１］：各インスタンスの実行時間ｎＣｏｍｐＴｉｍｅ［μｓ］（実行時間５０４）から、次の手順で最適な解像度Ｑｏｕｔ［μｓ］を求める。
【００３７】
［１−１］：各実行時間５０４をある解像度Ｑで整数化し（すなわち除算し）、整数化切捨ての誤差（すなわち除余り）の絶対値ΔＱを求める（９０４，９０５）。
【００３８】
［１−２］：各インスタンス毎に求めたΔＱを累積合計し、累積誤差ＳｄＱを求める（９０６）。
【００３９】
［１−３］：［１−１］および［１−２］の処理を、前記解像度Ｑを最小１［μｓ］から最大（インスタンス実行時間の最大値）の間で任意のステップで変化させ、全ての場合について累積誤差ＳｄＱ［Ｑ］を計算する。なお、ステップ数は、整数とする。
【００４０】
［１−４］：全ての累積誤差を比較して最小値となる場合のＱを出力解像度Ｑｏｕｔとする（９０７）。
【００４１】
［１−５］：［１−４］において、出力解像度Ｑｏｕｔがあまりにも小さいとスケジュール探索４０３の計算時間が膨大となる恐れがある。そのため、累積誤差ＳｄＱ［Ｑ］を許容値ＡＣＣＥＰＴを用いて、「ＳｄＱ＿ａｃｐ［Ｑ］＝ＳｄＱ［Ｑ］／ＡＣＣＥＰＴ×ＡＣＣＥＰＴ」となるように量子化する。量子化した累積誤差ＳｄＱ＿ａｃｐ［Ｑ］を比較して最小値を出力解像度Ｑｏｕｔ（単位時間９０３）とする。この場合のＱｏｕｔは、［１−４］の場合のＱｏｕｔに比べて実際の実行時間ｎＣｏｍｐＴｉｍｅからの誤差は大きくなるがスケジュール探索４０３の計算時間が短くてすむ。そのため、例えば、コンパイラ実行時間が収束しないような場合に使用する。なお、ＮＣｏｍｐＴｉｍｅとの誤差は量子化誤差としてログ出力する。
【００４２】
［１−６］：場合によっては、実デバイス動作の都合により微調整を行う。例えば、カメラインスタンスの場合、出力解像度Ｑｏｕｔが、カメラインスタンスの実行時間のＮ分割になっていない場合、Ｎ分割の値を求める。
【００４３】
［２］：出力解像度Ｑｏｕｔで、実行時間ｎＣｏｍｐＴｉｍｅを割り、スケジュール毎にスロット長ｓｌｏｔｌｅｎｇｔｈ［ｎｕｍｂｅｒ］を求める。このスロット長が、規格化実行時間８０３となる（９０８）。
【００４４】
［３］：スロット長ｓｌｏｔｌｅｎｇｔｈ［ｎｕｍｂｅｒ］（規格化実行時間８０３）と出力解像度Ｑｏｕｔ（単位時間９０３）を結果として出力する。
【００４５】
《２−２》最短繰り返し周期の算出
図１０は、図８の最短繰り返し周期の算出と実行時間の規格化４０２において、最短繰り返し周期の算出８０２の詳細な処理内容の一例を示す説明図である。ここでは、前述した接続情報５０２が図１０のインスタンスフロー１００１を示しているものとして、その最短繰り返し周期ｍｉｎ＿Ｔの算出方法を説明する。各インスタンスの実行時間よりも短い時間を繰り返し周期とした場合、繰り返し周期内で実行が終了しないインスタンスが発生する。そのため、繰り返し周期は、各インスタンスの規格化実行時間８０３のうち１番長い時間とする。ただし、この際には、計算方法１００２のように、インスタンスフロー１００１内に含まれる各インスタンスＩＡ〜ＩＥに対して、コンポーネント（リソース）の共有有無を確認する。共有が有る場合には、共有に関わるインスタンスの規格化実行時間８０３を加算したものを一つのインスタンスの規格化実行時間８０３とみなした上で、各インスタンスの規格化実行時間８０３の中から最大値を選択して最短繰り返し周期（ｍｉｎ＿Ｔ）８０４とする。
【００４６】
なお、最短繰り返し周期は、後述するように各インスタンスがパイプライン動作を行い、それが定常状態（パイプライン起動後で全てのインスタンスが動作している状態）となった場合の実効的なレイテンシを小さくする観点からは、可能な限り小さい方が望ましい。したがって、ここでは、最短繰り返し周期は、規格化実効時間８０３の最大値としているが、必ずしもこの最大値である必要はなく、最大値以上の値であればよい。すなわち、最短繰り返し周期が短いと、レイテンシを小さくできる反面、消費電力やピーク電力や必要とされるバスバンド幅等が大きくなるため、これらが重視される情報処理システムを対象とした場合、スケジュールの最適解が得られない場合がある。このような場合には、例えば、最短繰り返し周期を１スロットずつ延ばしながら、後述するスケジュール探索の処理を行う。
【００４７】
《３》スケジュール探索
《３−１》スケジュール探索の概要
図１１は、図４のアプリケーション開発１１５において、スケジュール探索４０３の入出力内容の一例を示す説明図である。スケジュール探索４０３では、プログラム生成システムが、これまでに説明した接続情報５０２、規格化実行時間８０３、および最短繰り返し周期８０４を用いて様々なスケジュール（各インスタンスの実行順序（起動時間））を探索し、その中から評価関数定義４１１に基づいて最適なスケジュールを選択する。以下においては、まず、スケジュール探索４０３の概要から説明を行う。
【００４８】
図１２は、図１１のスケジュール探索４０３の対象として仮定するインスタンスフローの一例を示す説明図である。このインスタンスフロー１２０１は、ＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥの５個のインスタンスをシーケンシャルに処理するフローとなっており、この情報自体は、接続情報５０２によって得られるものである。また、各インスタンスＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥの規格化実行時間８０３は、それぞれ、１，１，１，３，３であるものとする。さらに、各インスタンスは、コンポーネントの競合が無いものとし、この場合の最短繰り返し周期８０４は３となる。
【００４９】
図１３は、図１２のインスタンスフローに対してスケジュール探索４０３を行う場合のその動作概要を示す説明図である。図１３に示すように、スケジュール探索４０３では、最短繰り返し周期（ここでは３）の中で、開始点をスロット０時点として、各インスタンスの実行スロット位置を定めた単位スケジュール表１３０１が作成され、さらに、この単位スケジュール表１３０１を複数回繰り返したスケジュール表１３０２が作成される。ここで、単位スケジュール表１３０１では、コンポーネントの競合が無いこと等が条件とされ、スケジュール表１３０２では、図１２のフローに基づく各インスタンス間の先行関係（依存関係）を満足すること等が条件とされる。このような条件を満たしたものが実際に採り得るスケジュールであり、その中から評価関数定義４１１の条件に応じて例えばレイテンシが最も短いものなどが選択される。図１３の例では、レイテンシが９スロットとなるスケジュールが選択されている。
【００５０】
図１４は、図１３のスケジュールを適用した情報処理システムの動作フローの一例を示す説明図である。情報処理システムは、各リソース（コンポーネント）の並列動作（パイプライン動作）が可能なように構成されている。図１４に示すように、図１３のスケジュールを用いると、情報処理システムは、インスタンスＩＡの実行開始からインスタンスＩＥの実行終了までを９スロットのレイテンシで行うことができる。また、各インスタンスを最短繰り返し周期（３スロット）で起動することができ、パイプライン動作中の実効的なレイテンシを３スロットとすることができる。
【００５１】
《３−２》スケジュール探索の詳細
《３−２−１》スケジュール探索の詳細フロー
図１５は、図４のアプリケーション開発１１５において、スケジュール探索４０３の詳細な処理内容の一例を示すフロー図である。プログラム生成システムは、まず、接続情報５０２、規格化実行時間８０３および最短繰り返し周期８０４によりスケジュール候補の生成１５０４を行う。次いで、生成したスケジュール候補を、１個ずつ評価関数定義４１１に基づいて評価し、これらを再帰的に処理することで、スケジュール候補の中からも最適なスケジュールを選定する。
【００５２】
図１６は、図１５のスケジュール探索４０３において、スケジュール候補の生成１５０４の詳細内容を示す説明図である。ここでは、図１２のインスタンスフローに対してスケジュール候補の生成１５０４を行う場合を例として説明する。プログラム生成システムは、各インスタンスの実行順序の全ての組み合わせを探索対象としてスケジュール候補の生成を行う。すなわち、図１６に示すように、最短繰り返し周期の範囲内で探索木１５０１を作成し、各インスタンスの起動時間１５０２を得る。各インスタンスの起動時間１５０２は、単位スケジュール表１５０３と等価であり、各々１５０３の表を表現する。そして、インスタンス｛ＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥ｝の起動時間を（０，０，０，０，０）〜（２，２，２，２，２）の範囲に渡って順次変更しながら複数のスケジュール候補を生成する。
【００５３】
このようにして生成されたスケジュール候補は、図１５に示すように、１個ずつ評価関数定義４１１に基づいて評価される。まず、プログラム生成システムは、第１評価として、動作条件チェック１６０２を行う。動作条件チェック１６０２は、インスタンス制約（インスタンスの競合チェック）１６０３と、ピーク検証１６０４の２方法で、スケジュールを検討する。第１評価は、入力されたスケジュール候補が、そもそも動作可能か否かという基本的事項をチェックするものである。これにより、動作しないと判断されたスケジュールは廃棄される（１６０５）。廃棄された場合は、スケジュール候補の生成１５０４を介して新たなスケジュール候補が入力される。
【００５４】
一方、入力されたスケジュール候補が動作可能である場合、プログラム生成システムは、第２評価として、レイテンシ計算１６０７、メモリ容量計算１６０８、ピーク電力計算１６０９、バスモジュールストップ計算１６１０を行い、それらの結果を当該スケジュール候補の属性として保存する。そして、保存した計算結果を、評価関数定義４１１に定義している評価関数１６１１に基づいて評価する。このようにして、一つのスケジュール候補について第１評価ならびに第２評価を行った後は、再度、スケジュール候補の生成１５０４を介して新たなスケジュール候補が入力され、同様にして、第１評価ならびに第２評価が行われる。プログラム生成システムは、このような処理を繰り返しながら各スケジュール候補の評価関数１６１１を比較することで、最適なスケジュールの選定１６１２を行う。
【００５５】
以上のように、スケジュール探索４０３では、各インスタンスの全ての実行順序の組み合わせを対象として全探索を行うため、結果的に最適な解を得ることが可能となる。ここで、全探索に伴う計算時間の増加は、第１評価によって動作不可能なスケジュール候補を早期に排除することで低減される。また、第２評価では、メモリ容量、レイテンシ、ピーク電力、バス分散といった多角的な観点から性能値が評価されるため、ユーザの要求毎にそれぞれ最適となるスケジュールを選定することが可能となる。以下では、図１５に示したスケジュール探索４０３の更なる詳細について説明を行う。
【００５６】
《３−２−２》動作条件チェック（第１評価）の詳細
《３−２−２−１》インスタンス制約
図１７および図１８は、図１５のスケジュール探索４０３において、そのインスタンス制約１６０３の詳細内容を示す説明図である。図１７に示すように、各インスタンスは、同一のコンポーネントを利用する場合もある。プログラム生成システムは、このようなコンポーネントの競合を接続情報５０２によって検出し、インスタンス制約１６０３の処理を行う。インスタンス制約１６０３では、インスタンス起動時に利用衝突が発生するスケジュール候補が省かれる。図１８にインスタンス制約による利用衝突１８０１の例を示す。コンポーネントを共有するインスタンスが同一スロット内で実行される場合、スロット１８０２において衝突が発生する。プログラム生成システムは、衝突が発生したスケジュール候補を廃棄する。なお、詳細な処理手順は下記のようになる。
【００５７】
［１］：探索したスケジュール候補で使用するインスタンスごとのコンポーネント名を取得する。
【００５８】
［２］：各スロット毎に、同じコンポーネント（リソース）を競合して使用するインスタンスがあるか否かを検証する。
【００５９】
［３］：［２］でコンポーネントの競合が有れば、そのスケジュール候補を廃棄する。
【００６０】
［４］：［２］でコンポーネントの競合が無ければ、そのスケジュール候補を保存する。
【００６１】
《３−２−２−２》ピーク検証
ピーク検証１６０４では、スケジュール候補がバスのバンド幅を満足するか否かが検証され、データ転送量の保証が行われる。プログラム生成システムは、対象となるスケジュール候補を用いた場合の１秒あたりのデータ転送量がバスのバンド幅を満足するか否か判定を行う。満足しない場合には、当該スケジュール候補を動作不可能なスケジュール候補として省き、探索点数を減らす（枝刈り）。詳細な処理手順は下記のようになる。
【００６２】
［１］：探索したスケジュール候補で使用するインスタンスを列挙する。
【００６３】
［２］：列挙した各インスタンスのデータ転送量を、接続情報５０２内のパラメータから取得する。
【００６４】
［３］：バスバンド幅（Ｍｂｙｔｅｓ／ｓｅｃ）を、ハードウェア仕様等に基づき設定する。
【００６５】
［４］：各スロット毎に各インスタンスのデータ転送量（Ｍｂｙｔｅｓ／ｓ）の合計と、バスバンド幅とを比較し、各インスタンスのデータ転送量（Ｍｂｙｔｅｓ／ｓ）の合計＜バスバンド幅（Ｍｂｙｔｅｓ／ｓ）ならば動作可能とし、各インスタンスのデータ転送量（Ｍｂｙｔｅｓ／ｓ）の合計＞バスバンド幅（Ｍｂｙｔｅｓ／ｓ）ならば動作不可能とする。
【００６６】
［５］：［４］で動作可能なスケジュール候補は後のスケジュールの評価（第２評価）１６０６の対象とされ、動作不可能なスケジュール候補は廃棄される（１６０５）。
【００６７】
《３−２−３》スケジュールの評価（第２評価）の詳細
《３−２−３−１》レイテンシ計算
図１９（ａ）〜（ｄ）は、図１５のスケジュール探索４０３において、そのレイテンシ計算１６０７の詳細内容を示す説明図である。図１９では、図１５のスケジュール候補の生成１５０４で得られたそれぞれ異なるスケジュール候補の一例が示されている。図１９（ａ）、（ｂ）、（ｃ）、（ｄ）は、インスタンスＩＡ〜ＩＥの実行スロット位置が、それぞれ、（ＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥ）＝（０，０，０，０，０）、（１，２，０，０，０）、（１，２，０，１，２）、（０，１，２，０，０）の場合を示している。前述したスケジュール候補の生成１５０４で得られた単位スケジュール表１５０３は、定常状態（すなわち、図３２に示すように、パイプライン起動後で全てのインスタンスが動作している状態）となっているパイプライン動作の動作シーケンスの中から最小の繰り返し単位を抽出したものを示している。したがって、言い換えれば、実際のパイプライン動作は、この単位スケジュール表１５０３が時間軸方向に繰り返されることで行われることになる。
【００６８】
そこで、プログラム生成システムは、単位スケジュール表１５０３を複数回繰り返したスケジュール表を生成し、このスケジュール表に対して、図１２で述べたようなインスタンスフロー１２０１の先行関係を加味することでレイテンシを計算する。図２０は、図１５のスケジュール探索４０３において、そのレイテンシ計算１６０７の詳細な動作例を示すフロー図である。例えば、図１２のインスタンスフロー１２０１の場合には、ＩＡ→ＩＢ→ＩＣ→ＩＤ→ＩＥの順でインスタンスが実行されればよい。そこで、図１９の各スケジュール表に対して、例えば、図２０に示すような手順でレイテンシを計算する。
【００６９】
［１］：インスタンスフローを参照して、始点となるインスタンスおよび終点となるインスタンスを識別する（２００１）。始点となるインスタンスは、当該インスタンスに入力されるインスタンスが存在しないインスタンスであり、終点となるインスタンスは、当該インスタンスの出力を入力とするインスタンスが存在しないインスタンスである。そして、始点と終点を結ぶ単数または複数のインスタンス経路群を認識する。図１２および図１９の例では、ＩＡが始点、ＩＥが終点として認識され、ＩＡからＩＥに到る１本のインスタンス経路群が認識される。
【００７０】
［２］：［１］で認識されたインスタンス経路群の一つとなる第１インスタンス経路群を対象として、その始点となる第１インスタンスが配置されたスロットの一つを第１インスタンスの実行位置として定める（２００２）。図１２および図１９の例では、ＩＡの実行位置が定められる。その後、第１インスタンスを起点としてシリアル接続された各インスタンスの実行位置を、終点となるインスタンスに到達するまで逐次定めていく（２００３）。この際には、前段のインスタンスのスロット位置を基準として、その後側のスロットの中から後段のインスタンスが配置されているスロット位置を検索し、一番最初に検出されたスロット位置を後段のインスタンスの実行位置として定める。これによって、図１２および図１９の例では、ＩＢ，ＩＣ，ＩＤ，ＩＥの実行位置が逐次定められる。
【００７１】
［３］：［１］で認識されたインスタンス経路群が他にある場合には、当該第２インスタンス経路群を対象として、その始点となる第２インスタンスが配置されたスロットの一つを第２インスタンスの実行位置として定める（２００４，２００５）。この際には、第２インスタンスが配置されたスロット位置を探索し、一番最初に検出されたスロット位置を第２インスタンスの実行位置として定める。その後、第２インスタンスを起点としてシリアル接続された各インスタンスの実行位置を、［２］の処理と同様にして逐次定めていく（２００６）。この際に、仮に、第１インスタンス経路群に含まれるインスタンスと重複する場合（例えば、あるインスタンスに対して第１インスタンスを起点とする入力と第２インスタンスを起点とする入力があるような場合）には、この重複するインスタンスの実行位置は変えないものとする。ただし、この重複するインスタンスの実行位置では、第２インスタンス経路群において先行関係を満たせないような場合には、第１インスタンス経路群内でこの重複するインスタンスを含めて後段に位置する各インスタンスの実行位置を、第２インスタンス経路群で先行関係を満たせるまで最短繰り返し周期の単位で後側にシフトさせることで更新する。
【００７２】
［４］：［１］で認識されたインスタンス経路群が他にある場合には、当該第Ｎインスタンス経路群を対象として、その始点となる第Ｎインスタンスが配置されたスロットの一つを第Ｎインスタンスの実行位置として定める（２００４，２００５）。そして、この第Ｎインスタンスを起点としてシリアル接続された各インスタンスを対象に、それらの実行位置を［３］の処理と同様にして逐次定めていく（２００６）。この際に、前述した重複するインスタンスは、第１および第２インスタンス経路群に含まれるインスタンスが対象となる。以降同様にして、［１］で認識された全てのインスタンス経路群の実行位置が定まるまで処理を繰り返す。
【００７３】
［５］：第１インスタンスの実行開始のスロット位置から、終点となるインスタンスが実行を終了するスロット位置の内の最も遅いスロット位置までの期間をレイテンシとする（２００７）。
【００７４】
このような処理を行った結果、図１９（ａ）、（ｂ）、（ｃ）、（ｄ）に示す各スケジュール表のレイテンシは、それぞれ、１５スロット、１１スロット、１０スロット、９スロットとなる。この場合、レイテンシの点からは図１９（ｄ）に示すスケジュールが最適となる。なお、図１２のインスタンスフロー１２０１では、各インスタンスＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥにリソース競合が無いものとしたが、仮にＩＡとＩＢにリソース競合が有るような場合、図１９（ａ）のスケジュール表は、図１５のインスタンス制約１６０３によって前もって廃棄されることになる。また、ここでは、１個の始点と１個の終点からなる１本のインスタンス経路群しか無い場合を例としたが、これらが複数ある場合でも前述した処理手順によってレイテンシを定めることができる。また、レイテンシを定める処理手順は、前述した処理手順に限られるものではなく、公知の処理手順に代替えすることも可能である。
【００７５】
《３−２−３−２》メモリ容量計算
図２１は、図１５のスケジュール探索４０３において、そのメモリ容量計算１６０８の概要を示す説明図である。メモリ容量計算１６０８では、プログラム生成システムが、動作可能なスケジュール候補毎に各コンポーネント間で必要とされるバッファ容量を計算する。この際に、動作が重なる期間を計算してメモリ必要面数を求める。例えば、図２１のインスタンスフロー２１０１においては、親のインスタンスの実行開始から子のインスタンスの実行終了までメモリを１面確保する必要があるため、インスタンスＩ１とＩ２、Ｉ２とＩ３を結ぶ枝に、それぞれメモリ２１０２，２１０３が必要となる。
【００７６】
図２２は、図２１のインスタンスフローにおいて、そのメモリ計算方式の概要を示す説明図である。図２２に示すメモリ計算方式２２０１において、インスタンスＩ１とＩ２間のメモリ２１０２に注目すると、まず、Ｉ１はＳｌｏｔ１〜４で動作し、Ｉ２はＳｌｏｔ５，６で動作する。したがって、Ｉ１とＩ２間のメモリ確保期間２１０２ａは、インスタンスＩ１が出力を行い、その出力データを使用してインスタンスＩ２の処理が終了するＳｌｏｔ１〜６となる。更に、Ｓｌｏｔ５では、２度目のインスタンスＩ１の起動が行われる。これに伴い、Ｉ１とＩ２間のメモリ確保期間２１０２ｂは、インスタンスＩ１が出力を行い、その出力データを使用してインスタンスＩ２の処理が終了するＳｌｏｔ５〜１０となる。したがって、Ｓｌｏｔ５，６では、メモリ２１０２のメモリ確保期間２１０２ａ，２１０２ｂが二重に重なるため、メモリ２１０２で必要なメモリ面数は２面となる。一方、Ｉ２とＩ３間のメモリ２１０３は、図２２に示すように１面でよい。これらの結果、必要とされるメモリ面数は、その最大値をとって２面となる。
【００７７】
このように、評価対象となっているスケジュール候補に対応するスケジュール表やインスタンスフローを用いることで、各インスタンス間で必要なメモリ面数を算出することが可能となる。図２３は、図１５のスケジュール探索４０３において、そのメモリ容量計算１６０８の詳細な処理内容の一例を示すフロー図である。図２２で説明したメモリ計算方式は、具体的には、例えば、図２３に示すような計算手順で行われる。
【００７８】
［１］メモリ領域の設定（２３０１）
スケジュール表を参照して、出力を行うインスタンスと当該出力を入力とするインスタンスの間にそれぞれメモリ領域を設定する。
【００７９】
［２］メモリ領域の確保期間の検証（２３０２）
スケジュール表において、インスタンスの始点から終点までの処理を２回繰り返すまでの範囲（レイテンシに最短繰り返し周期を加えたスロット長）を検証範囲とする。当該検証範囲において、各メモリ領域毎に、対応する出力側のインスタンスの起動スロットから入力側のインスタンスの終了スロットまでの間でメモリ領域を確保するものとし、このメモリ領域の確保期間の重なり有無を検証する。必要なメモリ面数は、重なりが無い場合には１面とし、二重、三重、…の重なりがある場合にはそれぞれ２面、３面、…とする。
【００８０】
［３］メモリ領域の確保期間の検証（２３０３）
各メモリ領域毎のメモリ面数の内の最大値を必要とされるメモリ容量とする。
【００８１】
《３−２−３−３》ピーク電力計算
図２４は、図１５のスケジュール探索４０３において、そのピーク電力計算１６０９の概要を示す説明図である。ピーク電力計算１６０９では、各スロット毎にインスタンスの動作に伴う消費電力が算出され、これらの消費電力の各スロット間での分散値が算出される。分散値が小さいスケジュール候補では、消費電力が平均化されていることになる。
【００８２】
図２４の例において、まず、各スロット毎の消費電力を求める。この際に、あるインスタンスの処理に伴う消費電力は、当該インスタンスに対応するコンポーネントの回路規模に比例するものとみなす。さらに、ここでは、各スロットにおけるコンポーネントの活性化率が、インスタンスの処理の長さに反比例するものとみなし、例えば、あるインスタンスが２スロットかけて所定の処理を行う場合、コンポーネントの回路規模に応じた消費電力が、２スロットに分割されるものとする。そうすると、図２４の例において、各インスタンスＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥに対応する各コンポーネントの回路規模をＷ［Ａ］，Ｗ［Ｂ］，Ｗ［Ｃ］，Ｗ［Ｄ］，Ｗ［Ｅ］とすると、例えば、Ｓｌｏｔ［０］の消費電力は、Ｗ［Ａ］＋Ｗ［Ｂ］／２となり、Ｓｌｏｔ［１］の消費電力は、Ｗ［Ｂ］／２＋Ｗ［Ｃ］となる。
【００８３】
図２５は、図１５のスケジュール探索４０３において、そのピーク電力計算１６０９の詳細な処理内容の一例を示すフロー図である。図２５に示すピーク電力計算１６０９の処理フローでは、まず、評価対象となっているスケジュール候補に対応する単位スケジュール表（図１５の１５０３）から、スロット［ｎ］毎の消費電力Ｐ［ｎ］を求める（２５０１，２５０２）。図２４の単位スケジュール表２４０１の例では、Ｐ［０］＝Ｗ［Ａ］＋Ｗ［Ｂ］／２、Ｐ［１］＝Ｗ［Ｂ］／２＋Ｗ［Ｃ］、Ｐ［２］＝Ｗ［Ｄ］、Ｐ［３］＝Ｗ［Ｅ］となる。
【００８４】
次いで、１スロットの平均を求める（２５０３）。図２４の例では、平均ｍ＝（Ｐ［０］＋Ｐ［１］＋Ｐ［２］＋Ｐ［３］）／４となる。続いて、各スロットの分散を求める（２５０４）。図２４の例では、分散σ２＝｛（Ｐ［０］−ｍ）２＋（Ｐ［１］−ｍ）２＋（Ｐ［２］−ｍ）２＋（Ｐ［３］−ｍ）２｝／４となる。このようにして、各スケジュール候補毎に、対応する単位スケジュール表から平均ｍおよび分散σ２を求め、ピーク電力の観点から分散が最も小さいスケジュール候補を最適なスケジュールとする。
【００８５】
《３−２−３−４》バスモジュールストップ計算
図２６は、図１５のスケジュール探索４０３において、そのバスモジュールストップ計算１６１０の概要を示す説明図である。バスモジュールストップとは、インスタンスを集中して動作させ、バスを開放する（すなわち空きスロットを増やす）ことで、動作の効率化を図る指標である。この指標で評価することにより、バスシステムの消費電力の低減効果が図れる。図２６に示す単位スケジュール表２６０１の例では、Ｓｌｏｔ［２］とＳｌｏｔ［３］が空いており、当該スロットにおいてバスを開放することができる。すなわち、バスモジュールストップは、インスタンスが動作していないスロットの合計となり、この値が大きい方が消費電力に対して有利となる。なお、バスモジュールストップ計算１６１０は、前述したピーク電力計算１６０９とは対立する概念であるため、互いに排他的に評価する必要がある。また、バスモジュールストップ計算１６１０は、最短繰り返し周期が各インスタンスの規格化実行時間の最大値である場合には、結果は全てゼロとなるため意味が無く、図１０で述べたように、最短繰り返し周期を延ばした場合に意味がある。
【００８６】
図２７は、図１５のスケジュール探索４０３において、そのバスモジュールストップ計算１６１０の詳細な処理内容の一例を示すフロー図である。図２７に示すバスモジュールストップ計算１６１０のフローにおいて、プログラム生成システムは、まず、評価対象となっているスケジュール候補に対応した単位スケジュール表を参照し（２７０１）、インスタンスが全く配置されていないスロットの数をカウントし、それをバスモジュールストップの計算値とする（２７０２）。
【００８７】
《３−２−３−５》評価関数
図２８は、図１５のスケジュール探索４０３において、その評価関数１６１１の処理内容を示す説明図である。図２８に示すように、プログラム生成システムは、予めユーザによって設定された最適化条件（Ｃｌ，Ｃｍ，Ｃｐ，Ｃｓ）に基づいて評価関数を計算し（１６１１，２８０３）、評価関数値δを求める（２８０２）。Ｃｌ、Ｃｍ、Ｃｐ、Ｃｓは、それぞれ、前述したレイテンシ計算１６０７、メモリ容量計算１６０８、ピーク電力計算１６０９、バスモジュールストップ計算１６１０に対応するユーザ指定の設定値である。前述したレイテンシ計算１６０７、メモリ容量計算１６０８、ピーク電力計算１６０９、バスモジュールストップ計算１６１０のそれぞれの計算値をδｌ、δｍ、δｐ、δｓとすると、評価関数値δは、式（１）で与えられる。
δ＝δｌ・Ｃｌ＋δｍ・Ｃｍ＋δｐ・Ｃｐ＋δｓ・Ｃｓ      （１）
例えば、最適化条件（Ｃｌ，Ｃｍ，Ｃｐ，Ｃｓ）＝（０，０，１，０）の場合は、評価関数値δはδｐとなり、プログラム生成システムは、ピーク電力の観点から最適なスケジュール候補を選定することになる。この選定の際に、プログラム生成システムは、各スケジュール候補毎に評価関数値δを算出し、それを当該スケジュール候補の属性として保存し、最後に各スケジュール候補毎の評価関数値δを比較することで最適なスケジュールを選定する。あるいは、各スケジュール候補毎に評価関数値δを算出しながら、より高性能なスケジュール候補およびその評価関数値δのみを上書き更新していくことで、最後に残ったスケジュール候補を最適なスケジュールとして選定する。
【００８８】
なお、式（１）において、各計算値δｌ，δｍ，δｐ，δｓは、それぞれ、前述した説明から判るように次のようなことを意味する。δｌは、大きい程スケジュール実行時間が長くなる反面、動作の安全性は高くなり、小さい程スケジュール実行時間が短くなる反面、動作の安全性は低くなる。δｍは、大きい程必要なメモリが増大し、小さい程必要なメモリが削減できる。δｐは、大きい程大きなピーク電力が生じる可能性が高く、小さい程大きなピーク電力が生じる可能性が低い。δｓは、大きい程消費電力の低減が図れ、小さい程消費電力の増大の恐れがある。このように、各計算値毎に、それぞれ意味合いが異なるが、例えば、最適化条件Ｃｌ，Ｃｍ，Ｃｐ，Ｃｓによって符号も含めて適当な重み付けを行うことで、複数の観点から最適なスケジュール候補を選定することも可能である。
【００８９】
《４》インスタンス個別の調整
図２９は、図４のアプリケーション開発１１５において、インスタンス個別の調整４０４の詳細な処理内容の一例を示すフロー図である。インスタンス個別の調整４０４では、プログラム生成システムが、前述したスケジュール探索４０３によって選定したスケジュールに対して、実際のデバイスで動作させるためのハードウェア固有の調整を行う。図２９に示すインスタンス個別の調整４０４の処理フロー２９０１では、カメラインスタンスを含んだプログラムを生成する場合を例とし、カメラインスタンスを基準に他のインスタンスのタイミングを合わせ込む処理（２９０２，２９０３）や、メモリ面数の追加処理（２９０４，２９０５）などが行われる。このような調整を行うことで、実デバイスの安定動作を図る。なお、このような調整は、必要に応じて行われるものであり、必須のものではない。
【００９０】
《５》ポスト処理
図４のアプリケーション開発１１５におけるポスト処理１１３では、プログラム生成システムが、インスタンス個別の調整４０４の終了したスケジュールから動作タイミングおよび必要メモリ面数を受け取り、標準ＡＰＩ（例えばＯｐｅｎＭＡＸ  ＡＰＩ等）に自動変換する。これによってプログラムの自動生成が完了する。
【００９１】
以上のように、本実施の形態１によるプログラム生成システムは、概略的には次のような動作を行う。まず、ユーザからＧＵＩ等を介して各インスタンスの先行関係等を表すインスタンスフローが入力されると、各インスタンスに対応するコンポーネントを参照し、各インスタンス毎の実行時間を概算する。次いで、このインスタンス毎の実行時間から最短繰り返し周期を定め、この最短繰り返し周期の中で、各インスタンスの実行スロット位置を変えた複数のスケジュール候補を生成する。続いて、この複数のスケジュール候補の中から、コンポーネントの競合等により動作不可能なスケジュール候補を早期に排除し、残ったスケジュール候補に対して評価関数を用いて様々な観点から評価を行い、最適なスケジュールを選定する。そして、この選定したスケジュールに基づいてプログラムを自動生成する。このようなプログラム生成システムを用いることで、代表的には、次のような効果が得られる。
【００９２】
（１）ソフトウェアおよびハードウェアの連携からなる情報処理システムの開発期間を短縮可能になる。言い換えれば、プログラム開発の効率化が図れる。より具体的には、第１に、ユーザによってインスタンスフロー等が入力されることで、それに対応するプログラムが自動的に生成されるため、殆ど人手を要することがない。第２に、プログラムの主要な構成要素となるスケジュールが分岐限定法によって探索されるため、その探索時間も短くて済む。第３に、仮に何らかの問題が生じたとしても、スケジュールの探索結果等の設計情報が記録として残されるため、トレーサビリティがよく、その対策を早期に行うことができる。
【００９３】
（２）高品質なプログラムを自動生成可能になる。より具体的には、第１に、スケジュール探索に際して、各インスタンスの起動時間の組み合わせを全探索するため、検討漏れ等が生じない。第２に、評価関数を用いることで、求められるシステム毎にそれぞれ最適となるプログラムを生成できる。第３に、プログラム開発者等の能力に殆ど依存せずに同一のプログラムが生成できるため、プログラム品質のばらつきを抑制できる。
【００９４】
（３）特に、各コンポーネントがパイプライン動作を行う情報処理システムを対象として、最適なプログラムを自動生成可能になる。すなわち、前述したように、スケジュール探索では、パイプライン動作が行われることを前提として、そのレイテンシやピーク電力等の評価が可能となっているため、このような情報処理システムにおいて特に有益な効果が得られる。
【００９５】
（実施の形態２）
前述した実施の形態１では、主に、図１２のようにインスタンスフローにおけるインスタンス経路群が１本である場合を例に説明を行ったが、インスタンス経路群が複数本ある場合でも、前述したスケジュール探索は適用可能である。本実施の形態２では、このようにインスタンス経路群が複数本ある場合について説明する。
【００９６】
図３０（ａ）、（ｂ）は、本発明の実施の形態２によるプログラム生成システムにおいて、図４の機能選定１１０で入力されるインスタンスフローの一例を示すものである。まず、図３０（ａ）に示すインスタンスフロー３００１は、インスタンスＩＡ〜ＩＥからなる第１インスタンス経路群と、インスタンスＩＦ〜ＩＨからなる第２インスタンス経路群を備えている。この２本の経路群は、一方の経路群内のインスタンスと他方の経路群内のインスタンスとの間に先行関係がなく、それぞれ独立した経路群となっている。また、ここでは、ＩＡとＩＦに先頭フラグが設定されている。先頭フラグが設定されたインスタンスは、その実行開始のスロット位置が同一に設定されるものとする。
【００９７】
このようなインスタンスフロー３００１の場合、この先頭フラグの条件が、図４のスケジュール探索４０３内の第１評価（図１５のインスタンス制約１６０３）に反映される。そうすると、図１５のスケジュール候補の生成１５０４で生成されたスケジュール候補の内、ＩＡとＩＦが異なるスロットに配置されているスケジュール候補は、この第１評価で早期に除外されることになる。また、図４の最短繰り返し周期の算出と実行時間の規格化４０２では、ＩＡ〜ＩＨにコンポーネントの競合が無いとすると、最短繰り返し周期は、ＩＡ〜ＩＨ内で最も時間を要するインスタンスの規格化実行時間（スロット長）となる。
【００９８】
最短繰り返し周期が定められると、実施の形態１の場合と同様にして、この最短繰り返し周期の中で各インスタンスの実行スロット位置を変えたスケジュール候補が生成され、各スケジュール候補に対して、前述した先頭フラグやコンポーネントの競合等を評価する第１評価が行われる。そして、第１評価を通過したスケジュール候補に対して、更に、レイテンシやピーク電力等を評価する第２評価が行われる。図１９および図２０等で述べたように、第２評価においては、各インスタンスの先行関係を加味してレイテンシ計算等が行われる。
【００９９】
一方、図３０（ｂ）に示すインスタンスフロー３００２は、インスタンスＩＡ〜ＩＥからなる第１インスタンス経路群と、インスタンスＩＡ〜ＩＤ，ＩＨからなる第２インスタンス経路群と、インスタンスＩＦ〜ＩＨからなる第３インスタンス経路群を備えている。第１および第２インスタンス経路群と第３インスタンス経路群との間には、ＩＨにおいて先行関係が発生している。このようなインスタンスフローに対して例えば図２０に示したような処理フローでレイテンシ計算を行う際には、まず、第１インスタンス経路群内の各インスタンスの実行スロット位置が定められ、次いで、第２インスタンス経路群内の各インスタンスの実行スロット位置が定められる。この第２インスタンス経路群に対する処理を行う際、ＩＡ〜ＩＤは、第１インスタンス経路群と重複するインスタンスであり、第１インスタンス経路群で定められたスロット位置がそのまま維持される。続いて、第３インスタンス経路群内の各インスタンスの実行スロット位置が定められる。この第３インスタンス経路群に対する処理を行う際、ＩＨは、第２インスタンス経路群と重複するインスタンスであり、第２インスタンス経路群で定められたスロット位置がそのまま維持される。ただし、仮に、ＩＦやＩＧの規格化実行時間が長く、第２インスタンス経路群で定められたＩＨの開始スロット位置がＩＧの終了スロット位置よりも前側となる場合には、先行関係を満たせるまでＩＨの開始スロット位置が最短繰り返し周期の単位で後側にシフトされ、そこが新たなスロット位置となる。
【０１００】
以上のように、本実施の形態によるプログラム生成システムを用いると、インスタンスフローにおけるインスタンス経路群が複数本ある場合でも最適なスケジューリングを行うことが可能となる。また、場合によっては、前述した先頭フラグの機能を追加することで、よりスケジュール探索に要する時間を削減可能になる。
【０１０１】
（実施の形態３）
本実施の形態３では、図１５や図２０等で述べたスケジュール探索４０３を用いて、メモリ容量計算１６０８の他にメモリ使用時間を考慮したスケジューリングが行われる例について説明する。図３１は、本発明の実施の形態３によるプログラム生成システムにおいて、図１５等のスケジュール探索４０３内で行われるメモリ使用量の削減機能について説明する図である。例えば、インスタンスＩＡ〜ＩＥからなるインスタンスフローにおいて、ＩＡ→ＩＢ→ＩＣからなる第１インスタンス経路群と、ＩＤ→ＩＥからなる第２インスタンス経路群があり、各インスタンスのスロット長が（ＩＡ，ＩＢ，ＩＣ，ＩＤ，ＩＥ）＝（３，１，２，１，２）であった場合を想定する。
【０１０２】
この場合、図３１のスケジュール表３１０１のように、第１インスタンス経路群のＩＡ〜ＩＣの実行スロット位置に依存してレイテンシ（この場合６スロット）が定められ、このレイテンシ内で第２インスタンス経路群のＩＤおよびＩＥの実行スロット位置は、複数の選択肢が存在することになる。どの選択肢を選んでも前述したメモリ容量計算１６０８でのメモリ面数には影響を与えない。しかしながら、スケジュール表３１０１のように、ＩＤの実行スロット位置をＳｌｏｔ［０］に、ＩＥの実行スロット位置をＳｌｏｔ［４］，［５］とすると、ＩＤとＩＥ間で必要とされるメモリの確保期間が長くなり、結果的にメモリ使用量が増大する恐れがある。そこで、スケジュール表３１０２のように、例えば、ＩＤの実行スロット位置をＳｌｏｔ［３］に、ＩＥの実行スロット位置をＳｌｏｔ［４］，［５］とすることが望ましい。例えば、図２０に示したようなスケジュール探索フローを用いると、ＩＤの実行スロット位置から最も近いＩＥのスロット位置がＩＥの実行スロット位置として定められるが、他のスケジュール探索フローを用いた場合には、複数の選択肢が提供される場合もある。このような場合には、スケジュール表３１０２に示したような選択を行うとよい。
【０１０３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０１０４】
前述した実施の形態では、本実施の形態によるプログラム生成システムを、画像処理システムや音声処理システム等を代表とする情報処理システム（組み込みシステム）向けのアプリケーション開発に適用した場合を例として説明を行ったが、勿論これに限定されるものではない。例えば、グループウェア、輸送、経営、金融、供給などのリソースを配分し計画または実行するシステム等で、複数のタスクからなるスケジュールを整理する場合がある。本実施の形態によるプログラム生成システム（具体的には、図１５で述べたようなスケジュール探索４０３の手法）を用いると、このようなスケジュールを最適化することができる。また、Ｗｅｂ、ネットワークシステム、ＯＳにおけるスケジュール管理手法としても適用可能である。さらに、複数のハードウェアからなる組み込みシステムではなく単一のハードウェアからなる装置に対しても適用可能である。例えば、ＣＰＵの命令実行、パイプライン動作の最適化、メモリのキャッシュ最適化、メモリ管理、通信系ハードウェア等でのデータ転送の最適化、ＣＰＵ，ＧＰＵ等で並列処理を行う場合などが挙げられる。
【産業上の利用可能性】
【０１０５】
本実施の形態によるプログラム生成システムは、特に、画像処理、音声処理等を代表に複数の処理を並列かつ規則的に行う情報処理システムにおいて、そのプログラムの自動生成手法として適用して有益なものであり、これに限らず、様々なプログラム作業全般に対して広く適用可能である。
【符号の説明】
【０１０６】
１０１，２０１，３０１  情報処理システム開発
１１０，３１０  機能選定
１１１，３１１  アプリケーション制御モデルの準備
１１２，３１２  動作フロー作成
１１３，３１３  コーディング
１１４，３０５  性能評価
１１５，１１５ａ，１１５ｂ，３０４  アプリケーション開発
３０２  ハード開発
３０３  ドライバ・ミドル開発
４０１  プレ処理
４０２  最短繰り返し周期の算出と実行時間の規格化
４０３  スケジュール探索
４０４  インスタンス個別の調整
４１０  動作モデル定義
４１１  評価関数定義
４１２  個別モデル定義
５０１  入力処理
５０２  接続情報
５０３  実行時間計算
５０４  実行時間
６０１  ｔｏｋｅｎ解析
６０２  エラーチェック
６０３  インスタンス構成
７０１  各インスタンス毎の実行時間計算
８０１  実行時間の規格化
８０２  最短繰り返し周期の算出
８０３  規格化実行時間
８０４  最短繰り返し周期
９０３  単位時間
１００１，１２０１，２１０１，３００１，３００２  インスタンスフロー
１３０１，１５０３，２４０１，２６０１  単位スケジュール表
１３０２，３１０１，３１０２  スケジュール表
１５０１  探索木
１５０２  インスタンスの起動時間
１５０４  スケジュール候補の生成
１６０２  動作条件チェック
１６０３  インスタンス制約
１６０４  ピーク検証
１６０６  スケジュールの評価
１６０７  レイテンシ計算
１６０８  メモリ容量計算
１６０９  ピーク電力計算
１６１０  バスモジュールストップ計算
１６１１  評価関数
２１０２，２１０３  メモリ
２２０１  メモリ計算方式
【図１】
2010250717.tif 000003
【図２】
2010250717.tif 000004
【図３】
2010250717.tif 000005
【図４】
2010250717.tif 000006
【図５】
2010250717.tif 000007
【図６】
2010250717.tif 000008
【図７】
2010250717.tif 000009
【図８】
2010250717.tif 000010
【図９】
2010250717.tif 000011
【図１０】
2010250717.tif 000012
【図１１】
2010250717.tif 000013
【図１２】
2010250717.tif 000014
【図１３】
2010250717.tif 000015
【図１４】
2010250717.tif 000016
【図１５】
2010250717.tif 000017
【図１６】
2010250717.tif 000018
【図１７】
2010250717.tif 000019
【図１８】
2010250717.tif 000020
【図１９】
2010250717.tif 000021
【図２０】
2010250717.tif 000022
【図２１】
2010250717.tif 000023
【図２２】
2010250717.tif 000024
【図２３】
2010250717.tif 000025
【図２４】
2010250717.tif 000026
【図２５】
2010250717.tif 000027
【図２６】
2010250717.tif 000028
【図２７】
2010250717.tif 000029
【図２８】
2010250717.tif 000030
【図２９】
2010250717.tif 000031
【図３０】
2010250717.tif 000032
【図３１】
2010250717.tif 000033
【図３２】
2010250717.tif 000034