(57)【要約】【課題】動的部分再構成により論理回路の構成が変更可能な再構成デバイスを有する情報処理装置にて、実行するタスクに対する再構成デバイスの回路割当を適切に行い、処理性能を向上させることができる情報処理装置を提供する。【解決手段】動的部分再構成により回路構成を変更可能な再構成デバイスと、再構成デバイスにおける回路配置を制御する制御部とを有し、制御部が、再構成デバイスに新規タスクに係る処理回路を配置する場合、実行中の既存タスクに係る処理回路で使用している領域と空き領域とを合わせた領域に対する既存タスクに係る処理回路と新規タスクに係る処理回路との回路割当を各タスクの処理の終了予測時間に基づいて決定し、決定した回路割当に従って再構成デバイスに各タスクに係る処理回路を配置する。【選択図】図１
2018063576.tif 000002
【特許請求の範囲】
【請求項１】
論理のプログラム可能な複数の領域を有し、前記領域を動的部分再構成することにより回路構成を変更可能な再構成デバイスと、
実行中の第１のタスクに係る処理回路が配置されている前記再構成デバイスに、前記第１のタスクとは異なる第２のタスクに係る処理回路を前記再構成デバイスに配置する場合、前記再構成デバイスにおける前記第１のタスクに係る処理回路で使用している領域と空き領域とを合わせた領域に対する前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を前記第１のタスク及び前記第２のタスクの処理の終了予測時間に基づいて決定し、決定した回路割当に従って前記再構成デバイスに前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路を配置する制御部とを有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記再構成デバイスにおける前記第１のタスクに係る処理回路で使用している領域と空き領域とを合わせた領域に配置可能な前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との組み合わせの内から前記第１のタスク及び前記第２のタスクの処理の終了予測時間が最短となる組み合わせに基づいて前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を決定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、実行中の前記第１のタスクが複数ある場合、回路性能を変更しても処理時間に対する影響が小さい前記第１のタスクに係る処理回路を回路性能が低い処理回路に変更して前記再構成デバイスの空き領域を増やした後に前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を決定する処理を行うことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記第２のタスクに係る処理回路と同一の処理回路を使用する前記第１のタスクがある場合、前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を回路配置に要する時間を考慮した前記第１のタスク及び前記第２のタスクの処理の終了予測時間に基づいて決定することを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
論理のプログラム可能な複数の領域を有し、前記領域を動的部分再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置の情報処理方法であって、
実行中の第１のタスクに係る処理回路が配置されている前記再構成デバイスに、前記第１のタスクとは異なる第２のタスクに係る処理回路を前記再構成デバイスに配置する場合、前記再構成デバイスにおける前記第１のタスクに係る処理回路で使用している領域と空き領域とを合わせた領域に対する前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を前記第１のタスク及び前記第２のタスクの処理の終了予測時間に基づいて決定し、
決定した回路割当に従って前記再構成デバイスに前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路を配置することを特徴とする情報処理方法。
【請求項６】
論理のプログラム可能な複数の領域を有し、前記領域を動的部分再構成することにより回路構成を変更可能な再構成デバイスを有する情報処理装置のコンピュータに、
実行中の第１のタスクに係る処理回路が配置されている前記再構成デバイスに、前記第１のタスクとは異なる第２のタスクに係る処理回路を前記再構成デバイスに配置する場合、前記再構成デバイスにおける前記第１のタスクに係る処理回路で使用している領域と空き領域とを合わせた領域に対する前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路との回路割当を前記第１のタスク及び前記第２のタスクの処理の終了予測時間に基づいて決定する処理と、
決定した回路割当に従って前記再構成デバイスに前記第１のタスクに係る処理回路と前記第２のタスクに係る処理回路を配置する処理とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
ＣＰＵとプログラム可能な論理回路の構成を変更可能なＦＰＧＡ（Field Programmable Gate Array）とを有し、ハードウェアによる処理に適した処理をＦＰＧＡにより実行する情報処理装置がある。例えば、データ検索処理等のデータ処理の高速化のためにＦＰＧＡアクセラレータが用いられる。ＣＰＵによる処理ではコア数分の並列化に限られるが、ＦＰＧＡによる処理では回路リソースの許す限りパイプライン化や並列化による処理の高速化が可能である。しかし、ＦＰＧＡではパイプライン段数や並列度を大きくし高性能となるほど、必要な演算器数やフリップフロップ数が増大し回路面積が大きくなる。
【０００３】
また、動作中の論理回路の動作を停止させずに、プログラム可能な論理回路の構成を部分的に変更することができる動的部分再構成が可能なＦＰＧＡがある（例えば、特許文献１参照）。動的部分再構成が可能なＦＰＧＡは、他の実行中のタスクを止めずに、空いている領域に新たに実行するタスクに係る回路を動的部分再構成により配置することで、１つのＦＰＧＡで複数のタスクを非同期に実行可能である。
【０００４】
例えば、図１１（Ａ）に示すようなプログラム可能な複数の領域の何れにも回路配置が行われていない初期状態１１０１において、タスクＡの実行が要求されると、動的部分再構成により図１１（Ｂ）に例示するようにタスクＡに係る回路１１０２を配置してタスクＡを実行する。そして、タスクＡの実行中に別のタスクＢの実行が要求されると、動的部分再構成により図１１（Ｃ）に例示するようにタスクＢに係る回路１１０３を配置してタスクＢを実行し、さらに別のタスクＣの実行が要求されると、動的部分再構成により図１１（Ｄ）に例示するようにタスクＣに係る回路１１０４を配置してタスクＣを実行する。
【０００５】
その後、タスクＢが終了すると、図１１（Ｅ）に示すようにタスクＢで使用していた領域を空き領域にする。そして、図１１（Ｅ）に示す状態で、タスクＡ及びタスクＣの実行中に別のタスクＤの実行が要求されると、動的部分再構成により図１１（Ｆ）に例示するようにタスクＤに係る回路１１０５を配置してタスクＤを実行する。このようにして、動的部分再構成が可能なＦＰＧＡは、１つのＦＰＧＡで複数のタスクを非同期に実行することができる。
【０００６】
複数種類のジョブを並行に処理するコンカレント処理を行う際に、ジョブ実行時の各ジョブに対するメモリやディスク等の共有資源の割当量をそのジョブの優先順位に対応するように動的に変化させ配分する画像形成装置が提案されている（例えば、特許文献２参照）。また、新しいプロセスに論理プロセッサを割り当てる際に、そのプロセスとすでに論理プロセッサを割当済のプロセスとの依存関係に応じて物理プロセッサの性能を引き出すように論理プロセッサを割り当てることで、プログラムの実行に最適な資源割当てを実施する計算機システムが提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−１９１３３５号公報
【特許文献２】特開平１１−２０５４９３号公報
【特許文献３】特開２００６−２４１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＦＰＧＡアクセラレータを用いる場合、同一のアクセラレータ回路を用いるタスクであっても、タスク全体の処理量に対するアクセラレータでの処理量が同一であるとは限らない。そのため、アクセラレータの性能がタスクの処理時間に与える影響はタスクによって異なる。したがって、情報処理装置全体での処理性能を向上させるためには、実行するタスクに対してＦＰＧＡの回路リソースを適切に割り当てる必要がある。
【０００９】
しかしながら、動的部分再構成が可能なＦＰＧＡにおいてプログラム可能な領域に余裕がある場合には、処理性能が異なる複数の回路構成の内から高性能な大面積の回路が配置され、ＦＰＧＡの回路リソースが無駄に消費される可能性がある。その結果、後続のタスクが利用できるＦＰＧＡの回路リソースが少なくなり、情報処理装置全体のスループットが低下してしまうことがある。
【００１０】
１つの側面では、動的部分再構成により論理回路の構成が変更可能な再構成デバイスを有する情報処理装置にて、実行するタスクに対する再構成デバイスの回路割当を適切に行い、処理性能を向上させることができる情報処理装置を提供することにある。
【課題を解決するための手段】
【００１１】
情報処理装置の一態様は、論理のプログラム可能な複数の領域を有し、領域を動的部分再構成することにより回路構成を変更可能な再構成デバイスと、再構成デバイスにおける回路配置を制御する制御部とを有する。制御部は、実行中の第１のタスクに係る処理回路が配置されている再構成デバイスに、第２のタスクに係る処理回路を配置する場合、再構成デバイスにおける第１のタスクに係る処理回路で使用している領域と空き領域とを合わせた領域に対する第１のタスクに係る処理回路と第２のタスクに係る処理回路との回路割当を第１のタスク及び第２のタスクの処理の終了予測時間に基づいて決定し、決定した回路割当に従って再構成デバイスに各タスクに係る処理回路を配置する。
【発明の効果】
【００１２】
発明の一態様においては、実行するタスクに対する再構成デバイスの回路割当を適切に行い、情報処理装置全体でのスループットを向上させ処理性能を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態における情報処理装置の構成例を示す図である。
【図２】本実施形態における再構成デバイスでの回路割当を説明する図である。
【図３】本実施形態における再構成デバイスでの回路割当を説明する図である。
【図４】本実施形態における回路割当決定処理の例を示すフローチャートである。
【図５】本実施形態における回路割当決定処理の例を示すフローチャートである。
【図６】本実施形態における回路割当切り替え処理の例を示すフローチャートである。
【図７】本実施形態を適用した場合の処理時間の変化を説明する図である。
【図８】本実施形態における回路割当決定処理の他の例を示すフローチャートである。
【図９】本実施形態における回路割当決定処理の例を示すフローチャートである。
【図１０】本実施形態における回路割当決定処理の例を示すフローチャートである。
【図１１】動的部分再構成が可能なＦＰＧＡにおける回路配置の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面に基づいて説明する。
【００１５】
図１は、本発明の実施形態における情報処理装置の構成例を示す図である。本実施形態における情報処理装置は、ＣＰＵ（Central Processing Unit）１１０、再構成デバイス１２０、及び記憶装置１３０を有し、それらがバス１４０を介して通信可能に接続されている。なお、図１においては、ＣＰＵ１１０、再構成デバイス１２０、及び記憶装置１３０を図示しているが、他の機能部を有していてもよい。
【００１６】
ＣＰＵ１１０は、記憶装置１３０等からプログラムを読み出して実行することで制御部１１１の機能を実現し、情報処理装置を統括的に制御する。例えば、ＣＰＵ１１０の制御部１１１は、実行するプログラムに応じて、再構成デバイス１２０に対して処理の実行を指示したり、ＣＰＵによる演算処理や記憶装置１３０等に対するメモリアクセス処理の実行を制御したりする。
【００１７】
制御部１１１は、回路割当決定処理を行う回路割当決定部１１２、及び回路割当切り替え処理を行う回路割当切り替え部１１３を有する。回路割当決定部１１２及び回路割当切り替え部１１３は、例えば記憶装置１３０等からプログラムを読み出して実行することで実現される。
【００１８】
回路割当決定部１１２は、新規タスクの開始に伴い再構成デバイス１２０への新規タスクに係る処理回路の配置を要求された場合、再構成デバイス１２０における空き領域だけでなく１以上の既存タスクが使用中の領域も考慮して、関係するタスク全体での処理の終了予測時間が短くなる回路割当を決定する。回路割当切り替え部１１３は、回路割当決定部１１２によって決定された回路割当に基づいて再構成デバイス１２０の論理回路を再構成し、再構成後の処理回路での各タスクの実行を指示する。
【００１９】
再構成デバイス１２０は、プログラム可能な複数の領域１２１を有し、動作中の論理回路の動作を停止させずに、プログラム可能な領域の回路構成を部分的に変更することができる電子回路である。すなわち、再構成デバイス１２０は、動的部分再構成により論理回路の構成が変更可能な電子回路である。再構成デバイス１２０は、例えば動的部分再構成が可能なＦＰＧＡである。
【００２０】
記憶装置１３０は、本実施形態における情報処理装置での処理に係る各情報を記憶する。記憶装置１３０は、例えば処理情報１３１、配置情報１３２、回路構成情報１３３、及びプログラム１３４を保持している。処理情報１３１は、実行する新規タスク及び実行中の既存タスクの各タスクについて、タスクにおけるハードウェア処理とソフトウェア処理との割合、再構成デバイス１２０で行う処理の内容、及びタスクの進捗の情報を含む。ここで本実施形態では、各タスクにおいて再構成デバイス１２０で行う処理をハードウェア処理とし、それ以外の処理をソフトウェア処理とする。
【００２１】
配置情報１３２は、再構成デバイス１２０における各タスクの処理回路の配置、及び再構成デバイス１２０における空き領域を示す情報を含む。回路構成情報１３３は、再構成デバイス１２０に各タスクの処理回路を構成するための回路構成情報であり、タスクの各々について回路性能（回路面積）の異なる複数の回路構成情報が保持される。プログラム１３４は、ＣＰＵ１１０により実行されるプログラムであり、回路割当決定処理を実行するためのプログラムや回路割当切り替え処理を実行するためのプログラムを含む。
【００２２】
本実施形態における再構成デバイスでの回路割当を、図２及び図３を参照して説明する。図２（Ａ）に示すように、タスク０及びタスク１で再構成デバイス１２０を使用しており、領域２０１にタスク０に係る処理回路が配置され、領域２０２にタスク１に係る処理回路が配置されているものとする。なお、領域２０３は、使用されていない空き領域である。
【００２３】
この状態で新規タスクの開始に伴い再構成デバイス１２０への新規タスクに係る処理回路の配置が要求されると、回路割当決定部１１２は、既存タスクが使用している領域と空き領域とを合わせた領域に配置可能なその既存タスク及び新規タスクの処理回路をそれぞれ配置する場合の回路割当候補を複数求める。そして、回路割当決定部１１２は、求めた複数の回路割当候補の内からすべてのタスクが終了するまでの処理予測時間が最短となる回路割当を選択し、回路割当切り替え部１１３は、選択された回路割当に従って再構成デバイス１２０の回路構成を再構成する。
【００２４】
新規のタスク２の開始に伴い再構成デバイス１２０へのタスク２に係る処理回路の配置が要求されると、例えば回路割当決定部１１２は、タスク０に係る処理回路が配置されている領域２０１と空き領域２０３とを合わせた領域２０４に配置可能なタスク０及びタスク２に係る処理回路をそれぞれ配置する場合の回路割当候補を複数求める。また、例えば回路割当決定部１１２は、タスク１に係る処理回路が配置されている領域２０２と空き領域２０３とを合わせた領域２０５に配置可能なタスク１及びタスク２に係る処理回路をそれぞれ配置する場合の回路割当候補を複数求める。また、例えば回路割当決定部１１２は、タスク０、１に係る処理回路がそれぞれ配置されている領域２０１、２０２と空き領域２０３とを合わせた領域２０６に配置可能なタスク０〜２に係る処理回路をそれぞれ配置する場合の回路割当候補を複数求める。
【００２５】
ここで、タスク０〜２に係る処理回路において、処理回路のスループットと処理時間とは、図３（Ａ）に示すような関係を有するものとする。図３（Ａ）において、３０１がタスク０に係る処理回路のスループットと処理時間との関係を示し、３０２がタスク１に係る処理回路のスループットと処理時間との関係を示し、３０３がタスク２に係る処理回路のスループットと処理時間との関係を示している。また、３０４が現在実装されているタスク０に係る処理回路に対応し、３０５が現在実装されているタスク１に係る処理回路に対応する。
【００２６】
図３（Ａ）に示した例では、タスク１に係る処理回路は現在の実装で十分に高速化されており、またタスク０に係る処理回路は、処理回路のスループットを下げても処理時間の影響が小さい。そこで本例では、回路割当決定部１１２は、タスク０に係る処理回路が配置されている領域２０１を使用すれば処理時間に対する影響が小さいと判断し、領域２０１と空き領域２０３とを合わせた領域２０４に配置可能なタスク０及びタスク２に係る処理回路をそれぞれ配置する場合の回路割当候補を求める。
【００２７】
それを示したのが図３（Ｂ）である。図３（Ｂ）には、タスク２に係る処理回路の性能を変化させたときのタスク０及びタスク２の処理時間を示しており、３０６がタスク０の残り処理時間を示し、３０７がタスク２の処理時間を示している。この場合には３０８に対応するようにタスク０及びタスク２に係る処理回路をそれぞれ配置すると、すべてのタスクが終了するまでの処理時間が最短となる。
【００２８】
したがって、回路割当決定部１１２は、例えば図２（Ａ）に示すように、８つの単位領域からなる領域２０４において、２つの単位領域からなる領域２０７（又は２１０）にタスク０に係る処理回路を配置し、６つの単位領域からなる領域２０８（又は２０９）にタスク２に係る処理回路を配置するように回路割当を決定する。そして、回路割当切り替え部１１３は、図２（Ｂ）に示すように、時刻２１１〜２１２の期間において、タスク０及びタスク２に係る処理回路を、動的部分再構成により再構成デバイス１２０に再構成してタスク０及びタスク２を実行する。
【００２９】
なお、領域２０９に配置されるタスク２に係る処理回路と、その領域に配置されていたタスク０に係る処理回路との回路構成が同じである場合、タスク２に係る処理回路については再構成せずに既存の処理回路を使用するようにしてもよい。すなわち、図２（Ｃ）に示すように時刻２１３〜２１４の期間において、タスク０に係る処理回路のみを動的部分再構成により再構成デバイス１２０に再構成するようにしてもよい。このようにした場合には、タスク２に係る処理回路についての再構成時間を短縮でき、時刻２１３からタスク２を実行することが可能となる。
【００３０】
次に、本実施形態における回路割当決定処理について説明する。回路割当決定処理は、新規タスクの開始に伴い再構成デバイス１２０への新規タスクに係る処理回路の配置を要求された場合に実行される処理である。回路割当決定処理は、ＣＰＵ１１０の回路割当決定部１１２が記憶装置１３４等に格納されたプログラムを読み出して実行することにより実現される。
【００３１】
なお、以下では、空き領域と１つの既存タスクが使用中の領域とを合わせた領域に、その既存タスク及び新規タスクのそれぞれの処理回路を配置する場合を例に説明する。また、以下に説明する回路割当決定処理において求める時間は予測時間であり、例えば処理時間は処理の終了予測時間である。図４及び図５は、本実施形態における回路割当決定処理の例を示すフローチャートである。図４に示すように、回路割当決定部１１２は、再構成デバイス１２０への新規タスクに係る処理回路の配置要求が受信されるまで待機し（Ｓ４０１のＮｏ）、再構成デバイス１２０への新規タスクに係る処理回路の配置要求を受信すると（Ｓ４０１のＹｅｓ）、ステップＳ４０２へ進む。
【００３２】
ステップＳ４０２にて、回路割当決定部１１２は、新規タスクで要求された処理に対し、同じ処理を行う回路Ｃ０、…、Ｃｎ−１の回路構成情報を生成して記憶装置１３０に書き込む。回路Ｃ０、…、Ｃｎ−１は、回路性能（回路面積）の異なる回路であり、ここでは回路Ｃ０は回路面積が最小で回路性能が低く、添え字が大きくなるほど回路面積が大きくなり（回路性能が高くなり）、回路Ｃｎ−１は回路面積が最大で回路性能が高いとする。なお、回路Ｃ０、…、Ｃｎ−１の回路構成情報は、回路割当決定部１１２（ＣＰＵ１１０）が論理合成機能を有し、アクセラレータ処理する範囲を指定したソースプログラムを入力し、指定範囲を処理する回路を論理合成により生成するものとするが、ライブラリとして予め用意しておくようにしてもよい。また、ステップＳ４０２にて、回路割当決定部１１２は、要求された処理を用いる新規タスクに対し、各回路を用いる場合の総処理時間、アクセラレータ（ハードウェア）処理時間、及び回路の配置に必要な時間（再構成時間、配置時間）を見積もり記憶装置１３０に書き込む。
【００３３】
次に、ステップＳ４０３にて、回路割当決定部１１２は、新規タスクで要求される処理に対し、回路Ｃｉを使用したときのアクセラレータ処理に必要な時間Ｔａｉ及びそれ以外の処理に必要な時間Ｔｏを求める。時間Ｔａｉは、回路Ｃｉの論理合成結果及びＲＴＬシミュレーション結果から求め、例えば動作周波数等のパラメータを入力してスループットを出力するテーブルを生成し、テーブルを参照して得られた値と総処理データ量とを乗算することにより予測する。また、時間Ｔｏは、入力されたソースコードから求め、例えばメモリアクセスや加減乗除等の演算処理などの１回あたりの処理時間をテーブルに格納しておく、ソースコードから各処理の回数を求め、テーブルを参照して得られた係数を乗算することにより予測する。
【００３４】
続いて、ステップＳ４０４にて、回路割当決定部１１２は、再構成デバイス１２０上に回路面積が最小の回路Ｃ０を配置できるだけの空き領域があるか否かを判定し、回路Ｃ０を配置できるだけの空き領域が生じるまで待機する。ステップＳ４０４において再構成デバイス１２０上に回路Ｃ０を配置できるだけの空き領域があると回路割当決定部１１２が判定した場合、ステップＳ４０５にて、回路割当決定部１１２は、再構成デバイス１２０上に回路面積が最大の回路Ｃｎ−１を配置できるだけの空き領域があるか否かを判定する。
【００３５】
ステップＳ４０５において再構成デバイス１２０上に回路Ｃｎ−１を配置できるだけの空き領域があると回路割当決定部１１２が判定した場合、ステップＳ４０６にて、回路割当切り替え部１１３は、再構成デバイス１２０に回路Ｃｎ−１を配置し、情報処理装置は新規タスクの実行を開始する。そして、ステップＳ４０１に戻り、新規タスクに係る処理回路の配置要求の受信待ちとなる。
【００３６】
一方、ステップＳ４０５において再構成デバイス１２０上に回路Ｃｎ−１を配置できるだけの空き領域がないと回路割当決定部１１２が判定した場合、ステップＳ４０７へ進む。ステップＳ４０７にて、回路割当決定部１１２は、パラメータＬｉｓｔ＿ｂｅｓｔ、Ｃ＿ｂｅｓｔ、ｔ＿ｂｅｓｔ、Ｔｍｏｄ＿ｂｅｓｔをｎｕｌｌ（ヌル）、ｎｕｌｌ、−１、∞（無限大）にそれぞれ設定し、図５に示すステップＳ５０１〜Ｓ５１０の全既存タスクに関するループ処理へ進む。ステップＳ５０１〜Ｓ５１０の全既存タスクに関するループ処理に係るループ変数をｔ（＝１、２、…、ｌ）とする。
【００３７】
ステップＳ５０１からの全既存タスクに関するループ処理では、ステップＳ５０２にて、回路割当決定部１１２は、既存タスクｔの回路構成情報をＬｉｓｔ［］へ格納し、ステップＳ５０３〜Ｓ５０９のＬｉｓｔ［］の要素に関するループ処理へ進む。ここで、Ｌｉｓｔ［］は、括弧内のインデックス値が小さいほど回路面積が小さいものとする。また、ステップＳ５０３〜Ｓ５０９のＬｉｓｔ［］の要素に関するループ処理に係るループ変数をｉ（＝１、２、…、ｍ）とする。
【００３８】
ステップＳ５０３からのＬｉｓｔ［］の要素に関するループ処理では、ステップＳ５０４にて、回路割当決定部１１２は、領域Ａｔに対し、回路Ｌｉｓｔ［ｉ］とともに配置可能な新規タスク用の回路で性能が最も高いものを選択し、回路Ｃｘとする。なお、領域Ａｔは、再構成デバイス１２０において既存タスクｔが使用している領域と空き領域とを合わせた領域である。
【００３９】
次に、ステップＳ５０５にて、回路割当決定部１１２は、既存タスクｔの残りの処理を回路Ｌｉｓｔ［ｉ］で実行する場合の処理時間Ｔｔｍｏｄを求める。既存タスクｔの処理時間について、アクセラレータ処理の残時間をＲｔａ、それ以外の処理の残時間をＲｔｏ、ＴＨ＝Ｔａｉ／Ｔａｋ（Ｔａｋは現在配置されている既存タスクｔ用の回路Ｃｋを使用したときのアクセラレータ処理に必要な時間）、回路Ｌｉｓｔ［ｉ］の配置時間をＴｔｐｕｔとすると、処理時間Ｔｔｍｏｄは、Ｔｔｍｏｄ＝Ｒｔｏ＋Ｒｔａ×ＴＨ＋Ｔｔｐｕｔとなる。なお、回路Ｌｉｓｔ［ｉ］が、現在配置されている既存タスクｔ用の回路と同一であれば配置時間Ｔｔｐｕｔ＝０とする。
【００４０】
次に、ステップＳ５０６にて、回路割当決定部１１２は、ステップＳ５０３において選択した回路Ｃｘを用いて新規タスクを実行する場合の総処理時間Ｔｘｍｏｄを求める。ステップＳ４０２において求めた回路Ｃｘの配置時間をＴｘｐｕｔとすると、総処理時間Ｔｘｍｏｄは、Ｔｘｍｏｄ＝Ｔｏ＋Ｔａｘ＋Ｔｘｐｕｔとなる。なお、回路Ｌｉｓｔ［ｉ］が現在配置されている既存タスクｔ用の回路と同一でなく、かつ回路Ｃｘが既存タスクｔ用に現在配置されている回路と同一であれば、配置時間Ｔｘｐｕｔ＝０とする。
【００４１】
続いて、ステップＳ５０７にて、回路割当決定部１１２は、ステップＳ５０５において求めた処理時間Ｔｔｍｏｄ及びステップＳ５０６において求めた総処理時間Ｔｘｍｏｄの内で最大のものが、パラメータＴｍｏｄ＿ｂｅｓｔに示される時間よりも短いか否かを判定する。処理時間Ｔｔｍｏｄ及び総処理時間Ｔｘｍｏｄの内で最大のものが、パラメータＴｍｏｄ＿ｂｅｓｔに示される時間よりも短いと回路割当決定部１１２が判定した場合（Ｓ５０８のＹｅｓ）、ステップＳ５０８へ進み、そうでないと判定した場合、ステップＳ５０８をスキップしてステップＳ５０９へ進む。
【００４２】
ステップＳ５０８にて、回路割当決定部１１２は、回路構成情報、インデックス値、処理時間を記憶する。具体的には、回路割当決定部１１２は、パラメータＬｉｓｔ＿ｂｅｓｔ、Ｃ＿ｂｅｓｔ、ｔ＿ｂｅｓｔ、Ｔｍｏｄ＿ｂｅｓｔを、回路Ｌｉｓｔ［ｉ］、回路Ｃｘ、既存タスクｔ、処理時間Ｔｔｍｏｄ及び総処理時間Ｔｘｍｏｄの内の最大値にそれぞれ設定し、ステップＳ５０９へ進む。
【００４３】
ステップＳ５０９にて、回路割当決定部１１２は、ループ変数ｉ＝１、２、…、ｍについてのＬｉｓｔ［］の要素に関するループ処理が終了した場合、ステップＳ５１０へ進む。ステップＳ５１０にて、回路割当決定部１１２は、ループ変数ｔ＝１、２、…、ｌについての全既存タスクに関するループ処理が終了した場合、ステップＳ５１１へ進む。
【００４４】
ステップＳ５１１では、回路割当切り替え部１１３が、前述のようにして決定された回路割当に従って、図６に示す回路割当切り替え処理を実行する。このとき、回路割当切り替え部１１３は、前述のようにして決定された新規タスク（ｘ）、回路割当を変更する既存タスク（ｔ＿ｂｅｓｔ）、新規タスク用回路（Ｃ＿ｂｅｓｔ）、回路割当の変更後の既存タスク用回路（Ｌｉｓｔ＿ｂｅｓｔ）の情報を引数として、回路割当切り替え処理を実行する。回路割当切り替え処理が終了するとステップＳ４０１に戻り、新規タスクに係る処理回路の配置要求の受信待ちとなる。
【００４５】
図６は、本実施形態における回路割当切り替え処理の例を示すフローチャートである。図６に示す回路割当決定処理は、ＣＰＵ１１０の回路割当切り替え１１３が記憶装置１３４等に格納されたプログラムを読み出して実行することにより実現される。入力である新規タスクＴｘ、既存タスクＴｙ、新規タスクＴｘ用の回路Ｃｘ、既存タスクＴｙの回路Ｃｙは、図５のステップＳ５１１に示した新規タスク（ｘ）、回路割当を変更する既存タスク（ｔ＿ｂｅｓｔ）、新規タスク用回路（Ｃ＿ｂｅｓｔ）、回路割当の変更後の既存タスク用回路（Ｌｉｓｔ＿ｂｅｓｔ）にそれぞれ対応する。
【００４６】
回路割当切り替え処理を開始すると、ステップＳ６０１にて、回路割当切り替え１１３は、回路割当を変更する実行中の既存タスクＴｙに対する処理中断要求を送る。次に、要求に応じて既存タスクＴｙに対する処理が中断されると、回路割当切り替え１１３は、ステップＳ６０２にて、既存タスクＴｙの使用アクセラレータ情報（回路構成情報）を回路Ｃｙの回路構成情報に変更し、ステップＳ６０３にて、新規タスクＴｘの使用アクセラレータ情報（回路構成情報）を回路Ｃｘの回路構成情報に設定する。なお、ステップＳ６０２及びステップＳ６０３は、ステップＳ６０３の処理を行った後にステップＳ６０２の処理を行うようにしても良い。
【００４７】
次に、ステップＳ６０４にて、回路割当切り替え１１３は、再構成デバイス１２０上の既存タスクＴｙが使用していた領域と空き領域とを合わせた領域に対し、それぞれの回路構成情報に基づいて新規タスクＴｘ用の回路Ｃｘ及び既存タスクＴｙの回路Ｃｙを配置する。そして、ステップＳ６０５にて、回路割当切り替え１１３は、新規タスクＴｘに対する処理開始要求を送るとともに、中断している既存タスクＴｙに対する処理再開要求を送り、新規タスクＴｘ及び既存タスクＴｙの実行を開始させ、回路割当切り替え処理を終了する。
【００４８】
本実施形態によれば、再構成デバイス１２０に新規タスクに係る処理回路を配置する際に、再構成デバイス１２０上の実行中の既存タスクが使用している領域と空き領域とを合わせた領域に配置可能な新規タスク及び既存タスクのそれぞれの処理回路の内で、それらのタスクの処理が完了するまでの時間が最も短くなる処理回路の組み合わせを選択して再構成デバイス１２０に配置する。これにより、回路性能がタスクに与える影響を考慮した各タスクに対する回路割当を適切に行うことができ、情報処理装置の処理性能を向上させることができる。
【００４９】
例えば、再構成デバイス１２０にタスク０に係る処理回路が配置されてタスク０を実行しているときに、新規タスク２に係る処理回路の配置要求があった場合、再構成デバイス１２０の空き領域に新規タスク２に係る処理回路を配置すると、タスク０及びタスク２の処理が完了するまでの時間は、図７（Ａ）に例示するようになる。なお、図７（Ａ）において、７０１が既存タスク０に係る残り処理量と処理時間を示しており、７０２が新規タスク２に係る残り処理量と処理時間を示している（図７（Ｂ）においても同様である）。
【００５０】
それに対して、本実施形態を適用し、時刻Ｔ７０１において回路割当を変更し、再構成デバイス１２０におけるタスク０に係る処理回路が配置されている領域と空き領域とを合わせた領域に、タスク０及びタスク２の処理が完了するまでの時間が最短となる処理回路の組み合わせで動的再構成により回路を配置することで、図７（Ｂ）に示すようにタスク０及びタスク２の処理が完了するまでの時間が短縮され、情報処理装置の処理性能が向上される。なお、図７（Ｂ）において、７０３が回路割当変更後の既存タスク０に係る残り処理量と処理時間を示しており、７０４が既存タスク０の回路割当を変更した上で新規タスク２に係る処理回路を配置したときの残り処理量と処理時間を示している。
【００５１】
なお、前述した例に限らず、例えば図８に示すように、回路性能の変更がタスクの処理に与える影響が小さいと判断される複数のタスクについて、それらの処理回路を性能が低い回路に変更してから、処理時間を短くするような回路割当を決定するようにしても良い。図８は、本実施形態における回路割当決定処理の他の例を示すフローチャートである。
【００５２】
図８に示す回路割当決定処理において、ステップＳ８０１へ進むまでの処理は、図４に示したフローチャートにおける処理と同様である。ステップＳ８０１にて、回路割当決定部１１２は、再構成デバイス１２０に現在配置されている回路を使用したときのアクセラレータ処理に必要な時間Ｔａとそれ以外の処理に必要な時間Ｔｏとを合わせた時間（Ｔｏ＋Ｔａ）に対する時間Ｔａの割合Ｔａ／（Ｔｏ＋Ｔａ）が最大となる既存タスクを選択し既存タスクｔとする。
【００５３】
次に、ステップＳ８０２にて、回路割当決定部１１２は、ステップＳ８０１において選択した既存タスクｔ以外の既存タスクにおいて、割合Ｔａ／（Ｔｏ＋Ｔａ）が所定の値ＴＨ＿Ｒより小さい、言い換えれば処理時間全体に対してアクセラレータ処理の処理時間の比が小さいタスクについて、その処理回路を最低性能の回路に置き換える。続いて、ステップＳ８０３にて、回路割当決定部１１２は、既存タスクｔの回路構成情報をＬｉｓｔ［］へ格納し、ステップＳ８０４〜Ｓ８１０のＬｉｓｔ［］の要素に関するループ処理へ進む。ステップＳ８０４〜Ｓ８１０での処理は、図５に示したステップＳ５０３〜Ｓ５０９での処理にそれぞれ対応し、ステップＳ８０４〜Ｓ８１０のＬｉｓｔ［］の要素に関するループ処理は、図５に示したステップＳ５０３〜Ｓ５０９のＬｉｓｔ［］の要素に関するループ処理と同様であるので説明は省略する。
【００５４】
ステップＳ８０４〜Ｓ８１０のＬｉｓｔ［］の要素に関するループ処理が終了すると、ステップＳ８１１にて、回路割当切り替え部１１３は、図５に示したステップＳ５１１と同様に回路割当切り替え処理を実行する。回路割当切り替え処理が終了すると、新規タスクに係る処理回路の配置要求の受信待ちとなる。
【００５５】
また、空き領域と１つの既存タスクが使用中の領域とを合わせた領域に、その既存タスク及び新規タスクのそれぞれの処理回路を配置する場合、すなわち１つの既存タスクについて再構成デバイスの回路割当を変更する場合について説明したが、これに限定されるものではない。空き領域と１以上の任意の数の既存タスクが使用中の領域とを合わせた領域に、既存タスク及び新規タスクの各処理回路をそれぞれ配置する場合、すなわち１以上の任意の数の既存タスクについて再構成デバイスの回路割当を変更することも可能である。
【００５６】
図９及び図１０は、１以上の既存タスクについて回路割当を変更して新規タスクに係る処理回路を再構成デバイスに配置する場合の回路割当決定処理の例を示すフローチャートである。図９において、回路割当決定部１１２は、再構成デバイス１２０への新規タスクに係る処理回路の配置要求が受信されるまで待機し（Ｓ９０１のＮｏ）、再構成デバイス１２０への新規タスクに係る処理回路の配置要求を受信すると（Ｓ９０１のＹｅｓ）、ステップＳ９０２へ進む。
【００５７】
ステップＳ９０２にて、回路割当決定部１１２は、図４に示したステップＳ４０２と同様にして、新規タスクで要求された処理に対し、同じ処理を行う回路Ｃ０、…、Ｃｎ−１の回路構成情報を生成して記憶装置１３０に書き込む。また、回路割当決定部１１２は、図４に示したステップＳ４０２と同様にして、要求された処理を用いる新規タスクに対し、各回路を用いる場合の総処理時間、アクセラレータ（ハードウェア）処理時間、及び回路の配置に必要な時間（再構成時間、配置時間）を見積もり記憶装置１３０に書き込む。
【００５８】
次に、ステップＳ９０３にて、回路割当決定部１１２は、図４に示したステップＳ４０３と同様にして、新規タスクで要求される処理に対し、回路Ｃｉを使用したときのアクセラレータ処理に必要な時間Ｔａｉ及びそれ以外の処理に必要な時間Ｔｏを求める。続いて、ステップＳ９０４にて、回路割当決定部１１２は、再構成デバイス１２０上に回路面積が最小の回路Ｃ０を配置できるだけの空き領域が生じるまで待機し、回路Ｃ０を配置可能な空き領域があるとステップＳ９０５へ進む。ステップＳ９０５にて、回路割当決定部１１２は、再構成デバイス１２０上に回路面積が最大の回路Ｃｎ−１を配置できるだけの空き領域があるか否かを判定する。
【００５９】
ステップＳ９０５において再構成デバイス１２０上に回路Ｃｎ−１を配置できるだけの空き領域があると回路割当決定部１１２が判定した場合、ステップＳ９０６にて、回路割当切り替え部１１３は、再構成デバイス１２０に回路Ｃｎ−１を配置し、情報処理装置は新規タスクの実行を開始する。そして、ステップＳ９０１に戻り、新規タスクに係る処理回路の配置要求の受信待ちとなる。
【００６０】
一方、ステップＳ９０５において再構成デバイス１２０上に回路Ｃｎ−１を配置できるだけの空き領域がないと回路割当決定部１１２が判定した場合、ステップＳ９０７へ進む。ステップＳ９０７にて、回路割当決定部１１２は、パラメータＡＳＧＮ＿ｂｅｓｔ、Ｔｍｏｄ＿ｂｅｓｔをｎｕｌｌ（ヌル）、∞（無限大）にそれぞれ設定し、図１０に示すステップＳ１００１〜Ｓ１００８の何個の回路を書き換えるかのループ処理へ進む。ステップＳ１００１〜Ｓ１００８の何個の回路を書き換えるかのループ処理に係るループ変数をｃｎｕｍ（＝１、２、…、再構成デバイスに現在配置されている回路数）とする。
【００６１】
ステップＳ１００１からの何個の回路を書き換えるかのループ処理では、ステップＳ１００２にて、回路割当決定部１１２は、ステップＳ１００２〜Ｓ１００７の変数ｃｎｕｍに対する全選択パターンのループ処理へ進む。ステップＳ１００２〜Ｓ１００７の変数ｃｎｕｍに対する全選択パターンのループ処理において、選択パターンのインデックス値ｉｄｘをｓｉｄｘとし、回路割当を変更する書き換え対象回路をＷＣ０、…、ＷＣｚとする。
【００６２】
ステップＳ１００２からの変数ｃｎｕｍに対する全選択パターンのループ処理では、ステップＳ１００３にて、回路割当決定部１１２は、再構成デバイス１２０上の空き領域及び回路ＷＣ０〜ＷＣｚで使用している領域に、ｃｎｕｍ＋１個の回路（配置中のタスク用の回路＋新規タスク用の回路）を配置するパターンの内から、関連するタスクのすべてが終了するまでの時間が最短となるパターンを選択して、その配置パターンをＡＳＧＮ＿ｃｎｕｍ＿ｓｎｕｍとする。
【００６３】
次に、ステップＳ１００４にて、回路割当決定部１１２は、配置パターンＡＳＧＮ＿ｃｎｕｍ＿ｓｎｕｍに従って、各タスクに係る回路の配置を変更した際の処理時間を求める。回路割当決定部１１２は、関連するｃｎｕｍ＋１個のタスクの各回路について、再構成デバイスへの配置時間と、既存タスクの場合には残り処理時間又は新規タスクの場合には総処理時間との和をそれぞれ求める。そして、回路割当決定部１１２は、各回路についてそれぞれ求めた配置時間と処理時間との和の内で、最長のものをＴｃｎｕｍ＿ｓｎｕｍとする。なお、各タスクの処理時間については、アクセラレータ処理に必要な時間と、それ以外の処理に必要な時間とを合計した時間とする。また、書き換えが不要な回路であれば、その配置時間は０とする。
【００６４】
次に、ステップＳ１００５にて、回路割当決定部１１２は、ステップＳ５０５において求められた処理時間Ｔｃｎｕｍ＿ｓｎｕｍが、パラメータＴｍｏｄ＿ｂｅｓｔに示される時間よりも短いか否かを判定する。処理時間Ｔｃｎｕｍ＿ｓｎｕｍがパラメータＴｍｏｄ＿ｂｅｓｔに示される時間よりも短いと回路割当決定部１１２が判定した場合（Ｓ１００５のＹｅｓ）、ステップＳ１００６へ進み、そうでないと判定した場合、ステップＳ１００６をスキップしてステップＳ１００７へ進む。
【００６５】
ステップＳ１００６にて、回路割当決定部１１２は、回路の配置パターン及び処理時間を記憶する。具体的には、回路割当決定部１１２は、パラメータＡＳＧＮ＿ｂｅｓｔ、Ｔｍｏｄ＿ｂｅｓｔを、配置パターンＡＳＧＮ＿ｃｎｕｍ＿ｓｎｕｍ、処理時間Ｔｃｎｕｍ＿ｓｎｕｍにそれぞれ設定し、ステップＳ１００７へ進む。ステップＳ１００７にて、回路割当決定部１１２は、ｃｎｕｍに対する全選択パターンのループ処理が終了した場合、ステップＳ１１０８へ進む。ステップＳ１１０８にて、回路割当決定部１１２は、何個の回路を書き換えるかのループ処理が終了した場合、ステップＳ１００９へ進む。
【００６６】
ステップＳ１００９では、回路割当切り替え部１１３が、回路割当をパラメータＡＳＧＮ＿ｂｅｓｔに従って回路割当切り替え処理を実行し、変更した後の回路で各タスクの処理を実行する。回路割当切り替え処理が終了するとステップＳ９０１に戻り、新規タスクに係る処理回路の配置要求の受信待ちとなる。
【００６７】
なお、前述した実施形態における処理を実行させるプログラムを、例えばＣＰＵに読み込ませることによって実現できるように記憶装置に記憶したプログラムは本発明の実施形態に含まれる。また、例えばＣＰＵがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれた情報処理装置がある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続された情報処理装置に前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【００６８】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６９】
１１０  ＣＰＵ
１１１  制御部
１１２  回路割当決定部
１１３  回路割当切り替え部
１２０  再構成デバイス
１３０  記憶装置
【図１】
2018063576.tif 000003
【図２】
2018063576.tif 000004
【図３】
2018063576.tif 000005
【図４】
2018063576.tif 000006
【図５】
2018063576.tif 000007
【図６】
2018063576.tif 000008
【図７】
2018063576.tif 000009
【図８】
2018063576.tif 000010
【図９】
2018063576.tif 000011
【図１０】
2018063576.tif 000012
【図１１】
2018063576.tif 000013