(57)【要約】【課題】高位合成におけるループ展開数と回路並列数の最適な組み合わせを決定する。【解決手段】回路合成情報生成部１１が、パラメータの候補としてループ展開数Ｍと回路並列数Ｎの組み合わせを複数設定して、これら組み合わせごとに、高位合成処理により得られる合成回路を示す回路合成情報２３を生成し、最適パラメータ決定部１３が、生成された回路合成情報２３ごとに、当該回路合成情報２３が示す合成回路に関する推定処理性能Ｐを算出し、最大の推定処理性能Ｐmaxが得られた回路合成情報２３に基づいて、ループ展開数Ｍと回路並列数Ｎの最適な組み合わせを決定する。【選択図】  図１
2019215697.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理回路に対して対象処理をループ展開して実行する処理システムを、高位合成処理により回路設計する際、前記高位合成処理で用いる設計パラメータであるループ展開数と回路並列数の最適な組み合わせを決定するパラメータ最適化装置であって、
前記設計パラメータの候補となる、前記ループ展開数と前記回路並列数の組み合わせを複数設定し、これら組み合わせごとに、前記高位合成処理により得られる合成回路を示す回路合成情報を生成する回路合成情報生成部と、
前記回路合成情報ごとに、当該回路合成情報が示す合成回路に関する推定処理性能を算出し、最大の推定処理性能が得られた回路合成情報に基づいて、前記ループ展開数と前記回路並列数の最適な組み合わせを決定する最適パラメータ決定部と
を備えることを特徴とするパラメータ最適化装置。
【請求項２】
請求項１に記載のパラメータ最適化装置において、
前記回路合成情報生成部は、前記組み合わせを設定する際、前記ループ展開で展開すべきループの総数を示すループ総数に基づいて、前記ループ展開数を設定することを特徴とするパラメータ最適化装置。
【請求項３】
請求項１または請求項２に記載のパラメータ最適化装置において、
前記回路合成情報生成部は、前記組み合わせを設定する際、前記処理システムで使用可能なリソースを示すリソース制約に基づいて、前記回路並列数を設定することを特徴とするパラメータ最適化装置。
【請求項４】
請求項１〜請求項３のいずれかに記載のパラメータ最適化装置において、
前記最適パラメータ決定部は、前記推定処理性能を算出する際、前記回路合成情報と、前記対象処理で許容される処理遅延を示す遅延制約と、前記対象処理に対して並列的に入力されるデータの同時入力数とに基づいて、前記推定処理性能を算出することを特徴とするパラメータ最適化装置。
【請求項５】
請求項１〜請求項４のいずれかに記載のパラメータ最適化装置において、
前記処理システムは、
振り分けられたパケットに対して予めループ展開された前記対象処理の一部を実行する前記複数の処理回路と、
同時に入力される複数フローのパケットを、前記複数の処理回路に対して振り分ける振分部と、
前記複数の処理回路で得られた処理結果を集約して出力する集約部とを備える
ことを特徴とするパラメータ最適化装置。
【請求項６】
請求項５に記載のパラメータ最適化装置において、
前記複数の処理回路は、前記振分部から振り分けられたパケットのフローに応じて、当該パケットを処理するためのステートを切り替えることを特徴とするパラメータ最適化装置。
【請求項７】
複数の処理回路に対して対象処理をループ展開して実行する処理システムを、高位合成処理により回路設計する際、前記高位合成処理で用いる設計パラメータであるループ展開数と回路並列数の最適な組み合わせを決定するパラメータ最適化装置で用いられるパラメータ最適化方法であって、
回路合成情報生成部が、前記設計パラメータの候補となる、前記ループ展開数と前記回路並列数の組み合わせを複数設定し、これら組み合わせごとに、前記高位合成処理により得られる合成回路を示す回路合成情報を生成する回路合成情報生成ステップと、
最適パラメータ決定部が、前記回路合成情報ごとに、当該回路合成情報が示す合成回路に関する推定処理性能を算出し、最大の推定処理性能が得られた回路合成情報に基づいて、前記ループ展開数と前記回路並列数の最適な組み合わせを決定する最適パラメータ決定ステップと
を備えることを特徴とするパラメータ最適化方法。
【請求項８】
コンピュータを、請求項１〜請求項６のいずれかに記載のパラメータ最適化装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたパケットを処理する処理回路が並列展開された処理システムを対象として、高位合成で用いる設計パラメータを最適化するためのパラメータ最適化技術に関する。
【背景技術】
【０００２】
近年、ＦＰＧＡ（Field-Programmable Gate Array）などのＰＬＤ（Programmable Logic Device）の大規模化に伴う回路設計の自動化を目的として、Ｃ／Ｃ＋＋のような高性能プログラミング言語で記述されたソースコードからＶｅｒｉｌｏｇ  ＨＤＬ（Hardware Description Language）などのハードウェア記述言語で記述されたＲＴＬ（Register Transfer Level）コードを生成する「高位合成」と呼ばれる技術の実用化が進展している。
【０００３】
図６は、パラメータ最適化の対象となる処理システムの一例を示すブロック図である。図６に示す処理システム５０は、全体としてＦＰＧＡからなり、並列展開されている複数の処理回路５１に対して対象処理をループ展開して実行する処理システムである。
【０００４】
処理システム５０は、例えば図６に示すように、主な回路部として、振り分けられたパケットＰＫに対して予めループ展開された対象処理の一部を実行するＮ個（Ｎは２以上の整数）の処理回路（５１）＃１，＃２，…，＃Ｎと、同時に入力される複数フローのパケットＰＫを、並列展開されている処理回路＃１，＃２，…，＃Ｎに振り分ける振分部５２と、処理回路＃１，＃２，…，＃Ｎで得られた処理結果を集約して出力する集約部５３とを備えている。
【０００５】
高位合成処理では、処理システム５０の性能をチューニングするために、設計者が設定可能な設計パラメータが用意されている。性能チューニングに用いる設計パラメータの１つとして、ループ展開数がある。図７は、ループ展開数を指定したソースコードの一例である。
【０００６】
ループ展開とは、ループ処理における各イテレーションの処理を、並列展開した処理回路を用いて処理することで処理の高速化を図る手法である。図７の例では、ループ総数Ｑ（Ｑは２以上の整数）回のループ処理に対してループ展開数Ｍ（Ｍは２以上の整数）を設定している。これは、例えば全部でＱ回のループ処理が必要な対象処理において、１ループにＭループ分の処理を展開してまとめて実行することにより、必要となるループ数をＱ／Ｍ回に削減することを意味している。
【０００７】
このようにして、ループ展開数を任意の値に設定することで、処理回路の並列展開数を指定して処理システムを設計することができる。この場合、ループ展開数は増やせば増やすほど、処理システムの処理性能は向上するが、これに伴って処理システムにおけるリソース使用量も増加する。
従来、高位合成を用いた回路設計において、設計者が指定する設計パラメータ（例えば、ループ展開数など）の値を最適化する手法が提案されている（例えば、特許文献１など参照）。図８は、ソースコード記述から生成される解析木の一例である。この手法では、図８に示すような処理回路の動作を表す解析木を元に「回路あたりの処理レイテンシ」の最小化を目的として最適化を図っている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５５１６５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一般に、高位合成において処理システムの性能をチューニングする際、処理システムの処理回路に関する「回路あたりの性能」を向上させると「回路あたりのリソース使用量」が増加する。このため、処理システムの「全体で使用可能なリソース量」が制限されており一定であるとすると、「回路あたりの性能」と「回路並列数」はトレードオフの関係にある。
しかしながら、前述したような従来技術では、処理回路に関する「回路あたりの性能」の最大化を目的としているため、「回路あたりの性能」と「回路並列数」のトレードオフを最適化することは困難であるという問題点があった。
【００１０】
通常、図６に示したように、並列展開した複数の処理回路を用いる場合、処理時間のオーバヘッドが発生する。例えば、入力パケットのフローに応じて処理回路内のステートを切り替えながら処理を行う場合が考えられる。このような場合には、ステート切り替えの所要時間に相当するオーバヘッドが発生するため、単位時間あたりに到着するフロー数が一定数以上の場合、「回路あたりの性能」を劣化させてでも「回路並列数」を増加させた方が、システム全体としては処理性能が高くなる場合があるからである。
【００１１】
本発明はこのような課題を解決するためのものであり、高位合成処理におけるループ展開数と回路並列数の最適な組み合わせを決定できるパラメータ最適化技術を提供することを目的としている。
【課題を解決するための手段】
【００１２】
このような目的を達成するために、本発明にかかるパラメータ最適化装置は、複数の処理回路に対して対象処理をループ展開して実行する処理システムを、高位合成処理により回路設計する際、前記高位合成処理で用いる設計パラメータであるループ展開数と回路並列数の最適な組み合わせを決定するパラメータ最適化装置であって、前記設計パラメータの候補となる、前記ループ展開数と前記回路並列数の組み合わせを複数設定し、これら組み合わせごとに、前記高位合成処理により得られる合成回路を示す回路合成情報を生成する回路合成情報生成部と、前記回路合成情報ごとに、当該回路合成情報が示す合成回路に関する推定処理性能を算出し、最大の推定処理性能が得られた回路合成情報に基づいて、前記ループ展開数と前記回路並列数の最適な組み合わせを決定する最適パラメータ決定部とを備えている。
【００１３】
また、本発明にかかる上記パラメータ最適化装置の一構成例は、前記回路合成情報生成部が、前記組み合わせを設定する際、前記ループ展開で展開すべきループの総数を示すループ総数に基づいて、前記ループ展開数を設定するようにしたものである。
【００１４】
また、本発明にかかる上記パラメータ最適化装置の一構成例は、前記回路合成情報生成部が、前記組み合わせを設定する際、前記処理システムで使用可能なリソースを示すリソース制約に基づいて、前記回路並列数を設定するようにしたものである。
【００１５】
また、本発明にかかる上記パラメータ最適化装置の一構成例は、前記最適パラメータ決定部が、前記推定処理性能を算出する際、前記回路合成情報と、前記対象処理で許容される処理遅延を示す遅延制約と、前記対象処理に対して並列的に入力されるデータの同時入力数とに基づいて、前記推定処理性能を算出するようにしたものである。
【００１６】
また、本発明にかかる上記パラメータ最適化装置の一構成例は、前記処理システムが、振り分けられたパケットに対して予めループ展開された前記対象処理の一部を実行する前記複数の処理回路と、同時に入力される複数フローのパケットを、前記複数の処理回路に対して振り分ける振分部と、前記複数の処理回路で得られた処理結果を集約して出力する集約部とを備えるものである。
【００１７】
また、本発明にかかる上記パラメータ最適化装置の一構成例は、前記複数の処理回路が、前記振分部から振り分けられたパケットのフローに応じて、当該パケットを処理するためのステートを切り替えるようにしたものである。
【００１８】
また、本発明にかかるパラメータ最適化方法は、複数の処理回路に対して対象処理をループ展開して実行する処理システムを、高位合成処理により回路設計する際、前記高位合成処理で用いる設計パラメータであるループ展開数と回路並列数の最適な組み合わせを決定するパラメータ最適化装置で用いられるパラメータ最適化方法であって、回路合成情報生成部が、前記設計パラメータの候補となる、前記ループ展開数と前記回路並列数の組み合わせを複数設定し、これら組み合わせごとに、前記高位合成処理により得られる合成回路を示す回路合成情報を生成する回路合成情報生成ステップと、最適パラメータ決定部が、前記回路合成情報ごとに、当該回路合成情報が示す合成回路に関する推定処理性能を算出し、最大の推定処理性能が得られた回路合成情報に基づいて、前記ループ展開数と前記回路並列数の最適な組み合わせを決定する最適パラメータ決定ステップとを備えている。
【００１９】
また、本発明にかかるプログラムは、コンピュータを、前述したいずれかのパラメータ最適化装置を構成する各部として機能させるためのプログラムである。
【発明の効果】
【００２０】
本発明によれば、候補として複数設定されたループ展開数と回路並列数の組み合わせのうちから、推定処理性能が最も高い合成回路のループ展開数と回路並列数が最適な組み合わせとして選択されることになる。したがって、高位合成処理において処理システムの性能をチューニングする際に問題となる、処理回路に関する「回路あたりの性能」と「回路並列数」のトレードオフを最適化することが可能となる。また、高位合成処理において処理システムの性能をチューニングするのに要する工程期間を大幅に短縮することができ、チューニングに要する作業負担や作業コストを大幅に削減する可能となる。
【図面の簡単な説明】
【００２１】
【図１】パラメータ最適化装置の構成を示すブロック図である。
【図２】回路合成情報の構成例である。
【図３】回路合成情報生成処理を示すフローチャートである。
【図４】最適パラメータ決定処理を示すフローチャートである。
【図５】一般的な待ち行列システムを示す概念図である。
【図６】パラメータ最適化の対象となる処理システムの一例を示すブロック図である。
【図７】ループ展開数を指定したソースコードの一例である。
【図８】ソースコード記述から生成される解析木の一例である。
【発明を実施するための形態】
【００２２】
次に、本発明の一実施の形態について図面を参照して説明する。
［パラメータ最適化装置］
まず、図１を参照して、本実施の形態にかかるパラメータ最適化装置１０について説明する。図１は、パラメータ最適化装置の構成を示すブロック図である。
このパラメータ最適化装置１０は、全体としてサーバ装置などの情報処理装置（コンピュータ）からなり、複数の処理回路に対して対象処理をループ展開して実行する処理システムを、高位合成処理により回路設計する際、高位合成処理で用いるパラメータであるループ展開数と回路並列数の最適な組み合わせを決定する機能を有している。
【００２３】
本実施の形態では、前述の図６に示したような、振り分けられたパケットを処理する複数の処理回路５１が並列展開された処理システム５０を対象として、高位合成処理で用いるループ展開数と回路並列数の最適な組み合わせを決定する場合について説明する。なお、パラメータ最適化の対象となる処理システムは、パケットを処理する処理システム５０に限定されるものではなく、複数の処理回路に対して対象処理をループ展開して実行する処理システムであれば、同様にして本実施の形態を適用でき、同様の作用効果が得られる。
【００２４】
処理システム５０は、前述した図６の構成と同様に、主な回路部として、振り分けられたパケットＰＫに対して予めループ展開された対象処理の一部を実行するＮ個（Ｎは２以上の整数）の処理回路（５１）＃１，＃２，…，＃Ｎと、同時に入力される複数フローのパケットＰＫを、並列展開されている処理回路＃１，＃２，…，＃Ｎに振り分ける振分部５２と、処理回路＃１，＃２，…，＃Ｎで得られた処理結果を集約して出力する集約部５３とを備えているものとする。
【００２５】
図１に示すように、パラメータ最適化装置１０は、主な機能部として、回路合成情報生成部１１、回路合成情報記憶部１２、および最適パラメータ決定部１３を備えている。これら機能部のうち、回路合成情報生成部１１と最適パラメータ決定部１３は、ＣＰＵとプログラムとが協働することにより実現されている。このプログラムは、外部装置や記録媒体（ともに図示せず）からパラメータ最適化装置１０の記憶部（図示せず）に予め格納される。なお、プログラムは、記録媒体に記録して提供することもでき、通信ネットワークを介して提供することもできる。
【００２６】
回路合成情報生成部１１は、入力されたソースコード２１に記述されている、ループ展開で展開すべきループの総数を示すループ総数Ｑと、リソース制約情報２２で指定された、処理システム５０で使用可能なリソースを示すリソース制約とに基づいて、設計パラメータの候補となる、ループ展開数Ｍ（Ｍは２以上の整数）と回路並列数Ｎとの組み合わせを複数設定する機能と、これら組み合わせごとに、当該組み合わせを適用した際に高位合成処理により得られる合成回路を示す回路合成情報２３を生成して、回路合成情報記憶部１２に登録する機能を有している。
【００２７】
回路合成情報記憶部１２は、ハードディスクや半導体メモリなど記憶装置からなり、回路合成情報生成部１１で生成された回路合成情報２３を記憶する機能を有している。
図２は、回路合成情報の構成例である。図２に示すように、回路合成情報２３は、ループ展開数Ｍと回路並列数Ｎの組み合わせを示すパラメータと、合成回路の構成を示す処理サイクル数、動作周波数［ＭＨｚ］、ステート切替サイクル数からなる合成結果情報とを含んでいる。これら回路合成情報２３は、組み合わせを識別するためのＩＤが付与されて、回路合成情報記憶部１２に登録されている。
【００２８】
最適パラメータ決定部１３は、遅延制約情報２４で指定された処理システム５０の対象処理で許容される処理遅延を示す遅延制約と、処理システム５０の対象処理に対して並列的に同時に入力されうるパケット（データ）のフロー数を示す同時アクセスフロー数（同時入力数）２５とに基づいて、回路合成情報記憶部１２に登録されている回路合成情報２３ごとに、当該回路合成情報２３が示す合成回路から得られる推定処理性能Ｐを算出する機能と、これら推定処理性能のうち最大推定処理性能Ｐmaxが得られた回路合成情報２３に基づいて、ループ展開数Ｍと回路並列数Ｎの最適な組み合わせを決定し、最適パラメータ２６として出力する機能とを有している。
【００２９】
［回路合成情報生成部］
次に、図１を参照して、回路合成情報生成部１１の詳細について説明する。
図１に示すように、回路合成情報生成部１１は、主な処理部として、パラメータ設定部１１Ａ、高位合成部１１Ｂ、回路並列数算出部１１Ｃ、および情報登録部１１Ｄを備えている。
【００３０】
パラメータ設定部１１Ａは、ソースコード２１で指定されたループ総数Ｑに基づいて、候補となるループ展開数Ｍを複数設定する機能を有している。
高位合成部１１Ｂは、パラメータ設定部１１Ａが設定したループ展開数Ｍごとに、当該ループ展開数Ｍを適用した際に得られる合成回路を、高位合成処理により合成する機能を有している。
【００３１】
回路並列数算出部１１Ｃは、リソース制約情報２２で指定された処理システム５０で使用可能なリソースを示すリソース制約と、高位合成部１１Ｂで合成された合成回路のリソース使用量とに基づいて、合成回路ごとに候補となる回路並列数Ｎを算出して設定する機能を有している。
情報登録部１１Ｄは、候補として設定されたループ展開数Ｍと回路並列数Ｎとの組み合わせに、組み合わせを識別するためのＩＤと、対応する合成回路の構成を示す合成結果情報とを付与し、得られた回路合成情報２３を回路合成情報記憶部１２に登録する機能を有している。
【００３２】
［最適パラメータ決定部］
次に、図１を参照して、最適パラメータ決定部１３の詳細について説明する。
図１に示すように、最適パラメータ決定部１３は、主な処理部として、性能推定部１３Ａ、性能比較部１３Ｂ、最適パラメータ記憶部１３Ｃ、およびパラメータ出力部１３Ｄを備えている。
【００３３】
性能推定部１３Ａは、回路合成情報記憶部１２に登録されている回路合成情報２３ごとに、回路合成情報２３に含まれるループ展開数Ｍと回路並列数Ｎとの組み合わせを適用した場合に得られる処理システム５０の性能値である推定処理性能Ｐを算出する機能を有している。
【００３４】
性能比較部１３Ｂは、性能推定部１３Ａで算出された推定処理性能Ｐを最適パラメータ記憶部１３Ｃで記憶している最大推定処理性能Ｐmaxと比較する機能と、ＰがＰmaxより大きい場合には、ＰmaxをＰで更新するとともに、Ｐと対応するループ展開数Ｍと回路並列数Ｎとの組み合わせを最適パラメータとして最適パラメータ記憶部１３Ｃに保存する機能とを有している。
【００３５】
パラメータ出力部１３Ｄは、回路合成情報記憶部１２に登録されているすべての回路合成情報２３に関するＰとＰmaxとの比較が完了した後、最適パラメータ記憶部１３Ｃに保存されている最適パラメータを取得して出力する機能を有している。
【００３６】
［本実施の形態の動作］
次に、本実施の形態にかかるパラメータ最適化装置１０の動作について説明する。
【００３７】
［回路合成情報生成動作］
まず、図３を参照して、回路合成情報生成部１１の回路合成情報生成動作について説明する。図３は、回路合成情報生成処理を示すフローチャートである。
【００３８】
まず、パラメータ設定部１１Ａは、例えば図７に示したようなソースコード２１に含まれるｆｏｒ文の記述からループ総数Ｑを取得する（ステップ１００）。
続いて、パラメータ設定部１１Ａは、ループ展開数Ｍiを１〜Ｑの範囲で１ずつ変化させて設定するため、まず、変数ｉを１で初期化し（ステップ１０１）、ｉの値をループ展開数Ｍiに設定する（ステップ１０２）。
【００３９】
次に、高位合成部１１Ｂは、パラメータ設定部１１Ａが設定したループ展開数Ｍiを適用した際に得られる合成回路を、高位合成コンパラを用いてソースコード２１から合成する（ステップ１０３）。
【００４０】
続いて、回路並列数算出部１１Ｃは、高位合成部１１Ｂで合成された合成回路に関する合成結果情報から、処理回路５１あたりのリソース使用量Ｓiを取得し（ステップ１０４）、このリソース使用量Ｓiと、リソース制約情報２２で指定された処理システム５０で使用可能なリソースを示すリソース制約Ｓmaxとに基づいて、ループ展開数Ｍiの合成回路に関する回路並列数Ｎiを算出する（ステップ１０５）。
【００４１】
この際、Ｎiについては、Ｓi×ＮiがＳmax以下となる最大の数をＮiとして選択する方法が考えられるが、これに限定されるものではない。例えば、ソースコード２１から合成される合成回路以外に、並列化に必要な周辺回路などのリソースに関する使用リソース量を加味してＮiを算出してもよい。
【００４２】
この後、情報登録部１１Ｄは、得られたループ展開数Ｍiと回路並列数Ｎiとの組み合わせに、組み合わせを識別するためのＩＤと、対応する合成回路の構成を示す合成結果情報とを付与し、得られた回路合成情報２３を回路合成情報記憶部１２に登録する（ステップ１０６）。
【００４３】
次に、パラメータ設定部１１Ａは、変数ｉがループ総数Ｑに到達したか確認し（ステップ１０７）、ｉがＱに到達していない場合（ステップ１０７：ＮＯ）、ｉをインクリメント（ｉ＝ｉ＋１）した後（ステップ１０８）、ステップ１０２へ戻る。
一方、ｉがＱに到達した場合（ステップ１０７：ＹＥＳ）、一連の回路合成情報生成処理を終了する。
【００４４】
［最適パラメータ決定動作］
次に、図４を参照して、最適パラメータ決定部１３の最適パラメータ決定動作について説明する。図４は、最適パラメータ決定処理を示すフローチャートである。
【００４５】
まず、性能推定部１３Ａは、最適パラメータ記憶部１３Ｃで記憶する最大推定処理性能Ｐmaxをゼロで初期化した後（ステップ１１０）、回路合成情報記憶部１２から未選択の回路合成情報２３を１つ選択し（ステップ１１１）、選択した回路合成情報２３に含まれるループ展開数Ｍと回路並列数Ｎとの組み合わせを適用した場合に得られる処理システム５０の性能値である推定処理性能Ｐを算出する（ステップ１１２）。推定処理性能Ｐの算出方法については後述する。
【００４６】
性能比較部１３Ｂは、性能推定部１３Ａで算出された推定処理性能Ｐを、最適パラメータ記憶部１３Ｃで記憶している最大推定処理性能Ｐmaxと比較し（ステップ１１３）、ＰがＰmax以下の場合には（ステップ１１３：ＮＯ）、ステップ１１１へ戻る。
一方、ＰがＰmaxより大きい場合（ステップ１１３：ＹＥＳ）、性能比較部１３Ｂは、ＰmaxをＰで更新するとともに（ステップ１１４）、Ｐと対応するループ展開数Ｍと回路並列数Ｎとの組み合わせを最適パラメータ２６として最適パラメータ記憶部１３Ｃに保存する（ステップ１１５）。
【００４７】
この後、パラメータ出力部１３Ｄは、回路合成情報記憶部１２に登録されているすべての回路合成情報２３の選択が完了したか確認し（ステップ１１６）、未完了の場合には（ステップ１１６：ＮＯ）、ステップ１１１へ戻る。
一方、すべての回路合成情報２３の選択が完了した場合（ステップ１１６：ＹＥＳ）、パラメータ出力部１３Ｄは、最適パラメータ記憶部１３Ｃに保存されている最適パラメータ２６を取得して出力し（ステップ１１７）、一連の最適パラメータ決定処理を終了する。
【００４８】
なお、性能比較部１３Ｂが、最適パラメータ記憶部１３Ｃに最適パラメータを保存する際、選択した回路合成情報２３に含まれるループ展開数Ｍと回路並列数Ｎとの組み合わせを示すＩＤを保存してもよい。また、パラメータ出力部１３Ｄが最適パラメータを出力する際、ループ展開数Ｍと回路並列数Ｎとの組み合わせを示すＩＤを出力してもよい。
【００４９】
［推定処理性能算出方法］
次に、図５を参照して、性能推定部１３Ａにおける推定処理性能算出方法について説明する。図５は、一般的な待ち行列システムを示す概念図である。
【００５０】
本推定手法では、入力パケットがランダムに到着する処理システム５０における処理遅延を確率論的に評価するために、最適化の対象となる処理システム５０を、図５に示すような待ち行列システム３０として捉え、待ち行列理論に基づく理論式を用いて性能を推定する。ここでは、推定処理性能を「遅延制約を満たす最大の入力レート」と定義する。また、遅延制約は、遅延制約情報２４により「遅延がａ秒以内である確率がｂ％以上」であるというように与えられるものとする。
【００５１】
図５に示すように、待ち行列システム３０は、複数のサービス窓口３１と待ち行列から構成されている。この待ち行列システムを図６の処理システム５０と対比させると、外部から入力されるパケットＰＫがランダムに到着する要求ＲＥＱに対応し、並列展開された処理回路５１がサービス窓口３１に対応し、振分部５２においてパケットを格納するためのキュー（図示せず）が待ち行列３２に対応する。なお、キューはレジスタあるいはメモリを用いて実装される。
【００５２】
次に、性能推定に用いる推定式について説明する。
待ち行列理論に基づいて対象とする待ち行列システムにおける各要求の待ち時間を確率論的に評価するための理論式は、次の式（１）で表される。
【数１】
2019215697.tif 000003
【００５３】
式（１）において、Ｃは待ち行列システム３０における、各要求ＲＥＱの待ち時間が許容値ｔを超える確率を表す。また、ｎはサービス窓口数を表し、Ｅは呼量すなわち要求ＲＥＱの量に関する尺度を表している。また、ＡＨＴは要求ＲＥＱの１件あたりのサービス時間を表し、Ｂは対象とするシステムが呼損系であると仮定した場合の呼損率を表している。ここで、呼損系とは、サービス窓口３１が全て使用中の状態で新たな要求ＲＥＱが到着した場合、その要求ＲＥＱを待ち行列に並ばせるのではなく破棄する機能を有するシステムを指す。
【００５４】
式（１）のうち、呼損率Ｂについては、次の式（２）を用いて算出される。
【数２】
2019215697.tif 000004
【００５５】
式（２）のうち、呼量Ｅについては、次の式（３）を用いて算出される。ここで、λは単位時間あたりの要求到着数を表す。その他の変数の定義は式（１）と同様である。
【数３】
2019215697.tif 000005
【００５６】
また、遅延入力レートＲと要求到着数λの関係は式（４）のように表される。ここで、Ｌはパケット長を表す。
【数４】
2019215697.tif 000006
【００５７】
これらをまとめると、遅延制約が「遅延がａ秒以内である確率がｂ％以上」である場合、許容値ｔの値をａ秒に設定して、遅延入力レートＲすなわち呼量Ｅを増加させていくことにより、確率Ｃの値がｂ％を維持する最大入力レートＲmaxを求める。求めたＲmaxが待ち行列システム３０に関する推定処理性能Ｐとなる。
【００５８】
［ＡＨＴ算出方法］
続いて、ＡＨＴの算出方法を説明する。
パラメータ最適化の対象とする処理システム５０は、各処理回路５１において、入力パケットのフローに応じて処理回路５１内のステートを切り替えながら処理することを特徴とする。このため、現在処理中のパケットのフローと次に入力されるパケットのフローが異なる場合、処理回路５１内のステートの切り替え処理が発生し、処理時間のオーバヘッドが発生する。
【００５９】
また、同一処理回路５１に同時に入力されるフロー数が増えれば増えるほど、現在処理中のパケットのフローと次に入力されるパケットのフローが異なる確率は高くなる。したがって、同一処理回路５１に同時に入力されるフロー数が増えれば増えるほど、処理回路５１内のステート切り替えによる処理時間のオーバヘッドが発生する確率が高くなる。
以上を考慮して、本発明では、ステート切り替えによる処理時間のオーバヘッド発生確率を加味した期待値としてＡＨＴを算出する。
【００６０】
次の式（５）は、ＡＨＴの算出式である。
【数５】
2019215697.tif 000007
【００６１】
式（５）において、Ｐsameは、入力パケットのフローが１つ前の入力パケットのフローと同じ確率を表す。また、ＡＨＴαは、ステート切り替えが発生しない場合のパケットあたりの処理時間を表し、ＡＨＴβは、ステート切り替えが発生する場合のパケットあたりの処理時間を表している。ＡＨＴαとＡＨＴβは、回路合成情報記憶部１２に保持された情報から算出する。
【００６２】
式（５）のうち、Ｐsameは、次の式（６）を用いて算出される。
【数６】
2019215697.tif 000008
【００６３】
式（６）において、サービス窓口数ｎは、回路並列数とする。また、Ｎflowは、システムに対する同時アクセスフロー数を表す。ここでは、処理システム５０に入力されるパケットのフローはランダムであり、各フローの到着確率が１／Ｎflowであるという仮定の元でＰsameを算出しているが、フローごとに異なる到着確率を仮定してＰsameを算出してもよい。
【００６４】
［本実施の形態の効果］
このように、本実施の形態は、回路合成情報生成部１１が、パラメータの候補としてループ展開数Ｍと回路並列数Ｎの組み合わせを複数設定して、これら組み合わせごとに、高位合成処理により得られる合成回路を示す回路合成情報２３を生成し、最適パラメータ決定部１３が、生成された回路合成情報２３ごとに、当該回路合成情報２３が示す合成回路に関する推定処理性能Ｐを算出し、最大の推定処理性能Ｐmaxが得られた回路合成情報２３に基づいて、ループ展開数Ｍと回路並列数Ｎの最適な組み合わせを決定するようにしたものである。
【００６５】
これにより、候補として複数設定されたループ展開数Ｍと回路並列数Ｎの組み合わせのうちから、推定処理性能Ｐが最も高い推定処理性能Ｐmaxである合成回路のループ展開数Ｍと回路並列数Ｎが最適な組み合わせとして選択されることになる。したがって、高位合成処理において処理システム５０の性能をチューニングする際に問題となる、処理回路５１に関する「回路あたりの性能」と「回路並列数」のトレードオフを最適化することが可能となる。また、高位合成処理において処理システム５０の性能をチューニングするのに要する工程期間を大幅に短縮することができ、チューニングに要する作業負担や作業コストを大幅に削減する可能となる。
【００６６】
また、本実施の形態において、回路合成情報生成部１１が、組み合わせを設定する際、ループ展開で展開すべきループの総数を示すループ総数に基づいて、ループ展開数を設定するようにしてもよい。
また、本実施の形態において、回路合成情報生成部１１が、処理システムで使用可能なリソースを示すリソース制約に基づいて、回路並列数を設定するようにしてもよい。
これにより、規定のループ総数およびリソース制約を持つ処理システム５０に対して、過不足のない最適なループ展開数および回路並列数を特定することができる。
【００６７】
また、本実施の形態において、最適パラメータ決定部１３が、推定処理性能Ｐを算出する際、回路合成情報２３と、対象処理で許容される処理遅延を示す遅延制約と、対象処理に対して並列的に入力されるデータの同時入力数とに基づいて、推定処理性能Ｐを算出するようにしてもよい。
これにより、入力されたパケットのフローに応じて処理時間が異なる場合であっても、外部から与えられる各フローの到着確率を加味した最適化を図ることができ、実動作環境を反映した回路性能の最適化が可能となる。
【００６８】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００６９】
１０…パラメータ最適化装置、１１…回路合成情報生成部、１１Ａ…パラメータ設定部、１１Ｂ…高位合成部、１１Ｃ…回路並列数算出部、１１Ｄ…情報登録部、１２…回路合成情報記憶部、１３…最適パラメータ決定部、１３Ａ…性能推定部、１３Ｂ…性能比較部、１３Ｃ…最適パラメータ記憶部、１３Ｄ…パラメータ出力部、２１…ソースコード、２２…リソース制約情報、２３…回路合成情報、２４…遅延制約情報、２５…同時アクセスフロー数、２６…最適パラメータ。
【図１】
2019215697.tif 000009
【図２】
2019215697.tif 000010
【図３】
2019215697.tif 000011
【図４】
2019215697.tif 000012
【図５】
2019215697.tif 000013
【図６】
2019215697.tif 000014
【図７】
2019215697.tif 000015
【図８】
2019215697.tif 000016