(57)【特許請求の範囲】
【請求項１】
プログラムで処理を記述した一連の処理を実行するものであり、前記一連の処理の少なくとも一部が、プログラマブル論理回路で処理可能である情報処理システムにおいて、
前記プログラマブル論理回路の回路情報を記憶するコンフィギュレーションメモリを有し、
前記プログラマブル論理回路として、複数個の論理セルを有し、この複数個の論理セルのうちの、指定されたエリアの論理セルに前記回路情報がコンフィギュレーションされることにより、前記指定されたエリアに新たな論理回路を実装するものを備えるとともに、
前記コンフィギュレーションメモリとは別個に設けられ、前記プログラマブル論理回路の前記複数個の論理セルのそれぞれの状態を反映する情報を記憶する論理セル状態メモリを備え、
新たな回路情報がコンフィギュレーションされるごとに、前記論理セル状態メモリの記憶情報のうちの、当該コンフィギュレーションされた論理セルの状態を反映する情報を更新する
ことを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記論理セル状態メモリの前記論理セルの状態を反映する情報は、当該論理セルの回路状態は、何回目のコンフィギュレーションで構成されたかのコンフィギュレーション回数を含むものであることを特徴とする情報処理システム。
【請求項３】
請求項１または請求項２に記載の情報処理システムにおいて、
前記論理セル状態メモリの前記論理セルの状態を反映する情報は、当該論理セルを含む回路が、前記プログラマブル論理回路上で動作可能であるか否かを示す情報を含むことを特徴とする情報処理システム。
【請求項４】
請求項１または請求項２に記載の情報処理システムにおいて、
前記論理セル状態メモリの各論理セルの状態を反映する情報を参照して、次の新たな機能回路のコンフィギュレーションが可能な、前記プログラマブル論理回路上の領域を決定することを特徴とする情報処理システム。
【請求項５】
請求項１、請求項２または請求項３のいずれかに記載の情報処理システムにおいて、
前記論理セル状態メモリの各論理セルの状態を反映する情報を参照して、前記プログラマブル論理回路上で動作可能である回路を検出して、利用することを特徴とする情報処理システム。
【請求項６】
請求項１または請求項２に記載の情報処理システムにおいて、
前記論理セル状態メモリの前記論理セルの状態を反映する情報が予め設定されたものに等しくなった時に、前記プログラマブル論理回路のコンフィギュレーションメモリをリセットすることを特徴とする情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、少なくとも処理の一部分を、回路構成を部分的に再構成できるプログラマブル論理回路で処理することが可能である情報処理システムに関するものであり、特に、プログラマブル論理回路の有効な活用方法に関するものである。
【０００２】
【従来の技術】
デジタル論理回路製品、特に特定用途向け集積回路（ＡＳＩＣ）の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などで構成されたプログラマブル論理回路が広く使われている。
【０００３】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。
【０００４】
特に、米国特許第４，７００，１８７号の発明のように論理セルの機能を決めるスイッチの入力にＳＲＡＭなどを用いて電気的に再構成可能なプログラマブル論理回路は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路は、ますます広く使われるようになってきている。
【０００５】
ところで、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路では実現できない規模にまで回路規模が大きくなっている。この問題を解決するための一つの方法は、複数個のプログラマブル論理回路を接続して使用することである。
【０００６】
しかしながら、プログラマブル論理回路の入出力接続の数が制限されているので、この方法ですべての論理回路を実現することは困難である。また、たとえ実現できたとしても、使用するプログラマブル論理回路数の増加に伴い、消費電力が増加するという新たな欠点を引き起こす。
【０００７】
別の解決方法として、異なる時間に異なる論理回路を実現するために、プログラマブル論理回路を処理の途中で再度構成し直すことが提案されている。この方法は、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【０００８】
しかし、この場合は、プログラマブル論理回路に回路を再構成する時に回路情報を再度読み込ませるための余分な時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に記憶させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力させるという余分な処理が必要になる。
【０００９】
この問題を解決するために、米国アトメル社の「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路では、再構成を行う時にデータを記憶するためのデータ記憶装置（ＳＲＡＭ）を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで再構成をするための時間を最小に留めている。
【００１０】
【発明が解決しようとする課題】
ところが、このような部分的に再構成可能なプログラマブル論理回路を用いて、異なる複数の論理回路を、異なる時間に、前記プログラマブル論理回路上に構成する場合、従来は、プログラマブル論理回路を利用するアプリケーションソフト側で、プログラマブル論理回路上で回路として使用されている論理セルの位置が不明であったため、再構成する回路は、例えば、プログラマブル論理回路の所定の位置を基準に構成する必要があり、複数の回路はプログラマブル論理回路上の同一部分に重ねて構成されるようになる。
【００１１】
例えば、図１４に示すように、２つの回路Ａ、回路Ｂを、回路Ａ→回路Ｂ→回路Ａの順にプログラマブル論理回路上に構成して、処理を行う場合を考える。この場合、回路Ａは、図１４（ａ）に示すように、プログラマブル論理回路の回路構成領域ＦＬの例えば左下隅を基準にしたエリアとして、プログラマブル論理回路上に構成される。そして、この回路Ａでの処理が終了すると、次は、回路Ｂが、図１４（ｂ）に示すように、同じく回路構成領域ＦＬの左下隅を基準にしたエリアとして、プログラマブル論理回路上に構成される。最後に、回路Ａが、図１４（ｃ）に示すように、再び、回路構成領域ＦＬの左下隅を基準にしたエリアとして、プログラマブル論理回路上に構成される。
【００１２】
ところで、プログラマブル論理回路に再構成する回路には規模の大小があり、再構成する回路の規模が比較的小さく、プログラマブル論理回路上に複数の回路を同時に構成することが可能である場合もある。例えば、前述の例の場合には、回路Ａと、回路Ｂとは、図１４（ｄ）に示すように、プログラマブル論理回路の回路構成領域ＦＬ上に同時に構成可能なものである。
【００１３】
このように複数の回路が同時にプログラマブル論理回路上に構成可能な場合であって、しかも、前述の例の場合の回路Ａのように、一度使用した回路を、後で、もう一度使用するような場合には、図１４（ａ）のように、回路Ａをプログラマブル論理回路上に構成した後、図１４（ｄ）に示すように、回路Ｂを回路構成領域１０のうちの空きエリアに再構成することができれば、回路Ａは、そのまま、プログラマブル論理回路上に残るので、回路Ｂでの処理の後、回路Ａを再び再構成することなく、回路Ａを用いた処理を実行することができる。
【００１４】
このようにすれば、回路Ｂの後の回路Ａの再構成の時間を節約できるので、全体としての処理時間を短くすることができ、処理を効率的に行うことができる。
【００１５】
しかしながら、従来の情報処理システムでは、前述したように、プログラマブル論理回路を利用して処理を実行するアプリケーションソフト側では、プログラマブル論理回路上で回路として使用されている論理セルの位置が不明であるため、図１４（ｄ）に示すような再構成を行うことができなかった。
【００１６】
この発明は、以上の点にかんがみ、プログラマブル論理回路上の論理セルの使用状況を把握できるようにして、効率的な処理ができるようにした情報処理システムを提供することを目的とする。
【００１７】
【課題を解決するための手段】
上記課題を解決するため、請求項１の発明による情報処理システムは、
プログラムで処理を記述した一連の処理を実行するものであり、前記一連の処理の少なくとも一部が、プログラマブル論理回路で処理可能である情報処理システムにおいて、
前記プログラマブル論理回路の回路情報を記憶するコンフィギュレーションメモリを有し、
前記プログラマブル論理回路として、複数個の論理セルを有し、この複数個の論理セルのうちの、指定されたエリアの論理セルに前記回路情報がコンフィギュレーションされることにより、前記指定されたエリアに新たな論理回路を実装するものを備えるとともに、
前記コンフィギュレーションメモリとは別個に設けられ、前記プログラマブル論理回路の前記複数個の論理セルのそれぞれの状態を反映する情報を記憶する論理セル状態メモリを備え、
新たな回路情報がコンフィギュレーションされるごとに、前記論理セル状態メモリの記憶情報のうちの、当該コンフィギュレーションされた論理セルの状態を反映する情報を更新する
ことを特徴とする。
【００１８】
また、請求項２の発明は、請求項１において、
前記論理セル状態メモリの前記論理セルの状態を反映する情報は、当該論理セルの回路状態は、何回目のコンフィギュレーションで構成されたかのコンフィギュレーション回数を含むものであることを特徴とする。
【００１９】
また、請求項３の発明は、請求項１または請求項２の情報処理システムにおいて、
前記論理セル状態メモリの前記論理セルの状態を反映する情報は、当該論理セルを含む回路が、前記プログラマブル論理回路上で動作可能であるか否かを示す情報を含むことを特徴とする。
【００２０】
【作用】
上述の構成の請求項１の発明によれば、プログラマブル論理回路の複数個の論理セルのそれぞれの状態を反映する情報を記憶する論理セル状態メモリを備えており、この論理セル状態メモリの記憶内容により、プログラマブル論理回路上の空き領域を容易に把握することができる。したがって、空き領域が、再構成しようとする回路よりも大きいときには、その空き領域に新たな回路を再構成することができ、以前にプログラマブル論理回路に構成されていた回路資源を有効に活用する効率的な処理が期待できる。
【００２１】
また、請求項２の発明のように、論理セル状態メモリに記憶する論理セルの状態を反映する情報としてコンフィギュレーション回数が記憶されている場合には、できるだけ、以前にコンフィギュレーションされた回路を利用できるように、新たにコンフィギュレーションを行なう回路を構成するエリアを設定するようにすることができる。
【００２２】
また、請求項３の発明においては、論理セルの状態を反映する情報には、当該論理セルを含む回路が、前記プログラマブル論理回路上で動作可能であるか否かを示す情報を含むので、以前にコンフィギュレーションされた回路であって、利用可能な回路を容易に検出することが可能である。
【００２３】
【発明の実施の形態】
以下、この発明による情報処理システムの実施の形態を、図を参照しながら説明する。
【００２４】
まず、この発明が適用される、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムの実施の形態の主要な概念構成を図２に示す。
【００２５】
この実施の形態の情報処理システムにおいて、対象とするアプリケーションプログラム（単にプログラムという場合もある）１００は、当該プログラムにより実行しようとする一連の処理を複数個の処理に分離し、分離された各処理ごとにモジュールとして構成したものである。このモジュールを、この明細書では処理モジュールと称することとする。
【００２６】
この実施の形態では、プログラム１００を構成する各処理モジュールは、ＣＰＵ５００が処理を実行するように、処理がプログラム言語で記述されたソフトウエアプログラムで構成される。このソフトウエアプログラムは、それぞれソフトウエアモジュールＳＭと称することとする。したがって、この実施の形態の場合、アプリケーションプログラム１００は、複数個のソフトウエアモジュールＳＭの集合からなる。
【００２７】
この実施の形態においては、記憶装置２００に、ソフトウエアモジュールＳＭのそれぞれが行う処理と同じ処理をプログラマブル論理回路に再構成する回路情報で記述したモジュール（この明細書では、このモジュールをハードウエアモジュールと称する）ＨＭを保存して用意する。記憶装置２００は、当該情報処理システム内に設けてもよいし、ネットワーク上の記憶装置であってもよい。
【００２８】
この例の場合、プログラム１００は、図３に示すように、ヘッダ部ＨＥＤと、本体部ＰＲＧとからなり、本体部ＰＲＧが前述したように複数個のソフトウエアモジュールＳＭの集合で構成されている。そして、ヘッダ部ＨＥＤには、各ソフトウエアモジュールＳＭと同じ処理をプログラマブル論理回路に再構成する回路情報で記述した、対応するハードウエアモジュールＨＭの識別符号ＩＤが記述されている。
【００２９】
この場合、プログラム１００には、同じ処理を行うソフトウエアモジュールＳＭとハードウエアモジュールＨＭとの対応が付くように識別符号ＩＤが記述されている。例えば、この例では、本体部ＰＲＧの複数個のソフトウエアモジュールＳＭのプログラム上の処理実行順に従った順番で、各ソフトウエアモジュールＳＭに対応するハードウエアモジュールＨＭの識別符号ＩＤが、ヘッダ部ＨＥＤに記述される。
【００３０】
ハードウエアモジュール取得手段３００は、プログラム１００中に記述されている識別符号ＩＤを用いて、ソフトウエアモジュールＳＭが実行する処理と同じ処理を実行するハードウエアモジュールＨＭを、システム内の記憶装置２００から、あるいはネットワーク上の記憶装置２００から取得する。そして、ハードウエアモジュール取得手段３００は、取得したハードウエアモジュールＨＭによる回路をプログラマブル論理回路４００上に再構成する。
【００３１】
記憶装置２００に記憶されるハードウエアモジュールＨＭは、プログラマブル論理回路４００の回路情報からなる。図４は、この回路情報の構造を示すものである。
【００３２】
すなわち、回路情報２０１は、図４に示すように、付加情報部であるヘッダ部２０２と、回路データ部であるコード部２０３からなる。ヘッダ部２０２には、回路名情報２０４と、入出力ポート情報２０５と、面積情報２０６とが記述される。
【００３３】
回路名情報２０４には、自己の回路情報の識別子ＩＤとして、この例では、当該回路情報２０１がプログラマブル論理回路４００に構成する回路名（以下、自回路名と呼ぶ）が記述されている。この自己の回路情報の識別子ＩＤとしての自回路名は、その回路情報２０１に付けられた名前でもある。この例では、アプリケーションプログラム１００は、後述するように、プログラマブル論理回路４００に構成する回路の指定情報として、この回路情報の識別子ＩＤとしての自回路名を用いる。
【００３４】
なお、回路名情報２０４は、ハードウエアモジュールＨＭと、ソフトウエアモジュールＳＭとを区別する識別部分を含むもので、この実施の形態では、その識別部分を除くと、アプリケーションプログラム１００のソフトウエアモジュールＳＭと、ハードウエアモジュールＨＭとは同一の識別子を有するものである。
【００３５】
ヘッダ部２０２の入出力ポート情報２０５は、回路に対する信号の流れの方向に応じて、入力（ＩＮ）、出力（ＯＵＴ）または双方向（ＩＮ／ＯＵＴ）のうちから選ばれるポートの種類２０７、論理セル（後に説明する）を単位にしたポートの位置座標（Ｘ，Ｙ）２０８、およびポートのデータ幅（ビット数）２０９で構成される。
【００３６】
面積情報２０６は、当該回路情報２０１でプログラマブル論理回路４００上に構成される回路の大きさを示すもので、例えば回路構成エリアが矩形の場合には、縦方向および横方向に必要となる論理セルの個数Ｎｘ，Ｎｙの組み合わせ（Ｎｘ，Ｎｙ）のように記述される。
【００３７】
コード部（回路データ部）２０３は、アドレスＡＤＲとデータＤＴの対の集まりで構成される。アドレスＡＤＲは、プログラマブル論理回路４００を構成する論理セルや配線の状態を決定するコンフィギュレーションメモリ（後に説明する）のアドレスである。データＤＴは、書き込まれたコンフィギュレーションメモリのアドレスに対応する論理セルや配線の状態を決める。
【００３８】
プログラム１００のソフトウエアモジュールＳＭによるソフトウエア処理は、ＣＰＵ５００が実行する。
【００３９】
実際のアプリケーションプログラム１００の処理は、処理モジュールごとに、実行モジュール決定手段６００により、ソフトウエアモジュールＳＭまたはハードウエアモジュールＨＭのいずれで実行するかが選択されて、実行される。この実施の形態では、実行モジュール決定手段は、選択条件設定手段７００に設定されている実行モジュール選択条件に基づいて、どちらのモジュールで処理モジュールを実行するかを決定する。
【００４０】
選択条件設定手段７００には、予め、例えばソフトウエアやハードウエアによる処理時間、メモリ消費量、プログラマブル論理回路の再構成時間などの種々の選択条件項目を想定し、その一つの条件項目あるいは複数個の条件項目を組み合わせて、実行モジュール選択条件を設定することができる。実行モジュール決定手段６００は、ハードウエアモジュールＨＭと、ソフトウエアモジュールＳＭのうち、設定された選択条件に合致する方の処理モジュールを、実行モジュールとして選択する。なお、各処理モジュールについての前記選択条件項目の情報は、予め実行モジュール決定手段６００のメモリに格納されている。
【００４１】
なお、選択条件設定手段７００は、実行モジュール選択条件をユーザにより設定変更可能なように設けられるものである。ユーザが、ある処理について、ハードウエアモジュールＨＭとソフトウエアモジュールＳＭのどちらを使用するかを設定しておくことも可能である。
【００４２】
［実施の形態のハードウエア構成例］
図５は、この実施の形態の情報処理システム１０のハードウエア構成例を示すブロック図である。この実施の形態の情報処理システム１０においては、ＣＰＵ１１のホストバス１１Ｂに、チップセット１２に含まれるメモリコントローラ（図示せず）を介して、例えばＤＲＡＭで構成されるメインメモリ１３が接続される。
【００４３】
ホストバス１１Ｂは、また、チップセット１２に含まれるホスト−ＰＣＩバスブリッジ（図示せず）を介して、ＰＣＩバス１４に接続される。ＰＣＩバス１４には、プログラマブル論理回路インターフェース１５を介してプログラマブル論理回路４００と、ハードディスクインターフェース１７を介してハードディスクドライブ１８と、通信インターフェース１９とが接続される。
【００４４】
通信インターフェース１９は、ＬＡＮやインターネットなどのネットワーク２０を介して、プログラマブル論理回路４００に再構成される回路情報が格納されている記憶装置２１に接続される。
【００４５】
ハードディスクドライブ１８により読み書きされるハードディスクには、アプリケーションプログラムが格納されている。また、アプリケーションプログラムは、ネットワーク２０上の記憶装置（サーバ）に格納されている場合もある。
【００４６】
また、ハードディスクドライブ１８のハードディスクには、プログラマブル論理回路４００に再構成される回路情報が格納されている場合もある。この例の場合、ハードディスクドライブ１８により読み書きされるハードディスクは、この情報処理システム１０内の記憶装置を構成する。
【００４７】
この実施の形態では、ハードウエア取得手段３００と、実行モジュール決定手段６００が、図５に示した情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装される。
【００４８】
次に、プログラマブル論理回路４００の構造を図６に示す。プログラマブル論理回路４００は、論理セル４０１と、配線領域４０２と、入出力端子４０３とを備えている。また、図示しないが、プログラマブル論理回路は、回路情報を格納するためのコンフィギュレーションメモリを備える。コンフィギュレーションメモリは、論理セル４０１内および配線領域４０２内のＥＥＰＲＯＭ、ＳＲＡＭなどの書き換え可能なメモリ素子で構成されている。
【００４９】
コンフィギュレーションメモリにアドレスＡＤＲが与えられて、新しい回路情報（図４参照）のデータが格納されると、この回路情報に従って、論理セル４０１内の回路構成と、論理セル４０１および入出力端子４０３を相互に接続する配線領域４０２の接続状態が再構成される。この一連の動作をコンフィギュレーションと呼ぶ。コンフィギュレーションメモリの一部分を書き換えることで、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【００５０】
プログラマブル論理回路４００に再構成された回路素子に、入出力端子４０３を介して、処理すべきデータが入力され、また、その処理結果が出力される。データ入力先の論理セル４０１と、データ出力元の論理セル４０１を、論理セルの位置に対応するセル座標を示した制御コードによってアプリケーションプログラムが指定する。
【００５１】
次に、この発明の要部の論理セル状態メモリについて、図１を参照して説明する。この実施の形態においては、メインメモリ１３の一部のメモリ領域として、図１に示すように、プログラマブル論理回路４００の各論理セルのそれぞれに対応するメモリエリア（論理セル状態格納部）３１を備える論理セル状態メモリ３０を設ける。
【００５２】
論理セル状態格納部３１のそれぞれには、プログラマブル論理回路の、対応する論理セルの状態を反映する情報としての論理セル状態データＳＴＤを記憶する。この場合、アプリケーションプログラム１００が、プログラマブル論理回路４００上の各論理セルの状態を、論理セル１個に対して例えば１バイトの論理セル状態データＳＴＤを対応させて管理する。図１は、メインメモリ１３に構成される論理セル状態メモリ３０のメモリ空間の概念図である。
【００５３】
この例の場合、１バイトの論理セル状態データＳＴＤの先頭の１ビットには、その論理セル状態データＳＴＤに対応する論理セルを含む回路が動作可能かを示すアクティブフラグＡＦを充て、残りの７ビットには、当該論理セルが何回目のコンフィギュレーションにより構成されたかを示すコンフィギュレーション番号ＣＮｏを書き込むようにする。
【００５４】
例えば、説明の簡単のため、図７に示すように、プログラマブル論理回路４００として、２次元に４×４個の論理セルが配列されたプログラマブル論理回路を想定する。そして、このプログラマブル論理回路の初期状態から、図７（Ａ）で点線で囲むエリアに機能回路がコンフィギュレーションされた場合には、論理セル状態メモリ３０の各論理セル状態格納部３１の論理セル状態データＳＴＤは、図７（Ｂ）のようになる。
【００５５】
すなわち、機能回路がコンフィギュレーションされたエリア内の論理セルの論理セル状態データＳＴＤのアクティブフラグＡＦは、アクティブ状態（プログラマブル論理回路４００上で回路が利用可能である状態）を示す「１」となり、また、コンフィギュレーション番号ＣＮｏは、１回目のコンフィギュレーションであることを表す［００００００１］となる。一方、機能回路がコンフィギュレーションされなかったエリア内の論理セルの論理セル状態データＳＴＤのアクティブフラグＡＦは、非アクティブ状態を示す「０」となり、また、コンフィギュレーション番号ＣＮｏは、いまだコンフィギュレーションされていないことを表す［０００００００］となる。
【００５６】
このような論理セル状態メモリ３０を備えることで、アプリケーションプログラム１００は、次に、プログラマブル論理回路４００上のどこに回路を構成すればよいかを判断する基礎資料を得ることができる。さらに、この実施の形態では、この論理セル状態メモリ３０の各論理セル状態格納部のデータＳＴＤの値のうちのコンフィギュレーション番号ＣＮｏと、アクティブフラグＡＦと、コンフィギュレーションした回路名とを関係づけた情報を、メインメモリ１３は記憶するようにする。アクティブフラグＡＦがアクティブ「１」になっている回路は、プログラマブル論理回路４００上で利用可能であることが分かる。
【００５７】
なお、論理セル状態メモリ３０に必要なメモリ容量は、論理セル状態データＳＴＤが、上述の例のように、論理セル１個に対して１バイトとすると、６４セル×６４セル程度のプログラマブル論理回路では４ｋバイト程度、１２８セル×１２８セル程度のプログラマブル論理回路でも１６ｋバイト程度となり、比較的小さいメモリ消費で済むものである。
【００５８】
次に、この実施の形態の情報処理システムにおけるアプリケーション処理の例を、図８〜図１１を用いて説明する。
【００５９】
図８に示すように、アプリケーションプログラムが起動されると、前処理としてプログラムの先頭に書かれている、必要とされるハードウエアモジュールのリストの読み込みや、変数の設定などが行われる（ステップＳ１０１）。
【００６０】
次に、メインの処理となり、ハードウエアモジュールとソフトウエアモジュールのいずれかが用いられて各処理ルーチンが実行される。すなわち、各処理ルーチンの実行前には、そのルーチンをＣＰＵ５００によるソフトウエア処理を行うか、プログラマブル論理回路４００上に専用ハードウエアを実装して、そこでハードウエア処理を行うかを判断する（ステップＳ１０２）。
【００６１】
この判断は、前述もしたように、実行モジュール決定手段６００により行うようにするが、アプリケーションプログラム１００で指定されていてもよいし、実行時に、既にソフトウエアが他のＣＰＵにより実行されていて、ソフトウエア処理では時間がかかると予測してハードウエア処理に切り換えるようにしてもかまわない。
【００６２】
ステップＳ１０２において、ソフトウエア処理が選ばれた場合は、ＣＰＵ５００によりソフトウエア処理が行われる（ステップＳ１０３）。ハードウエア処理が選ばれた場合は、アプリケーションプログラム５００は、プログラマブル論理回路４００上に専用ハードウエアを実装して、処理すべきデータや制御変数などの必要なパラメータをプログラマブル論理回路４００に渡し、ハードウエア処理を行った後、その結果を、このプログラマブル論理回路４００から受け取る（ステップＳ１０４）。
【００６３】
一つの処理ルーチンでの処理が終了すると、次の処理ルーチンへ移るか、あるいは次の処理ルーチンが無ければ、このアプリケーションプログラムを終了する（ステップＳ１０５）。
【００６４】
次に、ステップＳ１０３で実行されるハードウエア処理について説明する。図１０およびその続きである図１１に、このハードウエア処理の詳細なフローチャートを示す。
【００６５】
ハードウエア処理が開始されると、必要とされる回路がプログラマブル論理回路４００上にあるかを否かを、メインメモリ１３の参照情報を用いて調べる（ステップＳ１１１）。必要とされる回路がプログラマブル論理回路４００上にあるか否かは、前述したように、メインメモリ１３には、コンフィギュレーションした回路名と、論理セル状態メモリ３０の状態データＳＴＤであるコンフィギュレーション番号ＣＮｏおよびアクティブフラグＡＦとを関連付けて記憶してあるので、容易に判断可能である。すなわち、具体的には、論理セル状態メモリ３０の状態データＳＴＤのアクティブフラグＡＦがアクティブ状態になっている回路の回路名をメインメモリ１３において検索し、それが、これから処理を行おうとするハードウエアの回路名と一致するか否かにより判別する。
【００６６】
ステップＳ１１１での判別の結果、プログラマブル論理回路４００上に必要な回路が存在していると判別されたときには、コンフィギュレーションを行わずに、その回路で処理を行う（ステップＳ１２３）。また、必要な回路がプログラマブル論理回路４００上に存在していなければ、回路をプログラマブル論理回路４００上に構成するために、次のステップＳ１１２へ進み、回路情報をハードディスクドライブ１８やネットワーク２０を通じて記憶装置２１から入手する。
【００６７】
次に、今回のコンフィギュレーションが、何回目のコンフィギュレーションかを確認する変数ｄを初期化する（ステップＳ１１３）。次に、メインメモリ１３の論理セル状態メモリ３０の論理セル状態データＳＴＤを参照して、プログラマブル論理回路４００上のコンフィギュレーション可能な空き領域を確認する。
【００６８】
具体的には、各論理セルに対応するメモリ空間に書かれているコンフィギュレーション番号ＣＮｏが、変数ｄ以下の論理セルの占める領域を確認する（ステップＳ１１４）。最初は、変数ｄ＝０なので、コンフィギュレーション番号ＣＮｏ＝０の論理セルの占める領域を把握する。そして、この把握した領域の大きさと、これからコンフィギュレーションする回路の面積情報から求められる当該回路の占める領域と比較する（ステップＳ１１５）。この比較の結果、回路が構成できる領域が空いていないと判別されれば、変数ｄの値を増やして（ステップＳ１１６）、ステップＳ１１４に戻る。回路が構成できる領域が空いていると判別されれば、次のステップＳ１１７に進んで、回路の再配置の処理を行う。
【００６９】
このステップＳ１１７での回路の再配置の処理においては、プログラマブル論理回路４００の空き領域中の回路が構成できる場所を特定し、ハードディスクドライブ１８などの記憶装置に格納されている回路情報のなかのビットデータを、前記プログラマブル論理回路４００上の特定された領域に構成するような回路データに書き替える。または、回路情報のなかの設計ツールにおけるレイアウトデータを変更してビットデータを生成する。
【００７０】
次に、再配置されたビットデータを、ハードディスクドライブ１８などの記憶装置からプログラマブル論理回路４００のコンフィギュレーションメモリにロードする（ステップＳ１１８）。
【００７１】
そして、ロードしている間に、論理セル状態メモリ３０のコンフィギュレーションされる論理セルに対応する論理セル状態格納部３１に、現時点でのコンフィギュレーション番号ＣＮｏの最大値ＣＮｏmax に１を加えた値を書き込む（ステップＳ１１９）。そして、コンフィギュレーション番号の最大値ＣＮｏmax を更新する（ステップＳ１２０）。
【００７２】
そして、論理セル状態メモリ３０に記憶されている論理セル状態データＳＴＤのコンフィギュレーション番号ＣＮｏが変数ｄ以下である論理セルの状態データＳＴＤのアクティブフラグＡＦを「０」にリセットし（ステップＳ１２１）、それらのコンフィギュレーション番号の回路が、プログラマブル論理回路４００上の回路として利用不可の状態とする。また、コンフィギュレーションされた回路を構成する論理セルに対応する論理セル状態データＳＴＤのアクティブフラグＡＦを「１」にセットし（ステップＳ１２２）、プログラマブル論理回路４００上でその回路が利用可能であることを示すようにする。
【００７３】
プログラマブル論理回路４００のコンフィギュレーションが完了すると、プログラマブル論理回路４００に構成された当該回路で処理が行われ（ステップＳ１２３）、処理結果はアプリケーションプログラムに返す。以上のようにして、ハードウエア処理が実行される。
【００７４】
図１１は、コンフィギュレーションの回数と、メインメモリ１３の論理セル状態メモリ３０の領域の各論理セル状態格納部３１のデータＳＴＤの更新状態とを示す略図である。この図１１では、説明の簡単のため、プログラマブル論理回路４００の論理セル数は４×４＝１６としており、数値はコンフィギュレーション番号を示している。そして、論理セル状態格納部３１を示す正方形にハッチングがかかっているものは、アクティブフラグＡＦ＝１（アクティブ状態）となっているものを示し、ハッチングのかかっていないものは、アクティブフラグＡＦ＝０（非アクティブ状態）となっているものを示している。
【００７５】
なお、以下に説明する例では、回路は、空き領域があれば、その空き領域に左下詰めで配置し、空き領域がなければ、プログラマブル論理回路全体の左下詰めで配置することを原則とする。
【００７６】
図１１（Ａ）は、システムのリセット後などの初期状態を示しており、論理セル状態メモリ３０では、各論理セル状態格納部３１の状態データＳＴＤのコンフィギュレーション番号ＣＮｏは、ＣＮｏ＝０となっており、また、アクティブフラグＡＦも、ＡＦ＝０となっており、回路は、プログラマブル論理回路４００上のどこにも構成可能である。
【００７７】
図１１（Ｂ）は、１回目のコンフィギュレーションが行われた後の状態の例であり、この例では、破線で囲んだ領域３２に対応する縦×横＝２×４の論理セル領域に、回路ａが構成されている場合である。このコンフィギュレーションされた論理セルに対応する論理セル状態格納部３１のデータＳＴＤは、コンフィギュレーション番号ＣＮｏがＣＮｏ＝１、アクティブフラグＡＦがＡＦ＝１と、更新される。
【００７８】
この時点では、プログラマブル論理回路４００上の空き領域は、縦×横＝２×４の論理セル領域であるので、次に構成される回路は、２×４の領域より小さい回路ならば、コンフィギュレーション番号ＣＮｏがＣＮｏ＝０である論理セルの領域に構成され、この領域よりも大きい回路であるときには、回路ａの領域も再構成領域となる。すなわち、コンフィギュレーション番号ＣＮｏが、ＣＮｏ＝０と、ＣＮｏ＝１の領域が、再構成対象領域となる。
【００７９】
この状態から、縦×横＝２×２の論理セル領域を占める回路ｂをコンフィギュレーションしようとする場合には、この２回目のコンフィギュレーション回路ｂが、図１１（Ｂ）に示した、コンフィギュレーション番号ＣＮｏ＝０の論理セル領域より小さいので、空き領域の中で左下に配置することが原則であることを考慮すると、回路ｂは、図１１（Ｃ）に示すように、回路ａの領域３２の上方の破線の領域３３に配置される。
【００８０】
この領域３３の論理セル状態格納部３１の状態データＳＴＤとしては、そのコンフィギュレーション番号ＣＮｏ＝２、アクティブフラグＡＦ＝１が書き込まれる。この時点では、プログラマブル論理回路４００上では、回路ａと、回路ｂとが、ともに動作可能である。
【００８１】
そして、この時点では、次に構成される回路は、２×２の領域より小さい回路ならば、コンフィギュレーション番号ＣＮｏがＣＮｏ＝０である論理セルの領域に構成され、この領域よりも大きい回路であるときには、回路ａ、回路ｂの領域も再構成領域となる。すなわち、コンフィギュレーション番号ＣＮｏが、ＣＮｏ＝０と、ＣＮｏ＝１と、ＣＮｏ＝２の領域が、再構成対象領域となる。
【００８２】
また、もしも、２回目のコンフィギュレーション回路が、縦×横＝４×２の論理セル領域を占める回路ｃであって、図１１（Ｂ）に示したコンフィギュレーション番号ＣＮｏ＝０の論理セル領域より大きい場合には、次のようにして再構成領域を決定する。
【００８３】
すなわち、コンフィギュレーション番号ＣＮｏ＝０の論理セル領域とコンフィギュレーション番号ＣＮｏ＝１の論理セル領域とを合わせた領域と、回路ｃとの大きさを比較する。すると、回路ｃは、前記合わせた領域より小さいので、左下詰めが原則であることから、図１１（Ｄ）で破線で囲んだ領域３４に回路ｃが配置されることになる。この時点では、回路ａは動作不能となり、回路ｃのみが動作可能である。
【００８４】
次に、図６（Ｃ）に示す状態の後、さらに、３回目のコンフィギュレーションとして、縦×横＝２×３の論理セル領域を占める回路ｄを構成する場合を考える。この場合には、回路ｄは、図１１（Ｃ）に示したコンフィギュレーション番号ＣＮｏ＝０の論理セル領域より大きいので、次に、コンフィギュレーション番号ＣＮｏ＝０とＣＮｏ＝１の論理セル領域を合わせた領域と、回路ｄの大きさとを比較する。すると、回路ｄは、この合わせた領域より小さいので、図１１（Ｅ）に示すように、左下詰めが原則であることから、回路ａが元々配置されていた領域の一部である破線の領域３５に配置されるようにされる。
【００８５】
そして、この領域３５の論理セルの論理セル状態データＳＴＤとしては、コンフィギュレーション番号ＣＮｏ＝３、アクティブフラグＡＦ＝１が書き込まれる。また、コンフィギュレーション番号ＣＮｏ＝１であった論理セルで、回路が構成されなかった領域の論理セルの論理セル状態データＳＴＤは、そのうちのアクティブフラグＡＦがＡＦ＝０に書き替えられる。したがって、プログラマブル論理回路４００上において、この時点で動作可能な回路は、回路ｂと回路ｃに変わる。
【００８６】
また、図１１（Ｃ）に示す状態の後の３回目のコンフィギュレーションとして、縦×横＝２×２の論理セル領域を占める回路ｅを構成する場合には、この回路ｅの大きさは、図１１（Ｃ）においてコンフィギュレーション番号ＣＮｏ＝０の空き領域と等しいので、図１１（Ｆ）に示すように、回路ｅは、この空き領域に一致する破線で示す領域３６に配置される。この例の場合には、プログラマブル論理回路４００上においては、この時点では、回路ａと、回路ｂと、回路ｃとのすべてが動作可能である。
【００８７】
さらに、図１１（Ｃ）に示す状態の後の３回目のコンフィギュレーションとして、縦×横＝３×３の論理セル領域を占める回路ｆを構成する場合を考える。この場合には、この回路ｆの大きさは、図１１（Ｃ）に示すコンフィギュレーション番号ＣＮｏ＝０の空き領域より大きく、また、コンフィギュレーション番号ＣＮｏ＝０の論理セル領域とＣＮｏ＝１の論理セル領域とを合わせた領域よりも大きい。そこで、さらに、コンフィギュレーション番号ＣＮｏ＝０の論理セル領域とＣＮｏ＝１の論理セル領域とＣＮｏ＝２の論理セル領域とを合わせた領域と、回路ｆの大きさとを比較する。すると、回路ｆは、この３つの領域を合わせた領域より小さいので、回路ｆは、図１１（Ｇ）に示すように、この領域の左下に合わせて配置される。この時点では、プログラマブル論理回路４００上においては、回路ｃのみが動作可能である。
【００８８】
以上のようにして、メインメモリ１３の論理セル状態メモリ３０の各論理セル状態格納部３１の状態データＳＴＤが、コンフィギュレーションが行われるごとに更新される。
【００８９】
そして、上述したように、この論理セル状態メモリ３０の各論理セル状態格納部３１の状態データＳＴＤのアクティブフラグＡＦを参照することにより、プログラマブル論理回路４００上で、その時に動作可能である回路が把握できる。
【００９０】
また、論理セル状態メモリ３０の各論理セル状態格納部３１の状態データＳＴＤのコンフィギュレーション番号を参照することにより、空き領域の確認も容易にできるとともに、新たな回路をコンフィギュレーションするときにも、効率良く、その新たな回路の構成領域を定めることができる。
【００９１】
この実施の形態においては、コンフィギュレーション番号ＣＮｏは、７ビットなので、０から１２７までしか番号付けができない。そのため、この実施の形態では、コンフィギュレーション番号ＣＮｏが１２７になった時点で、図１２に示すようなメモリフル状態のコンフィギュレーション番号変換ルーチンを実行する。
【００９２】
すなわち、図１２に示すように、まず、メインメモリ１３の論理セル状態メモリ領域３０の最初の論理セル状態格納部３１に格納されている状態データＳＴＤをチェックし（ステップＳ１３１）、そのアクティブフラグＡＦが０であるかどうかを調べる（ステップＳ１３２）。
【００９３】
アクティブフラグＡＦ＝０であれば、その論理セル状態データＳＴＤのコンフィギュレーション番号ＣＮｏの値を０とする（ステップＳ１３３）。また、アクティブフラグＡＦ＝１であれば、その論理セル状態データＳＴＤのコンフィギュレーション番号ＣＮｏの値によって、順次ｎ＝１から分類していく（ステップＳ１３４）。以上の処理を全論理セルに対して行う（ステップＳ１３５およびＳ１３６）。
【００９４】
ここまでの処理を、論理セル状態メモリ領域３０の概略図である図１３を用いて説明すると、次のようになる。すなわち、図１３（Ａ）において、アクティブフラグＡＦ＝０であるコンフィギュレーション番号ＣＮｏ＝１２１である論理セルおよびコンフィギュレーション番号ＣＮｏ＝１２３である論理セルに対応するデータＳＴＤのコンフィギュレーション番号ＣＮｏは、図１３（Ｂ）に示すように、ＣＮｏ＝０に変換される。
【００９５】
また、アクティブフラグＡＦ＝１であるコンフィギュレーション番号ＣＮｏ＝１２６の論理セルは、分類としてｎ＝Ｎ１に、同様に、アクティブフラグＡＦ＝１であるコンフィギュレーション番号ＣＮｏ＝１２７の論理セルは、分類としてｎ＝Ｎ２に対応づけられる。
【００９６】
次に、分類された集合｛Ｎ１，Ｎ２，…，Ｎｎ｝に対し、分類したときのコンフィギュレーション番号ＣＮｏの値によって、小さいもの順になるように、ソーティングする（ステップＳ１３７）。図１３の例では、集合｛Ｎ１，Ｎ２｝に対して、Ｎ１がＣＮｏ＝１２６、Ｎ２がＣＮｏ＝１２７なので、｛Ｎ１，Ｎ２｝のままである。
【００９７】
次に、ソートした結果の集合に対し、最も小さいものがＣＮｏ＝１、次がＣＮｏ＝２というように、順に小さいものからコンフィギュレーション番号ＣＮｏの値を書き替える（ステップＳ１３８）。図１３の例では、Ｎ１に対応する論理セルの状態データＳＴＤのコンフィギュレーション番号ＣＮｏがＣＮｏ＝１、Ｎ２に対応する論理セルの状態データＳＴＤのコンフィギュレーション番号ＣＮｏがＣＮｏ＝２と書き替えられる。
【００９８】
そして、最後に、書き換え後のコンフィギュレーション番号の最大値を、コンフィギュレーション番号の最大値ＣＮｏmax の値として（ステップＳ１３９）、このコンフィギュレーション番号変換ルーチンを終了する。
【００９９】
なお、コンフィギュレーション番号ＣＮｏが１２７になり、そのハードウエア処理が完了した時点で、プログラマブル論理回路４００のコンフィギュレーションメモリをリセットすると、アプリケーションプログラムは単純化される。
【０１００】
また、コンフィギュレーション番号ＣＮｏが、ある番号になった時点でプログラマブル論理回路４００のコンフィギュレーションメモリをリセットするようにすれば、何回ものコンフィギュレーションにより残されてしまう回路の断片による動作回路への影響を無くすことも可能である。
【０１０１】
また、アプリケーションによっては、プログラマブル論理回路上の論理セルの状態を記憶しておく論理セル状態メモリ空間の、論理セル１個に対してのメモリ量を増減することもできる。例えば、プログラマブル論理回路上でのコンフィギュレーションの回数が少ないアプリケーションでは、状態データＳＴＤの割り当てビット数を少なく、コンフィギュレーションの回数が多いアプリケーションでは、状態データの割り当てビット数を多くするとよい。
【０１０２】
例えば、プログラマブル論理回路上でのコンフィギュレーションの回数が少ないアプリケーションにおいて、論理セル１個に対して状態データＳＴＤに、例えば４ビットを割り当てると、コンフィギュレーション番号は０から７までしか利用できないが、１２８セル×１２８セルのプログラマブル論理回路で８ｋバイト程度の少ないメモリ消費で済むというメリットがある。
【０１０３】
【発明の効果】
以上説明したように、この発明によれば、動作中に回路構成を部分的に再構成することができるプログラマブル論理回路装置を用いた情報処理システムにおいて、複数の回路を空間的および時間的に再構成して利用する場合に、論理セル状態メモリに、プログラマブル論理回路上の各論理セルの状態を反映する情報を記憶させておくことにより、プログラマブル論理回路上の資源を効率的に利用することが可能となるようなコンフィギュレーションを行うことができる。
【０１０４】
そして、一旦構成され、処理を実行した回路で、まだプログラマブル論理回路上に残っているものは、必要ならばコンフィギュレーションしないでそのまま利用することが可能なので、コンフィギュレーションにかかる時間がなくなり、処理時間の短縮につながる。
【０１０５】
また、プログラマブル論理回路にコンフィギュレーションされる回数をカウントし、ある特定の回数においてコンフィギュレーションメモリをリセットすることにより、何回ものコンフィギュレーションにより残されてしまう回路の断片による動作回路への影響を無くすことが可能である。
【図面の簡単な説明】
【図１】この発明による情報処理システムの実施の形態の論理セル状態メモリを説明するための図である。
【図２】この発明による情報処理システムの実施の形態の構成の概要を説明するための機能ブロック図である。
【図３】この発明による情報処理システムの実施の形態の概要を説明するに使用する図である。
【図４】この発明による情報処理システムの実施の形態において、プログラマブル論理回路にコンフィギュレーションする回路情報の例を示す図である。
【図５】この発明による情報処理システムの実施の形態のハードウエア構成例を示すブロック図である。
【図６】この発明による情報処理システムの実施の形態に用いるプログラマブル論理回路の一例を示す図である。
【図７】この発明による情報処理システムの実施の形態におけるプログラマブル論理回路上の論理セルの状態と、論理セル状態メモリの内容との対応を説明するための図である。
【図８】この発明による情報処理システムの実施の形態における処理の概要を説明するためのフローチャートである。
【図９】この発明による情報処理システムの実施の形態における処理の要部を説明するためのフローチャートの一部を示す図である。
【図１０】この発明による情報処理システムの実施の形態における処理の要部を説明するためのフローチャートの続きを示す図である。
【図１１】この発明による情報処理システムの実施の形態において複数回のコンフィギュレーションを行った場合の論理セル状態メモリのデータ更新を説明するための図である。
【図１２】この発明による情報処理システムの実施の形態において、論理セル状態メモリのコンフィギュレーション番号変換処理を説明するためフローチャートである。
【図１３】図１２の論理セル状態メモリのコンフィギュレーション番号変換処理を説明するための図である。
【図１４】従来のプログラマブル論理回路へのコンフィギュレーションの方法を説明するための図である。
【符号の説明】
１０  情報処理システム
１１  ＣＰＵ
１３  メインメモリ
１８  ハードディスクドライブ
２０  ネットワーク
３０  論理セル状態メモリ
３１  論理セル状態格納部
４００  プログラマブル論理回路
４０１  論理セル
４０２  配線領域
ＳＴＤ  論理セル状態データ
ＣＮｏ  コンフィギュレーション番号
ＡＦ  アクティブフラグ
【図１】
0003636277.tif 000002
【図２】
0003636277.tif 000003
【図３】
0003636277.tif 000004
【図４】
0003636277.tif 000005
【図５】
0003636277.tif 000006
【図６】
0003636277.tif 000007
【図７】
0003636277.tif 000008
【図８】
0003636277.tif 000009
【図９】
0003636277.tif 000010
【図１０】
0003636277.tif 000011
【図１１】
0003636277.tif 000012
【図１２】
0003636277.tif 000013
【図１３】
0003636277.tif 000014
【図１４】
0003636277.tif 000015