(57)【要約】【課題】回路における消費電力、複雑さ及びスペースを低減し、かつ演算処理を高めた集積回路における乗算器／積算器（ＭＡＣ）ユニット、更に同一の集積回路に前記ＭＡＣユニットを二重に設けた二重ＭＡＣユニットを提供する。【解決手段】ＭＡＣユニット（１００）において、第１のバイナリ・オぺランドＸ（１０２）と第２のバイナリ・オぺランドＹ（１０４）との複数の部分積を発生するブース記録ロジック（１２０）と、低減した前記部分積を第３のオぺランドと算術的に組み合わせて最後の部分積を得るワラス・ツリー加算器（１３０）と、最後の和を発生する最後の加算器（１４０）と、前記最後の加算器を選択的に丸める即ち飽和させる飽和回路（１５０）とを備える。【選択図】図１
2010086547.tif 000002
【特許請求の範囲】
【請求項１】
第一のMACユニットと、
クロック制御を備えた第二のMACユニットと、
前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
前記第一のMACユニットの他の入力に接続された第二のバスと、
前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
FIR演算を行う場合、前記第二のＭＡＣユニットに対しクロックが供給され、前記第一のバスに係数データのｊ（ｊは０以上の整数）番目の成分が供給され、前記第二のバスに入力データのｉ−ｊ（ｉは０以上の整数）番目の成分が供給され、前記第三のバスに前記入力データのｉ−ｊ＋１番目の成分が供給され、前記第一のMACユニットは出力データのｉ番目の成分を演算し、前記第二のMACユニットは前記出力データのｉ＋１番目の成分を演算すること、を特徴とするプロセッサ。
【請求項２】
第一のMACユニットと、
クロック制御を備えた第二のMACユニットと、
前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
前記第一のMACユニットの他の入力に接続された第二のバスと、
前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
マトリックス演算を行う場合、前記第二のＭＡＣユニットに対しクロックが供給され、前記第一のバスに第一の入力データの（ｋ、ｊ）（ｋおよびｊは０以上の整数）番目の成分が供給され、前記第二のバスに第二の入力データの（ｉ、ｋ）（ｉは０以上の整数）番目の成分が供給され、前記第三のバスに前記第二の入力データの（ｉ＋１、ｋ）番目の成分が供給され、前記第一のMACユニットは出力データの（ｉ、ｊ）番目の成分を演算し、前記第二のMACユニットは前記出力データの（ｉ＋１、ｊ）番目の成分を演算すること、を特徴とするプロセッサ。
【請求項３】
第一のMACユニットと、
クロック制御を備えた第二のMACユニットと、
前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
前記第一のMACユニットの他の入力に接続された第二のバスと、
前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
ＩＩＲ演算を行う場合、前記第二のＭＡＣユニットに対しクロックが供給され、前記第一のバスに出力データのｉ−ｊ−1（ｉおよびｊは０以上の整数）番目の成分が供給され、前記第二のバスに係数データのｊ番目の成分が供給され、前記第三のバスに前記係数データのｊ＋１番目の成分が供給され、前記第一のMACユニットは前記出力データのｉ番目の成分を演算し、前記第二のMACユニットは前記出力データのｉ＋１番目の成分を演算すること、を特徴とするプロセッサ。
【請求項４】
第一のMACユニットと、
クロック制御を備えた第二のMACユニットと、
前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
前記第一のMACユニットの他の入力に接続された第二のバスと、
前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
ＦＦＴ演算を行う場合、前記第二のＭＡＣユニットに対しクロックが供給され、前記第一のバスに係数データのｊ（ｊは０以上の整数）番目の成分が供給され、前記第二のバスに実数部入力データのｊ番目の成分が供給され、前記第三のバスに虚数部入力データのｊ番目の成分が供給され、前記第一のMACユニットは実数部出力データを演算し、前記第二のMACユニットは虚数部出力データを演算すること、を特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して乗算器及び乗算器／アキュムレータ（ＭＡＣ：ｍｕｌｔｉｐｌｉｅｒ／ａｃｃｕｍｕｌａｔｏｒ）回路に関し、特に変形ブースのアルゴリズム（ｍｏｄｉｆｉｅｄ  Ｂｏｏｔｈ’  ａｌｇｏｒｉｔｈｍ）及びワラス・ツリー（Ｗａｌｌａｃｅ  Ｔｒｅｅ）技術を実施した改良ＭＡＣ回路に関する。
【背景技術】
【０００２】
バイナリ乗算は、多くのディジタル信号処理応用において重要な機能である。更に、いくつかのアプリケーションは、ある積と前の動作（例えば複数の積の和を形成する）結果との算術的な組み合わせを必要とする。汎用乗数回路は、２の補数、又は符号なしの絶対値表記により、これらに機能を実行する能力がなければならない。
【０００３】
二進数は十進数と全く同じように乗算される。特に、一方のオぺランドの各デジット（被乗数）が他方のオぺランド（乗数）により乗算されて複数の部分積を形成し、得られたこれらの部分積は、乗算器の桁位置の配置重みを考慮して、加算される。
【０００４】
二進数を乗算する回路は、比較的に多数の回路素子を必要とし、従って集積回路上に製作すれば、かなりの量のチップ面積を取る。このために、集積回路設計者における進行中の目標は、回路素子をますます少なくした乗算器回路を実施する方法を見い出すことである。
【０００５】
当該技術分野ではバイナリ乗算を実行するために必要な時間を短縮させる多くの技術が知られている。例えば、加算して最後の積を形成する必要がある部分積の数を減少させて部分積の加算を高速にする種々の符号化方法が考案されていた。例えば、１９６４年のエレクトロニック・コンピュータに関するＩＥＥＥ会議報告において、ラス（Ｃ．Ｓ  ＷＡｌｌａｃｅ）による「高速乗算器に関する提案（Ａ  ｓｕｇｇｅｓｔｉｏｎ  ｆｏｒ  ｆａｓｔ  Ｍｕｌｔｉｐｌｉｅｒ）」、及び季刊誌、機械及び応用数学（Ｊｏｕｒｎａｌ  Ｍｅｃｈ．  ａｎｄ  Ａｐｐｌｉｅｄ  Ｍａｔｈ．）、１９５１年第４巻第２部において、ブース（Ａｎｄｒｅｗ  Ｄ，  Ｂｏｏｔｈ）による「符号付き二進乗算法（Ａ  Ｓｉｇｎｅｄ  Ｂｉｎａｒｙ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅ）を参照されたい。ブース論文に説明されている変形ブースのアルゴリズムは、広く用いられており、集積回路内で使用されるディジタル乗算器においてしばしば使用されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
いわゆる変形ブース符号化法は、より詳細には、乗算される２数のうちの一方を符号化する。この解決法は、乗算により発生した部分積の数を通常、係数２により減少させ、これによって最後の積に到着するまでに部分積を組み合わせるのに要する回路の量を減少させる。残念ながら、少なくとも算術的に動作しているときに、符号付き二進数が２の補数表記を使用して典型的に表されるということは、これら部分積を組み合わせ可能となる前に、部分積のいわゆる符号ビット拡張を実行しなければならないので、変形ブース符号化についての前述の効果に少なからず影響する。
【０００７】
ラオ（Ｒａｏ）に対する米国特許第５，０３８，３１５号は、部分積全ての符号ビットにより表される値を２の補数として表すことにより、部分積を組み合わせるために符号ビット拡張を実行するのを不要にする方法を説明している。従って、もとの符号ビットというよりもこの数のビット（「符号ビット値」ワードと呼ばれる）は、部分積加算において使用される。（全て２の補数なので）符号ビット値ワードの全ビットは、（左端のものを除き）正の有意を有することが保証されるので、符号ビット拡張を必要とすることなく、部分積のデジットを直接加算することができる。この解決法を実施すると、必要とする回路面積は、従来知られていた乗算器よりもかなり少ない（２０％程度少ない）。
【０００８】
更に、部分積の加算を高速化するために複数の試みが行われた。ウエア（Ｗａｒｅ）に対する米国特許第４，５４５，０２８号では、加算器アレーが複数のブロックに分割されるので、各ブロック内の全ての加算がリップル形式により行われても、異なる複数のブロックが平行して加算の異なる部分を実行することができる。第１のブロックは、４つの部分積のみを含み、かつ第１のブロックからのキャリーが次のブロックにより必要とされるときに出現するように、残りのブロックは演算処理の進行に合致している必要がある。
【０００９】
更に、加算は、キャリー・ルック・アヘッド加算器を使用することにより高速化可能とされる。リップル形式により逐次的な一連の加算器段を通るキャリー伝搬は、加数における大きなビット数の関数として、長い期間の時間を必要とする。キャリー・ルック・アヘッド加算器では、ロジック回路が逐次的というよりも同時並行のキャリー伝搬をする。しかしながら、回路の複雑さ、ゲート数及びチップ面積はビット・サイズが増加するに従って急激に増加するので、キャリー・ルック・アヘッド加算器のビット・サイズ（又はビット数）が制限される。
【００１０】
２つの数を乗算し、かつその結果の積を第３の数と加算する即ち積算する回路は、信号処理装置及びディジタル信号処理装置（ＤＰＳ）において広く使用されている。乗算器／アキュムレータの典型的な応用は、所定時点で同一値を得るためにＮ個の積を加算する有限インパルス応答（ＦＩＲ）ディジタル信号フィルタを実施することである。ただし、Ｎは整数である。乗算及び積算を実行する主な目的は、可能な限り速やかに数学的な計算を達成することである。しかしながら、速度での増加は、典型的には、回路量の増加、及び構造の不規則性における対応した増加を伴う。
【００１１】
アレー乗算器の速度を増加させるために種々の試みがなされた。ペザリス（Ｓｔｙｌｉａｎｏｓ  Ｐｅｚａｒｉｓ）は、１９７１年４月のコンピュータについてのＩＥＥＥ会議報告、第Ｃ−２０巻、第４号、第４４２頁〜第４４７頁の「４０ｎｓ、１７ビット×１７ビットアレー乗算器」と題する論文において、アレー乗算器における和信号の伝搬の減少を教えている。通常の乗算器の場合に、Ｎビット×Ｎビットの乗算器が通常のキャリー・セーブ機構により乗算を実行するために、Ｎ行の加算器が必要とされる。
【００１２】
１９８２年９月２９日の回路及びコンピュータについてのＩＥＥＥ国際会議、第１５１頁〜第１５４頁、「１６ビットＣＭＯＳ／ＳＯＳ乗算器アキュムレータ」にイワムラほかが教えているように、そのほかは、アレー乗算器における交番行の加算器を通る和及びキャリー信号の両方を飛び越した。イワムラほかは、和及びキャリー信号の行飛び越し技術を利用する乗算器を説明していた。この越し技術は、ワラス・ツリー及びブース方法のような他の方法に関連した構造の複雑な相互接続及び不規則性のために、このような他の方法よりも通常の乗算器アレーを使用している。しかしながら、乗算器アレーは、次の行にかかる越しキャリー及び和信号により、それぞれ加算及びキャリーの積算をする個別的な二つのアレーに効果的に分割される。このアレーの最下行には、加算器の行（イワムラ他による図示なし）を必要とする。これらの行の組み合わせは、個別的な２つのアキュムレータ・パスの４出力（２つの和及び２つのキャリー）を、最終行におけるキャリー伝搬用の２出力（１つの和及び１つのキャリー）に低減させる。キャリー・ルック・アヘッド加算器の最終行は、積出力をするために必要とされる。
【００１３】
ラリック（Ｒａｒｉｃｋ）に対する米国特許第５，５０４，９１５号は、バイナリ乗算器において使用する変形ワラス・ツリー加算器を提供する。
【００１４】
乗数器アキュムレータ回路に対する他の解決法は、クロッカー（Ｋｌｏｋｅｒ）ほかに対する米国特許第４，５７５，８１２号、オーエン（Ｏｗｅｎ）ほかに対する米国特許第４，８７６，６６０号、及びウエイ（Ｗｅｉ）ほかに対する米国特許第４，８３１，５７７号により得られる。
【００１５】
アンドー（Ａｎｄｏ）ほかに対する米国特許第４，７７１，３７９号は、並列乗算器によるディジタル信号処理装置を提供している。
【課題を解決するための手段】
【００１６】
従って、本発明の目的は、集積回路において最小の電力、複雑さ及びスペースにより、部分積を高速に発生し、かつ並列に加算する回路及び方法を提供することにある。
【００１７】
本発明の他の目的は、積算を行うように適応され、かつ符号付き値又は符号なし値を処理するように適応された高速の改良乗算器アキュムレータのアーキテクチャーを提供することにある。
【００１８】
本発明の更なる他の目的は、標準的な集積回路技術により実施可能な並列加算器アーキテクチャーにより高速のバイナリ乗算を提供することにある。
【００１９】
本発明の目的は、更に、改良された乗算及び演算処理用の複数の乗算器アキュムレータを利用した回路を提供することにある。
【００２０】
本発明の更なる目的は、２つの数を乗算する、又は２つの数を乗算し、かつその結果を第３の数と算術的に組み合わせる改良高速乗算器回路を提供することにある。
【００２１】
本発明は、第１のバイナリ・オぺランドＸ、第２のバイナリ・オぺランドＹ、前記第１及び第２のオぺランドから複数の部分積を発生するブース記録ロジック、前記部分積を低減し、かつ低減した前記部分積を前記第３のオぺランドと選択算術的に組み合わせるワラス・ツリー加算器と、最後の和を発生する最後の加算器、及び前記最後の和を選択的に丸める即ち飽和させる飽和回路を有する乗算器／アキュムレータ・ユニット（ＭＡＣ）を提供する。
【００２２】
本発明は、更に、第１のＭＡＣに関連されて第１の出力を発生させる第１の入力、第２のＭＡＣに関連されて第２の出力を発生させる第２の入力、前記第１の出力を受け取る第１のアキュムレータ、前記第２の出力を受け取る第２のアキュムレータを備えた二重ＭＡＣを提供する。
【００２３】
これら本発明の特徴及び効果は、添付する図面と関連させるときに、以下の詳細な説明からより明らかとなる。
【００２４】
本発明は、１例として単に与えられると共に、添付する図面を参照する以下の詳細な説明を読むことによりよく理解される。
【図面の簡単な説明】
【００２５】
【図１】本発明の乗算器／アキュムレータ（ＭＡＣ）構造の高レベルの機能ブロックを示す図。
【図２】図１のＭＡＣに関する更に詳細な機能ブロックを示す図。
【図３】Ａは、加算／減算（Ａ／Ｓ）機能を含む標準ブース・エンコーダ用のゲート・レベル実施を示す図。Ｂは、更に加算／減算（Ａ／Ｓ）機能をそれぞれ含む第１及び最終段用の変形ゲート・レベル・ブース・エンコーダ回路を示す図。Ｃは、更に加算／減算（Ａ／Ｓ）機能をそれぞれ含む第１及び最終段用の変形ゲート・レベル・ブース・エンコーダ回路を示す図。
【図４】Ａは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。Ｂは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。Ｃは、符号拡張なしのブース選択段回路用のゲート・レベル実施を示す図。Ｄは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。
【図５】部分積の整合及び多段のワラス圧縮器を使用してこれらの低減を示す図。
【図６】４：２ワラス圧縮器セル用のゲート・レベル実施を示す図。
【図７】Ａは、Ｇsm、飽和及び分数モードを復号し、かつ制御する代表的なゲート・レベル回路を示す図。Ｂは、分数モードを実施する機能ブロックを示す図。
【図８】基本的な全加算器の遅延に関して部分積低減用の遅延到着プロファイル及び最後の加算器構造についての機能ブロックを示す図。
【図９】最後の加算器に行く前に、第３のビットを符号拡張用の拡張ビットと算術的に組み合わせるために使用される３：２圧縮器路網を示す図。
【図１０】ゼロ結果予測（ＺＲＡ）状態マシン及び図１のＭＡＣに採用された式を示す図。
【図１１】Ａは、５ビット加算器アレー用のゼロ検出の代表例を示すブロック図。Ｂは、図１１Ａのアレーの第１形式のセルを示す概要図。Ｃは、図１１Ａのアレーの第２形式のセルを示す概要図。
【図１２】図１１Ａの第１形式のセルに対するゲート・レベル実施を示す図。
【図１３】図１１Ｂの第２形式のセルに対するゲート・レベル実施を示す図。
【図１４】ゼロ検出回路の代表的な例を示す概要ブロック図。
【図１５】図１のＭＡＣにおけるゼロ検出機構の実施を表す概要ブロック図。
【図１６】３２ビット飽和を検出するゲート・レベル実施を示す図。
【図１７】Ａは、ビット位置３９〜１７に対する飽和制御セルを示す論理回路図。Ｂは、ビット位置１５〜０に対する飽和制御セルを示す論理回路図。Ｃは、ビット位置１６に対する飽和制御セルを示す論理回路図。
【図１８】Ａ、Ｂ、Ｃは、不偏の丸めを必要とするとき及び２つの場合についての結果を示す図。
【図１９】Ａは、４０ビットのオーバーフローを検出するゲート・レベル実施を示す論理回路図。Ｂは、４０ビットのオーバーフローを検出する一般論理式を示す図。
【図２０】入力としてＭＡＣに供給された信号及び出力としてＭＡＣにより供給された信号を示す本発明のＭＡＣユニットの高レベル機能ブロックを示す図。
【図２１】データ・ソース及びデータ送出先用の種々のバスに相互接続された本発明のＭＡＣユニット１００の概要を示すブロック図。
【図２２】ここで好適なアキュムレータ・レジスタ及び図２１に示すバス構造の一部との相互接続の概要を示すブロック図。
【図２３】本発明のＭＡＣユニットによるバス、メモリ及びレジスタ利用を説明する簡単なブロック図。
【図２４】本発明の二重ＭＡＣユニットによるバス、メモリ及びレジスタ利用を説明する簡単なブロック図。
【図２５】本発明の現在好ましい二重ＭＡＣユニット用のバス相互接続を説明する簡単なブロック図。
【図２６】本発明の二重ＭＡＣユニットを利用するＤＳＰを説明するブロック図。
【図２７】二重ＭＡＣユニット用の太線パスにより図２６のＤＳＰを説明するブロック図。
【００２６】
異なる図及び表において対応する番号及びシンボルは、指摘しない限り、対応する部分を示す。
【実施例】
【００２７】
本発明の回路及び技術は多くの異なる形式のディジタル処理回路を使用することになるけれども、ここでの説明は、ディジタル信号処理装置（ＤＳＰ）における実施についてのものとなる。当該技術分野において習熟する者は、この説明を精査した後は、本発明の回路及び技術を他の形式のプロセッサに使用し、かつ他の形式のディジタル処理回路を使用することが可能なことを認識すべきである。
【００２８】
集積回路の設計者において進められている目標は、より速い乗算器回路をますます回路素子によって実現する方法を見つけ出すことである。乗算器のパフォーマンスを改善するために採用された主な２戦略は、付加される部分積の数を減少させ、かつ部分積の積算を高速化することである。本発明の乗算器回路は、両方の戦略を採用している。
【００２９】
下記最初の説明は、４０ビット用の積算により、現在好ましい１７ビット×１７ビット（１７×１７）乗算器／積算器（ＭＡＣ）ユニット用のアーキテクチャー構造及び選択回路を指定している。好ましくは、乗算器／積算器ユニットは、その機能を１クロック・サイクル内で実行する。この最初の説明は、ＤＳＰコア・バス・システムとのインターフェースを含まない。この最初の説明は、いくつかの特定回路のアーキテクチャー定義、いくつかのサブブロック分析、及び仕様を含む。図１は、本発明の現在好ましいＭＡＣユニット１００の高レベルでの機能ブロック図を示す。この高レベルでの説明を容易にするために、図１のブロック図において、いくつかの信号は機能形式により示されている。しかし、これらの接続のより厳密な説明は、以下で行う。
【００３０】
Ｘ及びＹオぺランドは、乗算器／積算器ユニット１００に対する多数の並列ビット入力である。乗算器／積算器ユニット１００は、選択的に、乗算の積、乗算積を第３の数と組み合わせた算術結果、丸めた積若しくは結果、又は所定の飽和値である結果を出力する。１７×１７乗算器の場合に、この結果は、１６最下位ビット（ＬＳＢ）の３２並列ビット、及び最上位ビット（ＭＳＢ）の１６ビットを含み、それぞれ最下位ビットから最上位ビットへ順序付けられている。乗算による積を第３の数と算術的に組み合わせるときに、この第３の数は、アキュムレータの内容であってもよい。乗算器／積算器ユニット１００の動作は、複数の制御信号により制御されており、これらは、乗算器／積算器ユニット１００を配置しているＤＳＰ（又は他のＣＰＵ）コアにより使用される種々の命令によって提供される。
【００３１】
図１に示すように、乗算器／積算器（ＭＡＣ）ユニット１００のアーキテクチャーは、以下のカスケード接続された複数の機能段（又は複数のブロック）、即ち、
分数モード制御信号１２２の制御により、２つの１７ビット・オぺランド入力１０４（Ｙin）及び１０２（Ｘin）をそれぞれ受け取って、複数の部分積（ＰＰ）を発生し、これを次段の部分積加算ツリー１３０に供給する分数モード・ブロック（図示なし）を有する部分積発生段１２０、
丸めが丸め制御信号１３２の制御により適用可能とされ（２15 二進重み付けが付加され）、飽和が２入力１０２、１０４の値、及び予め選択された制御信号１３２に従って、「強制設定」可能にされ（図１において「８００×８００ＳＡＴ」により表されている）、かつ加算又は減算される第３の数１４２（Ａin）の一部が入力として供給される（図１には示されていない）ときに、入力として複数の部分積を受け取り、かつ３４ビット出力１３４を供給する部分積加算ツリー１３０、
部分積加算ツリー１３０の３４ビット出力１３４及び第３の数１４２（Ａin）の一部を受け取って最後の算術値即ち数を決定し、かつこれら条件の発生の適当な表示を有する適当なゼロ及びオーバーフロー検出１４４を含む、４０ビット最後の加算器段１４０、及び
加算器１４０からの最後の算術値即ち数を、３２ビットのときは「０Ｘ００７ｆｆｆｆｆｆｆ」（オーバーフロー）若しくは「０Ｘｆｆ８０００００００」（アンダーフロー）へ、又は４０ビットのときは「０Ｘ７ｆｆｆｆｆｆｆｆｆｆ」（オーバーフロー）若しくは「０Ｘ８０００００００００」（アンダーフロー）へ選択的に飽和させる最後の飽和段１５０からなる。この最後の飽和段１５０は、丸め制御信号１５２がアクティブのとき、例えば丸めが指定されたときに、１６ＬＳＢをゼロにクリアするために設けられている。最後の飽和段１５０は４０ビット出力１５４を供給し、この出力１５４は、好ましくは、アキュムレータ（図１には示されていない）に記憶される。種々の制御信号１２２、１３２、１４６、１５２は、命令デコード・ユニット（図１には示されていない）から供給され、ここで説明され、かつ本発明のＭＡＣユニット１００の動作を制御するために使用されている。
【００３２】
現在好ましい図１のＭＡＣユニット１００により実行される機能は：（１）ＭＰＹ［Ｒ］Ｙin*Ｘin［＋２15］と表される２つの１７ビット数（即ちオぺランド）１０２、１０４を乗算すること（ただし、Ｙin１０４及びＸin１０２は符号付き又は符号なしが可能な１７ビット・オぺランドである。）、（２）ＭＡＣ［Ｒ］Ａin＋Ｙin*Ｘin［＋２15］と表される１７ビット数１０２、１０４の乗算、及びこれらの積を第３の数１４２に加算すること（ただし、Ａin１４２はアキュムレータ（又は他のソース）からの４０ビット値又は数である。）、及び（３）１７ビット数１０２、１０４を乗算し、かつＭＡＣ［Ｒ］Ａin−Ｙin*Ｘin［＋２15］と表される第３の数１４２からこれらの積を減算することである。３機能の全てに対する［Ｒ］は、積に［＋２15］を加算する丸めオペレータ、又はその結果の算術数を表す。
【００３３】
図２は現在好ましい本発明のＭＡＣユニット１００の詳細な機能ブロック図を示す。複数のサブブロック、及びこれら種々のサブブロックに採用されている特定の回路のうちのいくつかは、以下で説明される。
【００３４】
ブース及びワラスの（以上で言及した）刊行は、電力及び速度に関していずれも、部分積の生成にブース符号化を使用でき、また加算低減処理にワラス・ツリー機構を使用できることを示した。基数４のブース符号化及びワラス３：２及び４：２ベースの圧縮器ネットワークは、本発明のＭＡＣユニットに使用されており、かつ両技術を使用する最良の妥協が成立する。
【００３５】
図２を参照すると、本発明のＭＡＣユニット１００は、図１に関連して説明したいくつかの異なる機能サブブロック１２０、１３０、１４０、１５０から構築されているのが解る。図２を引き続き参照すると、第１のオぺランド（Ｘin ）１０２は、分数モード・ブロック即ち分数モード段１２６ａに対する入力として供給されることが解る。図２において、この入力オぺランドのビットは、右（ゼロ）から左（１７）へ、分数モード段１２６ａの上端に沿いゼロから１７へ配列されている。ここで、分数モード段１２６ａは、分数モード制御信号１２２ａにより制御され、以下で更に詳細に説明される。分数モード段１２６ａは、その出力を、多数の第１のカスケード接続されたブース選択ブロック、即ちブース選択段１２６ｂ〜１２６ｊの第１の入力として、供給する。各ブース選択ブロック段１２６ｂ〜１２６ｊは、基本的には、１回路／ビット位置による多数のブース選択回路から作成されており、これらは以下で更に詳細に説明され、またこれらのブース選択ブロック段は、２ビット位置によって第１レベルから次のレベルへ（従って、図２において階段状に）オフセットされている。更に、第２のオぺランド（Ｙin）１０４は、一連のブース・エンコーダ・ブロック、即ちブース・エンコーダ段１２４ａ〜１２４ｉに対する入力として設けられており、これらは対応するブース選択ブロック段１２６ｂ〜１２６ｊと相互接続されていることがことが解る。入力オぺランドの各ビットは、上端段（ビット位置０）１２４ａから最下段（ビット位置１７）１２４ｉへ、エンコーダ段１２４ａ〜１２４ｉの左端に沿ってゼロから１７へ配列されている。その上、加算／引算制御信号１２２ｂはブース・エンコーダ段１２４ａ〜１２４ｉにも供給されている。ここで、ブース・エンコーダ段１２４ａ〜１２４ｉは、以下で更に詳細に説明されている。従って、図１の部分積発生段１２０は、分数モード段１２６ａ、カスケード接続された多数のブース・セレクタ段１２６ｂ〜１２６ｊ、及び多数のブース・エンコーダ段１２６ｂ〜１２６ｊ、及び多数のブース・エンコーダ段１２４ａ〜１２４ｉからなる。
【００３６】
図２を引き続き参照すると、図１の部分積加算ツリー１３０は、多数の、好ましくは、カスケード接続された６圧縮器段１３６ａ〜１３６ｆから作成されたワラス・ツリーからなることが解る。通常、圧縮器段１３６ａ〜１３６ｆは、３：２の圧縮器回路１３６ａ〜１３６ｃか、又は４：２の圧縮器回路１３６ｄ〜１３６ｆを採用する。これらの圧縮回路は、以下で更に詳細に説明する。その上、加算段１３０は、第１の圧縮器段１３６ａに入力１３２ｂを供給する特定デコーダ・ブロック１３２ｃを含む。加算段１３０は、更に必要なときに、丸めを実行する丸め（ｒｎｄ）信号１３２ａを入力しており、第３の圧縮器段１３６ｃに対する入力となる。デコーダ・ブロック１３２ｃは、２つの入力オぺランド１０２、１０４及び制御信号１３２ｄを入力している。ここで、デコーダ・ブロック１３２ｃ及び丸め（ｒｎｄ）信号１３２ａは、以下で更に詳細に説明される。最後の４：２の圧縮器段１３６ｆが示されており、その出力１３４は最後の加算器段１４０に供給される。この最後の４：２の圧縮器段１３６ｆは、説明を容易にするために、好ましくはアキュムレータからの第３の数１４２を２入力オぺランド１０２、１０４の結果の積と算術的に組み合わせる段として、示されている。しかしながら、この第３の数１４２の複数位置（異なる複数ビット位置）は、図５に関連して以下で述べるように、多数の圧縮器段１２６ｂ〜１２６ｊのうちの異なる１つに供給されてもよい。
【００３７】
図２を引き続き参照すると、図１の最後の加算器段１４０は、部分積加算段１３０の最後の圧縮器段１３６ｆから入力を受け取り、かつゼロ結果及び／又は飽和が発生したか否かを判断して、これらの結果を表すためにフラグ１４４を供給していることが解る。最後の加算器段１４０は、好ましくは、２３キャリー・ルック・アヘッド加算器（ＣＬＡ）及び１７キャリー選択加算器からなる。最後の加算器段１４０はその出力を最後の飽和段１５０に供給している。ゼロ結果が発生したとき、又は飽和が発生したときを判断する回路は、以下で更に詳細に説明される。
【００３８】
最後の飽和段１５０は、３２ビットに対して「０Ｘ００７ｆｆｆｆｆｆｆ」（オーバーフロー）若しくは「０Ｘｆｆ８０００００００」（アンダーフロー）へ、又は４０ビットに対して「０Ｘ７ｆｆｆｆｆｆｆｆｆｆ」（オーバーフロー）若しくは「０Ｘ８０００００００００」（アンダーフロー）へ最後の飽和を実行し、かつ丸めが必要ならば、下位の６ビットを０にクリアする。最後の飽和段１５０は、制御信号１５２により制御されており、以下で更に詳細に説明されている。最後の飽和段１５０は、最後の４０ビット出力１５４を供給する。
【００３９】
要約するに、本発明の乗算器／積算器ユニット１００は、複数の部分積を発生する変形ブース記録ロジック１２０と、最後の積を第３の数と算術的な組み合わせにより加算する一連の圧縮器を採用したワラス・ツリーの加算器／圧縮器段１３０と、最後の飽和段１５０内の異なる値に丸め又は飽和が可能な最終結果を発生する最後の加算器段１４０とにより実施される。ここで、４０ビット積算により１７×１７ＭＡＣとして説明したけれども、明らかに他のオぺランド・ビット長及びアキュムレータ・ビット長を採用してもよく、これも本発明の範囲内にある。
【００４０】
動作において、ＭビットのＸオぺランド（被乗数）１０２は、レジスタから分数モード段１２６ａに入力される。この分数モード段は、Ｍビット、好ましくは１７ビットを第１の多数のブース選択段１２６ｂ〜１２６ｊに出力する。以下で述べるように、分数モード段は、分数モード制御信号が活性のとき、即ち動作状態のときは、Ｘ入力を１ビット位置だけＭＳＢ方向にシフトする動作をする。ＮビットのＹオぺランド１０４は、レジスタからブース・エンコーダ段１２４ａ〜１２４ｉに入力される。これらのブース・エンコーダ段は、ブース選択段との組み合わせにより、複数の部分積ビット４０８を発生する。各ブース・エンコーダ段は、その最終段を除き、ブース選択ロジック１２６ｂ〜１２６ｊに対応する段に接続された３出力３０２、３０４、３０６又は３５２、３５４、３５６を有すると共に、選択段即ち選択行はブース選択回路４００、４２０、４４０、４６０から形成されている。ブース・エンコーダ段からの３出力は、２最下位ビットから開始するＹオぺランド１０４の各３ビット間の２つの遷移に対応し、Ｘオぺランド１０２上で動作して部分積４０８を形成する。
【００４１】
部分積を発生するブース選択段のアレーは、２ビットの増分により互いにオフセットされている。従って、アレーからの（ブース選択段１２６ｂからの）ブロック段部分積ゼロの２最下位ビットは、一緒にワラス・ツリー加算器／圧縮器段１３０に出力される。同様に、（次のブース・セレクタ段１２６ｃからの）部分積ゼロの次の２ビットは、部分積１の２最下位ビットにより一緒に加算されて、その和はワラス・ツリー加算器／圧縮器段１３０に出力される。この手順は、ブース選択段のアレーにおける残りの中間部分積４０８について最後のブース選択段の隣まで続く。最後のブース選択段１２６ｊは、第１のブース選択段１２６ｂから１６ビットによりオフセットされている。このようにして、エンコーダ及びセレクタのブース記録ロジックは、部分積の発生を制御している。３４ビット幅のワラス・ツリー加算器／圧縮器段は、４０ビット幅の最後の圧縮器段１３６ｆに対する入力として使用される３４ビット・ワードを積算し、この圧縮器段１３６ｆは、好ましくは更に、あるアキュムレータから４０ビットの３つの数を「作動上」受け取る。乗算のみの動作の場合、第３の数即ちアキュムレータ入力は、０に強制設定される。最後の圧縮器段の出力は、最後の加算器段１４０に供給される。最後の加算器段１４０は、最後の飽和及び丸め段１５０に出力を供給し、その出力は、好ましくは、アキュムレータ又は他のレジスタに対する入力として供給される。
【００４２】
丸めモード制御信号は、ワラス・ツリー即ち最終段では丸めを実行すべきか否か、またどのようなレベルかについて判断する。４０ビット結果の場合、ロード即ち動作の結果として更新された符号状態ビットは、Ｍ４０フラグに従って報告される。Ｍ４０フラグが０のときは、符号ビットは結果ビット３１からコピーされる。Ｍ４０フラグが１のときは、ビット３９がコピーされる。Ｍ４０フラグは、３２ビットの結果を使用するのか、又は４０ビットの結果を使用するのかを決定する。
【００４３】
オーバーフロー・ロジックは、出力用に選択されていない結果の最上位ビットを評価し、これがデータを含んでいるか否かを判断する。イエスであれば、これは、オーバーフロー・インジケータとして使用され、オーバーフロー・フラグがセットされる。全ての非選択ビットが同一であるか否かを判断するために、排他的論理和（ＸＯＲ）ゲートが使用され、また動作が符号なしオぺランドを使用しているときに、最上位ビットが０であるか否かを判断するために、ＡＮＤゲートが使用される。これら２ゲートの出力は、オーバーフロー・フラグを出力するＯＲゲートにより比較される。符号付きオぺランドが使用されているときは、２最上位ビットは、符号を表し、オーバーフローが発生していない限り、同一である。
【００４４】
ゼロ・フラグは、４０ビット結果が以下で詳細に説明するゼロ結果予測（ＺＲＡ）によりゼロであると予測されるときにのみ活性となる。負フラグは、出力が符号付きであり、最上位ビットが「１」のときに、セットされる。
【００４５】
ここでブース・エンコーダ１２４ａ〜１２４ｉを参照すると、ブース・エンコーダは、加算されるべき部分積の数を低減するために有用な１要素である古典的な機能である。基数４によりブースのアルゴリズム・エンコーダにおいて、３乗算器オぺランドの３ビットは、部分積（ＰＰ）の発生、被乗数オぺランドＰＰの発生、最上位ビット（ＭＳＢ）ＰＰに相対する１ビット位置によりシフトされた被乗数の発生、及びＡＮＤ符号の発生を制御するために、符号化される。
【００４６】
表１は、現在好ましい典型的なブース・エンコーダの動作を説明している。表１において、乗算器オぺランドの３ビットは、Ｙi-1、Ｙi-1、Ｙi、Ｙi+1 である。ただし、ｉはビット位置である。表１において、信号ｐ２、ｐ１及びｓｇは、エンコーダの出力信号であり、「機能」は、この被乗数値と乗算（*）されて部分積を発生する「値」を示している。
【００４７】
【表１】
2010086547.tif 000003
【００４８】
表１のブース・エンコーダは、好ましくは、単一のエンコーダ回路により実施される。図３Ａは表１により定義され、加算／減算（Ａ／Ｓ）信号を有する標準ブース・エンコーダ回路３００用のゲート・レベル実施を示す。このような９エンコーダ回路１２４ａ〜１２４ｉは、乗算器オぺランドＹi の１７ビットを符号化するために必要とされる。これらのビットは、以下のように符号化するために相互に関連され、かつグループ分けされる。
’０’、Ｙ0、Ｙ1−−→第１のエンコーダ、
Ｙ1、Ｙ2、Ｙ3−−→第２のエンコーダ、
Ｙ3、Ｙ4、Ｙ5−−→第３のエンコーダ、
．．．．．．．．．．
Ｙ13、Ｙ14、Ｙ15−−→第８のエンコーダ、
Ｙ15、Ｙ16−−→第９のエンコーダ、
【００４９】
しかしながら、「第１」のエンコーダ回路１２４ａ／３５０は、Ｇsmモード飽和をより容易にするために、「０００」入力構造がｐ１＝ｐ２＝０及びｓｇ＝１を発生するので、少し異なる。「第１」のエンコーダ回路３５０は、図３Ｂに示されている。更に、最後のビットが符号ビットのコピーなので、第９及び最後のエンコーダ回路１２４ｉ／３８０も異なる。最後のエンコーダ回路３８０は、図３Ｃに示されている。加算／減算（Ａ／Ｓ）信号１２２ｂは、積を第３の数（アキュムレータ）の値１４２に加算すること、又はこれより減算することを定める。加算／減算（Ａ／Ｓ）信号１２２ｂは、「乗算及び減算」モードを選択すれば、以下で更に詳細に説明するように、ＸＯＲゲートを介して符号ビット「ｓｇ」の値（表１の表示）の補数を取る作用をする。
【００５０】
ここで図３Ａを参照すると、標準ブース・エンコーダ回路３００／１２４ｂ〜１２４ｈが示されている。この回路３００は、Ｙi-1 ビット１０４が第１のインバータ３１２に対する１入力として、第２の３入力ＡＮＤゲート３２２に対する１入力として、第１の２入力ＸＯＲゲート３２６に対する１入力として、及び２入力のＮＡＮＤゲート３２８に対する１入力として供給されている。第１のインバータ３１２の出力は、第２の３入力ＡＮＤゲート３２０に対する１入力として供給される。Ｙiビットは、第２のインバータ３１４に対する入力として、第１の３入力ＡＮＤゲート３２２に対する第２の入力として、２入力ＮＡＮＤゲート３２８に対する第２の入力として、及び第１の２入力ＸＯＲゲート３２６に対する第２の入力として供給されている。第１の入力ＸＯＲゲート３２６の出力は、ｐｌ信号である。第２のインバータ３１４の出力は、第２の３入力ＡＮＤゲート３２０に対する２入力として供給される。Ｙi+1ビットは、第３のインバータ３１６に対する入力として、第２の３入力ＡＮＤゲート３２０に対する第３の入力として、及び２入力ＡＮＤゲート３３０に対する第１の入力として供給されている。第３のインバータ３１６の出力は、第１の３入力ＡＮＤゲート３２２に対する３入力として供給される。第１及び第２の３入力ＡＮＤゲート３２０、３２２は、これらの出力を２入力ＯＲゲート３２４に対する入力として供給する。
ＯＲゲート３２４の出力は、ｐ２信号３０２に対する第２の入力として供給される。ＮＡＮＤゲート３２８からの出力は、２入力ＡＮＤゲート３３０に対する２入力として供給される。２入力ＡＮＤゲート３３０からの出力は、第２のＸＯＲゲート３３２に対する１入力として供給される。第２のＸＯＲゲート３３２に対する第２の入力は、加算／減算信号１２２ｂである。第２のＸＯＲゲート３３２の出力は、ｓｇ信号３０６である。この特定の組み合わせゲートは表１のロジックを実施する。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートを採用してもよい。
【００５１】
ここで図３Ｂを参照すると、第１のブース・エンコーダ回路３５０／１２４ａが示されている。ブース・エンコーダ回路３５０は、第１のインバータ３６２に対する入力として、及び２入力ゲート３７２に対する１入力としてＹ０ビットが供給されている。第１のインバータ３６２の出力は、２入力ＡＮＤゲート３７０に対する第１の入力として、及び第２のインバータ３６４に対する入力として供給されている。第２のインバータ３６４の出力は、ｐ１信号３５２として供給されている。Ｙ1ビットは、第３のインバータ３６６に対する入力として、及び２入力ＡＮＤゲート３７０に対する第２の入力として供給されている。ＡＮＤゲート３７０の出力は、ｐ２信号３５４である。第３のインバータ３６６の出力は、２入力ＮＡＮＤゲート３７２に対する第２の入力として供給されている。２入力ＮＡＮＤゲート３７２の出力は、２入力ＸＯＲゲート３７２の１入力として供給されている。ＸＯＲゲート３７４に対する第２の入力は、加算／減算信号１２２ｂである。ＸＯＲゲート３７４の出力は、ｓｇ信号３５６である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートが使用されてもよい。
【００５２】
図３Ｃを参照すると、最後のブース・エンコーダ回路３８０／１２４ｉが示されている。ブース・エンコーダ回路３８０は、第１のインバータ３９２に対する入力として、及び第１の２入力ＸＯＲゲート３９２の１入力として、Ｙi-1ビットが供給されている。インバータ３９２の出力は、２入力ＡＮＤゲート３９６の第１の入力として供給されている。Ｙiビットは、第１のＸＯＲゲート３９４に対する第２の入力として、及び２入力ＡＮＤゲート３９６に対する第２の入力として供給されている。第１のＸＯＲゲート３９４の出力は、ｐ１信号３８２である。２入力ＡＮＤゲート３９６の出力は、第２の２入力ＸＯＲゲート３９８に対する第１の入力として供給されている。ＸＯＲゲート３９８に対する第２の入力は、加算／減算信号１２２ｂである。第２のＸＯＲゲート３９８の出力は、ｓｇ信号３８６である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートが使用されてもよい。
【００５３】
ここで、ブース選択段１２６ｂ〜１２６ｊに注目すると、この説明は、その後に相互に加算される部分積（ＰＰ）の発生を説明している。各ブース選択段１２６ｂ〜１２６ｊは、前述したように、信号「ｐ２」、「ｐ１」及び「ｓｇ」により制御された乗算器からなる。以下、下記の表２に示すＰＰの１ビットを処理する代表的な回路を説明する。
【００５４】
【表２】
2010086547.tif 000004
【００５５】
「--２*Ｘ」及び「--Ｘ」の選択は、対応するＸビット位置を反転し、かつ位置０にブース・キャリー・ビットを加算することにより得られる。ブース・キャリー・ビットは、「ｓｇ」ビットの値である。図４Ｂ及び４Ｄに関連して説明されているように、符号拡張管理のために専用回路が設けられている。ここで述べているように、ＰＰ段１２０は、分数モード制御を含む。
【００５６】
各部分積は整合されて、それぞれが最下位ビット（ＬＳＢ）に相対する２ビット位置だけシフトされた次と加算される。図４Ａは、通常ブース選択段４００に関するゲート・レベルでの実施を示す。図４Ｂは符号拡張４２０ありの通常ブース選択段回路に関するゲート・レベルでの実施を示す。図４ｃ及び図４ｃは、それぞれ、符号拡張なし４４０、及び符号拡張あり４６０の最後のブース選択段回路に関するゲート・レベルでの実施を示す。
【００５７】
ここで、図４Ａを参照すると、符号拡張なしの通常のブース選択段回路４００が示されている。この選択段回路４００は、Ｘi-1ビットが第１の２入力ＡＮＤゲート４１０に対する１入力として供給され、かつｐ２信号４０２がこの第１の２入力ＡＮＤゲート４１０に対する第２の入力として供給されている。ｐ２信号４０２は、ブース選択段回路４００が配置されているブース選択ブロック段１２６ｂ〜１２６ｊ即ちそのレベルに従い、通常のブース・エンコーダ回路３００、第１のブース・エンコーダ回路３５０から出力されるｐ２信号３０２、又は３５２に対応する。Ｘiビット１０２は、第２のＡＮＤゲート４１２に対する第１の入力として供給され、また第２の２入力ＡＮＤゲートはｐ１信号４０４である。ｐ１信号４０４は、ブース選択段回路４００が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路３００、又は第１のブース・エンコーダ回路３５０により出力されるｐ１信号３０４、３５４に対応する。第１及び第２のＡＮＤゲート４１０、４１２の出力は、２入力ＯＲゲート４１４に対する入力である。２入力ＯＲゲート４１４の出力は、２入力ＸＯＲゲート４１６に１入力として供給される。ＸＯＲゲート４１６に対する第２の入力は、ｓｇ信号４０６である。ｓｇ信号４０６は、ブース選択段回路４００が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路３００又は第１のブース・エンコーダ回路３５０により出力されるｓｇ信号３０６、３５６に対応する。ＸＯＲゲートの出力はＰＰｉ信号４０８である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートを使用することもできる。これらのブース選択段回路４００は、最上位ビットに対するビット位置を除き、全てのビット位置に対する多数のブース選択ブロック段１２６ｂ〜１２６ｉの各段即ち各層に使用される。
【００５８】
ここで図４Ｂを参照すると、符号拡張４２０ありの通常のブース選択段回路が示されている。符号拡張４２０はＸin１０２が第１の２入力ＮＡＮＤゲート４２４に対する１入力として供給されている。ｐ２信号４０２は２入力のＯＲゲート４２２に対する第１の入力として供給されている。２入力ＯＲゲート４２２に対する第２の入力は、ｐ１信号４０４である。ＯＲゲート４２２の出力は、２入力ＮＡＮＤゲート４２４に対する第２の入力である。ＮＡＮＤゲート４２４からの出力は、ＸＯＲゲート４２６に対する１入力として供給されている。ＸＯＲゲート４２６に対する第２の入力は、ｓｇ信号４０６であり、ＸＯＲゲートの出力はＰＰｉ信号４０８である。ここでも、ｐ２、ｐ１及びｓｇ信号は、ブース選択段回路４００が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路３００又は第１のブース・エンコーダ回路３５０からのものでよい。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。これらの符号拡張４２０は、最上位ビット位置に対する多数のブース選択ブロック段１２６ｂ〜１２６ｊの各段即ち各層に使用される。
【００５９】
ここで図４Ｃを参照すると、符号拡張４４０なしの最後の段ブース選択段回路１２６ｊが示されている。この回路４４０は、２入力のＡＮＤゲート４４２に対する１入力として供給されるＸiビット１０２を有し、またこの２入力のＡＮＤゲート４４２に対する第２の入力としてｐ１信号３８２が供給されている。ＡＮＤゲート４４２の出力は、ＸＯＲゲート４４４に対する１入力である。ＸＯＲゲート４４４に対する第２の入力は、ｓｇ信号３８６である。ＸＯＲゲート４４４の出力は、ＰＰｉ信号４０８である。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。このブース選択段回路４００は、最上位ビットに対するビット位置を除き、全てのビット位置に対して最終段即ち最終層のブース選択段１２６ｊに使用される。
【００６０】
ここで図４Ｄを参照すると、符号拡張なしの最終段のブース選択段回路４６０が示されている。このブース選択段回路４６０は、２入力のＮＡＮＤゲート４６２に対する１入力として供給されるＸiビット１０２を有し、かつこの２入力のＮＡＮＤゲート４６２に対する第２の入力としてｐ１信号３８２が供給される。ＮＡＮＤゲート４６２の出力は、２入力のＸＯＲゲート４６４に対する１入力として供給される。ＸＯＲゲート４６４に対する第２の入力は、ｓｇ信号３８６であり、ＸＯＲゲート４６４の出力は、ＰＰｉ信号４０８である。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。このブース選択段回路４６０は、最上位ビットの位置に対する最終段即ち最終層のブース選択段１２６ｊに使用される。
【００６１】
ワラス・ツリー加算器／圧縮器段１３０を使用したＰＰｓ４０８を低減すると、不規則な圧縮器網を除き、最も可能性のある並列圧縮器網に至る。図５は３段の圧縮器５１０、５１２、５１４を使用した部分積の整合及び低減を示す。本発明の乗算器の実施においてある規則性を保持するために、好ましくは、３：２及び４：２の圧縮器の混成機構を使用する。
【００６２】
圧縮器は、ｎＰＰｉビット４０８と加算して和及びキャリー・ビットを送出する回路である。３：２圧縮器は、３ビットを加算して前述の２ビットの和及びキャリー）を送出し、更にこのツリーにより低減される。４：２圧縮器は４ビットをキャリー入力と加算して、前述の２ビット及びキャリー出力をその隣接段に発生する。
【００６３】
図５を引き続き参照すると、多数の３：２圧縮器５２０及び多数の４：２圧縮器が示されている。これらのビット位置は、図５の上端に沿って０〜３３の番号が付けられ、かつ図５の下端近くに０〜３９の番号が付けられている。第３の数（即ちアキュムレータ）の入力ビットは、「Ａ」１４２により表されている。
【００６４】
ＰＰ低減即ち加算段５１０、５１２、５１４の総数は、好ましくは、３である。第１の加算器段５１０は、３行即ち層の３：２圧縮器１３６ａ〜１３６ｃからなる。これら３（和、キャリー）対／ＰＰビットは、カスケード接続された２段５１２、５１４の４：２圧縮器１３６ｄ〜１３６ｅ及び１３６ｆにより更に低減され、最後に第３入力１４２との何らかの算術的組み合わせを含む（和、キャリー）対／ＰＰビットを送出する。各ビット位置に対する和及びキャリーは、図５の下端に配置されており、最後の加算器段１４０に供給される。各ビット位置に対する最後の和は、和ｓ１（第１の加算器段からの和）、ｓ２（第２の加算器段からの和）、又はｓ３（第３の加算器段からの和）により表されている。各ビット位置に対する最後のキャリーは、キャリーｃ１（第１の加算器段からのキャリー）、ｃ２（第２の加算器段からのキャリー）、又はｃ３（第３の加算器段からのキャリー）により表されている。
【００６５】
ここで図５において最初の３：２圧縮器段１３６ａを参照すると、図５の右上部分にビット位置０に対する単一の圧縮器が示されているのが解る。この圧縮器は３入力を有する。第１の入力は、この圧縮器を表す灰色のブロックの上端の「０」により表された（第１の選択段１２６ｂからの）第１のＰＰである。第２の入力は、このブロック内に「Ａ」により表された第３の数１４２のビット位置０である。第３の入力は、このブロックにおけるブース・キャリー信号ｂ０である（この信号はｒｂ０であり、図７Ａを参照して以下で詳細に説明される）。同様に、ビット位置１に対する圧縮器は、その２入力として、「１」により表された（第１の選択段１２６ｂからの）第２のＰＰ、及び、再び「Ａ」により表された第３の数１４２のビット位置１の値を含む。この圧縮器は、その第３の入力（図示なし）に対して０のキャリー入力値を有するので、２：２圧縮器として動作する。ビット位置２に対する圧縮器は、その３入力として、（第１の選択段１２６ｂからの）「２」により表された第３のＰＰ、「０」により表された第２の選択段１２６ｃからのＰＰ（第２の選択段１２６ｂからの第１のＰＰ）のビット位置０の値、及びブース・キャリー信号ｂ１を有する。
【００６６】
このようにして、第１の３ブース選択段１２６ｂ〜１２６ｄからのＰＰは、第１の圧縮器段１３６ａの圧縮器により加算される。同様にして、次の３ブース選択段１２６ｅ〜１２６ｇからの各ＰＰは、第２の圧縮器段１３６ｂの圧縮器により加算される。同じく、最後の３ブース選択段１２６ｈ〜１２６ｊからのＰＰは、第３の圧縮器段１３６ｃの圧縮器により加算される。
【００６７】
しかしながら、ビット位置２１に対する圧縮器段１３６ａ内の圧縮器は、第３の選択段１２６ｄからのＰＰと第４の選択段１２６ｅからのＰＰとの間で橋渡しをすることが解る。圧縮器段１３６ｂ及び１３６ｃに対するビット位置２１〜２３及び２６〜２８における他の圧縮器は、同様の「橋渡し機能」を実行する。圧縮器段１３６ｃ及びビット位置１０のときに、ブース・キャリー信号ｂ５が示されることが解る。ブース・キャリー信号ｂ５は、ビット位置１０で圧縮器段１３６ｄ内の圧縮器に対する入力である。同様に、ブース・キャリー信号ｂ８、圧縮器段１３６ｃにおけるＰＰを表す「７」、及び圧縮器段１３６ｃにおける他のＰＰを表す「６」は、それぞれビット位置１６、２３及び２２で圧縮器段１３６ｅにおける圧縮器に対する入力である。同様に、他のこのような信号は、接続又はレイアウト目的を容易にするために異なる圧縮器段に再配置される。即ち、第３の数の入力「Ａ」１４２に対するビットは、例えば、３つの加算器段の全てに見出される。
【００６８】
多数の初期圧縮器段における符号拡張のオーバーヘッドは、ＭＳＢビット位置における「１」の加算により制限される。オぺランドの符号拡張は、オペレータ又はレジスタのフォーマット（ビット位置数）がオぺランドより大きいときに、発生する。即ち、圧縮器段１３６ａに対するビット位置１９〜３３、及び圧縮器段１３６ｂに対するビット位置２８から３３まで符号拡張ビットを有するというよりも、「１」は、加算処理を加速させるために適当な圧縮器段内のＭＳＢビット位置に供給される。特に、図５に示すように、この符号拡張のオーバーヘッドを避けるために、ビット位置１９及び２１では圧縮器段１３６ａにより、ビット位置２３、２５及び２７では圧縮器段１３６ｃにより、そしてビット位置３５〜３９では圧縮器段１３６ｆにより、「１」が加算される。更に、ブース・キャリー（ｂ０〜ｂ８信号）は、通常、第１段５１０において加算される。丸め（「Ｒｎｄ」）制御信号１３２ａがアクティブのときは、第１の段５１０の、図５において「Ｒ」により表された、第３レベルの１３６ｃにおけるビット位置１５で「１」を加算することにより、丸めが実行される。
【００６９】
次いで、第１の加算器段からの中間加算（ｓ）及びキャリー（ｃ１）ビットは、全てのビット位置で４：２圧縮器段により、一緒に加算される。続いて、同一の形式の他の段及び半加算器段によって、最後の加算器により加算されることになる和及びキャリーのベクトルへＰＰを低減させる。図５は、部分積の低減、及びこれらの加算ビット及びキャリー・ビットの低減結果により、圧縮器網により作成された加算ビット及びキャリー・ビットに適用される低減処理を示す。一般的に、４：２圧縮器は、ツリーの終端においてより平衡した信号到着プロファイルを得る。例えば、ＶＬＳＩシステムに関するＩＥＥＥ会議報告、１９９５年６月、第３巻、第２号、第２９２頁〜第３０１頁、オクロブジャ（Ｖ．Ｇ．Ｏｋｌｏｂｄｚｊａ）ほかによる「改良された列圧縮ツリー及びＣＭＯＳ技術において最適化された最後の加算器を使用した乗算器設計の改良（Ｉｍｐｒｏｖｉｎｇ  Ｍｕｌｔｉｐｌｉｅｒ  Ｄｅｓｉｇｎ  ｂｙ  Ｕｓｉｎｇ  Ｉｍｐｒｏｖｅｄ  Ｃｏｌｕｍｎ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｔｒｅｅ  ａｎｄ  Ｏｐｉｍｉｚｅｄ  Ｆｉｎａｌ  Ａｄｄｅｒ  ｉｎ  ＣＭＯＳ  Ｔｅｃｈｎｏｌｏｇｙ）」、及びＶＬＳＩ信号処理ジャーナル（Ｊｏｕｒｎａｌ  ｏｆ  ＶＬＳＩ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ）、７、第２１３頁〜第２２２頁、オクロブジャほかによる「複素数用の集積乗算器（Ａｎ  Ｉｎｔｅｇｒａｔｅｄ  Ｍｕｌｔｉｐｌｉｅｒ  ｆｏｒ  Ｃｏｍｐｌｅｘ  Ｎｕｍｂｅｒｓ）」を参照されたい。
【００７０】
現在好ましいワラス・ツリーを実施する場合に、４：２圧縮器用に新しい回路が開発された。その機能及び最適化された論理式は、一般的に知られている。ＩＥＥＥ  ＣＩＣＣ  ’９４会議報告、第５９９頁〜第６０２頁、オオクボほかによる「パス・トランジスタ・マルチプレクサを使用した４．４ｎｓＣＭＯＳ５４×５４ｂマルチプレクサ（Ａ  ４．４  ｎｓ  ＣＭＯＳ  ５４×５４ｂ  Ｍｕｌｔｉｐｌｉｅｒ  Ｕｓｉｎｇ  Ｐａｓｓ−ｔｒａｎｓｉｓｔｏｒ  Ｍｕｌｔｉｐｌｅｘｅｒ）」を参照されたい。しかしながら、回路における全ての遅延は、ツリーにおけるスプリアス遷移を最小化するために、平衡される必要がある。
【００７１】
図６は４：２圧縮器回路５２２用に現在好ましいゲート・レベルの実施を示す。特に、この回路は、４入力Ｐ０、Ｐ１、Ｐ２及びＰ３を有する。これらの４入力は、加算器段（第２又は第３の加算器段）内でビット位置毎に変化するが、通常は、前の加算器段の圧縮器回路からの和及びキャリー、選択した第３の数のビット位置値、及びブース・キャリー又は選択された部分積である。第１の入力Ｐ０は、第１の２入力ＸＯＲゲート６０２に対する第１の入力、及び第１の２入力ＡＮＤゲート６１２に対する第１の入力である。第２の入力Ｐ１は、第１の２入力ＸＯＲゲート６０２に対する第２の入力である。第３の入力Ｐ２は、第２の２入力ＸＯＲゲート６０４に対する第１の入力、及び第２の２入力ＡＮＤゲート６１４に対する第１の入力である。第４の入力は、第２の２入力ＯＲゲート６０４に対する第２の入力、及び第３の２入力ＡＮＤゲート６２０に対する第１の入力である。ＸＯＲゲート６０２の出力は、第３のインバータ６０６に対する入力、第１のインバータ６１０に対する入力、及び第２の２入力ＡＮＤゲート６１４に対する第２の入力である。インバータ６１０の出力は、第１の２入力ＡＮＤゲート６１２に対する第２の入力である。ＡＮＤゲート６１２及び６１４の出力は、第１の２入力ＯＲゲート６１６に対する２入力であり、その出力はキャリー出力Ｃｏ６３４（和Ｓ６３０に関連したキャリー）である。ＸＯＲゲート６０４の出力は、第３のＸＯＲゲート６０６に対する第２の入力である。ＸＯＲゲート６０６の出力は、第４のＸＯＲゲート６０８に対する入力、第２のインバータに対する入力、及び第４の２入力ＡＮＤゲート６２２に対する入力である。第２のインバータ６１８の出力は、第３の２入力ＡＮＤゲート６２０に対する第２の入力である。キャリー入力信号Ｃin６３６は、第４のＸＯＲ６０８に対する第２の入力、及び第４のＡＮＤゲート６２２に対する第２の入力である。ＸＯＲゲート６０８の出力は、和出力信号Ｓ６３０である。ＡＮＤゲート６２０及び６２２の出力は、第２の２入力ＯＲゲート６２４の入力である。ＯＲゲート６２４の出力は、次の圧縮器に対するキャリー出力信号Ｃｏｕｔ６３２である。ＸＯＲゲート及びマルチプレクサに対してパス・トランジスタ技術を使用して実施されたこの回路は、４入力から和出力Ｓ及びキャリー出力Ｃｏへ、及び隣接キャリー入力（ｎｅａｒｅｓｔ  ｎｅｉｇｂｏｕｒ  ｃａｒｒｙ  ｉｎ）Ｃinから隣接キャリー入力Ｃｏｕｔへ高速かつ平衡したパスを提供する。
【００７２】
３：２圧縮器の場合、特定の「ａ＋ｂ＋１」回路は、表３に示すように、式「和＝！（ＸＯＲＢ）＝！（ＸＯＲｂ）」及び「キャリー＝ａ｜ｂ」を満足させることが好ましい。
【００７３】
【表３】
2010086547.tif 000005
【００７４】
図７Ｂに示すように、分数モードは、分数モード制御信号１２２の制御により、Ｘmオぺランド１０２をＭＳＢに対して１ビット位置だけシフトすることからなる。これは、複数の２入力マルチプレクサ（「ＭＵＸ２」）７１０を介して各ビット位置について１回実施される。
【００７５】
図７Ａに示すように、Ｇsm飽和は、「ｘ１８０００」を「ｘ１８０００」により乗算すると、分数Ｇsm信号及び飽和制御信号がアクティブのときは、その結果が「００７ｆｆｆｆｆ」に（又は、丸めがアクティブのときは、「００８００００７ｆｆｆ」に）に強制設定される必要があることを意味する。図７Ａに示すように、特定のＸin 及びＹinＧsmオぺランドのデコードは、好ましくは、標準論理１３２ｃにより実行される。その結果、部分積の第１行に対して全て１を設定するために、第１段のブース・キャリー（ｂ０）を補足する。これは、総デコード時間をブース符号化及びＰＰ選択段による遅延よりも減少させる。
【００７６】
図７Ａを引き続き参照すると、複数の２入力のＮＯＲゲート７２０〜７３４が示されており、それぞれ０から１４までのビット位置を表し、かつ各ビット位置に対応するＸ及びＹ入力を有する。ＡＮＤゲート７３５及び７３６はビット位置１５及び１６を表し、かつこれらの２ビット位置に対応するＸ及び入力を有する。これらＮＯＲゲートの出力は、一組の４入力ＡＮＤゲート７４０〜７４４に集められ、一方、ＡＮＤゲート７３５及び７３６の出力は、ＡＮＤゲート７４５に集められる。４入力ＡＮＤゲート７４０〜７４４の出力は、４入力ＡＮＤゲート７５０に集められる。ＡＮＤゲート７５０、ＡＮＤゲート７４５からの出力、及びＧsm制御信号７３７は、３入力ＡＮＤゲート７５２に対する入力である。ＡＮＤゲート７５２の出力Ｇsat７５６は、Ｇsm飽和信号を表す。この信号は、２入力ＸＯＲゲート７５４に対する１入力となり、他方の入力は第１のブース・エンコーダ１２４ａからのｓｇ0信号である。ＸＯＲゲート７５４の出力は、ｒｂ0７６０信号であり、圧縮器に対する第１のブース・キャリー信号として、以上で詳細に説明した第１の圧縮器段１３６ａにおけるビット位置０に供給される。
【００７７】
最後の加算器１４０は、その入力として、第３の数即ちアキュムレータの内容１４２と最後の圧縮器段１３６ｆからかつ低減した和及びキャリーとの加算結果、及び前の圧縮器段から第１の７ＬＳＢを入力する。これらの圧縮器の動作はＡin、和及びキャリー・バスを新しいセットの和及びキャリーに低減する。最後の和及びキャリーは、最後の４０ビット加算器に供給されて最終結果を得て、これが最後の飽和段１５０において３２ビット飽和検出について解析される。
【００７８】
通常、最後の加算器１４０に関する高速アーキテクチャーは、種々の実施に帰結するキャリー・ルック・アヘッド技術（ＣＬＡ）を必要とする。しかしながら、４０ビット用の１ブロックＣＬＡは、速度及びシリコン面積に関して６４ビット加算器のキャリー伝搬機構に至る。部分積低減ツリーの遅延プロファイルを観測することによる他の技術は、単なるＣＬＡ実施をこの遅延が減少し始めるビット位置までの下位ビットに制限するのを考慮している。残りのビット（ＭＳＢ）に関しては、第１のＣＬＡ加算器のキャリー出力により選択を実行するキャリー選択加算器を選択することにより、キャリー伝搬の影響が低減される。また、キャリー選択アーキテクチャー内では、可変キャリー飛び越し機構によるキャリーを伝搬させることにより、どのような遅延到着プロファイルも考慮に入れることができる。この実施は、ＰＰ低減処理中に加算器の上位ビットのビット反転即ちトグルを減少させ、同時により小さなＣＬＡ構造を得ると共に速度を保持する効果がある。しかしながら、シリコンに実施するために規則性が劣る。
【００７９】
図８は、基本的な全加算器遅延に関して部分積減少のために模擬された遅延到着プロファイル、及びそのプロファイルのもとで現在好ましい対応する最後の加算器構造を示す。更に、オーバーフロー及びゼロの検出を報告する２ステータス・ビットも作成される必要がある。オーバーフロー検出は以下で説明されている。更に、ゼロ検出も以下で説明されている。図９は、圧縮器段１３６ｆからの最後の５ＭＳＢ３９〜２５を示す。これらの全５ビット位置は、図５における３：２圧縮器回路を有するものとして示されている。しかしながら、図５を再点検することにより解るように、ビット位置３９〜３５は、図９に示すように、、２入力のみを有する。この３：２圧縮器網は、結果を最後の加算器１４０に渡す前に、第３の数即ちアキュムレータ・ビットを拡張ビット位置３９〜３５に加算するために使用される。符号拡張は、好ましくは、ビット位置３５からの「１」をビット位置３９に加算することにより実施される。乗算のみの機能が選択されたときは、第３の数即ちアキュムレータ値Ａin［３９：０］を「０」に強制設定する。従って、図９において、ビット位置３９〜３５におけるＡi は、ＭＡＣ又はＭＡＳ動作を選択したときの第３の数即ちアキュムレータ値Ａin［ｉ］か、又はＭＰＹ動作のときの「ゼロ」である。従って、ＭＰＹ／ＭＡＣ制御信号１４６は、第３の数即ちアキュムレータ値が選択されたのか、又は全ての第３の数のビット位置にゼロが強制設定されたかを判断する。このキャリー選択１４６がアクティブ即ちハイのときは、第３の数即ちアキュムレータ値が全ビット位置に使用される。
【００８０】
最後の加算器１４０出力における最終結果がゼロのときは、対応するゼロ検出フラグが好ましくは１にセットされる。更に、丸めモードがアクティブのときは、その結果の１６最下位ビット（ＬＳＢ）は、これらのビット位置がゼロにクリアされることになるので、ゼロであるとみなされてフラグを更新する。しかしながら、最終的な結果ビット（丸めた後）を走査してゼロ検出フラグをどのようにセットするのかを判断する従来のゼロ検出の実施は、通常、タイミングの観点から許容できないパフォーマンス劣化に帰結する。従って、本発明のＭＡＣユニットは、最後の加算結果の判断と平行してゼロ検出フラグを更新するために、予測機構、ゼロ結果予測（ＺＲＡ）を使用する。
【００８１】
ゼロ結果予測技術は、各ビット位置に関するＰ、Ｇ及びＺステートの初期解析に依存している。これらのステートの組み合わせは、システムのステートがＰＳ（伝搬ステート）、ＣＳ（発生ステート）及びＺＳ（ゼロ・ステート）である説明のような「ステート・マシン」に至る。図１０は、ビット位置をＬＳＢから開始することにより走査する際に、システム・ステート・マシンがどのように動作するのかを示す。初期化時点で、システムはゼロ・ステートにある。ＭＳＢ位置において最後のゼロ・フラグ値はステート・ビットの論理和となる。
【００８２】
キャリー・ルック・アヘッド（ＣＬＡ）加算器のような構造に基づくゼロ検出機構を説明する。しかしながら、ＭＡＣユニット１００用のゼロ検出機構の実施を説明する前に、ＣＬＡアーキテクチャーに基づく数学的なアルゴリズムの簡単な説明は、以下のようである。
【００８３】
ａ及びｂが加算用の２つのオぺランドであるときは、次のようになる。
【００８４】
【数１】
2010086547.tif 000006
【００８５】
以上の式（１）及び（２）において、「ｇ」は「生成」項であり、また「ｐ」は「伝搬」項である。シンボル「・」は論理積動作を表し、またシンボル「Ａ」は排他的論理和（ＸＯＲ）を表す。「ｇ」及び「ｐ」項を組み合わせてキャリーを計算する。実際には、キャリー・インが＝０であれば次式のようになる。
【００８６】
【数２】
2010086547.tif 000007
【００８７】
ただし、オペレータ「ｏ」は次のように定義される。
【数３】
2010086547.tif 000008
【００８８】
上式において、シンボル「＋」は論理和動作を表す。
【００８９】
「ｏ」オペレータは、交換可能なので、次式を導出し得ることを示すことができる。
【００９０】
【数４】
2010086547.tif 000009
【００９１】
同一のアーキテクチャーは、いくつかのスライスの複数オぺランドに対して使用されてもよく、［ｏ］オペレータに基づき、これらの計算結果を組み合わせて大域的なキャリー発生を得る。１スライスのオペレータは、ある範囲のオぺランド・ビットを含む。
【００９２】
上式においてインデックスｋにより得られる自由度を使用して、伝搬遅延の項に関して最も効果的な方法により、オぺランドをスライスする。これは、高速キャリー発生器を介する大域的な伝搬時間を最小化することにより、実行される。
【００９３】
和におけるゼロ検出を説明するために、３対の２ビット二進数ａ及びｂを加算する簡単な例を考える。
【００９４】
【数５】
2010086547.tif 000010
【００９５】
ａ及びｂ項は交換できることに注意すべきである。これをｎビットの加算に一般化するために、新しいゼロ項（下記の８式）を定義し、かつ以上の式（１）及び（２）を組み合わせ、一組の３式（６）、（７）及び（８）を形成して、ｐ（ｉ）ビット、ｇ（ｉ）及びゼロ（ｉ）をそれぞれ定義することができる。
【００９６】
【数６】
2010086547.tif 000011
【００９７】
式「〜（ａ（ｉ）＋ｂ（ｉ））」は、「（ａ（ｉ）＋ｂ（ｉ））」の補数を表す。
【００９８】
以上の式（６）、（７）及び（８）により定義された３ビットの定義を組み合わせると、図１０に示すゼロ予測機構のステート・マシン１４００を定義するに至り、このシステムのステートは、以下のようになる。
【００９９】
【数７】
2010086547.tif 000012
【０１００】
ＺＥＲＯ（ｉ，０）、Ｇ（ｉ，０）は以下のようになる。
【０１０１】
【数８】
2010086547.tif 000013
【０１０２】
従って、これら３ステートのうちの１ステートが見出されるときは、ビットｉ上にゼロ（Ｚ）が検出される。
【０１０３】
【数９】
2010086547.tif 000014
【０１０４】
換言すると、インデックスｋ（０≦ｋ≦ｎ）が見出されるように、ステートが発生するのであれば、これは、２オぺランドの付加が０にゼロに帰結することを意味する。従って、次式のようになる。
【０１０５】
【数１０】
2010086547.tif 000015
【０１０６】
以上説明した高速キャリー発生アーキテクチャーを使用することにより、ゼロ検出するために、オペレータ「ｏ」と同一のプロパティーにより、１オペレータが定義される。これを以上の式（１３）から導き出すことができる。実際に、２オペレータ・スライス（ｎ，ｋ＋１）及び（ｋ，ｍ）が上式（１３）に説明したプロパティーを有するのであれば、これらはそれぞれゼロに帰結する。以下の２つの場合に、スライス（ｎ，ｍ）上でゼロが検出される。
【０１０７】
（ｋ，ｍ）のステートは全てゼロである                          （Ａ）
（ｎ，ｋ＋１）のステートはゼロ検出（即ち、（１２）におけるステートのうちの１つと同一）である                                          （Ｂ）
又は
（ｋ，ｍ）のステートはゼロ検出であり、かつスライスは「ｇ」を含む  
（Ｃ）
（ｎ，ｋ＋１）のステップは全てｐである                        （Ｄ）
これは次式のようになる。
【０１０８】
【数１１】
2010086547.tif 000016
【０１０９】
Ｇ（ｉ，ｊ）及びＰ（ｉ，ｊ）の項は、加算器高速キャリー発生中間結果から取り出され得る。従って、ゼロ検出機構は、以下のように定義された「ｕ」オペレータを形成するように、以下の方法により「ｏ」オペレータを変更することにより達成される。
【０１１０】
これは次式のようになる。
【数１２】
2010086547.tif 000017
【０１１１】
図１１Ａは、セル・アレーＣ（ｉ，ｊ）を含む５ビット時間最適加算器の代表的な実施を示し、このセル・アレーＣ（ｉ，ｊ）は中間予測信号を組み合わせるオペレータ「ｕ」、及び中間予測信号を転送するセルＣＢを実施するセルＣＣを含む。５ビット加算器のアーキテクチャーを説明する。ついでに述べるのはスライス境界（ｉ，ｊ）である。スライス境界はスライス間の境界である。図１１Ａにおける各列はビット位置を表し、これらのビット位置は、右の最下位ビット位置から左に向かって連続的に高いビットに増加している。
【０１１２】
図１１Ａに示すように、５ビット動作用のアレーは、２ビット動作用の第１のサブ・アレー１４０８、及び３ビット動作用の第２のサブ・アレー１４１０にスライスされ、大域的結果は、「ｕ」オペレータを介して２つの中間結果を組み合わせることにより得られる（例えば、（４，４）ｕ（３，２）＝（４，２））。
【０１１３】
ビットＢＯ〜Ｂ４に対する入力は、第１行のセル１４１２に供給される。中間予測信号は、矢印により示すように、第２の行１４１３及び第３の行１４１４を通って上方かつ左方へ波及する。これらの中間予測信号は、中間結果の組み合わせにかかる時間に対応した遅延をもって一方の行から次の行へ転送されて、水平方向に他方のセルに放送される。セル１４１５において第１の２ビット・オペレータ１４０８から中間予測結果を発生し、かつ３ビット動作のセルの第３の行に供給されてセル１４１６からの垂直出力に大域的結果を形成する。
【０１１４】
キャリー入力（ｃａｒｒｙ  ｉｎ）は、以上で説明したキャリー発生アーキテクチャーに影響しないことを示すことができ、かつ最後の計算で考慮に入れることができる。これは、以下繰り返しにより明らかにすることができる。
【０１１５】
【数１３】
2010086547.tif 000018
【０１１６】
従って、高速キャリー発生機構後に最終結果のキャリー入力の影響を計算することができる。更に、このプロパティーは、ゼロ検出にも成立する。実際に、キャリー入力＝０ならば、式（１３）における特性が証明されたときは、ゼロが検出される。これは次式に帰結する。
【０１１７】
【数１４】
2010086547.tif 000019
【０１１８】
ゼロ検出の最終結果は、ゼロ結果予測可能に供給されてこのゼロ結果の初期表示を得るようにされてもよい。
【０１１９】
図１１Ａは、図１１Ａに黒塗りのブロックとして示すセルＣＣ（ｉ，ｊ）１４２０のうちの１つに対する入出力を示している。この形式のセルは「ｕ」動作を実行し、一般的な場合に、以下の入出力を垂直及び水平の両方に有する。
【０１２０】
【数１５】
2010086547.tif 000020
【０１２１】
水平入力（存在するとき）は、単純に水平出力１４２６及び１４２４（放送動作）に転送されることが解る。これは、変更なし、かつ遅延なしに実行されるので、出力信号は、入力信号が入力されるとほぼ同時に得られる。更に、垂直出力１４２８は、垂直入力１４２２及び水平入力１４２４のオペレータ「ｕ」により定義される組み合わせであることが解る。この処理は、ある程度の時間が掛かるので、垂直出力１４２８は、垂直入力１４２２及び水平入力１４２４が入力された後、直ぐ得られる。個々のセルは、図１１Ａに示すように、アレーでの位置に従ってフル・セットの入出力を有する必要はない。
【０１２２】
図１１Ｂは、図１１Ａに空白ブロックとして示すセルＣＢ（ｉ，ｊ）のうちの１つに対する入出力を示す。この形式のセルは、以下に示すように、セルの入力から出力へ信号を単純に転送する。
【０１２３】
【数１６】
2010086547.tif 000021
【０１２４】
水平出力信号（ｐ１、ｇ１、ｚ１）１４３６は、バッファにより「増幅」された垂直入力信号（ｐ、ｒ、ｇ、ｒ、ｚ、ｒ）１４３２のコピーである。垂直出力信号（ｐ、ｒ、ｇ、ｒ、ｚ、ｒ）１４３８は、バッファにより「増幅」された垂直入力信号（ｐ、ｒ、ｇ、ｒ、ｚ、ｒ）１４３２である。垂直入力１４３２は、存在するときは、水平出力１４３６及び垂直出力１４３８に転送されるが、その出力は、組み合わせセルＣＣ１４２０のうちの一つ内の組み合わせ信号を発生する際に導入される遅延に対応した量により、入力から遅延されている。個々のセル１４３０は、図１１Ａに示すように、アレーにおける位置に従って、垂直入力及び水平及び／又は垂直出力を有することに注意すべきである。
【０１２５】
バッファ・セルにより得られる垂直方向の遅延は、信号が図１１Ａにおいて上方向へ各行を平行に伝搬するために、必要とされる。水平伝搬は即時的に作用するので、各ビット位置に対して垂直方向（即ち、図１１Ａに示す上端のセル）において最後のセルの垂直出力から結果が得られる（供給される）。
【０１２６】
前述のように、図１１Ａに示す例は、２つのサブアレーに効果的に分割されると共に、中間予測信号は各サブアレーにおいて種々のセルを通って左上方に伝搬し、かつ第１のサブアレーの出力は第３行における第２のセル（即ち、最上行のセル）の出力と組み合わせられる。
【０１２７】
表４に図１１Ａの５ビット例の動作における中間予測信号が示されており、図中の行Ａ及びＢは、２つの５ビット入力値を表す。
【０１２８】
【表４】
2010086547.tif 000022
【０１２９】
多くの応用では、セルの最上行における種々のビット位置に利用可能な中間ゼロ予測検出結果は必要でない。このような場合に、左上端（図１１Ａでは、セルＣＣ（４，０））のみをオペレータとして保持することができると共に、（中間結果を必要としない）その行における１以上の残りのセルは、不必要なロジックをなくすように、かつ総合的なパフォーマンスを改善するように、「０」オペレータにより置換される。しかしながら、一実施例において、更に、「ｕ」オペレータのセルは、中間ビット位置用に中間ゼロ予測結果を必要とする特定ビット位置に設けられてもよい。
【０１３０】
図１２は、図１１Ａの「ＣＣ」セル１４２０のうちの一セルにおける「ｕ」オペレータを実施するロジック・ゲートを含む回路１４５０の１例の概要ブロック図である。この図において、図１１Ｂに示されている入力１４２２及び１４２４は、この図の左端から供給され、また出力１４２６及び１４２８は右端に示されている。図１２に見ることができるように、オペレータ用の回路は、１インバータ、４ＡＮＤゲート、及び２ＯＲゲートを含む。以上のゲートは「ｕ」オペレータを実施することが理解される。明らかに、「ｕ」オペレータを実施するために他の組み合わせのゲートを採用してもよい。
【０１３１】
図１３は図１１Ｂのバッファ・セルＣＢのうちの１つを実施する回路１４６０の１例の概要ブロック図である。この概要ブロック図において、図１３に示す垂直入力１４３２はこの図の左端に供給され、また水平出力１４３６及び垂直出力１４３８は右端に示されている。図１３から理解されるように、この回路は、３バッファ（遅延）遅延回路を含み、ｇｒ、ｐｒ及びｚｒ入力１４３２のそれぞれに一つである。バッファ回路の遅延係数は、「ｕ」オペレータを実行する回路により導入される遅延に一致するように選択される。バッファ回路からの出力は、図１１Ａに示すアレー内のバッファ・セルＣＢの位置に従って、水平出力１４３６及び／又は垂直出力１４３８に供給される。
【０１３２】
図１４は乗算及び積算ユニット１００の最後の４０ビット加算器段１４０に対する代表例のゼロ検出回路の概要ブロック図である。この例では、ゼロ予測は、４０ビットにおいて、更に１６ビットにおいて必要とされる。図１４において、第１のゼロ予測段１４７２は、これに供給された１６ビットＢ０〜Ｂ１５に基づいてゼロ予測出力を供給する。信号が供給されるこれらの１６ビットＢ０〜Ｂ１５は、算術ユニットの結果における１６最下位ビットに対応する。更に、算術ユニットの結果におけるビットは、ＭＡＣの飽和段に供給される。１６ビットのゼロ予測結果信号１４７３は、１４７７に出力される。これは、更に論理ＡＮＤゲート１４７８に供給され、ここでゼロ予測結果信号は第２のゼロ予測段１４７４からの部分ゼロ予測結果信号１４７５と加算される。第２のゼロ予測段１４７４は、これに供給される２４ビットの信号に基づいてゼロ予測出力を供給する。信号が供給される２４ビットは、４０ビット算術ユニットの結果における２４最上位ビットＢ１６〜Ｂ３９に対応する。更に、算術結果ビットＢ１６〜Ｂ３９は、ＭＡＣの最後の加算段１４０に供給される。最後の加算段の出力は、結果Ｐｒであり、飽和段に転送される。
【０１３３】
ＡＮＤゲート１４７８において１６ビットのゼロ予測結果信号を２４ビットのゼロ予測結果信号と組み合わせることにより、ＡＮＤゲート１４７８の出力に４０ビットによる大域的ゼロ予測結果信号１４７９を発生することができる。
【０１３４】
図１５はＭＡＣユニット１００内の図１４に示すゼロ予測機構の接続を更に詳細に示す。ＭＡＣの部分積低減ツリー１３０からの出力は、４０ビットの最後の加算器１４０及びゼロ予測機構１４７０に供給される。最後の加算器及びゼロ予測機構の出力は、４０ビットによるアキュムレータに対する大域的ゼロ予測フラグ１４７９、最後の加算器の結果、及び１６ビットのゼロ予測フラグを含む。最後の加算器１４８２の結果、及び１６ビットのゼロ予測フラグ１４７７は、ＭＡＣの飽和段及び丸め段１４７６／１５０に供給され、その出力１４８３／１５４はアキュムレータ・レジスタ１４８４に供給される。
【０１３５】
最後の飽和段１５０では、拡張ビット［ビット位置３９：３２］上のオーバーフローは、検出されるのが好ましく、かつ飽和モードがアクティブ即ち「オン」のときは、最後の結果は、「０Ｘ７ｆｆｆｆｆｆｆ」若しくは「０Ｘ８０００００００」の３２ビット最大表示、又は「０Ｘ７ｆｆｆｆｆｆｆｆｆｆ」若しくは「０Ｘ８０００００００」の４０ビット最大表示に強制設定される。丸めモードが「オン」（即ちアクティブ）のときは、１６ＬＳＢはこの段でクリアされる。
【０１３６】
図１６は、適当なときは、最後の結果の拡張ビット位置をデコードしてオーバーフロー・ビットを発生する回路を示す。図１６を引き続き参照すると、２入力セクションが示されているのが解る。結果のビット位置Ａｄｄ３１〜Ａｄｄ３４は第１のＮＡＮＤゲート１２１０に供給され、かつ個別的に第１のＮＯＲゲート１２１４に供給される。同様に、結果のビット位置Ａｄｄ３６〜Ａｄｄ３９は第２のＮＡＮＤゲート１２１２に供給され、かつ個別的に第２のＮＯＲゲート１２１６に供給される。結果の残りのビット位置Ａｄｄ３５は、第１のインバータ１２１８に供給され、かつ個別的に第２のインバータ１２２０に供給される。２つのＮＡＮＤゲート１２１０、１２１２の出力、及び第１のインバータ１２１８の出力は、ＯＲゲート１２２２に対する入力として供給される。ＯＲゲート１２２２の出力は、２入力ＡＮＤゲート１２２６に対する１入力として、及び３入力ＡＮＤゲート１２２８に対する１入力として供給される。２つのＮＡＮＤゲート１２１４、１２１６の出力、及び第２のインバータ１２２０の出力は、ＯＲゲート１２２４に対する入力として供給される。ＮＡＮＤゲート１２２４の出力は、２入力ＡＮＤゲート１２２６に対する２入力として、かつ３入力ＡＮＤゲート１２２８に対する第２の入力として供給される。３入力ＡＮＤゲート１２２８に対する第３の入力は、飽和モード信号１２３０である。好ましくは、この飽和信号は、飽和モード・ビットに対応し、この飽和モード・ビットは、論理レベル１に「セット」されてオーバーフロー又はアンダーフロー上で飽和結果を発生する。２入力ＡＮＤゲート１２２６の出力は、拡張ビット用のオーバーフロー・フラグ即ち信号１２３２（図１における１４４）であり、「０」がオーバーフローなし、従って飽和なしを表し、また飽和モードがアクティブのときは、「１」がオーバーフロー及び飽和結果を表す。３入力ＡＮＤゲート１２２８の出力は、飽和制御信号（Ｓａｔｃ）１２３４である。この飽和制御信号は以下で説明する飽和制御回路に入力として供給される。
【０１３７】
図１６に示すように、拡張ビット３９〜３１におけるオーバーフローは、図１６にＡｄｄ３９〜Ａｄｄ３１により表される最終結果が「０Ｘ１ｆｔ」又は「０Ｘ０００」と異なるときに、開始される。次いで、ビット位置３９（Ａｄｄ３９）において結果の符号に基づいてクランプ値が選択される。Ｒｎｄ制御信号がハイのときは（論理レベル１のときは）、全ての場合において、最下位ビットＡｄｄ１５〜Ａｄｄ０が「０Ｘ０００」にセットされる。
【０１３８】
これら異なる飽和値を発生するために特定な飽和回路が作成された。特に、ビット位置３９〜１７に対する飽和制御回路、及びビット位置１５〜０に対する飽和制御回路が設けられる。図１７Ａは１５より低いビット位置に対する飽和制御回路を示し、また図１７Ｂはビット位置３９〜１７に対する飽和制御回路を示す。図１７Ｃはビット位置１６に対する飽和制御回路を示す。
【０１３９】
ここで図１７Ａを参照すると、ビット位置３９〜１７に有用な飽和制御用の回路１３４０が示されているのが解る。特に、これらは、ｉ番目のビット位置に対する結果ビットである入力信号Ａｄｄiが示されているのが解る。Ｓｇ信号は、ビット位置３９に対するＡｄｄiビット（即ち，Ａｄｄ３９）により表された符号ビットとなる。Ｓａｔｃ信号は、図１６のオーバーフロー検出ロジックにより発生された飽和制御信号である。Ｆi信号は、飽和が発生したときに、そのビット位置が「強制設定」される値である。Ａｄｄi信号は、２入力ＡＮＤゲート１３２０に対する１入力である。Ｓａｔｃ信号は、インバータ１３２８に対する入力、第１の３入力ＡＮＤゲート１３２２に対する第１の入力、及び第２の３入力ＡＮＤゲート１３２４に対する第１の入力である。インバータ１３２８の出力は、ＡＮＤゲート１３２０に対する第２の入力となる。Ｓｇ信号は、インバータ１３３０に対する入力隣、かつ第２の３入力ＡＮＤゲート１３２４に対する第２の入力となる。残りの入力信号Ｆiは、第１の３入力ＡＮＤゲート１３２２に対する第３の入力、及びインバータ１３３２に対する入力となる。インバータ１３３２の出力は、第２の３入力ＡＮＤゲート１３２４に対する第３の入力となる。３つのＡＮＤゲート１３２０、１３２２、１３２４の出力は、ＯＲゲート１３２６に対する入力として供給され、その出力は飽和値出力Ｓｏとなる。
【０１４０】
ここで図１７Ｂを参照すると、ビット位置１５〜０に有用な飽和制御用の回路１３５０が示されているのが解る。特に、ｉ番目のビット位置に関する結果ビットである入力信号Ａｄｄiが示されているのが解る。Ｓｇ信号はビット位置３９（即ちＡｄｄ３９）用のＡｄｄiにより表された符号ビットである。Ｓａｔｃ信号は、図１６のオーバーフロー検出ロジックにより発生された飽和制御信号である。Ｆi信号は、飽和が発生したときに、そのビット位置が「強制設定」される値である。Ａｄｄi信号は、３入力ＡＮＤゲート１３６０に対する１入力である。Ｓａｔｃ信号は、インバータ１３６８に対する入力、第１の４入力ＡＮＤゲート１３６２に対する第１の入力、及び第２の４入力ＡＮＤゲート１３６４に対する第１の入力となる。インバータ１３６８の出力は、３入力ＡＮＤゲート１３６０に対する第２の入力となる。Ｓｇ信号は、インバータ１３７０に対する入力隣、かつ第２の４入力ＡＮＤゲート１３６４に対する第２の入力となる。残りの入力信号Ｆiは、第１の４入力ＡＮＤゲート１３６２に対する第３の入力、及びインバータ１３７２に対する入力となる。インバータ１３７２の出力は、第２の４入力ＡＮＤゲート１３６４に対する第３の入力となる。丸めモード制御信号（Ｒｎｄ）は、インバータ１３７４に対する入力である。丸めモード制御信号（Ｒｎｄ）は、結果に対する丸め即ち２+15 の加算を制御する信号であり、Ｆi信号の値に無関係に、１６ＬＳＢを「０」に強制設定するために使用される。インバータ１３７４の出力は、３入力ＡＮＤゲート１３６０に対する第３の入力、第１の４入力ＡＮＤゲート１３６２に対する第４の入力、及び第２の４入力ＡＮＤゲート１３６４に対する第４の入力となる。３ＡＮＤゲート１３６０、１３６２、１３６４の出力は、ＯＲゲート１３６６に対する入力として供給され、その出力は飽和値出力Ｓｏとなる。
【０１４１】
ここで図１７Ｃを参照すると、ビット位置１６に有用な飽和制御用の回路１３８０が示されているのが解る。特に、図１３Ｃは、図１７Ｂのインバータ１３７４に供給されたＲｎｄ信号が２入力ＡＮＤゲート１３８２からの出力信号ＵＲにより置換されていることを除き、図１７Ｂとほぼ同一であることが解る。ＡＮＤゲート１３８２に対する２入力は、不偏（ｕｎｂｉａｓｅｄ）丸めモード信号（ＲＤＭ）及び信号Ｚ１６である。信号Ｚ１６は、ＺＲＡ回路の一部の出力であり、ビット位置１５〜０（最初の１６ビット）がゼロであることを表している。ＲＤＭ信号は、不偏丸めが望ましいときに、アクティブとなる（例えば、不偏丸めモードがアクティブとなる）。飽和は不偏丸め上の手順を取るので、ＳＡＴＣ信号の作用は、Ａｄｄi値が出力Ｓｏとなるのを阻止することである。従って、最後のアドレスのビット位置１６（１７番目のビット）はゼロに強制設定されるので、オーバーフローする丸め結果は、飽和される、例えば７ｆｆｅ００００ではなく、３２ビット用の７ｆｆｆ００００の値に強制設定される。
【０１４２】
１６ＬＳＢの値Ｆiは、オーバーフローに対する「１」及びアンダーフローに対して「０」となる。ビット位置１６より上のＭＳＢの値は、オーバーフローが発生したのか、又はアンダーフローが発生したのかによって、３２ビット又は４０ビットになる。
【０１４３】
不偏丸めモードが選択され（ＲＤＭが主張され）、かつビット位置１５〜０が全てゼロ（即ち、Ｚ１６信号がアクティブ）のときは、信号ＵＲを形成するＡＮＤゲート１３８２の出力がハイとなる。ＵＲ信号は、インバータ１３７４により反転されて、この場合はローとなる反転
2010086547.tif 000023
信号を発生させる。このロー信号の作用は、ＯＲゲート１３６６の出力がゼロとなるように、ＡＮＤゲート１３６０、１３６２、１３６４を禁止することであり、このゼロはビット位置１６をゼロに強制設定させる作用を有する。従って、ＬＳＢフィールド［１５：０］が０．５に等しい値を有し、かつＭＳＢフィールド［３１：１６］が丸めの前に奇数値を有するときは、ビット５１６はゼロに強制設定される。同様に、ＬＳＢフィールドが０．５に等しい値を有し、かつＭＳＢフィールドが丸めの前に偶数値を有するときは、ビット５１６はゼロに強制設定されることはない。
【０１４４】
不偏丸めモードが選択されないとき（ＲＤＭが主張されないとき）、又はビット位置１５〜０が全てゼロでないとき（従って、Ｚ１６がアクティブでないとき）は、信号ＵＲを形成するＡＮＤゲート１３６２の出力はローとなる。従って、インバータ１３７４からの反転ＵＲ信号、即ち
2010086547.tif 000024
信号は、ハイとなるので、ＵＲ信号がＡＮＤゲート１３６０、１３６２、１３６４を禁止しない。その結果、ビット位置１６のセット処理は、ビット位置３９〜１７に対すると同じように、飽和モードに従って制御される。ＵＲ信号、及びこの信号を発生させる回路がなければ、ビット位置１６に対するセルは、ビット位置３９〜１７のものに対応することを理解すべきである。
【０１４５】
以上の説明のように、１７番目のビット（ビット位置１６）をゼロに強制設定する図１７Ｃの特殊な飽和セルの存在をゼロ予測回路と組み合わせて使用することにより、効果的な方法の不偏丸めを得ることができる。必要とすることは、バイアスを導入することなく、かつ効果的に実施できる丸めを得ることである。以上の構造を設ければこの機能が得られる。
【０１４６】
従って、以下、不偏丸め及びその作用はどのようなものかについての説明を行う。不偏丸めは、図１８Ａに示すように、一つの場合のみの通常の丸めと異なる。図１８Ａは、計算結果が正確にＰ．５となるときを示す。ただし、Ｐ．５はＰとＰ＋１との間の中間点の値であり、かつ予め定めた精度により表された二進値である。この例において、Ｐは二進値であり、その１６ＬＳＢはゼロである。
【０１４７】
不偏丸めが選択され、ゼロが計算結果の１６ＬＳＢ上に検出されたときは、１７ビット（ビット位置１６）がゼロに強制設定される。これは、最後の３２ビット加算器において、ビット位置１５で常に１の加算が発生し、かつＬＳＢフィールドが丁度０．５に等しいときは、１６ＬＳＢがゼロを有する不偏丸めに帰結する。図１８Ｂ及び１８Ｃは、ビット位置１６に関して入れ替わった２ステートを示し、またビット位置１６における値がどのようであっても、ビット位置１５〜０でゼロ検出が発生すれば、ゼロに強制設定される必要があることを示す。
【０１４８】
１６ＬＳＢビット位置がゼロであるか否かの判断は、図５を参照して説明したように、ＲＮＤ信号に応答してビットＸ１５で「１」を加算した後、図１１〜図１５を参照して以上で述べたゼロ結果予測法を使用することにより、検出される。
【０１４９】
特に、ゼロ予測は、最後の加算器１４０の一部であるキャリー・ルック・アヘッド構造の伝搬ツリー上で実行される。これは、部分積低減ツリーにより発生されるキャリー及び和を使用する。キャリー及び和により、ビット位置１６に関するゼロ結果は、伝搬ツリーを最初の１６ビットの１−０結果にマッピングすることにより予測される。これは、少なくとも最後の加算器のキャリー伝搬速度と同程度の伝搬速度が得られる。ゼロ結果により、ビット位置１６はゼロに強制設定すべきか否かについて、予測することができる。
【０１５０】
更に、４０ビット上のオーバーフローの検出も得られる。制御ビットｏｖｆ４０（図２）は、これがオフのときは、３２ビット上のオーバーフローを可能にし、これがオンのときは、４０ビットのオーバーフローをイネーブル（可能）にする。この検出は、最後の加算器の最後の８ビットにより発生する。４０ビット・オーバーフローは、ビット３９に対する最後の和（Ｓ３９）がビット４０に対する最後の和（Ｓ４０）と異なるときに発生する。Ｓ４０は、計算されなくても、図１９Ａ及び図１９Ｂに表す回路により示すように、推論され得る。従って、Ｏｖｆは、２ＸＯＲゲートにより直接実施される。飽和（ｏｖｍ）がオンであれば、最終結果は、０Ｘ７ｆｆｆｆｆｆｆｆｆｆ、又は０ｘ８０００００００００に強制設定される。
【０１５１】
ＭＡＣユニット１００をそのアーキテクチャー、サブユニット及びサブユニットに使用する特殊回路に関連して以上説明したので、ＭＡＣユニット１００を１ブロックとして注目し、次いで入力としてこのブロックにどのような信号が供給され、かつこのブロックがどのような信号を出力するのかを認識することについて説明する。これには、これらのブロックのうちの２つを一緒に置き、かつこの二重ＭＡＣ構成に関する信号を認識する説明が続く。更に、本発明の二重ＭＡＣユニットを使用する好ましいＤＳＰの簡単な説明が続く。
【０１５２】
ここで図２０を参照すると、本発明のＭＡＣユニット１００に関する入出力信号の図が示されているのが解る。特に、本発明のＭＡＣユニット１００のハイ・レベルのブロック図が示され、入力としてＭＡＣに供給される信号、及び出力としてＭＡＣユニット１００により供給される信号を説明しているのが解る。
【０１５３】
図２０からＭＡＣユニット１００に対する入力として、１７ビットＸオぺランドＯ入力１０２、１７ビットＹオぺランド１入力１０４、及び４ビット第３番オぺランド１４２の３オぺランドが供給されているのが解る。出力は、４０ビットの最終結果１５４、４０ビット用のゼロ検出（Ｚ４０）、３２ビット用のゼロ検出（Ｚ３２）、及びオーバーフロー・フラグ（ＯＶ）である。入力ステータス信号は、ｓｔ１ｓｂ  ｔｒ［５］であり、Ｇsm、ＲＤＭ、ＦＲＣ、Ｍ４０及びＳＡＴＤステータス・ビットに対応する。ｒｎｄｍ１信号は、丸めモード選択制御信号に対応する。ｇｍ１信号は、３２ビット動作又は４０ビット動作間で選択する制御信号に対応する。更に、加算／減算信号１２２ｂが入力信号として供給される。その上、オぺランドが符号付きか、又は符号なしかを選択し、かつＭＡＣユニット１００により実行されるべき動作を決定する種々の信号も供給されている（図２０には示されていない）。更に、種々のクロック信号がＭＡＣユニット１００に供給される（図２０には示されていない）。
【０１５４】
ここで図２１を参照すると、データ・ソース及びデータの行先用の種々のバスと相互接続された本発明のＭＡＣユニット１００の簡単なブロック図が示されているのが解る。更に、同一のバス構造と相互接続されたＭＡＣユニット１００が示されているのが解る。この第２のＭＡＣユニット１００ｂは、ここで説明しているＭＡＣユニットと同一であり、その第１のＭＡＣユニットとの動作を以下で説明する。図２１から理解されるように、第１のＭＡＣユニット１００に対する２つのオぺランドは、バスＢ２１１０、Ｄ２１１２、Ｃ２１１４、Ｋ２１１６、ＤＲ２１１８、ＡＣＲ０  ２１３０、及びＡＣＲ１  ２１３２を含む複数のソースから入力され得る。ＡＣＲ０及びＡＣＲ１は、好ましくは、アキュムレータ・レジスタを含むデータ・レジスタ用の読み出しバスである。ＡＣＷ０  ２１３４及びＡＣＷ１  ２１３６はこれらデータ・レジスタの書き込みバスである。ＤＲバス２１１８は、レジスタの汎用領域からの値を搬送する。２入力オぺランド。マルチプレクサ２１６０、２１６２は、ＭＡＣユニットに対するオぺランドをどのバスが供給するのかを選択する。ＭＡＣユニットからの最終結果は、トライステート・ドライバ２１５０によりＡＣＷ０２１３４に供給される。更に、ＡＣＲ１はＭＡＣユニットに第３の数１４２に供給する。更に、入力ステータス信号及び出力フラグに対する相互接続が示されているのが解る。最後に、マルチプレクサ２１２０は、マルチプレクサ２１６０に対する１可能入力として、バスＤ又はＣを選択するために使用されてもよい。
【０１５５】
同じようにして、第２のＭＡＣユニット１００ｂは、バス構造、入力ステータス信号、及び出力フラグと相互接続されている。
【０１５６】
ここで図２２を参照すると、現在好ましいアキュムレータ・レジスタ（ＡＣ０〜ＡＣ３）２２１２〜２２１６の簡単なブロック図が示されているのが解る。これらのレジスタは、図２１のバス構造の一部と相互接続されている。従って、図２２は、どのようにしてデータをアキュムレータからバス構造を通ってＭＡＣユニット（複数のＭＡＣユニット）に移動し、かつ同一又は異なるアキュムレータに戻すことができるかについて示す。図２２は、各アキュムレータがロー（Ｌ）（１５〜０）、ハイ（Ｈ）（３１〜１６）、及びガード・ビット（Ｇ）（３９〜３２）セクションを有する。ここでもトライステート・ドライバ（２２２０）は、アキュムレータ内のデータを一定のバスに駆動するために使用されてもよい。
【０１５７】
本発明のＭＡＣユニット１００は、好ましくは、２つのアキュムレータにより実施される。本発明の更なる機能は、一方のアキュムレータの内容を他方のアキュムレータへ転送する能力である。この能力は、フーリェ変換の計算のような応用に有用である。
【０１５８】
好ましい実施例では、ＣＭＯＳ技術により高速１７×１７ビット固定ポイント乗算器アキュムレータが作成される。その動作において、いずれも符号なし又は符号付きが可能な２つの１７ビット・オぺランドは、乗算されて３４ビット結果を得る。この結果は、いずれかの又は両方の４０ビット・アキュムレータにロードされてもよい。この結果は、更に、いずれかのアキュムレータに加算、又はこれから減算され、かついずれか又は両方のアキュムレータに戻されてもよい。転送又は算術動作は、ソース・アキュムレータ内容の１６ビット・シフト動作を含む。積算動作は、最近の１６又は３２ビット結果に対して丸めの機能を含む。
【０１５９】
オぺランドは、各入力ポート上の２レジスタのうちの１つから選択される。アキュムレータの全４０ビットは、並行の出力が可能である。４０ビット即ち６ＭＳＢのアキュムレータ内容は、発生した符号、ゼロ及びオーバーフロー並びに３ステータス・フラグについてテストされる。オーバーフローは、オーバーフローしたものに代わって自動的に飽和値の置換により、訂正されてもよい。丸め及びオーバーフローは特定の制御信号により起動される。
【０１６０】
４０ビット・フォーマット又は１６ビット表示による内部レジスタからの符号付き制限データは、飽和が必要とされ、ＳＡＴＤフラグ又は特殊命令により制御される。飽和範囲は、Ｍ４０と呼ばれる飽和モード・フラグによる制御される。Ｍ４０フラグがオフであれば、飽和は、−２31〜２31−１の範囲内の４０ビット値、及びその結果の各１６ビット部分に対して−２15〜２15−１の範囲内の１６ビット値に制限する。Ｍ４０フラグがオンであれば、値は、二重表示に対して−２39〜２39−１の範囲内で飽和される。ＭＡＣのときは、入力オぺランドの符号が以下のように決定される。ＳＩ＝！ＵＮＳ  ＡＮＤ（入力ビット１５）。Ｍ４０は、４０ビット(「1」のとき)と３２ビット(「０」のとき)との間で選択する。以上で述べたように、オーバーフローの検出は、符号及びゼロ検出のように、Ｍ４０に従う。
【０１６１】
４０ビット表示から１６ビット表示へ移行するために、丸めは、計算中に精度を保持する必要がある。丸めは、専用のビット・フィールドによる命令セットを介して、及び（不偏丸め用の）ＲＤＭと呼ばれるフラグを介して管理されてもよい。これらの組み合わせは、下記のモードに帰結する。
丸め（ｒｎｄ）が「オン」ときは、
ＲＤＭ＝０：＋無限に対して丸めを発生する。
４０ビット・データ値の場合、これは、２15の加算を意味し、かつ１６最下位ビット（ＬＳＢ）はゼロにクリアされる。
ＲＭＤ＝１：最近に対して丸めを発生する。
４０ビット・データ値の場合、これが１６ＬＳＢの真の解析であり、これらが（ｉ）丸めが発生しない２15−１〜０（０．５より低い値）、（ｉｉ）４０ビット値に２15を加算することにより、丸めが発生する２15＋１〜２16−１（０．５より大きい値）、又は（ｉｉｉ）データ値に２15を加算することにより、４０ビット値の１６ビットの上位部分が奇数のときに丸めが発生する２15（０．５に等しい値）の範囲内にあるか否かを検出する。
【０１６２】
１６ＬＳＢは、飽和と無関係に３つの場合の全てについて、ゼロにクリアされる。丸めモードが「オフ」のときは、何もしない。
【０１６３】
ＦＲＣＴ（又はＦＲＡＣＴ）ステータス・ビットは、分数モードを示すために使用される。このステータス・ビットがセットされていれば、乗算器の出力は１ビットだけ左シフトされて付加符号ビットに対して補償する。
【０１６４】
乗算動作は、（乗算器に対するオぺランドとして）１６ビット符号付き又は符号なしデータにより、及び（レジスタがアキュムレータである）内部レジスタからの４０ビット値により作動する。その結果は、好ましくは、４０ビット・アキュムレータのうちの１つに記憶される。乗算又は乗算／積算は、ＦＲＡＣＴ，ＳＡＴＤ及び丸めモード制御信号の制御に従う。更に、２つの乗算オぺランドが共に−２15 に等しく、かつＦＲＡＣＴ及びＳＡＴＤモードがオンのときに、乗算又は乗算／アキュムレータは、最終結果の「００  ７ＦＦＦ  ＦＦＦＦ」（１６進）に対して飽和を発生するＧsmモードにより、影響される。
【０１６５】
符号処理のために、乗算オぺランドは、実際には、１７ビット上で符号化される（従って、符号は１６ビット符号データのために２倍にされる）。これらのオぺランドは、命令により制御されていない限り、常に符号付きとみなされる。これらの値のソースが内部レジスタであれば、符号付き１７ビットの正確の計算が使用できる。本発明の乗算及び積算回路上で利用可能な機能的な動作は、ＭＰＹ（乗算動作）、ＭＡＣ（アキュムレータ内容に対する乗算及び加算）、及びＭＡＳ（アキュムレータ内容からの乗算結果を減算する）である。
【０１６６】
下記の表５は、可能な全組み合わせ及び対応する動作を示す。乗算動作及び「乗算及び積算」動作は、２ステータス・ビット又はフラグ、即ちゼロ及びオーバーフロー（ＯＶＦ）の検出に戻る。
【０１６７】
【表５】
2010086547.tif 000025
【０１６８】
乗算／積算ユニット１００は、好ましくは、１ＣＰＵクロック・サイクル内でそのタスクを実行する。入力オぺランドは１７ビット符号付き表示を使用し、一方、積算は４０ビットを使用する。更に、算術モード、例外、及びステータス・フラグも処理される。更に、飽和モードの選択を命令によりダイナミックに定義することができる。
【０１６９】
可能とするオペランドのソースは、以下のように定義される。
メモリから：          ２      ＲＡＭからの１６ビット・データ、
１      「係数」ＲＡＭからの１６ビット・データ、
内部データ・レジスタから：
２      レジスタの上位部分（ビット３２〜１６）からの１７
ビット・データ、
１      積算用の４０ビット・データ、
命令デコードから      １      １６ビット「即時」値、
他の１６ビット・レジスタから：
１      １６ビット・データ。
【０１７０】
ＭＡＣ命令に関係するＬＳＢ方向へ１６ビットのシフト動作は、全てＭＡＣユニット内で実行され、符号伝搬は、ビット３９を使用して常に実行される。
【０１７１】
結果の行先は、常に内部データ・レジスタのうちの１つである。表６は、可能な入力の組み合わせ（ｘ、ｙポート）を示す。アキュムレータ「ａ」は常に内部データ・レジスタであり、使用する前に、ＬＳＢへ１６位置だけシフトさせることができる。
【０１７２】
【表６】
2010086547.tif 000026
【０１７３】
メモリからのデータは、Ｄ及びＣバスを介して転送される。ポインタを犠牲にすることなく、係数を自動的にアドレス指定させるために、第３の専用バスが設けられ、Ｂバスと呼ばれる。係数及びデータの送出は、図２３に示すように、Ｂバス及びＤバスを組み合わせる。Ｂバスは与えられた１バンクのメモリ構成に関連される。このバンクは係数用の「ダイナミック」メモリとして使用される。
【０１７４】
Ｂバスに対するアクセスは、他の部分のメモリ空間に対する単一、二重又は長いアクセスと平行して、及び関連するメモリ・バンクに対する単一アクセスのみと並行してサポートされる。Ｂ値を送出するためのアドレス指定モードは、特殊なポインタ（ＣＤＰ−メモリ係数データ・ポインタ）に記憶されたベース・アドレス指定（１６ビット）、及びテーブルを走査するためのインクリメンタを使用する。このポインタは、個別的に管理されて、データ（典型的には「係数」）をフェッチするために増加、減少、又は符号付きインデックスにより事後増加されてもよい。Ｂ、Ｃ及びＤバス上をフェッチするのに必要なデータ帯域幅を得るために、Ｂアクセスは、他の２つと異なるメモリ・バンク上で実行されなければならない。
【０１７５】
ここで図２３を参照すると、本発明のＭＡＣユニットによりバス、メモリ及びレジスタ利用を説明する簡単なブロック図が示されているのが解る。特に、第１のＲＡＭバンクを使用してバスＢを介して１オぺランドを供給し、またバスＤを介して第２のＲＡＭバンク（図示なし）から第２のＲＡＭバンクを供給するのを示しているのが解る。ＭＡＣユニットの出力は、バス２１３４を介してレジスタ（好ましくは、アキュムレータ）に転送され、レジスタ値はバス２１３２を介してＭＡＣユニットに供給される。
【０１７６】
ＭＡＣユニットは、必要により、増加する消費電力要求に対応し、また最小限の（面積及び電力）を得る能力を確保するために、構成可能な方法により二重乗算及び積算動作をサポートすることができる。これは、いくつかの特徴に基づいている。即ち、
‐第２のＭＡＣのハードウェアのプラグ・インが、メインのものと同様にオぺランド・ソース及び行先に対する接続性により可能とする。
‐アルゴリズムの実行中に唯一のＭＡＣ／サイクルが必要とされるときは、プラグ・イン・オペレータを停止する。
‐第２のＭＡＣの制御は、命令クラス「二重ＭＡＣ」を介して行なわれ、これが２つのオペレータ上の演算ＭＰＹ／ＭＡＣ／ＭＡＳの組み合わせを可能にし、これらをデコードすることで第２のＭＡＣの実行クロックのゲート処理に必要な制御信号が生成される。
‐スループットの観点から、二重ＭＡＣ実効の最も効果的な使用には、ＤＳＰアルゴリズム用に３オぺランド／サイクルと共に２アキュムレータ内容の持続的な送出を必要とする。バス・アーキテクチャー全体を損なうことなく、計算能力の増大を得るために、Ｂバス・システムは、このスループット要求を満足させる最良の柔軟性を与える。従って、「係数」バス及びその関連メモリ・バンクは、図２４に説明した２つのオペレータにより共有される。効果的に、係数バス及びその関連メモリ・バンクを共有することにより、複製された係数構造を有するシステムでの電力消費を減少させる。同様に、電力節減は、ＭＡＣ１とＭＡＣ２との間で共有されるＤＲｘＣＰＵレジスタにＭＡＣ係数を記憶することによっている。
【０１７７】
この実行を制御する命令は、Ｄ及びＣバス上の二重アドレス指定と共に、ＭＰＹ、ＭＰＹＳＵ、ＭＡＣ及びＭＡＳ動作と、符号付き又は符号なし動作との中から対の動作の可能とする全ての組み合わせを提供する。アキュムレータ・ソースと行先が等しいことを除き、データ・レジスタに行先（アキュムレータ）を動作毎に個別的にセットすることができる。丸めは、両動作に共通である。ＣＤＰポインタ及び更新機構は、前の値及びモジュロ・動作の増加／減少、又は符号付きインデックスによる事後増加又は変更なしを含む。本発明の一実施例は、都合よいことに、最初のパスのＭＡＣ並行動作におけるポインタの事後変更、及び単一サイクル内でオぺランド管理用の３ポインタの事後変更により、ループ最適化を可能にした二重ＭＡＣ構造を提供する。最後に、表７は、図２４に表す応用を異なるアルゴリズム及びＲＡＭ機構に適用する。
【０１７８】
【表７】
2010086547.tif 000027
【０１７９】
例外処理及びステータス・ビット処理のときに、二重ＭＡＣ構成は、フラグの二重セットを１アキュムレータ行先につき１回、発生する。
【０１８０】
ここで図２４を参照すると、本発明の二重ＭＡＣユニットにより、バス、メモリ及びレジスタを表す簡単なブロック図が示されているのが解る。特に、第１のＲＡＭバンクが両ＭＡＣユニットに第１のオぺランドを供給しているのが示されているのが解る。第２のＲＡＭバンクは、バスＤを介して第１のＭＡＣユニットに第２のオぺランドを供給する。同様に、第３のＲＡＭバンクは、バスＣを介して第２のＭＡＣユニットに第２のオぺランドを供給する。両ＭＡＣは、それぞれの出力バスを介してレジスタ（好ましくは、アキュムレータ）に出力を供給し、かつそれぞれの入力バスを介してレジスタから入力を受け取る。
【０１８１】
図２５を参照すると、本発明の現在好ましい二重ＭＡＣ構造用のバス相互接続を表す簡単なブロック図が示されているのが解る。特に、第２のＭＡＣ用のデータ・ソース数は、図２１のものより減少していることが解る。
【０１８２】
図２６は、本発明の一実施例を有するマイクロプロセッサのブロック図である。このマイクロプロセッサは、ディジタル信号処理装置（「ＤＳＰ」）である。明確にする観点から、図２６は本発明の一実施例を理解することに関連したマイクロプロセッサの部分を単に示す。ＤＳＰに関する一般的な構造の詳細は、周知であり、その他でも容易に見出すことができる。例えば、ブトー（Ｆｒｅｄｅｒｉｃｋ  Ｂｏｕｔａｕｄ）ほかに発行された米国特許第５，０７２，４１８号は、ＤＳＰを詳細に説明しており、ここでは引用により組み込まれる。スボボダ（Ｇｒａｙ  Ｓｗｏｂｏｄａ）ほかに発行された米国特許第５，３２９，４７１号は、ＤＳＰをどのようにテストしてエミュレートするのかについて詳細に説明している。ここでは、マイクロプロセッサに通常に習熟する者が製作し、かつ本発明を使用できるように、本発明の一実施例に関連するマイクロプロセッサの複数の部分についての詳細を十分に説明する。
【０１８３】
本発明の観点から利益となり得るいくつかの例示的なシステムは、米国特許第５，０７２，４１８号に詳細に説明されており、ここでは、特に、米国特許第５，０７２，４１８号の図２〜１８を参照して引用により組み込まれる。本発明の特徴に関連したパフォーマンスを改善又はコストを低減するマイクロプロセッサを使用することにより、米国特許第５，０７２，４１８号に説明されているシステムを更に改善することができる。このようなシステムには、限定するのではなく、工業的なプロセス制御、自動車システム、モータ制御、ロボット制御システム、衛星電気通信システム、エコー打ち消しシステム、モデム、ビデオ・イメージング・システム、音声認識システム、暗号化によるボーコーダ・モデム・システム等が含まれる。
【０１８４】
図１のマイクロプロセッサの種々のアーキテクチャー構成、及び完全な命令セットは、同時特許出願番号第 号（ＴＩ−２８４３３）に説明されており、ここでは参照することにより組み込まれる。
【０１８５】
ここで図２６を参照すると、本発明の二重ＭＡＣユニットを利用するＤＳＰが示されているのが解る。図２６は、処理コア２６１０２のＰユニット２６１０８、Ａユニット２６１１０、及びＤユニット２６１１２を含む機能及び実行ユニットを示し、かつ処理コア２６１０２の種々の構成要素を接続するバス構造を示す。Ｐユニット２６１０８には、例えば、ループ制御回路、進め／分岐制御回路、及び反復カウンタ・レジスタ及び割込マスク、フラグ又はベクトル・レジスタのようにプログラム・フローを制御し、かつ管理する種々のレジスタが含まれる。Ｐユニット２６１０８は、汎用データ書き込みバス（ＥＢ、ＦＢ）２６１３０、２６１３２、データ読み出しバス（ＣＢ、ＤＢ）２６１３４、２６１３６及び係数プログラム・バス（ＢＢ）２６１３８に接続されている。その上、Ｐユニット２６１０８は、ＣＳＲ，ＡＣＢ及びＲＧＤとラベル付けした種々のバスを介して、Ａユニット２６１１０及びＤユニット２６１１２内のサブ・ユニットに接続されている。
【０１８６】
図２６に示すように、本発明の実施例において、Ａユニット２６１１０には、３つのサブユニット、即ちレジスタ・ファイル２６３０、データ・アドレス発生サブユニット（ＤＡＧＥＮ）２６３２、及び算術論理ユニット（ＡＬＵ）２６３４が含まれる。Ａユニット・レジスタ・ファイル２６３０には、種々のレジスタが含まれる。更にこれらには、データ・フロー及びアドレス発生のために使用されてもよい１６ビット・ポインタ・レジスタ（ＡＲ０、．．．、ＡＲ７）及びデータ・レジスタ（ＤＲ０、．．．ＤＲ３）がある。その上、レジスタ・ファイルには、１６ビット循環バッファ・レジスタ及び７ビット・データ・ページ・レジスタが含まれる。汎用データ書き込みバス（ＥＢ、ＦＢ）２６１３０、２６１３２、データ読み出しバス（ＣＢ、ＤＢ）２６１３４、２６１３６、係数データ・バス２６１４０及び係数アドレス・バス２６１４２は、Ａユニット・レジスタ・ファイル２６３０に接続されている。Ａユニット・レジスタ・ファイル２６３０は、それぞれ逆方向に動作している単方向バス２６１４４及び２６１４６によりＡユニットＤＡＧＥＮユニット２６３２に接続されている。ＤＡＧＥＮユニット２６３２には、例えば処理エンジン２６１００内のアドレス発生を制御し、かつ監視する１６ビットＸ／Ｙレジスタと、係数、及びスタック・ポインタ・レジスタとが含まれる。
【０１８７】
更に、Ａユニット２６１１０は、シフタ機能と、典型的には、加算、減算及びＡＮＤ、ＯＲ及びＸＯＲ論理オペレータのようなＡＬＵに関連した機能とを含む第３のユニットのＡＬＵ２６３４を備えている。ＡＬＵ２６３４は、更に、汎用バス（ＥＢ、ＤＢ）２６１３０、２６１３６と、命令定数データ・バス（ＫＤＢ）２６１４０とに接続されている。ＡユニットＡＬＵは、Ｐユニット２６１０８レジスタ・ファイルからレジスタ内容を受け取るＰＤＡバスによりＰユニット２６１０８に接続されている。ＡＬＵ２６３４は、更に、アドレス及びデータ・レジスタ内容を受け取るバスＲＧＡ及びＲＧＢにより、及びアドレス及びデータをレジスタ・ファイル２６３０内のレジスタに転送するバスＲＧＤにより、Ａユニット・レジスタ・ファイル２６３０に接続されている。
【０１８８】
本発明の図示実施例に従って、Ｄユニット２６１１２には、２つの構成要素、即ちＤユニット・レジスタ・ファイル２６３６、ＤユニットＡＬＵ２６３８、Ｄユニット・シフタ２６４０及び２乗算及び積算ユニット（ＭＡＣ１、ＭＡＣ２）４２及び４４が含まれる。Ｄユニット・レジスタ・ファイル２６３６、ＤユニットＡＬＵ２６３８及びＤユニット・シフタ２６４０は、バス（ＥＢ、ＦＢ、ＤＢ及びＫＤＢ）２１３０、２６１３２、２６１３４、２６１３６及び２６１４０と、ＭＡＣユニット２６４２及び２６４４とは、バス（ＣＢ、ＤＢ、ＫＤＢ）２６１３４、２６１３６、２６１４０及びデータ読み出しバス（ＢＢ）２６１４４に接続されている。Ｄユニット・レジスタ・ファイル２６３６は、４つの４０ビット・アキュムレータ（ＡＣ０、．．．ＡＣ３）及び１６ビット遷移レジスタを含む。Ｄユニット２６１１２は、更に、４０ビット・アキュムレータに対する加算の際にソース又は行先レジスタとして、Ａユニット２６１１０における１６ビット・ポインタ及びデータ・レジスタを利用することができる。Ｄユニット・レジスタ・ファイル２６３６は、アキュムレータ書き込みバス（ＡＣＷ０，ＡＣＷ１）２６１４６、２６１４８を介してＤユニットＡＬＵ２６３８、及びアキュムレータ書き込みバス（ＡＣＷ０，ＡＣＷ１）２６１４６、２６１４８を介してＭＡＣ１  ２６４２及びＭＡＣ２  ２６４４から、及びアキュムレータ書き込みバス（ＡＣＷ１）２６１４８を介してＤユニット・シフタ２６４０から、データを受け取る。データは、Ｄユニット・レジスタ・ファイル・アキュムレータからアキュムレータ読み出しバス（ＡＣＲ０、ＡＣＲ１）２６１５０、２６１５２を介してＤユニットＡＬＵ２６３８、Ｄユニット・シフタ２６４０及びＭＡＣ１  ２６４２及びＭＡＣ２  ２６４４へ読み出される。ＤユニットＡＬＵ２６３８及びＤユニット・シフタ２６４０は、更に、ＥＦＣ、ＤＲＢ、ＤＲ２及びＡＣＢとラベル付けされたバスを介してＡユニット２６１０８のサブユニットに接続されている。
【０１８９】
ここで、図２７を参照すると、二重ＭＡＣ動作に対する太線のデータ・バスを除き、図２６のＤＳＰが示されているのが解る。例示的なＭＡＣ命令は、図２７の右上の部分に２７０１０により示されている。命令が第２のＭＡＣの動作を要求しないときには、ＤＳＰによる電力消費を削減するために、第２のＭＡＣは、そのクロック・ツリーを遮断することによってパワーダウンされる。
【０１９０】
本発明及びその効果を詳細に説明したが、特許請求の範囲に定義したように、本発明の精神及び範囲から逸脱することなく、種々の変更、置換及び代替が可能なことを理解すべきである。
【０１９１】
この出願は、１９９８年１０月６日にヨーロッパにおいて出願された出願番号第９８４０２４５２．１号（ＴＩ−２７７５７ＥＵ）、及び１９９８年１０月６日にヨーロッパにおいて出願された出願番号第９８４０２４５５．４号（ＴＩ−２８４３３ＥＵ）に対して優先権主張する。
【符号の説明】
【０１９２】
１００  乗算器／積算器ユニット（ＭＡＣ）
１０２  第１のオぺランド（Ｘin ）
１２０  部分積発生段
１３０  ワラス・ツリー加算器／圧縮器段
１４０  最後の加算器段
１４２  第３の数（Ａin）
１５０  最後の飽和段
【図１】
2010086547.tif 000028
【図２】
2010086547.tif 000029
【図３】
2010086547.tif 000030
【図４】
2010086547.tif 000031
【図５】
2010086547.tif 000032
【図６】
2010086547.tif 000033
【図７】
2010086547.tif 000034
【図８】
2010086547.tif 000035
【図９】
2010086547.tif 000036
【図１０】
2010086547.tif 000037
【図１１】
2010086547.tif 000038
【図１２】
2010086547.tif 000039
【図１３】
2010086547.tif 000040
【図１４】
2010086547.tif 000041
【図１５】
2010086547.tif 000042
【図１６】
2010086547.tif 000043
【図１７】
2010086547.tif 000044
【図１８】
2010086547.tif 000045
【図１９】
2010086547.tif 000046
【図２０】
2010086547.tif 000047
【図２１】
2010086547.tif 000048
【図２２】
2010086547.tif 000049
【図２３】
2010086547.tif 000050
【図２４】
2010086547.tif 000051
【図２５】
2010086547.tif 000052
【図２６】
2010086547.tif 000053
【図２７】
2010086547.tif 000054