(57)【要約】【課題】  リコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する技術を提供する。【解決手段】  本発明のデータフローグラフ処理方法は、生成した１以上のＤＦＧを、リコンフィギュラブル回路の集合体内の論理回路の数に応じて複数のサブＤＦＧに分割する（Ｓ１４）。リコンフィギュラブル回路が多段接続構造を有する場合、サブＤＦＧの列数は、リコンフィギュラブル回路の１段あたりの論理回路の個数以下となるように設定される。続いて、サブＤＦＧを結合して（Ｓ１８）、結合ＤＦＧを生成する。結合ＤＦＧの列数も、リコンフィギュラブル回路の１段あたりの論理回路の個数以下となるように設定される。この結合ＤＦＧを、リコンフィギュラブル回路の段数以下となるように再分割し（Ｓ２０）、リコンフィギュラブル回路にマッピング可能なサブ結合ＤＦＧを生成する。【選択図】図６
2006004345.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）を作成し、その情報をもとに作成される。
【０００８】
ＡＬＵアレイ上に１度にマッピングできるＤＦＧの大きさはＡＬＵアレイの回路規模により制限されるため、大きなＤＦＧは複数のＤＦＧに分割して結合させる必要がある。結合して生成されるＤＦＧの大きさは、ＡＬＵアレイで実行する回路コンフィギュレーションの回数に直接的な影響を与えるため、できるだけ小さく生成することが好ましい。
【０００９】
本発明はこうした状況に鑑みてなされたもので、その目的は、リコンフィギュラブル回路の動作設定に必要なデータフローグラフを効率よく処理できる技術を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のある態様は、機能の変更が可能な論理回路の複数の集合体を備えたリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する方法に関する。この態様のデータフローグラフ処理方法は、処理の動作を記述した動作記述をもとに、演算間の実行順序の依存関係を表現する１以上のデータフローグラフを生成するステップと、生成した１以上のデータフローグラフを、リコンフィギュラブル回路の集合体内の論理回路の数に応じて複数のサブデータフローグラフに分割する第１分割ステップと、複数のサブデータフローグラフを結合して、結合データフローグラフを生成する結合ステップとを備える。論理回路の集合体内の論理回路の数に応じてデータフローグラフを分割することで、もとのデータフローグラフがリコンフィギュラブル回路の大きさを超える場合であっても、適切な大きさに分けて、結合させることができる。
【００１１】
この態様のデータフローグラフ処理方法は、結合データフローグラフを分割して、分割したサブ結合データフローグラフの段数がリコンフィギュラブル回路の論理回路の集合体の個数以下となるように、複数のサブ結合データフローグラフを生成する第２分割ステップをさらに備えてもよい。第２分割ステップにより、リコンフィギュラブル回路にマッピング可能な大きさに結合データフローグラフを分割することが可能となる。
【００１２】
本発明の別の態様は、データフローグラフを処理する機能をもつ処理装置に関する。この態様の処理装置は、機能の変更が可能な論理回路の複数の集合体を備えたリコンフィギュラブル回路と、処理の動作を記述した動作記述をもとに、演算間の実行順序の依存関係を表現する１以上のデータフローグラフを生成するコンパイル部と、生成した１以上のデータフローグラフを、リコンフィギュラブル回路の集合体内の論理回路の数に応じて複数のサブデータフローグラフに分割し、それらを結合した結合データフローグラフを生成し、さらに結合データフローグラフを分割して、分割したサブ結合データフローグラフの段数がリコンフィギュラブル回路の論理回路の集合体の個数以下となるように、複数のサブ結合データフローグラフを生成するデータフローグラフ処理部と、サブ結合データフローグラフをもとに、リコンフィギュラブル回路に機能設定するための設定データを生成する設定データ生成部とを備える。
【００１３】
リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。
【００１４】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明によれば、リコンフィギュラブル回路の動作設定に必要なデータフローグラフを効率よく処理する技術を提供することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、実施例に係る処理装置１０の構成図である。処理装置１０は、集積回路装置２６を備える。集積回路装置２６は、回路構成を再構成可能とする機能を有する。集積回路装置２６は１チップとして構成され、リコンフィギュラブル回路１２、設定部１４、制御部１８、出力回路２２、メモリ部２７および経路部２４、２９を備える。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。
【００１７】
設定部１４は、リコンフィギュラブル回路１２に所期の回路を構成するための設定データ４０を供給する。設定部１４は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部１８がプログラムカウンタの出力を制御する。この意味において、設定データ４０はコマンドデータと呼ばれてもよい。経路部２４、２９は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。出力回路２２は、例えばデータフリップフロップ（Ｄ−ＦＦ）などの順序回路として構成され、リコンフィギュラブル回路１２の出力を受ける。メモリ部２７は経路部２９に接続されている。リコンフィギュラブル回路１２は組合せ回路または順序回路等の論理回路として構成される。
【００１８】
メモリ部２７は、制御部１８からの指示に基づき、リコンフィギュラブル回路１２から出力されるデータ信号および／または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部２７はＲＡＭとして構成される。メモリ部２７にデータを書き込んで、そのデータを読み出すためには、少なくとも、それぞれの処理につき１クロック分の時間がかかる。メモリ部２７に格納されたデータ信号は、制御部１８からの指示に基づいて、経路部２９を通じてリコンフィギュラブル回路１２の入力として伝達される。メモリ部２７は、制御部１８からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路１２に供給することができる。なお、メモリ部２７は、設定部１４からの指示によりデータ信号を出力してもよい。設定部１４がコマンドメモリとして構成されている場合、メモリ部２７の出力タイミングを指示するコマンドデータを有し、制御部１８からのカウント値に基づいてコマンドデータをメモリ部２７に出力してもよい。この場合、設定部１４は、メモリ部２７の動作を制御する制御部としても機能する。
【００１９】
リコンフィギュラブル回路１２は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路（以下、ＦＦ回路とも呼ぶ）の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部１４により供給される設定データ４０に基づいて設定される。設定データ４０は、以下の手順で生成される。
【００２０】
集積回路装置２６により実現されるべきプログラム３６が、記憶部３４に保持されている。プログラム３６は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイル部３０は、記憶部３４に格納されたプログラム３６をコンパイルし、プログラム全体のデータフローグラフ（ＤＦＧ）３８に変換して記憶部３４に格納する。データフローグラフ３８は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ３８は、上から下に向かって演算が進むように形成される。
【００２１】
データフローグラフ処理部３１は、コンパイル部３０により生成された１以上のＤＦＧを、リコンフィギュラブル回路１２の論理回路の集合体に含まれる論理回路の数に応じて、複数のサブＤＦＧに分割する。具体的には、１以上のＤＦＧを、リコンフィギュラブル回路１２の段あたりの論理回路数、すなわち列数以下となる大きさに分割する。リコンフィギュラブル回路１２が６列×３段の論理回路を有して構成される場合、ＤＦＧが６列を超えている場合に、列数を６以下とするサブＤＦＧに分割する。
【００２２】
データフローグラフ処理部３１は、分割した複数のサブＤＦＧを、論理回路の列数を超えないように結合する。これにより、列数を論理回路の集合体の列数以下とする結合ＤＦＧを生成する。続いて、データフローグラフ処理部３１は、結合ＤＦＧを分割して、複数のサブ結合ＤＦＧを生成する。このとき、サブ結合ＤＦＧの段数が、リコンフィギュラブル回路の論理回路の集合体の個数以下となるように、結合したＤＦＧは分割される。具体的に、データフローグラフ処理部３１は、結合したＤＦＧをリコンフィギュラブル回路１２の回路の段数以下となるように再分割する。リコンフィギュラブル回路１２が６列×３段の論理回路を有して構成される場合、結合したＤＦＧは、３段以下のサブ結合ＤＦＧに再分割される。分割した複数のサブ結合ＤＦＧは記憶部３４に格納される。リコンフィギュラブル回路１２に、分割した複数のサブ結合ＤＦＧにより定められる回路を繰り返し生成することで、リコンフィギュラブル回路１２上に所期の回路を表現することが可能となる。
【００２３】
また、プログラム３６の構成上、コンパイルした時点で複数のＤＦＧが生成されることもある。例えば、互いに関連する複数のプログラム３６をコンパイルする場合や、繰り返し呼び出されるルーチンプログラムが複数存在するプログラム３６をコンパイルする場合などである。処理装置１０において、複数のＤＦＧがコンパイル部３０により生成され、またコンパイル部３０により生成されたＤＦＧをデータフローグラフ処理部３１が上述した処理を行うことで、複数のサブ結合ＤＦＧが生成される。
【００２４】
このようにして生成された複数のデータフローグラフ３８は、その実行順序が不明であるため、それを適切に定める必要がある。複数のデータフローグラフ３８に対して実行順序を任意に設定すると、演算に必要な入力データが揃っていないデータフローグラフ３８を実行しなければならない事態も生じ得る。例えば、今回実行するデータフローグラフ３８に必要な入力データを生成するためのデータフローグラフ３８が、今回実行するデータフローグラフ３８の実行順序よりも後にあるような場合には、その回路の演算処理が実現不可能となることもある。また、メモリ部２７から必要な入力データを読み出す時間がかかり、その間、データ待ちのために処理を停止するような場合は、短時間で回路のコンフィギュレーションを実現することが困難となる。これは、処理のリアルタイム性、すなわち高速性が要求される場合に、大きな制約となることがある。
【００２５】
以上の理由から、実施例のデータフローグラフ処理部３１は、最終的にリコンフィギュラブル回路１２にマッピングする回数を少なくするように、データフローグラフ３８を適切に処理する。データフローグラフ３８の処理方法については、図６以降の説明において詳細に示す。
【００２６】
設定データ生成部３２は、データフローグラフ処理部３１により決定されたデータフローグラフ３８をもとに、設定データ４０を生成する。設定データ４０は、データフローグラフ３８をリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。以下では、設定データ生成部３２が、１つの生成すべきターゲット回路を分割してできる複数の回路の設定データ４０を生成する例について説明する。
【００２７】
図２は、ターゲット回路４２を分割してできる複数の回路について説明するための図である。１つのターゲット回路４２を分割して生成される回路を、「分割回路」と呼ぶ。この例では、１つのターゲット回路４２が、上下方向および左右方向に４つの分割回路、すなわち分割回路Ａ、分割回路Ｂ、分割回路Ｃ、分割回路Ｄに分割されている。複数の分割回路は、リコンフィギュラブル回路１２の列数の範囲内でそれぞれ結合され、実質的に等価な新たなターゲット回路として再生成されることになる。
【００２８】
本実施例では、生成すべきターゲット回路４２の横方向のノード数がリコンフィギュラブル回路１２の横方向のノード数（列数）よりも大きい場合、リコンフィギュラブル回路１２にマッピングできる大きさになるように、ターゲット回路４２のデータフローグラフ３８がデータフローグラフ処理部３１において左右方向に分割される。なおノードは、データフローグラフ３８において論理回路の機能を表現する。また、リコンフィギュラブル回路１２の列数や、ＡＬＵ間の入出力制限などにより、上下方向のノード間の接続を変更する必要がある場合に、ターゲット回路４２のデータフローグラフ３８が上下方向に分割される。リコンフィギュラブル回路１２の配列構造は、制御部１８からデータフローグラフ処理部３１に伝えられてもよく、また予め記憶部３４に記録されていてもよい。本実施例において、データフローグラフ３８は演算間の実行順序の依存関係を表現するものであり、データフローグラフ処理部３１は、データフローグラフを、リコンフィギュラブル回路１２の列数に応じて分割し、分割したデータフローグラフをサブデータフローグラフとして設定する。
【００２９】
データフローグラフ処理部３１は、複数のサブＤＦＧの接続関係を調査する。なお、左右方向のみに分割した場合も同様に、データフローグラフ処理部３１は、その接続関係を調査する必要がある。接続関係を調査すると、データフローグラフ処理部３１は、接続関係にしたがって、複数のサブＤＦＧを結合し、１つの大きな結合ＤＦＧを生成する。なお、この結合ＤＦＧは、その列数がリコンフィギュラブル回路１２の列数以下となるように生成される。データフローグラフ処理部３１は、結合したＤＦＧを、リコンフィギュラブル回路１２の段数以下に分割していき、複数のサブ結合ＤＦＧを生成する。
【００３０】
設定データ生成部３２は、複数のサブ結合ＤＦＧの設定データ４０を生成し、記憶部３４に記憶する。複数の設定データ４０は、リコンフィギュラブル回路１２の段数以下に分割した複数のサブ結合ＤＦＧを、リコンフィギュラブル回路１２にマッピングするためのデータとして表現したものである。これにより、リコンフィギュラブル回路１２の回路規模よりも大きいデータフローグラフを、リコンフィギュラブル回路１２にマッピング可能な大きさに処理することが可能となる。このように、リコンフィギュラブル回路１２の列数に応じてＤＦＧを再構成して、ターゲット回路４２の設定データ４０を生成することにより、汎用性の高い処理装置１０を実現することが可能となる。別の視点からみると、実施例の処理装置１０によれば、回路規模の小さいリコンフィギュラブル回路１２を用いて、所望の回路を再構成することが可能となる。
【００３１】
図３は、リコンフィギュラブル回路１２の構成を示す。リコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路５０より構成される論理回路列を複数備える。具体的に、リコンフィギュラブル回路１２は、論理回路列の多段接続構造と、各段に設けられた接続部５２を備えて構成される。ここで多段とは、２以上の段であることを意味する。接続部５２は、前段の論理回路の出力と後段の論理回路の入力の任意の接続関係あるいは予め定められた接続関係の組合せの中から選択された接続関係を設定することができる。また接続部５２は、前段の論理回路の出力信号を保持することができる。リコンフィギュラブル回路１２では、論理回路の多段接続構造により、上段から下段に向かって演算が進められる。なお、リコンフィギュラブル回路１２は、論理回路列の１段の接続構造を有していてもよい。
【００３２】
リコンフィギュラブル回路１２は、論理回路５０としてＡＬＵ(Arithmetic Logic Unit)を有している。ＡＬＵは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ＡＬＵは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ＡＬＵが、２つの入力端子と２つの出力端子を有して構成される。
【００３３】
図示のように、リコンフィギュラブル回路１２は、縦方向にＸ個、横方向にＹ個のＡＬＵが配置されたＸ段Ｙ列のＡＬＵアレイとして構成される。第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１Ｙには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第１段の接続部５２に設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２Ｙに入力される。第１段の接続部５２においては、第１段のＡＬＵ列の出力と第２段のＡＬＵ列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、最終段である第Ｘ段の接続部５２まで同様の構成である。ＡＬＵ列は、ＡＬＵの集合体に相当する。
【００３４】
なお、図３のリコンフィギュラブル回路１２においては、接続部５２が、ＡＬＵ列と交互に１段ずつ設けられた構成を示している。この接続部５２を各ＡＬＵ列の下段に配置することにより、リコンフィギュラブル回路１２は、１段ずつのＡＬＵ列から構成されるＸ段のリコンフィギュラブルユニットに分割されることになる。具体的に、１段のリコンフィギュラブルユニットは、１段のＡＬＵ列と１段の接続部５２で構成される。この分割は、接続部５２に含まれるＦＦ回路にしたがうものであり、例えば２段のＡＬＵ列ごとに接続部５２を設け、２段のＡＬＵ列の間を、ＦＦ回路を有しない接続部で接続する場合には、２段ずつのＡＬＵ列で構成されるＸ／２段のリコンフィギュラブルユニットに分割されることになる。それ以外にも、ＦＦ回路を所定段のＡＬＵ列ごとに設けることにより、所望段のリコンフィギュラブルユニットを構成することができる。
【００３５】
回路のコンフィギュレーションは１クロックで行われる。具体的に、設定部１４が１クロックごとに設定データをリコンフィギュラブル回路１２にマッピングする。各ＡＬＵ列の出力は、後段の接続部５２に保持される。なお、メモリ部２７へのデータの書込および読出しも、それぞれ１クロックで行われる。したがって、メモリ部２７にデータを書き込んで、そのデータを読み出すためには、少なくともＡＬＵ列２段分の処理に相当する時間が必要となる。
【００３６】
接続部５２は、外部やメモリ部２７から供給される変数や定数を、所期のＡＬＵに供給する機能を有している。この機能を途中入力機能と呼ぶ。また、接続部５２は、前段のＡＬＵの演算結果を外部に直接出力することもできる。この機能を途中出力機能と呼ぶ。この構成により、多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。
【００３７】
図４は、データフローグラフ３８の構造を説明するための図である。データフローグラフ３８においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されており、ノードを表現する。設定データ生成部３２は、このデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングするための設定データ４０を生成する。実施例では、特にデータフローグラフ３８をリコンフィギュラブル回路１２にマッピングしきれない場合に、データフローグラフ３８を複数の領域に分割して結合し、さらに再分割することによって分割回路の設定データ４０を生成する。データフローグラフ３８による演算の流れを回路上で実現するべく、設定データ４０は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ４０は、各論理回路５０の機能を選択するセレクタに供給する選択情報、接続部５２の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
【００３８】
図１に戻って、回路の構成時、制御部１８は、１つのターゲット回路４２を構成するための複数の設定データ４０を記憶部３４から選択して読み出す。設定部１４がコマンドメモリとして構成されている場合、制御部１８は設定部１４に対してプログラムカウンタ値を与え、設定部１４は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路１２に設定する。なお、設定部１４は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、制御部１８が記憶部３４から設定データ４０を受けて、その設定データ４０を設定部１４に供給してもよいが、制御部１８を介さずに、予め設定部１４に設定データを格納しておいてもよい。この場合、制御部１８は、設定部１４に予め格納された複数の設定データの中からターゲット回路４２に応じた設定データがリコンフィギュラブル回路１２に供給されるように、設定部１４のデータ読出しを制御する。
【００３９】
設定部１４は、設定データ４０をリコンフィギュラブル回路１２に設定し、リコンフィギュラブル回路１２の回路を逐次再構成させる。これにより、リコンフィギュラブル回路１２は、ターゲット回路に基づく所期の演算を実行できる。リコンフィギュラブル回路１２は、基本セルとして高性能の演算能力のあるＡＬＵを用いており、またリコンフィギュラブル回路１２および設定部１４を１チップ上に構成することから、コンフィグレーションを高速に、例えば１クロックで実現することができる。制御部１８はクロック機能を有し、クロック信号は、出力回路２２およびメモリ部２７に供給される。また制御部１８は４進カウンタを含み、カウント信号を設定部１４に供給してもよい。
【００４０】
図５は、リコンフィギュラブル回路１２におけるＡＬＵ間の接続関係を示す図である。なお、図５では、ＡＬＵ列の間に配置される接続部５２の図示を省略している。図５に示すリコンフィギュラブル回路１２では、横方向に６個、縦方向に３個のＡＬＵが配置されたＡＬＵアレイとして構成される。第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第１段の接続部５２に設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６に入力される。第１段の接続部５２においては、第１段のＡＬＵ列の出力と第２段のＡＬＵ列の入力の間で、一定の接続制限が課された接続関係を実現できるように結線が構成されており、設定により、その範囲内での所期の結線が有効となる。なお、第２段の接続部５２においても同様である。最終段である第３段のＡＬＵ列は演算の最終結果を出力する。接続部５２は、ＡＬＵ段の間で、物理的に近接して配置された論理回路同士を接続可能とするように構成される。これにより、配線長を短くすることができ、回路規模を削減することができる。その結果、低消費電力化及び処理高速化が可能となる。
【００４１】
図５に示すリコンフィギュラブル回路１２では、３段×６列のＡＬＵが存在し、上段における１つのＡＬＵからの配線は、下段の３つのＡＬＵに制限される。図示のように、下段における１つのＡＬＵの入力は、上段における直上のＡＬＵと、直上のＡＬＵの左右のＡＬＵに制限され、また上段における１つのＡＬＵの出力は、下段における直下のＡＬＵと、直下のＡＬＵの左右のＡＬＵに制限される。例えば、ＡＬＵ２２に関してみると、その入力は、ＡＬＵ１１、ＡＬＵ１２、ＡＬＵ１３の３方向に制限され、その出力は、ＡＬＵ３１、ＡＬＵ３２、ＡＬＵ３３の３方向に制限される。なお、左または右に対応するＡＬＵが存在しなければ、その入力および出力は、それぞれ２方向に制限される。このような配線とすることにより、上下段の全てのＡＬＵ間の接続を可能とする場合と比較すると、配線数を大幅に削減することが可能となる。
【００４２】
図６は、本実施例におけるデータフローグラフ３８の処理フローを示す。コンパイル部３０がプログラム３６をコンパイルして（Ｓ１０）、１以上のデータフローグラフ３８を生成する（Ｓ１２）。データフローグラフ処理部３１は、生成された１以上のデータフローグラフ３８を、列数がリコンフィギュラブル回路１２の列数以下となるように分割して、サブＤＦＧを生成し（Ｓ１４）、分割した複数のサブＤＦＧの接続関係を調査して決定する（Ｓ１６）。
【００４３】
次に、データフローグラフ処理部３１は、複数のサブＤＦＧの接続関係をもとに、複数のサブＤＦＧを結合して、結合ＤＦＧを生成する（Ｓ１８）。また、データフローグラフ処理部３１は、複数のサブＤＦＧを結合することで生成される結合ＤＦＧを、リコンフィギュラブル回路１２の段数以下となるように再分割する（Ｓ２０）。設定データ生成部３２は、再分割したＤＦＧをもとに設定データ４０を生成する（Ｓ２２）。設定データ４０はリコンフィギュラブル回路１２の機能および接続関係などを設定し、リコンフィギュラブル回路１２は、設定データ４０により各種機能を設定されることで、所期の回路処理を実行することができる。
【００４４】
図７は、データフローグラフ処理部３１の構成を示す。データフローグラフ処理部３１は、第１ＤＦＧ分割部６０、ＤＦＧ結合部６１、および第２ＤＦＧ分割部６２を備える。実施例におけるデータフローグラフ処理機能は、処理装置１０において、ＣＰＵ、メモリ、メモリにロードされたＤＦＧ処理用プログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。ＤＦＧ処理用プログラムは、処理装置１０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
【００４５】
（ＤＦＧの分割）
第１ＤＦＧ分割部６０は、コンパイル部３０により生成されたＤＦＧの列数がリコンフィギュラブル回路１２の論理回路の集合体の数を超える場合、ＤＦＧの列数が論理回路の集合体の数以下となるようにＤＦＧを分割する。これにより、ＤＦＧは複数のサブＤＥＧに分割される。
【００４６】
図８は、リコンフィギュラブル回路１２の回路規模を超えるＤＦＧの例を示す。図中、四角の中に示す数字は、ノードの番号を示す。このＤＦＧは１２段７列のノードを有して構成される。図５に示すように、３段６列のＡＬＵが存在する場合、ＤＦＧは縦横ともにＡＬＵ回路の大きさを超えている。最終的には、ＤＦＧを分割して、ＡＬＵ回路にマッピングできる大きさ、すなわち３段６列以下となる大きさにする必要があるが、本実施例では、段方向の分割は後回しとし、最初に第１ＤＦＧ分割部６０が、列方向のノード数が６列以下となるようにＤＦＧを分割していく。
【００４７】
第１ＤＦＧ分割部６０は、列方向を６列以下とし、また上下段の接続に用いられるノードが６列を超えないように、図８に示す７列のＤＦＧを分割して、サブＤＦＧを生成する。このとき、図５に示すように、ＡＬＵ間には３方向の接続制限が課されているものとする。
【００４８】
図８において、３段目と４段目の間の接続関係について検討する。ノード２１は、ノード１５およびノード１７と接続するため、図示のように第２列に配置される必要がある。４段目では、第２列のノード２１から第６列のノード２５まで隙間を空けずに配置されるが、ノード２５は、第７列のノード２０と接続される。したがって、４段目のＡＬＵは、３段目の７列のＡＬＵに対して接続されることになる。そのため３段目のＡＬＵ列と４段目のＡＬＵ列の間は、直接接続することができず、上下方向に分割する必要があることが分かる。
【００４９】
同様に、６段目と７段目の間の接続関係について検討する。７段目においてノード４１からノード４７まで隙間なく配置されているが、６段目からみると、ノード３４からノード３９までの出力が、７段目の７つのＡＬＵに接続される。したがって、６段目のＡＬＵは、７段目の７列のＡＬＵに対して接続されることになる。そのため６段目のＡＬＵ列と７段目のＡＬＵ列の間は、直接接続することができず、分割する必要があることが分かる。以上の処理は、第１ＤＦＧ分割部６０により実行される。
【００５０】
図９は、図８に示すＤＦＧを分割して生成した６つのサブＤＦＧを示す。第１ＤＦＧ分割部６０は、列数を６以下とするようにサブＤＦＧを生成する。なお、サブＤＦＧは、できるだけノードを左側および上側につめるように生成される。サブＤＦＧ３８ａ〜３８ｆは、列方向のみを６列以下にするように生成されるが、段方向についての制限は課されない。
【００５１】
（サブＤＦＧ接続関係の決定）
ＤＦＧ結合部６１は、複数のサブＤＦＧの接続関係を調査する。例えば、サブＤＦＧ３８ａの出力が別のサブＤＦＧ３８ｃの入力に必要とされる場合、サブＤＦＧ３８ａの出力がデータフローグラフ３８ｃの入力と接続する関係にあることが定められる。ＤＦＧ結合部６１は、このようなサブＤＦＧ間の接続関係を調査する。
【００５２】
図１０は、ＤＦＧ結合部６１により定められる図９に示すサブＤＦＧの接続関係を示す。ここでは、サブＤＦＧを１つのブロックとしてみなし、ブロック間の接続関係を定めている。この接続関係図では、処理の流れを上段から下段にかけて示す。サブＤＦＧ３８ａとサブＤＦＧ３８ｂの間には接続関係はない。サブＤＦＧ３８ａの出力は、サブＤＦＧ３８ｃおよびサブＤＦＧ３８ｄの入力に接続され、サブＤＦＧ３８ｂの出力は、サブＤＦＧ３８ｃの入力に接続される。またサブＤＦＧ３８ｃの出力は、サブＤＦＧ３８ｅおよびサブＤＦＧ３８ｆの入力に接続される。なお、この接続関係は、図８に示すＤＦＧのノード間の接続から導き出されるものである。
【００５３】
（サブＤＦＧの結合）
図１１は、サブＤＦＧを結合するフローチャートを示す。なおサブＤＦＧを仮想的なノード空間に配置する具体的な処理については、図１２のフローチャートに示される。まず、図１０に示す接続関係図をもとに、サブＤＦＧを、他のサブＤＦＧに入力される出力をもつＤＦＧ群（ＤＦＧ群１）と、他のサブＤＦＧに入力される出力をもたないＤＦＧ群（ＤＦＧ群２）に分類する（Ｓ１０２）。図１０において、サブＤＦＧ３８ａの出力はサブＤＦＧ３８ｃ、３８ｄの入力となっており、サブＤＦＧ３８ｂの出力はサブＤＦＧ３８ｃの入力となっており、サブＤＦＧ３８ｃの出力はサブＤＦＧ３８ｅ、３８ｆの入力となっている。したがって、サブＤＦＧ３８ａ、３８ｂ、３８ｃはＤＦＧ群１に属し、サブＤＦＧ３８ｄ、３８ｅ、３８ｆは、その出力が他のサブＤＦＧに入力されないため、ＤＦＧ群２に属する。
【００５４】
ＤＦＧ群１に属するサブＤＦＧは、その出力を必要とする他のサブＤＦＧが存在しているため、サブＤＦＧを結合して生成する結合ＤＦＧの規模を小さくするためには、できるだけ上段に配置されることが好ましい。これは、ＤＦＧ群１のサブＤＦＧの下方に、さらにサブＤＦＧ群２のサブＤＦＧを結合する必要があるためである。一方、ＤＦＧ群２に属するサブＤＦＧは、自身の入力データを受け取り可能な位置であれば、基本的にはどこに配置してもよい。したがって、本実施例では、ＤＦＧ群１の結合処理のあとに、ＤＦＧ群２の結合処理を実行することとする。これにより、ＤＦＧ群２に属するサブＤＦＧを、既に配置済みのサブＤＦＧ間の隙間などに配置結合させることが可能となり、結合して生成する結合ＤＦＧの段数を減らすことができる。したがって、最終的に結合ＤＦＧを再分割して生成するサブ結合ＤＦＧの個数を少なくできるため、リコンフィギュラブル回路１２への効率的なマッピング処理が可能となる。
【００５５】
ＤＦＧ群１において、図１０に示す接続関係の各段ごとに、サブＤＦＧをノード数の多い順に探索する（Ｓ１０４）。ＤＦＧ群１の１段目のサブＤＦＧ３８ａ、３８ｂのノード数を比較すると、サブＤＦＧ３８ａのノード数が１７、サブＤＦＧ３８ｂのノード数が３であり、サブＤＦＧ３８ａのノード数の方が多い。したがって、ＤＦＧ群の１段目では、サブＤＦＧ３８ａ、サブＤＦＧ３８ｂの順番が設定される。２段目はサブＤＦＧ３８ｃのみであるため、ノード数の多い順を探索する必要はない。ｍをＤＦＧ群１の接続関係の総段数とする（Ｓ１０６）。ＤＦＧ群１は、１段目のサブＤＦＧ３８ａ、３８ｂと２段目のサブＤＦＧ３８ｃとから構成されており、したがってＤＦＧ群１の総段数ｍは２である。ｉ＝１（Ｓ１０８）、ｊ＝１（Ｓ１１０）をセットし、ｎをＤＦＧ群１の接続関係のｉ段目のＤＦＧの総数とする（Ｓ１１２）。ＤＦＧ群１の１段目のサブＤＦＧの総数は２であるため、ｎに２がセットされる。
【００５６】
ＤＦＧ群１の接続関係のｉ段目、ｊ個目のサブＤＦＧを選択する（Ｓ１１４）。ここでは、まず１段目１個目のサブＤＦＧ３８ａが選択される。続いて、選択したサブＤＦＧ３８ａに対して、結合処理を実行する（Ｓ１２０）。結合処理については、図１２に関連して後述する。
【００５７】
結合処理の後、ｊがｎに達しているか否かを判断する（Ｓ１２２）。ここで、ｊ＝１、ｎ＝２であるため（Ｓ１２２のＮ）、ｊに１を加えて（Ｓ１２４）、Ｓ１１４に戻る。Ｓ１１４では、ＤＦＧ群１の１段目２個目のサブＤＦＧ３８ｂが選択され、結合処理される。この後、ｊ＝ｎ（Ｓ１２２のＹ）となり、ｉがｍに達しているか否かを判断する（Ｓ１２６）。ｉ＝１、ｍ＝２であるため（Ｓ１２６のＮ）、ｉに１を加えて（Ｓ１２８）、Ｓ１１０に戻り、ｊを１にセットする。なお、２段目のＤＦＧの総数ｎは１にセットされる。
【００５８】
２段目１個目のサブＤＦＧ３８ｃを選択して、結合処理を行った後、ｊ＝１、ｎ＝１（Ｓ１２２のＹ）により、ｉがｍに達しているか否かを判断する（Ｓ１２６）。ｉ＝２、ｍ＝２であり（Ｓ１２６のＹ）、これによりＤＦＧ群１に属するすべてのサブＤＦＧの結合が終了する。
【００５９】
次に、ＤＦＧ群２に属するサブＤＦＧの結合を行う。ＤＦＧ群２において、ＤＦＧ群２に属するすべてのサブＤＦＧをノード数の多い順に探索する（Ｓ１３０）。ＤＦＧ群２に属するサブＤＦＧ３８ｄのノード数は４、サブＤＦＧ３８ｅのノード数は２３、サブＤＦＧ３８ｆのノード数は４である。なおサブＤＦＧ３８ｄ、３８ｆのノード数は等しく、どちらのサブＤＦＧを先に結合してもよいが、この例ではＤＦＧ３８ｄをＤＦＧ３８ｆの先の順番として、結果としてサブＤＦＧ３８ｅ、サブＤＦＧ３８ｄ、サブＤＦＧ３８ｆの順番が設定される。続いて、ｍをＤＦＧ群２のＤＦＧの総数とする（Ｓ１３２）。ここでは、ｍ＝３となる。またｉに１をセットする（Ｓ１３４）。
【００６０】
設定した順にしたがって、ＤＦＧ群２のｉ個目のサブＤＦＧを選択する（Ｓ１３６）。ここでは、ＤＦＧ群２における１番目のサブＤＦＧ３８ｅが選択される。このサブＤＦＧ３８ｅに対して、結合処理を行う（Ｓ１４０）。結合処理の後、ｉがｍに達しているか否かを判断する（Ｓ１４２）。ｉ＝１、ｍ＝３であるため（Ｓ１４２のＮ）、ｉに１を加えてＳ１３６に戻る。この処理を繰り返し、２個目のサブＤＦＧ３８ｄを選択して結合処理を行い、また３個目のサブＤＦＧ３８ｆを選択して結合処理を行うことで、ｉがｍに到達する（Ｓ１４２のＹ）。以上により、すべてのサブＤＦＧの結合が終了する。
【００６１】
本実施例では、ＤＦＧ群１をＤＦＧ群２よりも先に結合することで、結果として全体では、サブＤＦＧ３８ａ、サブＤＦＧ３８ｂ、サブＤＦＧ３８ｃ、サブＤＦＧ３８ｅ、サブＤＦＧ３８ｄ、サブＤＦＧ３８ｆの順番で結合処理が行われたことになる。
【００６２】
なお、ＤＦＧ群１およびＤＦＧ群２の双方において、本実施例では、上段のサブＤＦＧから結合処理を行っている。これにより、新たに結合処理するサブＤＦＧの入力データは、すでに結合処理されたサブＤＦＧの出力または外部入力とすることができ、入力データの揃うタイミングの時間遅延を低減できる。これは、ＤＦＧの処理が、上から下に向かって演算が進むように実行されるためである。これにより、リコンフィギュラブル回路１２でのコンフィギュレーション処理において、データの読み出し待ちなどを最小限にすることができ、効率的に設定データを作成することが可能となる。
【００６３】
図１２は、図１１のＳ１２０およびＳ１４０に示す結合処理のフローチャートを示す。結合処理では、列数をリコンフィギュラブル回路１２の列数に合わせた仮想的なノード空間に、サブＤＦＧを結合配置させる。
【００６４】
図１３は、列数を６とし、段数を無限とする仮想的なノード空間を示す。結合処理では、このノード空間に収まるように、サブＤＦＧを配置していく。なお、横方向（列方向）をｘ軸とし、縦方向（段方向）をｙ軸としている。
【００６５】
最初に、１番目のサブＤＦＧ３８ａの結合処理の手順を示す。サブＤＦＧ３８ａの結合処理においては、仮想ノード空間に配置されている他のサブＤＦＧは存在しない。まず、結合処理するサブＤＦＧの最上段、最左のノードを選択する（Ｓ２００）。最初に結合処理するサブＤＦＧ３８ａの最上段、最左のノードはノード番号１のノードである（図９参照）。続いて、ｙ＝１（Ｓ２０２）、ｘ＝１（Ｓ２０４）をセットする。続いて、配置位置（ｘ，ｙ）に、すでに他のノードが配置されているか否かを判断する（Ｓ２０６）。サブＤＦＧ３８ａは最初に配置するＤＦＧであるため、（１，１）に配置されているノードは存在しない。（ｘ，ｙ）の位置に他のノードが配置されていない場合（Ｓ２０６のＮ）、最上段且つ最左のノードを（ｘ，ｙ）に配置したときに、サブＤＦＧ３８ａのすべてのノードが配置可能であるか否かを調査する（Ｓ２０８）。
【００６６】
配置調査では、以下の条件を設定する。
（１）配置するサブＤＦＧが、図１３に示す仮想ノード空間を超えないこと。
（２）新たに配置するサブＤＦＧのノードに対して入力されるデータが全て揃うこと。
（３）入出力制限等のリコンフィギュラブル回路特有の制限を満たしていること。
（３）の条件は、例えば図５に示すように、ＡＬＵからの入出力が同列および左右列の３方向に制限されていることなどを含む。
【００６７】
なお、配置するサブＤＦＧ同士は、図８に示すもとのＤＦＧにおける演算関係を維持することが必要である。なお、すでに配置されているノードに対して、配置位置をずらすことにより、ノードの配置が可能となる場合には、配置可能な全ての場合について配置調査を行うことで、全ての選択肢の中から効率的な配置を選択することも可能となる。例えば、サブＤＦＧ３８ａは、ノード１を（１，１）に配置する場合以外に配置できる位置を有していないが、例えば他のサブＤＦＧで、（１，１）にも（２，１）にも配置可能な場合には、それぞれの場合についての結合処理を行って、最終的に生成される結合ＤＦＧの段数の少ないものを選択することとしてもよい。
【００６８】
配置調査では、上記した条件が、結合処理するサブＤＦＧのすべてのノードに対して満たされているか否かを調査する（Ｓ２１０）。ノード１を、（１，１）の位置に配置した場合に、サブＤＦＧ３８ａの全てのノードを配置することが可能となる。全てのノードを配置可能な場合（Ｓ２１０のＹ）、サブＤＦＧ３８ａのノードを仮想ノード空間に配置して（Ｓ２１８）、１番目のサブＤＦＧ３８ａの結合処理を終了する。
【００６９】
次に、２番目のサブＤＦＧ３８ｂの結合処理の手順を示す。サブＤＦＧ３８ｂの最上段、最左のノードとして存在するノード番号７のノードを選択する（Ｓ２００）。続いて、ｙ＝１（Ｓ２０２）、ｘ＝１（Ｓ２０４）をセットする。次に、ノード７の配置位置（ｘ，ｙ）に、すでに他のノードが配置されているか否かを判断する（Ｓ２０６）。
【００７０】
この場合、サブＤＦＧ３８ａがすでに配置済みであって、（１，１）の位置にはすでにノード１が配置されている（Ｓ２０６のＹ）。このとき、ｘ＝１であって、Ｘｍａｘである６には達していないため（Ｓ２１２のＮ）、ｘに１を加えて（Ｓ２１６）、（２，１）の位置に他のノードが配置されているか否かを判断する（Ｓ２０６）。この処理はｘをインクリメントして、ｘ＝６となるまで続けられる（Ｓ２１２のＹ）。続いて、ｙに１を加えて（Ｓ２１４）、またｘ＝１をセットする（Ｓ２０４）。この処理は、他のノードが配置されていない（ｘ，ｙ）が見つけられるまで繰り返される。この探索処理を繰り返すと、（６，３）の位置に他のノードが配置されていないことが判断される（Ｓ２０６のＮ）。続いて、ＤＦＧ３８ｂのノード７を（６，３）に配置した場合に、ＤＦＧ３８ｂの他のすべてのノードが配置可能であるか否かを調査する（Ｓ２０８）。この場合、すべてのノードの配置が可能であるため（Ｓ２１０のＹ）、サブＤＦＧ３８ｂを仮想ノード空間に配置して（Ｓ２１８）、サブＤＦＧ３８ｂの結合処理を終了する。
【００７１】
次に、３番目のサブＤＦＧ３８ｃの結合処理の手順を示す。サブＤＦＧ３８ｃの最上段、最左のノードとして存在するノード番号２１のノードを選択する（Ｓ２００）。続いて、ｙ＝１（Ｓ２０２）、ｘ＝１（Ｓ２０４）をセットする。次に、ノード２１の配置位置（ｘ，ｙ）に、すでに他のノードが配置されているか否かを判断する（Ｓ２０６）。
【００７２】
この場合、サブＤＦＧ３８ａおよびサブＤＦＧ３８ｂがすでに配置済みであり、したがって（ｘ，ｙ）を探索すると、（６，３）の位置まで他のノードが配置されている（Ｓ２０６のＹ）。探索の結果、（１，４）の位置に、ノード２１を配置できることが判断される（Ｓ２０６のＮ）。
【００７３】
このとき、（１，４）の位置にノード２１を配置することは、ノード２７が仮想ノード空間からはみ出すため、適切でない。またノード２１はノード１５とノード１７の出力を入力としており（図８参照）、ノード２１を（１，４）に配置すると、ＡＬＵの入出力制限のため、ノード１５には接続可能であるが、ノード１７とは接続することができない。以上により、ノード２１は（１，４）に配置することができない。また、ノード２５がノード１４と重なるため、ノード２１は（２，４）にも配置できない。したがって、ノード２５は４段目に配置できないことが分かる。
【００７４】
ノード間を直接的に接続することができない場合、ノードの出力データは、一旦メモリ部２７に格納される。出力データがメモリ部２７を経由して所期のＡＬＵに入力されるためには、メモリ部２７の書き込みと読み出しにかかる時間を考慮すると、少なくとも２クロック分の時間が必要となる。このように、リコンフィギュラブル回路１２の論理回路の出力データを一旦メモリ部２７に書き込み、そのデータを読み出して、異なる又は同一の論理回路に入力する際に、時間遅延が発生する。リコンフィギュラブル回路１２において、ＡＬＵ列の１段分の演算処理は１クロックかかるため、したがってメモリ部２７に一旦格納して、再度読み出す処理は、少なくともＡＬＵ２段分の演算処理時間に相当する。
【００７５】
本実施例では、メモリ部２７への書き込み、および読出し時間を考慮してノードを配置することで、ノードにおける処理時には、必ず入力データが揃っている状況をつくることができる。これにより、切れ目無くＤＦＧを処理できるとともに、データ待ちの間に他の演算処理を実行させることが可能であるため、全体の処理時間を短縮化でき、処理パフォーマンスを向上できる。さらに、消費電力を少なくできるという利点もある。
【００７６】
この場合、ノード１５、ノード１７が３段目に配置されているため、ノード２１を４段目に配置できないのであれば、ノード２１は、６段目以降に配置しなければいけないことになる。このように、新たに結合するサブＤＦＧのノードの位置は、既に配置されたノードの位置から、時間遅延分に相当するＡＬＵ列の段数以上の段数をあけることにより決定される。（ｘ，ｙ）の探索を行い、ノード２１を（２，６）の位置に配置した場合に、サブＤＦＧ３８ｃのすべてのノードを仮想ノード空間上に配置することが可能となる（Ｓ２１０のＹ）。このとき、ノード２５はノード２０と接続される。このように、メモリ部２７からの読出し処理を介さない場合、サブＤＦＧの結合処理は、サブＤＦＧ間におけるノードの接続を維持するように行われる。以上によりサブＤＦＧ３８ｃを仮想ノード空間に配置して（Ｓ２１８）、サブＤＦＧ３８ｃの結合処理を終了する。
【００７７】
次に、４番目のサブＤＦＧ３８ｅの結合処理の手順を示す。サブＤＦＧ３８ｅの最上段、最左のノードとして存在するノード番号４１のノードを選択する（Ｓ２００）。以下、Ｓ２０２以降の処理を実行すると、ノード４１を（１，９）の位置に配置したとき、ノード４１〜４６が直上の段のノードと接続することができ、サブＤＦＧ３８ｅのすべてのノードを配置することができる（Ｓ２１０のＹ）。サブＤＦＧ３８ｅを仮想ノード空間に配置して（Ｓ２１８）、サブＤＦＧ３８ｅの結合処理を終了する。
【００７８】
次に、５番目のサブＤＦＧ３８ｄの結合処理の手順を示す。サブＤＦＧ３８ｄの最上段、最左のノードとして存在するノード番号２６のノードを選択する（Ｓ２００）。ノード２６はノード１９からの出力データを入力としている。したがって、ノード２６を配置可能な位置は、ＡＬＵの入出力制限の関係に基づいてノード１９から出力データを直接受け取れる（４，４）、（５，４）、（６，４）の位置か、または一旦メモリ部２７に格納して、それから読み出す場合には６段目以降の位置である必要がある。Ｓ２０２以降の処理を実行すると、ノード２６を（１，１０）の位置に配置したとき、サブＤＦＧ３８ｄのすべてのノードを配置することができる（Ｓ２１０のＹ）。以上によりサブＤＦＧ３８ｄを仮想ノード空間に配置して（Ｓ２１８）、サブＤＦＧ３８ｄの結合処理を終了する。
【００７９】
最後に、６番目のサブＤＦＧ３８ｆの結合処理の手順を示す。サブＤＦＧ３８ｆの最上段、最左のノードとして存在するノード番号４７のノードを選択する（Ｓ２００）。ノード４７はノード３９からの出力データを入力としている。したがって、ノード４７を配置可能な位置は、ＡＬＵの入出力制限の関係に基づいてノード３９から出力データを直接受け取れる（５，９）、（６，９）の位置か、または一旦メモリ部２７に格納して、それから読み出す場合には１１段目以降の位置である必要がある。Ｓ２０２以降の処理を実行すると、ノード４７を（６，１１）の位置に配置したとき、サブＤＦＧ３８ｆのすべてのノードを配置することができる（Ｓ２１０のＹ）。以上によりサブＤＦＧ３８ｆを仮想ノード空間に配置して（Ｓ２１８）、サブＤＦＧ３８ｆの結合処理を終了する。
【００８０】
図１４は、結合処理の結果、生成された結合ＤＦＧを示す。結合ＤＦＧの列数は、リコンフィギュラブル回路１２の列数以下となるように設定される。リコンフィギュラブル回路１２へのマッピング効率を高めるために、結合ＤＦＧの列数は、リコンフィギュラブル回路１２の列数と等しくなるように定められる。
【００８１】
本実施例では、ＤＦＧ群１およびＤＦＧ群２のそれぞれにおいて、サブＤＦＧに含まれるノード数が多い順に配置処理を行っている。ノード数の少ないサブＤＦＧを後から配置結合させることで、サブＤＦＧを結合処理して空いた隙間に、ノード数の少ないサブＤＦＧを効率的に配置する可能性を高めることができ、結合ＤＦＧの段数を減らすことができる。本実施例では、サブＤＦＧ３８ｅをサブＤＦＧ３８ｆよりも先に配置させているが、サブＤＦＧ３８ｆを先に配置させると、サブＤＦＧ３８ｅの位置が下方にずれるため、結合ＤＦＧの段数が増えることになる。
【００８２】
以上の処理により、結合ＤＦＧの段数を少なくできることで、処理時間を短縮化でき、処理パフォーマンスを向上できる。さらに、消費電力が少なくなる利点もある。また、コマンドデータ量を削減できるため、コマンドメモリを小さく構成することができ、したがって回路規模を小さくできる。
【００８３】
（結合したＤＦＧの再分割）
図７に戻って、第２ＤＦＧ分割部６２は、ＤＦＧ結合部６１において結合された結合ＤＦＧを、リコンフィギュラブル回路１２の段数に収まるように分割する。ＡＬＵ列の段数は３段であるため（図５参照）、結合ＤＦＧを３段ごとに分割する。図１４に示すように、結合ＤＦＧは、点線の部分で分割され、最終的に５つのサブ結合ＤＦＧが作成される。図示の例では、ＤＦＧi、ＤＦＧii、ＤＦＧiii、ＤＦＧiv、ＤＦＧvが生成される。なお、生成されるサブ結合ＤＦＧは、もとの結合ＤＦＧにおける順番どおりに処理すれば、データ待ちは発生しない。したがって、サブ結合ＤＦＧの処理順序は、上のものから自動的に決定することができ、処理順序を改めて検討する必要はない。ノード７とノード１４のように、点線部分をまたがるノード間のデータは、経路部２４を通じて、メモリ部２７を介さずにリコンフィギュラブル回路１２にフィードバックされる。このように、３段目から４段目のデータの受け渡しには、データ待ち時間は発生しない。
【００８４】
３段ずつ分割されたサブ結合ＤＦＧは、記憶部３４に格納される。設定データ生成部３２は、サブＤＦＧからそれぞれ設定データを生成する。なお、分割されたサブ結合ＤＦＧは、直接設定データ生成部３２に供給されてもよい。
【００８５】
以上、本発明を実施例もとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００８６】
例えば、リコンフィギュラブル回路１２におけるＡＬＵの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
【００８７】
また、図１では、処理装置１０が１つのリコンフィギュラブル回路１２を有する場合を示しているが、複数のリコンフィギュラブル回路１２を有していてもよい。例えば、図１７に示すような接続関係図が生成された場合であっても、接続関係図により並列処理可能なＤＦＧが分かるため、３つのリコンフィギュラブル回路１２が存在する場合は、２段目の３つのＤＦＧを同時に処理することが可能となり、データ処理時間を短縮することが可能となる。
【００８８】
今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８９】
【図１】実施例に係る処理装置の構成図である。
【図２】ターゲット回路を分割してできる複数の回路について説明するための図である。
【図３】リコンフィギュラブル回路の構成図である。
【図４】データフローグラフの構造を説明するための図である。
【図５】リコンフィギュラブル回路におけるＡＬＵ間の接続関係を示す図である。
【図６】本実施例におけるデータフローグラフの処理フローチャートである。
【図７】データフローグラフ処理部の構成図である。
【図８】リコンフィギュラブル回路の回路規模を超えるＤＦＧの例を示す図である。
【図９】図８に示すＤＦＧを分割して生成した６つのサブＤＦＧを示す図である。
【図１０】ＤＦＧ結合部により定められるサブＤＦＧの接続関係図である。
【図１１】サブＤＦＧを結合するフローチャートである。
【図１２】図１１に示す結合処理のフローチャートである。
【図１３】仮想的なノード空間を示す図である。
【図１４】結合して生成された結合ＤＦＧを示す図である。
【符号の説明】
【００９０】
１０・・・処理装置、１２・・・リコンフィギュラブル回路、１４・・・設定部、１８・・・制御部、２２・・・出力回路、２４・・・経路部、２６・・・集積回路装置、２７・・・メモリ部、２９・・・経路部、３０・・・コンパイル部、３１・・・データフローグラフ処理部、３２・・・設定データ生成部、３４・・・記憶部、３６・・・プログラム、３８・・・データフローグラフ、４０・・・設定データ、５０・・・論理回路、５２・・・接続部、６０・・・第１ＤＦＧ分割部、６１・・・ＤＦＧ結合部、６２・・・第２ＤＦＧ分割部。
【図１】
2006004345.tif 000003
【図２】
2006004345.tif 000004
【図３】
2006004345.tif 000005
【図４】
2006004345.tif 000006
【図５】
2006004345.tif 000007
【図６】
2006004345.tif 000008
【図７】
2006004345.tif 000009
【図８】
2006004345.tif 000010
【図９】
2006004345.tif 000011
【図１０】
2006004345.tif 000012
【図１１】
2006004345.tif 000013
【図１２】
2006004345.tif 000014
【図１３】
2006004345.tif 000015
【図１４】
2006004345.tif 000016