JP2010086547A - 乗算器/アキュムレータ・ユニット - Google Patents

乗算器/アキュムレータ・ユニット Download PDF

Info

Publication number
JP2010086547A
JP2010086547A JP2009255129A JP2009255129A JP2010086547A JP 2010086547 A JP2010086547 A JP 2010086547A JP 2009255129 A JP2009255129 A JP 2009255129A JP 2009255129 A JP2009255129 A JP 2009255129A JP 2010086547 A JP2010086547 A JP 2010086547A
Authority
JP
Japan
Prior art keywords
input
bit
mac unit
gate
stage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009255129A
Other languages
English (en)
Other versions
JP5273866B2 (ja
Inventor
Jean-Pierre Giacalone
− ピエレ ジアカローネ ジーン
Francois Theodorou
セオドロウ フランコイス
Alain Boyadjian
ボヤドジィアン アレイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2010086547A publication Critical patent/JP2010086547A/ja
Application granted granted Critical
Publication of JP5273866B2 publication Critical patent/JP5273866B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49963Rounding to nearest
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49968Rounding towards positive infinity

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】回路における消費電力、複雑さ及びスペースを低減し、かつ演算処理を高めた集積回路における乗算器/積算器(MAC)ユニット、更に同一の集積回路に前記MACユニットを二重に設けた二重MACユニットを提供する。
【解決手段】MACユニット(100)において、第1のバイナリ・オぺランドX(102)と第2のバイナリ・オぺランドY(104)との複数の部分積を発生するブース記録ロジック(120)と、低減した前記部分積を第3のオぺランドと算術的に組み合わせて最後の部分積を得るワラス・ツリー加算器(130)と、最後の和を発生する最後の加算器(140)と、前記最後の加算器を選択的に丸める即ち飽和させる飽和回路(150)とを備える。
【選択図】図1

Description

本発明は、概して乗算器及び乗算器/アキュムレータ(MAC:multiplier/accumulator)回路に関し、特に変形ブースのアルゴリズム(modified Booth’ algorithm)及びワラス・ツリー(Wallace Tree)技術を実施した改良MAC回路に関する。
バイナリ乗算は、多くのディジタル信号処理応用において重要な機能である。更に、いくつかのアプリケーションは、ある積と前の動作(例えば複数の積の和を形成する)結果との算術的な組み合わせを必要とする。汎用乗数回路は、2の補数、又は符号なしの絶対値表記により、これらに機能を実行する能力がなければならない。
二進数は十進数と全く同じように乗算される。特に、一方のオぺランドの各デジット(被乗数)が他方のオぺランド(乗数)により乗算されて複数の部分積を形成し、得られたこれらの部分積は、乗算器の桁位置の配置重みを考慮して、加算される。
二進数を乗算する回路は、比較的に多数の回路素子を必要とし、従って集積回路上に製作すれば、かなりの量のチップ面積を取る。このために、集積回路設計者における進行中の目標は、回路素子をますます少なくした乗算器回路を実施する方法を見い出すことである。
当該技術分野ではバイナリ乗算を実行するために必要な時間を短縮させる多くの技術が知られている。例えば、加算して最後の積を形成する必要がある部分積の数を減少させて部分積の加算を高速にする種々の符号化方法が考案されていた。例えば、1964年のエレクトロニック・コンピュータに関するIEEE会議報告において、ラス(C.S WAllace)による「高速乗算器に関する提案(A suggestion for fast Multiplier)」、及び季刊誌、機械及び応用数学(Journal Mech. and Applied Math.)、1951年第4巻第2部において、ブース(Andrew D, Booth)による「符号付き二進乗算法(A Signed Binary Multiplication Technique)を参照されたい。ブース論文に説明されている変形ブースのアルゴリズムは、広く用いられており、集積回路内で使用されるディジタル乗算器においてしばしば使用されている。
いわゆる変形ブース符号化法は、より詳細には、乗算される2数のうちの一方を符号化する。この解決法は、乗算により発生した部分積の数を通常、係数2により減少させ、これによって最後の積に到着するまでに部分積を組み合わせるのに要する回路の量を減少させる。残念ながら、少なくとも算術的に動作しているときに、符号付き二進数が2の補数表記を使用して典型的に表されるということは、これら部分積を組み合わせ可能となる前に、部分積のいわゆる符号ビット拡張を実行しなければならないので、変形ブース符号化についての前述の効果に少なからず影響する。
ラオ(Rao)に対する米国特許第5,038,315号は、部分積全ての符号ビットにより表される値を2の補数として表すことにより、部分積を組み合わせるために符号ビット拡張を実行するのを不要にする方法を説明している。従って、もとの符号ビットというよりもこの数のビット(「符号ビット値」ワードと呼ばれる)は、部分積加算において使用される。(全て2の補数なので)符号ビット値ワードの全ビットは、(左端のものを除き)正の有意を有することが保証されるので、符号ビット拡張を必要とすることなく、部分積のデジットを直接加算することができる。この解決法を実施すると、必要とする回路面積は、従来知られていた乗算器よりもかなり少ない(20%程度少ない)。
更に、部分積の加算を高速化するために複数の試みが行われた。ウエア(Ware)に対する米国特許第4,545,028号では、加算器アレーが複数のブロックに分割されるので、各ブロック内の全ての加算がリップル形式により行われても、異なる複数のブロックが平行して加算の異なる部分を実行することができる。第1のブロックは、4つの部分積のみを含み、かつ第1のブロックからのキャリーが次のブロックにより必要とされるときに出現するように、残りのブロックは演算処理の進行に合致している必要がある。
更に、加算は、キャリー・ルック・アヘッド加算器を使用することにより高速化可能とされる。リップル形式により逐次的な一連の加算器段を通るキャリー伝搬は、加数における大きなビット数の関数として、長い期間の時間を必要とする。キャリー・ルック・アヘッド加算器では、ロジック回路が逐次的というよりも同時並行のキャリー伝搬をする。しかしながら、回路の複雑さ、ゲート数及びチップ面積はビット・サイズが増加するに従って急激に増加するので、キャリー・ルック・アヘッド加算器のビット・サイズ(又はビット数)が制限される。
2つの数を乗算し、かつその結果の積を第3の数と加算する即ち積算する回路は、信号処理装置及びディジタル信号処理装置(DPS)において広く使用されている。乗算器/アキュムレータの典型的な応用は、所定時点で同一値を得るためにN個の積を加算する有限インパルス応答(FIR)ディジタル信号フィルタを実施することである。ただし、Nは整数である。乗算及び積算を実行する主な目的は、可能な限り速やかに数学的な計算を達成することである。しかしながら、速度での増加は、典型的には、回路量の増加、及び構造の不規則性における対応した増加を伴う。
アレー乗算器の速度を増加させるために種々の試みがなされた。ペザリス(Stylianos Pezaris)は、1971年4月のコンピュータについてのIEEE会議報告、第C−20巻、第4号、第442頁〜第447頁の「40ns、17ビット×17ビットアレー乗算器」と題する論文において、アレー乗算器における和信号の伝搬の減少を教えている。通常の乗算器の場合に、Nビット×Nビットの乗算器が通常のキャリー・セーブ機構により乗算を実行するために、N行の加算器が必要とされる。
1982年9月29日の回路及びコンピュータについてのIEEE国際会議、第151頁〜第154頁、「16ビットCMOS/SOS乗算器アキュムレータ」にイワムラほかが教えているように、そのほかは、アレー乗算器における交番行の加算器を通る和及びキャリー信号の両方を飛び越した。イワムラほかは、和及びキャリー信号の行飛び越し技術を利用する乗算器を説明していた。この越し技術は、ワラス・ツリー及びブース方法のような他の方法に関連した構造の複雑な相互接続及び不規則性のために、このような他の方法よりも通常の乗算器アレーを使用している。しかしながら、乗算器アレーは、次の行にかかる越しキャリー及び和信号により、それぞれ加算及びキャリーの積算をする個別的な二つのアレーに効果的に分割される。このアレーの最下行には、加算器の行(イワムラ他による図示なし)を必要とする。これらの行の組み合わせは、個別的な2つのアキュムレータ・パスの4出力(2つの和及び2つのキャリー)を、最終行におけるキャリー伝搬用の2出力(1つの和及び1つのキャリー)に低減させる。キャリー・ルック・アヘッド加算器の最終行は、積出力をするために必要とされる。
ラリック(Rarick)に対する米国特許第5,504,915号は、バイナリ乗算器において使用する変形ワラス・ツリー加算器を提供する。
乗数器アキュムレータ回路に対する他の解決法は、クロッカー(Kloker)ほかに対する米国特許第4,575,812号、オーエン(Owen)ほかに対する米国特許第4,876,660号、及びウエイ(Wei)ほかに対する米国特許第4,831,577号により得られる。
アンドー(Ando)ほかに対する米国特許第4,771,379号は、並列乗算器によるディジタル信号処理装置を提供している。
従って、本発明の目的は、集積回路において最小の電力、複雑さ及びスペースにより、部分積を高速に発生し、かつ並列に加算する回路及び方法を提供することにある。
本発明の他の目的は、積算を行うように適応され、かつ符号付き値又は符号なし値を処理するように適応された高速の改良乗算器アキュムレータのアーキテクチャーを提供することにある。
本発明の更なる他の目的は、標準的な集積回路技術により実施可能な並列加算器アーキテクチャーにより高速のバイナリ乗算を提供することにある。
本発明の目的は、更に、改良された乗算及び演算処理用の複数の乗算器アキュムレータを利用した回路を提供することにある。
本発明の更なる目的は、2つの数を乗算する、又は2つの数を乗算し、かつその結果を第3の数と算術的に組み合わせる改良高速乗算器回路を提供することにある。
本発明は、第1のバイナリ・オぺランドX、第2のバイナリ・オぺランドY、前記第1及び第2のオぺランドから複数の部分積を発生するブース記録ロジック、前記部分積を低減し、かつ低減した前記部分積を前記第3のオぺランドと選択算術的に組み合わせるワラス・ツリー加算器と、最後の和を発生する最後の加算器、及び前記最後の和を選択的に丸める即ち飽和させる飽和回路を有する乗算器/アキュムレータ・ユニット(MAC)を提供する。
本発明は、更に、第1のMACに関連されて第1の出力を発生させる第1の入力、第2のMACに関連されて第2の出力を発生させる第2の入力、前記第1の出力を受け取る第1のアキュムレータ、前記第2の出力を受け取る第2のアキュムレータを備えた二重MACを提供する。
これら本発明の特徴及び効果は、添付する図面と関連させるときに、以下の詳細な説明からより明らかとなる。
本発明は、1例として単に与えられると共に、添付する図面を参照する以下の詳細な説明を読むことによりよく理解される。
本発明の乗算器/アキュムレータ(MAC)構造の高レベルの機能ブロックを示す図。 図1のMACに関する更に詳細な機能ブロックを示す図。 Aは、加算/減算(A/S)機能を含む標準ブース・エンコーダ用のゲート・レベル実施を示す図。Bは、更に加算/減算(A/S)機能をそれぞれ含む第1及び最終段用の変形ゲート・レベル・ブース・エンコーダ回路を示す図。Cは、更に加算/減算(A/S)機能をそれぞれ含む第1及び最終段用の変形ゲート・レベル・ブース・エンコーダ回路を示す図。 Aは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。Bは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。Cは、符号拡張なしのブース選択段回路用のゲート・レベル実施を示す図。Dは、符号拡張ありのブース選択段回路用のゲート・レベル実施を示す図。 部分積の整合及び多段のワラス圧縮器を使用してこれらの低減を示す図。 4:2ワラス圧縮器セル用のゲート・レベル実施を示す図。 Aは、Gsm、飽和及び分数モードを復号し、かつ制御する代表的なゲート・レベル回路を示す図。Bは、分数モードを実施する機能ブロックを示す図。 基本的な全加算器の遅延に関して部分積低減用の遅延到着プロファイル及び最後の加算器構造についての機能ブロックを示す図。 最後の加算器に行く前に、第3のビットを符号拡張用の拡張ビットと算術的に組み合わせるために使用される3:2圧縮器路網を示す図。 ゼロ結果予測(ZRA)状態マシン及び図1のMACに採用された式を示す図。 Aは、5ビット加算器アレー用のゼロ検出の代表例を示すブロック図。Bは、図11Aのアレーの第1形式のセルを示す概要図。Cは、図11Aのアレーの第2形式のセルを示す概要図。 図11Aの第1形式のセルに対するゲート・レベル実施を示す図。 図11Bの第2形式のセルに対するゲート・レベル実施を示す図。 ゼロ検出回路の代表的な例を示す概要ブロック図。 図1のMACにおけるゼロ検出機構の実施を表す概要ブロック図。 32ビット飽和を検出するゲート・レベル実施を示す図。 Aは、ビット位置39〜17に対する飽和制御セルを示す論理回路図。Bは、ビット位置15〜0に対する飽和制御セルを示す論理回路図。Cは、ビット位置16に対する飽和制御セルを示す論理回路図。 A、B、Cは、不偏の丸めを必要とするとき及び2つの場合についての結果を示す図。 Aは、40ビットのオーバーフローを検出するゲート・レベル実施を示す論理回路図。Bは、40ビットのオーバーフローを検出する一般論理式を示す図。 入力としてMACに供給された信号及び出力としてMACにより供給された信号を示す本発明のMACユニットの高レベル機能ブロックを示す図。 データ・ソース及びデータ送出先用の種々のバスに相互接続された本発明のMACユニット100の概要を示すブロック図。 ここで好適なアキュムレータ・レジスタ及び図21に示すバス構造の一部との相互接続の概要を示すブロック図。 本発明のMACユニットによるバス、メモリ及びレジスタ利用を説明する簡単なブロック図。 本発明の二重MACユニットによるバス、メモリ及びレジスタ利用を説明する簡単なブロック図。 本発明の現在好ましい二重MACユニット用のバス相互接続を説明する簡単なブロック図。 本発明の二重MACユニットを利用するDSPを説明するブロック図。 二重MACユニット用の太線パスにより図26のDSPを説明するブロック図。
異なる図及び表において対応する番号及びシンボルは、指摘しない限り、対応する部分を示す。
本発明の回路及び技術は多くの異なる形式のディジタル処理回路を使用することになるけれども、ここでの説明は、ディジタル信号処理装置(DSP)における実施についてのものとなる。当該技術分野において習熟する者は、この説明を精査した後は、本発明の回路及び技術を他の形式のプロセッサに使用し、かつ他の形式のディジタル処理回路を使用することが可能なことを認識すべきである。
集積回路の設計者において進められている目標は、より速い乗算器回路をますます回路素子によって実現する方法を見つけ出すことである。乗算器のパフォーマンスを改善するために採用された主な2戦略は、付加される部分積の数を減少させ、かつ部分積の積算を高速化することである。本発明の乗算器回路は、両方の戦略を採用している。
下記最初の説明は、40ビット用の積算により、現在好ましい17ビット×17ビット(17×17)乗算器/積算器(MAC)ユニット用のアーキテクチャー構造及び選択回路を指定している。好ましくは、乗算器/積算器ユニットは、その機能を1クロック・サイクル内で実行する。この最初の説明は、DSPコア・バス・システムとのインターフェースを含まない。この最初の説明は、いくつかの特定回路のアーキテクチャー定義、いくつかのサブブロック分析、及び仕様を含む。図1は、本発明の現在好ましいMACユニット100の高レベルでの機能ブロック図を示す。この高レベルでの説明を容易にするために、図1のブロック図において、いくつかの信号は機能形式により示されている。しかし、これらの接続のより厳密な説明は、以下で行う。
X及びYオぺランドは、乗算器/積算器ユニット100に対する多数の並列ビット入力である。乗算器/積算器ユニット100は、選択的に、乗算の積、乗算積を第3の数と組み合わせた算術結果、丸めた積若しくは結果、又は所定の飽和値である結果を出力する。17×17乗算器の場合に、この結果は、16最下位ビット(LSB)の32並列ビット、及び最上位ビット(MSB)の16ビットを含み、それぞれ最下位ビットから最上位ビットへ順序付けられている。乗算による積を第3の数と算術的に組み合わせるときに、この第3の数は、アキュムレータの内容であってもよい。乗算器/積算器ユニット100の動作は、複数の制御信号により制御されており、これらは、乗算器/積算器ユニット100を配置しているDSP(又は他のCPU)コアにより使用される種々の命令によって提供される。
図1に示すように、乗算器/積算器(MAC)ユニット100のアーキテクチャーは、以下のカスケード接続された複数の機能段(又は複数のブロック)、即ち、
分数モード制御信号122の制御により、2つの17ビット・オぺランド入力104(Yin)及び102(Xin)をそれぞれ受け取って、複数の部分積(PP)を発生し、これを次段の部分積加算ツリー130に供給する分数モード・ブロック(図示なし)を有する部分積発生段120、
丸めが丸め制御信号132の制御により適用可能とされ(215 二進重み付けが付加され)、飽和が2入力102、104の値、及び予め選択された制御信号132に従って、「強制設定」可能にされ(図1において「800×800SAT」により表されている)、かつ加算又は減算される第3の数142(Ain)の一部が入力として供給される(図1には示されていない)ときに、入力として複数の部分積を受け取り、かつ34ビット出力134を供給する部分積加算ツリー130、
部分積加算ツリー130の34ビット出力134及び第3の数142(Ain)の一部を受け取って最後の算術値即ち数を決定し、かつこれら条件の発生の適当な表示を有する適当なゼロ及びオーバーフロー検出144を含む、40ビット最後の加算器段140、及び
加算器140からの最後の算術値即ち数を、32ビットのときは「0X007fffffff」(オーバーフロー)若しくは「0Xff80000000」(アンダーフロー)へ、又は40ビットのときは「0X7ffffffffff」(オーバーフロー)若しくは「0X8000000000」(アンダーフロー)へ選択的に飽和させる最後の飽和段150からなる。この最後の飽和段150は、丸め制御信号152がアクティブのとき、例えば丸めが指定されたときに、16LSBをゼロにクリアするために設けられている。最後の飽和段150は40ビット出力154を供給し、この出力154は、好ましくは、アキュムレータ(図1には示されていない)に記憶される。種々の制御信号122、132、146、152は、命令デコード・ユニット(図1には示されていない)から供給され、ここで説明され、かつ本発明のMACユニット100の動作を制御するために使用されている。
現在好ましい図1のMACユニット100により実行される機能は:(1)MPY[R]Yin *in[+215]と表される2つの17ビット数(即ちオぺランド)102、104を乗算すること(ただし、Yin104及びXin102は符号付き又は符号なしが可能な17ビット・オぺランドである。)、(2)MAC[R]Ain+Yin *in[+215]と表される17ビット数102、104の乗算、及びこれらの積を第3の数142に加算すること(ただし、Ain142はアキュムレータ(又は他のソース)からの40ビット値又は数である。)、及び(3)17ビット数102、104を乗算し、かつMAC[R]Ain−Yin *in[+215]と表される第3の数142からこれらの積を減算することである。3機能の全てに対する[R]は、積に[+215]を加算する丸めオペレータ、又はその結果の算術数を表す。
図2は現在好ましい本発明のMACユニット100の詳細な機能ブロック図を示す。複数のサブブロック、及びこれら種々のサブブロックに採用されている特定の回路のうちのいくつかは、以下で説明される。
ブース及びワラスの(以上で言及した)刊行は、電力及び速度に関していずれも、部分積の生成にブース符号化を使用でき、また加算低減処理にワラス・ツリー機構を使用できることを示した。基数4のブース符号化及びワラス3:2及び4:2ベースの圧縮器ネットワークは、本発明のMACユニットに使用されており、かつ両技術を使用する最良の妥協が成立する。
図2を参照すると、本発明のMACユニット100は、図1に関連して説明したいくつかの異なる機能サブブロック120、130、140、150から構築されているのが解る。図2を引き続き参照すると、第1のオぺランド(Xin )102は、分数モード・ブロック即ち分数モード段126aに対する入力として供給されることが解る。図2において、この入力オぺランドのビットは、右(ゼロ)から左(17)へ、分数モード段126aの上端に沿いゼロから17へ配列されている。ここで、分数モード段126aは、分数モード制御信号122aにより制御され、以下で更に詳細に説明される。分数モード段126aは、その出力を、多数の第1のカスケード接続されたブース選択ブロック、即ちブース選択段126b〜126jの第1の入力として、供給する。各ブース選択ブロック段126b〜126jは、基本的には、1回路/ビット位置による多数のブース選択回路から作成されており、これらは以下で更に詳細に説明され、またこれらのブース選択ブロック段は、2ビット位置によって第1レベルから次のレベルへ(従って、図2において階段状に)オフセットされている。更に、第2のオぺランド(Yin)104は、一連のブース・エンコーダ・ブロック、即ちブース・エンコーダ段124a〜124iに対する入力として設けられており、これらは対応するブース選択ブロック段126b〜126jと相互接続されていることがことが解る。入力オぺランドの各ビットは、上端段(ビット位置0)124aから最下段(ビット位置17)124iへ、エンコーダ段124a〜124iの左端に沿ってゼロから17へ配列されている。その上、加算/引算制御信号122bはブース・エンコーダ段124a〜124iにも供給されている。ここで、ブース・エンコーダ段124a〜124iは、以下で更に詳細に説明されている。従って、図1の部分積発生段120は、分数モード段126a、カスケード接続された多数のブース・セレクタ段126b〜126j、及び多数のブース・エンコーダ段126b〜126j、及び多数のブース・エンコーダ段124a〜124iからなる。
図2を引き続き参照すると、図1の部分積加算ツリー130は、多数の、好ましくは、カスケード接続された6圧縮器段136a〜136fから作成されたワラス・ツリーからなることが解る。通常、圧縮器段136a〜136fは、3:2の圧縮器回路136a〜136cか、又は4:2の圧縮器回路136d〜136fを採用する。これらの圧縮回路は、以下で更に詳細に説明する。その上、加算段130は、第1の圧縮器段136aに入力132bを供給する特定デコーダ・ブロック132cを含む。加算段130は、更に必要なときに、丸めを実行する丸め(rnd)信号132aを入力しており、第3の圧縮器段136cに対する入力となる。デコーダ・ブロック132cは、2つの入力オぺランド102、104及び制御信号132dを入力している。ここで、デコーダ・ブロック132c及び丸め(rnd)信号132aは、以下で更に詳細に説明される。最後の4:2の圧縮器段136fが示されており、その出力134は最後の加算器段140に供給される。この最後の4:2の圧縮器段136fは、説明を容易にするために、好ましくはアキュムレータからの第3の数142を2入力オぺランド102、104の結果の積と算術的に組み合わせる段として、示されている。しかしながら、この第3の数142の複数位置(異なる複数ビット位置)は、図5に関連して以下で述べるように、多数の圧縮器段126b〜126jのうちの異なる1つに供給されてもよい。
図2を引き続き参照すると、図1の最後の加算器段140は、部分積加算段130の最後の圧縮器段136fから入力を受け取り、かつゼロ結果及び/又は飽和が発生したか否かを判断して、これらの結果を表すためにフラグ144を供給していることが解る。最後の加算器段140は、好ましくは、23キャリー・ルック・アヘッド加算器(CLA)及び17キャリー選択加算器からなる。最後の加算器段140はその出力を最後の飽和段150に供給している。ゼロ結果が発生したとき、又は飽和が発生したときを判断する回路は、以下で更に詳細に説明される。
最後の飽和段150は、32ビットに対して「0X007fffffff」(オーバーフロー)若しくは「0Xff80000000」(アンダーフロー)へ、又は40ビットに対して「0X7ffffffffff」(オーバーフロー)若しくは「0X8000000000」(アンダーフロー)へ最後の飽和を実行し、かつ丸めが必要ならば、下位の6ビットを0にクリアする。最後の飽和段150は、制御信号152により制御されており、以下で更に詳細に説明されている。最後の飽和段150は、最後の40ビット出力154を供給する。
要約するに、本発明の乗算器/積算器ユニット100は、複数の部分積を発生する変形ブース記録ロジック120と、最後の積を第3の数と算術的な組み合わせにより加算する一連の圧縮器を採用したワラス・ツリーの加算器/圧縮器段130と、最後の飽和段150内の異なる値に丸め又は飽和が可能な最終結果を発生する最後の加算器段140とにより実施される。ここで、40ビット積算により17×17MACとして説明したけれども、明らかに他のオぺランド・ビット長及びアキュムレータ・ビット長を採用してもよく、これも本発明の範囲内にある。
動作において、MビットのXオぺランド(被乗数)102は、レジスタから分数モード段126aに入力される。この分数モード段は、Mビット、好ましくは17ビットを第1の多数のブース選択段126b〜126jに出力する。以下で述べるように、分数モード段は、分数モード制御信号が活性のとき、即ち動作状態のときは、X入力を1ビット位置だけMSB方向にシフトする動作をする。NビットのYオぺランド104は、レジスタからブース・エンコーダ段124a〜124iに入力される。これらのブース・エンコーダ段は、ブース選択段との組み合わせにより、複数の部分積ビット408を発生する。各ブース・エンコーダ段は、その最終段を除き、ブース選択ロジック126b〜126jに対応する段に接続された3出力302、304、306又は352、354、356を有すると共に、選択段即ち選択行はブース選択回路400、420、440、460から形成されている。ブース・エンコーダ段からの3出力は、2最下位ビットから開始するYオぺランド104の各3ビット間の2つの遷移に対応し、Xオぺランド102上で動作して部分積408を形成する。
部分積を発生するブース選択段のアレーは、2ビットの増分により互いにオフセットされている。従って、アレーからの(ブース選択段126bからの)ブロック段部分積ゼロの2最下位ビットは、一緒にワラス・ツリー加算器/圧縮器段130に出力される。同様に、(次のブース・セレクタ段126cからの)部分積ゼロの次の2ビットは、部分積1の2最下位ビットにより一緒に加算されて、その和はワラス・ツリー加算器/圧縮器段130に出力される。この手順は、ブース選択段のアレーにおける残りの中間部分積408について最後のブース選択段の隣まで続く。最後のブース選択段126jは、第1のブース選択段126bから16ビットによりオフセットされている。このようにして、エンコーダ及びセレクタのブース記録ロジックは、部分積の発生を制御している。34ビット幅のワラス・ツリー加算器/圧縮器段は、40ビット幅の最後の圧縮器段136fに対する入力として使用される34ビット・ワードを積算し、この圧縮器段136fは、好ましくは更に、あるアキュムレータから40ビットの3つの数を「作動上」受け取る。乗算のみの動作の場合、第3の数即ちアキュムレータ入力は、0に強制設定される。最後の圧縮器段の出力は、最後の加算器段140に供給される。最後の加算器段140は、最後の飽和及び丸め段150に出力を供給し、その出力は、好ましくは、アキュムレータ又は他のレジスタに対する入力として供給される。
丸めモード制御信号は、ワラス・ツリー即ち最終段では丸めを実行すべきか否か、またどのようなレベルかについて判断する。40ビット結果の場合、ロード即ち動作の結果として更新された符号状態ビットは、M40フラグに従って報告される。M40フラグが0のときは、符号ビットは結果ビット31からコピーされる。M40フラグが1のときは、ビット39がコピーされる。M40フラグは、32ビットの結果を使用するのか、又は40ビットの結果を使用するのかを決定する。
オーバーフロー・ロジックは、出力用に選択されていない結果の最上位ビットを評価し、これがデータを含んでいるか否かを判断する。イエスであれば、これは、オーバーフロー・インジケータとして使用され、オーバーフロー・フラグがセットされる。全ての非選択ビットが同一であるか否かを判断するために、排他的論理和(XOR)ゲートが使用され、また動作が符号なしオぺランドを使用しているときに、最上位ビットが0であるか否かを判断するために、ANDゲートが使用される。これら2ゲートの出力は、オーバーフロー・フラグを出力するORゲートにより比較される。符号付きオぺランドが使用されているときは、2最上位ビットは、符号を表し、オーバーフローが発生していない限り、同一である。
ゼロ・フラグは、40ビット結果が以下で詳細に説明するゼロ結果予測(ZRA)によりゼロであると予測されるときにのみ活性となる。負フラグは、出力が符号付きであり、最上位ビットが「1」のときに、セットされる。
ここでブース・エンコーダ124a〜124iを参照すると、ブース・エンコーダは、加算されるべき部分積の数を低減するために有用な1要素である古典的な機能である。基数4によりブースのアルゴリズム・エンコーダにおいて、3乗算器オぺランドの3ビットは、部分積(PP)の発生、被乗数オぺランドPPの発生、最上位ビット(MSB)PPに相対する1ビット位置によりシフトされた被乗数の発生、及びAND符号の発生を制御するために、符号化される。
表1は、現在好ましい典型的なブース・エンコーダの動作を説明している。表1において、乗算器オぺランドの3ビットは、Yi-1、Yi-1、Yi、Yi+1 である。ただし、iはビット位置である。表1において、信号p2、p1及びsgは、エンコーダの出力信号であり、「機能」は、この被乗数値と乗算(*)されて部分積を発生する「値」を示している。
Figure 2010086547
表1のブース・エンコーダは、好ましくは、単一のエンコーダ回路により実施される。図3Aは表1により定義され、加算/減算(A/S)信号を有する標準ブース・エンコーダ回路300用のゲート・レベル実施を示す。このような9エンコーダ回路124a〜124iは、乗算器オぺランドYi の17ビットを符号化するために必要とされる。これらのビットは、以下のように符号化するために相互に関連され、かつグループ分けされる。
’0’、Y0、Y1−−→第1のエンコーダ、
1、Y2、Y3−−→第2のエンコーダ、
3、Y4、Y5−−→第3のエンコーダ、
..........
13、Y14、Y15−−→第8のエンコーダ、
15、Y16−−→第9のエンコーダ、
しかしながら、「第1」のエンコーダ回路124a/350は、Gsmモード飽和をより容易にするために、「000」入力構造がp1=p2=0及びsg=1を発生するので、少し異なる。「第1」のエンコーダ回路350は、図3Bに示されている。更に、最後のビットが符号ビットのコピーなので、第9及び最後のエンコーダ回路124i/380も異なる。最後のエンコーダ回路380は、図3Cに示されている。加算/減算(A/S)信号122bは、積を第3の数(アキュムレータ)の値142に加算すること、又はこれより減算することを定める。加算/減算(A/S)信号122bは、「乗算及び減算」モードを選択すれば、以下で更に詳細に説明するように、XORゲートを介して符号ビット「sg」の値(表1の表示)の補数を取る作用をする。
ここで図3Aを参照すると、標準ブース・エンコーダ回路300/124b〜124hが示されている。この回路300は、Yi-1 ビット104が第1のインバータ312に対する1入力として、第2の3入力ANDゲート322に対する1入力として、第1の2入力XORゲート326に対する1入力として、及び2入力のNANDゲート328に対する1入力として供給されている。第1のインバータ312の出力は、第2の3入力ANDゲート320に対する1入力として供給される。Yiビットは、第2のインバータ314に対する入力として、第1の3入力ANDゲート322に対する第2の入力として、2入力NANDゲート328に対する第2の入力として、及び第1の2入力XORゲート326に対する第2の入力として供給されている。第1の入力XORゲート326の出力は、pl信号である。第2のインバータ314の出力は、第2の3入力ANDゲート320に対する2入力として供給される。Yi+1ビットは、第3のインバータ316に対する入力として、第2の3入力ANDゲート320に対する第3の入力として、及び2入力ANDゲート330に対する第1の入力として供給されている。第3のインバータ316の出力は、第1の3入力ANDゲート322に対する3入力として供給される。第1及び第2の3入力ANDゲート320、322は、これらの出力を2入力ORゲート324に対する入力として供給する。
ORゲート324の出力は、p2信号302に対する第2の入力として供給される。NANDゲート328からの出力は、2入力ANDゲート330に対する2入力として供給される。2入力ANDゲート330からの出力は、第2のXORゲート332に対する1入力として供給される。第2のXORゲート332に対する第2の入力は、加算/減算信号122bである。第2のXORゲート332の出力は、sg信号306である。この特定の組み合わせゲートは表1のロジックを実施する。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートを採用してもよい。
ここで図3Bを参照すると、第1のブース・エンコーダ回路350/124aが示されている。ブース・エンコーダ回路350は、第1のインバータ362に対する入力として、及び2入力ゲート372に対する1入力としてY0ビットが供給されている。第1のインバータ362の出力は、2入力ANDゲート370に対する第1の入力として、及び第2のインバータ364に対する入力として供給されている。第2のインバータ364の出力は、p1信号352として供給されている。Y1ビットは、第3のインバータ366に対する入力として、及び2入力ANDゲート370に対する第2の入力として供給されている。ANDゲート370の出力は、p2信号354である。第3のインバータ366の出力は、2入力NANDゲート372に対する第2の入力として供給されている。2入力NANDゲート372の出力は、2入力XORゲート372の1入力として供給されている。XORゲート374に対する第2の入力は、加算/減算信号122bである。XORゲート374の出力は、sg信号356である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートが使用されてもよい。
図3Cを参照すると、最後のブース・エンコーダ回路380/124iが示されている。ブース・エンコーダ回路380は、第1のインバータ392に対する入力として、及び第1の2入力XORゲート392の1入力として、Yi-1ビットが供給されている。インバータ392の出力は、2入力ANDゲート396の第1の入力として供給されている。Yiビットは、第1のXORゲート394に対する第2の入力として、及び2入力ANDゲート396に対する第2の入力として供給されている。第1のXORゲート394の出力は、p1信号382である。2入力ANDゲート396の出力は、第2の2入力XORゲート398に対する第1の入力として供給されている。XORゲート398に対する第2の入力は、加算/減算信号122bである。第2のXORゲート398の出力は、sg信号386である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートが使用されてもよい。
ここで、ブース選択段126b〜126jに注目すると、この説明は、その後に相互に加算される部分積(PP)の発生を説明している。各ブース選択段126b〜126jは、前述したように、信号「p2」、「p1」及び「sg」により制御された乗算器からなる。以下、下記の表2に示すPPの1ビットを処理する代表的な回路を説明する。
Figure 2010086547
「--2*X」及び「--X」の選択は、対応するXビット位置を反転し、かつ位置0にブース・キャリー・ビットを加算することにより得られる。ブース・キャリー・ビットは、「sg」ビットの値である。図4B及び4Dに関連して説明されているように、符号拡張管理のために専用回路が設けられている。ここで述べているように、PP段120は、分数モード制御を含む。
各部分積は整合されて、それぞれが最下位ビット(LSB)に相対する2ビット位置だけシフトされた次と加算される。図4Aは、通常ブース選択段400に関するゲート・レベルでの実施を示す。図4Bは符号拡張420ありの通常ブース選択段回路に関するゲート・レベルでの実施を示す。図4c及び図4cは、それぞれ、符号拡張なし440、及び符号拡張あり460の最後のブース選択段回路に関するゲート・レベルでの実施を示す。
ここで、図4Aを参照すると、符号拡張なしの通常のブース選択段回路400が示されている。この選択段回路400は、Xi-1ビットが第1の2入力ANDゲート410に対する1入力として供給され、かつp2信号402がこの第1の2入力ANDゲート410に対する第2の入力として供給されている。p2信号402は、ブース選択段回路400が配置されているブース選択ブロック段126b〜126j即ちそのレベルに従い、通常のブース・エンコーダ回路300、第1のブース・エンコーダ回路350から出力されるp2信号302、又は352に対応する。Xiビット102は、第2のANDゲート412に対する第1の入力として供給され、また第2の2入力ANDゲートはp1信号404である。p1信号404は、ブース選択段回路400が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路300、又は第1のブース・エンコーダ回路350により出力されるp1信号304、354に対応する。第1及び第2のANDゲート410、412の出力は、2入力ORゲート414に対する入力である。2入力ORゲート414の出力は、2入力XORゲート416に1入力として供給される。XORゲート416に対する第2の入力は、sg信号406である。sg信号406は、ブース選択段回路400が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路300又は第1のブース・エンコーダ回路350により出力されるsg信号306、356に対応する。XORゲートの出力はPPi信号408である。明らかに、これと同一の論理機能を得るために、他の組み合わせのゲートを使用することもできる。これらのブース選択段回路400は、最上位ビットに対するビット位置を除き、全てのビット位置に対する多数のブース選択ブロック段126b〜126iの各段即ち各層に使用される。
ここで図4Bを参照すると、符号拡張420ありの通常のブース選択段回路が示されている。符号拡張420はXin102が第1の2入力NANDゲート424に対する1入力として供給されている。p2信号402は2入力のORゲート422に対する第1の入力として供給されている。2入力ORゲート422に対する第2の入力は、p1信号404である。ORゲート422の出力は、2入力NANDゲート424に対する第2の入力である。NANDゲート424からの出力は、XORゲート426に対する1入力として供給されている。XORゲート426に対する第2の入力は、sg信号406であり、XORゲートの出力はPPi信号408である。ここでも、p2、p1及びsg信号は、ブース選択段回路400が配置されているブース選択ブロック段即ちブース選択レベルに従い、通常のブース・エンコーダ回路300又は第1のブース・エンコーダ回路350からのものでよい。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。これらの符号拡張420は、最上位ビット位置に対する多数のブース選択ブロック段126b〜126jの各段即ち各層に使用される。
ここで図4Cを参照すると、符号拡張440なしの最後の段ブース選択段回路126jが示されている。この回路440は、2入力のANDゲート442に対する1入力として供給されるXiビット102を有し、またこの2入力のANDゲート442に対する第2の入力としてp1信号382が供給されている。ANDゲート442の出力は、XORゲート444に対する1入力である。XORゲート444に対する第2の入力は、sg信号386である。XORゲート444の出力は、PPi信号408である。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。このブース選択段回路400は、最上位ビットに対するビット位置を除き、全てのビット位置に対して最終段即ち最終層のブース選択段126jに使用される。
ここで図4Dを参照すると、符号拡張なしの最終段のブース選択段回路460が示されている。このブース選択段回路460は、2入力のNANDゲート462に対する1入力として供給されるXiビット102を有し、かつこの2入力のNANDゲート462に対する第2の入力としてp1信号382が供給される。NANDゲート462の出力は、2入力のXORゲート464に対する1入力として供給される。XORゲート464に対する第2の入力は、sg信号386であり、XORゲート464の出力は、PPi信号408である。明らかに、これと同一の論理機能を得るために他の組み合わせのゲートを使用することもできる。このブース選択段回路460は、最上位ビットの位置に対する最終段即ち最終層のブース選択段126jに使用される。
ワラス・ツリー加算器/圧縮器段130を使用したPPs408を低減すると、不規則な圧縮器網を除き、最も可能性のある並列圧縮器網に至る。図5は3段の圧縮器510、512、514を使用した部分積の整合及び低減を示す。本発明の乗算器の実施においてある規則性を保持するために、好ましくは、3:2及び4:2の圧縮器の混成機構を使用する。
圧縮器は、nPPiビット408と加算して和及びキャリー・ビットを送出する回路である。3:2圧縮器は、3ビットを加算して前述の2ビットの和及びキャリー)を送出し、更にこのツリーにより低減される。4:2圧縮器は4ビットをキャリー入力と加算して、前述の2ビット及びキャリー出力をその隣接段に発生する。
図5を引き続き参照すると、多数の3:2圧縮器520及び多数の4:2圧縮器が示されている。これらのビット位置は、図5の上端に沿って0〜33の番号が付けられ、かつ図5の下端近くに0〜39の番号が付けられている。第3の数(即ちアキュムレータ)の入力ビットは、「A」142により表されている。
PP低減即ち加算段510、512、514の総数は、好ましくは、3である。第1の加算器段510は、3行即ち層の3:2圧縮器136a〜136cからなる。これら3(和、キャリー)対/PPビットは、カスケード接続された2段512、514の4:2圧縮器136d〜136e及び136fにより更に低減され、最後に第3入力142との何らかの算術的組み合わせを含む(和、キャリー)対/PPビットを送出する。各ビット位置に対する和及びキャリーは、図5の下端に配置されており、最後の加算器段140に供給される。各ビット位置に対する最後の和は、和s1(第1の加算器段からの和)、s2(第2の加算器段からの和)、又はs3(第3の加算器段からの和)により表されている。各ビット位置に対する最後のキャリーは、キャリーc1(第1の加算器段からのキャリー)、c2(第2の加算器段からのキャリー)、又はc3(第3の加算器段からのキャリー)により表されている。
ここで図5において最初の3:2圧縮器段136aを参照すると、図5の右上部分にビット位置0に対する単一の圧縮器が示されているのが解る。この圧縮器は3入力を有する。第1の入力は、この圧縮器を表す灰色のブロックの上端の「0」により表された(第1の選択段126bからの)第1のPPである。第2の入力は、このブロック内に「A」により表された第3の数142のビット位置0である。第3の入力は、このブロックにおけるブース・キャリー信号b0である(この信号はrb0であり、図7Aを参照して以下で詳細に説明される)。同様に、ビット位置1に対する圧縮器は、その2入力として、「1」により表された(第1の選択段126bからの)第2のPP、及び、再び「A」により表された第3の数142のビット位置1の値を含む。この圧縮器は、その第3の入力(図示なし)に対して0のキャリー入力値を有するので、2:2圧縮器として動作する。ビット位置2に対する圧縮器は、その3入力として、(第1の選択段126bからの)「2」により表された第3のPP、「0」により表された第2の選択段126cからのPP(第2の選択段126bからの第1のPP)のビット位置0の値、及びブース・キャリー信号b1を有する。
このようにして、第1の3ブース選択段126b〜126dからのPPは、第1の圧縮器段136aの圧縮器により加算される。同様にして、次の3ブース選択段126e〜126gからの各PPは、第2の圧縮器段136bの圧縮器により加算される。同じく、最後の3ブース選択段126h〜126jからのPPは、第3の圧縮器段136cの圧縮器により加算される。
しかしながら、ビット位置21に対する圧縮器段136a内の圧縮器は、第3の選択段126dからのPPと第4の選択段126eからのPPとの間で橋渡しをすることが解る。圧縮器段136b及び136cに対するビット位置21〜23及び26〜28における他の圧縮器は、同様の「橋渡し機能」を実行する。圧縮器段136c及びビット位置10のときに、ブース・キャリー信号b5が示されることが解る。ブース・キャリー信号b5は、ビット位置10で圧縮器段136d内の圧縮器に対する入力である。同様に、ブース・キャリー信号b8、圧縮器段136cにおけるPPを表す「7」、及び圧縮器段136cにおける他のPPを表す「6」は、それぞれビット位置16、23及び22で圧縮器段136eにおける圧縮器に対する入力である。同様に、他のこのような信号は、接続又はレイアウト目的を容易にするために異なる圧縮器段に再配置される。即ち、第3の数の入力「A」142に対するビットは、例えば、3つの加算器段の全てに見出される。
多数の初期圧縮器段における符号拡張のオーバーヘッドは、MSBビット位置における「1」の加算により制限される。オぺランドの符号拡張は、オペレータ又はレジスタのフォーマット(ビット位置数)がオぺランドより大きいときに、発生する。即ち、圧縮器段136aに対するビット位置19〜33、及び圧縮器段136bに対するビット位置28から33まで符号拡張ビットを有するというよりも、「1」は、加算処理を加速させるために適当な圧縮器段内のMSBビット位置に供給される。特に、図5に示すように、この符号拡張のオーバーヘッドを避けるために、ビット位置19及び21では圧縮器段136aにより、ビット位置23、25及び27では圧縮器段136cにより、そしてビット位置35〜39では圧縮器段136fにより、「1」が加算される。更に、ブース・キャリー(b0〜b8信号)は、通常、第1段510において加算される。丸め(「Rnd」)制御信号132aがアクティブのときは、第1の段510の、図5において「R」により表された、第3レベルの136cにおけるビット位置15で「1」を加算することにより、丸めが実行される。
次いで、第1の加算器段からの中間加算(s)及びキャリー(c1)ビットは、全てのビット位置で4:2圧縮器段により、一緒に加算される。続いて、同一の形式の他の段及び半加算器段によって、最後の加算器により加算されることになる和及びキャリーのベクトルへPPを低減させる。図5は、部分積の低減、及びこれらの加算ビット及びキャリー・ビットの低減結果により、圧縮器網により作成された加算ビット及びキャリー・ビットに適用される低減処理を示す。一般的に、4:2圧縮器は、ツリーの終端においてより平衡した信号到着プロファイルを得る。例えば、VLSIシステムに関するIEEE会議報告、1995年6月、第3巻、第2号、第292頁〜第301頁、オクロブジャ(V.G.Oklobdzja)ほかによる「改良された列圧縮ツリー及びCMOS技術において最適化された最後の加算器を使用した乗算器設計の改良(Improving Multiplier Design by Using Improved Column Compression Tree and Opimized Final Adder in CMOS Technology)」、及びVLSI信号処理ジャーナル(Journal of VLSI Signal Processing)、7、第213頁〜第222頁、オクロブジャほかによる「複素数用の集積乗算器(An Integrated Multiplier for Complex Numbers)」を参照されたい。
現在好ましいワラス・ツリーを実施する場合に、4:2圧縮器用に新しい回路が開発された。その機能及び最適化された論理式は、一般的に知られている。IEEE CICC ’94会議報告、第599頁〜第602頁、オオクボほかによる「パス・トランジスタ・マルチプレクサを使用した4.4nsCMOS54×54bマルチプレクサ(A 4.4 ns CMOS 54×54b Multiplier Using Pass−transistor Multiplexer)」を参照されたい。しかしながら、回路における全ての遅延は、ツリーにおけるスプリアス遷移を最小化するために、平衡される必要がある。
図6は4:2圧縮器回路522用に現在好ましいゲート・レベルの実施を示す。特に、この回路は、4入力P0、P1、P2及びP3を有する。これらの4入力は、加算器段(第2又は第3の加算器段)内でビット位置毎に変化するが、通常は、前の加算器段の圧縮器回路からの和及びキャリー、選択した第3の数のビット位置値、及びブース・キャリー又は選択された部分積である。第1の入力P0は、第1の2入力XORゲート602に対する第1の入力、及び第1の2入力ANDゲート612に対する第1の入力である。第2の入力P1は、第1の2入力XORゲート602に対する第2の入力である。第3の入力P2は、第2の2入力XORゲート604に対する第1の入力、及び第2の2入力ANDゲート614に対する第1の入力である。第4の入力は、第2の2入力ORゲート604に対する第2の入力、及び第3の2入力ANDゲート620に対する第1の入力である。XORゲート602の出力は、第3のインバータ606に対する入力、第1のインバータ610に対する入力、及び第2の2入力ANDゲート614に対する第2の入力である。インバータ610の出力は、第1の2入力ANDゲート612に対する第2の入力である。ANDゲート612及び614の出力は、第1の2入力ORゲート616に対する2入力であり、その出力はキャリー出力Co634(和S630に関連したキャリー)である。XORゲート604の出力は、第3のXORゲート606に対する第2の入力である。XORゲート606の出力は、第4のXORゲート608に対する入力、第2のインバータに対する入力、及び第4の2入力ANDゲート622に対する入力である。第2のインバータ618の出力は、第3の2入力ANDゲート620に対する第2の入力である。キャリー入力信号Cin636は、第4のXOR608に対する第2の入力、及び第4のANDゲート622に対する第2の入力である。XORゲート608の出力は、和出力信号S630である。ANDゲート620及び622の出力は、第2の2入力ORゲート624の入力である。ORゲート624の出力は、次の圧縮器に対するキャリー出力信号Cout632である。XORゲート及びマルチプレクサに対してパス・トランジスタ技術を使用して実施されたこの回路は、4入力から和出力S及びキャリー出力Coへ、及び隣接キャリー入力(nearest neigbour carry in)Cinから隣接キャリー入力Coutへ高速かつ平衡したパスを提供する。
3:2圧縮器の場合、特定の「a+b+1」回路は、表3に示すように、式「和=!(XORB)=!(XORb)」及び「キャリー=a|b」を満足させることが好ましい。
Figure 2010086547
図7Bに示すように、分数モードは、分数モード制御信号122の制御により、Xmオぺランド102をMSBに対して1ビット位置だけシフトすることからなる。これは、複数の2入力マルチプレクサ(「MUX2」)710を介して各ビット位置について1回実施される。
図7Aに示すように、Gsm飽和は、「x18000」を「x18000」により乗算すると、分数Gsm信号及び飽和制御信号がアクティブのときは、その結果が「007fffff」に(又は、丸めがアクティブのときは、「00800007fff」に)に強制設定される必要があることを意味する。図7Aに示すように、特定のXin 及びYinsmオぺランドのデコードは、好ましくは、標準論理132cにより実行される。その結果、部分積の第1行に対して全て1を設定するために、第1段のブース・キャリー(b0)を補足する。これは、総デコード時間をブース符号化及びPP選択段による遅延よりも減少させる。
図7Aを引き続き参照すると、複数の2入力のNORゲート720〜734が示されており、それぞれ0から14までのビット位置を表し、かつ各ビット位置に対応するX及びY入力を有する。ANDゲート735及び736はビット位置15及び16を表し、かつこれらの2ビット位置に対応するX及び入力を有する。これらNORゲートの出力は、一組の4入力ANDゲート740〜744に集められ、一方、ANDゲート735及び736の出力は、ANDゲート745に集められる。4入力ANDゲート740〜744の出力は、4入力ANDゲート750に集められる。ANDゲート750、ANDゲート745からの出力、及びGsm制御信号737は、3入力ANDゲート752に対する入力である。ANDゲート752の出力Gsat756は、Gsm飽和信号を表す。この信号は、2入力XORゲート754に対する1入力となり、他方の入力は第1のブース・エンコーダ124aからのsg0信号である。XORゲート754の出力は、rb0760信号であり、圧縮器に対する第1のブース・キャリー信号として、以上で詳細に説明した第1の圧縮器段136aにおけるビット位置0に供給される。
最後の加算器140は、その入力として、第3の数即ちアキュムレータの内容142と最後の圧縮器段136fからかつ低減した和及びキャリーとの加算結果、及び前の圧縮器段から第1の7LSBを入力する。これらの圧縮器の動作はAin、和及びキャリー・バスを新しいセットの和及びキャリーに低減する。最後の和及びキャリーは、最後の40ビット加算器に供給されて最終結果を得て、これが最後の飽和段150において32ビット飽和検出について解析される。
通常、最後の加算器140に関する高速アーキテクチャーは、種々の実施に帰結するキャリー・ルック・アヘッド技術(CLA)を必要とする。しかしながら、40ビット用の1ブロックCLAは、速度及びシリコン面積に関して64ビット加算器のキャリー伝搬機構に至る。部分積低減ツリーの遅延プロファイルを観測することによる他の技術は、単なるCLA実施をこの遅延が減少し始めるビット位置までの下位ビットに制限するのを考慮している。残りのビット(MSB)に関しては、第1のCLA加算器のキャリー出力により選択を実行するキャリー選択加算器を選択することにより、キャリー伝搬の影響が低減される。また、キャリー選択アーキテクチャー内では、可変キャリー飛び越し機構によるキャリーを伝搬させることにより、どのような遅延到着プロファイルも考慮に入れることができる。この実施は、PP低減処理中に加算器の上位ビットのビット反転即ちトグルを減少させ、同時により小さなCLA構造を得ると共に速度を保持する効果がある。しかしながら、シリコンに実施するために規則性が劣る。
図8は、基本的な全加算器遅延に関して部分積減少のために模擬された遅延到着プロファイル、及びそのプロファイルのもとで現在好ましい対応する最後の加算器構造を示す。更に、オーバーフロー及びゼロの検出を報告する2ステータス・ビットも作成される必要がある。オーバーフロー検出は以下で説明されている。更に、ゼロ検出も以下で説明されている。図9は、圧縮器段136fからの最後の5MSB39〜25を示す。これらの全5ビット位置は、図5における3:2圧縮器回路を有するものとして示されている。しかしながら、図5を再点検することにより解るように、ビット位置39〜35は、図9に示すように、、2入力のみを有する。この3:2圧縮器網は、結果を最後の加算器140に渡す前に、第3の数即ちアキュムレータ・ビットを拡張ビット位置39〜35に加算するために使用される。符号拡張は、好ましくは、ビット位置35からの「1」をビット位置39に加算することにより実施される。乗算のみの機能が選択されたときは、第3の数即ちアキュムレータ値Ain[39:0]を「0」に強制設定する。従って、図9において、ビット位置39〜35におけるAi は、MAC又はMAS動作を選択したときの第3の数即ちアキュムレータ値Ain[i]か、又はMPY動作のときの「ゼロ」である。従って、MPY/MAC制御信号146は、第3の数即ちアキュムレータ値が選択されたのか、又は全ての第3の数のビット位置にゼロが強制設定されたかを判断する。このキャリー選択146がアクティブ即ちハイのときは、第3の数即ちアキュムレータ値が全ビット位置に使用される。
最後の加算器140出力における最終結果がゼロのときは、対応するゼロ検出フラグが好ましくは1にセットされる。更に、丸めモードがアクティブのときは、その結果の16最下位ビット(LSB)は、これらのビット位置がゼロにクリアされることになるので、ゼロであるとみなされてフラグを更新する。しかしながら、最終的な結果ビット(丸めた後)を走査してゼロ検出フラグをどのようにセットするのかを判断する従来のゼロ検出の実施は、通常、タイミングの観点から許容できないパフォーマンス劣化に帰結する。従って、本発明のMACユニットは、最後の加算結果の判断と平行してゼロ検出フラグを更新するために、予測機構、ゼロ結果予測(ZRA)を使用する。
ゼロ結果予測技術は、各ビット位置に関するP、G及びZステートの初期解析に依存している。これらのステートの組み合わせは、システムのステートがPS(伝搬ステート)、CS(発生ステート)及びZS(ゼロ・ステート)である説明のような「ステート・マシン」に至る。図10は、ビット位置をLSBから開始することにより走査する際に、システム・ステート・マシンがどのように動作するのかを示す。初期化時点で、システムはゼロ・ステートにある。MSB位置において最後のゼロ・フラグ値はステート・ビットの論理和となる。
キャリー・ルック・アヘッド(CLA)加算器のような構造に基づくゼロ検出機構を説明する。しかしながら、MACユニット100用のゼロ検出機構の実施を説明する前に、CLAアーキテクチャーに基づく数学的なアルゴリズムの簡単な説明は、以下のようである。
a及びbが加算用の2つのオぺランドであるときは、次のようになる。
Figure 2010086547
以上の式(1)及び(2)において、「g」は「生成」項であり、また「p」は「伝搬」項である。シンボル「・」は論理積動作を表し、またシンボル「A」は排他的論理和(XOR)を表す。「g」及び「p」項を組み合わせてキャリーを計算する。実際には、キャリー・インが=0であれば次式のようになる。
Figure 2010086547
ただし、オペレータ「o」は次のように定義される。
Figure 2010086547
上式において、シンボル「+」は論理和動作を表す。
「o」オペレータは、交換可能なので、次式を導出し得ることを示すことができる。
Figure 2010086547
同一のアーキテクチャーは、いくつかのスライスの複数オぺランドに対して使用されてもよく、[o]オペレータに基づき、これらの計算結果を組み合わせて大域的なキャリー発生を得る。1スライスのオペレータは、ある範囲のオぺランド・ビットを含む。
上式においてインデックスkにより得られる自由度を使用して、伝搬遅延の項に関して最も効果的な方法により、オぺランドをスライスする。これは、高速キャリー発生器を介する大域的な伝搬時間を最小化することにより、実行される。
和におけるゼロ検出を説明するために、3対の2ビット二進数a及びbを加算する簡単な例を考える。
Figure 2010086547
a及びb項は交換できることに注意すべきである。これをnビットの加算に一般化するために、新しいゼロ項(下記の8式)を定義し、かつ以上の式(1)及び(2)を組み合わせ、一組の3式(6)、(7)及び(8)を形成して、p(i)ビット、g(i)及びゼロ(i)をそれぞれ定義することができる。
Figure 2010086547
式「〜(a(i)+b(i))」は、「(a(i)+b(i))」の補数を表す。
以上の式(6)、(7)及び(8)により定義された3ビットの定義を組み合わせると、図10に示すゼロ予測機構のステート・マシン1400を定義するに至り、このシステムのステートは、以下のようになる。
Figure 2010086547
ZERO(i,0)、G(i,0)は以下のようになる。
Figure 2010086547
従って、これら3ステートのうちの1ステートが見出されるときは、ビットi上にゼロ(Z)が検出される。
Figure 2010086547
換言すると、インデックスk(0≦k≦n)が見出されるように、ステートが発生するのであれば、これは、2オぺランドの付加が0にゼロに帰結することを意味する。従って、次式のようになる。
Figure 2010086547
以上説明した高速キャリー発生アーキテクチャーを使用することにより、ゼロ検出するために、オペレータ「o」と同一のプロパティーにより、1オペレータが定義される。これを以上の式(13)から導き出すことができる。実際に、2オペレータ・スライス(n,k+1)及び(k,m)が上式(13)に説明したプロパティーを有するのであれば、これらはそれぞれゼロに帰結する。以下の2つの場合に、スライス(n,m)上でゼロが検出される。
(k,m)のステートは全てゼロである (A)
(n,k+1)のステートはゼロ検出(即ち、(12)におけるステートのうちの1つと同一)である (B)
又は
(k,m)のステートはゼロ検出であり、かつスライスは「g」を含む
(C)
(n,k+1)のステップは全てpである (D)
これは次式のようになる。
Figure 2010086547
G(i,j)及びP(i,j)の項は、加算器高速キャリー発生中間結果から取り出され得る。従って、ゼロ検出機構は、以下のように定義された「u」オペレータを形成するように、以下の方法により「o」オペレータを変更することにより達成される。
これは次式のようになる。
Figure 2010086547
図11Aは、セル・アレーC(i,j)を含む5ビット時間最適加算器の代表的な実施を示し、このセル・アレーC(i,j)は中間予測信号を組み合わせるオペレータ「u」、及び中間予測信号を転送するセルCBを実施するセルCCを含む。5ビット加算器のアーキテクチャーを説明する。ついでに述べるのはスライス境界(i,j)である。スライス境界はスライス間の境界である。図11Aにおける各列はビット位置を表し、これらのビット位置は、右の最下位ビット位置から左に向かって連続的に高いビットに増加している。
図11Aに示すように、5ビット動作用のアレーは、2ビット動作用の第1のサブ・アレー1408、及び3ビット動作用の第2のサブ・アレー1410にスライスされ、大域的結果は、「u」オペレータを介して2つの中間結果を組み合わせることにより得られる(例えば、(4,4)u(3,2)=(4,2))。
ビットBO〜B4に対する入力は、第1行のセル1412に供給される。中間予測信号は、矢印により示すように、第2の行1413及び第3の行1414を通って上方かつ左方へ波及する。これらの中間予測信号は、中間結果の組み合わせにかかる時間に対応した遅延をもって一方の行から次の行へ転送されて、水平方向に他方のセルに放送される。セル1415において第1の2ビット・オペレータ1408から中間予測結果を発生し、かつ3ビット動作のセルの第3の行に供給されてセル1416からの垂直出力に大域的結果を形成する。
キャリー入力(carry in)は、以上で説明したキャリー発生アーキテクチャーに影響しないことを示すことができ、かつ最後の計算で考慮に入れることができる。これは、以下繰り返しにより明らかにすることができる。
Figure 2010086547
従って、高速キャリー発生機構後に最終結果のキャリー入力の影響を計算することができる。更に、このプロパティーは、ゼロ検出にも成立する。実際に、キャリー入力=0ならば、式(13)における特性が証明されたときは、ゼロが検出される。これは次式に帰結する。
Figure 2010086547
ゼロ検出の最終結果は、ゼロ結果予測可能に供給されてこのゼロ結果の初期表示を得るようにされてもよい。
図11Aは、図11Aに黒塗りのブロックとして示すセルCC(i,j)1420のうちの1つに対する入出力を示している。この形式のセルは「u」動作を実行し、一般的な場合に、以下の入出力を垂直及び水平の両方に有する。
Figure 2010086547
水平入力(存在するとき)は、単純に水平出力1426及び1424(放送動作)に転送されることが解る。これは、変更なし、かつ遅延なしに実行されるので、出力信号は、入力信号が入力されるとほぼ同時に得られる。更に、垂直出力1428は、垂直入力1422及び水平入力1424のオペレータ「u」により定義される組み合わせであることが解る。この処理は、ある程度の時間が掛かるので、垂直出力1428は、垂直入力1422及び水平入力1424が入力された後、直ぐ得られる。個々のセルは、図11Aに示すように、アレーでの位置に従ってフル・セットの入出力を有する必要はない。
図11Bは、図11Aに空白ブロックとして示すセルCB(i,j)のうちの1つに対する入出力を示す。この形式のセルは、以下に示すように、セルの入力から出力へ信号を単純に転送する。
Figure 2010086547
水平出力信号(p1、g1、z1)1436は、バッファにより「増幅」された垂直入力信号(p、r、g、r、z、r)1432のコピーである。垂直出力信号(p、r、g、r、z、r)1438は、バッファにより「増幅」された垂直入力信号(p、r、g、r、z、r)1432である。垂直入力1432は、存在するときは、水平出力1436及び垂直出力1438に転送されるが、その出力は、組み合わせセルCC1420のうちの一つ内の組み合わせ信号を発生する際に導入される遅延に対応した量により、入力から遅延されている。個々のセル1430は、図11Aに示すように、アレーにおける位置に従って、垂直入力及び水平及び/又は垂直出力を有することに注意すべきである。
バッファ・セルにより得られる垂直方向の遅延は、信号が図11Aにおいて上方向へ各行を平行に伝搬するために、必要とされる。水平伝搬は即時的に作用するので、各ビット位置に対して垂直方向(即ち、図11Aに示す上端のセル)において最後のセルの垂直出力から結果が得られる(供給される)。
前述のように、図11Aに示す例は、2つのサブアレーに効果的に分割されると共に、中間予測信号は各サブアレーにおいて種々のセルを通って左上方に伝搬し、かつ第1のサブアレーの出力は第3行における第2のセル(即ち、最上行のセル)の出力と組み合わせられる。
表4に図11Aの5ビット例の動作における中間予測信号が示されており、図中の行A及びBは、2つの5ビット入力値を表す。
Figure 2010086547
多くの応用では、セルの最上行における種々のビット位置に利用可能な中間ゼロ予測検出結果は必要でない。このような場合に、左上端(図11Aでは、セルCC(4,0))のみをオペレータとして保持することができると共に、(中間結果を必要としない)その行における1以上の残りのセルは、不必要なロジックをなくすように、かつ総合的なパフォーマンスを改善するように、「0」オペレータにより置換される。しかしながら、一実施例において、更に、「u」オペレータのセルは、中間ビット位置用に中間ゼロ予測結果を必要とする特定ビット位置に設けられてもよい。
図12は、図11Aの「CC」セル1420のうちの一セルにおける「u」オペレータを実施するロジック・ゲートを含む回路1450の1例の概要ブロック図である。この図において、図11Bに示されている入力1422及び1424は、この図の左端から供給され、また出力1426及び1428は右端に示されている。図12に見ることができるように、オペレータ用の回路は、1インバータ、4ANDゲート、及び2ORゲートを含む。以上のゲートは「u」オペレータを実施することが理解される。明らかに、「u」オペレータを実施するために他の組み合わせのゲートを採用してもよい。
図13は図11Bのバッファ・セルCBのうちの1つを実施する回路1460の1例の概要ブロック図である。この概要ブロック図において、図13に示す垂直入力1432はこの図の左端に供給され、また水平出力1436及び垂直出力1438は右端に示されている。図13から理解されるように、この回路は、3バッファ(遅延)遅延回路を含み、gr、pr及びzr入力1432のそれぞれに一つである。バッファ回路の遅延係数は、「u」オペレータを実行する回路により導入される遅延に一致するように選択される。バッファ回路からの出力は、図11Aに示すアレー内のバッファ・セルCBの位置に従って、水平出力1436及び/又は垂直出力1438に供給される。
図14は乗算及び積算ユニット100の最後の40ビット加算器段140に対する代表例のゼロ検出回路の概要ブロック図である。この例では、ゼロ予測は、40ビットにおいて、更に16ビットにおいて必要とされる。図14において、第1のゼロ予測段1472は、これに供給された16ビットB0〜B15に基づいてゼロ予測出力を供給する。信号が供給されるこれらの16ビットB0〜B15は、算術ユニットの結果における16最下位ビットに対応する。更に、算術ユニットの結果におけるビットは、MACの飽和段に供給される。16ビットのゼロ予測結果信号1473は、1477に出力される。これは、更に論理ANDゲート1478に供給され、ここでゼロ予測結果信号は第2のゼロ予測段1474からの部分ゼロ予測結果信号1475と加算される。第2のゼロ予測段1474は、これに供給される24ビットの信号に基づいてゼロ予測出力を供給する。信号が供給される24ビットは、40ビット算術ユニットの結果における24最上位ビットB16〜B39に対応する。更に、算術結果ビットB16〜B39は、MACの最後の加算段140に供給される。最後の加算段の出力は、結果Prであり、飽和段に転送される。
ANDゲート1478において16ビットのゼロ予測結果信号を24ビットのゼロ予測結果信号と組み合わせることにより、ANDゲート1478の出力に40ビットによる大域的ゼロ予測結果信号1479を発生することができる。
図15はMACユニット100内の図14に示すゼロ予測機構の接続を更に詳細に示す。MACの部分積低減ツリー130からの出力は、40ビットの最後の加算器140及びゼロ予測機構1470に供給される。最後の加算器及びゼロ予測機構の出力は、40ビットによるアキュムレータに対する大域的ゼロ予測フラグ1479、最後の加算器の結果、及び16ビットのゼロ予測フラグを含む。最後の加算器1482の結果、及び16ビットのゼロ予測フラグ1477は、MACの飽和段及び丸め段1476/150に供給され、その出力1483/154はアキュムレータ・レジスタ1484に供給される。
最後の飽和段150では、拡張ビット[ビット位置39:32]上のオーバーフローは、検出されるのが好ましく、かつ飽和モードがアクティブ即ち「オン」のときは、最後の結果は、「0X7fffffff」若しくは「0X80000000」の32ビット最大表示、又は「0X7ffffffffff」若しくは「0X80000000」の40ビット最大表示に強制設定される。丸めモードが「オン」(即ちアクティブ)のときは、16LSBはこの段でクリアされる。
図16は、適当なときは、最後の結果の拡張ビット位置をデコードしてオーバーフロー・ビットを発生する回路を示す。図16を引き続き参照すると、2入力セクションが示されているのが解る。結果のビット位置Add31〜Add34は第1のNANDゲート1210に供給され、かつ個別的に第1のNORゲート1214に供給される。同様に、結果のビット位置Add36〜Add39は第2のNANDゲート1212に供給され、かつ個別的に第2のNORゲート1216に供給される。結果の残りのビット位置Add35は、第1のインバータ1218に供給され、かつ個別的に第2のインバータ1220に供給される。2つのNANDゲート1210、1212の出力、及び第1のインバータ1218の出力は、ORゲート1222に対する入力として供給される。ORゲート1222の出力は、2入力ANDゲート1226に対する1入力として、及び3入力ANDゲート1228に対する1入力として供給される。2つのNANDゲート1214、1216の出力、及び第2のインバータ1220の出力は、ORゲート1224に対する入力として供給される。NANDゲート1224の出力は、2入力ANDゲート1226に対する2入力として、かつ3入力ANDゲート1228に対する第2の入力として供給される。3入力ANDゲート1228に対する第3の入力は、飽和モード信号1230である。好ましくは、この飽和信号は、飽和モード・ビットに対応し、この飽和モード・ビットは、論理レベル1に「セット」されてオーバーフロー又はアンダーフロー上で飽和結果を発生する。2入力ANDゲート1226の出力は、拡張ビット用のオーバーフロー・フラグ即ち信号1232(図1における144)であり、「0」がオーバーフローなし、従って飽和なしを表し、また飽和モードがアクティブのときは、「1」がオーバーフロー及び飽和結果を表す。3入力ANDゲート1228の出力は、飽和制御信号(Satc)1234である。この飽和制御信号は以下で説明する飽和制御回路に入力として供給される。
図16に示すように、拡張ビット39〜31におけるオーバーフローは、図16にAdd39〜Add31により表される最終結果が「0X1ft」又は「0X000」と異なるときに、開始される。次いで、ビット位置39(Add39)において結果の符号に基づいてクランプ値が選択される。Rnd制御信号がハイのときは(論理レベル1のときは)、全ての場合において、最下位ビットAdd15〜Add0が「0X000」にセットされる。
これら異なる飽和値を発生するために特定な飽和回路が作成された。特に、ビット位置39〜17に対する飽和制御回路、及びビット位置15〜0に対する飽和制御回路が設けられる。図17Aは15より低いビット位置に対する飽和制御回路を示し、また図17Bはビット位置39〜17に対する飽和制御回路を示す。図17Cはビット位置16に対する飽和制御回路を示す。
ここで図17Aを参照すると、ビット位置39〜17に有用な飽和制御用の回路1340が示されているのが解る。特に、これらは、i番目のビット位置に対する結果ビットである入力信号Addiが示されているのが解る。Sg信号は、ビット位置39に対するAddiビット(即ち,Add39)により表された符号ビットとなる。Satc信号は、図16のオーバーフロー検出ロジックにより発生された飽和制御信号である。Fi信号は、飽和が発生したときに、そのビット位置が「強制設定」される値である。Addi信号は、2入力ANDゲート1320に対する1入力である。Satc信号は、インバータ1328に対する入力、第1の3入力ANDゲート1322に対する第1の入力、及び第2の3入力ANDゲート1324に対する第1の入力である。インバータ1328の出力は、ANDゲート1320に対する第2の入力となる。Sg信号は、インバータ1330に対する入力隣、かつ第2の3入力ANDゲート1324に対する第2の入力となる。残りの入力信号Fiは、第1の3入力ANDゲート1322に対する第3の入力、及びインバータ1332に対する入力となる。インバータ1332の出力は、第2の3入力ANDゲート1324に対する第3の入力となる。3つのANDゲート1320、1322、1324の出力は、ORゲート1326に対する入力として供給され、その出力は飽和値出力Soとなる。
ここで図17Bを参照すると、ビット位置15〜0に有用な飽和制御用の回路1350が示されているのが解る。特に、i番目のビット位置に関する結果ビットである入力信号Addiが示されているのが解る。Sg信号はビット位置39(即ちAdd39)用のAddiにより表された符号ビットである。Satc信号は、図16のオーバーフロー検出ロジックにより発生された飽和制御信号である。Fi信号は、飽和が発生したときに、そのビット位置が「強制設定」される値である。Addi信号は、3入力ANDゲート1360に対する1入力である。Satc信号は、インバータ1368に対する入力、第1の4入力ANDゲート1362に対する第1の入力、及び第2の4入力ANDゲート1364に対する第1の入力となる。インバータ1368の出力は、3入力ANDゲート1360に対する第2の入力となる。Sg信号は、インバータ1370に対する入力隣、かつ第2の4入力ANDゲート1364に対する第2の入力となる。残りの入力信号Fiは、第1の4入力ANDゲート1362に対する第3の入力、及びインバータ1372に対する入力となる。インバータ1372の出力は、第2の4入力ANDゲート1364に対する第3の入力となる。丸めモード制御信号(Rnd)は、インバータ1374に対する入力である。丸めモード制御信号(Rnd)は、結果に対する丸め即ち2+15 の加算を制御する信号であり、Fi信号の値に無関係に、16LSBを「0」に強制設定するために使用される。インバータ1374の出力は、3入力ANDゲート1360に対する第3の入力、第1の4入力ANDゲート1362に対する第4の入力、及び第2の4入力ANDゲート1364に対する第4の入力となる。3ANDゲート1360、1362、1364の出力は、ORゲート1366に対する入力として供給され、その出力は飽和値出力Soとなる。
ここで図17Cを参照すると、ビット位置16に有用な飽和制御用の回路1380が示されているのが解る。特に、図13Cは、図17Bのインバータ1374に供給されたRnd信号が2入力ANDゲート1382からの出力信号URにより置換されていることを除き、図17Bとほぼ同一であることが解る。ANDゲート1382に対する2入力は、不偏(unbiased)丸めモード信号(RDM)及び信号Z16である。信号Z16は、ZRA回路の一部の出力であり、ビット位置15〜0(最初の16ビット)がゼロであることを表している。RDM信号は、不偏丸めが望ましいときに、アクティブとなる(例えば、不偏丸めモードがアクティブとなる)。飽和は不偏丸め上の手順を取るので、SATC信号の作用は、Addi値が出力Soとなるのを阻止することである。従って、最後のアドレスのビット位置16(17番目のビット)はゼロに強制設定されるので、オーバーフローする丸め結果は、飽和される、例えば7ffe0000ではなく、32ビット用の7fff0000の値に強制設定される。
16LSBの値Fiは、オーバーフローに対する「1」及びアンダーフローに対して「0」となる。ビット位置16より上のMSBの値は、オーバーフローが発生したのか、又はアンダーフローが発生したのかによって、32ビット又は40ビットになる。
不偏丸めモードが選択され(RDMが主張され)、かつビット位置15〜0が全てゼロ(即ち、Z16信号がアクティブ)のときは、信号URを形成するANDゲート1382の出力がハイとなる。UR信号は、インバータ1374により反転されて、この場合はローとなる反転
Figure 2010086547

信号を発生させる。このロー信号の作用は、ORゲート1366の出力がゼロとなるように、ANDゲート1360、1362、1364を禁止することであり、このゼロはビット位置16をゼロに強制設定させる作用を有する。従って、LSBフィールド[15:0]が0.5に等しい値を有し、かつMSBフィールド[31:16]が丸めの前に奇数値を有するときは、ビット516はゼロに強制設定される。同様に、LSBフィールドが0.5に等しい値を有し、かつMSBフィールドが丸めの前に偶数値を有するときは、ビット516はゼロに強制設定されることはない。
不偏丸めモードが選択されないとき(RDMが主張されないとき)、又はビット位置15〜0が全てゼロでないとき(従って、Z16がアクティブでないとき)は、信号URを形成するANDゲート1362の出力はローとなる。従って、インバータ1374からの反転UR信号、即ち
Figure 2010086547

信号は、ハイとなるので、UR信号がANDゲート1360、1362、1364を禁止しない。その結果、ビット位置16のセット処理は、ビット位置39〜17に対すると同じように、飽和モードに従って制御される。UR信号、及びこの信号を発生させる回路がなければ、ビット位置16に対するセルは、ビット位置39〜17のものに対応することを理解すべきである。
以上の説明のように、17番目のビット(ビット位置16)をゼロに強制設定する図17Cの特殊な飽和セルの存在をゼロ予測回路と組み合わせて使用することにより、効果的な方法の不偏丸めを得ることができる。必要とすることは、バイアスを導入することなく、かつ効果的に実施できる丸めを得ることである。以上の構造を設ければこの機能が得られる。
従って、以下、不偏丸め及びその作用はどのようなものかについての説明を行う。不偏丸めは、図18Aに示すように、一つの場合のみの通常の丸めと異なる。図18Aは、計算結果が正確にP.5となるときを示す。ただし、P.5はPとP+1との間の中間点の値であり、かつ予め定めた精度により表された二進値である。この例において、Pは二進値であり、その16LSBはゼロである。
不偏丸めが選択され、ゼロが計算結果の16LSB上に検出されたときは、17ビット(ビット位置16)がゼロに強制設定される。これは、最後の32ビット加算器において、ビット位置15で常に1の加算が発生し、かつLSBフィールドが丁度0.5に等しいときは、16LSBがゼロを有する不偏丸めに帰結する。図18B及び18Cは、ビット位置16に関して入れ替わった2ステートを示し、またビット位置16における値がどのようであっても、ビット位置15〜0でゼロ検出が発生すれば、ゼロに強制設定される必要があることを示す。
16LSBビット位置がゼロであるか否かの判断は、図5を参照して説明したように、RND信号に応答してビットX15で「1」を加算した後、図11〜図15を参照して以上で述べたゼロ結果予測法を使用することにより、検出される。
特に、ゼロ予測は、最後の加算器140の一部であるキャリー・ルック・アヘッド構造の伝搬ツリー上で実行される。これは、部分積低減ツリーにより発生されるキャリー及び和を使用する。キャリー及び和により、ビット位置16に関するゼロ結果は、伝搬ツリーを最初の16ビットの1−0結果にマッピングすることにより予測される。これは、少なくとも最後の加算器のキャリー伝搬速度と同程度の伝搬速度が得られる。ゼロ結果により、ビット位置16はゼロに強制設定すべきか否かについて、予測することができる。
更に、40ビット上のオーバーフローの検出も得られる。制御ビットovf40(図2)は、これがオフのときは、32ビット上のオーバーフローを可能にし、これがオンのときは、40ビットのオーバーフローをイネーブル(可能)にする。この検出は、最後の加算器の最後の8ビットにより発生する。40ビット・オーバーフローは、ビット39に対する最後の和(S39)がビット40に対する最後の和(S40)と異なるときに発生する。S40は、計算されなくても、図19A及び図19Bに表す回路により示すように、推論され得る。従って、Ovfは、2XORゲートにより直接実施される。飽和(ovm)がオンであれば、最終結果は、0X7ffffffffff、又は0x8000000000に強制設定される。
MACユニット100をそのアーキテクチャー、サブユニット及びサブユニットに使用する特殊回路に関連して以上説明したので、MACユニット100を1ブロックとして注目し、次いで入力としてこのブロックにどのような信号が供給され、かつこのブロックがどのような信号を出力するのかを認識することについて説明する。これには、これらのブロックのうちの2つを一緒に置き、かつこの二重MAC構成に関する信号を認識する説明が続く。更に、本発明の二重MACユニットを使用する好ましいDSPの簡単な説明が続く。
ここで図20を参照すると、本発明のMACユニット100に関する入出力信号の図が示されているのが解る。特に、本発明のMACユニット100のハイ・レベルのブロック図が示され、入力としてMACに供給される信号、及び出力としてMACユニット100により供給される信号を説明しているのが解る。
図20からMACユニット100に対する入力として、17ビットXオぺランドO入力102、17ビットYオぺランド1入力104、及び4ビット第3番オぺランド142の3オぺランドが供給されているのが解る。出力は、40ビットの最終結果154、40ビット用のゼロ検出(Z40)、32ビット用のゼロ検出(Z32)、及びオーバーフロー・フラグ(OV)である。入力ステータス信号は、st1sb tr[5]であり、Gsm、RDM、FRC、M40及びSATDステータス・ビットに対応する。rndm1信号は、丸めモード選択制御信号に対応する。gm1信号は、32ビット動作又は40ビット動作間で選択する制御信号に対応する。更に、加算/減算信号122bが入力信号として供給される。その上、オぺランドが符号付きか、又は符号なしかを選択し、かつMACユニット100により実行されるべき動作を決定する種々の信号も供給されている(図20には示されていない)。更に、種々のクロック信号がMACユニット100に供給される(図20には示されていない)。
ここで図21を参照すると、データ・ソース及びデータの行先用の種々のバスと相互接続された本発明のMACユニット100の簡単なブロック図が示されているのが解る。更に、同一のバス構造と相互接続されたMACユニット100が示されているのが解る。この第2のMACユニット100bは、ここで説明しているMACユニットと同一であり、その第1のMACユニットとの動作を以下で説明する。図21から理解されるように、第1のMACユニット100に対する2つのオぺランドは、バスB2110、D2112、C2114、K2116、DR2118、ACR0 2130、及びACR1 2132を含む複数のソースから入力され得る。ACR0及びACR1は、好ましくは、アキュムレータ・レジスタを含むデータ・レジスタ用の読み出しバスである。ACW0 2134及びACW1 2136はこれらデータ・レジスタの書き込みバスである。DRバス2118は、レジスタの汎用領域からの値を搬送する。2入力オぺランド。マルチプレクサ2160、2162は、MACユニットに対するオぺランドをどのバスが供給するのかを選択する。MACユニットからの最終結果は、トライステート・ドライバ2150によりACW02134に供給される。更に、ACR1はMACユニットに第3の数142に供給する。更に、入力ステータス信号及び出力フラグに対する相互接続が示されているのが解る。最後に、マルチプレクサ2120は、マルチプレクサ2160に対する1可能入力として、バスD又はCを選択するために使用されてもよい。
同じようにして、第2のMACユニット100bは、バス構造、入力ステータス信号、及び出力フラグと相互接続されている。
ここで図22を参照すると、現在好ましいアキュムレータ・レジスタ(AC0〜AC3)2212〜2216の簡単なブロック図が示されているのが解る。これらのレジスタは、図21のバス構造の一部と相互接続されている。従って、図22は、どのようにしてデータをアキュムレータからバス構造を通ってMACユニット(複数のMACユニット)に移動し、かつ同一又は異なるアキュムレータに戻すことができるかについて示す。図22は、各アキュムレータがロー(L)(15〜0)、ハイ(H)(31〜16)、及びガード・ビット(G)(39〜32)セクションを有する。ここでもトライステート・ドライバ(2220)は、アキュムレータ内のデータを一定のバスに駆動するために使用されてもよい。
本発明のMACユニット100は、好ましくは、2つのアキュムレータにより実施される。本発明の更なる機能は、一方のアキュムレータの内容を他方のアキュムレータへ転送する能力である。この能力は、フーリェ変換の計算のような応用に有用である。
好ましい実施例では、CMOS技術により高速17×17ビット固定ポイント乗算器アキュムレータが作成される。その動作において、いずれも符号なし又は符号付きが可能な2つの17ビット・オぺランドは、乗算されて34ビット結果を得る。この結果は、いずれかの又は両方の40ビット・アキュムレータにロードされてもよい。この結果は、更に、いずれかのアキュムレータに加算、又はこれから減算され、かついずれか又は両方のアキュムレータに戻されてもよい。転送又は算術動作は、ソース・アキュムレータ内容の16ビット・シフト動作を含む。積算動作は、最近の16又は32ビット結果に対して丸めの機能を含む。
オぺランドは、各入力ポート上の2レジスタのうちの1つから選択される。アキュムレータの全40ビットは、並行の出力が可能である。40ビット即ち6MSBのアキュムレータ内容は、発生した符号、ゼロ及びオーバーフロー並びに3ステータス・フラグについてテストされる。オーバーフローは、オーバーフローしたものに代わって自動的に飽和値の置換により、訂正されてもよい。丸め及びオーバーフローは特定の制御信号により起動される。
40ビット・フォーマット又は16ビット表示による内部レジスタからの符号付き制限データは、飽和が必要とされ、SATDフラグ又は特殊命令により制御される。飽和範囲は、M40と呼ばれる飽和モード・フラグによる制御される。M40フラグがオフであれば、飽和は、−231〜231−1の範囲内の40ビット値、及びその結果の各16ビット部分に対して−215〜215−1の範囲内の16ビット値に制限する。M40フラグがオンであれば、値は、二重表示に対して−239〜239−1の範囲内で飽和される。MACのときは、入力オぺランドの符号が以下のように決定される。SI=!UNS AND(入力ビット15)。M40は、40ビット(「1」のとき)と32ビット(「0」のとき)との間で選択する。以上で述べたように、オーバーフローの検出は、符号及びゼロ検出のように、M40に従う。
40ビット表示から16ビット表示へ移行するために、丸めは、計算中に精度を保持する必要がある。丸めは、専用のビット・フィールドによる命令セットを介して、及び(不偏丸め用の)RDMと呼ばれるフラグを介して管理されてもよい。これらの組み合わせは、下記のモードに帰結する。
丸め(rnd)が「オン」ときは、
RDM=0:+無限に対して丸めを発生する。
40ビット・データ値の場合、これは、215の加算を意味し、かつ16最下位ビット(LSB)はゼロにクリアされる。
RMD=1:最近に対して丸めを発生する。
40ビット・データ値の場合、これが16LSBの真の解析であり、これらが(i)丸めが発生しない215−1〜0(0.5より低い値)、(ii)40ビット値に215を加算することにより、丸めが発生する215+1〜216−1(0.5より大きい値)、又は(iii)データ値に215を加算することにより、40ビット値の16ビットの上位部分が奇数のときに丸めが発生する215(0.5に等しい値)の範囲内にあるか否かを検出する。
16LSBは、飽和と無関係に3つの場合の全てについて、ゼロにクリアされる。丸めモードが「オフ」のときは、何もしない。
FRCT(又はFRACT)ステータス・ビットは、分数モードを示すために使用される。このステータス・ビットがセットされていれば、乗算器の出力は1ビットだけ左シフトされて付加符号ビットに対して補償する。
乗算動作は、(乗算器に対するオぺランドとして)16ビット符号付き又は符号なしデータにより、及び(レジスタがアキュムレータである)内部レジスタからの40ビット値により作動する。その結果は、好ましくは、40ビット・アキュムレータのうちの1つに記憶される。乗算又は乗算/積算は、FRACT,SATD及び丸めモード制御信号の制御に従う。更に、2つの乗算オぺランドが共に−215 に等しく、かつFRACT及びSATDモードがオンのときに、乗算又は乗算/アキュムレータは、最終結果の「00 7FFF FFFF」(16進)に対して飽和を発生するGsmモードにより、影響される。
符号処理のために、乗算オぺランドは、実際には、17ビット上で符号化される(従って、符号は16ビット符号データのために2倍にされる)。これらのオぺランドは、命令により制御されていない限り、常に符号付きとみなされる。これらの値のソースが内部レジスタであれば、符号付き17ビットの正確の計算が使用できる。本発明の乗算及び積算回路上で利用可能な機能的な動作は、MPY(乗算動作)、MAC(アキュムレータ内容に対する乗算及び加算)、及びMAS(アキュムレータ内容からの乗算結果を減算する)である。
下記の表5は、可能な全組み合わせ及び対応する動作を示す。乗算動作及び「乗算及び積算」動作は、2ステータス・ビット又はフラグ、即ちゼロ及びオーバーフロー(OVF)の検出に戻る。
Figure 2010086547
乗算/積算ユニット100は、好ましくは、1CPUクロック・サイクル内でそのタスクを実行する。入力オぺランドは17ビット符号付き表示を使用し、一方、積算は40ビットを使用する。更に、算術モード、例外、及びステータス・フラグも処理される。更に、飽和モードの選択を命令によりダイナミックに定義することができる。
可能とするオペランドのソースは、以下のように定義される。
メモリから: 2 RAMからの16ビット・データ、
1 「係数」RAMからの16ビット・データ、
内部データ・レジスタから:
2 レジスタの上位部分(ビット32〜16)からの17
ビット・データ、
1 積算用の40ビット・データ、
命令デコードから 1 16ビット「即時」値、
他の16ビット・レジスタから:
1 16ビット・データ。
MAC命令に関係するLSB方向へ16ビットのシフト動作は、全てMACユニット内で実行され、符号伝搬は、ビット39を使用して常に実行される。
結果の行先は、常に内部データ・レジスタのうちの1つである。表6は、可能な入力の組み合わせ(x、yポート)を示す。アキュムレータ「a」は常に内部データ・レジスタであり、使用する前に、LSBへ16位置だけシフトさせることができる。
Figure 2010086547
メモリからのデータは、D及びCバスを介して転送される。ポインタを犠牲にすることなく、係数を自動的にアドレス指定させるために、第3の専用バスが設けられ、Bバスと呼ばれる。係数及びデータの送出は、図23に示すように、Bバス及びDバスを組み合わせる。Bバスは与えられた1バンクのメモリ構成に関連される。このバンクは係数用の「ダイナミック」メモリとして使用される。
Bバスに対するアクセスは、他の部分のメモリ空間に対する単一、二重又は長いアクセスと平行して、及び関連するメモリ・バンクに対する単一アクセスのみと並行してサポートされる。B値を送出するためのアドレス指定モードは、特殊なポインタ(CDP−メモリ係数データ・ポインタ)に記憶されたベース・アドレス指定(16ビット)、及びテーブルを走査するためのインクリメンタを使用する。このポインタは、個別的に管理されて、データ(典型的には「係数」)をフェッチするために増加、減少、又は符号付きインデックスにより事後増加されてもよい。B、C及びDバス上をフェッチするのに必要なデータ帯域幅を得るために、Bアクセスは、他の2つと異なるメモリ・バンク上で実行されなければならない。
ここで図23を参照すると、本発明のMACユニットによりバス、メモリ及びレジスタ利用を説明する簡単なブロック図が示されているのが解る。特に、第1のRAMバンクを使用してバスBを介して1オぺランドを供給し、またバスDを介して第2のRAMバンク(図示なし)から第2のRAMバンクを供給するのを示しているのが解る。MACユニットの出力は、バス2134を介してレジスタ(好ましくは、アキュムレータ)に転送され、レジスタ値はバス2132を介してMACユニットに供給される。
MACユニットは、必要により、増加する消費電力要求に対応し、また最小限の(面積及び電力)を得る能力を確保するために、構成可能な方法により二重乗算及び積算動作をサポートすることができる。これは、いくつかの特徴に基づいている。即ち、
‐第2のMACのハードウェアのプラグ・インが、メインのものと同様にオぺランド・ソース及び行先に対する接続性により可能とする。
‐アルゴリズムの実行中に唯一のMAC/サイクルが必要とされるときは、プラグ・イン・オペレータを停止する。
‐第2のMACの制御は、命令クラス「二重MAC」を介して行なわれ、これが2つのオペレータ上の演算MPY/MAC/MASの組み合わせを可能にし、これらをデコードすることで第2のMACの実行クロックのゲート処理に必要な制御信号が生成される。
‐スループットの観点から、二重MAC実効の最も効果的な使用には、DSPアルゴリズム用に3オぺランド/サイクルと共に2アキュムレータ内容の持続的な送出を必要とする。バス・アーキテクチャー全体を損なうことなく、計算能力の増大を得るために、Bバス・システムは、このスループット要求を満足させる最良の柔軟性を与える。従って、「係数」バス及びその関連メモリ・バンクは、図24に説明した2つのオペレータにより共有される。効果的に、係数バス及びその関連メモリ・バンクを共有することにより、複製された係数構造を有するシステムでの電力消費を減少させる。同様に、電力節減は、MAC1とMAC2との間で共有されるDRxCPUレジスタにMAC係数を記憶することによっている。
この実行を制御する命令は、D及びCバス上の二重アドレス指定と共に、MPY、MPYSU、MAC及びMAS動作と、符号付き又は符号なし動作との中から対の動作の可能とする全ての組み合わせを提供する。アキュムレータ・ソースと行先が等しいことを除き、データ・レジスタに行先(アキュムレータ)を動作毎に個別的にセットすることができる。丸めは、両動作に共通である。CDPポインタ及び更新機構は、前の値及びモジュロ・動作の増加/減少、又は符号付きインデックスによる事後増加又は変更なしを含む。本発明の一実施例は、都合よいことに、最初のパスのMAC並行動作におけるポインタの事後変更、及び単一サイクル内でオぺランド管理用の3ポインタの事後変更により、ループ最適化を可能にした二重MAC構造を提供する。最後に、表7は、図24に表す応用を異なるアルゴリズム及びRAM機構に適用する。
Figure 2010086547
例外処理及びステータス・ビット処理のときに、二重MAC構成は、フラグの二重セットを1アキュムレータ行先につき1回、発生する。
ここで図24を参照すると、本発明の二重MACユニットにより、バス、メモリ及びレジスタを表す簡単なブロック図が示されているのが解る。特に、第1のRAMバンクが両MACユニットに第1のオぺランドを供給しているのが示されているのが解る。第2のRAMバンクは、バスDを介して第1のMACユニットに第2のオぺランドを供給する。同様に、第3のRAMバンクは、バスCを介して第2のMACユニットに第2のオぺランドを供給する。両MACは、それぞれの出力バスを介してレジスタ(好ましくは、アキュムレータ)に出力を供給し、かつそれぞれの入力バスを介してレジスタから入力を受け取る。
図25を参照すると、本発明の現在好ましい二重MAC構造用のバス相互接続を表す簡単なブロック図が示されているのが解る。特に、第2のMAC用のデータ・ソース数は、図21のものより減少していることが解る。
図26は、本発明の一実施例を有するマイクロプロセッサのブロック図である。このマイクロプロセッサは、ディジタル信号処理装置(「DSP」)である。明確にする観点から、図26は本発明の一実施例を理解することに関連したマイクロプロセッサの部分を単に示す。DSPに関する一般的な構造の詳細は、周知であり、その他でも容易に見出すことができる。例えば、ブトー(Frederick Boutaud)ほかに発行された米国特許第5,072,418号は、DSPを詳細に説明しており、ここでは引用により組み込まれる。スボボダ(Gray Swoboda)ほかに発行された米国特許第5,329,471号は、DSPをどのようにテストしてエミュレートするのかについて詳細に説明している。ここでは、マイクロプロセッサに通常に習熟する者が製作し、かつ本発明を使用できるように、本発明の一実施例に関連するマイクロプロセッサの複数の部分についての詳細を十分に説明する。
本発明の観点から利益となり得るいくつかの例示的なシステムは、米国特許第5,072,418号に詳細に説明されており、ここでは、特に、米国特許第5,072,418号の図2〜18を参照して引用により組み込まれる。本発明の特徴に関連したパフォーマンスを改善又はコストを低減するマイクロプロセッサを使用することにより、米国特許第5,072,418号に説明されているシステムを更に改善することができる。このようなシステムには、限定するのではなく、工業的なプロセス制御、自動車システム、モータ制御、ロボット制御システム、衛星電気通信システム、エコー打ち消しシステム、モデム、ビデオ・イメージング・システム、音声認識システム、暗号化によるボーコーダ・モデム・システム等が含まれる。
図1のマイクロプロセッサの種々のアーキテクチャー構成、及び完全な命令セットは、同時特許出願番号第 号(TI−28433)に説明されており、ここでは参照することにより組み込まれる。
ここで図26を参照すると、本発明の二重MACユニットを利用するDSPが示されているのが解る。図26は、処理コア26102のPユニット26108、Aユニット26110、及びDユニット26112を含む機能及び実行ユニットを示し、かつ処理コア26102の種々の構成要素を接続するバス構造を示す。Pユニット26108には、例えば、ループ制御回路、進め/分岐制御回路、及び反復カウンタ・レジスタ及び割込マスク、フラグ又はベクトル・レジスタのようにプログラム・フローを制御し、かつ管理する種々のレジスタが含まれる。Pユニット26108は、汎用データ書き込みバス(EB、FB)26130、26132、データ読み出しバス(CB、DB)26134、26136及び係数プログラム・バス(BB)26138に接続されている。その上、Pユニット26108は、CSR,ACB及びRGDとラベル付けした種々のバスを介して、Aユニット26110及びDユニット26112内のサブ・ユニットに接続されている。
図26に示すように、本発明の実施例において、Aユニット26110には、3つのサブユニット、即ちレジスタ・ファイル2630、データ・アドレス発生サブユニット(DAGEN)2632、及び算術論理ユニット(ALU)2634が含まれる。Aユニット・レジスタ・ファイル2630には、種々のレジスタが含まれる。更にこれらには、データ・フロー及びアドレス発生のために使用されてもよい16ビット・ポインタ・レジスタ(AR0、...、AR7)及びデータ・レジスタ(DR0、...DR3)がある。その上、レジスタ・ファイルには、16ビット循環バッファ・レジスタ及び7ビット・データ・ページ・レジスタが含まれる。汎用データ書き込みバス(EB、FB)26130、26132、データ読み出しバス(CB、DB)26134、26136、係数データ・バス26140及び係数アドレス・バス26142は、Aユニット・レジスタ・ファイル2630に接続されている。Aユニット・レジスタ・ファイル2630は、それぞれ逆方向に動作している単方向バス26144及び26146によりAユニットDAGENユニット2632に接続されている。DAGENユニット2632には、例えば処理エンジン26100内のアドレス発生を制御し、かつ監視する16ビットX/Yレジスタと、係数、及びスタック・ポインタ・レジスタとが含まれる。
更に、Aユニット26110は、シフタ機能と、典型的には、加算、減算及びAND、OR及びXOR論理オペレータのようなALUに関連した機能とを含む第3のユニットのALU2634を備えている。ALU2634は、更に、汎用バス(EB、DB)26130、26136と、命令定数データ・バス(KDB)26140とに接続されている。AユニットALUは、Pユニット26108レジスタ・ファイルからレジスタ内容を受け取るPDAバスによりPユニット26108に接続されている。ALU2634は、更に、アドレス及びデータ・レジスタ内容を受け取るバスRGA及びRGBにより、及びアドレス及びデータをレジスタ・ファイル2630内のレジスタに転送するバスRGDにより、Aユニット・レジスタ・ファイル2630に接続されている。
本発明の図示実施例に従って、Dユニット26112には、2つの構成要素、即ちDユニット・レジスタ・ファイル2636、DユニットALU2638、Dユニット・シフタ2640及び2乗算及び積算ユニット(MAC1、MAC2)42及び44が含まれる。Dユニット・レジスタ・ファイル2636、DユニットALU2638及びDユニット・シフタ2640は、バス(EB、FB、DB及びKDB)2130、26132、26134、26136及び26140と、MACユニット2642及び2644とは、バス(CB、DB、KDB)26134、26136、26140及びデータ読み出しバス(BB)26144に接続されている。Dユニット・レジスタ・ファイル2636は、4つの40ビット・アキュムレータ(AC0、...AC3)及び16ビット遷移レジスタを含む。Dユニット26112は、更に、40ビット・アキュムレータに対する加算の際にソース又は行先レジスタとして、Aユニット26110における16ビット・ポインタ及びデータ・レジスタを利用することができる。Dユニット・レジスタ・ファイル2636は、アキュムレータ書き込みバス(ACW0,ACW1)26146、26148を介してDユニットALU2638、及びアキュムレータ書き込みバス(ACW0,ACW1)26146、26148を介してMAC1 2642及びMAC2 2644から、及びアキュムレータ書き込みバス(ACW1)26148を介してDユニット・シフタ2640から、データを受け取る。データは、Dユニット・レジスタ・ファイル・アキュムレータからアキュムレータ読み出しバス(ACR0、ACR1)26150、26152を介してDユニットALU2638、Dユニット・シフタ2640及びMAC1 2642及びMAC2 2644へ読み出される。DユニットALU2638及びDユニット・シフタ2640は、更に、EFC、DRB、DR2及びACBとラベル付けされたバスを介してAユニット26108のサブユニットに接続されている。
ここで、図27を参照すると、二重MAC動作に対する太線のデータ・バスを除き、図26のDSPが示されているのが解る。例示的なMAC命令は、図27の右上の部分に27010により示されている。命令が第2のMACの動作を要求しないときには、DSPによる電力消費を削減するために、第2のMACは、そのクロック・ツリーを遮断することによってパワーダウンされる。
本発明及びその効果を詳細に説明したが、特許請求の範囲に定義したように、本発明の精神及び範囲から逸脱することなく、種々の変更、置換及び代替が可能なことを理解すべきである。
この出願は、1998年10月6日にヨーロッパにおいて出願された出願番号第98402452.1号(TI−27757EU)、及び1998年10月6日にヨーロッパにおいて出願された出願番号第98402455.4号(TI−28433EU)に対して優先権主張する。
100 乗算器/積算器ユニット(MAC)
102 第1のオぺランド(Xin
120 部分積発生段
130 ワラス・ツリー加算器/圧縮器段
140 最後の加算器段
142 第3の数(Ain
150 最後の飽和段

Claims (4)

  1. 第一のMACユニットと、
    クロック制御を備えた第二のMACユニットと、
    前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
    前記第一のMACユニットの他の入力に接続された第二のバスと、
    前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
    FIR演算を行う場合、前記第二のMACユニットに対しクロックが供給され、前記第一のバスに係数データのj(jは0以上の整数)番目の成分が供給され、前記第二のバスに入力データのi−j(iは0以上の整数)番目の成分が供給され、前記第三のバスに前記入力データのi−j+1番目の成分が供給され、前記第一のMACユニットは出力データのi番目の成分を演算し、前記第二のMACユニットは前記出力データのi+1番目の成分を演算すること、を特徴とするプロセッサ。
  2. 第一のMACユニットと、
    クロック制御を備えた第二のMACユニットと、
    前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
    前記第一のMACユニットの他の入力に接続された第二のバスと、
    前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
    マトリックス演算を行う場合、前記第二のMACユニットに対しクロックが供給され、前記第一のバスに第一の入力データの(k、j)(kおよびjは0以上の整数)番目の成分が供給され、前記第二のバスに第二の入力データの(i、k)(iは0以上の整数)番目の成分が供給され、前記第三のバスに前記第二の入力データの(i+1、k)番目の成分が供給され、前記第一のMACユニットは出力データの(i、j)番目の成分を演算し、前記第二のMACユニットは前記出力データの(i+1、j)番目の成分を演算すること、を特徴とするプロセッサ。
  3. 第一のMACユニットと、
    クロック制御を備えた第二のMACユニットと、
    前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
    前記第一のMACユニットの他の入力に接続された第二のバスと、
    前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
    IIR演算を行う場合、前記第二のMACユニットに対しクロックが供給され、前記第一のバスに出力データのi−j−1(iおよびjは0以上の整数)番目の成分が供給され、前記第二のバスに係数データのj番目の成分が供給され、前記第三のバスに前記係数データのj+1番目の成分が供給され、前記第一のMACユニットは前記出力データのi番目の成分を演算し、前記第二のMACユニットは前記出力データのi+1番目の成分を演算すること、を特徴とするプロセッサ。
  4. 第一のMACユニットと、
    クロック制御を備えた第二のMACユニットと、
    前記第一のMACユニットの一の入力と前記第二のMACユニットの一の入力に接続された第一のバスと、
    前記第一のMACユニットの他の入力に接続された第二のバスと、
    前記第二のMACユニットの他の入力に接続された第三のバスと、を有し、
    FFT演算を行う場合、前記第二のMACユニットに対しクロックが供給され、前記第一のバスに係数データのj(jは0以上の整数)番目の成分が供給され、前記第二のバスに実数部入力データのj番目の成分が供給され、前記第三のバスに虚数部入力データのj番目の成分が供給され、前記第一のMACユニットは実数部出力データを演算し、前記第二のMACユニットは虚数部出力データを演算すること、を特徴とするプロセッサ。
JP2009255129A 1998-10-06 2009-11-06 乗算器/アキュムレータ・ユニット Expired - Lifetime JP5273866B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98402452.1 1998-10-06
EP98402452A EP0992885B1 (en) 1998-10-06 1998-10-06 Multiplier accumulator circuits

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP11321529A Division JP2000215028A (ja) 1998-10-06 1999-10-06 乗算器/アキュムレ―タ・ユニット

Publications (2)

Publication Number Publication Date
JP2010086547A true JP2010086547A (ja) 2010-04-15
JP5273866B2 JP5273866B2 (ja) 2013-08-28

Family

ID=8235509

Family Applications (2)

Application Number Title Priority Date Filing Date
JP11321529A Pending JP2000215028A (ja) 1998-10-06 1999-10-06 乗算器/アキュムレ―タ・ユニット
JP2009255129A Expired - Lifetime JP5273866B2 (ja) 1998-10-06 2009-11-06 乗算器/アキュムレータ・ユニット

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP11321529A Pending JP2000215028A (ja) 1998-10-06 1999-10-06 乗算器/アキュムレ―タ・ユニット

Country Status (3)

Country Link
EP (1) EP0992885B1 (ja)
JP (2) JP2000215028A (ja)
DE (1) DE69832985T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020507154A (ja) * 2017-01-23 2020-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
US11327718B2 (en) 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US7513702B2 (en) * 2005-11-16 2009-04-07 Va, Inc. Non-contact shutter activation system and method
US8082287B2 (en) * 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry
JP5074425B2 (ja) * 2006-02-15 2012-11-14 クゥアルコム・インコーポレイテッド 拡張された削減ツリー回路構成を有するブース乗算器
US7797366B2 (en) 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8805916B2 (en) 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
JP5951570B2 (ja) 2013-09-13 2016-07-13 株式会社東芝 行列演算装置
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
JP6350111B2 (ja) * 2014-08-22 2018-07-04 富士通株式会社 乗算回路及びその乗算方法
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10140090B2 (en) 2016-09-28 2018-11-27 International Business Machines Corporation Computing and summing up multiple products in a single multiplier
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
CN114424161A (zh) * 2019-09-20 2022-04-29 华为技术有限公司 一种乘法器
EP3798893B1 (en) * 2019-09-26 2022-12-14 Rambus Inc. Side-channel attack protected gates having low-latency and reduced complexity
RU2744815C1 (ru) * 2020-06-22 2021-03-16 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Устройство для перевода чисел из системы остаточных классов и расширения оснований
US12118060B2 (en) * 2021-12-08 2024-10-15 Tenstorrent Inc. Computational circuit with hierarchical accumulator
US12165041B2 (en) 2022-06-09 2024-12-10 Recogni Inc. Low power hardware architecture for handling accumulation overflows in a convolution operation
CN119512501A (zh) * 2024-11-01 2025-02-25 杭州电子科技大学 一种基于基-4Booth编码和改进Wallace压缩树的乘法器

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60164868A (ja) * 1984-02-06 1985-08-27 Sony Corp 高速フ−リエ変換装置
JPS62233894A (ja) * 1986-04-04 1987-10-14 Fuji Electric Co Ltd ずらし類似度演算装置
JPS62260280A (ja) * 1986-05-07 1987-11-12 Sony Corp 演算処理装置
JPS62284510A (ja) * 1986-03-10 1987-12-10 ゾ−ラン コ−ポレ−シヨン 移動係数を用いた縦続接続可能なデジタルフイルタプロセツサ
JPS6326716A (ja) * 1986-07-18 1988-02-04 Nec Ic Microcomput Syst Ltd 中央処理装置
JPH01126819A (ja) * 1987-11-12 1989-05-18 Matsushita Electric Ind Co Ltd ディジタル信号処理装置
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
JPH02173871A (ja) * 1988-12-27 1990-07-05 Casio Comput Co Ltd バタフライ演算装置
JPH03211604A (ja) * 1990-01-17 1991-09-17 Nec Corp ディジタル信号処理装置
JPH0498903A (ja) * 1990-08-16 1992-03-31 Nec Corp 信号処理装置
JPH04307662A (ja) * 1991-04-05 1992-10-29 Nec Corp 離散コサイン変換装置および逆離散コサイン変換装置
JPH10171778A (ja) * 1996-12-13 1998-06-26 Nec Corp ブロックiirプロセッサ

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0738217B2 (ja) * 1985-04-18 1995-04-26 ファナック株式会社 空間積和演算装置
JPS61241879A (ja) * 1985-04-18 1986-10-28 Fanuc Ltd 空間積和演算装置
US4876660A (en) * 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JPH01267728A (ja) * 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
JPH10207859A (ja) * 1989-12-15 1998-08-07 Hitachi Ltd 消費電力制御方法,半導体集積回路装置およびマイクロプロセッサ
JPH04127210A (ja) * 1990-09-19 1992-04-28 Hitachi Ltd 低消費電力プロセッサ
JP3139137B2 (ja) * 1992-06-25 2001-02-26 日本電気株式会社 ディジタルフィルタ処理のフィルタ演算を行うディジタル信号処理回路
JP3305406B2 (ja) * 1993-04-26 2002-07-22 松下電器産業株式会社 プログラム制御のプロセッサ
JP3618109B2 (ja) * 1993-07-02 2005-02-09 株式会社ソニー・コンピュータエンタテインメント 中央演算処理装置
JPH0876973A (ja) * 1994-09-07 1996-03-22 Sanyo Electric Co Ltd 演算処理装置及び拡張演算装置
JPH08180040A (ja) * 1994-12-26 1996-07-12 Sony Corp ディジタル信号処理装置
JP3649478B2 (ja) * 1995-07-20 2005-05-18 株式会社ソニー・コンピュータエンタテインメント 画像情報処理装置及び画像情報処理方法
EP0806722A1 (en) * 1996-05-06 1997-11-12 Motorola, Inc. Method and apparatus for a multiply and accumulate circuit having a dynamic saturation range
US5933797A (en) * 1997-02-28 1999-08-03 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive dual filter echo cancellation

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60164868A (ja) * 1984-02-06 1985-08-27 Sony Corp 高速フ−リエ変換装置
JPS62284510A (ja) * 1986-03-10 1987-12-10 ゾ−ラン コ−ポレ−シヨン 移動係数を用いた縦続接続可能なデジタルフイルタプロセツサ
JPS62233894A (ja) * 1986-04-04 1987-10-14 Fuji Electric Co Ltd ずらし類似度演算装置
JPS62260280A (ja) * 1986-05-07 1987-11-12 Sony Corp 演算処理装置
JPS6326716A (ja) * 1986-07-18 1988-02-04 Nec Ic Microcomput Syst Ltd 中央処理装置
JPH01126819A (ja) * 1987-11-12 1989-05-18 Matsushita Electric Ind Co Ltd ディジタル信号処理装置
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
JPH02173871A (ja) * 1988-12-27 1990-07-05 Casio Comput Co Ltd バタフライ演算装置
JPH03211604A (ja) * 1990-01-17 1991-09-17 Nec Corp ディジタル信号処理装置
JPH0498903A (ja) * 1990-08-16 1992-03-31 Nec Corp 信号処理装置
JPH04307662A (ja) * 1991-04-05 1992-10-29 Nec Corp 離散コサイン変換装置および逆離散コサイン変換装置
JPH10171778A (ja) * 1996-12-13 1998-06-26 Nec Corp ブロックiirプロセッサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020507154A (ja) * 2017-01-23 2020-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 回路、システム、および組合せ結果を演算するように再設定可能な複数の再設定可能ユニットを備えたプロセッサにより実装される方法
US11327718B2 (en) 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations

Also Published As

Publication number Publication date
EP0992885A1 (en) 2000-04-12
JP5273866B2 (ja) 2013-08-28
JP2000215028A (ja) 2000-08-04
EP0992885B1 (en) 2005-12-28
DE69832985T2 (de) 2006-08-17
DE69832985D1 (de) 2006-02-02

Similar Documents

Publication Publication Date Title
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US6571268B1 (en) Multiplier accumulator circuits
US7047272B2 (en) Rounding mechanisms in processors
US5790446A (en) Floating point multiplier with reduced critical paths using delay matching techniques
US7774400B2 (en) Method and system for performing calculation operations and a device
US6009451A (en) Method for generating barrel shifter result flags directly from input data
US7395304B2 (en) Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic
US6381625B2 (en) Method and apparatus for calculating a power of an operand
EP0847551B1 (en) A set of instructions for operating on packed data
US8341204B2 (en) Vector SIMD processor
CN101221490B (zh) 一种具有数据前送结构的浮点乘加单元
US5892698A (en) 2's complement floating-point multiply accumulate unit
Bruguera et al. Floating-point fused multiply-add: reduced latency for floating-point addition
US5633819A (en) Inexact leading-one/leading-zero prediction integrated with a floating-point adder
Danysh et al. Architecture and implementation of a vector/SIMD multiply-accumulate unit
WO2011137209A1 (en) Operand-optimized asynchronous floating-point units and methods of use thereof
JPH08212058A (ja) 加算オーバフロ検出回路
Pineiro et al. High-radix logarithm with selection by rounding
US6826588B2 (en) Method and apparatus for a fast comparison in redundant form arithmetic
Isseven et al. A dual-mode quadruple precision floating-point divider
US6615228B1 (en) Selection based rounding system and method for floating point operations
EP1031073A2 (en) A method and apparatus for multi-function arithmetic
JPH04172526A (ja) 浮動小数点除算器
Grossschadl et al. A single-cycle (32/spl times/32+ 32+ 64)-bit multiply/accumulate unit for digital signal processing and public-key cryptography
EP0992883B1 (en) Rounding mechanism

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120113

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120120

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130513

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5273866

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term