(57)【要約】【課題】  再構成可能なプログラマブル・デバイスを搭載するアクセラレータと連携して処理を実行する情報処理装置、演算方法およびプログラムを提供すること。【解決手段】  本発明の情報処理装置１１０は、プログラマブル・デバイス１５０に接続されている。情報処理装置１１０は、各々前記プログラマブル・デバイス上で実現させる機能を定義する構成データが、複数格納される構成データ蓄積手段１２０と、各々対応する構成データによりプログラマブル・デバイス１５０上に実現される機能を利用するソフトウェア・プログラムが、複数格納されるプログラム蓄積手段１１８と、プログラマブル・デバイス１５０に、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段１１２とを含む。【選択図】図１
2013062566.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブル・デバイスに接続される情報処理装置であって、
各々前記プログラマブル・デバイス上で実現させる機能を定義する構成データが、複数格納される構成データ蓄積手段と、
各々対応する構成データにより前記プログラマブル・デバイス上に実現される機能を利用するソフトウェア・プログラムが、複数格納されるプログラム蓄積手段と、
前記プログラマブル・デバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段と
を含む、情報処理装置。
【請求項２】
前記プログラマブル・デバイスが構成を完了させた後、前記選択機能に対応するソフトウェア・プログラムに従って、前記選択機能に対応する構成データにより前記プログラマブル・デバイス上に実現された機能を利用する命令を実行する演算手段をさらに含む、請求項１に記載の情報処理装置。
【請求項３】
前記構成データ蓄積手段に格納しようとする構成データと、該構成データにより前記プログラマブル・デバイス上に実現される機能を利用するコードを含むソフトウェア・プログラムとを受け付ける手段と、
受け付けた構成データおよびソフトウェア・プログラムを対応付けて、前記構成データ蓄積手段および前記プログラム蓄積手段に蓄積させる手段と
をさらに含む、請求項１または２に記載の情報処理装置。
【請求項４】
前記構成要求手段は、当該情報処理装置の起動時に、前記構成データの転送を実施し、前記プログラマブル・デバイスの構成を要求することを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
選択機能が指定される手段をさらに含み、
前記構成要求手段は、前記選択機能の指定に応答して、前記構成データの転送を実施し、前記プログラマブル・デバイスの再構成を要求することを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記構成要求手段は、当該情報処理装置および前記プログラマブル・デバイスがアイドル状態にあるときに、前記構成データの転送を実施し、前記プログラマブル・デバイスの再構成を要求することを特徴とする、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
当該情報処理装置と外部装置との間でデータ通信を行う通信手段と、
前記通信手段を用いて、前記外部装置から演算の指定を受け付ける手段と、
指定された演算で利用するデータおよびパラメータ、またはこれらのいずれか一方を受け付ける手段と、
前記データおよびパラメータ、またはこれらのいずれか一方を用いて、前記プログラマブル・デバイスと連携した演算を開始する手段と、
前記通信手段を用いて、前記指定された演算の結果を前記外部装置へ返却する手段と
をさらに含む、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記通信手段を用いて前記外部装置から、前記指定された演算に必要な構成データと、該構成データにより前記プログラマブル・デバイス上に実現される機能を利用し、該機能を利用して得られた演算結果を前記外部装置へ返却するコードを含むソフトウェア・プログラムとを受信する手段をさらに含み、
前記構成要求手段は、前記プログラマブル・デバイスに、受信した前記指定された演算に必要な構成データを転送して再構成を要求することを特徴とする、請求項７に記載の情報処理装置。
【請求項９】
プログラマブル・デバイスと通信する情報処理装置が実行する演算方法であって、前記情報処理装置に対し、
各々前記プログラマブル・デバイス上で実現させる機能を定義する構成データが複数格納される構成データ蓄積手段から、前記複数の構成データのうち選択機能に対応する構成データを読み出すステップと、
各々対応する構成データにより前記プログラマブル・デバイス上に実現される機能を利用するソフトウェア・プログラムが複数格納されるプログラム蓄積手段から、前記選択機能に対応するソフトウェア・プログラムを読み出すステップと、
前記プログラマブル・デバイスに、前記選択機能に対応する構成データを転送し、構成を要求するステップと、
前記選択機能に対応するソフトウェア・プログラムに従った処理を実行するステップと
を実行させる、演算方法。
【請求項１０】
プログラマブル・デバイスと通信するコンピュータが実行可能なプログラムであって、前記コンピュータを、
各々前記プログラマブル・デバイス上で実現させる機能を定義する構成データが、複数格納される構成データ蓄積手段、
各々対応する構成データにより前記プログラマブル・デバイス上に実現される機能を利用するソフトウェア・プログラムが、複数格納されるプログラム蓄積手段、および
前記プログラマブル・デバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段
として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能なプログラマブル・デバイスを用いる情報処理装置に関し、より詳細には、再構成可能なプログラマブル・デバイスを搭載するアクセラレータと連携して処理を実行する情報処理装置、演算方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、ＦＰＧＡ（Field Programmable Gate Array）やＣＰＬＤ（Complex Programmable Logic Device）などに代表されるプログラマブル・デバイスをアクセラレータとして、ＣＰＵ（Central Processing Unit）と連携させることによって、処理速度の向上を図る技術が知られている。プログラマブル・デバイスに関連する技術としては、以下のものが例示される。
【０００３】
特開平１０−２８５０１４号公報（特許文献１）は、再コンフィギュレーションに必要な時間の短縮を目的とした技術を開示する。特許文献１は、デバイス内に大容量メモリを用意し、メモリに複数のコンフィギュレーション・データを格納し、チップ内でコンフィギュレーション・データの一括書き込みを行う構成を開示している。
【０００４】
特開２００７−２５１３２９号公報（特許文献２）は、上記特許文献１の従来技術に鑑み、リコンフィギュアラブル・コアの機能切り替えが可能であるという特徴を活かすことを目的とした技術を開示する。特許文献２は、コンフィギュレーション・データを格納したＬＳＩ外部のメモリと、ＬＳＩ内部のコンフィギュレーション・データ格納メモリとの間に専用バスを設ける構成を開示している。
【０００５】
特許第４１６５１２５号公報（特許文献３）は、画像音声処理装置において、少量の汎用ハードウェアを用いて、多様な機能を効率的に実現することを目的として、リコンフィギュアラブル処理ユニットを備える画像音声処理装置を開示している。特許文献３の画像音声処理装置は、内部機能が変更可能であり、ビデオ信号を処理する少なくとも１つのリコンフィギュアラブルプロセッサと、リコンフィギュアラブルプロセッサの機能を決定する機能データに基づいてリコンフィギュアラブルプロセッサの機能を設定するコンフィグ部とを有する。
【０００６】
特開平１１−１４４６６２号公報（特許文献４）は、回路規模が小さく、かつ、演算処理の新機能追加に柔軟に対応できることを目的とした技術を開示している。特許文献４は、より詳細には、回路をインプリメントするデバイスとしてリコンフィギュレーション可能なプログラマブル・ロジック・デバイスを用い、複数個のコンフィギュレーション・データから、制御計算機が１個を選択してコンフィギュレーションの起動を行う構成を開示している。
【０００７】
特許第３６６４９６２号公報（特許文献５）は、各種の通信プロトコルに対応できる柔軟性および低消費電力性を両立させることを目的とした技術を開示する。特許文献５は、より詳細には、複数の半導体ＩＰを格納するローカル構成ＤＢと、ローカル構成ＤＢ内の半導体ＩＰを利用して、プログラマブル・ロジック素子に書き込まれるコンフィギュレーション・データを作成し、プログラマブル・ロジック素子に書き込む制御部とを含む構成を開示している。
【０００８】
特開２００８−２４２８５０号公報（特許文献６）は、リコンフィギュラブル回路を使用して画像処理を行う際、処理対象となる画像データの特徴が多種に渡っても、画像特徴に適した画像処理を効率よく行うことを目的とした技術を開示する。特許文献６の画像処理装置は、画像処理すべき画像データより画像特徴とその画像特徴を有する領域とを判定する画像特徴判定回路と、画像特徴判定回路によって判定された画像特徴に応じた回路データをリコンフィギュラブル回路に設定するリコンフィギュラブル回路制御部と、画像処理の実行を制御する制御手段とを備えている。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来技術においては、上記特許文献１に例示されるように、複数の機能を実現するため、半導体チップ上のメモリを大容量化し、複数のコンフィギュレーション・データをメモリ上に格納するアプローチが採用されている。しかしながら、半導体チップ上のメモリの大容量化は、半導体チップ面積の増大を意味し、１枚のシリコンウェハから生産できるチップ数が減ってしまうため、製造原価が嵩んでしまう。さらに、上記半導体チップ面積の増大は、配線長の長大化を招き、消費電力を増大させてしまう。これらの点を鑑みると、上記プログラマブル・デバイス内のメモリの大容量化は好ましいとはいえない。
【００１０】
上記特許文献２〜４に例示されるように、外部または内部にコンフィギュレーション・データを格納した記憶装置を設けて、ホスト装置側のハードウェア機能ユニットの切り替えに応じて半導体チップ上のメモリの構成データを更新するアプローチも採用されている。しかしながら、ソフトウェアの追加、変更について考慮がなされておらず、多様な機能を実現する目的を満足できるものではなかった。
【００１１】
本発明は、上記従来技術における不充分な点に鑑みてなされたものであり、本発明は、ＦＰＧＡなどに代表されるプログラマブル・デバイスと接続される情報処理装置において、プログラマブル・デバイスの複数の構成データを蓄積し、所望の機能を実現するために適切な構成データを選択設定してプログラマブル・デバイスを再構成し、該プログラマブル・デバイスと連携した処理を行う情報処理装置、演算方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、上記課題を解決するため、下記特徴を有する、プログラマブル・デバイスに接続された情報処理装置を提供する。本情報処理装置は、構成データを複数格納する構成データ蓄積手段と、ソフトウェア・プログラムを複数格納するプログラム蓄積手段とを備える。上記構成データ各々は、上記プログラマブル・デバイス上で実現させる機能を定義するものである。上記ソフトウェア・プログラム各々は、対応する構成データにより上記プログラマブル・デバイス上に実現される機能を利用するものである。本情報処理装置は、プログラマブル・デバイスに、複数の構成データのうち選択された選択機能に対応する構成データを転送し、構成を要求する構成要求手段を含む。
【発明の効果】
【００１３】
上記構成によれば、プログラマブル・デバイスを用いる情報処理装置において、プログラマブル・デバイスを情報処理装置が求める多様な設定に構成し、情報処理装置と連携した演算を実現することが可能になり、プログラマブル・デバイスの有効性を著しく向上させることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態による演算システムの概略を示すブロック図。
【図２】対応付けて管理されるプログラムおよび構成データを説明する図。
【図３】プログラムおよび構成データの組を追加、変更および削除するためのＧＵＩを表した図。
【図４】第１の実施形態によるホストとアクセラレータとを連携させた演算処理の起動時の全体フローを示すフローチャート。
【図５】第１の実施形態によるホストとアクセラレータとを連携させた演算処理示すフローチャート。
【図６】第１の実施形態による機能変更に関連するフローチャート。
【図７】第１の実施形態による機能切り替え処理を示すフローチャート。
【図８】ホストとアクセラレータとの連携演算をビデオ・デコード処理に適用した利用態様を説明する図。
【図９】他の利用態様を説明する図。
【図１０】第２の実施形態による演算システムの概略を示すブロック図。
【図１１】第２の実施形態による外部装置とホストとアクセラレータとを連携させた演算処理の全体フローを示すシーケンス図。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下に説明する実施形態では、プログラマブル・デバイスを搭載するアクセラレータと連携した演算処理を実現している演算システムを構成する情報処理装置を一例に説明する。
【００１６】
図１は、第１の実施形態による演算システムの概略を示すブロック図である。図１に示す演算システム１００は、情報処理装置１１０とアクセラレータ１５０とを含む。アクセラレータ１５０は、ユーザ側で内部論理回路の再書き込みが可能な集積回路であるプログラマブル・デバイスを搭載する。プログラマブル・デバイスは、具体的には、ＰＡＬ（Programmable Array Logic)やＧＡＬ（Generic Array Logic）など狭義のＰＬＤ（Programmable Logic Device）、ＣＰＤ（Complex Programmable Device）およびＦＰＧＡ（Field Programmable Gate Array）を含むプログラマブル・ロジック・デバイスである。なお、以下の説明では、アクセラレータ１５０がＦＰＧＡを備えているものとして説明する。
【００１７】
情報処理装置１１０は、画像処理やビデオ処理などの各種演算処理をハードウェア回路として実装するアクセラレータ１５０を利用する、ホスト装置である。情報処理装置１１０は、特に限定されるものではないが、パーソナル・コンピュータ、ワークステーション、サーバなどの汎用コンピュータ、複合機、複写機、プリンタ、ファクシミリ、スキャナなどの画像処理装置、ＰＤＡ（Personal Digital Assistance）やスマートフォンなどの携帯情報端末などとして構成される。
【００１８】
情報処理装置１１０は、ＣＰＵ１１２と、制御部１１４と、ＲＡＭ１１６と、プログラム蓄積部１１８と、構成データ蓄積部１２０と、送信バッファ１２２とを備える。ＣＰＵ１１２は、後述するアクセラレータ１５０と連携した演算処理を含めて情報処理装置１１０の全体制御を行う手段である。制御部１１４は、当該情報処理装置１１０内のデータフローを制御する手段である。ＲＡＭ１１６は、上記ＣＰＵ１１２による演算のための作業空間を提供する記憶装置である。
【００１９】
プログラム蓄積部１１８は、当該情報処理装置１１０が実行するソフトウェア・プログラム・コードを蓄積する記憶領域である。構成データ蓄積部１２０は、アクセラレータ１５０に搭載されるプログラマブル・デバイスの機能構成を定義するコンフィギュレーション・データを蓄積する記憶領域である。プログラム蓄積部１１８および構成データ蓄積部１２０には、それぞれ、複数のソフトウェア・プログラム・コードおよびコンフィギュレーション・データを蓄積する。プログラム蓄積部１１８および構成データ蓄積部１２０は、特に限定されるものではないが、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの２次記憶装置により提供することができる。送信バッファ１２２は、アクセラレータ１５０へコンフィギュレーション・データを転送する際に、該データを一時的に記憶するバッファメモリである。
【００２０】
アクセラレータ１５０は、制御部１５２と、構成データ格納部１５４と、ローカルメモリ１５６と、再構成可能な演算器アレイ１５８と、外部インタフェース１６０とを備える。制御部１５２は、当該アクセラレータ１５０内のデータフローを含めて全体制御を行う手段である。ローカルメモリ１５６は、当該アクセラレータ１５０内で利用されるローカルメモリである。
【００２１】
構成データ格納部１５４は、上述したアクセラレータ１５０が備えるプログラマブル・デバイスのコンフィギュレーション・データを格納する記憶領域である。構成データ格納部１５４は、ＥＥＰＲＯＭやＳＲＡＭなどの不揮発性または揮発性のメモリ装置により構成される。
【００２２】
再構成可能な演算器アレイ１５８は、複数のロジック・エレメントの２次元アレイで構成される。アクセラレータ１５０においてプログラマブル・デバイスが実現するロジック機能は、個々のロジック・エレメントのロジック機能と、ロジック・エレメント間の接続関係とを指定することにより定められる。上記コンフィギュレーション・データは、上述のようなプログラマブル・デバイスのロジック機能を指定する情報をいい、コンフィギュレーション・ビットストリームとも呼ばれ、本実施形態における構成データを構成する。以下、コンフィギュレーション・データを構成データと参照する。外部インタフェース１６０は、上記情報処理装置１１０と通信して、各種命令および構成データを受信する通信手段である。
【００２３】
本実施形態における演算器アレイ１５８は、また、再構成が可能とされている。再構成（リコンフィギュレーション）とは、上記プログラマブル・デバイスが何度も書き換え可能であるものについて、構成データ格納部１５４内の構成データを書き換えることにより、プログラマブル・デバイスのロジック機能を異なるロジック機能へ変更することをいう。
【００２４】
上記演算システム１００においては、情報処理装置１１０は、電源投入時、アイドル時、ユーザ指示があった時など適時にて、ＣＰＵ１１２により、構成データ蓄積部１２０から構成データを読み出し、アクセラレータ１５０へ送信して、プログラマブル・デバイスの構成処理を要求する。アクセラレータ１５０は、制御部１５２により、外部インタフェース１６０を介して受信した構成データを構成データ格納部１５４に格納する。アクセラレータ１５０は、制御部１５２により、構成データ格納部１５４に格納される構成データに従って再構成可能な演算器アレイ１５８の回路構成処理を実施する。これにより、情報処理装置１１０に対する演算機能提供の準備が行われる。
【００２５】
情報処理装置１１０は、ＣＰＵ１１２により、アクセラレータ１５０の準備完了の通知を受けて、プログラム蓄積部１１８に蓄積されるソフトウェア・プログラム・コードを実行する。当該ソフトウェア・プログラム・コードは、上記構成データによりアクセラレータ１５０のプログラマブル・デバイス上に実現される機能を利用するコードである。以下、ソフトウェア・プログラム・コードを単にプログラムと参照する。プログラムと構成データとは、図２に示すように対応付けられて管理されている。
【００２６】
図２は、対応付けて管理されるプログラムおよび構成データを説明する図である。図２（Ａ）は、プログラムおよび構成データを対応付ける管理テーブルのデータ構造を示す。図２（Ａ）に示すように、プログラムおよび構成データは、それぞれ機能に関連付けられてテーブルに登録されている。図２（Ａ）に示す管理テーブルによって、図２（Ｂ）に示すように、プログラム蓄積部１１８および構成データ蓄積部１２０内に格納されている複数のプログラム２００，２０２，２０４，２０６および複数の構成データ２１０，２１２，２１４，２１６が、それぞれ対応付けられる。
【００２７】
なお、プログラム蓄積部１１８および構成データ蓄積部１２０に蓄積されるプログラムおよび構成データは、本実施形態では、固定されてはおらず、追加、変更および削除などをすることによって、多様な機能を実現することが可能とされている。図３は、プログラム蓄積部１１８および構成データ蓄積部１２０に蓄積されるプログラムおよび構成データの組を追加、変更および削除するためのグラフィカル・ユーザ・インタフェース（ＧＵＩ）を示す。
【００２８】
図３（Ａ）は、登録されているプログラムおよびコンフィギュレーションを対応付けて表示するための登録一覧表示画面を示す。図３（Ａ）に示す登録一覧表示画面２２０は、登録されている機能を一覧表示する一覧表示テーブル２２２と、新規追加ボタン２２６と、編集ボタン２２８と、削除ボタン２３０と、設定ボタン２３２と、キャンセルボタン２３４とを含む。一覧表示テーブル２２２には、機能の名称が表示されるカラム２２２ａと、該機能に対応するプログラムが表示されるカラム２２２ｂと、該機能に対応する構成データが表示されるカラム２２２ｃとが含まれる。
【００２９】
一覧表示テーブル２２２において、機能−プログラム−構成データの組２２４が選択された状態で削除ボタン２３０がクリックされると、その組は、登録から抹消される。登録から抹消されたプログラムおよび構成データは、それぞれ、プログラム蓄積部１１８および構成データ蓄積部１２０から削除されるか、あるいは削除フラグが立てられて後日削除されることになる。新規追加ボタン２２６がクリックされると、図３（Ｂ）に示す新規登録画面が表示される。機能−プログラム−構成データの組２２４が選択された状態で編集ボタン２２８がクリックされると、その組の登録内容を編集するための図３（Ｂ）に類似した編集画面が表示される。
【００３０】
図３（Ｂ）は、プログラムおよび構成データの組を新規登録するための新規登録画面を示す。図３（Ｂ）に示す新規登録画面２４０は、登録しようとする内容を入力するためのテーブル２４２と、テーブル２４２の内容で新規追加を実行するための追加ボタン２４８と、新規追加をキャンセルするためのキャンセルボタン２５０とを含む。テーブル２４２は、機能の名称を入力するためのテキストボックス２４４と、該機能に対応付けて登録するプログラムおよび構成データを指定するための参照ボタン付きテキストボックス２４６ａ，２４６ｂとを含む。参照ボタン付きテキストボックス２４６ａ，２４６ｂがクリックされると、ファイル選択ダイアログボックスが表示される。
【００３１】
操作者は、テキストボックス２４４に機能名を入力して、参照ボタン付きテキストボックス２４６ａ，２４６ｂで参照ボタンを適宜使用してそれぞれファイル選択指定し、追加ボタン２４８をクリックすることにより、機能の新規追加を行うことができる。そして、操作者は、図３（Ａ）に示す設定ボタン２３２をクリックすることにより、登録内容を確定させることができる。あるいは、操作者は、キャンセルボタン２３４をクリックすることにより登録内容を破棄することができる。なお、編集ボタン２２８に応答して表示される編集画面は、図３（Ｂ）に示すものと同様の構成とすることができるので、説明は省略する。
【００３２】
図３に示したＧＵＩは、情報処理装置１１０が備えるディスプレイ、または情報処理装置１１０が提供するリモート・インタフェースにアクセスする図示しない外部装置が備えるディスプレイに表示される。情報処理装置１１０または外部装置が備える入力装置による上記ＧＵＩに対する操作によって、プログラムおよび構成データが指定される。そして、情報処理装置１１０は、ＣＰＵ１１２により、該指定に応答して、情報処理装置１１０内の記憶領域または外部装置の記憶領域に保存されるプログラムおよび構成データを受け付け、プログラム蓄積部１１８および構成データ蓄積部１２０に蓄積させる。
【００３３】
プログラムおよび構成データの管理の運用に関しては、図２（Ａ）に示す管理テーブルのように機能が管理されている場合、標準機能は変更不可能とし、オプション機能は変更可能とするという運用が考えられる。この場合、必要とする機能のみ搭載することによって、記録容量の小さな機器での記録容量不足を避けることができる。また搭載機能の改善や障害対策など、事後的な更新も容易になる。
【００３４】
さらに、上述したプログラムおよび構成データの追加、変更および削除は、情報処理装置１１０のアイドル時、ユーザ指示に応じた機能実行停止後など、機能実行に不都合が生じないタイミングにて実施することが望ましい。また、図３に示すＧＵＩを用いてプログラム−構成データの組を登録するものとして説明してきたが、ディスプレイなどを備えないデバイスでは、適宜、ファームウェア・アップデートのための手動操作に対応して、最新状態のプログラムおよび構成データに更新する態様としてもよい。
【００３５】
本実施形態による演算システム１００では、図２に示すようにプログラムと構成データとが対応付けて管理されているため、情報処理装置１１０からは、アクセラレータ１５０に対して、当該情報処理装置１１０がアクセラレータ１５０に求める機能に対応した構成データが送信される。したがって、情報処理装置１１０とアクセラレータ１５０とのプログラムおよび構成データ間に不整合を生じさせない。また、プログラムと構成データとが機能毎に組にして管理されているので、機能を指定することで、利用すべきソフトウェア・プログラム・コードと構成データとが一意に決定される。
【００３６】
以下、図４および図５を参照しながら、第１の実施形態による演算システム１００で行われる情報処理装置１１０とアクセラレータ１５０とを連携させた演算処理について、詳細を説明する。図４は、第１の実施形態による情報処理装置とアクセラレータとを連携させた演算処理の起動時の全体フローを示すフローチャートである。なお、図４および図５においては、各処理ステップが、実行主体を分けて説明されている。図４に示すステップＳ１００〜Ｓ１０４および図５に示すステップＳ３００〜Ｓ３０７は、情報処理装置（ホスト）１１０が実行主体となる処理である。図４に示すステップＳ２００〜Ｓ２０６および図５に示すステップＳ４００〜Ｓ４０７は、アクセラレータ１５０が実行主体となる処理である。
【００３７】
図４に示す処理は、情報処理装置（ホスト）１１０およびアクセラレータ１５０が電源投入されて起動されたことに応答して、ステップＳ１００およびステップＳ２００から開始される。ステップＳ１０１では、情報処理装置１１０は、ＣＰＵ１１２により、構成データ蓄積部１２０から構成データを読み出し、アクセラレータ１５０に送信して、プログラマブル・デバイスの構成処理を要求する。ここで、送信される構成データは、上記登録された複数の機能のうち予め選択された機能に対応する構成データである。ＣＰＵ１１２は、本実施形態における構成要求手段を構成する。ステップＳ２０１では、アクセラレータ１５０は、情報処理装置１１０から構成データを受信する。
【００３８】
ステップＳ２０２では、アクセラレータ１５０は、受信した構成データを構成データ格納部１５４に格納する。ステップＳ２０３では、アクセラレータ１５０は、格納した構成データに従って、再構成可能な演算器アレイ１５８の回路構成の構成処理を実施する。アクセラレータ１５０が構成処理を完了させると、ステップＳ２０４では、アクセラレータ１５０は、情報処理装置１１０に対し、機能提供する準備が完了したことを意味する準備完了信号を出力する。ステップＳ２０４に対応して、ステップＳ１０２では、情報処理装置１１０は、アクセラレータ１５０から準備完了信号を受信する。
【００３９】
準備完了信号が受信されると、ステップＳ１０３では、情報処理装置１１０は、上記送信した構成データに対応するプログラムの実行を開始し、後述するアクセラレータ１５０と連携する演算処理（以下、連携演算と参照する。）を行う。アクセラレータ１５０側でも、ステップＳ１０３に対応してステップＳ２０５で、連携演算処理を行う。
【００４０】
図５は、第１の実施形態による情報処理装置（ホスト）とアクセラレータとを連携させた演算処理示すフローチャートである。図５に示す処理は、図４に示すステップＳ１０３およびステップＳ２０５で連携演算処理が呼び出されたことに対応して、それぞれ、ステップＳ３００およびステップＳ４００から開始する。ステップＳ３０１では、情報処理装置１１０は、上記プログラムの演算処理を開始して、アクセラレータ１５０の初期化を指令する。ホスト側のステップＳ３０１に対応して、ステップＳ４０１では、アクセラレータ１５０は、演算処理開始処理を実行し、演算回路を初期化する。
【００４１】
ステップＳ３０２では、情報処理装置１１０は、上記プログラムによる処理が末端に達したため処理を終了させるのか否かを判定する。ステップＳ３０２で、プログラムを終了させないと判定された場合（ＮＯ）は、ステップＳ３０３へ処理が進められる。ステップＳ３０３では、情報処理装置１１０は、上記プログラムに含まれる情報処理装置１１０側の命令コードを実行するとともに、アクセラレータ１５０を利用する命令コードに対応して、アクセラレータ１５０を駆動し、演算を依頼する。
【００４２】
ホスト側のステップＳ３０３に対応して、ステップＳ４０２では、アクセラレータ１５０は、プログラマブル・デバイスの再構成可能な演算器アレイ１５８のロジック機能により情報処理装置１１０から依頼された演算を実行する。ステップＳ４０３では、アクセラレータ１５０は、依頼された演算の結果を情報処理装置１１０に返却する。
【００４３】
アクセラレータ側のステップＳ４０３に対応して、ステップＳ３０４では、情報処理装置１１０は、アクセラレータ１５０から演算結果を受信し、ステップＳ３０２へ処理を分岐させる。アクセラレータ側では、ステップＳ４０３後、ステップＳ４０４では、アクセラレータ１５０は、次の演算が依頼されたのか演算終了の指令が行われたのかに応じて処理を分岐させる。ステップＳ４０４で、演算終了の指令が行われず、ホスト側のステップＳ３０３に対応して次の演算の依頼があった場合（ＮＯ）は、ステップＳ４０２にループされて、ステップＳ４０２で依頼された演算を実行する。
【００４４】
ステップＳ３０２で、上記プログラムによる処理が末端に達したために処理を終了させると判定した場合（ＹＥＳ）は、ステップＳ３０５へ処理が進められる。ステップＳ３０５では、情報処理装置１１０は、アクセラレータ１５０に演算終了を指令する。アクセラレータ側では、ステップＳ４０４では、次の演算が依頼されたか演算終了の指令が行われたに応じて処理を分岐させ、ステップＳ３０５に対応して演算終了の指令が行われた場合（ＹＥＳ）は、ステップＳ４０５へ処理が進められる。
【００４５】
ステップＳ４０５では、アクセラレータ１５０は、演算終了処理（後始末）を実行し、ステップＳ４０６で、演算終了処理の完了を報告し、ステップＳ４０７で本処理を終了させて図４に示す処理に戻る。アクセラレータ側のステップＳ４０６に対応して、ステップＳ３０６では、情報処理装置１１０が、演算終了処理（後始末）を実行して、ステップＳ３０７で、本処理を終了させて、図４に示す処理に戻る。情報処理装置１１０およびアクセラレータ１５０は、それぞれ、図５に示すステップＳ３０７およびステップＳ４０７から戻って連携演算処理が終了すると、ステップＳ１０４およびステップＳ２０６で本処理を終了させる。
【００４６】
図４および図５に示した処理によれば、演算システム１００の起動時に、予め選択された機能に対応する構成データが、情報処理装置１１０からアクセラレータ１５０へと転送されて、該構成データに基づいて演算器アレイ１５８が構成される。そして、演算器アレイ１５８が構成を完了させた後は、情報処理装置１１０は、予め選択された機能に対応するプログラムを起動させて、アクセラレータ１５０を駆動しながら所望の連携演算処理を行うことができる。
【００４７】
ところで、アクセラレータ１５０に搭載されるプログラマブル・デバイスとしては、ダイナミック・リコンフィギュラブル・プロセッサと呼ばれる半導体デバイスが知られている。この半導体デバイスは、動的な再構成、つまり電源遮断することなく極短時間に回路書き換えが可能となっており、特に近年のＦＰＧＡにおいては、部分的に動的再構成が可能になっており、適用範囲も広がっている。上記アクセラレータ１５０に搭載されるプログラマブル・デバイスとして、ダイナミック・リコンフィギュラブル・プロセッサを用いれば、情報処理装置（ホスト）１１０の電源遮断を待つ必要なく、即時、プログラマブル・デバイスの構成を更新して、アクセラレータ１５０が提供する機能を変更することができる。
【００４８】
上述までは、演算システム１００の起動時の処理について説明してきたが、以下、図６および図７を参照しながら、起動後ユーザからの指示に応答して機能を変更する処理について説明する。上記動的再構成を利用することにより、演算システム１００は、現時点でアクセラレータ１５０に構成されている機能と異なる機能が必要となった場合でも、演算システム１００の再起動を伴わずに、プログラマブル・デバイスのロジック機能を異なるロジック機能へ変更し、異なる他の連携演算処理を行うことができる。
【００４９】
図６（Ａ）は、第１の実施形態による情報処理装置（ホスト）が実行する、アクセラレータと連携して実現する機能を変更する処理を示すフローチャートである。図６（Ａ）に示す処理は、演算システム１００が起動したことに応答して、ステップＳ５００から開始する。ステップＳ５０１では、情報処理装置１１０は、ユーザから機能変更の指示があったか否かを判定し、ユーザから機能変更の指示があるまでの間（ＮＯの間）、ステップＳ５０１をループさせて、指示を待ち受ける。
【００５０】
ステップＳ５０１で、ユーザからの機能変更指示があったと判定された場合（ＹＥＳ）は、ステップＳ５０２へ処理を進める。ステップＳ５０２では、情報処理装置１１０は、自己およびアクセラレータ１５０の動作状態を確認する。ステップＳ５０３では、情報処理装置１１０は、機能変更が即時実施可能であるか否かを判定する。説明する実施形態では、当該情報処理装置１１０およびアクセラレータ１５０の両方がアイドル状態にあるときに、即時実施が可能であると判定されるものとする。
【００５１】
ステップＳ５０３で、即時実施が可能であると判定された場合（ＹＥＳ）は、ステップＳ５０４で、機能切り替え処理を実行し、機能切り替え処理が完了すると、ステップＳ５０１へループさせて、次の指示を待ち受ける。一方、ステップＳ５０３で、即時実施が不可能であると判定された場合（ＮＯ）は、ステップＳ５０５へ処理を進める。ステップＳ５０５では、情報処理装置１１０は、タスクが登録されているキューに機能変更命令を投入し、ステップＳ５０１へループさせて、次の指示を待ち受ける。
【００５２】
図６（Ｂ）は、第１の実施形態による情報処理装置（ホスト）が実行する、キューに投入された機能変更命令を実行する処理を示すフローチャートである。図６（Ｂ）に示す処理は、演算システム１００が起動したことに応答して、ステップＳ６００から開始する。ステップＳ６０１では、情報処理装置１１０は、当該情報処理装置１１０がアイドル状態にあるか否かを判定し、アイドル状態となるまでの間（ＮＯの間）、ステップＳ６０１をループさせて待ち受ける。
【００５３】
なお、情報処理装置１１０のアイドル状態は、情報処理装置１１０のＯＳ（オペレーティング・システム）が備えるタスクスケジューラなどを監視することによって判定することができる。または、入出力部分やジョブ管理の待ちキューなどを監視することによるシステム固有の資源管理機能を利用してもよい。
【００５４】
ステップＳ６０１で、情報処理装置１１０がアイドル状態にあると判定された場合（ＹＥＳ）は、ステップＳ６０２へ処理を進める。ステップＳ６０２では、情報処理装置１１０は、キューに機能変更命令があるか否かを判定する。ステップＳ６０２で、キューに機能変更命令が無いと判定された場合（ＮＯ）は、ステップＳ６０１へ処理をループさせて、機能変更命令を待ち受ける。
【００５５】
一方、ステップＳ６０２では、キューに機能変更命令が有ると判定された場合（ＹＥＳ）は、ステップＳ６０３へ処理を分岐させる。ステップＳ６０３では、情報処理装置１１０は、アクセラレータ１５０に問い合わせを行って、アクセラレータ１５０の動作状態を確認する。ステップＳ６０４では、情報処理装置１１０は、機能変更が実施可能であるか否かを判定する。説明する実施形態では、当該情報処理装置１１０およびアクセラレータ１５０の両方がアイドル状態にあるときに、実施可能であると判定されるものとする。
【００５６】
ステップＳ６０４で、実施可能であると判定された場合（ＹＥＳ）は、ステップＳ６０５で、機能切り替え処理を実行し、ステップＳ６０６で、キューから当該機能変更命令を削除した後、ステップＳ６０１へループさせて、次の指示を待ち受ける。一方、ステップＳ６０４で、実施不可能であると判定された場合（ＮＯ）は、ステップＳ６０１へ処理をループさせて、実施可能となるまで待ち受ける。
【００５７】
図７は、第１の実施形態による機能切り替え処理を示すフローチャートである。なお、図７についても、図４および図５と同様に、ステップＳ７００〜Ｓ７０５は、情報処理装置（ホスト）１１０が実行主体となる処理であり、ステップＳ８００〜Ｓ８０６は、アクセラレータ１５０が実行主体となる処理である。
【００５８】
図７に示す処理は、図６（Ａ）に示したステップＳ５０４または図６（Ｂ）に示したステップＳ６０５で呼び出されて、ステップＳ７００およびステップＳ８００から開始される。ステップＳ７０１では、情報処理装置１１０は、選択された機能に対応するプログラムおよび構成データを準備する。ここでは、従前選択されていた機能に対応するプログラムが終了しているものとする。ステップＳ７０２では、情報処理装置１１０は、アクセラレータ１５０に対し、機能変更を要求するとともに、変更後の機能に対応する構成データを送信する。ステップＳ８０１では、アクセラレータ１５０は、情報処理装置１１０から、機能変更要求とともに構成データを受信する。
【００５９】
アクセラレータ１５０は、ステップＳ８０２で、受信した構成データを構成データ格納部１５４に格納し、ステップＳ８０３で、格納した構成データに従って、再構成可能な演算器アレイ１５８の回路構成の再構成処理を実施する。アクセラレータ１５０は、再構成処理を完了させると、ステップＳ８０４で、情報処理装置１１０に対し準備完了信号を出力する。ステップＳ８０４に対応して、ステップＳ７０３では、情報処理装置１１０は、アクセラレータ１５０から準備完了信号を受信する。
【００６０】
ステップＳ７０４では、情報処理装置１１０は、上記変更後の機能に対応するプログラムの実行を開始し、アクセラレータとの連携演算処理を行う。アクセラレータ１５０側でも、ステップＳ７０４に対応して、ステップＳ８０５で、連携演算処理が行われる。連携演算処理が終了すると、ステップＳ７０５およびステップＳ８０６で本処理を終了させる。なお、図７のステップＳ８０５で呼び出される連携演算は、図５に示したものと同様であるため、詳細な説明は省略する。
【００６１】
上述したように、アクセラレータ１５０に搭載するプログラマブル・デバイスとして、動的再構成が可能なリコンフィギュラブル・プロセッサを用いることにより、電源遮断することなく、機能毎にアクセラレータ１５０の回路構成の変更が可能となる。つまり、あるタスクを一の局面ではアクセラレータ１５０上のハードウェアで処理し、他の局面ではＣＰＵ１１２でソフトウェア処理することができる。以下、図８および図９を参照しながら、上述したアクセラレータとの連携演算の利用態様について説明する。
【００６２】
図８は、上述したアクセラレータとの連携演算をビデオ・デコード処理に適用した利用態様を説明する図である。図８に示す処理は、ビデオ再生が指示されたことに応答して、ステップＳ９００から開始する。ステップＳ９０１では、情報処理装置１１０は、再生が要求されるビデオの品質が高画質設定であるか否かを判定する。ここでは、説明の便宜上、高画質であるか否かで処理を分岐させているが、ビットレート、コーデックの種類など画像ファイル自体の品質に応じて判定することができ、またユーザが許容する品質に応じて判定することができる。
【００６３】
ステップＳ９０１で、ビデオ品質が高画質であると判定された場合（ＹＥＳ）は、ステップＳ９０２へ処理を進める。ステップＳ９０２では、情報処理装置１１０は、アクセラレータ１５０に、ビデオ・デコード機能に対応する構成データを送信するとともに、機能構成の変更を要求する。ステップＳ９０３では、情報処理装置１１０は、アクセラレータ１５０から準備完了信号を受信し、ステップＳ９０４では、アクセラレータ１５０と連携したビデオ・デコード演算を実行する。ビデオ・デコード演算が終了すると、ステップＳ９０６で、本ビデオ・デコード処理を終了する。
【００６４】
一方、ステップＳ９０１で、ビデオ品質が高画質ではないと判定された場合（ＮＯ）は、ステップＳ９０５へ処理を進める。ステップＳ９０５では、情報処理装置１１０は、ソフトウェア・デコーダによるビデオ・デコード処理を実行し、ステップＳ９０６で、本ビデオ・デコード処理を終了する。
【００６５】
図８を参照して説明した連携演算処理によれば、高画質で再生する場合にはビデオ・デコード機能をアクセラレータ１５０上のハードウェア回路に担当させ、低画質で再生しても構わない場合にはＣＰＵ１１２でビデオ・デコードのソフトウェアに担当させることができる。つまり、演算負荷の大小に応じて、アクセラレータ１５０を使うか否かを切り替えることによって、アクセラレータ１５０が占有されてしまう可能性を低減するとともに、消費電力を低減することが可能となる。
【００６６】
図９は、他の利用態様を説明するフローチャートである。図９に説明する例では、機能に対応するプログラムは、繰り返し実行されるコード単位を含み、該コード単位は、アクセラレータ１５０の準備状況に応じて、機能処理をＣＰＵ１１２によるソフトウェア処理として実行するか、アクセラレータ１５０を駆動した連携演算として実行するかを分岐させるコードを含む。アクセラレータ１５０の準備状況は、準備完了フラグによって表されており、準備完了フラグは、アクセラレータ１５０から準備完了信号を受信していない間は「偽」の値であり、該準備完了信号を受信すると「真」の値となる。
【００６７】
図９に示す処理は、ステップＳ１０００から開始し、ステップＳ１００１では、情報処理装置１１０は、対応する構成データをアクセラレータ１５０に送信する。ステップＳ１００２では、情報処理装置１１０は、対応するプログラムによる機能処理を開始する。ステップＳ１００３では、情報処理装置１１０は、該プログラムの終了条件が成立したか否かを判定する。ステップＳ１００３で、終了条件が成立していないと判定された場合（ＮＯ）は、ステップＳ１００４へ処理が分岐される。
【００６８】
ステップＳ１００４では、情報処理装置１１０は、準備完了フラグの値が「真」であるか否かを判定する。ステップＳ１００４で、準備完了フラグの値が「偽」であると判定された場合（ＮＯ）は、ステップＳ１００５で、ソフトウェア処理として上述したコード単位の機能処理を実行し、ステップＳ１００３へループさせる。一方、ステップＳ１００４で、準備完了フラグの値が「真」であると判定された場合（ＹＥＳ）は、ステップＳ１００６では、情報処理装置１１０は、アクセラレータ１５０との連携演算として上述したコード単位の機能処理を実行し、ステップＳ１００３へループさせる。ステップＳ１００３で、終了条件が成立したと判定された場合（ＹＥＳ）は、ステップＳ１００７へ処理を進め、本処理を終了させる。
【００６９】
図９に示す処理によれば、アクセラレータ１５０のハードウェア化が整っていない新しく実行された処理は、ＣＰＵ１１２にてソフトウェア処理として実行する。一方、アクセラレータ１５０による実行準備が整い次第、アクセラレータ１５０と連携した演算に切り替えて処理が実行される。これにより、ＣＰＵ負荷を軽減しつつ、システム全体の運用を効率化することが可能となる。
【００７０】
以上説明した第１の実施形態には、以下に説明する利点がある。まず、情報処理装置１１０側からアクセラレータ１５０内のプログラマブル・デバイスの機能を利用する場合、情報処理装置１１０側では、構成データによって構成済みのデバイスが提供する機能を前提としたプログラムを準備する必要がある。つまり、情報処理装置１１０側のプログラムと、アクセラレータ１５０側の構成データとの組み合わせが適切であることが必須である。上述までの第１の実施形態によれば、情報処理装置１１０側にプログラマブル・デバイスの構成データと、それに対応したプログラムとが対応付けて蓄積され、使用時には情報処理装置１１０からアクセラレータ１５０に転送されて再構成される。このため、情報処理装置１１０側がアクセラレータ１５０に期待する機能と、アクセラレータ１５０が提供する機能との間に不一致を生じさせない。
【００７１】
また、プログラム蓄積部１１８および構成データ蓄積部１２０は、半導体チップ上のメモリで構成する必要がなく、このようなメモリと比較して安価に大容量化できる２次記憶装置を用いて構成することができる。このことから、多様な機能を実現するため多数の構成データおよびプログラムを蓄積しても支障がなく、半導体製造コストの上昇も招かない。
【００７２】
さらに、ホスト１１０からアクセラレータ１５０へ構成データを転送し、アクセラレータ１５０内で構成設定を完了させるまでは、ある程度の時間を要することになる。プログラマブル・デバイスとして一般的なＦＰＧＡを利用する場合、システム全体を停止させ、ＦＰＧＡの回路書き換え命令と構成データとを送信し、書き換え後にシステムをリブートして新たなシステムとして動作させる手間がかかる。さらに、リブート時間が必要であり、この期間は、ユーザを待たしてしまうことになる。これに対して、上記第１の実施形態では、構成データの転送および（再）構成処理が起動時に実行されるため、アクセラレータ１５０の設定処理に要する時間を情報処理装置１１０の起動時間に隠蔽することができ、使用感を著しく向上させることが可能である。
【００７３】
また、ユーザによる機能変更が指示された際、情報処理装置１１０およびアクセラレータ１５０のいずれかでもアイドル状態でない場合は、動作中の処理を中断しない限り、プログラマブル・デバイスの構成を変更することができない。上記第１の実施形態によれば、情報処理装置１１０およびアクセラレータ１５０のアイドル状態を検知して、構成データの転送および（再）構成処理が実行されるため、演算処理途中の結果を失うことなく、ユーザからの、プログラマブル・デバイスの構成変更を伴う機能実行要求を受け付けることが可能となる。
【００７４】
また、ユーザによる機能変更が指示された際に、情報処理装置１１０およびアクセラレータ１５０のいずれかでもアイドル状態でない場合に、実行中の処理を停止するか、停止するまで待つ態様が考えられる。上述した実施形態では、実行中の処理が停止するまで待つものとして説明したが、ユーザが許すのであれば、実行中の処理を停止した上で機能変更を実行することを妨げるものではない。
【００７５】
上述した第１の実施形態による演算システム１００は、アクセラレータ１５０と、該アクセラレータ１５０のホストとなる情報処理装置１１０とから構成されるものであった。以下、図１０および図１１を参照しながら、第２の実施形態による演算システムについて説明する。
【００７６】
図１０は、第２の実施形態による演算システムの概略を示すブロック図である。図１０に示す演算システム３００は、アクセラレータ３５０と、該アクセラレータ３５０の直接のホストとなる第１情報処理装置３１０と、第２情報処理装置３７０とを含み構成される。第１情報処理装置３１０は、各種演算をハードウェア回路として実装するアクセラレータ３５０を直接利用する直接のホスト装置であり、かつ、アクセラレータ３５０の演算資源を、アクセラレータ３５０を直接利用できない他の情報処理装置に対して提供する機能を備える。第２情報処理装置３７０は、上記情報処理装置３１０を経由してアクセラレータ３５０の演算資源を利用する要求元である。以下、第１情報処理装置をホスト３１０と参照し、第２情報処理装置を要求元３７０という場合がある。
【００７７】
第１情報処理装置３１０は、第１の実施形態の情報処理装置１１０と同様に、ＣＰＵ３１２、制御部３１４、ＲＡＭ３１６、プログラム蓄積部３１８、構成データ蓄積部３２０および送信バッファ３２２を備える。本実施形態による第１情報処理装置３１０は、さらに、ネットワーク・インタフェース３２４を備える。第１の実施形態で説明したものと同一のハードウェア・コンポーネント３１２〜３２２については、第１の実施形態と同様のはたらきをするので、説明を割愛する。
【００７８】
ネットワーク・インタフェース３２４は、ＴＣＰ／ＩＰやイーサネット（登録商標）などのプロトコルに従って、第１情報処理装置３１０を有線または無線のネットワークに接続させるインタフェース機器である。本実施形態のネットワーク・インタフェース３２４は、ネットワークを介して第１情報処理装置３１０を第２情報処理装置３７０に接続させている。
【００７９】
一方、第２情報処理装置３７０は、第１情報処理装置３１０と類似した構成を有しており、ＣＰＵ３７２と、ＲＡＭ３７４と、データ蓄積部３７６と、ネットワーク・インタフェース３７８とを備える。ＣＰＵ３７２は、後述する第１情報処理装置３１０を経由してアクセラレータ３５０を利用する処理を含めて、第２情報処理装置３７０の全体制御を行う手段である。ＲＡＭ３７４は、上記ＣＰＵ３７２による演算のための作業空間を提供する記憶装置である。ネットワーク・インタフェース３７８は、ＴＣＰ／ＩＰやイーサネット（登録商標）などのプロトコルに従って、第２情報処理装置３７０を有線または無線のネットワークに接続させるインタフェース機器である。本実施形態のネットワーク・インタフェース３７８は、ネットワークを介して第２情報処理装置３７０を第１情報処理装置３１０に接続させている。
【００８０】
データ蓄積部３７６は、ホスト３１０に実行させるソフトウェア・プログラム・コードと、ホスト３１０を経由してアクセラレータ３５０のプログラマブル・デバイスに送信するための構成データとを対応付けて蓄積する記憶領域である。上記プログラムおよび構成データに関連付けて、当該第２情報処理装置３７０で実行するソフトウェア・プログラム・コードを蓄積していてもよい。データ蓄積部３７６は、特に限定されるものではないが、ＨＤＤやＳＳＤなどの２次記憶装置により提供することができる。アクセラレータ３５０は、第１の実施形態と同様であるため説明を割愛する。
【００８１】
第２情報処理装置３７０は、必要となったときに、アクセラレータ３５０の演算機能の提供を受けるため第１情報処理装置３１０に演算を要求する。第２の実施形態における演算システム３００においては、第１情報処理装置３１０は、第２情報処理装置３７０から演算の要求があった時に、要求された演算機能に応じた構成データを構成データ蓄積部３２０から読み出して、アクセラレータ３５０へ送信する。アクセラレータ３５０は、外部インタフェースを介して受信した構成データを構成データ格納部に格納し、該構成データに従って再構成可能な演算器アレイを構成する。
【００８２】
第１情報処理装置３１０は、アクセラレータ３５０の準備完了の通知を受けて、プログラム蓄積部３１８に蓄積されるプログラムを実行する。当該プログラムは、第２情報処理装置３７０からの要求を受けて、上記構成データによりアクセラレータ３５０のプログラマブル・デバイス上に実現される機能を利用し、その演算結果を第２情報処理装置３７０へ応答するコードを含む。第２情報処理装置３７０は、第１情報処理装置３１０から送信される要求した演算結果を受信して、自身の処理に組み込み、最終的な結果を得る。
【００８３】
プログラムと構成データとは、第１の実施形態と同様に、対応付けられて管理される。上記構成データおよびプログラムは、必ずしも第１情報処理装置３１０が蓄積していない場合があるため、第２の実施形態では、直接のホスト３１０からアクセラレータ３５０の演算機能の提供を受けている要求元の第２情報処理装置３７０が、これらの構成データおよびプログラムを提供してもよい。
【００８４】
図１１は、第２の実施形態による第２情報処理装置（要求元）と第１情報処理装置（ホスト）とアクセラレータとを連携させた演算処理の起動時の全体フローを示すシーケンス図である。図１１に示す処理は、要求元３７０側から開始され、ステップＳ１１０１では、要求元３７０は、ホスト３１０に対し、処理を依頼する要求を発行する。これに対応してホスト３１０は、該処理要求を受け付ける。ステップＳ１１０２では、要求元３７０は、ホスト３１０に対し、依頼する処理の演算（機能）を指定する。これに対応してホスト３１０は、演算の指定を受け付ける。ステップＳ１１０３では、要求元３７０は、ホスト３１０に対し、上記指定した演算で用いるデータ、パラメータを送信する。これに対応してホスト３１０は、上記指定した演算で用いるデータ、パラメータを受け付ける。
【００８５】
ステップＳ１１０４では、ホスト３１０は、要求元３７０から指定された演算（機能）に対応するプログラムおよび構成データが、自身の蓄積部３１８，３２０に蓄積されているか否かを判定する。なお、図１１に示すシーケンス図では、自身の蓄積部３１８，３２０に必要なプログラムおよび構成データが蓄積されていない場合を例に説明するが、蓄積されているの場合は、後述するステップＳ１１０５およびステップＳ１１０６が省略される。
【００８６】
ステップＳ１１０５では、ホスト３１０は、要求元３７０に対し、必要なプログラムおよび構成データの送信を依頼する。ステップＳ１１０６では、要求元３７０は、送信依頼を受けて、データ蓄積部３７６から対応するプログラムおよび構成データを読み出し、ホスト３１０へ送信する。ステップＳ１１０７では、ホスト３１０は、要求元３７０から受信した構成データをアクセラレータ３５０に送信して、プログラマブル・デバイスの再構成処理を要求する。
【００８７】
ステップＳ１１０８では、アクセラレータ３５０は、ホスト３１０から受信した構成データを構成データ格納部に格納する。ステップＳ１１０９では、アクセラレータ３５０は、格納した構成データに従って、再構成可能な演算器アレイの回路構成の再構成処理を実施する。アクセラレータ３５０は、構成処理を完了させると、ステップＳ１１１０で、ホスト３１０に対し、準備完了信号を出力する。
【００８８】
ステップＳ１１１１では、ホスト３１０は、要求元３７０から上記構成データとともに受信したプログラムによる処理を開始させる。ホスト３１０は、ステップＳ１１１２で、アクセラレータ３５０を初期化し、ステップＳ１１１３で、データおよびパラメータ、またはこれらのいずれか一方を用いて、アクセラレータ３５０を駆動する命令コードを実行し、演算依頼を行う。ステップＳ１１１４では、ホスト３１０は、アクセラレータ３５０から演算結果を受信する。上記ステップＳ１１１３およびステップＳ１１１４を適宜繰り返し、要求元３７０から要求された演算が完了した後、ホスト３１０は、ステップＳ１１１５で、アクセラレータ３５０に終了を通知し、ステップＳ１１１６で、要求元３７０に演算終了を報告する。
【００８９】
ステップＳ１１１７では、要求元３７０は、演算結果を受け入れる準備が整ったことを通知する結果受付準備完了通知をホスト３１０に対し送信する。ステップＳ１１１８では、ホスト３１０は、結果受付準備完了通知を受けて、処理結果を要求元３７０へ返却するコードを実行し、処理結果を送信する。ステップＳ１１１９では、要求元３７０は、処理結果を受けて、処理結果受信通知をホスト３１０に送信し、ステップＳ１１２０で、要求終了応答を受信する。
【００９０】
上述した第２の実施形態の演算システム３００によれば、アクセラレータ３５０を直接利用できない情報処理装置３７０においても、アクセラレータ３５０を直接利用できる情報処理装置３１０を経由して、同等な演算機能を利用できる。これにより、ホスト３１０の有効性を著しく向上させることができる。また、単一のホストからのみアクセラレータを利用する構成においては、常にアクセラレータを必要とする演算を実施する場合を除けば、通常、アクセラレータの遊休時間が存在する。上記第２の実施形態によれば、外部の情報処理装置３７０からアクセラレータ３５０を利用可能としているので、アクセラレータ３５０の利用率の向上にも寄与する。
【００９１】
さらに、上記第２の実施形態では、直接のホスト３１０がプログラムおよび構成データを備えなくても、要求元３７０からプログラムおよび構成データを送信できるため、直接のホスト３１０に格納されているプログラムおよび構成データによって実行できる演算機能に限定されない。
【００９２】
以上説明してきたように、上述した実施形態によれば、ＦＰＧＡなどに代表されるプログラマブル・デバイス（を搭載するアクセラレータ）と接続される情報処理装置において、プログラマブル・デバイスの複数の構成データを蓄積し、所望の機能を実現するために適切な構成データを選択設定してプログラマブル・デバイスを再構成し、該プログラマブル・デバイスと連携した処理を行う情報処理装置、演算方法、およびプログラムを提供することができる。
【００９３】
上述した実施形態によれば、ＦＰＧＡなどに代表されるプログラマブル・デバイスをアクセラレータとして用いる情報処理装置において、アクセラレータを情報処理装置が求める多様な設定に構成し、情報処理装置と連携することが可能になり、アクセラレータの有効性を著しく向上させることが可能となる。さらに、アクセラレータを備える情報処理装置を経由して、アクセラレータを備えない他の情報処理装置においても、アクセラレータと連携した演算の結果を利用することができるので、アクセラレータの利用範囲が拡大される。
【００９４】
なお、上記機能部は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ブルーレイディスク、ＳＤカード、ＭＯなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
【００９５】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００９６】
１００，３００…演算システム、１１０，３１０…情報処理装置、１１２，３１２…ＣＰＵ、１１４，３１４…制御部、１１６，３１６…ＲＡＭ、１１８、３１８…プログラム蓄積部、１２０，３２０…構成データ蓄積部、１２２，３２２…送信バッファ、１５０，３５０…アクセラレータ、１５２…制御部、１５４…構成データ格納部、１５６…ローカルメモリ、１５８…再構成可能な演算器アレイ、１６０…外部インタフェース、２００…プログラム、２１０…構成データ、２２０…登録一覧表示画面、２２２…一覧表示テーブル、２２２…カラム、２２４…機能−プログラム−構成データの組、２２６…新規追加ボタン、２２８…編集ボタン、２３０…削除ボタン、２３２…設定ボタン、２３４…キャンセルボタン、２４０…新規登録画面、２４２…テーブル、２４４…テキストボックス、２４６…参照ボタン付きテキストボックス、２４８…追加ボタン、２５０…キャンセルボタン、３２４，３７８…ネットワーク・インタフェース、３７０…第２情報処理装置（要求元）、３７２…ＣＰＵ、３７４…ＲＡＭ、３７６…データ蓄積部
【先行技術文献】
【特許文献】
【００９７】
【特許文献１】特開平１０−２８５０１４号公報
【特許文献２】特開２００７−２５１３２９号公報
【特許文献３】特許第４１６５１２５号公報
【特許文献４】特開平１１−１４４６６２号公報
【特許文献５】特許第３６６４９６２号公報
【特許文献６】特開２００８−２４２８５０号公報
【図１】
2013062566.tif 000003
【図２】
2013062566.tif 000004
【図３】
2013062566.tif 000005
【図４】
2013062566.tif 000006
【図５】
2013062566.tif 000007
【図６】
2013062566.tif 000008
【図７】
2013062566.tif 000009
【図８】
2013062566.tif 000010
【図９】
2013062566.tif 000011
【図１０】
2013062566.tif 000012
【図１１】
2013062566.tif 000013