(57)【特許請求の範囲】
【請求項１】
データフローグラフを記憶するＤＦＧ記憶手段と、
対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する依存配列記憶手段と、
前記データフローグラフ及び前記依存配列を取得し、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るスケジューリング可能性判定手段と
を具備する
スケジューリング可能性判定システム。
【請求項２】
請求項１に記載のスケジューリング可能性判定システムであって、
演算毎に離散時間制約の端点を構成する各演算からの遅延を計算して前記依存配列を生成し、前記依存配列を前記依存配列記憶手段に記憶する依存配列生成手段と、
既存の離散時間制約と前記データフローグラフとに基づいて、新規の離散時間制約を生成する離散時間制約生成手段と、
離散時間制約を連続時間制約に変換する時間制約連続化手段と
を更に具備し、
前記スケジューリング可能性判定手段は、前記連続時間制約に基づくスケジューリングの可能性を判定する
スケジューリング可能性判定システム。
【請求項３】
請求項２に記載のスケジューリング可能性判定システムであって、
前記離散時間制約生成手段は、前記依存配列生成手段により計算された遅延を加える際、離散時間の境界が演算間にある場合を考慮し、冗長な新規の離散時間制約の生成を抑制して記憶容量の節約と高速化を図る
スケジューリング可能性判定システム。
【請求項４】
請求項２又は３に記載のスケジューリング可能性判定システムであって、
前記離散時間制約生成手段は、離散時間制約の端点を構成する各演算の間の最短遅延を新規の離散時間制約に変換して、新規の離散時間制約の生成規則の簡素化、及び新規の離散時間制約の生成の高速化を図る
スケジューリング可能性判定システム。
【請求項５】
請求項１乃至４のいずれか一項に記載のスケジューリング可能性判定システムであって、
前記スケジューリング可能性判定手段は、前記依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加え、離散時間制約の端点を構成する各演算の依存配列の自分自身に対応する値を調べて正閉路検出の判定を行い、離散時間の境界が演算の間の遅延に影響がある場合のスケジューリングの可能性の判定を厳密化することを図る
スケジューリング可能性判定システム。
【請求項６】
請求項５に記載のスケジューリング可能性判定システムであって、
前記スケジューリング可能性判定手段は、正閉路検出のために、任意の時間制約の端点からの距離の計算の際に、離散時間制約を考慮しながら最短の遅延を計算し、離散時間を考慮したスケジューリングの可能性の判定を厳密化することを図る
スケジューリング可能性判定システム。
【請求項７】
データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、
前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップと
をコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【請求項８】
請求項７に記載のスケジューリング可能性判定プログラムであって、
演算毎に離散時間制約の端点を構成する各演算からの遅延を計算して前記依存配列を生成するステップと、
既存の離散時間制約と前記データフローグラフとに基づいて、新規の離散時間制約を生成するステップと、
離散時間制約を連続時間制約に変換するステップと、
前記連続時間制約に基づくスケジューリングの可能性を判定するステップと
を更にコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【請求項９】
請求項８に記載のスケジューリング可能性判定プログラムであって、
前記計算された遅延を加える際、離散時間の境界が演算間にある場合を考慮し、冗長な新規の離散時間制約の生成を抑制して記憶容量の節約と高速化を図るステップ
を更にコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【請求項１０】
請求項８又は９に記載のスケジューリング可能性判定プログラムであって、
離散時間制約の端点を構成する各演算の間の最短遅延を新規の離散時間制約に変換して、新規の離散時間制約の生成規則の簡素化、及び新規の離散時間制約の生成の高速化を図るステップ
を更にコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【請求項１１】
請求項７乃至１０のいずれか一項に記載のスケジューリング可能性判定プログラムであって、
前記依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加えるステップと、
離散時間制約の端点を構成する各演算の依存配列の自分自身に対応する値を調べて正閉路検出の判定を行い、離散時間の境界が演算の間の遅延に影響がある場合のスケジューリングの可能性の判定を厳密化することを図るステップと
を更にコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【請求項１２】
請求項１１に記載のスケジューリング可能性判定プログラムであって、
正閉路検出のために、任意の時間制約の端点からの距離の計算の際に、離散時間制約を考慮しながら最短の遅延を計算し、離散時間を考慮したスケジューリングの可能性の判定を厳密化することを図るステップ
を更にコンピュータに実行させるための
スケジューリング可能性判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スケジューリング可能性判定システムに関し、特に高位合成システムのスケジューリング可能性判定を行うスケジューリング可能性判定システムに関する。
【背景技術】
【０００２】
高位合成システムにおけるスケジューリングでは、演算同士のタイミングの制約が離散時間単位で表現される離散時間制約で指定されることが多く、演算間の遅延も途中で離散時間単位の境界が入るかどうかで大きく変化する。
【０００３】
離散時間制約によっては、データフローグラフをどのようにスケジュールしても時間制約を満たすことができないが、スケジューリングを何度も試みて失敗した後で、当該離散時間制約はスケジューリングが不能と判定するのは非常に時間がかかる。そこで、離散時間制約がある場合、データフローグラフがスケジューリング可能かどうか高速に判定するシステムが求められている。
【０００４】
これまでのスケジューリング可能性判定に関する技術では、連続時間制約のみを扱うことを目的としているため、離散時間制約を含むデータフローグラフに適用することが困難である。連続時間制約のみを扱う技術を、離散時間制約を含むデータフローグラフに単純に適用すると、実際にスケジューリングが不可能なのにスケジューリングが可能と誤判定されてしまうケースが多い。また、演算間に離散時間の境界があるかどうかで遅延が変化するような場合も同様の誤判定が増える。
【０００５】
図１は、離散時間制約を含むデータフローグラフのスケジューリング判定問題で、離散時間制約の連続時間制約化にまつわる問題を示すための簡単な例を示す図である。離散時間の単位は、ここでは１秒とする。
「演算ｎ２は演算ｎ１の１離散時間単位後にある」と「演算ｎ３は演算ｎ２の１離散時間単位後にある」という二つの条件から、演算ｎ３と演算ｎ１の離散時間単位で条件を考えると「演算ｎ３は演算ｎ１の２離散時間単位後にある」という条件になる。これを連続時間の条件に直すと「演算ｎ３は演算ｎ１の１秒後から３秒後までにある」となる。一方で、元々の条件それぞれを「演算ｎ２は演算ｎ１の０秒後から２秒後までにある」と「演算ｎ３は演算ｎ２の０秒後から２秒後までにある」という二つの連続時間の条件に変換して、この二つの条件を合わせると「演算ｎ３は演算ｎ１の０秒後から４秒後までにある」という条件になり緩く判定してしまう。
【０００６】
従来のスケジューリング可能性判定の手法は、連続時間で表現される制約が対象なので、このようにスケジューリング可能性を緩く判定してしまう可能性がある。
【０００７】
スケジューリング可能性判定システムの一例が、非特許文献１に記載されている。このスケジューリング可能性判定システムは、演算、演算同士の順序関係、及び演算同士の制約が連続的な時間で表現される連続時間制約で構成されるデータフローグラフに対して、データフローグラフと連続的な時間で表現される連続時間制約を、適当な変換を用いて対応する有向グラフに変換し、この有向グラフに対して正閉路検出を行うことでスケジューリング可能性判定を行う。
【０００８】
非特許文献２では、準同期式回路における最小のクロックを求めるための、クロックスケジューリング可能性判定において、遅延とクロック制約及び二重クロック制約を連続時間制約で表現した後、有向グラフへの変換を行い、負閉路検出を行うことで、スケジューリング可能性を判定している。
【０００９】
また、特開２００４−１６４６２７号公報（特許文献１）に高位合成方法が開示されている。
この関連技術では、結線の空間的な距離や混雑度を考慮しながらスケジューリングする方法について示唆している。この関連技術では、可能な限り資源を共有するように高位合成されたＣＤＦＧをレイアウトする。そして、それを初期解として、資源レベルレイアウト情報の資源間結線距離が長く、あるいは、マクロ領域内配線混雑度が高く設計制約を満たさない原因となっている共有された資源を別々の資源に再アロケーションして、レイアウト微修正を行う。
【００１０】
また、特開２００６−１２７３４６号公報（特許文献２）に高位合成方法およびシステムが開示されている。
この関連技術では、フォールスループをさけながらスケジューリングする方法について示唆している。この関連技術では、演算をステップに割り当てるスケジューリング時に、演算をそのステップに割り当てることによってループができるかを判別し、ループができる場合はそのステップに割り当てないことにより回路にループが生成されることを回避する。
【００１１】
また、特開平０５−３３４３９１号公報（特許文献３）に制御回路生成装置が開示されている。
この関連技術では、スケジューリングの際に、条件分岐で排他的に実行できるかどうかを高速に判定する方法について示唆している。この関連技術では、制御データフローグラフを制御データフローグラフ読み込み装置で読み込み、グラフ内の演算の実行条件を表すビット列を各演算に実行条件符号生成装置で付与し、制御データフローグラフのそれぞれの演算をスケジューリングするスケジューリング装置の出力に対し、制御シーケンス生成装置が制御回路を生成する。
【００１２】
【特許文献１】特開２００４−１６４６２７号公報
【特許文献２】特開２００６−１２７３４６号公報
【特許文献３】特開平０５−３３４３９１号公報
【非特許文献１】Ｄ．Ｋｕ  ａｎｄ  Ｇ．  Ｄｅ  Ｍｉｃｈｅｌｉ“Ｒｅｌａｔｉｖｅ  Ｓｃｈｅｄｕｌｉｎｇ  ｕｎｄｅｒ  Ｔｉｍｉｎｇ  Ｃｏｎｓｔｒａｉｎｔｓ”  ２７ｔｈ  ＡＣＭ／ＩＥＥＥ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ（１９９０）
【非特許文献２】石田勉、小平行秀、高橋篤司「負閉路探索手法の性能評価」情報処理学会研究報告  ２００６−ＡＬ−１０７（８）（２００６）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、離散時間制約を含むデータフローグラフにおいて、スケジューリング可能性を高速かつ厳密に判定できるシステムを提供することである。
【００１４】
本発明の他の目的として、離散時間の境界をまたぐかどうかで遅延が変化するようなデータフローグラフに対して、より厳密なスケジューリング可能性を判定するシステムを提供することである。
【課題を解決するための手段】
【００１５】
本発明のスケジューリング可能性判定システムは、データフローグラフを記憶するＤＦＧ記憶手段と、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する依存配列記憶手段と、前記データフローグラフ及び前記依存配列を取得し、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るスケジューリング可能性判定手段とを具備する。
【００１６】
本発明のスケジューリング可能性判定方法は、データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップとを含む。
【００１７】
本発明のスケジューリング可能性判定プログラムは、データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１８】
依存配列を用いることで依存する時間制約の端点を構成する任意の演算からの遅延を高速に計算することができる。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図２を参照すると、本実施形態のスケジューリング可能性判定システムは、依存配列生成部１０１と、離散時間制約生成部１０２と、時間制約連続化部１０３と、スケジューリング可能性判断部１０４と、スケジューリング部１０５と、ＤＦＧ（Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）記憶部１１１と、離散時間制約記憶部１１２と、連続時間制約記憶部１１３と、依存配列記憶部１２１と、新離散時間制約記憶部１２２と、新連続時間制約記憶部１２３と、スケジューリング済みＤＦＧ記憶部１３０を備える。
【００２０】
依存配列生成部１０１は、データフローグラフ（ＤＦＧ）に基づいて、時間制約の端点となる演算からの遅延を各演算について生成する。離散時間制約生成部１０２は、既存の離散制約と依存配列から新しい離散制約を生成する。時間制約連続化部１０３は、既存の離散時間制約と離散時間制約生成部１０２で生成された新規の離散時間制約と既存の連続時間制約からスケジューリング可能性判定用の連続時間制約を生成する。スケジューリング可能性判断部１０４は、時間制約連続化部１０３で生成されたスケジューリング可能性判定用の連続時間制約から、データフローグラフ（ＤＦＧ）のスケジューリングが可能かどうか判定する。スケジューリング部１０５は、データフローグラフ（ＤＦＧ）のスケジューリング可能性があった場合、データフローグラフ（ＤＦＧ）のスケジューリングを実行する。
【００２１】
ＤＦＧ記憶部１１１は、データフローグラフ（ＤＦＧ）を記憶し、演算と演算同士の依存関係と遅延を記憶する。離散時間制約記憶部１１２は、演算間の離散的な時間単位で表現された時間制約を記憶する。連続時間制約記憶部１１３は、演算間の連続的な時間単位で表現された時間制約を記憶する。依存配列記憶部１２１は、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する。離散時間制約記憶部１２２は、離散時間制約生成部１０２で生成された新規の離散時間制約を記憶する。新連続時間制約記憶部１２３は、スケジューリング可能性判定用の連続時間で表現された時間制約を記憶する。スケジューリング済みＤＦＧ記憶部１３０は、スケジューリング済みのデータフローグラフ（ＤＦＧ）を記憶する。
【００２２】
ここでは、スケジューリング可能性判定システムの例として、ＰＣ（パソコン）、シンクライアント／サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータを想定している。なお、スケジューリング可能性判定システムは、端末やサーバに限らず、中継装置や周辺機器でも良い。また、スケジューリング可能性判定システムは、コンピュータに搭載される拡張ボードやソフトウェアでも良い。但し、実際には、これらの例に限定されない。
【００２３】
依存配列生成部１０１、離散時間制約生成部１０２、時間制約連続化部１０３、スケジューリング可能性判断部１０４、スケジューリング部１０５の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）等の処理装置、又は同様の機能を有する半導体集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＩＣ））が考えられる。なお、依存配列生成部１０１、離散時間制約生成部１０２、時間制約連続化部１０３、スケジューリング可能性判断部１０４、スケジューリング部１０５は、各々の機能をコンピュータに実行させるためのプログラムでも良い。但し、実際には、これらの例に限定されない。
【００２４】
ＤＦＧ記憶部１１１、離散時間制約記憶部１１２、連続時間制約記憶部１１３、新離散時間制約記憶部１２２、新連続時間制約記憶部１２３、スケジューリング済みＤＦＧ記憶部１３０の例として、メモリ等の半導体記憶装置、ハードディスク等の外部記憶装置（ストレージ）、又は記憶媒体（メディア）等が考えられる。但し、実際には、これらの例に限定されない。
【００２５】
次に、本実施形態の全体の動作について詳細に説明する。
図２の依存配列生成部１０１は、演算及び演算の依存関係を設定したデータフローグラフ（ＤＦＧ）をＤＦＧ記憶部１１１から読み込み、依存配列を設定する。
【００２６】
但し、実際には、これらの例に限定されない。
【００２７】
図３Ａは、本実施形態において、図２の依存配列生成部１０１において、ＤＦＧ記憶部１１１から読み込んだデータフローグラフ（ＤＦＧ）から、依存配列を生成する際の処理を示すフローチャートである。
（１）ステップＳ１
最初に、依存配列生成部１０１は、データフローグラフ（ＤＦＧ）の中に、依存している演算の中に依存配列を設定していないものがなく、なおかつ依存配列を設定していないという条件を満たす演算があるか探索する。このとき、依存配列生成部１０１は、依存している演算がない演算も、探索する演算の条件を満たすものと判定する。
（２）ステップＳ２
依存配列生成部１０１は、条件を満たす演算があるか判定する。
（３）ステップＳ３
依存配列生成部１０１は、条件を満たす演算が見つかったら、依存する演算の依存配列に基づいて、演算の依存配列を設定する。
【００２８】
依存配列生成部１０１は、この探索と依存配列の設定を、条件を満たす演算がなくなるまで行う。
【００２９】
図３Ｂは、図３ＡのステップＳ２における依存している演算の依存配列から対象演算の依存配列を設定する際の処理を示したフローチャートである。
（１）ステップＳ２１
最初に、依存配列生成部１０１は、対象演算の依存配列を、未設定を表す値で初期化する。
（２）ステップＳ２２
依存配列生成部１０１は、対象演算が時間制約の端点となる演算であるか判定する。
（３）ステップＳ２３
依存配列生成部１０１は、対象演算が時間制約の端点となる演算であれば、対応する依存配列の位置の要素をゼロにする。
（４）ステップＳ２４
依存配列生成部１０１は、依存している演算があるか判定する。
（５）ステップＳ２５
次に、依存配列生成部１０１は、直接依存している各演算について、依存配列の要素の中に未設定で無いものがあるか判定する。
（６）ステップＳ２６
依存配列生成部１０１は、依存配列の要素の中に未設定で無いものがあったら、その要素に依存している演算と対象演算との間の遅延を加える。
（７）ステップＳ２７
依存配列生成部１０１は、遅延を加えた要素と対象演算の依存配列の要素とを比較する。
（８）ステップＳ２８
依存配列生成部１０１は、対象演算の依存配列の要素が未設定、若しくは小さかった場合は、対象演算の依存ベクトルをその値で更新する。
【００３０】
図３Ｃは、図３ＢのステップＳ２６において、直接依存する２つの演算の間に離散時間の境界があるかないかで遅延値が変わるときの遅延を加える際の処理を示すフローチャートである。
（１）ステップＳ２６１
依存配列生成部１０１は、対象演算の各依存配列の要素毎に、対象演算と直接依存する演算の間に離散時間の境界がないと仮定したときの遅延を加えた値を計算する。
（２）ステップＳ２６２
依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたぐか判定する。ここでは、依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入ったか判定する。
（３）ステップＳ２６３
依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたいだ場合、直接依存する演算の依存配列の要素と離散時間単位をまたいだときの遅延を加えた値を計算する。ここでは、依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入った場合、改めて直接依存する演算と対象演算の間に離散時間の境界が入ると仮定した場合の遅延を直接依存する演算の依存配列の要素に加えた値を計算する。
（４）ステップＳ２６４
更に、依存配列生成部１０１は、改めて計算された値を、遅延を加えた値とみなす。ここでは、依存配列生成部１０１は、ステップＳ２６３で改めて計算された値を、図３ＢのステップＳ２６の値として使用する。
（５）ステップＳ２６５
依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたいでいない場合、計算された値を、遅延を加えた値とみなす。ここでは、依存配列生成部１０１は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入らなかった場合、ステップＳ２６１で計算された値を、遅延を加えた値とみなして図３ＢのステップＳ２６の値として使用する。
【００３１】
図２の離散時間制約生成部１０２では、依存配列生成部１０１で生成した依存配列と、ＤＦＧ記憶部１１１に記憶する演算と演算の依存関係と遅延と、離散時間制約生成部１１２で記憶する離散時間制約から、新規の離散時間制約を生成し、冗長な離散時間制約を削除して、時間制約連続化部１０３で連続時間制約に変換するための離散時間制約を新離散時間制約記憶部１２２に記憶する。
【００３２】
図４は、図２の離散時間制約生成部１０２において、データフローグラフ（ＤＦＧ）から演算の依存配列を設定する例を示す図である。
【００３３】
図４（ａ）は、離散時間制約生成部１０２における処理の例を示すためのデータフローグラフ（ＤＦＧ）の例で、枝ｅ１から枝ｅ８までの８個の有向枝で示されるような依存関係がある演算ｎ１から演算ｎ８までの８個の演算があり、この演算の間に離散時間制約ｃ１から離散時間制約ｃ３の３つの離散時間制約がある。
【００３４】
図４（ｂ）は、依存関係を示す枝遅延情報テーブル２００と、時間制約の端点となる演算に番号付けを行なった時間制約端点演算情報テーブル２１０の例である。枝の終点は枝の始点の演算が終了しない限り演算を開始することができない。また、枝の始点の演算の実行時間を遅延として枝遅延情報テーブル２００に示している。時間制約端点演算情報テーブル２１０では、時間制約の端点となっている演算を重複なしに列挙している。この順番は遅延配列に値を格納する位置と対応する。
【００３５】
図３ＡのステップＳ１では、依存配列生成部１０１は、まだデータフローグラフ（ＤＦＧ）に依存配列が設定されている演算はないので、依存する演算がない演算Ａ（ｎ１）と演算Ｃ（ｎ２）のうち、どちらかを選ぶ。ここでは、依存配列生成部１０１は、演算Ａ（ｎ１）を選んだとする。
【００３６】
次に、依存配列生成部１０１は、演算Ａ（ｎ１）が依存する演算の依存配列を基に、演算Ａ（ｎ１）の依存配列を設定する（図３ＡのステップＳ２）。まず、依存配列生成部１０１は、演算Ａ（ｎ１）の依存配列の全ての要素を、未設定を表現するもので埋める（図３ＢのステップＳ２１）。図４では、未設定を表現するものの例として「−∞」を用いている。演算Ａは離散時間制約ｃ１の端点であるので、図４（ｂ）の時間制約端点演算情報テーブル２１０から演算Ａの順序番号１を取得し、依存配列の１番目の要素を０に設定する（図４（ｃ）の演算Ａの行）。
【００３７】
依存配列生成部１０１は、演算Ａ（ｎ１）の依存配列の設定が終わった後、演算Ｃ（ｎ３）についても、同様に依存配列の設定を行い、３番目の要素が０で、それ以外の要素が未設定の依存配列を得る（図４（ｃ）の演算Ｃの行）。
【００３８】
依存配列生成部１０１は、改めて、依存している演算に依存配列を設定していないものがない演算を探索する（図３ＡのステップＳ１）と、演算Ｂ（ｎ２）は、依存配列が既に設定済みの演算Ａ（ｎ１）にしか依存していないので条件を満たす。
【００３９】
そこで、次に、依存配列生成部１０１は、演算Ｂ（ｎ２）の依存配列を決定する（図３ＡのステップＳ３）。
【００４０】
依存配列生成部１０１は、演算Ｂ（ｎ２）も離散時間制約ｃ２の端点なので（図３ＢのステップＳ２２）、図４（ｂ）の時間制約端点演算情報テーブル２１０からＢの順序番号２を取得し、依存配列の２番目の要素を０にする（図３ＢのステップＳ２３）。
【００４１】
依存配列生成部１０１は、演算Ａ（ｎ１）の依存配列の１番目の要素は０であり、演算Ｂ（ｎ２）の依存配列の１番目の要素は未設定なので、演算Ｂ（ｎ２）の１番目の要素は演算Ａ（ｎ１）の依存配列の１番目の要素に演算Ａ（ｎ１）と演算Ｂ（ｎ２）の遅延を加えたものである。演算Ａ（ｎ１）と演算Ｂ（ｎ２）との間の枝（ｅ１）の遅延は、図４（ｂ）の枝遅延情報テーブル２００から４であり、演算Ａ（ｎ１）の依存配列の１番目の要素に加えた４が演算Ｂ（ｎ２）の依存配列の１番目の要素の値になる。以上の操作の結果、演算Ｂ（ｎ２）の依存配列は、１番目の要素が４、２番目の要素が０、それ以外の要素は未設定になる（図４（ｃ）の演算Ｂの行）。
【００４２】
複数の演算に直接依存する演算、例えば、演算Ｄ（ｎ４）と演算Ｅ（ｎ５）に依存する演算Ｇ（ｎ７）の場合は、以下のように設定する。
【００４３】
最初に、依存配列生成部１０１は、依存する演算のうち演算Ｅ（ｎ５）に着目する（図３ＢのステップＳ２４）と、演算Ｅ（ｎ４）の設定済みの要素と、演算Ｅ（ｎ５）とＧ（ｎ７）の間の遅延２から、演算Ｇ（ｎ７）の依存配列は１番目の要素が１番目の要素が８、２番目の要素が４、３番目の要素が５、５番目の要素が２になる。
【００４４】
次に、依存配列生成部１０１は、依存する演算のうち演算Ｄ（ｎ４）に着目する（図３ＢのステップＳ２４）。
【００４５】
演算Ｄ（ｎ４）と演算Ｇ（ｎ７）の遅延は２である。
【００４６】
依存配列生成部１０１は、演算Ｄ（ｎ４）の依存配列の１番目の値と遅延を加えた値９が、演算Ｇ（ｎ７）の依存配列に設定されている１番目の要素８よりも大きい（図３ＢのステップＳ２７）ので、依存配列の１番目の値を９に更新する（図３ＢのステップＳ２８）。
【００４７】
同様の手順で、依存配列生成部１０１は、演算Ｇ（ｎ７）の依存配列の２番目の要素を５に更新する。
【００４８】
４番目の要素については、演算Ｇ（ｎ７）は未設定なので、演算Ｄ（ｎ４）の依存配列の４番目の要素０と遅延２を加えた値になる。
【００４９】
３番目と５番目の要素については、演算Ｄ（ｎ４）の依存配列の５番目の要素は未設定なので更新されない。
【００５０】
結局、演算Ｇ（ｎ７）に設定される依存ベクトルは１番目の要素は９、２番目の要素は５、３番目の要素は５、４番目の要素は２、５番目の要素は２になる（図４（ｃ）の演算Ｇの行）。
【００５１】
以上の処理を行うことで、たとえ遅延の経路が複数あっても、任意の時間制約の端点を構成する演算と、任意の演算の間の最小の遅延を計算することができるようになり、離散時間制約の生成の高速化が図れる。
【００５２】
図２の離散時間制約生成部１０２では、ＤＦＧ記憶部１１１で記憶されているデータフローグラフ（ＤＦＧ）と、離散時間制約記憶部１１２で記憶されている離散時間制約とを用いて、新しく離散時間制約を生成し、既存の離散時間制約と合わせて、その中からスケジューリング可能性判断部１０４で使用する連続時間制約を生成するための離散時間制約を新時間制約記憶部１２２に保存する。
【００５３】
図５は、図２の離散時間制約生成部１０２において、離散時間制約から新しい離散時間を生成する際の処理を示すフローチャートである。
（１）ステップＳ５１
離散時間制約生成部１０２は、新規の離散時間制約を生成するために、与えられた離散時間制約のうちの２つで構成される離散時間制約の組を全て列挙する。
（２）ステップＳ５２
離散時間制約生成部１０２は、この列挙された離散時間制約の組から新しい離散時間制約を生成する。
（３）ステップＳ５３
離散時間制約生成部１０２は、新規に生成される離散時間制約が、依存配列から得られる最短遅延若しくは既存の離散時間制約と矛盾していた場合、スケジューリング失敗、又はスケジューリング可能性なしと判定する。また、新しく生成された離散時間制約と矛盾したものであった場合、スケジューリング失敗、又はスケジューリング可能性なしと判定する。また、離散時間制約生成部１０２は、新しく生成された離散時間制約と、依存配列から得られた演算間の最短遅延若しくは既存の時間制約と新規の時間制約を比較して、冗長なものがあったときは、冗長な離散時間制約を、図２の新離散時間制約記憶部１２２に記憶せず、冗長な離散時間制約を新離散時間制約記憶部１２２に記憶している場合は削除する。また、離散時間制約生成部１０２は、冗長でない離散時間制約を図２の新離散時間制約記憶部１２２に記憶する。
（４）ステップＳ５４
離散時間制約生成部１０２は、新しい離散時間制約が生成されたか判定する。離散時間制約生成部１０２は、新しい離散時間制約が生成されていない場合、本実施例におけるスケジューリング可能性判定を終了する。
（５）ステップＳ５５
離散時間制約生成部１０２は、新しい離散時間制約が生成された場合、新しい離散時間制約を含んだ離散時間制約の組み合わせを生成する。ここでは、離散時間制約生成部１０２は、ステップＳ５２に戻り、上記の処理を繰り返す。
【００５４】
以後、煩雑さを避けるために「演算ｘは演算ｙに対して離散時間単位でｎ後ろの範囲、若しくはそれ以後にスケジューリングされる必要がある」という時間制約を「ｙ−＞ｘ：ｎＴ−」と記載し、「演算ｘは演算ｙに対して離散時間単位でｎ後ろの離散時間の範囲、若しくはそれ以前にスケジューリングされる必要がある」という時間制約を「ｙ−＞ｘ：−ｎＴ」と記載する。
【００５５】
離散時間制約が矛盾と判定されるのは、次のような場合である。
例えば、演算Ａと演算Ｂの間に「Ａ−＞Ｂ：ｘＴ−」という既存の離散時間制約があり、新規に生成された時間制約が「Ａ−＞Ｂ：−ｙＴ」でｙ＜ｘを満たす場合、ＡとＢの遅延で二つの条件を満たせるものはないので矛盾と判定される。
【００５６】
離散時間制約が逆の場合も同様である。
【００５７】
また、着目する時間制約の端点を構成する演算Ａと演算Ｂの依存配列から得られた演算Ａから演算Ｂへの最短遅延ｚと新規に生成された時間制約「Ａ−＞Ｂ：−ｘＴ」において「Ｔ（ｘ＋１）＜ｚ」が成立する場合も矛盾である。
【００５８】
矛盾した離散時間制約の判定処理を行うことで、図２のスケジューリング可能性判断部に処理が行く前に、スケジューリングの可能性がないことを一部判定することができ、処理が高速になる。
【００５９】
離散時間制約が、冗長であると判定されるのは、例えば、着目する時間制約の端点を構成する演算Ａと演算Ｂにおいて、２つの「Ａ−＞Ｂ：ｘＴ−」と「Ａ−＞Ｂ：ｙＴ−」という離散時間制約がある場合、ｘとｙのうち小さいほうは冗長な離散時間制約である。また、２つの「Ａ−＞Ｂ：−ｘＴ」と「Ａ−＞Ｂ：−ｙＴ」という離散時間制約がある場合、ｘとｙのうち大きいほうは冗長な時間制約である。
【００６０】
また、着目する時間制約の端点を構成する演算Ａと演算Ｂの依存配列から得られた演算Ａから演算Ｂへの最短遅延ｚと新規に生成された時間制約「Ａ−＞Ｂ：ｘＴ−」において「Ｔ（ｘ−１）＜ｚ」が成立する場合は冗長である。
【００６１】
冗長な離散時間制約の判定処理を行うことで、生成する離散時間制約の枝の数を減らすことができ、連続時間制約への変換、及び正閉路検出での処理が高速化される。
【００６２】
図６Ａ、図６Ｂは、図５のステップＳ５２、ステップＳ５３における既存の離散時間制約から新規の離散時間制約を生成し、既存の離散時間制約を削除する規則の例を示す図である。
【００６３】
図６Ａ（ａ）と図６Ａ（ｂ）が冗長な離散時間制約を削除する方法の例を示すブロック図で、図６Ａ（ｃ）から図６Ｂ（ｋ）までが新規の離散時間制約を生成する方法の例を示すブロック図である。
【００６４】
図６Ａ（ａ１）では、演算Ａ（ｎ１）と演算Ｂ（ｎ２）の間にＡ−＞Ｂ：ｘＴ−という離散時間制約ｃ１とＡ−＞Ｂ：ｙＴ−という離散時間制約ｃ２があった場合の状況を示している。この場合、ｘがｙより大きければ離散時間制約ｃ２は離散時間制約ｃ１に含まれるので、冗長な離散時間制約と判断して削除できる。一方、逆にｙがｘより大きければ離散時間制約ｃ１が冗長な離散時間制約と判断して削除できる。図６Ａ（ａ２）に冗長な時間制約を削除した結果を示す。
【００６５】
図６Ａ（ｂ１）では、演算Ａ（ｎ１）と演算Ｂ（ｎ２）の間にＡ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＡ−＞Ｂ：−ｙＴという離散時間制約ｃ２があった場合の状況を示している。この場合、ｘがｙより大きければ離散時間制約ｃ１は離散時間制約ｃ２に含まれるので、冗長な離散時間制約と判断して削除できる。逆に、ｙがｘより大きければ離散時間制約ｃ２が冗長な離散時間制約と判断して削除できる。図６Ａ（ｂ２）に、冗長な離散時間制約を削除した結果を示す。
【００６６】
図６Ａ（ｃ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、及び演算Ｃ（ｎ３）の間に、Ａ−＞Ｂ：ｘＴ−という離散時間制約ｃ１とＡ−＞Ｃ：−ｙＴという離散時間制約ｃ２があった場合の状況を示している。この場合、演算Ｂ（ｎ２）と演算Ｃ（ｎ３）との間に新しくＢ−＞Ｃ：（ｘ−ｙ）Ｔ−という離散時間制約を生成する（図６Ａ（ｃ２）の離散時間制約ｃ３）。
【００６７】
図６Ａ（ｄ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、及び演算Ｃ（ｎ３）の間に、Ａ−＞Ｃ：ｘＴ−という離散時間制約ｃ１とＢ−＞Ｃ：−ｙＴという離散時間制約ｃ２があった場合の状況を示している。この場合、演算Ａ（ｎ２）と演算Ｂ（ｎ３）との間に新しくＡ−＞Ｂ：（ｘ−ｙ）Ｔ−という離散時間制約を生成する（図６Ａ（ｄ２）の離散時間制約ｃ３）。
【００６８】
図６Ａ（ｅ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、及び演算Ｃ（ｎ３）の間に、Ａ−＞Ｂ：ｘＴ−という離散時間制約ｃ１とＢ−＞Ｃ：ｙＴ−という離散時間制約ｃ２があった場合の状況を示している。この場合、演算Ａ（ｎ１）と演算Ｃ（ｎ３）との間に新しくＡ−＞Ｃ：（ｘ＋ｙ）Ｔ−という離散時間制約を生成する（図６Ａ（ｅ２）の離散時間時間制約ｃ３）。
【００６９】
図６Ａ（ｆ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、及び演算Ｃ（ｎ３）の間に、Ａ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＢ−＞Ｃ：−ｙＴという離散時間制約ｃ２があった場合の状況を示している。この場合、演算Ａ（ｎ２）と演算Ｃ（ｎ３）との間に新しくＢ−＞Ｃ：−（ｘ＋ｙ）Ｔという離散時間制約を生成する（図６Ａ（ｆ２）に離散時間時間制約ｃ３）。
【００７０】
図６Ｂ（ｇ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、演算Ｃ（ｎ３）、及び演算Ｄ（ｎ４）の間に、Ａ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＣ−＞Ｄ：−ｙＴという離散時間制約ｃ２があり、更に演算Ｂ（ｎ２）は演算Ｃ（ｎ３）に依存（図６Ｂ（ｇ１）のｅ１）していたとする。この場合、演算Ａ（ｎ１）と演算Ｃ（ｎ２）との間に新しくＡ−＞Ｃ：−（ｘ＋ｙ）Ｔという離散時間制約を生成する（図６Ｂ（ｇ２）の離散時間制約ｃ３）。
【００７１】
図６Ｂ（ｈ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、演算Ｃ（ｎ３）、及び演算Ｄ（ｎ４）の間に、Ａ−＞Ｂ：ｘＴ−という離散時間制約ｃ１とＣ−＞Ｄ：ｙＴ−という離散時間制約ｃ２があり、更に演算Ｃ（ｎ３）は演算Ｂ（ｎ２）に依存（図６Ｂ（ｈ１）のｅ１）していたとする。この場合、演算Ａ（ｎ１）と演算Ｄ（ｎ４）との間に新しくＡ−＞Ｃ：（ｘ＋ｙ）Ｔ−という離散時間制約を生成する（図６Ｂ（ｈ２）の離散時間制約ｃ３）。
【００７２】
図６Ｂ（ｉ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、演算Ｃ（ｎ３）、及び演算Ｄ（ｎ４）の間に、Ａ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＣ−＞Ｄ：ｙＴ−という離散時間制約ｃ２があり、更に演算Ｂ（ｎ２）は演算Ｄ（ｎ４）に依存していたとする。この場合、演算Ａ（ｎ１）と演算Ｃ（ｎ３）との間に新しくＣ−＞Ａ：（ｙ−ｘ）Ｔ−という離散時間制約を生成する（図６Ｂ（ｉ２）の離散時間制約ｃ３）。
【００７３】
図６Ｂ（ｊ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、演算Ｃ（ｎ３）、及び演算Ｄ（ｎ４）の間に、Ａ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＣ−＞Ｄ：ｙＴ−という離散時間制約ｃ２があり、更に演算Ｃ（ｎ３）は演算Ａ（ｎ１）に依存していたとする。この場合、演算Ｂ（ｎ２）と演算Ｄ（ｎ４）との間に新しくＢ−＞Ｄ：（ｙ−ｘ）Ｔ−という離散時間制約を生成する（図６Ｂ（ｊ２）の離散時間制約ｃ３）。
【００７４】
図６Ｂ（ｋ１）では、演算Ａ（ｎ１）、演算Ｂ（ｎ２）、演算Ｃ（ｎ３）、及び演算Ｄ（ｎ４）の間に、Ａ−＞Ｂ：−ｘＴという離散時間制約ｃ１とＣ−＞Ｄ：ｙＴ−という離散時間制約ｃ２があり、演算Ｃ（ｎ３）は演算Ａ（ｎ１）に依存し、更に演算Ｂ（ｎ２）は演算Ｄ（ｎ４）に依存していたとする。この場合、演算Ａ（ｎ１）と演算Ｃ（ｎ３）、Ｂ（ｎ２）と演算Ｄ（ｎ４）との間に、それぞれＡ−＞Ｃ：−（ｘ−ｙ）Ｔ（図６Ｂ（ｋ２）の離散時間制約ｃ３）、Ｂ−＞Ｄ：（ｘ−ｙ）Ｔを生成する（図６Ｂ（ｋ２）の離散時間制約ｃ５）。
【００７５】
次に、離散時間制約生成部１０２は、新離散時間制約記憶部１２３に記憶されている各離散時間制約を連続時間制約に変換し、図２の新連続時間制約記憶部１２３に記憶する。
【００７６】
離散時間制約生成部１０２は、どれか一つの離散時間制約の組み合わせにおいてでも新しい時間制約が生成されたかチェックし（図５のステップＳ５３）、生成されていたならば（図５のステップＳ５４）、新たに発生する離散時間制約の全ての組み合わせを列挙して（図５のステップＳ５５）、改めて新規の離散時間制約を生成することを、新規の離散時間制約が生成されなくなるまで行う。
【００７７】
図７は、図２の時間制約連続化部１０３での、離散時間制約を連続時間制約に変換する際の処理を示すフローチャートである。
（１）ステップＳ７１
時間制約連続化部１０３は、離散時間制約記憶部１１２に記憶されている既存の離散時間制約と、時間制約連続化部１０３で生成され新連続時間制約記憶部１２３に記憶されている新規の離散時間制約について、それぞれの離散時間制約を以下の規則に従って、連続時間制約に変換する。時間制約連続化部１０３は、まだ変換していない離散時間制約がなくなるまで、この処理を繰り返す。
（２）ステップＳ７２
時間制約連続化部１０３は、演算が離散時間境界をまたげるか判定する。
（３）ステップＳ７３
時間制約連続化部１０３は、演算が離散時間境界をまたげない場合、離散時間制約「Ａ−＞Ｂ：ｘＴ−」を「Ａ−＞Ｂ：（Ｔ（ｘ−１）＋ｄ（Ａ））ｔ−」と変換する。但し、ＡとＢは任意の演算で、ｘは任意の離散時間、Ｔは離散時間単位の時間、ｄ（Ａ）は演算Ａの遅延を表す。また、「Ａ−＞Ｂ：ｘｔ−」は連続時間制約を表し、「演算Ｂは演算Ａより時間ｘかそれより後ろで実行される必要がある」という意味である。
（４）ステップＳ７４
時間制約連続化部１０３は、演算が離散時間境界をまたげない場合、離散時間制約「Ａ−＞Ｂ：−ｘＴ」を「Ａ−＞Ｂ：−（Ｔ（ｘ＋１）−ｄ（Ｂ））ｔ」と変換する。但し、ＡとＢは任意の演算、ｘは任意の離散時間、Ｔは離散時間単位の時間、ｄ（Ｂ）は演算Ｂの遅延を表す。また、「Ａ−＞Ｂ：−ｘｔ」は連続時間制約を表し、「演算Ｂは演算Ａより時間ｘかそれより前に実行される必要がある」という意味である。
（５）ステップＳ７５
時間制約連続化部１０３は、演算が離散時間の境界をまたげる場合、離散時間制約「Ａ−＞Ｂ：ｘＴ−」を「Ａ−＞Ｂ：Ｔ（ｘ−１）ｔ−」と変換する。
（６）ステップＳ７６
時間制約連続化部１０３は、演算が離散時間の境界をまたげる場合、離散時間制約「Ａ−＞Ｂ：−ｘＴ」を「Ａ−＞Ｂ：−Ｔ（ｘ＋１）ｔ」と変換する。
（７）ステップＳ７７
時間制約連続化部１０３は、スケジューリング可能性判定の時間制約として、既存の連続時間制約と新規の連続時間制約を新連続時間制約記憶部１２３に記憶する。すなわち、時間制約連続化部１０３は、変換された連続時間制約を、最後にまとめて新連続時間制約記憶部１２３に記憶する。但し、実際には、時間制約連続化部１０３は、変換された連続時間制約を、逐次、新連続時間制約記憶部１２３に記憶するようにしても良い。
【００７８】
この変換を行うことで、従来の連続時間制約に対して適用されるスケジューリング判定システムに適用することができるようになる。
【００７９】
図２のスケジューリング可能性判断部１０４では、従来の連続時間制約とデータフローグラフ（ＤＦＧ）がある場合におけるスケジューリング判定を行うシステムが組み込まれている。新連続時間制約記憶部１２３に記憶された連続時間制約とデータフローグラフ（ＤＦＧ）を有向グラフに変換した後、正閉路検出を行い、正閉路が検出された場合、スケジューリング可能性がないと判定し、そうでない場合スケジューリング可能性があると判定する。
【００８０】
以下に、本発明の第２実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、第１実施形態（図２）と同様の構成を持つ計算機であるが、スケジューリング可能性判断部１０４で、正閉路検出において依存配列を利用する点が相違する。
【００８１】
図８は、本実施形態において、図２のスケジューリング可能性判断部１０４での処理の例を示すフローチャートである。
（１）ステップＳ８１
スケジューリング可能性判断部１０４は、スケジューリング用の連続図２の時間制約連続化部１０３で生成したスケジューリング用連続時間制約の端点を更新演算テーブルに登録し、スケジューリング用連続時間制約の端点の依存配列を初期値に設定する。初期値は時間制約の端点の演算と対応する位置の依存配列の要素が０でそれ以外の要素が未設定のものでも良いし、図２の演算依存配列で設定したものを流用しても良い。図２の演算依存配列で設定した依存配列を初期値として用いるほうがより高速に判定できる可能性がある。
（２）ステップＳ８２
次に、スケジューリング可能性判断部１０４は、更新演算テーブルに登録された演算の依存配列を、対象演算が直接依存する演算と、対象演算があるのならば時間制約を基に更新する。
（３）ステップＳ８３
スケジューリング可能性判断部１０４は、更新演算すべてについて依存配列の更新を行い、値が変化した依存配列が存在するか判定する。すなわち、スケジューリング可能性判断部１０４は、更新された依存配列が存在するか判定する。
（４）ステップＳ８４
スケジューリング可能性判断部１０４は、更新された依存配列が存在しない場合、スケジューリング可能性があると判定する。
（５）ステップＳ８５
スケジューリング可能性判断部１０４は、更新された依存配列が存在する場合、正閉路検出を行う。すなわち、スケジューリング可能性判断部１０４は、正閉路が検出されたか判定する。
（６）ステップＳ８６
スケジューリング可能性判断部１０４は、正閉路が検出されない場合、更新された依存配列を持つ演算に依存するノードを更新演算テーブルに登録する。更に、スケジューリング可能性判断部１０４は、更新演算テーブルに登録された演算の依存配列を、対象演算が直接依存する演算と、対象演算があるのならば時間制約を基に更新する。すなわち、ステップＳ８２に戻る。
（７）ステップＳ８７
スケジューリング可能性判断部１０４は、正閉路が検出された場合、スケジューリング可能性がないと判定する。
【００８２】
図９Ａ、図９Ｂ、図９Ｃは、図８のステップＳ８２における依存配列の更新の際の処理を示すフローチャートである。
【００８３】
図９Ａは、依存配列の値の更新の処理を示すフローチャートである。
（１）ステップＳ８２１
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がまだあるか判定する。
（２）ステップＳ８２２
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がある場合、直接依存する各演算について、依存配列の更新処理を行う。
（３）ステップＳ８２３
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がない場合、まだ連続時間制約が残っているか判定する。ここでは、スケジューリング可能性判断部１０４は、連続時間制約が残っていなければ、処理を終了する。
（４）ステップＳ８２４
スケジューリング可能性判断部１０４は、連続時間制約が残っている場合、各連続時間制約について、依存配列の更新処理を行う。
【００８４】
図９Ｂは、図９ＡのステップＳ８２２における直接依存する演算に対する依存配列の要素の更新を行う際の処理を示すフローチャートである。
（１）ステップＳ８２２１
スケジューリング可能性判断部１０４は、時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部１０４は、時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
（２）ステップＳ８２２２
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算の依存配列の各要素について、直接依存する演算の対応する依存配列の要素に、対象演算と直接依存する演算の間の遅延を加えた値を計算する。このとき、スケジューリング可能性判断部１０４は、離散時間制約の境界がはいるかどうかで遅延が変わる場合、図３Ｃで示す方法で依存配列の値に遅延を加えた値を決定する。
（３）ステップＳ８２２３
スケジューリング可能性判断部１０４は、この計算された値が対象演算の依存配列の要素の値より大きいか判定する。このとき、スケジューリング可能性判断部１０４は、この計算された値が対象演算の依存配列の要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
（４）ステップＳ８２２４
スケジューリング可能性判断部１０４は、この計算された値が対象演算の依存配列の要素の値と比較して大きければ、対象演算の依存配列の対応する要素の値を更新する。
【００８５】
図９Ｃは、図９ＡのステップＳ８２４における連続時間制約の相手演算に対する依存配列の更新を行う際の処理を示すフローチャートである。
（１）ステップＳ８２４１
スケジューリング可能性判断部１０４は、連続時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部１０４は、連続時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
（２）ステップＳ８２４２
スケジューリング可能性判断部１０４は、連続時間制約の相手である演算Ａの依存配列で設定済みの各要素について、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：ｘｔ−」で表現される連続時間制約であるか確認する。このとき、スケジューリング可能性判断部１０４は、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：ｘｔ−」で表現される連続時間制約でなければ、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：−ｘｔ」で表現される連続時間制約であると判定する。
（３）ステップＳ８２４３
スケジューリング可能性判断部１０４は、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：ｘｔ−」で表現される連続時間制約であれば、対象演算の依存配列の要素の値ｖに時間制約の値ｘを加えた値「ｖ＋ｘ」を計算する。
（４）ステップＳ８２４４
スケジューリング可能性判断部１０４は、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：−ｘｔ」で表現される連続時間制約であれば、対象演算の依存配列の要素の値ｖから時間制約の値ｘを差し引いた値「ｖ−ｘ」を計算する。
（５）ステップＳ８２４５
スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値よりも大きいか確認する。このとき、スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
（６）ステップＳ８２４６
スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値よりも大きかったら、依存配列の対応する要素の値を更新する。
【００８６】
図１０は、図８のステップＳ８４における正閉路検出の処理を示すフローチャートである。
（１）ステップＳ８４１
スケジューリング可能性判断部１０４は、更新された依存配列が時間制約の端点かを判定する。
（２）ステップＳ８４２
スケジューリング可能性判断部１０４は、更新された依存配列が時間制約の端点の演算のものでなかったら、正閉路でないと判定する。
（３）ステップＳ８４３
スケジューリング可能性判断部１０４は、更新された依存配列が時間制約の端点の演算のものであったら、依存配列におけるその依存配列を所有する演算に対応する位置の要素が更新されていないか判定する。
（４）ステップＳ８４４
スケジューリング可能性判断部１０４は、更新されていたら正閉路が存在すると判定し、更新されていなかったら、正閉路なしと判定する。
【００８７】
正閉路検出の処理については、スケジューリング可能性判断部１０４は、各演算の依存配列を更新するたび、更新された演算に対して個別に正閉路の有無を判定するようにしても良いし、全ての更新演算の依存配列が更新された後に、更新された依存配列に対してまとめて正閉路の有無を判定するようにしても良い。
【００８８】
図２のスケジューリング部１０５では、図２のスケジューリング可能性判断部１０４でスケジューリング可能性があると判定した場合、従来の手法を用いて、適切なタイミングにＤＦＧノードを配置する。
【００８９】
本実施形態における特有の効果として、離散時間正閉路検出（図８のステップＳ８４）の際、離散時間制約を扱わなくて済み、処理の簡素化が図れる。
【００９０】
以下に、本発明の第３実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、基本的に第１実施形態（図２）と同様の構成を持つが、依存配列生成部１０１、離散時間制約生成部１０２、時間制約連続化部１０３、新離散時間制約記憶部１２２、新連続時間制約記憶部１２３を使用しない。
【００９１】
図１１を参照すると、本実施形態のスケジューリング可能性判定システムは、スケジューリング可能性判断部１０４と、スケジューリング部１０５と、演算と演算同士の依存関係と、ＤＦＧ記憶部１１１と、離散時間制約記憶部１１２と、連続時間制約記憶部１１３と、依存配列記憶部１２１と、スケジューリング済みＤＦＧ記憶部１３０を備える。
【００９２】
スケジューリング可能性判断部１０４は、スケジューリングが可能かどうか判定する。スケジューリング部１０５は、スケジューリング可能性があった場合、スケジューリングを実行する。
【００９３】
ＤＦＧ記憶部１１１は、データフローグラフ（ＤＦＧ）を記憶し、演算と演算同士の依存関係と遅延を記憶する。離散時間制約記憶部１１２は、演算間の離散的な時間単位で表現された時間制約を記憶する。依存配列記憶部１２１は、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する。連続時間制約記憶部１１３は、演算間の連続的な時間単位で表現された時間制約を記憶する。スケジューリング済みＤＦＧ記憶部１３０は、スケジューリング済みのデータフローグラフ（ＤＦＧ）を記憶する。
【００９４】
図１１におけるスケジューリング可能性判断部１０４は、基本的に図８に示すフローチャートと同様に動作するが、依存配列の初期化（図８のステップＳ８１）と依存配列の値の更新（図８のステップＳ８２）における処理が図８に示すフローチャートと異なる。
【００９５】
本実施形態においては、図２の依存配列生成部１０１が存在しないので、離散時間制約の端点の演算の依存配列の初期値は、図１１におけるスケジューリング可能性判断部１０４に入力される。
【００９６】
図１２Ａは、依存配列の値の更新の処理を示すフローチャートである。
（１）ステップＳ８２１
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がまだあるか判定する。
（２）ステップＳ８２２
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がある場合、直接依存する各演算について、依存配列の更新処理を行う。
（３）ステップＳ８２３
スケジューリング可能性判断部１０４は、対象演算が直接依存する演算がない場合、まだ連続時間制約が残っているか判定する。
（４）ステップＳ８２４
スケジューリング可能性判断部１０４は、連続時間制約が残っている場合、各連続時間制約について、依存配列の更新処理を行う。
（５）ステップＳ８２５
スケジューリング可能性判断部１０４は、連続時間制約が残っていない場合、まだ離散時間制約が残っているか判定する。ここでは、スケジューリング可能性判断部１０４は、離散時間制約が残っていなければ、処理を終了する。
（６）ステップＳ８２６
スケジューリング可能性判断部１０４は、離散時間制約が残っている場合、各離散時間制約について、図１２Ｂに示す更新処理を行う。
【００９７】
図１２Ｂは離散時間制約を基に依存配列を更新する処理（図１２ＡのステップＳ８２６）を示すフローチャートである。
（１）ステップＳ８２６１
スケジューリング可能性判断部１０４は、離散時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部１０４は、離散時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
（２）ステップＳ８２６２
スケジューリング可能性判断部１０４は、離散時間制約の相手である演算Ａの依存配列で設定済みの各要素について、Ｂが対象演算で、ｘは任意の時間として「Ａ−＞Ｂ：ｘＴ−」で表現される離散時間制約であるか確認する。このとき、スケジューリング可能性判断部１０４は、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：ｘＴ−」で表現される離散時間制約でなければ、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：−ｘＴ」で表現される離散時間制約であると判定する。
（３）ステップＳ８２６３
スケジューリング可能性判断部１０４は、離散時間制約が、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：ｘＴ−」と表現できたら、時間制約の対象演算の依存配列の要素をｖとしたとき、Ｔを離散時間単位として、「Ｔ×ｆｌｏｏｒ（ｖ／Ｔ＋ｘ）」を計算する。
（４）ステップＳ８２６４
スケジューリング可能性判断部１０４は、離散時間制約が、Ｂが対象演算で、Ａは任意の演算、ｘは任意の時間として「Ａ−＞Ｂ：−ｘＴ」と表現できたら、時間制約の対象演算の依存配列の要素をｖとしたとき、Ｔを離散時間単位として、「Ｔ×ｆｌｏｏｒ（ｖ／Ｔ−ｘ）」を計算する。
（５）ステップＳ８２６５
スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値よりも大きいか確認する。このとき、スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
（６）ステップＳ８２６６
スケジューリング可能性判断部１０４は、計算された値が対象演算の依存配列の対応する要素の値よりも大きかったら、依存配列の対応する要素の値を更新する。
【００９８】
本実施形態では、演算の依存配列の生成（図２の依存配列生成部１０１）、新規の離散時間制約の生成（図２の離散時間制約生成部１０２）、連続時間制約への変換（図２の時間制約連続化部１０３）が省略できるため、処理が簡単になる。また、得られる結果も厳密になる。
【００９９】
以下に、本発明の第４実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、基本的に第１実施形態（図２）と同様の構成を持つが、離散時間制約生成部１０２で依存配列を元に新規の離散時間制約を生成する点が第１実施形態と異なる。
【０１００】
図１３は、本実施形態における離散時間制約の生成の際の処理を示すフローチャートである。図７と比較して、事前に、依存配列から離散時間制約生成を行う処理（図１３のステップＳ１３０１）がある点が異なる。
（１）ステップＳ１３０１
離散時間制約生成部１０２は、依存配列から離散時間制約を生成する。その後、離散時間制約生成部１０２は、生成された離散時間制約を離散時間制約記憶部１１２に記憶する。なお、離散時間制約生成部１０２は、直接、生成された離散時間制約を時間制約連続化部１０３に引き渡すようにすることも可能である。以降の処理は、図７と同様である。
（２）ステップＳ７１
時間制約連続化部１０３は、離散時間制約記憶部１１２に記憶されている既存の離散時間制約と、時間制約連続化部１０３で生成され新連続時間制約記憶部１２３に記憶されている新規の離散時間制約について、それぞれの離散時間制約を以下の規則に従って、連続時間制約に変換する。時間制約連続化部１０３は、まだ変換していない離散時間制約がなくなるまで、この処理を繰り返す。
（３）ステップＳ７２
時間制約連続化部１０３は、演算が離散時間境界をまたげるか判定する。
（４）ステップＳ７３
時間制約連続化部１０３は、演算が離散時間境界をまたげない場合、離散時間制約「Ａ−＞Ｂ：ｘＴ−」を「Ａ−＞Ｂ：（Ｔ（ｘ−１）＋ｄ（Ａ））ｔ−」と変換する。但し、ＡとＢは任意の演算で、ｘは任意の離散時間、Ｔは離散時間単位の時間、ｄ（Ａ）は演算Ａの遅延を表す。また、「Ａ−＞Ｂ：ｘｔ−」は連続時間制約を表し、「演算Ｂは演算Ａより時間ｘかそれより後ろで実行される必要がある」という意味である。
（５）ステップＳ７４
時間制約連続化部１０３は、演算が離散時間境界をまたげない場合、離散時間制約「Ａ−＞Ｂ：−ｘＴ」を「Ａ−＞Ｂ：−（Ｔ（ｘ＋１）−ｄ（Ｂ））ｔ」と変換する。但し、ＡとＢは任意の演算、ｘは任意の離散時間、Ｔは離散時間単位の時間、ｄ（Ｂ）は演算Ｂの遅延を表す。また、「Ａ−＞Ｂ：−ｘｔ」は連続時間制約を表し、「演算Ｂは演算Ａより時間ｘかそれより前に実行される必要がある」という意味である。
（６）ステップＳ７５
時間制約連続化部１０３は、演算が離散時間の境界をまたげる場合、離散時間制約「Ａ−＞Ｂ：ｘＴ−」を「Ａ−＞Ｂ：Ｔ（ｘ−１）ｔ−」と変換する。
（７）ステップＳ７６
時間制約連続化部１０３は、演算が離散時間の境界をまたげる場合、離散時間制約「Ａ−＞Ｂ：−ｘＴ」を「Ａ−＞Ｂ：−Ｔ（ｘ＋１）ｔ」と変換する。
（８）ステップＳ７７
時間制約連続化部１０３は、スケジューリング可能性判定の時間制約として、既存の連続時間制約と新規の連続時間制約を新連続時間制約記憶部１２３に記憶する。すなわち、時間制約連続化部１０３は、変換された連続時間制約を、最後にまとめて新連続時間制約記憶部１２３に記憶する。但し、実際には、時間制約連続化部１０３は、変換された連続時間制約を、逐次、新連続時間制約記憶部１２３に記憶するようにしても良い。
【０１０１】
図１４は、依存配列から新規の離散時間制約を生成する際の処理を示したフローチャートである。
（１）ステップＳ１４０１
スケジューリング可能性判断部１０４は、対象演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部１０４は、対象演算の依存配列の設定済み要素がなければ、処理を終了する。
（２）ステップＳ１４０２
スケジューリング可能性判断部１０４は、時間制約を「Ａ−＞Ｂ：ｘＴ−」型の離散時間制約に変換する。すなわち、スケジューリング可能性判断部１０４は、時間制約の端点の演算Ａについて、依存配列の位置に対応する演算Ｂとその要素ｖについて、新規離散時間制約の値ｘをｆｌｏｏｒ（ｖ／Ｔ）として計算し、「Ａ−＞Ｂ：ｘＴ−」として新規の離散時間制約に追加することを、全ての時間制約の端点、依存配列の設定済みの要素に対して行う。
（３）ステップＳ１４０３
スケジューリング可能性判断部１０４は、変換された離散時間制約が冗長かどうか判定する。このとき、スケジューリング可能性判断部１０４は、変換された離散時間制約が冗長であれば、他に対象演算が直接依存する演算の依存配列に設定済み要素があるか確認する。
（４）ステップＳ１４０４
スケジューリング可能性判断部１０４は、変換された離散時間制約が冗長でなければ、スケジューリング可能性判定の時間制約として、既存の離散時間制約と新規の離散時間制約を離散時間制約記憶部１１２に記憶する。すなわち、スケジューリング可能性判断部１０４は、変換された離散時間制約を、逐次、離散時間制約記憶部１１２に記憶する。但し、実際には、スケジューリング可能性判断部１０４は、変換された離散時間制約を、最後にまとめて、離散時間制約記憶部１１２に記憶するようにしても良い。また、新離散時間制約を記憶するために別途、新離散時間制約記憶部１２２を用意しても良い。
【０１０２】
この構成によって、直接若しくは間接に依存する演算の間には必ず離散時間制約が存在することになるため、図６Ｂ（ｇ１）から図６Ｂ（ｋ２）までのパターンの処理が不要になり、新規の離散時間制約の処理が簡素化されて高速になるとともに、より厳密なスケジューリング可能性の判定ができるようになる。
【０１０３】
本発明のスケジューリング可能性判定システムは、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶するＤＦＧ記憶手段と、正閉路検出を用いて時間制約と演算及びデータのスケジューリングの可能性を判定するスケジューリング可能性判定手段とを備えることにより、離散時間制約を含んだデータフローグラフのスケジューリング可能性を高速に判定することを図ったことを特徴とする。
【０１０４】
また、本発明のスケジューリング可能性判定システムは、演算毎に離散時間制約の端点を構成する演算からの遅延を計算して依存配列を記憶するＤＦＧ記憶手段に記憶する依存配列生成手段と、既存の離散時間制約とデータフローグラフから新規の離散時間制約を生成する離散時間制約生成手段と、離散時間制約を連続時間制約に変換する時間制約連続化手段とを備えることにより、離散時間制約がある場合に、スケジューリング可能性の判定をより厳密にすることを図ることを特徴とする。
【０１０５】
本発明のスケジューリング可能性判定システムは、依存配列生成手段の遅延を加える際、離散時間の境界が演算間にある場合を考慮することにより冗長な新規時間制約の生成を抑えて記憶容量の節約と高速化を図ることを特徴とする。
【０１０６】
また、本発明のスケジューリング可能性判定システムは、離散時間制約の端点を構成する演算の間の最短遅延を新規の離散時間制約に変換することにより新規の離散時間制約の生成規則を簡素化して高速化を図ったことを特徴とする。
【０１０７】
また、本発明のスケジューリング可能性判定システムは、スケジューリング可能性判定手段は、依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加え、離散時間制約の端点を構成する演算の依存配列の自分自身に対応する値を調べることによって正閉路検出の判定を行うことにより、離散時間の境界が演算の間の遅延に影響がある場合でも、より厳密なスケジューリング可能性判定を行うことを可能にしたことを特徴とする。
【０１０８】
また、本発明のスケジューリング可能性判定システムは、正閉路検出のために、距離計算の際に離散時間制約をあらわに考慮しながら最短の遅延の計算を行うことで、より厳密に離散時間を考慮した判定を行うことができることを特徴とする。
【０１０９】
以上のように、本発明は、プログラムされたコンピュータによってデータデータフローグラフのスケジューリング可能性を判定する装置に関する。特に、動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成するための高位合成における、データデータフローグラフのスケジューリング可能性を判定する方法及びシステムに関する。
【０１１０】
本発明のスケジューリング可能性判定システムは、データフローグラフを記憶するＤＦＧ記憶手段と、データフローグラフに正閉路がないかを判定することによってスケジューリング可能性を判定するスケジューリング可能性判定手段と、各演算に対応する依存する演算の情報を格納する配列を記憶する依存配列記憶手段を備えることを特徴とする。
【０１１１】
依存配列記憶手段は、対象演算が直接若しくは間接的に依存する演算のうち、時間制約の端点を構成する演算から対象演算までの最短の遅延を記憶することもできる。
【０１１２】
本発明によれば、依存配列を用いることで依存する時間制約の端点を構成する任意の演算からの遅延を高速に計算することができるので、既存の、若しくは新規に生成する時間制約が遅延に対して冗長な時間制約かどうかを高速に判定することができる。また、任意の時間制約の端点からの距離を独立して計算できるようになるので、離散時間制約をまたぐ場合などのように、状況によって遅延が変化する場合においても、最小遅延を高速かつ厳密に求めることができ、スケジューリング可能性判定がより高速になる。
【０１１３】
上記スケジューリング可能性判定システムは、データフローグラフと既存の離散時間制約から冗長な時間制約を削除し自明でない新しい時間制約を生成する離散時間制約生成手段と、各離散時間制約をその内容に従って、単数若しくは複数の連続時間制約に変換する時間制約連続化手段を含むことができる。
【０１１４】
この構成によれば自明でない離散時間制約を新たに生成することができるので、連続時間制約に変換した際、より厳しい条件でスケジューリング可能性判定ができ、誤ってスケジューリング不可能なデータフローグラフを可能と判定する場合を減らすことができる。
【０１１５】
上記スケジューリング可能性判定システムおいて、正閉路検出手段は、依存配列を用いて各時間制約の端点を構成する演算の距離を計算することができる。
【０１１６】
この構成によれば、時間制約の端点を構成する演算によって違う遅延をそれぞれ計算することができるようになり、演算の間に離散時間単位の境界があった場合に遅延が変わるような場合でも、それぞれの最短遅延を計算することができるようになり、より厳密にスケジューリング可能性を判定できるようになる。また、それぞれの時間制約の端点を離散時間の単位先頭においた場合の遅延をあらわに取り扱うことができるので、離散時間制約を連続時間制約に変換する必要がなくなり、離散時間制約を連続化することに伴う条件の緩和がなくなり、より厳密にスケジューリング可能性を判定できるようになる。
【０１１７】
上記スケジューリング可能性判定システムおいて、正閉路検出手段は、依存配列を用いて書く時間制約の端点を構成する演算の距離を計算し、距離の計算において、依存配列を用いて、離散時間制約をあらわに考慮して最短遅延を計算した結果を用いた正閉路検出が可能である。
【０１１８】
この構成によれば、正閉路検出の際の距離の計算において、離散時間制約が含まれていても各離散時間制約の端点を構成する演算からの適切な最短遅延を計算できるようになり、それを用いてより厳密なスケジューリング可能性判定ができるようになる。また、離散時間制約から連続時間制約への変換も不要になるので、処理が簡素化し高速になる。
【０１１９】
本発明によれば、依存配列を記憶する依存配列記憶手段を用意することにより、任意の演算と時間制約の端点を構成する演算が直接若しくは間接的に依存関係が存在するかどうか、そして依存している場合の最短遅延を、高速に計算できるようになる。その結果として、新規の離散時間制約の生成が高速になることや、離散時間制約の新規生成や離散時間をあらわに考慮したスケジューリング可能性判定が可能になることで、離散時間制約を含んだデータフローグラフにおいて、スケジューリング可能性を高速かつ厳密に判定するシステムが提供される。
【０１２０】
本発明は、動作記述からＲＴＬ記述を生成するための動作合成プログラムや、パイプラン化を扱うコンパイラプログラムや、配送計画やタスクなどの一般的なスケジューリングを行うプログラムといった用途に適用できる。
【０１２１】
例えば、本発明は、データベースから同義語を検索する情報検索装置や、情報検索装置をコンピュータに実現するためのプログラムといった用途に適用できる。また、同義語を検索する機能をパソコンやワードプロセッサに搭載されている、かな漢字変換装置や、コンピュータにかな漢字変換機能といった用途にも適用できる。
【図面の簡単な説明】
【０１２２】
【図１】図１は、離散時間制約の連続時間制約化にまつわる問題を示すための簡単な例を示すである。
【図２】図２は、本発明の第１実施形態におけるスケジューリング可能性判定システムの構成を示すブロック図である。
【図３Ａ】図３Ａは、データフローグラフ（ＤＦＧ）から依存配列を生成する際の処理を示すフローチャートである。
【図３Ｂ】図３Ｂは、依存している演算の依存配列から対象演算の依存配列を設定する際の処理を示すフローチャートである。
【図３Ｃ】図３Ｃは、遅延を加える際の処理を示すフローチャートである。
【図４】図４は、データフローグラフ（ＤＦＧ）から演算の依存配列を設定する例を示す図である。
【図５】図５は、離散時間制約から新しい離散時間を生成する際の処理を示すフローチャートである。
【図６Ａ】図６Ａは、冗長な離散時間制約の削除と新規の離散時間制約の生成の規則を示す図である。
【図６Ｂ】図６Ｂは、冗長な離散時間制約の削除と新規の離散時間制約の生成の規則を示す図である。
【図７】図７は、離散時間制約を連続時間制約に変換する際の処理を示すフローチャートである。
【図８】図８は、本発明の第２実施形態における依存配列を用いた正閉路検出の流れを示すフローチャートである。
【図９Ａ】図９Ａは、依存配列を用いた正閉路検出における、依存配列の値の更新の処理を示すフローチャートである。
【図９Ｂ】図９Ｂは、直接依存する演算に対する依存配列の要素の更新を行う際の処理を示すフローチャートである。
【図９Ｃ】図９Ｃは、連続時間制約の相手演算に対する依存配列の更新を行う際の処理を示すフローチャートである。
【図１０】図１０は、正閉路が検出されたかどうかを判定するフローチャートである。
【図１１】図１１は、本発明の第３実施形態におけるスケジューリング可能性判定システムの構成を示すブロック図である。
【図１２Ａ】図１２Ａは、依存配列の値の更新の処理を示すフローチャートである。
【図１２Ｂ】図１２Ｂは、離散時間制約を基に依存配列を更新する処理を示すフローチャートである。
【図１３】図１３は、本発明の第４実施形態における離散時間制約の生成の際の処理を示すフローチャートである。
【図１４】図１４は、依存配列から新規の離散時間制約を生成する際の処理を示すフローチャートである。
【符号の説明】
【０１２３】
１０１…  依存配列生成部
１０２…  離散時間制約生成部
１０３…  時間制約連続化部
１０４…  スケジューリング可能性判断部
１０５…  スケジューリング部
１１１…  ＤＦＧ記憶部
１１２…  離散時間制約記憶部
１１３…  連続時間制約記憶部
１２１…  依存配列記憶部
１２２…  新離散時間制約記憶部
１２３…  新連続時間制約記憶部
１３０…  スケジューリング済みＤＦＧ記憶部
【図１】
0005207125.tif 000002
【図２】
0005207125.tif 000003
【図３Ａ】
0005207125.tif 000004
【図３Ｂ】
0005207125.tif 000005
【図３Ｃ】
0005207125.tif 000006
【図４】
0005207125.tif 000007
【図５】
0005207125.tif 000008
【図６Ａ】
0005207125.tif 000009
【図６Ｂ】
0005207125.tif 000010
【図７】
0005207125.tif 000011
【図８】
0005207125.tif 000012
【図９Ａ】
0005207125.tif 000013
【図９Ｂ】
0005207125.tif 000014
【図９Ｃ】
0005207125.tif 000015
【図１０】
0005207125.tif 000016
【図１１】
0005207125.tif 000017
【図１２Ａ】
0005207125.tif 000018
【図１２Ｂ】
0005207125.tif 000019
【図１３】
0005207125.tif 000020
【図１４】
0005207125.tif 000021