(57)【要約】【課題】  不定回数ループをパイプライン的に制御し、処理時間の短縮を図ることができるデータ処理装置を提供する。【解決手段】  前処理のデータフロー７８から出力されるデータの一部を、ループ処理により更新して後処理のデータフロー７９に出力するデータフロー７６と、更新不要なデータであって後処理のデータフロー７９で更新したデータと共に使用されるデータを保持する保持システム７７とを備えたデータ処理装置を提供する。保持システム７７で更新不要なデータを保持するので、データフロー７６が不定回数ループであっても、前処理のデータフロー７８の処理を止めずに進めることが可能となり、処理時間を短縮できる。【選択図】        図７
2005267382.tif 000002
【特許請求の範囲】
【請求項１】
第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に第１のデータを出力する第１の処理システムと、
第２の処理システムから出力される第２のデータと前記第１のデータとを含む入力データによる処理を行う第３の処理システムと、
前記第３の処理システムに対し前記第１のデータと同期して供給される前記第２のデータを記憶し、前記第２のデータを前記第１の待ち時間毎に前記第３の処理システムへ供給する保持システムとを有するデータ処理装置。
【請求項２】
請求項１において、前記第１の処理システムは、前記第２の処理システムおよび第３の処理システムにより少なくとも一部が実行される上位プロセスに含まれるループプロセスを実行する、データ処理装置。
【請求項３】
請求項１において、前記保持システムは、前記第３の処理システムへ前記第１のデータと同期して供給される前記第２のデータの順番を識別する情報を前記第２のデータと共に供給する、データ処理装置。
【請求項４】
請求項１において、各種のエレメントが予め決められた複数のサイクルを消費する複数のエレメントを有し、少なくとも前記第１の処理システムは前記複数のエレメントの組み合わせを備えている、データ処理装置。
【請求項５】
請求項１において、前記保持システムは、前記第２のデータに含まれる複数の個別データをシリアルに記憶するＲＡＭである、データ処理装置。
【請求項６】
請求項１において、前記保持システムは、前記第２のデータに含まれる複数の個別データをパラレルに記憶するＲＡＭである、データ処理装置。
【請求項７】
請求項１において、前記保持システムは、２ポートＲＡＭ、または２バンクのＲＡＭエレメントを備えている、データ処理装置。
【請求項８】
請求項１において、前記複数種類のエレメントは、エレメント間の待ち時間の調整を行う遅延エレメントを含み、
前記保持システムは、前記遅延エレメントを備えている、データ処理装置。
【請求項９】
請求項１において、前記第１の処理は、第２の待ち時間を消費する複数の処理がシーケンシャルに接続されたものである、データ処理装置。
【請求項１０】
第１の処理システムにより、第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に第１のデータを出力する第１の工程と、
第２の処理システムから出力される第２のデータと前記第１のデータとを含む入力データによる処理を行う第３の処理システムに対し前記第１のデータと同期して供給される前記第２のデータを保持システムに記憶し、前記第２のデータを前記第１の待ち時間毎に前記第３の処理システムの入力に供給する第２の工程とを有するデータ処理装置の制御方法。
【請求項１１】
請求項１０において、前記第１の工程では、前記第２の処理システムおよび第３の処理システムにより少なくとも一部が実行される上位プロセスに含まれるループプロセスを実行する、データ処理装置の制御方法。
【請求項１２】
請求項１０において、前記第２の工程では、前記第３の処理システムへ前記第１のデータと同期して供給される前記第２のデータの順番を識別する情報を前記第２のデータと共に供給する、データ処理装置の制御方法。
【請求項１３】
請求項１０において、前記第１の工程では、第２の待ち時間を消費する複数の処理をシーケンシャルに実行する、データ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期型のデータフロー方式のデータ処理装置およびその制御方法に関するものである。
【背景技術】
【０００２】
国際公開０２／０９５９４６号には、一定の算術演算および／または論理演算機能を備えた複数種類のエレメントをマトリクス状に配置し、このマトリクス内に縦横に配置された配線群の接続を切り替える技術が開示されている。このようなマトリクスを備えた半導体集積装置は、複数のエレメントによりフレキシブルにデータフロー（データパス）を再構成できる。
【特許文献１】国際公開０２／０９５９４６号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
さらに、マトリクスを構成する各々のエレメントは、演算用のデータパスに入力されるデータをラッチするフリップフロップと、出力されるデータをラッチするフリップフロップを備えており、各々のエレメントで消費されるクロック（サイクル）が、エレメントの種類あるいはエレメントに設定されたコンフィグレーション情報により一義的に決定される。したがって、マトリクス内に、これらのエレメントが接続することにより構成されるデータフローは、基本的にはデータ駆動型であるが、クロックあるいはサイクルに同期した同期型でもあり、各々のエレメントで消費される待ち時間、すなわち、レイテンシーが明確になる構成である。このため、データフロー型とパイプライン型との長所を兼ね備えており、通常、プログラムカウンタを仮定して時間軸方向で定義されるアルゴリズムを、空間方向に展開して実装することが容易である。さらに、アルゴリズムを空間方向に展開することにより、空間方向の並列性を加味することも容易であり、再構成可能な上記のマトリクスを利用することにより多種多様な処理を高速で実行することができる。
【０００４】
また、ある纏まりのある処理を行うデータフローが複数のエレメントの接続により構成され、さらに、各々のエレメントのレイテンシーが明確になるので、データフローの制御も容易となる。ある処理を繰り返して行った後の値を出力するループプロセスを実装する場合は、ループ周回のそれぞれのデータに依存性がなければ、ループプロセスを展開してパイプライン的な処理を行うことにより、エレメントの稼動効率を極限まで向上できる。
【０００５】
また、ループ周回ごとに計算される値が、次のループで参照されるようなループプロセスにおいては、ループプロセスを含む処理を実行する処理システムを構成する複数のエレメントの内、ループプロセスを実行する複数のエレメントを特定し、それらのエレメントを稼動状態にして、処理システムの他のエレメントは止めることにより、ループプロセスを実行することができる。そして、各々のエレメントでは、エレメント単位で、他のエレメントとは独立して処理を実行できるので、サイクル毎に処理システムを停止させなくても、最大ではループプロセスの一回の処理にかかるレイテンシーのサイクル数、少なくともループプロセスを構成するエレメント数は、処理システムによりパイプライン的に進めることができる。さらに、ループプロセスの終了条件がデータによって異なる不定回数ループプロセスにおいても、少なくともエレメント単位で、出力されたデータに代わり新しいデータをループプロセスに投入することができる。
【０００６】
図１２に、上記の状態を簡単に示してある。大きな枠９１はエレメントを示し、内部が斜線の小さな枠９２は、前処理９０の出力でループ処理前（入力データ）および処理中データ（セット）であり、小さな枠９３は処理済データ（セット）（出力データ）である。図１２（ａ）に示すように、最初に投入されたデータ（セット）９２がループ９５を１周するまでは、ループ中の計算をする各演算器９１の中にデータ（セット）は入っていないので、順次新たなデータセット９２を投入することができる。図１２（ｂ）に示すように、最初のデータ９２が１周すると、もう新たなデータを投入してはいけない。図１２（ｃ）に示すように、データ（セット）は、複数のエレメント９１で構成されたループプロセス９５を何回か周回して変更され、変更された値が参照されたり、データ（セット）の変更に使用される。ある回数、ループプロセス９５を回って終了条件を満たすと結果（出力データ）として取り出される。このような制御方式を採用すると、データ駆動方式のデータフローマシンのように、サイクル毎に停止する場合に比較し、ループプロセス９５を、それを構成するエレメント９１に空きがあるだけ先行してデータを順次入れてパイプライン的に使用できるので、全体のデータセットを処理する上では、ループ９５のレイテンシー分の１に処理時間が短縮される。
【０００７】
また、図１３に示すように、不定回数ループであっても、データが出力されたエレメント９１に、入力データ９２を投入することにより、ループプロセス９５をパイプライン的に利用することができる。
【０００８】
しかしながら、実装しようとするアルゴリズムが、不定回数ループ９５で得られた結果と、そのループの上の階層のプロセスで得られた結果とを利用した演算を行うものであると、ループをパイプライン的に使用することができない。図１４に示すように、ループの出力９３を使用するエレメント９６が、他のプロセス９７の出力９４も使用するものであると、エレメント９６で他のプロセス９７の出力９４を使用するために出力９４を流さずホールドしておく必要があり、上の階層のプロセスを止めるには、前処理のプロセス９０も止める必要がある。例えば、ループが２重以上になり、最下層の不定回数ループで得られた結果を上の階層のループで利用するアルゴリズムになると、もはやパイプライン処理は不可能になる。上の階層で参照する変数はデータを流さずにホールドし、不定回数ループが終わるのを待っている必要があるからである。
【０００９】
そこで、本発明においては、ループが不定回数ループであり、その結果を他のプロセスの結果と共に使用するようなアルゴリズムに対しても、ループを構成するエレメントをパイプライン的に使用し、処理速度を向上できるデータ処理装置およびその制御方法を提供することを目的としている。さらに、ループプロセスを空間的に実装することにより、そのループプロセスを含むプロセス全体の処理速度を向上することができるデータ処理装置および制御方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明においては、第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に第１のデータを出力する第１の処理システムと、第２の処理システムから出力される第２のデータと第１のデータとを含む入力データによる処理を行う第３の処理システムと、第３の処理システムに対し第１のデータと同期して供給される第２のデータを記憶し、第２のデータを第１の待ち時間毎に第３の処理システムへ供給する保持システムとを有するデータ処理装置を提供する。このデータ処理装置の制御方法は、第１の処理システムにより、第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に第１のデータを出力する第１の工程と、第３の処理システムに対し第１のデータと同期して供給される第２のデータを保持システムに記憶し、第２のデータを第１の待ち時間毎に第３の処理システムの入力に供給する第２の工程とを有する。本明細書において、第１および第２のデータは、複数のアイテムを備えたデータセットも含むものである。
【００１１】
第１の処理システムが、第２の処理システムおよび第３の処理システムにより少なくとも一部が実行される上位プロセスに含まれるループプロセスを実行する場合、第２の処理システムからループプロセスの出力である第１のデータと同期して第３の処理システムの入力に供給され、第２のデータは、保持システムに記憶され、第１の待ち時間毎に第３の処理システムの入力へ供給される。第１の処理が不定回数ループであっても、第１のデータが出力されるのは第１の待ち時間毎であり、保持システムにより第２のデータが第１の待ち時間毎に整うので、第１の処理システムから第１のデータが出力されれば、第３の処理システムにおける入力データは揃い、第３の処理システムにおける処理が開始される。すなわち、保持システムにより、第２のデータを第１の待ち時間の間は流さずにホールドし、さらに、第１のデータと同期して第３の処理システムに供給できる。このため、第２のデータをホールドするために第２の処理システムを停止する必要はなく、第１の待ち時間に相当する処理を先行でき、第２の処理システムもパイプライン的に利用できる。したがって、不定回数ループを含む処理であっても、その処理時間の、不定回数ループである第１の処理の第１の待ち時間に対応するサイクル（レイテンシー）に相当する分が短縮される。不定回数ループの平均的な周回数などにより変化するが、平均の周回数が少なければ不定回数ループの処理時間は、そのレイテンシー分の１に近い程度に短縮される。
【００１２】
保持システムは、第３の処理システムへ第１のデータと同期して供給される第２のデータの順番を識別する情報を第２のデータと共に供給することが望ましい。本発明のデータ処理装置においては、第２の処理システムの出力である第２のデータは保持システムに保持されているので、第１の処理システムから不定回数ループの結果が出力されれば、第１または第２の処理に入力されたデータの順番とは関係なく第３の処理システムに供給される。平均値を計算するなどの、データの順番とは無関係な処理である場合は問題ない。しかしながら、第３の処理システムにおいては、入力された順番と、出力された順番が一致しているか、少なくとも入力された順番が判明することが要求されることもある。その場合は、順番を識別する情報を付加することにより解決できる。
【００１３】
本発明のデータ処理装置は、第１の処理の待ち時間（第１の処理のレイテンシー）が一定であれば全てのシステムに適応できる。各々の種類のエレメントが予め決められた複数のサイクルを消費する複数のエレメントを有するデータ処理装置においては、第１の処理のレイテンシーが一定である第１のデータ処理システムは、それら複数のエレメントの組み合わせにより構成できる。第２および第３の処理システムも同様のエレメントにより構成することが可能である。したがって、本発明は、エレメント間の接続を変えたり、エレメント自体の処理内容を変えることにより、処理内容を再構成可能なデータ処理装置に適用できる。エレメントの処理内容を変えたときに、処理内容によってエレメントで消費されるサイクルが一義的に決まれば、本発明を提供することが可能である。
【００１４】
保持システムの一例は、第２のデータに含まれる複数の個別データをシリアルに記憶するＲＡＭである。この保持システムは構成が簡単であるが、複数の個別データを保持システムに入出力するために数サイクルをそれぞれ要する。したがって、第１の待ち時間は、ＲＡＭにデータセットを入出力する時間よりも長い必要がある。
【００１５】
保持システムは、第２のデータに含まれる複数の個別データをパラレルに記憶するＲＡＭであっても良い。第１の待ち時間が短い第１の処理を実行するデータ処理装置に対しても本発明を適用できる。保持システムが、２ポートＲＡＭ、または２バンクのＲＡＭエレメントを備えている場合は、第２のデータの入出力を最短で１サイクルで実行できる。このため、さらに待ち時間の短い第１の処理を実行するデータ処理装置に対して本発明を適用できる。
【００１６】
また、保持システムは、複数種類のエレメントの内、エレメントの間の待ち時間の調整行う遅延エレメントを利用して構成することも可能である。
【００１７】
さらに、本発明のデータ処理装置においては、第１の待ち時間だけ、第２の処理システムの処理を進めることができる。したがって、第２の待ち時間を消費する複数の処理をシーケンシャルに接続して第１の処理を構成することにより、第１の待ち時間を延長することが可能となり、データ処理装置の処理速度をさらに向上できる。
【発明の効果】
【００１８】
第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に第１のデータを出力する第１の処理システムと、第２の処理システムから出力される第２のデータと第１のデータとを含む入力データによる処理を行う第３の処理システムとを有するデータ処理装置において、第３の処理システムに対し第１のデータと同期して供給される第２のデータを記憶し、第２のデータを第１の待ち時間毎に第３の処理システムへ供給する保持システムを設ける。保持システムにより、第２の処理システムをホールドしなくても第２のデータを保持し、第１のデータと同期して第３の処理システムに供給できるので、第２の処理システムにおける処理を進行することが可能となる。したがって、第１の処理が不定回数のループ処理であっても、第１の待ち時間を要する第１の処理をデータ毎に繰り返すのではなく、パイプライン的にループ処理を進めることが可能となり、第１の処理に要するサイクル（レイテンシー）分だけ、データ処理装置の処理速度を改善できる。
【００１９】
例えば、第１の処理が２０４８サイクルかかる最下層ループであり、平均的に３周し、このループ以外の部分で１００サイクルの処理時間を要する多重ループ処理を対象に考える。４０９６組のデータセットを多重ループで処理する場合、外側のループ、すなわち第２の処理でデータをホールドし、最下層ループの結果を待っていなければならない場合は、全処理を終了するのに要する時間は以下のようになる。
４０９６×（１００＋２０４８×３） ＝ ２５５７５４２４ （サイクル）・・（１）
これに対し、本発明のデータ処理装置であれば、２０４８組のデータセットは、第１の処理である最下層ループにおいてパイプライン的にほぼ同時に処理される。本発明のデータ処理装置で、全処理を終了するのに要する時間は以下のようになる。
２×（１００＋２０４８×３＋２０４７）＝ １６５８２ （サイクル）・・（２）
なお、計算を簡単にするために２０４８組のデータセットの処理完了を待って、次の２０４８組のデータセットを投入するとした。また、処理時間の比は以下の通りである。
２５５７５４２４ ／ １６５８２ ＝ １５４２．４  ・・（３）
したがって、このケースでは、本発明により、１５００分の１に処理時間を圧縮することが可能となる。
【発明を実施するための最良の形態】
【００２０】
図１に、複数種類のエレメントが配置されたマトリクスを備えたデータ処理装置の概要を示してある。このデータ処理装置２０は、再構成可能なプロセッサ（ＲＰ、Reconfigurable Processor）であり、プログラムなどによって与えられる命令セットに基づきエラー処理を含めた汎用的な処理を行う汎用な構成の基本プロセッサ２１と、マトリクス状に配置された演算あるいは論理エレメントにより特定のデータ処理に適合したデータフローあるいは擬似データフローがバリアブルに形成されたマトリクスユニット５０と、このマトリクスユニット５０からの割り込み処理を制御する割り込み制御部２２と、マトリクスユニット５０に作動用のクロック信号を供給するクロック発生部２８と、このＲＰ２０で提供可能な演算回路のフレキシビリティーをさらに向上するためのＦＰＧＡ部２７と、外部に対するデータの入出力を制御するバス制御部２９とを備えている。基本プロセッサ２１とマトリクスユニット５０は、これらの間でデータを交換可能なデータバス２４ａと、基本プロセッサ２１からマトリクスユニット５０の構成および動作を制御するための命令バス２４ｂとにより接続されている。また、マトリクスユニット５０から割り込み制御部２２に信号線２５を介して割り込み信号が供給され、マトリクスユニット５０における処理が終了したり、処理中にエラーが発生したときはマトリクスユニット５０の状態を基本プロセッサ２１にフィードバックできるようになっている。
【００２１】
マトリクスユニット５０とＦＰＧＡ２７との間もデータバス２６により接続されており、マトリクスユニット５０からＦＰＧＡ２７にデータを供給して処理を行い、その結果をマトリクスユニット５０に返せるようになっている。さらに、マトリクスユニット５０は、ロードバス２３ａおよびストアバス２３ｂによってバス制御ユニット２９と接続されており、ＲＰ２０の外部のデータバスとの間でデータを交換できるようになっている。
【００２２】
図２にマトリクスユニット５０の概要を示してある。マトリクスユニット５０は、複数の算術および／または論理演算を行う論理要素（論理ブロックまたは論理ユニット、以降ではエレメント）がマトリクス状に配置されたマトリクス領域５１と、そのマトリクス領域５１に対してデータを供給する入力バッファ５２と、マトリクス領域５１から出力されるデータを格納する出力バッファ５３を備えている。これら入力バッファ５２および出力バッファ５３は、それぞれ４つの小容量の入力メモリにより構成されており、アクセス調停ユニット５４を介して入出力バス２３ａおよび２３ｂに接続される。
【００２３】
マトリクス領域５１が、データパスあるいはデータフローを再構成可能な並列処理システムの中心となる集積回路区画であり、複数種類の演算ユニットであるエレメント５５が縦方向に４つのラインを構成するようにアレイ状あるいはマトリクス状に配置されている。このマトリクス領域５１は、これらのエレメント５５の間に配置された、横方向に延びた行配線群５７と、縦方向に延びた列配線群５８とを備えている。列配線群５８は、列方向に並んだ演算ユニット５５の左右に分かれて配置された配線群５８ｘおよび５８ｙが１対になっている。行配線群５７および列配線群５８との交点にはスイッチングユニット５９が配置されており、行配線群５７の任意のチャンネルを、列配線群５８の任意のチャンネルに切り替えて接続できるようになっている。各々のスイッチングユニット５９は、設定を記憶するコンフィグレイションＲＡＭを備えており、プロセッサ部２１から供給されるデータによりコンフィグレイションＲＡＭの内容を書き換えることにより、行配線群５７と列配線群５８の接続を動的に任意に制御できる。このため、このマトリクス領域５１においては、複数のエレメント５５の全部あるいは一部が配線群５７および５８により接続されて形成されるデータフローの構成を任意に動的に変更することができる。
【００２４】
各エレメント５５は、１組の列配線群５８ｘおよび５８ｙのそれぞれから入力データを選択するための１組のセレクタ５４と、選択された入力データに特定の算術および／または論理演算処理を施し、出力データとして行配線群５７に出力する内部データパス部５６を備えている。そして、本例のマトリクス領域５１には、各行毎に異なる処理を行うための内部データパス部５６を備えた種類の異なるエレメント５５が並んで配置されている。これらのエレメント（ＰＥ、Processing Element）５５は、ルックアップテーブルなどにより自在に機能を設定可能なものであっても良い。本例では、算術論理演算用のエレメント、遅延用のエレメント、メモリ用のエレメント、データを入力または出力するためにアドレスを発生させるエレメント、データの入力または出力用のエレメントなど、ある程度の機能グループに分けて、それぞれの処理に適した内部構成のエレメントを配置することによりマトリクス領域５１のスペース効率を向上している。また、ある程度の機能グループに分けたエレメントを配置することにより冗長性が減少するのでＡＣ特性および処理速度も向上できるといったメリットを得ている。
【００２５】
例えば、第１行目に配列されたエレメント５５は、入力バッファ５２からのデータを受信する処理に適したデータパス部（ＬＤ）５６ｉを備えている。第２行目に配置されたエレメント５５ａは、入力バッファ５２に外部デバイスからデータを書き込むためのエレメントであり、ブロックロードするためのアドレスを発生するのに適した内部データパスを具備するデータパス部（ＢＬＡ）５６ａを備えている。マトリクス５１を構成する全てのエレメント５５は、内部データパスの構成あるいは初期値などがある程度変更できるようになっており、その設定は各々のエレメント５５のコンフィグレイションＲＡＭに基本プロセッサ２１から制御信号２４ｂにより指示される。
【００２６】
第３行目に配置されたエレメント５５ｂは、入力ＲＡＭの各々より所望のデータをマトリクス領域５１へロードする入力読み出しアドレスを発生するデータパス部（ＬＤＡ）５６ｂを備えている。第４行目および第５行目に配列されたエレメント５５ｃは、算術演算および論理演算に適したデータパス部（ＳＭＡ）５６ｃを備えている。このデータパス部５６ｃは、たとえば、シフト回路、マスク回路、論理演算ユニットＡＬＵおよびＡＬＵで処理する演算をセットするコンフィグレイションＲＡＭを備えている。したがって、プロセッサ２１が書き込んだ命令により、マトリクス領域５１へ入力されたデータを加算あるいは減算したり、比較したり、論理和あるいは論理積を取ったりすることができ、その結果がエレメント５５の出力信号として出力される。
【００２７】
その下の行に配列されたエレメント５５ｄは、データが伝送されるタイミングを遅延する処理に適したデータパス部（ＤＥＬ）５６ｄを備えている。その下の行に配列されたエレメント５５ｅは、データの一時的な記憶領域となるＲＡＭを含むデータパス部（ＲＡＭ）５６ｅを備えている。さらに異なるエレメント５５ｆとしては、マトリクス領域５１の外部に用意されたＦＰＧＡ２７とのインターフェイス用のデータパス部５６ｆを備えたエレメントも用意されており、データをいったんＦＰＧＡ２７に供給して処理した後、再びマトリクス領域５１に戻して処理を継続することができる。
【００２８】
これらの再構成可能な集積回路区画５１のさらに下方には、ストア用のアドレスを発生するのに適したデータパス部５６ｇおよび５６ｈをそれぞれ備えたエレメント５５ｇおよび５５ｈが配置されている。これらは、出力バッファ５３を介して外部デバイスにデータを出力するための制御を行う。そして、最下段には、ストア用にデータを出力するのに適したデータパス部（ＳＴ）５６ｓを備えたエレメント５５が配列されている。したがって、マトリクス領域５１を用いて、エレメント５５の接続を動的に変更することにより、様々なデータフローライクな処理経路あるいは処理システムをフレキシブルに構成でき、様々な処理を行うことができる。
【００２９】
図３は、算術演算および論理演算に適したエレメント５５ｃの概略構成を示してある。なお、入力を選択するセレクタ５４は省略している。内部データパス部５６ｃは、シフト回路ＳＨＩＦＴ、マスク回路ＭＡＳＫ、論理演算ユニットＡＬＵを備えている。また、ＲＩＳＣ２１からコンフィグレイション情報を受け取る設定部６０を備えており、シフト回路ＳＨＩＦＴ、マスク回路ＭＡＳＫ、論理演算ユニットＡＬＵの設定を変更することができる。したがって、バス５８から入力された入力データｄｉｘおよびｄｉｙを加算あるいは減算したり、比較したり、論理和あるいは論理積を演算することができ、その結果が出力信号ｄｏとして配線（バス）５７に出力することができる。
【００３０】
さらに、内部データパス部５６ｃには、入力データをラッチする入力側のフリップフロップ４８および出力データをラッチする出力側のフリップフロップ４９が設けられており、入力データが加工されて出力される待ち時間（レイテンシー）はクロック単位で制御されている。したがって、各種類のエレメント５５は、クロック発生部２８から供給されるクロック信号に同期して稼動し、エレメントの種類により、または、エレメントで実行する処理が決まった段階で入力データを処理して出力するために消費されるサイクル数が明確になり、設計者は遅延情報として予め知ることができる。ＲＰ２０において並列に動作する要素のエレメント５５のレイテンシーが明確に決まるので、エレメント５５を用いた並列処理の設計が容易である。また、エレメント５５の入出力のタイミングが決まるので、プログラム上は時間的な流れで記述されているアルゴリズムを、エレメント５５を用いて空間方向に展開することも容易となる。このため、従来、汎用のＣＰＵを繰り返し稼動することにより実行していたアルゴリズムをサイクル同期のパイプラインとしても動作するデータフロー（擬似データフロー）として実現し、実行することが可能となり、実行速度を向上することができる。
【００３１】
図４は、データが伝送されるタイミングを遅延する処理に適したエレメント５５ｄの概略構成を示してある。このデータパス部（ＤＥＬ）５６ｄは、複数のセレクタとフリップフロップの組み合わせで構成された遅延回路４７と、入力側のフリップフロップ４８と、出力側のフリップフロップ４９と、回路を選択するセレクタ４２とを備えている。遅延回路４７は、制御部６０にＲＩＳＣ２１から設定されたコンフィグレイション情報により制御され、本例では０〜５クロックの遅延をセットできる。したがって、入力毎に１〜７クロックの遅延を制御できる。さらに、コンフィグレイション情報により、２つの入力系統（Ｘ系統およびＹ系統）を直列に接続することが可能であり、２倍の遅延時間を制御できる。また、これらのデータと共にキャリー信号用の行配線群および列配線群で導かれるキャリー信号ｃｉｘおよびｃｉｙも同様のデータパスにより遅延して出力される。
【００３２】
遅延用のデータパス部を備えた演算ユニットであるエレメント５５ｄを用意することにより、各種のデータパス部における信号の遅延を任意に調整できる。したがって、算術演算や論理演算用のエレメントやその他のエレメントを組み合わせてデータフローを形成したときの遅延時間の差を調整するために、各エレメントに遅延調整用のフリップフロップおよびセレクタを設ける必要がない。このため、各々のエレメントの構成が簡易になり、エレメントの汎用性を向上できる共に、エレメントが占有する面積を最小限に留めることができる。また、上述したように、各エレメントはレイテンシーがクロック単位で制御されているので、レイテンシーの差は、遅延用のエレメント５５ｄの機能により埋めることは容易であり、エレメントを組み合わせて行う演算のパイプラインのタイミングを保障できる。
【００３３】
この遅延用のエレメント５５ｄは、縦配線群５８で供給されるデータを横配線群５７に移行する機能も果たし、遅延用のエレメントであるからといって遅延だけに利用されることはなく、演算用のデータフローを設計する上での利用方法はフレキシブルである。
【００３４】
図５に、ＳＲＡＭ６５を備えたエレメント５５ｅの概略構成を示してある。入力データｄｉｘをアドレス、入力データｄｉｙをデータとして使用することができ、データとアドレスが同時に与えられた場合は書き込み、アドレスのみが与えられた場合は読み出しを行うことができる。ＳＲＡＭ６５として複数のバンク形式のＲＡＭや２ポートＲＡＭを搭載することも可能であり、制御部６０にＲＩＳＣ２１によりセットされるコンフィグレイション情報により制御することができる。このエレメント５５ｅは、エレメントにより構成されたデータフロー中を流れるデータを一時的に記憶するために用いることができる。ＳＲＡＭ６５が８ビットであっても、４つのエレメント５５ｅを行方向に並べて配置することにより、８ビットの４つのＲＡＭとしても、１６ビットの２つのＲＡＭとしても、さらに、３２ビットの１つのＲＡＭとしても利用できる。
【００３５】
さらに、ＳＲＡＭ６５をルックアップテーブル用に利用することも可能である。したがって、このエレメント５５ｅは、バイトあるいはワード単位の入力データに対して任意の関数による出力データを得るためのルックアップテーブルとして使用できる。コサイン変換処理やＣＲＣ計算をマトリクス領域５１で実現する場合に有用である。
【００３６】
図６に、割り算を行う演算プログラムの一部を示してある。このプログラム７０は、変数ｒａｒｅｒｕ、ｋｏｈｏ、ｄｉｖｉｓｏｒ、ｗａｒｕおよびＱを入力として、変数ＱおよびＲを出力するプログラムである。そして、プログラム７０は、最下層のループプロセスであるブロックＡと、その上の階層のループプロセスであるブロックＢとを備えており、２重ループを構成し、ブロックＡでは、変数ｗａｒｕおよびｋｏｈｏが不定回数だけ更新を受け、それをブロックＢで使用し、変数Ｑおよびｒａｒｅｒｕを変化させている。このため、変数ｒａｒｅｒｕ、ｋｏｈｏ、ｄｉｖｉｓｏｒ、ｗａｒｕおよびＱという入力データセットが複数ある場合には、変数Ｑおよびｒａｒｅｒｕを保持しておく必要があるため、ブロックＡではパイプライン処理はできず、データセットを１つずつ処理していかなくてはならない。
【００３７】
図７に、図６に示したプログラム７０のアルゴリズムを実行する処理システム（データパス、擬似データフロー、以降ではデータフローと呼ぶ）７５を、本例のデータ処理装置２０のマトリクス部５０の７つのＳＭＡエレメント５５ｃ（ＳＭＡ１からＳＭＡ７）とＲＡＭエレメント５５ｅにより構成（マッピング）した例を示してある。プログラム７０のアルゴリズムをマトリクス部５０に実際にマッピングする際は、複数の変数を１つのＳＭＡ５５ｃで処理したり、独立した処理を実行する複数のＳＭＡ５５ｃを並列に接続したりすることは可能である。しかしながら、簡単のために、ここではＳＭＡ５５ｃをシリアルに接続してデータフローを構成した例を示してある。
【００３８】
データフロー７５は、第１の処理システムに相当するブロックＡの処理を行うデータフロー７６と、その前処理を行い、第２の処理システムに相当するデータフロー７８と、後処理を行い、第３の処理システムに相当するデータフロー７９と、データフロー７６と並列に構成され、保持システムに相当するＲＡＭ５５ｅによるデータフロー７７とを備えている。データフロー７５では、データフロー７６において、不定回数ループが周回している間、後処理のデータフロー７９において使用するために保持しなければいけないデータを前処理のデータフロー７８を構成するエレメントではなく、ＲＡＭ５５ｅに置き、後処理のデータフロー７９において必要なときにロードすることで、不定回数ループを含む多重ループのパイプライン処理を可能にしている。
【００３９】
図８は、保持システムとして動作するデータフロー７６を１つのＲＡＭエレメント５５ｅにより構成した例を示してある。この場合、前処理のデータフロー７８から出力されたデータの内、保持したい２つの変数ＱおよびｒａｒｅｒｕがＳＲＡＭ６５にシーケンシャルに保持される。そして、ループ処理を行うデータフロー７６から更新された変数ｗａｒｕおよびｋｏｈｏが出力されるタイミング、すなわち、データフロー７６を一回だけ通過する待ち時間後にＲＡＭエレメント５５ｅから後処理のデータフロー７９に供給される。図７に示したケースでは、変数ｗａｒｕおよびｋｏｈｏがデータフロー７６を通過する待ち時間は、データフロー７６を構成する各々のエレメントＳＭＡ３〜ＳＭＡ５のレイテンシーの和であり、各々のエレメントＳＭＡ３〜ＳＡＭ５のレイテンシーは予め明確になっている。したがって、ＲＡＭエレメント５５ｅでは、制御部６０にコンフィグレイション情報をセットし、ＲＡＭ６５に記憶したデータを適当なレイテンシーの後に出力するようにアドレスを管理するアドレス発生機構６１として動作させることができる。
【００４０】
前処理のデータフロー７８から出力され、ループ処理のデータフロー７６では更新されず、後処理のデータフロー７９で利用されるデータがある場合、データフロー７６の処理が不定回数ループであると、何回目のループでデータフロー７６から更新されたデータ（第１のデータあるいはデータセット）が出力されるかは不明である。したがって、ループから更新されたデータが出力されたときに後処理のデータフロー７９で処理が進行するようにするには後処理のデータフロー７９の入力、すなわち、エレメントＳＭＡ６の入力にループ処理では更新されないが、後処理では使用されるデータ（更新が不要なデータ、第２のデータあるいはデータセット）を用意しておかなければならない。したがって、データフロー７７が設けられてないデータフローでは、前処理のデータフロー７８を止めて、後処理のデータフロー７９の入力に更新が不要なデータをセットしておく必要がある。したがって、ループのデータフロー７６にも更新の対象となるデータが入力されることはなく、ループのデータフロー７６ではパイプライン的な処理は行われない。
【００４１】
これに対し、本例のデータフロー７５では、保持システムとして動作するデータフロー７７をループ処理のデータフロー７６と並列に用意し、保持システムでループ処理では更新の不要なデータを保持し、データフロー７６のレイテンシー分だけ遅延させて、後処理のデータフロー７９の入力に供給している。このため、前処理のデータフロー７８を止めて更新の不要なデータを保持する必要はなくなり、前処理のデータフロー７８を進めることが可能となる。したがって、ループのデータフロー７６に更新の対象となるデータを入力できるので、ループのデータフロー７６ではパイプライン的に処理を進めることが可能となり、データフロー７５の処理時間を短縮することができる。
【００４２】
ループのデータフロー７６と並列に用意される保持システムが単純なＦＩＦＯとして機能するものであっても、ＦＩＦＯのレイテンシーがデータフロー７６のレイテンシーに一致するまでＦＩＦＯに更新の不要なデータを保持できる。このため、データフロー７６が固定回数ループの処理を行う場合は、ループのデータフロー７６をパイプライン的に使用できる。しかしながら、不定回数ループにおいては、データが更新されるまでの周回数は不定なので、複数のデータあるいはデータセットがデータフロー７６に順番に入力された場合、ループから更新されたデータが出力される順番が同じになることは保証されない。したがって、保持システムがＦＩＦＯの場合は、ループから出力される順番が保証されるようなキャッシュを設けたり、先行するデータが出力されるまで後続のデータは更新の必要の有無に関わらずループ処理を継続するようなパスにする必要があり、余分なハードウェアリソースを消費したり、余分な設計時間を消費し、アルゴリズムをデータフローとしてデータ処理装置に実装することが難しくなる。
【００４３】
これに対し、本例の保持システム７７では、前処理のデータフロー７８から出力された更新不要なデータをＳＲＡＭ６５で保持し、ループ処理のデータフロー７６のレイテンシー分だけ遅延して出力する処理を繰り返す。すなわち、上位のループ処理を行うデータフロー７５では、ループのデータフロー７６において、第１の待ち時間を要する第１の処理を少なくとも一回は繰り返した後に更新されたデータを出力する第１の工程を行い、保持システムのデータフロー７７においては、後処理のデータフロー７９に対し、更新されたデータと同期して供給される更新不要なデータを保持し、更新不要なデータをデータフロー７６のレイテンシー毎に後処理のデータフロー７９の入力に供給する第２の工程を行うように制御される。その結果、ループ処理のデータフロー７６から更新されたデータが出力されたタイミングで、その更新されたデータと共に後処理のデータフロー７９で利用される更新不要なデータは常に用意されることになり、ループ処理のデータフロー７６に入力された順番に、更新されたデータが出力されなくても後処理のデータフロー７９では処理が進行する。したがって、ループ処理のデータフロー７６のパイプラインに空きが発生すれば、その空きに前処理のデータフロー７８からデータを入力することが可能となり、データの入出力に要するサイクルを除けば、ループ処理のデータフロー７６をほぼ完全にパイプライン化して処理を実行することができ、処理速度を向上できる。
【００４４】
ループのデータフロー７６にデータが入力された順番と、更新されたデータが出力される順番とが保証されなくても、更新されたデータに対応して後処理のデータフロー７９で使用される更新不要なデータが保持システム７７から与えられることは保証されるので、後続のデータフロー７９の処理では、ループに入力された順番にデータが出力されないことは基本的にはディメリットにならない。簡単な例では、平均値などの統計的な計算ではデータの順番は基本的に問題にされない。また、パケットのルーティングのような処理においても、パケットが到来する順番がパケットの伝送経路によりパケットが出力された順番とは限らないので、データフロー７５で順番が入れ替わることは問題にならない。
【００４５】
データを伸長したり、圧縮したりする処理では、ビットの順番が問題になる処理があり、そのような処理を実行する場合は、入出力の順番が保証されることが望ましい。その場合は、ＲＡＭエレメント５５ｅのＲＡＭ６５に、更新不要なデータと共に、そのデータがＲＡＭ６５に入力された順番Ｓを記憶し、後処理のデータフロー７９に対し、その順番を識別する情報Ｓを更新不要なデータＱおよびｒａｒｅｒｕと共に供給することにより、後続の適当なタイミングの処理でデータの順番を整えたり、順番Ｓにより処理を制御することができる。
【００４６】
保持システム７７でホールドする１セットのデータ数をＬとし、Ｎセットの更新不要なデータを保持する場合を考える。ＲＡＭエレメント５５ｅでは、ＲＡＭ６５に対するデータの読み書きにそれぞれ１サイクルを要するとする。ＲＡＭエレメント５５ｅでは、前処理のデータフロー７８から出力された更新不要なＬ個のデータを記憶し、ループのデータフロー７６から更新されたデータが出力されるタイミングでＬ個のデータが後処理のデータフロー７９の先頭のエレメントＳＭＡ６の入力に一斉に配置されている必要がある。したがって、ＲＡＭエレメント５５ｅにおけるデータの入出力に１セット当たり２Ｌのサイクルを消費するので、ループのデータフロー７６は２Ｌサイクル毎のパイプラインとして制御することができる。このため、ループのデータフロー７６にパイプラインとして流せるデータセットの数Ｎ（整数）は、以下のようになる。
Ｎ≦（最下層ループ７６のレイテンシー）／２Ｌ・・・（４）
【００４７】
図９は、保持システム７７を複数のＲＡＭエレメント５５ｅにより構成した例を示してある。ＲＡＭエレメント５５ｅの数を保持システム７７で保持する１セットのデータ数Ｌにすることにより、複数の要ホールドデータをパラレルに入出力することができ、データの入出力に消費されるサイクル数を減らすことができる。このため、ループのデータフロー７６にパイプラインとして流せるデータセットの数Ｎ（整数）は、以下のようになる。
Ｎ＝（最下層ループ７６のレイテンシー）／２・・・（５）
【００４８】
１つのＲＡＭ６５に複数の要ホールドデータを格納すると、シーケンシャルにしかデータが読めないために、後処理のデータフロー７９の入力にデータを同期して供給しようとすると、ループのデータフロー７６をパイプラインとして制御するときに、少なくともデータ数Ｌに相当するインターバルを挟まなければいけない。これに対し、図９に示すように、保持システム７７でデータの種類毎にＲＡＭ６５を用意することにより、２サイクル毎のパイプラインとして、ループのデータフロー７６にデータを流すことが可能となる。
【００４９】
図１０は、保持システム７７を１つのデータ当たり２バンクのＲＡＭ６５ａおよび６５ｂを備えた複数のＲＡＭエレメント５５ｅにより構成した例を示してある。１データ当たり２バンクのＲＡＭ６５ａおよび６５ｂを割り当て、切換スイッチ６６で制御することにより、データの入力と出力を独立して実行できる。このため、入出力に消費されるサイクルは１サイクルに短縮され、１サイクル毎に、ループのデータフロー７６にパイプラインとしてデータを流せる。したがって、データフロー７６に流せるデータセットの数Ｎ（整数）は、以下のようになる。
Ｎ＝（最下層ループ７６のレイテンシー）・・・（６）
【００５０】
２バンクシステムの代わりに、デュアルポートのＲＡＭを備えたＲＡＭエレメントであっても、ループ処理のデータフロー７６のレイテンシーの数だけパイプラインにデータを流すことができる。また、複数のＲＡＭエレメント５５ｅを組み合わせることにより、実質的に２バンクのＲＡＭとして機能させる構成を採用することも可能である。
【００５１】
上述した保持システム７７は、ＲＡＭ上にホールドすべき更新不要なデータを置き、読み出しアドレスを最下層ループ７６と同じ周期で繰り返し発生させることで、後処理のデータフロー７９の入力データセットに必要なホールドデータを、ループ出力である更新されたデータと同期して供給するようにしている。更新不要なデータを所定のレイテンシーだけ遅らせて出力するという機能は、図４に示した遅延用のエレメント５５ｄが備えている機能である。したがって、遅延用のエレメント５５ｄの遅延量をループ処理のデータフロー７６のレイテンシーと一致するようにコンフィグレイション情報を与えることにより、遅延用のエレメント５５ｄを用いても保持システム７７を構成することが可能である。すなわち、上述したＲＡＭエレメント５５ｅの各記憶要素が遅延のための各フリップフロップに置き換わったと考えることができる。
【００５２】
ＲＡＭエレメント５５ｅを用いた保持システムと、遅延エレメント５５ｄを用いた保持システムには一長一短がある。上記の効果の欄で説明したように、ループ処理のレイテンシーが大きい方が処理速度の向上に大きく寄与するが、その場合、遅延用のエレメント５５ｄを使用しようとすると、遅延用のエレメント５５ｄの汎用性が少なくなる。たとえば、ループ処理のレイテンシーが４０９６サイクルあり、１つの遅延用のエレメントに４０９６個のフリップフロップを格納し、４０９６サイクルの遅延を設定できるようにすることは可能であるが、そのような遅延用のエレメントは他の目的で使用するにはフリップフロップの資源に無駄が多い。遅延用のエレメント５５ｄを複数連結して遅延量を確保することも可能であるが、そのために自由に使える配線リソースを使用してしまうことは、再構成可能なマトリクス部５０のフレキシビリティーを損ねることになる。
【００５３】
一方、マトリクス部５０に用意されたＲＡＭエレメント５５ｅの個数に対して、保持システム７７としてホールドするデータの数が多く、ループのデータフロー７６のレイテンシーが小さく、パイプライン処理をするために保持するデータセットの数Ｎを大きくしなくてもよい場合は、汎用性のある遅延量の遅延用のエレメント５５ｄにより保持システム７７を構成できる。したがって、保持システムとしてホールドすべきデータの数、マトリクス部５５に保持システム７７を構成するために利用できるリソースの量、ループ処理のレイテンシーなどの条件により、ＲＡＭエレメント５５ｅを用いたり、遅延用のエレメント５５ｄを用いたり、さらには、それらを適宜組み合わせて保持システム７７を構成することが望ましい。
【００５４】
このように、本発明によれば、最下層ループが不定回数ループであっても、それをパイプライン処理することにより、処理時間を短縮できる。すなわち、パイプライン処理による処理時間の短縮は、最下層ループのレイテンシー（サイクル数）に依存している。このため、最下層ループのレイテンシーがあまりにも少ないと、パイプラインによる恩恵をあまり受けることができない。最下層ループのレイテンシーが少ないということは、ループで処理する時間が少なく、全体の処理が早く終わり、全体の処理が終わってから次々データを投入していければそれほど時間的なロスは生じないとも考えられる。しかしながら、最下層ループでの周回数が最初から平均的に１０回以上とか１００回以上とか予想がつく場合は、新しいデータセットの投入を延々と待ち続けなければいけないにも関わらず、パイプライン処理が少ししか行なえないという事態が発生する。
【００５５】
図１１に示したプログラム７１は、図６に示したプログラム７０と同じ処理を行うものであるが、プログラム７０では最下層ループを構成していたブロックＡの処理を３つシーケンシャルに接続して最下層ループのブロックＣを構成している。平均的なループ回数が判明している場合は、ループの複数回を１回のループ周回で行うようにすることにより、無駄な処理を挟まずに、最下層ループのレイテンシーを増やすことが可能となる。プログラム７０の最下層ループを構成するブロックＡの処理のレイテンシーが６サイクルだったとすれば、プログラム７１の最下層ループを構成するブロックＣのレイテンシーは１８サイクルになる。したがって、パイプラインで処理することができるデータセットの数Ｎを３倍に増やすことができ、前処理のデータフローが停止する時間を短縮することにより処理時間を短縮することができる。
【００５６】
プログラム７１をマトリクス部５０にマッピングするにあたっては注意が必要である。ブロックＣでは、ブロックＡの処理を繰り返すためにループから途中で抜ける処理を用意してあり、ブロックＣを実現するループのデータフロー７６の途中から外に流れるデータは直に後処理のデータフロー７９に供給することはできない。保持システム７７から供給される更新不要なデータとの同期を取るために、遅延用のエレメント５５ｄを挟んで一定周期で後処理のデータフロー７９に供給する必要がある。
【００５７】
なお、上記では、エレメントがマトリクス状に配置された再構成可能な領域を備えたデータ処理装置に基づいて本発明を説明しているが、本発明はループ処理を行う処理システムのレイテンシーが明確で、フィックスされていれば再構成可能なデータ処理装置以外であっても適用することが可能である。また、本発明の対象となるデータ処理装置は、ＬＳＩあるいはＡＳＩＣといった電子を情報伝達媒体とする半導体集積回路装置に限らず、光を情報伝達媒体とする光あるいは光・電子回路にも適用できる。さらに、再構成可能な構成は上記に限定されることはなく、再構成されたデータフローにおけるデータ処理が同期的に行われるデータ処理装置であれば、本発明を適用することが可能である。
【図面の簡単な説明】
【００５８】
【図１】再構成可能なマトリクス部を備えたデータ処理装置の概要を示す図である。
【図２】複数のエレメントが２次元に配置されたマトリクス部の概要を示す図である。
【図３】演算用のエレメントの構成例を示す図である。
【図４】遅延用のエレメントの構成例を示す図である。
【図５】ＲＡＭエレメントの構成例を示す図である。
【図６】本発明を説明するためのプログラムの一例である。
【図７】図６に示すプログラムのアルゴリズムをマトリクス部にマッピングした一例を示す図である。
【図８】１つのＲＡＭに複数のデータをシーケンシャルに記憶する保持システムを示す図である。
【図９】１つのＲＡＭに１種類のデータを記憶する保持システムを示す図である。
【図１０】２バンクのＲＡＭを用いた保持システムを示す図である。
【図１１】最下層のループのレイテンシーを伸張したプログラムを示す図である。
【図１２】ループ処理をパイプライン的に制御する例を示す図であり、図１２（ａ）はループ処理にデータを入れる様子を示し、図１２（ｂ）はループ処理を行う様子を示し、図１２（ｃ）はループ処理からデータを出力する様子を示している。
【図１３】不定回数ループをパイプライン的に制御する例を示す図である。
【図１４】不定回数ループが最下層ループであるときに、パイプライン的に制御できないことを示す図である。
【符号の説明】
【００５９】
２０    データ処理装置
５０    マトリクスユニット，５１  マトリクス領域
５５    エレメント
７６    ループ処理を行うデータフロー（第１の処理システム）
７７    データを保持するデータフロー（保持システム）
７８    前処理を行うデータフロー（第２の処理システム）
７９    後処理を行うデータフロー（第３の処理システム）
【図１】
2005267382.tif 000003
【図２】
2005267382.tif 000004
【図３】
2005267382.tif 000005
【図４】
2005267382.tif 000006
【図５】
2005267382.tif 000007
【図６】
2005267382.tif 000008
【図７】
2005267382.tif 000009
【図８】
2005267382.tif 000010
【図９】
2005267382.tif 000011
【図１０】
2005267382.tif 000012
【図１１】
2005267382.tif 000013
【図１２】
2005267382.tif 000014
【図１３】
2005267382.tif 000015
【図１４】
2005267382.tif 000016