JP5207125B2 - スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム - Google Patents

スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム Download PDF

Info

Publication number
JP5207125B2
JP5207125B2 JP2008087947A JP2008087947A JP5207125B2 JP 5207125 B2 JP5207125 B2 JP 5207125B2 JP 2008087947 A JP2008087947 A JP 2008087947A JP 2008087947 A JP2008087947 A JP 2008087947A JP 5207125 B2 JP5207125 B2 JP 5207125B2
Authority
JP
Japan
Prior art keywords
time constraint
discrete time
array
scheduling
constraint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008087947A
Other languages
English (en)
Other versions
JP2009244973A (ja
Inventor
雄介 井口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008087947A priority Critical patent/JP5207125B2/ja
Publication of JP2009244973A publication Critical patent/JP2009244973A/ja
Application granted granted Critical
Publication of JP5207125B2 publication Critical patent/JP5207125B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、スケジューリング可能性判定システムに関し、特に高位合成システムのスケジューリング可能性判定を行うスケジューリング可能性判定システムに関する。
高位合成システムにおけるスケジューリングでは、演算同士のタイミングの制約が離散時間単位で表現される離散時間制約で指定されることが多く、演算間の遅延も途中で離散時間単位の境界が入るかどうかで大きく変化する。
離散時間制約によっては、データフローグラフをどのようにスケジュールしても時間制約を満たすことができないが、スケジューリングを何度も試みて失敗した後で、当該離散時間制約はスケジューリングが不能と判定するのは非常に時間がかかる。そこで、離散時間制約がある場合、データフローグラフがスケジューリング可能かどうか高速に判定するシステムが求められている。
これまでのスケジューリング可能性判定に関する技術では、連続時間制約のみを扱うことを目的としているため、離散時間制約を含むデータフローグラフに適用することが困難である。連続時間制約のみを扱う技術を、離散時間制約を含むデータフローグラフに単純に適用すると、実際にスケジューリングが不可能なのにスケジューリングが可能と誤判定されてしまうケースが多い。また、演算間に離散時間の境界があるかどうかで遅延が変化するような場合も同様の誤判定が増える。
図1は、離散時間制約を含むデータフローグラフのスケジューリング判定問題で、離散時間制約の連続時間制約化にまつわる問題を示すための簡単な例を示す図である。離散時間の単位は、ここでは1秒とする。
「演算n2は演算n1の1離散時間単位後にある」と「演算n3は演算n2の1離散時間単位後にある」という二つの条件から、演算n3と演算n1の離散時間単位で条件を考えると「演算n3は演算n1の2離散時間単位後にある」という条件になる。これを連続時間の条件に直すと「演算n3は演算n1の1秒後から3秒後までにある」となる。一方で、元々の条件それぞれを「演算n2は演算n1の0秒後から2秒後までにある」と「演算n3は演算n2の0秒後から2秒後までにある」という二つの連続時間の条件に変換して、この二つの条件を合わせると「演算n3は演算n1の0秒後から4秒後までにある」という条件になり緩く判定してしまう。
従来のスケジューリング可能性判定の手法は、連続時間で表現される制約が対象なので、このようにスケジューリング可能性を緩く判定してしまう可能性がある。
スケジューリング可能性判定システムの一例が、非特許文献1に記載されている。このスケジューリング可能性判定システムは、演算、演算同士の順序関係、及び演算同士の制約が連続的な時間で表現される連続時間制約で構成されるデータフローグラフに対して、データフローグラフと連続的な時間で表現される連続時間制約を、適当な変換を用いて対応する有向グラフに変換し、この有向グラフに対して正閉路検出を行うことでスケジューリング可能性判定を行う。
非特許文献2では、準同期式回路における最小のクロックを求めるための、クロックスケジューリング可能性判定において、遅延とクロック制約及び二重クロック制約を連続時間制約で表現した後、有向グラフへの変換を行い、負閉路検出を行うことで、スケジューリング可能性を判定している。
また、特開2004−164627号公報(特許文献1)に高位合成方法が開示されている。
この関連技術では、結線の空間的な距離や混雑度を考慮しながらスケジューリングする方法について示唆している。この関連技術では、可能な限り資源を共有するように高位合成されたCDFGをレイアウトする。そして、それを初期解として、資源レベルレイアウト情報の資源間結線距離が長く、あるいは、マクロ領域内配線混雑度が高く設計制約を満たさない原因となっている共有された資源を別々の資源に再アロケーションして、レイアウト微修正を行う。
また、特開2006−127346号公報(特許文献2)に高位合成方法およびシステムが開示されている。
この関連技術では、フォールスループをさけながらスケジューリングする方法について示唆している。この関連技術では、演算をステップに割り当てるスケジューリング時に、演算をそのステップに割り当てることによってループができるかを判別し、ループができる場合はそのステップに割り当てないことにより回路にループが生成されることを回避する。
また、特開平05−334391号公報(特許文献3)に制御回路生成装置が開示されている。
この関連技術では、スケジューリングの際に、条件分岐で排他的に実行できるかどうかを高速に判定する方法について示唆している。この関連技術では、制御データフローグラフを制御データフローグラフ読み込み装置で読み込み、グラフ内の演算の実行条件を表すビット列を各演算に実行条件符号生成装置で付与し、制御データフローグラフのそれぞれの演算をスケジューリングするスケジューリング装置の出力に対し、制御シーケンス生成装置が制御回路を生成する。
特開2004−164627号公報 特開2006−127346号公報 特開平05−334391号公報 D.Ku and G. De Micheli"Relative Scheduling under Timing Constraints" 27th ACM/IEEE Design Automation Conference(1990) 石田勉、小平行秀、高橋篤司「負閉路探索手法の性能評価」情報処理学会研究報告 2006−AL−107(8)(2006)
本発明の目的は、離散時間制約を含むデータフローグラフにおいて、スケジューリング可能性を高速かつ厳密に判定できるシステムを提供することである。
本発明の他の目的として、離散時間の境界をまたぐかどうかで遅延が変化するようなデータフローグラフに対して、より厳密なスケジューリング可能性を判定するシステムを提供することである。
本発明のスケジューリング可能性判定システムは、データフローグラフを記憶するDFG記憶手段と、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する依存配列記憶手段と、前記データフローグラフ及び前記依存配列を取得し、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るスケジューリング可能性判定手段とを具備する。
本発明のスケジューリング可能性判定方法は、データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップとを含む。
本発明のスケジューリング可能性判定プログラムは、データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップとをコンピュータに実行させるためのプログラムである。
依存配列を用いることで依存する時間制約の端点を構成する任意の演算からの遅延を高速に計算することができる。
以下に、本発明の第1実施形態について添付図面を参照して説明する。
図2を参照すると、本実施形態のスケジューリング可能性判定システムは、依存配列生成部101と、離散時間制約生成部102と、時間制約連続化部103と、スケジューリング可能性判断部104と、スケジューリング部105と、DFG(Data Flow Graph)記憶部111と、離散時間制約記憶部112と、連続時間制約記憶部113と、依存配列記憶部121と、新離散時間制約記憶部122と、新連続時間制約記憶部123と、スケジューリング済みDFG記憶部130を備える。
依存配列生成部101は、データフローグラフ(DFG)に基づいて、時間制約の端点となる演算からの遅延を各演算について生成する。離散時間制約生成部102は、既存の離散制約と依存配列から新しい離散制約を生成する。時間制約連続化部103は、既存の離散時間制約と離散時間制約生成部102で生成された新規の離散時間制約と既存の連続時間制約からスケジューリング可能性判定用の連続時間制約を生成する。スケジューリング可能性判断部104は、時間制約連続化部103で生成されたスケジューリング可能性判定用の連続時間制約から、データフローグラフ(DFG)のスケジューリングが可能かどうか判定する。スケジューリング部105は、データフローグラフ(DFG)のスケジューリング可能性があった場合、データフローグラフ(DFG)のスケジューリングを実行する。
DFG記憶部111は、データフローグラフ(DFG)を記憶し、演算と演算同士の依存関係と遅延を記憶する。離散時間制約記憶部112は、演算間の離散的な時間単位で表現された時間制約を記憶する。連続時間制約記憶部113は、演算間の連続的な時間単位で表現された時間制約を記憶する。依存配列記憶部121は、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する。離散時間制約記憶部122は、離散時間制約生成部102で生成された新規の離散時間制約を記憶する。新連続時間制約記憶部123は、スケジューリング可能性判定用の連続時間で表現された時間制約を記憶する。スケジューリング済みDFG記憶部130は、スケジューリング済みのデータフローグラフ(DFG)を記憶する。
ここでは、スケジューリング可能性判定システムの例として、PC(パソコン)、シンクライアント/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータを想定している。なお、スケジューリング可能性判定システムは、端末やサーバに限らず、中継装置や周辺機器でも良い。また、スケジューリング可能性判定システムは、コンピュータに搭載される拡張ボードやソフトウェアでも良い。但し、実際には、これらの例に限定されない。
依存配列生成部101、離散時間制約生成部102、時間制約連続化部103、スケジューリング可能性判断部104、スケジューリング部105の例として、CPU(Central Processing Unit)やマイクロプロセッサ(microprocessor)等の処理装置、又は同様の機能を有する半導体集積回路(Integrated Circuit(IC))が考えられる。なお、依存配列生成部101、離散時間制約生成部102、時間制約連続化部103、スケジューリング可能性判断部104、スケジューリング部105は、各々の機能をコンピュータに実行させるためのプログラムでも良い。但し、実際には、これらの例に限定されない。
DFG記憶部111、離散時間制約記憶部112、連続時間制約記憶部113、新離散時間制約記憶部122、新連続時間制約記憶部123、スケジューリング済みDFG記憶部130の例として、メモリ等の半導体記憶装置、ハードディスク等の外部記憶装置(ストレージ)、又は記憶媒体(メディア)等が考えられる。但し、実際には、これらの例に限定されない。
次に、本実施形態の全体の動作について詳細に説明する。
図2の依存配列生成部101は、演算及び演算の依存関係を設定したデータフローグラフ(DFG)をDFG記憶部111から読み込み、依存配列を設定する。
但し、実際には、これらの例に限定されない。
図3Aは、本実施形態において、図2の依存配列生成部101において、DFG記憶部111から読み込んだデータフローグラフ(DFG)から、依存配列を生成する際の処理を示すフローチャートである。
(1)ステップS1
最初に、依存配列生成部101は、データフローグラフ(DFG)の中に、依存している演算の中に依存配列を設定していないものがなく、なおかつ依存配列を設定していないという条件を満たす演算があるか探索する。このとき、依存配列生成部101は、依存している演算がない演算も、探索する演算の条件を満たすものと判定する。
(2)ステップS2
依存配列生成部101は、条件を満たす演算があるか判定する。
(3)ステップS3
依存配列生成部101は、条件を満たす演算が見つかったら、依存する演算の依存配列に基づいて、演算の依存配列を設定する。
依存配列生成部101は、この探索と依存配列の設定を、条件を満たす演算がなくなるまで行う。
図3Bは、図3AのステップS2における依存している演算の依存配列から対象演算の依存配列を設定する際の処理を示したフローチャートである。
(1)ステップS21
最初に、依存配列生成部101は、対象演算の依存配列を、未設定を表す値で初期化する。
(2)ステップS22
依存配列生成部101は、対象演算が時間制約の端点となる演算であるか判定する。
(3)ステップS23
依存配列生成部101は、対象演算が時間制約の端点となる演算であれば、対応する依存配列の位置の要素をゼロにする。
(4)ステップS24
依存配列生成部101は、依存している演算があるか判定する。
(5)ステップS25
次に、依存配列生成部101は、直接依存している各演算について、依存配列の要素の中に未設定で無いものがあるか判定する。
(6)ステップS26
依存配列生成部101は、依存配列の要素の中に未設定で無いものがあったら、その要素に依存している演算と対象演算との間の遅延を加える。
(7)ステップS27
依存配列生成部101は、遅延を加えた要素と対象演算の依存配列の要素とを比較する。
(8)ステップS28
依存配列生成部101は、対象演算の依存配列の要素が未設定、若しくは小さかった場合は、対象演算の依存ベクトルをその値で更新する。
図3Cは、図3BのステップS26において、直接依存する2つの演算の間に離散時間の境界があるかないかで遅延値が変わるときの遅延を加える際の処理を示すフローチャートである。
(1)ステップS261
依存配列生成部101は、対象演算の各依存配列の要素毎に、対象演算と直接依存する演算の間に離散時間の境界がないと仮定したときの遅延を加えた値を計算する。
(2)ステップS262
依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたぐか判定する。ここでは、依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入ったか判定する。
(3)ステップS263
依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたいだ場合、直接依存する演算の依存配列の要素と離散時間単位をまたいだときの遅延を加えた値を計算する。ここでは、依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入った場合、改めて直接依存する演算と対象演算の間に離散時間の境界が入ると仮定した場合の遅延を直接依存する演算の依存配列の要素に加えた値を計算する。
(4)ステップS264
更に、依存配列生成部101は、改めて計算された値を、遅延を加えた値とみなす。ここでは、依存配列生成部101は、ステップS263で改めて計算された値を、図3BのステップS26の値として使用する。
(5)ステップS265
依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値が離散時間単位をまたいでいない場合、計算された値を、遅延を加えた値とみなす。ここでは、依存配列生成部101は、直接依存する演算の依存配列の要素と計算された値の間に離散時間の境界が入らなかった場合、ステップS261で計算された値を、遅延を加えた値とみなして図3BのステップS26の値として使用する。
図2の離散時間制約生成部102では、依存配列生成部101で生成した依存配列と、DFG記憶部111に記憶する演算と演算の依存関係と遅延と、離散時間制約生成部112で記憶する離散時間制約から、新規の離散時間制約を生成し、冗長な離散時間制約を削除して、時間制約連続化部103で連続時間制約に変換するための離散時間制約を新離散時間制約記憶部122に記憶する。
図4は、図2の離散時間制約生成部102において、データフローグラフ(DFG)から演算の依存配列を設定する例を示す図である。
図4(a)は、離散時間制約生成部102における処理の例を示すためのデータフローグラフ(DFG)の例で、枝e1から枝e8までの8個の有向枝で示されるような依存関係がある演算n1から演算n8までの8個の演算があり、この演算の間に離散時間制約c1から離散時間制約c3の3つの離散時間制約がある。
図4(b)は、依存関係を示す枝遅延情報テーブル200と、時間制約の端点となる演算に番号付けを行なった時間制約端点演算情報テーブル210の例である。枝の終点は枝の始点の演算が終了しない限り演算を開始することができない。また、枝の始点の演算の実行時間を遅延として枝遅延情報テーブル200に示している。時間制約端点演算情報テーブル210では、時間制約の端点となっている演算を重複なしに列挙している。この順番は遅延配列に値を格納する位置と対応する。
図3AのステップS1では、依存配列生成部101は、まだデータフローグラフ(DFG)に依存配列が設定されている演算はないので、依存する演算がない演算A(n1)と演算C(n2)のうち、どちらかを選ぶ。ここでは、依存配列生成部101は、演算A(n1)を選んだとする。
次に、依存配列生成部101は、演算A(n1)が依存する演算の依存配列を基に、演算A(n1)の依存配列を設定する(図3AのステップS2)。まず、依存配列生成部101は、演算A(n1)の依存配列の全ての要素を、未設定を表現するもので埋める(図3BのステップS21)。図4では、未設定を表現するものの例として「−∞」を用いている。演算Aは離散時間制約c1の端点であるので、図4(b)の時間制約端点演算情報テーブル210から演算Aの順序番号1を取得し、依存配列の1番目の要素を0に設定する(図4(c)の演算Aの行)。
依存配列生成部101は、演算A(n1)の依存配列の設定が終わった後、演算C(n3)についても、同様に依存配列の設定を行い、3番目の要素が0で、それ以外の要素が未設定の依存配列を得る(図4(c)の演算Cの行)。
依存配列生成部101は、改めて、依存している演算に依存配列を設定していないものがない演算を探索する(図3AのステップS1)と、演算B(n2)は、依存配列が既に設定済みの演算A(n1)にしか依存していないので条件を満たす。
そこで、次に、依存配列生成部101は、演算B(n2)の依存配列を決定する(図3AのステップS3)。
依存配列生成部101は、演算B(n2)も離散時間制約c2の端点なので(図3BのステップS22)、図4(b)の時間制約端点演算情報テーブル210からBの順序番号2を取得し、依存配列の2番目の要素を0にする(図3BのステップS23)。
依存配列生成部101は、演算A(n1)の依存配列の1番目の要素は0であり、演算B(n2)の依存配列の1番目の要素は未設定なので、演算B(n2)の1番目の要素は演算A(n1)の依存配列の1番目の要素に演算A(n1)と演算B(n2)の遅延を加えたものである。演算A(n1)と演算B(n2)との間の枝(e1)の遅延は、図4(b)の枝遅延情報テーブル200から4であり、演算A(n1)の依存配列の1番目の要素に加えた4が演算B(n2)の依存配列の1番目の要素の値になる。以上の操作の結果、演算B(n2)の依存配列は、1番目の要素が4、2番目の要素が0、それ以外の要素は未設定になる(図4(c)の演算Bの行)。
複数の演算に直接依存する演算、例えば、演算D(n4)と演算E(n5)に依存する演算G(n7)の場合は、以下のように設定する。
最初に、依存配列生成部101は、依存する演算のうち演算E(n5)に着目する(図3BのステップS24)と、演算E(n4)の設定済みの要素と、演算E(n5)とG(n7)の間の遅延2から、演算G(n7)の依存配列は1番目の要素が1番目の要素が8、2番目の要素が4、3番目の要素が5、5番目の要素が2になる。
次に、依存配列生成部101は、依存する演算のうち演算D(n4)に着目する(図3BのステップS24)。
演算D(n4)と演算G(n7)の遅延は2である。
依存配列生成部101は、演算D(n4)の依存配列の1番目の値と遅延を加えた値9が、演算G(n7)の依存配列に設定されている1番目の要素8よりも大きい(図3BのステップS27)ので、依存配列の1番目の値を9に更新する(図3BのステップS28)。
同様の手順で、依存配列生成部101は、演算G(n7)の依存配列の2番目の要素を5に更新する。
4番目の要素については、演算G(n7)は未設定なので、演算D(n4)の依存配列の4番目の要素0と遅延2を加えた値になる。
3番目と5番目の要素については、演算D(n4)の依存配列の5番目の要素は未設定なので更新されない。
結局、演算G(n7)に設定される依存ベクトルは1番目の要素は9、2番目の要素は5、3番目の要素は5、4番目の要素は2、5番目の要素は2になる(図4(c)の演算Gの行)。
以上の処理を行うことで、たとえ遅延の経路が複数あっても、任意の時間制約の端点を構成する演算と、任意の演算の間の最小の遅延を計算することができるようになり、離散時間制約の生成の高速化が図れる。
図2の離散時間制約生成部102では、DFG記憶部111で記憶されているデータフローグラフ(DFG)と、離散時間制約記憶部112で記憶されている離散時間制約とを用いて、新しく離散時間制約を生成し、既存の離散時間制約と合わせて、その中からスケジューリング可能性判断部104で使用する連続時間制約を生成するための離散時間制約を新時間制約記憶部122に保存する。
図5は、図2の離散時間制約生成部102において、離散時間制約から新しい離散時間を生成する際の処理を示すフローチャートである。
(1)ステップS51
離散時間制約生成部102は、新規の離散時間制約を生成するために、与えられた離散時間制約のうちの2つで構成される離散時間制約の組を全て列挙する。
(2)ステップS52
離散時間制約生成部102は、この列挙された離散時間制約の組から新しい離散時間制約を生成する。
(3)ステップS53
離散時間制約生成部102は、新規に生成される離散時間制約が、依存配列から得られる最短遅延若しくは既存の離散時間制約と矛盾していた場合、スケジューリング失敗、又はスケジューリング可能性なしと判定する。また、新しく生成された離散時間制約と矛盾したものであった場合、スケジューリング失敗、又はスケジューリング可能性なしと判定する。また、離散時間制約生成部102は、新しく生成された離散時間制約と、依存配列から得られた演算間の最短遅延若しくは既存の時間制約と新規の時間制約を比較して、冗長なものがあったときは、冗長な離散時間制約を、図2の新離散時間制約記憶部122に記憶せず、冗長な離散時間制約を新離散時間制約記憶部122に記憶している場合は削除する。また、離散時間制約生成部102は、冗長でない離散時間制約を図2の新離散時間制約記憶部122に記憶する。
(4)ステップS54
離散時間制約生成部102は、新しい離散時間制約が生成されたか判定する。離散時間制約生成部102は、新しい離散時間制約が生成されていない場合、本実施例におけるスケジューリング可能性判定を終了する。
(5)ステップS55
離散時間制約生成部102は、新しい離散時間制約が生成された場合、新しい離散時間制約を含んだ離散時間制約の組み合わせを生成する。ここでは、離散時間制約生成部102は、ステップS52に戻り、上記の処理を繰り返す。
以後、煩雑さを避けるために「演算xは演算yに対して離散時間単位でn後ろの範囲、若しくはそれ以後にスケジューリングされる必要がある」という時間制約を「y−>x:nT−」と記載し、「演算xは演算yに対して離散時間単位でn後ろの離散時間の範囲、若しくはそれ以前にスケジューリングされる必要がある」という時間制約を「y−>x:−nT」と記載する。
離散時間制約が矛盾と判定されるのは、次のような場合である。
例えば、演算Aと演算Bの間に「A−>B:xT−」という既存の離散時間制約があり、新規に生成された時間制約が「A−>B:−yT」でy<xを満たす場合、AとBの遅延で二つの条件を満たせるものはないので矛盾と判定される。
離散時間制約が逆の場合も同様である。
また、着目する時間制約の端点を構成する演算Aと演算Bの依存配列から得られた演算Aから演算Bへの最短遅延zと新規に生成された時間制約「A−>B:−xT」において「T(x+1)<z」が成立する場合も矛盾である。
矛盾した離散時間制約の判定処理を行うことで、図2のスケジューリング可能性判断部に処理が行く前に、スケジューリングの可能性がないことを一部判定することができ、処理が高速になる。
離散時間制約が、冗長であると判定されるのは、例えば、着目する時間制約の端点を構成する演算Aと演算Bにおいて、2つの「A−>B:xT−」と「A−>B:yT−」という離散時間制約がある場合、xとyのうち小さいほうは冗長な離散時間制約である。また、2つの「A−>B:−xT」と「A−>B:−yT」という離散時間制約がある場合、xとyのうち大きいほうは冗長な時間制約である。
また、着目する時間制約の端点を構成する演算Aと演算Bの依存配列から得られた演算Aから演算Bへの最短遅延zと新規に生成された時間制約「A−>B:xT−」において「T(x−1)<z」が成立する場合は冗長である。
冗長な離散時間制約の判定処理を行うことで、生成する離散時間制約の枝の数を減らすことができ、連続時間制約への変換、及び正閉路検出での処理が高速化される。
図6A、図6Bは、図5のステップS52、ステップS53における既存の離散時間制約から新規の離散時間制約を生成し、既存の離散時間制約を削除する規則の例を示す図である。
図6A(a)と図6A(b)が冗長な離散時間制約を削除する方法の例を示すブロック図で、図6A(c)から図6B(k)までが新規の離散時間制約を生成する方法の例を示すブロック図である。
図6A(a1)では、演算A(n1)と演算B(n2)の間にA−>B:xT−という離散時間制約c1とA−>B:yT−という離散時間制約c2があった場合の状況を示している。この場合、xがyより大きければ離散時間制約c2は離散時間制約c1に含まれるので、冗長な離散時間制約と判断して削除できる。一方、逆にyがxより大きければ離散時間制約c1が冗長な離散時間制約と判断して削除できる。図6A(a2)に冗長な時間制約を削除した結果を示す。
図6A(b1)では、演算A(n1)と演算B(n2)の間にA−>B:−xTという離散時間制約c1とA−>B:−yTという離散時間制約c2があった場合の状況を示している。この場合、xがyより大きければ離散時間制約c1は離散時間制約c2に含まれるので、冗長な離散時間制約と判断して削除できる。逆に、yがxより大きければ離散時間制約c2が冗長な離散時間制約と判断して削除できる。図6A(b2)に、冗長な離散時間制約を削除した結果を示す。
図6A(c1)では、演算A(n1)、演算B(n2)、及び演算C(n3)の間に、A−>B:xT−という離散時間制約c1とA−>C:−yTという離散時間制約c2があった場合の状況を示している。この場合、演算B(n2)と演算C(n3)との間に新しくB−>C:(x−y)T−という離散時間制約を生成する(図6A(c2)の離散時間制約c3)。
図6A(d1)では、演算A(n1)、演算B(n2)、及び演算C(n3)の間に、A−>C:xT−という離散時間制約c1とB−>C:−yTという離散時間制約c2があった場合の状況を示している。この場合、演算A(n2)と演算B(n3)との間に新しくA−>B:(x−y)T−という離散時間制約を生成する(図6A(d2)の離散時間制約c3)。
図6A(e1)では、演算A(n1)、演算B(n2)、及び演算C(n3)の間に、A−>B:xT−という離散時間制約c1とB−>C:yT−という離散時間制約c2があった場合の状況を示している。この場合、演算A(n1)と演算C(n3)との間に新しくA−>C:(x+y)T−という離散時間制約を生成する(図6A(e2)の離散時間時間制約c3)。
図6A(f1)では、演算A(n1)、演算B(n2)、及び演算C(n3)の間に、A−>B:−xTという離散時間制約c1とB−>C:−yTという離散時間制約c2があった場合の状況を示している。この場合、演算A(n2)と演算C(n3)との間に新しくB−>C:−(x+y)Tという離散時間制約を生成する(図6A(f2)に離散時間時間制約c3)。
図6B(g1)では、演算A(n1)、演算B(n2)、演算C(n3)、及び演算D(n4)の間に、A−>B:−xTという離散時間制約c1とC−>D:−yTという離散時間制約c2があり、更に演算B(n2)は演算C(n3)に依存(図6B(g1)のe1)していたとする。この場合、演算A(n1)と演算C(n2)との間に新しくA−>C:−(x+y)Tという離散時間制約を生成する(図6B(g2)の離散時間制約c3)。
図6B(h1)では、演算A(n1)、演算B(n2)、演算C(n3)、及び演算D(n4)の間に、A−>B:xT−という離散時間制約c1とC−>D:yT−という離散時間制約c2があり、更に演算C(n3)は演算B(n2)に依存(図6B(h1)のe1)していたとする。この場合、演算A(n1)と演算D(n4)との間に新しくA−>C:(x+y)T−という離散時間制約を生成する(図6B(h2)の離散時間制約c3)。
図6B(i1)では、演算A(n1)、演算B(n2)、演算C(n3)、及び演算D(n4)の間に、A−>B:−xTという離散時間制約c1とC−>D:yT−という離散時間制約c2があり、更に演算B(n2)は演算D(n4)に依存していたとする。この場合、演算A(n1)と演算C(n3)との間に新しくC−>A:(y−x)T−という離散時間制約を生成する(図6B(i2)の離散時間制約c3)。
図6B(j1)では、演算A(n1)、演算B(n2)、演算C(n3)、及び演算D(n4)の間に、A−>B:−xTという離散時間制約c1とC−>D:yT−という離散時間制約c2があり、更に演算C(n3)は演算A(n1)に依存していたとする。この場合、演算B(n2)と演算D(n4)との間に新しくB−>D:(y−x)T−という離散時間制約を生成する(図6B(j2)の離散時間制約c3)。
図6B(k1)では、演算A(n1)、演算B(n2)、演算C(n3)、及び演算D(n4)の間に、A−>B:−xTという離散時間制約c1とC−>D:yT−という離散時間制約c2があり、演算C(n3)は演算A(n1)に依存し、更に演算B(n2)は演算D(n4)に依存していたとする。この場合、演算A(n1)と演算C(n3)、B(n2)と演算D(n4)との間に、それぞれA−>C:−(x−y)T(図6B(k2)の離散時間制約c3)、B−>D:(x−y)Tを生成する(図6B(k2)の離散時間制約c5)。
次に、離散時間制約生成部102は、新離散時間制約記憶部123に記憶されている各離散時間制約を連続時間制約に変換し、図2の新連続時間制約記憶部123に記憶する。
離散時間制約生成部102は、どれか一つの離散時間制約の組み合わせにおいてでも新しい時間制約が生成されたかチェックし(図5のステップS53)、生成されていたならば(図5のステップS54)、新たに発生する離散時間制約の全ての組み合わせを列挙して(図5のステップS55)、改めて新規の離散時間制約を生成することを、新規の離散時間制約が生成されなくなるまで行う。
図7は、図2の時間制約連続化部103での、離散時間制約を連続時間制約に変換する際の処理を示すフローチャートである。
(1)ステップS71
時間制約連続化部103は、離散時間制約記憶部112に記憶されている既存の離散時間制約と、時間制約連続化部103で生成され新連続時間制約記憶部123に記憶されている新規の離散時間制約について、それぞれの離散時間制約を以下の規則に従って、連続時間制約に変換する。時間制約連続化部103は、まだ変換していない離散時間制約がなくなるまで、この処理を繰り返す。
(2)ステップS72
時間制約連続化部103は、演算が離散時間境界をまたげるか判定する。
(3)ステップS73
時間制約連続化部103は、演算が離散時間境界をまたげない場合、離散時間制約「A−>B:xT−」を「A−>B:(T(x−1)+d(A))t−」と変換する。但し、AとBは任意の演算で、xは任意の離散時間、Tは離散時間単位の時間、d(A)は演算Aの遅延を表す。また、「A−>B:xt−」は連続時間制約を表し、「演算Bは演算Aより時間xかそれより後ろで実行される必要がある」という意味である。
(4)ステップS74
時間制約連続化部103は、演算が離散時間境界をまたげない場合、離散時間制約「A−>B:−xT」を「A−>B:−(T(x+1)−d(B))t」と変換する。但し、AとBは任意の演算、xは任意の離散時間、Tは離散時間単位の時間、d(B)は演算Bの遅延を表す。また、「A−>B:−xt」は連続時間制約を表し、「演算Bは演算Aより時間xかそれより前に実行される必要がある」という意味である。
(5)ステップS75
時間制約連続化部103は、演算が離散時間の境界をまたげる場合、離散時間制約「A−>B:xT−」を「A−>B:T(x−1)t−」と変換する。
(6)ステップS76
時間制約連続化部103は、演算が離散時間の境界をまたげる場合、離散時間制約「A−>B:−xT」を「A−>B:−T(x+1)t」と変換する。
(7)ステップS77
時間制約連続化部103は、スケジューリング可能性判定の時間制約として、既存の連続時間制約と新規の連続時間制約を新連続時間制約記憶部123に記憶する。すなわち、時間制約連続化部103は、変換された連続時間制約を、最後にまとめて新連続時間制約記憶部123に記憶する。但し、実際には、時間制約連続化部103は、変換された連続時間制約を、逐次、新連続時間制約記憶部123に記憶するようにしても良い。
この変換を行うことで、従来の連続時間制約に対して適用されるスケジューリング判定システムに適用することができるようになる。
図2のスケジューリング可能性判断部104では、従来の連続時間制約とデータフローグラフ(DFG)がある場合におけるスケジューリング判定を行うシステムが組み込まれている。新連続時間制約記憶部123に記憶された連続時間制約とデータフローグラフ(DFG)を有向グラフに変換した後、正閉路検出を行い、正閉路が検出された場合、スケジューリング可能性がないと判定し、そうでない場合スケジューリング可能性があると判定する。
以下に、本発明の第2実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、第1実施形態(図2)と同様の構成を持つ計算機であるが、スケジューリング可能性判断部104で、正閉路検出において依存配列を利用する点が相違する。
図8は、本実施形態において、図2のスケジューリング可能性判断部104での処理の例を示すフローチャートである。
(1)ステップS81
スケジューリング可能性判断部104は、スケジューリング用の連続図2の時間制約連続化部103で生成したスケジューリング用連続時間制約の端点を更新演算テーブルに登録し、スケジューリング用連続時間制約の端点の依存配列を初期値に設定する。初期値は時間制約の端点の演算と対応する位置の依存配列の要素が0でそれ以外の要素が未設定のものでも良いし、図2の演算依存配列で設定したものを流用しても良い。図2の演算依存配列で設定した依存配列を初期値として用いるほうがより高速に判定できる可能性がある。
(2)ステップS82
次に、スケジューリング可能性判断部104は、更新演算テーブルに登録された演算の依存配列を、対象演算が直接依存する演算と、対象演算があるのならば時間制約を基に更新する。
(3)ステップS83
スケジューリング可能性判断部104は、更新演算すべてについて依存配列の更新を行い、値が変化した依存配列が存在するか判定する。すなわち、スケジューリング可能性判断部104は、更新された依存配列が存在するか判定する。
(4)ステップS84
スケジューリング可能性判断部104は、更新された依存配列が存在しない場合、スケジューリング可能性があると判定する。
(5)ステップS85
スケジューリング可能性判断部104は、更新された依存配列が存在する場合、正閉路検出を行う。すなわち、スケジューリング可能性判断部104は、正閉路が検出されたか判定する。
(6)ステップS86
スケジューリング可能性判断部104は、正閉路が検出されない場合、更新された依存配列を持つ演算に依存するノードを更新演算テーブルに登録する。更に、スケジューリング可能性判断部104は、更新演算テーブルに登録された演算の依存配列を、対象演算が直接依存する演算と、対象演算があるのならば時間制約を基に更新する。すなわち、ステップS82に戻る。
(7)ステップS87
スケジューリング可能性判断部104は、正閉路が検出された場合、スケジューリング可能性がないと判定する。
図9A、図9B、図9Cは、図8のステップS82における依存配列の更新の際の処理を示すフローチャートである。
図9Aは、依存配列の値の更新の処理を示すフローチャートである。
(1)ステップS821
スケジューリング可能性判断部104は、対象演算が直接依存する演算がまだあるか判定する。
(2)ステップS822
スケジューリング可能性判断部104は、対象演算が直接依存する演算がある場合、直接依存する各演算について、依存配列の更新処理を行う。
(3)ステップS823
スケジューリング可能性判断部104は、対象演算が直接依存する演算がない場合、まだ連続時間制約が残っているか判定する。ここでは、スケジューリング可能性判断部104は、連続時間制約が残っていなければ、処理を終了する。
(4)ステップS824
スケジューリング可能性判断部104は、連続時間制約が残っている場合、各連続時間制約について、依存配列の更新処理を行う。
図9Bは、図9AのステップS822における直接依存する演算に対する依存配列の要素の更新を行う際の処理を示すフローチャートである。
(1)ステップS8221
スケジューリング可能性判断部104は、時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部104は、時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
(2)ステップS8222
スケジューリング可能性判断部104は、対象演算が直接依存する演算の依存配列の各要素について、直接依存する演算の対応する依存配列の要素に、対象演算と直接依存する演算の間の遅延を加えた値を計算する。このとき、スケジューリング可能性判断部104は、離散時間制約の境界がはいるかどうかで遅延が変わる場合、図3Cで示す方法で依存配列の値に遅延を加えた値を決定する。
(3)ステップS8223
スケジューリング可能性判断部104は、この計算された値が対象演算の依存配列の要素の値より大きいか判定する。このとき、スケジューリング可能性判断部104は、この計算された値が対象演算の依存配列の要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
(4)ステップS8224
スケジューリング可能性判断部104は、この計算された値が対象演算の依存配列の要素の値と比較して大きければ、対象演算の依存配列の対応する要素の値を更新する。
図9Cは、図9AのステップS824における連続時間制約の相手演算に対する依存配列の更新を行う際の処理を示すフローチャートである。
(1)ステップS8241
スケジューリング可能性判断部104は、連続時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部104は、連続時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
(2)ステップS8242
スケジューリング可能性判断部104は、連続時間制約の相手である演算Aの依存配列で設定済みの各要素について、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:xt−」で表現される連続時間制約であるか確認する。このとき、スケジューリング可能性判断部104は、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:xt−」で表現される連続時間制約でなければ、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:−xt」で表現される連続時間制約であると判定する。
(3)ステップS8243
スケジューリング可能性判断部104は、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:xt−」で表現される連続時間制約であれば、対象演算の依存配列の要素の値vに時間制約の値xを加えた値「v+x」を計算する。
(4)ステップS8244
スケジューリング可能性判断部104は、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:−xt」で表現される連続時間制約であれば、対象演算の依存配列の要素の値vから時間制約の値xを差し引いた値「v−x」を計算する。
(5)ステップS8245
スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値よりも大きいか確認する。このとき、スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
(6)ステップS8246
スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値よりも大きかったら、依存配列の対応する要素の値を更新する。
図10は、図8のステップS84における正閉路検出の処理を示すフローチャートである。
(1)ステップS841
スケジューリング可能性判断部104は、更新された依存配列が時間制約の端点かを判定する。
(2)ステップS842
スケジューリング可能性判断部104は、更新された依存配列が時間制約の端点の演算のものでなかったら、正閉路でないと判定する。
(3)ステップS843
スケジューリング可能性判断部104は、更新された依存配列が時間制約の端点の演算のものであったら、依存配列におけるその依存配列を所有する演算に対応する位置の要素が更新されていないか判定する。
(4)ステップS844
スケジューリング可能性判断部104は、更新されていたら正閉路が存在すると判定し、更新されていなかったら、正閉路なしと判定する。
正閉路検出の処理については、スケジューリング可能性判断部104は、各演算の依存配列を更新するたび、更新された演算に対して個別に正閉路の有無を判定するようにしても良いし、全ての更新演算の依存配列が更新された後に、更新された依存配列に対してまとめて正閉路の有無を判定するようにしても良い。
図2のスケジューリング部105では、図2のスケジューリング可能性判断部104でスケジューリング可能性があると判定した場合、従来の手法を用いて、適切なタイミングにDFGノードを配置する。
本実施形態における特有の効果として、離散時間正閉路検出(図8のステップS84)の際、離散時間制約を扱わなくて済み、処理の簡素化が図れる。
以下に、本発明の第3実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、基本的に第1実施形態(図2)と同様の構成を持つが、依存配列生成部101、離散時間制約生成部102、時間制約連続化部103、新離散時間制約記憶部122、新連続時間制約記憶部123を使用しない。
図11を参照すると、本実施形態のスケジューリング可能性判定システムは、スケジューリング可能性判断部104と、スケジューリング部105と、演算と演算同士の依存関係と、DFG記憶部111と、離散時間制約記憶部112と、連続時間制約記憶部113と、依存配列記憶部121と、スケジューリング済みDFG記憶部130を備える。
スケジューリング可能性判断部104は、スケジューリングが可能かどうか判定する。スケジューリング部105は、スケジューリング可能性があった場合、スケジューリングを実行する。
DFG記憶部111は、データフローグラフ(DFG)を記憶し、演算と演算同士の依存関係と遅延を記憶する。離散時間制約記憶部112は、演算間の離散的な時間単位で表現された時間制約を記憶する。依存配列記憶部121は、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する。連続時間制約記憶部113は、演算間の連続的な時間単位で表現された時間制約を記憶する。スケジューリング済みDFG記憶部130は、スケジューリング済みのデータフローグラフ(DFG)を記憶する。
図11におけるスケジューリング可能性判断部104は、基本的に図8に示すフローチャートと同様に動作するが、依存配列の初期化(図8のステップS81)と依存配列の値の更新(図8のステップS82)における処理が図8に示すフローチャートと異なる。
本実施形態においては、図2の依存配列生成部101が存在しないので、離散時間制約の端点の演算の依存配列の初期値は、図11におけるスケジューリング可能性判断部104に入力される。
図12Aは、依存配列の値の更新の処理を示すフローチャートである。
(1)ステップS821
スケジューリング可能性判断部104は、対象演算が直接依存する演算がまだあるか判定する。
(2)ステップS822
スケジューリング可能性判断部104は、対象演算が直接依存する演算がある場合、直接依存する各演算について、依存配列の更新処理を行う。
(3)ステップS823
スケジューリング可能性判断部104は、対象演算が直接依存する演算がない場合、まだ連続時間制約が残っているか判定する。
(4)ステップS824
スケジューリング可能性判断部104は、連続時間制約が残っている場合、各連続時間制約について、依存配列の更新処理を行う。
(5)ステップS825
スケジューリング可能性判断部104は、連続時間制約が残っていない場合、まだ離散時間制約が残っているか判定する。ここでは、スケジューリング可能性判断部104は、離散時間制約が残っていなければ、処理を終了する。
(6)ステップS826
スケジューリング可能性判断部104は、離散時間制約が残っている場合、各離散時間制約について、図12Bに示す更新処理を行う。
図12Bは離散時間制約を基に依存配列を更新する処理(図12AのステップS826)を示すフローチャートである。
(1)ステップS8261
スケジューリング可能性判断部104は、離散時間制約の相手の演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部104は、離散時間制約の相手の演算の依存配列の設定済み要素がなければ、処理を終了する。
(2)ステップS8262
スケジューリング可能性判断部104は、離散時間制約の相手である演算Aの依存配列で設定済みの各要素について、Bが対象演算で、xは任意の時間として「A−>B:xT−」で表現される離散時間制約であるか確認する。このとき、スケジューリング可能性判断部104は、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:xT−」で表現される離散時間制約でなければ、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:−xT」で表現される離散時間制約であると判定する。
(3)ステップS8263
スケジューリング可能性判断部104は、離散時間制約が、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:xT−」と表現できたら、時間制約の対象演算の依存配列の要素をvとしたとき、Tを離散時間単位として、「T×floor(v/T+x)」を計算する。
(4)ステップS8264
スケジューリング可能性判断部104は、離散時間制約が、Bが対象演算で、Aは任意の演算、xは任意の時間として「A−>B:−xT」と表現できたら、時間制約の対象演算の依存配列の要素をvとしたとき、Tを離散時間単位として、「T×floor(v/T−x)」を計算する。
(5)ステップS8265
スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値よりも大きいか確認する。このとき、スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値以下であれば、他に対象演算が直接依存する演算の依存配列の設定済み要素があるか確認する。
(6)ステップS8266
スケジューリング可能性判断部104は、計算された値が対象演算の依存配列の対応する要素の値よりも大きかったら、依存配列の対応する要素の値を更新する。
本実施形態では、演算の依存配列の生成(図2の依存配列生成部101)、新規の離散時間制約の生成(図2の離散時間制約生成部102)、連続時間制約への変換(図2の時間制約連続化部103)が省略できるため、処理が簡単になる。また、得られる結果も厳密になる。
以下に、本発明の第4実施形態について説明する。
本実施形態のスケジューリング可能性判定システムは、基本的に第1実施形態(図2)と同様の構成を持つが、離散時間制約生成部102で依存配列を元に新規の離散時間制約を生成する点が第1実施形態と異なる。
図13は、本実施形態における離散時間制約の生成の際の処理を示すフローチャートである。図7と比較して、事前に、依存配列から離散時間制約生成を行う処理(図13のステップS1301)がある点が異なる。
(1)ステップS1301
離散時間制約生成部102は、依存配列から離散時間制約を生成する。その後、離散時間制約生成部102は、生成された離散時間制約を離散時間制約記憶部112に記憶する。なお、離散時間制約生成部102は、直接、生成された離散時間制約を時間制約連続化部103に引き渡すようにすることも可能である。以降の処理は、図7と同様である。
(2)ステップS71
時間制約連続化部103は、離散時間制約記憶部112に記憶されている既存の離散時間制約と、時間制約連続化部103で生成され新連続時間制約記憶部123に記憶されている新規の離散時間制約について、それぞれの離散時間制約を以下の規則に従って、連続時間制約に変換する。時間制約連続化部103は、まだ変換していない離散時間制約がなくなるまで、この処理を繰り返す。
(3)ステップS72
時間制約連続化部103は、演算が離散時間境界をまたげるか判定する。
(4)ステップS73
時間制約連続化部103は、演算が離散時間境界をまたげない場合、離散時間制約「A−>B:xT−」を「A−>B:(T(x−1)+d(A))t−」と変換する。但し、AとBは任意の演算で、xは任意の離散時間、Tは離散時間単位の時間、d(A)は演算Aの遅延を表す。また、「A−>B:xt−」は連続時間制約を表し、「演算Bは演算Aより時間xかそれより後ろで実行される必要がある」という意味である。
(5)ステップS74
時間制約連続化部103は、演算が離散時間境界をまたげない場合、離散時間制約「A−>B:−xT」を「A−>B:−(T(x+1)−d(B))t」と変換する。但し、AとBは任意の演算、xは任意の離散時間、Tは離散時間単位の時間、d(B)は演算Bの遅延を表す。また、「A−>B:−xt」は連続時間制約を表し、「演算Bは演算Aより時間xかそれより前に実行される必要がある」という意味である。
(6)ステップS75
時間制約連続化部103は、演算が離散時間の境界をまたげる場合、離散時間制約「A−>B:xT−」を「A−>B:T(x−1)t−」と変換する。
(7)ステップS76
時間制約連続化部103は、演算が離散時間の境界をまたげる場合、離散時間制約「A−>B:−xT」を「A−>B:−T(x+1)t」と変換する。
(8)ステップS77
時間制約連続化部103は、スケジューリング可能性判定の時間制約として、既存の連続時間制約と新規の連続時間制約を新連続時間制約記憶部123に記憶する。すなわち、時間制約連続化部103は、変換された連続時間制約を、最後にまとめて新連続時間制約記憶部123に記憶する。但し、実際には、時間制約連続化部103は、変換された連続時間制約を、逐次、新連続時間制約記憶部123に記憶するようにしても良い。
図14は、依存配列から新規の離散時間制約を生成する際の処理を示したフローチャートである。
(1)ステップS1401
スケジューリング可能性判断部104は、対象演算の依存配列の設定済み要素がまだあるか確認する。このとき、スケジューリング可能性判断部104は、対象演算の依存配列の設定済み要素がなければ、処理を終了する。
(2)ステップS1402
スケジューリング可能性判断部104は、時間制約を「A−>B:xT−」型の離散時間制約に変換する。すなわち、スケジューリング可能性判断部104は、時間制約の端点の演算Aについて、依存配列の位置に対応する演算Bとその要素vについて、新規離散時間制約の値xをfloor(v/T)として計算し、「A−>B:xT−」として新規の離散時間制約に追加することを、全ての時間制約の端点、依存配列の設定済みの要素に対して行う。
(3)ステップS1403
スケジューリング可能性判断部104は、変換された離散時間制約が冗長かどうか判定する。このとき、スケジューリング可能性判断部104は、変換された離散時間制約が冗長であれば、他に対象演算が直接依存する演算の依存配列に設定済み要素があるか確認する。
(4)ステップS1404
スケジューリング可能性判断部104は、変換された離散時間制約が冗長でなければ、スケジューリング可能性判定の時間制約として、既存の離散時間制約と新規の離散時間制約を離散時間制約記憶部112に記憶する。すなわち、スケジューリング可能性判断部104は、変換された離散時間制約を、逐次、離散時間制約記憶部112に記憶する。但し、実際には、スケジューリング可能性判断部104は、変換された離散時間制約を、最後にまとめて、離散時間制約記憶部112に記憶するようにしても良い。また、新離散時間制約を記憶するために別途、新離散時間制約記憶部122を用意しても良い。
この構成によって、直接若しくは間接に依存する演算の間には必ず離散時間制約が存在することになるため、図6B(g1)から図6B(k2)までのパターンの処理が不要になり、新規の離散時間制約の処理が簡素化されて高速になるとともに、より厳密なスケジューリング可能性の判定ができるようになる。
本発明のスケジューリング可能性判定システムは、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶するDFG記憶手段と、正閉路検出を用いて時間制約と演算及びデータのスケジューリングの可能性を判定するスケジューリング可能性判定手段とを備えることにより、離散時間制約を含んだデータフローグラフのスケジューリング可能性を高速に判定することを図ったことを特徴とする。
また、本発明のスケジューリング可能性判定システムは、演算毎に離散時間制約の端点を構成する演算からの遅延を計算して依存配列を記憶するDFG記憶手段に記憶する依存配列生成手段と、既存の離散時間制約とデータフローグラフから新規の離散時間制約を生成する離散時間制約生成手段と、離散時間制約を連続時間制約に変換する時間制約連続化手段とを備えることにより、離散時間制約がある場合に、スケジューリング可能性の判定をより厳密にすることを図ることを特徴とする。
本発明のスケジューリング可能性判定システムは、依存配列生成手段の遅延を加える際、離散時間の境界が演算間にある場合を考慮することにより冗長な新規時間制約の生成を抑えて記憶容量の節約と高速化を図ることを特徴とする。
また、本発明のスケジューリング可能性判定システムは、離散時間制約の端点を構成する演算の間の最短遅延を新規の離散時間制約に変換することにより新規の離散時間制約の生成規則を簡素化して高速化を図ったことを特徴とする。
また、本発明のスケジューリング可能性判定システムは、スケジューリング可能性判定手段は、依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加え、離散時間制約の端点を構成する演算の依存配列の自分自身に対応する値を調べることによって正閉路検出の判定を行うことにより、離散時間の境界が演算の間の遅延に影響がある場合でも、より厳密なスケジューリング可能性判定を行うことを可能にしたことを特徴とする。
また、本発明のスケジューリング可能性判定システムは、正閉路検出のために、距離計算の際に離散時間制約をあらわに考慮しながら最短の遅延の計算を行うことで、より厳密に離散時間を考慮した判定を行うことができることを特徴とする。
以上のように、本発明は、プログラムされたコンピュータによってデータデータフローグラフのスケジューリング可能性を判定する装置に関する。特に、動作記述からレジスタ・トランスファ・レベル(RTL)の論理回路を自動生成するための高位合成における、データデータフローグラフのスケジューリング可能性を判定する方法及びシステムに関する。
本発明のスケジューリング可能性判定システムは、データフローグラフを記憶するDFG記憶手段と、データフローグラフに正閉路がないかを判定することによってスケジューリング可能性を判定するスケジューリング可能性判定手段と、各演算に対応する依存する演算の情報を格納する配列を記憶する依存配列記憶手段を備えることを特徴とする。
依存配列記憶手段は、対象演算が直接若しくは間接的に依存する演算のうち、時間制約の端点を構成する演算から対象演算までの最短の遅延を記憶することもできる。
本発明によれば、依存配列を用いることで依存する時間制約の端点を構成する任意の演算からの遅延を高速に計算することができるので、既存の、若しくは新規に生成する時間制約が遅延に対して冗長な時間制約かどうかを高速に判定することができる。また、任意の時間制約の端点からの距離を独立して計算できるようになるので、離散時間制約をまたぐ場合などのように、状況によって遅延が変化する場合においても、最小遅延を高速かつ厳密に求めることができ、スケジューリング可能性判定がより高速になる。
上記スケジューリング可能性判定システムは、データフローグラフと既存の離散時間制約から冗長な時間制約を削除し自明でない新しい時間制約を生成する離散時間制約生成手段と、各離散時間制約をその内容に従って、単数若しくは複数の連続時間制約に変換する時間制約連続化手段を含むことができる。
この構成によれば自明でない離散時間制約を新たに生成することができるので、連続時間制約に変換した際、より厳しい条件でスケジューリング可能性判定ができ、誤ってスケジューリング不可能なデータフローグラフを可能と判定する場合を減らすことができる。
上記スケジューリング可能性判定システムおいて、正閉路検出手段は、依存配列を用いて各時間制約の端点を構成する演算の距離を計算することができる。
この構成によれば、時間制約の端点を構成する演算によって違う遅延をそれぞれ計算することができるようになり、演算の間に離散時間単位の境界があった場合に遅延が変わるような場合でも、それぞれの最短遅延を計算することができるようになり、より厳密にスケジューリング可能性を判定できるようになる。また、それぞれの時間制約の端点を離散時間の単位先頭においた場合の遅延をあらわに取り扱うことができるので、離散時間制約を連続時間制約に変換する必要がなくなり、離散時間制約を連続化することに伴う条件の緩和がなくなり、より厳密にスケジューリング可能性を判定できるようになる。
上記スケジューリング可能性判定システムおいて、正閉路検出手段は、依存配列を用いて書く時間制約の端点を構成する演算の距離を計算し、距離の計算において、依存配列を用いて、離散時間制約をあらわに考慮して最短遅延を計算した結果を用いた正閉路検出が可能である。
この構成によれば、正閉路検出の際の距離の計算において、離散時間制約が含まれていても各離散時間制約の端点を構成する演算からの適切な最短遅延を計算できるようになり、それを用いてより厳密なスケジューリング可能性判定ができるようになる。また、離散時間制約から連続時間制約への変換も不要になるので、処理が簡素化し高速になる。
本発明によれば、依存配列を記憶する依存配列記憶手段を用意することにより、任意の演算と時間制約の端点を構成する演算が直接若しくは間接的に依存関係が存在するかどうか、そして依存している場合の最短遅延を、高速に計算できるようになる。その結果として、新規の離散時間制約の生成が高速になることや、離散時間制約の新規生成や離散時間をあらわに考慮したスケジューリング可能性判定が可能になることで、離散時間制約を含んだデータフローグラフにおいて、スケジューリング可能性を高速かつ厳密に判定するシステムが提供される。
本発明は、動作記述からRTL記述を生成するための動作合成プログラムや、パイプラン化を扱うコンパイラプログラムや、配送計画やタスクなどの一般的なスケジューリングを行うプログラムといった用途に適用できる。
例えば、本発明は、データベースから同義語を検索する情報検索装置や、情報検索装置をコンピュータに実現するためのプログラムといった用途に適用できる。また、同義語を検索する機能をパソコンやワードプロセッサに搭載されている、かな漢字変換装置や、コンピュータにかな漢字変換機能といった用途にも適用できる。
図1は、離散時間制約の連続時間制約化にまつわる問題を示すための簡単な例を示すである。 図2は、本発明の第1実施形態におけるスケジューリング可能性判定システムの構成を示すブロック図である。 図3Aは、データフローグラフ(DFG)から依存配列を生成する際の処理を示すフローチャートである。 図3Bは、依存している演算の依存配列から対象演算の依存配列を設定する際の処理を示すフローチャートである。 図3Cは、遅延を加える際の処理を示すフローチャートである。 図4は、データフローグラフ(DFG)から演算の依存配列を設定する例を示す図である。 図5は、離散時間制約から新しい離散時間を生成する際の処理を示すフローチャートである。 図6Aは、冗長な離散時間制約の削除と新規の離散時間制約の生成の規則を示す図である。 図6Bは、冗長な離散時間制約の削除と新規の離散時間制約の生成の規則を示す図である。 図7は、離散時間制約を連続時間制約に変換する際の処理を示すフローチャートである。 図8は、本発明の第2実施形態における依存配列を用いた正閉路検出の流れを示すフローチャートである。 図9Aは、依存配列を用いた正閉路検出における、依存配列の値の更新の処理を示すフローチャートである。 図9Bは、直接依存する演算に対する依存配列の要素の更新を行う際の処理を示すフローチャートである。 図9Cは、連続時間制約の相手演算に対する依存配列の更新を行う際の処理を示すフローチャートである。 図10は、正閉路が検出されたかどうかを判定するフローチャートである。 図11は、本発明の第3実施形態におけるスケジューリング可能性判定システムの構成を示すブロック図である。 図12Aは、依存配列の値の更新の処理を示すフローチャートである。 図12Bは、離散時間制約を基に依存配列を更新する処理を示すフローチャートである。 図13は、本発明の第4実施形態における離散時間制約の生成の際の処理を示すフローチャートである。 図14は、依存配列から新規の離散時間制約を生成する際の処理を示すフローチャートである。
符号の説明
101… 依存配列生成部
102… 離散時間制約生成部
103… 時間制約連続化部
104… スケジューリング可能性判断部
105… スケジューリング部
111… DFG記憶部
112… 離散時間制約記憶部
113… 連続時間制約記憶部
121… 依存配列記憶部
122… 新離散時間制約記憶部
123… 新連続時間制約記憶部
130… スケジューリング済みDFG記憶部

Claims (12)

  1. データフローグラフを記憶するDFG記憶手段と、
    対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列を記憶する依存配列記憶手段と、
    前記データフローグラフ及び前記依存配列を取得し、前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るスケジューリング可能性判定手段と
    を具備する
    スケジューリング可能性判定システム。
  2. 請求項1に記載のスケジューリング可能性判定システムであって、
    演算毎に離散時間制約の端点を構成する各演算からの遅延を計算して前記依存配列を生成し、前記依存配列を前記依存配列記憶手段に記憶する依存配列生成手段と、
    既存の離散時間制約と前記データフローグラフとに基づいて、新規の離散時間制約を生成する離散時間制約生成手段と、
    離散時間制約を連続時間制約に変換する時間制約連続化手段と
    を更に具備し、
    前記スケジューリング可能性判定手段は、前記連続時間制約に基づくスケジューリングの可能性を判定する
    スケジューリング可能性判定システム。
  3. 請求項2に記載のスケジューリング可能性判定システムであって、
    前記離散時間制約生成手段は、前記依存配列生成手段により計算された遅延を加える際、離散時間の境界が演算間にある場合を考慮し、冗長な新規の離散時間制約の生成を抑制して記憶容量の節約と高速化を図る
    スケジューリング可能性判定システム。
  4. 請求項2又は3に記載のスケジューリング可能性判定システムであって、
    前記離散時間制約生成手段は、離散時間制約の端点を構成する各演算の間の最短遅延を新規の離散時間制約に変換して、新規の離散時間制約の生成規則の簡素化、及び新規の離散時間制約の生成の高速化を図る
    スケジューリング可能性判定システム。
  5. 請求項1乃至4のいずれか一項に記載のスケジューリング可能性判定システムであって、
    前記スケジューリング可能性判定手段は、前記依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加え、離散時間制約の端点を構成する各演算の依存配列の自分自身に対応する値を調べて正閉路検出の判定を行い、離散時間の境界が演算の間の遅延に影響がある場合のスケジューリングの可能性の判定を厳密化することを図る
    スケジューリング可能性判定システム。
  6. 請求項5に記載のスケジューリング可能性判定システムであって、
    前記スケジューリング可能性判定手段は、正閉路検出のために、任意の時間制約の端点からの距離の計算の際に、離散時間制約を考慮しながら最短の遅延を計算し、離散時間を考慮したスケジューリングの可能性の判定を厳密化することを図る
    スケジューリング可能性判定システム。
  7. データフローグラフと、対象演算に対して離散時間制約の端点の各演算からの遅延を表す依存配列とを参照するステップと、
    前記依存配列を用いた正閉路検出を行い、時間制約、演算及びデータのスケジューリングの可能性を判定して、離散時間制約を含んだデータフローグラフのスケジューリングの可能性の判定を高速化することを図るステップと
    をコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
  8. 請求項に記載のスケジューリング可能性判定プログラムであって、
    演算毎に離散時間制約の端点を構成する各演算からの遅延を計算して前記依存配列を生成するステップと、
    既存の離散時間制約と前記データフローグラフとに基づいて、新規の離散時間制約を生成するステップと、
    離散時間制約を連続時間制約に変換するステップと、
    前記連続時間制約に基づくスケジューリングの可能性を判定するステップと
    を更にコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
  9. 請求項に記載のスケジューリング可能性判定プログラムであって、
    前記計算された遅延を加える際、離散時間の境界が演算間にある場合を考慮し、冗長な新規の離散時間制約の生成を抑制して記憶容量の節約と高速化を図るステップ
    を更にコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
  10. 請求項又はに記載のスケジューリング可能性判定プログラムであって、
    離散時間制約の端点を構成する各演算の間の最短遅延を新規の離散時間制約に変換して、新規の離散時間制約の生成規則の簡素化、及び新規の離散時間制約の生成の高速化を図るステップ
    を更にコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
  11. 請求項乃至10のいずれか一項に記載のスケジューリング可能性判定プログラムであって、
    前記依存配列を用いて演算の間に離散時間の境界が存在するかどうかを考慮しながら遅延を加えるステップと、
    離散時間制約の端点を構成する各演算の依存配列の自分自身に対応する値を調べて正閉路検出の判定を行い、離散時間の境界が演算の間の遅延に影響がある場合のスケジューリングの可能性の判定を厳密化することを図るステップと
    を更にコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
  12. 請求項11に記載のスケジューリング可能性判定プログラムであって、
    正閉路検出のために、任意の時間制約の端点からの距離の計算の際に、離散時間制約を考慮しながら最短の遅延を計算し、離散時間を考慮したスケジューリングの可能性の判定を厳密化することを図るステップ
    を更にコンピュータに実行させるための
    スケジューリング可能性判定プログラム。
JP2008087947A 2008-03-28 2008-03-28 スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム Active JP5207125B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008087947A JP5207125B2 (ja) 2008-03-28 2008-03-28 スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008087947A JP5207125B2 (ja) 2008-03-28 2008-03-28 スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2009244973A JP2009244973A (ja) 2009-10-22
JP5207125B2 true JP5207125B2 (ja) 2013-06-12

Family

ID=41306819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008087947A Active JP5207125B2 (ja) 2008-03-28 2008-03-28 スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5207125B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096438B2 (en) * 2002-10-07 2006-08-22 Hewlett-Packard Development Company, L.P. Method of using clock cycle-time in determining loop schedules during circuit design

Also Published As

Publication number Publication date
JP2009244973A (ja) 2009-10-22

Similar Documents

Publication Publication Date Title
US9292284B2 (en) Parallel arithmetic device, data processing system with parallel arithmetic device, and data processing program
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
JP5102823B2 (ja) 総テスト時間を最小にするようにテストシナリオを最適化するテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラム
JP2008090439A (ja) 自動合成装置と方法
WO2013105158A1 (ja) データ依存解析支援装置、データ依存解析支援プログラム、及びデータ依存解析支援方法
JP4830108B2 (ja) プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体
JP5207125B2 (ja) スケジューリング可能性判定システム、スケジューリング可能性判定方法、及びプログラム
JP3370304B2 (ja) 高位合成システム、高位合成方法、および、高位合成方法の実施に使用される記録媒体
US9383981B2 (en) Method and apparatus of instruction scheduling using software pipelining
JP7146367B2 (ja) 画像処理システム、情報処理装置、情報処理方法、および情報処理プログラム
JP6489985B2 (ja) プログラム開発支援装置およびプログラム開発支援ソフトウェア
JP2009217778A (ja) 動作合成装置、動作合成方法、および、プログラム
JP2006268165A (ja) 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体
JP2008129914A (ja) ソフトウェア検証用モデル生成装置、及びソフトウェア検証用モデル生成方法
CN100470468C (zh) 将高阶程序语言自动转换成硬件描述语言的方法
JP2018055249A (ja) システム構築支援装置、システム構築支援方法、および、システム構築支援プログラム
JP4702357B2 (ja) 動作レベル記述とレジスタ転送レベル記述間の等価性検証方法及び装置並びにプログラム
JP2005293349A (ja) 回路設計支援システム、設計方法及びプログラム
Hamann et al. Methods for multi-dimensional robustness optimization in complex embedded systems
JP2006221352A (ja) 異常系プロセス自動生成方法および異常系プロセス自動生成プログラム
JP2006099720A (ja) データフローグラフ処理方法
JP7207509B2 (ja) 画像処理システム、情報処理装置、情報処理方法、および、情報処理プログラム
US20090326901A1 (en) Apparatus and method for estimating change amount in register transfer level structure and computer-readable recording medium
JP5626724B2 (ja) アクセラレータ及びデータ処理方法
Derin et al. Towards a reliability-aware design flow for kahn process networks on noc-based multiprocessors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5207125

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150