データ処理装置およびその制御方法
【課題】ツリー構造を備えた画像処理を再構成可能なデバイスにより実行する。
【解決手段】回路を再構成可能なPEマトリクス10と、PEの接続情報を含むコンフィグレーションデータ18を出力する制御ユニット2aとを有するデータ処理装置50を提供する。この装置50の接続情報ライブラリ55には、データの入出力を伴う複数の処理のそれぞれについて、第1のRAMエレメントを入力対象とし、第2のRAMエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のRAMエレメントを入力対象とし、第1のRAMエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納され、制御ユニット2aは、複数の処理を順番に実行するために、先の処理において出力対象となったRAMエレメントを入力対象とする接続情報を選択しコンフィグレーションデータ18を出力する。
【解決手段】回路を再構成可能なPEマトリクス10と、PEの接続情報を含むコンフィグレーションデータ18を出力する制御ユニット2aとを有するデータ処理装置50を提供する。この装置50の接続情報ライブラリ55には、データの入出力を伴う複数の処理のそれぞれについて、第1のRAMエレメントを入力対象とし、第2のRAMエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のRAMエレメントを入力対象とし、第1のRAMエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納され、制御ユニット2aは、複数の処理を順番に実行するために、先の処理において出力対象となったRAMエレメントを入力対象とする接続情報を選択しコンフィグレーションデータ18を出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、回路を再構成可能なユニットを含むデータ処理装置およびその制御方法に関するものである。
【背景技術】
【0002】
特許文献1には、生物の進化の過程を模倣した最適化手法の1つである遺伝的アルゴリズム(GA:Genetic Algorithm)をもとに考案された遺伝的プログラミング(GP:Genetic Programming)を画像処理に適用したツリー構造状画像変換自動作成方法を印刷物の文字列抽出方法に用いることが記載されている。
【0003】
さらに、この特許文献1には以下のことが記載されている。この手法は、予め用意した複数の画像変換処理フィルタを任意の形のツリー構造状に組み合わせることによって、入力画像から出力画像への画像変換処理を実現するものである。なお、該手法は、1つ又は複数の入出力手段と、1つの出力手段を持つ画像変換処理フィルタFnを用いる。処理される画像はツリー構造における全ての葉ノード(終端)より入力され、フィルタの組み合わせにより異なった処理を受ける。それらは画像変換処理により順次合成され、最後に1つの画像となって出力される。フィルタの組み合わせにより、領域や目的毎に異なった処理を施し、それらの結果を適宜合成するような複雑な画像変換処理を構築することが可能になる。
【0004】
特許文献2には、複数種類のプロセッシングエレメントの接続を変えて種々のデータパスを再構成するタイプの集積回路装置が記載されている。この集積回路装置は、プロセッシングエレメントとして、算術論理演算用のエレメントに加え、RAMとして機能するRAMエレメントを有する。
【特許文献1】特開2004−362440号公報
【特許文献2】特開2006−285386号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
GAGPを画像処理に適用したツリー構造状の画像変換プログラムは、複数の画像変換処理フィルタがツリー構造状に組み合わされたアプリケーションプログラムである。特許文献2に開示されている集積回路装置は、動的に、例えば、数クロックサイクル、さらには1クロックサイクルで回路を再構成可能な集積回路装置(動的再構成可能LSI)である。したがって、画像変換プログラムに含まれている複数の画像変換処理フィルタの1つまたは限られた数の機能を回路化して、順番に動的再構成可能LSIに構成することにより、種々のツリー構造状で機能が指示される画像変換プログラムによる処理を、より少ないハードウェア資源を用い、そのプログラムを実行するために専用に開発された回路(ハードウェア)で実行することが可能となる。このため、回路構成が基本的には変わらないプロセッサの上で画像変換プログラムを稼動させるよりは、高速で処理結果を得ることができる。
【0006】
画像変換処理により得られた情報を、機器の制御、例えば、自動車を安全に制御するために使用する場合は、高い処理速度が要求される。さらに、画像データが得られる環境、画像データから抽出したい認識対象物などの相違によって、画像変換プログラムも異なる可能性がある。したがって、ツリー構造状のような画像変換プログラムの機能を高速で処理でき、さらに、異なる構造の画像変換プログラムの機能にも迅速に対応できるデータ処理装置が要望されている。
【課題を解決するための手段】
【0007】
本発明の一態様は、回路を構成するための複数のエレメントと、複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、内部配線による複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、再構成ユニットの回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置である。複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、内部配線の接続を変更することにより、複数のメモリエレメントの少なくともいずれかを、複数の演算エレメントの少なくともいずれかの演算エレメントを含む処理回路の入力対象または出力対象とすることが可能である。当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメントを入力対象とし、第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリを有する。そして、制御ユニットは、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する。
【0008】
このデータ処理装置においては、データの入出力を伴う複数の処理のそれぞれについて、制御ユニットが、接続情報ライブラリに用意された接続情報を含む再構成情報を出力することにより、再構成ユニットにそれぞれの処理を実行するための回路が構成される。したがって、複数の処理を、その処理のために専用に設計された回路を用いて実行することができ、より少ないハードウェア資源により、高速に実行できる。さらに、接続情報ライブラリに用意された第1または第2の接続情報を含む再構成情報により再構成ユニットに再構成された回路は、内部配線によりアクセス可能な再構成ユニット内のメモリエレメントを入出力の対象とする。したがって、入出力インターフェイスおよび外部バスなどを経由して外部メモリとの間でデータを入出力するために要するメモリアクセスの時間を省略または短縮できる。このため、処理速度を向上できる。
【0009】
さらに、接続情報ライブラリには、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメントを入力対象とし、第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納されている。したがって、制御ユニットが、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力することにより、入力対象のメモリエレメントと、出力対象のメモリエレメントとをフレキシブルに選択できる。このため、入出力対象の複数のメモリエレメントを共通のバスで接続したり、セレクタで切り替えて選択するような冗長な回路構成を用いなくても、再構成ユニットに、入出力の対象となるメモリエレメントをフレキシブルに選択できる回路を再構成できる。すなわち、再構成ユニットに、特定の入出力のメモリエレメントに対して入出力するように最適化された回路を再構成することにより、入出力の対象となるメモリエレメントをフレキシブルに選択できる。
【0010】
さらに、再構成情報に含まれる接続情報は、複数の処理を実行する順番に基づき選択することができる。このことは、制御ユニットが、再構成情報を動的に生成することが可能であることを意味する。すなわち、このデータ処理装置において、複数の処理を実行する順番が変わったときは、再構成ユニットを再構成するための情報を、最初から生成しなおす必要はない。制御ユニットに複数の処理を実行する順番に関する情報を提供することにより、制御ユニットは、新しい順番にマッチした再構成情報を動的に出力することが可能である。複数の処理を実行する順番の変更は、データ処理装置の外部から供給されても良く、データ処理装置の内部の結果、例えば、再構成ユニットに構成された回路の演算結果により与えられても良い。
【0011】
再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、内部配線の接続を変更することにより、入力インターフェイスを複数の演算エレメントのいずれかを含む処理回路の入力対象とし、出力インターフェイスを処理回路の出力対象とすることが可能であることが望ましい。さらに、接続情報ライブラリは、複数の処理のそれぞれについて、入力インターフェイスを入力対象とし、第1のメモリエレメントまたは第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、第1のメモリエレメントまたは第2のメモリエレメントを入力対象とし、出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されていることが望ましい。
【0012】
第4の接続情報は、第1の接続情報、第2の接続情報および第3の接続情報とマージすることが可能である。すなわち、接続情報ライブラリの、第1の接続情報は、第2のメモリエレメントに加え出力インターフェイスを出力対象とし、第2の接続情報は、第1のメモリエレメントに加え出力インターフェイスを出力対象とし、第3の接続情報は、第1のメモリエレメントまたは第2のメモリエレメントに加え出力インターフェイスを出力対象とする。
【0013】
第3の接続情報および第4の接続情報または出力インターフェイスも出力対象とする第1および第2の接続情報を用いることにより、入力対象および出力対象が、入力インターフェイスおよび出力インターフェイスの回路を構成するための再構成情報を、制御ユニットが生成することができる。
【0014】
複数の処理の一例は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理である。制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めることが可能である。このため、このデータ処理装置においては、任意の構成のツリー構造プログラムにより与えられる機能を、専用の回路により実行することが可能である。さらに、ツリー構造で機能が示されるアプリケーションを自動生成したり、自律的に、あるいは他律的に、ツリー構造を動的に変更させながら、変更されたツリー構造で機能が示されるアプリケーションをハードウェアベースで実行することが可能となる。
【0015】
本発明の他の態様の1つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、再構成ユニットに含まれる回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法である。当該方法は、以下の工程を含む。
・上述した第1の接続情報と、第2の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択すること。
・選択された接続情報を含む再構成情報を出力すること。
【0016】
接続情報ライブラリは、さらに、上述した第3の接続情報と、第4の接続情報とが格納されていることが望ましい。また、第1の接続情報および第2の接続情報は、出力インターフェイスも出力対象とすることが望ましい。
【0017】
さらに、複数の処理が、ツリー構造により機能が示されるアプリケーションに含まれる複数のノードの処理であれば、当該方法は、さらに以下の工程を含むことが望ましい。
・処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めること。
【0018】
接続情報ライブラリには、さらに、第3のメモリエレメントを入力対象とし、第4のメモリエレメントを出力対象とする第5の接続情報と、第4のメモリエレメントを入力対象とし、第3のメモリエレメントを出力対象とする第6の接続情報とを含めた他の接続情報が格納されていても良い。2つまたはそれ以上の処理を実行するための複数の回路を同時に再構成ユニットに構成し、複数の処理を並列に実行するための再構成情報を、制御ユニットは出力することが可能となる。
【0019】
本発明の他の態様の1つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御するためのプログラムまたはプログラム製品である。当該プログラムは、上述した第1の接続情報と、第2の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、選択された接続情報を含む再構成情報を出力することとを含む。
【発明を実施するための最良の形態】
【0020】
図1(a)に、再構成可能なデバイスの一例を示している。このデバイス1は、本願の出願人が開発したDAPDNAと称する半導体集積回路装置である。このデバイス1は、DAPと呼ばれるRISCコアモジュール2と、DNAと呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ3とを含む。デバイス1は、DAP2およびDNA3に加え、DNA3のダイレクト入出力用のインターフェイス4と、PCIインターフェイス5と、SDRAMインターフェイス6と、DMAコントローラ7と、その他の周辺デバイス8と、これらを接続するための高速スイッチングバス(内部バス)9とを含む。DAP2は、デバッグインターフェイス42aと、RISCコア42bと、命令キャッシュ42cと、データキャッシュ42dとを含む。DNA3は、376個のPE(PEs、処理エレメント)が2次元に配置されたPEマトリクス10と、このPEマトリクス10に含まれるPEsの機能および/または接続を変えてPEマトリクス10を再構成するためのコンフィグレーションデータ18が格納されるコンフィグレーションメモリ19とを含む。
【0021】
コンフィグレーションメモリ19は、複数バンクの構成になっている。例えば、図1(b)に示すように、PEマトリクス10には、フォアグラウンドバンクに格納されるコンフィグレーションデータ18により第1の機能(データフロー、回路デザイン)17aが構成される。また、異なるバックグラウンドバンクにそれぞれ格納されるコンフィグレーションデータにより、第2の機能17bおよび第3の機能17cがそれぞれ構成される。メモリ19のバンクを切り替えることにより、PEマトリクス10には、第1の機能17aに変わって第2の機能17bまたは第3の機能17cが再構成される。PEマトリクス10の再構成は、例えば、1サイクル(クロックサイクル)でダイナミックに行なわれる。このようにPEマトリクス10は、回路を構成するための複数のエレメントと、これらのエレメントを接続するための内部配線とを含む再構成ユニットであり、内部配線によりエレメントの接続を変えることによりPEマトリクス10に含まれる回路を再構成できる。
【0022】
図1(c)は、PEマトリクス10に回路を再構成する一例である。あるアプリケーション、例えばMPEGデコーダを時分割した複数の機能(サブファンクション)を、PEマトリクス10に時分割で再構成し、MPEGデコーダの機能を専用回路(専用ハードウェア)で提供する。このような使用により、再構成可能なデータ処理装置であるデバイス1を用いて、多くのハードウエア資源を必要とするアプリケーションを、少ないハードウエア資源で実行できる。
【0023】
図1(d)は、PEマトリクス10に回路を構成する他の例の一つである。再生方式が異なるアプリケーションを実行するために、複数の機能がそれぞれ実現されるようにPEマトリクス10を再構成できる。このような使用により、多くのアプリケーションを共通のハードウエア(デバイス)1を用いて実行できる。このデバイス1は、プログラムレベル(命令レベル)ではなく、データフローレベル(データパスレベル、ハードウエアレベル)で多数の機能を切り換えて実装できるので、専用のハードウエアに匹敵する速度で処理を行うことができる。
【0024】
図2に、PEマトリクス10の配列を拡大して示している。処理エレメントPEsは、全体として、16×24のマトリクスを構成するように配置されている。なお、図3に示すように、PEのいくつかは、2個分のPEのスペースを占め、全体として376個のPEがPEマトリクス10に実際には配置されているが、図2には反映していない。これらのPEsは、さらに、それぞれ8×8のPEsからなる6つのグループに区分けされている。これらのグループをセグメントSと称し、PEマトリクス10の左上から右下に向かって順番にセグメントS0からセグメントS5が配置されている。各々のセグメントS0〜S5に含まれるPEは、1サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクションで接続されている。また、セグメントS0〜S5の内、隣接するセグメントは、後述するディレイエレメントを介してインターセグメントコネクション22により接続されている。
【0025】
図3に、PEマトリクス10に含まれるPEsの具体的な配置例を示している。図3に示したPEのうち、「EX」で始まるPEは、EXEエレメントと呼ばれ、算術演算、論理演算および2入力の比較機能を含む演算用のエレメントである。「EXC」は、CMPSB命令を搭載し、「EXF」は、FF1命令を搭載し、「EXM」は、乗算命令を搭載し、「EXR」はBREV命令を搭載し、「EXS」は、BSWAP命令を搭載するというように、タイプ毎に固有の演算機能も含んでいる。
【0026】
「DL」で始まるPEは、ディレイエレメントであり、1−8クロックの間の遅延をそれぞれ設定できる。「DLE」は、セグメント内のデータ遅延用であり、「DLV」は縦方向のセグメント間のデータ送受信用であり、「DLH」は横方向のセグメント間のデータ送受信用であり、「DLX」は縦横方向のセグメント間のデータ送受信用のエレメントである。
【0027】
「RAM」と表示されたPEは、DNAの内部メモリとして使用されるエレメント(メモリエレメント)である。「LDB」と表示されたPEは、データ入力用のDNA内部バッファである。「STB」と表示されたPEは、データ出力用のDNA内部バッファである。「C16E」と表示されたPEは、DNA内部バッファに対するアドレス生成エレメントである。「C32E」と表示されたPEは、外部メモリ空間に対するアドレス生成エレメントである。「LDX」と表示されたPEは、DNAダイレクトI/Oからのデータ入力用エレメントである。「STX」と表示されたPEは、DNAダイレクトI/Oへのデータ出力用エレメントである。PEマトリクス10において、LDBおよびLDXは、外部からデータを入力するための入力インターフェイスとして使用でき、STBおよびSTXは、外部へデータを出力するための出力インターフェイスとして使用できる。
【0028】
図4に、PEの一例として、EXEエレメント(「EXM」)の概略構成をブロック図により示している。EXMエレメントは、ALU11aと、MUL(16×16)11bと、FF11cなどを含む。このEXMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、算術演算、論理演算、2入力の比較機能、さらには、乗算のいずれか、または複合した命令を実行するように構成できる。また、複数のFF11cを内蔵しているので、エレメントPEに対するデータの入力から出力までのレイテンシを制御することが可能であり、ディレイエレメント(DLE)の数が不足する構成では、ディレイエレメントとしての機能をセットすることも可能である。
【0029】
図5に、PEの他の例として、RAMエレメント(「RAM」)の概略構成をブロック図により示している。このRAMエレメントは、データ格納用メモリエレメントであり、16KB(32ビット×4096ワード)のRAMモジュール12aと、アドレス入力用のアドレスレジスタ(FF)12b、ラッチ12c、データ入力用のライトデータレジスタ(FF)12d、ラッチ12e、データ出力用のリードデータレジスタ(FF)12fを含む。RAMモジュール12aのリードとライトの制御は、アドレスデータおよび/またはリードデータとともに入力されるトークンの値により行なわれる。アドレス入力からリードデータの出力までは、EXEエレメントと同様に3クロックサイクル程度で可能になっており、PEマトリクス10に含まれる他のタイプのPEと同様のレイテンシで、データの入出力が可能である。このRAMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、32ビットモード、デュアルポート32ビットモード、FIFOモード、16ビットモード、8ビットモード、さらに、FSM(フィードバックステートモード)でデータ入力および/または出力するように構成できる。
【0030】
RAMエレメントのアクセスアドレスの生成には、EXEエレメント、カウンタエレメントであるC16Eおよび/またはC32Eを使用することができ、PEマトリクス10のルーティングマトリクス(マトリクスバス)を通じて、RAMエレメントに入力できる。したがって、RAMエレメントへの入出力は、PEマトリクス10に再構成される回路により制御できる。
【0031】
PEマトリクス10は、複数のPEsと、それらを接続するためのルーティングマトリクス(配線群)20を含む。ルーティングマトリクス20は、セグメントS内のPEを接続するための第1レベルの配線群(第1レベルのルーティングマトリクス、イントラコネクト)21と、ディレイエレメントを介して隣接するセグメントSの間を接続するための第2レベルの配線群(第2レベルのルーティングマトリクス、インターコネクト)22とを含む。ルーティングマトリクス20によるPEsの接続はコンフィグレーションデータ18により制御できる。したがって、PEマトリクス10には、コンフィグレーションデータ18により、複数のPEのそれぞれの機能を変更すること、および/または、ルーティングマトリクス20の少なくとも一部の接続を変更することにより、異なる回路(データパス、データフロー)を再構成できる。
【0032】
図6に、セグメントSの内部のPEsを接続するための第1レベルの配線群21の構成の一例を示している。第1レベルのルーティングマトリクス21は、セグメントS0に含まれる8×8個のPEsを接続するために、128の縦方向のバス23と、64の横方向のバス24とを含む。縦方向のバス23は、16のグループに分けられ、それぞれ8のバスを含む2つのV−バス23xおよび23yがペアとなり、PEsの縦の列(コラム)に沿って、その列の両側に配置されている。横方向のバス24は8のグループに分けられ、それぞれ8のバスを含むH−バス24がPEの横方向の行(ライン)に沿って配置されている。V−バス23xおよび23yには、8−1のバスセレクタ(マルチプレクサ、MUX)25がそれぞれのPEに対応して設けられており、それぞれのPEに対してデータの入力を可能としている。
【0033】
H−バス24には、H−バス24とV−バス23xおよび23yのそれぞれの交差に対応して、8−1のバスセレクタ(マルチプレクサ、MUX)26が設けられている。したがって、1つのH−バス24から1つのデータセットを、そのH−バス24と交差している1つのV−バス23xまたは23yに出力できる。逆も可能である。H−バス24に含まれるバスのそれぞれには、そのラインのPEsの出力が接続される。したがって、V−バス23xおよび23yと、H−バス24とを介することにより、セグメントSに含まれるPEsを接続できる。これらのV−バス23xおよび23y、およびH−バス24を含む第1レベルのバス21により接続できる範囲、すなわち、各セグメントS0〜S5内のPEの間では1サイクル(1クロック)以内にデータを送受信できる。したがって、タイミング的には、例えば、セグメントS0に含まれるPEsは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのPEを選択して機能を割り付けても、タイミングの検討は不要であり、タイミング的には、セグメント内のPEsを用いて、所定の回路を自由に配置および配線できる。
【0034】
図7に、第2レベルのルーティングマトリクス22の構成を示している。図7では、第2レベルのルーティングマトリクス22により、隣接するセグメントS1およびS4にそれぞれ含まれている接続用のエレメントDLHを接続している。それぞれのDLHは、それぞれのセグメントS1およびS4の内部の第1レベルのルーティングマトリクス21に接続している。したがって、セグメントS1に含まれるPEと、セグメントS4に含まれるPEとを第2レベルのルーティングマトリクス22を介して接続することができる。接続用のディレイエレメントDLHは、第1レベルのルーティングマトリクス21に含まれるバスのインターフェイスとして機能する。したがって、第1レベルのルーティングマトリクス21に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のディレイエレメントDLHに含まれる複数のFFを介してデータを入出力する必要があり、クロックに同期した2サイクル以上の遅延が新たに加わる。
【0035】
このように、第1レベルのルーティングマトリクス21のみを用いてPEを接続する場合、PEsの間は1サイクル(第1の遅延)の範囲内で接続されることが保証され、タイミングの検証は不用である。これに対し、第2レベルのルーティングマトリクス22を介してPEを接続する場合は、2サイクル以上の遅延が加わる。第2レベルのルーティングマトリクス22を介して接続する場合の遅延は、ディレイエレメントDLHの設定に依存する。例えば、DLHの遅延量を制御することにより、第2のルーティングマトリクス22を2回使用する信号と、1回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントDLVおよびDLXを介して隣接するセグメントS0〜S5を接続するときも同様である。
【0036】
このため、セグメントS0〜S5の複数のセグメントに分散する回路、すなわち、セグメントを跨ぐ回路は、配置配線の間あるいは終了した後に、タイミングの調整あるいは再検討が必要となる。その結果、遅延エレメントを追加したり、遅延エレメントの遅延を調整したりすることが要求される可能性がある。したがって、回路をPEマトリクス10に配置および配線するときは、第2レベルのルーティングマトリクス22の使用を最小限にすることが好ましい。
【0037】
図8に、ツリー構造により機能が示されたアプリケーションの一例を示している。ツリー構造とはノードが一列にあるいは枝分かれして連なった構造を示している。このアプリケーション30は複数の処理がツリー構造をなすように組み合わされた画像処理(画像フィルタ)であり、ツリー構造は、入力される画像、抽出したい対象などの条件に基づき最適化されたものである。最適化の手法は、上述したGAGPと称される手法であり、遺伝的アルゴリズム(GA)をもとに考案された遺伝的プログラミング(GP)である。ツリー構造を見出すための最適化の手法はGAGPに限らず、免疫的アルゴリズムに基づく手法、シミュレーテッドアニーリング法などの他の最適化手法であっても良い。
【0038】
ツリー構造の画像処理アプリケーション30は、任意に組み合わされた複数のノードの処理31を含み、これらのノードの処理31が組み合わされた順番に実行されるようになっている。ノードの処理31は、1入力1出力の処理に限られず、多入力1出力、多入力多出力であっても良く、この例では2入力1出力の処理31が含まれている。1入力1出力の処理(ノード)31が接続されている場合は、先の処理31の出力が次の処理31の入力となる。2入力1出力の処理がノードの処理31の場合は、2の枝(処理経路)が交わり、1つの枝(処理経路)となって次のノードに接続される。すなわち、先の2つの処理31の出力が、次の処理31の入力となる。
【0039】
画像処理アプリケーション30において、ツリー構造をなす各ノードの処理31は、画像処理の目的に応じて、ある程度、変換機能が限定された画像フィルタ(フィルタユニット)である。1入力1出力のフィルタユニットとしては、平均値フィルタ(−)、最大値フィルタ(M)、最小値フィルタ(m)、ゾーベルフィルタ(d)、黒領域エッジ抽出ラプラシアンフィルタ(E)、明領域エッジ抽出ラプラシアンフィルタ(e)、分割領域面積が平均値よりも小さいものを明るくするフィルタ(X)、分割領域面積が平均値よりも大きいものを明るくするフィルタ(x)、明るいピクセル(例えば平均より階調値が大)を選択して他は黒にするフィルタ(T)、暗いピクセル(例えば平均より階調値が小)を選択して他は明るくするフィルタ(t)、ハイパスフィルタ(F、例えば、離散コサイン変換し、低周波数成分をカットし、逆離散コサイン変換する)、ローパスフィルタ(f、例えば、離散コサイン変換し、高周波成分をカットし、逆離散コサイン変換する)、階調値反転処理フィルタ(i)、線形変換フィルタ(H)、平均値による2値化処理フィルタ(N)、分析処理により得られた値による2処理フィルタ(n)などを挙げることができる。
【0040】
2入力1出力のフィルタユニットとしては、論理和(L)、論理積(l)、代数和(A)、代数積(a)、限界和(B)、限界積(b)、差分フィルタ(D)などを挙げることができる。
【0041】
図9に、ツリー構造で機能が示されたアプリケーション30を図1に示したDAPDNA1で実行する一例を示している。この例では、DAP2は再構成制御ユニット2aとしての機能を含み、PEマトリクス10は再構成領域である。再構成制御ユニット2aが、コンフィグレーションメモリ19に、ツリー構造にしたがって各ノードの処理31を実行するための1セットの(ノード単位の)回路構成(再構成情報、コンフィグレーションデータ)18を出力し、PEマトリクス10にノードの処理31を実行するための回路を構成する。各ノードの処理31を実行するための回路構成を指示するコンフィグレーションデータ18を含むアプリケーション30を実行するためのハードウェア情報39は、アプリケーション30のツリー構造にしたがって予め設計(生成)されており、DRAM(SDRAM)6に格納されている。
【0042】
DAPDNA1においては、コンフィグレーションメモリ19のバンクに、次のノードの処理31を実行するための回路のコンフィグレーションデータ18を格納しておくことができる。したがって、PEマトリクス10を、ツリー構造にしたがってほぼ1クロックサイクルで再構成することができる。このため、ツリー構造で機能が示されたアプリケーションを、専用回路を用いて、高速で実行できる。さらに、コンフィグレーションデータ18を変えることにより、ツリー構造の異なるアプリケーションをDAPDNA1に実装できるので、画像の入力状況および/または抽出対象に適した複数種類のツリー構造のアプリケーションを1つのDAPDNA1で適宜実行できる。
【0043】
図10(a)および(b)に、ツリー構造で機能が示されたアプリケーション30をDAPDNA1で実行する異なる例を示している。図9に示した例では、PEマトリクス10に構成された回路は、DAPDNA1のDRAM6を作業領域としてデータを入出力している。これに対し、図10(a)および(b)に示した例では、PEマトリクス10に構成された回路は、PEマトリクス10のRAMエレメントを作業領域としてデータを入出力している。
【0044】
ツリー構造の画像処理のアプリケーション30において、各ノードの処理は、処理対象の画像データに含まれる画素データを読み込んで変換して出力する作業を繰り返して行なう。したがって、作業用のメモリ領域との間でデータの入出力は頻繁になる。図9に示した例では、DRAM6に作業領域6aを設けている。DRAM6は、DAPDNA1に含まれるメモリなので、PEマトリクス10に構成された回路から高速でデータを入力および出力できる。
【0045】
しかしながら、PEマトリクス10とDRAM6との間でデータを入力または出力するためには、幾つかの手続きが必要となる。例えば、データをDRAM6からPEマトリクス10へ供給する場合、まず、PEマトリクス10とDRAM6とを接続する内部バス9をPEマトリクス10のアクセスのために開放し、PEマトリクス10からメモリアクセス用のアドレスを出力する。その後、DRAM6から所定のデータがバス9に出力されPEマトリクス10に供給される。そのバス9に出力されたデータは、PEマトリクス10において、データ入力用の内部バッファとなるLDBエレメントを介して、ノード(画像フィルタ)としての機能を果たすためにPEマトリクス10に構成された回路に入力される。PEマトリクス10に構成された回路により処理されたデータを出力する場合も、ほぼ同じ手続きを経る必要がある。
【0046】
このようなデータの入出力に消費されるサイクルは、プログラムの記述にしたがって逐次処理を進めるRISCなどの汎用型のプロセッサにおいても同様である。したがって、DAPDNA1では、ノードにより異なる処理31を実行するための回路をPEマトリクス10に1クロックサイクルで再構成できるのに対し、データの入出力が多数のクロックサイクルを消費するので、回路を再構成することはデータ処理の遅れに繋がる恐れはない。逆に、いったんPEマトリクス10に回路が構成されれば、ノードの処理31は専用回路(ハードウェア)でアプリケーション30が実行される。このため、DAPDNA1では、アプリケーション30を、汎用プロセッサをプログラム制御して実行する場合よりも高速で処理が進む。
【0047】
さらに、図10(a)および(b)に示した例では、PEマトリクス10の内部に、RAMエレメントを入出力対象とするフィルタ回路(処理回路)61および62が構成される。これらのフィルタ回路61および62は、PEマトリクス10に配置された演算エレメント(EXE)を含み、所定のフィルタとしての機能を実現するための回路であり、RAMエレメントが含まれていてもよい。図10(a)では、PEマトリクス10に、第1のRAMエレメント(RAM#1)を入力対象とし、第2のRAMエレメント(RAM#2)を出力対象とするフィルタ回路61が構成されている。図10(b)には、第2のRAMエレメント(RAM#2)を入力対象とし、第1のRAMエレメント(RAM#1)を出力対象とするフィルタ回路62が構成されている。このように、図10(a)に示したK番目(5番目)の処理回路61で出力対象となったRAM#2を、図10(b)に示した(K+1)番目(6番目)の処理回路62においては入力対象とすることにより、PEマトリクス10の内部のデータ転送だけで、ツリー構造で繋がった複数の処理31を実行することが可能となる。したがって、DAPDNA1の内部バス9およびLDBエレメントを介してデータを入力する必要がなくなり、作業用のメモリにアクセスするために要する手続きは簡略化される。このため、ノードの処理31において、データの入出力に要する処理時間が低減され、DAPDNA1において、さらに高速でアプリケーション30を実行することができる。
【0048】
図11は、本発明の実施形態の一例のデータ処理装置のブロック図である。このデータ処理装置50は、DAPDNA1を用いて実現されている。データ処理装置50は、再構成ユニット(再構成領域)であるPEマトリクス10を有する。このPEマトリクス10は、回路を構成するための複数のエレメント(PE)と、これらPEを接続するための内部配線20とを含み、内部配線20による複数のPEの接続を変更することにより、当該再構成ユニット10に含まれる回路を再構成可能である。さらに、データ処理装置50は、PEマトリクス10に実装される回路を再構成するために、複数のPEの接続情報を含む再構成情報(コンフィグレーションデータ)18を出力する再構成制御ユニット2aを有する。このデータ処理装置50では、再構成制御ユニット2aはDAP2により提供されている。
【0049】
PEマトリクス10は、上述したように、算術演算用のPEである演算エレメント(EXE)、内部メモリ用のRAMエレメント(RAM)をはじめとする複数種類のPEを含む。そして、第1レベルの配線21および第2のレベルの配線22を含む内部配線20の接続を変更することにより、所定のRAMエレメントを、EXEを含む処理回路入力対象または出力対象とすることが可能である。
【0050】
データ処理装置50では、複数セットの接続情報(接続データ)56を含む接続情報ライブラリ55と、ツリー構造の情報35とがDRAM6に格納されている。接続情報ライブラリ55には、ツリー構造のノードの処理31の幾つか、特に、1入力1出力の処理のそれぞれについて、第1のメモリエレメント(RAM#1)を入力対象とし、第2のメモリエレメント(RAM#2)を出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメント(RAM#2)を入力対象とし、第1のメモリエレメント(RAM#1)を出力対象とする第2の処理回路を構成するための第2の接続情報とが格納されている。したがって、再構成制御ユニット2aは、ツリー構造の情報35にしたがってノードの処理31を順番に実行する際に、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリ55から選択し、その選択された接続情報を含むコンフィグレーションデータ18をコンフィグレーションメモリ19に出力することにより、PEマトリクス10にツリー構造のアプリケーション30を実行するための回路を順番に構成できる。接続情報ライブラリ55に含まれている、それぞれのノードの処理31に対応した接続情報(接続情報のセットまたはピース(接続データセット))56は、PEの接続に関する情報だけではなく、PEにセットされるパラメータなど、コンフィグレーションデータ18として必要な情報を全て含んでいても良い。
【0051】
図12に、接続情報ライブラリ55に含まれる接続情報56のいくつかのタイプ(セット、ピース)を示している。タイプ1の接続情報56aは、第1のRAMエレメント(RAM#1)を入力対象とし、第2のRAMエレメント(RAM#2)を出力対象とする第1の処理回路61を構成するための第1の接続情報である。この接続情報56aは、RAMエレメントに加えて、出力インターフェイスのPEであるSTBも出力対象とする処理回路61が構成されるようにしている。第1の処理回路61の処理結果をPEマトリクス10からDRAM6の作業領域6aに格納する必要があれば、STBからバス9を介してDRAM6に処理結果が送られる。
【0052】
タイプ2の接続情報56bは、RAM#2を入力対象とし、RAM#1を出力対象とする第2の処理回路62を構成するための第2の接続情報である。この接続情報56bも、さらに、出力インターフェイスのPEであるSTBも出力対象とする処理回路62が構成されるようにしている。
【0053】
タイプ3の接続情報56cは、入力インターフェイスのPEであるLDBを入力対象とし、RAM#1を出力対象とする第3の処理回路63を構成するための第3の接続情報である。この接続情報56cも、さらに、出力インターフェイスのPEであるSTBも出力対象とする処理回路63が構成されるようにしている。
【0054】
タイプXの接続情報56dは、2入力1出力のフィルタ回路をPEマトリクス10に構成するための接続情報であり、2つのLDBを入力対象とし、RAM#1と、STBとを出力対象とする処理回路69を構成するための接続情報である。RAM#1と、STBとには同じデータが出力される。
【0055】
ツリー構造の画像処理アプリケーション30のノードとして含まれる可能性のある1入力1出力のフィルタ処理31については、それぞれの処理に対して、タイプ1からタイプ3の接続情報が接続情報ライブラリ55に用意されている。例えば、平均値フィルタをPEマトリクス10に構成するための接続情報として、タイプ1からタイプ3の3種類の接続情報56がライブラリ55に格納されている。これらの3種類の接続情報56によりPEマトリクス10に構成される回路は、平均値フィルタとしての機能を提供するためのものであり、入出力を除いて同じ機能を提供する。さらに、3種類の接続情報56は、異なる入力対象と、異なる出力対象とにそれぞれの処理回路が接続するように最適化されており、フィルタとしての機能を提供するために消費されるPEの数ができるだけ少なくなるように生成されている。例えば、入力を切り換えるためにセレクタとして機能する演算エレメントや、ディレイエレメント、特に、セグメントを跨いだ配線に導入されるディレイエレメントを少なくし、PEマトリクス10に含まれるPEを有効利用して複雑なフィルタ処理に対応できるようにする。また、PEマトリクス10に構成される処理回路を簡易な構成にして、処理に要する時間が短縮されるようにしている。
【0056】
2入力1出力の処理についても、1入力1出力の処理と同様に、複数種類の接続情報を用意することが可能である。しかしながら、画像処理アプリケーション30において、2入力1出力のフィルタ処理は、少なくとも一方の画像データが、異なるフレームの画像データである。このため、2入力1出力のフィルタの入力は、外部メモリ(DRAM)6またはDAPDNA1の外のメモリから供給されるデータを受けることが多い。さらに、第1および第2のRAMエレメントを2入力とすると、2入力の処理の前方の処理においては、出力対象のRAMエレメントに制限が発生する可能性があるので、この例においては、2入力1出力の処理については、外部メモリからデータが入力されるようにしている。したがって、2入力1出力の処理に入力するフィルタ処理されたデータはいったんDRAM6の作業領域6aに出力する。
【0057】
接続情報ライブラリ55に格納される接続情報56は、上述したものに限定されない。1入力1出力の処理について用意されたタイプ1から3の接続情報56a〜56cは、出力対象に、RAMエレメントに加えて、出力インターフェイスであるSTBを含めている。これに対し、出力対象をRAMエレメントのみとした接続情報と、出力対象を出力インターフェイスのみとした接続情報とを独立して用意することが可能である。例えば、第1のRAMエレメントまたは第2のRAMエレメントを入力対象とし、出力インターフェイスであるSTBを出力対象とする第4の処理回路を構成するための第4の接続情報を接続情報ライブラリ55に格納しておくことができる。
【0058】
さらに、第1および第2のRAMエレメントとは異なる、第3のRAMエレメントと、第4のRAMエレメントとを入力対象または出力対象とする接続情報をライブラリ55に用意しておくことは有効である。処理回路の規模が十分に小さい場合には、第1および第2のRAMエレメントを入出力対象とする処理回路と、第3および第4のRAMエレメントを入出力対象とする処理回路とを、PEマトリクス10に同時に生成し、それらの処理を並列に実行することが可能となる。例えば、アプリケーション30のツリー構造の枝別れした部分のノードの処理を並列に実行することにより、アプリケーション30をさらに高速に実行できる。
【0059】
図13に、データ処理装置50において、ツリー構造を備えたアプリケーション30を実行するときの再構成制御ユニット2aの動作を、フローチャートを用いて示している。ステップ70において、DRAM6からアプリケーション30のツリー構造に関する情報(以降ではツリー構造)35を取得する。ステップ71において、ツリー構造35の最初のノード#0(図8の処理#0、階調値反転処理)の接続情報56を、接続情報ライブラリ55から取得する。ノード#0は最初の処理なので、画像データをDRAM6から取得する必要がある。したがって、ステップ71において、制御ユニット2aは、階調値反転処理を行う処理回路をPEマトリクス10に構成するため接続情報のうちのタイプ3の接続情報56cを取得する。ステップ72において、制御ユニット2aは、接続情報56cに基づいてコンフィグレーションデータ18を生成し、コンフィグレーションメモリ19の、例えば、バンク#1に出力する。ステップ73において、制御ユニット2aは、コンフィグレーションメモリ19のバンク#1のコンフィグレーションデータ18をフォアグラウンドバンクに移す。これにより、PEマトリクス10に、階調値反転処理を行う処理回路であって、LDBを入力対象とし、RAM#1を出力対象とする処理回路が構成され、画像データを外部メモリから入力し、階調値反転処理を施した画像データをRAM#1に出力する処理が開始される。
【0060】
PEマトリクス10において処理が行われている間に、制御ユニット2aは、さらに、ステップ74において、次のノード#1(図8の処理#1、平均値処理)の接続情報56を、接続情報ライブラリ55から取得する。ノード#1は、2番目の処理であり、最初の処理の出力対象はRAM#1である。したがって、制御ユニット2aは、平均値処理を行う処理回路をPEマトリクス10に構成するための接続情報のうちのタイプ1の接続情報56aを取得する。ステップ75において、制御ユニット2aは、接続情報56aに基づいてコンフィグレーションデータ18を生成し、コンフィグレーションメモリ19の、例えば、バンク#1に出力する。
【0061】
ステップ76において、制御ユニット2aは、PEマトリクス10に構成された今の処理、すなわち、処理#0が終了するのを待つ。ステップ77において、ツリー構造35の全ての処理の終了を確認し、終了していない場合には、ステップ78において、コンフィグレーションメモリ19のバンク#1のコンフィグレーションデータ18をフォアグラウンドバンクに移す。これにより、PEマトリクス10に、平均値処理を行う処理回路であって、RAM#1を入力対象とし、RAM#2を出力対象とする処理回路が構成される。そして、RAM#1から階調値反転処理が施された画像データを読み出し、平均値処理を施した画像データをRAM#2に出力する処理が開始される。
【0062】
ステップ79において、ツリー構造35に次のノードの処理が残っていれば、ステップ74に戻って、そのノードの処理を行なうのに適した接続情報56を接続情報ライブラリ55から取得する。ステップ79において、次のノードの処理が残っていなければ、ステップ76に戻り、今の処理が終了すると、コンフィグレーションメモリ19に出力されたコンフィグレーションデータ18により最後のノードの処理を行う回路を再構成する。
【0063】
なお、DAPDNA1のコンフィグレーションメモリ19は4バンク構成なので、バンク#2およびバンク#3に、次の処理回路をPEマトリクス10に構成するためのコンフィグレーションデータ18を予め出力することも可能である。また、再構成制御ユニット2aの機能は、RISCタイプのDAP2にロードされるプログラム(プログラム製品)として提供することができ、ROMなどの適当な記録媒体に記録して提供できる。
【0064】
このデータ処理装置50においては、処理#2の処理回路をPEマトリクス10に構成するためには、処理#1の処理回路の出力対象であるRAM#2を入力対象とするタイプ2の接続情報56bが選択される。2入力1出力のノードの前のノードにおいては、出力対象をDRAM6の作業領域6aにする必要がある。したがって、処理#3の処理回路をPEマトリクス10に構成するためには、RAM#1を入力対象とするタイプ1の接続情報56aが選択され、処理回路61により処理されたデータはSTBを介してDRAM6に出力される。2入力1出力の処理#4の処理回路をPEマトリクス10に構成するためには、2系統のLDBを入力対象とするタイプXの接続情報56dが選択され、処理回路69により処理されたデータはRAM#1に出力される。
【0065】
このように、このデータ処理装置50においては、ツリー構造35が与えられれば、ツリー構造35を解析し、ツリー構造35に含まれるノードの順番により、そのノードの処理を実行するのに適した処理回路を構成するための接続情報56が接続情報ライブラリ55から選択され、その処理回路がPEマトリクス10に構成される。したがって、ツリー構造35の異なるアプリケーション30であっても、そのツリー構造の情報がデータ処理装置50に与えられることにより、アプリケーション30を実行することができる。このため、ツリー構造の異なるアプリケーション毎に、そのアプリケーションを実行するための回路構成をすべて事前に生成し、コンフィグレーション情報として生成しておく必要はない。
【0066】
さらに、データ処理装置50の内部において、ツリー構造35が自律的な要因により、あるいは、外部的な要因により変異したとしても、その変異したツリー構造35にしたがって各ノードの処理を行うための回路をPEマトリクス10に構成することができる。
【0067】
図14は、本発明の実施形態の異なるデータ処理装置のブロック図である。このデータ処理装置51は、DAPDNA1を用いて実現され、再構成ユニット(再構成領域)であるPEマトリクス10と、PEマトリクス10に実装される回路を再構成するためにコンフィグレーションデータ18を出力する再構成制御ユニット2aを有する。再構成制御ユニット2aの機能はDAP2により提供されている。さらに、DAP2は、候補ツリー構造生成ユニット2cと、処理順序出力ユニット2dと、候補ツリー構造評価ユニット2bとしての機能を提供している。
【0068】
候補ツリー構造生成ユニット2cは、遺伝的アルゴリズムの規則により、ツリー構造により機能が示された画像処理を生成する。DRAM6には、フィルタライブラリ37が設けられており、候補ツリー構造生成ユニット2cが利用できるツリー構造のノードとして採用できる各フィルタの情報36が格納されている。DRAM6は、画像データ収納部66を有し、画像データ収納部66には、ツリー構造の画像処理の処理対象となる初期画像データ66aと、評価の基準を提供するリファレンス画像データ66bと、評価の対象となる画像データ66cとが格納される。評価部2bの評価の対象となる画像データ66cは、候補ツリー構造生成ユニット2cにより生成されたツリー構造を備えた画像処理により初期画像データを処理した結果である。評価部2bにより高い評価が得られたツリー構造35は、このデータ処理装置51において画像処理のために使用されるアプリケーション30としてDRAM6に登録され、外部から入力される画像データの処理に用いられる。
【0069】
処理順序出力部2dは、候補ツリー構造生成ユニット2cにより、遺伝的アルゴリズムの規則により生成された候補ツリーに含まれる各ノードの処理31と、その順番とを抽出し、再構成制御ユニット2aに供給する。再構成制御ユニット2aは、上記のデータ処理装置50と同様に、順序出力ユニット2dからの情報にしたがって、適切な接続情報を選択し、PEマトリクス10に適切な回路を構成する。
【0070】
このように、データ処理装置51は、候補ツリー構造生成部2cにより任意のツリー構造35が生成されると、そのツリー構造35を備えた画像処理を行なうための回路を時分割でPEマトリクス10に再構成できる。このため、遺伝的アルゴリズムの規則にしたがって、最適な処理結果が得られる画像処理のツリー構造を生成する処理を、そのツリー構造に含まれるノードの処理に専用化した回路を用いて実行できる。このため、最適な結果が得られる画像処理のためのツリー構造を短時間で得ることができる。
【0071】
図15は、接続情報56によりPEマトリクス10に構成される回路の異なる例である。この回路80を構成するための接続情報56eは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。RAM#1およびRAM#2は、エレメント単体である必要はなく、幾つかのRAMエレメントを含むデータ読み出し回路であっても良い。アドレス調停回路80aおよび80bは、カウンタエレメントであるC16Eおよび/またはC32E、さらにはEXEエレメントなどを用いて構成することができる。以下の回路においても同様である。
【0072】
図16は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路81を構成するための接続情報56fは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。フィルタ処理回路61は4並列の処理ルート(データパス)を含む。したがって、この回路81は、RAM#1−1〜RAM#1−4をそれぞれ入力対象とし、RAM#2−1〜RAM#2−4をそれぞれ出力対象とする4系統の処理回路を含む。4並列の処理を行うフィルタ回路の一例は、図17に示した平均値フィルタの処理回路89である。この平均値フィルタは、対象画素と、周辺画素(8画素)の平均値を算出して出力する。図17に示した回路89では、4ピクセルを対象画素とした平均値の処理を4並列で行っている。なお、図17に示した回路89では、8ビット×4ピクセルを32ビットのデータにパックして入出力しており、入力対象および出力対象のRAMエレメントは1つずつである。
【0073】
図18は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路82を構成するための接続情報56gは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。入力対象となる4つのRAM#1−1〜RAM#1−4は、セレクタ82aによりシリアル変換されて読み出されている。また、出力対象となるRAM#2−1〜RAM#2−4に対してはセレクタ82bによりパラレル変換して書き込まれる。
【0074】
図19は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路83を構成するための接続情報56hは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。入力対象となる4つのRAM#1−1〜RAM#1−4は、セレクタ82aによりシリアル変換されて読み出され、出力対象となるRAM#2−1〜RAM#2−4に対してはパラレルでデータが書き込まれる。
【0075】
以上では、ツリー構造により機能が示されるアプリケーションとして、画像処理を行うアプリケーションを例に説明している。ツリー構造により機能が示されるアプリケーションは画像処理に限らず、音声処理などであっても良い。さらに、このデータ処理装置において実行可能なアプリケーションは、ツリー構造を有するアプリケーションに限定されない。アプリケーションの機能が、データの入出力を伴う、複数のある程度纏まった処理の集合として与えられており、それらの処理の順番が決まるのであれば、再構成制御ユニットが、その順番に従って接続情報を選択し、コンフィグレーションデータとして出力することにより、そのアプリケーションを、再構成ユニットに構成された専用回路により実行することが可能となる。
【図面の簡単な説明】
【0076】
【図1】図1(a)は、再構成可能なデバイスの一例の概略構成を示し、図1(b)は、PEマトリクスの概略を示し、図1(c)および図1(d)は、PEマトリクスを動的に再構成する様子を示す。
【図2】PEマトリクスの配列を示す図。
【図3】PEマトリクスに配置されたPEのタイプを示す図。
【図4】PEの1つのタイプのEXMの構成を示すブロック図。
【図5】PEの1つのタイプのRAMの構成を示すブロック図。
【図6】セグメント内の配線(イントラセグメント配線)を示す図。
【図7】セグメント間の配線(インターセグメント配線)を示す図。
【図8】ツリー構造により機能が示されたアプリケーション。
【図9】再構成可能な領域を含むデータ処理装置の一例を示すブロック図。
【図10】図10(a)および(b)は、再構成可能な領域にフィルタ回路を構成した他の例。
【図11】実施形態の1つのデータ処理装置を示すブロック図。
【図12】接続情報ライブラリに含まれる接続情報の例。
【図13】再構成制御ユニットの動作を示すフローチャート。
【図14】実施形態の他のデータ処理装置を示すブロック図。
【図15】再構成可能な領域にフィルタ回路を構成した他の例。
【図16】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図17】平均値フィルタの回路例。
【図18】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図19】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【符号の説明】
【0077】
1 再構成可能なデバイス
2a 再構成制御ユニット
10 PEマトリクス(再構成ユニット)
50、51 データ処理装置
55 接続情報ライブラリ、 56 接続情報
【技術分野】
【0001】
本発明は、回路を再構成可能なユニットを含むデータ処理装置およびその制御方法に関するものである。
【背景技術】
【0002】
特許文献1には、生物の進化の過程を模倣した最適化手法の1つである遺伝的アルゴリズム(GA:Genetic Algorithm)をもとに考案された遺伝的プログラミング(GP:Genetic Programming)を画像処理に適用したツリー構造状画像変換自動作成方法を印刷物の文字列抽出方法に用いることが記載されている。
【0003】
さらに、この特許文献1には以下のことが記載されている。この手法は、予め用意した複数の画像変換処理フィルタを任意の形のツリー構造状に組み合わせることによって、入力画像から出力画像への画像変換処理を実現するものである。なお、該手法は、1つ又は複数の入出力手段と、1つの出力手段を持つ画像変換処理フィルタFnを用いる。処理される画像はツリー構造における全ての葉ノード(終端)より入力され、フィルタの組み合わせにより異なった処理を受ける。それらは画像変換処理により順次合成され、最後に1つの画像となって出力される。フィルタの組み合わせにより、領域や目的毎に異なった処理を施し、それらの結果を適宜合成するような複雑な画像変換処理を構築することが可能になる。
【0004】
特許文献2には、複数種類のプロセッシングエレメントの接続を変えて種々のデータパスを再構成するタイプの集積回路装置が記載されている。この集積回路装置は、プロセッシングエレメントとして、算術論理演算用のエレメントに加え、RAMとして機能するRAMエレメントを有する。
【特許文献1】特開2004−362440号公報
【特許文献2】特開2006−285386号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
GAGPを画像処理に適用したツリー構造状の画像変換プログラムは、複数の画像変換処理フィルタがツリー構造状に組み合わされたアプリケーションプログラムである。特許文献2に開示されている集積回路装置は、動的に、例えば、数クロックサイクル、さらには1クロックサイクルで回路を再構成可能な集積回路装置(動的再構成可能LSI)である。したがって、画像変換プログラムに含まれている複数の画像変換処理フィルタの1つまたは限られた数の機能を回路化して、順番に動的再構成可能LSIに構成することにより、種々のツリー構造状で機能が指示される画像変換プログラムによる処理を、より少ないハードウェア資源を用い、そのプログラムを実行するために専用に開発された回路(ハードウェア)で実行することが可能となる。このため、回路構成が基本的には変わらないプロセッサの上で画像変換プログラムを稼動させるよりは、高速で処理結果を得ることができる。
【0006】
画像変換処理により得られた情報を、機器の制御、例えば、自動車を安全に制御するために使用する場合は、高い処理速度が要求される。さらに、画像データが得られる環境、画像データから抽出したい認識対象物などの相違によって、画像変換プログラムも異なる可能性がある。したがって、ツリー構造状のような画像変換プログラムの機能を高速で処理でき、さらに、異なる構造の画像変換プログラムの機能にも迅速に対応できるデータ処理装置が要望されている。
【課題を解決するための手段】
【0007】
本発明の一態様は、回路を構成するための複数のエレメントと、複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、内部配線による複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、再構成ユニットの回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置である。複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、内部配線の接続を変更することにより、複数のメモリエレメントの少なくともいずれかを、複数の演算エレメントの少なくともいずれかの演算エレメントを含む処理回路の入力対象または出力対象とすることが可能である。当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメントを入力対象とし、第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリを有する。そして、制御ユニットは、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する。
【0008】
このデータ処理装置においては、データの入出力を伴う複数の処理のそれぞれについて、制御ユニットが、接続情報ライブラリに用意された接続情報を含む再構成情報を出力することにより、再構成ユニットにそれぞれの処理を実行するための回路が構成される。したがって、複数の処理を、その処理のために専用に設計された回路を用いて実行することができ、より少ないハードウェア資源により、高速に実行できる。さらに、接続情報ライブラリに用意された第1または第2の接続情報を含む再構成情報により再構成ユニットに再構成された回路は、内部配線によりアクセス可能な再構成ユニット内のメモリエレメントを入出力の対象とする。したがって、入出力インターフェイスおよび外部バスなどを経由して外部メモリとの間でデータを入出力するために要するメモリアクセスの時間を省略または短縮できる。このため、処理速度を向上できる。
【0009】
さらに、接続情報ライブラリには、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメントを入力対象とし、第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納されている。したがって、制御ユニットが、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力することにより、入力対象のメモリエレメントと、出力対象のメモリエレメントとをフレキシブルに選択できる。このため、入出力対象の複数のメモリエレメントを共通のバスで接続したり、セレクタで切り替えて選択するような冗長な回路構成を用いなくても、再構成ユニットに、入出力の対象となるメモリエレメントをフレキシブルに選択できる回路を再構成できる。すなわち、再構成ユニットに、特定の入出力のメモリエレメントに対して入出力するように最適化された回路を再構成することにより、入出力の対象となるメモリエレメントをフレキシブルに選択できる。
【0010】
さらに、再構成情報に含まれる接続情報は、複数の処理を実行する順番に基づき選択することができる。このことは、制御ユニットが、再構成情報を動的に生成することが可能であることを意味する。すなわち、このデータ処理装置において、複数の処理を実行する順番が変わったときは、再構成ユニットを再構成するための情報を、最初から生成しなおす必要はない。制御ユニットに複数の処理を実行する順番に関する情報を提供することにより、制御ユニットは、新しい順番にマッチした再構成情報を動的に出力することが可能である。複数の処理を実行する順番の変更は、データ処理装置の外部から供給されても良く、データ処理装置の内部の結果、例えば、再構成ユニットに構成された回路の演算結果により与えられても良い。
【0011】
再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、内部配線の接続を変更することにより、入力インターフェイスを複数の演算エレメントのいずれかを含む処理回路の入力対象とし、出力インターフェイスを処理回路の出力対象とすることが可能であることが望ましい。さらに、接続情報ライブラリは、複数の処理のそれぞれについて、入力インターフェイスを入力対象とし、第1のメモリエレメントまたは第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、第1のメモリエレメントまたは第2のメモリエレメントを入力対象とし、出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されていることが望ましい。
【0012】
第4の接続情報は、第1の接続情報、第2の接続情報および第3の接続情報とマージすることが可能である。すなわち、接続情報ライブラリの、第1の接続情報は、第2のメモリエレメントに加え出力インターフェイスを出力対象とし、第2の接続情報は、第1のメモリエレメントに加え出力インターフェイスを出力対象とし、第3の接続情報は、第1のメモリエレメントまたは第2のメモリエレメントに加え出力インターフェイスを出力対象とする。
【0013】
第3の接続情報および第4の接続情報または出力インターフェイスも出力対象とする第1および第2の接続情報を用いることにより、入力対象および出力対象が、入力インターフェイスおよび出力インターフェイスの回路を構成するための再構成情報を、制御ユニットが生成することができる。
【0014】
複数の処理の一例は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理である。制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めることが可能である。このため、このデータ処理装置においては、任意の構成のツリー構造プログラムにより与えられる機能を、専用の回路により実行することが可能である。さらに、ツリー構造で機能が示されるアプリケーションを自動生成したり、自律的に、あるいは他律的に、ツリー構造を動的に変更させながら、変更されたツリー構造で機能が示されるアプリケーションをハードウェアベースで実行することが可能となる。
【0015】
本発明の他の態様の1つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、再構成ユニットに含まれる回路を再構成するために、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法である。当該方法は、以下の工程を含む。
・上述した第1の接続情報と、第2の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択すること。
・選択された接続情報を含む再構成情報を出力すること。
【0016】
接続情報ライブラリは、さらに、上述した第3の接続情報と、第4の接続情報とが格納されていることが望ましい。また、第1の接続情報および第2の接続情報は、出力インターフェイスも出力対象とすることが望ましい。
【0017】
さらに、複数の処理が、ツリー構造により機能が示されるアプリケーションに含まれる複数のノードの処理であれば、当該方法は、さらに以下の工程を含むことが望ましい。
・処理対象のアプリケーションのツリー構造にしたがって複数の処理の中から実行する処理およびそれらの順番を決めること。
【0018】
接続情報ライブラリには、さらに、第3のメモリエレメントを入力対象とし、第4のメモリエレメントを出力対象とする第5の接続情報と、第4のメモリエレメントを入力対象とし、第3のメモリエレメントを出力対象とする第6の接続情報とを含めた他の接続情報が格納されていても良い。2つまたはそれ以上の処理を実行するための複数の回路を同時に再構成ユニットに構成し、複数の処理を並列に実行するための再構成情報を、制御ユニットは出力することが可能となる。
【0019】
本発明の他の態様の1つは、メモリエレメントを含む再構成ユニットを有するデータ処理装置を、複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御するためのプログラムまたはプログラム製品である。当該プログラムは、上述した第1の接続情報と、第2の接続情報とが格納された接続情報ライブラリから、複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、選択された接続情報を含む再構成情報を出力することとを含む。
【発明を実施するための最良の形態】
【0020】
図1(a)に、再構成可能なデバイスの一例を示している。このデバイス1は、本願の出願人が開発したDAPDNAと称する半導体集積回路装置である。このデバイス1は、DAPと呼ばれるRISCコアモジュール2と、DNAと呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ3とを含む。デバイス1は、DAP2およびDNA3に加え、DNA3のダイレクト入出力用のインターフェイス4と、PCIインターフェイス5と、SDRAMインターフェイス6と、DMAコントローラ7と、その他の周辺デバイス8と、これらを接続するための高速スイッチングバス(内部バス)9とを含む。DAP2は、デバッグインターフェイス42aと、RISCコア42bと、命令キャッシュ42cと、データキャッシュ42dとを含む。DNA3は、376個のPE(PEs、処理エレメント)が2次元に配置されたPEマトリクス10と、このPEマトリクス10に含まれるPEsの機能および/または接続を変えてPEマトリクス10を再構成するためのコンフィグレーションデータ18が格納されるコンフィグレーションメモリ19とを含む。
【0021】
コンフィグレーションメモリ19は、複数バンクの構成になっている。例えば、図1(b)に示すように、PEマトリクス10には、フォアグラウンドバンクに格納されるコンフィグレーションデータ18により第1の機能(データフロー、回路デザイン)17aが構成される。また、異なるバックグラウンドバンクにそれぞれ格納されるコンフィグレーションデータにより、第2の機能17bおよび第3の機能17cがそれぞれ構成される。メモリ19のバンクを切り替えることにより、PEマトリクス10には、第1の機能17aに変わって第2の機能17bまたは第3の機能17cが再構成される。PEマトリクス10の再構成は、例えば、1サイクル(クロックサイクル)でダイナミックに行なわれる。このようにPEマトリクス10は、回路を構成するための複数のエレメントと、これらのエレメントを接続するための内部配線とを含む再構成ユニットであり、内部配線によりエレメントの接続を変えることによりPEマトリクス10に含まれる回路を再構成できる。
【0022】
図1(c)は、PEマトリクス10に回路を再構成する一例である。あるアプリケーション、例えばMPEGデコーダを時分割した複数の機能(サブファンクション)を、PEマトリクス10に時分割で再構成し、MPEGデコーダの機能を専用回路(専用ハードウェア)で提供する。このような使用により、再構成可能なデータ処理装置であるデバイス1を用いて、多くのハードウエア資源を必要とするアプリケーションを、少ないハードウエア資源で実行できる。
【0023】
図1(d)は、PEマトリクス10に回路を構成する他の例の一つである。再生方式が異なるアプリケーションを実行するために、複数の機能がそれぞれ実現されるようにPEマトリクス10を再構成できる。このような使用により、多くのアプリケーションを共通のハードウエア(デバイス)1を用いて実行できる。このデバイス1は、プログラムレベル(命令レベル)ではなく、データフローレベル(データパスレベル、ハードウエアレベル)で多数の機能を切り換えて実装できるので、専用のハードウエアに匹敵する速度で処理を行うことができる。
【0024】
図2に、PEマトリクス10の配列を拡大して示している。処理エレメントPEsは、全体として、16×24のマトリクスを構成するように配置されている。なお、図3に示すように、PEのいくつかは、2個分のPEのスペースを占め、全体として376個のPEがPEマトリクス10に実際には配置されているが、図2には反映していない。これらのPEsは、さらに、それぞれ8×8のPEsからなる6つのグループに区分けされている。これらのグループをセグメントSと称し、PEマトリクス10の左上から右下に向かって順番にセグメントS0からセグメントS5が配置されている。各々のセグメントS0〜S5に含まれるPEは、1サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクションで接続されている。また、セグメントS0〜S5の内、隣接するセグメントは、後述するディレイエレメントを介してインターセグメントコネクション22により接続されている。
【0025】
図3に、PEマトリクス10に含まれるPEsの具体的な配置例を示している。図3に示したPEのうち、「EX」で始まるPEは、EXEエレメントと呼ばれ、算術演算、論理演算および2入力の比較機能を含む演算用のエレメントである。「EXC」は、CMPSB命令を搭載し、「EXF」は、FF1命令を搭載し、「EXM」は、乗算命令を搭載し、「EXR」はBREV命令を搭載し、「EXS」は、BSWAP命令を搭載するというように、タイプ毎に固有の演算機能も含んでいる。
【0026】
「DL」で始まるPEは、ディレイエレメントであり、1−8クロックの間の遅延をそれぞれ設定できる。「DLE」は、セグメント内のデータ遅延用であり、「DLV」は縦方向のセグメント間のデータ送受信用であり、「DLH」は横方向のセグメント間のデータ送受信用であり、「DLX」は縦横方向のセグメント間のデータ送受信用のエレメントである。
【0027】
「RAM」と表示されたPEは、DNAの内部メモリとして使用されるエレメント(メモリエレメント)である。「LDB」と表示されたPEは、データ入力用のDNA内部バッファである。「STB」と表示されたPEは、データ出力用のDNA内部バッファである。「C16E」と表示されたPEは、DNA内部バッファに対するアドレス生成エレメントである。「C32E」と表示されたPEは、外部メモリ空間に対するアドレス生成エレメントである。「LDX」と表示されたPEは、DNAダイレクトI/Oからのデータ入力用エレメントである。「STX」と表示されたPEは、DNAダイレクトI/Oへのデータ出力用エレメントである。PEマトリクス10において、LDBおよびLDXは、外部からデータを入力するための入力インターフェイスとして使用でき、STBおよびSTXは、外部へデータを出力するための出力インターフェイスとして使用できる。
【0028】
図4に、PEの一例として、EXEエレメント(「EXM」)の概略構成をブロック図により示している。EXMエレメントは、ALU11aと、MUL(16×16)11bと、FF11cなどを含む。このEXMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、算術演算、論理演算、2入力の比較機能、さらには、乗算のいずれか、または複合した命令を実行するように構成できる。また、複数のFF11cを内蔵しているので、エレメントPEに対するデータの入力から出力までのレイテンシを制御することが可能であり、ディレイエレメント(DLE)の数が不足する構成では、ディレイエレメントとしての機能をセットすることも可能である。
【0029】
図5に、PEの他の例として、RAMエレメント(「RAM」)の概略構成をブロック図により示している。このRAMエレメントは、データ格納用メモリエレメントであり、16KB(32ビット×4096ワード)のRAMモジュール12aと、アドレス入力用のアドレスレジスタ(FF)12b、ラッチ12c、データ入力用のライトデータレジスタ(FF)12d、ラッチ12e、データ出力用のリードデータレジスタ(FF)12fを含む。RAMモジュール12aのリードとライトの制御は、アドレスデータおよび/またはリードデータとともに入力されるトークンの値により行なわれる。アドレス入力からリードデータの出力までは、EXEエレメントと同様に3クロックサイクル程度で可能になっており、PEマトリクス10に含まれる他のタイプのPEと同様のレイテンシで、データの入出力が可能である。このRAMエレメントは、DNA3のコンフィグレーションメモリ19に格納されたコンフィグレーションデータ18により、32ビットモード、デュアルポート32ビットモード、FIFOモード、16ビットモード、8ビットモード、さらに、FSM(フィードバックステートモード)でデータ入力および/または出力するように構成できる。
【0030】
RAMエレメントのアクセスアドレスの生成には、EXEエレメント、カウンタエレメントであるC16Eおよび/またはC32Eを使用することができ、PEマトリクス10のルーティングマトリクス(マトリクスバス)を通じて、RAMエレメントに入力できる。したがって、RAMエレメントへの入出力は、PEマトリクス10に再構成される回路により制御できる。
【0031】
PEマトリクス10は、複数のPEsと、それらを接続するためのルーティングマトリクス(配線群)20を含む。ルーティングマトリクス20は、セグメントS内のPEを接続するための第1レベルの配線群(第1レベルのルーティングマトリクス、イントラコネクト)21と、ディレイエレメントを介して隣接するセグメントSの間を接続するための第2レベルの配線群(第2レベルのルーティングマトリクス、インターコネクト)22とを含む。ルーティングマトリクス20によるPEsの接続はコンフィグレーションデータ18により制御できる。したがって、PEマトリクス10には、コンフィグレーションデータ18により、複数のPEのそれぞれの機能を変更すること、および/または、ルーティングマトリクス20の少なくとも一部の接続を変更することにより、異なる回路(データパス、データフロー)を再構成できる。
【0032】
図6に、セグメントSの内部のPEsを接続するための第1レベルの配線群21の構成の一例を示している。第1レベルのルーティングマトリクス21は、セグメントS0に含まれる8×8個のPEsを接続するために、128の縦方向のバス23と、64の横方向のバス24とを含む。縦方向のバス23は、16のグループに分けられ、それぞれ8のバスを含む2つのV−バス23xおよび23yがペアとなり、PEsの縦の列(コラム)に沿って、その列の両側に配置されている。横方向のバス24は8のグループに分けられ、それぞれ8のバスを含むH−バス24がPEの横方向の行(ライン)に沿って配置されている。V−バス23xおよび23yには、8−1のバスセレクタ(マルチプレクサ、MUX)25がそれぞれのPEに対応して設けられており、それぞれのPEに対してデータの入力を可能としている。
【0033】
H−バス24には、H−バス24とV−バス23xおよび23yのそれぞれの交差に対応して、8−1のバスセレクタ(マルチプレクサ、MUX)26が設けられている。したがって、1つのH−バス24から1つのデータセットを、そのH−バス24と交差している1つのV−バス23xまたは23yに出力できる。逆も可能である。H−バス24に含まれるバスのそれぞれには、そのラインのPEsの出力が接続される。したがって、V−バス23xおよび23yと、H−バス24とを介することにより、セグメントSに含まれるPEsを接続できる。これらのV−バス23xおよび23y、およびH−バス24を含む第1レベルのバス21により接続できる範囲、すなわち、各セグメントS0〜S5内のPEの間では1サイクル(1クロック)以内にデータを送受信できる。したがって、タイミング的には、例えば、セグメントS0に含まれるPEsは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのPEを選択して機能を割り付けても、タイミングの検討は不要であり、タイミング的には、セグメント内のPEsを用いて、所定の回路を自由に配置および配線できる。
【0034】
図7に、第2レベルのルーティングマトリクス22の構成を示している。図7では、第2レベルのルーティングマトリクス22により、隣接するセグメントS1およびS4にそれぞれ含まれている接続用のエレメントDLHを接続している。それぞれのDLHは、それぞれのセグメントS1およびS4の内部の第1レベルのルーティングマトリクス21に接続している。したがって、セグメントS1に含まれるPEと、セグメントS4に含まれるPEとを第2レベルのルーティングマトリクス22を介して接続することができる。接続用のディレイエレメントDLHは、第1レベルのルーティングマトリクス21に含まれるバスのインターフェイスとして機能する。したがって、第1レベルのルーティングマトリクス21に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のディレイエレメントDLHに含まれる複数のFFを介してデータを入出力する必要があり、クロックに同期した2サイクル以上の遅延が新たに加わる。
【0035】
このように、第1レベルのルーティングマトリクス21のみを用いてPEを接続する場合、PEsの間は1サイクル(第1の遅延)の範囲内で接続されることが保証され、タイミングの検証は不用である。これに対し、第2レベルのルーティングマトリクス22を介してPEを接続する場合は、2サイクル以上の遅延が加わる。第2レベルのルーティングマトリクス22を介して接続する場合の遅延は、ディレイエレメントDLHの設定に依存する。例えば、DLHの遅延量を制御することにより、第2のルーティングマトリクス22を2回使用する信号と、1回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントDLVおよびDLXを介して隣接するセグメントS0〜S5を接続するときも同様である。
【0036】
このため、セグメントS0〜S5の複数のセグメントに分散する回路、すなわち、セグメントを跨ぐ回路は、配置配線の間あるいは終了した後に、タイミングの調整あるいは再検討が必要となる。その結果、遅延エレメントを追加したり、遅延エレメントの遅延を調整したりすることが要求される可能性がある。したがって、回路をPEマトリクス10に配置および配線するときは、第2レベルのルーティングマトリクス22の使用を最小限にすることが好ましい。
【0037】
図8に、ツリー構造により機能が示されたアプリケーションの一例を示している。ツリー構造とはノードが一列にあるいは枝分かれして連なった構造を示している。このアプリケーション30は複数の処理がツリー構造をなすように組み合わされた画像処理(画像フィルタ)であり、ツリー構造は、入力される画像、抽出したい対象などの条件に基づき最適化されたものである。最適化の手法は、上述したGAGPと称される手法であり、遺伝的アルゴリズム(GA)をもとに考案された遺伝的プログラミング(GP)である。ツリー構造を見出すための最適化の手法はGAGPに限らず、免疫的アルゴリズムに基づく手法、シミュレーテッドアニーリング法などの他の最適化手法であっても良い。
【0038】
ツリー構造の画像処理アプリケーション30は、任意に組み合わされた複数のノードの処理31を含み、これらのノードの処理31が組み合わされた順番に実行されるようになっている。ノードの処理31は、1入力1出力の処理に限られず、多入力1出力、多入力多出力であっても良く、この例では2入力1出力の処理31が含まれている。1入力1出力の処理(ノード)31が接続されている場合は、先の処理31の出力が次の処理31の入力となる。2入力1出力の処理がノードの処理31の場合は、2の枝(処理経路)が交わり、1つの枝(処理経路)となって次のノードに接続される。すなわち、先の2つの処理31の出力が、次の処理31の入力となる。
【0039】
画像処理アプリケーション30において、ツリー構造をなす各ノードの処理31は、画像処理の目的に応じて、ある程度、変換機能が限定された画像フィルタ(フィルタユニット)である。1入力1出力のフィルタユニットとしては、平均値フィルタ(−)、最大値フィルタ(M)、最小値フィルタ(m)、ゾーベルフィルタ(d)、黒領域エッジ抽出ラプラシアンフィルタ(E)、明領域エッジ抽出ラプラシアンフィルタ(e)、分割領域面積が平均値よりも小さいものを明るくするフィルタ(X)、分割領域面積が平均値よりも大きいものを明るくするフィルタ(x)、明るいピクセル(例えば平均より階調値が大)を選択して他は黒にするフィルタ(T)、暗いピクセル(例えば平均より階調値が小)を選択して他は明るくするフィルタ(t)、ハイパスフィルタ(F、例えば、離散コサイン変換し、低周波数成分をカットし、逆離散コサイン変換する)、ローパスフィルタ(f、例えば、離散コサイン変換し、高周波成分をカットし、逆離散コサイン変換する)、階調値反転処理フィルタ(i)、線形変換フィルタ(H)、平均値による2値化処理フィルタ(N)、分析処理により得られた値による2処理フィルタ(n)などを挙げることができる。
【0040】
2入力1出力のフィルタユニットとしては、論理和(L)、論理積(l)、代数和(A)、代数積(a)、限界和(B)、限界積(b)、差分フィルタ(D)などを挙げることができる。
【0041】
図9に、ツリー構造で機能が示されたアプリケーション30を図1に示したDAPDNA1で実行する一例を示している。この例では、DAP2は再構成制御ユニット2aとしての機能を含み、PEマトリクス10は再構成領域である。再構成制御ユニット2aが、コンフィグレーションメモリ19に、ツリー構造にしたがって各ノードの処理31を実行するための1セットの(ノード単位の)回路構成(再構成情報、コンフィグレーションデータ)18を出力し、PEマトリクス10にノードの処理31を実行するための回路を構成する。各ノードの処理31を実行するための回路構成を指示するコンフィグレーションデータ18を含むアプリケーション30を実行するためのハードウェア情報39は、アプリケーション30のツリー構造にしたがって予め設計(生成)されており、DRAM(SDRAM)6に格納されている。
【0042】
DAPDNA1においては、コンフィグレーションメモリ19のバンクに、次のノードの処理31を実行するための回路のコンフィグレーションデータ18を格納しておくことができる。したがって、PEマトリクス10を、ツリー構造にしたがってほぼ1クロックサイクルで再構成することができる。このため、ツリー構造で機能が示されたアプリケーションを、専用回路を用いて、高速で実行できる。さらに、コンフィグレーションデータ18を変えることにより、ツリー構造の異なるアプリケーションをDAPDNA1に実装できるので、画像の入力状況および/または抽出対象に適した複数種類のツリー構造のアプリケーションを1つのDAPDNA1で適宜実行できる。
【0043】
図10(a)および(b)に、ツリー構造で機能が示されたアプリケーション30をDAPDNA1で実行する異なる例を示している。図9に示した例では、PEマトリクス10に構成された回路は、DAPDNA1のDRAM6を作業領域としてデータを入出力している。これに対し、図10(a)および(b)に示した例では、PEマトリクス10に構成された回路は、PEマトリクス10のRAMエレメントを作業領域としてデータを入出力している。
【0044】
ツリー構造の画像処理のアプリケーション30において、各ノードの処理は、処理対象の画像データに含まれる画素データを読み込んで変換して出力する作業を繰り返して行なう。したがって、作業用のメモリ領域との間でデータの入出力は頻繁になる。図9に示した例では、DRAM6に作業領域6aを設けている。DRAM6は、DAPDNA1に含まれるメモリなので、PEマトリクス10に構成された回路から高速でデータを入力および出力できる。
【0045】
しかしながら、PEマトリクス10とDRAM6との間でデータを入力または出力するためには、幾つかの手続きが必要となる。例えば、データをDRAM6からPEマトリクス10へ供給する場合、まず、PEマトリクス10とDRAM6とを接続する内部バス9をPEマトリクス10のアクセスのために開放し、PEマトリクス10からメモリアクセス用のアドレスを出力する。その後、DRAM6から所定のデータがバス9に出力されPEマトリクス10に供給される。そのバス9に出力されたデータは、PEマトリクス10において、データ入力用の内部バッファとなるLDBエレメントを介して、ノード(画像フィルタ)としての機能を果たすためにPEマトリクス10に構成された回路に入力される。PEマトリクス10に構成された回路により処理されたデータを出力する場合も、ほぼ同じ手続きを経る必要がある。
【0046】
このようなデータの入出力に消費されるサイクルは、プログラムの記述にしたがって逐次処理を進めるRISCなどの汎用型のプロセッサにおいても同様である。したがって、DAPDNA1では、ノードにより異なる処理31を実行するための回路をPEマトリクス10に1クロックサイクルで再構成できるのに対し、データの入出力が多数のクロックサイクルを消費するので、回路を再構成することはデータ処理の遅れに繋がる恐れはない。逆に、いったんPEマトリクス10に回路が構成されれば、ノードの処理31は専用回路(ハードウェア)でアプリケーション30が実行される。このため、DAPDNA1では、アプリケーション30を、汎用プロセッサをプログラム制御して実行する場合よりも高速で処理が進む。
【0047】
さらに、図10(a)および(b)に示した例では、PEマトリクス10の内部に、RAMエレメントを入出力対象とするフィルタ回路(処理回路)61および62が構成される。これらのフィルタ回路61および62は、PEマトリクス10に配置された演算エレメント(EXE)を含み、所定のフィルタとしての機能を実現するための回路であり、RAMエレメントが含まれていてもよい。図10(a)では、PEマトリクス10に、第1のRAMエレメント(RAM#1)を入力対象とし、第2のRAMエレメント(RAM#2)を出力対象とするフィルタ回路61が構成されている。図10(b)には、第2のRAMエレメント(RAM#2)を入力対象とし、第1のRAMエレメント(RAM#1)を出力対象とするフィルタ回路62が構成されている。このように、図10(a)に示したK番目(5番目)の処理回路61で出力対象となったRAM#2を、図10(b)に示した(K+1)番目(6番目)の処理回路62においては入力対象とすることにより、PEマトリクス10の内部のデータ転送だけで、ツリー構造で繋がった複数の処理31を実行することが可能となる。したがって、DAPDNA1の内部バス9およびLDBエレメントを介してデータを入力する必要がなくなり、作業用のメモリにアクセスするために要する手続きは簡略化される。このため、ノードの処理31において、データの入出力に要する処理時間が低減され、DAPDNA1において、さらに高速でアプリケーション30を実行することができる。
【0048】
図11は、本発明の実施形態の一例のデータ処理装置のブロック図である。このデータ処理装置50は、DAPDNA1を用いて実現されている。データ処理装置50は、再構成ユニット(再構成領域)であるPEマトリクス10を有する。このPEマトリクス10は、回路を構成するための複数のエレメント(PE)と、これらPEを接続するための内部配線20とを含み、内部配線20による複数のPEの接続を変更することにより、当該再構成ユニット10に含まれる回路を再構成可能である。さらに、データ処理装置50は、PEマトリクス10に実装される回路を再構成するために、複数のPEの接続情報を含む再構成情報(コンフィグレーションデータ)18を出力する再構成制御ユニット2aを有する。このデータ処理装置50では、再構成制御ユニット2aはDAP2により提供されている。
【0049】
PEマトリクス10は、上述したように、算術演算用のPEである演算エレメント(EXE)、内部メモリ用のRAMエレメント(RAM)をはじめとする複数種類のPEを含む。そして、第1レベルの配線21および第2のレベルの配線22を含む内部配線20の接続を変更することにより、所定のRAMエレメントを、EXEを含む処理回路入力対象または出力対象とすることが可能である。
【0050】
データ処理装置50では、複数セットの接続情報(接続データ)56を含む接続情報ライブラリ55と、ツリー構造の情報35とがDRAM6に格納されている。接続情報ライブラリ55には、ツリー構造のノードの処理31の幾つか、特に、1入力1出力の処理のそれぞれについて、第1のメモリエレメント(RAM#1)を入力対象とし、第2のメモリエレメント(RAM#2)を出力対象とする第1の処理回路を構成するための第1の接続情報と、第2のメモリエレメント(RAM#2)を入力対象とし、第1のメモリエレメント(RAM#1)を出力対象とする第2の処理回路を構成するための第2の接続情報とが格納されている。したがって、再構成制御ユニット2aは、ツリー構造の情報35にしたがってノードの処理31を順番に実行する際に、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を接続情報ライブラリ55から選択し、その選択された接続情報を含むコンフィグレーションデータ18をコンフィグレーションメモリ19に出力することにより、PEマトリクス10にツリー構造のアプリケーション30を実行するための回路を順番に構成できる。接続情報ライブラリ55に含まれている、それぞれのノードの処理31に対応した接続情報(接続情報のセットまたはピース(接続データセット))56は、PEの接続に関する情報だけではなく、PEにセットされるパラメータなど、コンフィグレーションデータ18として必要な情報を全て含んでいても良い。
【0051】
図12に、接続情報ライブラリ55に含まれる接続情報56のいくつかのタイプ(セット、ピース)を示している。タイプ1の接続情報56aは、第1のRAMエレメント(RAM#1)を入力対象とし、第2のRAMエレメント(RAM#2)を出力対象とする第1の処理回路61を構成するための第1の接続情報である。この接続情報56aは、RAMエレメントに加えて、出力インターフェイスのPEであるSTBも出力対象とする処理回路61が構成されるようにしている。第1の処理回路61の処理結果をPEマトリクス10からDRAM6の作業領域6aに格納する必要があれば、STBからバス9を介してDRAM6に処理結果が送られる。
【0052】
タイプ2の接続情報56bは、RAM#2を入力対象とし、RAM#1を出力対象とする第2の処理回路62を構成するための第2の接続情報である。この接続情報56bも、さらに、出力インターフェイスのPEであるSTBも出力対象とする処理回路62が構成されるようにしている。
【0053】
タイプ3の接続情報56cは、入力インターフェイスのPEであるLDBを入力対象とし、RAM#1を出力対象とする第3の処理回路63を構成するための第3の接続情報である。この接続情報56cも、さらに、出力インターフェイスのPEであるSTBも出力対象とする処理回路63が構成されるようにしている。
【0054】
タイプXの接続情報56dは、2入力1出力のフィルタ回路をPEマトリクス10に構成するための接続情報であり、2つのLDBを入力対象とし、RAM#1と、STBとを出力対象とする処理回路69を構成するための接続情報である。RAM#1と、STBとには同じデータが出力される。
【0055】
ツリー構造の画像処理アプリケーション30のノードとして含まれる可能性のある1入力1出力のフィルタ処理31については、それぞれの処理に対して、タイプ1からタイプ3の接続情報が接続情報ライブラリ55に用意されている。例えば、平均値フィルタをPEマトリクス10に構成するための接続情報として、タイプ1からタイプ3の3種類の接続情報56がライブラリ55に格納されている。これらの3種類の接続情報56によりPEマトリクス10に構成される回路は、平均値フィルタとしての機能を提供するためのものであり、入出力を除いて同じ機能を提供する。さらに、3種類の接続情報56は、異なる入力対象と、異なる出力対象とにそれぞれの処理回路が接続するように最適化されており、フィルタとしての機能を提供するために消費されるPEの数ができるだけ少なくなるように生成されている。例えば、入力を切り換えるためにセレクタとして機能する演算エレメントや、ディレイエレメント、特に、セグメントを跨いだ配線に導入されるディレイエレメントを少なくし、PEマトリクス10に含まれるPEを有効利用して複雑なフィルタ処理に対応できるようにする。また、PEマトリクス10に構成される処理回路を簡易な構成にして、処理に要する時間が短縮されるようにしている。
【0056】
2入力1出力の処理についても、1入力1出力の処理と同様に、複数種類の接続情報を用意することが可能である。しかしながら、画像処理アプリケーション30において、2入力1出力のフィルタ処理は、少なくとも一方の画像データが、異なるフレームの画像データである。このため、2入力1出力のフィルタの入力は、外部メモリ(DRAM)6またはDAPDNA1の外のメモリから供給されるデータを受けることが多い。さらに、第1および第2のRAMエレメントを2入力とすると、2入力の処理の前方の処理においては、出力対象のRAMエレメントに制限が発生する可能性があるので、この例においては、2入力1出力の処理については、外部メモリからデータが入力されるようにしている。したがって、2入力1出力の処理に入力するフィルタ処理されたデータはいったんDRAM6の作業領域6aに出力する。
【0057】
接続情報ライブラリ55に格納される接続情報56は、上述したものに限定されない。1入力1出力の処理について用意されたタイプ1から3の接続情報56a〜56cは、出力対象に、RAMエレメントに加えて、出力インターフェイスであるSTBを含めている。これに対し、出力対象をRAMエレメントのみとした接続情報と、出力対象を出力インターフェイスのみとした接続情報とを独立して用意することが可能である。例えば、第1のRAMエレメントまたは第2のRAMエレメントを入力対象とし、出力インターフェイスであるSTBを出力対象とする第4の処理回路を構成するための第4の接続情報を接続情報ライブラリ55に格納しておくことができる。
【0058】
さらに、第1および第2のRAMエレメントとは異なる、第3のRAMエレメントと、第4のRAMエレメントとを入力対象または出力対象とする接続情報をライブラリ55に用意しておくことは有効である。処理回路の規模が十分に小さい場合には、第1および第2のRAMエレメントを入出力対象とする処理回路と、第3および第4のRAMエレメントを入出力対象とする処理回路とを、PEマトリクス10に同時に生成し、それらの処理を並列に実行することが可能となる。例えば、アプリケーション30のツリー構造の枝別れした部分のノードの処理を並列に実行することにより、アプリケーション30をさらに高速に実行できる。
【0059】
図13に、データ処理装置50において、ツリー構造を備えたアプリケーション30を実行するときの再構成制御ユニット2aの動作を、フローチャートを用いて示している。ステップ70において、DRAM6からアプリケーション30のツリー構造に関する情報(以降ではツリー構造)35を取得する。ステップ71において、ツリー構造35の最初のノード#0(図8の処理#0、階調値反転処理)の接続情報56を、接続情報ライブラリ55から取得する。ノード#0は最初の処理なので、画像データをDRAM6から取得する必要がある。したがって、ステップ71において、制御ユニット2aは、階調値反転処理を行う処理回路をPEマトリクス10に構成するため接続情報のうちのタイプ3の接続情報56cを取得する。ステップ72において、制御ユニット2aは、接続情報56cに基づいてコンフィグレーションデータ18を生成し、コンフィグレーションメモリ19の、例えば、バンク#1に出力する。ステップ73において、制御ユニット2aは、コンフィグレーションメモリ19のバンク#1のコンフィグレーションデータ18をフォアグラウンドバンクに移す。これにより、PEマトリクス10に、階調値反転処理を行う処理回路であって、LDBを入力対象とし、RAM#1を出力対象とする処理回路が構成され、画像データを外部メモリから入力し、階調値反転処理を施した画像データをRAM#1に出力する処理が開始される。
【0060】
PEマトリクス10において処理が行われている間に、制御ユニット2aは、さらに、ステップ74において、次のノード#1(図8の処理#1、平均値処理)の接続情報56を、接続情報ライブラリ55から取得する。ノード#1は、2番目の処理であり、最初の処理の出力対象はRAM#1である。したがって、制御ユニット2aは、平均値処理を行う処理回路をPEマトリクス10に構成するための接続情報のうちのタイプ1の接続情報56aを取得する。ステップ75において、制御ユニット2aは、接続情報56aに基づいてコンフィグレーションデータ18を生成し、コンフィグレーションメモリ19の、例えば、バンク#1に出力する。
【0061】
ステップ76において、制御ユニット2aは、PEマトリクス10に構成された今の処理、すなわち、処理#0が終了するのを待つ。ステップ77において、ツリー構造35の全ての処理の終了を確認し、終了していない場合には、ステップ78において、コンフィグレーションメモリ19のバンク#1のコンフィグレーションデータ18をフォアグラウンドバンクに移す。これにより、PEマトリクス10に、平均値処理を行う処理回路であって、RAM#1を入力対象とし、RAM#2を出力対象とする処理回路が構成される。そして、RAM#1から階調値反転処理が施された画像データを読み出し、平均値処理を施した画像データをRAM#2に出力する処理が開始される。
【0062】
ステップ79において、ツリー構造35に次のノードの処理が残っていれば、ステップ74に戻って、そのノードの処理を行なうのに適した接続情報56を接続情報ライブラリ55から取得する。ステップ79において、次のノードの処理が残っていなければ、ステップ76に戻り、今の処理が終了すると、コンフィグレーションメモリ19に出力されたコンフィグレーションデータ18により最後のノードの処理を行う回路を再構成する。
【0063】
なお、DAPDNA1のコンフィグレーションメモリ19は4バンク構成なので、バンク#2およびバンク#3に、次の処理回路をPEマトリクス10に構成するためのコンフィグレーションデータ18を予め出力することも可能である。また、再構成制御ユニット2aの機能は、RISCタイプのDAP2にロードされるプログラム(プログラム製品)として提供することができ、ROMなどの適当な記録媒体に記録して提供できる。
【0064】
このデータ処理装置50においては、処理#2の処理回路をPEマトリクス10に構成するためには、処理#1の処理回路の出力対象であるRAM#2を入力対象とするタイプ2の接続情報56bが選択される。2入力1出力のノードの前のノードにおいては、出力対象をDRAM6の作業領域6aにする必要がある。したがって、処理#3の処理回路をPEマトリクス10に構成するためには、RAM#1を入力対象とするタイプ1の接続情報56aが選択され、処理回路61により処理されたデータはSTBを介してDRAM6に出力される。2入力1出力の処理#4の処理回路をPEマトリクス10に構成するためには、2系統のLDBを入力対象とするタイプXの接続情報56dが選択され、処理回路69により処理されたデータはRAM#1に出力される。
【0065】
このように、このデータ処理装置50においては、ツリー構造35が与えられれば、ツリー構造35を解析し、ツリー構造35に含まれるノードの順番により、そのノードの処理を実行するのに適した処理回路を構成するための接続情報56が接続情報ライブラリ55から選択され、その処理回路がPEマトリクス10に構成される。したがって、ツリー構造35の異なるアプリケーション30であっても、そのツリー構造の情報がデータ処理装置50に与えられることにより、アプリケーション30を実行することができる。このため、ツリー構造の異なるアプリケーション毎に、そのアプリケーションを実行するための回路構成をすべて事前に生成し、コンフィグレーション情報として生成しておく必要はない。
【0066】
さらに、データ処理装置50の内部において、ツリー構造35が自律的な要因により、あるいは、外部的な要因により変異したとしても、その変異したツリー構造35にしたがって各ノードの処理を行うための回路をPEマトリクス10に構成することができる。
【0067】
図14は、本発明の実施形態の異なるデータ処理装置のブロック図である。このデータ処理装置51は、DAPDNA1を用いて実現され、再構成ユニット(再構成領域)であるPEマトリクス10と、PEマトリクス10に実装される回路を再構成するためにコンフィグレーションデータ18を出力する再構成制御ユニット2aを有する。再構成制御ユニット2aの機能はDAP2により提供されている。さらに、DAP2は、候補ツリー構造生成ユニット2cと、処理順序出力ユニット2dと、候補ツリー構造評価ユニット2bとしての機能を提供している。
【0068】
候補ツリー構造生成ユニット2cは、遺伝的アルゴリズムの規則により、ツリー構造により機能が示された画像処理を生成する。DRAM6には、フィルタライブラリ37が設けられており、候補ツリー構造生成ユニット2cが利用できるツリー構造のノードとして採用できる各フィルタの情報36が格納されている。DRAM6は、画像データ収納部66を有し、画像データ収納部66には、ツリー構造の画像処理の処理対象となる初期画像データ66aと、評価の基準を提供するリファレンス画像データ66bと、評価の対象となる画像データ66cとが格納される。評価部2bの評価の対象となる画像データ66cは、候補ツリー構造生成ユニット2cにより生成されたツリー構造を備えた画像処理により初期画像データを処理した結果である。評価部2bにより高い評価が得られたツリー構造35は、このデータ処理装置51において画像処理のために使用されるアプリケーション30としてDRAM6に登録され、外部から入力される画像データの処理に用いられる。
【0069】
処理順序出力部2dは、候補ツリー構造生成ユニット2cにより、遺伝的アルゴリズムの規則により生成された候補ツリーに含まれる各ノードの処理31と、その順番とを抽出し、再構成制御ユニット2aに供給する。再構成制御ユニット2aは、上記のデータ処理装置50と同様に、順序出力ユニット2dからの情報にしたがって、適切な接続情報を選択し、PEマトリクス10に適切な回路を構成する。
【0070】
このように、データ処理装置51は、候補ツリー構造生成部2cにより任意のツリー構造35が生成されると、そのツリー構造35を備えた画像処理を行なうための回路を時分割でPEマトリクス10に再構成できる。このため、遺伝的アルゴリズムの規則にしたがって、最適な処理結果が得られる画像処理のツリー構造を生成する処理を、そのツリー構造に含まれるノードの処理に専用化した回路を用いて実行できる。このため、最適な結果が得られる画像処理のためのツリー構造を短時間で得ることができる。
【0071】
図15は、接続情報56によりPEマトリクス10に構成される回路の異なる例である。この回路80を構成するための接続情報56eは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。RAM#1およびRAM#2は、エレメント単体である必要はなく、幾つかのRAMエレメントを含むデータ読み出し回路であっても良い。アドレス調停回路80aおよび80bは、カウンタエレメントであるC16Eおよび/またはC32E、さらにはEXEエレメントなどを用いて構成することができる。以下の回路においても同様である。
【0072】
図16は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路81を構成するための接続情報56fは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。フィルタ処理回路61は4並列の処理ルート(データパス)を含む。したがって、この回路81は、RAM#1−1〜RAM#1−4をそれぞれ入力対象とし、RAM#2−1〜RAM#2−4をそれぞれ出力対象とする4系統の処理回路を含む。4並列の処理を行うフィルタ回路の一例は、図17に示した平均値フィルタの処理回路89である。この平均値フィルタは、対象画素と、周辺画素(8画素)の平均値を算出して出力する。図17に示した回路89では、4ピクセルを対象画素とした平均値の処理を4並列で行っている。なお、図17に示した回路89では、8ビット×4ピクセルを32ビットのデータにパックして入出力しており、入力対象および出力対象のRAMエレメントは1つずつである。
【0073】
図18は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路82を構成するための接続情報56gは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。入力対象となる4つのRAM#1−1〜RAM#1−4は、セレクタ82aによりシリアル変換されて読み出されている。また、出力対象となるRAM#2−1〜RAM#2−4に対してはセレクタ82bによりパラレル変換して書き込まれる。
【0074】
図19は、接続情報56によりPEマトリクス10に構成される回路のさらに異なる例である。この回路83を構成するための接続情報56hは、タイプ1の接続情報に相当するが、この例では、STBへの出力は省かれている。入力対象となる4つのRAM#1−1〜RAM#1−4は、セレクタ82aによりシリアル変換されて読み出され、出力対象となるRAM#2−1〜RAM#2−4に対してはパラレルでデータが書き込まれる。
【0075】
以上では、ツリー構造により機能が示されるアプリケーションとして、画像処理を行うアプリケーションを例に説明している。ツリー構造により機能が示されるアプリケーションは画像処理に限らず、音声処理などであっても良い。さらに、このデータ処理装置において実行可能なアプリケーションは、ツリー構造を有するアプリケーションに限定されない。アプリケーションの機能が、データの入出力を伴う、複数のある程度纏まった処理の集合として与えられており、それらの処理の順番が決まるのであれば、再構成制御ユニットが、その順番に従って接続情報を選択し、コンフィグレーションデータとして出力することにより、そのアプリケーションを、再構成ユニットに構成された専用回路により実行することが可能となる。
【図面の簡単な説明】
【0076】
【図1】図1(a)は、再構成可能なデバイスの一例の概略構成を示し、図1(b)は、PEマトリクスの概略を示し、図1(c)および図1(d)は、PEマトリクスを動的に再構成する様子を示す。
【図2】PEマトリクスの配列を示す図。
【図3】PEマトリクスに配置されたPEのタイプを示す図。
【図4】PEの1つのタイプのEXMの構成を示すブロック図。
【図5】PEの1つのタイプのRAMの構成を示すブロック図。
【図6】セグメント内の配線(イントラセグメント配線)を示す図。
【図7】セグメント間の配線(インターセグメント配線)を示す図。
【図8】ツリー構造により機能が示されたアプリケーション。
【図9】再構成可能な領域を含むデータ処理装置の一例を示すブロック図。
【図10】図10(a)および(b)は、再構成可能な領域にフィルタ回路を構成した他の例。
【図11】実施形態の1つのデータ処理装置を示すブロック図。
【図12】接続情報ライブラリに含まれる接続情報の例。
【図13】再構成制御ユニットの動作を示すフローチャート。
【図14】実施形態の他のデータ処理装置を示すブロック図。
【図15】再構成可能な領域にフィルタ回路を構成した他の例。
【図16】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図17】平均値フィルタの回路例。
【図18】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【図19】再構成可能な領域にフィルタ回路を構成したさらに異なる例。
【符号の説明】
【0077】
1 再構成可能なデバイス
2a 再構成制御ユニット
10 PEマトリクス(再構成ユニット)
50、51 データ処理装置
55 接続情報ライブラリ、 56 接続情報
【特許請求の範囲】
【請求項1】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、
前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置であって、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリを有し、
前記制御ユニットは、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を前記接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する、データ処理装置。
【請求項2】
請求項1において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリには、さらに、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第1のメモリエレメントまたは前記第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、前記第1のメモリエレメントまたは前記第2のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されている、データ処理装置。
【請求項3】
請求項2において、前記第1の接続情報は、前記第2のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第2の接続情報は、前記第1のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第3の接続情報は、前記第1のメモリエレメントまたは第2のメモリエレメントに加え前記出力インターフェイスを出力対象とする、データ処理装置。
【請求項4】
請求項1ないし3のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、前記制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決める、データ処理装置。
【請求項5】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法であって、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該方法は、
データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、方法。
【請求項6】
請求項5において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリは、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第1のメモリエレメントまたは前記第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、前記第1のメモリエレメントまたは前記第2のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されている、方法。
【請求項7】
請求項6において、前記第1の接続情報は、前記第2のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第2の接続情報は、前記第1のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第3の接続情報は、前記第1のメモリエレメントまたは第2のメモリエレメントに加え前記出力インターフェイスを出力対象とする、方法。
【請求項8】
請求項5ないし7のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、
当該方法は、
処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決めることを、さらに含む、方法。
【請求項9】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を制御ユニットにより制御するためのプログラムであって、
前記制御ユニットは、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力し、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該プログラムは、
データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、プログラム。
【請求項1】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットと、
前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットとを有するデータ処理装置であって、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該データ処理装置は、さらに、データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリを有し、
前記制御ユニットは、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を前記接続情報ライブラリから選択し、その選択された接続情報を含む再構成情報を出力する、データ処理装置。
【請求項2】
請求項1において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリには、さらに、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第1のメモリエレメントまたは前記第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、前記第1のメモリエレメントまたは前記第2のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されている、データ処理装置。
【請求項3】
請求項2において、前記第1の接続情報は、前記第2のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第2の接続情報は、前記第1のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第3の接続情報は、前記第1のメモリエレメントまたは第2のメモリエレメントに加え前記出力インターフェイスを出力対象とする、データ処理装置。
【請求項4】
請求項1ないし3のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、前記制御ユニットは、処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決める、データ処理装置。
【請求項5】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力する制御ユニットにより制御する方法であって、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該方法は、
データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、方法。
【請求項6】
請求項5において、前記再構成ユニットは、入力インターフェイスと、出力インターフェイスとを含み、前記内部配線の接続を変更することにより、前記入力インターフェイスを処理回路の入力対象とし、前記出力インターフェイスを処理回路の出力対象とすることが可能であり、
前記接続情報ライブラリは、前記複数の処理のそれぞれについて、前記入力インターフェイスを入力対象とし、前記第1のメモリエレメントまたは前記第2のメモリエレメントを出力対象とする第3の処理回路を構成するための第3の接続情報と、前記第1のメモリエレメントまたは前記第2のメモリエレメントを入力対象とし、前記出力インターフェイスを出力対象とする第4の処理回路を構成するための第4の接続情報とが格納されている、方法。
【請求項7】
請求項6において、前記第1の接続情報は、前記第2のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第2の接続情報は、前記第1のメモリエレメントに加え前記出力インターフェイスを出力対象とし、前記第3の接続情報は、前記第1のメモリエレメントまたは第2のメモリエレメントに加え前記出力インターフェイスを出力対象とする、方法。
【請求項8】
請求項5ないし7のいずれかにおいて、前記複数の処理は、複数のノードが連なったツリー構造で機能が示されるアプリケーションに含まれる複数のノードの処理であり、
当該方法は、
処理対象のアプリケーションのツリー構造にしたがって前記複数の処理の中から実行する処理およびそれらの順番を決めることを、さらに含む、方法。
【請求項9】
回路を構成するための複数のエレメントと、前記複数のエレメントを接続するための内部配線とを含む再構成ユニットであって、前記内部配線による前記複数のエレメントの接続を変更することにより、回路を再構成可能な再構成ユニットを有するデータ処理装置を制御ユニットにより制御するためのプログラムであって、
前記制御ユニットは、前記再構成ユニットの回路を再構成するために、前記複数のエレメントの接続情報を含む再構成情報を出力し、
前記複数のエレメントは、少なくとも1種類の演算を実行するための複数の演算エレメントと、複数のメモリエレメントとを含み、前記内部配線の接続を変更することにより、前記複数のメモリエレメントの少なくともいずれかを、前記複数の演算エレメントの少なくともいずれかを含む処理回路の入力対象または出力対象とすることが可能であり、
当該プログラムは、
データの入出力を伴う複数の処理のそれぞれについて、第1のメモリエレメントを入力対象とし、第2のメモリエレメントを出力対象とする第1の処理回路を構成するための第1の接続情報と、前記第2のメモリエレメントを入力対象とし、前記第1のメモリエレメントを出力対象とする第2の処理回路を構成するための第2の接続情報とが格納された接続情報ライブラリから、前記複数の処理を順番に実行するために、先の処理において出力対象となったメモリエレメントを入力対象とする接続情報を選択することと、
選択された接続情報を含む再構成情報を出力することとを含む、プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2009−3765(P2009−3765A)
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願番号】特願2007−165116(P2007−165116)
【出願日】平成19年6月22日(2007.6.22)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願日】平成19年6月22日(2007.6.22)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
[ Back to top ]