JP2002215703A - ハードウェア/ソフトウェア協調設計方法 - Google Patents

ハードウェア/ソフトウェア協調設計方法

Info

Publication number
JP2002215703A
JP2002215703A JP2001008043A JP2001008043A JP2002215703A JP 2002215703 A JP2002215703 A JP 2002215703A JP 2001008043 A JP2001008043 A JP 2001008043A JP 2001008043 A JP2001008043 A JP 2001008043A JP 2002215703 A JP2002215703 A JP 2002215703A
Authority
JP
Japan
Prior art keywords
processing
block
information
data
hardware
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.)
Pending
Application number
JP2001008043A
Other languages
English (en)
Inventor
Kei Yoneda
圭 米田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2001008043A priority Critical patent/JP2002215703A/ja
Publication of JP2002215703A publication Critical patent/JP2002215703A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 アルゴリズム記述言語からのハードウェア/
ソフトウェア協調設計方法において、使用する資源のリ
ソースを抑え、最小限のハードウェア構成で要求性能を
達成する。 【解決手段】 処理101をfor文やif文でブロッ
クごとに細分化しブロック化情報103を抽出する細分
化工程102と、ブロック化情報及び実行時間データベ
ースに基づいて処理のシミュレータ104によるシミュ
レーションを行ない、ブロック間のデータ依存関係を示
す接続情報105および各ブロック内の処理において更
新されたデータ量を示すデータ情報106を求めるブロ
ック情報抽出工程107と、接続情報およびデータ情報
に基づいて、保持するデータ量の少ない処理から順にブ
ロックのスケジューリングを行ってスケジューリング情
報108を算出するスケジューリング工程109とを含
む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、処理のスケジュー
リングやハードウェア/ソフトウェアの割り当てに関す
るハードウェア/ソフトウェア協調設計方法に関する。
【0002】
【従来の技術】C/C++などのアルゴリズム記述言語
で記述されたシステム全体の処理に対し、ASIC等に
ハードウェア化する部分、CPUで実行させるソフトウ
ェア部分などとシステム全体の処理をハードウェア/ソ
フトウェアに割り当てる必要がある。いわゆるハードウ
ェア/ソフトウェア協調設計である。ハードウェア/ソ
フトウェア協調設計では、システム全体の処理を適当な
ブロックでブロック化しスケジューリングしたものに対
し、ハードウェア/ソフトウェアの割り当てを行う。そ
の際に、従来ではハードウェア/ソフトウェア協調設計
を行う明確な指針/方法がないため、既存の設計データ
の流用や設計者の経験や勘に頼るところが大きい。
【0003】
【発明が解決しようとする課題】まず、従来のハードウ
ェア/ソフトウェア協調設計において既存の設計データ
を流用した場合、初期の設計コストは減少するが、既存
の設計データの仕様制限などを受けるため、システム全
体の性能や面積等を考慮した最適なハードウェア/ソフ
トウェア協調設計を行うことは困難である。そのため、
設計段階が進むにつれ新規システムに対する要求性能を
満足させることができずに、ハードウェア/ソフトウェ
ア協調設計のやり直しが発生する場合があり、設計コス
トや設計期間が増大する可能性がある。特に、既存の設
計データがハードウェアである場合、そのブロックにつ
いては性能、面積、消費電力などが固定値であり、仕様
変更などに対して柔軟な対応がとれない。
【0004】また、設計者の経験や勘では、従来までの
方法の繰り返しになる場合が多く、システムごとの最適
なハードウェア/ソフトウェア協調設計が行われず、性
能、面積などの向上が思い通りに図れないことになる。
【0005】つまり、ハードウェア/ソフトウェア協調
設計の明確な指針/方法が無いため、設計プロセスの発
展に反して既存データ/設計方法を流用することにな
り、最適なハードウェア/ソフトウェア協調設計が行わ
れていないというのが実情である。
【0006】本発明は、上記従来の問題点に鑑みてなさ
れたものであり、その目的は、対象とする処理を主にソ
フトウェアで行なうシステム処理に対して、使用する資
源を抑えることが可能なハードウェア/ソフトウェア協
調設計方法を提供することにある。
【0007】また、本発明の他の目的は、マルチプロセ
ッサを用いたパイプライン処理によるシステム処理に対
して、必要に応じてハードウェアに処理を割り当てなが
ら、使用する資源を抑えかつ要求性能を満たすことが可
能なハードウェア/ソフトウェア協調設計方法を提供す
ることにある。
【0008】
【課題を解決するための手段】前記の目的を達成するた
め、本発明に係る第1のハードウェア/ソフトウェア協
調設計方法は、アルゴリズム記述言語で記述された処理
に対するハードウェア/ソフトウェア協調設計方法であ
って、処理をブロックごとに細分化し、ブロック化情報
を抽出する細分化工程と、ブロック化情報に基づいて前
記処理のシミュレーションを行ない、ブロック間のデー
タ依存関係を示す接続情報および各ブロック内の処理に
おいて更新されたデータ量を示すデータ情報を求めるブ
ロック情報抽出工程と、接続情報およびデータ情報に基
づいて、ブロックのスケジューリングを行うスケジュー
リング工程とを含むことを特徴とする。
【0009】この場合、スケジューリング工程におい
て、接続情報に基づいて、少なくとも2つの処理が並列
に実行可能な分岐処理の条件式を検出し、条件式の評価
結果に従い実行される全ての処理に対して、データ情報
を用いて、処理の実行中に保持する必要があるデータ量
を算出し、データ量が少ない処理から優先的に実行する
ことが好ましい。
【0010】この第1のハードウェア/ソフトウェア協
調設計方法によれば、細分化しブロック化した処理に対
し、各ブロックで更新されたデータ量を評価しながらス
ケジューリングを行うことで、記憶装置のリソースを抑
えることができる。
【0011】前記の目的を達成するため、本発明に係る
第2のハードウェア/ソフトウェア協調設計方法は、各
々が命令メモリを有しパイプラインステージの処理を担
当するマルチプロセッサを用いたパイプライン処理で実
行される、アルゴリズム記述言語で記述された処理に対
するハードウェア/ソフトウェア協調設計方法であっ
て、処理をブロックごとに細分化し、ブロック化情報を
抽出する細分化工程と、ブロック化情報および特定のプ
ロセッサにおける命令コードごとの実行時間をまとめた
命令実行時間のデータベースに基づいて、前記処理のシ
ミュレーションを行ない、ブロック間のデータ依存関係
を示す接続情報、各ブロック内の処理において更新され
たデータ量を示すデータ情報、および各ブロック内の処
理に要する時間である処理実行時間を求めるブロック情
報抽出工程と、接続情報、データ情報、処理実行時間、
およびパイプライン処理のパイプラインピッチに基づい
て、ブロックのスケジューリングを行うスケジューリン
グ工程とを含み、パイプラインピッチに過不足なく収ま
るブロックから優先的に処理を実行し、かつ必要に応じ
て処理結果を保持するデータ量の少ない処理から優先的
に処理を実行することを特徴とする。
【0012】この第2のハードウェア/ソフトウェア協
調設計方法によれば、マルチプロセッサのパイプライン
処理でシステムのスケジューリングを行う際に、細分化
した各ブロックの処理に要する実行時間を算出し、パイ
プラインピッチに過不足なくブロックをスケジューリン
グすることで、各パイプラインステージにおけるプロセ
ッサの遊びの時間を少なくすることができる。
【0013】前記の目的を達成するため、本発明に係る
第3のハードウェア/ソフトウェア協調設計方法は、各
々が命令メモリを有しパイプラインステージの処理を担
当するマルチプロセッサを用いたパイプライン処理で実
行される、アルゴリズム記述言語で記述された処理に対
するハードウェア/ソフトウェア協調設計方法であっ
て、処理をブロックごとに細分化し、ブロック化情報を
抽出する細分化工程と、ブロック化情報および特定のプ
ロセッサにおける命令コードごとの実行時間をまとめた
命令実行時間のデータベースに基づいて、前記処理のシ
ミュレーションを行ない、ブロック間のデータ依存関係
を示す接続情報、各ブロック内の処理において更新され
たデータ量を示すデータ情報、および各ブロック内の処
理に要する時間である処理実行時間を求めるブロック情
報抽出工程と、処理実行時間およびパイプライン処理の
パイプラインピッチに基づいて、ハードウェアで実現す
るブロックを抽出し、ハードウェア化情報を算出するハ
ードウェア化工程と、接続情報、データ情報、処理実行
時間、およびハードウェア化情報に基づいて、ブロック
のスケジューリングを行うスケジューリング工程とを含
み、ハードウェア化が必要なブロックについてはハード
ウェア化を実現しながら、パイプラインピッチに過不足
なく収まるブロックから優先的に処理を実行し、かつ必
要に応じて処理結果を保持するデータ量の少ない処理か
ら優先的に処理を実行することを特徴とする。
【0014】この第3のハードウェア/ソフトウェア協
調設計方法によれば、ハードウェア化が必要なブロック
を抽出し、ハードウェア化を実現しながらスケジューリ
ングを行うことで、対象となるシステムに対して、最小
限のハードウェア構成で要求性能を満たすことができ
る。
【0015】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照して説明する。
【0016】(第1の実施の形態)図1は、本発明の第
1の実施の形態によるアルゴリズム記述言語からのハー
ドウェア/ソフトウェア協調設計方法の構成を模式的に
示す図である。図1において、ハードウェア/ソフトウ
ェア協調設計方法は、アルゴリズム記述言語で記述され
た処理101と、処理を細分化しブロック化する細分化
工程102と、細分化工程102より得られる処理のブ
ロック化情報103と、ブロック化情報103をもとに
シミュレータ104による処理101のシミュレーショ
ンを行い、ブロック間の接続情報105とブロックで更
新されるデータ量を示すデータ情報106を抽出するブ
ロック情報抽出工程107と、接続情報105およびデ
ータ情報106に基づいて、ブロックレベルでのスケジ
ューリングを行い、スケジューリング情報108を算出
するスケジューリング工程109から構成される。
【0017】図2は、本実施形態においてスケジューリ
ング対象となっているアルゴリズム記述言語(C言語)
で記述された処理101の一例を示す図である。
【0018】図3および図4は、図2の処理を細分化工
程102より細分化した時のブロック化情報103を表
す図である。
【0019】図5は、ブロック情報抽出工程107から
得られる図2の処理の接続情報105を表す図である。
【0020】図6は、ブロック情報抽出工程107から
得られる図2の処理のデータ情報106を表す図であ
る。
【0021】図7は、図5の接続情報と図6のデータ情
報を統合して表した図である。
【0022】図8および図9は、分岐処理の実行順序を
変えた場合における各ブロックの処理結果を保持するの
に最低限必要な記憶装置の容量を表わした図である。
【0023】図10は、スケジューリング工程109か
ら算出されるスケジューリング情報108を表す図であ
る。
【0024】次に、本実施の形態によるハードウェア/
ソフトウェア協調設計方法について、図1から図10を
用いて具体的に説明する。
【0025】図2で示す処理は、main関数の14行
目において、サブモジュールであるfunction関
数を呼んでいる算術演算の処理を表す。この処理に対し
てスケジューリングを行うには、まず処理のブロック化
が必要である。細分化工程102では、構文解析を行っ
てfor文やif文で示される分岐処理の記述とその他
の代入文で細分化を行う。つまり図2の処理において、
for文、if文、else文などの分岐処理の条件式
毎に細分化を行う。
【0026】図2のmain関数およびfunctio
n関数の細分化結果であるブロック化情報103をそれ
ぞれ図3および図4に示す。図3では、7行目のfor
文、8行目のif文、11行目のelse文で、細分化
を行われ、さらに11行目のelse文の処理が終了す
る13行目、7行目のfor文の処理が終了する15行
目で細分化が行われている。図4についても同様に、f
unction関数について細分化を行っている。な
お、図3および図4では、以降の説明のために細分化し
たブロック毎にA1、A2、…およびB1、B2、…と
ブロック番号を付加している。
【0027】次に、図2で示す処理101と、図3およ
び図4で示すブロック化情報103とを、ブロック情報
抽出工程107に入力し、接続情報105およびデータ
情報106を抽出する。以下にその工程を説明する。
【0028】図5は、図4のブロック化情報103を用
いてブロック情報抽出工程107より得られた各ブロッ
クごとのデータ依存関係である接続情報105を示す。
図5では、function関数の処理を逐次的に処理
した場合の実行順に矢印(斜線)を記載している。この
図において、ブロックB2の処理結果である“z1
[0]〜z1[15]”のデータはブロックB4で使用
されるため、処理の接続情報としてブロックB2からブ
ロックB4へ矢印(実線)が記載されている。以下同様
に、ブロックB3からブロックB5へはデータ“c”
が、ブロックB4からブロックB6へはデータ“d”
が、ブロックB5からブロックB6へはデータ“z2
[0]〜z2[15]”が処理結果として受け渡されて
いる。
【0029】次に、図6は、図4のブロック化情報10
3を用いてブロック情報抽出工程107より得られる各
ブロックで更新されたデータ量であるデータ情報106
を示す。例えば、図6において、ブロックB1で更新さ
れるデータ量は“c”、“d”、“e”であり、データ
量は3となる。以下同様に更新されるデータ量は、ブロ
ックB2では“z1[0]”〜“z1[15]”で1
6、ブロックB3では“c”で1、ブロックB4では
“d”で1、ブロックB5では“z2[0]”〜“z2
[15]”で16、ブロックB6では“e”で1とな
る。ここでデータ量の換算方法は整数1個を1としてい
るが、処理によって換算方法は自由に設定できることは
いうまでもない。
【0030】図5の接続情報105から、ブロックB2
で確定したデータ“z1[0]”〜“z1[15]”の
値がブロックB4で読み出され、ブロックB3で確定し
たデータ“c”がブロックB5で読み出されていること
がわかる。さらに、ブロックB2とブロックB3の間に
はデータの確定/読み出しの関係がないことがわかるた
め、ブロックB2、B4の処理とブロックB3、B5の
処理が互いに並列処理可能であることがわかる。つま
り、ブロックB1の後にブロックB2とブロックB3は
どちらの処理を先に行っても問題ない。さらに、ブロッ
クB6は、図5よりブロックB4とブロックB5の処理
結果を読み出しているため、ブロックB4、ブロックB
5の処理が終了しなければブロックB6は処理が開始で
きない。
【0031】以上のブロック間のデータ依存関係に、図
6のデータ情報106を加えたものを図7に示す。図7
において、ブロックB2、B4の処理とブロックB3、
B5の処理が並列処理可能であり、ブロックB6はこの
2つの並列処理の結果を読み出して処理していることが
わかる。さらに、図7には、ブロック間のデータ情報も
付記して示しており、例えばブロックB2で確定された
データ“z1[0]”〜“z1[15]”のデータ量1
6がブロックB4で読み出されていることがわかる。
【0032】以下では、図2の関数functionを
例に、スケジューリング工程109について説明する。
【0033】関数functionの処理を1つのプロ
セッサで処理する場合、図7から分かるように、ブロッ
クB1の次にブロックB2、B4あるいはブロックB
3、B5のどちらのブロックを優先的に処理するかが問
題となる。
【0034】図8は、処理の順番をブロックB1、B
2、B4、B3、B5、B6(以下順番Cとする)とし
た場合における、各ブロックの処理結果を保持するため
に最低限必要な記憶装置の容量を表したものである。同
様に、図9は、処理の順番をブロックB1、B3、B
5、B2、B4、B6(以下順番Dとする)とした場合
における、各ブロックの処理結果を保持するために最低
限必要な記憶装置の容量を表している。図8、図9とも
に、当該ブロックが次のブロックへ処理する際に最低限
保持しなくてはならないデータのための記憶装置の容量
をそれぞれ明記している。
【0035】まず、図8について説明する。図8のブロ
ックB1−B2間においてデータ“c”、“d”、
“e”が、またブロックB2−B4間においてデータ
“z1[0]”〜“z1[15]”が新規に更新され、
これらのデータを以降の処理で必要なデータとして保持
する必要がある。しかし、B4−B3間では、データ
“d”が新規に更新されるが、ブロックB1−B2間に
おいてデータ“d”を保持する記憶装置は既に用意され
ているため、データ“d”を保持するための記憶装置は
新たに必要でない。ブロックB3−B5間で更新される
データ“c”についても同様である。そして、ブロック
B5−B6間では、データ“z2[0]”〜“z2[1
5]”が新たに更新され、それを保持する記憶装置が必
要となる。
【0036】次に、図9について説明する。図9では、
ブロックB1−B3間において、データ“c”、
“d”、“e”が新規に更新され、これらのデータを以
降の処理で必要なデータとして保持する必要がある。し
かし、次のブロックB3−B5間では、データ“c”が
更新されるが、ブロックB1−B3間でデータ“c”を
保持する記憶装置は既に用意されているので、データ
“c”を保持するための記憶装置は新たに必要ではな
い。次のブロックB5−B2間では、データ“z2
[0]”〜“z2[15]”を保持するための記憶装置
が新たに必要で、さらにブロックB2−B4間では、デ
ータ“z1[0]”〜“z1[15]”を保持するため
の記憶装置が必要となる。しかし、後の処理であるブロ
ックB4−B6間では、データ“z1[0]”〜“z1
[15]”は必要ないためデータ“z1[0]”〜“z
1[15]”を保持する記憶装置は必要なくなる。
【0037】以上、図8および図9から、処理結果を一
時的に保持する記憶装置の容量は、順番Cで処理を行っ
たほうが順番Dで処理を行うよりも小さいことがわか
る。よって記憶装置のリソースの観点から、各ブロック
の処理を順番Cで行った方が良いことがわかる。以上よ
り、スケジューリング工程110から得られる関数fu
nctionのスケジューリング情報109は、図10
に示すものとなり、本実施の形態によれば、記憶装置の
リソースが少なくなるように、ブロックのスケジューリ
ングを行なうことが可能になる。
【0038】なお、以上のスケジューリング方法は、1
つのプロセッサの場合に限らず複数のプロセッサで処理
する場合においても同様であることは言うまでも無い。
【0039】(第2の実施の形態)図11は、本発明の
第2の実施の形態によるアルゴリズム記述言語からのハ
ードウェア/ソフトウェア協調設計方法の構成を模式的
に示す図である。図11には、複数の同一のプロセッサ
が各々命令メモリを備え、このプロセッサが各パイプラ
インステージの処理を実行するマルチプロセッサのパイ
プライン処理において、本実施の形態によるハードウェ
ア/ソフトウェア協調設計方法を示している。
【0040】図11において、ハードウェア/ソフトウ
ェア協調設計方法は、特定のプロセッサにおける各命令
の実行時間をデータベースとしてまとめた命令実行時間
のデータベース1101と、パイプライン処理の対象と
なる処理1102と、細分化工程1103より細分化し
たブロック化情報1104および命令実行時間のデータ
ベース1101に基づいて、処理1102のシミュレー
タ1105によるシミュレーションを行ない、ブロック
間の接続情報1106、ブロック内で更新されるデータ
量を示すデータ情報1107、および各ブロックごとの
処理に要する時間である処理実行時間1108を抽出す
るブロック情報抽出工程1109と、接続情報110
6、データ情報1107、処理実行時間1108、およ
び設計者の要求するパイプラインピッチ1110に基づ
いてブロックレベルでのスケジューリングを行い、スケ
ジューリング情報1111を算出するスケジューリング
工程1112とから構成される。
【0041】図12は、処理1102における接続情報
1106と処理実行時間1108の一例を表した図であ
る。
【0042】図13は、スケジューリング工程1112
から得られるスケジューリング情報1111を示す図で
ある。
【0043】図14は、本実施形態においてスケジュー
リング可能か否かの判断手順を示すフローチャートであ
る。
【0044】次に、本実施の形態によるハードウェア/
ソフトウェア協調設計方法について、図11から図14
を用いて具体的に説明する。
【0045】図11において、命令実行時間のデータベ
ース1101は、特定のプロセッサの命令、例えば加
算、積算などの単純な命令ごとに処理時間をデータベー
スとしてまとめたものである。これをブロック化情報1
104とともにシミュレ−ションすることで、各ブロッ
クにおける処理実行時間1108を命令実行時間のデー
タベース1101を参照して算出することができる。こ
こで、ブロック化情報1104、接続情報1106、デ
ータ情報1107は第1の実施の形態で説明した手順と
同様な方法で抽出可能である。
【0046】図12は、ブロック情報抽出工程1109
から得られる処理実行時間1108と接続情報1106
を表す。図12では、処理1102を細分化工程110
3より細分化し、1つ以上のブロックで構成される一連
の処理ごとにa、b、c、…とし、さらにその一連の処
理においてブロック毎にa1、a2、b1、b2、…と
している。さらに、各ブロック(a1、a2、b1、b
2、…)の長さをそれぞれの処理実行時間1108の大
きさに対応させ、並列に実行可能な処理については各ブ
ロックを並列に表記している(例えば、e1、e2とf
1、f2は並列に処理可能である)。
【0047】次に、図12で示す処理実行時間1108
と接続情報1106をもつ処理1102に対するスケジ
ューリングの方法について説明する。
【0048】まず、パイプラインピッチ1110をスケ
ジューリング工程1112に入力する必要がある。ここ
で、パイプラインピッチ1110は、パイプライン処理
の各ステージで行う処理実行時間を表しており、各ステ
ージの処理実行時間を均一化し、ばらつきを無くすこと
により、各ステージの処理に遊びの時間がなくなり、高
速なパイプライン処理の設計が可能となる。そこで設計
者は、要求する処理性能とパイプライン処理のステージ
数からパイプラインピッチ1110を算出し、それをス
ケジューリング工程1112に入力する。なお、本実施
の形態におけるマルチプロセッサのパイプライン処理で
は、パイプライン処理のステージ数は使用するプロセッ
サの個数と等価である。
【0049】図12に示すデータ依存関係および処理実
行時間を有する処理から、ブロックa1、a2の次に処
理可能なブロックの候補として、ブロックb1〜b4、
c1〜c2、およびd1〜d4があることがわかる。こ
こで、ブロックa1、a2の処理実行時間の和がパイプ
ラインピッチ1110よりも小さい場合、つまり同一の
パイプラインピッチ1110内にブロックa1、a2の
他にさらにブロックの追加が可能である場合、ブロック
b1〜b4、c1〜c2、およびd1〜d4の中からい
ずれかのブロックを選択し追加しなくてはならない。
【0050】本実施の形態によるスケジューリング工程
1112では、ブロックa1、a2の次にブロックb1
またはブロックc1あるいはブロックd1を挿入し、そ
の時の処理実行時間の総和をそれぞれの場合において算
出する。そして、処理実行時間の総和がパイプラインピ
ッチ1110よりも小さい場合には、さらに処理を挿入
する。例えば、ブロックa1、a2、b1の処理実行時
間の総和がパイプラインピッチ1110よりも小さい場
合には、ブロックb1に継続して処理されるブロックb
2を挿入し、その時の処理実行時間の総和を算出する。
そして算出した処理実行時間の総和がパイプラインピッ
チ1110よりも大きければ、パイプラインピッチ11
10に挿入可能な処理はブロックa1、a2、b1であ
ると確定し、逆に、パイプラインピッチ1110よりも
小さければさらにブロックを追加する。
【0051】以上の作業を繰り返すことにより、パイプ
ラインステージにおける処理実行時間の総和がパイプラ
インピッチ1110よりも大きくならない程度まで可能
な限り多くのブロックを挿入する。これを並列処理可能
なブロックごとに行い算出した処理実行時間の総和を比
較して、最もパイプラインピッチ1110に近い値をも
つブロックの順番をスケジューリング情報1111とし
て算出する。
【0052】図13のスケジューリング情報1111
は、ブロックa1、a2の次にブロックd1、d2を挿
入した時の処理実行時間がパイプラインピッチ1110
に最も近い値になったため、ブロックa1、a2、d
1、d2をパイプライン処理の第1のステージに行う処
理として確定している。以降、第2のステージでは、第
1のステージにおける処理の継続としてブロックd3、
d4の処理を実行し、その後の処理については、ブロッ
クc1〜c2とブロックb1〜b4の中からパイプライ
ンピッチ1110に最も過不足なく収まるものを選択
し、スケジューリングを行っている。
【0053】なお、上記のスケジューリング方法におい
て、当該ブロックの次に実行する処理が一意に決定でき
ない場合、例えばパイプラインステージの処理としてa
1、a2、d1、d2を行なう場合とa1、a2、c1
を行なう場合で処理実行時間の総和が等しい場合には、
第1の実施の形態と同様に、処理結果を保持する記憶装
置のリソースが少ない処理を、次に処理するブロックと
して選択する。
【0054】なお、本実施の形態によるハードウェア/
ソフトウェア協調設計方法では、パイプラインピッチ1
110よりも処理実行時間が長いブロックがある場合に
は、本実施の形態のスケジューリングは実行できない。
【0055】図14は、本実施の形態によるスケジュー
リングが可能か否かの判断を行うフローチャートを示
す。各ブロックの処理実行時間Tsとパイプラインピッ
チ1110(Pp)を比較し、その比較の結果、パイプ
ラインピッチ1110よりも処理時間を要するブロック
が1つでもあった場合、本実施の形態のスケジューリン
グは実行できない。これを解決する方法について、第3
の実施の形態として次に説明する。
【0056】(第3の実施の形態)図15は、本発明の
第3の実施の形態によるアルゴリズム記述言語からのハ
ードウェア/ソフトウェア協調設計方法の構成を模式的
に示す図である。図15には、複数の同一のプロセッサ
が各々命令メモリを備え、このプロセッサが各パイプラ
インステージの処理を実行するマルチプロセッサのパイ
プライン処理において、本実施の形態によるハードウェ
ア/ソフトウェア協調設計方法を示している。 図15
において、ハードウェア/ソフトウェア協調設計方法
は、特定のプロセッサにおける各命令の実行時間をデー
タベースとしてまとめた命令実行時間のデータベース1
501と、パイプライン処理の対象となる処理1502
と、細分化工程1503より細分化したブロック化情報
1504および命令実行時間のデータベース1501に
基づいて、処理1502のシミュレータ1505による
シミュレーションを行ない、ブロック間の接続情報15
06、ブロック内で更新されるデータ量を示すデータ情
報1507、および各ブロックごとの処理に要する時間
である処理実行時間1508を抽出するブロック情報抽
出工程1509と、処理実行時間1508および設計者
の要求するパイプラインピッチ1510から、ハードウ
ェア化が必要なブロックを抽出し、ハードウェア化情報
1511を抽出するハードウェア化工程1512と、接
続情報1506、データ情報1507、処理実行時間1
508、ハードウェア化情報1511、およびパイプラ
インピッチ1510から、ブロックレベルでのスケジュ
ーリングを行い、スケジューリング情報1513を算出
するスケジューリング工程1514とから構成される。
【0057】図16は、本実施形態のハードウェア化工
程1512で行われる処理手順を示すフローチャートで
ある。
【0058】次に、本実施の形態によるハードウェア/
ソフトウェア協調設計方法について、図15および図1
6を用いて具体的に説明する。なお、本実施の形態によ
るハードウェア/ソフトウェア協調設計方法は、第2の
実施の形態に、パイプラインピッチ1510および処理
実行時間1508からハードウェア化が必要なブロック
を抽出し、ハードウェア化を行うハードウェア化工程1
512が追加されたものである。
【0059】図16に示すように、パイプラインピッチ
1510(Pp)と処理実行時間1508(Ts)を比
較し、パイプラインピッチ1510よりも処理時間が長
いブロックについては、パイプラインピッチ1510に
収まるように高位合成などによりハードウェア化を行
う。図15のハードウェア化情報1511は、この時の
ハードウェア化されたブロックの情報を示す。このハー
ドウェア化情報1511に基づき、スケジューリング工
程1514では、ハードウェア化されたブロックを検出
し、1つのパイプラインステージ内にハードウェア化さ
れたブロックを割り当てる。それ以外のハードウェア化
が必要ないブロックについては、第2の実施の形態と同
様のハードウェア/ソフトウェア協調設計を行う。
【0060】このように、本実施の形態によれば、最小
限のハードウェア構成で要求する性能を満たすような処
理のハードウェア/ソフトウェア協調設計が行える。ハ
ードウェア構成を極力少なくすることにより、仕様変更
などに対してもプロセッサで処理させるプログラムの変
更などで柔軟に対応することができる。
【0061】
【発明の効果】以上説明したように、本発明によれば、
細分化しブロック化した処理に対し、各ブロックで更新
されたデータ量を評価しながらスケジューリングを行う
ことで、記憶装置のリソースが少ないハードウェア/ソ
フトウェア協調設計が可能になる。
【0062】また、マルチプロセッサのパイプライン処
理でシステムのスケジューリングを行う際に、細分化し
た各ブロックの処理に要する実行時間を算出し、パイプ
ラインピッチに過不足なくブロックをスケジューリング
することで、各パイプラインステージにおけるプロセッ
サの遊びの時間が少ないハードウェア/ソフトウェア協
調設計が可能になる。
【0063】さらに、ハードウェア化が必要なブロック
を抽出し、ハードウェア化を実現しながらスケジューリ
ングを行うことで、対象となるシステムに対して、最小
限のハードウェア構成で要求性能を満たすハードウェア
/ソフトウェア協調設計が可能になる。
【図面の簡単な説明】
【図1】 本発明の第1の実施の形態に係るアルゴリズ
ム記述言語からのハードウェア/ソフトウェア協調設計
方法の構成図
【図2】 図1のアルゴリズム記述言語で記述された処
理101の一例を示す図
【図3】 図2のmain関数のブロック化情報103
を模式的に示す図
【図4】 図2のfunction関数のブロック化情
報103を模式的に示す図
【図5】 図1の接続情報105を模式的に示す図
【図6】 図1のデータ情報106を模式的に示す図
【図7】 図1の接続情報105およびデータ情報10
6を模式的に示す図
【図8】 図1の処理101が実行順序Cの場合に必要
な記憶装置の容量を示す図
【図9】 図1の処理101が実行順序Dの場合に必要
な記憶装置の容量を示す図
【図10】 図1のスケジューリング情報108を模式
的に示す図
【図11】 本発明の第2の実施の形態に係るアルゴリ
ズム記述言語からのハードウェア/ソフトウェア協調設
計方法の構成図
【図12】 図11の接続情報1106および処理実行
時間1108を模式的に示す図
【図13】 図11のスケジューリング情報1111を
模式的に示す図
【図14】 本発明の第2の実施の形態におけるスケジ
ューリングが可能か否かの判断手順を示すフローチャー
【図15】 本発明の第3の実施の形態に係るアルゴリ
ズム記述言語からのハードウェア/ソフトウェア協調設
計方法の構成図
【図16】 図15のハードウェア化工程1514にお
ける処理手順を示すフローチャート
【符号の説明】
101、1102、1502 処理 102、1103、1503 細分化工程 103、1104、1504 ブロック化情報 104、1105、1505 シミュレータ 105、1106、1506 接続情報 106、1107、1507 データ情報 107、1109、1509 ブロック情報抽出工程 108、1111、1513 スケジューリング情報 109、1112、1514 スケジューリング工程 1101、1501 命令実行時間データベース 1108、1508 処理実行時間 1110、1510 パイプラインピッチ 1511 ハードウェア化情報 1512 ハードウェア化工程

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 アルゴリズム記述言語で記述された処理
    に対するハードウェア/ソフトウェア協調設計方法であ
    って、 前記処理をブロックごとに細分化し、ブロック化情報を
    抽出する細分化工程と、 前記ブロック化情報に基づいて前記処理のシミュレーシ
    ョンを行ない、前記ブロック間のデータ依存関係を示す
    接続情報および各ブロック内の処理において更新された
    データ量を示すデータ情報を求めるブロック情報抽出工
    程と、 前記接続情報および前記データ情報に基づいて、前記ブ
    ロックのスケジューリングを行うスケジューリング工程
    とを含むことを特徴とするハードウェア/ソフトウェア
    協調設計方法。
  2. 【請求項2】 前記スケジューリング工程において、 前記接続情報に基づいて、少なくとも2つの処理が並列
    に実行可能な分岐処理の条件式を検出し、 前記条件式の評価結果に従い実行される全ての処理に対
    して、前記データ情報を用いて、処理の実行中に保持す
    る必要があるデータ量を算出し、 前記データ量が少ない処理から優先的に実行することを
    特徴とする請求項1記載のハードウェア/ソフトウェア
    協調設計方法。
  3. 【請求項3】 各々が命令メモリを有しパイプラインス
    テージの処理を担当するマルチプロセッサを用いたパイ
    プライン処理で実行される、アルゴリズム記述言語で記
    述された処理に対するハードウェア/ソフトウェア協調
    設計方法であって、 前記処理をブロックごとに細分化し、ブロック化情報を
    抽出する細分化工程と、 前記ブロック化情報および特定のプロセッサにおける命
    令コードごとの実行時間をまとめた命令実行時間のデー
    タベースに基づいて、前記処理のシミュレーションを行
    ない、前記ブロック間のデータ依存関係を示す接続情
    報、各ブロック内の処理において更新されたデータ量を
    示すデータ情報、および各ブロック内の処理に要する時
    間である処理実行時間を求めるブロック情報抽出工程
    と、 前記接続情報、前記データ情報、前記処理実行時間、お
    よび前記パイプライン処理のパイプラインピッチに基づ
    いて、前記ブロックのスケジューリングを行うスケジュ
    ーリング工程とを含み、 前記パイプラインピッチに過不足なく収まるブロックか
    ら優先的に処理を実行し、かつ必要に応じて処理結果を
    保持するデータ量の少ない処理から優先的に処理を実行
    することを特徴とするハードウェア/ソフトウェア協調
    設計方法。
  4. 【請求項4】 各々が命令メモリを有しパイプラインス
    テージの処理を担当するマルチプロセッサを用いたパイ
    プライン処理で実行される、アルゴリズム記述言語で記
    述された処理に対するハードウェア/ソフトウェア協調
    設計方法であって、 前記処理をブロックごとに細分化し、ブロック化情報を
    抽出する細分化工程と、 前記ブロック化情報および特定のプロセッサにおける命
    令コードごとの実行時間をまとめた命令実行時間のデー
    タベースに基づいて、前記処理のシミュレーションを行
    ない、前記ブロック間のデータ依存関係を示す接続情
    報、各ブロック内の処理において更新されたデータ量を
    示すデータ情報、および各ブロック内の処理に要する時
    間である処理実行時間を求めるブロック情報抽出工程
    と、 前記処理実行時間および前記パイプライン処理のパイプ
    ラインピッチに基づいて、ハードウェアで実現するブロ
    ックを抽出し、ハードウェア化情報を算出するハードウ
    ェア化工程と、 前記接続情報、前記データ情報、前記処理実行時間、お
    よび前記ハードウェア化情報に基づいて、前記ブロック
    のスケジューリングを行うスケジューリング工程とを含
    み、 ハードウェア化が必要なブロックについてはハードウェ
    ア化を実現しながら、前記パイプラインピッチに過不足
    なく収まるブロックから優先的に処理を実行し、かつ必
    要に応じて処理結果を保持するデータ量の少ない処理か
    ら優先的に処理を実行することを特徴とするハードウェ
    ア/ソフトウェア協調設計方法。
JP2001008043A 2001-01-16 2001-01-16 ハードウェア/ソフトウェア協調設計方法 Pending JP2002215703A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001008043A JP2002215703A (ja) 2001-01-16 2001-01-16 ハードウェア/ソフトウェア協調設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001008043A JP2002215703A (ja) 2001-01-16 2001-01-16 ハードウェア/ソフトウェア協調設計方法

Publications (1)

Publication Number Publication Date
JP2002215703A true JP2002215703A (ja) 2002-08-02

Family

ID=18875700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001008043A Pending JP2002215703A (ja) 2001-01-16 2001-01-16 ハードウェア/ソフトウェア協調設計方法

Country Status (1)

Country Link
JP (1) JP2002215703A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376549B2 (en) 2003-01-17 2008-05-20 Nec Corporation System performance prediction mechanism and method based on software component performance measurements
JP2012198633A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd 動作合成方法,装置およびプログラム
US8364458B2 (en) 2008-12-25 2013-01-29 Fujitsu Semiconductor Limited Simulation program and simulation apparatus
WO2021166118A1 (ja) * 2020-02-19 2021-08-26 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376549B2 (en) 2003-01-17 2008-05-20 Nec Corporation System performance prediction mechanism and method based on software component performance measurements
US8364458B2 (en) 2008-12-25 2013-01-29 Fujitsu Semiconductor Limited Simulation program and simulation apparatus
JP2012198633A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd 動作合成方法,装置およびプログラム
WO2021166118A1 (ja) * 2020-02-19 2021-08-26 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム
US11748226B2 (en) 2020-02-19 2023-09-05 Nippon Telegraph And Telephone Corporation Service graph generator, service graph generation method, and program
JP7372572B2 (ja) 2020-02-19 2023-11-01 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム

Similar Documents

Publication Publication Date Title
Appel et al. Optimal spilling for CISC machines with few registers
JP3311462B2 (ja) コンパイル処理装置
US8336017B2 (en) Architecture optimizer
US20020095666A1 (en) Program optimization method, and compiler using the same
US20040230770A1 (en) Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel
JP2002508102A (ja) 高水準プログラミング言語をコンパイルするための方法
Fonseca et al. Schedulability analysis of DAG tasks with arbitrary deadlines under global fixed-priority scheduling
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
CN111061485A (zh) 任务处理方法、编译器、调度服务器和介质
US7624252B2 (en) Processing device, method of determining internal configuration of processing device, and processing system
CN111930359B (zh) 一种异构嵌入式系统上进行算法开发的系统及方法
US8127259B2 (en) Synthesis constraint creating device, behavioral synthesis device, synthesis constraint creating method and recording medium
JP2002215703A (ja) ハードウェア/ソフトウェア協調設計方法
Haaß et al. Automatic custom instruction identification in memory streaming algorithms
US20220413818A1 (en) Method and apparatus for functional unit balancing at program compile time
JP3602697B2 (ja) 論理回路設計支援システム
CN115004150A (zh) 用于预测和调度软件流水化循环中的复制指令的方法和装置
CN114327643B (zh) 机器指令预处理方法、电子设备及计算机可读存储介质
US20120226890A1 (en) Accelerator and data processing method
JP3735723B1 (ja) ハードウエア記述言語合成ツール及びそれを利用した集積回路の設計方法
Kirovski et al. Engineering change protocols for behavioral and system synthesis
Pegatoquet et al. Rapid development of optimized DSP code from a high level description through software estimations
JP6627630B2 (ja) コンパイル方法、コンパイルプログラム及び情報処理装置
JPH0981604A (ja) ソフトウェア/ハードウェア協調設計システム及びその設計方法