(57)【要約】【課題】  制御部ともに半導体装置に搭載される再構成部で実行するタスクに依存して制御部の処理性能が低下することを抑止する。【解決手段】  情報処理装置は、タスクの実行を制御する制御部と第１の再構成部とを含む複数の半導体装置と、複数の半導体装置に接続される第２の再構成部とを備え、制御部のいずれかである第１の制御部は、複数の半導体装置のいずれかである第１の半導体装置の制御部と第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の第１の再構成部にプログラムし、第１の半導体装置の制御部の負荷の増加により、第１の半導体装置の消費電力が第１の所定値を超えた場合、第１の半導体装置の第１の再構成部にプログラムされた論理を第２の再構成部にプログラムし、第２の再構成部にプログラムされた論理を使用してタスクを実行する。【選択図】    図１
2018092551.tif 000002
【特許請求の範囲】
【請求項１】
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、
前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部と
を備え、
前記制御部のいずれかである第１の制御部は、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行すること
を特徴とする情報処理装置。
【請求項２】
前記第１の制御部は、タスクを実行する複数種の論理を前記第１の再構成部の少なくともいずれかにプログラムし、データ転送コストをタスク毎に求め、求めたデータ転送コストに基づいて、データ転送コストが他のタスクに比べて小さいタスクを実行する論理を、前記第１の半導体装置の前記第１の再構成部にプログラムすること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第１の制御部は、前記制御部に掛かるタスク毎のデータ転送コストを、所定期間において、タスクの実行に伴い前記制御部と前記第１の再構成部との間で転送されるデータ転送時間に基づいて求めること
を特徴とする請求項２記載の情報処理装置。
【請求項４】
前記所定期間におけるデータ転送量を”Ｄ”、前記複数の半導体装置に含まれる前記制御部と前記第１の再構成部との間のデータ転送レートを”Ｓ”、前記所定期間におけるデータ転送回数を”Ｋ”、１回のデータ転送に掛かるオーバヘッドを”Ａ”とする場合、
前記第１の制御部は、前記データ転送コストを、”（Ｄ／Ｓ）＋（Ｋ×Ａ）”により算出すること
を特徴とする請求項３記載の情報処理装置。
【請求項５】
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が前記第１の所定値を超える毎に、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理のいずれかを前記第２の再構成部にプログラムすること
を特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理装置。
【請求項６】
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の減少により、前記第１の半導体装置の消費電力が前記第１の所定値より低い第２の所定値以下になった場合、前記第２の再構成部にプログラムされた論理を、前記第１の半導体装置の前記第１の再構成部に再度プログラムし、
前記第１の半導体装置の前記制御部は、前記第１の半導体装置の前記第１の再構成部に再度プログラムされた論理を使用してタスクを実行すること
を特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の減少により、前記第１の半導体装置の消費電力が前記第２の所定値以下になる毎に、前記第２の再構成部にプログラムされた論理のいずれかを、前記第１の半導体装置の前記第１の再構成部に再度プログラムすること
を特徴とする請求項６記載の情報処理装置。
【請求項８】
前記第１の制御部は、前記第１の再構成部にプログラムされた論理が前記第２の再構成部にプログラムされる前、前記第２の再構成部をパワーダウン状態に設定すること
を特徴とする請求項１ないし請求項７のいずれか１項記載の情報処理装置。
【請求項９】
前記第１の制御部は、前記第２の再構成部への論理のプログラムにより、タスクを実行する論理が前記第１の半導体装置の前記第１の再構成部に存在しない場合、前記第１の半導体装置の前記第１の再構成部をパワーダウン状態に設定すること
を特徴とする請求項１ないし請求項８のいずれか１項記載の情報処理装置。
【請求項１０】
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御方法において、
前記制御部のいずれかである第１の制御部が、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行することを
特徴とする情報処理装置の制御方法。
【請求項１１】
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御プログラムにおいて、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行する
処理を、前記制御部のいずれかである第１の制御部に実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
近時、論理を動的に再構成可能なＦＰＧＡ（Field-Programmable Gate Array）等のプログラマブルデバイスをアクセラレータとして機能させる情報処理装置が注目されている。例えば、ＦＰＧＡで実行するタスク毎に、処理特性が異なる複数の回路情報を用意しておき、システムの動作状態に応じて複数の回路情報のいずれかをＦＰＧＡにロードすることで、各種の要求項目を満足する動作が実現される（例えば、特許文献１参照）。また、ＦＰＧＡに搭載される複数のＣＰＵ（Central Processing Unit）コアを外部とのインタフェース用と暗号処理用とに使用し、２つのＣＰＵを連携して動作させることで、暗号処理のトランザクションが効率的に実行される（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１７９３５８号公報
【特許文献２】特開２００９−２９６１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＰＵとＦＰＧＡとが１つの半導体装置に搭載される場合、ＣＰＵおよびＦＰＧＡは、ＣＰＵの消費電力とＦＰＧＡの消費電力との総和が半導体装置に許容される消費電力以下になるように動作する。このため、ＦＰＧＡで実行するタスクが多いほど、ＣＰＵに許容される消費電力は小さくなる。例えば、ＦＰＧＡでのタスクの実行に伴いＣＰＵの消費電力を下げるために、ＣＰＵの動作周波数を下げる場合、ＣＰＵの処理性能は低下する。
【０００５】
１つの側面では、本発明は、制御部とともに半導体装置に搭載される再構成部で実行するタスクに依存して制御部の処理性能が低下することを抑止することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施態様では、情報処理装置は、タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備え、制御部のいずれかである第１の制御部は、複数の半導体装置のいずれかである第１の半導体装置の制御部と第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の第１の再構成部にプログラムし、第１の半導体装置の制御部の負荷の増加により、第１の半導体装置の消費電力が第１の所定値を超えた場合、第１の半導体装置の第１の再構成部にプログラムされた論理を第２の再構成部にプログラムし、第２の再構成部にプログラムされた論理を使用してタスクを実行する。
【０００７】
別の実施態様では、タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御方法において、制御部のいずれかである第１の制御部が、複数の半導体装置のいずれかである第１の半導体装置の制御部と第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の第１の再構成部にプログラムし、第１の半導体装置の制御部の負荷の増加により、第１の半導体装置の消費電力が第１の所定値を超えた場合、第１の半導体装置の第１の再構成部にプログラムされた論理を第２の再構成部にプログラムし、第２の再構成部にプログラムされた論理を使用してタスクを実行する。
【０００８】
さらなる別の実施態様では、タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御プログラムにおいて、複数の半導体装置のいずれかである第１の半導体装置の制御部と第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の第１の再構成部にプログラムし、第１の半導体装置の制御部の負荷の増加により、第１の半導体装置の消費電力が第１の所定値を超えた場合、第１の半導体装置の第１の再構成部にプログラムされた論理を第２の再構成部にプログラムし、第２の再構成部にプログラムされた論理を使用してタスクを実行する処理を、制御部のいずれかである第１の制御部に実行させる。
【発明の効果】
【０００９】
１つの側面では、本発明は、制御部とともに半導体装置に搭載される再構成部で実行するタスクに依存して制御部の処理性能が低下することを抑止することができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。
【図２】図１に示す情報処理装置の動作の一例を示す図である。
【図３】図１に示すＣＰＵ０が実行する制御プログラムの処理の一例を示す図である。
【図４】図１に示す情報処理装置の動作の別の例を示す図である。
【図５】図１に示す情報処理装置の動作のさらなる別の例を示す図である。
【図６】別の実施形態における情報処理装置の動作の一例を示す図である。
【図７】図６に示すＣＰＵ０が実行する制御プログラムの処理の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。図１に示す情報処理装置ＩＰＥは、複数の半導体装置ＳＥＭ（ＳＥＭ０、ＳＥＭ１）、複数の記憶装置ＭＥＭ（ＭＥＭ０、ＭＥＭ１）および基板ＢＲＤを有する。なお、情報処理装置ＩＰＥは、３つ以上の半導体装置ＳＥＭと、２つ以上の基板ＢＲＤとを有してもよい。
【００１３】
例えば、半導体装置ＳＥＭ０、ＳＥＭ１および記憶装置ＭＥＭ０、ＭＥＭ１は、情報処理装置ＩＰＥのマザーボード（図示せず）に搭載され、基板ＢＲＤは、マザーボードに搭載されたソケットに装着される。例えば、各記憶装置ＭＥＭ０、ＭＥＭ１は、複数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）が搭載されたＤＩＭＭ（Dual Inline Memory Module）である。
【００１４】
半導体装置ＳＥＭ０は、内部バスＩＢＵＳ０を介して互いに接続されたＣＰＵ０およびＦＰＧＡ０を含み、半導体装置ＳＥＭ１は、内部バスＩＢＵＳ１を介して互いに接続されたＣＰＵ１およびＦＰＧＡ１を含む。なお、ＣＰＵ０、ＣＰＵ１の代わりに、他のプロセッサがマザーボードに搭載されてもよく、ＦＰＧＡ０、ＦＰＧＡ１の代わりに、論理を再構成可能な他のプログラマブルデバイスが搭載されてもよい。
【００１５】
例えば、半導体装置ＳＥＭ０（またはＳＥＭ１）は、ＣＰＵ０（またはＣＰＵ１）を含む半導体チップとＦＰＧＡ０（またはＦＰＧＡ１）を含む半導体チップとを有するマルチチップモジュール（マルチチップパッケージ）である。マルチチップモジュールにおいて、半導体チップが積層される場合、半導体チップ間は、ＴＳＶ（Through-Silicon Via）等の貫通電極により接続される。
【００１６】
あるいは、半導体装置ＳＥＭ０（またはＳＥＭ１）は、ＣＰＵ０（またはＣＰＵ１）とＦＰＧＡ０（またはＦＰＧＡ１）とを含むＳｏＣ（System on a Chip）等の半導体チップとを有する。この場合、ＦＰＧＡ０（またはＦＰＧＡ１）が、ＣＰＵ０（またはＣＰＵ１）に内蔵されてもよく、ＣＰＵ０（またはＣＰＵ１）がＦＰＧＡ０（またはＦＰＧＡ１）に内蔵されてもよい。
【００１７】
半導体装置ＳＥＭ０は、消費電力の上限値があるため、ＣＰＵ０の消費電力とＦＰＧＡ０の消費電力の和は、半導体装置ＳＥＭ０の消費電力の上限値以下に制限される。同様に、半導体装置ＳＥＭ１は、消費電力の上限値があるため、ＣＰＵ１の消費電力とＦＰＧＡ１の消費電力の和は、半導体装置ＳＥＭ１の消費電力の上限値以下に制限される。例えば、各半導体装置ＳＥＭ０、ＳＥＭ１の消費電力の上限値は、１３０Ｗである。
【００１８】
メモリＭＥＭ０は、メモリバスＭＢＵＳ０を介してＣＰＵ０に接続され、メモリＭＥＭ１は、メモリバスＭＢＵＳ１を介してＣＰＵ１に接続される。ＣＰＵ０、ＣＰＵ１は、システムバスＳＢＵＳを介して相互に接続される。例えば、システムバスＳＢＵＳは、ＰＣＩｅ（Peripheral Component Interconnect express）バスである。ＣＰＵ０、ＣＰＵ１は、タスクの実行を制御する制御部の一例であり、ＦＰＧＡ０、ＦＰＧＡ１は、タスクを実行する論理を再構成可能な第１の再構成部の一例である。
【００１９】
ＣＰＵ０は、システムバスＳＢＵＳおよびＣＰＵ１を介して記憶装置ＭＥＭ１にアクセス可能であり、ＣＰＵ１は、システムバスＳＢＵＳおよびＣＰＵ０を介して記憶装置ＭＥＭ０にアクセス可能である。すなわち、情報処理装置ＩＰＥは、ＮＵＭＡ（cache-coherent NonUniform Memory Access）アーキテクチャを採用したマルチプロセッサシステムとして機能する。
【００２０】
記憶装置ＭＥＭ０は、ＦＰＧＡ０にプログラムされる論理（回路）に対応する回路情報ＣＩＮＦ０を記憶する領域と、ＦＰＧＡ０にプログラムされた論理により実行されるタスクで使用するデータＤＴ０等を記憶する領域とを有する。また、記憶装置ＭＥＭ０は、ＣＰＵ０が実行する制御プログラムＣＮＴＬを格納する領域を有する。制御プログラムＣＮＴＬを実行するＣＰＵ０は、第１の制御部の一例であり、制御プログラムＣＮＴＬを実行するＣＰＵ０を含む半導体装置ＳＥＭ０は、第１の半導体装置の一例である。
【００２１】
なお、制御プログラムＣＮＴＬは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＵＳＢ（Universal Serial Bus）メモリ等のコンピュータにより読み取り可能な記録媒体ＲＭに格納されてもよい。この場合、記録媒体ＲＭに格納された制御プログラムＣＮＴＬは、情報処理装置ＩＰＥに設けられる図示しない入出力インタフェースを介して記録媒体ＲＭから記憶装置ＭＥＭ０に転送される。なお、制御プログラムＣＮＴＬは、記録媒体ＲＭから図示しないＨＤＤ（Hard Disk Drive）に転送された後、ＨＤＤから記憶装置ＭＥＭ０に転送されてもよい。また、制御プログラムＣＮＴＬは、記憶装置ＭＥＭ１に格納されてもよい。制御プログラムＣＮＴＬがＣＰＵ１により実行される場合、ＣＰＵ１が第１の制御部として機能する。
【００２２】
記憶装置ＭＥＭ１は、ＦＰＧＡ１にプログラムされる論理に対応する回路情報ＣＩＮＦ１を記憶する領域と、ＦＰＧＡ１にプログラムされた論理により実行されるタスクで使用するデータＤＴ１等を記憶する領域とを有する。また、記憶装置ＭＥＭ１は、ＣＰＵ０またはＣＰＵ１が実行するアプリケーションプログラムＡＰＰを格納する領域を有する。なお、アプリケーションプログラムＡＰＰは、記憶装置ＭＥＭ０に格納されてもよい。
【００２３】
基板ＢＲＤは、メモリバスＭＢＵＳ２を介して互いに接続されたＦＰＧＡ２およびＳＤＲＡＭ等の記憶装置ＭＥＭ２を有し、ＦＰＧＡ２は、システムバスＳＢＵＳに接続される。ＦＰＧＡ２は、半導体装置ＳＥＭ０、ＳＥＭ１に接続され、タスクを実行する論理を再構成可能な第２の再構成部の一例である。ＦＰＧＡ２の消費電力の上限値は、基板ＢＲＤの消費電力の上限値に依存し、各半導体装置ＳＥＭ０、ＳＥＭ１の消費電力の上限値に比べて十分に大きい。また、スタンバイ状態での基板ＢＲＤの消費電力は、各半導体装置ＳＥＭ０、ＳＥＭ１のスタンバイ状態での消費電力に比べて大きい。
【００２４】
記憶装置ＭＥＭ２は、ＦＰＧＡ２にプログラムされる論理に対応する回路情報ＣＩＮＦ２を記憶する領域と、ＦＰＧＡ２にプログラムされた論理により実行されるタスクで使用するデータＤＴ２等を記憶する領域とを有する。
【００２５】
内部バスＩＢＵＳ０、ＩＢＵＳ１は、システムバスＳＢＵＳに比べて、バス幅が大きく、配線長が短い。このため、内部バスＩＢＵＳ０、ＩＢＵＳ１のデータ転送レートは、システムバスＳＢＵＳのデータ転送レートに比べて高い。例えば、内部バスＩＢＵＳ０、ＩＢＵＳ１のデータ転送レートは、互いに同じである。
【００２６】
図２は、図１に示す情報処理装置ＩＰＥの動作の一例を示す。すなわち、図２は、情報処理装置ＩＰＥの制御方法の一例を示す。なお、図２に示す値は、一例であり、他の値でもよい。情報処理装置ＩＰＥは、アプリケーションプログラムＡＰＰを実行することで、ＣＰＵ（ＣＰＵ０、ＣＰＵ１）に複数のプロセスを実行させるとともに、異種のタスクＴ０、Ｔ１、Ｔ２、Ｔ３をＦＰＧＡ（ＦＰＧＡ０、ＦＰＧＡ１またはＦＰＧＡ２）に実行させる。
【００２７】
情報処理装置ＩＰＥは、対応するＦＰＧＡをアクセラレータとして動作させ、例えば、画像処理、演算処理または統計処理等のデータ処理をＦＰＧＡに実行させる。また、情報処理装置ＩＰＥは、ＣＰＵのいずれかに制御プログラムＣＮＴＬを実行させることで、タスクＴ（Ｔ０、Ｔ１、Ｔ２、Ｔ３）を実行するＦＰＧＡを切り替える制御を行う。以下では、ＣＰＵ０が制御プログラムＣＮＴＬを実行する例が説明される。
【００２８】
情報処理装置ＩＰＥは、各ＣＰＵの動作状態に応じて各ＣＰＵの動作周波数を変更するＤＦＳ（Dynamic Frequency Scaling）制御を実行する。なお、情報処理装置ＩＰＥは、各ＣＰＵの動作状態に応じて各ＣＰＵの動作周波数と電源電圧とを変更するＤＶＦＳ（Dynamic Voltage and Frequency Scaling）制御を実行してもよい。例えば、制御プログラムＣＮＴＬは、情報処理装置ＩＰＥのマザーボードに搭載されるＢＭＣ（Baseboard Management Controller）を介して半導体装置ＳＥＭ０の消費電力を示す情報を取得する。ＢＭＣは、ＣＰＵの動作周波数、ＣＰＵの電源電圧、記憶装置ＭＥＭの動作状態、情報処理装置ＩＰＥの筐体に取り付けられる冷却ファンの動作状態等を管理する。
【００２９】
図２に示す例では、各タスクＴ０−Ｔ３を１つのＦＰＧＡ（ＦＰＧＡ０、ＦＰＧＡ１またはＦＰＧＡ２）で実行する場合にＣＰＵとＦＰＧＡとの間で実行されるデータ転送に掛かるコストであるデータ転送コストは、タスクＴ０、Ｔ２、Ｔ１、Ｔ３の順に大きい。すなわち、タスクＴ０のデータ転送コストが最も小さく、タスクＴ３のデータ転送コストが最も大きい。図２では、データ転送コストが相対的に小さいタスクＴ０、Ｔ２は、太枠で示される。データ転送コストが大きいタスクほど、ＣＰＵとＦＰＧＡとの間でのデータ転送に掛かる時間は増加し、タスクの処理性能は低下する。
【００３０】
ここで、データ転送コストは、タスクＴの実行に伴いＣＰＵとＦＰＧＡとの間で転送されるデータ量が多いほど大きくなり、タスクＴの実行に伴いＣＰＵとＦＰＧＡとの間のデータ転送の回数が多いほど大きく、ＣＰＵとＦＰＧＡとの間でのデータ転送レートが小さいほど大きくなる。ＣＰＵとＦＰＧＡとの間で転送されるデータは、ＦＰＧＡが実行するタスクＴで処理させるデータと、処理により得られたデータとを含む。
【００３１】
例えば、タスクＴのデータ転送コストは、所定期間Ｐ（例えば、１０秒）において、タスクＴの実行に伴いＣＰＵとＦＰＧＡとの間で転送されるデータ転送時間ｔＤ（秒）として求められる。データ転送時間ｔＤは、式（１）により算出される。式（１）において、符号Ｄは、所定期間Ｐにおけるデータ転送量（ＭＢ：メガバイト）、符号Ｓは、各半導体装置ＳＥＭに含まれるＣＰＵとＦＰＧＡとの間のデータ転送レート（ＭＢ／秒）を示す。符号Ｋは、所定期間Ｐにおけるデータ転送回数、符号Ａは、１回のデータ転送に掛かるオーバヘッド（秒）を示す。ここで、オーバヘッドは、ＣＰＵとＦＰＧＡとの間でデータを転送する場合に、ＣＰＵの割り込み処理等に掛かる時間であり、例えば、数十ミリ秒である。
ｔＤ＝（Ｄ／Ｓ）＋（Ｋ×Ａ）  ‥‥  （１）
情報処理装置ＩＰＥは、ＦＰＧＡに処理させるタスクＴとＣＰＵとの間でのデータ転送量と、タスクＴの実行頻度等が予め分かっている場合、タスクＴの実行を開始する前にデータ転送時間ｔＤを算出してもよい。また、情報処理装置ＩＰＥは、複数種のタスクＴを実行する論理を任意のＦＰＧＡにプログラムし、ＦＰＧＡにタスクＴを実行させることで、所定期間Ｐにおけるデータ転送時間ｔＤを測定してもよい。
【００３２】
図２に示す例では、タスクＴの実行を開始する前にデータ転送時間ｔＤが予め算出され、データ転送コストがタスクＴ０、Ｔ２、Ｔ１、Ｔ３の順に大きいことが判定される。そして、データ転送コストが相対的に小さいタスクＴ０、Ｔ２を実行するための論理がＦＰＧＡ０にプログラムされ、データ転送コストが相対的に大きいタスクＴ１、Ｔ３を実行するための論理がＦＰＧＡ１にプログラムされる。このように、図２は、ＦＰＧＡにデータ処理を実行させることなく、所定期間Ｐにおいて各タスクＴで発生するデータ転送量Ｄとデータ転送回数Ｋとを予測することができる場合の動作の例を示す。
【００３３】
ＦＰＧＡ０への論理のプログラムは、制御プログラムＣＮＴＬを実行するＣＰＵ０により実行され、ＦＰＧＡ１への論理のプログラムは、制御プログラムＣＮＴＬを実行するＣＰＵ０がＣＰＵ１に指示することで、ＣＰＵ１により実行される。なお、ＣＰＵ０が実行する制御プログラムＣＮＴＬは、ＦＰＧＡ２に実行させるタスクＴが存在しないため、ＦＰＧＡ２をパワーダウン状態ＯＦＦに設定する。また、ＦＰＧＡ２が動作しないため、ＣＰＵ０が実行する制御プログラムＣＮＴＬは、ＦＰＧＡ２のワークメモリとして使用される記憶装置ＭＥＭ２をパワーダウン状態ＯＦＦに設定する。
【００３４】
例えば、パワーダウン状態ＯＦＦのＦＰＧＡ２では、パケットの受信待ち状態にするためにシステムバスＳＢＵＳに接続されるコマンド（パケット）の受信部のみに電源が供給され、他の要素への電源の供給は遮断される。例えば、パワーダウン状態ＯＦＦの記憶装置ＭＥＭ２には、電源の供給が遮断される。ＦＰＧＡ２に実行させるタスクＴが存在しない場合に、ＦＰＧＡ２および記憶装置ＭＥＭ２をパワーダウン状態ＯＦＦに設定することで、パワーダウン状態ＯＦＦに設定しない場合に比べて、情報処理装置ＩＰＥの消費電力を削減することができる。
【００３５】
なお、ＣＰＵ０とＦＰＧＡ０との間でデータを転送する場合のデータ転送コストは、ＣＰＵ０とＦＰＧＡ２との間でデータを転送する場合のデータ転送コストに比べて小さい。同様に、ＣＰＵ１とＦＰＧＡ１との間でデータを転送する場合のデータ転送コストは、ＣＰＵ１とＦＰＧＡ２との間でデータを転送する場合のデータ転送コストに比べて小さい。これは、図１に示すシステムバスＳＢＵＳのデータ転送レートが、内部バスＩＢＵＳ０、ＩＢＵＳ１のデータ転送レートに比べて低いためであり、式（１）において、データ転送レートＳが低いほど、データ転送時間ｔＤが増加するためである。
【００３６】
図２（ａ）に示すように、アプリケーションプログラムＡＰＰの指示に基づいてタスクＴ０、Ｔ２を実行するＦＰＧＡ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値（１００％）に対して３０％である。アプリケーションプログラムＡＰＰによりプロセスを実行するＣＰＵ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値に対して３５％であり、ＣＰＵ０の動作周波数は、２．３ＧＨｚである。これにより、半導体装置ＳＥＭ０の消費電力は、上限値の６５％になる。
【００３７】
アプリケーションプログラムＡＰＰの指示に基づいてタスクＴ１、Ｔ３を実行するＦＰＧＡ１の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値に対して３０％である。アプリケーションプログラムＡＰＰによりプロセスを実行するＣＰＵ１の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値に対して４５％であり、ＣＰＵ１の動作周波数は、２．５ＧＨｚである。これにより、半導体装置ＳＥＭ１の消費電力は、上限値の７５％になる。
【００３８】
なお、図２では、説明を分かりやすくするため、半導体装置ＳＥＭ１の消費電力が変化しない例を示すが、半導体装置ＳＥＭ１の消費電力は、ＣＰＵ１の負荷の増減により変化してもよい。但し、ＣＰＵ０が実行する制御プログラムＣＮＴＬは、後述する閾値ＶＴ１、ＶＴ２に基づいて、ＦＰＧＡ１とＦＰＧＡ２との間でタスクＴを切り替える処理は実行しない。例えば、アプリケーションプログラムＡＰＰは、ＣＰＵ１の負荷を、半導体装置ＳＥＭ１の消費電力が上限値の９０％に維持するように、ＣＰＵ１に投入するプロセスを制御してもよい。
【００３９】
次に、図２（ｂ）に示すように、アプリケーションプログラムＡＰＰの実行によりＣＰＵ０に割り当てられるプロセスの数が増加し、ＣＰＵ０の動作周波数が３．０ＧＨｚまで上げられる。ＣＰＵ０の消費電力は、上限値の６５％になり、半導体装置ＳＥＭ０の消費電力は、上限値に対して９５％になる。
【００４０】
半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１（例えば、上限値の９０％）を超えた場合、制御プログラムＣＮＴＬは、図２（ｃ）に示すように、ＦＰＧＡ０にプログラムされた論理のいずれかをＦＰＧＡ２にプログラムする処理を実行する。例えば、ＦＰＧＡ０からＦＰＧＡ２に論理を移行するタスクは、データ転送コストが小さい順（すなわち、データ転送時間ｔＤが短い順）に決められる。ＣＰＵ０は、タスクＴ０が実行されていない期間に、タスクＴ０を実行するための論理をＦＰＧＡ２にプログラムし、タスクＴ０をＦＰＧＡ２に実行させる。閾値ＶＴ１は、第１の所定値の一例である。
【００４１】
図２（ｃ）では、ＦＰＧＡ０は、タスクＴ０を実行しないため、ＦＰＧＡ０の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値の１５％になる。これにより、半導体装置ＳＥＭ０の消費電力は、上限値に対して８０％になる。
【００４２】
但し、タスクＴ０をＦＰＧＡ２で実行させることで、半導体装置ＳＥＭ０の消費電力には２０％の余裕ができ、ＣＰＵ０の処理性能に余裕を持たせることができる。このように、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１を超えた場合に、ＦＰＧＡ０が実行するタスクＴの論理をＦＰＧＡ０からＦＰＧＡ２に移行することで、ＣＰＵ０が消費できる電力の上限に余裕を持たせることができる。さらに、データ転送コストが相対的に小さいタスクＴの論理を、選択的にＦＰＧＡ０からＦＰＧＡ２に移行することで、ＦＰＧＡ２に移行したタスクＴのＣＰＵ０とＦＰＧＡ２間のデータ転送時間の増加の影響を少なくすることができ、タスクＴの処理性能の低下を最小限に留めることができる。この結果、情報処理装置ＩＰＥの性能を向上することができる。なお、ＣＰＵ０のデータ転送コストが相対的に大きいタスクＴの論理をＦＰＧＡ０からＦＰＧＡ２に移行する場合の動作の例は、図４で説明される。
【００４３】
次に、図２（ｄ）に示すように、ＣＰＵ０に割り当てられるプロセスの数が増加し、ＣＰＵ０の動作周波数が３．４ＧＨｚまで上げられる。ＣＰＵ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値に対して８０％になり、半導体装置ＳＥＭ０の消費電力は、上限値に対して９５％になる。
【００４４】
半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１を超えたため、制御プログラムＣＮＴＬは、図２（ｅ）に示すように、タスクＴ２を実行する論理をＦＰＧＡ２にプログラムする処理を実行する。例えば、ＣＰＵ０は、タスクＴ２が実行されていない期間に、タスクＴ２を実行するための論理をＦＰＧＡ２にプログラムし、タスクＴ０、Ｔ２をＦＰＧＡ２に実行させる。このように、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１を超える毎に、ＦＰＧＡ０で実行するタスクＴの論理をＦＰＧＡ２にプログラムすることで、半導体装置ＳＥＭ０の消費電力の変化に応じて、最小限の論理をＦＰＧＡ２に移行することができる。タスクＴをＦＰＧＡ０およびＦＰＧＡ２のいずれでも実行可能な場合、可能な限りＦＰＧＡ０で実行することで、ＦＰＧＡ０に比べてデータ転送時間が掛かるＦＰＧＡ２との間のデータ転送を少なくすることができ、情報処理装置ＩＰＥの性能の低下を抑えることができる。
【００４５】
制御プログラムＣＮＴＬは、ＦＰＧＡ０に実行させるタスクＴが存在しないため、ＦＰＧＡ０をパワーダウン状態ＯＦＦに設定する。パワーダウン状態ＯＦＦのＦＰＧＡ０で消費される電力はパワーダウン状態ＯＦＦのＦＰＧＡ２と同様に、コマンド（パケット）の受信待ちに掛かる電力のみであり、電力をほとんど消費しない。これにより、半導体装置ＳＥＭ０の消費電力は、上限値に対して８０％になる。ＦＰＧＡ０に実行させるタスクＴが存在しない場合に、ＦＰＧＡ０をパワーダウン状態ＯＦＦに設定することで、パワーダウン状態ＯＦＦに設定しない場合に比べて、情報処理装置ＩＰＥの消費電力を削減することができる。
【００４６】
次に、図２（ｆ）に示すように、ＣＰＵ０に割り当てられるプロセスの数が増加し、ＣＰＵ０の動作周波数が４．０ＧＨｚまで上げられる。なお、特に限定されないが、ＣＰＵ０、ＣＰＵ１の最大動作周波数は、４．０ＧＨｚである。すなわち、ＣＰＵ０の消費電力および半導体装置ＳＥＭ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値になる。ＦＰＧＡ０で実行させるタスクＴの論理をＦＰＧＡ２に移行することで、半導体装置ＳＥＭ０で消費される電力のほぼ全てを、ＣＰＵ０の動作に寄与させることができ、ＣＰＵ０の処理性能を最大にすることができる。
【００４７】
また、図２（ｆ）では、ＣＰＵ１に割り当てられるプロセスの数が増加し、ＣＰＵ１の動作周波数が３．２ＧＨｚまで上げられ、ＣＰＵ１の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値に対して７０％になる。半導体装置ＳＥＭ１の消費電力は、上限値になる。この状態で、ＣＰＵ０、ＣＰＵ１の動作周波数の合計値は、７．２ＧＨｚである。
【００４８】
一方、図２（ｆ）において、ＣＰＵ０に割り当てられるプロセスの数が減少した場合、情報処理装置ＩＰＥの状態は、図２（ｆ）から図２（ｅ）に変化する。ＣＰＵ０に割り当てられるプロセスの数がさらに減少し、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ２（例えば、上限値の７０％）以下になった場合、ＣＰＵ０は、タスクＴ２を実行するための論理をＦＰＧＡ０に再度プログラムする。例えば、ＦＰＧＡ２からＦＰＧＡ０に論理を移行するタスクは、データ転送コストが大きい順（すなわち、データ転送時間ｔＤが長い順）に決められる。そして、ＣＰＵ０は、ＦＰＧＡ２で実行していたタスクＴ２をＦＰＧＡ０で実行させる。閾値ＶＴ２は、第２の所定値の一例である。例えば、情報処理装置ＩＰＥの状態は、図２（ｃ）に示す状態に変化する。半導体装置ＳＥＭ０の消費電力が閾値ＶＴ２以下になった場合に、ＦＰＧＡ２で実行するタスクＴ２の論理をＦＰＧＡ０にプログラムすることで、最小限のタスクＴ０をＦＰＧＡ２で実行させることができる。また、タスクＴ２を実行する論理をＦＰＧＡ２からＦＰＧＡ０に移行することで、ＣＰＵ０とタスクＴ２との間のデータ転送処理を向上することができ、情報処理装置ＩＰＥの性能の低下を抑えることができる。
【００４９】
図２（ｃ）において、ＣＰＵ０に割り当てられるプロセスの数が減少し、半導体装置ＳＥＭ０の消費電力が再び閾値ＶＴ２以下になった場合、ＣＰＵ０は、タスクＴ０を実行するための論理をＦＰＧＡ０に再度プログラムする。そして、ＣＰＵ０は、ＦＰＧＡ２で実行していたタスクＴ０をＦＰＧＡ０で実行させる。例えば、情報処理装置ＩＰＥの状態は、図２（ａ）に示す状態に変化する。この後、ＣＰＵ０に割り当てられるプロセスの数の変化に応じて、ＣＰＵ０の消費電力が変化し、情報処理装置ＩＰＥの状態は、図２（ａ）と図２（ｆ）との間を変化する。
【００５０】
半導体装置ＳＥＭ０の消費電力が閾値ＶＴ２以下になる毎に、ＦＰＧＡ２で実行するタスクＴの論理をＦＰＧＡ０にプログラムすることで、最小限のタスクＴをＦＰＧＡ２で実行させることができる。これにより、ＦＰＧＡ２との間のデータ転送によるＣＰＵ０に掛かる負荷を最小限にすることができ、情報処理装置ＩＰＥの性能の低下を抑えることができる。
【００５１】
なお、タスクＴを実行するＦＰＧＡ０とＦＰＧＡ２との切り替えが頻繁に繰り返されることを抑止するために、閾値ＶＴ１、ＶＴ２の差は、ＦＰＧＡ０で実行される複数種のタスクＴの消費電力のうち、最大の消費電力より大きいことが好ましい。また、ＦＰＧＡ２からＦＰＧＡ０にタスクＴを移行可能にするために、半導体装置ＳＥＭ０の消費電力の最大値と閾値ＶＴ２との差は、ＦＰＧＡ０で実行される複数種のタスクＴの消費電力のうち、最大の消費電力より大きいことが好ましい。
【００５２】
図３は、図１に示すＣＰＵ０が実行する制御プログラムＣＮＴＬの処理の一例を示す。図３に示す処理は、所定の頻度で繰り返し実行される。
【００５３】
まず、ステップＳ１０において、ＣＰＵ０は、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１を超えたか否かを判定する。消費電力が閾値ＶＴ１を超えた場合、処理はステップＳ１２に移行され、消費電力が閾値ＶＴ１以下の場合、処理はステップＳ１８に移行される。なお、ＦＰＧＡ０に論理がプログラムされておらず、ＦＰＧＡ０で実行するタスクＴがない場合、処理はステップＳ１８に移行される。
【００５４】
ステップＳ１２において、ＣＰＵ０は、ＦＰＧＡ０にプログラムされた論理のいずれかをＦＰＧＡ２にプログラムし、ＦＰＧＡ０で実行されるタスクＴのいずれかをＦＰＧＡ２に実行させる。ここで、図２で説明したように、ＦＰＧＡ０からＦＰＧＡ２に論理を移行するタスクは、データ転送コストが小さい順に決められることが好ましい。次に、ステップＳ１４において、ＣＰＵ０は、ＦＰＧＡ０で実行されるタスクＴが存在するか否かを判定する。ＦＰＧＡ０で実行されるタスクＴが存在する場合、処理はステップＳ１８に移行され、ＦＰＧＡ０で実行されるタスクＴが存在しない場合、処理はステップＳ１６に移行される。
【００５５】
ステップＳ１６において、ＣＰＵ０は、ＦＰＧＡ０をパワーダウン状態ＯＦＦに設定し、処理をステップＳ１８に移行する。ステップＳ１８において、ＣＰＵ０は、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ２以下か否かを判定する。消費電力が閾値ＶＴ２以下の場合、処理はステップＳ２０に移行され、消費電力が閾値ＶＴ２を超えている場合、処理は終了する。なお、ＦＰＧＡ２に論理がプログラムされておらず、ＦＰＧＡ２で実行するタスクＴがない場合、処理は終了する。
【００５６】
ステップＳ２０において、ＣＰＵ０は、ＦＰＧＡ２にプログラムされた論理のいずれかをＦＰＧＡ０にプログラムし、ＦＰＧＡ２で実行されるタスクＴのいずれかをＦＰＧＡ０に実行させる。ここで、図２で説明したように、ＦＰＧＡ２からＦＰＧＡ０に論理を移行するタスクは、データ転送コストが大きい順に決められることが好ましい。次に、ステップＳ２２において、ＣＰＵ０は、ＦＰＧＡ２で実行されるタスクＴが存在するか否かを判定する。ＦＰＧＡ２で実行されるタスクＴが存在する場合、処理はステップＳ２４に移行され、ＦＰＧＡ０で実行されるタスクＴが存在しない場合、処理は終了する。
【００５７】
図４は、図１に示す情報処理装置ＩＰＥの動作の別の例を示す。図２に示す動作と同一または同様の動作については、詳細な説明は省略する。図４では、タスクＴ０、Ｔ１を実行するための論理がＦＰＧＡ０にプログラムされ、タスクＴ２、Ｔ３を実行するための論理がＦＰＧＡ１にプログラムされる。すなわち、ＣＰＵ０が実行する制御プログラムＣＮＴＬは、タスクＴ０−Ｔ３をプログラムするＦＰＧＡをデータ転送コストに応じて決める処理を実行しない。例えば、ＦＰＧＡ０がタスクＴ０、Ｔ１を実行することによりＣＰＵ０に掛かる負荷と、ＦＰＧＡ１がタスクＴ２、Ｔ３を実行することによりＣＰＵ１に掛かる負荷とは、同等である。
【００５８】
図４（ａ）において、タスクＴ０、Ｔ１を実行するＦＰＧＡ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値に対して３０％であり、タスクＴ２、Ｔ３を実行するＦＰＧＡ１の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値に対して３０％である。プロセスを実行するＣＰＵ０の消費電力は、半導体装置ＳＥＭ０の消費電力の上限値に対して３５％であり、ＣＰＵ０の動作周波数は、２．３ＧＨｚである。半導体装置ＳＥＭ０の消費電力は、上限値の６５％である。プロセスを実行するＣＰＵ１の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値に対して４５％であり、ＣＰＵ１の動作周波数は、２．５ＧＨｚである。半導体装置ＳＥＭ１の消費電力は、上限値の７５％である。以下では、説明を分かりやすくするため、半導体装置ＳＥＭ１の消費電力は変化しないものとする。
【００５９】
次に、図４（ｂ）に示すように、ＣＰＵ０に割り当てられるプロセスの数が増加し、半導体装置ＳＥＭ０の消費電力が、閾値ＶＴ１を超えた場合、ＣＰＵ０は、図４（ｃ）に示すように、タスクＴ１を実行する論理をＦＰＧＡ２にプログラムする処理を実行する。なお、タスクＴ１を実行する論理の代わりに、タスクＴ０を実行する論理が、ＦＰＧＡ０からＦＰＧＡ２に移行されてもよい。
【００６０】
図４（ｃ）において、ＦＰＧＡ０は、タスクＴ０のみを実行するため、ＦＰＧＡ０の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値の１５％になる。ＣＰＵ０の消費電力、ＣＰＵ０の動作周波数および半導体装置ＳＥＭ０の消費電力は、図２（ｃ）と同様である。但し、データ転送コストがタスクＴ０に比べて高いタスクＴ１がＦＰＧＡ２で実行される場合、タスクＴ０がＦＰＧＡ２で実行される場合に比べて、半導体装置ＳＥＭ０トータルの処理性能は低下する。換言すれば、タスクＴ０をＦＰＧＡ０で実行し、タスクＴ１をＦＰＧＡ２で実行する場合の半導体装置ＳＥＭ０の処理性能は、タスクＴ１をＦＰＧＡ０で実行し、タスクＴ０をＦＰＧＡ２で実行する場合の半導体装置ＳＥＭ０の処理性能に比べて低下する。例えば、図４（ｃ）の半導体装置ＳＥＭ０の処理性能は、後述する図５（ｃ）の半導体装置ＳＥＭ０の処理性能に比べて低下する。
【００６１】
図４（ｄ）に示す動作は、ＦＰＧＡ１およびＦＰＧＡ２で実行されるタスクＴが異なることを除き、図２（ｄ）に示す動作と同じであり、図４（ｅ）に示す動作は、図２（ｅ）に示す動作と同じである。同様に、図４（ｆ）に示す動作は、図２（ｆ）に示す動作と同じである。
【００６２】
図５は、図１に示す情報処理装置ＩＰＥの動作のさらなる別の例を示す。図２および図４に示す動作と同一または同様の動作については、詳細な説明は省略する。図５（ａ）および図５（ｂ）の動作は、図４（ａ）および図４（ｂ）の動作とそれぞれ同じである。すなわち、タスクＴ０、Ｔ１を実行するための論理がＦＰＧＡ０にプログラムされ、タスクＴ２、Ｔ３を実行するための論理がＦＰＧＡ１にプログラムされる。
【００６３】
図５では、図４と同様に、タスクＴ０−Ｔ３をプログラムするＦＰＧＡをデータ転送コストに応じて決める処理を実行しない。図５では、制御プログラムＣＮＴＬは、ＦＰＧＡ０とＦＰＧＡ１の両方で、データ転送コストが相対的に低いタスクＴ０、Ｔ２をＦＰＧＡ２に切り替える制御を実行する。なお、制御プログラムＣＮＴＬは、ＣＰＵ０で実行されるが、ＣＰＵ１で実行されてもよい。
【００６４】
図５（ｂ）に示すように、ＣＰＵ０に割り当てられるプロセスの数が増加し、半導体装置ＳＥＭ０の消費電力が、閾値ＶＴ１を超えた場合、ＣＰＵ０は、図５（ｃ）に示すように、タスクＴ０を実行する論理をＦＰＧＡ２にプログラムする処理を実行する。すなわち、ＣＰＵ０は、データ転送コストがタスクＴ１より低いタスクＴ０をＦＰＧＡ２に実行させる。
【００６５】
次に、図５（ｄ）において、ＣＰＵ１に割り当てられるプロセスの数が増加し、半導体装置ＳＥＭ１の消費電力が、閾値ＶＴ１を超える。ＣＰＵ０が実行する制御プログラムＣＮＴＬは、図５（ｅ）に示すように、タスクＴ２を実行する論理をＦＰＧＡ２にプログラムする処理を実行する。すなわち、制御プログラムＣＮＴＬは、データ転送コストがタスクＴ３より低いタスクＴ２をＦＰＧＡ２に実行させる。ＦＰＧＡ１は、タスクＴ３のみを実行するため、ＦＰＧＡ１の消費電力は、半導体装置ＳＥＭ１の消費電力の上限値の１５％になる。
【００６６】
また、図５（ｅ）において、ＣＰＵ０に割り当てられるプロセスの数が増加し、ＣＰＵ０の動作周波数が３．４ＧＨｚまで上げられ、半導体装置ＳＥＭ０の消費電力は、上限値に対して９５％になる。図５（ｆ）において、ＣＰＵ０に割り当てられるプロセスの数がさらに増加し、ＣＰＵ０の動作周波数が３．５ＧＨｚまで上げられ、半導体装置ＳＥＭ０の消費電力は、上限値（１００％）になる。また、ＣＰＵ１に割り当てられるプロセスの数が増加し、ＣＰＵ１の動作周波数が３．５ＧＨｚまで上げられ、半導体装置ＳＥＭ１の消費電力は、上限値になる。
【００６７】
図５（ｆ）に示す状態では、ＦＰＧＡ０はタスクＴ１を実行し、ＦＰＧＡ１はタスクＴ３を実行し、ＦＰＧＡ２はタスクＴ０、Ｔ２を実行するため、全てのＦＰＧＡ０−ＦＰＧＡ２が電力を消費する。半導体装置ＳＥＭ０の消費電力は、ＦＰＧＡ０の消費電力を含むため、ＣＰＵ０の動作周波数は、最高動作周波数（４．０ＧＨｚ）の８５％までにしか設定されない。同様に、半導体装置ＳＥＭ１の消費電力は、ＦＰＧＡ１の消費電力を含むため、ＣＰＵ１の動作周波数は、最高動作周波数（４．０ＧＨｚ）の８５％までにしか設定されない。また、図５（ｆ）では、ＣＰＵ０、ＣＰＵ１の動作周波数の合計値は、７．０ＧＨｚであり、図４（ｆ）のＣＰＵ１、ＣＰＵ１の動作周波数の合計値（７．２ＧＨｚ）よりも低い。換言すれば、ＦＰＧＡ２にタスクＴ０、Ｔ２を実行させるのにも拘わらず、ＣＰＵ０またはＣＰＵ１のいずれも、最高動作周波数で動作しない。したがって、図５（ｆ）において、情報処理装置ＩＰＥの処理性能と電力性能とを含むトータルの性能は、図４（ｆ）に比べて低い。
【００６８】
情報処理装置ＩＰＥのトータルの性能を向上するために、ＦＰＧＡ０にプログラムされたタスクＴ１用の論理をＦＰＧＡ１にプログラムにし、図５（ｆ）の状態から図４（ｆ）の状態に変更することが可能である。しかしながら、この場合、論理を再配置する時間が掛かり、論理を再配置している間、情報処理装置ＩＰＥの処理性能は低下する。
【００６９】
以上、図１から図５に示す実施形態では、データ転送コストが相対的に小さいタスクＴ０、Ｔ２がＦＰＧＡ０で実行され、データ転送コストが相対的に大きいタスクＴ１、Ｔ３がＦＰＧＡ２で実行される。そして、制御プログラムＣＮＴＬは、半導体装置ＳＥＭ０の消費電力が閾値ＶＴ１を超えた場合に、ＦＰＧＡ０で実行するタスクＴのいずれかの論理をＦＰＧＡ２にプログラムする。これにより、ＦＰＧＡ２との間のデータ転送による処理時間の増加を最小限にすることができ、情報処理装置ＩＰＥの性能を向上することができる。すなわち、ＣＰＵ０とともに半導体装置ＳＥＭ０に搭載されるＦＰＧＡ０で実行するタスクＴに依存してＣＰＵ０の処理性能が低下することを抑止することができる。
【００７０】
ＦＰＧＡ０で実行するタスクＴの論理を、閾値ＶＴ１を超える毎にＦＰＧＡ２にプログラムすることで、最小限のタスクＴをＦＰＧＡ２で実行させることができる。このため、ＣＰＵ０とＦＰＧＡ２との間におけるデータ転送時間の増加を抑えることができ、情報処理装置ＩＰＥの性能の低下を抑えることができる。
【００７１】
半導体装置ＳＥＭ０の消費電力が閾値ＶＴ２以下になった場合に、ＦＰＧＡ２で実行するタスクＴ０の論理をＦＰＧＡ０にプログラムすることで、最小限のタスクＴをＦＰＧＡ２で実行させることができる。これにより、ＣＰＵ０とタスクＴ０との間のデータ転送処理を向上することができ、情報処理装置ＩＰＥの性能の低下を抑えることができる。また、ＦＰＧＡ２で実行するタスクＴの論理を、閾値ＶＴ２以下になる毎にＦＰＧＡ０にプログラムすることで、ＣＰＵ０とＦＰＧＡ２との間におけるデータ転送時間の増加を最小限にすることができる。
【００７２】
ＦＰＧＡ０に実行させるタスクＴが存在しない場合に、ＦＰＧＡ０をパワーダウン状態ＯＦＦに設定することで、パワーダウン状態ＯＦＦに設定しない場合に比べて、情報処理装置ＩＰＥの消費電力を削減することができる。ＦＰＧＡ２に実行させるタスクＴが存在しない場合に、ＦＰＧＡ２および記憶装置ＭＥＭ２をパワーダウン状態ＯＦＦに設定することで、パワーダウン状態ＯＦＦに設定しない場合に比べて、情報処理装置ＩＰＥの消費電力を削減することができる。
【００７３】
図６は、別の実施形態における情報処理装置の動作の一例を示す。図２に示す動作と同一または同様の動作については、詳細な説明は省略する。図６に示す動作を実行する情報処理装置の構成は、図１に示す情報処理装置ＩＰＥの構成と同じである。但し、ＣＰＵ０が実行する制御プログラムＣＮＴＬは、図３に示す処理の前に、複数種のタスクＴを実行する論理を任意のＦＰＧＡにプログラムしてタスクＴを実行させ、所定期間Ｐにおけるデータ転送時間ｔＤを測定する処理を実行する。制御プログラムＣＮＴＬは、上述した式（１）にしたがってデータ転送時間ｔＤを算出する。なお、制御プログラムＣＮＴＬは、ＣＰＵ１により実行されてもよい。制御プログラムＣＮＴＬが実行する処理の例は、図７に示される。
【００７４】
図６（ａ０）は、制御プログラムＣＮＴＬが、タスクＴ０、Ｔ１を実行する論理をＦＰＧＡ０にプログラムし、タスクＴ２、Ｔ３を実行する論理をＦＰＧＡ１にプログラムし、タスクＴ毎にデータ転送時間ｔＤをデータ転送コストとして測定する例を示す。データ転送時間ｔＤを測定した結果、データ転送コストは、太枠で示すタスクＴ０、Ｔ２が相対的に小さく、タスクＴ１、Ｔ３が相対的に大きいことが判明する。すなわち、データ転送コストが相対的に小さいグループ（タスクＴ０、Ｔ２）と、データ転送コストが相対的に大きいグループ（タスクＴ１、Ｔ３）とに分けられる。
【００７５】
次に、図６（ａ）に示すように、制御プログラムＣＮＴＬは、タスクＴ２を実行する論理をＦＰＧＡ０にプログラムし、タスクＴ１を実行する論理をＦＰＧＡ１にプログラムする。すなわち、データ転送コストが相対的に小さいグループの論理がＦＰＧＡ０にプログラムされ、データ転送コストが相対的に大きいグループの論理がＦＰＧＡ１にプログラムされる。図６（ａ）から図６（ｆ）の動作のそれぞれは、図２（ａ）から図２（ｆ）と同じである。
【００７６】
図６に示す動作は、所定期間Ｐにおいて各タスクＴで発生するデータ転送量Ｄとデータ転送回数Ｋとの予測が困難であり、データ処理を実行しながらデータ転送量Ｄとデータ転送回数Ｋとを測定し、データ転送コストを検出する場合の例を示す。図６では、タスクＴを実行する場合にデータ転送コストが分からない場合にも、データ処理を実行しながらデータ転送コストを算出することで、データ転送コストの大きさで分類されたタスクの論理をＦＰＧＡ０、ＦＰＧＡ１にそれぞれプログラムすることができる。
【００７７】
図７は、図６に示すＣＰＵ０が実行する制御プログラムＣＮＴＬの処理の一例を示す。図６に示す処理は、情報処理装置ＩＰＥが画像処理、演算処理または統計処理等のデータ処理を開始する場合に、図３に示す処理の前に実行される。
【００７８】
まず、ステップＳ２において、ＣＰＵ０は、複数種のタスクＴを実行する論理を任意のＦＰＧＡにプログラムする。任意のＦＰＧＡは、ＦＰＧＡ０、ＦＰＧＡ１の少なくともいずれか、またはＦＰＧＡ２である。図６（ａ０）では、タスクＴ０、Ｔ１を実行する論理がＦＰＧＡ０にプログラムされ、タスクＴ２、Ｔ３を実行する論理がＦＰＧＡ１にプログラムされる。
【００７９】
次に、ステップＳ４において、ＣＰＵ０は、ＦＰＧＡ０にタスクＴ０、Ｔ１を実行させ、ＦＰＧＡ１にタスクＴ２、Ｔ３を実行させ、データ処理を実行する。次に、ステップＳ６において、ＣＰＵ０は、所定期間Ｐにおけるデータ転送量Ｄとデータ転送回数Ｋを求め、予め判明しているデータ転送レートＳとオーバヘッドＡとを使用して、上述した式（１）にしたがって、データ転送時間ｔＤをデータ転送コストとして算出する。すなわち、ＣＰＵ０は、各タスクＴ０−Ｔ３の実行によりデータ転送コストを算出する。
【００８０】
次に、ステップＳ８において、ＣＰＵ０は、データ転送コストの算出結果に基づいて、データ転送コストが相対的に小さいグループと、データ転送コストが相対的に大きいグループとにグループ分けする。そして、ＣＰＵ０は、論理をグループ毎にＦＰＧＡ０、ＦＰＧＡ１にプログラムし、処理を終了する。
【００８１】
以上、図６および図７に示す実施形態においても、図１から図５に示す実施形態と同様に、ＦＰＧＡ０に対するＦＰＧＡ２との間のデータ転送時間の増加を最小限にして、情報処理装置ＩＰＥの性能を向上することができる。さらに、図６および図７に示す実施形態では、以下に示す効果を得ることができる。すなわち、タスクＴを実行する場合にデータ転送コストが分からない場合にも、データ処理を実行しながらデータ転送コストを算出することで、データ転送コストの大きさで分類されたタスクの論理をＦＰＧＡ０、ＦＰＧＡ１にそれぞれプログラムすることができる。
【００８２】
以上の図１から図７に示す実施形態に関し、さらに以下の付記を開示する。
（付記１）
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、
前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部と
を備え、
前記制御部のいずれかである第１の制御部は、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行すること
を特徴とする情報処理装置。
（付記２）
前記第１の制御部は、タスクを実行する複数種の論理を前記第１の再構成部の少なくともいずれかにプログラムし、データ転送コストをタスク毎に求め、求めたデータ転送コストに基づいて、データ転送コストが他のタスクに比べて小さいタスクを実行する論理を、前記第１の半導体装置の前記第１の再構成部にプログラムすること
を特徴とする付記１記載の情報処理装置。
（付記３）
前記第１の制御部は、前記制御部に掛かるタスク毎のデータ転送コストを、所定期間において、タスクの実行に伴い前記制御部と前記第１の再構成部との間で転送されるデータ転送時間に基づいて求めること
を特徴とする付記２記載の情報処理装置。
（付記４）
前記所定期間におけるデータ転送量を”Ｄ”、前記複数の半導体装置に含まれる前記制御部と前記第１の再構成部との間のデータ転送レートを”Ｓ”、前記所定期間におけるデータ転送回数を”Ｋ”、１回のデータ転送に掛かるオーバヘッドを”Ａ”とする場合、
前記第１の制御部は、前記データ転送コストを、”（Ｄ／Ｓ）＋（Ｋ×Ａ）”により算出すること
を特徴とする付記３記載の情報処理装置。
（付記５）
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が前記第１の所定値を超える毎に、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理のいずれかを前記第２の再構成部にプログラムすること
を特徴とする付記１ないし付記４のいずれか１項記載の情報処理装置。
（付記６）
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の減少により、前記第１の半導体装置の消費電力が前記第１の所定値より低い第２の所定値以下になった場合、前記第２の再構成部にプログラムされた論理を、前記第１の半導体装置の前記第１の再構成部に再度プログラムし、
前記第１の半導体装置の前記制御部は、前記第１の半導体装置の前記第１の再構成部に再度プログラムされた論理を使用してタスクを実行すること
を特徴とする付記１ないし付記５のいずれか１項記載の情報処理装置。
（付記７）
前記第１の制御部は、前記第１の半導体装置の前記制御部の負荷の減少により、前記第１の半導体装置の消費電力が前記第２の所定値以下になる毎に、前記第２の再構成部にプログラムされた論理のいずれかを、前記第１の半導体装置の前記第１の再構成部に再度プログラムすること
を特徴とする付記６記載の情報処理装置。
（付記８）
前記第１の制御部は、前記第１の再構成部にプログラムされた論理が前記第２の再構成部にプログラムされる前、前記第２の再構成部をパワーダウン状態に設定すること
を特徴とする付記１ないし付記７のいずれか１項記載の情報処理装置。
（付記９）
前記第１の制御部は、前記第２の再構成部への論理のプログラムにより、タスクを実行する論理が前記第１の半導体装置の前記第１の再構成部に存在しない場合、前記第１の半導体装置の前記第１の再構成部をパワーダウン状態に設定すること
を特徴とする付記１ないし付記８のいずれか１項記載の情報処理装置。
（付記１０）
前記第１の制御部は、前記第１の半導体装置の前記制御部であることを
を特徴とする付記１ないし付記９のいずれか１項記載の情報処理装置。
（付記１１）
前記複数の半導体装置の各々は、前記制御部を含む半導体チップと、前記第１の再構成部を含む半導体チップとを有すること
を特徴とする付記１ないし付記１０のいずれか１項記載の情報処理装置。
（付記１２）
前記複数の半導体装置の各々は、前記制御部と前記第１の再構成部とを含む半導体チップを有すること
を特徴とする付記１ないし付記１０のいずれか１項記載の情報処理装置。
（付記１３）
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御方法において、
前記制御部のいずれかである第１の制御部が、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行することを
特徴とする情報処理装置の制御方法。
（付記１４）
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御プログラムにおいて、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行する
処理を、前記制御部のいずれかである第１の制御部に実行させるための制御プログラム。
（付記１５）
タスクの実行を制御する制御部と、タスクを実行する論理を再構成可能な第１の再構成部とを含む複数の半導体装置と、前記複数の半導体装置に接続され、タスクを実行する論理を再構成可能な第２の再構成部とを備える情報処理装置の制御プログラムを記録した記録媒体において、
前記複数の半導体装置のいずれかである第１の半導体装置の前記制御部と前記第１の再構成部との間でのデータ転送コストが他のタスクに比べて小さいタスクを実行する論理を第１の半導体装置の前記第１の再構成部にプログラムし、
前記第１の半導体装置の前記制御部の負荷の増加により、前記第１の半導体装置の消費電力が第１の所定値を超えた場合、前記第１の半導体装置の前記第１の再構成部にプログラムされた論理を前記第２の再構成部にプログラムし、前記第２の再構成部にプログラムされた論理を使用してタスクを実行する
処理を、前記制御部のいずれかである第１の制御部に実行させるためのプログラムを記録した記録媒体。
【００８３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００８４】
ＡＰＰ…アプリケーションプログラム；ＢＲＤ…基板；ＣＩＮＦ０、ＣＩＮＦ１、ＣＩＮＦ２…回路情報；ＣＮＴＬ…制御プログラム；ＤＴ０、ＤＴ１、ＤＴ２…データ；ＩＢＵＳ、ＩＢＵＳ１…内部バス；ＩＰＥ…情報処理装置；ＭＢＵＳ０、ＭＢＵＳ１、ＭＢＵＳ２…メモリバス；ＭＥＭ０、ＭＥＭ１、ＭＥＭ２…記憶装置；ＯＦＦ…パワーダウン状態；ＳＢＵＳ…システムバス；ＳＥＭ０、ＳＥＭ１…半導体装置；ＶＴ１、ＶＴ２…閾値
【図１】
2018092551.tif 000003
【図２】
2018092551.tif 000004
【図３】
2018092551.tif 000005
【図４】
2018092551.tif 000006
【図５】
2018092551.tif 000007
【図６】
2018092551.tif 000008
【図７】
2018092551.tif 000009