(57)【特許請求の範囲】
【請求項１】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、
前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置であって、
前記複数のエレメントは、少なくとも１種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれの処理について、第１のメモリエレメントを入力対象とし、第２のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第１の接続情報と、前記第２のメモリエレメントを入力対象とし、前記第１のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第２の接続情報とが格納された接続情報ライブラリを有し、
前記制御ユニットは、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を前記接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する、データ処理装置。
【請求項２】
請求項１において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリには、さらに、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第１のメモリエレメントまたは前記第２のメモリエレメントを出力対象とする処理回路を構成するための第３の接続情報と、前記第１のメモリエレメントまたは前記第２のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする処理回路を構成するための第４の接続情報とが格納されている、データ処理装置。
【請求項３】
請求項２において、前記第１の接続情報は、前記第２のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第２の接続情報は、前記第１のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第３の接続情報は、前記第１のメモリエレメントまたは第２のメモリエレメントに加え前記出力インターフェイスを出力対象とする、データ処理装置。
【請求項４】
請求項１ないし３のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、前記制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決める、データ処理装置。
【請求項５】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法であって、
前記複数のエレメントは、少なくとも１種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該方法は、
データの入出力を伴う複数の処理のそれぞれの処理について、第１のメモリエレメントを入力対象とし、第２のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第１の接続情報と、前記第２のメモリエレメントを入力対象とし、前記第１のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第２の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、方法。
【請求項６】
請求項５において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリは、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第１のメモリエレメントまたは前記第２のメモリエレメントを出力対象とする処理回路を構成するための第３の接続情報と、前記第１のメモリエレメントまたは前記第２のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする処理回路を構成するための第４の接続情報とが格納されている、方法。
【請求項７】
請求項６において、前記第１の接続情報は、前記第２のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第２の接続情報は、前記第１のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第３の接続情報は、前記第１のメモリエレメントまたは第２のメモリエレメントに加え前記出力インターフェイスを出力対象とする、方法。
【請求項８】
請求項５ないし７のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、
当該方法は、
処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決めることを、さらに含む、方法。
【請求項９】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を制御ユニットにより制御するためのプログラムであって、
前記制御ユニットは、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力し、
前記複数のエレメントは、少なくとも１種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該プログラムは、
データの入出力を伴う複数の処理のそれぞれの処理について、第１のメモリエレメントを入力対象とし、第２のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第１の接続情報と、前記第２のメモリエレメントを入力対象とし、前記第１のメモリエレメントを出力対象として前記それぞれの処理を行う処理回路を構成するための第２の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路を再構成可能なユニットを含むデータ処理装置およびその制御方法に関するものである。
【背景技術】
【０００２】
特許文献１には、生物の進化の過程を模倣した最適化手法の１つである遺伝的アルゴリズム（ＧＡ：Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）をもとに考案された遺伝的プログラミング（ＧＰ：Ｇｅｎｅｔｉｃ  Ｐｒｏｇｒａｍｍｉｎｇ）を画像処理に適用したツリー構造状画像変換自動作成方法を印刷物の文字列抽出方法に用いることが記載されている。
【０００３】
さらに、この特許文献１には以下のことが記載されている。この手法は、予め用意した複数の画像変換処理フィルタを任意の形のツリー構造状に組み合わせることによって、入力画像から出力画像への画像変換処理を実現するものである。なお、該手法は、１つ又は複数の入出力手段と、１つの出力手段を持つ画像変換処理フィルタＦｎを用いる。処理される画像はツリー構造における全ての葉ノード（終端）より入力され、フィルタの組み合わせにより異なった処理を受ける。それらは画像変換処理により順次合成され、最後に１つの画像となって出力される。フィルタの組み合わせにより、領域や目的毎に異なった処理を施し、それらの結果を適宜合成するような複雑な画像変換処理を構築することが可能になる。
【０００４】
特許文献２には、複数種類のプロセッシングエレメントの接続を変えて種々のデータパスを再構成するタイプの集積回路装置が記載されている。この集積回路装置は、プロセッシングエレメントとして、算術論理演算用のエレメントに加え、ＲＡＭとして機能するＲＡＭエレメントを有する。
【特許文献１】特開２００４−３６２４４０号公報
【特許文献２】特開２００６−２８５３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＧＡＧＰを画像処理に適用したツリー構造状の画像変換プログラムは、複数の画像変換処理フィルタがツリー構造状に組み合わされたアプリケーションプログラムである。特許文献２に開示されている集積回路装置は、動的に、例えば、数クロックサイクル、さらには１クロックサイクルで回路を再構成可能な集積回路装置（動的再構成可能ＬＳＩ）である。したがって、画像変換プログラムに含まれている複数の画像変換処理フィルタの１つまたは限られた数の機能を回路化して、順番に動的再構成可能ＬＳＩに構成することにより、種々のツリー構造状で機能が指示される画像変換プログラムによる処理を、より少ないハードウェア資源を用い、そのプログラムを実行するために専用に開発された回路（ハードウェア）で実行することが可能となる。このため、回路構成が基本的には変わらないプロセッサの上で画像変換プログラムを稼動させるよりは、高速で処理結果を得ることができる。
【０００６】
画像変換処理により得られた情報を、機器の制御、例えば、自動車を安全に制御するために使用する場合は、高い処理速度が要求される。さらに、画像データが得られる環境、画像データから抽出したい認識対象物などの相違によって、画像変換プログラムも異なる可能性がある。したがって、ツリー構造状のような画像変換プログラムの機能を高速で処理でき、さらに、異なる構造の画像変換プログラムの機能にも迅速に対応できるデータ処理装置が要望されている。
【課題を解決するための手段】
【０００７】
本発明の一態様は、回路を構成するための複数のエレメントと、複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、内部配線による複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、再構成ユニットの回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置である。複数のエレメントは、少なくとも１種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、内部配線の接続を変更することにより、複数のメモリエレメントの少なくともいずれかを、複数の演算エレメントの少なくともいずれかの演算エレメントを含む処理回路の入力対象または出力対象とすることが可能である。当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれの処理について、第１のメモリエレメントを入力対象とし、第２のメモリエレメントを出力対象としてそれぞれの処理を行う処理回路（第１の処理回路）を構成するための第１の接続情報と、第２のメモリエレメントを入力対象とし、第１のメモリエレメントを出力対象としてそれぞれの処理を行う処理回路（第２の処理回路）を構成するための第２の接続情報とが格納された接続情報ライブラリを有する。そして、制御ユニットは、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する。
【０００８】
このデータ処理装置においては、データの入出力を伴う複数の処理のそれぞれについて、制御ユニットが、接続情報ライブラリに用意された接続情報を含む再構成情報を出力することにより、再構成ユニットにそれぞれの処理を実行するための回路が構成される。したがって、複数の処理を、その処理のために専用に設計された回路を用いて実行することができ、より少ないハードウェア資源により、高速に実行できる。さらに、接続情報ライブラリに用意された第１または第２の接続情報を含む再構成情報により再構成ユニットに再構成された回路は、内部配線によりアクセス可能な再構成ユニット内のメモリエレメントを入出力の対象とする。したがって、入出力インターフェイスおよび外部バスなどを経由して外部メモリとの間でデータを入出力するために要するメモリアクセスの時間を省略または短縮できる。このため、処理速度を向上できる。
【０００９】
さらに、接続情報ライブラリには、データの入出力を伴う複数の処理のそれぞれについて、第１のメモリエレメントを入力対象とし、第２のメモリエレメントを出力対象とする第１の処理回路を構成するための第１の接続情報と、第２のメモリエレメントを入力対象とし、第１のメモリエレメントを出力対象とする第２の処理回路を構成するための第２の接続情報とが格納されている。したがって、制御ユニットが、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力することにより、入力対象のメモリエレメントと、出力対象のメモリエレメントとをフレキシブルに選択できる。このため、入出力対象の複数のメモリエレメントを共通のバスで接続したり、セレクタで切り替えて選択するような冗長な回路構成を用いなくても、再構成ユニットに、入出力の対象となるメモリエレメントをフレキシブルに選択できる回路を再構成できる。すなわち、再構成ユニットに、特定の入出力のメモリエレメントに対して入出力するように最適化された回路を再構成することにより、入出力の対象となるメモリエレメントをフレキシブルに選択できる。
【００１０】
さらに、再構成情報に含まれる接続情報は、複数の処理を実行する順番に基づき選択することができる。このことは、制御ユニットが、再構成情報を動的に生成することが可能であることを意味する。すなわち、このデータ処理装置において、複数の処理を実行する順番が変わったときは、再構成ユニットを再構成するための情報を、最初から生成しなおす必要はない。制御ユニットに複数の処理を実行する順番に関する情報を提供することにより、制御ユニットは、新しい順番にマッチした再構成情報を動的に出力することが可能である。複数の処理を実行する順番の変更は、データ処理装置の外部から供給されても良く、データ処理装置の内部の結果、例えば、再構成ユニットに構成された回路の演算結果により与えられても良い。
【００１１】
再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、内部配線の接続を変更することにより、入力インターフェイスを複数の演算エレメントのいずれかを含む処理回路の入力対象とし、出力インターフェイスを処理回路の出力対象とすることが可能であることが望ましい。さらに、接続情報ライブラリは、複数の処理のそれぞれについて、入力インターフェイスを入力対象とし、第１のメモリエレメントまたは第２のメモリエレメントを出力対象とする第３の処理回路を構成するための第３の接続情報と、第１のメモリエレメントまたは第２のメモリエレメントを入力対象とし、出力インターフェイスを出力対象とする第４の処理回路を構成するための第４の接続情報とが格納されていることが望ましい。
【００１２】
第４の接続情報は、第１の接続情報、第２の接続情報および第３の接続情報とマージすることが可能である。すなわち、接続情報ライブラリの、第１の接続情報は、第２のメモリエレメントに加え出力インターフェイスを出力対象とし、第２の接続情報は、第１のメモリエレメントに加え出力インターフェイスを出力対象とし、第３の接続情報は、第１のメモリエレメントまたは第２のメモリエレメントに加え出力インターフェイスを出力対象とする。
【００１３】
第３の接続情報および第４の接続情報または出力インターフェイスも出力対象とする第１および第２の接続情報を用いることにより、入力対象および出力対象が、入力インターフェイスおよび出力インターフェイスの回路を構成するための再構成情報を、制御ユニットが生成することができる。
【００１４】
複数の処理の一例は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理である。制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めることが可能である。このため、このデータ処理装置においては、任意の構成のツリー構造プログラムにより与えられる機能を、専用の回路により実行することが可能である。さらに、ツリー構造で機能が示されるアプリケーションを自動生成したり、自律的に、あるいは他律的に、ツリー構造を動的に変更させながら、変更されたツリー構造で機能が示されるアプリケーションをハードウェアベースで実行することが可能となる。
【００１５】
本発明の他の態様の１つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、再構成ユニットに含まれる回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法である。当該方法は、以下の工程を含む。
・上述した第１の接続情報と、第２の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択すること。
・選択された接続情報を含む再構成情報を出力すること。
【００１６】
接続情報ライブラリは、さらに、上述した第３の接続情報と、第４の接続情報とが格納されていることが望ましい。また、第１の接続情報および第２の接続情報は、出力インターフェイスも出力対象とすることが望ましい。
【００１７】
さらに、複数の処理が、ツリー構造により機能が示されるアプリケーションに含まれる複数のノードの処理であれば、当該方法は、さらに以下の工程を含むことが望ましい。
・処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めること。
【００１８】
接続情報ライブラリには、さらに、第３のメモリエレメントを入力対象とし、第４のメモリエレメントを出力対象とする第５の接続情報と、第４のメモリエレメントを入力対象とし、第３のメモリエレメントを出力対象とする第６の接続情報とを含めた他の接続情報が格納されていても良い。２つまたはそれ以上の処理を実行するための複数の回路を同時に再構成ユニットに構成し、複数の処理を並列に実行するための再構成情報を、制御ユニットは出力することが可能となる。
【００１９】
本発明の他の態様の１つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御するためのプログラムまたはプログラム製品である。当該プログラムは、上述した第１の接続情報と、第２の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、選択された接続情報を含む再構成情報を出力することとを含む。
【発明を実施するための最良の形態】
【００２０】
図１（ａ）に、再構成可能なデバイスの一例を示している。このデバイス１は、本願の出願人が開発したＤＡＰＤＮＡと称する半導体集積回路装置である。このデバイス１は、ＤＡＰと呼ばれるＲＩＳＣコアモジュール２と、ＤＮＡと呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ３とを含む。デバイス１は、ＤＡＰ２およびＤＮＡ３に加え、ＤＮＡ３のダイレクト入出力用のインターフェイス４と、ＰＣＩインターフェイス５と、ＳＤＲＡＭインターフェイス６と、ＤＭＡコントローラ７と、その他の周辺デバイス８と、これらを接続するための高速スイッチングバス（内部バス）９とを含む。ＤＡＰ２は、デバッグインターフェイス４２ａと、ＲＩＳＣコア４２ｂと、命令キャッシュ４２ｃと、データキャッシュ４２ｄとを含む。ＤＮＡ３は、３７６個のＰＥ（ＰＥｓ、処理エレメント）が２次元に配置されたＰＥマトリクス１０と、このＰＥマトリクス１０に含まれるＰＥｓの機能および／または接続を変えてＰＥマトリクス１０を再構成するためのコンフィグレーションデータ１８が格納されるコンフィグレーションメモリ１９とを含む。
【００２１】
コンフィグレーションメモリ１９は、複数バンクの構成になっている。例えば、図１（ｂ）に示すように、ＰＥマトリクス１０には、フォアグラウンドバンクに格納されるコンフィグレーションデータ１８により第１の機能（データフロー、回路デザイン）１７ａが構成される。また、異なるバックグラウンドバンクにそれぞれ格納されるコンフィグレーションデータにより、第２の機能１７ｂおよび第３の機能１７ｃがそれぞれ構成される。メモリ１９のバンクを切り替えることにより、ＰＥマトリクス１０には、第１の機能１７ａに変わって第２の機能１７ｂまたは第３の機能１７ｃが再構成される。ＰＥマトリクス１０の再構成は、例えば、１サイクル（クロックサイクル）でダイナミックに行なわれる。このようにＰＥマトリクス１０は、回路を構成するための複数のエレメントと、これらのエレメントを接続するための内部配線とを含む再構成ユニットであり、内部配線によりエレメントの接続を変えることによりＰＥマトリクス１０に含まれる回路を再構成できる。
【００２２】
図１（ｃ）は、ＰＥマトリクス１０に回路を再構成する一例である。あるアプリケーション、例えばＭＰＥＧデコーダを時分割した複数の機能（サブファンクション）を、ＰＥマトリクス１０に時分割で再構成し、ＭＰＥＧデコーダの機能を専用回路（専用ハードウェア）で提供する。このような使用により、再構成可能なデータ処理装置であるデバイス１を用いて、多くのハードウエア資源を必要とするアプリケーションを、少ないハードウエア資源で実行できる。
【００２３】
図１（ｄ）は、ＰＥマトリクス１０に回路を構成する他の例の一つである。再生方式が異なるアプリケーションを実行するために、複数の機能がそれぞれ実現されるようにＰＥマトリクス１０を再構成できる。このような使用により、多くのアプリケーションを共通のハードウエア（デバイス）１を用いて実行できる。このデバイス１は、プログラムレベル（命令レベル）ではなく、データフローレベル（データパスレベル、ハードウエアレベル）で多数の機能を切り換えて実装できるので、専用のハードウエアに匹敵する速度で処理を行うことができる。
【００２４】
図２に、ＰＥマトリクス１０の配列を拡大して示している。処理エレメントＰＥｓは、全体として、１６×２４のマトリクスを構成するように配置されている。なお、図３に示すように、ＰＥのいくつかは、２個分のＰＥのスペースを占め、全体として３７６個のＰＥがＰＥマトリクス１０に実際には配置されているが、図２には反映していない。これらのＰＥｓは、さらに、それぞれ８×８のＰＥｓからなる６つのグループに区分けされている。これらのグループをセグメントＳと称し、ＰＥマトリクス１０の左上から右下に向かって順番にセグメントＳ０からセグメントＳ５が配置されている。各々のセグメントＳ０〜Ｓ５に含まれるＰＥは、１サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクションで接続されている。また、セグメントＳ０〜Ｓ５の内、隣接するセグメントは、後述するディレイエレメントを介してインターセグメントコネクション２２により接続されている。
【００２５】
図３に、ＰＥマトリクス１０に含まれるＰＥｓの具体的な配置例を示している。図３に示したＰＥのうち、「ＥＸ」で始まるＰＥは、ＥＸＥエレメントと呼ばれ、算術演算、論理演算および２入力の比較機能を含む演算用のエレメントである。「ＥＸＣ」は、ＣＭＰＳＢ命令を搭載し、「ＥＸＦ」は、ＦＦ１命令を搭載し、「ＥＸＭ」は、乗算命令を搭載し、「ＥＸＲ」はＢＲＥＶ命令を搭載し、「ＥＸＳ」は、ＢＳＷＡＰ命令を搭載するというように、タイプ毎に固有の演算機能も含んでいる。
【００２６】
「ＤＬ」で始まるＰＥは、ディレイエレメントであり、１−８クロックの間の遅延をそれぞれ設定できる。「ＤＬＥ」は、セグメント内のデータ遅延用であり、「ＤＬＶ」は縦方向のセグメント間のデータ送受信用であり、「ＤＬＨ」は横方向のセグメント間のデータ送受信用であり、「ＤＬＸ」は縦横方向のセグメント間のデータ送受信用のエレメントである。
【００２７】
「ＲＡＭ」と表示されたＰＥは、ＤＮＡの内部メモリとして使用されるエレメント（メモリエレメント）である。「ＬＤＢ」と表示されたＰＥは、データ入力用のＤＮＡ内部バッファである。「ＳＴＢ」と表示されたＰＥは、データ出力用のＤＮＡ内部バッファである。「Ｃ１６Ｅ」と表示されたＰＥは、ＤＮＡ内部バッファに対するアドレス生成エレメントである。「Ｃ３２Ｅ」と表示されたＰＥは、外部メモリ空間に対するアドレス生成エレメントである。「ＬＤＸ」と表示されたＰＥは、ＤＮＡダイレクトＩ／Ｏからのデータ入力用エレメントである。「ＳＴＸ」と表示されたＰＥは、ＤＮＡダイレクトＩ／Ｏへのデータ出力用エレメントである。ＰＥマトリクス１０において、ＬＤＢおよびＬＤＸは、外部からデータを入力するための入力インターフェイスとして使用でき、ＳＴＢおよびＳＴＸは、外部へデータを出力するための出力インターフェイスとして使用できる。
【００２８】
図４に、ＰＥの一例として、ＥＸＥエレメント（「ＥＸＭ」）の概略構成をブロック図により示している。ＥＸＭエレメントは、ＡＬＵ１１ａと、ＭＵＬ（１６×１６）１１ｂと、ＦＦ１１ｃなどを含む。このＥＸＭエレメントは、ＤＮＡ３のコンフィグレーションメモリ１９に格納されたコンフィグレーションデータ１８により、算術演算、論理演算、２入力の比較機能、さらには、乗算のいずれか、または複合した命令を実行するように構成できる。また、複数のＦＦ１１ｃを内蔵しているので、エレメントＰＥに対するデータの入力から出力までのレイテンシを制御することが可能であり、ディレイエレメント（ＤＬＥ）の数が不足する構成では、ディレイエレメントとしての機能をセットすることも可能である。
【００２９】
図５に、ＰＥの他の例として、ＲＡＭエレメント（「ＲＡＭ」）の概略構成をブロック図により示している。このＲＡＭエレメントは、データ格納用メモリエレメントであり、１６ＫＢ（３２ビット×４０９６ワード）のＲＡＭモジュール１２ａと、アドレス入力用のアドレスレジスタ（ＦＦ）１２ｂ、ラッチ１２ｃ、データ入力用のライトデータレジスタ（ＦＦ）１２ｄ、ラッチ１２ｅ、データ出力用のリードデータレジスタ（ＦＦ）１２ｆを含む。ＲＡＭモジュール１２ａのリードとライトの制御は、アドレスデータおよび／またはリードデータとともに入力されるトークンの値により行なわれる。アドレス入力からリードデータの出力までは、ＥＸＥエレメントと同様に３クロックサイクル程度で可能になっており、ＰＥマトリクス１０に含まれる他のタイプのＰＥと同様のレイテンシで、データの入出力が可能である。このＲＡＭエレメントは、ＤＮＡ３のコンフィグレーションメモリ１９に格納されたコンフィグレーションデータ１８により、３２ビットモード、デュアルポート３２ビットモード、ＦＩＦＯモード、１６ビットモード、８ビットモード、さらに、ＦＳＭ（フィードバックステートモード）でデータ入力および／または出力するように構成できる。
【００３０】
ＲＡＭエレメントのアクセスアドレスの生成には、ＥＸＥエレメント、カウンタエレメントであるＣ１６Ｅおよび／またはＣ３２Ｅを使用することができ、ＰＥマトリクス１０のルーティングマトリクス（マトリクスバス）を通じて、ＲＡＭエレメントに入力できる。したがって、ＲＡＭエレメントへの入出力は、ＰＥマトリクス１０に再構成される回路により制御できる。
【００３１】
ＰＥマトリクス１０は、複数のＰＥｓと、それらを接続するためのルーティングマトリクス（配線群）２０を含む。ルーティングマトリクス２０は、セグメントＳ内のＰＥを接続するための第１レベルの配線群（第１レベルのルーティングマトリクス、イントラコネクト）２１と、ディレイエレメントを介して隣接するセグメントＳの間を接続するための第２レベルの配線群（第２レベルのルーティングマトリクス、インターコネクト）２２とを含む。ルーティングマトリクス２０によるＰＥｓの接続はコンフィグレーションデータ１８により制御できる。したがって、ＰＥマトリクス１０には、コンフィグレーションデータ１８により、複数のＰＥのそれぞれの機能を変更すること、および／または、ルーティングマトリクス２０の少なくとも一部の接続を変更することにより、異なる回路（データパス、データフロー）を再構成できる。
【００３２】
図６に、セグメントＳの内部のＰＥｓを接続するための第１レベルの配線群２１の構成の一例を示している。第１レベルのルーティングマトリクス２１は、セグメントＳ０に含まれる８×８個のＰＥｓを接続するために、１２８の縦方向のバス２３と、６４の横方向のバス２４とを含む。縦方向のバス２３は、１６のグループに分けられ、それぞれ８のバスを含む２つのＶ−バス２３ｘおよび２３ｙがペアとなり、ＰＥｓの縦の列（コラム）に沿って、その列の両側に配置されている。横方向のバス２４は８のグループに分けられ、それぞれ８のバスを含むＨ−バス２４がＰＥの横方向の行（ライン）に沿って配置されている。Ｖ−バス２３ｘおよび２３ｙには、８−１のバスセレクタ（マルチプレクサ、ＭＵＸ）２５がそれぞれのＰＥに対応して設けられており、それぞれのＰＥに対してデータの入力を可能としている。
【００３３】
Ｈ−バス２４には、Ｈ−バス２４とＶ−バス２３ｘおよび２３ｙのそれぞれの交差に対応して、８−１のバスセレクタ（マルチプレクサ、ＭＵＸ）２６が設けられている。したがって、１つのＨ−バス２４から１つのデータセットを、そのＨ−バス２４と交差している１つのＶ−バス２３ｘまたは２３ｙに出力できる。逆も可能である。Ｈ−バス２４に含まれるバスのそれぞれには、そのラインのＰＥｓの出力が接続される。したがって、Ｖ−バス２３ｘおよび２３ｙと、Ｈ−バス２４とを介することにより、セグメントＳに含まれるＰＥｓを接続できる。これらのＶ−バス２３ｘおよび２３ｙ、およびＨ−バス２４を含む第１レベルのバス２１により接続できる範囲、すなわち、各セグメントＳ０〜Ｓ５内のＰＥの間では１サイクル（１クロック）以内にデータを送受信できる。したがって、タイミング的には、例えば、セグメントＳ０に含まれるＰＥｓは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのＰＥを選択して機能を割り付けても、タイミングの検討は不要であり、タイミング的には、セグメント内のＰＥｓを用いて、所定の回路を自由に配置および配線できる。
【００３４】
図７に、第２レベルのルーティングマトリクス２２の構成を示している。図７では、第２レベルのルーティングマトリクス２２により、隣接するセグメントＳ１およびＳ４にそれぞれ含まれている接続用のエレメントＤＬＨを接続している。それぞれのＤＬＨは、それぞれのセグメントＳ１およびＳ４の内部の第１レベルのルーティングマトリクス２１に接続している。したがって、セグメントＳ１に含まれるＰＥと、セグメントＳ４に含まれるＰＥとを第２レベルのルーティングマトリクス２２を介して接続することができる。接続用のディレイエレメントＤＬＨは、第１レベルのルーティングマトリクス２１に含まれるバスのインターフェイスとして機能する。したがって、第１レベルのルーティングマトリクス２１に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のディレイエレメントＤＬＨに含まれる複数のＦＦを介してデータを入出力する必要があり、クロックに同期した２サイクル以上の遅延が新たに加わる。
【００３５】
このように、第１レベルのルーティングマトリクス２１のみを用いてＰＥを接続する場合、ＰＥｓの間は１サイクル（第１の遅延）の範囲内で接続されることが保証され、タイミングの検証は不用である。これに対し、第２レベルのルーティングマトリクス２２を介してＰＥを接続する場合は、２サイクル以上の遅延が加わる。第２レベルのルーティングマトリクス２２を介して接続する場合の遅延は、ディレイエレメントＤＬＨの設定に依存する。例えば、ＤＬＨの遅延量を制御することにより、第２のルーティングマトリクス２２を２回使用する信号と、１回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントＤＬＶおよびＤＬＸを介して隣接するセグメントＳ０〜Ｓ５を接続するときも同様である。
【００３６】
このため、セグメントＳ０〜Ｓ５の複数のセグメントに分散する回路、すなわち、セグメントを跨ぐ回路は、配置配線の間あるいは終了した後に、タイミングの調整あるいは再検討が必要となる。その結果、遅延エレメントを追加したり、遅延エレメントの遅延を調整したりすることが要求される可能性がある。したがって、回路をＰＥマトリクス１０に配置および配線するときは、第２レベルのルーティングマトリクス２２の使用を最小限にすることが好ましい。
【００３７】
図８に、ツリー構造により機能が示されたアプリケーションの一例を示している。ツリー構造とはノードが一列にあるいは枝分かれして連なった構造を示している。このアプリケーション３０は複数の処理がツリー構造をなすように組み合わされた画像処理（画像フィルタ）であり、ツリー構造は、入力される画像、抽出したい対象などの条件に基づき最適化されたものである。最適化の手法は、上述したＧＡＧＰと称される手法であり、遺伝的アルゴリズム（ＧＡ）をもとに考案された遺伝的プログラミング（ＧＰ）である。ツリー構造を見出すための最適化の手法はＧＡＧＰに限らず、免疫的アルゴリズムに基づく手法、シミュレーテッドアニーリング法などの他の最適化手法であっても良い。
【００３８】
ツリー構造の画像処理アプリケーション３０は、任意に組み合わされた複数のノードの処理３１を含み、これらのノードの処理３１が組み合わされた順番に実行されるようになっている。ノードの処理３１は、１入力１出力の処理に限られず、多入力１出力、多入力多出力であっても良く、この例では２入力１出力の処理３１が含まれている。１入力１出力の処理（ノード）３１が接続されている場合は、先の処理３１の出力が次の処理３１の入力となる。２入力１出力の処理がノードの処理３１の場合は、２の枝（処理経路）が交わり、１つの枝（処理経路）となって次のノードに接続される。すなわち、先の２つの処理３１の出力が、次の処理３１の入力となる。
【００３９】
画像処理アプリケーション３０において、ツリー構造をなす各ノードの処理３１は、画像処理の目的に応じて、ある程度、変換機能が限定された画像フィルタ（フィルタユニット）である。１入力１出力のフィルタユニットとしては、平均値フィルタ（−）、最大値フィルタ（Ｍ）、最小値フィルタ（ｍ）、ゾーベルフィルタ（ｄ）、黒領域エッジ抽出ラプラシアンフィルタ（Ｅ）、明領域エッジ抽出ラプラシアンフィルタ（ｅ）、分割領域面積が平均値よりも小さいものを明るくするフィルタ（Ｘ）、分割領域面積が平均値よりも大きいものを明るくするフィルタ（ｘ）、明るいピクセル（例えば平均より階調値が大）を選択して他は黒にするフィルタ（Ｔ）、暗いピクセル（例えば平均より階調値が小）を選択して他は明るくするフィルタ（ｔ）、ハイパスフィルタ（Ｆ、例えば、離散コサイン変換し、低周波数成分をカットし、逆離散コサイン変換する）、ローパスフィルタ（ｆ、例えば、離散コサイン変換し、高周波成分をカットし、逆離散コサイン変換する）、階調値反転処理フィルタ（ｉ）、線形変換フィルタ（Ｈ）、平均値による２値化処理フィルタ（Ｎ）、分析処理により得られた値による２処理フィルタ（ｎ）などを挙げることができる。
【００４０】
２入力１出力のフィルタユニットとしては、論理和（Ｌ）、論理積（ｌ）、代数和（Ａ）、代数積（ａ）、限界和（Ｂ）、限界積（ｂ）、差分フィルタ（Ｄ）などを挙げることができる。
【００４１】
図９に、ツリー構造で機能が示されたアプリケーション３０を図１に示したＤＡＰＤＮＡ１で実行する一例を示している。この例では、ＤＡＰ２は再構成制御ユニット２ａとしての機能を含み、ＰＥマトリクス１０は再構成領域である。再構成制御ユニット２ａが、コンフィグレーションメモリ１９に、ツリー構造にしたがって各ノードの処理３１を実行するための１セットの（ノード単位の）回路構成（再構成情報、コンフィグレーションデータ）１８を出力し、ＰＥマトリクス１０にノードの処理３１を実行するための回路を構成する。各ノードの処理３１を実行するための回路構成を指示するコンフィグレーションデータ１８を含むアプリケーション３０を実行するためのハードウェア情報３９は、アプリケーション３０のツリー構造にしたがって予め設計（生成）されており、ＤＲＡＭ（ＳＤＲＡＭ）６に格納されている。
【００４２】
ＤＡＰＤＮＡ１においては、コンフィグレーションメモリ１９のバンクに、次のノードの処理３１を実行するための回路のコンフィグレーションデータ１８を格納しておくことができる。したがって、ＰＥマトリクス１０を、ツリー構造にしたがってほぼ１クロックサイクルで再構成することができる。このため、ツリー構造で機能が示されたアプリケーションを、専用回路を用いて、高速で実行できる。さらに、コンフィグレーションデータ１８を変えることにより、ツリー構造の異なるアプリケーションをＤＡＰＤＮＡ１に実装できるので、画像の入力状況および／または抽出対象に適した複数種類のツリー構造のアプリケーションを１つのＤＡＰＤＮＡ１で適宜実行できる。
【００４３】
図１０（ａ）および（ｂ）に、ツリー構造で機能が示されたアプリケーション３０をＤＡＰＤＮＡ１で実行する異なる例を示している。図９に示した例では、ＰＥマトリクス１０に構成された回路は、ＤＡＰＤＮＡ１のＤＲＡＭ６を作業領域としてデータを入出力している。これに対し、図１０（ａ）および（ｂ）に示した例では、ＰＥマトリクス１０に構成された回路は、ＰＥマトリクス１０のＲＡＭエレメントを作業領域としてデータを入出力している。
【００４４】
ツリー構造の画像処理のアプリケーション３０において、各ノードの処理は、処理対象の画像データに含まれる画素データを読み込んで変換して出力する作業を繰り返して行なう。したがって、作業用のメモリ領域との間でデータの入出力は頻繁になる。図９に示した例では、ＤＲＡＭ６に作業領域６ａを設けている。ＤＲＡＭ６は、ＤＡＰＤＮＡ１に含まれるメモリなので、ＰＥマトリクス１０に構成された回路から高速でデータを入力および出力できる。
【００４５】
しかしながら、ＰＥマトリクス１０とＤＲＡＭ６との間でデータを入力または出力するためには、幾つかの手続きが必要となる。例えば、データをＤＲＡＭ６からＰＥマトリクス１０へ供給する場合、まず、ＰＥマトリクス１０とＤＲＡＭ６とを接続する内部バス９をＰＥマトリクス１０のアクセスのために開放し、ＰＥマトリクス１０からメモリアクセス用のアドレスを出力する。その後、ＤＲＡＭ６から所定のデータがバス９に出力されＰＥマトリクス１０に供給される。そのバス９に出力されたデータは、ＰＥマトリクス１０において、データ入力用の内部バッファとなるＬＤＢエレメントを介して、ノード（画像フィルタ）としての機能を果たすためにＰＥマトリクス１０に構成された回路に入力される。ＰＥマトリクス１０に構成された回路により処理されたデータを出力する場合も、ほぼ同じ手続きを経る必要がある。
【００４６】
このようなデータの入出力に消費されるサイクルは、プログラムの記述にしたがって逐次処理を進めるＲＩＳＣなどの汎用型のプロセッサにおいても同様である。したがって、ＤＡＰＤＮＡ１では、ノードにより異なる処理３１を実行するための回路をＰＥマトリクス１０に１クロックサイクルで再構成できるのに対し、データの入出力が多数のクロックサイクルを消費するので、回路を再構成することはデータ処理の遅れに繋がる恐れはない。逆に、いったんＰＥマトリクス１０に回路が構成されれば、ノードの処理３１は専用回路（ハードウェア）でアプリケーション３０が実行される。このため、ＤＡＰＤＮＡ１では、アプリケーション３０を、汎用プロセッサをプログラム制御して実行する場合よりも高速で処理が進む。
【００４７】
さらに、図１０（ａ）および（ｂ）に示した例では、ＰＥマトリクス１０の内部に、ＲＡＭエレメントを入出力対象とするフィルタ回路（処理回路）６１および６２が構成される。これらのフィルタ回路６１および６２は、ＰＥマトリクス１０に配置された演算エレメント（ＥＸＥ）を含み、所定のフィルタとしての機能を実現するための回路であり、ＲＡＭエレメントが含まれていてもよい。図１０（ａ）では、ＰＥマトリクス１０に、第１のＲＡＭエレメント（ＲＡＭ＃１）を入力対象とし、第２のＲＡＭエレメント（ＲＡＭ＃２）を出力対象とするフィルタ回路６１が構成されている。図１０（ｂ）には、第２のＲＡＭエレメント（ＲＡＭ＃２）を入力対象とし、第１のＲＡＭエレメント（ＲＡＭ＃１）を出力対象とするフィルタ回路６２が構成されている。このように、図１０（ａ）に示したＫ番目（５番目）の処理回路６１で出力対象となったＲＡＭ＃２を、図１０（ｂ）に示した（Ｋ＋１）番目（６番目）の処理回路６２においては入力対象とすることにより、ＰＥマトリクス１０の内部のデータ転送だけで、ツリー構造で繋がった複数の処理３１を実行することが可能となる。したがって、ＤＡＰＤＮＡ１の内部バス９およびＬＤＢエレメントを介してデータを入力する必要がなくなり、作業用のメモリにアクセスするために要する手続きは簡略化される。このため、ノードの処理３１において、データの入出力に要する処理時間が低減され、ＤＡＰＤＮＡ１において、さらに高速でアプリケーション３０を実行することができる。
【００４８】
図１１は、本発明の実施形態の一例のデータ処理装置のブロック図である。このデータ処理装置５０は、ＤＡＰＤＮＡ１を用いて実現されている。データ処理装置５０は、再構成ユニット（再構成領域）であるＰＥマトリクス１０を有する。このＰＥマトリクス１０は、回路を構成するための複数のエレメント（ＰＥ）と、これらＰＥを接続するための内部配線２０とを含み、内部配線２０による複数のＰＥの接続を変更することにより、当該再構成ユニット１０に含まれる回路を再構成可能である。さらに、データ処理装置５０は、ＰＥマトリクス１０に実装される回路を再構成するために、複数のＰＥの接続情報を含む再構成情報（コンフィグレーションデータ）１８を出力する再構成制御ユニット２ａを有する。このデータ処理装置５０では、再構成制御ユニット２ａはＤＡＰ２により提供されている。
【００４９】
ＰＥマトリクス１０は、上述したように、算術演算用のＰＥである演算エレメント（ＥＸＥ）、内部メモリ用のＲＡＭエレメント（ＲＡＭ）をはじめとする複数種類のＰＥを含む。そして、第１レベルの配線２１および第２のレベルの配線２２を含む内部配線２０の接続を変更することにより、所定のＲＡＭエレメントを、ＥＸＥを含む処理回路入力対象または出力対象とすることが可能である。
【００５０】
データ処理装置５０では、複数セットの接続情報（接続データ）５６を含む接続情報ライブラリ５５と、ツリー構造の情報３５とがＤＲＡＭ６に格納されている。接続情報ライブラリ５５には、ツリー構造のノードの処理３１の幾つか、特に、１入力１出力の処理のそれぞれについて、第１のメモリエレメント（ＲＡＭ＃１）を入力対象とし、第２のメモリエレメント（ＲＡＭ＃２）を出力対象とする第１の処理回路を構成するための第１の接続情報と、第２のメモリエレメント（ＲＡＭ＃２）を入力対象とし、第１のメモリエレメント（ＲＡＭ＃１）を出力対象とする第２の処理回路を構成するための第２の接続情報とが格納されている。したがって、再構成制御ユニット２ａは、ツリー構造の情報３５にしたがってノードの処理３１を順番に実行する際に、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリ５５から選択し、その選択された接続情報を含むコンフィグレーションデータ１８をコンフィグレーションメモリ１９に出力することにより、ＰＥマトリクス１０にツリー構造のアプリケーション３０を実行するための回路を順番に構成できる。接続情報ライブラリ５５に含まれている、それぞれのノードの処理３１に対応した接続情報（接続情報のセットまたはピース（接続データセット））５６は、ＰＥの接続に関する情報だけではなく、ＰＥにセットされるパラメータなど、コンフィグレーションデータ１８として必要な情報を全て含んでいても良い。
【００５１】
図１２に、接続情報ライブラリ５５に含まれる接続情報５６のいくつかのタイプ（セット、ピース）を示している。タイプ１の接続情報５６ａは、第１のＲＡＭエレメント（ＲＡＭ＃１）を入力対象とし、第２のＲＡＭエレメント（ＲＡＭ＃２）を出力対象とする第１の処理回路６１を構成するための第１の接続情報である。この接続情報５６ａは、ＲＡＭエレメントに加えて、出力インターフェイスのＰＥであるＳＴＢも出力対象とする処理回路６１が構成されるようにしている。第１の処理回路６１の処理結果をＰＥマトリクス１０からＤＲＡＭ６の作業領域６ａに格納する必要があれば、ＳＴＢからバス９を介してＤＲＡＭ６に処理結果が送られる。
【００５２】
タイプ２の接続情報５６ｂは、ＲＡＭ＃２を入力対象とし、ＲＡＭ＃１を出力対象とする第２の処理回路６２を構成するための第２の接続情報である。この接続情報５６ｂも、さらに、出力インターフェイスのＰＥであるＳＴＢも出力対象とする処理回路６２が構成されるようにしている。
【００５３】
タイプ３の接続情報５６ｃは、入力インターフェイスのＰＥであるＬＤＢを入力対象とし、ＲＡＭ＃１を出力対象とする第３の処理回路６３を構成するための第３の接続情報である。この接続情報５６ｃも、さらに、出力インターフェイスのＰＥであるＳＴＢも出力対象とする処理回路６３が構成されるようにしている。
【００５４】
タイプＸの接続情報５６ｄは、２入力１出力のフィルタ回路をＰＥマトリクス１０に構成するための接続情報であり、２つのＬＤＢを入力対象とし、ＲＡＭ＃１と、ＳＴＢとを出力対象とする処理回路６９を構成するための接続情報である。ＲＡＭ＃１と、ＳＴＢとには同じデータが出力される。
【００５５】
ツリー構造の画像処理アプリケーション３０のノードとして含まれる可能性のある１入力１出力のフィルタ処理３１については、それぞれの処理に対して、タイプ１からタイプ３の接続情報が接続情報ライブラリ５５に用意されている。例えば、平均値フィルタをＰＥマトリクス１０に構成するための接続情報として、タイプ１からタイプ３の３種類の接続情報５６がライブラリ５５に格納されている。これらの３種類の接続情報５６によりＰＥマトリクス１０に構成される回路は、平均値フィルタとしての機能を提供するためのものであり、入出力を除いて同じ機能を提供する。さらに、３種類の接続情報５６は、異なる入力対象と、異なる出力対象とにそれぞれの処理回路が接続するように最適化されており、フィルタとしての機能を提供するために消費されるＰＥの数ができるだけ少なくなるように生成されている。例えば、入力を切り換えるためにセレクタとして機能する演算エレメントや、ディレイエレメント、特に、セグメントを跨いだ配線に導入されるディレイエレメントを少なくし、ＰＥマトリクス１０に含まれるＰＥを有効利用して複雑なフィルタ処理に対応できるようにする。また、ＰＥマトリクス１０に構成される処理回路を簡易な構成にして、処理に要する時間が短縮されるようにしている。
【００５６】
２入力１出力の処理についても、１入力１出力の処理と同様に、複数種類の接続情報を用意することが可能である。しかしながら、画像処理アプリケーション３０において、２入力１出力のフィルタ処理は、少なくとも一方の画像データが、異なるフレームの画像データである。このため、２入力１出力のフィルタの入力は、外部メモリ（ＤＲＡＭ）６またはＤＡＰＤＮＡ１の外のメモリから供給されるデータを受けることが多い。さらに、第１および第２のＲＡＭエレメントを２入力とすると、２入力の処理の前方の処理においては、出力対象のＲＡＭエレメントに制限が発生する可能性があるので、この例においては、２入力１出力の処理については、外部メモリからデータが入力されるようにしている。したがって、２入力１出力の処理に入力するフィルタ処理されたデータはいったんＤＲＡＭ６の作業領域６ａに出力する。
【００５７】
接続情報ライブラリ５５に格納される接続情報５６は、上述したものに限定されない。１入力１出力の処理について用意されたタイプ１から３の接続情報５６ａ〜５６ｃは、出力対象に、ＲＡＭエレメントに加えて、出力インターフェイスであるＳＴＢを含めている。これに対し、出力対象をＲＡＭエレメントのみとした接続情報と、出力対象を出力インターフェイスのみとした接続情報とを独立して用意することが可能である。例えば、第１のＲＡＭエレメントまたは第２のＲＡＭエレメントを入力対象とし、出力インターフェイスであるＳＴＢを出力対象とする第４の処理回路を構成するための第４の接続情報を接続情報ライブラリ５５に格納しておくことができる。
【００５８】
さらに、第１および第２のＲＡＭエレメントとは異なる、第３のＲＡＭエレメントと、第４のＲＡＭエレメントとを入力対象または出力対象とする接続情報をライブラリ５５に用意しておくことは有効である。処理回路の規模が十分に小さい場合には、第１および第２のＲＡＭエレメントを入出力対象とする処理回路と、第３および第４のＲＡＭエレメントを入出力対象とする処理回路とを、ＰＥマトリクス１０に同時に生成し、それらの処理を並列に実行することが可能となる。例えば、アプリケーション３０のツリー構造の枝別れした部分のノードの処理を並列に実行することにより、アプリケーション３０をさらに高速に実行できる。
【００５９】
図１３に、データ処理装置５０において、ツリー構造を備えたアプリケーション３０を実行するときの再構成制御ユニット２ａの動作を、フローチャートを用いて示している。ステップ７０において、ＤＲＡＭ６からアプリケーション３０のツリー構造に関する情報（以降ではツリー構造）３５を取得する。ステップ７１において、ツリー構造３５の最初のノード＃０（図８の処理＃０、階調値反転処理）の接続情報５６を、接続情報ライブラリ５５から取得する。ノード＃０は最初の処理なので、画像データをＤＲＡＭ６から取得する必要がある。したがって、ステップ７１において、制御ユニット２ａは、階調値反転処理を行う処理回路をＰＥマトリクス１０に構成するため接続情報のうちのタイプ３の接続情報５６ｃを取得する。ステップ７２において、制御ユニット２ａは、接続情報５６ｃに基づいてコンフィグレーションデータ１８を生成し、コンフィグレーションメモリ１９の、例えば、バンク＃１に出力する。ステップ７３において、制御ユニット２ａは、コンフィグレーションメモリ１９のバンク＃１のコンフィグレーションデータ１８をフォアグラウンドバンクに移す。これにより、ＰＥマトリクス１０に、階調値反転処理を行う処理回路であって、ＬＤＢを入力対象とし、ＲＡＭ＃１を出力対象とする処理回路が構成され、画像データを外部メモリから入力し、階調値反転処理を施した画像データをＲＡＭ＃１に出力する処理が開始される。
【００６０】
ＰＥマトリクス１０において処理が行われている間に、制御ユニット２ａは、さらに、ステップ７４において、次のノード＃１（図８の処理＃１、平均値処理）の接続情報５６を、接続情報ライブラリ５５から取得する。ノード＃１は、２番目の処理であり、最初の処理の出力対象はＲＡＭ＃１である。したがって、制御ユニット２ａは、平均値処理を行う処理回路をＰＥマトリクス１０に構成するための接続情報のうちのタイプ１の接続情報５６ａを取得する。ステップ７５において、制御ユニット２ａは、接続情報５６ａに基づいてコンフィグレーションデータ１８を生成し、コンフィグレーションメモリ１９の、例えば、バンク＃１に出力する。
【００６１】
ステップ７６において、制御ユニット２ａは、ＰＥマトリクス１０に構成された今の処理、すなわち、処理＃０が終了するのを待つ。ステップ７７において、ツリー構造３５の全ての処理の終了を確認し、終了していない場合には、ステップ７８において、コンフィグレーションメモリ１９のバンク＃１のコンフィグレーションデータ１８をフォアグラウンドバンクに移す。これにより、ＰＥマトリクス１０に、平均値処理を行う処理回路であって、ＲＡＭ＃１を入力対象とし、ＲＡＭ＃２を出力対象とする処理回路が構成される。そして、ＲＡＭ＃１から階調値反転処理が施された画像データを読み出し、平均値処理を施した画像データをＲＡＭ＃２に出力する処理が開始される。
【００６２】
ステップ７９において、ツリー構造３５に次のノードの処理が残っていれば、ステップ７４に戻って、そのノードの処理を行なうのに適した接続情報５６を接続情報ライブラリ５５から取得する。ステップ７９において、次のノードの処理が残っていなければ、ステップ７６に戻り、今の処理が終了すると、コンフィグレーションメモリ１９に出力されたコンフィグレーションデータ１８により最後のノードの処理を行う回路を再構成する。
【００６３】
なお、ＤＡＰＤＮＡ１のコンフィグレーションメモリ１９は４バンク構成なので、バンク＃２およびバンク＃３に、次の処理回路をＰＥマトリクス１０に構成するためのコンフィグレーションデータ１８を予め出力することも可能である。また、再構成制御ユニット２ａの機能は、ＲＩＳＣタイプのＤＡＰ２にロードされるプログラム（プログラム製品）として提供することができ、ＲＯＭなどの適当な記録媒体に記録して提供できる。
【００６４】
このデータ処理装置５０においては、処理＃２の処理回路をＰＥマトリクス１０に構成するためには、処理＃１の処理回路の出力対象であるＲＡＭ＃２を入力対象とするタイプ２の接続情報５６ｂが選択される。２入力１出力のノードの前のノードにおいては、出力対象をＤＲＡＭ６の作業領域６ａにする必要がある。したがって、処理＃３の処理回路をＰＥマトリクス１０に構成するためには、ＲＡＭ＃１を入力対象とするタイプ１の接続情報５６ａが選択され、処理回路６１により処理されたデータはＳＴＢを介してＤＲＡＭ６に出力される。２入力１出力の処理＃４の処理回路をＰＥマトリクス１０に構成するためには、２系統のＬＤＢを入力対象とするタイプＸの接続情報５６ｄが選択され、処理回路６９により処理されたデータはＲＡＭ＃１に出力される。
【００６５】
このように、このデータ処理装置５０においては、ツリー構造３５が与えられれば、ツリー構造３５を解析し、ツリー構造３５に含まれるノードの順番により、そのノードの処理を実行するのに適した処理回路を構成するための接続情報５６が接続情報ライブラリ５５から選択され、その処理回路がＰＥマトリクス１０に構成される。したがって、ツリー構造３５の異なるアプリケーション３０であっても、そのツリー構造の情報がデータ処理装置５０に与えられることにより、アプリケーション３０を実行することができる。このため、ツリー構造の異なるアプリケーション毎に、そのアプリケーションを実行するための回路構成をすべて事前に生成し、コンフィグレーション情報として生成しておく必要はない。
【００６６】
さらに、データ処理装置５０の内部において、ツリー構造３５が自律的な要因により、あるいは、外部的な要因により変異したとしても、その変異したツリー構造３５にしたがって各ノードの処理を行うための回路をＰＥマトリクス１０に構成することができる。
【００６７】
図１４は、本発明の実施形態の異なるデータ処理装置のブロック図である。このデータ処理装置５１は、ＤＡＰＤＮＡ１を用いて実現され、再構成ユニット（再構成領域）であるＰＥマトリクス１０と、ＰＥマトリクス１０に実装される回路を再構成するためにコンフィグレーションデータ１８を出力する再構成制御ユニット２ａを有する。再構成制御ユニット２ａの機能はＤＡＰ２により提供されている。さらに、ＤＡＰ２は、候補ツリー構造生成ユニット２ｃと、処理順序出力ユニット２ｄと、候補ツリー構造評価ユニット２ｂとしての機能を提供している。
【００６８】
候補ツリー構造生成ユニット２ｃは、遺伝的アルゴリズムの規則により、ツリー構造により機能が示された画像処理を生成する。ＤＲＡＭ６には、フィルタライブラリ３７が設けられており、候補ツリー構造生成ユニット２ｃが利用できるツリー構造のノードとして採用できる各フィルタの情報３６が格納されている。ＤＲＡＭ６は、画像データ収納部６６を有し、画像データ収納部６６には、ツリー構造の画像処理の処理対象となる初期画像データ６６ａと、評価の基準を提供するリファレンス画像データ６６ｂと、評価の対象となる画像データ６６ｃとが格納される。評価部２ｂの評価の対象となる画像データ６６ｃは、候補ツリー構造生成ユニット２ｃにより生成されたツリー構造を備えた画像処理により初期画像データを処理した結果である。評価部２ｂにより高い評価が得られたツリー構造３５は、このデータ処理装置５１において画像処理のために使用されるアプリケーション３０としてＤＲＡＭ６に登録され、外部から入力される画像データの処理に用いられる。
【００６９】
処理順序出力部２ｄは、候補ツリー構造生成ユニット２ｃにより、遺伝的アルゴリズムの規則により生成された候補ツリーに含まれる各ノードの処理３１と、その順番とを抽出し、再構成制御ユニット２ａに供給する。再構成制御ユニット２ａは、上記のデータ処理装置５０と同様に、順序出力ユニット２ｄからの情報にしたがって、適切な接続情報を選択し、ＰＥマトリクス１０に適切な回路を構成する。
【００７０】
このように、データ処理装置５１は、候補ツリー構造生成部２ｃにより任意のツリー構造３５が生成されると、そのツリー構造３５を備えた画像処理を行なうための回路を時分割でＰＥマトリクス１０に再構成できる。このため、遺伝的アルゴリズムの規則にしたがって、最適な処理結果が得られる画像処理のツリー構造を生成する処理を、そのツリー構造に含まれるノードの処理に専用化した回路を用いて実行できる。このため、最適な結果が得られる画像処理のためのツリー構造を短時間で得ることができる。
【００７１】
図１５は、接続情報５６によりＰＥマトリクス１０に構成される回路の異なる例である。この回路８０を構成するための接続情報５６ｅは、タイプ１の接続情報に相当するが、この例では、ＳＴＢへの出力は省かれている。ＲＡＭ＃１およびＲＡＭ＃２は、エレメント単体である必要はなく、幾つかのＲＡＭエレメントを含むデータ読み出し回路であっても良い。アドレス調停回路８０ａおよび８０ｂは、カウンタエレメントであるＣ１６Ｅおよび／またはＣ３２Ｅ、さらにはＥＸＥエレメントなどを用いて構成することができる。以下の回路においても同様である。
【００７２】
図１６は、接続情報５６によりＰＥマトリクス１０に構成される回路のさらに異なる例である。この回路８１を構成するための接続情報５６ｆは、タイプ１の接続情報に相当するが、この例では、ＳＴＢへの出力は省かれている。フィルタ処理回路６１は４並列の処理ルート（データパス）を含む。したがって、この回路８１は、ＲＡＭ＃１−１〜ＲＡＭ＃１−４をそれぞれ入力対象とし、ＲＡＭ＃２−１〜ＲＡＭ＃２−４をそれぞれ出力対象とする４系統の処理回路を含む。４並列の処理を行うフィルタ回路の一例は、図１７に示した平均値フィルタの処理回路８９である。この平均値フィルタは、対象画素と、周辺画素（８画素）の平均値を算出して出力する。図１７に示した回路８９では、４ピクセルを対象画素とした平均値の処理を４並列で行っている。なお、図１７に示した回路８９では、８ビット×４ピクセルを３２ビットのデータにパックして入出力しており、入力対象および出力対象のＲＡＭエレメントは１つずつである。
【００７３】
図１８は、接続情報５６によりＰＥマトリクス１０に構成される回路のさらに異なる例である。この回路８２を構成するための接続情報５６ｇは、タイプ１の接続情報に相当するが、この例では、ＳＴＢへの出力は省かれている。入力対象となる４つのＲＡＭ＃１−１〜ＲＡＭ＃１−４は、セレクタ８２ａによりシリアル変換されて読み出されている。また、出力対象となるＲＡＭ＃２−１〜ＲＡＭ＃２−４に対してはセレクタ８２ｂによりパラレル変換して書き込まれる。
【００７４】
図１９は、接続情報５６によりＰＥマトリクス１０に構成される回路のさらに異なる例である。この回路８３を構成するための接続情報５６ｈは、タイプ１の接続情報に相当するが、この例では、ＳＴＢへの出力は省かれている。入力対象となる４つのＲＡＭ＃１−１〜ＲＡＭ＃１−４は、セレクタ８２ａによりシリアル変換されて読み出され、出力対象となるＲＡＭ＃２−１〜ＲＡＭ＃２−４に対してはパラレルでデータが書き込まれる。
【００７５】
以上では、ツリー構造により機能が示されるアプリケーションとして、画像処理を行うアプリケーションを例に説明している。ツリー構造により機能が示されるアプリケーションは画像処理に限らず、音声処理などであっても良い。さらに、このデータ処理装置において実行可能なアプリケーションは、ツリー構造を有するアプリケーションに限定されない。アプリケーションの機能が、データの入出力を伴う、複数のある程度纏まった処理の集合として与えられており、それらの処理の順番が決まるのであれば、再構成制御ユニットが、その順番に従って接続情報を選択し、コンフィグレーションデータとして出力することにより、そのアプリケーションを、再構成ユニットに構成された専用回路により実行することが可能となる。
【図面の簡単な説明】
【００７６】
【図１】図１（ａ）は、再構成可能なデバイスの一例の概略構成を示し、図１（ｂ）は、ＰＥマトリクスの概略を示し、図１（ｃ）および図１（ｄ）は、ＰＥマトリクスを動的に再構成する様子を示す。
【図２】ＰＥマトリクスの配列を示す図。
【図３】ＰＥマトリクスに配置されたＰＥのタイプを示す図。
【図４】ＰＥの１つのタイプのＥＸＭの構成を示すブロック図。
【図５】ＰＥの１つのタイプのＲＡＭの構成を示すブロック図。
【図６】セグメント内の配線（イントラセグメント配線）を示す図。
【図７】セグメント間の配線（インターセグメント配線）を示す図。
【図８】ツリー構造により機能が示されたアプリケーション。
【図９】再構成可能な領域を含むデータ処理装置の一例を示すブロック図。
【図１０】図１０（ａ）および（ｂ）は、再構成可能な領域にフィルタ回路を構成した他の例。
【図１１】実施形態の１つのデータ処理装置を示すブロック図。
【図１２】接続情報ライブラリに含まれる接続情報の例。
【図１３】再構成制御ユニットの動作を示すフローチャート。
【図１４】実施形態の他のデータ処理装置を示すブロック図。
【図１５】再構成可能な領域にフィルタ回路を構成した他の例。
【図１６】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図１７】平均値フィルタの回路例。
【図１８】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図１９】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【符号の説明】
【００７７】
１    再構成可能なデバイス
２ａ  再構成制御ユニット
１０  ＰＥマトリクス（再構成ユニット）
５０、５１  データ処理装置
５５  接続情報ライブラリ、  ５６  接続情報
【図１】
0005071707.tif 000002
【図２】
0005071707.tif 000003
【図３】
0005071707.tif 000004
【図４】
0005071707.tif 000005
【図５】
0005071707.tif 000006
【図６】
0005071707.tif 000007
【図７】
0005071707.tif 000008
【図８】
0005071707.tif 000009
【図９】
0005071707.tif 000010
【図１０】
0005071707.tif 000011
【図１１】
0005071707.tif 000012
【図１２】
0005071707.tif 000013
【図１３】
0005071707.tif 000014
【図１４】
0005071707.tif 000015
【図１５】
0005071707.tif 000016
【図１６】
0005071707.tif 000017
【図１７】
0005071707.tif 000018
【図１８】
0005071707.tif 000019
【図１９】
0005071707.tif 000020