図1は、実施例に係る処理装置10の構成図である。処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、出力回路22、メモリ部27および経路部24、29を備える。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。
設定部14は、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この意味において、設定データ40はコマンドデータと呼ばれてもよい。経路部24、29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。出力回路22は、例えばデータフリップフロップ(D-FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。メモリ部27は経路部29に接続されている。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
メモリ部27は、制御部18からの指示に基づき、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部27はRAMとして構成される。メモリ部27にデータを書き込んで、そのデータを読み出すためには、少なくとも、それぞれの処理につき1クロック分の時間がかかる。メモリ部27に格納されたデータ信号は、制御部18からの指示に基づいて、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。メモリ部27は、制御部18からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路12に供給することができる。なお、メモリ部27は、設定部14からの指示によりデータ信号を出力してもよい。設定部14がコマンドメモリとして構成されている場合、メモリ部27の出力タイミングを指示するコマンドデータを有し、制御部18からのカウント値に基づいてコマンドデータをメモリ部27に出力してもよい。この場合、設定部14は、メモリ部27の動作を制御する制御部としても機能する。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路(以下、FF回路とも呼ぶ)の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、プログラム全体のデータフローグラフ(DFG)38に変換して記憶部34に格納する。DFG38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、DFG38は、上から下に向かって演算が進むように形成される。
データフローグラフ処理部31は、コンパイル部30により生成された1以上のDFGを、リコンフィギュラブル回路12の論理回路の集合体に含まれる論理回路の数に応じて、複数のサブDFGに分割する。具体的には、1以上のDFGを、リコンフィギュラブル回路12の段あたりの論理回路数、すなわち列数以下となる大きさに分割する。リコンフィギュラブル回路12が6列×3段の論理回路を有して構成される場合、DFGが6列を超えている場合に、列数を6以下とするサブDFGに分割する。
そして、データフローグラフ処理部31は、分割した複数のサブDFGを、論理回路の列数を超えないように結合する。これにより、列数を論理回路の集合体の列数以下とする結合DFGを生成する。
ここで、生成された結合DFGがリコンフィギュラブル回路の論理回路の集合体の個数(論理回路を構成するALUの段数)を超える場合、データフローグラフ処理部31は、更に結合DFGを分割して、複数のサブ結合DFGを生成する。具体的に、データフローグラフ処理部31は、結合したDFGをリコンフィギュラブル回路12の回路の段数以下となるように再分割する。リコンフィギュラブル回路12が6列×3段の論理回路を有して構成される場合、結合したDFGは、3段以下のサブ結合DFGに再分割される。分割した複数のサブ結合DFGは記憶部34に格納される。リコンフィギュラブル回路12に、分割した複数のサブ結合DFGにより定められる回路を繰り返し生成することで、リコンフィギュラブル回路12上に所期の回路を表現することが可能となる。
また、プログラム36の構成上、コンパイルした時点で複数のDFGが生成されることもある。例えば、互いに関連する複数のプログラム36をコンパイルする場合や、繰り返し呼び出されるルーチンプログラムが複数存在するプログラム36をコンパイルする場合などである。処理装置10において、複数のDFGがコンパイル部30により生成され、またコンパイル部30により生成されたDFGをデータフローグラフ処理部31が上述した処理を行うことで、複数のサブ結合DFGが生成される。
設定データ生成部32は、データフローグラフ処理部31により決定されたDFG38をもとに、設定データ40を生成する。設定データ40は、DFG38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。以下では、設定データ生成部32が、1つの生成すべきターゲット回路を分割してできる複数の回路の設定データ40を生成する例について説明する。
図2は、ターゲット回路42を分割してできる複数の回路について説明するための図である。1つのターゲット回路42を分割して生成される回路を、「分割回路」と呼ぶ。この例では、1つのターゲット回路42が、上下方向および左右方向に4つの分割回路、すなわち分割回路A、分割回路B、分割回路C、分割回路Dに分割されている。複数の分割回路は、リコンフィギュラブル回路12の列数の範囲内でそれぞれ結合され、実質的に等価な新たなターゲット回路として再生成されることになる。
例えば、生成すべきターゲット回路42の横方向のノード数がリコンフィギュラブル回路12の横方向のノード数(列数)よりも大きい場合、リコンフィギュラブル回路12にマッピングできる大きさになるように、ターゲット回路42のDFG38がデータフローグラフ処理部31において左右方向に分割される。なおノードは、DFG38において論理回路の機能を表現する。また、リコンフィギュラブル回路12の列数や、ALU間の入出力制限などにより、上下方向のノード間の接続を変更する必要がある場合に、ターゲット回路42のDFG38が上下方向に分割される。リコンフィギュラブル回路12の配列構造は、制御部18からデータフローグラフ処理部31に伝えられてもよく、また予め記憶部34に記録されていてもよい。本実施例において、DFG38は演算間の実行順序の依存関係を表現するものであり、データフローグラフ処理部31は、DFGを、リコンフィギュラブル回路12の列数に応じて分割し、分割したDFGをサブDFGとして設定する。
また、データフローグラフ処理部31は、複数のサブDFGの接続関係を調査する。なお、左右方向のみに分割した場合も同様に、データフローグラフ処理部31は、その接続関係を調査する必要がある。接続関係を調査すると、データフローグラフ処理部31は、接続関係にしたがって、複数のサブDFGを結合し、1つの大きな結合DFGを生成する。なお、この結合DFGは、その列数がリコンフィギュラブル回路12の列数以下となるように生成される。結合したDFGがリコンフィギュラブル回路12の段数よりも大きい場合、データフローグラフ処理部31は結合したDFGを分割して複数のサブ結合DFGを生成する。
設定データ生成部32は、結合DFGの設定データ40を生成し、記憶部34に記憶する。この設定データ40は、結合DFGを、リコンフィギュラブル回路12にマッピングするためのデータとして表現したものである。このように、リコンフィギュラブル回路12の列数に応じてDFGを再構成して、ターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。
なお、データフローグラフ処理部31において複数のサブ結合DFGが生成された場合、設定データ生成部32は、複数のサブ結合DFGの設定データ40を生成し、記憶部34に記憶する。複数の設定データ40は、リコンフィギュラブル回路12の段数以下に分割した複数のサブ結合DFGを、リコンフィギュラブル回路12にマッピングするためのデータとして表現したものである。これにより、リコンフィギュラブル回路12の回路規模よりも大きいDFGを、リコンフィギュラブル回路12にマッピング可能な大きさに処理することが可能となる。即ち、処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図3は、リコンフィギュラブル回路12の構成を示す。リコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路50より構成される論理回路列を複数備える。具体的に、リコンフィギュラブル回路12は、論理回路列の多段接続構造と、各段に設けられた接続部52を備えて構成される。ここで多段とは、2以上の段であることを意味する。接続部52は、前段の論理回路の出力と後段の論理回路の入力の任意の接続関係あるいは予め定められた接続関係の組合せの中から選択された接続関係を設定することができる。また接続部52は、前段の論理回路の出力信号を保持することができる。リコンフィギュラブル回路12では、論理回路の多段接続構造により、上段から下段に向かって演算が進められる。なお、リコンフィギュラブル回路12は、論理回路列の1段の接続構造を有していてもよい。
リコンフィギュラブル回路12は、論理回路50としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と2つの出力端子を有して構成される。
図示のように、リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU1Yには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU2Yに入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、最終段である第X段の接続部52まで同様の構成である。ALU列は、ALUの集合体に相当する。
なお、図3のリコンフィギュラブル回路12においては、接続部52が、ALU列と交互に1段ずつ設けられた構成を示している。この接続部52を各ALU列の下段に配置することにより、リコンフィギュラブル回路12は、1段ずつのALU列から構成されるX段のリコンフィギュラブルユニットに分割されることになる。具体的に、1段のリコンフィギュラブルユニットは、1段のALU列と1段の接続部52で構成される。この分割は、接続部52に含まれるFF回路にしたがうものであり、例えば2段のALU列ごとに接続部52を設け、2段のALU列の間を、FF回路を有しない接続部で接続する場合には、2段ずつのALU列で構成されるX/2段のリコンフィギュラブルユニットに分割されることになる。それ以外にも、FF回路を所定段のALU列ごとに設けることにより、所望段のリコンフィギュラブルユニットを構成することができる。
回路のコンフィギュレーションは1クロックで行われる。具体的に、設定部14が1クロックごとに設定データをリコンフィギュラブル回路12にマッピングする。各ALU列の出力は、後段の接続部52に保持される。なお、メモリ部27へのデータの書込および読出しも、それぞれ1クロックで行われる。したがって、メモリ部27にデータを書き込んで、そのデータを読み出すためには、少なくともALU列2段分の処理に相当する時間が必要となる。
接続部52は、外部やメモリ部27から供給される変数や定数を、所期のALUに供給する機能を有している。この機能を途中入力機能と呼ぶ。また、接続部52は、前段のALUの演算結果を外部に直接出力することもできる。この機能を途中出力機能と呼ぶ。この構成により、多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。
図4は、DFG38の構造を説明するための図である。DFG38においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されており、ノードを表現する。設定データ生成部32は、このDFG38をリコンフィギュラブル回路12にマッピングするための設定データ40を生成する。実施例では、特にDFG38をリコンフィギュラブル回路12にマッピングしきれない場合に、DFG38を複数の領域に分割して結合し、さらに再分割することによって分割回路の設定データ40を生成する。DFG38による演算の流れを回路上で実現するべく、設定データ40は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ40は、各論理回路50の機能を選択するセレクタに供給する選択情報、接続部52の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
図1に戻って、回路の構成時、制御部18は、1つのターゲット回路42を構成するための複数の設定データ40を記憶部34から選択して読み出す。設定部14がコマンドメモリとして構成されている場合、制御部18は設定部14に対してプログラムカウンタ値を与え、設定部14は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路12に設定する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、制御部18が記憶部34から設定データ40を受けて、その設定データ40を設定部14に供給してもよいが、制御部18を介さずに、予め設定部14に設定データを格納しておいてもよい。この場合、制御部18は、設定部14に予め格納された複数の設定データの中からターゲット回路42に応じた設定データがリコンフィギュラブル回路12に供給されるように、設定部14のデータ読出しを制御する。
設定部14は、設定データ40をリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を逐次再構成させる。これにより、リコンフィギュラブル回路12は、ターゲット回路に基づく所期の演算を実行できる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、出力回路22およびメモリ部27に供給される。また制御部18は4進カウンタを含み、カウント信号を設定部14に供給してもよい。
図5は、リコンフィギュラブル回路12におけるALU間の接続関係を示す図である。なお、図5では、ALU列の間に配置される接続部52の図示を省略している。図5に示すリコンフィギュラブル回路12では、横方向に4個、縦方向に6個のALUが配置されたALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU14には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU24に入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で、一定の接続制限が課された接続関係を実現できるように結線が構成されており、設定により、その範囲内での所期の結線が有効となる。なお、第2段から第5段の接続部52においても同様である。最終段である第6段のALU列は演算の最終結果を出力する。接続部52は、ALU段の間で、物理的に近接して配置された論理回路同士を接続可能とするように構成される。これにより、配線長を短くすることができ、回路規模を削減することができる。その結果、低消費電力化及び処理高速化が可能となる。
図5に示すリコンフィギュラブル回路12では、6段×4列のALUが存在し、上段における1つのALUからの配線は、下段の3つのALUに制限される。図示のように、下段における1つのALUの入力は、上段における直上のALUと、直上のALUの左右のALUに制限され、また上段における1つのALUの出力は、下段における直下のALUと、直下のALUの左右のALUに制限される。例えば、ALU22に関してみると、その入力は、ALU11、ALU12、ALU13の3方向に制限され、その出力は、ALU31、ALU32、ALU33の3方向に制限される。なお、左または右に対応するALUが存在しなければ、その入力および出力は、それぞれ2方向に制限される。このような配線とすることにより、上下段の全てのALU間の接続を可能とする場合と比較すると、配線数を大幅に削減することが可能となる。
図6は、データフローグラフ処理部31の構成を示す。データフローグラフ処理部31は、DFG分割部60、サブDFG最適化部61、DFG結合部62を備える。実施例におけるデータフローグラフ処理機能は、処理装置10において、CPU、メモリ、メモリにロードされたDFG処理用プログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。DFG処理用プログラムは、処理装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
DFG分割部60は、コンパイル部30により生成されたDFGが、例えば以下のような場合に該当するような場合、DFGを分割して複数のサブDFGを生成する。
(1)DFGの列数がリコンフィギュラブル回路の1段あたりの論理回路の数よりも大きい場合。即ち、DFGの列数がリコンフィギュラブル回路のALUアレイの列数を超える場合。例えば、DFGが図5のようなリコンフィギュラブル回路12にマッピングされるのであれば、DFGの列数が5以上の場合。
(2)DFGがリコンフィギュラブル回路の接続制限に合致しない場合。例えばDFGが図5のようなリコンフィギュラブル回路12にマッピングされる場合、1つのALUからの配線は下段の3つのALUに制限されるが、マッピングしようとするDFGが、4つ以上のノードに対する出力を行うノードを有しているような場合。
なお、分割して生成されたサブDFG間のノード間を直接的に接続することができない場合、ノードの出力データは、一旦メモリ部27に格納される。
サブDFG最適化部61は、DFG分割部60で生成されたサブDFGの最適化を行う。例えば、生成されたサブDFG間のデータ受渡しが多い場合、それだけメモリ部27の使用量が多くなる。場合によってはメモリ不足によりサブDFG間のデータ受渡しができなくなって、演算そのものが実行不可能となる恐れがある。そこで、サブDFG最適化部61は、例えば、同一内容のデータが同じサブDFG内の複数ノードからメモリへ出力されるような場合があれば、いずれかのノードからのメモリ出力を削除するようにする。そうすることで、サブDFG間のデータ受渡しに使用するメモリの使用量を減らすことができる。これにより、メモリ不足による演算エラーの恐れを減らすことができるし、また、リコンフィギュラブル回路12を備えた集積回路装置26の消費電力を低減することができる。
DFG結合部62は、サブDFG最適化部61により最適化された複数のサブDFGを結合したDFGを生成する。
図7は、本実施例におけるDFG38の処理フローを示す。コンパイル部30がプログラム36をコンパイルして(S10)、DFG38を生成する(S12)。データフローグラフ処理部31のDFG分割部61は、生成されたDFG38を分割してサブDFGを生成する(S14)。サブDFG最適化部62は、分割したサブDFGの最適化を行う(S16)。DFG結合部63は、最適化されたサブDFGを結合してDFGを生成する(S18)。そして、設定データ生成部32は、結合されたDFGをもとに設定データ40を生成する(S20)。
なお、S18においてサブDFGを結合したDFGがリコンフィギュラブル回路の段数を超える場合、結合DFGを分割して複数のサブ結合DFGを生成する。そして、設定データ生成部32は、それぞれのサブ結合DFGをもとに複数の設定データ40を生成する。
(実施例)
以下、実施例を用いて、本願発明についての説明を行う。
図8は、コンパイル部30に入力されるCソースプログラムである。コンパイル部30は、このC言語で記述されたプログラムをコンパイルして、DFGを生成する。図9は、コンパイル部30から出力されるDFGである。このようなDFGを図5で示すような接続制限が課されたリコンフィギュラブル回路12にマッピングすることはできない。なぜなら図9のDFGには、下段の4つのノードへの出力を行っているノード(第1段目の加算ノード)が存在しているのに対し、図5のDFGは、1つのノードからは、下段の3つ以下のノードにしか接続できないという制約が課されているからである。そこで、DFG分割部60は、図9のDFGを図10のような2つのサブDFGに分割することで、下段の4つのノードへの出力を行うノードをなくす。
なお、図10の2つのサブDFGをリコンフィギュラブル回路にマッピングするには、リコンフィギュラブル回路が6段×3列のALUを備えていれば良い。図5のリコンフィギュラブル回路は6段×4列のALUを有しているから、図9のDFGをマッピングすることが可能である。なお、リコンフィギュラブル回路にマッピングされる2つのサブDFG間のデータ受け渡しは、メモリ部29に割り当てられるメモリ領域A、B、Cを介して行われる。
ここで、図10のDFGに着目すると、メモリAに出力されるデータと、メモリBに出力されるデータはスルーノード(movノード)を介して接続されていることに気づく。即ち、メモリAに出力されるデータと、メモリBに出力されるデータは同じ内容である。そこで、メモリAへの出力と、メモリBへの出力のいずれか一方は削除することができる。ここでは、movノードからのメモリBへの出力を削除する。その結果、図10のDFGは、図11のようなDFGに置き換えることができる。これによって、サブDFG間のデータ受け渡しに使用するメモリ使用量を減らすことができる。
図12は、サブDFG最適化部61が行う最適化処理のフローチャートを示したものである。このフローチャートは、サブDFG間のデータ受け渡しに使用されるメモリの使用量を減らす処理手順を示したものである。例えば、上記の図10のDFGから、図11のようなDFGを生成するための手順を示したものである。
サブDFGファイルが読み込まれると、まず、メモリへの出力を行うmovノードの探索を行う(S30)。メモリ出力を行うmovノード(このノードのことをノードMと呼ぶ)があれば(S31のyes)、ステップS32へ進む。ない場合は(S31のno)、サブDFG最適化部61による最適化処理は終了である。
ステップS32では、ノードMの入力ノードを辿り、非movノード(このノードのことをノードPと呼ぶ)の探索を行う。ステップS33では、ノードPが既にメモリ出力(この出力変数をAとする)を有しているかどうかを調べる。メモリ出力を既に有していれば(yesの場合)S38へ進み、有していないのであれば(noの場合)S34へ進む。
ステップS34では、ノードPにメモリ出力Aを作成する。ステップS35では、ノードMのメモリ出力(この出力変数をBとする)を削除する。ステップS36では、出力変数Bを入力とするノードをサーチする。ステップS37では、S36で発見されたノードの入力BをAに変更する。そして、ステップS30へ戻る。
ステップS38では、出力変数Aが最終出力かどうかを判断する。ここで、最終出力とは、サブDFGに分割される前のDFGの出力である。例えば、図9〜図11でいうところの、ret1、ret2のことである。最終出力ではないとは、他のサブDFGへのデータ受け渡しを行うメモリへの出力のことである。例えば、図10でいうところの、メモリA、B、Cへの出力のことである。最終出力であればステップS30へ戻り、最終出力でない場合はステップS35へ進む。
ここで、上記のフローチャートによる処理の具体例を説明する。図10のDFGから図11のDFGが生成される手順を説明する。
まず、図10で示されるようなDFGのファイルが読み込まれる。S30では、メモリBへの出力を行うmovノードMが発見される。S32では、movノードMへの入力を行う加算ノードPが発見される(図13の「状態1」参照)。このノードPは既にメモリ出力Aを持っているので、S33ではyesと判断される。しかし、このメモリ出力Aは、サブDFG間のデータ受け渡しを行うメモリへの出力であり、最終出力ではない。よってS38ではNoと判断され、S35へ進む。このノードPは既にメモリ出力Aを持っているので、S33ではyesと判断される。
S35では、ノードMのメモリ出力Bが削除される。S36では、メモリBからの入力を受けていたノード(図10のmergeノード)が発見される。S37では、このmergeノードへの入力ノードをメモリBからメモリAに変更する。
そして再びS30へ戻るが、メモリ出力を行うmovノードはS35での処理によりなくなっている(movノードからのメモリ出力が削除されている)ため、S31ではNoと判断され、サブDFG最適化処理部61による最適化処理は終了である。
以上、本発明を実施例もとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
また、図1では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。複数のリコンフィギュラブル回路12が存在する場合は、複数のDFGを同時に処理することが可能となり、データ処理時間を短縮することが可能となる。
今回開示された実施形態及び実施例はすべての点で例示であって制限的なものではない。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
例えば、上記実施形態では、リコンフィギュラブル回路にマッピングされるDFGの処理に係るものであったが、この出願明細書において開示した考え方は、他にも適用することが可能である。
例えば、回路遅延を有する集積回路に演算を表すDFGを割り当てる場合において、回路遅延の影響を小さくするために、DFGを複数の小さなサブDFGに分割して集積回路にマッピングすることがある。上記リコンフィギュラブル回路での実施形態と同様、この場合もサブDFG間のデータのやり取りはD/FF(D−フリップフロップ)などのメモリを介して行うこととなるが、やはりサブDFG間のデータ受渡しに必要なメモリの使用量が問題になることがある。そのような場合においても、本願発明のように、サブDFG内の複数ノードから同一内容のデータがメモリの異なる領域へそれぞれ出力される場合は、いずれかのノードからのメモリ出力を削除することにより、メモリ使用量を減らすことができる。このように本願発明は、リコンフィギュラブル回路の設計に限らず、論理回路の設計において広く適用することが可能である。