(57)【特許請求の範囲】
【請求項１】
ソフトウェアのハードウェア化の性能見積り方法であって、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する工程、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する工程、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する工程、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する工程、
前記実行順序による処理時間を出力する工程、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する工程、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる工程、
を備えた方法。
【請求項２】
ソフトウェアのハードウェア化の性能見積り装置であって、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
を備えた装置。
【請求項３】
ソフトウェアのハードウェア化の性能見積りのためにコンピュータを、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
として機能させるためのプログラム。
【請求項４】
ソフトウェアのハードウェア化の性能見積りのためにコンピュータを、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体に関するものである。
【背景技術】
【０００２】
近年、処理速度向上のために、半導体集積回路により、コンピュータのソフトウェアにより実現される機能の全体あるいは一部のハードウェア化が行われている。ソフトウェアをハードウェア化する半導体集積回路の設計においては、処理速度向上のために、ソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能すなわち処理時間を見積る必要がある。すなわち、ハードウェア化に際しては、目標性能を設定し、ソフトウェア部分とハードウェア部分を合わせた全体の性能が、目標性能を満たすかどうかを見積る必要がある。従来、ソフトウェアの機能をマルチプロセッサ向けに並列化する際の性能見積り方法が知られている。特開２００４−３４１７５０号公報には、並列計算機システムの並列効率などの並列性能の評価指標算出を、プロセッサ数を変えながら行う複数回の測定を不要とし、１回の測定で行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３４１７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の性能見積り方法は、ソフトウェアを、マルチプロセッサ向けに並列化して動作させた場合の性能見積りはできるが、ソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積ることができない。
本発明の目的は、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積る、ソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体を提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、上記目的を達成するため以下のようなソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体を提供する。
（１）ソフトウェアのハードウェア化の性能見積り方法であって、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する工程、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する工程、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する工程、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する工程、
前記実行順序による処理時間を出力する工程、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する工程、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる工程、
を備えた方法。
（２）ソフトウェアのハードウェア化の性能見積り装置であって、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
を備えた装置。
（３）ソフトウェアのハードウェア化の性能見積りのためにコンピュータを、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
として機能させるためのプログラム。
（４）ソフトウェアのハードウェア化の性能見積りのためにコンピュータを、
指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、
前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、
前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、
前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、
前記実行順序による処理時間を出力する手段、
前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および
前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、
として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の効果】
【０００６】
請求項１に係る発明によれば、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積る、ソフトウェアのハードウェア化の性能見積り方法を得ることができる。
請求項２に係る発明によれば、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積る、ソフトウェアのハードウェア化の性能見積り装置を得ることができる。
請求項３に係る発明によれば、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積る、ソフトウェアのハードウェア化の性能見積りのためのプログラムを得ることができる。
請求項４に係る発明によれば、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積る、ソフトウェアのハードウェア化の性能見積りのためのプログラムを記録したコンピュータ読み取り可能な記録媒体を得ることができる。
【図面の簡単な説明】
【０００７】
【図１】従来技術によるソフトウェアの性能見積りフローの一例を示す図である。
【図２】本発明によるソフトウェアの性能見積りフローの一例を示す図である。
【図３】ソフトウェアをマルチプロセッサ向けに並列化し性能見積りする際の従来のシステム構成の一例を示す図である。
【図４】性能を見積る対象とされるソフトウェアの一例を示す図である。
【図５】図４のソフトウェアに対して並列度を１に設定してスケジューリングを実施した例を示す図である。
【図６】図４のソフトウェアに対して並列度を２に設定してスケジューリングを実施した例を示す図である。
【図７】ソフトウェアのタスクをハードウェア化する際の処理の変化の一例を示す図である。
【図８】本発明に係るソフトウェアのハードウェア化の性能見積り方法を実施するためのシステム構成の一例を示す図である。
【図９】処理速度向上のためにソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るための本発明の実施形態の一例を説明するための図である。
【図１０】本発明に係るソフトウェアのハードウェア化の性能見積り装置の構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態を説明する前に、従来のマルチプロセッサ向けの性能見積り方法について説明する。図３は、ソフトウェアをマルチプロセッサ向けに並列化し性能見積りする際の従来のシステム構成の一例を示す図である。図示のように、性能を見積る対象とされるソフトウェア３００１を指定し、ソフトウェア中で並列化する機能すなわちタスク名３００２、およびその並列度３００３を用いて、性能見積りプログラム３００４を実行する。性能見積りプログラム３００４では、入力されたタスクのスケジューリングを行い、並列化後の処理時間３００５を出力する。そして並列化後の処理時間が目標性能を満たしているかどうかを判定する。
【０００９】
ここでスケジューリングとは、複数のタスクにおいてトータルの処理時間が最短となるように各タスクの実行順序を決定することである。その際、タスク間でのタスクの起動および変数の伝播すなわち依存関係を考慮しなければならない。このスケジューリングの様子を以下、図４、図５および図６を用いて説明する。
【００１０】
図４は、性能を見積る対象とされるソフトウェアの一例を示す図である。本例のソフトウェアには、タスク１（ソースコード４００１）、タスク２（ソースコード４００２）、およびタスク３（ソースコード４００３）の、３種類のタスクが存在し、それぞれの処理時間は、タスク２＞タスク３＞タスク１である。また、本例のソフトウェアでは、タスク２がある時点でタスク３の起動（４００４）をかけ、変数ｃ（４００５）と変数ｄ（４００６）がタスク２からタスク３に伝播する構造である。
【００１１】
図５は、図４のソフトウェアに対して並列度を１に設定してスケジューリングを実施した例を示す図である。並列度を１に設定してスケジューリングを実施すると、並列化せず逐次実行するため、性能見積り結果の処理時間５００１は、タスク１の処理時間５００２とタスク２の処理時間５００３とタスク３の処理時間５００４の和となる。
【００１２】
図６は、図４のソフトウェアに対して並列度を２に設定してスケジューリングを実施した例を示す図である。タスク２の処理時間６００２は、タスク１の処理時間６００１およびタスク３の処理時間６００３に比べ最も長い。このため、タスク１およびタスク３は、タスク２の処理前および処理後に処理するのではなく、タスク２と並列に処理するとトータルの処理時間を最短にすることができる。その際、タスク１と、タスク２の間には依存関係が無いため、タスク１とタスク２の実行を同時に開始することが可能であり、並列処理するようにスケジューリングされる。しかし、タスク２とタスク３の間は、タスク２のＡの処理６００４の末尾でタスク３の起動がかかっており、依存関係が存在する。そのため、タスク２のＡの処理６００４が完了するまで、タスク３は処理を待機しなければならない。タスク２のＡの処理６００４以降とタスク３の間には依存関係が無いため、タスク３の起動タイミング以降でタスク２とタスク３を並列処理するようにスケジューリングされる。この場合、見積り結果の処理時間６００５は、図示のように、処理時間が最も長いタスク２の処理時間６００２に等しい。図６において、処理時間の短縮を図るために処理時間の一番長いタスク２をハードウェア化する場合の、従来技術における問題点について以下説明する。
【００１３】
図７は、ソフトウェアのタスクをハードウェア化する際の処理の変化の一例を示す図である。タスク２（７００１）は図６のタスク２（６００２）と同じものを示しており、タスク２に、Ａ（７００２）、Ｂ（７００３）、Ｃ（７００４）、Ｄ（７００５）、Ｅ（７００６）の処理が存在し、Ｂ→Ｃ→Ａ→Ｄ→Ｅの順に処理される。このタスク２をハードウェア化（７００７）して高速化すると、ソフトウェアのタスク２の各処理である、Ａ、Ｂ、Ｃ、Ｄ、Ｅの各処理時間７００８と比較して、ハードウェアのタスク２の各処理であるＡ’（７００９）、Ｂ’（７０１０）、Ｃ’（７０１１）、Ｄ’（７０１２）、およびＥ’（７０１３）の各処理時間７０１４が短くなる。また、ハードウェアのタスク２の処理Ｂ’およびＣ’がハードウェア化（７００７）によって並列に処理（７０１５）される場合、Ａ’が処理されるタイミングが変化する。
【００１４】
すなわち、それまでソフトウェアであったタスク２がハードウェア化されることで、各処理時間７０１４が、ハードウェア化前の各処理時間７００８と比較して短くなり、そしてＡ’が処理されるタイミングが変化する。これにより、ソフトウェアのタスク１およびタスク３の処理タイミングが変化し、並列処理するタスク間の関係が変化するという影響がある。したがって、ハードウェア化後の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るには、上述の処理タイミングの変化の影響を考慮して再スケジューリングする必要がある。
【００１５】
しかし、従来技術では、タスク２のハードウェア化に対し、そのタスクの処理時間変化をパラメータ化（数値化）し、ハードウェア化検討結果の処理時間を設定すること、およびハードウェア化するタスクが起動をかけるタスクの、起動タイミングをパラメータ化し、ハードウェア化検討結果のタスクの起動タイミングを設定することができない。すなわちハードウェア化検討結果の処理時間と、ハードウェア化検討結果のタスクの起動タイミングを、スケジューリング計算に反映した上で再スケジューリングすることができず、ハードウェア化後の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積ることができないという問題がある。
【００１６】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。図８は、本発明に係るソフトウェアのハードウェア化の性能見積り方法を実施するためのシステム構成の一例を示す図である。まず、性能を見積る対象とされるソフトウェア８００１を指定し、そのソフトウェア中で並列化するタスク名８００２およびその並列度８００３を用いて、並列化性能見積りプログラム８００４を実行する。続いて、並列化性能見積りプログラム８００４にしたがって、上記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する。ここで、タスク間で変数を伝播する場合には、一方のタスクが他方のタスクに起動をかけるタイミングを抽出する。そして、この起動をかけるタイミングを考慮して上記並列度で処理時間が最短となるように並列化するタスク名のタスクの実行順序を決定（スケジューリング）し、並列化後の実行順序による処理時間８００５を出力する。この並列化後の処理時間が目標性能（目標時間）を満たさない場合に、ソフトウェア８００１に係る複数のタスク中でハードウェア化するタスク８００６を決定し、そのタスク名８００７、そのタスクの処理時間８００８、およびそのタスクによる上記起動をかけるタイミング８００９を用いて、並列化性能見積りプログラム８００４を実行する。これにより、上記ハードウェア化するタスクの処理時間および上記ハードウェア化するタスクによる上記起動をかけるタイミングが並列化性能見積りプログラム８００４による上記実行順序の決定に反映される。
【００１７】
すなわち、並列化後の処理時間が目標性能を満たさない場合、出力された並列化後の処理時間を勘案して、ハードウェア化するタスク８００６を決定する。ハードウェア化するタスク名８００７に係るタスクの処理時間８００８、およびタスクが起動をかけるタスクの起動タイミング８００９を用いて並列化性能見積りプログラム８００４を実行し、再スケジューリングを行う。これにより並列化後の処理時間が目標性能を満たした場合、並列化したソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体処理時間８０１０を出力する。
【００１８】
図１０は、本発明に係るソフトウェアのハードウェア化の性能見積り装置の構成例を示す図である。図示のように、コンピュータとして中央演算処理装置（ＣＰＵ）１００、記憶装置１０１、入力装置１０２、および出力装置１０３がバス１０４を介して接続されている。記憶装置１０１には、性能を見積る対象とされるソフトウェア８００１、並列化性能見積りプログラム８００４、並列化後の処理時間８００５、およびソフトウェア部分とハードウェア部分を合わせた全体処理時間８０１０が格納される。入力装置１０２からは、並列化するタスク名８００２、その並列度８００３、ハードウェア化するタスクのタスク名８００７、ハードウェア化するタスクの処理時間８００８、およびハードウェア化するタスクが起動をかけるタスクの起動タイミング８００９が入力可能である。出力装置１０３は、並列化後の処理時間８００５、およびソフトウェア部分とハードウェア部分を合わせた全体処理時間８０１０を出力可能である。なお、記憶装置１０１は、本例では単一装置として示されているが、複数の記憶装置で構成してもよい。また記憶装置１０１は、例えば半導体メモリであるが、これに限定されず、ハードディスク等でもよいし、それらの組合せでもよい。入力装置１０２は例えばキーボードであるが、これに限定されず、タッチパネル等でもよい。出力装置１０３は例えばプリンタであるが、これに限定されず、ディスプレイ装置等でもよい。
【００１９】
このように、ソフトウェアのハードウェア化の性能見積り装置では、入力装置１０２より、指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する。中央演算処理装置１００は、入力された並列化するタスク名およびその並列度を用いて並列化性能見積りプログラム８００４を実行し、タスクごとの処理時間を算出し、またタスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出し、この起動をかけるタイミングを考慮して上記並列度で処理時間が最短となるように並列化するタスク名のタスクの実行順序を決定する。出力装置１０３は、この実行順序による処理時間（並列化後の処理時間）を出力することができるが、これは必須ではなく、並列化後の処理時間は記憶装置１０１に出力し格納しておくことができる。入力装置１０２はまた、上記処理時間が目標性能を満たさない場合に、複数のタスク中でハードウェア化するタスクを決定し、そのタスク名、そのタスクの処理時間、およびそのタスクによる前記起動をかけるタイミングを入力可能とされる。この場合、中央演算処理装置１００は、並列化性能見積りプログラム８００４を実行して、入力されたハードウェア化するタスクのタスク名、ハードウェア化するタスクの処理時間、およびハードウェア化するタスクによる上記起動をかけるタイミングを、上記実行順序の決定に反映させることができる。
【００２０】
次に、本発明によるソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るフローを説明するが、その前に従来技術によるソフトウェアの性能見積りフローについて説明する。
図１は、従来技術によるソフトウェアの性能見積りフローの一例を示す図である。図１において、工程１００１では、性能を見積る対象とされるソフトウェアを指定する。工程１００２では、ソフトウェア中のタスク名をリスト化する。工程１００３では、ソフトウェア中で並列化するタスク名およびその並列度を入力する。工程１００４では、ソフトウェア中のタスクごとの処理時間を算出する。工程１００５では、タスク間でのタスクの起動、変数の伝播を抽出しリスト化する。工程１００６では、入力した並列化するタスク名のタスクを、入力した並列度でスケジューリングする。工程１００７では、並列化後の処理時間を出力する。工程１００８では、並列化後の処理時間が目標性能を満たしているかどうかの判定を行い、目標性能を満たさない場合は、並列化するタスクの追加および変更、もしくは、並列度を変更して、再度工程１００３から上記工程を繰り返し、目標性能を満たす場合は工程１００９へ進み処理終了となる。
【００２１】
図２は、本発明によるソフトウェアの性能見積りフローの一例を示す図である。図２において、工程２００１では、性能を見積る対象とされるソフトウェアを指定する。工程２００２では、ソフトウェア中のタスク名をリスト化する。工程２００３では、ソフトウェア中で並列化するタスク名およびその並列度を入力する。工程２００４では、ソフトウェア中のタスクごとの処理時間を算出する。工程２００５では、タスク間でのタスクの起動、変数の伝播を抽出しリスト化する。工程２００６では、入力した並列化するタスク名のタスクを、入力した並列度でスケジューリングする。工程２００７では、並列化後の処理時間を出力する。工程２００８では、並列化後の処理時間が目標性能を満たしているかどうかの判定を行い、目標性能を満たさない場合は工程２００９を実施し、満たす場合は工程２０１２へ進み処理終了となる。工程２００９では、ハードウェア化するタスクを決定する。工程２０１０では、ハードウェア化するタスクの処理時間を設定する。工程２０１１では、ハードウェア化するタスクが起動するタスクの起動タイミングを設定する。その後、工程２００６に戻り、ハードウェア化するタスクの処理時間の設定情報と、ハードウェア化するタスクが起動をかけるタスクのタイミングの設定情報をスケジューリング計算に反映して再スケジューリングする。工程２００７では、ハードウェア化後の処理時間を出力し、工程２００８で目標性能を満足しているかどうか判定する。そして、再び条件を満たさない場合は、工程２００９においてハードウェア化するタスクを決定（変更）し、工程２０１０においてハードウェア化するタスクの処理時間を設定（変更）し、工程２０１１におけるハードウェア化するタスクが起動するタスクの起動タイミングを設定（変更）して、再度工程２００６以降の工程を繰り返す。そして、目標性能を満たす場合は工程２０１２へ進み処理終了となる。
【００２２】
従来技術と本発明における実施形態の違いは、図１の従来技術のフローでは、工程１００８でスケジューリング後の処理時間が目標性能を満足していない場合、工程１００３に戻り、並列化するタスクの追加および変更、もしくは、並列度を変更して再見積りするが、図２の本発明によるフローでは、工程２００８の判定でスケジューリング後の処理時間が目標性能を満足していない場合、工程２００９にてハードウェア化するタスクを決定し、工程２０１０にてハードウェア化するタスクの処理時間を設定し、工程２０１１にてハードウェア化するタスクが起動するタスクの起動タイミングを設定し、それらを用いて工程２００６において再度スケジューリングを実施するところにある。
【００２３】
図９は、処理速度向上のためにソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るための本発明の実施形態の一例を説明するための図である。図９には、ソフトウェアのタスク１（処理時間９００８）、タスク２（処理時間９００１）、タスク３（処理時間９００３）を、並列度を２としてスケジューリングを行い、見積り結果の処理時間９００９が目標性能を満たさない場合、その中のタスク２をハードウェア化して再スケジューリングを行う様子を示す。すなわち、ハードウェア化するタスク２の処理時間９００２、およびタスク２より起動をかけるタスク３の起動タイミング９００４を設定し、再スケジューリング９００５を行う。再スケジューリング９００５の後、ハードウェア化されたタスク２は処理時間９００６が減少し、かつタスク３の起動タイミングが変化する。その結果、見積り結果の処理時間９００７は、タスク１の処理時間９００８とタスク３の処理時間９００３の和となる。図示のように、ハードウェア化前のタスク２のＡの処理末尾の起動タイミングは、ハードウェア化後にはタスク２のＡ’の処理末尾の起動タイミングとなり、時間的に早くなる。すなわち、全体として処理時間が短縮される。
【００２４】
上述のものは、コンピュータに次のプログラムを実行させることで実施することができる。すなわち、このプログラムは、ソフトウェアのハードウェア化の性能見積りのためにコンピュータを、指定されたソフトウェア中で並列化するタスク名およびその並列度を入力する手段、前記並列化するタスク名およびその並列度に基づいてタスクごとの処理時間を算出する手段、前記タスク間で変数を伝播する場合に一方のタスクが他方のタスクに起動をかけるタイミングを抽出する手段、前記起動をかけるタイミングを考慮して前記並列度で処理時間が最短となるように前記並列化するタスク名のタスクの実行順序を決定する手段、前記実行順序による処理時間を出力する手段、前記処理時間が目標性能を満たさない場合に、前記タスク中でハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを入力する手段、および前記ハードウェア化するタスクの処理時間および前記ハードウェア化するタスクによる前記起動をかけるタイミングを前記実行順序の決定に反映させる手段、として機能させる。このプログラムは、記憶装置に格納しておくことができるが、これに限定されずＣＤＲＯＭ等のコンピュータ読み取り可能な記録媒体に記録して又は外部から通信手段によって提供することも可能である。
【００２５】
このように本発明は、タスクの処理時間変化をパラメータ化してハードウェア化検討結果の処理時間を設定し、かつハードウェア化するタスクが起動をかけるタスクの起動タイミングをパラメータ化して、ハードウェア化検討結果のタスクの起動タイミングを設定し、前記ハードウェア化検討結果の処理時間と、前記ハードウェア化検討結果のタスクの起動タイミングを、スケジューリング計算に反映した上で再スケジューリングし、ソフトウェアの全体あるいは一部をハードウェア化して並列化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るものである。
【００２６】
すなわち、本発明は、処理速度向上のためにソフトウェアの全体あるいは一部をハードウェア化する際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能を見積るものであって、性能を見積る対象とされるソフトウェア、そのソフトウェア中で並列化するタスク名、およびその並列度を入力として、タスクごとの処理時間を算出する機能と、タスク間でのタスクの起動および変数の伝播を抽出し、リスト化する機能と、前記タスクごとの処理時間と、前記タスク間でのタスクの起動、変数の伝播のリストと、前記ソフトウェア中で並列化するタスク名および前記並列度を入力としてスケジューリングする機能を有する。加えて、前記スケジューリングしたソフトウェア中からハードウェア化するタスクを指定する機能と、前記ハードウェア化するタスクの処理時間を設定する機能と、前記リスト化したタスク間でのタスクの起動および変数の伝播をもとに、ハードウェア化するタスクが起動をかけるタスクの起動タイミングを設定する機能と、前記設定したハードウェア化するタスクが起動をかけるタスクの起動タイミングと、前記ハードウェア化するタスクの処理時間の設定情報をスケジューリング計算に反映して再スケジューリングする機能を有するものである。これにより、ソフトウェアの性能すなわち処理時間を目標性能まで向上させるために、ソフトウェアの全体あるいは一部のハードウェア化をする際の、ソフトウェア部分とハードウェア部分を合わせた全体の性能すなわち処理時間を見積ることが容易に可能となり、設計生産性を向上させることができる。
【符号の説明】
【００２７】
３００１：ソフトウェア、３００２：並列化するタスク名、３００３：並列度、３００４：性能見積りプログラム、３００５：並列化後の処理時間、４００１：タスク１のソースコード、４００２：タスク２のソースコード、４００３：タスク３のソースコード、４００４：タスクの起動、４００５〜４００６：タスク３の入力変数、５００１：見積り結果の処理時間、５００２〜５００４：タスクの処理時間、６００１〜６００３：タスクの処理時間、６００４：タスク２のＡの処理、６００５：見積り結果の処理時間、７００１：タスク２、７００２〜７００６：ソフトウェアのタスク２の処理、７００７：ハードウェア化、７００８：ソフトウェアのタスク２の処理の処理時間、７００９〜７０１３：ハードウェアのタスク２の処理、７０１４：ハードウェアのタスク２の処理の処理時間、７０１５：処理Ｂと処理Ｃの並列処理、８００１：ソフトウェア、８００２：並列化するタスク名、８００３：並列度、８００４：性能見積りプログラム、８００５：並列化後の処理時間、８００６：ハードウェア化するタスク、８００７：ハードウェア化するタスクのタスク名、８００８：ハードウェア化するタスクの処理時間、８００９：ハードウェア化するタスクが起動をかけるタスクの起動タイミング、８０１０：ソフトウェア部分とハードウェア部分をあわせた全体の処理時間、９００１：タスク２の処理時間、９００２：ハードウェア化するタスクの処理時間、９００３：タスク３の処理時間、９００４：ハードウェア化するタスクが起動をかけるタスクの起動タイミング、９００５：再スケジューリング処理、９００６：ハードウェアのタスク２の処理時間、９００７：ハードウェア化後の見積り結果の処理時間、９００８：タスク１の処理時間、９００９：ハードウェア化前の見積り結果の処理時間
【図１】
0005739759.tif 000002
【図２】
0005739759.tif 000003
【図３】
0005739759.tif 000004
【図４】
0005739759.tif 000005
【図５】
0005739759.tif 000006
【図６】
0005739759.tif 000007
【図７】
0005739759.tif 000008
【図８】
0005739759.tif 000009
【図９】
0005739759.tif 000010
【図１０】
0005739759.tif 000011