(57)【要約】  リコンフィギュラブルなデータ処理ユニットの複数の固定小数点ユニットのブロックが、該ブロック内に固定実装された共通の同じハードウェアによって、浮動小数点数を効率的に演算する機能を支援する。
2011503733.tif 000002
【特許請求の範囲】
【請求項１】
複数の粗粒度の固定小数点演算ユニットが、各ブロックごとに浮動小数点ユニットを構成するように複数のブロックにまとめられていることを特徴とする、リコンフィギュラブルなデータ処理ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理に関し、とりわけ、浮動小数点数の処理を高速化するために本発明にしたがって拡張されたリコンフィギュラブルなデータ処理ユニットと、データ処理および／またはビットデータ処理方法とに関するが、これらに限定されない。
【０００２】
データ処理方法、ならびに相応の最適化された従来のプロセッサ
リコンフィギュラブルなアーキテクチャとはとりわけ、動作中に多数の機能および／または相互接続を行うことができるモジュール（ＶＰＵ）を指し、とりわけ、実行時間で別のユニットおよび／または要素を妨害せずに可変の要素の多数の機能および／または相互接続を行うことができるモジュールを指すが、このようなモジュールに限定されることはない。このような要素には、算術論理ユニット、ＦＰＧＡ領域、入出力セル、記憶セル、アナログユニット等が含まれる。このようなモジュールは、たとえばＶＰＵという呼称で知られている。このＶＰＵは典型的には、１次元または多次元に配置されＰＡＥと称される算術ユニットおよび／または論理ユニットおよび／またはアナログユニットおよび／または記憶ユニットおよび／または接続ユニットおよび／または周辺通信ユニット（ＩＯ）を含み、これらは相互に直接接続されているか、または１つまたは複数のバスシステムによって接続されている。ＰＡＥは任意の構成、組合せおよび階層で配置され、このように配置されたＰＡＥはＰＡＥアレイまたは略してＰＡと称される。ＰＡＥアレイまたはＰＡＥアレイの一部に、コンフィギュレーションユニット配属させることができる。基本的にはＶＰＵモジュールの他に、たとえばちょうどＦＰＧＡ、ＤＰＧＡ、トランスピュータのような、シストリックアレイ、ニューロネットワーク、マルチプロセッサシステム、複数の演算装置および／または論理セルを備えたプロセッサ、クロスバー回路等の接続ネットワークモジュール等が公知である。本発明による要素、すなわち本願で開示する浮動小数点構成は、たとえば比較的初期のバーテックスシリーズのザイリンクスモジュールおよび／または別のＦＰＧＡないしはＤＳＰないしはプロセッサに容易に組み込むことができる。
【０００３】
同出願人の以下の特許出願ならびにここで挙げられた特許出願に関連する本願出願後の出願に、ＶＰＵ技術の重要な側面が記載されていることを述べておく：
P 44 16 881.0-53, DE 197 81 412.3, DE 197 81 483.2,
DE 196 54 846-2-53, DE 196 54 593.5-53, DE 197 04 044.6-53,
DE 198 80 129.7, DE 198 61 088.2-53, DE 199 80 312.9,
PCT/DE 00/01869, DE 100 36 627.9-33, DE 100 28 397.7,
DE 101 10 530.4, DE 101 11 014.6, PCT/EP 00/10516,
EP 01 102 674.7, DE 102 06 856.9, 60/317,876,
DE 102 02 044.2, DE 101 29 237.6-53, DE 101 39 170.6,
PCT/EP 03/09957, PCT/EP 2004/006547, EP 03 015 015.5,
PCT/EP 2004/009640, PCT/EP 2004/003603, EP 04 013 557.6,
PACT62, PACT68。
【０００４】
開示目的で挙げた上記の文献はとりわけ、アーキテクチャ要素やトリガ手法等の接続関係、コンフィギュレーションおよび構成の特性および詳細の点で組み入れられており、本願発明を限定するためのものではなく、とりわけ、これらの文献に記載された定義等を提示するためのものであることに留意すべきである。
【０００５】
図１に、リコンフィギュラブルなデータ処理ユニットの構成の一例を示す。リコンフィギュラブルなデータ処理ユニットはたとえば、ＦＰＧＡ（たとえばＸＩＬＩＮＸ Ｖｉｒｔｅｘ，ＡＬＴＥＲＡ）またはリコンフィギュラブルプロセッサ（たとえばＰＡＣＴ ＸＰＰ，ＡＭＢＲＩＣ，ＭＡＴＨＳＴＡＲ，ＳＴＲＥＣＨ）またはプロセッサ（たとえばＳＴＲＥＴＣＨＰＲＯＣＥＳＳＯＲ，ＣＲＡＤＬＥ，ＣＬＥＡＲＳＰＥＥＤ，ＩＮＴＥＬ，ＡＭＤ，ＡＲＭ）とすることができる。または、リコンフィギュラブルなデータ処理ユニットをこれらの構成に基づいて構成するか、またはこれらのプロセッサ等に接続することができる。有利には粗粒度でありかつ／または粗粒度／細粒度が混在した、リコンフィギュラブルのデータ処理セル（０１０１）が２次元または多次元のアレイ（０１０３）で配置されている。１つの実施形態では、さらにこのアレイの縁辺にメモリセル（０１０２）が設けられる。有利には各セルの機能を個別に、またはセル群の機能を一緒に、実行時間中に構成することができる。この構成において特に有利には、このコンフィギュレーションおよび／またはリコンフィギュレーションが実行時間中に、再構成すべきでないセルに影響を及ぼすことなく行われる。
【０００６】
これらのセルはネットワーク（０１０４）を介して相互に接続され、該ネットワークも有利には、実行時間中に該ネットワークの接続構造および／またはトポロジが自由に構成可能および／または再構成可能であるように構成されている。この構成において有利には、このコンフィギュレーションおよび／またはリコンフィギュレーションが実行時間中に、再構成すべきでないネットワーク区分に影響を及ぼすことなく行われる。リコンフィギュラブルプロセッサはデータおよび／またはアドレスをＩＯユニット（０１０５）によって周辺装置および／またはメモリと交換する。このＩＯユニット（０１０５）は、アドレス発生器、ＦＩＦＯおよびキャッシュ等を有することができる。
【０００７】
図２に、リコンフィギュラブルセルの構成の一例を示す。このリコンフィギュラブルセルはたとえば、粗粒度のデータ処理セル（０１０１）またはメモリセル（０１０２）または論理処理セル（たとえば、ＦＰＧＡ技術で使用されるようなＬＵＴベースのＣＬＢ等）として具現化することができる。このリコンフィギュラブルセルはネットワーク（０１０４）に接続するための端子を有し、オペランドを該ネットワークから取り出すためのユニット（０１０４ａ）と、該ネットワークに結果を割り込ませるためのユニット（０１０４ｂ）とが設けられるように、この端子は設けられている。セルは水平方向および／または垂直方向にカスケード接続されることにより、上方のセルのバス接続装置（０１０４ｂ）が下方のセルのバス取り出しユニット（０１０４ａ）のバスに接続するようにされる。
【０００８】
セルのコア（０２０１）に、セル機能に応じて異なって構成できるユニットが設けられており、このユニットはたとえば、粗粒度の演算ユニット、メモリ、論理ユニット（ＦＰＧＡ）または固定実装されたＡＳＩＣとして構成することができる。本願明細書において、下記では典型例として、１６ビット幅の粗粒度のＤＳＰユニットおよび／またはプロセッサ状の演算ユニット（ＡＬＵ）を取り上げる。
【０００９】
有利には少なくともこのコア（０２０１）に制御ユニットが所属しており（０２０４）、この制御ユニットはデータ処理のシーケンスを制御し（０２０５）、かつ／または、たとえば繰上げ（ＣＡＲＲＹ）、正負（ＮＥＧＡＴＩＶＥ）、比較値（ＺＥＲＯ、ＧＲＥＡＴＥＲ、ＬＥＳＳ、ＥＱＵＡＬ）等の状態情報（ＴＲＩＧＧＥＲ）を処理し、かつ／または計算のためにコアに転送し（０２０５）、かつ／または該コアから受け取る（０２０５）。制御ユニット（０２０４）はＴＲＩＧＧＥＲをネットワークから取り出し、かつ／または該ネットワークに接続することができる。
【００１０】
１つの実施形態では、上位のネットワークから下位のネットワークへデータを伝送するか（０２０２）または下位のネットワークから上位のネットワークへデータを伝送する（０２０３）ためのユニットがコア（０２０１）に並列に設けられており、有利には側方に設けられている。有利には側方に設けられるユニット（０２０２または／および０２０３）において、有利には、データ転送手段の他にデータ処理手段も設けられ、このデータ処理手段はたとえば、該ユニットによって伝送されるデータフローの算術演算（加算、減算、シフト演算等のＡＬＵ演算）および／またはデータ結合演算を行うために構成されており、たとえば多重化、非多重化、マージ、スワップ、ソート等の結合演算を行うために構成されている。これら双方のユニットは有利には、データ処理機能の他にさらにＴＲＩＧＧＥＲの転送も、たとえばＦＰＧＡのようなルックアップテーブル（ＬＵＴ）によるＴＲＩＧＧＥＲの処理も行えるように構成されている。
【００１１】
以下では、ネットワーク端子が配属されたコアをＣＯＲＥとも称する。ネットワーク端子が配属された側方のユニットは、データ転送が上方から下方へ行われる場合にはＦＲＥＧと称し、ないしはデータ転送が下方から上方へ行われる場合にはＢＲＥＧと称する。
【００１２】
ＣＯＲＥ、ＦＲＥＧおよびＢＲＥＧから成るセルはＰＡＥ（Processing Array Element）と称する。ＣＯＲＥがたとえば演算装置（ＡＬＵ）を有する場合、これはＡＬＵ‐ＰＡＥである。ＣＯＲＥにメモリ（ＲＡＭ）が実装される場合、これはＲＡＭ‐ＰＡＥである。別の任意のＣＯＲＥ実装も可能であり、とりわけ、たとえばＬＰ‐ＰＡＥでのＦＰＧＡ状の論理処理ユニット（Logic Processing＝ＬＰ）が可能である。
【００１３】
有利にはネットワークには、データおよび／またはＴＲＩＧＧＥＲの交換を同期するために同期手段が備えられており、たとえばハンドシェイク線路、トリガ信号転送部が備えられており、特に有利にはマスキング可能なトリガベクトル信号転送部等が備えられている。同出願人のＲＤＹ／ＡＣＫプロトコルも参照されたい。
【００１４】
従来技術のリコンフィギュラブルセルは、個々の信号（ビット）をルックアップテーブル（ＬＵＴ）のようにＦＰＧＡ状に処理するために構成されており、かつ／または粗粒度の演算装置を有する。この粗粒度の演算装置は典型的には、幅が典型的には４〜４８ビットの領域内にある整数値（固定小数点数）を計算する演算装置である。浮動小数点数の面倒な計算はこのようなセルによってサポートされないが、多数のセルの接続をコンフィギュレートすることによって計算することができる。しかし、セルの接続のコンフィギュレートは特に非効率的である。というのも、多数のセルが必要とされ、ネットワークを介して多くのデータを転送しなければならないからである。このことにより電気消費量が上昇し、多数のセルの接続が非効率的であることにより、浮動小数点数の計算のパフォーマンスが格段に低減される。
【００１５】
浮動小数点数演算を個々のセルに実装することは有利でないことが証明されている。というのも、浮動小数点数演算は多くのハードウェア資源を必要とし、さらに、浮動小数点数の幅は典型的な固定小数点値（たとえば１６ビット）より大きいからである（単精度＝３２ビット、倍精度＝６４ビット）。このことにより、バスシステムを浮動小数点数の幅に適合しなければならなくなるが、典型的には固定小数点数の計算の方が行われる頻度が高い場合には、このような幅の適合は特に面積非効率的となる。リコンフィギュラブルのデータ処理装置が主に浮動小数点数の計算に使用される場合であっても、倍精度の浮動小数点数の幅に対してバスシステムを構築するのはなお非効率的である。というのも、実用的にはたいてい、単精度数が使用されるからである。以下では、とりわけバスシステムの使用をより効率的にできる構成を説明する。以下の説明は、固定小数点数に対して最適化されたＰＡＥの粒度に基づいているが、本発明は、単精度数に対して最適化されたＰＡＥに適用することができ、とりわけ、複数の個々のＰＡＥが同時に、複数の固定小数点数の計算をそれぞれＳＩＭＤのように計算するために構成されている場合に適用することができる。
【００１６】
本発明は、リソース効率およびパフォーマンス効率が高い最適化された浮動小数点処理の具現化を開示する。
【００１７】
本発明の課題は、産業的に利用するための新規のものを提供することである。
【図面の簡単な説明】
【００１８】
【図１】リコンフィギュラブルなデータ処理ユニットの構成の一例を示す。
【図２】リコンフィギュラブルセルの構成の一例を示す。
【図３】本発明の構成の一例を示す。
【図４ａ】図３中に示された有利な構成を再度示す。
【図４ｂ】ＡＬＵ‐ＰＡＥの浮動小数点データフォーマットと固定小数点フォーマットとのマッピングを示す。
【図４ｃ】一例として、浮動小数点演算装置における複数の異なるエラー状態（イベント）の結合を示す。
【図５】同出願人の１６ビットのＸＰＰ‐III アーキテクチャが、ＳＩＭＤ機能を有する３２ビットに拡張された構成を示す。
【図６】本発明のＢＰＵの別の実施形態を示す。
【図７】図６に示された本発明のＢＰＵを同出願人のＶＰＵアーキテクチャに組み込む一例を示す。
【００１９】
図３に本発明の構成の一例を示す。この構成はこの例では４つのＡＬＵ‐ＰＡＥ（ＡＬＵ‐ＰＡＥ１〜ＡＬＵ‐ＰＡＥ４）から構成され、各ＡＬＵ‐ＰＡＥもまた、ＦＲＥＧ、ＢＲＥＧおよびＣＯＲＥから構成されている（｛ＦＲＥＧ１，ＢＲＥＧ１，ＣＯＲＥ１｝，｛ＦＲＥＧ２，ＢＲＥＧ２，ＣＯＲＥ２｝・・・）。この実施例では、個々のデータワードは１６ビット幅であるから、バスは１６ビット幅であり、ＦＲＥＧ、ＢＲＥＧおよびＣＯＲＥのオペランドおよび結果は１６ビットであるか、または乗算結果が３２ビットとなる。（ここでは本願の開示のために、たとえば同期信号、トリガ信号、トリガ情報等を一緒に転送できるようにするためにデータバスの幅をデータワードより大きくできることは考慮しない。その他の点で、別個の同期ネットワークおよび／またはトリガネットワークないしは同期線路および／またはトリガ線路を設けられること、かつ／または、これらを構成するための回路手段、たとえばこれらをリコンフィギュラブルに構成するための回路手段を設けられることを述べておく）。ｗは、ＡＬＵ‐ＰＡＥで計算できる固定小数点数の幅（たとえば１６ビット）であり、ｐは、実装すべき浮動小数点ユニットの幅（たとえば、単精度ではｐ＝３２であり、倍精度ではｐ＝６４）であるとする。
【００２０】
ＡＬＵ‐ＰＡＥは典型的には、少なくとも２つのオペランド入力側ＡおよびＢを有する。これらのオペランド入力側の幅は典型的には、計算できる固定小数点数の幅に相応するが、必ずしもこの固定小数点数の幅に相応する必要はない。
【００２１】
複数のＡＬＵ‐ＰＡＥがまとめられて新たな階層（Ｂｏｘ）が構成され、これらの複数のＡＬＵ‐ＰＡＥは、新たな階層のＡｆｉｘオペランド入力側の幅とＢｆｉｘオペランド入力側の幅との和が、浮動小数点ユニットのオペランドＡｆｌｏａｔないしはＢｆｌｏａｔの所要幅に相応するようにまとめられる。換言すると、以下の関係式が成り立つ。
【００２２】
ｎ＝幅（Ａｆｌｏａｔ）／幅（Ａｉｎｔ）
したがって、幅（Ａｆｌｏａｔ）＝Σ（Ａｉｎｔ［０〜ｎ］）
ないしは
ｎ＝ｐ／ｗ  したがってｐ＝Σｗ［０〜ｎ］。
【００２３】
このようにして、この新たな階層（Ｂｏｘ）内に幅Ａｆｌｏａｔ＝ｐの浮動小数点演算ユニットが具現化される。このことにより、以下の利点が得られる。
【００２４】
１．浮動小数点演算ユニットの資源がｎ個の固定小数点演算ユニット（ＡＬＵ‐ＰＡＥ）に分配される。典型的な用途では、必要とされる浮動小数点演算数が固定小数点演算より少ないので、このように固定小数点演算ユニットに分配させることにより、最適なリソースの使用比率が十分に理想的になる。
【００２５】
２．１つの浮動小数点接続にまとめられる固定小数点数ネットワーク接続の数を多くすることにより、固定小数点ユニット（ＡＬＵ‐ＰＡＥ）の幅のために実装された固定小数点数ネットワークを変更無しで浮動小数点数に適用することができる。
【００２６】
図３に、４つのＡＬＵ‐ＰＡＥ（ＡＬＵ‐ＰＡＥ１＝｛ＦＲＥＧ１，ＣＯＲＥ１，ＢＲＥＧ１｝，ＡＬＵ‐ＰＡＥ２＝｛ＦＲＥＧ２，ＣＯＲＥ２，ＢＲＥＧ２｝・・・）から成る本発明の構成を示す。２つのＡＬＵ‐ＰＡＥであるＡＬＵ‐ＰＡＥ１およびＡＬＵ‐ＰＡＥ２から成る第１のボックスには付加的に、単精度浮動小数点演算装置（０３０１）が実装される。この付加的な浮動小数点演算装置は、従来のアレイ要素には設けられていない。またこの付加的な浮動小数点演算装置は、既存の回路を単純に構築して組み立てられるのではなく、むしろ、付加的な浮動小数点演算手段の動作のためだけに設けられる回路要素が使用される。しかしこの回路要素は、単独では使用することができない回路要素である。すなわち、浮動小数点演算装置の専用の付加的なハードウェア無しでは決して浮動小数点演算に良好に使用することができない回路要素である。０４０１はＡＬＵ‐ＰＡＥ１およびＡＬＵ‐ＰＡＥ２の入力側をオペランド入力側として使用し、両ＡＬＵの出力側を結果出力側として使用する。浮動小数点数の数値フォーマット（この実施例では３２ビット）は、まとめられた複数の（この実施例では２つの）固定小数点バスを介して（この実施例では１６ビットで）伝送される。
【００２７】
第２のボックス（ＤＯＵＢＬＥ２）では、‐ＤＯＵＢＬＥ１で説明したのと同様に‐、ＡＬＵ‐ＰＡＥであるＡＬＵ‐ＰＡＥ３とＡＬＵ‐ＰＡＥ４とがまとめられて別の単精度浮動小数点演算装置を構成する（０３０２）。すなわち、別の付加的な浮動小数点演算装置が設けられる。
【００２８】
さらに、ボックスＤＯＵＢＬＥ１およびＤＯＵＢＬＥ２から成る第３のボックス（ＱＵＡＤ）が形成される。このボックスは４つのＡＬＵ‐ＰＡＥから構成され、（この実施例では）オペランドＡおよびＢに対してそれぞれ４×１６ビット＝６４ビットの入力側を有し、その結果に対して該入力側のビット数に相応する数の出力側を有する。オペランド入力側および結果出力側の幅は、ＱＵＡＤ内で６４ビット倍精度の浮動小数点演算装置を具現化するのに十分になる。こうするためには、‐本発明では上記の実施例においてボックス内にすでに付加的にハードウェア実装されている上記２つの単精度計算装置の他に‐倍精度計算装置として構成される別の付加的な浮動小数点演算装置が設けられる。インタリーブは必ずしも必要というわけではないことに留意されたい。もっぱら倍精度計算装置のみが必要であることが事前に分かっている場合には、場合によっては２つの単精度計算装置を個々のボックスに設けることなく、直接、もっぱら１つの倍精度計算装置のみを設けることもできる。逆のこともあり得る。セルフィールド内に混合形態を設けることもできる。有利にはとりわけ、ローごとおよび／またはカラムごとに浮動小数点演算装置（Floating Point Unit）を設ける。
【００２９】
図３に、図１に示したリコンフィギュラブルデータ処理ユニットの一部分のみを示す。同図に示した構造は、データ処理ユニット全体にわたってスケーリングすることができる。すなわち、データ処理ユニットのすべてのＰＡＥを適切に複数のボックスにまとめることができる。さらに、実用的に必要とされる浮動点パフォーマンスが比較的低い場合には、データ処理ユニットの一部のみが本発明の浮動小数点構造を有する構成も可能である。この構成は有利にはカラムごとに行われる。すなわち、ＰＡＥはカラムに適切にまとめられる。
【００３０】
浮動小数点演算装置に状態マシンを配属することは必ずしも必要というわけではないが、このことは可能である。しかし、状態マシンが特に有利なのは、ルート計算および／または除算等の反復が典型的に必要であるか、または必要になる可能性がある場合である。このような場合、浮動小数点演算装置または少なくともその一部は、有利にはレジスタを有するか、または別のメモリアクセス手段を有し、たとえば、関数（三角関数および／または別の関数）のためのルックアップテーブルを格納することができるアレイ内の記憶素子にアクセスすることにより、しかもコンフィギュラブル形態および／または固定組み込みで設けられている。とりわけ、すべてまたは１つの浮動小数点演算装置を繰り返して設ける場合、および／または、すべてまたは１つの浮動小数点演算装置を異なって使用する場合、とりわけシーケンサのように使用する場合にはさらに、かつ／または付加的に、オペランド出力側からオペランド入力側へフィードバックを設けるのが有利である。なお、すべてまたは１つの浮動小数点演算装置をこのように設けたり使用することだけに限定されることはない。場合によっては、状態信号をフィードバックすることも可能であることを述べておく。
【００３１】
図４ａでは概観しやすくするため、図３中に示され明確に有利な構成を再度示し、また、ＤＯＵＢＬＥボックスおよびＱＵＡＤボックスも示している。
【００３２】
図４ｂに、ＡＬＵ‐ＰＡＥの浮動小数点データフォーマットと固定小数点フォーマットとのマッピングを示す。同図では４つのＡＬＵ‐ＰＡＥ（０４１０）と、４つの１６ビットのワードフォーマット（０４１１）とを示す。その下に（０４１１）、２つの３２ビットの浮動小数点数のワード幅を示しており、その下方に（０４１２）に３２ビット浮動小数点数のワード幅を示す。
【００３３】
０４１４は２つの３２ビット単精度浮動小数点数のマッピングを示し、０４１５は、６４ビット倍精度浮動小数点数に対応する相応のマッピングを示す。ｓは正負符号を示す（Ｓｉｇｎ）。
【００３４】
重要な問題は、たとえばオーバーフロー、アンダーフロー、０および誤った数値表現（Not a Number＝ＮａＮ）で割る除算等のエラー信号をどのように処理するかである。典型的には浮動小数点演算装置を１つだけ有するプロセッサでは、典型的には、エラーの発生を表示するための割込み（interrupt）がトリガされる。多数の浮動小数点演算装置を任意の配置、トポロジおよび順番でネットワークによって接続できるデータフローアーキテクチャでは、割込みのトリガないしはエラー原因の検出を行うのは容易ではない。
【００３５】
使用領域に応じて本発明では、以下の方法および構造を使用する。下記に挙げる実施形態が有利であることが明らかであっても、これらの実施形態を実施する必要はなく、とりわけこれらの実施形態をすべて実施しなければならないわけではない。
【００３６】
Ａ）すべての浮動小数点演算装置のエラー表示を線路網に接続し、該線路網は上位のユニットに対してエラーの発生を表示する。このことは、結果を処理する上位のユニットにおいて割込みをトリガすることによって行うことができる。各浮動小数点演算装置がこの発生したエラー状態を記憶する。すなわちたとえば、オーバーフロー、アンダーフロー、０および誤った数値表現（Not a Number＝ＮａＮ）で割る除算を記憶する。このメモリに、結果を処理する上位のユニットが問い合わせることができ、典型的には常時問い合わせることができ、有利には、エラー識別に対する応答で問い合わせることができる。エラー関連の情報を受動的に得る代わりに、択一的および／または付加的に、能動的に関連箇所に伝送できることも述べておく。この問い合わせはたとえばＪＴＡＧによって行うことができ、とりわけ、上位または外部のユニットで実行されるデバッグソフトウェアがエラー状態を問い合わせることができる。
【００３７】
Ｂ）それに対する択一的方法は、リコンフィギュラブルデータ処理ユニット内においてエラー信号（たとえばオーバーフロー、アンダーフロー、０および誤った数値表現（Not a Number＝ＮａＮ）による除算）をＴＲＩＧＧＥＲネットワークに接続する方法である。ＴＲＩＧＧＥＲネットワークはこのエラー信号を、次にデータを処理する浮動小数点演算装置へ転送し、該浮動小数点演算装置は入力されたこのエラー信号を、たとえば固有の計算装置に発生したエラーとＯＲ結合し、ＴＲＩＧＧＥＲネットワーク上でデータと一緒に転送する。したがってこの方法では、データネットワーク上で伝送される‐有利にはすべての‐浮動小数点データワードとともに、エラー識別結果をＴＲＩＧＧＥＲネットワーク上で同時に伝送する。このことをすべてのネットワーク接続で実施する必要はなく、用途に依存して、データ接続のうち少なくとも幾つかでこのような転送を行うだけで十分である。さらに、リコンフィギュラブルデータ処理ユニットの（有利には）すべての生成された演算結果とともに、該演算結果が適正であるかまたはエラーであることを示すエラー状態が出力される。誤った結果が発生した場合には、同様に、該結果をさらに処理する上位のユニットにおいて割込みを生成し、かつ／または、結果のエラー状態を、該結果を処理する上位のユニットが問い合わせることができる。
【００３８】
方法Ａ）と同様に、各浮動小数点演算装置がこの発生したエラー状態を記憶することができる。すなわちたとえば、オーバーフロー、アンダーフロー、０および誤った数値表現（Not a Number＝ＮａＮ）で割る除算を記憶することができる。このメモリに上位のユニットが常時問い合わせることができ、有利には、エラーであると識別された結果の発生に対する応答で問い合わせることができる。このような問い合わせはたとえばＪＴＡＧによって行うことができ、とりわけ、上位または外部のユニットで実行されるデバッグソフトウェアがエラー状態を問い合わせることができる。
【００３９】
図４ｃに一例として、浮動小数点演算装置における複数の異なるエラー状態（イベント）の結合を示す。内部に発生したエラーは、各オペランド（たとえばＡおよびＢ）のその時点で入力されたエラー信号と結合され、結果とともに転送される。
【００４０】
アーキテクチャの使用領域に応じて、倍精度浮動点数ないしは多倍精度浮動点数を計算するため、または、ＳＩＭＤごとに２つのシングル（ないしはマルチプル‐ハーフ）浮動点数を計算するためには、２つの単精度浮動小数点演算装置および／または１つの倍精度浮動小数点演算装置を具現化する代わりに、ＱＵＡＤあたり１つまたは複数のＳＩＭＤ浮動小数点演算装置を具現化するのが有利である場合がある。このことに関しては、Libo Huang, Li Shen, Kaui Dai, Zhiying Wang による "A New Archtecture For Multiple-Precision Floating-Point Multiply-Add Fused Unit Design"，School of Computer, National University of Defense Technology, Changsha, 410073, P.R.China を引用する。この文献の記載内容はすべて、本願の開示内容に含まれるものとする。浮動小数点演算装置の機能範囲に関しては、浮動小数点演算装置を乗算、加算および減算のために構成され、有利にはルート計算および除算のためにも構成するだけで十分である。しかし、より複雑な演算装置で別の関数を実装することは排除されず、またたとえば、とりわけ＞、＜、＝、＞０、＜０、＝０等の比較関数や、とりわけ、たとえば倍精度から整数への変換等のフォーマット変換機能も実装することを排除することもない。
【００４１】
さらに幾つかの使用領域では、複数のＰＡＥをまとめてＤＯＵＢＬＥを構成する代わりに、１つのＰＡＥ内で処理幅を拡大してバス幅も拡大し、幅全体の計算を実行するかまたは比較的小さい幅の複数の計算を同時実行できるように、ＰＡＥ内の固定小数点演算装置をＳＩＭＤ演算装置として構成することも有利であり、たとえば、１つの３２ビット計算を実行するか、または２つの１６ビット計算を同時に行うか、または１つの１６ビット計算と２つの８ビット計算とを同時に実行するか、または４つの８ビット計算を同時に実行できるようにすることができる。
【００４２】
このことに関しては図５を参照されたい。同図では同出願人の１６ビットのＸＰＰ‐III アーキテクチャが、ＳＩＭＤ機能を有する３２ビットに拡張されており、このことによって各ＡＬＵ‐ＰＡＥが単精度浮動小数点計算も実行することができる。
【００４３】
さらにこの方法では、ＡＬＵ‐ＰＡＥをまとめて処理幅を拡大することもでき、たとえば、２つの３２ビットＳＩＭＤ／単精度ＡＬＵ‐ＰＡＥによって６４ビット倍精度ＤＯＵＢＬＥ（以前はＱＵＡＤ）を構成することができる。
【００４４】
有利には浮動小数点演算装置は、該浮動小数点演算装置が高い周波数で動作できるようにするための１つまたは複数の内部レジスタ段、いわゆるパイプライン段を有する。このことはとりわけ、同出願人の PACT XPP Technologie のデータフローアーキテクチャのようなデータフローアーキテクチャで非常に有利である。というのも、このようなアーキテクチャでは典型的には、パイプラインストールが無いかまたはごく僅かであるからだ。さらに、このプロセッサモデルはコンフィギュレーション内のループを十分に回避するので、パイプラインを使用する際のパフォーマンスに悪影響を及ぼすフィードバック作用が生じない。このことに関してはとりわけ、同出願人のコンパイラ関連の特許出願を参照されたい。この特許出願の記載内容はすべて、本願の開示内容に含まれるものとする。
【００４５】
ここで、上記の有利な実施形態では、いずれにせよ必要とされるバス構造ないしは線路構造が、組み込まれたアレイ回路に設けられ、有利にはボックスの出力側に設けられ、有利には、従来の演算装置からの出力信号すなわち固定小数点演算装置からの出力信号と浮動小数点演算装置からの出力信号とを択一的にバスまたは別の出力要素に接続するためのボックスマルチプレクサの出力側に設けられることに留意されたい。このようなボックスマルチプレクサではこれらの出力信号は、たとえばメモリやＩ／Ｏポート等に接続される。１つの有利な実施形態では、このマルチプレクサは個別セル内の整数演算装置から供給されるか、または２つの個別セルを組み合わせたボックスの単精度浮動小数点演算装置から供給されるか、または１つのダブルボックスの倍精度演算装置から供給される。データの他に、適切なトリガ信号および／または同期信号および／または制御信号も一緒に多重化できることを述べておく。
【００４６】
本発明の別の対象は、ブール演算（ＢＰＵ Bit Processing Unit）を処理するための効率的なユニットである。実用的にはたとえば、以下の計算がこのようなユニットに特に重要である：
状態マシン（state machine）の具現化
符号化器および復号化器の具現化
たとえばＤＥＳ／３ＤＥＳで必要とされるような、ビットレベルでの置換の実行
たとえば擬似ノイズ発生器等のシリアルビット算術の実装
【００４７】
たとえばＡＬＵ等の粗粒度の演算装置は、例として挙げた用途には不向きである。というのも、個々のビットを計算するのに必要とされる演算ステップが非常に多くなり、それと同時に、幅が大きいデータワード（たとえば１６ビット）のうち実際に使用されるのは数ビットだけであることが多く、典型的なケースでは１ビットのみになることも多いからである。
【００４８】
従来技術のＦＰＧＡ技術（たとえばザイリンクス社、アルテラ社）は確かに、例として挙げたすべての関数を実行できるが、所要面積、コンフィギュレーションビット数および電気消費量に対する効率は比較的低い。
【００４９】
本発明のＢＰＵの構成は、どちらかというとロジックネットワークに任意に使用できることを目的にしておらず、特に以下の機能に特化される：
１．状態マシンの構成
２．カウンタおよびシフタの構成
３．（たとえばＤＥＳのための）ビット置換器の構成
４．条件付きマルチプレクサの構成
５．（たとえば擬似ノイズ発生器のための）高密度かつ高効率のビットシリアル演算の構築
【００５０】
本発明で第一に重要な観点は、高密度かつ高効率のビットシリアル演算を実行するためのハードウェア要素の実装である。
【００５１】
とりわけ、条件付きマルチプレクサをハードウェアで直接サポートすることも、本発明の別の重要な観点であると見られる。たとえば任意のビット置換、ビット抽出またはビット組み合わせを行うために任意の多重化機能をビットレベルで保証することの特別な重要性の他に、各任意の組合せネットワークをマルチプレクサに構成することもできる。Verilog または VHDL 等のハードウェア設計言語（ＨＤＬ）は基本的に、条件付き多重化演算を使用することをベースとする。この条件付き多重化演算は、合成ツールによってゲートネットワークリストに転換される。
【００５２】
下記で説明するアーキテクチャによって、ＨＤＬ構成のシミュレートをより簡単かつより迅速にすることができる。それに対し、ＦＰＧＡアーキテクチャのための従来技術の合成ツールの実行時間は数時間から数日にまで及ぶので、シミュレートをより迅速に行えるようになることは著しく有利である。
【００５３】
とりわけＨＤＬは、プログラマによってより最適に記述することができる。というのもプログラマは、その基礎となるハードウェアを簡単かつ根本的に理解できるので、コード、算術／アーキテクチャおよび実装を格段に良好に最適化できるからである。確かに、従来技術の合成ツールではたいてい、実に良好な自動最適化技術を実現することができるが、このような自動最適化技術はしばしば、特に脆弱かつ重要なコード箇所で動作不全になることが多い。それと同時に、このような合成ツールはハードウェアにどのような影響も直接及ぼすことができるので、最適な具現化はほとんど不可能であることが多い。
【００５４】
条件付きマルチプレクサはＨＤＬにおいて典型的な構成であり、それと同時に、複雑なロジックを表す基本的なモデルも形成する：
var1 = if (bool_func1) ? (bool_func2): (bool_func3)ブール関数 bool_func1 が真である場合、変数ｖａｒ１にブール関数 bool_func2 が割り当てられ、そうでない場合には bool_func3 が割り当てられる。
【００５５】
本発明では論理処理ユニットは、bool_func1 の論理的真理ないしは論理値を評価する比較器を有する。この論理的真理ないしは論理値の評価は有利には、通常の高速比較器によって行われ、この比較器はたとえば、ＸＯＲゲートを結合して構成される。この評価の結果（ＴＲＵＥ／ＦＡＬＳＥ <=> １／０）は１つまたは複数のマルチプレクサへ転送され、該１つまたは複数のマルチプレクサは結果に応じて（ＴＲＵＥ＝１である場合）bool_func2 を出力ｖａｒ１に接続するか、または（ＦＡＬＳＥ＝０である場合）bool_func3 を接続する。ここではマルチプレクサは１ビット幅であるかまたは複数ビット幅であり、有利にはハードウェア実装によって、最適な混合形態を実施することができる。
【００５６】
さらに有利には、ハードウェア実装によって、マルチプレクサの前に簡単な論理結合（ブール関数）を行うための手段を設ける。たとえば、各マルチプレクサ入力側より前に、２つの入力信号を任意にブール結合するかまたは２つの入力信号のうち１つのみを直接転送するための２重ルックアップテーブルを具現化することができる。
【００５７】
図６に、本発明のＢＰＵの別の実施形態を示す。同図では、コンフィギュレート可能な論理フィールド（フィールドプログラマブルゲートアレイ、ＦＰＧＡ）の４×４の抜粋を示す。各ゲートは３入力３出力ルックアップテーブル（ＬＵＴ、０６０１）を基礎とし、このルックアップテーブルは、３つの各出力側ごとに独立したルックアップ関数を３つすべての入力すべてに基づいて計算する。従来技術のＦＰＧＡと対照的に、個々のセルはレジスタ機能を有さず、複数のセル（この実施例では４×４行列）から成るセットに対してレジスタが側縁において配属されている（この実施例では南側および東側の側縁）。ＬＵＴ（０６０２）の側縁の各出力側にレジスタ（０６０３）がコンフィギュレート可能に配属されており、該レジスタ（０６０３）は、出力信号をレジスタ遅延して転送するためにオンされるか、または該レジスタをマルチプレクサ機能によって迂回することができる。このレジスタを迂回することは、出力信号を遅延無しで転送することに相応する。
【００５８】
ＬＵＴは上位のバスシステムから入力信号を受け取り、この入力信号の受け取りはマルチプレクサによってコンフィギュレートすることができる（０６０４）。さらに、レジスタ値（ｆ［０．．２］［０．．２］）をＬＵＴ入力側にフィードバックすることもできる。このフィードバックも、マルチプレクサ（０６０４）を介してコンフィギュレートすることができる。
【００５９】
図中の４×４行列は自由にカスケード接続することができるので、コンフィギュレート可能な大きな論理フィールドを構成することができる。
【００６０】
本発明のＢＰＵの重要な側面は、タイミングの予測を改善することと、非同期のフィードバックによって回路が物理的に破壊される原因となるいわゆる無遅延フィードバックループを防止することである。こうするためには、以下の規則を実装する：データは北方向および南方向のうち１方向のみと、東方向および西方向のうち１方向のみとに、論理フィールドで転送される。
【００６１】
図６中の実施例では、主信号伝送方向は北から南への方向のカラムであり、繰り上げに関しては、西から東への方向の列内で信号を転送することができる。対角線上の信号伝送も、北南方向において行うことができる。
【００６２】
図７に、図６に示された本発明のＢＰＵを同出願人のＶＰＵアーキテクチャに組み込む一例を示す。このことに関しては、同出願人のすべてのなされた特許出願の内容全体を、本願発明の開示内容とする。この回路はバス入力インタフェース（０７０１）を有し、該バス入力インタフェース（０７０１）はコンフィギュレート可能なバスシステムからデータおよび／またはトリガを受け取る。バス出力インタフェース（０７０２）が、一方の論理フィールド（０７０３）によって生成された信号をデータバスおよび／またはトリガバスに接続する。論理フィールド０７０３は図６に示された複数のＢＰＵを含み、これらのＢＰＵはタイル状に多次元で配置されている。矢印は論理アレイ内の信号の伝送方向を示しており、図６中の記載に相応する。
【００６３】
バスインタフェースおよび論理フィールドに、自由にプログラミング可能な状態マシン（０７０４）が所属しており、この状態マシン（０７０４）は、バス転送の順序制御および／または制御信号の生成および／または同期化タスクを行う。
【００６４】
とりわけＰＡＣＴ０２およびＰＡＣＴ０８から公知であるように、ＶＰＵ技術は、データ転送および／またはトリガ転送の自動同期を行うためのハンドシェイクプロトコルを有する。本発明のＢＰＵをＶＰＵ技術において使用する場合、状態マシン（０７０４）はさらに、とりわけ入力バスおよび／または出力バスのバスプロトコルのハンドシェイク（ＲＤＹ／ＡＣＫ）を管理する。
【００６５】
バス入力インタフェース（０７０１）および／またはバス出力インタフェース（０７０２）からの信号は制御のために状態マシンへ転送され、状態マシンは相応のインタフェースに対してデータ転送を制御するための制御信号を生成する。さらに、状態マシンは論理フィールド（０７０３）から信号を受け取ることにより、該論理フィールド（０７０３）の内部状態に応答することができる。それとは逆に、状態マシンは制御信号を論理フィールドへ伝送することができる。
【００６６】
状態マシンは有利には、論理フィールドを使用するフレキシビリティを最大にするため、広範な領域においてプログラミング可能に構成される。しかし有利には、状態マシンの動作が危険な状態に陥りやすい部分は、たとえばバスのハンドシェイクプロトコル等は固定実装される。このことにより、ＢＰＵの基本的機能がシステムレベルで保証される。バス転送全体がシステムレベルで、状態マシンの固定実装された部分によって定義ごとに適正に動作する。このことにより、システムレベルでのプログラミングおよびデバッギングが格段に容易になる。
【００６７】
状態マシン（０７０４）のこのような固定実装部分に、プログラマが実際のアプリケーションに依存して論理フィールドの制御を具現化できる自由にプログラミング可能な部分が割り当てられる。
【図１】
2011503733.tif 000003
【図２】
2011503733.tif 000004
【図３】
2011503733.tif 000005
【図４ａ】
2011503733.tif 000006
【図４ｂ】
2011503733.tif 000007
【図４ｃ】
2011503733.tif 000008
【図５】
2011503733.tif 000009
【図６】
2011503733.tif 000010
【図７】
2011503733.tif 000011
【国際調査報告】
2011503733.tif 000012
2011503733.tif 000013
2011503733.tif 000014
2011503733.tif 000015