(57)【要約】【課題】  リコンフィギュラブル回路のＡＬＵに定数を入力することのできる処理装置を提供する。【解決手段】  本発明の処理装置１０は、リコンフィギュラブル回路１２におけるＡＬＵに定数を供給するための定数テーブル７０を備える。定数テーブル７０は複数設けられて、入力接続部５１および接続部５２は、複数の定数テーブル７０の出力と、ＡＬＵの入力とを接続する。この接続設定は、設定部１４より供給される設定データによって定められる。【選択図】図６
2005277673.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが複数の演算機能を選択的に実行可能な論理回路を備えたリコンフィギュラブル回路と、
論理回路の機能を設定して、前記リコンフィギュラブル回路に所期の回路を構成するための設定データを記憶する設定部と、
前記リコンフィギュラブル回路に所期の設定データを供給するように前記設定部を制御する制御部とを備え、
前記設定部は、前記論理回路の入力に定数データを供給することを特徴とする処理装置。
【請求項２】
前記設定部は、定数データを記憶するテーブルを有し、
前記設定部は、テーブルに記憶した定数データを前記論理回路の入力に供給することを特徴とする請求項１に記載の処理装置。
【請求項３】
前記設定部は、定数データを記憶する複数のテーブルを保持し、
前記リコンフィギュラブル回路は、複数のテーブルの出力と、前記論理回路の入力とを接続する接続部を有することを特徴とする請求項２に記載の処理装置。
【請求項４】
前記複数のテーブルのそれぞれは、前記リコンフィギュラブル回路に同時に供給するべき定数データを複数個もたないことを特徴とする請求項３に記載の処理装置。
【請求項５】
前記設定部は、前記設定データを記憶するメモリを有し、
前記設定部は、メモリに記憶した定数データを前記論理回路の入力に供給することを特徴とする請求項１に記載の処理装置。
【請求項６】
前記論理回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路であることを特徴とする請求項１から５のいずれかに記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、集積回路技術に関し、特にリコンフィギュラブル回路を備えた処理装置に関する。
【背景技術】
【０００２】
近年、アプリケーションに応じてハードウェアの動作を変更可能なリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサを実現するためのアーキテクチャとしては、ＤＳＰ(Digital Signal Processor)や、ＦＰＧＡ(Field Programmable Gate Array)を用いる方法が存在する。
【０００３】
ＦＰＧＡ（Field Programmable Gate Array）はＬＳＩ製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウエアの設計に利用されている。ＦＰＧＡは、論理回路の真理値表を格納するためのルックアップテーブル（ＬＵＴ）と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。ＦＰＧＡでは、ＬＵＴに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、ＦＰＧＡでＬＳＩを設計した場合、ＡＳＩＣ（Application Specific IC）による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、ＦＰＧＡを動的に再構成することで、回路構成の再利用を図る方法が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開平１０−２５６３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＦＰＧＡは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのＯＮ／ＯＦＦを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向があり、さらに１本の配線に多くのスイッチが接続される構造のため、遅延が大きくなる。そのため、ＦＰＧＡによるＬＳＩは、試作や実験のために利用されるにとどまることが多く、実装効率、性能、コストなどを考えると、量産には適していない。さらに、ＦＰＧＡでは、多数のＬＵＴ方式の基本セルに構成情報を送る必要があるため、回路のコンフィグレーションにはかなりの時間がかかる。そのため、瞬時に回路構成の切り替えが必要な用途にはＦＰＧＡは適していない。
【０００５】
それらの課題を解決するため、近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本演算機能を持つ多機能素子を多段に並べたＡＬＵアレイの検討が行われるようになった。ＡＬＵアレイでは、処理が上から下の一方向に流れるので、水平方向のＡＬＵを結ぶ配線は基本的には不要である。そのため、ＦＰＧＡと比較して回路規模を小さくすることが可能となる。従来、ＡＬＵに対して定数をどのように与えるといった実装レベルの研究については行われていない。
【０００６】
本発明はこうした状況に鑑みてなされたもので、その目的は、定数データを効率よくＡＬＵなどの論理回路に与えることのできる技術の提供にある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様は、それぞれが複数の演算機能を選択的に実行可能な論理回路を備えたリコンフィギュラブル回路と、論理回路の機能を設定して、前記リコンフィギュラブル回路に所期の回路を構成するための設定データを記憶する設定部と、前記リコンフィギュラブル回路に所期の設定データを供給するように前記設定部を制御する制御部とを備えた処理装置に関する。この処理装置において、前記設定部は、前記論理回路の入力に定数データを供給する機能をもつ。この態様の処理装置によると、設定部が、制御部からの指示に基づいて、論理回路の入力に定数データを供給することができる。
【０００８】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、定数データを効率よくリコンフィギュラブル回路に供給することのできる技術を提供することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、実施の形態に係る処理装置１０の構成図である。処理装置１０は、集積回路装置２６を備える。集積回路装置２６は、回路構成を再構成可能とする機能を有する。集積回路装置２６は１チップとして構成され、リコンフィギュラブル回路１２、設定部１４、制御部１８、内部状態保持回路２０、出力回路２２および経路部２４を備える。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。
【００１１】
設定部１４は、第１設定部１４ａ、第２設定部１４ｂ、第３設定部１４ｃ、第４設定部１４ｄおよび選択器１６を有し、リコンフィギュラブル回路１２に所期の回路を構成するための設定データ４０を供給する。設定部１４は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。経路部２４は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。内部状態保持回路２０および出力回路２２は、例えばデータフリップフロップ（Ｄ−ＦＦ）などの順序回路として構成され、リコンフィギュラブル回路１２の出力を受ける。内部状態保持回路２０は経路部２４に接続されている。リコンフィギュラブル回路１２は組合せ回路として構成される。
【００１２】
リコンフィギュラブル回路１２は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路の集合体を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。以下、論理回路の集合体を、単に「論理回路」とも呼ぶ。この接続部は、設定部１４から出力される定数データを、所望の論理回路の入力に供給するための接続関係を設定する機能ももつ。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路列の間に設けられる接続部の接続関係、さらには論理回路の入力に供給される定数データは、設定部１４により供給される設定データ４０に基づいて設定される。設定データ４０は、以下の手順で生成される。
【００１３】
集積回路装置２６により実現されるべきプログラム３６が、記憶部３４に保持されている。プログラム３６は、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイル部３０は、記憶部３４に格納されたプログラム３６をコンパイルし、データフローグラフ３８に変換して記憶部３４に格納する。データフローグラフ３８は、入力変数および定数の演算の流れをグラフ構造で表現したものである。
【００１４】
設定データ生成部３２は、データフローグラフ３８から設定データ４０を生成する。設定データ４０は、データフローグラフ３８をリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や、論理回路列の間に設けられる接続部の接続関係、さらには論理回路の入力に供給する定数データなどを定める。本実施の形態では、設定データ生成部３２が、１つの回路を分割してできる複数の回路の設定データ４０を生成する。
【００１５】
図２は、１つの生成するべきターゲット回路４２を分割してできる複数の回路の設定データ４０について説明するための図である。１つのターゲット回路４２を分割して生成される回路を、「分割回路」と呼ぶ。この例では、１つのターゲット回路４２が、４つの分割回路、すなわち分割回路Ａ、分割回路Ｂ、分割回路Ｃ、分割回路Ｄに分割されている。ターゲット回路４２は、データフローグラフ３８における演算の流れにしたがって分割される。データフローグラフ３８において、上から下に向かう方向に演算の流れが表現される場合には、そのデータフローグラフ３８を上から所定の間隔で切り取り、その切り取った部分を分割回路として設定する。流れにしたがって切り取る間隔は、リコンフィギュラブル回路１２における論理回路の段数以下に定められる。ターゲット回路４２は、データフローグラフ３８の横方向で分割されてもよい。横方向に分割する幅は、リコンフィギュラブル回路１２における論理回路の１段当たりの個数以下に定められる。
【００１６】
特に、生成すべきターゲット回路４２がリコンフィギュラブル回路１２よりも大きい場合に、設定データ生成部３２は、リコンフィギュラブル回路１２にマッピングできる大きさになるように、ターゲット回路４２を分割することが好ましい。設定データ生成部３２は、リコンフィギュラブル回路１２における論理回路の配列構造とデータフローグラフ３８によって、ターゲット回路４２の分割方法を定める。リコンフィギュラブル回路１２の配列構造は、制御部１８から設定データ生成部３２に伝えられてもよく、また予め記憶部３４に記録されていてもよい。また、制御部１８が、ターゲット回路４２の分割方法を設定データ生成部３２に指示してもよい。
【００１７】
以上の手順を実行することにより、記憶部３４は、リコンフィギュラブル回路１２を所期の回路として構成するための複数の設定データ４０を記憶する。複数の設定データ４０は、分割回路Ａを構成するための設定データ４０ａ、分割回路Ｂを構成するための設定データ４０ｂ、分割回路Ｃを構成するための設定データ４０ｃ、および分割回路Ｄを構成するための設定データ４０ｄである。既述のごとく、複数の設定データ４０は、１つのターゲット回路４２を分割した複数の分割回路をそれぞれ表現したものである。このように、リコンフィギュラブル回路１２の回路規模に応じて、生成すべきターゲット回路４２の設定データ４０を生成することにより、汎用性の高い処理装置１０を実現することが可能となる。別の視点からみると、本実施の形態の処理装置１０によれば、回路規模の小さいリコンフィギュラブル回路１２を用いて、所望の回路を再構成することが可能となる。
【００１８】
図３は、リコンフィギュラブル回路１２の構成図である。リコンフィギュラブル回路１２は、複数の論理回路５０の列が複数段にわたって配列されたもので、各段に設けられた接続部５２によって、前段の論理回路列の出力と後段の論理回路列の入力が設定により任意に接続可能な構造となっている。また接続部５２は、設定部１４から出力される定数データを、所期の論理回路５０に供給するための接続関係を設定する機能も有している。入力接続部５１は、外部からの入力ないしは出力選択部５３より出力される値、または設定部１４から出力される定数データを、１段目の論理回路列における所期の論理回路５０に供給するための接続関係を設定する機能を有する。ここでは、論理回路５０の例としてＡＬＵを示す。ＡＬＵは、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる算術論理回路である。各ＡＬＵは、複数の演算機能を選択するためのセレクタを有している。
【００１９】
図示のように、リコンフィギュラブル回路１２は、横方向にＹ個、縦方向にＸ個のＡＬＵが配置されたＡＬＵアレイとして構成される。第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１Ｙには、入力接続部５１を介して入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第１段の接続部５２に設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２Ｙに入力される。第１段の接続部５２においては、第１段のＡＬＵ列の出力と第２段のＡＬＵ列の入力の間で任意の接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、第（Ｘ−１）段の接続部５２まで、同様の構成であり、最終段である第Ｘ段のＡＬＵ列は、リコンフィギュラブル回路１２にマッピングされた演算の最終結果を、出力選択部５３に出力する。出力選択部５３は、図１に示す出力回路２２ないしは内部状態保持回路２０の機能に相当する。
【００２０】
図４は、データフローグラフ３８の例を示す図である。データフローグラフ３８においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されている。設定データ生成部３２は、このデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングするための設定データ４０を生成する。特にデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングしきれない場合には、データフローグラフ３８を複数の領域に分割して、分割回路の設定データ４０を生成する。データフローグラフ３８による演算の流れを回路上で実現するべく、設定データ４０は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ４０は、各論理回路５０の機能を選択するセレクタに供給する選択情報、接続部５２の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
【００２１】
図１に戻って、回路の構成時、制御部１８は、１つの回路を構成するための複数の設定データ４０を選択する。ここでは、制御部１８が、図２に示すターゲット回路４２を構成するための設定データ４０、すなわち分割回路Ａの設定データ４０ａ、分割回路Ｂの設定データ４０ｂ、分割回路Ｃの設定データ４０ｃおよび分割回路Ｄの設定データ４０ｄを選択するものとする。制御部１８は、選択した設定データ４０を設定部１４に供給する。設定部１４は、プログラムカウンタのカウント値に基づいてデータを出力するコマンドメモリを有し、供給される設定データ４０をそれぞれ保持する。なお、設定部１４は、キャッシュメモリや他の種類のメモリを有してもよい。具体的に制御部１８は、設定データ４０ａを第１設定部１４ａに、設定データ４０ｂを第２設定部１４ｂに、設定データ４０ｃを第３設定部１４ｃに、設定データ４０ｄを第４設定部１４ｄに供給する。
【００２２】
設定部１４は、選択された設定データ４０をリコンフィギュラブル回路１２に設定し、リコンフィギュラブル回路１２の回路を再構成する。これにより、リコンフィギュラブル回路１２は、所期の演算を実行できる。リコンフィギュラブル回路１２は、基本セルとして高性能の演算能力のあるＡＬＵを用いており、またリコンフィギュラブル回路１２および設定部１４を１チップ上に構成することから、コンフィグレーションを高速に、例えば１クロックで実現することができる。制御部１８はクロック機能を有し、クロック信号は、内部状態保持回路２０および出力回路２２に供給される。また制御部１８はカウンタ回路を含み、カウント信号を選択器１６に供給してもよい。この場合、カウンタ回路は４進カウンタである。
【００２３】
図５は、信号処理のフローチャートを示す。制御部１８は、カウンタ回路からのカウント信号に合わせて、リコンフィギュラブル回路１２に複数の設定データ４０、すなわち設定データ４０ａ、設定データ４０ｂ、設定データ４０ｃおよび設定データ４０ｄを順次供給するように設定部１４を制御する。設定部１４が、複数の設定データ４０をリコンフィギュラブル回路１２に順次供給することにより、全体として１つの回路が構成されることになる。出力回路２２は、設定部１４によりリコンフィギュラブル回路１２が複数回、ここでは４回構成されると、リコンフィギュラブル回路１２の出力を出力する。この回数は、使用する設定データ４０の個数となる。以下、具体的な手順を示す。
【００２４】
まず、制御部１８が、選択器１６を制御して第１設定部１４ａを選択する。選択器１６は、カウンタ回路により制御されてもよい。第１設定部１４ａは、分割回路Ａの設定データ４０ａをリコンフィギュラブル回路１２に供給し、リコンフィギュラブル回路１２上に分割回路Ａを構成する（Ｓ１０）。分割回路Ａが構成されると同時に、入力データが分割回路Ａに供給される。組合せ回路である分割回路Ａは、次のクロック信号までの間に、演算処理を実行する。
【００２５】
制御部１８がクロック信号を内部状態保持回路２０に供給すると、内部状態保持回路２０は、分割回路Ａによる処理結果を保持する（Ｓ１２）。Ｓ１０およびＳ１２のステップを第１サイクルと呼ぶ。同時に、制御部１８が、選択器１６を制御して第２設定部１４ｂを選択する。第２設定部１４ｂは、分割回路Ｂの設定データ４０ｂをリコンフィギュラブル回路１２に供給し、リコンフィギュラブル回路１２上に分割回路Ｂを構成する。このとき、内部状態保持回路２０に保持された分割回路Ａの処理結果が、経路部２４を通って分割回路Ｂの入力に供給される（Ｓ１４）。分割回路Ｂは、次のクロック信号までの間に、演算処理を実行する。
【００２６】
制御部１８が次のクロック信号を内部状態保持回路２０に供給すると、内部状態保持回路２０は、分割回路Ｂの処理結果を保持する（Ｓ１６）。Ｓ１４およびＳ１６のステップを第２サイクルと呼ぶ。同時に、制御部１８が、選択器１６を制御して第３設定部１４ｃを選択する。第３設定部１４ｃは、分割回路Ｃの設定データ４０ｃをリコンフィギュラブル回路１２に供給し、リコンフィギュラブル回路１２上に分割回路Ｃを構成する。このとき、内部状態保持回路２０に保持された分割回路Ｂの処理結果が、経路部２４を通って分割回路Ｃの入力に供給される（Ｓ１８）。分割回路Ｃは、次のクロック信号までの間に、演算処理を実行する。
【００２７】
制御部１８が次のクロック信号を内部状態保持回路２０に供給すると、内部状態保持回路２０は、分割回路Ｃの処理結果を保持する（Ｓ２０）。Ｓ１８およびＳ２０のステップを第３サイクルと呼ぶ。同時に、制御部１８が、選択器１６を制御して第４設定部１４ｄを選択する。第４設定部１４ｄは、分割回路Ｄの設定データ４０ｄをリコンフィギュラブル回路１２に供給し、リコンフィギュラブル回路１２上に分割回路Ｄを構成する。このとき、内部状態保持回路２０に保持された分割回路Ｃの処理結果が、経路部２４を通って分割回路Ｄの入力に供給される（Ｓ２２）。分割回路Ｄは、次のクロック信号までの間に、演算処理を実行する。
【００２８】
制御部１８が次のクロック信号を出力回路２２に供給すると、出力回路２２は、分割回路Ｄの処理結果を出力する（Ｓ２４）。Ｓ２２およびＳ２４のステップを第４サイクルと呼ぶ。第１サイクルから第４サイクルまでの処理を繰り返し行う場合には、再度、制御部１８が選択器１６を制御して第１設定部１４ａを選択し、リコンフィギュラブル回路１２上に分割回路Ａを構成して、入力データが供給される。
【００２９】
以上のように、１つのターゲット回路４２を分割した複数の分割回路Ａ〜Ｄをリコンフィギュラブル回路１２上に順次構成し、各分割回路の出力を次の分割回路の入力にフィードバックして各分割回路における演算処理を実行し、最後に構成された分割回路Ｄから、ターゲット回路４２の出力を取り出す。Ｓ１０からＳ２４までにかかる時間は４クロック分であり、本実施の形態の処理装置１０によると、限られたリコンフィギュラブル回路１２の回路規模のなかで、効率よい演算処理を実行することができる。また、リコンフィギュラブル回路１２の回路規模が小さいため、消費電力も小さくできる。
【００３０】
制御部１８は、内部状態保持回路２０および出力回路２２に同一のクロック信号を供給してもよいが、出力回路２２に供給するクロック信号の周期を、内部状態保持回路２０に供給するクロック信号の周期の４倍に設定してもよい。内部状態保持回路２０および出力回路２２に同一のクロック信号を供給する場合は、内部状態保持回路２０に出力回路２２の役目をもたせ、１つの回路にまとめることもできる。この場合は、出力先の回路以降で必要な信号を取り出すための回路が必要となる。図５に示した例では１つのターゲット回路４２を４サイクルの分割回路で表現したため、出力回路２２の動作周期が内部状態保持回路２０の動作周期の４倍となっているが、周期の比は、ターゲット回路４２の分割数に応じて変化する。また、この例では第１設定部１４ａ〜第４設定部１４ｄの４つの設定部を利用したが、この数もターゲット回路４２の分割数に応じて変動することは当業者に容易に理解されるところである。なお、特に説明はしていないが、論理回路５０、入力接続部５１および接続部５２についてＤ−ＦＦを付加して、いわゆるパイプライン処理を行うことも可能である。
【００３１】
図６は、処理装置１０においてリコンフィギュラブル回路１２に定数データを供給するための構成を示す。定数データを供給するために、制御部１８はプログラムカウンタ６２を有し、設定部１４はコマンドメモリ６１および定数テーブル７０を有する。コマンドメモリ６１は、各ＡＬＵの機能を定める設定データ、入力接続部５１、接続部５２および出力選択部５３における接続を定める設定データ（図６において設定データを供給するための接続線については図示を省略）、および各ＡＬＵに入力する定数に関する設定データを保持している。ＡＬＵ機能を定める設定データは、各ＡＬＵにおける論理機能を選択するべく、ＡＬＵのセレクタに供給するためのセレクト値であり、接続を定める設定データは、入力接続部５１、接続部５２および出力選択部５３における結線を定めるためのデータである。以下、本実施の形態において入力接続部５１と接続部５２の機能は実質的に同じであるため、以下、入力接続部５１を接続部５２として表現することもある。定数に関する設定データは、各ＡＬＵに入力する定数を格納した定数テーブル７０のアドレスデータである。コマンドメモリ６１に保持されるデータは、設定データ４０として生成されたデータであり、回路を分割して生成する場合には、それぞれの分割した設定データ４０に対応する。コマンドメモリ６１に保持されたデータは、プログラムカウンタ６２のカウンタ値によって読み出されていく。以下では、リコンフィギュラブル回路１２に１つの回路を生成する場合を例にとり、ＡＬＵの入力に定数を供給する方法を説明する。なお、リコンフィギュラブル回路１２に生成する回路は、最終的に生成すべきターゲット回路４２であるか、それを分割した分割回路であるかは問わない。
【００３２】
定数テーブル７０は、リコンフィギュラブル回路１２のＡＬＵに供給する定数データを記憶する。定数テーブル７０はＲＡＭで構成され、複数存在するのが好ましい。入力接続部５１および接続部５２は、コマンドメモリ６１から出力される接続用の設定データに基づいて、複数の定数テーブル７０の出力と、ＡＬＵの入力とを接続する。ＲＡＭである各定数テーブル７０は、複数のデータを格納する領域を有してもよいが、１回の読出しでは、１つのデータしか読み出されることはできない。したがって、例えば複数回のサイクルで所期のターゲット回路４２を構成する場合、各定数テーブル７０は、１つの分割回路に供給する定数データを複数個有さず、言い換えると、１つの分割回路に供給される定数データは、それぞれ異なる定数テーブル７０にて記憶されることが好ましい。これにより、各定数テーブル７０からの１回の読出しで、必要な定数データを所期のＡＬＵに設定することが可能となり、定数データの設定時間を短縮することが可能となる。
【００３３】
図７は、コマンドメモリ６１の出力データを説明するための図である。コマンドメモリ６１は、複数の定数テーブル７０ａ〜７０ｎに対して、各ＡＬＵの入力に必要な定数を格納したアドレスデータを供給する。定数テーブル７０は、コマンドメモリ６１からアドレスデータを受けて、そのアドレスに記憶される定数データを接続部５２に出力する。
【００３４】
コマンドメモリ６１は、ＡＬＵの入力を、前段のＡＬＵの出力、外部からの入力および／または定数テーブル７０の出力と接続させるための接続設定データを接続部５２に与える。接続部５２は、接続設定データを受けて、所期の接続関係を実現する。これにより、演算に定数を必要とするＡＬＵには、接続部５２により定数テーブル７０から定数データが供給されることになる。またコマンドメモリ６１は、ＡＬＵが所期の演算機能を実行するためのデータをＡＬＵに供給する。リコンフィギュラブル回路１２における全ての接続部５２、ＡＬＵに対して上記したデータを供給することで、リコンフィギュラブル回路１２が所期の回路を構成することができる。
【００３５】
以下、定数テーブル７０とＡＬＵの関係について説明する。
定数テーブル７０は、各ＡＬＵに対して設けられてもよい。定数テーブル７０をＡＬＵの数だけ用意することで、接続部５２における結線を容易にすることができる。すなわち、定数テーブル７０とＡＬＵの対応が１対１に定まるため、接続部５２では予め定数テーブル７０とＡＬＵとを接続する配線と、その配線をオンオフするスイッチを設けるだけでよいという利点がある。したがって、配線部を小さく構成でき、回路の小型化および低消費電力化を実現することができる。またコンパイラの構成が容易になるため、コンパイラソフトの削減、コンパイル時間の短縮も実現することができる。
【００３６】
定数テーブル７０は、ＡＬＵ列の各段に対して設けられてもよい。定数テーブル７０を各段に対して設けることで、各段における接続部５２と定数テーブル７０とを対応付けることができるため、接続部５２における結線を比較的容易にすることができる。すなわち、定数テーブル７０とＡＬＵ列の対応が１対１に定まるため、接続部５２では予め定数テーブル７０とＡＬＵ列に含まれるＡＬＵとを接続する配線と、その配線を選択するセレクタを設ければよいという利点がある。定数テーブル７０を各ＡＬＵに対して設ける場合と比較すると、ＡＬＵ列に対して設けることで、同一のＡＬＵ列に存在するＡＬＵで定数テーブル７０の格納領域を共有化できる。例えば、定数テーブル７０の格納領域を同一ＡＬＵ列のＡＬＵ数以下とすることにより、定数テーブル７０の規模をトータルで小さくできる可能性がある。したがって、配線部を比較的小さく構成でき、回路の小型化および低消費電力化を実現することができる。またコンパイラの構成が容易になるため、コンパイラソフトの削減、コンパイル時間の短縮も実現することができる。
【００３７】
定数テーブル７０は、ＡＬＵやＡＬＵ列に対応させずに設けられてもよい。この場合、接続部５２と定数テーブル７０との配線は必要となるが、定数テーブル７０の個数または各定数テーブル７０の回路規模を減らすことができる。これは図７に示した例に相当する。リコンフィギュラブル回路１２に回路を構成する場合、全てのＡＬＵが定数を必要とする可能性は極めて低いため、複数の定数テーブル７０を全ＡＬＵで共有化することで、定数テーブル７０の領域確保に必要な回路規模を削減することができるという利点がある。定数テーブル７０に必要な領域が少なくなるため、回路の小型化および低消費電力化を実現することができる。
なお定数テーブル７０の配置パターンは、上記の構成に限定されず、他の態様をとってもよい。
【００３８】
図８は、前後７点を利用する７タップからなるＦＩＲフィルタ回路を示す。以下、このＦＩＲ（Finite Impulse Response）フィルタ回路を、本実施の形態における処理装置１０で実現する具体例を示す。このＦＩＲフィルタ回路の定数ａ１、ａ２、ａ３、ａ４は、図示のごとく、対称に設定されている。
【００３９】
図９は、図８で示すＦＩＲフィルタ回路を置き換えた回路を示す。回路の置き換えは、フィルタ係数の対称性を利用している。
【００４０】
図１０は、図９に示すＦＩＲフィルタ回路をコンパイルして作成したデータフローグラフ３８ａを示す。図中、“＋”は加算を示し、“×”は乗算を示し、“ＭＯＶ”はスルー用のパスを示す。“ＭＯＶ”は、詳細には、入力されたデータに対して演算処理を行わず、データを下段に通過させるノードであることを意味する。ここでは、前段のＡＬＵの出力に対して、ａ１、ａ２、ａ３、ａ４で表現される所定の定数が乗算されている。
【００４１】
図１１は、図１０に示すデータフローグラフ３８ａをリコンフィギュラブル回路１２にマッピングした例を示す。なお、ここではリコンフィギュラブル回路１２が４列４段のＡＬＵを有してデータフローグラフ３８ａを一度にマッピングできる例を想定している。例えばリコンフィギュラブル回路１２が４列２段のＡＬＵを有する場合は、データフローグラフ３８ａを２段ずつに分割し、順にリコンフィギュラブル回路１２にマッピングして、最初の分割回路の出力を次の分割回路の入力として利用することで、データフローグラフ３８ａの回路を実現することができる。
【００４２】
データフローグラフ３８ａにおいては、２段目のＡＬＵ列に対して定数入力が行われている。ここでは、４つの定数テーブル７０ａ、７０ｂ、７０ｃ、７０ｄが用意されており、それぞれに分散されて４つの定数データａ１、ａ２、ａ３、ａ４が記憶されている。なお、既述したように、リコンフィギュラブル回路１２にマッピングするときに必要なデータを分散して定数テーブル７０に格納しておくことで、複数の定数テーブル７０からの１回のデータ読出しにより、所期のデータをＡＬＵに対して供給することが可能となる。図１１に示す例でも、定数テーブル７０が、定数入力が必要な全てのＡＬＵに対して定数データを同時に供給することができるように構成されている。図中、定数テーブル７０中に示される「Ｘ」は、任意のデータが記憶されていることを表現する。
【００４３】
入力接続部５１、接続部５２、出力選択部５３における接続関係は、コマンドメモリ６１による接続設定データにより定められる。なお、ここでは上下段のＡＬＵ列の接続については言及せず、定数テーブル７０の出力とＡＬＵの入力との接続関係について示す。コマンドメモリ６１は、定数テーブル７０ａに対してアドレス０を、定数テーブル７０ｂに対してアドレス１を、定数テーブル７０ｃに対してアドレス２を、定数テーブル７０ｄに対してアドレス０を入力する。定数テーブル７０ａは、データａ１をＡＬＵ２１の入力に供給し、定数テーブル７０ｂは、データａ２をＡＬＵ２２の入力に供給し、定数テーブル７０ｃは、データａ３をＡＬＵ２３の入力に供給し、定数テーブル７０ｄは、データａ４をＡＬＵ２４の入力に供給する。なお、この例では偶然にも第２段のＡＬＵ列に全ての定数データが入力されているが、定数データは複数段にまたがって供給されることが可能である。これにより、図１０に示すデータフローグラフ３８ａがリコンフィギュラブル回路１２上にマッピングされる。
【００４４】
図１２は、リコンフィギュラブル回路１２にて生成するべきターゲット回路の例を示す。このターゲット回路は、複数の回路、すなわち直列に並べられた三段のＦＩＲで構成される。ＦＩＲの形式は図１０に示したとおりであり、入力する定数のみが異なるものを例にあげる。ＦＩＲ１およびＦＩＲ２の係数は、以下のとおりである。
ＦＩＲ１：ａ１＝１００、ａ２＝２００、ａ３＝３００、ａ４＝４００
ＦＩＲ２：ａ１＝２００、ａ２＝４００、ａ３＝８００、ａ４＝１６００
ターゲット回路は、ＦＩＲ１、ＦＩＲ２、ＦＩＲ１をリコンフィギュラブル回路１２上に順次生成することによって、構成することができる。
【００４５】
図１３は、定数テーブル７０のデータ格納例を示す。ターゲット回路には２つのＦＩＲ１が含まれているが、定数をテーブルとしてもつことによって、ＦＩＲ１の定数データを２重にもつ必要はなく、定数テーブル７０に格納した定数データを２つのＦＩＲ１の間で共用することが可能となる。また、ＦＩＲ１とＦＩＲ２には、重複する定数２００、４００が存在しているが、これらについても、ＦＩＲ１とＦＩＲ２の間で共用することが可能である。このとき、ＦＩＲ１の生成時に必要となるＦＩＲ１の定数１００、２００、３００、４００については、定数テーブル７０ａ、７０ｂ、７０ｃ、７０ｄに分散して記憶させ、同じタイミングで読み出せることが好ましい。この例では、定数テーブル７０ａ、７０ｂ、７０ｃ、７０ｄのアドレス０に、ＦＩＲ１の定数が分散して記憶されている。また、ＦＩＲ２の生成時に必要となるＦＩＲ２の定数２００、４００、８００、１６００についても、同様に定数テーブル７０ａ、７０ｂ、７０ｃ、７０ｄに分散して記憶させ、同じタイミングで読み出せることが好ましい。定数２００が定数テーブル７０ｂに、定数４００が定数テーブル７０ｄに記憶されているため、この例では、定数８００を定数テーブル７０ａに、定数１６００を定数テーブル７０ｃに記憶させることとしている。異なるタイミングで同一値のデータを使用する場合には、定数テーブル７０に保持された１つのデータを共用することが好ましい。使用する定数をテーブル化することで、同一の定数データの使い回しが可能となり、そのためにテーブルを記憶するメモリ領域を小さく形成できることで、回路規模の縮小化を実現することが可能となる。
【００４６】
図１４は、図１２に示すＦＩＲ１をリコンフィギュラブル回路１２にマッピングした例を示す。入力接続部５１、接続部５２、出力選択部５３における接続関係は、コマンドメモリ６１による接続設定データにより定められる。コマンドメモリ６１は、定数テーブル７０ａに対してアドレス０を、定数テーブル７０ｂに対してアドレス０を、定数テーブル７０ｃに対してアドレス０を、定数テーブル７０ｄに対してアドレス０を入力する。定数テーブル７０ａは、定数１００をＡＬＵ２１の入力に供給し、定数テーブル７０ｂは、定数２００をＡＬＵ２２の入力に供給し、定数テーブル７０ｃは、定数３００をＡＬＵ２３の入力に供給し、定数テーブル７０ｄは、定数４００をＡＬＵ２４の入力に供給する。これにより、ＦＩＲ１をリコンフィギュラブル回路１２にマッピングすることができる。
【００４７】
図１５は、図１２に示すＦＩＲ２をリコンフィギュラブル回路１２にマッピングした例を示す。入力接続部５１、接続部５２、出力選択部５３における接続関係は、コマンドメモリ６１による接続設定データにより定められる。なお、入力接続部５１においては、図１２における１段目のＦＩＲ１の出力が入力され、第１段のＡＬＵ列に供給されることになる。コマンドメモリ６１は、定数テーブル７０ａに対してアドレス１を、定数テーブル７０ｂに対してアドレス０を、定数テーブル７０ｃに対してアドレス１を、定数テーブル７０ｄに対してアドレス０を入力する。定数テーブル７０ａは、定数８００をＡＬＵ２３の入力に供給し、定数テーブル７０ｂは、定数２００をＡＬＵ２１の入力に供給し、定数テーブル７０ｃは、定数１６００をＡＬＵ２４の入力に供給し、定数テーブル７０ｄは、定数４００をＡＬＵ２２の入力に供給する。これにより、ＦＩＲ２をリコンフィギュラブル回路１２にマッピングすることができる。
【００４８】
なお、図１２に示すターゲット回路を構成するためには、図１４に示すＦＩＲ１をリコンフィギュラブル回路１２上に再構成し、図１５に示すＦＩＲ２の出力を第１段のＡＬＵ列に供給する。定数テーブル７０から定数を供給することで、ＦＩＲ１、ＦＩＲ２、ＦＩＲ１を順にリコンフィギュラブル回路１２上に効率よく生成することができる。以上に示したように、ＦＩＲ１については２回出現するが、定数は全て同じであるため、共通化が可能である。また、ＦＩＲ１とＦＩＲ２とでは、定数２００と定数４００を共通化することができる。したがって、演算に要する１２個の定数を６つの領域に記憶すればよいことになり、テーブル領域の削減、それにともなう回路規模の小型化および低消費電力化を実現することができる。
【００４９】
図１６は、コマンドメモリ６１に定数を直接記憶させる例を示す。定数テーブルを利用せずに、コマンドメモリ６１に定数を記憶させることでも、各ＡＬＵに定数を供給することが可能となる。上記の実施例で示したように、定数テーブルを利用した場合には、必要なデータのみを記憶すればよいためメモリ容量が少なくてすみ、回路規模の削減および低消費電力化を実現することが可能である。一方、コマンドメモリ６１からＡＬＵに定数を供給する場合には、テーブルからのデータ読み出しに伴う回路遅延が発生しないという利点がある。
【００５０】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５１】
例えば、リコンフィギュラブル回路１２におけるＡＬＵの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
【図面の簡単な説明】
【００５２】
【図１】実施の形態に係る処理装置の構成図である。
【図２】１つの回路を分割してできる複数の回路の設定データについて説明するための図である。
【図３】リコンフィギュラブル回路の構成図である。
【図４】データフローグラフの例を示す図である。
【図５】信号処理のフローチャートを示す図である。
【図６】処理装置においてリコンフィギュラブル回路に定数データを供給するための構成を示す図である。
【図７】コマンドメモリの出力データを説明するための図である。
【図８】前後７点を利用する７タップからなるＦＩＲフィルタ回路を示す図である。
【図９】図８で示すＦＩＲフィルタ回路を置き換えた回路を示す図である。
【図１０】図９に示すＦＩＲフィルタ回路をコンパイルして作成したデータフローグラフを示す図である。
【図１１】図１０に示すデータフローグラフをリコンフィギュラブル回路にマッピングした例を示す図である。
【図１２】リコンフィギュラブル回路にて生成するべきターゲット回路の例を示す図である。
【図１３】定数テーブルのデータ格納例を示す図である。
【図１４】図１２に示すＦＩＲ１をリコンフィギュラブル回路にマッピングした例を示す図である。
【図１５】図１２に示すＦＩＲ２をリコンフィギュラブル回路にマッピングした例を示す図である。
【図１６】コマンドメモリに定数を直接記憶させる例を示す図である。
【符号の説明】
【００５３】
１０・・・処理装置、１２・・・リコンフィギュラブル回路、１４・・・設定部、１６・・・選択器、１８・・・制御部、２０・・・内部状態保持回路、２２・・・出力回路、２４・・・経路部、２６・・・集積回路装置、３０・・・コンパイル部、３２・・・設定データ生成部、３４・・・記憶部、３６・・・プログラム、３８・・・データフローグラフ、４０・・・設定データ、４２・・・ターゲット回路、５０・・・論理回路、５１・・・入力接続部、５２・・・接続部、５３・・・出力選択部、６１・・・コマンドメモリ、６２・・・プログラムカウンタ、７０・・・定数テーブル。
【図１】
2005277673.tif 000003
【図２】
2005277673.tif 000004
【図３】
2005277673.tif 000005
【図４】
2005277673.tif 000006
【図５】
2005277673.tif 000007
【図６】
2005277673.tif 000008
【図７】
2005277673.tif 000009
【図８】
2005277673.tif 000010
【図９】
2005277673.tif 000011
【図１０】
2005277673.tif 000012
【図１１】
2005277673.tif 000013
【図１２】
2005277673.tif 000014
【図１３】
2005277673.tif 000015
【図１４】
2005277673.tif 000016
【図１５】
2005277673.tif 000017
【図１６】
2005277673.tif 000018