(57)【特許請求の範囲】
【請求項１】
自己に供給された第１のプログラムモジュールをメモリにロードするロード手段と、
複数の論理回路を含み、前記ロード手段によってメモリにロードされた前記第１のプログラムモジュール中の命令に従った信号を前記複数の論理回路の１以上に入力することで、ロードされた当該第１のプログラムモジュールに応じた演算を実行する論理演算手段と、
前記論理演算手段の内部状態を退避する退避手段と、
所定の条件が成立した場合に、自己に着脱可能に接続された外部の他の演算システムに第２のプログラムモジュールをロードさせ、当該他の演算システムが当該第２のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第１のプログラムモジュールに応じた演算の実行に復帰させる制御手段と
を備えることを特徴とする演算システム。
【請求項２】
複数のプログラムモジュールからなるプログラムを記憶し、当該プログラムモジュールを前記ロード手段に供給するプログラム記憶手段を備える
ことを特徴とする請求項１に記載の演算システム。
【請求項３】
前記第１のプログラムモジュールは、前記第２のプログラムモジュールを呼び出す機能を含み、
前記論理演算手段が演算を実行している前記第１のプログラムモジュール中の命令における前記第２のプログラムモジュールの呼び出しを検出する呼び出し検出手段をさらに備え、
前記制御手段は、前記呼び出し検出手段が前記第２のプログラムモジュールの呼び出しを検出した場合に、第２のプログラムモジュールを外部の他の演算システムにロードさせ、当該他の演算システムが当該第２のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第１のプログラムモジュールに応じた演算の実行に復帰させる
ことを特徴とする請求項１又は２に記載の演算システム。
【請求項４】
前記プログラム記憶手段に記憶された各プログラムモジュール中の命令は、前記論理演算手段を構成する論理回路に入力する信号に応じたコードによって構成されている
ことを特徴とする請求項２に記載の演算システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムの実行をハードウェアで直接的に実現できる演算システムに関し、特に大規模プログラムの実行に適した演算システムに関する。
【０００２】
【従来の技術】
現在の汎用コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がメモリに記憶されたプログラム中の命令を順次解釈しながら、演算を進めていく。ＣＰＵは、プログラムで実行すべき演算をソフトウェアで実現するものであり、必ずしもその演算に対して最適なハードウェア構成となっていないため、最終的な演算結果を得るまでに多くのオーバーヘッドが存在する。
【０００３】
これに対して、プログラムの実行をハードウェアで直接的に実現するための技術として、例えば、特表平８−５０４２８５号公報（国際公開ＷＯ９４／１０６２７号公報）や特表２０００−５１６４１８号公報（国際公開ＷＯ９８／０８３０６号公報）に示されているような、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を利用した演算システムが知られている。
【０００４】
ＦＰＧＡは、プログラムとして論理データを与えることで論理回路間の結線論理を変更し、これによってハードウェア的に演算結果を得ることをできるようにしたものである。ＦＰＧＡを利用して演算を行うことによって、特定の演算専用に構成されたハードウェア回路ほどは高速ではないが、従来の汎用コンピュータのようなＣＰＵによる演算に比べると、非常に高速で演算結果を得ることができる。
【０００５】
【発明が解決しようとする課題】
ところで、現在の汎用コンピュータで実行されているプログラム、特に大規模なプログラムは、複数のモジュールに分割して作成されている。そして、１のプログラムモジュールが他のプログラムモジュールを呼び出しながら、全体としてのプログラムの実行を進めていくようになっている。こうしてプログラムモジュール別に開発を進めたり、各プログラムモジュールを部品として利用したりすることにより、プログラムの開発期間を短縮することができる。
【０００６】
しかしながら、上記した従来のＦＰＧＡを用いた演算システムでは、ハードウェアとしてのモジュール分割は考えられていても、ソフトウェアとしてのモジュール分割は考えられていなかった。つまり、ソフトウェアとして１のプログラムモジュールから他のプログラムモジュールを呼び出し、呼び出したプログラムモジュールの実行を終了した後、元のプログラムモジュールに復帰するというように、複数のプログラムモジュールを適時実行していくことにより大規模プログラムの実行を可能とする仕組みは考えられていなかった。
【０００７】
このため、従来のＦＰＧＡを用いた演算システムで実行可能なプログラムは、実質的に１のみのモジュールで作成されたプログラムでなくてはならないという制約があった。つまり、大規模プログラムの実行が事実上不可能で、その適用範囲は限られるという問題があった。
【０００８】
本発明は、上記した従来技術の問題点を解消するためになされたものであり、汎用のＣＰＵを用いることなく、複数のプログラムモジュールからなる大規模プログラムの実行をハードウェアで直接的に実現した演算システムを提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明に係る演算システムは、
自己に供給された第１のプログラムモジュールをメモリにロードするロード手段と、
複数の論理回路を含み、前記ロード手段によってメモリにロードされた前記第１のプログラムモジュール中の命令に従った信号を前記複数の論理回路の１以上に入力することで、ロードされた当該第１のプログラムモジュールに応じた演算を実行する論理演算手段と、
前記論理演算手段の内部状態を退避する退避手段と、
所定の条件が成立した場合に、自己に着脱可能に接続された外部の他の演算システムに第２のプログラムモジュールをロードさせ、当該他の演算システムが当該第２のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第１のプログラムモジュールに応じた演算の実行に復帰させる制御手段と
を備えることを特徴とする。
【００１７】
上記演算システムは、第２のプログラムモジュールが表す演算へと処理を切り替えるときに、外部の他の演算システムに第２のプログラムモジュールをロードさせる構成を備えている。このため、複数のプログラムモジュールからなる大規模なプログラムも、単一の演算システムでは短時間で完了できない演算や、並列処理を要する演算も、ハードウェア的に高速に実行していくことができる。また、３個以上の演算システムを連鎖的に接続することも可能であるから、演算の手順を柔軟に構成することが可能である。
【００１８】
上記演算システムは、たとえば、複数のプログラムモジュールからなるプログラムを記憶し、当該プログラムモジュールを前記ロード手段に供給するプログラム記憶手段を備えることにより、ロード手段にロードさせるプログラムモジュールを確保する。
【００１９】
上記演算システムにおいて、
前記第１のプログラムモジュールは、前記第２のプログラムモジュールを呼び出す機能を含むものであってもよい。
この場合において、上記演算システムは、
前記論理演算手段が演算を実行している前記第１のプログラムモジュール中の命令における前記第２のプログラムモジュールの呼び出しを検出する呼び出し検出手段をさらに備えるものとすることができ、
前記制御手段は、前記呼び出し検出手段が前記第２のプログラムモジュールの呼び出しを検出した場合に、第２のプログラムモジュールを外部の他の演算システムにロードさせ、当該他の演算システムが当該第２のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第１のプログラムモジュールに応じた演算の実行に復帰させるものとすることができる。
【００２０】
上記演算システムにおいて、
前記プログラム記憶手段に記憶された各プログラムモジュール中の命令は、前記論理演算手段を構成する論理回路に入力する信号に応じたコードによって構成れたものであってもよい。
【００２１】
なお、各プログラムモジュール中の命令を構成するコードは、ハードウェア記述が可能な言語で記述されたソースプログラムをコンパイルすることによって得ることができる。この場合、モジュール別にソースプログラムを開発したり、モジュールの部品としての利用が可能となり、プログラムの開発期間を短縮することが可能となる。
【００２２】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【００２３】
図１は、この実施の形態にかかる演算システムの構成を示すブロック図である。図示するように、この演算システム１は、ＦＰＧＡデータ記憶部２と、ローダ３と、ＦＰＧＡデバイス４とから構成されている。ＦＰＧＡデータ記憶部２には、複数のモジュールに分かれたＦＰＧＡデータモジュール２１〜２ｎを記憶している。
【００２４】
ＦＰＧＡデータモジュール２１〜２ｎは、それぞれハードウェア記述が可能なプログラム言語で記述されている複数のモジュールに分かれたソースプログラム５１〜５ｎを、ＦＰＧＡデバイス４の論理記述を行うべくコンパイラ６がコンパイルしたモジュール毎のデータである。ソースプログラム５１〜５ｎのうちの少なくとも１のモジュールは、他のモジュールのソースプログラム５１〜５ｎを呼び出す機能を含んでおり、ＦＰＧＡデータモジュール２１〜２ｎには、他のモジュールの呼び出しのためのデータも含まれている。
【００２５】
ローダ３は、論理回路等より構成されており、ＦＰＧＡデータ記憶部２に記憶されたＦＰＧＡデータモジュール２１〜２ｎをモジュール単位でＦＰＧＡデバイス４に適時ロードする。ローダ３によるＦＰＧＡデータモジュール２１〜２ｎのロードの指示は、演算の実行の開始時に外部から与えられる他、ＦＰＧＡデバイス４による演算の実行によっても与えられる。
【００２６】
ＦＰＧＡデバイス４は、ローダ３によってロードされたＦＰＧＡデータモジュール２１〜２ｎに従って論理構成を行い、外部からの入力データに所定の演算を施して出力データとして出力するもので、ＦＰＧＡデータメモリ４１と、ゲートアレイ４２と、呼び出し検出部４３と、退避スタック４４と、引数受け渡し部４５と、制御部４６とを備えている。呼び出し検出部４３、退避スタック４４、引数受け渡し部４５及び制御部４６は、論理回路等より構成されている。
【００２７】
ＦＰＧＡデータメモリ４１は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）によって構成され、ローダ３がロードしたＦＰＧＡデータモジュールを記憶する。ゲートアレイ４２は、ＡＮＤ、ＯＲ、ＮＯＴなどの複数のゲート回路４２ａと、演算の途中結果を内部状態として保持している複数のフリップフロップ４２ｂとを含んでいる。各ゲート回路４２ａの出力論理は、ＦＰＧＡデータメモリ４１に記憶されたＦＰＧＡデータモジュールに従って変更される。また、各フリップフロップ４２ｂは、所望のデータを外部から書き込むことができるようになっている。
【００２８】
呼び出し検出部４３は、ＦＰＧＡデータメモリ４１に記憶されたＦＰＧＡデータモジュールに含まれる他のモジュールの呼び出しのためのデータを検出する。退避スタック４４は、呼び出し検出部４３によって他のモジュールの呼び出しのためのデータが検出されたとき、ゲートアレイ４２中のフリップフロップ４２ｂに保持されているデータと、呼び出し元のＦＰＧＡデータモジュールの識別データとを、先入れ後出し方式で退避するためのスタックである。
【００２９】
引数受け渡し部４５は、モジュールの呼び出し、復帰の際において呼び出し元と呼び出し先のＦＰＧＡデータモジュール間における引数の受け渡しを行うものである。より詳細に説明すると、呼び出しの際には、呼び出し元のＦＰＧＡデータモジュールに従った演算の途中結果としてフリップフロップ４２ｂの所定のものに保持されていたデータを、呼び出し先のＦＰＧＡデータモジュールに従った演算の入力（引数）として与える。復帰の際には、呼び出し先のＦＰＧＡデータモジュールに従った演算結果（戻り値）の出力データを、ゲートアレイ４２中のフリップフロップ４２ｂの所定のものに書き込む。
【００３０】
制御部４６は、呼び出し検出部４３が他のモジュールの呼び出しのためのデータを検出した場合、当該呼び出しのためのデータの前までのＦＰＧＡデータモジュールに従った演算の途中結果としてフリップフロップ４２ｂのそれぞれに保持されているデータと、呼び出し元のデータモジュールの識別データとを退避スタック４４に退避させると共に、呼び出し先のＦＰＧＡデータモジュールに従った演算で使用するデータを保持するフリップフロップ４２ｂのデータを、引数受け渡し部４５に一時保持させる。その後、呼び出し先のＦＰＧＡデータモジュールをローダ３にロードさせ、引数受け渡し部４５に一時保持したデータをゲートアレイ４２に入力データとして与える。
【００３１】
制御部４６は、また、呼び出されたＦＰＧＡデータモジュールに従った演算が終了したときに、その出力データを引数受け渡し部４５に一時保持させる。その後、退避スタック４４に退避された呼び出し元のデータモジュールの識別データに従ってローダ３にＦＰＧＡデータモジュールをロードさせ、退避スタック４４に退避されたデータをフリップフロップ４２ｂに復帰させると共に、引数受け渡し部４５に一時保持させたデータをフリップフロップ４２ｂの所定のものに書き込ませる。
【００３２】
なお、ＦＰＧＡデバイス４に外部から入力される入力データは、キーボードなどの入力装置から入力されるデータの他、磁気ディスク装置などの外部記憶装置から読み出されたデータであってもよい。また、ＦＰＧＡデバイス４から外部に出力される出力データは、ディスプレイ装置などの出力装置から出力する他、外部記憶装置に書き込むものであってもよく、さらに、周辺機器を制御するための制御データであってもよい。
【００３３】
以下、この実施の形態にかかる演算システムにおける動作について、具体的な例に基づいて説明する。ここでは、ＦＰＧＡデータモジュール２１が最初にロードされるものとし、ＦＰＧＡデータモジュール２１は、ＦＰＧＡデータモジュール２ｎを呼び出すものとする。
【００３４】
ＦＰＧＡデータモジュール２がＦＰＧＡデータメモリ４１にロードされると、これに従ったレベルの信号がゲート回路４２ａに入力され、ゲートアレイ４２を構成するゲート回路４２ａが論理構成される。そして、ゲートアレイ４２に外部からの入力データが入力されることによって、ＦＰＧＡデータモジュール２１に応じた演算がゲートアレイ４２において実行される。
【００３５】
一方、呼び出し検出部４３は、ＦＰＧＡデータメモリ４１にロードされたＦＰＧＡデータモジュール２１にＦＰＧＡデータモジュール２ｎを呼び出すためのデータが含まれていることを検出し、その旨を制御部４６に通知する。制御部４６は、その呼び出しにかかる部分の直前までの演算の途中結果としてフリップフロップ４２ｂに保持されているデータ（ゲートアレイ４２の内部状態）を、呼び出し元のＦＰＧＡデータモジュール２１を識別するためのデータと共に退避スタック４４の一番上に退避させる。また、フリップフロップ４２ｂに保持されているデータのうちで呼び出し先のＦＰＧＡデータモジュール２ｎに引数として渡すものを、引数受け渡し部４５に一時保存させる。
【００３６】
その後、制御部４６は、ローダ３を制御し、呼び出し先であるＦＰＧＡデータモジュール２ｎをＦＰＧＡデータメモリ４１にロードさせる。ＦＰＧＡデータモジュール２ｎがロードされると、これに従ったレベルの信号がゲート回路４２ａに入力され、ゲートアレイ４２を構成するゲート回路４２ａが論理構成される。また、引数受け渡し部４５に引数として一時保存されたデータが、入力データとしてゲートアレイ４２に入力され、ＦＰＧＡデータモジュール２ｎに応じた演算がゲートアレイ４２において実行される。
【００３７】
この演算が終了すると、制御部４６は、ゲートアレイ４２からの出力データを呼び出し元のＦＰＧＡデータモジュール２１に渡す引数として引数受け渡し部４５に一時保存させる。制御部４６は、さらに退避スタック４４の一番上に退避されたデータを参照することでローダ３を制御し、呼び出し元のＦＰＧＡデータモジュール２１をＦＰＧＡデータメモリ４１に再びロードさせる。
【００３８】
呼び出し元のＦＰＧＡデータモジュール２１が再びロードされると、制御部４６は、退避スタック４４の一番上に退避されていた内部状態のデータをフリップフロップ４２ｂのそれぞれに書き戻し、ゲートアレイ４２の内部状態を復元させる。さらに、引数受け渡し部４５に引数として一時保存されていたデータをフリップフロップ４２ｂの所定のものに書き込む。この状態でゲートアレイ４２においてＦＰＧＡデータモジュール２１に従った演算が再開され、最終的な演算結果が出力データとして出力されることとなる。
【００３９】
なお、ＦＰＧＡデータモジュール２１から呼び出されたＦＰＧＡデータモジュール２ｎが、さらに他のＦＰＧＡデータモジュールを呼び出すものであっても演算を実行することができる。ＦＰＧＡデータモジュール２ｎがさらに他のモジュールを呼び出すことを呼び出し検出部４３が検出した場合にも、制御部４６は、上記と同じような制御を行うものとすればよい。
【００４０】
以上説明したように、この実施の形態にかかる演算システムでは、ゲートアレイ４２の内部状態（フリップフロップ４２ｂが保持するデータ）を退避スタック４４に退避した後に、ローダ３は、実行中のモジュールとは異なるＦＰＧＡデータモジュールをＦＰＧＡデータメモリ４１にロードするようにしている。また、退避スタック４４に退避した状態をゲートアレイ４２に復元してから元のモジュールに復帰することができるようになっている。このため、各ＦＰＧＡデータモジュールをＦＰＧＡデータメモリ４１に適時ロードしていくことによって、複数のモジュールからなる大規模なプログラムを、各モジュールに対応してゲート回路４２ａ間の論理構成を変化させてハードウェア的に実行することができ、従来のＣＰＵを用いた演算システムに比べて高速で演算を実行することができる。
【００４１】
また、ＦＰＧＡデータモジュール２１〜２ｎのうちの少なくとも１のモジュールが他のモジュールを呼び出すためのデータを含んでいるが、このような他のモジュールの呼び出しを含むＦＰＧＡデータモジュールがＦＰＧＡデータメモリ４１にロードされた場合に、これを呼び出し検出部４３が検出している。そして、この検出結果に基づいて、退避スタック４４へのゲートアレイ４２の内部状態（フリップフロップ４２ｂが保持するデータ）の退避、引数受け渡し部４５を介した引数の受け渡しを行っている。また、呼び出し先のモジュールに従った演算が終了したときに、退避スタック４４に退避した内部状態の復元、引数受け渡し部４５を介した呼び出し元のモジュールへの引数の受け渡しを行っている。このような仕組みを備えることによって、モジュールの呼び出しを含む大規模なプログラムをハードウェア的に実行することが可能となる。
【００４２】
また、呼び出し検出部４３が他のモジュールの呼び出しを検出したときに、ゲートアレイ４２の内部状態（フリップフロップ４２ｂが保持するデータ）を退避するのは、先入れ後出し方式の退避スタックである。このため、他のモジュールから呼び出されたモジュールがさらに他のモジュールを呼び出すようなプログラムを実行することもできる。さらに、実行中のモジュールが自身を呼び出す再帰型のプログラムを実行することもできる。
【００４３】
さらに、ＦＰＧＡデータモジュール２１〜２ｎは、モジュール分割されたソースプログラム５１〜５ｎをそれぞれコンパイラ６によってコンパイルしたものである。以上のような特徴を有することによって、この演算システムにおいて実行すべきプログラムは、モジュール別にソースプログラムの開発を進めたり、ソースプログラムの各モジュールを部品として利用したりすることが可能となり、その開発期間を短縮することができる。
【００４４】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【００４５】
上記の実施の形態では、ローダ３は、ＦＰＧＡデータ記憶部２に記憶されたいずれかのＦＰＧＡデータモジュール２１〜２ｎを、そのままＦＰＧＡデータメモリ４１にロードするものとしていた。これに対して、ＦＰＧＡデータモジュール２１〜２ｎがマクロを含み、ＦＰＧＡデータ記憶部２にマクロデータを記憶させておき、ローダ３がＦＰＧＡデータメモリ４１にロードする際に、マクロ展開をするものとしてもよい。
【００４６】
上記の実施の形態では、ソースプログラム５１〜５ｎをそれぞれコンパイルしたＦＰＧＡデータモジュール２１〜２ｎを、ＦＰＧＡデバイス４のＦＰＧＡデータメモリ４１に適時ロードしていくものとしていた。これに対して、ソースプログラム５１〜５ｎをそのままロードするようにした演算システムを構成することもできる。図２は、このような場合の演算システムの構成を示す。
【００４７】
この演算システムでは、ローダ３’は、制御部４６’からの指示に基づいて、プログラム記憶部５に記憶されたモジュール別のソースプログラム５１〜５ｎを適時メモリ４１’にロードする。インタプリタ４７は、メモリ４１’にロードされたソースプログラム中の命令を１命令ずつ順次解釈し、その解釈結果に従ってゲートアレイ４２’を構成するゲート回路４２ａに論理構成を行わせるべく所定の信号を出力する。解釈の結果、他のモジュールのソースプログラムを呼び出す命令であった場合には、その旨を制御部４６’に通知する。
【００４８】
制御部４６’は、他のモジュールの呼び出しが通知されると、ゲートアレイ４２’の内部状態（フリップフロップ４２ｂに保持されているデータ）と、呼び出し元のソースプログラムのモジュールを識別するためのデータと、次に実行をすべき命令を示すデータを退避スタック４４に退避すると共に、フリップフロップ４２ｂに保持されているデータのうち呼び出し先のモジュールに引数として渡すものを、引数受け渡し部４５に一時保存させる。そして、ローダ３’に呼び出し先のソースプログラム５１〜５ｎをロードさせ、引数受け渡し部４５に一時保存されたデータを入力データとしてゲートアレイ４２’に与える。
【００４９】
また、呼び出し先のソースプログラムに従った演算が終了すると、ゲートアレイ４２’からの出力データを呼び出し元のモジュールに渡す引数として引数受け渡し部４５に一時保存させる。そして、退避スタック４４に退避されたデータに従って呼び出し元のソースプログラムを再びメモリ４１’にロードさせ、退避スタック４４に退避された内部状態をフリップフロップ４２ｂに戻し、引数受け渡し部４５に一時保存された引数をフリップフロップ４２ｂのうちの所定のものに書き込ませる。そして、退避スタック４４に退避されたデータに基づいて呼び出し元のモジュールのソースプログラムに従った演算を再開させる。
【００５０】
なお、インタプリタ４７は、複数のゲート回路の組み合わせによるハードウェアで構成することができ、その出力によってゲートアレイ４２’に含まれるゲート回路４２ａの論理構成を、演算の実行速度にほとんど影響を与えることなく高速に行うことができる。また、ここでのゲートアレイ４２’は、ソースプログラム中の各命令を終了したときのデータをフリップフロップ４２ｂの所定のものに保持させることで、各命令を順次実行していくことができる。
【００５１】
以上のようにインタプリタ４７を含む構成とすることによって、ソースプログラム５１〜５ｎをモジュール別に順次ＦＰＧＡデバイス４’にロードしていくことが可能となる。このため、ＦＰＧＡデバイス４’の構成に合わせたコンパイラがなくても、複数のモジュールからなる大規模なプログラムに従った演算を、ハードウェア的に高速に行うことが可能となる。
【００５２】
また、この実施の形態の演算システムを互いに連結可能な構成として、並列処理や分岐処理を、互いに連結された複数の演算システムが分担して行うようにしてもよい。具体的には、この演算システムは、たとえば、図３に演算システム１Ａとして示す構成を有していてもよい。
【００５３】
図示するように、演算システム１Ａは、図１に示す演算システム１と実質的に同一の構成を備え、更に、補助演算制御部７を備えるものとする。
補助演算制御部７は論理回路等より構成されており、他の演算システム（たとえば、図１あるいは図３に示す構成を有する演算システム）のローダ３、ゲートアレイ４２及び引数受け渡し部４５に着脱可能に接続され、後述する動作を行う。
【００５４】
なお、複数の他の演算システムが演算システム１Ａに接続されてもよい。具体的には、たとえば図４に示すように、演算システム１Ｂ及び１Ｃのそれぞれのローダ３、ゲートアレイ４２及び変数引き渡し部４５が、演算システム１Ａの補助演算制御部７に接続されていてもよい。
なお、演算システム１Ｂ及び１Ｃは、たとえば、図１あるいは図３に示す構成と実質的に同一の構成を有したものであればよい。ただし、ＦＰＧＡデータ記憶部２を必ずしも備えていなくてもよい。
【００５５】
図３の演算システム１Ａは、図１の演算システム１と実質的に同一の動作を行う。そして、自己のＦＰＧＡデータメモリ４１にロードされたＦＰＧＡデータモジュールに、他の演算システムに実行させるべきＦＰＧＡデータモジュールを呼び出すデータが含まれていると、自己に接続された他の演算システムにこのＦＰＧＡデータモジュールをロードさせ、演算を行わせて、演算結果を取得する。
【００５６】
以下、演算システム１Ａが、図４の演算システム１Ｂ及び１Ｃに並列処理を行わせる動作を例として、演算システム１Ａが自己に接続された他の演算システムにＦＰＧＡデータモジュールをロードさせ、演算を行わせて演算結果を取得する動作を説明する。
なお、以下では、ＦＰＧＡデータモジュール２１が最初にロードされるものとし、ＦＰＧＡデータモジュール２１は、ＦＰＧＡデータモジュール２ｘを呼び出し、演算システム１Ａは、演算システム１Ｂ及び１ＣにＦＰＧＡデータモジュール２ｘをロードさせるものとする。
【００５７】
ＦＰＧＡデータモジュール２が演算システム１ＡのＦＰＧＡデータメモリ４１にロードされると、演算システム１Ａのゲート回路４２ａが論理構成される。そして、演算システム１Ａのゲートアレイ４２に外部からの入力データが入力されると、ＦＰＧＡデータモジュール２１に応じた演算が演算システム１Ａのゲートアレイ４２において実行される。
【００５８】
一方、演算システム１Ａの呼び出し検出部４３は、ＦＰＧＡデータメモリ４１にロードされたＦＰＧＡデータモジュール２１に、演算システム１Ｂ及び１ＣにロードさせるべきＦＰＧＡデータモジュール２ｘを呼び出すためのデータが含まれていることを検出し、その旨を制御部４６に通知する。
【００５９】
その後、演算システム１Ａの制御部４６は、演算システム１Ａのローダ３を制御し、呼び出し先であるＦＰＧＡデータモジュール２ｘを演算システム１ＡのＦＰＧＡデータメモリ４１にロードさせる。ＦＰＧＡデータモジュール２ｘがロードされると、演算システム１Ａのゲートアレイ４２は、このＦＰＧＡデータモジュール２ｘを取得する。そして、ＦＰＧＡデータモジュール２１に応じた処理の一環として、このＦＰＧＡデータモジュール２ｘを演算システム１Ａの補助演算制御部７に供給し、演算を停止する。
【００６０】
また、演算システム１Ａの制御部４６は、演算システム１Ａのフリップフロップ４２ｂに保持されているデータのうちでＦＰＧＡデータモジュール２ｘに引数として渡すデータ（演算システム１Ｂに供給するデータ、及び、演算システム１Ｃに供給するデータ）を、演算システム１Ａの補助演算制御部７に供給する。
【００６１】
演算システム１Ａの補助演算制御部７は、演算システム１Ｂ及び１Ｃのローダ３を制御し、ＦＰＧＡデータモジュール２ｘを、演算システム１Ｂ及び１ＣのＦＰＧＡデータメモリ４１にそれぞれロードさせる。この結果、演算システム１Ｂ及び１ＣにＦＰＧＡデータモジュール２ｘがロードされ、演算システム１Ｂ及び１Ｃのゲート回路４２ａが論理構成される。
【００６２】
次いで、演算システム１Ａの補助演算制御部７は、演算システム１Ａの制御部４６より引数として供給されたデータのうち、演算システム１Ｂに供給すべきものを、入力データとして演算システム１Ｂのゲートアレイ４２に入力し、演算システム１Ｃに供給すべきものを、入力データとして演算システム１Ｃのゲートアレイ４２に入力する。この結果、演算システム１Ｂ及び１Ｃのゲートアレイは、ＦＰＧＡデータモジュール２ｘに応じた演算を、各自に供給されたデータが表す引数が与えられたものとして実行する。
【００６３】
ＦＰＧＡデータモジュール２ｘに応じた演算が終了すると、演算システム１Ｂ（又は１Ｃ）の制御部４６は、演算システム１Ｂ（又は１Ｃ）のゲートアレイ４２からの出力データを、呼び出し元のＦＰＧＡデータモジュール２１に渡す引数として、演算システム１Ｂ（又は１Ｃ）の引数受け渡し部４５に一時保存させる。
【００６４】
演算システム１Ａの補助演算制御部７は、演算システム１Ｂ及び１Ｃの引数受け渡し部４５に出力データが一時保存されたことを検知し、これらの出力データを、演算システム１Ｂ及び１Ｃの引数受け渡し部４５より取得する。そして、取得した各出力データを、演算システム１Ａのフリップフロップ４２ｂの所定のものに書き込む。
この状態で、演算システム１Ａのゲートアレイ４２は、ＦＰＧＡデータモジュール２１に従った演算を再開する。この結果、最終的な演算結果が出力データとして出力される。
【００６５】
この発明の実施の形態の演算システムが図３に示す構成を有していれば、単一の演算システムでは短時間で完了できない演算や、並列処理を要する演算も、必要に応じて演算システムを追加することにより、短時間で完了させることが可能となる。
【００６６】
また、演算システム１Ａに接続される他の演算システムが図３に示す構成を有している場合、当該他の演算システムは、自己の補助演算制御部７に接続された演算システムにＦＰＧＡデータモジュールをロードさせ、演算を行わせて演算結果を取得することが可能である。従って演算の手順を柔軟に構成することが可能である。
【００６７】
なお、演算システム１Ａが自己に接続された他の演算システムにソースプログラムをロードさせ、演算を行わせて演算結果を取得するようにしてもよい。ただし、この場合、演算システム１Ａに接続される他の演算システムは、たとえば図２に示す構成を有しているものとする。
【００６８】
【発明の効果】
以上説明したように本発明によれば、複数のプログラムモジュールからなる大規模なプログラムであっても、各プログラムモジュールを適時メモリにロードしていく仕組みを有するので、該プログラムに応じた演算の実行をハードウェアで実現することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態にかかる演算システムの構成を示すブロック図である。
【図２】本発明の他の実施の形態にかかる演算システムの構成を示すブロック図である。
【図３】本発明の他の実施の形態にかかる演算システムの構成を示すブロック図である。
【図４】本発明の実施の形態にかかる演算システムが複数連結されて用いられる場合の構成を示すブロック図である。
【符号の説明】
１、１Ａ、１Ｂ、１Ｃ  演算システム
２  ＦＰＧＡデータ記憶部
３  ローダ
４  ＦＰＧＡデバイス
６  コンパイラ
７  補助演算制御部
２１〜２ｎ、２ｘ  ＦＰＧＡデータモジュール
４１  ＦＰＧＡデータメモリ
４２  ゲートアレイ
４２ａ  ゲート回路
４２ｂ  フリップフロップ
４３  呼び出し検出部
４４  退避スタック
４５  引数受け渡し部
４６  制御部
５１〜５ｎ  ソースプログラム
【図１】
0003561506.tif 000002
【図２】
0003561506.tif 000003
【図３】
0003561506.tif 000004
【図４】
0003561506.tif 000005