図1は、実施の形態に係る処理装置10の構成図である。処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、出力回路22、メモリ部27および経路部29を備える。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。
設定部14は、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この意味において、設定データ40はコマンドデータと呼ばれてもよい。経路部29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。メモリ部27は経路部29に接続されている。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
メモリ部27は、制御部18からの指示に基づき、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部27に格納されたデータ信号は、制御部18からの指示に基づいて、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。メモリ部27は、制御部18からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路12に供給することができる。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように形成される。
データフローグラフ処理部31は、コンパイル部30により生成されたデータフローグラフ38を、リコンフィギュラブル回路12の回路規模に応じた大きさに分割する。例えば、リコンフィギュラブル回路12が論理回路を4列×2段に配置した構造である場合、リコンフィギュラブル回路12上に構成すべきターゲット回路の回路規模が4列×8段であれば、データフローグラフ処理部31は、このターゲット回路を2段ごとに分割する。これにより、分割した回路を4列×2段に収めることができ、分割した複数の回路をリコンフィギュラブル回路12上に適切な順序で生成することによって、リコンフィギュラブル回路12上でターゲット回路を表現することが可能となる。同様に、ターゲット回路の回路規模が8列×4段であれば、データフローグラフ処理部31は、このターゲット回路を4列ごとに分割し、さらに2段ごとに分割する。これにより、分割した回路を4列×2段に収めることができ、分割した複数の回路をリコンフィギュラブル回路12上に適切な順序で生成することによって、リコンフィギュラブル回路12上でターゲット回路を表現することが可能となる。分割した複数のデータフローグラフ38は記憶部34に格納される。
また、プログラム36の構成上、コンパイルした時点で複数のデータフローグラフ38が生成されることもある。例えば、互いに関連する複数のプログラム36をコンパイルする場合や、繰り返し呼び出されるルーチンプログラムが複数存在するプログラム36をコンパイルする場合などである。処理装置10において、複数のデータフローグラフ38はコンパイル部30により生成され、またコンパイル部30により生成されたデータフローグラフをデータフローグラフ処理部31が分割することで生成される。
このようにして生成された複数のデータフローグラフ38は、その実行順序が不明であるため、それを適切に定める必要がある。複数のデータフローグラフ38に対して実行順序を任意に設定すると、演算に必要な入力データが揃っていないデータフローグラフ38を実行しなければならない事態も生じ得る。例えば、今回実行するデータフローグラフ38に必要な入力データを生成するためのデータフローグラフ38が、今回実行するデータフローグラフ38の実行順序よりも後にあるような場合には、そのターゲット回路は実現不可能となることもある。また、メモリ部27から必要な入力データを読み出す時間がかかり、その間、データ待ちのために処理を停止するような場合は、短時間でターゲット回路を処理することが困難となる。これは、処理のリアルタイム性、すなわち高速性が要求される場合に、大きな制約となることがある。
以上の理由から、実施の形態のデータフローグラフ処理部31は、複数のデータフローグラフ38を適切に処理する機能をもつ。データフローグラフ処理部31は、複数のデータフローグラフ38の接続関係を調査し、その調査結果に基づいてデータフローグラフ38の実行順序を決定することができる。これにより、データフローグラフ38の実行順序を適切に定めることができ、高速処理要求を満足する処理装置10を実現することが可能となる。また、リコンフィギュラブル回路12の出力はメモリ部27に一旦格納されることになるが、データフローグラフ処理部31は、メモリ部27からのデータ読出待ち時間を少なくするように、メモリ部27におけるデータの格納位置を適切に決定することができる。このようなデータフローグラフ38の処理方法については、図12以降において詳細に説明する。
設定データ生成部32は、データフローグラフ処理部31により決定されたデータフローグラフ38の実行順序およびデータの格納位置をもとに、設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。以下では、設定データ生成部32が、1つのターゲット回路を分割してできる複数の回路の設定データ40を生成する例について説明する。
図2は、1つの生成すべきターゲット回路42を分割してできる複数の回路の設定データ40について説明するための図である。1つのターゲット回路42を分割して生成される回路を、「分割回路」と呼ぶ。この例では、1つのターゲット回路42が、4つの分割回路、すなわち分割回路A、分割回路B、分割回路C、分割回路Dに分割されている。図示のように、ターゲット回路42は上下方向および左右方向に分割されている。特に、生成すべきターゲット回路42がリコンフィギュラブル回路12よりも大きい場合、リコンフィギュラブル回路12にマッピングできる大きさになるように、ターゲット回路42のデータフローグラフ38がデータフローグラフ処理部31において分割される。リコンフィギュラブル回路12の配列構造は、制御部18からデータフローグラフ処理部31に伝えられてもよく、また予め記憶部34に記録されていてもよい。
本実施の形態において、データフローグラフ38は演算間の実行順序の依存関係を表現するものであり、データフローグラフ処理部31は、データフローグラフ38を上から所定の間隔で切り取り、その切り取った回路を分割回路として設定する。演算の実行順序にしたがって切り取る間隔は、リコンフィギュラブル回路12における論理回路の段数以下に定められる。ターゲット回路42のデータフローグラフ38は、上下方向だけでなく、左右方向からも分割される。左右方向に分割する幅は、リコンフィギュラブル回路12における論理回路の1段当たりの個数(列数)以下に定められる。図2は、ターゲット回路42が上下方向と左右方向に分割された状態を示している。このように、上下方向および左右方向に分割した場合、分割されたデータフローグラフ38の接続関係は複雑となるため、データフローグラフ処理部31は、その接続関係を調査して、データフローグラフ38の実行順序を適切に決定する必要がある。なお、上下方向のみ、または左右方向のみに分割した場合も同様に、データフローグラフ処理部31は、その接続関係を調査する必要がある。
以上の手順を実行することにより、設定データ生成部32は、所期の実行順序に配列された複数のデータフローグラフ38の設定データ40を生成し、記憶部34に記憶する。複数の設定データ40は、分割回路Aを構成するための設定データ40a、分割回路Bを構成するための設定データ40b、分割回路Cを構成するための設定データ40c、および分割回路Dを構成するための設定データ40dである。既述のごとく、複数の設定データ40は、1つのターゲット回路42を分割した複数の分割回路をそれぞれ表現したものである。このように、リコンフィギュラブル回路12の回路規模に応じて、生成すべきターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、実施の形態の処理装置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を生成する。実施の形態では、特にデータフローグラフ38をリコンフィギュラブル回路12にマッピングしきれない場合に、データフローグラフ38を複数の領域に分割して、分割回路の設定データ40を生成する。データフローグラフ38による演算の流れを回路上で実現するべく、設定データ40は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ40は、各論理回路50の機能を選択するセレクタに供給する選択情報、接続部52の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
図1に戻って、回路の構成時、制御部18は、1つのターゲット回路42を構成するための複数の設定データ40を記憶部34から選択して読み出す。ここでは制御部18が、図2に示すターゲット回路42を構成するための設定データ40、すなわち分割回路Aの設定データ40a、分割回路Bの設定データ40b、分割回路Cの設定データ40cおよび分割回路Dの設定データ40dを記憶部34から読み出し、設定部14に供給する。設定部14は、各設定データ40を格納する。
設定部14がコマンドメモリとして構成されている場合、制御部18は設定部14に対してプログラムカウンタ値を与え、設定部14は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路12に設定する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、本例においては、制御部18が記憶部34から設定データ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に供給してもよい。
<リコンフィギュラブル回路の動作の説明>
以下では、図6から図11を用いて、リコンフィギュラブル回路12による回路構成機能の基本動作の説明を行う。以下に示すリコンフィギュラブル回路12の基本動作を前提として、かかるリコンフィギュラブル回路12の動作設定に必要なデータフローグラフの処理方法を図12以降の図面を用いて説明する。
図6は、前後7点を利用する7タップからなるFIRフィルタ回路を示す。以下、このFIR(Finite Impulse Response)フィルタ回路を、実施の形態における処理装置10で実現する具体例を示す。このFIRフィルタ回路の係数は、図示のごとく、対称に設定されている。
図7は、図6で示すFIRフィルタ回路を置き換えた回路を示す。回路の置き換えは、フィルタ係数の対称性を利用している。
図8は、図7で示す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内において非常に小さいスペースで形成することができる。
図9は、図8に示すFIRフィルタ回路をコンパイルして作成したデータフローグラフ38aを示す。図中、“+”は加算を示し、“>>1”は1ビットのシフトを示し、“MOV”はスルー用のパスを示す。図示のごとく、データフローグラフ38aは、7段の演算子で構成される。
図10は、以下の実施例で使用するリコンフィギュラブル回路12を示す。実施例では、リコンフィギュラブル回路12が、4列2段のALUを含んで構成される。
図11は、図9に示すデータフローグラフ38aを、図10のリコンフィギュラブル回路12を用いて実現する例を示す。データフローグラフ38aが4列7段で構成され、リコンフィギュラブル回路12が2段で構成されていることから、データフローグラフ38aは、上下方向に4つに分割される。なお、左右方向については、リコンフィギュラブル回路12の列数が、データフローグラフ38aの列数以下であるため、分割する必要はない。なお、ここではリコンフィギュラブル回路12の列数とデータフローグラフ38aの列数とが等しい場合が示されている。分割したデータフローグラフは、リコンフィギュラブル回路12上に1クロックで構成されることが可能である。
まず、設定部14が、データフローグラフ38aの第1段および第2段の内容を、第1設定データによりリコンフィギュラブル回路12上に構成する。これにより、第1分割回路がリコンフィギュラブル回路12に構成される。続いて、設定部14が、データフローグラフ38aの第3段および第4段の内容を、第2設定データによりリコンフィギュラブル回路12上に構成する。これにより、第2分割回路がリコンフィギュラブル回路12に構成される。続いて、設定部14が、データフローグラフ38aの第5段および第6段の内容を、第3設定データによりリコンフィギュラブル回路12上に構成する。これにより、第3分割回路がリコンフィギュラブル回路12に構成される。最後に、設定部14が、データフローグラフ38aの第7段および第8段(MOV)の内容を、第4設定データによりリコンフィギュラブル回路12上に構成する。これにより、第4分割回路がリコンフィギュラブル回路12に構成される。第1分割回路から第3分割回路における出力結果は、次の分割回路の入力としてフィードバックされる。
この例において、ALUは、“+”、“>>1”、“MOV”の3種類のみで実現することができる。複数ビットのシフトを、1ビットシフタを複数回利用することにより表現することとしたため、必要とされるALUの機能を非常に少なくすることができる。これにより、リコンフィギュラブル回路12の回路規模を小さくできる。なお、当然のことながら、図7に示すデータフローグラフをリコンフィギュラブル回路12上に構成することも可能である。
<データフローグラフの処理機能の説明>
図12は、実施の形態におけるメモリ部27の構成を示す。メモリ部27は複数のRAM(ランダムアクセスメモリ)1、RAM2、・・・、RAMzにより構成される。各RAMは、リコンフィギュラブル回路12の出力データをリコンフィギュラブル回路12の入力にフィードバックするために出力データを記憶する記憶部として存在し、制御部18からの書込コマンドまたは読出コマンドに基づいて、データの書込および読出を行う機能をもつ。各RAMは、複数の記憶領域を有する。この例では、RAMnが、アドレスn1〜nkに記憶領域を有しており、各アドレスにデータを記憶することができる。他のRAMについても同様である。RAMのデータの書込および読出は、W/Rイネーブル信号およびアドレス信号が制御部18より供給されることによって行われるが、1つのRAMからは、1回にコマンドにつき、1つのデータの書込または読出しか実行することはできない。以下では、1つのコマンドが1クロックで供給できるものとし、したがって、1クロックで1つのデータの書込または読出を実行可能であることを前提とする。なお、データの書込/読出にかかる時間は、他の所定の時間であってよい。
任意のターゲット回路をリコンフィギュラブル回路12で表現する場合、どのようなデータフローグラフ38が生成されるかは不明であり、メモリ部27において保持すべきリコンフィギュラブル回路12の出力の数は、ターゲット回路によって様々である。そのため、予め十分な数のRAMを用意しておき、各RAMには1つのデータの記憶領域しか設けないことで、全てのデータの書込または読出を1クロックで実行できるようにメモリ部27を構成することも可能である。
しかしながら、RAMの数が多くなると、RAMへの書込または読出に必要なスイッチの回路規模が大きくなる。大きなスイッチは、回路規模の縮小化の障害となる。したがって、スイッチおよびRAMの回路規模をトータルで縮小することが好ましい。
そのような事情のもと、本発明者は、図12に示すように、各RAMに複数の記憶領域をもたせることで、全体の回路規模を減縮できることを見出した。RAMのデータの書込または読出は1クロックで1つのデータしか扱えないため、処理装置10の高速性を追求するためには、データを格納するRAMを適切に定める必要がある。実施の形態では、1つのRAMが、実質的に同じタイミングでリコンフィギュラブル回路12に読み出されるべきデータを複数個もたないように、および/または実質的に同じタイミングでリコンフィギュラブル回路12から書き込まれるべきデータが複数個存在しないように、データを格納するRAMを決定する。以上の処理は、データフローグラフ処理部31により行われる。なお、以上の処理を実行するためには、データフローグラフの入出力関係、すなわち複数のデータフローグラフの接続関係が定まっていることが必要となる。
図13は、データフローグラフ処理部31の構成を示す。データフローグラフ処理部31は、DFG分割部60、接続関係調査部61、実行順序決定部62、RAM決定部63およびDFG情報生成部64を備える。実施の形態におけるデータフローグラフ処理機能は、処理装置10において、CPU、メモリ、メモリにロードされたDFG処理用プログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。DFG処理用プログラムは、処理装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
DFG分割部60は、コンパイル部30により生成されたデータフローグラフ38を、リコンフィギュラブル回路12の回路規模に応じた大きさに分割する。分割されたデータフローグラフ38は、リコンフィギュラブル回路12上にマッピングできる大きさとされる。DFG分割部60は、分割したデータフローグラフ38を記憶部34に格納する。
接続関係調査部61は、複数のデータフローグラフ38の接続関係を調査する。ここで調査するデータフローグラフ38は、DFG分割部60において分割された複数のデータフローグラフである。なお別の例として、所定の処理を実行するためのプログラムが複数存在し、コンパイル部30が複数のプログラムをコンパイルして、複数のデータフローグラフ38を生成した場合は、これらの複数のデータフローグラフ38の接続関係が、接続関係調査部61によって調査される。
例えば、あるデータフローグラフ38bの出力が別のデータフローグラフ38cの入力に必要とされる場合、データフローグラフ38bの出力がデータフローグラフ38cの入力と接続する関係にあることが定められる。接続関係調査部61は、このようなデータフローグラフ間の接続関係を調査する。
実行順序決定部62は、接続関係調査部61による調査結果に基づいて、複数のデータフローグラフ38の実行順序を決定する。実行順序決定部62は、複数のデータフローグラフ38における入力と出力の関係をもとに実行順序を決定する。具体的に、実行順序決定部62は、データフローグラフ38bの出力とデータフローグラフ38cの入力とが接続される関係に基づいて、データフローグラフ38bをデータフローグラフ38cよりも前に実行することを定める。
なお、あるデータフローグラフ38dが、データフローグラフ38bおよびデータフローグラフ38cとの間でデータを入出力する必要がない場合、データフローグラフ38dは、データフローグラフ38bとデータフローグラフ38cの実行順序とは関係なく、独立して実行することも可能である。
しかしながら、既述したように、各データフローグラフ38に対応する設定データ40に基づいてリコンフィギュラブル回路12上に構成された回路の出力は、一旦、メモリ部27におけるRAMに格納されることになる。そのため、データフローグラフ38bの出力をデータフローグラフ38cの入力に供給するためには、RAMからのデータ読出しのための時間が必要となる。
そこで、実行順序決定部62は、RAMからのデータ読出待ちの時間を短くするように、複数のデータフローグラフ38の実行順序を決定することが好ましい。接続関係の調査結果によると、データフローグラフ38dは、データフローグラフ38bおよびデータフローグラフ38cとの間で入出力に依存関係はなく、並列処理可能であることが分かる。この関係を利用すると、RAMからのデータ読出時間の間にデータフローグラフ38dを実行することで、リコンフィギュラブル回路12上で回路の再構成を継続して実行することができ、処理時間を短縮することができる。このような理由から、実行順序決定部62は、実行順序を、データフローグラフ38b、データフローグラフ38d、データフローグラフ38cの順に設定し、これにより処理期間におけるデータ読出待ちの時間を少なくする、又はなくすことができる。データの読出待ちの時間が少なくなることで、消費電力が少なくてすみ、またコマンドデータのデータ量が削減されるため、回路規模が縮小されるという利点がある。
具体的に説明すると、各データフローグラフ38に対応するリコンフィギュラブル回路12の処理は1クロックで行われる。データフローグラフ38bの出力をRAMに格納して、RAMからデータフローグラフ38cに読み出すのに1クロック必要となるが、その間に並列処理可能なデータフローグラフ38dを実行することによって、データ読出しとデータフローグラフ38dの処理とを同時に実行することが可能となる。これにより、データ読出待ちの時間がなくなり、処理時間の短縮を図ることが可能となる。
このように、実行順序決定部62は、リコンフィギュラブル回路12の動作時に、リコンフィギュラブル回路12からフィードバックされる出力データを、新たに構成するリコンフィギュラブル回路12の入力に読み出すときの待ち時間を少なくするように、実行順序を決定する。一つの例として、実行順序決定部62は、まだ実行順序が確定していないデータフローグラフを選択し、選択したデータフローグラフに対して出力データを供給しないデータフローグラフの後に、選択したデータフローグラフの実行順序を割り当てるようにしてもよい。これにより、データフローグラフ間でデータ読出しの待ち時間が発生する状態を回避することができる。
RAM決定部63は、データを格納するRAMを決定する。この例では、次回以降にリコンフィギュラブル回路12に構成される回路に対して同時に出力する必要のある2つ以上のデータを、1つのRAMに格納せず、複数のRAMにおいて1つずつ格納することによって、データ読出しに複数クロック必要となる事態を回避することができる。これにより、データ読出待ちの時間を必要最小限とし、処理時間の短縮を図ることが可能となる。また、複数のデータを複数のRAMから同時に読み出すことができるため、並列処理が可能となり、消費電力が少なくてすむとともに、コマンドデータのデータ量が削減されるため、回路規模が縮小されるという利点がある。また、RAM決定部63は、今回のリコンフィギュラブル回路12から同じタイミングで出力されるデータが1つのRAMに複数個書き込まれることのないように、データを格納するRAMを決定する。すなわちRAM決定部63は、実質的に同じタイミングで出力される他のデータが書き込まれない記憶部を探索し、データを格納するRAMを決定する。同じタイミングで出力されるデータを1つのRAMに書き込まないことにより、データの書込待ち時間を減らすことができ、読出待ちが長くなる可能性を低減することができる。
このように、RAM決定部63は、リコンフィギュラブル回路12の入力にフィードバックされるリコンフィギュラブル回路12の出力データの読出しによる待ち時間を少なくするように、および/または実質的に同じタイミングでリコンフィギュラブル回路12から出力されるデータが1つのRAMに複数個書き込まれることのないように、出力データを記憶するRAMを決定する。一つの例として、RAM決定部63は、複数のRAMのうち、実質的に同じタイミングで読み出される出力データが存在しないRAMを探索し、探索したRAMを出力データの記憶先として決定してもよい。これにより、出力データを複数のRAMから同時に読み出すことが可能となる。また、RAM決定部63は、複数のRAMのうち、リコンフィギュラブル回路12から実質的に同じタイミングで出力される出力データが存在しないRAMを探索し、探索したRAMを出力データの記憶先として決定してもよい。これにより、読出し時に、1つのRAMから複数のデータを読み出す事態を回避できる。
なお、RAM決定部63は、接続関係調査部61による調査結果をもとにデータの格納するRAMを決定できるが、実行順序決定部62により決定された実行順序をもとにデータを格納するRAMを決定してもよい。RAM決定部63および実行順序決定部62における処理は、それぞれ独立してもデータ読出待ちに関する時間を短縮することができるが、互いに協同して処理を行うことで、データ読出待ちの時間を好適に短縮することが可能となる。
DFG情報生成部64は、実行順序決定部62により決定されたデータフローグラフ38の実行順序の情報、および、RAM決定部63においてデータ格納するように決定されたRAMの情報を含んだDFG情報を生成する。このDFG情報は、記憶部34に格納され、また設定データ生成部32に直接供給される。設定データ生成部32は、記憶部34に格納された複数のデータフローグラフ38、および、記憶部34に格納され又はデータフローグラフ処理部31から供給されたDFG情報をもとに、各データフローグラフ38に対応する設定データ40を生成する。なお、図1に示す処理装置10では、制御部18がメモリ部27を制御することとしているが、ここではRAMの情報もDFG情報に含めて、設定データ40を作成することとしている。これにより、メモリ部27の動作は、設定部14により供給される設定データ40(コマンドデータ)により制御されることも可能となる。
図14は、データフローグラフ38の処理フローを示す。コンパイル部30がプログラム36をコンパイルして(S10)、データフローグラフ38を生成する(S12)。データフローグラフ処理部31は、生成されたデータフローグラフ38をリコンフィギュラブル回路12の回路規模に応じた大きさに分割し(S14)、分割した複数のデータフローグラフの接続関係を調査する(S16)。
データフローグラフ処理部31は、データフローグラフ38の接続関係をもとに、複数のデータフローグラフ38の実行順序を決定する(S18)。また、データフローグラフ処理部31は、データフローグラフ38の接続関係をもとに、各データフローグラフ38の出力を格納するべきRAMを決定する(S20)。設定データ生成部32は、S18において決定されたデータフローグラフの実行順序をもとに設定データ40を生成する。なお既述したように、設定データ生成部32は、S20において決定されたRAMに関するDFG情報も用いて、設定データ40を生成してもよい。この場合、メモリ部27の動作が、設定部14より供給される設定データ40(コマンドデータ)により制御可能となる。設定データ40はリコンフィギュラブル回路12の機能および接続関係などを設定し、リコンフィギュラブル回路12は、設定データ40により各種機能を設定されることで、所期の回路処理を実行することができる。
(DFG接続関係の決定)
図15は、6つのデータフローグラフの入出力を示す。ここでは、DFG1a、DFG2a、DFG3a、DFG4a、DFG5a、DFG6aの6つのデータフローグラフの入出力が示されている。この状態では、各DFGの入出力は判明しているものの、DFG間の接続関係については不明である。接続関係調査部61は、これら6つのデータフローグラフの接続関係を調査する。以下、図16および図17を参照して、データフローグラフの接続関係を調査するフローを説明する。
図16は、データフローグラフの接続関係を調査して決定するフローを示す。まず、6個のDFG1a〜DFG6aを、作成した順にソートする(S101)。作成した順とは、C言語で記述されたソースプログラムを上から切り出した順や、またソースプログラムをコンパイルして作成したデータフローグラフをリコンフィギュラブル回路12の回路規模に合わせて切り出した順などである。データフローグラフを作成した順にソートするのは、データフローグラフが上から処理される傾向をもつため、作成した順がデータフローグラフの実行順序に近いという予測に基づいている。なお、必ずしも作成順にソートする必要はなく、任意の順にソートするものであってもよい。ここでは、DFG1a、DFG3a、DFG5a、DFG2a、DFG4a、DFG6aの順にソートするものとする。
iに1を設定し、mをDFGの総数、すなわち6に設定する(S102)。i番目のDFGを選択し(S103)、そのDFGの段数がすでに決定しているかどうかを判定する(S104)。すでに段数が決定している場合には(S104のY)、iを1インクリメントし(S105)、S103とS104の処理を繰り返す。ここでは、ソート順の1番目に対応するDFG1aの段数が決定していないため(S104のN)、DFG1aを1段目に配置する(S106)。続いて、nを、i番目のDFGの出力データの総数に設定する(S107)。DFG1aの出力データの総数はtempA1、tempA2の2つであるため、nが2に設定される。jを1に設定し(S108)、i番目のDFGのj個目の出力データを選択して(S109)、pをj個目の出力データを入力しているDFGの総数に設定する(S110)。ここでは、まずDFG1aの2つの出力データのうちのtempA1を選択して、tempA1を入力しているDFG2a、DFG3aを抽出する。したがってpは2となる。
kを1に設定して(S111)、j個目の出力データを入力しているk個目のDFGを選択する(S112)。ここでは、まず1個目の出力データ(tempA1)を入力している1個目のDFG2aを選択する。ここで、DFG2aに対して、段数決定処理を実行する(S113)。この段数決定処理は、再帰的に呼び出されるルーチンとなる。
図17は、図16の接続関係決定フローにおいて再帰的に呼び出される段数決定ルーチンのフローを示す。まず、段数を決めるDFG(DFGdef)を入力する(S130)。ここでDFGdefはDFG2aである。Iを、DFGdefの入力データを出力しているDFGで、かつ既に段数が決定しているDFGの中で最下段のDFGの段数とする(S131)。ここでは、DFG1aが1段目に配置されているだけなので、Iが1に設定される。DFGdefを(I+1)段目に配置し(S132)、NをDFGdefの出力データの総数に設定する(S133)。したがって、DFG2aが2段目に配置され、DFG2aの出力データの総数1がNに設定される。なお、DFG2aの出力データはtempB1である。
Jを1に設定し(S134)、J個目の出力データを選択する(S135)。続いて、PをJ個目の出力データを入力しているDFGの総数に設定する(S136)。tempB1を入力しているのは、DFG5aのみであり、したがってPは1に設定される。
Kを1に設定し(S137)、K個目のDFGを選択する(S138)。ここでは、DFG5aが選択されることになる。続いて、DFGの段数決定処理を再帰的に呼び出す(S138)。S138において呼び出した段数決定処理では、DFG2aの出力データを入力するDFG5aについて同様の処理を行うことになる。なお、DFG2aに関する処理の説明を続けると、S139の段数決定処理が終了した後、K=Pであるか否かを判定し(S140)、K=Pでなければ(S140のN)、Kを1インクリメントして(S141)、S138、S139の処理を繰り返し、K=Pになれば(S140の)、J=Nであるか否かを判定し(S142)、J=Nでなければ(S142のN)、Jを1インクリメントして(S143)、S135〜S140までの処理を繰り返し、J=Nであれば(S142のY)、段数決定処理を終了して、図16に示すフローに戻る。DFG2aに関していうと、P=1であり、またN=1であるため、S140、S142でループを戻ることなく、段数決定処理が終了する。
S139の再帰的な段数決定処理を呼び出す処理について説明する。既述したように、S139では、DFG5aについて、段数決定処理が実行されることになる。S131において、DFG5aの入力データを出力しているDFGは、DFG2aとDFG3aであるが、すでに段数が決定しているDFGの中で最下段のものは2段目に配置されたDFG2aであるため、Iは2に設定される。したがって、S133にて、DFG5aが3段目に配置されることになる。以下、同様にしてS139の段数決定処理を呼び出し、DFG5aの出力tempE1を入力とするDFG6aが4段目に配置される。DFG6aの出力は最終出力のみであるため、段数決定処理は一旦終了し、図16のフローのS114に戻る。
k=pであるか否かを判定し(S114)、k=pでなければ(S114のN)、kを1インクリメントして(S115)、S112、S113の処理を実行する。ここでは、k=1、p=2であるため、kを2に設定して(S115)、tempA1を入力している残りのDFG3aを選択し(S112)、既述した段数決定処理を実行する(S113)。段数決定処理により、DFG3aは、2段目に配置される。段数決定処理では、DFG3aの出力データの行き先はDFG5aであり、DFG2aに関する段数決定処理において既に3段目に配置されているが、このDFG5aについても再度、段数決定処理を実行する。結果として、DFG2aおよびDFG3aが2段目に配置されることになり、DFG5aは、3段目の配置を維持することになる。なお、例えばDFG3aの段数決定処理において、仮にDFG3aが3段目に配置されることが決定された場合には、DFG5aは、前回の段数決定処理において3段目の配置と決定されてはいるが、DFG3aの配置段のために4段目に再配置されることになる。
以上により、DFG1aが1段目、DFG2a、DFG3aが2段目、DFG5aが3段目、DFG6aが4段目に配置される。続いて、j=nであるかどうかを判定し(S116)、j=nでなければ(S116のN)、jを1インクリメントして(S117)、S109からの処理を再実行し、j=nであれば(S116のY)、i=mであるかどうかを判定し(S118)、i=mでなければ(S118のN)、iを1インクリメントして(S119)、S103からの処理を再実行し、i=mであれば(S118のY)、本フローが終了する。
ここでは、j=1、n=2であるので、jを2に設定して(S117)、tempA2を入力しているDFG4aを選択し(S109)、S110以降の処理を実行する。以降の処理により、DFG4aは2段目に配置されることになる。S118では、i=1、m=6であるため、S103およびS104を実行するが、全てのDFGの段数が決定されているため、本フローが終了する。
図18は、接続関係調査部61により決定された6つのデータフローグラフの接続関係を示す。この接続関係図は、処理の流れを上段から下段にかけて示す。この接続関係を把握することにより、データフローグラフの実行順序を適切に定めることが可能となり、また各データフローグラフを格納するRAMを適切に定めることが可能となる。
(DFG実行順序の決定)
続いて、DFG接続関係図の1段目から順に実行するDFGの実行順序を決定する。その際、次に実行するDFGの入力データがメモリ部27のRAMからの読出待ちを必要とするかを調べ、必要であればそのDFGは後ろの順序にまわし、他の同段に配置される並列処理可能なDFGで、データの読出待ちを必要としないものを先に実行するように順序を決める。
図19(a)は、DFG接続関係図の一例を示す。DFG1bの出力がDFG3bおよびDFG4bの入力に接続し、DFG2bの出力がDFG3bの入力に接続している。
図19(b)は、実行順序を、DFG1b、DFG2b、DFG3b、DFG4bの順に設定した場合を示す。この場合、DFG2bとDFG3bとを連続して実行すると、DFG3bの入力に必要なDFG2bの出力データをRAMから読み出す時間が必要となる。そのため、DFG2bの実行後、1クロックのデータ読出時間を経てDFG3bがはじめて実行される。処理時間を短縮するためには、このデータの読出時間がデータフローグラフの処理実行時間に加算されないことが好ましい。以下、図19(a)に示すDFG接続関係図をもとに、データフローグラフの実行順序を決定するフローを説明する。
図20は、データフローグラフの実行順序決定のフローを示す。まず、i=1、j=1を設定する(S201)。次に、最上段(i=1)のDFGからひとつのDFGを選択し、最初(j=1)に実行するDFGに設定する(S202)。ここでは、DFG1bを最初に実行するDFGに設定する。jを1インクリメントし(S203)、i段目にまだ処理していないDFGがあるかどうかを判定する(S204)。未処理のDFGが存在しない場合はiを1インクリメントする(S205)。続いて、i段目のDFGから1つの未処理のDFGを選択する(S206)。ここでは、1段目のDFG2bが選択される。
続いて、(j−n)番目から(j−1)番目までのDFGの出力データが、S206にて選択したDFGの入力となっているかどうかを判定する(S207)。なお、nはALUからデータが出力され、次にALUに入力可能となるまでの時間であり、データ読出時間に相当する。なお、データの読出時間は、後述するRAMへの格納方法にもよるが、ここではデータの読出時間が必要最小限の1クロック(n=1)であるとする。(j−n)番目から(j−1)番目までのDFGの出力データが、S206にて選択したDFGの入力となっている場合は(S207のY)、i段目の別のDFGから1つのDFGを選択して(S208)、S207の判定を行い、入力となっていない場合は(S207のN)、S206で選択したDFGをj番目に実行するDFGとする(S209)。DFG1bとDFG2bの間には、入出力の依存関係がないため(S207のN)、DFG2bが2番目に実行するDFGと設定される。
なお、S208にて、i段目の別のDFGがなければ、例外処理1として、上段のi−1段目に戻って、選択をし直す。また、すべての実行順序を調べてもデータ待ちが発生する場合は、例外処理2として、最小の待ち時間となる実行順序を選択する。
実行順序を決定していないDFGが存在する場合(S210のN)、S203以降の処理を繰り返す。図19(a)の接続関係図を参照すると、この時点で、1段目の全てのDFGの実行順序を決定したため(S204のN)、S205にて2段目のDFGの実行順序を決定する処理に移る。
S206にて、DFG3bを選択して、S207の判定を行う。j=3、n=1(データ読出時間を1クロックと設定)であり、DFG3bについて、2(=j−n)番目から2(=j−1)番目までのDFGの出力データが入力となっているかを検討すると、2番目のDFG2bの出力データが入力となっているため、DFG2bの次にDFG3bを実行すると、データ待ちが発生することが判明する。したがって、S208にて、3番目に実行するDFGとして、DFG4bを選びなおす。DFG4bは、DFG3bと異なり、2番目のDFG2bの出力データを入力としないため、DFG2bの次にDFG4bを実行しても、データ待ちが発生しないことが判明する。このように、DFG4bに対して出力データを供給しないDFG2bの後に、DFG4bの実行順序を割り当てることで、データ待ちを回避することが可能となる。以上のアルゴリズムにより、S209にて、DFG4bが3番目に実行するDFGとして決定される。この処理を繰り返し、最後にDFG3bが4番目に実行するDFGとして決定され、すべてのDFGの実行順序が決定されると(S210のY)、本フローが終了する。以上の手順にしたがうと、DFG1b、DFG2b、DFG4b、DFG3bの順に実行することで、データ待ちが発生することなく、データ処理時間を短縮することが可能となる。
図21(a)は、DFG接続関係図の別の例を示す。DFG1cの出力がDFG4cの入力に接続し、DFG2cの出力がDFG3cおよびDFG4cの入力に接続している。
図21(b)は、実行順序を、DFG1c、DFG2c、DFG3c、DFG4cの順に設定した場合を示す。この場合、DFG2cとDFG3cとを連続して実行すると、DFGの処理過程において、DFG3cの入力に必要なDFG2cの出力データをRAMから読み出す時間が必要となる。そのため、DFG2cの実行後、1クロックのデータ読出時間を経てDFG3cがはじめて実行される。処理時間を短縮するためには、このデータの読出時間がデータフローグラフの処理実行時間に加算されないことが好ましい。
図20に示したデータフローグラフ実行順序決定フローを利用して、図21(a)に示した4つのDFGの実行順序を決定する。S202で、DFG1cを最初に実行するDFGとして選択すると、DFG1c、DFG2cの順序が決定した後、DFG2cの後に、DFG3cまたはDFG4cのいずれを配置した場合であっても、S207においてデータ待ちが発生することになる。したがって、この場合は例外処理1を実行し、最初に実行するDFGをDFG2cに変更して、再度、実行順序を決定していく。その結果、DFG2c、DFG1c、DFG3c、DFG4cの実行順序が決定される。この順序で実行することで、データ待ちが発生することなく、データ処理時間を短縮することが可能となる。
(RAMの格納処理)
図22(a)は、DFG接続関係図の一例を示す。DFG1dの出力データ(tempF1、tempF2)のうち、tempF1がDFG3dの入力データとして利用され、tempF2がDFG4dの入力データとして利用される。また、DFG2dの出力データ(tempG1、tempG2)のうち、tempG1がDFG4dの入力データとして利用され、tempG2がDFG3dおよびDFG4dの入力データとして利用されている。
図22(b)は、DFG1dおよびDFG2dの実行順序にしたがって、それぞれの出力データをRAM1およびRAM2に格納した状態を示す。この例では単純に、DFG1dの出力データをRAM1とRAM2に格納し、DFG2dの出力データをRAM1とRAM2に格納する。このようにRAMに格納した場合、DFG4dは、tempF2、tempG1、tempG2の3つの入力データを必要とするが、tempF2とtempG2とは同一のRAM2に格納されているため、読出しに2クロックが必要となる。この読出時間を短縮することができれば、全体のデータ処理時間を短縮することができる。
以下、図22(a)に示すDFG接続関係図をもとに、データ処理時間を短縮するように、データを格納するRAMの決定処理を実行するフローを説明する。各DFGにおいて、入力される全データがすべて別のRAMに格納され、かつ出力される全データもすべて別のRAMに格納されるように、DFGの入出力データのRAMへの格納先を決定する。
図23は、データを格納するRAMを決定するフローを示す。まず、DFGごとにRAMから入力されるデータを取得し(S301)、入力データ数の多いDFG順にソートする(S302)。図22(a)に示す接続関係図から、DFG3dの入力データがtempF1、tempG2であり、DFG4dの入力データがtempF2、tempG1、tempG2である。DFG1dとDFG2dは、外部からの入力のみであり、RAMからの入力を不要としているため対象外である。入力の多い順にソートすると、DFG4d、DFG3dの順となる。
iを1に設定し、mをDFGの総数とする(303)。まずi番目のDFGを選択し(S304)、nをi番目のDFGの入力データの総数に設定する(S305)。1番目のDFG4dの入力データの総数は3である。jを1に設定し(S306)、i番目のDFGのj番目の入力データを選択する(S307)。ここでは、まず、DFG4dのtempF2を選択する。j番目の入力データを格納するRAMがすでに決定されている場合(S308のY)、重複するデータを格納する必要がないため、S322の処理に移行する。格納するRAMが未決定の場合(S308のN)、kを1に設定する(S309)。kはRAMの番号を示す。tempF2については、まだ格納するRAMが決定されていないため、S309以降の処理を実行する。
データを格納するRAMを決定するためには、S310〜S312の条件が満足される必要がある。具体的に、RAMを決定するためには、i番目のDFGの別のデータを格納するRAMがk番目のRAMに決定されていないこと(S310のN)、ALUからの出力時に同時に出力される別のデータを格納するRAMがk番目のRAMに決定されていないこと(S311のN)、k番目のRAMにデータを格納可能な容量が残っていること(S312のY)が満たされる必要がある。S310では、複数のRAMのうち、実質的に同じタイミングで読み出される出力データが存在しないRAMを探索している。またS311では、複数のRAMのうち、リコンフィギュラブル回路12から実質的に同じタイミングで出力される出力データが存在しないRAMを探索している。
さらに、ソート順で今調べているi番目のDFG以降のDFGで入力に同じデータがある場合には(S313のY)、それらすべてが格納しようとするRAMに対して、S310、S311、S312の条件を満たしていることが必要となる。なお、i番目のDFG以降のDFGで入力に同じデータがない場合には(S313のN)、データを格納するRAMをk番目のRAMに決定する(S321)。
i番目のDFG以降のDFGで入力に同じデータがある場合(S313のY)、pをi番目以降のDFGで同じデータがあるDFGの総数に設定し(S314)、mを1に設定して(S315)、i番目以降のDFGで同じデータがあるDFGのうちm番目のDFGを選択し(S316)、i番目以降のm番目のDFGでk番目のRAMに格納することが決定されたデータがあるかどうかを調べる(S317)。複数のDFGで同じデータを利用する場合、RAMに格納した1つのデータを複数のDFGで共用することが好ましい。これにより、全体のRAMの記憶領域を削減できるとともに、処理装置10の回路規模を縮小することができる。
したがって、i番目以降のm番目のDFGに同じデータがある場合に、そのデータをk番目のRAMに格納して共用することが好ましいが、同一の趣旨から、m番目のDFGが、i番目以前のDFGと同じデータをもつ場合、これまでのRAM決定処理において、そのデータをk番目のRAMに格納することが既に決定されていることもあり得る。m番目のDFGを実行するときにk番目のRAMからは1つのデータしか読み出せないため、m番目のDFGで使用するデータを重複してk番目のRAMに格納することは好ましくない。そのため、S317では、k番目のRAMに、m番目のDFGのデータを格納することが既に決定されているか否かを調査している。
i番目以降のm番目のDFGでk番目のRAMに格納することが決定されたデータがない場合(S317のN)、m=pであるかどうかを判定し(S319)、m=pでなければ(S319のN)、mを1インクリメントして(S320)、S316、S317の処理を繰り返す。
i番目のDFGの別のデータを格納するRAMがk番目のRAMに決定されている場合(S310のY)、ALUからの出力時に同時に出力される別のデータを格納するRAMがk番目のRAMに決定されている場合(S311のY)、k番目のRAMにデータを格納可能な容量が残っていない場合(S312のN)、または、i番目以降のm番目のDFGでk番目のRAMに格納することが決定されたデータがある場合(S317のY)、k番目のRAMには格納することができないことを判断し、kを1インクリメントして(S318)、S310からの処理を繰り返す。
i番目のDFG以降のDFGで入力に同じデータがない場合(S313のY)、またはm=pとなる場合(S319)、データを格納するRAMをk番目のRAMに決定する(S321)。以上の処理により、DFG4dの入力データとなるtempF2を格納するRAMがRAM1に決定される。
j=nでなければ(S322のN)、jを1インクリメントして(S323)、S307からの処理を実行する。なお、DFG4dの入力データの総数nは3である。DFG4dの2番目の入力データをtempG1とすると、S308以降の処理により、tempG1を格納するRAMがRAM2に決定される。同様に、tempG2を格納するRAMがRAM3に決定される。この時点で、j=nとなるため(S322のY)、次に、i=mであるかどうかを判定する(S324)。i=mでない場合(S324のN)、iを1インクリメントして(S325)、S304の処理に戻る。S305では、2番目のソート順にあたるDFG3dが選択される。
次に、DFG3dの入力データを格納するRAMを決定する処理を行う。S308において、DFG3dのtempG2については、DFG4dに関する処理において既にRAM3に格納されることが決定されているため、S308からS322の処理に移行する。最後に、tempF1のRAM決定処理について説明する。
S311において、DFG1dからの出力時に同時に出力されるtempF2がRAM1に格納されているため、tempF2をRAM1に格納することはできない。RAM2は、S310、S311、S313、S317の4つの条件を満足するため、tempF2を格納するRAMは、RAM2に決定される。なお、RAM3においては、DFG3dの入力データであるtempG2が格納されることが決定されているため、tempF1をRAM3に格納することもできない。以上により、tempF1を格納するRAMがRAM2に決定される。
他のDFG、すなわちDFG1dおよびDFG2dについては、RAMから入力されるデータを必要としないため、DFG3dの入力データの格納RAMを定めると、本フローが終了する。
図24は、各RAMに格納するデータを示す。以上の処理によりデータを格納するRAMを決定することで、各DFGに対してRAMからのデータ読出時間を1クロックに抑えることができ、データ読出待ち時間の少ないデータ処理を実行することが可能となる。データの読出待ちが少なくなるため、消費電力が少なくてすみ、またコマンドデータのデータ量が削減されるために、コマンドメモリの回路規模も小さくすることができる。
なお、RAMに効率的にデータを格納することによって、データフローグラフの実行順序も効率的に定めることが可能となる。データを格納するRAMの決定処理と、データフローグラフの実行順序の決定処理は、互いに独立して実行してもデータ待ち時間を少なくする又はなくす効果を得ることができるが、互いに協同して実行することで、より一層の効果を期待することができる。
以上、本発明を実施の形態もとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
また、図1では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。例えば、図17に示すような接続関係図が生成された場合であっても、接続関係図により並列処理可能なDFGが分かるため、3つのリコンフィギュラブル回路12が存在する場合は、2段目の3つのDFGを同時に処理することが可能となり、データ処理時間を短縮することが可能となる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、18・・・制御部、26・・・集積回路装置、27・・・メモリ部、30・・・コンパイル部、31・・・データフローグラフ処理部、32・・・設定データ生成部、34・・・記憶部、36・・・プログラム、38・・・データフローグラフ、40・・・設定データ、50・・・論理回路、52・・・接続部、60・・・DFG分割部、61・・・接続関係調査部、62・・・実行順序決定部、63・・・RAM決定部。