(57)【要約】【課題】複数個の処理モジュールからなる一連の処理の実行に当たって、各処理モジュールをソフトウエアで実行するか、ハードウエアで実行するかを効率良く決定して、効率のよい処理ができるようにする。【解決手段】アプリケーションプログラム１００を、複数個のソフトウエアモジュールＳＭで構成する。プログラム内のソフトウエアモジュールが行う処理と同じ処理を行うハードウエアモジュールを取得する手段を備える。処理モジュールの実行時に、実行する処理のハードウエアモジュールのプログラマブル論理回路への再構成が終了しているか否かを判別し、再構成が終了しているときには、処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する。【選択図】        図１
2006107532.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵが実行するソフトウエアプログラムで処理が記述されたソフトウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記処理プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述した処理モジュールであるハードウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ハードウエアモジュールを入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする情報処理システム。
【請求項２】
処理の一部分が、プログラマブル論理回路で処理可能であり、前記プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行する情報処理システムであって、
前記処理プログラム内のハードウエアモジュールが行う処理と同じ処理を、ＣＰＵが実行するソフトウエアプログラムで記述した処理モジュールであるソフトウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ソフトウエアモジュールを入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする情報処理システム。
【請求項３】
ＣＰＵが実行するソフトウエアプログラムで処理が記述されたソフトウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記処理プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述した処理モジュールであるハードウエアモジュールをネットワークを通じて入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする情報処理システム。
【請求項４】
処理の一部分が、プログラマブル論理回路で処理可能であり、前記プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行する情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理を、ＣＰＵが実行するソフトウエアプログラムで記述した処理モジュールであるソフトウエアモジュールをネットワークを通じて入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする情報処理システム。
【請求項５】
請求項１〜請求項４のいずれかに記載の情報処理システムにおいて、
前記処理プログラムの実行処理と並行してハードウエアモジュールによるプログラマブル論理回路の再構成を行う
ことを特徴とする情報処理システム。
【請求項６】
請求項１〜請求項４のいずれかに記載の情報処理システムにおいて、
前記ハードウエアモジュールを示す識別符号が、前記処理プログラム内に記述されているとともに、前記プログラマブル論理回路に再構成されている前記ハードウエアモジュールの識別符号を記録する識別符号記録手段を備え、
前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記識別符号記録手段を参照して、前記識別符号記録手段に、実行しようとする処理のハードウエアモジュールの識別符号が記録されているときには、当該ハードウエアモジュールの再構成は終了していると判別して、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする情報処理システム。
【請求項７】
請求項１または請求項３に記載の情報処理システムにおいて、
前記ソフトウエアモジュールが行う処理と同じ処理を行うハードウエアモジュールを示す識別符号が、前記処理プログラム内に記述されており、
前記プログラマブル論理回路に再構成されたハードウエアモジュールの識別符号を記録する識別符号記録手段を設けるとともに、
前記ハードウエアモジュールの回路情報を一時記憶するローカルメモリを、前記プログラマブル論理回路のコンフィギュレーションメモリと直接的なデータの通信が可能な位置に設け、
前記ハードウエアモジュール取得手段は、
前記処理プログラム内の識別符号に基づいて前記ハードウエアモジュールを入手して前記プログラマブル論理回路に再構成するものであり、かつ、前記入手した前記ハードウエアモジュールの回路情報を前記ローカルメモリにも転送して記憶させる
ことを特徴とする情報処理システム。
【請求項８】
請求項２または請求項４に記載の情報処理システムにおいて、
前記ハードウエアモジュールを示す識別符号が、前記処理プログラム内に記述されており、
前記プログラマブル論理回路に再構成されたハードウエアモジュールの識別符号を記録する識別符号記録手段を設けるとともに、
前記ハードウエアモジュールの回路情報を一時記憶するローカルメモリを、前記プログラマブル論理回路のコンフィギュレーションメモリと直接的なデータの通信が可能な位置に設け、
前記処理プログラム内の識別符号に対応する前記ハードウエアモジュールの回路情報を、前記記憶装置あるいはネットワークから取得して、前記プログラマブル論理回路に再構成するとともに、前記ローカルメモリにも転送して記憶する
ことを特徴とする情報処理システム。
【請求項９】
請求項７または請求項８に記載の情報処理システムにおいて、
前記識別符号記録手段に記録された前記ハードウエアモジュールの使用履歴に基づいて、前記ハードウエアモジュールの回路情報を、前記プログラマブル論理回路のコンフィギュレーションメモリから前記ローカルメモリに転送して記憶するようにしたことを特徴とする情報処理システム。
【請求項１０】
請求項７〜請求項９のいずれかに記載の情報処理システムにおいて、
前記プログラマブル論理回路内のコンフィギュレーションメモリの全領域と同等な記憶容量を単位として、前記ローカルメモリのメモリ空間を複数の単位に分割して構成し、
前記分割されたメモリ空間の単位によって、前記コンフィギュレーションメモリと前記ローカルメモリとの間で、前記ハードウエアモジュールの回路情報を通信することを特徴とする情報処理システム。
【請求項１１】
請求項７〜請求項１０のいずれかに記載の情報処理システムにおいて、
前記ハードウエアモジュールの複数個と、それらの配線情報とによって前記プログラマブル論理回路に同時に構成される機能回路を一つの回路情報とし、
前記コンフィギュレーションメモリ、または、前記分割されたローカルメモリの任意のメモリ空間に対応して前記ハードウエアモジュールの回路情報を記憶することを特徴とする情報処理システム。
【請求項１２】
請求項７〜請求項１０のいずれかに記載の情報処理システムにおいて、
使用された前記ハードウエアモジュールの識別符号を記録する識別符号記録手段を設け、
前記コンフィギュレーションメモリまたは前記分割されたローカルメモリの任意のメモリ空間に格納されている前記ハードウエアモジュールの情報を、前記識別符号によって、前記識別符号記録手段に記録しておくことを特徴とする情報処理システム。
【請求項１３】
ＣＰＵが実行するソフトウエアプログラムで処理が記述されたソフトウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムによる情報処理方法であって、
前記情報処理システムのハードウエアモジュール取得手段が、前記処理プログラム内のソフトウエアモジュールが行う処理と同じ処理を前記プログラマブル論理回路に再構成する回路情報で記述した処理モジュールであるハードウエアモジュールを取得する工程と、
前記情報処理システムの実行モジュール決定手段が、前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの前記処理モジュールの実行時に決める工程であって、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する工程と、
を備えることを特徴とする情報処理方法。
【請求項１４】
前記ハードウエアモジュールは、ネットワークを通じて入手することを特徴とする請求項１３に記載の情報処理方法。
【請求項１５】
処理の一部分が、プログラマブル論理回路で処理可能であり、前記プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行する情報処理システムによる情報処理方法であって、
前記情報処理システムのソフトウエアモジュール取得手段が、プログラム内のハードウエアモジュールが行う処理と同じ処理を、ＣＰＵが実行するソフトウエアプログラムで記述した処理モジュールであるソフトウエアモジュールを入手して、実行プログラム用記憶部に格納する工程と、
前記情報処理システムの実行モジュール決定手段が、前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める工程であって、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する工程と、
を備えることを特徴とする情報処理方法。
【請求項１６】
前記ソフトウエアモジュールは、ネットワークを通じて入手することを特徴とする請求項１５に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、少なくとも処理の一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能である情報処理システムおよび情報処理方法に関するものであり、特に、プログラマブル論理回路の有効な活用方法に関するものである。
【背景技術】
【０００２】
デジタル回路装置、特に特定用途向け集積回路（ＡＳＩＣ）の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などで構成されたプログラマブル論理回路が広く使われている。
【０００３】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路装置を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、特許文献１（米国特許第４，７００，１８７号）の発明のような電気的に再構成可能なプログラマブル論理回路装置は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路装置は、ますます広く使われるようになってきている。
【０００４】
ところで、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【０００５】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するためにプログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【０００６】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要になる。
【０００７】
この問題を解決するために、米国アトメル社の「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「ＴＨＥ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【０００８】
このようなプログラマブル論理回路を情報処理システムに用いるときの問題は、処理を、プログラマブル論理回路で行う処理と、マイクロプロセッサなどの回路構成を変更できない固定的な論理回路装置で行う処理とで、分離する技術が確立していないことである。
【０００９】
この問題を解決する方法のひとつとして、特許文献２（特開平６−３０１５２２号公報）に開示される計算機の例がある。これを、従来例１として、図３３を参照しながら説明する。
【００１０】
すなわち、図３３の従来例１においては、計算機で実行するソースプログラム１０００は、回路構成を変更できない固定部と、プログラマブル論理回路のように回路構成を変更できる可変部とで構成される。ライブラリ１００１には、固定部の構成に関する情報と、可変部が構成することができる回路の情報が格納されている。
【００１１】
コンパイラ１００２は、ソースプログラム１０００を解析し、ライブラリ１００１を参照しながら、オブジェクトコードと、ハードウエア構成データに変換する。例えば、コンパイラ１００２は、ソースプログラムのフロー解析を行い、関数の頻度を検出し、その検出した頻度に基づいて、呼び出し回数の多い関数をハードウエアで処理する関数として決定し、ハードウエア構成データ１００３を作成し、出力する。
【００１２】
次に、コンパイラ１００２は、ハードウエアで処理すると決めた部分を所定の可変部で処理することを示すコードを生成する。そして、このコードを、残りのソフトウエアで処理する部分に付加してオブジェクトコード１００４を作成し、出力する。計算機１００５は、固定部と、ハードウエア構成データにより構成された可変部とを用いて、オブジェクトコードに応じた処理を実行する。
【００１３】
このようにして、従来例１では、コンパイル時に呼び出し回数の多い関数をハードウエア化することにより処理全体の高速化を図っている。
【００１４】
次に、前記問題を解決する従来例２として、特許文献３（特開平５−１５０９４３号公報）に開示されるコンピュータ装置の場合を説明する。この従来例２においては、プログラマブル論理回路で行う処理と、固定的な論理回路装置で行う処理とに分離された処理を、アプリケーションプログラムとして、情報処理システムとしてのコンピュータ装置で実行する。
【００１５】
この従来例２のコンピュータ装置は、ＣＰＵ、メモリ、プログラマブル論理回路、ハードディスクなどの外部記憶装置、およびその他の入出力インターフェースで構成される。
【００１６】
外部記憶装置には、プログラマブル論理回路の回路データと、アプリケーションプログラムが記憶してある。メモリには、外部記憶装置からアプリケーションプログラムをロードするイニシャルローディングプログラムが記憶してある。
【００１７】
ＣＰＵは、これらのプログラムを実行するとともに、プログラマブル論理回路に回路データを書き込む。プログラマブル論理回路は、ＣＰＵのバスラインに接続され、バスライン上の信号を入力し、論理処理を施してバスラインへ信号を返す。この従来例２における処理手順を、図３４に示す。
【００１８】
まず、実行すべきプログラムファイルを指定する（ステップＳ１）。次に、指定したプログラムファイルに回路データが含まれるか否か判別し（ステップＳ２）、含まれる場合は、回路データ書き込みプログラムをロードして実行し（ステップＳ３）、続いて回路データをロードして（ステップＳ４）、その回路データをプログラマブル論理回路に書き込む（ステップＳ５）。その後、アプリケーションプログラムをロードし（ステップＳ６）、実行する（ステップＳ７）。
【００１９】
指定したプログラムファイルに回路データが含まれていない場合には、ステップＳ２からステップＳ６に飛び、そのまま、アプリケーションプログラムをロードし、実行する。
【００２０】
以上のように、この従来例２の場合、プログラマブル論理回路上の機能を用いる命令実行時に、回路が所定の論理処理を行う。これにより、アプリケーションごとに特殊なハードウエアを設けることなく、必要に応じた論理回路を構成して処理の高速化を図ることができる。
【００２１】
以上に述べた処理の一部分をプログラマブル論理回路で処理する情報処理システムは、ネットワークに接続して利用することができる。その場合の例のひとつとして、特許文献４（特開平９−７４５５６号公報）に開示される画像再生装置を、従来例３として次に示す。
【００２２】
図３５に示すように、この従来例３の画像再生装置は、処理系を再構成することが可能な動画像復号部１１００と、動画像復号部１１００を再構成するためのプログラムと符号化された動画像データとをネットワークＮＴからダウンロードするための受信部１２００と、受信データがプログラムか動画像データかによって伝送先を切り換える切り換え手段１３００と、該プログラムを動画像復号部１１００の構成に変更できる形式に変換するプログラム変換部１４００と、受信部１２００と切り換え手段１３００とプログラム変換部１４００と動画像復号部１１００の制御を行うための制御部１５００とからなる。
【００２３】
動画像復号部１１００は、量子化された画像データを逆量子化するものであってその逆量子化処理内容を変更できる逆量子化部１１０１と、変換された画像データを逆変換するものであってその逆変換処理内容を変更できる逆変換部１１０２とを備える。
【００２４】
プログラム変換部１４００は、前記プログラムを、動画像復号部１１００の構成を変更できる形式に変換する第１プログラム部分（ハードウエア処理部分）と、動画像再生時において制御部１５００が行う第２プログラム部分（ソフトウエア処理部分）とに分割する分割部１４０１と、第１プログラム部分を動画像復号部１１００の構成を変更できる形式に変換する第１の変換部（ハードウエアコンパイラ）１４０２と、第２プログラム部分を制御部１５００が解読して処理を実行できる形式に変換する第２の変換部（ソフトウエアコンパイラ）１４０３とを備える。
【００２５】
この画像再生装置は、ネットワークＮＴから、動画像再生用のプログラムと符号化された動画像データとを受信し、次にように動作する。
【００２６】
まず、論理記述言語で記述された再生アルゴリズムプログラムを受信部１２００で受信する。受信データは、伝送切り換え手段１３００を通じてプログラム変換部１４００に伝送され、分割部１４０１でハードウエア処理部分とソフトウエア処理部分とに分割される。
【００２７】
ハードウエア処理部分は、第１の変換部１４０２に渡され、プログラマブル論理回路（ＦＰＧＡ）を書き換えることができる形式（ビットストリーム）に変換され、逆量子化部１１０１と逆変換部１１０２とを制御部１５００からの制御によって書き換える。また、ソフトウエア処理部分は、第２の変換部１４０３に渡され、プロセッサで処理できる形式に変換された後、制御部１５００に渡される。
【００２８】
このように構成された図３５の画像再生装置に、ネットワークＮＴから動画像データが送られると、受信部１２００で受信し、切り換え手段１３００によって動画像復号部１１００に伝送され、復号データとして出力される。逆量子化部１１０１と逆変換部１１０２とを、回路構成が変更可能な素子で構成することにより、異なるアルゴリズムによって再生される画像データにも対応することができる。
【００２９】
以上、従来例１から従来例３で示した例では、プログラマブル論理回路でハードウエア処理される部分と、マイクロプロセッサなどでソフトウエア処理される部分とが固定的に決められているが、ハードウエア処理をソフトウエア処理で置き換える例を、従来例４として次に説明する。
【００３０】
非特許文献１（「Proceedings IEEE Symposium ｏｎ FPGAs for Custom Computing Machines（１９９６）の１９５ページから２０３ページ」）に記載されている「Supporting  FPGA  Microprocessors  through  Retargetable  Software  Tools」には、動作中に書換え可能なプログラマブル論理回路を、プロセッサとして使用する技術（ＤＩＳＣ）で用いられるプログラムのデバッグ方法が記述されている。
【００３１】
この従来例４の論文では、ソフトウエアのデバッグを短時間で行うために、ハードウエアで処理するルーチンを、デバック時にソフトウエアで行うことが示されている。これは、プログラム実行時には繰り返し処理されるルーチンも、デバッグ時は１回処理するのみでよいので、回路規模の大きなハードウエアモジュールを、プログラマブル論理回路に処理時間よりも長い時間をかけて再構成して実行するよりも、ソフトウエアで実行してデバックする方が効率がよいためである。デバック時にどちらで処理するかはデバッグ用のプログラムで指示する。
【００３２】
上記の先行技術文献は、次の通りである。
【特許文献１】米国特許第４，７００，１８７号
【特許文献２】特開平６−３０１５２２号公報
【特許文献３】特開平５−１５０９４３号公報
【特許文献４】特開平９−７４５５６号公報
【非特許文献１】Proceedings IEEE Symposium ｏｎ FPGAs for Custom Computing Machines（１９９６）の１９５ページから２０３ページ
【発明の開示】
【発明が解決しようとする課題】
【００３３】
しかしながら、以上説明した、処理の一部分をプログラマブル論理回路で処理する情報処理システムに関する従来例１〜４は、次のような問題がある。
【００３４】
従来例１では、プログラマブル論理回路で実行する処理は、ひとつのプログラム内で、呼び出し回数の多い関数というように一元的に決めている。このため、情報処理システムが複数のプログラムを用いて複数の処理を一連の処理として一度に行うときには、プログラマブル論理回路を用いた処理を効率的に利用できない欠点がある。
【００３５】
例えば、ひとつのプログラム内での呼び出し回数は少ないが、一連の処理として順次に実行される処理全体で共通に数多く呼び出される関数が存在する場合には、プログラマブル論理回路で処理を実行した方が効率的に良い。しかし、従来例１では、一つのプログラム内で呼び出し回数の少ない当該関数の処理をプログラマブル論理回路で実行するようには決定することができない。
【００３６】
また、関数によっては、対応する回路情報のサイズが大きいため、プログラマブル論理回路に、回路情報を再構成する時間が長くかかり、たとえ呼び出し回数が多くともソフトウエア処理のほうが処理時間が短い場合もあるが、従来例１では、そのような関数処理であっても、呼び出し回数が多いことからプログラマブル論理回路による処理と決定してしまうことになる。
【００３７】
また、従来例２では、アプリケーション毎にハードウエアで処理する部分が予め定められ、そのハードウエアでの処理部分を、プログラム開始前にプログラマブル論理回路に実装している。このため、ハードウエア処理を必要としないソフトウエア処理も回路構成が終了するまで開始されないという問題がある。
【００３８】
特に、回路データのサイズが大きいためプログラマブル論理回路への書き込み時間が長いときには、ハードウエア処理よりも処理速度の遅いソフトウエアで処理したほうが、全体の処理時間が短い場合もある。
【００３９】
すなわち、従来例２の場合には、個々のハードウエア処理とソフトウエア処理の処理時間だけに注目し、プログラマブル論理回路の再構成時間も含めた処理時間全体の短縮を考慮していないことに問題がある。また、個々のプログラム毎にプログラマブル論理回路を再構成しているので、複数のプログラムを実行するときに共通に用いられる回路も重複して構成されてしまい、非効率であるという問題もある。
【００４０】
従来例３では、ネットワークから論理記述言語で記述されたプログラムをダウンロードするので、画像再生装置内でそのプログラムを回路情報に変換する処理に時間がかかるという問題がある。
【００４１】
すなわち、論理記述言語から回路情報に変換する処理は、論理記述言語からネットリストに変換し、それをデバイスに合わせてテクノロジーマッピングを行い、配置配線のレイアウト処理を施し、さらに、その結果を回路情報に変換する必要がある。特に、配置配線の処理はアルゴリズムが複雑で、時間がかかることが知られている。
【００４２】
つまり、従来例３では、ネットワーク上のサーバに格納されていてクライアントが共有するプログラムに、互換性を持たせる目的で、論理記述言語のような抽象度の高い記述方法を用いるために、クライアントでの前処理量が大きくなり、ハードウエア処理による処理時間の短縮を損なうほどに全体の処理時間が長くなる問題がある。
【００４３】
さらに、従来例３では、プログラムをネットワークから取得しているが、ネットワークでの伝送は、途中で通信が切断し、プログラムをダウンロードできないことも起こり得るため、信頼性の点で問題がある。
【００４４】
また、従来例４では、プログラム実行時には、繰り返し処理回数が１回以上であっても少ない場合は、ハードウエアモジュールをプログラマブル論理回路に実装して処理するよりは、ソフトウエアで処理したほうが処理時間が短くなる可能性もあるが、デバック時のみハードウエア処理をソフトウエア処理で置換している。すなわち、プログラム実行時におけるプログラマブル論理回路の再構成時間も含めた処理時間全体の短縮を考慮していないことに問題がある。
【００４５】
そして、以上の従来例１〜４に共通した問題として、回路情報を取得する時間も含めたプログラマブル論理回路の再構成時間と、一連の処理として実行される複数のプログラムで共通して用いられる処理を考慮しないで、処理をハードウエア処理とソフトウエア処理に一元的に分離していることが挙げられる。
【００４６】
この発明は、以上の点にかんがみ、複数の処理を一連の処理として一度に行う情報処理システムにおいて、プログラマブル論理回路による処理を、プログラマブル論理回路の再構成時間も考慮に入れ、かつ、前記一連の処理全体として効率的な処理ができるように、活用できるようにすることを目的とする。
【課題を解決するための手段】
【００４７】
上記課題を解決するため、請求項１の発明による情報処理システムは、
ＣＰＵが実行するソフトウエアプログラムで処理が記述されたソフトウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ハードウエアモジュールを入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする。
【００４８】
また、請求項２の発明は、
処理の一部分が、プログラマブル論理回路で処理可能であり、前記プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行する情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理を、ＣＰＵが実行するソフトウエアプログラムで記述したソフトウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ソフトウエアモジュールを入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする。
【００４９】
また、請求項３の発明は、
ＣＰＵが実行するソフトウエアプログラムで処理が記述されたソフトウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記処理プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述した処理モジュールであるハードウエアモジュールをネットワークを通じて入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする。
【００５０】
また、請求項４の発明は、
処理の一部分が、プログラマブル論理回路で処理可能であり、前記プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールからなる処理モジュールの複数個で構成される処理プログラムで記述される一連の処理を実行する情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理を、ＣＰＵが実行するソフトウエアプログラムで記述した処理モジュールであるソフトウエアモジュールをネットワークを通じて入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記処理プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記処理プログラムの前記処理モジュールの実行時に決める実行モジュール決定手段と、
を備え、前記実行モジュール決定手段は、
前記処理モジュールの実行時に、前記実行モジュールの選択条件として、前記実行する処理のハードウエアモジュールの前記プログラマブル論理回路への再構成が終了しているか否かを判別し、前記再構成が終了しているときには、前記処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行するように決定する
ことを特徴とする。
【００５１】
上述の構成の各請求項の発明による情報処理システムにおいては、予め、ソフトウエアモジュールまたはハードウエアモジュールの一方が処理プログラム内に記述され、ソフトウエアモジュールあるいはハードウエアモジュールの他方が、システム内の記憶装置部に記憶されている。
【００５２】
この記憶装置部に記憶されているハードウエア（またはソフトウエア）モジュールは、ハードウエア（またはソフトウエア）取得手段により読み出され、プログラマブル論理回路に回路情報が再構成（または記憶部に記憶）される。
【００５３】
実行モジュール決定手段は、処理プログラムの実行時に、ソフトウエアモジュールとハードウエアモジュールのどちらで処理単位を実行するかを決定する。
【００５４】
従来のように、アプリケーションプログラムにおいて、ソフトウエア処理部分と、ハードウエア処理部分とを事前に固定的に決定するものではないので、その実行モジュールの決定時点における、プログラマブル論理回路の再構成時間も考慮に入れた種々の条件に基づいて、プログラムに記述された処理全体として効率のよい実行モジュールを選択するように決定することができる。
【００５５】
そして、請求項３または請求項４の発明においては、ハードウエアモジュールあるいはソフトウエアモジュールはシステム内にはなく、ネットワークを通じて取得するようにされる。
【００５６】
したがって、この請求項３または請求項４の発明の場合には、システム内にハードウエアモジュールを予め記憶する記憶装置部やソフトウエアモジュールを予め記憶しておく記憶装置部を備える必要がなく、システム構成を簡単にできるものである。
【００５７】
そして、もしも、ネットワークの不具合により、ハードウエアモジュールやソフトウエアモジュールのネットワークからの取得が困難な場合であっても、この請求項３または請求項４の発明の場合には、同じ処理内容を実行するソフトウエアモジュールやハードウエアモジュールが存在するので、それらを用いて、処理を中断することなく、継続することが可能である。
【００５８】
また、各請求項の発明においては、実行モジュール決定手段は、処理を実行しようとする時に、その処理に対応するハードウエアモジュールの再構成が終了しているには、ソフトウエア処理に代えて、プログラマブル論理回路によるハードウエア処理を実行するように決定する。
【００５９】
処理時間に関しては、一般に、ハードウエア処理は、ソフトウエア処理よりも速いので、この発明のようにすることにより、全体としての処理時間を短縮することが可能になる。
【００６０】
また、この発明においては、プログラムの開始は、ソフトウエア処理により始め、同時にハードウエアモジュールによるプログラム論理回路への再構成を並行して行うことができる。そして、処理単位の実行時に、プログラマブル論理回路の再構成が完了しているときには、そのプログラマブル論理回路を用いたハードウエア処理を実行するようにする。
【００６１】
例えば繰り返し処理の場合、最初の処理はソフトウエア処理で実行されるが、プログラマブル論理回路の再構成が完了したときからは、同じ処理がハードウエア処理によりなされる。
【００６２】
繰り返し処理だからといって、最初から、プログラマブル論理回路による処理をすべきとして一元的に定める場合には、処理の開始がプログラマブル論理回路の再構成が完了するまで遅れることになるが、この発明の場合には、始めはソフトウエア処理により処理が実行するようにすれば、全体として、処理時間の短縮化が期待ができる。
【発明の効果】
【００６３】
この発明によれば、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアで処理を実行するか、プログラマブル論理回路によるハードウエアで処理を実行するかを、処理を実行しながら柔軟に決定することができ、従来のように、アプリケーションプログラムにおいて、ソフトウエアモジュールとハードウエアモジュールとで、処理する部分を事前に固定的に決定する必要が無い。
【００６４】
また、プログラム論理回路の再構成時間を考慮した最善のソフトウエアモジュールとハードウエアモジュールの組み合わせで処理プログラムを実行することができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【００６５】
また、アプリケーションプログラム中で共通して用いるハードウエアモジュールやソフトウエアモジュールを重複してコンフィギュレーションすることがなくなり、プログラマブル論理回路の再構成時間を最小にすることができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【発明を実施するための最良の形態】
【００６６】
以下、この発明による情報処理システムの幾つかの実施の形態を、図を参照しながら説明する。
【００６７】
［第１の実施の形態］
この発明による、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムの第１の実施の形態の主要な概念構成を図１に示す。
【００６８】
この実施の形態において、対象とするアプリケーションプログラム（単にプログラムという場合もある）１００は、当該プログラムにより実行しようとする一連の処理を複数個の処理に分離し、分離された各処理ごとにモジュールとして構成したものである。このモジュールを、この明細書では処理モジュールと称することとする。
【００６９】
この第１の実施の形態では、プログラム１００を構成する各処理モジュールは、ＣＰＵが処理を実行するソフトウエアプログラムで記述されたものである。このソフトウエアプログラムは、それぞれソフトウエアモジュールＳＭと称することとする。したがって、この実施の形態の場合、アプリケーションプログラム１００は、複数個のソフトウエアモジュールＳＭの集合からなる。
【００７０】
この実施の形態においては、記憶装置２００に、ソフトウエアモジュールＳＭのそれぞれが行う処理と同じ処理をプログラマブル論理回路に再構成する回路情報で記述したモジュール（この明細書では、このモジュールをハードウエアモジュールと称する）ＨＭを保存して用意する。記憶装置２００は、当該情報処理システム内に設けてもよいし、ネットワーク上の記憶装置であってもよい。
【００７１】
この例の場合、プログラム１００は、図２に示すように、ヘッダ部ＨＥＤと、本体部ＰＲＧとからなり、本体部ＰＲＧが前述したように複数個のソフトウエアモジュールＳＭの集合で構成されている。そして、ヘッダ部ＨＥＤには、各ソフトウエアモジュールＳＭと同じ処理をプログラマブル論理回路に再構成する回路情報で記述した、対応するハードウエアモジュールＨＭの識別符号ＩＤが記述されている。
【００７２】
この場合、プログラム１００には、同じ処理を行うソフトウエアモジュールＳＭとハードウエアモジュールＨＭとの対応が付くように識別符号ＩＤが記述されている。例えば、この例では、本体部ＰＲＧの複数個のソフトウエアモジュールＳＭのプログラム上の処理実行順に従った順番で、各ソフトウエアモジュールＳＭに対応するハードウエアモジュールＨＭの識別符号ＩＤが、ヘッダ部ＨＥＤに記述される。
【００７３】
ハードウエアモジュール取得手段３００は、プログラム１００中に記述されている識別符号ＩＤを用いて、ソフトウエアモジュールＳＭが実行する処理と同じ処理を実行するハードウエアモジュールＨＭを、システム内の記憶装置２００から、あるいはネットワーク上の記憶装置２００から取得する。そして、ハードウエアモジュール取得手段３００は、取得したハードウエアモジュールＨＭによる回路をプログラマブル論理回路４００上に再構成する。
【００７４】
プログラム１００のソフトウエアモジュールＳＭによるソフトウエア処理は、ＣＰＵ５００が実行する。
【００７５】
実際のアプリケーションプログラム１００の処理は、処理モジュールごとに、実行モジュール決定手段６００により、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭのいずれで実行するかが選択されて、実行される。この実施の形態では、実行モジュール決定手段は、選択条件設定手段７００に設定されている実行モジュール選択条件に基づいて、どちらのモジュールで処理モジュールを実行するかを決定する。
【００７６】
選択条件設定手段７００には、予め、例えばソフトウエアやハードウエアによる処理時間、メモリ消費量、プログラマブル論理回路の再構成時間などの種々の選択条件項目を想定し、その一つの条件項目あるいは複数個の条件項目を組み合わせて、実行モジュール選択条件を設定することができる。
【００７７】
なお、選択条件設定手段７００は、実行モジュール選択条件をユーザにより設定変更可能なように設けられるものである。したがって、実行モジュール決定手段６００に対して、予め、特定の実行モジュール選択条件が定められて、その選択条件を変えることなく、その選択条件に従って実行モジュールを決定する場合には、この選択条件設定手段７００は、実行モジュール決定手段６００に包含されていることになるので、その場合には、特に設ける必要がなくなる。
【００７８】
実行モジュール決定手段６００での実行モジュールの決定は、この第１の実施の形態では、プログラム実行時であって、各処理モジュールの実行開始時に行う。
【００７９】
［第１の実施の形態のハードウエア構成例］
図３は、この発明の第１の実施の形態の情報処理システム１０のハードウエア構成例を示すブロック図である。この実施の形態の情報処理システム１０においては、ＣＰＵ１１のホストバス１１Ｂに、チップセット１２に含まれるメモリコントローラ（図示せず）を介して、ＤＲＡＭで構成されるメインメモリ１３が接続される。
【００８０】
ホストバス１１Ｂは、また、チップセット１２に含まれるホスト−ＰＣＩバスブリッジ（図示せず）を介して、ＰＣＩバス１４に接続される。ＰＣＩバス１４には、プログラマブル論理回路インターフェース１５を介してプログラマブル論理回路１６と、ハードディスクインターフェース１７を介してハードディスクドライブ１８と、通信インターフェース１９とが接続される。
【００８１】
通信インターフェース１９は、ＬＡＮやインターネットなどのネットワーク２０を介して、プログラマブル論理回路１６に再構成される回路情報が格納されている記憶装置２１に接続される。
【００８２】
ハードディスクドライブ１８により読み書きされるハードディスクには、アプリケーションプログラムが格納されている。また、アプリケーションプログラムは、ネットワーク２０上の記憶装置（サーバ）に格納されている場合もある。
【００８３】
また、ハードディスクドライブ１８のハードディスクには、プログラマブル論理回路１６に再構成される回路情報が格納されている場合もある。この例の場合、ハードディスクドライブ１８により読み書きされるハードディスクは、この情報処理システム１０内の記憶装置を構成する。
【００８４】
この実施例では、ハードウエア取得手段３００と、実行モジュール決定手段６００が、図３で示した情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装される。
【００８５】
次に、プログラマブル論理回路１６の構造を図４に示す。プログラマブル論理回路１６は、図５に示すように、回路情報を格納するためのコンフィギュレーションメモリ１６０と、論理セル１６１と、配線領域１６２と、入出力端子１６３とで構成される。
【００８６】
コンフィギュレーションメモリ１６０は、論理セル１６１内および配線領域１６２内のＳＲＡＭ、ＤＲＡＭなどの書き換え可能なメモリ素子で構成されている。コンフィギュレーションメモリ１６０にアドレスＡＤＲが与えられて、新しい回路情報のデータＤＡが格納されると、この回路情報に従って、論理セル１６１内の回路構成と、論理セル１６１および入出力端子１６３を相互に接続する配線領域１６２の接続状態が再構成される。この一連の動作をコンフィギュレーションと呼ぶ。コンフィギュレーションメモリ１６０の一部分を書き換えることで、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【００８７】
図５に示すように、プログラマブル論理回路１６に再構成されて形成された回路素子１６４に、処理すべきデータが入力され、また、その処理結果が出力される。
【００８８】
［第１の実施の形態による処理の説明］
図６は、この発明の第１の実施の形態における基本的な処理の流れを示すフローチャートである。前述したように、この実施の形態では、ハードウエア取得手段と実行モジュール決定手段が、図３の情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装されており、アプリケーションプログラム１００の開始により、当該ＯＳにより処理が実行される。
【００８９】
以下に説明する例においては、図１の選択条件設定手段７００は設けられず、実行モジュール決定手段６００内に含まれているものとする。そして、この第１の実施の形態では、コンフィギュレーションが完了したプログラマブル論理回路によるハードウエア処理は、一般に、対応するソフトウエア処理よりも高速処理が可能であることから、実行モジュール選択条件として、「実行する処理モジュールに対応するハードウエアモジュールのプログラマブル論理回路１６への再構成が終了しているか否かを判別し、再構成が終了しているときには、処理をハードウエアモジュールにより再構成されたプログラマブル論理回路で実行する」という条件が設定されている。
【００９０】
アプリケーションプログラム１００の実行に先立ち、まず、図２に示したようにプログラム１００内のヘッダ部ＨＥＤに記述されているハードウエアモジュールＨＭの識別符号ＩＤが読み込まれ、プログラマブル論理回路１６上に構成するハードウエアモジュールＨＭがハードウエアモジュール取得手段３００で認識される（ステップＳ１１）。
【００９１】
次に、２つのルーチンが並行して実行される。ひとつは、ハードウエアモジュール取得手段３００によるプログラマブル論理回路１６へのコンフィギュレーションの実行で、もうひとつは、実行モジュール決定手段６００によるプログラムで実行される、処理モジュールごとのソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭの決定およびその処理モジュールの実行である。
【００９２】
ハードウエアモジュール取得手段３００は、先に読み込まれた識別符号ＩＤの最初の識別符号ＩＤに対応するハードウエアモジュールＨＭの回路情報を、情報処理システム１０内の記憶装置１８またはネットワーク２０上の記憶装置２１から、プログラマブル論理回路１６のコンフィギュレーションメモリ１６０に転送し、コンフィギュレーションを実行して、実行モジュール決定手段６００からの問い合わせに対し、コンフィギュレーションの成否を答える（ステップＳ１２）。
【００９３】
そして、ハードウエアモジュール取得手段３００は、最初のハードウエアモジュールＨＭのコンフィギュレーションが完了すると、次のハードウエアモジュールＨＭがあるか否か判断し（ステップＳ１３）、次のハードウエアモジュールＨＭがあれば、ステップＳ１２に戻って、その識別符号ＩＤに対応するハードウエアモジュールＨＭの回路情報を、情報処理システム１０内の記憶装置１８またはネットワーク２０上の記憶装置２１から、プログラマブル論理回路１６のコンフィギュレーションメモリ１６０に転送し、コンフィギュレーションを実行する。
【００９４】
ハードウエアモジュール取得手段３００は、先に読み込んだ識別符号ＩＤのすべてのハードウエアモジュールＨＭについて、上述の処理を実行して、そのコンフィギュレーションを行うようにする。
【００９５】
実行モジュール決定手段６００は、実行しようとする処理モジュールに対応するハードウエアモジュールＨＭのコンフィギュレーションが完了しているか否か、ハードウエアモジュール取得手段３００に問い合わせて判断し（ステップＳ１４）、当該対応するハードウエアモジュールＨＭのコンフィギュレーションが完了していれば、ハードウエアモジュールＨＭによる処理を行い（ステップＳ１５）、コンフィギュレーションが完了していなければ、対応するソフトウエアモジュールＳＭによる処理を実行する（ステップＳ１６）。
【００９６】
そして、当該処理モジュールの処理が終了すると、次の処理モジュールがあるか否か判断し（ステップＳ１７）、次の処理モジュールがあれば、ステップＳ１５に戻り、次の処理モジュールがなければ、このアプリケーションによる処理を終了する。
【００９７】
ここで、ハードウエアモジュール取得手段３００と、実行モジュール決定手段６００との間でのコミュニケーションは、図３のシステム１０においては、具体的には、次のようにしてなされる。
【００９８】
すなわち、ハードウエアモジュールＨＭがプログラマブル論理回路１６上にコンフィギュレーションされると、ＰＣＩバス１４を介してＣＰＵ１１上で稼動するＯＳに検知され、そのＯＳの一部として機能しているハードウエアモジュール取得手段３００から、実行モジュール決定手段６００に通知される。
【００９９】
また、プログラムの処理状況がＣＰＵ１１上で稼動するＯＳで検知され、このＯＳの一部として機能している実行モジュール決定手段６００から、ハードウエアモジュール取得手段３００に対して、ハードウエアモジュールＨＭの回路情報の転送およびコンフィギュレーションの開始や中断が指示される。
【０１００】
以上のようにして、この実施の形態では、処理モジュールの実行をするときに、対応するハードウエアモジュールＨＭが、プログラマブル論理回路１６に再構成されていれば、当該処理モジュールの処理は、ハードウエアモジュールで実行するようにする。
【０１０１】
前述もしたように、通常、プログラマブル論理回路へのコンフィギュレーションのための時間を考慮しなければ、ハードウエアで処理した方が高速処理が可能である。したがって、上述のように、コンフィギュレーションが完了した時点から、そのコンフィギュレーションが完了したハードウエアモジュールで処理を実行することで、アプリケーションプログラムによる一連の処理を高速に行うことができるようになる。
【０１０２】
［処理の具体例の実施例（第１の実施例）］
次に、図７、図８および図９のフローチャートを用いて、第１の実施の形態の処理の具体例である第１の実施例を、以下に説明する。
【０１０３】
図７は、この第１の実施例における、図６のフローチャートに対応する詳細な処理の流れの全体を示したフローチャートである。図８は、図７におけるハードウエアモジュールＨＭのコンフィギュレーションのルーチンのステップＳ２２の詳細なフローチャートを示している。また、図９は、図７におけるソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理ルーチンのステップＳ３２の詳細なフローチャートを示している。
【０１０４】
図７において、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理と、ハードウエアモジュールＨＭのコンフィギュレーションは並行して実行される。
【０１０５】
ここで、この第１の実施例では、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理モジュールをＭ種類行い、これらのＭ種類の処理モジュールからなる一連の処理を、Ｎ回繰り返すものとする。
【０１０６】
図７に示すように、アプリケーションプログラムの実行に先立ち、ハードウエアモジュールの識別符号がアプリケーションプログラムのヘッダ部から読み取られる（ステップＳ１１）。このあと、ハードウエアモジュールＨＭのコンフィギュレーションを行うルーチンＲ２０と、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を行うルーチンＲ３０とが並行して実行される。
【０１０７】
ルーチンＲ２０においては、まず、Ｍ種類のハードウエアモジュールの、何番目までのハードウエアモジュールＨＭがコンフィギュレーションされたかを示す変数ｉを初期化し（ステップＳ２０）、その後、ハードウエアモジュールＨＭのコンフィギュレーションの処理ルーチンＲ４０を実行するステップＳ２２に進む。
【０１０８】
このステップＳ２２のコンフィギュレーションの処理ルーチンＲ４０においては、図８に示すように、ｉ番目のハードウエアモジュールＨＭが、プログラマブル論理回路１６上に存在するかどうかを確認し（ステップＳ４１）、存在すれば、既に構成されていることをＯＳに通知する（ステップＳ４３）。ｉ番目のハードウエアモジュールＨＭが、プログラマブル論理回路１６上に存在しなければ、ステップＳ４２のコンフィギュレーションを行う。
【０１０９】
このステップＳ４２のコンフィギュレーションにおいては、まず、ハードウエアモジュールＨＭの回路情報が、情報処理システム１０内の記憶装置に存在するかを確認し、存在すれば情報処理システム１０内の記憶装置から回路情報を取得し、存在しなければ、ネットワーク２０上の記憶装置２１から回路情報を取得して、コンフィギュレーションを行う。
【０１１０】
そして、ハードウエアモジュールＨＭの構成が終了した時点で、ステップＳ４３に移り、コンフィギュレーションの終了をＯＳに通知し、図７に戻って変数ｉをカウントアップする（ステップＳ２３）。
【０１１１】
ハードウエアモジュールＨＭのコンフィギュレーションが完了する前に、このハードウエアモジュールＨＭに対応する処理が開始される場合には、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を行うルーチンＲ３０で、ソフトウエアモジュールＳＭによる処理が行われるが、ハードウエアモジュールＨＭのコンフィギュレーションは続行される。
【０１１２】
そして、Ｍ種類のハードウエアモジュールＨＭのすべてを、コンフィギュレーションする途中で、アプリケーションプログラム１００により実行される一連の繰り返し処理数をカウントする変数ｊが、ｊ＞Ｎとなったと判別され（ステップＳ２４）、アプリケーションが終了する場合には、Ｍ種類のハードウエアモジュールＨＭのうちの一部は、コンフィギュレーションされない。
【０１１３】
しかし、情報処理システム１０内の記憶装置に余裕があれば、ネットワーク２０上の記憶装置２１から回路情報を取得することを続行することもできる。そのようにすれば、同種のアプリケーションが、その後に実行されるときに、ネットワーク２０からの回路情報の取得が完了しており、その分のアクセス時間を短縮することができる。また、後で、ネットワーク２０から取得しようとしたときに、ネットワーク２０に障害が生じていて、必要なハードウエアモジュールＨＭが取得できない事態になっても、その影響が最小限に押さえられる。
【０１１４】
次に、コンフィギュレーションするべきハードウエアモジュールＨＭが残っているかを確認するために、変数ｉと変数Ｍを比較する（ステップＳ２５）。変数ｉが、変数Ｍと等しいか小さければ、次のハードウエアモジュールＨＭのコンフィギュレーションを開始し、変数ｉが変数Ｍよりも大きければ、すべてのハードウエアモジュールＨＭがプログラマブル論理回路１６上に構成されたことがわかり、図８のコンフィギュレーション処理を終了する。
【０１１５】
次に、図７において、ルーチン２０と並行して実行されるルーチンＲ３０では、まず、一連の繰り返し処理数をカウントする変数ｊが初期化され（ステップＳ３１）、その後、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を実行するルーチンＲ５０のステップＳ３２に移る。
【０１１６】
このステップＳ３２のルーチンＲ５０においては、図９に示すように、まず、Ｍ種の処理モジュールの何番目の処理モジュールによる処理であるかをカウントする変数ｋが初期化される（ステップＳ５１）。
【０１１７】
次に、ｋ番目のハードウエアモジュールＨＭが、プログラマブル論理回路１６上に構成されたかを確認するために、このルーチンＲ５０で、Ｍ種のハードウエアモジュールＨＭのうちの何番目までのコンフィギュレーションが終了したかを示す変数ｉと、前記処理を実行しようとする処理モジュールが、Ｍ種の処理モジュールの何番目であるかの変数ｋとの比較を行なう（ステップＳ５２）。
【０１１８】
変数ｋが変数ｉより小さければ、プログラマブル論理回路１６上に、ｋ番目の処理モジュールに対応するハードウエアモジュールＨＭの構成が終了していることがわかるので、ハードウエアモジュールＨＭで処理を実行する（ステップＳ５３）。
【０１１９】
変数ｋが、変数ｉに等しいか、変数ｉより大きければ、まだ、ｋ番目の処理モジュールに対応するハードウエアモジュールＨＭが、プログラマブル論理回路１６上に構成されていないので、ソフトウエアモジュールＳＭで処理を実行する（ステップＳ５４）。
【０１２０】
次に、処理モジュールが何番目のものであるかの変数ｋをカウントアップし（ステップＳ５５）、次のｋ＋１番目の処理モジュールについて、その前のｋ番目の処理モジュールと同様にしてステップＳ５２からステップＳ５５のステップを実行し、それを、最後のＭ番目の処理モジュールまで前記処理ステップを繰り返す（ステップＳ５６）。そして、最後のＭ番目の処理モジュールについての処理が終了したときには、図７のルーチンに戻る。
【０１２１】
図７においては、繰り返しの変数ｊをカウントアップし（ステップＳ３３）、次の繰り返し処理が開始される。繰り返し処理をＮ回行うとアプリケーションは終了する（ステップＳ３４）。
【０１２２】
以上説明したように、第１の実施例においては、Ｍ種の処理モジュールのＮ回の繰り返しを行う処理のアプリケーションプログラムにおいて、最初は、ソフトウエアモジュールＳＭによる処理が実行されるが、繰り返し処理の間に、Ｍ種のハードウエアモジュールＨＭのコンフィギュレーションが、徐々に完了し、その完了したハードウエアモジュールＨＭが順次に使用される。したがって、繰り返し処理の繰り返しの回数が増加するにつれて、コンフィギュレーションが完了するハードウエアモジュールＨＭの数も増加し、処理速度が徐々に上がり、全体としての処理時間は、短縮化されるものである。
【０１２３】
［第１の実施の形態の処理の他の実施例（第２の実施例）］
次に、この発明の第１の実施の形態を、画像処理に適用したより詳細な実施例（第２の実施例という）について説明する。この第２の実施例では、線形変換処理、ノイズ除去処理および輪郭強調処理の３種の処理を、それぞれ以下に説明するような３種の画像フィルタを用いて画像データについて行うことにより、不鮮明な画像を鮮明にする画像処理を行うようにする。まず、各画像フィルタについて説明する。
【０１２４】
［ノイズ除去処理用フィルタの例の説明］
画像処理のひとつである空間フィルタ処理は、単位画素から構成される画像ファイルの単一もしくは複数画素に対して演算を行う。これは、ある画素（データｘl,m ）の近傍の画素（データｐl,m ）に、マスクデータfilterl,m を掛けて足し合わせ、係数Ｎを乗じたものを処理後の画素値ｘl,m として得る処理として、次の式（１）のように表すことができる。ここで、マスクデータfilterl,m や係数Ｎの値を変えることにより、空間フィルタは様々な処理を実行することが可能である。
【数１】
2006107532.tif 000003
【０１２５】
図１０は、画像にガウス分布の平滑化処理を施してノイズ除去を行うＧａｕｓｓｉａｎフィルタと呼ばれる画像フィルタのマスクデータの例である。中心画素のデータｘl,m およびその近傍の３×３画素内にある８画素のデータｐl,m に、マスクデータの係数filterl,m を掛けて足し合わせ、係数Ｎ（＝１／１６）を乗じて中心画素のデータと置き換える。このフィルタ処理を施すことにより、画像のノイズを除去することができる。
【０１２６】
図１１は、図１０のＧａｕｓｓｉａｎフィルタ処理を実現するソフトウエアモジュールＳｍＡＢＣ００１のプログラムを示すものである。また、図１２は、図１０のＧａｕｓｓｉａｎフィルタ処理を実現するハードウエアモジュールＨｍＡＢＣ００１の回路を示すものである。
【０１２７】
そして、前述もしたように、この場合、ある任意の処理モジュールに対し、同一の入出力仕様を持つソフトウエアモジュールとハードウエアモジュールを対にして持つ。それぞれのモジュールには唯一の識別符号が付けられている。例えば、Ｇａｕｓｓｉａｎフィルタ処理に、「ＡＢＣ００１」という処理を識別する符号を付けるとすれば、ソフトウエアモジュールＳＭには、ソフトウエアモジュールであることを示す接頭語Ｓｍを付けて、ＳｍＡＢＣ００１という識別符号を付け、ハードウエアモジュールＨＭには、ハードウエアモジュールであることを示す接頭語Ｈｍを付けて、ＨｍＡＢＣ００１という識別符号を付けることにする。
【０１２８】
ソフトウエアモジュールＳＭは、例えばＣ／Ｃ＋＋言語などで記述されたソースプログラムをコンパイルしたものであり、ハードウエアモジュールＨＭは、例えば図１２に示すような回路構成を、プログラマブル論理回路１６上に構成する回路情報である。
【０１２９】
図１１は、ＧａｕｓｓｉａｎフィルタのソフトウエアモジュールとなるＣプログラムの一例である。演算を施す元の画像データｐ[l][m]に対し、ｆｏｒ文を用いた二重ループ構成によって、あらかじめ図１０に示すフィルタ係数を代入した配列filter[l][m]を乗算し、累積した後、ビットシフト演算子によって４ビット下位にシフトすることで、１／１６の演算を実現する。
【０１３０】
図１２は、ハードウエアによる、対応するＧａｕｓｓｉａｎフィルタの回路構成の一例である。元の画像ファイルからフィルタ処理を行うマスク領域のうち、ｐ[l-1][m-1]，ｐ[l][m-1]，ｐ[l+1][m-1]の３画素分のデータを、一つのデータとして、ハードウエアモジュールＨＭに転送する。例えば、１画素当たり８ビットのデータであれば、３つのデータを結合して、２４ビットのデータとして転送する。
【０１３１】
転送されたデータは、ハードウエアモジュールのＩＮに入力され、最初のクロックでレジスタ１０１，１０２，１０３に入力される。結合したデータはここで分離されて出力Ｄ１，Ｄ２，Ｄ３とされ、これらの出力Ｄ１，Ｄ２，Ｄ３が、それぞれレジスタ１１１，１１２，１１３および加算器２１１、２１２、２１３に入力される。
【０１３２】
そして、次のクロックで、ｐ[l-1][m]，ｐ[l][m]，ｐ[l+1][m]の３画素分のデータが、同様にして出力Ｄ１，Ｄ２，Ｄ３に現れる。この時点で、加算器２１１，２１２，２１３の出力Ａ１，Ａ２，Ａ３は、それぞれ、
Ａ１＝ｐ[l-1][m-1]＋ｐ[l-1][m]
Ａ２＝ｐ[l][m-1]＋ｐ[l][m]
Ａ３＝ｐ[l+1][m-1]＋ｐ[l+1][m]
となる。
【０１３３】
この加算器２１１，２１２，２１３の出力は、同時に、レジスタ１２１，１２２，１２３および加算器２２１，２２２，２２３に入力されている。
【０１３４】
そして、その次のクロックで、ｐ[l-1][m+1]，ｐ[l][m+1]，ｐ[l+1][m+1]の３画素分のデータが、同様にして、出力Ｄ１，Ｄ２，Ｄ３に現れる。
【０１３５】
このとき、加算器２１１，２１２，２１３Ａ１，Ａ２，Ａ３の出力は、それぞれ、
Ａ１＝ｐ[l-1][m]＋ｐ[l-1][m+1]
Ａ２＝ｐ[l][m]＋ｐ[l][m+1]
Ａ３＝ｐ[l+1][m]＋ｐ[l+1][m+1]
であり、また、加算器２２１，２２２，２２３の出力Ａ４，Ａ５，Ａ６は、それぞれ、
Ａ４＝ｐ[l-1][m-1]＋ｐ[l-1][m]×２＋ｐ[l-1][m+1]
Ａ５＝ｐ[l][m-1]＋ｐ[l][m]×２＋ｐ[l][m+1]
Ａ６＝ｐ[l+1][m-1]＋ｐ[l+1][m]×２＋ｐ[l+1][m+1]
となる。
【０１３６】
ここで、レジスタ１０１，１０２，１０３，１１１，１１２，１１３，１２１，１２２，１３３を動作させているクロックを止め、シフトレジスタ３０１により、１ビット上位にシフトさせることで、加算器２２２の出力Ａ５が２倍されて、シフトレジスタ３０１の出力Ａ７とされる。
【０１３７】
次に、加算器２３１，２３２により、加算器２２１、２２３の出力Ａ４，Ａ６と、シフトレジスタ３０１の出力Ａ７との総和をとり、シフトレジスタ３０２によって、下位に４ビットシフトすることで、１／１６の演算が実行される。以上で、単位マスク領域でのＧａｕｓｓｉａｎフィルタ処理が終了する。以降この処理を繰り返すことで、画像全体の処理が施される。
【０１３８】
以上のように、この実施例では、Ｂｉ−ｎｏｍｉｎａｌフィルタ回路構成によって、Ｇａｕｓｓｉａｎフィルタを実現しているが、他にも様々なアルゴリズムが考えられる。
【０１３９】
［輪郭強調処理用のフィルタの例の説明］
図１３は、２次微分によりエッジを検出するＬａｐｌａｃｉａｎフィルタと呼ばれる画像フィルタに原画像を加えたマスクデータである。このフィルタ処理を施すことにより、画像の輪郭強調を行うことができる。
【０１４０】
図１４は、図１３のＬａｐｌａｃｉａｎフィルタ処理を実現するソフトウエアモジュールＳｍＸＹＺ００１のプログラム例を示すものである。また、図１５は、図１３のＬａｐｌａｃｉａｎフィルタ処理を実現するハードウエアモジュールＨｍＸＹＺ００１の回路例を示すものである。
【０１４１】
図１４は、図１３と同様なアルゴリズムを持つＣプログラムの一例で、フィルタ係数を代入した配列filter[l][m]が、図１３に示すエッジ強調フィルタの係数に置き換えられたものである。
【０１４２】
図１５は、ハードウエアによるＬａｐｌａｃｉａｎフィルタの回路構成の一例である。まず、元の画像データの演算する単位領域から、データストリームとして、例えば、ｐ[l][m]，ｐ[l-1][m]，ｐ[l][m-1]，ｐ[l][m+1]，ｐ[l+1][m]を構成し、時系列的にハードウエアモジュールの入力端ＩＮへ入力する。
【０１４３】
４クロックによって、前記のデータストリームを入力した時点で、画像データｐ[l][m]，ｐ[l-1][m]，ｐ[l][m-1]，ｐ[l][m+1]，ｐ[l+1][m]が、それぞれレジスタ４４、４３、４２、４１の出力端３４，３３，３２，３１および入力端ＩＮに現れている。そして、このとき、加算器４５，４６および４７による演算によって、加算器４７の出力端３８には、
ｐ[l-1][m]＋ｐ[l][m-1]＋ｐ[l][m+1]＋ｐ[l+1][m]
が出力されている。
【０１４４】
一方、シフトレジスタ５０により、その入力データが２ビット左シフトされることで、このシフトレジスタ５０の出力端３７には、
４×ｐ[l][m]
が出力される。
【０１４５】
そして、減算器４８により、シフトレジスタ５０の出力端３７のデータと、加算器４７の出力端３８のデータとの減算が行われ、この減算器４８の出力端３９には、
４×ｐ[l][m]−（ｐ[l-1][m]＋ｐ[l][m-1]＋ｐ[l][m+1]＋ｐ[l+1][m]）
が出力され、さらに加算器４９により、この出力端３９の出力データに、レジスタ４４の出力端３４の出力データｐ[l][m]が加算されることで、エッジ強調出力がＯＵＴに得られる。
【０１４６】
［線形変換処理用のフィルタの例の説明］
図１６は、画像の単一画素の線形変換を行うフィルタを実現するソフトウエアモジュールＳｍＰＱＲ００１のプログラム例を示し、また、図１７は、そのハードウエアモジュールＨｍＰＱＲ００１の回路例を示す。このフィルタ処理を施すことにより、画像の濃度分布を線形に変換してコントラストなどを補正することができる。
【０１４７】
図１６の例は、画像の単一画素の線形変換を行うフィルタを、Ｃ言語で記述したソフトウエアモジュールの一例であり、次の式（２）で示す線形変換を用いている。
【０１４８】
ｘ（ｌ，ｍ）＝ａ×ｐ（ｌ，ｍ）＋ｂ          式（２）
図１７は、この線形変換を実現する回路の一例である。この例では、線形変換は、ルックアップテーブル（ＬＵＴ）方式を用いている。すなわち、入力データＩＮに対し、テーブル５５を参照して、前記式（２）に対応する値ＯＵＴを出力する。
【０１４９】
テーブル５５は、ＳＲＡＭやＲＯＭなどのメモリ回路でテーブルデータをあらかじめ設定することで実現することができる。また、式（２）に従った入出力の真理値表を作って、アンドゲート、オアゲート、イクスクルーシブオアゲートなどの基本的ロジックゲートで、回路を構成することでテーブルを実現することもできる。
【０１５０】
この線形変換の動作は、元の画像データから、画素データｐ[l][m]を、順次、入力データＩＮとしてハードウエアモジュールに転送し、この入力データに対する出力データＯＵＴをテーブル５５を参照して求め、出力するものである。
【０１５１】
［処理の具体例の第２の実施例の説明］
第２の実施例では、以上説明した３つの画像フィルタを連続して処理することにより、画像のコントラストを上げ、ノイズを除去し、輪郭の強調をすることができ、不鮮明な画像を鮮明にするという画像処理アプリケーションを実現するものである。
【０１５２】
このアプリケーションプログラムＡＰの構造を、図１８を用いて説明する。このアプリケーションプログラムＡＰで利用するソフトウエアモジュールＳＭと、ハードウエアモジュールＨＭとを関連付ける識別符号ＩＤのリストが、アプリケーションプログラムＡＰのヘッダ部ＨＥＤに付加されている。
【０１５３】
プログラムＡＰ内では、ハードウエアモジュールＳＭとソフトウエアモジュールＨＭとが、二重化された処理として呼び出される。
【０１５４】
利用する処理モジュールは、ＡＢＣ００１，ＸＹＺ００１，ＰＱＲ００１の３つとされるので、ヘッダ部ＨＥＤには、これらの処理に対応するハードウエアモジュールＨＭの識別符号ＨｍＡＢＣ００１，ＨｍＸＹＺ００１，ＨｍＰＱＲ００１が記載されている。
【０１５５】
ソフトウエアモジュールＳＭとハードウエアモジュールＨＭとは同一の引数および戻り値を持って互換性が完全に保たれており、アプリケーションプログラムＡＰからは同じ処理モジュールに見えるように構成されている。
【０１５６】
次に、この画像処理の動作を図１９およびその続きである図２０に示したフローチャートに示す。この図１９および図２０のフローチャートは、図７〜図９を用いて説明した処理動作に対応しており、対応する各ステップには、同一ステップ番号を付してある。
【０１５７】
図２１は、この画像処理動作のタイミングチャートを示すものである。図１９、図２０のフローチャートと、この図２１のタイミングチャートを用いて、この第２の実施例の画像処理動作を以下に説明する。なお、図２１では、処理ａが線形変換ＰＱＲ００１、処理ｂがＧａｕｓｓｉａｎフィルタを使ったノイズ除去処理ＡＢＣ００１、処理ｃがＬａｐｌａｃｉａｎフィルタを使った輪郭強調処理ＸＹＺ００１をそれぞれ示している。
【０１５８】
また、使用する処理モジュールは、線形変換ＰＱＲ００１、ノイズ除去処理ＡＢＣ００１、輪郭強調処理ＸＹＺ００１の３種類なので、図７〜図９における処理モジュール数Ｍは３となる。また、画像のＲ（赤データ）、Ｇ（緑データ）、Ｂ（青データ）の各プレーンに対して、処理ａから処理ｃまでを繰り返し実行するので、図７〜図９における繰り返し数Ｎは３となる。
【０１５９】
図２１において、時点t0で、アプリケーションプログラムが起動すると、プログラムＡＰの初期化処理や処理画像の準備などが行われる。同時にアプリケーションプログラムＡＰのヘッダ部ＨＥＤにある識別符号ＩＤを読み込み、そこに記載されているハードウエアモジュールＨＭの回路情報を取得して、プログラマブル論理回路上にコンフィギュレーションする処理を、時点t1から開始する。
【０１６０】
図１９において、繰り返し数をカウントするｊが初期化されてｊ＝１となり（ステップＳ３１）、画像のＲプレーンに対する処理を開始する。次に何番めのモジュールデータについての処理かを示す変数ｋを初期化してｋ＝１とする（ステップＳ５１）。
【０１６１】
図２１において、処理ａ（ＰＱＲ００１）を実行する直前の時点t2で、ＯＳにコンフィギュレーション完了を問い合わせる（ステップＳ５２）。完了していない場合（ｋ≧ｉ）、アプリケーションプログラムＡＰは、ソフトウエアモジュールＳｍＰＱＲ００１を使って処理を実行する（ステップＳ５３）。
【０１６２】
以降、処理ｂおよび処理ｃの直前の時点t4、t6でも同様の問い合わせを、ＯＳに対し行う。しかし、この例では、図２１のタイミングチャートに示すように、対応するハードウエアモジュールＨｍＡＢＣ００１，ＨｍＸＹＺ００１のコンフィギュレーションが完了していないので、それぞれソフトウエアモジュールＳｍＡＢＣ００１，ＳｍＸＹＺ００１を用いて処理を実行して、繰り返し処理の１回目が終了する。
【０１６３】
一方、図２１に示すように、処理ａのハードウエアモジュールＨｍＰＱＲ００１がプログラマブル論理回路１６上にコンフィギュレーションされると、ＯＳに対し、時点t8で、そのコンフィギュレーションの完了が通知される（ステップＳ４３）。
【０１６４】
上述した繰り返し処理の１回目が終了した後に、画像のＧプレーンを処理する繰り返し処理の２回目が始まり（ｊ＝２）、再び、処理ａの直前の時点t9までプログラムが進行すると、再び、ＯＳにコンフィギュレーション完了を問い合わせる（ステップＳ５２）。コンフィギュレーション完了（ｋ＜ｉ）の返答があると、今度は、処理データをハードウエアモジュールＨｍＰＱＲ００１に渡し、ハードウエアで処理した後、時点t11 で、結果のみをプログラムへ戻す（ステップＳ５３）。
【０１６５】
処理ｂの直前の時点t12 でも、ＯＳに対し問い合わせを行うが（ステップＳ５２）、この例では、図２１に示すように、対応するハードウエアモジュールＨｍＡＢＣ００１のコンフィギュレーションが完了していないので、ソフトウエアモジュールＳｍＡＢＣ００１で処理を行う（ステップＳ５３）。
【０１６６】
しかし、処理ｃの直前の時点t16 でＯＳに対し問い合わせを行うと、この例では、図２１に示すように、対応するハードウエアモジュールＨｍＸＹＺ００１のコンフィギュレーションが完了しているので、このハードウエアモジュールＨｍＸＹＺ００１で処理を行って（ステップＳ５３）、繰り返し処理の２回目が終了する。
【０１６７】
繰り返し処理の２回目が終了した後に、画像のＢプレーンを処理する繰り返し処理の３回目が始まる（ｊ＝３）。このときには、各処理の直前の時点t18 、t20 、t22 で、ＯＳにコンフィギュレーションを問い合わすと、対応するハードウエアモジュールＨｍＰＱＲ００１，ＨｍＡＢＣ００１，ＨｍＸＹＺ００１の全てがプログラマブル論理回路１６上にコンフィギュレーションされているので、処理ａ，ｂ，ｃは、全て、ハードウエアモジュールＨｍＰＱＲ００１，ＨｍＡＢＣ００１，ＨｍＸＹＺ００１にて処理が実行され、くり返し処理の３回目が終了し、アプリケーションも終了する。
【０１６８】
以上のようにして、この第１の実施の形態の第２の実施例においても、ソフトウエアモジュールによる処理を実行しながら、ハードウエアモジュールのプログラマブル論理回路１６へのコンフィギュレーションを並行して行い、コンフィギュレーションが完了したものについては、プログラマブル論理回路１６によるハードウエア処理を行うようにしたので、コンフィギュレーションの時間を考慮することなく、効率的にソフトウエア処理と、ハードウエア処理を行って、全体としての処理時間の短縮化を図ることができる。
【０１６９】
［第２の実施の形態］
次に、この発明による情報処理システムの第２の実施の形態の構成を図２２に示す。
【０１７０】
この第２の実施の形態においては、ハードウエアモジュール取得手段３００が取得して、プログラマブル論理回路４００に構成したハードウエアモジュールＨＭの識別符号は、識別符号記録手段８００に記録される点が、第１の実施の形態と異なる。他の構成要素は、第１の実施の形態と同様である。
【０１７１】
この実施の形態の場合、識別符号記録手段８００には、ハードウエアモジュール取得手段３００により、情報処理システム内の記憶装置あるいはネットワーク２０上の記憶装置２１から取得されて、プログラマブル論理回路４００に再構成されたハードウエアモジュールＨＭの識別符号ＩＤが、その再構成順に記録される。したがって、この識別符号記録装置８００には、ハードウエアモジュールＨＭの使用履歴が記録されることになる。
【０１７２】
この第２の実施の形態のハードウエア構成は、識別符号記録手段８００を、次に説明するように構成することにより、図３に示した第１の実施の形態を実現する情報処理システム１０と同じハードウエア構成で実現できる。
【０１７３】
すなわち、ハードウエアモジュールＨＭのコンフィギュレーションが終了し、図８のステップＳ４３に示すように、コンフィギュレーションの終了がＯＳに通知されたとき、コンフィギュレーションが終了したハードウエアモジュールＨＭの識別符号を、システム１０内の記憶装置、例えば、図３のハードディスクドライブ１８によりハードディスクやメインメモリ１３に記録することにより、識別符号記録手段８００を実現する。
【０１７４】
［処理の具体例の実施例（第３の実施例）］
次に、この第２の実施の形態における第１の実施例（以下、第３の実施例という）を、図２３のフローチャートを用いて説明する。
【０１７５】
この第３の実施例は、紙文書をスキャナで読み込んで、電子文書に変換する処理の例である。紙文書は、文字で記述された文字部分と、図や写真の画像部分で構成される。
【０１７６】
図２３に示すように、まず、最初に、スキャナを使って、画像部の読み取りに必要な解像度と階調数で紙文書を読み取り、画像データとして蓄積する（ステップＳ６１）。次に、読み取った画像データを、既知の文字画像分離処理技術を用いて、文字部と画像部に分離する（ステップＳ６２）。
【０１７７】
分離した文字部の画像データは、第１のアプリケーションによって、Ｌａｐｌａｃｉａｎフィルタによりエッジ強調の前処理を行い（ステップＳ６３）、既知の文字認識技術を用いて認識し（ステップＳ６４）、文字コードによって表される文字データに変換する（ステップＳ６５）。
【０１７８】
また、画像部の画像データは、第２のアプリケーションによって、前述の第２の実施例で述べた線形変換処理によりコントラストを整え（ステップＳ６６）、第２の実施例で述べたＧａｕｓｓｉａｎフィルタによりノイズを除去し（ステップＳ６７）、さらに、第２の実施例で述べたＬａｐｌａｃｉａｎフィルタにより、エッジを強調して（ステップＳ６８）、ディスプレイ表示に適した画像データに変換する（ステップＳ６９）。
【０１７９】
最後に、例えば市販の電子文書編集ソフトウエアを用いて、文字部の文字データと画像部の画像データを、所望のレイアウトに編集して（ステップＳ７０）、電子文書が完成する。
【０１８０】
第１のアプリケーションと第２のアプリケーションは、ともに前記第２の実施例で示したアプリケーションと同じように、アプリケーションを構成するソフトウエアモジュールＳＭと同じ処理をするハードウエアモジュールＨＭの識別符号ＩＤをアプリケーションのヘッダ部ＨＥＤに持つ。
【０１８１】
すなわち、第１のアプリケーションは、Ｌａｐｌａｃｉａｎフィルタのハードウエアモジュールの識別符号ＨｍＸＹＺ００１を、そのヘッダ部ＨＥＤに持ち、また、第２のアプリケーションは、Ｇａｕｓｓｉａｎフィルタのハードウエアモジュールの識別符号ＨｍＡＢＣ００１と、線型変換のハードウエアモジュールの識別符号ＨｍＰＱＲ００１とを、そのヘッダ部ＨＥＤに持つ。
【０１８２】
この第２の実施の形態のハードウエアモジュール取得手段３００は、第１の実施の形態で述べた手順と同様の手順で、第１のアプリケーションと第２のアプリケーションからハードウエアモジュールＨＭの識別符号ＩＤを読み込むことで、コンフィギュレーションするハードウエアモジュールＨＭを認識する。
【０１８３】
例えば、第１のアプリケーション、第２のアプリケーションの順序で実行する場合、第１のアプリケーションが実行されるときに、ハードウエアモジュールＨｍＸＹＺ００１が、プログラマブル論理回路４００に構成され、識別符号ＨｍＸＹＺ００１が識別符号記録手段８００に記録される。
【０１８４】
そして、第２のアプリケーションが実行されるときには、ハードウエアモジュール取得手段３００は、３種のハードウエアモジュールＨｍＰＱＲ００１，ＨｍＡＢＣ００１，ＨｍＸＹＺ００１を取得して、コンフィギュレーションする必要があるが、ハードウエアモジュール取得手段３００が、識別符号記録手段８００を参照することにより、ハードウエアモジュールＨｍＸＹＺ００１は、既にプログラマブル論理回路上に構成されていることが分かる。
【０１８５】
そこで、ハードウエアモジュール取得手段３００は、第２のアプリケーションを実行するときには、ハードウエアモジュールＨｍＸＹＺ００１は、重ねてコンフィギュレーションすることはしない。しかし、ハードウエアモジュールＨｍＸＹＺ００１は、既にプログラマブル論理回路４００上に構成されているので、前述した第１の実施例と第２の実施例で示したハードウエアモジュールの構成手順を経ること無く、ＬａｐｌａｃｉａｎフィルタのソフトウエアモジュールＨｍＸＹＺ００１をハードウエアモジュールに置き換えて処理することができる。
【０１８６】
［処理の具体例の実施例（第４の実施例）］
次に、この発明の第２の実施の形態における他の実施例（以下、第４の実施例という）を説明する。
【０１８７】
前述の第３の実施例で示した、画像データからの文字認識を行う第１のアプリケーションと、画像データをディスプレイ表示に適した画像に変換する第２のアプリケーションは、それぞれが独立した処理であるから、それぞれが異なった画像データを処理することもできる。この第４の実施例は、それぞれ第１および第２のアプリケーションが異なった画像データを処理する場合である。
【０１８８】
この第４の実施例において、第１のアプリケーションと第２のアプリケーションを続けて実行する場合は、識別符号記録手段８００を参照することにより、共通に用いられるハードウエアモジュールＨｍＸＹＺ００１が、一方のアプリケーションを実行した後には既にプログラマブル論理回路上に構成されていることが分かる。したがって、他方のアプリケーションを実行するときに、第１、第２の実施例で示したハードウエアモジュールのコンフィギュレーションを行うこと無く、Ｌａｐｌａｃｉａｎフィルタのソフトウエアモジュールを、ハードウエアモジュールＨｍＸＹＺ００１に置き換えて処理するようにする。
【０１８９】
また、第４の実施例においては、一方のアプリケーションを実行した後に、情報処理システムの運転を停止し、後にシステムの運転を再開して他方のアプリケーションを実行するときには、次のようにすることにより、ハードウエアモジュールのコンフィギュレーションを効率的に行うことができる。
【０１９０】
すなわち、システムを再開したときに、他方のアプリケーションの処理開始前に、識別符号記録手段８００を参照して、記録されている識別符号に対応するハードウエアモジュールＨＭを、プログラマブル論理回路１６上に構成する。
【０１９１】
これにより、他方のアプリケーションの処理を開始したときには、既に、前に処理を行ったアプリケーションと共通に用いるハードウエアモジュールＨｍＸＹＺ００１は、プログラマブル論理回路４００上に構成されている。
【０１９２】
したがって、第１、第２の実施例で示したハードウエアモジュールの構成手順を経ること無く、Ｌａｐｌａｃｉａｎフィルタのソフトウエアモジュールを、共通に用いるハードウエアモジュールＨｍＸＹＺ００１に置き換えて処理することができる。
【０１９３】
［第３の実施の形態］
以上に述べたように、プログラマブル論理回路１６への回路情報の転送は、ネットワーク上の記憶装置２１、またはシステム内部の記憶装置１８から行われる。回路情報の転送には、システムの構成によっていくつかの方法がある。
【０１９４】
例えば、（１）アプリケーションの実行と並行して、ネットワークから必要な情報を随時ダウンロードしながら、情報転送とコンフィギュレーションを行う方法や、（２）ネットワークから一旦すべての情報をシステム内部のハードディスク等の記憶装置にダウンロードしてから、アプリケーションの実行と並行して随時読み出し、その後ローカルバス転送、コンフィギュレーションといったシステム内部だけのローカルの転送方法がある。
【０１９５】
しかし、いずれの場合でも、回路の再構成は、アプリケーションが、その回路を実行するまでに完了しなければならない。転送の時間が長くなるとアプリケーションの実行待ちが発生し、結果として処理速度が低下する問題がある。
【０１９６】
この問題を解決する方法のひとつとして、特開平８−７６９７４号公報に示される方法がある。この公報に記載された方法は、次のようなものである。
【０１９７】
プログラマブル論理回路を備えたデータ処理装置において、電源投入時には、読み取り専用メモリにあらかじめ格納されている回路情報をプログラマブル論理回路内のコンフィギュレーションメモリにダウンロードする。外部から回路情報をダウンロードするときには、回路情報を所定のＲＡＭにコピーした後、ＲＡＭからプログラマブル論理回路内のコンフィギュレーションメモリにダウンロードする。
【０１９８】
さらに、外部から回路情報をダウンロードするときには、すでにプログラマブル論理回路内のコンフィギュレーションメモリにある回路情報と新たな回路情報を比較し、同一の場合、再ダウンロードしない。いわゆるキャッシングと呼ばれる手法である。
【０１９９】
しかしながら、この従来例の方法には、次のような問題がある。
【０２００】
すなわち、前記従来例では、繰り返し使用されるにもかかわらず、プログラマブル論理回路の回路規模の制限により常駐することができない回路情報を、いわゆるキャッシングを用いて短い時間で再構成する。しかしながら、ＲＡＭの容量やその管理方法、また、データの種別の管理方法に不備な点があり、効率的なコンフィギュレーションが行えるとは言い難い。
【０２０１】
コンフィギュレーションデータは、一旦、所定のＲＡＭにコピーした後に、コンフィギュレーションメモリにダウンロードされ、直接、ネットワークからコンフィギュレーションメモリへ転送されるものではない。したがって、転送のためのデータの流れとしてみると、システムの共通バスであるＰＣＩバスを経由することになり、このバスのトラフィック混雑状態、転送段数の増加などにより、結果として転送時間が長くかかってしまう問題がある。
【０２０２】
また、電源投入時に、読み取り専用メモリからのダウンロード、または、一旦ＲＡＭにコピーされたもののダウンロードというように、コンフィギュレーションメモリに対して一方向の転送しか行われず、常に、ＲＡＭの中には、コンフィギュレーションメモリと同じ情報が格納されている状態になり、メモリの容量としては効率的ではないという問題がある。
【０２０３】
この第３の実施の形態は、以上の問題を解決したものである。
【０２０４】
この第３の実施の形態のブロック図を、図２４に示す。この図２４から分かるように、この第３の実施の形態においては、ハードウエアモジュール取得手段３００が取得したハードウエアモジュールの回路情報を一時的に記憶するローカルメモリ９００を設ける。他は、第２の実施の形態の場合と全く同様である。
【０２０５】
この第３の実施の形態においては、ハードウエアモジュール取得手段３００は、プログラマブル論理回路４００に対してコンフィギュレーションを行うときには、ローカルメモリ９００にもその回路情報を記憶させるようにする。このとき、識別符号記録手段８００には、そのコンフィギュレーションされ、また、ローカルメモリ９００に記憶された回路情報を持つハードウエアモジュールの識別符号が記録される。
【０２０６】
そして、プログラム１００内のヘッダ部ＨＥＤの識別符号に従って新たなハードウエアを取得するとき、前記識別符号記録手段８００の識別符号を参照して、この識別符号記録手段８００内に、取得しようとするハードウエアモジュールの識別符号があるが、プログラマブル論理回路には、コンフィギュレーションメモリの容量などの影響のために、その回路情報が構成されていないときには、ローカルメモリ９００の記憶内容を確認した後、ローカルメモリ９００に保存されている当該ハードウエアモジュールの回路情報を用いて、プログラマブル論理回路４００のコンフィギュレーションを実行する。
【０２０７】
これにより、ＰＣＩバス１４を経由したデータ伝送は不要になり、高速にハードウエアモジュールの回路情報の、プログラマブル論理回路へのコンフィギュレーションができる。
【０２０８】
すなわち、例えば、システム内記憶装置１８から、あるいはネットワーク２０から取得してハードウエアモジュールの回路情報を、一旦、メインメモリ１３に蓄積し、コンフィギュレーションを実行する場合には、ＰＣＩバス１４がコンフィギュレーションのために回路情報の伝送に使用されしまうことになるが、この第３の実施の形態のように、ローカルメモリ９００に記憶されているハードウエアモジュールＨＭの回路情報により、プログラマブル論理回路１６のコンフィギュレーションを実行するようにすれば、ＰＣＩバス１４は、コンフィギュレーション時の回路情報が伝送されることがなくなり、ＰＣＩバス１４を効率良く使用することができる。
【０２０９】
また、一度、プログラマブル論理回路にコンフィギュレーションされた回路情報が、コンフィギュレーションメモリの容量不足のために、他の回路情報に上書きされてしまう場合には、ローカルメモリ９００に蓄えておくことが可能になり、当該ハードウエアモジュールをプログラマブル論理回路に再度コンフィギュレーションする必要が生じたときでも、ローカルメモリ９００からプログラマブル論理回路４００のコンフィギュレーションメモリに転送してコンフィギュレーションを実行することができる。
【０２１０】
さらに、前述した実施例のように、例えば２つのアプリケーションを続けて実行する場合の後のアプリケーションの実行に先立ち、識別符号記録手段８００に記録されている識別符号に基づき、ローカルメモリ９００に格納されている回路情報を、プログラマブル論理回路に、高速にコンフィギュレーションして構成しておくことができる。
【０２１１】
この第４の実施の形態の場合の情報処理システム７０のハードウエア構成例を図２５に示す。
【０２１２】
この情報処理システム７０は、コンフィギュレーション用の回路情報を一時的に格納しておくキャッシュ用のローカルメモリとして、ＳＲＡＭまたはＤＲＡＭで構成されるローカルメモリ７１を備える。このローカルメモリ７１へは、プログラマブル論理回路１６からアクセスすることができるとともに、プログラマブル論理回路インターフェース１５を介してＰＣＩバス１４からもアクセスすることができる。
【０２１３】
また、プログラマブル論理回路１６のコンフィギュレーションメモリに格納された回路情報は、アドレスの制御によって読み出すことができ、ローカルメモリ７１あるいはＰＣＩバス１４を経由して、メインメモリ１３や記憶装置としてのハードディスクドライブ１８に転送できる。
【０２１４】
情報処理システム７０のその他の構成は、図３の情報処理システム１０と全く同様である。
【０２１５】
プログラマブル論理回路１６と、メモリ１３や記憶装置１８間で回路情報を転送する速度は、デバイスの種類、転送バス幅、バス動作周波数、転送モード、転送バスのトラフィック状態、転送経路等の要因により変化する。
【０２１６】
ここで、プログラマブル論理回路１６に対して回路情報の転送速度が高速なメモリや記憶装置を高位、低速なメモリや記憶装置を低位であると呼ぶことにする。この第３の実施の形態では、高位から順に並べると、プログラマブル論理回路１６内部のコンフィギュレーションメモリ、ローカルメモリ７１、メインメモリ１３、システム内記憶装置としてのハードディスクドライブ１８、ネットワークで接続された記憶装置２１の順であるとする。
【０２１７】
次に、この第３の実施の形態の基本的な動作は、第１の実施の形態の場合と同様であり、アプリケーションプログラムの実行時に、処理モジュールとして、ソフトウエアモジュールとハードウエアモジュールのいずれを使用するのかを、図６に示したフローチャートのようにして決定しながら処理を行うものである。
【０２１８】
［処理の具体例の実施例（第５の実施例）］
この第５の実施例は、ローカルメモリ７１を利用して、コンフィギュレーションの効率化を図るものである。この第６の実施例の要部の動作であるコンフィギュレーションの処理を、図２６、図２７、図２８に示したフローチャートを使って説明する。
【０２１９】
図２６に示すように、ハードウエアモジュール取得手段３００は、ハードウエアモジュールを取得するとき、識別符号記録手段８００に記録された識別符号を参照することにより、コンフィギュレーションメモリに、コンフィギュレーションしようとするハードウエアモジュールに対応する回路情報が存在するかを確認する（ステップＳ７１）。存在する場合は、コンフィギュレーションは行わずに、完了とする（ステップＳ７２）。存在しない場合は、ローカルメモリ７１の回路情報を確認する（ステップＳ７３）。ローカルメモリ７１上に、回路情報が存在する場合は、ローカルメモリ７１からの回路情報のコンフィギュレーションの処理を行う（ステップＳ７４）。
【０２２０】
図２７は、ローカルメモリ７１からのコンフィギュレーションのルーチンのフローチャートである。この図２７に示すように、コンフィギュレーションメモリに十分な空き領域があるか否か判断する（ステップＳ８１）。十分な空き領域があれば、ステップＳ８３に飛んで、ローカルメモリ７１から回路情報を、プログラマブル論理回路１６のコンフィギュレーションメモリへ転送して、コンフィギュレーションをそのまま実行する。空き領域がない場合は、ステップＳ８２に進み、優先順位の低いハードウエアモジュール上に上書きした後、ステップＳ８３に進んで、コンフィギュレーションを行う。
【０２２１】
ローカルメモリ７１上に回路情報がない場合には、メインメモリ１３の回路情報を確認する（ステップＳ７５）。メインメモリ１３に回路情報があれば、その回路情報を、メインメモリ１３からローカルメモリ７１と、プログラマブル論理回路１６のコンフィギュレーションメモリとへ転送する処理を行う（ステップＳ７６）。
【０２２２】
図２８は、このメインメモリ１３からの転送処理のルーチンのフローチャートを示すものである。メインメモリ１３からの転送に当たって、まず、プログラマブル論理回路１６のコンフィギュレーションメモリ上の空き領域を確認し（ステップＳ９１）、空き領域が十分でないときには、優先順位の低い回路情報に上書きするために、その上書きする領域を決定し（ステップＳ９２）、次のステップＳ９３に進む。
【０２２３】
コンフィギュレーションメモリ上の空き領域が十分であれば、ステップＳ９１からステップＳ９３に飛んで、ローカルメモリ７１上の空き領域を確認する（ステップＳ９３）。ローカルメモリ７１の空き領域が十分でないときには、優先順位の低い回路情報に上書きして転送を行うために、ステップＳ９４に進んで、その上書きする領域を決定する。そして、次のステップＳ９５において、ローカルメモリ７１にメインメモリ１３からの回路情報の転送を行い、その転送された回路情報に基づいてプログラマブル論理回路１６のコンフィギュレーションを行う。
【０２２４】
ローカルメモリ７１の空き領域が十分であれば、ステップＳ９３からステップＳ９５に飛んで、ローカルメモリ７１にメインメモリ１３からの回路情報の転送を行い、その転送された回路情報に基づいてプログラマブル論理回路１６のコンフィギュレーションを行う。
【０２２５】
そして、図２６に戻って、メインメモリ１３に回路情報がない場合には、さらに低位の回路情報格納先へと探索していく。この実施例では、ネットワーク２０上の記憶装置２１から回路情報をメインメモリ１３に転送する（ステップＳ７７）。この場合も、メインメモリ１３上に空き領域がない場合は、メインメモリ１３上の優先順位の回路情報に上書きする。
【０２２６】
メインメモリ１３への転送後は、メインメモリ１３に回路情報が存在する場合と同じ処理を行うことになり、ローカルメモリ７１と、プログラマブル論理回路１６のコンフィギュレーションメモリへと転送される。このように、回路情報は、プログラマブル論理回路１６のコンフィギュレーションメモリへ書き込まれるとともに、最も、転送が高速にできるローカルメモリ７１にも転送される。
【０２２７】
ローカルメモリ７１からのプログラマブル論理回路１６のコンフィギュレーションメモリへの転送およびコンフィギュレーションは、メインメモリ１３からの転送およびコンフィギュレーションに比べて、ＰＣＩバス１４を経由することがないので、他のデータ転送との輻輳がなく、高速にコンフィギュレーションが実行できる。
【０２２８】
次に、ローカルメモリ７１を使用して、４つのハードウエアモジュールを、プログラマブル論理回路１６にコンフィギュレーションする具体例を、図２９、図３０を用いて説明する。
【０２２９】
この第６の実施例では、プログラムのヘッダＨＥＤに記載された識別符号に基づいて、ハードウエアモジュールを、例えばネットワーク上の記憶装置２０から取得し、ローカルメモリ７１を使うことにより、より高速に回路情報をプログラマブル論理回路１６にコンフィギュレーションする。
【０２３０】
４つのハードウエアモジュールＡ〜Ｄを用いた処理フローを、図２９に示す。ハードウエアモジュールの処理順序は、Ａ→Ｂ→Ｃ→Ａ→Ｄである。ハードウエアモジュールＡによる処理を２回行うため、ハードウエアモジュールＡの優先順位が最も高い。プログラマブル論理回路１６上のハードウエアモジュールＡ，Ｂ，Ｃ，Ｄの配置を図３０に示す。この場合、ハードウエアモジュールＡとハードウエアモジュールＣは重なりを持つので、同時にコンフィギュレーションできない。
【０２３１】
これらのハードウエアモジュールＡ〜Ｄのコンフィギュレーション手順を、図２９を使って説明する。
【０２３２】
処理時間tc0 に、ネットワーク上の記憶装置２１からハードウエアモジュールＡの転送が開始され、その回路情報は、一旦、メインメモリ１３に格納される。そして、処理時間tc1 〜tc2 の期間で、メインメモリ１３から、ローカルメモリ７１とプログラマブル論理回路１６のコンフィギュレーションメモリへ転送される。
【０２３３】
ハードウエアモジュールＡは最も優先順位が高いので、ローカルメモリ７１のメモリ容量が十分でない場合には、ハードウエアモジュールＢ、Ｃ、Ｄがローカルメモリ７１に格納されずに、これらハードウエアモジュールＢ、Ｃ、Ｄは、さらに低位のメインメモリ１３、または、内部記憶装置としてのハードディスクドライブ１８へ格納されることになる。ハードウエアモジュールＡのコンフィギュレーションは処理時間tc2 で完了する。
【０２３４】
次に、ハードウエアモジュールＢおよびＣは、それぞれ処理時間tc1 〜tc2 、処理時間tc3 〜tc4 の期間内で、ネットワーク２０上の記憶装置２１からの転送が開始され、処理時間tc4 、処理時間tc6 でプログラマブル論理回路１６へのコンフィギュレーションが完了する。
【０２３５】
ここで、ハードウエアモジュールＣのコンフィギュレーションを開始する処理時間tc5 のときには、プログラマブル論理回路１６上のハードウエアモジュールＣは、ハードウエアモジュールＡの一部に上書きして構成する。したがって、プログラマブル論理回路１６上でのコンフィギュレーション状態としては、ハードウエアモジュールＡが無効になり、ハードウエアモジュールＢはそのまま有効で、処理時間tc6 からハードウエアモジュールＣが有効になる。
【０２３６】
ここで、ハードウエアモジュールＣをローカルメモリ７１に転送するときに、ローカルメモリ７１の空き容量を考える必要がある。この実施例の場合、ローカルメモリ７１の容量が、ハードウエアモジュールＡ、ＢおよびＣのすべてを格納するために十分でないので、ハードウエアモジュールＢのローカルメモリ７１の領域に、ハードウエアモジュールＣを上書きして格納させる。
【０２３７】
これは、ハードウエアモジュールＢは、ハードウエアモジュールＡに比べて優先順位が低いためである。したがって、処理時間tc5 の時点からハードウエアモジュールＣの情報がローカルメモリ７１に格納されていくことになる。
【０２３８】
次に、再びハードウエアモジュールＡによる処理が行われるが、前に無効になったハードウエアモジュールＡを再びコンフィギュレーションするために、ハードウエアモジュールＣによるアプリケーションプログラムの処理が完了する処理時間tc7 の時点から、ローカルメモリ７１に格納されているハードウエアモジュールＡの回路情報を、プログラマブル論理回路１６のコンフィギュレーションメモリに転送する。
【０２３９】
したがって、この処理時間tc7 の時点からハードウエアモジュールＣが無効になり、ハードウエアモジュールＡがプログラマブル論理回路に再構成されて、処理時間tc8 の時点でコンフィギュレーションが完了する。メモリへの格納状態からみると、図２９のローカルメモリ７１から、プログラマブル論理回路１６のコンフィギュレーションメモリへ、図２９でＴraで示すような転送が行われたことになる。
【０２４０】
最後に、ハードウエアモジュールＤのコンフィギュレーションが行われる。
【０２４１】
なお、上記の例で、ハードウエアモジュールの回路情報を、ネットワーク２０上の記憶装置２１から、一旦、メインメモリ１３に格納して、ローカルメモリ７１とコンフィギュレーションメモリに転送したが、ネットワーク２０から、直接、メインメモリ１３とローカルメモリ７１とコンフィギュレーションメモリに転送してもよい。
【０２４２】
ここで、回路情報を格納するメモリの容量を効率的に使用する場合には、メモリの格納状態においては、図２９で、メインメモリ１３の格納状態が存在しない状態がよい。
【０２４３】
ネットワーク２０から、直接、ローカルメモリ７１と、プログラマブル論理回路１６のコンフィギュレーションメモリに転送された後の、処理時間tc5 以降では、ハードウエアモジュールＢは、ローカルメモリ７１では、ハードウエアモジュールＣによって上書きされてしまい、コンフィギュレーションメモリにしか、その回路情報は残っていないことになる。
【０２４４】
もし、プログラマブル論理回路１６のコンフィギュレーションメモリのハードウエアモジュールＢの領域に新たなハードウエアモジュールが構成されて、上書きされてしまうと、再び、このハードウエアモジュールＢを使用する予定がある場合には、このハードウエアモジュールＢをコンフィギュレーションメモリからローカルメモリ７１へと転送して格納しておく。
【０２４５】
ハードウエアモジュールの使用予定に関する情報は、例えば、プログラムを事前に解析しておくことにより、得ることができる。また、この実施の形態の場合には、プログラムのヘッダ部ＨＥＤに、識別符号ＩＤが処理モジュール順に記述されるので、そのヘッダ部ＨＥＤの識別符号ＩＤの並びを参照することでも、知ることができる。
【０２４６】
さらに、識別符号記録手段８００に記録されている識別符号を参照することにより、過去の使用履歴から推定することもできる。この例では、識別符号記録手段８００の識別符号による使用されたハードウエアモジュールＨＭの過去の使用履歴から、使用が予定されるハードウエアモジュールＨＭの回路情報を、プログラマブル論理回路のコンフィギュレーションメモリから、ローカルメモリ７１に転送しておくようにする。
【０２４７】
このようにすることによって、ローカルメモリ７１と、プログラマブル論理回路１６のコンフィギュレーションメモリとの高速転送に関わるメモリ容量を、効率良く使うことができる。
【０２４８】
次に、プログラマブル論理回路１６のコンフィギュレーションメモリと、このコンフィギュレーションメモリの容量より大きなローカルメモリ７１との間で、ハードウエアモジュールＨＭの回路情報を通信する実施例について、図３１を用いて説明する。
【０２４９】
プログラマブル論理回路１６のコンフィギュレーションメモリ１６０と、ローカルメモリ７１を結線するアドレスバスの幅と、データバスの幅において、ローカルメモリ７１のアドレスバスの幅の方が大きくなるため、その下位ビット側をコンフィギュレーションメモリ１６０のアドレスバス幅に対応させる。
【０２５０】
ローカルメモリ７１のアドレスバスの上位ビット側の制御により、コンフィギュレーションメモリ１６０と同等なメモリ容量で、アドレス制御も同じくした、複数に分割されたメモリ空間の構成ができる。
【０２５１】
なお、データバス幅に関しては、必ずしも同じにする必要はないが、制御のしやすさから考えると、例えばバイト単位の倍数で構成しておく。一方、それぞれのメモリ空間に格納されているハードウエアモジュールＨＭの識別符号ＩＤの情報は、識別符号記録手段８００に記録されており、コンフィギュレーションの要求に応じて、記録された識別符号の情報に基づいて選択的に転送される。
【０２５２】
このように構成及び制御をすることによって、この分割されたメモリ空間単位でコンフィギュレーションする場合には、一括転送ができるためハードウエアモジュールの転送の制御が簡単になり、しかも、コンフィギュレーションの高速化が図れる。
【０２５３】
さらに、図３０に示すような複数のハードウエアモジュールによるコンフィギュレーションにおいて、複数個を組み合わせて繰り返し用いられるハードウエアモジュールが発生する場合、例えば、ハードウエアモジュールＡおよびハードウエアモジュールＢが組み合わされて用いられる場合、これらを結線する配線情報も合わせて前述のローカルメモリ７１において、複数に分割構成されたメモリ空間に対応させて格納する。
【０２５４】
この格納されたハードウエアモジュールおよび配線情報に関する情報は、識別符号記録手段８００に記録される。したがって、コンフィギュレーションが必要になったときには、記録された情報に基づいて、ハードウエアモジュール（Ａ＋Ｂ）および配線情報を個別に順次転送することなく、コンフィギュレーションメモリに、一括で、あるいは部分的に、高速に転送できる。
【０２５５】
［第４の実施の形態］
以上に示した第１の実施の形態、第２の実施の形態、第３の実施の形態では、アプリケーションプログラムが、ソフトウエアモジュールの集合で構成され、ソフトウエアモジュールと同じ処理を行うハードウエアモジュールを、プログラムのヘッダ部ＨＥＤの識別符号により取得し、プログラムの実行前またはプログラム実行時に、実行モジュールを決定した。
【０２５６】
しかし、この発明は、この逆に、アプリケーションプログラムが、ハードウエアモジュールの集合で構成され、ハードウエアモジュールと同じ処理を行うソフトウエアモジュールを、プログラムのヘッダ部ＨＥＤの識別符号によりシステム内の記憶装置やネットワーク上の記憶装置から取得する場合も、ソフトウエアモジュールとハードウエアモジュールとを置き換えるだけで、前述した第１の実施の形態、第２の実施の形態、第３の実施の形態と、同様な処理を行うことができる。
【０２５７】
なぜならば、両方のモジュールを取得した後では、実行モジュールを決定する手順は同じであり、実行プログラム用記憶部としての主記憶装置である、例えばメインメモリ１３に格納されているソフトウエアモジュールを、再び取得する必要はないし、アプリケーションの開始前にソフトウエアモジュールを、主記憶装置に格納することができるからである。
【０２５８】
その場合の、ブロック図を、図３２に示す。この図３２は、第２の実施の形態に対応したものであり、第１の実施の形態に対応する構成の場合には、識別情報記憶手段８００が存在しない。
【０２５９】
この場合には、アプリケーションプログラム１１０に記述されているハードウエアモジュールＨＭは、プログラマブル論理回路４００に転送されて、再構成される。
【０２６０】
また、前述の実施の形態のハードウエアモジュール取得手段に対応するソフトウエアモジュール取得手段３３０は、取得したソフトウエアモジュールを、実行プログラム記憶手段５５０に格納し、ＣＰＵ５００で実行するようにする。この実行プログラム記憶手段４４０は、前述したように、情報処理システムでは、メインメモリ１３で構成される。
【０２６１】
［実施の形態の効果］
以上説明したように、第１の実施の形態、第２の実施の形態、第３の実施の形態および第４の実施の形態では、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアモジュールによるアプリケーションプログラムの実行と並行して、ソフトウエアモジュールと同じ処理を行うハードウエアモジュールのコンフィギュレーションを行うことにより、プログラム論理回路の再構成時間を考慮した最善のソフトウエアモジュールとハードウエアモジュールの組み合わせでプログラムを実行することができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【０２６２】
したがって、従来のように、アプリケーションプログラムにおいてソフトウエアモジュールとハードウエアモジュールとで、処理する部分を事前に固定的に決定する必要が無い。
【０２６３】
また、第１の実施の形態、第２の実施の形態および第３の実施の形態によれば、ネットワーク上の記憶装置にハードウエアモジュールが格納され、処理の途中でネットワーク通信が切断されることがあっても、処理を中断することなく、ソフトウエアモジュールにより処理を継続することが可能となる。
【０２６４】
同様に、第４の実施の形態によれば、ネットワーク上の記憶装置にソフトウエアモジュールが格納され、処理の途中でネットワーク通信が切断されることがあっても、処理を中断することなく、ハードウエアモジュールにより処理を継続することが可能となる。
【０２６５】
また、第１〜第３のいずれの実施の形態においても、複数のアプリケーションプログラムを実行する場合、プログラマブル論理回路にコンフィギュレーションされているハードウエアモジュールが識別符号記録手段８００に記録されているので、共通して用いるハードウエアモジュールを重複してコンフィギュレーションすることがなくなり、プログラマブル論理回路の再構成時間を最小にすることができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【０２６６】
同様に、第４の実施の形態によれば、複数のアプリケーションプログラムを実行する場合、メインメモリに格納されているソフトウエアモジュールが、識別符号記録手段８００に記録されているので、共通して用いるソフトウエアモジュールを重複して格納することがなくなり、メインメモリへのロード時間を最小にすることができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【０２６７】
また、第１の実施の形態、第２の実施の形態、第３の実施の形態においては、識別符号記録手段８００に記録されているハードウエアモジュールの使用経歴に基づいて、アプリケーションプログラムの開始前にプログラマブル論理回路上にハードウエアモジュールを構成することができるので、アプリケーションプログラムの実行開始時からからハードウエアモジュールを効率的に利用することができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【０２６８】
同様に、第４の実施の形態においては、同様にして、識別符号記録手段８００のソフトウエアモジュールの使用経歴に基づいて、アプリケーションプログラムの開始前に主記憶にソフトウエアモジュールを格納することができるので、アプリケーションプログラムの実行開始時からからＣＰＵを効率的に利用することができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【０２６９】
また、第３の実施の形態の場合には、ローカルメモリと、プログラマブル論理回路のコンフィギュレーションメモリとの間で、ハードウエアモジュールの回路情報を通信できるため、ローカルメモリまたはコンフィギュレーションメモリのいずれかに回路情報が格納されていれば十分であり、高速転送可能なメモリの容量を効率的に用いることができる。
【０２７０】
さらに、第３の実施の形態の場合には、コンフィギュレーションメモリ空間と同じ容量でローカルメモリを複数に分割したメモリ空間を持つことにより、同時に構成されている回路情報と配線情報を含めた複数のハードウエアモジュールを単位として一括あるいは部分的に高速に転送できる。
【０２７１】
また、この発明による情報処理システムは、第４の実施の形態のように、ソフトウエアモジュールによる処理と、ハードウエアモジュールによる処理とのどちらでも行うことができるので、プログラムを、ソフトウエアモジュールの集合としても、ハードウエアモジュールの集合としても記述することができる。
【図面の簡単な説明】
【０２７２】
【図１】この発明による情報処理システムの第１の実施の形態の概念構成を示すブロック図である。
【図２】この発明による情報処理システムで用いるアプリケーションプログラムの一例を説明するための図である。
【図３】この発明による情報処理システムの第１の実施の形態のハードウエア構成例を示す図である。
【図４】プログラマブル論理回路の一例を説明するための図である。
【図５】プログラマブル論理回路の一例を説明するための図である。
【図６】この発明による情報処理システムの第１の実施の形態の主要な処理動作を説明するためのフローチャートである。
【図７】この発明による情報処理システムの第１の実施の形態の処理の具体例（第１の実施例）を説明するためのフローチャートである。
【図８】図７の一部の処理ルーチンを説明するためのフローチャートである。
【図９】図７の一部の処理ルーチンを説明するためのフローチャートである。
【図１０】この発明による情報処理システムの第１の実施の形態における処理の具体例（第２の実施例）で用いる処理モジュールの一つを説明のための図である。
【図１１】第２の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１２】第２の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１３】この発明による情報処理システムの第１の実施の形態における処理の具体例（第２の実施例）で用いる処理モジュールの一つを説明のための図である。
【図１４】第２の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１５】第２の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１６】第２の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１７】第２の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１８】第２の実施例で用いるアプリケーションプログラムを説明するための図である。
【図１９】第２の実施例の処理の流れを説明するためのフローチャートである。
【図２０】図１９のフローチャートの一部のフローチャートである。
【図２１】第２の実施例の処理の流れを説明するためのタイミングチャートである。
【図２２】この発明による情報処理システムの第２の実施の形態の概念構成を示すブロック図である。
【図２３】第２の実施の形態における処理の具体例（第３の実施例）の処理の流れを説明するためのフローチャートである。
【図２４】この発明による情報処理システムの第３の実施の形態の概念構成を示すブロック図である。
【図２５】この発明による情報処理システムの第３の実施の形態の場合のハードウエア構成例を示す図である。
【図２６】この発明による情報処理システムの第３の実施の形態の場合の処理の具体例（第６の実施例）を説明するためのフローチャートである。
【図２７】図２６の一部の処理ルーチンのフローチャートである。
【図２８】図２６の一部の処理ルーチンのフローチャートである。
【図２９】第５の実施例の処理の流れを説明するためのタイミングチャートである。
【図３０】第５の実施例の説明に供する、プログラマブル論理回路上に形成された回路配置を説明するための図である。
【図３１】第５の実施例の説明に供する、ハードウエアの主要部分を示す図である。
【図３２】この発明による情報処理システムの第４の実施の形態の概念構成を示すブロック図である。
【図３３】従来の情報処理システムの一つを説明するための図である。
【図３４】従来の情報処理システムの他の一つを説明するための図である。
【図３５】従来の情報処理システムの、さらに他の一つを説明するための図である。
【符号の説明】
【０２７３】
１０  情報処理システム
１１  ＣＰＵ
１２  チップセット
１３  メインメモリ
１４  バス
１５  プログラマブル論理回路インターフェース
１６  プログラマブル論理回路
１７  ハードディスクインターフェース
１８  ハードディスクドライブ
１９  通信インターフェース
２０  ネットワーク
２１  ネットワーク上の記憶装置
６０  情報処理システム
６１  ディスプレイ
６２  ディスプレイインターフェース
６３  キー操作部
６４  キーインターフェース
７０  情報処理システム
７１  ローカルメモリ
１００  アプリケーションプログラム
１６０  コンフィギュレーションメモリ
２００  情報処理システム内またはネットワーク上の記憶装置
３００  ハードウエアモジュール取得手段
３３０  ソフトウエアモジュール取得手段
４００  プログラマブル論理回路
４４０  実行プログラム記憶手段
５００  ＣＰＵ
６００  実行モジュール決定手段
７００  選択条件設定手段
８００  識別符号記憶手段
９００  ローカルメモリ
【図１】
2006107532.tif 000004
【図２】
2006107532.tif 000005
【図３】
2006107532.tif 000006
【図４】
2006107532.tif 000007
【図５】
2006107532.tif 000008
【図６】
2006107532.tif 000009
【図７】
2006107532.tif 000010
【図８】
2006107532.tif 000011
【図９】
2006107532.tif 000012
【図１０】
2006107532.tif 000013
【図１１】
2006107532.tif 000014
【図１２】
2006107532.tif 000015
【図１３】
2006107532.tif 000016
【図１４】
2006107532.tif 000017
【図１５】
2006107532.tif 000018
【図１６】
2006107532.tif 000019
【図１７】
2006107532.tif 000020
【図１８】
2006107532.tif 000021
【図１９】
2006107532.tif 000022
【図２０】
2006107532.tif 000023
【図２１】
2006107532.tif 000024
【図２２】
2006107532.tif 000025
【図２３】
2006107532.tif 000026
【図２４】
2006107532.tif 000027
【図２５】
2006107532.tif 000028
【図２６】
2006107532.tif 000029
【図２７】
2006107532.tif 000030
【図２８】
2006107532.tif 000031
【図２９】
2006107532.tif 000032
【図３０】
2006107532.tif 000033
【図３１】
2006107532.tif 000034
【図３２】
2006107532.tif 000035
【図３３】
2006107532.tif 000036
【図３４】
2006107532.tif 000037
【図３５】
2006107532.tif 000038