(57)【要約】【課題】  簡易な構成で柔軟性の高い複数クラスタよりなる再構成演算装置を提供することを目的とする。【解決手段】  同時動作可能な演算器群１８０と、演算器群の状態を制御するシーケンサ１１０と、演算器群のコンフィギュレーション情報を格納するコンフィギュレーションメモリ１２０とよりなり、演算器群に対してデータを入力する際にデータバッファを介するパスと介さないパスとを設け、パスの選択及びデータバッファの動作を制御するデータバッファ制御部を設け、その動作制御の内容がコンフィギュレーション情報によって設定される構成である。【選択図】  図１
2006018514.tif 000002
【特許請求の範囲】
【請求項１】
複数の同時動作可能な演算器と、
当該複数の演算器の状態を制御するシーケンサと、
演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置であって、
演算器に対してデータを入力する際に、データバッファを介するパスと、介さないパスとを設け、
前記二つのパスの選択及びデータバッファの動作を制御するデータバッファ制御部を設けてなり、
データバッファ制御部によるパスの選択及びデータバッファの動作制御の内容はコンフィギュレーション情報によって設定される構成とされてなる演算装置。
【請求項２】
前記演算装置の構成を有するモジュールを複数含み、  各モジュールはクロスバーを有し、モジュール間のデータ転送が当該クロスバー間のデータ転送で実施され、各モジュールの入出力データが当該クロスバーに接続されると共に、隣接する他構成モジュール間のデータ転送をも実施可能な構成とされてなり、クロスバーの設定情報は、該当モジュール内のコンフィギュレーションメモリ内の情報により実施され、、その設定の切替が当該モジュール内のシーケンサにより制御される構成とされてなる請求項１に記載の演算装置。
【請求項３】
前記演算装置の構成を有するモジュールを複数含み、各モジュール間のデータ転送は前記データバッファ制御部にて制御されるデータバッファを介して実施され、各モジュールに含まれるコンフィギュレーションメモリ内のコンフィギュレーション情報にて制御され、データバッファ使用の有無が設定可能とされてなる請求項１に記載の演算装置。
【請求項４】
データバッファと、
当該データバッファの動作を制御するデータバッファ制御部と、
当該データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリと、
当該コンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサとより構成されることを特徴とするデータバッファ装置。
【請求項５】
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、
データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、
前記演算器モジュールと前記データバッファモジュールとを、各々一以上設けてなる演算装置。
【請求項６】
複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置の制御方法であって、
演算器に対してデータを入力する際に、データバッファを介するパスと、介さないパスとを設ける段階と
前記二つのパスの選択及びデータバッファの動作を制御する段階と、
前記パスの選択及びデータバッファの動作制御の内容を、コンフィギュレーションメモリに格納されたコンフィギュレーション情報によって設定する段階とよりなる演算装置の制御方法。
【請求項７】
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、前記演算器モジュールと前記データバッファモジュールとを各々一以上設けてなる演算装置の制御方法であって、
コンフィギュレーション情報にて前記データバッファモジュール内のデータバッファ制御部が有するダブルバッファ構成のデータバッファの一メモリ当たりに書き込むデータサイズ及びデータバッファから出力するデータサイズを設定する段階と、
ダブルバッファへの外部からの入力データサイズが、コンフィギュレーション情報に記載された情報である入力データサイズと一致した際に、当該ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリからデータを出力する段階とよりなる演算装置の制御方法。
【請求項８】
複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置をコンピュータにて制御するためのプログラムであって、
演算器に対してデータを入力する際に、所定のデータバッファを介するパスと、介さないパスとを設ける段階と
前記二つのパスの選択及びデータバッファの動作を制御する段階と、
前記パスの選択及びデータバッファの動作制御の内容を、コンフィギュレーションメモリに格納されたコンフィギュレーション情報によって設定する段階とをコンピュータに実行させるための命令よりなるプログラム。
【請求項９】
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、前記演算器モジュールと前記データバッファモジュールとを各々一以上設けてなる演算装置をコンピュータにて制御するためのプログラムであって、
コンフィギュレーション情報にて前記データバッファモジュール内のデータバッファ制御部が有するダブルバッファ構成のデータバッファの一メモリ当たりに書き込むデータサイズ及びデータバッファから出力するデータサイズを設定する段階と、
ダブルバッファへの外部からの入力データサイズが、コンフィギュレーション情報に記載された情報である入力データサイズと一致した際に、当該ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリからデータを出力する段階とをコンピュータに実行させるための命令よりなるプログラム。
【請求項１０】
請求項８又は９に記載のプログラムが格納されたコンピュータ読取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体に係り、特に動的にその構成を変更することで様々な処理を行なわせることが可能な所謂再構成可能（リコンフィギュラブル）演算装置、同演算装置の制御方法、同制御方法をコンピュータに実行させるためのプログラム及び同プログラムを格納したコンピュータ読取り可能記録媒体に関する。
【背景技術】
【０００２】
例えば特許文献１には、演算器を複数配置し、その演算器間の接続を切り替えることで処理アルゴリズムの変更を可能とした再構成可能な演算器群を有する演算装置が開示されている。当該演算装置は状態管理部と２次元アレイ状に電気的に接続された複数プロセッサエレメントとを有する。又これをタイルと呼び、このタイルを複数設けた構成が特許文献２に開示されている。タイルを複数設けた構成の場合のタイル間のデータ転送は、相隣接するタイル間に転送仲介回路を配置し、これを経由することで実施している。（特許文献２，図７、図8、図9等参照）。
【０００３】
この転送仲介回路は双方向トライステートバッファ回路であり、この場合のバッファ回路は増幅器を意味している。そして、そのオン／オフは、タイルとは別に設けられた中央管理部により制御され、或いは場合によっては隣接するタイル内のどちらかの状態管理部により制御される。この転送仲介回路は１対の相隣接するタイル間に複数存在するが、そのうちの一のタイル内のデータ線と他のタイル内のデータ線がこの転送仲介回路によりどのように接続されるかについては同特許文献には特に明示されていない。
【０００４】
すなわち、一のタイル内のあるデータ線に対し他のタイル内のどのデータ線が接続されるかが明示されておらず、一のタイル内のあるデータ線に対し、当該転送仲介回路を経由して他のタイル内での固定的に決まったデータ線に接続されているものと推測される。このことは、同文献にて、タイル間での接続方法のおいてあるデータ線間は直結させ、他のデータ線間は当該転送仲介回路を経由させる構成が可能とされている点から類推される。
【０００５】
また、このような転送仲介回路の代わりに、相隣接するタイル間にタイル間共有リソースを設ける例も、同特許文献に開示されている（図１８参照）。しかしながらこの例については、データの一時保存回路を設ける場合もあることが言及されているものの更に具体的な記述が無いため、実際にどのような構成で実現されるかの詳細については不明である。また、同特許文献には転送仲介回路と共有リソースとの両者を設ける例も示されている（図２１参照）。
【０００６】
又、特許文献３には、複数のプロセッサエレメントを有する演算装置が開示されている。この技術ではプロセッサエレメント間の通信に必ず交替バッファ（即ち、ダブルバッファ）を設け、これを介してデータの転送を行う構成とされている（図６参照）。この交替バッファが必要である理由を以下に示す。通常、複数の独立したプロセッサ(プログラムカウンタが共有されないもの)における処理につき、それらの間に全く依存関係が無くしかも全く同じ処理を行わない限り、たとえ開始タイミングを一致させたとしてもその進行タイミングは一般的に一致することはない。このような動作の関係を以下「非同期動作」と称する。そのため、プロセッサエレメント内の一の演算プロセッサによるデータの処理の進行タイミングと、これとデータをやり取りするプロセッサエレメント内の他の演算プロセッサのデータの処理の進行タイミングとは必ずしも同期しない（非同期動作）。このため、上記交替バッファの一面（一メモリ）に一のプロセッサから書き込んでいる間、他のプロセッサは当該交替バッファの他の面から読み出す構成とすることで演算プロセッサ間の非同期動作を支障なく実現することが可能となる。
【特許文献１】特開２００１−３１２４８１号公報
【特許文献２】特開２００４−１３３７８１号公報
【特許文献３】特開平５−１０８５８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
複数の演算器間の接続を切り替えることで処理アルゴリズムを変更可能な構成の再構成可能演算装置を更に多数設けた場合の問題として、その多数の演算装置間のデータの転送の自由度の問題が考えられる。即ち、例えばあるパイプライン的なアルゴリズムを複数の再構成可能演算装置の協働動作によって実現する場合、そのデータの受け渡しはクロックサイクルレベルで一致させる必要がある。例えば、１乃至k段のパイプライン処理を再構成可能演算装置Aで行い、ｋ＋１乃至ｎ段(ここでｎ＞ｋ)の処理を再構成可能演算装置Bで行う場合を考える。この場合上記交替バッファ等を間に挟まずに連続して処理を行う必要がある。それは、交替バッファを入れるとその動作時間分動作タイミングがずれてしまうからである。即ち、例えば処理の後半でｎ＋１段の処理を更に演算装置Aで行うようなフィードバック的な処理がある場合、上記タイミングのずれにより、アルゴリズム上破綻を来すおそれがある。
【０００８】
次に、複数の再構成可能演算装置に、互いに依存関係はあるが異なるアルゴリズムを夫々実行させる場合について考える。例えばＩＥＥＥ８０２．１１ａにおけるＰＨＹレイヤでの受信処理を行った場合、その一部の例として、「キャリア周波数誤差補正」後に「FFT」を行う動作を考える。この場合これらの処理は連続するが、データを処理する単位が異なるため、パイプライン的にクロックサイクルレベルで同期させて動作させることは難しい。すなわち、工数をかけて設計すれば出来ないことはないが、通常はもっと簡単に解決する方法があるため、そちらの方法を選択することになる。
【０００９】
その簡単に解決する方法とは、一方の「キャリア周波数誤差補正」処理後のデータを、書き込みたい順にダブルバッファの一面（一メモリ）に入れておき、他方の「ＦＦＴ」処理は、ＦＦＴしやすい順にダブルバッファの他の面（他のメモリ）から読み出して処理を行うという方法である。これは特許文献３に開示された方法である。
【００１０】
しかしながら、複数の再構成可能演算装置を使用して所定のアプリケーションの処理を行なう場合、クロックレベルで同期させて処理させなければ破綻してしまうような処理と、逆に上記の如くダブルバッファを再構成可能演算装置間に介在させた上でそれら再構成可能演算装置間で処理を分離すべき場合とが混在する場合がある。例えば「キャリア周波数補正」処理を再構成可能演算装置Aにて、「FFT」の１乃至ｋ段の処理を再構成可能演算装置Ｂにて，「ＦＦＴ」処理のｋ＋１乃至ｎの処理を再構成可能演算装置Ｃにて行うような場合を考える。これは即ち「ＦＦＴ」処理を全て一の再構成可能演算装置内で処理させることが出来ない場合であり、この場合、ダブルバッファを介してデータを受け渡す方式と、クロックレベルで同期してデータを受け渡す方式とが混在することになる。
【００１１】
多数の再構成可能演算装置に任意のアプリケーション処理を実行させるためには、各再構成可能演算装置のいずれもがこのどちらの方式のデータ受け渡し処理にも対応可能な構成としておくことが望ましい。
【００１２】
特許文献３の開示技術の場合、ダブルバッファを介したデータ転送の場合のみ可能な構成であり、このような場合、再構成可能演算装置間のデータ転送を含む処理においては処理のアルゴリズムが破綻する可能性がある。
【００１３】
また、特許文献２の開示技術の場合のようにタイル間でのデータの結線がデータ転送介在回路による場合に限られてしまうと、ダブルバッファを介した方が望ましい場合に対応させることが出来ない。又、同文献に開示されている如く、共有リソースとデータ転送介在回路との両方を設ける場合、同文献中に「例えばデータ一時記憶回路」を設ける旨の記載はあるものの、その具体的構成に対する記述が無く、又、この共有リソースの機能はせいぜいタイル間のデータ通信用であり、外部とのデータ転送に用いる構成ではない。
【００１４】
又，通常任意のアプリケーションのデータ転送にダブルバッファを用いる場合、個々のアプリケーションによって必要とされるダブルバッファの容量は異なる。したがって任意のアプリケーションに対応させるためにはその容量を大きくする必要がある。そのため、仮に特許文献２の開示技術の構成において、例えばデータ一時記憶回路にダブルバッファを設けることを想定した場合、当該ダブルバッファはデータ転送介在回路毎に設けることになり、その占有面積が問題になることが予測される。このように各データ転送介在回路に設けるデータバッファは必ずしも全数が利用されるとは限らないが、再構成可能演算装置の適用の柔軟性を考えた場合全数設けることが望ましい。その結果、相隣接する再構成可能演算装置間の夫々に設けられたデータ転送介在回路のデータバッファの中には、全く利用されないデータバッファが存在し得、過剰な冗長性の問題が生じ得る。
【課題を解決するための手段】
【００１５】
まず上記第一の課題の解決、即ち、実施するアプリケーションによって、再構成可能演算装置間のデータ転送の方式としてデータバッファを介して行なう場合と介さずに行なう場合との両方に柔軟に対応可能な構成の実現を図る点につき、図１に示すように、シーケンサ１１０と演算器群１８０とコンフィギュレーションメモリ１２０とで構成される再構成可能演算装置１００において、他の再構成可能演算装置或いは外部とのデータ転送に関してデータバッファを使う場合とデータバッファを使わない場合とのいずれもが選択可能な構成とする。ここで、そのいずれの場合を適用するかは、当該再構成可能演算装置が処理するアプリケーションにより異なる。このように、どのようなアプリケーションに対しても柔軟に対応可能な構成を提供するため、その制御はアプリケーション処理情報であるコンフィギュレーションメモリ１２０内の情報により設定可能とする。尚ここで、コンフィギュレーションメモリ１２０内情報のうち実際に適用する情報を選択するための適用情報切替処理の内容はシーケンサ１１０によって設定される。
【００１６】
この構成により、特許文献３の開示技術の構成においては実現不可と考えられるデータバッファを使わないで行なうデータ転送と、これを使って行なうデータ転送との切替が、適用するコンフィギュレーション毎に任意に切替可能となる。
【００１７】
また特許文献２にはデータバッファとしての具体的構成が記載されておらず、又、あくまでタイル間に存在する共有リソースが示されているのに対し、上記本発明構成によれば、当該再構成可能演算装置に対してデータが外部から入力される場合であれば、データ転送元相手が他の再構成可能演算装置の場合だけではなく、それ以外の外部からのデータ転送の場合に対しても柔軟に対応可能となる。
【００１８】
次に上記第二の課題の解決、即ち、設けるデータバッファの容量を効率的に使用可能な構成の実現を図る点につき、夫々がシーケンサ１１０と演算器群１８０とコンフィギュレーションメモリ１２０とで構成される複数の再構成可能演算装置間、あるいは外部と再構成可能演算装置間のデータ転送に関し、処理する個々のアプリケーションの特性に応じて効率良くデータ転送を実施するため、ダブルバッファ等、データを一時的に格納して転送可能な構成を有するデータバッファモジュールを再構成可能演算装置とは別に同じ階層に設ける。そして、そのデータバッファモジュールは、使用するときのみスイッチにより再構成可能演算装置の入力、出力に接続することが可能であり、又、データバッファモジュールは、いくつかの再構成可能演算装置によって共有可能なものとすることが望ましい。
【００１９】
ただしここで、このダブルバッファを共有する複数の再構成可能演算装置の合計入力数及び合計出力数に対し、これに対応するダブルバッファの出力数及び入力数のほうが夫々少ない場合を想定するに、同時に共有可能な再構成可能演算装置の全てによる共有は不可となるものの、再構成可能演算装置のデータ転送において常にダブルバッファを使用するわけではなく、使用効率を最適化することを考慮した場合ダブルバッファの入出力個数を徒に増加させることは必ずしも望ましいとは限らない。したがって、このように、適宜ダブルバッファの入出力個数を減ずることが望ましい場合もある。
【００２０】
また、ダブルバッファを共有可能とすることで所要データバッファの総数を減らせるため、各データバッファ当たりの容量を大きくすることによる占有面積増の問題も解決可能である。
【００２１】
図２に上記本発明の構成による複数の再構成可能演算装置間のデータ転送の方式を示す。尚、シーケンサ１１０と演算器群１８０とコンフィギュレーションメモリ１２０とで一単位として構成される再構成可能演算装置を以下「クラスタ」と称する。又、図２中、データバッファモジュール（以下、「データバッファクラスタ」と称する）２００等を用い、複数のデータを一時的に格納した後に適宜ここから読み出すことによるデータ転送方式を、「非同期データ転送」方式と称する。
【発明の効果】
【００２２】
このような構成を採用することにより、本発明によれば、上記第１及び第２の課題、即ち、処理すべきアプリケーションの個々の内容に応じて柔軟に「バッファを介するパス」と「介さないパス」とを選択可能にすることが可能となると共に、データバッファの容量を効率的に利用可能な構成の実現が可能となる。
【発明を実施するための最良の形態】
【００２３】
図３に本発明の第１実施例による演算装置の構成を示す。図に示す如く、同実施例による演算装置は、複数のクラスタ１００−１、１００−２、１００−３、．．．（以下総称して単に「クラスタ１００」と称する場合もある）が図中の矢印にて示す経路で互いに電気的に接続された構成を有する。各クラスタ１００は、上記の如く、多数の再構成可能演算器を含む演算器群１８０（図４参照）、これら演算器群の状態を設定することで演算器群の構成を柔軟に変更して様々な演算処理の実行を可能にするためのコンフィギュレーション情報を格納するコンフィギュレーションメモリ１２０及びコンフィギュレーションメモリ１２０内のコンフィギュレーション情報のうち、実際に演算器群１８０に対して適用する情報を選択指示するシーケンサ１１０を含む。
【００２４】
本実施例では、クラスタ１００間のネットワークは各クラスタ内に設けたクロスバースイッチ１９０（以下単にクロスバー１９０と称する）を介して行う。又更に、クロスバーにより、クラスタ１００とクラスタ１００との間、クラスタ１００とデータ転送バッファ１３５との間、クラスタ１００と同演算装置（クラスタ１００の集合）の外部との間、或いはデータ転送バッファ１３５と外部との間のデータ転送を行う。
【００２５】
図３では演算器群１８０内にデータバッファモジュール１３５を設け、これが上記コンフィギュレーション情報によって「データバッファを使用するモード」と「データバッファを使用しないモード」とに切替可能とされている。
【００２６】
図４は各クラスタ１００の内部構成を示す。クラスタ１００は、この実施例ではクロスバー１９０を有しており、クラスタ１００間のネットワーク構成が異なる場合には、このクロスバー１９０はそのネットワーク構成に応じたインターフェースとして機能することになる。また、クロスバー１９０の入出力としては、この図では左右方向からイン／アウトが夫々1本ずつ、内部からのイン／アウトが夫々1本ずつのみが示されているが、これは図示の簡略化のためであり、実際には、イン／アウトは、互いに独立した４本づつが設けられている。しかしながらその本数は４本に限られるものではなく、１本づつでもよいし、他の任意の複数本ずつでもいい。
【００２７】
当該クロスバー１９０はデータ線だけでなく、クラスタから出力されるアドレス線、あるいは外部から入力されるアドレス線の接続をも行なう。この実施例では使用時に配線を適宜データ線又はアドレス線に割り当てる構成とされているが、元々別々にデータ専用線、アドレス専用線を用意しても構わない。
【００２８】
図５に、図４中のデータバッファ部１３５の詳細を示す。図５（ａ）は内部構成図を示し、同図（ｂ）はデータバッファ部１３５に入力されるコンフィギュレーション情報を示す。図５（ａ）中、データバッフ部１３５はデータバッファ制御部１３１とダブルバッファ１３０とよりなり、データバッファ制御部１３１は、各比較器１３１−２，制御部１３１−１，入力サイズレジスタ１３１−３，ダブルバッファを構成する各メモリ１３０−Ａ，１３０−Ｂのそれぞれに対応するデータ入力数カウンタ１，２（１３１−４）、出力サイズレジスタ１３１−５，ダブルバッファを構成する各メモリ１３０−Ａ，１３０−Ｂのそれぞれに対応するデータ出力数カウンタ１，２（１３１−６）、バッファ使用有無レジスタ１３１−７及び自動送出モード選択レジスタ１３１−８を含む。
【００２９】
上記各比較器１３１−２は、入力レジスタ１３１−３に格納された値とデータ入力数カウンタ１又はデータ入力数カウンタ２の計数値とを夫々比較する比較器と、出力レジスタ１３１−５に格納された値とデータ出力数カウンタ１又はデータ出力数カウンタ２の計数値とを夫々比較する比較器を含む。
【００３０】
又、データバッファ１３０は、ダブルバッファを構成するメモリ１３０−Ａ，１３０−Ｂの他に、これらに関するデータ入出力を切替制御する切替スイッチ１３１−Ｓ１，１３１−Ｓ２，１３１−Ｓ３，１３１−Ｓ４が含まれる。
【００３１】
コンフィギュレーションメモリ１２０から図５（ｂ）に示される構成を有するコンフィギュレーション情報が供給されると、その項目毎に、「バッファ使用有無」項目はバッファ使用有無レジスタ１３１−７に、「自動送出」項目は自動送出選択レジスタ１３１−８に、「入力サイズ」項目は入力サイズレジスタ１３１−３に、「出力サイズ」項目は出力サイズレジスタ１３１−５に夫々書き込まれ、これを基に、制御部１３１−１は以下に述べる如くの判定処理を行なう。即ち、このコンフィギュレーション情報により、処理するアプリケーションに応じて、異なる動作モードが選択設定される。
【００３２】
同情報中の「バッファ使用」項目が有効である場合、図５（ａ）のダブルバッファを構成する二つのメモリ１３０−Ａ，１３０−Ｂ経由で、外部から、クラスタ１００内部にデータが取り込まれる。「バッファ使用」項目が無効である場合、ダブルバッファを介さず、直接外部からクラスタ１００内にデータが入力される。
【００３３】
以下、ダブルバッファ１３０−Ａ，１３０−Ｂを使用する場合の動作について説明する。この場合、図５（ｂ）のコンフィギュレーション情報中の「自動送出」項目の設定により、「自動送出モード」の有無が判定される。自動送出モードが有効な場合、該当する比較器１３１−２にて、コンフィギュレーション情報の「入力サイズ」項目により設定される入力サイズ情報と、データが外部から入力される側のメモリ（ここでは例えばメモリ１（１３０−Ａ）とする）へのデータ入力数とを比較する。その結果実際のデータ入力数と指定された入力サイズとが一致した場合、制御部１３１−１は、切替スイッチ１３０−Ｓ１乃至Ｓ４を適宜動作させてダブルバッファの面（即ち、データ入出力を行なうメモリ１３０―Ａ，１３０−Ｂ）を切り替え、メモリ１（１３０−Ａ）から当該クラスタ内部に、それまでに同メモリに対して入力され格納されたデータを入力順に読出し出力する。このとき、メモリ２（１３０−Ｂ）に対してクラスタ１００外部からの書き込みが可能な状態となる（この動作については、更に図２３乃至２５と共に後述する）。このときデータは出力サイズレジスタ１３１−５に書かれたデータ数だけ読出されて出力される。即ち、データがメモリ１から出力されると、それに応じてデータ出力数カウンタ１（１３１−６）がインクリメントされ、その計数値が比較器１３１−２によって出力サイズレジスタ１３１−５の値と比較され、一致したらメモリ1からの出力が停止される。
【００３４】
ここで、入力データ数は、指定された出力データサイズと等しいか或いはそれより大きい必要がある。しかしながら、ここではメモリに書き込まれたデータの先頭からデータを出力する構成としているが、この構成に限られず、出力パターンを設定するモードを追加することにより、アドレス１つ飛び、２つ飛び等、任意の出力形態を設定することも又可能である。
【００３５】
コンフィギュレーション情報として設定された「自動送出モード」が無効である場合、コンフィギュレーション情報により設定された「入力サイズ」情報と、データが外部から入力される側のメモリ（ここでは例えばメモリ１とする）へのデータ入力数を比較器１３１−２により比較し、データ入力数と指定入力サイズが一致した際、制御部１３１−１により、ダブルバッファ１３１−Ａ，１３１−Ｂの面を切り替える（即ち、外部から書き込むメモリと、格納されたデータを読み出し内部へ取り込むメモリとを切り替える）。そしてこの場合制御部１３１−１は、当該クラスタ１００内部に対し、所定の「バッファ内データ出力可能信号」を出力する。クラスタ内部ではこれを、メモリアクセス用のカウンタ（アドレス生成部１４５）で受け取り、データバッファ部１３５に対して読出コマンドを発行する。このとき、当該読出コマンドに含まれるメモリアドレスはクラスタ内のアドレス生成部１４５又は演算器１５０にて生成されるか、或いは当該クラスタ１００内のデータメモリ１４０のエントリが使用され、これがデータバッファ部１３５に供給される。
【００３６】
このモードによれば、クラスタ内に、コンフィギュレーション情報によって設定された演算処理アルゴリズムの内容に応じて任意のアドレス順でデータバッファ部１３５からデータを取り込むことが可能となる。データは出力サイズレジスタ１３１−５に設定された指定データ数分が出力された段階で、上記「バッファ内データ出力可能信号」の出力を停止する。これにより、クラスタ内部からデータバッファ１３５に対するメモリアクセスが停止される。尚、このような方式に限られず、以下の方法を適用することも可能である。即ちクラスタ内部では取り込むデータ数を認識し（即ち、上記指定出力サイズと同じ情報を持ち）、読出コマンドを出す側で何回コマンドを出力したかをカウントし、その計数値によって読出コマンド出力を停止する。このような構成とすることにより、データバッファ１３５からのデータの取り込みの停止を、データを受ける側で任意に制御する方法も適用可能である。この場合、上記の如く、「バッファ内データ出力可能信号」の出力の停止を確認した後に取り込みを停止するという動作は不要となる。
【００３７】
また、ここで外部からクラスタ１００内部へ取り込まれる入力情報が「アドレス」である場合、通常ダブルバッファ１３０は用いずに直接クラスタ内部に入力されることが想定される。このように入力情報の種別に応じてデータバッファ部１３５を経由するか否かを変更する必要があるが、このような選択は、コンフィギュレーション情報の設定により任意に指定可能である。
【００３８】
尚、上述の第１実施例において、各クラスタ１００内のクロスバー１９０の動作設定は、該当するクラスタ１００内のコンフィギュレーションメモリのコンフィギュレーション情報による設定に限られず、以下に説明する第３実施例における図６に示す如くグローバルシーケンサ又はＣＰＵ等によって設定されたレジスタ値によってなされる構成とすることも又可能である。
【００３９】
次に、本発明の第２実施例について説明する。図６は本発明の第２実施例による、多数（この例の場合９個）のクラスタ１００よりなる演算装置の構成を示す。本実施例が上述の第１実施例と異なる点は、当該演算装置を構成する複数のクラスタ間相互等の電気的接続用のネットワークが、電気的配線１９８と配線交差部のスイッチ１９５とクラスタ入力部のスイッチ１９９とで構成されている点である。なおこの場合、クラスタ入力のスイッチ１９９の代わりに、クラスタ出力データ部にスイッチを設けてもよい。
【００４０】
図７は、上記スイッチ部１９５，１９９を構成する各スイッチエレメントの構成例を示す。同図に示す如く、各スイッチエレメント１９５，１９９は、実際の接続のオン・オフを行なう半導体スイッチ回路１９７と、これを制御するラッチ回路１９６とよりなる。ラッチ回路１９６に対してはコンフィギュレーションメモリ１２０からコンフィギュレーション情報としてのコンフィギュレーションビットが供給されて保持される。この保持されたコンフィギュレーションビットにより各スイッチエレメントの導通／非導通が制御され、その結果、図６中、配線１９８の交差部１９５又はクラスタ入力部１９９にて、任意の配線間の接続或いは任意の配線からのデータ取り込みの有無を設定可能となる。
【００４１】
これらスイッチ１９５，１９９の実際の設定は、クラスタ外部のグローバルシーケンサ、またはＣＰＵ等によって設定されるレジスタ値によって実施される。上記の如くスイッチ部の設定はラッチ回路１９６で保持され、ラッチ回路１９６へのデータ書き込みは、予め当該スイッチ回路１９５，１９９に隣接したメモリに複数のコンフィギュレーション情報を蓄えておき、上記グローバルシーケンサまたはＣＰＵが所定の切替タイミングと切替るコンフィギュレーション情報の識別番号を出力することで実施される。これらの信号によって、上記スイッチに隣接したメモリに格納されたコンフィギュレーション情報のうちから該当するものが読出されてラッチ回路１９６に供給され、所望の接続切替が実行される。
【００４２】
第２実施例では、各クラスタ１００内にはクロスバー１９０は不要となる。図８は、第２実施例の演算装置を構成する各クラスタ１００の内部構成を示す。この場合データ又はアドレスの２系統の入力に対し、２つのデータバッファ部１３５が設けられる。これらのうちの各データバッファ部１３５の構成は第１実施例の場合と同様である。
【００４３】
図９は、本発明の第３実施例による、複数のクラスタよりなる再構成可能演算装置の構成を示す。同実施例が上述の第１，第２実施例と異なる点は、各クラスタ１００内にあったデータバッファ部１３５を独立させ、データバッファクラスタ２００とし、他の演算器群によるクラスタ１００と同レベルに設けた点である。このようにデータバッファを他のクラスタと同レベルのクラスタ形態とすることにより、データバッファの制御も他のクラスタの制御の範疇で実施可能なため、制御アルゴリズムの単純化が可能となる。
【００４４】
上述の第１，第２実施例では全てのクラスタ１００の各々にデータバッファ部１３５を設ける構成であった。この場合、任意のアプリケーションに対応しようとした場合、いずれのアプリケーションに対する処理に対して不足がないようにするため、それらのバッファ容量を大きくする必要があった。又入力系統が複数系統ある場合、それらの何れに対しても不足がないように備えようとすると、夫々の入力系統に対してデータバッファ部を設ける必要がある。但しこの場合、第１，第２実施例においても、そのうちの一部の系統のみに対してデータバッファ部を設けることも可能である。即ち入力系統数より少ない数のデータバッファ部を各クラスタ１００に設け、その容量を実際に必要な系統に対して振り分ける構成とすることも可能である。このように、クラスタ１００毎にデータバッファ部１３５を設けた場合、各データバッファ部１３５のバッファ容量が大きくなる傾向があるが、この問題を解決するため、第３実施例では、データバッファ部１３５を各クラスタ毎には設けず、一つのクラスタとして独立させる構成とした。このことにより、データバッファが有するバッファ容量を効率的に利用可能とすることが可能となる。この場合のアルゴリズムのマッピングの態様は、例えば上述の図２に示す如くのものとなる。即ち、クラスタ間同期転送の場合には該当するクラスタ間で直接データ転送を行ない、非同期転送の場合にはデータバッファクラスタ２００経由のデータ転送が行なわれる。
【００４５】
このデータバッファクラスタ２００は、データバッファ（２８１、図１０参照）及びこのデータバッファの動作を制御するデータバッファ制御部（２８２）を含むデータバッファ部２８０と、データバッファの動作制御に関する設定情報（コンフィギュレーション情報）を格納するコンフィギュレーションメモリ２２０と、コンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサ２１０とを含む。
【００４６】
図１０は、上記データバッファ部２８０（２８０−１，２８０−２）の構成を示す。データバッファ部を設けるための専用のクラスタ（単に「データバッファクラスタ」と称する）２００は上記の如く、他の演算器群を収容するクラスタ１００同様、データバッファ部２８０の状態の設定を行なうコンフィギュレーション情報を格納したコンフィギュレーションメモリ２２０，同メモリ２２０のコンフィギュレーション情報のうちから実際にデータバッファ部に対して適用する情報を指定するシーケンサ２１０，当該データバッファクラスタ２００の内部とその外部との情報のやり取りを制御するクロスバー２９０を含む。
【００４７】
データバッファクラスタ２００も他の演算器群収容クラスタ１００と同レベルに設けられているため、上記の如く、クロスバー２９０と、シーケンサ２１０とコンフィギュレーションメモリ２２０を有し、この場合のコンフィギュレーションメモリ２２０のエントリはデータバッファ制御部２８２（データバッファ部２８０内）の設定のための情報と、クロスバー２９０の設定情報とが含まれることとなる。
【００４８】
この例ではデータ入力２系統、アドレス＋読出コマンド入力２系統及びデータ出力２系統が設けられている。データバッファに対する読出コマンドは高々２ビットであるため、この場合最上位ビットとその下のビットとを使用し、アドレスと共にコマンドも送っている。また、この例の場合他のクラスタから送られてくるコンフィギュレーション切替条件信号はデータ入力線の上位に２ビットを付加し、これを使用している。
【００４９】
更にデータ出力線には「バッファ内データ出力可能信号」のための信号線を付加している。すなわち、図９，図１０に示すクロスバー２９０はデータとアドレスだけではなく、コンフィギュレーション切替条件信号、データバッファへのアクセスコマンド及びバッファ内データ出力可能信号の伝送も行なっている。ここでデータ入力用のコンフィギュレーション切替信号とデータ出力用のバッファ内データ出力可能信号は、クラスタ外部では同じビットを共有している。これは、信号の受け取り側で、どちらの信号であるかを判断可能なためである。尚、ここでは省面積のためにこのような共用を実施しているが、別ビットを利用しても構わない。
【００５０】
尚、上記バッファ内データ出力可能信号とは、図５と共に説明した「バッファ内データ出力可能信号」と同機能を有する信号であり、データバッファ内に格納されたデータを取り込むクラスタ１００に対し、メモリアクセスの開始、終了を指示する信号である。又、コンフィギュレーション切替条件信号とは、個々のアプリケーションの処理に係る他のクラスタ１００における演算処理の過程において所定の条件合致時に発生される信号であり、当該データバッファクラスタ２００の状態設定又は動作設定に関する所定の切替条件を与える信号である。
【００５１】
この例では制御用の３種の信号、即ちコンフィギュレーション切替条件信号、バッファ内データ出力可能信号及びアドレス＋読出コマンド信号につき、データ用のクロスバー２９０をそのまま利用して転送しているが、この方式に限られず、別系統のネットワーク構成の適用も又可能である。
【００５２】
図１１は、第３実施例におけるデータバッファ部２８０の詳細な構成を示す。この例では図５の場合と異なり、バッファ使用の有無に関するモードが無い。これは、当該データバッファクラスタ２００が使用される場合には常に図５の第１実施例における「バッファ使用」モードとなるからである。その関係から、図５（ａ）の構成に含まれている、バイパス用スイッチ１３０−Ｓ３に該当するスイッチは省略されている。それ以外の基本的な動作は図５と共に説明した第１実施例の場合と同様である。
【００５３】
尚、図１１（ａ）に示す各構成要素、即ち、制御部２８２−１，入力サイズレジスタ２８２−３，ダブルバッファを構成する各メモリ２８１−Ａ，２８１−Ｂのそれぞれに対応するデータ入力数カウンタ１，２（２８２−４）、出力サイズレジスタ２８２−５，ダブルバッファを構成する各メモリ２８１−Ａ，２８１−Ｂのそれぞれに対応するデータ出力数カウンタ１，２（２８２−６）及び自動送出モード選択レジスタ２８２−８は、夫々、図５（ａ）に示される制御部１３１−１，入力サイズレジスタ１３１−３，ダブルバッファを構成する各メモリ１３０−Ａ，１３０−Ｂのそれぞれに対応するデータ入力数カウンタ１，２（１３１−４）、出力サイズレジスタ１３１−５，ダブルバッファを構成する各メモリ１３０−Ａ，１３０−Ｂのそれぞれに対応するデータ出力数カウンタ１，２（１３１−６）及び自動送出モード選択レジスタ１３１−８に対応し、同様の機能を有するため、その説明を省略する。又、切替スイッチ２８１−Ｓ１，２８１−Ｓ２，２８１−Ｓ４は、夫々、図５（ａ）中の１３０−Ｓ１，１３０−Ｓ２，１３０−Ｓ４に夫々対応する。
【００５４】
尚この例では、自動送出モードが無効である場合、他クラスタ１００からのデータバッファ読出しの開始は以下の通りになされる。即ち、「バッファ内データ出力可能信号」の立ち上がりを受け取った他のクラスタ１００は、当該データバッファクラスタ２００に対して「アドレス＋読出コマンド」を発行する。この部分は、クラスタ内にデータバッファ部がある上記の実施例の場合と同じである。しかしながらこの実施例の場合、読出コマンドは当該他のクラスタ１００側のアドレス生成部で生成されて発行される。そして当該他のクラスタ１００では、メモリアクセス用のカウンタ値と、コンフィギュレーション情報により設定される所要データ数が書き込まれるレジスタ（出力サイズレジスタ２８３−５に相当するレジスタ）の値とを比較し、一致した段階でデータバッファクラスタ２００に対する読出コマンドの発行を停止する。他の部分は図５（ａ）の場合と同様であるので、その説明を省略する。
【００５５】
図１１（ｂ）に示されるコンフィギュレーション情報は、本実施例の場合データバッファ部（２８０−１，２８０−２）が二つあるため、それらに対応した二組のコンフィギュレーション情報を含む。即ち、各データバッファ部毎に「自動送出モード有無」の設定フィールド、「入力データサイズ」情報フィールド、「出力データサイズ」情報フィールドを夫々有する。上記の如く、第１実施例の場合に設けられていた「バッファ使用の有無」の設定フィールドは不要であるため、省略されている。
【００５６】
また、この例ではデータバッファクラスタ２００を他の複数クラスタ１００の中央部分に設けてあるが、この構成とは異なり、逆にデータバッファクラスタ２００を他の演算器群衆用クラスタ１００の周辺部分に配置することも可能である。その場合、当該データバッファクラスタ２００のデータバッファを外部メモリからのデータフェッチ用バッファとしても使用可能となる。その例は、後程第５実施例として説明する。
【００５７】
図１２は、本発明の第４実施例による再構成可能演算装置の構成を示す。この例も上記第２の課題を解決するのに有効な構成である。ただし、図６の例同様、クラスタ間データ転送用のネットワークがクロスバーではなく、配線１９８とスイッチ１９５，１９９で構成されている。そしてこの例も図９の例同様、データバッファ部１３５を各演算器群収容クラスタ１００内部ではなく、それらのクラスタ１００と同じレベルにデータバッファクラスタ２００を設けることで、そこに収容する構成を有する。この実施例におけるデータバッファクラスタ２００の構成は、クロスバー２９０を含まない点を除いて上述の第３実施例の場合と同様であり、その説明を省略する。
【００５８】
図１３は、本発明の第５実施例による再構成可能演算装置の構成を示す。この例では、演算器群収容クラスタ１００、データバッファクラスタ２００のほかに、外部メモリアクセス機能付きデータバッファクラスタ３００を設けてある。図１４は、この外部メモリアクセス機能付きデータバッファクラスタ３００の内部構成を示す。このクラスタは通常のデータバッファクラスタ２００として動作可能であるだけでなく、外部メモリへの読出アドレス生成及びこれに応じた外部メモリからのデータ受け取りが可能な構成を有する。したがって、図１４に示す外部メモリアクセス機能付きデータバッファクラスタ３００は、図１０に示す通常のデータバッファクラスタ２００と同様の構成を有する。図中、対応する構成要素には同一の符号を付し、その説明を省略する。但し、後述の如く、データバッファ制御部２８２の構成が、通常のデータバッファレジスタのものと異なり、所定の機能が追加されている。
【００５９】
図１５に第５実施例の場合の各データバッファ部を示す。図中、図１１（ａ）に示す構成と対応する構成要素には同一の符号を付し、その説明を省略する。図１３の構成と異なるのは、データバッファ制御部２８２中に、外部メモリアクセス選択レジスタ２８２−９、ソースアドレスレジスタ２８２−１０、アドレス計算部２８２−１１及びフェッチサイズ計算部２８２−１２が追加されている点である。外部メモリアクセス選択レジスタ２８２−９は制御用レジスタとして機能し、外部メモリにアクセスする否かを設定するためのレジスタである。ソースアドレスレジスタ２８２−１０には、アクセスする外部メモリの、メモリ空間上での先頭アドレスが書き込まれる。このソースアドレスはメモリ空間上のアドレスなので、外部メモリだけでなく、メモリ空間にマップされている他の情報、例えば図１３に示される複数のクラスタ１００，２００，３００で構成された再構成可能演算装置の外部に存在する内部ＲＡＭ等に対してもアクセス可能である。
【００６０】
又、フェッチサイズ計算部２８２−１２は、入力サイズレジスタ２８２−３に設定されたサイズでは外部に対してアクセスできない場合、そのサイズをアクセスできるサイズに変更するためのレジスタである。例えば、入力サイズレジスタに設定されたサイズが６４Ｂであるのに対して外部には１６Ｂ単位でしかアクセスできない場合、１６Ｂのリクエストとして発行することを可能にする（詳細後述）。アドレス計算部２８２−１１では、最初のアドレスはソースアドレスレジスタ２８２−１０のアドレスを出力し、その後このアドレスに対し、２回目は＋１６Ｂ、３回目は＋３２Ｂ、４回目は＋４８Ｂと、順次アドレスをインクリメントして出力する。また、逆にソースアドレスレジスタ２８２−１０の値が示すデータの境界が中途半端な場合にも、その調整を行うことが可能である。例えば、外部に対するアクセスの最小単位が８Ｂであるにもかかわらずソースアドレスが８Ｂ境界に合致しない場合、これを８Ｂ境界にアラインした後に、アライン後のアドレスを出力する。
【００６１】
図１６は、この場合の、データバッファ部毎のコンフィギュレーション情報を示す。第３実施例の場合に対し、上記外部メモリアクセス選択レジスタ２８２−９及びソースアドレスレジスタ２８２−１０に対して書き込むべき情報を設定する「外部アクセス」設定フィールド、「ソースアドレス」設定フィールドが追加されている。
【００６２】
図１７は、上記各々が演算器群を収容したクラスタ１００、データバッファクラスタ２００或いは外部メモリアクセス機能付きデータバッファクラスタ３００よりなり互いが電気的に接続される複数のクラスタ５００をＣＰＵ６００によって制御する際の態様について説明するための図である。図１８は、図１７に示す複数のクラスタをグループ分けしてクラスタグループとする際のグループ構成例を示す。
【００６３】
各クラスタはマスタクラスタ又はスレーブクラスタとして機能させることが可能である。例えば、その割り当ては、ＣＰＵ６００等のプロセッサが有する所定のリストによって実施可能である。ＣＰＵ６００はマスタクラスタに対して起動をかけると共に、終了指示も与える。又、マスタクラスタからプログラム終了の割り込みが割り込み調停部７００に対してなされると、割り込み調停部７００はＣＰＵ６００に対して割り込み信号を発生する。
【００６４】
各クラスタはマスタクラスタを先頭にしてクラスタグループを構成し、各クラスタグループ内で処理を行なう。クラスタグループ間のデータ転送は、例えば上記データバッファ部を介してなされる。
【００６５】
又、クラスタブループは任意のクラスタで構成可能であり、上記リストによって設定可能である。図１９は、このリストの例を示す。この例は、ソフトウェアのリスト構造を使用した例である。ここでは各々マスタクラスタをヘッドノードとしたスレーブクラスタリスト（クラスタグループリスト）として構成されている。
【００６６】
図２０は、上記の如くの複数クラスタによる再構成可能演算装置の動作フローを示す。先ず、ＣＰＵ６００側では、ステップＳ１にて、各クラスタのシーケンサの所定の状態テーブルに対し、処理タスクを設定する。ステップＳ２にてＣＰＵが各マスタクラスタに起動を指示すると、ステップＳ１１にてクラスタ５００側では各クラスタが動作を開始する。そしてステップＳ１２にて上記リストにて指定された各クラスタグループが動作を開始する。
【００６７】
ＣＰＵ側ではステップＳ３にて、クラスタがフリーランモードにあるか否かを判定する。その結果がＹｅｓの場合、ステップＳ４にてクラスタに対して演算終了指示を行なう。Ｎｏ（通常モード）であればステップＳ５にて、クラスタ側から終了通知の割り込みが供給されるまで待つ。
【００６８】
クラスタ側では、フリーランモードの場合、ステップＳ１３にて、クラスタグループによる演算処理を行なう。又、通常モードの場合、ステップＳ１４にてクラスタグループによる演算処理を行ない、終了時にステップＳ１５にてＣＰＵ側に対して終了通知を発行する。
【００６９】
図２１は、上記クロスバー１９０、２９０に対するコンフィギュレーション情報の生成動作を示す。図中、ステップＳ２２では複数クラスタ間のデータ転送に係るデータフローグラフを生成し、ステップＳ２３ではこれを時間方向に分割し、ステップＳ２４ではこのように時間方向に分割したものを更に空間方向に分割し、ステップＳ２５では更に空間方向に再分割してクラスタ単位のデータ転送を抽出し、ステップＳ２６ではクラスタ間に跨るデータ転送を抽出し、ステップＳ２７では、これらの抽出情報を基に、クロスバーコンフィギュレーション情報をクラスタ毎に生成する。このような処理は、所定のアプリケーションプログラムにより、コンピュータによる演算処理で実施可能である。
【００７０】
図２２は、上記クラスタグループ内での演算処理動作フロー及びクロスバーを含む演算器群に関するコンフィギュレーション変更処理動作フローを示す。ここでは、クラスタグループが合計３クラスタ、即ち一台のマスタクラスタと２台のスレーブクラスタとで構成されている。同図中、ステップＳ３１では、スレーブクラスタが処理開始可能か否かを判定する。Ｙｅｓの場合、ステップＳ３２にてマスタクラスタ内のデータ処理が開始される。ステップＳ３３ではその結果マスタクラスタ内のデータ処理が実行され、ステップＳ３４にてこれが終了すると、ステップＳ３５にて、次のステージの処理のために、マスタクラスタ内シーケンサにより、マスタクラスタ内のクロスバー１９０及び演算器群１８０のコンフィギュレーションの変更がなされたのち、ステップＳ３１に戻る。
【００７１】
第１のスレーブクラスタではステップＳ４１にて処理開始待ちを行ない、ステップＳ４２にて、マスタクラスタ又は他のスレーブクラスタ（第２のスレーブクラスタ）からの所定のデータ入力駆動により処理を開始する。ステップＳ４３にて当該処理を実行し、ステップＳ４４にて、マスタクラスタ或いは他のスレーブクラスタからの最終データ入力により、当該クラスタの処理を終了する。ステップＳ４５では、次のステージの処理のために、当該スレーブクラスタ内シーケンサにより、当該スレーブクラスタ内のクロスバー１９０及び演算器群１８０のコンフィギュレーションの変更がなされる。
【００７２】
第２のスレーブクラスタではステップＳ５１にて処理開始待ちを行ない、ステップＳ５２にて、マスタクラスタ又は他のスレーブクラスタ（即ち第１のスレーブクラスタ）からの所定のデータ入力駆動により処理を開始する。ステップＳ５３にて当該処理を実行し、ステップＳ５４にて、マスタクラスタ或いは他のスレーブクラスタからの最終データ入力により、当該クラスタの処理を終了する。ステップＳ５５では、次のステージの処理のために、当該スレーブクラスタ内シーケンサにより、当該スレーブクラスタ内のクロスバー１９０及び演算器群１８０のコンフィギュレーションの変更がなされる。
【００７３】
ここではデータがマスタクラスタ、第１のスレーブクラスタ、第２のスレーブクラスタの順に流れる場合を示したが、これに限られず、その態様はコンフィギュレーション情報の設定により任意に変更可能であり、その結果データがマスタクラスタ、第２のスレーブクラスタ、第１のスレーブクラスタの順に流れるように設定することも可能であり、又、データがマスタクラスタ、第１のスレーブクラスタ、第２のスレーブクラスタ、更にマスタクラスタの順に流れる場合、即ち最終的にスレーブクラスタからマスタクラスタに最終データが戻るように設定することも又可能である。更に、クラスタ間をデータが往復するような、より複雑なデータの流れの設定も自由である。
【００７４】
図２３は、クラスタ１００内にデータバッファ部１３５がある場合（例えば第１実施例）のデータバッファ部１３５の制御フローを示す。図中、ステップＳ６１にて「バッファ使用」モードか否かを判定し、Ｎｏの場合ステップＳ６２にて、クラスタ内部のバッファをバイパスするスイッチをオンとする。他方Ｙｅｓの場合、ステップＳ６３にてクラスタ内部のスイッチの切替によりデータバッファを通るパスを設定する。ステップＳ６４にて、データ入力の有無を判定し、Ｙｅｓの場合ステップＳ６５で、ダブルバッファのうちの一のメモリに対して書き込みを開始し、ステップＳ６６にて書き込みポインタをインクリメントし、ステップＳ６７にてデータ入力数カウンタの値を１インクリメントし、ステップＳ６８にて入力サイズレジスタ値とデータ入力数カウンタ値とを比較し、一致すればステップＳ６９にてデータバッファに対する入力スイッチを他のメモリ側に切り替える。
【００７５】
ステップＳ７０にてデータバッファからの出力が一のメモリからとなるように切り替え、ステップＳ７１にて「自動送出モード」か否かを判定する。他方、ステップＳ７２では他のメモリの書き込みポインタをリセットし、ステップＳ７３では他のメモリ用データ入力数カウンタをリセットする。、ステップＳ７１の結果がＹｅｓの場合図２４のフローに移行し、Ｎｏの場合図２５のフローに移行する。
【００７６】
ステップＳ７４ではデータ入力の有無を判定し、Ｙｅｓの場合ステップＳ７５にてダブルバッファのうちの他のメモリに対して書き込みを開始し、ステップＳ７６にてその書き込みポインタをインクリメントし、ステップＳ７７にてそのデータ入力数カウンタの値を１インクリメントし、ステップＳ７８にて入力サイズレジスタ値とデータ入力数カウンタ値とを比較し、一致すればステップＳ７９にてデータバッファに対する入力スイッチを一のメモリ側に切り替える。
【００７７】
ステップＳ８０にてデータバッファからの出力が他のメモリからとなるように切り替え、ステップＳ８１にて「自動送出モード」か否かを判定する。他方、ステップＳ８２では一のメモリに対する書き込みポインタをリセットし、ステップＳ８３では一のメモリ用データ入力数カウンタをリセットする。、ステップＳ７１の結果がＹｅｓの場合図２４のフローに移行し、Ｎｏの場合図２５のフローに移行する。
【００７８】
ステップＳ７１のＹｅｓ又はステップＳ８１のＹｅｓの場合、図２４のステップＳ９１に移り、ステップＳ７０又はＳ８０にてそこから出力されるように切り替わっているメモリからクラスタ内にデータの送出を開始する。即ち、ステップＳ９２にて当該メモリの出力用ポインタの示すアドレスからデータを読出し、ステップＳ９３にてポインタをインクリメントし、ステップＳ９４にてデータ出力数カウンタをインクリメントし、ステップＳ９５にて出力データサイズレジスタ値とデータ出力数カウンタ値とを比較する。その結果Ｙｅｓの場合、ポインタをリセットし（ステップＳ９６）、データ出力数カウンタをリセットする（ステップＳ９７）。
【００７９】
他方、ステップＳ７１のＮｏ、又はステップＳ８１のＮｏの場合、図２５のステップＳ１０１に移り、バッファ内データ出力可能信号をアサートし、ステップＳ１０２にてこの信号をクラスタ内部が受信し、ステップＳ１０３にてクラスタ内部から読出コマンドとメモリアドレスとが該当するメモリ、即ち、ステップＳ７０又はＳ８０にてそこから出力されるように切り替わっているメモリに対して発行される。ステップＳ１０４では当該メモリはクラスタ内に対してデータを出力し、ステップＳ１０５では所要データ読出し完了か否かを判定し、完了するまでステップＳ１０３乃至Ｓ１０５のループを繰り返す。
【００８０】
図２６は、データバッファ部をデータバッファクラスタとして独立して設けた実施例、即ち、第３，第４及び第５実施例におけるデータバッファクラスタの制御フローを示す。尚、データバッファ部の動作は、「バッファ使用モード」が無効の場合のバイパススイッチによる動作を除いて図２３乃至図２５の場合と同様であり、その説明を省略する。
【００８１】
図２６（ａ）は、データバッファクラスタを含む場合の各クラスタの属性、グループ分けの例、及びマスタクラスタからデータバッファクラスタに対してコンフィギュレーション切替条件信号を送る場合を示す。
【００８２】
図２６（ｂ）において、ステップＳ１１１にてマスタクラスタ１で切替条件信号が発生すると、ステップＳ１１２にてマスタクラスタ１からデータバッファクラスタ０に対してこの切替条件信号が転送され、ステップＳ１１３にてマスタクラスタ１内のシーケンサにより、マスタクラスタ１のコンフィギュレーションが変更される。他方、ステップＳ１１４では、マスタクラスタ１からの切替条件信号を受信したデータバッファクラスタ０は、ステップＳ１１５にて、当該クラスタ内のシーケンサにより、データバッファクラスタ０のコンフィギュレーションが変更される。
【００８３】
なおここで、マスタクラスタ１からデータバッファクラスタ０へのコンフィギュレーション切替条件信号の送出はクロスバー経由で行なわれる。マスタクラスタ１内の切替条件信号がデータバッファクラスタ０へ転送され、その結果、マスタクラスタ１とデータバッファクラスタ０とは、シーケンサ内の状態テーブルの情報が一致することになる。このように、同じ切替条件信号を使用して各クラスタ内のコンフィギュレーションを互いに同期させて切り替えることが可能となる。
【００８４】
図２７は、データバッファ部をデータバッファクラスタの形態で独立させ、更に、外部メモリ空間からのデータフェッチ機能を設けた実施例、即ち、第５実施例におけるデータバッファクラスタの制御フローを示す。尚、データバッファクラスタにおけるコンフィギュレーション切替動作は図２６の場合と同様であり、その説明を省略する。又、クラスタ間のデータ転送に係るデータバッファ部の動作は、「バッファ使用モード」が無効の場合のバイパススイッチによる動作を除いて図２３乃至図２５の場合と同様であり、その説明を省略する。
【００８５】
ステップＳ１２１にて外部アクセスモードか否かを判定し、Ｎｏの場合、図２３のステップＳ６４に移行する。Ｙｅｓの場合、ステップＳ１２３にて、入力サイズ設定情報から、外部に対するフェッチサイズを計算する。ステップＳ１２４では入力サイズ設定情報からデータフェッチ回数（ｋ）を計算する。ステップＳ１２５では、リクエスト回数＝０に初期化する。
【００８６】
ステップＳ１２６では、ソースアドレスレジスタに書き込まれたアドレスがデータフェッチ境界か否かを判定し、ＮｏならステップＳ１３２にて、外部メモリアドレスとして、ソースアドレス値をデータフェッチサイズにアラインしたものを設定し直す。他方、Ｙｅｓの場合、ステップＳ１２７にて外部アドレスとしてソースアドレス値そのものを設定し、ステップＳ１２８にて外部メモリアドレスと読出リクエストとを外部に対し出力する。
【００８７】
ステップＳ１２９にてリクエスト回数をインクリメントし、ステップＳ１３０にて、読出リクエスト回数値が、データフェッチ回数（ｋ）を超えたか否かを判定する。その結果Ｎｏなら、ステップＳ１３１にて、外部メモリアドレスを、現在の値に対してデータフェッチサイズを加えたものに増加し、ステップＳ１２８に戻る。
【００８８】
ステップＳ１３０の結果がＹｅｓとなった場合、データフェッチを終了する。このようにして外部メモリからフェッチしたデータは当該データクラスタバッファのデータバッファに入力される。その後、他のクラスタから読出コマンドが発行され、フェッチされたデータが当該他のクラスタに取り込まれることになる。このうち外部からデータがデータバッファへ入力される処理以降の処理は図２３のステップＳ６４以降と同様であるため、その説明を省略する。
【００８９】
本発明は以下の付記に記載の構成を含む。
（付記１）
複数の同時動作可能な演算器と、
当該複数の演算器の状態を制御するシーケンサと、
演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置であって、
演算器に対してデータを入力する際に、データバッファを介すパスと、介さないパスとを設け、
前記二つのパスの選択及びデータバッファの動作を制御するデータバッファ制御部を設けてなり、
データバッファ制御部によるパスの選択及びデータバッファの動作制御の内容は、コンフィギュレーションメモリに格納されたコンフィギュレーション情報によって設定される構成とされてなる演算装置。
（付記２）
更に、所定の記憶装置を含む付記１に記載の演算装置。
（付記３）
更に、演算器間の電気的接続を切り替えるネットワークよりなる付記１又は２に記載の演算装置。
（付記４）
シーケンサは、コンフィギュレーションメモリに格納されたコンフィギュレーション情報のアドレスを指定する情報を格納した状態テーブルと、コンフィギュレーションメモリに対して状態テーブルから出力するアドレスを読み出す状態制御部とよりなる付記１乃至３の内の何れか一項に記載の演算装置。
（付記５）
更に外部からコンフィギュレーション情報を取り込む手段を有する付記１乃至４の内の何れか一項に記載の演算装置。
（付記６）
前記データバッファ制御部によるデータバッファの動作制御の内容は、動作モード及び動作パラメータによって制御される構成とされてなる付記１乃至５の内の何れか一項に記載の演算装置。
（付記７）
前記データバッファ制御部による制御内容は、シーケンサにより、状態毎に切替可能な構成とされてなる付記１乃至６のうちの何れか一項に記載の演算装置。
（付記８）
データバッファ制御部を制御するためのコンフィギュレーション情報として、データバッファの使用の有無を設定する情報を設けてなる付記１乃至７のうちの何れか一項に記載の演算装置。
（付記９）
前記データバッファはダブルバッファの構成を有し、
データバッファを制御するコンフィギュレーション情報にてデータバッファを構成する各メモリ当たりの書き込みデータサイズを指定し、
外部からの入力データサイズが当該指定の書き込みデータサイズと一致した場合に、ダブルバッファのメモリを切り替え、それまで外部から書き込まれていたメモリから内部にデータを取り込む構成とされてなる付記１乃至８のうちの何れか一項に記載の演算装置。
（付記１０）
前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器又は記憶装置に対して取り込む構成とされ、
その取り込むデータ数は、コンフィギュレーション情報にて指定されたデータサイズ分とされてなる付記９に記載の演算装置。
（付記１１）
データバッファへの入力が完了した際に演算器に対してデータ出力可能信号を出力し、演算器からデータバッファに対して、読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能な構成とされてなる付記９に記載の演算装置。
（付記１２）
前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器又は記憶装置に対して取り込む構成とし、その取り込むデータ数は、コンフィギュレーション情報にて指定されたデータサイズ分とするモードと、データバッファへの入力が完了した際に演算器に対してデータ出力可能信号を出力し、演算器からデータバッファに対して、読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能とするモードとのモード切替が、コンフィギュレーション情報の設定によりなされる構成とされてなる付記９に記載の演算装置。
（付記１３）
前記演算装置の構成を有するモジュールを複数含み、各モジュール間のデータ転送はデータバッファ制御部にて制御されるデータバッファを介して実施され、各モジュールに含まれるコンフィギュレーションメモリ内のコンフィギュレーション情報にて制御され、データバッファ使用の有無が設定され留構成の付記１乃至１２の内の何れか一項に記載の演算装置。
（付記１４）
各モジュールはクロスバーを有し、モジュール間のデータ転送が当該クロスバーにより実現され、各モジュールの入出力データが当該クロスバーに接続されると共に、隣接する他構成モジュール間のデータ転送をも実施可能な構成とされてなり、クロスバーの設定情報は、該当モジュール内のコンフィギュレーションメモリ内の情報により実施され、、その設定の切替が当該モジュール内のシーケンサにより制御される構成とされてなる付記１３に記載の演算装置。
（付記１５）
各モジュールの入力および出力が、モジュール間接続配線にスイッチを設けて切り替え可能に実施され、
当該スイッチの設定は、コンフィギュレーションメモリに設定された情報が当該モジュールの外部に設けた制御部あるいはＣＰＵにより、別途設定されたコンフィギュレーション選択情報に応じて選択され、当該設定情報がスイッチ内の一時記憶回路に書き込まれることにより、その接続が切り替え可能な構成とされてなる付記１３に記載の演算装置。
（付記１６）
データバッファと、
当該データバッファの動作を制御するデータバッファ制御部と、
当該データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリと、
当該コンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサとより構成されることを特徴とするデータバッファ装置。
（付記１７）
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、
データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、
前記演算器モジュールと前記データバッファモジュールとを各々一以上設けてなる演算装置。
（付記１８）
前記データバッファモジュール内のデータバッファ制御部は、ダブルバッファ構成を有するデータバッファを有し、データバッファ制御部を制御するためのコンフィギュレーション情報として、データバッファの一メモリ当たりに書き込むデータサイズ、そのデータバッファから外部に出力するデータサイズを設け、
ダブルバッファへの外部から入力されるデータサイズが、コンフィギュレーション情報に記載された情報である入力データサイズと一致した際に、当該ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリから外部にデータを出力する構成とされてなる付記１７に記載の演算装置。
（付記１９）
前記データバッファモジュールのデータバッファ制御部では、データバッファの入力が完了したメモリからデータを自動的に演算器モジュールに対して送り込む機能を有してなり、その出力データ数は、当該データバッファ制御部を有するモジュール内のコンフィギュレーションメモリ内のコンフィギュレーション情報として設定された出力データサイズで設定された分だけとされてなる付記１７に記載の演算装置。
（付記２０）
データバッファモジュールのデータバッファ制御部では、データバッファへの入力が完了した際に演算器モジュールに対してデータ出力可能信号を出力し、データ出力可能信号を受け取った演算器モジュールから当該データバッファモジュールに対して読出しアドレスと読出しコマンドとを発行することにより、データ取り込みを制御可能な構成とされてなる付記１７に記載の演算装置。
（付記２１）
データバッファモジュールのデータバッファ制御部では、前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器モジュールに送出する構成とされ、その送出するデータ数は、コンフィギュレーション情報にて指定されたデータサイズ分とされるモードと、データバッファへの入力が完了した際に演算器モジュールに対してデータ出力可能信号を出力し、演算器モジュールからデータバッファモジュールに対して、読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能とするモードとのモード切替が、コンフィギュレーション情報の設定により可能な構成とされてなる付記１７に記載の演算装置。
（付記２２）
データバッファモジュールが、外部メモリ空間からデータを取り込む機能を有してなり、データバッファとそのデータバッファの動作を制御するデータバッファ制御部を有し、データバッファの動作の設定情報を格納するコンフィギュレーションメモリを有し、シーケンサにより、データバッファの構成が各状態毎に切り替え可能とされてなり、コンフィギュレーション情報としてアクセス先の外部メモリ空間内のアドレス情報及び取り込むデータサイズを設け、その情報により外部に対して読出アドレスと読出リクエストとを発行する機能を有する構成とされてなる付記１７に記載の演算装置。
（付記２３）
データバッファモジュールは、外部メモリ空間からデータを取り込む機能を有してなり、データバッファとそのデータバッファの動作を制御するデータバッファ制御部を有し、データバッファの動作の設定情報を格納するコンフィギュレーションメモリを有し、シーケンサにより、データバッファの構成が各状態毎に切り替え可能とされてなり、コンフィギュレーション情報として、アクセス先の外部メモリ空間内のアドレス情報及び取り込むデータサイズとを設け、その情報により外部に対して読出アドレスと読出リクエストとを発行する機能を有する構成とされてなり、
コンフィギュレーション情報により、外部からデータを取り込むモードと、内部の他のモジュールからデータを転送するモードとを切り替え可能とされてなる付記１７乃至２１のうちの何れか一項に記載の演算装置。
（付記２４）
データバッファモジュールは、外部アクセス可能なデータサイズと読み出すデータサイズとが異なるとき、外部に出力するアドレスを計算するアドレス計算部と、外部に出力するデータフェッチサイズを調整するデータフェッチサイズ計算部とを有する構成とされてなる付記２３に記載の演算装置。
（付記２５）
複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置の制御方法であって、
演算器に対してデータを入力する際に、所定のデータバッファを介するパスと、介さないパスとを設ける段階と
前記二つのパスの選択及びデータバッファの動作を制御する段階と、
前記パスの選択及びデータバッファの動作制御の内容を、コンフィギュレーションメモリに格納されたコンフィギュレーション情報によって設定する段階とよりなる演算装置の制御方法。
（付記２６）
更にコンフィギュレーション情報にてデータバッファの使用の有無を設定する段階よりなる付記２５に記載の演算装置の制御方法。
（付記２７）
更にコンフィギュレーション情報にてダブルバッファの構成を有するデータバッファを構成する各メモリ当たりの書き込みデータサイズを指定する段階と、
外部からの入力データサイズが当該指定の書き込みデータサイズと一致した場合に、ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリから内部にデータを取り込む段階とよりなる付記２５又は２６に記載の演算装置の制御方法。
（付記２８）
更に前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器又は記憶装置に対して取り込む段階と、
その取り込むデータ数を、コンフィギュレーション情報にて指定されたデータサイズ分とする段階とよりなる付記２７に記載の演算装置の制御方法。
（付記２９）
データバッファへの入力が完了した際に演算器に対してデータ出力可能信号を出力し、演算器からデータバッファに対して、読出アドレスと読出しコマンドとを発行することにより、データ取り込みを制御する段階よりなる付記２７に記載の演算装置の制御方法。
（付記３０）
前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器又は記憶装置に対して取り込む構成とされ、その取り込むデータ数は、コンフィギュレーション情報にて指定されたデータサイズ分とされるモードと、データバッファへの入力が完了した際に演算器に対してデータ出力可能信号を出力し、演算器からデータバッファに対して、読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能とするモードとのモード切替を、コンフィギュレーション情報の設定により行なう段階よりなる付記２７に記載の演算装置の制御方法。
（付記３１）
前記演算装置の構成を有するモジュールを複数含む演算装置の制御方法であって、
各モジュール間のデータ転送をデータバッファを介して実施する段階と、
各モジュールに含まれるコンフィギュレーションメモリ内のコンフィギュレーション情報にて当該データ転送の制御内容を設定する段階とより、
前記データ転送制御内容を設定する段階では、データバッファの使用の有無を設定可能とされてなる付記２７乃至３０のうちの何れか一項に記載の演算装置の制御方法。
（付記３２）
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、前記演算器モジュールと前記データバッファモジュールとを各々一以上設けてなる演算装置の制御方法であって、
コンフィギュレーション情報にて前記データバッファモジュール内のデータバッファ制御部が有するダブルバッファ構成を有するデータバッファの一メモリ当たりに書き込むデータサイズ及びデータバッファから外部に出力するデータサイズとを設定する段階と、
ダブルバッファへの外部からの入力データサイズが、コンフィギュレーション情報に記載された情報である入力データサイズと一致した際に、当該ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリから外部にデータを出力する段階とよりなる演算装置の制御方法。
（付記３３）
ダブルバッファ構成を有するデータバッファの入力が完了したメモリからデータを自動的に演算器モジュールに対して送り込む段階と、
その際の出力データ数を、当該データバッファ制御部を有するモジュール内のコンフィギュレーションメモリ内のコンフィギュレーション情報として設定された出力データサイズで設定された分だけとする段階とよりなる付記３１に記載の演算装置の制御方法。
（付記３４）
データバッファモジュールのデータバッファ制御部では、データバッファへの入力が完了した際に演算器モジュールに対してデータ出力可能信号を出力し、データ出力可能信号を受け取った演算器モジュールから当該データバッファモジュールに対して読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能な構成とされてなる付記３２に記載の演算装置の制御方法。
（付記３５）
前記入力が完了したデータバッファのメモリから入力されたデータを自動的に演算器モジュールに送出する構成とされ、その送出するデータ数は、コンフィギュレーション情報にて指定されたデータサイズ分とされるモードと、データバッファへの入力が完了した際に演算器モジュールに対してデータ出力可能信号を出力し、演算器モジュールからデータバッファモジュールに対して、読出アドレスと読出コマンドとを発行することにより、データ取り込みを制御可能とするモードとのモード切替を、コンフィギュレーション情報の設定により行なう段階よりなる付記３２に記載の演算装置の制御方法。
（付記３６）
データバッファモジュールが外部メモリ空間からデータを取り込む機能を有し、
データバッファの状態とそのデータバッファの動作とを制御する段階と、
データバッファの動作の設定情報を格納するコンフィギュレーションメモリのコンフィギュレーション情報として、アクセス先の外部メモリ空間内のアドレス情報及び取り込むデータサイズとを設定する段階と、
その情報により外部に対して読出アドレスと読出リクエストとを発行する段階とよりなる付記３２乃至３６のうちの何れか一項に記載の演算装置の制御方法。
（付記３７）
データバッファモジュールにて、外部アクセス可能なデータサイズと読み出すデータサイズとが異なるとき、外部に出力するアドレスを計算する段階と、
外部に出力するデータフェッチサイズを調整する段階とよりなる付記３６に記載の演算装置の制御方法。
（付記３８）
複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、演算器の状態毎の設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリとよりなる演算装置をコンピュータにて制御するためのプログラムであって、
演算器に対してデータを入力する際に、所定のデータバッファを介するパスと、介さないパスとを設ける段階と
前記二つのパスの選択及びデータバッファの動作を制御する段階と、
前記パスの選択及びデータバッファの動作制御の内容を、コンフィギュレーションメモリに格納されたコンフィギュレーション情報によって設定する段階とをコンピュータに実行させるための命令よりなるプログラム。
（付記３９）
複数の同時動作可能な演算器、演算器の状態毎の設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することで演算器の状態を制御するシーケンサよりなる演算器モジュールと、データバッファ、データバッファの動作を制御するデータバッファ制御部、データバッファの動作制御に関する設定情報を格納するコンフィギュレーションメモリ及びコンフィギュレーションメモリに格納された情報を指定することによりデータバッファ制御部の状態を切替制御するシーケンサよりなるデータバッファモジュールとよりなり、前記演算器モジュールと前記データバッファモジュールとを各々一以上設けてなる演算装置をコンピュータにて制御するためのプログラムであって、
コンフィギュレーション情報にて前記データバッファモジュール内のデータバッファ制御部が有するダブルバッファ構成を有するデータバッファの一メモリ当たりに書き込むデータサイズ及びデータバッファから外部に出力するデータサイズとを設定する段階と、
ダブルバッファへの外部からの入力データサイズが、コンフィギュレーション情報に記載された情報である入力データサイズと一致した際に、当該ダブルバッファのメモリを切り替え、それまで外部から書き込んでいたメモリから外部にデータを出力する段階とをコンピュータに実行させるための命令よりなるプログラム。
（付記４０）
付記３８又は３９に記載のプログラムが格納されたコンピュータ読取り可能記録媒体。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施の形態による再構成可能演算装置（クラスタ）のブロック図である。
【図２】本発明の実施の形態によるクラスタ間データ転送方法の説明図である。
【図３】本発明の第１実施例による複数クラスタ構成演算装置のブロック図である。
【図４】図３に示す実施例における各クラスタの内部構成を示すブロック図である。
【図５】図３に示す実施例におけるデータバッファ部の内部構成を示すブロック図及びデータバッファ部に入力されるコンフィギュレーション情報の説明図である。
【図６】本発明の第２実施例による複数クラスタ構成演算装置のブロック図である。
【図７】図６に示す実施例におけるスイッチの構成について説明するための図である。
【図８】図６に示す実施例における各クラスタの内部構成を示すブロック図である。
【図９】本発明の第３実施例による複数クラスタ構成演算装置のブロック図である。
【図１０】図９に示す実施例におけるデータバッファクラスタの内部構成を示すブロック図である。
【図１１】図９に示す実施例におけるデータバッファ部の内部構成を示すブロック図及びデータバッファ部に入力されるコンフィギュレーション情報の説明図である。
【図１２】本発明の第４実施例による複数クラスタ構成演算装置のブロック図である。
【図１３】本発明の第５実施例による複数クラスタ構成演算装置のブロック図である。
【図１４】図１３に示す実施例におけるデータバッファクラスタの内部構成を示すブロック図である。
【図１５】本発明の第３実施例におけるデータバッファ部の内部構成を示すブロック図である。
【図１６】図１５に示すデータバッファ部に入力されるコンフィギュレーション情報の説明図である。
【図１７】本発明の実施の形態による複数クラスタのＣＰＵによる制御方法を説明するための図である。
【図１８】図１７の方法におけるクラスタグループの構成例を示す図である。
【図１９】クラスタブループを設定するクラスタリストの例を示す図である。
【図２０】本発明の実施の形態による複数クラスタのＣＰＵによる制御動作のフローチャートである。
【図２１】本発明の実施の形態によるクロスバー設定情報の生成方法を示すフローチャートである。
【図２２】本発明の実施の形態によるクラスタグループ内の演算処理動作及びクロスバーを含む演算器群のコンフィギュレーション変更処理動作のフローチャートである。
【図２３】本発明の実施の形態による、クラスタ内にデータバッファ部がある場合のデータバッファ部の制御動作のフローチャート（その１）である。
【図２４】本発明の実施の形態による、クラスタ内にデータバッファ部がある場合のデータバッファ部の制御動作のフローチャート（その２）である。
【図２５】本発明の実施の形態による、クラスタ内にデータバッファ部がある場合のデータバッファ部の制御動作のフローチャート（その３）である。
【図２６】本発明の実施の形態による、データバッファクラスタが独立して設けられた場合のデータバッファ部の制御動作のフローチャートである。
【図２７】本発明の実施の形態による、データバッファクラスタが独立して設けられ且つ外部メモリ空間からのデータフェッチ機能を設けた場合のデータバッファ部の制御動作のフローチャートである。
【符号の説明】
【００９１】
１００  再構成可能演算装置（クラスタ）
１１０、２１０  シーケンサ
１２０、２２０  コンフィギュレーションメモリ
１３０  データバッファ（ダブルバッファ）
１３５、２８０  データバッファ部
１３１  データバッファ制御部
１５０  演算器
１８０  演算器群
１９０，２９０  クロスバー
１９５，１９９  スイッチ
２００  データバッファクラスタ
３００  外部メモリフェッチ機能付きデータバッファクラスタ
【図１】
2006018514.tif 000003
【図２】
2006018514.tif 000004
【図３】
2006018514.tif 000005
【図４】
2006018514.tif 000006
【図５】
2006018514.tif 000007
【図６】
2006018514.tif 000008
【図７】
2006018514.tif 000009
【図８】
2006018514.tif 000010
【図９】
2006018514.tif 000011
【図１０】
2006018514.tif 000012
【図１１】
2006018514.tif 000013
【図１２】
2006018514.tif 000014
【図１３】
2006018514.tif 000015
【図１４】
2006018514.tif 000016
【図１５】
2006018514.tif 000017
【図１６】
2006018514.tif 000018
【図１７】
2006018514.tif 000019
【図１８】
2006018514.tif 000020
【図１９】
2006018514.tif 000021
【図２０】
2006018514.tif 000022
【図２１】
2006018514.tif 000023
【図２２】
2006018514.tif 000024
【図２３】
2006018514.tif 000025
【図２４】
2006018514.tif 000026
【図２５】
2006018514.tif 000027
【図２６】
2006018514.tif 000028
【図２７】
2006018514.tif 000029