(57)【要約】【課題】  機能の変更が可能なリコンフィギュラブル回路を有する処理装置を提供する。【解決手段】  本発明の処理装置は、複数のデータフローグラフを処理するデータフローグラフ処理部３１を備える。データフローグラフ処理部３１において、接続関係調査部６１が、複数のデータフローグラフの接続関係を調査する。実行順序決定部６２は、接続関係の調査結果に基づいて、複数のデータフローグラフの実行順序を決定する。実行順序決定部６２は、リコンフィギュラブル回路の出力を入力にフィードバックする際に、出力データを格納したＲＡＭからのデータ読出に伴う待ち時間が少なくなるように、データフローグラフの実行順序を決定する。また、ＲＡＭ決定部６３は、リコンフィギュラブル回路の出力データを格納するＲＡＭを決定する。このとき、ＲＡＭからのデータ読出に伴う待ち時間が少なくなるようにＲＡＭが決定される。【選択図】図１３
2005258593.tif 000002
【特許請求の範囲】
【請求項１】
機能の変更が可能なリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する方法であって、
処理の動作を記述した動作記述をもとに、演算間の実行順序の依存関係を表現する複数のデータフローグラフを生成するステップと、
生成した複数のデータフローグラフの接続関係を調査するステップと、
を備えることを特徴とするデータフローグラフ処理方法。
【請求項２】
接続関係の調査結果に基づいて、データフローグラフの実行順序を決定するステップをさらに備えることを特徴とするデータフローグラフ処理方法。
【請求項３】
実行順序を決定するステップは、複数のデータフローグラフにおける入力と出力の関係をもとに実行されることを特徴とする請求項２に記載のデータフローグラフ処理方法。
【請求項４】
実行順序を決定するステップは、リコンフィギュラブル回路の動作時に、当該リコンフィギュラブル回路からフィードバックされる出力データを新たに構成するリコンフィギュラブル回路の入力に読み出すときの待ち時間を少なくするように実行されることを特徴とする請求項２または３に記載のデータフローグラフ処理方法。
【請求項５】
実行順序を決定するステップは、
まだ実行順序が確定していないデータフローグラフを選択するステップと、
選択したデータフローグラフに対して出力データを供給しないデータフローグラフの後に、選択したデータフローグラフの実行順序を割り当てるステップと、
を有することを特徴とする請求項２から４のいずれかに記載のデータフローグラフ処理方法。
【請求項６】
リコンフィギュラブル回路の出力データをリコンフィギュラブル回路の入力にフィードバックするために、リコンフィギュラブル回路の前記出力データを記憶する複数の記憶部が存在する場合に、
リコンフィギュラブル回路の入力にフィードバックされる前記出力データの読み出しによる待ち時間を少なくするように、前記出力データを記憶する記憶部を決定するステップとをさらに備えることを特徴とする請求項１から５のいずれかに記載のデータフローグラフ処理方法。
【請求項７】
記憶部を決定するステップは、
複数の記憶部のうち、実質的に同じタイミングで読み出される前記出力データが存在しない記憶部を探索するステップと、
探索した記憶部を前記出力データの記憶先として決定するステップと、
を有することを特徴とする請求項６に記載のデータフローグラフ処理方法。
【請求項８】
記憶部を決定するステップは、
複数の記憶部のうち、リコンフィギュラブル回路から実質的に同じタイミングで出力される他の出力データが存在しない記憶部を探索するステップと、
探索した記憶部を前記出力データの記憶先として決定するステップと、
を有することを特徴とする請求項６に記載のデータフローグラフ処理方法。
【請求項９】
機能の変更が可能なリコンフィギュラブル回路と、
前記リコンフィギュラブル回路に、複数のデータフローグラフの接続関係を調査して実行順序を定めたデータフローグラフをもとに生成された設定データを供給する設定部と、
前記リコンフィギュラブル回路に複数の設定データを順次供給するように前記設定部を制御する制御部と、
を備えることを特徴とする処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機能の変更が可能なリコンフィギュラブル回路に関し、特にリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する技術に関する。
【背景技術】
【０００２】
近年、アプリケーションに応じてハードウェアの動作を変更可能なリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサを実現するためのアーキテクチャとしては、ＤＳＰ(Digital Signal Processor)や、ＦＰＧＡ(Field Programmable Gate Array)を用いる方法が存在する。
【０００３】
ＦＰＧＡ（Field Programmable Gate Array）はＬＳＩ製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウエアの設計に利用されている。ＦＰＧＡは、論理回路の真理値表を格納するためのルックアップテーブル（ＬＵＴ）と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。ＦＰＧＡでは、ＬＵＴに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、ＦＰＧＡでＬＳＩを設計した場合、ＡＳＩＣ（Application Specific IC）による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、ＦＰＧＡを動的に再構成することで、回路構成の再利用を図る方法が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開平１０−２５６３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば衛星放送では、季節などにより、放送モードを切り替えて画質の調整などを行うこともある。受信機では、放送モードごとに複数の回路を予めハードウェア上に作り込んでおき、放送モードに合わせて選択器で回路を切り替えて受信している。したがって、受信機の他の放送モード用の回路はその間、遊んでいることになる。モード切り替えのように、複数の専用回路を切り替えて使用し、その切り替え間隔が比較的長い場合、複数の専用回路を作り込む代わりに、切り替え時にＬＳＩを瞬時に再構成することにすれば、回路構造をシンプルにして汎用性を高め、同時に実装コストを抑えることができる。このようなニーズに応えるべく、動的に再構成可能なＬＳＩに製造業界の関心が集まっている。特に、携帯電話やＰＤＡ（Personal Data Assistance）などのモバイル端末に搭載されるＬＳＩは小型化が必須であり、ＬＳＩを動的に再構成し、用途に合わせて適宜機能を切り替えることができれば、ＬＳＩの実装面積を抑えることができる。
【０００５】
ＦＰＧＡは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのＯＮ／ＯＦＦを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向があり、さらに１本の配線に多くのスイッチが接続される構造のため、遅延が大きくなる。そのため、ＦＰＧＡによるＬＳＩは、試作や実験のために利用されるにとどまることが多く、実装効率、性能、コストなどを考えると、量産には適していない。さらに、ＦＰＧＡでは、多数のＬＵＴ方式の基本セルに構成情報を送る必要があるため、回路のコンフィグレーションにはかなりの時間がかかる。そのため、瞬時に回路構成の切り替えが必要な用途にはＦＰＧＡは適していない。
【０００６】
それらの課題を解決するため、近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を多段に並べたＡＬＵアレイの検討が行われるようになった。ＡＬＵアレイでは、処理が上から下の一方向に流れるので、水平方向のＡＬＵを結ぶ配線は基本的には不要である。そのため、ＦＰＧＡと比較して回路規模を小さくすることが可能となる。
【０００７】
ＡＬＵアレイでは、コマンドデータによりＡＬＵ回路の演算機能構成と前後段のＡＬＵを接続する接続部の配線が制御され、所期の演算処理を実行することができる。コマンドデータは、一般にＣ言語等の高級プログラム言語で記述されたソースプログラムからデータフローグラフ（ＤＦＧ：Data Flow Graph）を作成し、その情報をもとに作成される。
【０００８】
ＤＦＧの大きさはＡＬＵアレイの回路規模により制限されるため、大きなＤＦＧは複数のＤＦＧに分割する必要がある。分割した場合、複数のＤＦＧの実行順序を決定する必要があるが、任意に実行順序を決定すると、入力データが揃っていないＤＦＧについては、実行ができないこともあり、また実行が可能であっても入力データが揃うまでに時間がかかって、処理の高速性が損なわれる事態も生じうる。
【０００９】
本発明はこうした状況に鑑みてなされたもので、その目的は、効率よくデータフローグラフの実行順序を定めるなどの処理を行うことのできる技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のある態様は、機能の変更が可能なリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する方法に関する。この方法は、処理の動作を記述した動作記述をもとに、演算間の実行順序の依存関係を表現する複数のデータフローグラフを生成するステップと、生成した複数のデータフローグラフの接続関係を調査するステップとを備える。この方法によると、複数のデータフローグラフの接続関係を調査することで、データフローグラフの実行順序を定めることが可能となる。
【００１１】
本発明の別の態様は、機能の変更が可能なリコンフィギュラブル回路と、リコンフィギュラブル回路に、複数のデータフローグラフの接続関係を調査して実行順序を定めたデータフローグラフをもとに生成された設定データを供給する設定部と、リコンフィギュラブル回路に複数の設定データを順次供給するように設定部を制御する制御部とを備える処理装置を提供する。この処理装置によると、複数のデータフローグラフの接続関係に基づいて定められた実行順序にしたがって生成された設定データを利用するため、適切な順序でリコンフィギュラブル回路を再構成することが可能となり、所期の演算処理を実行することができる。リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。
【００１２】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、リコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する技術を提供することができる。
【発明を実施するための最良の形態】
【００１４】
図１は、実施の形態に係る処理装置１０の構成図である。処理装置１０は、集積回路装置２６を備える。集積回路装置２６は、回路構成を再構成可能とする機能を有する。集積回路装置２６は１チップとして構成され、リコンフィギュラブル回路１２、設定部１４、制御部１８、出力回路２２、メモリ部２７および経路部２９を備える。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。
【００１５】
設定部１４は、リコンフィギュラブル回路１２に所期の回路を構成するための設定データ４０を供給する。設定部１４は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部１８がプログラムカウンタの出力を制御する。この意味において、設定データ４０はコマンドデータと呼ばれてもよい。経路部２９は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。出力回路２２は、例えばデータフリップフロップ（Ｄ−ＦＦ）などの順序回路として構成され、リコンフィギュラブル回路１２の出力を受ける。メモリ部２７は経路部２９に接続されている。リコンフィギュラブル回路１２は組合せ回路または順序回路等の論理回路として構成される。
【００１６】
メモリ部２７は、制御部１８からの指示に基づき、リコンフィギュラブル回路１２から出力されるデータ信号および／または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部２７に格納されたデータ信号は、制御部１８からの指示に基づいて、経路部２９を通じてリコンフィギュラブル回路１２の入力として伝達される。メモリ部２７は、制御部１８からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路１２に供給することができる。
【００１７】
リコンフィギュラブル回路１２は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部１４により供給される設定データ４０に基づいて設定される。設定データ４０は、以下の手順で生成される。
【００１８】
集積回路装置２６により実現されるべきプログラム３６が、記憶部３４に保持されている。プログラム３６は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイル部３０は、記憶部３４に格納されたプログラム３６をコンパイルし、データフローグラフ（ＤＦＧ）３８に変換して記憶部３４に格納する。データフローグラフ３８は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ３８は、上から下に向かって演算が進むように形成される。
【００１９】
データフローグラフ処理部３１は、コンパイル部３０により生成されたデータフローグラフ３８を、リコンフィギュラブル回路１２の回路規模に応じた大きさに分割する。例えば、リコンフィギュラブル回路１２が論理回路を４列×２段に配置した構造である場合、リコンフィギュラブル回路１２上に構成すべきターゲット回路の回路規模が４列×８段であれば、データフローグラフ処理部３１は、このターゲット回路を２段ごとに分割する。これにより、分割した回路を４列×２段に収めることができ、分割した複数の回路をリコンフィギュラブル回路１２上に適切な順序で生成することによって、リコンフィギュラブル回路１２上でターゲット回路を表現することが可能となる。同様に、ターゲット回路の回路規模が８列×４段であれば、データフローグラフ処理部３１は、このターゲット回路を４列ごとに分割し、さらに２段ごとに分割する。これにより、分割した回路を４列×２段に収めることができ、分割した複数の回路をリコンフィギュラブル回路１２上に適切な順序で生成することによって、リコンフィギュラブル回路１２上でターゲット回路を表現することが可能となる。分割した複数のデータフローグラフ３８は記憶部３４に格納される。
【００２０】
また、プログラム３６の構成上、コンパイルした時点で複数のデータフローグラフ３８が生成されることもある。例えば、互いに関連する複数のプログラム３６をコンパイルする場合や、繰り返し呼び出されるルーチンプログラムが複数存在するプログラム３６をコンパイルする場合などである。処理装置１０において、複数のデータフローグラフ３８はコンパイル部３０により生成され、またコンパイル部３０により生成されたデータフローグラフをデータフローグラフ処理部３１が分割することで生成される。
【００２１】
このようにして生成された複数のデータフローグラフ３８は、その実行順序が不明であるため、それを適切に定める必要がある。複数のデータフローグラフ３８に対して実行順序を任意に設定すると、演算に必要な入力データが揃っていないデータフローグラフ３８を実行しなければならない事態も生じ得る。例えば、今回実行するデータフローグラフ３８に必要な入力データを生成するためのデータフローグラフ３８が、今回実行するデータフローグラフ３８の実行順序よりも後にあるような場合には、そのターゲット回路は実現不可能となることもある。また、メモリ部２７から必要な入力データを読み出す時間がかかり、その間、データ待ちのために処理を停止するような場合は、短時間でターゲット回路を処理することが困難となる。これは、処理のリアルタイム性、すなわち高速性が要求される場合に、大きな制約となることがある。
【００２２】
以上の理由から、実施の形態のデータフローグラフ処理部３１は、複数のデータフローグラフ３８を適切に処理する機能をもつ。データフローグラフ処理部３１は、複数のデータフローグラフ３８の接続関係を調査し、その調査結果に基づいてデータフローグラフ３８の実行順序を決定することができる。これにより、データフローグラフ３８の実行順序を適切に定めることができ、高速処理要求を満足する処理装置１０を実現することが可能となる。また、リコンフィギュラブル回路１２の出力はメモリ部２７に一旦格納されることになるが、データフローグラフ処理部３１は、メモリ部２７からのデータ読出待ち時間を少なくするように、メモリ部２７におけるデータの格納位置を適切に決定することができる。このようなデータフローグラフ３８の処理方法については、図１２以降において詳細に説明する。
【００２３】
設定データ生成部３２は、データフローグラフ処理部３１により決定されたデータフローグラフ３８の実行順序およびデータの格納位置をもとに、設定データ４０を生成する。設定データ４０は、データフローグラフ３８をリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。以下では、設定データ生成部３２が、１つのターゲット回路を分割してできる複数の回路の設定データ４０を生成する例について説明する。
【００２４】
図２は、１つの生成すべきターゲット回路４２を分割してできる複数の回路の設定データ４０について説明するための図である。１つのターゲット回路４２を分割して生成される回路を、「分割回路」と呼ぶ。この例では、１つのターゲット回路４２が、４つの分割回路、すなわち分割回路Ａ、分割回路Ｂ、分割回路Ｃ、分割回路Ｄに分割されている。図示のように、ターゲット回路４２は上下方向および左右方向に分割されている。特に、生成すべきターゲット回路４２がリコンフィギュラブル回路１２よりも大きい場合、リコンフィギュラブル回路１２にマッピングできる大きさになるように、ターゲット回路４２のデータフローグラフ３８がデータフローグラフ処理部３１において分割される。リコンフィギュラブル回路１２の配列構造は、制御部１８からデータフローグラフ処理部３１に伝えられてもよく、また予め記憶部３４に記録されていてもよい。
【００２５】
本実施の形態において、データフローグラフ３８は演算間の実行順序の依存関係を表現するものであり、データフローグラフ処理部３１は、データフローグラフ３８を上から所定の間隔で切り取り、その切り取った回路を分割回路として設定する。演算の実行順序にしたがって切り取る間隔は、リコンフィギュラブル回路１２における論理回路の段数以下に定められる。ターゲット回路４２のデータフローグラフ３８は、上下方向だけでなく、左右方向からも分割される。左右方向に分割する幅は、リコンフィギュラブル回路１２における論理回路の１段当たりの個数（列数）以下に定められる。図２は、ターゲット回路４２が上下方向と左右方向に分割された状態を示している。このように、上下方向および左右方向に分割した場合、分割されたデータフローグラフ３８の接続関係は複雑となるため、データフローグラフ処理部３１は、その接続関係を調査して、データフローグラフ３８の実行順序を適切に決定する必要がある。なお、上下方向のみ、または左右方向のみに分割した場合も同様に、データフローグラフ処理部３１は、その接続関係を調査する必要がある。
【００２６】
以上の手順を実行することにより、設定データ生成部３２は、所期の実行順序に配列された複数のデータフローグラフ３８の設定データ４０を生成し、記憶部３４に記憶する。複数の設定データ４０は、分割回路Ａを構成するための設定データ４０ａ、分割回路Ｂを構成するための設定データ４０ｂ、分割回路Ｃを構成するための設定データ４０ｃ、および分割回路Ｄを構成するための設定データ４０ｄである。既述のごとく、複数の設定データ４０は、１つのターゲット回路４２を分割した複数の分割回路をそれぞれ表現したものである。このように、リコンフィギュラブル回路１２の回路規模に応じて、生成すべきターゲット回路４２の設定データ４０を生成することにより、汎用性の高い処理装置１０を実現することが可能となる。別の視点からみると、実施の形態の処理装置１０によれば、回路規模の小さいリコンフィギュラブル回路１２を用いて、所望の回路を再構成することが可能となる。
【００２７】
図３は、リコンフィギュラブル回路１２の構成の一例を示す。リコンフィギュラブル回路１２は、複数の論理回路５０の列が複数段にわたって配列されたもので、各段に設けられた接続部５２によって、前段の論理回路列の出力と後段の論理回路列の入力が設定により任意に接続可能な構造となっている。ここでは、論理回路５０の例としてＡＬＵを示す。各ＡＬＵは、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ＡＬＵは、複数の演算機能を選択するためのセレクタを有している。
【００２８】
図示のように、リコンフィギュラブル回路１２は、横方向にＹ個、縦方向にＸ個のＡＬＵが配置されたＡＬＵアレイとして構成される。第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１Ｙには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第１段の接続部５２に設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２Ｙに入力される。第１段の接続部５２においては、第１段のＡＬＵ列の出力と第２段のＡＬＵ列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、第（Ｘ−１）段の接続部５２まで、同様の構成であり、最終段である第Ｘ段のＡＬＵ列は演算の最終結果を出力する。
【００２９】
図４は、リコンフィギュラブル回路１２の構成の別の例を示す。図４に示すリコンフィギュラブル回路１２は、図３に示すリコンフィギュラブル回路１２の機能をさらに拡張している。図４に示すリコンフィギュラブル回路１２において、接続部５２は、前後段のＡＬＵ列の接続関係を定めるだけでなく、外部から入力される変数や定数を、所期のＡＬＵに供給する機能を有している。また、接続部５２は、前段のＡＬＵの演算結果を外部に直接出力することもできる。この構成により、図３に示されるリコンフィギュラブル回路１２の構成よりも多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。
【００３０】
図５は、データフローグラフ３８の構造を説明するための図である。データフローグラフ３８においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されている。設定データ生成部３２は、このデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングするための設定データ４０を生成する。実施の形態では、特にデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングしきれない場合に、データフローグラフ３８を複数の領域に分割して、分割回路の設定データ４０を生成する。データフローグラフ３８による演算の流れを回路上で実現するべく、設定データ４０は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ４０は、各論理回路５０の機能を選択するセレクタに供給する選択情報、接続部５２の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
【００３１】
図１に戻って、回路の構成時、制御部１８は、１つのターゲット回路４２を構成するための複数の設定データ４０を記憶部３４から選択して読み出す。ここでは制御部１８が、図２に示すターゲット回路４２を構成するための設定データ４０、すなわち分割回路Ａの設定データ４０ａ、分割回路Ｂの設定データ４０ｂ、分割回路Ｃの設定データ４０ｃおよび分割回路Ｄの設定データ４０ｄを記憶部３４から読み出し、設定部１４に供給する。設定部１４は、各設定データ４０を格納する。
【００３２】
設定部１４がコマンドメモリとして構成されている場合、制御部１８は設定部１４に対してプログラムカウンタ値を与え、設定部１４は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路１２に設定する。なお、設定部１４は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、本例においては、制御部１８が記憶部３４から設定データ４０を受けて、その設定データを設定部１４に供給する構成について説明するが、制御部１８を介さずに、予め設定部１４に設定データを格納しておいてもよい。この場合、制御部１８は、設定部１４に予め格納された複数の設定データの中からターゲット回路４２に応じた設定データがリコンフィギュラブル回路１２に供給されるように、設定部１４のデータ読出しを制御する。
【００３３】
設定部１４は、設定データ４０をリコンフィギュラブル回路１２に設定し、リコンフィギュラブル回路１２の回路を逐次再構成させる。これにより、リコンフィギュラブル回路１２は、所期の演算を実行できる。リコンフィギュラブル回路１２は、基本セルとして高性能の演算能力のあるＡＬＵを用いており、またリコンフィギュラブル回路１２および設定部１４を１チップ上に構成することから、コンフィグレーションを高速に、例えば１クロックで実現することができる。制御部１８はクロック機能を有し、クロック信号は、出力回路２２およびメモリ部２７に供給される。また制御部１８は４進カウンタを含み、カウント信号を設定部１４に供給してもよい。
【００３４】
＜リコンフィギュラブル回路の動作の説明＞
以下では、図６から図１１を用いて、リコンフィギュラブル回路１２による回路構成機能の基本動作の説明を行う。以下に示すリコンフィギュラブル回路１２の基本動作を前提として、かかるリコンフィギュラブル回路１２の動作設定に必要なデータフローグラフの処理方法を図１２以降の図面を用いて説明する。
【００３５】
図６は、前後７点を利用する７タップからなるＦＩＲフィルタ回路を示す。以下、このＦＩＲ（Finite Impulse Response）フィルタ回路を、実施の形態における処理装置１０で実現する具体例を示す。このＦＩＲフィルタ回路の係数は、図示のごとく、対称に設定されている。
【００３６】
図７は、図６で示すＦＩＲフィルタ回路を置き換えた回路を示す。回路の置き換えは、フィルタ係数の対称性を利用している。
【００３７】
図８は、図７で示すＦＩＲフィルタ回路をさらに置き換えた回路を示す。ここでは、フィルタ係数に着目した置き換えを行っている。具体的には、係数1/16を1/2×1/2×1/2×1/2に、2/16を1/2×1/2×1/2に、8/16を1/2に置き換えている。係数1/2の演算はデータを右に１ビットシフトすることで実現できる。１ビットシフタは、複数ビットシフタと比べて、ＡＬＵ内において非常に小さいスペースで形成することができる。
【００３８】
図９は、図８に示すＦＩＲフィルタ回路をコンパイルして作成したデータフローグラフ３８ａを示す。図中、“＋”は加算を示し、“＞＞１”は１ビットのシフトを示し、“ＭＯＶ”はスルー用のパスを示す。図示のごとく、データフローグラフ３８ａは、７段の演算子で構成される。
【００３９】
図１０は、以下の実施例で使用するリコンフィギュラブル回路１２を示す。実施例では、リコンフィギュラブル回路１２が、４列２段のＡＬＵを含んで構成される。
【００４０】
図１１は、図９に示すデータフローグラフ３８ａを、図１０のリコンフィギュラブル回路１２を用いて実現する例を示す。データフローグラフ３８ａが４列７段で構成され、リコンフィギュラブル回路１２が２段で構成されていることから、データフローグラフ３８ａは、上下方向に４つに分割される。なお、左右方向については、リコンフィギュラブル回路１２の列数が、データフローグラフ３８ａの列数以下であるため、分割する必要はない。なお、ここではリコンフィギュラブル回路１２の列数とデータフローグラフ３８ａの列数とが等しい場合が示されている。分割したデータフローグラフは、リコンフィギュラブル回路１２上に１クロックで構成されることが可能である。
【００４１】
まず、設定部１４が、データフローグラフ３８ａの第１段および第２段の内容を、第１設定データによりリコンフィギュラブル回路１２上に構成する。これにより、第１分割回路がリコンフィギュラブル回路１２に構成される。続いて、設定部１４が、データフローグラフ３８ａの第３段および第４段の内容を、第２設定データによりリコンフィギュラブル回路１２上に構成する。これにより、第２分割回路がリコンフィギュラブル回路１２に構成される。続いて、設定部１４が、データフローグラフ３８ａの第５段および第６段の内容を、第３設定データによりリコンフィギュラブル回路１２上に構成する。これにより、第３分割回路がリコンフィギュラブル回路１２に構成される。最後に、設定部１４が、データフローグラフ３８ａの第７段および第８段（ＭＯＶ）の内容を、第４設定データによりリコンフィギュラブル回路１２上に構成する。これにより、第４分割回路がリコンフィギュラブル回路１２に構成される。第１分割回路から第３分割回路における出力結果は、次の分割回路の入力としてフィードバックされる。
【００４２】
この例において、ＡＬＵは、“＋”、“＞＞１”、“ＭＯＶ”の３種類のみで実現することができる。複数ビットのシフトを、１ビットシフタを複数回利用することにより表現することとしたため、必要とされるＡＬＵの機能を非常に少なくすることができる。これにより、リコンフィギュラブル回路１２の回路規模を小さくできる。なお、当然のことながら、図７に示すデータフローグラフをリコンフィギュラブル回路１２上に構成することも可能である。
【００４３】
＜データフローグラフの処理機能の説明＞
図１２は、実施の形態におけるメモリ部２７の構成を示す。メモリ部２７は複数のＲＡＭ（ランダムアクセスメモリ）１、ＲＡＭ２、・・・、ＲＡＭｚにより構成される。各ＲＡＭは、リコンフィギュラブル回路１２の出力データをリコンフィギュラブル回路１２の入力にフィードバックするために出力データを記憶する記憶部として存在し、制御部１８からの書込コマンドまたは読出コマンドに基づいて、データの書込および読出を行う機能をもつ。各ＲＡＭは、複数の記憶領域を有する。この例では、ＲＡＭｎが、アドレスｎ１〜ｎｋに記憶領域を有しており、各アドレスにデータを記憶することができる。他のＲＡＭについても同様である。ＲＡＭのデータの書込および読出は、Ｗ／Ｒイネーブル信号およびアドレス信号が制御部１８より供給されることによって行われるが、１つのＲＡＭからは、１回にコマンドにつき、１つのデータの書込または読出しか実行することはできない。以下では、１つのコマンドが１クロックで供給できるものとし、したがって、１クロックで１つのデータの書込または読出を実行可能であることを前提とする。なお、データの書込／読出にかかる時間は、他の所定の時間であってよい。
【００４４】
任意のターゲット回路をリコンフィギュラブル回路１２で表現する場合、どのようなデータフローグラフ３８が生成されるかは不明であり、メモリ部２７において保持すべきリコンフィギュラブル回路１２の出力の数は、ターゲット回路によって様々である。そのため、予め十分な数のＲＡＭを用意しておき、各ＲＡＭには１つのデータの記憶領域しか設けないことで、全てのデータの書込または読出を１クロックで実行できるようにメモリ部２７を構成することも可能である。
【００４５】
しかしながら、ＲＡＭの数が多くなると、ＲＡＭへの書込または読出に必要なスイッチの回路規模が大きくなる。大きなスイッチは、回路規模の縮小化の障害となる。したがって、スイッチおよびＲＡＭの回路規模をトータルで縮小することが好ましい。
【００４６】
そのような事情のもと、本発明者は、図１２に示すように、各ＲＡＭに複数の記憶領域をもたせることで、全体の回路規模を減縮できることを見出した。ＲＡＭのデータの書込または読出は１クロックで１つのデータしか扱えないため、処理装置１０の高速性を追求するためには、データを格納するＲＡＭを適切に定める必要がある。実施の形態では、１つのＲＡＭが、実質的に同じタイミングでリコンフィギュラブル回路１２に読み出されるべきデータを複数個もたないように、および／または実質的に同じタイミングでリコンフィギュラブル回路１２から書き込まれるべきデータが複数個存在しないように、データを格納するＲＡＭを決定する。以上の処理は、データフローグラフ処理部３１により行われる。なお、以上の処理を実行するためには、データフローグラフの入出力関係、すなわち複数のデータフローグラフの接続関係が定まっていることが必要となる。
【００４７】
図１３は、データフローグラフ処理部３１の構成を示す。データフローグラフ処理部３１は、ＤＦＧ分割部６０、接続関係調査部６１、実行順序決定部６２、ＲＡＭ決定部６３およびＤＦＧ情報生成部６４を備える。実施の形態におけるデータフローグラフ処理機能は、処理装置１０において、ＣＰＵ、メモリ、メモリにロードされたＤＦＧ処理用プログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。ＤＦＧ処理用プログラムは、処理装置１０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
【００４８】
ＤＦＧ分割部６０は、コンパイル部３０により生成されたデータフローグラフ３８を、リコンフィギュラブル回路１２の回路規模に応じた大きさに分割する。分割されたデータフローグラフ３８は、リコンフィギュラブル回路１２上にマッピングできる大きさとされる。ＤＦＧ分割部６０は、分割したデータフローグラフ３８を記憶部３４に格納する。
【００４９】
接続関係調査部６１は、複数のデータフローグラフ３８の接続関係を調査する。ここで調査するデータフローグラフ３８は、ＤＦＧ分割部６０において分割された複数のデータフローグラフである。なお別の例として、所定の処理を実行するためのプログラムが複数存在し、コンパイル部３０が複数のプログラムをコンパイルして、複数のデータフローグラフ３８を生成した場合は、これらの複数のデータフローグラフ３８の接続関係が、接続関係調査部６１によって調査される。
【００５０】
例えば、あるデータフローグラフ３８ｂの出力が別のデータフローグラフ３８ｃの入力に必要とされる場合、データフローグラフ３８ｂの出力がデータフローグラフ３８ｃの入力と接続する関係にあることが定められる。接続関係調査部６１は、このようなデータフローグラフ間の接続関係を調査する。
【００５１】
実行順序決定部６２は、接続関係調査部６１による調査結果に基づいて、複数のデータフローグラフ３８の実行順序を決定する。実行順序決定部６２は、複数のデータフローグラフ３８における入力と出力の関係をもとに実行順序を決定する。具体的に、実行順序決定部６２は、データフローグラフ３８ｂの出力とデータフローグラフ３８ｃの入力とが接続される関係に基づいて、データフローグラフ３８ｂをデータフローグラフ３８ｃよりも前に実行することを定める。
【００５２】
なお、あるデータフローグラフ３８ｄが、データフローグラフ３８ｂおよびデータフローグラフ３８ｃとの間でデータを入出力する必要がない場合、データフローグラフ３８ｄは、データフローグラフ３８ｂとデータフローグラフ３８ｃの実行順序とは関係なく、独立して実行することも可能である。
【００５３】
しかしながら、既述したように、各データフローグラフ３８に対応する設定データ４０に基づいてリコンフィギュラブル回路１２上に構成された回路の出力は、一旦、メモリ部２７におけるＲＡＭに格納されることになる。そのため、データフローグラフ３８ｂの出力をデータフローグラフ３８ｃの入力に供給するためには、ＲＡＭからのデータ読出しのための時間が必要となる。
【００５４】
そこで、実行順序決定部６２は、ＲＡＭからのデータ読出待ちの時間を短くするように、複数のデータフローグラフ３８の実行順序を決定することが好ましい。接続関係の調査結果によると、データフローグラフ３８ｄは、データフローグラフ３８ｂおよびデータフローグラフ３８ｃとの間で入出力に依存関係はなく、並列処理可能であることが分かる。この関係を利用すると、ＲＡＭからのデータ読出時間の間にデータフローグラフ３８ｄを実行することで、リコンフィギュラブル回路１２上で回路の再構成を継続して実行することができ、処理時間を短縮することができる。このような理由から、実行順序決定部６２は、実行順序を、データフローグラフ３８ｂ、データフローグラフ３８ｄ、データフローグラフ３８ｃの順に設定し、これにより処理期間におけるデータ読出待ちの時間を少なくする、又はなくすことができる。データの読出待ちの時間が少なくなることで、消費電力が少なくてすみ、またコマンドデータのデータ量が削減されるため、回路規模が縮小されるという利点がある。
【００５５】
具体的に説明すると、各データフローグラフ３８に対応するリコンフィギュラブル回路１２の処理は１クロックで行われる。データフローグラフ３８ｂの出力をＲＡＭに格納して、ＲＡＭからデータフローグラフ３８ｃに読み出すのに１クロック必要となるが、その間に並列処理可能なデータフローグラフ３８ｄを実行することによって、データ読出しとデータフローグラフ３８ｄの処理とを同時に実行することが可能となる。これにより、データ読出待ちの時間がなくなり、処理時間の短縮を図ることが可能となる。
【００５６】
このように、実行順序決定部６２は、リコンフィギュラブル回路１２の動作時に、リコンフィギュラブル回路１２からフィードバックされる出力データを、新たに構成するリコンフィギュラブル回路１２の入力に読み出すときの待ち時間を少なくするように、実行順序を決定する。一つの例として、実行順序決定部６２は、まだ実行順序が確定していないデータフローグラフを選択し、選択したデータフローグラフに対して出力データを供給しないデータフローグラフの後に、選択したデータフローグラフの実行順序を割り当てるようにしてもよい。これにより、データフローグラフ間でデータ読出しの待ち時間が発生する状態を回避することができる。
【００５７】
ＲＡＭ決定部６３は、データを格納するＲＡＭを決定する。この例では、次回以降にリコンフィギュラブル回路１２に構成される回路に対して同時に出力する必要のある２つ以上のデータを、１つのＲＡＭに格納せず、複数のＲＡＭにおいて１つずつ格納することによって、データ読出しに複数クロック必要となる事態を回避することができる。これにより、データ読出待ちの時間を必要最小限とし、処理時間の短縮を図ることが可能となる。また、複数のデータを複数のＲＡＭから同時に読み出すことができるため、並列処理が可能となり、消費電力が少なくてすむとともに、コマンドデータのデータ量が削減されるため、回路規模が縮小されるという利点がある。また、ＲＡＭ決定部６３は、今回のリコンフィギュラブル回路１２から同じタイミングで出力されるデータが１つのＲＡＭに複数個書き込まれることのないように、データを格納するＲＡＭを決定する。すなわちＲＡＭ決定部６３は、実質的に同じタイミングで出力される他のデータが書き込まれない記憶部を探索し、データを格納するＲＡＭを決定する。同じタイミングで出力されるデータを１つのＲＡＭに書き込まないことにより、データの書込待ち時間を減らすことができ、読出待ちが長くなる可能性を低減することができる。
【００５８】
このように、ＲＡＭ決定部６３は、リコンフィギュラブル回路１２の入力にフィードバックされるリコンフィギュラブル回路１２の出力データの読出しによる待ち時間を少なくするように、および／または実質的に同じタイミングでリコンフィギュラブル回路１２から出力されるデータが１つのＲＡＭに複数個書き込まれることのないように、出力データを記憶するＲＡＭを決定する。一つの例として、ＲＡＭ決定部６３は、複数のＲＡＭのうち、実質的に同じタイミングで読み出される出力データが存在しないＲＡＭを探索し、探索したＲＡＭを出力データの記憶先として決定してもよい。これにより、出力データを複数のＲＡＭから同時に読み出すことが可能となる。また、ＲＡＭ決定部６３は、複数のＲＡＭのうち、リコンフィギュラブル回路１２から実質的に同じタイミングで出力される出力データが存在しないＲＡＭを探索し、探索したＲＡＭを出力データの記憶先として決定してもよい。これにより、読出し時に、１つのＲＡＭから複数のデータを読み出す事態を回避できる。
【００５９】
なお、ＲＡＭ決定部６３は、接続関係調査部６１による調査結果をもとにデータの格納するＲＡＭを決定できるが、実行順序決定部６２により決定された実行順序をもとにデータを格納するＲＡＭを決定してもよい。ＲＡＭ決定部６３および実行順序決定部６２における処理は、それぞれ独立してもデータ読出待ちに関する時間を短縮することができるが、互いに協同して処理を行うことで、データ読出待ちの時間を好適に短縮することが可能となる。
【００６０】
ＤＦＧ情報生成部６４は、実行順序決定部６２により決定されたデータフローグラフ３８の実行順序の情報、および、ＲＡＭ決定部６３においてデータ格納するように決定されたＲＡＭの情報を含んだＤＦＧ情報を生成する。このＤＦＧ情報は、記憶部３４に格納され、また設定データ生成部３２に直接供給される。設定データ生成部３２は、記憶部３４に格納された複数のデータフローグラフ３８、および、記憶部３４に格納され又はデータフローグラフ処理部３１から供給されたＤＦＧ情報をもとに、各データフローグラフ３８に対応する設定データ４０を生成する。なお、図１に示す処理装置１０では、制御部１８がメモリ部２７を制御することとしているが、ここではＲＡＭの情報もＤＦＧ情報に含めて、設定データ４０を作成することとしている。これにより、メモリ部２７の動作は、設定部１４により供給される設定データ４０（コマンドデータ）により制御されることも可能となる。
【００６１】
図１４は、データフローグラフ３８の処理フローを示す。コンパイル部３０がプログラム３６をコンパイルして（Ｓ１０）、データフローグラフ３８を生成する（Ｓ１２）。データフローグラフ処理部３１は、生成されたデータフローグラフ３８をリコンフィギュラブル回路１２の回路規模に応じた大きさに分割し（Ｓ１４）、分割した複数のデータフローグラフの接続関係を調査する（Ｓ１６）。
【００６２】
データフローグラフ処理部３１は、データフローグラフ３８の接続関係をもとに、複数のデータフローグラフ３８の実行順序を決定する（Ｓ１８）。また、データフローグラフ処理部３１は、データフローグラフ３８の接続関係をもとに、各データフローグラフ３８の出力を格納するべきＲＡＭを決定する（Ｓ２０）。設定データ生成部３２は、Ｓ１８において決定されたデータフローグラフの実行順序をもとに設定データ４０を生成する。なお既述したように、設定データ生成部３２は、Ｓ２０において決定されたＲＡＭに関するＤＦＧ情報も用いて、設定データ４０を生成してもよい。この場合、メモリ部２７の動作が、設定部１４より供給される設定データ４０（コマンドデータ）により制御可能となる。設定データ４０はリコンフィギュラブル回路１２の機能および接続関係などを設定し、リコンフィギュラブル回路１２は、設定データ４０により各種機能を設定されることで、所期の回路処理を実行することができる。
【００６３】
（ＤＦＧ接続関係の決定）
図１５は、６つのデータフローグラフの入出力を示す。ここでは、ＤＦＧ１ａ、ＤＦＧ２ａ、ＤＦＧ３ａ、ＤＦＧ４ａ、ＤＦＧ５ａ、ＤＦＧ６ａの６つのデータフローグラフの入出力が示されている。この状態では、各ＤＦＧの入出力は判明しているものの、ＤＦＧ間の接続関係については不明である。接続関係調査部６１は、これら６つのデータフローグラフの接続関係を調査する。以下、図１６および図１７を参照して、データフローグラフの接続関係を調査するフローを説明する。
【００６４】
図１６は、データフローグラフの接続関係を調査して決定するフローを示す。まず、６個のＤＦＧ１ａ〜ＤＦＧ６ａを、作成した順にソートする（Ｓ１０１）。作成した順とは、Ｃ言語で記述されたソースプログラムを上から切り出した順や、またソースプログラムをコンパイルして作成したデータフローグラフをリコンフィギュラブル回路１２の回路規模に合わせて切り出した順などである。データフローグラフを作成した順にソートするのは、データフローグラフが上から処理される傾向をもつため、作成した順がデータフローグラフの実行順序に近いという予測に基づいている。なお、必ずしも作成順にソートする必要はなく、任意の順にソートするものであってもよい。ここでは、ＤＦＧ１ａ、ＤＦＧ３ａ、ＤＦＧ５ａ、ＤＦＧ２ａ、ＤＦＧ４ａ、ＤＦＧ６ａの順にソートするものとする。
【００６５】
ｉに１を設定し、ｍをＤＦＧの総数、すなわち６に設定する（Ｓ１０２）。ｉ番目のＤＦＧを選択し（Ｓ１０３）、そのＤＦＧの段数がすでに決定しているかどうかを判定する（Ｓ１０４）。すでに段数が決定している場合には（Ｓ１０４のＹ）、ｉを１インクリメントし（Ｓ１０５）、Ｓ１０３とＳ１０４の処理を繰り返す。ここでは、ソート順の１番目に対応するＤＦＧ１ａの段数が決定していないため（Ｓ１０４のＮ）、ＤＦＧ１ａを１段目に配置する（Ｓ１０６）。続いて、ｎを、ｉ番目のＤＦＧの出力データの総数に設定する（Ｓ１０７）。ＤＦＧ１ａの出力データの総数はｔｅｍｐＡ１、ｔｅｍｐＡ２の２つであるため、ｎが２に設定される。ｊを１に設定し（Ｓ１０８）、ｉ番目のＤＦＧのｊ個目の出力データを選択して（Ｓ１０９）、ｐをｊ個目の出力データを入力しているＤＦＧの総数に設定する（Ｓ１１０）。ここでは、まずＤＦＧ１ａの２つの出力データのうちのｔｅｍｐＡ１を選択して、ｔｅｍｐＡ１を入力しているＤＦＧ２ａ、ＤＦＧ３ａを抽出する。したがってｐは２となる。
【００６６】
ｋを１に設定して（Ｓ１１１）、ｊ個目の出力データを入力しているｋ個目のＤＦＧを選択する（Ｓ１１２）。ここでは、まず１個目の出力データ（ｔｅｍｐＡ１）を入力している１個目のＤＦＧ２ａを選択する。ここで、ＤＦＧ２ａに対して、段数決定処理を実行する（Ｓ１１３）。この段数決定処理は、再帰的に呼び出されるルーチンとなる。
【００６７】
図１７は、図１６の接続関係決定フローにおいて再帰的に呼び出される段数決定ルーチンのフローを示す。まず、段数を決めるＤＦＧ（ＤＦＧｄｅｆ）を入力する（Ｓ１３０）。ここでＤＦＧｄｅｆはＤＦＧ２ａである。Ｉを、ＤＦＧｄｅｆの入力データを出力しているＤＦＧで、かつ既に段数が決定しているＤＦＧの中で最下段のＤＦＧの段数とする（Ｓ１３１）。ここでは、ＤＦＧ１ａが１段目に配置されているだけなので、Ｉが１に設定される。ＤＦＧｄｅｆを（Ｉ＋１）段目に配置し（Ｓ１３２）、ＮをＤＦＧｄｅｆの出力データの総数に設定する（Ｓ１３３）。したがって、ＤＦＧ２ａが２段目に配置され、ＤＦＧ２ａの出力データの総数１がＮに設定される。なお、ＤＦＧ２ａの出力データはｔｅｍｐＢ１である。
【００６８】
Ｊを１に設定し（Ｓ１３４）、Ｊ個目の出力データを選択する（Ｓ１３５）。続いて、ＰをＪ個目の出力データを入力しているＤＦＧの総数に設定する（Ｓ１３６）。ｔｅｍｐＢ１を入力しているのは、ＤＦＧ５ａのみであり、したがってＰは１に設定される。
【００６９】
Ｋを１に設定し（Ｓ１３７）、Ｋ個目のＤＦＧを選択する（Ｓ１３８）。ここでは、ＤＦＧ５ａが選択されることになる。続いて、ＤＦＧの段数決定処理を再帰的に呼び出す（Ｓ１３８）。Ｓ１３８において呼び出した段数決定処理では、ＤＦＧ２ａの出力データを入力するＤＦＧ５ａについて同様の処理を行うことになる。なお、ＤＦＧ２ａに関する処理の説明を続けると、Ｓ１３９の段数決定処理が終了した後、Ｋ＝Ｐであるか否かを判定し（Ｓ１４０）、Ｋ＝Ｐでなければ（Ｓ１４０のＮ）、Ｋを１インクリメントして（Ｓ１４１）、Ｓ１３８、Ｓ１３９の処理を繰り返し、Ｋ＝Ｐになれば（Ｓ１４０の）、Ｊ＝Ｎであるか否かを判定し（Ｓ１４２）、Ｊ＝Ｎでなければ（Ｓ１４２のＮ）、Ｊを１インクリメントして（Ｓ１４３）、Ｓ１３５〜Ｓ１４０までの処理を繰り返し、Ｊ＝Ｎであれば（Ｓ１４２のＹ）、段数決定処理を終了して、図１６に示すフローに戻る。ＤＦＧ２ａに関していうと、Ｐ＝１であり、またＮ＝１であるため、Ｓ１４０、Ｓ１４２でループを戻ることなく、段数決定処理が終了する。
【００７０】
Ｓ１３９の再帰的な段数決定処理を呼び出す処理について説明する。既述したように、Ｓ１３９では、ＤＦＧ５ａについて、段数決定処理が実行されることになる。Ｓ１３１において、ＤＦＧ５ａの入力データを出力しているＤＦＧは、ＤＦＧ２ａとＤＦＧ３ａであるが、すでに段数が決定しているＤＦＧの中で最下段のものは２段目に配置されたＤＦＧ２ａであるため、Ｉは２に設定される。したがって、Ｓ１３３にて、ＤＦＧ５ａが３段目に配置されることになる。以下、同様にしてＳ１３９の段数決定処理を呼び出し、ＤＦＧ５ａの出力ｔｅｍｐＥ１を入力とするＤＦＧ６ａが４段目に配置される。ＤＦＧ６ａの出力は最終出力のみであるため、段数決定処理は一旦終了し、図１６のフローのＳ１１４に戻る。
【００７１】
ｋ＝ｐであるか否かを判定し（Ｓ１１４）、ｋ＝ｐでなければ（Ｓ１１４のＮ）、ｋを１インクリメントして（Ｓ１１５）、Ｓ１１２、Ｓ１１３の処理を実行する。ここでは、ｋ＝１、ｐ＝２であるため、ｋを２に設定して（Ｓ１１５）、ｔｅｍｐＡ１を入力している残りのＤＦＧ３ａを選択し（Ｓ１１２）、既述した段数決定処理を実行する（Ｓ１１３）。段数決定処理により、ＤＦＧ３ａは、２段目に配置される。段数決定処理では、ＤＦＧ３ａの出力データの行き先はＤＦＧ５ａであり、ＤＦＧ２ａに関する段数決定処理において既に３段目に配置されているが、このＤＦＧ５ａについても再度、段数決定処理を実行する。結果として、ＤＦＧ２ａおよびＤＦＧ３ａが２段目に配置されることになり、ＤＦＧ５ａは、３段目の配置を維持することになる。なお、例えばＤＦＧ３ａの段数決定処理において、仮にＤＦＧ３ａが３段目に配置されることが決定された場合には、ＤＦＧ５ａは、前回の段数決定処理において３段目の配置と決定されてはいるが、ＤＦＧ３ａの配置段のために４段目に再配置されることになる。
【００７２】
以上により、ＤＦＧ１ａが１段目、ＤＦＧ２ａ、ＤＦＧ３ａが２段目、ＤＦＧ５ａが３段目、ＤＦＧ６ａが４段目に配置される。続いて、ｊ＝ｎであるかどうかを判定し（Ｓ１１６）、ｊ＝ｎでなければ（Ｓ１１６のＮ）、ｊを１インクリメントして（Ｓ１１７）、Ｓ１０９からの処理を再実行し、ｊ＝ｎであれば（Ｓ１１６のＹ）、ｉ＝ｍであるかどうかを判定し（Ｓ１１８）、ｉ＝ｍでなければ（Ｓ１１８のＮ）、ｉを１インクリメントして（Ｓ１１９）、Ｓ１０３からの処理を再実行し、ｉ＝ｍであれば（Ｓ１１８のＹ）、本フローが終了する。
【００７３】
ここでは、ｊ＝１、ｎ＝２であるので、ｊを２に設定して（Ｓ１１７）、ｔｅｍｐＡ２を入力しているＤＦＧ４ａを選択し（Ｓ１０９）、Ｓ１１０以降の処理を実行する。以降の処理により、ＤＦＧ４ａは２段目に配置されることになる。Ｓ１１８では、ｉ＝１、ｍ＝６であるため、Ｓ１０３およびＳ１０４を実行するが、全てのＤＦＧの段数が決定されているため、本フローが終了する。
【００７４】
図１８は、接続関係調査部６１により決定された６つのデータフローグラフの接続関係を示す。この接続関係図は、処理の流れを上段から下段にかけて示す。この接続関係を把握することにより、データフローグラフの実行順序を適切に定めることが可能となり、また各データフローグラフを格納するＲＡＭを適切に定めることが可能となる。
【００７５】
（ＤＦＧ実行順序の決定）
続いて、ＤＦＧ接続関係図の１段目から順に実行するＤＦＧの実行順序を決定する。その際、次に実行するＤＦＧの入力データがメモリ部２７のＲＡＭからの読出待ちを必要とするかを調べ、必要であればそのＤＦＧは後ろの順序にまわし、他の同段に配置される並列処理可能なＤＦＧで、データの読出待ちを必要としないものを先に実行するように順序を決める。
【００７６】
図１９（ａ）は、ＤＦＧ接続関係図の一例を示す。ＤＦＧ１ｂの出力がＤＦＧ３ｂおよびＤＦＧ４ｂの入力に接続し、ＤＦＧ２ｂの出力がＤＦＧ３ｂの入力に接続している。
【００７７】
図１９（ｂ）は、実行順序を、ＤＦＧ１ｂ、ＤＦＧ２ｂ、ＤＦＧ３ｂ、ＤＦＧ４ｂの順に設定した場合を示す。この場合、ＤＦＧ２ｂとＤＦＧ３ｂとを連続して実行すると、ＤＦＧ３ｂの入力に必要なＤＦＧ２ｂの出力データをＲＡＭから読み出す時間が必要となる。そのため、ＤＦＧ２ｂの実行後、１クロックのデータ読出時間を経てＤＦＧ３ｂがはじめて実行される。処理時間を短縮するためには、このデータの読出時間がデータフローグラフの処理実行時間に加算されないことが好ましい。以下、図１９（ａ）に示すＤＦＧ接続関係図をもとに、データフローグラフの実行順序を決定するフローを説明する。
【００７８】
図２０は、データフローグラフの実行順序決定のフローを示す。まず、ｉ＝１、ｊ＝１を設定する（Ｓ２０１）。次に、最上段（ｉ＝１）のＤＦＧからひとつのＤＦＧを選択し、最初（ｊ＝１）に実行するＤＦＧに設定する（Ｓ２０２）。ここでは、ＤＦＧ１ｂを最初に実行するＤＦＧに設定する。ｊを１インクリメントし（Ｓ２０３）、ｉ段目にまだ処理していないＤＦＧがあるかどうかを判定する（Ｓ２０４）。未処理のＤＦＧが存在しない場合はｉを１インクリメントする（Ｓ２０５）。続いて、ｉ段目のＤＦＧから１つの未処理のＤＦＧを選択する（Ｓ２０６）。ここでは、１段目のＤＦＧ２ｂが選択される。
【００７９】
続いて、（ｊ−ｎ）番目から（ｊ−１）番目までのＤＦＧの出力データが、Ｓ２０６にて選択したＤＦＧの入力となっているかどうかを判定する（Ｓ２０７）。なお、ｎはＡＬＵからデータが出力され、次にＡＬＵに入力可能となるまでの時間であり、データ読出時間に相当する。なお、データの読出時間は、後述するＲＡＭへの格納方法にもよるが、ここではデータの読出時間が必要最小限の１クロック（ｎ＝１）であるとする。（ｊ−ｎ）番目から（ｊ−１）番目までのＤＦＧの出力データが、Ｓ２０６にて選択したＤＦＧの入力となっている場合は（Ｓ２０７のＹ）、ｉ段目の別のＤＦＧから１つのＤＦＧを選択して（Ｓ２０８）、Ｓ２０７の判定を行い、入力となっていない場合は（Ｓ２０７のＮ）、Ｓ２０６で選択したＤＦＧをｊ番目に実行するＤＦＧとする（Ｓ２０９）。ＤＦＧ１ｂとＤＦＧ２ｂの間には、入出力の依存関係がないため（Ｓ２０７のＮ）、ＤＦＧ２ｂが２番目に実行するＤＦＧと設定される。
【００８０】
なお、Ｓ２０８にて、ｉ段目の別のＤＦＧがなければ、例外処理１として、上段のｉ−１段目に戻って、選択をし直す。また、すべての実行順序を調べてもデータ待ちが発生する場合は、例外処理２として、最小の待ち時間となる実行順序を選択する。
【００８１】
実行順序を決定していないＤＦＧが存在する場合（Ｓ２１０のＮ）、Ｓ２０３以降の処理を繰り返す。図１９（ａ）の接続関係図を参照すると、この時点で、１段目の全てのＤＦＧの実行順序を決定したため（Ｓ２０４のＮ）、Ｓ２０５にて２段目のＤＦＧの実行順序を決定する処理に移る。
【００８２】
Ｓ２０６にて、ＤＦＧ３ｂを選択して、Ｓ２０７の判定を行う。ｊ＝３、ｎ＝１（データ読出時間を１クロックと設定）であり、ＤＦＧ３ｂについて、２（＝ｊ−ｎ）番目から２（＝ｊ−１）番目までのＤＦＧの出力データが入力となっているかを検討すると、２番目のＤＦＧ２ｂの出力データが入力となっているため、ＤＦＧ２ｂの次にＤＦＧ３ｂを実行すると、データ待ちが発生することが判明する。したがって、Ｓ２０８にて、３番目に実行するＤＦＧとして、ＤＦＧ４ｂを選びなおす。ＤＦＧ４ｂは、ＤＦＧ３ｂと異なり、２番目のＤＦＧ２ｂの出力データを入力としないため、ＤＦＧ２ｂの次にＤＦＧ４ｂを実行しても、データ待ちが発生しないことが判明する。このように、ＤＦＧ４ｂに対して出力データを供給しないＤＦＧ２ｂの後に、ＤＦＧ４ｂの実行順序を割り当てることで、データ待ちを回避することが可能となる。以上のアルゴリズムにより、Ｓ２０９にて、ＤＦＧ４ｂが３番目に実行するＤＦＧとして決定される。この処理を繰り返し、最後にＤＦＧ３ｂが４番目に実行するＤＦＧとして決定され、すべてのＤＦＧの実行順序が決定されると（Ｓ２１０のＹ）、本フローが終了する。以上の手順にしたがうと、ＤＦＧ１ｂ、ＤＦＧ２ｂ、ＤＦＧ４ｂ、ＤＦＧ３ｂの順に実行することで、データ待ちが発生することなく、データ処理時間を短縮することが可能となる。
【００８３】
図２１（ａ）は、ＤＦＧ接続関係図の別の例を示す。ＤＦＧ１ｃの出力がＤＦＧ４ｃの入力に接続し、ＤＦＧ２ｃの出力がＤＦＧ３ｃおよびＤＦＧ４ｃの入力に接続している。
【００８４】
図２１（ｂ）は、実行順序を、ＤＦＧ１ｃ、ＤＦＧ２ｃ、ＤＦＧ３ｃ、ＤＦＧ４ｃの順に設定した場合を示す。この場合、ＤＦＧ２ｃとＤＦＧ３ｃとを連続して実行すると、ＤＦＧの処理過程において、ＤＦＧ３ｃの入力に必要なＤＦＧ２ｃの出力データをＲＡＭから読み出す時間が必要となる。そのため、ＤＦＧ２ｃの実行後、１クロックのデータ読出時間を経てＤＦＧ３ｃがはじめて実行される。処理時間を短縮するためには、このデータの読出時間がデータフローグラフの処理実行時間に加算されないことが好ましい。
【００８５】
図２０に示したデータフローグラフ実行順序決定フローを利用して、図２１（ａ）に示した４つのＤＦＧの実行順序を決定する。Ｓ２０２で、ＤＦＧ１ｃを最初に実行するＤＦＧとして選択すると、ＤＦＧ１ｃ、ＤＦＧ２ｃの順序が決定した後、ＤＦＧ２ｃの後に、ＤＦＧ３ｃまたはＤＦＧ４ｃのいずれを配置した場合であっても、Ｓ２０７においてデータ待ちが発生することになる。したがって、この場合は例外処理１を実行し、最初に実行するＤＦＧをＤＦＧ２ｃに変更して、再度、実行順序を決定していく。その結果、ＤＦＧ２ｃ、ＤＦＧ１ｃ、ＤＦＧ３ｃ、ＤＦＧ４ｃの実行順序が決定される。この順序で実行することで、データ待ちが発生することなく、データ処理時間を短縮することが可能となる。
【００８６】
（ＲＡＭの格納処理）
図２２（ａ）は、ＤＦＧ接続関係図の一例を示す。ＤＦＧ１ｄの出力データ（ｔｅｍｐＦ１、ｔｅｍｐＦ２）のうち、ｔｅｍｐＦ１がＤＦＧ３ｄの入力データとして利用され、ｔｅｍｐＦ２がＤＦＧ４ｄの入力データとして利用される。また、ＤＦＧ２ｄの出力データ（ｔｅｍｐＧ１、ｔｅｍｐＧ２）のうち、ｔｅｍｐＧ１がＤＦＧ４ｄの入力データとして利用され、ｔｅｍｐＧ２がＤＦＧ３ｄおよびＤＦＧ４ｄの入力データとして利用されている。
【００８７】
図２２（ｂ）は、ＤＦＧ１ｄおよびＤＦＧ２ｄの実行順序にしたがって、それぞれの出力データをＲＡＭ１およびＲＡＭ２に格納した状態を示す。この例では単純に、ＤＦＧ１ｄの出力データをＲＡＭ１とＲＡＭ２に格納し、ＤＦＧ２ｄの出力データをＲＡＭ１とＲＡＭ２に格納する。このようにＲＡＭに格納した場合、ＤＦＧ４ｄは、ｔｅｍｐＦ２、ｔｅｍｐＧ１、ｔｅｍｐＧ２の３つの入力データを必要とするが、ｔｅｍｐＦ２とｔｅｍｐＧ２とは同一のＲＡＭ２に格納されているため、読出しに２クロックが必要となる。この読出時間を短縮することができれば、全体のデータ処理時間を短縮することができる。
【００８８】
以下、図２２（ａ）に示すＤＦＧ接続関係図をもとに、データ処理時間を短縮するように、データを格納するＲＡＭの決定処理を実行するフローを説明する。各ＤＦＧにおいて、入力される全データがすべて別のＲＡＭに格納され、かつ出力される全データもすべて別のＲＡＭに格納されるように、ＤＦＧの入出力データのＲＡＭへの格納先を決定する。
【００８９】
図２３は、データを格納するＲＡＭを決定するフローを示す。まず、ＤＦＧごとにＲＡＭから入力されるデータを取得し（Ｓ３０１）、入力データ数の多いＤＦＧ順にソートする（Ｓ３０２）。図２２（ａ）に示す接続関係図から、ＤＦＧ３ｄの入力データがｔｅｍｐＦ１、ｔｅｍｐＧ２であり、ＤＦＧ４ｄの入力データがｔｅｍｐＦ２、ｔｅｍｐＧ１、ｔｅｍｐＧ２である。ＤＦＧ１ｄとＤＦＧ２ｄは、外部からの入力のみであり、ＲＡＭからの入力を不要としているため対象外である。入力の多い順にソートすると、ＤＦＧ４ｄ、ＤＦＧ３ｄの順となる。
【００９０】
ｉを１に設定し、ｍをＤＦＧの総数とする（３０３）。まずｉ番目のＤＦＧを選択し（Ｓ３０４）、ｎをｉ番目のＤＦＧの入力データの総数に設定する（Ｓ３０５）。１番目のＤＦＧ４ｄの入力データの総数は３である。ｊを１に設定し（Ｓ３０６）、ｉ番目のＤＦＧのｊ番目の入力データを選択する（Ｓ３０７）。ここでは、まず、ＤＦＧ４ｄのｔｅｍｐＦ２を選択する。ｊ番目の入力データを格納するＲＡＭがすでに決定されている場合（Ｓ３０８のＹ）、重複するデータを格納する必要がないため、Ｓ３２２の処理に移行する。格納するＲＡＭが未決定の場合（Ｓ３０８のＮ）、ｋを１に設定する（Ｓ３０９）。ｋはＲＡＭの番号を示す。ｔｅｍｐＦ２については、まだ格納するＲＡＭが決定されていないため、Ｓ３０９以降の処理を実行する。
【００９１】
データを格納するＲＡＭを決定するためには、Ｓ３１０〜Ｓ３１２の条件が満足される必要がある。具体的に、ＲＡＭを決定するためには、ｉ番目のＤＦＧの別のデータを格納するＲＡＭがｋ番目のＲＡＭに決定されていないこと（Ｓ３１０のＮ）、ＡＬＵからの出力時に同時に出力される別のデータを格納するＲＡＭがｋ番目のＲＡＭに決定されていないこと（Ｓ３１１のＮ）、ｋ番目のＲＡＭにデータを格納可能な容量が残っていること（Ｓ３１２のＹ）が満たされる必要がある。Ｓ３１０では、複数のＲＡＭのうち、実質的に同じタイミングで読み出される出力データが存在しないＲＡＭを探索している。またＳ３１１では、複数のＲＡＭのうち、リコンフィギュラブル回路１２から実質的に同じタイミングで出力される出力データが存在しないＲＡＭを探索している。
【００９２】
さらに、ソート順で今調べているｉ番目のＤＦＧ以降のＤＦＧで入力に同じデータがある場合には（Ｓ３１３のＹ）、それらすべてが格納しようとするＲＡＭに対して、Ｓ３１０、Ｓ３１１、Ｓ３１２の条件を満たしていることが必要となる。なお、ｉ番目のＤＦＧ以降のＤＦＧで入力に同じデータがない場合には（Ｓ３１３のＮ）、データを格納するＲＡＭをｋ番目のＲＡＭに決定する（Ｓ３２１）。
【００９３】
ｉ番目のＤＦＧ以降のＤＦＧで入力に同じデータがある場合（Ｓ３１３のＹ）、ｐをｉ番目以降のＤＦＧで同じデータがあるＤＦＧの総数に設定し（Ｓ３１４）、ｍを１に設定して（Ｓ３１５）、ｉ番目以降のＤＦＧで同じデータがあるＤＦＧのうちｍ番目のＤＦＧを選択し（Ｓ３１６）、ｉ番目以降のｍ番目のＤＦＧでｋ番目のＲＡＭに格納することが決定されたデータがあるかどうかを調べる（Ｓ３１７）。複数のＤＦＧで同じデータを利用する場合、ＲＡＭに格納した１つのデータを複数のＤＦＧで共用することが好ましい。これにより、全体のＲＡＭの記憶領域を削減できるとともに、処理装置１０の回路規模を縮小することができる。
【００９４】
したがって、ｉ番目以降のｍ番目のＤＦＧに同じデータがある場合に、そのデータをｋ番目のＲＡＭに格納して共用することが好ましいが、同一の趣旨から、ｍ番目のＤＦＧが、ｉ番目以前のＤＦＧと同じデータをもつ場合、これまでのＲＡＭ決定処理において、そのデータをｋ番目のＲＡＭに格納することが既に決定されていることもあり得る。ｍ番目のＤＦＧを実行するときにｋ番目のＲＡＭからは１つのデータしか読み出せないため、ｍ番目のＤＦＧで使用するデータを重複してｋ番目のＲＡＭに格納することは好ましくない。そのため、Ｓ３１７では、ｋ番目のＲＡＭに、ｍ番目のＤＦＧのデータを格納することが既に決定されているか否かを調査している。
【００９５】
ｉ番目以降のｍ番目のＤＦＧでｋ番目のＲＡＭに格納することが決定されたデータがない場合（Ｓ３１７のＮ）、ｍ＝ｐであるかどうかを判定し（Ｓ３１９）、ｍ＝ｐでなければ（Ｓ３１９のＮ）、ｍを１インクリメントして（Ｓ３２０）、Ｓ３１６、Ｓ３１７の処理を繰り返す。
【００９６】
ｉ番目のＤＦＧの別のデータを格納するＲＡＭがｋ番目のＲＡＭに決定されている場合（Ｓ３１０のＹ）、ＡＬＵからの出力時に同時に出力される別のデータを格納するＲＡＭがｋ番目のＲＡＭに決定されている場合（Ｓ３１１のＹ）、ｋ番目のＲＡＭにデータを格納可能な容量が残っていない場合（Ｓ３１２のＮ）、または、ｉ番目以降のｍ番目のＤＦＧでｋ番目のＲＡＭに格納することが決定されたデータがある場合（Ｓ３１７のＹ）、ｋ番目のＲＡＭには格納することができないことを判断し、ｋを１インクリメントして（Ｓ３１８）、Ｓ３１０からの処理を繰り返す。
【００９７】
ｉ番目のＤＦＧ以降のＤＦＧで入力に同じデータがない場合（Ｓ３１３のＹ）、またはｍ＝ｐとなる場合（Ｓ３１９）、データを格納するＲＡＭをｋ番目のＲＡＭに決定する（Ｓ３２１）。以上の処理により、ＤＦＧ４ｄの入力データとなるｔｅｍｐＦ２を格納するＲＡＭがＲＡＭ１に決定される。
【００９８】
ｊ＝ｎでなければ（Ｓ３２２のＮ）、ｊを１インクリメントして（Ｓ３２３）、Ｓ３０７からの処理を実行する。なお、ＤＦＧ４ｄの入力データの総数ｎは３である。ＤＦＧ４ｄの２番目の入力データをｔｅｍｐＧ１とすると、Ｓ３０８以降の処理により、ｔｅｍｐＧ１を格納するＲＡＭがＲＡＭ２に決定される。同様に、ｔｅｍｐＧ２を格納するＲＡＭがＲＡＭ３に決定される。この時点で、ｊ＝ｎとなるため（Ｓ３２２のＹ）、次に、ｉ＝ｍであるかどうかを判定する（Ｓ３２４）。ｉ＝ｍでない場合（Ｓ３２４のＮ）、ｉを１インクリメントして（Ｓ３２５）、Ｓ３０４の処理に戻る。Ｓ３０５では、２番目のソート順にあたるＤＦＧ３ｄが選択される。
【００９９】
次に、ＤＦＧ３ｄの入力データを格納するＲＡＭを決定する処理を行う。Ｓ３０８において、ＤＦＧ３ｄのｔｅｍｐＧ２については、ＤＦＧ４ｄに関する処理において既にＲＡＭ３に格納されることが決定されているため、Ｓ３０８からＳ３２２の処理に移行する。最後に、ｔｅｍｐＦ１のＲＡＭ決定処理について説明する。
【０１００】
Ｓ３１１において、ＤＦＧ１ｄからの出力時に同時に出力されるｔｅｍｐＦ２がＲＡＭ１に格納されているため、ｔｅｍｐＦ２をＲＡＭ１に格納することはできない。ＲＡＭ２は、Ｓ３１０、Ｓ３１１、Ｓ３１３、Ｓ３１７の４つの条件を満足するため、ｔｅｍｐＦ２を格納するＲＡＭは、ＲＡＭ２に決定される。なお、ＲＡＭ３においては、ＤＦＧ３ｄの入力データであるｔｅｍｐＧ２が格納されることが決定されているため、ｔｅｍｐＦ１をＲＡＭ３に格納することもできない。以上により、ｔｅｍｐＦ１を格納するＲＡＭがＲＡＭ２に決定される。
【０１０１】
他のＤＦＧ、すなわちＤＦＧ１ｄおよびＤＦＧ２ｄについては、ＲＡＭから入力されるデータを必要としないため、ＤＦＧ３ｄの入力データの格納ＲＡＭを定めると、本フローが終了する。
【０１０２】
図２４は、各ＲＡＭに格納するデータを示す。以上の処理によりデータを格納するＲＡＭを決定することで、各ＤＦＧに対してＲＡＭからのデータ読出時間を１クロックに抑えることができ、データ読出待ち時間の少ないデータ処理を実行することが可能となる。データの読出待ちが少なくなるため、消費電力が少なくてすみ、またコマンドデータのデータ量が削減されるために、コマンドメモリの回路規模も小さくすることができる。
【０１０３】
なお、ＲＡＭに効率的にデータを格納することによって、データフローグラフの実行順序も効率的に定めることが可能となる。データを格納するＲＡＭの決定処理と、データフローグラフの実行順序の決定処理は、互いに独立して実行してもデータ待ち時間を少なくする又はなくす効果を得ることができるが、互いに協同して実行することで、より一層の効果を期待することができる。
【０１０４】
以上、本発明を実施の形態もとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１０５】
例えば、リコンフィギュラブル回路１２におけるＡＬＵの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
【０１０６】
また、図１では、処理装置１０が１つのリコンフィギュラブル回路１２を有する場合を示しているが、複数のリコンフィギュラブル回路１２を有していてもよい。例えば、図１７に示すような接続関係図が生成された場合であっても、接続関係図により並列処理可能なＤＦＧが分かるため、３つのリコンフィギュラブル回路１２が存在する場合は、２段目の３つのＤＦＧを同時に処理することが可能となり、データ処理時間を短縮することが可能となる。
【０１０７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１０８】
【図１】実施の形態に係る処理装置の構成図である。
【図２】生成すべきターゲット回路を分割してできる複数の回路の設定データについて説明するための図である。
【図３】リコンフィギュラブル回路の構成の一例を示す図である。
【図４】リコンフィギュラブル回路の構成の別の例を示す図である。
【図５】データフローグラフの構造を説明するための図である。
【図６】前後７点を利用する７タップからなるＦＩＲフィルタ回路を示す図である。
【図７】図６で示すＦＩＲフィルタ回路を置き換えた回路を示す図である。
【図８】図７で示すＦＩＲフィルタ回路をさらに置き換えた回路を示す図である。
【図９】図８に示すＦＩＲフィルタ回路をコンパイルして作成したデータフローグラフを示す図である。
【図１０】実施例で使用するリコンフィギュラブル回路１２を示す図である。
【図１１】図９に示すデータフローグラフを、図１０のリコンフィギュラブル回路を用いて実現する例を示す図である。
【図１２】実施の形態におけるメモリ部の構成を示す図である。
【図１３】データフローグラフ処理部の構成を示す図である。
【図１４】データフローグラフの処理フローを示す図である。
【図１５】６つのデータフローグラフの入出力関係を示す図である。
【図１６】データフローグラフの接続関係を調査して決定するフローを示す図である。
【図１７】図１６の接続関係決定フローにおいて再帰的に呼び出される段数決定ルーチンのフローを示す図である。
【図１８】接続関係調査部により決定された６つのデータフローグラフの接続関係を示す図である。
【図１９】（ａ）はＤＦＧ接続関係の一例を示す図であり、（ｂ）は、実行順序をＤＦＧ１ｂ、ＤＦＧ２ｂ、ＤＦＧ３ｂ、ＤＦＧ４ｂの順に設定した場合を示す図である。
【図２０】データフローグラフの実行順序決定のフローを示す図である。
【図２１】（ａ）は、ＤＦＧ接続関係図の別の例を示す図であり、（ｂ）は、実行順序を、ＤＦＧ１ｃ、ＤＦＧ２ｃ、ＤＦＧ３ｃ、ＤＦＧ４ｃの順に設定した場合を示す図である。
【図２２】（ａ）は、ＤＦＧ接続関係図の一例を示す図であり、（ｂ）は、ＤＦＧ１ｄおよびＤＦＧ２ｄの実行順序にしたがって、それぞれの出力データをＲＡＭ１およびＲＡＭ２に格納した状態を示す図である。
【図２３】データのＲＡＭの格納先を決定するフローを示す図である。
【図２４】各ＲＡＭに格納するデータを示す図である。
【符号の説明】
【０１０９】
１０・・・処理装置、１２・・・リコンフィギュラブル回路、１４・・・設定部、１８・・・制御部、２６・・・集積回路装置、２７・・・メモリ部、３０・・・コンパイル部、３１・・・データフローグラフ処理部、３２・・・設定データ生成部、３４・・・記憶部、３６・・・プログラム、３８・・・データフローグラフ、４０・・・設定データ、５０・・・論理回路、５２・・・接続部、６０・・・ＤＦＧ分割部、６１・・・接続関係調査部、６２・・・実行順序決定部、６３・・・ＲＡＭ決定部。
【図１】
2005258593.tif 000003
【図２】
2005258593.tif 000004
【図３】
2005258593.tif 000005
【図４】
2005258593.tif 000006
【図５】
2005258593.tif 000007
【図６】
2005258593.tif 000008
【図７】
2005258593.tif 000009
【図８】
2005258593.tif 000010
【図９】
2005258593.tif 000011
【図１０】
2005258593.tif 000012
【図１１】
2005258593.tif 000013
【図１２】
2005258593.tif 000014
【図１３】
2005258593.tif 000015
【図１４】
2005258593.tif 000016
【図１５】
2005258593.tif 000017
【図１６】
2005258593.tif 000018
【図１７】
2005258593.tif 000019
【図１８】
2005258593.tif 000020
【図１９】
2005258593.tif 000021
【図２０】
2005258593.tif 000022
【図２１】
2005258593.tif 000023
【図２２】
2005258593.tif 000024
【図２３】
2005258593.tif 000025
【図２４】
2005258593.tif 000026