(57)【特許請求の範囲】
【請求項１】
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の少なくとも一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応するハードウエアモジュールを、前記ネットワーク上の記憶装置から入手するものであって、
前記ネットワーク上の複数の記憶装置に対して、前記プログラム内に記述されている前記識別符号に対応する複数個のハードウエアモジュールの取得要求を同時に送出する取得要求送出手段と、
前記取得要求送出手段よりの要求に応じて前記ネットワークを通じて送られてくる前記ハードウエアモジュールの情報を到着順に取得して、その回路情報により前記プログラマブル論理回路を再構成する取得再構成手段と、
を有することを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記ハードウエアモジュールにより取得し、前記プログラマブル論理回路に再構成した前記ハードウエアモジュールの識別符号を記録する識別符号記録手段を設け、
前記ネットワークからの前記ハードウエアモジュールの情報の到着時に、その到着したハードウエアモジュールの識別符号が、前記識別符号記録手段に記録されているときには、当該ハードウエアモジュールの転送を中止することを特徴とする情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、少なくとも処理の一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能であり、ソフトウエアによる処理と、プログラマブル論理回路を用いたハードウエアによる処理とを組み合わせた処理を行う情報処理システムに関するものである。
【０００２】
【従来の技術】
デジタル回路装置、特に特定用途向け集積回路（ＡＳＩＣ）の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などで構成されたプログラマブル論理回路が広く使われている。
【０００３】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路装置を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、米国特許第４，７００，１８７号の発明のような電気的に再構成可能なプログラマブル論理回路装置は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路装置は、ますます広く使われるようになってきている。
【０００４】
ところで、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【０００５】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するためにプログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【０００６】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要で、データを出し入れする処理は冗長なものとなる。
【０００７】
この問題を解決するために、米国アトメル社の「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「ＴＨＥ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【０００８】
このようなプログラマブル論理回路を情報処理システムに用いるときの問題は、処理を、プログラマブル論理回路で行う処理と、マイクロプロセッサなどの回路構成を変更できない固定的な論理回路装置で行う処理とで、分離する技術が確立していないことである。
【０００９】
この問題を解決する方法として、アプリケーションプログラムで行う処理の一部を、プログラマブル論理回路の再構成機能を用いてハードウエア化する手法がいくつか考えられている。
【００１０】
従来例１として挙げる特開平６−３０１５２２号公報に開示される計算機の例は、複数のプログラムを元に、プログラマブル論理回路上にハードウエアを構成する例である。これを、図２３を参照しながら説明する。
【００１１】
すなわち、図２３の従来例１においては、計算機で実行するソースプログラム１０００は、回路構成を変更できない固定部と、プログラマブル論理回路のように回路構成を変更できる可変部とで構成される。ライブラリ１００１には、固定部の構成に関する情報と、可変部が構成することができる回路の情報が格納されている。
【００１２】
コンパイラ１００２は、ソースプログラム１０００を解析し、ライブラリ１００１を参照しながら、オブジェクトコードと、ハードウエア構成データに変換する。例えば、コンパイラ１００２は、ソースプログラムのフロー解析を行い、関数の頻度を検出し、その検出した頻度に基づいて、呼び出し回数の多い関数をハードウエアで処理する関数として決定し、ハードウエア構成データ１００３を作成し、出力する。
【００１３】
次に、コンパイラ１００２は、ハードウエアで処理すると決めた部分を所定の可変部で処理することを示すコードを生成する。そして、このコードを、残りのソフトウエアで処理する部分に付加してオブジェクトコード１００４を作成し、出力する。計算機１００５は、固定部と、ハードウエア構成データにより構成された可変部とを用いて、オブジェクトコードに応じた処理を実行する。
【００１４】
このようにして、従来例１では、コンパイル時に呼び出し回数の多い関数をハードウエア化することにより処理全体の高速化を図っている。
【００１５】
次に、前記問題を解決する従来例２として、特開平５−１５０９４３号公報に開示されるコンピュータ装置の場合を説明する。この従来例２においては、プログラマブル論理回路で行う処理と、固定的な論理回路装置で行う処理とに分離された処理を、アプリケーションプログラムとして、情報処理システムとしてのコンピュータ装置で実行する。
【００１６】
この従来例２のコンピュータ装置は、ＣＰＵ、メモリ、プログラマブル論理回路、ハードディスクなどの外部記憶装置、およびその他の入出力インターフェースで構成される。
【００１７】
外部記憶装置には、プログラマブル論理回路の回路データと、アプリケーションプログラムが記憶してある。メモリには、外部記憶装置からアプリケーションプログラムをロードするイニシャルローディングプログラムが記憶してある。
【００１８】
ＣＰＵは、これらのプログラムを実行するとともに、プログラマブル論理回路に回路データを書き込む。プログラマブル論理回路は、ＣＰＵのバスラインに接続され、バスライン上の信号を入力し、論理処理を施してバスラインへ信号を返す。この従来例２における処理手順を、図２４に示す。
【００１９】
まず、実行すべきプログラムファイルを指定する（ステップＳ１）。次に、指定したプログラムファイルに回路データが含まれるか否か判別し（ステップＳ２）、含まれる場合は、回路データ書き込みプログラムをロードして実行し（ステップＳ３）、続いて回路データをロードして（ステップＳ４）、その回路データをプログラマブル論理回路に書き込む（ステップＳ５）。その後、アプリケーションプログラムをロードし（ステップＳ６）、実行する（ステップＳ７）。
【００２０】
指定したプログラムファイルに回路データが含まれていない場合には、ステップＳ２からステップＳ６に飛び、そのまま、アプリケーションプログラムをロードし、実行する。
【００２１】
以上のように、この従来例２の場合、プログラマブル論理回路上の機能を用いる命令実行時に、回路が所定の論理処理を行う。これにより、アプリケーションごとに特殊なハードウエアを設けることなく、必要に応じた論理回路を構成して処理の高速化を図ることができる。
【００２２】
以上に述べた処理の一部分をプログラマブル論理回路で処理する情報処理システムは、ネットワークに接続して利用することができる。その場合の例のひとつとして、特開平９−７４５５６号公報に開示される画像再生装置を、従来例３として次に示す。
【００２３】
この画像再生装置は、図２５に示すように、処理系をプログラマブル論理回路により再構成することが可能な動画像復号部１１００と、動画像復号部１１００を再構成するためのプログラムと符号化された動画像データとをネットワークＮＴからダウンロードするための受信部１２００と、受信データがプログラムか動画像データかによって伝送先を切り換える切り換え手段１３００と、該プログラムを動画像復号部１１００の構成に変更できる形式に変換するプログラム変換部１４００と、受信部１２００と切り換え手段１３００とプログラム変換部１４００と動画像復号部１１００の制御を行うための制御部１５００とからなる。
【００２４】
動画像復号部１１００は、量子化された画像データを逆量子化するものであってその逆量子化処理内容を変更できる逆量子化部１１０１と、変換された画像データを逆変換するものであってその逆変換処理内容を変更できる逆変換部１１０２とを備える。
【００２５】
プログラム変換部１４００は、前記プログラムを、動画像復号部１１００の構成を変更できる形式に変換する第１プログラム部分（ハードウエア処理部分）と、動画像再生時において制御部１５００が行う第２プログラム部分（ソフトウエア処理部分）とに分割する分割部１４０１と、第１プログラム部分を動画像復号部１１００の構成を変更できる形式に変換する第１の変換部（ハードウエアコンパイラ）１４０２と、第２プログラム部分を制御部１５００が解読して処理を実行できる形式に変換する第２の変換部（ソフトウエアコンパイラ）１４０３とを備える。
【００２６】
この画像再生装置は、ネットワークＮＴから、動画像再生用のプログラムと符号化された動画像データとを受信し、次にように動作する。
【００２７】
まず、論理記述言語で記述された再生アルゴリズムプログラムを受信部１２００で受信する。受信データは、伝送切り換え手段１３００を通じてプログラム変換部１４００に伝送され、分割部１４０１でハードウエア処理部分とソフトウエア処理部分とに分割される。
【００２８】
ハードウエア処理部分は、第１の変換部１４０２に渡され、プログラマブル論理回路（ＦＰＧＡ）を書き換えることができる形式（ビットストリーム）に変換され、逆量子化部１１０１と逆変換部１１０２とを制御部１５００からの制御によって書き換える。また、ソフトウエア処理部分は、第２の変換部１４０３に渡され、プロセッサで処理できる形式に変換された後、制御部１５００に渡される。
【００２９】
このように構成された図２５の画像再生装置に、ネットワークＮＴから動画像データが送られると、受信部１２００で受信し、切り換え手段１３００によって動画像復号部１１００に伝送され、復号データとして出力される。
【００３０】
以上のようにして、逆量子化部１１０１と逆変換部１１０２とを、回路構成が変更可能な素子で構成することにより、異なるアルゴリズムによって再生される画像データにも対応することができ、動画像復号部のハードウエアが最適な処理能力を有するようにしている。
【００３１】
【発明が解決しようとする課題】
しかしながら、以上説明した、処理の一部分をプログラマブル論理回路で処理する情報処理システムに関する従来例１〜３は、次のような問題がある。
【００３２】
従来例１では、プログラマブル論理回路で実行する処理は、ひとつのプログラム内で、呼び出し回数の多い関数というように一元的に決めている。このため、情報処理システムが複数のプログラムを用いて複数の処理を一連の処理として一度に行うときには、プログラマブル論理回路を用いた処理を効率的に利用できない欠点がある。
【００３３】
例えば、ひとつのプログラム内での呼び出し回数は少ないが、一連の処理として順次に実行される処理全体で共通に数多く呼び出される関数が存在する場合には、プログラマブル論理回路で処理を実行した方が効率的に良い。しかし、従来例１では、一つのプログラム内で呼び出し回数の少ない当該関数の処理をプログラマブル論理回路で実行するようには決定することができない。
【００３４】
また、関数によっては、対応する回路情報のサイズが大きいため、プログラマブル論理回路に、回路情報を再構成する時間が長くかかり、たとえ呼び出し回数が多くともソフトウエア処理のほうが処理時間が短い場合もあるが、従来例１では、そのような関数処理であっても、呼び出し回数が多いことからプログラマブル論理回路による処理と決定してしまうことになる。
【００３５】
また、従来例２では、アプリケーション毎にハードウエアで処理する部分が予め定められ、そのハードウエアでの処理部分を、プログラム開始前にプログラマブル論理回路に実装している。このため、ハードウエア処理を必要としないソフトウエア処理も回路構成が終了するまで開始されないという問題がある。
【００３６】
特に、回路データのサイズが大きいためプログラマブル論理回路への書き込み時間が長いときには、ハードウエア処理よりも処理速度の遅いソフトウエアで処理したほうが、全体の処理時間が短い場合もある。
【００３７】
すなわち、従来例２の場合には、個々のハードウエア処理とソフトウエア処理の処理時間だけに注目し、プログラマブル論理回路の再構成時間も含めた処理時間全体の短縮を考慮していないことに問題がある。また、個々のプログラム毎にプログラマブル論理回路を再構成しているので、複数のプログラムを実行するときに共通に用いられる回路も重複して構成されてしまい、非効率であるという問題もある。
【００３８】
従来例３では、ネットワークから論理記述言語で記述されたプログラムをダウンロードするので、画像再生装置内でそのプログラムを回路情報に変換する処理に時間がかかるという問題がある。
【００３９】
すなわち、論理記述言語から回路情報に変換する処理は、論理記述言語からネットリストに変換し、それをデバイスに合わせてテクノロジーマッピングを行い、配置配線のレイアウト処理を施し、さらに、その結果を回路情報に変換する必要がある。特に、配置配線の処理はアルゴリズムが複雑で、時間がかかることが知られている。
【００４０】
つまり、従来例３では、ネットワーク上のサーバに格納されていてクライアントが共有するプログラムに、互換性を持たせる目的で、論理記述言語のような抽象度の高い記述方法を用いるために、クライアントでの前処理量が大きくなり、ハードウエア処理による処理時間の短縮を損なうほどに全体の処理時間が長くなる問題がある。
【００４１】
また、従来例３では、プログラムをネットワークから取得しているが、ネットワークでの伝送は、途中で通信が切断し、プログラムをダウンロードできないことも起こり得るため、信頼性の点で問題がある。
【００４２】
さらに、ネットワーク上の伝送は、情報処理システム内部のバスの伝送に比較すると伝送速度が遅い。また、ネットワークやサーバーの負荷が一定ではなく、混む場合は、転送速度が非常に遅くなるなどの問題がある。
【００４３】
このため、ソフトウエア処理では時間のかかる処理を、プログラマブル論理回路によるハードウエア処理に置き換えて高速化しようとしても、そのハードウエア処理の時間を、ネットワークからプログラムをダウンロードする最初のステップから処理の終了までの時間と考えると、ネットワークからの転送速度の不安定性による処理時間の増大の問題は無視できなくなる。
【００４４】
すなわち、プログラマブル論理回路によるハードウエア処理において、ネットワーク転送時間と、回路情報のプログラマブル論理回路への再構成時間は、本来のハードウエアによる処理時間に対し、オーバーヘッドとなり、これが小さいほど望ましい。
【００４５】
以上のように、以上の従来例１〜３に共通した課題として、回路情報を取得する時間も含めたプログラマブル論理回路の再構成時間と、一連の処理として実行される複数のプログラムで共通して用いられる処理を考慮しないで、処理をハードウエア処理とソフトウエア処理に一元的に分離していることが挙げられる。
【００４６】
また、ネットワークを通じて必要な情報を取得する場合の問題も、全体の処理時間や効率化の点で解決しなければならない課題である。
【００４７】
この発明は、プログラマブル論理回路を利用して一部の処理を実行できる情報処理システムにおいて、ソフトウエアとハードウエアとを組み合わせて処理を行う場合の処理速度など処理の効率化の問題を解決するとともに、必要な情報を、ネットワークから取得するときの上述のような問題点を解決することを目的とする。
【００４８】
【課題を解決するための手段】
上記課題を解決するため、この発明による情報処理システムは、
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の少なくとも一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応するハードウエアモジュールを、前記ネットワーク上の記憶装置から入手するものであって、
前記ネットワーク上の複数の記憶装置に対して、前記プログラム内に記述されている前記識別符号に対応する複数個のハードウエアモジュールの取得要求を同時に送出する取得要求送出手段と、
前記取得要求送出手段よりの要求に応じて前記ネットワークを通じて送られてくる前記ハードウエアモジュールの情報を、実行順と異なる場合であっても、到着順に取得して、その回路情報により前記プログラマブル論理回路を再構成する取得再構成手段と、
を有することを特徴とする。
【００４９】
また、請求項２の発明は、請求項１に記載の情報処理システムにおいて、
前記ハードウエアモジュールにより取得し、前記プログラマブル論理回路に再構成した前記ハードウエアモジュールの識別符号を記録する識別符号記録手段を設け、
前記ネットワークからの前記ハードウエアモジュールの情報の到着時に、その到着したハードウエアモジュールの識別符号が、前記識別符号記録手段に記録されているときには、当該ハードウエアモジュールの転送を中止することを特徴とする。
【００５０】
【作用】
上述の構成の発明による情報処理システムにおいては、予め、ソフトウエアモジュールプログラム内に記述され、ハードウエアモジュールが、ネットワーク上の複数の記憶装置部に記憶されている。
【００５１】
このネットワーク上の複数の記憶装置部に記憶されているハードウエアモジュールは、ハードウエア取得手段により読み出され、プログラマブル論理回路に回路情報が再構成される。
【００５２】
実行モジュール決定手段は、プログラムの実行時またはプログラム実行前に、ソフトウエアモジュールとハードウエアモジュールのどちらで処理単位を実行するかを決定する。
【００５３】
従来のように、アプリケーションプログラムにおいて、ソフトウエア処理部分と、ハードウエア処理部分とを事前に固定的に決定するものではないので、その実行モジュールの決定時点における、プログラマブル論理回路の再構成時間も考慮に入れた種々の条件に基づいて、プログラムに記述された処理全体として効率のよい実行モジュールを選択するように決定することができる。
【００５４】
そして、上記の構成の請求項１の発明においては、取得要求送出手段は、プログラム内に記述されるハードウエアモジュールの識別符号から、取得の必要なすべてのハードウエアモジュールの取得要求を送出する。この場合、この取得要求には、ハードウエアモジュールの取得順序などに関する情報は含まれない。
【００５５】
また、この場合の取得の必要なハードウエアモジュールは、プログラム実行時に、ソフトウエアモジュールとハードウエアモジュールのどちらで実行するかを決める場合には、プログラム内に記述された識別符号で示されるハードウエアモジュールのすべてであり、また、プログラム実行前に、ソフトウエアモジュールとハードウエアモジュールのどちらで実行するかを決める場合には、使用すると決定されたハードウエアモジュールである。
【００５６】
ネットワーク上の複数の記憶装置のそれぞれは、この取得要求に対して、自分が有している要求されたハードウエアモジュールの情報を送出するようにする。この送出順序は、各記憶装置に対するアクセスの混雑度や、ネットワーク上での複数の記憶装置のアクセス権の優先順位などの影響のために、定まったものではない。したがって、取得要求したハードウエアモジュールが、どのような順番で情報処理システムに到着するかは定まらない。
【００５７】
この発明の情報処理システムの取得再構成手段は、情報処理システムに到着したハードウエアモジュールを、その到着順に取り込んで、プログラマブル論理回路に再構成する。
【００５８】
もしも、ハードウエアモジュールの情報処理システムへの取り込みおよびプログラマブル論理回路への再構成の順序を、プログラムに記述された処理順というように限定をした場合には、情報処理システムにハードウエアモジュールが到着しても、決められた順序のものでないとして、その取得およびプログラマブル論理回路への再構成がなされない場合が生じる。また、定められた最初のハードウエアモジュールのファイルサイズが大きく、その取得時間およびプログラマブル論理回路への再構成時間が長くかかる場合には、その時間分は、ソフトウエアモジュールで処理を実行しなければならない。
【００５９】
これに対して、この発明においては、上述のように、ネットワーク上の複数の聞く装置に対し、必要なハードウエアモジュールの要求を一度に出し、ネットワークから到着したハードウエアモジュールの順にプログラマブル論理回路に再構成する。したがって、プログラマブル論理回路の再構成が効率的に行われ、アプリケーションによる一連の処理において、再構成が完了したプログラマブル論理回路での処理の機会が増加し、全体としての処理時間の短縮化が期待できる。
【００６０】
また、請求項２の発明においては、既に情報処理システム内の記憶装置に取り込まれ、また、プログラマブル論理回路に再構成されたハードウエアモジュールは、識別符号により識別符号記録手段に記録される。
【００６１】
そして、ネットワークからのハードウエアモジュールの情報の到着時に、識別符号記録手段に記録されている識別符号が参照されて、その到着したハードウエアモジュールの識別符号が、既に識別符号記録手段に記録されているか否か判断され、既に記録されているときには、当該ハードウエアモジュールの転送が中止される。これにより、無駄なデータ転送を排除して、ネットワークからの転送作業を、効率良く行うようにすることができる。
【００６２】
【発明の実施の形態】
以下、この発明による情報処理システムの実施の形態を、図を参照しながら説明する。
【００６３】
［第１の実施の形態］
この発明による、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムの第１の実施の形態の主要な概念構成を図１に示す。
【００６４】
この実施の形態において、対象とするアプリケーションプログラム（以下の説明においては、単にプログラムという場合もある）１００は、当該プログラムにより実行しようとする一連の処理を複数個の処理に分離し、分離された各処理ごとにモジュールとして構成したものである。このモジュールを、この明細書では処理モジュールと称することとする。
【００６５】
この第１の実施の形態では、プログラム１００を構成する各処理モジュールは、ＣＰＵが処理を実行するように、処理がプログラム言語で記述されたソフトウエアプログラムで構成される。この処理モジュール単位のソフトウエアプログラムを、この明細書では、ソフトウエアモジュールと称することとする。したがって、この実施の形態の場合、アプリケーションプログラム１００は、複数個のソフトウエアモジュールＳＭの集合からなる。
【００６６】
この実施の形態においては、ソフトウエアモジュールＳＭのそれぞれが行う処理と同じ処理をプログラマブル論理回路に再構成する回路情報で記述したモジュール（この明細書では、このモジュールをハードウエアモジュールと称する）ＨＭを、ネットワーク上の記憶装置２００に保存して用意する。この場合、記憶装置２００は、ネットワーク上の複数の記憶装置（サーバー）により構成されるものである。
【００６７】
この例の場合、プログラム１００は、図２に示すように、ヘッダ部ＨＥＤと、本体部ＰＲＧとからなり、本体部ＰＲＧが前述したように複数個のソフトウエアモジュールＳＭの集合で構成されている。そして、ヘッダ部ＨＥＤには、各ソフトウエアモジュールＳＭと同じ処理をプログラマブル論理回路に再構成する回路情報で記述した、対応するハードウエアモジュールＨＭの識別符号ＩＤが記述されている。
【００６８】
この場合、プログラム１００には、同じ処理を行うソフトウエアモジュールＳＭとハードウエアモジュールＨＭとの対応が付くように識別符号ＩＤが記述されている。例えば、この例では、本体部ＰＲＧの複数個のソフトウエアモジュールＳＭのプログラム上の処理実行順に従った順番で、各ソフトウエアモジュールＳＭに対応するハードウエアモジュールＨＭの識別符号ＩＤが、ヘッダ部ＨＥＤに記述される。したがって、繰り返し使用されるモジュールは、重複して繰り返し記述される。
【００６９】
ハードウエアモジュール取得手段３００は、プログラム１００中に記述されている識別符号ＩＤを用いて、ソフトウエアモジュールＳＭが実行する処理と同じ処理を実行するハードウエアモジュールＨＭを、ネットワーク上の記憶装置２００から取得する。そして、ハードウエアモジュール取得手段３００は、取得したハードウエアモジュールＨＭによる回路をプログラマブル論理回路４００上に再構成する。
【００７０】
ハードウエアモジュール取得手段３００は、取得要求送出手段３１０と、取得再構成手段３２０とを備える。そして、ハードウエアモジュールＨＭの取得時、取得要求送出手段３１０は、必要なすべてのハードウエアモジュールＨＭの取得要求をネットワークに対して送出する。
【００７１】
この場合、取得要求送出手段３１０は、実行モジュールを、ソフトウエアモジュールとするかハードウエアモジュールとするかをプログラムの実行時に決定する場合には、プログラム１００のヘッダ部ＨＥＤに記述されているすべてのハードウエアモジュールＨＭの識別符号を含むハードウエアモジュール取得要求を送出する。また、実行モジュールの決定を、プログラムの実行前に行った場合には、ハードウエアモジュール処理により実行すると決定されたハードウエアモジュールＨＭの識別符号を含むハードウエアモジュール取得要求を送出する。
【００７２】
ネットワーク上の記憶装置２００を構成する複数の記憶装置は、要求されたハードウエアモジュールＨＭの情報が自己のサーバー内に存在するか否かを、識別符号により判断して、存在していれば、当該要求されたハードウエアモジュールの情報を、その識別符号を付加して、ネットワークを通じて情報処理システムに宛てて転送する。
【００７３】
ハードウエアモジュール取得手段３００の取得再構成手段３２０は、ネットワークを通じて到着したハードウエアモジュールＨＭの情報を、それに付加されている識別符号により、認識し、いまだ、システム内に取り込んでいないハードウエアモジュールであることを確認した後、プログラマブル論理回路４００に、そのハードウエアモジュールによる回路を再構成する。このとき、再構成したハードウエアモジュールＨＭの識別符号を、識別符号記録手段８００に記録するとともに、システム内の記憶装置に、そのハードウエアモジュールＨＭの情報を格納する。
【００７４】
プログラム１００のソフトウエアモジュールＳＭによるソフトウエア処理は、ＣＰＵ５００が実行する。
【００７５】
実際のアプリケーションプログラム１００の処理は、処理モジュールごとに、実行モジュール決定手段６００により、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭのいずれで実行するかが選択されて、実行される。この実施の形態では、実行モジュール決定手段６００は、選択条件設定手段７００に設定されている実行モジュール選択条件に基づいて、どちらのモジュールで処理モジュールを実行するかを決定する。
【００７６】
選択条件設定手段７００には、予め、例えばソフトウエアやハードウエアによる処理時間、メモリ消費量、プログラマブル論理回路の再構成時間などの種々の選択条件項目を想定し、その一つの条件項目あるいは複数個の条件項目を組み合わせて、実行モジュール選択条件を設定することができる。
【００７７】
なお、選択条件設定手段７００は、実行モジュール選択条件をユーザにより設定変更可能なように設けられるものである。したがって、実行モジュール決定手段６００に対して、予め、特定の実行モジュール選択条件が定められて、その選択条件を変えることなく、その選択条件に従って実行モジュールを決定する場合には、この選択条件設定手段７００は、実行モジュール決定手段６００に包含されていることになるので、その場合には、特に設ける必要がなくなる。
【００７８】
実行モジュール決定手段６００での実行モジュールの決定は、前述したように、プログラム実行前に行う場合と、プログラム実行時に行う場合の２通りがある。
【００７９】
［第１の実施の形態のハードウエア構成例］
図３は、この発明の第１の実施の形態の情報処理システム１０のハードウエア構成例を示すブロック図である。この実施の形態の情報処理システム１０においては、ＣＰＵ１１のホストバス１１Ｂに、チップセット１２に含まれるメモリコントローラ（図示せず）を介して、例えばＤＲＡＭで構成されるメインメモリ１３が接続される。
【００８０】
ホストバス１１Ｂは、また、チップセット１２に含まれるホスト−ＰＣＩバスブリッジ（図示せず）を介して、ＰＣＩバス１４に接続される。ＰＣＩバス１４には、プログラマブル論理回路インターフェース１５を介してプログラマブル論理回路１６と、ハードディスクインターフェース１７を介してハードディスクドライブ１８と、通信インターフェース１９とが接続される。
【００８１】
通信インターフェース１９は、ＬＡＮやインターネットなどのネットワーク２０を介して、プログラマブル論理回路１６に再構成される回路情報が格納されている複数個の記憶装置（サーバ）２１、２２、２３に接続される。
【００８２】
ハードディスクドライブ１８により読み書きされるハードディスクには、アプリケーションプログラムが格納されている。また、アプリケーションプログラムは、ネットワーク２０上の記憶装置に格納されている場合もある。
【００８３】
また、ハードディスクドライブ１８のハードディスクやメインメモリ１３には、ネットワーク２０上の記憶装置２１〜２３から取得されたハードウエアモジュールＨＭが、一時格納される。また、プログラマブル論理回路１６が、ローカルメモリを備え、そのローカルメモリにネットワークから取得してハードウエアモジュールＨＭの回路情報を格納しておくようにしてもよい。
【００８４】
これら情報処理システム内の記憶装置に格納されたハードウエアモジュールＨＭの情報は、例えば、当該ハードウエアモジュールの繰り返し使用時であって、プログラマブル論理回路１６に、例えば上書きされるなどして構成されていない場合に、利用される。すなわち、ネットワークからハードウエアモジュールＨＭを入手することなく、このシステム内の記憶装置からプログラマブル論理回路１６にハードウエアモジュールＨＭの回路情報を転送して、再構成する。この場合には、ネットワーク２０からの転送に比べて、システム内のバス転送であるので、高速に行うことができる。
【００８５】
この実施の形態では、ハードウエアモジュール取得手段３００と、実行モジュール決定手段６００が、図３で示した情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装される。
【００８６】
次に、プログラマブル論理回路１６の構造を図４に示す。プログラマブル論理回路１６は、図５に示すように、回路情報を格納するためのコンフィギュレーションメモリ１６０と、論理セル１６１と、配線領域１６２と、入出力端子１６３とで構成される。
【００８７】
コンフィギュレーションメモリ１６０は、論理セル１６１内および配線領域１６２内のＳＲＡＭ、ＤＲＡＭなどの書き換え可能なメモリ素子で構成されている。コンフィギュレーションメモリ１６０にアドレスＡＤＲが与えられて、新しい回路情報のデータＤＡが格納されると、この回路情報に従って、論理セル１６１内の回路構成と、論理セル１６１および入出力端子１６３を相互に接続する配線領域１６２の接続状態が再構成される。この一連の動作をコンフィギュレーションと呼ぶ。コンフィギュレーションメモリ１６０の一部分を書き換えることで、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【００８８】
図５に示すように、プログラマブル論理回路１６に再構成されて形成された回路素子１６４に、処理すべきデータが入力され、また、その処理結果が出力される。
【００８９】
［第１の実施の形態による処理の説明］
図６は、この発明の第１の実施の形態における基本的な処理の流れを示すフローチャートである。この例では、実行モジュール決定手段６００での決定時点は、プログラム実行時であって、どちらのモジュールを使用するかの決定は、各処理モジュールの実行開始の際に行う。
【００９０】
前述したように、この実施の形態では、図１のハードウエア取得手段３００と実行モジュール決定手段６００とが、図３の情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装されており、アプリケーションプログラム１００の開始により、当該ＯＳにより処理が実行される。
【００９１】
以下に説明する例においては、図１の選択条件設定手段７００は設けられず、実行モジュール決定手段６００内に含まれているものとする。そして、この第１の実施の形態では、コンフィギュレーションが完了したプログラマブル論理回路によるハードウエア処理は、一般に、対応するソフトウエア処理よりも高速処理が可能であることから、実行モジュール選択条件として、「実行する処理モジュールに対応するハードウエアモジュールのプログラマブル論理回路１６への再構成が終了しているか否かを判別し、再構成が終了しているときには、その処理モジュールをハードウエアモジュールにより再構成されたプログラマブル論理回路で実行する」という条件が設定されている。
【００９２】
実際のアプリケーションプログラムの実行に先立ち、まず、図２に示したようにプログラム１００内のヘッダ部ＨＥＤに記述されているハードウエアモジュールＨＭの識別符号ＩＤが読み込まれ、当該アプリケーションプログラムで使用される、プログラマブル論理回路１６上に構成する必要のあるハードウエアモジュールＨＭのすべてが、ハードウエアモジュール取得手段３００で認識される（ステップＳ１１）。
【００９３】
次に、アプリケーションプログラムの実行となり、２つのルーチンが並行して実行される。ひとつは、ハードウエアモジュール取得手段３００によるネットワークからのハードウエアモジュール転送およびプログラマブル論理回路１６へのコンフィギュレーションの実行で、もうひとつは、実行モジュール決定手段６００によるプログラムで実行される、処理モジュールごとのソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭの決定およびその処理モジュールの実行である。
【００９４】
ハードウエアモジュール取得手段３００は、この例では、先に読み込んだヘッダ部ＨＥＤの識別符号ＩＤのすべてを含むハードウエアモジュール取得要求を、ネットワーク２０に送出する（ステップＳ１２）。
【００９５】
そして、このハードウエアモジュール取得要求に対して、ネットワーク２０上の記憶装置２１〜２３のいずれかから、速いもの順に情報処理システム１０に到来するハードウエアモジュールＨＭを取得して、その転送およびプログラマブル論理回路１６へのコンフィギュレーションを行う。そして、そのコンフィギュレーションが完了したら、実行モジュール決定手段６００からの問い合わせに対し、完了したハードウエアモジュールＨＭを通知する（ステップＳ１３）。
【００９６】
そして、ハードウエアモジュール取得手段３００は、まだプログラマブル論理回路１６にコンフィギュレーションしていないハードウエアモジュールＨＭがあるか否か判断し（ステップＳ１４）、まだコンフィギュレーションしていない他のハードウエアモジュールＨＭがあれば、ステップＳ１３に戻って、ネットワークからのハードウエアモジュールの到着を待って、上述と同様にして、ハードウエアモジュールＨＭの転送およびコンフィギュレーションを実行する。
【００９７】
ハードウエアモジュール取得手段３００は、先に読み込んだ識別符号ＩＤのすべてのハードウエアモジュールＨＭについて、上述の処理が終了すれば、転送およびコンフィギュレーションを終了する。
【００９８】
実行モジュール決定手段６００は、実行しようとする処理モジュールに対応するハードウエアモジュールＨＭのコンフィギュレーションが完了しているか否か、ハードウエアモジュール取得手段３００に問い合わせて判断し（ステップＳ１５）、当該対応するハードウエアモジュールＨＭのコンフィギュレーションが完了していれば、ハードウエアモジュールＨＭによる処理を行い（ステップＳ１６）、コンフィギュレーションが完了していなければ、対応するソフトウエアモジュールＳＭによる処理を実行する（ステップＳ１７）。
【００９９】
そして、当該処理モジュールの処理が終了すると、次の処理モジュールがあるか否か判断し（ステップＳ１８）、次の処理モジュールがあれば、ステップＳ１５に戻り、次の処理モジュールがなければ、このアプリケーションによる処理を終了する。
【０１００】
ここで、ハードウエアモジュール取得手段３００と、実行モジュール決定手段６００との間でのコミュニケーションは、図３のシステム１０においては、具体的には、次のようにしてなされる。
【０１０１】
すなわち、ハードウエアモジュールＨＭがプログラマブル論理回路１６上にコンフィギュレーションされると、ＰＣＩバス１４を介してＣＰＵ１１上で稼動するＯＳに検知され、そのＯＳの一部として機能しているハードウエアモジュール取得手段３００から、実行モジュール決定手段６００に通知される。
【０１０２】
また、プログラムの処理状況がＣＰＵ１１上で稼動するＯＳで検知され、このＯＳの一部として機能している実行モジュール決定手段６００から、ハードウエアモジュール取得手段３００に対して、ハードウエアモジュールＨＭの回路情報の転送およびコンフィギュレーションの開始や中断が指示される。
【０１０３】
以上のようにして、この実施の形態では、処理モジュールの実行をするときに、対応するハードウエアモジュールＨＭが、プログラマブル論理回路１６に再構成されていれば、当該処理モジュールの処理は、ハードウエアモジュールで実行するようにする。
【０１０４】
前述もしたように、通常、プログラマブル論理回路へのコンフィギュレーションのための時間を考慮しなければ、ハードウエアで処理した方が高速処理が可能である。したがって、上述のように、コンフィギュレーションが完了した時点から、そのコンフィギュレーションが完了したハードウエアモジュールで処理を実行することで、アプリケーションプログラムによる一連の処理を高速に行うことができるようになる。
【０１０５】
そして、この実施の形態では、ハードウエアモジュールＨＭの回路情報は、ネットワーク上の最も転送処理能力が高い記憶装置から取得するようにしたので、コンフィギュレーション時間のオーバヘッドとしてのネットワークからの転送時間は、最小とすることができる。
【０１０６】
［処理の具体例（第１の実施例）］
次に、図７、図８および図９のフローチャートを用いて、第１の実施の形態の処理の具体例である第１の実施例を、以下に説明する。
【０１０７】
図７は、この第１の実施例における、図６のフローチャートに対応する詳細な処理の流れの全体を示したフローチャートである。図８は、図７におけるハードウエアモジュールＨＭの転送およびコンフィギュレーションのルーチンＲ４０のステップＳ２２の詳細なフローチャートを示している。また、図９は、図７におけるソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理ルーチンＲ５０のステップＳ３２の詳細なフローチャートを示している。
【０１０８】
図７において、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理のルーチンＲ３０と、ハードウエアモジュールＨＭのコンフィギュレーションのルーチンＲ２０は並行して実行される。
【０１０９】
ここで、この第１の実施例では、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理モジュールをＭ種類行い、これらのＭ種類の処理モジュールからなる一連の処理を、Ｎ回繰り返すものとする。
【０１１０】
図７に示すように、アプリケーションプログラムの実行に先立ち、ハードウエアモジュールＨＭの識別符号がアプリケーションプログラムのヘッダ部ＨＥＤから読み取られる（ステップＳ１１）。このあと、ハードウエアモジュールＨＭのコンフィギュレーションを行うルーチンＲ２０と、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を行うルーチンＲ３０とが並行して実行される。
【０１１１】
ルーチンＲ２０においては、まず、Ｍ種類のハードウエアモジュールＨＭの取得要求をネットワーク２０に送出する（ステップＳ２０）。次に、Ｍ種類のハードウエアモジュールＨＭのうちの、いくつのハードウエアモジュールＨＭがコンフィギュレーションされたかを示す変数ｉを初期化し（ステップＳ２１）、その後、ハードウエアモジュールＨＭのコンフィギュレーションの処理ルーチンＲ４０を実行するステップＳ２２に進む。
【０１１２】
このステップＳ２２のコンフィギュレーションの処理ルーチンＲ４０においては、図８に示すように、現在、情報処理システムにネットワーク２０から到着しているハードウエアモジュールＨＭが、どの処理モジュールに対応したものであるかを、そのハードウエアモジュールＨＭに付加されている識別符号ＩＤにより確認し、それを識別符号記録手段８００により記録されている識別符号と照合し（ステップＳ４１）、既に、そのハードウエアモジュールＨＭが転送されたものであるか否か判断する（ステップＳ４２）。
【０１１３】
このステップＳ４１での判断の結果、既に転送されている場合には、そのハードウエアモジュールを送ってきているネットワーク上の記録装置に対し、転送中止のコマンドを送り、転送を中止する（ステップＳ４２）。
【０１１４】
一方、まだ、到来したハードウエアモジュールＨＭが、情報処理システム１０内には転送されていなかったハードウエアモジュールＨＭであると判別したときには、そのハードウエアモジュールＨＭによる回路が、プログラマブル論理回路１６上に存在するかどうかを確認し（ステップＳ４４）、存在すれば、既にプログラマブル論理回路１６上に構成されていることをＯＳに通知する（ステップＳ４６）。このとき、コンフィギュレーションは行わない。つまり、プログラマブル論理回路１６には、既に必要な回路が存在するので、重ねてコンフィギュレーションするような無駄はしない。
【０１１５】
また、転送中のハードウエアモジュールＨＭが、プログラマブル論理回路１６上に存在しなければ、コンフィギュレーションを実行する（ステップＳ４５）。そして、ハードウエアモジュールＨＭのプログラマブル論理回路１６への再構成が終了した時点で、ステップＳ４６に移り、コンフィギュレーションの終了をＯＳに通知する。そして、図７に戻って変数ｉをカウントアップする（ステップＳ２３）。
【０１１６】
ハードウエアモジュールＨＭのコンフィギュレーションが完了する前に、このハードウエアモジュールＨＭに対応する処理が開始される場合には、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を行うルーチンＲ３０で、ソフトウエアモジュールＳＭによる処理が行われるが、ハードウエアモジュールＨＭのコンフィギュレーションは続行される。
【０１１７】
そして、Ｍ種類のハードウエアモジュールＨＭのすべてを、コンフィギュレーションする途中で、アプリケーションプログラム１００により実行される一連の繰り返し処理数をカウントする変数ｊが、ｊ＞Ｎとなったと判別され（ステップＳ２４）、アプリケーションが終了する場合には、Ｍ種類のハードウエアモジュールＨＭのうちの一部は、コンフィギュレーションされない。
【０１１８】
しかし、情報処理システム１０内の記憶装置に余裕があれば、ネットワーク２０上の記憶装置からの回路情報の取得を続行して、システム１０内の記憶装置に格納するようにすることもできる。そのようにすれば、同種のアプリケーションが、その後に実行されるときに、ネットワーク２０からの回路情報のシステム内の記憶装置への取り込みが完了しており、その分のアクセス時間を短縮することができる。また、後で、ネットワーク２０から取得しようとしたときに、ネットワーク２０に障害が生じていて、必要なハードウエアモジュールＨＭが取得できない事態になっても、その影響が最小限に押さえられる。
【０１１９】
次に、コンフィギュレーションするべきハードウエアモジュールＨＭが残っているかを確認するために、変数ｉと変数Ｍを比較する（ステップＳ２５）。変数ｉが、変数Ｍと等しいか小さければ、次のハードウエアモジュールＨＭのコンフィギュレーションを開始し、変数ｉが変数Ｍよりも大きければ、必要なすべてのハードウエアモジュールＨＭがプログラマブル論理回路１６上に構成されたことがわかり、図８のコンフィギュレーション処理を終了する。
【０１２０】
次に、図７において、ルーチン２０と並行して実行されるルーチンＲ３０では、まず、一連の繰り返し処理数をカウントする変数ｊが初期化され（ステップＳ３１）、その後、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭによる処理を実行するルーチンＲ５０のステップＳ３２に移る。
【０１２１】
このステップＳ３２のルーチンＲ５０においては、図９に示すように、まず、何番めの処理モジュールによる処理であるかをカウントする変数ｋが初期化される（ステップＳ５１）。
【０１２２】
次に、ｋ番目のハードウエアモジュールＨＭが、プログラマブル論理回路１６上に構成されたかどうかを確認するために、ＯＳに問い合わせに行く（ステップＳ５２）。すなわち、転送及びコンフィギュレーションのルーチンＲ４０から、処理順がａ番めのハードウエアモジュールが転送及びコンフィギュレーションされたことが、どのハードウエアモジュールが転送及びコンフィギュレーションされたかを検出する手段を通して通知されるので、ａ番目のハードウエアモジュールが、プログラマブル論理回路１６上に構成されたかを確認するためと併せて、ＯＳに問い合わせに行く。
【０１２３】
この場合、ＯＳは、Ｍ種類の処理モジュールにそれぞれ対応するフラグを用意して、それらのうちａ番目の処理モジュールのフラグを立てるなどして、ａ番目のハードウエアモジュールのコンフィギュレーション終了が確認できるようにしておく。
【０１２４】
プログラマブル論理回路１６上に、ｋ番目の処理モジュールに対応するハードウエアモジュールＨＭの構成が終了していれば、ハードウエアモジュールＨＭで処理を実行する（ステップＳ５３）。
【０１２５】
一方、まだ、ｋ番目の処理モジュールに対応するハードウエアモジュールＨＭが、プログラマブル論理回路１６上に構成されていなければ、ソフトウエアモジュールＳＭで処理を実行する（ステップＳ５４）。
【０１２６】
次に、処理モジュールが何番目のものであるかを示す変数ｋをカウントアップし（ステップＳ５５）、次のｋ＋１番目の処理モジュールについて、その前のｋ番目の処理モジュールと同様にしてステップＳ５２からステップＳ５５のステップを実行し、それを、最後のＭ番目の処理モジュールまで繰り返す（ステップＳ５６）。そして、最後のＭ番目の処理モジュールについての処理が終了したときには、図７のルーチンに戻る。
【０１２７】
図７においては、繰り返しの変数ｊをカウントアップし（ステップＳ３３）、次の繰り返し処理が開始される。繰り返し処理をＮ回行うとアプリケーションは終了する（ステップＳ３４）。
【０１２８】
以上説明したように、第１の実施例においては、Ｍ種の処理モジュールのＮ回の繰り返しを行う処理のアプリケーションプログラムにおいて、最初は、ソフトウエアモジュールＳＭによる処理が実行されるが、処理を行っている間に、Ｍ種のハードウエアモジュールＨＭのコンフィギュレーションが、徐々に完了し、その完了したハードウエアモジュールＨＭが順次に使用される。したがって、繰り返し処理の繰り返しの回数が増加するにつれて、コンフィギュレーションが完了するハードウエアモジュールＨＭの数も増加し、処理速度が徐々に上がり、全体としての処理時間は、短縮化されるものである。
【０１２９】
［第１の実施の形態の処理の他の実施例（第２の実施例）］
次に、この発明の第１の実施の形態を、画像処理に適用したより詳細な実施例（第２の実施例という）について説明する。この第２の実施例では、線形変換処理、ノイズ除去処理および輪郭強調処理の３種の処理を、それぞれ以下に説明するような３種の画像フィルタを用いて画像データについて行うことにより、不鮮明な画像を鮮明にする画像処理を行うようにする。まず、各画像フィルタについて説明する。
【０１３０】
［ノイズ除去処理用フィルタの例の説明］
画像処理のひとつである空間フィルタ処理は、単位画素から構成される画像ファイルの単一もしくは複数画素に対して演算を行う。これは、ある画素（データｘl,m ）の近傍の画素（データｐl,m ）に、マスクデータfilterl,m を掛けて足し合わせ、係数Ｎを乗じたものを処理後の画素値ｘl,m として得る処理として、次の式（１）のように表すことができる。ここで、マスクデータfilterl,m や係数Ｎの値を変えることにより、空間フィルタは様々な処理を実行することが可能である。
【０１３１】
【数１】
0003747985.tif 000002
【０１３２】
図１０は、画像にガウス分布の平滑化処理を施してノイズ除去を行うＧａｕｓｓｉａｎフィルタと呼ばれる画像フィルタのマスクデータの例である。中心画素のデータｘ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から開始する。この時点t1において、必要なすべてのハードウエアモジュールＨＭの取得要求がネットワークに送出され、ネットワーク上のサーバーへのアクセスが開始する。
【０１６８】
そして、図１９において、繰り返し数をカウントするｊが初期化されてｊ＝１となり（ステップＳ３１）、画像のＲプレーンに対する処理を開始する。次に何番めのモジュールデータについての処理かを示す変数ｋを初期化してｋ＝１とする（ステップＳ５１）。
【０１６９】
ネットワークへのハードウエアモジュールのアクセスが終了すると、この例では、図２１に示すように、時点t2から、処理β（ＡＢＣ００１）の、ネットワークから情報処理システムへの転送及びコンフィギュレーションが開始される。
【０１７０】
そして、処理α（ＰＱＲ００１）を実行する直前の時点t2で、ＯＳにどのハードウエアモジュールが転送及びコンフィギュレーションされているか、そしてそのモジュールのコンフィギュレーションは完了したかを問い合わせる（ステップＳ５２）。コンフィギュレーションされるモジュールが、処理されるモジュールと一致していないか、あるいは一致していてもコンフィギュレーションが完了していない場合、アプリケーションプログラムＡＰは、ソフトウェアモジュールＳｍＰＱＲ００１を使って処理を実行する（ステップＳ５４）。
【０１７１】
そして、処理βのハードウェアモジュールＨｍＡＢＣ００１が、プログラマブル論理回路１６上にコンフィギュレーションされると、ＯＳに対しコンフィギュレーションの完了が通知される（時点t3）。また、時点t4から処理γ（ＸＹＺ００１）のハードウエアモジュールの転送が始まり、時点t5で完了する。
【０１７２】
このため、処理βの直前の時点t4で、また、処理γの直前の時点t6で、ＯＳに対し同様の問い合わせを行うと（ステップＳ５２）、この例では、図２１のタイミングチャートに示すように、ハードウエアモジュールＨｍＡＢＣ００１およびハードウエアモジュールＨｍＸＹＺ００１のコンフィギュレーションが、それぞれ完了しているので、それぞれ、これらハードウエアモジュールＨｍＡＢＣ００１，ＨｍＸＹＺ００１を用いて処理βおよび処理γを、それぞれ実行して（ステップＳ５３）、繰り返し処理の１回目が終了する。
【０１７３】
上述した繰り返し処理の１回目が終了した後に、画像のＧプレーンを処理する繰り返し処理の２回目が始まり（ｊ＝２）、再び、処理αの直前の時点t9までプログラムが進行すると、再び、ＯＳに、どのハードウエアモジュールが転送及びコンフィギュレーションされているか、そしてそのモジュールのコンフィギュレーションは完了したかを問い合わせる（ステップＳ５２）。ここでは、処理αは、まだコンフィギュレーションまで完了されていないので、Ｒプレーンの処理同様、時点t9から時点t11 までの２回目の処理αも、ソフトウエアモジュールＳｍＰＱＲ００１で処理を行う。
【０１７４】
次に、処理βの直前の時点t12 で、ＯＳに対し問い合わせを行うと（ステップＳ５２）、対応するハードウエアモジュールＨｍＡＢＣ００１は、すでにコンフィギュレーションまで完了しているので、プログラムデータをハードウエアモジュールＨｍＡＢＣ００１に渡し、ハードウエアで処理した結果のみをプログラムへ戻す（ステップＳ５３）。
【０１７５】
次に、２回目の処理γの直前の時点t16 で、ＯＳに対し問い合わせを行うと（ステップＳ５２）、ここでも同様に、対応するハードウエアモジュールＨｍＸＹＺ００１は、コンフィギュレーションまで完了しているので、このハードウエアモジュールＨｍＸＹＺ００１で処理を行って（ステップＳ５３）、繰り返し処理の２回目が終了する。
【０１７６】
繰り返し処理の２回目が終了した後に、画像のＢプレーンを処理する繰り返し処理の３回目が始まる（ｊ＝３）。このときには、各処理の直前の時点t18 、t20 、t22 で、ＯＳにコンフィギュレーションを問い合わすと、対応するハードウエアモジュールＨｍＰＱＲ００１，ＨｍＡＢＣ００１，ＨｍＸＹＺ００１の全てがプログラマブル論理回路１６上にコンフィギュレーションされているので、処理α，β、γは、全て、ハードウェアモジュールＨｍＰＱＲ００１，ＨｍＡＢＣ００１，ＨｍＸＹＺ００１にて処理が実行され、くり返し処理の３回目が終了し、アプリケーションも終了する。
【０１７７】
図２２は、ハードウエアモジュールＨＭのネットワークからの取得順を、プログラム順である、α→β→γの順にして処理を実行した場合のタイミングチャートである。図２２では、処理α、β、γの回路情報は、それらが格納されているサーバに対して、最初に、処理αの情報へ、次に、処理βの情報へ、最期に処理γの情報へ、個別にアクセスが行われる。
【０１７８】
したがって、図２１と比較して、各ハードウエアモジュールの回路情報は必ずプログラムで実行される処理順序に従ってアクセスする必要があることから、個別にアクセスしなければならず、アクセス時間の総和が長くなる分だけ、コンフィギュレーション終了までに費やされる時間も長くなる。
【０１７９】
一方、この実施の形態の図２１の例では、プログラム実行の処理順序と異なった転送順序でハードウエアモジュールが転送されてくることに対応可能であることから、プログラム実行の処理順序にしたがってアクセスする必要が無い。そのため、アクセスに必要な時間は、各ハードウエアモジュールの回路情報のうち、アクセス時間が最長のものの分だけであり、ハードウエアモジュール全体のアクセスからコンフィギュレーション終了までの時間は、従来に比べて短縮されている。
【０１８０】
以上のようにして、この第１の実施の形態においては、ソフトウエアモジュールによる処理を実行しながら、ハードウエアモジュールのプログラマブル論理回路１６へのコンフィギュレーションを並行して行い、コンフィギュレーションが完了したものについては、プログラマブル論理回路１６によるハードウエア処理を行うようにしたので、コンフィギュレーションの時間を考慮することなく、効率的にソフトウエア処理とハードウエア処理とを行って、全体としての処理時間の短縮化を図ることができる。
【０１８１】
［第２の実施の形態］
以上の第１の実施の形態は、各処理モジュールをソフトウエアモジュールＳＭで行うか、ハードウエアモジュールＨＭで行うかを、アプリケーションプログラムの実行時に決定するようにしたが、前述もしたように、アプリケーションプログラムの実行前に行うようにすることもできる。
【０１８２】
この第２の実施の形態は、図１または図１１において、実行モジュール決定手段６００での実行モジュールの決定を、アプリケーションプログラムの実行前に行うようにする場合である。
【０１８３】
この第２の実施の形態の場合、アプリケーションプログラムのヘッダ部ＨＥＤには、各ソフトウエアモジュールＳＭの識別符号と、ハードウエアモジュールＨＭの識別符号とが、対応して記述されるとともに、それぞれのモジュールの能力などに関する情報、例えば、それぞれの処理にかかる時間、ソフトウエアモジュールのメモリ使用量、ハードウエアモジュールのプログラマブル論理回路セル使用量などが、記述されている。
【０１８４】
この第２の実施の形態の情報処理システムは、アプリケーションプログラムの実行前に、このヘッダ部ＨＥＤの情報を取得する。そして、前記のソフトウエアモジュールＳＭおよびハードウエアモジュールＨＭについての能力等に関する情報を、情報処理システムのディスプレイの画面に表示する。
【０１８５】
ユーザは、期待する処理時間、情報処理装置が備えているメモリ量、プログラマブル論理回路が備えているセル数を考慮して、各処理モジュールをどちらのモジュールで行うかを、キー操作部を用いて指示する。
【０１８６】
この第２の実施の形態の場合には、ハードウエアモジュール取得手段３００の取得要求送出手段３１０が送出するハードウエアモジュールＨＭの取得要求は、プログラムのヘッダ部ＨＥＤに識別符号が記述されているすべてのハードウエアモジュールＨＭの取得要求ではなく、事前に選択されたハードウエアモジュールＨＭのみの取得要求となる。
【０１８７】
ハードウエアモジュールの転送およびコンフィギュレーションも、プログラムの実行前に行うことも考えられるが、コンフィギュレーションメモリの容量を考慮した場合、必要なすべての回路を、予めプログラマブル論理回路に構成して用意することは困難である。
【０１８８】
このため、この第２の実施の形態においても、転送およびコンフィギュレーションは、プログラムの実行時に行われる。そして、その転送およびコンフィギュレーションは、第１の実施の形態において説明したのと同様にして、効率良く行われるものである。
【０１８９】
実行モジュール決定手段６００は、各処理モジュールを、ソフトウエアモジュールと、ハードウエアモジュールのいずれで実行するかの、予めユーザにより設定された指示の情報を格納する。そして、実行モジュール決定手段６００は、各処理モジュールの実行時に、設定されたモジュールで処理を実行するように制御する。ただし、コンフィギュレーションが終了していないときには、ソフトウエアモジュールにより、その処理モジュールを実行する。
【０１９０】
このように、この第２の実施の形態の場合には、プログラム開始前に、各処理モジュールの実行について、ソフトウエアモジュールとハードウエアモジュールのいずれを使用するかを、ユーザが自由に選択指示することができる。したがって、処理速度だけでなく、メモリ使用量などを考慮した適切な処理を行うようにすることができる。
【０１９１】
【発明の効果】
以上説明したように、この発明によれば、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアで処理を実行するか、プログラマブル論理回路によるハードウエアで処理を実行するかを、柔軟に決定することができ、従来のように、アプリケーションプログラムにおいて、ソフトウエアモジュールとハードウエアモジュールとで、処理する部分を事前に固定的に決定する必要が無い。
【０１９２】
そして、この発明によれば、プログラム実行の処理順序とは異なった転送順序で、ネットワークからハードウエアモジュールの情報が転送されてきても、処理内容に影響をあたえることなく、ハードウエアモジュールの転送順序とプログラム実行の処理順序との差異に柔軟に対応することが可能となる。
【０１９３】
また、ハードウエアモジュールのコンフィギュレーションの順序がプログラム実行の処理順序にとらわれることなく、逐次、プログラマブル論理回路へのコンフィギュレーションが実行されるため、ハードウエアモジュール全体のコンフィギュレーション時間を削減することができ、ハードウエアによる処理の時間短縮というメリットを十分引き出すことが可能となる。
【図面の簡単な説明】
【図１】この発明による情報処理システムの第１の実施の形態の概念構成を示すブロック図である。
【図２】この発明による情報処理システムの第１の実施の形態で用いるアプリケーションプログラムの一例を説明するための図である。
【図３】この発明による情報処理システムの第１の実施の形態のハードウエア構成例を示す図である。
【図４】プログラマブル論理回路の一例を説明するための図である。
【図５】プログラマブル論理回路の一例を説明するための図である。
【図６】この発明による情報処理システムの第１の実施の形態の主要な処理動作を説明するためのフローチャートである。
【図７】この発明による情報処理システムの第１の実施の形態の処理の具体例を説明するためのフローチャートである。
【図８】図７の一部の処理ルーチンを説明するためのフローチャートである。
【図９】図７の一部の処理ルーチンを説明するためのフローチャートである。
【図１０】この発明による情報処理システムの第１の実施の形態における処理の具体例で用いる処理モジュールの一つを説明のための図である。
【図１１】第１の実施の形態の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１２】第１の実施の形態の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１３】第１の実施の形態の実施例で用いる処理モジュールの一つを説明するための図である。
【図１４】第１の実施の形態の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１５】第２の実施の形態の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１６】第１の実施の形態の実施例で用いるソフトウエアモジュールの一つを説明するための図である。
【図１７】第１の実施の形態の実施例で用いるハードウエアモジュールの一つを説明するための図である。
【図１８】第１の実施の形態の実施例で用いるアプリケーションプログラムを説明するための図である。
【図１９】第１の実施の形態の実施例の処理の流れを説明するためのフローチャートである。
【図２０】図１９のフローチャートの一部のフローチャートである。
【図２１】第１の実施の形態の実施例の処理の流れを説明するためのタイミングチャートである。
【図２２】この発明の第１の実施の形態との処理の状態の比較をするための比較例を示すタイミングチャートである。
【図２３】従来の情報処理システムの一つを説明するための図である。
【図２４】従来の情報処理システムの他の一つを説明するための図である。
【図２５】従来の情報処理システムの、さらに他の一つを説明するための図である。
【符号の説明】
１０  情報処理システム
１１  ＣＰＵ
１２  チップセット
１３  メインメモリ
１４  バス
１５  プログラマブル論理回路インターフェース
１６  プログラマブル論理回路
１７  ハードディスクインターフェース
１８  ハードディスクドライブ
１９  通信インターフェース
２０  ネットワーク
２１、２２、２３  ネットワーク上の記憶装置
１００  アプリケーションプログラム
１６０  コンフィギュレーションメモリ
２００  ネットワーク上の記憶装置
３００  ハードウエアモジュール取得手段
３１０  取得要求送出手段
３２０  取得再構成手段
４００  プログラマブル論理回路
５００  ＣＰＵ
６００  実行モジュール決定手段
７００  選択条件設定手段
８００  識別符号記憶手段
【図１】
0003747985.tif 000003
【図２】
0003747985.tif 000004
【図３】
0003747985.tif 000005
【図４】
0003747985.tif 000006
【図５】
0003747985.tif 000007
【図６】
0003747985.tif 000008
【図７】
0003747985.tif 000009
【図８】
0003747985.tif 000010
【図９】
0003747985.tif 000011
【図１０】
0003747985.tif 000012
【図１１】
0003747985.tif 000013
【図１２】
0003747985.tif 000014
【図１３】
0003747985.tif 000015
【図１４】
0003747985.tif 000016
【図１５】
0003747985.tif 000017
【図１６】
0003747985.tif 000018
【図１７】
0003747985.tif 000019
【図１８】
0003747985.tif 000020
【図１９】
0003747985.tif 000021
【図２０】
0003747985.tif 000022
【図２１】
0003747985.tif 000023
【図２２】
0003747985.tif 000024
【図２３】
0003747985.tif 000025
【図２４】
0003747985.tif 000026
【図２５】
0003747985.tif 000027