(57)【要約】【課題】ＦＰＧＡ内の各機能モジュールの動作周波数を向上させた情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法を提供する。【解決手段】部分再構成領域２００は、複数の機能モジュールのうち自己に配置された機能モジュールを用いて処理を行う。配置決定部１２２は、各機能モジュールを各部分再構成領域２００のそれぞれに配置した場合の部分再構成領域２００毎の最大動作周波数を基に、機能モジュールの各部分再構成領域２００への配置を決定する。配置処理部１２１は、配置決定部１２２により決定された配置を基に部分再構成領域２００に機能モジュールを配置する。【選択図】図３
2017168957.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能モジュールのうち自己に配置された前記機能モジュールを用いて処理を行う複数の部分再構成領域と、
各前記機能モジュールを各前記部分再構成領域のそれぞれに配置した場合の前記部分再構成領域毎の最大動作周波数を基に、前記機能モジュールの各前記部分再構成領域への配置を決定する配置決定部と、
前記配置決定部により決定された配置を基に前記部分再構成領域に前記機能モジュールを配置する配置処理部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記配置決定部は、各前記機能モジュールを各前記部分再構成領域のそれぞれに配置した場合の最大動作周波数の最低値が最も高くなるように前記機能モジュールの各前記部分再構成領域への配置を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記配置決定部は、前記最大動作周波数が高い順に前記部分再構成領域と前記機能モジュールの種類とを組とした配置候補を取得し、取得した部分再構成領域と取得した種類の前記機能モジュールの配置候補に配置した場合に、特定の部分再構成領域に対して異なる種類の前記機能モジュールが配置候補として重複している場合、それら異なる種類の前記機能モジュールを前記機能モジュールの配置が完了した配置済領域以外の前記部分再構成領域に配置した場合の最大動作周波数の最高値が低い方の種類の前記機能モジュールを前記特定の部分再構成領域に配置することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記機能モジュールの配置が完了した配置済領域のうち使用しない不使用領域がある場合、且つ前記配置済領域の中に、前記機能モジュールによる処理が完了した完了領域がある場合、前記完了領域を前記不使用領域として配置された前記機能モジュールを無効化し、前記不使用領域から前記機能モジュールが配置可能な前記部分再構成領域を生成する消去部
をさらに備えたことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記配置決定部は、配置決定時に前記配置済領域が存在する場合、前記配置済領域以外の前記部分再構成領域を用いて配置した場合の隠蔽処理時間と、前記消去部により前記配置済領域から生成された機能モジュールを配置可能な前記部分再構成領域を用いて配置した場合の非隠蔽処理時間とを基に前記機能モジュールの配置を決定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記配置決定部は、順次段階を経て行われる複数の処理における各前記処理で用いる前記機能モジュールの各前記部分再構成領域への配置について、次の段階の処理以降の所定段階までの各前記段階での配置決定時における、前記配置済領域以外の前記部分再構成領域を用いて配置した場合の隠蔽処理時間及び前記消去部により前記配置済領域から生成された機能モジュールを配置可能な前記部分再構成領域を用いて配置した場合の非隠蔽処理時間を基に、前記所定段階までの処理を行う場合に最も処理時間が短くなるように配置を決定することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
演算処理部と、
複数の機能モジュールのうち自己に配置された前記機能モジュールを用いて、前記演算処理部と協働して処理を行う複数の部分再構成領域と、
各前記機能モジュールを各前記部分再構成領域のそれぞれに配置した場合の各最大動作周波数を、前記部分再構成領域毎に記憶する記憶部と、
前記記憶部が記憶する最大動作周波数を基に、前記機能モジュールの各前記部分再構成領域への配置を決定する配置決定部と、
前記配置決定部により決定された配置を基に前記部分再構成領域に前記機能モジュールを配置する配置処理部と
を備えたことを特徴とする情報処理システム。
【請求項８】
複数の機能モジュールを予め決められた複数の部分再構成領域のそれぞれに配置した場合の各最大動作周波数を、前記部分再構成領域毎に記憶し、
記憶した最大動作周波数を基に、前記機能モジュールの各前記部分再構成領域への配置を決定し、
決定した配置を基に前記部分再構成領域に前記機能モジュールを配置し、
前記機能モジュールが配置された前記部分再構成領域を用いて処理を行う
ことを特徴とする情報処理方法。
【請求項９】
複数の機能モジュールを予め決められた複数の部分再構成領域のそれぞれに配置した場合の各最大動作周波数を、前記部分再構成領域毎に記憶し、
記憶した最大動作周波数を基に、前記機能モジュールの各前記部分再構成領域への配置を決定し、
決定した配置を基に前記部分再構成領域に前記機能モジュールを配置し、
前記機能モジュールが配置された前記部分再構成領域を用いて処理を行う
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
サーバなどの情報処理装置は、これまで、ＣＰＵ（Central  Processing  Unit）をマルチコアにするなどして性能の向上を図ってきた。これに対して、近年、ＣＰＵだけでは困難な処理を行わせる手段として、機能変更が可能なハードウェアであるＦＰＧＡ（Field  Programmable  Gate  Array）が注目されてきている。すなわち、サーバにＣＰＵに加えてＦＰＧＡを搭載することで性能を上げる試みがなされている。このようなＦＰＧＡを用いた汎用計算サーバは、例えば、データセンタへの導入が検討されている。
【０００３】
ＦＰＧＡでは、今現在のハードウェア構成から、要求される機能や性能に応じて新たにマッピングするハードウェア構成を再構成することができる。さらに、ＦＰＧＡは、動作している状態で一部を書き換えることが可能であり、これは動的再構成や部分的再構成と呼ばれる。ＦＰＧＡの動的再構成の機能を活用する汎用計算サーバにおいて、汎用的に性能を向上させる一形態として、ＦＰＧＡは、次に挙げるような特徴を有するものとする。１つの特徴としては、ＦＰＧＡは、再構成可能な領域を複数有し、各回路モジュールは再構成可能な領域のどこにでも配置することができるという特徴を有する。また他の特徴としては、ＦＰＧＡは、求められる性能要件に合わせて、ある種類の回路モジュールが複数搭載されるという特徴を有する。
【０００４】
再構成可能な領域が複数あるＦＰＧＡには、例えば、固定領域（Static  Region）と複数の部分再構成領域（ＰＲＲ：Partial  Reconfigurable  Region）が存在するものがあるとする。また、ＦＰＧＡは、搭載される回路モジュールである部分再構成モジュール（ＰＲＭ：Partial  Reconfigurable  Module）の組み合わせにより各種機能が実現されるものとする。ＰＲＭは、コンフィグレーションデータを各ＰＲＲに対応するコンフィグレーションメモリに書き込むことにより、各ＰＲＲに配置することができる。コンフィグレーションデータは、回路モジュールのライブラリであるＩＰ（Intellectual  Property）を物理的なイメージに落としたデータである。より詳しくは、コンフィグレーションデータはビットストリームに変換された上で、ＦＰＧＡに送られる。
【０００５】
ＰＲＭは、上記した特徴が示すように、どのＰＲＲにも配置することが可能である。例えば、全てのＰＲＲの周囲の固定領域には汎用バス回路が構成されており、各ＰＲＭは、汎用バスなどの共通インタフェースを有することにより、どのＰＲＲに配置してもバスに接続することができる。ここで、各ＰＲＲは同じ周波数で動作させるものとする。そのため、共通部となるインターコネクトや制御部との間でクロックの非同期載せ替えは行わなくてよい。
【０００６】
また、各ＰＲＲのリソースが同じである場合、コンフィグレーションデータは、どのＰＲＲに配置した場合でも同じ内容のものを用いることができる。そこで、ＰＲＲのコンフィグレーションデータが同じであれば、配置するＰＲＲの位置情報及びチェックサムなどを変更することで、各ＰＲＲの位置に応じたビットストリームを生成することができる。
【０００７】
各ＰＲＲが同じ周波数で動作する場合、ＰＲＭは、どのＰＲＲに配置しても論理動作は同じであり、基本的には動作速度の優劣は発生しない。このようにＰＲＭはどのＰＲＲに配置しても優劣が発生しないため、空いているＰＲＲがあれば、ＰＲＭは、どの空いているＰＲＲに配置されることもできる。また、空いているＰＲＲが無い場合、既にＰＲＭが配置されたＰＲＲの中のどのＰＲＲを新しいＰＲＭに置き換えるかにはいくつかの方法がある。例えば、使われる可能性が低いＰＲＭを無効化することでそのＰＲＭが配置されていたＰＲＲを空ける。この場合、使われる可能性が低いＰＲＭは、タスクスケジューラなどを用いることで決定される。
【０００８】
さらに、ＦＰＧＡ内においてＰＲＭが複数使用される場合でも、ＰＲＭの最大動作周波数は一意に決められる。一般的には、配置されたＰＲＲの中で最大動作周波数が最小となる値が、ＰＲＭの最大動作周波数として保証される。
【０００９】
ただし、同じＰＲＭでも配置するＰＲＲによって、動作可能な最大動作周波数が異なる場合がある。この理由として以下のような理由が考えられる。例えば、固定領域にマッピングされる回路に依存して、各ＰＲＲのＩ／Ｏ（Input/Output）端子から固定領域に存在するＦＦ（Flip  Flap）までのパスの長さが異なる。また、Xilinx（登録商標）  SSI（Stacked  Silicon  Interconnect）構造などの複数ダイ構成のＦＰＧＡなどの場合、ダイ毎のプロセス条件や性能のバラつきの差により、セルスピードが異なる。また、各ＰＲＲで使用可能なリソースが異なる場合があり、同じ機能ＩＰであってもＰＲＲ内のマッピング結果が異なることがある。使用可能なリソースが異なる場合とは、ＰＲＲの中に不良素子が存在し、その不良素子を使用せずにマッピングが行われる場合や、各ＰＲＲ領域に同じリソースが割り当てられていない場合などである。この場合、ビットストリーム自体、ＰＲＲ毎個別に生成されることになる。
【００１０】
なお、ＦＰＧＡにおける回路モジュールの配置の技術として、基本論理セル回路の動作状態に応じて、基本論理セル回路及び結線スイッチ回路の動作モードを適切に設定する従来技術がある。また、回路構成回路又は回路配線回路の部分回路毎にトランジスタの動作特性を設定する再構成可能回路の従来技術がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００７−８２０１７号公報
【特許文献２】国際公開第２００９／１２３０９０号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
一方、各ＰＲＭに最大動作周波数は一意に設定される。例えば、ＰＲＲにマッピングされたＰＲＭが単一ならば、最大動作周波数はそのＰＲＭの最大動作周波数となる。これに対して、複数のＲＰＭが１つのＰＲＲにマッピングされた場合、マッピングされているＰＲＭの最大動作周波数の内の最小の周波数が、そのＰＲＲにマッピングされたすべてのＰＲＭの最大動作周波数として設定される。
【００１３】
このように、各ＰＲＭは、マッピングされるＰＲＲによって動作可能な最大動作周波数が変化することがある。そのため、ＰＲＭのマッピング状態によっては、ＦＰＧＡの性能が最大限に生かされていないおそれがある。
【００１４】
例えば、従来のＰＲＭのマッピングルールとしては、以下のようなルールが用いられていた。ＰＲＭの追加時に追加個数分のＰＲＲがあれば空きのＰＲＲの中で番号が若い順にＰＲＭを配置する。あるＰＲＲに配置されたＰＲＭを用いたモジュール処理完了後は、すぐにそのＰＲＲからＰＲＭを無効化し、そのＰＲＲを使用可能にする。しかし、このようなルールを用いた場合、ＰＲＭを各ＰＲＲに配置した場合の最大動作周波数は考慮されておらず、ＦＰＧＡ内の各機能モジュールの動作周波数を向上させることは困難であり、それらＦＰＧＡが搭載された情報処理装置の性能を向上させることは困難である。
【００１５】
この点、基本論理セル回路の動作状態に応じて動作モードを設定する従来技術を用いても、ＦＰＧＡ内の各機能モジュールの動作周波数を向上させることは困難であり、それらＦＰＧＡが搭載された情報処理装置の性能を向上させることは困難である。また、回路構成回路又は回路配線回路の部分回路毎にトランジスタの動作特性を設定する従来技術を用いても、ＦＰＧＡ内の各機能モジュールの動作周波数を向上させることは困難であり、それらＦＰＧＡが搭載された情報処理装置の性能を向上させることは困難である。
【００１６】
開示の技術は、上記に鑑みてなされたものであって、ＦＰＧＡ内の各機能モジュールの動作周波数を向上させた情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示する情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法の一つの態様において、複数の部分再構成領域は、複数の機能モジュールのうち自己に配置された前記機能モジュールを用いて処理を行う。配置決定部は、各前記機能モジュールを各前記部分再構成領域のそれぞれに配置した場合の前記部分再構成領域毎の最大動作周波数を基に、前記機能モジュールの各前記部分再構成領域への配置を決定する。配置処理部は、前記配置決定部により決定された配置を基に前記部分再構成領域に前記機能モジュールを配置する。
【発明の効果】
【００１８】
本願の開示する情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法の一つの態様によれば、ＦＰＧＡ内の各機能モジュールの動作周波数を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、サーバのブロック図である。
【図２】図２は、ＦＰＧＡの内部構成を示すブロック図である。
【図３】図３は、コンフィグレーション制御部の詳細を表すブロック図である。
【図４】図４は、最大動作周波数情報テーブルの一例の図である。
【図５】図５は、部分再構成モジュールによる処理実行のタイムチャートである。
【図６】図６は、部分再構成モジュールの配置処理のフローチャートである。
【図７】図７は、初期選択候補設定の処理のフローチャートである。
【図８】図８は、対象モジュールの選択完了処理のフローチャートである。
【図９】図９は、候補アップデート処理のフローチャートである。
【図１０】図１０は、実施例２に係る部分再構成モジュールの配置決定処理のフローチャートである。
【図１１】図１１は、再構成隠蔽処理時間の算出処理のフローチャートである。
【図１２】図１２は、再構成非隠蔽処理時間の算出処理のフローチャートである。
【図１３】図１３は、再構成時間を隠蔽する場合の初期選択候補設定の処理のフローチャートである。
【図１４】図１４は、実施例２に係る部分再構成モジュールによる処理実行の効果を説明するためのタイムチャートである。
【図１５】図１５は、次処理及び次々処理の配置毎の処理時間を説明するための図である。
【図１６】図１６は、実施例３に係る部分再構成モジュールの配置決定処理のフローチャートである。
【図１７】図１７は、次処理優先隠蔽処理時間の算出処理のフローチャートである。
【図１８】図１８は、次々処理優先隠蔽処理時間の算出処理のフローチャートである。
【図１９】図１９は、次処理非隠蔽処理時間の算出処理のフローチャートである。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法が限定されるものではない。
【実施例１】
【００２１】
図１は、サーバのブロック図である。サーバ１は、「情報処理システム」の一例にあたる。サーバ１は、図１に示すように、ＦＰＧＡ１０、ＣＰＵ１１、ＲＡＭ（Random  Access  Memory）１２〜１４及びＲＯＭ（Read  Only  Memory）１５を有する。さらに、サーバ１は、入力装置１６、出力装置１７、記憶装置１８、ネットワークＩＦ１９及び周辺装置２０を有する。
【００２２】
ＲＡＭ１４及びＲＯＭ１５は、主記憶装置である。ＲＡＭ１４は、例えば、ＤＲＡＭ（Dynamic  Random  Access  Memory）である。ＲＯＭ１５は、例えばフラッシュメモリである。
【００２３】
ＣＰＵ１１は、ＲＡＭ１２に接続する。ＲＡＭ１２は、キャッシュメモリである。さらに、ＣＰＵ１１は、バスを介して、ＦＰＧＡ１０、ＲＡＭ１４、ＲＯＭ１５、入力装置１６、出力装置１７、記憶装置１８、ネットワークＩＦ１９及び周辺装置２０に接続される。ＣＰＵ１１は、ＲＡＭ１２、ＲＡＭ１４及びＲＯＭ１５などを用いて、ＦＰＧＡ１０と協働して演算処理を行う。ＣＰＵ１１は、「演算処理部」の一例にあたる。
【００２４】
また、ＣＰＵ１１は、操作者が操作する入力装置１６から、部分再構成モジュール（ＰＲＭ）を作成する指示を受ける。ＣＰＵ１１は、操作者からの指示を受けて、各部分再構成モジュールのコンフィグレーションデータを取得する。さらに、ＣＰＵ１１は、コンフィグレーションデータ取得の際に、事前にシミュレーションプログラムなどにおいて各部分再構成モジュールを動作させることで作成した、ＦＰＧＡ１０が有する部分再構成領域それぞれに各部分再構成モジュールを配置した場合の最大動作周波数を合わせて取得する。そして、ＣＰＵ１１は、使用する部分再構成モジュールのコンフィグレーションデータ、及び、部分再構成領域毎の各部分再構成モジュールを配置した場合の最大動作周波数の情報をＦＰＧＡ１０へ出力する。
【００２５】
ＦＰＧＡ１０は、ＣＰＵ１１からの指示にしたがい所定の機能を有するように再構成される。ＦＰＧＡ１０は、ＲＡＭ１３に接続されている。ＲＡＭ１３は、ＦＰＧＡ１０が使用可能なメモリである。さらに、ＦＰＧＡ１０は、バスを介して、ＣＰＵ１１、ＲＡＭ１４、ＲＯＭ１５、入力装置１６、出力装置１７、記憶装置１８、ネットワークＩＦ１９及び周辺装置２０に接続される。ＦＰＧＡ１０は、ＲＡＭ１３、ＲＡＭ１４及びＲＯＭ１５などを用いて、再構成により実装された機能を実行し、ＣＰＵ１１と協働して演算処理を行う。ＦＰＧＡ１０の再構成の機能については後で詳細に説明する。
【００２６】
入力装置１６は、操作者からの指示を受けて、情報をＣＰＵ１１及びＦＰＧＡ１０へ入力する。入力装置１６は、例えば、キーボードやマウスなどである。
【００２７】
出力装置１７は、ＣＰＵ１１などからの指示を受けて、指示された情報を出力する。出力装置１７は、例えば、モニタやプリンタなどである。
【００２８】
記憶装置１８は、補助記憶装置である。記憶装置１８は、例えば、ハードディスクである。
【００２９】
ネットワークＩＦ（Interface）１９は、ＣＰＵ１１やＦＰＧＡ１０などを外部のネットワークに接続するインタフェースである。ＣＰＵ１１やＦＰＧＡ１０は、ネットワーＩＦ１９を介して外部装置と通信を行う。
【００３０】
周辺装置２０は、例えば、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disc）、ＵＳＢ（Universal  System  Bus）メモリ又は外付けハードディスクなどである。
【００３１】
図２は、ＦＰＧＡの内部構成を示すブロック図である。ＦＰＧＡ１０は、図２に示すように、ホストＩＦ１０１、コンフィグレーション制御部１０２、フラッシュＩＦ１０３、ＤＲＡＭＩＦ１４、全体制御部１０５、ＣＬＫ（Clock）生成部１０６及び部分再構成領域２０１〜２０４を有する。ただし、図２では、部分再構成領域２０１〜２０４と４つを示したが、これは一例であり、部分再構成領域の個数に特に制限はない。以下では、部分再構成領域２０１〜２０４のそれぞれを区別しない場合、「部分再構成領域２００」という。
【００３２】
ホストＩＦ１０１、コンフィグレーション制御部１０２、フラッシュＩＦ１０３、ＤＲＡＭＩＦ１４、全体制御部１０５及びＣＬＫ生成部１０６は、ＦＰＧＡの固定領域に配置される。すなわち、ホストＩＦ１０１、コンフィグレーション制御部１０２、フラッシュＩＦ１０３、ＤＲＡＭＩＦ１４、全体制御部１０５及びＣＬＫ生成部１０６は、変更されない。
【００３３】
フラッシュメモリ１５０は、ＦＰＧＡ１０のフラッシュＩＦ１０３に接続される。フラッシュメモリ１５０は、例えば、図１のＲＯＭ１５にあたる。フラッシュメモリ１５０は、部分再構成モジュールのコンフィグレーションデータを格納する。
【００３４】
また、ＤＲＡＭ１４０は、ＦＰＧＡ１０のＤＲＡＭＩＦ１０４に接続される。ＤＲＡＭ１４０は、例えば、図１のＲＡＭ１４にあたる。ＤＲＡＭ１４０は、フラッシュメモリ１５０に格納されたコンフィグレーションデータによって生成される部分再構成モジュールが部分再構成領域２０１〜２０４のそれぞれに配置された場合の各最大動作周波数が登録された最大動作周波数情報テーブルを格納する。すなわち、最大動作周波数情報デーブルには、部分再構成モジュールと部分再構成領域２００との組のそれぞれに対して最大動作周波数が登録される。
【００３５】
ホストＩＦ１０１は、コンフィグレーション制御部１０２などがＣＰＵ１１などに繋がるバスに接続するためのインタフェースである。フラッシュＩＦ１０３は、コンフィグレーション制御部１０２などがフラッシュメモリ１０５に接続するためのインタフェースである。ＤＲＡＭＩＦ１０４は、コンフィグレーション制御部１０２などがＤＲＡＭ１４０に接続するためのインタフェースである。
【００３６】
全体制御部１０５は、バスを介して、コンフィグレーション制御部１０２、フラッシュＩＦ１０３、ＤＲＡＭＩＦ１４、ＣＬＫ（Clock）生成部１０６及び部分再構成領域２０１〜２０４に接続される。全体制御部１０５は、ＦＰＧＡ１０全体の動作を統括制御する。例えば、全体制御部１０５は、ＣＬＫ生成部１０６にクロックの生成を指示し、各部の動作のタイミングを制御する。
【００３７】
ＣＬＫ生成部１０６は、クロックをホストＩＦ１０１、コンフィグレーション制御部１０２、フラッシュＩＦ１０３、ＤＲＡＭＩＦ１０４、全体制御部１０５及び部分再構成領域２０１〜２０４へ出力する。図２では、ＣＬＫ生成部１０６は、部分再構成領域２０１〜２０４に接続するように記載したが、実際には他の各部へもクロックを供給する経路により接続される。ＣＫＬ生成部１０６は、全体制御部１０５からの制御を受けて各部へ出力するクロックの生成を行う。
【００３８】
部分再構成領域２００は、ＰＲＲである。図２では図示していないが、部分再構成モジュール２００は、ＣＰＵ１１、ＲＡＭ１４及びＲＯＭ１５などが接続するバスに接続する経路を有する。また、部分再構成モジュール２００は、ＲＡＭ１３に接続する経路を有する。
【００３９】
部分再構成領域２００は、コンフィグレーション制御部１０２からの制御を受けて、部分再構成モジュール（ＰＲＭ）が配置される。そして、部分再構成領域２０２は、配置された部分再構成モジュールの機能を有する回路となる。すなわち、部分再構成領域２０２は、入力された信号に対して配置された部分再構成モジュールを用いて処理を行う。
【００４０】
また、部分再構成領域２００は、コンフィグレーション制御部１０２からの制御を受けて、配置された部分再構成モジュールが無効化される。そして、部分再構成領域２００は、配置された部分再構成モジュールが無効化されると、再度部分再構成モジュールを置くことが可能となる。
【００４１】
コンフィグレーション制御部１０２は、どの部分再構成領域２００にどの部分再構成モジュールを配置するかを決定し、決定にしたがい部分再構成モジュールの部分再構成領域２００への配置を行う。そして、部分再構成領域２００に配置された部分再構成モジュールを用いた処理が完了すると、コンフィグレーション制御部１０２は、処理が完了した部分再構成領域２００に配置された部分再構成モジュールを無効化する。以下では、部分再構成領域２００に配置された部分再構成モジュールが実行する処理を、「モジュール処理」という。ここで、コンフィグレーション制御部１０２による部分再構成領域２００に対する部分再構成モジュールの配置について詳細に説明する。
【００４２】
図３は、コンフィグレーション制御部の詳細を表すブロック図である。ここで、コンフィグレーション制御部１０２について主に説明するため、図３のＦＰＧＡ１０では全体制御部１０５などの他の機能部を省略した。
【００４３】
情報作成部１１１は、例えば、サーバ１上のコンピュータプログラムがＣＰＵ１１で実行されることで実現される。情報作成部１１１は、コンフィグレーションデータ１５１及び最大動作周波数情報テーブル１４１を事前に作成する。そして、情報作成部１１１は、コンフィグレーションデータ１５１をフラッシュメモリ１５０に格納する。また、情報作成部１１１は、最大動作周波数情報テーブル１４１をＤＲＡＭ１４０に格納する。
【００４４】
また、サーバ１に実行させる処理は、１つ又は複数の処理段階を含む。以下では、１つ又は複数の処理段階を含む処理を、「一連の処理」という。情報作成部１１１は、サーバ１に一連の処理を実行させるためにどの処理段階でどの部分再構成モジュールを何個用いるかを算出し、算出した情報を配置決定部１２２へ設定する。
【００４５】
フラッシュメモリ１５０は、コンフィグレーションデータ１５１を保持する。また、ＤＲＡＭ１４１は、最大動作周波数情報テーブル１４１を保持する。
【００４６】
配置決定部１２２は、各処理段階で使用する部分再構成モジュールの種類及びそれぞれの個数の入力を情報作成部１１１から受ける。ここで、部分再構成モジュールの種類は、例えば、部分再構成モジュールの識別情報であり、配置決定部１２２は、部分再構成モジュールの種類から、コンフィグレーションデータ１５１の中でどのデータを用いるかが特定できる。以下では、現在実行している処理の次の段階の処理を「次処理」といい、次処理の次の段階の処理を「次々処理」という場合がある。また、以下では、ある処理を実行する部分動作モジュールが配置された部分再構成領域２００の最大動作周波数を、「その処理の最大動作周波数」という場合がある。
【００４７】
配置決定部１２２は、段階毎にその段階の処理で使用する部分再構成モジュールの配置先を順次決定する。すなわち、ある段階において、配置決定部１２２は、使用する部分再構成モジュールの種類及び個数を処理段階毎に取得する。そして、配置決定部１２２は、その段階の処理で使用する各部分再構成モジュールの部分再構成領域２００毎の最大動作周波数の情報を最大動作周波数情報テーブル１４１から取得する。そして、配置決定部１２２は、その段階の処理の最大動作周波数が最も高くなるように、すなわち、その段階での最大動作周波数の最低値がなるべく高くなるように、部分再構成モジュールの各部分再構成領域２００への配置を決定する。配置決定部１２２は、部分再構成モジュールの配置の決定を処理の段階毎に繰り返す。以下では、本実施例に係る配置決定部１２２による部分再構成モジュールの配置の決定処理の一例について説明する。
【００４８】
ここでは、部分再構成モジュールの種類の数をＭと表す。また、各部分再構成モジュールをｉ（０≦ｉ＜Ｍ）と表す。「ｉ」は、部分再構成モジュールのＩＤに対応する。ここでは、ｉと表される部分再構成モジュールを、「モジュールｉ」という場合がある。さらに、各モジュールｉの使用数をＮｉと表す。また、各部分再構成領域２００の数をＬと表す。さらに、部分再構成領域２００をｊ（０≦ｊ＜Ｌ）と表す。「ｊ」は、部分再構成領域のＩＤに対応する。ここでは、ｊと表される部分再構成領域２００を「領域ｊ」という場合がある。そして、領域ｊにモジュールｉを配置した場合の最大動作周波数をＦｍａｘ（ｉ，ｊ）と表す。
【００４９】
次に、配置決定部１２２は、各部分再構成モジュールにおいて、使用する数に１を加えた数の部分再構成領域２００を、最大動作周波数の高い順に抽出する。すなわち、配置決定部１２２は、モジュールｉについて値が大きい順にＮｉ＋１個のＦｍａｘ（ｉ，ｊ）を取得する。この取得したＦｍａｘ（ｉ，ｊ）に対応するＮｉ＋１個の領域ｊをモジュールｉの配置先ＰＲＲの「選択候補」という。このように、配置決定部１２２は、各部分再構成モジュールに対する初期選択候補の設定を行う。
【００５０】
さらに、配置決定部１２２は、各部分再構成領域２００の各部分再構成モジュールに対する状態を決定する。ここで、モジュールｉに対する領域ｊの状態を、Ｓｔａｔｅ（ｉ，ｊ）と表す。モジュールｉに対する領域ｊの状態には、選択候補、無効、未選択候補及び選択済がある。選択候補は、領域ｊが、モジュールｉの配置先ＰＲＲの候補として選択されたことを表す。ここでは、選択候補の状態を表す値を「ＣＡＮＤ（candidate）」と表す。無効は、領域ｊが、モジュールｉの配置先ＰＲＲとして選択されないことを表す。ここでは、無効の状態を表す値を、「ＩＮＶＡＬＩＤ」と表す。未選択候補は、領域ｊの状態が、モジュールｉに対して選択候補、無効又は選択済のいずれにも決まっていないことを表す。ここでは、未選択候補の状態を表す値を、「ＮＯＮ＿ＡＣＴＩＶＥ」と表す。選択済は、領域ｊがある部分再構成モジュールの配置先ＰＲＲとして決定したことを表す。ここでは、選択済の状態を表す値を、「ＳＥＴ」と表す。ここでは、配置決定部１２２は、各部分再構成モジュールの初期選択候補の各部分再構成モジュールに対する状態を、ＣＡＮＤにする。さらに、配置決定部１２２は、ＣＡＮＤと設定した以外の部分再構成領域２００の部分再構成モジュールに対する状態をＮＯＮ＿ＡＣＴＩＶＥにする。
【００５１】
次に、配置決定部１２２は、使用する全てのモジュールｉの各領域ｊにおける最大動作周波数の中から最も小さい、最大動作周波数、すなわち最低値のＦｍａｘ（ｉ，ｊ）を最低最大動作周波数とする。さらに、配置決定部１２２は、最低最大動作周波数を有する部分再構成モジュールを配置先ＰＲＲの選択を行う対象とする対象モジュールとして選択する。ここでは、対象モジュールのＩＤをｉ＿ｍｉｎとして、対象モジュールをモジュールｉ＿ｍｉｎと表す。
【００５２】
次に、配置決定部１２２は、対象モジュール（モジュールｉ＿ｍｉｎ）を各初期選択候補に配置した場合の、最大の最大動作周波数を選択する。すなわち、配置決定部１２２は、初期選択候補に対象モジュールを配置した時の最大動作周波数であるＦｍａｘ（ｉ＿ｍｉｎ，ｊ）の中から最大値となるものを選択する。そして、配置決定部１２２は、選択した最大動作周波数となる部分再構成領域２００を対象モジュールの配置先ＰＲＲとして選択する。ここで配置先ＰＰＲとして選択された部分再構成領域２００のＩＤをｊ＿ｍａｘとする。すなわち、対象モジュールの配置先ＰＰＲとして選択された部分再構成領域２００を、領域ｊ＿ｍａｘとする。さらに、配置決定部１２２は、対象モジュールの配置先ＰＲＲとして選択した部分再構成領域２００の状態を選択済とする。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ＿ｍｉｎ，ｊ＿ｍａｘ）＝ＳＥＴとする。
【００５３】
ここで、配置決定部１２２は、対象モジュール（モジュールｉ＿ｍｉｎ）に対して配置先ＰＲＲとして選択した部分再構成領域２００が使用数（Ｎｉ＿ｍｉｎ）になったか否かを判定する。対象モジュール（モジュールｉ＿ｍｉｎ）に対して配置先ＰＲＲとして選択した部分再構成領域２００が使用数（Ｎｉ＿ｍｉｎ）になった場合、配置決定部１２２は、次の処理を行う。すなわち、配置決定部１２２は、配置先ＰＲＲとして選択された部分再構成領域２００以外の部分再構成領域２００の対象モジュールに対する状態を全て無効とする。例えば、配置先ＰＲＲとして選択した部分再構成領域２００以外の部分再構成領域を領域ｅｊ（ｅｊ≠ｊ＿ｍａｘ）とした場合、配置決定部１２２は、Ｓｔａｔｅ（ｉ＿ｍｉｎ，ｅｊ）＝ＩＮＶＡＬＩＤとする。すなわち、配置決定部１２２は、全ての部分再構成領域２００の対象モジュールに対する状態を決定する選択完了処理を行う。その後、配置決定部１２２は、選択候補のアップデート処理を行う。
【００５４】
これに対して、対象モジュール（モジュールｉ＿ｍｉｎ）に対して選択候補とした部分再構成領域２００が使用数（Ｎｉ＿ｍｉｎ）に達していない場合、配置決定部１２２は、対象モジュールの選択完了処理を行わずに、選択候補のアップデート処理を行う。
【００５５】
配置決定部１２２は、選択候補のアップデート処理を以下のように行う。配置決定部１２２は、対象モジュール以外の部分再構成モジュールを順次選択する。そして、配置決定部１２２は、対象モジュールの配置先ＰＲＲとして選択した部分再構成領域２００が、選択した部分再構成モジュールの選択候補であるか否かを判定する。選択候補である場合、配置決定部１２２は、選択した部分再構成モジュールに対する状態が無効の部分再構成領域２００の中から、選択した部分再構成モジュールを配置した場合の最大動作周波数が最も高い部分再構成領域２００の状態を選択候補に変更する。すなわち、選択した部分再構成モジュールをモジュールｓｉとし、モジュールｓｉを配置した場合の最大動作周波数が最も高い部分再構成領域２００をｓｊとすると、配置決定部１２２は、Ｓｔａｔｅ（ｓｉ，ｓｊ）の値をＮＯＮ＿ＡＣＴＩＶＥからＣＡＮＤに変更する。
【００５６】
選択候補でない場合、又は他の部分再構成領域２００を選択候補に追加した後、配置決定部１２２は、対象モジュールの配置先ＰＲＲとして選択した部分再構成領域２００の選択した部分再構成モジュールに対する状態を無効にする。すなわち、選択した部分再構成モジュールをモジュールｓｉとすると、配置決定部１２２は、Ｓｔａｔｅ（ｓｉ，ｊ＿ｍａｘ）＝ＩＮＶＡＬＩＤとする。このようにして、配置決定部１２２は、対象モジュール以外の部分再構成モジュールの選択候補を更新する。
【００５７】
そして、配置決定部１２２は、使用する全ての部分再構成モジュールに対して配置個数分の配置先ＰＲＲを決定するまで以上の処理を繰り返す。これにより、配置決定部１２２は、使用する全ての部分再構成モジュールの配置先ＰＲＲを決定する。
【００５８】
そして、配置決定部１２２は、決定した部分再構成モジュールの部分再構成領域２００への配置の情報を配置処理部１２１へ通知する。また、配置決定部１２２は、部分再構成モジュールを配置した部分再構成領域２００が再構成可能となった旨の通知を消去部１２３から受ける。そして、配置決定部１２２は、次の処理段階における部分再構成モジュールの配置先として選択可能な部分再構成領域２００の中に通知を受けた部分再構成領域２００を入れた上で、次の処理段階における部分再構成モジュールの配置を決定する。すなわち、本実施例では、配置決定部１２２は、前の処理段階の処理が終わり、前の処理に用いられた部分再構成モジュールが無効化された後に、次の処理段階の部分再構成モジュールの配置を決定する。
【００５９】
配置処理部１２１は、使用する部分再構成モジュールの部分再構成領域２００への配置情報を配置決定部１２２から受ける。次に、配置処理部１２１は、配置情報により指定された部分再構成モジュールのコンフィグレーションデータ１５１をフラッシュメモリ１５０から取得する。そして、配置処理部１２１は、指定された配置先の部分再構成領域２００の情報及びコンフィグレーションデータ１５１から指定された部分再構成領域２００宛てのビットストリームを生成する。そして、配置処理部１２１は、生成したビットストリームを配置先の部分再構成領域２００へ出力し、配置先の部分再構成領域２００へ指定された部分再構成モジュールを配置する。
【００６０】
消去部１２３は、部分再構成領域２００の動作の状態を取得し、ある部分再構成領域２００に配置された部分再構成モジュールによるモジュール処理が完了した場合、その部分再構成領域２００に配置された部分再構成モジュールを無効化し、その部分再構成領域２００を再構成可能にする。そして、消去部１２３は、再構成可能にした部分再構成領域２００の情報を配置決定部１２２へ出力する。
【００６１】
ここで、図４及び５を参照して、一連の処理の各段階における配置決定部１２２による部分再構成モジュールの部分再構成領域２００への配置について具体的に説明する。図４は、最大動作周波数情報テーブルの一例の図である。また、図５は、部分再構成モジュールによる処理実行のタイムチャートである。ここでは、部分再構成領域２００が部分再構成領域＃０〜＃７の８つあり、また部分再構成モジュールＡ〜Ｄの４つの部分再構成モジュールを使用する場合で説明する。ここでは、一連の処理が、第１段階で部分再構成モジュールＡを用いた処理を行い、第２段階で部分再構成モジュールＢ及びＣを用いた処理を行い、第３段階で部分再構成モジュールＤを用いた処理を行い、さらに各処理を２回繰り返す処理の場合で説明する。さらに、各段階の処理において部分再構成モジュールＡ〜Ｄがそれぞれ４つの部分再構成領域２００を用いる場合で説明する。
【００６２】
まず、第１段階では、部分再構成モジュールＡが４つの部分再構成領域２００に配置された状態で処理が実行させる。そこで、配置決定部１２２は、部分再構成モジュールＡが部分再構成領域＃０〜＃７に配置された場合の最大動作周波数の最低値が最も高くなるように、部分再構成モジュールＡの配置を決定する。具体的には、配置決定部１２２は、上位４つの最大動作周波数に対応する部分再構成領域２００に部分再構成モジュールＡを配置することを決定する。図４より部分再構成領域＃０〜＃３に部分再構成モジュールＡが配置された場合が、最大動作周波数の上位４つの配置となる。そこで、配置決定部１２２は、部分再構成モジュールＡの部分再構成領域＃０〜＃３への配置を決定する。
【００６３】
図５の上段のグラフ３００は、最大動作周波数の最低値が最も高くなるように配置された場合のグラフである。上述のように配置が決定されることで、部分再構成モジュールＡは、図５の期間３０１に示すように配置される。部分再構成モジュールＡは、期間３０１で表される第１段階の処理を行う。図５における斜線部分は部分再構成モジュールの消去及び配置により経過する時間である。以下では、部分再構成モジュールの消去及び配置、又は、まだ部分再構成モジュールが配置されていない状態の部分再構成領域２００への部分再構成モジュールの配置を「部分再構成モジュールの再構成」という場合がある。図５では、各段階において各部分再構成領域２００に対応する位置に、それぞれの部分再構成領域２００で動作する部分再構成モジュールの符号を付加して表した。第１段階では、部分再構成モジュールＡは、図４の最大動作周波数情報テーブル１４１に示す部分再構成領域＃０及び＃１に配置された場合の２００ＭＨｚの最大動作周波数で動作する。
【００６４】
また、第２段階では、部分再構成モジュールＢ及びＣがそれぞれ４つの部分再構成領域２００に配置された状態で処理が実行させる。そこで、配置決定部１２２は、部分再構成モジュールＢ及びＣが部分再構成領域＃０〜＃７に配置された場合に最大動作周波数の最低値が最も高くなるように、部分再構成モジュールＢ及びＣの配置を決定する。具体的には、配置決定部１２２は、部分再構成モジュールＢを部分再構成領域＃２，＃３，＃６及び＃７に配置する。また、配置決定部１２２は、部分再構成モジュールＣを部分再構成領域＃０，＃１，＃４及び＃５に配置する。このように配置した場合、部分再構成モジュールＢ及びＣは、図４の部分再構成モジュールＣが部分再構成領域＃４及び＃５に配置された場合の２２５ＭＨｚの最大動作周波数で動作する。すなわち、部分再構成モジュールＢ及びＣは、期間３０２で表される第２段階では、２２５ＭＨｚの最大動作周波数で動作する。
【００６５】
この場合、期間３０２において、部分再構成領域＃０〜＃７それぞれで最大動作周波数がより高くなる部分再構成モジュールを選択することで、グラフ３００に示す配置を決定できた。これに対して、部分再構成モジュールＢ及びＣと部分再構成領域＃０〜＃７の組み合わせにおいて、最大動作周波数が高い順に組み合わせて配置を行っていった場合、ある部分再構成領域において最大動作周波数が部分再構成モジュールＢ及びＣの双方で同じ値を取ることが考えられる。その場合、部分再構成モジュールＢ及びＣを前記機能モジュールのすでに配置を決定した配置済の部分再構成領域以外の部分再構成領域に、部分再構成モジュールＢ及びＣを配置した場合の最大動作周波数の最高値が低い方の種類の部分再構成モジュールをその最大動作周波数が一致した部分再構成領域に配置する。
【００６６】
例えば、部分再構成領域＃０及び＃１に部分再構成モジュールＣを配置し、部分再構成領域＃２及び＃３に部分再構成モジュールＢを配置することが決定された状態で、部分再構成領域＃４及び＃５に部分再構成モジュールＢ及びＣのいずれを配置しても同じ最高動作周波数になる場合で説明する。この場合、部分再構成モジュールＢ及びＣを未だ配置が決まっていない部分再構成領域＃４〜＃７のそれぞれに配置した場合の最大動作周波数を考える。この場合に、部分再構成モジュールＣを部分再構成領域＃４〜＃７のそれぞれに配置した場合の最大動作周波数の最低値が、部分再構成モジュールＢを部分再構成領域＃４〜＃７のそれぞれに配置した場合の最大動作周波数の最低値よりも低くなったとする。その場合、部分再構成領域＃４及び＃５には、部分再構成モジュールＣが配置される。
【００６７】
また、第３段階では、部分再構成モジュールＤが４つの部分再構成領域２００に配置された状態で処理が実行させる。そこで、配置決定部１２２は、部分再構成モジュールＤが部分再構成領域＃０〜＃７に配置された場合に最大動作周波数の最低値が最も高くなるように、部分再構成モジュールＤの配置を決定する。具体的には、配置決定部１２２は、部分再構成モジュールＤを部分再構成領域＃２〜５に配置する。この場合、部分再構成モジュールＤは、図４に示す部分再構成領域＃２〜５に配置された場合の、２００ＭＨｚの最大動作周波数で動作する。すなわち、部分再構成モジュールＤは、期間３０３で表される第３段階では、２００ＭＨｚの最大動作周波数で動作する。その後、期間３０４〜３０６の第４段階〜第６段階では、期間３０１〜３０３と同じ処理が行われる。
【００６８】
これに対して、図５の下段のグラフ３１０は、空いている部分再構成領域２００の若番順に部分再構成モジュールを配置した場合のグラフである。
【００６９】
この場合、第１段階では部分再構成領域＃０〜＃７が全て空いているので、部分再構成モジュールＡは、部分再構成領域＃０〜＃３に配置される。これは、最大動作周波数の最低値が最も高くなるように配置された場合と同様の配置であるので、同様の最大動作周波数で動作する。
【００７０】
次に、第２段階では、８つ全ての部分再構成領域＃０〜＃７を使用するので、この場合も消去及び再構成を待つ。そして、部分再構成モジュールＢ及びＣは、部分再構成領域＃０〜＃７の若番順に配置される。この場合、部分再構成モジュールＣが部分再構成領域＃６及び＃７に配置されることで、部分再構成モジュールＢ及びＣは、図４に示すように、最大動作周波数の最低値が最も高くなるように配置された場合よりも遅い２００ＭＨｚの最大動作周波数で動作する。
【００７１】
次に、第２段階の後、部分再構成領域＃０〜＃７に空きが無いので、部分再構成領域＃０〜＃７から部分再構成モジュールＢ及びＣが無効化される。そして、番号の若い部分再構成領域＃０〜＃３に、部分再構成モジュールＤが配置される。
【００７２】
次の第３段階では、部分再構成領域＃４〜＃７という４つの領域が空いているので、部分再構成モジュールＤの終了前に、部分再構成領域＃４〜＃７へ部分再構成モジュールＡが配置される。そして、部分再構成モジュールＤによるモジュール処理終了後、すぐに部分再構成モジュールＡのモジュール処理が開始される。ただし、部分再構成モジュールＡは、＃６及び＃７に配置されているため、図４に示すように１５０ＭＨｚの最大動作周波数で動作することになる。
【００７３】
その後、第５段階及び第６段階で、第２段階及び第３段階と同様の配置が行われ、部分再構成モジュールＢ〜Ｄの処理が行われる。
【００７４】
この場合、第２段階以降の全ての段階で、部分再構成モジュールは、最大動作周波数の最低値が最も高くなるように配置された場合の方が、空いている領域の若番順に部分再構成モジュールを配置した場合よりも高い最大動作周波数で動作する。そのため、最大動作周波数の最低値が最も高くなるように配置された場合の方が、空いている部分再構成領域２００の若番順に部分再構成モジュールを配置した場合よりも、処理時間がＴ時間短縮される。
【００７５】
次に、図６を参照して、本実施例に係るＦＰＧＡ１０における部分再構成モジュールの配置処理の流れについて説明する。図６は、部分再構成モジュールの配置処理のフローチャートである。
【００７６】
配置決定部１２２は、入力装置１６からの入力された使用するモジュールの種類及び使用数を取得する（ステップＳ１）。例えば、配置決定部１２２は、モジュールの種類としてＭ個を取得し、Ｍ個の各モジュールｉの数としてそれぞれＮ１〜ＮＭ個を取得する。
【００７７】
次に、配置決定部１２２は、各モジュールの最大動作周波数を取得する（ステップＳ２）。例えば、配置決定部１２２は、Ｆｍａｘ（ｉ，ｊ）（０≦ｉ≦Ｍ，０≦ｊ≦Ｍ）を取得する。
【００７８】
次に、配置決定部１２２は、初期選択候補の設定を行う（ステップＳ３）。初期選択候補の設定の詳細については後で詳細に説明する。そして、配置決定部１２２は、各モジュールに対する初期設定候補の状態を選択候補（ＣＡＮＤ）に設定し、それ以外の状態を未選択候補（ＮＯＮ＿ＡＣＴＩＶＥ）に設定する。
【００７９】
次に、配置決定部１２２は、まだ状態が決定していない初期選択候補のうち、最大動作周波数が最小となる初期選択候補を特定する。そして、配置決定部１２２は、特定した選択候補を有する部分再構成モジュール（モジュールｉ＿ｍｉｎ）を対象モジュールとして選択する（ステップＳ４）。
【００８０】
次に、配置決定部１２２は、対象モジュールの選択候補のうち最大の最大動作周波数を有する選択候補（領域ｊ＿ｍａｘ）を、対象モジュールの配置先ＰＲＲとして決定する（ステップＳ５）。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ＿ｍｉｎ，ｊ＿ｍａｘ）＝ＳＥＴとする。
【００８１】
次に、配置決定部１２２は、対象モジュールの使用数から１を減算する（ステップＳ６）。すなわち、その時点の対象モジュールの使用数をＮｉ＿ｍｉｎとすると、配置決定部１２２は、Ｎｉ＿ｍｉｎ＝Ｎｉ＿ｍｉｎ−１とする。
【００８２】
次に、配置決定部１２２は、対象モジュールの使用数が０であるか否かを判定する（ステップＳ７）。対象モジュールの使用数が０でない場合（ステップＳ７：否定）、配置決定部１２２は、ステップＳ９へ進む。
【００８３】
これに対して、対象モジュールの使用数が０の場合（ステップＳ７：肯定）、配置決定部１２２は、対象モジュールの選択完了処理を実行する（ステップＳ８）。ここで、図６では、「＝＝」で等号を表す。この対象モジュールの選択完了処理の流れについては後で詳細に説明する。これにより、配置決定部１２２は、対象モジュールに対する全ての部分再構成領域２００の状態を確定する。
【００８４】
次に、配置決定部１２２は、候補アップデート処理を実行し、対象モジュール以外の部分再構成モジュールの選択候補を更新する（ステップＳ９）。この候補アップデート処理の流れについては後で詳細に説明する。
【００８５】
その後、配置決定部１２２は、全ての部分再構成モジュールの配置先ＰＲＲの選択が完了したか否かを判定する（ステップＳ１０）。配置先ＰＲＲの選択が残っている部分再構成モジュールがある場合（ステップＳ１０：否定）、配置決定部１２２は、ステップＳ４へ戻る。
【００８６】
これに対して、配置先ＰＲＲの選択が残っている部分再構成モジュールが無い場合（ステップＳ１０：肯定）、配置決定部１２２は、部分再構成モジュールの部分再構成領域２００への配置処理を終了する。
【００８７】
次に、図７を参照して、初期選択候補設定の処理の流れについて説明する。図７は、初期選択候補設定の処理のフローチャートである。図７のフローチャートで示された処理は、図６のステップＳ３で実行される処理の一例にあたる。ここでは、使用しない部分再構成モジュールの数は０個と与えられている場合で説明する。ここで、以降では、「＝」で代入を表し、「＝＝」で等号を表す。
【００８８】
部分再構成モジュールのモジュールＩＤをｉとし、モジュールｉと表す。部分再構成領域２００の領域ＩＤをｊとし、ＰＲＲｊと表す。モジュールｉのＰＲＲｊにおける最大動作周波数をＦｍａｘ（ｉ，ｊ）とする。ここで、配置決定部１２２は、一連の処理を実行する部分再構成モジュールがいずれも配置されていない状態の使用可能な部分再構成領域２００を領域ｊとする。
【００８９】
次に、配置決定部１２２は、ｉ＝０，ｊ＝０とする（ステップＳ１１）。
【００９０】
配置決定部１２２は、モジュール使用数Ｎｉ＝＝０か否か、すなわちモジュールｉを次処理で使用するか否かを判定する（ステップＳ１２）。モジュール使用数Ｎｉ＝０の場合（ステップＳ１２：肯定）、配置決定部１２２は、領域ｊのモジュールｉに対する状態を無効にする。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＩＮＶＡＬＩＤと設定する（ステップＳ１３）。これにより、一連の処理の用いられない部分再構成モジュールに対する部分再構成領域２００の状態が全て無効に設定される。
【００９１】
これに対して、モジュール使用数Ｎｉ＝０でない場合（ステップＳ１２：否定）、配置決定部１２２は、Ｆｍａｘ（ｉ，ｊ）が値が大きい順に数えてモジュール使用数Ｎｉ＋１以内か否かを判定する（ステップＳ１４）。Ｆｍａｘ（ｉ，ｊ）が上位Ｎｉ＋１以内の場合（ステップＳ１４：肯定）、配置決定部１２２は、領域ｊのモジュールｉに対する状態を選択候補に決定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＣＡＮＤと設定する（ステップＳ１５）。
【００９２】
一方、Ｆｍａｘ（ｉ，ｊ）が上位Ｎｉ＋１以内に入らない場合（ステップＳ１４：否定）、配置決定部１２２は、領域ｊのモジュールｉに対する状態を未選択候補に決定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＮＯＮ＿ＡＣＴＩＶＥと設定する（ステップＳ１６）。
【００９３】
次に、配置決定部１２２は、全ての部分再構成領域２００についてモジュールｉに対する状態の決定を行ったか否かを判定する。すなわち、配置決定部１２２は、ｊ＝＝Ｌ−１か否かを判定する（ステップＳ１７）。モジュールｉに対する状態が決定していない部分再構領域２００がある場合（ステップＳ１７：否定）、配置決定部１２２は、ｊの値を１つインクリメント（ｊ＝ｊ＋１）し（ステップＳ１８）、ステップＳ１２へ戻る。
【００９４】
これに対して、全ての部分再構成領域２００についてモジュールｉに対する状態の決定が完了した場合（ステップＳ１７：肯定）、配置決定部１２２は、全ての部分再構成モジュールについて、選択候補の特定を行ったか否かを判定する。すなわち、配置決定部１２２は、ｉ＝＝Ｍ−１か否かを判定する（ステップＳ１９）。選択候補の特定が終わっていない部分再構成モジュールがある場合（ステップＳ１９：否定）、配置決定部１２２は、ｉの値を１つインクリメント（ｉ＝ｉ＋１）し且つｊ＝０とした後（ステップＳ２０）、ステップＳ１２へ戻る。
【００９５】
これに対して、全ての部分再構成モジュールについて、選択候補の特定が完了した場合（ステップＳ１９：肯定）、配置決定部１２２は、初期選択候補設定の処理を終了する。これにより、配置決定部１２２は、全ての部分再構成モジュールに対する全ての部分再構成領域２００の状態を決定することができる。
【００９６】
ここで、図７では、使用しない部分再構成モジュールに対しても各部分再構成領域２００の状態を決定したが、配置決定部１２２は、予め使用する部分再構成モジュールを選択したうえで各部分再構成領域２００の状態を決定してもよい。その場合、ステップＳ１２及び１３を除き、ステップＳ１１からステップＳ１４へ進みステップＳ１８及びＳ２０の後の処理の進み先をステップＳ１４としてもよい。
【００９７】
次に、図８を参照して、対象モジュールの選択完了処理の流れについて説明する。図８は、対象モジュールの選択完了処理のフローチャートである。図８のフローチャートで示された処理は、図６のステップＳ８で実行される処理の一例にあたる。ここでは、対象モジュールがモジュールｉ＿ｍｉｎとされている場合で説明する。
【００９８】
ここでは、部分再構成領域２００の領域ＩＤをｊとする。配置決定部１２２は、ｊを初期値である０（ｊ＝０）に設定する（ステップＳ３１）。
【００９９】
次に、配置決定部１２２は、対象モジュール（モジュールｉ＿ｍｉｎ）に対する領域ｊの状態が選択済みか否かを判定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ＿ｍｉｎ，ｊ）＝＝ＳＥＴか否かを判定する（ステップＳ３２）。対象モジュールに対する領域ｊの状態が選択済みの場合（ステップＳ３２：肯定）、配置決定部１２２は、ステップＳ３４へ進む。
【０１００】
これに対して、対象モジュールに対する領域ｊの状態が選択済みでない場合（ステップＳ３２：否定）、配置決定部１２２は、対象モジュールに対する領域ｊの状態を無効にする。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ＿ｍｉｎ，ｊ）＝ＩＮＶＡＬＩＤとする（ステップＳ３３）。
【０１０１】
次に、配置決定部１２２は、全ての部分再構成領域２００について対象モジュールに対する状態の決定を行ったか否かを判定する。すなわち、配置決定部１２２は、ｊ＝＝Ｌ−１か否かを判定する（ステップＳ３４）。
【０１０２】
対象モジュールに対する状態が決定していない部分再構成領域２００がある場合（ステップＳ３４：否定）、配置決定部１２２は、ｊの値を１つインクリメント（ｊ＝ｊ＋１）し（ステップＳ３５）、ステップＳ３２へ戻る。
【０１０３】
これに対して、全ての部分再構成領域２００について対象モジュールに対する状態の決定を行った場合（ステップＳ３４：肯定）、配置決定部１２２は、対象モジュールの選択完了処理を終了する。
【０１０４】
次に、図９を参照して、候補アップデート処理の流れについて説明する。図９は、候補アップデート処理のフローチャートである。図９のフローチャートで示された処理は、図６のステップＳ９で実行される処理の一例にあたる。ここでは、対象モジュールがモジュールｉ＿ｍｉｎとされている場合で説明する。また、対象モジュールの配置先ＰＲＲとして領域ｊ＿ｍａｘが選択された場合で説明する。
【０１０５】
ここでは、部分再構成モジュールのモジュールＩＤをｉとし、モジュールｉと表す。配置決定部１２２は、ｉ＝０とする（ステップＳ４１）。
【０１０６】
配置決定部１２２は、モジュールｉが対象モジュール（ｉ＝ｉ＿ｍｉｎ）か否かを判定する（ステップＳ４２）。モジュールｉが対象モジュールの場合（ステップＳ４２：肯定）、配置決定部１２２は、ステップＳ４６へ進む。
【０１０７】
これに対して、モジュールｉが対象モジュールでない場合（ステップＳ４２：否定）、配置決定部１２２は、対象モジュールの配置先ＰＲＲとして選択された部分再構成領域２００（領域ｊ＿ｍａｘ）は、モジュールｉの選択候補であるか否かを判定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ＿ｍａｘ）＝＝ＣＡＮＤであるか否かを判定する（ステップＳ４３）。領域ｊ＿ｍａｘがモジュールｉの選択候補でない場合（ステップＳ４３：否定）、配置決定部１２２は、ステップ４５へ進む。
【０１０８】
一方、領域ｊ＿ｍａｘがモジュールｉの選択候補の場合（ステップＳ４３：肯定）、配置決定部１２２は、モジュールｉの未決定候補である部分再構成領域２００の中からモジュールｉを配置した場合の最大動作周波数が最も大きいものを選択する。そして、配置決定部１２２は、選択した部分再構成領域２００のモジュールｉに対する状態を選択候補に変更する（ステップＳ４４）。すなわち、選択した部分再構成領域２００を領域ｓｊとすると、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｓｊ）＝ＮＯＮ＿ＡＣＴＩＶＥをＳｔａｔｅ（ｉ，ｓｊ）＝ＣＡＮＤに変更する。
【０１０９】
次に、配置決定部１２２は、対象モジュールの配置先ＰＲＲとした部分再構成領域２００（領域ｊ＿ｍａｘ）のモジュールｉに対する状態を無効にする。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ＿ｍａｘ）＝ＩＮＶＡＬＩＤとする（ステップＳ４５）。
【０１１０】
その後、配置決定部１２２は、全ての部分再構成モジュールに対する選択候補のアップデートが終了したか否かを判定する。すなわち、配置決定部１２２は、ｉ＝＝Ｍ−１か否かを判定する（ステップＳ４６）。
【０１１１】
選択候補のアップデートが終了していない場合（ステップＳ４６：否定）、配置決定部１２２は、ｉを１つインクリメント（ｉ＝ｉ＋１）し(ステップＳ４７)、ステップＳ４２へ戻る。
【０１１２】
これに対して、全ての部分再構成モジュールに対する選択候補のアップデートが終了した場合（ステップＳ４６：肯定）、配置決定部１２２は、候補アップデート処理を終了する。
【０１１３】
ここで、図７〜９のフローでは、説明が分かり易いように、配置決定部１２２が、各変数を決定し、初期値を与えた上で各処理を実行するように説明したが、変数の決定や初期値の設定は行わなくてもよい。すなわち、配置決定部１２２は、部分再構成モジュールや部分再構成領域２００の情報をそのまま用いて各処理を行ってもよい。
【０１１４】
以上に説明したように、本実施例に係るＦＰＧＡは部分再構成モジュールの部分再構成領域への動的再構成を行う場合、最大動作周波数の最低値が最も大きくなるように配置する。これにより、各部分再構成モジュールを高い周波数動作が可能な部分再構成領域へ配置することができる。そのため、各部分再構成モジュールを高い周波数で動作させることができ、性能を向上させることができる。
【０１１５】
ここで、本実施例では、処理段階毎に他の処理と実行期間が重ならないように説明したが、例えば、第１処理が第２処理と並行して処理を行える場合には第１処理の終了を待たずに第２処理を実行できる。その場合、第１処理の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００を部分再構成モジュールの配置対象として上述した配置を行えばよい。
【実施例２】
【０１１６】
次に、実施例２について説明する。本実施例に係るＦＰＧＡは、次の段階の処理を行う場合に、実施中の処理が使用する部分再構成領域を使用して再構成するか、使用せずに実施中の処理に並行して再構成を行うかを決定して再構成を行うことが実施例１と異なる。そこで以下の説明では、部分再構成モジュールの配置を決定する機能について主に説明する。本実施例に係るサーバ及びＦＰＧＡも、図１〜３で表される。以下の説明では、実施例１と同じ各部の機能については説明を省略する。
【０１１７】
以下では、実行中の処理と並行して部分再構成モジュールの配置を行い次段階の処理を実行する場合を「再構成時間を隠蔽する場合」という。また、実行中の処理の終了後、実行中の処理が使用していた部分再構成領域を使用して部分再構成モジュールの配置を行った後に次段階の処理を実行する場合を「再構成時間を隠蔽しない場合」という。
【０１１８】
配置決定部１２２は、次の処理で使用する部分再構成モジュールの種類及び個数を取得する。そして、配置決定部１２２は、次の処理で使用する部分再構成モジュールを再構成する際の再構成時間、及び予め決められた所定周波数で各部分再構成モジュールを動作させた場合の実行時間を予測する。次の処理で使用する部分再構成モジュールを再構成する際の再構成時間には前段階の処理で使用された部分再構成領域２００から部分再構成モジュールが無効化される時間も含まれる。
【０１１９】
ここで、再構成時間は、一般的に部分再構成モジュールを配置する領域の大きさ、すなわち書き換えを行うコンフィグレーションデータの量に伴って大きくなる。このため、システム構成、コンフィグレーションデータが決まれば、再構成時間はほぼ決定される。そのため、再構成時間は事前情報から予測可能である。すなわち、配置決定部１２２は、システム構成、コンフィグレーションデータなどの事前情報から再構成時間を予測する。
【０１２０】
また、実行時間は、それ以前の段階のモジュール処理で決まる値などによって、ループ回数などの処理パラメータが変わるため、処理毎に大きく変わる可能性がある。すなわち、配置決定部１２２は、各処理で用いるパラメータが決まっていれば事前情報から実行時間を予測可能であるが、パラメータ変化やデータ内容で係る時間が大きく変化する場合、過去の実行時間から統計的に予測するなどの方法で実行時間を予測する。
【０１２１】
次に、配置決定部１２２は、再構成時間を隠蔽する場合に部分再構成モジュールの配置に使用可能な部分再構成領域２００を用いて、最大動作周波数の最低値が最も高くなるように配置した場合の最大動作周波数及び次処理の処理時間を求める。ここで、再構成時間を隠蔽する場合に部分再構成モジュールの配置に使用可能な部分再構成領域２００とは、処理実行中の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００である。
【０１２２】
ここで、配置決定部１２２は、処理実行中の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００から選択候補を選択して実施例１で説明した配置決定を行うことで、再構成時間を隠蔽する場合の配置を決定する。また、配置決定部１２２は、所定周波数での実行時間に所定周波数と、再構成時間を隠蔽する場合の求めた最大動作周波数との比を乗算することで、再構成時間を隠蔽する場合の次処理の処理時間を求める。
【０１２３】
次に、配置決定部１２２は、再構成時間を隠蔽しない場合に部分再構成モジュールの配置に使用可能な部分再構成領域２００を用いて、最大動作周波数の最低値が最も高くなるように配置した場合の最大動作周波数及び次処理の処理時間を求める。ここで、再構成時間を隠蔽しない場合に部分再構成モジュールの配置に使用可能な部分再構成領域２００とは、全処理で部分再構成モジュールが配置された部分再構成領域２００を含む全ての部分再構成領域２００である。
【０１２４】
ここで、配置決定部１２２は、全ての部分再構成領域２００から選択候補を選択して実施例１で説明した配置決定を行うことで、再構成時間を隠蔽しない場合の配置を決定する。また、配置決定部１２２は、所定周波数での実行時間に所定周波数と、再構成時間を隠蔽しない場合の求めた最大動作周波数との比を乗算することで、再構成時間を隠蔽しない場合の次処理の処理時間を求める。
【０１２５】
その後、配置決定部１２２は、再構成時間を隠蔽する場合の次処理の処理時間を、再構成隠蔽処理時間とする。また、配置決定部１２２は、算出した再構成時間を隠蔽しない場合の次処理の処理時間に予測した再構成時間を加算して再構成非隠蔽処理時間を算出する。そして、配置決定部１２２は、再構成隠蔽処理時間と再構成非隠蔽処理時間とを比較し、時間が短い方の配置方法を選択する。
【０１２６】
次に、図１０を参照して、本実施例に係る部分再構成モジュールの配置決定処理の流れについて説明する。図１０は、実施例２に係る部分再構成モジュールの配置決定処理のフローチャートである。
【０１２７】
配置決定部１２２は、次処理を実行する部分再構成モジュールの種類及び個数を取得する。そして、配置決定部１２２は、次処理を実行する部分再構成モジュールの再構成時間を予測する（ステップＳ１０１）。ここで、再構成時間をＴｒと表す。
【０１２８】
次に、配置決定部１２２は、次処理の所定周波数での実行時間を予測する（ステップＳ１０２）。ここで、次処理の所定周波数での実行時間を、Ｔｅｂａｓｅと表す。
【０１２９】
次に、配置決定部１２２は、再構成隠蔽処理時間を算出する（ステップＳ１０３）。ここで、再構成隠蔽処理時間を、Ｔａとする。再構成隠蔽処理時間の算出処理については、後で詳細に説明する。
【０１３０】
次に、配置決定部１２２は、再構成非隠蔽処理時間を算出する（ステップＳ１０４）。ここで、再構成非隠蔽処理時間を、Ｔｂとする。再構成非隠蔽処理時間の算出処理については、後で詳細に説明する。
【０１３１】
そして、配置決定部１２２は、再構成隠蔽処理時間が再構成非隠蔽処理時間より短いか否か、すなわちＴａ＜Ｔｂか否かを判定する（ステップＳ１０５）。
【０１３２】
再構成隠蔽処理時間が再構成非隠蔽処理時間より短い場合（ステップＳ１０５：肯定）、配置決定部１２２は、再構成時間を隠蔽する場合の配置処理を行うことを決定する（ステップＳ１０６）。その後、配置決定部１２２は、実行中の処理が終了する前に、決定した配置を配置処理部１２１に通知する。配置処理部１２１は、実行中の処理が終了する前に、配置決定部１２２が決定した配置にしたがい部分再構成モジュールを部分再構成領域２００に配置する。
【０１３３】
これに対して、再構成隠蔽処理時間が再構成非隠蔽処理時間以上の場合（ステップＳ１０５：否定）、配置決定部１２２は、再構成時間を隠蔽しない場合の配置処理を行うことを決定する（ステップＳ１０７）。配置決定部１２２は、消去部１２３から消去完了の通知を受信した後、決定した配置を配置処理部１２１に通知する。配置処理部１２１は、配置決定部１２２が決定した配置にしたがい部分再構成モジュールを部分再構成領域２００に配置する。
【０１３４】
次に、図１１を参照して、再構成隠蔽処理時間の算出処理の流れについて説明する。図１１は、再構成隠蔽処理時間の算出処理のフローチャートである。
【０１３５】
配置決定部１２２は、全ての部分再構成領域２００から処理実行中の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００を現空き領域として特定する（ステップＳ１１１）。
【０１３６】
次に、配置決定部１２２は、現空き領域で次処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ１１２）。このステップＳ１１２の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、実施例１とは異なる。そこで、再構成時間を隠蔽する場合の初期選択候補設定の処理については後で詳細に説明する。ここで、この配置を行った場合の動作周波数をＦａと表す。
【０１３７】
次に、配置決定部１２２は、決定した配置を実施した場合の次処理の実行時間を予測する（ステップＳ１１３）。ここで、決定した配置を実施した場合の次処理の実行時間をＴｅａと表す。この場合、配置決定部１２２は、Ｔｅａ＝Ｔｅｂａｓｅ＊（Ｆｂａｓｅ／Ｆａ）として、決定した配置を実施した場合の次処理の実行時間を求める。
【０１３８】
そして、配置決定部１２２は、求めた実行時間を再構成隠蔽処理時間とする（ステップＳ１１４）。すなわち、配置決定部１２２は、Ｔａ＝Ｔｅａとする。
【０１３９】
次に、図１２を参照して、再構成非隠蔽処理時間の算出処理の流れについて説明する。図１２は、再構成非隠蔽処理時間の算出処理のフローチャートである。
【０１４０】
配置決定部１２２は、全ての部分再構成領域２００を次処理用の空き領域として特定する（ステップＳ１２１）。
【０１４１】
次に、配置決定部１２２は、次処理用の空き領域で次処理の動作周波数が最大となる配置、すなわち最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ１２２）。このステップＳ１２２の処理の一例は、図６のフローチャートで表される処理にあたる。ここで、この配置を行った場合の動作主は数をＦｂと表す。
【０１４２】
次に、配置決定部１２２は、決定した配置を実施した場合の次処理の実行時間を予測する（ステップＳ１２３）。ここで、決定した配置を実施した場合の次処理の実行時間をＴｅｂと表す。この場合、配置決定部１２２は、Ｔｅｂ＝Ｔｅｂａｓｅ＊（Ｆｂａｓｅ／Ｆｂ）として、決定した配置を実施した場合の次処理の実行時間を求める。
【０１４３】
そして、配置決定部１２２は、求めた実行時間に予測した再構成時間を加算し再構成非隠蔽処理時間とする（ステップＳ１２４）。すなわち、配置決定部１２２は、Ｔｂ＝Ｔｒ＋Ｔｅｂとする。
【０１４４】
次に、図１３を参照して、再構成時間を隠蔽する場合の初期選択候補設定の処理の流れについて説明する。図１３は、再構成時間を隠蔽する場合の初期選択候補設定の処理のフローチャートである。図１３のフローチャートで示された処理は、図１１のステップＳ１１２で実行される処理に含まれる初期選択候補設定の処理の一例にあたる。ここでは、使用しない部分再構成モジュールの数は０個と与えられている場合で説明する。
【０１４５】
部分再構成モジュールのモジュールＩＤをｉとして、モジュールｉと表す。また、部分再構成領域２００の領域ＩＤをｊとして、ＰＲＲｊと表す。さらに、モジュールｉのＰＲＲｊにおける最大動作周波数をＦｍａｘ（ｉ，ｊ）と表す。
【０１４６】
配置決定部１２２は、ｉ＝０，ｊ＝０とする（ステップＳ１３１）。
【０１４７】
配置決定部１２２は、領域ｊが現空き領域に含まれるか否かを判定する（ステップＳ１３２）。領域ｊが現空き領域に含まれない場合（ステップＳ１３２：否定）、配置決定部１２２は、ステップＳ１３４へ進む。
【０１４８】
これに対して、領域ｊが現空き領域に含まれる場合（ステップＳ１３２：肯定）、配置決定部１２２は、モジュール使用数Ｎｉ＝０か否か、すなわちモジュールｉを次処理で使用するか否かを判定する（ステップＳ１３３）。モジュール使用数Ｎｉ＝０の場合（ステップＳ１３３：肯定）、配置決定部１２２は、ステップＳ１３４へ進む。
【０１４９】
そして、配置決定部１２２は、領域ｊのモジュールｉに対する状態を無効にする。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＩＮＶＡＬＩＤと設定する（ステップＳ１３４）。
【０１５０】
これに対して、モジュール使用数Ｎｉ＝０でない場合（ステップＳ１３３：否定）、配置決定部１２２は、Ｆｍａｘ（ｉ，ｊ）が値が大きい順に数えてモジュール使用数Ｎｉ＋１以内か否かを判定する（ステップＳ１３５）。Ｆｍａｘ（ｉ，ｊ）が上位Ｎｉ＋１以内の場合（ステップＳ１３５：肯定）、配置決定部１２２は、領域ｊのモジュールｉに対する状態を選択候補に決定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＣＡＮＤと設定する（ステップＳ１３６）。
【０１５１】
一方、Ｆｍａｘ（ｉ，ｊ）が上位Ｎｉ＋１以内に入らない場合（ステップＳ１３５：否定）、配置決定部１２２は、領域ｊのモジュールｉに対する状態を未選択候補に決定する。すなわち、配置決定部１２２は、Ｓｔａｔｅ（ｉ，ｊ）＝ＮＯＮ＿ＡＣＴＩＶＥと設定する（ステップＳ１３７）。
【０１５２】
次に、配置決定部１２２は、全ての部分再構成領域２００についてモジュールｉに対する状態の決定を行ったか否かを判定する。すなわち、配置決定部１２２は、ｊ＝Ｌ−１か否かを判定する（ステップＳ１３８）。モジュールｉに対する状態が決定していない部分再構成領域２００がある場合（ステップＳ１３８：否定）、配置決定部１２２は、ｊの値を１つインクリメント（ｊ＝ｊ＋１）し（ステップＳ１３９）、ステップＳ１３２へ戻る。
【０１５３】
これに対して、全ての部分再構成領域２００についてモジュールｉに対する状態の決定が完了した場合（ステップＳ１３８：肯定）、配置決定部１２２は、全ての部分再構成モジュールについて、選択候補の特定を行ったか否かを判定する。すなわち、配置決定部１２２は、ｉ＝Ｍ−１か否かを判定する（ステップＳ１４０）。選択候補の特定が終わっていない部分再構成モジュールがある場合（ステップＳ１４０：否定）、配置決定部１２２は、ｉの値を１つインクリメント（ｉ＝ｉ＋１）し且つｊ＝０とした後（ステップＳ１４１）、ステップＳ１３２へ戻る。
【０１５４】
これに対して、全ての部分再構成モジュールについて、選択候補の特定が完了した場合（ステップＳ１４０：肯定）、配置決定部１２２は、初期選択候補設定の処理を終了する。これにより、配置決定部１２２は、全ての部分再構成モジュールに対する全ての部分再構成領域２００の状態を決定することができる。
【０１５５】
ここで、図１３では、配置決定部１２２は、処理を実行中の部分再構成モジュールが配置された部分再構成領域２００の状態を無効としたが、これを他のモジュールで使用中という新たに加えた状態として、該当の部分再構成領域２００を選択対象外としてもよい。
【０１５６】
図１４は、実施例２に係る部分再構成モジュールによる処理実行の効果を説明するためのタイムチャートである。ここでは、図４における最大動作周波数情報テーブル１４１を用いて部分再構成モジュールの配置を行う場合で説明する。図１４におけるグラフ３３１は、空いている部分再構成領域２００の若番順に部分再構成モジュールを配置した場合のグラフである。グラフ３３２は、高い周波数の部分再構成領域２００に部分再構成モジュールを配置した場合のグラフである。グラグ３３３は、再構成時間の隠蔽を行った場合のグラフである。
【０１５７】
本実施例に係る配置決定部１２２は、部分再構成モジュールＡ〜Ｄについて再構成時間の隠蔽を行った場合と行わない場合について処理時間を比較し、処理時間が短い方を選択する。この場合、グラフ３３２及び３３３に示すように、配置決定部１２２は、部分再構成モジュールＡ、Ｂ及びＤについては、再構成時間の隠蔽を行わない配置を選択する。これに対して、部分再構成モジュールＣについては、配置決定部１２２は、部分再構成モジュールＣの動作周波数を遅くしても再構成時間を隠蔽した方が全体的な処理時間が短縮できるため、再構成時間を隠蔽する配置を選択する。また、部分再構成もモジュールＤを処理後の部分再構成モジュールＡの処理についても、部分再構成モジュールＡの動作周波数を遅くしても再構成時間を隠蔽した方が全体的な処理時間が短縮できるため、配置決定部１２２は、再構成時間を隠蔽する配置を選択する。
【０１５８】
実施例１のように高い周波数の部分再構成領域２００に部分再構成モジュールを配置した場合、グラフ３３２に示すように、グラフ３３１に比べて処理時間が時間Ｔ１短くなる。ところが、本実施例に係る部分再構成モジュールの配置方法を用いて再構成時間の隠蔽を考慮した場合、グラフ３３３に示すようにグラフ３３１に比べて処理時間が時間Ｔ２短くなる。すなわち、本実施例に係る部分再構成モジュールの配置方法を用いた場合、高い周波数の部分再構成領域２００に部分再構成モジュールを配置した場合に比べてＴ２時間短くなる。
【０１５９】
以上に説明したように本実施例に係るＦＰＧＡは、再構成時間を隠蔽しない場合と再構成時間を隠蔽する場合との実行時間を求め、より処理時間が短い方の配置処理を選択して配置を行う。これにより、より実行時間を短くすることができる。
【実施例３】
【０１６０】
次に、実施例３について説明する。本実施例に係るＦＰＧＡは、次処理以降の段階の処理での部分再構成モジュールの配置を考慮して、次処理の部分再構成モジュールの配置を行うことが実施例１と異なる。そこで以下の説明では、部分再構成モジュールの配置を決定する機能について主に説明する。本実施例に係るサーバ及びＦＰＧＡも、図１〜３で表される。以下の説明では、実施例１と同じ各部の機能については説明を省略する。
【０１６１】
配置決定部１２２は、次処理及び次々処理で使用する部分再構成モジュールを配置する際の再構成時間を予測する。また、配置決定部１２２は、所定周波数で次処理及び次々処理で使用する部分再構成モジュールを動作させた場合の実行時間を予測する。
【０１６２】
次に、配置決定部１２２は、次処理を隠蔽する場合又は隠蔽しない場合、及び、次処理を隠蔽する場合又は隠蔽しない場合の組み合わせのそれぞれにおける、次処理及び次々処理の部分再構成モジュールの配置を決定し処理時間を求める。ただし、配置決定部１２２は、組み合わせに次処理又は次々処理の何れを優先するかの場合分けがある場合には、それらの場合分け毎に配置及び処理時間を求める。ここで、処理時間とは一連の処理において実行中の処理が完了してから次々処理が完了するまでにかかる時間である。そして、配置決定部１２２は、処理時間が最も短い配置を次処理及び次々処理の配置と決定する。
【０１６３】
ただし、配置決定部１２２は、次処理を隠蔽する場合又は隠蔽しない場合、及び、次処理を隠蔽する場合又は隠蔽しない場合の組み合わせすべてについて処理時間を求めなくてもよい。例えば、予め決められた組み合わせについて配置及び処理時間を求めてもよい。以下では、典型的な３つの場合を使用する場合について説明する。
【０１６４】
配置決定部１２２は、次処理及び次々処理ともに再構成時間を隠蔽する場合で且つ次処理を優先する配置について処理時間を求める。具体的には、配置決定部１２２は、現空き領域で次処理の動作周波数が最大となるように次処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次処理の処理時間を求める。また、配置決定部１２２は、現空き領域から決定した次処理の配置で使用される部分再構成領域２００を除き次々処理用の空き領域を求める。そして、配置決定部１２２は、求めた次々処理用の空き領域で次々処理の動作周波数が最大となるように次々処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次々処理の処理時間を求める。その後、配置決定部１２２は、求めた次処理の処理時間及び次々処理の処理時間を加算して、次処理及び次々処理ともに再構成時間を隠蔽する場合で次処理を優先する場合の処理時間を算出する。以下では、次処理及び次々処理ともに再構成時間を隠蔽する場合で次処理を優先する場合の配置を「次処理優先隠蔽配置」といい、その処理時間を、「次処理優先隠蔽処理時間」という。
【０１６５】
次に、配置決定部１２２は、次処理及び次々処理ともに再構成時間を隠蔽する場合で且つ次々処理を優先する配置について処理時間を求める。具体的には、配置決定部１２２は、現空き領域で次々処理の動作周波数が最大となるように次々処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次々処理の処理時間を求める。また、配置決定部１２２は、現空き領域から決定した次々処理の配置で使用される部分再構成領域２００を除き次処理用の空き領域を求める。そして、配置決定部１２２は、求めた次処理用の空き領域で次処理の動作周波数が最大となるように次処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次処理の処理時間を求める。その後、配置決定部１２２は、求めた次処理の処理時間及び次々処理の処理時間を加算して、次処理及び次々処理ともに再構成時間を隠蔽する場合で次々処理を優先する場合の処理時間を算出する。以下では、次処理及び次々処理ともに再構成時間を隠蔽する場合で次々処理を優先する場合の配置を「次々処理優先隠蔽配置」といい、その処理時間を、「次々処理優先隠蔽処理時間」という。
【０１６６】
次に、配置決定部１２２は、次処理で再構成時間を隠蔽せず且つ次々処理で再構成時間を隠蔽する場合の処理時間を求める。具体的には、全ての部分再構成領域２００を用いて次処理の動作周波数が最大となるように次処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次処理の処理時間を求める。また、配置決定部１２２は、全ての部分再構成領域２００から次処理の部分再構成モジュールが配置された部分再構成領域２００を除き次々処理用の空き領域を求める。そして、配置決定部１２２は、求めた次々処理用の空き領域で次々処理の動作周波数が最大となるように次々処理の部分再構成モジュールの配置を決定する。そして、配置決定部１２２は、決定した配置の場合の次々処理の処理時間を求める。その後、配置決定部１２２は、求めた次処理の処理時間及び次々処理の処理時間を加算して、次処理で再構成時間を隠蔽せず且つ次々処理で再構成時間を隠蔽する場合の処理時間を算出する。以下では、次処理で再構成時間を隠蔽せず且つ次々処理で再構成時間を隠蔽する場合の配置を「次処理非隠蔽配置」と言い、その処理時間を、「次処理非隠蔽処理時間」という。
【０１６７】
そして、配置決定部１２２は、求めた次処理優先隠蔽処理時間、次々処理優先隠蔽処理時間及び次処理非隠蔽処理時間の中で最も短いものを特定する。そして、配置決定部１２２は、特定した処理時間になる配置に次処理及び次々処理の配置を決定する。
【０１６８】
この後、配置決定部１２２は、次処理の実行が開始された後に、次々処理及び次々処理の次の処理について同様に配置を決定する処理を行う。ただし、配置の決定方法はこれに限らず、例えば、配置決定部１２２は、決定した次々処理の配置をそのまま使うように２つの処理毎に配置を決定していってもよい。
【０１６９】
図１５は、次処理及び次々処理の配置毎の処理時間を説明するための図である。グラフ４０１は、次処理優先隠蔽配置で部分再構成モジュールを配置した場合の各処理の実行状態を表すグラフである。グラフ４０２は、次々処理優先隠蔽配置で部分再構成モジュールを配置した場合の各処理の実行状態を表すグラフである。グラフ４０３は、次処理非隠蔽配置で部分再構成モジュールを配置した場合の各処理の実行状態を表すグラフである。図１５では、処理Ａ及びＢが処理Ｃ〜Ｆと並列に動作可能な処理である。すなわち、処理Ｃ〜Ｆを行う部分再構成モジュールの配置を行う場合、処理Ａ及びＢと並行して実行できる場合で処理Ａ及びＢで使用する部分再構成領域は除いて配置を行う。また、処理Ｃ〜Ｆは、一連の処理である。すなわち、処理Ｃ〜Ｆはそれぞれ前の処理が終わった後に実行される。
【０１７０】
ここでは、処理Ｄを次処理４１１とし、処理Ｅを次々処理４１２とし、処理Ｃを実行中処理４１３として説明する。すなわち、ここでは、処理Ｃが実行されている状態で、処理Ｄ及びＥにおける部分再構成モジュールの配置を決定する場合で説明する。また、ここでは、部分再構成領域２００が、領域＃０〜＃１８までの１９個が存在する場合で説明する。処理Ａを実行する部分再構成モジュールは領域＃０〜＃１に配置され、処理Ｂを実行する部分再構成モジュールは領域＃２〜＃３に配置される。さらに、処理Ｃを実行する部分再構成モジュールは、領域＃４〜＃６に配置される。
【０１７１】
次処理優先隠蔽配置の場合、グラフ４０１に示すように、領域Ｐ１１が処理Ｄを実行する部分再構成モジュールの配置先として使用可能な領域である。まず、処理Ｃに並行して配置を行うように、領域Ｐ１１を用いて、動作周波数が最大となるように処理Ｄを実行する部分再構成モジュールが配置される。この場合、処理Ｄを実行する部分再構成モジュールは領域＃７〜＃１１に配置される。さらに、処理Ｄが開始されると処理Ｃを実行する部分再構成モジュールが配置された領域＃４〜＃６は使用可能となる。そこで、領域Ｐ１２が、処理Ｅを実行する部分再構成モジュールの配置先として使用可能な領域となる。処理Ｄに並行して配置を行うように、領域Ｐ１２を用いて、動作周波数が最大となるように処理Ｅを実行する部分再構成モジュールが配置される。この場合、処理Ｅを実行する部分再構成モジュールは領域＃１２〜＃１５に配置される。この場合、処理Ｄの処理時間はＴｅＡ１であり、処理Ｅの処理時間はＴｅＡ２である。そこで、この場合の処理時間は、ＴｅＡ１とＴｅＡ２とを加算したＴＡとなる。
【０１７２】
また、次処理優先隠蔽配置の場合、グラフ４０２に示すように、領域Ｐ２１が処理Ｅを実行する部分再構成モジュールの配置先として使用可能な領域である。まず、領域Ｐ２１を用いて、動作周波数が最大となるように処理Ｅを実行する部分再構成モジュールが配置される。この場合、処理Ｅを実行する部分再構成モジュールは領域＃７〜＃１０に配置される。さらに、処理Ｅの配置を処理Ｄと並行して行い、処理Ｂの配置を処理Ｃと並行して行うため、処理Ｃ及び処理Ｅを実行する部分再構成モジュールが配置された以外の領域である領域Ｐ２２が、処理Ｄを実行する部分再構成モジュールの配置先として使用可能な領域となる。そこで、領域Ｐ２２を用いて、動作周波数が最大となるように処理Ｂを実行する部分再構成モジュールが配置される。この場合、処理Ｄを実行する部分再構成モジュールは領域＃１１〜＃１５に配置される。この場合、処理Ｄの処理時間はＴｅＢ１であり、処理Ｅの処理時間はＴｅＢ２である。そこで、この場合の処理時間は、ＴｅＢ１とＴｅＢ２とを加算したＴＢとなる。
【０１７３】
また、次処理非隠蔽配置の場合、グラフ４０３に示すように、処理Ｂは処理Ｃ終了後に配置されるため、領域Ｐ３１が処理Ｂを実行する部分再構成モジュールの配置先として使用可能な領域である。そこで、領域Ｐ３１を用いて、動作周波数が最大となるように処理Ｂを実行する部分再構成モジュールが配置される。この場合、処理Ｃが終了してから、処理Ｂを実行する部分再構成モジュールの再構成が行われるので、その時間ｔｒ０が経過する。この場合、処理Ｂを実行する部分再構成モジュールは領域＃４〜＃８に配置される。さらに、処理Ｅの配置を処理Ｄと並行して行うため、処理Ｄを実行する部分再構成モジュールが配置された以外の領域である領域Ｐ３２が、処理Ｅを実行する部分再構成モジュールの配置先として使用可能な領域となる。そこで、領域Ｐ３２を用いて、動作周波数が最大となるように処理Ｅを実行する部分再構成モジュールが配置される。この場合、処理Ｅを実行する部分再構成モジュールは領域＃９〜＃１２に配置される。この場合、処理Ｄの処理時間はＴｅＣ１であり、処理Ｅの処理時間はＴｅＣ２である。そこで、この場合の処理時間は、ｔｒ０、ＴｅＣ１及びＴｅＣ２を加算したＴＣとなる。
【０１７４】
そこで、配置決定部１２２は、ＴＡ〜ＴＣを比較し、最も処理時間が短くなる配置を選択する。また、この場合、配置決定部１２２は、タイミングＱ１で処理Ｂ及びＥを実行する部分再構成モジュールの配置を決定する。ただし、次々処理４１２である処理Ｅを実行する部分再構成モジュールの配置は仮の決定であり、タイミングＱ２において、配置決定部１２２は、処理Ｅ及びＦの状態を考慮して、処理Ｅ及びＦを実行する部分再構成モジュールの配置を決定する。そして、このタイミングＱ２で、配置決定部１２２は、処理Ｅを実行する部分再構成モジュールの配置を確定する。
【０１７５】
次に、図１６を参照して、本実施例に係る部分再構成モジュールの配置決定処理の流れについて説明する。図１６は、実施例３に係る部分再構成モジュールの配置決定処理のフローチャートである。
【０１７６】
配置決定部１２２は、次処理及び次々処理で配置する部分再構成モジュールの種類及び個数を取得する。そして、配置決定部１２２は、次処理を選択する（ステップＳ２０１）。
【０１７７】
そして、配置決定部１２２は、選択した処理を実行する部分再構成モジュールの再構成時間を予測する（ステップＳ２０２）。
【０１７８】
次に、配置決定部１２２は、次処理の所定周波数での実行時間を予測する（ステップＳ２０３）。
【０１７９】
次に、配置決定部１２２は、次々処理を選択済みか否か判断する（ステップＳ２０４）。次々処理を選択していない場合（ステップＳ２０４：否定）、配置決定部１２２は、次々処理を選択し（ステップＳ２０５）、ステップＳ２０１へ戻る。ここで、次処理の再構成実行時間をＴｒ１とし、次々処理の再構成実行時間をＴｒ２と表す。また、次処理の所定周波数での実行時間をＴｅｂａｓｅ１と表し、次々処理の所定周波数での実行時間をＴｅｂａｓｅ２と表す。
【０１８０】
これに対して、次々処理を選択済みの場合（ステップＳ２０４：肯定）、配置決定部１２２は、次処理優先隠蔽処理時間を算出する（ステップＳ２０６）。ここで、次処理優先隠蔽処理時間を、ＴＡとする。次処理優先隠蔽処理時間の算出処理については、後で詳細に説明する。
【０１８１】
次に、配置決定部１２２は、次々処理優先隠蔽処理時間を算出する（ステップＳ２０７）。ここで、次々処理優先隠蔽処理時間を、ＴＢとする。次々処理優先隠蔽処理時間の算出処理については、後で詳細に説明する。
【０１８２】
そして、配置決定部１２２は、次処理優先隠蔽処理時間が次々処理優先隠蔽処理時間より短いか否か、すなわちＴＡ＜ＴＢか否かを判定する（ステップＳ２０８）。
【０１８３】
次処理優先隠蔽処理時間が次々処理優先隠蔽処理時間以上の場合（ステップＳ２０８：否定）、配置決定部１２２は、次々処理優先隠蔽配置を選択する（ステップＳ２０９）。その後、配置決定部１２２は、実行中の処理が終了する前に、決定した次処理を実行する部分再構成モジュールの配置を配置処理部１２１に通知する。配置処理部１２１は、実行中の処理が終了する前に、配置決定部１２２が決定した配置にしたがい部分再構成モジュールを部分再構成領域２００に配置する。
【０１８４】
これに対して、次処理隠蔽処理時間が次々処理隠蔽処理時間より短い場合（ステップＳ２０８：肯定）、配置決定部１２２は、次処理非隠蔽処理時間を算出する（ステップＳ２１０）。ここで、次処理非隠蔽処理時間を、ＴＣとする。次処理非隠蔽処理時間の算出処理については、後で詳細に説明する。
【０１８５】
そして、配置決定部１２２は、次処理優先隠蔽処理時間が次処理非隠蔽処理時間より短いか否か、すなわちＴＡ＜ＴＣか否かを判定する（ステップＳ２１１）。
【０１８６】
次処理優先隠蔽処理時間が次処理非隠蔽処理時間より短い場合（ステップＳ２１１：肯定）、配置決定部１２２は、次処理優先隠蔽配置を選択する（ステップＳ２１２）。その後、配置決定部１２２は、実行中の処理が終了する前に、決定した次処理を実行する部分再構成モジュールの配置を配置処理部１２１に通知する。配置処理部１２１は、実行中の処理が終了する前に、配置決定部１２２が決定した配置にしたがい部分再構成モジュールを部分再構成領域２００に配置する。
【０１８７】
これに対して、次処理優先隠蔽処理時間が次処理非隠蔽処理時間以上の場合（ステップＳ２１１：否定）、配置決定部１２２は、次処理非隠蔽配置を選択する（ステップＳ２１３）。配置決定部１２２は、消去部１２３から消去完了の通知を受信した後、決定した次処理を実行する部分再構成モジュールの配置を配置処理部１２１に通知する。配置処理部１２１は、配置決定部１２２が決定した配置にしたがい部分再構成モジュールを部分再構成領域２００に配置する。
【０１８８】
次に、図１７を参照して、次処理優先隠蔽処理時間の算出処理の流れを説明する。図１７は、次処理優先隠蔽処理時間の算出処理のフローチャートである。
【０１８９】
配置決定部１２２は、全ての部分再構成領域２００から処理実行中の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００を現空き領域として特定する（ステップＳ２２１）。
【０１９０】
次に、配置決定部１２２は、現空き領域で次処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２２２）。このステップＳ２２２の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、図１３のフローチャートで表される処理を用いる。ここで、決定した配置を行った場合の次処理の動作周波数をＦＡ１と表す。
【０１９１】
次に、配置決定部１２２は、決定した配置を実施した場合の次処理の実行時間を予測する（ステップＳ２２３）。ここで、決定した配置を実施した場合の次処理の実行時間をＴｅＡ１と表す。この場合、配置決定部１２２は、ＴｅＡ１＝Ｔｅｂａｓｅ１＊（Ｆｂａｓｅ１／ＦＡ１）として、次処理優先隠蔽配置を実施した場合の次処理の実行時間を求める。
【０１９２】
次に、配置決定部１２２は、決定した次処理の配置を実施した場合の次々処理用の空き領域を求める（ステップＳ２２４）。
【０１９３】
次に、配置決定部１２２は、次々処理用の空き領域で次々処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２２５）。このステップＳ２２５の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、図１３のフローチャートで表される処理を用いる。ここで、決定した配置を行った場合の次々処理の動作周波数をＦＡ２と表す。
【０１９４】
次に、配置決定部１２２は、決定した配置を実施した場合の次々処理の実行時間を予測する（ステップＳ２２６）。ここで、決定した配置を実施した場合の次々処理の実行時間をＴｅＡ２と表す。この場合、配置決定部１２２は、ＴｅＡ２＝Ｔｅｂａｓｅ２＊（Ｆｂａｓｅ２／ＦＡ２）として、次処理優先隠蔽配置を実施した場合の次々処理の実行時間を求める。
【０１９５】
そして、配置決定部１２２は、次処理優先隠蔽配置を実施した場合の次処理の実行時間と次々処理の実行時間とを加算して次処理優先隠蔽処理時間とする（ステップＳ２２７）。すなわち、配置決定部１２２は、ＴＡ＝ＴｅＡ１＋ＴｅＡ２とする。
【０１９６】
次に、図１８を参照して、次々処理優先隠蔽処理時間の算出処理の流れを説明する。図１８は、次々処理優先隠蔽処理時間の算出処理のフローチャートである。
【０１９７】
配置決定部１２２は、全ての部分再構成領域２００から処理実行中の部分再構成モジュールが配置された部分再構成領域２００を除いた残りの部分再構成領域２００を次々処理用の空き領域として特定する（ステップＳ２３１）。
【０１９８】
次に、配置決定部１２２は、次々処理用の空き領域で次々処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２３２）。このステップＳ２３２の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、図１３のフローチャートで表される処理を用いる。ここで、決定した配置を行った場合の次処理を実行する部分再構成モジュールの動作周波数をＦＢ２と表す。
【０１９９】
次に、配置決定部１２２は、決定した配置を実施した場合の次々処理の実行時間を予測する（ステップＳ２３３）。ここで、決定した配置を実施した場合の次々処理の実行時間をＴｅＢ２と表す。この場合、配置決定部１２２は、ＴｅＢ２＝Ｔｅｂａｓｅ２＊（Ｆｂａｓｅ２／ＦＢ２）として、次々処理優先隠蔽配置を実施した場合の次々処理の実行時間を求める。
【０２００】
次に、配置決定部１２２は、決定した次処理の配置が行えるように、すなわち、次々処理の空き領域から次処理を実行する部分再構成領域２００を除いて次処理用の空き領域を求める（ステップＳ２３４）。
【０２０１】
次に、配置決定部１２２は、次処理用の空き領域で次処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２３５）。このステップＳ２３５の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、図１３のフローチャートで表される処理を用いる。ここで、決定した配置を行った場合の次々処理の動作周波数をＦＢ１と表す。
【０２０２】
次に、配置決定部１２２は、決定した配置を実施した場合の次処理の実行時間を予測する（ステップＳ２３６）。ここで、決定した配置を実施した場合の次処理の実行時間をＴｅＢ１と表す。この場合、配置決定部１２２は、ＴｅＢ１＝Ｔｅｂａｓｅ１＊（Ｆｂａｓｅ１／ＦＢ１）として、次々処理優先隠蔽配置を実施した場合の次々処理の処理時間を求める。
【０２０３】
そして、配置決定部１２２は、次々処理優先隠蔽配置を実施した場合の次処理の実行時間と次々処理の実行時間とを加算して次々処理優先隠蔽処理時間とする（ステップＳ２３７）。すなわち、配置決定部１２２は、ＴＢ＝ＴｅＢ１＋ＴｅＢ２とする。
【０２０４】
次に、図１９を参照して、次処理非隠蔽処理時間の算出処理の流れを説明する。図１９は、次処理非隠蔽処理時間の算出処理のフローチャートである。
【０２０５】
配置決定部１２２は、全ての部分再構成領域２００を次処理用の空き領域として特定する（ステップＳ２４１）。ここで、全ての部分再構成領域２００とは、一連の処理を実行する部分再構成モジュールがいずれも部分再構成領域２００に配置されていない場合の使用可能領域である。
【０２０６】
次に、配置決定部１２２は、次処理用の空き領域で次処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２４２）。このステップＳ２４２の処理の一例は、図６のフローチャートで表される処理にあたる。ここで、決定した配置を行った場合の次処理の動作周波数をＦＣ１と表す。
【０２０７】
次に、配置決定部１２２は、決定した配置を実施した場合の次処理の実行時間を予測する（ステップＳ２４３）。ここで、決定した配置を実施した場合の次処理の実行時間をＴｅＣ１と表す。この場合、配置決定部１２２は、ＴｅＣ１＝Ｔｅｂａｓｅ１＊（Ｆｂａｓｅ１／ＦＢ１）として、次処理非隠蔽配置を実施した場合の次処理の実行時間を求める。
【０２０８】
次に、配置決定部１２２は、決定した次処理の部分再構成モジュールを配置した部分再構成領域２００を次処理用の空き領域から除いて次々処理用の空き領域を求める（ステップＳ２４４）。
【０２０９】
次に、配置決定部１２２は、次々処理用の空き領域で次々処理の動作周波数が最大となる配置、すなわち、最大動作周波数の最低値が最も高くなる配置を求める（ステップＳ２４５）。このステップＳ２４５の処理の一例は、図６のフローチャートで表される処理にあたる。ただし、図６のフローチャートにおけるステップＳ３の初期選択候補設定処理については、図１３のフローチャートで表される処理を用いる。ここで、次処理非隠蔽配置を行った場合の動作周波数をＦＣ２と表す。
【０２１０】
次に、配置決定部１２２は、決定した配置を実施した場合の次々処理の実行時間を予測する（ステップＳ２４６）。ここで、決定した配置を実施した場合の次々処理の実行時間をＴｅＣ２と表す。この場合、配置決定部１２２は、ＴｅＣ２＝Ｔｅｂａｓｅ２＊（Ｆｂａｓｅ２／ＦＣ２）として、次処理非隠蔽配置を実施した場合の次々処理の処理時間を求める。
【０２１１】
そして、配置決定部１２２は、次処理の再構成時間、次処理非隠蔽配置を実施した場合の次処理の実行時間及び次々処理の実行時間を加算して次処理非隠蔽処理時間とする（ステップＳ２４７）。すなわち、配置決定部１２２は、ＴＣ＝Ｔｒ０＋ＴｅＣ１＋ＴｅＣ２とする。
【０２１２】
以上に説明したように本実施例に係るＦＰＧＡは、次処理以降の段階の処理についても再構成時間を隠蔽しない場合と再構成時間を隠蔽する場合とを考慮し、より処理時間が短い方の配置処理を選択して配置を行うことができきる。これにより、より処理時間を短くすることができる。
【符号の説明】
【０２１３】
１  サーバ
１０  ＦＰＧＡ
１１  ＣＰＵ
１２〜１４  ＲＡＭ
１５  ＲＯＭ
１６  入力装置
１７  出力装置
１８  記憶装置
１９  ネットワークＩＦ
２０  周辺装置
１０１  ホストＩＦ
１０２  コンフィグレーション制御部
１０３  フラッシュＩＦ
１０４  ＤＲＡＭＩＦ
１０５  全体制御部
１０６  ＣＬＫ生成部
１１１  情報作成部
１２１  配置処理部
１２２  配置決定部
１２３  消去部
１４０  ＤＲＡＭ
１４１  最大動作周波数情報テーブル
１５０  フラッシュメモリ
１５１  コンフィグレーションデータ
２００〜２０４  部分再構成領域
【図１】
2017168957.tif 000003
【図２】
2017168957.tif 000004
【図３】
2017168957.tif 000005
【図４】
2017168957.tif 000006
【図５】
2017168957.tif 000007
【図６】
2017168957.tif 000008
【図７】
2017168957.tif 000009
【図８】
2017168957.tif 000010
【図９】
2017168957.tif 000011
【図１０】
2017168957.tif 000012
【図１１】
2017168957.tif 000013
【図１２】
2017168957.tif 000014
【図１３】
2017168957.tif 000015
【図１４】
2017168957.tif 000016
【図１５】
2017168957.tif 000017
【図１６】
2017168957.tif 000018
【図１７】
2017168957.tif 000019
【図１８】
2017168957.tif 000020
【図１９】
2017168957.tif 000021