(57)【要約】【課題】パイプライン処理における効率を向上させる。【解決手段】制御装置１は、第１判定部１３と第２判定部１４と制御部１５とを備える。第１判定部１３は、第１の処理の実行時間と、第２の処理の実行時間と、複数の処理装置３１のうちの第１の処理装置３１において第１の処理を実行する論理から第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する。第２判定部１４は、第１の処理と第２の処理とを第１の処理装置に実行させる場合に、複数の処理装置３１の間におけるデータ通信量が閾値以下であるかを判定する。制御部１５は、第１判定部１３によって合計値が単位時間以下であると判定され、第２判定部１４によってデータ通信量が閾値以下であると判定された場合に、第１の処理と第２の処理とを第１の処理装置３１に実行させる。【選択図】図３
2018025905.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置と通信可能に接続される制御装置であって、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第１判定部と、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第２判定部と、
前記第１判定部によって前記合計値が前記単位時間以下であると判定され、前記第２判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる制御部と、
を備える、制御装置。
【請求項２】
前記制御部は、前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第１の処理装置と最も近い位置に接続された第２の処理装置に割り当てられた処理を、前記第２の処理として、前記第１の処理装置に実行させる、
請求項１に記載の制御装置。
【請求項３】
前記データ通信量は、前記複数の通信装置に備えられる計測部によって前記単位時間毎に計測される、
請求項１又は２に記載の制御装置。
【請求項４】
複数の処理装置と、
前記複数の処理装置と通信可能に接続される制御装置と、
を備え、
前記制御装置は、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第１判定部と、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第２判定部と、
前記第１判定部によって前記合計値が前記単位時間以下であると判定され、前記第２判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる制御部と、
を備える、情報処理システム。
【請求項５】
複数の処理装置と通信可能に接続されるコンピュータに、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる、
処理を実行させる、プログラム。
【請求項６】
複数の処理装置と通信可能に接続される制御装置は、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、情報処理システム、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
所望の結果を取得するために実行される複数の処理を複数のＦＰＧＡ（Field Programmable Gate Array）に割り当ててパイプライン処理を行なう情報処理システムが知られている。このような情報処理システムでは、ＣＰＵ（Central Processing Unit）のアクセレータとして、複数のＦＰＧＡが使用される。多数のＦＰＧＡが情報処理システムに搭載されることにより、データ処理を高速化できる。
【０００３】
複数のＦＰＧＡに割り当てられる各処理は所定の単位時間内で実行されるが、各処理の実行時間（「処理時間」と称されてもよい。）はそれぞれ異なる場合がある。
【０００４】
また、パイプライン処理において、複数のＦＰＧＡに割り当てられる各処理には処理順序が定義されており、第１の処理の後に第２の処理を実行することが定義されている場合には、第１の処理が完了するまで、第２の処理は実行されない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０２６６０７号公報
【特許文献２】特表２００２−５１６５１１号公報
【特許文献３】特開２０１０−２０５１０８号公報
【特許文献４】特開２０１１−２０３９２０号公報
【特許文献５】特開２００５−１６５４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
或るＦＰＧＡに割り当てられる処理の実行時間が所定の単位時間よりも短い場合には、当該ＦＰＧＡにおいて処理の空き時間が発生し、ＦＰＧＡの利用効率が低下するおそれがある。
【０００７】
１つの側面では、パイプライン処理における効率を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
このため、この制御装置は、複数の処理装置と通信可能に接続される制御装置であって、第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第１判定部と、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第２判定部と、前記第１判定部によって前記合計値が前記単位時間以下であると判定され、前記第２判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる制御部と、を備える。
【発明の効果】
【０００９】
１つの側面では、パイプライン処理における効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】関連例におけるデータパイプライン処理を説明するブロック図である。
【図２】図１に示したデータパイプライン処理の実施順序を説明する図である。
【図３】実施形態の一例における情報処理システムのハードウェア構成例及びソフトウェア構成例を示すブロック図である。
【図４】図３に示したＦＰＧＡのハードウェア構成例を示すブロック図である。
【図５】図４に示した監視回路の機能構成を示すブロック図である。
【図６】（１）はデータパイプライン処理の実施順序の第１の例を説明する図であり、（２）は（１）に示したデータパイプライン処理において隣り合う処理を統合する場合の実施順序を説明する図である。
【図７】図６の（１）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図８】図６の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図９】（１）はデータパイプライン処理の実施順序の第２の例を説明する図であり、（２）は（１）に示したデータパイプライン処理において隣り合わない処理を統合する場合の実施順序を説明する図である。
【図１０】図９の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図１１】（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、（２）は（１）に示したデータパイプライン処理における第１の統合例を説明する図である。
【図１２】（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、（２）は（１）に示したデータパイプライン処理における第２の統合例を説明する図である。
【図１３】（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、（２）は（１）に示したデータパイプライン処理における第３の統合例を説明する図である。
【図１４】図１３の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図１５】図３に示した情報処理システムにおけるデータパイプライン処理の統合動作を説明するフローチャートである。
【図１６】実施形態の変形例における情報処理システムのハードウェア構成例を示すブロック図である。
【００１１】
【図１７】図１６に示した変形例の情報処理システムにおいて図１１の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図１８】図１６に示した変形例の情報処理システムにおいて図１２の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【図１９】図１６に示した変形例の情報処理システムにおいて図１３の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１３】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１４】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００１５】
〔Ａ〕関連例
図１は、関連例におけるデータパイプライン処理（単に「パイプライン処理」と称されてもよい。）を説明するブロック図である。
【００１６】
関連例における情報処理システム６００は、図１に示されるように、ＣＰＵ６、ＳＤＲＡＭ７及び複数（図示される例では６つ）のＦＰＧＡボード８（「ＦＰＧＡボード＃０〜＃５」と称されてもよい。）を備える。なお、ＣＰＵはCentral Processing Unitの略称であり、ＳＤＲＡＭはSynchronous Dynamic Random Access Memoryの略称である。
【００１７】
ＣＰＵ６とＳＤＲＡＭ７と各ＦＰＧＡボード８とは、共用バス９１によって互いに通信可能に接続される。また、隣り合う位置に備えられる２つのＦＰＧＡボード８は、広帯域バス９２によって互いに通信可能に接続される。図１に示される例においては、広帯域バス９２によって、ＦＰＧＡボード＃０とＦＰＧＡボード＃１とが接続されており、ＦＰＧＡボード＃１とＦＰＧＡボード＃２とが接続されており、ＦＰＧＡボード＃２とＦＰＧＡボード＃３とが接続されている。また、図１に示される例においては、広帯域バス９２によって、ＦＰＧＡボード＃３とＦＰＧＡボード＃４とが接続されており、ＦＰＧＡボード＃４とＦＰＧＡボード＃５とが接続されている。すなわち、複数のＦＰＧＡボード８は、広帯域バス９２を介して、数珠つなぎで接続（「カスケード接続」や「縦列接続」と称されてもよい。）されている。
【００１８】
ＳＤＲＡＭ７は、ＲＡＭ（Random Access Memory）の一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００１９】
ＣＰＵ６は、例示的に、種々の制御や演算を行なう処理装置であり、不図示のＲＯＭ（Read Only Memory）に格納されたＯＳ（Operating System）やプログラムを実行することにより、種々の機能を実現する。
【００２０】
ＦＰＧＡボード８は、ＦＰＧＡ８１（「ＦＰＧＡ＃０〜＃５」と称されてもよい。）及びＳＤＲＡＭ８２（「ＳＤＲＡＭ＃０〜＃５」と称されてもよい。）を備える。図１に示される例において、ＦＰＧＡボード＃０〜＃５は、ＦＰＧＡ＃０〜＃５及びＳＤＲＡＭ＃０〜＃５をそれぞれ備える。
【００２１】
ＦＰＧＡ８１は、任意に構成を設定できる集積回路である。図１に示される例において、ＦＰＧＡ＃０〜＃５は、処理Ａ〜Ｆをそれぞれ実行する。
【００２２】
ＳＤＲＡＭ８２は、ＲＡＭの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。ＳＤＲＡＭ８２は、ＦＰＧＡ８１によって実行された処理の結果を記憶する。図１に示される例において、ＳＤＲＡＭ＃０〜＃５は、ＦＰＧＡ８１によって実行された処理の出力として出力データＡｏ〜Ｆｏをそれぞれ記憶する。出力データＡｏ〜Ｆｏは、処理Ａ〜Ｆが実行されることによってそれぞれ生成される。
【００２３】
図１に示される情報処理システム６００は、出力データＦｏを取得するために実行される６つの処理Ａ〜Ｆを６つのＦＰＧＡ＃０〜＃５にそれぞれ割り当てることにより、パイプライン処理を行なう。
【００２４】
以下、図１を用いて、関連例の情報処理システム６００におけるパイプライン処理を説明する。
【００２５】
まず、ＳＤＲＡＭ７に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス９１を介して読み出されて、ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【００２６】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス９２を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【００２７】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス９２を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【００２８】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス９２を介して転送される。ＦＰＧＡ＃３は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃３に記憶される。
【００２９】
ＳＤＲＡＭ＃３に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス９２を介して転送される。ＦＰＧＡ＃４は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃４に記憶される。
【００３０】
ＳＤＲＡＭ＃４に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃４からＦＰＧＡボード＃５へ広帯域バス９２を介して転送される。ＦＰＧＡ＃５は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃５に記憶される。
【００３１】
ＳＤＲＡＭ＃５に記憶された出力データＦｏは、共用バス９１を介してＦＰＧＡボード＃５から出力され、例えばＳＤＲＡＭ７に記憶される。
【００３２】
図２は、図１に示したデータパイプライン処理の実施順序を説明する図である。
【００３３】
複数のＦＰＧＡ８１に割り当てられる各処理は、所定の単位時間（「１単位処理時間」と称されてもよい。）内で実行される。単位時間には、ＦＰＧＡボード８間の転送時間が含まれてよい。
【００３４】
例えば、30 frame/secの動画像処理の場合は、1 frameに許容される処理時間は33 msecである。ＦＰＧＡ＃０〜＃５にそれぞれ割り当てられる処理Ａ〜Ｆは、33 msecを超えないように、予め機能分割されていてよい。
【００３５】
図２に示される例において、ＦＰＧＡ＃０は処理Ａ１〜Ａ５を実行し、ＦＰＧＡ＃１は処理Ｂ１〜Ｂ５を実行し、ＦＰＧＡ＃２は処理Ｃ１〜Ｃ５を実行する。また、図２に示される例において、ＦＰＧＡ＃３は処理Ｄ１〜Ｄ５を実行し、ＦＰＧＡ＃４は処理Ｅ１〜Ｅ５を実行し、ＦＰＧＡ＃５は処理Ｆ１〜Ｆ５を実行する。
【００３６】
パイプライン処理において、複数のＦＰＧＡ８１に割り当てられる各処理には処理順序が定義されており、第１の処理の後に第２の処理を実行することが定義されている場合には、第１の処理が完了するまで、第２の処理は実行されない。
【００３７】
図２に示される例において、パイプライン処理は、処理Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの順に実行される。具体的には、処理Ａｎが完了すると処理Ｂｎが実行され、処理Ｂｎが完了すると処理Ｃｎが実行され、処理Ｃｎが完了すると処理Ｄｎが実行され、処理Ｄｎが完了すると処理Ｅｎが実行され、処理Ｅｎが完了すると処理Ｆｎが実行される（ｎは１〜５の整数）。
【００３８】
例えば、処理Ａ１が完了すると処理Ｂ１が実行され、処理Ｂ１が完了すると処理Ｃ１が実行され、処理Ｃ１が完了すると処理Ｄ１が実行され、処理Ｄ１が完了すると処理Ｅ１が実行され、処理Ｅ１が完了すると処理Ｆ１が実行される。処理Ａ２〜Ａ５，処理Ｂ２〜Ｂ５，処理Ｃ２〜Ｃ５，処理Ｄ２〜Ｄ５，処理Ｅ２〜Ｅ５及び処理Ｆ２〜Ｆ５についても、同様である。
【００３９】
〔Ｂ〕実施形態
〔Ｂ−１〕システム構成
図３は、実施形態の一例における情報処理システム１００のハードウェア構成例及びソフトウェア構成例を示すブロック図である。
【００４０】
実施形態の一例における情報処理システム１００は、図３に示されるように、ＣＰＵ１、ＳＤＲＡＭ２及び複数（図示される例では６つ）のＦＰＧＡボード３（「ＦＰＧＡボード＃０〜＃５」と称されてもよい。）を備える。
【００４１】
ＣＰＵ１とＳＤＲＡＭ２と各ＦＰＧＡボード３とは、共用バス４１によって互いに通信可能に接続される。また、隣り合う位置に備えられる２つのＦＰＧＡボード３は、広帯域バス４２によって互いに通信可能に接続される。図３に示される例においては、広帯域バス４２によって、ＦＰＧＡボード＃０とＦＰＧＡボード＃１とが接続されており、ＦＰＧＡボード＃１とＦＰＧＡボード＃２とが接続されており、ＦＰＧＡボード＃２とＦＰＧＡボード＃３とが接続されている。また、図３に示される例においては、広帯域バス４２によって、ＦＰＧＡボード＃３とＦＰＧＡボード＃４とが接続されており、ＦＰＧＡボード＃４とＦＰＧＡボード＃５とが接続されている。すなわち、複数のＦＰＧＡボード３は、数珠つなぎで接続（「カスケード接続」や「縦列接続」と称されてもよい。）されている。
【００４２】
ＳＤＲＡＭ２は、ＲＡＭの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００４３】
ＦＰＧＡボード３は、ＦＰＧＡ３１（「ＦＰＧＡ＃０〜＃５」と称されてもよい。）及びＳＤＲＡＭ３２（「ＳＤＲＡＭ＃０〜＃５」と称されてもよい。）を備える。図３に示される例において、ＦＰＧＡボード＃０〜＃５は、ＦＰＧＡ＃０〜＃５及びＳＤＲＡＭ＃０〜＃５をそれぞれ備える。
【００４４】
ＦＰＧＡ３１は、任意に構成を設定できる、論理を再構成可能な集積回路である。
【００４５】
ＳＤＲＡＭ３２は、ＲＡＭの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。ＳＤＲＡＭ３２は、ＦＰＧＡ３１によって実行された処理の結果を記憶する。
【００４６】
ＣＰＵ１は、例示的に、種々の制御や演算を行なう処理装置であり、不図示のＲＯＭに格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１は、図３に示されるように、処理時間算出部１１，データ転送量取得部１２，第１判定部１３，第２判定部１４及び制御部１５として機能してよい。
【００４７】
なお、これらの処理時間算出部１１，データ転送量取得部１２，第１判定部１３，第２判定部１４及び制御部１５としての機能を実現するためのプログラムは、例えばフレキシブルディスク、ＣＤ（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等）、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＨＤ  ＤＶＤ等）、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ（本実施形態ではＣＰＵ１）は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【００４８】
処理時間算出部１１，データ転送量取得部１２，第１判定部１３，第２判定部１４及び制御部１５としての機能を実現する際には、内部記憶装置（本実施形態ではＳＤＲＡＭ２）に格納されたプログラムがコンピュータ（本実施形態ではＣＰＵ１）によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００４９】
処理時間算出部１１は、複数のＦＰＧＡ３１に割り当てられる各処理の実行時間をそれぞれ算出する。処理時間算出部１１は、ＦＰＧＡ３１で実行された各処理の実行時間を実測してよい。また、処理時間算出部１１は、例えばＳＤＲＡＭ２に予め記憶されたデータに基づいて各処理の実行時間を算出してよい。
【００５０】
処理時間算出部１１は、ＦＰＧＡ３１において論理を書き換える時間を算出する。処理時間算出部１１は、ＦＰＧＡ３１で実行された論理を書き換える時間を実測してよい。また、処理時間算出部１１は、例えばＳＤＲＡＭ２に予め記憶されたデータに基づいて論理の書き換える時間を算出してよい。
【００５１】
処理時間算出部１１は、算出した各処理の実行時間及び論理を書き換える時間をＳＤＲＡＭ２に記憶させてよい。
【００５２】
データ転送量取得部１２は、広帯域バス４２を介した各ＦＰＧＡボード３間におけるデータ転送量を各ＦＰＧＡ３１から取得する。データ転送量は、ＦＰＧＡ３１に備えられる監視回路３１２（図４及び図５を用いて後述）によって、単位時間毎に計測されてよい。
【００５３】
第１判定部１３は、処理時間の観点から、複数の処理を１つのＦＰＧＡ３１において併合して実行できるかを判定する。第１判定部１３は、第１の処理の実行時間と、第２の処理の実行時間と、或るＦＰＧＡ３１において第１の処理を実行する論理から第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する。第１の処理時間、第２の処理時間及び論理を書き換える時間は、上述した処理時間算出部１１によって算出されてよい。
【００５４】
第２判定部１４は、ＦＰＧＡボード３間の通信負荷の観点から、複数の処理を１つのＦＰＧＡ３１において併合して実行できるかを判定する。第２判定部１４は、第１の処理と第２の処理とを或るＦＰＧＡ３１に実行させる場合に、複数のＦＰＧＡ３１の間におけるデータ通信量が閾値以下であるかを判定する。複数のＦＰＧＡ３１の間におけるデータ通信量は、上述したデータ転送量取得部１２によって、複数のＦＰＧＡ３１からそれぞれ取得されてよい。
【００５５】
制御部１５は、第１判定部１３によって処理時間の合計値が単位時間以下であると判定され、且つ、第２判定部１４によってデータ通信量が閾値以下であると判定された場合に、第１の処理と第２の処理とを或るＦＰＧＡ３１に併合させて実行させる。
【００５６】
また、制御部１５は、併合可能な処理が３つ以上存在する場合に、複数のＦＰＧＡ３１の間の接続関係において、処理の併合先のＦＰＧＡ３１に最も近い位置に接続されたＦＰＧＡ３１に割り当てられた処理を併合してよい。
【００５７】
図４は、図３に示したＦＰＧＡ３１のハードウェア構成例を示すブロック図である。
【００５８】
図４に示されるＦＰＧＡボード３（「ＦＰＧＡボード＃ｍ」と称されてもよい。）は、ＦＰＧＡ３１（「ＦＰＧＡ＃ｍ」と称されてもよい。）及びＳＤＲＡＭ３２（「ＳＤＲＡＭ＃ｍ」と称されてもよい。）を備える。なお、ｍは１以上の整数である。ＦＰＧＡ＃ｍは、図４に示されるように、処理Ｘを実行する。
【００５９】
ＦＰＧＡボード＃ｍは、広帯域バス４２によって、ＦＰＧＡボード＃ｍ−１及び＃ｍ＋１（ともに不図示）と通信可能に接続される。ＦＰＧＡボード＃ｍに接続される広帯域バス４２は、バスＬ４２１及びバスＲ４２２を含む。バスＬ４２１は、ＦＰＧＡ＃ｍとＦＰＧＡ＃ｍ−１とを接続する。また、バスＲ４２２は、ＦＰＧＡ＃ｍとＦＰＧＡ＃ｍ＋１とを接続する。なお、図３に示した例においては、ＦＰＧＡボード＃０はバスＬ４２１と接続されていなくてよく、ＦＰＧＡボード＃５はバスＲ４２２と接続されていなくてよい。
【００６０】
ＦＰＧＡボード＃ｍは、共用バス（「バスＰ」と称されてもよい。）４１によって、ＣＰＵ１及びＳＤＲＡＭ２（ともに図４には不図示）と通信可能に接続される。
【００６１】
ＦＰＧＡ３１は、図４に示されるように、処理回路３１１及び監視回路３１２を備える。
【００６２】
処理回路３１１は、ＦＰＧＡ３１に割り当てられた処理（図４に示される例では「処理Ｘ」）を実行する。
【００６３】
処理回路３１１は、ｓｄｒａｍＩＦ（Interface）３１３を介して、ＳＤＲＡＭ３２と通信可能に接続される。また、処理回路３１１は、複数（図示される例では３つ）のバスＩＦ３１４を介して、監視回路３１２，バスＰ４１，バスＬ４２１及びバスＲ４２２と接続される。処理回路３１１は、バスＩＦ３１４を介して、バスＰ４１，バスＬ４２１及びバスＲ４２２との間で、データ信号及び制御信号の送受信を行なう。処理回路３１１とバスＬ４２１及びバスＲ４２２との間で送受信される制御信号は、監視回路３１２にも入力される。
【００６４】
監視回路３１２は、計測部の一例であり、単位時間毎に、処理回路３１１におけるデータ通信量を計測（別言すれば、「監視」）する。監視回路３１２は、バスＩＦ３１２１を介して、バスＰ４１と接続される。監視回路３１２は、バスＩＦ３１２１を介して、データ信号及び制御信号の送受信を行なう。
【００６５】
図５は、図４に示した監視回路３１２の機能構成を示すブロック図である。
【００６６】
監視回路３１２は、図５に示されるように、制御部３１２２、バスＬデータ量取得部３１２３、バスＲデータ量取得部３１２４、バスＬデータ量カウンタ３１２５、バスＲデータ量カウンタ３１２６、バスＬサイズ算出部３１２７、バスＲサイズ算出部３１２８を備える。
【００６７】
バスＬサイズ算出部３１２７は、バスＬ４２１を介して送受信されたデータ信号のサイズを算出する。
【００６８】
バスＬデータ量カウンタ３１２５は、バスＬサイズ算出部３１２７によって算出されたデータ信号のサイズに基づき、データ量をカウントアップする。バスＬデータ量カウンタ３１２５は、制御部３１２２による制御に基づき、単位時間が経過した場合に、カウントしたデータ量をバスＬデータ量取得部３１２３に通知し、カウントしたデータ量を０にリセットする。
【００６９】
バスＬデータ量取得部３１２３は、バスＬデータ量カウンタ３１２５から通知されたバスＬ４２１のデータ量を取得する。バスＬデータ量取得部３１２３は、バスＩＦ３１２１及びバスＰ４１を介して、ＣＰＵ１へ取得したバスＬ４２１のデータ量を送信する。
【００７０】
バスＲサイズ算出部３１２８は、バスＲ４２２を介して送受信されたデータ信号のサイズを算出する。
【００７１】
バスＲデータ量カウンタ３１２６は、バスＲサイズ算出部３１２８によって算出されたデータ信号のサイズに基づき、データ量をカウントアップする。バスＲデータ量カウンタ３１２６は、制御部３１２２による制御に基づき、単位時間が経過した場合に、カウントしたデータ量をバスＲデータ量取得部３１２４に通知し、カウントしたデータ量を０にリセットする。
【００７２】
バスＲデータ量取得部３１２４は、バスＲデータ量カウンタ３１２６から通知されたバスＲ４２２のデータ量を取得する。バスＲデータ量取得部３１２４は、バスＩＦ３１２１及びバスＰ４１を介して、ＣＰＵ１へ取得したバスＲ４２２のデータ量を送信する。
【００７３】
制御部３１２２は、単位時間が経過した場合に、バスＬデータ量カウンタ３１２５に、カウントしたデータ量をバスＬデータ量取得部３１２３に通知させ、カウントしたデータ量をリセットさせる。また、制御部３１２２は、単位時間が経過した場合に、バスＲデータ量カウンタ３１２６に、カウントしたデータ量をバスＲデータ量取得部３１２４に通知させ、カウントしたデータ量をリセットさせる。
【００７４】
図６の（１）はデータパイプライン処理の実施順序の第１の例を説明する図であり、図６の（２）は図６の（１）に示したデータパイプライン処理において隣り合う処理を統合する場合の実施順序を説明する図である。
【００７５】
図６の（１）に示される例において、ＦＰＧＡ＃０は処理Ａ１〜Ａ５を実行し、ＦＰＧＡ＃１は処理Ｂ１〜Ｂ５を実行し、ＦＰＧＡ＃２は処理Ｃ１〜Ｃ５を実行する。また、図２に示される例において、ＦＰＧＡ＃３は処理Ｄ１〜Ｄ５を実行し、ＦＰＧＡ＃４は処理Ｅ１〜Ｅ５を実行し、ＦＰＧＡ＃５は処理Ｆ１〜Ｆ５を実行する。
【００７６】
パイプライン処理において、複数のＦＰＧＡ３１に割り当てられる各処理には処理順序が定義されており、第１の処理の後に第２の処理を実行することが定義されている場合には、第１の処理が完了するまで、第２の処理は実行されない。
【００７７】
図６の（１）に示される例において、パイプライン処理は、処理Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの順に実行される。具体的には、処理Ａｎが完了すると処理Ｂｎが実行され、処理Ｂｎが完了すると処理Ｃｎが実行され、処理Ｃｎが完了すると処理Ｄｎが実行され、処理Ｄｎが完了すると処理Ｅｎが実行され、処理Ｅｎが完了すると処理Ｆｎが実行される（ｎは１〜５の整数）。
【００７８】
例えば、処理Ａ１が完了すると処理Ｂ１が実行され、処理Ｂ１が完了すると処理Ｃ１が実行され、処理Ｃ１が完了すると処理Ｄ１が実行され、処理Ｄ１が完了すると処理Ｅ１が実行され、処理Ｅ１が完了すると処理Ｆ１が実行される。処理Ａ２〜Ａ５，処理Ｂ２〜Ｂ５，処理Ｃ２〜Ｃ５，処理Ｄ２〜Ｄ５，処理Ｅ２〜Ｅ５及び処理Ｆ２〜Ｆ５についても、同様である。
【００７９】
図６の（１）に示される例において、処理Ａ１〜Ａ５及び処理Ｂ１〜Ｂ５の実行時間は、１単位処理時間よりも十分に小さい。また、図６の（１）に示される例において、処理Ｃ１〜Ｃ５，処理Ｄ１〜Ｄ５，処理Ｅ１〜Ｅ５及び処理Ｆ１〜Ｆ５の実行時間は、１単位処理時間と略同じである。
【００８０】
図７は、図６の（１）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【００８１】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出されて、ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【００８２】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【００８３】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４２を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【００８４】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス４２を介して転送される。ＦＰＧＡ＃３は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃３に記憶される。
【００８５】
ＳＤＲＡＭ＃３に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス４２を介して転送される。ＦＰＧＡ＃４は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃４に記憶される。
【００８６】
ＳＤＲＡＭ＃４に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃４からＦＰＧＡボード＃５へ広帯域バス４２を介して転送される。ＦＰＧＡ＃５は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃５に記憶される。
【００８７】
ＳＤＲＡＭ＃５に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃５から出力され、例えばＳＤＲＡＭ２に記憶される。
【００８８】
制御部１５は、第１判定部１３及び第２判定部１４によって図６の（１）に示した処理Ａ１〜Ａ５及びＢ１〜Ｂ５の実行をＦＰＧＡ＃０に統合できると判定された場合に、図６の（２）に示されるように、処理Ａ１〜Ａ５及びＢ１〜Ｂ５をＦＰＧＡ＃０に実行させる。
【００８９】
図６の（２）に示されるように、処理Ａの実行時間と、処理Ｂの実行時間と、ＦＰＧＡ＃０において処理Ａを実行する論理から処理Ｂを実行する論理に書き換える時間（図中の「書換」参照）との合計値は、単位時間以下である。
【００９０】
制御部１５は、処理Ａｎ〜Ｆｎの処理順序に従いつつ、論理の書き換え回数が最小となるように、ＦＰＧＡ＃０に対して処理Ａｎ及びＢｎを統合して割り当ててよい。
【００９１】
図６の（１）においてＦＰＧＡ＃２〜＃５にそれぞれ割り当てられていた処理Ｃ〜Ｆは、図６の（２）に示されるように、ＦＰＧＡ＃１〜＃４にそれぞれ詰めて割り当てられてよい。これにより、ＦＰＧＡ＃５は処理が割り当てられていない空き状態となり、ＦＰＧＡ＃５には図６の（２）に示された処理Ａ〜Ｆ以外の処理を割り当てることができる。すなわち、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
【００９２】
図８は、図６の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【００９３】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出されて、ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【００９４】
ＦＰＧＡ＃０は、ＳＤＲＡＭ＃０に記憶された出力データＡｏを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃０に記憶される。
【００９５】
ＳＤＲＡＭ＃０に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃１に記憶される。
【００９６】
ＳＤＲＡＭ＃１に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４２を介して転送される。ＦＰＧＡ＃２は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃２に記憶される。
【００９７】
ＳＤＲＡＭ＃２に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス４２を介して転送される。ＦＰＧＡ＃３は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃３に記憶される。
【００９８】
ＳＤＲＡＭ＃３に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス４２を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【００９９】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１００】
図９の（１）はデータパイプライン処理の実施順序の第２の例を説明する図であり、図９の（２）は図９の（１）に示したデータパイプライン処理において隣り合わない処理を統合する場合の実施順序を説明する図である。
【０１０１】
図９の（１）に示される例において、処理Ｂ１〜Ｂ５及び処理Ｄ１〜Ｄ５の実行時間は、１単位処理時間よりも十分に小さい。また、図９の（１）に示される例において、処理Ａ１〜Ａ５，処理Ｃ１〜Ｃ５，処理Ｅ１〜Ｅ５及び処理Ｆ１〜Ｆ５の実行時間は、１単位処理時間と略同じである。
【０１０２】
図９の（１）に示すパイプライン処理におけるデータの流れは、図７に示したパイプライン処理におけるデータの流れと同様である。
【０１０３】
第１判定部１３及び第２判定部１４によって図９の（１）に示す処理Ｂ１〜Ｂ５及びＤ１〜Ｄ５の実行をＦＰＧＡ＃１に統合できると判定された場合に、制御部１５は、図９の（２）に示されるように、処理Ｂ１〜Ｂ５及びＤ１〜Ｄ５をＦＰＧＡ＃１に実行させる。
【０１０４】
図９の（２）に示されるように、処理Ｂの実行時間と、処理Ｄの実行時間と、ＦＰＧＡ＃１において処理Ｂを実行する論理から処理Ｄを実行する論理に書き換える時間（図中の「書換」参照）との合計値は、単位時間以下である。
【０１０５】
制御部１５は、処理Ａｎ〜Ｆｎの処理順序に従いつつ、論理の書き換え回数が最小となるように、ＦＰＧＡ＃１に対して処理Ｂｎ及びＤｎを統合して割り当ててよい。
【０１０６】
図９の（１）においてＦＰＧＡ＃４及び＃５にそれぞれ割り当てられていた処理Ｅ及びＦは、図９の（２）に示されるように、ＦＰＧＡ＃３及び＃４にそれぞれ詰めて割り当てられてよい。これにより、ＦＰＧＡ＃５は処理が割り当てられていない空き状態となり、ＦＰＧＡ＃５には図９の（２）に示された処理Ａ〜Ｆ以外の処理を割り当てることができる。すなわち、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
【０１０７】
図１０は、図９の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【０１０８】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出されて、ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１０９】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１１０】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４２を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【０１１１】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１１２】
ＳＤＲＡＭ＃１に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃１からＦＰＧＡ＃２経由でＦＰＧＡボード＃３へ広帯域バス４２を介して転送される。ＦＰＧＡ＃３は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃３に記憶される。
【０１１３】
ＳＤＲＡＭ＃３に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス４２を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【０１１４】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１１５】
図１０に示すパイプライン処理においては、破線矢印で示されるように、リードデータＤｒ及びＥｒのＦＰＧＡボード３間の転送動作が、図８に示されたパイプライン処理と比較して増加する。
【０１１６】
次に、図１１〜図１４を用いて、統合可能な処理が３つ以上存在する場合における、統合する処理の優先順位について説明する。
【０１１７】
図１１の（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、図１１の（２）は図１１の（１）に示したデータパイプライン処理における第１の統合例を説明する図である。
【０１１８】
図１１の（１）に示される例において、処理Ａ１〜Ａ５，Ｂ１〜Ｂ５，Ｄ１〜Ｄ５及びＥ１〜Ｅ５の実行時間は、１単位処理時間よりも十分に小さい。また、図１１の（１）に示される例において、処理Ｃ１〜Ｃ５及びＦ１〜Ｆ５の実行時間は、１単位処理時間と略同じである。すなわち、図１１の（１）に示される例においては、統合可能な４つの処理Ａ１〜Ａ５，Ｂ１〜Ｂ５，Ｄ１〜Ｄ５及びＥ１〜Ｅ５が存在する。図１１の（１）に示すパイプライン処理は、図７に示したパイプライン処理と同様である。
【０１１９】
図１１の（２）に示される例において、制御部１５は、接続関係において隣り合う（別言されれば、「距離が１ホップの」）２つのＦＰＧＡ＃０及び＃１にそれぞれ割り当てられている処理Ａ１〜Ａ５及びＢ１〜Ｂ５をＦＰＧＡ＃０に実行させる。図１１の（２）に示されるパイプライン処理におけるデータの流れは、図８に示されたパイプライン処理におけるデータの流れと同様である。
【０１２０】
図１２の（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、図１２の（２）は図１２（１）に示したデータパイプライン処理における第２の統合例を説明する図である。
【０１２１】
図１２の（１）に示されるデータパイプライン処理の実施順序は、図１１の（１）に示されたデータパイプライン処理の実施順序と同様である。
【０１２２】
図１２の（２）に示される例において、制御部１５は、接続関係において隣り合わない（別言されれば、「距離が２ホップの」）２つのＦＰＧＡ＃１及び＃３にそれぞれ割り当てられている処理Ｂ１〜Ｂ５及びＤ１〜Ｄ５をＦＰＧＡ＃１に実行させる。図１２の（２）に示されるパイプライン処理におけるデータの流れは、図１０に示されたパイプライン処理におけるデータの流れと同様である。
【０１２３】
図１３の（１）はデータパイプライン処理の実施順序の第３の例を説明する図であり、図１３の（２）は図１３の（１）に示したデータパイプライン処理における第３の統合例を説明する図である。
【０１２４】
図１３の（１）に示されるデータパイプライン処理の実施順序は、図１１の（１）及び図１２の（１）に示されたデータパイプライン処理の実施順序と同様である。
【０１２５】
図１３の（２）に示される例において、制御部１５は、接続関係において隣り合わない（別言されれば、「距離が３ホップの」）２つのＦＰＧＡ＃１及び＃４にそれぞれ割り当てられている処理Ｂ１〜Ｂ５及びＥ１〜Ｅ５をＦＰＧＡ＃１に実行させる。
【０１２６】
図１４は、図１３の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【０１２７】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出されて、ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１２８】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１２９】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４２を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【０１３０】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス４２を介して転送される。ＦＰＧＡ＃３は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃３に記憶される。
【０１３１】
ＳＤＲＡＭ＃３に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃２を経由してＦＰＧＡボード＃１へ広帯域バス４２を介して転送される。ＦＰＧＡ＃１は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１３２】
ＳＤＲＡＭ＃１に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２及び＃３を経由してＦＰＧＡボード＃４へ広帯域バス４２を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【０１３３】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１３４】
図１４に示すパイプライン処理においては、破線矢印で示されるように、２回のリードデータＥｒ及び２回のリードデータＦｒのＦＰＧＡボード３間の転送動作が、図８に示されたパイプライン処理と比較して増加する。
【０１３５】
制御部１５は、複数のＦＰＧＡ３１の間の接続関係において、統合された処理を実行するＦＰＧＡ３１と最も近い位置に接続された他のＦＰＧＡ３１に割り当てられた処理を統合してＦＰＧＡ３１に実行させる。
【０１３６】
制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１１の（２）に示されるように、距離が１ホップのＦＰＧＡ＃０及び＃１にそれぞれ割り当てられた処理Ａ及びＢを最も優先して統合する。図１１の（２）に示されるパイプライン処理においては、図８に示されたように、ＦＰＧＡボード３間のデータ転送量が最小限に抑えられる。
【０１３７】
図１１の（１）に示された処理Ａ及びＢの統合が、第１判定部１３及び第２判定部１４の判定結果により不可能な場合について考える。この場合には、制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１２の（２）に示されるように、距離が２ホップのＦＰＧＡ＃１及び＃３にそれぞれ割り当てられた処理Ｂ及びＤを次に優先して統合する。図１２の（２）に示されるパイプライン処理においては、図１０に示されたように、ＦＰＧＡボード３間のデータ転送回数が最小限の回数から２回増加する（図１０の破線矢印参照）。
【０１３８】
図１１の（１）に示された処理Ａ及びＢの統合と、図１２の（１）に示された処理Ｂ及びＤの統合とが、いずれも、第１判定部１３及び第２判定部１４の判定結果により不可能な場合について考える。この場合には、制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１３の（２）に示されるように、距離が３ホップのＦＰＧＡ＃１及び＃４にそれぞれ割り当てられた処理Ｂ及びＥを統合する。図１３の（２）に示されるパイプライン処理においては、図１４に示されたように、ＦＰＧＡボード３間のデータ転送回数が最小限の回数から４回増加する（図１４の破線矢印参照）。
【０１３９】
このように、制御部１５がＦＰＧＡ３１間の距離に基づいて統合する２つの処理を選択する。すなわち、距離が短い（別言されれば、「ホップ数が少ない」）ＦＰＧＡ３１の処理が優先して統合される。これにより、情報処理システム１００における通信負荷を抑えることができる。
【０１４０】
〔Ｂ−２〕動作
上述した実施形態の一例の情報処理システム１００におけるデータパイプライン処理の統合動作を、図１５に示されるフローチャート（ステップＳ１〜Ｓ７）に従って説明する。
【０１４１】
制御部１５は、ホップ数Ｎを１に設定する（ステップＳ１）。これにより、制御部１５は、２つの処理を統合して実行するＦＰＧＡ３１からのホップ数Ｎが１のＦＰＧＡ３１に割り当てられている統合可能な処理を検索する。
【０１４２】
制御部１５は、各ＦＰＧＡ３１に割り当てられている複数の処理の中から、ホップ数（別言されれば、「間隔」）Ｎの２つの処理を抽出する（ステップＳ２）。
【０１４３】
制御部１５は、第１判定部１３及び第２判定部１４による判定結果に基づき、２つの処理が統合可能であるかを判定する（ステップＳ３）。
【０１４４】
２つの処理が統合可能でない場合には（ステップＳ３のＮｏルート参照）、処理はステップＳ５へ移行する。
【０１４５】
一方、２つの処理が統合可能である場合には（ステップＳ３のＹｅｓルート参照）、制御部１５は、２つの処理を統合する（ステップＳ４）。
【０１４６】
制御部１５は、ホップ数（別言されれば、「間隔」）Ｎの全処理を抽出済みであり、且つ、統合不可であるかを判定する（ステップＳ５）。
【０１４７】
間隔Ｎの全処理を抽出済みでなく、又は、統合可能である場合には（ステップＳ５のＮｏルート参照）、処理はステップＳ２へ戻る。
【０１４８】
一方、間隔Ｎの全処理を抽出済みであり、且つ、統合不可である場合には（ステップＳ５のＹｅｓルート参照）、制御部１５は、ホップ数Ｎを１インクリメントする（ステップＳ６）。
【０１４９】
制御部１５は、ホップ数Ｎが閾値Ｈより大きいかを判定する（ステップＳ７）。
【０１５０】
ホップ数Ｎが閾値Ｈ以下である場合には（ステップＳ７のＮｏルート参照）、処理はステップＳ２へ戻る。
【０１５１】
一方、ホップ数Ｎが閾値Ｈより大きい場合には（ステップＳ７のＹｅｓルート参照）、処理は終了する。
【０１５２】
以上のように、第１判定部１３は、第１の処理の実行時間と、第２の処理の実行時間と、１つのＦＰＧＡボード３において第１の処理を実行する論理から第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する。また、第２判定部１４は、第１の処理と第２の処理とを１つのＦＰＧＡ３１に実行させる場合に、複数のＦＰＧＡ３１の間におけるデータ通信量が閾値以下であるかを判定する。そして、制御部１５は、第１判定部によって合計値が単位時間以下であると判定され、第２判定部によってデータ通信量が閾値以下であると判定された場合に、第１の処理と第２の処理とを１つのＦＰＧＡ３１に実行させる。
【０１５３】
これにより、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
【０１５４】
制御部１５は、複数のＦＰＧＡ３１の間の接続関係において、処理の併合先のＦＰＧＡ３１と最も近い位置に接続された他のＦＰＧＡ３１に割り当てられた処理を、第２の処理として、処理の併合先のＦＰＧＡ３１に実行させる。また、データ通信量は、複数のＦＰＧＡ３１に備えられる監視回路３１２によって単位時間毎に計測される。
【０１５５】
これらにより、情報処理システム１００における通信負荷を抑えることができる。
【０１５６】
〔Ｃ〕変形例
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【０１５７】
図１６は、実施形態の変形例における情報処理システム２００のハードウェア構成例を示すブロック図である。
【０１５８】
広帯域バス４２のトポロジは、図３等に示された隣り合うＦＰＧＡボード３間の接続に限られた構成に限定されない。すなわち、図１６に示されるように、各ＦＰＧＡボード３は、ブリッジ４３を介して、他の複数のＦＰＧＡボード３と接続されてよい。
【０１５９】
図１６に示される変形例の情報処理システム２００は、図３等に示された情報処理システム１００が備える機能構成に加えて、１以上（図１６に示される例では２つ）のブリッジ４３（「ブリッジ＃０又は＃１」と称されてもよい。）を備える。
【０１６０】
図１６に示される例においては、広帯域バス４５によって、ＦＰＧＡボード＃０とＦＰＧＡボード＃１とが接続されており、ＦＰＧＡボード＃１とＦＰＧＡボード＃２とが接続されている。また、図１６に示される例においては、広帯域バス４５によって、ＦＰＧＡボード＃３とＦＰＧＡボード＃４とが接続されており、ＦＰＧＡボード＃４とＦＰＧＡボード＃５とが接続されている。
【０１６１】
図１６に示される例においては、ＦＰＧＡボード＃０〜＃２は広帯域バス４５及びブリッジ＃０を介して互いに接続されており、ＦＰＧＡボード＃３〜＃５は広帯域バス４５及びブリッジ＃１を介して互いに接続されている。
【０１６２】
ブリッジ＃０とブリッジ＃１とは、広帯域バス４４を介して接続される。広帯域バス４４により、ＦＰＧＡボード＃０〜＃２のいずれかと、ＦＰＧＡボード＃３〜＃５のいずれかとは、ブリッジ＃０及び＃１を介して互いに接続される。
【０１６３】
図１６に示される例において、ＦＰＧＡ＃０〜＃５は、処理Ａ〜Ｆをそれぞれ実行する。
【０１６４】
図１７は、図１６に示した変形例の情報処理システム２００において図１１の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【０１６５】
図１６に示された情報処理システム２００において、図１１の（１）に示されたパイプライン処理に対して、図１１の（２）に示されたように処理Ａ及びＢを統合すると、ＦＰＧＡボード３間のデータ通信は、図１７に示されるようになる。
【０１６６】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出される。ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１６７】
ＦＰＧＡ＃０は、ＳＤＲＡＭ＃０に記憶された出力データＡｏを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１６８】
ＳＤＲＡＭ＃０に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４５を介して転送される。ＦＰＧＡ＃１は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１６９】
ＳＤＲＡＭ＃１に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４５を介して転送される。ＦＰＧＡ＃２は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃２に記憶される。
【０１７０】
ＳＤＲＡＭ＃２に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス４５，ブリッジ＃０，広帯域バス４４，ブリッジ＃１及び広帯域バス４５を介して転送される。ＦＰＧＡ＃３は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃３に記憶される。
【０１７１】
ＳＤＲＡＭ＃３に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス４５を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【０１７２】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１７３】
図１７に示されるように、実施形態の変形例における情報処理システム２００においても、隣り合う（別言されれば、「ホップ数が１の」）ＦＰＧＡ３１に割り当てられている処理を統合して実行することができる。
【０１７４】
図１８は、図１６に示した変形例の情報処理システム２００において図１２の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【０１７５】
図１６に示された情報処理システム２００において、図１２の（１）に示されたパイプライン処理に対して、図１２の（２）に示されたように処理Ｂ及びＤを統合すると、ＦＰＧＡボード３間のデータ通信は、図１８に示されるようになる。
【０１７６】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出される。ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１７７】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４５を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１７８】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４５を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【０１７９】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃１へ広帯域バス４５を介して転送される。ＦＰＧＡ＃１は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１８０】
ＳＤＲＡＭ＃１に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃３へ広帯域バス４５，ブリッジ＃０，広帯域バス４４，ブリッジ＃１及び広帯域バス４５を介して転送される。ＦＰＧＡ＃３は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃３に記憶される。
【０１８１】
ＳＤＲＡＭ＃３に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃４へ広帯域バス４５を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【０１８２】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１８３】
図１８に示されるパイプライン処理においては、破線矢印で示されるように、リードデータＤｒのＦＰＧＡボード３間の転送動作が、図１７に示されたパイプライン処理と比較して増加する。
【０１８４】
図１８に示されるように、実施形態の変形例における情報処理システム２００においても、隣り合わない（別言されれば、「ホップ数が２の」）ＦＰＧＡ３１に割り当てられている処理を統合して実行することができる。
【０１８５】
図１９は、図１６に示した変形例の情報処理システム２００において図１３の（２）に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
【０１８６】
図１６に示された情報処理システム２００において、図１３の（１）に示されたパイプライン処理に対して、図１３の（２）に示されたように処理Ｂ及びＥを統合すると、ＦＰＧＡボード３間のデータ通信は、図１９に示されるようになる。
【０１８７】
まず、ＳＤＲＡＭ２に記憶されている入力データＡｉｎがリードデータＡｒとして共用バス４１を介して読み出される。ＦＰＧＡ＃０は、リードデータＡｒを用いて、処理Ａを実行する。処理Ａの出力は、出力データＡｏとして、ＳＤＲＡＭ＃０に記憶される。
【０１８８】
ＳＤＲＡＭ＃０に記憶された出力データＡｏは、リードデータＢｒとしてＦＰＧＡボード＃０からＦＰＧＡボード＃１へ広帯域バス４５を介して転送される。ＦＰＧＡ＃１は、リードデータＢｒを用いて、処理Ｂを実行する。処理Ｂの出力は、出力データＢｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１８９】
ＳＤＲＡＭ＃１に記憶された出力データＢｏは、リードデータＣｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃２へ広帯域バス４５を介して転送される。ＦＰＧＡ＃２は、リードデータＣｒを用いて、処理Ｃを実行する。処理Ｃの出力は、出力データＣｏとして、ＳＤＲＡＭ＃２に記憶される。
【０１９０】
ＳＤＲＡＭ＃２に記憶された出力データＣｏは、リードデータＤｒとしてＦＰＧＡボード＃２からＦＰＧＡボード＃３へ広帯域バス４５，ブリッジ＃０，広帯域バス４４，ブリッジ＃１及び広帯域バス４５を介して転送される。ＦＰＧＡ＃３は、リードデータＤｒを用いて、処理Ｄを実行する。処理Ｄの出力は、出力データＤｏとして、ＳＤＲＡＭ＃３に記憶される。
【０１９１】
ＳＤＲＡＭ＃３に記憶された出力データＤｏは、リードデータＥｒとしてＦＰＧＡボード＃３からＦＰＧＡボード＃１へ広帯域バス４５，ブリッジ＃１，広帯域バス４４，ブリッジ＃０及び広帯域バス４５を介して転送される。ＦＰＧＡ＃１は、リードデータＥｒを用いて、処理Ｅを実行する。処理Ｅの出力は、出力データＥｏとして、ＳＤＲＡＭ＃１に記憶される。
【０１９２】
ＳＤＲＡＭ＃１に記憶された出力データＥｏは、リードデータＦｒとしてＦＰＧＡボード＃１からＦＰＧＡボード＃４へ広帯域バス４５，ブリッジ＃０，広帯域バス４４，ブリッジ＃１及び広帯域バス４５を介して転送される。ＦＰＧＡ＃４は、リードデータＦｒを用いて、処理Ｆを実行する。処理Ｆの出力は、出力データＦｏとして、ＳＤＲＡＭ＃４に記憶される。
【０１９３】
ＳＤＲＡＭ＃４に記憶された出力データＦｏは、共用バス４１を介してＦＰＧＡボード＃４から出力され、例えばＳＤＲＡＭ２に記憶される。
【０１９４】
図１９に示されるパイプライン処理においては、破線矢印で示されるように、３回のリードデータＥｒの転送動作及び２回のリードデータＦｒの転送動作が、図１７に示されたパイプライン処理と比較して増加する。なお、２つのＦＰＧＡボード３間の転送動作、ＦＰＧＡボード３とブリッジ４３との間の転送動作、又は、２つのブリッジ４３間の転送動作が、それぞれ１回の転送動作としてカウントされている。
【０１９５】
図１９に示されるように、実施形態の変形例における情報処理システム２００においても、隣り合わない（別言されれば、「ホップ数が３の」）ＦＰＧＡ３１に割り当てられている処理を統合して実行することができる。
【０１９６】
制御部１５は、複数のＦＰＧＡ３１の間の接続関係において、統合された処理を実行するＦＰＧＡ３１と最も近い位置に接続された他のＦＰＧＡ３１に割り当てられた処理を統合してＦＰＧＡ３１に実行させる。
【０１９７】
制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１１の（２）に示されるように、距離が１ホップのＦＰＧＡ＃０及び＃１にそれぞれ割り当てられた処理Ａ及びＢを最も優先して統合する。図１１の（２）に示されるパイプライン処理においては、図１７に示されたように、ＦＰＧＡボード３間のデータ転送量が最小限に抑えられる。
【０１９８】
図１１の（１）に示された処理Ａ及びＢの統合が、第１判定部１３及び第２判定部１４の判定結果により不可能な場合について考える。この場合には、制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１２の（２）に示されるように、距離が２ホップのＦＰＧＡ＃１及び＃３にそれぞれ割り当てられた処理Ｂ及びＤを次に優先して統合する。図１２の（２）に示されるパイプライン処理においては、図１８に示されたように、ＦＰＧＡボード３間のデータ転送回数が最小限の回数から１回増加する（図１７の破線矢印参照）。
【０１９９】
図１１の（１）に示された処理Ａ及びＢの統合と、図１２の（１）に示された処理Ｂ及びＤの統合とが、いずれも、第１判定部１３及び第２判定部１４の判定結果により不可能な場合について考える。この場合には、制御部１５は、図１１の（２），図１２の（２）及び図１３の（２）の統合例のうち図１３の（２）に示されるように、距離が３ホップのＦＰＧＡ＃１及び＃４にそれぞれ割り当てられた処理Ｂ及びＥを統合する。図１３の（２）に示されるパイプライン処理においては、図１９に示されたように、ＦＰＧＡボード３間のデータ転送回数が最小限の回数から５回増加する（図１９の破線矢印参照）。
【０２００】
このように、制御部１５がＦＰＧＡ３１間の距離に基づいて統合する２つの処理を選択する。すなわち、距離が短い（別言されれば、「ホップ数が少ない」）ＦＰＧＡ３１の処理が優先して統合される。これにより、情報処理システム２００における通信負荷を抑えることができる。
【０２０１】
〔Ｄ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０２０２】
統合可能な処理が３つ以上存在する場合には、制御部１５は、識別番号（例えば、「＃０〜＃５」）が１番目に小さいＦＰＧＡ３１と２番目に小さいＦＰＧＡ３１とにそれぞれ割り当てられた２つの処理を統合してよい。例えば、図１１の（１）に示された例では、ＦＰＧＡ＃０に割り当てられている処理Ａと、ＦＰＧＡ＃１に割り当てられている処理Ｂとが、統合されてよい。これにより、パイプライン処理における統合動作を効率的に行なうことができる。
【０２０３】
統合可能な処理が３つ以上存在する場合には、制御部１５は、ランダムに統合する処理を選択してよい。例えば、図１１の（１）に示された例では、ＦＰＧＡ＃３に割り当てられている処理Ｄと、ＦＰＧＡ＃４に割り当てられている処理Ｅとが、統合されてもよい。これにより、識別番号が小さいＦＰＧＡ３１への負荷を低減できる。
【０２０４】
統合可能な処理が４つ以上存在する場合には、制御部１５は、統合する処理を２組以上選択してよい。例えば、図１１の（１）に示された例では、ＦＰＧＡ＃０に割り当てられている処理ＡとＦＰＧＡ＃１に割り当てられている処理Ｂとが統合されるとともに、ＦＰＧＡ＃３に割り当てられている処理ＤとＦＰＧＡ＃４に割り当てられている処理Ｅとも統合されてよい。これにより、パイプライン処理における効率をより向上させることができる。
【０２０５】
１つのＦＰＧＡ３１において統合されて実行される処理の数は、２つに限定されない。３つ以上の処理の実行時間のそれぞれと論理の書き換え時間との合計値が１単位処理時間以下であれば、１つのＦＰＧＡ３１において、３つ以上の処理が統合されて実行されてよい。これにより、パイプライン処理における効率をより向上させることができる。
【０２０６】
〔Ｅ〕付記
以上の実施形態及び変形例に関し、さらに以下の付記を開示する。
【０２０７】
（付記１）
複数の処理装置と通信可能に接続される制御装置であって、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第１判定部と、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第２判定部と、
前記第１判定部によって前記合計値が前記単位時間以下であると判定され、前記第２判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる制御部と、
を備える、制御装置。
【０２０８】
（付記２）
前記制御部は、前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第１の処理装置と最も近い位置に接続された第２の処理装置に割り当てられた処理を、前記第２の処理として、前記第１の処理装置に実行させる、
付記１に記載の制御装置。
【０２０９】
（付記３）
前記データ通信量は、前記複数の通信装置に備えられる計測部によって前記単位時間毎に計測される、
付記１又は２に記載の制御装置。
【０２１０】
（付記４）
複数の処理装置と、
前記複数の処理装置と通信可能に接続される制御装置と、
を備え、
前記制御装置は、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第１判定部と、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第２判定部と、
前記第１判定部によって前記合計値が前記単位時間以下であると判定され、前記第２判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる制御部と、
を備える、情報処理システム。
【０２１１】
（付記５）
前記制御部は、前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第１の処理装置と最も近い位置に接続された第２の処理装置に割り当てられた処理を、前記第２の処理として、前記第１の処理装置に実行させる、
付記４に記載の情報処理システム。
【０２１２】
（付記６）
前記複数の通信装置は、
前記単位時間毎に前記データ通信量を計測する計測部を備える、
付記４又は５に記載の情報処理システム。
【０２１３】
（付記７）
複数の処理装置と通信可能に接続されるコンピュータに、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる、
処理を実行させる、プログラム。
【０２１４】
（付記８）
前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第１の処理装置と最も近い位置に接続された第２の処理装置に割り当てられた処理を、前記第２の処理として、前記第１の処理装置に実行させる、
処理を前記コンピュータに実行させる、付記７に記載のプログラム。
【０２１５】
（付記９）
前記データ通信量は、前記単位時間毎に計測される、
付記７又は８に記載のプログラム。
【０２１６】
（付記１０）
複数の処理装置と通信可能に接続される制御装置は、
第１の処理の実行時間と、第２の処理の実行時間と、前記複数の処理装置のうちの第１の処理装置において前記第１の処理を実行する論理から前記第２の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第１の処理と前記第２の処理とを前記第１の処理装置に実行させる、
情報処理方法。
【０２１７】
（付記１１）
前記制御装置は、
前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第１の処理装置と最も近い位置に接続された第２の処理装置に割り当てられた処理を、前記第２の処理として、前記第１の処理装置に実行させる、
付記１０に記載の情報処理方法。
【０２１８】
（付記１２）
前記複数の通信装置は、
前記単位時間毎に前記データ通信量を計測する、
付記１０又は１１に記載の情報処理方法。
【符号の説明】
【０２１９】
１００，２００，６００  ：情報処理システム
１，６                  ：ＣＰＵ
１１                    ：処理時間算出部
１２                    ：データ転送量取得部
１３                    ：第１判定部
１４                    ：第２判定部
１５                    ：制御部
２，７                  ：ＳＤＲＡＭ
３，８                  ：ＦＰＧＡボード
３１，８１              ：ＦＰＧＡ
３１１                  ：処理回路
３１２                  ：監視回路
３１３                  ：ｓｄｒａｍＩＦ
３１４，３１２１        ：バスＩＦ
３１２２                ：制御部
３１２３                ：バスＬデータ量取得部
３１２４                ：バスＲデータ量取得部
３１２５                ：バスＬデータ量カウンタ
３１２６                ：バスＲデータ量カウンタ
３１２７                ：バスＬサイズ算出部
３１２８                ：バスＲサイズ算出部
３２，８２              ：ＳＤＲＡＭ
４１，９１              ：共用バス
４２，４４，４５，９２  ：広帯域バス
４２１                  ：バスＬ
４２２                  ：バスＲ
４３                    ：ブリッジ
【図１】
2018025905.tif 000003
【図２】
2018025905.tif 000004
【図３】
2018025905.tif 000005
【図４】
2018025905.tif 000006
【図５】
2018025905.tif 000007
【図６】
2018025905.tif 000008
【図７】
2018025905.tif 000009
【図８】
2018025905.tif 000010
【図９】
2018025905.tif 000011
【図１０】
2018025905.tif 000012
【図１１】
2018025905.tif 000013
【図１２】
2018025905.tif 000014
【図１３】
2018025905.tif 000015
【図１４】
2018025905.tif 000016
【図１５】
2018025905.tif 000017
【図１６】
2018025905.tif 000018
【図１７】
2018025905.tif 000019
【図１８】
2018025905.tif 000020
【図１９】
2018025905.tif 000021