(57)【要約】【課題】  処理要素の配置や処理の制御構造に関わりなく一定の良好な処理効率が得られる再構成可変演算装置を提供する。【解決手段】  再構成可能演算装置は、所与の第１のコンフィギュレーション・データにより再構成可能で互いに同時動作可能な複数の演算器と、ＲＡＭと、演算装置として必要とされる種々の処理要素と、前記の演算器、ＲＡＭおよび種々の処理要素を相互に接続し、接続される資源の間のデータ転送を前記資源の位置および種類によらず均一に行うとともに、所与の第２のコンフィギュレーション・データにより再構成可能な資源間ネットワークと、前記第１および第２のコンフィギュレーション・データを格納するコンフィギュレーション・メモリを備える。コンフィギュレーション・データを外部記憶装置からコンフィギュレーション・メモリへロードし、複数の演算手段から得られる情報に基づき、前記第１および第２のコンフィギュレーション・データを適切なシーケンスおよびタイミングで再構成可能な処理資源に供給する。【選択図】図１
2006031127.tif 000002
【特許請求の範囲】
【請求項１】
所与の第１のコンフィギュレーション・データにより再構成可能で互いに同時動作可能な複数の演算手段と、
読み書き自在の少なくとも１つの記憶手段と、
演算装置として必要とされる種々の処理要素と、
前記複数の演算手段および前記記憶手段の任意の出力データを前記複数の演算手段の任意の入力のデータとすることを可能とするとともに、前記複数の演算手段、前記記憶手段および前記の種々の処理要素からなる資源の間のデータ転送を前記資源の位置および種類にほぼ依存することなく均一な転送時間で行うとともに、所与の第２のコンフィギュレーション・データにより再構成可能な資源間相互接続手段と、
前記第１および第２のコンフィギュレーション・データを格納する格納手段と、
前記コンフィギュレーション・データを外部記憶装置から前記格納手段へロードする手段と、
前記複数の演算手段から得られる情報に基づき、前記第１および第２のコンフィギュレーション・データを適切なシーケンスおよびタイミングで前記の再構成可能な手段に供給する供給手段とを備えた
ことを特徴とする再構成可能演算装置。
【請求項２】
前記の資源間相互接続手段は、前記複数の任意の演算手段の出力データを前記複数の任意の演算手段の入力データとすることを可能とするセレクタ手段を含む
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項３】
前記の資源間相互接続手段は、前記の接続される資源の入力端子に出力が接続されたセレクタ回路を含み、
各演算手段の入力に出力が接続されたセレクタ回路の入力には、前記複数の演算手段の総ての出力が接続され、
各セレクタ回路は、出力段にフリップフロップを備える
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項４】
前記供給手段は、
前記複数の演算手段から得られる情報に基づき再構成を行うタイミングを示すタイミング信号を生成するタイミング手段と、
所定数の状態に対応した状態番号を格納するテーブル手段と、
現在の状態番号を保持する保持手段と、
前記現在の状態番号を前記テーブル手段に格納された状態番号の１つに関係付ける手段と
前記タイミング信号に応じて前記の関係付けられた状態番号を出力する出力手段とを含み、
前記状態番号は前記格納手段のアドレスである
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項５】
前記供給手段は、
前記複数の演算手段の各々に含まれる各比較手段が出力する比較結果が一致であることを示す一致信号に関係付けられた所定のコードを生成する手段と、
前記所定のコードが同時に複数生成された場合、前記複数のコードの１つを選択する手段と、
再構成を行うタイミングを示すタイミング信号を生成するタイミング手段と、
所定数の状態に対応した状態番号リストの各が前記所定のコードに対応した複数の状態番号を含むような前記状態番号リストを格納するテーブル手段と、
現在の状態番号を保持する保持手段と、
前記現在の状態番号を前記テーブル手段に格納された状態番号リストの１つに関係付ける手段と
前記タイミング信号に応じて、前記の関係付けられた状態番号リストから前記の選択されたコードに対応する状態番号を出力する手段とを含み、
前記状態番号は前記格納手段のアドレスである
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項６】
前記供給手段は、
前記の関係付けられた状態番号を予め準備し、前記タイミング信号に応じて、前記の関係付けられた状態番号で前記格納手段からコンフィギュレーション・データを読み出す手段とを含む
ことを特徴とする請求項４記載の再構成可能演算装置。
【請求項７】
前記格納手段が、前記の再構成可能な手段の各グループに設けられ、
前記のロードする手段が、前記の再構成可能な手段の各グループに割り当てられたコンフィギュレーション・データを前記の再構成可能な手段の各グループに設けられた前記格納手段にロードする
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項８】
前記の再構成可能な手段は、受け取ったコンフィギュレーション・データの少なくとも一部をデコードして用いる
ことを特徴とする請求項１記載の再構成可能演算装置。
【請求項９】
複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、前記演算器の状態ごとの設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリよりなる演算装置であって、
前記複数の演算器の任意の演算器の出力が、他の複数の演算器の入力となる接続手段を有する演算装置。
【請求項１０】
前記演算器は、他の複数の演算器の出力の内の一つを選択する選択手段を有することを特徴とする請求項９記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的に構成を変えることにより様々な処理を行うことができる動的再構成可能な演算装置に関する。
【背景技術】
【０００２】
従来の再構成可能な演算装置において、複数のタスクを実行させる方法は、二つのタイプに分けられる。一つは、回路を空間的に分割して、それぞれの部分にタスクを割り当てる方法（space parallelism）であり、もう一つはコンフィギュレーションを時分割に切り替えて異なるタスクを実行する方法(time parallelism)である。本発明は、後者のタイプ属し、コンフィギュレーションをクロックに同期して切り換えることにより、複数のタスクの時分割多重処理が可能でかつ動的再構成可能な演算装置に関する。
【０００３】
このような演算装置には、例えば特許文献１に開示されたものがある。図２６は、特許文献１のアレイ型プロセッサのプロセッサエレメント（ＰＥ）アレイ部の一例を示す図である。図２６において、ＰＥアレイ部は、各プロセッサエレメント９９０の周囲を８つのプログラマブルスイッチエレメント９９１で取り囲むように、配設した構成である。隣接するプログラマブルスイッチエレメント９９１同士、および隣接するプロブラマブルスイッチエレメント９９１とプロセッサエレメント９９０とがデータバス９９２により電気的に接続されており、また、プログラマブルスイッチエレメント９９１およびプロセッサエレメント９９０に、演算制御バス９９３が配線してある。一つのプロセッサエレメント９９０が複数のスイッチエレメント９９１に接続されていることにより、プロセッサエレメント９９０のデータ入出力接続の自由度が高められている。
【０００４】
図２７は、図２６に示した従来のＰＥアレイにおけるデータ転送の遅延の問題を説明するための図であり、図２７Ａは、ＰＥアレイの処理に関与する処理要素の動作を示し、２７Ｂは、処理サイクルごとに動作が進行するようすを示す。図２７には、ＰＥアレイの左辺からデータを入力しながら、(a+b)+(c-d)+(e+f)の計算をする場合の例を示す。図２７Ａにおいて、左辺の連続する３つのスイッチエレメントＰＥ１，ＰＥ２およびＰＥ３に６つの値a、b、c、d、e、fを２つずつ入力した場合、サイクル１において、入力したスイッチエレメントの右下のプロセッサ要素により加算a+b（＝Ａ）、減算c-d（＝Ｂ）および加算e+f（＝Ｃ）が行われる。サイクル２において、スイッチエレメントＰＥ４において加算Ａ＋Ｂ（＝Ｄ）が行われると同時に、値Ｃのデータ転送１が行われる。サイクル３において、値Ｃのデータ転送２が行われ、サイクル４において、スイッチエレメントＰＥ５に０おいて、加算Ｄ＋Ｃ（＝Ｅ）が行われ、サイクル５および６において、計算結果Ｅに対してデータ転送３および４が行われることにより、サイクル７において計算結果Ｅが出力される。
【０００５】
以上から分かるように、サイクル３において処理遅延の原因となるデータ転送２が発生し、サイクル４で処理が完成しているにもかかわらず、サイクル５および６においてさらなる処理遅延の原因となるデータ転送３および４が発生するために、計算結果Ｅが遅れてサイクル７で出力される。
【０００６】
つまり、特許文献１のように、プロセッサ要素のみならず、プロセッサ要素間のデータ転送に用いるスイッチ要素も配列を成した構造の場合、データ転送に伴って処置遅延が発生する可能性が大きい。
【０００７】
図２８は、(a+b)*(c-d)の計算をする場合を例にとり、従来の演算装置では、ＰＥアレイを構成するプロセッサ要素への機能配分が原因となり処理内容により問題が生じる可能性があることを示す図である。図２８Ａおよび２８Ｂは、問題が発生しない場合のＰＥアレイの動作および同じ処理に対する処理サイクルごとの動作を示し、図２８Ｃおよび２８Ｄは、問題が発生する場合のＰＥアレイの動作および同じ処理に対する処理サイクルごとの動作を示す。図２８Ａおよび２８ＣのＰＥアレイには、ＡＬＵ（論理演算ユニット）および乗算器がそれぞれ図示したように配置されているものとする。乗算器とＡＬＵは、異種の要素としているが、これは、両者の物理的な構造が全く異なるためである。
【０００８】
図２８Ａの場合は、(a+b)*(c-d)の計算に対し、ＡＬＵと乗算器が都合よく配置されているので、２サイクルで計算を終了し、上述のデータ転送に３サイクル要しているので、６サイクルで全体の処理を終えている。これに対し、図２８Ｃの場合は、ＡＬＵおよび乗算器の配置と与えられた計算との整合性が悪く、入力データcおよびdは計算に利用できるエレメントまで移動しなければならないため計算自体に５サイクルを要し、さらに最後に処理を行ったプロセッサ要素が出力スイッチ要素から離れているため、出力のためのデータ転送に４サイクルを要するので、処理全体に結局１０サイクルが必要である。
【０００９】
ＰＥアレイのプロセッサ要素の配置は製造段階で決まり、製造後に変更することはできない。したがって、隣接スイッチ要素間でデータ転送するタイプの演算装置において、異種の演算器でＰＥアレイを構成しようとすると、従来技術では、任意のアルゴリズムに対して整合するように演算器種を予め製造段階で決めることは不可能であるため、アルゴリズムによって処理効率が大幅に変化することになる。
【００１０】
このように、二次元配列されたスイッチ要素を介して演算要素間のデータ転送を行う構造のＰＥアレイ型の再構成可能演算装置においては、異種の演算要素をＰＥアレイ含めることはことは難しい。
【００１１】
また、図２９は、従来の演算装置においてフィードバック処理を行うようすを示す図である。図２９では、
D[0]＝１;
for (i=0;i<5;i++){
aa[i]=D[i]+a[i];
B[i]=b[i]+aa[i];
cc[i]=c[i]+d[i];
D[i+1]=B[i]-cc[i];
}                    ・・・・・・・・・・・・・・・・（処理１）
なる処理を行うものとする。
【００１２】
分かりやすいように、ＰＥアレイを構成するスイッチ要素の縦の列に左から順に０，１，２・・・Ｍ（Ｍ＋１が列数である）と番号を付け、横の行にも上から順に０，１，２・・・Ｎ（Ｎ＋１が行数である）と番号を付けた場合、ｊ列目でｋ行目のスイッチ要素をＳ（ｊ、ｋ）とあらわこととする。また、第ｊ列で第ｋ行の処理要素（仮に、ＰＥ（ｊ、ｋ）と表す）には、この処理要素の４方に隣接するスイッチ要素Ｓ（ｊ、ｋ）、Ｓ（ｊ、ｋ−１）、Ｓ（ｊ−１、ｋ）およびＳ（ｊ−１、ｋ−１）からアクセス可能であるとする。
【００１３】
上述の処理１を行う場合、スイッチ要素Ｓ（０，０）からデータb[0]を入力し、Ｓ（０，１）からデータD[0]、a[0]を入力し、Ｓ（０，２）からデータd[0]、c[0]を入力する。すると、図２９に示すように、最初のサイクル１において、処理要素ＰＥ（０，１）において加算演算aa[0]（=D[0]+a[0]）を行い、処理要素ＰＥ（１，１）において加算処理cc[0]（=c[0]+d[0]）を行う。次に、サイクル２で、処理要素ＰＥ（１，０）において、加算処理B[0]（=b[0]+aa[0]）を行う。次に、サイクル３において、ＰＥ（２，１）において減算処理D[0+1]（=B[0]-cc[0]）を行うとともに、値B[0]をスイッチ要素Ｓ（２，１）からＳ（３，１）までデータ転送１を行う。サイクル３では、引き続き、値B[0]をスイッチ要素Ｓ（３，１）からＳ（４，１）までデータ転送１を行うとともに、処理要素ＰＥ（２，１）の処理結果D[1]をＰＥ（０，１）までフィードバックする。このように、ループ処理をする場合フィードバックサイクルが必要となる。この例では、フィードバックサイクルは１であるが、ループバックするまでの処理段数が多くなると、フィードバックで戻らなければならない距離が大きくなるので、さらに効率劣化の度合いが大きくなる。
【００１４】
このように、やはり二次元配列されたスイッチ要素を介して演算要素間のデータ転送を行う構造のＰＥアレイ型の再構成可能演算装置においては、処理の効率は処理の制御構造に依存するので、ループ処理によっては効率が劣化するする可能性がある。
【００１５】
演算器の再構成に時間を要することに一つの問題がある。演算器の再構成は処理内容の変更、条件分岐検出時等に発生する。したがって、再構成回数が増えれば増えるほど、この切替時間の積み重ねが、全体の処理性能の劣化をもたらす。
【００１６】
上述の特許文献１の場合には、いくつかの方法が示されているが、図３０は、最短の切替時間を実現する例を示す。図３０の演算装置は、演算器群と演算器群が再構成される部分であり、演算器群は複数個の演算器ユニット９９０ａを２次元状に配置したものである。各演算器９９０ａは演算器９９６、演算器に供給する複数個の命令を蓄えておく命令メモリ９９４、選択された命令を解読する命令デコーダ９９５を有する。
【００１７】
演算器群を再構成する部分は、状態制御管理部９９７、状態遷移テーブル９９８およびセレクタ９９９から構成される。状態遷移テーブル９９８は現状態番号により、テーブルを引き、次状態番号と演算器群内の演算器の全てに共通な命令アドレスを選択する。各演算器ユニット９９０ａでは、演算器群の外から受けとった命令アドレスにより、内部の命令メモリから命令を読み出し、命令デコーダ９９５で命令を解釈し、演算器９９６に対して処理の種類を指定し、演算器９９６、は指定された処理を実行する。図３０の演算装置の動作タイミングを図３１に示す。動作タイミングを図３に示す。図３において、「演算動作」と記されたサイクル期間では、実際には、「命令メモリ読み出し」, 「命令デコード」、本当の「演算処理」という処理がなされる。なお、この図では、現状態番号を命令アドレス発行に使用した場合の図である。前述の特許文献１の「次状態番号を命令アドレス発行に使用した場合」の動作タイミングでは、命令アドレス発行のタイミングそのものの前倒しはできるが、「演算動作」は同じであるため、「命令メモリ読み出し」, 「命令デコード」、本当の「演算処理」の処理が必要となる。そのため、状態遷移テーブルを引いてから実際の演算処理を実行するまでの遅れが問題となる。また、状態テーブルのエントリが次状態番号と命令アドレスの両方を有している。状態遷移テーブルはメモリであり、エントリ量が多いとメモリが大きくなり、面積が増える問題がある。
【特許文献１】特開２００１−３１２４８１
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、以上述べた従来技術の種々の課題を解決するために為されたものである。
本発明は、処理要素の配置や処理の制御構造に関わりなく一定の良好な処理効率が得られる再構成可変演算装置を提供することを目的とする。
【００１９】
本発明は、処理要素に任意の異種の要素を含めることができ迅速な再構成が可能な演算装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
以上の目的のため、本発明は、再構成可能演算装置を提供する。本発明の再構成可能演算装置は、所与の第１のコンフィギュレーション・データにより再構成可能で互いに同時動作可能な複数の演算手段と、読み書き自在の少なくとも１つの記憶手段と、演算装置として必要とされる種々の処理要素と、前記複数の演算手段および前記記憶手段の任意の出力データを前記複数の演算手段の任意の入力のデータとすることを可能とするとともに、前記複数の演算手段、前記記憶手段および前記の種々の処理要素からなる資源の間のデータ転送を前記資源の位置および種類にほぼ依存することなく均一な転送時間で行うとともに、所与の第２のコンフィギュレーション・データにより再構成可能な資源間相互接続手段と、前記第１および第２のコンフィギュレーション・データを格納する格納手段と、
前記コンフィギュレーション・データを外部記憶装置から前記格納手段へロードする手段と、前記複数の演算手段から得られる情報に基づき、前記第１および第２のコンフィギュレーション・データを適切なシーケンスおよびタイミングで前記の再構成可能な手段に供給する供給手段とを備えたことを特徴とする。
【００２１】
また、本発明は、別の側面では、複数の同時動作可能な演算器と、当該複数の演算器の状態を制御するシーケンサと、前記演算器の状態ごとの設定情報としてのコンフィギュレーション情報を格納するコンフィギュレーションメモリよりなる演算装置を提供する。本発明の演算装置は、前記複数の演算器の任意の演算器の出力が、他の複数の演算器の入力となる接続手段を有することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、再構成可変演算装置において処理要素の配置や処理の制御構造に関わりなく一定の良好な処理効率が得られる。
また、本発明によれば、処理要素に任意の異種の要素を含めることができ迅速な再構成が可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態と添付図面とにより本発明を詳細に説明する。なお、複数の図面に同じ要素を示す場合には同一の参照符号を付ける。
〔実施例〕
図１は、本発明による再構成可能な演算装置の構成を概念的に示す略ブロック図である。図１において、再構成可能な演算装置１は、種々の処理要素が処理要素間ネットワーク４０によって相互接続される処理要素（processing element）ネットワーク１０を備える。種々の処理要素として、例えば複数（図１の例では４）の演算器２０，データメモリ２４０，データ入力ポート２２０，データ出力ポート２３０およびその他種々の処理要素２５０などが処理要素間ネットワーク４０に接続されている。演算器２０は言うまでもなく、その他の種々の処理要素２５０も外部から供給されるコンフィギュレーション・データにより、そのコンフィギュレーション・データに関係付けられた機能を果たすように設定可能である。さらに、処理要素間ネットワーク４０も外部から供給されるコンフィギュレーション・データに応じて、処理要素間ネットワーク４０に接続されている種々の要素間のデータ転送を可能とする。
【００２４】
なお、図１では、簡単のため演算器２０を４つしか示していないが、数十以上あってもよいことは言うまでもない。この点は、他の要素の数または信号数についても同様である。
【００２５】
また、再構成可能な演算装置１は、処理要素ネットワーク１０の再構成可能な種々の要素に対するコンフィギュレーション・データＣＤ０〜ＣＤ６を格納するコンフィギュレーションメモリ５０、外部記憶装置（図示せず）からコンフィギュレーションメモリ５０にコンフィギュレーション・データ（ＣＤ）をロードするコンフィギュレーション・データロード部（ＣＤロード部）５５，処理要素ネットワーク１０を構成する再構成可能な種々の要素のうち主に演算器のから送信される条件成立信号ＣＳ１，ＣＳ２，・・・を受信し、これらの信号に基づいて切替条件信号を生成し出力する切替条件信号生成器６０、切替条件信号生成器６０からの切替条件信号に基づいてコンフィギュレーションメモリ５０の次に読み出すべきアドレスを供給するシーケンサ７０からなる。条件成立信号は、詳細に後述するように、例えば演算器２０に含まれる各ALU（arithmetic logic unit論理演算ユニット）が比較演算の結果一致した場合に出力する信号であり、少なくともコンフィギュレーションの切替タイミングを示す切替条件信号の生成に用いられる。なお、再構成可能な演算装置１は、状態テーブルロード部５７をさらに備え、図示しない外部記憶装置から状態テーブルをシーケンサ７０に供給することが望ましい。
【００２６】
＜データ転送の均一性を保証する要素間ネットワーク＞
図２は、図１の処理要素ネットワーク１０の構成を概念的に示す略ブロック図であり、２Ａはネットワーク１０全体のブロック図であり、２Ｂは、ネットワーク１０を構成するセレクタ４１の基本的構成を概念的に示す回路図である。図２Aにおいて、要素間ネットワーク４０に接続されている処理要素（図２Ａの例では、演算器２０，データ出力ポート２３０，データメモリ２４０，および種々の処理要素２５０）の入力端子と要素間ネットワーク４０とを接続する場合、要素間ネットワーク４０はセレクタ４１、４１ａおよび４１ｂ（セレクタを区別する必要がなく、総称する場合は、単にセレクタ４１と記す）などを介してデータを出力する。例えば、各演算器２０の入力には、総ての演算器２０、データ入力ポート２２０、種々の処理要素２５０、データメモリ２４０の出力線を総て入力とするセレクタ４１を介して出力される。同様に、要素間ネットワーク４０は、種々の処理要素２５０へはセレクタ４１ａ、データメモリ２４０へはセレクタ４１ｂ、データ出力ポート２３０へはセレクタ４１ｃを介してデータ出力を行う。
【００２７】
再構成の柔軟性を高めるためには、各セレクタ４１の入力には要素間ネットワーク４０に接続される総ての処理要素の出力をすべて入力することが理想であるが、処理用素数が多い場合には、これを実現することは困難であるが、例えば、各演算要素２０の入力に対応するセレクタ４１には、総ての演算要素２０とデータメモリの出力は少なくとも入力することが好ましい。その他の処理要素の入力に対するセレクタには、システムの用途および処理要素間の接続の必要性や可能性を考慮して接続する処理要素および出力端子を決定するのが現実的である。
【００２８】
このように、本発明によれば、要素間ネットワーク４０の接続される処理要素２０，２２０，２３０，２４０および２５０どうしは、高い自由度で単一のセレクタ４１を介して相互に接続される。したがって、スイッチ要素と処理要素を二次元配列したアレイ型の演算装置のように、処理要素の配置場所により要素間のデータ転送速度が変化することはない。何れの要素どうしも同じ転送時間（後述のように、１クロック）でデータ転送が行われる。したがって、異種の処理要素を含めて設計することが可能となり、システムの柔軟性が格段に向上するので、広範な用途が可能である。
【００２９】
図２Ｂに示すように、各セレクタ４１は、単一のセレクタ要素またはセレクタ要素の組合せ（単に、セレクタと称する）４９０、セレクタ４９０の出力に接続されたラッチ用フリップフロップ（ＦＦ）４９２、およびセレクタ４９０に組み込まれるか又は接続されてそのセレクタに接続された入力の何れを出力すべきかを示す情報（コンフィギュレーション・データの一部）を保持する記憶部４９４から構成される。コンフィギュレーションメモリ５０から供給されるコンフィギュレーション・データＣＤ０が要素間ネットワーク４０を構成するセレクタ４１の記憶部４９４にロードされ、各セレクタはその記憶部４９４に記憶された情報に基づいて入力線の１つを出力に接続する。
【００３０】
セレクタ４１のラッチ用ＦＦ４９２には、クロック信号ＣＫが供給され、このクロックに同期してセレクタ４９０の出力値を保持し、出力する。このように、本発明によれば、要素間ネットワーク４０を構成するセレクタ４１は、同一のクロックＣＫに同期して出力が確定するので、要素間ネットワーク４０を介して接続された処理要素は、同期したデータ転送が行われるので、全体としてパイプラインを形成することになる。
【００３１】
このように、本発明の要素間ネットワークは、要素の位置にかかわらず１クロックでデータ転送を可能とするデータ転送の均一性を保証する。
図３は、図１の処理要素ネットワーク１０ａの一実施例を示すブロック図である。図３において、処理要素ネットワーク１０ａは、要素間ネットワーク４０ａに４つの演算器２０、２つの２５６ワードＲＡＭ（random access memory）２４２，２つの４０４８ワードＲＡＭ２４３、バレルシフタ（barrel shifter）２５２，４つのカウンタ２５４および遅延用ＦＦ部２５６が接続されている。また、処理要素ネットワーク１０ａには、データ入力線ＩＤ０、ＩＤ１、ＩＤ２，ＩＤ３・・・、アドレス入力線ＩＡ０、ＩＡ１・・・が接続されている。
【００３２】
各演算器２０は、ａ系統入力端子ａ０、ａ１およびｂ系統入力端子ｂ０、ｂ１を備え、さらに入力端子ａ０およびｂ０を入力とするセレクタ２２、入力端子ａ１およびｂ１を入力とするセレクタ２１、入力端子ａ０およびｂ０を入力とするＡＬＵａ２４，セレクタ２１および２２の出力を入力とするＡＬＵｂ２３、ＡＬＵａ２４およびＡＬＵｂ２３の出力を入力とする加算器（ＡＤＤ）２５、ＡＬＵｂ２３の出力および加算器２５の出力を入力とするセレクタ２６、ＡＬＵａ２４の出力および加算器２５の出力を入力とするセレクタ２７、およびセレクタ２６および２７の出力を入力とするアキュムレータ（ＡＣＣ）２８を備える。なお、アキュムレータ（ＡＣＣ）２８は、必須の要素ではないので省略可能である。
【００３３】
図４は、図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図である。図４において、セレクタの隅を黒く塗りつぶした長方形は、上述のコンフィギュレーション記憶部４９４を示す。コンフィギュレーション記憶部４９４のデータ長は、そのセレクタの入力数に応じて、２入力は１ビット、４入力は２ビット、８入力は３ビット、１６入力は４ビット・・・という具合に変化する。なお、総てのセレクタ回路４０２，４０４，４０６，４０８，４１０，４１２，４２０，４３０，４３０ａ、４５０，４６０，４７ａは、出力段に上述のラッチ用ＦＦ４９２を備える。
【００３４】
図４Ａ〜４Ｄは演算器ＰＥ０（２０）の入力ａ０、ａ１、ｂ０およびｂ１に対するセレクタを示す。図４Ａ〜４Ｄのセレクタ４０２〜４０８は、同じ構造である。セレクタ回路４０２、４０６は、２（またはそれ以上の）入力セレクタ４８４，５（またはそれ以上の）入力セレクタ４８２および１４（またはそれ以上の）入力セレクタ４８０からなる。セレクタ４８４の入力には、データ入力ＩＤ０およびＩＤ１が接続され、セレクタ４８２の入力には、カウンタ０および１の出力、遅延用ＦＦ０およびＦＦ１の出力およびバレルシフタ２５２の出力が接続される。セレクタ４８０の入力には、セレクタ４８２および４８４の出力の他、４つの演算器ＰＥ０〜ＰＥ３の各々の出力Ｃ０およびＣ１、ＲＡＭ０〜３の総ての出力が接続される。したがって、演算器ＰＥ０の入力ａ０およびｂ０には、カウンタ２，３、遅延用ＦＦ部２５６のＦＦ２，ＦＦ３、データ入力ＩＤ２以降のデータ入力以外の総ての要素の総ての出力を接続することが可能である。なお、図４Ｃのセレクタ回路４０６は、セレクタ４８４にデータ入力ＩＤ１の代わりにＩＤ３が入力されることを除けば図４Ａのセレクタ回路４０２と同じである。
【００３５】
図４Ｂにおいて、セレクタ回路４０４は、セレクタ４８４への入力がデータ入力ＩＤ２およびＩＤ３であること、セレクタ４８２への入力が、カウンタ２および３の出力、ならびに遅延用ＦＦ２およびＦＦ３の出力であることを除けば、セレクタ回路４０２と同じである。したがって、演算器ＰＥ０のａ１入力には、カウンタ０，１、遅延用ＦＦ部２５６のＦＦ０，ＦＦ１、データ入力ＩＤ０およびＩＤ１以外の総ての要素の総ての出力を接続することが可能である。
【００３６】
図４Ｄのセレクタ回路４０８は、セレクタ４８４への入力がデータ入力ＩＤ１およびＩＤ３であることを除けば、セレクタ回路４０４と同じである。したがって、演算器ＰＥ０のｂ１入力には、カウンタ０，１、遅延用ＦＦ部２５６のＦＦ０，ＦＦ１、データ入力ＩＤ２およびＩＤ３以外の総ての要素の総ての出力を接続することが可能である。セレクタ４８０，４８２，４９４の隅に示した中黒のブロックはコンフィギュレーション記憶部である。
【００３７】
図４Ｅは、ＲＡＭ０のデータ入力Ｄ０のセレクタ回路４１０は、４（またはそれ以上の）入力セレクタ５０７および５０８、および１４（またはそれ以上の）入力セレクタ５０６を備える。セレクタ５０７の入力には、カウンタ２出力、遅延用ＦＦ０およびＦＦ１，およびバレルシフタ２５２の各出力が接続される。セレクタ５０８の入力には、データ入力ＩＤ０〜ＩＤ３が接続される。セレクタ５０６の入力には、４つの演算器ＰＥ０〜ＰＥ３の各々の出力Ｃ０およびＣ１、ＲＡＭ１〜３の出力、およびセレクタ５０７、５０８の総ての出力が接続される。
【００３８】
図４Ｆは、ＲＡＭ０のアドレス入力のセレクタ回路４１２の図である。セレクタ回路４１２の入力には、外部アドレス入力ＯＡ０およびＯＡ１を入力とするセレクタ４９７，カウンタ０および１、遅延用ＦＦ２およびＦＦ３、およびバレルシフタ２５２の出力が接続される。セレクタ４９６の入力には、演算器ＰＥ０およびＰＥ１の出力Ｃ０およびＲＡＭ１〜ＲＡＭ３の出力が接続される。
【００３９】
ＲＡＭ１〜３のデータ入力用セレクタ４１０ａ、４１０ブロック、４１０ｃおよびアドレス入力用セレクタ４１２ａ、４１２ブロック、４１２ｃに付いても同様であるが、ＲＡＭ出力の番号、カウンタ出力の番号および遅延用ＦＦ出力の番号は循環的に異なる。
【００４０】
図４Ｇは、データ出力部ＯＤ０〜ＯＤ３に対するセレクタ４２０を示す図である。セレクタ回路４２０は、ＲＡＭ０〜３の出力を入力とするセレクタ５０３，遅延用ＦＦ０〜３の出力を入力とするセレクタ５０４、カウンタ２および３の出力を入力とするセレクタ５０５，演算器ＰＥ０〜３の各出力Ｃ０およびＣ１、セレクタ５０３，５０４および５０５の出力を入力とするセレクタ５０２を含む。出力データＩＤ１〜ＩＤ３に付いては、カウンタ番号が循環的に変化する。
【００４１】
図４Ｈは、遅延用ＦＦ０入力部のセレクタ回路４３０を示す。セレクタ回路４３０は、ＲＡＭ２および３、カウンタ０および１ならびにバレルシフタ２５２の出力を入力とするセレクタ５１１、データ入力ＩＤ０〜３を入力とするセレクタ５１２、外部アドレス入力ＩＡ０およびＩＡ１を入力とするセレクタ５１３、および前記のセレクタ５１１，５１２および５１３の出力の他、演算器ＰＥ０およびＰＥ１の各々の出力Ｃ０およびＣ１を入力とするセレクタ５１０を含む。
【００４２】
図４Ｉは、遅延用ＦＦ１入力部のセレクタ回路４３０ａを示す。セレクタ回路４３０ａは、セレクタ５１１が５２１に置き換わったことを除けば、セレクタ４３０と同じである。セレクタ５２１の入力には、ＲＡＭ０および１およびカウンタ２および３の出力が接続されている。遅延用ＦＦ２および３に付いても、カウンタの番号が循環的に変わることを除けば同様である。
【００４３】
図４Ｊは、カウンタ０入力用のセレクタ回路４５０を示す。図４Ｊにおいて、セレクタ回路４５０は、カウンタ０以外のカウンタ１〜３の出力を入力とするセレクタ５３１，演算器ＰＥ０〜３の出力Ｃ０を入力とするセレクタ５３２，遅延用ＦＦ０〜３の出力を入力とするセレクタ５３３、およびセレクタ５３１，５３２および５３３の出力を入力とする５３０を含む。カウンタ１〜３についても同様であるが、自分自身の出力はセレクタ５３１に入力しないようにする。
【００４４】
図４Ｋは、バレルシフタ２５２入力用のセレクタ回路を示す。セレクタ回路４６０は、
ＲＡＭ０〜３の出力を入力とするセレクタ５４１、外部データ入力ＩＤ０〜３を入力とするセレクタ５４２、ならびにセレクタ５４１、５４２および演算器ＰＥ０〜３の各々の出力Ｃ０およびＣ１を入力とするセレクタ４６０を含む。
【００４５】
図４Ｌは、アドレス出力ＯＡ０用のセレクタ回路４７ａである。セレクタ回路４７ａは、ＲＡＭ２，３およびカウンタ０，２の出力を入力とするセレクタ５４７，遅延用ＦＦ０およびＦＦ２の出力を入力とするセレクタ５４８、ならびにセレクタ５４７、５４８の出力および演算器ＰＥ０およびＰＥ２の各々の出力Ｃ０およびＣ１を入力とするセレクタ５４６を含む。その他のアドレス出力ＯＡ１〜３用のセレクタ４７ｂ、４７ｃ、４７ｃも同様であるが、ＲＡＭ以外の入力は循環的に異なる。
【００４６】
以上は、図３の処理要素ネットワーク１０ａに使用される要素間ネットワーク４０ａの実施例である。以上から分かるように、少なくとも演算器２０とデータメモリ（ＲＡＭ０〜３）２４２との間は入出力が相互に接続され、その他の要素も演算器２０およびその他の処理要素と必要に応じて相互に接続されていて、種々の処理要素が含まれているので、柔軟性の高いシステム構成が可能となり、処理の制御構造に関わりなく効率的なパイプライン処理が可能となる。
【００４７】
図５Ａは、図１のシーケンサの第１の実施例を概念的に示す略ブロック図である。図５Ａにおいて、シーケンサ７０は、状態番号を保持する状態番号レジスタ７６、所定の遷移先（次の）状態番号を格納する状態テーブル７４、切替条件信号生成器６０からの切替条件信号が有効になったタイミングで、レジスタ７６の示す状態番号により、状態テーブル７４の読み出しを行う状態制御部７２からなる。現状態番号レジスタ７６の出力をシーケンサ７０の出力として使用する。本発明によれば、現状態番号をコンフィギュレーションメモリ５０のアドレスとすることにより、後述のように処理の効率を高めている。
【００４８】
図６は、状態テーブル７４の構成を概念的に示す図である。図６において、状態遷移テーブル７４は、可能な状態数ｎの遷移先状態番号１〜ｎを格納する遷移先状態番号記憶部７４２、および現状態番号レジスタ７６からの現状態番号をデコードすることにより、現状態番号に関係付けられた遷移先状態番号ｉ（ｉ＝１〜ｎ：ｎは可能な状態数）を指定するアドレスデコーダ７４０を備える。状態テーブル７４は、アドレスデコーダ７４０により指定された遷移先状態番号ｉ（次の読み出すべきコンフィギュレーションメモリのアドレス（ＣＭＡと称する）に等しい）を出力する。
【００４９】
図７は、コンフィギュレーション切替時の動作タイミングを示す図である。図７において、現在のコンフィギュレーションで処理中（ＳＴ０）に、条件切替信号にコンフィギュレーション切替を示すパルスが現れると、これに応じて状態制御部７２は現状態番号レジスタ７６の現状態番号を状態テーブル７４に渡す。状態ＳＴ１において、状態テーブル７４は、受け取った現状態番号を基に遷移先状態番号（＝次のＣＭＡ）を出力する。状態ＳＴ２において、このＣＭＡを用いてコンフィギュレーションメモリ５０からコンフィギュレーション・データ（ＣＤ）が読み出され、読み出されたＣＤは、処理要素ネットワーク１０の各処理要素のコンフィギュレーション・データ（ＣＤ）記憶部に対応部分が分配されて格納され、これと同時に、各処理要素は、新たに格納されたＣＤに応じた構成へと再構成される。状態ＳＴ３において、処理要素ネットワーク１０は再構成された状態で処理を開始する。
【００５０】
このように、本発明によれば、状態番号とＣＭＡを一致させたことにより、状態テーブル７４が簡素化されるとともに、コンフィギュレーションメモリ読み出しに要する処理ステップを減らすことができ、図３１に関連して説明した従来の演算装置に比べて、再構成に要する時間を短縮することができる。さらに、図３０の状態遷移テーブルと比較すると、同じ状態数ならば、本発明の図６の遷移状態記憶部７４２はデータ量が遙かに少ないことが分かる。
【００５１】
また、図５Ｂは、図１のシーケンサの第２の実施例を概念的に示す略ブロック図である。図５Ｂのシーケンサ７０ａは、状態テーブル７４の出力と現状態番号レジスタ７６の出力とを入力とし何れか一方を出力するスイッチ７５を備えた点を除けばシーケンサ７０と同じである。スイッチ７５を備えたことにより、コンフィギュレーション切替時に、スイッチ７５を状態テーブル７４の出力（すなわち、遷移先状態番号＝次のＣＭＡ）を選択する状態に設定することにより、状態テーブル７４の遷移先状態番号をいち早く出力することが可能となり、コンフィギュレーション切替時間を短縮することができる。
【００５２】
次に、本発明の特徴を上述の従来技術の課題と対比して説明する。
＜データ転送による処理サイクルの遅延の解消＞
従来のアレイ型演算装置では、図２７に示したようにデータ転送１〜４に伴って遅延が発生する。図８Ａは、図２７と同じ処理を本発明の再構成可能な演算装置を用いて行う場合のコンフィギュレーションを示す等価回路である。図８Ａを含むコンフィギュレーションの等価回路を示す図において、破線は、コンフィギュレーション・データにより要素間ネットワーク４０のセレクタ回路（図示せず）が適切に設定された結果生じた演算器間の結線状態を示す。演算器の入力に挿入された網掛けの水平な長方形は上述のフィリップフロップ４９２を示す。
【００５３】
図８Ａにおいて、演算器Ａ，Ｂ，Ｃは、入力信号をａ〜ｆとした場合、加算ａ＋ｂ、減算ｃ−ｄ、および加算ｅ＋ｆを行う要素として再構成されている。演算器Ｄは、演算器ＡおよびＢの出力を用いてＡ＋Ｂを計算する加算器として再構成され、演算器Ｅは、演算器ＤおよびＣの出力を用いてＤ＋Ｃを計算する加算器として再構成されている。
【００５４】
図８Ｂは、図８Ａのコンフィギュレーションで実行される処理を示すサイクル状態テーブルである。図８Ｂに示すように、処理サイクル１でＡ＝ａ＋ｂ、Ｂ＝ｃ−ｄ、およびＣ＝ｅ＋ｆが演算され、サイクル２において、Ｄ＝Ａ＋Ｂが実行され、サイクル３において、Ｅ＝Ｄ＋Ｃが演算され、サイクル４において演算結果Ｅが出力される。このように、本発明の再構成可能な演算装置によれば、データ転送に起因する処理サイクルの遅延は、発生しない。ちなみに、図２７では、３サイクルの遅延が発生している。
【００５５】
＜処理要素の独立性＞
従来の異種要素を含むアレイ型演算装置においては、図２８に示したように処理要素の配列と処理内容とにより処理効率が影響を受けた。この点について、考察する。図９は、図２８で行った演算（ａ＋ｂ）＊（ｃ−ｄ）と同じ計算を本発明の再構成可能な演算装置１で行う場合を説明する図である。図９Ａは、式（ａ＋ｂ）＊（ｃ−ｄ）を計算するために再構成した処理要素ネットワーク１０の等価回路である。図９Ｂは、図９Ａの処理を示すサイクル状態テーブルである。処理サイクル１において、演算器（ＡＬＵ）ＡおよびＢにおいて、加算ａ＋ｂ（＝Ａ）および減算ｃ−ｄ（＝Ｂ）をそれぞれ行い、サイクル２において、右から２番目の乗算器において乗算Ａ＊Ｂを行い、サイクル３において、乗算器の演算結果を出力する。
【００５６】
図９Ａから分かるように、本発明の要素間ネットワーク４０により乗算器の位置にかかわらず、図９Ａと同じトポロジーを形成することが可能である。このように、本発明の再構成可能な演算装置によれば、処理要素の配置にかかわらず同じトポロジーを形成することができるので、異種の処理要素を任意の位置に追加することが可能である。
【００５７】
＜フィードバック処理＞
従来の異種要素を含むアレイ型演算装置においては、図２９に示したようにループを含む繰り返し処理を行う場合、処理効率が影響を受ける場合がある。この点について、考察する。図１０は、図２９で行った演算と同じ演算（上述の処理１）を本発明の再構成可能な演算装置１で行う場合を説明する図である。図９Ａは、処理１を実行するために再構成した処理要素ネットワーク１０の等価回路である。図９Ｂは、図９Ａの処理を示すサイクル状態テーブルである。処理サイクル１において、左端の加算器aa[i]および中央の加算器cc[i]により、加算D[0]+a[0]（＝aa[0]）および加算c[0]+d[0]（＝cc[0]）それぞれを行い、サイクル２において、左から２番目の加算器B[i]により加算b[0]+aa[0]を行い、サイクル３において、右から２番目の減算器D[i+1]により、減算B[0]-cc[0]を実行するとともに、加算器B[i]の計算結果を出力して、最初のループを終了する。さらに、サイクル４において、加算器aa[i]および加算器cc[i]により加算D[1]+a[1]（＝aa[1]）および加算c[1]+d[1]（＝cc[1]）それぞれを行い、サイクル５において、加算器B[i]により加算b[1]+aa[1]を行い、サイクル６において、減算器D[i+1]により、減算B[1]-cc[1]を実行するとともに、加算器B[i]の計算結果を出力して、２回目のループを終了するという具合に処理を行う。
【００５８】
図１０Ｂのサイクル状態テーブルから分かるように、本発明の再構成可能な演算装置によればループ処理に伴うフィードバックのためにデータ転送が発生することはない。このように、本発明によれば、ループ処理によって処理効率が劣化する心配はない。
【００５９】
＜ＲＩＳＣプロセッサとの比較＞
・独立な並列処理
図３２Ａは、従来の典型的なＲＩＳＣプロセッサを概念的に示す概略図である。図３２において、典型的なＲＩＳＣプロセッサは、複数の演算器９８０、演算器９８０の入出力に接続されたレジスタファイル９８２、命令メモリ９８４および命令メモリ９８４からの命令をデータコードし、演算器９８０に供給する命令デコーダ９８６からなる。
【００６０】
図３２Ｂは、図３２ＡのＲＩＳＣプロセッサにより、次のような処理を並列処理した場合のサイクル状態テーブルである。
for( i=0; i<5; i++){
A[i]=a1[i]+a2[i];….演算（ａ）
B[i]=b1[i]+b2[i];….演算（ｂ）
C[i]=c1[i]*c2[i];….演算（ｃ）
D[i]=d1[i]*d2[i];….演算（ｄ）
}                    ・・・・・・・・・・・・・・・・・・（処理２）
すなわち、図３２Ａの２つの演算器に加算A[i]およびB[i]をさせ、他の２つの演算器に乗算C[i]およびD[i]をさせることにより、処理２を並列処理した場合、サイクル状態テーブルは図３２Ｂのようになる。図３２Ｂにおいて、Ｆは命令メモリ９８４から命令を読み出す命令フェッチサイクルを示し、Ｄは読み出した命令を命令デコーダ９８６で解読するデコードサイクル、ａ、ｂ、ｃ、ｄはそれぞれの演算を実行する実行サイクルを表し、Ｗは処理結果を書き込むライトサイクルである。ＲＩＳＣプロセッサは、ノイマン型のプロセッサであるから、各演算器９８０が処理を行うたびに命令をフェッチしデコードするので、各処理に４サイクル必要である。したがって、必要命令数は、４並列ｘ５個＝２０命令である。
【００６１】
一方、処理２を本発明の再構成可能な演算装置１でおこなう場合を考察する。図１１Ａは、処理２を実行するために処理要素ネットワーク１０を再構成した結果の等価回路であり、図１１Ｂは、図１１Ａの構成で処理２を実行した場合のサイクル状態テーブルである。本発明による再構成可能な演算装置は、基本的にはノイマン型ではなくデータ駆動型のプロセッサに属するので、処理２のように各演算器２０が独立して（他の演算器２０の計算結果に影響を受けることなく）同一の処理を繰り返すような場合は、最初に図１１Ａに示すように必要な再構成を行えば、以降は再構成を行う必要はない。
【００６２】
図１１Ａにおいて、演算器（ａ）、（ｂ）、（ｃ）、（ｄ）の各々の２つの入力および１つの出力は総てデータメモリ２４０に接続され、演算器（ａ）、（ｂ）が加算に設定され、演算器（ｃ）、（ｄ）が乗算に設定されている。
【００６３】
図１１Ｂにおいて、Ｒはメモリ２４０からデータa1[i]、a2[i]、b1[i]、b2[i]、c1[i]、c2[i]、d1[i]、d2[i]を読み出すリードサイクルであり、ＮはＲはメモリ２４０からデータが要素間ネットワーク４０上にあるサイクルであり、ａ、ｂ、ｃ、ｄは各演算器２０がそれぞれの処理を行うサイクルであり、Ｗは処理結果をデータメモリ２４０に書き込むライトサイクルである。処理２のような単純な並列処理は、本発明の再構成可能な演算装置も従来のＲＩＳＣプロセッサと同じサイクル数で処理を終了することができる。
・独立でない並列処理
処理２では、４つの計算を単に独立して行い、１つの計算に他の計算結果を使用することは行わないので、単純である。次に、１つの計算に他の計算結果を使用する処理例を考察する。
for( i=0; i<5; i++){
A[i]=a1[i]+a2[i];….演算（ａ'）
B[i]=b1[i]+A[i];….演算（ｂ'）
C[i]=A1[i]*B[i];….演算（ｃ'）
D[i]=d1[i]*C[i];….演算（ｄ'）
}                    ・・・・・・・・・・・・・・・・・・（処理３）
図３２Ｃは、高性能のＲＩＳＣプロセッサで行われるフォワーディングまたはバイパッシング（計算結果をレジスタファイル９８２に書き込むと同時に、必要とする演算器にレジスタファイル９８２を介さずに直に渡すこと）を行いながら、処理３を実行した場合のサイクル状態テーブルである。この場合、必要命令数は４並列ｘ８個であり、処理を完了するのに１１サイクルを要する。
【００６４】
また、図３２Ｄは、同じ処理３をフォワーディングせずに実行した場合のサイクル状態テーブルである。この場合、計算結果を他の計算に使用する場合、計算結果は必ずレジスタファイル９８２を介して必要とする演算器に渡されるので、フォワーディングを行う場合に比較すると効率は落ちる。この場合、必要な命令数は、４並列ｘ１１個であり、処理終了までに１４サイクルを要する。
【００６５】
図１１Ｃは、処理３を実行するために再構成した処理要素ネットワーク１０の等価回路である。演算器（ａ’）および（ｂ’）は加算に設定され、演算器（ｃ’）および（ｄ’）は乗算に設定されている。演算器（ａ’）の入力はデータメモリ２４０に接続されデータa1[i]およびa2[i]を取り込み、演算器（ａ’）の出力A[i]は演算器（ｂ’）および（ｃ’）の一方の入力に接続され、演算器（ｂ’）の他方の入力はデータメモリ２４０に接続されてデータb1[i]を取り込み、演算器（ｂ’）の出力B[i]は演算器（ｃ’）の他方の入力に接続され、演算器（ｃ’）の出力C[i]は演算器（ｄ’）の一方の入力に接続され、演算器（ｄ’）の他方の入力と出力はデータメモリ２４０に接続され、データd1[i]を入力するとともに、計算結果 D[i]をデータメモリ２４０に書き込む。
【００６６】
図１１Ｄは、図１１のコンフィギュレーションにより処理３を実行した場合の処理のようすを示すサイクル状態テーブルである。リードサイクル（Ｒ）、ネットワークサイクル（Ｎ）およびライトサイクル（Ｗ）を含めて１回のループ処理に７クロックを要し、５個のループ処理が１クロックずつ遅れて開始されて並列処理が行われるようすを示す。
【００６７】
本発明のパイプライン処理は処理３を完了までに１１クロック要する。これは、図３２Ｃとの比較から分かるように、従来のＲＩＳＣプロセッサのフォワーディング処理付きの場合と同じ性能であり、フォワーディング処理がないプロセッサと比較すると、高性能となる。
【００６８】
従来のＲＩＳＣプロセッサは、命令を８（フォワーディングあり）または１１（フォワーディングなし）必要とするので、８または１１回の命令フェッチ、命令デコードおよび命令の演算器への設定を行うのに対し、本発明では、コンフィギュレーションは１つで済むので、処理開始前に１回のみ再構成をした後、処理完了まで保持するだけでよいので、動作する箇所が少なくて済む、したがって、消費電力の低減が可能である。
【００６９】
処理３の例では、ループ回数が５であるが、例えば１０００回の場合、従来の方式では１００３回（フォワーディングあり）または１００６の命令発行を必要とするが、本発明では、この場合でもコンフィギュレーションは１つで済み、処理開始前に１回再構成すれば、処理完了まで保持するだけでよいので、動作箇所が少なくて済み、消費電力の低減が可能となる。
【００７０】
また、本発明では、演算毎にメモリにデータを書き込むことはせず、要素間ネットワーク４０のラッチ用ＦＦ４９２に保持されるので、ＲＩＳＣプロセッサのようにレジスタファイルへのアクセスを減らすことができる。
【００７１】
以上のように、本発明の再構成可能な演算装置は、独立でない並列処理に対してもＲＩＳＣプロセッサより良好な性能を示す。
＜自由度の高い再構成可能性＞
図１２は、本発明の再構成可能な演算装置１の処理要素ネットワーク１０が柔軟性に富んだ構成が可能であることを示す図である。図１２において処理Ａ（＝処理２）に対するコンフィギュレーションから処理Ｂに対応したコンフィギュレーションへと容易に再構成することが可能である。処理Ｂは、上述の処理３の B[i]=b1[i]+A[i]を B[i]=b1[i]―A[i]に変更したものである。このように、本発明によれば、完全に独立した並列処理から相互に依存する並列処理まで高い自由度で再構成可能である。
【００７２】
＜スケーラビリティ＞
図１３は、従来のＲＩＳＣプロセッサ（１３Ａ）と本発明の演算装置１（１３Ｂ）とのセケーラビリティを比較するための図である。図１３ＡのＲＩＳＣプロセッサでは、同時動作可能な演算器を増やすごとにレジスタファイルのメモリポートを増やす必要がある。１つ演算器が増えるとリードポートが２つとライトポートが１つ増える。プロセッサにおけるレジスタファイルの占める面積は非常に大きく、ポート数がｎ倍になるとレジスタファイルの面積はｎの二乗のオーダーで増加するので、演算器の数を増やすのは困難である。この問題は、ＲＩＳＣプロセッサが並列処理を行うか、パイプライン処理を行うかに関わらず発生する。
【００７３】
これに対し、本発明の処理要素ネットワーク１０では、並列処理の場合、メモリや入出力資源の現実的実装の範囲内で演算器を増やすことが可能である。パイプライン処理の場合、図１３Ｂに示すように、処理の途中結果は要素間ネットワーク４０のＦＦ４９２に保持されるので、処理の途中結果をメモリ２４０への書き戻し、およびメモリ２４０からの読み出しを行う必要がなく、パイプラインの段数が深くなっても（すなわち、同時動作の演算器の数が増加しても）、メモリまたはレジスタファイルに必要なポート数が増加しない。したがって、演算器数が増えても、メモリまたはレジスタファイルのポート数を増やす必要がないので、演算器の数を容易に増やすことが可能である。演算器数を増やすことにより、単位時間あたりの処理性能を高めることが可能となる。
【００７４】
〔好ましい実施例〕
図１４は、本発明の好ましい実施例による再構成可能な演算装置の処理要素ネットワーク１０ｂの構成を概念的に示す略ブロック図である。図１４の処理要素ネットワーク１０ｂは、図３の処理要素ネットワーク１０ａと殆ど同じなので、相違点のみを説明する。相違点は、図１４の処理要素ネットワーク１０ｂが、切替条件信号を生成するためのイネーブル信号ＥＳを得るために、データ入力線ＩＤ０〜ＩＤ３の各々にデータイネーブル線ＤＥ０〜ＤＥ３を備え、ＲＡＭ０〜３へのアドレス入力Ａ０〜Ａ３の各々にアドレスイネーブル信号ＡＥ０〜ＡＥ３を備え、データイネーブルＤＥ０〜ＤＥ３およびアドレスイネーブルＡＥ０〜ＡＥ３を入力とするセレクタ６２、およびセレクタ６２用のコンフィギュレーション・データ記憶部６４を備えた点である。
【００７５】
セレクタ６２は、コンフィギュレーション・データ記憶部６４に記憶されたデータに基づき、データイネーブルＤＥ０〜ＤＥ３およびアドレスイネーブルＡＥ０〜ＡＥ３の何れか１つを選択してイネーブル信号ＥＳとして出力する。
【００７６】
なお、ＲＡＭアドレスイネーブル信号ＡＥ０〜ＡＥ３の代わりに、ＲＡＭ読み出しデータのイネーブル信号とＲＡＭ書き込みデータのイネーブル信号とを組み合わせて使用してもよい。
【００７７】
図１５は、 切替条件信号発生器６０の好ましい実施例を示すブロック図である。図１５において、各演算器ＰＥｉ（図１４に例では、１＝０，１，２，３）において、２つのＡＬＵｂ２３およびＡＬＵａ２４は、比較演算時に一致した場合に論理１となる条件成立信号をそれぞれ出力する。図１５の例では、ＰＥ０からの２つの条件成立信号ＣＳ０ａおよびＣＳ０ｂを一括してＣＳ０とし、ＰＥ１からの２つの条件成立信号ＣＳ１ａおよびＣＳ１ｂを一括してＣＳ１とする。切替条件信号生成器６０は、コンフィギュレーションメモリ５０からのコンフィギュレーション情報とイネーブル信号ＥＳから切替条件が成立したことを示す切替条件発生信号を生成するループ終了判定部６１０、および演算器ＰＥ０およびＰＥ１からの条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂに基づいてプレ切替条件発生通知信号と切替条件コード信号を出力する切替条件コードを生成する切替条件コード生成ユニット６３０から構成される。
【００７８】
切替条件コード生成ユニット６３０は、演算器ＰＥ０およびＰＥ１からの条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂを入力として４つの条件成立信号の異なる１つを選択出力するセレクタ６３２、６３４，６３６および６３８、これらのセレクタ用のコンフィギュレーション・データを格納するＣＤ記憶部６４０、入力信号が論理１となった場合、所定の２ビットコード００，０１，１０および１１を出力する切替条件コード生成部６４２、６４４、６４６および６４８、条件成立信号ＣＳ０およびＣＳ１に応じて切替条件コード生成部６４２〜６４８の出力の１つを切替条件コード信号として出力する優先順位付きセレクタ６５０、および条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂの論理和を出力する論理和ゲート６５２からなる。
【００７９】
ループ処理が終了した（ループから抜け出した）ことを検出するループ終了判定部６１０は、処理要素ネットワーク１０ｂからのイネーブル信号ＥＳを数えるイネーブルカウンタ６１２，予測されるループ回数を保持する期待ループ回数保持部６１４、イネーブルカウンタ６１２と期待ループ回数保持部６１４の出力を比較する比較器６１６，比較器６１６の出力を数えるサイクルカウンタ６１８，現在処理中の処理がパイプラインから完全に抜け出て終了するまでのクロックサイクルを保持するループ終了オフセット値保持部６２０、サイクルカウンタ６１８とループ終了オフセット値保持部６２０との比較を行う比較器６２２、比較器６２２の出力と切替条件コード生成ユニット６３０からのプレ切替条件発生通知信号とを入力とし何れか一方を出力するセレクタ６２４、およびセレクタ６２４の選択を指示するコンフィギュレーション情報を保持するＣＤ保持部６２６から構成される。
【００８０】
以上のような構成の切替条件信号生成器６０の動作を説明する。セレクタ６３２〜６３８のＣＤ記憶部６４０には、セレクタ６３２、６３４，６３６および６３８が条件成立信号、例えばＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂをそれぞれ選択するようなコンフィギュレーション・データが格納されているものとする。セレクタ６３２、６３４，６３６および６３８により選択されたそれぞれの信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂは複数が同時に論理１となることもあり得る。切替条件コード生成部６４２、６４４、６４６および６４８は、セレクタ６３２、６３４，６３６および６３８からの信号が論理１の場合、上述の所定の２ビットコードを出力する。優先順位付きセレクタ６５０においては、切替条件コード生成部６４２、６４４、６４６および６４８の出力と他方の入力信号である条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂとが１対１に関係付けられ、さらに切替条件コード生成部６４２、６４４、６４６および６４８の出力（または条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂ）に所定の優先順位が定められているものとする。優先順位付きセレクタ６５０は、複数の切替条件コード生成部から出力を受信した場合、条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂの論理１であるもののうち予め設定された優先順位の最高の条件成立信号に関係付けられた２ビットコードを切替条件コード信号として出力する。また、条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂを入力とする４入力論理和ゲート６５２は、条件成立信号ＣＳ０ａ、ＣＳ０ｂ、ＣＳ１ａおよびＣＳ１ｂのうち１つでも論理１のものがある場合、論理１を出力する。
【００８１】
一方、ループ終了判定部６１０において、データイネーブルカウンタ６１２は入力されるイネーブル信号ＥＳの数を数えて出力する。比較器６１６は、データイネーブルカウンタ６１２の出力と期待ループ回数保持部６１４の値とを比較し、一致した場合、一致したことを示す信号を出力する。サイクルカウンタ６１８は、比較器６１６から一致したことを示す信号を受信すると、再構成可能な演算装置１の処理サイクル（例えば、クロック）を数え始める。ループ終了オフセット値保持部６２０には、現在処理中の処理が終了する（すなわち、パイプラインから現在処理中の処理データが出払う）までのクロック数が格納されている。したがって、比較器６２２は、サイクルカウンタ６１８の値がループ終了オフセット値保持部６２０の値と一致したとき一致出力を与えるので、イネーブル信号ＥＳが期待ループ回数と一致した場合、その時処理中の処理が終了したタイミングで一致信号を出力することになる。セレクタ６２２は、１ビットのＣＤ記憶部６２６の内容に応じて比較器６２２の出力または４入力論理和ゲート６５２の出力の何れかを出力する。
【００８２】
このようにして、切替条件信号生成器６０は、コンフィギュレーション切替タイミングを示す切替条件発生信号（セレクタ６２４の出力）および２ビットの切替条件コード信号を出力する。
【００８３】
なお、優先順位付きセレクタの６５０は、コンフィギュレーション・メモリ５０から供給されるコンフィギュレーション・データまたは別の入力手段により入力される設定データを保持することにより、利用者が優先順位を設定できるようにすることが好ましい。
【００８４】
図１６は、図１４の処理要素ネットワーク１０ｂおよび図１５の切替条件信号発生器６０を用いた好ましい実施形態による演算装置の全体的構成とシーケンサの具体例を示す略ブロック図である。図１６において、処理要素ネットワーク１０、コンフィギュレーションメモリ５０、ＣＤロード部５５および切替条件信号生成器６０は既に述べたとおりである。シーケンサの状態制御部７２は、状態制御部７２、状態制御部７２の出力に関係付けられた遷移先状態番号の候補を出力する状態テーブル７８、状態テーブル７８が出力する候補を切替条件信号生成器６０からの切替条件コード信号に基づいて選択し、次状態番号（＝コンフィギュレーションメモリアドレス）として出力するセレクタ７９、およびセレクタ７９の出力を保持する状態番号レジスタ７６からなる。切替条件信号生成器６０の切替条件発生信号は状態制御部７２とコンフィギュレーションメモリ５０に供給される。また、上述のように、再構成可能な演算装置１は、状態テーブルロード部５７を備え、図示しない外部記憶装置から状態テーブル７８をシーケンサ７０または７０ｂの記憶装置にロードする。
【００８５】
図１７は、状態テーブル７８の実施例を示す図である。図１７において、状態テーブル７８は、図６で既に述べたアドレスデコーダ７４０、可能な状態に対応した遷移先状態番号の候補リストからなる状態遷移テーブル７４２ａからなる。図１６および１７を参照してシーケンサ７０ｂの動作を説明する。
【００８６】
状態制御部７２は、現状態番号レジスタ７６に保持されている現在の状態番号（＝現在のコンフィギュレーションメモリアドレス）を切替条件信号生成器６０からの切替条件発生信号に同期して状態テーブル７８に出力する。現在の状態番号を受信すると、状態テーブル７８のアドレスデコーダ７４０は、現在の状態番号をデコードすることにより現状態番号に関係付けられた遷移先状態番号の候補リストｉ（ｉ＝１〜ｎ：ｎは可能な状態数）を指定する。状態遷移テーブル７４２ａは、指定された遷移先状態番号の候補リストｉを出力する。図１７の例では、候補リストｉには、４つの遷移先状態番号候補が含まれる。セレクタ７９は、遷移先状態番号の候補リストｉを受け取ると、切替条件信号生成器６０からの切替条件コード信号に関係付けられた遷移先状態番号を出力する。例えば、遷移先状態番号の候補リストｉの先頭から順に切替条件コード信号００，０１，１０，および１１を関係付ける方法がある。この関係付ける方法は種々の方法が考えられる。セレクタ７９から出力された次状態番号（次のＣＭＡ）は、現状態番号レジスタ７６およびコンフィギュレーションメモリ５０に供給される。現状態番号レジスタ７６は、受信した次状態番号を保持する。コンフィギュレーションメモリ５０の次のＣＭＡのコンフィギュレーション・データが切替条件信号生成器６０からの切替条件発生信号に同期して読み出され、読み出されたコンフィギュレーション・データは、それぞれの供給先に分配される。このように分配されたコンフィギュレーション・データが各要素に設定されることにより、再構成が実現する。
＜次のＣＭＡのプリセット（Presetting the next CMA）＞
図１８は、状態テーブルの７８の先読みを行うシーケンサの実施例を示す略ブロック図である。図１８のシーケンサ７０ｃは、現状態番号レジスタ７６の出力と切替条件発生信号に基づいてセレクタ７９から出力される次状態番号から現在の状態番号（現在のＣＭＡ）を出力する状態切替部８０を備えた点を除けば図１６のシーケンサ７０ｂと同じである。
【００８７】
図１９は、図１８のシーケンサ７０ｃの動作タイミングを示す処理ステータスチャートである。図１９において、状態２（現状態）において、状態切替部８０は、現状態番号から遷移先状態番号候補をあらかじめ状態テーブル７８から読み出し、切替条件発生信号に応じて、あらかじめ読み出されている遷移先状態番号候補から、次状態番号を選択し、直ちにコンフィギュレーションメモリを読み出すことで、切替動作の高速化を実現する。すなわち、状態２（現状態）において、状態切替タイミング発生前にあらかじめ次状態番号候補３、すなわち次コンフィギュレーションメモリアドレス（ＣＭＡ）が読み出されているために、状態切替タイミング発生時にすぐに切替コードによりコンフィギュレーションメモリアドレスを選択し、コンフィギュレーションメモリから、次コンフィギュレーション・データを読み出し、演算が実行可能となる。この例では、コンフィギュレーションメモリ読み出しと、演算実行に1チックかかっているように書いてあるが、コンフィギュレーションメモリ読み出しと同一チック内に演算実行を開始しても構わない。また、本発明ではコンフィギュレーションメモリ５０に外部記憶装置（図示せず）からコンフィギュレーション情報を取り込むためのコンフィギュレーション情報ロード部５５は、シーケンサ内に設けてもよい。
【００８８】
＜種々の変形(Various modifications)＞
図２０は、コンフィギュレーション・レジスタを備えた演算装置の実施例を示す略ブロック図である。図２０の再構成可能な演算装置１ｂは、コンフィギュレーションメモリ５０と処理要素ネットワーク１０との間にコンフィギュレーションレジスタ８２を挿入したこと、および切替条件信号生成器６０の切替条件信号を処理要素ネットワーク１０にも供給することを除けば、図１の再構成可能な演算装置１と同じである。図２１は、図２０の再構成可能な演算装置１ｂにおけるコンフィギュレーション切替動作を示す処理状態チャートである。図２１において、上述のように状態２（現状態）ではシーケンサ７０から状態番号３（次のＣＭＡ）が出力されている。この次のＣＭＡを用いてコンフィギュレーションメモリ５０から次のコンフィギュレーション・データを読み出し、コンフィギュレーション・レジスタ８２に格納する。したがって、状態２（現状態）において、コンフィギュレーション・レジスタ８２には、既に次のコンフィギュレーション・データがロードされている。そして、切替条件信号生成器６０からの切替条件信号がアクティブになると、これに応じて、処理要素ネットワーク１０の再構成可能な各要素が、コンフィギュレーション・レジスタ８２の自分に割り当てられた場所からコンフィギュレーション・データを取り込むことにより、再構成が完了し、実際の処理を行うことができるようになる。このように、コンフィギュレーション・レジスタ８２を備えることにより、高速なコンフィギュレーション切替が可能となる。
【００８９】
図２２は、コンフィギュレーション・レジスタ８２の配置方法の変形例を示す。図２２Ａは、要素間ネットワーク４０を含む種々の処理要素２０、２５０をグループ化し、処理要素のグループ毎にコンフィギュレーション・レジスタ８２ａ１、８２ａ２，．．．，８２ａＮ（Ｎは、処理要素グループ数）を設けた例である。
【００９０】
図２２Ｂは、要素間ネットワーク４０を含めた各処理要素ごとにコンフィギュレーション・レジスタ８２ｂ１、８２ｂ２，．．．，８２ａＭ（Ｍは、再構成可能な処理要素の数）を設けた例である。
【００９１】
図２３は、コンフィギュレーションメモリ５０を分散して配置する実施例を示す。図２３Ａは、再構成可能な処理要素毎にコンフィギュレーションメモリ５０ａを備える例である。図３２Ｂは、処理要素ネットワーク１０をクラスタ化し、クラスタごとにコンフィギュレーションメモリ５０ｂを備える例である。何れの場合も、各コンフィギュレーションメモリ５０ａまたは５０ｂごとに、ＣＤロード部５５およびシーケンサ７０からそれぞれデータ供給を受けることになる。
【００９２】
図２４は、図１，２Ａ，３，１４，１５，２２および２３において演算器または演算要素が受信したコンフィギュレーション・データの一部または全部をデコードする実施例を示す図である。コンフィギュレーション・データの一部をデコードすることにより状態切替を高速化することが可能となる。
【００９３】
図２５は、別の実施形態による処理要素ネットワークの構成例を示す略ブロック図である。図２５において、処理要素ネットワーク１０ｃは、８つの演算器（ＡＬＵ module）２０、２つのセレクタ（ＳＥＬ  module）、４つの積和・乗算ユニット（ＭＵＬ／ＭＡＣ module）２５４、複数のカウンタ２６４，レジスタファイル２５６，２組の二重化バッファ２６６、および以上の要素が接続される要素間ネットワーク４０ｃを備える。また、処理要素ネットワーク１０ｃは、２つの２０４８ワードＲＡＭ２５８および４つの５１２ワードＲＡＭ２５９を備えるが、演算器２０や積和・乗算ユニット２５４のみならず、図示しないＣＰＵからのアクセスも可能とするため、ＲＡＭ２５８およびＲＡＭ２５９の各々には、アービタが接続され、要素間ネットワーク４０ｃおよびセレクタ／アドレスデコーダ２６２はアービタを介して上記のＲＡＭに接続される。このような構成により、手続き処理得意とするＣＰＵ（図示せず）と連携して動作するシステムを構築することが可能となり、手図付き処理とパイプライン処理とを融合した動作が可能となるので、広範な用途に対応することが可能となる。
【００９４】
以上は、本発明の説明のために実施例を掲げたに過ぎない。したがって、本発明の技術思想または原理に沿って上述の実施例に種々の変更、修正または追加を行うことは、当業者には容易である。
【００９５】
図２および４のネットワークの構造からあきらかなように処理要素または資源を相互接続するネットワークはにおいて、各資源同士の接続は接続される資源の各入力に出力が接続されたセレクタ４９０（とＦＦ４９２）のみによって実現されるのであり、他の資源の接続に使用されるセレクタが関与しないので、設計途中で要素または資源の追加または削除が容易に行うことができる。
【００９６】
以上の実施例では、演算装置の例をあげたが、本発明の再構成可能な演算装置は集積化していわゆるプロセッサとして実現することが可能である。
（付記１）所与の第１のコンフィギュレーション・データにより再構成可能で互いに同時動作可能な複数の演算手段と、
読み書き自在の少なくとも１つの記憶手段と、
演算装置として必要とされる種々の処理要素と、
前記複数の演算手段および前記記憶手段の任意の出力データを前記複数の演算手段の任意の入力のデータとすることを可能とするとともに、前記複数の演算手段、前記記憶手段および前記の種々の処理要素からなる資源の間のデータ転送を前記資源の位置および種類にほぼ依存することなく均一な転送時間で行うとともに、所与の第２のコンフィギュレーション・データにより再構成可能な資源間相互接続手段と、
前記第１および第２のコンフィギュレーション・データを格納する格納手段と、
前記コンフィギュレーション・データを外部記憶装置から前記格納手段へロードする手段と、
前記複数の演算手段から得られる情報に基づき、前記第１および第２のコンフィギュレーション・データを適切なシーケンスおよびタイミングで前記の再構成可能な手段に供給する供給手段とを備えた
ことを特徴とする再構成可能演算装置。
【００９７】
（付記２）前記の資源間相互接続手段は、前記複数の任意の演算手段の出力データを前記複数の任意の演算手段の入力データとすることを可能とするセレクタ手段を含む
ことを特徴とする付記１記載の再構成可能演算装置。
【００９８】
（付記３）前記の資源間相互接続手段は、前記の接続される資源の入力端子に出力が接続されたセレクタ回路を含み、
各演算手段の入力に出力が接続されたセレクタ回路の入力には、前記複数の演算手段の総ての出力が接続され、
各セレクタ回路は、出力段にフリップフロップを備える
ことを特徴とする付記１記載の再構成可能演算装置。
【００９９】
（付記４）前記供給手段は、
前記複数の演算手段から得られる情報に基づき再構成を行うタイミングを示すタイミング信号を生成するタイミング手段と、
所定数の状態に対応した状態番号を格納するテーブル手段と、
現在の状態番号を保持する保持手段と、
前記現在の状態番号を前記テーブル手段に格納された状態番号の１つに関係付ける手段と
前記タイミング信号に応じて前記の関係付けられた状態番号を出力する出力手段とを含み、
前記状態番号は前記格納手段のアドレスである
ことを特徴とする付記１記載の再構成可能演算装置。
【０１００】
（付記５）前記供給手段は、
前記複数の演算手段の各々に含まれる各比較手段が出力する比較結果が一致であることを示す一致信号に関係付けられた所定のコードを生成する手段と、
前記所定のコードが同時に複数生成された場合、前記複数のコードの１つを選択する手段と、
再構成を行うタイミングを示すタイミング信号を生成するタイミング手段と、
所定数の状態に対応した状態番号リストの各が前記所定のコードに対応した複数の状態番号を含むような前記状態番号リストを格納するテーブル手段と、
現在の状態番号を保持する保持手段と、
前記現在の状態番号を前記テーブル手段に格納された状態番号リストの１つに関係付ける手段と
前記タイミング信号に応じて、前記の関係付けられた状態番号リストから前記の選択されたコードに対応する状態番号を出力する手段とを含み、
前記状態番号は前記格納手段のアドレスである
ことを特徴とする付記１記載の再構成可能演算装置。
【０１０１】
（付記６）タイミング手段が、
前記複数の任意の演算手段の任意の比較手段が前記一致信号を出力したタイミングで前記タイミング信号を生成するタイミング信号生成手段からなる
ことを特徴とする付記５記載の再構成可能演算装置。
【０１０２】
（付記７）タイミング手段が、
当該再構成可能演算装置で処理すべきループ処理が終了したことを判定する判定手段と、
前記判定手段が終了を示す信号を出力したときに処理中のデータが現在のコンフィギュレーションに使用されている資源から排出されたタイミングで前記タイミング信号を出力する手段を含む
ことを特徴とする付記５記載の再構成可能演算装置。
【０１０３】
（付記８）前記判定手段が、
データバスおよびアドレスバスを監視することにより条件の成立を示す信号を条件成立信号する手段と、
期待されるループ回数を保持する手段と、
前記条件成立信号の発生回数が前記ループ回数に一致したかどうかを判断する手段を含む
ことを特徴とする付記７記載の再構成可能演算装置。
【０１０４】
（付記９）前記タイミング手段が、
当該再構成可能演算装置で処理すべきループ処理が終了したことを判定する判定手段と、
前記判定手段が終了を示す信号を出力したときに処理中のデータが現在のコンフィギュレーションに使用されている資源から排出されたタイミングで前記タイミング信号を出力するタイミング信号出力手段と、
所与のコンフィギュレーション・データに基づいて、前記タイミング信号生成手段の出力と前記タイミング信号出力手段の出力の一方を選択する手段を含む
ことを特徴とする付記６記載の再構成可能演算装置。
【０１０５】
（付記１０）前記供給手段は、
前記の関係付けられた状態番号を予め準備し、前記タイミング信号に応じて、前記の関係付けられた状態番号で前記格納手段からコンフィギュレーション・データを読み出す手段とを含む
ことを特徴とする付記４記載の再構成可能演算装置。
【０１０６】
（付記１１）前記の関係付けられた状態番号で前記格納手段から予め読み出したコンフィギュレーション・データを保持する保持手段と、
前記タイミング信号に応じて、前記保持手段に保持されたコンフィギュレーション・データを前記の再構成可能な手段に分配する手段とをさらに備えた
ことを特徴とする付記４記載の再構成可能演算装置。
【０１０７】
（付記１２）前記の再構成可能な手段の各に設けられ、前記の再構成可能な手段の各に割り当てられたコンフィギュレーション・データを保持する保持手段と、
前記タイミング信号に応じて、前記保持手段に保持されたコンフィギュレーション・データを前記保持手段に対応する前記の再構成可能な手段に設定する手段とをさらに備えた
ことを特徴とする付記４記載の再構成可能演算装置。
【０１０８】
（付記１３）前記の再構成可能な手段の各グループに設けられ、前記の再構成可能な手段の前記各グループに割り当てられたコンフィギュレーション・データを保持する保持手段と、
前記タイミング信号に応じて、前記保持手段に保持されたコンフィギュレーション・データを前記保持手段に対応する前記グループの再構成可能な手段に設定する手段とをさらに備えた
ことを特徴とする付記４記載の再構成可能演算装置。
【０１０９】
（付記１４）前記格納手段が、前記の再構成可能な手段の各に設けられ、
前記のロードする手段が、前記の再構成可能な手段の各に割り当てられたコンフィギュレーション・データを前記の再構成可能な手段の各に設けられた前記格納手段にロードする
ことを特徴とする付記１記載の再構成可能演算装置。
【０１１０】
（付記１５）前記格納手段が、前記の再構成可能な手段の各グループに設けられ、
前記のロードする手段が、前記の再構成可能な手段の各グループに割り当てられたコンフィギュレーション・データを前記の再構成可能な手段の各グループに設けられた前記格納手段にロードする
ことを特徴とする付記１記載の再構成可能演算装置。
【０１１１】
（付記１６）前記の再構成可能な手段は、受け取ったコンフィギュレーション・データの少なくとも一部をデコードして用いる
ことを特徴とする付記１記載の再構成可能演算装置。
【０１１２】
（付記１７）所与の第１のコンフィギュレーション・データにより再構成可能で互いに同時動作可能な複数の演算手段と、
読み書き自在の記憶手段と、
演算装置として必要とされる種々の処理要素と、
前記演算手段、前記記憶手段および前記の種々の処理要素を相互に接続し、接続される資源の間のデータ転送を前記資源の位置および種類によらず均一に行うとともに、所与の第２のコンフィギュレーション・データにより再構成可能な資源間相互接続手段とから構成される演算資源ネットワークを含む
ことを特徴とする再構成可能なパイプラインプロセッサ。
【０１１３】
（付記１８）付記１乃至１６の何れか一項に記載の再構成可能演算装置は集積回路である。
（付記１９）付記１７記載の再構成可能なパイプラインプロセッサは集積回路である。
【図面の簡単な説明】
【０１１４】
【図１】本発明による再構成可能な演算装置の構成を概念的に示す略ブロック図である。
【図２】図１の処理要素ネットワーク１０のアーキテクチャを示す図であり、２Ａはネットワーク１０の全体的構成を示すブロック図であり、２Ｂは、ネットワーク１０を構成するセレクタ４１の基本的構成を概念的に示す回路図である。
【図３】図１の処理要素ネットワーク１０の一実施形態を示すブロック図である。
【図４Ａ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ａは演算器ＰＥ０（２０）の入力ａ０に対するセレクタの構成を示す図である。
【図４Ｂ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｂは演算器ＰＥ０（２０）の入力ａ１に対するセレクタの構成を示す図である。
【図４Ｃ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｃは演算器ＰＥ０（２０）の入力ｂ０に対するセレクタの構成を示す図である。
【図４Ｄ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｄは演算器ＰＥ０（２０）の入力ｂ１に対するセレクタの構成を示す図である。
【図４Ｅ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４ＥはＲＡＭ０（２４２）のデータ入力部Ｄ０およびアドレス入力部Ａ０に対するセレクタの構成を示す図である。
【図４Ｆ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４ＦはＲＡＭ０（２４２）のデータ入力部Ｄ０およびアドレス入力部Ａ０に対するセレクタの構成を示す図である。
【図４Ｇ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｇデータ出力部ＯＤ０〜ＯＤ３に対するセレクタの構成を示す図である。
【図４Ｈ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｈは遅延用ＦＦ群２５６のＦＦ０およびＦＦ１のデータ入力部に対するセレクタの構成を示す図である。
【図４Ｉ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｉは遅延用ＦＦ群２５６のＦＦ０およびＦＦ１のデータ入力部に対するセレクタの構成を示す図である。
【図４Ｊ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｊはカウンタ０（２５４）の入力部に対するセレクタの構成を示す図である。
【図４Ｋ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｋはバレルシフタ２５２の入力部に対するセレクタの構成を示す図である。
【図４Ｌ】図３の処理要素間ネットワーク４０ａを構成する各種セレクタの実施例を示す図であり、図４Ｌはアドレス出力部ＯＡ０に対するセレクタの構成を示す図である。
【図５Ａ】図１のシーケンサの第１の実施形態を概念的に示す略ブロック図である。
【図５Ｂ】図１のシーケンサの第２の実施形態を概念的に示す略ブロック図である。
【図６】図５Ａおよび５Ｂのシーケンサ７０および７０ａの状態テーブルの一実施例を示す図である。
【図７】図５のシーケンサ７０または７０ａを用いた場合の再構成可能演算装置１の再構成から実行に至るまでの動作タイミングを示す図である。
【図８Ａ】本発明が従来の課題である「データ転送に伴う処理サイクルの遅延」を克服するようすを示す図であり、図８Ａはコンフィグレーション例を示す図である。
【図８Ｂ】本発明が従来の課題である「データ転送に伴う処理サイクルの遅延」を克服するようすを示す図であり、図８Ｂは本コンフィグレーション例における処理サイクルを示すテーブルである。
【図９Ａ】本発明の演算装置１の異種処理要素を含むコンフィグレーション例を示す等価回路である。
【図９Ｂ】図９Ａのコンフィギュレーションに対する処理サイクルテーブルである。
【図１０Ａ】本発明の演算装置１のフィードバックを含むコンフィグレーション例を示す等価回路である。
【図１０Ｂ】図１０Ａのコンフィギュレーションに対する処理サイクルテーブルである。
【図１１Ａ】本発明の演算装置１で並列処理を行うコンフィグレーション例を示す等価回路である。
【図１１Ｂ】図１１Ａのコンフィギュレーションに対する処理サイクルテーブルである。
【図１１Ｃ】本発明の演算装置１でパイプライン処理を行うコンフィグレーション例を示す等価回路である。
【図１１Ｄ】図１１Ｃのコンフィギュレーションに対する処理サイクルテーブルである。
【図１２】演算装置１における再構成（reconfiguration）の例を示す図である。
【図１３Ａ】従来のＲＩＳＣ（reduced instruction set computer）プロセッサ（１３Ａ）と本発明の演算装置１（１３Ｂ）とのセケーラビリティを比較するための図である。
【図１３Ｂ】従来のＲＩＳＣ（reduced instruction set computer）プロセッサ（１３Ａ）と本発明の演算装置１（１３Ｂ）とのセケーラビリティを比較するための図である。
【図１４】本発明の好ましい実施形態による演算装置の処理要素ネットワーク１０ｂを概念的に示す略ブロック図である。
【図１５】図１４の切替信号発生器６０の実施例を示すブロック図である。
【図１６】図１４の処理要素ネットワーク１０ｂおよび図１５の切替信号発生器６０を用いた好ましい実施形態による演算装置の全体的構成とシーケンサの具体例を示す略ブロック図である。
【図１７】図１６のシーケンサ７０ｂの状態テーブル７８の実施例を示す図である。
【図１８】状態テーブルの７８の先読みを行うシーケンサの実施例を示す略ブロック図である。
【図１９】図１８のシーケンサ７０ｃの動作タイミングを示す処理ステータスチャートである。
【図２０】コンフィギュレーション・レジスタを備えた演算装置の実施例を示す略ブロック図である。
【図２１】図２０の演算装置１ｃの動作タイミングを示す処理ステータスチャートである。
【図２２Ａ】コンフィギュレーション・レジスタを備えた演算装置の変形例を示す略ブロック図であり、図２２Ａは処理要素群ごとに設けた例である。
【図２２Ｂ】コンフィギュレーション・レジスタを備えた演算装置の変形例を示す略ブロック図であり、図２２Ｂは各処理要素ごとに設けた例である。
【図２３Ａ】コンフィギュレーション・メモリを処理要素ごとに設けた構成例を示す略ブロック図である。
【図２３Ｂ】クラスタ化した処理要素ネットワークのクラスタごとにコンフィギュレーション・メモリを設けた構成例を示す略ブロック図である。
【図２４】図１，２Ａ，３，１４，１５，２２および２３において演算器または演算要素が受信したコンフィギュレーション・データの一部または全部をデコードする実施例を示す図である。
【図２５】別の実施形態による処理要素ネットワークの構成例を示す略ブロック図である。
【図２６】特許文献１のアレイ型プロセッサのプロセシングエレメント（ＰＥまたは処理要素）アレイ部の一例を示す図である。
【図２７Ａ】図２６に示した従来のＰＥアレイにおけるデータ転送の遅延の問題を説明するための図であり、図２７Ａは図２６のＰＥアレイの動作を示す図である。
【図２７Ｂ】図２６に示した従来のＰＥアレイにおけるデータ転送の遅延の問題を説明するための図であり、図２７Ｂは処理サイクルごとの動作を示す図である。
【図２８Ａ】ＰＥアレイを構成する処理要素への機能配分が原因となり処理内容により問題が生じる可能性があることを示す図であり、図２８Ａは問題が発生しない場合の図２６のＰＥアレイの動作および処理サイクルごとの動作を示す図である。
【図２８Ｂ】ＰＥアレイを構成する処理要素への機能配分が原因となり処理内容により問題が生じる可能性があることを示す図であり、図２８Ｂは問題が発生しない場合の図２６のＰＥアレイの動作および処理サイクルごとの動作を示す図である。
【図２８Ｃ】ＰＥアレイを構成する処理要素への機能配分が原因となり処理内容により問題が生じる可能性があることを示す図であり、図２８Ｃは問題が発生する場合の図２６のＰＥアレイの動作および処理サイクルごとの動作を示す図である。
【図２８Ｄ】ＰＥアレイを構成する処理要素への機能配分が原因となり処理内容により問題が生じる可能性があることを示す図であり、図２８Ｄは問題が発生する場合の図２６のＰＥアレイの動作および処理サイクルごとの動作を示す図である。
【図２９Ａ】図２６のＰＥアレイによりフェードバックループを含む処理を行った場合の問題点を説明する図であり、図２９ＡはＰＥアレイの動作を示す図である。
【図２９Ｂ】図２６のＰＥアレイによりフェードバックループを含む処理を行った場合の問題点を説明する図であり、図２９Ｂは処理サイクルごとの動作を示す図である。
【図３０】従来の再構成可能アレイプロセッサの概略図である。
【図３１】図３０の再構成可能アレイプロセッサの状態遷移時の動作タイミングを示す図である。
【図３２Ａ】典型的なＲＩＳＣ（reduced instruction set computer）プロセッサを概念的に表したブロック図である。
【図３２Ｂ】一般的なＲＩＳＣプロセッサによる並列処理動作を示すステータスフローチャートである。
【図３２Ｃ】一般的なＲＩＳＣプロセッサによるフォワーディング処理を含む処理の流れを示すステータスフローチャートである。
【図３２Ｄ】一般的なＲＩＳＣプロセッサによるフォワーディング処理を含まない処理の流れを示すステータスフローチャートである。
【符号の説明】
【０１１５】
１  再構成可能な演算装置  
１０  処理要素ネットワーク
２０  演算器
４０  要素間ネットワーク
４１  セレクタ
５０  コンフィギュレーションメモリ
５５  ＣＤロード部
５７  状態テーブルロード部
６０  切替条件信号生成器
７０  シーケンサ
７４  状態テーブル
７２  状態制御部
７６  現状態番号レジスタ
７８  状態テーブル
７９  セレクタ
２２０  データ入力ポート
２３０  データ出力ポート
２４０  データメモリ
４９０  セレクタ回路
４９２  ラッチ用ＦＦ
６１０  ループ終了判定部
６３０  切替条件コード生成ユニット
【図１】
2006031127.tif 000003
【図２】
2006031127.tif 000004
【図３】
2006031127.tif 000005
【図４Ａ】
2006031127.tif 000006
【図４Ｂ】
2006031127.tif 000007
【図４Ｃ】
2006031127.tif 000008
【図４Ｄ】
2006031127.tif 000009
【図４Ｅ】
2006031127.tif 000010
【図４Ｆ】
2006031127.tif 000011
【図４Ｇ】
2006031127.tif 000012
【図４Ｈ】
2006031127.tif 000013
【図４Ｉ】
2006031127.tif 000014
【図４Ｊ】
2006031127.tif 000015
【図４Ｋ】
2006031127.tif 000016
【図４Ｌ】
2006031127.tif 000017
【図５Ａ】
2006031127.tif 000018
【図５Ｂ】
2006031127.tif 000019
【図６】
2006031127.tif 000020
【図７】
2006031127.tif 000021
【図８Ｂ】
2006031127.tif 000022
【図９Ｂ】
2006031127.tif 000023
【図１０Ｂ】
2006031127.tif 000024
【図１１Ａ】
2006031127.tif 000025
【図１１Ｂ】
2006031127.tif 000026
【図１１Ｃ】
2006031127.tif 000027
【図１１Ｄ】
2006031127.tif 000028
【図１２】
2006031127.tif 000029
【図１３Ａ】
2006031127.tif 000030
【図１３Ｂ】
2006031127.tif 000031
【図１４】
2006031127.tif 000032
【図１５】
2006031127.tif 000033
【図１６】
2006031127.tif 000034
【図１７】
2006031127.tif 000035
【図１８】
2006031127.tif 000036
【図１９】
2006031127.tif 000037
【図２０】
2006031127.tif 000038
【図２１】
2006031127.tif 000039
【図２２Ａ】
2006031127.tif 000040
【図２２Ｂ】
2006031127.tif 000041
【図２３Ａ】
2006031127.tif 000042
【図２３Ｂ】
2006031127.tif 000043
【図２４】
2006031127.tif 000044
【図２５】
2006031127.tif 000045
【図２６】
2006031127.tif 000046
【図２７Ａ】
2006031127.tif 000047
【図２７Ｂ】
2006031127.tif 000048
【図２８Ａ】
2006031127.tif 000049
【図２８Ｂ】
2006031127.tif 000050
【図２８Ｃ】
2006031127.tif 000051
【図２８Ｄ】
2006031127.tif 000052
【図２９Ａ】
2006031127.tif 000053
【図２９Ｂ】
2006031127.tif 000054
【図３０】
2006031127.tif 000055
【図３１】
2006031127.tif 000056
【図３２Ａ】
2006031127.tif 000057
【図３２Ｂ】
2006031127.tif 000058
【図３２Ｃ】
2006031127.tif 000059
【図３２Ｄ】
2006031127.tif 000060
【図８Ａ】
2006031127.tif 000061
【図９Ａ】
2006031127.tif 000062
【図１０Ａ】
2006031127.tif 000063