埋込み浮動小数点構造を有するDSPブロック
【課題】浮動小数点機能を特殊処理ブロックの外に構築する必要性を減少させる、特殊処理ブロックを提供すること。
【解決手段】プログラマブル集積回路デバイス上の特殊処理ブロックであって該特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトとを含む、特殊処理ブロック。
【解決手段】プログラマブル集積回路デバイス上の特殊処理ブロックであって該特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトとを含む、特殊処理ブロック。
【発明の詳細な説明】
【技術分野】
【0001】
(発明の分野)
本発明は、プログラマブル集積回路デバイスに関する。特に、本発明は、プログラマブル集積回路デバイスにおける、特殊処理ブロックに関する。
【背景技術】
【0002】
(発明の背景)
プログラマブル論理デバイス(PLD)を集積回路デバイスの一例として考察すると、PLDが用いられる用途は複雑さが増加するので、一般的なプログラマブル論理リソースのブロックに加えて、特殊処理ブロックを含むようにPLDをデザインすることは、より一般的になっている。そのような特殊処理ブロックは、回路の密集を、論理演算または数学的演算のような1つ以上の特定のタスクを行うために部分的または完全に組み込まれているPLD上に含み得る。特殊処理ブロックは、構成可能メモリ素子のアレイのような1つ以上の専門化された構造も含み得る。そのような特殊処理ブロックにおいて、一般的に実装される構造の例は、乗算器、演算装置(ALU)、バレルシフタ、(FIFO/LIFO/SIPO/RAM/ROM/CAMブロックおよびレジスタファイルのような)さまざまなメモリ素子、AND/NAND/OR/NORアレイなど、またはそれらの組合わせを含む。
【0003】
PLD上に提供された1つの特に有用なタイプの特殊処理ブロックは、例えば、オーディオ信号を処理するために用いられ得るデジタル信号処理(DSP)ブロックである。そのようなブロックは、しばしば、積和演算(「MAC」)ブロックとも呼ばれる。なぜなら、そのようなブロックは、乗法演算を行う構造と、乗法演算の合計および/または蓄積とを含むからである。
【0004】
例えば、STRATIX(登録商標)およびARRIA(登録商標)ファミリーの一部として、California、San JoseのAltera Corporationによって販売されるPLDは、DSPブロックを含む。そのDSPブロックの各々は、複数の乗算器を含む。それらのDSPブロックの各々は、ブロックのさまざまなコンポーネントが、異なる方法によって構成されることを可能にするプログラマブルコネクター(例えば、多重器)ならびに加算器およびレジスタも含む。
【0005】
典型的には、そのような特殊処理ブロックにおける算術演算子(加算器および乗算器)は、固定小数点演算子であった。浮動小数点演算子が必要である場合は、ユーザーは、それらを、特殊処理ブロックの外に、デバイスの汎用プログラマブル論理を用いてか、または特殊処理ブロックの中に、固定小数点演算子と、汎用プログラマブル論理の追加の論理との組合わせを用いて構築する。
【発明の概要】
【課題を解決するための手段】
【0006】
(発明の概要)
本発明の実施形態に従って、上に記載されたDSPブロックのような特殊処理ブロックは、DSPブロックにおいて利用可能な機能の中でも、浮動小数点加算を含むことによって、向上され得る。これは、浮動小数点機能を特殊処理ブロックの外に構築する必要性を減少させる。加算機能は、IEEE754−1985規格に従う、完全または部分的に専用の(つまり、ハード論理)実装であり得、加算演算、乗算加算(MADD)演算、またはベクトル(ドット積)演算のために用いられ得る。それらのうち、いずれもが実数または複素数のどちらかであり得る。浮動小数点加算器回路は、DSPブロックに組み込まれ得、独立してアクセスされ得るか、もしくはDSPブロックにおける乗算器または隣接するDSPブロックにおける乗算器とすら組合わせて用いられ得る。
【0007】
そのため、本発明の実施形態に従って、特殊処理ブロックがプログラマブル集積回路デバイス上に提供される。特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。そのような複数の特殊処理ブロックを含むプログラマブル集積回路デバイスも提供される。
【0008】
いくつかの実施形態において、特殊処理ブロックは、複数のブロック入力と、少なくとも1つのブロック出力と、特殊処理ブロックのうちの別の1つからの直接接続入力と、特殊処理ブロックのうちの別の1つからの直接接続出力とを含む。それらの実施形態のうちのいくつかにおいて、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【0009】
例えば、本発明は以下の項目を提供する。
(項目1)
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊処理ブロック。
(項目2)
前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目3)
前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目4)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段の出力は、前記特殊処理ブロックの外にルート付け可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目5)
複数のブロック入力と、
少なくとも1つのブロック出力と、
前記特殊処理ブロックのうちの別の1つからの直接接続入力と、
該特殊処理ブロックのうちの別の1つへの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目6)
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目7)
前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目8)
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目9)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目10)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目11)
複数の特殊処理ブロックであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、複数の特殊処理ブロックを含む、プログラマブル集積回路デバイス。
(項目12)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊処理ブロックのうちのそれぞれ1つにおいて、前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目13)
前記特殊処理ブロックのうちの少なくとも1つは、乗算加算演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目14)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目15)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段のうちのそれぞれ1つの出力は、該特殊処理ブロックのうちのそれぞれ1つの各々の外にルート付け可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目16)
前記特殊処理ブロックのうちのそれぞれ1つは、
複数のそれぞれのブロック入力と、
少なくとも1つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目17)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目18)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目19)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目20)
前記特殊処理ブロックのうちの少なくとも2つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目21)
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目22)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小終点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目23)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
【0010】
(摘要)
特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。いくつかの実施形態において、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを別のそのようなブロックへの直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、別のそのようなブロックからの直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【0011】
発明のさらなる特徴、その性質およびさまざまな利点は、添付の図面に関して、以下の詳細な説明を考察すると、明らかとなる。図面において、類似の参照文字は、一貫して、類似のパーツを指す。
【図面の簡単な説明】
【0012】
【図1】図1は、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図1A】図1Aは、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図2】図2は、本発明の実施形態に従う例示的な特殊処理ブロックのより詳細な図を示す。
【図3】図3は、本発明の実施形態に従う例示的配列で、本発明の実施形態に従う多くの例示的な特殊処理ブロックの簡略化されたブロック図を示す。
【図4】図4は、ドット積を行うように構成されている発明の実施形態に従う例示的な特殊処理ブロックの例示的配列を示す。
【図5】図5は、切り上げがブロックの外に実装された、図4に類似する例示的な特殊処理ブロックの例示的配列を示す。
【図6】図6は、図4の例示的配列が、ベクトルドット積演算を実装するために用いられた場合のデータ経路の例示的選択を示す。
【図7】図7は、本発明の実施形態に従う例示的専用浮動小数点加算器ブロックを示す。
【図8】図8は、図7の複数の例示的専用浮動小数点加算器ブロックの例示的配列を示し、例示的配列は発明の実施形態に従う。
【図9】図9は、図8の配列の例示的使用を3進加算器ツリーとして示す。
【図10】図10は、本発明を組み込むプログラマブル論理デバイスを採用する例示的システムの簡略化されたブロック図である。
【発明を実施するための形態】
【0013】
(発明の詳細な説明)
図1は、発明の実施形態に従う例示的DSPブロック100の論理図を示す。この論理表示において、例えば、レジスタ、および特定の構造の出力がブロック100の外に直接ルート付けられることを可能にし得る多重器のようないくつかのプログラマブルルーティング特徴といった実装的な詳細は、話を簡略化するために省略されている。加えて、示されるいくつかの素子は、実際の実施形態において、2回以上実装され得る。例えば、乗算器101は、実際は、先に述べたPLDのSTRATIX(登録商標)およびARRIA(登録商標)ファミリーのDSPブロックにおけるように、2つ以上の乗算器を表し得る。
【0014】
図1の論理表示において、浮動小数点加算器102は、浮動小数点乗算器101に続く。浮動小数点乗算器は、DSPブロックによってサポートされた27×27の固定小数点乗算器から構築され得る。DSPブロックは、Altera Corporationおよびいくつかの追加の論理から、STRATIX(登録商標)VまたはARRIA(登録商標)Vプログラマブルデバイスに提供される。追加の論理は、NAN(数ではない)、ゼロおよび無限のような特別な条件およびエラー条件ならびに指数を計算する。任意で、他の論理が乗算器の結果を切り上げるために、IEEE754フォーマットに提供され得る。そのような切り上げは、乗算器構造(示されていない)内、または乗算器101の出力がDSPブロック100から直接出力された場合は、DSPブロック100の外のプログラマブル論理における最終加算器の一部として実装され得る。
【0015】
浮動小終点乗算器101は、図1に描写されるように、乗算器加算(MADD)モードで直接、浮動小数点加算器102にフィードされ得る。あるいは、図1Aに描写されるように、乗算器101の出力は、加算器102を迂回して、DSPブロックの出力に直接ルート付けられ得る。多重器103は、乗算器101の出力または加算器102の出力を選択するために提供される。バイパス104および多重器103は、他の図面を乱すことを避けるために、それらの図面から省略されているが、バイパス104および多重器103は、図1のものも含めて、示された乗算器/加算器DSPブロックの全てにおいて存在していると考えられたい。
【0016】
図2は、本発明の実施形態に従う例示的DSPブロック200の、より詳細な図を示す。任意でバイパス可能なパイプライン化(示されていない)が浮動小終点乗算器101と浮動小終点加算器102との間に提供され得る。任意でバイパス可能なパイプライン化(示されていない)は、浮動小数点乗算器101および浮動小数点加算器102の一方または両方内にも提供され得る。入力は、乗算器101の出力を含み、複数のソースから加算器102へルート付けられ得る。入力201のうちの1つは、隣接する類似のDSPブロック200からDSPブロック200または直接接続202へルート付けられ得る。
【0017】
加えて、乗算器101の出力および/またはDSPブロック200への入力201のうちの1つも、直接接続212を介して、隣接する類似のDSPブロック200における加算器へルート付けられ得る(ブロック200のチェーンの終了を除き、各直接接続202がその入力を直接接続212から受け取ること、および各直接接続212は、その出力を直接接続202に提供することは明らかである)。具体的には、多重器211は、入力201または直接接続202の一方を加算器102への1つの入力として選択するために提供され得る。同様に、多重器221は、入力201または乗算器101の出力の一方を加算器102への別の入力として選択するために提供され得る。第三の多重器231は、入力201または乗算器101の出力の一方を直接接続212への出力として選択するために提供され得る。したがって、加算器102への入力は、入力201および乗算器101の出力もしくは入力201および直接接続202のどちらか一方であり得、直接接続212は、入力201または乗算器101の出力の一方を出力し得る。
【0018】
一実施形態において、同じ2つの入力(入力201および乗算器101の出力)を有している多重器221および多重器231は、制御信号を共有しているが、241において示されるように、反対の向きにおいて、2つの多重器のうちの1つがそれら2つの入力のうちの1つを選択した場合に、2つの多重器のうちの他方は、それら2つの入力のうちの他方を選択する。
【0019】
発明の実施形態に従う複数のDSPブロックは、行または列で配列され得るので、情報は、1つのブロックから隣のブロックへ、先に述べた直接接続202/212を用いてフィードされ得、より複雑な構造を形成する。図3は、(接続202/212を示さずに)行300に配列された、発明の実施形態に従う多くの例示的DSPブロック301を示す。
【0020】
図4は、発明の実施形態に従う5つの例示的DSPブロック401〜405の行400を示し、ドット積演算を行うように構成されている。あるいは、この構成のDSPブロック401は、入力および出力を変えずに、列(示されていない)に配列され得る。図面は、インターフェース信号を示す。各対のブロック401/402および403/404において、各ブロックの乗算器101は、2つのブロックの左端のブロック401、403における加算器102と共に、それぞれ2つの乗法演算の合計411、412を実装する。それらの合計411、412は、入力202を選択する多重器211と、入力201(これらの入力に、それぞれの出力411/412が、例えば、ブロック401〜404の外のPLDのプログラマブルインターコネクトリソースを用いて、ルート付けられている)を選択する多重器221とを用いて、左端の対のうちの右端の加算器(つまり、DSPブロック402の加算器102)に合計され、4つの乗算器の合計を提供する。右端の対のうちの右端の加算器(つまり、DSPブロック404の加算器102)は、この4つの乗算器の合計を、DSPブロック405(残りは示されていない)で始まる4つのDSPブロックの別のセットからの4つの乗算器の合計に加算するために用いられる。N個の乗算器に対して、ドット積の加算器ツリーを実装するのに十分なN個の加算器がある。ドット積の加算器ツリーは、長さNのベクトルの対に対して、N個の乗法演算の合計である。
【0021】
同じDSPブロック特徴が複雑なドット積を実装するために用いられ得る。各第二の対のDSPブロックは、第一のレベルの加算において、加算よりもむしろ減算を用いる。第一のレベルの加算は、浮動小数点加算器によって(例えば、入力のうちの1つを直通的な態様で無効にすることによって)サポートされ得る。加算器ツリーの残りは、先の段落において記載されたものと類似する、直通の合計構築物である。
【0022】
上で記載したように、IEEE754に従う切り上げは、DSPブロックの実施形態内に提供され得るか、またはデバイスの汎用プログラマブル論理部分に実装され得る。図5は、切り上げがブロックの外の501において実装された(つまり、デバイスの汎用プログラマブル論理部分)、図4の配列を例として示す。切り上げは、桁上げ伝播加算器と同程度に単純であり得る単一レベルの論理によって実装され得、レジスタが続く。しばしばそうであるように、DSPブロックの出力の全てが切り上げされなければならないと想定すると、データ経路の外乱または再平衡化は必要ない。
【0023】
専用論理に実装され得る別の特徴は、加算よりも実質的に少ないリソースを用いて決定され得る切り上げられた値のオーバーフロー条件の計算である。追加の特徴は、最終指数の値、もしくは特別な条件またはエラー条件をオーバーフロー条件に基づいて計算し得る。
【0024】
加算器ツリー実装の例示的方法のために、最後のブロックの出力以外の各DSPブロック出力が別のDSPブロックの入力にフィードバックされる。いくつかの場合において、出力は、図4のEF+GH出力412のような同じブロックの入力にフィードバックされる。図2においてみられるように、内部バス250が、ブロックの出力レジスタを入力レジスタにフィードバックするために提供され得、デバイスの汎用プログラマブル論理部分のルーティングリソースを節約する。図6は、破線で、(各ブロック401〜405の加算器102がどのように、そのブロックにおける乗算器101の積と、隣接するブロックからの積とを加算するかを示した図4に関連して、先に記載された)ドット積用途例のための多重器211、221、231によるデータ経路の例示的選択を示す。
【0025】
専用浮動小数点処理ブロックの別の実施形態は、専用浮動小数点加算器ブロックである。そのようなブロックは、2進(2入力オペランド)または3進(3入力オペランド)であり得る。図7は、例示的3進加算器ブロック700の論理ブロック図を示す。先に記載されたDSPブロックの場合のように、パイプライン化は、内部で用いられる場合または用いられない場合もあり、切り上げは、内部または外部からプログラマブル論理においてサポートされ得る。DSPブロックの場合のように、加算器ブロックは、図8の例において示されるように、行に配列され得るか、または列に配列され得る。あるいは、加算器ブロックは、上に記載された乗算器加算器DSPブロックによって、インターリーブされ得る(示されていない)。
【0026】
図9は、ラベルを用いて、3進浮動小数点加算器ツリーを形成する図8におけるように配列されたブロック700と共に用いられる例示的接続を示す。3進加算器ツリーは、2進加算器の深さの半分であるlog3Nの深さを有している。この例において、N=9であり、4つのブロックは、2つのレベル(深さ=log3(9)=2)で配列されている。図4および図5に関連して、上で述べたように、切り上げは、ブロック(示されていない)の中または外のどちらか一方に提供され得る。
【0027】
専用であるが、構成可能な浮動小数点演算子を含む特殊処理ブロックを提供することによって、本発明は、上に記載されたベクトルドット積のような、ブロックの外のプログラマブル論理への依存がより少ない、特定の演算の実装を可能にする。
【0028】
本発明に従う特殊処理ブロックを組み込むPLD90は、多くの種類の電子デバイスにおいて用いられ得る。1つの可能な使用は、図10に示される例示的データ処理システム900におけるものである。データ処理システム900は、プロセッサ901、メモリ902、I/O回路903および周辺デバイス904のうちの1つ以上のコンポーネントを含み得る。それらのコンポーネントは、システムバス905によって一緒に結合され、エンドユーザーシステム907に含まれる回路ボード906上に投入される。
【0029】
システム900は、コンピュータネットワーキング、データネットワーキング、器具類、ビデオ処理、デジタル信号処理、またはプログラマブルまたは再プログラマブル論理を用いる利点が望ましい任意の他の用途のような幅広いさまざまな用途において用いられ得る。PLD90は、さまざまな異なる論理機能を行うために用いられ得る。例えば、PLD90は、プロセッサまたはプロセッサ901と協同して機能するコントローラーとして構成され得る。PLD90は、システム900において共有されているリソースへのアクセスを仲裁するアービターとしても用いられ得る。さらに別の例において、PLD90は、プロセッサ901と、システム900における他のコンポーネントのうちの1つとの間のインターフェースとして構成され得る。システム900は、例示的なものに過ぎないこと、および発明の真の範囲および精神は、以下の特許請求の範囲によって示されるべきであることに注意されたい。
【0030】
上に記載され、本発明を組み込むようなPLD90を実装するために、さまざまな技術が用いられ得る。
【0031】
先に述べたことは、発明の原理の例示に過ぎないこと、およびさまざまな改変が当業者によって、発明の範囲および精神から逸脱せずになされ得ることが理解される。例えば、本発明のさまざまな素子は、任意の所望の数および/または配列でPLD上に提供され得る。当業者は、本発明が、限定ではなく、例示的目的のために示される記載された実施形態以外の実施形態によって実施され得ること、および本発明は、以下の特許請求の範囲によってのみ限定されることを認識する。
【符号の説明】
【0032】
100 DSPブロック
101 乗算器
102 加算器
【技術分野】
【0001】
(発明の分野)
本発明は、プログラマブル集積回路デバイスに関する。特に、本発明は、プログラマブル集積回路デバイスにおける、特殊処理ブロックに関する。
【背景技術】
【0002】
(発明の背景)
プログラマブル論理デバイス(PLD)を集積回路デバイスの一例として考察すると、PLDが用いられる用途は複雑さが増加するので、一般的なプログラマブル論理リソースのブロックに加えて、特殊処理ブロックを含むようにPLDをデザインすることは、より一般的になっている。そのような特殊処理ブロックは、回路の密集を、論理演算または数学的演算のような1つ以上の特定のタスクを行うために部分的または完全に組み込まれているPLD上に含み得る。特殊処理ブロックは、構成可能メモリ素子のアレイのような1つ以上の専門化された構造も含み得る。そのような特殊処理ブロックにおいて、一般的に実装される構造の例は、乗算器、演算装置(ALU)、バレルシフタ、(FIFO/LIFO/SIPO/RAM/ROM/CAMブロックおよびレジスタファイルのような)さまざまなメモリ素子、AND/NAND/OR/NORアレイなど、またはそれらの組合わせを含む。
【0003】
PLD上に提供された1つの特に有用なタイプの特殊処理ブロックは、例えば、オーディオ信号を処理するために用いられ得るデジタル信号処理(DSP)ブロックである。そのようなブロックは、しばしば、積和演算(「MAC」)ブロックとも呼ばれる。なぜなら、そのようなブロックは、乗法演算を行う構造と、乗法演算の合計および/または蓄積とを含むからである。
【0004】
例えば、STRATIX(登録商標)およびARRIA(登録商標)ファミリーの一部として、California、San JoseのAltera Corporationによって販売されるPLDは、DSPブロックを含む。そのDSPブロックの各々は、複数の乗算器を含む。それらのDSPブロックの各々は、ブロックのさまざまなコンポーネントが、異なる方法によって構成されることを可能にするプログラマブルコネクター(例えば、多重器)ならびに加算器およびレジスタも含む。
【0005】
典型的には、そのような特殊処理ブロックにおける算術演算子(加算器および乗算器)は、固定小数点演算子であった。浮動小数点演算子が必要である場合は、ユーザーは、それらを、特殊処理ブロックの外に、デバイスの汎用プログラマブル論理を用いてか、または特殊処理ブロックの中に、固定小数点演算子と、汎用プログラマブル論理の追加の論理との組合わせを用いて構築する。
【発明の概要】
【課題を解決するための手段】
【0006】
(発明の概要)
本発明の実施形態に従って、上に記載されたDSPブロックのような特殊処理ブロックは、DSPブロックにおいて利用可能な機能の中でも、浮動小数点加算を含むことによって、向上され得る。これは、浮動小数点機能を特殊処理ブロックの外に構築する必要性を減少させる。加算機能は、IEEE754−1985規格に従う、完全または部分的に専用の(つまり、ハード論理)実装であり得、加算演算、乗算加算(MADD)演算、またはベクトル(ドット積)演算のために用いられ得る。それらのうち、いずれもが実数または複素数のどちらかであり得る。浮動小数点加算器回路は、DSPブロックに組み込まれ得、独立してアクセスされ得るか、もしくはDSPブロックにおける乗算器または隣接するDSPブロックにおける乗算器とすら組合わせて用いられ得る。
【0007】
そのため、本発明の実施形態に従って、特殊処理ブロックがプログラマブル集積回路デバイス上に提供される。特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。そのような複数の特殊処理ブロックを含むプログラマブル集積回路デバイスも提供される。
【0008】
いくつかの実施形態において、特殊処理ブロックは、複数のブロック入力と、少なくとも1つのブロック出力と、特殊処理ブロックのうちの別の1つからの直接接続入力と、特殊処理ブロックのうちの別の1つからの直接接続出力とを含む。それらの実施形態のうちのいくつかにおいて、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【0009】
例えば、本発明は以下の項目を提供する。
(項目1)
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊処理ブロック。
(項目2)
前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目3)
前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目4)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段の出力は、前記特殊処理ブロックの外にルート付け可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目5)
複数のブロック入力と、
少なくとも1つのブロック出力と、
前記特殊処理ブロックのうちの別の1つからの直接接続入力と、
該特殊処理ブロックのうちの別の1つへの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目6)
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目7)
前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目8)
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目9)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目10)
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載の特殊処理ブロック。
(項目11)
複数の特殊処理ブロックであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、複数の特殊処理ブロックを含む、プログラマブル集積回路デバイス。
(項目12)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊処理ブロックのうちのそれぞれ1つにおいて、前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目13)
前記特殊処理ブロックのうちの少なくとも1つは、乗算加算演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目14)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目15)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段のうちのそれぞれ1つの出力は、該特殊処理ブロックのうちのそれぞれ1つの各々の外にルート付け可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目16)
前記特殊処理ブロックのうちのそれぞれ1つは、
複数のそれぞれのブロック入力と、
少なくとも1つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続出力と
をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目17)
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目18)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目19)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目20)
前記特殊処理ブロックのうちの少なくとも2つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目21)
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目22)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小終点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
(項目23)
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、上記項目のうちのいずれかに記載のプログラマブル集積回路デバイス。
【0010】
(摘要)
特殊処理ブロックは、第一の浮動小数点算術演算子段と、第二の浮動小数点算術演算子段と、第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に信号をルート付ける、特殊処理ブロック内の構成可能インターコネクトとを含む。いくつかの実施形態において、構成可能インターコネクトは、複数のブロック入力を第一の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを第二の浮動小数点算術演算子段の入力にルート付けることと、第一の浮動小数点算術演算子段の出力を第二の浮動小数点算術演算子段の入力にルート付けることと、ブロック入力のうちの少なくとも1つを別のそのようなブロックへの直接接続出力にルート付けることと、第一の浮動小数点算術演算子段の出力を直接接続出力にルート付けることと、別のそのようなブロックからの直接接続入力を第二の浮動小数点算術演算子段の入力にルート付けることとを行うように構成可能であり得る。
【0011】
発明のさらなる特徴、その性質およびさまざまな利点は、添付の図面に関して、以下の詳細な説明を考察すると、明らかとなる。図面において、類似の参照文字は、一貫して、類似のパーツを指す。
【図面の簡単な説明】
【0012】
【図1】図1は、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図1A】図1Aは、本発明の実施形態を組み込む例示的な特殊処理ブロックの論理図を示す。
【図2】図2は、本発明の実施形態に従う例示的な特殊処理ブロックのより詳細な図を示す。
【図3】図3は、本発明の実施形態に従う例示的配列で、本発明の実施形態に従う多くの例示的な特殊処理ブロックの簡略化されたブロック図を示す。
【図4】図4は、ドット積を行うように構成されている発明の実施形態に従う例示的な特殊処理ブロックの例示的配列を示す。
【図5】図5は、切り上げがブロックの外に実装された、図4に類似する例示的な特殊処理ブロックの例示的配列を示す。
【図6】図6は、図4の例示的配列が、ベクトルドット積演算を実装するために用いられた場合のデータ経路の例示的選択を示す。
【図7】図7は、本発明の実施形態に従う例示的専用浮動小数点加算器ブロックを示す。
【図8】図8は、図7の複数の例示的専用浮動小数点加算器ブロックの例示的配列を示し、例示的配列は発明の実施形態に従う。
【図9】図9は、図8の配列の例示的使用を3進加算器ツリーとして示す。
【図10】図10は、本発明を組み込むプログラマブル論理デバイスを採用する例示的システムの簡略化されたブロック図である。
【発明を実施するための形態】
【0013】
(発明の詳細な説明)
図1は、発明の実施形態に従う例示的DSPブロック100の論理図を示す。この論理表示において、例えば、レジスタ、および特定の構造の出力がブロック100の外に直接ルート付けられることを可能にし得る多重器のようないくつかのプログラマブルルーティング特徴といった実装的な詳細は、話を簡略化するために省略されている。加えて、示されるいくつかの素子は、実際の実施形態において、2回以上実装され得る。例えば、乗算器101は、実際は、先に述べたPLDのSTRATIX(登録商標)およびARRIA(登録商標)ファミリーのDSPブロックにおけるように、2つ以上の乗算器を表し得る。
【0014】
図1の論理表示において、浮動小数点加算器102は、浮動小数点乗算器101に続く。浮動小数点乗算器は、DSPブロックによってサポートされた27×27の固定小数点乗算器から構築され得る。DSPブロックは、Altera Corporationおよびいくつかの追加の論理から、STRATIX(登録商標)VまたはARRIA(登録商標)Vプログラマブルデバイスに提供される。追加の論理は、NAN(数ではない)、ゼロおよび無限のような特別な条件およびエラー条件ならびに指数を計算する。任意で、他の論理が乗算器の結果を切り上げるために、IEEE754フォーマットに提供され得る。そのような切り上げは、乗算器構造(示されていない)内、または乗算器101の出力がDSPブロック100から直接出力された場合は、DSPブロック100の外のプログラマブル論理における最終加算器の一部として実装され得る。
【0015】
浮動小終点乗算器101は、図1に描写されるように、乗算器加算(MADD)モードで直接、浮動小数点加算器102にフィードされ得る。あるいは、図1Aに描写されるように、乗算器101の出力は、加算器102を迂回して、DSPブロックの出力に直接ルート付けられ得る。多重器103は、乗算器101の出力または加算器102の出力を選択するために提供される。バイパス104および多重器103は、他の図面を乱すことを避けるために、それらの図面から省略されているが、バイパス104および多重器103は、図1のものも含めて、示された乗算器/加算器DSPブロックの全てにおいて存在していると考えられたい。
【0016】
図2は、本発明の実施形態に従う例示的DSPブロック200の、より詳細な図を示す。任意でバイパス可能なパイプライン化(示されていない)が浮動小終点乗算器101と浮動小終点加算器102との間に提供され得る。任意でバイパス可能なパイプライン化(示されていない)は、浮動小数点乗算器101および浮動小数点加算器102の一方または両方内にも提供され得る。入力は、乗算器101の出力を含み、複数のソースから加算器102へルート付けられ得る。入力201のうちの1つは、隣接する類似のDSPブロック200からDSPブロック200または直接接続202へルート付けられ得る。
【0017】
加えて、乗算器101の出力および/またはDSPブロック200への入力201のうちの1つも、直接接続212を介して、隣接する類似のDSPブロック200における加算器へルート付けられ得る(ブロック200のチェーンの終了を除き、各直接接続202がその入力を直接接続212から受け取ること、および各直接接続212は、その出力を直接接続202に提供することは明らかである)。具体的には、多重器211は、入力201または直接接続202の一方を加算器102への1つの入力として選択するために提供され得る。同様に、多重器221は、入力201または乗算器101の出力の一方を加算器102への別の入力として選択するために提供され得る。第三の多重器231は、入力201または乗算器101の出力の一方を直接接続212への出力として選択するために提供され得る。したがって、加算器102への入力は、入力201および乗算器101の出力もしくは入力201および直接接続202のどちらか一方であり得、直接接続212は、入力201または乗算器101の出力の一方を出力し得る。
【0018】
一実施形態において、同じ2つの入力(入力201および乗算器101の出力)を有している多重器221および多重器231は、制御信号を共有しているが、241において示されるように、反対の向きにおいて、2つの多重器のうちの1つがそれら2つの入力のうちの1つを選択した場合に、2つの多重器のうちの他方は、それら2つの入力のうちの他方を選択する。
【0019】
発明の実施形態に従う複数のDSPブロックは、行または列で配列され得るので、情報は、1つのブロックから隣のブロックへ、先に述べた直接接続202/212を用いてフィードされ得、より複雑な構造を形成する。図3は、(接続202/212を示さずに)行300に配列された、発明の実施形態に従う多くの例示的DSPブロック301を示す。
【0020】
図4は、発明の実施形態に従う5つの例示的DSPブロック401〜405の行400を示し、ドット積演算を行うように構成されている。あるいは、この構成のDSPブロック401は、入力および出力を変えずに、列(示されていない)に配列され得る。図面は、インターフェース信号を示す。各対のブロック401/402および403/404において、各ブロックの乗算器101は、2つのブロックの左端のブロック401、403における加算器102と共に、それぞれ2つの乗法演算の合計411、412を実装する。それらの合計411、412は、入力202を選択する多重器211と、入力201(これらの入力に、それぞれの出力411/412が、例えば、ブロック401〜404の外のPLDのプログラマブルインターコネクトリソースを用いて、ルート付けられている)を選択する多重器221とを用いて、左端の対のうちの右端の加算器(つまり、DSPブロック402の加算器102)に合計され、4つの乗算器の合計を提供する。右端の対のうちの右端の加算器(つまり、DSPブロック404の加算器102)は、この4つの乗算器の合計を、DSPブロック405(残りは示されていない)で始まる4つのDSPブロックの別のセットからの4つの乗算器の合計に加算するために用いられる。N個の乗算器に対して、ドット積の加算器ツリーを実装するのに十分なN個の加算器がある。ドット積の加算器ツリーは、長さNのベクトルの対に対して、N個の乗法演算の合計である。
【0021】
同じDSPブロック特徴が複雑なドット積を実装するために用いられ得る。各第二の対のDSPブロックは、第一のレベルの加算において、加算よりもむしろ減算を用いる。第一のレベルの加算は、浮動小数点加算器によって(例えば、入力のうちの1つを直通的な態様で無効にすることによって)サポートされ得る。加算器ツリーの残りは、先の段落において記載されたものと類似する、直通の合計構築物である。
【0022】
上で記載したように、IEEE754に従う切り上げは、DSPブロックの実施形態内に提供され得るか、またはデバイスの汎用プログラマブル論理部分に実装され得る。図5は、切り上げがブロックの外の501において実装された(つまり、デバイスの汎用プログラマブル論理部分)、図4の配列を例として示す。切り上げは、桁上げ伝播加算器と同程度に単純であり得る単一レベルの論理によって実装され得、レジスタが続く。しばしばそうであるように、DSPブロックの出力の全てが切り上げされなければならないと想定すると、データ経路の外乱または再平衡化は必要ない。
【0023】
専用論理に実装され得る別の特徴は、加算よりも実質的に少ないリソースを用いて決定され得る切り上げられた値のオーバーフロー条件の計算である。追加の特徴は、最終指数の値、もしくは特別な条件またはエラー条件をオーバーフロー条件に基づいて計算し得る。
【0024】
加算器ツリー実装の例示的方法のために、最後のブロックの出力以外の各DSPブロック出力が別のDSPブロックの入力にフィードバックされる。いくつかの場合において、出力は、図4のEF+GH出力412のような同じブロックの入力にフィードバックされる。図2においてみられるように、内部バス250が、ブロックの出力レジスタを入力レジスタにフィードバックするために提供され得、デバイスの汎用プログラマブル論理部分のルーティングリソースを節約する。図6は、破線で、(各ブロック401〜405の加算器102がどのように、そのブロックにおける乗算器101の積と、隣接するブロックからの積とを加算するかを示した図4に関連して、先に記載された)ドット積用途例のための多重器211、221、231によるデータ経路の例示的選択を示す。
【0025】
専用浮動小数点処理ブロックの別の実施形態は、専用浮動小数点加算器ブロックである。そのようなブロックは、2進(2入力オペランド)または3進(3入力オペランド)であり得る。図7は、例示的3進加算器ブロック700の論理ブロック図を示す。先に記載されたDSPブロックの場合のように、パイプライン化は、内部で用いられる場合または用いられない場合もあり、切り上げは、内部または外部からプログラマブル論理においてサポートされ得る。DSPブロックの場合のように、加算器ブロックは、図8の例において示されるように、行に配列され得るか、または列に配列され得る。あるいは、加算器ブロックは、上に記載された乗算器加算器DSPブロックによって、インターリーブされ得る(示されていない)。
【0026】
図9は、ラベルを用いて、3進浮動小数点加算器ツリーを形成する図8におけるように配列されたブロック700と共に用いられる例示的接続を示す。3進加算器ツリーは、2進加算器の深さの半分であるlog3Nの深さを有している。この例において、N=9であり、4つのブロックは、2つのレベル(深さ=log3(9)=2)で配列されている。図4および図5に関連して、上で述べたように、切り上げは、ブロック(示されていない)の中または外のどちらか一方に提供され得る。
【0027】
専用であるが、構成可能な浮動小数点演算子を含む特殊処理ブロックを提供することによって、本発明は、上に記載されたベクトルドット積のような、ブロックの外のプログラマブル論理への依存がより少ない、特定の演算の実装を可能にする。
【0028】
本発明に従う特殊処理ブロックを組み込むPLD90は、多くの種類の電子デバイスにおいて用いられ得る。1つの可能な使用は、図10に示される例示的データ処理システム900におけるものである。データ処理システム900は、プロセッサ901、メモリ902、I/O回路903および周辺デバイス904のうちの1つ以上のコンポーネントを含み得る。それらのコンポーネントは、システムバス905によって一緒に結合され、エンドユーザーシステム907に含まれる回路ボード906上に投入される。
【0029】
システム900は、コンピュータネットワーキング、データネットワーキング、器具類、ビデオ処理、デジタル信号処理、またはプログラマブルまたは再プログラマブル論理を用いる利点が望ましい任意の他の用途のような幅広いさまざまな用途において用いられ得る。PLD90は、さまざまな異なる論理機能を行うために用いられ得る。例えば、PLD90は、プロセッサまたはプロセッサ901と協同して機能するコントローラーとして構成され得る。PLD90は、システム900において共有されているリソースへのアクセスを仲裁するアービターとしても用いられ得る。さらに別の例において、PLD90は、プロセッサ901と、システム900における他のコンポーネントのうちの1つとの間のインターフェースとして構成され得る。システム900は、例示的なものに過ぎないこと、および発明の真の範囲および精神は、以下の特許請求の範囲によって示されるべきであることに注意されたい。
【0030】
上に記載され、本発明を組み込むようなPLD90を実装するために、さまざまな技術が用いられ得る。
【0031】
先に述べたことは、発明の原理の例示に過ぎないこと、およびさまざまな改変が当業者によって、発明の範囲および精神から逸脱せずになされ得ることが理解される。例えば、本発明のさまざまな素子は、任意の所望の数および/または配列でPLD上に提供され得る。当業者は、本発明が、限定ではなく、例示的目的のために示される記載された実施形態以外の実施形態によって実施され得ること、および本発明は、以下の特許請求の範囲によってのみ限定されることを認識する。
【符号の説明】
【0032】
100 DSPブロック
101 乗算器
102 加算器
【特許請求の範囲】
【請求項1】
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊処理ブロック。
【請求項2】
前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、請求項1に記載の特殊処理ブロック。
【請求項3】
前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項1に記載の特殊処理ブロック。
【請求項4】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段の出力は、前記特殊処理ブロックの外にルート付け可能である、請求項1に記載の特殊処理ブロック。
【請求項5】
複数のブロック入力と、
少なくとも1つのブロック出力と、
前記特殊処理ブロックのうちの別の1つからの直接接続入力と、
該特殊処理ブロックのうちの別の1つへの直接接続出力と
をさらに含む、請求項1に記載の特殊処理ブロック。
【請求項6】
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項5に記載の特殊処理ブロック。
【請求項7】
前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、請求項6に記載の特殊処理ブロック。
【請求項8】
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、請求項7に記載の特殊処理ブロック。
【請求項9】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項6に記載の特殊処理ブロック。
【請求項10】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項5に記載の特殊処理ブロック。
【請求項11】
複数の特殊処理ブロックであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、複数の特殊処理ブロックを含む、プログラマブル集積回路デバイス。
【請求項12】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊処理ブロックのうちのそれぞれ1つにおいて、前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項13】
前記特殊処理ブロックのうちの少なくとも1つは、乗算加算演算のために構成されている、請求項12に記載のプログラマブル集積回路デバイス。
【請求項14】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項15】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段のうちのそれぞれ1つの出力は、該特殊処理ブロックのうちのそれぞれ1つの各々の外にルート付け可能である、請求項11に記載のプログラマブル集積回路デバイス。
【請求項16】
前記特殊処理ブロックのうちのそれぞれ1つは、
複数のそれぞれのブロック入力と、
少なくとも1つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続出力と
をさらに含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項17】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項16に記載のプログラマブル集積回路デバイス。
【請求項18】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、請求項17に記載のプログラマブル集積回路デバイス。
【請求項19】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、請求項18に記載のプログラマブル集積回路デバイス。
【請求項20】
前記特殊処理ブロックのうちの少なくとも2つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、請求項19に記載のプログラマブル集積回路デバイス。
【請求項21】
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、請求項19に記載のプログラマブル集積回路デバイス。
【請求項22】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小終点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項17に記載のプログラマブル集積回路デバイス。
【請求項23】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項16に記載のプログラマブル集積回路デバイス。
【請求項1】
プログラマブル集積回路デバイス上の特殊処理ブロックであって、
該特殊処理ブロックは、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、特殊処理ブロック。
【請求項2】
前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、請求項1に記載の特殊処理ブロック。
【請求項3】
前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項1に記載の特殊処理ブロック。
【請求項4】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段の出力は、前記特殊処理ブロックの外にルート付け可能である、請求項1に記載の特殊処理ブロック。
【請求項5】
複数のブロック入力と、
少なくとも1つのブロック出力と、
前記特殊処理ブロックのうちの別の1つからの直接接続入力と、
該特殊処理ブロックのうちの別の1つへの直接接続出力と
をさらに含む、請求項1に記載の特殊処理ブロック。
【請求項6】
前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項5に記載の特殊処理ブロック。
【請求項7】
前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、請求項6に記載の特殊処理ブロック。
【請求項8】
前記第二の多重器および前記第三の多重器は、共通制御信号の反対の向きを共有している、請求項7に記載の特殊処理ブロック。
【請求項9】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項6に記載の特殊処理ブロック。
【請求項10】
前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項5に記載の特殊処理ブロック。
【請求項11】
複数の特殊処理ブロックであって、該特殊処理ブロックの各々は、
第一の浮動小数点算術演算子段と、
第二の浮動小数点算術演算子段と、
該特殊処理ブロック内の構成可能インターコネクトであって、該構成可能インターコネクトは、該第一および第二の浮動小数点算術演算子段の各々に信号をルート付け、各々の外に該信号をルート付ける、構成可能インターコネクトと
を含む、複数の特殊処理ブロックを含む、プログラマブル集積回路デバイス。
【請求項12】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一の浮動小数点算術演算子段は、浮動小数点乗算器を含み、
該特殊処理ブロックのうちのそれぞれ1つにおいて、前記第二の浮動小数点算術演算子は、浮動小数点加算器を含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項13】
前記特殊処理ブロックのうちの少なくとも1つは、乗算加算演算のために構成されている、請求項12に記載のプログラマブル集積回路デバイス。
【請求項14】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記第一および第二の浮動小数点算術演算子段の各々は、浮動小数点加算器を含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項15】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の選択可能バイパスを含み、
前記第一の浮動小数点算術演算子段のうちのそれぞれ1つの出力は、該特殊処理ブロックのうちのそれぞれ1つの各々の外にルート付け可能である、請求項11に記載のプログラマブル集積回路デバイス。
【請求項16】
前記特殊処理ブロックのうちのそれぞれ1つは、
複数のそれぞれのブロック入力と、
少なくとも1つのそれぞれのブロック出力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続入力と、
該特殊処理ブロックのうちの別の1つからのそれぞれの直接接続出力と
をさらに含む、請求項11に記載のプログラマブル集積回路デバイス。
【請求項17】
前記特殊処理ブロックのうちのそれぞれ1つにおいて、前記構成可能インターコネクトは、
前記ブロック入力のうちの少なくともいくつかを前記第一の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記第二の浮動小数点算術演算子段の入力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該第二の浮動小数点算術演算子段の入力にルート付けることと、
該ブロック入力のうちの少なくとも1つを前記直接接続出力にルート付けることと、
該第一の浮動小数点算術演算子段の出力を該直接接続出力にルート付けることと、
前記直接接続入力を該第二の浮動小数点算術演算子段の入力にルート付けることと
を行うように構成可能である、請求項16に記載のプログラマブル集積回路デバイス。
【請求項18】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、
第一の多重器であって、該第一の多重器は、前記第二の浮動小数点算術演算子段への第一の入力として、前記ブロック入力のうちの1つか、または前記直接接続入力かの一方を選択する、第一の多重器と、
第二の多重器であって、該第二の多重器は、該第二の浮動小数点算術演算子段への第二の入力として、該ブロック入力のうちの1つか、または前記第一の浮動小数点算術演算子段の出力かの一方を選択する、第二の多重器と、
第三の多重器であって、該第三の多重器は、前記直接接続出力として、該ブロック入力のうちの1つか、または該第一の浮動小数点算術演算子段の出力かの一方を選択する、第三の多重器と
を含む、請求項17に記載のプログラマブル集積回路デバイス。
【請求項19】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記第二の多重器および前記第三の多重器は、それぞれの共通制御信号の反対の向きを共有している、請求項18に記載のプログラマブル集積回路デバイス。
【請求項20】
前記特殊処理ブロックのうちの少なくとも2つは、前記複数の特殊処理ブロックにおけるブロックのそれぞれの直接接続入力とそれぞれの直接接続出力とを用いたベクトルドット積演算のために構成されている、請求項19に記載のプログラマブル集積回路デバイス。
【請求項21】
プログラマブル論理部分であって、該プログラマブル論理部分は、前記複数の特殊処理ブロックにおけるブロックの出力を切り上げるように構成されている、プログラマブル論理部分をさらに含む、請求項19に記載のプログラマブル集積回路デバイス。
【請求項22】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小終点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項17に記載のプログラマブル集積回路デバイス。
【請求項23】
前記特殊処理ブロックのうちのそれぞれの1つにおいて、前記構成可能インターコネクトは、前記第二の浮動小数点算術演算子段の出力を前記ブロック入力のうちの1つに選択可能にルート付けるフィードバック経路を含む、請求項16に記載のプログラマブル集積回路デバイス。
【図1】
【図1A】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図1A】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2012−239169(P2012−239169A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−105214(P2012−105214)
【出願日】平成24年5月2日(2012.5.2)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成24年5月2日(2012.5.2)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
[ Back to top ]