(57)【要約】【課題】主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供すること。【解決手段】アプリケーションプログラムを構成するソフトウエアモジュールを実行するＣＰＵ２２、および、アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段１０を複数有する情報処理装置１００において、拡張手段１０の利用可能か否かを表す情報を含む拡張手段１０の情報を管理する情報管理手段２３と、情報管理手段２３が管理する拡張手段１０の情報に基づいて、ハードウエアモジュールに利用可能な拡張手段１０を割り当てながらハードウエアモジュールおよびソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段２４とを備えて構成する。【選択図】図１
2009070265.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを構成するソフトウエアモジュールを実行する主制御手段を有し、前記アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段を複数有する情報処理装置において、
前記拡張手段の利用が可能か否かを表す情報を含む前記拡張手段の情報を管理する情報管理手段と、
前記情報管理手段が管理する前記拡張手段の情報に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てながら前記ハードウエアモジュールおよび前記ソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段とを備えたことを特徴とする情報処理装置。
【請求項２】
前記拡張手段が、前記ハードウエアモジュールを実行するプログラマブル論理回路を有し、
前記スケジュール管理手段が、前記プログラマブル論理回路の実装条件に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールまたは前記ソフトウエアモジュールで実行できる処理と、前記ハードウエアモジュールでのみ実行できる処理とがあった場合、前記スケジュール管理手段が、前記ハードウエアモジュールでのみ実行できる処理を優先して、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールで実行できる処理が複数あった場合、前記スケジュール管理手段が、前記ハードウエアモジュールで実行される処理が連続して行われるように、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記アプリケーションプログラムには、前記ハードウエアモジュールまたは前記ソフトウエアモジュールを表すモジュール同士のデータ転送の関係を表すデータ転送リストが含まれており、
前記スケジュール管理手段が、前記データ転送リストに基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項６】
前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、
前記通信手段が、ＳｔａｒＦａｂｒｉｃに準拠したものであることを特徴とする請求項１から請求項５までの何れかに記載の情報処理装置。
【請求項７】
前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、
前記通信手段が、ＡＳＩに準拠したものであることを特徴とする請求項１から請求項５までの何れかに記載の情報処理装置。
【請求項８】
前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリと、前記プログラマブル論理回路にコンフィギュレーション回路を有し、
前記プログラマブル論理回路のコンフィギュレーション中に、前記ワークメモリおよび前記コンフィギュレーション回路が停止しないことを特徴とする請求項２に記載の情報処理装置。
【請求項９】
前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリを有し、前記ワークメモリが、他の前記拡張手段から出力されたデータを書き込みまたは読み出し可能であることを特徴とする請求項１から請求項８までの何れかに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主制御手段および主制御手段でないものを利用して情報を処理する情報処理装置に関する。
【背景技術】
【０００２】
従来の情報処理装置としては、アプリケーションプログラムを構成する部分的な処理を、ＣＰＵで実行するソフトウエアモジュールおよびプログラマブル論理回路で実行するハードウエアモジュールの２種類のモジュールで実行するものとし、２種類のモジュールのうち処理速度が速い方を選択して実行するものが知られている（例えば、特許文献１参照）。
【０００３】
特許文献１では、ハードウエアモジュールで実行すれば処理速度は速いが、回路情報に基づいてプログラマブル論理回路をコンフィギュレーション（回路の再構成）する時間がかかるため、情報処理装置がアプリケーションプログラムを実行する際、総合的な処理速度が低下してしまうことを考慮し、情報処理装置は、まずはソフトウエアモジュールでの実行を行い、回路情報がプログラマブル論理回路に蓄積された後などコンフィギュレーションに時間がかからなくなった時点で、ハードウエアモジュールを利用する機会を増やしていくことで、アプリケーションプログラムを高速に処理するものである。
【０００４】
また、従来の情報処理装置としては、デジタル画像データに対し画像処理を行う複数個のプログラマブルな画像処理プロセッサを搭載し、画像処理プロセッサ同士が画像処理プログラムを交換し合い画像処理の機能を共有することで回路規模の増大を抑えつつ、画像処理プロセッサの稼働率を向上できるものが知られている（例えば、特許文献２参照）。
【特許文献１】特開平１１−２３２０８１号公報
【特許文献２】特開２００４−１１０２０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の情報処理装置では、複数個のプログラマブル論理回路で処理する場合で、プログラマブル論理回路の状態がコンフィギュレーション中のものが選択されてしまうと、コンフィギュレーションが終了するまで処理が停止してしまい、必ずしも処理の稼働率が向上するわけではないという課題が残されていた。
本発明は、上述した課題を解決するためになされたものであり、主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、アプリケーションプログラムを構成するソフトウエアモジュールを実行する主制御手段を有し、前記アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段を複数有する情報処理装置において、前記拡張手段の利用が可能か否かを表す情報を含む前記拡張手段の情報を管理する情報管理手段と、前記情報管理手段が管理する前記拡張手段の情報に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てながら前記ハードウエアモジュールおよび前記ソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段とを備えた構成を有している。
この構成により、拡張手段の静的情報および動的情報に基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるスケジュールを決定するため、拡張手段が利用不可能でアプリケーションプログラムの実行が滞ることなく、主制御手段と拡張手段とが連携しながらアプリケーションプログラムを効率的に実行することができる。
【０００７】
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するプログラマブル論理回路を有し、前記スケジュール管理手段が、前記プログラマブル論理回路の実装条件に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、プログラマブル論理回路の実装条件に基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、ハードウエアモジュールにとって適切な拡張手段を割り当てることができ、例えば、処理負荷の軽いハードウエアモジュールに高性能な拡張手段を優先的に割り当てることで、後に実行される処理に影響することがない。
【０００８】
また、本発明の情報処理装置は、前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールまたは前記ソフトウエアモジュールで実行できる処理と、前記ハードウエアモジュールでのみ実行できる処理とがあった場合、前記スケジュール管理手段が、前記ハードウエアモジュールでのみ実行できる処理を優先して、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、ハードウエアモジュールでのみ実行できる処理を優先して、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、ハードウエアモジュールの数に対し拡張手段が少ない場合に、ソフトウエアモジュールでの代用が可能なハードモジュールを拡張手段に割り当てたとき、利用可能な拡張手段が無くなってハードモジュールしかできない処理の割り当てができなくなり、拡張手段の処理が終了して新たに利用可能になるまでアプリケーションプログラムの処理を停止することがない。
【０００９】
また、本発明の情報処理装置は、前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールで実行できる処理が複数あった場合、前記スケジュール管理手段が、前記ハードウエアモジュールで実行される処理が連続して行われるように、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、主制御手段と拡張手段との間の処理データ転送が頻繁に発生することを防ぐことができる。
【００１０】
また、本発明の情報処理装置は、前記アプリケーションプログラムには、前記ハードウエアモジュールまたは前記ソフトウエアモジュールを表すモジュール同士のデータ転送の関係を表すデータ転送リストが含まれており、前記スケジュール管理手段が、前記データ転送リストに基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、モジュール同士のデータ転送の関係を表すデータ転送リストに基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、拡張手段同士の処理データの受け渡しが可能となるハードウエアモジュールの割り当ての判断が容易に行える。
【００１１】
また、本発明の情報処理装置は、前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、前記通信手段が、ＳｔａｒＦａｂｒｉｃに準拠したものである構成を有している。
この構成により、拡張手段を離れた場所に設置したり、拡張手段の接続可能数をＰＣＩに比べ増やしたりすることができる。
【００１２】
また、本発明の情報処理装置は、前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、前記通信手段が、ＡＳＩに準拠したものである構成を有している。
この構成により、拡張手段を離れた場所に設置したり、拡張手段の接続可能数をＰＣＩｅに比べ増やしたりすることができる。
【００１３】
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリと、前記プログラマブル論理回路にコンフィギュレーション回路を有し、前記プログラマブル論理回路のコンフィギュレーション中に、前記ワークメモリおよび前記コンフィギュレーション回路が停止しない構成を有している。
この構成により、コンフィギュレーション中に、ワークメモリおよびコンフィギュレーション回路が停止しないため、コンフィギュレーション中でもワークメモリへのアクセスが可能となり、プログラマブル論理回路のコンフィギュレーションをＰＣＩバスなどの汎用通信路で行える。
【００１４】
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリを有し、前記ワークメモリが、他の前記拡張手段から出力されたデータを書き込みまたは読み出し可能である構成を有している。
この構成により、ワークメモリが、他の拡張手段から出力されたデータを書き込みまたは読み出し可能であるため、１つの拡張手段に搭載されているワークメモリでは不足する処理データに対し、複数の拡張手段のワークメモリを使用することができ、簡単にメモリ増設が行える。
【発明の効果】
【００１５】
以上のように本発明は、主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供することを目的とする。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態に係る情報処理装置について、図面を用いて説明する。
【００１７】
（本発明の第１の実施の形態）
図１は、本発明の第１の実施の形態に係る情報処理装置のブロック図である。情報処理装置１００は、複数の拡張手段１０およびホスト２０によって構成されている。なお、拡張手段１０の各々を区別する場合、拡張手段１０Ａ、拡張手段１０Ｂ、拡張手段１０Ｃとして記載し、区別しない場合、拡張手段１０として記載する。
【００１８】
拡張手段１０は、プログラマブル論理回路１１、ワークメモリ１２、およびメモリ制御手段１３によって構成される。場合によっては、拡張手段１０は、論理回路やメモリなどに関する情報を表した回路情報を格納するローカルメモリ（図１には図示していない）を加えて構成される。
【００１９】
プログラマブル論理回路１１は、回路構成が自由に再構成可能な回路である。プログラマブル論理回路１１としては、例えば、ＦＰＧＡ（Field Programable Gate Array）が用いられるが、ＦＰＧＡは、回路情報をコンフィギュレーションすることで、内部の回路の結線を自由に再構成されるため、必要に応じた機能に変更することができる。
【００２０】
なお、回路情報をプログラマブル論理回路が読み込み再構成することをコンフィギュレーションと言い、ローカルメモリが回路情報を格納することをロードと呼んでいる。
【００２１】
ＦＰＧＡは、自由度を高めるための冗長性があり、ユーザ回路としての集積度がＡＳＩＣ（Application Specific Integrated Circuit）には及ばないが、ソフトウエアのような書き換え自由度と、ＡＳＩＣに近い高速処理が実現できる特徴がある。ＦＰＧＡは書き換え速度が遅いが、プログラマブル論理回路の中では比較的大規模な集積回路を搭載することができるため、膨大な開発費がかかり開発リスクの高いＡＳＩＣのための事前回路検証や、少ロットの製品向けで、プログラマブル論理回路の利用が増えている。
【００２２】
ワークメモリ１２は、プログラマブル論理回路１１で処理する処理データを一時的に格納するようになっている。例えば、ワークメモリ１２は、一般的に大容量のＳＤＲＡＭや、高速アクセスが可能なＳＲＡＭなどでよい。また、プログラマブル論理回路１１に内蔵されていてもよい。
【００２３】
メモリ制御手段１３は、拡張手段１０が処理する処理データを他の拡張手段１０またはホスト２０に転送するようになっている。
【００２４】
また、拡張手段１０は、プログラマブル論理回路１１にコンフィギュレーション回路を有し、さらにホスト２０と通信するインタフェース回路を備え、プログラマブル論理回路１１のコンフィギュレーション中に、インタフェース回路（図示していない）、ワークメモリ１２、およびコンフィギュレーション回路が停止しない構成としてもよい。
【００２５】
ホスト２０は、メインメモリ２１、ＣＰＵ２２、情報管理手段２３、スケジュール管理手段２４、選択手段２５、およびメモリ制御手段２６によって構成されている。
【００２６】
メインメモリ２１は、アプリケーションプログラムを記憶するようになっている。ＣＰＵ２２は、メインメモリ２１に記憶されたアプリケーションプログラムを実行するようになっている。
【００２７】
情報管理手段２３は、拡張手段１０の静的情報および動的情報（拡張手段１０の情報）を取得し管理するようになっている。
【００２８】
スケジュール管理手段２４は、情報管理手段２３が管理する拡張手段１０の情報と、アプリケーションプログラムから取得した情報とを解析して、利用可能な拡張手段１０を決定し、選択手段２５およびＣＰＵ２２に動作指示を出すようになっている。
【００２９】
選択手段２５は、スケジュール管理手段２４からの指示によって利用可能な拡張手段１０を選択し、選択した拡張手段１０にＣＰＵ２２からの指示や処理データを転送するとともに、プログラマブル論理回路１１の制御やコンフィギュレーションを行うようになっている。
【００３０】
メモリ制御手段２６は、ＣＰＵ２２からの指示によってメインメモリ２１と特定の拡張手段１０に搭載されたワークメモリ１２間の処理データをＣＰＵ２２の介在無しに転送を行うようになっている。
【００３１】
図２は、図１で説明した情報処理装置のハードウエア構成の一例を示す図である。
【００３２】
図２に示すように、ホスト２０を構成する部材は、ＣＰＵ２２と、ＳＲＡＭ（Static Random Access Memory）などからなるメインメモリ２１と、ハードディスク（ＨＤＤ）などの大容量記憶媒体２７と、図１で説明したホスト２０を構成する手段として機能するチップセット２８である。
【００３３】
チップセット２８は、拡張手段１０や入出力への通信経路となるＰＣＩ（Peripheral Component Interconnect）バスやＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）インタフェースを介して他の機器と通信することができる。また、チップセット２８には、プログラマブル論理回路１１が搭載された拡張手段１０や、通信インタフェース３０が接続されている。チップセット２８には、ＤＭＡコントローラや、ＰＣＩバスを拡張するコントローラであるＰＣＩブリッジなどの機能が含まれている。
【００３４】
通信インタフェース３０には、インターネットやＵＳＢなど、外部装置への接続が可能となっており、外部装置として記憶装置３１や、図示していないファイルサーバやアプリケーションサーバなどと接続できる。なお、通信インタフェース３０は、必ずしも図のようにＰＣＩバスまたはＰＣＩｅバスに接続されている必要はなく、チップセット２８に直接接続されていて、ホスト２０に含まれるように構成してもよい。
【００３５】
アプリケーションプログラムやプログラマブル論理回路１１の回路情報などは、通常大容量記憶媒体２７に格納されているが、通信インタフェース３０を通じてアプリケーションサーバ等からダウンロードされることも可能である。また、外部装置は、通信インタフェース３０を通じて、アプリケーションプログラムの実行をホスト２０に指示すると共に、アプリケーションプログラムの実行に必要な処理データをホスト２０に転送することもできる。
【００３６】
以上のように構成された本発明の第１の実施の形態に係る情報処理装置の処理について説明する。図３は、本発明の第１の実施の形態に係る情報処理装置の情報管理手段の処理を示すフローチャートである。
【００３７】
まず、情報管理手段２３に電源が投入されると処理が開始され（ステップＳ１）、情報管理手段２３は、拡張手段１０が情報処理装置１００に新規に追加されたものか否かを判定する（ステップＳ２）。拡張手段１０が新規に追加された場合、情報管理手段２３は、全ての拡張手段１０の静的情報を取得して保存する(ステップＳ３)。静的情報は、拡張手段１０の動作状況に関するものではなく、拡張手段１０の性能に関する情報である。また、ステップＳ２で、情報管理手段２３は、電源が投入直後などの初期化処理を行っているかを判定し、初期化処理を行っている場合、ステップＳ３の処理を行う。
【００３８】
次に、情報管理手段２３は、前回の動的情報を取得した時点から一定時間ｔが経過したか否かを判定し（ステップＳ４）、一定時間ｔが経過した場合、全ての拡張手段１０の動的情報を取得して保存する(ステップＳ５)。動的情報は、アプリケーションプログラムの実行に伴って拡張手段１０が動作することで動的に変化する情報である。
【００３９】
以上の説明では、情報管理手段２３が拡張手段１０から静的情報や動的情報を取得するとしたが、逆に拡張手段１０が主体となって定期的に情報管理手段２３に静的情報や動的情報を発信したり、プログラマブル論理回路１１やワークメモリ１２の動作開始や終了などのイベント毎に、情報管理手段２３に更新した静的情報や動的情報を出力してもよい。
【００４０】
次に、ＣＰＵ２２またはスケジュール管理手段２４から静的情報や動的情報の提供を求められていた場合には(ステップＳ６)、情報管理手段２３は、保存している最新の静的情報や動的情報をＣＰＵ２２またはスケジュール管理手段２４に提供する(ステップＳ７)。以降、情報管理手段２３はステップＳ２〜ステップＳ７を繰り返す。
【００４１】
ここで、静的情報および動的情報の例を図４に示す。静的情報としては、拡張手段１０を特定する"ＩＤ"と、搭載されているプログラマブル論理回路１１のタイプを示す"タイプ"と、プログラマブル論理回路１１の回路規模を示す"回路規模"と、プログラマブル論理回路１１の処理能力を示す"処理能力"と、ワークメモリ１２の容量を示す"メモリ"などがある。以下に詳細に説明する。
【００４２】
"ＩＤ"では、拡張手段１０を個々に特定できる重複しない番号または名前が表現されている。"ＩＤ"は、個々の拡張手段１０に割り振られているシリアルナンバーでも構わないし、電源投入後やリセット時の初期化時や、拡張手段１０が新しく追加された時に、自動的に割り付けられた番号でも構わない。
【００４３】
"タイプ"には、ＦＰＧＡなどのプログラマブル論理回路１１のカテゴリが設定されている。それぞれのプログラマブル論理回路１１としては、同じカテゴリの回路を使用しなくてもよい。カテゴリが異なれば、回路の内部構成、回路情報のフォーマット、処理言語などがそれぞれ異なる。さらに、プログラマブル論理回路１１として使用する製品によっても、ピン配置などコンパイル条件が異なるため、プログラマブル論理回路１１として、それぞれカテゴリの異なる回路を使用しても、それぞれのプログラマブル論理回路１１で共用可能な回路であることが望ましい。"タイプ"に設定されるカテゴリの名称としては、例えば、プログラマブル論理回路１１に使用する回路の形名を登録しておく。プログラマブル論理回路１１に使用する製品が数種程度しかなければ、具体的なピン数や速度オプションなど細かい情報までを"タイプ"に設定する必要はない。
【００４４】
"回路規模"は、プログラマブル論理回路１１のハードウエア規模を示している。プログラマブル論理回路１１にＦＰＧＡを用いる場合は、最小単位であるＬＥ：Logic Elementで規模を表せばよい。なお、ＬＥは、レジスタやセレクタなどから構成された予め部品が固定されたユーザロジック回路で、その中の設定の変更も可能である。
【００４５】
ＦＰＧＡの具体例としては、米国ＡＬＴＥＲＡ社のＣｙｃｌｏｎｅやＳｔｒａｔｉｘなどがあり、図５に示すようにＦＰＧＡの内部構成の概要が開示されている。図５に示すＦＰＧＡは、入出力バッファなどのＩＯエレメント（ＩＯＥ）５１、角にはクロック生成用のＰＬＬ（Phased Locked Loop）５２、中心部にはマルチプライヤ群５３が並び、チップの大部分はＬＥ群からなるロジックアレイ５４と内蔵ＲＡＭのメモリ５５からなる。その他に２次元の配線層があり、この配線を自由に変更してロジックアレイ５４、メモリ５５、ＰＬＬ５２、ＩＯＥ５１を互いに接続することで、所望の機能が実現される。
【００４６】
"処理能力"では、代表的な処理の処理速度を複数示している。例えば、画像処理分野ではＪＰＥＧの圧縮速度やフィルタ処理速度など、使用頻度の高いものや特徴的なものが設定される。プログラマブル論理回路の特性によって、得意な処理と不得意な処理が存在するため、一概に１つの処理速度で判断できないことに対応するために、例えば、得意な処理の速度と不得意な処理の速度など、速度を表す複数の数値データが設定される。
【００４７】
"メモリ"では、拡張手段１０に搭載されているワークメモリ１２の容量を示している。Ａ４用紙６００ｄｐｉのカラー画像だと、ビットマップファイルの容量は１００ＭＢにもなり、プログラマブル論理回路１１で処理する際の演算精度を考慮すると、演算精度に応じたワークメモリ１２のメモリ容量が必要になる。処理が不可能と判断するか、もしくは画像を切り分けて処理させるかの判断をする際に、メモリ容量の大きさが判断基準となる。
【００４８】
次に、動的情報の例について説明する。
【００４９】
"動作フラグ"では、拡張手段１０の動作状態を示している。拡張手段１０の動作状態を常に監視することが必要になるため、"動作フラグ"の動作状態としては、例えば、動作中、メモリ利用中、停止中などの状態がある。動作中の状態としては、回路情報に基づいてプログラマブル論理回路１１をコンフィギュレーションしている状態であったり、プログラマブル論理回路１１での処理を目的に処理データをワークメモリ１２に転送中の状態であったり、実際にプログラマブル論理回路１１で処理中の状態であったり、処理後の処理データを他のメモリに転送中の状態がある。
【００５０】
また、メモリ制御手段１３によりメモリ間の情報転送が容易にでき、また後述するように拡張手段１０上のプログラマブル論理回路１１とメモリ制御手段１３を別に構成することにより、プログラマブル論理回路１１の動作とは別に、ワークメモリ１２のみ独立してホスト２０や別の拡張手段１０が利用することも可能である。別の拡張手段１０が利用している場合には、"動作フラグ"をメモリ利用中の状態に設定する。また、この場合には前述した静的情報の"メモリ"パラメータは、動的情報として扱ったほうがよく、利用可能な容量から、既に利用されている容量、または利用の可能性のある容量を差し引いた値を示すとよい。それ以外でプログラマブル論理回路１１もワークメモリ１２も使用していない場合は、"動作フラグ"を停止中の状態に設定する。
【００５１】
"処理開始時刻"では、プログラマブル論理回路１１での処理が開始された時刻を示している。時刻でなくＣＰＵ２２の内部の処理が開始された時点からカウントするカウンタ値でも構わない。スケジュール管理手段２４でどの拡張手段１０を選択するか判断する際、この情報を利用してどの程度の処理時間が残っているかを計算し予想するための情報として利用できる。なお、ＩＤがＢおよびＣの拡張手段１０はプログラマブル論理回路１１が動作していないので、データはない。
【００５２】
"搭載回路ＩＤ"では、プログラマブル論理回路１１が複数の回路を集積する集積回路で構成されている場合、集積している回路ＩＤが設定される。回路ＩＤで示す回路には、現在コンフィギュレーションされていてすぐ利用可能な"コンフィグ中"と、未だコンフィギュレーションの"未コンフィグ"となる状態がある。ＩＤがＣの拡張手段１０は、まだ１つもコンフィギュレーションしていないことを示している。以上のように、情報管理手段２３は、常に最新の拡張手段１０の動的情報および静的情報を管理している。
【００５３】
図６は、本発明の第１の実施の形態に係る情報処理装置のスケジュール管理手段の処理を示すフローチャートである。なお、概要としては、スケジュール管理手段２４は、アプリケーションプログラムのヘッダ部に設定されたＨＷモジュールのリストや回路情報の実装条件に関する情報を取得し、取得した情報と情報管理手段２３から提供される利用可能な拡張手段１０の情報とを比較し、比較した結果、適正なＨＷモジュールと拡張手段１０の組合せを決定する。以下に、図６を参照しながら説明する。
【００５４】
まず、例えば図示しないユーザインタフェースを通じて、ユーザからアプリケーションプログラムの起動を指示されると、ＣＰＵ２２は大容量記憶媒体２７に格納されているアプリケーションプログラムをメインメモリ２１上に展開すると同時に、スケジュール管理手段２４が、展開されたアプリケーションプログラムを起動する（ステップＳ１１）。
【００５５】
このとき、アプリケーションプログラムで使用するデータのサイズや、タイプ（拡張子）などの情報が、スケジュール管理手段２４に引き渡されると、スケジュール管理手段２４は、どの拡張手段１０を割り当てるか否かを判断する。なお、ステップＳ１１では、ユーザからの直接指示でスケジュール管理手段２４が起動する場合でなく、他のプログラムから連動して起動した場合でも構わない。
【００５６】
ここで、アプリケーションプログラムの構成を図７に示す。図７（Ａ）に示したように、アプリケーションプログラムはヘッダ部と本体部に分かれている。本体部には、一連のアプリケーション処理を行うメインプログラム部分と、その個々の処理を関数レベルで表したモジュールとが含まれている。
【００５７】
このモジュールには２種類あり、プログラムをＣＰＵ２２で処理するソフトウエアモジュール（以下、ＳＷモジュールという）であり、プログラマブル論理回路１１を搭載した拡張手段１０を利用してプログラムをハードウエアで処理するハードウエアモジュール（以下、ＨＷモジュールという）である。
【００５８】
ＨＷモジュールには、特定されたプログラマブル論理回路１１の回路情報、回路のＩＤ番号を指定してコンフィギュレーションを指示する命令、処理データの転送命令、およびプログラマブル論理回路１１の制御を行う命令などが格納されている。
【００５９】
なお、回路情報は、アプリケーションプログラムと別に格納されているとよい。回路情報は、特定のアプリケーションプラグラムに限定されているのではなく、プログラマブル論理回路１１に固有のものではあるが、汎用的に機能するため、他のアプリケーションプログラムからでも利用できる。回路情報が、特定の場所に格納されて利用されるようにしておくだけでも構わないが、ＨＷモジュールが必要とするハードウエア処理とプログラマブル論理回路１１の回路情報との関連付けがなされていてもよい。
【００６０】
図７（Ｂ）に示すように、アプリケーションプログラム間で共通の回路のＩＤ（図では（２）、（３）と記載）と、そのＩＤで識別される回路の回路情報とが実装条件として管理されているとよい。その実装条件をスケジュール管理手段２４が取得し、例えば、スケジュール管理手段２４は、性能のよい実装条件をもつ拡張手段１０を優先に割り当てるなど、拡張手段１０を特定する判断材料として用いることができる。その他、回路規模を示す数値や、規定のデータ量を処理する参考時間なども実装条件に含めてもよい。
【００６１】
特許文献１では、ＨＷモジュールが存在する処理は必ずＳＷモジュールと１対１に対応され、どちらを利用するかの判断として、ＨＷモジュールがプログラマブル論理回路にコンフィギュレーションされていれば、処理速度が速いという前提で、必ずＨＷモジュールを選択する。一方、本発明の第１の実施の形態では、ＳＷモジュールとＨＷモジュールとが、どちらか一方しかない処理に関しても、スケジュールを決定するために判断がなされる。
【００６２】
ＨＷモジュールの情報は全て利用するが、ＨＷモジュールの情報だけでなく、それらと同じ処理を行えるＳＷモジュールの情報や、同じ処理としてＨＷモジュールが用意されていないＳＷモジュールに関しても、スケジュール管理手段２４は、拡張手段１０に割り当てるＨＷモジュールについて処理データの引継ぎを行う可能性のあるものを同様に判断材料にする。このように、判断材料を幅広くしたことで、複数の利用可能な拡張手段１０が接続されている場合に、処理データの転送の負荷を減らし、拡張手段１０のリソースを効率的に利用することができる。
【００６３】
アプリケーションプログラムのヘッダ部には、ＨＷモジュールと回路情報の関係や、処理データの転送という観点で幾つかの情報を設定しておく。図７（Ａ）に示した例では、本体部の処理の一部として処理１から４に注目し、それらが時系列的に進んでいくものとする。処理１はＳＷモジュールしかなく、処理２はＨＷモジュールしかない。処理３はＳＷモジュールとＨＷモジュールの両方が選択利用可能で、処理４はＳＷモジュールのみ用意されている場合を例とした。
【００６４】
ヘッダ情報は、スケジュール管理手段２４による拡張手段１０に対するＨＷモジュールの割り当ての際に、必要な情報である。また、図７（Ａ）に示したヘッダ情報には、第１のヘッダ情報および第２のヘッダ情報を図示している。
【００６５】
第１のヘッダ情報としては、少なくともＨＷモジュールを持つ処理について、ＨＷモジュールとその回路情報との対応を示すＩＤなどのリンク先情報を格納しておく。この時、同じ処理としてＳＷモジュールも選択できる場合はそれも設定しておく。これにより、ＳＷで代用できない処理を特定できるので、優先的に拡張手段１０に割り当てるＨＷモジュールを特定できる。図７（Ａ）では、"ＨＷモジュール２：（２）"がＨＷモジュールしかない場合であり、"ＨＷ／ＳＷモジュール３：（３）"が両モジュールがある場合である。（２）や（３）がＩＤを表している。
【００６６】
第２のヘッダ情報としては、ハードウエアモジュールまたはソフトウエアモジュールを表すモジュール同士の処理データの転送の関係を表すデータ転送リストをヘッダに設定しておく。ここでは、処理の番号とモジュール番号が一致しているので、"モジュールｘ⇒ｙ"と言う表現でモジュールｘで処理された処理データを、次にモジュールｙで処理するということを表している。
【００６７】
これらのモジュールの関係の設定については、アプリケーションプログラムを熟知している担当者が設定してもよいが、関数の相互関係を解析するソフトウエアもあるので、自動的にコンパイル時に生成されるようにしてあってもよい。
【００６８】
次に、図６を参照しながら説明すると、ステップＳ１１の処理の後、スケジュール管理手段２４は、アプリケーションプログラムのヘッダ部分にある情報を取得する（ステップＳ１２）。
【００６９】
スケジュール管理手段２４は、ヘッダ部の情報からＨＷモジュールの有無を判定し（ステップＳ１３）、ＨＷモジュールが無ければ拡張手段１０を利用することはないため、何も動作しない。また、ＨＷモジュールがある場合、スケジュール管理手段２４は、情報管理手段２３から、拡張手段１０の情報を取得する（ステップＳ１４）。
【００７０】
スケジュール管理手段２４は、ヘッダ部から得たＨＷモジュールに関する情報と、情報管理手段２３から得た利用可能な拡張手段１０の情報に基づいて、拡張手段１０とＨＷモジュールの組合せを決定する（ステップＳ１５）。なお、ＨＷモジュールが複数あり、利用可能な拡張手段１０も複数ある場合は、複数の組合せを決定する。この決定方法について以下に説明する。
【００７１】
図８は、本発明の第１の実施の形態に係る情報処理装置のスケジュール管理手段の組合せ決定処理を示すフローチャートである。ここでは、スケジュール管理手段２４は、基本的にヘッダ部から得られた情報に基づいて、拡張手段１０とＣＰＵ２２との間で処理データの転送の負荷を減らすように、また利用できる拡張手段１０を効率的に運用できるようにＨＷモジュールを拡張手段１０に割り当てるように処理する。
【００７２】
まず、スケジュール管理手段２４は、ステップＳ１３でヘッダ部の情報を取得した際に、各処理のうち、ＨＷモジュールしかできない（同処理がＳＷモジュールを持たない）処理があるかどうかを調べる（ステップＳ２１）。
【００７３】
ＨＷモジュールしかできない処理がある場合は、スケジュール管理手段２４は、全てのプログラマブル論理回路１１の回路情報に添付されている実装条件と利用可能な拡張手段１０とを比較しながら適切な拡張手段１０をその処理に割り当てる（ステップＳ２２）。
【００７４】
ステップＳ２２では、ＨＷモジュールしかできない処理が複数ある場合、スケジュール管理手段２４は、各ＨＷモジュール分繰返して、実装条件と利用可能な拡張手段１０とに基づいてＨＷモジュールに対応する拡張手段１０を割り当てる。また、スケジュール管理手段２４は、拡張手段１０とＣＰＵ２２との間で処理データの転送の負荷を減らすように、即ち、ＨＷモジュール間で処理データの受け渡しがあるＨＷモジュールを優先的に利用可能な拡張手段１０それぞれに割り当てるのがよい。こうして、複数の拡張手段１０のワークメモリ１２同士が、処理データの直接受け渡しを積極的に行うことで、ＣＰＵ２２とメインメモリ２１との間のバス帯域を圧迫することを避けられる。ただし、利用可能な拡張手段１０が少ない場合には、回路規模が大きいものや、処理時間が長いものなどを優先的に割り当てる方がよいこともある。
【００７５】
スケジュール管理手段２４は、ＨＷモジュールしかできない処理において、それぞれのＨＷモジュールに拡張手段１０の割り当てしたか否か、または、一定時間経過後にＨＷモジュールに割り当て可能な拡張手段１０があるか否かを判断する（ステップＳ２３）。
【００７６】
ステップＳ２３で、スケジュール管理手段２４は、ＨＷモジュールに割り当てる利用可能な拡張手段１０の中に実装条件に合うものが無かったり、拡張手段１０の数が不足したり、全ての拡張手段１０の割り当てが可能でなかった場合など、それぞれのＨＷモジュールに拡張手段１０の割り当てが決定していない、かつ、一定時間経過後にＨＷモジュールに割り当て可能な拡張手段１０が無い場合には、その旨をＣＰＵ２２に報告して（ステップＳ２４）、スケジュール管理手段２４の動作は終了する。その後のＣＰＵ２２の処理としては、一旦アプリケーションプログラムを中断させ、拡張手段１０の空き状況を監視する。実装不可だった拡張手段１０が利用可能となった時点でアプリケーションプログラムを再開させればよい。この時、ユーザに対し拡張手段１０のリソース不足を報告し、拡張手段１０の増設を促すようにしてもよい。
【００７７】
なお、図８のフローチャートには図示しないが、スケジュール管理手段２４は、全てのＨＷモジュールを拡張手段１０に割り当てることができなかったとしても、時系列的に早いＨＷモジュールを優先的に実装条件に合う拡張手段１０に割り当てていき、アプリケーションプログラムを実行可能な処理まで進めて中断させておき、割当が不可だったＨＷモジュールが実装条件に合う新たな拡張手段１０に割り当てられた段階で、処理を再開させればよい。
【００７８】
ステップＳ２３で、ＨＷモジュールのそれぞれに拡張手段１０を割り当てることが決定したか、もしくは一定時間経過後に全ての拡張手段１０の割り当てが可能であった場合、スケジュール管理手段２４は、アプリケーションプログラムのＨＷモジュールのうち、未だ割り当てていないＨＷモジュールがあるかどうかを調べる（ステップＳ２５）。
【００７９】
ステップＳ２５で、割り当てていないＨＷモジュールが無ければ、スケジュール管理手段２４は、全てのＨＷモジュールに対し拡張手段１０の割り当てが決定できたとし、処理がステップＳ３１に進む。割り当てていないＨＷモジュールがあれば、処理がステップＳ２６に進む。
【００８０】
次に、スケジュール管理手段２４は、現時点における情報管理手段２３が管理する拡張手段１０の情報に基づいて、未だ割り当てていないＨＷモジュールに割り当てる利用可能な拡張手段１０がまだ残っているかどうかを調べる（ステップＳ２６）。
【００８１】
利用可能な拡張手段１０が残っていなければ、各ＨＷモジュールに対し全ての拡張手段１０の割り当てが決定されたとして、処理がステップＳ３１に進む。なお、ステップＳ２１から進んできた場合は、ＨＷモジュールによる処理が一切無いとして、ＣＰＵ２２に報告がなされる。
【００８２】
ステップＳ２６で、利用可能な拡張手段１０がまだある場合、スケジュール管理手段２４は、既に優先して割り当てられたＨＷモジュールの処理データと関連のあるＨＷモジュールがあるかどうかを拡張手段１０の情報に基づいて調べる（ステップＳ２７）。
【００８３】
関連のあるＨＷモジュールが無い場合、処理がステップＳ２９に進むが、関連のあるＨＷモジュールがある場合、スケジュール管理手段２４は、関連のあるＨＷモジュールを利用可能な拡張手段１０に割り当てを決定していく（ステップＳ２８）。関連のあるＨＷモジュールが複数あれば、スケジュール管理手段２４は、拡張手段１０の割り当てを繰り返す。この場合に、スケジュール管理手段２４は、ヘッダ情報を元に、拡張手段１０の回路規模が大きいものや、拡張手段１０の処理時間が長いものなどを優先的に割り当てるとよい。
【００８４】
スケジュール管理手段２４は、再度、未だ割り当てていないＨＷモジュールに割り当てる利用可能な拡張手段１０がまだ残っているかどうかを調べる（ステップＳ２９）。残ってなければ、各ＨＷモジュールに対し全ての拡張手段１０の割り当てが決定されたとして、処理がステップＳ３１に進む。
【００８５】
ステップＳ２９で、利用可能な拡張手段１０がある場合、スケジュール管理手段２４は、まだ、割り当てが決定していないＨＷモジュールを拡張手段１０に順次割り当てていく（ステップＳ３０）。この場合も、ヘッダ情報を元に、回路規模が大きいものや、処理時間が長いものなどを優先的に割り当てるとよい。これで利用できる全ての拡張手段１０をＨＷモジュールに割り当てたものが、ＨＷモジュールと拡張手段１０の組合せとして決定される（ステップＳ３１）。
【００８６】
なお、利用可能な拡張手段１０とは、拡張手段１０の動作フラグが停止中の場合とすることが普通であるが、さらに、効率的に拡張手段１０を利用するため、動作フラグが動作中の場合であっても、動作中の拡張手段１０が実行するアプリケーションプログラムの使用開始時刻か一定時間以上経過して処理の終了が間近だと予想される場合に、スケジュール管理手段２４は、その動作中の拡張手段１０を、選択候補として割り当ててもよい。
【００８７】
また、ステップＳ２２、Ｓ２８、Ｓ３０では、ＨＷモジュールを利用可能な拡張手段１０に割り当てているが、コンフィギュレーションすべき回路情報が既に搭載されている拡張手段１０が利用可能であった場合には、スケジュール管理手段２４は、その利用可能な拡張手段１０を優先的に割り当ててもよい。
【００８８】
さらに、ＨＷモジュールを拡張手段１０に割り当てる際、アプリケーションプログラムが扱う処理データ量が、情報管理手段２３から提供される拡張手段１０のメモリ容量より大きい場合、スケジュール管理手段２４は、ワークメモリ１２を確保する目的で複数の拡張手段１０を割り当てることもできる。
【００８９】
次に、図６を参照しながら説明すると、スケジュール管理手段２４は、拡張手段１０とＨＷモジュールの組合せの結果をＣＰＵ２２および選択手段２５に報告する（ステップＳ１６）。ＣＰＵ２２では、実行しようとしているアプリケーションプログラムにおいて、同じ処理に対しＳＷモジュールとＨＷモジュールが共に用意され、どちらでも実行可能な場合、ステップＳ１６の報告によってこの処理がＨＷモジュールで実行することに決定されているなどが判り、この報告を処理の進行に反映する。スケジュール管理手段２４は、新たに別のアプリケーションプログラムが立ち上がった場合に、再度ＨＷモジュールと拡張手段１０との関連付けを行う。
【００９０】
選択手段２５は、スケジュール管理手段２４から拡張手段１０とＨＷモジュールの組合せの報告を受け、ＨＷモジュールの番号（ＩＤ）と拡張手段１０の番号（ＩＤ）を関連付けて管理する。また、選択手段２５は、スケジュール管理手段２４からの指示による拡張手段１０を選択し、選択した拡張手段１０が新たなものであれば、新たな拡張手段１０に搭載されているプログラマブル論理回路１１に対し、ＨＤＤなどから回路情報を取得し、プログラマブル論理回路１１に直接コンフィギュレーションを行う。
【００９１】
拡張手段１０にローカルメモリが搭載されている場合、選択手段２５は、ローカルメモリにも回路情報をロードする。なお、既にプログラマブル論理回路１１に所望の回路情報が搭載されている場合は、新たにコンフィギュレーションする必要は無い。
【００９２】
選択手段２５は、ＣＰＵ２２、スケジュール管理手段２４、メモリ制御手段２６からＨＷモジュール番号で各種制御指示が与えられたとき、拡張手段１０を特定して制御指示やデータ転送の指示を行う。
【００９３】
拡張手段１０同士のデータ転送もメモリ制御手段１３が行うことができる上、後述するが、プログラマブル論理回路１１がコンフィギュレーション中でも拡張手段１０同士がデータ転送を可能にする方法があるため、複数の拡張手段１０が特定の拡張手段１０のメモリを共有することもできる。拡張手段１０のメモリを共有することは、拡張手段１０のプログラマブル論理回路１１をアクセラレータとしての使い方だけでなく、メモリの増設用途としても利用できるようになる。
【００９４】
アプリケーションプログラムを実行している際に、ＣＰＵ２２は、ＳＷモジュールを処理した結果の処理データを、拡張手段１０に転送する場合がある。処理データは、メインメモリ２１上にあり、ＣＰＵ２２は、転送元としてメインメモリ２１のアドレスとデータ量、転送先のＨＷモジュール番号をメモリ制御手段２６に通知する。メモリ制御手段２６は、選択手段２５を介して転送先となるＨＷモジュールを割り当てた拡張手段１０に搭載されているメモリ制御手段１３と連携し、ＣＰＵ２２のレジスタを介さずにメインメモリ２１から直接ワークメモリ１２に処理データを転送する。
【００９５】
処理データが少ない情報量であれば、メモリ制御手段２６は、メインメモリ２１からＣＰＵ２２のレジスタに処理データを登録し、選択手段２５の指示をうけ、処理データをメモリ制御手段１３を経由して拡張手段１０上のワークメモリ１２に転送する。なお、ＣＰＵ２２のレジスタに大量の処理データを登録することは、ＣＰＵ２２の負担になるだけでなく、処理データの転送速度も遅くなるので避けるべきである。
【００９６】
拡張手段１０がＨＷモジュールを処理した結果の処理データも同様にメインメモリ２１や他の拡張手段１０上のワークメモリ１２に転送することができる。この時の転送先は、例えば、データ転送リストを参照してＣＰＵ２２が決定する。
【００９７】
拡張手段１０での処理が終了すると、プログラマブル論理回路１１は、選択手段２５を介してスケジュール管理手段２４に処理終了の報告をする。スケジュール管理手段２４によって次に実行されるモジュールが予め定められているので、ＣＰＵ２２は、モジュールに対応するワークメモリ１２またはメインメモリ２１に処理データを転送する。
【００９８】
次に実行されるモジュールがＳＷモジュールであれば、ＣＰＵ２２は、転送先をメインメモリ２１に設定する。前の拡張手段１０と異なる拡張手段１０がＨＷモジュールを実行するのであれば、ＣＰＵ２２は、転送先としてそのＨＷモジュールの番号を選択手段２５に指定し、対応する拡張手段１０のワークメモリ１２に転送されるよう指定する。
【００９９】
また、データ転送は、一般的なＤＭＡ（Direct Memory Access）転送を用いて構わない。その他のデータ転送としては、異なるメモリを共有化して扱える技術として、Star FabricやＡＳＩ（Advanced Switching Interconnect）などのFabric接続を利用することも考えられる。
【０１００】
ホスト２０のメモリ制御手段２６はチップセット２８に搭載されているのがよいが、別チップでももちろんよい。拡張手段１０のメモリ制御手段１３の実装については、後述する。メモリ制御手段１３またはメモリ制御手段２６は、転送元と転送先、データ転送量などをお互いに設定することで、ＣＰＵ２２に負荷をかけずにメモリ間のデータ転送を実行する。また、処理データの転送元のメモリ制御手段１３またはメモリ制御手段２６が必ずしも設定する必要はない。よって、ＣＰＵ２２が異なる拡張手段１０のワークメモリ１２間のデータ転送を指示することもできる。
【０１０１】
以上説明したように、情報処理装置１００は、拡張手段１０の静的情報または動的情報の少なくても１つに基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段１０それぞれを割り当てるスケジュールを決定するため、ＣＰＵ２２と拡張手段１０とが連携しながらアプリケーションプログラムを効率的に実行することができると共に、複数のアプリケーションプログラムが並列して実行されている場合であっても、アプリケーションプログラムを適切に実行することができる。また、情報処理装置１００は、拡張手段１０の増設によってアプリケーションプログラムを実行するための処理効率の向上が容易に行える。
【０１０２】
特許文献１に記載の情報処理装置は、プログラマブル論理回路のコンフィギュレーション時間を擬似的に短縮してアプリケーション処理を高速に行うとしているが、１つのプログラマブル論理回路の効率的な利用方法に限られたものであるが、情報処理装置１００は、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段１０それぞれを割り当てるスケジュールを決定するため、拡張手段１０とホスト２０との間で処理データを転送することが少なくなって、処理データの転送時間を削減できる。
【０１０３】
また、特許文献１に記載の情報処理装置は、メインメモリとプログラマブル論理回路との間でデータ転送を行うため、マルチタスクやマルチスレッド、別のアプリケーションの並行立上げなど、メインメモリ上で複数の処理が実行されている場合にメインメモリにアクセスが集中し、メインメモリ２１とＣＰＵ２２との間のバスがデータ転送を行う上で高速化のボトルネックになっていたが、本実施の形態１における情報処理装置１００によれば、拡張手段１０同士で処理データを転送するので、メインメモリ２１とＣＰＵ２２との間のバスに負荷をかけることを緩和できる。
【０１０４】
さらに、本実施の形態における情報処理装置１００は、ワークメモリ１２を配備しているのに対して、特許文献１では、プログラマブル論理回路周辺に回路情報を格納するローカルメモリを配することは記載されているが、処理データを格納するワークメモリの記載がないため、メインメモリをＰＣＩバス経由で利用するのか、ローカルメモリを共用するのか、プログラマブル論理回路に内蔵されているのか不明である。また、特許文献２に記載の情報処理装置は、画像処理プロセッサ毎にワークメモリが配置されておらず、データ転送を行う際にメインメモリを利用するとすれば、複数の画像処理プロセッサが共通の入出力を通じて、共通のメインメモリに対しアクセスが集中してしまう。しかしながら、本実施の形態における情報処理装置１００によれば、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段１０それぞれを割り当てるスケジュールを決定するため、拡張手段１０とホスト２０との間で処理データを転送することが少なくなって、メインメモリに対しアクセスが集中せずに、処理データの転送時間を削減できる。
【０１０５】
（本発明の第２の実施の形態）
本発明の第２の実施の形態では、アプリケーションプログラムの具体的な例を挙げて情報処理装置１００の具体的な動作について説明する。図９は、図７に示したアプリケーションプログラムの例である。図９（Ａ）では、アプリケーションプログラムをプログラミング言語で表現した例を示している。なお、図７と同様に各処理に用意されているモジュールも同じとする。
【０１０６】
図９に示したアプリケーションプログラムの処理順序は、図９（Ｂ）に示すように、時系列的に、処理１、処理２、処理３、処理２、処理３、処理４の順で処理される。また、処理１から処理４までに対応するモジュール（ＣＰＵ２２が実行するＳＷモジュール、拡張手段１０が実行するＨＷモジュール）が表現されている。
【０１０７】
スケジュール管理手段は、各ＨＷモジュールを拡張手段１０に割り当てる処理を図８で説明したフローチャートに従って行う。なお、拡張手段１０は少なくとも１つ停止中の状態のものがある前提とする。
【０１０８】
まず、ステップＳ２１で、スケジュール管理手段２４は、複数のＨＷモジュールの中から、ＨＷモジュールしか無い（ＳＷモジュールがない）処理２があることを判定し、ステップＳ２２で、優先的に拡張手段１０をＨＷモジュール２に割り当てる。
【０１０９】
次に、ステップＳ２３で、スケジュール管理手段２４は、ＨＷモジュール２に拡張手段１０を割り当てたと判断し、ステップＳ２５で、未だ割り当てていないＨＷモジュール３があると判定するため、ステップＳ２６で、未だ割り当てていないＨＷモジュールに割り当てる利用可能な拡張手段１０が残っているか否か判定する。他の拡張手段１０に停止中の状態のものが無い場合、スケジュール管理手段２４は、処理３の組合せとしてＳＷモジュールを選択せざるを得ない。
【０１１０】
ＳＷモジュールを選択せざるを得ない場合、処理データの流れは、図９（Ｂ）のように点線で示すようになるが、処理２と処理３の繰返し、拡張手段１０とＣＰＵ２２との間で処理データが引き継がれる際に、ＰＣＩバスなどを経由してメインメモリ２１にデータ転送が頻繁に行われるため、バス帯域の圧迫が余儀なくされる。
【０１１１】
一方、拡張手段１０に停止中の状態のものがあった場合、ステップＳ２７で、スケジュール管理手段２４は、ＨＷモジュールの中から、すでに割当が決定されたＨＷモジュール２と処理データの受け渡しの観点で関連があることを調べ、ステップＳ２８で、関連がある処理３のＨＷモジュール３を未使用の拡張手段１０に割り当てる。処理３のＨＷモジュール３を拡張手段１０に割り当てた場合の処理データの流れは、太い実線で示してあるが、処理２と処理３の繰返しにおける処理データがメインメモリ２１に転送されないことで、メインメモリ２１に負荷を与えることなく処理が行われる。
【０１１２】
（本発明の第３の実施の形態）
本発明の第１の実施の形態では、情報処理装置１００のプログラマブル論理回路１１としてＦＰＧＡを主に説明したが、本発明の第３の実施の形態では、ＦＰＧＡの代わりにＤＲＰ（Dynamic Reconfigurable Processor）などを用いる場合について説明する。
【０１１３】
ＤＲＰにも幾つかの種類があるが、例えば、日本のアイピーフレックス社がＤＡＰＤＮＡという製品を市販しており、詳しく説明はしないが、これもＦＰＧＡと同様に論理回路やメモリなどを記述する回路情報をコンフィギュレーションすることにより、内部回路の結線を自由に再構成することができる。
【０１１４】
特にＤＲＰは、再構成できる回路規模は小さいながら、回路情報を格納する目的で"ｂａｎｋ"と呼ばれる内部メモリを搭載しており、ここに回路情報をロードできる。一旦、ロードされた回路情報で内部回路を再構成するコンフィギュレーションは、ＦＰＧＡに比べると非常に高速にできる。また、ＤＲＰは、ソフトウエアの実装に近い開発が可能であることが特徴である。
【０１１５】
ＤＲＰは、図４の静的情報に示すようにＩＤがＣである拡張手段１０に図示している。"回路規模"では、ＦＰＧＡのＬＥに相当する最小単位がＰＥになる。また、内部メモリ（ｂａｎｋ）に関しては"３ｂａｎｋ"なので、３面分の回路情報を蓄積し、高速に切換えることができることを意味している。さらに"搭載回路ＩＤ"では内部メモリに複数の回路情報を格納でき、しかもこれらについてはコンフィギュレーション時間が非常に短くすぐ利用できるので、コンフィギュレーション中の状態としては、複数の回路ＩＤがあってもよい。
【０１１６】
また、図８で説明したステップＳ２２およびステップＳ２８において、スケジュール管理手段２４は、拡張手段１０とＣＰＵ２２との間で処理データの転送の負荷を減らすように、即ち、ＨＷモジュール間で処理データの受け渡しがあるＨＷモジュールを優先的に利用可能な拡張手段１０それぞれに割り当てる。このとき、拡張手段１０に搭載されているプログラマブル論理回路１１がＤＲＰのように複数の回路情報を格納でき瞬時に書き換えられる場合、スケジュール管理手段２４は、時系列的に連続する複数のＨＷモジュールを、ＤＲＰを有する拡張手段１０に割り当てるとよい。こうすることで、処理データがワークメモリ１２に格納されたまま、拡張手段１０は、プログラマブル論理回路１１を書き換えればよいだけになる。
【０１１７】
（本発明の第４の実施の形態）
本発明の第１の実施の形態では、情報処理装置１００の拡張手段１０にプログラマブル論理回路１１が用いられており、拡張手段１０の搭載する高速処理デバイスとして、回路が再構成できるプログラマブル論理回路であると表現しているが、実際には再構成できるプログラマブル論理回路に限ることではない。
【０１１８】
ここで、プログラマブル論理回路の代わりに画像処理プロセッサを用いる場合について説明する。画像処理プロセッサは、特定の機能に最適化されたハードウエアデバイスだが、ＦＰＧＡなどと同様に、外部から専用プログラムをロードすることで、機能を切換えることができる。画像処理プロセッサは、ホスト２０で用いている汎用のＣＰＵとは全く異なるアーキテクチャのため、ＨＷモジュールを処理するのが適切である。
【０１１９】
また、プログラマブル論理回路の代わりにＣｅｌｌプロセッサを用いる場合について説明する。Ｃｅｌｌプロセッサは、汎用ＣＰＵとは異なり複数の特殊なコプロセッサが連携してプログラムを処理するものである。Ｃｅｌｌプロセッサは、専用に設計された特殊なプログラムでないとハードウエア性能を十分発揮しないため、ＨＷモジュールを処理するのが適切である。
【０１２０】
このように、本発明の実施の形態では、プログラマブル論理回路でなくとも、特殊言語または特殊コンパイル条件を必要とする高速処理が可能なハードウエアであれば、プログラマブル論理回路の代わり適応できる。
【０１２１】
（本発明の第５の実施の形態）
本発明の第１の実施の形態では、情報処理装置１００の拡張手段１０を図１で説明したが、本発明の第５の実施の形態では、拡張手段１０の具体的な構成について説明する。
【０１２２】
拡張手段１０は、プログラマブル論理回路１１と、ワークメモリ１２と、メモリ制御手段１３と、場合によっては回路情報を格納するローカルメモリ１６からなることは既に前述の通りである。拡張手段１０の構成例として、既にＦＰＧＡメーカーなどから市販されている一般的なＦＰＧＡ評価ボードの構成例を図１０に示す。
【０１２３】
プログラマブル論理回路１１（ＦＰＧＡ）がＰＣＩバスに接続できるように、ＩＰ（Intellectual Property）として提供されるＰＣＩ（−Ｌｏｃａｌ）ブリッジ１４をＦＰＧＡ内部に実装する。プログラマブル論理回路１１（ＦＰＧＡ）は、ＳＲＡＭやＳＤＲＡＭなどのワークメモリ１２と直接接続されており、ワークメモリ１２に処理データを格納できるようになっている。また、プログラマブル論理回路１１（ＦＰＧＡ）に、ＤＭＡＣ（DMA Controller）１５のＩＰを実装すれば、ＰＣＩバス経由でメインメモリ２１とワークメモリ１２間のＤＭＡ転送が可能となる。
【０１２４】
プログラマブル論理回路１１（ＦＰＧＡ）のコンフィギュレーションは、別途用意された専用のＪＴＡＧ（Joint European Test Action Group）規格のＩ／ＦやＵＳＢのＩ／Ｆを利用して行われることが可能である。ローカルメモリ１６へのロードも同様に、専用のＩ／Ｆを介して行われることが可能である。しかし、本発明の実施の形態では、従来のＦＰＧＡの主用途であったＡＳＩＣの事前回路検証用ではなく、製品として複数の拡張手段１０を搭載することにあるので、コンフィギュレーションのためにＰＣＩバスでない専用Ｉ／Ｆを接続する事は避けたい。
【０１２５】
そこで、ＰＣＩバス経由でコンフィギュレーションを行う方法を提案する。１つめの方法を図１１に示す。図１０と同様に、プログラマブル論理回路１１（ＦＰＧＡ）に、ＰＣＩブリッジ１４やＤＭＡＣ１５の回路をＩＰなどで搭載することに加えて、ロード回路１７も搭載する。ロード回路１７は、ＰＣＩ経由で取得した回路情報をローカルメモリ１６に転送するものである。直接ＰＣＩバス経由でＦＰＧＡにコンフィギュレーションすることはできないが、ローカルメモリ１６へ回路情報をロード回路１７にロードしておき、その後ＰＣＩバス経由でＦＰＧＡにリセットもしくはローカルメモリ１６からのコンフィギュレーションを指示することで、プログラマブル論理回路１１（ＦＰＧＡ）は新しい回路情報で再構成される。
【０１２６】
２つ目の方法を図１２に示す。１つ目の方法を改善した構成である。ＨＷモジュールの回路情報がコンフィギュレーションされ、頻繁に機能が変更されるＦＰＧＡとは別に、ＰＣＩインタフェース、ＤＭＡＣ１５、ロード回路１７、また図示しないがメモリコントローラ（ＤＭＡＣに内蔵でも構わない）の固定化した機能をもったインタフェースデバイス１８を別途搭載する。
【０１２７】
インタフェースデバイス１８は、常にＰＣＩバス経由での通信可能なので、ＰＣＩバス経由での直接的なＦＰＧＡコンフィギュレーションも可能であり、もちろんローカルメモリ１６へのロードも可能である。
【０１２８】
メモリコントローラは、常に動作しているので、ワークメモリ１２を常にリフレッシュすることができ、ＨＷモジュールの変更でＦＰＧＡの回路情報が書き換わる際もワークメモリ１２の情報が保持される。また、ＤＭＡＣ１５も常に使用可能であることから、ＨＷモジュールの変更でＦＰＧＡがコンフィギュレーションされている時間を有効に使い、ワークメモリ１２から他のメモリへのＤＭＡ転送を行うことも可能である。
【０１２９】
インタフェースデバイス１８は、機能を変更しないので、ＡＳＩＣでも構わないし、プログラマブル論理回路でも構わない。また、プログラマブル論理回路のチップと同じパッケージに格納された、マルチチップ構成であればなおよい。
【０１３０】
（本発明の第６の実施の形態）
本発明の第１〜第５の実施の形態では、情報処理装置１００のメモリ制御手段１３としてＰＣＩバスを利用するＤＭＡＣを例に説明したが、その他には、通信路（バス）としてＰＣＩバスの部分にＳＦ（Star Fabric）やＡＳＩ（Advanced Switching Interface）を利用することもできるので、ＳＦを利用した構成例を図１３に示す。
【０１３１】
ＳＦの場合、ＰＣＩ  Ｂｒｉｄｇｅの代わりに、ＳＦブリッジ３３を搭載する。またＡＳＩの場合はＡＳＩブリッジの搭載となる。なお、これらのブリッジデバイスは、チップセット２８や、ＦＰＧＡに内蔵されていてもよい。
【０１３２】
ホスト２０のＣＰＵ２２もしくは、拡張手段１０に搭載されたプロセッサが、これらのブリッジデバイスに設定を行うことで、各ノード（ここではホスト２０または個々の拡張手段１０）間のデータ転送を高速に容易に行うことができる。その他、バスの引き回し距離を延長したり、接続可能なノードを増やしたり、ノードに搭載されたメモリを共有化することができる。
【０１３３】
ＳＦやＡＳＩは、ホスト２０以外のノードを端末として接続するだけでなく、同等の能力を持つノードとして認識することもできる。その場合には、各ノードにある程度の処理が行えるプロセッサが必要となるが、拡張手段１０のプログラマブル論理回路１１（例えばＦＰＧＡ）に内蔵されたＣＰＵ２２や、ＤＲＰ内蔵のＣＰＵ２２、Ｃｅｌｌなどで対応できる。このような接続には、ＳＦやＡＳＩの通信路（バス）上にＳＦスイッチ３２を設けることで、Ｆａｂｒｉｃ接続となる。
【０１３４】
本発明の第６の実施の形態に係る情報処理装置は、ホスト２０と複数の拡張手段１０を接続する通信路がＳＦであるため、拡張手段１０を離れた場所に設置したり、拡張手段１０の接続可能数をＰＣＩに比べ増やせたり、拡張手段１０にプロセッサが搭載された環境での高速通信またはメモリの共有化が行えたりする。また、通信路がＡＳＩになれば、拡張手段１０を離れた場所に設置したり、拡張手段１０の接続可能数をＰＣＩｅに比べ増やせたり、拡張手段１０にプロセッサが搭載された環境では高速通信またはメモリの共有化が行えたりする。
【産業上の利用可能性】
【０１３５】
以上のように、本発明は、主制御手段および拡張手段を利用してアプリケーションプログラムを適切に実行することができるという効果を有し、サーバなどのコンピュータ、複写機、プリンタ、多機能プリンタ（ＭＦＰ：Multi Function Printer）などに有用である。
【図面の簡単な説明】
【０１３６】
【図１】本発明の第１の実施の形態に係る情報処理装置のブロック図
【図２】本発明の第１の実施の形態に係る情報処理装置のハードウエア構成の一例を示す図
【図３】本発明の第１の実施の形態に係る情報処理装置の情報管理手段の処理を示すフローチャート
【図４】静的情報および動的情報の例を示す図
【図５】ＦＰＧＡの内部構成の概要を示す図
【図６】本発明の第１の実施の形態に係る情報処理装置のスケジュール管理手段の処理を示すフローチャート
【図７】アプリケーションプログラムの構成を示す図
【図８】本発明の第１の実施の形態に係る情報処理装置のスケジュール管理手段の組合せ決定処理を示すフローチャート
【図９】アプリケーションプログラムの例を示す図
【図１０】ＤＭＡＣおよびＰＣＩブリッジを実装した拡張手段の構成例を示す図
【図１１】ロード回路を実装した拡張手段の構成例を示す図
【図１２】インタフェースデバイスを実装した拡張手段の構成例を示す図
【図１３】本発明の第１の実施の形態に係る情報処理装置にＳｔａｒ  Ｆａｂｒｉｃを実装した場合のブロック図
【符号の説明】
【０１３７】
１０  拡張手段
１１  プログラマブル論理回路
１２  ワークメモリ
１３  メモリ制御手段
１４  ＰＣＩブリッジ
１５  ＤＭＡＣ
１６  ローカルメモリ
１７  ロード回路
１８  インタフェースデバイス
２０  ホスト
２１  メインメモリ
２２  ＣＰＵ（主制御手段）
２３  情報管理手段
２４  スケジュール管理手段
２５  選択手段
２６  メモリ制御手段
２７  大容量記憶媒体
２８  チップセット
３０  通信インタフェース
３１  記憶装置
３２  ＳＦスイッチ
３３  ＳＦブリッジ
１００  情報処理装置
【図１】
2009070265.tif 000003
【図２】
2009070265.tif 000004
【図３】
2009070265.tif 000005
【図４】
2009070265.tif 000006
【図５】
2009070265.tif 000007
【図６】
2009070265.tif 000008
【図７】
2009070265.tif 000009
【図８】
2009070265.tif 000010
【図９】
2009070265.tif 000011
【図１０】
2009070265.tif 000012
【図１１】
2009070265.tif 000013
【図１２】
2009070265.tif 000014
【図１３】
2009070265.tif 000015