図1は、実施の形態に係る処理装置10の構成図である。処理装置10は、回路構成を再構成可能とする機能を有する集積回路装置26を備える。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、内部状態保持回路20、出力回路22、第1フィードバック経路24、遅延保持回路27、第2フィードバック経路29および出力経路51を備える。リコンフィギュラブル回路12は設定を変更することにより、機能の変更を可能とする。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。第1フィードバック経路24および第2フィードバック経路29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。
リコンフィギュラブル回路12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を設定可能な接続部とを備える。構造的には、複数の論理回路列の間に、論理回路列間の接続用結線を設定する接続部が設けられる。リコンフィギュラブル回路12は、複数段に配列された各論理回路の機能、および論理回路間の接続を任意に設定することで、機能の変更を可能とする。
設定部14は、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この場合、設定データ40はコマンドメモリから出力されるコマンドデータであってよい。
内部状態保持回路20は、例えばデータフリップフロップ(DFF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受け付ける。内部状態保持回路20は第1フィードバック経路24に接続されており、リコンフィギュラブル回路12の出力を直接リコンフィギュラブル回路12の入力にフィードバックさせる。また内部状態保持回路20は、リコンフィギュラブル回路12の出力を遅延保持回路27に供給する。内部状態保持回路20は選択器を有し、選択器は、制御部からの選択指示をもとに、第1フィードバック経路24に送り出すデータ、および遅延保持回路27に供給するデータを選択する。なお、選択器は、同一のデータを第1フィードバック経路24および遅延保持回路27の双方に送り出してもよい。
遅延保持回路27はメモリであって、リコンフィギュラブル回路12から出力される出力データを格納するための複数のRAMにより構成される。遅延保持回路27は、リコンフィギュラブル回路12の出力データを任意の時間遅延させる機能をもつ。この例では、遅延保持回路27が、内部状態保持回路20から出力されるデータを格納しているが、リコンフィギュラブル回路12から直接出力されるデータを格納してもよい。遅延保持回路27は、制御部18からのW/Rイネーブル信号およびアドレス信号に基づいて、データの書込/読出を行う。遅延保持回路27は第2フィードバック経路29に接続されており、制御部18からの読出指示に基づいて、所期のタイミングでデータをリコンフィギュラブル回路12の入力にフィードバックさせる。なお、設定部14がコマンドメモリとして構成されている場合、コマンドメモリから供給されるコマンドデータで、遅延保持回路27のデータの書込/読出を行ってもよい。
出力回路22は、例えばデータフリップフロップ(DFF)などの順序回路として構成され、リコンフィギュラブル回路12から出力されるデータを外部に出力する。この例では、出力回路22が、遅延保持回路27から出力されるデータを受け付けているが、リコンフィギュラブル回路12から直接出力されるデータを受け付けてもよく、また内部状態保持回路20から出力されるデータを受け付けてもよい。
処理装置10においては、リコンフィギュラブル回路12の出力をリコンフィギュラブル回路12の入力にフィードバックする経路が、第1フィードバック経路24および第2フィードバック経路29の2系統存在する。第1フィードバック経路24は、遅延保持回路27を介さないために、リコンフィギュラブル回路12の出力データを高速にフィードバック処理することが可能である。一方、第2フィードバック経路29は、制御部18からの指示により所期のタイミングでデータ信号をリコンフィギュラブル回路12に供給することができる。このように、第1フィードバック経路24または第2フィードバック経路29は、リコンフィギュラブル回路12上に再構成する回路に応じて適宜使い分けられる。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。複数の論理回路は、マトリックス状に配置された構造をとってもよい。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ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を分割することが好ましい。リコンフィギュラブル回路12へのマッピングは、一度に、例えば1回のクロックで実行することができる。したがって、この場合、4つの分割回路は、4クロックで生成することができる。設定データ生成部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を分割した複数の分割回路をそれぞれ表現したものである。各設定データ40を供給することにより、リコンフィギュラブル回路12上に分割回路を1クロックで構成することができる。このように、リコンフィギュラブル回路12の回路規模に応じて、生成すべきターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、実施の形態の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図3は、リコンフィギュラブル回路12の一般的な構成を示す。リコンフィギュラブル回路12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部52とを備える。リコンフィギュラブル回路12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書および特許請求の範囲において「多段」とは、複数の段を意味する。
リコンフィギュラブル回路12は、論理回路としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と1つの出力端子を有して構成される。
リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。ここでは、縦方向に3個、横方向に6個のALUが配置された3段6列のALUアレイを示している。リコンフィギュラブル回路12は、接続部52およびALU列53を備える。ALU列53は複数段に設けられ、接続部52は前後段のALU列53の間に設けられて、前段のALUの出力と後段のALUの入力の接続関係を設定する。
図3に示す例では、第1段のALU列53aと第2段のALU列53bの間に、第2段を構成する接続部52bが設けられ、第2段のALU列53bと第3段のALU列53cの間に、第3段を構成する接続部52cが設けられる。なお、第1段を構成する接続部52aは、第1段のALU列53aの上側に設けられる。
第1段のALU11、ALU12、・・・、ALU16には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第2段の接続部52bに設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU26に入力される。第2段の接続部52bにおいては、第1段のALU列53aの出力と第2段のALU列53bの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。第2段のALU21、ALU22、・・・、ALU26には、ALU列53aの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第3段の接続部52cの接続用結線において設定された接続にしたがって、第3段のALU31、ALU32、・・・、ALU36に入力される。
最終段となる第3段のALU列53cからの出力データは、内部状態保持回路20に出力される。内部状態保持回路20および/または遅延保持回路27は、第1フィードバック経路24および/または第2フィードバック経路29を介して、出力データを接続部52aに入力する。接続部52aは、接続用結線を設定し、第1段のALU11、ALU12、・・・、ALU16にデータを供給する。
本実施の形態では、リコンフィギュラブル回路12の出力データを、出力経路51(図1参照)を介して、最終段以外の途中段の論理回路からも出力可能とする。最終段だけでなく、第1段および第2段のALUからも演算結果を出力可能とすることで、データフローグラフの数を少なくすることができ、リコンフィギュラブル回路12における回路の再構成速度を上げることができる。
図4は、本発明の実施の形態に係るリコンフィギュラブル回路12の構成を示す。リコンフィギュラブル回路12は、リコンフィギュラブル回路12の出力データを最終段以外の途中段の論理回路から出力可能な出力経路51a、51bを備える。以下、第1段および第2段、すなわち途中段からの出力を、「途中出力」と呼ぶこともある。3段6列のALUアレイでは、第1段のALU列53aおよび第2段のALU列53bから出力される。
この例では、出力経路51a、51bのそれぞれが6本の出力線を有し、各出力線が、各段に含まれるALUからの演算結果を出力する。これにより、ALUアレイの全てのALUの演算結果を、最終段のALU列53cを介さずに、ダイレクトにALUアレイから取り出すことが可能となる。例えば、ある途中段のALUの演算結果を次回以降に構成する回路に入力し、一方でその演算結果を現在構成している回路の後段のALUに入力するDFGを想定する。途中段からの出力ができない場合は、リコンフィギュラブル回路12上に、その演算結果をそのまま最終段まで運ぶ接続経路と、演算結果を所期のALUにおいて処理する接続経路の2経路を構成する必要がある。しかしながらDFGによっては、2経路を構成することができないこともあり、その場合は、演算結果を最終段まで運び、次回に構成する回路で演算結果を処理することとなるため、結果としてDFGの個数が増えてしまう。
本実施の形態では、途中段からの出力経路51を形成することで、全てのALUから出力を適宜取り出すことが可能となるため、途中段からの出力ができない場合と比較すると、使用するDFGの個数を減らすことができる。また、コンパイラにおける処理が容易になり、コンパイル時間の短縮も可能となる。構成する回路数が減るため、消費電力も低減できる。また、高速処理も可能となる。特に、処理装置10がバッテリで駆動される場合には、バッテリ寿命を延ばす意味でも、構成する回路数を減らすことは有効である。なお、図示の例では出力経路51がALUの出力線に接続しているが、出力経路51は接続部52の内部に形成されてもよい。
図5は、実施の形態におけるリコンフィギュラブル回路12およびその周辺回路を示す。この処理装置10において、リコンフィギュラブル回路12の途中段のALUからは、図4に示す出力経路51が形成されている。これに対応して、内部状態保持回路20は、第3段のALU列53cの出力だけでなく、出力経路51a、51bから供給される第1段、第2段のALU列53a、53bの出力を受け取る複数のDFFを備える。したがって、図4に示す出力経路51a、51bを設ける場合は、内部状態保持回路20が、全てのALUの演算結果を受け取る18個のDFFを有して構成されることになる。同様に、遅延保持回路27も、対応するDFFからALUの演算結果を受け取る18個のRAMを有して構成される。
内部状態保持回路20および遅延保持回路27の出力は、それぞれ第1フィードバック経路24および第2フィードバック経路29を介して、次回以降に構成されるリコンフィギュラブル回路12上の回路にフィードバックされる。なお、この場合に、フィードバック先は、第1段のALU列53aだけでなく、第2段のALU列53b、第3段のALU列53cを含んでもよい。
図6は、DFGの1例を示す。このDFGは3段で構成されるため、3段6列のリコンフィギュラブル回路12を使用した場合には、1クロックで処理できることが好ましい。リコンフィギュラブル回路12は、図4および図5に示したものを想定する。図中、“+”は加算を示し、“−”は減算を示し、“AND”は乗算を示し、“>>”はビットの右シフトを示し、“〜”はビット反転を示す。
第1段のALU列には、外部入力またはリコンフィギュラブル回路12のフィードバック出力が供給される。この例では、定数データである“0”、“1”が入力され、また変数データである“入力X”、“入力Y”が入力されている。図6に示すDFGでは、第1段において1番左の減算、左から3番目の減算の演算結果が出力される必要がある。また、第2段において、1番左の乗算、左から2番目のビットシフト、左から3番目の減算の演算結果が出力される必要がある。それぞれの演算結果は、出力回路22から出力される。なお、図6では、内部状態保持回路20および遅延保持回路27の図示を省略している。
図7は、途中段からの途中出力を行うことのできないリコンフィギュラブル回路12に対して生成されるDFGである。図7に示すDFGは、図6に示すDFGをリコンフィギュラブル回路12の構造に合わせて加工したものである。この加工は、設定データ生成部32により行われる。具体的には、コンパイル部30がプログラムをコンパイルすることで生成した図6に示すDFGを、設定データ生成部32が、リコンフィギュラブル回路12の構造に応じて加工することで、図7に示すように2つのDFGを生成することになる。図中、“nop”は、演算処理を行わないスルー用のノードを示す。図7において、左側に示すDFGは、1回目のマッピング用、右側に示すDFGは、2回目のマッピング用のDFGを示している。
途中出力が行えないリコンフィギュラブル回路12の使用時、例えば、途中段のALUにおける演算結果を出力する必要があり且つその演算結果が次段以降のALUにおける演算に必要な場合には、ALUの演算結果は最終段のALU列からしか出力できないため、途中段のALUの演算結果を、一度、最終段のALU列から出力しなければならない。この処理は、nopノードを用いて行われる。そのような演算結果は内部状態保持回路20から遅延保持回路27に供給されるとともに、第1フィードバック経路24を通じて2回目にマッピングされた回路に供給される。図示の例では、1回目マッピング用DFGにおいて内部状態保持回路20から出力されるデータD1、D2、D3が、遅延保持回路27に供給されるとともに、第1フィードバック経路24を介してリコンフィギュラブル回路12にフィードバックされる。なお、DFGが1回の処理で終了しないため、データD4は、2回目マッピング用DFGにて必要となり、第1フィードバック経路24からフィードバックされる。
一方、図5に示すように途中出力を行うことのできる出力経路51を備えた処理装置10では、図6に示すDFGを1回のマッピングにてリコンフィギュラブル回路12に割り当てることが可能である。すなわち、図6に示すDFGを、そのままリコンフィギュラブル回路12にマッピングすることができる。
途中出力を備えない処理装置は図7に示すDFGを2クロックで処理する一方、途中出力を備えた処理装置10は、図6に示すDFGを1クロックで処理でき、したがって、処理時間を半分に削減することが可能となる。途中出力を可能とすることで、DFGの個数を減らすことができ、設定データ生成部32の処理負荷を軽減することが可能となる。また、DFGの個数を減らすことで、リコンフィギュラブル回路12に構成する回路の個数を減らすことができ、処理時間を短縮できるとともに、消費電力を低減することもできる。また、コンパイラにおける処理が容易になり、コンパイル時間の短縮も可能となる。
図8は、DFGの別の例を示す。このDFGは3段で構成されるため、3段6列のリコンフィギュラブル回路12を使用した場合には、1クロックで処理できることが好ましい。図8に示すDFGでは、第1段において1番左の減算、左から2番目の加算、左から3番目の減算の演算結果が出力される必要がある。第1段において、3つのALUの演算結果を出力する必要があり、また4つのALUの演算結果を第2段のALUの演算に使用するため、第1段における演算結果は、結果として7つの出力線から次段以降に出力される必要がある。したがって、途中出力を行う出力経路51を備えない処理装置では、1回のマッピングで図8に示すDFGを処理することができない。
図9は、途中段からの途中出力を行うことのできないリコンフィギュラブル回路12に対して生成されるDFGである。図9に示すDFGは、図8に示すDFGをリコンフィギュラブル回路12の構造に合わせて加工したものである。この加工は、設定データ生成部32により行われる。図9において、左側に示すDFGは、1回目のマッピング用、右側に示すDFGは、2回目のマッピング用のDFGを示している。1回目のDFGでは、第1段にて演算結果が確定したデータを出力し、2回目のDFGでは、データD1、D2、D3、D4をフィードバックして、未処理の演算を実行することになる。したがって、途中出力を行わない処理装置では2つのDFGが必要となり、2クロックの回路再構成時間が必要となる。
一方、図5に示すように途中出力を行うことのできる出力経路51を備えた処理装置10では、図8に示すDFGを1回のマッピングにてリコンフィギュラブル回路12に割り当てることが可能である。すなわち、図8に示すDFGを、1クロックで処理することが可能である。
このように、途中出力を可能とすることでDFGの個数を減らすことができ、設定データ生成部32の処理負荷を軽減することが可能となる。また、DFGの個数を減らすことで、リコンフィギュラブル回路12に構成する回路の個数を減らすことができるため、処理時間を短縮できるとともに、消費電力を低減することもできる。また、コンパイラにおける処理が容易になり、コンパイル時間の短縮も可能となる。
図10は、内部状態保持回路20および遅延保持回路27の構成の別の例を示す。この例では、第1段のALU列からの出力経路51aが設けられ、第2段のALU列からの出力経路は設けられない。すなわち、出力経路51aは、途中段のうち一部の段、ここでは第1段のみに設けられる。さらにいえば、出力経路51aは、途中段の上位段にのみ設けられ、下位の途中段には設けられない。出力経路51aは、第1段の各ALUの演算結果を出力する6本の出力線を有して構成される。内部状態保持回路20が第1段のALU列からの途中出力を受け付ける6個のDFFと、第3段のALU列からの最終出力を受け付ける6個のDFFを備えて構成される。また、遅延保持回路27も同様に、第1段のALU列からの途中出力を格納する6個のRAMと、第3段のALU列からの最終出力を格納する6個のRAMを備えて構成される。DFFとRAMは一対一に対応付けられる。
DFGの構造として、上段のALUの演算結果を下段のALUに引き渡すため、DFGは、上段から下段に向かう方向に収束する、いわゆる逆三角形の形をとるものが多い。このDFGの構造を利用して、図10に示す例では、途中段からの途中出力を、第1段のALU列に制限し、第2段のALU列からの出力経路を設けないこととしている。これにより、図5に示す処理装置10と比較すると、内部状態保持回路20におけるDFFの個数を18個から12個に削減でき、また遅延保持回路27におけるRAMの個数を18個から12個に削減でき、処理装置10の回路規模を削減することができる。なお、図8に示したDFGは、図10に示す処理装置10に1回でマッピングすることができ、したがって全体の処理時間も1クロックですむ。
図11は、内部状態保持回路20および遅延保持回路27の構成の別の例を示す。この例では、第1段のALU列からの出力経路51aが設けられ、出力経路51aが第1段のALUの演算結果を出力する3本の出力線を有して構成される。すなわち、出力経路51aは、第1段のALU列に含まれるALUの数よりも少ない数のデータを出力するように構成されている。なお、図10と同様に、第2段のALU列からの出力経路は設けられていない。内部状態保持回路20が第1段のALU列からの途中出力を受け付ける3個のDFFと、第3段のALU列からの最終出力を受け付ける6個のDFFを備えて構成される。また、遅延保持回路27も同様に、第1段のALU列からの途中出力を格納する3個のRAMと、第3段のALU列からの最終出力を格納する6個のRAMを備えて構成される。DFFとRAMは一対一に対応付けられる。
図10に示す処理装置10と比較すると、内部状態保持回路20におけるDFFの個数を12個から9個に削減でき、また遅延保持回路27におけるRAMの個数を12個から9個に削減でき、処理装置10の回路規模をさらに削減することができる。出力経路51aにおける3本の出力線は、第1段のALU列における所定の3つのALUから引き出されるように構成されてもよい。この場合、途中出力が必要な演算結果が出力線に接続された所定のALUから出力されるように、DFGを作成する必要がある。なお、処理装置10の汎用性を高めるためには、複数のALUからの出力を選択して出力線に供給する選択器を設け、任意の3つのALUの演算結果を出力線から出力できるように構成してもよい。なお、ここで演算結果は、nopノードにより演算処理しない結果も含むものとする。例えば、6つのALUからの出力を選択する選択器を3つ設け、それぞれの選択器を出力線に接続することで、任意の3つのALUの演算結果を途中出力することが可能となる。
図12は、ALU列からの途中出力に制限を設けた例を示す。出力経路51aが、3本の出力線51a_1、51a_2、51a_3を有している場合を想定する。図中、点線で囲われたALUは、出力線51a_1、51a_2、51a_3のそれぞれから出力可能なALUの範囲を示す。図示のように、途中段のALU列からの出力を受ける接続部52は、途中出力可能なALUの範囲を、出力線51a_1、51a_2、51a_3ごとにそれぞれ異なるように設定している。これは、接続部52における出力用結線を形成することで実現される。
接続部52はこの範囲を、1段に含まれる複数のALUのうち一方の端部に配置されたALU1から他方の端部に配置されたALU6にかけて徐々にずらして設定している。すなわち、出力線51a_1には、ALU1〜ALU4の範囲に存在するALUから演算結果が出力可能とされる。同様に、出力線51a_2には、ALU2〜ALU5の範囲に存在するALUから演算結果が出力可能とされ、出力線51a_3には、ALU3〜ALU6の範囲に存在するALUから演算結果が出力可能とされる。各出力線は、途中段に含まれるALUの出力データを選択して出力することができる。このように、ALU1からALU6までの間で、データを出力可能とする範囲を徐々にずらしていくことにより、出力用結線の回路規模を抑えつつ、所期のALUがデータを出力することが可能となる。また、4つのALUからの出力を選択する選択器が3つ必要となるだけなので、全てのALUからの出力を選択する場合と比較して、回路規模を小さくすることが可能となる。このように出力経路51aの出力線の本数を減らした場合であっても、図11に示す処理装置10は、図8に示すDFGを1回でマッピングすることができ、したがって全体の処理時間も1クロックですむ。
図13は、内部状態保持回路20および遅延保持回路27の構成の別の例を示す。この例では、途中段からの出力経路51が列ごとに設けられる。内部状態保持回路20のDFFは列ごとに2つずつ設けられる。各列には3個のALUが含まれるが、各列からの出力数を2個以下に制限することで、処理装置10の回路規模を削減できる。なお、出力経路51は、一部の列にのみ設けられてもよく、列を制限することで、処理装置10の回路規模を削減できる。
各列に対応する内部状態保持回路20は、各列に含まれる3つのALUからの演算結果を選択的に出力することのできる2つの3:1マルチプレクサ(MUX)と、それぞれのマルチプレクサからの出力を受け付ける2つのDFFとを備えて構成される。遅延保持回路27は、内部状態保持回路20のDFFに対応して設けられるRAMを備える。したがって、図13に示す内部状態保持回路20においては、12個の3:1マルチプレクサ、12個のDFFが存在し、遅延保持回路27においては、12個のRAMが存在することになる。
代表して、第6列に、各列における結線関係を示す。第1段、第2段、第3段の出力が2つのマルチプレクサに入力される。この出力経路51は、マルチプレクサの機能により、途中段のALUの出力データと最終段のALUの出力データとを選択して出力することができる。マルチプレクサは、制御部18からの選択指示または設定部14における設定データに基づいて、いずれかの段の出力をDFFに供給する。他の第1列から第5列においても、同様の結線関係が形成される。これにより、各列は2つまでのALUの演算結果を出力することが可能となる。
このように出力経路51を形成することで、途中段からの出力が可能となり、また各列あたりの出力数を制限することで、回路規模を削減することが可能となる。図8に示すDFGは、図13の処理装置において1クロックでマッピング可能である。
図14は、内部状態保持回路20および遅延保持回路27の構成の別の例を示す。この例では、途中段からの出力経路51が列ごとに設けられ、途中段からの出力を1列につき1個に制限している。内部状態保持回路20のDFFは列ごとに2つずつ設けられる。各列には3個のALUが含まれるが、第1段および第2段、すなわち途中段からの出力数を1個以下に制限することで、処理装置10の回路規模を削減することができる。
各列に対応する内部状態保持回路20は、各列に含まれる途中段のALUからの演算結果を選択的に出力することのできる2つの2:1マルチプレクサ(MUX)と、それぞれのマルチプレクサからの出力を受け付ける2つのDFFとを備えて構成される。遅延保持回路27は、内部状態保持回路20のDFFに対応して設けられるRAMを備える。したがって、図14に示す内部状態保持回路20においては、6個の2:1マルチプレクサ、12個のDFFが存在し、遅延保持回路27においては、12個のRAMが存在することになる。図13に示す処理装置10と比較すると、マルチプレクサの数が少なくなり、さらにマルチプレクサの規模を小さくすることができる。
代表して、第6列に、各列における結線関係を示す。第1段および第2段の出力が1つのマルチプレクサに入力される。マルチプレクサは、制御部18からの選択指示または設定部14における設定データに基づいて、いずれかの段の出力をDFFに供給する。一方、第3段の出力は、直接DFFに入力される。他の第1列から第5列においても、同様の結線関係が形成される。これにより、各列は2つまでのALUの演算結果を出力することが可能となる。
このように出力経路51を形成することで、途中段からの出力が可能となり、また各列あたりの出力数を制限することで、回路規模を削減することが可能となる。図8に示すDFGは、図14の処理装置において1クロックでマッピング可能である。
図15は、DFGの別の例を示す。このDFGは3段で構成されるため、3段6列のリコンフィギュラブル回路12を使用した場合には、1クロックで処理できることが好ましい。図15に示すDFGでは、第1段において1番左の減算、左から3番目の減算の演算結果が出力される必要がある。
図16は、内部状態保持回路20および遅延保持回路27の構成の別の例を示す。この例では、途中段からの出力経路51が列ごとに設けられ、途中段および最終段からの出力を1列につき1個に制限している。内部状態保持回路20のDFFは列ごとに1つずつ設けられる。各列には3個のALUが含まれるが、各列からの出力数を1個に制限することで、処理装置10の回路規模を削減することができる。
各列に対応する内部状態保持回路20は、各列に含まれるALUからの演算結果を選択的に出力することのできる1つの3:1マルチプレクサ(MUX)と、それぞれのマルチプレクサからの出力を受け付ける1つのDFFとを備えて構成される。遅延保持回路27は、内部状態保持回路20のDFFに対応して設けられるRAMを備える。したがって、図16に示す内部状態保持回路20においては、6個の3:1マルチプレクサ、6個のDFFが存在し、遅延保持回路27においては、6個のRAMが存在することになる。図14に示す処理装置10と比較すると、マルチプレクサの規模は大きくなるものの、DFFおよびRAMの個数を少なくでき、処理装置10の全体としての回路規模を削減できる。
代表して、第6列に、各列における結線関係を示す。第1段、第2段および第3段の出力が1つのマルチプレクサに入力される。マルチプレクサは、制御部18からの選択指示または設定部14における設定データに基づいて、いずれかの段の出力をDFFに供給する。他の第1列から第5列においても、同様の結線関係が形成される。これにより、各列は1つのALUの演算結果を出力することが可能となる。
このように出力経路51を形成することで、途中段からの出力が可能となり、また各列あたりの出力数を制限することで、回路規模を削減することが可能となる。図15に示すDFGは、図16の処理装置において1クロックでマッピング可能である。
上述した途中出力の制限は1回のマッピング、つまり、3段6列のリコンフィギュラブル回路12で構成可能なDFGに関して説明したが、以下に3段6列のALUアレイにDFGをm回マッピングする場合を説明する。
図17は、DFGを4回マッピングする場合の遅延保持回路27の構成を示す。なお、図17には、4回に分けて構成したリコンフィギュラブル回路12の4つの回路を模式的に示している。リコンフィギュラブル回路12から、12本の出力線を有する出力経路51が設けられる。この処理装置10においては、1クロックにつき最大で12個の出力があるため、遅延保持回路27は、12個のRAMを有して構成される。したがって、マッピング4回分、処理時間でいうと4クロック分のリコンフィギュラブル回路12からの出力を格納するために、遅延保持回路27は、4つのアドレスを有して構成される必要がある。
図18は、DFGを4回マッピングする場合の遅延保持回路27の別の構成を示す。なお、図18には、4回に分けて構成したリコンフィギュラブル回路12の4つの回路を模式的に示している。この処理装置10においては、マッピング4回分、処理時間でいうと4クロック分のリコンフィギュラブル回路12からの出力を格納するために、遅延保持回路27は12個のRAMを有して構成される。すなわち、図18に示す処理装置10では、リコンフィギュラブル回路12を複数回再構成したときのリコンフィギュラブル回路12の出力データの個数を所定個以下に制限しており、具体的には、4回のマッピング全体の出力を12個に制限している。図17に示す処理装置10と比較すると、遅延保持回路27におけるRAMの容量を1/4に削減することができる。
地上波デジタル放送の1セグメント受信回路などのように、アプリケーションによっては図17および図18に示した構成に対するDFG総数がほとんど変わらない場合がある。本発明者は、このことを地上波デジタル1セグメント受信で検証した。このような場合、DFGの個数に配慮するよりも、回路削減によるトータルメリットが大きくなるため、リコンフィギュラブル回路12の実装を考えた場合には、出力数を制限して回路規模を低減することが好ましい。
図19は、遅延保持回路27の構成を示す。複数回のマッピングを行う場合、内部状態保持回路20のDFFの出力は、遅延保持回路27の空いているRAMに格納する必要がある。例えば、RAMに1つの格納領域(1つのアドレス)しか設けない場合には、RAMに複数のデータが格納されないようになるため、RAMからの読出時間を速くすることができる。内部状態保持回路20のDFFと遅延保持回路27のRAMとが一対一に対応している場合、遅延保持回路27がX:1マルチプレクサを備えることによって、空き容量のあるRAMにデータを格納することが可能となる。
なお、RAMに1つのアドレスしか設けない場合は、全てのRAMにデータが格納された後、格納されたデータを使用する前に新たに格納したいデータが発生したときは、格納されたデータを使用するDFGが出現するまでnopを用いてDFGをALUアレイ上にマッピングすればよい。これにより、格納されたデータを使用した後、空いたRAMに新たなデータを格納することが可能となる。また、当然のことながら、RAMのアドレスは複数存在していてよい。この場合であっても、遅延保持回路27はX:1マルチプレクサを備えることで、同時にRAMから出力するべき複数のデータを1つのRAMに格納せず、複数のRAMに振り分けることが可能となる。このように、X:1マルチプレクサを備えることで、効率的にRAMの容量を削減でき、さらに処理高速性を実現することも可能となる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する接続用結線は設けられていないが、このような段を飛ばす接続用結線を設ける構成としてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、18・・・制御部、20・・・内部状態保持回路、22・・・出力回路、24・・・第1フィードバック経路、26・・・集積回路装置、27・・・遅延保持回路、29・・・第2フィードバック経路、51・・・出力経路、52・・・接続部、53・・・ALU列。