(57)【特許請求の範囲】
【請求項１】
システムの処理機能をハードウェアとソフトウェアとに分割する設計を支援する装置において、
前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力する入力手段と、
前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出する算出手段と、
前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定する決定手段と、
を備えたことを特徴とするシステムの設計支援装置。
【請求項２】
システムの処理機能をハードウェアとソフトウェアに分割する設計を支援する方法において、
前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力手段が入力するステップと、
前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出手段が算出するステップと、
前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定手段が決定するステップと、
を具備することを特徴とする設計支援方法。
【請求項３】
システムの処理機能をハードウェアとソフトウェアに分割する設計を支援するプログラムであって、コンピュータを、
前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力する入力手段、
前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出する算出手段、
前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定する決定手段、として機能させるための設計支援プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ等の演算処理システムのハードウェア／ソフトウェア協調設計の支援に係り、システムの処理機能をハードウェアとソフトウェアとに分割する設計を支援する装置および方法ならびにプログラムに関する。
【０００２】
【従来の技術】
家電製品や事務機器などで幅広く利用されるシステムは、一般に、ハードウェアとソフトウェアとから構成される組込みシステムである。組込みシステムは、ＡＳＩＣ、ＣＰＵ、メモリ等から構成されている。組込みシステムの設計では、システム全体の処理機能を記述した仕様を、ＡＳＩＣ等によりハードウェア化する部分、ＣＰＵで実行されるプログラムとしてソフトウェア化する部分に分割する必要がある。これをハードウェア／ソフトウェア機能分割という。かかるハードウェア／ソフトウェア機能分割の際には、ＡＳＩＣ、ＣＰＵ、メモリ等のシステム全体のゲート数や性能等のコストを見積もり、設計者によって予め与えられるチップ面積や時間性能等の設計制約を満たすようにシステムの処理機能をハードウェアとソフトウェアとに分割する必要がある。
【０００３】
従来、ハードウェア／ソフトウェア機能分割は、熟練したシステム設計者の勘と経験によって解決されてきたが、計算機の高性能化、アーキテクチャ評価の容易なプログラマブルデバイスの普及、ＣＡＤツールの発達による統合的なＣＡＤ環境の可能性と必要性、といった現在の状況から、システム設計を定量的な方法に基づいて組織的に行う手法としてのハードウェア／ソフトウェア機能分割が研究・開発されている。例えば、Ａ．Ｋａｌａｖａｄｅ著「Hardware/Software Partitioning for Multifunction Systems, IEEE TRANSACTI0NS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS,VOL.17,NO.9,SEPTEMBER 1998」に見られるように、システムの処理機能を、それぞれの機能の処理時間とハードウェア実装した場合の面積の比と、静的に計算可能なシステム全体の処理時間との比較から分割を決定している。しかし、システム全体の処理時間を静的に計算することが困難である場合については、定量的な方法に基づいたハードウェア／ソフトウェア機能分割はできなかった。
【０００４】
また、特開２０００−５７１９９号公報に見られるように、ハードウェア／ソフトウェア機能分割におけるシステム全体の性能をシミュレーションによって正確に見積り、設計制約のチェックを行うことによってシステム設計を行う装置がある。しかしながら、この装置では、システムの機能の再分割において膨大な数のシミュレーション回数が必要であり、システムの性能を改善する分割案を迅速に決定することができなかった。
【０００５】
システム全体の処理時間を静的に計算することが困難となる大規模で複雑なシステムでは、ハードウェアとソフトフェアの機能分割は容易ではなかった。さらに、多数の分割案が考えられるシステムでは、性能改善が見込まれる分割案を一意に決定することができず、シミュレーション回数が多くなり、設計期間が長期化するといった問題もあった。
【０００６】
【発明が解決しようとする課題】
本発明は、上記事情を考慮してなされたものであり、システムの処理機能をハードウェアとソフトウェアへ迅速かつ容易に機能分割することができる設計支援装置および設計支援方法ならびに設計支援プログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記課題を解決し目的を達成するために、本発明は次のように構成されている。
【００１０】
本発明の一態様に係る設計支援装置は、システムの処理機能をハードウェアとソフトウェアとに分割する設計を支援する装置において、前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力する入力手段と、前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出する算出手段と、前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定する決定手段と、を備えたことを特徴とする。
【００１１】
本発明の一態様に係る設計支援方法は、システムの処理機能をハードウェアとソフトウェアに分割する設計を支援する方法において、前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力手段が入力するステップと、前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出手段が算出するステップと、前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定手段が決定するステップと、を具備することを特徴とする。
【００１２】
本発明の一態様に係る設計支援プログラムは、システムの処理機能をハードウェアとソフトウェアに分割する設計を支援するプログラムであって、コンピュータを、前記処理機能をソフトウェアで実装した場合に予測される処理量パラメータと前記ソフトウェアの実行がスケジューリングされる際のＣＰＵ待ち時間パラメータとを入力する入力手段、前記処理量パラメータと前記ＣＰＵ待ち時間パラメータとの積を分割指標として算出する算出手段、前記分割指標に基づく優先順位に従って、ハードウェアからソフトウェア若しくはソフトウェアからハードウェアに再分割する前記処理機能の少なくとも一つの候補を決定する決定手段、として機能させるためのプログラムである。
【００１３】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１４】
（第１の実施形態）
図１は、本発明の第１実施形態に係る設計支援装置の概略構成を示すブロック図である。この装置は、設計対象のシステムを構成する各処理機能の仕様を設計者が記述した際、これら処理機能をハードウェアとソフトウェアに分割する装置である。
【００１５】
処理機能記述部１０１は設計対象となるシステムの（動作）仕様を記述する部分、ハードウェア／ソフトウェア機能分割部１０２は処理機能記述部１０１で記述されたシステムの処理機能をハードウェアとソフトウェアとに分割する部分、シミュレーション実行部１０３はハードウェア／ソフトウェア機能分割部１０２で分割された処理機能のシミュレーションを行う部分である。結果表示部１０４はシミュレーション実行部１０３でシミュレーションされたシステムの性能（ここでは、時間性能値および総ゲート数）を表示する。
【００１６】
ここで、システムの「処理機能」とは、システムの構成要素である処理又は機能等をいい、処理機能記述部１０１において記述可能なものをいう。また、処理機能をハードウェアとソフトウェアとに「分割する」とは、個々の処理機能をハードウェアにより実現するか、ソフトウェアにより実現するかを決定することをいう。設計が終了すると、仕様として記述されていた抽象的な概念としての各処理機能は、ハードウェア又はソフトウェアのいずれかに割り当てられることになる。
【００１７】
評価パラメータ入力部１０５は、分割指標の計算に用いるパラメータを入力する部分、分割指標計算部１０６はシミュレーション実行部１０３でシミュレーションされた性能の結果と、評価パラメータ入力部１０５において設計者等から入力されたパラメータとを用いて分割指標を計算する部分である。再分割候補出力部１０７は、分割指標計算部１０６で計算された結果に基づいて、システムの処理機能の再分割を行う際の処理機能の候補を出力する。
【００１８】
図２は、処理機能記述部１０１で記述されたシステムの一例であり、このシステムは、処理１から処理７までの７つの処理ブロックから構成されている。まず、最初のデータの入力に対する処理１を開始する。この処理１が終了すると、処理２及び処理４を開始する。処理２が終了すると処理３を開始し、処理４が終了すると処理５を開始すると共に、次の入力に対する処理１を開始する。処理３および処理５が終了すると処理６を開始し、処理６が終了すると処理７を開始する。処理７が終了した時点でデータの出力を行う。全ての入力に対する出力が得られるまで、以上の処理を繰り返す、というものである。
【００１９】
ハードウェア／ソフトウェア機能分割部１０２では、図２で表されるようなシステムの処理ブロックをハードウェアとソフトウェアに分割する。最初は、再分割候補出力部１０７による入力が無いので、例えば全ての処理ブロックがソフトウェアへ分割される。
【００２０】
シミュレーション実行部１０３では、ハードウェア／ソフトウェア機能分割部１０２で分割されたシステムの処理ブロックのスケジューリングを行い、性能シミュレーションを行う。スケジューリング方式は、例えば、ＦＩＦＯ（First In
First Out）や優先度順スケジューリング等を用いる。
【００２１】
結果表示部１０４では、シミュレーション実行部１０３で実行されたシステムの性能の結果表示を行う。例えば、１００個の入力データに対し、１００個の出力データを得るまでの処理時間やシステムの総ゲート数等を表示する。
【００２２】
評価パラメータ入力部１０５では、分割指標の計算に利用するパラメータの入力を行う。例えば、図２で表される各処理ブロックの処理量や、各処理ブロックをハードウェア実装した場合に予測されるゲート数等である。また、消費電力や、処理ブロックがスケジューリングされるときのＣＰＵ待ち時間、時間的なデッドライン、ソフトウェア実装した場合のコードサイズ、システムのチップ面積、バッファのサイズ、あるいは処理ブロックが繰り返し実行される場合の実行回数などをパラメータとして入力しても良い。
【００２３】
分割指標計算部１０６では、評価パラメータ入力部１０５で入力されたパラメータとシミュレーション実行部１０３によって得られる性能結果をもとに、分割指標の計算を行う。例えば、評価パラメータ入力部１０５で各処理ブロックをソフトウェア実装した場合の処理量パラメータと、各処理ブロックをハードウェア実装した場合の予測されるゲート数パラメータとが入力された場合、シミュレーション実行部１０３による性能結果から処理量と予測ゲート数の参照を行い、各処理ブロックに対し処理量／予測ゲート数を計算し、それぞれを各処理ブロックの分割指標値とする。
【００２４】
再分割候補出力部１０７では、分割指標計算部１０６で計算された分割指標値をもとに、各処理ブロックをソフトウェアに分割したほうが良いかハードウェアに分割したほうが良いかの判定を行い、再分割を行う処理ブロックの候補を優先順位付きで出力する。例えば、各処理ブロックの処理量、予測ゲート数、分割指標計算部１０６で計算された分割指標としての処理量／予測ゲート数が図３で示されるようになったとする。この図３に示される結果から、処理量／ゲート数の値が大きい処理ブロックから優先順位を付与し、これらの処理ブロックをハードウェアに分割する候補として出力する。
【００２５】
再び、ハードウェア／ソフトウェア機能分割部１０２に戻って、再分割候補出力部１０７による再分割候補からシステムの処理ブロックの再分割を行い、シミュレーション実行部１０３でシミュレーションを行う。例えば、優先順位が最も高い処理２０５をソフトウェアからハードウェアへ再分割し、シミュレーションを行う。これを、あらかじめ与えられた設計制約を満足する性能シミュレーション結果が得られるまで繰り返す。
【００２６】
このように、評価パラメータを使用して分割指標を計算し、再分割候補の処理ブロックを出力することによって、システムの一つの分割案における評価を容易に行うことが可能となり、さらに、システムの性能を改善するための次の分割案を一意に決定することができ、ハードウェア／ソフトウェア機能分割のシミュレーション回数を減らすことが可能である。
【００２７】
（第２の実施形態）
次に本発明の第２の実施形態を、図１乃至図６を参照して説明する。この第２の実施形態は、第１の実施形態で示した図２のシステムの例に対するハードウェア／ソフトウェア機能分割で得られる分割案を示すものである。図４に、各分割案に対する性能シミュレーションの結果表示項目とそれぞれの項目にあらかじめ与えられた設計制約を示す。図５は、それぞれの分割案に対して、ソフトウェアへ分割された処理ブロックとハードウェアへ分割された処理ブロックとを示す図である。また、図６はそれぞれの分割案に対するシミュレーション結果を示す図である。なお、ここで設計制約として用いられる時間性能値とは、システム全体の処理時間に関する値であり、本実施形態においては、画像表示に関するフレームレートである。
【００２８】
まず最初に、ハードウェア／ソフトウェア機能分割部１０２において全ての処理ブロックをソフトウェアへ分割する。この分割案３０１に対してシミュレーション実行部１０３でシミュレーションを行った結果は、図６の分割指標４０１で示すように設計制約を満たしていない（時間性能値が「９．７」で設計制約である「３０」を大きく下回る。なお、総ゲート数は「０」であるから設計制約である「８０以下」を満たす）ので、再分割候補出力部１０７においてどの処理ブロックをハードウェアへ分割するかを判定する。図３は、判定結果によって得られる優先順位付きの再分割候補である。ここでは図３で示されるように、優先順位の高い処理２０５をハードウェアに分割する。同様に、この分割案３０２に対してシミュレーションを行った結果は、分割指標４０２で示すように設計制約を満たしていないので、さらに再分割候補出力部１０７においてハードウェアへ分割する処理ブロックを判定する。図３より、優先順位が処理２０５の次に高い処理２０４をハードウェアへ分割する。同様に、この分割案３０３に対してシミュレーションを行った結果は、分割指標４０３で示すようになる。さらに再分割候補出力部１０７においてハードウェアへ分割する処理ブロックを判定し、優先順位が処理２０４の次に高い処理２０６をハードウェアへ分割する。この分割案３０４に対するシミュレーション結果は、分割指標４０４で示すように時間性能値は設計制約を満たすが、総ゲート数が８０以上となり制約を満たしていない。よって、再分割候補出力部１０７において処理２０６をソフトウェアへ分割し、分割指標値が処理２０６の次に大きい処理２０２をハードウェアへ分割する。この分割案３０５に対するシミュレーション結果は、分割指標４０５で示すように設計制約を満たしている（時間性能値が「３２．８」であり設計制約である「３０以上」を満たす。また、総ゲート数は「６５」であり設計制約である「８０以下」を満たす）。すなわち、図２のシステムの例に対する分割案３０５が解として得られたことになる。
【００２９】
図２の例に対する分割案としては２の７乗通り、すなわち１２８通りが考えられるが、本発明のように分割指標値を計算し、これをもとに再分割を行うことによって遙かに少数の（ここでは５回の）シミュレーションで設計制約を満たす分割案を得ることが可能になり、設計期間を短縮することができる。
【００３０】
（第３の実施形態）
次に本発明の第３の実施形態を、図１および図７を参照して説明する。この第３の実施形態は、第２の実施形態で示した分割指標とは別の分割指標を用いて、システムのハードウェア／ソフトウェア機能分割で得られる分割案を示すものである。図７は、ソフトウェアへ分割された処理ブロックをシミュレーションするためのシミュレーションモデルの構成を示す図である。ソフトウェア処理ブロック群５０１は、ソフトウェア分割された処理ブロック群である。ソフトウェアシミュレーションモデル５０２は、ソフトウェア処理ブロック群５０１の各処理ブロックをシミュレーションするためのシミュレーションモデルである。キューモデル５０３は、ソフトウェア処理ブロック群５０１の各処理ブロックをキューイングするモデルである。ＣＰＵモデル５０４は、キューモデル５０３の各処理ブロックのスケジューリングを行い、その１つをシミュレーションするモデルである。時間性能値計算部５０５は、ソフトウェア処理ブロック群５０１の各処理ブロックの時間性能値を計算する部分である。シミュレーション結果出力部５０６は、シミュレーション結果を出力する部分である。
【００３１】
まず、ソフトウェア処理ブロック群５０１の各処理ブロックはシミュレーション実行時に、キューモデル５０３でキューイングされる。この時、各処理ブロックがキューイングされた時刻をモデル内部に保存しておく。次にＣＰＵモデル５０４でスケジューリングされ、１つの処理ブロックがシミュレーションされる。スケジューリング方式は、例えばＦＩＦＯや優先度順アルゴリズムなどである。この時、処理ブロックがシミュレーションされた開始時刻をモデル内部に保存しておく。次に時間性能値計算部５０５において、処理ブロックがキューイングされた時刻と、ＣＰＵモデル５０４でシミュレーション開始時刻とを計算する。例えば、シミュレーション開始時刻から、キューイングされた時刻を引けばその処理ブロックがＣＰＵ待ちとなった時間が得られる。この計算結果をシミュレーション結果出力部５０６においてシミュレーション結果として出力する。
【００３２】
このようなシミュレーション結果を利用することで、図１の評価パラメータ入力部１０５において、各処理ブロックの処理量パラメータと、各処理ブロックのＣＰＵ待ち時間パラメータとを設定し、分割指標計算部１０６で処理量とＣＰＵ待ち時間との積を分割指標として計算し、再分割候補出力部１０７でこの分割指標を用いて再分割を行う処理ブロックの候補を得ることが可能である。なお、このハードウェアへ再分割する処理ブロックの候補の優先順位は、分割指標値が大きい１頂に優先順位が高いようにする。ＣＰＵ待ち時間と処理量の積が大きいということは、ソフトウェアとして実装するにはＣＰＵへの負荷が大きく、他の処理にも影響していることが考えられるので、ハードウェアとして実装するほうがシステムの性能の向上が見込まれる。このように、ソフトウェアモデルでのシミュレーション結果を分割指標に利用して評価を行うことで、処理機能の再分割候補を出力することが可能であり、システムの再分割を容易に行うことができる。
【００３３】
以上のような第１実施形態〜第３実施形態の設計支援装置の動作を纏めると図８のようになる。
【００３４】
先ずステップＳ１で、システムの処理機能を記述する。
【００３５】
次に、ステップＳ２で評価パラメータおよび設計制約を入力する。この評価パラメータとは、例えば、各処理ブロックの処理量や、ハードウェアで実装した場合に予測されるゲート数や、処理ブロックのＣＰＵ待ち時間等であり、設計制約とはシステムの時間性能値や総ゲート数などである。
【００３６】
次に、ステップＳ３で初期分割として全ての処理ブロックをソフトウェアへ分割する。
【００３７】
次に、ステップＳ４でその分割案におけるシミュレーションを実行する。
【００３８】
次に、ステップＳ５では設計制約を満たすかどうかの判定を行い、満たしていれば終了する。設計制約を満たしていない場合、ステップＳ６で分割指標値の計算を行う。分割指標値は、ステップＳ２で入力された評価パラメータやステップＳ４のシミュレーション実行結果を利用し、例えば、処理ブロックの処理量／ゲート数（第１および第２実施形態）や処理ブロックの処理量とＣＰＵ待ち時間との積（第３実施形態）などの計算した値である。
【００３９】
次に、ステップＳ７でハードウェアへ分割する処理ブロックの優先順位付けされた候補を出力する。
【００４０】
次に、ステップＳ８においてステップＳ７で出力された候補のなかからハードウェアへ再分割する処理ブロックを決定し、システムの再分割を行う。処理ブロックの決定方法は、例えば、優先順位の最も高い処理ブロックを選ぶといった方法である。この新しい分割案に対して、再びステップＳ４でシミュレーションを行い、設計制約を満たす分割案が得られるまでこれを繰り返す。
【００４１】
以上説明した実施形態は、ソフトウェアとして実現可能であり、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【００４２】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【００４３】
【発明の効果】
以上説明したように、本発明によれば、システムの再分割を一意に決定することが可能であり、さらに、システムの分割案に対するシミュレーション回数を減らすことができ、システムの処理機能をハードウェアとソフトウェアへ迅速かつ容易に機能分割することが可能である。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る設計支援装置の概略構成を示すブロック図
【図２】上記実施形態に係り、処理機能記述部において記述された設計対象のシステムの一例を示す図
【図３】上記実施形態に係り、分割指標の計算結果と優先順位を示す図
【図４】上記実施形態に係り、各処理ブロックの処理量および予測ゲート数を示す図
【図５】上記実施形態に係り、ハードウェア／ソフトウェア分割案を示す図
【図６】上記実施形態に係り、分割案に対するシミュレーション結果を示す図
【図７】上記実施形態に係り、ソフトウェア分割された処理ブロックのシミュレーションモデルの概略構成を示すブロック図
【図８】上記実施形態に係り、ハードウェア／ソフトウェア機能分割手順を示すフローチャート
【符号の説明】
１０１…処理機能記述部
１０２…ハードウェア／ソフトウェア機能分割部
１０３…シミュレーション実行部
１０４…結果表示部
１０５…評価パラメータ入力部
１０６…分割指標計算部
１０７…再分割候補出力部
【図１】
0004467823.tif 000002
【図２】
0004467823.tif 000003
【図３】
0004467823.tif 000004
【図４】
0004467823.tif 000005
【図５】
0004467823.tif 000006
【図６】
0004467823.tif 000007
【図７】
0004467823.tif 000008
【図８】
0004467823.tif 000009