(57)【特許請求の範囲】
【請求項１】
特殊処理ブロックの各々が第１の数の乗算器のユニット内に配置された第１の乗算器サイズの複数の乗算器を有している複数の特殊処理ブロックを有する集積回路における使用のための、前記第１の乗算器サイズよりも大きい第２の乗算器サイズの乗算演算を実行する方法であって、
前記方法は、
前記第２の乗算器サイズの乗算演算を異なるサイズの複数の乗算演算に分解することであって、前記異なるサイズの各々は、前記第２の乗算器サイズよりも小さい、ことと、
前記ユニットのうちの第１のユニットにおける前記第１の数の乗算器を用いて前記異なるサイズのうちの第１のサイズの乗算演算を実行することと、
前記ユニットのうちの前記第１のユニットとは異なる前記ユニットのうちの第２のユニットにおける前記乗算器のうちの１つを用いて前記異なるサイズのうちの第１のサイズよりも小さい前記異なるサイズのうちの第２のサイズの乗算演算を実行することと、
前記異なるサイズのうちの第３のサイズの複数の乗算演算を、前記異なるサイズのうちの第３のサイズの乗算演算のうちの各それぞれの乗算演算に対して、前記ユニットのうちの前記第１のユニット、前記第２のユニットとは異なる前記ユニットのうちの第３のユニットにおける乗算器のそれぞれのサブセットを用いて、実行することであって、前記第３のサイズは、前記異なるサイズのうちの第１のサイズよりも小さく、かつ、前記異なるサイズのうちの第２のサイズよりも大きい、ことと、
前記ユニットのうちの第３のユニット内の加算のために、前記異なるサイズのうちの第３のサイズの複数の乗算演算の出力を整列させて、前記異なるサイズのうちの第３のサイズの乗算演算の結果を形成することと、
前記異なるサイズのうちの前記第１、第２、第３のサイズの乗算演算の結果を加算することと
を含む、方法。
【請求項２】
前記集積回路は、プログラマブルロジックデバイスであり、
前記加算することは、前記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて前記結果を加算することを含む、請求項１に記載の方法。
【請求項３】
前記異なるサイズのうちの第３のサイズの複数の乗算演算を実行することは、前記異なるサイズのうちの第３のサイズの複数の乗算演算の各それぞれに対して、
それぞれの最上位ビット部分積を形成することと、
それぞれの最下位ビット部分積を形成することと
を含み、
前記整列させることは、それぞれの最下位ビット部分積のいずれもシフトさせることなしに、各それぞれの最上位ビット部分積をシフトさせることを含み、
前記ユニットのうちの第３のユニット内の前記加算は、部分積のさらなるシフトを排除する、請求項１に記載の方法。
【請求項４】
前記シフトと、前記さらなるシフトなしでの加算とを実行するために、制御信号を選択することをさらに含む、請求項３に記載の方法。
【請求項５】
前記特殊処理ブロックのそれぞれは、前記ユニットのうちの２つを含む、請求項１に記載の方法。
【請求項６】
前記加算することは、実質的に前記特殊処理ブロックのうちの１つにおいて前記加算することを実行することを含む、請求項５に記載の方法。
【請求項７】
前記加算することは、圧縮することを含む、請求項６に記載の方法。
【請求項８】
特殊処理ブロックの各々が第１の数の乗算器のユニット内に配置された第１の乗算器サイズの複数の乗算器を有している複数の特殊処理ブロックを有する集積回路であって、
前記集積回路は、第２の乗算器サイズの乗算演算を異なるサイズの複数の乗算演算に分解することにより、前記第１の乗算器サイズよりも大きい第２の乗算器サイズの乗算演算を実行するように構成されており、前記異なるサイズのそれぞれは、前記第２の乗算器サイズよりも小さく、
前記集積回路は、
前記異なるサイズのうちの第１のサイズの乗算演算を実行するように構成された前記ユニットのうちの第１のユニットにおける前記第１の数の乗算器と、
前記異なるサイズのうちの第１のサイズよりも小さい前記異なるサイズのうちの第２のサイズの乗算演算を実行するように構成された、前記ユニットのうちの前記第１のユニットとは異なる前記ユニットのうちの第２のユニットにおける前記乗算器のうちの１つと、
前記異なるサイズのうちの第３のサイズの複数のそれぞれの乗算演算を実行するように構成された、前記ユニットのうちの前記第１のユニット、前記第２のユニットとは異なる前記ユニットのうちの第３のユニットにおける前記乗算器のうちの複数のそれぞれのサブセットであって、前記第３のサイズは、前記異なるサイズのうちの第１のサイズよりも小さく、かつ、前記異なるサイズのうちの第２のサイズよりも大きい、サブセットと、
前記ユニットのうちの第３のユニット内の加算のために、前記異なるサイズのうちの第３のサイズの複数の乗算演算の出力を整列させて、前記異なるサイズのうちの第３のサイズの乗算演算の結果を形成するように構成されたシフタと、
前記異なるサイズのうちの前記第１、第２、第３のサイズの乗算演算の結果を加算するように構成された回路網と
を含む、集積回路。
【請求項９】
前記集積回路は、プログラマブルロジックデバイスであり、
前記加算するように構成された回路網は、前記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて構成されている、請求項８に記載の集積回路。
【請求項１０】
前記異なるサイズのうちの第３のサイズのそれぞれの乗算演算のうちの１つを実行するように構成された前記ユニットのうちの第３のユニットにおける前記乗算器のそれぞれのサブセットの各々は、それぞれの最上位ビット部分積を形成し、かつ、それぞれの最下位ビット部分積を形成し、
前記シフタは、最下位ビット部分積のいずれもシフトさせることなしに、各それぞれの最上位ビット部分積をシフトさせ、
前記加算するように構成された回路網は、部分積のさらなるシフトを排除する、請求項８に記載の集積回路。
【請求項１１】
選択制御信号に応答して、前記シフタと、前記加算するように構成された回路網とを制御するセレクタをさらに含む、請求項１０に記載の集積回路。
【請求項１２】
前記特殊処理ブロックの各々は、前記ユニットのうちの２つを含む、請求項８に記載の集積回路。
【請求項１３】
前記加算するように構成された回路網は、実質的に前記特殊処理ブロックのうちの１つ内に配置される、請求項１２に記載の集積回路。
【請求項１４】
前記加算するように構成された回路網は、圧縮器を含む、請求項８に記載の集積回路。
【請求項１５】
不揮発性機械実行可能命令がエンコードされている不揮発性データ格納媒体であって、前記命令は、第２の乗算器サイズの乗算演算を異なるサイズの複数の乗算演算に分解することにより、第１の乗算器サイズよりも大きい第２の乗算器サイズの乗算演算を実行するように集積回路をプログラム可能に構成する方法を実行するためのものであり、前記異なるサイズの各々は、前記第２の乗算器サイズよりも小さく、前記集積回路は、複数の特殊処理ブロックを有し、前記特殊処理ブロックの各々は、第１の数の乗算器のユニット内に配置された前記第１の乗算器サイズの複数の乗算器を有しており、
前記命令は、
前記ユニットのうちの第１のユニットにおける前記第１の数の乗算器が、前記異なるサイズのうちの第１のサイズの乗算演算を実行するように構成するための命令と、
前記ユニットのうちの前記第１のユニットとは異なる前記ユニットのうちの第２のユニットにおける前記乗算器のうちの１つが、前記異なるサイズのうちの第１のサイズよりも小さい前記異なるサイズのうちの第２のサイズの乗算演算を実行するように構成するための命令と、
前記異なるサイズのうちの第３のサイズの複数のそれぞれの乗算演算を実行するように構成された、前記ユニットのうちの前記第１のユニット、前記第２のユニットとは異なる前記ユニットのうちの第３のユニットにおける乗算器の複数のそれぞれのサブセットを構成するための命令であって、前記第３のサイズは、前記異なるサイズのうちの第１のサイズよりも小さく、かつ、前記異なるサイズのうちの第２のサイズよりも大きい、命令と、
シフタが、前記ユニットのうちの第３のユニット内の加算のために、前記異なるサイズのうちの第３のサイズの複数の乗算演算の出力を整列させて、前記異なるサイズのうちの第３のサイズの乗算演算の結果を形成するように構成するための命令と、
前記回路網が、前記異なるサイズのうちの前記第１、第２、第３のサイズの乗算演算の結果を加算するように構成するための命令と
を含む、データ格納媒体。
【請求項１６】
前記集積回路を構成するための命令は、プログラマブルロジックデバイスを構成するためのものであり、
回路網が加算するように構成するための命令は、前記結果を加算するように前記プログラマブルロジックデバイスの汎用プログラマブルロジックを構成するための命令を含む、請求項１５に記載のデータ格納媒体。
【請求項１７】
前記ユニットのうちの第３のユニットにおける乗算器のそれぞれのサブセットの各々が、前記異なるサイズのうちの第３のサイズのそれぞれの乗算演算のうちの１つを実行して、それぞれの最上位ビット部分積を形成し、かつ、それぞれの最下位ビット部分積を形成するように構成するための命令と、
前記シフタが、いずれの最下位ビット部分積もシフトさせることなく、各それぞれの最上位ビット部分積をシフトさせるように構成するための命令と、
前記加算するように構成された回路網が、部分積のさらなるシフトを排除するように構成するための命令と
を含む、請求項１５に記載のデータ格納媒体。
【請求項１８】
前記命令は、セレクタが、選択制御信号に応答して、前記シフタと、前記加算するように構成された回路網とを制御するように構成するための命令をさらに含む、請求項１７に記載のデータ格納媒体。
【請求項１９】
前記命令は、プログラマブルロジックデバイスを構成するためのものであり、前記特殊処理ブロックの各々は、前記ユニットのうちの２つを含み、
前記命令は、前記回路網が、実質的に前記特殊処理ブロックのうちの１つ内で加算するように構成する、請求項１５に記載のデータ格納媒体。
【請求項２０】
前記加算するように構成された回路網を構成するための命令は、圧縮器を構成するための命令を含む、請求項１５に記載のデータ格納媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の背景）
本発明は、プログラマブルロジックデバイス（ＰＬＤ）に関し、より具体的には、大きな乗算を実行するために、このようなデバイスに含まれ得る特殊処理ブロックの使用に関する。
【背景技術】
【０００２】
ＰＬＤが使用されるアプリケーションが、複雑さを増すにつれて、ＰＬＤを設計するために、一般的なプログラマブルロジックリソースのブロックに加え、特殊処理ブロックを含めることが、ますます一般的になってきた。このような特殊処理ブロックは、論理演算または数学演算のような一つ以上の特定のタスクを実行するために、部分的あるいは完全にハードワイヤ接続されたＰＬＤ上に回路網の集結を含み得る。特殊処理ブロックはまた、構成可能なメモリ素子のアレイのような一つ以上の特殊構造も含み得る。一般的に、このような特殊処理ブロックでインプリメントされる構造の例は、乗算器、演算論理ユニット（ＡＬＵ）、バレルシフタ、様々なメモリ素子（例えば、ＦＩＦＯ／ＬＩＦＯ／ＳＩＰＯ／ＲＡＭ／ＲＯＭ／ＣＡＭブロックおよびレジスタファイル）、ＡＮＤ／ＮＡＮＤ／ＯＲ／ＮＯＲアレイなど、またはこれらの組み合わせを含む。
【０００３】
ＰＬＤ上に提供されている特殊処理ブロックの一つの特に有用なタイプは、デジタル信号処理（ＤＳＰ）ブロックであり、このブロックは、例えば、オーディオ信号を処理するために使用され得る。このようなブロックはまた、しばしば、乗累算（「ＭＡＣ」）ブロックとも称される。なぜなら、これらのブロックは、乗算演算と、乗算演算の総計および／または累算とを実行するための構造を含むからである。
【０００４】
例えば、カリフォルニア州Ｓａｎ  ＪｏｓｅのＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎより、ＳＴＲＡＴＩＸ（登録商標）ＩＩの名で販売されているＰＬＤは、複数のＤＳＰブロックを含み、それらのブロックのそれぞれは、４つの１８×１８乗算器を含む。これらのＤＳＰブロックのそれぞれはまた、加算器およびレジスタ、ならびにプログラマブルコネクタ（例えば、マルチプレクサ）を含み、これらのコネクタは、様々なコンポーネントが異なる方法で構成されることを可能にする。このようなブロックのそれぞれにおいて、乗算器は、４つの個々の１８×１８乗算器として構成されるのみならず、４つのより小規模な乗算器として、または１つのより大きな乗算器（３６×３６）として構成され得る。さらに、１つの１８×１８の複素数乗算（実数部および虚数部のそれぞれに対し、２つの１８×１８乗算演算に分解する）が実行され得る。
【０００５】
このようなＤＳＰブロックは、３６×３６と同じ規模の乗算器として構成され得るが、ユーザは、より大きな乗算器を生成することを欲し得る。例えば、３６×３６乗算器は、ＩＥＥＥ７５４−１９８５規格の下で、２５×２５の単精度の乗算をサポートするものの、二倍精度の乗算に対しては、あまりにも小さい。幾つかのＤＳＰブロックからの乗算器は、二倍精度の乗算をインプリメントするために、一緒に使用され得るものの、乗算器を相互接続するために必要とされるロジックは、今まで、ユーザによって、ＤＳＰブロック外部の汎用プログラマブルロジックの中にプログラムされてきた。このため、該ロジックを低速で非効率にし、他の使用に当てられ得る汎用リソースを消費することになる。
【発明の概要】
【課題を解決するための手段】
【０００６】
（発明の概要）
本発明は、ＰＬＤのための特殊処理ブロックに関し、該ブロックは、該ブロック内に、ロジックを提供され、任意の単一の特殊処理ブロック内で実行され得るものよりも大きな乗算の実行を容易にして、ＰＬＤの汎用プログラマブルリソースへの依存を低減または排除する。
【０００７】
一つの実施形態において、部分積の全てが特殊処理ブロック内で計算され得るように、追加のシフトリソースが、特殊処理ブロック内に提供されるが、これらの積の最終的な加算は、汎用プログラマブルロジック内の特殊処理ブロックの外部で行われる。別の実施形態において、実質的に全ての加算が、ＰＬＤの汎用プログラマブルリソースに依存することなく、実行され得るように、追加のシフトおよび加算のリソースが特殊処理ブロックに追加される。
【０００８】
本発明に従うと、複数の特殊処理ブロックを有するプログラマブルロジックデバイスにおける使用のための、３ｎ×３ｎの乗算演算を実行する方法であって、該特殊処理ブロックのそれぞれは、四乗算器（ｆｏｕｒ−ｍｕｌｔｉｐｌｉｅｒ）ユニットに配置された少なくとも４つのｎ×ｎ乗算器を有する、方法が提供される。該方法は、該四乗算器ユニットの第一のユニットで、該ｎ×ｎ乗算器の４つを用いて、２ｎ×２ｎの乗算を実行するステップと、該四乗算器ユニットの第二のユニットで、該ｎ×ｎ乗算器の１つを用いて、ｎ×ｎの乗算を実行するステップと、該２ｎ×ｎの乗算のそれぞれに対して該ｎ×ｎ乗算器のうちの２つを用いて、該四乗算器ユニットの第三のユニットで、第一および第二の２ｎ×ｎの乗算を実行するステップと、該第三の四乗算器ユニット内で加算のために、該２ｎ×ｎの乗算のそれぞれの第二の部分積をシフトして、該２ｎ×ｎの乗算のそれぞれの第二の部分積を該２ｎ×ｎの乗算のそれぞれの第一の部分積と整列させるステップと、該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するステップとを包含する。
【０００９】
上記方法を実行するように構成されたプログラマブルロジックデバイス、および該プログラマブルロジックデバイスを設定するためのソフトウェアもまた、提供される。
【００１０】
本発明は、さらに、以下の手段を提供する。
【００１１】
（項目１）
複数の特殊処理ブロックを有するプログラマブルロジックデバイスにおける使用のための、３ｎ×３ｎの乗算演算を実行する方法であって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも４つのｎ×ｎ乗算器を有し、該方法は、
該四乗算器ユニットの第一のユニットで、該ｎ×ｎ乗算器の４つを用いて、２ｎ×２ｎの乗算を実行するステップと、
該四乗算器ユニットの第二のユニットで、該ｎ×ｎ乗算器の１つを用いて、ｎ×ｎの乗算を実行するステップと、
該２ｎ×ｎの乗算のそれぞれに対して該ｎ×ｎ乗算器のうちの２つを用いて、該四乗算器ユニットの第三のユニットで、第一および第二の２ｎ×ｎの乗算を実行するステップと、
該第三の四乗算器ユニット内で加算のために、該２ｎ×ｎの乗算のそれぞれの第二の部分積をシフトして、該２ｎ×ｎの乗算のそれぞれの第二の部分積を該２ｎ×ｎの乗算のそれぞれの第一の部分積と整列させるステップと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するステップと
を包含する、方法。
【００１２】
（項目２）
上記加算するステップは、上記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、上記結果を加算するステップを包含する、項目１に記載の方法。
【００１３】
（項目３）
上記第一および第二の２ｎ×ｎの乗算を実行するステップは、該第一および第二の２ｎ×ｎの乗算のうちのそれぞれ個々に対して、
上記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフトするステップは、個々の最下位ビットのいずれの部分積もシフトすることなく、それぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、
該第三の四乗算器ユニット内での上記加算は、部分積のさらなるシフトを排除する、項目２に記載の方法。
【００１４】
（項目４）
上記シフトと、上記さらなるシフトなしでの加算とを実行するように、制御信号を選択するステップをさらに包含する、項目３に記載の方法。
【００１５】
（項目５）
それぞれの上記特殊処理ブロックは、２つの上記四乗算器ユニットを備える、項目１に記載の方法。
【００１６】
（項目６）
上記加算するステップは、実質的に一つの上記特殊処理ブロックで該加算を実行するステップを包含する、項目５に記載の方法。
【００１７】
（項目７）
上記２ｎ×２ｎの乗算と、上記第一および第二の２ｎ×ｎの乗算とは、上記第一および第三の四乗算器ユニットを備える上記一つの特殊処理ブロックで実行され、
該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算とを実行するステップは、該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算とのうちのそれぞれ個々の一つに対して、
上記四乗算器ユニットの一つの上記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフトするステップは、該２ｎ×ｎの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該２ｎ×ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップを包含し、上記方法は、
該２ｎ×２ｎの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該２ｎ×２ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするステップと、
該２ｎ×２ｎの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該２ｎ×ｎの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するステップと、
該２ｎ×２ｎの部分積の該最上位ビットの総計を左にシフトするステップと、
該２ｎ×ｎの部分積の該総計のそれぞれを右にシフトするステップと、
該ｎ×ｎの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックのうちの該一つに入力するステップと、
該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計と、該２ｎ×ｎの部分積の該右にシフトされた総計と、該ｎ×ｎの乗算の該左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するステップと
を包含する、項目６に記載の方法。
【００１８】
（項目８）
上記２ｎ×２ｎの部分積の上記左にシフトされた最上位ビットの総計と、上記２ｎ×ｎの部分積の上記右にシフトされた総計と、上記ｎ×ｎの乗算の上記左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するステップは、
該２ｎ×２ｎの部分積の該最下位ビットの総計を圧縮するステップと、
該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計を、該２ｎ×ｎの部分積の該右にシフトされた総計の第一の総計とともに圧縮するステップと、
該ｎ×ｎの乗算の該左にシフトされた出力を、該２ｎ×ｎの部分積の該右にシフトされた総計の第二の総計とともに圧縮するステップと、
該圧縮の結果を加算するステップと
を包含する、項目７に記載の方法。
【００１９】
（項目９）
複数の特殊処理ブロックを有するプログラマブルロジックデバイスであって、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも４つのｎ×ｎ乗算器を有し、該プログラマブルロジックデバイスは、３ｎ×３ｎの乗算演算を実行するように構成され、該プログラマブルロジックデバイスは、
２ｎ×２ｎの乗算を実行するように構成されている該四乗算器ユニットの第一のユニットの中に、該ｎ×ｎ乗算器のうちの４つと、
ｎ×ｎの乗算を実行するように構成されている該四乗算器ユニットの第二のユニットの中に、該ｎ×ｎ乗算器のうちの１つと、
該２ｎ×ｎの乗算のそれぞれに対して、該ｎ×ｎ乗算器の２つを用いて、第一および第二の２ｎ×ｎの乗算を実行するように構成されている該四乗算器ユニットの第三のユニットと、
該２ｎ×ｎの乗算のそれぞれの第二の部分積をシフトして該２ｎ×ｎの乗算のそれぞれの第二の部分積を、該２ｎ×ｎの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成されているシフタと、
該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成されている回路網と
を備える、プログラマブルロジックデバイス。
【００２０】
（項目１０）
上記加算することは、上記プログラマブルロジックデバイスの汎用プログラマブルロジックにおいて、上記結果を加算することを包含する、項目９に記載の構成されたプログラマブルロジックデバイス。
【００２１】
（項目１１）
上記プログラマブルロジックデバイスは、上記第一および第二の２ｎ×ｎの乗算のそれぞれ個々の一つに対して、
上記第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を実行することによって、該第一および第二の２ｎ×ｎの乗算を実行するように構成され、該プログラマブルロジックデバイスは、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトするように構成され、
上記回路網は、部分積のさらなるシフトの排除を追加するように構成されている、項目１０に記載の構成されたプログラマブルロジックデバイス。
【００２２】
（項目１２）
選択制御信号に応答して、上記シフトおよび上記さらなるシフトなしに、上記加算を実行するために、セレクタをさらに備える、項目１１に記載の構成されたプログラマブルロジックデバイス。
【００２３】
（項目１３）
それぞれの上記特殊処理ブロックは、２つの上記四乗算器ユニットを備える、項目９に記載の構成されたプログラマブルロジックデバイス。
【００２４】
（項目１４）
加算するように構成されている上記回路網は、実質的に一つの上記特殊処理ブロック内に位置する、項目１３に記載の構成されたプログラマブルロジックデバイス。
【００２５】
（項目１５）
上記一つの特殊処理ブロックは、上記２ｎ×２ｎの乗算と、上記第一および第二の２ｎ×ｎの乗算とを実行するように構成された上記第一および第三の四乗算器ユニットを備え、
該第一および第三の四乗算器ユニットのそれぞれにおいて、
該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算との該実行することは、該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算とのそれぞれ個々の一つに対して、
上記四乗算器ユニットの一つの上記乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するステップと、
該四乗算器ユニットの別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するステップと
を包含し、
上記シフタは、該２ｎ×ｎの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該２ｎ×ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成され、上記構成されたプログラマブルロジックデバイスは、
該２ｎ×２ｎの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該２ｎ×２ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするシフタと、
該２ｎ×２ｎの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該２ｎ×ｎの部分積の最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成されている回路網と、
該２ｎ×２ｎの部分積の該最上位ビットの総計を左にシフトする第一の左シフト回路網と、
該２ｎ×ｎの部分積の該総計のそれぞれを右にシフトする右シフト回路網と、
該ｎ×ｎの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力する第二の左シフト回路網と、
該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計と、該２ｎ×ｎの部分積の該右にシフトされた総計と、該ｎ×ｎの乗算の該左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するように構成されている回路網と
をさらに備える、項目１４に記載の構成されたプログラマブルロジックデバイス。
【００２６】
（項目１６）
上記２ｎ×２ｎの部分積の上記左にシフトされた最上位ビットの総計と、上記２ｎ×ｎの部分積の上記右にシフトされた総計と、上記ｎ×ｎの乗算の上記左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するように構成されている回路網は、
該２ｎ×２ｎの部分積の該最下位ビットの総計を圧縮する第一の３：２圧縮回路網と、
該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計を、該２ｎ×ｎの部分積の該右にシフトされた総計の第一の総計とともに圧縮する４：２圧縮回路網と、
該ｎ×ｎの乗算の該左にシフトされた出力を、該２ｎ×ｎの部分積の該右にシフトされた総計の第二の総計とともに圧縮する第二の３：２圧縮回路網と、
該第一および第二の３：２圧縮回路網の出力と、該４：２の圧縮回路網の出力とを加算する加算回路網と
を備える、項目１５に記載の構成されたプログラマブルロジックデバイス。
【００２７】
（項目１７）
３ｎ×３ｎの乗算演算を実行するプログラマブルロジックデバイスをプログラマブルに構成する方法を実行するためのマシン実行可能な命令でコード化されたデータ格納媒体であって、該プログラマブルロジックデバイスは、複数の特殊処理ブロックを有し、該特殊処理ブロックのそれぞれは、四乗算器ユニットに配置された少なくとも４つのｎ×ｎ乗算器を有し、該命令は、
該四乗算器ユニットの第一のユニットの中の該ｎ×ｎ乗算器のうちの４つが、２ｎ×２ｎの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第二のユニットの中の該ｎ×ｎ乗算器のうちの１つが、ｎ×ｎの乗算を実行するように構成するための命令と、
該四乗算器ユニットの第三のユニットが、該２ｎ×ｎの乗算のそれぞれに対して、該ｎ×ｎ乗算器のうちの２つを用いて、第一および第二の２ｎ×ｎの乗算を実行するように構成するための命令と、
シフタが、該２ｎ×ｎの乗算のそれぞれの第二の部分積をシフトして、該２ｎ×ｎの乗算のそれぞれの第二の部分積を、該２ｎ×ｎの乗算のそれぞれの第一の部分積と、該第三の四乗算器ユニット内で加算するために整列させるように構成するための命令と、
回路網が、該第一、第二、および第三の四乗算器ユニットからの該乗算の結果を加算するように構成するための命令と
を含む、データ格納媒体。
【００２８】
（項目１８）
上記加算するように回路網を構成するための命令は、上記プログラマブルロジックデバイスの汎用プログラマブルロジックが、上記結果を加算するように構成するための命令を含む、項目１７に記載のデータ格納媒体。
【００２９】
（項目１９）
上記プログラマブルロジックデバイスが、上記第一および第二の２ｎ×ｎの乗算のそれぞれ個々の一つに対して、
該プログラマブルロジックデバイスが、該第三の四乗算器ユニットにおける一つの該乗算器を用いて、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、上記第三の四乗算器ユニットにおける別の一つの該乗算器を用いて、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成するための命令と、
該プログラマブルロジックデバイスが、個々の最下位ビットのいずれの部分積もシフトすることなしに、それぞれ個々の最上位ビットの部分積を左にシフトすることを実行するように構成する命令と
を含む、該第一および第二の２ｎ×ｎの乗算を実行するように構成する命令を含み、
加算するように上記回路網を構成する命令は、部分積のさらなるシフトを排除するように構成する、項目１８に記載のデータ格納媒体。
【００３０】
（項目２０）
上記命令は、セレクタが選択制御信号に応答して、上記シフトおよび上記さらなるシフトなしに、上記加算を実行するように構成される命令をさらに含む、項目１９に記載のデータ格納媒体。
【００３１】
（項目２１）
上記命令は、プログラマブルロジックデバイスを構成するためであり、それぞれの上記特殊処理ブロックは、２つの上記四乗算器ユニットを備える、項目１７に記載のデータ格納媒体。
【００３２】
（項目２２）
上記命令は、上記回路網を、実質的に一つの上記特殊処理ブロック内で加算するように構成する、項目２１に記載のデータ格納媒体。
【００３３】
（項目２３）
上記命令は、上記２ｎ×２ｎの乗算と、上記第一および第二の２ｎ×ｎの乗算とを実行するように構成された上記第一および第三の四乗算器ユニットを構成し；
該命令は、該第一および第三の四乗算器ユニットのそれぞれが、該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算とを実行するように構成し、該２ｎ×２ｎの乗算と、該第一および第二の２ｎ×ｎの乗算とのそれぞれの個々の一つの乗算に対して、
該命令は、上記四乗算器ユニットの一つの上記乗算器が、個々の最上位ビットの乗算を実行して、個々の最上位ビットの部分積を形成するように構成することと、
該命令は、該四乗算器ユニットの別の一つの該乗算器が、個々の最下位ビットの乗算を実行して、個々の最下位ビットの部分積を形成するように構成することと
を包含し；
該命令は、上記シフタが、該２ｎ×ｎの乗算のいずれの個々の最下位ビットの部分積もシフトすることなしに、該２ｎ×ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し；
該命令は、該シフタが該２ｎ×２ｎの乗算の個々の最下位ビットのいずれの部分積もシフトすることなしに、該２ｎ×２ｎの乗算のそれぞれ個々の最上位ビットの部分積を左にシフトするように構成し；
該命令は、回路網が、該２ｎ×２ｎの部分積の最上位ビットの最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、最上位ビットの総計および最下位ビットの総計を生成するように構成し；
該命令は、回路網が、最上位ビットの部分積および最下位ビットの部分積の各ペアを総計して、該２ｎ×ｎの部分積の最上位ビットの総計および最下位ビットの総計を生成するように構成し；
該命令は、第一の左シフト回路網が、該２ｎ×２ｎの部分積の該最上位ビットの総計を左にシフトするように構成し；
該命令は、右シフト回路網が、該２ｎ×ｎの部分積の該総計のそれぞれを右にシフトするように構成し；
該命令は、第二の左シフト回路網が、該ｎ×ｎの乗算の出力を左にシフトして、該左にシフトされた出力を、該第一および第三の四乗算器ユニットを備える該特殊処理ブロックの該一つに入力するように構成し；
該命令は、回路網が、該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計と、該２ｎ×ｎの部分積の該右にシフトされた総計と、該ｎ×ｎの乗算の該左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するように構成する、
項目２２に記載のデータ格納媒体。
【００３４】
（項目２４）
上記２ｎ×２ｎの部分積の上記左にシフトされた最上位ビットの総計と、上記２ｎ×ｎの部分積の上記右にシフトされた総計と、上記ｎ×ｎの乗算の上記左にシフトされた出力と、該２ｎ×２ｎの部分積の該最下位ビットの総計とを加算するように構成されている回路網を構成するための上記命令は、
第一の３：２圧縮回路網が、該２ｎ×２ｎの部分積の該最下位ビットの総計を圧縮するように構成する命令と、
４：２圧縮回路網が、該２ｎ×２ｎの部分積の該左にシフトされた最上位ビットの総計を、該２ｎ×ｎの部分積の該右にシフトされた総計の第一の総計とともに圧縮するように構成する命令と、
第二の３：２圧縮回路網が、該ｎ×ｎの乗算の該左にシフトされた出力を、該２ｎ×ｎの部分積の該右にシフトされた総計の第二の総計とともに圧縮するように構成する命令と、
加算回路網が、該第一および第二の３：２圧縮回路網の出力と、該４：２の圧縮回路網の出力とを加算するように構成する命令と
を含む、項目２３に記載のデータ格納媒体。
【００３５】
（摘要）
乗算器と、これらの乗算器の結果を加算するための回路網とを含むプログラマブルロジックデバイス内の複数の特殊処理ブロックは、加算する前に乗算器の結果をシフトするための選択可能な回路網を、該特殊処理ブロックに追加することによって、より大きな乗算器として構成され得る。一つの実施形態において、このことは、最終的な加算を除く全てが、特殊処理ブロック内で行われ、該最終的な加算は、プログラマブルロジック内で行われることを可能にする。別の実施形態において、追加の圧縮および加算の回路網は、最終的な加算でさえも、特殊処理ブロック内で行われることを可能にする。
【図面の簡単な説明】
【００３６】
【図１】図１は、５４ビット×５４ビット乗算の部分積の和への分解の図である。
【図２】図２は、図１の部分積を加算するための配列の図である。
【図３】図３は、本発明の第一の好ましい実施形態に使用するための特殊処理ブロックの一部分の概略図である。
【図４】図４は、本発明の第一の好ましい実施形態における５４ビット×５４ビットの乗算の実行の概略図である。
【図５】図５は、本発明の第二の好ましい実施形態に使用するための特殊処理ブロックのグループの概略図である。
【図６】図６は、図５の実施形態に使用される４：２圧縮器の概略図である。
【図７】図７は、本発明を組み込んでいるプログラマブルロジックデバイスを用いる例示的なシステムの簡略ブロック図である。
【図８】図８は、本発明に従う方法を実行するためのマシン実行可能な命令のセットでコード化された磁気データ格納媒体の断面図である。
【図９】図９は、本発明に従う方法を実行するためのマシン実行可能な命令のセットでコード化された光学的に読み取り可能なデータ格納媒体の断面図である。
【発明を実施するための形態】
【００３７】
本発明の上記および他の目的および利点は、添付図面と関連させて、以下の詳細な説明を考慮することによって明らかになる。図面において、同様の参照記号は、図面全体を通じて、同様のパーツを意味する。
【００３８】
（発明の詳細な説明）
ここで、本発明が、５４ビット×５４ビットの乗算に関連して、図１〜図６を参照して記載される。この乗算は、前述のＳＴＲＡＴＩＸ（登録商標）ＩＩ  ＰＬＤのＤＳＰブロックの１８ビット乗算器上に、良好にマップし、ＩＥＥＥ７５４−１９８５規格の下で、二倍精度の乗算をインプリメントするために使用され得る。しかしながら、本発明は、様々なサイズの特殊処理ブロックとともに使用され得る。
【００３９】
図１は、５４ビット×５４ビットの乗算１０の部分積１２の総計１１への分解を示し、部分積１２は、１８ビット×１８ビット乗算器を用いてインプリメントされ、積１３を算出し得る。第一の被乗数１０１において、Ａは、１８の最上位ビットを含み、Ｂは、３６の最下位ビットを含む。第二の被乗数１０２において、Ｃは、１８の最上位ビットを含み、Ｄは、３６の最下位ビットを含む。（Ａ，Ｂ）×（Ｃ，Ｄ）の結果は、Ｂ×Ｄ＋（（Ａ×Ｄ＋Ｃ×Ｂ）＜＜３６）＋（（Ａ×Ｃ）＜＜７２）として、計算され得る。ここで、「＜＜ｎ」は、これと関連する表現の結果が、位置をｎ箇所だけ左にシフトされることを意味する。
【００４０】
浮動点仮数に要求される中間値は、５４ビット乗算を実行するとき、符号を付けられていないこと、すなわち、「０１」によって先行された５２ビットの仮数を含むことが好ましい。中間値は、図２のように整列され、出力として、３６ビットの出力２０および３段階の７２ビットの加算２１を提供する。
【００４１】
前述のＳＴＲＡＴＩＸ（登録商標）ＩＩ  ＰＬＤのＤＳＰブロックと、同時係属中で、ともに譲渡された米国特許出願第１１／４４７，３２９号、同第１１／４４７，３７０号、同第１１／４４７，４７２号、同第１１／４４７，４７４号（いずれも２００６年６月５日出願）、同第１１／４２６，４０３号（２００６年６月２６日出願）、および同第１１／４５８，３６１号（２００６年７月１８日出願）（以上の出願のそれぞれは、そのそれぞれの全体を本明細書に参考として援用される）に記載された改良されたＤＳＰブロックとにおいて、４つの乗算器が１つのユニットに配置され、このユニットは、圧縮器、加算器、シフタ、および乗算器とともに、加算するブロックまたはハーフブロックと称され得、様々な部分積を形成する。
【００４２】
図１および図２に示される現在の問題に適用されるように、このＤＳＰブロックのアーキテクチャは、３６ビット×３６ビット乗算（Ｂ×Ｄ）および１８ビット×１８ビットッ乗算（Ａ×Ｃ）をサポートし得るが、このアーキテクチャのマルチプレクサパターンは、２つの１８ビット×３６ビット乗算（Ａ×ＤおよびＣ×Ｂ）をともに加算するために必要な接続をサポートし得えない。１８ビット×３６ビット乗算のそれぞれは、個々にサポートされるが、その結果は、ＤＳＰブロックからルーティングされて、ＰＬＤの汎用プログラマブルロジックで加算されなくてはならない。これは、汎用プログラマブルロジックと、ルーティングおよび相互接続とのリソースを大量に消費する。
【００４３】
本発明に従うと、ＤＳＰブロックの中間マルチプレクサ配列が、上述のＤＳＰブロックに比べると、２つの１８ビット×３６ビットの乗算の総計が単一の四乗算器ブロック／ハーフブロックで生成されることを可能にするように変更される。結果として、５４ビット×５４ビットの乗算に必要な部分積の全てが実行され得、単一の四乗算器ブロック／ハーフブロック内で、少なくとも一部は、一緒に総計され得る。
【００４４】
図３および図４に示される第一の好ましい実施形態において、被乗数ＡとＤとのペアに対して、Ｄは、最上位の半分と最下位の半分とに、すなわち、ＤＨとＤＬとに分割され得る。積Ａ×Ｄは、次いで、（Ａ×ＤＨ）＜＜１８＋Ａ×ＤＬとして表され得る。（Ａ×ＤＨ）は、好ましくは、乗算器３１によって３１０で提供され、次いで、信号３１３の制御下にあるマルチプレクサ３１２によって選択され、シフタ３１１によって、１８ビット左にシフトされる。Ａ×ＤＬは、好ましくは、乗算器３２によって３２０で提供される。積Ａ×Ｄは、次いで、好ましくは、加算器３３で、部分積３１０と３２０とを加算することによって提供される。加算器３３は、４：２圧縮器と、一緒に連結される３０ビット加算器および２４ビット加算器（図示せず）とを含み得る。
【００４５】
被乗数ＣとＢとの第二のペアは、同様に扱われ、（Ｃ×ＢＨ）＜＜１８＋Ｃ×ＢＬを提供し得る。（Ｃ×ＢＨ）は、好ましくは、乗算器３３によって３３０で提供され、次いで、信号３３３の制御下にあるマルチプレクサ３３２によって選択され、シフタ３３１によって、１８ビット左にシフトされる。Ｃ×ＢＬは、好ましくは、乗算器３４によって３４０で提供される。積Ｃ×Ｂは、次いで、好ましくは、加算器３５で、部分積３３０と３４０とを加算することによって提供される。加算器３５は、４：２圧縮器と、一緒に連結される３０ビット加算器および２４ビット加算器（図示せず）とを含み得る。
【００４６】
１８ビット×３６ビットの乗算Ａ×ＤおよびＣ×Ｂの２つの５４ビットの総計は、次いで、加算器３６で一緒に加算される。加算器３６は、４：２圧縮器と、一緒に連結される２つの４４ビット加算器（図示せず）とを含み得る。１８ビットシフタ３７は、この５４ビットの加算の目的のために、信号３７１の制御下にあるマルチプレクサ３７０によって選択される場合、加算器３３の出力を選択的に左にシフトするために提供されるが、合計３３（Ａ×Ｄ）は、シフトされない。
【００４７】
具体的には、信号３１３、３３３、３７１の制御下にある３つのシフタ３１１、３３１、３７は、特殊処理ブロック３０が、多数の機能のために使用されることを可能にする。例えば、４つの１８ビット×１８ビットの乗算の総計に対して、信号３１２、３３２、３７１のそれぞれは、好ましくは、そのそれぞれのシフトされていない結果を選択するように設定される。単一の３６ビット×３６ビットの乗算に対して、信号３１２、３３２、３７１のそれぞれは、好ましくは、そのそれぞれのシフトされた結果を選択するように設定される。また、前述されたように、５４ビット×５４ビットの乗算の２つの１８ビット×３６ビット部分積を実行するために、信号３１２、３３２のそれぞれは、好ましくは、そのそれぞれのシフトされた結果を選択するように設定される一方、信号３７１は、好ましくは、そのシフトされていない結果を選択するように設定される。
【００４８】
図４に見られるように、５４ビット×５４ビットの乗算は、特殊処理ブロック／ハーフブロック４０を用いて、３６ビット×３６ビットの部分積Ｂ×Ｄを実行することと、特殊処理ブロック／ハーフブロック３０を用いて、２つの１８ビット×３６ビットの部分積Ａ×ＤおよびＣ×Ｂを実行して、総計することと、特殊処理ブロック／ハーフブロック４１を用いて、単一の１８ビット×１８ビットの乗算Ａ×Ｃを実行することによって、実行される。前述の援用される米国特許出願第１１／４４７，４７２号に説明されているように、ブロック／ハーフブロック４１が、この出願に記載されたものの一つである場合、１つの乗算器４１０のみを使用することは、第二の乗算器４１１を犠牲にすることを要求するが、ブロック／ハーフブロック４１の中の４つの乗算器４１０〜４１３のうちの一つのみが使用されていることに留意されたい。しかしながら、この実施形態において、少なくとも乗算器４１２、４１３は、他の目的のために利用可能なままであり、他の実施形態において、乗算器４１１でさえも利用可能であり得る。
【００４９】
図３および図４に示される本発明の実施形態に従って、３つの部分積４０５、３０５、および４１５または部分積の総計は、加算器４２によって加算され、加算器４２は、好ましくは、特殊処理ブロック４０、３０、４１が一部をなすＰＬＤのプログラマブルロジック内の特殊処理ブロック４０、３０、４１の外側に生成される。
【００５０】
図３および図４の実施形態において、最終的な加算４２のために、汎用プログラマブルロジック、ルーティング、および相互接続のリソースを使用する必要が、依然としてある。図５に示される第二の好ましい実施形態５０において、５４ビット×５４ビットの乗算は、ＰＬＤ上の特殊処理ブロックの中で、そのＰＬＤの汎用プログラマブルロジックに実質的に頼ることなく、実質的に全体で実行され得る。実施形態５０において、好ましくは、２つの四乗算器ユニット５１、５２と、第三の四乗算器ユニット５３の一部分が、使用される。好ましくは、これらの四乗算器ユニット５１〜５３のそれぞれは、前述の援用される米国特許出願第１１／４４７，４７２号に記載された特殊処理ブロックのハーフブロックに基づき、本明細書に記載されるように改変される。したがって、完全な一つのこのようなブロックと、第二のこのようなブロックの一部分とが、好ましくは、使用される。
【００５１】
実施形態５０において、各ハーフブロック５１、５２（およびハーフブロック５３であるが、一つの乗算器５３０のみが、このハーフブロック５３から使用されるので、全てのコンポーネントは、図示されない）は、好ましくは、４つの１８ビット×１８ビット乗算器５１０〜５１３、５２０〜５２３を有し、好ましくは、５１０〜５１１、５１２〜５１３、５２０〜５２１、および５２２〜５２３のペアで配置され、好ましくは、各ペアのメンバの出力は、ペアのうちの一つのメンバの出力が、それぞれのシフタ５５によって１８ビット左にシフトされた後に、それぞれの５４ビット加算器５４１〜５４４によってともに加算されている。シフタ５５のうちの１つ以上は、上記の図３および図４の実施形態に場合のように、プログラマブルにバイパス可能（図示せず）であり得るが、この実施形態において、５４ビット×５４ビットの乗算を実行するためには、シフタ５５は、好ましくは、（たとえ、バイパス可能であっても）バイパスされない。
【００５２】
前述の援用される米国特許出願第１１／４４７，４７２号に記載された特殊処理ブロックにおいて、加算器５４１の出力と、シフタ５４５によって１８ビット左にシフトされた後の加算器５４２の出力とは、３：２圧縮器５６０と、チェーンされた桁上げ／伝播加算器５７０、５７１とによって加算される。同様に、加算器５４３の出力と加算器５４４の出力とは、３：２圧縮器５６１と、チェーンされた桁上げ／伝播加算器５７２、５７３とによって加算される。本発明に従うと、４：２圧縮器５６２と、２つの３６ビット右シフタ５４６、５４７が追加される。幾つかのＡＮＤゲート５８０〜５８３が、以下に記載されるように、セレクタとして追加されるが、マルチプレクサもまた、その目的のために使用され得、そして、ＡＮＤゲート５８４は、加算器５７０、５７１を、加算器５７２、５７３と一緒にチェーンにするために追加される。さらに、１８ビット右シフタ５４８およびＡＮＤゲート５８５が、追加され、異なる特殊処理ブロックにあるハーフブロック５２、５３をブリッジする。シフタ５４８のようなさらなる１８ビット右シフタ（図示せず）およびＡＮＤゲート５８５のようなさらなるＡＮＤゲート（図示せず）は、同様の方法で、ハーフブロック５１を右にある別のハーフブロック（図示せず）に接続し得る。
【００５３】
５４ビット×５４ビット乗算モードで使用されていないとき、各特殊処理ブロックは、前述の援用される米国特許出願第１１／４４７，４７２号に示されるように動作する。そのように、ＡＮＤゲート５８０、５８２、５８４、および５８５のそれぞれの第二の入力（図示せず）は、シフタ５４６〜５４８が使用中でなく、２つのハーフブロックの桁上げ／伝播加算器のチェーンが離れたままであるように、「０」である。同様に、ＡＮＤゲート５８１、５８３のそれぞれの第二の入力（図示せず）は、各部分積がそのそれぞれの３：２圧縮器または４：２圧縮器に直接供給されるように、「１」である。この場合、ＡＮＤゲート５８０の第二の入力が「０」のとき、４：２圧縮器５６２は、３：２圧縮器５６０、５６１のように機能することに留意されたい。
【００５４】
特殊処理ブロックが、５４ビット×５４ビット乗算モードで使用されているとき、ＡＮＤゲート５８０、５８２、５８４、および５８５のそれぞれの第二の入力（図示せず）は、シフタ５４６〜５４８が使用中であり、２つのハーフブロックの桁上げ／伝播加算器チェーンが接続されるように、「１」である。なぜなら、これは、７２ビット加算であるので、４４ビット加算器５７１から４４ビット加算器５７２への（ＡＮＤゲート５８４を介する）桁上げは、好ましくは、加算器５７１の末尾から採られないが、好ましくは、加算器５７１の２９番目のビットから採られる。加算器５７１の２９番目のビットは、加算器５７０を含むと、７３番目のビット位置であり、７２ビット加算からの桁上げを表す。桁上げは、２つ以上の特殊処理ブロックに依存するが、この配置は、ＰＬＤの汎用プログラマブルロジックに、実質的に依存することなく、部分積の全てを一緒に加算する。
【００５５】
図６は、どのように、４：２圧縮器５６２が、２つの３：２圧縮器５６０（または５６１）から構成され得るかを概略的に示す。
【００５６】
したがって、ＰＬＤの２つ以上の特殊処理ブロックを要求する大きな乗算が、ＰＬＤの汎用プログラマブルリソースをわずかに使用して、あるいは全く使用せずに、実行され得ることが理解される。
【００５７】
本発明に従うこのような回路網を組み込むＰＬＤ２８０は、多種の電子デバイスに使用され得る。一つの使用の可能性は、図７に示されるデータ処理システム９００においてである。データ処理システム９００は、以下のコンポーネント、すなわち、プロセッサ２８１、メモリ２８２、Ｉ／Ｏ回路網２８３、および周辺デバイス２８４のうちの１つ以上を含み得る。これらのコンポーネントは、システムバス２８５によって一緒に結合され、エンドユーザシステム２８７に含まれる回路基板２８６上に設置される。
【００５８】
システム９００は、コンピュータネットワーク化、データネットワーク化、計装、ビデオ処理、デジタル信号処理、あるいはプログラマブルロジックまたは再プログラマブルロジックの使用の利点が望ましい任意の他のアプリケーションのような広範なアプリケーションにおいて使用され得る。ＰＬＤ２８０は、様々な異なるロジック機能を実行するために使用され得る。例えば、ＰＬＤ２８０は、プロセッサ２８１と協働するプロセッサまたはコントローラとして構成され得る。ＰＬＤ２８０はまた、システム９００における共有リソースへのアクセスに対する決定を下すアービタとしても使用され得る。またさらなる別の例において、ＰＬＤ２８０は、プロセッサ２８１とシステム９００内の他のコンポーネントの一つとの間のインタフェースとして構成され得る。システム９００は、単に例示的なものであることと、本発明の真の範囲および精神は、添付の請求項によって示されるべきであることとは、留意されるべきである。
【００５９】
様々な技術が、上述され、本発明に組み込まれるようなＰＬＤ２８０をインプリメントするために、使用され得る。
【００６０】
本発明に従う方法を実行するための命令は、マシン読み取り可能な媒体上にコード化され、ＰＬＤをプログラムするための本発明の方法をインプリメントするために、適切なコンピュータまたは同様のデバイスによって実行され得る。例えば、パーソナルコンピュータは、ＰＬＤが接続され得るインタフェースを備え得、このパーソナルコンピュータは、カリフォルニア州Ｓａｎ  ＪｏｓｅのＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎより入手可能なＱＵＡＲＴＵＳ（登録商標）ＩＩソフトウェアのような適切なソフトウェアツールを用いて、ＰＬＤをプログラムするために、ユーザによって、使用され得る。
【００６１】
図８は、マシン実行可能なプログラムを用いて、コード化され得る磁気データ格納媒体６００の断面図を示す。このプログラムは、上述のパーソナルコンピュータ、または他のコンピュータ、あるいは同様のデバイスのようなシステムによって実行され得る。媒体６００は、フロッピー（登録商標）ディスケット、またはハードディスク、あるいは磁気テープであり得、これらは、従来型であり得る適切な基板６０１と、磁気ドメイン（図示せず）を含む片面上または両面上に、従来型であり得る適切なコーティング６０２とを、有する。この磁気ドメインの極性または配向は、磁気的に変化され得る。この媒体が磁気テープの場合を除くと、媒体６００はまた、ディスクドライブまたは他のデータ格納デバイスのスピンドルを受けるために、開口部（図示せず）を有し得る。
【００６２】
媒体６００のコーティング６０２の磁気ドメインは、マシン実行可能なプログラムを、従来型であり得る方法でコード化するために、極性を与えられるか、あるいは配向される。このプログラムは、パーソナルコンピュータ、または他のコンピュータ、あるいは他の同様のシステムのようなプログラミングシステムによって実行するためのものであり、このシステムは、プログラムされるＰＬＤが挿入され得るソケットまたは周辺機器アタッチメントを有し、本発明に従って、特殊処理ブロックがある場合には、そのＰＬＤの特殊処理ブロックを含むＰＬＤの適切な部分を構成する。
【００６３】
図９は、これもまた、そのようなマシン実行可能なプログラムを用いて、コード化され得る光学的に読み取り可能なデータ格納媒体７００の断面図を示す。このプログラムは、上述のパーソナルコンピュータ、または他のコンピュータ、あるいは同様のデバイスのようなシステムによって実行され得る。媒体７００は、従来型コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、またはデジタルビデオディスク読み出し専用メモリ（ＤＶＤ−ＲＯＭ）、あるいは、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ、またはＤＶＤ−ＲＡＭのような再書き込み可能な媒体、もしくは光学的に読み取り可能で、磁気光学的に再書き込み可能である磁気光学ディスクであり得る。媒体７００は、好ましくは、従来型であり得る適切な基板７０１と、通常は基板７０１の片面上または両面上に、従来型であり得る適切なコーティング７０２とを有し得る。
【００６４】
ＣＤベースの媒体またはＤＶＤベースの媒体の場合、周知のように、コーティング７０２は、反射性であり、マシン実行可能なプログラムをコード化するために、１つ以上の層上に配置された複数のピット７０３で刻印される。ピットの配置は、コーティング７０２からレーザ光を反射することによって読み取られる。好ましくは、実質的に透過性である保護コーティング７０４が、コーティング７０２の上に提供される。
【００６５】
磁気光学ディスクの場合、周知のように、コーティング７０２は、ピット７０３を有さないが、複数の磁気ドメインを有し、この磁気ドメインの極性または配向は、例えば、レーザ（図示せず）によって、特定の温度を超えて熱せられるとき、磁気的に変化され得る。ドメインの配向は、コーティング７０２から反射されたレーザ光の極性を測定することによって読み取られ得る。これらのドメインの配置は、上述されたようなプログラムをコード化する。
【００６６】
以上は、本発明の原理の単なる例示であることと、様々な改変が、本発明の範囲および精神から逸脱することなく、当業者によってなされ得ることとが、理解される。例えば、本発明の様々な要素は、所望の数および／または配置で、ＰＬＤ上に提供され得る。本発明が、例示の目的のために提供され、限定することが目的としない上述された実施形態以外の実施形態によって実行され得ることと、本発明が、添付の請求項によってのみ限定されることとを、当業者は理解する。
【符号の説明】
【００６７】
３０、４０、４１、５１〜５３  特殊処理ブロック／ハーフブロック
３１〜３４、４１０〜４１３、５１０〜５１３、５２０〜５２３  乗算器
３３、３５、３６、４２、５４１〜５４４、５７０〜５７３  加算器
３０５、３１０、３２０、３３０、３４０、４０５、４１５  部分積
３３２  マルチプレクサ
３７、５５、３１１、３３１、５４５〜５４８  シフタ
３１３、３３３、３７１  信号
５６０、５６１  ３：２圧縮器
５６２  ４：２圧縮器
５７２、５７３  桁上げ／伝播加算器
５８０〜５８５  ＡＮＤゲート
【図１】
0005400197.tif 000002
【図２】
0005400197.tif 000003
【図３】
0005400197.tif 000004
【図４】
0005400197.tif 000005
【図５】
0005400197.tif 000006
【図６】
0005400197.tif 000007
【図７】
0005400197.tif 000008
【図８】
0005400197.tif 000009
【図９】
0005400197.tif 000010