(57)【要約】【課題】  プログラマブル部に配置される第１回路において、第１回路による処理能力が不足した場合に第２回路を接続する第１入出力部の回路量を削減する。【解決手段】  複数の第１回路は、第１処理を実行する第１処理部と、第１回路がプログラマブル部の再構成領域に配置された場合の位置が異なる第１入出力部を有する。複数の第１回路にそれぞれ対応する複数の第２回路は、第１処理を実行する第２処理部と、第１入出力部に接続される第２入出力部を有する。抽出部は、第１回路のいずれかを配置可能な配置可能領域を、複数の再構成領域の中から抽出する。判定部は、第２回路の各々を、配置可能領域に隣接して配置可能であるか判定する。決定部は、判定部による判定に基づいて、プログラマブル部に配置する第１回路と、第１回路を配置する位置とを決定する。配置部は、決定部が決定した位置に第１回路を配置する。【選択図】    図１
2018151826.tif 000002
【特許請求の範囲】
【請求項１】
論理を再構成可能な複数の再構成領域を有するプログラマブル部と、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出する抽出部と、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、前記抽出部により抽出された前記配置可能領域に隣接する再構成領域に配置可能であるか判定する判定部と、
前記判定部による判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定する決定部と、
前記決定部が決定した前記第１配置領域に前記第１配置回路を配置する配置部と
を備えることを特徴とする情報処理装置。
【請求項２】
第２処理を実行する第３回路が配置された再構成領域に隣接して、前記第３回路による第２処理の処理性能が不足した場合に第２処理を実行する第４回路が配置される再構成領域である予約領域がある場合であって、前記判定部が、前記複数の第２回路のいずれかが前記予約領域に配置可能であることを判定した場合、
前記決定部は、前記予約領域に配置可能な第２回路に対応する前記第１配置回路と前記第１配置領域とを決定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
第２処理を実行する第３回路が配置された再構成領域に隣接して、前記第３回路による第２処理の処理性能が不足した場合に第２処理を実行する第４回路が配置される再構成領域である予約領域がある場合であって、前記判定部が、前記複数の第２回路のいずれかが前記予約領域以外に配置可能であることを判定した場合、
前記決定部は、前記予約領域を避けて配置可能な第２回路のいずれかに対応する前記第１配置回路と前記第１配置領域とを決定することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記決定部は、前記抽出部が抽出した前記配置可能領域のいずれかが前記予約領域と重複しない場合、前記予約領域を避けて前記第１配置回路を配置することを決定することを特徴とする請求項２または請求項３記載の情報処理装置。
【請求項５】
前記決定部は、前記抽出部が抽出した前記配置可能領域の全てが前記予約領域を含む場合、前記予約領域を含む再構成領域に前記第１配置回路を配置することを決定することを特徴とする請求項２または請求項３記載の情報処理装置。
【請求項６】
前記判定部が、前記複数の第２回路のうち、前記配置可能領域に隣接する再構成領域に配置可能な第２回路がないことを判定した場合、
前記決定部は、前記複数の第１回路のいずれかを前記第１配置回路に決定し、前記配置可能領域のいずれかを前記第１配置領域に決定することを特徴とする請求項１ないし請求項３のいずれか１項記載の情報処理装置。
【請求項７】
前記配置部は、前記配置可能領域のいずれかに配置された前記第１配置回路による前記第１処理の処理性能が不足した場合であって、前記複数の第２回路のうち、前記第１配置回路に対応する第２回路を配置可能な再構成領域がある場合、前記第１配置回路に対応する第２回路を前記プログラマブル部に配置することを特徴とする請求項１ないし請求項６のいずれか１項記載の情報処理装置。
【請求項８】
前記配置部は、前記抽出部が前記第１配置回路を配置する前記配置可能領域を抽出しない場合、前記複数の第１回路のいずれも前記プログラマブル部に配置せず、
前記第１処理は、前記情報処理装置に設けられる演算処理部が実行するプログラムにより実行されることを特徴とする請求項１ないし請求項７のいずれか１項記載の情報処理装置。
【請求項９】
論理を再構成可能な複数の再構成領域を有するプログラマブル部を備える情報処理装置の制御方法において、
前記情報処理装置が、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出し、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出した前記配置可能領域に隣接する再構成領域に配置可能であるか判定し、
判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定し、
決定した前記第１配置領域に前記第１配置回路を配置することを特徴とする情報処理装置の制御方法。
【請求項１０】
論理を再構成可能な複数の再構成領域を有するプログラマブル部を備える情報処理装置の制御プログラムにおいて、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出し、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出した前記配置可能領域に隣接する再構成領域に配置可能であるか判定し、
判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定し、
決定した前記第１配置領域に前記第１配置回路を配置する
処理を、前記情報処理装置に実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
近時、論理を動的に再構成可能なＦＰＧＡ（Field-Programmable Gate Array）等のプログラマブルデバイスをアクセラレータとして機能させる情報処理装置が注目されている。この種の情報処理装置では、ＦＰＧＡ上に複数の回路を順次にプログラムすることで複数の処理を実行する場合、複数の回路に共通する部分と、複数の回路の個別部分において配置が重複しない部分とが、ＦＰＧＡに予めプログラムされる。この後、回路の個別部分において配置が重複する部分が、複数の回路の各々の処理の実行時にＦＰＧＡにプログラムされることで、論理の再構成時間が短縮される（例えば、特許文献１参照）。
【０００３】
また、ＦＰＧＡ上にプログラムされた回路により実行される処理の負荷が増大した場合、処理を実行する回路をＦＰＧＡ上に複製し、複数の回路で処理を並列に実行することで、処理効率は向上する（例えば、特許文献２参照）。さらに、ＦＰＧＡが回路をプログラムの単位である複数の分割領域を有する場合、未使用の分割領域が、ＦＰＧＡにプログラムする回路の形状に適合するかが、回路の形状を示す形状情報に基づいて判定される。そして、未使用の分割領域が形状情報に適合する場合、適合した未使用の分割領域に回路がプログラムされる（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−５１８２６号公報
【特許文献２】特開２０００−１４８７０７号公報
【特許文献３】特開２０１５−３９１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＦＰＧＡに配置された基本回路で実行する処理の負荷が増大した場合、基本回路に隣接する領域に拡張回路を配置し、基本回路と拡張回路とにより処理を並列に実行することで、負荷の増大に対応することが考えられる。また、ＦＰＧＡに配置された基本回路に隣接して拡張回路を配置できる可能性を、ＦＰＧＡ内の空き領域の位置に拘わらず高くするために、拡張回路に接続する接続部を基本回路の複数の辺に搭載することが考えられる。しかしながら、基本回路に搭載される接続部の数が多くなるほど、処理を実行する処理部の規模は小さくなり、基本回路の処理性能は低下する。
【０００６】
１つの側面では、本発明は、プログラマブル部に配置される第１回路において、第１回路による処理性能が不足した場合に第２回路を接続する第１入出力部の回路量を削減することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施態様では、情報処理装置は、論理を再構成可能な複数の再構成領域を有するプログラマブル部と、第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、複数の再構成領域のいずれかに配置された場合に第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、複数の再構成領域の中から抽出する抽出部と、第１処理を実行する第２処理部と、第１入出力部に接続される第２入出力部とを有し、かつ、複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出部により抽出された配置可能領域に隣接する再構成領域に配置可能であるか判定する判定部と、判定部による判定に基づいて、複数の第１回路のうち、プログラマブル部に配置する第１配置回路と、配置可能領域のうち、第１配置回路を配置する第１配置領域とを決定する決定部と、決定部が決定した第１配置領域に第１配置回路を配置する配置部とを有する。
【発明の効果】
【０００８】
１つの側面では、本発明は、プログラマブル部に配置される第１回路において、第１回路による処理性能が不足した場合に第２回路を接続する第１入出力部の回路量を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。
【図２】図１に示す抽出部、判定部および決定部が実行する処理の一例を示す図である。
【図３】図１に示す抽出部、判定部および決定部を持たない他の情報処理装置により回路を配置する例を示す図である。
【図４】図１に示す情報処理装置が実行する制御プログラムによる処理の一例を示す図である。
【図５】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す図である。
【図６】図５に示すプログラマブル部の一例を示す図である。
【図７】図５に示すメインメモリに格納される構成情報の一例を示す図である。
【図８】図５に示す情報処理装置の動作の一例を示す図である。
【図９】図５に示すメインメモリに格納される構成情報の別の例を示す図である。
【図１０】図５に示すメインメモリに格納される構成情報のさらなる別の例を示す図である。
【図１１】図５に示す情報処理装置の動作の別の例を示す図である。
【図１２】図５に示す情報処理装置が実行する制御プログラムによる処理の一例を示す図である。
【図１３】図１２に示すステップＳ１００の処理の一例を示す図である。
【図１４】図１２に示すステップＳ２４０の処理の一例を示す図である。
【図１５】図５に示すメインメモリに格納される構成情報の別の例を示す図である。
【図１６】タスクＤを実行する構成情報の別の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。信号が伝達される信号線には、信号名と同じ符号を使用する。
【００１１】
図１は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。図１に示す情報処理装置１００は、例えば、サーバであり、ＦＰＧＡ等のプログラマブル部１、メモリモジュール等の記憶装置２およびＣＰＵ（Central Processing Unit）等の演算処理装置３を有する。なお、記憶装置２は、情報処理装置１００の外部に配置されてもよい。情報処理装置１００は、図１に示す要素以外に、ＨＤＤ（Hard Disk Drive）および通信インタフェース等を有してもよい。
【００１２】
プログラマブル部１は、ＳＲＡＭ（Static Random Access Memory）等を用いた複数のルックアップテーブルＬＵＴと複数のフリップフロップＦＦとを含む複数の論理ブロックＬＢＬＫを有する。また、図示を省略するが、プログラマブル部１は、論理ブロックＬＢＬＫ間を接続する配線と、スイッチマトリックスと、ワークデータ等を記憶するブロックメモリとを有する。
【００１３】
各論理ブロックＬＢＬＫにおいて、ルックアップテーブルＬＵＴに論理を書き込み、ルックアップテーブルＬＵＴ間を配線とスイッチマトリックスとで接続することで、組み合わせ回路が構築される。また、ルックアップテーブルＬＵＴ間にフリップフロップＦＦを挿入し、必要であれば、さらにルックアップテーブルとブロックメモリ間を配線とスイッチマトリックスとで接続することで、順序回路が構築される。
【００１４】
プログラマブル部１上には、論理を再構成可能な複数の矩形状の部分再構成領域ＰＲＲ（Partial Reconfigurable Region）が構築される。ブロック間接続配線は、各部分再構成領域ＰＲＲの周囲に設けられ、部分再構成領域ＰＲＲに共通に使用される共通配線と、互いに隣接する部分再構成領域ＰＲＲ間に設けられる専用配線とを有する。なお、部分再構成領域ＰＲＲ、共通配線および専用配線は、プログラマブル部１に物理的に構築されてもよい。
【００１５】
図１では、プログラマブル部１は、９個の部分再構成領域ＰＲＲを有するが、部分再構成領域ＰＲＲの数は、９個に限定されず、例えば、プログラマブル部１が矩形になるように決められる。以下の説明では、部分再構成領域ＰＲＲは、再構成領域ＰＲＲと称される。図１において、Ｘ印を付けた再構成領域ＰＲＲは、例えば、基本回路が既に配置され、新たな回路を配置できない再構成領域ＰＲＲを示す。
【００１６】
記憶装置２は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）、ＳＲＡＭ、またはフラッシュメモリ等の半導体メモリを含む。記憶装置２は、プログラマブル部１にプログラムする論理（回路）の構成情報を記憶する記憶領域２ａと、制御プログラムを記憶する記憶領域２ｂとを有する。
【００１７】
なお、構成情報は、情報処理装置１００の記憶装置２以外の記憶領域に記憶されてもよく、情報処理装置１００の外部の記憶領域に記憶されてもよい。また、制御プログラムは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＵＳＢ（Universal Serial Bus）メモリ等のコンピュータにより読み取り可能な記録媒体４に格納されてもよい。この場合、記録媒体４に格納された制御プログラムは、情報処理装置１００に設けられる図示しない入出力インタフェースを介して記録媒体４から記憶領域２ｂに転送される。なお、制御プログラムは、記録媒体４から図示しないＨＤＤに転送された後、ＨＤＤから記憶領域２ｂに転送されてもよい。
【００１８】
図１に示す例では、記憶領域２ａには、タスクＡをプログラマブル部１で実行するための構成情報Ａ０、Ａ１、ａ０、ａ１と、タスクＢをプログラマブル部１で実行するための構成情報Ｂ０、Ｂ１、ｂ０、ｂ１とが記憶される。図１では、説明を分かりやすくするために、各構成情報は、プログラマブル部１にプログラムされる回路の形状で示される。回路の形状で示される各構成情報において、内側に示す矩形は、タスクの処理を実行する処理部ＰＲＯＣを示し、四辺のうちの一辺に斜線を付けた細長い矩形は、データ等の情報を入出力する入出力部ＩＯを示す。
【００１９】
大文字のアルファベットで示すＡ０、Ａ１等の構成情報は、タスクをプログラマブル部１で実行する場合に最初にプログラマブル部１にプログラムされる。以下の説明では、大文字のアルファベットで示す構成情報は、基本回路とも称される。アルファベットが互いに同じ基本回路（例えば、Ａ０とＡ１）の処理部ＰＲＯＣは、互いに同じ処理を実行し、処理性能も同じであるが、基本回路が再構成領域ＰＲＲのいずれかにプログラムされた場合の入出力部ＩＯの位置が互いに異なる。
【００２０】
小文字のアルファベットで示すａ０、ａ１等の構成情報は、プログラマブル部１にプログラムされた基本回路によりタスクを実行中に、タスクの負荷が増加し、基本回路の処理性能が不足した場合に、プログラマブル部１にプログラムされる。以下の説明では、小文字のアルファベットで示す構成情報は、拡張回路とも称される。アルファベットが同じ拡張回路（例えば、ａ０とａ１）の処理部ＰＲＯＣは、互いに同じ処理を実行し、処理性能も同じであるが、拡張回路が再構成領域ＰＲＲのいずれかにプログラムされた場合の入出力部ＩＯの位置が互いに異なる。以下では、構成情報のプログラマブル部１へのプログラムは、回路の配置とも称される。
【００２１】
基本回路Ａ０、Ａ１は、第１回路の一例であり、拡張回路ａ０、ａ１は第２回路の一例である。基本回路Ａ０、Ａ１の処理部ＰＲＯＣは、第１処理部の一例であり、基本回路Ａ０、Ａ１の入出力部ＩＯは、第１入出力部の一例である。拡張回路ａ０、ａ１の処理部ＰＲＯＣは、第２処理部の一例であり、拡張回路ａ０、ａ１の入出力部ＩＯは、第２入出力部の一例である。基本回路Ａ０、Ａ１の処理部ＰＲＯＣが実行する処理および拡張回路ａ０、ａ１の処理部ＰＲＯＣが実行する処理は、第１処理の一例である。
【００２２】
アルファベットが互いに同じ基本回路は、同じ論理を有し、同じサイズであり、同じ数の再構成領域ＰＲＲにプログラムされる。同様に、アルファベットが互いに同じ拡張回路は、同じ論理を有し、同じサイズであり、同じ数の再構成領域ＰＲＲにプログラムされる。例えば、基本回路Ａ０、Ａ１は、横方向に隣接する２つの再構成領域ＰＲＲに配置可能であり、基本回路Ｂ０、Ｂ１は、横方向に隣接する３つの再構成領域ＰＲＲに配置可能である。拡張回路ａ０、ａ１、ｂ０、ｂ１は、再構成領域ＰＲＲのいずれか１つに配置可能である。
【００２３】
アルファベットが互いに同じ基本回路は、４辺のうちの互いに異なる辺に入出力部ＩＯを有しており、入出力部ＩＯの位置により、拡張回路の接続方向が互いに異なる。各基本回路は、アルファベットと数字が同じ拡張回路のみを接続可能である。基本回路における４辺のうちの１辺に入出力部ＩＯを１つのみ設けることにより、各基本回路は、拡張回路を接続する方向が制限される。一方、基本回路における４辺のうちの１辺に入出力部ＩＯを１つのみ設けることにより、入出力部ＩＯを複数の辺に設ける場合に比べて、入出力部ＩＯの回路量を削減することができ、相対的に、処理部ＰＲＯＣの回路量を増大することができる。したがって、入出力部ＩＯを複数の辺に設ける場合に比べて、基本回路の処理性能を向上することができる。この結果、拡張回路を増設する頻度を下げることが可能になり、拡張回路のプログラマブル部１への配置を制御する演算処理装置３の負荷を軽減することができる。
【００２４】
例えば、基本回路Ａ０がプログラマブル部１に配置され、基本回路Ａ０によるタスクＡの処理性能が不足した場合、基本回路Ａ０が配置された構成領域ＰＲＲの右下に隣接する再構成領域ＰＲＲに、拡張回路ａ０が配置される。基本回路Ａ１がプログラマブル部１に配置され、基本回路Ａ１によるタスクＡの処理性能が不足した場合、基本回路Ａ１が配置された再構成領域ＰＲＲの右上に隣接する再構成領域ＰＲＲに、拡張回路ａ１が配置される。そして、基本回路Ａ０と拡張回路ａ０、または基本回路Ａ１と拡張回路ａ１により、タスクＡが並列に実行される。例えば、拡張回路ａ０をプログラマブル部１に配置することで、複数の基本回路Ａ０をプログラマブル部１に配置する場合に比べて、最小限の再構成領域ＰＲＲを使用して、タスクＡを並列に実行する回路をプログラマブル部１に構築することができる。この結果、他のタスクを実行する回路を再構成領域ＰＲＲに配置できる可能性が高くなり、情報処理装置１００で実行するタスクの処理性能を向上することができる。
【００２５】
演算処理装置３は、抽出部３ａ、判定部３ｂ、決定部３ｃおよび配置部３ｄを有する。抽出部３ａ、判定部３ｂ、決定部３ｃおよび配置部３ｄの機能は、演算処理装置３の図示しないＣＰＵコア等が記憶領域２ｂに格納された制御プログラムを実行することにより実現される。なお、抽出部３ａ、判定部３ｂ、決定部３ｃおよび配置部３ｄの少なくともいずれかは、ハードウェア（回路）として、情報処理装置１００に搭載されてもよい。この場合、抽出部３ａ、判定部３ｂ、決定部３ｃおよび配置部３ｄの少なくともいずれかは、プログラマブル部１を使用して実現されてもよい。
【００２６】
抽出部３ａは、タスクをプログラマブル部１で実行する指示に基づいて、実行するタスクに対応する複数の基本回路毎に、基本回路を配置可能な再構成領域ＰＲＲである配置可能領域を、回路が配置されていない再構成領域ＰＲＲの中から抽出する。判定部３ｂは、抽出部３ａにより配置可能領域が抽出された場合、各配置可能領域に配置される基本回路に接続する拡張回路を、配置可能領域に隣接する再構成領域ＰＲＲに配置可能か否かを判定する。
【００２７】
決定部３ｃは、判定部３ｂによる判定に基づいて、複数の基本回路のうち、配置可能領域に実際に配置する基本回路と、基本回路を配置する再構成領域ＰＲＲの位置とを決定する。決定部３ｃが配置を決定した基本回路は、第１配置回路の一例であり、決定部３ｃが決定した基本回路を配置する再構成領域ＰＲＲは、第１配置領域の一例である。
【００２８】
配置部３ｄは、決定部３ｃが決定した基本回路を、決定部３ｃが決定した再構成領域ＰＲＲに配置する。すなわち、配置部３ｄは、決定部３ｃが配置を決定した基本回路の構成情報と、構成情報をプログラムする再構成領域ＰＲＲの位置を示す位置情報とをプログラマブル部１に転送する。プログラマブル部１は、配置部３ｄから受信する情報に基づいて、基本回路を再構成領域ＰＲＲのいずれかにプログラムする。なお、判定部３ｂが、抽出部３ａにより配置可能領域が抽出されなかったことを判定した場合、決定部３ｃおよび配置部３ｄは動作せず、タスクは、演算処理装置３のＣＰＵコアが実行するアプリケーションプログラム等のソフトウェアにより実行される。
【００２９】
プログラマブル部１に配置された基本回路によりタスクの処理を実行中に、タスクの負荷が増大し、基本回路によるタスクの処理性能が不足する場合で、拡張回路を再構成領域ＰＲＲに配置可能である場合、配置部３ｄは、拡張回路をプログラマブル部１に配置する。拡張回路を再構成領域ＰＲＲに配置可能であるかは、判定部３ｂにより判定済みである。配置部３ｄへの拡張回路の配置の指示は、例えば、タスクの負荷をモニタしている演算処理装置３により実行される。
【００３０】
図２は、図１に示す抽出部３ａ、判定部３ｂおよび決定部３ｃが実行する処理の一例を示す。すなわち、図２は、情報処理装置１００の制御方法の一例を示す。図２では、演算処理装置３は、タスクＡを実行する回路をプログラマブル部１に配置する配置要求の発行に基づいて、どの基本回路Ａ０、Ａ１を、どの再構成領域ＰＲＲに配置するかを決定する。図１と同様に、Ｘ印を付けた３つの再構成領域ＰＲＲには、他の基本回路が既に配置済みである。
【００３１】
まず、抽出部３ａは、基本回路Ａ０、Ａ１のそれぞれについて、回路が配置されていない６つの再構成領域ＰＲＲの中から基本回路Ａ０、Ａ１を配置可能な再構成領域ＰＲＲ（配置可能領域）を抽出する。図２に示す例では、抽出部３ａは、基本回路Ａ０を配置可能な３つの配置可能領域（１）、（２）、（３）と、基本回路Ａ１を配置可能な３つの配置可能領域（４）、（５）、（６）とを抽出する。配置可能領域（１）−（６）は、太枠で示される。
【００３２】
次に、判定部３ｂは、配置可能領域（１）−（３）の各々において、配置可能領域に隣接する再構成領域ＰＲＲに拡張回路ａ０を配置可能か否かを判定する。また、判定部３ｂは、配置可能領域（４）−（６）の各々において、配置可能領域に隣接する再構成領域ＰＲＲに拡張回路ａ１を配置可能か否かを判定する。図２に示す例では、判定部３ｂは、配置可能領域（１）、（３）に隣接して拡張回路ａ０を配置可能であることを判定し、配置可能領域（５）に隣接して拡張回路ａ１を配置可能であることを判定する。また、判定部３ｂは、配置可能領域（２）に隣接して拡張回路ａ０を配置できないことを判定し、配置可能領域（４）、（６）に隣接して拡張回路ａ１を配置できないことを判定する。
【００３３】
次に、決定部３ｃは、配置可能領域（１）−（６）の中から、基本回路Ａ０または基本回路Ａ１を配置する再構成領域ＰＲＲを決定する。まず、決定部３ｃは、配置可能領域（１）−（６）のうち、配置可能領域に隣接して拡張回路ａ０または拡張回路ａ１を配置可能な配置可能領域（１）、（３）、（５）を選択する。次に、決定部３ｃは、例えば、基本回路Ａ０、Ａ１と拡張回路ａ０、ａ１とを再構成領域ＰＲＲに配置した後の空き領域（白抜きの矩形で示す）が、分散せずに最もまとまっている配置可能領域（３）を選択する。すなわち、決定部３ｃは、基本回路Ａ０を配置可能領域（３）に配置することに決定する。この後、配置部３ｄは、決定部３ｃの決定にしたがって、基本回路Ａ０の構成情報をプログラマブル部１に配置する。
【００３４】
なお、決定部３ｃは、空き領域の状態以外の条件に基づいて、基本回路Ａ０、Ａ１のいずれかを配置する再構成領域ＰＲＲを決定してもよい。例えば、基本回路Ａ０、Ａ１のいずれかをプログラマブル部１に配置した後、横方向に並ぶ２つの再構成領域ＰＲＲと縦方向に並ぶ２つの再構成領域ＰＲＲとに、他の基本回路がそれぞれ配置されることが分かっている場合がある。この場合、配置可能領域（２）、（４）のいずれか一方を、基本回路Ａ０（またはＡ１）を配置する再構成領域ＰＲＲに決定してもよい。
【００３５】
図３は、図１に示す抽出部３ａ、判定部３ｂおよび決定部３ｃを持たない他の情報処理装置により回路を配置する一例を示す。図２と同一または同様の要素については、詳細な説明は省略する。例１に示す基本回路Ａは、右上と右下のそれぞれに入出力部ＩＯを有し、例２に示す基本回路Ａは、右上、左上、右下および左下のそれぞれに入出力部ＩＯを有する。なお、基本回路Ａによるタスクの処理性能が不足した場合、拡張回路ａ０または拡張回路ａ１のいずれか１つが基本回路Ａに接続される。図３では、図１および図２と同様に、Ｘ印を付けた３つの再構成領域ＰＲＲには、他の基本回路が既に配置済みであり、回路が配置されていない６つの再構成領域ＰＲＲに、新たな回路が配置可能である。
【００３６】
例１、例２のいずれにおいても、図２に示した配置可能領域（１）、（２）、（３）または配置可能領域（４）、（５）、（６）と同様に、３つの配置可能領域（１）、（２）、（３）が存在する。但し、基本回路Ａは、複数の入出力部ＩＯを有するため、配置可能領域（１）−（３）のそれぞれに隣接する再構成領域ＰＲＲのいずれかに、拡張回路ａ０または拡張回路ａ１を配置可能である。
【００３７】
基本回路Ａが複数の入出力部ＩＯを有する場合、拡張回路ａ０、ａ１を配置可能な再構成領域ＰＲＲの選択肢は増える。一方で、入出力部ＩＯの数が多いほど、入出力部ＩＯの回路量が増大し、基本回路Ａにおいて処理を実行する処理部ＰＲＯＣの回路規模は、相対的に減少する。この結果、入出力部ＩＯの数が多いほど、基本回路Ａで実行するタスクの処理性能は低下する。
【００３８】
図４は、図１に示す情報処理装置１００が実行する制御プログラムによる処理の一例を示す。すなわち、図２は、情報処理装置１００の制御方法の一例を示す。図１で説明したように、制御プログラムは、演算処理装置３のＣＰＵコアにより実行される。図４に示すフローは、タスクを実行する回路をプログラマブル部１に配置する配置要求の発行に基づいて開始される。
【００３９】
まず、ステップＳ１０において、制御プログラムは、複数の基本回路のそれぞれについて、回路が配置されていない、空いている再構成領域ＰＲＲの中から基本回路を配置可能な再構成領域ＰＲＲ（配置可能領域）を基本回路毎に抽出する。次に、ステップＳ１２において、制御プログラムは、ステップＳ１０による抽出結果に基づいて、基本回路を配置可能な再構成領域ＰＲＲがあるか否かを判定する。基本回路を配置可能な再構成領域ＰＲＲがある場合、処理はステップＳ１４に移行され、基本回路を配置可能な再構成領域ＰＲＲがない場合、処理はステップＳ２０に移行される。
【００４０】
ステップＳ１４において、制御プログラムは、空いている再構成領域ＰＲＲに配置される基本回路に拡張回路を接続可能か否かを、配置可能領域毎に判定する。次に、ステップＳ１６において、制御プログラムは、ステップＳ１４による判定結果に基づいて、プログラマブル部１に配置する基本回路を決定するとともに、基本回路を配置する配置可能領域の位置を決定する。
【００４１】
次に、ステップＳ１８において、制御プログラムは、プログラマブル部１を制御し、ステップＳ１６により決定した基本回路を、ステップＳ１６により決定した配置可能領域に配置し、処理を終了する。この後、配置可能領域に配置された基本回路により、タスクの処理が開始される。また、基本回路によるタスクの処理性能が不足する場合で、拡張回路を基本回路に接続可能な場合、拡張回路がプログラマブル部１に配置され、基本回路と拡張回路とによりタスクの処理が並列に実行される。
【００４２】
一方、基本回路を配置可能な再構成領域ＰＲＲがない場合、ステップＳ２０において、制御プログラムは、アプリケーションプログラム等のソフトウェアによりタスクを実行することを決定し、処理を終了する。基本回路を配置可能な再構成領域ＰＲＲがない場合、ソフトウェアによりタスクを実行することで、タスクが全く実行されない不具合を抑止することができる。
【００４３】
以上、図１から図４に示す実施形態では、入出力部ＩＯによる拡張回路の配置方向が互いに異なる複数の基本回路が予め用意される。そして、空いている再構成領域ＰＲＲと拡張回路の配置の可能性とに基づいて、プログラマブル部１に配置する基本回路と、配置する再構成領域ＰＲＲの位置が決められる。これにより、複数の入出力部ＩＯを有し、拡張回路を複数の方向に接続可能な基本回路に比べて、入出力部ＩＯの回路量を削減することができ、処理部ＰＲＯＣの回路量を相対的に増大することができる。したがって、入出力部ＩＯを複数の辺に設ける場合に比べて、基本回路の処理性能を向上することができる。この結果、拡張回路を増設する頻度を下げることが可能になり、拡張回路のプログラマブル部１への配置を制御する演算処理装置３の負荷を軽減することができる。
【００４４】
図５は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す。図１から図４に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図５に示す情報処理装置１００Ａは、例えばサーバである。情報処理装置１００Ａは、ＦＰＧＡ等のプログラマブル部１０、外部メモリ２０、ＣＰＵ等の演算処理装置３０、メインメモリ４０、入出力インタフェース５０、ＨＤＤ６０および通信インタフェース７０を有する。
【００４５】
プログラマブル部１０は、再構成領域ＰＲＲの数が異なることを除き、図１に示すプログラマブル部１と同様の構成を有する。すなわち、プログラマブル部１０は、図１で説明した複数の論理ブロックＬＢＬＫ、ブロックメモリ、配線、スイッチマトリックスを有し、その上に論理をプログラム可能な１６個の再構成領域ＰＲＲと、図示しないブロック間接続回路とが構築される。プログラマブル部１０の例は、図６に示される。プログラマブル部１０および外部メモリ２０は、拡張基板ＢＲＤに搭載され、専用のバスＢＵＳ４で互いに接続される。外部メモリ２０は、プログラマブル部１０で実行される処理に使用されるデータおよび処理後のデータ等を保持する。
【００４６】
プログラマブル部１０は、バスＢＵＳ１を介して演算処理装置３０に接続され、メインメモリ４０は、バスＢＵＳ２を介して演算処理装置３０に接続される。入出力インタフェース５０、ＨＤＤ６０および通信インタフェース７０は、バスＢＵＳ３を介して演算処理装置３０に接続される。例えば、バスＢＵＳ１、ＢＵＳ３は、ＰＣＩｅ（Peripheral Component Interconnect express）バスであり、バスＢＵＳ２は、メモリバスである。
【００４７】
演算処理装置３０は、情報処理装置１００Ａの全体の動作を制御するとともに、メインメモリ４０に格納された制御プログラム４２を実行することで、抽出部３２、判定部３４、決定部３６および配置部３８として機能する。演算処理装置３０は、メインメモリ４０に格納される他のプログラム４４を実行することで、抽出部３２、判定部３４、決定部３６および配置部３８以外の機能を実現する。なお、抽出部３２、判定部３４、決定部３６および配置部３８は、ハードウェア（回路）として、情報処理装置１００Ａに搭載されてもよい。この場合、抽出部３２、判定部３４、決定部３６および配置部３８の少なくともいずれかは、プログラマブル部１０を使用して実現されてもよい。
【００４８】
メインメモリ４０は、例えば、複数のＳＤＲＡＭが搭載されたメモリモジュールであり、制御プログラム４２、他のプログラム４４および構成情報４６を記憶する領域を有する。例えば、制御プログラム４２、他のプログラム４４および構成情報４６は、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ等のコンピュータにより読み取り可能な記録媒体８０またはネットワークＮＷを介してＨＤＤ６０に格納された後、メインメモリ４０に転送される。
【００４９】
抽出部３２は、タスクをプログラマブル部１０で実行する指示に基づいて、タスクを実行する複数の基本回路毎に、基本回路を配置可能な再構成領域ＰＲＲである配置可能領域を、回路が配置されていない再構成領域ＰＲＲの中から抽出する。判定部３４は、抽出部３２により配置可能領域が抽出された場合、各配置可能領域に配置される基本回路に接続する拡張回路を、配置可能領域に隣接する再構成領域ＰＲＲに配置可能か否かを判定する。
【００５０】
決定部３６は、判定部３４による判定に基づいて、複数の基本回路のうち、配置可能領域に配置する基本回路と、基本回路を配置する再構成領域ＰＲＲとを決定する。決定部３６が配置を決定した基本回路は、第１配置回路の一例であり、決定部３６が決定した基本回路を配置する再構成領域ＰＲＲは、第１配置領域の一例である。
【００５１】
配置部３８は、決定部３６が配置を決定した基本回路を、決定部３６が決定した再構成領域ＰＲＲに配置する。すなわち、配置部３８は、決定部３６が配置を決定した基本回路の構成情報と、構成情報をプログラムする再構成領域ＰＲＲの位置を示す位置情報とをプログラマブル部１０に転送する。プログラマブル部１０は、配置部３８から受信する情報に基づいて、基本回路を再構成領域ＰＲＲのいずれかにプログラムする。なお、判定部３４が、抽出部３２により配置可能領域が抽出されないことを判定した場合、決定部３６および配置部３８は動作せず、タスクは、演算処理装置３０のＣＰＵコアが実行するアプリケーションプログラム等のソフトウェアにより実行される。
【００５２】
入出力インタフェース５０の１つは、ＤＶＤ等の記録媒体８０が装着される光学ドライブ装置に接続され、あるいは、ＵＳＢメモリ等が装着されるコネクタを有する。他の入出力インタフェース５０は、図示しないマウスおよびキーボード等の入力装置と、図示しないディスプレイ等の出力装置にそれぞれ接続される。
【００５３】
ＨＤＤ６０は、上述したように、制御プログラム４２、他のプログラム４４および構成情報４６等を記憶する。通信インタフェース７０は、インターネットまたはイントラネット等のネットワークＮＷに接続され、ネットワークＮＷとの間で情報を入出力する。
【００５４】
図６は、図５に示すプログラマブル部１０の一例を示す。プログラマブル部１０は、再構成領域ＰＲＲの周囲に格子状に配置される配線ネットワークＮＯＣを有する。配線ネットワークＮＯＣは、１６個の再構成領域ＰＲＲに共通に使用される共通配線ＣＷと、共通配線ＣＷの交点に配置されるルータＲＴとを有する。共通配線ＣＷは、接続インタフェースＩＦ１および書き込み制御部ＷＣＮＴを介してバスＢＵＳ１に接続される。書き込み制御部ＷＣＮＴは、バスＢＵＳ１を介して転送される構成情報に基づいて、所定の再構成領域ＰＲＲに論理（回路）をプログラムする機能を有する。ここで、構成情報は、プログラムする論理を示す情報に加えて、プログラムする再構成領域ＰＲＲの位置を示す情報を含むものとする。矩形状の各再構成領域ＰＲＲの一角には、共通配線ＣＷに接続される接続インタフェースＩＦ２が設けられる。
【００５５】
ルータＲＴは、共通配線ＣＷを介して、所定の再構成領域ＰＲＲを、他の所定の再構成領域ＰＲＲに接続する。共通配線ＣＷおよびルータＲＴを介して、再構成領域ＰＲＲから他の再構成領域ＰＲＲへの情報の転送は、例えば、パケットを使用して実行される。
【００５６】
なお、共通配線ＣＷを挟んで互いに隣接する一対の再構成領域ＰＲＲは、共通配線ＣＷを跨いで設けられる専用配線（図示せず）を介して直接に接続可能である。専用配線のバス幅は、自在に設定できるため、共通配線ＣＷのバス幅に比べて広くすることができ、情報を、ルータＲＴを介することなく隣接する再構成領域ＰＲＲに直接送信できる。このため、専用配線を使用した情報の転送レートは、共通配線ＣＷを使用した情報の転送レートに比べて高くすることができる。なお、例えば、専用配線は、共通配線ＣＷが構築される配線層とは別の配線層を使用して構築される。
【００５７】
図７は、図５に示すメインメモリ４０に格納される構成情報の一例を示す。図７では、説明を分かりやすくするために、各構成情報は、プログラマブル部１０にプログラムされる回路の形状で示される。斜線を付けた矩形は、図６に示す再構成領域ＰＲＲ間を接続する入出力部ＩＯであり、図６で説明した専用配線を含む。斜線を付けた三角形は、図６に示す共通配線ＣＷに接続する接続インタフェースＩＦ２である。なお、接続インタフェースＩＦ２は、信号等の情報を入出力する再構成領域ＰＲＲのみに設けられる。
【００５８】
構成情報Ｃ０、Ｃ１は、基本回路Ｃのプログラマブル部１０への配置に使用され、構成情報ｃ０、ｃ１は、拡張回路ｃのプログラマブル部１０への配置に使用される。そして、プログラマブル部１０にプログラムされる構成情報Ｃ０、構成情報Ｃ１、構成情報Ｃ０、ｃ０または構成情報Ｃ１、ｃ１のいずれかによりタスクＣが実行される。以下では、構成情報Ｃ０、Ｃ１は、基本回路Ｃ０、Ｃ１とも称され、構成情報ｃ０、ｃ１は、拡張回路ｃ０、ｃ１とも称される。
【００５９】
各基本回路Ｃ０、Ｃ１は、横方向に並ぶ３つの再構成領域ＰＲＲを使用して配置され、各拡張回路ｃ０、ｃ１は、１つの再構成領域ＰＲＲを使用して配置される。各基本回路Ｃ０、Ｃ１は、前処理部ＰＲＥ、ディスパッチャＤＰ、複数のロジック部Ｌ、集約部ＧＡおよび後処理部ＰＯＳＴを有する。各拡張回路ｃ０、ｃ１は、複数のロジック部Ｌを有する。基本回路Ｃ０、Ｃ１および拡張回路ｃ０、ｃ１に搭載されるロジック部Ｌの機能は、互いに同じである。例えば、基本回路Ｃ０に拡張回路ｃ０が接続される場合、タスクＣのロジック部Ｌによる処理性能は、基本回路Ｃ０の単体での処理性能の２倍になる。
【００６０】
各基本回路Ｃ０、Ｃ１において、前処理部ＰＲＥは、接続インタフェースＩＦ２を介して転送されるデータの前処理を実行してディスパッチャＤＰに出力する。ディスパッチャＤＰは、前処理部ＰＲＥから転送されるデータをロジック部Ｌにそれぞれ割り当てる。例えば、基本回路Ｃ０に拡張回路ｃ０が接続される場合、ディスパッチャＤＰは、処理対象のデータを拡張回路ｃ０のロジック部Ｌにも割り当てる。各ロジック部Ｌは、演算処理等のデータ処理を実行し、データ処理の実行結果を集約部ＧＡに出力する。集約部ＧＡは、ロジック部Ｌからの実行結果を集約し、後処理部ＰＯＳＴに転送する。例えば、基本回路Ｃ０に拡張回路ｃ０が接続される場合、集約部ＧＡは、拡張回路ｃ０による実行結果を含めて集約する。後処理部ＰＯＳＴは、実行結果に基づいて後処理を実行し、後処理で得た情報を接続インタフェースＩＦ２に出力する。
【００６１】
各基本回路Ｄ０、Ｄ１は、縦方向に並ぶ２つ再構成領域ＰＲＲを使用して配置され、各拡張回路ｄ０、ｄ１は、１つ再構成領域ＰＲＲを使用して配置される。各基本回路Ｄ０、Ｄ１は、ディスパッチャＤＰ、複数のロジック部Ｌおよび集約部ＧＡを有する。各拡張回路ｃ０、ｃ１は、複数のロジック部Ｌを有する。ディスパッチャＤＰおよび集約部ＧＡの機能は、基本回路Ｃ０、Ｃ１に搭載されるディスパッチャＤＰおよび集約部ＧＡの機能と同様である。基本回路Ｄ０、Ｄ１および拡張回路ｄ０、ｄ１に搭載されるロジック部Ｌの機能は、互いに同じである。例えば、基本回路Ｄ０に拡張回路ｄ０が接続される場合、タスクＤのロジック部Ｌによる処理性能は、基本回路Ｄ０の単体での処理性能の１．５倍になる。なお、基本回路Ｄ０、Ｄ１および拡張回路ｄ０、ｄ１のロジック部Ｌの機能は、基本回路Ｃ０、Ｃ１および拡張回路ｃ０、ｃ１のロジック部Ｌの機能と異なる。
【００６２】
基本回路Ｃ０、Ｃ１、Ｄ０、Ｄ１は、第１回路の一例であり、拡張回路ｃ０、ｃ１、ｄ０、ｄ１は第２回路の一例である。各基本回路Ｃ０、Ｃ１、Ｄ０、Ｄ１に設けられる前処理部ＰＲＥ、ディスパッチャＤＰ、複数のロジック部Ｌ、集約部ＧＡおよび後処理部ＰＯＳＴは、第１処理を実行する第１処理部の一例である。各拡張回路ｃ０、ｃ１、ｄ０、ｄ１に設けられる複数のロジック部Ｌは、第１処理を実行する第２処理部の一例である。
【００６３】
各基本回路Ｃ０、Ｃ１、Ｄ０、Ｄ１において、各拡張回路ｃ０、ｃ１、ｄ０、ｄ１に接続する入出力部ＩＯは、第１入出力部の一例である。基本回路Ｃ０、Ｃ１において、拡張回路ｃ０、ｃ１に接続する入出力部ＩＯの位置は、互いに異なり、基本回路Ｄ０、Ｄ１において、拡張回路ｄ０、ｄ１に接続する入出力部ＩＯの位置は、互いに異なる。各拡張回路ｃ０、ｃ１、ｄ０、ｄ１において、各基本回路Ｃ０、Ｃ１、Ｄ０、Ｄ１に接続する入出力部ＩＯは、第２入出力部の一例である。
【００６４】
図８は、図５に示す情報処理装置１００Ａの動作の一例を示す。すなわち、図８は、情報処理装置１００Ａの制御方法の一例を示す。Ｘ印を付けた再構成領域ＰＲＲには、他の基本回路が既に配置済みであり、新たに回路は、白抜きで示す８つの再構成領域ＰＲＲ（空き領域）に配置可能である。図８では、基本回路と拡張回路とを互いに接続する入出力部ＩＯは、斜線を付けた１つの矩形で示される。
【００６５】
図８（１）に示す状態では、プログラマブル部１０に基本回路Ｃ０が配置済みである。符号”（ｃ０）”を付けた再構成領域ＰＲＲは、タスクＣの負荷が増加し、基本回路Ｃ０での処理性能が不足した場合に、基本回路Ｃ０に拡張回路ｃ０を接続可能であることを示す。なお、拡張回路ｃ０が配置される可能性がある再構成領域ＰＲＲも、空き領域に含まれる。すなわち、空き領域は、基本回路が配置されていない再構成領域ＰＲＲである。図８では、配置済みの基本回路Ｃ０は、第２処理を実行する第３回路の一例であり、拡張回路ｃ０は、第２処理を実行する第４回路の一例である。拡張回路ｃ０が配置される可能性がある再構成領域ＰＲＲは、予約領域の一例である。
【００６６】
図８（１）に示す状態で、タスクＤの処理を実行する回路の配置要求が発生する。図５に示す抽出部３２は、基本回路Ｄ０、Ｄ１のそれぞれについて、回路が配置されていない８つの再構成領域ＰＲＲの中から基本回路Ｄ０、Ｄ１を配置可能な再構成領域ＰＲＲ（配置可能領域）を抽出する。なお、基本回路Ｄ０、Ｄ１が、拡張回路ｃ０と同様に、１つの再構成領域ＰＲＲを使用して配置される場合、抽出部３２は、基本回路Ｄ０、Ｄ１毎に、８つの再構成領域ＰＲＲの全てを配置可能領域として抽出する。
【００６７】
図８（２）は、抽出部３２が抽出した配置可能領域（網掛け部分）の配置パターンを示す。基本回路Ｄ０、Ｄ１は、縦方向に並ぶ２つの再構成領域ＰＲＲを使用して配置されるため、抽出部３２は、（２ａ）から（２ｈ）に示す８つの配置パターンを抽出する。
【００６８】
図５に示す判定部３４は、４つの配置パターン（２ａ）、（２ｂ）、（２ｃ）、（２ｄ）のそれぞれについて、基本回路Ｄ０に拡張回路ｄ０を接続可能か否かを判定する。また、判定部３４は、４つの配置パターン（２ｅ）、（２ｆ）、（２ｇ）、（２ｈ）のそれぞれについて、基本回路Ｄ１に拡張回路ｄ１を接続可能か否かを判定する。
【００６９】
判定部３４は、各配置パターン（２ａ）、（２ｂ）に示す配置可能領域に基本回路Ｄ０を配置した場合、基本回路Ｄ０に拡張回路ｄ０を接続可能であると判定する。判定部３４は、配置パターン（２ａ）は、基本回路Ｄ０の配置により、拡張回路ｃ０を配置できなくなると判定する。判定部３４は、各配置パターン（２ｃ）、（２ｄ）に示す配置可能領域に基本回路Ｄ０を配置した場合、基本回路Ｄ０に拡張回路ｄ０を接続できないと判定する。
【００７０】
また、判定部３４は、各配置パターン（２ｅ）、（２ｆ）に示す配置可能領域に基本回路Ｄ１を配置した場合、基本回路Ｄ１に拡張回路ｄ１を接続できないと判定する。判定部３４は、配置パターン（２ｅ）は、基本回路Ｄ１の配置により、拡張回路ｃ０を配置できなくなると判定する。判定部３４は、各配置パターン（２ｇ）、（２ｈ）に示す配置可能領域に基本回路Ｄ１を配置した場合、基本回路Ｄ１に拡張回路ｄ１を接続可能であると判定する。
【００７１】
図５に示す決定部３６は、まず、基本回路Ｄ０（またはＤ１）が拡張回路ｃ０と重複して配置される配置パターン（２ａ）、（２ｅ）を選択対象から除外する。すなわち、決定部３６は、基本回路Ｄ０（またはＤ１）を拡張回路ｃ０と重複せずに配置可能な他の配置パターンがある場合、配置パターン（２ａ）、（２ｅ）が示す配置可能領域への基本回路Ｄ０（またはＤ１）の配置を決定しない。これにより、基本回路Ｃ０によるタスクの処理性能が低下した場合に、拡張回路ｃ０をプログラマブル部１０に配置し、基本回路Ｃ０とともにタスクを並列に実行することができる。
【００７２】
次に、決定部３６は、拡張回路ｄ０（またはｄ１）を配置できない配置パターン（２ｃ）、（２ｄ）、（２ｆ）を選択対象から除外する。すなわち、決定部３６は、拡張回路ｄ０（またはｄ１）を配置可能な他の配置パターンがある場合、配置パターン（２ｃ）、（２ｄ）、（２ｆ）が示す配置可能領域への基本回路Ｄ０（またはＤ１）の配置を決定しない。これにより、タスクＤの負荷が増加し、基本回路Ｄ０（またはＤ１）での処理性能が不足した場合に、拡張回路ｄ０（またはｄ１）を配置することができ、タスクＤの処理性能を上げることができる。
【００７３】
決定部３６は、選択対象から除外していない配置パターン（２ｂ）、（２ｇ）、（２ｈ）のうち、最小限の再構成領域ＰＲＲを使用して、タスクＣとタスクＤの処理性能を最大にできる配置パターンを選択する。配置パターン（２ｂ）、（２ｈ）は、拡張回路ｃ０と拡張回路ｄ０（またはｄ１）で再構成領域ＰＲＲを共用せずに配置することができる。しかし、配置パターン（２ｂ）、（２ｈ）は、拡張回路ｃ０と拡張回路ｄ０（またはｄ１）の両方が配置される場合、空きの再構成領域ＰＲＲの数が、他に比べて少なくなる。
【００７４】
一方、配置パターン（２ｇ）は、１つの再構成領域ＰＲＲを拡張回路ｃ０、ｄ１で共用することができ、タスクＣ、Ｄの実行に使用される再構成領域ＰＲＲの数を最小限にできる。これにより、他のタスクを実行するために確保される未使用の再構成領域ＰＲＲの数を最大にすることができる。このため、決定部３６は、図８（３）に示すように、基本回路Ｄ１を配置パターン（２ｇ）に示す配置可能領域に配置することを決定する。そして、タスクＣの処理とともに、タスクＤの処理がプログラマブル部１０を使用して実行される。なお、配置パターン（２ｇ）は、プログラマブル部１０で実行されるタスクＣとタスクＤの少なくともいずれかにおいて、拡張回路を増設する頻度が所定の閾値より低いことが予測される場合に選択されることが望ましい。
【００７５】
一方、タスクＣとタスクＤの両方について、拡張回路を増設する頻度が、所定の閾値より高いことが予想される場合、決定部３６は、配置パターン（２ｂ）または（２ｈ）に示す配置可能領域に基本回路Ｄ０または基本回路Ｄ１を配置することを決定してもよい。換言すれば、決定部３６は、拡張回路ｃ０と拡張回路ｄ０（またはｄ１）とが配置される再構成領域ＰＲＲが互いに重複しないように、基本回路Ｄ０（またはＤ１）を配置してもよい。
【００７６】
複数の拡張回路により再構成領域ＰＲＲが共用される配置パターンを優先的に選択するか、複数の拡張回路により再構成領域ＰＲＲが共用されない配置パターンを優先的に選択するかは、情報処理装置１００Ａに構築されるシステムの仕様に応じて決定される。また、どの配置パターンを優先的に選択するかは、プログラマブル部１０で実行するタスクの特性に応じて、切り替えられてもよい。
【００７７】
この後、タスクＣの負荷が増加し、基本回路Ｃ０での処理性能が不足した場合に、図８（４）に示すように、基本回路Ｃ０に拡張回路ｃ０が接続される。図８（４）に示す状態で、タスクＣの負荷が減少し、基本回路Ｃ０のみでタスクＣの処理が可能になった場合、図８（３）に示す状態に戻る。
【００７８】
一方、タスクＤの負荷が増加し、基本回路Ｄ１での処理性能が不足した場合に、図８（５）に示すように、基本回路Ｄ１に拡張回路ｄ１が接続される。図８（５）に示す状態で、タスクＤの負荷が減少し、基本回路Ｄ１のみでタスクＤの処理が可能になった場合、図８（３）に示す状態に戻る。また、図８（４）に示す状態から図８（５）に示す状態に遷移してもよく、あるいは、図８（５）に示す状態から図８（４）に示す状態に遷移してもよい。
【００７９】
例えば、拡張回路の増設は、図５に示すネットワークＮＷを介してタスクの処理要求等の集中的なアクセスがあり、タスクの負荷が一時的に増加する場合に発生する。また、拡張回路の増設は、演算処理装置３０に掛かる負荷が増加することで、演算処理装置３０からプログラマブル部１０への処理データの転送が滞った後、溜まっていた処理データの転送が再開された場合に発生する。あるいは、拡張回路の増設は、仮想マシンがプログラマブル部１０で実行するタスクを管理する場合であって、仮想マシンのライブマイグレーションにより、タスクを処理するプログラマブル部１０を他の情報処理装置１００Ａに切り替える場合に発生する。
【００８０】
なお、抽出部３２により抽出された配置パターンが、基本回路Ｄ０（またはＤ１）が拡張回路ｃ０と重複して配置される配置パターン（２ａ）、（２ｅ）のみであったとする。この場合、決定部３６は、基本回路Ｄ０（またはＤ１）を配置パターン（２ａ）（または（２ｅ））に示す配置可能領域に配置することを決定する。但し、配置パターン（２ａ）は、拡張回路ｄ０を配置可能であるため、配置パターン（２ｅ）に比べて、タスクＤの処理性能を向上することができる。このため、決定部３６は、基本回路Ｄ０を配置パターン（２ａ）に示す配置可能領域に配置することを決定してもよい。
【００８１】
また、抽出部３２が抽出した配置パターンが、拡張回路ｄ０（またはｄ１）を配置できない配置パターン（２ｃ）、（２ｄ）、（２ｆ）のみであったとする。この場合、決定部３６は、基本回路Ｄ０（またはＤ１）を配置パターン（２ｃ）、（２ｄ）、（２ｆ）に示す配置可能領域のいずれかに配置することを決定する。なお、抽出部３２が抽出した配置パターンが、配置パターン（２ｅ）、（２ｆ）のみであった場合、決定部３６は、拡張回路ｃ０を配置可能な配置パターン（２ｆ）を選択することが望ましい。
【００８２】
以上のように、基本回路Ｄ０（またはＤ１）を再構成領域ＰＲＲのいずれかに配置可能な場合、プログラマブル部１０を使用してタスクＤを実行することで、ソフトウェアによりタスクＤを実行する場合に比べて処理性能を向上することができる。
【００８３】
図９は、図５に示すメインメモリ４０に格納される構成情報の別の例を示す。図７と同一または同様の要素については、詳細な説明は省略する。なお、図９では、再構成領域ＰＲＲを跨ぐ専用配線が接続される入出力部ＩＯ（すなわち、図６に示した共通配線ＣＷを跨ぐ配線）の記載は省略する。
【００８４】
図９では、タスクＥを実行する各基本回路Ｅ（Ｅ０、Ｅ１）は、横方向に並ぶ３つの再構成領域ＰＲＲを使用して配置され、タスクＥを実行する各拡張回路ｅ（ｅ０、ｅ１）は、横方向に２つ、かつ縦方向に２つ並ぶ４つの再構成領域ＰＲＲを使用して配置される。拡張回路ｅ０は、基本回路Ｅ０に接続可能であり、拡張回路ｅ１は、基本回路Ｅ１に接続可能である。
【００８５】
基本回路Ｅ０、Ｅ１のロジック部Ｌの論理は、３つの再構成領域ＰＲＲに跨って配置され、拡張回路ｅ０、ｅ１のロジック部Ｌの論理は、４つの再構成領域ＰＲＲに跨って配置される。そして、基本回路Ｅ０、基本回路Ｅ１、基本回路Ｅ０、ｅ０または基本回路Ｅ１、ｅ１のいずれかによりタスクＥが実行される。基本回路Ｅに拡張回路ｅが接続される場合、タスクＥのロジック部Ｌによる処理性能は、基本回路Ｅの単体での処理性能の４倍になる。
【００８６】
図１０は、図５に示すメインメモリ４０に格納される構成情報のさらなる別の例を示す。図７と同一または同様の要素については、詳細な説明は省略する。なお、図１０においても、再構成領域ＰＲＲを跨ぐ専用配線が接続される入出力部ＩＯの記載は省略する。
【００８７】
図１０では、各基本回路Ｆ（Ｆ０、Ｆ１）は、１つの再構成領域ＰＲＲを使用して配置され、各拡張回路ｆ（ｆ０、ｆ１）は、横方向に並ぶ２つの再構成領域ＰＲＲを使用して配置される。拡張回路ｆ０は、基本回路Ｆ０に接続可能であり、拡張回路ｆ１は、基本回路Ｆ１に接続可能である。基本回路Ｆに拡張回路ｆが接続される場合、タスクＦのロジック部Ｌによる処理性能は、基本回路Ｆの単体での処理性能の４倍になる。
【００８８】
図１１は、図５に示す情報処理装置１００Ａの動作の別の例を示す。すなわち、図１１は、情報処理装置１００Ａの制御方法の一例を示す。図８と同一または同様の要素については、詳細な説明は省略する。
【００８９】
図１１（１）に示す状態では、Ｘ印で示す基本回路等がプログラマブル部１０に配置済みであり、白抜きで示す１１個の再構成領域ＰＲＲが使用されずに空いている。図１１（１）に示す状態で、タスクＥの処理を実行する回路の配置要求が発生する。
【００９０】
図５に示す抽出部３２は、回路が配置されていない１１個の再構成領域ＰＲＲの中から図９に示した基本回路Ｅ０、Ｅ１のそれぞれを配置可能な再構成領域ＰＲＲ（配置可能領域）を抽出する。図１１（２）は、抽出部３２が抽出した配置可能領域（網掛け部分）の配置パターンを示す。なお、図１１（２）では、基本回路Ｅ０（またはＥ１）とともに拡張回路ｅ０（またはｅ１）を配置可能な配置パターンのみを示し、拡張回路ｅ０、ｅ１を配置できない基本回路Ｅ０、Ｅ１の配置パターンの記載は省略される。換言すれば、図１１（２）は、図５に示す判定部３４により、拡張回路ｅ０（またはｅ１）を基本回路Ｅ０（またはＥ１）に接続可能と判定された配置パターンを示す。
【００９１】
図１１（２）に示す配置パターン（２ａ）、（２ｂ）、（２ｃ）において、基本回路Ｅ０（またはＥ１）の配置に使用される再構成領域ＰＲＲの数は、互いに同じである。このため、図５に示す決定部３６は、例えば、配置パターン（２ａ）、（２ｂ）、（２ｃ）に示す配置可能領域のうち、基本回路Ｅ０（またはＥ１）を配置した後に、空き領域が最もまとまって確保されるものを選択する。すなわち、決定部３６は、図１１（３）に示すように、配置パターン（２ａ）に示す配置可能領域に基本回路Ｅ０を配置することを決定する。なお、決定部３６は、配置パターン（２ａ）、（２ｂ）、（２ｃ）以外の拡張回路ｅ０（またはｅ１）が配置できない配置可能領域を有する配置パターン（図示せず）を選択しない。
【００９２】
図１１（３）に示す状態で、タスクＦの処理を実行する回路の配置要求が発生する。抽出部３２は、回路が配置されていない８個の再構成領域ＰＲＲの中から基本回路Ｆ０、Ｆ１のそれぞれを配置可能な再構成領域ＰＲＲ（配置可能領域）を抽出する。図１１（４）は、抽出部３２が抽出した配置可能領域（網掛け部分）を示す。なお、図１１（４）は、判定部３４により、拡張回路ｅ０と重複しない位置に配置可能な基本回路Ｆ０（またはＦ１）に、拡張回路ｆ０（またはｆ１）を接続可能と判定された配置可能領域のみを示す。
【００９３】
決定部３６は、図１１（４）に示す配置パターン（４ａ）、（４ｂ）に示す配置可能領域のうち、基本回路Ｆ１を配置した後に、空き領域が最もまとまって確保されるものを選択する。すなわち、決定部３６は、図１１（５）に示すように、配置パターン（４ｂ）に示す配置可能領域に基本回路Ｆ１を配置することを決定する。
【００９４】
図１２は、図５に示す情報処理装置１００Ａが実行する制御プログラムによる処理の一例を示す。すなわち、図１２は、情報処理装置１００Ａの制御方法の一例を示す。図１２に示すフローは、タスクを実行する回路をプログラマブル部１０に配置する配置要求の発行に基づいて開始される。
【００９５】
まず、ステップＳ１００において、制御プログラムは、プログラマブル部１０にプログラムされた現在の回路の配置状態を抽出する処理を実行する。ステップＳ１００の処理の例は、図１３に示される。
【００９６】
次に、ステップＳ１２０において、制御プログラムは、全ての再構成領域ＰＲＲが使用中であるか否かを判定する。全ての再構成領域ＰＲＲが使用中である場合、処理はステップＳ２６０に移行され、未使用の再構成領域ＰＲＲがある場合、処理はステップＳ１４０に移行される。
【００９７】
ステップＳ１４０において、制御プログラムは、変数ｉを”０”に初期化する。例えば、図８で説明したように、図７に示すタスクＤを実行する回路の配置要求を受けた場合、変数ｉは、基本回路Ｄ０を示す”０”と、基本回路Ｄ１を示す”１”に順次設定される。次に、ステップＳ１６０において、制御プログラムは、基本回路ｉ（例えば、Ｄ０またはＤ１）を配置可能な再構成領域ＰＲＲを示す配置パターンを抽出する。次に、ステップＳ１８０において、制御プログラムは、変数ｉを”１”増加させる。
【００９８】
次に、ステップＳ２００において、制御プログラムは、基本回路ｉの構成情報がメインメモリ４０に登録されているか否かを判定する。基本回路ｉの構成情報がメインメモリ４０に登録されている場合、新たな基本回路ｉを配置可能な再構成領域ＰＲＲを示す配置パターンを抽出するため、処理はステップＳ１６０に戻る。基本回路ｉの構成情報がメインメモリ４０に登録されていない場合、基本回路ｉを配置可能な再構成領域ＰＲＲを示す配置パターンの抽出が全て完了したため、処理はステップＳ２２０に移行する。
【００９９】
例えば、図８（１）に示すプログラマブル部１０の状態で、タスクＤを実行する回路の配置要求を受けた場合、変数ｉ＝”０”では、図８（２）に示す配置パターン（２ａ）、（２ｂ）、（２ｃ）、（２ｄ）が抽出される。変数ｉ＝”１”では、図８（２）に示す配置パターン（２ｅ）、（２ｆ）、（２ｇ）、（２ｈ）が抽出される。
【０１００】
ステップＳ２２０において、制御プログラムは、ステップＳ１６０による配置可能な再構成領域ＰＲＲの抽出結果に基づいて、基本回路のいずれかを配置可能な再構成領域ＰＲＲが存在するか否かを判定する。基本回路のいずれかを配置可能な再構成領域ＰＲＲが存在する場合、基本回路を配置する再構成領域ＰＲＲを決定するため、処理はステップＳ２４０に移行する。基本回路のいずれかを配置可能な再構成領域ＰＲＲが存在しない場合、基本回路を再構成領域ＰＲＲに配置できないため、処理はステップＳ２６０に移行する。
【０１０１】
ステップＳ２４０において、制御プログラムは、ステップＳ１６０で抽出された配置パターンに基づいて、再構成領域ＰＲＲのいずれかに配置する基本回路を決定する処理を実行し、処理を終了する。ステップＳ２４０の処理の例は、図１４に示される。一方、基本回路を配置可能な再構成領域ＰＲＲがない場合、ステップＳ２６０において、制御プログラムは、アプリケーションプログラム等のソフトウェアによりタスクを実行することを決定し、処理を終了する。
【０１０２】
図１３は、図１２に示すステップＳ１００の処理の一例を示す。まず、ステップＳ１０２において、制御プログラムは、各再構成領域ＰＲＲの状態を示す情報が格納される配列ＰＲＲ＿ＳＴ［ｎ］の全ての要素を”未使用”（例えば、”０”）に初期化する。例えば、プログラマブル部１０が１６個の再構成領域ＰＲＲを有する場合、”ｎ”は”０”から”１５”のいずれかである。
【０１０３】
次に、ステップＳ１０４において、制御プログラムは、変数ｎを”０”に初期化する。次に、ステップＳ１０６において、制御プログラムは、配列ＰＲＲ＿ＳＴ［ｎ］に対応するｎ番目の再構成領域ＰＲＲの現在の状態を検出する。次に、ステップＳ１０８において、制御プログラムは、ｎ番目の再構成領域ＰＲＲに基本回路を配置済みの場合、処理をステップＳ１１０に移行し、ｎ番目の再構成領域ＰＲＲに基本回路が配置されていない場合、処理をステップＳ１１２に移行する。
【０１０４】
ステップＳ１１０において、制御プログラムは、再構成領域ＰＲＲに基本回路が配置されていることを示す”基本”（例えば、”２”）を、配列ＰＲＲ＿ＳＴ［ｎ］に格納する。次に、ステップＳ１１２において、制御プログラムは、既に配置済みの基本回路に基づいて、ｎ番目の再構成領域ＰＲＲに拡張回路を配置する可能性がある場合、処理をステップＳ１１４に移行する。制御プログラムは、既に配置済みの基本回路に基づいて、ｎ番目の再構成領域ＰＲＲに拡張回路を配置する可能性がない場合、処理をステップＳ１１６に移行する。
【０１０５】
ステップＳ１１４において、制御プログラムは、再構成領域ＰＲＲに拡張回路が配置される可能性があることを示す”拡張”（例えば、”１”）を、配列ＰＲＲ＿ＳＴ［ｎ］に格納し、処理をステップＳ１１６に移行する。ステップＳ１１６において、制御プログラムは、変数ｎを”１”増加させる。次に、ステップＳ１１８において、制御プログラムは、配列ＰＲＲ＿ＳＴ［ｎ］が存在するか否かを判定する。配列ＰＲＲ＿ＳＴ［ｎ］が存在する場合、再構成領域ＰＲＲの状態を配列ＰＲＲ＿ＳＴ［ｎ］に格納するために、処理はステップＳ１０６に戻る。配列ＰＲＲ＿ＳＴ［ｎ］が存在しない場合、回路の配置状態を示す情報が、全ての配列ＰＲＲ＿ＳＴ［０］−ＰＲＲ＿ＳＴ［１５］に格納されたため、処理は終了する。
【０１０６】
図１３の右側に示す配列ＰＲＲ＿ＳＴ［ｎ］は、図８（１）に示すプログラマブル部１０の状態を示す。図１３では、理解を容易にするために、プログラマブル部１０の再構成領域ＰＲＲのレイアウトに合わせた２次元の配列ＰＲＲ＿ＳＴ［ｎ］が示される。なお、図１２に示したステップＳ１６０では、”０”または”１”が格納された配列ＰＲＲ＿ＳＴ［ｎ］に対応する再構成領域ＰＲＲの中から、基本回路を配置可能な再構成領域ＰＲＲが抽出される。
【０１０７】
図１４は、図１２に示すステップＳ２４０の処理の一例を示す。制御プログラムは、図１２に示すステップＳ１６０で抽出された配置パターン（例えば、図８に示す（２ａ）−（２ｈ））に基づいて、プログラマブル部１０に配置する基本回路と、配置する再構成領域ＰＲＲの位置とを決定する。
【０１０８】
まず、ステップＳ２４２において、制御プログラムは、ステップＳ１６０で抽出された配置パターンのうち、基本回路に接続される拡張回路が、他の拡張回路と再構成領域ＰＲＲを共用する配置パターンを第１パターンＰＴＮ１として選択する。次に、ステップＳ２４４において、制御プログラムは、ステップＳ１６０で抽出された配置パターンのうち、基本回路に接続される拡張回路が、他の拡張回路と再構成領域ＰＲＲを共用しない配置パターンを第２パターンＰＴＮ２として選択する。なお、図８に示す配置パターン（２ａ）では、拡張回路ｄ０は、基本回路Ｃ０に接続される拡張回路ｃ０と再構成領域ＰＲＲを共用しないが、基本回路Ｄ０の配置により拡張回路ｃ０が配置できなくなるため、第２パターンＰＴＮ２として選択されない。
【０１０９】
次に、ステップＳ２４６において、制御プログラムは、図１２に示すステップＳ１６０で抽出された配置パターンのうち、第１パターンＰＴＮ１または第２パターンＰＴＮ２のいずれにも該当しない配置パターンを第３パターンＰＴＮ３として選択する。次に、ステップＳ２４８において、制御プログラムは、第１パターンＰＴＮ１として選択した配置パターンが存在する場合、処理をステップＳ２５２に移行する。制御プログラムは、第１パターンＰＴＮ１として選択した配置パターンが存在しない場合、処理をステップＳ２５０に移行する。ステップＳ２５０において、制御プログラムは、第２パターンＰＴＮ２として選択した配置パターンが存在する場合、処理をステップＳ２５４に移行し、第２パターンＰＴＮ２として選択した配置パターンが存在しない場合、処理をステップＳ２５６に移行する。
【０１１０】
ステップＳ２５２において、制御プログラムは、第１パターンＰＴＮ１として選択された配置パターンのいずれかに対応する再構成領域ＰＲＲに基本回路を配置し、処理を終了する。ステップＳ２５４において、制御プログラムは、第２パターンＰＴＮ２として選択された配置パターンのいずれかに対応する再構成領域ＰＲＲに基本回路を配置し、処理を終了する。ステップＳ２５６において、制御プログラムは、第３パターンＰＴＮ３として選択された配置パターンのいずれかに対応する再構成領域ＰＲＲに基本回路を配置し、処理を終了する。
【０１１１】
なお、基本回路に接続される拡張回路が、他の拡張回路と再構成領域ＰＲＲを共用しない配置パターンを優先的に使用する場合、すなわち、パターンＰＴＮ２をパターンＰＴＮ１より優先させる場合、ステップＳ２４８、Ｓ２５０の判定順序が入れ換えられる。
【０１１２】
図１５は、図５に示すメインメモリ４０に格納される構成情報の別の例を示す。図７および図９と同一または同様の要素については、詳細な説明は省略する。
【０１１３】
図１５では、タスクＧを実行する各基本回路Ｇ（Ｇ０、Ｇ１）は、横方向に並ぶ２つの再構成領域ＰＲＲを使用して配置され、タスクＧを実行する各拡張回路ｇ（ｇ０、ｇ１）は、横方向に２つ、かつ縦方向に２つ並ぶ４つの再構成領域ＰＲＲを使用して配置される。拡張回路ｇ０は、基本回路Ｇ０に接続可能であり、拡張回路ｇ１は、基本回路Ｇ１に接続可能である。
【０１１４】
基本回路Ｇのロジック部Ｌの論理は、２つの再構成領域ＰＲＲに跨って配置され、拡張回路ｇのロジック部Ｌの論理は、４つの再構成領域ＰＲＲに跨って配置される。また、基本回路ＧのディスパッチャＤＰを拡張回路ｇに接続する入出力部ＩＯと、基本回路Ｇの集約部ＧＡを拡張回路ｇに接続する入出力部ＩＯとは、互いに異なる再構成領域ＰＲＲに設けられる。
【０１１５】
基本回路Ｇを拡張回路ｇに接続する２つの入出力部ＩＯを２つの再構成領域ＰＲＲのそれぞれに配置することで、基本回路Ｇにおいて、ディスパッチャＤＰまたは集約部ＧＡから入出力部ＩＯまでの配線の長さを最小限にすることができる。また、拡張回路ｇにおいて、入出力部ＩＯからロジック部Ｌまでの配線の長さを最小限にすることができる。
【０１１６】
これに対して、図９に示すように、基本回路Ｅを拡張回路ｅに接続する２つの入出力部ＩＯを１つの再構成領域ＰＲＲに配置する場合、基本回路Ｅにおいて、ディスパッチャＤＰまたは集約部ＧＡから入出力部ＩＯまでの配線の長さは、図９に比べて長くなる。同様に、拡張回路ｅにおいて、入出力部ＩＯからロジック部Ｌまでの配線の長さは、図９に比べて長くなる。
【０１１７】
図１６は、タスクＤを実行する構成情報の別の例を示す。図７と同一または同様の要素については、詳細な説明は省略する。図１６では、図７に示すタスクＤの構成情報に、拡張回路ｄ２、ｄ３の構成情報が追加される。
【０１１８】
拡張回路ｄ２は、基本回路Ｄ０と拡張回路ｄ０との間に配置される。拡張回路ｄ３は、基本回路Ｄ１と拡張回路ｄ１との間に配置される。なお、例えば、基本回路Ｄ０に拡張回路ｄ０のみを接続する場合と、基本回路Ｄ０に拡張回路ｄ２のみを接続する場合とで、タスクＤの処理性能は同じである。このため、タスクＤの負荷が増加した場合に基本回路Ｄ０に拡張回路ｄ２を接続し、タスクＤの負荷がさらに増加した場合に拡張回路ｄ２に拡張回路ｄ０を接続することで、負荷の増加に応じて、タスクＤの処理性能を多段階に調整することができる。
【０１１９】
例えば、基本回路Ｄ０に拡張回路ｄ０、ｄ２を接続することで、タスクＤのロジック部Ｌによる処理性能は、基本回路Ｄ０の単体での処理性能の２倍になる。なお、プログラマブル部１０の縦方向に５つ以上の再構成領域ＰＲＲが設けられる場合、複数の拡張回路ｄ２（またはｄ３）を基本回路Ｄ０（またはＤ１）に接続することができる。
【０１２０】
以上、図５から図１６に示す実施形態においても、図１から図４に示す実施形態と同様の効果を得ることができる。例えば、入出力部ＩＯによる拡張回路の配置方向が互いに異なる複数の基本回路を用意することで、複数の入出力部ＩＯを有し、拡張回路を複数の方向に接続可能な基本回路に比べて、入出力部ＩＯの回路量を削減することができる。このため、ロジック部Ｌ等の処理部の回路量を相対的に増大することができる。したがって、入出力部ＩＯを複数の辺に設ける場合に比べて、基本回路の処理性能を向上することができる。この結果、拡張回路を増設する頻度を下げることが可能になり、拡張回路のプログラマブル部１０への配置を制御する演算処理装置３０の負荷を軽減することができる。
【０１２１】
さらに、図５から図１６に示す実施形態では、再構成領域ＰＲＲを他の拡張回路と共用可能な拡張回路に対応する基本回路を再構成領域ＰＲＲに配置することで、複数種のタスクの実行に使用される再構成領域ＰＲＲの数を最小限にすることができる。これより、他のタスクを実行するために確保される未使用の再構成領域ＰＲＲの数を最大にすることができる。
【０１２２】
また、他の拡張回路と共用されない再構成領域ＰＲＲに配置可能な拡張回路に対応する基本回路を再構成領域ＰＲＲに配置することで、各基本回路の処理性能が不足した場合に、拡張回路をそれぞれ配置することできる。さらに、基本回路を他の拡張回路と重複せずに再構成領域ＰＲＲに配置することで、他の拡張回路と、他の基本回路の処理性能が低下した場合に、他の拡張回路を用いてタスクを実行することができる。
【０１２３】
以上の図１から図１６に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
論理を再構成可能な複数の再構成領域を有するプログラマブル部と、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出する抽出部と、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、前記抽出部により抽出された前記配置可能領域に隣接する再構成領域に配置可能であるか判定する判定部と、
前記判定部による判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定する決定部と、
前記決定部が決定した前記第１配置領域に前記第１配置回路を配置する配置部と
を備えることを特徴とする情報処理装置。
（付記２）
第２処理を実行する第３回路が配置された再構成領域に隣接して、前記第３回路による第２処理の処理性能が不足した場合に第２処理を実行する第４回路が配置される再構成領域である予約領域がある場合であって、前記判定部が、前記複数の第２回路のいずれかが前記予約領域に配置可能であることを判定した場合、
前記決定部は、前記予約領域に配置可能な第２回路に対応する前記第１配置回路と前記第１配置領域とを決定することを特徴とする付記１記載の情報処理装置。
（付記３）
第２処理を実行する第３回路が配置された再構成領域に隣接して、前記第３回路による第２処理の処理性能が不足した場合に第２処理を実行する第４回路が配置される再構成領域である予約領域がある場合であって、前記判定部が、前記複数の第２回路のいずれかが前記予約領域以外に配置可能であることを判定した場合、
前記決定部は、前記予約領域を避けて配置可能な第２回路のいずれかに対応する前記第１配置回路と前記第１配置領域とを決定することを特徴とする付記１記載の情報処理装置。
（付記４）
前記決定部は、前記抽出部が抽出した前記配置可能領域のいずれかが前記予約領域と重複しない場合、前記予約領域を避けて前記第１配置回路を配置することを決定することを特徴とする付記２または付記３記載の情報処理装置。
（付記５）
前記決定部は、前記抽出部が抽出した前記配置可能領域の全てが前記予約領域を含む場合、前記予約領域を含む再構成領域に前記第１配置回路を配置することを決定することを特徴とする付記２または付記３記載の情報処理装置。
（付記６）
前記判定部が、前記複数の第２回路のうち、前記配置可能領域に隣接する再構成領域に配置可能な第２回路がないことを判定した場合、
前記決定部は、前記複数の第１回路のいずれかを前記第１配置回路に決定し、前記配置可能領域のいずれかを前記第１配置領域に決定することを特徴とする付記１ないし付記３のいずれか１項記載の情報処理装置。
（付記７）
前記配置部は、前記配置可能領域のいずれかに配置された前記第１配置回路による前記第１処理の処理性能が不足した場合であって、前記複数の第２回路のうち、前記第１配置回路に対応する第２回路を配置可能な再構成領域がある場合、前記第１配置回路に対応する第２回路を前記プログラマブル部に配置することを特徴とする付記１ないし付記６のいずれか１項記載の情報処理装置。
（付記８）
前記配置部は、前記抽出部が前記第１配置回路を配置する前記配置可能領域を抽出しない場合、前記複数の第１回路のいずれも前記プログラマブル部に配置せず、
前記第１処理は、前記情報処理装置に設けられる演算処理部が実行するプログラムにより実行されることを特徴とする付記１ないし付記７のいずれか１項記載の情報処理装置。
（付記９）
前記複数の再構成領域は、矩形形状を有し、
前記複数の第１回路の前記第１入出力部は、前記複数の再構成領域の四辺のうちの一辺に配置されることを特徴とする付記１ないし付記８のいずれか１項記載の情報処理装置。
（付記１０）
前記複数の第１回路の各々の構成情報と、前記複数の第２回路の各々の構成情報とを記憶する記憶部を備えることを特徴とする付記１ないし付記９のいずれか１項記載の情報処理装置。
（付記１１）
前記複数の第１回路の配置にそれぞれ使用される再構成領域の数は、互いに同じであることを特徴とする付記１ないし付記１０のいずれか１項記載の情報処理装置。
（付記１２）
論理を再構成可能な複数の再構成領域を有するプログラマブル部を備える情報処理装置の制御方法において、
前記情報処理装置が、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出し、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出した前記配置可能領域に隣接する再構成領域に配置可能であるか判定し、
判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定し、
決定した前記第１配置領域に前記第１配置回路を配置することを特徴とする情報処理装置の制御方法。
（付記１３）
論理を再構成可能な複数の再構成領域を有するプログラマブル部を備える情報処理装置の制御プログラムにおいて、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出し、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出した前記配置可能領域に隣接する再構成領域に配置可能であるか判定し、
判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定し、
決定した前記第１配置領域に前記第１配置回路を配置する
処理を、前記情報処理装置に実行させるための制御プログラム。
（付記１４）
論理を再構成可能な複数の再構成領域を有するプログラマブル部を備える情報処理装置の制御プログラムを記録した記録媒体において、
第１処理を実行する第１処理部と、情報を入出力する第１入出力部とを有し、かつ、前記複数の再構成領域のいずれかに配置された場合に前記第１入出力部の位置が互いに異なる複数の第１回路のいずれかを配置可能な配置可能領域を、前記複数の再構成領域の中から抽出し、
前記第１処理を実行する第２処理部と、前記第１入出力部に接続される第２入出力部とを有し、かつ、前記複数の第１回路にそれぞれ対応する複数の第２回路の各々を、抽出した前記配置可能領域に隣接する再構成領域に配置可能であるか判定し、
判定に基づいて、前記複数の第１回路のうち、前記プログラマブル部に配置する第１配置回路と、前記配置可能領域のうち、前記第１配置回路を配置する第１配置領域とを決定し、
決定した前記第１配置領域に前記第１配置回路を配置する
処理を、前記情報処理装置に実行させるための制御プログラムを記録した記録媒体。
【０１２４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１２５】
１…プログラマブル部；２…記憶装置；２ａ、２ｂ…記憶領域；３…演算処理装置；３ａ…抽出部；３ｂ…判定部；３ｃ…決定部；３ｄ…配置部；４…記録媒体；１０…プログラマブル部；２０…外部メモリ；３０…演算処理装置；３２…抽出部；３４…判定部；３６…決定部；３８…配置部；４０…メインメモリ；４２…制御プログラム；４４…他のプログラム；４６…構成情報；５０…入出力インタフェース；６０…ＨＤＤ；７０…通信インタフェース；１００、１００Ａ…情報処理装置；ＢＵＳ１、ＢＵＳ２、ＢＵＳ３、ＢＵＳ４…バス；ＣＷ…共通配線；ＤＰ…ディスパッチャ；ＦＦ…フリップフロップ；ＧＡ…集約部；ＩＦ１、ＩＦ２…接続インタフェース；ＩＯ…入出力部；Ｌ…ロジック部；ＬＢＬＫ…論理ブロック；ＬＵＴ…ルックアップテーブル；ＮＯＣ…配線ネットワーク；ＮＷ…ネットワーク；ＰＯＳＴ…後処理部；ＰＲＥ…前処理部；ＰＲＯＣ…処理部；ＰＲＲ…部分再構成領域；ＲＴ…ルータ；ＷＣＮＴ…書き込み制御部
【図１】
2018151826.tif 000003
【図２】
2018151826.tif 000004
【図３】
2018151826.tif 000005
【図４】
2018151826.tif 000006
【図５】
2018151826.tif 000007
【図６】
2018151826.tif 000008
【図７】
2018151826.tif 000009
【図８】
2018151826.tif 000010
【図９】
2018151826.tif 000011
【図１０】
2018151826.tif 000012
【図１１】
2018151826.tif 000013
【図１２】
2018151826.tif 000014
【図１３】
2018151826.tif 000015
【図１４】
2018151826.tif 000016
【図１５】
2018151826.tif 000017
【図１６】
2018151826.tif 000018