図1は、実施の形態に係る処理装置10の構成図である。処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、内部状態保持回路20、出力回路22および経路部24を備える。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。
設定部14は、第1設定部14a、第2設定部14b、第3設定部14c、第4設定部14dおよび選択器16を有し、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。経路部24は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。内部状態保持回路20および出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。内部状態保持回路20は経路部24に接続されている。リコンフィギュラブル回路12は組合せ回路として構成される。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路の集合体を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。以下、論理回路の集合体を、単に「論理回路」とも呼ぶ。この接続部は、設定部14から出力される定数データを、所望の論理回路の入力に供給するための接続関係を設定する機能ももつ。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路列の間に設けられる接続部の接続関係、さらには論理回路の入力に供給される定数データは、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ38に変換して記憶部34に格納する。データフローグラフ38は、入力変数および定数の演算の流れをグラフ構造で表現したものである。
設定データ生成部32は、データフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や、論理回路列の間に設けられる接続部の接続関係、さらには論理回路の入力に供給する定数データなどを定める。本実施の形態では、設定データ生成部32が、1つの回路を分割してできる複数の回路の設定データ40を生成する。
図2は、1つの生成するべきターゲット回路42を分割してできる複数の回路の設定データ40について説明するための図である。1つのターゲット回路42を分割して生成される回路を、「分割回路」と呼ぶ。この例では、1つのターゲット回路42が、4つの分割回路、すなわち分割回路A、分割回路B、分割回路C、分割回路Dに分割されている。ターゲット回路42は、データフローグラフ38における演算の流れにしたがって分割される。データフローグラフ38において、上から下に向かう方向に演算の流れが表現される場合には、そのデータフローグラフ38を上から所定の間隔で切り取り、その切り取った部分を分割回路として設定する。流れにしたがって切り取る間隔は、リコンフィギュラブル回路12における論理回路の段数以下に定められる。ターゲット回路42は、データフローグラフ38の横方向で分割されてもよい。横方向に分割する幅は、リコンフィギュラブル回路12における論理回路の1段当たりの個数以下に定められる。
特に、生成すべきターゲット回路42がリコンフィギュラブル回路12よりも大きい場合に、設定データ生成部32は、リコンフィギュラブル回路12にマッピングできる大きさになるように、ターゲット回路42を分割することが好ましい。設定データ生成部32は、リコンフィギュラブル回路12における論理回路の配列構造とデータフローグラフ38によって、ターゲット回路42の分割方法を定める。リコンフィギュラブル回路12の配列構造は、制御部18から設定データ生成部32に伝えられてもよく、また予め記憶部34に記録されていてもよい。また、制御部18が、ターゲット回路42の分割方法を設定データ生成部32に指示してもよい。
以上の手順を実行することにより、記憶部34は、リコンフィギュラブル回路12を所期の回路として構成するための複数の設定データ40を記憶する。複数の設定データ40は、分割回路Aを構成するための設定データ40a、分割回路Bを構成するための設定データ40b、分割回路Cを構成するための設定データ40c、および分割回路Dを構成するための設定データ40dである。既述のごとく、複数の設定データ40は、1つのターゲット回路42を分割した複数の分割回路をそれぞれ表現したものである。このように、リコンフィギュラブル回路12の回路規模に応じて、生成すべきターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、本実施の形態の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図3は、リコンフィギュラブル回路12の構成図である。リコンフィギュラブル回路12は、複数の論理回路50の列が複数段にわたって配列されたもので、各段に設けられた接続部52によって、前段の論理回路列の出力と後段の論理回路列の入力が設定により任意に接続可能な構造となっている。また接続部52は、設定部14から出力される定数データを、所期の論理回路50に供給するための接続関係を設定する機能も有している。入力接続部51は、外部からの入力ないしは出力選択部53より出力される値、または設定部14から出力される定数データを、1段目の論理回路列における所期の論理回路50に供給するための接続関係を設定する機能を有する。ここでは、論理回路50の例としてALUを示す。ALUは、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる算術論理回路である。各ALUは、複数の演算機能を選択するためのセレクタを有している。
図示のように、リコンフィギュラブル回路12は、横方向にY個、縦方向にX個のALUが配置されたALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU1Yには、入力接続部51を介して入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU2Yに入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で任意の接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、第(X−1)段の接続部52まで、同様の構成であり、最終段である第X段のALU列は、リコンフィギュラブル回路12にマッピングされた演算の最終結果を、出力選択部53に出力する。出力選択部53は、図1に示す出力回路22ないしは内部状態保持回路20の機能に相当する。
図4は、データフローグラフ38の例を示す図である。データフローグラフ38においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されている。設定データ生成部32は、このデータフローグラフ38をリコンフィギュラブル回路12にマッピングするための設定データ40を生成する。特にデータフローグラフ38をリコンフィギュラブル回路12にマッピングしきれない場合には、データフローグラフ38を複数の領域に分割して、分割回路の設定データ40を生成する。データフローグラフ38による演算の流れを回路上で実現するべく、設定データ40は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ40は、各論理回路50の機能を選択するセレクタに供給する選択情報、接続部52の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
図1に戻って、回路の構成時、制御部18は、1つの回路を構成するための複数の設定データ40を選択する。ここでは、制御部18が、図2に示すターゲット回路42を構成するための設定データ40、すなわち分割回路Aの設定データ40a、分割回路Bの設定データ40b、分割回路Cの設定データ40cおよび分割回路Dの設定データ40dを選択するものとする。制御部18は、選択した設定データ40を設定部14に供給する。設定部14は、プログラムカウンタのカウント値に基づいてデータを出力するコマンドメモリを有し、供給される設定データ40をそれぞれ保持する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有してもよい。具体的に制御部18は、設定データ40aを第1設定部14aに、設定データ40bを第2設定部14bに、設定データ40cを第3設定部14cに、設定データ40dを第4設定部14dに供給する。
設定部14は、選択された設定データ40をリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を再構成する。これにより、リコンフィギュラブル回路12は、所期の演算を実行できる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、内部状態保持回路20および出力回路22に供給される。また制御部18はカウンタ回路を含み、カウント信号を選択器16に供給してもよい。この場合、カウンタ回路は4進カウンタである。
図5は、信号処理のフローチャートを示す。制御部18は、カウンタ回路からのカウント信号に合わせて、リコンフィギュラブル回路12に複数の設定データ40、すなわち設定データ40a、設定データ40b、設定データ40cおよび設定データ40dを順次供給するように設定部14を制御する。設定部14が、複数の設定データ40をリコンフィギュラブル回路12に順次供給することにより、全体として1つの回路が構成されることになる。出力回路22は、設定部14によりリコンフィギュラブル回路12が複数回、ここでは4回構成されると、リコンフィギュラブル回路12の出力を出力する。この回数は、使用する設定データ40の個数となる。以下、具体的な手順を示す。
まず、制御部18が、選択器16を制御して第1設定部14aを選択する。選択器16は、カウンタ回路により制御されてもよい。第1設定部14aは、分割回路Aの設定データ40aをリコンフィギュラブル回路12に供給し、リコンフィギュラブル回路12上に分割回路Aを構成する(S10)。分割回路Aが構成されると同時に、入力データが分割回路Aに供給される。組合せ回路である分割回路Aは、次のクロック信号までの間に、演算処理を実行する。
制御部18がクロック信号を内部状態保持回路20に供給すると、内部状態保持回路20は、分割回路Aによる処理結果を保持する(S12)。S10およびS12のステップを第1サイクルと呼ぶ。同時に、制御部18が、選択器16を制御して第2設定部14bを選択する。第2設定部14bは、分割回路Bの設定データ40bをリコンフィギュラブル回路12に供給し、リコンフィギュラブル回路12上に分割回路Bを構成する。このとき、内部状態保持回路20に保持された分割回路Aの処理結果が、経路部24を通って分割回路Bの入力に供給される(S14)。分割回路Bは、次のクロック信号までの間に、演算処理を実行する。
制御部18が次のクロック信号を内部状態保持回路20に供給すると、内部状態保持回路20は、分割回路Bの処理結果を保持する(S16)。S14およびS16のステップを第2サイクルと呼ぶ。同時に、制御部18が、選択器16を制御して第3設定部14cを選択する。第3設定部14cは、分割回路Cの設定データ40cをリコンフィギュラブル回路12に供給し、リコンフィギュラブル回路12上に分割回路Cを構成する。このとき、内部状態保持回路20に保持された分割回路Bの処理結果が、経路部24を通って分割回路Cの入力に供給される(S18)。分割回路Cは、次のクロック信号までの間に、演算処理を実行する。
制御部18が次のクロック信号を内部状態保持回路20に供給すると、内部状態保持回路20は、分割回路Cの処理結果を保持する(S20)。S18およびS20のステップを第3サイクルと呼ぶ。同時に、制御部18が、選択器16を制御して第4設定部14dを選択する。第4設定部14dは、分割回路Dの設定データ40dをリコンフィギュラブル回路12に供給し、リコンフィギュラブル回路12上に分割回路Dを構成する。このとき、内部状態保持回路20に保持された分割回路Cの処理結果が、経路部24を通って分割回路Dの入力に供給される(S22)。分割回路Dは、次のクロック信号までの間に、演算処理を実行する。
制御部18が次のクロック信号を出力回路22に供給すると、出力回路22は、分割回路Dの処理結果を出力する(S24)。S22およびS24のステップを第4サイクルと呼ぶ。第1サイクルから第4サイクルまでの処理を繰り返し行う場合には、再度、制御部18が選択器16を制御して第1設定部14aを選択し、リコンフィギュラブル回路12上に分割回路Aを構成して、入力データが供給される。
以上のように、1つのターゲット回路42を分割した複数の分割回路A〜Dをリコンフィギュラブル回路12上に順次構成し、各分割回路の出力を次の分割回路の入力にフィードバックして各分割回路における演算処理を実行し、最後に構成された分割回路Dから、ターゲット回路42の出力を取り出す。S10からS24までにかかる時間は4クロック分であり、本実施の形態の処理装置10によると、限られたリコンフィギュラブル回路12の回路規模のなかで、効率よい演算処理を実行することができる。また、リコンフィギュラブル回路12の回路規模が小さいため、消費電力も小さくできる。
制御部18は、内部状態保持回路20および出力回路22に同一のクロック信号を供給してもよいが、出力回路22に供給するクロック信号の周期を、内部状態保持回路20に供給するクロック信号の周期の4倍に設定してもよい。内部状態保持回路20および出力回路22に同一のクロック信号を供給する場合は、内部状態保持回路20に出力回路22の役目をもたせ、1つの回路にまとめることもできる。この場合は、出力先の回路以降で必要な信号を取り出すための回路が必要となる。図5に示した例では1つのターゲット回路42を4サイクルの分割回路で表現したため、出力回路22の動作周期が内部状態保持回路20の動作周期の4倍となっているが、周期の比は、ターゲット回路42の分割数に応じて変化する。また、この例では第1設定部14a〜第4設定部14dの4つの設定部を利用したが、この数もターゲット回路42の分割数に応じて変動することは当業者に容易に理解されるところである。なお、特に説明はしていないが、論理回路50、入力接続部51および接続部52についてD−FFを付加して、いわゆるパイプライン処理を行うことも可能である。
図6は、処理装置10においてリコンフィギュラブル回路12に定数データを供給するための構成を示す。定数データを供給するために、制御部18はプログラムカウンタ62を有し、設定部14はコマンドメモリ61および定数テーブル70を有する。コマンドメモリ61は、各ALUの機能を定める設定データ、入力接続部51、接続部52および出力選択部53における接続を定める設定データ(図6において設定データを供給するための接続線については図示を省略)、および各ALUに入力する定数に関する設定データを保持している。ALU機能を定める設定データは、各ALUにおける論理機能を選択するべく、ALUのセレクタに供給するためのセレクト値であり、接続を定める設定データは、入力接続部51、接続部52および出力選択部53における結線を定めるためのデータである。以下、本実施の形態において入力接続部51と接続部52の機能は実質的に同じであるため、以下、入力接続部51を接続部52として表現することもある。定数に関する設定データは、各ALUに入力する定数を格納した定数テーブル70のアドレスデータである。コマンドメモリ61に保持されるデータは、設定データ40として生成されたデータであり、回路を分割して生成する場合には、それぞれの分割した設定データ40に対応する。コマンドメモリ61に保持されたデータは、プログラムカウンタ62のカウンタ値によって読み出されていく。以下では、リコンフィギュラブル回路12に1つの回路を生成する場合を例にとり、ALUの入力に定数を供給する方法を説明する。なお、リコンフィギュラブル回路12に生成する回路は、最終的に生成すべきターゲット回路42であるか、それを分割した分割回路であるかは問わない。
定数テーブル70は、リコンフィギュラブル回路12のALUに供給する定数データを記憶する。定数テーブル70はRAMで構成され、複数存在するのが好ましい。入力接続部51および接続部52は、コマンドメモリ61から出力される接続用の設定データに基づいて、複数の定数テーブル70の出力と、ALUの入力とを接続する。RAMである各定数テーブル70は、複数のデータを格納する領域を有してもよいが、1回の読出しでは、1つのデータしか読み出されることはできない。したがって、例えば複数回のサイクルで所期のターゲット回路42を構成する場合、各定数テーブル70は、1つの分割回路に供給する定数データを複数個有さず、言い換えると、1つの分割回路に供給される定数データは、それぞれ異なる定数テーブル70にて記憶されることが好ましい。これにより、各定数テーブル70からの1回の読出しで、必要な定数データを所期のALUに設定することが可能となり、定数データの設定時間を短縮することが可能となる。
図7は、コマンドメモリ61の出力データを説明するための図である。コマンドメモリ61は、複数の定数テーブル70a〜70nに対して、各ALUの入力に必要な定数を格納したアドレスデータを供給する。定数テーブル70は、コマンドメモリ61からアドレスデータを受けて、そのアドレスに記憶される定数データを接続部52に出力する。
コマンドメモリ61は、ALUの入力を、前段のALUの出力、外部からの入力および/または定数テーブル70の出力と接続させるための接続設定データを接続部52に与える。接続部52は、接続設定データを受けて、所期の接続関係を実現する。これにより、演算に定数を必要とするALUには、接続部52により定数テーブル70から定数データが供給されることになる。またコマンドメモリ61は、ALUが所期の演算機能を実行するためのデータをALUに供給する。リコンフィギュラブル回路12における全ての接続部52、ALUに対して上記したデータを供給することで、リコンフィギュラブル回路12が所期の回路を構成することができる。
以下、定数テーブル70とALUの関係について説明する。
定数テーブル70は、各ALUに対して設けられてもよい。定数テーブル70をALUの数だけ用意することで、接続部52における結線を容易にすることができる。すなわち、定数テーブル70とALUの対応が1対1に定まるため、接続部52では予め定数テーブル70とALUとを接続する配線と、その配線をオンオフするスイッチを設けるだけでよいという利点がある。したがって、配線部を小さく構成でき、回路の小型化および低消費電力化を実現することができる。またコンパイラの構成が容易になるため、コンパイラソフトの削減、コンパイル時間の短縮も実現することができる。
定数テーブル70は、ALU列の各段に対して設けられてもよい。定数テーブル70を各段に対して設けることで、各段における接続部52と定数テーブル70とを対応付けることができるため、接続部52における結線を比較的容易にすることができる。すなわち、定数テーブル70とALU列の対応が1対1に定まるため、接続部52では予め定数テーブル70とALU列に含まれるALUとを接続する配線と、その配線を選択するセレクタを設ければよいという利点がある。定数テーブル70を各ALUに対して設ける場合と比較すると、ALU列に対して設けることで、同一のALU列に存在するALUで定数テーブル70の格納領域を共有化できる。例えば、定数テーブル70の格納領域を同一ALU列のALU数以下とすることにより、定数テーブル70の規模をトータルで小さくできる可能性がある。したがって、配線部を比較的小さく構成でき、回路の小型化および低消費電力化を実現することができる。またコンパイラの構成が容易になるため、コンパイラソフトの削減、コンパイル時間の短縮も実現することができる。
定数テーブル70は、ALUやALU列に対応させずに設けられてもよい。この場合、接続部52と定数テーブル70との配線は必要となるが、定数テーブル70の個数または各定数テーブル70の回路規模を減らすことができる。これは図7に示した例に相当する。リコンフィギュラブル回路12に回路を構成する場合、全てのALUが定数を必要とする可能性は極めて低いため、複数の定数テーブル70を全ALUで共有化することで、定数テーブル70の領域確保に必要な回路規模を削減することができるという利点がある。定数テーブル70に必要な領域が少なくなるため、回路の小型化および低消費電力化を実現することができる。
なお定数テーブル70の配置パターンは、上記の構成に限定されず、他の態様をとってもよい。
図8は、前後7点を利用する7タップからなるFIRフィルタ回路を示す。以下、このFIR(Finite Impulse Response)フィルタ回路を、本実施の形態における処理装置10で実現する具体例を示す。このFIRフィルタ回路の定数a1、a2、a3、a4は、図示のごとく、対称に設定されている。
図9は、図8で示すFIRフィルタ回路を置き換えた回路を示す。回路の置き換えは、フィルタ係数の対称性を利用している。
図10は、図9に示すFIRフィルタ回路をコンパイルして作成したデータフローグラフ38aを示す。図中、“+”は加算を示し、“×”は乗算を示し、“MOV”はスルー用のパスを示す。“MOV”は、詳細には、入力されたデータに対して演算処理を行わず、データを下段に通過させるノードであることを意味する。ここでは、前段のALUの出力に対して、a1、a2、a3、a4で表現される所定の定数が乗算されている。
図11は、図10に示すデータフローグラフ38aをリコンフィギュラブル回路12にマッピングした例を示す。なお、ここではリコンフィギュラブル回路12が4列4段のALUを有してデータフローグラフ38aを一度にマッピングできる例を想定している。例えばリコンフィギュラブル回路12が4列2段のALUを有する場合は、データフローグラフ38aを2段ずつに分割し、順にリコンフィギュラブル回路12にマッピングして、最初の分割回路の出力を次の分割回路の入力として利用することで、データフローグラフ38aの回路を実現することができる。
データフローグラフ38aにおいては、2段目のALU列に対して定数入力が行われている。ここでは、4つの定数テーブル70a、70b、70c、70dが用意されており、それぞれに分散されて4つの定数データa1、a2、a3、a4が記憶されている。なお、既述したように、リコンフィギュラブル回路12にマッピングするときに必要なデータを分散して定数テーブル70に格納しておくことで、複数の定数テーブル70からの1回のデータ読出しにより、所期のデータをALUに対して供給することが可能となる。図11に示す例でも、定数テーブル70が、定数入力が必要な全てのALUに対して定数データを同時に供給することができるように構成されている。図中、定数テーブル70中に示される「X」は、任意のデータが記憶されていることを表現する。
入力接続部51、接続部52、出力選択部53における接続関係は、コマンドメモリ61による接続設定データにより定められる。なお、ここでは上下段のALU列の接続については言及せず、定数テーブル70の出力とALUの入力との接続関係について示す。コマンドメモリ61は、定数テーブル70aに対してアドレス0を、定数テーブル70bに対してアドレス1を、定数テーブル70cに対してアドレス2を、定数テーブル70dに対してアドレス0を入力する。定数テーブル70aは、データa1をALU21の入力に供給し、定数テーブル70bは、データa2をALU22の入力に供給し、定数テーブル70cは、データa3をALU23の入力に供給し、定数テーブル70dは、データa4をALU24の入力に供給する。なお、この例では偶然にも第2段のALU列に全ての定数データが入力されているが、定数データは複数段にまたがって供給されることが可能である。これにより、図10に示すデータフローグラフ38aがリコンフィギュラブル回路12上にマッピングされる。
図12は、リコンフィギュラブル回路12にて生成するべきターゲット回路の例を示す。このターゲット回路は、複数の回路、すなわち直列に並べられた三段のFIRで構成される。FIRの形式は図10に示したとおりであり、入力する定数のみが異なるものを例にあげる。FIR1およびFIR2の係数は、以下のとおりである。
FIR1:a1=100、a2=200、a3=300、a4=400
FIR2:a1=200、a2=400、a3=800、a4=1600
ターゲット回路は、FIR1、FIR2、FIR1をリコンフィギュラブル回路12上に順次生成することによって、構成することができる。
図13は、定数テーブル70のデータ格納例を示す。ターゲット回路には2つのFIR1が含まれているが、定数をテーブルとしてもつことによって、FIR1の定数データを2重にもつ必要はなく、定数テーブル70に格納した定数データを2つのFIR1の間で共用することが可能となる。また、FIR1とFIR2には、重複する定数200、400が存在しているが、これらについても、FIR1とFIR2の間で共用することが可能である。このとき、FIR1の生成時に必要となるFIR1の定数100、200、300、400については、定数テーブル70a、70b、70c、70dに分散して記憶させ、同じタイミングで読み出せることが好ましい。この例では、定数テーブル70a、70b、70c、70dのアドレス0に、FIR1の定数が分散して記憶されている。また、FIR2の生成時に必要となるFIR2の定数200、400、800、1600についても、同様に定数テーブル70a、70b、70c、70dに分散して記憶させ、同じタイミングで読み出せることが好ましい。定数200が定数テーブル70bに、定数400が定数テーブル70dに記憶されているため、この例では、定数800を定数テーブル70aに、定数1600を定数テーブル70cに記憶させることとしている。異なるタイミングで同一値のデータを使用する場合には、定数テーブル70に保持された1つのデータを共用することが好ましい。使用する定数をテーブル化することで、同一の定数データの使い回しが可能となり、そのためにテーブルを記憶するメモリ領域を小さく形成できることで、回路規模の縮小化を実現することが可能となる。
図14は、図12に示すFIR1をリコンフィギュラブル回路12にマッピングした例を示す。入力接続部51、接続部52、出力選択部53における接続関係は、コマンドメモリ61による接続設定データにより定められる。コマンドメモリ61は、定数テーブル70aに対してアドレス0を、定数テーブル70bに対してアドレス0を、定数テーブル70cに対してアドレス0を、定数テーブル70dに対してアドレス0を入力する。定数テーブル70aは、定数100をALU21の入力に供給し、定数テーブル70bは、定数200をALU22の入力に供給し、定数テーブル70cは、定数300をALU23の入力に供給し、定数テーブル70dは、定数400をALU24の入力に供給する。これにより、FIR1をリコンフィギュラブル回路12にマッピングすることができる。
図15は、図12に示すFIR2をリコンフィギュラブル回路12にマッピングした例を示す。入力接続部51、接続部52、出力選択部53における接続関係は、コマンドメモリ61による接続設定データにより定められる。なお、入力接続部51においては、図12における1段目のFIR1の出力が入力され、第1段のALU列に供給されることになる。コマンドメモリ61は、定数テーブル70aに対してアドレス1を、定数テーブル70bに対してアドレス0を、定数テーブル70cに対してアドレス1を、定数テーブル70dに対してアドレス0を入力する。定数テーブル70aは、定数800をALU23の入力に供給し、定数テーブル70bは、定数200をALU21の入力に供給し、定数テーブル70cは、定数1600をALU24の入力に供給し、定数テーブル70dは、定数400をALU22の入力に供給する。これにより、FIR2をリコンフィギュラブル回路12にマッピングすることができる。
なお、図12に示すターゲット回路を構成するためには、図14に示すFIR1をリコンフィギュラブル回路12上に再構成し、図15に示すFIR2の出力を第1段のALU列に供給する。定数テーブル70から定数を供給することで、FIR1、FIR2、FIR1を順にリコンフィギュラブル回路12上に効率よく生成することができる。以上に示したように、FIR1については2回出現するが、定数は全て同じであるため、共通化が可能である。また、FIR1とFIR2とでは、定数200と定数400を共通化することができる。したがって、演算に要する12個の定数を6つの領域に記憶すればよいことになり、テーブル領域の削減、それにともなう回路規模の小型化および低消費電力化を実現することができる。
図16は、コマンドメモリ61に定数を直接記憶させる例を示す。定数テーブルを利用せずに、コマンドメモリ61に定数を記憶させることでも、各ALUに定数を供給することが可能となる。上記の実施例で示したように、定数テーブルを利用した場合には、必要なデータのみを記憶すればよいためメモリ容量が少なくてすみ、回路規模の削減および低消費電力化を実現することが可能である。一方、コマンドメモリ61からALUに定数を供給する場合には、テーブルからのデータ読み出しに伴う回路遅延が発生しないという利点がある。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、16・・・選択器、18・・・制御部、20・・・内部状態保持回路、22・・・出力回路、24・・・経路部、26・・・集積回路装置、30・・・コンパイル部、32・・・設定データ生成部、34・・・記憶部、36・・・プログラム、38・・・データフローグラフ、40・・・設定データ、42・・・ターゲット回路、50・・・論理回路、51・・・入力接続部、52・・・接続部、53・・・出力選択部、61・・・コマンドメモリ、62・・・プログラムカウンタ、70・・・定数テーブル。