(57)【特許請求の範囲】
【請求項１】
複数の処理モジュールからなる一連の処理を実行するための情報処理システムであって、
各処理モジュールがプログラム言語で記述されたソフトウェア・モジュールで構成されるプログラムの形態で一連の処理を受容するプログラム受容手段と、
ソフトウェア・モジュールを実行可能なプロセッサと、
回路情報で記述されたハードウェア・モジュールに従って部分書き換え可能なプログラマブル論理回路と、
ソフトウェア・モジュールと同じ処理を前記プログラマブル論理回路上で再構成するための回路情報で記述されるハードウェア・モジュールを蓄積する蓄積手段と、
一連の処理を構成する各処理モジュールのうちハードウェア・モジュールによって実行すべきものを決定する実行モジュール決定手段と、
前記実行モジュール決定手段によって決定されたハードウェア・モジュールを前記蓄積手段から取り出して前記プログラマブル論理回路上に再構成するハードウェア・モジュール取得手段とを備え、
前記蓄積手段は、同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを用意し、
前記ハードウェア・モジュール取得手段は、前記プログラマブル論理回路のハードウェア構成可能領域に適合する形状を持つハードウェア・モジュールを優先的に取り出す、
ことを特徴とする情報処理システム。
【請求項２】
前記蓄積手段に蓄積されるハードウェア・モジュールは矩形形状で表現されることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
ハードウエア構成可能領域の形状は前記プログラマブル論理回路上における水平方向と垂直方向の各々の論理セル数によって定義されることを特徴とする請求項１又は２のいずれかに記載の情報処理システム。
【請求項４】
部分書き換えが可能なプログラマブル論理回路を再構成するためのハードウェア・モジュールを管理するための方法であって、
同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを蓄積する蓄積ステップと、
前記プログラマブル論理回路上での処理の実行が決定されたときに、当該処理を実現する複数のハードウェア・モジュールのうち前記プログラマブル論理回路のハードウェア構成可能領域に適合する形状を持つハードウェア・モジュールを優先して取り出すハードウェア・モジュール取得ステップと、
を具備することを特徴とするハードウェア・モジュールを管理するための方法。
【請求項５】
部分書き換えが可能なプログラマブル論理回路を再構成するためのハードウェア・モジュールを管理するための装置であって、
同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを蓄積する蓄積手段と、
前記プログラマブル論理回路上での処理の実行が決定されたときに、当該処理を実現する複数のハードウェア・モジュールのうち前記プログラマブル論理回路のハードウェア構成可能領域に適合する形状を持つハードウェア・モジュールを優先して前記蓄積手段から取り出すハードウェア・モジュール取得手段と、
を具備すること特徴とするハードウェア・モジュールを管理するための装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路を記述した回路情報に従って所望の論理を再構成可能なプログラマブル論理回路を含んだ情報処理システムに係り、特に、プログラム言語で記述された複数の処理モジュールで構成される一連の処理の少なくとも一部を、部分書き換え可能なプログラマブル論理回路上で再構成したハードウェア回路に置き換えて実行するタイプの情報処理システムに関する。
【０００２】
更に詳しくは、本発明は、各処理モジュールをソフトウェア・モジュール又はハードウェア・モジュールのいずれで実行すべきかを決定して処理するタイプの情報処理システムに係り、プログラム論理回路の再構成によるオーバーヘッドを減少して処理モジュール全体の処理時間を短縮化する情報処理システムに関する。
【０００３】
【従来の技術】
昨今の技術革新に伴い、各種の情報処理機器が研究・開発され、広汎に普及してきている。情報処理機器は、一般に、高度な半導体技術によって集積化された半導体回路コンポーネント（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）を数多含んで構成される。ＬＳＩの一部には、特定の用途のために最適設計されたカスタムＩＣ、すなわちＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）技術が採用されている。
【０００４】
最近のＡＳＩＣ分野では、製品の開発期間を更に短縮化するために、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、プログラマブル・ロジック・デバイス（ＰＬＤ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などの、プログラマブル論理回路装置が広く使われ始めている。
【０００５】
この種のプログラマブル論理回路装置は、論理回路を記述する回路情報を該論理回路装置内に読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。これによって、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間を短縮することができる。特に、米国特許第４，７００，１８７号明細書に開示されているプログラマブル論理装置は、電気的に再構成が可能な構成であり、一度作製した回路を必要に応じて自由に何度でも変更する、すなわち回路を再構成できるという利点があり、ますます広く使われるようになってきている。
【０００６】
ＦＰＧＡと呼ばれるプログラマブル論理回路装置は、論理ゲート間および配線間を接続するスイッチを制御するビット・ストリームを外部から書き込むことによって、所望の論理回路を再構成することのできるデバイスである。内部回路構成や論理ゲート間のスイッチ制御のデータを保持する記憶手段がデバイス内に設けられており、この記憶手段の種類により様々な動作特性のデバイスが当業界において提供されている。
【０００７】
論理ゲート間または配線間のスイッチ制御のデータを保持する記憶手段としては、アンチヒューズ・タイプ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）タイプ、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）タイプなどがある。
【０００８】
このうち、ＳＲＡＭタイプは、スイッチとなるトランジスタのゲートに揮発性メモリを接続する。書き換え可能デバイス中でＳＲＡＭメモリの占める面積は大きいが、他のタイプに比べ書き換え時間が小さく、アドレスを指定してメモリの内容を書き換えることができるので、システム動作中の論理の再構成も可能である。さらに、再構成されない部分は動作を継続するという機能を実現し、デバイス内の部分書き換えを可能にしている。
【０００９】
リアルタイムに部分書き換えが可能なＦＰＧＡは、特に、ＤＲ−ＦＰＧＡ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）と呼ばれている。ＤＲ−ＦＰＧＡとしては、米国ザイリンクス社のＸＣ６２００シリーズ及びＶｉｒｔｅｘシリーズ、米国アトメル社のＡＴ６０００シリーズ及びＡＴ４０Ｋシリーズ、米国ルーセント・テクノロジー社のＯＲＣＡ３Ｃ／３Ｔシリーズなどが、既に市販されている。
【００１０】
最近の論理回路に要求される処理の複雑さが増し、単一のプログラマブル論理回路装置だけでは実現できない規模にまで回路規模が大きくなっている。この問題を解決するための１つの方法として、処理の途中でプログラマブル論理回路装置を再度構成し直すことによって、異なる時間に異なる論理回路を実現することが考えられている。
【００１１】
この方法によれば、モバイル機器のような極度に小型化された情報処理システムのように、内蔵可能な回路規模に制約がある場合でも、回路コンポーネント数を増やすことなく、様々な処理をプログラマブル論理回路によってハードウェア化して比較的高速に実行できるという利点もある。
【００１２】
しかしながら、プログラマブル論理装置を再構成するときに、回路情報を再度読み込ませるための余分な時間がかかるという欠点がある。また、処理の途中で論理装置を再構成するためには、処理を一時中断し、その時点でのデータをプログラマブル論理回路装置の外部の記憶装置に一時記憶させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力させる、という一連の余分な処理が必要になる。
【００１３】
プログラマブル論理装置の再構成に伴なう上記の問題を解決するために、米国アトメル社が提供するデータブック”ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ”に記載されているプログラマブル論理回路装置、及び、米国ザイリンクス社が提供するデータブック”ＴＨＥ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ”  （米国版）に記載されているプログラマブル論理回路装置では、再構成を行うときにデータを記憶するためのデータ記憶装置を有しており、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、論理装置を再構成するための時間を最小限に留めている。
【００１４】
ところが、このような部分的に再構成可能なプログラマブル論理回路を情報処理システムに好適に適用するには、情報処理システム上で実行する処理を、プログラマブル論理回路で行うハードウェア処理と、マイクロプロセッサなどの回路構成を変更できない固定的な論理回路装置で行うソフトウェア処理とに分離するための技術を確立する必要がある。
【００１５】
このような処理の分離に関する問題を解決する方法として、プログラマブル論理回路の再構成機能を用いてアプリケーションの一部をハードウエア化する手法が幾つか提案されている。アプリケーションの一部を、汎用のプロセッサによるソフトウェア処理ではなく、プログラム論理回路装置を用いたハードウェア処理に委ねるのは、後者の方が前者よりも処理速度が速いという理由に依拠する。
【００１６】
例えば、特開平９−７４５５６号公報には、ネットワークを介してアプリケーションの一部をダウンロードする手法について記載している。すなわち、同公報では、プログラマブル論理回路を用いたアプリケーションとして、符号化した画像データと復号プログラムをネットワーク経由で受信し、ソフトウェアとプログラマブル論理回路の双方を用いて復号化して画像再生するということが考えられている。図１１には、同公報に開示されている画像再生装置の概略構成を示している。以下、図１１を参照しながら、この画像再生装置について説明する。
【００１７】
画像再生装置は、動画像復号部を再構成するためのプログラムと符号化された動画像データをネットワーク経由でダウンロードするための受信部と、受信データがプログラムか動画像データかによって伝送先を切り換える切り換え手段と、処理系を再構成することが可能な動画像復号部と、受信したプログラムを動画像復号部の構成に変更できる形式に変換するプログラム変換部と、受信部と切り換え手段とプログラム変換部と動画像復号部の制御を行うための制御部とで構成される。
【００１８】
プログラム変換部は、受信プログラムを動画像復号部の構成を変更できる形式に変換する第１プログラム部分（すなわち、ハードウエア化する部分）と動画像再生時において制御部が行う第２プログラム部分（すなわち、ソフトウエアで実行する部分）とに分割する分割部と、第１プログラム部分を動画像復号部の構成を変更できる形式に変換する第１の変換部（ハードウエア・コンパイラ）と、第２プログラム部分を制御部が解読して処理を実行できる形式に変換する第２の変換部（ソフトウエア・コンパイラ）とを備えている。
【００１９】
動画像復号部は、逆量子化処理内容を変更できる逆量子化部と、逆変換処理内容を変更できる逆変換部とを備えている。逆量子化部は量子化された画像データを逆量子化し、逆変換部は変換された画像データを逆変換する。
【００２０】
次に、この画像再生装置の動作手順について説明する。
【００２１】
動画像再生用のプログラムと符号化された動画像データがネットワーク経由で入力されると、まず、論理記述言語で記述された再生アルゴリズム・プログラムを受信部で受信する。
【００２２】
受信データはプログラム変換部に伝送され、分割部でハードウエア処理部とソフトウエア処理部とに分割される。
【００２３】
ハードウエア処理部分は、第１の変換部に渡され、プログラマブル論理回路装置（ＦＰＧＡ）を書き換えることができる形式（ビット・ストリーム）に変換され、制御部は、このビット・ストリームに基づいて、逆量子化部と逆変換部を書き換える。
【００２４】
他方、ソフトウエア処理部分は、第２の変換部に渡され、プロセッサで処理できる実行形式に変換された後、制御部に渡される。
【００２５】
こうして再構成された画像再生装置に対して、動画像データがネットワーク経由で送られると、受信部で受信し、切り換え手段によって動画像復号部に伝送され、復号データとして出力する。
【００２６】
上述したように逆量子化部と逆変換部をＦＰＧＡのような処理プログラムを変更可能な素子で構成したことにより、動画像復号部のハードウェアを最適な処理能力に適合させるようにしている訳である。
【００２７】
また、特開平６−３０１５２２号には、回路構成を変更できない固定部とプログラマブル論理回路のように回路構成を変更できる可変部とで構成される計算機のシステム構成方法について開示している。同公報は、複数のプログラムを基に、プログラマブル論理回路上にハードウェアで構成することを提案するものである。以下、図１２を用いながら、この計算機システムについて説明する。
【００２８】
図１２に示すように、計算機で実行するソースプログラムは、固定部の構成に関する情報と可変部が構成することができる回路の情報が格納されているライブラリを参照しながら、オブジェクト・コードとハードウェア構成データに変換される。
【００２９】
すなわち、コンパイラはソース・プログラムのフロー解析を行い、関数の頻度を検出する。この検出頻度に基づいて、呼び出し回数の多い関数をハードウェアで処理する関数として決定し、ハードウェア構成データを作成して出力する。次に、ハードウェアで処理すると決めた部分を所定の可変部で処理することを示すコードを残りのソフトウェアで処理する部分に付加して、オブジェクト・コードを作成し出力する。
【００３０】
計算機システムは、回路構成を変更できない固定部と、ハードウェア構成データにより構成された可変部を用いて、オブジェクト・コードに応じた処理を実行する。このようにして、コンパイル時に呼び出し回数の多い幾つかの関数をハードウェア化することにより処理全体の高速化を図っている。
【００３１】
また、日経オープンシステム１９９７年８月号の２１３ページから２１９ページに掲載されている記事「インターネットのサーバを運用代行  ＩＳＰやＶＡＮ業者がサービスを提供へ」では、ネットワークを介して複数のサーバにアクセスするケースについて提案している。
【００３２】
同記事は、ネットワークのアウトソーシングというサービスとしてインターネットやクローズドＶＡＮについて扱っている。この中で、インターネットに不可欠なサーバであるメール・サーバやネーム・サーバを始めとする各種サーバへのアクセスについて詳解している。
【００３３】
サーバへのより早いアクセスを実行するために、使用するプログラム一つ一つについてアクセスを行なうよりも、全てのプログラムについて一度にアクセスを行い、最も早くアクセスできたプログラムからダウンロードする方が、全体のアクセス時間が少ないことが当業界において既に知られている。そこで、プログラムが複数のサーバに格納されているような状況では、上記のような方法に従ってプログラムへのアクセスを行い、ダウンロードすることが一般的になってきている。例えば、プログラム・データを分類、整理したり、管轄が異なっている、あるいはネットワークのトラフィック緩和、サーバの負荷軽減のために、プログラムは複数のサーバに分散して蓄積される。
【００３４】
しかしながら、上記で説明した各々の従来例では、処理の一部分をプログラマブル論理回路で処理するに際して、次のような問題が残されている。
【００３５】
処理の一部を実現するハードウェア・モジュールは、プログラマブル・デバイス上に再構成する、すなわちハードウェア・モジュールを物理回路として展開すると、デバイス上の所定セル数を消費するだけでなく、ある所定の形状を持つセル領域を占有する。したがって、プログラマブルなデバイス上で部分書き換えを行なうためには、ハードウェア・モジュールを書き込めるサイズ（すなわちゲート規模）の空き領域がデバイス上にあるだけでは不充分であり、空き領域がハードウェア・モジュールの形状を完全に包含できなければならない。
【００３６】
たとえプログラマブル・デバイス上の空き領域のサイズ（すなわちゲート規模）がハードウェア・モジュールのサイズを上回っていたとしても、ハードウェア・モジュールを構成できるような形状に適合していなければ、部分書き換えを行なうことができない。このような場合、デバイス上の他の処理が終了して使用セル領域が解放され、新たに再構成するハードウェア・モジュールの形状に見合うだけの空き領域が確保されるまでは、再構成動作は待たされてしまう。
【００３７】
この結果、再構成時間にオーバーヘッドが生じてしまう。しかも、空き領域とは形状が適合しない処理モジュールが後に続くほど、オーバーヘッドはさらに増加し、全体として処理に要する時間以外に多大な時間を消費してしまうことになる。また、プログラマブル・デバイスのこのような使用形態は、デバイスのセル資源を有効に活用しているとは言い難い。
【００３８】
【発明が解決しようとする課題】
本発明の目的は、論理回路を記述した回路情報に従って所望の論理を再構成可能なプログラマブル論理回路を含んだタイプの、優れた情報処理システムを提供することにある。
【００３９】
本発明の更なる目的は、プログラム言語で処理を記述された複数の処理モジュールで構成される一連の処理の少なくとも一部を部分書き換え可能なプログラマブル論理回路上で再構成したハードウェア回路に置き換えて実行するタイプの、優れた情報処理システムを提供することにある。
【００４０】
本発明の更なる目的は、各処理モジュールをソフトウェア・モジュール又はハードウェア・モジュールのいずれで実行すべきかを決定して処理するタイプの、優れた情報処理システムを提供することにある。
【００４１】
本発明の更なる目的は、プログラム論理回路の再構成によるオーバーヘッドを減少して処理モジュール全体の処理時間を短縮化することができる、優れた情報処理システムを提供することにある。
【００４２】
本発明の更なる目的は、プログラマブル・デバイス上の空き領域のサイズは充分であるが形状が適合しないためにハードウェア・モジュールの再構成が不可能となって生じるオーバーヘッドを減少することができ、また、その結果として全体の処理時間を短縮化することができる、優れた情報処理システムを提供することにある。
【００４３】
【課題を解決するための手段】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、複数の処理モジュールからなる一連の処理を実行するための情報処理システムであって、各処理モジュールがプログラム言語で記述されたソフトウェア・モジュールで構成されるプログラムの形態で一連の処理を受容するプログラム受容手段と、ソフトウェア・モジュールを実行可能なプロセッサと、回路情報で記述されたハードウェア・モジュールに従って部分書き換え可能なプログラマブル論理回路と、ソフトウェア・モジュールと同じ処理を前記プログラマブル論理回路上で再構成するための回路情報で記述されるハードウェア・モジュールを蓄積する蓄積手段と、一連の処理を構成する各処理モジュールのうちハードウェア・モジュールによって実行すべきものを決定する実行モジュール決定手段と、前記実行モジュール決定手段によって決定されたハードウェア・モジュールを前記蓄積手段から取り出して前記プログラマブル論理回路上に再構成するハードウェアモジュール取得手段とを備え、前記蓄積手段は、同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを用意し、前記ハードウェア・モジュール取得手段は、前記プログラマブル論理回路のハードウェア構成可能領域に適合する形状を持つハードウェア・モジュールを優先的に取り出すことを特徴とする情報処理システムである。
【００４４】
ここで、前記蓄積手段に蓄積されるハードウェア・モジュールを、矩形形状で表現してもよい。
【００４５】
また、ハードウエア構成可能領域の形状を、前記プログラマブル論理回路上における水平方向と垂直方向の各々の論理セル数によって定義してもよい。
【００４６】
また、本発明の第２の側面は、部分書き換えが可能なプログラマブル論理回路を再構成するためのハードウェア・モジュールを管理するための方法であって、同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを用意したことを特徴とするハードウェア・モジュールを管理するための方法である。
【００４７】
また、本発明の第３の側面は、部分書き換えが可能なプログラマブル論理回路を再構成するためのハードウェア・モジュールを管理するための装置であって、同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを蓄積する手段と、前記プログラマブル論理回路のハードウェア構成可能領域に適合する形状を持つハードウェア・モジュールを優先して前記蓄積手段から取り出す手段とを具備すること特徴とするハードウェア・モジュールを管理するための装置である。
【００４８】
【作用】
本発明に係る情報処理システムは、複数の処理モジュールからなる一連の処理を実行する。各処理モジュールはプログラム言語で記述されたソフトウェア・モジュールで構成されており、情報処理システムは、所謂ソフトウェア・プログラムの形態で、一連の処理を受容する。
【００４９】
また、情報処理システムは、ソフトウェア・モジュールを実行可能なプロセッサと、回路情報で記述されたハードウェア・モジュールに従って部分書き換え可能なプログラマブル論理回路を備えている。一連の処理を実行する際には、各処理モジュールをソフトウェア・モジュール又はハードウェア・モジュールのいずれとして実行すべきかを判別して、実行するようになっている。
【００５０】
また、情報処理システムは、ソフトウェア・モジュールと同じ処理を前記プログラマブル論理回路上で再構成するための回路情報で記述されるハードウェア・モジュールを蓄積する蓄積手段を備えている。
【００５１】
ハードウェア・モジュールは、プログラマブル論理回路上に再構成すると、所定数のセルを使用するとともに、所定形状を持つセル領域を占有する。本発明では、各ソフトウェア・モジュールにつき、同一の処理を実現するが前記プログラマブル論理回路上に再構成すると形状が異なる複数のハードウェア・モジュールを、蓄積手段に用意した。
【００５２】
そして、プログラマブル論理回路の部分的書き換えを行なうときには、同じ処理を実現するが形状が異なる複数のハードウェア・モジュールのうち、プログラマブル論理回路中の空き領域すなわちハードウェア構成可能領域の形状に適合するものを優先的に取り出すようにした。
【００５３】
プログラマブルなデバイス上で部分書き換えを行なうためには、ハードウェア・モジュールを書き込めるサイズの空き領域がデバイス上にあるだけでは不充分であり、空き領域がハードウェア・モジュールの形状を完全に包含できなければならない。すなわち、プログラマブル論理回路上の他の処理が終了して使用セルが解放され、再構成されるハードウェア・モジュールの形状に見合うだけの空き領域が確保されるまでは、再構成動作は待たされてしまう（前述）。
【００５４】
本発明によれば、同じ処理を実現するが形状が異なるハードウェア・モジュールを複数個用意しておき、プログラマブル論理回路上の空き領域の形状に適合するハードウェア・モジュールを優先的に使用することにしたので、ハードウェア・モジュールの再構成が不可能となって生じるオーバーヘッドを最小限に抑えることができる。また、その結果として全体の処理時間を短縮化することができる。
【００５５】
また、ハードウェア・モジュールの形状を、占有するセル領域を包含する最小の矩形で表現することとした。この矩形は、水平及び垂直の各方向の論理セル数だけで定義できる。すなわち、ハードウェア・モジュールがハードウェア・モジュール構成可能領域に適合するかどうかを、極めて少量のデータにより判断することができる。併せて、プログラマブル論理回路の論理セルを効率的に利用することが可能となることから、処理の実行とデバイスのコンフィギュレーションを並行して行なうことができ、全体の処理時間を短縮することができる。
【００５６】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００５７】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を詳解する。
【００５８】
図１には、本発明を実現するのに適した情報処理システム１０のハードウェア構成を模式的に示している。
【００５９】
情報処理システム１０は、例えば、「ワークステーション」や「パーソナル・コンピュータ」と呼ばれる汎用コンピュータ・システムであり、その一例は、米国ＩＢＭ社のＰＣ／ＡＴ互換機又はその後継機である。この種のシステム１０は、ＯＡＤＧ（ＰＣ  Ｏｐｅｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｇｒｏｕｐ）仕様に準拠し、オペレーティング・システム（ＯＳ）として、例えば米国マイクロソフト社の”Ｗｉｎｄｏｗｓ９５／９８／ＮＴ”を搭載している。以下、情報処理システム１０内の各部について説明する。
【００６０】
システム１０のメイン・コントローラであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１は、オペレーティング・システム（ＯＳ）の制御下で、各種の処理を実行する。
【００６１】
ここで言う「処理」は、複数の処理モジュールからなる一連の処理である。かかる一連の処理は、通常、各処理モジュールがプログラム言語で記述されたソフトウェア・モジュールで構成されている「プログラム」の形態で、情報処理システム１０に供給される。
【００６２】
ＣＰＵ１１の回路論理は固定的で、再構成不可能である。したがって、ＣＰＵ１１は、処理モジュールのうち、プログラム言語で記述されたソフトウェア・モジュールのみを実行し、後述するようにハードウェア・モジュールは実行しない。なお、ＣＰＵ１１は、例えば米国インテル社の”Ｐｅｎｔｉｕｍ  ＩＩ”でよい。
【００６３】
本実施例の情報処理システム１０は、各周辺装置をローカル接続するためのローカル・バスとしてのＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス１４を備えている。このＰＣＩバスと、ＣＰＵ１１の自身の外部ピンに直結したホスト・バス１１Ｂとは、チップセットで構成されるバス・ブリッジ１３を介して相互接続されている。
【００６４】
本実施例のチップセット１３は、両バス１１Ｂ及び１４間のデータ転送速度の差を吸収するためのデータ・バッファや、主記憶メモリ１２へのアクセス動作を制御するためのメモリ・コントローラを含んだ構成となっている。
【００６５】
主記憶メモリ１２は、書き込み可能なメモリであり、通常は複数個のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）チップで構成される。主記憶メモリ１２は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ：基本入出力システム）、デバイス・ドライバ、ＯＳ、及びアプリケーション・プログラムなど各種処理を実現するためのプログラム・コードをロードしたり、処理実行中の作業データを一時格納するために利用される。
【００６６】
ＰＣＩバス１４は、比較的高速なデータ転送が可能なバスであり（バス幅３２／６４ビット、最大動作周波数３３／６６ＭＨｚ、最大データ転送速度１３２／２６４ＭＭｐｓ）、ＰＣＩバス１４とのインターフェース・プロトコルを実現する各種のインターフェース・アダプタが接続されている。なお、ＰＣＩアーキテクチャは、米国インテル社の提唱に端を発したものであり、所謂ＰｎＰ（プラグ・アンド・プレイ）機能を備えている。
【００６７】
ＰＣＩバス１４に接続されるインターフェース・アダプタとして、本実施例すなわち図１では、ハード・ディスク・インターフェース１７と、通信インターフェース１９と、プログラマブル論理回路インターフェース１５を挙げている。
【００６８】
ハード・ディスク・インターフェース１７は、ハード・ディスク装置１８などの大容量の外部記憶装置を接続するためのインターフェースであり、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）やＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などの仕様が当業界において標準的である。以下では、システム１０内のハード・ディスク装置１８のことを、「ローカル・ディスク」とも呼ぶ。
【００６９】
通信インターフェース１９は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどの、システム１０の外部のネットワーク２０と接続するためのアダプタである。
【００７０】
ネットワーク２０上には、通常、複数の外部装置が接続されている。外部装置の一例は、ファイル・サーバやプリント・サーバなど、各種資源サービスを情報処理システム１０に提供するサーバである。図１では、ネットワーク２０には記憶装置２１が接続されている。この記憶装置２１は、例えば、ファイル・サーバなどが提供する大容量ハード・ディスク装置などであり、システム１０側からは記憶装置２１に対して透過的にディスク・アクセス可能である。以下では、ネットワーク２０上のハード・ディスク装置２１のことを、「ローカル・ディスク」と区別して、「ネットワーク・ディスク」と呼ぶことにする。
【００７１】
プログラマブル論理回路インターフェース１５は、プログラマブル論理回路１６をシステム１０に接続するためのアダプタである。プログラマブル論理回路１６は、例えば「アダプタ・カード」に搭載された形態で提供される。プログラマブル論理回路１６は、後述するように部分書き換え動作が可能なタイプのデバイスである。プログラマブル論理回路１６上に部分的に書き込まれたハードウェアのことを、以下では「ハードウェア・モジュール」と呼ぶ。ハードウェア・モジュールは、通常、論理回路１６を再構成するための回路情報という形式で記述され、所定の格納場所に保管され、且つ適宜取り出して用いられる。
【００７２】
本実施例では、回路情報として記述された数多くのハードウェア・モジュールが、情報処理システム１０内のローカル・ディスク１８又はネットワーク２０上のネットワーク・ディスク２１に蓄積されている。プログラマブル論理回路１６は、図示しないローカル・メモリを備えている。部分書き換えを行なうときには、必要なハードウェア・モジュールを、ローカル・ディスク１８又はネットワーク・ディスク２１からローカル・メモリに一旦ダウンロードして、書き換え処理を行う。論理回路１６の部分書き換え動作の手順については、後に詳解する。
【００７３】
なお、情報処理システム１０を構成するためには、図１に示した以外にも多くのハードウェア構成要素等が必要である。但し、これらは当業者には周知であり、また、本発明の要旨を構成するものではないので、本明細書中では省略している。また、図面の錯綜を回避するため、図中の各ハードウェア・ブロック間の接続も一部しか図示していない点を了承されたい。
【００７４】
次に、プログラマブル論理回路１６の内部構造について説明する。
【００７５】
図２には、プログラマブル論理回路１６の構造を論理的に図解している。同図に示すように、プログラマブル論理回路１６は、回路情報を格納するためのコンフィギュレーション・メモリ１６０と、回路素子１６４とで構成される。回路素子は、後述するように、論理セル１６１と、配線領域１６４と入出力端子１６３を含んだ集合体である。
【００７６】
また、図３には、プログラマブル論理回路１６を構成するチップ内の物理構造を模式的に示している。同図に示すように、略矩形状のチップ内１６には、数多の論理セル１６１…がマトリックス状に配設されている。配線領域１６２は、各論理セル１６１…間を走るように、格子状に敷設されている。チップの周辺部には、論理回路１６に対する電気信号データの入出力を行なうための数多の入出力端子１６３…が列設されている。
【００７７】
コンフィギュレーション・メモリ１６０は、論理セル１６１内及び配線領域１６２内の回路情報を書き込むための記憶手段であり、ＳＲＡＭ、ＤＲＡＭなどの書き換え可能なメモリ素子で構成されている。
【００７８】
コンフィギュレーション・メモリ１６０にはアドレスが割り振られており、あるアドレスに新しい回路情報を記述したデータが格納されると、アドレスに該当する論理セル１６１内の回路構成と、論理セル１６１及び入出力端子１６３を相互に接続する配線領域１６２の接続状態が、この新しい回路情報に従って再構成される。
【００７９】
図２に示すように、プログラマブル論理回路１６に再構成されて形成された回路素子に処理すべきデータが入力されると、またその処理を実行した結果が出力されるようになっている。
【００８０】
プログラマブル論理回路１６の回路構成を再構成する一連の動作のことを、「コンフィギュレーション」と呼ぶ。本実施例に係るプログラマブル論理回路１６では、コンフィギュレーション・メモリ１６０の一部分のみを書き換えることで、プログラマブル論理回路１６が動作中であっても、回路を部分的に再構成することができる。すなわち、部分書き換え機能を提供している。
【００８１】
図４には、情報処理システム１０が複数の処理モジュールからなる一連の処理を実行する仕組みを模式的に示している。但し、一連の処理は、プログラム言語で記述されたプログラム、すなわちアプリケーション・プログラム１００の形態で情報処理システム１０に供給されている（例えば、ハード・ディスク装置１８内に導入されている）ものとする。
【００８２】
アプリケーション・プログラム１００は、実行する一連の処理を複数個の処理に分割可能であり、分割された各処理毎に１つのモジュールを形成している。このモジュールのことを、本明細書中では「処理モジュール」と呼んでいる。
【００８３】
アプリケーション・プログラム１００を構成する各処理モジュールは、原初的には、ＣＰＵ１１において処理が実行可能な形式、すなわち、プログラム言語で記述されたソフトウェア・プログラムである。処理モジュール単位のソフトウェア・プログラムのことを、本明細書では「ソフトウェア・モジュール」と呼ぶ。言い換えれば、アプリケーション・プログラム１００は、複数のソフトウェア・モジュールの集合体であると言える。
【００８４】
各ソフトウェア・モジュールが行なうのと同じ処理を、プログラマブル論理回路１６上に構成したハードウェアとして実行することもできる。プログラマブル論理回路１６によるハードウェア処理は、一般に、対応するソフトウェア処理よりも高速である。
【００８５】
ソフトウェア・モジュールに対応したハードウェアをプログラム論理回路１６上に再構成するための回路情報を記述した単位モジュールのことを、本明細書では「ハードウェア・モジュール」と呼んでいる。図４中の記憶装置２００には、アプリケーション・プログラム１００を構成する各ソフトウェア・モジュールと同じ処理を実現するハードウェア・モジュールが蓄積されている。但し、記憶装置２００の実体は、図１中で示したローカル・ディスク１８やネットワーク・ディスク２１であると把握されたい。
【００８６】
ここで、アプリケーション・プログラム１００の構造についてもう少し詳しく言及する。
【００８７】
図５には、アプリケーション・プログラム１００の構成を模式的に示している。同図に示すように、アプリケーション・プログラム１００は、ヘッダ部と本体部からなる。
【００８８】
本体部は、前述したように、複数個のソフトウェア・モジュールの集合で構成されている。ヘッダ部には、各ソフトウェア・モジュールに対応するハードウェア・モジュールの各々についての識別符号が記述されている。
【００８９】
本実施例では、ハードウェア・モジュールは、対応するソフトウェア・モジュールと同じ処理をプログラマブル論理回路１６上に再構成するための回路情報だけでなく、その回路情報をプログラマブル論理回路１６上に再構成したときに占有するセル領域の形状を記述している。ここで、ハードウェア・モジュールの形状は、占有するセル領域を完全に包含する矩形として表現される。したがって、形状は、その矩形が持つ水平及び垂直の各方向のＰＦＵ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｆｕｎｃｔｉｏｎ  Ｕｎｉｔ）数すなわちセル数によって定義されるので、少量のデータで済む。
【００９０】
図６には、ハードウェア・モジュールを矩形表現する様子を図解している。同図に示すように、ハードウェア・モジュールによって構成される回路そのものは、複雑な多角形状であり、これを幾何学的に定義するとデータ・サイズが大きくなり処理も煩雑となる。そこで、ハードウェア・モジュールの構成回路を包含する最小の矩形によってその形状を表現することとし、その矩形が持つ水平及び垂直の各方向のセル数によってハードウェア・モジュールの形状を定義する。
【００９１】
各ハードウェア・モジュールの識別番号は、同じ処理を行うソフトウェア・モジュールとの対応関係が明瞭となるように、付与されることが好ましい。図４及び図５に示した例では、アプリケーション・プログラム１００上の処理実行順に従った順序番号によって、各ソフトウェア・モジュールに対応するハードウェア・モジュールの識別符号がヘッダ部に記述される。このような場合、繰り返し使用する処理モジュールに対応するハードウェア・モジュールの識別番号は、ヘッダ部において繰り返し記述されることになる。
【００９２】
再び図４に戻って、情報処理システム１０上でアプリケーション・プログラム１００を実行する仕組みについての説明を継続する。
【００９３】
ハードウェア・モジュール取得手段３００と、実行モジュール決定手段６００は、処理モジュールをハードウェア・モジュールとして実行する動作に深く関与している。これらの手段３００及び６００は、例えば、情報処理システム１０上に導入されたＯＳの機能の一部、という形態で実装することができる。
【００９４】
ハードウェア・モジュール取得手段３００は、アプリケーション・プログラム１００のヘッダ部に記述されている識別符号を用いて、ソフトウェア・モジュールが実行する処理と同じ処理を実行するハードウェア・モジュールを記憶装置２００から取得する。そして、ハードウェア・モジュール取得手段３００は、取得したハードウェア・モジュールを実現した回路を、プログラマブル論理回路１６上に再構成する。
【００９５】
図４に示すように、ハードウェア・モジュール取得手段３００は、取得要求送出手段３１０と、取得再構成手段３２０とで構成される。ハードウェア・モジュールを記録装置２００から取得するとき、取得要求送出手段３１０は、必要な全てのハードウェア・モジュールの取得要求を行う。
【００９６】
実行モジュールをＣＰＵ１１によるソフトウェア・モジュールとするか、又は、プログラマブル論理回路１６によるハードウェア・モジュールとするかを、プログラムの実行時に決定することもできる。この場合には、取得要求送出手段３１０は、アプリケーション・プログラム１００のヘッダ部に記述されている全てのハードウェア・モジュールの識別符号を含むハードウェア・モジュール取得要求を送出する。
【００９７】
また、実行モジュールの決定をプログラム１００の実行前に行うこともできる。この場合には、取得要求送出手段３１０は、ハードウェア・モジュール処理により実行すると決定されたハードウェア・モジュールの識別符号を含むハードウェアモジュール取得要求を送出する。
【００９８】
ハードウェア・モジュール取得手段３００内の取得再構成手段３２０は、記憶手段２００から取得したハードウェア・モジュールの情報を、それに付加されている識別符号により認識し、システム１０内に未だ取り込んでいないハードウェア・モジュールであることを確認した後に、プログラマブル論理回路１６上にそのハードウェア・モジュールを実現した回路を再構成する。このとき、再構成したハードウェア・モジュールの識別符号を識別符号記録手段８００に記録するとともに、システム１０内の記憶装置２００（例えば、ハード・ディスク装置１８や主記憶メモリ１２）に、そのハードウェア・モジュールの情報を格納する。
【００９９】
他方、アプリケーション・プログラム１００のソフトウェア・モジュールによるソフトウェア処理は、ＣＰＵ１１が実行する。
【０１００】
実際のアプリケーション・プログラム１００の処理においては、実行モジュール決定手段６００が、ハードウェア又はソフトウェアのどちらのモジュールで行うかを各処理モジュール毎に決定し、実行する。
【０１０１】
図４では示していないが、実行モジュール決定手段６００に選択条件設定手段を設けてもよい。選択条件設定手段は、ソフトウェア・モジュール及びハードウェア・モジュールの各々による処理時間、メモリ消費量、プログラマブル論理回路１６の再構成時間などの種々の選択条件項目を予め想定しておき、その１つあるいは複数の条件項目の組み合わせからなる実行モジュール選択条件を設定する。実行モジュール決定手段６００は、選択条件を評価することによって、実行モジュールを適切に決定することができる。
【０１０２】
次に、ハードウェア・モジュールによって処理モジュールを実行する手順について詳解する。図７には、この手順をフローチャートの形式で示している。以下、このフローチャートの各ステップについて説明する。
【０１０３】
但し、処理が実行されるアプリケーション・プログラム１００は、ハードウェア・モジュールとして実行される４つの処理モジュールＡ，Ｂ，Ｃ，及びＤを含み、且つ、Ａ→Ｂ→Ｃ→Ｂ→Ｄという順番で各処理モジュールが実行されることとする（処理Ｂは、一旦実行終了した後、処理Ｃを実行後に再び呼び出される点に留意されたい）。また、コンフィギュレーションが完了したプログラマブル論理回路１６によるハードウェア的な処理の方が、対応するソフトウェア処理よりも高速であることを前提とする。
【０１０４】
既に述べたように、ハードウェア・モジュール取得手段３００と、実行モジュール決定手段６００は、情報処理システム１０上で動作するＯＳにおける各１つの機能、すなわちソフトウェア的に実装されている。したがって、この動作は、アプリケーション・プログラム１００の開始に応答して、ＯＳによって処理が実行される。
【０１０５】
アプリケーション・プログラム１００が開始されると、プログラム１００内のヘッダ部に記述されているハードウェア・モジュールの識別符号（図５を参照のこと）が読み込まれる（ステップＳ１１）。既に述べたように、識別符号は、各ソフトウェア・モジュールと同じ処理をプログラマブル論理回路１６上に再構成する回路情報と、再構成されたハードウェア・モジュールの形状に関する情報を含んでいる。
【０１０６】
ここで、ハードウェア・モジュールの形状は、ハードウェア・モジュールをプログラマブル論理回路１６上に再構成して占有するセル領域を完全に包含する矩形で表現することとし、したがって、矩形が持つ水平及び垂直の各方向のセル（ＰＦＵ）数によって定義されている（前述）。
【０１０７】
また、同じ処理を行うためのハードウェア・モジュールの形状は、単一とは限らず、複数存在することもある。本実施例では、形状が異なるが同じ処理を実行する複数のハードウェア・モジュールを用意することとしている（後述）。
【０１０８】
予定された順序に従って各処理モジュールを逐次実行するという形式で、アプリケーション・プログラム１００の実行が進行する。そして、ハードウェア・モジュールによる処理部分に到達すると、必要なハードウェア・モジュールがプログラマブル論理回路１６上にコンフィギュレーションされていく。図７の破線で囲んだ部分がこれに相当する。
【０１０９】
本実施例では、アプリケーション・プログラム１００は、ハードウェア・モジュールとして実行すべきと決定されている処理モジュールとして、Ａ，Ｂ，Ｃ，Ｄという４つを含み、且つ、処理モジュールの実行順序はＡ→Ｂ→Ｃ→Ｂ→Ｄと指定されている（前述）。
【０１１０】
まず、ステップＳ１２において、処理Ａを実現するハードウェア・モジュール（Ａ）が、プログラマブル論理回路１６上にコンフィギュレーションされる。次いで、ステップＳ１３において、処理Ｂを実現するハードウェア・モジュール（Ｂ）が、プログラマブル論理回路１６上にコンフィギュレーションされる。
【０１１１】
図８には、処理Ａ及び処理Ｂを実現する各ハードウェア・モジュールがプログラマブル論理回路１６上にコンフィギュレーションされている様子を、模式的に示している。同図では、ハードウェア・モジュール（Ａ）及び（Ｂ）の各々に対応する論理セル領域を、夫々、参照番号２２２及び２２１で指し示している。また、この時点での空き領域、すなわちハードウェア・モジュールを未だ構成可能な領域を、参照番号２２３で指し示している。
【０１１２】
ハードウェア・モジュール（Ｂ）のコンフィギュレーションを行なうステップＳ１３が終了すると、ハードウェア取得手段３００は、記憶手段２００から、次の処理Ｃに必要なハードウェア・モジュール（Ｃ）の取得を試みる。
【０１１３】
本実施例では、図８に示すように、同じ処理Ｃを実行するための、形状が異なる３つのハードウェア・モジュール＜Ｃ−ａ＞、＜Ｃ−ｂ＞、及び＜Ｃ−ｃ＞が記憶装置２００内に用意されているものとする。但し、説明の便宜上、＜Ｃ−ａ＞は従来から用意されていたハードウェア・モジュールであり、残りの＜Ｃ−ｂ＞と＜Ｃ−ｃ＞は本発明において新たに追加されたハードウェア・モジュールであるとする。図示の通り、各ハードウェア・モジュール＜Ｃ−ａ＞、＜Ｃ−ｂ＞、及び＜Ｃ−ｃ＞の矩形形状は、夫々、６×４、４×６、３×８である。
【０１１４】
これに対し、この時点でのハードウェア・モジュール構成可能領域２２３の形状は４×７である。したがって、ハードウェア・モジュール取得手段３００は、コンフィギュレーション可能なハードウェア・モジュールは＜Ｃ−ｃ＞のみであると判断して、これを取得し、ハードウェア・モジュール構成可能領域２２３にコンフィギュレーションを行なう（ステップＳ１６）。そして、コンフィギュレーションが完了すると、処理Ｂの実行完了を待って処理Ｃが実行される。
【０１１５】
一方、既にコンフィギュレーションが完了している処理Ａと処理Ｂについては、ハードウェア・モジュール＜Ｃ−ｃ＞のコンフィギュレーション開始と同時に、実行が行なわれる（ステップＳ１４及びＳ１５）。ステップＳ１４が終了すると、ハードウェア・モジュール（Ａ）は不要となるので、使用していたセル領域２２２は解放され、ハードウェア・モジュール構成可能領域となる。但し、処理Ｂは、処理Ｃを実行した後再び呼び出されるので（前述）、ステップＳ１５を終了した時点では、使用していたセル領域２２１は解放されない。
【０１１６】
図９には、処理Ｃを実現する各ハードウェア・モジュールがプログラマブル論理回路１６上にコンフィギュレーションされた時点での、プログラマブル論理回路１６の様子を、模式的に示している。同図に示すように、ハードウェア・モジュール（Ｂ）及び＜Ｃ−ｃ＞の各々に相当する論理回路が、夫々、セル領域２２１及び２２６にコンフィギュレーションされている。また、既に実行が完了した処理Ａに係るセル領域２２２は解放され、この結果、新たに、ハードウェア・モジュール構成可能領域２２７が形成される。
【０１１７】
また、ハードウェア・モジュール（Ｃ）のコンフィギュレーションを行なうステップＳ１６が終了すると、ハードウェア取得手段３００は、記憶手段２００から、次の処理Ｄに必要なハードウェア・モジュール（Ｄ）の取得を試みる。
【０１１８】
本実施例では、図９に示すように、同じ処理Ｄを実行するための、形状が異なる３つのハードウェア・モジュール＜Ｄ−ａ＞、＜Ｄ−ｂ＞、及び＜Ｄ−ｃ＞が記憶装置２００内に用意されているものとする。但し、説明の便宜上、＜Ｄ−ａ＞は従来から用意されていたハードウェア・モジュールであり、残りの＜Ｄ−ｂ＞と＜Ｄ−ｃ＞は本発明において新たに追加されたハードウェア・モジュールであるとする。図示の通り、各ハードウェア・モジュール＜Ｄ−ａ＞、＜Ｄ−ｂ＞、及び＜Ｄ−ｃ＞の矩形形状は、夫々、６×２、４×３、３×４である。
【０１１９】
これに対し、この時点でのハードウェア・モジュール構成可能領域２２７の形状は４×３である。したがって、ハードウェア・モジュール取得手段３００は、コンフィギュレーション可能なハードウェア・モジュールは＜Ｄ−ｂ＞のみであると判断して、これを取得し、ハードウェア構成可能セル領域２２７にコンフィギュレーションを行なう（ステップＳ１７）。
【０１２０】
ステップＳ１７におけるハードウェア・モジュール＜Ｄ−ｂ＞のコンフィギュレーションを開始する時点で、処理Ａ（ステップＳ１４）が終了しているので、ステップＳ１７の開始と同時に処理Ｂ（ステップＳ１５）が実行される。
【０１２１】
また、ハードウェア・モジュール＜Ｄ−ｂ＞のコンフィギュレーションが終了し、処理Ｂの実行が完了すると、既にコンフィギュレーションされたハードウェア・モジュール＜Ｃ−ｂ＞によって処理Ｃを実行開始する（ステップＳ２８）。
【０１２２】
処理Ｃが終了すると、セル領域を占有したままのハードウェア・モジュール（Ｂ）によって処理Ｂを再び実行し（ステップＳ１９）、次いで、ハードウェア・モジュール＜Ｄ−ｂ＞によって処理Ｄを実行する（ステップＳ２０）。
【０１２３】
図１０には、本実施例に従って処理Ａ→処理Ｂ→処理Ｃ→処理Ｂ→処理Ｄの順で各ハードウェア・モジュールが実行される処理フローを、従来例と比較しながら、時系列的に表示している。すなわち、同図の（ａ）が本実施例であり、同図（ｂ）が従来例である。但し、従来例では、処理Ｃ及び処理Ｄの各々に対して、夫々、ハードウェア・モジュール＜Ｃ−ａ＞及び＜Ｄ−ａ＞の唯一つしか、記憶装置２００に用意されていないものとする（前述）。
【０１２４】
図１０では、各処理の所要時間が、時間に相当する長さを持つ帯で表現されている。同図において、各処理を示す大文字Ａ，Ｂ，Ｃ，Ｄと小文字”ｔ”からなる接頭辞の組み合わせは、該当するハードウェア・モジュールのコンフィギュレーションに要する時間を表している。また、各処理を示す大文字Ａ，Ｂ，Ｃ，Ｄと大文字”Ｔ”からなる接頭辞の組み合わせは、コンフィギュレーションされたハードウェア・モジュールによる各処理の所要時間を表している。但し、ｔＣ及びＴＣは、本実施例（ａ）においてはハードウェア・モジュール＜Ｃ−ｂ＞に関する各所要時間であり、従来例（ｂ）ではハードウェア・モジュール＜Ｃ−ａ＞に関する各所要時間である。同様に、ｔＤ及びＴＤは、本実施例（ａ）においてはハードウェア・モジュール＜Ｄ−ｂ＞に関する各所要時間であり、従来例（ｂ）ではハードウェア・モジュール＜Ｄ−ａ＞に関する各所要時間である。
【０１２５】
以下、時系列に従って図１０について説明する。
【０１２６】
まず、本実施例における処理フローについて言及する。時刻ｔ０において、処理Ａに必要なハードウェア・モジュール（Ａ）のコンフィギュレーションが開始する。次いで、時刻ｔ１において、ハードウェア・モジュール（Ａ）のコンフィギュレーションが終了すると、処理Ｂに必要なハードウェア・モジュール（Ｂ）のコンフィギュレーションが開始する。
【０１２７】
時刻ｔ２において、ハードウェア・モジュール（Ｂ）のコンフィギュレーションが終了すると、処理Ｃに必要なハードウェア・モジュールのうち、ハードウェア・モジュール構成可能領域２２３（図８を参照のこと）に割り当て可能な＜Ｃ−ｂ＞を選択的に取得して、コンフィギュレーションを開始する。また、これと同時に、ハードウェア・モジュール（Ａ）によって処理Ａが開始する。
【０１２８】
時刻ｔ３において、ハードウェア・モジュール（Ｃ）のコンフィギュレーションが終了する。この時点では、処理Ｄに必要なハードウェア・モジュールをコンフィギュレーションできるセル領域が、プログラマブル論理回路１６上には存在しない。本実施例では、処理Ｄを実行可能な形状が異なる３個のハードウェア・モジュール＜Ｄ−ａ＞、＜Ｄ−ｂ＞、及び、＜Ｄ−ｃ＞を用意しているが、いずれもプログラマブル論理回路１６の空き領域に割り当てることができない。このため、実行中の他のハードウェア・モジュールが終了してセル領域が解放されるまでコンフィギュレーション作業を待機する。
【０１２９】
時刻ｔ４において、処理Ａが終了すると、ハードウェア・モジュール（Ａ）が使用していたセル領域が解放されて、新たにハードウェア・モジュール構成可能領域２２７が生成される（図９を参照のこと）。処理Ｄを実行するハードウェア・モジュールのうち、ハードウェア・モジュール構成可能領域２２７に割り当て可能な＜Ｄ−ｂ＞を選択的に取得して、コンフィギュレーションを開始する。また、処理Ａの終了とともに、ハードウェア・モジュール（Ｂ）を用いて処理Ｂが開始する。
【０１３０】
以降、プログラマブル論理回路１６上にコンフィギュレーションされた各ハードウェア・モジュールを用いて、処理Ｂの終了とともに処理Ｃが開始し（時刻ｔ６）、処理Ｃの終了とともに処理Ｂが開始し（時刻ｔ８）、処理Ｂの終了とともに処理Ｄが開始し（時刻ｔ１１）、最後に処理Ｄが終了する（時刻ｔ１２）。
【０１３１】
次に、従来例における処理フローについて言及する。時刻ｔ０において、処理Ａに必要なハードウェア・モジュール（Ａ）のコンフィギュレーションが開始する。次いで、時刻ｔ１において、ハードウェア・モジュール（Ａ）のコンフィギュレーションが終了すると、処理Ｂに必要なハードウェア・モジュール（Ｂ）のコンフィギュレーションが開始する。
【０１３２】
時刻ｔ２において、ハードウェア・モジュール（Ｂ）のコンフィギュレーションが終了すると、ハードウェア・モジュール（Ａ）によって処理Ａが開始する。
【０１３３】
また、処理Ｂの次に実行される処理Ｃに必要なハードウェア・モジュールをプログラマブル論理回路１６上にコンフィギュレーションしなければならない。しかしながら、従来例では、処理Ｃを実行するハードウェア・モジュールとして＜Ｃ−ａ＞しか用意していない。図８を参照して判るように、ハードウェア・モジュール＜Ｃ−ａ＞は論理セル数６×４の形状を持ち、これに対し、この時点でのハードウェア・モジュール構成可能領域２２３は４×６であり、コンフィギュレーションすることができない。
【０１３４】
このため、処理Ｂが終了してハードウェア・モジュール（Ｂ）が使用していたセル領域が解放され、ハードウェア・モジュール＜Ｃ−ａ＞に充分なハードウェア・モジュール構成可能領域ができる時刻ｔ６まで、＜Ｃ−ａ＞のコンフィギュレーションは待たされる。
【０１３５】
時刻ｔ７において、ハードウェア・モジュール＜Ｃ−ａ＞のコンフィギュレーションが終了すると、これを用いて処理Ｃが開始する。
【０１３６】
また、時刻ｔ９において、処理Ｃが終了すると、ハードウェア・モジュール＜Ｃ−ａ＞をプログラマブル論理回路１６上から削除して、再び、処理Ｂに必要なハードウェア・モジュール（Ｂ）のコンフィギュレーションを開始する。従来例では、ハードウェア・モジュール（Ｂ）を２度もコンフィギュレーションしなければならない点にも充分留意されたい。
【０１３７】
次いで、時刻ｔ１０において、ハードウェア・モジュール（Ｂ）のコンフィギュレーションが終了すると、これを用いて処理Ｂを開始する。
【０１３８】
次いで、時刻ｔ１３において、処理Ｂが終了すると、再びハードウェア・モジュール（Ｂ）をプログラマブル論理回路１６上から削除して、次の処理Ｄに必要なハードウェア・モジュール＜Ｄ−ａ＞のコンフィギュレーションを開始する。従来例では、処理Ｄのためのハードウェア・モジュールとして＜Ｄ−ａ＞しか用意していないので、ハードウェア・モジュール（Ｂ）が使用するセル領域が解放されるまで＜Ｄ−ａ＞のコンフィギュレーションが待たされてしまう、という点にも充分留意されたい。
【０１３９】
次いで、時刻ｔ１４において、ハードウェア・モジュール＜Ｄ−ａ＞のコンフィギュレーションが終了すると、処理Ｄが開始する。そして、時刻ｔ１５において、これを用いた処理Ｄが終了する。
【０１４０】
上述したように、従来例では、本実施例の場合とは異なり、時刻ｔ２及びｔ４において、処理Ｃ及び処理Ｄの夫々に必要なハードウェア・モジュール＜Ｃ−ａ＞及び＜Ｄ−ａ＞のコンフィギュレーションを、処理Ａ及び処理Ｂの実行と並行して行なうことができない。また、処理Ｂに必要なハードウェア・モジュール（Ｂ）を、ｔ９において再度コンフィギュレーションしなければならない。
【０１４１】
従来例におけるこのような処理時間のロスは、プログラマブル論理回路１６上のハードウェア・モジュール構成可能領域内に、次の処理に必要なハードウェア・モジュールがセル・サイズ的には受容可能だが形状的に入りきらないために生じたものである。この結果、ハードウェア・モジュール（Ｂ），＜Ｃ−ａ＞，＜Ｄ−ａ＞の各々のコンフィギュレーション時間の合計分だけ、ハードウェア・モジュールによる処理に長い時間を要してしまうことになる。
【０１４２】
図１０で示した例では、Ａ→Ｂ→Ｃ→Ｂ→Ｄという合計５つの処理を行ったが、この処理数が多くなればなるほど、本実施例と従来例との処理時間ロスの差は拡大するであろう。すなわち、本発明が全体の処理時間を短縮するために極めて有効な方法である、ということを理解できよう。また、本発明は、プログラマブル論理回路上のハードウェア・モジュール構成可能領域すなわちセル資源を効率的に使用することにもなる。
【０１４３】
なお、図１０に示した例では、処理Ｂに必要なハードウェア・モジュール（Ｂ）を１種類としている。処理Ａに必要なハードウェア・モジュール（Ａ）のサイズが過大であり、双方のハードウェア・モジュール（Ａ）及び（Ｂ）を同時にプログラマブル論理回路１６上にコンフィギュレーションできないような事態を想定すれば、従来例と同様に、処理Ｂがボトルネックとなって処理時間のロスが生じるであろう。
【０１４４】
また、図１０に示した例では、ハードウェア・モジュール＜Ｃ−ｂ＞のコンフィギュレーション時間ｔＣよりも処理Ａの実行時間ＴＡの方が長く、また、ハードウェア・モジュール＜Ｄ−ｂ＞のコンフィギュレーション時間ｔＤよりも処理Ｂの実行時間ＴＢの方が長いこととしている。これとは逆に、処理Ａの実行時間ＴＡよりもハードウェア・モジュール＜Ｃ−ｂ＞のコンフィギュレーション時間ｔＣの方が長く、また、処理Ｂの実行時間ＴＢよりもハードウェア・モジュール＜Ｄ−ｂ＞のコンフィギュレーション時間ｔＤの方が長いこととした場合には、処理Ｂ（但し２回目）及び処理Ｄは、ハードウェア・モジュール＜Ｃ−ｂ＞及び＜Ｄ−ｂ＞のコンフィギュレーションの後に実行されことになる。
【０１４５】
［追補］
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１４６】
【発明の効果】
以上詳記したように、本発明によれば、論理回路を記述した回路情報に従って所望の論理を再構成可能なプログラマブル論理回路を含んだタイプの、優れた情報処理システムを提供することができる。
【０１４７】
また、本発明によれば、プログラム言語で処理を記述された複数の処理モジュールで構成される一連の処理の少なくとも一部を部分書き換え可能なプログラマブル論理回路上で再構成したハードウェア回路に置き換えて実行するタイプの、優れた情報処理システムを提供することができる。
【０１４８】
また、本発明によれば、各処理モジュールをソフトウェア・モジュール又はハードウェア・モジュールのいずれで実行すべきかを決定して処理するタイプの、優れた情報処理システムを提供することができる。
【０１４９】
また、本発明によれば、プログラム論理回路の再構成によるオーバーヘッドを減少して処理モジュール全体の処理時間を短縮化することができる、優れた情報処理システムを提供することができる。
【０１５０】
また、本発明によれば、プログラマブル・デバイス上の空き領域のサイズは充分であるが形状が適合しないためにハードウェア・モジュールの再構成が不可能となって生じるオーバーヘッドを減少することができ、また、その結果として全体の処理時間を短縮化することができる、優れた情報処理システムを提供することができる。
【０１５１】
本発明によれば、同じ処理を実現するが形状が異なるハードウェア・モジュールを複数個用意しておき、プログラマブル論理回路上の空き領域の形状に適合するハードウェア・モジュールを優先的に使用することにしたので、ハードウェア・モジュールの再構成が不可能となって生じるオーバーヘッドを最小限に抑えることができる。また、その結果として全体の処理時間を短縮化することができる。
【０１５２】
また、ハードウェア・モジュールの形状を、占有するセル領域を包含する最小の矩形で表現することとした。この矩形は、水平及び垂直の各方向の論理セル数だけで定義できる。すなわち、ハードウェア・モジュールがハードウェア・モジュール構成可能領域に適合するかどうかを、極めて少量のデータ量により判断することができる。併せて、プログラマブル論理回路が持つ論理セルを効率的に利用することが可能となることから、処理の実行とデバイスのコンフィギュレーションを並行して行なうことができ、全体の処理時間を短縮することができる。
【図面の簡単な説明】
【図１】  本発明を実現するのに適した情報処理システム１０のハードウェア構成を模式的に示した図である。
【図２】  プログラマブル論理回路１６の構造を論理的に図解したものである。
【図３】  プログラマブル論理回路１６の物理構造を模式的に示した図である。
【図４】  情報処理システム１０が複数の処理モジュールからなる一連の処理を実行する様子を模式的に示した図である（但し、一連の処理は、プログラム言語で記述された各処理モジュールで構成されるプログラムの形態で、システム１０に供給されているものとする）。
【図５】  一連の処理を構成するアプリケーション・プログラムの構成を模式的に示した図である。
【図６】  ハードウェア・モジュールの形状を矩形表現する様子を模式的に示した図である。
【図７】  ハードウェア・モジュールによって処理モジュールを実行する手順を示したフローチャートである。
【図８】  形状が異なるが同じ処理を実行する複数のハードウェア・モジュールの中から最適なものを選択してプログラマブル論理回路１６上に再構成する様子を模式的に示した図であり、より具体的には、処理Ａ及び処理Ｂを実現する各ハードウェア・モジュールがプログラマブル論理回路１６上にコンフィギュレーションされている様子を示した図である。
【図９】  形状が異なるが同じ処理を実行する複数のハードウェア・モジュールの中から最適なものを選択してプログラマブル論理回路１６上に再構成する様子を模式的に示した図であり、より具体的には、処理Ｃを実現する各ハードウェア・モジュールがプログラマブル論理回路１６上にコンフィギュレーションされた時点でのプログラマブル論理回路１６の様子を示した図である。
【図１０】  本実施例に従って処理Ａ→処理Ｂ→処理Ｃ→処理Ｂ→処理Ｄの順で各ハードウェア・モジュールが実行される処理フローを、従来例と比較しながら、時系列的に表示した図である。
【図１１】  特開平９−７４５５６号公報に開示された画像再生装置の構成を模式的に示した図である。
【図１２】  特開平６−３０１５２２号公報に開示された計算機システムの構成を模式的に示した図である。
【符号の説明】
１０…情報処理システム、
１１…ＣＰＵ、１１Ｂ…ホスト・バス、
１２…主記憶メモリ、１３…バス・ブリッジ、１４…ＰＣＩバス、
１５…プログラマブル論理回路インターフェース、
１６…プログラマブル論理回路、
１７…ハード・ディスク・インターフェース、
１８…ハード・ディスク装置、
１９…通信インターフェース、
２０…ネットワーク、２１…記憶装置、
１００…アプリケーション・プログラム、
１６０…コンフィギュレーション・メモリ、
１６１…論理セル、１６２…配線領域、
１６３…入出力端子、１６４…回路素子、
３００…ハードウェア・モジュール取得手段、
３１０…取得要求送出手段、３２０…取得再構成手段、
６００…実行モジュール決定手段、８００…識別符号記録手段。
【図１】
0003684901.tif 000002
【図２】
0003684901.tif 000003
【図３】
0003684901.tif 000004
【図４】
0003684901.tif 000005
【図５】
0003684901.tif 000006
【図６】
0003684901.tif 000007
【図７】
0003684901.tif 000008
【図８】
0003684901.tif 000009
【図９】
0003684901.tif 000010
【図１０】
0003684901.tif 000011
【図１１】
0003684901.tif 000012
【図１２】
0003684901.tif 000013