JP2938170B2 - 機能設計支援装置 - Google Patents

機能設計支援装置

Info

Publication number
JP2938170B2
JP2938170B2 JP2237634A JP23763490A JP2938170B2 JP 2938170 B2 JP2938170 B2 JP 2938170B2 JP 2237634 A JP2237634 A JP 2237634A JP 23763490 A JP23763490 A JP 23763490A JP 2938170 B2 JP2938170 B2 JP 2938170B2
Authority
JP
Japan
Prior art keywords
cost
performance
design plan
cycle
plan
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.)
Expired - Fee Related
Application number
JP2237634A
Other languages
English (en)
Other versions
JPH04117570A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2237634A priority Critical patent/JP2938170B2/ja
Publication of JPH04117570A publication Critical patent/JPH04117570A/ja
Application granted granted Critical
Publication of JP2938170B2 publication Critical patent/JP2938170B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) 本発明はディジタルシステムの機能設計案についての
性能と実現コストとを評価して、その機能設計を効果的
に支援することのできる機能設計支援装置に関する。
(従来の技術) 近年、LSIの大規模化に伴い、その設計開発効率の向
上を目的とした各種のCADシステムが開発されている。
特に最近では、ディジタルシステムを設計開発する上で
の初期段階から支援を行うシステムとして、ソフトウェ
ア・アルゴリズムで記述された仕様を入力してその機能
設計を自動的に行い、これを実現するハードウェア構成
を生成する高位合成システムも開発されるに至ってい
る。
このようなシステムによれば、通常、その設計者は具
体的なハードウェア構成を意識することなく、実現した
い(所望とする)機能のアルゴリズムにのみ着目して、
汎用プログラミング言語と同様の構文を用いてハードウ
ェアの仕様を記述するだけで良い。するとシステム側で
は、上述した如くソフトウェア・アルゴリズムで記述さ
れた仕様を入力し、その仕様記述中で示されるオペレー
ションの順序性や並列性を解析し、オペレーションの実
行順序を決定すると云うスケジューリング処理を行う。
しかる後、システムでは上述した如くスケジューリング
された実行順序に従って、そのオペレーションを行う為
に必要なハードウェア資源である、例えば演算器,レジ
スタ等の記憶要素,転送路の割当てを行う、所謂データ
パス割当て処理を実行する。これら一連の処理は、予め
定められた一定のアルゴリズムに従って自動的に行われ
る。
このようなディジタルシステムの機能設計における上
記スケジューリングは、例えばASAP(As Soon As Possi
ble)法を用いて実行される。このASAP法は、並列度を
最大として、実行可能となった演算の全てを同一クロッ
クサイクルに割り当てて行くものである。このような手
法によれば、スケジューリング結果のクロックサイクル
数を最小として、その処理を短時間に高速に実行させる
ことが可能となる。然し乍ら、この種のスケジューリン
グによれば、特定のサイクルに多くの演算が集中してし
まうと云うケースが多々生じる。するとこれをハードウ
ェアで実現するには、必要となる演算器の総数が非常に
多くなると云う不具合が生じる。
一方、記憶要素の割当てについて考えると、単純に変
数と記憶要素とを1対1に割り付けるのではなく、一般
的にはより少ないハードウェア資源で実現する為に、変
数が有効である期間(ライフタイムと呼ぶ)を変数毎に
解析し、ライフタイムが重ならない変数同士を共有化す
ると云う手法が用いられる。この手法としては、例えば C.J.Tseng,D.P.Siewiorek; “Automated Synthesis of Data Paths in Digital S
ystems" IEEE Trans.on CAD Vol.CAD−5,No.3,JULY 19
86,pp.379〜395 に紹介されるようなクリーク分割の手法に発見的手法を
加味したものや、 F.J.Kurdahi,A.C.Parker; REAL[A Program for REgister ALlocation] 24th DA Conference,1987,pp.210〜 に紹介されるような自動レイアウトの[Left−edge]ア
ルゴリズムの手法を採用したもの等が提唱されている。
然し乍ら、これらの各手法では、一般的に完全な最適
解は得られないと云う根本的な問題がある。しかも特定
の変数を選択し、この変数をできる限り共有化しながら
行われる。この為、一般的には処理の最初の方で選択さ
れた変数については多くの共有化が行われ、処理の終り
の方で選択された変数についてはあまり共有化が行われ
ない。この結果、最初の方で選択された変数に対応する
記憶要素の転送路が複雑となり、終りの方で選択された
変数についての転送路が簡単なものとなるので、非常に
バランスの悪いデータパス構成となってしまうと云う大
きな問題がある。
また演算器の割当てにおいても、或るサイクルにおい
て同時に実行されない同種の演算については同一の演算
器に割当てることができる。従って上述した記憶要素の
割当ての場合と同様に、前述したクリーク分割に発見的
手法を加味した手法を採用することができる。しかしこ
の場合にあってもバランスの悪いデータパス構成となっ
てしまうことが否めない等の問題がある。
このようなことから従来では専ら、前述した高位シス
テムで生成された機能設計結果案に対して人手による修
正を施し、バランスのとれた質の良い機能設計に変更す
ることが行われている。この修正は、一般的にスケジュ
ーリング結果を図面化したデータクローグラフや、デー
タパス構造を図面化したデータパス図を基にして設計の
バランスの悪い部分を見つけ出し、これに対する改良案
を作成することにより行われる。
しかしその為の作業負担が非常に多大であると云う問
題がある。特に大規模な回路の設計では、高位システム
で生成された機能設計結果案を理解すること、即ちソフ
トウェア・アルゴリズムで与えられた仕様記述がどのよ
うに実現されたかを把握することが非常に困難である。
しかも上記機能設計案の性能と実現コストとに関する無
駄や、そのボトルネックの部分を検出する為には、非常
に手間が掛かり、作業効率が悪いと云う問題がある。そ
の上、人手により修正を行うので誤りが生じ易く、設計
の信頼性が悪くなると云う問題もあった。
更には機能設計案に対する修正案を作成する際、その
修正により機能設計案の性能と実現コストとがどのよう
に変化するかを定量的に評価する必要があるが、評価に
用いる情報を知る為の有効な手段がないと云う問題もあ
った。
(発明が解決しようとする課題) このようにソフトウェア・アルゴリズムで与えられる
仕様記述に従ってディジタルシステムの機能設計を行う
場合、従来ではその仕様記述が機能設計上でどのように
実現されたかを把握することが困難であり、その機能設
計をバランス良く修正することが非常に困難であると云
う問題があった。しかもその修正作業に多大な手間が掛
り、処理効率が悪いことのみならず、修正された機能設
計の信頼性を確保することが非常に困難であると云う問
題があった。
本発明はこのような事情を考慮してなされたもので、
その目的とするところは、仕様記述に従って作成された
ディジタルシステムの機能設計案を効率的に修正する為
に有効な情報を設計者に対して効果的に提示することが
でき、ディジタルシステムの機能設計を効果的に支援す
ることのできる機能設計支援装置を提供することにあ
る。
[発明の構成] (課題を解決するための手段) 本発明に係る機能設計支援装置は、 例えばソフトウェア・アルゴリズムで記述された仕
様を解析して求められるオペレーションの順序性・並列
性に従って決定されるオペレーションの実行順序、およ
びこの実行順序に従う上記オペレーションを実行するに
必要なハードウェア資源の割当て結果を機能設計案とし
て記憶する設計案記憶手段と、 この記憶手段に記憶された上記機能設計案の性能と
実現コストとを、例えば機能設計案に示される実行順序
でのオペレーションの実行サイクル数をその性能とし
て、また機能設計案に示されるオペレーションを実行す
るに必要なハードウェア資源中の、予め定められた種別
のハードウェア資源の数に従って算出する性能・コスト
算出手段と、 前記機能設計案について求められた性能と実行コス
トとに関する無駄およびボトルネックを、オペレーショ
ンの実行に用いられる演算器の種別毎に上記オペレーシ
ョンの各実行サイクルでの演算器の使用個数を配列とし
て求め、この配列における演算器の使用個数の最大値と
機能設計案に示される演算器の使用個数とを比較して、
またオペレーションの実行サイクル毎に、そのサイクル
で用いられる演算器と同じ種類の演算器がそれ以前のサ
イクルで全て用いられているか否かを調べる等して解析
する性能・コスト解析手段とを具備したことを特徴とす
るものである。
(作 用) このように構成された本発明によれば、設計案記憶手
段に記憶された機能設計案に対し、性能・コスト算出手
段にて前記機能設計案の性能と実行コストとを算出し、
更に性能・コスト解析手段にて前記機能設計案の性能と
実現コストとに関する無駄およびボトルネックの部分を
検出することで、機能設計案を変更した場合における性
能と実現コストとが評価される。
このようにして機能設計案の性能と実現コストとを算
出し、更にその機能設計案の無駄およびボトルネックの
部分はどこであるかを調べるので、例えば上記無駄やボ
トルネックの情報に基づいて前記機能設計案を変更した
場合、これによってその性能や実現コストがどの程度変
化するかを容易に知ることができる。この結果、機能設
計案の修正作業を効率的に行うことが可能となる。
(第1の実施例) 以下、本発明に係る機能設計支援装置の第1の実施例
について図面を参照して説明する。
第1図は実施例装置の概略構成を示すブロック図であ
る。この機能設計支援装置は、概略的には設計案記憶部
1,性能・コスト算出部2,および性能・コスト解析部3と
により構成され、更に必要に応じて機能合成部4を備え
て実現される。
尚、ここでは徒にその説明が複雑化することを避ける
べく、以下の説明では各演算は全て1クロックサイクル
で実現されるものとして仮定する。そして機能設計案の
性能は何サイクルで実行できるかを表すサイクル数で示
すこととし、またその実現コストについては演算器コス
トのみを考慮することとする。
設計案記憶部1は機能設計案を記憶するものであり、
スケジューリングテーブル,演算器テーブル,および演
算器コストテーブルを備えている。上記機能設計案は、
例えばソフトウェア・アルゴリズムで記述された仕様を
解析して求められるオペレーションの順序性・並列性に
従って決定されるオペレーションの実行順序、およびこ
の実行順序に従う上記オペレーションを実行するに必要
なハードウェア資源の割当て結果からなる。このような
機能設計案が上記スケジューリングテーブル,演算器テ
ーブル,および演算器コストテーブルにそれぞれ記憶さ
れる。
即ち、上述した如く求められる機能設計案は、例えば
第2図に示すようなデータフローグラフとして与えられ
る。この第2図に示すデータフローグラフにおいて、I
1,〜I5は外部入力を示しており、N1,〜N4はノード名、T
1,T2は内部信号名、O1,O2は外部出力をそれぞれ示して
いる。尚、ここに示すノードN1,〜N4は、それぞれ加算
演算を実行するノードである。また第2図に示す破線は
クロックサイクルの切れ目を示している。このような切
れ目により分割して示される第1サイクルではノードN1
とノードN2での加算処理がそれぞれ実行され、第2サイ
クルではノードN3の加算処理が、そして第3サイクルで
はノードN4の加算処理が実行されることになる。
このような第2図に示すデータフローグラフに対応し
た演算スケジュールは、例えば第3図に示すようにスケ
ジューリングテーブルに記憶される。このスケジューリ
ングテーブルは、何番目のクロックサイクルかを示すサ
イクル番号の項目,ノード名の項目,そのノードに対す
る入力信号名を示す入力の項目,ノードからの出力信号
名を示す出力の項目の合計4つの項目からなっている。
また第4図は演算器テーブルの構成を示している。こ
の演算器テーブルは第2図に示したデータフローグラフ
における各ノードに対する演算器の割り当て状況を示す
もので、ここではノードN1とN4,・ノードN2,ノードN3に
対してそれぞれ加算器を割り当てた例を示している。こ
の演算器テーブルは、加算器や減算器等の演算器の種類
を示す演算器タイプの項目、その演算器の使用個数を示
す個数の項目、個々の演算器を区別する為の演算器IDの
項目、どのノードの演算を受け持たせるかを示す対応ノ
ード名の項目、演算器が何番目のクロックサイクルで使
用されるかを示す使用サイクル番号の項目の合計5つの
項目により構成される。
またこの演算器コストテーブルでは、各演算器タイプ
に対する実現コストを、例えば第5図のような形式で格
納している。この実現コストは上述した演算器をハード
ウェアで実現した場合のゲート数やLSIチップ上での素
子面積を反映したものである。この第5図に示した実現
コストによれば、例えば加算器であればそのコストとし
て[100]が掛かることが示され、乗算器であればその
実現コストとして[600]が掛かることが示される。一
方、性能・コスト算出部2は上述した設計案記憶部1に
格納された情報に基づいて、その機能設計案についての
性能と実現コストとを算出し、その算出結果を出力表示
する。
この性能・コスト算出部2は、例えば第6図に示すよ
うな処理手続きによって機能設計案についての性能と、
その実現コストとを算出する。具体的には、先ず算出す
べき変数[TOTAL COST]を零に初期化し(ステップa
1)、前述した第3図に示したスケジューリングテーブ
ルからサイクル番号の最大値(この例では[3])を求
め、これを出力する(ステップa2)。
次に性能・コスト算出部2は各演算器タイプ毎に、前
記演算器テーブルから演算器タイプとその個数Kを求め
(ステップa3)、更に前記演算器コストテーブルから対
応する演算器タイプのコストCを求める(ステップa
4)。そして上記演算器タイプについての総コスト[T C
OST]を [T COST]=K×C として求め、この総コスト[T COST]を全体のコスト
[TOTAL COST]に [TOTAL COST]=[TOTAL COST]+[T COST] として加算する(ステップa5)。
しかる後、上述した如く求められた演算器タイプの総
コスト[T COST]を、その演算器タイプ[TYP]と個数
Kの情報と共に出力する(ステップa6)。
このような処理を演算器タイプのそれぞれについて実
行し、最終的には上述した如く総コスト[T COST]の累
計値として求められる全体のコスト[TOTAL COST]を出
力する(ステップa7)。
このような処理の結果、この例では演算器タイプが加
算器の1種類だけであり、前述した第3図に示した演算
器テーブルからその個数Kが[3]、また第5図に示し
た演算器コストテーブルから加算器についてのコストC
が[100]であるとの情報に従い、加算器の総コスト[T
COST]を 3×100=300 として求め、全体のコスト[TOTAL COST]を [TOTAL COST]=[T COST]=[300] として求める。この結果、性能・コスト算出部2によ
り、前述した第2図に示した機能設計案についての性能
とその実現コストとが、例えば第7図に示すように整理
して求められ、その算出結果が出力される。このような
出力結果から、前記機能設計案に対する性能とコストと
を容易に知ることが可能となる。
一方、性能・コスト解析部3は前記設計案記憶部1に
格納された情報に基づき、どの事項について解析するか
の指示入力を受けて、性能とコストの無駄およびボトル
ネックについて解析する。ここで指示入力される解析処
理の種別としては、[コストの無駄],[性能の無
駄]、[コストのボトルネック]、および[性能のボト
ルネック]の4種類がある。
第8図は指示入力として[コストの無駄]が指定され
た場合の前記性能・コスト解析部3における処理手続き
の流れを示している。この処理手続きは、基本的には前
述した演算器テーブルを参照して各演算器タイプ毎に各
サイクルでの演算器使用個数を配列Aとして求め、この
配列Aの最大値AMAXが演算器の個数Kよりも小さけれ
ば、演算器が冗長であるとして、つまり必要な個数より
多くの演算器が使用されているとして、その結果を出力
すると云う処理からなる。
具体的には、先ず配列Aを[0]に初期化し(ステッ
プb1)、演算器テーブルを参照して各演算器タイプ毎
に、その演算器が用いられるサイクルの番号(使用サイ
クル番号)Iを求め、これを A[I]=A[I]+1 として配列Aに書き込む(ステップb2)。この処理を使
用サイクル番号Iについて順に繰り返し実行して上記配
列Aを完成させる(ステップb3)。
しかる後、上述した如く求められた配列Aの内容を調
べて配列A中の最大値AMAXを求めると共に(ステップb
4)、前記演算テーブルから演算器の個数Kを求める
(ステップb5)。そして上記最大値AMAXと演算器の個数
Kとを比較し(ステップb6)、演算器の個数Kよりも最
大値AMAXが小さければ、前記演算器コストテーブルから
演算器のコストCを求め、無駄個数[K−AMAX]と無駄
コスト[無駄個数×C]とを算出する。そして演算器タ
イプ,演算サイクル数I,最大値AMAX,演算器の個数K,無
駄個数,および無駄コストを解析結果として出力する
(ステップb7)。
具体的には前述した第4図に示した演算器テーブルの
例では、先ず最初の使用サイクル番号が[1](ノード
N1に対応)であることから、その配列Aを A[1]=0+1=1 として得る。
以下の使用サイクル番号が[3],[1],[2]で
あるから、前記配列Aは A[3]=0+1=1 A[1]=1+1=2 A[2]=0+1=1 としてそれぞれ求められ、この結果、最終的には前記配
列Aは A[1]=[2,1,1] (I=1,2,3) として求められる。
この配列Aにおける最大の値はA[1]に示される値
[2]であるから、ここでの最大AMAXは[2]として求
められ、加算器が2個必要であることがわかる。また前
記演算器テーブルより加算器の個数Kは[3]であるこ
とが求められる。すると上記最大値AMAXと個数Kとの比
較から、[3>2]で[K>AMAX]なる条件を満たすこ
とが判定されるから、この場合、加算器としては[K−
AMAX=3−2=1]個、冗長であることが求められる。
更に加算器のコストとしては、前記演算器コストテーブ
ルから加算器の1個当りのコストが[100]であること
が求められるので、冗長な1個の加算器に起因するコス
トの無駄が[1×100=100]であることが算出される。
この結果、[コストの無駄]に対する解析結果が、例え
ば第9図に示すように出力される。
しかしてこの第9図に示される解析結果から、この例
では演算器タイプ[加算器]についてはサイクル番号
[1]おいて2個使用され、同時に使用される加算器の
最大個数が2個であるにも拘らず、その設計案では加算
器を3個使用することになっているので、加算器1個が
冗長であり、その為の無駄コストが[100]となってい
ることが明確に提示れることになる。
このような解析結果に基づき、例えば設計案修正ツー
ルを用いて前記設計案記憶部1に記憶された設計案に対
して修正を加える。そして、例えばノードN3で実行され
る加算処理を演算器ID[2]に示される加算器にマージ
し、これによって加算器の個数を3個から2個に減らし
た場合、前記演算器テーブルの内容は第10図に示すよう
に更新される。
次に[性能の無駄]が指定された場合の性能・コスト
解析部3における処理手続きについて説明する。
この処理手続きは、例えば第11図に示すように進めら
れる。この処理手続きは、基本的には各ノードの入力を
調べ、その入力の全てが1サイクル以上前に決定されて
いるノードを調べる。そしてそのノードが移動できる範
囲内よりも前のサイクルでそのノードと同じ演算器タイ
プの全てが使用されているか否かを調べることによりな
される。
つまり入力の全てが1サイクル以上前に決定されてい
るノードについては、それよりも前のサイクルに移動す
ることができる可能性がある。またノードを移動するこ
とのできる範囲内よりも更に前のサイクルにて、そのノ
ードで使用される演算器タイプと同じ演算器タイプの中
で、使用されていない演算器があれば、ノードはそのサ
イクルに移動することが可能である。従ってこのような
条件を満たしているノードが検出されれば、そのノード
の実行サイクルを前に移動することにより、コストの増
加を招くこと無く性能の向上を図ることが可能となる。
従って上述した条件を満たしているノードを検出すれ
ば、そのノードは性能の無駄の原因となっていると云え
る。
このような性能の無駄についての解析処理は、具体的
にはスケジューリングテーブルに記述された各ノードに
対して以下の処理を行うことによりなされる。
この処理は先ずスケジューリングテーブルからノード
のサイクル番号NCを求めると共に、変数ITMAXを[0]
に初期化することから開始される(ステップc1)。しか
る後、サイクル番号NCで示されるノードの各入力につい
て、そこに入力されるデータを決定し、且つ出力するノ
ードのサイクル番号ITをそれぞれ求める(サイクルc
2)。尚、入力データが外部から与えられるような場合
には、そのサイクル番号ITを[0]とする。
次に上述した如く求められるサイクル番号ITと前記変
数ITMAXとを比較し(ステップc3)、[IT>ITMAX]なる
条件を満たすサイクル番号ITが求められたとき、このサ
イクル番号ITにて前記変数ITMAXを更新し、これをその
最大値とする(ステップc4)。この最大値ITMAXは、サ
イクル番号NCにより示されるノードの入力を決定するデ
ータを最も遅くデータを出力するノードのサイクル番号
である。
このようにして最大値ITMAXが求められたならば、次
に上記サイクル番号NCと最大値ITMAXとが1サイクル以
上離れているか、つまり (NC−ITMAX)>1 であるか否かを判定する(ステップc5)。そして(NC−
ITMAX)が[1]よりも大きい場合には、サイクル番号N
Cにより示されるノードの入力の全てが1サイクル以上
前に決定されており、そのノードの実行サイクルを、よ
り前のサイクルに移動できる可能性があることが判定さ
れる。尚、(NC−ITMAX)が[1]よりも大きくない場
合には、そのサイクルを前に移動させることが不可能で
あることがわかるから、前述したステップc1の処理に戻
って次のノードに対する処理を行う。
しかしてサイクル番号NCにより示されるノードの処理
を、その前のサイクルに移動させても良いことがわかっ
たならば、次に前記演算器テーブルからそのノードの演
算器タイプNTYPを求め、同時にその演算器の個数Kを求
める(ステップc6)。
その後、先ずノードを移動させることのできる範囲内
のサイクル番号CYC=(ITMAX+1)から上記ノードの1
つの前のサイクル番号(NC−1)までに対して、第10図
に示した演算器テーブルより上記サイクル番号CYCにお
ける演算器タイプNTYPと、その使用個数KCYCとを求める
(ステップc7)。そして前述した演算器の個数Kと上記
使用個数KCYCとを比較する(ステップc8)。そして演算
器の個数Kの方が上記使用個数KCYCよりも大きければ
[K>KCYC]、そのノードと同じ演算器タイプNTYPの演
算器の全てがサイクル番号CYCで使用されておらず、未
使用の演算器が残されていると判断する。この結果、設
計案全体のコストを増加させること無く、そのノードを
サイクル番号CYCに移動することが可能なことが、その
解析結果として求められる。従ってこの場合には、その
ノード名と、ノードの演算器タイプNTYP,およびノード
のサイクル番号NCと、そのノードを移動することが可能
なサイクル番号CYCとを出力する(ステップc9)。
具体的には、第3図に示したスケジューリングテーブ
ルと、第10図に示した演算器テーブルに対して上述した
処理手続きを行う場合には次のようにして行われる。
即ち、前記スケジューリングテーブルからノードN1を
取り出し、そのノードのサイクル番号NCとして[1]を
得る。
次にその入力を調べると、ノードN1の入力はI1とI2で
あり、双方とも外部入力であるのでサイクル番号ITと前
記変数ITMAXは共に[0]となる。この場合、(NC−ITM
AX)が[1−0=1]となり、前述したステップc5に示
される[1]より大きいと云う判定条件を満たさないの
で、次のノードに対する処理へと移る。
以下同様にしてノードN2,N3に対する処理を進める。
しかしてノードN4に対する処理においては、そのサイ
クル番号NCが[3]であり,またノードN4の入力T1,T2
が共にサイクル番号[1]の処理からの出力であること
から、ここではサイクル番号ITと前記変数ITMAXは共に
[1]となる。そして(NC−ITMAX)が[3−1=2]
となり、前述したステップc5に示される[1]より大き
いと云う判定条件を満たすことになるので前述したステ
ップc6の処理に進むことになる。
さてステップc6では前述した第10図に示した演算器テ
ーブルより、ノードN4についての演算器タイプNTYPが
“加算器”であり、またその個数Kが[2]であるとの
情報を得る。
しかる後、次のステップc7では、 [CYC=ITMAX+1=1+1=2], [NC−1=3−1=2] であることから、上記[CYC=2]に対して以下の処理
を行う。但し、この例では1回だけ行うことになる。こ
こでは第10図に示した演算器テーブルより、サイクル番
号CYC[2]での加算器の使用個数KCYCが[1]であ
り、[2>1]として[K>KCYC]なる条件を満たして
いることが求められるので、例えば第12図に示すように
そのノード名,NTYP,NC,CYCをそれぞれ出力する。
このような出力結果からノードN4については、全体の
コストを増加させること無く、そのサイクル番号を
[3]から[2]に移動可能なことが提示されることに
なる。故にこのような出力結果に従い、例えばここでは
明記していない設計案修正ツールを用いることで、前述
した第2図に示したデータフローグラフを、例えば第13
図に示すようにノードN4のサイクル番号を[3]から
[2]に修正変更することができる。第14図および第15
図はこのようにしてデータフローグラフを修正変更した
場合における、前述した設計案記憶部1中の更新された
スケジューリングテーブルと演算器テーブルの内容をそ
れぞれ示している。。
ちなみにこのようにして修正変更された後の設計案記
憶部1の内容に対して、前記性能・コスト算出部2によ
る処理を実行すると、例えば第16図に示すような性能・
コスト算出結果を得る。この性能・コスト算出結果を前
述した第7図に示した修正前の性能・コスト算出結果と
比較すると、その性能・コストの無駄を解析して設計案
を修正したことにより、性能(サイクル数)を[3]か
ら[2]にして性能的に1.5倍向上させ、またコスト
(演算器のコスト)については[300]から[200]へと
[2/3]に減少させることが明らかとなる。
さて前記性能・コスト解析部3に対して[コストのボ
トルネック]や[性能のボトルネック]が指定された場
合、性能・コスト解析部3は次のようにしてその処理手
続きを進める。
第17図は[コストのボトルネック]が指定された場合
の処理手続きの流れを示している。
この処理は基本的には、各々の演算器タイプ毎に同じ
サイクル中で最も数多く使用されている個数AMAXと、2
番目に多く使用されている個数A2NDとを求め、更にその
コストの差CBを (AMAX−A2ND)×演算器コストC により算出し、その演算器タイプ,上記AMAXに対応した
サイクル番号I,最大個数AMAXの値,次に大きい個数A2ND
の値,およびコスト差CBを出力することによりなされ
る。
即ち、この処理手続きは先ず配列Aを[0]に初期化
する(ステップd1)。そして演算器テーブルを参照して
各演算器タイプ毎に、その演算器が用いられるサイクル
の番号(使用サイクル番号)Iを求め、これを A[I]=A[I]+1 として配列Aに書き込む(ステップd2)。この処理を使
用サイクル番号Iについて順に繰り返し実行して上記配
列Aを完成させる(ステップd3)。
しかる後、上述した如く求められた配列Aの内容を調
べて配列A中の最大値AMAXと2番目に多い個数A2NDとを
それぞれ求める(ステップd4)。そして演算器コストテ
ーブルからそのコストCを求め、 CB=(AMAX−A2ND)×C なる演算を実行してそのコスト差CBを算出する(ステッ
プd5)。その後、その演算器タイプと共に、上記最大値
AMAXに対応したサイクル番号I,AMAXの値,A2NDの値,お
よびコスト差CBを出力し(ステップd6)、これを[コス
トのボトルネック]についての解析結果として提示す
る。
具体的には第18図に示されるようなデータフローグラ
フに対してそのスケジューリングテーブル,演算器テー
ブルがそれぞれ第19図および第20図に示されるように与
えられるような設計案の場合には、前述した性能・コス
ト算出部2での処理により、その性能(サイクル数)が
[2]であり、またそのコストが[200]であることが
求められる。
尚、ここに示す設計案では、性能・コストについての
無駄はないので、仮に性能・コスト解析部3に対する指
示入力として[コストの無駄]や[性能の無駄]を指定
したとしてもその無駄は検出されない。しかし性能が多
少悪くなってもコストを更に減少させたい場合には、上
述した[コストのボトルネック]についての解析を指示
する。するとこの設計案に対して前述した第17図に示し
た処理手続きが起動され、 A[1]=2,A[2]=1 なる配列Aから演算器の最大個数AMAXが[2]、2番目
に多い個数A2NDが[1]としてそれぞれ求められる。こ
の結果、演算器を最大個数AMAX用いる場合と、2番目に
多い個数A2NDだけを用いる場合とのコスト差CBが CB=(2−1)×100=100 として求められ、その解析結果が第21図に示すように出
力されることになる。
従って設計者は、この出力結果から上記設計案につい
ての[コストのボトルネック]は第1サイクルで加算器
が2個用いられている点にあり、この部分を修正すれば
そのコストを[100]だけ減少させることが可能なこと
を見出すことができる。
ちなみに前述した設計案修正ツールを用いて上述した
第18図乃至第20図に示した設計案を第22図乃至第24図の
ように修正変更した場合、この修正された設計案に対し
て前記性能・コスト算出部2による処理を施せば、その
性能(サイクル数)が[3]、コストが[100]となる
ことが求められる。従ってこの性能・コストを修正前の
設計案についての性能・コストと対比することにより、
設計案に対する修正を施すことにより、性能については
[1]サイクル余分に必要となり性能低下となるが、コ
ストについては[200]から[100]へと減少させること
が可能であることが明らかとなる。
このようにして、性能・コストに無駄が無い設計案に
対して、性能が多少落ちても、そのコストを減少させた
いという要求があった場合、上述した処理手続きを起動
することにより、容易にどの部分がコストに対するボト
ルネックとなっているかを検出することが可能となり、
前述した機能設計案についての修正作業を効率的に行う
ことが可能となる。
これに対して前記性能・コスト解析部3に[性能のボ
トルネック]が指定された場合には、例えば第25図に示
すようにその処理手続きが進められる。この場合には、
前述した[性能の無駄]が指定された場合の第11図に示
す処理手続きと同様に、先ずスケジューリングテーブル
からノードのサイクル番号NCを求めると共に、変数ITMA
Xを[0]に初期化することから開始する(ステップe
1)。しかる後、サイクル番号NCで示されるノードの各
入力について、そこに入力されるデータを決定し、且つ
出力するノードのサイクル番号ITをそれぞれ求める(ス
テップe2)。尚、入力データが外部から与えられるよう
な場合には、そのサイクル番号ITを[0]とする。
そして上記サイクル番号ITと前記変数ITMAXとを比較
し(ステップe3)、[IT>ITMAX]なる条件を満たすサ
イクル番号ITが求められたとき、このサイクル番号ITに
て前記変数ITMAXを更新し、これをその最大値とする
(ステップe4)。
このようにして最大値ITMAXが求められたならば、次
に上記サイクル番号NCと最大値ITMAXとが1サイクル以
上離れているか、つまり (NC−ITMAX)>1 であるか否かを判定する(ステップe5)。そして(NC−
ITMAX)が[1]よりも大きい場合には、サイクル番号N
Cにより示されるノードの入力の全てが1サイクル以上
前に決定されており、そのノードの実行サイクルを、よ
り前のサイクルに移動できる可能性があるとして判定す
る。尚、(NC−ITMAX)が[1]よりも大きくない場合
には、そのサイクルを前に移動させることが不可能であ
ることがわかるから、前述したステップe1の処理に戻っ
て次のノードに対する処理を行う。
しかしてサイクル番号NCにより示されるノードの処理
を、その前のサイクルに移動させても良いことが分かっ
たならば、次に前記演算器テーブルからそのノードの演
算器タイプNTYPを求め、同時にその演算器の個数Kを求
める(ステップe6)。
以上のような処理を行った後、[性能のボトルネッ
ク]についての解析処理では、ノードを移動することが
可能なサイクル番号CYCを CYC=ITMAX+1 またその移動先のサイクル番号CYCでの演算器の使用個
数KCYC KCYC=K+1 としてそれぞれ求める(ステップe8)。そして演算器コ
ストテーブルからそのノードの演算器タイプNTYPについ
てのコストCを求め、現在のサイクルでの演算器のコス
トC1を C1=K×C として、またサイクル番号CYCで示される移動先サイク
ルでの演算器のコストC2を C2=KCYC×C=(K+1)×C としてそれぞれ求め(ステップe8)、これらの情報をそ
のノード名やノードタイプNTYPの情報と共に出力する
(ステップe9)。
具体的には、例えば前述した第22図乃至第24図にそれ
ぞれ示される設計案について性能・コスト算出部2によ
る前述した処理を実行した場合、その性能(サイクル
数)が[3]であり、またそのコストが[100]である
ことが求められる。しかしこの設計案には性能・コスト
の無駄がないので、[コストの無駄]や[性能の無駄]
についての解析処理を指示してもその無駄は検出されな
い。
しかしこの設計案に対してコストが多少増加しても、
その性能を更に向上させたいと云う要求に対して上述し
た第25図に示す処理手続きを起動すると、ノードN1(NC
=1)に対してはITMAXが[0]であり、[NC−ITMAX]
が[1−0=1]として求められ、[1]より大きいと
云う条件を満たさないので、次のノードに対する処理に
移る。しかして次のノードN2(NC=2)では、ITMAXが
[0]であるが、[NC−ITMAX]が[2−0=2]とし
て求められ、[1]より大きいので、前述した第25図に
示すステップe6以降の処理が起動される。そしてその処
理手続きにおいて、 K=1 CYC =ITMAX+1=0+1=1 KCYC=K+1=1+1=2 C1 =K×C=1×100=100 C2 =(K+1)×C=2×100=200 がそれぞれ求められ、その結果が、例えば第26図に示す
ように出力される。
このような出力結果から、そのコストが[100]だけ
増加するが、ノードN2をサイクル番号[2]からサイク
ル番号[1]に移動可能であることが明らかとなる。
従って前述した設計案修正ツールを用いて、例えば第
27図に示すようにノードN2をサイクル番号[1]に移動
させるべく修正変更し、その後、この修正された設計案
に対して[性能の無駄]を指定して前記性能・コスト解
析部3による解析処理を施すことにより第28図に示すよ
うな解析結果が求められる。この結果、ノードN3の処理
をサイクル番号[3]からサイクル番号[2]に移動さ
せる修正処理を行うことで、ここでは前述した第18図乃
至第20図に示した設計案が求められることになる。そし
てこれらの性能・コストについての解析結果を対比する
ことにより、コストについては[100]だけ増加する
が、その性能をサイクル数にして[3]から[2]へと
向上させ得ることが明らかとなる。
以上のようにこの第1の実施例に示されるように、本
発明によれば、機能設計案についての性能や実現コスト
の無駄,更には性能やコストに関するボトルネックの部
分はどこであるか、またこれを修正した場合の性能や実
現コストがどのように、或いはどの程度変化するかを容
易に知ることが可能となる。この結果、機能設計案に対
する修正作業を、その目的に沿って効率的に行うことが
可能となる。
(第2の実施例) 次に本発明の第2の実施例について説明する。この実
施例は前記性能・コスト解析部3に対して[コストのボ
トルネック]、[性能のボトルネック]が指定された場
合における前述した実施例とは別の処理形態を実現した
ものである。
第29図は性能・コスト解析部3に対して[コストのボ
トルネック]が指定された場合における、この実施例で
の処理手続きを示している。この処理手続きでは、基本
的には演算器タイプ毎の各演算器IDに対して、全体のサ
イクル数中のどの程度(何割程度)のサイクルでその演
算器をしているかという割合(使用率)AVを求め、例え
ばその使用率が5割以下である演算器を求め、その情報
を出力する処理からなる。
即ち、この処理は、先ずスケジューリングテーブルか
ら機能設計案のサイクル数を、そのサイクル番号の最大
値CYCNUMから求めることから開始される(ステップf
1)。しかる後、各演算器のタイプ毎に以下の処理を繰
り返し実行する。
具体的には、演算器テーブルから演算器タイプTYPEの
情報を読み込み(ステップf2)、この演算器タイプTYPE
に従って前記演算器テーブルから求められる演算器IDに
従い(ステップf3)、その演算器IDが用いられる使用サ
イクル数UCNUMと、その演算器IDが用いられるサイクル
の全サイクルに対する使用率AVを AV=UCNUM/CYCNUM として求める(ステップf4)。そしてその使用率AVが全
サイクル中の、例えば5割以上であるか否かを判定し
(ステップf5)、5割に満たない場合には、その演算器
TYPEと共に、演算器IDおよび上記使用率AVを出力する
(ステップf6)。更にこの出力情報に従って前記前記演
算器テーブルから上記演算器TYPEの演算器IDに対応する
ノードを求め、その対応ノード名を出力する(ステップ
f7)。
例えば前述した第18図に示すようなデータフローグラ
フであって、スケジューリングテーブルと演算器テーブ
ルとがそれぞれ第19図および第20図で示されるような設
計案が与えられた場合、前述した性能・コスト算出部2
での処理により上記機能設計案の性能(サイクル数)が
[2]であり、またそのコストが[200]であることが
求められる。しかしてこの機能設計案では性能・コスト
の無駄はないので、仮に前記性能・コスト解析部3に対
して[コストの無駄]や[性能の無駄]を指定したとし
てもそこでは無駄は検出されない。しかし性能は多少落
ちても良いからコストをもっと減少させたい場合、上述
した機能設計案に対して前述した第29図に示す処理手続
きを適用すると、先ずその全サイクル数CYCNUMが[2]
として求められる(ステップf1)。
しかる後、演算器テーブルから演算器タイプTYPEとし
て[加算器]の情報を得(ステップf2)、先ず最初の演
算器ID[1]に対してその使用サイクル数UCNUMを求め
る。この場合、演算器ID[1]は、サイクル番号
[1],[2]の2つのサイクルで使用されているか
ら、その使用サイクル数UCNUMは[2]として求めら
れ、またその使用率AVは AV=UCNUM/CYCNUM=2/2=1 として算出される(ステップf4)。この場合、使用率AV
が[1]であり、[0.5以下]なる条件を満たさないか
ら、次の演算器IDに対する処理に移る。
しかして次の演算器ID[2]に対しては、同様の処理
により使用サイクル数UCNUMとして[1],その使用率A
Vとして[0.5]を得る。この場合、使用率AVが[0.5以
下]なる条件を満たすことになるので、つまり全サイク
ル数の5割以下しか使用されていないので次のステップ
f6以降の処理を行うことになる。そしてステップf6,f7
では、演算器TYPEの情報として[加算器]を得、その演
算器ID[1]の情報とその使用率AV[0.5],そしてそ
の対応ノード名N2を、例えば第30図に示すように出力す
る。
このようにして出力される解析結果に従えば、[コス
トのボトルネック]はノードN2に対応した加算器ID
[2]の使用率が低いことに起因してこのノードN2の部
分にあり、この部分を修正すればそれ程性能を低下させ
ること無く、そのコストを効果的に減少させることが可
能なことが知らしめられる。
従って仮に前述した設計案修正ツールを用いて、前述
した機能設計案を第22図乃至第24図のように修正したと
すると、この修正された機能設計案に対して前記性能・
コスト算出部2による処理を実行することにより、その
性能(サイクル数)が[3]となり、またコストが[10
0]となることがわかる。従って修正前後の機能設計案
についての性能とコストとを比較すれば、性能について
は[1]サイクル余分に必要となりその性能低下が伴う
ものの、コストについては[200]から[100]へと減少
させることが可能であることが分かることになる。
このようにして性能・コストに無駄が無い設計案に対
して、性能が多少落ちてもコストを減少させたいという
要求があった場合に、上述した第29図に示す処理続きを
実行することにより、容易にどの部分がボトルネックと
なっているかを検出・把握することが可能となり、その
修正作業を効率的に行うことが可能となる。
尚、この第2の実施例では、使用率AVが[0.5]以下
であるか否かを調べてたが、この値として[0.4]や
[0.6]等のように別の値として設定しても良いことは
勿論のことであり、また性能・コスト解析部3を起動す
る際、設計仕様に応じてマニュアル的にその都度、設定
するようにしても良い。
(第3の実施例) 次に本発明の第3の実施例について説明する。この第
3の実施例は、前述した第1図に示した機能合成部4を
積極的に利用して機能設計案に対する解析結果に基づい
て、例えば演算器数やサイクル数に対する制約を与え、
その制約を満たすスケジューリング処理や演算器の割り
当て等を行い、修正された機能設計案を自動的に合成す
るようにしたものである。
この演算器数やサイクル数に対する制約を与えながら
機能設計案を自動的に合成する手法については、基本的
には B.M.Pangrle; “Splicer A Heuristic Approach to Connectivity Binding" 25th DA Conference,1988,pp.536〜 等に開示される手法を用いて実現される。
さてこの第3の実施例では、前記性能・コスト解析部
3に対して[性能]についての解析指示がなされた場
合、性能・コスト解析部3は基本的には第31図に示すよ
うな処理手続きに従って性能についての無駄とそのボト
ルネックについて解析し、その解析結果を出力する。
即ち、[性能の無駄]についての解析指示がなされる
と、性能・コスト解析部3は、先ず性能・コスト算出部
2で求められた機能設計案に対する算出結果を前記設計
案記憶部1中の性能・コスト解析結果テーブルに書き込
み(ステップg1)、上記機能設計案の各演算器タイプの
個数を前記演算器テーブルから求める(ステップg2)。
その後、各演算器タイプ毎に、そのタイプの演算器を
1個増加させたときの制約条件の下で機能合成部4を起
動して新たな機能設計案を求める(ステップg3)。そし
てこの新機能設計案に対して前記性能・コスト算出部2
を起動し、新機能設計案についての性能とコストとを求
めてその結果を前記性能・コスト解析結果テーブルに書
き込む(ステップg4)。
このような処理を演算器タイプを異ならせてそれぞれ
実行し、各演算器タイプに対応して求められる新機能設
計案のそれぞれを性能・コスト解析結果テーブルに求め
る。
しかる後、上記各新機能設計案についての効果Eを後
述するようにそれぞれ求め、その効果Eを各新機能設計
案に対応付けて性能・コスト解析結果テーブルに書き込
み(ステップg5)、その結果を出力する(ステップg
6)。
例えば第32図に示すように、加算器が2個,乗算器が
2個用いられるデータフローグラフにて表現される設計
案がある場合、先ずこの設計案に対して前記性能・コス
ト算出部2により前述した第6図に示した処理続きに従
ってその性能とコストとを算出する。この場合、上記機
能設計案についての性能(サイクル数)が[4]であ
り,そのコストが[1400]であるとの算出結果が求めら
れる。
このような設計案に対して前記性能・コスト解析部3
に[性能の無駄]についての解析処理が指示されると、
性能・コスト解析部3は前述した第31図に示した処理手
続きに従って、先ず前記性能・コスト算出部2の結果を
性能・コスト解析結果テーブルに書き込み(ステップg
1)、演算器テーブルから上記機能設計案の各演算器タ
イプについての個数、つまり加算器が2個,乗算器が2
個であるとの情報を得る(ステップg2)。
尚、設計案記憶部1内に設けられる性能・コスト解析
結果テーブルは、例えば第33図に示すように、設計名,
サイクル数,トータルコスト,演算器タイプ・個数,お
よび効果の各項目を備えている。
しかる後、演算器タイプ毎にその演算器タイプの個数
を1個増加させ、他の演算器タイプの個数をそのままの
状態としたときの制約の下で、機能合成部4を起動し、
新たな機能設計案を求める(ステップg3)。そしてこの
新たな機能設計案についての性能とコストとを前記性能
・コスト算出部2にて求め、その結果を前記性能・コス
ト解析結果テーブルに書き込む(ステップg4)。
具体的には、この例では先ず加算器を1個増加させ、
加算器3個,乗算器2個としたときの制約の基で機能合
成部4を起動し、新たな機能設計案を、例えば第34図に
示すようなデータフローグラフとして求める。この新た
な機能設計案をここでは新機能設計案1とする。しかし
てこの新機能設計案1に対して前記性能・コスト算出部
2を起動し、その性能(サイクル数)が[3],コスト
が[1500]であるとの算出結果を得、これを前記性能・
コスト解析結果テーブルに書き込む。
同様にして今度は乗算器を1個増加させ、加算器2
個,乗算器3個としたときの制約の基で機能合成部4を
起動して新たな機能設計案を求める。このときに求めら
れる新たな機能設計案を、ここでは新機能設計案2とす
る。この新機能設計案2についてのデータフローグラフ
は前述した第32図に示した機能設計案のデータフローグ
ラフと同じとなる。そして上記新機能設計案2について
の性能(サイクル数)が[4]であり、そのコストが
[2000]であるとの解析結果が求められので、この結果
を同様にして前記性能・コスト解析結果テーブルに書き
込む。
しかる後、次に、例えば第35図に示すような処理手続
きを実行することで上記各新機能設計案に対する改善効
果をそれぞれ算出し、その結果を前記性能・コスト解析
結果テーブルに書き込み(ステップg5)、その結果を出
力する(ステップg6)。
この第35図に示す効果算出の処理手続きについて説明
すると、先ず前記性能・コスト解析結果テーブルより前
述した第32図に示す機能設計案のサイクル数CYCとトー
タルコストCOSTとを読む(ステップh1)。この例では、
機能設計案についてのサイクル数CYCとして[4],ト
ータルコストCOSTとして[1400]を得る。
次に前記各新機能設計案毎に性能・コスト解析結果テ
ーブルを参照してそのサイクル数CYCNとトータルコスト
COSTNとを求め、新たに求められた機能設計案について
の効果Eを DCYC =CYC−CYCN DCOST=COSTN−COST E=DCYC/DCOST として算出し(ステップh3,h4)、これを前記性能・コ
スト解析結果テーブルに書き込む(ステップh5)。
具体的には新機能設計案1に対しては、そのサイクル
数CYCNが[3]であり、トータルコストCOSTNが[150
0]であることが求められることから、その効果Eは DCYC=CYC−CYCN=4−3=1 DCOST=COSTN−COST=1500−1400=100 E=DCYC/DCOST=1/100 として求められる。また同様にして新機能設計案2に対
しては、そのサイクル数CYCNが[4]であり、トータル
コストCOSTNが[1400]であることが求められることか
ら、その効果Eは DCYC=CYC−CYCN=4−4=0 DCOST=COSTN−COST=1400−1400=0 E=DCYC/DCOST=0/0 として求められる。
このようにして求められる新機能設計案1についての
効果E[1/100]と、新機能設計案2についての効果
[0]とが性能・コスト解析結果テーブルにそれぞれ書
き込まれ、その結果が前述した第33図に示すように求め
られて出力される。
この性能・コスト解析結果テーブルに求められた情報
の前述したステップg6に示される出力処理は、例えば第
36図に示すように、先ず機能設計案の性能・コスト解析
結果テーブルの内容を出力し(ステップi1)、次に各新
機能設計案を、その効果Eが大きい順にソートして、効
果Eが[0]より大きい新機能設計案の性能・コスト解
析結果テーブルの内容をソート順に出力することにより
なされる(ステップi2)。この結果、例えば第37図に示
すようにその出力結果が求められることになる。
以上処理結果から、ここでは第32図に示したデータフ
ローグラフにより表現される機能設計案をより高速化
し、その実行サイクル数を減らす為には、第34図に示す
ようなデータフローグラフとして表現されるように、加
算器を1個増加させた新機能設計案1とすることがコス
トの増加に対する性能の向上、つまり実行サイクル数の
減少の割合が最も大きく、修正効果が最も効率的である
ことが明らかとなる。従って前述した機能設計案を上記
新機能設計案1に修正することにより、コストについて
[1400]から[1500]へと増加するものの、そのコスト
の増大に比較してそのサイクル数を[4]から[3]へ
と大きく減少させることが可能であることが提示される
ことになる。この結果、設計者は、上述した情報を基に
して、どちらの設計案が要求された仕様に近いかを容易
に判断することが可能となり、効率良く機能設計案の修
正作業を行うことが可能となる。
次に前述した第32図に示したデータフローグラフによ
り示される機能設計案に対して、性能・コスト解析部3
に対して[コストの無駄]が指示された場合についての
処理手続きについて説明する。
この場合、前記性能・コスト解析部3は、例えば第38
図に示すような処理手続きを実行する。
即ち、性能・コスト解析部3は、先ず前記性能・コス
ト算出部2の結果を性能・コスト解析結果テーブルに書
き込み(ステップj1)、演算器テーブルから上記機能設
計案の各演算器タイプについての個数、つまり加算器が
2個,乗算器が2個であるとの情報を得る(ステップj
2)。
しかる後、その使用個数が2個以上の演算器タイプ毎
にその演算器タイプの個数を1個減少させ、他の演算器
タイプの個数をそのままの状態としたときの制約の下
で、機能合成部4を起動し、新たな機能設計案を求める
(ステップj3)。そしてこの新たな機能設計案について
の性能とコストとを前記性能・コスト算出部2にて求
め、その結果を前記性能・コスト解析結果テーブルに書
き込む(ステップj4)。
その後、上述した処理手続きにより演算器タイプ毎に
求められる各新機能設計案に対する効果をそれぞれ算出
し、その結果前記性能・コスト解析結果テーブルに書き
込み(ステップj5)、その結果を出力する(ステップj
6)。
具体的には、前述した第32図に示す例では、演算器テ
ーブルから上記機能設計案の各演算器タイプについての
個数、つまり加算器が2個,乗算器が2個であるとの情
報を得る。
次に先ず、加算器を1個減少させ、加算器を1個,乗
算器を2個としたときの制約の基で機能合成部4を起動
し、新たな機能設計案を、例えば第39図に示すようなデ
ータフローグラフとして求める。この新たな機能設計案
を新機能設計案1とし、この新機能設計案1に対して前
記性能・コスト算出部2を起動することで、その性能
(サイクル数)が[6]であり,コストが[1300]であ
るとの結果を得、この結果を性能・コスト解析結果テー
ブルに書き込む。同様にして次に乗算器を1個減少さ
せ、加算器を2個,乗算器1個としたときの制約の基で
上述した処理手続きを繰り返し実行し、新たな機能設計
案を新機能設計案2として求める。この新機能設計案2
は、例えば第40図に示すようなデータフローグラフとし
て求められ、その性能(サイクル数)が[5],またコ
ストが[800]であることが同様にして解析され、前記
性能・コスト解析結果テーブルに書き込む。
しかる後、各新機能設計案に対する効果を、例えば第
41図に示すような処理手続きを実行することで算出し、
その結果を前記性能・コスト解析結果テーブルに書き込
む(ステップj5)。そしてこの性能・コスト解析結果テ
ーブルに求められた処理結果を設計者に提示出力する
(ステップj6)。
この第41図に示す効果算出の処理手続きについて説明
すると、先ず前記性能・コスト解析結果テーブルより前
述した第32図に示す機能設計案のサイクル数CYCとトー
タルコストCOSTとを読む(ステップk1)。この例では、
機能設計案についてのサイクル数CYCとして[4],ト
ータルコストCOSTとして[1400]を得る。
次に前記各新機能設計案毎に前記性能・コスト解析結
果テーブルを参照してそのサイクル数CYCNとトータルコ
ストCOSTNとを DCYC =CYCN−CYC DCOST=COST−COSTN として算出し(ステップk3)、上記DCYCが[0]以下
で、且つDCOSTが[0]よりも大きければ、その効果E
を[∞]として求め、それ以外の場合には上記効果Eを E=DCOST/DCYC として算出する(ステップk4)。そしてこのようにして
求められる各新機能設計案に対する効果Eを前記性能・
コスト解析結果テーブルに書き込む(ステップk5)。
具体的には新機能設計案1に対しては、そのサイクル
数CYCNが[6]であり、トータルコストCOSTNが[130
0]であることが求められることから、その効果Eは DCYC=CYCN−CYC=6−4=2 DCOST=COST−COSTN=1400−1300=100 として求められ、DCYCTが[0]より大きいから、その
効果Eは E=DCYC/DCOST=100/2=50 として求められる。また同様にして新機能設計案2に対
しては、そのサイクル数CYCNが[5]であり、トータル
コストCOSTNが[800]であることが求められることか
ら、その効果Eは DCYC=CYCN−CYC=5−4=1 DCOST=COST−COSTN=1400−800=600 であり、DCYCTが[0]より大きいから、その効果Eは E=DCYC/DCOST=600 として求められる。
このようにして求められる新機能設計案1についての
効果E[50]と、新機能設計案2についての効果[60
0]とが前記性能・コスト解析結果テーブルにそれぞれ
書き込まれ、その結果が前述した第42図に示すように求
められて出力される。
このようにして性能・コスト解析結果テーブルに求め
られた情報の前述したステップj6に示される出力処理
は、例えば第43図に示すように、先ず機能設計案の性能
・コスト解析結果テーブルの内容を出力し(ステップm
1)、次に各新機能設計案を、その効果Eが大きい順に
ソートする(ステップm2)。そして効果Eが[∞]であ
る新機能設計案があれば、これをコストの無駄であると
して、これに対応する前記性能・コスト解析結果テーブ
ルの内容を出力する(ステップm3)。また効果Eが
[∞]以外であって、且つその効果Eが[0]以上の新
機能設計案については、それらの新機能設計案を前述し
たソート順に出力する(ステップm4)。この結果、例え
ば第44図に示すようにその出力結果が求められ、設計者
に対して指示出力される。
このようにして出力される処理結果から、この例では
前述した第32図に示したデータフローグラフにより与え
られる機能設計案を、より低コスト化し、その実現コス
トを減少させる為には、第40図に示したデータフローグ
ラフのように、乗算器を1個減少させた新機能設計案2
とすることが効率的であることがわかる。つまり性能の
低下(サイクル数の増加)に対するコストの減少の割合
が最も大きい修正案は新機能設計案2であり、この前述
した機能設計案を新機能設計案2に修正することによ
り、サイクル数を[4]から[5]へと増加させるだけ
で、そのコストを[1400]から[800]に大幅に減少さ
れることができることが分る。これ故、設計者は上述し
た出力情報を基にして、どの新機能設計案を選択するの
が最も効果的であるかを容易に判断することが可能とな
り、機能設計案の修正作業を効率良く行うことが可能と
なる。
ここで前述した第39図に示すデータフローグラフにて
表現される機能設計案に対し、更に前記性能・コスト解
析部3に[コストの無駄]についての解析指示がなされ
た場合の処理手続きについて説明する。
この場合、第31図に示した処理手続きを再度繰り返す
ことにより、第39図に示した機能設計案についての性能
(サイクル数)が[6]であり、またそのコストは[13
00]なる情報が得られる。従ってこれらの情報を性能・
コスト解析結果テーブルに書き込む。しかる後、上記機
能設計案の各演算器タイプの個数を求めると、この例で
は加算器を1個,乗算器を2個用いるとの情報が求めら
れる。しかして加算器の使用個数が2個以上ではないこ
とから、ここでは乗算器だけを1個減少させた加算器1
個,乗算器1個の制約の基で機能合成部4を起動する
と、例えば第45図に示すようなデータフローグラフで表
現される新たな機能設計案が求められる。
この新機能設計案を新たに新機能設計案1とし、この
新機能設計案1に対して性能・コスト算出部2による処
理手続きを起動すると、ここではその性能(サイクル
数)が[6]であり、またそのコストが[700]である
との処理結果が求められる。そこでその処理結果を前記
解析結果テーブルに書き込み、次に前述した第41図に示
した処理手続きを同様にして繰り返し実行する。
するとこの処理手続きでは、前記性能・コスト解析結
果テーブルから前記第39図に示した機能設計案のサイク
ル数CYCが[6]であり、またそのトータルコストCOST
が[1300]であることが求められ、次に同様にして第41
図に示す新機能設計案1についてのサイクル数CYCNが
[6]であり、そのトータルコストCOSTが[700]であ
ることが求められる。そしてこれらの情報から、 DCYC=CYCN−CYC=6−6=0 DCOST=COST−COSTN=1300−700=600 であることが算出される。しかしてこの場合には、上記
DCYCが[0]以下であり、且つDCOSTが[0]より大き
いことから、その効果Eは E=∞ であるとの結果が求められ、この効果Eを前記性能・コ
スト解析結果テーブルに書き込む。この結果、例えば第
46図に示すような内容の性能・コスト解析結果テーブル
が求められる、これを前述した第43図に示した処理手続
きに従って出力する。
この場合、第43図に示す処理では先ず第39図に示した
機能設計案の性能・コスト解析結果テーブルの内容を出
力し、次いでこの機能設計案に対する各新機能設計案
を、その効果Eが大きい順にソートして出力することに
なる。しかしこの場合、効果Eが[∞]である新機能設
計案(新機能設計案1)が存在するので、先ず上記新機
能設計案1についての前記性能・コスト解析結果テーブ
ルの内容を[コストの無駄]として、例えば第47図に示
すように出力する。
このような解析結果を出力することにより、前述した
第39図に示したデータフローグラフで表現される機能設
計案にはコストの無駄があり、これを第45図に示すデー
タフローグラフのように、乗算器を1個減少させた新機
能設計案(新機能設計案1)としても、その性能が低下
(サイクル数の増加)しないことがわかる。従ってこの
第45図に示すような新機能設計案に修正することによ
り、サイクル数を[6]のままにして、そのコストを
[1300]から[700]に減少させることが可能なことが
明らかとなる。従って設計者は、このような出力情報に
基づいて、容易に機能設計案の無駄を取り除き、効率良
く機能設計案の修正作業を行うことが可能となる。
尚、本発明は上述した各実施例に限定されるものでは
ない。例えば上述した第3の実施例では、新機能設計案
に修正した場合の効果として、性能・コスト解析部3に
対して指示した[性能],[コスト]に対応して、それ
ぞれ[コストの増加に対するサイクル数の減少の割
合],[サイクル数の増加に対するコストの減少の割
合]を効果として算出し、効果の大きい順に解析結果を
ソート出力するようにしていたが、効果として[サイク
ル数の減少量],[コストの減少量]を求め、その効果
の大きい順に解析結果をソート出力するようにしても良
い。また効果の大きい順にソートする処理を省略し、そ
の処理手続きの簡略書を図っても良い。
更に[性能],[コスト]を指示入力する際に、それ
ぞれ[コストの増加の許容範囲]や[サイクル数の増加
の許容範囲]を同時に指示するようにし、[コストの増
加の許容範囲内でコストの増加に対するサイクル数の減
少の割合の大きい順]や[サイクル数の増加の許容範囲
内でサイクル数の増加に対するコストの減少の割合の大
きい順]、更には[コストの増加の許容範囲内でサイク
ル数の減少量の大きい順]や[サイクル数の増加の許容
範囲内でコストの減少量の大きい順]に、その解析結果
をソート出力するようにしても良い。
また第3の実施例では、各演算器タイプを1個づつ増
減するようにしていたが、この増減が個数を可変するよ
うにしても良い。その他、本発明はその要旨を逸脱しな
い範囲で種々変形して実施することができる。
[発明の効果] 以上述べたように本発明によれば、機能設計結果案の
修正に必要となる、機能設計結果案の性能やコストを評
価し、その評価結果や性能・コストについてのボトルネ
ック部分に関する情報、更には機能設計修正案とその効
果に関する情報を容易に、しかも適確に求めることがで
きる。この結果、効率的に誤り無く、しかも短期間で設
計案の修正作業を行うことができ、設計効率の向上を実
現できる。また機能設計修正案の効果に関する情報に基
づいて機能設計案の修正作業を行うことにより、例えば
機能設計結果案に対して最適な修正案を容易に選択する
ことが可能となるので、修正結果の設計案の品質を従来
に比べて向上させ得ると行う効果が奏せられる。
【図面の簡単な説明】
図は本発明に係る機能設計支援装置の実施例について示
すもので、 第1図は実施例装置の概略構成を示すブロック図、第2
図は機能設計案を表現するデータフローグラフの例を示
す図、第3図は第2図に示すデータフローグラフに対応
したスケジューリングテーブルの例を示す図、第4図は
第2図に示すデータフローグラフに対応した演算器テー
ブルの例を示す図、第5図は演算器コストテーブルの例
を示す図、第6図は性能・コスト算出部における処理手
続きの流れを示す図、第7図は性能・コスト算出部の処
理結果を示す図である。 また第8図は[コストの無駄]が指定されたときの性能
・コスト解析部の処理手続きの流れを示す図、第9図は
[コストの無駄]が指定されたときの性能・コスト解析
部の出力結果を示す図、第10図は第9図の出力結果に基
づいて更新された演算器テーブルの内容を示す図、第11
図は[性能の無駄]が指定されたときの性能・コスト解
析部における処理手続きの流れを示す図、第12図は[性
能の無駄]が指定されたときの性能・コスト解析部の出
力結果を示す図である。 そして第13図は第2図のデータフローグラフの修正例を
示す図、第14図は第12図の出力結果例に基づいて更新さ
れたスケジューリングテーブルの内容を示す図、第15図
は第12図の出力結果例に基づいて更新された演算器テー
ブルの内容を示す図、第16図は更新された設計案に対す
る性能・コスト算出部の処理結果を示す図、第17図は
[コストのボトルネック]が指定されたときの性能・コ
スト解析部の処理手続きの流れを示す図、第18図は修正
されたデータフローグラフを示す図、第19図は第18図に
対応したスケジューリングテーブルの内容を示す図、第
20図は第18図に対応した演算器テーブルの内容を示す図
である。 また第21図は[コストのボトルネック]が指定されたと
きの性能・コスト解析部の出力結果を示す図、第22図は
データフローグラフの別の例を示す図、第23図は第22図
に対応したスケジューリングテーブルの内容例を示す
図、第24図は第22図に対応した演算器テーブルの内容例
を示す図、第25図は[性能のボトルネック]が指定され
たときの性能・コスト解析部での処理手続きの流れを示
す図、第26図は[性能のボトルネック]が指定されたと
きの性能・コスト解析部の出力結果を示す図、第27図は
修正されたデータフローグラフの例を示す図、第28図は
第27図の設計案に対して指示入力として[性能の無駄]
が指定されたときの性能・コスト解析部の出力結果を示
す図である。 また第29図は第2の実施例における[コストのボトルネ
ック]が指定されたときの性能・コスト解析部の処理フ
ローを示す図、第30図は[コストのボトルネック]が指
定されたときの性能・コスト解析部の出力結果を示す図
である。 そして第31図は第3の実施例における[性能]が指定さ
れたときの性能・コスト解析部での処理手続きの流れを
示す図、第32図はデータフローグラフの例を示す図、第
33図は第32図のデータフローグラフで示される機能設計
案に対して[性能]が指示された場合の性能・コスト解
析部により求められる性能・コスト解析結果テーブルの
内容を示す図、第34図は第32図に示す機能設計案に対し
加算器を1個増加させた新機能設計案のデータフローグ
ラフの例を示す図、第35図は新機能設計案に対する効果
算出の処理手続きの流れを示す図、第36図は効果の出力
処理手続きの流れを示す図、第37図は効果の出力結果の
例を示す図である。 また第38図は第3の実施例において[コスト]が指定さ
れた場合の性能・コスト解析部の処理手続きの流れを示
す図、第39図は第32図に示す機能設計案に対して加算器
を1個減少させたときの新機能設計案を示す図、第40図
は第32図に示す機能設計案に対して乗算器を1個減少さ
せたときの新機能設計案を示す図、第41図は効果算出処
理手続きの流れを示す図、第42図は新機能設計案につい
ての性能・コスト解析結果テーブルの内容を示す図、第
43図は新機能設計案についての効果算出処理手続きの流
れを示す図、第44図は新機能設計案に対する処理結果の
出力例を示す図である。 また第45図は第40図に示す機能設計案に対し乗算器を1
個減少させたときの新機能設計案のデータフローグラフ
を示す図、第46図は第45図に示す新機能設計案について
の性能・コスト解析結果テーブルの内容を示す図、第47
図はその処理結果の出力例を示す図である。 1……設計案記憶部、2……性能・コスト算出部、3…
…性能・コスト解析部、4……機能1合成部。

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】デジタルシステムの機能設計を支援する機
    能設計支援装置において、 機能設計案を記憶する設計案記憶手段と、前記機能設計
    案の性能と実現コストとを算出する性能・コスト算出手
    段と、この性能・コスト算出手段により求められた性能
    と実現コストとに関して無駄およびボトルネックを解析
    する性能・コスト解析手段とを具備したことを特徴とす
    る機能設計支援装置。
  2. 【請求項2】実現コストに関する無駄は、前記機能設計
    案のオペレーションの実行に用いられる演算器の種別毎
    に前記オペレーションの各実行サイクルでの演算器の使
    用個数を配列として求め、この配列における演算器の使
    用個数の最大値と前記機能設計案に示される演算器の使
    用個数とを比較して求められるものである請求項(1)
    に記載の機能設計支援装置。
  3. 【請求項3】性能に関する無駄は、前記機能設計案のオ
    ペレーションの実行サイクル毎に、そのサイクルで用い
    られる演算器と同じ種類の演算器がそれ以前のサイクル
    で全て用いられているか否かを調べて求められるもので
    ある請求項(1)に記載の機能設計支援装置。
  4. 【請求項4】実現コストに関するボトルネックは、前記
    機能設計案のオペレーションの実行に使用される演算器
    の種別毎に、各実行サイクルにおいて使用される上記演
    算器の個数を調べ、最も多く使用されている実行サイク
    ルでの個数と、次に多く使用されている実行サイクルで
    の個数との差に基づいて求められるものである請求項
    (1)に記載の機能設計支援装置。
  5. 【請求項5】性能に関するボトルネックは、前記機能設
    計案のオペレーションの実行順序を変更した場合の実行
    サイクル数を調べて求められるものである請求項(1)
    に記載の機能設計支援装置。
  6. 【請求項6】実現コストに関するボトルネックは、前記
    機能設計案のオペレーションの実行に使用される演算器
    の種別毎に、その演算器が使用されるサイクルが全サイ
    クルに対して占める割合から求められるものである請求
    項(1)に記載の機能設計支援装置。
  7. 【請求項7】デジタルシステムの機能設計を支援する機
    能設計支援装置において、 機能設計案を記憶する設計案記憶手段と、前記機能設計
    案の性能と実現コストとを算出する性能・コスト算出手
    段と、この性能・コスト算出手段により求められた性能
    と実現コストとに関して無駄およびボトルネックを解析
    する性能・コスト解析手段と、この性能・コスト解析手
    段による解析結果に従って前記機能設計案に対する新た
    な機能設計案を作成する機能合成手段とを具備したこと
    を特徴とする機能設計支援装置。
JP2237634A 1990-09-07 1990-09-07 機能設計支援装置 Expired - Fee Related JP2938170B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2237634A JP2938170B2 (ja) 1990-09-07 1990-09-07 機能設計支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2237634A JP2938170B2 (ja) 1990-09-07 1990-09-07 機能設計支援装置

Publications (2)

Publication Number Publication Date
JPH04117570A JPH04117570A (ja) 1992-04-17
JP2938170B2 true JP2938170B2 (ja) 1999-08-23

Family

ID=17018235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2237634A Expired - Fee Related JP2938170B2 (ja) 1990-09-07 1990-09-07 機能設計支援装置

Country Status (1)

Country Link
JP (1) JP2938170B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5157534B2 (ja) * 2008-03-06 2013-03-06 日本電気株式会社 動作合成装置、および、プログラム
WO2017033336A1 (ja) * 2015-08-27 2017-03-02 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム

Also Published As

Publication number Publication date
JPH04117570A (ja) 1992-04-17

Similar Documents

Publication Publication Date Title
Abraham et al. Predictability of load/store instruction latencies
JP2972540B2 (ja) Lsi自動設計システム及びlsi自動設計方法
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
US7107568B2 (en) System and method for reducing wire delay or congestion during synthesis of hardware solvers
EP2008182B1 (en) Programming a multi-processor system
US6113650A (en) Compiler for optimization in generating instruction sequence and compiling method
JPH02281342A (ja) 設計評価方法および設計評価ツール
JPH02217926A (ja) コード生成方法
WO2007103613A2 (en) Streaming kernel selection for reconfigurable processor
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
JPH07121377A (ja) 資源割付装置
US6347366B1 (en) System and method for automatically optimizing software performance
US7983890B2 (en) Method and apparatus performing automatic mapping for a multi-processor system
Van Praet et al. A graph based processor model for retargetable code generation
CN111399911A (zh) 一种基于多核异构计算的人工智能开发方法及装置
JPS62208167A (ja) ベクトル処理装置
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
JP2938170B2 (ja) 機能設計支援装置
Mandal et al. A genetic algorithm for the synthesis of structured data paths
Bergamaschi et al. Scheduling under resource constraints and module assignment
Roh et al. Generation and quantitative evaluation of dataflow clusters
JPH07141192A (ja) 翻訳処理方法
JP3602697B2 (ja) 論理回路設計支援システム
US6772414B1 (en) Lifetime-sensitive mechanism and method for hoisting invariant computations out of loops in a computer program
JPH02236638A (ja) レジスタ割付け管理方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees