(57)【特許請求の範囲】
【請求項１】
演算用のデータと、その演算用のデータの有効無効を示す指示データとを含むデータセットを、複数の演算エレメントにより演算するための回路を構成可能な集積回路装置であって、
当該集積回路装置は、前記複数の演算エレメントと共に回路を構成可能な複数の遅延エレメントを有し、
前記複数の遅延エレメントは、それぞれ、
データセットを順番に、クロックに同期して遅延させた後に出力するための遅延回路と、
前記遅延回路から出力されるデータセットをクロックに同期してセットするための遅延出力レジスタと、
前記遅延出力レジスタの内容を制御する遅延制御回路とを備え、
さらに、前記遅延出力レジスタは、前記指示データを出力する第１の遅延出力レジスタ部と、前記演算用のデータを出力する第２の遅延出力レジスタ部とを含み、
前記遅延制御回路は、前記遅延回路に入力される第１のデータセットの指示データおよび前記遅延回路を経由して出力される第２のデータセットの指示データが共に有効であれば前記第１の遅延出力レジスタ部の指示データを有効として更新し、前記第１のデータセットの指示データおよび前記第２のデータセットの指示データの一方のみが有効であれば前記第１の遅延出力レジスタ部の指示データを無効として更新するように制御し、
前記第１の遅延出力レジスタ部にセットされる指示データが有効であるときに限り前記第２の遅延出力レジスタ部を前記第２のデータセットの演算用のデータをセットすることにより更新し、前記第１の遅延出力レジスタ部にセットされる指示データが無効であれば前記第２の出力遅延レジスタ部を更新せずに直前のデータを保持するように制御する、集積回路装置。
【請求項２】
請求項１において、前記複数の演算エレメントと、前記複数の遅延エレメントとを含む、回路をプログラムにより再構成可能な領域を有し、前記遅延回路は、遅延する時間を前記プログラムにより変更可能である、集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算エレメントを用いてパイプライン方式により演算を行なう回路を構成可能な集積回路装置に関するものである。
【背景技術】
【０００２】
特許文献１には、プログラマブルな複数の演算エレメントと、これら複数の演算エレメントの接続を変更可能なプログラマブルな配線とを有する半導体集積装置が開示されている。複数の演算エレメントは、クロックに同期してデータがセットされる入力側のレジスタと出力側のレジスタとを備えており、演算エレメントにデータが入力されてから出力されるまでのレイテンシが規定される。このため、複数の演算エレメントを配線により接続することによりパイプライン化された回路を簡単に構成することができ、スループットの大きな回路および装置を提供できる。
【特許文献１】国際公開０２／０９５９４６号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
図１に、ＡＳＩＣなどに実装するための通常に設計された回路図と、特許文献１に記載されているようなプログラマブル演算器アレイに構成するために設計された回路図とを示している。特許文献１に記載されているような、演算エレメント単位で演算に要するレイテンシが規定されているようなパイプライン処理に適した構成を固定周波数型プログラマブル演算器アレイと呼ぶことにする。
【０００４】
図１（ａ）および（ｂ）に示した回路は、「Ｙ＝Ａ＋Ｂ＋Ｃ＋Ｄ」という演算を実現するものであり、図１（ａ）は通常の回路設計で、加算器９１を組み合わせて所望の演算を実現する。図１（ｂ）は、固定周波数プログラマブル演算器アレイ上の設計で、加算器１１を内蔵するプロセッシングエレメント（ＰＥ）１０を組み合わせて所望の演算を実現する。ＰＥ１０の中には加算器１１だけでなく、入力側のレジスタ（フリップフロップ）１２および出力側のレジスタ１３も内蔵されている。このため、図１（ａ）と図１（ｂ）は動作タイミングが異なる。図１（ａ）の回路では、入力信号が変化したクロックサイクル内で所定の遅延時間後に出力信号Ｙを得るが、図１（ｂ）の回路では、入力信号が変化してから４クロックサイクル後に出力信号Ｙを得る。
【０００５】
固定周波数プログラマブル演算器アレイ（固定周波数ＰＥアレイ）には、ＰＥ１０のように、クロック信号（サイクル信号）によりデータをセットあるいはラッチするためのレジスタ（フリップフロップ）があらかじめ埋めこまれているため、何か演算を行うたびに何クロックサイクルかの演算遅延（レイテンシ）が生じる。その一方で、パイプライン動作速度（演算スループット）は保証される。固定周波数ＰＥアレイは、ＡＳＩＣやＦＰＧＡなど従来の手法と比べてアプリケーション設計の早い段階でスループットを確定させることができるため、レイテンシよりスループットを重視するような用途に向いている。
【０００６】
さらに、ＰＥアレイの内部でデータが伝播する範囲がサイクル単位で決められるので、データの有効・無効により各演算エレメント１０における処理を制御することができる。例えば、図２に示すように、３２ビットの演算用のデータに加えて、１ビットまたは２ビット程度のデータの有効性を示す指示データ（トークン）をセットにして伝播することにより、データ駆動型の回路を構成することができる。図２に示した例では、データセット１は、３２ビットの演算用のデータ２と、２ビットの指示データ３とを含んでおり、指示データ３の最初のビットはエンドトークン４であり、データ列の最終を示す。指示データ３の次のビットはバリッド・インバリッドトークン（以降ではバリッドトークンあるいはトークン）５であり、演算用データ２の有効無効を示す。
【０００７】
連続的に供給される複数のデータからなるデータストリームをパイプライン方式で処理しようとする場合、そのデータストリームに無効なデータが含まれていても有効な処理結果が得えられることが望ましい。特に、フーリエ変換あるいはラプラス変換などの演算において重ね合わせ演算あるいは畳み込み演算を行なうためのＺ変換が含まれている演算において、一部に無効なデータが含まれていても、有効な演算がなされることが望ましい。
【課題を解決するための手段】
【０００８】
本発明の一態様は、演算用のデータと、その演算用のデータの有効無効を示す指示データとを含むデータセットを、複数の演算エレメントにより演算するための回路を構成可能な集積回路装置である。さらに、この集積回路装置は、複数の遅延エレメントを有し、それぞれの遅延エレメントは、データセットを順番に、クロックに同期して遅延させた後に出力するための遅延回路と、遅延回路から出力されるデータセットをクロックに同期してセットするための遅延出力レジスタと、遅延出力レジスタの内容を制御する遅延制御回路とを備え、遅延出力レジスタは、指示データを出力する第１の遅延出力レジスタ部と、演算用のデータを出力する第２の遅延出力レジスタ部とを含み、遅延制御回路は、遅延回路に入力される第１のデータセットの指示データおよび遅延回路を経由して出力される第２のデータセットの指示データが共に有効であれば第１の遅延出力レジスタ部の指示データを有効として更新し、第１のデータセットの指示データおよび第２のデータセットの指示データの一方のみが有効であれば第１の遅延出力レジスタ部の指示データを無効として更新するように制御し、第１の遅延出力レジスタ部にセットされる指示データが有効であるときに限り第２の遅延出力レジスタ部を第２のデータセットの演算用のデータをセットすることにより更新し、第１の遅延出力レジスタ部にセットされる指示データが無効であれば第２の出力遅延レジスタ部を更新せずに直前のデータを保持するように制御する。
【０００９】
この遅延エレメントを含む集積回路装置は、遅延制御回路により、遅延エレメントに入力されるデータセットが無効である場合は、次のクロックで遅延回路のデータセットの遅延は進まず、遅延出力レジスタの指示データが無効にセットされる。その後、遅延エレメントに入力されるデータセットが有効になれば、次のクロックで遅延出力レジスタに、予定のクロックだけ遅延された演算用のデータがセットされ、その演算用のデータが有効であることを示す指示データがセットされる。したがって、遅延回路に無効な演算用のデータを格納することなく、有効な演算用のデータのみを予定のクロック（サイクル）だけ遅延し、出力できる。また、演算用のデータの有効無効を示す指示データは、遅延させることなく遅延出力レジスタにセットすることにより、遅延出力レジスタの内容が無効であることを示す。したがって、この遅延エレメントは、入力されるデータセットを遅延させてデータセットがパイプラインを伝播するタイミングを調整するのではなく、入力されるデータセットに対応したデータセットを生成（出力）する機能を果たす。このため、無効なデータが入ったデータストリームに対して、有効なデータに対して、予定の時間だけ遅延したデータを生成することが可能となり、データ処理の信頼性を向上でき、Ｚ変換を含むデータ処理の信頼性を向上できる。
【００１０】
したがって、指示データが無効な場合の演算用のデータの内容を、指示データが無効な場合は演算用のデータは変更されないという、パイプライン用のレジスタの処理に合わせることができる。
【００１１】
原則として、遅延回路には無効な演算用のデータはセットされないが、全てのタイミングにおいてそれが保証されるものではなく、有効な演算用のデータを確実に遅延出力レジスタにセットするためには有効である。特に、データ生成用の遅延回路を、パイプライン処理を実現するためのタイミングを調整するための遅延エレメントとして兼用する場合は、有効である。
【００１２】
このため、遅延制御回路は、遅延出力レジスタにセットされる指示データが無効なときは当該遅延出力レジスタの演算用のデータを変更しない回路を含む。入力されるデータセットの指示データが無効であっても、遅延回路の遅延は停止せず、指示データは、演算用のデータと共に遅延回路により遅延して伝播し、遅延出力レジスタにセットされる。そして、指示データが無効なときは、それ以前の演算用のデータの内容が保持され、この遅延エレメントは、パイプライン用の遅延レジスタとしてとして機能する。
【００１３】
これらの演算エレメントおよび遅延エレメントにより固定的な回路を構成してデータ処理することが可能である。さらに、複数の演算エレメントと、複数の遅延エレメントとを含む、回路をプログラムにより再構成可能な領域を有する集積回路装置を提供できる。この集積回路装置においては、遅延回路は、遅延する時間をプログラムにより変更可能であることが望ましい。
【００１５】
パイプライン処理を行うためにレイテンシを調整することを目的とした遅延エレメントであっても１クロックの遅延であれば、指示データが無効なデータセットが入力されたときに遅延した後に出力される演算用のデータは変化しない。したがって、１クロックだけ遅れてデータセットが出力される遅延エレメントと演算エレメントとを組み合わせ、演算エレメントの出力レジスタに、遅延エレメントへ入力されるデータセットの指示データをセットするための回路を構成することにより、上記と同様にＺ変換用の遅延を実現する回路を構成できる。
【発明を実施するための最良の形態】
【００１６】
図面を参照して詳細に説明する。図３に、データ処理装置の一例を示してある。このデータ処理装置２１は、回路を再構成可能な領域２２を備えたプロセッシングユニット（ＰＵ）であり、チップに回路が集積化された集積回路装置である。データ処理装置２１は、再構成可能な領域２２と、この再構成可能な領域２２を再構成する機能を備えたＲＩＳＣなどの汎用プロセッサ（以降ではプロセッサ）２３と、プロセッサ２３のプログラム２４および再構成用のハードウェア情報２５を格納したメモリ２６を備えている。この集積回路装置２１の再構成可能な回路領域２２は、複数のエレメントがアレイまたはマトリクス状に２次元に配置されており、マトリクスと称される構成である。このマトリクス２２は、縦横に２次元に配置された複数のプロセッシングエレメント（ＰＥ）１０と、それらの間に格子状に配置された配線１９と、配線１９の接続ポイントで縦横の配線１９の接続を自由に切り替えることができるスイッチングユニット１８とを備えている。
【００１７】
再構成可能な回路領域（マトリクス）２２を構成するためのＰＥ１０の一例は、ルックアップテーブルなどにより自在に機能を設定可能なものである。この集積回路装置２１のマトリクス２２には、算術論理演算用のエレメント、遅延用のエレメント、メモリ用のエレメント、データを入力または出力するためにアドレスを発生させるエレメント、データの入力または出力用のエレメントなど、特定の機能あるいは処理に適した内部構成のエレメントが配置されている。ある程度の機能グループに分けたエレメントを配置することにより冗長性が減少し、ＡＣ特性および処理速度が向上できる。
【００１８】
マトリクス２２は、３６８個のＰＥ１０を備えており、プロセッサ２３をプログラム制御することにより、プロセッサ２３から、またはメモリ２６から、制御バス２８を介して、各ＰＥ１０に対してコンフィグレーションデータが供給される。このコンフィグレーションデータにより、各々のＰＥ１０の機能と、配線群１９の接続とを制御され、マトリクス２２の内部に、種々のデータフロー（データパス）を自由に構成できる。したがって、マトリクス２２は、ＰＥ１０を含む回路構成をプログラム２４により変更できる。
【００１９】
集積回路装置２１は、マトリクス２２と、外部メモリ６などの外界とを接続し、処理対象のデータを入出力するために、入力バッファ８と、出力バッファ９と、アクセス調停ユニットとして機能するバススイッチングユニット（バスインターフェイス、ＢＳＵ）７とを備えている。バッファ８および９は４つのバッファエレメントをそれぞれ備え、マトリクス２２に構成された回路に対して入出力されるデータにトークンを付してデータを管理する機能を備えている。マトリクス２２に構成された回路に供給されるデータセット１の例は、図２に示したものであり、３２ビットの演算用のデータ２と、２ビットの指示データ３とを含んでいる。指示データ３は、データセット列の終わりを示すエンドトークン４と、データセットの演算用のデータの有効無効を示すバリッド・インバリッドトークン（以降ではバリッドトークンあるいはトークン）５とを含んでいる。
【００２０】
図４は、ＰＥ１０の一例である。このＰＥは、算術演算および論理演算に適した構成の演算用のＰＥ（以降ではＰＥｅ）３０である。ＰＥｅ３０は、機能を変更可能な内部データパス領域３１と、その内部データパス領域３１の機能を設定する制御ユニット５０とを備えている。内部データパス部３１は、配線１９から所望の入力データを抽出するためのシフト回路ＳＨＩＦＴおよびマスク回路ＭＡＳＫと、入力データｄｉｘおよびｄｉｙをクロック信号によりラッチするための入力レジスタ（ＦＦ）３２と、論理演算ユニットＡＬＵ３３およびＬＵ３４と、配線１９に出力する出力データｄｏをクロック信号によりラッチするための出力レジスタ（ＦＦ）３５とを備えている。ＬＵ３４は、２つのＰＥｅ３０を一体の演算ユニットとして利用するための演算ユニットである。
【００２１】
各ＰＥの制御ユニット５０は、プロセッサ２３から制御バス２８を介してコンフィグレーションデータを受信し、内部データパス部３１の構成を制御する。したがって、ＰＥｅ３０においては、制御ユニット５０により、シフト回路ＳＨＩＦＴ、マスク回路ＭＡＳＫ、論理演算ユニットＡＬＵの状態が設定され、各種の算術演算および論理演算を行うことができる。
【００２２】
また、各々のＰＥｅ３０は、データをクロック信号でラッチ（セット）するためのレジスタ３２および３５を備えている。各々のＰＥｅ３０が、入力、出力あるいは演算中のデータをクロック信号でラッチ（セット）するためのレジスタを少なくとも１つ含むことにより、固定周波数ＰＥアレイを提供できる。そして、ＰＥｅ３０における処理の内容が確定すると、入力されたデータが演算されて出力されるまでのレイテンシおよび／またはＰＥｅ３０のレジスタ間のレイテンシが確定する。したがって、複数のＰＥｅ３０を配線１９により接続することによりパイプライン化された回路を簡単に構成することができ、スループットの大きな装置１を提供できる。本例のＰＥｅ３０は、入力データをクロック信号でラッチ（セット）するための入力レジスタ３２と、出力データをクロック信号でラッチ（セット）するための出力レジスタ３５とを備えているが、いずれか一方のレジスタを含むＰＥおよびそれらにより構成されるマトリクスに対して、本発明を適用できる。
【００２３】
このように、集積回路装置２１は、固定周波数ＰＥアレイを備えた装置の一例であり、パイプライン方式で処理を行う回路を簡単に構成でき、スループットを重視した用途に適したものである。一方、固定周波数ＰＥにより回路設計するためには、ＰＥの演算レイテンシを把握して、パイプライン処理を的確に行うためにタイミング調整用のエレメントを挿入する必要がある。
【００２４】
図５に、本例の集積回路装置２１のマトリクス２２に配置されたプロセッシングエレメントＰＥ１０の異なる例を示している。このＰＥは遅延されたデータセットを生成する機能と、データセットが出力されるタイミングを調整する機能とを備えている遅延エレメント（以降ではＰＥｄ）６０である。このＰＥｄ６０も、遅延用の内部データパス部６１と、そのデータパス部６１の構成を制御するための制御ユニット５０を備えている。内部データパス部６１は、データセット１を順番に、クロックに同期して遅延させた後に出力するための遅延回路６２と、この遅延回路６２を制御する遅延制御回路７０と、遅延回路６２から出力されるデータセットをラッチ（セット）するための遅延出力レジスタ６３とを備えている。この遅延回路６２は、１個、２個および４個にグループ化され、シリーズに接続された合計７つの遅延用の３４ビットレジスタ６３と、それぞれのグループをバイパスさせることができるセレクタ６４とを備えている。制御ユニット５０に供給されるコンフィグレーションデータにより、セレクタ６４を切り換えることにより、遅延回路６２は、データセット１を０クロックから７クロックの範囲で遅延して出力できる。したがって、ＰＥｄ６０は、全体としては１クロックから８クロックの範囲で、入力されるデータセット１を遅延して出力することができるプログラマブルな遅延エレメントである。
【００２５】
図６（ａ）は、以下の式（１）により示す演算を通常回路として設計したものである。また、図６（ｂ）は、同じ演算をマトリクス２２に実装するための回路構成である。
Ｙ＝Ａ＋Ｂ＋Ｃ    ・・・（１）
【００２６】
図６（ｂ）では、入力信号ＡおよびＢをＰＥｅ３０ａに入力して足し算し、さらに、その結果と入力信号Ｃを別のＰＥｅ３０ｂに入力して足し算する。ＰＥｅ３０は、演算のための２クロック（サイクル）が費やされる。したがって、それぞれのＰＥｅ３０ａおよび３０ｂの足し算のレイテンシが２クロックであり、ＰＥｅ３０ｂに入力される入力信号Ｃは、同期してマトリクスに入力される他の入力信号ＡおよびＢに対してタイミングを調整する必要がある。このために、入力信号ＣをＰＥｄ６０により２クロックだけ遅延させ、ＰＥｅ３０ｂに入力する。図６（ｂ）に示した回路全体のレイテンシは４クロックになり、出力を得るために４クロックを必要とする。しかしながら、１クロック単位でデータがレジスタ（ＦＦ）にラッチされ、それらがパイプラインレジスタとなるので、１クロック単位でデータを供給して処理できる。このため、スループットの高い回路構成である。
【００２７】
図７（ａ）は、以下の式（２）で示される３タップ平均フィルタの演算を通常回路として設計したものである。ただし、足し算した値を三分の一にはしていない。
Ｙ［ｉ］＝Ａ［ｉ−１］＋Ａ［ｉ］＋Ａ［ｉ＋１］・・（２）
信号線９９ａにＡ［０］、Ａ［１］、Ａ［２］…という具合に次々とデータを投入していくと、データが更新される都度、１つのデータをラッチするレジスタ９２ａにより接続された信号線９９ｂには、信号線９９ａより１つ前のデータが現れる。さらに、同様のレジスタ９２ｂにより接続された信号線９９ｃには、信号線９９ｂよりさらに１つ前のデータが現れる。したがって、信号線９９ａにＡ［ｉ＋１］が投入されているサイクルにおいては、信号線９９ｂはＡ［ｉ］、信号線９９ｃはＡ［ｉ−１］となり、これら３つの信号線の値を加算器９１により足してやれば所望のＹ［ｉ］を得られる。データをクロックサイクル単位で入力する回路であれば、レジスタ９２ａおよび９２ｂは１クロックサイクルの遅延を提供するレジスタ（フリップフロップ）で代用できる。
【００２８】
図７（ｂ）は、式（２）の演算をマトリクス２２に実装するための回路の一例である。１クロックずつ遅延したデータを生成するためのレジスタを、ＰＥｄ６０ａおよび６０ｂに置き換えている。さらに、レイテンシが２クロックの演算を行うＰＥｅ３０ａの出力とのタイミングを調整するために、データを２クロック遅らせるためのＰＥｄ６０ｃを、ＰＥｅ３０ａと並列に挿入している。したがって、固定周波数ＰＥアレイであるマトリクス２２への変換に際して加算器部分に４段のレジスタが追加されてしまうので、４クロックサイクル分の遅延が追加される。すなわち、入力信号にＡ［ｉ＋１］を投入しているサイクルの出力信号は、Ｙ［ｉ］でなくＹ［ｉ−４］（＝Ａ［ｉ−５］＋Ａ［ｉ−４］＋Ａ［ｉ−３］）となる。出力信号のタイミングが変わること自体は、図６に示した回路例と同じである。
【００２９】
図７（ｃ）は、式（２）の演算をマトリクス２２に実装するための回路の他の例である。この回路例では、ＰＥｄ６０ｂとＰＥｄ６０ｃとを合体させて、１つのＰＥｄにより３クロックサイクル分の遅延を供給している。
【００３０】
図８は、クロック単位でデータ列ＤＳ（Ａ［０］、Ａ［１］、Ａ［２］…）が入力されたときのタイミングチャートであり、図７（ｂ）に示す回路の幾つかの信号線Ｆ１〜Ｆ６における値の変化を示している。たとえば、信号線Ｆ１に値「３」を投入するサイクルにおいて、信号線Ｆ２とＦ３はそれぞれ値「２」と値「１」になっている。したがって、演算式（２）の出力は「６」であり、その計算の様子を長円と矢印で示してある。信号線Ｆ１およびＦ２の値の和である値「５」が２クロックサイクル遅れて信号線Ｆ４に現れ、そのとき信号線Ｆ５に値「１」が伝播してきているので両者を足した所望の答え「６」がさらに２クロックサイクル後に信号線Ｆ６に現れる。この計算過程は、出力のタイミングが異なることを除けば、図７（ａ）に示す回路例においても同様である。
【００３１】
図９に、無効なデータを含むデータ列ＤＳが入力されたときのタイミングチャートを示している。このデータ列ＤＳでは、値「４」を投入してから値「５」を投入するまでの間に２サイクルの途切れが生じている。例えば、集積回路装置２１に対する入力信号が一時的に途切れたり、再開したりするケースにおいて発生する。データ列ＤＳの途切れている間は、でたらめな値（無効な値）が投入されていると想定すると、その間は計算結果も無効である。
【００３２】
無効なデータを含むデータ列ＤＳに対して、無効な値を含む計算結果が出力されることは図７（ａ）に示した回路においても同様であり、図７（ａ）に示した回路では、無効な値が含まれていること、あるいは、無効な値がどれであるかを知ることはできない。これに対し、集積回路装置２１のマトリクス２２に配置されたＰＥ１０は、データの有効無効を示すトークン５を含むデータセット１を伝播することにより演算する。例えば、２入力のＰＥｅ３０においては、演算対象となる双方のデータセットのトークン５が有効であるときに、演算用のデータ２が有効であることを示すトークン５が付いたデータセット１を出力する。また、ＰＥｄ６０は、タイミング調整のためにデータセット１を遅延するときはトークン５も含まれている。
【００３３】
たとえば、図７（ｂ）に示した回路において、信号線Ｆ１およびＦ２の値「４」と「３」を足した結果として信号線Ｆ４に２クロックサイクル遅れで値「７」が出力される。その次に、信号線Ｆ４に有効な値が出力されるのは、３サイクル後の値「１１」である。同様に、信号線Ｆ６には、値「９」（７＋２）が出力された後、有効な値が出力されるのは、４サイクル途切れた後の値「１８」（１３＋５）である。このように、無効なデータを含むデータ列ＤＳが入力されても、集積回路装置２１のマトリクス２２に構成された回路は、計算結果の有効無効を区別できる。
【００３４】
しかしながら、図８および図９を比較すると分かるように、信号線Ｆ１には値「５」および値「６」が有効なデータとして供給されているにも関わらず、信号線Ｆ６には、値「９」と値「１８」の間で、値「１２」および値「１５」が有効な計算結果として得られていない。値「１２」および値「１５」が有効な計算結果として得られるようになれば、有効な入力信号に対して、得られるべき計算結果を抜かさずに出力することが可能となる。したがって、無効なデータを含むデータ列ＤＳに対して、有効なデータのみを含むデータ列が入力されたのと同様の計算結果を出力できる回路を提供できる。
【００３５】
図１０に、１つの対策を施した回路におけるタイミングチャートを示している。この例では、マトリクス２２を構成する各ＰＥ１０において、データセット１をラッチするレジスタは、ラッチするデータセット１のトークン５が無効であるならば、レジスタの演算用のデータ２を更新せずに保持する機能を備えている。また、２入力のＰＥｅ３０においては一方のデータセット１のトークン５が有効であれば、出力されるデータセット１に、有効なトークン５を付すようにしている。このような対策により、図１０に示すように、入力データセット１は２サイクル分だけが無効であるにも関わらず、出力データセット１は４サイクル分が無効になる事態を防止できる。さらに、信号線Ｆ６には、値「９」と値「１８」の間に、値「１３」および値「１５」が有効な計算結果として得られる。しかしながら、値「１３」は、演算式（２）によれば値「１２」のはずであり、有効な値として間違った演算結果が伝播することになる。
【００３６】
図１１（ａ）〜（ｄ）に、演算式（１）を集積回路装置２１のマトリクス２２に実装するための異なる回路例を示している。これらの回路例は、Ｐ遅延モードのＰＥｄ６０と、Ｚ遅延モードのＰＥｄ６０とを含んでいる。Ｐ遅延モードのＰＥｄ６０の動作は図１０において説明した通りである。Ｚ遅延モードのＰＥｄ６０は、「Ｚ」の表示と共に、Ｚ遅延させるクロックサイクルをＺの右肩に記載している。Ｚ遅延モードのＰＥｄ６０では、入力されるデータセット１のトークン５が無効であると、その遅延回路６２のサイクルを停止し、遅延出力レジスタ６５に入力されるデータセット１のトークン５をセットする。したがって、トークン５は、１クロックの遅延で出力される。また、トークン５が有効なデータセット１の入力に対して、そのデータセットから所望の時間だけ遅れた演算用のデータ２を含むデータセット１が１クロックの遅れで出力される。
【００３７】
ＰＥｄ６０では、このようなＺ遅延の処理を行うために遅延出力レジスタ６５にトークン５および演算用のデータ２を含むデータセット１をラッチする。したがって、Ｚ遅延モードにおいても、１クロックのＰ遅延が発生し、１クロックのＺ遅延モードを実現するために、１クロックのＰ遅延が付加される。このため、図１１に示した各回路においては、回路全体のレイテンシが６クロックまたは５クロックと大きくなるが、１クロック単位でパイプライン処理する回路であることには変わりはない。したがって、これらの回路のスループットに変わりはない。
【００３８】
図１１（ａ）の回路は、入力されるデータ列ＤＳから演算対象のデータを選択するために、Ｚ遅延が１クロックのＺ遅延モードのＰＥｄ６０ｘおよびＰＥｄ６０ｙをシリーズで接続し、エレメント間のタイミングの調整のためにＰ遅延モードのＰＥｄ６０ａ〜ｄを、タイミング調整の対象のエレメントと並列になるように接続している。図１１（ｂ）の回路は、Ｐ遅延モードの遅延エレメントを最適化した例であり、回路全体のレイテンシを１クロック改善している。
【００３９】
図１１（ｃ）の回路は、入力されるデータ列ＤＳから演算対象のデータを選択するために、Ｚ遅延が１クロックのＺ遅延モードのＰＥｄ６０ｘと、Ｚ遅延が２クロックのＺ遅延モードのＰＥｄ６０ｚとを並列に接続し、タイミング調整のためにＰ遅延モードの２つのＰＥｄ６０ａおよび６０ｂを挿入している。図１１（ｄ）の回路は、さらに最適化した例であり、Ｐ遅延モードのＰＥｄを１つに集約している。
【００４０】
図１２に、クロック単位でデータ列ＤＳが入力されたときのタイミングチャートを示している。このタイミングチャートは、図１１（ｂ）に示す回路の幾つかの信号線Ｆ１〜Ｆ６における値の変化を示している。また、図１１（ａ）から（ｄ）に示す回路においては、２入力のＰＥｅ３０ａおよび３０ｂは、両方のデータセットが有効なときに有効な値を出力する。たとえば、信号線Ｆ１に値「４」が投入されると、最初の足し算を行なうＰＥｅ３０ａの入力側には、１クロック遅れて信号線Ｆ１´に値「４」、信号線Ｆ２に値「３」が現れる。また、次の足し算を行なうＰＥｅ３０ｂの入力側には、値「７」が供給されるタイミングで、信号線Ｆ５に値「３」の前の値「２」が表れ、ＰＥｅ３０ｂからはそれらを演算した後に信号線Ｆ６に所定の値「９」が出力される。
【００４１】
値「４」に続くデータセット１が無効であると、次のクロックで、Ｐ遅延モードのＰＥｄ６０ａの出力である信号線Ｆ１´と、Ｚ遅延モードのＰＥｄ６０ｘの出力である信号線Ｆ２に、無効であることを示すトークン５を含むデータセット１が現れる。ＰＥｄ６０ｘがＰ遅延モードであれば、このクロックで、信号線Ｆ２には、有効な値「４」が出力される。これに対し、Ｚ遅延モードに設定されていることにより、ＰＥｄ６０ｘでは、遅延回路６２が停止し、トークン５がバイパスして出力されるので、信号線Ｆ２には、値「３」の無効なデータセットが出力される。同様に、次のＺ遅延モードのＰＥｄ６０ｂからは、信号線Ｆ２から１クロック遅れたタイミングで値「２」の無効なデータセット１が出力される。
【００４２】
無効なデータセットに続いて値「５」の有効なデータセット１が入力されると、次のクロックで、Ｐ遅延モードのＰＥｄ６０ａの出力である信号線Ｆ１´に有効な値「５」が表れ、Ｚ遅延モードのＰＥｄ６０ｘの出力である信号線Ｆ２に有効な値「４」が現れる。Ｚ遅延モードのＰＥｄ６０ｘにおいては、トークン５がバイパスして遅延出力レジスタ６５にセットされ、遅延回路６２が１クロック分動作するので、値「３」の次の値「４」が遅延出力レジスタ６５にセットされるからである。したがって、これらの入力に対してＰＥｅ３０ａの出力である信号線Ｆ４には有効な値「９」が現れる。
【００４３】
信号線Ｆ２の有効な値「４」に対して、Ｚ遅延モードのＰＥｄ６０ｙの出力である信号線Ｆ３には、次のタイミングで有効な値「３」が現れる。Ｚ遅延モードのＰＥｄ６０ｙにおいては、トークン５がバイパスして遅延出力レジスタ６５にセットされ、遅延回路６２が１クロック分動作するので、値「２」の次の値「３」が遅延出力レジスタ６５にセットされるからである。この有効な値「３」はＰ遅延モードのＰＥｄ６０ｂにより１クロック遅れて伝播され、２番目のＰＥｅ３０ｂの一方の入力の信号線Ｆ５には、他方の入力の信号線Ｆ４の有効な値「９」と同期して有効な値「３」が現れる。その結果、ＰＥｅ３０ｂからはそれらを演算した後に信号線Ｆ６に所定の値「１２」が出力される。したがって、無効なデータを含むデータ列が入力される状態であっても、演算式（２）にしたがった計算結果を、途中の値が抜けることなく出力できる。
【００４４】
図１３に、ＰＥのレイテンシに伴うタイミングのずれを調整するためにデータセットを遅延して出力するモード（Ｐ遅延モード）と、データを生成するために遅延して出力するモード（Ｚ遅延モード）における入力データと出力データのタイミングチャートを示している。図１３（ａ）は、２クロックのＰ遅延モードの入出力であり、データセット１はトークン５も含めて２クロックだけ遅延して出力される。図１３（ｂ）は、理想的な２クロックのＺ遅延の入出力であり、演算用のデータは２クロックだけ遅延して出力され、トークン５は遅延なしで出力される。図１３（ｃ）は、図５に示したＰＥｄ６０におけるＺ遅延モードの入出力であり、遅延出力レジスタ６５を介して出力されるので１クロックのＰ遅延が必ず入る。このため、２クロックのＺ遅延を備えたデータを出力しようとすると、演算用のデータは３クロック遅れて出力され、トークン５は１クロック遅れて出力される。
【００４５】
Ｚ遅延モードのＰＥｄ６０は、Ａ［ｉ］に関する演算を行なうために、Ａ［ｉ］に関連してＡ［ｉ−１］やＡ［ｉ−２］などのデータを生成するレジスタとして機能する。したがって、Ｚ遅延モードのＰＥｄ６０の主な目的は、データストリームのフェーズをずらすことである。したがって、Ｖａｌｉｄトークン５は遅延させず、演算用のデータ２だけを遅延させるのが理想である。そうすれば、たとえば図１３（ｂ）のＩＮ信号とＯＵＴ信号を別の加算器ＰＥに接続して単純に足すだけで、Ａ［ｉ］＋Ａ［ｉ−２］の演算を安全に行うことができる。図１３（ｂ）のタイプの遅延は、主としてデジタル信号処理分野におけるいわゆる「ｚ変換」を行うためのものなので、本明細書においてはＺディレイ（ｚ変換ディレイ）と呼んでいる。
【００４６】
一方、Ｐ遅延モードのＰＥｄ６０は、入出力の間に一定のレイテンシを備えたＰＥｅ３０を用いた回路を構成するために追加されるレジスタとして機能する。すなわち、Ｐ遅延モードのＰＥｄ６０は、演算用のＰＥｅに内蔵されていて選択の余地なく追加されてしまうレジスタによって生じてしまう演算タイミングのずれを解消するために追加する、タイミング調整用のレジスタとして機能し、その主な目的はフェーズをずらさないことである。したがって、図１３（ａ）に示すように、演算用のデータ２もＶａｌｉｄトークン５もひとまとめにして遅延させればよい。図１３（ａ）のタイプの遅延を、本明細書においては、Ｐディレイ（パイプラインディレイ）と呼んでいる。
【００４７】
図５に戻って、遅延エレメントＰＥｄ６０の構成についてさらに詳細に説明する。上述したように、このＰＥｄ６０は入力されたデータセット１を順番に所望のクロックサイクルだけ遅延して出力可能な遅延回路６２と、この遅延回路６２から出力されるデータセット１をラッチするための遅延出力レジスタ６５と、Ｐ遅延モードおよびＺ遅延モードに対応するデータセットを遅延出力レジスタ６５にセットするための遅延制御回路７０とを含む。遅延回路６２はプログラマブルであり、ＰＥｄ６０は、遅延量を含めてエレメント全体の動きを決定する制御ユニット５０をさらに備えている。遅延制御回路７０は、遅延回路６２に入力ｄｉに現れるデータセット１の指示データ３のトークン５が無効なときは遅延回路６２の動作を停止し、入力ｄｉのデータセット１のトークン５を遅延出力レジスタ６５のトークンとしてセットするための回路７１を含む。遅延制御回路７０は、さらに、遅延出力レジスタ６５にセットされるトークン５が無効なときは当該遅延出力レジスタ６５の演算用のデータを変更しない回路に相当する信号線７２をさらに含む。また、遅延制御回路７０は、入力ｄｉのデータセット１のトークン５および遅延回路６２から出力されるデータセットのトークン５の論理積（ＡＮＤ）を遅延出力レジスタ６５のトークン５としてセットするための回路７３をさらに含む。
【００４８】
さらに、遅延制御回路７０は、入力ｄｉのデータセット１のトークン５を、制御ユニット５０からのモード切換信号５５によりマスクする回路７４を含む。回路７４は反転入力付きのＯＲゲートを備えており、モード切換信号５５が「１」のときがＺ遅延モードであり、入力ｄｉのデータセット１のトークン５を、遅延回路６２をバイパスして出力する。モード切換信号５５が「０」のときがＰ遅延モードであり、回路７４から出力されるトークン５の値が「１」になるようにマスクする。さらに、遅延制御回路７０は、指示データ３のエンドトークン４を、Ｚ遅延モードのときに遅延回路６２をバイパスして遅延出力レジスタ６５にセットするための回路７５を備えている。この回路７５はセレクタを含んでおり、モード切換信号５５が「１」のときは、入力ｄｉのデータセット１のエンドトークン４が出力レジスタ６５にセットされ、モード切換信号５５が「０」のときは、遅延回路６２から出力されるデータセット１のエンドトークン４が出力レジスタ６５にセットされる。
【００４９】
制御ユニット５０は、遅延回路６２のセレクタ６４を制御するための３ビットのコンフィグレーション情報５１を出力する。さらに、制御ユニット５０は、ＰＥｄ６０が動作中か否かを表すアクティブ信号５４と、上述したモード切換信号５５とを出力する。アクティブ信号５４は、データセット１の有効無効とは無関係であり、ＰＥｄ６０が動作中は、アクティブ信号５４は常に「１」である。アクティブ信号５４が「１」のときにアンドゲートを含む回路７１において条件が成立すると、遅延回路６２にクロックイネーブル信号５７が供給される。このクロックイネーブル信号５７が「１」のときに、遅延回路６２に含まれる複数のレジスタ６３は、クロックエッジで値を更新する。また、遅延出力レジスタ６５においては、指示データ３をラッチする２ビットのレジスタ６５ａは、アクティブ信号５４が「１」であれば、イネーブル信号５８により、常にクロックエッジで値が更新される。遅延出力レジスタ６５の、演算用のデータ２をラッチする３２ビットのレジスタ６５ｂは、アクティブ信号５４が「１」でアンドゲートを含む回路７３の条件が成立すれば、信号線７２により供給されるイネーブル信号５９が「１」となり、クロックエッジで値が更新される。さらに、図５には図示していないが、同期式リセット信号も存在し、ＰＥｄ６０が動作開始直前に、１サイクルだけリセット信号がアサートされ、ＰＥ内の全てのレジスタが０にクリアされる。
【００５０】
図５に示したＰＥｄ６０の動作を説明する。まず、アクティブ信号５４の働きに注目する。アクティブ信号５４が「０」の場合は、アンドゲートを含む回路７１および７２の出力は「０」となり、プログラマブルな遅延回路６２および遅延出口レジスタ６５に供給される全てのクロックイネーブル信号５７、５８および５９が「０」になる。したがって、クロックエッジにおいてＰＥｄ６０のレジスタは全く更新されない。ＰＥｄ６０は全く動作しない。このため、以降では、アクティブ信号５４が「１」の場合に絞ってＰＥｄ６０の動作を説明する。
【００５１】
モード切換信号５５を「１」（Ｚ遅延モード）とし、プログラマブル遅延回路６２用のコンフィグレーション情報５１を「遅延２」と設定したケースを説明する。図１４が、そのケースのＰＥｄ６０の等価回路である。また、図１５に、図１４の等価回路の信号線Ｆ１１〜Ｆ１８に現れる信号を示している。アクティブ信号５４が「１」であるという前堤のもとで、図１３（ｂ）のＩＮと同じ入力信号を、図１４の信号線Ｆ１１およびＦ１２（トークン）に投入すると、図１５に示すように、各種の中間信号Ｆ１３〜Ｆ１６を経て、遅延出力レジスタ６５から演算用のデータ２が信号線Ｆ１７に表れ、トークン信号５が信号線Ｆ１８に現れる。図１５のＯＵＴ信号は、図１３（ｃ）のＯＵＴ信号になり、入力信号に対して「２データ分のＺディレイ＋１サイクル分のＰディレイ」だけ遅延させた信号となる。したがって、図５に示したＰＥｄ６０は、モード切換信号５５をＺ遅延モードにセットすると、「０〜７データ分のＺディレイ＋１サイクル分のＰディレイ」として使用できる。一方、モード切換信号５５をＰ遅延モードにセットすると、ＰＥｄ６０は、「１〜８データ分のＰディレイ」として使用できる。
【００５２】
図５に示したＰＥｄ６０において、遅延出力レジスタ６５のデータ部分６５ｂのクロックイネーブル信号５９と、トークン部分６５ａのクロックイネーブル信号５８とを分けてあることは重要である。データセット１の指示データ３は、アクティブ信号５４が「１」であれば必ず更新する。一方、データ２は、遅延出口レジスタ６５にセットされるバリッドトークン５の値（トークン信号の次値）が「１」であるときに限り更新する。これは、ＰＥｄ６０の出力のデータセット１を無効にするときは、でたらめな値を出力するのでなく直前の出力データを保持し続ける、という方針を守るために必要なことである。Ｐ遅延モードにおいては、入力信号の発信源が上記方針を守っていると想定すれば、ＰＥｄ自身にこの仕掛けがなくても出力信号が自動的に上記方針を守ることになる。一方、Ｚ遅延モードでは、たとえ入力信号の発信源が上記方針を守っていると想定できたとしても、出力信号で上記方針を守るためにはＰＥｄ６０にこの仕掛けを設ける必要がある。
【００５３】
図５に示した遅延エレメントＰＥｄ６０に対して、Ｚ遅延のみをサポートする遅延エレメントを構成することが可能である。その場合は、遅延回路６２にトークン信号５を投入する代わりに、３ビットカウンタでトークン信号を伝達し、トークン信号を遅延するための７段２ビットのフリップフロップを省くことが可能である。Ｐ遅延と兼用できるようにするためには７段のフリップフロップを設けておくことが望ましい。
【００５４】
図５では、７段のフリップフロップを含む小規模な遅延回路６２を採用しているが、ＲＡＭをベースとする大規模な遅延回路を備えた遅延エレメントを構成することも可能である。そして、同様の制御回路７０により指示データ３と、遅延回路の動作を制御することにより、大規模なＺ遅延対応の遅延エレメントを提供できる。ただし、ＲＡＭベースの大規模遅延エレメントにおいては、単なるＲＡＭの機能を提供するＲＡＭエレメントと比較すると、制御回路に加えてアドレスカウンタ等も追加することになり、制御回路が占める面積は増える傾向になる。しかしながら、ＲＡＭベースのＰＥは、もともとＲＡＭ自体が大きなチップ面積を必要とするので、アドレスカウンタ程度の負担増は相対的に微々たるものである。また、ＲＡＭベースＰＥの場合、Ｚディレイ専用でよければ、ＲＡＭ自体をデータ本体のビット幅を演算用のデータのビット幅、例えば３２ビットに抑えることが可能である。Ｚディレイにおいては、遅延回路に蓄えられるＶａｌｉｄトークン５は必ず「１」なので、Ｖａｌｉｄトークン５をメモリセルに蓄える必要はなく、Ｖａｌｉｄカウンタを設けて数えるだけで事足りるからである。画像処理の分野で多用するラインバッファは、大規模Ｚディレイに相当するため、ＲＡＭベースの大規模ＺディレイＰＥを設けておくことが有効である。
【００５５】
また、図５に示した遅延エレメント６０は、３２ビットの演算用のデータ２を含むデータセット１を取り扱うものであるが、１６ビット、６４ビットの演算用のデータを含むデータセット１を取り扱うためのエレメントを同様の思想で構成することも可能である。また、データセット１の指示データ３は、Ｖａｌｉｄトークン５とＥｎｄトークン４をバンドルさせているが、Ｅｎｄトークン４を省くことも可能である。
【００５６】
さらに、Ｐ遅延専用の遅延エレメントと、演算エレメントとを組み合わせることによりＺ遅延用の回路を構成することが可能である。図１６（ａ）に、その回路の一例を示している。この回路表現（回路イディオム）８０は、遅延エレメント８１と、セレクタＰＥ８５とを含む。遅延エレメント８１は、その等価回路を図１６（ｂ）に示すように、０〜７クロックの遅延を提供する遅延回路８２と、その遅延回路８２から出力される遅延出力レジスタ８３を含むものであり、全体として１〜８クロックのＰ遅延を提供可能なものである。セレクタＰＥ８５は、演算エレメント３０に含まれる機能の１つを用いたものであり、入力データセットをラッチする入力レジスタ８６ａおよび８６ｂと、セレクタ８７と、出力データセットをラッチする出力レジスタ８８とを含む。一方の入力レジスタ８６ａには、遅延エレメント８１に入力されるデータセットがセットされ、他方の入力レジスタ８６ｂには、遅延エレメント８１から出力されるデータセットがセットされる。セレクタ８７は、データセット１のうち、演算用のデータ２については遅延エレメント８１により１クロック遅延された方を選び、トークン５については遅延されていない方を選ぶ。
【００５７】
図１７に、図１６（ａ）に示した回路８０のタイムチャートを示している。入力信号線Ｆ２１に現れる信号と比較し、出力信号線Ｆ２３に現れる信号は、トークンは２サイクルずれており、データは３サイクルずれている。すなわち、この回路８０は、トークン５もデータ２もずらすＰディレイ２つ分と、データだけをずらすＺディレイ１つ分が行われることになる。したがって、この回路８０は、１クロックのＺ遅延と、２クロックのＰ遅延とを提供する。このイディオムにおいては、遅延エレメント８１は「遅延１」と設定する必要があり、回路８０は１クロックのＺ遅延を提供できるだけである。２クロックのＺ遅延が必要な場合は、回路８０を直列に２組使用しなければならず、４クロックのＰ遅延が付随することになる。
【００５８】
図１８は、演算式（２）をマトリクス２２に実装するための、回路８０を含む回路例である。２つの回路８０を用い、さらに、回路８０に含まれる２クロックのＰ遅延を、ＰＥｅ３０ａの２クロックのレイテンシとのタイミング調整のために利用し、最適化している。
【００５９】
Ｐ遅延専用の遅延エレメントと、演算エレメントとを組み合わせることによりＺ遅延用の回路を構成する他の方法は、以下のルールにより回路を構成することである。
ルール１：Ａ［ｉ］＋Ａ［ｉ−１］などサイクルのずれたデータを使って演算するときは、２サイクル以上のずれは不可。
ルール２：出力信号のトークンは最新データ側（Ａ［ｉ］＋Ａ［ｉ−１］の例ならＡ［ｉ］側）に合わせる。
【００６０】
図１９に、演算式（２）を上記のルールにしたがって設計した回路例を示している。図２０は、その回路のタイミングチャートである。図１９に示した回路は、Ｐ遅延を提供する３つの遅延エレメント８１と、加算を行なう２つのＰＥｅ３０ａおよび３０ｂにより構成されている。図２０に示すように、入力信号線Ｆ３１にＡ［ｉ＋１］を投入しているサイクルにおいては、信号線Ｆ３２はＡ［ｉ］、信号線Ｆ３３はＡ［ｉ−１］なので、加算のエレメント３０ａは１サイクルずれの演算を行う。信号線Ｆ３５は２サイクル前の加算結果なので、（Ａ［ｉ−２］＋Ａ［ｉ−３］）であり、トークンはＡ［ｉ−２］である。一方、信号線Ｆ３４は入力信号Ａ［ｉ＋１］の２サイクル前の値Ａ［ｉ−１］である。よって、加算のエレメント３０ｂは、Ａ［ｉ−１］と（Ａ［ｉ−２］＋Ａ［ｉ−３］）の加算を行う。ここで右オペランド（Ａ［ｉ−２］＋Ａ［ｉ−３］）のトークンはＡ［ｉ−２］に合わせられているので、加算のエレメント３０ｂも１サイクルずれの演算を行うことになり、制約を満たす。加算のエレメント３０ｂの出力信号線Ｆ３６は、２サイクル前の加算結果（Ａ［ｉ−３］＋Ａ［ｉ−４］＋Ａ［ｉ−５］）、すなわちＹ［ｉ−４］であり、トークンはＡ［ｉ−３］のタイミングになる。ちなみに、この回路では、信号線Ｆ３３とＦ３４は全く同じであるから、信号線Ｆ３３を加算のエレメント１０８の左オペランドに接続することにより、遅延エレメント８１を１つ削除できる。
【００６１】
図２１に、上記ルールにしたがって（Ａ［ｉ］＋Ａ［ｉ−２］）という演算を行うための回路例を示している。図２２は、その回路のタイミングチャートである。この回路では、入力信号線Ｆ４１にＡ［ｉ］を投入するサイクルにおいては、マスク用のエレメント３０ｃの出力信号線Ｆ４２は２サイクル前の値を０でマスクしたもの（Ａ［ｉ−２］＆０）であり、信号線Ｆ４３は３サイクル前の値（Ａ［ｉ−３］）である。加算のエレメント３０ａはこれら１つずれのデータを足すので制約を満たす。加算のエレメント３０ａの出力信号線Ｆ４４はさらに２サイクル前の和なので（（Ａ［ｉ−４］＆０）＋Ａ［ｉ−５］）であり、トークンはＡ［ｉ−４］に合わせられている。したがって加算のエレメント３０ｂの入力信号のトークンはＡ［ｉ−３］とＡ［ｉ−４］であり、１つずれの制約を満たす。加算のエレメント３０ｂの出力信号線Ｆ４５はさらに２サイクル前の和なので（Ａ［ｉ−５］＋（Ａ［ｉ−６］＆０）＋Ａ［ｉ−７］）であり、すなわちＹ［ｉ−５］である。
【００６２】
この回路は、（Ａ［ｉ］＋（Ａ［ｉ−１］＆０）＋Ａ［ｉ−２］）という計算式に対応する。図２３（ａ）に示すように、図１９の３タップフィルタの回路から出発し、図２３（ｂ）のように「Ａ［ｉ−１］＆０」を行うマスク演算回路を間にはさみ、しかるのちに遅延エレメントの共有や削除を行って最適化する、という手順により図２３（ｃ）の回路を構築できる。
【００６３】
以上に説明したように、集積回路装置２１は、複数のＰＥ１０と、それらＰＥ１０の接続を変更できる配線１９とを含み、パイプライン処理によりスループットの大きな回路を構成でき、さらに、回路構成を変更可能なマトリクス２２を備えている。そして、幾つかの方法により、無効なデータを含むデータストリームに対してＺ遅延を正しくハンドリングできる回路を構成できる。特に、複数のＰＥ１０の１つのタイプとして図５に示す遅延エレメントＰＥｄ６０を含むマトリクス２２は、１クロックからマルチクロックのＺ遅延を簡単に提供できるものである。このため、マトリクス２２に、Ｚ遅延あるいはｚ変換を要する複数のデータが関連する処理回路が構成されたときに、無効なデータが含まれるデータストリームに対して、異常動作せず、無効なデータの影響が有効なデータの計算結果に及ぶことを防止できる。このため、集積回路装置２１は、途中でデータが中断したり、無効なデータが含まれるデータストリームの入力に対して、信頼性の高い演算結果を出力でき、さらにスループットも大きい。ｚ変換は、種々のデータ通信により交換されるデータストリームの圧縮解凍などの処理に用いられるものである。したがって、データ通信を含む処理を行う装置に、この集積回路装置２１を搭載することにより、信頼性の高い処理結果を高速で得ることができる装置を提供できる。
【図面の簡単な説明】
【００６４】
【図１】図１（ａ）は、４つの値の平均の演算を行なう回路の例、図１（ｂ）は、同じ演算をマトリクスに実装するための回路の例を示す。
【図２】データセットの構成を示す。
【図３】集積回路装置の概略構成を示す。
【図４】演算エレメントの一例の構成を示す。
【図５】遅延エレメントの一例の構成を示す。
【図６】図６（ａ）は、３タップフィルタの演算を行なう回路の例、図６（ｂ）は、同じ演算をマトリクスに実装するための回路の例を示す。
【図７】図７（ａ）は、クロックサイクルで入力されるデータ列に対して３タップフィルタの演算を行なう回路の例、図７（ｂ）は、同じ演算をマトリクスに実装するための回路の例、図７（ｃ）は、同じ演算をマトリクスに実装する回路の異なる例。
【図８】図７（ｂ）の回路のタイミングチャート。
【図９】図７（ｂ）の回路のタイミングチャートであり、中断を含むデータ列が入力された例。
【図１０】図７（ｂ）の回路のタイミングチャートであり、Ｐ遅延のみを適用した例。
【図１１】図１１（ａ）は、３タップフィルタの演算を、Ｚ遅延を用いてマトリクスに実装するための回路の例であり、図１１（ｂ）、（ｃ）および（ｄ）は、同様の回路の異なる例。
【図１２】図１１（ｂ）の回路のタイミングチャートであり、中断を含むデータ列が入力された例。
【図１３】図１３（ａ）は、Ｐ遅延のタイミングチャート、図１３（ｂ）は、理想的なＺ遅延のタイミングチャート、図１３（ｃ）は図５に示す遅延エレメントによるＺ遅延のタイミングチャート。
【図１４】２クロックのＺ遅延が設定された遅延エレメントの等価回路。
【図１５】図１４に示す等価回路のタイミングチャート。
【図１６】図１６（ａ）は、Ｐ遅延の遅延エレメントと演算エレメントによりＺ遅延を提供する回路例、図１６（ｂ）は、Ｐ遅延専用の遅延エレメントの等価回路。
【図１７】図１６（ａ）の回路のタイミングチャート。
【図１８】図１６（ａ）を用いた３タップフィルタの回路例。
【図１９】Ｐ遅延の遅延エレメントと演算エレメントによりＺ遅延を提供し、３タップフィルタを構成した回路の異なる例。
【図２０】図１９の回路のタイミングチャート。
【図２１】Ｐ遅延の遅延エレメントと演算エレメントによりＺ遅延を提供した異なる回路の例。
【図２２】図２１の回路のタイミングチャート。
【図２３】図２３（ａ）〜（ｃ）は、図２１に示す回路を設計する過程を示す。
【符号の説明】
【００６５】
１    データセット、  ２    演算用のデータ、
３    指示データ、  ４    エンドトークン、  ５    バリッドトークン（トークン）
１０    処理エレメント
２１    集積回路装置（データ処理装置）、  ２２    マトリクス
３０    演算エレメント、６０    遅延エレメント
【図１】
0004702159.tif 000002
【図２】
0004702159.tif 000003
【図３】
0004702159.tif 000004
【図４】
0004702159.tif 000005
【図５】
0004702159.tif 000006
【図６】
0004702159.tif 000007
【図７】
0004702159.tif 000008
【図８】
0004702159.tif 000009
【図９】
0004702159.tif 000010
【図１０】
0004702159.tif 000011
【図１１】
0004702159.tif 000012
【図１２】
0004702159.tif 000013
【図１３】
0004702159.tif 000014
【図１４】
0004702159.tif 000015
【図１５】
0004702159.tif 000016
【図１６】
0004702159.tif 000017
【図１７】
0004702159.tif 000018
【図１８】
0004702159.tif 000019
【図１９】
0004702159.tif 000020
【図２０】
0004702159.tif 000021
【図２１】
0004702159.tif 000022
【図２２】
0004702159.tif 000023
【図２３】
0004702159.tif 000024