説明

プログラマブルロジックデバイスのための大きな乗算器

【課題】プログラマブルロジックデバイス(PLD)のための特殊処理ブロックで、単一のブロック内で実行され得るよりも大きな乗算の実行を容易にして、PLDの汎用プログラマブルリソースへの依存を低減または排除するロジックを備えるものを提供すること。
【解決手段】乗算器と、これらの乗算器の結果を加算する加算器のための回路網とを含むPLD内の複数の特殊処理ブロックは、加算する前に乗算器の結果をシフトするための選択可能な回路網を、該特殊処理ブロックに追加することによって、より大きな乗算器として構成され得る。一つの実施形態において、このことは、最終的な加算を除く全てが、特殊処理ブロック内で行われ、該最終的な加算は、プログラマブルロジック内で行われることを可能にする。別の実施形態において、追加の圧縮および加算の回路網は、最終的な加算でさえも、特殊処理ブロック内で行われることを可能にする。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の背景)
本発明は、プログラマブルロジックデバイス(PLD)に関し、より具体的には、大きな乗算を実行するために、このようなデバイスに含まれ得る特殊処理ブロックの使用に関する。
【背景技術】
【0002】
PLDが使用されるアプリケーションが、複雑さを増すにつれて、PLDを設計するために、一般的なプログラマブルロジックリソースのブロックに加え、特殊処理ブロックを含めることが、ますます一般的になってきた。このような特殊処理ブロックは、論理演算または数学演算のような一つ以上の特定のタスクを実行するために、部分的あるいは完全にハードワイヤ接続されたPLD上に回路網の集結を含み得る。特殊処理ブロックはまた、構成可能なメモリ素子のアレイのような一つ以上の特殊構造も含み得る。一般的に、このような特殊処理ブロックでインプリメントされる構造の例は、乗算器、演算論理ユニット(ALU)、バレルシフタ、様々なメモリ素子(例えば、FIFO/LIFO/SIPO/RAM/ROM/CAMブロックおよびレジスタファイル)、AND/NAND/OR/NORアレイなど、またはこれらの組み合わせを含む。
【0003】
PLD上に提供されている特殊処理ブロックの一つの特に有用なタイプは、デジタル信号処理(DSP)ブロックであり、このブロックは、例えば、オーディオ信号を処理するために使用され得る。このようなブロックはまた、しばしば、乗累算(「MAC」)ブロックとも称される。なぜなら、これらのブロックは、乗算演算と、乗算演算の総計および/または累算とを実行するための構造を含むからである。
【0004】
例えば、カリフォルニア州San JoseのAltera Corporationより、STRATIX(登録商標)IIの名で販売されているPLDは、複数のDSPブロックを含み、それらのブロックのそれぞれは、4つの18×18乗算器を含む。これらのDSPブロックのそれぞれはまた、加算器およびレジスタ、ならびにプログラマブルコネクタ(例えば、マルチプレクサ)を含み、これらのコネクタは、様々なコンポーネントが異なる方法で構成されることを可能にする。このようなブロックのそれぞれにおいて、乗算器は、4つの個々の18×18乗算器として構成されるのみならず、4つのより小規模な乗算器として、または1つのより大きな乗算器(36×36)として構成され得る。さらに、1つの18×18の複素数乗算(実数部および虚数部のそれぞれに対し、2つの18×18乗算演算に分解する)が実行され得る。
【0005】
このようなDSPブロックは、36×36と同じ規模の乗算器として構成され得るが、ユーザは、より大きな乗算器を生成することを欲し得る。例えば、36×36乗算器は、IEEE754−1985規格の下で、25×25の単精度の乗算をサポートするものの、二倍精度の乗算に対しては、あまりにも小さい。幾つかのDSPブロックからの乗算器は、二倍精度の乗算をインプリメントするために、一緒に使用され得るものの、乗算器を相互接続するために必要とされるロジックは、今まで、ユーザによって、DSPブロック外部の汎用プログラマブルロジックの中にプログラムされてきた。このため、該ロジックを低速で非効率にし、他の使用に当てられ得る汎用リソースを消費することになる。
【発明の開示】
【課題を解決するための手段】
【0006】
(発明の概要)
本発明は、PLDのための特殊処理ブロックに関し、該ブロックは、該ブロック内に、ロジックを提供され、任意の単一の特殊処理ブロック内で実行され得るものよりも大きな乗算の実行を容易にして、PLDの汎用プログラマブルリソースへの依存を低減または排除する。
【0007】
一つの実施形態において、部分積の全てが特殊処理ブロック内で計算され得るように、追加のシフトリソースが、特殊処理ブロック内に提供されるが、これらの積の最終的な加算は、汎用プログラマブルロジック内の特殊処理ブロックの外部で行われる。別の実施形態において、実質的に全ての加算が、PLDの汎用プログラマブルリソースに依存することなく、実行され得るように、追加のシフトおよび加算のリソースが特殊処理ブロックに追加される。
【0008】
本発明に従うと、複数の特殊処理ブロックを有するプログラマブルロジックデバイスにおける使用のための、3n×3nの乗算演算を実行する方法であって、該特殊処理ブロックのそれぞれは、四乗算器(four−multiplier)ユニットに配置された少なくとも4つのn×n乗算器を有する、方法が提供される。該方法は、該四乗算器ユニットの第一のユニットで、該n×n乗算器の4つを用いて、2n×2nの乗算を実行するステップと、該四乗算器ユニットの第二のユニットで、該n×n乗算器の1つを用いて、n×nの乗算を実行するステップと、該2n×nの乗算のそれぞれに対して該n×n乗算器のうちの2つを用いて、該四乗算器ユニットの第三のユニットで、第一および第二の2n×nの乗算を実行するステップと、該第三の四乗算器ユニット内で加算のために、該2n×nの乗算のそれぞれの第二の部分積をシフトして、該2n×nの乗算のそれぞれの第二の部分積を該2n×nの乗算のそれぞれの第一の部分積と整列させるステップと、該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するステップとを包含する。
【0009】
上記方法を実行するように構成されたプログラマブルロジックデバイス、および該プログラマブルロジックデバイスを設定するためのソフトウェアもまた、提供される。
【0010】
本発明は、さらに、以下の手段を提供する。
【0011】
(項目1)
複数の特殊処理ブロックを有するプログラマブルロジックデバイスにおける使用のための、3n×3nの乗算演算を実行する方法であって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該方法は、
該四乗算器ユニットの第一のユニットで、該n×n乗算器の4つを用いて、2n×2nの乗算を実行するステップと、
該四乗算器ユニットの第二のユニットで、該n×n乗算器の1つを用いて、n×nの乗算を実行するステップと、
該2n×nの乗算のそれぞれに対して該n×n乗算器のうちの2つを用いて、該四乗算器ユニットの第三のユニットで、第一および第二の2n×nの乗算を実行するステップと、
該第三の四乗算器ユニット内で加算のために、該2n×nの乗算のそれぞれの第二の部分積をシフトして、該2n×nの乗算のそれぞれの第二の部分積を該2n×nの乗算のそれぞれの第一の部分積と整列させるステップと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するステップと
を包含する、方法。
【0012】
(項目2)
上記加算するステップは、上記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、上記結果を加算するステップを包含する、項目1に記載の方法。
【0013】
(項目3)
上記第一および第二の2n×nの乗算を実行するステップは、該第一および第二の2n×nの乗算のうちのそれぞれ個々に対して、
上記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフトするステップは、個々の最下位ビットのいずれの部分積もシフトすることなく、それぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、
該第三の四乗算器ユニット内での上記加算は、部分積のさらなるシフトを排除する、項目2に記載の方法。
【0014】
(項目4)
上記シフトと、上記さらなるシフトなしでの加算とを実行するように、制御信号を選択するステップをさらに包含する、項目3に記載の方法。
【0015】
(項目5)
それぞれの上記特殊処理ブロックは、2つの上記四乗算器ユニットを備える、項目1に記載の方法。
【0016】
(項目6)
上記加算するステップは、実質的に一つの上記特殊処理ブロックで該加算を実行するステップを包含する、項目5に記載の方法。
【0017】
(項目7)
上記2n×2nの乗算と、上記第一および第二の2n×nの乗算とは、上記第一および第三の四乗算器ユニットを備える上記一つの特殊処理ブロックで実行され、
該2n×2nの乗算と、該第一および第二の2n×nの乗算とを実行するステップは、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのうちのそれぞれ個々の一つに対して、
上記四乗算器ユニットの一つの上記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフトするステップは、該2n×nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、上記方法は、
該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップと、
該2n×2nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該2n×nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該2n×2nの部分積の該最上位ビットの総計を左にシフトするステップと、
該2n×nの部分積の該総計のそれぞれを右にシフトするステップと、
該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックのうちの該一つに入力するステップと、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するステップと
を包含する、項目6に記載の方法。
【0018】
(項目8)
上記2n×2nの部分積の上記左にシフトされた最上位ビットの総計と、上記2n×nの部分積の上記右にシフトされた総計と、上記n×nの乗算の上記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するステップは、
該2n×2nの部分積の該最下位ビットの総計を圧縮するステップと、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮するステップと、
該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮するステップと、
該圧縮の結果を加算するステップと
を包含する、項目7に記載の方法。
【0019】
(項目9)
複数の特殊処理ブロックを有するプログラマブルロジックデバイスであって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該プログラマブルロジックデバイスは、3n×3nの乗算演算を実行するように構成され、該プログラマブルロジックデバイスは、
2n×2nの乗算を実行するように構成されている該四乗算器ユニットの第一のユニットの中に、該n×n乗算器のうちの4つと、
n×nの乗算を実行するように構成されている該四乗算器ユニットの第二のユニットの中に、該n×n乗算器のうちの1つと、
該2n×nの乗算のそれぞれに対して、該n×n乗算器の2つを用いて、第一および第二の2n×nの乗算を実行するように構成されている該四乗算器ユニットの第三のユニットと、
該2n×nの乗算のそれぞれの第二の部分積をシフトして該2n×nの乗算のそれぞれの第二の部分積を、該2n×nの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成されているシフタと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成されている回路網と
を備える、プログラマブルロジックデバイス。
【0020】
(項目10)
上記加算することは、上記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、上記結果を加算することを包含する、項目9に記載の構成されたプログラマブルロジックデバイス。
【0021】
(項目11)
上記プログラマブルロジックデバイスは、上記第一および第二の2n×nの乗算のそれぞれ個々の一つに対して、
上記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を実行することによって、該第一および第二の2n×nの乗算を実行するように構成され、該プログラマブルロジックデバイスは、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトするように構成され、
上記回路網は、部分積のさらなるシフトの排除を追加するように構成されている、項目10に記載の構成されたプログラマブルロジックデバイス。
【0022】
(項目12)
選択制御信号に応答して、上記シフトおよび上記さらなるシフトなしに、上記加算を実行するために、セレクタをさらに備える、項目11に記載の構成されたプログラマブルロジックデバイス。
【0023】
(項目13)
それぞれの上記特殊処理ブロックは、2つの上記四乗算器ユニットを備える、項目9に記載の構成されたプログラマブルロジックデバイス。
【0024】
(項目14)
加算するように構成されている上記回路網は、実質的に一つの上記特殊処理ブロック内に位置する、項目13に記載の構成されたプログラマブルロジックデバイス。
【0025】
(項目15)
上記一つの特殊処理ブロックは、上記2n×2nの乗算と、上記第一および第二の2n×nの乗算とを実行するように構成された上記第一および第三の四乗算器ユニットを備え、
該第一および第三の四乗算器ユニットのそれぞれにおいて、
該2n×2nの乗算と、該第一および第二の2n×nの乗算との該実行することは、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのそれぞれ個々の一つに対して、
上記四乗算器ユニットの一つの上記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフタは、該2n×nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成され、上記構成されたプログラマブルロジックデバイスは、
該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするシフタと、
該2n×2nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該2n×nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該2n×2nの部分積の該最上位ビットの総計を左にシフトする第一の左シフト回路網と、
該2n×nの部分積の該総計のそれぞれを右にシフトする右シフト回路網と、
該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力する第二の左シフト回路網と、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網と
をさらに備える、項目14に記載の構成されたプログラマブルロジックデバイス。
【0026】
(項目16)
上記2n×2nの部分積の上記左にシフトされた最上位ビットの総計と、上記2n×nの部分積の上記右にシフトされた総計と、上記n×nの乗算の上記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網は、
該2n×2nの部分積の該最下位ビットの総計を圧縮する第一の3:2圧縮回路網と、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮する4:2圧縮回路網と、
該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮する第二の3:2圧縮回路網と、
該第一および第二の3:2圧縮回路網の出力と、該4:2の圧縮回路網の出力とを加算する加算回路網と
を備える、項目15に記載の構成されたプログラマブルロジックデバイス。
【0027】
(項目17)
3n×3nの乗算演算を実行するプログラマブルロジックデバイスをプログラマブルに構成する方法を実行するためのマシン実行可能な命令でコード化されたデータ格納媒体であって、該プログラマブルロジックデバイスは、複数の特殊処理ブロックを有し、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該命令は、
該四乗算器ユニットの第一のユニットの中の該n×n乗算器のうちの4つが、2n×2nの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第二のユニットの中の該n×n乗算器のうちの1つが、n×nの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第三のユニットが、該2n×nの乗算のそれぞれに対して、該n×n乗算器のうちの2つを用いて、第一および第二の2n×nの乗算を実行するように構成するための命令と、
シフタが、該2n×nの乗算のそれぞれの第二の部分積をシフトして、該2n×nの乗算のそれぞれの第二の部分積を、該2n×nの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成するための命令と、
回路網が、該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成するための命令と
を含む、データ格納媒体。
【0028】
(項目18)
上記加算するように回路網を構成するための命令は、上記プログラマブルロジックデバイスの汎用プログラマブルロジックが、上記結果を加算するように構成するための命令を含む、項目17に記載のデータ格納媒体。
【0029】
(項目19)
上記プログラマブルロジックデバイスが、上記第一および第二の2n×nの乗算のそれぞれ個々の一つに対して、
該プログラマブルロジックデバイスが、該第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトすることを実行するように構成する命令と
を含む、該第一および第二の2n×nの乗算を実行するように構成する命令を含み、
加算するように上記回路網を構成する命令は、部分積のさらなるシフトを排除するように構成する、項目18に記載のデータ格納媒体。
【0030】
(項目20)
上記命令は、セレクタが選択制御信号に応答して、上記シフトおよび上記さらなるシフトなしに、上記加算を実行するように構成される命令をさらに含む、項目19に記載のデータ格納媒体。
【0031】
(項目21)
上記命令は、プログラマブルロジックデバイスを構成するためであり、それぞれの上記特殊処理ブロックは、2つの上記四乗算器ユニットを備える、項目17に記載のデータ格納媒体。
【0032】
(項目22)
上記命令は、上記回路網を、実質的に一つの上記特殊処理ブロック内で加算するように構成する、項目21に記載のデータ格納媒体。
【0033】
(項目23)
上記命令は、上記2n×2nの乗算と、上記第一および第二の2n×nの乗算とを実行するように構成された上記第一および第三の四乗算器ユニットを構成し;
該命令は、該第一および第三の四乗算器ユニットのそれぞれが、該2n×2nの乗算と、該第一および第二の2n×nの乗算とを実行するように構成し、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのそれぞれの個々の一つの乗算に対して、
該命令は、上記四乗算器ユニットの一つの上記乗算器が、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成することと、
該命令は、該四乗算器ユニットの別の一つの該乗算器が、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成することと
を包含し;
該命令は、上記シフタが、該2n×nの乗算のいずれの個々の最下位ビットの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し;
該命令は、該シフタが該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し;
該命令は、回路網が、該2n×2nの部分積の最上位ビットの最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成し;
該命令は、回路網が、最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、該2n×nの部分積の最上位ビットの総計および最下位ビットの総計を生成するように構成し;
該命令は、第一の左シフト回路網が、該2n×2nの部分積の該最上位ビットの総計を左にシフトするように構成し;
該命令は、右シフト回路網が、該2n×nの部分積の該総計のそれぞれを右にシフトするように構成し;
該命令は、第二の左シフト回路網が、該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力するように構成し;
該命令は、回路網が、該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成する、
項目22に記載のデータ格納媒体。
【0034】
(項目24)
上記2n×2nの部分積の上記左にシフトされた最上位ビットの総計と、上記2n×nの部分積の上記右にシフトされた総計と、上記n×nの乗算の上記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網を構成するための上記命令は、
第一の3:2圧縮回路網が、該2n×2nの部分積の該最下位ビットの総計を圧縮するように構成する命令と、
4:2圧縮回路網が、該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮するように構成する命令と、
第二の3:2圧縮回路網が、該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮するように構成する命令と、
加算回路網が、該第一および第二の3:2圧縮回路網の出力と、該4:2の圧縮回路網の出力とを加算するように構成する命令と
を含む、項目23に記載のデータ格納媒体。
【0035】
(摘要)
乗算器と、これらの乗算器の結果を加算するための回路網とを含むプログラマブルロジックデバイス内の複数の特殊処理ブロックは、加算する前に乗算器の結果をシフトするための選択可能な回路網を、該特殊処理ブロックに追加することによって、より大きな乗算器として構成され得る。一つの実施形態において、このことは、最終的な加算を除く全てが、特殊処理ブロック内で行われ、該最終的な加算は、プログラマブルロジック内で行われることを可能にする。別の実施形態において、追加の圧縮および加算の回路網は、最終的な加算でさえも、特殊処理ブロック内で行われることを可能にする。
【発明を実施するための最良の形態】
【0036】
本発明の上記および他の目的および利点は、添付図面と関連させて、以下の詳細な説明を考慮することによって明らかになる。図面において、同様の参照記号は、図面全体を通じて、同様のパーツを意味する。
【0037】
(発明の詳細な説明)
ここで、本発明が、54ビット×54ビットの乗算に関連して、図1〜図6を参照して記載される。この乗算は、前述のSTRATIX(登録商標)II PLDのDSPブロックの18ビット乗算器上に、良好にマップし、IEEE754−1985規格の下で、二倍精度の乗算をインプリメントするために使用され得る。しかしながら、本発明は、様々なサイズの特殊処理ブロックとともに使用され得る。
【0038】
図1は、54ビット×54ビットの乗算10の部分積12の総計11への分解を示し、部分積12は、18ビット×18ビット乗算器を用いてインプリメントされ、積13を算出し得る。第一の被乗数101において、Aは、18の最上位ビットを含み、Bは、36の最下位ビットを含む。第二の被乗数102において、Cは、18の最上位ビットを含み、Dは、36の最下位ビットを含む。(A,B)×(C,D)の結果は、B×D+((A×D+C×B)<<36)+((A×C)<<72)として、計算され得る。ここで、「<<n」は、これと関連する表現の結果が、位置をn箇所だけ左にシフトされることを意味する。
【0039】
浮動点仮数に要求される中間値は、54ビット乗算を実行するとき、符号を付けられていないこと、すなわち、「01」によって先行された52ビットの仮数を含むことが好ましい。中間値は、図2のように整列され、出力として、36ビットの出力20および3段階の72ビットの加算21を提供する。
【0040】
前述のSTRATIX(登録商標)II PLDのDSPブロックと、同時係属中で、ともに譲渡された米国特許出願第11/447,329号、同第11/447,370号、同第11/447,472号、同第11/447,474号(いずれも2006年6月5日出願)、同第11/426,403号(2006年6月26日出願)、および同第11/458,361号(2006年7月18日出願)(以上の出願のそれぞれは、そのそれぞれの全体を本明細書に参考として援用される)に記載された改良されたDSPブロックとにおいて、4つの乗算器が1つのユニットに配置され、このユニットは、圧縮器、加算器、シフタ、および乗算器とともに、加算するブロックまたはハーフブロックと称され得、様々な部分積を形成する。
【0041】
図1および図2に示される現在の問題に適用されるように、このDSPブロックのアーキテクチャは、36ビット×36ビット乗算(B×D)および18ビット×18ビットッ乗算(A×C)をサポートし得るが、このアーキテクチャのマルチプレクサパターンは、2つの18ビット×36ビット乗算(A×DおよびC×B)をともに加算するために必要な接続をサポートし得えない。18ビット×36ビット乗算のそれぞれは、個々にサポートされるが、その結果は、DSPブロックからルーティングされて、PLDの汎用プログラマブルロジックで加算されなくてはならない。これは、汎用プログラマブルロジックと、ルーティングおよび相互接続とのリソースを大量に消費する。
【0042】
本発明に従うと、DSPブロックの中間マルチプレクサ配列が、上述のDSPブロックに比べると、2つの18ビット×36ビットの乗算の総計が単一の四乗算器ブロック/ハーフブロックで生成されることを可能にするように変更される。結果として、54ビット×54ビットの乗算に必要な部分積の全てが実行され得、単一の四乗算器ブロック/ハーフブロック内で、少なくとも一部は、一緒に総計され得る。
【0043】
図3および図4に示される第一の好ましい実施形態において、被乗数AとDとのペアに対して、Dは、最上位の半分と最下位の半分とに、すなわち、DHとDLとに分割され得る。積A×Dは、次いで、(A×DH)<<18+A×DLとして表され得る。(A×DH)は、好ましくは、乗算器31によって310で提供され、次いで、信号313の制御下にあるマルチプレクサ312によって選択され、シフタ311によって、18ビット左にシフトされる。A×DLは、好ましくは、乗算器32によって320で提供される。積A×Dは、次いで、好ましくは、加算器33で、部分積310と320とを加算することによって提供される。加算器33は、4:2圧縮器と、一緒に連結される30ビット加算器および24ビット加算器(図示せず)とを含み得る。
【0044】
被乗数CとBとの第二のペアは、同様に扱われ、(C×BH)<<18+C×BLを提供し得る。(C×BH)は、好ましくは、乗算器33によって330で提供され、次いで、信号333の制御下にあるマルチプレクサ332によって選択され、シフタ331によって、18ビット左にシフトされる。C×BLは、好ましくは、乗算器34によって340で提供される。積C×Bは、次いで、好ましくは、加算器35で、部分積330と340とを加算することによって提供される。加算器35は、4:2圧縮器と、一緒に連結される30ビット加算器および24ビット加算器(図示せず)とを含み得る。
【0045】
18ビット×36ビットの乗算A×DおよびC×Bの2つの54ビットの総計は、次いで、加算器36で一緒に加算される。加算器36は、4:2圧縮器と、一緒に連結される2つの44ビット加算器(図示せず)とを含み得る。18ビットシフタ37は、この54ビットの加算の目的のために、信号371の制御下にあるマルチプレクサ370によって選択される場合、加算器33の出力を選択的に左にシフトするために提供されるが、合計33(A×D)は、シフトされない。
【0046】
具体的には、信号313、333、371の制御下にある3つのシフタ311、331、37は、特殊処理ブロック30が、多数の機能のために使用されることを可能にする。例えば、4つの18ビット×18ビットの乗算の総計に対して、信号312、332、371のそれぞれは、好ましくは、そのそれぞれのシフトされていない結果を選択するように設定される。単一の36ビット×36ビットの乗算に対して、信号312、332、371のそれぞれは、好ましくは、そのそれぞれのシフトされた結果を選択するように設定される。また、前述されたように、54ビット×54ビットの乗算の2つの18ビット×36ビット部分積を実行するために、信号312、332のそれぞれは、好ましくは、そのそれぞれのシフトされた結果を選択するように設定される一方、信号371は、好ましくは、そのシフトされていない結果を選択するように設定される。
【0047】
図4に見られるように、54ビット×54ビットの乗算は、特殊処理ブロック/ハーフブロック40を用いて、36ビット×36ビットの部分積B×Dを実行することと、特殊処理ブロック/ハーフブロック30を用いて、2つの18ビット×36ビットの部分積A×DおよびC×Bを実行して、総計することと、特殊処理ブロック/ハーフブロック41を用いて、単一の18ビット×18ビットの乗算A×Cを実行することによって、実行される。前述の援用される米国特許出願第11/447,472号に説明されているように、ブロック/ハーフブロック41が、この出願に記載されたものの一つである場合、1つの乗算器410のみを使用することは、第二の乗算器411を犠牲にすることを要求するが、ブロック/ハーフブロック41の中の4つの乗算器410〜413のうちの一つのみが使用されていることに留意されたい。しかしながら、この実施形態において、少なくとも乗算器412、413は、他の目的のために利用可能なままであり、他の実施形態において、乗算器411でさえも利用可能であり得る。
【0048】
図3および図4に示される本発明の実施形態に従って、3つの部分積405、305、および415または部分積の総計は、加算器42によって加算され、加算器42は、好ましくは、特殊処理ブロック40、30、41が一部をなすPLDのプログラマブルロジック内の特殊処理ブロック40、30、41の外側に生成される。
【0049】
図3および図4の実施形態において、最終的な加算42のために、汎用プログラマブルロジック、ルーティング、および相互接続のリソースを使用する必要が、依然としてある。図5に示される第二の好ましい実施形態50において、54ビット×54ビットの乗算は、PLD上の特殊処理ブロックの中で、そのPLDの汎用プログラマブルロジックに実質的に頼ることなく、実質的に全体で実行され得る。実施形態50において、好ましくは、2つの四乗算器ユニット51、52と、第三の四乗算器ユニット53の一部分が、使用される。好ましくは、これらの四乗算器ユニット51〜53のそれぞれは、前述の援用される米国特許出願第11/447,472号に記載された特殊処理ブロックのハーフブロックに基づき、本明細書に記載されるように改変される。したがって、完全な一つのこのようなブロックと、第二のこのようなブロックの一部分とが、好ましくは、使用される。
【0050】
実施形態50において、各ハーフブロック51、52(およびハーフブロック53であるが、一つの乗算器530のみが、このハーフブロック53から使用されるので、全てのコンポーネントは、図示されない)は、好ましくは、4つの18ビット×18ビット乗算器510〜513、520〜523を有し、好ましくは、510〜511、512〜513、520〜521、および522〜523のペアで配置され、好ましくは、各ペアのメンバの出力は、ペアのうちの一つのメンバの出力が、それぞれのシフタ55によって18ビット左にシフトされた後に、それぞれの54ビット加算器541〜544によってともに加算されている。シフタ55のうちの1つ以上は、上記の図3および図4の実施形態に場合のように、プログラマブルにバイパス可能(図示せず)であり得るが、この実施形態において、54ビット×54ビットの乗算を実行するためには、シフタ55は、好ましくは、(たとえ、バイパス可能であっても)バイパスされない。
【0051】
前述の援用される米国特許出願第11/447,472号に記載された特殊処理ブロックにおいて、加算器541の出力と、シフタ545によって18ビット左にシフトされた後の加算器542の出力とは、3:2圧縮器560と、チェーンされた桁上げ/伝播加算器570、571とによって加算される。同様に、加算器543の出力と加算器544の出力とは、3:2圧縮器561と、チェーンされた桁上げ/伝播加算器572、573とによって加算される。本発明に従うと、4:2圧縮器562と、2つの36ビット右シフタ546、547が追加される。幾つかのANDゲート580〜583が、以下に記載されるように、セレクタとして追加されるが、マルチプレクサもまた、その目的のために使用され得、そして、ANDゲート584は、加算器570、571を、加算器572、573と一緒にチェーンにするために追加される。さらに、18ビット右シフタ548およびANDゲート585が、追加され、異なる特殊処理ブロックにあるハーフブロック52、53をブリッジする。シフタ548のようなさらなる18ビット右シフタ(図示せず)およびANDゲート585のようなさらなるANDゲート(図示せず)は、同様の方法で、ハーフブロック51を右にある別のハーフブロック(図示せず)に接続し得る。
【0052】
54ビット×54ビット乗算モードで使用されていないとき、各特殊処理ブロックは、前述の援用される米国特許出願第11/447,472号に示されるように動作する。そのように、ANDゲート580、582、584、および585のそれぞれの第二の入力(図示せず)は、シフタ546〜548が使用中でなく、2つのハーフブロックの桁上げ/伝播加算器のチェーンが離れたままであるように、「0」である。同様に、ANDゲート581、583のそれぞれの第二の入力(図示せず)は、各部分積がそのそれぞれの3:2圧縮器または4:2圧縮器に直接供給されるように、「1」である。この場合、ANDゲート580の第二の入力が「0」のとき、4:2圧縮器562は、3:2圧縮器560、561のように機能することに留意されたい。
【0053】
特殊処理ブロックが、54ビット×54ビット乗算モードで使用されているとき、ANDゲート580、582、584、および585のそれぞれの第二の入力(図示せず)は、シフタ546〜548が使用中であり、2つのハーフブロックの桁上げ/伝播加算器チェーンが接続されるように、「1」である。なぜなら、これは、72ビット加算であるので、44ビット加算器571から44ビット加算器572への(ANDゲート584を介する)桁上げは、好ましくは、加算器571の末尾から採られないが、好ましくは、加算器571の29番目のビットから採られる。加算器571の29番目のビットは、加算器570を含むと、73番目のビット位置であり、72ビット加算からの桁上げを表す。桁上げは、2つ以上の特殊処理ブロックに依存するが、この配置は、PLDの汎用プログラマブルロジックに、実質的に依存することなく、部分積の全てを一緒に加算する。
【0054】
図6は、どのように、4:2圧縮器562が、2つの3:2圧縮器560(または561)から構成され得るかを概略的に示す。
【0055】
したがって、PLDの2つ以上の特殊処理ブロックを要求する大きな乗算が、PLDの汎用プログラマブルリソースをわずかに使用して、あるいは全く使用せずに、実行され得ることが理解される。
【0056】
本発明に従うこのような回路網を組み込むPLD280は、多種の電子デバイスに使用され得る。一つの使用の可能性は、図7に示されるデータ処理システム900においてである。データ処理システム900は、以下のコンポーネント、すなわち、プロセッサ281、メモリ282、I/O回路網283、および周辺デバイス284のうちの1つ以上を含み得る。これらのコンポーネントは、システムバス285によって一緒に結合され、エンドユーザシステム287に含まれる回路基板286上に設置される。
【0057】
システム900は、コンピュータネットワーク化、データネットワーク化、計装、ビデオ処理、デジタル信号処理、あるいはプログラマブルロジックまたは再プログラマブルロジックの使用の利点が望ましい任意の他のアプリケーションのような広範なアプリケーションにおいて使用され得る。PLD280は、様々な異なるロジック機能を実行するために使用され得る。例えば、PLD280は、プロセッサ281と協働するプロセッサまたはコントローラとして構成され得る。PLD280はまた、システム900における共有リソースへのアクセスに対する決定を下すアービタとしても使用され得る。またさらなる別の例において、PLD280は、プロセッサ281とシステム900内の他のコンポーネントの一つとの間のインタフェースとして構成され得る。システム900は、単に例示的なものであることと、本発明の真の範囲および精神は、添付の請求項によって示されるべきであることとは、留意されるべきである。
【0058】
様々な技術が、上述され、本発明に組み込まれるようなPLD280をインプリメントするために、使用され得る。
【0059】
本発明に従う方法を実行するための命令は、マシン読み取り可能な媒体上にコード化され、PLDをプログラムするための本発明の方法をインプリメントするために、適切なコンピュータまたは同様のデバイスによって実行され得る。例えば、パーソナルコンピュータは、PLDが接続され得るインタフェースを備え得、このパーソナルコンピュータは、カリフォルニア州San JoseのAltera Corporationより入手可能なQUARTUS(登録商標)IIソフトウェアのような適切なソフトウェアツールを用いて、PLDをプログラムするために、ユーザによって、使用され得る。
【0060】
図8は、マシン実行可能なプログラムを用いて、コード化され得る磁気データ格納媒体600の断面図を示す。このプログラムは、上述のパーソナルコンピュータ、または他のコンピュータ、あるいは同様のデバイスのようなシステムによって実行され得る。媒体600は、フロッピー(登録商標)ディスケット、またはハードディスク、あるいは磁気テープであり得、これらは、従来型であり得る適切な基板601と、磁気ドメイン(図示せず)を含む片面上または両面上に、従来型であり得る適切なコーティング602とを、有する。この磁気ドメインの極性または配向は、磁気的に変化され得る。この媒体が磁気テープの場合を除くと、媒体600はまた、ディスクドライブまたは他のデータ格納デバイスのスピンドルを受けるために、開口部(図示せず)を有し得る。
【0061】
媒体600のコーティング602の磁気ドメインは、マシン実行可能なプログラムを、従来型であり得る方法でコード化するために、極性を与えられるか、あるいは配向される。このプログラムは、パーソナルコンピュータ、または他のコンピュータ、あるいは他の同様のシステムのようなプログラミングシステムによって実行するためのものであり、このシステムは、プログラムされるPLDが挿入され得るソケットまたは周辺機器アタッチメントを有し、本発明に従って、特殊処理ブロックがある場合には、そのPLDの特殊処理ブロックを含むPLDの適切な部分を構成する。
【0062】
図9は、これもまた、そのようなマシン実行可能なプログラムを用いて、コード化され得る光学的に読み取り可能なデータ格納媒体700の断面図を示す。このプログラムは、上述のパーソナルコンピュータ、または他のコンピュータ、あるいは同様のデバイスのようなシステムによって実行され得る。媒体700は、従来型コンパクトディスク読み出し専用メモリ(CD−ROM)、またはデジタルビデオディスク読み出し専用メモリ(DVD−ROM)、あるいは、CD−R、CD−RW、DVD−R、DVD−RW、DVD+R、DVD+RW、またはDVD−RAMのような再書き込み可能な媒体、もしくは光学的に読み取り可能で、磁気光学的に再書き込み可能である磁気光学ディスクであり得る。媒体700は、好ましくは、従来型であり得る適切な基板701と、通常は基板701の片面上または両面上に、従来型であり得る適切なコーティング702とを有し得る。
【0063】
CDベースの媒体またはDVDベースの媒体の場合、周知のように、コーティング702は、反射性であり、マシン実行可能なプログラムをコード化するために、1つ以上の層上に配置された複数のピット703で刻印される。ピットの配置は、コーティング702からレーザ光を反射することによって読み取られる。好ましくは、実質的に透過性である保護コーティング704が、コーティング702の上に提供される。
【0064】
磁気光学ディスクの場合、周知のように、コーティング702は、ピット703を有さないが、複数の磁気ドメインを有し、この磁気ドメインの極性または配向は、例えば、レーザ(図示せず)によって、特定の温度を超えて熱せられるとき、磁気的に変化され得る。ドメインの配向は、コーティング702から反射されたレーザ光の極性を測定することによって読み取られ得る。これらのドメインの配置は、上述されたようなプログラムをコード化する。
【0065】
以上は、本発明の原理の単なる例示であることと、様々な改変が、本発明の範囲および精神から逸脱することなく、当業者によってなされ得ることとが、理解される。例えば、本発明の様々な要素は、所望の数および/または配置で、PLD上に提供され得る。本発明が、例示の目的のために提供され、限定することが目的としない上述された実施形態以外の実施形態によって実行され得ることと、本発明が、添付の請求項によってのみ限定されることとを、当業者は理解する。
【図面の簡単な説明】
【0066】
【図1】図1は、54ビット×54ビット乗算の部分積の和への分解の図である。
【図2】図2は、図1の部分積を加算するための配列の図である。
【図3】図3は、本発明の第一の好ましい実施形態に使用するための特殊処理ブロックの一部分の概略図である。
【図4】図4は、本発明の第一の好ましい実施形態における54ビット×54ビットの乗算の実行の概略図である。
【図5】図5は、本発明の第二の好ましい実施形態に使用するための特殊処理ブロックのグループの概略図である。
【図6】図6は、図5の実施形態に使用される4:2圧縮器の概略図である。
【図7】図7は、本発明を組み込んでいるプログラマブルロジックデバイスを用いる例示的なシステムの簡略ブロック図である。
【図8】図8は、本発明に従う方法を実行するためのマシン実行可能な命令のセットでコード化された磁気データ格納媒体の断面図である。
【図9】図9は、本発明に従う方法を実行するためのマシン実行可能な命令のセットでコード化された光学的に読み取り可能なデータ格納媒体の断面図である。
【符号の説明】
【0067】
30、40、41、51〜53 特殊処理ブロック/ハーフブロック
31〜34、410〜413、510〜513、520〜523 乗算器
33、35、36、42、541〜544、570〜573 加算器
305、310、320、330、340、405、415 部分積
332 マルチプレクサ
37、55、311、331、545〜548 シフタ
313、333、371 信号
560、561 3:2圧縮器
562 4:2圧縮器
572、573 桁上げ/伝播加算器
580〜585 ANDゲート

【特許請求の範囲】
【請求項1】
複数の特殊処理ブロックを有するプログラマブルロジックデバイスにおける使用のための、3n×3nの乗算演算を実行する方法であって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該方法は、
該四乗算器ユニットの第一のユニットで、該n×n乗算器の4つを用いて、2n×2nの乗算を実行するステップと、
該四乗算器ユニットの第二のユニットで、該n×n乗算器の1つを用いて、n×nの乗算を実行するステップと、
該2n×nの乗算のそれぞれに対して該n×n乗算器のうちの2つを用いて、該四乗算器ユニットの第三のユニットで、第一および第二の2n×nの乗算を実行するステップと、
該第三の四乗算器ユニット内で加算のために、該2n×nの乗算のそれぞれの第二の部分積をシフトして、該2n×nの乗算のそれぞれの第二の部分積を該2n×nの乗算のそれぞれの第一の部分積と整列させるステップと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するステップと
を包含する、方法。
【請求項2】
前記加算するステップは、前記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、前記結果を加算するステップを包含する、請求項1に記載の方法。
【請求項3】
前記第一および第二の2n×nの乗算を実行するステップは、該第一および第二の2n×nの乗算のうちのそれぞれ個々に対して、
前記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
前記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
前記シフトするステップは、個々の最下位ビットのいずれの部分積もシフトすることなく、それぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、
該第三の四乗算器ユニット内での前記加算は、部分積のさらなるシフトを排除する、請求項2に記載の方法。
【請求項4】
前記シフトと、前記さらなるシフトなしでの加算とを実行するように、制御信号を選択するステップをさらに包含する、請求項3に記載の方法。
【請求項5】
それぞれの前記特殊処理ブロックは、2つの前記四乗算器ユニットを備える、請求項1に記載の方法。
【請求項6】
前記加算するステップは、実質的に一つの前記特殊処理ブロックで該加算を実行するステップを包含する、請求項5に記載の方法。
【請求項7】
前記2n×2nの乗算と、前記第一および第二の2n×nの乗算とは、前記第一および第三の四乗算器ユニットを備える前記一つの特殊処理ブロックで実行され、
該2n×2nの乗算と、該第一および第二の2n×nの乗算とを実行するステップは、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのうちのそれぞれ個々の一つに対して、
前記四乗算器ユニットの一つの前記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
前記シフトするステップは、該2n×nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、前記方法は、
該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップと、
該2n×2nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該2n×nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該2n×2nの部分積の該最上位ビットの総計を左にシフトするステップと、
該2n×nの部分積の該総計のそれぞれを右にシフトするステップと、
該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックのうちの該一つに入力するステップと、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するステップと
を包含する、請求項6に記載の方法。
【請求項8】
前記2n×2nの部分積の前記左にシフトされた最上位ビットの総計と、前記2n×nの部分積の前記右にシフトされた総計と、前記n×nの乗算の前記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するステップは、
該2n×2nの部分積の該最下位ビットの総計を圧縮するステップと、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮するステップと、
該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮するステップと、
該圧縮の結果を加算するステップと
を包含する、請求項7に記載の方法。
【請求項9】
複数の特殊処理ブロックを有するプログラマブルロジックデバイスであって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該プログラマブルロジックデバイスは、3n×3nの乗算演算を実行するように構成され、該プログラマブルロジックデバイスは、
2n×2nの乗算を実行するように構成されている該四乗算器ユニットの第一のユニットの中に、該n×n乗算器のうちの4つと、
n×nの乗算を実行するように構成されている該四乗算器ユニットの第二のユニットの中に、該n×n乗算器のうちの1つと、
該2n×nの乗算のそれぞれに対して、該n×n乗算器の2つを用いて、第一および第二の2n×nの乗算を実行するように構成されている該四乗算器ユニットの第三のユニットと、
該2n×nの乗算のそれぞれの第二の部分積をシフトして該2n×nの乗算のそれぞれの第二の部分積を、該2n×nの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成されているシフタと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成されている回路網と
を備える、プログラマブルロジックデバイス。
【請求項10】
前記加算することは、前記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、前記結果を加算することを包含する、請求項9に記載の構成されたプログラマブルロジックデバイス。
【請求項11】
前記プログラマブルロジックデバイスは、前記第一および第二の2n×nの乗算のそれぞれ個々の一つに対して、
前記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
前記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を実行することによって、該第一および第二の2n×nの乗算を実行するように構成され、該プログラマブルロジックデバイスは、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトするように構成され、
前記回路網は、部分積のさらなるシフトの排除を追加するように構成されている、請求項10に記載の構成されたプログラマブルロジックデバイス。
【請求項12】
選択制御信号に応答して、前記シフトおよび前記さらなるシフトなしに、前記加算を実行するために、セレクタをさらに備える、請求項11に記載の構成されたプログラマブルロジックデバイス。
【請求項13】
それぞれの前記特殊処理ブロックは、2つの前記四乗算器ユニットを備える、請求項9に記載の構成されたプログラマブルロジックデバイス。
【請求項14】
加算するように構成されている前記回路網は、実質的に一つの前記特殊処理ブロック内に位置する、請求項13に記載の構成されたプログラマブルロジックデバイス。
【請求項15】
前記一つの特殊処理ブロックは、前記2n×2nの乗算と、前記第一および第二の2n×nの乗算とを実行するように構成された前記第一および第三の四乗算器ユニットを備え、
該第一および第三の四乗算器ユニットのそれぞれにおいて、
該2n×2nの乗算と、該第一および第二の2n×nの乗算との該実行することは、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのそれぞれ個々の一つに対して、
前記四乗算器ユニットの一つの前記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
前記シフタは、該2n×nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成され、前記構成されたプログラマブルロジックデバイスは、
該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするシフタと、
該2n×2nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該2n×nの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該2n×2nの部分積の該最上位ビットの総計を左にシフトする第一の左シフト回路網と、
該2n×nの部分積の該総計のそれぞれを右にシフトする右シフト回路網と、
該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力する第二の左シフト回路網と、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網と
をさらに備える、請求項14に記載の構成されたプログラマブルロジックデバイス。
【請求項16】
前記2n×2nの部分積の前記左にシフトされた最上位ビットの総計と、前記2n×nの部分積の前記右にシフトされた総計と、前記n×nの乗算の前記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網は、
該2n×2nの部分積の該最下位ビットの総計を圧縮する第一の3:2圧縮回路網と、
該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮する4:2圧縮回路網と、
該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮する第二の3:2圧縮回路網と、
該第一および第二の3:2圧縮回路網の出力と、該4:2の圧縮回路網の出力とを加算する加算回路網と
を備える、請求項15に記載の構成されたプログラマブルロジックデバイス。
【請求項17】
3n×3nの乗算演算を実行するプログラマブルロジックデバイスをプログラマブルに構成する方法を実行するためのマシン実行可能な命令でコード化されたデータ格納媒体であって、該プログラマブルロジックデバイスは、複数の特殊処理ブロックを有し、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも4つのn×n乗算器を有し、該命令は、
該四乗算器ユニットの第一のユニットの中の該n×n乗算器のうちの4つが、2n×2nの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第二のユニットの中の該n×n乗算器のうちの1つが、n×nの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第三のユニットが、該2n×nの乗算のそれぞれに対して、該n×n乗算器のうちの2つを用いて、第一および第二の2n×nの乗算を実行するように構成するための命令と、
シフタが、該2n×nの乗算のそれぞれの第二の部分積をシフトして、該2n×nの乗算のそれぞれの第二の部分積を、該2n×nの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成するための命令と、
回路網が、該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成するための命令と
を含む、データ格納媒体。
【請求項18】
前記加算するように回路網を構成するための命令は、前記プログラマブルロジックデバイスの汎用プログラマブルロジックが、前記結果を加算するように構成するための命令を含む、請求項17に記載のデータ格納媒体。
【請求項19】
前記プログラマブルロジックデバイスが、前記第一および第二の2n×nの乗算のそれぞれ個々の一つに対して、
該プログラマブルロジックデバイスが、該第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、前記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトすることを実行するように構成する命令と
を含む、該第一および第二の2n×nの乗算を実行するように構成する命令を含み、
加算するように前記回路網を構成する命令は、部分積のさらなるシフトを排除するように構成する、請求項18に記載のデータ格納媒体。
【請求項20】
前記命令は、セレクタが選択制御信号に応答して、前記シフトおよび前記さらなるシフトなしに、前記加算を実行するように構成される命令をさらに含む、請求項19に記載のデータ格納媒体。
【請求項21】
前記命令は、プログラマブルロジックデバイスを構成するためであり、それぞれの前記特殊処理ブロックは、2つの前記四乗算器ユニットを備える、請求項17に記載のデータ格納媒体。
【請求項22】
前記命令は、前記回路網を、実質的に一つの前記特殊処理ブロック内で加算するように構成する、請求項21に記載のデータ格納媒体。
【請求項23】
前記命令は、前記2n×2nの乗算と、前記第一および第二の2n×nの乗算とを実行するように構成された前記第一および第三の四乗算器ユニットを構成し;
該命令は、該第一および第三の四乗算器ユニットのそれぞれが、該2n×2nの乗算と、該第一および第二の2n×nの乗算とを実行するように構成し、該2n×2nの乗算と、該第一および第二の2n×nの乗算とのそれぞれの個々の一つの乗算に対して、
該命令は、前記四乗算器ユニットの一つの前記乗算器が、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成することと、
該命令は、該四乗算器ユニットの別の一つの該乗算器が、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成することと
を包含し;
該命令は、前記シフタが、該2n×nの乗算のいずれの個々の最下位ビットの部分積もシフトすることなしに、該2n×nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し;
該命令は、該シフタが該2n×2nの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該2n×2nの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し;
該命令は、回路網が、該2n×2nの部分積の最上位ビットの最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成し;
該命令は、回路網が、最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、該2n×nの部分積の最上位ビットの総計および最下位ビットの総計を生成するように構成し;
該命令は、第一の左シフト回路網が、該2n×2nの部分積の該最上位ビットの総計を左にシフトするように構成し;
該命令は、右シフト回路網が、該2n×nの部分積の該総計のそれぞれを右にシフトするように構成し;
該命令は、第二の左シフト回路網が、該n×nの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力するように構成し;
該命令は、回路網が、該2n×2nの部分積の該左にシフトされた最上位ビットの総計と、該2n×nの部分積の該右にシフトされた総計と、該n×nの乗算の該左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成する、
請求項22に記載のデータ格納媒体。
【請求項24】
前記2n×2nの部分積の前記左にシフトされた最上位ビットの総計と、前記2n×nの部分積の前記右にシフトされた総計と、前記n×nの乗算の前記左にシフトされた出力と、該2n×2nの部分積の該最下位ビットの総計とを加算するように構成されている回路網を構成するための前記命令は、
第一の3:2圧縮回路網が、該2n×2nの部分積の該最下位ビットの総計を圧縮するように構成する命令と、
4:2圧縮回路網が、該2n×2nの部分積の該左にシフトされた最上位ビットの総計を、該2n×nの部分積の該右にシフトされた総計の第一の総計とともに圧縮するように構成する命令と、
第二の3:2圧縮回路網が、該n×nの乗算の該左にシフトされた出力を、該2n×nの部分積の該右にシフトされた総計の第二の総計とともに圧縮するように構成する命令と、
加算回路網が、該第一および第二の3:2圧縮回路網の出力と、該4:2の圧縮回路網の出力とを加算するように構成する命令と
を含む、請求項23に記載のデータ格納媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2008−146644(P2008−146644A)
【公開日】平成20年6月26日(2008.6.26)
【国際特許分類】
【出願番号】特願2007−311579(P2007−311579)
【出願日】平成19年11月30日(2007.11.30)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】