JP3738802B2 - Information processing system - Google Patents

Information processing system Download PDF

Info

Publication number
JP3738802B2
JP3738802B2 JP02813698A JP2813698A JP3738802B2 JP 3738802 B2 JP3738802 B2 JP 3738802B2 JP 02813698 A JP02813698 A JP 02813698A JP 2813698 A JP2813698 A JP 2813698A JP 3738802 B2 JP3738802 B2 JP 3738802B2
Authority
JP
Japan
Prior art keywords
module
processing
program
hardware
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP02813698A
Other languages
Japanese (ja)
Other versions
JPH11232309A (en
Inventor
弘之 三宅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=12240365&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP3738802(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP02813698A priority Critical patent/JP3738802B2/en
Publication of JPH11232309A publication Critical patent/JPH11232309A/en
Application granted granted Critical
Publication of JP3738802B2 publication Critical patent/JP3738802B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
この発明は、少なくとも処理の一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能である情報処理システムに関するものであり、特に、情報処理システムで効率の良い処理が実行できるようにする発明に関する。
【0002】
【従来の技術】
デジタル回路装置、特に特定用途向け集積回路(ASIC)の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ(FPGA)やプログラマブルロジックデバイス(PLD)などで構成されたプログラマブル論理回路が広く使われている。
【0003】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路装置を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、米国特許第4,700,187号の発明のような電気的に再構成可能なプログラマブル論理回路装置は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路装置は、ますます広く使われるようになってきている。
【0004】
ところで、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【0005】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するためにプログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【0006】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要で、データを出し入れする処理は冗長なものとになる。
【0007】
この問題を解決するために、米国アトメル社の「CONFIGURABLE LOGIC」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「THE PROGRAMMABLE LOGIC」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【0008】
このようなプログラマブル論理回路を情報処理システムに用いるときの問題は、処理を、プログラマブル論理回路で行う処理と、マイクロプロセッサなどの回路構成を変更できない固定的な論理回路装置で行う処理とで、分離する技術が確立していないことである。
【0009】
この問題を解決する方法のひとつとして、特開平6−301522号公報に開示される計算機の例がある。これを、従来例1として、図20を参照しながら説明する。
【0010】
すなわち、図20の従来例1においては、計算機で実行するソースプログラム1000は、回路構成を変更できない固定部と、プログラマブル論理回路のように回路構成を変更できる可変部とで構成される。ライブラリ1001には、固定部の構成に関する情報と、可変部が構成することができる回路の情報が格納されている。
【0011】
コンパイラ1002は、ソースプログラム1000を解析し、ライブラリ1001を参照しながら、オブジェクトコードと、ハードウエア構成データに変換する。例えば、コンパイラ1002は、ソースプログラムのフロー解析を行い、関数の頻度を検出し、その検出した頻度に基づいて、呼び出し回数の多い関数をハードウエアで処理する関数として決定し、ハードウエア構成データ1003を作成し、出力する。
【0012】
次に、コンパイラ1002は、ハードウエアで処理すると決めた部分を所定の可変部で処理することを示すコードを生成する。そして、このコードを、残りのソフトウエアで処理する部分に付加してオブジェクトコード1004を作成し、出力する。計算機1005は、固定部と、ハードウエア構成データにより構成された可変部とを用いて、オブジェクトコードに応じた処理を実行する。
【0013】
このようにして、従来例1では、コンパイル時に呼び出し回数の多い関数をハードウエア化することにより処理全体の高速化を図っている。
【0014】
次に、前記問題を解決する従来例2として、特開平5−150943号公報に開示されるコンピュータ装置の場合を説明する。この従来例2においては、プログラマブル論理回路で行う処理と、固定的な論理回路装置で行う処理とに分離された処理を、アプリケーションプログラムとして、情報処理システムとしてのコンピュータ装置で実行する。
【0015】
この従来例2のコンピュータ装置は、CPU、メモリ、プログラマブル論理回路、ハードディスクなどの外部記憶装置、およびその他の入出力インターフェースで構成される。
【0016】
外部記憶装置には、プログラマブル論理回路の回路データと、アプリケーションプログラムが記憶してある。メモリには、外部記憶装置からアプリケーションプログラムをロードするイニシャルローディングプログラムが記憶してある。
【0017】
CPUは、これらのプログラムを実行するとともに、プログラマブル論理回路に回路データを書き込む。プログラマブル論理回路は、CPUのバスラインに接続され、バスライン上の信号を入力し、論理処理を施してバスラインへ信号を返す。この従来例2における処理手順を、図21に示す。
【0018】
まず、実行すべきプログラムファイルを指定する(ステップS1)。次に、指定したプログラムファイルに回路データが含まれるか否か判別し(ステップS2)、含まれる場合は、回路データ書き込みプログラムをロードして実行し(ステップS3)、続いて回路データをロードして(ステップS4)、その回路データをプログラマブル論理回路に書き込む(ステップS5)。その後、アプリケーションプログラムをロードし(ステップS6)、実行する(ステップS7)。
【0019】
指定したプログラムファイルに回路データが含まれていない場合には、ステップS2からステップS6に飛び、そのまま、アプリケーションプログラムをロードし、実行する。
【0020】
以上のように、この従来例2の場合、プログラマブル論理回路上の機能を用いる命令実行時に、回路が所定の論理処理を行う。これにより、アプリケーションごとに特殊なハードウエアを設けることなく、必要に応じた論理回路を構成して処理の高速化を図ることができる。
【0021】
以上に述べた処理の一部分をプログラマブル論理回路で処理する情報処理システムは、ネットワークに接続して利用することができる。その場合の例のひとつとして、特開平9−74556号公報に開示される画像再生装置を、従来例3として次に示す。
【0022】
この画像再生装置は、図22に示すように、処理系をプログラマブル論理回路により再構成することが可能な動画像復号部1100と、動画像復号部1100を再構成するためのプログラムと符号化された動画像データとをネットワークNTからダウンロードするための受信部1200と、受信データがプログラムか動画像データかによって伝送先を切り換える切り換え手段1300と、該プログラムを動画像復号部1100の構成に変更できる形式に変換するプログラム変換部1400と、受信部1200と切り換え手段1300とプログラム変換部1400と動画像復号部1100の制御を行うための制御部1500とからなる。
【0023】
動画像復号部1100は、量子化された画像データを逆量子化するものであってその逆量子化処理内容を変更できる逆量子化部1101と、変換された画像データを逆変換するものであってその逆変換処理内容を変更できる逆変換部1102とを備える。
【0024】
プログラム変換部1400は、前記プログラムを、動画像復号部1100の構成を変更できる形式に変換する第1プログラム部分(ハードウエア処理部分)と、動画像再生時において制御部1500が行う第2プログラム部分(ソフトウエア処理部分)とに分割する分割部1401と、第1プログラム部分を動画像復号部1100の構成を変更できる形式に変換する第1の変換部(ハードウエアコンパイラ)1402と、第2プログラム部分を制御部1500が解読して処理を実行できる形式に変換する第2の変換部(ソフトウエアコンパイラ)1403とを備える。
【0025】
この画像再生装置は、ネットワークNTから、動画像再生用のプログラムと符号化された動画像データとを受信し、次にように動作する。
【0026】
まず、論理記述言語で記述された再生アルゴリズムプログラムを受信部1200で受信する。受信データは、伝送切り換え手段1300を通じてプログラム変換部1400に伝送され、分割部1401でハードウエア処理部分とソフトウエア処理部分とに分割される。
【0027】
ハードウエア処理部分は、第1の変換部1402に渡され、プログラマブル論理回路(FPGA)を書き換えることができる形式(ビットストリーム)に変換され、逆量子化部1101と逆変換部1102とを制御部1500からの制御によって書き換える。また、ソフトウエア処理部分は、第2の変換部1403に渡され、プロセッサで処理できる形式に変換された後、制御部1500に渡される。
【0028】
このように構成された図22の画像再生装置に、ネットワークNTから動画像データが送られると、受信部1200で受信し、切り換え手段1300によって動画像復号部1100に伝送され、復号データとして出力される。
【0029】
以上のようにして、逆量子化部1101と逆変換部1102とを、回路構成が変更可能な素子で構成することにより、異なるアルゴリズムによって再生される画像データにも対応することができ、動画像復号部のハードウエアが最適な処理能力を有するようにしている。
【0030】
【発明が解決しようとする課題】
しかしながら、以上説明した、処理の一部分をプログラマブル論理回路で処理する情報処理システムに関する従来例1〜3は、次のような問題がある。
【0031】
従来例1では、プログラマブル論理回路で実行する処理は、ひとつのプログラム内で、呼び出し回数の多い関数というように一元的に決めている。このため、情報処理システムが複数のプログラムを用いて複数の処理を一連の処理として一度に行うときには、プログラマブル論理回路を用いた処理を効率的に利用できない欠点がある。
【0032】
例えば、ひとつのプログラム内での呼び出し回数は少ないが、一連の処理として順次に実行される処理全体で共通に数多く呼び出される関数が存在する場合には、プログラマブル論理回路で処理を実行した方が効率的に良い。しかし、従来例1では、一つのプログラム内で呼び出し回数の少ない当該関数の処理をプログラマブル論理回路で実行するようには決定することができない。
【0033】
また、関数によっては、対応する回路情報のサイズが大きいため、プログラマブル論理回路に、回路情報を再構成する時間が長くかかり、たとえ呼び出し回数が多くともソフトウエア処理のほうが処理時間が短い場合もあるが、従来例1では、そのような関数処理であっても、呼び出し回数が多いことからプログラマブル論理回路による処理と決定してしまうことになる。
【0034】
また、従来例2では、アプリケーション毎にハードウエアで処理する部分が予め定められ、そのハードウエアでの処理部分を、プログラム開始前にプログラマブル論理回路に実装している。このため、ハードウエア処理を必要としないソフトウエア処理も回路構成が終了するまで開始されないという問題がある。
【0035】
特に、回路データのサイズが大きいためプログラマブル論理回路への書き込み時間が長いときには、ハードウエア処理よりも処理速度の遅いソフトウエアで処理したほうが、全体の処理時間が短い場合もある。
【0036】
すなわち、従来例2の場合には、個々のハードウエア処理とソフトウエア処理の処理時間だけに注目し、プログラマブル論理回路の再構成時間も含めた処理時間全体の短縮を考慮していないことに問題がある。また、個々のプログラム毎にプログラマブル論理回路を再構成しているので、複数のプログラムを実行するときに共通に用いられる回路も重複して構成されてしまい、非効率であるという問題もある。
【0037】
従来例3では、ネットワークから論理記述言語で記述されたプログラムをダウンロードするので、画像再生装置内でそのプログラムを回路情報に変換する処理に時間がかかるという問題がある。
【0038】
すなわち、論理記述言語から回路情報に変換する処理は、論理記述言語からネットリストに変換し、それをデバイスに合わせてテクノロジーマッピングを行い、配置配線のレイアウト処理を施し、さらに、その結果を回路情報に変換する必要がある。特に、配置配線の処理はアルゴリズムが複雑で、時間がかかることが知られている。
【0039】
つまり、従来例3では、ネットワーク上のサーバに格納されていてクライアントが共有するプログラムに、互換性を持たせる目的で、論理記述言語のような抽象度の高い記述方法を用いるために、クライアントでの前処理量が大きくなり、ハードウエア処理による処理時間の短縮を損なうほどに全体の処理時間が長くなる問題がある。
【0040】
また、従来例3では、プログラムをネットワークから取得しているが、ネットワークでの伝送は、途中で通信が切断し、プログラムをダウンロードできないことも起こり得るため、信頼性の点で問題がある。
【0041】
さらに、ネットワーク上の伝送は、情報処理システム内部のバスの伝送に比較すると伝送速度が遅い。また、ネットワークやサーバーの負荷が一定ではなく、混む場合は、転送速度が非常に遅くなるなどの問題がある。
【0042】
例えば、プログラマブル論理回路に再構成する回路情報をネットワークから取得する場合を例に取ると、ソフトウエア処理では時間のかかる処理を、プログラマブル論理回路によるハードウエア処理に置き換えて高速化しようとしても、そのハードウエア処理の時間を、ネットワークからプログラムをダウンロードする最初のステップから処理の終了までの時間と考えると、ネットワークからの転送速度の不安定性による処理時間の増大の問題は無視できなくなる。
【0043】
また、プログラマブル論理回路によるハードウエア処理において、ネットワーク転送時間と、回路情報のプログラマブル論理回路への再構成時間は、本来のハードウエアによる処理時間に対し、オーバーヘッドとなり、これが小さいほど望ましいが、ネットワーク転送の速度が、回路情報のプログラマブル論理回路への再構成速度よりも大幅に遅い場合には、回路情報のファイルサイズが大きいほど、オーバーヘッドのうちで、ネットワーク転送の部分が大きくなるという問題もある。
【0044】
以上のように、以上の従来例1〜3に共通した課題として、回路情報を取得する時間も含めたプログラマブル論理回路の再構成時間と、一連の処理として実行される複数のプログラムで共通して用いられる処理を考慮しないで、処理をハードウエア処理とソフトウエア処理に一元的に分離していることが挙げられる。
【0045】
また、ネットワークを通じて必要な情報を取得する場合の問題も、全体の処理時間や効率化の点で解決しなければならない課題である。
【0046】
この発明は、プログラマブル論理回路を利用して一部の処理を実行できる情報処理システムにおいて、ソフトウエアとハードウエアとを組み合わせて処理を行う場合の処理速度など処理の効率化の問題を解決するとともに、必要な情報を、ネットワークから取得するときの上述のような問題点を解決することを目的とする。
【0047】
【課題を解決するための手段】
上記課題を解決するため、請求項1の発明による情報処理システムは、
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応するハードウエアモジュールを、前記ネットワーク上の記憶装置から入手するものであって、
前記ネットワーク上の複数の記憶装置から前記識別符号に対応するハードウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中から前記ハードウエアモジュールの転送速度が最も速い記憶装置を選択する検索手段と、
前記検索手段で選択された記憶装置からの前記ハードウエアモジュールの取得およびプログラマブル論理回路の再構成を実行する取得実行手段と、
を有することを特徴とする。
【0048】
また、請求項2の発明の情報処理システムは、
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、前記プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理をプログラム言語で記述したソフトウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ソフトウエアモジュールを入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ハードウエアモジュールが行う処理と同じ処理を行うソフトウエアモジュールを示す識別符号が、プログラム内に記述されており、
前記ソフトウエアモジュール取得手段は、
前記識別符号に対応するソフトウエアモジュールを入手して、前記実行プログラム用記憶部に格納するものであって、
前記ネットワーク上の複数の記憶装置から前記識別符号に対応するソフトウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中から前記ソフトウエアモジュールの転送速度が最も速い記憶装置を選択する検索手段と、
前記検索手段で選択された記憶装置からの前記ソフトウエアモジュールの取得を実行する取得実行手段と、
を有することを特徴とする。
【0049】
また、請求項3の発明は、請求項1または請求項2に記載の情報処理システムにおいて、
前記取得実行手段は、前記ハードウエアモジュールあるいは前記ソフトウエアモジュールの前記ネットワークからの転送を実行して、その単位時間当たりの転送量が、予め定めた期待値よりも小さいときには、前記転送速度が次位の記憶装置から、前記ハードウエアモジュールあるいは前記ソフトウエアモジュールを取得するように変更することを特徴とする。
【0050】
また、請求項4の発明の情報処理システムは、
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応する前記ハードウエアモジュールを、前記プログラムによる処理の実行順に、前記ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路に再構成する取得実行手段と、
前記取得実行手段での処理と並行して、前記ネットワーク上の記憶装置から前記識別符号に対応する他のハードウエアモジュールを取得して、システム内の記憶装置に格納する並行取得手段と、
前記並行取得手段で取得した前記ハードウエアモジュールの回路情報により前記プログラマブル論理回路を再構成する手段と、
を備えることを特徴とする。
【0051】
また、請求項5の発明の情報処理システムは、
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、前記プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理をプログラム言語で記述したソフトウエアモジュールを記憶する記憶装置部と、
前記記憶装置部から前記ソフトウエアモジュールを入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ハードウエアモジュールが行う処理と同じ処理を行うソフトウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ソフトウエアモジュール取得手段は、
前記識別符号に対応するソフトウエアモジュールを入手して、前記実行プログラム用記憶部に格納するものであって、
前記プログラム内に記述されている前記識別符号に対応する前記ソフトウエアモジュールを、前記プログラムによる処理の実行順に、前記ネットワーク上の記憶装置から入手して、前記実行プログラム用記憶部に格納する実行ソフトウエアモジュール格納手段と、
前記実行ソフトウエアモジュール格納手段での処理と並行して、前記ネットワーク上の記憶装置から前記識別符号に対応する他のソフトウエアモジュールを取得して、システム内の記憶装置に格納する並行取得手段と、
前記並行取得手段で取得した前記ソフトウエアモジュールを、前記実行ソフトウエアモジュール格納手段に格納する手段と、
さらに、請求項6の発明は、請求項4または請求項5に記載の情報処理システムにおいて、
前記プログラム内には、前記識別符号に対応して、それぞれの識別符号に対応するハードウエアモジュールあるいはソフトウエアモジュールのファイルサイズが記述されており、
前記並行取得手段では、前記プログラム内に記述される識別符号に対応するハードウエアモジュールあるいはソフトウエアモジュールのうちの、前記ファイルサイズの大きいものから順に取得する
ことを特徴とする。
【0052】
【作用】
上述の構成の各請求項の発明による情報処理システムにおいては、予め、ソフトウエアモジュールまたはハードウエアモジュールの一方がプログラム内に記述され、ソフトウエアモジュールあるいはハードウエアモジュールの他方が、ネットワーク上の複数の記憶装置部に記憶されている。
【0053】
このネットワーク上の記憶装置部に記憶されているハードウエア(またはソフトウエア)モジュールは、ハードウエア(またはソフトウエア)取得手段により取得され、プログラマブル論理回路に回路情報が再構成(または記憶部に記憶)される。
【0054】
実行モジュール決定手段は、プログラムの実行時またはプログラム実行前に、ソフトウエアモジュールとハードウエアモジュールのどちらで処理単位を実行するかを決定する。
【0055】
従来のように、アプリケーションプログラムにおいて、ソフトウエア処理部分と、ハードウエア処理部分とを事前に固定的に決定するものではないので、その実行モジュールの決定時点における、プログラマブル論理回路の再構成時間も考慮に入れた種々の条件に基づいて、プログラムに記述された処理全体として効率のよい実行モジュールを選択するように決定することができる。
【0056】
そして、上記の構成の請求項1の発明によれば、ハードウエアモジュールは、ネットワーク上の複数の記憶装置から、識別符号に対応するハードウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中でハードウエアモジュールの転送速度が最も速い記憶装置から取得する。したがって、処理時間に対してのオーバーヘッドとしてのネットワーク転送時間を最小限にすることができて、全体としての処理の効率化を図ることができる。
【0057】
同様に、請求項2の発明においても、ソフトウエアモジュールは、ネットワーク上の複数の記憶装置から識別符号に対応するソフトウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中でソフトウエアモジュールの転送速度が最も速い記憶装置から取得する。したがって、処理時間に対してのオーバーヘッドとしてのネットワーク転送時間を最小限にすることができて、全体としての処理の効率化を図ることができる。
【0058】
また、請求項3の発明においては、請求項1または請求項2において、転送速度が速いとして決定した記憶装置からの転送を実行して、その単位時間当たりの転送量が、予め定めた期待値よりも小さいときには、前記転送速度が次位の記憶装置から、前記ハードウエアモジュールあるいは前記ソフトウエアモジュールを取得するように変更する。
【0059】
これは、転送速度が速いとして登録された記憶装置への情報取得要求が複数個、重なった場合には、その複数個の要求に答えるために、時分割処理などの方法で、各要求先にデータを配信するようにするため、実際の転送時間が長くなることに対応するものである。
【0060】
また、請求項4においては、プログラム内に記述されている識別符号に対応するハードウエアモジュールを、プログラムによる処理の実行順に、ネットワーク上の記憶装置から入手して、プログラマブル論理回路に再構成する処理と並行して、他のハードウエアモジュールを取得して、システム内の記憶装置に転送して格納する処理を行う。
【0061】
また、請求項5においては、プログラム内に記述されている識別符号に対応するソフトウエアモジュールを、プログラムによる処理の実行順に、ネットワーク上の記憶装置から入手して、実行プログラム用記憶部に格納する処理と並行して、他のソフトウエアモジュールをネットワーク上の記憶装置から取得して、システム内の記憶装置に格納する処理を行う。
【0062】
したがって、この並行処理により、実際の処理に対してのオーバーヘッドを少なくして、全体としての処理時間の短縮を図ることができる。
【0063】
請求項6の発明においては、特に、並行して行う取り込み処理は、ファイルサイズの大きいものから順に取得する。したがって、よりオーバーヘッドの影響を少なくして効率の良い取り込みが行え、全体としての処理時間の短縮化が期待できる。
【0064】
【発明の実施の形態】
以下、この発明による情報処理システムの実施の形態を、図を参照しながら説明する。
【0065】
[第1の実施の形態]
この発明による、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムの第1の実施の形態の主要な概念構成を図1に示す。
【0066】
この実施の形態において、対象とするアプリケーションプログラム(以下の説明においては、単にプログラムという場合もある)100は、当該プログラムにより実行しようとする一連の処理を複数個の処理に分離し、分離された各処理ごとにモジュールとして構成したものである。このモジュールを、この明細書では処理モジュールと称することとする。
【0067】
この第1の実施の形態では、プログラム100を構成する各処理モジュールは、CPUが処理を実行するように、処理がプログラム言語で記述されたソフトウエアプログラムで構成される。この処理モジュール単位のソフトウエアプログラムを、この明細書では、ソフトウエアモジュールと称することとする。したがって、この実施の形態の場合、アプリケーションプログラム100は、複数個のソフトウエアモジュールSMの集合からなる。
【0068】
この実施の形態においては、ソフトウエアモジュールSMのそれぞれが行う処理と同じ処理をプログラマブル論理回路に再構成する回路情報で記述したモジュール(この明細書では、このモジュールをハードウエアモジュールと称する)HMを、ネットワーク上の記憶装置200に保存して用意する。この場合、記憶装置200は、ネットワーク上の複数の記憶装置(サーバー)により構成されるものである。
【0069】
この例の場合、プログラム100は、図2に示すように、ヘッダ部HEDと、本体部PRGとからなり、本体部PRGが前述したように複数個のソフトウエアモジュールSMの集合で構成されている。そして、ヘッダ部HEDには、各ソフトウエアモジュールSMと同じ処理をプログラマブル論理回路に再構成する回路情報で記述した、対応するハードウエアモジュールHMの識別符号IDが記述されている。
【0070】
この場合、プログラム100には、同じ処理を行うソフトウエアモジュールSMとハードウエアモジュールHMとの対応が付くように識別符号IDが記述されている。例えば、この例では、本体部PRGの複数個のソフトウエアモジュールSMのプログラム上の処理実行順に従った順番で、各ソフトウエアモジュールSMに対応するハードウエアモジュールHMの識別符号IDが、ヘッダ部HEDに記述される。したがって、繰り返し使用されるモジュールは、重複して繰り返し記述される。
【0071】
ハードウエアモジュール取得手段300は、プログラム100中に記述されている識別符号IDを用いて、ソフトウエアモジュールSMが実行する処理と同じ処理を実行するハードウエアモジュールHMを、ネットワーク上の記憶装置200から取得する。そして、ハードウエアモジュール取得手段300は、取得したハードウエアモジュールHMによる回路をプログラマブル論理回路400上に再構成する。
【0072】
ハードウエアモジュール取得手段300は、ハードウエアモジュールHMの取得に先立ち、ネットワーク上の複数の記憶装置(サーバー)の転送処理能力に関する情報を収集するとともに、いずれの記憶装置に、いずれのハードウエアモジュールHMが格納されているかの情報も収集し、それをサーバーリストとして検索手段310に保持している。
【0073】
このときの記憶装置の検索範囲は、例えばアプリケーションの規模に応じて、例えば、規模が小さければ、LAN程度、大きいときには、インターネット上、というように定めておく。
【0074】
そして、ハードウエアモジュール取得手段300は、ハードウエアモジュールHMの取得の実行時、まず、検索手段310で取得しようとするハードウエアモジュールHMがネットワークのいずれの記憶装置に格納されているかを前記サーバーリストを参照して検索し、その検索の結果、複数の記憶装置が検索されたときには、そのうちの最も転送処理能力の高いものから当該ハードウエアモジュールの情報を取得するように選択する。
【0075】
ハードウエアモジュール300の取得実行手段320は、この検索手段310で選択された記憶装置から、ネットワークを通じてハードウエアモジュールHMの取得を行うようにする。また、この実施の形態では、取得実行手段320は、その選択した記憶装置にアクセスが集中して、転送能力が落ちている場合には、最初の単位時間における転送量をモニターして、当該単位時間における転送量が所定のしきい値より小さければ、他の記憶装置に切り換えるようにすることができるようにも構成されている。
【0076】
プログラム100のソフトウエアモジュールSMによるソフトウエア処理は、CPU500が実行する。
【0077】
実際のアプリケーションプログラム100の処理は、処理モジュールごとに、実行モジュール決定手段600により、ソフトウエアモジュールSMまたはハードウエアモジュールHMのいずれで実行するかが選択されて、実行される。この実施の形態では、実行モジュール決定手段600は、選択条件設定手段700に設定されている実行モジュール選択条件に基づいて、どちらのモジュールで処理モジュールを実行するかを決定する。
【0078】
選択条件設定手段700には、予め、例えばソフトウエアやハードウエアによる処理時間、メモリ消費量、プログラマブル論理回路の再構成時間などの種々の選択条件項目を想定し、その一つの条件項目あるいは複数個の条件項目を組み合わせて、実行モジュール選択条件を設定することができる。
【0079】
なお、選択条件設定手段700は、実行モジュール選択条件をユーザにより設定変更可能なように設けられるものである。したがって、実行モジュール決定手段600に対して、予め、特定の実行モジュール選択条件が定められて、その選択条件を変えることなく、その選択条件に従って実行モジュールを決定する場合には、この選択条件設定手段700は、実行モジュール決定手段600に包含されていることになるので、その場合には、特に設ける必要がなくなる。
【0080】
実行モジュール決定手段600での実行モジュールの決定は、プログラム実行前に行う場合と、プログラム実行時に行う場合の2通りがある。この第1の実施の形態では、プログラム実行時であって、各処理モジュールの実行開始時に、実行モジュールの決定を行う。
【0081】
[第1の実施の形態のハードウエア構成例]
図3は、この発明の第1の実施の形態の情報処理システム10のハードウエア構成例を示すブロック図である。この実施の形態の情報処理システム10においては、CPU11のホストバス11Bに、チップセット12に含まれるメモリコントローラ(図示せず)を介して、例えばDRAMで構成されるメインメモリ13が接続される。
【0082】
ホストバス11Bは、また、チップセット12に含まれるホスト−PCIバスブリッジ(図示せず)を介して、PCIバス14に接続される。PCIバス14には、プログラマブル論理回路インターフェース15を介してプログラマブル論理回路16と、ハードディスクインターフェース17を介してハードディスクドライブ18と、通信インターフェース19とが接続される。
【0083】
通信インターフェース19は、LANやインターネットなどのネットワーク20を介して、プログラマブル論理回路16に再構成される回路情報が格納されている複数個の記憶装置(サーバ)21、22、23に接続される。
【0084】
ハードディスクドライブ18により読み書きされるハードディスクには、アプリケーションプログラムが格納されている。また、アプリケーションプログラムは、ネットワーク20上の記憶装置に格納されている場合もある。
【0085】
また、ハードディスクドライブ18のハードディスクやメインメモリ13には、ネットワーク20上の記憶装置21〜23から取得されたハードウエアモジュールHMが、一時格納される場合もある。また、プログラマブル論理回路16が、ローカルメモリを備え、そのローカルメモリにネットワークから取得してハードウエアモジュールHMの回路情報を格納しておくようにしてもよい。
【0086】
これら情報処理システム内の記憶装置に格納されたハードウエアモジュールHMの情報は、例えば、当該ハードウエアモジュールの繰り返し使用時であって、プログラマブル論理回路16に、例えば上書きされるなどして構成されていない場合に、利用される。すなわち、ネットワークからハードウエアモジュールHMを入手することなく、このシステム内の記憶装置からプログラマブル論理回路16にハードウエアモジュールHMの回路情報を転送して、再構成する。この場合には、ネットワーク20からの転送に比べて、システム内のバス転送であるので、高速に行うことができる。
【0087】
この実施の形態では、ハードウエアモジュール取得手段300と、実行モジュール決定手段600が、図3で示した情報処理システム10のOSのひとつの機能としてソフトウエア的に実装される。
【0088】
次に、プログラマブル論理回路16の構造を図4に示す。プログラマブル論理回路16は、図5に示すように、回路情報を格納するためのコンフィギュレーションメモリ160と、論理セル161と、配線領域162と、入出力端子163とで構成される。
【0089】
コンフィギュレーションメモリ160は、論理セル161内および配線領域162内のSRAM、DRAMなどの書き換え可能なメモリ素子で構成されている。コンフィギュレーションメモリ160にアドレスADRが与えられて、新しい回路情報のデータDAが格納されると、この回路情報に従って、論理セル161内の回路構成と、論理セル161および入出力端子163を相互に接続する配線領域162の接続状態が再構成される。この一連の動作をコンフィギュレーションと呼ぶ。コンフィギュレーションメモリ160の一部分を書き換えることで、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【0090】
図5に示すように、プログラマブル論理回路16に再構成されて形成された回路素子164に、処理すべきデータが入力され、また、その処理結果が出力される。
【0091】
[第1の実施の形態による処理の説明]
図6は、この発明の第1の実施の形態における基本的な処理の流れを示すフローチャートである。前述したように、この例では、実行モジュール決定手段600での決定時点は、プログラム実行時であって、どちらのモジュールを使用するかの決定は、各処理モジュールの実行開始の際に行う。
【0092】
また、前述したように、この実施の形態では、図1のハードウエア取得手段300と実行モジュール決定手段600とが、図3の情報処理システム10のOSのひとつの機能としてソフトウエア的に実装されており、アプリケーションプログラム100の開始により、当該OSにより処理が実行される。
【0093】
以下に説明する例においては、図1の選択条件設定手段700は設けられず、実行モジュール決定手段600内に含まれているものとする。そして、この第1の実施の形態では、コンフィギュレーションが完了したプログラマブル論理回路によるハードウエア処理は、一般に、対応するソフトウエア処理よりも高速処理が可能であることから、実行モジュール選択条件として、「実行する処理モジュールに対応するハードウエアモジュールのプログラマブル論理回路16への再構成が終了しているか否かを判別し、再構成が終了しているときには、その処理モジュールをハードウエアモジュールにより再構成されたプログラマブル論理回路で実行する」という条件が設定されている。
【0094】
アプリケーションプログラム100の実行に先立ち、予め、CPU11は、通信インターフェース19を通じてネットワーク20上の複数の記憶装置21〜23にアクセスし、これらのネットワーク20上の記憶装置21〜23のそれぞれの転送処理能力に関する情報を収集するとともに、記憶装置21〜23のそれぞれに、いずれのハードウエアモジュールが格納されているかの情報も収集し、それを、例えばテーブル化するなどして、サーバーリストとして、メインメモリ13あるいはハードディスクドライブ18のハードディスクに保持しておくようにする。
【0095】
そして、実際のアプリケーションプログラムの実行に際し、それに先立ち、まず、図2に示したようにプログラム100内のヘッダ部HEDに記述されているハードウエアモジュールHMの識別符号IDが読み込まれ、当該アプリケーションプログラムで使用される、プログラマブル論理回路16上に構成するハードウエアモジュールHMが、ハードウエアモジュール取得手段300で認識される(ステップS11)。
【0096】
次に、アプリケーションプログラムの実行となり、2つのルーチンが並行して実行される。ひとつは、ハードウエアモジュール取得手段300によるプログラマブル論理回路16へのコンフィギュレーションの実行で、もうひとつは、実行モジュール決定手段600によるプログラムで実行される、処理モジュールごとのソフトウエアモジュールSMまたはハードウエアモジュールHMの決定およびその処理モジュールの実行である。
【0097】
ハードウエアモジュール取得手段300は、先に読み込まれた識別符号IDの最初の識別符号IDに対応するハードウエアモジュールHMの回路情報がネットワーク20上のいずれの記憶装置に存在するかを、前述したようにして、予め情報を収集して作成しておいた前記サーバーリストを用いて検索する。そして、当該識別符号で示されるハードウエアモジュールHMが、ネットワーク20上の複数個の記憶装置に格納されていると判別されたときには、それらの記憶装置の転送処理能力を参照して、最も転送処理能力の高い記憶装置を、当該ハードウエアモジュールHMの取得先として選択決定する(ステップS12)。
【0098】
そして、選択決定したネットワーク20上の記憶装置からハードウエアモジュールを取得し、プログラマブル論理回路16のコンフィギュレーションメモリ160に転送し、コンフィギュレーションを実行して、実行モジュール決定手段600からの問い合わせに対し、コンフィギュレーションの成否を答える(ステップS13)。
【0099】
そして、ハードウエアモジュール取得手段300は、最初のハードウエアモジュールHMのコンフィギュレーションが完了すると、次のハードウエアモジュールHMがあるか否か判断し(ステップS14)、次のハードウエアモジュールHMがあれば、ステップS12に戻って、その識別符号IDに対応するハードウエアモジュールHMの回路情報を格納するネットワーク20上の記憶装置であって、転送処理能力の高いものを選択決定して、その選択決定した記憶装置から、ハードウエアモジュールHMを取得し、プログラマブル論理回路16のコンフィギュレーションメモリ160に転送し、コンフィギュレーションを実行する。
【0100】
ハードウエアモジュール取得手段300は、先に読み込んだ識別符号IDのすべてのハードウエアモジュールHMについて、上述の処理を実行して、そのコンフィギュレーションを行うようにする。
【0101】
実行モジュール決定手段600は、実行しようとする処理モジュールに対応するハードウエアモジュールHMのコンフィギュレーションが完了しているか否か、ハードウエアモジュール取得手段300に問い合わせて判断し(ステップS15)、当該対応するハードウエアモジュールHMのコンフィギュレーションが完了していれば、ハードウエアモジュールHMによる処理を行い(ステップS16)、コンフィギュレーションが完了していなければ、対応するソフトウエアモジュールSMによる処理を実行する(ステップS17)。
【0102】
そして、当該処理モジュールの処理が終了すると、次の処理モジュールがあるか否か判断し(ステップS18)、次の処理モジュールがあれば、ステップS15に戻り、次の処理モジュールがなければ、このアプリケーションによる処理を終了する。
【0103】
ここで、ハードウエアモジュール取得手段300と、実行モジュール決定手段600との間でのコミュニケーションは、図3のシステム10においては、具体的には、次のようにしてなされる。
【0104】
すなわち、ハードウエアモジュールHMがプログラマブル論理回路16上にコンフィギュレーションされると、PCIバス14を介してCPU11上で稼動するOSに検知され、そのOSの一部として機能しているハードウエアモジュール取得手段300から、実行モジュール決定手段600に通知される。
【0105】
また、プログラムの処理状況がCPU11上で稼動するOSで検知され、このOSの一部として機能している実行モジュール決定手段600から、ハードウエアモジュール取得手段300に対して、ハードウエアモジュールHMの回路情報の転送およびコンフィギュレーションの開始や中断が指示される。
【0106】
以上のようにして、この実施の形態では、処理モジュールの実行をするときに、対応するハードウエアモジュールHMが、プログラマブル論理回路16に再構成されていれば、当該処理モジュールの処理は、ハードウエアモジュールで実行するようにする。
【0107】
前述もしたように、通常、プログラマブル論理回路へのコンフィギュレーションのための時間を考慮しなければ、ハードウエアで処理した方が高速処理が可能である。したがって、上述のように、コンフィギュレーションが完了した時点から、そのコンフィギュレーションが完了したハードウエアモジュールで処理を実行することで、アプリケーションプログラムによる一連の処理を高速に行うことができるようになる。
【0108】
そして、この実施の形態では、ハードウエアモジュールHMの回路情報は、ネットワーク上の最も転送処理能力が高い記憶装置から取得するようにしたので、コンフィギュレーション時間のオーバヘッドとしてのネットワークからの転送時間は、最小とすることができる。
【0109】
[処理の具体例(第1の実施例)]
次に、図7、図8、図9および図10のフローチャートを用いて、第1の実施の形態の処理の具体例である第1の実施例を、以下に説明する。
【0110】
図7は、この第1の実施例における、図6のフローチャートに対応する詳細な処理の流れの全体を示したフローチャートである。図8は、図7におけるハードウエアモジュールHMのコンフィギュレーションのルーチンR40のステップS22の詳細なフローチャートを示している。また、図9は、図8におけるネットワークからの転送のルーチンR60のステップS43の詳細なフローチャート、さらに、図10は、図7のソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理ルーチンR50のステップS32の詳細なフローチャートを示している。
【0111】
図7において、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理のルーチンR30と、ハードウエアモジュールHMのコンフィギュレーションのルーチンR20は並行して実行される。
【0112】
ここで、この第1の実施例では、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理モジュールをM種類行い、これらのM種類の処理モジュールからなる一連の処理を、N回繰り返すものとする。
【0113】
図7に示すように、アプリケーションプログラムの実行に先立ち、ハードウエアモジュールHMの識別符号がアプリケーションプログラムのヘッダ部HEDから読み取られる(ステップS11)。このあと、ハードウエアモジュールHMのコンフィギュレーションを行うルーチンR20と、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理を行うルーチンR30とが並行して実行される。
【0114】
ルーチンR20においては、まず、M種類のハードウエアモジュールの、何番めまでのハードウエアモジュールHMがコンフィギュレーションされたかを示す変数iを初期化し(ステップS21)、その後、ハードウエアモジュールHMのコンフィギュレーションの処理ルーチンR40を実行するステップS22に進む。
【0115】
このステップS22のコンフィギュレーションの処理ルーチンR40においては、図8に示すように、i番目のハードウエアモジュールHMが、プログラマブル論理回路16上に存在するかどうかを確認し(ステップS41)、存在すれば、既にプログラマブル論理回路16上に構成されていることをOSに通知する(ステップS45)。
【0116】
i番目のハードウエアモジュールHMが、プログラマブル論理回路16上に存在しなければ、そのi番目のハードウエアモジュールHMが、情報処理システム10内の記憶装置(ハードディスクドライブ18あるいはメインメモリ13など)に存在するか否か確認する(ステップS42)。
【0117】
i番目のハードウエアモジュールHMが、システム10内の記憶装置に存在すれば、ステップS44に進んで、コンフィギュレーションを行う。また、システム内の記憶装置に存在していなければ、ステップS43において、ネットワーク20からの転送の処理ルーチンR60を実行し、前述したようにして、ネットワーク20上の記憶装置21〜23を検索して選択決定した記憶装置からハードウエアモジュールHSの回路情報を取得し、その後、ステップS44に進んで、コンフィギュレーションを実行する。
【0118】
ステップS43のネットワーク回路の転送のルーチンR60においては、図9に示すように、取得要求が生じているハードウエアモジュールHMの識別符号と、前記サーバーリストから、当該ハードウエアモジュールHMの情報を格納しており、転送処理能力が高い優先サーバーである記憶装置を選択決定し(ステップS61)、転送を開始する(ステップS62)。
【0119】
そして、転送開始直後の単位時間、例えば数十ナノ秒の間に転送されてきたデータ量を、予め定めた期待値と比較して、大きければ、そのまま転送を続行し(ステップS64)、小さければ、次に転送処理能力が高い記憶装置に変更して(ステップS61)、転送を開始させる。
【0120】
なお、識別符号に対応するハードウエアモジュールHMを格納する記憶装置が見つからなかったときには、ネットワーク20からの転送は中止し、ソフトウエアモジュールSMによる処理を行う。
【0121】
そして、図8に戻って、ステップS43の転送およびステップS44のハードウエアモジュールHMの構成が終了した時点で、ステップS45に移り、コンフィギュレーションの終了をOSに通知し、図7に戻って変数iをカウントアップする(ステップS23)。
【0122】
ハードウエアモジュールHMのコンフィギュレーションが完了する前に、このハードウエアモジュールHMに対応する処理が開始される場合には、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理を行うルーチンR30で、ソフトウエアモジュールSMによる処理が行われるが、ハードウエアモジュールHMのコンフィギュレーションは続行される。
【0123】
そして、M種類のハードウエアモジュールHMのすべてを、コンフィギュレーションする途中で、アプリケーションプログラム100により実行される一連の繰り返し処理数をカウントする変数jが、j>Nとなったと判別され(ステップS24)、アプリケーションが終了する場合には、M種類のハードウエアモジュールHMのうちの一部は、コンフィギュレーションされない。
【0124】
しかし、情報処理システム10内の記憶装置に余裕があれば、ネットワーク20上の記憶装置から回路情報を取得することを続行することもできる。そのようにすれば、同種のアプリケーションが、その後に実行されるときに、ネットワーク20からの回路情報のシステム内の記憶装置への取り込みが完了しており、その分のアクセス時間を短縮することができる。また、後で、ネットワーク20から取得しようとしたときに、ネットワーク20に障害が生じていて、必要なハードウエアモジュールHMが取得できない事態になっても、その影響が最小限に押さえられる。
【0125】
次に、コンフィギュレーションするべきハードウエアモジュールHMが残っているかを確認するために、変数iと変数Mを比較する(ステップS25)。変数iが、変数Mと等しいか小さければ、次のハードウエアモジュールHMのコンフィギュレーションを開始し、変数iが変数Mよりも大きければ、すべてのハードウエアモジュールHMがプログラマブル論理回路16上に構成されたことがわかり、図8のコンフィギュレーション処理を終了する。
【0126】
次に、図7において、ルーチン20と並行して実行されるルーチンR30では、まず、一連の繰り返し処理数をカウントする変数jが初期化され(ステップS31)、その後、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理を実行するルーチンR50のステップS32に移る。
【0127】
このステップS32のルーチンR50においては、図10に示すように、まず、M種の処理モジュールの何番めの処理モジュールによる処理であるかをカウントする変数kが初期化される(ステップS51)。
【0128】
次に、k番目のハードウエアモジュールHMが、プログラマブル論理回路16上に構成されたかどうかを確認するために、このルーチンR50で、M種のハードウエアモジュールHMのうちの何番目までのコンフィギュレーションが終了したかを示す変数iと、前記処理を実行しようとする処理モジュールがM種の処理モジュールの何番目であるかを示す変数kとの比較を行なう(ステップS52)。
【0129】
変数kが変数iより小さければ、プログラマブル論理回路16上に、k番目の処理モジュールに対応するハードウエアモジュールHMの構成が終了していることがわかるので、ハードウエアモジュールHMで処理を実行する(ステップS53)。
【0130】
変数kが、変数iに等しいか、変数iより大きければ、まだ、k番目の処理モジュールに対応するハードウエアモジュールHMが、プログラマブル論理回路16上に構成されていないので、ソフトウエアモジュールSMで処理を実行する(ステップS54)。
【0131】
次に、処理モジュールが何番目のものであるかを示す変数kをカウントアップし(ステップS55)、次のk+1番目の処理モジュールについて、その前のk番目の処理モジュールと同様にしてステップS52からステップS55のステップを実行し、それを、最後のM番目の処理モジュールまで繰り返す(ステップS56)。そして、最後のM番目の処理モジュールについての処理が終了したときには、図7のルーチンに戻る。
【0132】
図7においては、繰り返しの変数jをカウントアップし(ステップS33)、次の繰り返し処理が開始される。繰り返し処理をN回行うとアプリケーションは終了する(ステップS34)。
【0133】
以上説明したように、第1の実施例においては、M種の処理モジュールのN回の繰り返しを行う処理のアプリケーションプログラムにおいて、最初は、ソフトウエアモジュールSMによる処理が実行されるが、繰り返し処理の間に、M種のハードウエアモジュールHMのコンフィギュレーションが、徐々に完了し、その完了したハードウエアモジュールHMが順次に使用される。したがって、繰り返し処理の繰り返しの回数が増加するにつれて、コンフィギュレーションが完了するハードウエアモジュールHMの数も増加し、処理速度が徐々に上がり、全体としての処理時間は、短縮化されるものである。
【0134】
[第2の実施の形態]
この発明による情報処理システムの第2の実施の形態の主要な概念図を図11に示す。図11に示すように、この第2の実施の形態においては、ハードウエアモジュール取得手段300は、検索手段310、取得実行手段320に加えて、並行取得手段330を備える。
【0135】
また、この第2の実施の形態では、ハードウエアモジュール取得手段300により、ネットワークから取得し、プログラマブル論理回路に再構成したハードウエアモジュールHMの識別情報を、識別情報記録手段800に記録しておく。さらに、ネットワークから取得してプログラマブル論理回路に再構成したハードウエアモジュールHMの回路情報は、情報処理システム内のハードディスクドライブなどの記憶装置に保存しておく。
【0136】
その他は第1の実施の形態と同様に構成する。
【0137】
取得実行手段320は、プログラム100内のヘッダ部HEDに記述されている識別符号IDに対応するハードウエアモジュールを、プログラム100による処理の実行順に、ネットワーク20上の記憶装置から入手して、プログラマブル論理回路400に再構成する。これは、第1の実施の形態と全く同様であり、その実施の形態においても、検索手段310により、ネットワーク20上の転送処理能力が高い記憶装置からハードウエアモジュールを取得してプログラマブル論理回路400に再構成するようにする。
【0138】
並行取得手段330は、取得実行手段320での処理と並行して、いまだ、情報処理システム内の記憶装置にネットワークから取り込んでいないハードウエアモジュールHMの情報を、ネットワークからシステム内の記憶装置に取り込むようにする処理を行う。情報処理システム内の記憶装置に取り込んでいるか否かは、識別符号記録装置800に記録されている識別符号を参照することで知ることができる。
【0139】
そして、この第2の実施の形態の場合には、並行取得手段330は、ファイルサイズの大きいハードウエアモジュールHMを優先して、順次、ネットワークから取得するようにする。このため、この第2の実施の形態の場合のプログラム100のヘッダ部HEDには、図12に示すように、各ハードウエアモジュールHMの識別符号に対応して、それらのハードウエアモジュールHMのファイルサイズが記述されている。
【0140】
なお、識別符号記録手段800には、ハードウエアモジュール取得手段300により取得されて、プログラマブル論理回路に再構成されたハードウエアモジュールの識別符号が記録されているので、その記録内容を調べることで、プログラム100内で同じハードウエアモジュールHMが繰り返し使用される場合に、重ねて、プログラマブル論理回路400のコンフィギュレーションが実行されることが防止される。これにより、コンフィギュレーション時間を節約して、効率的な処理が行える。
【0141】
また、識別符号記録手段800に識別符号が記録されているハードウエアモジュールHMであっても、プログラマブル論理回路400が、回路情報により上書きされてしまい、プログラマブル論理回路400上には、存在していない場合もあるが、この実施の形態では、識別符号記録手段800に識別符号が記録されていれば、システム内の記憶装置には、その回路情報が記録されているので、このシステム内の記憶装置からハードウエアモジュールHMを読み出して、プログラマブル論理回路400にコンフィギュレーションするようにすることで、ネットワークから転送して取得を行うことなく、迅速なコンフィギュレーションが可能になる。
【0142】
この第2の実施の形態のハードウエア構成は、ハードウエアモジュール取得手段300を、情報処理システム内のOSの一つとし、識別符号記録手段800を、次に説明するように構成することにより、図3に示した第1の実施の形態を実現する情報処理システム10と同じハードウエア構成で実現できる。
【0143】
すなわち、ハードウエアモジュールHMのコンフィギュレーションが終了し、図8のステップS45に示すように、コンフィギュレーションの終了がOSに通知されたとき、コンフィギュレーションが終了したハードウエアモジュールHMの識別符号を、システム10内の記憶装置、例えば、図3のハードディスクドライブ18やメインメモリ13に記録することにより、識別符号記録手段800を実現する。
【0144】
[処理の具体例]
図13は、この第2の実施の形態の処理の流れを示すフローチャートである。図13における処理は、図7に示した処理と並列に処理を実行する並行ネットワーク転送処理(ルーチンR70)を加えたものである。この並行ネットワーク転送処理は、ハードウエアモジュール取得手段300の前記並行取得手段330により実行される。
【0145】
図13に示す3つの処理ルーチンR30,R20,R70のうち、左2つの処理ルーチンR30,R20,は、図7を用いて説明した第1の実施の形態の場合のそれらと全く同様であって、それぞれ、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理を実行するルーチンである。
【0146】
そして、図13の右の処理ルーチンR70は、前記並行ネットワーク転送処理ルーチンであり、前記ルーチンR20およびR30と並列に処理が実行される。前記ルーチンR20,R30は前述した通りであるので、ここでは、主として、並行ネットワーク転送処理のルーチンR70について説明する。
【0147】
アプリケーションプログラム100が開始されるとき、それに先立ち、まず、ハードウエアモジュールHMの識別符号IDおよびそれぞれのファイルサイズがアプリケーションプログラム100のヘッダ部HEDから読み取られる(ステップS11)。このあと、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理を行う第1のルーチンR30と、ハードウエアモジュールHMのコンフィギュレーションを行う第2のルーチンR20と、ハードウエアモジュールHMをネットワークからシステム内の記憶装置に転送する第3のルーチンR70とが並行して実行される。
【0148】
第2のルーチンR20でも、ハードウエアモジュールHMのネットワークからの取得は行われるが、第3のルーチンR70では、これとは別途に転送に時間のかかるファイルサイズの大きなハードウエアモジュールHMを、予め、システム内の記憶装置に転送しておくものである。
【0149】
第3のルーチンR70では、読み込んだハードウエアモジュールHMの識別符号について、情報処理システム内の記憶装置18、13を検索して、システム内の記憶装置に無いハードウエアモジュールHMを抜き出す(ステップS71)。そして、これらのハードウエアモジュールHMを、ヘッダ部HEDに記述されたファイルサイズをもとに、サイズの大きさによるソーティングを行う(ステップS72)。そして、ソーティング結果により、ファイルサイズの大きいハードウエアモジュールHMから順に、ネットワーク上の記憶装置から情報処理システム内の記憶装置に転送する。
【0150】
この場合の転送の方式は、前述した方法と同様に、転送処理能力の高い記憶装置を検索して、その記憶装置から優先して転送を行うようにする。そして、転送開始から、所定の単位時間の間の実際の転送量を算出し、その転送量が、予め定めた期待値より小さいような場合には、次に転送処理能力の高い記憶装置から転送を行う。ただし、すべての記憶装置において、前記算出した転送量が所定の最低データ量よりも小さいような場合には、最初に試した記憶装置から転送を行う。
【0151】
以上のようにすれば、ルーチンR20でプログラム順にハードウエアモジュールHMを取得してコンフィギュレーションをしているときに、ルーチンR70が並行して実行されて、他のハードウエアモジュールHMのシステム内の記憶装置への取り込みが実行されるので、ルーチンR20で、次のハードウエアモジュールの取得およびコンフィギュレーションの処理を開始するときに、既に、そのハードウエアモジュールがシステム内の記憶装置に取り込まれていて、ネットワークからの取得が不要で、システム内の記憶装置からのコンフィギュレーションのみで済むようになる。
【0152】
したがって、ネットワークからハードウエアモジュールを取得するという、プログラマブル論理回路のコンフィギュレーションにとってのオーバーヘッドが小さくなり、高速のコンフィギュレーションが可能になる。
【0153】
[処理の具体例(第2の実施例)]
次に、この第2の実施の形態の場合の処理の具体例(第2の実施例)として、画像処理の場合を例にとって、以下に説明する。
【0154】
この第2の実施例では、線形変換処理、ノイズ除去処理および輪郭強調処理の3種の処理を、3種の画像フィルタを用いて画像データについて行うことにより、不鮮明な画像を鮮明にする画像処理を行うようにする。
【0155】
このアプリケーションプログラムAPの構造を、図14を用いて説明する。このアプリケーションプログラムAPで利用するソフトウェアモジュールSMと、ハードウェアモジュールHMとを関連付ける識別符号IDのリストが、アプリケーションプログラムAPのヘッダ部HEDに付加されている。
【0156】
プログラム内では、ハードウェアモジュールSMとソフトウェアモジュールHMとが、二重化された処理として呼び出される。
【0157】
利用する処理モジュールは、Gaussianフィルタを使ったノイズ除去処理ABC001と、Laplacianフィルタを使った輪郭強調処理XYZ001と、線形変換処理PQR001の3つとされる。ヘッダ部HEDには、これらの処理に対応するハードウエアモジュールHMの識別符号HmABC001,HmXYZ001,HmPQR001が記載されている。
【0158】
さらに、ヘッダ部HEDのハードウエアモジュール識別符号HmABC001,HmXYZ001,HmPQR001のそれぞれには、この例では、そのファイルサイズをランク付けした符号がつく。使用するプログラマブル論理回路によって上限のファイルサイズが決まるが、この例では、このファイルサイズを5段階程度に小さいものから順にA,B,…,Eというランク付けをする。
【0159】
例えば最小のランクAのファイルサイズのノイズ除去処理ABC001のハードウエアモジュールは、HmABC001Aとなる。同様にして、この例では、HmXYZ001B,HmPQR001Bと記述されている。なお、対応するソフトウエアモジュールには、Smという接頭の符号を付与することとする。
【0160】
ソフトウェアモジュールSMとハードウェアモジュールHMとは同一の引数および戻り値を持って互換性が完全に保たれており、アプリケーションプログラムAPからは同じ処理モジュールに見えるように構成されている。
【0161】
次に、この画像処理の動作を図15およびその続きである図16、図17に示したフローチャートに示す。この図15、図16および図17のフローチャートは、前述の図13および図7〜図10を用いて説明した処理動作に対応しており、対応する各ステップには、同一ステップ番号を付してある。
【0162】
図18は、この画像処理動作のタイミングチャートを示すものである。図15〜図17のフローチャートと、この図18のタイミングチャートを用いて、この第2の実施例の画像処理動作を以下に説明する。なお、図18では、処理aが線形変換PQR001、処理bがGaussianフィルタを使ったノイズ除去処理ABC001、処理cがLaplacianフィルタを使った輪郭強調処理XYZ001をそれぞれ示している。
【0163】
また、使用する処理モジュールは、線形変換PQR001、ノイズ除去処理ABC001、輪郭強調処理XYZ001の3種類なので、図7〜図10における処理モジュール数Mは3となる。また、画像のR(赤データ)、G(緑データ)、B(青データ)の各プレーンに対して、処理aから処理cまでを繰り返し実行するので、図7〜図10における繰り返し数Nは3となる。
【0164】
図18において、時点t0で、アプリケーションプログラムが起動すると、プログラムAPの初期化処理や処理画像の準備などが行われる。同時にアプリケーションプログラムAPのヘッダ部HEDにある識別符号IDを読み込み(ステップS11)、そこに記載されているハードウェアモジュールHMの回路情報を取得して、プログラマブル論理回路上にコンフィギュレーションする処理ルーチンR20を、時点t1から開始する。この処理ルーチンR20は、プログラム順(ヘッダ部HEDに記述されている識別符号順)にハードウエアモジュールHMを取得して取り込む。
【0165】
プログラム起動時には、最初のハードウエアモジュールHmPQR001Bは、プログラマブル論理回路上にコンフィギュレーションされていないので、まず、システム内の記憶装置を検索して、ハードウエアHmPQR001Bが存在すれば、その記憶装置からダウンロードする。もしもシステム内の記憶装置に存在しない場合には、ネットワークから転送してくることになる。
【0166】
同時に時間t1において、並行ネットワーク転送処理ルーチンR70の前処理が始まる。この前処理においては、システム内部のハードディスクやローカルメモリなどの記憶装置を検索して、HmPQR001以外の読み込んだ識別符号と一致するハードウエアモジュールが存在するかを調べる(ステップS71)。そして、システム内の記憶装置に存在しないハードウエアモジュールは、識別符号末尾にあるファイルサイズのランクの大きいものから順にソートして(ステップS72)、そのファイルサイズの大きい順にハードウエアモジュールの情報をネットワーク20上の記憶装置からシステム内部の記憶装置に転送を開始する(時点t2)。
【0167】
図18では、処理bを行うハードウエアモジュールHmABC001Aと、処理cを行うハードウエアモジュールHmXYZ001Bとがシステム内部に存在しないが、末尾のファイルサイズのランクを示す情報が、BのものがAよりもファイルサイズが大きいので、ハードウエアモジュールHmXYZ001Bの転送が開始される。
【0168】
該当するハードウエアモジュールHMを格納するネットワーク上の記憶装置が複数ある場合は、転送能力の高い記憶装置に決定し(ステップS732)、ネットワークからのハードウエアモジュールHMのデータのシステム内の記憶装置への転送を開始する(ステップS733)。この開始直後の単位時間当たりの転送量と予め定めた期待値とを比較し(ステップS734)、転送量が期待値を越えていればそのまま転送を続行し(ステップS735)、越えていなければ、ステップS731に戻り、他の記憶装置に接続を切り換えて同様に転送量を評価する。複数ある記憶装置のすべてで転送量が期待値を越えていなければそれまでに試行した記憶装置で最も速い記憶装置に接続を切り換えて転送を行う。
【0169】
ハードウエアモジュールHMのデータのシステム内の記憶装置への転送が完了すれば、OSにそれを通知し(ステップS736)、必要な、すべてのハードウエアモジュールHMのシステム内への取り込みが完了したら、転送処理の終了をOSに通知する(ステップS737)。
【0170】
一方、ソフトウエアモジュールSMまたはハードウエアモジュールHMによる処理のルーチンR30においては、図15において、繰り返し数をカウントするための変数jが初期化されてj=1となり(ステップS31)、画像のRプレーンに対する処理を開始する。次に何番めのモジュールデータについての処理かを示す変数kを初期化してk=1とする(ステップS51)。
【0171】
図18において、処理a(PQR001)を実行する直前の時点t3で、OSにコンフィギュレーション完了を問い合わせる(ステップS52)。完了していない場合( k≧i) 、アプリケーションプログラムAPは、ソフトウェアモジュールSmPQR001Bを使って処理を実行する(ステップS53)。
【0172】
以降、処理bおよび処理cの直前の時点t7、t9でも同様の問い合わせを、OSに対し行う。しかし、この例では、図18のタイミングチャートに示すように、対応するハードウエアモジュールHmABC001A,HmXYZ001Bのコンフィギュレーションが完了していないので、それぞれソフトウエアモジュールSmABC001,SmXYZ001を用いて処理を実行して、繰り返し処理の1回目が終了する。
【0173】
一方、図18に示すように、処理aのハードウェアモジュールHmPQR001Bのプログラマブル論理回路上へのコンフィギュレーションは、時間t4で完了しており、OSに対しコンフィギュレーションの完了が通知される(ステップS45)。
【0174】
続いて処理bのハードウェアモジュールHmABC001Aのプログラマブル論理回路上へのコンフィギュレーションが行われるが、このモジュールは、このときシステム内部の記憶装置には存在しないので、ネットワーク上の記憶装置から転送してコンフィギュレーションを行う。
【0175】
ネットワーク上の記憶装置からの転送手順は、上記のハードウエアモジュールHmXYZ001Bの場合と同様であるが、ネットワーク上の複数の記憶装置のすべてで転送量が期待値を越えていなければ転送を中断して、コンフィギュレーションも行わず、ソフトウエアモジュールSMによる処理を行うようにする。
【0176】
この例では、ハードウェアモジュールHmABC001Aの転送は、時間t10 に完了し、続けてコンフィギュレーションが行われ、時点t12 に完了する。
【0177】
また、並行ネットワーク転送処理によるいわゆるバックグランド処理で、転送を続けていた、ハードウエアモジュールHmXYZ001Bの転送処理が、時点t13 に完了し、続けてコンフィギュレーションが行われ、そのコンフィギュレーションが、時点t15 で完了する。
【0178】
上述した繰り返し処理の1回目が終了した後に、画像のGプレーンを処理する繰り返し処理の2回目が始まり(j=2)、再び、処理aの直前の時点t14 までプログラムが進行すると、再び、OSにコンフィギュレーション完了を問い合わせる(ステップS52)。コンフィギュレーション完了(k<i)の返答があると、今度は、処理データをハードウェアモジュールHmPQR001Bに渡し、ハードウェアで処理した後、時点t16 で、ハードウエアで処理した結果のみをプログラムへ戻す(ステップS54)。
【0179】
そして、処理bの直前の時点t17 で、OSに対し問い合わせを行うと(ステップS52)、対応するハードウエアモジュールHmABC001Aのコンフィギュレーションが完了しているので、このハードウエアモジュールHmABC001Aで処理を行う(ステップS53)。
【0180】
また、処理cの直前の時点t19 でもOSに対し問い合わせを行うと(ステップS52)、対応するハードウエアモジュールHmXYZ001Bのコンフィギュレーションが完了しているので、ハードウエアモジュールHmXYZ001Bで処理を行って(ステップS54)、繰り返し処理の2回目が終了する。
【0181】
繰り返し処理の2回目が終了した後に、画像のBプレーンを処理する繰り返し処理の3回目が始まる(j=3)。このときには、各処理の直前の時点でOSにコンフィギュレーションを問い合わすと、対応するハードウエアモジュールHmPQR001B,HmABC001A,HmXYZ001Bの全てがプログラマブル論理回路上にコンフィギュレーションされているので、処理a,b,cは、全て、ハードウェアモジュールHmPQR001B,HmABC001A,HmXYZ001Bにて処理が実行され、くり返し処理の3回目が終了し、アプリケーションも終了する(時点t26)。
【0182】
以上のようにして、この第2の実施の形態においても、ソフトウエアモジュールによる処理を実行しながら、ハードウエアモジュールのプログラマブル論理回路16へのコンフィギュレーションを並行して行い、コンフィギュレーションが完了したものについては、プログラマブル論理回路16によるハードウエア処理を行うようにしたので、コンフィギュレーションの時間を考慮することなく、効率的にソフトウエア処理と、ハードウエア処理とを行って、全体としての処理時間の短縮化を図ることができる。
【0183】
[第3の実施の形態]
以上の第1および第2の実施の形態は、各処理モジュールをソフトウエアモジュールSMで行うか、ハードウエアモジュールHMで行うかを、アプリケーションプログラムの実行時に決定するようにしたが、前述もしたように、アプリケーションプログラムの実行前に行うようにすることもできる。
【0184】
この第3の実施の形態は、図1または図11において、実行モジュール決定手段600での実行モジュールの決定を、アプリケーションプログラムの実行前に行うようにする場合である。
【0185】
この第3の実施の形態の場合、アプリケーションプログラムのヘッダ部HEDには、各ソフトウエアモジュールSMの識別符号と、ハードウエアモジュールHMの識別符号とが、対応して記述されるとともに、それぞれのモジュールの能力などに関する情報、例えば、それぞれの処理にかかる時間、ソフトウエアモジュールのメモリ使用量、ハードウエアモジュールのプログラマブル論理回路セル使用量などが、記述されている。
【0186】
この第3の実施の形態の情報処理システムは、アプリケーションプログラムの実行前に、このヘッダ部HEDの情報を取得する。そして、前記のソフトウエアモジュールSMおよびハードウエアモジュールHMについての能力等に関する情報を、情報処理システムのディスプレイの画面に表示する。
【0187】
ユーザは、期待する処理時間、情報処理装置が備えているメモリ量、プログラマブル論理回路が備えているセル数を考慮して、各処理モジュールをどちらのモジュールで行うかを、キー操作部を用いて指示する。
【0188】
実行モジュール決定手段600は、この指示により、各処理モジュールを、ソフトウエアモジュールと、ハードウエアモジュールのいずれで実行するかの情報を格納する。そして、実行モジュール決定手段600は、各処理モジュールの実行時に、設定されたモジュールで処理を実行するように制御する。
【0189】
なお、この第3の実施の形態の場合には、ハードウエアモジュール取得手段300で検索し、取得するハードウエアモジュールHMは、プログラムのヘッダ部HEDに識別符号が記述されているすべてのハードウエアモジュールHMではなく、事前に選択されたハードウエアモジュールHMのみでよい。
【0190】
このように、この第3の実施の形態の場合には、プログラム開始前に、各処理モジュールの実行について、ソフトウエアモジュールとハードウエアモジュールのいずれを使用するかを、ユーザが自由に選択指示することができる。したがって、処理速度だけでなく、メモリ使用量などを考慮した適切な処理を行うようにすることができる。
【0191】
[第4の実施の形態]
以上に示した第1の実施の形態、第2の実施の形態および第3の実施の形態では、アプリケーションプログラムが、ソフトウエアモジュールの集合で構成され、ソフトウエアモジュールと同じ処理を行うハードウエアモジュールを、プログラムのヘッダ部HEDの識別符号により取得し、プログラムの実行前またはプログラム実行時に、実行モジュールを決定した。
【0192】
しかし、この逆に、アプリケーションプログラムが、ハードウエアモジュールの集合で構成され、ハードウエアモジュールと同じ処理を行うソフトウエアモジュールを、プログラムのヘッダ部HEDの識別符号によりシステム内の記憶装置やネットワーク上の記憶装置から取得する場合も、ソフトウエアモジュールとハードウエアモジュールとを置き換えるだけで、前述した第1の実施の形態、第2の実施の形態、第3の実施の形態と、同様な処理を行うことができる。
【0193】
なぜならば、両方のモジュールを取得した後では、実行モジュールを決定する手順は同じであり、実行プログラム用記憶部としての主記憶装置である、例えばメインメモリ13に格納されているソフトウエアモジュールを、再び取得する必要はないし、アプリケーションの開始前にソフトウエアモジュールを、主記憶装置に格納することができるからである。
【0194】
この第4の実施の形態の場合の、ブロック図を、図19に示す。この図19は、第2の実施の形態に対応したものであり、第1の実施の形態に対応する構成の場合には、識別情報記憶手段800が存在しない。
【0195】
この場合には、アプリケーションプログラム110に記述されているハードウエアモジュールHMは、プログラマブル論理回路400に転送されて、再構成される。
【0196】
また、前述の実施の形態のハードウエアモジュール取得手段300に対応するソフトウエアモジュール取得手段330は、前述の実施の形態と同様にして、ネットワーク上の記憶装置の処理能力を考慮した転送を行い、取得したソフトウエアモジュールを、実行プログラム記憶手段550に格納し、CPU500で実行するようにする。この実行プログラム記憶手段440は、前述したように、情報処理システムでは、ハードディスクドライブ18やメインメモリ13で構成される。
【0197】
[実施の形態の効果]
以上説明したように、第1の実施の形態、第2の実施の形態、第3の実施の形態および第4の実施の形態では、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアモジュールによるアプリケーションプログラムの実行と並行して、ソフトウエアモジュールと同じ処理を行うハードウエアモジュールのコンフィギュレーションを行うことにより、プログラム論理回路の再構成時間を考慮した最善のソフトウエアモジュールとハードウエアモジュールの組み合わせでプログラムを実行することができ、情報処理システムの最高の処理能力を発揮することが可能となる。
【0198】
したがって、従来のように、アプリケーションプログラムにおいてソフトウエアモジュールとハードウエアモジュールとで、処理する部分を事前に固定的に決定する必要が無い。
【0199】
また、ハードウエアモジュールの情報あるいはソフトウエアモジュールの情報をネットワークから取得するときには、ネットワーク上の複数の記憶装置(サーバー)のうちの転送処理能力の高いものを選択して情報の取得を実行するようにしたので、ネットワークからの情報の取得を高速に行えるために、全体としての処理速度の向上を図ることができる。
【0200】
また、第2の実施の形態および第4の実施の形態では、プログラム順にネットワークからハードウエアモジュールまたはソフトウエアモジュールを取得するルーチンと並行して、ファイルサイズの大きいもの順に、いまだ、取得していないハードウエアモジュールまたはソフトウエアモジュールを取得して、システム内の記憶装置に取り込んでおくようにしたので、全体としての処理速度の向上を図ることができる。
【0201】
また、第1の実施の形態、第2の実施の形態および第3の実施の形態によれば、ネットワーク上の記憶装置にハードウエアモジュールが格納され、処理の途中でネットワーク通信が切断されることがあっても、処理を中断することなく、ソフトウエアモジュールにより処理を継続することが可能となる。
【0202】
同様に、第4の実施の形態によれば、ネットワーク上の記憶装置にソフトウエアモジュールが格納され、処理の途中でネットワーク通信が切断されることがあっても、処理を中断することなく、ハードウエアモジュールにより処理を継続することが可能となる。
【0203】
また、第3の実施の形態の場合には、プログラムを開始する前に、処理を行うモジュールを指示することで、情報処理装置の状態や、ユーザの好みに応じた処理を行うことができる。
【0204】
なお、以上の実施の形態では、複数存在するネットワーク上の記憶装置のうち、識別符号で示される回路情報が格納されている記憶装置で最も転送能力の高い記憶装置を選択するのに、検索した記憶装置のリストに基づいて行うようにしたが、LANコントローラーや、サーバーコントローラーなどでこの処理を行うことも可能である。
【0205】
また、ネットワークから転送してくるシステム内の記憶装置は、ハードディスク装置を例としているが、CPUバス上のメモリやプログラマブル論理回路のローカルメモリでも、同等あるいはそれ以上の効果が得られる。
【0206】
【発明の効果】
以上説明したように、この発明によれば、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアで処理を実行するか、プログラマブル論理回路によるハードウエアで処理を実行するかを、柔軟に決定することができ、従来のように、アプリケーションプログラムにおいて、ソフトウエアモジュールとハードウエアモジュールとで、処理する部分を事前に固定的に決定する必要が無い。
【0207】
そして、請求項1または請求項2の発明では、ネットワーク上の複数の記憶装置から識別符号に対応するハードウエアモジュールまたはソフトウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中でハードウエアモジュールまたはソフトウエアモジュールの転送速度が最も速い記憶装置を選択する手段を有しているので、その時点で最速の記憶装置からハードウエアモジュールまたはソフトウエアモジュールを入手することができ、転送時間の短縮が可能となり、ひいてはプログラム全体の処理時間の短縮が可能となる。
【0208】
また、請求項3の発明では、記憶装置の転送処理能力が高いときであっても、当該記憶装置にアクセス要求が集中することによる実際の転送時間が長くなることに対処して、実際的に、転送時間を、より短くすることができる。
【0209】
また、請求項4または請求項5の発明によれば、プログラムの実行順にハードウエアモジュールまたはソフトウエアモジュールを入手するプロセスと並行して、情報処理システム内にないハードウエアモジュールまたはソフトウエアモジュールをシステム内の記憶装置に取り込むことにより、ネットワークから取得するオーバーヘッドの時間を最小にすることが可能になる。
【0210】
また、請求項6の発明によれば、並行してネットワークからハードウエアモジュールまたはソフトウエアモジュールを取り込むときに、ファイルサイズの大きいものから順に入手するようにしているので、実行順に入手する場合にはファイルサイズが大きいため、ネットワークからの転送時間がかかってしまうハードウエアまたはソフトウエアモジュールを、効率よく情報処理システム内の記憶装置に取り込んで、処理にとってのオーバーヘッドの時間をさらに短縮することが可能である。
【0211】
特に、実行時までにコンフィギュレーションを行うことが困難なハードウエアモジュールのデータでも、実行時までに、プログラム実行順と並行してネットワーク上の記憶装置からシステム内の記憶装置に転送しておくことができるため、実行時には転送速度の安定しているシステム内のバスのみを介して転送することが可能となり、ハードウエアモジュールで処理モジュールを実行する回数が増えることが期待でき、プログラム全体の処理時間の短縮が可能となる。
【図面の簡単な説明】
【図1】この発明による情報処理システムの第1の実施の形態の概念構成を示すブロック図である。
【図2】この発明による情報処理システムの第1の実施の形態で用いるアプリケーションプログラムの一例を説明するための図である。
【図3】この発明による情報処理システムの第1の実施の形態のハードウエア構成例を示す図である。
【図4】プログラマブル論理回路の一例を説明するための図である。
【図5】プログラマブル論理回路の一例を説明するための図である。
【図6】この発明による情報処理システムの第1の実施の形態の主要な処理動作を説明するためのフローチャートである。
【図7】この発明による情報処理システムの第1の実施の形態の処理の具体例(第1の実施例)を説明するためのフローチャートである。
【図8】図7の一部の処理ルーチンを説明するためのフローチャートである。
【図9】図7の一部の処理ルーチンを説明するためのフローチャートである。
【図10】図7の一部の処理ルーチンを説明するためのフローチャートである。
【図11】この発明による情報処理システムの第2の実施の形態の概念構成を示すブロック図である。
【図12】この発明による情報処理システムの第2の実施の形態で用いるアプリケーションプログラムの一例を説明するための図である。
【図13】第2の実施の形態における処理の流れを説明するためのフローチャートである。
【図14】第2の実施の形態における処理の具体例で用いるアプリケーションプログラムの一例を説明するための図である。
【図15】第2の実施の形態における処理の具体例の処理の流れを説明するためのフローチャートである。
【図16】図15のフローチャートの一部のフローチャートである。
【図17】図16のフローチャートの一部のフローチャートである。
【図18】第2の実施の形態における処理の具体例の処理の流れを説明するためのタイミングチャートである。
【図19】この発明による情報処理システムの第2の実施の形態の概念構成を示すブロック図である。
【図20】従来の情報処理システムの一例を説明するための図である。
【図21】従来の情報処理システムの他の一例を説明するための図である。
【図22】従来の情報処理システムの、さらに他の一例を説明するための図である。
【符号の説明】
10 情報処理システム
11 CPU
12 チップセット
13 メインメモリ
14 バス
15 プログラマブル論理回路インターフェース
16 プログラマブル論理回路
17 ハードディスクインターフェース
18 ハードディスクドライブ
19 通信インターフェース
20 ネットワーク
21、22、23 ネットワーク上の記憶装置
100 アプリケーションプログラム
160 コンフィギュレーションメモリ
200 ネットワーク上の記憶装置
300 ハードウエアモジュール取得手段
330 ソフトウエアモジュール取得手段
400 プログラマブル論理回路
440 実行プログラム記憶手段
500 CPU
600 実行モジュール決定手段
700 選択条件設定手段
800 識別符号記憶手段
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an information processing system in which at least a part of processing can be processed by a programmable logic circuit whose circuit configuration can be reconfigured. In particular, the information processing system can execute efficient processing. It relates to the invention to do.
[0002]
[Prior art]
In the field of digital circuit devices, particularly application-specific integrated circuits (ASICs), programmable logic circuits composed of field programmable gate arrays (FPGAs), programmable logic devices (PLDs), and the like have been developed in order to shorten product development periods. Widely used.
[0003]
These programmable logic circuits can freely configure the connection between the internal logic circuit and the logic circuit by causing them to read circuit information describing the logic circuit. For this reason, the use of a programmable logic circuit device has an advantage that it does not require time for manufacturing an integrated circuit, which conventionally required several weeks to several months after the circuit design is completed. In particular, an electrically reconfigurable programmable logic circuit device such as the invention of U.S. Pat. No. 4,700,187 has the advantage that a circuit once produced can be freely changed as many times as necessary. Programmable logic circuit devices are becoming more and more widely used.
[0004]
By the way, the complexity of recent logic circuits has increased, and the circuit scale has grown to a scale that cannot be realized with a single programmable logic circuit device.
[0005]
As one method for solving this problem, it has been proposed to reconfigure a programmable logic circuit in the middle of processing in order to realize different logic circuits at different times. By using this method, since the apparatus is small like a portable information terminal, there is an advantage that various processes can be performed at a relatively high speed even when the circuit scale that can be incorporated is limited.
[0006]
However, when the programmable logic circuit is reconfigured, the circuit information of the entire circuit is read again, so that there is a disadvantage that it takes time to reconfigure. Furthermore, reconfiguration in the middle of processing temporarily interrupts processing, saves the data at that time to a storage device outside the programmable logic circuit, reads and reconfigures new circuit information, and reconfigures the data before reconfiguration. Therefore, an extra process of inputting new data associated with the reconstruction is necessary, and the process of taking in and out the data becomes redundant.
[0007]
In order to solve this problem, it is described in a programmable logic circuit described in a data book named “CONFIGURABLE LOGIC” of Atmel in the United States, and in a data book named “THE PROGRAMMABLE LOGIC” in the United States of America. A programmable logic circuit has a data storage device for storing data. For reconfiguration by reading a part of circuit information from an external storage device and performing partial reconfiguration even during circuit operation I try to keep time to a minimum.
[0008]
The problem with using such a programmable logic circuit in an information processing system is that the process is separated into a process performed by a programmable logic circuit and a process performed by a fixed logic circuit device such as a microprocessor that cannot change the circuit configuration. The technology to do is not established.
[0009]
As one of methods for solving this problem, there is an example of a computer disclosed in Japanese Patent Laid-Open No. 6-301522. This will be described as Conventional Example 1 with reference to FIG.
[0010]
That is, in the conventional example 1 of FIG. 20, the source program 1000 executed by the computer includes a fixed unit that cannot change the circuit configuration and a variable unit that can change the circuit configuration like a programmable logic circuit. The library 1001 stores information on the configuration of the fixed unit and information on circuits that can be configured by the variable unit.
[0011]
The compiler 1002 analyzes the source program 1000 and converts it into object code and hardware configuration data while referring to the library 1001. For example, the compiler 1002 analyzes the flow of the source program, detects the frequency of the function, determines a function with a large number of calls as a function to be processed by hardware based on the detected frequency, and sets the hardware configuration data 1003. Is created and output.
[0012]
Next, the compiler 1002 generates a code indicating that a portion determined to be processed by hardware is processed by a predetermined variable unit. Then, this code is added to the portion to be processed by the remaining software to create and output an object code 1004. The computer 1005 executes processing according to the object code using the fixed unit and the variable unit configured by the hardware configuration data.
[0013]
In this way, in Conventional Example 1, the speed of the entire process is increased by implementing a function having a large number of calls at the time of compilation into hardware.
[0014]
Next, a case of a computer device disclosed in Japanese Patent Application Laid-Open No. 5-150943 will be described as Conventional Example 2 for solving the above problem. In this conventional example 2, the processing separated into the processing performed by the programmable logic circuit and the processing performed by the fixed logic circuit device is executed as the application program by the computer device as the information processing system.
[0015]
The computer device of Conventional Example 2 includes a CPU, a memory, a programmable logic circuit, an external storage device such as a hard disk, and other input / output interfaces.
[0016]
The external storage device stores circuit data of the programmable logic circuit and an application program. The memory stores an initial loading program for loading an application program from an external storage device.
[0017]
The CPU executes these programs and writes circuit data to the programmable logic circuit. The programmable logic circuit is connected to the bus line of the CPU, receives a signal on the bus line, performs logic processing, and returns the signal to the bus line. The processing procedure in the conventional example 2 is shown in FIG.
[0018]
First, a program file to be executed is designated (step S1). Next, it is determined whether or not circuit data is included in the designated program file (step S2). If included, the circuit data writing program is loaded and executed (step S3), and then the circuit data is loaded. (Step S4), the circuit data is written in the programmable logic circuit (Step S5). Thereafter, the application program is loaded (step S6) and executed (step S7).
[0019]
If the designated program file does not include circuit data, the process jumps from step S2 to step S6, and the application program is loaded and executed as it is.
[0020]
As described above, in the case of Conventional Example 2, the circuit performs a predetermined logic process when executing an instruction using a function on the programmable logic circuit. Thereby, without providing special hardware for each application, it is possible to configure a logic circuit as necessary to increase the processing speed.
[0021]
An information processing system that processes a part of the processing described above with a programmable logic circuit can be used by being connected to a network. As an example of such a case, an image reproducing device disclosed in Japanese Patent Laid-Open No. 9-74556 is shown as Conventional Example 3 below.
[0022]
As shown in FIG. 22, this image reproduction device is encoded with a moving image decoding unit 1100 that can reconfigure the processing system by a programmable logic circuit, and a program for reconfiguring the moving image decoding unit 1100. The receiving unit 1200 for downloading the moving image data from the network NT, switching means 1300 for switching the transmission destination depending on whether the received data is a program or moving image data, and the program can be changed to the configuration of the moving image decoding unit 1100. It comprises a program conversion unit 1400 for converting into a format, a receiving unit 1200, a switching unit 1300, a program conversion unit 1400, and a control unit 1500 for controlling the moving image decoding unit 1100.
[0023]
The moving image decoding unit 1100 performs inverse quantization on the quantized image data and can change the inverse quantization processing content, and inverse transforms the converted image data. And an inverse transformation unit 1102 that can change the content of the inverse transformation process.
[0024]
The program conversion unit 1400 includes a first program part (hardware processing part) that converts the program into a format that can change the configuration of the moving picture decoding unit 1100, and a second program part that is executed by the control unit 1500 during moving picture reproduction. A dividing unit 1401 that divides (software processing part), a first conversion unit (hardware compiler) 1402 that converts the first program part into a format that can change the configuration of the moving picture decoding unit 1100, and a second program A second conversion unit (software compiler) 1403 that converts the part into a format in which the control unit 1500 can decode and execute the processing.
[0025]
This image reproduction apparatus receives a moving image reproduction program and encoded moving image data from the network NT, and operates as follows.
[0026]
First, the reproduction algorithm program described in the logical description language is received by the receiving unit 1200. The received data is transmitted to the program conversion unit 1400 through the transmission switching unit 1300, and is divided into a hardware processing part and a software processing part by the dividing unit 1401.
[0027]
The hardware processing part is transferred to the first conversion unit 1402 and converted into a format (bit stream) that can rewrite the programmable logic circuit (FPGA), and the inverse quantization unit 1101 and the inverse conversion unit 1102 are controlled by the control unit. Rewriting is performed under control from 1500. Further, the software processing part is transferred to the second conversion unit 1403, converted into a format that can be processed by the processor, and then transferred to the control unit 1500.
[0028]
When moving image data is sent from the network NT to the image reproduction apparatus of FIG. 22 configured as described above, it is received by the receiving unit 1200, transmitted to the moving image decoding unit 1100 by the switching means 1300, and output as decoded data. The
[0029]
As described above, by configuring the inverse quantization unit 1101 and the inverse transform unit 1102 with elements whose circuit configuration can be changed, it is possible to deal with image data reproduced by different algorithms, The hardware of the decoding unit has an optimum processing capability.
[0030]
[Problems to be solved by the invention]
However, the conventional examples 1 to 3 related to the information processing system for processing a part of the processing with the programmable logic circuit described above have the following problems.
[0031]
In Conventional Example 1, the processing executed by the programmable logic circuit is determined in a unified manner such as a function having a large number of calls in one program. For this reason, when the information processing system performs a plurality of processes as a series of processes at once using a plurality of programs, there is a disadvantage that the process using the programmable logic circuit cannot be efficiently used.
[0032]
For example, if the number of calls in one program is small, but there are functions that are commonly called in the entire process that is sequentially executed as a series of processes, it is more efficient to execute the process with a programmable logic circuit. Good. However, in Conventional Example 1, it is not possible to determine that the processing of the function with a small number of calls in one program is executed by the programmable logic circuit.
[0033]
In addition, depending on the function, the size of the corresponding circuit information is large, so it takes a long time to reconfigure the circuit information in the programmable logic circuit. Even if the number of calls is large, the software processing time may be shorter. However, in Conventional Example 1, even such function processing is determined as processing by a programmable logic circuit because the number of calls is large.
[0034]
In Conventional Example 2, a part to be processed by hardware is predetermined for each application, and the part to be processed by hardware is mounted on a programmable logic circuit before starting a program. For this reason, there is a problem that software processing that does not require hardware processing is not started until the circuit configuration is completed.
[0035]
In particular, when the writing time to the programmable logic circuit is long due to the large size of the circuit data, the entire processing time may be shorter when the processing is performed by software having a processing speed slower than the hardware processing.
[0036]
That is, in the case of Conventional Example 2, the problem is that only the processing time of each hardware processing and software processing is focused, and the reduction of the entire processing time including the reconfiguration time of the programmable logic circuit is not considered. There is. In addition, since the programmable logic circuit is reconfigured for each program, there is also a problem that the circuits that are commonly used when executing a plurality of programs are also configured redundantly, which is inefficient.
[0037]
In Conventional Example 3, since a program described in a logical description language is downloaded from the network, there is a problem that it takes time to convert the program into circuit information in the image reproducing apparatus.
[0038]
That is, the process of converting logic description language to circuit information is converted from logic description language to netlist, technology mapping is performed according to the device, layout processing of placement and routing is performed, and the result is converted to circuit information. Need to be converted to In particular, it is known that the placement and routing process has a complicated algorithm and takes time.
[0039]
In other words, in Conventional Example 3, the client uses a description method with a high degree of abstraction such as a logical description language for the purpose of making the program stored in the server on the network and shared by the client compatible. There is a problem in that the amount of pre-processing increases and the overall processing time becomes long enough to impair the reduction of processing time by hardware processing.
[0040]
In Conventional Example 3, the program is acquired from the network. However, transmission over the network has a problem in terms of reliability because communication may be interrupted and the program may not be downloaded.
[0041]
Furthermore, transmission over the network is slower in transmission speed than bus transmission within the information processing system. In addition, when the load on the network or server is not constant and is congested, there is a problem that the transfer speed becomes very slow.
[0042]
For example, taking the case where circuit information to be reconfigured into a programmable logic circuit is acquired from a network as an example, even if software processing takes time-consuming processing by replacing it with hardware processing by a programmable logic circuit, Considering the hardware processing time as the time from the first step of downloading a program from the network to the end of the processing, the problem of increase in processing time due to instability of the transfer rate from the network cannot be ignored.
[0043]
Also, in hardware processing by programmable logic circuits, network transfer time and reconfiguration time of circuit information to programmable logic circuits is an overhead with respect to the original hardware processing time. Is much slower than the reconfiguration speed of circuit information to the programmable logic circuit, there is a problem that the larger the file size of the circuit information, the larger the network transfer portion of the overhead.
[0044]
As described above, as a problem common to the above-described conventional examples 1 to 3, the reconfiguration time of the programmable logic circuit including the time for acquiring circuit information and a plurality of programs executed as a series of processes are common. It can be mentioned that the processing is centrally separated into hardware processing and software processing without considering the processing used.
[0045]
In addition, the problem in obtaining necessary information through a network is a problem that must be solved in terms of overall processing time and efficiency.
[0046]
The present invention solves the problem of processing efficiency such as processing speed when processing is performed by combining software and hardware in an information processing system that can execute part of processing using a programmable logic circuit. An object of the present invention is to solve the above-described problems when obtaining necessary information from a network.
[0047]
[Means for Solving the Problems]
In order to solve the above problems, an information processing system according to the invention of claim 1
A series of processes is divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of software modules in which the processes are described in a program language, and An information processing system in which a part of a series of processing can be processed by a programmable logic circuit,
A hardware module in which the same processing as that performed by the software module in the program is described by circuit information for reconfiguring the programmable logic circuit is obtained from a storage device on the network, and the programmable logic circuit is reconfigured. Hardware module acquisition means for
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating the hardware module that performs the same processing as the processing performed by the software module is described in the program,
The hardware module acquisition means includes
A hardware module corresponding to the identification code described in the program is obtained from a storage device on the network,
A storage device storing a hardware module corresponding to the identification code is searched from a plurality of storage devices on the network, and a storage device having the fastest transfer speed of the hardware module is selected from the plurality of corresponding storage devices. Search means to
Acquisition execution means for executing acquisition of the hardware module from the storage device selected by the search means and reconfiguration of the programmable logic circuit;
It is characterized by having.
[0048]
An information processing system according to the invention of claim 2
A series of processes are divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of hardware modules in which the processes are described by circuit information included in a programmable logic circuit. And an information processing system in which a part of the series of processes can be processed by the programmable logic circuit,
A storage unit that stores a software module in which the same processing as that performed by the hardware module in the program is described in a program language;
Software module acquisition means for obtaining the software module from the storage device and storing it in the execution program storage;
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating a software module that performs the same processing as that performed by the hardware module is described in the program.
The software module acquisition means includes
Obtaining a software module corresponding to the identification code and storing it in the execution program storage unit,
A storage device storing the software module corresponding to the identification code is searched from a plurality of storage devices on the network, and the storage device having the fastest transfer speed of the software module is selected from the plurality of corresponding storage devices. Search means to
Acquisition execution means for executing acquisition of the software module from the storage device selected by the search means;
It is characterized by having.
[0049]
The invention of claim 3 is the information processing system according to claim 1 or 2,
The acquisition execution means executes the transfer of the hardware module or the software module from the network, and when the transfer amount per unit time is smaller than a predetermined expected value, the transfer speed is It changes so that the said hardware module or the said software module may be acquired from the memory | storage device of a place.
[0050]
An information processing system according to the invention of claim 4
A series of processes is divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of software modules in which the processes are described in a program language, and An information processing system in which a part of a series of processing can be processed by a programmable logic circuit,
A hardware module in which the same processing as that performed by the software module in the program is described by circuit information for reconfiguring the programmable logic circuit is obtained from a storage device on the network, and the programmable logic circuit is reconfigured. Hardware module acquisition means for
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating the hardware module that performs the same processing as the processing performed by the software module is described in the program,
The hardware module acquisition means includes
Acquisition execution means for acquiring the hardware module corresponding to the identification code described in the program from the storage device on the network in the execution order of the processing by the program and reconfiguring the programmable logic circuit When,
In parallel with the processing in the acquisition execution means, the parallel acquisition means for acquiring another hardware module corresponding to the identification code from the storage device on the network and storing it in the storage device in the system,
Means for reconfiguring the programmable logic circuit with circuit information of the hardware module acquired by the parallel acquisition means;
It is characterized by providing.
[0051]
An information processing system according to the invention of claim 5
A series of processes are divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of hardware modules in which the processes are described by circuit information included in a programmable logic circuit. And an information processing system in which a part of the series of processes can be processed by the programmable logic circuit,
A storage unit that stores a software module in which the same processing as that performed by the hardware module in the program is described in a program language;
Software module acquisition means for obtaining the software module from the storage device and storing it in the execution program storage;
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating a software module that performs the same processing as the processing performed by the hardware module is described in the program,
The software module acquisition means includes
Obtaining a software module corresponding to the identification code and storing it in the execution program storage unit,
Execution software for acquiring the software module corresponding to the identification code described in the program from the storage device on the network in the execution order of the processing by the program and storing it in the execution program storage unit Wear module storage means;
Parallel acquisition means for acquiring another software module corresponding to the identification code from the storage device on the network and storing it in the storage device in the system in parallel with the processing in the execution software module storage means ,
Means for storing the software module acquired by the parallel acquisition means in the execution software module storage means;
Furthermore, the invention of claim 6 is the information processing system according to claim 4 or claim 5,
In the program, the file size of the hardware module or software module corresponding to each identification code is described corresponding to the identification code,
In the parallel acquisition means, the hardware modules or software modules corresponding to the identification codes described in the program are sequentially acquired in descending order of the file size.
It is characterized by that.
[0052]
[Action]
In the information processing system according to the invention of each claim having the above-described configuration, one of the software module or the hardware module is described in advance in the program, and the other of the software module or the hardware module is a plurality of on the network. It is stored in the storage unit.
[0053]
The hardware (or software) module stored in the storage unit on the network is acquired by hardware (or software) acquisition means, and circuit information is reconfigured (or stored in the storage unit) in the programmable logic circuit. )
[0054]
The execution module determining means determines whether the processing unit is executed by the software module or the hardware module at the time of executing the program or before executing the program.
[0055]
As in the past, in the application program, the software processing part and the hardware processing part are not fixedly determined in advance, so the reconfiguration time of the programmable logic circuit at the time of determining the execution module is also taken into consideration It is possible to decide to select an efficient execution module as a whole of the processing described in the program based on the various conditions entered in.
[0056]
And according to invention of Claim 1 of said structure, a hardware module searches the memory | storage device which stores the hardware module corresponding to an identification code from the several memory | storage device on a network, Obtained from the storage device having the fastest transfer speed of the hardware module among the storage devices. Therefore, the network transfer time as an overhead with respect to the processing time can be minimized, and the overall processing efficiency can be improved.
[0057]
Similarly, in the invention of claim 2, the software module searches a plurality of storage devices on the network for a storage device storing the software module corresponding to the identification code, and among the plurality of corresponding storage devices. Obtained from the storage device with the fastest transfer speed of the software module. Therefore, the network transfer time as an overhead with respect to the processing time can be minimized, and the overall processing efficiency can be improved.
[0058]
Further, in the invention of claim 3, the transfer from the storage device determined to be fast in the transfer rate in claim 1 or claim 2 is executed, and the transfer amount per unit time is a predetermined expected value. If it is smaller than the above, the hardware module or the software module is changed from the storage device with the next highest transfer rate.
[0059]
This is because when multiple information acquisition requests to a storage device registered as having a high transfer rate are overlapped, each request destination is processed by a method such as time division processing in order to answer the multiple requests. This corresponds to the fact that the actual transfer time is increased in order to distribute data.
[0060]
According to another aspect of the present invention, the hardware module corresponding to the identification code described in the program is obtained from the storage device on the network in the execution order of the processing by the program and reconfigured into a programmable logic circuit. In parallel with this, another hardware module is acquired, transferred to a storage device in the system, and stored.
[0061]
According to a fifth aspect of the present invention, software modules corresponding to the identification codes described in the program are obtained from the storage device on the network in the execution order of the processing by the program, and stored in the execution program storage unit. In parallel with the processing, another software module is acquired from the storage device on the network and stored in the storage device in the system.
[0062]
Therefore, this parallel processing can reduce the overhead for actual processing and shorten the overall processing time.
[0063]
In the invention of claim 6, in particular, the capturing process performed in parallel is acquired in descending order of file size. Therefore, it is possible to perform efficient capturing with less influence of overhead and to shorten the processing time as a whole.
[0064]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of an information processing system according to the present invention will be described below with reference to the drawings.
[0065]
[First Embodiment]
FIG. 1 shows a main conceptual configuration of the first embodiment of the information processing system in which at least a part of the processing is processed by a programmable logic circuit capable of reconfiguring the circuit configuration according to the present invention.
[0066]
In this embodiment, a target application program (in the following description, it may be simply referred to as a program) 100 separates a series of processes to be executed by the program into a plurality of processes. Each process is configured as a module. This module will be referred to as a processing module in this specification.
[0067]
In the first embodiment, each processing module constituting the program 100 is constituted by a software program in which processing is described in a program language so that the CPU executes processing. The software program for each processing module is referred to as a software module in this specification. Therefore, in the case of this embodiment, the application program 100 consists of a set of a plurality of software modules SM.
[0068]
In this embodiment, a module (in this specification, this module is referred to as a hardware module) HM described by circuit information for reconfiguring the same processing as that performed by each of the software modules SM into a programmable logic circuit. And stored in the storage device 200 on the network. In this case, the storage device 200 includes a plurality of storage devices (servers) on the network.
[0069]
In the case of this example, as shown in FIG. 2, the program 100 includes a header part HED and a main part PRG, and the main part PRG is composed of a set of a plurality of software modules SM as described above. . In the header portion HED, the identification code ID of the corresponding hardware module HM described with circuit information for reconfiguring the same processing as each software module SM into a programmable logic circuit is described.
[0070]
In this case, the identification code ID is described in the program 100 so that the correspondence between the software module SM performing the same processing and the hardware module HM is attached. For example, in this example, the identification code ID of the hardware module HM corresponding to each software module SM in the order according to the processing execution order on the programs of the plurality of software modules SM of the main body part PRG is the header part HED. Described in Therefore, a module that is repeatedly used is repeatedly described repeatedly.
[0071]
The hardware module acquisition unit 300 uses the identification code ID described in the program 100 to obtain the hardware module HM that executes the same process as the process executed by the software module SM from the storage device 200 on the network. get. Then, the hardware module acquisition unit 300 reconfigures the circuit based on the acquired hardware module HM on the programmable logic circuit 400.
[0072]
Prior to the acquisition of the hardware module HM, the hardware module acquisition unit 300 collects information on the transfer processing capability of a plurality of storage devices (servers) on the network, and stores any hardware module HM in any storage device. Is stored in the search means 310 as a server list.
[0073]
The search range of the storage device at this time is determined according to, for example, the scale of the application, for example, if the scale is small, about the LAN, and if large, on the Internet.
[0074]
When the hardware module HM acquires the hardware module HM, the hardware module HM first acquires the storage list of the network in which the hardware module HM to be acquired by the search unit 310 is stored. When a plurality of storage devices are searched as a result of the search, the hardware module information is selected from the one having the highest transfer processing capability.
[0075]
The acquisition execution unit 320 of the hardware module 300 acquires the hardware module HM from the storage device selected by the search unit 310 through a network. Further, in this embodiment, the acquisition execution means 320 monitors the transfer amount in the first unit time when the access is concentrated on the selected storage device and the transfer capability is reduced, and the unit If the transfer amount in time is smaller than a predetermined threshold value, it can be switched to another storage device.
[0076]
The software processing by the software module SM of the program 100 is executed by the CPU 500.
[0077]
The actual processing of the application program 100 is executed for each processing module by the execution module determination means 600 selecting whether to execute the software module SM or the hardware module HM. In this embodiment, the execution module determination unit 600 determines which module to execute the processing module on the basis of the execution module selection condition set in the selection condition setting unit 700.
[0078]
The selection condition setting means 700 assumes various selection condition items such as processing time by software or hardware, memory consumption, reconfiguration time of a programmable logic circuit, and the like. Execution module selection conditions can be set by combining these condition items.
[0079]
The selection condition setting means 700 is provided so that the user can change the execution module selection condition. Therefore, when a specific execution module selection condition is determined in advance for the execution module determination unit 600 and the execution module is determined according to the selection condition without changing the selection condition, the selection condition setting unit 700 is included in the execution module determination unit 600, and in that case, it is not necessary to provide the module 700 in particular.
[0080]
Execution module determination by the execution module determination means 600 is performed in two ways: before execution of the program and when executing the program. In the first embodiment, the execution module is determined when the program is executed and when the execution of each processing module is started.
[0081]
[Hardware Configuration Example of the First Embodiment]
FIG. 3 is a block diagram illustrating a hardware configuration example of the information processing system 10 according to the first embodiment of this invention. In the information processing system 10 of this embodiment, a main memory 13 composed of, for example, a DRAM is connected to a host bus 11B of a CPU 11 via a memory controller (not shown) included in a chip set 12.
[0082]
The host bus 11B is also connected to the PCI bus 14 via a host-PCI bus bridge (not shown) included in the chipset 12. A programmable logic circuit 16 through a programmable logic circuit interface 15, a hard disk drive 18 through a hard disk interface 17, and a communication interface 19 are connected to the PCI bus 14.
[0083]
The communication interface 19 is connected to a plurality of storage devices (servers) 21, 22, 23 in which circuit information reconfigured in the programmable logic circuit 16 is stored via a network 20 such as a LAN or the Internet.
[0084]
An application program is stored in the hard disk read / written by the hard disk drive 18. The application program may be stored in a storage device on the network 20.
[0085]
In addition, the hardware module HM acquired from the storage devices 21 to 23 on the network 20 may be temporarily stored in the hard disk of the hard disk drive 18 or the main memory 13. Further, the programmable logic circuit 16 may be provided with a local memory, and the circuit information of the hardware module HM obtained from the network may be stored in the local memory.
[0086]
The information of the hardware module HM stored in the storage device in the information processing system is configured by, for example, overwriting the programmable logic circuit 16 when the hardware module is repeatedly used, for example. Used when not. That is, without obtaining the hardware module HM from the network, the circuit information of the hardware module HM is transferred from the storage device in the system to the programmable logic circuit 16 and reconfigured. In this case, compared to the transfer from the network 20, the bus transfer in the system can be performed at a high speed.
[0087]
In this embodiment, the hardware module acquisition unit 300 and the execution module determination unit 600 are implemented as software as one function of the OS of the information processing system 10 shown in FIG.
[0088]
Next, the structure of the programmable logic circuit 16 is shown in FIG. As shown in FIG. 5, the programmable logic circuit 16 includes a configuration memory 160 for storing circuit information, a logic cell 161, a wiring region 162, and an input / output terminal 163.
[0089]
The configuration memory 160 is composed of rewritable memory elements such as SRAM and DRAM in the logic cell 161 and the wiring area 162. When the address ADR is given to the configuration memory 160 and new circuit information data DA is stored, the circuit configuration in the logic cell 161 and the logic cell 161 and the input / output terminal 163 are connected to each other according to this circuit information. The connection state of the wiring area 162 to be reconfigured is reconfigured. This series of operations is called configuration. By rewriting a part of the configuration memory 160, the circuit can be partially reconfigured even when the programmable logic circuit is operating.
[0090]
As shown in FIG. 5, data to be processed is input to a circuit element 164 formed by reconfiguring the programmable logic circuit 16, and the processing result is output.
[0091]
[Description of Processing According to First Embodiment]
FIG. 6 is a flowchart showing a flow of basic processing in the first embodiment of the present invention. As described above, in this example, the determination time point in the execution module determination means 600 is at the time of program execution, and the determination of which module to use is performed at the start of execution of each processing module.
[0092]
Further, as described above, in this embodiment, the hardware acquisition unit 300 and the execution module determination unit 600 in FIG. 1 are implemented as software as one function of the OS of the information processing system 10 in FIG. When the application program 100 is started, processing is executed by the OS.
[0093]
In the example described below, it is assumed that the selection condition setting unit 700 of FIG. 1 is not provided and is included in the execution module determination unit 600. In the first embodiment, hardware processing by a programmable logic circuit whose configuration has been completed can generally be performed at higher speed than the corresponding software processing. It is determined whether or not the reconfiguration of the hardware module corresponding to the processing module to be executed into the programmable logic circuit 16 is completed. When the reconfiguration is completed, the processing module is reconfigured by the hardware module. Is executed by a programmable logic circuit.
[0094]
Prior to the execution of the application program 100, the CPU 11 accesses the plurality of storage devices 21 to 23 on the network 20 through the communication interface 19 in advance, and relates to the transfer processing capabilities of the storage devices 21 to 23 on the network 20. In addition to collecting information, information on which hardware modules are stored in each of the storage devices 21 to 23 is also collected, for example, in the form of a table, and as a server list, the main memory 13 or It is held on the hard disk of the hard disk drive 18.
[0095]
Prior to the execution of the actual application program, first, as shown in FIG. 2, the identification code ID of the hardware module HM described in the header part HED in the program 100 is read, and the application program The hardware module HM configured on the programmable logic circuit 16 to be used is recognized by the hardware module acquisition unit 300 (step S11).
[0096]
Next, the application program is executed, and two routines are executed in parallel. One is the execution of configuration of the programmable logic circuit 16 by the hardware module acquisition means 300, and the other is the software module SM or hardware module for each processing module executed by the program by the execution module determination means 600. HM determination and execution of its processing module.
[0097]
As described above, the hardware module acquisition unit 300 determines in which storage device on the network 20 the circuit information of the hardware module HM corresponding to the first identification code ID of the previously read identification code ID exists. Thus, a search is performed using the server list that has been collected and created in advance. When it is determined that the hardware module HM indicated by the identification code is stored in a plurality of storage devices on the network 20, the transfer processing capability of the storage devices is referred to and the transfer process is most performed. A storage device having a high capability is selected and determined as an acquisition destination of the hardware module HM (step S12).
[0098]
Then, the hardware module is acquired from the storage device on the network 20 that has been selected and determined, transferred to the configuration memory 160 of the programmable logic circuit 16, and the configuration is executed. In response to the inquiry from the execution module determination means 600, The success or failure of the configuration is answered (step S13).
[0099]
Then, when the configuration of the first hardware module HM is completed, the hardware module acquisition unit 300 determines whether there is a next hardware module HM (step S14), and if there is a next hardware module HM. Returning to step S12, the storage device on the network 20 for storing the circuit information of the hardware module HM corresponding to the identification code ID, which has a high transfer processing capability, is selected and determined. The hardware module HM is acquired from the storage device, transferred to the configuration memory 160 of the programmable logic circuit 16, and the configuration is executed.
[0100]
The hardware module acquisition unit 300 executes the above-described processing for all the hardware modules HM having the identification code ID read in advance, and performs the configuration.
[0101]
The execution module determination unit 600 inquires of the hardware module acquisition unit 300 to determine whether or not the configuration of the hardware module HM corresponding to the processing module to be executed has been completed (step S15), and the corresponding processing is performed. If the configuration of the hardware module HM has been completed, the processing by the hardware module HM is performed (step S16). If the configuration has not been completed, the processing by the corresponding software module SM is executed (step S17). ).
[0102]
When the processing of the processing module is completed, it is determined whether or not there is a next processing module (step S18). If there is a next processing module, the process returns to step S15. The process by is terminated.
[0103]
Here, the communication between the hardware module acquisition unit 300 and the execution module determination unit 600 is specifically performed as follows in the system 10 of FIG.
[0104]
That is, when the hardware module HM is configured on the programmable logic circuit 16, it is detected by the OS running on the CPU 11 via the PCI bus 14, and the hardware module acquisition means functioning as part of the OS. From 300, the execution module determination means 600 is notified.
[0105]
Further, the processing status of the program is detected by the OS running on the CPU 11, and the circuit of the hardware module HM is sent from the execution module determination unit 600 functioning as a part of the OS to the hardware module acquisition unit 300. Instructed to transfer information and start or stop configuration.
[0106]
As described above, in this embodiment, when a processing module is executed, if the corresponding hardware module HM is reconfigured in the programmable logic circuit 16, the processing of the processing module is performed by the hardware. Make it run in a module.
[0107]
As described above, normally, if the time for the configuration to the programmable logic circuit is not taken into consideration, it is possible to perform processing at high speed by hardware. Therefore, as described above, a series of processing by the application program can be performed at high speed by executing processing with the hardware module for which the configuration has been completed from the time when the configuration has been completed.
[0108]
In this embodiment, since the circuit information of the hardware module HM is obtained from the storage device having the highest transfer processing capacity on the network, the transfer time from the network as the overhead of the configuration time is It can be minimized.
[0109]
[Specific Example of Processing (First Example)]
Next, a first example, which is a specific example of the processing according to the first embodiment, will be described below with reference to the flowcharts of FIGS. 7, 8, 9 and 10.
[0110]
FIG. 7 is a flowchart showing the entire flow of detailed processing corresponding to the flowchart of FIG. 6 in the first embodiment. FIG. 8 shows a detailed flowchart of step S22 of the configuration routine R40 of the hardware module HM in FIG. 9 is a detailed flowchart of step S43 of the transfer routine R60 from the network in FIG. 8, and FIG. 10 is a flowchart of step S32 of the processing routine R50 by the software module SM or the hardware module HM of FIG. A detailed flowchart is shown.
[0111]
In FIG. 7, the routine R30 for processing by the software module SM or the hardware module HM and the routine R20 for configuration of the hardware module HM are executed in parallel.
[0112]
Here, in the first embodiment, it is assumed that M types of processing modules by the software module SM or the hardware module HM are performed, and a series of processing consisting of these M types of processing modules is repeated N times.
[0113]
As shown in FIG. 7, prior to executing the application program, the identification code of the hardware module HM is read from the header portion HED of the application program (step S11). Thereafter, a routine R20 for configuring the hardware module HM and a routine R30 for performing processing by the software module SM or the hardware module HM are executed in parallel.
[0114]
In the routine R20, first, a variable i indicating how many hardware modules HM of the M types of hardware modules are configured is initialized (step S21), and then the configuration of the hardware modules HM is configured. The process proceeds to step S22 for executing the process routine R40.
[0115]
In the configuration processing routine R40 in step S22, as shown in FIG. 8, it is confirmed whether or not the i-th hardware module HM exists on the programmable logic circuit 16 (step S41). Then, the OS is notified that it is already configured on the programmable logic circuit 16 (step S45).
[0116]
If the i-th hardware module HM does not exist on the programmable logic circuit 16, the i-th hardware module HM exists in a storage device (such as the hard disk drive 18 or the main memory 13) in the information processing system 10. It is confirmed whether or not to perform (step S42).
[0117]
If the i-th hardware module HM exists in the storage device in the system 10, the process proceeds to step S44 to perform configuration. If it does not exist in the storage device in the system, in step S43, the processing routine R60 for transfer from the network 20 is executed to search the storage devices 21 to 23 on the network 20 as described above. The circuit information of the hardware module HS is acquired from the selected storage device, and then the process proceeds to step S44 to execute configuration.
[0118]
In the network circuit transfer routine R60 in step S43, as shown in FIG. 9, the information of the hardware module HM is stored from the identification code of the hardware module HM requesting acquisition and the server list. The storage device which is the priority server having a high transfer processing capacity is selected and determined (step S61), and the transfer is started (step S62).
[0119]
Then, if the amount of data transferred during a unit time immediately after the start of transfer, for example, several tens of nanoseconds, is compared with a predetermined expected value, if it is large, the transfer is continued as it is (step S64). Then, the storage device is changed to the storage device having the next highest transfer processing capacity (step S61), and the transfer is started.
[0120]
Note that when the storage device storing the hardware module HM corresponding to the identification code is not found, the transfer from the network 20 is stopped and the processing by the software module SM is performed.
[0121]
Returning to FIG. 8, when the transfer in step S43 and the configuration of the hardware module HM in step S44 are completed, the process proceeds to step S45 to notify the OS of the end of the configuration, and returns to FIG. Is counted up (step S23).
[0122]
If the processing corresponding to the hardware module HM is started before the configuration of the hardware module HM is completed, the software module SM or the routine R30 for processing by the hardware module HM performs the software module. Processing by the SM is performed, but the configuration of the hardware module HM is continued.
[0123]
Then, during the configuration of all of the M types of hardware modules HM, it is determined that the variable j that counts the series of repeated processes executed by the application program 100 is j> N (step S24). When the application is terminated, some of the M types of hardware modules HM are not configured.
[0124]
However, if there is room in the storage device in the information processing system 10, it is possible to continue acquiring circuit information from the storage device on the network 20. By doing so, when the same kind of application is subsequently executed, the circuit information from the network 20 has been taken into the storage device in the system, and the access time can be reduced accordingly. it can. Further, when an attempt is made to acquire from the network 20 later, even if a failure occurs in the network 20 and a necessary hardware module HM cannot be acquired, the influence is minimized.
[0125]
Next, in order to confirm whether or not the hardware module HM to be configured remains, the variable i and the variable M are compared (step S25). If the variable i is equal to or smaller than the variable M, the configuration of the next hardware module HM is started. If the variable i is larger than the variable M, all the hardware modules HM are configured on the programmable logic circuit 16. The configuration process in FIG. 8 is terminated.
[0126]
Next, in FIG. 7, in a routine R30 executed in parallel with the routine 20, first, a variable j for counting a series of repeated processing is initialized (step S31), and then the software module SM or hardware Control goes to step S32 of the routine R50 for executing processing by the module HM.
[0127]
In the routine R50 of step S32, as shown in FIG. 10, first, a variable k for counting the number of processing modules of the M types of processing modules is initialized (step S51).
[0128]
Next, in order to confirm whether or not the k-th hardware module HM has been configured on the programmable logic circuit 16, in this routine R50, up to what number of configurations of the M types of hardware modules HM are selected. A comparison is made between a variable i indicating whether the processing has been completed and a variable k indicating which of the M types of processing modules the processing module to execute the processing is (step S52).
[0129]
If the variable k is smaller than the variable i, it can be seen that the configuration of the hardware module HM corresponding to the k-th processing module is completed on the programmable logic circuit 16, and therefore the processing is executed by the hardware module HM ( Step S53).
[0130]
If the variable k is equal to or greater than the variable i, the hardware module HM corresponding to the k-th processing module has not yet been configured on the programmable logic circuit 16, so that the processing is performed by the software module SM. Is executed (step S54).
[0131]
Next, the variable k indicating the number of the processing module is counted up (step S55), and the next k + 1-th processing module is started from step S52 in the same manner as the previous k-th processing module. Step S55 is executed, and this is repeated until the last M-th processing module (step S56). When the process for the last M-th processing module is completed, the routine returns to the routine of FIG.
[0132]
In FIG. 7, the iteration variable j is counted up (step S33), and the next iteration process is started. When the repeated process is performed N times, the application ends (step S34).
[0133]
As described above, in the first embodiment, in the application program for the process of performing N repetitions of M types of processing modules, the process by the software module SM is first executed. In the meantime, the configuration of the M types of hardware modules HM is gradually completed, and the completed hardware modules HM are sequentially used. Therefore, as the number of repetitions of the repeated processing increases, the number of hardware modules HM that complete the configuration also increases, the processing speed gradually increases, and the overall processing time is shortened.
[0134]
[Second Embodiment]
FIG. 11 shows a main conceptual diagram of the second embodiment of the information processing system according to the present invention. As shown in FIG. 11, in the second embodiment, the hardware module acquisition unit 300 includes a parallel acquisition unit 330 in addition to the search unit 310 and the acquisition execution unit 320.
[0135]
Further, in the second embodiment, the identification information of the hardware module HM acquired from the network by the hardware module acquisition unit 300 and reconfigured in the programmable logic circuit is recorded in the identification information recording unit 800. . Furthermore, the circuit information of the hardware module HM acquired from the network and reconfigured into a programmable logic circuit is stored in a storage device such as a hard disk drive in the information processing system.
[0136]
Others are configured in the same manner as in the first embodiment.
[0137]
The acquisition execution means 320 obtains the hardware module corresponding to the identification code ID described in the header part HED in the program 100 from the storage device on the network 20 in the execution order of the processing by the program 100, and obtains programmable logic. The circuit 400 is reconfigured. This is exactly the same as in the first embodiment. In this embodiment as well, the hardware module is acquired from the storage device having a high transfer processing capacity on the network 20 by the search means 310 and the programmable logic circuit 400 is obtained. To reconfigure.
[0138]
In parallel with the processing in the acquisition execution unit 320, the parallel acquisition unit 330 captures the information of the hardware module HM that has not yet been imported from the network into the storage device in the information processing system into the storage device in the system. Process to do. Whether or not the data is stored in the storage device in the information processing system can be known by referring to the identification code recorded in the identification code recording device 800.
[0139]
In the case of the second embodiment, the parallel acquisition unit 330 sequentially acquires the hardware module HM having a large file size in order from the network. For this reason, in the header part HED of the program 100 in the case of the second embodiment, as shown in FIG. 12, the files of the hardware modules HM correspond to the identification codes of the hardware modules HM. The size is described.
[0140]
In the identification code recording means 800, since the identification code of the hardware module acquired by the hardware module acquisition means 300 and reconfigured in the programmable logic circuit is recorded, by checking the recorded contents, When the same hardware module HM is repeatedly used in the program 100, the configuration of the programmable logic circuit 400 is prevented from being repeatedly executed. This saves configuration time and allows efficient processing.
[0141]
Even in the hardware module HM in which the identification code is recorded in the identification code recording means 800, the programmable logic circuit 400 is overwritten by the circuit information and does not exist on the programmable logic circuit 400. In this embodiment, if the identification code is recorded in the identification code recording means 800, the circuit information is recorded in the storage device in the system. By reading out the hardware module HM from the computer and configuring it in the programmable logic circuit 400, rapid configuration is possible without transfer from the network and acquisition.
[0142]
In the hardware configuration of the second embodiment, the hardware module acquisition unit 300 is one of the OSs in the information processing system, and the identification code recording unit 800 is configured as described below. This can be realized with the same hardware configuration as the information processing system 10 that implements the first embodiment shown in FIG.
[0143]
That is, when the configuration of the hardware module HM is completed and the OS is notified of the end of the configuration as shown in step S45 of FIG. 8, the identification code of the hardware module HM that has completed the configuration is The identification code recording means 800 is realized by recording in the storage device 10 such as the hard disk drive 18 or the main memory 13 shown in FIG.
[0144]
[Specific example of processing]
FIG. 13 is a flowchart showing the flow of processing of the second embodiment. The process in FIG. 13 is a process in which a parallel network transfer process (routine R70) for executing the process in parallel with the process shown in FIG. 7 is added. This parallel network transfer process is executed by the parallel acquisition unit 330 of the hardware module acquisition unit 300.
[0145]
Of the three processing routines R30, R20, and R70 shown in FIG. 13, the two processing routines R30, R20, on the left are exactly the same as those in the first embodiment described with reference to FIG. Are routines for executing processing by the software module SM or the hardware module HM, respectively.
[0146]
The right processing routine R70 in FIG. 13 is the parallel network transfer processing routine, and the processing is executed in parallel with the routines R20 and R30. Since the routines R20 and R30 are as described above, the parallel network transfer processing routine R70 will be mainly described here.
[0147]
When the application program 100 is started, first, the identification code ID of the hardware module HM and each file size are read from the header part HED of the application program 100 (step S11). Thereafter, a first routine R30 for performing processing by the software module SM or the hardware module HM, a second routine R20 for configuring the hardware module HM, and storing the hardware module HM in the system from the network. The third routine R70 for transferring to the apparatus is executed in parallel.
[0148]
In the second routine R20, the acquisition of the hardware module HM from the network is performed, but in the third routine R70, a hardware module HM having a large file size that takes time to transfer is separately stored in advance. The data is transferred to a storage device in the system.
[0149]
In the third routine R70, the storage devices 18 and 13 in the information processing system are searched for the identification code of the read hardware module HM, and the hardware module HM not in the storage device in the system is extracted (step S71). . Then, these hardware modules HM are sorted according to the size based on the file size described in the header portion HED (step S72). Then, according to the sorting result, the data is transferred from the storage device on the network to the storage device in the information processing system in order from the hardware module HM having the largest file size.
[0150]
In this case, the transfer method is similar to the above-described method, in which a storage device having a high transfer processing capability is searched and the transfer is preferentially performed from the storage device. Then, the actual transfer amount for a predetermined unit time is calculated from the start of the transfer, and if the transfer amount is smaller than the predetermined expected value, the transfer is performed from the storage device having the next highest transfer processing capacity. I do. However, in all the storage devices, when the calculated transfer amount is smaller than the predetermined minimum data amount, the transfer is performed from the storage device first tried.
[0151]
As described above, when the hardware modules HM are acquired and configured in the program order in the routine R20, the routine R70 is executed in parallel to store the other hardware modules HM in the system. Since the capture to the device is executed, when the acquisition and configuration processing of the next hardware module is started in the routine R20, the hardware module is already captured in the storage device in the system. No acquisition from the network is required, and only the configuration from the storage device in the system is required.
[0152]
Therefore, the overhead for acquiring the hardware module from the network for the configuration of the programmable logic circuit is reduced, and a high-speed configuration is possible.
[0153]
[Specific Example of Processing (Second Example)]
Next, as a specific example of processing in the case of the second embodiment (second example), the case of image processing will be described as an example.
[0154]
In the second embodiment, image processing for sharpening an unclear image by performing three types of processing of linear transformation processing, noise removal processing, and edge enhancement processing on image data using three types of image filters. To do.
[0155]
The structure of this application program AP will be described with reference to FIG. A list of identification code IDs for associating the software module SM used in the application program AP with the hardware module HM is added to the header portion HED of the application program AP.
[0156]
In the program, the hardware module SM and the software module HM are called as a duplicated process.
[0157]
There are three processing modules to be used: noise removal processing ABC001 using a Gaussian filter, contour enhancement processing XYZ001 using a Laplacian filter, and linear transformation processing PQR001. In the header portion HED, identification codes HmABC001, HmXYZ001, and HmPQR001 of the hardware module HM corresponding to these processes are described.
[0158]
Further, in this example, the hardware module identification codes HmABC001, HmXYZ001, and HmPQR001 of the header part HED are given codes that rank the file sizes. The upper limit file size is determined by the programmable logic circuit to be used. In this example, the file sizes are ranked as A, B,.
[0159]
For example, the hardware module of the noise removal processing ABC001 having the smallest rank A file size is HmABC001A. Similarly, in this example, HmXYZ001B and HmPQR001B are described. The corresponding software module is given a prefix with a prefix of Sm.
[0160]
The software module SM and the hardware module HM have the same arguments and return values and are completely compatible, and are configured to appear to the same processing module from the application program AP.
[0161]
Next, this image processing operation is shown in FIG. 15 and the flowcharts shown in FIGS. The flowcharts of FIG. 15, FIG. 16, and FIG. 17 correspond to the processing operations described with reference to FIG. 13 and FIG. 7 to FIG. 10, and the corresponding steps are denoted by the same step numbers. is there.
[0162]
FIG. 18 shows a timing chart of this image processing operation. The image processing operation of the second embodiment will be described below using the flowcharts of FIGS. 15 to 17 and the timing chart of FIG. In FIG. 18, the process a shows the linear transformation PQR001, the process b shows the noise removal process ABC001 using the Gaussian filter, and the process c shows the contour enhancement process XYZ001 using the Laplacian filter.
[0163]
Also, since there are three types of processing modules to be used, linear transformation PQR001, noise removal processing ABC001, and edge enhancement processing XYZ001, the number M of processing modules in FIGS. Further, since the process a to the process c are repeatedly executed for each plane of R (red data), G (green data), and B (blue data) of the image, the number of repetitions N in FIGS. 3
[0164]
In FIG. 18, when the application program is activated at time t0, initialization processing of the program AP and preparation of a processed image are performed. Simultaneously, a processing routine R20 for reading the identification code ID in the header part HED of the application program AP (step S11), obtaining the circuit information of the hardware module HM described therein, and configuring it on the programmable logic circuit is provided. , Starting from time t1. This processing routine R20 acquires and loads the hardware modules HM in the order of programs (the order of identification codes described in the header part HED).
[0165]
When the program is started, the first hardware module HmPQR001B is not configured on the programmable logic circuit. First, the storage device in the system is searched, and if the hardware HmPQR001B exists, it is downloaded from the storage device. . If it does not exist in the storage device in the system, it is transferred from the network.
[0166]
At the same time, the preprocessing of the parallel network transfer processing routine R70 starts at time t1. In this preprocessing, a storage device such as a hard disk or local memory in the system is searched to check whether there is a hardware module that matches the read identification code other than HmPQR001 (step S71). The hardware modules that do not exist in the storage device in the system are sorted in descending order of the file size at the end of the identification code (step S72), and the hardware module information is sorted in the order of the file size. Transfer is started from the storage device 20 to the storage device in the system (time t2).
[0167]
In FIG. 18, the hardware module HmABC001A that performs the process b and the hardware module HmXYZ001B that performs the process c do not exist in the system. Since the size is large, the transfer of the hardware module HmXYZ001B is started.
[0168]
If there are a plurality of storage devices on the network that store the corresponding hardware module HM, the storage device is determined to have a high transfer capability (step S732), and the data of the hardware module HM from the network is stored in the storage device in the system. Is started (step S733). The transfer amount per unit time immediately after the start is compared with a predetermined expected value (step S734). If the transfer amount exceeds the expected value, the transfer is continued as it is (step S735). Returning to step S731, the connection is switched to another storage device and the transfer amount is similarly evaluated. If the transfer amount does not exceed the expected value in all of the plurality of storage devices, transfer is performed by switching the connection to the fastest storage device tried so far.
[0169]
When the transfer of the data of the hardware module HM to the storage device in the system is completed, it is notified to the OS (step S736), and when the necessary loading of all the hardware modules HM into the system is completed, The end of the transfer process is notified to the OS (step S737).
[0170]
On the other hand, in the routine R30 of processing by the software module SM or the hardware module HM, in FIG. 15, the variable j for counting the number of repetitions is initialized to j = 1 (step S31), and the R plane of the image The process for is started. Next, a variable k indicating the number of module data to be processed is initialized to k = 1 (step S51).
[0171]
In FIG. 18, at the time t3 immediately before executing the process a (PQR001), the OS is inquired of the completion of configuration (step S52). If not completed (k ≧ i), the application program AP executes processing using the software module SmPQR001B (step S53).
[0172]
Thereafter, the same inquiry is made to the OS at time points t7 and t9 immediately before the process b and the process c. However, in this example, as shown in the timing chart of FIG. 18, since the configuration of the corresponding hardware modules HmABC001A and HmXYZ001B is not completed, the processing is executed using the software modules SmABC001 and SmXYZ001, respectively. The first iteration is completed.
[0173]
On the other hand, as shown in FIG. 18, the configuration of the hardware module HmPQR001B in process a on the programmable logic circuit is completed at time t4, and the OS is notified of the completion of configuration (step S45). .
[0174]
Subsequently, the hardware module HmABC001A in the process b is configured on the programmable logic circuit, but since this module does not exist in the storage device inside the system at this time, it is transferred from the storage device on the network and configured. Perform
[0175]
The transfer procedure from the storage device on the network is the same as that of the hardware module HmXYZ001B described above, but if the transfer amount does not exceed the expected value in all of the plurality of storage devices on the network, the transfer is interrupted. The configuration is not performed and the processing by the software module SM is performed.
[0176]
In this example, the transfer of the hardware module HmABC001A is completed at time t10, followed by configuration, and completed at time t12.
[0177]
In addition, the transfer processing of the hardware module HmXYZ001B, which has been transferred in so-called background processing by the parallel network transfer processing, is completed at time t13, and then the configuration is performed. At time t15, the configuration is performed. Complete.
[0178]
After the first repetition of the above-described repetition process, the second repetition of the repetition process for processing the G plane of the image starts (j = 2), and when the program proceeds again to a time point t14 immediately before the process a, the OS again Is inquired of the completion of configuration (step S52). If there is a response indicating that the configuration is complete (k <i), this time, the processing data is passed to the hardware module HmPQR001B and processed by the hardware. Then, at time t16, only the result processed by the hardware is returned to the program ( Step S54).
[0179]
Then, when an inquiry is made to the OS at time t17 immediately before the process b (step S52), since the configuration of the corresponding hardware module HmABC001A is completed, the process is performed by the hardware module HmABC001A (step S52). S53).
[0180]
Further, when an inquiry is made to the OS at time t19 immediately before the process c (step S52), since the configuration of the corresponding hardware module HmXYZ001B is completed, the process is performed by the hardware module HmXYZ001B (step S54). ), The second iteration is completed.
[0181]
After the second iteration, the third iteration of processing the B plane of the image begins (j = 3). At this time, when the configuration is inquired to the OS immediately before each processing, the corresponding hardware modules HmPQR001B, HmABC001A, and HmXYZ001B are all configured on the programmable logic circuit, so that the processing a, b, c Are all executed by the hardware modules HmPQR001B, HmABC001A, and HmXYZ001B, the third iteration of the repeat process is completed, and the application is also terminated (time t26).
[0182]
As described above, also in the second embodiment, the configuration of the hardware logic programmable logic circuit 16 is performed in parallel while executing the processing by the software module, and the configuration is completed. Since the hardware processing by the programmable logic circuit 16 is performed, the software processing and the hardware processing are efficiently performed without considering the configuration time, and the processing time as a whole is reduced. Shortening can be achieved.
[0183]
[Third Embodiment]
In the first and second embodiments described above, whether each processing module is performed by the software module SM or the hardware module HM is determined when the application program is executed. In addition, it may be performed before the application program is executed.
[0184]
In the third embodiment, in FIG. 1 or FIG. 11, the execution module determination unit 600 determines the execution module before executing the application program.
[0185]
In the case of the third embodiment, the identification code of each software module SM and the identification code of the hardware module HM are described correspondingly in the header part HED of the application program. For example, information on the capacity of each module, for example, the time required for each processing, the memory usage of the software module, the programmable logic circuit cell usage of the hardware module, and the like are described.
[0186]
The information processing system according to the third embodiment acquires the information of the header portion HED before executing the application program. Then, information about the capabilities of the software module SM and the hardware module HM is displayed on the display screen of the information processing system.
[0187]
The user uses the key operation unit to determine which module to perform each processing module in consideration of the expected processing time, the amount of memory provided in the information processing device, and the number of cells provided in the programmable logic circuit. Instruct.
[0188]
In accordance with this instruction, the execution module determination unit 600 stores information on whether each processing module is executed by a software module or a hardware module. Then, the execution module determination unit 600 performs control so that processing is executed by the set module when each processing module is executed.
[0189]
In the case of the third embodiment, the hardware module HM searched and acquired by the hardware module acquisition means 300 is all hardware modules whose identification codes are described in the header portion HED of the program. Only the pre-selected hardware module HM is required instead of the HM.
[0190]
As described above, in the case of the third embodiment, before starting the program, the user freely selects and instructs which of the software module and the hardware module is used for execution of each processing module. be able to. Therefore, it is possible to perform appropriate processing in consideration of not only processing speed but also memory usage.
[0191]
[Fourth Embodiment]
In the first embodiment, the second embodiment, and the third embodiment described above, the application program is composed of a set of software modules and performs the same processing as the software module. Is obtained from the identification code of the header part HED of the program, and the execution module is determined before or during execution of the program.
[0192]
However, conversely, the application program is composed of a set of hardware modules, and a software module that performs the same processing as the hardware module is transferred to a storage device or network in the system by the identification code of the header HED of the program. Also when acquiring from the storage device, the same processing as the first embodiment, the second embodiment, and the third embodiment described above is performed only by replacing the software module and the hardware module. be able to.
[0193]
This is because, after obtaining both modules, the procedure for determining the execution module is the same, and the software module stored in the main memory 13, for example, which is the main storage device as the execution program storage unit, This is because it is not necessary to acquire the software module again, and the software module can be stored in the main memory before starting the application.
[0194]
FIG. 19 shows a block diagram in the case of the fourth embodiment. FIG. 19 corresponds to the second embodiment. In the case of the configuration corresponding to the first embodiment, the identification information storage unit 800 does not exist.
[0195]
In this case, the hardware module HM described in the application program 110 is transferred to the programmable logic circuit 400 and reconfigured.
[0196]
Further, the software module acquisition unit 330 corresponding to the hardware module acquisition unit 300 of the above-described embodiment performs transfer in consideration of the processing capability of the storage device on the network, as in the above-described embodiment, The acquired software module is stored in the execution program storage means 550 and executed by the CPU 500. As described above, the execution program storage unit 440 includes the hard disk drive 18 and the main memory 13 in the information processing system.
[0197]
[Effect of the embodiment]
As described above, in the first embodiment, the second embodiment, the third embodiment, and the fourth embodiment, at least a part of the processing is a programmable logic circuit that can reconfigure the circuit configuration. In the information processing system to be processed, the reconfiguration time of the program logic circuit is considered by configuring the hardware module that performs the same processing as the software module in parallel with the execution of the application program by the software module. The program can be executed with the best combination of software modules and hardware modules, and the highest processing capability of the information processing system can be exhibited.
[0198]
Therefore, unlike the prior art, there is no need to fixedly determine in advance the portion to be processed between the software module and the hardware module in the application program.
[0199]
Further, when acquiring hardware module information or software module information from the network, the information acquisition is executed by selecting a storage device (server) having a high transfer processing capability from a plurality of storage devices (servers) on the network. Therefore, since the information can be acquired from the network at high speed, the overall processing speed can be improved.
[0200]
Further, in the second embodiment and the fourth embodiment, in parallel with the routine for acquiring the hardware modules or software modules from the network in the order of the programs, they are not yet acquired in the order of the largest file size. Since the hardware module or software module is acquired and stored in the storage device in the system, the overall processing speed can be improved.
[0201]
In addition, according to the first embodiment, the second embodiment, and the third embodiment, the hardware module is stored in the storage device on the network, and the network communication is disconnected during the processing. Even if there is, it is possible to continue the processing by the software module without interrupting the processing.
[0202]
Similarly, according to the fourth embodiment, even if the software module is stored in the storage device on the network and the network communication is interrupted in the middle of the processing, the hardware is not interrupted. The processing can be continued by the wear module.
[0203]
Further, in the case of the third embodiment, by instructing a module for processing before starting a program, it is possible to perform processing according to the state of the information processing apparatus and user preference.
[0204]
In the above embodiment, a search is performed to select the storage device having the highest transfer capability among the storage devices on the network that have the circuit information indicated by the identification code. Although the processing is performed based on the list of storage devices, this processing can also be performed by a LAN controller, a server controller, or the like.
[0205]
The storage device in the system transferred from the network is a hard disk device as an example, but a memory on the CPU bus or a local memory of a programmable logic circuit can provide the same or more effect.
[0206]
【The invention's effect】
As described above, according to the present invention, in an information processing system in which at least a part of processing is processed by a programmable logic circuit capable of reconfiguring a circuit configuration, processing is executed by software or hardware by a programmable logic circuit It is possible to flexibly determine whether or not to execute the process, and it is not necessary to fixedly determine in advance the part to be processed between the software module and the hardware module in the application program as in the prior art.
[0207]
According to the first or second aspect of the present invention, a plurality of storage devices on the network are searched for a storage device storing a hardware module or software module corresponding to the identification code, and the plurality of corresponding storage devices are searched. In order to select the storage device with the fastest transfer speed of the hardware module or software module, the hardware module or software module can be obtained from the fastest storage device at that time. The time can be shortened, and as a result, the processing time of the entire program can be shortened.
[0208]
According to the invention of claim 3, even when the transfer processing capability of the storage device is high, the actual transfer time due to the concentration of access requests in the storage device is increased, The transfer time can be shortened.
[0209]
According to the invention of claim 4 or claim 5, in parallel with the process of obtaining the hardware module or software module in the order of execution of the program, the hardware module or software module that is not in the information processing system is installed in the system. By taking in the storage device, the overhead time acquired from the network can be minimized.
[0210]
According to the sixth aspect of the present invention, when hardware modules or software modules are fetched from the network in parallel, the modules are obtained in descending order of file size. Because the file size is large, hardware or software modules that take a long time to transfer from the network can be efficiently imported into the storage device in the information processing system, further reducing the overhead time for processing. is there.
[0211]
In particular, even hardware module data that is difficult to configure by the time of execution should be transferred from the network storage device to the system storage device in parallel with the program execution order by the time of execution. Therefore, it is possible to transfer only through the bus in the system where the transfer speed is stable at the time of execution, and it can be expected that the number of times the processing module is executed by the hardware module will increase, and the processing time of the entire program Can be shortened.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a conceptual configuration of a first embodiment of an information processing system according to the present invention;
FIG. 2 is a diagram for explaining an example of an application program used in the first embodiment of the information processing system according to the present invention;
FIG. 3 is a diagram showing a hardware configuration example of the first embodiment of the information processing system according to the present invention;
FIG. 4 is a diagram for explaining an example of a programmable logic circuit;
FIG. 5 is a diagram for explaining an example of a programmable logic circuit;
FIG. 6 is a flowchart for explaining main processing operations of the first embodiment of the information processing system according to the present invention;
FIG. 7 is a flowchart for explaining a specific example (first example) of processing of the information processing system according to the first embodiment of the present invention;
8 is a flowchart for explaining a part of the processing routine of FIG. 7;
FIG. 9 is a flowchart for explaining a part of the processing routine of FIG. 7;
FIG. 10 is a flowchart for explaining a part of the processing routine of FIG. 7;
FIG. 11 is a block diagram showing a conceptual configuration of a second embodiment of the information processing system according to the present invention;
FIG. 12 is a diagram for explaining an example of an application program used in the second embodiment of the information processing system according to the present invention;
FIG. 13 is a flowchart for explaining a processing flow in the second embodiment;
FIG. 14 is a diagram for explaining an example of an application program used in a specific example of processing in the second embodiment;
FIG. 15 is a flowchart for explaining a processing flow of a specific example of processing according to the second embodiment;
16 is a flowchart of a part of the flowchart of FIG.
FIG. 17 is a partial flowchart of the flowchart of FIG. 16;
FIG. 18 is a timing chart for explaining the flow of processing in a specific example of processing in the second embodiment;
FIG. 19 is a block diagram showing a conceptual configuration of the second embodiment of the information processing system according to the present invention;
FIG. 20 is a diagram for explaining an example of a conventional information processing system.
FIG. 21 is a diagram for explaining another example of a conventional information processing system.
FIG. 22 is a diagram for explaining still another example of a conventional information processing system.
[Explanation of symbols]
10 Information processing system
11 CPU
12 chipsets
13 Main memory
14 Bus
15 Programmable logic circuit interface
16 Programmable logic circuit
17 Hard disk interface
18 Hard disk drive
19 Communication interface
20 network
21, 22, 23 Network storage device
100 application programs
160 Configuration memory
200 Network storage devices
300 Hardware module acquisition means
330 Software module acquisition means
400 Programmable logic circuit
440 Execution program storage means
500 CPU
600 Execution module determination means
700 Selection condition setting means
800 Identification code storage means

Claims (6)

一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応するハードウエアモジュールを、前記ネットワーク上の記憶装置から入手するものであって、
前記ネットワーク上の複数の記憶装置から前記識別符号に対応するハードウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中から前記ハードウエアモジュールの転送速度が最も速い記憶装置を選択する検索手段と、
前記検索手段で選択された記憶装置からの前記ハードウエアモジュールの取得およびプログラマブル論理回路の再構成を実行する取得実行手段と、
を有することを特徴とする情報処理システム。
A series of processes is divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of software modules in which the processes are described in a program language, and An information processing system in which a part of a series of processing can be processed by a programmable logic circuit,
A hardware module in which the same processing as that performed by the software module in the program is described by circuit information for reconfiguring the programmable logic circuit is obtained from a storage device on the network, and the programmable logic circuit is reconfigured. Hardware module acquisition means for
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating the hardware module that performs the same processing as the processing performed by the software module is described in the program,
The hardware module acquisition means includes
A hardware module corresponding to the identification code described in the program is obtained from a storage device on the network,
A storage device storing a hardware module corresponding to the identification code is searched from a plurality of storage devices on the network, and a storage device having the fastest transfer speed of the hardware module is selected from the plurality of corresponding storage devices. Search means to
Acquisition execution means for executing acquisition of the hardware module from the storage device selected by the search means and reconfiguration of the programmable logic circuit;
An information processing system comprising:
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、前記プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理をプログラム言語で記述したソフトウエアモジュールを、ネットワーク上の記憶装置から入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ハードウエアモジュールが行う処理と同じ処理を行うソフトウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ソフトウエアモジュール取得手段は、
前記識別符号に対応するソフトウエアモジュールを入手して、前記実行プログラム用記憶部に格納するものであって、
前記ネットワーク上の複数の記憶装置から前記識別符号に対応するソフトウエアモジュールを格納する記憶装置を検索し、該当する複数の記憶装置の中から前記ソフトウエアモジュールの転送速度が最も速い記憶装置を選択する検索手段と、
前記検索手段で選択された記憶装置からの前記ソフトウエアモジュールの取得を実行する取得実行手段と、
を有することを特徴とする情報処理システム。
A series of processes are divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of hardware modules in which the processes are described by circuit information included in a programmable logic circuit. And an information processing system in which a part of the series of processes can be processed by the programmable logic circuit,
Software module acquisition means for obtaining a software module in which the same processing as that performed by the hardware module in the program is described in a program language from a storage device on a network and storing it in a storage unit for an execution program;
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating a software module that performs the same processing as the processing performed by the hardware module is described in the program,
The software module acquisition means includes
Obtaining a software module corresponding to the identification code and storing it in the execution program storage unit,
A storage device storing the software module corresponding to the identification code is searched from a plurality of storage devices on the network, and the storage device having the fastest transfer speed of the software module is selected from the plurality of corresponding storage devices. Search means to
Acquisition execution means for executing acquisition of the software module from the storage device selected by the search means;
An information processing system comprising:
請求項1または請求項2に記載の情報処理システムにおいて、
前記取得実行手段は、前記ハードウエアモジュールあるいは前記ソフトウエアモジュールの前記ネットワークからの転送を実行して、その単位時間当たりの転送量が、予め定めた期待値よりも小さいときには、前記転送速度が次位の記憶装置から、前記ハードウエアモジュールあるいは前記ソフトウエアモジュールを取得するように変更することを特徴とする情報処理システム。
In the information processing system according to claim 1 or 2,
The acquisition execution means executes the transfer of the hardware module or the software module from the network, and when the transfer amount per unit time is smaller than a predetermined expected value, the transfer speed is The information processing system is modified so as to obtain the hardware module or the software module from a storage device.
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラム言語で処理を記述したソフトウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のソフトウエアモジュールが行う処理と同じ処理を、前記プログラマブル論理回路に再構成する回路情報で記述したハードウエアモジュールを、ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路を再構成するハードウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ソフトウエアモジュールが行う処理と同じ処理を行う前記ハードウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ハードウエアモジュール取得手段は、
前記プログラム内に記述されている前記識別符号に対応する前記ハードウエアモジュールを、前記プログラムによる処理の実行順に、前記ネットワーク上の記憶装置から入手して、前記プログラマブル論理回路に再構成する取得実行手段と、
前記取得実行手段での処理と並行して、前記ネットワーク上の記憶装置から前記識別符号に対応する他のハードウエアモジュールを取得して、システム内の記憶装置に格納する並行取得手段と、
前記並行取得手段で取得した前記ハードウエアモジュールの回路情報により前記プログラマブル論理回路を再構成する手段と、
を備えることを特徴とする情報処理システム。
A series of processes is divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of software modules in which the processes are described in a program language, and An information processing system in which a part of a series of processing can be processed by a programmable logic circuit,
A hardware module in which the same processing as that performed by the software module in the program is described by circuit information for reconfiguring the programmable logic circuit is obtained from a storage device on the network, and the programmable logic circuit is reconfigured. Hardware module acquisition means for
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating the hardware module that performs the same processing as the processing performed by the software module is described in the program,
The hardware module acquisition means includes
Acquisition execution means for acquiring the hardware module corresponding to the identification code described in the program from the storage device on the network in the execution order of the processing by the program and reconfiguring the programmable logic circuit When,
In parallel with the processing in the acquisition execution means, the parallel acquisition means for acquiring another hardware module corresponding to the identification code from the storage device on the network and storing it in the storage device in the system,
Means for reconfiguring the programmable logic circuit with circuit information of the hardware module acquired by the parallel acquisition means;
An information processing system comprising:
一連の処理が複数の処理モジュールに分割され、各処理モジュールが、プログラマブル論理回路に構成する回路情報で処理を記述したハードウエアモジュールで構成されるプログラムで記述される前記一連の処理を実行するものであり、かつ、前記一連の処理の一部分が、前記プログラマブル論理回路で処理可能である情報処理システムであって、
前記プログラム内のハードウエアモジュールが行う処理と同じ処理をプログラム言語で記述したソフトウエアモジュールを、ネットワーク上の記憶装置から入手して、実行プログラム用記憶部に格納するソフトウエアモジュール取得手段と、
前記プログラムに記述された処理モジュールを、前記ソフトウエアモジュールと、前記ハードウエアモジュールのどちらで実行するかを、前記プログラムの実行前または実行時に決める実行モジュール決定手段と、
を備え、
前記ハードウエアモジュールが行う処理と同じ処理を行うソフトウエアモジュールを示す識別符号が、前記プログラム内に記述されており、
前記ソフトウエアモジュール取得手段は、
前記識別符号に対応するソフトウエアモジュールを入手して、前記実行プログラム用記憶部に格納するものであって、
前記プログラム内に記述されている前記識別符号に対応する前記ソフトウエアモジュールを、前記プログラムによる処理の実行順に、前記ネットワーク上の記憶装置から入手して、前記実行プログラム用記憶部に格納する実行ソフトウエアモジュール格納手段と、
前記実行ソフトウエアモジュール格納手段での処理と並行して、前記ネットワーク上の記憶装置から前記識別符号に対応する他のソフトウエアモジュールを取得して、システム内の記憶装置に格納する並行取得手段と、
前記並行取得手段で取得した前記ソフトウエアモジュールを、前記実行ソフトウエアモジュール格納手段に格納する手段と、
を備えることを特徴とする情報処理システム。
A series of processes are divided into a plurality of processing modules, and each processing module executes the series of processes described by a program composed of hardware modules in which the processes are described by circuit information included in a programmable logic circuit. And an information processing system in which a part of the series of processes can be processed by the programmable logic circuit,
Software module acquisition means for obtaining a software module in which the same processing as that performed by the hardware module in the program is described in a program language from a storage device on a network and storing it in a storage unit for an execution program;
Execution module determining means for determining whether the processing module described in the program is to be executed by the software module or the hardware module before or at the time of execution of the program;
With
An identification code indicating a software module that performs the same processing as the processing performed by the hardware module is described in the program,
The software module acquisition means includes
Obtaining a software module corresponding to the identification code and storing it in the execution program storage unit,
Execution software for acquiring the software module corresponding to the identification code described in the program from the storage device on the network in the execution order of the processing by the program and storing it in the execution program storage unit Wear module storage means;
Parallel acquisition means for acquiring another software module corresponding to the identification code from the storage device on the network and storing it in the storage device in the system in parallel with the processing in the execution software module storage means ,
Means for storing the software module acquired by the parallel acquisition means in the execution software module storage means;
An information processing system comprising:
請求項4または請求項5に記載の情報処理システムにおいて、
前記プログラム内には、前記識別符号に対応して、それぞれの識別符号に対応するハードウエアモジュールあるいはソフトウエアモジュールのファイルサイズが記述されており、
前記並行取得手段では、前記プログラム内に記述される識別符号に対応するハードウエアモジュールあるいはソフトウエアモジュールのうちの、前記ファイルサイズの大きいものから順に取得する
ことを特徴とする情報処理システム。
In the information processing system according to claim 4 or 5,
In the program, the file size of the hardware module or software module corresponding to each identification code is described corresponding to the identification code,
The information processing system according to claim 1, wherein the parallel acquisition unit sequentially acquires hardware modules or software modules corresponding to identification codes described in the program in descending order of the file size.
JP02813698A 1998-02-10 1998-02-10 Information processing system Expired - Fee Related JP3738802B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP02813698A JP3738802B2 (en) 1998-02-10 1998-02-10 Information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP02813698A JP3738802B2 (en) 1998-02-10 1998-02-10 Information processing system

Publications (2)

Publication Number Publication Date
JPH11232309A JPH11232309A (en) 1999-08-27
JP3738802B2 true JP3738802B2 (en) 2006-01-25

Family

ID=12240365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02813698A Expired - Fee Related JP3738802B2 (en) 1998-02-10 1998-02-10 Information processing system

Country Status (1)

Country Link
JP (1) JP3738802B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011198060A (en) * 2010-03-19 2011-10-06 Hitachi Ltd Hardware and software cooperation filtering processing system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4665330B2 (en) * 2001-03-30 2011-04-06 ソニー株式会社 Information processing apparatus and method, recording medium, and program
US7130931B2 (en) * 2003-06-18 2006-10-31 International Business Machines Corporation Method, system, and article of manufacture for selecting replication volumes
US8429749B2 (en) * 2007-03-27 2013-04-23 National Institute Of Advanced Industrial Science And Technology Packet data comparator as well as virus filter, virus checker and network system using the same
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011198060A (en) * 2010-03-19 2011-10-06 Hitachi Ltd Hardware and software cooperation filtering processing system

Also Published As

Publication number Publication date
JPH11232309A (en) 1999-08-27

Similar Documents

Publication Publication Date Title
US11741014B2 (en) Methods and systems for handling data received by a state machine engine
US11599770B2 (en) Methods and devices for programming a state machine engine
US10606787B2 (en) Methods and apparatuses for providing data received by a state machine engine
US10733508B2 (en) Methods and systems for data analysis in a state machine
US9454322B2 (en) Results generation for state machine engines
US8680888B2 (en) Methods and systems for routing in a state machine
US20200089416A1 (en) Methods and systems for using state vector data in a state machine engine
JP2015531936A (en) Instruction insertion in state machine engines
JP4212676B2 (en) Information processing system and information processing method
JP3877002B2 (en) Information processing system and information processing method
JP3738802B2 (en) Information processing system
US10769099B2 (en) Devices for time division multiplexing of state machine engine signals
JP3747985B2 (en) Information processing system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051012

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051025

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131111

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees