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