(57)【要約】【課題】再構成可能回路に追加予定の回路を構成可能か否かを判断することができる情報処理装置を提供することを課題とする。【解決手段】情報処理装置は、少なくとも１つの再構成可能回路（１３４ａ）と、前記再構成可能回路の回路構成を制御する制御部（４１３、４１７、４１９）とを有し、前記制御部は、前記再構成可能回路毎の閾値を記憶し、前記再構成可能回路毎に、現在実行中の回路の消費電力を示す情報と追加予定の回路の消費電力を示す情報に基づく消費電力情報と、前記閾値とを基に、追加予定の回路を構成可能か否かを判断する。【選択図】図４
2018185691.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの再構成可能回路と、
前記再構成可能回路の回路構成を制御する制御部とを有し、
前記制御部は、前記再構成可能回路毎の閾値を記憶し、前記再構成可能回路毎に、現在実行中の回路の消費電力を示す情報と追加予定の回路の消費電力を示す情報に基づく消費電力情報と、前記閾値とを基に、追加予定の回路を構成可能か否かを判断することを特徴とする情報処理装置。
【請求項２】
さらに、前記再構成可能回路毎の判断の結果に応じて、前記少なくとも１つの再構成可能回路のうちの１つの再構成可能回路に前記追加予定の回路の構成を指示する選択部を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記閾値は、一定時間毎に減少するように更新されることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御部は、前記閾値が更新された場合に、前記閾値が更新された再構成可能回路について、現在実行中の回路の消費電力を示す情報を前記閾値と比較し、前記現在実行中の回路の消費電力を示す情報が前記閾値より大きい場合には、前記現在実行中の回路のうちの少なくとも１つの回路の実行を停止し、
さらに、前記停止した回路の実行を他の再構成可能回路に再開させる実行管理部を有することを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記選択部は、前記少なくとも１つの再構成可能回路のうちで前記閾値から前記消費電力情報を減算した値が最も小さい再構成可能回路に前記追加予定の回路の構成を指示することを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記選択部は、稼働中の前記再構成可能回路のうちで前記消費電力情報が前記閾値より小さい再構成可能回路がない場合には、休止中の再構成可能回路に前記追加予定の回路の構成を指示することを特徴とする請求項２又は５に記載の情報処理装置。
【請求項７】
さらに、稼働中の前記再構成可能回路のうちで前記消費電力情報が前記閾値より小さい再構成可能回路がない場合、かつ前記少なくとも１つの再構成可能回路の閾値の合計が第１の値より小さい場合には、前記少なくとも１つの再構成可能回路の閾値のうちの最も小さい閾値を増加させる閾値制御部を有することを特徴とする請求項２又は５に記載の情報処理装置。
【請求項８】
前記制御部は、回路サイズと動作周波数の乗算により、前記消費電力を示す情報を得ることを特徴とする請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
少なくとも１つの再構成可能回路を有する情報処理装置の情報処理方法であって、
前記情報処理装置が有する記憶部が、前記再構成可能回路毎の閾値を記憶し、
前記情報処理装置が有する判断部が、前記再構成可能回路毎に、現在実行中の回路の消費電力を示す情報と追加予定の回路の消費電力を示す情報に基づく消費電力情報と、前記閾値とを基に、追加予定の回路を構成可能か否かを判断することを特徴とする情報処理方法。
【請求項１０】
少なくとも１つの再構成可能回路毎の閾値を設定し、
前記再構成可能回路毎に、現在実行中の回路の消費電力を示す情報と追加予定の回路の消費電力を示す情報に基づく消費電力情報と、前記閾値とを基に、追加予定の回路を構成可能か否かを判断する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
再構成デバイスとコンフィグレーションコードメモリと再構成デバイスコントローラとを有する情報処理装置が知られている（特許文献１参照）。再構成デバイスは、コンフィグレーションコードにしたがって所望のタスクを実行するための回路を変更可能に実現する。コンフィグレーションコードメモリは、再構成デバイスで実行するタスク毎に、それぞれ異なる特徴を持つ複数の回路を実現するためのコンフィグレーションコードが格納される。再構成デバイスコントローラは、異なる特徴を持つ複数の回路のなかからシステムの動作状態に応じて再構成デバイスに実行させる適切な回路を選択する、再構成デバイスに対するコンフィグレーションコードのロードを制御する。
【０００３】
また、サービス要求に応答してサービスを提供する複数のサーバ装置と、サービス要求をいずれかのサーバ装置へ転送する負荷分散装置とを有するサーバ負荷分散方式が知られている（特許文献２参照）。各サーバ装置は、サーバ負荷を検知する手段と、サーバ負荷を閾値と比較し、比較結果を負荷分散装置へ通知する手段とを有する。負荷分散装置は、各サーバ装置から通知される比較結果に基づいて各サーバ装置の負荷状況を管理する手段と、負荷の重くないサーバ装置を選択してサービス要求を転送する手段とを有する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９３５８号公報
【特許文献２】特開２０１２−８８７９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
再構成デイバスが高温になると、性能低下及び故障率上昇の可能性がある。しかし、再構成デバイスは、回路を変更可能であり、変更された回路により消費電力及び発熱量が変わる。そのため、再構成デバイスの温度を管理することが困難である。
【０００６】
１つの側面では、本発明の目的は、再構成可能回路に追加予定の回路を構成可能か否かを判断することができる情報処理装置、情報処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
情報処理装置は、少なくとも１つの再構成可能回路と、前記再構成可能回路の回路構成を制御する制御部とを有し、前記制御部は、前記再構成可能回路毎の閾値を記憶し、前記再構成可能回路毎に、現在実行中の回路の消費電力を示す情報と追加予定の回路の消費電力を示す情報に基づく消費電力情報と、前記閾値とを基に、追加予定の回路を構成可能か否かを判断する。
【発明の効果】
【０００８】
１つの側面では、再構成可能回路に追加予定の回路を構成可能か否かを判断することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態による情報処理装置の構成例を示す図である。
【図２】図２は、第１のＦＰＧＡサーバの構成例を示す図である。
【図３】図３（Ａ）〜（Ｃ）は、ＦＰＧＡに対するタスクの割り当て例を示す図である。
【図４】図４は、情報処理装置の機能構成例を示す図である。
【図５】図５は、情報処理装置の情報処理方法の例を示すシーケンス図である。
【図６】図６（Ａ）は第１〜第５のＦＰＧＡサーバのＦＰＧＡの閾値を示すタイムチャートであり、図６（Ｂ）は第１〜第５のＦＰＧＡサーバのＦＰＧＡの消費電力を示すタイムチャートであり、図６（Ｃ）は第１〜第５のＦＰＧＡサーバのＦＰＧＡの平均消費電力を示すタイムチャートであり、図６（Ｄ）は第１〜第５のＦＰＧＡサーバのＦＰＧＡの全体の合計消費電力と１個当たりのＦＰＧＡの最大消費電力を示すタイムチャートである。
【図７】図７（Ａ）は第２の実施形態による第１〜第５のＦＰＧＡサーバのＦＰＧＡの閾値の例を示すタイムチャートであり、図７（Ｂ）は第１〜第５のＦＰＧＡサーバのＦＰＧＡの消費電力を示すタイムチャートである。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、第１の実施形態による情報処理装置の構成例を示す図である。情報処理装置は、クラウドサービスを実現するため、クライアント１００と、管理サーバ１１０と、ネットワーク１２０と、第１〜第５のＦＰＧＡ（field programmable gate array）サーバ１３０ａ〜１３０ｅとを有する。なお、ＦＰＧＡサーバ１３０ａ〜１３０ｅの数は、５個に限定されない。
【００１１】
クライアント１００は、コンピュータであり、中央処理ユニット（ＣＰＵ）１０１と、ランダムアクセスメモリ（ＲＡＭ）１０２と、ハードディスクドライブ（ＨＤＤ）ユニット１０３とを有する。ＣＰＵ１０１は、ＨＤＤユニット１０３からプログラムを読み出し、読み出したプログラムをＲＡＭ１０２に展開し、ＲＡＭ１０２に展開されたプログラムを実行する。クライアント１００は、管理サーバ１１０にタスクの実行を依頼し、管理サーバ１１０からタスクの実行の結果を得ることができる。
【００１２】
管理サーバ１１０は、コンピュータであり、ＣＰＵ１１１と、ＲＡＭ１１２と、ＨＤＤユニット１１３とを有する。ＣＰＵ１１１は、ＨＤＤユニット１１３からプログラムを読み出し、読み出したプログラムをＲＡＭ１１２に展開し、ＲＡＭ１１２に展開されたプログラムを実行する。管理サーバ１１０は、ネットワーク１２０を介して、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅにタスクを割り当て、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅからタスクの実行結果を取得し、その実行結果をクライアント１００に出力する。
【００１３】
第１のＦＰＧＡサーバ１３０ａは、コンピュータであり、ＣＰＵ１３１ａと、ＲＡＭ１３２ａと、ＨＤＤユニット１３３ａと、ＦＰＧＡ１３４ａとを有する。同様に、第２〜第５のＦＰＧＡサーバ１３０ｂ〜１３０ｅは、それぞれ、コンピュータであり、ＣＰＵ１３１ｂ〜１３１ｅと、ＲＡＭ１３２ｂ〜１３２ｅと、ＨＤＤユニット１３３ｂ〜１３３ｅと、ＦＰＧＡ１３４ｂ〜１３４ｅとを有する。ＣＰＵ１３１ａ〜１３１ｅは、それぞれ、ＨＤＤユニット１３３ａ〜１３３ｅからプログラムを読み出し、読み出したプログラムをＲＡＭ１３２ａ〜１３２ｅに展開し、ＲＡＭ１３２ａ〜１３２ｅに展開されたプログラムを実行する。ＦＰＧＡ１３４ａ〜１３４ｅは、回路を変更可能な再構成可能回路である。第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、管理サーバ１１０から依頼されたタスクに対応する回路をＦＰＧＡ１３４ａ〜１３４ｅに構成し、その回路を実行し、その実行の結果のデータをネットワーク１２０を介して管理サーバ１１０に出力する。
【００１４】
図２は、第１のＦＰＧＡサーバ１３０ａの構成例を示す図である。第１のＦＰＧＡサーバ１３０ａの構成を例に説明するが、第２〜第５のＦＰＧＡサーバ１３０ｂ〜１３０ｅの構成も第１のＦＰＧＡサーバ１３０ａの構成と同様である。
【００１５】
第１のＦＰＧＡサーバ１３０ａは、ＣＰＵ１３１ａと、ＲＡＭ１３２ａと、ＨＤＤユニット１３３ａと、ＦＰＧＡ１３４ａとを有する。ＨＤＤユニット１３３ａは、タスクの回路をＦＰＧＡ１３４ａに構成するための回路情報（コンフィグレーションコード）２０１〜２０８と、回路付属情報２１１〜２１８を記憶する。
【００１６】
回路情報２０１は、タスクＡの回路をＦＰＧＡ１３４ａの一番上に構成するための回路情報である。回路情報２０２は、タスクＡの回路をＦＰＧＡ１３４ａの上から二番目に構成するための回路情報である。回路情報２０３は、タスクＡの回路をＦＰＧＡ１３４ａの上から三番目に構成するための回路情報である。回路情報２０４は、タスクＡの回路をＦＰＧＡ１３４ａの一番下に構成するための回路情報である。
【００１７】
回路情報２０５は、タスクＢの回路をＦＰＧＡ１３４ａの左上に構成するための回路情報である。回路情報２０６は、タスクＢの回路をＦＰＧＡ１３４ａの右上に構成するための回路情報である。
【００１８】
回路情報２０７は、タスクＣの回路をＦＰＧＡ１３４ａの下に構成するための回路情報である。回路情報２０８は、タスクＣの回路をＦＰＧＡ１３４ａの上に構成するための回路情報である。
【００１９】
回路付属情報２１１〜２１８は、それぞれ、回路情報２０１〜２０８に付属する情報である。回路付属情報２１１〜２１８は、それぞれ、回路サイズ２２１と動作周波数２２２を含む。回路付属情報２１１〜２１４は、それぞれ、タスクＡの回路の回路サイズ２２１と動作周波数２２２を含む。回路付属情報２１５及び２１６は、それぞれ、タスクＢの回路の回路サイズ２２１と動作周波数２２２を含む。回路付属情報２１７及び２１８は、それぞれ、タスクＣの回路の回路サイズ２２１と動作周波数２２２を含む。
【００２０】
管理サーバ１１０は、回路情報２０１〜２０８及び回路付属情報２１１〜１２８を生成し、回路情報２０１〜２０８及び回路付属情報２１１〜１２８を第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに出力する。第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅでは、それぞれ、ＣＰＵ１３１ａ〜１３１ｅは、ＨＤＤユニット１３３ａ〜１３３ｅに回路情報２０１〜２０８及び回路付属情報２１１〜１２８を書き込む。
【００２１】
図３（Ａ）は、タスクＣの割り当て前のＦＰＧＡ１３４ａ〜１３４ｃの例を示す図である。第１のＦＰＧＡ１３４ａには、４個のタスクＡの回路と１個のタスクＢの回路が構成されている。第２のＦＰＧＡ１３４ｂには、２個のタスクＢの回路が構成されている。第３のＦＰＧＡ１３４ｃには、何も回路が構成されていない。管理サーバ１１０は、タスクＣの回路情報２０７又は２０８を用いて、ＦＰＧＡ１３４ｂ又は１３４ｃに、タスクＣの回路を追加することができる。
【００２２】
図３（Ｂ）は、管理サーバ１１０がＦＰＧＡ１３４ｂにタスクＣの回路を割り当てた例を示す図である。管理サーバ１１０は、第２のＦＰＧＡサーバ１３０ｂにタスクＣを割り当てる。すると、第２のＦＰＧＡサーバ１３０ｂは、ＨＤＤユニット１３３ｂ内の回路情報２０７をＦＰＧＡ１３４ｂに書き込む。すると、ＦＰＧＡ１３４ｂには、タスクＣの回路が追加構成される。
【００２３】
図３（Ｃ）は、管理サーバ１１０がＦＰＧＡ１３４ｃに２個のタスクＣの回路を割り当てた例を示す図である。管理サーバ１１０は、第３のＦＰＧＡサーバ１３０ｃに２個のタスクＣを割り当てる。すると、第３のＦＰＧＡサーバ１３０ｃは、ＨＤＤユニット１３３ｃ内の回路情報２０７及び２０８をＦＰＧＡ１３４ｃに書き込む。すると、ＦＰＧＡ１３４ｃには、２個のタスクＣの回路が追加構成される。
【００２４】
ＦＰＧＡ１３４ａ〜１３４ｅは、高温になりすぎると、熱雑音による性能低下及び故障率上昇の可能性がある。ＦＰＧＡ１３４ａ〜１３４ｅは、書き込まれる回路により、消費電力（発熱量）が大きく異なるため、温度管理が困難である。ＦＰＧＡ１３４ａ〜１３４ｅの温度管理を行わない場合、ＦＰＧＡ１３４ａ〜１３４ｅが発火する可能性がある。複数のＦＰＧＡ１３４ａ〜１３４ｅのうちの一部のＦＰＧＡにタスクが集中すると、その一部のＦＰＧＡが非常に高温になってしまう。そのため、管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに適切にタスクを割り当てることにより、効率よく第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅを運用する。具体的には、管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの全体の消費電力を抑え、かつ１つのＦＰＧＡにタスクが集中して、異常高温になることを避けるように、タスクを割り当てる。
【００２５】
図４は、情報処理装置の機能構成例を示す図である。情報処理装置は、クライアント１００と、管理サーバ１１０と、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅを有する。管理サーバ１１０は、モジュール４００を有する。モジュール４００は、ＣＰＵ１１１が実行するプログラムのモジュールである。モジュール４００は、ＦＰＧＡ実行管理部４０１と、実行ＦＰＧＡサーバ選択部４０２と、実行可否問い合わせ部４０３と、タスク受付部４０４と、閾値制御部４０５とを有する。
【００２６】
第１のＦＰＧＡサーバ１３０ａは、ＲＡＭ１３２ａと、ＨＤＤユニット１３３ａと、ＦＰＧＡ１３４ａと、モジュール４１０とを有する。ＲＡＭ１３２ａは、閾値記憶部４１３を有する。ＨＤＤユニット１３３ａは、回路情報記憶部４１１と、回路付属情報記憶部４１２とを有する。回路情報記憶部４１１は、図２の回路情報２０１〜２０８を記憶する。回路付属情報記憶部４１２は、図２の回路付属情報２１１〜２１８を記憶する。
【００２７】
モジュール４１０は、ＣＰＵ１３１ａが実行するプログラムのモジュールである。モジュール４１０は、実行結果処理部４１４と、実行制御部４１５と、回路情報管理部４１６と、回路情報書き込み部４１７と、消費電力計算部４１８と、実行可否判定部４１９とを有する。回路情報書き込み部４１７は、制御部であり、回路情報をＦＰＧＡ１３４ａに書き込むことにより、ＦＰＧＡ１３４ａの回路構成を制御することができる。
【００２８】
第２〜第５のＦＰＧＡサーバ１３０ｂ〜１３０ｅは、それぞれ、上記の第１のＦＰＧＡサーバ１３０ａと同様の構成を有する。
【００２９】
図５は、情報処理装置の情報処理方法の例を示すシーケンス図である。ここで、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅが稼働中であり、第６のＦＰＧＡサーバが休止中である場合を例に説明する。第６のＦＰＧＡサーバは、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅと同様の構成を有する。
【００３０】
管理サーバ１１０は、閾値制御部４０５により、図６（Ａ）に示すように、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して閾値６０１ａ〜６０１ｅの初期値（最大値）を順に設定指示する。第１のＦＰＧＡサーバ１３０ａは、実行可否判定部４１９により、閾値記憶部４１３に閾値６０１ａの初期値を書き込む。同様に、第２〜第５のＦＰＧＡサーバ１３０ｂ〜１３０ｅは、それぞれ、実行可否判定部４１９により、閾値記憶部４１３に閾値６０１ｂ〜６０１ｅの初期値を書き込む。その後、管理サーバ１１０は、閾値制御部４０５により、図６（Ａ）に示すように、一定時間毎に、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して閾値６０１ａ〜６０１ｅが減少するように、閾値６０１ａ〜６０１ｅを順に更新指示する。この更新指示は、ステップＳ５０７及びＳ５０９に対応する。その詳細は、後述する。第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、更新指示を入力すると、実行可否判定部４１９により、閾値記憶部４１３の閾値６０１ａ〜６０１ｅが減少するように更新する。管理サーバ１１０は、閾値制御部４０５により、図６（Ａ）に示すように、それぞれ、閾値６０１ａ〜６０１ｅが０になると、閾値６０１ａ〜６０１ｅを初期値（最大値）に順に設定指示する。第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値６０１ａ〜６０１ｅは、図６（Ａ）のように、周期的に変化する。
【００３１】
ステップＳ５０１では、クライアント１００は、管理サーバ１１０に対して、タスクＣの実行依頼を出力する。すると、管理サーバ１１０は、タスク受付部４０４により、そのタスクＣの実行依頼を受け付ける。
【００３２】
次に、ステップＳ５０２では、管理サーバ１１０は、実行可否問い合わせ部４０３により、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して、タスクＣの実行可否問い合わせを出力する。
【００３３】
次に、ステップＳ５０３では、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、消費電力計算部４１８により、ＦＰＧＡ１３４ａ〜１３４ｅ毎に、現在実行中の回路の消費電力を示す情報と、追加予定のタスクＣの回路の消費電力を示す情報とを加算し、全体の消費電力を示す情報を得る。
【００３４】
例えば、図３（Ａ）のＦＰＧＡ１３４ｂの例を説明する。実行制御部４１５は、現在実行中の２個のタスクＢの情報を回路情報管理部４１６に出力する。回路付属情報記憶部４１２は、回路情報管理部４１６の制御により、２個のタスクＢの回路付属情報２１５及び２１６を消費電力計算部４１８に出力する。消費電力計算部４１８は、回路付属情報２１５及び２１６毎に、回路サイズ２２１と動作周波数２２２を乗算することにより消費電力を計算し、それらの消費電力を加算することにより、現在実行中の２個のタスクＢの回路の消費電力を得る。次に、消費電力計算部４１８は、追加予定のタスクＣの回路付属情報２１７の回路サイズ２２１と動作周波数２２２を乗算することにより、追加予定のタスクＣの回路の消費電力を得る。次に、消費電力計算部４１８は、現在実行中の２個のタスクＢの回路の消費電力と、追加予定のタスクＣの回路の消費電力を加算し、全体の消費電力を実行可否判定部４１９に出力する。
【００３５】
第２のＦＰＧＡサーバ１３０ｂの例を説明したが、他のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅも同様に、全体の消費電力を計算する。
【００３６】
次に、ステップＳ５０４では、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、実行可否判定部４１９により、閾値記憶部４１３に記憶されている閾値６０１ａ〜６０１ｅから消費電力計算部４１８が出力する全体の消費電力を減算し、その減算結果を実行可否回答として管理サーバ１１０の実行ＦＰＧＡサーバ選択部４０２に出力する。
【００３７】
全体の消費電力が閾値より小さい場合には、減算結果が正値であり、ＦＰＧＡが追加タスクＣの回路を実行可能であることを示す。全体の消費電力が閾値より大きい場合には、減算結果が負値であり、ＦＰＧＡが追加タスクＣの回路を実行不可能であることを示す。
【００３８】
第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅの実行可否判定部４１９は、それぞれ、判断部であり、ＦＰＧＡ１３４ａ〜１３４ｅ毎に、現在実行中のタスクの回路の消費電力を示す情報と追加予定のタスクの回路の消費電力を示す情報に基づく消費電力情報と、閾値６０１ａ〜６０１ｅとを基に、追加予定の回路を構成可能か否かを判断する。
【００３９】
ステップＳ５０５では、管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅの減算結果の中で最も大きな値を持ち、かつ減算結果が正値である第２のＦＰＧＡサーバ１３０ｂの実行制御部４１５にタスクＣの実行依頼を出力する。すなわち、管理サーバ１１０は、第２のＦＰＧＡサーバ１３０ｂのＦＰＧＡ１３４ｂに、追加予定のタスクＣの回路の構成を指示する。
【００４０】
なお、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅの減算結果のすべてが負値である場合、管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、休止中の第６のＦＰＧＡサーバに対して、タスクＣの実行依頼を出力し、第６のＦＰＧＡサーバのＦＰＧＡにタスクＣの回路の構成を指示する。その際、管理サーバ１１０は、閾値制御部４０５により、休止中の第６のＦＰＧＡサーバに対して、閾値の初期値設定を行う。なお、休止中の第６のＦＰＧＡサーバは、可能な限りタスクを割り当てない方が、全体の消費電力を低減することができる。
【００４１】
次に、ステップＳ５０６では、第２のＦＰＧＡサーバ１３０ｂは、実行制御部４１５により、タスクＣの実行開始を指示する。回路情報書き込み部４１７は、回路情報記憶部４１１からタスクＣの回路情報２０７を読み出し、回路情報２０７をＦＰＧＡ１３４ｂに書き込む。これにより、図３（Ｂ）に示すように、ＦＰＧＡ１３４ｂには、タスクＣの回路が追加される。ＦＰＧＡ１３４ｂは、２個のタスクＢと１個のタスクＣの回路の実行を開始する。
【００４２】
なお、図３（Ｃ）のＦＰＧＡ１３４ｃのように、２個のタスクＣの回路を並列処理させたい場合には、ステップＳ５０２に戻り、再び、管理サーバ１１０は、タスクＣの実行可否問い合わせを出力すればよい。すなわち、管理サーバ１１０は、実行可否問い合わせ処理を並列処理数だけ繰り返し行えばよい。
【００４３】
次に、ステップＳ５０７では、管理サーバ１１０は、閾値制御部４０５により、それぞれ、閾値６０１ａ〜６０１ｅの初期値設定から一定時間経過後に、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して、閾値６０１ａ〜６０１ｅを減少させるための更新指示を出力する。
【００４４】
次に、ステップＳ５０８では、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、実行可否判定部４１９により、閾値記憶部４１３の閾値が減少するように更新する。そして、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、消費電力計算部４１８により、上記と同様に、現在実行中のタスクの回路の消費電力を計算して実行可否判定部４１９に出力する。そして、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、実行可否判定部４１９により、閾値記憶部４１３に記憶されている閾値６０１ａ〜６０１ｅから消費電力計算部４１８が出力する消費電力を減算し、その減算結果が正値である場合には、ＦＰＧＡ１３４ａ〜１３４ｅのタスクの回路の実行を継続させる。
【００４５】
次に、ステップＳ５０９では、管理サーバ１１０は、閾値制御部４０５により、それぞれ、ステップＳ５０７の閾値６０１ａ〜６０１ｅの更新から一定時間経過後に、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して、閾値６０１ａ〜６０１ｅを減少させるための更新指示を出力する。
【００４６】
次に、ステップＳ５１０では、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、ステップＳ５０８と同様に、閾値記憶部４１３の閾値が減少するように更新する。そして、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、実行可否判定部４１９により、閾値記憶部４１３に記憶されている閾値６０１ａ〜６０１ｅから消費電力計算部４１８が出力する消費電力を減算する。第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅは、それぞれ、実行可否判定部４１９により、その減算結果が正値である場合に、ＦＰＧＡ１３４ａ、１３４ｃ〜１３４ｅのタスクの回路の実行を継続させる。
【００４７】
ステップＳ５１１では、第２のＦＰＧＡサーバ１３０ｂは、実行可否判定部４１９により、消費電力を閾値６０１ｂと比較し、消費電力が閾値６０１ｂより大きく、減算結果が負値であると判定する。その場合、ステップＳ５１２では、第２のＦＰＧＡサーバ１３０ｂは、実行可否判定部４１９により、実行中のタスクの回路のうちの最も消費電力が大きいタスクの回路から順に、消費電力が閾値６０１ｂより小さくなるまで、実行を停止させる。第２のＦＰＧＡサーバ１３０ｂは、実行結果処理部４１４により、停止したＦＰＧＡ１３４ｂのタスクの回路の途中結果データと停止ポイントを示すリカバリポイントをＲＡＭ１３２ｂに書き込む。
【００４８】
次に、ステップＳ５１３では、第２のＦＰＧＡサーバ１３０ｂは、実行結果処理部４１４により、上記の途中結果データ及びリカバリポイントを含むタスク実行依頼を管理サーバ１１０のＦＰＧＡ実行管理部４０１に出力する。
【００４９】
この際、第２のＦＰＧＡサーバ１３０ｂは、実行可否判定部４１９により、図６（Ａ）の閾値６１０のように、閾値記憶部１３２ａの閾値を０に変更し、タスクの回路の実行が完了すると、閾値記憶部１３２ａの閾値を初期値に設定する。なお、図６（Ａ）の閾値６１０は、第３のＦＰＧＡサーバ１３０ｃのＦＰＧＡ１３４ｃの閾値を示すが、第２のＦＰＧＡサーバ１３０ｂのＦＰＧＡ１３４ｂの閾値も同様である。
【００５０】
次に、ステップＳ５１４では、ＦＰＧＡ実行管理部４０１は、そのタスク実行依頼をタスク受付部４０４に出力する。タスク受付部４０４は、実行可否問い合わせ部４０３にタスク実行依頼を出力する。管理サーバ１１０は、実行可否問い合わせ部４０３により、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅに対して、タスクの実行可否問い合わせを出力する。
【００５１】
次に、ステップＳ５１５では、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅは、実行可否判定部４１９により、ステップＳ５０３と同様に、ＦＰＧＡ１３４ａ、１３４ｃ〜１３４ｅ毎に、現在実行中の回路の消費電力を示す情報と、追加予定のタスクの回路の消費電力を示す情報とを加算し、全体の消費電力を示す情報を得る。
【００５２】
次に、ステップＳ５１６では、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅは、実行可否判定部４１９により、ステップＳ５０４と同様に、閾値記憶部４１３に記憶されている閾値６０１ａ、６０１ｃ〜６０１ｅから消費電力計算部４１８が出力する全体の消費電力を減算し、その減算結果を実行可否回答として管理サーバ１１０の実行ＦＰＧＡサーバ選択部４０２に出力する。
【００５３】
次に、ステップＳ５１７では、管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅの減算結果の中で最も大きな値を持ち、かつ減算結果が正値である第１のＦＰＧＡサーバ１３０ａの実行制御部４１５にタスクの実行依頼を出力する。その実行依頼は、上記の途中結果データ及びリカバリポイントを含む。
【００５４】
なお、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅの減算結果のすべてが負値である場合、管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、休止中の第６のＦＰＧＡサーバに対して、タスクの実行依頼を出力する。その際、管理サーバ１１０は、閾値制御部４０５により、休止中の第６のＦＰＧＡサーバに対して、閾値の初期値設定を行う。
【００５５】
次に、ステップＳ５１８では、第１のＦＰＧＡサーバ１３０ａは、回路情報書き込み部４１７により、回路情報記憶部４１１からタスクの回路情報を読み出し、その回路情報をＦＰＧＡ１３４ａに書き込む。そして、第１のＦＰＧＡサーバ１３０ａは、実行制御部４１５により、ＦＰＧＡ１３４ａに対して途中結果データを入力し、タスクのリカバリポイントからの実行再開を指示する。これにより、ＦＰＧＡ１３４ａには、タスクの回路が追加される。ＦＰＧＡ１３４ａは、タスクの回路の実行を再開する。
【００５６】
第１のＦＰＧＡサーバ１３０ａは、ＦＰＧＡ１３４ａのタスクの回路の実行が完了すると、実行結果処理部４１４により、ＦＰＧＡ１３４ａの実行結果データを管理サーバ１１０のＦＰＧＡ実行管理部４０１に出力する。ＦＰＧＡ実行管理部４０１は、タスク受付部４０４を介して、クライアント１００に実行結果データを出力する。
【００５７】
図６（Ａ）は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値６０１ａ〜６０１ｅを示すタイムチャートである。図６（Ｂ）は、図６（Ａ）に対応し、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの消費電力６０２ａ〜６０２ｅを示すタイムチャートである。管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値６０１ａ〜６０１ｅをローテーションにより更新する。これにより、管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対して、ローテーションにより、平均的にタスクの実行依頼をすることができる。図６（Ｂ）に示すように、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの消費電力６０２ａ〜６０２ｅは、偏りがなく、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅに対してタスクがほぼ均等に分散して割り当てられていることが分かる。
【００５８】
図６（Ｃ）は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの平均消費電力を示すタイムチャートである。第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅは、平均消費電力が相互にほぼ同じであり、発熱量も相互にほぼ同じである。管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのうちの一部のＦＰＧＡサーバにタスクが集中して、異常高温になることを防止することができる。ＦＰＧＡ１３４ａ〜１３４ｅは、高温による性能低下及び故障率上昇を防止することができる。
【００５９】
図６（Ｄ）は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの全体の合計消費電力６０４と１個当たりのＦＰＧＡの最大消費電力６０５を示すタイムチャートである。管理サーバ１１０は、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの全体の合計消費電力６０４を低減し、かつ１個当たりのＦＰＧＡの最大消費電力６０５を低減していることが分かる。これにより、一部のＦＰＧＡサーバのＦＰＧＡにタスクが集中して、異常高温になることを防止することができる。
【００６０】
また、ＦＰＧＡ１３４ａ〜１３４ｅを冷却するためのファンを設けることが考えられる。しかし、ファンを設けると、消費電力が増加してしまう。本実施形態は、ファンを設けないので、低消費電力で、ＦＰＧＡ１３４ａ〜１３４ｅの異常高温を防止することができる。
【００６１】
また、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅは、それぞれ、実行可否判定部４１９により、消費電力を閾値と比較することにより、ＦＰＧＡ１３４ａ〜１３４ｅに追加予定のタスクの回路を構成可能か否かを判断することができる。
【００６２】
なお、ステップＳ５０２及びＳ５１４では、管理サーバ１１０は、ＦＰＧＡ１３４ａ〜１３４ｅの空きスペースに応じて、タスクを追加可能なＦＰＧＡサーバにのみ実行可否問い合わせを出力することができる。管理サーバ１１０は、ＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅが実行中のタスクの回路を把握している。例えば、図３（Ａ）の第１のＦＰＧＡサーバ１３０ａのＦＰＧＡ１３４ａは、空きスペースが狭く、タスクＣの回路を追加することができない。この場合、管理サーバ１１０は、第１のＦＰＧＡサーバ１３０ａ以外のＦＰＧＡサーバに実行可否問い合わせを出力する。
【００６３】
また、上記では、複数のＦＰＧＡサーバ１３０ａ〜１３０ｅがそれぞれ複数のＦＰＧＡ１３４ａ〜１３４ｅを有する場合を例に説明したが、１つのＦＰＧＡサーバが複数のＦＰＧＡ１３４ａ〜１３４ｅを有していてもよい。また、各ＦＰＧＡサーバ１３０ａ〜１３０ｅがそれぞれ複数のＦＰＧＡを有していてもよい。
【００６４】
（第２の実施形態）
図７（Ａ）は、第２の実施形態による第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値７０１ａ〜７０１ｅの例を示すタイムチャートである。本実施形態は、第１の実施形態に対し、管理サーバ１１０の閾値制御方法が異なる。以下、図４及び図５を参照しながら、本実施形態が第１の実施形態と異なる点を説明する。
【００６５】
第１の実施形態では、ステップＳ５０５において、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅの減算結果のすべてが負値である場合、管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、休止中の第６のＦＰＧＡサーバに対して、タスクＣの実行依頼を出力する。
【００６６】
これに対し、本実施形態では、ステップＳ５０５において、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅの減算結果のすべてが負値である場合、管理サーバ１１０は、閾値制御部４０５により、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値７０１ａ〜７０１ｅの合計が第１の値より小さい場合には、図７（Ａ）に示すように、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値７０１ａ〜７０１ｅのうちの最も小さい閾値７０１ａを閾値７０２に増加させる指示を第１のＦＰＧＡサーバ１３０ａに出力する。ここで、閾値制御部４０５は、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値７０１ａ〜７０１ｅの合計が第１の値を超えない範囲で、閾値７０１ａを閾値７０２に増加させる指示を出力する。
【００６７】
すると、第１のＦＰＧＡサーバ１３０ａは、実行可否判定部４１９により、閾値記憶部４１３の閾値を増加させる。次に、第１のＦＰＧＡサーバ１３０ａは、実行可否判定部４１９により、閾値記憶部４１３に記憶されている閾値７０２から消費電力計算部４１８が出力する全体の消費電力を減算し、その減算結果を管理サーバ１１０の実行ＦＰＧＡサーバ選択部４０２に出力する。
【００６８】
管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、第１のＦＰＧＡサーバ１３０ａの減算結果が正値である場合には、第１のＦＰＧＡサーバ１３０ａの実行制御部４１５にタスクＣの実行依頼を出力する。その後、第１のＦＰＧＡサーバ１３０ａは、ステップＳ５０６と同様に、タスクＣの回路の実行を開始する。
【００６９】
また、ステップＳ５１７では、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅの減算結果のすべてが負値である場合、管理サーバ１１０は、閾値制御部４０５により、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅのＦＰＧＡ１３４ａ、１３４ｃ〜１３４ｅの閾値７０１ａ、７０１ｃ〜７０１ｅの合計が第１の値より小さい場合には、第１、第３〜第５のＦＰＧＡサーバ１３０ａ、１３０ｃ〜１３０ｅのＦＰＧＡ１３４ａ、１３４ｃ〜１３４ｅの閾値７０１ａ、７０１ｃ〜７０１ｅのうちの最も小さい第１のＦＰＧＡサーバ１３０ａのＦＰＧＡ１３４ａの閾値７０１ａを増加させる指示を第１のＦＰＧＡサーバ１３０ａに出力する。ここで、閾値制御部４０５は、稼働中の第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの閾値７０１ａ〜７０１ｅの合計が第１の値を超えない範囲で、閾値７０１ａを増加させる指示を出力する。
【００７０】
すると、第１のＦＰＧＡサーバ１３０ａは、実行可否判定部４１９により、閾値記憶部４１３の閾値を増加させる。次に、第１のＦＰＧＡサーバ１３０ａは、実行可否判定部４１９により、閾値記憶部４１３に記憶されている閾値７０２から消費電力計算部４１８が出力する全体の消費電力を減算し、その減算結果を管理サーバ１１０の実行ＦＰＧＡサーバ選択部４０２に出力する。
【００７１】
管理サーバ１１０は、実行ＦＰＧＡサーバ選択部４０２により、第１のＦＰＧＡサーバ１３０ａの減算結果が正値である場合には、第１のＦＰＧＡサーバ１３０ａの実行制御部４１５にタスクの実行依頼を出力する。その後、ステップＳ５０８では、第１のＦＰＧＡサーバ１３０ａは、タスクの回路の実行を再開する。
【００７２】
図７（Ｂ）は、図７（Ａ）に対応し、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの消費電力７０３ａ〜７０３ｅを示すタイムチャートである。管理サーバ１１０は、一時的なタスクの集中に対応可能にするため、閾値７０２を一時的に増加させる。これにより、消費電力７０４が一時的に増加する。ただし、その時以外では、本実施形態では、第１の実施形態と同様に、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅの消費電力７０３ａ〜７０３ｅは、偏りがなく、第１〜第５のＦＰＧＡサーバ１３０ａ〜１３０ｅのＦＰＧＡ１３４ａ〜１３４ｅに対してタスクがほぼ均等に分散して割り当てられる。
【００７３】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７５】
１００  クライアント
１０１，１１１，１３１ａ〜１３１ｅ  ＣＰＵ
１０２，１１２，１３２ａ〜１３２ｅ  ＲＡＭ
１０３，１１３，１３３ａ〜１３３ｅ  ＨＤＤユニット
１１０  管理サーバ
１２０  ネットワーク
１３０ａ〜１３０ｅ  ＦＰＧＡサーバ
１３４ａ〜１３４ｅ  ＦＰＧＡ
【図１】
2018185691.tif 000003
【図２】
2018185691.tif 000004
【図３】
2018185691.tif 000005
【図４】
2018185691.tif 000006
【図５】
2018185691.tif 000007
【図６】
2018185691.tif 000008
【図７】
2018185691.tif 000009