(57)【特許請求の範囲】
【請求項１】
タスクを実行する回路を再構成可能なプログラマブル部と、
前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測する実行時間予測部と、
先行して実行される先行タスクに対して前記実行時間予測部が予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定する構成数決定部と、
前記先行タスクの実行中に、前記構成数決定部が決定した数の前記後続回路を前記プログラマブル部に順次構成する構成制御部と、
前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整する調整部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を短縮する前記後続回路の前記プログラマブル部への構成数を決定し、
前記後続回路の前記プログラマブル部への構成が完了する前に前記先行タスクが完了した場合、
前記調整部は、
前記先行タスクの完了までに前記プログラマブル部に構成された前記後続回路の数が前記構成数以上である場合、新たな前記後続回路の前記プログラマブル部への構成の停止を前記構成制御部に指示し、
前記先行タスクの完了までに前記プログラマブル部に構成された前記後続回路の数が前記構成数より少ない場合、前記構成数の前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示すること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を最小にする前記後続回路の前記プログラマブル部への構成数を決定することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記実行時間予測部は、前記先行タスクの完了に基づいて前記後続タスクを１個の後続回路で実行する場合の基準の実行時間を予測し、
前記構成数決定部は、前記基準の実行時間に基づいて、前記構成数を決定すること
を特徴とする請求項２または請求項３記載の情報処理装置。
【請求項５】
前記先行タスクが完了する前に前記後続回路の前記プログラマブル部への構成が完了した場合、
前記実行時間予測部は、前記先行タスクの完了時間を予測し、
前記調整部は、前記完了時間までに構成可能な前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示する
を特徴とする請求項１記載の情報処理装置。
【請求項６】
前記先行タスクが完了する前に前記後続回路の前記プログラマブル部への構成が完了した場合、
前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を短縮する前記後続回路の前記プログラマブル部への構成数を決定し、
前記調整部は、前記完了時間までに構成可能な前記後続回路の数より前記構成数が多い場合、前記構成数の前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示すること
を特徴とする請求項５記載の情報処理装置。
【請求項７】
タスクを実行する回路の前記プログラマブル部への構成に掛かる構成時間を予測する構成時間予測部を備え、
前記構成数決定部は、前記構成時間予測部が予測した構成時間に基づいて、前記プログラマブル部に構成する前記後続回路の数を決定すること
を特徴とする請求項１ないし請求項６のいずれか１項記載の情報処理装置。
【請求項８】
前記プログラマブル部は、回路を再構成可能な複数のブロックを有し、
前記タスクを実行する回路の各々は、回路規模に応じた数のブロックに構成されること
を特徴とする請求項１ないし請求項７のいずれか１項記載の情報処理装置。
【請求項９】
タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御方法において、
前記情報処理装置が、
前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、
先行して実行される先行タスクに対して予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定し、
前記先行タスクの実行中に、決定した数の前記後続回路を前記プログラマブル部に順次構成し、
前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整すること
を特徴とする情報処理装置の制御方法。
【請求項１０】
タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御プログラムにおいて、
前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、
先行して実行される先行タスクに対して予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定し、
前記先行タスクの実行中に、決定した数の前記後続回路を前記プログラマブル部に順次構成し、
前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整する
処理を前記情報処理装置に実行させることを特徴とする情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
近時、論理を動的に再構成可能なＦＰＧＡ（Field-Programmable Gate Array）等のプログラマブルデバイスにおいて、プログラマブルデバイスに構成する論理を順次切り替えてデータ処理を実行する手法が提案されている。例えば、複数の前段処理をそれぞれ実行する複数の前段回路と、複数の前段処理の結果を用いて後段処理を実行する後段回路とによりデータ処理を実行する場合がある。この場合、複数の前段回路と後段回路との少なくともいずれかを同時に構成する複数種の実装方法が予め用意され、目標時間内にデータ処理を完了する実装方法のうち、構成される回路規模が最も小さい実装方式が選択される。また、目標時間内にデータ処理を完了することが困難な場合、選択した実装方式に対応する論理の複数個がプログラマブルデバイスに構成され、データ処理が並列に実行される（例えば、特許文献１参照）。
【０００３】
直列に接続される２つの回路を交互に構成してデータ処理を実行する場合、後段回路が、前段回路から順次出力されるデータ処理の結果を受信して次のデータ処理を開始することで、最終の処理結果を得るまでの時間が短縮される（例えば、特許文献２参照）。
【０００４】
データ処理の順序に合わせて複数の回路を順次構成し、構成した順にデータ処理を開始することで、データ処理と並行して他の回路が構成されるため、複数の回路をまとめて構成する場合に比べて、データ処理が高速化される（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２０３９２０号公報
【特許文献２】特開２００２−２６７２１号公報
【特許文献３】特開２０１１−１８６９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、データ処理の実行時間は、予測された実行時間に対して変化する場合がある。このため、データ処理を実行中に、次のデータ処理を実行する回路を構成する場合、データ処理の完了時刻と、データ処理に並行して実行される回路の構成の完了時刻との関係が常に一定になるとは限らない。
【０００７】
データ処理の完了時刻が、次のデータ処理を実行する回路の構成の完了時刻より早くなる場合、次のデータ処理の開始は、回路の構成が完了するまで待たされる。あるいは、データ処理の完了時刻が、次のデータ処理を実行する回路の構成の完了時刻より遅くなる場合、次のデータ処理の開始は、先行するデータ処理が完了するまで待たされる。これにより、データ処理の実行時間が、予測された実行時間に対して変化する場合、データ処理の効率が低下するおそれがある。
【０００８】
１つの側面では、本件開示の情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムは、タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
一つの観点によれば、情報処理装置は、タスクを実行する回路を再構成可能なプログラマブル部と、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測する実行時間予測部と、先行して実行される先行タスクに対して実行時間予測部が予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定する構成数決定部と、先行タスクの実行中に、構成数決定部が決定した数の後続回路をプログラマブル部に順次構成する構成制御部と、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する調整部とを有する。
【００１０】
別の観点によれば、タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御方法は、情報処理装置が、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する。
【００１１】
さらなる別の観点によれば、タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御プログラムは、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する処理を情報処理装置に実行させる。
【発明の効果】
【００１２】
本件開示の情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムは、タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。
【図２】図１に示すサーバの動作の一例を示す図である。
【図３】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す図である。
【図４】図３に示す実行時間保持テーブルおよび構成時間保持テーブルの一例を示す図である。
【図５】図３に示すサーバにより制御されるＦＰＧＡの動作の一例を示す図である。
【図６】図３に示すサーバの動作の一例を示す図である。
【図７】図３に示すサーバの動作の別の例を示す図である。
【図８】図３に示すサーバの動作の別の例を示す図である。
【図９】図３に示すサーバの動作の別の例を示す図である。
【図１０】図３に示すサーバの動作のさらなる別の例を示す図である。
【図１１】図３に示すサーバにおけるタスクの処理時間を最適化する動作の一例を示す図である。
【図１２】図１１に示すステップＳ１００の処理の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を用いて実施形態を説明する。
【００１５】
図１は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。
【００１６】
図１に示すサーバＳＶ１は、実行時間予測部１、構成数決定部２、構成制御部３、調整部４およびＦＰＧＡを有する。実行時間予測部１、構成数決定部２、構成制御部３および調整部４は、サーバＳＶ１に搭載されるハードウェアにより実現されてもよい。あるいは、実行時間予測部１、構成数決定部２、構成制御部３および調整部４は、サーバＳＶ１に搭載される図示しないＣＰＵ（Central Processing Unit）等のプロセッサが実行する制御プログラムにより実現されてもよい。サーバＳＶ１は、情報処理装置の一例である。なお、情報処理装置の形態は、サーバ以外の他のコンピュータ装置でもよい。
【００１７】
サーバＳＶ１は、先行して実行される先行タスクの実行中に、先行タスクの次に実行される後続タスクを実行する回路である後続回路をＦＰＧＡ内に構成する。すなわち、ＦＰＧＡへの後続回路の構成は、先行タスクの実行のバックグラウンドで実行される。例えば、ＦＰＧＡは、タスクを実行する回路を再構成可能な複数のブロックＢＬＫを有する。なお、ＦＰＧＡが有するブロックＢＬＫの数は、１６個に限定されない。ＦＰＧＡは、タスクを実行する回路を再構成可能なプログラマブル部の一例である。
【００１８】
実行時間予測部１は、ＦＰＧＡに構成される所定数の回路により実行されるタスクの実行時間ｔＥＸＣを予測する。複数の回路がＦＰＧＡに構成される場合、実行時間ｔＥＸＣは、複数の回路がタスクを並列に動作する実行時間である。構成数決定部２は、実行時間予測部１が予測した先行タスクの実行時間ｔＥＸＣと、後続タスクを実行する後続回路のＦＰＧＡへの構成に掛かる構成時間ｔＣＮＦとに基づいて、ＦＰＧＡに構成する後続回路の数ＮＣＮＦを決定する。例えば、構成時間ｔＣＮＦは、１個の後続回路のＦＰＧＡへの構成に掛かる時間を示す。以下では、ＦＰＧＡに構成する後続回路の数ＮＣＮＦは並列数とも称される。
【００１９】
構成制御部３は、先行タスクの実行中に、構成数決定部２が決定した数ＮＣＮＦの後続回路の回路情報ＣＩＮＦをＦＰＧＡに順次転送し、後続回路をＦＰＧＡに順次構成する。
【００２０】
調整部４は、先行タスクが完了する時間（時刻）と、後続回路のＦＰＧＡへの構成が完了する時間（時刻）との関係に基づいて、ＦＰＧＡに構成する後続回路の数を構成制御部３に調整させる調整情報ＡＤＪを構成制御部３に出力する。例えば、調整部４は、タスクの完了時にＦＰＧＡが出力する完了通知ＴＣＰＬに基づいて、先行タスクが完了する時間を検出し、回路の構成の完了時に構成制御部３が出力する完了通知ＢＣＰＬに基づいて、後続回路のＦＰＧＡへの構成が完了する時間を検出する。
【００２１】
調整部４は、完了通知ＢＣＰＬより早く完了通知ＴＣＰＬを受信した場合、後続回路のＦＰＧＡへの構成が完了する前に先行タスクが完了したことを検出する。一方、調整部４は、完了通知ＴＣＰＬより早く完了通知ＢＣＰＬを受信した場合、先行タスクが完了する前に後続回路のＦＰＧＡへの構成が完了したことを検出する。
【００２２】
図２は、図１に示すサーバＳＶ１の動作の一例を示す。図２に示す動作は、図１に示すサーバＳＶ１に搭載されるハードウェアにより実現され、あるいは、図１に示すサーバＳＶ１に搭載されるプロセッサが実行する制御プログラムにより実現される。すなわち、図２は、情報処理装置の制御方法および情報処理装置の制御プログラムの一例を示す。
【００２３】
図２において”回路の構成”に示す矩形の横幅は、回路のブロックＢＬＫへの構成時間を示し、”タスクの実行”に示す矩形の横幅は、タスクの実行時間を示す。図２では、先行タスクはタスク１であり、後続タスクはタスク２である。回路２はタスク２を実行する後続回路である。タスク１を実行する回路は、タスク１の実行前にＦＰＧＡのブロックＢＬＫに構成される。
【００２４】
例えば、構成数決定部２は、実行時間予測部１が予測したタスク１の実行時間ｔＥＸＣを、１個の回路２のＦＰＧＡへの構成時間で除することで、タスク１の実行中にＦＰＧＡに構成可能な回路２の数（この例では、４個）を算出する（図２（ａ））。構成数決定部２が回路２をＦＰＧＡに構成する数は、タスク１の実行が開始される前に算出される。
【００２５】
構成制御部３は、タスク１の実行の開始に合わせて、構成数決定部２が算出した数ＮＣＮＦの回路２のＦＰＧＡへの構成を開始する（図２（ｂ））。そして、タスク１が完了し、かつ、回路２のＦＰＧＡへの構成が完了した後、タスク２の実行が開始される（図２（ｃ））。このように、サーバＳＶ１は、回路の構成とタスクの実行とを並列かつ順次に行うパイプライン処理を実行する。
【００２６】
図２に示す”予測される動作”では、タスク２は、４個の回路２により４並列で実行されるため、タスク２の実行時間は、１個の回路２でタスク２を実行する場合の実行時間の２５％になる。なお、タスク２の後にタスク３（図示せず）が実行される場合、タスク２の実行の開始に合わせて、タスク３を実行する回路３（図示せず）のＦＰＧＡへの構成が開始される。
【００２７】
”予測される動作”に対して、”実際の動作（１）”では、タスク１の実行が予測より早く完了する（図２（ｄ））。例えば、タスク１は、回路２の３個目の構成中に完了する。調整部４は、完了通知ＢＣＰＬより早く完了通知ＴＣＰＬを受信した場合、ＦＰＧＡに構成する回路２の数を、構成数決定部２が決定した４個ではなく、現在構成中の回路２を含む３個にする調整情報ＡＤＪを構成制御部３に出力する。すなわち、調整部４は、構成制御部３に、ＦＰＧＡに構成する後続回路の数を４個から３個に調整させる（図２（ｅ））。
【００２８】
ＦＰＧＡへの回路２の構成数が４個から３個に減った場合、タスク２の並列数は”４”から”３”に減るため、タスク２の実行時間は、”予測される動作”によるタスク２の実行時間より長くなる（図２（ｆ））。しかしながら、タスク２の実行開始時刻は、ＦＰＧＡへの回路２の構成数が４個の場合に比べて早くなる。
【００２９】
一方、当初予測した並列数を変えない場合、タスク２は、回路２のＦＰＧＡへの構成後に開始される。この結果、図２に示す動作では、ＦＰＧＡへの回路２の構成数を４個から３個に調整した場合、ＦＰＧＡへの回路２の構成数を４個のままにした場合に比べて、タスク２が完了する時刻を早くすることができる。この結果、ＦＰＧＡへの回路２の構成数を４個のままにした場合に比べて、タスク１およびタスク２のトータルの処理時間を短縮することができる。
【００３０】
一方、”実際の動作（２）”では、タスク１の実行が予測より遅くなり、４個の回路２のＦＰＧＡへの構成は、タスク１が完了する前に完了する（図２（ｇ））。調整部４は、完了通知ＴＣＰＬより早く完了通知ＢＣＰＬを受信した場合で、タスク１が完了する前に構成数決定部２が決定した数より多い回路２をＦＰＧＡに構成できる場合、ＦＰＧＡに構成する回路２の数を増やす調整情報ＡＤＪを構成制御部３に出力する。この例では、調整部４は、構成制御部３に、ＦＰＧＡに構成する後続回路の数を４個から５個に調整させる調整情報ＡＤＪを構成制御部３に出力する（図２（ｈ））。
【００３１】
ＦＰＧＡへの回路２の構成数が４個から５個に増えた場合、タスク２の並列数は”４”から”５”に増えるため、タスク２の実行時間は、”予測される動作”によるタスク２の実行時間より短くなる（図２（ｉ））。すなわち、並列度が増えることで、タスク２の実行時間は短縮される。
【００３２】
一方、当初予測した並列数を変えない場合、タスク２は、タスク１の実行の完了後に開始される。この結果、図２に示す動作では、ＦＰＧＡへの回路２の構成数を４個から５個に調整した場合、ＦＰＧＡへの回路２の構成数を４個のままにした場合に比べて、タスク２が完了する時刻を早くすることができる。この結果、ＦＰＧＡへの回路２の構成数を４個のままにした場合に比べて、タスク１およびタスク２のトータルの処理時間を短縮することができる。
【００３３】
以上、図１および図２に示す実施形態では、先行タスクの完了時間と、後続タスクを実行する後続回路のＦＰＧＡへの構成の完了時間との関係に基づいて、後続回路のＦＰＧＡへの構成数を調整する。これにより、先行タスクの実行のバックグラウンドで後続回路をＦＰＧＡに構成し、タスクを順次実行する情報処理装置において、タスクのトータルの処理時間を従来に比べて短縮することができる。
【００３４】
図３は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図１および図２で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図３に示すサーバＳＶ２は、バスＢＵＳを介して互いに接続されたＣＰＵ（Central Processing Unit）、メモリＭＥＭ、通信インタフェースＣＩＦ、ＦＰＧＡ、ＤＭＡＣ（Direct Memory Access Controller）およびＨＤＤ（Hard Disk Drive）を有する。サーバＳＶ２は、情報処理装置の一例である。
【００３５】
ＣＰＵは、サーバＳＶ全体の動作を制御するとともに、メモリＭＥＭに格納された制御プログラムを実行することで、実行時間予測部１０、構成時間予測部１２、構成数決定部１４、制御部１６および構成制御部１７として機能する。実行時間予測部１０は、ＦＰＧＡに構成される回路の各々が実行するタスクの実行時間を予測する。
【００３６】
構成時間予測部１２は、後述する構成時間保持テーブル２４を参照し、ＨＤＤに保持された回路の回路情報をＦＰＧＡに転送する時間を予測する。ＦＰＧＡは、ＨＤＤから転送された回路情報をルックアップテーブル等に書き込むことで回路を構成する。このため、ＨＤＤからＦＰＧＡへの回路情報の転送時間と、ＦＰＧＡ内での回路情報の書き込み時間との和が、ＦＰＧＡへの回路の構成時間になる。しかしながら、回路情報の転送時間は、回路情報の書き込み時間に比べて支配的であるため、ＦＰＧＡへの回路の構成時間は、回路情報の転送時間とほぼ等しい。構成時間予測部１２により回路情報の転送時間を算出することで、回路情報を転送するバスＢＵＳ等の転送路のデータ転送速度が変化する場合にも、回路情報の正しい転送時間を予測することができる。
【００３７】
構成数決定部１４は、ＦＰＧＡに構成される回路が実行するタスクの並列数を決定する。すなわち、構成数決定部１４は、タスクを実行する回路のＦＰＧＡへの構成数を決定する。
【００３８】
なお、ＣＰＵは、ＦＰＧＡに構成される各回路の動作（すなわち、タスク）を制御するアプリケーションプログラムを実行する。アプリケーションプログラムは、複数種の回路毎に用意されてもよく、複数種の回路に共通に用意されてもよい。ＣＰＵが複数のＣＰＵコアを有する場合、制御プログラムとアプリケーションプログラムとは、互いに異なるＣＰＵコアによりそれぞれ実行されてもよい。また、アプリケーションプログラムは、ＣＰＵまたはＣＰＵコアが起動する仮想マシンにより実行されてもよい。
【００３９】
制御部１６は、実行時間予測部１０、構成時間予測部１２および構成数決定部１４の動作により得られる情報に基づいて、ＦＰＧＡに構成する回路の数を調整する。制御部１６は、先行タスクが完了する時間と、後続回路のＦＰＧＡへの構成が完了する時間との関係に基づいて、ＦＰＧＡに構成する後続回路の数を調整する調整部の一例である。
【００４０】
構成制御部１７は、ＨＤＤに保持された回路の回路情報をＦＰＧＡに転送する制御を実行する。例えば、構成制御部１７は、ＤＭＡＣを使用して、タスクの実行中に、構成数決定部１４が決定した数の回路の回路情報をＦＰＧＡに順次構成する。なお、構成制御部１７は、ＤＭＡＣを使用せずに、タスクの実行中に、構成数決定部１４が決定した数の回路の回路情報をＦＰＧＡに順次構成してもよい。また、制御部１６が、構成制御部１７の機能を有してもよい。
【００４１】
メモリＭＥＭは、記憶領域１８、２０、２２、２４を有する。記憶領域１８は、ＣＰＵが実行する制御プログラムを保持する。記憶領域２０は、ＣＰＵが実行するアプリケーションプログラムを保持する。例えば、アプリケーションプログラムは、ＨＤＤに保持され、ＨＤＤからメモリＭＥＭに転送された後、ＣＰＵにより実行される。
【００４２】
記憶領域２２には、実行時間保持テーブルが割り当てられる。以下の説明では、実行時間保持テーブルは、実行時間保持テーブル２２と称される。実行時間保持テーブル２２には、過去にＦＰＧＡに構成された回路が実行したタスクの実行時間に基づき算出された１回路当たりのタスクの実行時間（１並列でのタスクの実行時間）を示す情報が格納される。１回路当たりのタスクの実行時間は、基準の実行時間の一例である。
【００４３】
ＣＰＵは、１つのタスクが完了する毎に、タスクの実行時間に基づいて１並列でのタスクの実行時間を算出し、算出した１並列でのタスクの実行時間を示す情報を、回路の種類毎に実行時間保持テーブル２２に格納する。１並列でのタスクの実行時間は、タスクの実行時間に、タスクの並列数（すなわち、タスクを並列に実行する回路数）を乗じることで算出される。
【００４４】
なお、実行時間保持テーブル２２には、過去に実行されたタスクの実行時間を１並列での実行時間に換算した値の平均値が格納されてもよい。実行時間保持テーブル２２は、実行時間予測部１０がタスクの実行時間を予測する場合に参照される。実行時間予測テーブル２２には、ＨＤＤに回路情報が登録されたことに基づいて、登録された回路情報に対応する回路が実行するタスクの１並列での実行時間の初期値が格納される。これにより、タスクが実行されていない初期状態においても、実行時間予測部１０は、タスクの実行時間を予測することができる。サーバＳＶがタスクを実行する動作を開始したタスクの１並列での実行時間の初期値は、平均的な処理を実行するタスクの実行時間（計算値または実測値）である。実行時間保持テーブル２２の例は、図４に示される。
【００４５】
記憶領域２４には、構成時間保持テーブルが割り当てられる。以下の説明では、構成時間保持テーブルは、構成時間保持テーブル２４とも称される。構成時間保持テーブル２４には、ＨＤＤからＦＰＧＡへの回路情報の転送時間を示す情報が格納される。構成時間保持テーブル２４の例は、図４に示される。
【００４６】
通信インタフェースＣＩＦは、例えば、インターネットまたはイントラネット等のネットワークＮＷに接続され、サーバＳＶ内で使用する情報をネットワークＮＷから受信し、またはサーバＳＶ内で処理した情報をネットワークＮＷに送信する。
【００４７】
ＦＰＧＡは、ＨＤＤから転送される回路の回路情報をルックアップテーブル等に書き込むことで、回路が構成される複数のブロックＢＬＫと、複数の外部端子ＰＡＤと、複数のブロックＢＬＫおよび複数の外部端子ＰＡＤを相互に接続する配線部ＷＲとを有する。なお、サーバＳＶは、タスクを実行する回路を再構成可能であれば、ＦＰＧＡの代わりに他のプログラマブル部を有してもよい。
【００４８】
ＤＭＡＣは、構成制御部１７からの指示に基づいて、ＨＤＤに保持された回路の回路情報をＦＰＧＡに転送する。なお、回路情報のＦＰＧＡへの転送は、制御部１６等のＣＰＵの機能を用いて実行されてもよい。この場合、制御部１６が、構成数決定部１４が決定した数の回路の回路情報をＦＰＧＡに順次構成する構成制御部として機能する。
【００４９】
ＨＤＤは、ＦＰＧＡに構成する複数の回路（回路１、回路２、回路３、回路４、...）の回路情報を保持する記憶領域２６を有する。例えば、各回路の回路情報は、通信インタフェースＣＩＦを介してサーバＳＶの外部からＨＤＤに格納される。なお、ＨＤＤは、ＣＰＵが実行する制御プログラムがインストールされる記憶領域も有する。この場合、ＨＤＤにインストールされた制御プログラムは、制御プログラムの実行時にＨＤＤからメモリＭＥＭに転送される。
【００５０】
図４は、図３に示す実行時間保持テーブル２２および構成時間保持テーブル２４の一例を示す。実行時間保持テーブル２２は、タスク名（タスク１、タスク２、タスク３、...）を示す情報を保持する領域と、１並列でのタスクの実行時間（Ｔ１１、Ｔ２１、Ｔ３１、...）を示す情報を保持する領域とを含む複数のエントリを有する。制御部１６は、タスクが完了する毎に、１並列でのタスクの実行時間を算出し、算出した実行時間を示す情報を、タスク名を示す情報とともに、実行時間保持テーブル２２に格納する。
【００５１】
構成時間保持テーブル２４は、ＦＰＧＡに構成する回路の回路情報のデータサイズ毎に、転送速度を示す情報を保持する領域と、転送時間を示す情報を保持する領域とを含む複数のエントリを有する。転送速度の領域には、ＨＤＤからＦＰＧＡに転送される回路情報の転送速度（例えば、バスＢＵＳの転送速度）が格納される。転送時間の領域には、回路情報のデータサイズと転送速度とに応じた転送時間を示す情報が、ＦＰＧＡに回路が構成される前に格納される。構成時間予測部１２は、ＦＰＧＡに転送する回路情報のデータサイズと、バスＢＵＳの転送速度とに基づいて、構成時間保持テーブル２２を参照し、回路情報の転送時間を取得することで、転送時間を予測する。
【００５２】
なお、構成時間保持テーブル２２は、転送時間を示す情報を保持する領域を持たず、回路情報のデータサイズ毎に、転送速度を示す情報を保持する領域を有してもよい。この場合、構成時間予測部１２は、構成時間保持テーブル２２が保持する情報に基づいて、ＨＤＤからＦＰＧＡに転送される回路情報の転送時間を算出する。また、ＨＤＤからＦＰＧＡへのデータ転送速度が一定の場合、構成時間保持テーブル２４には、ＦＰＧＡに転送される回路の回路情報のデータサイズ毎に、ＨＤＤからＦＰＧＡへの回路情報の転送時間が格納されてもよい。さらに、サーバＳＶ２は、構成時間保持テーブル２２を持たず、構成時間予測部１２により転送時間を算出してもよい。この場合、構成時間予測部１２は、例えば、ＨＤＤに保持された回路情報に付加された付加情報から回路情報のデータサイズを読み出し、読み出したデータサイズを、予め検出したバスＢＵＳの転送速度で除することで、転送時間を算出する。
【００５３】
図５は、図３に示すサーバＳＶ２により制御されるＦＰＧＡの動作の一例を示す。図５に示す動作は、サーバＳＶ２のＣＰＵが制御プログラムを実行することで実現される。すなわち、図５は、情報処理装置の制御方法および情報処理装置の制御プログラムによる処理の一例を示す。図５において、ブロックＢＬＫ内に示す面取りされた破線の矩形枠は、各回路がブロックＢＬＫに構成されることを示し、ブロックＢＬＫ内に示す面取りされた実線の矩形枠は、各回路を動作させてタスクが実行されることを示す。
【００５４】
図５に示す例では、サーバＳＶ２は、回路１、回路２、回路３をＦＰＧＡの所定数のブロックＢＬＫに順次構成し、ブロックＢＬＫに構成した回路を動作させてタスク１、タスク２、タスク３を順次実行する。ここで、タスク１は回路１により実行され、タスク２は回路２により実行され、タスク３は回路３により実行される。図５に示す動作は、図３に示す制御部１６が、実行時間予測部１０、構成時間予測部１２、構成数決定部１４およびＤＭＡＣを制御することに基づいて実行される。
【００５５】
回路１の各々は、１つのブロックＢＬＫに構成され、タスク１は、９個のブロックを使用して９並列で実行される。回路２の各々は、２つのブロックＢＬＫに構成され、タスク２は、８個のブロックを使用して４並列で実行される。回路３の各々は、３つのブロックＢＬＫに構成され、タスク３は、１２個のブロックを使用して４並列で実行される。
【００５６】
このように、複数の回路１、複数の回路２または複数の回路３は、回路規模に応じた数のブロックＢＬＫに順次構成され、回路毎にタスクを並列に実行する。タスクの並列数（すなわち、ＦＰＧＡに構成される同種の回路の数）は、ブロックＢＬＫへの回路の構成時間とタスクの実行時間との和が最小になるように決められる。すなわち、タスクの並列数は、ブロックＢＬＫへの回路の構成を開始する開始時間から、ブロックＢＬＫに構成したタスクの実行が完了するまでの時間を短縮するように決められる。あるいは、タスクの並列数は、先行するタスクの実行時間と、先行するタスクの実行中に構成される後続のタスクを実行する回路の構成時間とが等しくなるように決められる。回路の構成時間は、上述したように、ＨＤＤからＦＰＧＡへの回路情報の転送時間にほぼ等しい。
【００５７】
まず、処理の開始の指示に基づいて、図３に示す実行時間予測部１０は、実行時間保持テーブル２２からタスク１の実行時間（１並列でのタスク１の実行時間）を読み出す。実行時間予測部１０は、読み出した実行時間の平均値を算出し、算出した平均値を１並列でのタスク１の実行時間の予測値とする。
【００５８】
図３に示す構成時間予測部１２は、回路１の回路情報のサイズとＨＤＤからＦＰＧＡへのデータの転送速度とに基づいて、回路１の回路情報のＨＤＤからＦＰＧＡへの転送に掛かる転送時間（１つの回路の構成時間）を、構成時間保持テーブル２４から読み出す。
【００５９】
図３に示す構成数決定部１４は、実行時間予測部１０が算出した実行時間の予測値（１並列でのタスクの実行時間）と、構成時間予測部１２が読み出した１つの回路の構成時間とを式（１）に代入する。そして、構成数決定部１４は、タスク１の理想的な並列数、すなわち、回路１のＦＰＧＡへの理想的な構成数である理想数を算出し、回路１のＦＰＧＡへの構成する数を決定する（図５（ａ））。式（１）中の符号ＳＱＲＴは、平方根を示す。
理想数＝ＳＱＲＴ（１並列でのタスクの実行時間／１つの回路の構成時間）  ‥‥（１）
ここで、式（１）は、回路のＦＰＧＡへの構成時間とタスクの実行時間とがほぼ同じになるように、回路のＦＰＧＡへの構成数が決められることを示し、式（２）を変形することで得られる。式（１）で求められる理想数は、タスクの様々な並列数のうち、回路のＦＰＧＡへの構成を開始してからタスクの実行が完了するまでの時間であるタスクの処理時間が最も短くなる構成数を示す。
１つの回路の構成時間×タスクの並列数＝１並列でのタスクの実行時間／タスクの並列数‥‥（２）
式（２）において、”１つの回路の構成時間×タスクの並列数”は、回路のＦＰＧＡへの構成時間を示し、”１並列でのタスクの実行時間／タスクの並列数”は、所定の並列数でのタスクの実行時間を示す。式（１）および式（２）は、回路のＦＰＧＡへの構成時間がタスクの並列数に比例し、タスクの実行時間がタスクの並列数に反比例するという条件下で成立する。以下では、回路のＦＰＧＡへの構成時間がタスクの並列数に比例し、タスクの実行時間がタスクの並列数に反比例するものとして説明する。
【００６０】
実行時間予測部１０は、タスク１の１並列での実行時間を回路１の構成数（９個）で除することで、タスク１の９並列での実行時間の予測値を算出する。制御部１６は、構成数決定部１４が算出した理想数と等しい数の回路１の回路情報をＨＤＤからＦＰＧＡに転送させる指示をＤＭＡＣに発行する。例えば、制御部１６は、ＨＤＤ内で回路１の回路情報が格納された先頭アドレス（ソースアドレス）と、回路１の回路情報を書き込むブロックＢＬＫの先頭アドレス（ディスティネーションアドレス）と、回路１の回路情報のデータサイズとをＤＭＡＣに指示する。ブロックＢＬＫの先頭アドレスは、ブロックＢＬＫ毎に異なる。ＤＭＡＣは、ＣＰＵからの指示に基づいて、回路１の回路情報をＨＤＤから読み出し、読み出した回路１の回路情報をＦＰＧＡに転送する動作を９回繰り返し、９個の回路１をＦＰＧＡの互いに異なるブロックＢＬＫに順次構成する（図５（ｂ））。
【００６１】
次に、構成時間予測部１２は、回路２の回路情報のサイズと、ＨＤＤからＦＰＧＡへのデータ転送速度とに基づいて、回路２の回路情報のＨＤＤからＦＰＧＡへの転送に掛かる転送時間（１つの回路２の構成時間）を、構成時間保持テーブル２４から読み出す。構成数決定部１４は、実行時間予測部１０が算出したタスク１の９並列での実行時間の予測値を１つの回路２の構成時間で除することで、回路２の構成数（”４”）を算出することで、ＦＰＧＡに回路２を構成する数を決定する（図５（ｃ））。すなわち、後続のタスクを実行する回路の構成数の初期値は、回路の構成時間が先行のタスクの実行時間の予測値にほぼ等しくなるように決められる。
【００６２】
実行時間予測部１０は、実行時間保持テーブル２２からタスク２の実行時間（１並列でのタスク２の実行時間）を読み出す。実行時間予測部１０は、読み出した実行時間の平均値を算出し、算出した平均値を１並列でのタスク２の実行時間の予測値とする。実行時間予測部１０は、１並列でのタスク２の実行時間の予測値を、構成時間予測部１２が算出した回路２の構成数（”４”）で除することで、タスク２の４並列での実行時間の予測値を算出する。
【００６３】
次に、制御部１６は、タスク１を実行するアプリケーションプログラムを起動してタスク１を開始するとともに、回路２の回路情報をＨＤＤからＦＰＧＡに転送させる指示をＤＭＡＣに発行する。そして、タスク１の実行と並行して、回路２がＦＰＧＡに構成される（図５（ｄ））。
【００６４】
次に、制御部１６は、タスク１の完了時刻が、回路２のＦＰＧＡへの構成の完了時刻に対して早いか遅いかに応じて、回路２のＦＰＧＡへの構成数を調整する制御を実行する（図５（ｅ））。タスク１の完了に基づいて、タスク１を実行するアプリケーションプログラムが停止される。なお、タスク１の実行に伴ってタスク２の実行時間が変化する場合、すなわち、タスク１とタスク２の間で依存性がある場合、回路２のＦＰＧＡへの構成数は、タスク２の実行時間の変化も考慮して調整される。回路２のＦＰＧＡへの構成数を調整する例は、図６から図１０で説明する。
【００６５】
タスク１の実行が完了した後、実行時間予測部１０は、タスク１の実行に掛かった時間にタスク１の並列数を乗じて、タスク１の１回路当たりの実行時間（１並列でのタスク１の実行時間）を算出し、算出した実行時間を実行時間保持テーブル２２に格納する。タスク１の実行の完了に前後して、回路２のＦＰＧＡへの構成が完了する。
【００６６】
次に、構成時間予測部１２は、回路３の回路情報のサイズと、ＨＤＤからＦＰＧＡへのデータ転送速度とに基づいて、回路３の回路情報のＨＤＤからＦＰＧＡへの転送に掛かる転送時間（１つの回路３の構成時間）を構成時間保持テーブル２４から読み出す。構成数決定部１４は、実行時間予測部１０が算出したタスク２の４並列での実行時間の予測値を１つの回路３の構成時間で除し、回路３の構成数（”４”）を算出することで、ＦＰＧＡに回路３を構成する数を決定する（図５（ｆ））。
【００６７】
実行時間予測部１０は、実行時間保持テーブル２２からタスク３の実行時間（１並列でのタスク３の実行時間）を読み出す。実行時間予測部１０は、読み出した実行時間の平均値を算出し、算出した平均値を１並列でのタスク３の実行時間の予測値とする。実行時間予測部１０は、１並列でのタスク３の実行時間の予測値を、構成時間予測部１２が算出した回路３の構成数（”４”）で除することで、タスク３の４並列での実行時間の予測値を算出する。
【００６８】
次に、制御部１６は、タスク２を実行するアプリケーションプログラムを起動するとともに、回路３の回路情報をＨＤＤからＦＰＧＡに転送させる指示をＤＭＡＣに発行する。そして、タスク２の実行に並行して、回路３のＦＰＧＡへの構成が実行される（図５（ｇ））。
【００６９】
次に、制御部１６は、タスク２の実行の完了時刻が、回路３のＦＰＧＡへの構成の完了時刻に対して早いか遅いかに応じて、回路３のＦＰＧＡへの構成数を調整する制御を実行する（図５（ｈ））。タスク２の完了に基づいて、タスク２を実行するアプリケーションプログラムが停止される。なお、タスク２の実行に伴ってタスク３の実行時間が変化する場合、すなわち、タスク２とタスク３の間で依存性がある場合、回路３のＦＰＧＡへの構成数は、タスク３の実行時間の変化も考慮して調整される。
【００７０】
タスク２の実行が完了した後、実行時間予測部１０は、タスク２の実行に掛かった時間にタスク２の並列数を乗じて、タスク２の１回路当たりの実行時間（１並列でのタスク２の実行時間）を算出し、算出した実行時間を実行時間保持テーブル２２に格納する。タスク２の実行の完了に前後して、回路３のＦＰＧＡへの構成が完了する。
【００７１】
次に、制御部１６は、タスク３を実行するアプリケーションプログラムを起動し、タスク３の実行が開始される。図５に示す例では、タスク３に続いて実行されるタスクは存在しないため、タスク３の完了に基づいて、ＦＰＧＡによる処理が完了する（図５（ｉ））。タスク３の完了に基づいて、タスク３を実行するアプリケーションプログラムが停止される。
【００７２】
図６は、図３に示すサーバＳＶ２の動作の一例を示す。図６では、図５と同様に、９個の回路１がＦＰＧＡに構成された後、回路１を使用したタスク１の実行と、４個の回路２のＦＰＧＡへの構成が並列に実行され、タスク１が完了した後、回路２を使用してタスク２が実行される。すなわち、図６に示す動作は、回路３のＦＰＧＡへの構成と、回路３を使用したタスク３が実行されないことを除き、図５に示す動作と同様である。
【００７３】
まず、サーバＳＶ２のＣＰＵは、構成時間保持テーブル２４を参照することで、１個の回路１のＦＰＧＡへの構成時間が１Ｔであると予測し、実行時間保持テーブル２２を参照することで、タスク１の１並列での実行時間が８１Ｔであると予測する。ここで、時間Ｔは、説明を分かりやすくするために設けた基準時間であり、実際の動作では、回路の構成およびタスクの実行が、時間Ｔ刻みで実行されるとは限らない。
【００７４】
ＣＰＵは、式（１）を用いて、回路１の理想数”９”（ＳＱＲＴ（８１Ｔ／１ＢＬＫ））を算出し、９個の回路１をＦＰＧＡに構成する（図６（ａ））。また、ＣＰＵは、タスク１の９並列での実行時間が９Ｔ（＝８１Ｔ／９ＢＬＫ）であると予測する（図６（ｂ））。
【００７５】
ＣＰＵは、構成時間保持テーブル２４を参照することで、１個の回路２のＦＰＧＡへの構成時間が２Ｔであると予測し、実行時間保持テーブル２２を参照することで、タスク２の１並列での実行時間が８Ｔであると予測する。ＣＰＵは、タスク１の９並列での実行時間９Ｔの間に配置可能な回路２の数を算出し、４個の回路２のＦＰＧＡへの構成を決定する（図６（ｃ））。また、ＣＰＵは、タスク２の４並列での実行時間が２Ｔ（＝８Ｔ／４ＢＬＫ）であると予測する（図６（ｄ））。
【００７６】
一方、実際の動作では、タスク１の実行時間は予測より短い５Ｔであった（図６（ｅ））。ＣＰＵは、実行時間５Ｔに基づいて、タスク１の１並列での実行時間４５Ｔ（５Ｔ×９ＢＬＫ）を算出し、算出した実行時間４５Ｔを実行時間保持テーブル２２に格納する。ＣＰＵは、タスク１の完了に基づいて、タスク２の実行時間を再予測する。これは、タスク１とタスク２の間で依存性がある場合、タスク１の実行結果によりタスク２の処理量が変わり、タスク２の実行時間が変わる可能性があるためである。図６に示す例では、タスク１とタスク２の間で依存性がないため、タスク２の１並列での実行時間は当初予測した実行時間（８Ｔ）と同じである。
【００７７】
ＣＰＵは、式（１）を用いて、回路２の理想数”２”（ＳＱＲＴ（８Ｔ／２ＢＬＫ））を算出し、タスク１が完了した時点で、ＦＰＧＡに構成された回路２の数が理想数以上であると判定する。このため、ＣＰＵは、タスク１が完了した時点で回路情報をＦＰＧＡに転送中の３個目の回路２までＦＰＧＡに構成し、タスク２の並列数は”３”になる（図６（ｆ））。３並列で実行されたタスク２は、２．７Ｔ（＝８Ｔ／３ＢＬＫ）後に完了する。ＣＰＵは、実行時間２．７Ｔに基づいて、タスク２の１並列での実行時間８Ｔ（２．７Ｔ×３ＢＬＫ）を算出し、算出した実行時間８Ｔを実行時間保持テーブル２２に格納し、タスク１、２の処理を完了する。
【００７８】
これに対して、当初予測したタスク２の並列数”４”を変えない場合、回路２の構成動作は、タスク１が完了した後も継続される（図６（ｇ））。そして、ＣＰＵは、４個の回路２がＦＰＧＡに構成された後、タスク２の実行を開始する。この場合、タスク２は４並列で実行されるため、タスク２の実行時間は２Ｔ（８Ｔ／４ＢＬＫ）になる（図６（ｈ））。したがって、タスク２の並列数をタスク１の完了時刻に応じて変える場合、タスク２の完了時刻は、タスク２の並列数を変えない場合に比べて、１．３Ｔ短縮することができる（図６（ｉ））。
【００７９】
図６に示すように、先行タスクの実行が、後続タスクを実行する後続回路のＦＰＧＡへの構成の完了前に完了し、先行タスクが完了した時点で後続回路のＦＰＧＡへの構成数が理想数に到達している場合がある。この場合、先行タスクが完了した時点でＦＰＧＡに構成された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を減らすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【００８０】
図７は、図３に示すサーバＳＶ２の動作の別の例を示す。図６と同一または同様の動作については、詳細な説明は省略する。図７では、１並列での実行時間が５６Ｔのタスク１と、１並列での実行時間が６４Ｔのタスク２が順次実行される。１個の回路１のＦＰＧＡへの構成時間は１Ｔであり、１個の回路２のＦＰＧＡへの構成時間は１Ｔである（図７（ａ）、（ｂ））。ＣＰＵは、タスク１の８並列での実行時間が７Ｔ（＝５６Ｔ／８ＢＬＫ）であると予測し、タスク２の８並列での実行時間が８Ｔ（＝６４Ｔ／８ＢＬＫ）であると予測する（図７（ｃ）、（ｄ））。
【００８１】
実際の動作では、タスク１の実行時間は、当初の予測通り７Ｔであった（図７（ｅ））。一方、ＣＰＵは、タスク１とタスク２の間で依存性によりタスク２の処理量が増え、タスク２の１並列での実行時間が６４Ｔから１００Ｔに延びると、タスク１の完了時に予測する（図７（ｆ））。例えば、タスク２で実行される処理の回数が、タスク１で実行される処理により決まる場合、タスク２の処理量は、タスク１の処理結果により変化する。ここで、タスク２で実行される処理の回数は、タスク２を実行するアプリケーションプログラムに記述されたループ回数等である。
【００８２】
ＣＰＵは、式（１）を用いて、回路２の理想数”１０”（ＳＱＲＴ（１００Ｔ／１ＢＬＫ））を算出し、タスク１が完了した時点で、ＦＰＧＡに構成された回路２の数が理想数より少ないと判定する。このため、図７に斜線枠で示すように、ＣＰＵは、理想数が”１０”になるまで、回路２をＦＰＧＡに構成する（図７（ｇ））。そして、ＣＰＵは、１０個の回路２をＦＰＧＡに構成した後、タスク２を１０並列で実行する。タスク２は、１０Ｔ（＝１００Ｔ／１０ＢＬＫ）後に完了する（図７（ｈ））。ＣＰＵは、実行時間１０Ｔに基づいて、タスク２の１並列での実行時間１００Ｔ（１０Ｔ×１０ＢＬＫ）を算出し、算出した実行時間１００Ｔを実行時間保持テーブル２２に格納し、タスク１、２の処理を完了する。
【００８３】
これに対して、当初予測したタスク２の並列数”８”を変えない場合、タスク２は、８個の回路２がＦＰＧＡに構成された後に実行される（図７（ｉ））。この場合、タスク２は８並列で実行されるため、タスク２の実行時間は１２．５Ｔ（１００Ｔ／８ＢＬＫ）になる（図７（ｊ））。したがって、タスク２の並列数をタスク１の完了時刻に応じて変える場合で、タスク２の１並列での実行時間がタスク１の処理に応じて延びる場合、タスク２の完了時刻は、タスク２の並列数を変えない場合に比べて、０．５Ｔ短縮することができる（図７（ｋ））。
【００８４】
図７に示すように、先行タスクの実行が、後続タスクを実行する後続回路のＦＰＧＡへの構成の完了する前に完了し、先行タスクと後続タスクとに依存性があり、先行タスクが完了した時点で後続回路のＦＰＧＡへの構成数が理想数に到達していない場合がある。この場合、後続回路が理想数まで構成された後、後続タスクを実行することで、当初の並列数で後続のタスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が増える場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【００８５】
図８は、図３に示すサーバＳＶ２の動作の別の例を示す。図６または図７と同一または同様の動作については、詳細な説明は省略する。図８では、１並列での実行時間が７２Ｔのタスク１と、１並列での実行時間が７２Ｔのタスク２が順次実行される。１個の回路１のＦＰＧＡへの構成時間は１Ｔであり、１個の回路２のＦＰＧＡへの構成時間は２Ｔである（図８（ａ）、（ｂ））。ＣＰＵは、タスク１の８並列での実行時間が９Ｔ（＝７２Ｔ／８ＢＬＫ）であると予測し、タスク２の４並列での実行時間が１８Ｔ（＝７２Ｔ／４ＢＬＫ）であると予測する（図８（ｃ）、（ｄ））。
【００８６】
実際の動作では、タスク１の実行時間は、当初の予測より短い７Ｔであった（図８（ｅ））。ＣＰＵは、式（１）を用いて、回路２の理想数”６”（ＳＱＲＴ（７２Ｔ／２ＢＬＫ））を算出し、タスク１が完了した時点で、ＦＰＧＡに構成された回路２の数が理想数より少ないと判定する。このため、図８に斜線枠で示すように、ＣＰＵは、理想数が”６”になるまで、回路２をＦＰＧＡに構成する（図８（ｇ））。そして、ＣＰＵは、６個の回路２をＦＰＧＡに構成した後、タスク２を６並列で実行する。タスク２は、１２Ｔ（＝７２Ｔ／６ＢＬＫ）後に完了する（図８（ｈ））。ＣＰＵは、実行時間１２Ｔに基づいて、タスク２の１並列での実行時間７２Ｔ（１２Ｔ×６ＢＬＫ）を算出し、算出した実行時間７２Ｔを実行時間保持テーブル２２に格納し、タスク１、２の処理を完了する。
【００８７】
これに対して、当初予測したタスク２の並列数”４”を変えない場合、タスク２は、４個の回路２がＦＰＧＡに構成された後に実行される（図８（ｉ））。この場合、タスク２は４並列で実行されるため、タスク２の実行時間は１８Ｔ（７２Ｔ／４ＢＬＫ）になる（図８（ｊ））。したがって、タスク２の並列数をタスク１の完了時刻に応じて変える場合で、タスク１とタスク２の間で依存性がない場合、タスク２の完了時刻は、タスク２の並列数を変えない場合に比べて、２Ｔ短縮することができる（図８（ｋ））。
【００８８】
図８に示すように、先行タスクの実行が、後続タスクを実行する後続回路のＦＰＧＡへの構成の完了する前に完了し、先行タスクと後続タスクとに依存性がなく、先行タスクが完了した時点で後続回路のＦＰＧＡへの構成数が理想数に到達していない場合がある。この場合、後続回路が理想数まで構成された後、後続タスクを実行することで、当初の並列数で後続のタスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【００８９】
図９は、図３に示すサーバＳＶ２の動作の別の例を示す。図６と同一または同様の動作については、詳細な説明は省略する。図９では、１並列での実行時間が３２Ｔのタスク１と、１並列での実行時間が６４Ｔのタスク２が順次実行される。１個の回路１のＦＰＧＡへの構成時間は２Ｔであり、１個の回路２のＦＰＧＡへの構成時間は１Ｔである（図９（ａ）、（ｂ））。ＣＰＵは、タスク１の４並列での実行時間が８Ｔ（＝３２Ｔ／４ＢＬＫ）であると予測し、タスク２の８並列での実行時間が８Ｔ（＝６４Ｔ／８ＢＬＫ）であると予測する（図９（ｃ）、（ｄ））。
【００９０】
実際の動作では、タスク１の実行時間は、当初の予測より延び、８個の回路２のＦＰＧＡへの構成後もタスク１の実行は継続される。ＣＰＵは、タスク１の実行時間を再予測し、１０Ｔを得る（図９（ｅ））。例えば、タスク１の実行時間は、８個の回路２のＦＰＧＡへの構成が完了した時点で、タスク１の全体量に対する完了したタスク１の部分量の比率に基づいて再予測される。タスク１の全体量が”１００”で、８個の回路２のＦＰＧＡへの構成が完了した時点で完了済みのタスク１の部分量が”８０”である場合、全体量を完了するまでの実行時間は、（１００／８０）×（現在までの実行時間）により算出される。
【００９１】
ＣＰＵは、タスク１の実行時間１０Ｔの間に配置可能な回路２の数（１０個）を算出する（図９（ｆ））。タスク１とタスク２の間で依存性がないため、タスク２の１並列での実行時間は、当初の予測と同じ６４Ｔである。ＣＰＵは、式（１）を用いて、回路２の理想数”８”（ＳＱＲＴ（６４Ｔ／１ＢＬＫ））を算出し、タスク１が完了した時点で、ＦＰＧＡに構成可能な回路２の数が理想数より多いと判定する。このため、図９に斜線枠で示すように、ＣＰＵは、タスク１が完了した時点で回路情報をＦＰＧＡに転送中の回路２までＦＰＧＡに構成し、タスク２の並列数は”１０”になる。１０並列で実行されたタスク２は、６．４Ｔ（＝６４Ｔ／１０ＢＬＫ）後に完了する（図９（ｇ））。ＣＰＵは、実行時間６．４Ｔに基づいて、タスク２の１並列での実行時間６４Ｔ（６．４Ｔ×１０ＢＬＫ）を算出し、算出した実行時間６４Ｔを実行時間保持テーブル２２に格納し、タスク１、２の処理を完了する。
【００９２】
これに対して、当初予測したタスク２の並列数”８”を変えない場合、タスク２は、タスク１の完了後に実行される（図９（ｈ））。この場合、タスク２は８並列で実行されるため、タスク２の実行時間は８Ｔ（６４Ｔ／８ＢＬＫ）になる（図９（ｉ））。したがって、タスク２の並列数をタスク１の完了時刻に応じて変える場合、タスク２の完了時刻は、タスク２の並列数を変えない場合に比べて、１．６Ｔ短縮することができる（図９（ｊ））。
【００９３】
図９に示すように、後続タスクを実行する後続回路のＦＰＧＡへの構成が先行タスクが完了する前に完了し、再予測した先行タスクの完了時刻までに、理想数以上の後続回路がＦＰＧＡに構成可能な場合がある。この場合、先行タスクが完了するまで後続回路を配置し、配置された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの完了時刻が延び、かつ後続タスクの処理量が変わらず、先行タスクが完了するまでに後続回路の構成数を増やすことができる場合、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【００９４】
なお、図９に示す実際の動作において、回路２の構成の完了に対して、タスク１が僅かに遅れて完了した場合（例えば、タスク１の実行時間＝１０．２Ｔ）、タスク１の実行時間の間に配置可能な回路２の数は、当初の８個と同じになる。この場合、サーバＳＶ２は、図９に示す予想される動作と同様に動作する。
【００９５】
図１０は、図３に示すサーバＳＶ２の動作のさらなる別の例を示す。図６および図９と同一または同様の動作については、詳細な説明は省略する。図１０における予測される動作は、図９における予測される動作と同じである。
【００９６】
実際の動作では、タスク１の実行時間は、当初の予測より延び、８個の回路２のＦＰＧＡへの構成後もタスク１の実行は継続される。ＣＰＵは、タスク１の実行時間を再予測し、１０Ｔを得る（図１０（ａ））。ＣＰＵは、タスク１の実行時間１０Ｔの間に配置可能な回路２の数（１０個）を算出する。図１０に示す例では、タスク１とタスク２の間で依存性があり、タスク２の１並列での実行時間は、当初の予測より長い１２０Ｔである。
【００９７】
ＣＰＵは、式（１）を用いて、回路２の理想数”１１”（ＳＱＲＴ（１２０Ｔ／１ＢＬＫ））を算出し、タスク１が完了した時点で、ＦＰＧＡに構成される回路２の数（”１０”）が理想数より少ないと判定する。このため、図１０に斜線枠で示すように、ＣＰＵは、タスク１の完了後も回路２をＦＰＧＡに構成し、タスク２の並列数は”１１”になる（図１０（ｂ））。１１並列で実行されたタスク２は、１０．９Ｔ（＝１２０Ｔ／１１ＢＬＫ）後に完了する（図１０（ｃ））。ＣＰＵは、実行時間１０．９Ｔに基づいて、タスク２の１並列での実行時間１１９．９Ｔ（１０．９Ｔ×１１ＢＬＫ）を算出し、算出した実行時間１１９．９Ｔを実行時間保持テーブル２２に格納し、タスク１、２の処理を完了する。
【００９８】
これに対して、当初予測したタスク２の並列数”８”を変えない場合、タスク２は、タスク１の完了後に実行される（図１０（ｄ））。この場合、タスク２は８並列で実行されるため、タスク２の実行時間は１５Ｔ（１２０Ｔ／８ＢＬＫ）になる（図１０（ｅ））。したがって、タスク２の並列数をタスク１の完了時刻に応じて変える場合、タスク２の完了時刻は、タスク２の並列数を変えない場合に比べて、３．１Ｔ短縮することができる（図１０（ｆ））。
【００９９】
図１０に示すように、後続タスクを実行する後続回路のＦＰＧＡへの構成が先行タスクが完了する前に完了し、再予測した先行タスクの完了時刻までに、理想数の後続回路がＦＰＧＡに構成されない場合がある。この場合、先行タスクの完了後、後続回路を理想数まで配置し、配置された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの完了時刻が延び、かつ後続タスクの処理量が増える場合、後続回路を理想数まで構成することで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【０１００】
図１１は、図３に示すサーバＳＶ２におけるタスクの処理時間を最適化する動作の一例を示す。図１１に示す処理は、サーバＳＶ２のＣＰＵが制御プログラムを実行することで実現される。すなわち、図４は、情報処理装置の制御方法および情報処理装置の制御プログラムによる処理の一例を示す。
【０１０１】
まず、ステップＳ１０において、制御部１６は、変数Ｎを”１”に設定する。次に、ステップＳ１２において、構成時間予測部１２は、１個の回路ＮのＦＰＧＡへの構成に掛かる構成時間ｔＣＦ（Ｎ）を予測する。例えば、回路Ｎは、図５に示す回路１に対応する。実行時間予測部１０は、１個の回路Ｎを使用したタスクの実行時間ｔＥＸＣ（Ｎ）を予測する。構成時間ｔＣＦ（Ｎ）は、構成時間保持テーブル２４を参照して予測され、実行時間ｔＥＸＣ（Ｎ）は、実行時間保持テーブル２２を参照して予測される。
【０１０２】
次に、ステップＳ１４において、構成数決定部１４は、式（１）を用いて、回路Ｎの理想的な構成数である理想数ｐｉ（Ｎ）を算出する。次に、ステップＳ１６において、構成時間予測部１２は、理想数ｐｉ（Ｎ）の回路ＮをＦＰＧＡに構成するために掛かる構成時間ｔＣＦｐ（Ｎ）を算出する。実行時間予測部１０は、理想数ｐｉ（Ｎ）でのタスクの実行時間ｔＥＸＣｐ（Ｎ）を算出する。
【０１０３】
次に、ステップＳ１８において、制御部１６は、理想数ｐｉ（Ｎ）の回路ＮをＦＰＧＡに構成するために、回路Ｎの回路情報をＨＤＤからＦＰＧＡに転送させる指示をＤＭＡＣに発行する。ＤＭＡＣは、理想数ｐｉ（Ｎ）の回路Ｎの回路情報をＨＤＤからＦＰＧＡに順次転送する。なお、回路Ｎの回路情報のＨＤＤからＦＰＧＡへの転送は、ＤＭＡＣを用いずに、制御部１６またはＣＰＵの他の機能部が実行してもよい。
【０１０４】
次に、ステップＳ２０において、制御部１６は、理想数ｐｉ（Ｎ）の回路ＮがＦＰＧＡに構成されるまで待ち、理想数ｐｉ（Ｎ）の回路ＮがＦＰＧＡに構成された場合、処理をステップＳ２２に移行する。
【０１０５】
ステップＳ２２において、構成時間予測部１２は、１個の回路Ｎ＋１のＦＰＧＡへの構成に掛かる構成時間ｔＣＦ（Ｎ＋１）を予測する。例えば、回路Ｎ＋１は、図５に示す回路２に対応する。実行時間予測部１０は、１個の回路Ｎ＋１を使用したタスクの実行時間ｔＥＸＣ（Ｎ＋１）を予測する。構成時間ｔＣＦ（Ｎ＋１）は、構成時間保持テーブル２４を参照して予測され、実行時間ｔＥＸＣ（Ｎ＋１）は、実行時間保持テーブル２２を参照して予測される。
【０１０６】
次に、ステップＳ２４において、構成数決定部１４は、理想数ｐｉ（Ｎ）の回路を用いて実行されるタスクＮの実行時間中に配置可能な回路Ｎ＋１の数を算出し、算出した数を回路Ｎ＋１の並列数ｐ（Ｎ＋１）とする。並列数ｐ（Ｎ＋１）は、理想数ｐｉ（Ｎ＋１）とは限らない。
【０１０７】
次に、ステップＳ２６において、構成時間予測部１２は、並列数ｐ（Ｎ＋１）の個数の回路Ｎ＋１をＦＰＧＡへの構成に掛かる構成時間ｔＣＦｐ（Ｎ＋１）を算出する。実行時間予測部１０は、並列数ｐ（Ｎ＋１）でのタスクの実行時間ｔＥＸＣｐ（Ｎ＋１）を算出する。
【０１０８】
次に、ステップＳ２８において、制御部１６は、理想数ｐｉ（Ｎ）の回路ＮにタスクＮを実行させる。また、並列数ｐ（Ｎ＋１）の回路Ｎ＋１をＦＰＧＡに構成するために、回路Ｎ＋１の回路情報をＨＤＤからＦＰＧＡに転送させる指示をＤＭＡＣに発行する。ＤＭＡＣは、並列数ｐ（Ｎ＋１）に対応する個数の回路Ｎの回路情報をＨＤＤからＦＰＧＡに順次転送する。なお、回路Ｎ＋１の回路情報のＨＤＤからＦＰＧＡへの転送は、ＤＭＡＣを用いずに、制御部１６またはＣＰＵの他の機能部が実行してもよい。この場合、制御部１６またはＣＰＵの他の機能部が、先行タスクの実行中に、所定数の後続回路をＦＰＧＡに順次構成する構成制御部として機能する。
【０１０９】
次に、ステップＳ１００において、制御部１６は、タスクＮの完了時刻が、回路Ｎ＋１のＦＰＧＡへの構成の完了時刻に対して早いか遅いかに応じて、回路Ｎ＋１のＦＰＧＡへの構成数（すなわち、並列数ｐ（Ｎ＋１））を調整する制御を実行する。ステップＳ１００の例は、図１２に示される。
【０１１０】
ステップＳ１００の処理の完了後、ステップＳ３０において、制御部１６は、回路Ｎ＋１によるタスクＮ＋１が、連続して実行される一連のタスクの最後であるか否かを判定する。タスクＮ＋１が最後のタスクでない場合、処理はステップＳ３２に移行され、タスクＮ＋１が最後のタスクである場合、処理はステップＳ３６に移行される。
【０１１１】
ステップＳ３２において、制御部１６は、変数Ｎを”１”増加させる。これにより、タスクＮ＋１（後続タスク）がタスクＮ（先行タスク）として扱われ、回路Ｎ＋１（後続回路）が回路Ｎ（先行回路）として扱われる。次に、ステップＳ３４において、実行時間予測部１０は、ステップＳ１００で調整した並列数での回路Ｎ（調整時は回路Ｎ＋１）が実行するタスクＮの実行時間ｔＥＸＣｐ（Ｎ）を予測し、処理をステップＳ２２に移行する。一方、ステップＳ３６において、制御部１６は、回路Ｎ＋１にタスクＮ＋１を実行させ、連続して実行される一連のタスクによる処理を完了する。
【０１１２】
図１２は、図１１に示すステップＳ１００の処理の一例を示す。まず、ステップＳ１０２において、制御部１６は、タスクＮの実行が完了したか否かを判定する。タスクＮの実行が完了していない場合、処理はステップＳ１０４に移行され、タスクＮの実行が完了した場合、処理はステップＳ１１６に移行される。
【０１１３】
ステップＳ１０４において、制御部１６は、回路Ｎ＋１のＦＰＧＡへの構成が完了したか否かを判定する。回路Ｎ＋１のＦＰＧＡへの構成が完了した場合、処理はステップＳ１０６に移行され、回路Ｎ＋１のＦＰＧＡへの構成が完了していない場合、処理はステップＳ１０２に戻る。換言すれば、ステップＳ１０２、Ｓ１０４において、回路Ｎ＋１のＦＰＧＡへの構成が完了する前に、タスクＮが完了した場合、処理はステップＳ１１６に移行する。一方、タスクＮが完了する前に、回路Ｎ＋１のＦＰＧＡへの構成が完了した場合、処理はステップＳ１０６に移行する。
【０１１４】
ステップＳ１０６において、実行時間予測部１０は、並列数ｐｉ（Ｎ）の回路ＮによるタスクＮの実行時間ｔＥＸＣｐ（Ｎ）を再予測する。次に、ステップＳ１０８において、構成数決定部１４は、ステップＳ１０６で予測されたタスクＮの実行時間ｔＥＸＣｐ（Ｎ）を回路Ｎ＋１の構成時間ｔＣＦ（Ｎ＋１）で除し、回路Ｎ＋１の並列数ｐ（Ｎ＋１）を算出し直す。
【０１１５】
次に、ステップＳ１１０において、制御部１６は、ステップＳ１０８で算出した並列数ｐ（Ｎ＋１）が、当初算出した並列数ｐ（Ｎ＋１）より大きいか否かを判定する。ステップＳ１０８で算出した並列数ｐ（Ｎ＋１）が、図１１のステップＳ２４で算出した当初の並列数ｐ（Ｎ＋１）より大きい場合、回路Ｎ＋１をＦＰＧＡに追加するため、処理はステップＳ１１２に移行される。ステップＳ１０８で算出した並列数ｐ（Ｎ＋１）が、図１１のステップＳ２４で算出した当初の並列数ｐ（Ｎ＋１）以下である場合、回路Ｎ＋１をＦＰＧＡに追加しないため、処理はステップＳ１１４に移行する。例えば、回路Ｎ＋１の構成の完了に対して、タスクＮが僅かに遅れて完了した場合で、タスクＮとタスクＮ＋１とに依存性がない場合、並列数ｐ（Ｎ＋１）は、図１１のステップＳ２４で算出した当初の並列数ｐ（Ｎ＋１）と同じになる。この場合、処理はステップＳ１１４に移行される。
【０１１６】
ステップＳ１１２において、制御部１６は、ＦＰＧＡに構成された回路Ｎ＋１がｐ（Ｎ＋１）個になるまで、回路Ｎ＋１をＦＰＧＡに構成する。次に、ステップＳ１１４において、制御部１６は、ｐ（Ｎ＋１）個の回路ＮがＦＰＧＡに構成されるのを待ち、ｐ（Ｎ＋１）個の回路Ｎ＋１がＦＰＧＡに構成された場合、処理をステップＳ１１６に移行する。
【０１１７】
ステップＳ１１６において、実行時間予測部１０は、タスクＮ＋１の１並列での実行時間ｔＥＸＣ（Ｎ＋１）を再予測する。これにより、タスクＮとタスクＮ＋１との間に依存関係があり、タスクＮの実行結果に応じてタスクＮ＋１の処理量が変化する場合にも、タスクＮの実行結果に基づいて、タスクＮ＋１の正しい実行時間を予測することができる。
【０１１８】
次に、ステップＳ１１８において、構成数決定部１４は、タスクＮ＋１の１並列での実行時間ｔＥＸＣ（Ｎ＋１）と、１個の回路Ｎ＋１の構成時間ｔＣＦ（Ｎ＋１）とを式（１）に代入して、タスクＮ＋１の理想数ｐｉ（Ｎ＋１）を算出する。ここで、タスクＮ＋１の１並列での実行時間ｔＥＸＣ（Ｎ＋１）は、ステップＳ１１６で予測した値が使用され、１個の回路Ｎ＋１のＦＰＧＡへの構成に掛かる構成時間ｔＣＦ（Ｎ＋１）は、図１１のステップＳ２２で予測した値が使用される。ステップＳ１１６で予測した実行時間ｔＥＸＣ（Ｎ＋１）を用いることで、タスクＮとタスクＮ＋１とに依存性があり、タスクＮの実行結果に応じてタスクＮ＋１の処理量が変わる場合にも、式（１）により理想数ｐｉ（Ｎ＋１）を算出することができる。
【０１１９】
次に、ステップＳ１２０において、制御部１６は、ステップＳ１１６で算出したタスクＮ＋１の１並列での実行時間ｔＥＸＣ（Ｎ＋１）が、図１１のステップＳ２２で予測した当初の実行時間ｔＥＸＣ（Ｎ＋１）より長いか否かを判定する。タスクＮとタスクＮ＋１とに依存性がある場合、実行時間ｔＥＸＣ（Ｎ＋１）は、当初の実行時間ｔＥＸＣ（Ｎ＋１）に対して変化する。ステップＳ１１６で算出した実行時間ｔＥＸＣ（Ｎ＋１）が、図１１のステップＳ２２で予測した当初の実行時間ｔＥＸＣ（Ｎ＋１）より長い場合、理想数ｐｉ（Ｎ＋１）の回路Ｎ＋１をＦＰＧＡに構成するため、処理はステップＳ１２６に移行される。ステップＳ１１６で算出した実行時間ｔＥＸＣ（Ｎ＋１）が、図１１のステップＳ２２で予測した当初の実行時間ｔＥＸＣ（Ｎ＋１）以下である場合、処理はステップＳ１２２に移行される。
【０１２０】
ステップＳ１２２において、制御部１６は、理想数ｐｉ（Ｎ＋１）以上の回路Ｎ＋１をＦＰＧＡに構成したか否かを判定する。理想数ｐｉ（Ｎ＋１）以上の回路Ｎ＋１をＦＰＧＡに構成した場合、回路Ｎ＋１のＦＰＧＡへの構成が完了しているため、処理はステップＳ１２４に移行する。理想数ｐｉ（Ｎ＋１）以上の回路Ｎ＋１をＦＰＧＡに構成していない場合、理想数ｐｉ（Ｎ＋１）の回路Ｎ＋１をＦＰＧＡに構成するため、処理はステップＳ１２６に移行する。
【０１２１】
ステップＳ１２４において、制御部１６は、ＦＰＧＡに現在までに構成された回路Ｎ＋１の数を並列数ｐ（Ｎ＋１）とし、処理を図１１のステップＳ３０に移行する。ステップＳ１２６において、制御部１６は、ステップＳ１１８で算出した理想数ｐｉ（Ｎ＋１）を、タスクＮ＋１の並列数ｐ（Ｎ＋１）とする。次に、ステップＳ１２８において、制御部１６は、ＦＰＧＡに構成された回路Ｎ＋１がｐ（Ｎ＋１）個になるまで、回路Ｎ＋１をＦＰＧＡに構成し、処理を図１１のステップＳ３０に移行する。
【０１２２】
以上、図３から図１２に示す実施形態においても、図１および図２に示す実施形態と同様の効果を得ることができる。すなわち、先行タスクの実行のバックグラウンドで後続回路をＦＰＧＡに構成し、タスクを順次実行する情報処理装置において、タスクのトータルの処理時間を従来に比べて短縮することができる。換言すれば、後続タスクを実行する回路の構成数を当初算出した構成数に対して減らすことで、構成数を当初算出した構成数から変えない場合に比べて、タスクの実行時間の合計を短縮することができる。また、後続タスクを実行する回路の構成数を当初算出した構成数に対して増やすことで、構成数を当初算出した構成数から変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【０１２３】
さらに、図３から図１２に示す実施形態では、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が増える場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの完了時刻が延び、かつ後続タスクの処理量が変わらず、先行タスクが完了するまでに後続回路の構成数を増やすことができる場合、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの完了時刻が延び、かつ後続タスクの処理量が増える場合、後続回路を理想数まで構成することで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。
【０１２４】
構成数決定部１４は、実行時間算出部１０が予測した１並列での実行時間ｔＥＸＣ（Ｎ＋１）を用いることで、理想数ｐｉ（Ｎ＋１）を算出する。これにより、タスクＮとタスクＮ＋１とに依存性があり、タスクＮの実行結果に応じてタスクＮ＋１の処理量が変わる場合にも、式（１）により理想数ｐｉ（Ｎ＋１）を算出することができる。
【０１２５】
構成時間予測部１２により回路情報の転送時間を算出することで、回路情報を転送するバスＢＵＳ等の転送路のデータ転送速度が変化する場合にも、回路情報の正しい転送時間を予測することができる。
【０１２６】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２７】
１…実行時間予測部；２…構成数決定部；３…構成制御部；４…調整部；１０…実行時間予測部；１２…構成時間予測部；１４…構成数決定部；１６…制御部；１７…構成制御部；１８、２０…記憶領域；２２…実行時間保持テーブル；２４…構成時間保持テーブル；２６…記憶領域；ＢＣＰＬ…完了通知；ＢＬＫ…ブロック；ＢＵＳ…バス；ＣＩＦ…通信インタフェース；ＣＩＮＦ…回路情報；ＮＣＮＦ…後続回路の数；ＮＷ…ネットワーク；ＰＡＤ…外部端子；ＳＶ１、ＳＶ２…サーバ；ｔＣＮＦ…構成時間；ＴＣＰＬ…完了通知；ｔＥＸＣ…実行時間；ＭＥＭ…メモリ；ＷＲ…配線部
【図１】
0006642257.tif 000002
【図２】
0006642257.tif 000003
【図３】
0006642257.tif 000004
【図４】
0006642257.tif 000005
【図５】
0006642257.tif 000006
【図６】
0006642257.tif 000007
【図７】
0006642257.tif 000008
【図８】
0006642257.tif 000009
【図９】
0006642257.tif 000010
【図１０】
0006642257.tif 000011
【図１１】
0006642257.tif 000012
【図１２】
0006642257.tif 000013