(57)【要約】  再構成区画を有するデバイス（１）は、複数のセグメントに区分けして配置された複数のＰＥ（１７）と、各ＰＥ（１７）にコマンドを伝達するためのコマンド伝達システム（５０）を有する。コマンド伝達システム（５０）は、各セグメントに設けられた伝達用のコマンドレジスタ（５３）と、各セグメント内の複数のＰＥ（１７）と伝達用のコマンドレジスタ（５３）とを１クロックの遅延で接続するための第１レベルのコマンド伝達マトリクス（５１）と、複数のセグメントの伝達用のコマンドレジスタ（５３）とコマンドを出力するコマンド出力ユニット（５９）とを接続する第２レベルのコマンド伝達マトリクス（５２）とを含む。
2009096482.tif 000002
【特許請求の範囲】
【請求項１】
複数のセグメントに区分けして配置された複数の処理エレメントと、それら複数の処理エレメントを接続するためのルーティングマトリクスとを含み、前記複数の処理エレメントの少なくとも一部および前記ルーティングマトリクスの少なくとも一部によりデータフローが再構成される再構成区画を有するデバイスであって、
前記ルーティングマトリクスは、各セグメントに含まれる複数の処理エレメントを第１の遅延の範囲内で接続するための第１レベルのルーティングマトリクスと、
異なるセグメントに含まれる複数の処理エレメントを、前記第１の遅延とは異なる遅延で接続するための第２レベルのルーティングマトリクスとを含み、
当該デバイスは、さらに、前記再構成区画に含まれる複数の処理エレメントのそれぞれに、コマンドを伝達するためのコマンド伝達システムを有し、
前記コマンド伝達システムは、前記各セグメントに設けられた伝達用のコマンドレジスタと、
前記各セグメント内の複数の処理エレメントと前記伝達用のコマンドレジスタとを前記第１の遅延の範囲内で接続するための第１レベルのコマンド伝達マトリクスと、
前記複数のセグメントの前記伝達用のコマンドレジスタと前記コマンドを出力するコマンド出力ユニットとを、前記第１の遅延とは異なる遅延で接続するための第２レベルのコマンド伝達マトリクスとを含む、デバイス。
【請求項２】
請求項１において、前記複数の処理エレメントの少なくとも一部の処理エレメントは、コマンド生成ユニットを含み、
当該デバイスは、さらに、前記コマンド生成ユニットにより発生されたコマンドを前記コマンド出力ユニットに収集するためのコマンド収集システムを含む、デバイス。
【請求項３】
請求項２において、前記コマンド収集システムは、前記各セグメントに設けられた収集用のコマンドレジスタと、
前記各セグメント内の前記少なくとも一部の処理エレメントと前記収集用のコマンドレジスタとを前記第１の遅延の範囲内で接続するための第１レベルのコマンド収集マトリクスと、
前記複数のセグメントの前記収集用のコマンドレジスタと前記コマンド出力ユニットとを、前記第１の遅延とは異なる遅延で接続するための第２レベルのコマンド収集マトリクスとを含む、デバイス。
【請求項４】
請求項３において、前記少なくとも一部の処理エレメントは、前記再構成区画に構成されたデータフローにより処理された出力を一時的に格納する格納ユニットを含む出力インタフェースエレメントを含む、デバイス。
【請求項５】
請求項４において、前記コマンド伝達システムにより伝達されるコマンドは、各処理エレメントのクロックを停止するためのストップコマンドを含む、デバイス。
【請求項６】
請求項５において、前記少なくとも一部の処理エレメントは、前記再構成区画に構成されたデータフローに入力されるデータを一時的に格納する格納ユニットを含む入力インタフェースエレメントを含む、デバイス。
【請求項７】
請求項６において、前記入力インタフェースエレメントに含まれる前記コマンド生成ユニットは、前記格納ユニットに残存するデータ量が、前記コマンド収集システムおよび前記コマンド伝達システムによりコマンドを伝達するために消費されるサイクルの間に前記データフローにより消費されるデータ量と同じになったときに、前記ストップコマンドを出力する機能を含む、デバイス。
【請求項８】
請求項６において、前記入力インタフェースエレメントに含まれる前記コマンド生成ユニットは、前記格納ユニットに最終のデータがあるときは、前記ストップコマンドを出力しない機能を含む、デバイス。
【請求項９】
請求項６において、前記少なくとも一部の処理エレメントは、前記データフローにより処理されている途上のデータを一時的に格納する格納ユニットを含むデータ格納型エレメントを含み、
前記データ格納型エレメントに含まれる前記コマンド生成ユニットは、それぞれの前記格納ユニットに残存するデータ量が、前記コマンド収集システムおよび前記コマンド伝達システムによりコマンドを伝達するために消費されるサイクルの間に前記データフローにより消費されるデータ量と同じになったときに、前記ストップコマンドを出力する機能を含む、デバイス。
【請求項１０】
請求項９において、前記データ格納型エレメントに含まれる前記コマンド生成ユニットは、前記格納ユニットに最終のデータがあるときは、前記ストップコマンドを出力しない機能を含む、デバイス。
【請求項１１】
請求項１において、前記複数の処理エレメントは、機能を変更することにより前記データフローを再構成する処理エレメントを含む、デバイス。
【請求項１２】
請求項１において、前記ルーティングマトリクスは、少なくとも一部の接続を変更することにより前記データフローを再構成するルーティングマトリクスを含む、デバイス。
【請求項１３】
請求項１において、前記再構成区画には複数のデータフローを構成可能であり、前記再構成区画に含まれる前記複数の処理エレメントは、それぞれの処理エレメントが属するデータフローを識別する識別情報を含む制御ユニットを含み、
前記コマンド伝達システムにより伝達されるコマンドは、前記識別情報を含む、デバイス。
【請求項１４】
請求項１３において、前記コマンド生成ユニットを含む処理エレメントの上流のデータフローを識別する識別情報と、下流のデータフローを識別する識別情報とは異なる、デバイス。
【請求項１５】
請求項１において、さらに、前記第２レベルのコマンド伝達マトリクスを介して伝達されるコマンドを生成し、前記再構成区画に構成されたデータフローを制御するためのプロセッサを有する、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路を再構成可能なデバイスに関するものである。
【背景技術】
【０００２】
国際公開ＷＯ２００３／０２３６０２号には、複数の処理ユニットを有するデータ処理システムであって、第１、第２および第３のデータ転送手段を有するデータ処理システムを提供することが記載されている。第１のデータ転送手段は、複数の処理ユニットをネットワーク状に接続して第１のデータの受け渡しを行い、複数の処理ユニットのうち、２以上の処理ユニットを接続することにより、再構成可能な少なくとも１つのデータフローを構成する。第２のデータ転送手段は、複数の処理ユニットに対し設定データをロードする制御情報などを第２のデータとして並列に供給する。第３のデータ転送手段は、複数の処理ユニットの各々に対して設定データを供給する。この設定データは、第１のデータ転送手段を介して接続される他の処理ユニットを直接または間接的に変更し、および／または、当該処理ユニットの処理内容を変更することにより、異なる機能のデータフローを設定するデータである。【０００３】
この文献には、制御情報にデータフローを識別する情報を付加してブロードキャストし、複数の処理ユニット（エレメント）により構成されるデータフローを制御することが記載されている。データフローを再構成するために利用可能な処理ユニットの数が数百あるいはそれ以上になると、データフローを一時停止させるための制御情報などを各処理ユニットに伝達するタイミングを一致させないと、データフローにより処理されているデータあるいは処理状態を破棄せずに一時停止させることが難しい。
【発明の開示】
【０００４】
本発明の一態様は、複数の処理エレメントと、それら複数の処理エレメントを接続するためのルーティングマトリクスとを含み、複数の処理エレメントの少なくとも一部およびルーティングマトリクスの少なくとも一部によりデータフローが再構成される再構成区画を有するデバイスである。データフローを再構成する典型的な手段は、複数の処理エレメントのそれぞれの処理エレメントの機能を変更すること、および／または、ルーティングマトリクスの少なくとも一部の接続を変更することである。
【０００５】
このデバイスの複数の処理エレメントは複数のセグメントに区分けして配置されている。さらに、ルーティングマトリクスは、各セグメントに含まれる複数の処理エレメントを第１の遅延の範囲内で接続するための第１レベルのルーティングマトリクスと、異なるセグメントに含まれる複数の処理エレメントを、第１の遅延とは異なる遅延で接続するための第２レベルのルーティングマトリクスとを含む。このデバイスは、さらに、再構成区画に含まれる複数の処理エレメントのそれぞれにコマンドを伝達するためのコマンド伝達システムを有する。
【０００６】
このコマンド伝達システムは、各セグメントに設けられた伝達用のコマンドレジスタ（レジスタユニット）を有し、さらに、各セグメント内の複数の処理エレメントと伝達用のコマンドレジスタとを第１の遅延の範囲内で接続するための第１レベルのコマンド伝達マトリクスと、複数のセグメントの伝達用のコマンドレジスタとコマンドを出力するコマンド出力ユニットとを第１の遅延とは異なる遅延で接続するための第２レベルのコマンド伝達マトリクスとを含む。コマンドレジスタは、典型的にはマルチビットのフリップフロップまたはラッチユニットを含み、コマンドをクロックサイクル単位で入力および出力し、コマンドをクロックサイクルに同期して転送するために使用できる。
【０００７】
このデバイスでは、複数の処理エレメントが、第１レベルのルーティングマトリクスにより第１の遅延（第１の遅延時間、第１のサイクルまたは第１のレイテンシ）の範囲内、たとえば、複数の処理エレメントが動作する最少の時間間隔の１クロックサイクルで接続できる複数のセグメントに区分けして配置される。したがって、伝達用のコマンドレジスタと、第１レベルのコマンド伝達マトリクスとをセグメント毎に設けることにより、セグメント内のすべての処理エレメントに対して、伝達用のコマンドレジスタからコマンドを第１の遅延の範囲内、たとえば、１クロックサイクルで伝達できる。このため、第２レベルのコマンド伝達マトリクスにより、複数のセグメントのコマンドレジスタに対し所定の遅延（遅延時間、レイテンシ）の範囲内、たとえば１クロックサイクルでコマンド出力ユニットからコマンドを伝達すれば、コマンド出力ユニットから出力されたコマンドにより、再構成区画に含まれる全ての処理エレメントを同期して（同じタイミングで）制御できる。
【０００８】
このコマンド伝達システムでは、コマンド出力ユニットから各処理エレメントに対して所定の（固定された）遅延を経た後にコマンドが伝達される。したがって、コマンドの伝達には、少なくとも複数クロックサイクルを消費するが、コマンドの伝達に要するクロックサイクル（レイテンシ）は一義的に規定できる。このため、各セグメント内の処理エレメントだけではなく、再構成区画に含まれる全ての処理エレメントに対して同期してコマンドを伝達できる。したがって、所定のレイテンシを考慮してコマンドを出力することにより、多数の処理エレメントによりデータフローが構成される場合であっても、データフローを構成する多数の処理エレメントを同期して一時的に停止したり、再稼働させたりすることが可能となる。
【０００９】
コマンドは、データフローを制御するデバイス内あるいはデバイス外のプロセッサから供給されても良い。即応性の要求されるコマンドは、複数の処理エレメントの少なくとも一部より生成および出力されても良い。それらの少なくとも一部の処理エレメントは、コマンド生成ユニットを含むことが望ましい。コマンドを生成および出力する処理エレメントの典型的なものは、再構成区画に構成されたデータフローにより処理された出力を一時的に格納する格納ユニットを含む出力インタフェースエレメントである。出力インタフェースエレメントは、格納ユニット（バッファ）にてデータ入出力の速度差を吸収できない場合は、このコマンド伝達システムを介してストップコマンドを出力して、再構成区画に再構成されたデータフローを一時的に停止することができる。すなわち、コマンド伝達システムにより伝達されるコマンドの典型的なものは、各処理エレメントのクロックを停止するためのストップコマンドである。
【００１０】
デバイスは、さらに、コマンド生成ユニットにより発生されたコマンドをコマンド出力ユニットに収集するためのコマンド収集システムを含む。コマンド収集システムは、各セグメントに設けられた収集用のコマンドレジスタを含み、さらに、各セグメント内の少なくとも一部の処理エレメントと収集用のコマンドレジスタとを第１の遅延の範囲内で接続するための第１レベルのコマンド収集マトリクスを含む。コマンド収集システムは、さらに、複数のセグメントの収集用のコマンドレジスタとコマンド出力ユニットとを第１の遅延とは異なる遅延で接続するための第２レベルのコマンド収集マトリクスを含む。
【００１１】
収集用のコマンドレジスタと、第１レベルのコマンド収集マトリクスとをセグメント毎に設けることにより、セグメント内のコマンド生成ユニットを含む処理エレメントの全てから収集用のコマンドレジスタに第１の遅延の範囲内、たとえば、１クロックサイクルでコマンドを収集できる。このため、第２レベルのコマンド収集マトリクスにより、複数のセグメントの収集用のコマンドレジスタから、所定の遅延の範囲内、たとえば１クロックサイクルでコマンド出力ユニットにコマンドを回収すれば、再構成区画に含まれるコマンド生成ユニットを備えた処理エレメントの全てから所定のレイテンシ（遅延）でコマンドをコマンド出力ユニットに収集できる。このため、コマンド伝達システムを介して、コマンド生成ユニットから所定の、あるいは規定されたレイテンシで、再構成区画に含まれる全ての処理エレメントを同期して（同じタイミングで）、そのコマンドにより制御できる。
【００１２】
したがって、再構成区画に含まれた、ある処理エレメントのコマンド生成ユニットにより生成されたコマンドを、再構成区画に含まれる全ての処理エレメントに同期して伝達することが可能となる。このため、再構成区画に含まれる処理エレメントにより、データフローを的確に制御することが可能となる。例えば、多数の処理エレメントによりデータフローが構成される場合であっても、データフローを構成する多数の処理エレメントを、処理エレメントから出力されるコマンドにより、同期して一時的に停止したり、再稼働させたりすることが可能となる。
【００１３】
このデバイスにおいては、コマンドを発生する処理エレメントが属するセグメントの処理エレメントに対してもコマンド収集システムおよびコマンド伝達システムを介してコマンドが伝達される。さらに、コマンドを発生する処理エレメント自身においても、コマンド収集システムおよびコマンド伝達システムを介してコマンドを受信する。したがって、再構成区画に属する全ての処理エレメントにおいて、処理エレメントにおけるコマンド発生から処理エレメントにおいてコマンドを受信するまでのレイテンシは一律である。このため、再構成区画に含まれる複数のセグメントにわたり再構成されるデータフローに属する全ての処理エレメントに対してコマンドを同期したタイミングで伝達でき、データフローの処理に不整合が発生するのを防止できる。
【００１４】
コマンド出力ユニットは、少なくとも一部の処理エレメントの出力したコマンドを第２レベルのコマンド伝達マトリクスを介して複数のセグメントのコマンドレジスタに伝達するコマンドリレーユニットとしての機能を有する。コマンド出力ユニットにレジスタ（フリップフロップ）を設けることにより、各処理エレメントへコマンドが伝達されるレイテンシをさらに精度良く規定できる。コマンドのソースとなる他の少なくとも一部の処理エレメントは、コマンド収集システムおよびコマンド伝達システムによりコマンドを伝達するために要するクロックサイクルを加味してコマンドを出力することにより、データフローを適切に制御できる。コマンド出力ユニットは、出力インタフェースエレメントに含まれていても良い。
【００１５】
再構成区画に構成されたデータフローに入力されるデータを一時的に格納する格納ユニットを含む入力インタフェースエレメントもコマンドを生成および出力することが望ましい。データフローにより処理されている途中のデータを一時的に格納する格納ユニットを含むデータ格納型エレメントもコマンドを生成および出力することが望ましい。データフローに入力するデータの準備ができていなかったり、データフローの途中において上流のデータフローおよび下流のデータフローの処理速度の調整が必要となるケースがあるからである。
【００１６】
入力インタフェースエレメントまたはデータ格納型エレメントに含まれるコマンド生成ユニットは、それぞれの格納ユニットに残存するデータ量が、コマンド収集システムおよびコマンド伝達システムによりコマンドを伝達するために消費されるサイクル（クロックサイクル、レイテンシ）の間に、そのデータを処理するデータフローにより消費されるデータ量と同じになったときに、ストップコマンドを出力することが望ましい。入力インタフェースエレメントまたはデータ格納型エレメントがデータフローにデータを提供する場合に、そのデータフローによる処理に不整合を発生させずに一時停止させ、また、そのデータフローによる処理を再開できる。コマンド生成ユニットは、格納ユニットに最終のデータがあるときは、ストップコマンドを出力せずに、最終のデータを出力できるようにすることが望ましい。
【００１７】
再構成区画に複数のデータフローが構成される場合は、再構成区画に含まれる複数の処理エレメントは、それぞれの処理エレメントが属するデータフローを識別する識別情報を含む制御ユニットを含み、コマンドは識別情報を含むことが望ましい。複数のデータフローに含まれる処理エレメントを識別情報により識別し、ストップすべきデータフローだけを停止し、他のデータフローはそのまま稼働させることができる。コマンド生成ユニットを含む処理エレメントの上流のデータフローを識別する識別情報と、下流のデータフローを識別する識別情報とは異なることが望ましい。処理エレメントの上流のデータフローの稼働と下流のデータフローの稼働とを個別に制御することにより、コマンドの発生要因を解決できる可能性がある。
【図面の簡単な説明】
【００１８】
【図１】図１は、再構成可能なデバイスのブロックダイアグラム。
【図２】図２は、ＰＥマトリクスの配列を示す。
【図３】図３は、ＰＥマトリクスのセグメントの配列を示す。
【図４】図４は、ＰＥマトリクスの配置を拡大して示す。
【図５】図５は、セグメント内のＰＥの配列を示す。
【図６】図６は、セグメント内の配線（イントラセグメント配線）を示す。
【図７】図７は、セグメント間の配線（インターセグメント配線）を示す。
【図８】図８は、ＡＬＵエレメントのブロックダイアグラム。
【図９】図９は、ＬＤＢエレメントのブロックダイアグラム。
【図１０】図１０は、ＳＴＢエレメントのブロックダイアグラム。
【図１１】図１１は、ＲＡＭＤエレメントのブロックダイアグラム。
【図１２】図１２は、ＤＬＥエレメントのブロックダイアグラム。
【図１３】図１３は、コマンド伝達システムおよびコマンド収集システムのブロックダイアグラム。
【図１４】図１４は、ＰＥの制御ユニットのブロックダイアグラム。
【図１５】図１５は、ＬＤＢエレメントのバンク切り替えを示す。
【図１６】図１６は、バブルが発生した例を示す。
【図１７】図１７は、フローストップによりデータフローを停止した例を示す。
【図１８】図１８は、ＬＤＢエレメントのバンクコントローラ（コマンド生成ユニット）を示す。
【図１９】図１９は、フローストップコマンドを出力したときのタイミングチャート。
【図２０】図２０は、フローストップコマンドが出力されないときのタイミングチャート。
【図２１】図２１は、フローストップコマンドが出力されないときの他の例のタイミングチャート。
【発明の実施の形態】
【００１９】
図１に、再構成可能なデバイスの一例を示している。このデバイス１は、本願の出願人が開発したＤＡＰＤＮＡと称する半導体集積回路装置である。このデバイス１は、ＤＡＰと呼ばれるＲＩＳＣコアモジュール２と、ＤＮＡ（Distributed Network Architecture）と呼ばれるダイナミックリコンフィグラブルデータフローアクセレレータ（Dynamic Reconfigurable Data-flow Accelerator）３とを含む。デバイス１は、ＤＡＰ２およびＤＮＡ３に加え、ＤＮＡ３のダイレクト入出力用のインタフェース４と、ＰＣＩインタフェース５と、ＳＤＲＡＭインタフェース６と、ＤＭＡコントローラ７と、その他のバスインタフェース８と、これらを接続するための高速バススイッチ９とを含む。ＤＡＰ２は、デバッグインタフェース２ａと、ＲＩＳＣコア２ｂと、命令キャッシュ２ｃと、データキャッシュ２ｄとを含む。このデバイス（システム）１は、１つのチップ（ＩＣ、ＬＳＩあるいはＡＳＩＣ）として提供することも可能であり、複数のチップを含むチップセットとして提供することも可能である。
【００２０】
ＤＮＡ３は、９５５個の処理エレメントＰＥ（以降では単にＰＥまたはＰＥｓと呼ぶことがある）が２次元に配置されたＰＥマトリクス（マトリックス）１０と、このＰＥマトリクス１０に含まれる複数の処理エレメントＰＥ（ＰＥｓ）の機能および／または接続を変えてＰＥマトリクス１０を再構成するためのコンフィギュレーションデータが格納されるコンフィギュレーションメモリシステム１１とを含む。コンフィギュレーションメモリシステム１１は、各ＰＥの制御ユニットに含まれるコンフィギュレーションレジスタシステムと、それらのレジスタシステムへコンフィギュレーションデータを転送する転送システムとを含む。
【００２１】
図２に、ＰＥマトリクス１０の配列を拡大して示している。ＰＥマトリクス１０には９５５個のＰＥ１７が縦横にマトリクス（２次元アレイ構造）を構成するように配置されており、並列処理プロセッサの中核をなしている。ＰＥマトリクス１０は、ハードウェア的には２次元の格子状に並んだＰＥ１７と、それらを接続するバス（配線マトリクス）で構成されている。各ＰＥ１７は演算器やメモリといった基本的な機能だけを持ち、これらのＰＥ１７をバスで相互に接続することにより、複雑な機能を実現する。各ＰＥ１７の機能やバスの接続はソフトウェアで変更でき、その情報をＤＮＡコンフィギュレーションと呼んでいる。ＰＥマトリクス１０の上でさまざまな処理をするためには、その処理に対応したＤＮＡコンフィギュレーションを作成してＰＥマトリクス１０に設定する。ＰＥマトリクス１０内には複数のＤＮＡコンフィギュレーションを保存することができ、現在の処理にどのＤＮＡコンフィギュレーションを使用するかは動的に変更できる。これらについては、以降においてさらに詳しく説明する。
【００２２】
ＰＥマトリクス１０における処理の基本的な動作は、図２に示すように、外部のメインメモリ１９などから取り込んだデータを処理して、再び外部に送り出すことである。外部のメインメモリ１９などに対してはＳＤＲＡＭインタフェース６などを介してデータを入出力できる。ＰＥマトリクス１０には、外部からのデータの取り込み口は２種類用意されている。１つはＬＤＢと呼ばれるＰＥ１７で、ＳＤＲＡＭインタフェース６などを介してデバイス１に接続されたメインメモリ１９からデータを取り込む。もう１つはＬＤＸと呼ばれるＰＥ１７で、ダイレクトＩ／Ｏインタフェース４を介して外部接続された他のデバイス１８から直接データを取り込む。これらのＰＥ１７から取り込まれたデータはＰＥマトリクス１０の内部の複数のＰＥ１７により構成されるデータフロー（データパス）で処理され、出力される。処理の終わったデータを外部に送り出す口も２種類用意されている。１つはＳＴＢと呼ばれるＰＥ１７で、メインメモリ１９にデータを書き込む。他の１つはＳＴＸと呼ばれるＰＥ１７で、ダイレクトＩ／Ｏインタフェース４を介して接続された外部デバイス１８に直接データを送り出す。
【００２３】
図３から図５に、ＰＥマトリクス１０のさらに詳細な構成を示している。ＰＥマトリクス１０に配置された複数のＰＥ１７は、データに対して種々の処理を行うことを中心とするＰＥ（ｅＰＥ）１７ｅと、ＰＥ間の接続を主に行う接続用のＰＥ（ＤＬＶおよびＤＬＨ）１７ｃとを含む。図３に示すように、ＰＥマトリクス１０に配置された複数のＰＥ１７は、４カラム×４ロウ構成の１６個のセグメント（以降において、セグメントを一般的に示す場合はセグメントＳ、個々のセグメントを示す場合はセグメントＳ０−Ｓ１５、または、セグメントａ１−ａ４、ｂ１−ｂ４、ｃ１−ｃ４およびｄ１−ｄ４とする）に分割あるいは区画化されている。それぞれのセグメントＳには８カラム×８ロウ構成のデータ処理用のＰＥ（ｅＰＥ）と、他のセグメントＳとの境界に沿って配置されたＤＬＶおよびＤＬＨとを含む。各々のセグメントＳに含まれるＰＥ１７は、１サイクルの遅延の範囲内でデータを送受信可能なイントラセグメントコネクション（セグメント内接続、第１レベルのルーティングマトリクス）２１で接続されている。また、隣接するセグメントＳは、ＤＬＶおよびＤＬＨを介してインターセグメントコネクション（セグメント間接続、第２レベルのルーティングマトリクス）２２により接続されている。なお、以降において、各タイプのＰＥ１７を示す場合は、ＬＤＢ、ＬＤＸなどの各タイプの名称を示す。
【００２４】
それぞれのセグメントの配置は異なっている。たとえば、セグメントａ１−ｄ１にはＬＤＢまたはＬＤＸが配置され、セグメントａ４−ｄ４にはＳＴＢまたはＳＴＸが配置されている。ＰＥマトリクス１０に構成されるデータフロー（データパス）における基本的な信号の流れはセグメントａ１、ｂ１、ｃ１、ｄ１からセグメントａ４、ｂ４、ｃ４、ｄ４となる。
【００２５】
図４に、セグメントａ１〜ａ４およびｂ１〜ｂ４のＰＥ１７の配置の一例を示している。図５には、セグメントａ１の配置を拡大して示している。各セグメント内のデータ処理用のＰＥ１７ｅは基本的に８カラム×８ロウ構成となっている。すなわち、セグメントの左上をカラムｃ０、ロウｒ０、右下のＰＥをカラムｃ９、ロウｒ９としたときに、データ処理用のＰＥ１７ｅはカラムｃ１〜ｃ８およびロウｒ１〜ｒ８の範囲に配置されている。ＤＬＨおよびＤＬＶを除くＰＥ１７ｅの左上のものが、カラムｃ１、ロウｒ１に配置される。ただし、ＭＵＬ、ＳＦＴ、ＲＭＣなど２系統のデータ出力を持つＰＥ１７ｅ、およびＲＡＭは２カラム、すなわち、最小のＰＥ１７の２つ分のエリアが割り当てられている。ＳＴＢおよびＬＤＢには４カラム分、すなわち、最小のＰＥ１７の４つ分のエリアが割り当てられている。
【００２６】
また、データ転送用のＰＥ１７ｃであるＤＬＶおよびＤＬＨは、カラムｃ０およびｃ９、ロウｒ０およびｒ９に配置される。なお、各セグメントの４コーナーにはＤＬＶおよびＤＬＨは存在しない。さらに、図４に示すように、上下左右の端に位置するセグメントでは、上下のロウのＤＬＶまたは左右のカラムのＤＬＨは存在しない。すなわち、四隅のセグメントａ１、ａ４、ｄ１およびｄ４では、上下の一方のロウ（ｒ０またはｒ９）にＤＬＶは存在せず、左右の一方のカラム（ｃ０またはｃ９）にＤＬＨは存在しない。セグメントｂ１、ｃ１では上方のロウｒ０にＤＬＶは存在しない。セグメントｂ４、ｃ４では、下方のロウｒ９にＤＬＶは存在しない。セグメントａ２、ａ３では左側のカラムｃ０にＤＬＨは存在せず、セグメントｄ２、ｄ３では右側にカラムｃ９にＤＬＨは存在しない。
【００２７】
図６に、イントラセグメントコネクション（セグメント内接続、第１レベルのバス、第１レベルのルーティングマトリクス）２１を示している。第１レベルのバス２１は、セグメント内のＰＥを接続する横方向（水平方向）のバス２１ｈおよび縦方向（垂直方向）のバス２１ｖと、バス２１ｈおよび２１ｖを接続するためのスイッチ（セレクタ、バスセレクタ、Ｈ−ｔｏ−Ｖセレクタ）２１ｓとを含む。
【００２８】
図６は、セグメント内の４カラム×２ロウのエリア、たとえば、カラムｃ１〜ｃ４およびロウｒ１〜ｒ２を抜粋したものである。横方向のバス２１ｈは、同一ロウに配置された各ＰＥ１７の出力と左右に隣接するセグメントのＤＬＨの出力とを接続するためのバスである。縦方向のバス２１ｖは、同一カラムに配置されたセレクタ２１ｓの出力と、上下に隣接するセグメントのＤＬＶの出力とを接続するためのバスである。セレクタ２１ｓは、縦方向のバス２１ｖと横方向のバス２１ｈの各交点に配置されており、図６のように同一カラム上の奇数および偶数のロウ（ロウ２Ｎ−１および２Ｎ）がペアとなるように構成されている。各コーナーのセレクタ２１ｓは、各ロウ（横方向のバス）２１ｈから２出力を縦方向のバス２１ｖに出力する。第１レベルのバス２１は、さらに、各ＰＥ１７に対応して、縦方向のバス２１ｖと各ＰＥ１７とを接続するためのセレクタ（ＰＥ入力セレクタ）２１ｔを含む。
【００２９】
これらのバス２１ｈおよび２１ｖを含む第１レベルのバス２１により接続できる範囲、すなわち、各セグメントＳ内のＰＥの間（接続元のＰＥのＦＦ（フリップフロップ）またはレジスタと、接続先のＰＥのＦＦまたはレジスタとの間）では１サイクル（１クロックサイクル）以内にデータを送受信できる。したがって、信号が伝搬するタイミング（レイテンシ）的には、例えば、セグメントａ１に含まれるＰＥは、いずれも等価である。このため、同一セグメント内であれば、回路を構成するために、いずれのＰＥを選択して機能を割り付けても、事前のタイミングの検討は不要である。タイミング的には、あるセグメント内の複数のＰＥを用いて、所定の回路を自由に配置および配線できる。
【００３０】
図７に、第２レベルのルーティングマトリクス２２の構成を示している。図７では、第２レベルのルーティングマトリクス２２により、隣接するセグメント（図７ではセグメントａ１およびｂ１）にそれぞれ含まれている接続用のＰＥ１７ｃに含まれるＤＬＨを接続している。図７に示したそれぞれのＤＬＨは、それぞれのセグメントＳ１およびＳ４の内部の第１レベルのルーティングマトリクス（intra-segment interconnect）２１に接続している。したがって、セグメントＳ１に含まれるＰＥ１７と、セグメントＳ４に含まれるＰＥ１７とを第２レベルのルーティングマトリクス（inter-segment interconnect）２２を介して接続することができる。接続用のディレイエレメント１７ｃであるＤＬＨは、第１レベルのルーティングマトリクス２１に含まれるバスのインタフェースとして機能する。したがって、第１レベルのルーティングマトリクス２１に含まれるバスを、セグメント毎に独立して使用できる。一方、セグメント間でデータを入出力する必要があるときは、接続用のＤＬＨに含まれるＦＦ（フリップフロップ、レジスタ）を介してデータを入出力する。このため、セグメント間の第２レベルのルーティングマトリクス２２を介して信号が伝達されると、クロックに同期した１サイクルの遅延が新たに加わる。上下に配置されたセグメントＳの接続も接続用のＰＥ１７ｃであるＤＬＶを介して同様に行われる。
【００３１】
第１レベルのルーティングマトリクス２１のみを用いてＰＥ１７を接続する場合、ＰＥ１７の間の遅延時間（遅延、レイテンシ）は１クロックサイクル（第１の遅延）の範囲内で接続されることが保証される。したがって、タイミングの検証は不用である。これに対し、第２レベルのルーティングマトリクス２２を介してＰＥ１７を接続する場合は、少なくとも１クロックサイクルの遅延が余分に加わる。第２レベルのルーティングマトリクス２２を介して接続する場合の遅延時間は、ディレイエレメントＤＬＨの設定に依存し、遅延量（遅延時間）は制御できる。例えば、ＤＬＨの遅延量を制御することにより、第２のルーティングマトリクス２２を２回使用する信号と、第２のルーティングマトリクス２２を１回使用する信号とをシンクロナイズできる。他の接続用のディレイエレメントＤＬＶを介して隣接するセグメントＳを接続するときも同様である。
【００３２】
図７に示したＤＬＨにおいては、ＰＥマトリクス１０の横方向のバス（Ｈバス）２１ｈの信号を隣のセグメントに渡す機能を持つ。それぞれのＤＬＨは、２４入力８出力である。２４個の入力は、ペアとなる奇数および偶数のロウの各ＰＥ１７からの出力（ロウ当たり８出力の２倍、合計１６）と、同じセグメント内で対向するＤＬＨの４つの出力の倍（合計８）とを含む。各々のＤＬＨは、それら２４の入力から８つの出力を選択し、第２レベルのルーティングマトリクス２２を介して隣のセグメントのＤＬＨに出力する。ＤＬＶにおいても基本的な構成は同じである。
【００３３】
図４および図５に示したマトリクス１０に配置されたＰＥ１７の内、ＡＬＵ、ＡＬＣ、ＡＬＳ、ＭＵＬ、ＢＴＣ、ＲＭＣおよびＳＦＴで示されたタイプのＰＥ１７は、２０種類の算術演算、論理演算および２入力の比較機能を持つ。データの入出力は、１６ビットデータの２入力、１出力である。乗算器は、１６ビットデータの入力、３２ビットデータの出力である。これらのＰＥ１７は一般にＡＬＵエレメントと称されるが、それぞれ固有の演算機能を含む。例えば、ＡＬＵとＡＬＣは同じ演算処理を含むが、内部に固定値を持つかどうかの違いがある。ＡＬＣは１個の１６ビットの固定値を内蔵し、ＡＬＵは固定値を内蔵しないかわりに、隣接するＡＬＣの固定値を利用する。ＡＬＳは、１個の１６ビット固定値を内蔵し、ＦＦ１（Find the First 1）、ＳＮ１（Sum of Number of 1）、Ｓ２Ｐ（Serial To Parallel）、Ｐ２Ｓ（Parallel To Serial）などの特殊処理をサポートする。ＭＵＬは、乗算器を内蔵する。ＢＴＣは、ビット単位で出力データを設定する。出力１６ビットに対して、個々の出力ビットに入力３２ビットから任意の１ビットを選択することができる。ＲＭＣは２入力２出力のＰＥで、ビットのローテート、マスク処理および比較処理を実行する。また、１６ビットの固定値を供給する。ＳＦＴは３２ビットのシフト処理を行う。
【００３４】
ＤＬＥで示されたタイプのＰＥ１７は、レイテンシの調整とセグメント間のデータの受け渡しに使用される遅延エレメントである。ＤＥＬのデータの入出力は１入力１出力である。遅延エレメントには、遅延調整用ＰＥ１７ｅとしてＤＬＥ、セグメント間のデータ受け渡し専用ＰＥ１７ｃであるＤＬＨおよびＤＬＶが含まれる。
【００３５】
ＲＡＭで示されたタイプのＰＥ１７はＤＮＡマトリクス１０の内部メモリである。ＲＡＭは、８Ｋバイト×５４個および１６Ｋバイト×１個の合計４４８Ｋバイトのメモリ領域を含む。このメモリ領域では、ＤＮＡコンフィグレーションを切り換えても値は保持される。ＲＡＭエレメントには、ＲＡＭＳ、ＲＡＭＤ、ＲＡＭＶの３種類が含まれる。
【００３６】
Ｃ１６Ｌ、Ｃ１６Ｓ、Ｃ３２Ｌ、Ｃ３２Ｓ、Ｃ３２ＥおよびＣ１６Ｅで示されたタイプのＰＥ１７は、カウンタエレメントであり、ＤＮＡバッファに対するアドレスジェネレータ、メインメモリに対するアドレスジェネレータ、および汎用カウンタとして使用される。Ｃ１６ＬおよびＣ１６ＳはＤＮＡバッファに対するアドレスジェネレータであり、カウンタ機能（１６ビットカウンタを２つ）を持ち、ＡＬＵエレメントと併用してより複雑なアドレスパターンを生成することができる。Ｃ３２ＬおよびＣ３２Ｓは、メインメモリに対するアドレスジェネレータであり、カウンタ機能（３２ビットカウンタを２つ）を持ち、ＡＬＵエレメントと併用してより複雑なアドレスパターンを生成することができる。Ｃ３２ＥおよびＣ１６Ｅは、それぞれ、３２ビットおよび１６ビットの汎用カウンタである。
【００３７】
ＬＤＢで示されたタイプのＰＥ１７は、メインメモリ１９からＰＥマトリクス１０にデータを入力するＤＮＡロードバッファであり、入力インタフェースエレメントに相当する。ＬＤＢは、４バッファ構成で、１バンクが８Ｋバイトの容量のバッファを含む。ＳＴＢは、ＰＥマトリクス１０からメインメモリ１９へデータを出力するＤＮＡストアバッファであり、出力インタフェースエレメントに相当する。ＳＴＢで示されたタイプのＰＥ１７は、２バッファ構成で、１バンクが８Ｋバイトの容量のバッファを含む。ＬＤＸは、ダイレクトＩ/Ｏを介して他のＤＮＡからデータを入力し、ダイレクトＩ/Ｏを介して他のＤＮＡへデータを出力する。
【００３８】
図８は、ＡＬＵで示されたタイプのＰＥ１７（以降ではＡＬＵエレメント）のブロックダイアグラムである。ｄｉｘおよびｄｉｙはデータ入力であり、セレクタ２１ｔにより縦方向のバス２１ｖから選択される入力を示す。ｄｏはデータ出力であり、横方向のバス２１ｈへの出力を示す。他のエレメントにおいても同様である。ｄｉｃは、ＡＬＵエレメントの入力インタフェースであり、ほぼ同等の機能を備えたエレメントであるＡＬＣエレメントのレジスタにストアされた固定値（イミディエート）からの入力を示す。ＡＬＣエレメントは、固定値をストアできるレジスタ１０１を除き、ほぼＡＬＵエレメントと同じ構成となっている。ｄｏｃは、ＡＬＵエレメントの出力インタフェースである。ｃｉｘおよびｃｉｙはキャリー入力であり、ｃｏはキャリー出力である。ＰＥマトリクス１０は、図６および図７で示したデータバスと同様の構成のキャリー用のバスを備えている。図８において二重線で囲われた四角形は、レジスタを示す。以下の各ＰＥ１７のブロックダイアグラムにおいても同様である。
【００３９】
セレクタ１０２は、ＡＬＵ１１３の入力Ｘとして、データｄｉｘと、レジスタ１０１の定数（コンスタント）とを選択する。セレクタ１０３は、ＡＬＵ１１３の入力Ｙの遅延を設定する。セレクタ１０４は、入力Ｙのキャリーの遅延を設定する。セレクタ１０５および１０６は、入力ＸおよびＹを交換（スワップ）するためのものである。セレクタ１０７は、入力Ｘのフィードバックを設定するためのものであり、スワップした入力Ｘのトークンまたは入力Ｙのキャリーを選択する。セレクタ１０８は、入力Ｘを選択するためのものであり、ＡＬＵの出力をフィードバックできる。セレクタ１０９は、ＡＬＵ１１３をスルーするためのものである。セレクタ１１２は、このＰＥ１７の出力を選択するためのものである。セレクタ１１０は、ＡＬＵ１１３の入力側のキャリーを選択するためのものであり、キャリー入力（遅延も含め）と、入力ＸまたはＹのトークン（スワップされたものも含め）とが選択対象となる。セレクタ１１１は、このＰＥ１７から出力されるキャリーを選択するためのものであり、ＡＬＵ１１３の入力キャリー、ＡＬＵ１１３の出力キャリー、ＡＬＵ１１３を比較器として使用したときのキャリー、入力Ｙのキャリーが選択対象となる。
【００４０】
さらに、図８のＡＬＵエレメントは、エレメント内の処理内容（機能および接続）を制御するための制御ユニット１５を含む。制御ユニット１５は、コンフィギュレーションメモリシステム１１を構成するコンフィギュレーションレジスタシステム１２と、コマンドデコードシステム５５とを含む。制御ユニット１５は、転送システム１３によりＡＬＵエレメントのコンフィギュレーションレジスタシステム１２に転送され、有効になったコンフィギュレーションデータによりＡＬＵエレメントの機能を切り替え、制御する。たとえば、制御ユニット１５は、有効なコンフィギュレーションデータに基づき、ＡＬＵエレメントに含まれるセレクタの設定を行い、ＡＬＵ１１３などの論理演算素子の機能の切り替えを行い、ＡＬＵエレメントにおいて所望のデータ処理が行われるようにする。したがって、レジスタシステム１２において有効になるコンフィギュレーションデータにより、ＡＬＵエレメントの機能を１クロックサイクルで切り替えることができる。他のＰＥ１７についても同様である。
【００４１】
制御ユニット１５のコマンドデコードシステム５５は、セグメント内のコマンド伝達マトリクス（第１レベルのコマンド伝達マトリクス）５１を介して転送されたコマンドをデコードする。コマンドが、コンフィグレーションレジスタ１２において有効なコンフィギュレーションデータに関連し、データフローを識別するための情報（ＥＩＤ）と一致するＥＩＤを含んでいれば、そのコマンドに基づきＡＬＵエレメントを制御する。たとえば、ストップコマンドであれば、ＡＬＵエレメントのクロックを停止し、すべての機能をストップさせる。他のＰＥ１７についても同様である。
【００４２】
図９は、ＬＤＢで示されたタイプのＰＥ１７（以降ではＬＤＢエレメント）のブロックダイアグラムである。ＬＤＢエレメントは、メインメモリ１９からＰＥマトリクス（ＤＮＡマトリクス）１０へのデータ転送用バッファを含む入力インタフェースエレメントである。ＬＤＢエレメントは、ＰＥマトリクス１０に再構成されたデータフローへの入力データを一時的に格納するための格納領域２９ａを備えている。格納領域２９ａは、それぞれ８Ｋバイトの４つのバンク２９ｘを備えている。４つのバンク２９ｘの１つはバックグラウンドバンク（メインメモリ１９からの入力バンク）として機能し、１つはフォアグラウンドバンク（ＰＥマトリクス１０への出力バンク）として機能する。
【００４３】
ＬＤＢエレメントはバンクコントロールユニット２９ｂを含む。バンクコントロールユニット２９ｂは、４つのバンク２９ｘを独立して動作させ、データの入力および／または出力終了に同期してバンク切り替えを発生し、格納領域２９ａがＤＮＡマトリクス１０のＰＥ１７またはデータフローから１クロック毎にアクセスできるようにする。これらのバンク２９ｘを備えた格納領域２９ａは、ＬＤＢエレメントからデータを受け入れるデータフローに対してシーケンシャルにデータを提供する。
【００４４】
また、ＤＮＡマトリクス１０からＣ１６Ｌエレメントにてアドレスを生成することにより、格納領域２９ａのバンク２９ｘにランダムアクセスが可能である。また、同一ＥＩＤ（データフロー識別情報）により、複数チャネル間で同期動作が可能である。また、メインメモリ１９からＤＮＡマトリクス１０への転送用バッファとして利用する以外に、ループバック機能を使ってＤＮＡマトリクス１０の内部のデータを書き込むバッファとして利用することができる。
【００４５】
ＬＤＢエレメントのバンクコントロールユニット２９ｂは、コマンド生成ユニットとしての機能を備えており、フローストップ信号を生成および出力する機能を含む。ＬＤＢエレメントから出力される（読み出される）データの処理を行うデータフロー（データパス）を停止させたい場合は、ＬＤＢエレメントのバンクコントロールユニット２９ｂは、その処理のためにＰＥマトリクス１０に再構成されたデータフローを示すＥＩＤとフローストップ信号とを備えたフローストップコマンド（ストップコマンド、フローストップリクエスト）Ｃｓを生成し、出力する。それによりＬＤＢエレメントは、出力制御ユニット１２２を介してデータを読み出す所望のデータフローを停止できる。
【００４６】
外部メモリ１９からＬＤＢエレメントにデータを入力する（書き込む）処理を行うデータフロー（データパス）を停止させたい場合は、そのためにＰＥマトリクス１０に再構成された、外部メモリ１９の読み取り用のデータフローを示すＥＩＤと、フローストップ信号とを備えたコマンドＣｓをＬＤＢエレメントのバンクコントロールユニット２９ｂが出力する。それにより、ＬＤＢエレメントは入力制御ユニット１２１を介してデータを入力している所望のデータフローを停止できる。ＬＤＢエレメントも、ＡＬＵエレメントと同様の機能を備えた制御ユニット１５を備えている。
【００４７】
ＬＤＢエレメントは、格納領域２９ａの読み出し、書き込み、およびバンク２９ｘの切り替えを行うための書き込みカウンタ１２３と、読み出しカウンタ１２６と、しきい値を格納するための入力カウントレジスタ１２４および出力カウントレジスタ１２５と、アクセスのデータ単位を記憶するためのレジスタ１２７とを含む。
【００４８】
図１０は、ＳＴＢで示されたタイプのＰＥ１７（以降ではＳＴＢエレメント）のブロックダイアグラムである。ＳＴＢエレメントは、ＤＮＡマトリクス１０からメインメモリ１９へのデータ転送用バッファを含む出力インタフェースエレメントである。ＳＴＢエレメントは、データフローから出力されたデータを一時的に格納するための格納領域２８ａを含む。格納領域２８は、それぞれ８Ｋバイトのバンク２８ｘを２つ備えている。２つのバンク２８ｘの１つはバックグラウンドバンク（メインメモリ１９へ出力するバンク）として機能し、他の１つはフォアグラウンドバンク（ＰＥマトリクス１０から入力するためのバンク）として機能する。
【００４９】
ＳＴＢエレメントはバンクコントロールユニット２８ｂを含む。バンクコントロールユニット２８ｂは２つのバンク２８ｘを独立して動作させ、データの入力および／または出力終了に同期してバンク切り替えを発生し、格納領域２８ａがＤＮＡマトリクス１０のＰＥ１７またはデータフローから１クロック毎にアクセスできるようにする。
【００５０】
ＳＴＢエレメントのバンクコントロールユニット２８ｂも、コマンド生成ユニットとしての機能を備えており、フローストップ信号を生成する機能を含む。ＳＴＢエレメントからメインメモリ１９に出力される（読み出される）データの処理を行うデータフロー（データパス）を停止させたい場合は、その処理のためにＰＥマトリクス１０に再構成されたデータフローを示すＥＩＤを含むストップコマンドＣｓをバンクコントロールユニット２８ｂが生成し、出力する。入力制御ユニット１３１に接続され、ＳＴＢエレメントにデータを入力する（書き込む）処理を行うデータフロー（データパス）を停止させたい場合は、そのためのデータフローを示すＥＩＤを含むストップコマンドＣｓをバンクコントロールユニット２８ｂが生成し、出力する。したがって、ＬＤＢと同様に、バンクコントローラ２８ｂは、フローストップ信号とＥＩＤとを備えたストップコマンドＣｓにより、所望のデータフローを停止できる。
【００５１】
ＳＴＢエレメントも制御ユニット１５を備えている。ＳＴＢエレメントの制御ユニット１５は、コンフィギュレーションレジスタシステム１２と、コマンドデコードシステム５５と、さらに、コマンド出力ユニット（コマンドリレーユニット）５９とを含む。コマンドリレーユニット５９は、ＳＴＢエレメントの内部で発生したストップコマンドＣｓと、ＬＤＢなどの内部で発生したストップコマンドＣｓとの論理和をとって、統合されたストップコマンドＣｓをセグメント外のコマンド伝達マトリクス（第２レベルのコマンド伝達マトリクス）５２に出力する。
【００５２】
ＳＴＢエレメントは、さらに、格納領域２８ａの読み出し、書き込み、およびバンク２８ｘの切り替えを行うための書き込みカウンタ１３３と、読み出しカウンタ１３６と、しきい値を格納するための入力カウントレジスタ１３４および出力カウントレジスタ１３５と、アクセスのデータ単位を記憶するためのレジスタ１３７とを含む。
【００５３】
図１１に、ＲＡＭで示されたタイプのＰＥ１７（以降ではＲＡＭエレメント）のブロックダイアグラムを示している。図１１に示したＲＡＭエレメントは、ＲＡＭＤエレメントである。ＲＡＭＤエレメントはＰＥマトリクス１０に内蔵されたデュアルポートメモリである。ＲＡＭＤエレメントは、デュアルポートＲＡＭ２７ａと、リード／ライトコントローラ２７ｂと、コンフィギュレーションデータによりＲＡＭＤエレメントの機能を制御するための制御ユニット１５とを含む。
【００５４】
ＲＡＭＤエレメントは、コンフィギュレーションデータにより、アドレスデコードモード、デュアルポート１６ビットモード、ヒストグラムモード、１６ビットＦＩＦＯモード、ディレイモードでの使用が可能である。このため、データフローにおいて、ラインバッファ、ＦＩＦＯなどの一時的なデータ保持、ルックアップテーブル、ヒストグラム処理などのために利用できる。さらに、ＲＡＭＤエレメントは、ＲＩＳＣ２のメモリ空間に内蔵されているため、ＰＥマトリクス１０に構成されるデータフローとは別に、ＲＩＳＣ２はＲＡＭ２７ａを直接読み書きすることができる。データフローのアクセスと直接アクセスが同時に行われた場合、直接アクセスが優先される。
【００５５】
ＲＡＭＤエレメントはコマンド生成ユニット６９を含む。コマンド生成ユニット６９は、リード／ライトコントローラ２７ｂから出力されたストップ信号と、制御ユニット１５において有効なコンフィギュレーションデータに含まれるＥＩＤとを含むストップコマンドＣｓを出力する。ＦＩＦＯモードなどにおいて、ＲＡＭＤエレメントのコマンド生成ユニット６９は、上流のデータフローの処理速度と、下流のデータフローの処理速度との速度差が大きくなると、上流のデータフローのＥＩＤまたは下流のデータフローのＥＩＤを含むフローストップコマンドＣｓを出力する。
【００５６】
図１２に、ＤＬＥで示されたタイプのＰＥ１７（以降ではＤＬＥエレメント）のブロックダイアグラムを示している。ＤＬＥエレメントはＰＥマトリクス１０に再構成されるデータフロー中のデータおよびキャリーの遅延値を調整する。ＤＬＥエレメントは、遅延回路２６ａと、遅延量を制御するためのモード制御ユニット２６ｂと、コンフィギュレーションデータによりモードを制御するための制御ユニット１５とを含む。
【００５７】
ＤＬＥエレメントでは、データは１〜８の遅延調整が可能であり、キャリーは１〜１６の遅延調整が可能である。さらに、ＤＬＥエレメントは、ＦＩＦＯ機能を備えている。したがって、ＰＥマトリクス１０において、データおよびキャリー間のタイミング調整、データの緩衝バッファなどとして利用できる。
【００５８】
ＤＬＥエレメントもコマンド生成ユニット６９を含む。コマンド生成ユニット６９は、モード制御ユニット２６ｂから出力されたストップ信号と、制御ユニット１５において有効なコンフィギュレーションデータに含まれるＥＩＤとを含むストップコマンドＣｓを出力する。ＦＩＦＯモードなどにおいて、ＤＬＥエレメントのコマンド生成ユニット６９は、上流のデータフローの処理速度と、下流のデータフローの処理速度との速度差が大きくなると、上流のデータフローのＥＩＤまたは下流のデータフローのＥＩＤを含むフローストップコマンドＣｓを出力する。
【００５９】
このデバイス１は、さらに、コマンドを各ＰＥ１７に伝達するためのコマンド伝達システム５０と、ＰＥ１７の一部により生成されたコマンドを収集してコマンド伝達システム５０に渡すためのコマンド収集システム６０とを有する。図１３は、コマンド伝達システム５０およびコマンド収集システム６０の概要を示している。
【００６０】
図１３は、簡単のために、ＰＥマトリクス１０の１６個のセグメントＳのうち、セグメントａ１〜ａ４を抜き出して示しているが、他のセグメントにおいても同様である。ＰＥマトリクス１０に配置されたＰＥ１７およびルーティングマトリクス２１および２２により、太線で示したようなデータフロー（データパス）７０が構成される。この例のデータフロー７０では、セグメントａ１のＬＤＢを介してデータが入力され、セグメントａ４のＳＴＢを介してデータが出力される。データフロー７０を構成するために、セグメント内のＡＬＵなどのＰＥ１７がイントラセグメントコネクション２１により接続され、セグメント間はＤＬＶペアを介してインターセグメントコネクション２２により接続される。ＰＥマトリクス１０に再構成されるデータフロー７０は、これに限られず、また、再構成されるデータフロー７０の数は１つに限定されず、多くのケースでは複数のデータフローが再構成される。ＰＥにはＬＤＢ、ＳＴＢ、ＲＡＭＤ、ＤＬＥも含まれるが、これらのエレメントはフローストップコマンドＣｓの発生源（生成ソース）となるＰＥ１７なので、個別に示している。
【００６１】
コマンド伝達システム５０は、ＰＥマトリクス１０に含まれる複数のＰＥ１７のそれぞれに、ストップコマンドＣｓおよび他のコマンドを伝達するためのシステムである。コマンド伝達システム５０は、セグメントａ１〜ａ４のそれぞれに設けられた伝達用のコマンドレジスタ（レジスタ、フリップフロップ、ＦＦ）５３と、セグメントａ１〜ａ４のそれぞれの内部に配置された複数のＰＥと伝達用のコマンドレジスタ５３とを接続するための第１レベルのコマンド伝達マトリクス（コマンド伝達用接続、コマンド伝達用バス、コマンド伝達用配線）５１とを含む。コマンド伝達システム５０は、さらに、セグメント毎に設けられた複数の伝達用のコマンドレジスタ５３とコマンドリレーユニット（コマンド出力ユニット）５９とを接続する第２レベルのコマンド伝達マトリクス５２を含む。
【００６２】
コマンドレジスタ（レジスタユニット）５３はＦＦと表示されているように、典型的にはマルチビットのフリップフロップＦＦまたはラッチユニットからなるレジスタを含み、コマンドを転送するための他の論理ゲートを含んでいても良い。コマンドレジスタ５３は、ストップコマンドＣｓおよび他のコマンドをクロックサイクル単位で入力および出力し、コマンドをクロックサイクルに同期して転送するために使用される。
【００６３】
コマンド伝達システム５０においては、ＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆと、各セグメントａ１〜ａ４の伝達用のコマンドレジスタ５３とが第２レベルのコマンド伝達マトリクス５２により接続されている。第２レベルのコマンド伝達マトリクス５２は、１クロックサイクルの範囲内において、ＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆから各セグメントａ１〜ａ４の伝達用のコマンドレジスタ５３へデータ（コマンド）を伝達（伝送）する。
【００６４】
各セグメントａ１〜ａ４においては、伝達用のコマンドレジスタ５３がセグメント内に配置され、第１レベルのコマンド伝達マトリクス５１によりセグメント内の全てのＰＥと接続されている。各セグメントａ１〜ａ４においては、同一セグメント内に配置された全てのＰＥ１７は、そのセグメント内のＰＥ１７と１クロックサイクルの範囲内で、データが伝達（伝送）される。したがって、第１レベルのコマンド伝達マトリクス５１により、各セグメントのＰＥ１７に対し、同一セグメント内に設けられたコマンドレジスタ５３から１クロックサイクルの範囲内で、データ（コマンド）が伝達（伝送）される。
【００６５】
すなわち、各セグメントａ１〜ａ４に配置された全てのＰＥは、各セグメントのコマンドレジスタ５３にラッチされたコマンドにより、次のクロックサイクルで制御される。したがって、コマンド伝達システム５０により、ＰＥマトリクス１０に配置されている全てのＰＥは、ＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆがコマンドをラッチしてから２クロックサイクル目でコマンドにより同期して制御される。
【００６６】
コマンド伝達システム５０は、上記と同様に、ＲＩＳＣモジュール２などから供給される他のコマンドもＰＥマトリクス１０の全てのＰＥに同期して伝達できる。
【００６７】
コマンド収集システム６０は、ＰＥマトリクス１０のコマンド生成元のＰＥ１７からストップコマンドＣｓおよび他のコマンドを収集するためのシステムである。コマンド収集システム６０は、セグメントａ１〜ａ４のそれぞれに設けられた収集用のコマンドレジスタ（レジスタ、フリップフロップ、ＦＦ）６３と、セグメントａ１〜ａ４のそれぞれの内部に配置された複数のＰＥ１７の一部のＰＥであって、コマンド発生源となるＰＥと収集用のコマンドレジスタ６３とを接続するための第１レベルのコマンド収集マトリクス（コマンド収集用接続、コマンド収集用バス、コマンド収集用配線）６１とを含む。コマンド収集システム６０は、さらに、セグメント毎に設けられた複数の収集用のコマンドレジスタ６３とコマンドリレーユニット（コマンド出力ユニット）５９とを接続するための第２レベルのコマンド収集マトリクス６２を含む。
【００６８】
収集用のコマンドレジスタ６３は、伝達用のコマンドレジスタ５２と同様に、典型的にはマルチビットのフリップフロップＦＦまたはラッチユニットからなるレジスタを含み、コマンドを転送するための他の論理ゲートを含んでいても良い。コマンドレジスタ６３は、ストップコマンドＣｓおよび他のコマンドをクロックサイクル単位で入力および出力し、コマンドをクロックサイクルに同期して転送するために使用される。
【００６９】
コマンド収集システム６０では、収集用のコマンドレジスタ６３がセグメント内に配置され、第１レベルのコマンド収集マトリクス６１によりセグメント内の全てのコマンド発生源となるＰＥと接続されている。このため、各セグメントａ１〜ａ４においては、第１レベルのコマンド収集マトリクス６１により、コマンド発生源の各ＰＥから、同一セグメント内に設けられたコマンドレジスタ６３へ１クロックサイクルの範囲内で、データ（ストップコマンド）を収集できる。
【００７０】
ＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆと、各セグメントａ１〜ａ４の収集用のコマンドレジスタ６３とは第２レベルのコマンド収集マトリクス６２により接続されている。第２レベルのコマンド収集マトリクス６２は、１クロックサイクルの範囲内において、各セグメントａ１〜ａ４の収集用のコマンドレジスタ６３からＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆへデータ（コマンド）を伝達（伝送）する。したがって、コマンド収集システム６０により、ＰＥマトリクス１０に配置されているコマンド発生源のＰＥ１７の全てから、ＳＴＢのコマンド出力ユニット５９のコマンドレジスタ５９ｆへ、２クロックサイクルでコマンドが伝達（収集）される。
【００７１】
このデバイス１においては、コマンドを発生するＰＥ１７が属するセグメントのＰＥ１７に対してもコマンド収集システム６０およびコマンド伝達システム５０を介してコマンドが伝達される。さらに、コマンドを発生するＰＥ１７自身においても、コマンドを受領する制御ユニット１５に対しては、コマンド収集システム６０およびコマンド伝達システム５０を介してコマンドが伝達される。したがって、ＰＥマトリクス１０に属する全てのＰＥ１７において、ＰＥ１７におけるコマンド発生からＰＥ１７においてコマンドを受信するまでのレイテンシは一律である。このため、ＰＥマトリクス１０に含まれる複数のセグメントにわたり再構成されるデータフローに属する全てのＰＥ１７に対してコマンドを同期したタイミングで伝達でき、データフロー７０の処理に不整合が発生するのを防止できる。
【００７２】
コマンド収集システム６０の第１のマトリクス６１および第２のマトリクス６２はコマンドの論理和を生成するＯＲゲート６１ｒおよび６２ｒを含む。ストップコマンドＣｓはＥＩＤの情報を含む１６ビットの信号（stop[15:0]）であり、ビット０は「ＥＩＤ＝０」を示す。したがって、ストップコマンドＣｓの論理和を出力することにより、複数のＥＩＤに対応する複数のデータフローを同じタイミングでストップさせることができる。このため、異なるデータ処理を行っている複数のデータフローがＰＥマトリクス１０に構成されている場合であっても、このコマンド収集システム６０およびコマンド伝達システム５０を用いることにより、複数のデータフロー７０を的確に、そしてフレキシブルに制御できる。
【００７３】
図１４に、各ＰＥ１７に含まれる制御ユニット１５のブロックダイアグラムを示している。図１４は、制御ユニット１５に含まれるコンフィギュレーションレジスタシステム１２と、コマンドデコードシステム５５とを示している。コンフィギュレーションレジスタシステム（メモリシステム）１２は、２つ（２バンク）のバックグラウンドメモリ１２ｂと、１つ（１バンク）のフォアグラウンドメモリ１２ａとの計３バンクのコンフィギュレーションメモリを備えている。これら３つのバンク１２ａおよび１２ｂのそれぞれにＤＮＡコンフィギュレーションを１ずつ保持できる。レジスタシステム１２は、さらに、フォアグラウンドメモリ１２ａおよびバックグラウンドメモリ１２ｂのそれぞれに転送システム１３からＤＮＡコンフィギュレーションを格納する回路１２ｃと、バックグラウンドメモリ１２ｂに格納されたＤＮＡコンフィギュレーションをフォアグラウンドメモリ１２ａに転送する回路１２ｄとを含む。
【００７４】
制御ユニット１５のレジスタシステム１２において、実際に有効になり、各ＰＥ１７の機能（状態、データパス）を制御するのは、フォアグラウンドメモリ１２ａにあるＤＮＡコンフィギュレーションである。有効なＤＮＡコンフィギュレーションは、フォアグラウンドメモリ１２ａ内のインストラクションレジスタ１２ｉを書き換えることで切り替えることができる。インストラクションレジスタ１２ｉへの書き込みは、バックグラウンドメモリ１２ｂのバンクから転送する方法（ダイナミックリコンフィギュレーション）と、メモリマップ上のコントロールレジスタ（ＤＮＡＣＦＧＷ）から直接書き込む方法がある。バックグラウンドメモリ１２ｂからフォアグラウンドメモリ１２ａへは、１クロックで転送でき、１クロックでＰＥ１７の機能を切り換えることができる。
【００７５】
バックグラウンドメモリ１２ｂの２バンクのうち、不要になったバンクに対してＤＮＡコンフィギュレーションをメインメモリからロードできる。このため、ＤＮＡコンフィギュレーション数の実用上の制限はない。フォアグラウンドメモリ１２ａのＤＮＡコンフィギュレーションを切り替えることをダイナミックリコンフィギュレーションと呼び、２つの方法が用意されている。１つは実行中のＤＮＡコンフィギュレーションからＤＡＰ（ＲＩＳＣユニット）２に割り込みを発生させ、ＤＡＰのプログラムで切り替える方法である。もう１つは実行中のＤＮＡコンフィギュレーションを自律的に切り替える方法である。後者の方法を特に、自律ダイナミックリコンフィギュレーションと呼ぶ。
【００７６】
ＤＮＡコンフィギュレーション（コンフィギュレーションデータ）は、各ＰＥ１７の機能をセットする（切り替える、再構成する）ための回路情報、パラメータなどを含む。コンフィギュレーションデータは、さらに、それぞれのＰＥ１７が含まれるデータフロー７０を識別するための情報（データフロー識別情報）であるＥＩＤを含む。実行中の（有効な）ＤＮＡコンフィギュレーションのＥＩＤ５５ｅは、コマンドデコードシステム５５において参照される。コマンドデコードシステム５５は、ＥＩＤのデコーダ５５ｄと、ＰＥの動作をオンオフするためのクロック制御ユニット５５ｓとを含む。上述したように、ストップコマンドＣｓはＥＩＤを示す１６ビットの信号を含む。コマンドデコードシステム５５は、現在有効なＤＮＡコンフィギュレーションのＥＩＤ５５ｅと一致するＥＩＤがストップコマンドＣｓに含まれていれば、クロックを停止して、ＰＥ１７の動作をストップする。たとえば、ＥＩＤ５５ｅが「２」であり、ストップコマンドＣｓのビット２（データの２ビット目）が「１」であれば、ＰＥを停止させる。ストップコマンドＣｓのビット０および２が「１」であれば、ＥＩＤ５５ｅが「０」および「２」のＰＥの動作を停止でき、複数のデータフローを同時に制御できる。
【００７７】
図１５は、ＬＤＢ（ＬＤＢエレメント）の格納領域２９ａに含まれる４つのバンク２９ｘによりメインメモリ（ＤＲＡＭ）１９からＰＥマトリクス１０にデータを入力する様子を示している。デバイス１のＬＤＢは、４バンク構成の格納領域２９ａを備えている。この構成によりＤＲＡＭ１９へのリードレイテンシを隠すことができる。ＬＤＢでは、ＰＥマトリクス１０（マトリクス１０のＰＥ１７またはデータフロー７０）へのデータの読み出しが終わり、格納領域２９ａをバンクスイッチしてからＤＲＡＭ１９への読み出し要求を行なう。
【００７８】
近年のＤＲＡＭ１９の高速化は著しいが、その代償としてアクセスレイテンシが大きくなっている。つまり、リードコマンドの入力からデータの読み出しまでのクロック数が大きくなっている。そのため、２バンク構成の場合、バッファの深さを浅くすると（読み出し量が小さい場合）、バンクスイッチしてからリードリクエストを出していたのでは、リード側のバンクのデータの読み出しも終わってしまい、ＰＥマトリクス１０への入力ができずデータフロー７０が遊んでしまう。これを避けるために、デバイス１ではバンク数を増やし４バンクとしている。バンク数を増やすことにより、ライト側のバンク２９ｘを複数（この例ではライトバンクが３つ）になる。このため、リード側のバンク２９ｘが空になり、リードバンクからライトバンクへバンクスイッチされるのを待たずにＤＲＡＭ１９へリードリクエストを出すことができる。したがって、ＤＲＡＭ１９へのアクセスレイテンシを隠すことができる。
【００７９】
ＤＲＡＭ１９へのアクセスが競合したり、その他の理由により、ＬＤＢのリード側のバンク２９ｘが空になったときにライト側のバンク２９ｘに規定量のデータがロードされていないケースがある。このときは、バンクスイッチ（バンク切り替え）することは適当ではなく、ＬＤＢからのデータの読み出しを停止するか、あるいは、リード側のバンク２９ｘが空になった後に読みだされるデータを無効にすることが望ましい。データフロー型のコンピュータにおいて、データの有効無効を示すために、データ毎にトークンを付与することが知られている。トークンによるデータフローの制御は、データとともにトークンを伝達すればよいので、ハードウェアの構成が容易であり、このデバイス１においても用いられている。しかしながら、トークンだけの制御では、データフローが誤った演算を行う可能性がある。
【００８０】
図１６にその一例を示している。データフローにおいて以下の式（１）の演算を行う場合、図１６に示すように、サイクルｔ（０）にリード側のバンク２９ｘが空になると、５番目に入力されるデータが無効（バブルと呼ぶ）となる。このとき、ケース１のように、Ｙ（ｔ）のデータのトークンに基づき演算を行った場合は無効なデータによる結果は無効として処理される。一方、ケース２のように、Ｙ（ｔ−１）のトークンに基づき演算を行った場合は、有効なデータによる結果に誤りが発生する。Ｙ（ｔ）のトークンとＹ（ｔ−１）のトークンとの両方が有効なときのみ結果が有効であるとすると、有効な演算結果が無効な結果として処理される。したがって、データフローに含まれる演算により有効なトークンを選択するという処理が必要になり、データフローの設計では、それを意識する必要がある。
Ｙ（ｔ）＝Ｙ（ｔ）＋Ｙ（ｔ−１）    ・・・（１）
【００８１】
図１７に、本例のデバイス１においてサイクルｔ（０）にリード側のバンク２９ｘが空になった状態を示している。デバイス１においては、コマンド収集システム６０およびコマンド伝達システム５０により、ＰＥ１７において生成されたフローストップコマンドＣｓは、レジスタ５３にラッチされ、全てのＰＥ１７にフローストップコマンドＣｓが伝達される。ただし、フローストップコマンドＣｓの生成から伝達までに３クロックサイクルを要し、４クロックサイクル後にはすべてのＰＥ１７がコマンドＣｓを参照し（伝達され）、すべてのＰＥ１７がコマンドＣｓにより制御される。
【００８２】
したがって、図１７に示すように、ＬＤＢが、リード側のバンク２９ｘが空になるｔ（０）の４クロックサイクル前のｔ（−４）にコマンドＣｓを出力する。このストップコマンドＣｓにより、データフロー７０とＬＤＢとをストップさせることができる。ＬＤＢは、ロードバッファ２９ａにデータが無いときはストップするのでトークンがないデータ（バブル）は出力されない。さらに、対応するＥＩＤのデータフローも一時停止されるので無効なデータによる処理は行われない。したがって、バブルフリーの環境を提供でき、ユーザはバブルを意識する必要はなく、トークンの選択を意識しなくてもデータフローを設計でき、ＰＥマトリクスにマッピングすることができる。
【００８３】
さらに、デバイス１においては、フローストップコマンドＣｓにより、該当ＥＩＤのＰＥのローカルクロックも停止するので、消費電力も下がる。トークンだけの制御の場合、データフローは停止しないので、無効なデータも演算されているケースが多い。そのために電力が消費され、さらに、メモリあるいはレジスタが無効な演算により不必要に上書きされたりする可能性がある。しかしながら、このデバイス１においては、ＰＥから生成されるフローストップコマンドＣｓによりデータフローを停止することが可能なので、そのような不具合の発生を未然に防止できる。
【００８４】
ＬＤＢ、ＲＡＭなどのエレメントにおいてフローストップコマンドを生成するユニットであるバンクコントロールユニット２９ｂおよびコマンド生成ユニット６９は、さらに、データの数が決まっている場合には、最終のデータを出力するためにフローストップを解除する、あるいは生成しない機能を備えている。ＦＩＦＯとして機能する格納領域２９ａの残容量は最終データを受け付けた後は増えないので、データフローがデッドロックしてしまう可能性があるからである。そのため、ＬＤＢのコマンド生成ユニットであるバンクコントロールユニット２９ｂは、エレメントＣ３２Ｌからのエンドトークンをラッチしておき、そのアドレスのリードデータが帰ってきた場合に、それ以降はフローストップを出すことを解除する機能２９ｄを備えている（図９参照）。この機能２９ｄにより、最終データも問題なくＰＥマトリクス１０に再構成されたデータフローへ出力される。フローストップを解除する別の実施例としては、上記のＣ３２Ｌからのエンドトークンで発生する割り込み要因を受けて、ＤＡＰ２が特定のレジスタを設定し、解除できるようにしておいても良い。
【００８５】
図１８にＬＤＢエレメントにおいて、フローストップコマンドＣｓを生成および出力する構成およびタイミングを示している。バンクスイッチイングにより、ライトバンク２９ｘがリードバンク２９ｘになり、リードバンク２９ｘがライトバンク２９ｘなる。その後、スワップされたリードバンク２９ｘからＰＥマトリクス１０へデータが送出される。データの送出によりリードバンク２９ｘで読み出せる量が、レジスタ１２５に格納された所定のしきい値２９ｔを下回ったときを、コマンド生成ユニットでもあるバンクコントローラ２９ｂが略空状態（オールモストエンプティ、almost empty）ＳＴａｅと判断し、バンクコントローラ２９ｂのフローストップ要求機能２９ｓがフローストップを行なうためにフローストップコマンドＣｓを出力する。しきい値２９ｔは、フローストップ要求機能２９ｓがコマンドＣｓを出力してから、ＬＤＢおよびセグメントにコマンドＣｓが戻ってくるまでのレイテンシに基づいて決定される。
【００８６】
このデバイス１においては、具体的には、フローストップコマンドＣｓが各ＰＥ１７に参照されるようになるのに（到達するのに）３クロックを要し、データフロー７０が停止するまでに４クロックを要する。したがって、コマンドＣｓのレイテンシ（遅れ）が４クロックサイクルであり、格納領域２９ａのリードバンク２９ｘに残ったデータが４クロックサイクル分になった時、すなわち、データｄ４を出したときに略空状態ＳＴａｅと判断し、フローストップコマンドＣｓを出力すればよい。
【００８７】
図１９にフローストップコマンドＣｓを出力し、データフローが停止するまでのタイミングチャートを示している。サイクルｔ（−４）にバンクコントローラ２９ｂがデータｄ４を検出すると、バンクコントローラ２９ｂは略空状態ＳＴａｅを判断する。このＬＤＢエレメントは、ＥＩＤ２のデータフロー７０に属する（データフローにデータを提供している）ので、バンクコントローラ２９ｂはＥＩＤ２のフローストップコマンドＣｓを出力する。
【００８８】
バンクコントローラ２９ｂが出力したフローストップコマンドＣｓ（フローストップ要求）は、第１レベルのコマンド収集マトリクス６１を介して、サイクルｔ（−３）に、コマンド収集システム６０の各セグメントのコマンドレジスタ（ＦＦ）６３によりラッチ（ゲット）される。すなわち、コマンドＣｓがコマンド収集システム６０のレジスタ６３に収集される。
【００８９】
コマンド収集システム６０のレジスタ６３に収集されたコマンドＣｓは、第２レベルのコマンド収集マトリクス６２を介して、サイクルｔ（−２）に、ＳＴＢのコマンド出力ユニット５９の出力レジスタ（ＦＦ）５９ｆによりゲットされる。すなわち、コマンドＣｓがレジスタ５９ｆに収集される。
【００９０】
レジスタ５９ｆに収集されたコマンドＣｓは、第２レベルのコマンド伝達マトリクス５２を介して、サイクルｔ（−１）に、コマンド伝達システム５０の各セグメントのコマンドレジスタ（ＦＦ）５３にゲットされる。すなわち、フローストップコマンドＣｓがレジスタ５３に伝達される。ストップコマンドＣｓは、次のクロックがインバリッドであることを示す。
【００９１】
次のサイクルｔ（０）に、ＥＩＤ２の各ＰＥ１７は、第１レベルのコマンド伝達マトリクス５１を介して、各セグメントのコマンドレジスタ５３のコマンドＣｓを認識し、コマンドＣｓによりストップする。したがって、サイクルｔ（０）に、ＥＩＤ２のデータフロー７０はストップする。
【００９２】
フローストップコマンドＣｓは、発生源のＬＤＢエレメントのバンクコントローラ２９ｂにおいて、ライトバンク２９ｘがフル状態ＳＴｆになり、バンクスイッチが完了してリードバンク２９ｘが切り替わるまで保持される。このケースでは、サイクルｔ（４）にフローストップコマンドＣｓが解除される。
【００９３】
その後、フローストップコマンドＣｓの解除は上記と同様にコマンド収集システム６０およびコマンド伝達システム５０を介してＰＥ１７に認識される。したがって、レジスタ５３のＥＩＤ２のフローストップコマンドＣｓはサイクルｔ（７）に解除される。このため、次のサイクルｔ（８）にＥＩＤ２のデータフローに属する全てのＰＥ１７はストップが解除され、データｄ０から処理を再開する。
【００９４】
サイクルｔ（８）にはバンクスイッチは完了しており、データｄ０に続いてデータｄｎがＬＤＢから供給されるようになっている。このため、バブルが入ることはなく、ＥＩＤ２のデータフロー７０は処理を正常に継続できる。また、サイクルｔ（０）からサイクルｔ（８）の間は、ＥＩＤ２のデータフローに属するＰＥ１７については、クロックを停止できるので、消費電力を削減できる。ＲＡＭエレメントなどは、データの入力または出力などに関して他のＥＩＤの属する処理を行っている場合があり、そのときは完全にはストップせず、電力も消費される可能性がある。
【００９５】
図２０は、フローストップコマンドＣｓを出さずにバンク切り替えを行うケースを示している。ＬＤＢエレメントにおいて、リードバンク２９ｘのデータが略空状態（オールモストエンプティの状態）ＳＴａｅになったとしても、ライト側のバンク２０ｘがすでにフル状態（書き込み済み状態）ＳＴｆであれば、リードバンク２９ｘが空になったときにバンクスイッチ可能である。コマンド生成ユニットとして機能するバンクコントローラ２９ｂは、フローストップを出すことを解除する機能２９ｄを備えており、解除機能２９ｄが動作する。解除機能２９ｄは、サイクルｔ（−４）の略空状態ＳＴａｅに対し、ライトバンク２９ｘがフル（書き込み済み）なのでフローストップは不要であると判断し、略空状態ＳＴａｅを解除する。このため、フローストップコマンドＣｓは出力されない。これにより無用なデータフローの停止を防止できる。
【００９６】
図２１は、最終データに対してフローストップコマンドＣｓを出さないケースを示している。バンクコントローラ２９ｂの解除機能２９ｄは、最終データがリードバンク２９ｘにある場合も動作する。したがって、最終データがリードバンク２９ｘにある場合は、フローストップコマンドＣｓは出力されない。最終データがリードバンク２９ｘにあれば、最終データ以降のデータが、主メモリ（ＤＲＡＭ）１９から読み出されない。したがって、バンクスイッチ（バンク切り替え）は行われない。このため、データフロー７０を停止してしまうと、最終データが読み出されなくなる。解除機能２９ｄは、フローストップコマンドＣｓを出さないことにより、そのような事態を未然に防止できる。
【００９７】
最終データがリードバンク２９ｘにあるか否かは、ＤＲＡＭ１９のリードアドレスを出力するエレメントＣ３２Ｌのエンドトークンのフラグにより判断することができる。解除機能２９ｄは、サイクルｔ（−４）の略空状態ＳＴａｅに対し、エンドトークンフラグがハイ（Ｈ）なのでフローストップは不要であると判断し、略空状態ＳＴａｅを解除する。このため、フローストップコマンドＣｓは出力されない。これにより無用なデータフローの停止を防止できる。
【００９８】
以上では、ＬＤＢエレメントにおいてフローストップコマンドＣｓを出力する場合を例に説明しているが、データフローの中でＦＩＦＯとしての機能を含むＰＥ１７であるＤＬＥエレメントおよびＲＡＭエレメントにおいても同様に上流および／または下流のデータフローを制御できる。たとえば、上流のデータフローのＦＩＦＯとしての機能にセットされたＤＬＥエレメントまたはＲＡＭエレメントにおいて、上流のデータフローの書き込みによりＦＩＦＯがフルになりそうなタイミングで、自身の、または上流のデータフローのＥＩＤに対応する番号のフローストップ要求を出す。この動作により、上流（書き込み側の）のデータフローを止めることができる。これにより、下流のデータフローでは、上流のデータフローの都合を考えず自分の都合の良いタイミングで処理できる。
【００９９】
ＤＬＥエレメントまたはＲＡＭエレメントは、下流のデータフローに対しても、ＦＩＦＯに残存するデータ量により、下流のデータフローのＥＩＤを持ったフローストップ要求（フローストップコマンド）を出す。下流のデータフローにバブルが供給されることを未然に防止できる。また、例えば、読み出し可能かどうかをＰＥ１７のキャリー信号で通知しても良い。キャリーが「１」ならば、ＦＩＦＯに読み出せるデータがあることを示す。下流はこの信号を使い、都合の良いときに読み出しを行うことができる。
【０１００】
このような構造をとることで、ＰＥ１７からフローストップを含むコマンドＣｓを発生させることができ、データフローをＥＩＤで分離し、ＰＥ１７から制御することができる。フローストップなどのコマンドの発生源となるＰＥ１７は、上記に限定されない。たとえば、ＰＥマトリクスの構成されるデータフローの処理で、フィードバック処理があると、複数回、例えば３回に１回しか処理したくないときがある。例えば、読み出し側がフィードバックの処理のため１／３回しか処理しない場合には、同じデータを３回読み出して、見かけ上、１／３回のレートにして処理することが考えられる。しかしながら、上述したＲＡＭ、ＤＬＥに加えて、ＡＬＵなどのデータ入力と判断機能とを備えたＰＥ１７からフローストップコマンドを出力することにより、３回に１回しか処理したくないときは、２サイクルだけ入力側のデータフローを停止できる。このような制御を行うことにより、デバイス１における消費電力を削減することが可能となる。
【０１０１】
このデバイス１においては、ＰＥ１７からフローストップコマンドを出力し、セグメントに関係なく、全てのＰＥ１７を同期して制御することができる。したがって、データフローを識別情報（ＥＩＤ）の単位で分割して制御できる。例えば、リード側のデータフローはリード側の都合で読み出しを行えるようになる。
【０１０２】
セグメント化は、さらに、データフローの設計およびマッピングにおいて有効である。セグメント内においてはタイミング収束が保証されるので、セグメントの範囲内での配置配線の自由度を向上するのに適している。さらに、セグメント化により、信号を送受信するためのバス（ルーティングマトリクス）をセグメント毎に独立して使用することが可能となり、配線の使用効率を向上できるというメリットも得られる。複数のＰＥを複数のセグメントに分けて配置する（セグメント化する）構成は、ＡＬＵなどの機能を含む、均一な、あるいは均一に近い複数のＰＥあるいは論理ブロック（ＬＣＢ）が含む再構成可能なデバイスにおいても導入できる。
【０１０３】
本発明に含まれるルーティングマトリクスは、電気的な配線などの、電気電子的な方法により信号を伝達するルーティングマトリクスに限られない。本発明に含まれるルーティングマトリクスは、光を含めた他の情報伝達方式が適用されるルーティングマトリクスであっても良い。また、本発明に含まれるＰＥの配置およびセグメントの配置は、２次元の縦横の規則的な配列に限定されない。３方あるいは６方などに規則的に複数のＰＥおよびセグメントを配置することも可能である。さらに、多層化などの方法により、ＰＥおよびセグメントを３次元に配置することも可能である。
【図１】
2009096482.tif 000003
【図２】
2009096482.tif 000004
【図３】
2009096482.tif 000005
【図４】
2009096482.tif 000006
【図５】
2009096482.tif 000007
【図６】
2009096482.tif 000008
【図７】
2009096482.tif 000009
【図８】
2009096482.tif 000010
【図９】
2009096482.tif 000011
【図１０】
2009096482.tif 000012
【図１１】
2009096482.tif 000013
【図１２】
2009096482.tif 000014
【図１３】
2009096482.tif 000015
【図１４】
2009096482.tif 000016
【図１５】
2009096482.tif 000017
【図１６】
2009096482.tif 000018
【図１７】
2009096482.tif 000019
【図１８】
2009096482.tif 000020
【図１９】
2009096482.tif 000021
【図２０】
2009096482.tif 000022
【図２１】
2009096482.tif 000023
【国際調査報告】
2009096482.tif 000024
2009096482.tif 000025