(57)【特許請求の範囲】
【請求項１】
プログラマブル集積回路デバイス上の特殊浮動小数点処理ブロックであって、
該特殊浮動小数点処理ブロックは、
第一の構成可能な専用の浮動小数点算術演算子段と、
第二の構成可能な専用の浮動小数点算術演算子段と、
該特殊浮動小数点処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の構成可能な専用の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊浮動小数点処理ブロック。
【請求項２】
前記第一の構成可能な専用の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の構成可能な専用の浮動小数点算術演算子段は、浮動小数点加算器を含む、請求項１に記載の特殊浮動小数点処理ブロック。
【請求項３】
前記第一および第二の構成可能な専用の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項１に記載の特殊浮動小数点処理ブロック。
【請求項４】
前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の構成可能な専用の浮動小数点算術演算子段の出力は、前記特殊浮動小数点処理ブロックの外にルート付け可能である、請求項１に記載の特殊浮動小数点処理ブロック。
【請求項５】
複数のブロック入力と、
少なくとも１つのブロック出力と、
前記特殊浮動小数点処理ブロックのうちの別の１つからの直接接続入力と、
該特殊浮動小数点処理ブロックのうちの別の１つへの直接接続出力と
をさらに含む、請求項１に記載の特殊浮動小数点処理ブロック。
【請求項６】
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該第一の構成可能な専用の浮動小数点算術演算子段の出力を該第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記直接接続出力にルート付けることと、
該第一の構成可能な専用の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項５に記載の特殊浮動小数点処理ブロック。
【請求項７】
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと、
複数のブロック入力と、
少なくとも１つのブロック出力と、
該特殊処理ブロックのうちの別の１つからの直接接続入力と、
該特殊処理ブロックのうちの別の１つへの直接接続出力と
を含み、
該構成可能インターコネクトは、
該ブロック入力のうちの少なくともいくつかを該第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを該第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを該直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
該直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能であり、
該構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、該第二の浮動小数点算術演算子段への第一の入力として、該ブロック入力のうちの１つか、または該直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該直接接続出力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、特殊処理ブロック。
【請求項８】
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、請求項７に記載の特殊処理ブロック。
【請求項９】
前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、請求項６に記載の特殊浮動小数点処理ブロック。
【請求項１０】
前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、請求項５に記載の特殊浮動小数点処理ブロック。
【請求項１１】
複数の特殊浮動小数点処理ブロックを含むプログラマブル集積回路デバイスであって、該特殊浮動小数点処理ブロックの各々は、
第一の構成可能な専用の浮動小数点算術演算子段と、
第二の構成可能な専用の浮動小数点算術演算子段と、
該特殊浮動小数点処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の構成可能な専用の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、プログラマブル集積回路デバイス。
【請求項１２】
前記特殊浮動小数点処理ブロックのうちのそれぞれ１つにおいて、前記第一の構成可能な専用の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊浮動小数点処理ブロックのうちのそれぞれ１つにおいて、前記第二の構成可能な専用の浮動小数点算術演算子段は、浮動小数点加算器を含む、請求項１１に記載のプログラマブル集積回路デバイス。
【請求項１３】
前記特殊浮動小数点処理ブロックのうちの少なくとも１つは、乗算加算演算のために構成されている、請求項１２に記載のプログラマブル集積回路デバイス。
【請求項１４】
前記特殊浮動小数点処理ブロックのうちのそれぞれ１つにおいて、前記第一および第二の構成可能な専用の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項１１に記載のプログラマブル集積回路デバイス。
【請求項１５】
前記特殊浮動小数点処理ブロックのうちのそれぞれ１つにおいて、前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の構成可能な専用の浮動小数点算術演算子段のうちのそれぞれ１つの出力は、該特殊浮動小数点処理ブロックのうちのそれぞれ１つの各々の外にルート付け可能である、請求項１１に記載のプログラマブル集積回路デバイス。
【請求項１６】
前記特殊浮動小数点処理ブロックのうちのそれぞれ１つは、
複数のそれぞれのブロック入力と、
少なくとも１つのそれぞれのブロック出力と、
該特殊浮動小数点処理ブロックのうちの別の１つからのそれぞれの直接接続入力と、
該特殊浮動小数点処理ブロックのうちの別の１つへのそれぞれの直接接続出力と
をさらに含む、請求項１１に記載のプログラマブル集積回路デバイス。
【請求項１７】
前記特殊浮動小数点処理ブロックのうちのそれぞれ１つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該第一の構成可能な専用の浮動小数点算術演算子段の出力を該第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記直接接続出力にルート付けることと、
該第一の構成可能な専用の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の構成可能な専用の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項１６に記載のプログラマブル集積回路デバイス。
【請求項１８】
複数の特殊処理ブロックを含むプログラマブル集積回路デバイスであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含み、
該特殊処理ブロックのうちのそれぞれ１つは、
複数のそれぞれのブロック入力と、
少なくとも１つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の１つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の１つへのそれぞれの直接接続出力と
をさらに含み、
該特殊処理ブロックのうちのそれぞれ１つにおいて、該構成可能インターコネクトは、
該ブロック入力のうちの少なくともいくつかを該第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを該第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを該直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
該直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能であり、
該特殊処理ブロックのうちのそれぞれの１つにおいて、該構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、該第二の浮動小数点算術演算子段への第一の入力として、該ブロック入力のうちの１つか、または該直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、該直接接続出力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、プログラマブル集積回路デバイス。
【請求項１９】
前記特殊処理ブロックのうちのそれぞれの１つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、請求項１８に記載のプログラマブル集積回路デバイス。
【請求項２０】
前記特殊処理ブロックのうちの少なくとも２つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、請求項１９に記載のプログラマブル集積回路デバイス。
【請求項２１】
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、請求項１９に記載のプログラマブル集積回路デバイス。
【請求項２２】
前記特殊浮動小数点処理ブロックのうちのそれぞれの１つにおいて、前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、請求項１７に記載のプログラマブル集積回路デバイス。
【請求項２３】
前記特殊浮動小数点処理ブロックのうちのそれぞれの１つにおいて、前記構成可能インターコネクトは、前記第二の構成可能な専用の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、請求項１６に記載のプログラマブル集積回路デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、プログラマブル集積回路デバイスに関する。特に、本発明は、プログラマブル集積回路デバイスにおける、特殊処理ブロックに関する。
【背景技術】
【０００２】
（発明の背景）
プログラマブル論理デバイス（ＰＬＤ）を集積回路デバイスの一例として考察すると、ＰＬＤが用いられる用途は複雑さが増加するので、一般的なプログラマブル論理リソースのブロックに加えて、特殊処理ブロックを含むようにＰＬＤをデザインすることは、より一般的になっている。そのような特殊処理ブロックは、回路の密集を、論理演算または数学的演算のような１つ以上の特定のタスクを行うために部分的または完全に組み込まれているＰＬＤ上に含み得る。特殊処理ブロックは、構成可能メモリ素子のアレイのような１つ以上の専門化された構造も含み得る。そのような特殊処理ブロックにおいて、一般的に実装される構造の例は、乗算器、演算装置（ＡＬＵ）、バレルシフタ、（ＦＩＦＯ／ＬＩＦＯ／ＳＩＰＯ／ＲＡＭ／ＲＯＭ／ＣＡＭブロックおよびレジスタファイルのような）さまざまなメモリ素子、ＡＮＤ／ＮＡＮＤ／ＯＲ／ＮＯＲアレイなど、またはそれらの組合わせを含む。
【０００３】
ＰＬＤ上に提供された１つの特に有用なタイプの特殊処理ブロックは、例えば、オーディオ信号を処理するために用いられ得るデジタル信号処理（ＤＳＰ）ブロックである。そのようなブロックは、しばしば、積和演算（「ＭＡＣ」）ブロックとも呼ばれる。なぜなら、そのようなブロックは、乗法演算を行う構造と、乗法演算の合計および／または蓄積とを含むからである。
【０００４】
例えば、ＳＴＲＡＴＩＸ（登録商標）およびＡＲＲＩＡ（登録商標）ファミリーの一部として、Ｃａｌｉｆｏｒｎｉａ、Ｓａｎ  ＪｏｓｅのＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎによって販売されるＰＬＤは、ＤＳＰブロックを含む。そのＤＳＰブロックの各々は、複数の乗算器を含む。それらのＤＳＰブロックの各々は、ブロックのさまざまなコンポーネントが、異なる方法によって構成されることを可能にするプログラマブルコネクター（例えば、多重器）ならびに加算器およびレジスタも含む。
【０００５】
典型的には、そのような特殊処理ブロックにおける算術演算子（加算器および乗算器）は、固定小数点演算子であった。浮動小数点演算子が必要である場合は、ユーザーは、それらを、特殊処理ブロックの外に、デバイスの汎用プログラマブル論理を用いてか、または特殊処理ブロックの中に、固定小数点演算子と、汎用プログラマブル論理の追加の論理との組合わせを用いて構築する。
【発明の概要】
【課題を解決するための手段】
【０００６】
（発明の概要）
本発明の実施形態に従って、上に記載されたＤＳＰブロックのような特殊処理ブロックは、ＤＳＰブロックにおいて利用可能な機能の中でも、浮動小数点加算を含むことによって、向上され得る。これは、浮動小数点機能を特殊処理ブロックの外に構築する必要性を減少させる。加算機能は、ＩＥＥＥ７５４−１９８５規格に従う、完全または部分的に専用の（つまり、ハード論理）実装であり得、加算演算、乗算加算（ＭＡＤＤ）演算、またはベクトル（ドット積）演算のために用いられ得る。それらのうち、いずれもが実数または複素数のどちらかであり得る。浮動小数点加算器回路は、ＤＳＰブロックに組み込まれ得、独立してアクセスされ得るか、もしくはＤＳＰブロックにおける乗算器または隣接するＤＳＰブロックにおける乗算器とすら組合わせて用いられ得る。
【０００７】
そのため、本発明の実施形態に従って、特殊処理ブロックがプログラマブル集積回路デバイス上に提供される。特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。そのような複数の特殊処理ブロックを含むプログラマブル集積回路デバイスも提供される。
【０００８】
いくつかの実施形態において、特殊処理ブロックは、複数のブロック入力と、少なくとも１つのブロック出力と、特殊処理ブロックのうちの別の１つからの直接接続入力と、特殊処理ブロックのうちの別の１つからの直接接続出力とを含む。それらの実施形態のうちのいくつかにおいて、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも１つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも１つを直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【０００９】
例えば、本発明は以下の項目を提供する。
（項目１）
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊処理ブロック。
（項目２）
前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目３）
前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目４）
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段の出力は、前記特殊処理ブロックの外にルート付け可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目５）
複数のブロック入力と、
少なくとも１つのブロック出力と、
前記特殊処理ブロックのうちの別の１つからの直接接続入力と、
該特殊処理ブロックのうちの別の１つへの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目６）
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目７）
前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの１つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの１つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、前記直接接続出力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目８）
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目９）
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目１０）
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
（項目１１）
複数の特殊処理ブロックであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、複数の特殊処理ブロックを含む、プログラマブル集積回路デバイス。
（項目１２）
前記特殊処理ブロックのうちのそれぞれ１つにおいて、前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊処理ブロックのうちのそれぞれ１つにおいて、前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１３）
前記特殊処理ブロックのうちの少なくとも１つは、乗算加算演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１４）
前記特殊処理ブロックのうちのそれぞれ１つにおいて、前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１５）
前記特殊処理ブロックのうちのそれぞれ１つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段のうちのそれぞれ１つの出力は、該特殊処理ブロックのうちのそれぞれ１つの各々の外にルート付け可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１６）
前記特殊処理ブロックのうちのそれぞれ１つは、
複数のそれぞれのブロック入力と、
少なくとも１つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の１つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の１つからのそれぞれの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１７）
前記特殊処理ブロックのうちのそれぞれ１つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも１つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１８）
前記特殊処理ブロックのうちのそれぞれの１つにおいて、前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの１つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの１つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、前記直接接続出力として、該ブロック入力のうちの１つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目１９）
前記特殊処理ブロックのうちのそれぞれの１つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目２０）
前記特殊処理ブロックのうちの少なくとも２つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目２１）
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目２２）
前記特殊処理ブロックのうちのそれぞれの１つにおいて、前記構成可能インターコネクトは、前記第二の浮動小終点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
（項目２３）
前記特殊処理ブロックのうちのそれぞれの１つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの１つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
【００１０】
（摘要）
特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。いくつかの実施形態において、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも１つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも１つを別のそのようなブロックへの直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、別のそのようなブロックからの直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【００１１】
発明のさらなる特徴、その性質およびさまざまな利点は、添付の図面に関して、以下の詳細な説明を考察すると、明らかとなる。図面において、類似の参照文字は、一貫して、類似のパーツを指す。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図１Ａ】図１Ａは、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図２】図２は、本発明の実施形態に従う例示的な特殊処理ブロックのより詳細な図を示す。
【図３】図３は、本発明の実施形態に従う例示的配列で、本発明の実施形態に従う多くの例示的な特殊処理ブロックの簡略化されたブロック図を示す。
【図４】図４は、ドット積を行うように構成されている発明の実施形態に従う例示的な特殊処理ブロックの例示的配列を示す。
【図５】図５は、切り上げがブロックの外に実装された、図４に類似する例示的な特殊処理ブロックの例示的配列を示す。
【図６】図６は、図４の例示的配列が、ベクトルドット積演算を実装するために用いられた場合のデータ経路の例示的選択を示す。
【図７】図７は、本発明の実施形態に従う例示的専用浮動小数点加算器ブロックを示す。
【図８】図８は、図７の複数の例示的専用浮動小数点加算器ブロックの例示的配列を示し、例示的配列は発明の実施形態に従う。
【図９】図９は、図８の配列の例示的使用を３進加算器ツリーとして示す。
【図１０】図１０は、本発明を組み込むプログラマブル論理デバイスを採用する例示的システムの簡略化されたブロック図である。
【発明を実施するための形態】
【００１３】
（発明の詳細な説明）
図１は、発明の実施形態に従う例示的ＤＳＰブロック１００の論理図を示す。この論理表示において、例えば、レジスタ、および特定の構造の出力がブロック１００の外に直接ルート付けられることを可能にし得る多重器のようないくつかのプログラマブルルーティング特徴といった実装的な詳細は、話を簡略化するために省略されている。加えて、示されるいくつかの素子は、実際の実施形態において、２回以上実装され得る。例えば、乗算器１０１は、実際は、先に述べたＰＬＤのＳＴＲＡＴＩＸ（登録商標）およびＡＲＲＩＡ（登録商標）ファミリーのＤＳＰブロックにおけるように、２つ以上の乗算器を表し得る。
【００１４】
図１の論理表示において、浮動小数点加算器１０２は、浮動小数点乗算器１０１に続く。浮動小数点乗算器は、ＤＳＰブロックによってサポートされた２７×２７の固定小数点乗算器から構築され得る。ＤＳＰブロックは、Ａｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎおよびいくつかの追加の論理から、ＳＴＲＡＴＩＸ（登録商標）ＶまたはＡＲＲＩＡ（登録商標）Ｖプログラマブルデバイスに提供される。追加の論理は、ＮＡＮ（数ではない）、ゼロおよび無限のような特別な条件およびエラー条件ならびに指数を計算する。任意で、他の論理が乗算器の結果を切り上げるために、ＩＥＥＥ７５４フォーマットに提供され得る。そのような切り上げは、乗算器構造（示されていない）内、または乗算器１０１の出力がＤＳＰブロック１００から直接出力された場合は、ＤＳＰブロック１００の外のプログラマブル論理における最終加算器の一部として実装され得る。
【００１５】
浮動小終点乗算器１０１は、図１に描写されるように、乗算器加算（ＭＡＤＤ）モードで直接、浮動小数点加算器１０２にフィードされ得る。あるいは、図１Ａに描写されるように、乗算器１０１の出力は、加算器１０２を迂回して、ＤＳＰブロックの出力に直接ルート付けられ得る。多重器１０３は、乗算器１０１の出力または加算器１０２の出力を選択するために提供される。バイパス１０４および多重器１０３は、他の図面を乱すことを避けるために、それらの図面から省略されているが、バイパス１０４および多重器１０３は、図１のものも含めて、示された乗算器／加算器ＤＳＰブロックの全てにおいて存在していると考えられたい。
【００１６】
図２は、本発明の実施形態に従う例示的ＤＳＰブロック２００の、より詳細な図を示す。任意でバイパス可能なパイプライン化（示されていない）が浮動小終点乗算器１０１と浮動小終点加算器１０２との間に提供され得る。任意でバイパス可能なパイプライン化（示されていない）は、浮動小数点乗算器１０１および浮動小数点加算器１０２の一方または両方内にも提供され得る。入力は、乗算器１０１の出力を含み、複数のソースから加算器１０２へルート付けられ得る。入力２０１のうちの１つは、隣接する類似のＤＳＰブロック２００からＤＳＰブロック２００または直接接続２０２へルート付けられ得る。
【００１７】
加えて、乗算器１０１の出力および／またはＤＳＰブロック２００への入力２０１のうちの１つも、直接接続２１２を介して、隣接する類似のＤＳＰブロック２００における加算器へルート付けられ得る（ブロック２００のチェーンの終了を除き、各直接接続２０２がその入力を直接接続２１２から受け取ること、および各直接接続２１２は、その出力を直接接続２０２に提供することは明らかである）。具体的には、多重器２１１は、入力２０１または直接接続２０２の一方を加算器１０２への１つの入力として選択するために提供され得る。同様に、多重器２２１は、入力２０１または乗算器１０１の出力の一方を加算器１０２への別の入力として選択するために提供され得る。第三の多重器２３１は、入力２０１または乗算器１０１の出力の一方を直接接続２１２への出力として選択するために提供され得る。したがって、加算器１０２への入力は、入力２０１および乗算器１０１の出力もしくは入力２０１および直接接続２０２のどちらか一方であり得、直接接続２１２は、入力２０１または乗算器１０１の出力の一方を出力し得る。
【００１８】
一実施形態において、同じ２つの入力（入力２０１および乗算器１０１の出力）を有している多重器２２１および多重器２３１は、制御信号を共有しているが、２４１において示されるように、反対の向きにおいて、２つの多重器のうちの１つがそれら２つの入力のうちの１つを選択した場合に、２つの多重器のうちの他方は、それら２つの入力のうちの他方を選択する。
【００１９】
発明の実施形態に従う複数のＤＳＰブロックは、行または列で配列され得るので、情報は、１つのブロックから隣のブロックへ、先に述べた直接接続２０２／２１２を用いてフィードされ得、より複雑な構造を形成する。図３は、（接続２０２／２１２を示さずに）行３００に配列された、発明の実施形態に従う多くの例示的ＤＳＰブロック３０１を示す。
【００２０】
図４は、発明の実施形態に従う５つの例示的ＤＳＰブロック４０１〜４０５の行４００を示し、ドット積演算を行うように構成されている。あるいは、この構成のＤＳＰブロック４０１は、入力および出力を変えずに、列（示されていない）に配列され得る。図面は、インターフェース信号を示す。各対のブロック４０１／４０２および４０３／４０４において、各ブロックの乗算器１０１は、２つのブロックの左端のブロック４０１、４０３における加算器１０２と共に、それぞれ２つの乗法演算の合計４１１、４１２を実装する。それらの合計４１１、４１２は、入力２０２を選択する多重器２１１と、入力２０１（これらの入力に、それぞれの出力４１１／４１２が、例えば、ブロック４０１〜４０４の外のＰＬＤのプログラマブルインターコネクトリソースを用いて、ルート付けられている）を選択する多重器２２１とを用いて、左端の対のうちの右端の加算器（つまり、ＤＳＰブロック４０２の加算器１０２）に合計され、４つの乗算器の合計を提供する。右端の対のうちの右端の加算器（つまり、ＤＳＰブロック４０４の加算器１０２）は、この４つの乗算器の合計を、ＤＳＰブロック４０５（残りは示されていない）で始まる４つのＤＳＰブロックの別のセットからの４つの乗算器の合計に加算するために用いられる。Ｎ個の乗算器に対して、ドット積の加算器ツリーを実装するのに十分なＮ個の加算器がある。ドット積の加算器ツリーは、長さＮのベクトルの対に対して、Ｎ個の乗法演算の合計である。
【００２１】
同じＤＳＰブロック特徴が複雑なドット積を実装するために用いられ得る。各第二の対のＤＳＰブロックは、第一のレベルの加算において、加算よりもむしろ減算を用いる。第一のレベルの加算は、浮動小数点加算器によって（例えば、入力のうちの１つを直通的な態様で無効にすることによって）サポートされ得る。加算器ツリーの残りは、先の段落において記載されたものと類似する、直通の合計構築物である。
【００２２】
上で記載したように、ＩＥＥＥ７５４に従う切り上げは、ＤＳＰブロックの実施形態内に提供され得るか、またはデバイスの汎用プログラマブル論理部分に実装され得る。図５は、切り上げがブロックの外の５０１において実装された（つまり、デバイスの汎用プログラマブル論理部分）、図４の配列を例として示す。切り上げは、桁上げ伝播加算器と同程度に単純であり得る単一レベルの論理によって実装され得、レジスタが続く。しばしばそうであるように、ＤＳＰブロックの出力の全てが切り上げされなければならないと想定すると、データ経路の外乱または再平衡化は必要ない。
【００２３】
専用論理に実装され得る別の特徴は、加算よりも実質的に少ないリソースを用いて決定され得る切り上げられた値のオーバーフロー条件の計算である。追加の特徴は、最終指数の値、もしくは特別な条件またはエラー条件をオーバーフロー条件に基づいて計算し得る。
【００２４】
加算器ツリー実装の例示的方法のために、最後のブロックの出力以外の各ＤＳＰブロック出力が別のＤＳＰブロックの入力にフィードバックされる。いくつかの場合において、出力は、図４のＥＦ＋ＧＨ出力４１２のような同じブロックの入力にフィードバックされる。図２においてみられるように、内部バス２５０が、ブロックの出力レジスタを入力レジスタにフィードバックするために提供され得、デバイスの汎用プログラマブル論理部分のルーティングリソースを節約する。図６は、破線で、（各ブロック４０１〜４０５の加算器１０２がどのように、そのブロックにおける乗算器１０１の積と、隣接するブロックからの積とを加算するかを示した図４に関連して、先に記載された）ドット積用途例のための多重器２１１、２２１、２３１によるデータ経路の例示的選択を示す。
【００２５】
専用浮動小数点処理ブロックの別の実施形態は、専用浮動小数点加算器ブロックである。そのようなブロックは、２進（２入力オペランド）または３進（３入力オペランド）であり得る。図７は、例示的３進加算器ブロック７００の論理ブロック図を示す。先に記載されたＤＳＰブロックの場合のように、パイプライン化は、内部で用いられる場合または用いられない場合もあり、切り上げは、内部または外部からプログラマブル論理においてサポートされ得る。ＤＳＰブロックの場合のように、加算器ブロックは、図８の例において示されるように、行に配列され得るか、または列に配列され得る。あるいは、加算器ブロックは、上に記載された乗算器加算器ＤＳＰブロックによって、インターリーブされ得る（示されていない）。
【００２６】
図９は、ラベルを用いて、３進浮動小数点加算器ツリーを形成する図８におけるように配列されたブロック７００と共に用いられる例示的接続を示す。３進加算器ツリーは、２進加算器の深さの半分であるｌｏｇ３Ｎの深さを有している。この例において、Ｎ＝９であり、４つのブロックは、２つのレベル（深さ＝ｌｏｇ３（９）＝２）で配列されている。図４および図５に関連して、上で述べたように、切り上げは、ブロック（示されていない）の中または外のどちらか一方に提供され得る。
【００２７】
専用であるが、構成可能な浮動小数点演算子を含む特殊処理ブロックを提供することによって、本発明は、上に記載されたベクトルドット積のような、ブロックの外のプログラマブル論理への依存がより少ない、特定の演算の実装を可能にする。
【００２８】
本発明に従う特殊処理ブロックを組み込むＰＬＤ９０は、多くの種類の電子デバイスにおいて用いられ得る。１つの可能な使用は、図１０に示される例示的データ処理システム９００におけるものである。データ処理システム９００は、プロセッサ９０１、メモリ９０２、Ｉ／Ｏ回路９０３および周辺デバイス９０４のうちの１つ以上のコンポーネントを含み得る。それらのコンポーネントは、システムバス９０５によって一緒に結合され、エンドユーザーシステム９０７に含まれる回路ボード９０６上に投入される。
【００２９】
システム９００は、コンピュータネットワーキング、データネットワーキング、器具類、ビデオ処理、デジタル信号処理、またはプログラマブルまたは再プログラマブル論理を用いる利点が望ましい任意の他の用途のような幅広いさまざまな用途において用いられ得る。ＰＬＤ９０は、さまざまな異なる論理機能を行うために用いられ得る。例えば、ＰＬＤ９０は、プロセッサまたはプロセッサ９０１と協同して機能するコントローラーとして構成され得る。ＰＬＤ９０は、システム９００において共有されているリソースへのアクセスを仲裁するアービターとしても用いられ得る。さらに別の例において、ＰＬＤ９０は、プロセッサ９０１と、システム９００における他のコンポーネントのうちの１つとの間のインターフェースとして構成され得る。システム９００は、例示的なものに過ぎないこと、および発明の真の範囲および精神は、以下の特許請求の範囲によって示されるべきであることに注意されたい。
【００３０】
上に記載され、本発明を組み込むようなＰＬＤ９０を実装するために、さまざまな技術が用いられ得る。
【００３１】
先に述べたことは、発明の原理の例示に過ぎないこと、およびさまざまな改変が当業者によって、発明の範囲および精神から逸脱せずになされ得ることが理解される。例えば、本発明のさまざまな素子は、任意の所望の数および／または配列でＰＬＤ上に提供され得る。当業者は、本発明が、限定ではなく、例示的目的のために示される記載された実施形態以外の実施形態によって実施され得ること、および本発明は、以下の特許請求の範囲によってのみ限定されることを認識する。
【符号の説明】
【００３２】
１００  ＤＳＰブロック
１０１  乗算器
１０２  加算器
【図１】
0005956820.tif 000002
【図１Ａ】
0005956820.tif 000003
【図２】
0005956820.tif 000004
【図３】
0005956820.tif 000005
【図４】
0005956820.tif 000006
【図５】
0005956820.tif 000007
【図６】
0005956820.tif 000008
【図７】
0005956820.tif 000009
【図８】
0005956820.tif 000010
【図９】
0005956820.tif 000011
【図１０】
0005956820.tif 000012