JP3561506B2 - 演算システム - Google Patents
演算システム Download PDFInfo
- Publication number
- JP3561506B2 JP3561506B2 JP2002060515A JP2002060515A JP3561506B2 JP 3561506 B2 JP3561506 B2 JP 3561506B2 JP 2002060515 A JP2002060515 A JP 2002060515A JP 2002060515 A JP2002060515 A JP 2002060515A JP 3561506 B2 JP3561506 B2 JP 3561506B2
- Authority
- JP
- Japan
- Prior art keywords
- module
- program module
- program
- data
- arithmetic system
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムの実行をハードウェアで直接的に実現できる演算システムに関し、特に大規模プログラムの実行に適した演算システムに関する。
【0002】
【従来の技術】
現在の汎用コンピュータは、CPU(Central Processing Unit)がメモリに記憶されたプログラム中の命令を順次解釈しながら、演算を進めていく。CPUは、プログラムで実行すべき演算をソフトウェアで実現するものであり、必ずしもその演算に対して最適なハードウェア構成となっていないため、最終的な演算結果を得るまでに多くのオーバーヘッドが存在する。
【0003】
これに対して、プログラムの実行をハードウェアで直接的に実現するための技術として、例えば、特表平8−504285号公報(国際公開WO94/10627号公報)や特表2000−516418号公報(国際公開WO98/08306号公報)に示されているような、フィールドプログラマブルゲートアレイ(FPGA)を利用した演算システムが知られている。
【0004】
FPGAは、プログラムとして論理データを与えることで論理回路間の結線論理を変更し、これによってハードウェア的に演算結果を得ることをできるようにしたものである。FPGAを利用して演算を行うことによって、特定の演算専用に構成されたハードウェア回路ほどは高速ではないが、従来の汎用コンピュータのようなCPUによる演算に比べると、非常に高速で演算結果を得ることができる。
【0005】
【発明が解決しようとする課題】
ところで、現在の汎用コンピュータで実行されているプログラム、特に大規模なプログラムは、複数のモジュールに分割して作成されている。そして、1のプログラムモジュールが他のプログラムモジュールを呼び出しながら、全体としてのプログラムの実行を進めていくようになっている。こうしてプログラムモジュール別に開発を進めたり、各プログラムモジュールを部品として利用したりすることにより、プログラムの開発期間を短縮することができる。
【0006】
しかしながら、上記した従来のFPGAを用いた演算システムでは、ハードウェアとしてのモジュール分割は考えられていても、ソフトウェアとしてのモジュール分割は考えられていなかった。つまり、ソフトウェアとして1のプログラムモジュールから他のプログラムモジュールを呼び出し、呼び出したプログラムモジュールの実行を終了した後、元のプログラムモジュールに復帰するというように、複数のプログラムモジュールを適時実行していくことにより大規模プログラムの実行を可能とする仕組みは考えられていなかった。
【0007】
このため、従来のFPGAを用いた演算システムで実行可能なプログラムは、実質的に1のみのモジュールで作成されたプログラムでなくてはならないという制約があった。つまり、大規模プログラムの実行が事実上不可能で、その適用範囲は限られるという問題があった。
【0008】
本発明は、上記した従来技術の問題点を解消するためになされたものであり、汎用のCPUを用いることなく、複数のプログラムモジュールからなる大規模プログラムの実行をハードウェアで直接的に実現した演算システムを提供することを目的とする。
【0016】
【課題を解決するための手段】
本発明に係る演算システムは、
自己に供給された第1のプログラムモジュールをメモリにロードするロード手段と、
複数の論理回路を含み、前記ロード手段によってメモリにロードされた前記第1のプログラムモジュール中の命令に従った信号を前記複数の論理回路の1以上に入力することで、ロードされた当該第1のプログラムモジュールに応じた演算を実行する論理演算手段と、
前記論理演算手段の内部状態を退避する退避手段と、
所定の条件が成立した場合に、自己に着脱可能に接続された外部の他の演算システムに第2のプログラムモジュールをロードさせ、当該他の演算システムが当該第2のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第1のプログラムモジュールに応じた演算の実行に復帰させる制御手段と
を備えることを特徴とする。
【0017】
上記演算システムは、第2のプログラムモジュールが表す演算へと処理を切り替えるときに、外部の他の演算システムに第2のプログラムモジュールをロードさせる構成を備えている。このため、複数のプログラムモジュールからなる大規模なプログラムも、単一の演算システムでは短時間で完了できない演算や、並列処理を要する演算も、ハードウェア的に高速に実行していくことができる。また、3個以上の演算システムを連鎖的に接続することも可能であるから、演算の手順を柔軟に構成することが可能である。
【0018】
上記演算システムは、たとえば、複数のプログラムモジュールからなるプログラムを記憶し、当該プログラムモジュールを前記ロード手段に供給するプログラム記憶手段を備えることにより、ロード手段にロードさせるプログラムモジュールを確保する。
【0019】
上記演算システムにおいて、
前記第1のプログラムモジュールは、前記第2のプログラムモジュールを呼び出す機能を含むものであってもよい。
この場合において、上記演算システムは、
前記論理演算手段が演算を実行している前記第1のプログラムモジュール中の命令における前記第2のプログラムモジュールの呼び出しを検出する呼び出し検出手段をさらに備えるものとすることができ、
前記制御手段は、前記呼び出し検出手段が前記第2のプログラムモジュールの呼び出しを検出した場合に、第2のプログラムモジュールを外部の他の演算システムにロードさせ、当該他の演算システムが当該第2のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第1のプログラムモジュールに応じた演算の実行に復帰させるものとすることができる。
【0020】
上記演算システムにおいて、
前記プログラム記憶手段に記憶された各プログラムモジュール中の命令は、前記論理演算手段を構成する論理回路に入力する信号に応じたコードによって構成れたものであってもよい。
【0021】
なお、各プログラムモジュール中の命令を構成するコードは、ハードウェア記述が可能な言語で記述されたソースプログラムをコンパイルすることによって得ることができる。この場合、モジュール別にソースプログラムを開発したり、モジュールの部品としての利用が可能となり、プログラムの開発期間を短縮することが可能となる。
【0022】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【0023】
図1は、この実施の形態にかかる演算システムの構成を示すブロック図である。図示するように、この演算システム1は、FPGAデータ記憶部2と、ローダ3と、FPGAデバイス4とから構成されている。FPGAデータ記憶部2には、複数のモジュールに分かれたFPGAデータモジュール21〜2nを記憶している。
【0024】
FPGAデータモジュール21〜2nは、それぞれハードウェア記述が可能なプログラム言語で記述されている複数のモジュールに分かれたソースプログラム51〜5nを、FPGAデバイス4の論理記述を行うべくコンパイラ6がコンパイルしたモジュール毎のデータである。ソースプログラム51〜5nのうちの少なくとも1のモジュールは、他のモジュールのソースプログラム51〜5nを呼び出す機能を含んでおり、FPGAデータモジュール21〜2nには、他のモジュールの呼び出しのためのデータも含まれている。
【0025】
ローダ3は、論理回路等より構成されており、FPGAデータ記憶部2に記憶されたFPGAデータモジュール21〜2nをモジュール単位でFPGAデバイス4に適時ロードする。ローダ3によるFPGAデータモジュール21〜2nのロードの指示は、演算の実行の開始時に外部から与えられる他、FPGAデバイス4による演算の実行によっても与えられる。
【0026】
FPGAデバイス4は、ローダ3によってロードされたFPGAデータモジュール21〜2nに従って論理構成を行い、外部からの入力データに所定の演算を施して出力データとして出力するもので、FPGAデータメモリ41と、ゲートアレイ42と、呼び出し検出部43と、退避スタック44と、引数受け渡し部45と、制御部46とを備えている。呼び出し検出部43、退避スタック44、引数受け渡し部45及び制御部46は、論理回路等より構成されている。
【0027】
FPGAデータメモリ41は、RAM(Random Access Memory)によって構成され、ローダ3がロードしたFPGAデータモジュールを記憶する。ゲートアレイ42は、AND、OR、NOTなどの複数のゲート回路42aと、演算の途中結果を内部状態として保持している複数のフリップフロップ42bとを含んでいる。各ゲート回路42aの出力論理は、FPGAデータメモリ41に記憶されたFPGAデータモジュールに従って変更される。また、各フリップフロップ42bは、所望のデータを外部から書き込むことができるようになっている。
【0028】
呼び出し検出部43は、FPGAデータメモリ41に記憶されたFPGAデータモジュールに含まれる他のモジュールの呼び出しのためのデータを検出する。退避スタック44は、呼び出し検出部43によって他のモジュールの呼び出しのためのデータが検出されたとき、ゲートアレイ42中のフリップフロップ42bに保持されているデータと、呼び出し元のFPGAデータモジュールの識別データとを、先入れ後出し方式で退避するためのスタックである。
【0029】
引数受け渡し部45は、モジュールの呼び出し、復帰の際において呼び出し元と呼び出し先のFPGAデータモジュール間における引数の受け渡しを行うものである。より詳細に説明すると、呼び出しの際には、呼び出し元のFPGAデータモジュールに従った演算の途中結果としてフリップフロップ42bの所定のものに保持されていたデータを、呼び出し先のFPGAデータモジュールに従った演算の入力(引数)として与える。復帰の際には、呼び出し先のFPGAデータモジュールに従った演算結果(戻り値)の出力データを、ゲートアレイ42中のフリップフロップ42bの所定のものに書き込む。
【0030】
制御部46は、呼び出し検出部43が他のモジュールの呼び出しのためのデータを検出した場合、当該呼び出しのためのデータの前までのFPGAデータモジュールに従った演算の途中結果としてフリップフロップ42bのそれぞれに保持されているデータと、呼び出し元のデータモジュールの識別データとを退避スタック44に退避させると共に、呼び出し先のFPGAデータモジュールに従った演算で使用するデータを保持するフリップフロップ42bのデータを、引数受け渡し部45に一時保持させる。その後、呼び出し先のFPGAデータモジュールをローダ3にロードさせ、引数受け渡し部45に一時保持したデータをゲートアレイ42に入力データとして与える。
【0031】
制御部46は、また、呼び出されたFPGAデータモジュールに従った演算が終了したときに、その出力データを引数受け渡し部45に一時保持させる。その後、退避スタック44に退避された呼び出し元のデータモジュールの識別データに従ってローダ3にFPGAデータモジュールをロードさせ、退避スタック44に退避されたデータをフリップフロップ42bに復帰させると共に、引数受け渡し部45に一時保持させたデータをフリップフロップ42bの所定のものに書き込ませる。
【0032】
なお、FPGAデバイス4に外部から入力される入力データは、キーボードなどの入力装置から入力されるデータの他、磁気ディスク装置などの外部記憶装置から読み出されたデータであってもよい。また、FPGAデバイス4から外部に出力される出力データは、ディスプレイ装置などの出力装置から出力する他、外部記憶装置に書き込むものであってもよく、さらに、周辺機器を制御するための制御データであってもよい。
【0033】
以下、この実施の形態にかかる演算システムにおける動作について、具体的な例に基づいて説明する。ここでは、FPGAデータモジュール21が最初にロードされるものとし、FPGAデータモジュール21は、FPGAデータモジュール2nを呼び出すものとする。
【0034】
FPGAデータモジュール2がFPGAデータメモリ41にロードされると、これに従ったレベルの信号がゲート回路42aに入力され、ゲートアレイ42を構成するゲート回路42aが論理構成される。そして、ゲートアレイ42に外部からの入力データが入力されることによって、FPGAデータモジュール21に応じた演算がゲートアレイ42において実行される。
【0035】
一方、呼び出し検出部43は、FPGAデータメモリ41にロードされたFPGAデータモジュール21にFPGAデータモジュール2nを呼び出すためのデータが含まれていることを検出し、その旨を制御部46に通知する。制御部46は、その呼び出しにかかる部分の直前までの演算の途中結果としてフリップフロップ42bに保持されているデータ(ゲートアレイ42の内部状態)を、呼び出し元のFPGAデータモジュール21を識別するためのデータと共に退避スタック44の一番上に退避させる。また、フリップフロップ42bに保持されているデータのうちで呼び出し先のFPGAデータモジュール2nに引数として渡すものを、引数受け渡し部45に一時保存させる。
【0036】
その後、制御部46は、ローダ3を制御し、呼び出し先であるFPGAデータモジュール2nをFPGAデータメモリ41にロードさせる。FPGAデータモジュール2nがロードされると、これに従ったレベルの信号がゲート回路42aに入力され、ゲートアレイ42を構成するゲート回路42aが論理構成される。また、引数受け渡し部45に引数として一時保存されたデータが、入力データとしてゲートアレイ42に入力され、FPGAデータモジュール2nに応じた演算がゲートアレイ42において実行される。
【0037】
この演算が終了すると、制御部46は、ゲートアレイ42からの出力データを呼び出し元のFPGAデータモジュール21に渡す引数として引数受け渡し部45に一時保存させる。制御部46は、さらに退避スタック44の一番上に退避されたデータを参照することでローダ3を制御し、呼び出し元のFPGAデータモジュール21をFPGAデータメモリ41に再びロードさせる。
【0038】
呼び出し元のFPGAデータモジュール21が再びロードされると、制御部46は、退避スタック44の一番上に退避されていた内部状態のデータをフリップフロップ42bのそれぞれに書き戻し、ゲートアレイ42の内部状態を復元させる。さらに、引数受け渡し部45に引数として一時保存されていたデータをフリップフロップ42bの所定のものに書き込む。この状態でゲートアレイ42においてFPGAデータモジュール21に従った演算が再開され、最終的な演算結果が出力データとして出力されることとなる。
【0039】
なお、FPGAデータモジュール21から呼び出されたFPGAデータモジュール2nが、さらに他のFPGAデータモジュールを呼び出すものであっても演算を実行することができる。FPGAデータモジュール2nがさらに他のモジュールを呼び出すことを呼び出し検出部43が検出した場合にも、制御部46は、上記と同じような制御を行うものとすればよい。
【0040】
以上説明したように、この実施の形態にかかる演算システムでは、ゲートアレイ42の内部状態(フリップフロップ42bが保持するデータ)を退避スタック44に退避した後に、ローダ3は、実行中のモジュールとは異なるFPGAデータモジュールをFPGAデータメモリ41にロードするようにしている。また、退避スタック44に退避した状態をゲートアレイ42に復元してから元のモジュールに復帰することができるようになっている。このため、各FPGAデータモジュールをFPGAデータメモリ41に適時ロードしていくことによって、複数のモジュールからなる大規模なプログラムを、各モジュールに対応してゲート回路42a間の論理構成を変化させてハードウェア的に実行することができ、従来のCPUを用いた演算システムに比べて高速で演算を実行することができる。
【0041】
また、FPGAデータモジュール21〜2nのうちの少なくとも1のモジュールが他のモジュールを呼び出すためのデータを含んでいるが、このような他のモジュールの呼び出しを含むFPGAデータモジュールがFPGAデータメモリ41にロードされた場合に、これを呼び出し検出部43が検出している。そして、この検出結果に基づいて、退避スタック44へのゲートアレイ42の内部状態(フリップフロップ42bが保持するデータ)の退避、引数受け渡し部45を介した引数の受け渡しを行っている。また、呼び出し先のモジュールに従った演算が終了したときに、退避スタック44に退避した内部状態の復元、引数受け渡し部45を介した呼び出し元のモジュールへの引数の受け渡しを行っている。このような仕組みを備えることによって、モジュールの呼び出しを含む大規模なプログラムをハードウェア的に実行することが可能となる。
【0042】
また、呼び出し検出部43が他のモジュールの呼び出しを検出したときに、ゲートアレイ42の内部状態(フリップフロップ42bが保持するデータ)を退避するのは、先入れ後出し方式の退避スタックである。このため、他のモジュールから呼び出されたモジュールがさらに他のモジュールを呼び出すようなプログラムを実行することもできる。さらに、実行中のモジュールが自身を呼び出す再帰型のプログラムを実行することもできる。
【0043】
さらに、FPGAデータモジュール21〜2nは、モジュール分割されたソースプログラム51〜5nをそれぞれコンパイラ6によってコンパイルしたものである。以上のような特徴を有することによって、この演算システムにおいて実行すべきプログラムは、モジュール別にソースプログラムの開発を進めたり、ソースプログラムの各モジュールを部品として利用したりすることが可能となり、その開発期間を短縮することができる。
【0044】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【0045】
上記の実施の形態では、ローダ3は、FPGAデータ記憶部2に記憶されたいずれかのFPGAデータモジュール21〜2nを、そのままFPGAデータメモリ41にロードするものとしていた。これに対して、FPGAデータモジュール21〜2nがマクロを含み、FPGAデータ記憶部2にマクロデータを記憶させておき、ローダ3がFPGAデータメモリ41にロードする際に、マクロ展開をするものとしてもよい。
【0046】
上記の実施の形態では、ソースプログラム51〜5nをそれぞれコンパイルしたFPGAデータモジュール21〜2nを、FPGAデバイス4のFPGAデータメモリ41に適時ロードしていくものとしていた。これに対して、ソースプログラム51〜5nをそのままロードするようにした演算システムを構成することもできる。図2は、このような場合の演算システムの構成を示す。
【0047】
この演算システムでは、ローダ3’は、制御部46’からの指示に基づいて、プログラム記憶部5に記憶されたモジュール別のソースプログラム51〜5nを適時メモリ41’にロードする。インタプリタ47は、メモリ41’にロードされたソースプログラム中の命令を1命令ずつ順次解釈し、その解釈結果に従ってゲートアレイ42’を構成するゲート回路42aに論理構成を行わせるべく所定の信号を出力する。解釈の結果、他のモジュールのソースプログラムを呼び出す命令であった場合には、その旨を制御部46’に通知する。
【0048】
制御部46’は、他のモジュールの呼び出しが通知されると、ゲートアレイ42’の内部状態(フリップフロップ42bに保持されているデータ)と、呼び出し元のソースプログラムのモジュールを識別するためのデータと、次に実行をすべき命令を示すデータを退避スタック44に退避すると共に、フリップフロップ42bに保持されているデータのうち呼び出し先のモジュールに引数として渡すものを、引数受け渡し部45に一時保存させる。そして、ローダ3’に呼び出し先のソースプログラム51〜5nをロードさせ、引数受け渡し部45に一時保存されたデータを入力データとしてゲートアレイ42’に与える。
【0049】
また、呼び出し先のソースプログラムに従った演算が終了すると、ゲートアレイ42’からの出力データを呼び出し元のモジュールに渡す引数として引数受け渡し部45に一時保存させる。そして、退避スタック44に退避されたデータに従って呼び出し元のソースプログラムを再びメモリ41’にロードさせ、退避スタック44に退避された内部状態をフリップフロップ42bに戻し、引数受け渡し部45に一時保存された引数をフリップフロップ42bのうちの所定のものに書き込ませる。そして、退避スタック44に退避されたデータに基づいて呼び出し元のモジュールのソースプログラムに従った演算を再開させる。
【0050】
なお、インタプリタ47は、複数のゲート回路の組み合わせによるハードウェアで構成することができ、その出力によってゲートアレイ42’に含まれるゲート回路42aの論理構成を、演算の実行速度にほとんど影響を与えることなく高速に行うことができる。また、ここでのゲートアレイ42’は、ソースプログラム中の各命令を終了したときのデータをフリップフロップ42bの所定のものに保持させることで、各命令を順次実行していくことができる。
【0051】
以上のようにインタプリタ47を含む構成とすることによって、ソースプログラム51〜5nをモジュール別に順次FPGAデバイス4’にロードしていくことが可能となる。このため、FPGAデバイス4’の構成に合わせたコンパイラがなくても、複数のモジュールからなる大規模なプログラムに従った演算を、ハードウェア的に高速に行うことが可能となる。
【0052】
また、この実施の形態の演算システムを互いに連結可能な構成として、並列処理や分岐処理を、互いに連結された複数の演算システムが分担して行うようにしてもよい。具体的には、この演算システムは、たとえば、図3に演算システム1Aとして示す構成を有していてもよい。
【0053】
図示するように、演算システム1Aは、図1に示す演算システム1と実質的に同一の構成を備え、更に、補助演算制御部7を備えるものとする。
補助演算制御部7は論理回路等より構成されており、他の演算システム(たとえば、図1あるいは図3に示す構成を有する演算システム)のローダ3、ゲートアレイ42及び引数受け渡し部45に着脱可能に接続され、後述する動作を行う。
【0054】
なお、複数の他の演算システムが演算システム1Aに接続されてもよい。具体的には、たとえば図4に示すように、演算システム1B及び1Cのそれぞれのローダ3、ゲートアレイ42及び変数引き渡し部45が、演算システム1Aの補助演算制御部7に接続されていてもよい。
なお、演算システム1B及び1Cは、たとえば、図1あるいは図3に示す構成と実質的に同一の構成を有したものであればよい。ただし、FPGAデータ記憶部2を必ずしも備えていなくてもよい。
【0055】
図3の演算システム1Aは、図1の演算システム1と実質的に同一の動作を行う。そして、自己のFPGAデータメモリ41にロードされたFPGAデータモジュールに、他の演算システムに実行させるべきFPGAデータモジュールを呼び出すデータが含まれていると、自己に接続された他の演算システムにこのFPGAデータモジュールをロードさせ、演算を行わせて、演算結果を取得する。
【0056】
以下、演算システム1Aが、図4の演算システム1B及び1Cに並列処理を行わせる動作を例として、演算システム1Aが自己に接続された他の演算システムにFPGAデータモジュールをロードさせ、演算を行わせて演算結果を取得する動作を説明する。
なお、以下では、FPGAデータモジュール21が最初にロードされるものとし、FPGAデータモジュール21は、FPGAデータモジュール2xを呼び出し、演算システム1Aは、演算システム1B及び1CにFPGAデータモジュール2xをロードさせるものとする。
【0057】
FPGAデータモジュール2が演算システム1AのFPGAデータメモリ41にロードされると、演算システム1Aのゲート回路42aが論理構成される。そして、演算システム1Aのゲートアレイ42に外部からの入力データが入力されると、FPGAデータモジュール21に応じた演算が演算システム1Aのゲートアレイ42において実行される。
【0058】
一方、演算システム1Aの呼び出し検出部43は、FPGAデータメモリ41にロードされたFPGAデータモジュール21に、演算システム1B及び1CにロードさせるべきFPGAデータモジュール2xを呼び出すためのデータが含まれていることを検出し、その旨を制御部46に通知する。
【0059】
その後、演算システム1Aの制御部46は、演算システム1Aのローダ3を制御し、呼び出し先であるFPGAデータモジュール2xを演算システム1AのFPGAデータメモリ41にロードさせる。FPGAデータモジュール2xがロードされると、演算システム1Aのゲートアレイ42は、このFPGAデータモジュール2xを取得する。そして、FPGAデータモジュール21に応じた処理の一環として、このFPGAデータモジュール2xを演算システム1Aの補助演算制御部7に供給し、演算を停止する。
【0060】
また、演算システム1Aの制御部46は、演算システム1Aのフリップフロップ42bに保持されているデータのうちでFPGAデータモジュール2xに引数として渡すデータ(演算システム1Bに供給するデータ、及び、演算システム1Cに供給するデータ)を、演算システム1Aの補助演算制御部7に供給する。
【0061】
演算システム1Aの補助演算制御部7は、演算システム1B及び1Cのローダ3を制御し、FPGAデータモジュール2xを、演算システム1B及び1CのFPGAデータメモリ41にそれぞれロードさせる。この結果、演算システム1B及び1CにFPGAデータモジュール2xがロードされ、演算システム1B及び1Cのゲート回路42aが論理構成される。
【0062】
次いで、演算システム1Aの補助演算制御部7は、演算システム1Aの制御部46より引数として供給されたデータのうち、演算システム1Bに供給すべきものを、入力データとして演算システム1Bのゲートアレイ42に入力し、演算システム1Cに供給すべきものを、入力データとして演算システム1Cのゲートアレイ42に入力する。この結果、演算システム1B及び1Cのゲートアレイは、FPGAデータモジュール2xに応じた演算を、各自に供給されたデータが表す引数が与えられたものとして実行する。
【0063】
FPGAデータモジュール2xに応じた演算が終了すると、演算システム1B(又は1C)の制御部46は、演算システム1B(又は1C)のゲートアレイ42からの出力データを、呼び出し元のFPGAデータモジュール21に渡す引数として、演算システム1B(又は1C)の引数受け渡し部45に一時保存させる。
【0064】
演算システム1Aの補助演算制御部7は、演算システム1B及び1Cの引数受け渡し部45に出力データが一時保存されたことを検知し、これらの出力データを、演算システム1B及び1Cの引数受け渡し部45より取得する。そして、取得した各出力データを、演算システム1Aのフリップフロップ42bの所定のものに書き込む。
この状態で、演算システム1Aのゲートアレイ42は、FPGAデータモジュール21に従った演算を再開する。この結果、最終的な演算結果が出力データとして出力される。
【0065】
この発明の実施の形態の演算システムが図3に示す構成を有していれば、単一の演算システムでは短時間で完了できない演算や、並列処理を要する演算も、必要に応じて演算システムを追加することにより、短時間で完了させることが可能となる。
【0066】
また、演算システム1Aに接続される他の演算システムが図3に示す構成を有している場合、当該他の演算システムは、自己の補助演算制御部7に接続された演算システムにFPGAデータモジュールをロードさせ、演算を行わせて演算結果を取得することが可能である。従って演算の手順を柔軟に構成することが可能である。
【0067】
なお、演算システム1Aが自己に接続された他の演算システムにソースプログラムをロードさせ、演算を行わせて演算結果を取得するようにしてもよい。ただし、この場合、演算システム1Aに接続される他の演算システムは、たとえば図2に示す構成を有しているものとする。
【0068】
【発明の効果】
以上説明したように本発明によれば、複数のプログラムモジュールからなる大規模なプログラムであっても、各プログラムモジュールを適時メモリにロードしていく仕組みを有するので、該プログラムに応じた演算の実行をハードウェアで実現することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態にかかる演算システムの構成を示すブロック図である。
【図2】本発明の他の実施の形態にかかる演算システムの構成を示すブロック図である。
【図3】本発明の他の実施の形態にかかる演算システムの構成を示すブロック図である。
【図4】本発明の実施の形態にかかる演算システムが複数連結されて用いられる場合の構成を示すブロック図である。
【符号の説明】
1、1A、1B、1C 演算システム
2 FPGAデータ記憶部
3 ローダ
4 FPGAデバイス
6 コンパイラ
7 補助演算制御部
21〜2n、2x FPGAデータモジュール
41 FPGAデータメモリ
42 ゲートアレイ
42a ゲート回路
42b フリップフロップ
43 呼び出し検出部
44 退避スタック
45 引数受け渡し部
46 制御部
51〜5n ソースプログラム
Claims (4)
- 自己に供給された第1のプログラムモジュールをメモリにロードするロード手段と、
複数の論理回路を含み、前記ロード手段によってメモリにロードされた前記第1のプログラムモジュール中の命令に従った信号を前記複数の論理回路の1以上に入力することで、ロードされた当該第1のプログラムモジュールに応じた演算を実行する論理演算手段と、
前記論理演算手段の内部状態を退避する退避手段と、
所定の条件が成立した場合に、自己に着脱可能に接続された外部の他の演算システムに第2のプログラムモジュールをロードさせ、当該他の演算システムが当該第2のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第1のプログラムモジュールに応じた演算の実行に復帰させる制御手段と
を備えることを特徴とする演算システム。 - 複数のプログラムモジュールからなるプログラムを記憶し、当該プログラムモジュールを前記ロード手段に供給するプログラム記憶手段を備える
ことを特徴とする請求項1に記載の演算システム。 - 前記第1のプログラムモジュールは、前記第2のプログラムモジュールを呼び出す機能を含み、
前記論理演算手段が演算を実行している前記第1のプログラムモジュール中の命令における前記第2のプログラムモジュールの呼び出しを検出する呼び出し検出手段をさらに備え、
前記制御手段は、前記呼び出し検出手段が前記第2のプログラムモジュールの呼び出しを検出した場合に、第2のプログラムモジュールを外部の他の演算システムにロードさせ、当該他の演算システムが当該第2のプログラムモジュールに応じた演算の実行を終了し、演算結果を自己に供給した後に、前記論理演算手段を前記第1のプログラムモジュールに応じた演算の実行に復帰させる
ことを特徴とする請求項1又は2に記載の演算システム。 - 前記プログラム記憶手段に記憶された各プログラムモジュール中の命令は、前記論理演算手段を構成する論理回路に入力する信号に応じたコードによって構成されている
ことを特徴とする請求項2に記載の演算システム。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002060515A JP3561506B2 (ja) | 2001-05-10 | 2002-03-06 | 演算システム |
CNB028096444A CN100361119C (zh) | 2001-05-10 | 2002-05-08 | 计算系统 |
PCT/JP2002/004461 WO2002093404A2 (en) | 2001-05-10 | 2002-05-08 | Computing system |
EP02769545A EP1421511A2 (en) | 2001-05-10 | 2002-05-08 | Computing system |
US10/477,374 US20050027836A1 (en) | 2001-05-10 | 2002-05-08 | Computing system |
KR1020037014600A KR100776608B1 (ko) | 2001-05-10 | 2002-05-08 | 컴퓨팅 시스템 |
CNA2007100021370A CN101025731A (zh) | 2001-05-10 | 2002-05-08 | 计算系统 |
KR1020067021470A KR20060114722A (ko) | 2001-05-10 | 2002-05-08 | 컴퓨팅 시스템 |
TW091109783A TW561405B (en) | 2001-05-10 | 2002-05-10 | Computing system |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001139951 | 2001-05-10 | ||
JP2001-139951 | 2001-05-10 | ||
JP2002060515A JP3561506B2 (ja) | 2001-05-10 | 2002-03-06 | 演算システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003029969A JP2003029969A (ja) | 2003-01-31 |
JP3561506B2 true JP3561506B2 (ja) | 2004-09-02 |
Family
ID=26614885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002060515A Expired - Fee Related JP3561506B2 (ja) | 2001-05-10 | 2002-03-06 | 演算システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US20050027836A1 (ja) |
EP (1) | EP1421511A2 (ja) |
JP (1) | JP3561506B2 (ja) |
KR (2) | KR20060114722A (ja) |
CN (2) | CN100361119C (ja) |
TW (1) | TW561405B (ja) |
WO (1) | WO2002093404A2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005022380A1 (ja) * | 2003-08-29 | 2005-03-10 | Ipflex Inc. | データ処理装置 |
CN100412801C (zh) * | 2003-09-30 | 2008-08-20 | 三洋电机株式会社 | 备有可重构电路的处理装置、集成电路装置 |
US20070038971A1 (en) * | 2003-09-30 | 2007-02-15 | Tatsuo Hiramatsu | Processing device with reconfigurable circuit, integrated circuit device and processing method using these devices |
JP3836109B2 (ja) * | 2004-02-19 | 2006-10-18 | 東京エレクトロン株式会社 | プログラマブル論理回路制御装置、プログラマブル論理回路制御方法及びプログラム |
EP1780644A4 (en) * | 2004-07-30 | 2007-11-21 | Fujitsu Ltd | CONVERTIBLE CIRCUIT AND CONTROL PROCEDURE OF A CONVERTIBLE CIRCUIT |
US7941794B2 (en) | 2004-08-30 | 2011-05-10 | Sanyo Electric Co., Ltd. | Data flow graph processing method and processing apparatus provided with reconfigurable circuit |
US20060200603A1 (en) * | 2005-03-01 | 2006-09-07 | Naoto Kaneko | Dynamic resource allocation for a reconfigurable IC |
DE102005010477A1 (de) * | 2005-03-04 | 2006-09-07 | Daimlerchrysler Ag | Vorrichtung und Verfahren zur Abarbeitung priorisierter Steuerungsprozesse |
DE102005010476A1 (de) * | 2005-03-04 | 2006-09-07 | Daimlerchrysler Ag | Steuergerät mit konfigurierbaren Hardwaremodulen |
JP4720436B2 (ja) * | 2005-11-01 | 2011-07-13 | 株式会社日立製作所 | リコンフィギュラブルプロセッサまたは装置 |
US20070139074A1 (en) * | 2005-12-19 | 2007-06-21 | M2000 | Configurable circuits with microcontrollers |
EP2523117B1 (en) * | 2011-05-11 | 2014-01-22 | Telefonaktiebolaget L M Ericsson (publ) | Interface module for HW block |
SG11201912963SA (en) * | 2017-06-22 | 2020-01-30 | Icat Llc | High throughput processors |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802290A (en) * | 1992-07-29 | 1998-09-01 | Virtual Computer Corporation | Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed |
US5933642A (en) * | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US6594752B1 (en) * | 1995-04-17 | 2003-07-15 | Ricoh Company, Ltd. | Meta-address architecture for parallel, dynamically reconfigurable computing |
US5778439A (en) * | 1995-08-18 | 1998-07-07 | Xilinx, Inc. | Programmable logic device with hierarchical confiquration and state storage |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US5838165A (en) * | 1996-08-21 | 1998-11-17 | Chatter; Mukesh | High performance self modifying on-the-fly alterable logic FPGA, architecture and method |
GB2317468B (en) * | 1996-09-23 | 2001-01-24 | Advanced Risc Mach Ltd | Digital signal processing integrated circuit architecture |
DE19651075A1 (de) * | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
JP3587095B2 (ja) * | 1999-08-25 | 2004-11-10 | 富士ゼロックス株式会社 | 情報処理装置 |
JP3621315B2 (ja) * | 1999-11-22 | 2005-02-16 | Necエレクトロニクス株式会社 | マイクロプロセッサシステム |
-
2002
- 2002-03-06 JP JP2002060515A patent/JP3561506B2/ja not_active Expired - Fee Related
- 2002-05-08 WO PCT/JP2002/004461 patent/WO2002093404A2/en active Application Filing
- 2002-05-08 KR KR1020067021470A patent/KR20060114722A/ko active IP Right Grant
- 2002-05-08 US US10/477,374 patent/US20050027836A1/en not_active Abandoned
- 2002-05-08 CN CNB028096444A patent/CN100361119C/zh not_active Expired - Fee Related
- 2002-05-08 CN CNA2007100021370A patent/CN101025731A/zh active Pending
- 2002-05-08 EP EP02769545A patent/EP1421511A2/en not_active Ceased
- 2002-05-08 KR KR1020037014600A patent/KR100776608B1/ko not_active IP Right Cessation
- 2002-05-10 TW TW091109783A patent/TW561405B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2002093404A3 (en) | 2004-03-25 |
JP2003029969A (ja) | 2003-01-31 |
TW561405B (en) | 2003-11-11 |
CN1529858A (zh) | 2004-09-15 |
WO2002093404A2 (en) | 2002-11-21 |
KR20060114722A (ko) | 2006-11-07 |
EP1421511A2 (en) | 2004-05-26 |
KR20040004617A (ko) | 2004-01-13 |
US20050027836A1 (en) | 2005-02-03 |
KR100776608B1 (ko) | 2007-11-16 |
CN100361119C (zh) | 2008-01-09 |
CN101025731A (zh) | 2007-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5652875A (en) | Implementation of a selected instruction set CPU in programmable hardware | |
JP3561506B2 (ja) | 演算システム | |
US5036453A (en) | Master/slave sequencing processor | |
KR100852563B1 (ko) | 디지털 신호 처리 장치 및 방법 | |
US7600101B2 (en) | Multithreaded hardware systems and methods | |
EP1184785A2 (en) | System and method for preparing software for execution in a dynamically configurable hardware environment | |
KR100681199B1 (ko) | 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치 | |
KR101622266B1 (ko) | 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법 | |
JP5611756B2 (ja) | プログラム・フロー制御 | |
KR101293701B1 (ko) | 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법 | |
US4967350A (en) | Pipelined vector processor for executing recursive instructions | |
JP3797570B2 (ja) | セマフォ命令用のセマフォ・バッファを用いた装置と方法 | |
US4851992A (en) | Register/saving/restoring system for saving and restoring data in a register of a slave processor | |
JP3540796B2 (ja) | 演算システム | |
US5995752A (en) | Use of language instructions and functions across multiple processing sub-environments | |
US20070136564A1 (en) | Method and apparatus to save and restore context using scan cells | |
US6704858B1 (en) | Information processor and method for switching those register files | |
JP2008537248A (ja) | デジタルシグナルプロセッサ上でのマルチタスクの実施 | |
JP2021509510A (ja) | リアルタイムタスクスイッチに適合したフレキシブルロジックユニット | |
JP2005322240A (ja) | インデックス付きレジスタアクセス用の方法および装置 | |
KR20010006789A (ko) | 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션 | |
US7107478B2 (en) | Data processing system having a Cartesian Controller | |
Arifin et al. | FSM-controlled architectures for linear invasion | |
JP2920968B2 (ja) | 命令処理順序制御方式 | |
JP2004302856A (ja) | 集積回路装置およびその装置に対するデータ設定装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040224 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040412 |
|
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: 20040506 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040528 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |