(実施の形態1)
図1は、実施の形態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を供給する。経路部24は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。内部状態保持回路20および出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。内部状態保持回路20は経路部24に接続されている。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ38に変換して記憶部34に格納する。データフローグラフ38は、入力変数および定数の演算の流れをグラフ構造で表現したものである。
設定データ生成部32は、データフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係を定める。実施の形態1では、設定データ生成部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を実現することが可能となる。別の視点からみると、実施の形態1の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図3は、リコンフィギュラブル回路12の構成の一例を示す。リコンフィギュラブル回路12は、複数の論理回路50の列が複数段にわたって配列されたもので、各段に設けられた接続部52によって、前段の論理回路列の出力と後段の論理回路列の入力が設定により任意に接続可能な構造となっている。ここでは、論理回路50の例としてALUを示す。各ALUは、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を選択するためのセレクタを有している。
図示のように、リコンフィギュラブル回路12は、横方向にY個、縦方向にX個のALUが配置されたALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU1Yには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU2Yに入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、第(X−1)段の接続部52まで、同様の構成であり、最終段である第X段のALU列は演算の最終結果を出力する。
図4は、リコンフィギュラブル回路12の構成の別の例を示す。図4に示すリコンフィギュラブル回路12は、図3に示すリコンフィギュラブル回路12の機能をさらに拡張している。図4に示すリコンフィギュラブル回路12において、接続部52は、前後段のALU列の接続関係を定めるだけでなく、外部から入力される変数や定数を、所期のALUに供給する機能を有している。また、接続部52は、前段のALUの演算結果を外部に直接出力することもできる。この構成により、図3に示されるリコンフィギュラブル回路12の構成よりも多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。
図5は、データフローグラフ38の例を示す図である。データフローグラフ38においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されている。設定データ生成部32は、このデータフローグラフ38をリコンフィギュラブル回路12にマッピングするための設定データ40を生成する。実施の形態1では、特にデータフローグラフ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をそれぞれ保持する。具体的に制御部18は、設定データ40aを第1設定部14aに、設定データ40bを第2設定部14bに、設定データ40cを第3設定部14cに、設定データ40dを第4設定部14dに供給する。なお、本例においては、制御部18が記憶部34から設定データ40を受けて、その設定データを設定部14に供給する構成について説明するが、制御部18を設けることなく、予め設定部14に設定データを格納しておいてもよい。
設定部14は、選択された設定データ40をリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を再構成する。これにより、リコンフィギュラブル回路12は、所期の演算を実行できる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、内部状態保持回路20および出力回路22に供給される。また制御部18はカウンタ回路を含み、カウント信号を選択器16に供給してもよい。この場合、カウンタ回路は4進カウンタである。
図6は、実施の形態1における信号処理のフローチャートを示す。制御部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クロック分であり、実施の形態1の処理装置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および接続部52についてD−FFを付加して、いわゆるパイプライン処理を行うことも可能である。
図7は、前後7点を利用する7タップからなるFIRフィルタ回路を示す。以下、このFIR(Finite Impulse Response)フィルタ回路を、実施の形態1における処理装置10で実現する具体例を示す。このFIRフィルタ回路の係数は、図示のごとく、対称に設定されている。
図8は、図7で示すFIRフィルタ回路を置き換えた回路を示す。回路の置き換えは、フィルタ係数の対称性を利用している。
図9は、図8で示すFIRフィルタ回路をさらに置き換えた回路を示す。ここでは、フィルタ係数に着目した置き換えを行っている。具体的には、係数1/16を1/2×1/2×1/2×1/2に、2/16を1/2×1/2×1/2に、8/16を1/2に置き換えている。係数1/2の演算はデータを右に1ビットシフトすることで実現できる。1ビットシフタは、複数ビットシフタと比べて、ALU内において非常に小さいスペースで形成することができる。
図10は、図9に示すFIRフィルタ回路をコンパイルして作成したデータフローグラフ38aを示す。図中、“+”は加算を示し、“>>1”は1ビットのシフトを示し、“MOV”はスルー用のパスを示す。図示のごとく、データフローグラフ38aは、7段の演算子で構成される。
図11は、実施例で使用するリコンフィギュラブル回路12を示す。実施例では、リコンフィギュラブル回路12が、4列2段のALUを含んで構成される。
図12は、図10に示すデータフローグラフ38aを、図11のリコンフィギュラブル回路12を用いて実現する例を示す。データフローグラフ38aが7段で構成され、リコンフィギュラブル回路12が2段で構成されていることから、データフローグラフ38aは、4つに分割される。
第1サイクルでは、第1設定部14aが、データフローグラフ38aの第1段および第2段の内容を、設定データ40aによりリコンフィギュラブル回路12上に構成する。第2サイクルでは、第2設定部14bが、データフローグラフ38aの第3段および第4段の内容を、設定データ40bによりリコンフィギュラブル回路12上に構成する。第3サイクルでは、第3設定部14cが、データフローグラフ38aの第5段および第6段の内容を、設定データ40cによりリコンフィギュラブル回路12上に構成する。第4サイクルでは、第4設定部14dが、データフローグラフ38aの第7段の内容を、設定データ40dによりリコンフィギュラブル回路12上に構成する。各サイクルにおける出力結果は、次のサイクルの入力としてフィードバックされる。
この例において、ALUは、“+”、“>>1”、“MOV”の3種類のみで実現することができる。複数ビットのシフトを、1ビットシフタを複数回利用することにより表現することとしたため、必要とされるALUの機能を非常に少なくすることができる。これにより、リコンフィギュラブル回路12の回路規模を小さくできる。なお、4種類の設定データ40を供給するため、制御部18におけるカウンタ回路は、4進カウンタとなる。
図13は、図8に示すFIRフィルタ回路をコンパイルして作成したデータフローグラフ38bを示す。図中、“+”は加算を、“MOV”はスルー用のパスを、“>>4”は4ビットのシフトを、“>>3”は3ビットのシフトを、“>>1”は1ビットのシフトを示す。図9の例では、複数ビットのシフトを1ビットシフトにおとしてデータフローグラフ38aを作成したが、図12の例では、複数ビットのシフトをそのままにデータフローグラフ38bを作成している。図示のごとく、データフローグラフ38bは、4段の演算子で構成される。
図14は、図13に示すデータフローグラフ38bを、図11のリコンフィギュラブル回路12を用いて実現する例を示す。データフローグラフ38bが4段で構成され、リコンフィギュラブル回路12が2段で構成されていることから、データフローグラフ38bは、2つに分割される。
第1サイクルでは、第1設定部14aが、データフローグラフ38bの第1段および第2段の内容を、設定データ40aによりリコンフィギュラブル回路12上に構成する。第2サイクルでは、第2設定部14bが、データフローグラフ38bの第3段および第4段の内容を、設定データ40bによりリコンフィギュラブル回路12上に構成する。第1サイクルにおける出力結果は、次の第2サイクルの入力としてフィードバックされる。
この例において、ALUは、“+”、“>>4”、“>>3”、“>>1”、“MOV”の5種類で実現することができる。実施例1と比較すると、必要なALUの機能は増加するが、使用する設定部の数は2つと減少している。なお、2種類の設定データ40を供給するため、制御部18におけるカウンタ回路は、2進カウンタとなる。また、出力回路22の動作周期は、内部状態保持回路20の動作周期の2倍となる。
(実施の形態2)
上記した実施の形態1の構成においては、リコンフィギュラブル回路12の出力を経路部24からリコンフィギュラブル回路12の入力に直接供給する例について説明した。実施の形態2においては、リコンフィギュラブル回路12の出力を一旦記憶し、所定のタイミングでリコンフィギュラブル回路12の入力に供給することのできる方式について説明する。
図15は、実施の形態2に係る処理装置10の構成図である。実施の形態2に係る処理装置10は、図1に示した実施の形態1に係る処理装置10と比較して、集積回路装置26がメモリ部27および経路部29をさらに備える点で異なっている。なお、集積回路装置26は、さらに切替回路28を有しており、切替回路28がリコンフィギュラブル回路12への入力切替およびデータ供給タイミングを調整することで、内部状態保持回路20を省略することも可能となる。
メモリ部27は、制御部18からの指示に基づき、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。制御部18からの指示に基づき格納されたデータ信号は、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。このように、実施の形態2においては、リコンフィギュラブル回路12の出力を再度リコンフィギュラブル回路12の入力にフィードバックする接続経路が、経路部24、29の2系統存在する。経路部24は、メモリ部27を介さないために高速にフィードバック処理することが可能である。上記のように、内部状態保持回路20を設けないことで、リコンフィギュラブル回路12の出力は、経路部24から直接切替回路28に供給されることになる。特に、メモリ部27が低速で動作処理する場合には、経路部24は、経路部29よりも高速に切替回路28にデータを伝達することができる。一方で、経路部29は、制御部18からの指示により所定のタイミングでデータ信号を切替回路28に供給することができる。
このように、経路部24または経路部29は、リコンフィギュラブル回路12上に再構成する回路に応じて適宜使い分けられる。リコンフィギュラブル回路12の再構成時に、ただちにリコンフィギュラブル回路12の出力が必要な場合には経路部24を介してデータを伝送すればよい。一方、リコンフィギュラブル回路12の再構成後に構成する回路にリコンフィギュラブル回路12の出力が必要な場合には、一旦、その出力データをメモリ部27に格納しておき、必要なタイミングで経路部29を介してデータを伝送すればよい。
切替回路28は、経路部24、29を介してフィードバックされる入力データを、選択器16から出力される切替指示に基づいて選択的にリコンフュギラブル回路12に入力する。具体的には、第1設定部14a〜第4設定部14dの制御部18の選択に伴い、設定される設定データに基づいた所定のタイミングで選択器16から切替指示が供給される。その他の点は図1で示される集積回路装置26の構成と同様である。
なお、図15の例では、メモリ部27に外部からのデータ入力が行われる例について示しているが、別の例では、外部からのデータを切替回路28に直接入力してもよい。なお、図示の例のように、メモリ部27において外部入力を記憶させることで、外部入力をメモリ部27から所定のタイミングで切替回路28に供給することが可能となり、集積回路装置26内におけるタイミング同期の実現が容易となる。
図16は、メモリ部27の構成を示す図である。メモリ部27は、RAMスイッチ70およびRAM71とを有する。この例では、メモリ部27に、外部からデータ信号が入力される。なお、図15に関連して説明したように、外部入力は切替回路28に供給されてもよい。
RAMスイッチ70には、外部入力と、リコンフィギュラブル回路12の出力とが入力される。制御部18は、RAMスイッチ70に対して入力を選択するための選択信号を供給する。このようにして選択されたデータは、RAM71に記憶される。具体的に、制御部18は、RAM71に対してR/WアドレスおよびWイネーブル信号を供給する機能をもち、RAM71は、制御部18から供給されるWアドレスおよびWイネーブル信号に基づいて、選択されたデータを記憶する。制御部18の処理手順は設定データに基づいて定められるものであって、制御部18は、コマンドメモリに記憶されたデータをシーケンシャルに読み出すことで、処理装置10における各構成にデータを供給するものであってよい。
(実施の形態3)
リアルタイムで演算処理を行う場合、動作クロックの周波数が無限に速ければ、1つのリコンフィギュラブル回路12により全ての演算処理を実行することができる。しかしながら現実には、無限に速いクロックは存在しないため、1つのリコンフィギュラブル回路12による処理では、複雑な演算をリアルタイムで実行することが困難な場合も生じる。そのため、実施の形態3では、高速な演算処理を得意とする処理装置を示す。
図17は、実施の形態3に係る処理装置10の構成を示す。図17では、処理装置10の構成のうち、実施の形態2におけるメモリ部27を備えた集積回路装置26(図15参照)に対応する構成を示しており、設定データ40を生成する構成などは省略している。
実施の形態3において、処理装置10は、複数のリコンフィギュラブルユニット100aおよび100bを備える。リコンフィギュラブルユニット100aおよび100bのそれぞれは、図15において集積回路装置26の内部構成として示した構成に対応しており、実施の形態3では、2つのリコンフィギュラブルユニット100が1つの集積回路装置として1チップ上に形成されることが好ましい。
図17に示す処理装置10において、リコンフィギュラブルユニット100aは、リコンフィギュラブル回路12a、経路部24a、メモリ部27a、切替回路28a、経路部29a、コマンドメモリ72aを備える。コマンドメモリ72aは、設定部14の構成として設けられ、制御部18におけるプログラムカウンタなどのカウント値をもとに、記憶した設定データを順次読み出す機能をもつ。なお、図1および図15に示した設定部14は、コマンドメモリ72a自体であってもよい。メモリ部27aは、RAMスイッチ70aおよびRAM71aを有する。RAMスイッチ70aには、外部からの入力が供給される。さらにリコンフィギュラブルユニット100aは、リコンフィギュラブル回路12aの出力を外部に読み出すための出力部104を有する。なお、出力部104における出力回路22については図示を省略している。また、経路部24aにおいて内部状態保持回路20が設けられていてもよい。
リコンフィギュラブルユニット100bは、リコンフィギュラブル回路12b、経路部24b、メモリ部27b、切替回路28b、経路部29b、コマンドメモリ72bを備える。メモリ部27bは、RAMスイッチ70bおよびRAM71bを有する。さらにリコンフィギュラブルユニット100bは、外部からデータを入力するための入力部106を有する。RAMスイッチ70bは、入力部106から外部入力を供給される。なお、出力部108における出力回路22については図示を省略している。
リコンフィギュラブルユニット100aの出力部104と、リコンフィギュラブルユニット100bの入力部106とは、リコンフィギュラブル回路12aの出力をリコンフィギュラブル回路12bの入力に供給する接続部として機能する。出力部104と入力部106の間には記憶部が設けられ、この記憶部も含めて、リコンフィギュラブル回路12aの出力をリコンフィギュラブル回路12bの入力に供給する接続部と呼んでもよい。この記憶部はFIFO102として構成される。FIFO102は、出力部104から供給されるリコンフィギュラブル回路12aの出力を記憶する。なお、RAM71aがFIFO102にリコンフィギュラブル回路12aの出力を供給してもよく、この場合には、RAM71aからの出力ラインが、接続部を構成することになる。
コマンドメモリ72aは、リコンフィギュラブルユニット100aにおける各構成の動作を定める設定データを保持している。これは、実施の形態1および実施の形態2において、設定部14の機能として説明したとおりである。コマンドメモリ72bについても同様である。実施の形態3において、コマンドメモリ72aおよびコマンドメモリ72bは、FIFO102に対して所定のコマンドを供給する機能ももつ。
コマンドメモリ72aは、FIFO102に対してライトイネーブル(WE)信号を供給し、リコンフィギュラブル回路12aの出力をFIFO102に書き込ませる。コマンドメモリ72bは、FIFO102に対してリードイネーブル(RE)信号を供給し、FIFO102に記憶されたデータをRAMスイッチ70bに読み出させる。図16を参照して、RAMスイッチ70bには、リコンフィギュラブル回路12bの出力と、外部入力としてFIFO102の出力が供給されることになる。このように、コマンドメモリ72aは、FIFOの書込みを制御する書込制御部として機能し、コマンドメモリ72bは、FIFO102の読出しを制御する読出制御部として機能する。なお、各コマンドメモリ72は、制御部18におけるプログラムカウンタによりデータの読出しを制御される。この意味において、FIFO102の書込みおよび/または読出しは、制御部18によって制御されているといってもよい。
リコンフィギュラブル回路12aの出力を記憶する記憶部を、FIFO102で構成することにより、リコンフィギュラブルユニット100bは、所望のタイミングでFIFO102からデータを取得することが可能となる。これにより、リコンフィギュラブル回路12aおよびリコンフィギュラブル回路12bの入出力のタイミングを必ずしも同期させる必要がなく、各リコンフィギュラブル回路12が、互いに独立して演算処理を実行することができる。互いの入出力を同期させる必要がないため、処理装置10全体の動作制御が容易となる利点がある。また、入力部106から供給されるデータをメモリ部27bに一旦記憶させることで、リコンフィギュラブル回路12bにデータ出力するタイミングを揃えることが可能となる。
リコンフィギュラブル回路12aおよびリコンフィギュラブル回路12bに構成するターゲット回路は、並列に処理可能なものであることが好ましい。また、図17では、説明の便宜上、リコンフィギュラブル回路12aの出力をリコンフィギュラブル回路12bの入力に供給する例を示したが、リコンフィギュラブル回路12bの出力をリコンフィギュラブル回路12aの入力に供給する構成をさらに備えることが好ましい。これにより、互いの接続設定に柔軟性を持たせることができるため、汎用性の高い処理装置10を構成することが可能となる。実施の形態の処理装置10によると、各リコンフィギュラブル回路12の出力をシリアルなデータ単位で取り扱うため、リコンフィギュラブル回路間の結線に必要な回路が少なくなり、回路の小型化、低消費電力化、および低遅延を実現することが可能となる。
また、図17には2つのリコンフィギュラブル回路12のみを示したが、3つ以上のリコンフィギュラブル回路12が存在していてもよい。3つ以上のリコンフィギュラブル回路12が存在する場合、あるリコンフィギュラブル回路12の出力は、他の残りのリコンフィギュラブル回路12の入力に供給されることが好ましい。すなわち、接続部は、リコンフィギュラブル回路同士の接続を任意に設定可能としてもよい。これにより、リコンフィギュラブル回路12間でのデータの受け渡しが容易となるため、汎用性および処理能力の高い処理装置10を実現できる。なお、接続部の回路規模を小さくするために、例えば接続部は、リコンフィギュラブル回路同士の接続を、所定の制約の下で設定可能としてもよい。この場合、例えばリコンフィギュラブル回路同士の接続を隣接するもの同士とする制約を課すことで、回路規模の減縮を実現できる。
図18は、BPSK信号を復調するための復調回路を示す。変調されたアナログ入力は、アナログ処理部110によりI成分とQ成分を抽出され、デジタル処理部120にて復調される。以下では、デジタル処理部120をリコンフィギュラブル回路12上に構成する方法について説明する。
デジタル処理部120は、FIRフィルタ回路122、FIRフィルタ回路124、復調処理回路130およびFIRフィルタ回路140を含む。FIRフィルタ回路122は、入力信号Iの入力を受けて中間出力信号MIを出力する。FIRフィルタ回路124は、入力信号Qを受けて中間出力信号MQを出力する。復調処理回路130は、中間出力信号MI、MQの入力を受けて復調処理し、フィードバック制御出力信号Y1と、中間出力信号PY2を出力する。FIRフィルタ回路140は、中間出力信号PY2を受けて、復調出力信号Y2を出力する。FIRフィルタ回路122、124、140は、図7〜図10に関連して説明したFIRフィルタ回路の構成を有する。
復調処理回路130は、ループフィルタ136、乗算器134および正負判定回路132(SGN)とで構成されている。正負判定回路132は、中間出力信号MIの入力を受けて、判定結果に基づいて中間出力信号PY2を出力する。乗算器134は、中間出力信号MI、MQの入力を受けて、乗算結果をループフィルタ136に出力する。ループフィルタ136は、乗算器134からの出力信号を受けて、フィードバック制御出力信号Y1を出力する。なお、フィードバック制御出力信号Y1は、アナログ処理部110にフィードバック入力される制御信号である。
図19は、ループフィルタ136の構成を示す。ループフィルタ136は、加算器142の出力を遅延部144にて遅延して加算器142にフィードバックする積分器と、適当な係数を乗算する乗算器146とを有する。ここでは、乗算器146が、係数1/2を積分器の出力に掛けている。
図20は、図18に示す復調処理回路130をコンパイルして作成したデータフローグラフ38cを示す。図中、“×”は乗算を示し、“SGN”は正負判定を示す。他の演算子については既述したのと同様である。図示のごとく、データフローグラフ38cは、3段の演算子で構成される。MIは、FIRフィルタ回路122の中間出力信号、MQは、FIRフィルタ回路124の中間出力信号を示す。またMYは、ループフィルタ136の積分器の出力であり、MY’は、遅延した積分器の出力、すなわち加算器142へのフィードバック入力を示す。
図21は、FIRフィルタ回路のリコンフィギュラブル回路12への実装の形態を示す。ここでは、リコンフィギュラブル回路12が2段のALUアレイにより構成されている場合を例にとる。したがって、1回の処理は、2段のALUアレイにより実行される。ここでFIRフィルタ回路は、図9に示されたものを使用する。
まず、処理1(FIR−1)において、ビットシフトを行う。ここでは、図9に示すように、直列に設けられた6つの遅延回路Dによる遅延処理を実行している。図中、RAM0は、図17に示すRAM71におけるアドレス0の格納領域を示す。ここでは、RAMnが、RAM71におけるアドレスnの格納領域を示し、ビット位置を1つのアドレス分だけずらすことで、データが遅延される状態を表現する。なお、当然のことながら、アドレスは0から開始する必要はなく、また連続したアドレスを用いる必要もない。処理1(FIR−1)では、新しい入力データをRAM0に、RAM0に格納されていたデータをRAM1に、RAM1に格納されていたデータをRAM2に、RAM2に格納されていたデータをRAM3に、RAM3に格納されていたデータをRAM4に、RAM4に格納されていたデータをRAM5に、RAM5に格納されていたデータをRAM6に移動することで、それぞれのデータ遅延を表現する。
処理2(FIR−2)では、RAM0のデータとRAM6のデータを加算して1ビットシフトし、RAM1のデータとRAM5のデータを加算して1ビットシフトし、RAM2のデータとRAM4のデータを加算して1ビットシフトし、RAM3のデータを1ビットシフトする。なお、図中、スルー用のパスであるMOVは省略している。処理2(FIR−2)から処理5(FIR−5)までの流れは、図10においてデータフローグラフ38aとして示した流れと同一である。
以上のように、FIRフィルタ回路は、リコンフィギュラブル回路12上に図21のデータフローグラフを5分割してマッピングすることで構成される。FIRフィルタ回路122を構成する場合、処理1(FIR−1)における入力は入力信号Iであり、処理5(FIR−5)における出力は中間出力信号MIとなる。FIRフィルタ回路124を構成する場合、処理1(FIR−1)における入力は入力信号Qであり、処理5(FIR−5)における出力は中間出力信号MQとなる。FIRフィルタ回路140を構成する場合、処理1における入力は中間出力信号PY2であり、処理5(FIR−5)における出力は復調出力信号Y2となる。処理1(FIR−1)において、構成するFIRフィルタ回路ごとに所定のアドレス領域が割り当てられて、それぞれのアドレス領域の範囲内でビットシフトが行われる。
図17に示す処理装置10を用いて、図18に示すデジタル処理部120をリコンフィギュラブル回路12上にマッピングする場合を考える。デジタル処理部120は、FIRフィルタ回路122、FIRフィルタ回路124、復調処理回路130およびFIRフィルタ回路140を有しているが、FIRフィルタ回路122およびFIRフィルタ回路124をリコンフィギュラブルユニット100aで、復調処理回路130およびFIRフィルタ回路140をリコンフィギュラブルユニット100bで構成することとする。この場合、リコンフィギュラブル回路12aで構成されるFIRフィルタ回路122の中間出力信号MIと、FIRフィルタ回路124の中間出力信号MQは、出力部104を通ってFIFO102に格納される。リコンフィギュラブル回路12bでは、FIFO102に格納された中間出力信号MIおよびMQを入力信号として読み出して、復調処理回路130ないしはFIRフィルタ回路140に供給する。
図22は、復調処理回路130のリコンフィギュラブル回路12への実装の形態を示す。図21においてFIRフィルタ回路の実装形態において示したように、リコンフィギュラブル回路12が2段のALUアレイにより構成されている場合を例にとる。復調処理回路130は、リコンフィギュラブル回路12bにて構成される。
まず、処理1(復調−1)では、FIFO102からデータMIをメモリ部27に読み出す。続いて、処理2(復調−2)では、FIFO102からデータMQをメモリ部27に読み出す。処理3(復調−3)および処理4(復調−4)は、図20に示したデータフローグラフ38cに対応する。なお、図中、スルー用のパスであるMOVは省略している。以上のように、復調処理回路130は、リコンフィギュラブル回路12上に図22のデータフローグラフを4分割してマッピングすることで構成される。上述したように、復調処理回路130はリコンフィギュラブル回路12b上に構成されるため、処理1(復調−1)においてデータMIはメモリ部27bに読み出され、また処理2(復調−2)においてデータMQはメモリ部27bに読み出される。
図23は、リコンフィギュラブルユニット100aでFIRフィルタ回路122および124を、リコンフィギュラブルユニット100bで復調処理回路130およびFIRフィルタ回路140を構成するときのタイミングチャートである。図23では、リコンフィギュラブル回路12aにおける処理、RAM71aの書込/読出処理、FIFO102の書込/読出処理、RAM71bの書込/読出処理、およびリコンフィギュラブル回路12bにおける処理を示す。横軸は時間軸であり、左端から右端まで処理が実行されると、再度左端の処理に戻る。このように、このデジタル処理部120における信号処理は、図23に示す左端から右端までの処理をサイクリックに実行することに相当する。以下、FIRフィルタ回路122をFIR1、FIRフィルタ回路124をFIR2、FIRフィルタ回路140をFIR3と呼ぶ。また、FIRフィルタ回路の処理を示す際、(FIRm−n)は、FIRmのn番目の処理を示すものとし、例えば、(FIR1−5)は、FIR1の5番目の処理を示し、(FIR3−2)は、FIR3の2番目の処理を示す。
リコンフィギュラブル回路12aでは、FIR1およびFIR2のそれぞれの5つの処理を実行する。図示されるように、(FIR1−1)から(FIR1−5)までの処理によりFIR1の処理が完了し、また(FIR2−1)から(FIR2−5)までの処理によりFIR2の処理が完了する。
リコンフィギュラブル回路12aにおいて、(FIR1−1)で、アナログ処理部110から入力信号Iを受けて、RAM71aにおけるデータをビットシフトする。ここではハードウェア上、すなわち、RAM71a上でビットシフトさせることにより、データの遅延を処理している。(FIR1−2)では、RAM71aよりデータを供給され、以後、(FIR1−5)まで所定の演算処理を実行する。(FIR1−5)で、中間出力信号MIをFIFO102に出力する。続くタイミングで、データMIがFIFO102からRAM71bに読み出され、リコンフィギュラブル回路12bでは、(復調−1)が実行される。
このとき、リコンフィギュラブル回路12aでは、(FIR2−1)が実行される。(FIR2−1)では、アナログ処理部110から入力Qを受けて、RAM71aにおけるデータをビットシフトする。(FIR2−2)では、RAM71aよりデータを供給され、以後、(FIR2−5)まで所定の演算処理を実行する。(FIR2−5)で、中間出力信号MQをFIFO102に出力する。続くタイミングで、データMQがFIFO102からRAM71bに読み出され、リコンフィギュラブル回路12bでは、(復調−2)が実行される。(FIR2−5)が終了すると、また(FIR1−1)から処理が実行される。
復調処理回路130は、データMIとデータMQの入力を必要とするため、復調処理の際には、FIR1およびFIR2の双方の演算処理が完了していなければならない。したがって、リコンフィギュラブル回路12aにおける(FIR2−5)の終了を待って、リコンフィギュラブル回路12bにおいて、(復調−2)を実行し、続いて(復調−3)および(復調−4)を実行する。また、復調処理を行わない間は、FIR3の演算処理を行う。なお、この例では、(復調−1)と(復調−2)の間に(FIR3−3)〜(FIR3−5)を実行し、(復調−4)と(復調−1)の間に(FIR3−1)、(FIR3−2)を実行している。
図22を参照して、(復調−3)においては、RAM71bに格納されたデータMI、MQ、MY’を読み出し、所定の処理を実行する。(復調−4)では、中間出力信号PY2をFIR3における処理に使用するためにRAM71bに書き込み、また積分器出力MYを、次の(復調−3)におけるフィードバック入力として使用するためにRAM71bに書き込む。さらに、フィードバック制御出力信号Y1を、アナログ処理部110に出力する。
(FIR3−1)において、入力PY2が供給されるとともに、RAM71bにおけるデータのビットシフトが行われる。(FIR3−2)でRAM71bよりデータが供給され、以後、(FIR3−5)まで所定の演算処理を実行する。(FIR3−5)で復調出力信号Y2が出力される。
なお、FIRの処理順序、すなわち処理1(FIR−1)から処理5(FIR−5)の順序は変更することはできないが、FIR3に関して示したように、必ずしも連続的に実行する必要はない。同様に、復調の処理順序、すなわち処理1(復調−1)から処理4(復調−4)の順序は変更することはできないが、必ずしも連続的に実行する必要はない。なお、連続的に実行する場合は、リコンフィギュラブル回路12の出力を経路部24を介して直接切替回路28に供給する。連続的に実行しない場合は、リコンフィギュラブル回路12の出力をRAM71に一旦格納し、コマンドメモリ72からの指示に基づいて所期のタイミングで切替回路28に供給する。
以上のように、FIR1およびFIR2をリコンフィギュラブルユニット100aで実行し、FIR3および復調処理回路130をリコンフィギュラブルユニット100bで実行することで、図18に示すデジタル処理部120における演算処理を実行することが可能となる。これにより、1つのリコンフィギュラブルユニット100ではリアルタイム処理が困難なターゲット回路であっても、複数のリコンフィギュラブルユニット100を協調させて使用することで、複雑な演算処理をリアルタイムで実行することが可能となる。さらに、FIFO102をリコンフィギュラブルユニット間のバッファとして機能させることで、複数のリコンフィギュラブルユニット間の入出力の同期をとる必要がなく、それぞれが独立して動作してもよいという利点もある。なお、FIFO102からのデータ読出しは、読出制御部であるコマンドメモリ72bによって制御可能であるため、FIFO102の出力をメモリ部27bに供給するのではなく、FIFO102から直接、切替回路28bにデータを供給することも可能である。
なお、図23の例では同一のクロック周波数で2つのリコンフィギュラブル回路12が動作することとしているが、各リコンフィギュラブル回路12における処理量によっては、異なるクロックを利用してよい場合もある。例えば、リコンフィギュラブル回路12aにおける処理量がリコンフィギュラブル回路12bにおける処理量の倍であるときは、リコンフィギュラブル回路12bのクロック周波数を半分にすることが可能な場合もある。
また図18のデジタル処理部120では、FIRフィルタ回路(FIR3)140および復調処理回路130の出力を、FIRフィルタ回路(FIR1)122およびFIRフィルタ回路(FIR2)124に直接返す必要がないため、リコンフィギュラブル回路12bからリコンフィギュラブル回路12aへの接続部は設けていないが、処理装置10の汎用性を高めるためには、リコンフィギュラブル回路12bからリコンフィギュラブル回路12aへの接続部を設けてもよい。
図24は、実施の形態3に係る処理装置10の構成の別の例を示す。図17に示した処理装置10の構成と比較すると、図24に示す処理装置10では、FIFO102を省略している。リコンフィギュラブル回路12aとリコンフィギュラブル回路12bの間の接続部は、リコンフィギュラブル回路12aの出力部104とリコンフィギュラブル回路12bの入力部106により構成される。
リコンフィギュラブルユニット100aにおけるリコンフィギュラブル回路12aの出力は、出力部104および入力部106を通って、直接リコンフィギュラブルユニット100bにおけるメモリ部27bのRAM71bに供給される。図24に示す処理装置10では、メモリ部27bをFIFO102の代わりに利用して、メモリ部27bを、互いの動作タイミングのずれを吸収するバッファとして機能させることで、2つのリコンフィギュラブル回路12を同期させずに動作させることが可能となる。この処理装置10によると、FIFOを使用しないため、さらなる回路の小型化、低消費電力化を実現することが可能となる。
図25は、図24に示す処理装置10において、リコンフィギュラブルユニット100aでFIRフィルタ回路122および124を、リコンフィギュラブルユニット100bで復調処理回路130およびFIRフィルタ回路140を構成するときのタイミングチャートである。図25では、リコンフィギュラブル回路12aにおける処理、RAM71aの書込/読出処理、RAM71bの書込/読出処理、およびリコンフィギュラブル回路12bにおける処理を示す。横軸は時間軸であり、左端から右端まで処理が実行されると、再度左端の処理に戻る。以下、FIRフィルタ回路122をFIR1、FIRフィルタ回路124をFIR2、FIRフィルタ回路140をFIR3と呼ぶ。また、FIRフィルタ回路の処理を示す際、FIRm−nは、FIRmのn番目の処理を示す。
リコンフィギュラブル回路12aにおける処理は、図23に示した処理と同様である。異なる点として、(FIR1−5)における中間出力信号MIと、(FIR2−5)における中間出力信号MQとが、直接リコンフィギュラブルユニット100bにおけるRAM71bに供給される。リコンフィギュラブル回路12bにおける処理は、FIFO102からRAM71bに読み出す時間を必要としないだけで、図23に示した処理と同様である。FIFO102を設けないことで、処理装置10における回路規模を減縮できる。
図26は、実施の形態3に係る処理装置10の構成の別の例を示す。図26に示す処理装置10は、複数のリコンフィギュラブルユニット100a、100b、・・・、100nと、複数のFIFO102a、102b、・・・、102nを備える。複数のリコンフィギュラブルユニット100の出力は、スイッチ152により接続先となるFIFO102を定められ、また複数のFIFO102の出力は、スイッチ150により接続先となるリコンフィギュラブルユニット100を定められる。
設定部14が、スイッチ150およびスイッチ152における接続関係を定める。この設定部14は、1つのリコンフィギュラブルユニット100に含まれる設定部14であってもよく、またスイッチ150およびスイッチ152における接続関係を定めるための専用の設定部であってもよい。スイッチ150は、外部からの入力と複数のFIFO102の出力を選択的に所定のリコンフィギュラブルユニット100に供給する機能をもつ。具体的には、外部からの入力と、複数の経路部158a、158b、・・・、158nを、複数の経路部160a、160b、・・・、160nに対して接続する機能をもつ。同様に、スイッチ152は、複数のリコンフィギュラブルユニット100の出力を選択的に所定のFIFO102に供給する機能をもつ。具体的には、複数の経路部154a、154b、・・・、154nを、複数の経路部156a、156b、・・・、156nに対して接続する機能をもつ。
このように、経路部154、スイッチ152、経路部156、FIFO102、経路部158、スイッチ150および経路部160は、あるリコンフィギュラブル回路12の出力を、他のリコンフィギュラブル回路12の入力に供給する接続部としての機能をもつ。この接続部は、複数のリコンフィギュラブルユニット100におけるリコンフィギュラブル回路12同士の接続を任意に設定可能としてもよい。これにより、汎用性の高い処理装置10を実現することが可能となる。複数のリコンフィギュラブルユニット100を有することで、並列処理可能な演算の速度アップを実現できるため、複雑な演算をリアルタイム処理することも可能となる。
また、接続部は、複数のリコンフィギュラブルユニット100におけるリコンフィギュラブル回路12同士の接続を、所定の制約の下で設定可能としてもよい。すなわち、例えば隣接するリコンフィギュラブルユニット100同士の接続は可能とし、それ以外のリコンフィギュラブルユニット100との接続は不可としてもよい。リコンフィギュラブルユニット100の接続範囲を制限することで、接続部の構成に必要な回路規模を減縮することが可能となり、処理装置10の小型化に貢献することができる。
また、接続部にリコンフィギュラブル回路12の出力を記憶するFIFO102を設けることで、データを一旦FIFO102に格納することができ、所期のタイミングでデータを読み出すことが可能となる。そのため、複数のリコンフィギュラブルユニット100が同期して動作する必要がなく、それぞれが独立して動作することも可能となる。
図27は、実施の形態3に係る処理装置10の構成の別の例を示す。図26に示す処理装置10と異なる点は、リコンフィギュラブルユニット100同士を連絡する接続部から、スイッチ152とFIFO102が除かれたところである。この例では、接続部が、経路部162、スイッチ150および経路部160で構成される。図27に示す処理装置10では、リコンフィギュラブルユニット100の出力が、スイッチ150により選択された所定のリコンフィギュラブルユニット100の入力に供給される。この場合、リコンフィギュラブルユニット100におけるリコンフィギュラブル回路12のそれぞれは、FIFO102の代わりとして機能しうるRAM71を有して構成されることが好ましい。図26に示す処理装置10と比較すると、FIFO102およびスイッチ152を省略することで、回路規模を減縮することができる。
以上、本発明を実施の形態1から3をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
また、実施の形態3では、複数のコマンドメモリ72が存在する例を示したが、コマンドメモリ72は必ずしも複数存在する必要はなく、複数のリコンフィギュラブル回路12で共用されてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、16・・・選択器、18・・・制御部、20・・・内部状態保持回路、22・・・出力回路、24・・・経路部、26・・・集積回路装置、27・・・メモリ部、28・・・切替回路、29・・・経路部、32・・・設定データ生成部、34・・・記憶部、40・・・設定データ、50・・・論理回路、52・・・接続部、71・・・RAM、72・・・コマンドメモリ、100・・・リコンフィギュラブルユニット、102・・・FIFO、120・・・デジタル処理部。