DE69832985T2 - Multiplizier-Akkumulatorschaltungen - Google Patents

Multiplizier-Akkumulatorschaltungen Download PDF

Info

Publication number
DE69832985T2
DE69832985T2 DE1998632985 DE69832985T DE69832985T2 DE 69832985 T2 DE69832985 T2 DE 69832985T2 DE 1998632985 DE1998632985 DE 1998632985 DE 69832985 T DE69832985 T DE 69832985T DE 69832985 T2 DE69832985 T2 DE 69832985T2
Authority
DE
Germany
Prior art keywords
bit
input
unit
gate
multiply
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.)
Expired - Lifetime
Application number
DE1998632985
Other languages
English (en)
Other versions
DE69832985D1 (de
Inventor
Jean-Pierre Giacalone
Francis 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
Application granted granted Critical
Publication of DE69832985D1 publication Critical patent/DE69832985D1/de
Publication of DE69832985T2 publication Critical patent/DE69832985T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich allgemein auf Multiplizierer- und Multiplizierer/Akkumulator-Schaltungen und insbesondere auf verbesserte Multiplizierer- und Multiplizierer/Akkumulator-Schaltungen, die einen modifizierten Booth-Algorithmus sowie Wallace-Baum-Techniken implementieren.
  • HINTERGRUND DER ERFINDUNG
  • Die binäre Multiplikation ist in vielen digitalen Signalverarbeitungsanwendungen eine wichtige Funktion. Einige Anwendungen erfordern ferner das arithmetische Kombinieren eines Produkts mit den Ergebnissen früherer Operationen (z. B. das Bilden einer Summe von Produkten). Eine vielseitige Multipliziererschaltung muss die Fähigkeit haben, diese Funktionen entweder in einer Zweierkomplementnotation oder in einer vorzeichenlosen Betragsnotation auszuführen.
  • Binärzahlen werden sehr ähnlich wie Dezimalzahlen multipliziert. Insbesondere wird jede Ziffer eines Operanden (Multiplikand) mit jeder Ziffer des anderen Operanden (Multiplikator) multipliziert, um Partialprodukte zu bilden, woraufhin diese resultierenden Partialprodukte unter Berücksichtigung der Stellenwertigkeit der Ziffernstelle des Multiplikators addiert werden.
  • Schaltungen zum Multiplizieren von Binärzahlen erfordern eine verhältnismäßig große Anzahl von Schaltungselementen und nehmen somit einen ziemlichen Betrag an Chipfläche in Anspruch, wenn sie in einer integrierten Schaltung hergestellt werden. Aus diesem Grund ist es ein andauerndes Ziel der Entwickler integrierter Schaltungen, nach Möglichkeiten zu suchen, eine Multipliziererschaltung mit immer weniger Schaltungselementen zu implementieren.
  • Im Gebiet sind viele Techniken bekannt, um die zum Ausführen einer Binärmultiplikation erforderliche Zeit zu reduzieren. Zum Beispiel sind verschiedene Codierungsverfahren konstruiert worden, die die Anzahl der Partialprodukte reduzieren, die addiert werden müssen, um das endgültige Produkt zu bilden, und um die Addition der Partialprodukte zu beschleunigen. Siehe z. B. "A suggestion for a fast Multiplier", C. S. Wallace, IEEE Trans. on Electr. Computers, 1964, und "A Signed Binary Multiplication Technique", Andrew D. Booth, Quart. Journal Mech. and Applied Math., Bd. IV, Teil 2, 1951. Der in der Abhandlung von Booth beschriebene modifizierte Booth-Algorithmus ist in umfassendem Gebrauch und wird häufig in digitalen Multiplizierern verwendet, die in einer integrierten Schaltung verwendet werden.
  • Ausführlicher codiert die so genannte modifizierte Booth-Codierungstechnik eine der zwei Zahlen, die multipliziert werden. Dieser Ansatz reduziert die Anzahl der durch den Multiplizierer erzeugten Partialprodukte normalerweise um einen Faktor zwei, wodurch die Menge der Schaltungsanordnung reduziert wird, die benötigt wird, um die Partialprodukte beim Erreichen des endgültigen Produkts zu kombinieren. Leider wirkt sich die Tatsache, dass vorzeichenbehaftete Binärzahlen – wenigstens, wenn sie arithmetisch bearbeitet werden – typisch unter Verwendung einer Zweierkomplementnotation dargestellt werden, wegen der Notwendigkeit, eine so genannte Vorzeichenbiterweiterung der Partialprodukte auszuführen, bevor sie kombiniert werden können, erheblich auf den oben beschriebenen Vorteil der modifizierten Booth-Codierung aus.
  • Das US-Patent Nummer 5.038.315 an Rao beschreibt eine Möglichkeit, die Notwendigkeit zum Ausführen der Vorzeichenerweiterung zum Kombinieren der Partialprodukte zu beseitigen, indem der durch die Vorzeichenbits aller Partialprodukte dargestellte Wert als eine Zweierkomplementzahl dargestellt wird. In der Partialproduktaddition werden dann eher als die ursprünglichen Vorzeichenbits die Bits dieser Zahl- die als das "Vorzeichen-Bitwert"-Wort bezeichnet wird – verwendet. Da (wie bei allen Zweierkomplementzahlen) sichergestellt ist, dass alle Bits des Vorzeichen-Bitwert-Worts (mit Ausnahme des ganz linken) eine positive Wertigkeit haben, können daraufhin die Ziffern der Partialprodukte direkt ohne die Notwendigkeit einer Vorzeichenbiterweiterung addiert werden. Die Implementierung dieses Ansatzes erfordert erheblich weniger Schaltungsfläche – soviel wie 20 Prozent weniger – als zuvor bekannte Multiplizierer.
  • Außerdem sind Versuche unternommen worden, die Summation der Partialprodukte zu beschleunigen. Im US-Patent Nr. 4.545.028 an Ware ist das Addiererfeld in Blöcke geteilt, so dass verschiedene Blöcke verschiedene Teile der Addition parallel ausführen können, obgleich die gesamte Addition in jedem Block in durchlaufender (Ripple-) Art erfolgen kann. Der erste Block kann nur vier Partialprodukte enthalten und die verbleibenden Blöcke müssen an eine arithmetische Progression angepasst sein, so dass die Überträge von einem Block erscheinen, wenn sie von dem nächsten Block benötigt werden.
  • Außerdem kann die Summation unter Verwendung von Carry-Look-Ahead-Addierern beschleunigt werden. Die Fortpflanzung von Überträgen durch eine sequentielle Reihe von Addiererstufen in durchlaufender Weise erfordert in Abhängigkeit von der größeren Anzahl von Bits in den Addenden eine größere Zeitdauer. In einem Carry-Look-Ahead-Addierer schafft eine Logikschaltungsanordnung eher eine gleichzeitige Übertragsfortpflanzung als eine sequentielle. Allerdings ist die Bitgröße (oder die Anzahl der Bits) eines Carry-Look-Ahead-Addierers begrenzt, da die Schaltungskomplexität, die Gatteranzahl und die Chipfläche schnell zunehmen, während die Bitgröße zunimmt.
  • Schaltungen, die zwei Zahlen multiplizieren und das resultierende Produkt mit einer dritten Zahl summieren oder akkumulieren, werden bei der Signalverarbeitung und bei digitalen Signalprozessoren (DSPs) umfassend verwendet. Eine typische Anwendung eines Multiplizierers/Akkumulators ist die Implementierung eines digitalen Signalfilters mit endlicher Impulsantwort (FIR), das N Produkte summiert, um einen Abtastwert zu einer vorgegebenen Zeit zu erhalten, wobei N eine ganze Zahl ist. Ein Hauptziel bei der Ausführung von Multiplikationen und Akkumulationen ist es, die mathematische Berechnung so schnell wie möglich auszuführen. Allerdings umfasst eine Zunahme der Geschwindigkeit typisch eine Zunahme der Menge an Schaltungsanordnung und eine entsprechende Zunahme der Unregelmäßigkeit der Struktur.
  • Es sind verschiedene Versuche unternommen worden, die Geschwindigkeit eines Feldmultiplizierers zu erhöhen. Stylianos Pezaris lehrt in einem Artikel mit dem Titel "A 40-ns 17-Bit by 17-Bit Array Multiplier" in IEEE Transactions on Computers, Bd. C-20, Nr. 4, April 1971, S. 442–447, die Reduzierung der Fortpflanzung von Summensignalen in einem Feldmultiplizierer. Bei einem herkömmlichen Multiplizierer sind N Addiererzeilen erforderlich, damit ein N-Bit-mal-N-Bit-Multiplizierer eine Multiplikation in einem herkömmlichen übertragserhaltenden Schema implementiert.
  • Andere haben sowohl Summen- als auch Übertragssignale über abwechselnde Addiererzeilen in einem Multipliziererfeld übersprungen, wie es von Iwamura u. a. in "A 16-Bit CMOS/SOS Multiplier-Accumulator" in IEEE International Conference on Circuits and Computers, 29. Sept. 1982, S. 151–154, gelehrt ist. Iwamura u. a. beschrieben einen Multiplizierer, der eine Zeilenüberspringtechnik von Übertrags- und Summensignalen nutzt. Wegen der komplizierten Zwischenverbindungen und der Irregularität der Struktur, die anderen Verfahren wie etwa dem Wallace-Baum-Verfahren oder dem Booth-Verfahren zugeordnet sind, wird die Überspringtechnik eher mit einem herkömmlichen Feldmultiplizierer als mit diesen anderen Verfahren verwendet. Allerdings wird das Feld durch das Überspringen von Übertrags- und Summensignalen über die nächste Zeile effektiv in zwei getrennte Felder geteilt, von denen jedes eine Summen- und eine Übertragungsakkumulation liefert. An der Unterseite des Felds sind zwei Kombinationszeilen von Addierern (von Iwamura u. a. nicht gezeigt) erforderlich. Die Kombinationszeilen reduzieren die vier Ausgaben (zwei Summen und zwei Überträge) der zwei getrennten Akkumulatorwege auf zwei Ausgaben (eine Summe und einen Übertrag) für die Übertragsfortpflanzung in eine letzte Zeile. Um das Ausgangsprodukt zu liefern, ist eine letzte Zeile von Carry-Look-Ahead-Addierern erforderlich.
  • Das US-Patent 5.504.915 an Rarick schafft einen modifizierten Wallace-Baum-Addierer zur Verwendung in einem Binärmultiplizierer.
  • Weitere Ansätze zu Multiplizierer-Akkumulator-Schaltungen werden durch das US-Patent Nr. 4.575.812 an Kloker u. a., durch das US-Patent Nr. 4.876.660 an Owen u. a. und durch das US-Patent Nr. 4.831.577 an Wei u. a. geschaffen.
  • Die europäische Patentanmeldung Veröffentlichungsnummer EPO 806 722 schafft ein Verfahren und eine Vorrichtung für eine Multiplikations- und Akkumulationsschaltung mit einem dynamischen Sättigungsbereich. Die Sättigungsverarbeitung wird durch eine Sättigungsverarbeitungslogik ausgeführt, die bereitgestellt wird, um ein Ergebnis von der Multiplikations- und Akkumulationsschaltung zu verarbeiten. Die internationale Patentanmeldung Veröffentlichungsnummer WO 98/38582 beschreibt einen digitalen Signalprozessor für Echokompensationsberechnungen, wobei der digitale Signalprozessor mehrere Multiplizierer und Akkumulatoren besitzt. Die europäische Patentanmeldung Veröffentlichungsnummer EP 0 377 837 beschreibt eine Gleitkommaeinheit mit gleichzeitigen Multiplikations- und Additionsfunktionen.
  • Die japanische Patentanmeldung JP-A-1267728 offenbart einen Multiplizierer, dessen Zweck es ist, eine Überlaufverarbeitung mit hoher Geschwindigkeit mit einer einfachen Schaltungsanordnung dadurch auszuführen, dass eine Logikoperation von zu codierenden Daten derart ausgeführt wird, dass die Daten eines Multiplikationsergebnisses zu einem Maximalwert gemacht werden können, wenn die multiplizierten Daten und die Multiplikatordaten beide –1 sind.
  • Das US-Patent Nr. 4.771.379 an Ando u. a. schafft einen digitalen Signalprozessor mit parallelen Multiplizierern.
  • Dementsprechend ist es ein Hauptaspekt der vorliegenden Erfindung, eine Schaltung und ein Verfahren zur schnellen Erzeugung einer parallelen Summation von Partialprodukten mit minimaler Leistung, minimaler Komplexität und minimalem Platz in einer integrierten Schaltung zu schaffen.
  • Es ist ein weiterer Aspekt der vorliegenden Erfindung, eine verbesserte schnelle Multiplizierer-Akkumulator-Architektur zu schaffen, die so beschaffen ist, dass sie eine Akkumulation liefert, und so beschaffen ist, dass sie entweder vorzeichenbehaftete oder vorzeichenlose Werte behandelt.
  • Es ist ein abermals weiterer Aspekt der vorliegenden Erfindung, eine schnelle Binärmultiplikation mit einer parallelen Addiererarchitektur zu schaffen, die mit der Standard-IC-Technologie implementiert werden kann.
  • Außerdem ist es ein Aspekt der vorliegenden Erfindung, eine Schaltung zu schaffen, die für eine verbesserte Multiplikations- und Arithmetikverarbeitung eine Mehrzahl von Multiplizierer-Akkumulatoren verwendet.
  • Es ist ein weiterer Aspekt der vorliegenden Erfindung, eine verbesserte schnelle Multipliziererschaltung zum Multiplizieren zweier Zahlen oder zum Multiplizieren zweier Zahlen und arithmetischen Kombinieren des Ergebnisses mit einer dritten Zahl zu schaffen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung schafft ein digitales System, das eine Multiplikations-Akkumulations-Einheit besitzt, wobei die Multiplikations-Akkumulations-Einheit umfasst: einen ersten Eingang für einen ersten binären Operanden; einen zweiten Eingang für einen zweiten binären Operanden; einen dritten Eingang für einen dritten binären Operanden; eine Booth-Recode-Logik zum Erzeugen mehrerer Partialprodukte aus dem ersten und dem zweiten Operanden, um ein binäres Ergebnis zu erzeugen; einen Wallace-Baum-Addierer zum Reduzieren der Partialprodukte und zum wahlweisen arithmetischen Kombinieren der reduzierten Partialprodukte mit dem dritten Operanden, um ein endgültiges Partialprodukt zu schaffen, einen letzten Addierer, der so betreibbar ist, dass er einen Bit-Ausgang des Wallace-Baum-Addierers und einen Abschnitt vom dritten Eingang empfängt, um eine endgültige Summe zu erzeugen; eine Sättigungsschaltungsanordnung zum wahlweisen Runden oder Sättigen der endgültigen Summe; und eine Decodiererschaltung, die so angeschlossen ist, dass sie den ersten binären Operanden und den zweiten binären Operanden empfängt, und einen Ausgang besitzt, der mit dem Wallace-Baum-Addierer verbunden ist, wobei die Decodierungsschaltung so betreibbar ist, dass sie erfasst, dass der erste binäre Operand gleich dem Hexadezimalwert x18000 ist und der zweite binäre Operand gleich dem Hexadezimalwert x18000 ist, wobei diese Bedingung einem speziellen Fall einer GSM-Sättigung entspricht; und wobei eine Schaltung für das erste Bit einer ersten Stufe des Wallace-Baum-Addierers von dem ersten Bit der Booth-Decodierungslogik, das in Reaktion auf den Ausgang der Decodierungsschaltung geändert wird, eine Übertrageingabe enthält, um ein geändertes endgültiges Partialprodukt zu bilden, wenn der spezielle Fall einer GSM-Sättigung erfasst wird.
  • Diese Erfindung ist in Anspruch 1 definiert, während in den abhängigen Ansprüchen weitere Ausführungsformen der Erfindung angegeben sind.
  • Diese Aspekte und Vorteile der vorliegenden Erfindung werden klarer aus der folgenden ausführlichen Beschreibung, wenn sie in Verbindung mit der beigefügten Zeichnung genommen wird.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Die Erfindung wird besser verständlich, wenn die folgende ausführliche Beschreibung gelesen wird, die lediglich als ein Beispiel gegeben wird und anhand der beigefügten Zeichnung erfolgt, in der:
  • 1 einen höheren Funktionsblockschaltplan der Multiplizierer/Akkumulator-Struktur (MAC-Struktur) der vorliegenden Erfindung zeigt;
  • 2 einen ausführlicheren Funktionsblockschaltplan für den MAC aus 1 zeigt;
  • 3A eine Implementierung auf der Gatterebene für einen Standard-Booth-Codierer zeigt, der eine Additions/Subtraktions-Funktion (A/S-Funktion) enthält;
  • 3B und 3C modifizierte Booth-Codiererschaltungen auf der Gatterebene für die erste bzw. für die letzte Stufe zeigen, die ebenfalls eine Additions/Subtraktions-Funktion (A/S-Funktion) enthalten;
  • 4A und 4B eine Implementierung auf der Gatterebene für eine Booth-Auswahlstufenschaltung mit bzw. ohne Vorzeichenerweiterung zeigen;
  • 4C und 4D eine Implementierung auf der Gatterebene für eine letzte Booth-Auswahlstufenschaltung mit bzw. ohne Vorzeichenerweiterung zeigen;
  • 5 die Ausrichtungen von Partialprodukten und ihre Reduzierung unter Verwendung mehrerer Stufen von Wallace-Kompressoren zeigt;
  • 6 eine Implementierung auf der Gatterebene für eine 4:2-Wallace-Kompressorzelle zeigt;
  • 7A eine repräsentative Schaltung auf der Gatterebene für die Decodierung und Steuerung der GSM-, der Sättigungs- und der Bruchbetriebsart zeigt;
  • 7B einen Funktionsblockschaltplan zur Implementierung einer Bruchbetriebsart zeigt;
  • 8 das Verzögerungsankunftprofil für Partialproduktreduzierungen hinsichtlich elementarer Volladdiererverzögerungen und einen Funktionsblockschaltplan für die letzte Addiererstruktur zeigt;
  • 9 ein 3:2-Kompressornetz zeigt, das für die arithmetische Kombination von Bits der dritter Zahlen mit Erweiterungsbits für die Vorzeichenerweiterung verwendet wird, bevor zu dem letzten Addierer gegangen wird;
  • 10 die Null-Ergebnis-Vorausberechnungs-Zustandsmaschine (ZRA-Zustandsmaschine) und die in dem MAC aus 1 verwendeten Gleichungen zeigt;
  • 11 einen Blockschaltplan eines repräsentativen Beispiels der Null-Erfassung für ein Fünf-Bit-Addiererfeld zeigt;
  • 11A eine schematische Darstellung eines ersten Zellentyps des Felds aus 11 zeigt;
  • 11B eine schematische Darstellung eines zweiten Zellentyps des Felds aus 11 zeigt;
  • 12 eine Implementierung auf der Gatterebene für den ersten Zellentyp aus 11A zeigt;
  • 13 eine Implementierung auf der Gatterebene für den zweiten Zellentyp aus 11B zeigt;
  • 14 einen schematischen Blockschaltplan eines repräsentativen Beispiels einer Null-Erfassungsschaltung zeigt;
  • 15 einen schematischen Blockschaltplan zeigt, der eine Implementierung eines Null-Erfassungsschemas in dem MAC aus 1 veranschaulicht;
  • 16 eine Implementierung auf der Gatterebene zur Erfassung einer 32-Bit-Sättigung zeigt;
  • 17A, 17B und 17C Sättigungssteuerzellen für die Bitstellen 39 bis 17, 15 bis null und 16 zeigen;
  • 18A, 18B und 18C zeigen, wann eine Rundung ohne systematische Abweichung benötigt wird bzw. ihre Ergebnisse in zwei Fällen;
  • 19A eine Implementierung auf der Gatterebene zur Erfassung eines 40-Bit-Überlaufs zeigt;
  • 19B allgemeine Logikgleichungen für die Erfassung eines 40-Bit-Überlaufs zeigt;
  • 20 einen höheren Funktionsblockschaltplan einer MAC-Einheit der vorliegenden Erfindung zeigt, die die Signale, die dem MAC als Eingaben zugeführt werden, und die Signale, die durch den MAC als Ausgaben geliefert werden, zeigt;
  • 21 einen vereinfachten Blockschaltplan der MAC-Einheit 100 der vorliegenden Erfindung zeigt, die mit verschiedenen Bussen für Datenquellen und Datenziele verbunden ist;
  • 22 einen vereinfachten Blockschaltplan der derzeit bevorzugten Akkumulatorregister und ihrer Verbindungen mit einem Abschnitt der Busstruktur aus 21 zeigt;
  • 23 einen vereinfachten Blockschaltplan zeigt, der die Bus-, Speicher- und Registernutzung durch eine MAC-Einheit der vorliegenden Erfindung zeigt;
  • 24 einen vereinfachten Blockschaltplan zeigt, der die Bus-, Speicher- und Registernutzung durch eine duale MAC-Einheit der vorliegenden Erfindung zeigt;
  • 25 einen vereinfachten Blockschaltplan zeigt, der die Busverbindungen für eine derzeit bevorzugte duale MAC-Anordnung der vorliegenden Erfindung zeigt;
  • 26 einen DSP zeigt, der die duale MAC-Einheit der vorliegenden Erfindung nutzt;
  • 27 den DSP aus 26 mit hervorgehobenen Datenwegen für einen Befehl des dualen MAC zeigt.
  • Soweit nichts anderes angegeben ist, beziehen sich die entsprechenden Bezugszeichen und Symbole in den verschiedenen Figuren und Tabellen auf entsprechende Teile.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Obgleich sich die Schaltungen und Techniken der vorliegenden Erfindung für die Verwendung mit vielen verschiedenen Typen einer digitalen Verarbeitungsschaltungsanordnung eignen, erfolgt die Diskussion hier in Bezug auf eine Implementierung in digitalen Signalprozessoren (DSPs). Der Fachmann auf dem Ge biet erkennt nach Durchsicht dieser Beschreibung, dass die Schaltungen und Techniken der vorliegenden Erfindung mit anderen Prozessortypen verwendet werden können und andere Typen einer digitalen Verarbeitungsschaltungsanordnung nutzen können.
  • Das andauernde Ziel der Konstrukteure integrierter Schaltungen ist es, Möglichkeiten zu suchen, eine schnellere Multipliziererschaltung mit immer weniger Schaltungselementen zu implementieren. Die zwei Hauptstrategien, die zur Verbesserung der Multipliziererleistung verwendet werden, sind die Reduzierung der Anzahl der zu addierenden Partialprodukte und die Beschleunigung der Akkumulation der Partialprodukte. Die Multipliziererschaltungen der vorliegenden Erfindung verwenden beide Strategien.
  • Die folgende Anfangsdiskussion spezifiziert die Architekturstruktur und ausgewählte Schaltungen für eine derzeit bevorzugte 17-Bit-mal-l7-Bit-(17 × 17-)Multiplizierer/Akkumulator-(MAC-)Einheit mit Akkumulation für 40 Bits. Vorzugsweise führt die Multiplizierer/Akkumulator-Einheit ihre Funktionen in einem Taktzyklus aus. Die Anfangsdiskussion behandelt keine Schnittstellen mit einem DSP-Kernbussystem. Die Anfangsdiskussionen behandeln die Architekturdefinition, eine gewisse Teilblockanalyse und die Spezifikation einiger spezifischer Schaltungen. 1 zeigt einen höheren Funktionsblockschaltplan der derzeit bevorzugten MAC-Einheit 100 der vorliegenden Erfindung. Zur Erleichterung der Darstellung sind auf dieser hohen Ebene einige der Signale in dem Blockschaltplan aus 1 in Funktionsweise gezeigt, wobei aber hier später genauere Beschreibungen ihrer Verbindungen gegeben werden.
  • Die Operanden X und Y sind mehrere parallele Biteingaben in die Multiplizierer/Akkumulator-Einheit 100. Die Multiplizierer/Akkumulator-Einheit 100 gibt ein Ergebnis aus, das wahlweise ein Produkt einer Multiplikation, ein arithmetisches Ergebnis der Kombination des Multiplikationsprodukts mit einer dritten Zahl, ein gerundetes Produkt oder Ergebnis oder ein vorgegebener Sättigungswert ist. Für einen 17 × 17-Multiplizierer enthält dieses Ergebnis 32 parallele Bits aus sechzehn niedrigstwertigen Bits (lsbs) und sechzehn Bits von höchstwertigen Bits (msbs), die jeweils von den niedrigstwertigen zu den höchstwertigen Bits geordnet sind. Wenn das Produkt von der Multiplikation arithmetisch mit einer dritten Zahl kombiniert wird, kann diese dritte Zahl der Inhalt eines Akkumulators sein. Die Operation der Multiplizierer/Akkumulator-Einheit 100 wird durch eine Mehrzahl von Steuersignalen gesteuert, die durch verschiedene Befehle geliefert werden, die von dem DSP-Kern (oder von einem anderen CPU-Kern) genutzt werden, in dem sich die Multiplizierer/Akkumulator-Schaltungsanordnung 100 befindet.
  • Wie 1 zeigt, besteht die Architektur 100 der Multiplizierer/Akkumulator-Einheit (MAC-Einheit) aus den folgenden hintereinander geschalteten Funktionsstufen (oder -blöcken):
    einer Partialprodukte-Erzeugungsstufe 120 mit einem Bruchbetriebsartblock (nicht gezeigt) unter der Steuerung eines Bruchbetriebsart-Steuersignals 122, die die zwei 17-Bit-Binäroperandeneingaben 104 und 102, Yin bzw. Xin, empfängt und daraufhin mehrere Partialprodukte (PP) erzeugt, die der nächsten Stufe 130 zugeführt werden;
    einem Partialprodukt-Summationsbaum 130, der die mehreren Partialprodukte als eine Eingabe empfängt und eine 34-Bit-Ausgabe 134 liefert, wobei gemäß der Steuerung eines Rundungssteuersignals 132 eine Rundung angewendet werden kann (eine binäre Gewichtung von 215 addiert werden kann), während je nach dem Wert der zwei Eingaben 102, 104 und eines im Voraus gewählten Steuersignals 132 eine Sättigung "erzwungen" werden kann (in 1 durch die "8000 × 8000-Sättigung" repräsentiert) und wo ein Abschnitt einer dritten Zahl 142, Ain, die zu addieren oder zu subtrahieren ist, als eine Eingabe zugeführt wird (in 1 nicht gezeigt);
    einer letzten 40-Bit-Addiererstufe 140, die die 34-Bit-Ausgabe 134 des Summationsbaums 130 und einen Abschnitt der dritten Zahl 142, Ain, empfängt und einen endgültigen arithmetischen Wert oder eine endgültige arithmetische Zahl bestimmt, wobei sie eine geeignete Null- und Überlauferfassung 144 mit einer geeigneten Angabe des Auftretens dieser Bedingungen enthält; und
    einer letzten Sättigungsstufe 150, die den endgültigen arithmetischen Wert oder die endgültige arithmetische Zahl von dem Addierer 140 für 32 Bits wahlweise entweder auf "0x007fffffff" (Überlauf) oder auf "0xff80000000" (Unterlauf) oder für 40 Bits entweder auf "0x7ffffffffff" (Überlauf) oder auf "0x8000000000" (Unterlauf) sättigt. Die letzte Sättigungsstufe 150 liefert das Löschen der 16 lsbs auf null, wenn ein Rundungssteuersignal 152 aktiv ist, wenn z. B. ein Runden spezifiziert ist. Die letzte Sättigungsstufe 150 liefert eine 40-Bit-Ausgabe 154, die vorzugsweise in einem Akkumulator (in 1 nicht gezeigt) gespeichert wird. Von einer (in 1 nicht gezeigten) Befehlsdecodierungseinheit werden verschiedene hier diskutierte Steuersignale 122, 132, 146, 152 geliefert und zur Steuerung des Betriebs der MAC-Einheit 100 der vorliegenden Erfindung verwendet.
  • Die von der derzeit bevorzugten MAC-Struktur 100 aus 1 ausgeführten Funktionen sind: 1) Multiplikation von zwei 17-Bit-Zahlen (oder Operanden) 102, 104, die als MPY[R] Yin·Xin[+215] repräsentiert wird, wobei Yin 104 und Xin 102 17-Bit-Operanden sind, die vorzeichenbehaftet oder vorzeichenlos sein können; 2) Multiplikation von zwei 17-Bit-Zahlen 102, 104 und Addieren ihres Produkts zu einer dritten Zahl 142, was als MAC[R] Ain + Yin·Xin[+215] dargestellt wird, wobei Ain 142 ein 40-Bit-Wert oder eine 40-Bit-Zahl von einem Akkumulator (oder von einer anderen Quelle) ist; und 3) Multiplikation von zwei 17-Bit-Zahlen 102, 104 und Subtrahieren ihres Produkts von einer dritten Zahl 142, dargestellt als MAS[R] Ain – Yin·Xin[+215]. Das [R] gibt für alle drei Funktionen einen Rundungsoperator an, der zu dem Produkt oder zu der resultierenden arithmetischen Zahl [+215] addiert.
  • 2 zeigt einen ausführlichen Funktionsblockschaltplan der derzeit bevorzugten MAC-Einheit 100 der vorliegenden Erfindung. Die Teilblöcke und einige der spezifischen Schaltungen, die in diesen verschiedenen Teilblöcken verwendet werden, werden hier später diskutiert.
  • Die (hier früher angeführten) Veröffentlichungen von Booth und Wallace haben gezeigt, dass die Partialprodukterzeugung sowohl für die Leistung als auch für die Geschwindigkeit die Booth-Codierung verwenden könnte, während der Summenreduzierungsprozess die Wallace-Baum-Schemata verwenden könnte. In der MAC-Einheit der vorliegenden Erfindung werden eine Radix-4-Booth-Codierung und ein Wallace-3:2- und Wallace-4:2-gestütztes Kompressorreduzierungsnetz genutzt, was der beste Kompromiss ist, der beide Techniken nutzt.
  • Wie nun in 2 zu sehen ist, ist die MAC-Einheit 100 der vorliegenden Erfindung aus mehreren verschiedenen Funktionsteilblöcken 120, 130, 140, 150 konstruiert, die anhand von 1 beschrieben worden sind. Weiter ist anhand von 2 zu sehen, dass der Operand (Xin) 102 als eine Eingabe in einen Bruchbetriebsartblock oder in eine Bruchbetriebsartstufe 126a geliefert wird. Die Bits des Eingangsoperanden sind in 2 entlang der Oberseite der Bruchbetriebsartstufe 126a von rechts (null) nach links (17) von null bis 17 angeordnet. Die Bruchbetriebsartstufe 126a wird hier später umfassender beschrieben und wird durch ein Bruchbetriebsart-Steuersignal 122a gesteuert. Der Bruchbetriebsartblock 126a liefert seine Ausgabe als die Eingabe in den ersten der mehreren hintereinander geschalteten Booth-Auswahlblöcke oder -Auswahlstufen 126b126j. Jede der Booth-Auswahlstufen 126b126j ist aus mehreren Booth-Auswahlschaltungen, grundsätzlich einer Schaltung pro Bitstelle, gebildet, die hier später umfassender beschrieben werden, wobei die Stufen von einer Ebene zur nächsten um zwei Bitstellen versetzt sind (deshalb die Treppenstufenerscheinung in 2). Außerdem ist zu sehen, dass der zweite Operand (Yin) 104 als eine Eingabe in eine Reihe von Booth-Codiererblöcken oder -Codiererstufen 124a124i geliefert wird, die mit den entsprechenden Booth-Auswahlstufen 126b126j verbunden sind. Die Bits des Eingangsoperanden sind entlang des linken Rands der Codiererstufen 124a124i von oben (Bitstelle null) 124a nach unten (Bitstelle 17) 124i von null bis 17 angeordnet. Außerdem wird an die Booth-Codiererstufen 124a124i ein Additions/Subtraktions-Signal 122b geliefert. Die Booth-Codiererstufen 124a124i werden hier später umfassender beschrieben. Somit ist die Partialprodukte-Erzeugungsstufe 120 aus 1 aus der Bruchbetriebsartstufe 126a, aus mehreren hintereinander geschalteten Booth-Auswahlstufen 126b126j und aus mehreren Booth-Codiererstufen 124a124i zusammengesetzt.
  • Weiter ist anhand von 2 zu sehen, dass die Partialprodukt-Summierstufe 130 aus 1 aus einem Wallace-Baum zusammengesetzt ist, der aus mehreren, vorzugsweise sechs, hintereinander geschalteten Kompressorstufen 136a136f gebildet ist. Die Kompressorstufen 136a136f verwenden allgemein entweder 3:2-Kompressorschaltungen 136a136c oder 4:2-Kompressorschaltungen 136d136f. Die Kompressorschaltungen werden hier später umfassender beschrieben. Außerdem ist zu sehen, dass die Summierstufe 130 einen Spezialdecodiererblock 132c enthält, der eine Eingabe 132b in die erste Kompressorstufe 136a liefert. Außerdem enthält die Stufe 130 ein Rundungssignal (rnd-Signal) 132a, um auf Wunsch eine Rundung auszuführen, die eine Eingabe in die dritte Kompressorstufe 136c liefert. Der Decodiererblock 132c empfängt die zwei Eingangsoperanden 102, 104 und ein Steuersignal 132d. Der Decodiererblock 132c und das Rundungssignal (rnd-Signal) 132a werden hier später umfassender beschrieben. Außerdem ist eine letzte 4:2-Kompressorstufe 136f zu sehen, deren Ausgabe 134 an eine letzte Addiererstufe 140 geliefert wird. Zur Erleichterung der Darstellung ist die letzte Kompressorstufe 136f als die Stufe gezeigt, bei der die dritte Zahl 142, vorzugsweise von einem Akkumulator, arithmetisch mit dem resultierenden Produkt der zwei Eingangsoperanden 102, 104 kombiniert wird. Wie hier später anhand von 5 angemerkt wird, können aber Abschnitte (verschiedene Bitstellen) dieser dritten Zahl 142 an verschiedene der mehreren Kompressorstufen 126b126j geliefert werden.
  • Weiter ist anhand von 2 zu sehen, dass die letzte Addiererstufe 140 aus 1 ihre Eingabe von der letzten Kompressorstufe 136f der Summierstufe 130 empfängt und bestimmt, ob ein Null-Ergebnis und/oder eine Sättigung aufgetreten sind, wobei sie Merker 144 liefert, die diese Ergebnisse angeben. Der letzte Addierer 140 ist vorzugsweise aus 23 Carry-Look-Ahead-Addierern (CLAs) und 17 Carry-Select-Addierern zusammengesetzt. Er liefert seine Ausgabe an die letzte Sättigungsstufe 150. Die Schaltungen, um zu bestimmen, wenn ein Null-Ergebnis aufgetreten ist oder wenn eine Sättigung aufgetreten ist, werden hier später umfassender beschrieben.
  • Die letzte Sättigungsstufe 150 führt für 32 Bits eine letzte Sättigung auf entweder "0x007fffffff" (Überlauf) oder auf "0xff80000000" (Unterlauf) oder für 40 Bits eine letzte Sättigung auf "0x7ffffffffff" (Überlauf) oder auf "0x8000000000" (Unterlauf) aus und löscht die unteren sechzehn Bits auf null, wenn eine Rundung gewünscht ist. Die letzte Sättigungsstufe 150 wird hier später umfassender beschrieben und steht unter der Steuerung der Steuersignale 152. Die letzte Sättigungsstufe 150 liefert die Ausgabe 154 der endgültigen 40 Bits.
  • Zusammengefasst ist das Multiplizierer/Akkumulator-Feld 100 der vorliegenden Erfindung mit einer modifizierten Booth-Recode-Logik 120 zum Erzeugen mehrerer Partialprodukte, mit einem Wallace-Baum 130, der eine Reihe von Kompressoren zum Summieren der endgültigen Produkte in einer arithmetischen Kombination mit einer dritten Zahl verwendet, und mit einer letzten Addiererstufe 140 zum Erzeugen eines endgültigen Ergebnisses, das in einer letzten Sättigungsstufe 150 auf verschiedene Werte gerundet oder gesättigt werden kann, implementiert.
  • Im Betrieb wird der Operand X (Multiplikand) 102 mit M Bits aus einem Register in eine Bruchbetriebsartstufe 126a eingegeben. Der Bruchbetriebsartblock gibt M Bits, vorzugsweise 17 Bits, an die erste der mehreren Booth-Auswahlstufen 126b126j aus. Wie hier später angemerkt wird, verschiebt der Bruchbetriebsartblock effektiv die Eingaben X um eine Bitstelle zu dem msb, wenn ein Bruchbetriebsart-Steuersignal aktiv oder funktional ist. Der Operand Y 104 mit N Bits wird aus einem Register in die Booth-Codiererstufen 124a124i eingegeben Die Booth-Codiererstufen erzeugen in Kombination mit den Booth-Auswahlstufen die mehreren Partialproduktbits 408. Mit Ausnahme der letzten Stufe hat jede Booth-Codiererstufe drei Ausgänge 302, 304, 306 oder 352, 354, 356, die mit einer entsprechenden Stufe der Booth-Auswahllogik 126b126j verbunden ist, wobei die Auswahlstufen oder -zeilen aus Booth-Auswahlschaltungen 400, 420, 440, 460 gebildet sind. Die drei Ausgänge von einer Booth-Codiererstufe entsprechen zwei Übergängen zwischen jeweils drei Bits des Operanden Y 104, beginnend mit den zwei niedrigstwertigen Bits, die den Operanden X 102 bearbeiten, um wiederum die Partialprodukte 408 zu bilden.
  • Das Feld der Booth-Auswahlstufen zum Erzeugen der Partialprodukte ist in Zwei-Bit-Inkrementen gegeneinander versetzt. Somit werden die zwei niedrigstwertigen Bits des Partialprodukts null (von der ersten Booth-Auswahlstufe 126b) von dem Feld zusammen an die Wallace-Baum-Addierer/Kompressor-Stufen 130 ausgegeben. Ähnlich werden die nächsten zwei Bits des Partialprodukts null mit den zwei niedrigstwertigen Bits des Partialprodukts eins (von der nächsten Booth-Auswahlstufe 126c) miteinander addiert, wobei die Summe an die Wallace-Baum-Addierer/Kompressor-Stufen 130 ausgegeben wird. Diese Prozedur wird für die verbleibenden Zwischenpartialprodukte 408 in dem Feld der Booth-Auswahlstufen bis zur vorletzten Booth-Auswahlstufe fortgesetzt. Die letzte Booth-Auswahlstufe 126j ist um 16 Bits relativ zu der ersten Booth-Auswahlstufe 126b versetzt. Somit steuert die Booth-Recode-Logik der Codierer und Auswahleinrichtungen die Partialprodukterzeugung. Die vierunddreißig Bits breiten Wallace-Baum-Addierer/Kompressor-Stufen akkumulieren ein Vierunddreißig-Bit-Wort, das als die Eingabe für eine letzte vierzig Bit breite Kompressorstufe 136f dient, die ebenfalls "effektiv" eine dritte Vierzig-Bit-Zahl, vorzugsweise von einem Akkumulator, empfängt. Für reine Multiplikationsoperationen wird die dritte Zahl oder die Akkumulatoreingabe auf null gezwungen. Die Ausgabe von der letzten Kompressorstufe wird an eine letzte Addiererstufe 140 geliefert. Die letzte Addiererstufe 140 liefert eine Ausgabe an eine letzte Sättigungs- und Rundungsstufe 150, deren Ausgabe vorzugsweise als eine Eingabe an einen Akkumulator oder an ein anderes Register geliefert wird.
  • Ein Rundungsbetriebsart-Steuersignal bestimmt, ob und auf welcher Ebene in dem Wallace-Baum oder in der letzten Stufe eine Rundung auszuführen ist. Für 40-Bit-Ergebnisse wird das Vorzeichenstatusbit, das im Ergebnis eines Ladens oder einer Operation aktualisiert wird, gemäß einem M40-Merker berichtet. Wenn M40 null ist, wird das Vorzeichenbit vom Bit 31 des Ergebnisses kopiert. Wenn M40 eins ist, wird das Bit 39 kopiert. Der M40-Merker bestimmt, ob 32-Bit-Ergebnisse oder 40-Bit-Ergebnisse verwendet werden.
  • Die Überlauflogik ermittelt das höchstwertige Bit des Ergebnisses, das nicht für die Ausgabe ausgewählt ist, und bestimmt, ob es Daten enthält. Wenn das der Fall ist, wird dies als ein Überlaufindikator verwendet und ein Überlaufmerker gesetzt. Um zu bestimmen, ob alle nicht ausgewählten Bits gleich sind, wird ein Exklusiv-ODER-(XOR-)Gatter verwendet, während daraufhin ein UND-Gatter verwendet wird, um zu bestimmen, wann die Operation vorzeichenlose Operanden verwendet, wenn das höchstwertige Bit eine Null ist. Die Ausgaben von diesen zwei Gattern werden in einem ODER-Gatter verglichen, das den Überlaufmerker ausgibt. Falls vorzeichenbehaftete Operanden verwendet werden, repräsentieren die zwei höchstwertigen Bits das Vorzeichen und sind gleich, falls kein Überlauf aufgetreten ist.
  • Der Nullmerker ist nur dann aktiv, wenn durch die hier später beschriebenen Null-Ergebnis-Vorausberechnungs-(ZRA-)Schaltungen vorausgesagt wird, dass das gesamte 40-Bit-Ergebnis null ist. Wenn die Ausgabe vorzeichenbehaftet und das höchstwertige Bit eine "Eins" ist, wird der Negativ-Merker gesetzt.
  • Nunmehr übergehend zu den Booth-Codierern 124a124i ist ein Booth-Codierer eine klassische Funktion, d. h. ein Element, das nützlich ist, um die Anzahl der zu addierenden Partialprodukte zu reduzieren. In einem Radix-4-modifizierten Booth-Algorithmus-Codierer werden 3 Bits des Multiplikatoroperanden codiert, die die Partialprodukterzeugung (PP-Erzeugung), die Multiplikandenoperanden-PP-Erzeugung, die Erzeugung eines Multiplikanden, der um eine Bitstelle relativ zu dem PP der höchstwertigen Bits (msbs) verschoben ist, und die Vorzeichenerzeugung steuern.
  • Die unten stehende Tabelle 1 beschreibt das Codiererverhalten für einen derzeit bevorzugten typischen Booth-Codierer. In Tabelle 1 sind die drei Bits des Multipliziereroperanden 104 Yi–1, Yi und Yi+1, wobei i die Bitstelle ist. In Tabelle 1 sind die Signale p2, p1 und sg die Ausgangssignale von dem Codierer, während "Funktion" den "Wert" zeigt, der mit diesem Multiplikandenwert multipliziert wird (·), um ein Partialprodukt zu erzeugen.
  • Figure 00190001
    Tabelle 1 – Wahrheitstabelle des Booth-Codierers
  • Die Booth-Codierergleichungen aus Tabelle 1 sind vorzugsweise in einer einzigen Codiererschaltung implementiert. 3A zeigt eine Implementierung auf der Gatterebene für eine wie durch Tabelle 1 definierte Standard-Booth-Codiererschaltung 300, die ein Additions/Subtraktions-Signal (A/S-Signal) enthält. Zum Codieren der 17 Bits des Multipliziereroperanden Yi sind neun Codiererschaltungen 124a124i wie diese erforderlich. Die Bits werden wie folgt für die Codierung zugeordnet und miteinander gruppiert:
    '0', Y0, Y1 --> erster Codierer,
    Y1, Y2, Y3 --> zweiter Codierer,
    Y3, Y4, Y5 --> dritter Codierer,
    ...,
    Y13, Y14, Y15 --> achter Codierer,
    Y15, Y16, --> neunter Codierer.
  • Allerdings ist die "erste" Codiererschaltung 124a/350 etwas anders, da die Eingabekonfiguration "0 0 0" p1 = p2 = 0 und sg = 1 erzeugt, um eine GSM-Betriebsartsättigung leichter zu behandeln. Die "erste" Codiererschaltung 350 ist in 3B gezeigt. Die neunte und letzte Codiererschaltung 124i/380 ist ebenfalls anders, da das letzte Bit eine Doppelung des Vorzeichenbits ist, was ihre Logikstruktur vereinfacht. Die letzte Codiererschaltung 380 ist in 3C gezeigt. Das Additions/Subtraktions-(A/S-)Signal 122b definiert die Addition des Produkts zu oder die Subtraktion des Produkts von dem dritten Zahlen-(Akkumulator-)Wert 142. Wie später umfassender beschrieben wird, bewirkt das Additions/Subtraktions-(A/S-)Signal 122b, dass es über ein XOR-Gatter das Komplement des Vorzeichenbits, des Werts "sg" (in den Einträgen von Tabelle 1), bildet, falls die "Multiplikations- und Subtraktions"-Betriebsart ausgewählt ist.
  • Nunmehr anhand von 3A ist eine Standard-Booth-Codiererschaltung 300/124b124h gezeigt. Diese Schaltung 300 besitzt das als die Eingabe in den ersten Inverter 312 gelieferte Bit Yi–1 104 als eine Eingabe in ein erstes Dreieingangs-UND-Gatter 322, als eine Eingabe in ein erstes Zweieingangs-XOR-Gatter 326 und als eine Eingabe in ein Zweieingangs-NAND-Gatter 328. Die Ausgabe von dem ersten Inverter 312 wird als eine Eingabe in ein zweites Dreieingangs-UND-Gatter 320 geliefert. Das Bit Yi wird als eine Eingabe in einen zweiten Inverter 314, als eine zweite Eingabe in ein erstes Dreieingangs-UND-Gatter 322, als eine zweite Eingabe in ein Zweieingangs-NAND-Gatter 328 und als eine zweite Eingabe in das erste Zweieingangs-XOR-Gatter 326 geliefert. Die Ausgabe von dem ersten Zweieingangs-XOR-Gatter 326 ist das p1-Signal 304. Die Ausgabe von dem zweiten Inverter 314 wird als eine zweite Eingabe in das zweite Dreieingangs-UND-Gatter 320 geliefert. Das Bit Yi+1 wird als die Eingabe in einen dritten Inverter 316, als eine dritte Eingabe in das zweite Dreieingangs-UND-Gatter 320 und als eine erste Eingabe in ein Zweieingangs-UND-Gatter 330 geliefert. Die Ausgabe von dem dritten Inverter 316 wird als die dritte Eingabe in das erste Dreieingangs-UND-Gatter 322 geliefert. Das erste und das zweite Drei eingangs-UND-Gatter 320, 322 liefern ihre Ausgaben als die Eingaben in ein Zweieingangs-ODER-Gatter 324. Die Ausgabe des ODER-Gatters 324 ist das Signal p2 302. Die Ausgabe von dem NAND-Gatter 328 wird als die zweite Eingabe in das Zweieingangs-UND-Gatter 330 geliefert. Die Ausgabe von dem Zweieingangs-UND-Gatter 330 wird als eine Eingabe in ein zweites XOR-Gatter 332 geliefert. Die zweite Eingabe in das zweite XOR-Gatter 332 ist das Additions/Subtraktions-Signal 122b. Die Ausgabe des zweiten XOR-Gatters 332 ist das Signal sg 306. Diese spezifische Gatterkombination implementiert die Logik aus Tabelle 1. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern.
  • Nunmehr in 3B ist eine erste Booth-Codiererschaltung 350/124a zu sehen. Die Schaltung 350 besitzt das Bit Y0, das als die Eingabe in einen ersten Inverter 362 und als eine Eingabe in ein Zweieingangs-NAND-Gatter 372 geliefert wird. Die Ausgabe von dem ersten Inverter 362 wird als die erste Eingabe in ein Zweieingangs-UND-Gatter 370 und als die Eingabe in einen zweiten Inverter 364 geliefert. Die Ausgabe von dem zweiten Inverter 364 wird als das Signal p1 352 geliefert. Das Bit Y1 wird als die Eingabe in einen dritten Inverter 366 und als die zweite Eingabe in ein Zweieingangs-UND-Gatter 370 geliefert. Die Ausgabe des UND-Gatters 370 ist das Signal p2 354. Die Ausgabe von dem dritten Inverter 366 wird als die zweite Eingabe in das Zweieingangs-NAND-Gatter 372 geliefert. Die Ausgabe von dem Zweieingangs-NAND-Gatter 372 wird als eine Eingabe eines Zweieingangs-XOR-Gatters 374 geliefert. Die zweite Eingabe in das XOR-Gatter 374 ist das Additions/Subtraktions-Signal 122b. Die Ausgabe des XOR-Gatters 374 ist das Signal sg 356. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern.
  • In 3C ist nun eine letzte Booth-Codiererschaltung 380/124i zu sehen. Die Schaltung 380 besitzt das Bit Yi–1, das als die Eingabe in einen Inverter 392 und als eine Eingabe eines ersten Zweieingangs-XOR-Gatters 394 geliefert wird. Die Ausgabe von dem Inverter 392 wird als eine Eingabe eines Zweieingangs-UND-Gatters 396 geliefert. Das Bit Yi wird als eine zweite Eingabe in das erste XOR- Gatter 394 und als eine zweite Eingabe in das Zweieingangs-UND-Gatter 396 geliefert. Die Ausgabe des ersten XOR-Gatters 394 ist das Signal p1 382. Die Ausgabe von dem Zweieingangs-UND-Gatter 396 wird als eine Eingabe in ein zweites Zweieingangs-XOR-Gatter 398 geliefert. Die zweite Eingabe in das zweite XOR-Gatter 398 ist das Additions/Subtraktions-Signal 122b. Die Ausgabe des zweiten XOR-Gatters 398 ist das Signal sg 386. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern.
  • Nunmehr übergehend zu den Booth-Auswahlstufen 126b126j beschreibt diese Diskussion die Erzeugung der Partialprodukte (PPs), die daraufhin miteinander addiert werden. Jede Booth-Auswahlstufe 126b126j besteht aus einem Multiplexer, der durch die zuvor beschriebenen Signale "p2", "p1" und "sg" gesteuert wird. Im Folgenden wird eine repräsentative Schaltung beschrieben, die wie in der folgenden Tabelle 2 beschrieben für ein Bit eines PP sorgt.
  • Figure 00220001
    Tabelle 2
  • Die Auswahlen "--2·X" und "--X" werden dadurch geliefert, dass die entsprechenden Bitstellen X invertiert werden und ein Booth-Übertragsbit an der Stelle 0 addiert wird. Das Booth-Übertragsbit ist der Bitwert "sg". Für das Vorzeichener weiterungsmanagement ist eine dedizierte Schaltung vorgesehen, wie sie hier anhand der 4B und 4D beschrieben wird. Wie hier angemerkt wird, enthält die PP-Stufe 120 eine Bruchbetriebsartsteuerung.
  • Die Partialprodukte werden so ausgerichtet, dass jedes um 2 Bitstellen relativ zu den niedrigstwertigen Bits (lsbs) verschoben mit dem nächsten summiert wird. 4A zeigt eine Implementierung auf der Gatterebene für eine normale Booth-Auswahlstufenschaltung 400. 4B zeigt eine Implementierung auf der Gatterebene für eine normale Booth-Auswahlstufenschaltung mit Vorzeichenerweiterung 420. Die 4C und 4D zeigen eine Implementierung auf der Gatterebene für eine letzte Booth-Auswahlstufenschaltung ohne 440 bzw. mit 460 Vorzeichenerweiterung.
  • In 4A ist nun eine normale Booth-Auswahlschaltung 400 ohne Vorzeichenerweiterung zu sehen. Diese Schaltung 400 besitzt das Bit Xi–1 102, das als eine Eingabe in ein erstes Zweieingangs-UND-Gatter 410 geliefert wird, und das Signal p2 402, das als die zweite Eingabe in dieses erste Zweieingangs-UND-Gatter 410 geliefert wird. Das Signal p2 402 entspricht den Signalen p2 302, 352, die je nach der Stufe 126b126i oder je nach der Ebene, in der sich die Schaltung 400 befindet, durch die normale Booth-Codiererschaltung 300 oder durch die erste Booth-Codiererschaltung 350 ausgegeben werden. Das Bit Xi 102 wird als eine erste Eingabe in ein zweites UND-Gatter 412 geliefert, während die zweite Eingabe in das zweite Zweieingangs-UND-Gatter das Signal p1 404 ist. Das Signal pl 404 entspricht den Signalen pl 304, 354, die je nach der Stufe oder je nach der Ebene, in der sich die Schaltung 400 befindet, durch die normale Booth-Codiererschaltung 300 oder durch die erste Booth-Codiererschaltung 350 ausgegeben werden. Die Ausgaben von dem ersten und von dem zweiten UND-Gatter 410, 412 sind die Eingaben in ein Zweieingangs-ODER-Gatter 414. Die Ausgabe von dem Zweieingangs-ODER-Gatter 414 wird als eine Eingabe in ein Zweieingangs-XOR-Gatter 416 geliefert. Die zweite Eingabe in das XOR-Gatter 416 ist das Signal sg 406. Das Signal sg 406 entspricht den Signalen sg 306, 356, die je nach der Stufe oder Ebene, in der sich die Schaltung 400 befindet, von der nor malen Booth-Codiererschaltung 300 oder von der ersten Booth-Codiererschaltung 350 ausgegeben werden. Die Ausgabe des XOR-Gatters ist ein Signal PPi 408. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern. Diese Schaltungen 400 werden in jeder Stufe oder Schicht der mehreren Booth-Auswahlstufen 126b126i für alle Bitstellen mit Ausnahme der höchstwertigen Bitstelle verwendet.
  • In 4B ist nun eine normale Booth-Auswahlschaltung 420 mit Vorzeichenerweiterung zu sehen. Die Schaltung 420 besitzt das Bit Xi 102, das als eine Eingabe in ein erstes Zweieingangs-NAND-Gatter 424 geliefert wird. Das Signal p2 402 wird als die erste Eingabe in ein Zweieingangs-ODER-Gatter 422 geliefert. Die zweite Eingabe in das Zweieingangs-ODER-Gatter 422 ist das Signal p1 404. Die Ausgabe von dem ODER-Gatter 422 ist die zweite Eingabe in das Zweieingangs-NAND-Gatter 424. Die Ausgabe von dem Zweieingangs-NAND-Gatter 424 wird als eine Eingabe in ein Zweieingangs-XOR-Gatter 426 geliefert. Die zweite Eingabe in das XOR-Gatter 426 ist das Signal sg 406 und die Ausgabe des XOR-Gatters ist ein Signal PPi 408. Die Signale p2, p1 und sg können wieder je nach der Stufe oder Ebene, in der sich die Schaltung 400 befindet, von der normalen Booth-Codiererschaltung 300 oder von der ersten Booth-Codiererschaltung 350 sein. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern. Diese Schaltungen 420 werden in jeder Stufe oder Schicht der mehreren Booth-Auswahlstufen 126b126i für die höchstwertige Bitstelle verwendet.
  • In 4C ist nun eine Booth-Auswahlschaltung 440 der letzten Stufe 126j ohne Vorzeichenerweiterung zu sehen. Diese Schaltung 440 besitzt das Bit Xi 102, das als eine Eingabe in ein Zweieingangs-UND-Gatter 442 geliefert wird, und das Signal p1 382, das als die zweite Eingabe in dieses Zweieingangs-UND-Gatter 442 geliefert wird. Die Ausgabe von dem UND-Gatter 442 ist eine Eingabe in ein Zweieingangs-XOR-Gatter 444. Die zweite Eingabe in das XOR-Gatter 444 ist das Signal sg 386. Die Ausgabe des XOR-Gatters 444 ist ein Signal PPi 408. Natürlich können andere Gatterkombinationen verwendet werden, um diese glei che Logikfunktionalität zu liefern. Diese Schaltung 440 wird für alle Bitstellen mit Ausnahme der höchstwertigen Bitstelle in der letzten Stufe oder Schicht der Mehrfach-Booth-Auswahlstufe 126j verwendet.
  • In 4D ist nun eine letzte Booth-Auswahlschaltung 460 mit Vorzeichenerweiterung zu sehen. Diese Schaltung 460 besitzt das Bit Xi 102, das als eine Eingabe in ein Zweieingangs-NAND-Gatter 462 geliefert wird, und das Signal p1 382, das als die zweite Eingabe in dieses Zweieingangs-NAND-Gatter 462 geliefert wird. Die Ausgabe von dem NAND-Gatter 462 wird als eine Eingabe in ein Zweieingangs-XOR-Gatter 464 geliefert. Die zweite Eingabe in das XOR-Gatter 464 ist das Signal sg 386 und die Ausgabe des XOR-Gatters 464 ist ein Signal PPi 408. Natürlich können andere Gatterkombinationen verwendet werden, um diese gleiche Logikfunktionalität zu liefern. Diese Schaltung 460 wird in der letzten Stufe oder Schicht der Booth-Auswahlstufe 126j für die höchstwertige Bitstelle verwendet.
  • Die Reduzierung der PPs 408 unter Verwendung eines Wallace-Baums 130 führt zu dem möglichsten parallelen, aber unregelmäßigen Netz von Kompressoren. 5 zeigt die Ausrichtung der Partialprodukte und die Reduzierung unter Verwendung dreier Stufen von Kompressoren 510, 512, 514. Um eine gewisse Regularität bei der Implementierung des Multiplizierers der vorliegenden Erfindung aufrecht zu erhalten, wird vorzugsweise ein gemischtes Schema von 3:2- und 4:2-Kompressoren verwendet.
  • Ein Kompressor ist eine Schaltung oder ein Operator, die/der n PP-Bits 408 miteinander addiert und eine Summe und ein Übertragsbit liefert. Ein 3:2-Kompressor summiert 3 Bits und liefert die zwei erwähnten Bits (eine Summe und einen Übertrag), die in dem Baum weiter reduziert werden. Ein 4:2-Kompressor addiert 4 Bits zusammen mit einem Übertragsbit und erzeugt die zwei erwähnten Bits und ein Übertragsbit zu seinem Nachbarn.
  • Weiter sind anhand von 5 mehrere 3:2-Kompressoren 520 und mehrere 4:2-Kompressoren 522 zu sehen. Die Bitstellen sind entlang der Oberseite von 5 mit 0–33 und in der Nähe der Unterseite von 5 mit 0–39 nummeriert. Die Eingabebits der dritten Zahl (oder des Akkumulators) sind durch ein "A" 142 repräsentiert.
  • Die Gesamtzahl der PP-Reduzierungs- oder PP-Addiererstufen 510, 512, 514 ist vorzugsweise drei. Die erste Addiererstufe 510 besteht aus drei Zeilen oder Schichten von 3:2-Kompressoren 136a136c, die drei (Summen-Übertrags-)Paare pro PP-Bit erzeugen. Diese Paare pro PP-Bit werden durch zwei hintereinander geschaltete Stufen 512, 514 von 4:2-Kompressoren 136d136e und 136f weiter reduziert, wobei schließlich ein (Summen-Übertrags-)Paar pro PP-Bit geliefert wird, das irgendeine arithmetische Kombination mit einer dritten Zahleneingabe 142 enthält. Die endgültige Summe und der endgültige Übertrag für jede Bitstelle befinden sich an der Unterseite von 5 und werden an die letzte Addiererstufe 140 geliefert. Die endgültige Summe für jede Bitstelle ist durch eine Summe s1 (eine Summe von der ersten Addiererstufe), durch eine Summe s2 (eine Summe von der zweiten Addiererstufe) oder durch eine Summe s3 (eine Summe von der dritten Addiererstufe) repräsentiert. Der endgültige Übertrag für jede Bitstelle ist durch einen Übertrag c1 (einen Übertrag von der ersten Addiererstufe), durch einen Übertrag c2 (einen Übertrag von der zweiten Addiererstufe) oder durch einen Übertrag c3 (einen Übertrag von der dritten Addiererstufe) repräsentiert.
  • Nunmehr anhand der ersten 3:2-Kompressorstufe 136a in 5 ist im rechten oberen Abschnitt von 5 ein einziger Kompressor für die Bitstelle 0 zu sehen. Dieser Kompressor besitzt drei Eingänge. Der erste Eingang ist das erste PP (von der ersten Auswahlstufe 126b), das durch die oberste "0" in dem schattierten Block, der diesen Kompressor repräsentiert, repräsentiert ist. Die zweite Eingabe ist der Wert der Bitstelle 0 der dritten Zahl 142, der durch das "A" in dem Block repräsentiert ist. Die dritte Eingabe ist ein Booth-Übertragssignal b0 (wobei dieses Signal rb0 ist und hier später anhand von 7A beschrieben wird) in dem Block. Ähnlich enthält der Kompressor für die Bitstelle 1 als seine zwei Eingaben das zweite PP (von der ersten Auswahlstufe 126b), das durch die "1" repräsentiert ist, und den Wert der Bitstelle 1 der dritten Zahl 142, der wieder durch das "A" reprä sentiert ist; dieser Kompressor verhält sich wie ein 2:2-Kompressor, da er für seinen dritten Eingang (nicht gezeigt) einen Übertragswert von einer vorhergehenden Stelle von null hat. Der Kompressor für die Bitstelle 2 hat als seine drei Eingänge das dritte PP (von der ersten Auswahlstufe 126b), das durch die " 2" repräsentiert ist, den Wert der Bitstelle null des PP von der zweiten Auswahlstufe 126c (des ersten PP von der zweiten Auswahlstufe), der durch die "0" repräsentiert ist, und ein Booth-Übertragssignal b1.
  • Auf diese Weise werden die PPs von den ersten drei Booth-Auswahlstufen 126b126d in den Kompressoren der ersten Kompressorstufe 136a summiert. Auf ähnliche Weise werden die PPs von den nächsten drei Booth-Auswahlstufen 126e126g in den Kompressoren der zweiten Kompressorstufe 136b summiert. Ähnlich werden die PPs von den letzten drei Booth-Auswahlstufen 126h126j in den Kompressoren der dritten Kompressorstufe 136c summiert.
  • Allerdings ist zu sehen, dass der Kompressor in der Kompressorstufe 136a für die Bitstelle 21 zwischen dem PP von der dritten Auswahlstufe 126d und dem PP von der vierten Auswahlstufe 126e überbrückt. Weitere Kompressoren in den Bitstellen 21–23 und 26–28 für die Kompressorstufen 136b und 136c führen ähnliche "Brücken"-Funktionen aus. Für die Stufe 136c und für die Bitstelle 10 ist ein Booth-Übertragssignal b5 zu sehen. Dieses Signal b5 ist eine Eingabe für den Kompressor in der Stufe 136d an der Bitstelle 10. Ähnlich sind ein Booth-Übertragssignal b8, eine "7", die ein PP repräsentiert, und eine "6", die ein weiteres PP repräsentiert, in der Kompressorstufe 136c Eingaben für den Kompressor in der Kompressorstufe 136e an den Bitstellen 16, 23 und 22. Zur Erleichterung der Verbindung oder für Konstruktionszwecke können weitere solche Signale ähnlich zu verschiedenen Kompressorstufen verlegt werden; z. B. sind die Bits für den Eingang "A" 142 der dritten Zahl in allen drei Addiererstufen zu finden.
  • Die Vorzeichenerweiterungs-Zusatzbelastung in einer Anzahl der Anfangskompressorstufen wird über die Addition einer "Eins" an der msb-Bitstelle begrenzt. Die Vorzeichenerweiterung eines Operanden findet statt, wenn das Format (die Anzahl der Bitstellen) eines Operators oder Registers größer als das eines Operanden ist. Das heißt, eher als Vorzeichenerweiterungswerte von den Bitstellen 19 bis 33 für die Kompressorstufe 136a und von den Bitstellen 28 bis 33 für die Stufe 136b zu haben, werden in geeigneten msb-Bitstellen in geeigneten Kompressorstufen "Einsen" geliefert, um den Additionsprozess zu beschleunigen. Wie genauer in 5 gezeigt ist, ist zu sehen, dass eine "1" an den Bitstellen 19 bis 21 in der Kompressorstufe 136a, an den Bitstellen 23, 25 und 27 in der Kompressorstufe 136b, an den Bitstellen 29, 31 und 33 in der Kompressorstufe 136c und an den Bitstellen 39–35 in der Kompressorstufe 136f addiert wird, um diese Vorzeichenerweiterungs-Zusatzbelastung zu vermeiden. Außerdem werden in der ersten Stufe 510 im Allgemeinen Booth-Überträge (die Signale b0 bis b8) addiert. Durch Addieren einer "Eins" an der Bitstelle 15 in der dritten Ebene 136c der ersten Stufe 510 wird eine Rundung ausgeführt, wenn das Rundungs-("Rnd"-)Steuersignal 132a aktiv ist, was in 5 durch ein "R" repräsentiert ist.
  • Daraufhin werden durch eine Stufe von 4:2-Kompressoren das Zwischensummenbit (s1) und das Übertragsbit (c1) von der ersten Addiererstufe in allen Bitstellen miteinander addiert. Es folgt eine weitere Stufe des gleichen Typs und eine Stufe von Halbaddierern, um die PPs auf einen Vektor von Summen- und Übertragsbits zu reduzieren, die durch den letzten Addierer addiert werden. 5 zeigt den Reduzierungsprozess in Anwendung auf Summen- und Übertragsbits, die durch das Netz von Kompressoren aus der Partialproduktreduzierung erzeugt werden, und die resultierende Reduzierung dieser Summen- und Übertragsbits. Allgemein führt die Verwendung der 4:2-Kompressoren zu einem ausgeglicheneren Signalankunftsprofil am Ende des Baums. Siehe z. B. "Improving Multiplier Design by Using Improved Column Compression Tree and Optimized Final Adder in CMOS Technology", V. G. Oklobdzija u. a., IEEE Transactions on VLSI Systems, Bd. 3, Nr. 2, Juni 1995, S. 292–301, und "An Integrated Multiplier for Complex Numbers", V. G. Oklobdzija u. a., Journal of VLSI Signal Processing, 7, 213–222 (1994).
  • Für eine derzeit bevorzugte Wallace-Baum-Implementierung ist eine neue Schaltung für den 4:2-Kompressor entwickelt worden. Ihre Funktion und ihr optimierter Logikausdruck sind allgemein bekannt. Siehe z. B. "A 4.4 ns CMOS 54×54b Multiplier Using Pass--transistor Multiplexer", Norio Ohkubo u. a., IEEE CICC '94 Proc., S. 599–602. Allerdings müssen alle Verzögerungen in der Schaltung ausgeglichen sein, um falsche Übergänge in dem Baum zu minimieren.
  • 6 zeigt eine derzeit bevorzugte Implementierung auf der Gatterebene für eine 4:2-Kompressorschaltung 522. Genauer besitzt die Schaltung vier Eingänge P0, P1, P2 und P3. Diese vier Eingänge unterscheiden sich von Bitstelle zu Bitstelle in einer Addierstufe (zweite oder dritte Addiererstufe), sind aber allgemein die Summen und Überträge von Kompressorschaltungen der vorangehenden Addiererstufe, ausgewählten Bitstellenwerten der dritten Zahl und Booth-Überträgen oder ausgewählten Partialprodukten. Die erste Eingabe P0 ist eine erste Eingabe in ein erstes Zweieingangs-XOR-Gatter 602 und eine erste Eingabe in ein erstes Zweieingangs-UND-Gatter 612. Die zweite Eingabe P1 ist eine zweite Eingabe in ein erstes Zweieingangs-XOR-Gatter 602. Die dritte Eingabe P2 ist eine erste Eingabe in ein zweites Zweieingangs-XOR-Gatter 604 und eine erste Eingabe in ein zweites Zweieingangs-UND-Gatter 614. Die vierte Eingabe P3 ist die zweite Eingabe in ein zweites Zweieingangs-XOR-Gatter 604 und eine erste Eingabe in ein drittes Zweieingangs-UND-Gatter 620. Die Ausgabe des XOR-Gatters 602 ist eine Eingabe in ein drittes XOR-Gatter 606, eine Eingabe in einen ersten Inverter 610 und die zweite Eingabe in ein zweites Zweieingangs-UND-Gatter 614. Die Ausgabe des Inverters 610 ist die zweite Eingabe in das erste Zweieingangs-UND-Gatter 612. Die Ausgaben der UND-Gatter 612 und 614 sind die zwei Eingaben für ein erstes Zweieingangs-ODER-Gatter 616, dessen Ausgabe Co 634 (der Übertrag, der der Summe S 630 zugeordnet ist) ist. Die Ausgabe des XOR-Gatters 604 ist die zweite Eingabe in das dritte XOR-Gatter 606. Die Ausgabe des XOR-Gatters 606 ist eine Eingabe in ein viertes XOR-Gatter 608, eine Eingabe in einen zweiten Inverter 618 und eine Eingabe für ein viertes Zweieingangs-UND-Gatter 622. Die Ausgabe des zweiten Inverters 618 ist die zweite Eingabe in ein drittes Zweieingangs-UND-Gatter 620. Ein Signal Cin 636 für den Übertrag von einer vorhergehenden Stelle ist die zweite Eingabe für das vierte XOR-Gatter 608 und die zweite Eingabe für das vierte UND-Gatter 622. Die Ausgabe des XOR-Gatters 608 ist das Ausgangssummensignal S 630. Die Ausgaben der UND-Gatter 620 und 622 sind die Eingaben in das zweite Zweieingangs-ODER-Gatter 624. Die Ausgabe des ODER-Gatters 624 ist das Signal für den Übertrag für die nächsthöhere Stelle Cout 632 für den nächsten Kompressor. Diese unter Verwendung von Pass-Transistortechniken für XOR-Gatter und Multiplexer implementierte Schaltung liefert einen schnellen und ausgeglichenen Weg von den vier Eingängen zu einer Ausgangssumme S, zu einem Ausgangsübertrag Co und von dem Übertrag Cin von einer vorhergehenden Stelle des nächsten Nachbarn zu dem Übertrag Cout für die nächsthöhere Stelle des nächsten Nachbarn.
  • Für eine 3:2-Kompressorschaltung ist eine spezifische in der unten stehenden Tabelle 3 veranschaulichte "a + b + 1"-Schaltung bevorzugt, die den Gleichungen "sum = !(a XOR b)" und "carry = a/b" entspricht.
  • Figure 00300001
    Tabelle 3 3:2-Kompressor-Logiktabelle
  • Wie in 7B gezeigt ist, besteht die Bruchbetriebsart gemäß der Steuerung eines Bruchbetriebsart-Steuersignals 122 aus dem Verschieben des Operanden Xin 102 um eine Bitstelle relativ zu den msbs. Sie ist über eine Mehrzahl von 2-Eingangs-Multiplexern ("mux2") 710, einen für jede Bitstelle, implementiert.
  • Wie in 7A gezeigt ist, bedeutet eine GSM-Sättigung, dass dann, wenn "x18000" mit "x18000" multipliziert wird, das Ergebnis auf "007fffffff" (oder "0080007fff", wenn die Rundung aktiv ist) gezwungen werden muss, falls das Bruch-, das GSM- und das Sättigungssteuersignal aktiv sind. Die Decodierung der speziellen GSM-Operanden Xin und Yin wird vorzugsweise durch eine Standardlogik 132c ausgeführt, wie sie in 7A veranschaulicht ist. Das Ergebnis bildet das Komplement des Booth-Übertrags (b0) der ersten Stufe, um für die erste Reihe von Partialprodukten alles Einsen zu liefern. Dies reduziert die Gesamtdecodierungszeit auf nicht länger als die Verzögerung durch die Booth-Codierungs- und die PP-Auswahlstufen.
  • Weiter sind in 7A mehrere Zweieingangs-NOR-Gatter 720734 zu sehen, die jeweils eine Bitstelle von 0 bis 14 repräsentieren und für jede Bitstelle entsprechende Eingänge X und Y haben. Die UND-Gatter 735 und 736 repräsentieren die Bitstellen 15 und 16 und haben entsprechende Eingänge X und Y für diese zwei Bitstellen. Die Ausgaben der NOR-Gatter werden in einer Reihe von Viereingangs-UND-Gattern 740744 gesammelt, während die Ausgaben der UND-Gatter 735 und 736 im UND-Gatter 745 gesammelt werden. Die Ausgaben von den Viereingangs-UND-Gattern 740744 werden im Viereingangs-UND-Gatter 750 gesammelt. Die Ausgaben vom UND-Gatter 750 und vom UND-Gatter 745 und das GSM-Steuersignal 737 sind die Eingaben für ein Dreieingangs-UND-Gatter 752. Die Ausgaben des UND-Gatters 752 und das Gsat 756 repräsentieren ein GSM-Sättigungssignal. Dieses Signal ist eine Eingabe in das Zweieingangs-XOR-Gatter 754, wobei die andere Eingabe das Signal sg0 von dem ersten Booth-Codierer 124a ist. Die Ausgabe des XOR-Gatters 754 ist das Signal rb0 760, das, wie hier zuvor beschrieben wurde, als das erste Booth-Übertragssignal an den Kompressor an der Bitstelle 0 in der ersten Kompressorstufe 136a geliefert wird.
  • Die letzte Addiererstufe 140 empfängt als ihre Eingaben die Ergebnisse von der Addition der dritten Zahl oder des Akkumulatorinhalts 142 mit den reduzierten Summen und Überträgen von der letzten Kompressorstufe 136f und für die ersten sieben lsbs von früheren Kompressorstufen. Diese Kompressoroperationen reduzieren die Ain-, Summen- und Übertragsbusse auf eine neue Menge von Summen und Überträgen. Die endgültigen Summen und Überträge werden an einen letzten 40-Bit-Addierer geliefert, um das endgültige Ergebnis zu erhalten, das daraufhin in der letzten Sättigungsstufe 150 für die 32-Bit-Sättigungserfassung analysiert wird.
  • Schnelle Architekturen für einen letzten Addierer 140 erfordern allgemein Carry-Look-Ahead-Techniken (CLA), die zu verschiedenen Implementierungen führen. Allerdings führt ein Ein-Block-CLA für 40 Bits sowohl in Bezug auf Geschwindigkeit als auch auf Siliciumfläche zu einem Übertragsfortpflanzungsschema eines 64-Bit-Addierers. Eine weitere Technik, die auf der Beobachtung des Partialprodukt-Reduzierungsbaum-Verzögerungsprofils beruht, ermöglicht die Begrenzung einer reinen CLA-Implementierung auf die unteren Bits bis zu der Bitstelle, wo sich diese Verzögerung zu verringern beginnt. Für die verbleibenden Bits (msbs) wird der Übertragsfortpflanzungseffekt durch Wahl eines Carry-Select-Addiererschemas reduziert, bei dem die Auswahl durch die Übertragsausgabe des ersten CLA-Addierers ausgeführt wird. Innerhalb der Carry-Select-Architektur kann durch Fortpflanzen des Übertrags mit einem Schema mit variablem Überspringen des Übertrags wieder irgendein Verzögerungsankunftprofil berücksichtigt werden. Diese Implementierung besitzt die Vorteile, Bit-Umklappen oder -Kippen der höheren Bits des Addierers während des PP-Reduzierungsprozesses zu reduzieren, während eine kleinere CLA-Struktur erhalten wird und die Geschwindigkeit aufrechterhalten wird. Allerdings ist sie weniger regelmäßig für die Implementierung in Silicium.
  • 8 zeigt ein simuliertes Verzögerungsankunftsprofil für die Partialproduktreduzierung hinsichtlich elementarer Volladdiererverzögerungen und unter diesem Profil die entsprechende derzeit bevorzugte Struktur 140 des letzten Addierers. Außerdem müssen zwei Statusbits erzeugt werden, die die Überlauf- und Null-Erfassung berichten. Die Überlauferfassung wird hier später beschrieben. Das Null-Erfassungsschema wird hier ebenfalls später beschrieben. 9 zeigt die letzten fünf msbs 39–35 von der Kompressorstufe 136f In 5 sind alle fünf dieser Bitstellen in der Weise gezeigt, dass sie eine 3:2-Kompressorschaltung haben. Wie bei der Durchsicht von 5 zu sehen ist, haben die Bitstellen 39–35 aber nur zwei Eingaben, wie sie in 9 gezeigt sind. Dieses 3:2-Kompressornetz wird verwendet, um die dritte Zahl oder die Akkumulatorbits zu den Erweiterungsbitstellen 39–35 zu addieren, bevor die Ergebnisse an den letzten Addierer 140 übergeben werden. Die Vorzeichenerweiterung wird vorzugsweise unter Verwendung von "Einsen" von der Bitstelle 35 bis zur Bitstelle 39 implementiert. Falls eine reine Multiplikationsfunktion ausgewählt wird, wird die dritte Zahl oder der Akkumulatorwert Ai n[39:0] auf "0" gezwungen. Somit sind die "Ai" an den Bitstellen 39–35 in 9 entweder die dritte Zahl oder der Akkumulatorwert Ain[i], wenn eine MAC- oder MAS-Operation ausgewählt wird, oder eine "Null" für eine MPY-Operation. Somit bestimmt das MPY/MAC-Steuersignal 146, ob die dritte Zahl oder die Akkumulatorwerte ausgewählt werden oder in alle Bitstellen der dritten Zahl eine Null gezwungen wird. Wenn dieses Steuersignal 146 aktiv oder hoch ist, wird die dritte Zahl oder werden die Akkumulatorwerte für alle Bitstellen verwendet.
  • Wenn das endgültige Ergebnis am Ausgang des letzten Addierers 140 null ist, wird der entsprechende Null-Erfassungsmerker vorzugsweise auf eins eingestellt. Falls die Rundungsbetriebsart ebenfalls aktiv ist, wird angenommen, dass die 16 niedrigstwertigen Bits (lsbs) des Ergebnisses null sind, um den Merker zu aktualisieren, da diese Bitstellen auf null gelöscht werden. Allerdings führen herkömmliche Null-Erfassungsimplementierungen, die die endgültigen Ergebnisbits (nach der Rundung) abtasten, um zu bestimmen, wie das Null-Erfassungs-Merkerbit einzustellen ist, normalerweise zu einer vom Zeitgebungsstandpunkt inakzeptablen Leistungsverschlechterung. Dementsprechend verwendet die MAC-Einheit ein Vorausberechnungsschema, eine Null-Ergebnis-Vorausberechnung (ZRA), um den Null-Erfassungsmerker parallel zur Bestimmung des endgültigen Additionsergebnisses zu aktualisieren.
  • Die Null-Ergebnis-Vorausberechnungstechnik stützt sich auf eine frühe Analyse der P-, G- und Z-Zustände für jede Bitstelle. Kombinationen dieser Zustände führen zu einer "Zustandsmaschine" wie einer Beschreibung, in welchen Zuständen des Systems PS (pflanze Zustand fort), GS (erzeuge Zustand) und ZS (Nullzustand) sind. 10 zeigt, wie sich eine Systemzustandsmaschine verhält, wäh rend die Bitstellen beginnend von dem lsb abgetastet werden. Bei der Initialisierung ist das System im Nullzustand. Der endgültige Nullmerkerwert ist das ODER der Zustandsbits an der msb-Stelle.
  • Es wird ein Null-Erfassungs-Mechanismus beschrieben, der auf einer Carry-Look-Ahead-Addierer-artigen (CLA-Addierer-artigen) Struktur beruht. Vor der Beschreibung einer Implementierung des Null-Erfassungs-Mechanismus für die MAC-Einheit 100 ist eine kurze Beschreibung der mathematischen Algorithmen auf der Grundlage einer CLA-Architektur wie folgt:
    Wenn a und b zwei Operanden für eine Addition sind, ist: g(i) = a(i)•b(i) (1) p(i) = a(i)⨁b(i) (2)
  • In den obigen Gleichungen (1) und (2) ist "g" ein "Erzeugungs"-Term und "p" ein "Fortpflanzungs"-Term. Das Symbol "•" repräsentiert eine logische UND-Operation und das Symbol "⨁" repräsentiert eine logische Exklusiv-ODER-(XOR-) Operation. Die Terme "g" und "p" werden kombiniert, um einen Übertrag zu berechnen. Tatsächlich ist c(i) = G(i) = G(i, 0), falls der Übertrag in = 0 ist, wobei (G(i, 0), P(i, 0)) = (g(0), p(0)), falls i = 0 (3) (G(i, 0), P(i, 0)) = (g(i), p(i)) "o" (G(i – 1, 0), P(i – 1, 0))sonst,
    wobei der Operator "o" als: (g_1, p_1) 0 (g_r, p_r) = (g_1 + (p_1•g_r), p_1•p_r) (4)definiert ist.
  • Das Symbol "+" repräsentiert in der obigen Gleichung eine logische ODER-Operation.
  • Da der Operator "o" kommutativ ist, kann demonstriert werden, dass Folgendes abgeleitet werden kann: (G(n, m), P(n, m)) = (G(n, k + 1), P(n, k + 1)) o (G(k, m), P(k, m)) (n > k☐≥ m) (5)und ((G(n, m), P(n, m)) = (G(n – m, 0), P(n – m, 0)) (n > m)
  • Dieselbe Architektur kann für mehrere Schnitte der Operanden verwendet werden, wobei das Ergebnis dieser Berechnungen kombiniert wird, um eine globale Übertragserzeugung zu liefern, die auf dem Operator 'o' beruht. Ein Schnitt eines Operanden umfasst einen Bereich von Bits des Operanden.
  • Der durch den Index k in der obigen Gleichung gelieferte Freiheitsgrad wird verwendet, um den Operanden auf die effizienteste Weise hinsichtlich der Fortpflanzungsverzögerung zu schneiden. Dies erfolgt durch Minimieren der globalen Fortpflanzungszeit durch den Schnellübertragsgenerator.
  • Um eine Null-Erfassung in einer Summe zu veranschaulichen, wird ein einfaches Beispiel der Addition dreier Paare von 2-Bit-Binärzahlen a und b betrachtet:
    a: 00 01 10
    b: 00 11 10
    p: 00 10 00
    g 00 01 10
  • Es wird angemerkt, dass die Terme a und b vertauscht werden können. Um dies auf eine n-Bit-Addition zu verallgemeinern, wird ein neuer Null-Term (die unten stehende Gleichung 8) definiert, der mit den obigen Gleichungen (1) und (2) kombiniert werden kann, um eine Menge von drei Gleichungen (6), (7) und (8) zu bilden, um ein Bit p(i), ein Bit g(i) und ein Bit Null(i) zu definieren: g(i) = a(i)•b(i) (6) p(i) = a(i)⨁b(i) (7) Null(i) = –(a(i) + b(i)) (8)
  • Die Darstellung "~(a(i) + (b(i))" gibt das Komplement von "(a(i) + b(i))" an.
  • Eine Kombination der Definitionen der drei wie in den obigen Gleichungen (6), (7) und (8) definierten Bits führt zu einer Zustandsmaschinendefinition 1400 eines wie in 10 veranschaulichten Null-Vorausberechnungsmechanismus, in dem die Zustände des Systems wie folgt sind:
    NULL(i, 0) = Zustand null (1402)
    G(i, 0) = erzeuge Zustand (1404)
    P(i, 0) = pflanze Zustand fort (1406).
  • Die Gleichungen für die Definition der Zustände NULL(i, 0), G(i, 0) und G(i, 0) sind: NULL(i, 0) = null(i) NULL(i – 1, 0) (9) G(i, 0) = g(i) NULL(i – 1, 0) (10) P(i, 0) = p(i)(G(i – 1, 0) + P(i – 1, 0)). (11)
  • Somit wird im Bit i eine Null (Z) erfasst, falls einer dieser drei Zustände ermittelt wird. Z(i, 0) = NULL(i, 0) ∥ G(i, 0) ∥ P(i, 0) (12)
  • Mit anderen Worten heißt das, dass die Addition von zwei Operanden zu einer Null führt, falls ein Zustand der Art erzeugt wird, dass ein Index k (0 < k < n) ermittelt wird, so dass: p(n – 1)... p(k – 1) g(k) Null(k – 1) ... Null(0) falls (0 < k < n) (13)ist.
  • Um unter Verwendung der oben beschriebenen Schnellübertragserzeugungs-Architektur eine Null-Erfassung zu erzeugen, wird ein Operator mit den gleichen Eigenschaften wie der Operator "o" definiert. Dieser kann aus der obigen Gleichung (13) abgeleitet werden. Tatsächlich führen zwei Operandenschnitte (n, k + 1) und (k, m) zu einer Null, falls sie die oben in Gleichung (13) beschriebene Eigenschaft haben. In den folgenden beiden Fällen wird in einem Schnitt (n, m) eine Null erfasst:
    Der Zustand des Schnitts (k, m) sind alles Nullen
    (A)
    der Zustand von (n, k + 1) ist ein zero_detect (d. h. der Gleiche, wie einer der Zustände bei (12)) (B)
    oder
    der Zustand von (k, m) ist ein zero_detect und der Schnitt enthält ein "g"
    (C)
    der Zustand von (n, k + 1) sind alles p
    (D)
    Dies führt zu der folgenden Gleichung: Z(n, m) = ((Z(k, m) und ~G(k, m) und Z(n, k + 1l)) oder (Z(k, m) und G(k, m) und P(n, k + 1))
  • Figure 00380001
  • Die Terme G(i, j) und P(i, j) können ebenfalls den Addierer-Schnellübertragserzeugungs-Zwischenergebnissen entnommen werden. Somit wird der Null-Erfassungs-Mechanismus dadurch erreicht, dass der Operator "o" auf folgende Weise geändert wird, um einen Operator "u" zu bilden, der wie folgt definiert ist: (g_1, p_1, z_1) u (g_r), p_r, z_r) = (g_1 + (p_1•g_r), p_1•p_r, (z_1•z_r•(~g_r)) + p_1•z_r•g_r)
  • 11 veranschaulicht eine repräsentative Implementierung eines zeitoptimalen 5-Bit-Addierers, der ein Feld von Zellen C(i, j) enthält, wobei er Zellen CC enthält, die den Operator "u" für die Kombination des Vorausberechnungs-Zwischensignals und Zellen CB für die Weiterleitung von Vorausberechnungs-Zwischensignalen enthält. Es ist die Architektur eines 5-Bit-Addierers gezeigt. Schnittgrenzen stehen in Klammern (i, j). Eine Schnittgrenze ist die Grenze zwischen Schnitten. Jede Spalte in 11 repräsentiert eine Bitstelle, wobei die Bitstellen von einer niedrigstwertigen Bitstelle rechts zu aufeinander folgend höheren Bitstellen nach links zunehmen.
  • Wie in 11 veranschaulicht ist, wird das Feld für eine 5-Bit-Operation für eine 2-Bit-Operation in ein erstes Unterfeld 1408 und für eine 3-Bit-Operation in ein zweites Unterfeld 1410 geschnitten und durch Kombinieren der zwei Zwischenergebnisse über den Operator "u" (z. B. (4, 4) u (3, 2) = (4, 2)) das globale Ergebnis erhalten.
  • Die Eingaben für die Bits B0–B4 werden den Zellen der ersten Zeile 1412 zugeführt. Die Vorausberechnungs-Zwischensignale laufen wie durch die Pfeile angegeben über die zweite Zeile 1413 und über die dritte Zeile 1414 und nach links nach oben durch. Die Signale werden mit einer Verzögerung, die der Zeit entspricht, die das Kombinieren der Zwischenergebnisse dauert, von einer Zeile zur nächsten übergeben und horizontal zu den anderen Zellen übertragen. Das Vorausberechnungszwischenergebnis von der ersten 2-Bit-Operation 1408 wird in der Zelle 1415 erzeugt und der dritten Zeile 1414 der Zellen der Drei-Bit-Operation zugeführt, um an einem vertikalen Ausgang von der Zelle 1416 das globale Ergebnis zu bilden.
  • Es kann gezeigt werden, dass das carry_in die oben beschriebene Übertragserzeugungsarchitektur nicht beeinflusst und ganz am Ende der Berechnung berücksichtigt werden kann. Dies kann durch Rekursion demonstriert werden:
    • 1) Das carry_out von dem ersten 1-Bit-Schnitt ist: c(0) = G(0, 0) + p(0, 0)·carry_in.
    • 2) Unter der Annahme dass I existiert, so dass c(i) = G(i, 0) + P(i, 0)•carry_in ist. c(i + 1) = g(i + 1) + p(i + 1)•c(i) = g(i + 1) + p(i + 1)•(G(i, 0) + P(i, 0) + carry_in) = g(i + 1) + p(i + 1)•G(i, 0) + p(i + 1)•P(i, 0)•carry_in = (g(i + 1) + ,0) p(i + 1)•G(i, 0)) + ~(i + 1)•P(i, 0))•carry_in = C (i + 1, 0) + P(i + 1, 0)•carry~in
  • Somit kann die Auswirkung des carry in auf das endgültige Ergebnis gemäß dem fast carry-Erzeugungsschema berechnet werden. Diese Eigenschaft trifft auch auf die Null-Erfassung zu. Tatsächlich wird dann, wenn carry in = 0 ist, eine Null erfasst – falls die Eigenschaft in Gleichung (13) bestätigt wird, während dann, wenn carry_in = 1 ist, eine Null erfasst wird, falls der n-Bit-Zustand alles p sind. Dies fühit zu der Gleichung: zero_detect = carry_in•Z(n – 1, 0) + carry_in•P(n – 1, 0).
  • Das endgültige Ergebnis der Null-Erfassung kann geliefert werden, um die Vorausberechnung eines Null-Ergebnisses zu ermöglichen, um eine frühe Angabe dieses Null-Ergebnisses zu liefern.
  • 11A veranschaulicht die Eingänge und Ausgänge für eine der Zellen CC(i, j) 1420, die in 11 als ein geschlossener Kasten gezeigt sind. Dieser Typ implementiert die Operation "u" und besitzt im allgemeinen Fall sowohl vertikal als auch horizontal die folgenden Eingänge und Ausgänge:
    vertikaler Eingang (1422): p_r, g_r, z_r
    horizontaler Eingang (1424): p_1, g_1, z_1
    horizontaler Ausgang (1426): p_1, g_1, z_1
    vertikaler Ausgang (1428): P, G, Z = (p_r, g_r, z_r) u (p_1, g_1, z_1)
  • Es ist zu sehen, dass eine horizontale Eingabe (falls vorhanden) einfach an den horizontalen Ausgang 1424, 1424 übergeben wird (Übertragungsoperation). Dies wird ohne Änderung und ohne Verzögerung ausgeführt, so dass das Ausgangssignal im Wesentlichen zu der Zeit verfügbar ist, zu der das Eingangssignal verfügbar ist. Außerdem ist zu sehen, dass die vertikale Ausgabe 1428 eine wie durch den Operator "u" definierte Kombination der vertikalen Eingabe 1422 und der horizontalen Eingabe 1424 ist. Dieser Prozess dauert eine bestimmte Zeit, so dass die vertikale Ausgabe 1428 kurz nach den vertikalen und horizontalen Eingaben 1422, 1424 verfügbar ist. Wie in 11 gezeigt ist, benötigen die einzelnen Zellen je nach ihrer Lage in dem Feld keine vollständige Menge von Eingaben und Ausgaben.
  • 11B veranschaulicht die Eingaben und Ausgaben für eine der Zellen CB(i, j) 1430, die in 11 als ein offener Kasten gezeigt sind. Wie im Folgenden veranschaulicht ist, leitet dieser Zellentyp einfach Signale von den Eingängen an die Ausgänge der Zellen weiter:
    vertikaler Eingang (1432): p_r, g_r, z_r
    horizontaler Ausgang (1436): p_1, g_1, = p_r, g_r, z_r
    vertikaler Ausgang (1438): p_r, g_r, z_r
  • Die horizontalen Ausgangssignale (p_1, g_1, z_1) bei 1436 sind Kopien der vertikalen Eingangssignale (p_r, g_r, z_r) von 1432, die durch einen Puffer "verstärkt" worden sind. Die vertikalen Ausgangssignale (p_r, g_r, z_r) bei 1438 sind die vertikalen Eingangssignale (p_r, g_r, z_r) von 1432, die durch einen Puffer "verstärkt" worden sind. Ein vertikales Eingangssignal 1432 wird, falls vorhanden, an die horizontalen und vertikalen Ausgänge 1436 und 1438 übergeben, obgleich die Ausgabe in Bezug auf die Eingabe um einen Betrag, der der Verzögerung entspricht, die beim Erzeugen eines Kombinationssignals in einer der Kombinationszellen CC 1420 beteiligt ist, verzögert wird. Es wird angemerkt, dass die einzelnen Zellen CB 1430 je nach der Lage in dem Feld, wie in 11 gezeigt ist, vertikale Eingänge und horizontale und/oder vertikale Ausgänge haben.
  • Die durch die Pufferzellen gelieferte Verzögerung in vertikaler Richtung wird benötigt, damit die Fortpflanzung der Signale in der Richtung nach oben in 11 parallel zu jeder Spalte läuft. Die horizontale Fortpflanzung ist effektiv sofort, so dass an dem vertikalen Ausgang (wo vorgesehen) der letzten Zelle in der vertikalen Richtung (d. h. in der obersten Zelle, wie in 11 gezeigt ist) für jede Bitstelle ein Ergebnis verfügbar ist.
  • Wie oben beschrieben wurde, ist das in 11 gezeigte Beispiel effektiv in Unterfelder getrennt, wobei sich in jedem Unterfeld Vorausberechnungs-Zwischensignale über die verschiedenen Zellen nach links und oben fortpflanzen, wo bei die Ausgabe des ersten Unterfelds mit der Ausgabe der zweiten Zelle in der dritten Zeile (d. h. in der obersten Zeile der Zellen) kombiniert wird.
  • Diese Vorausberechnungs-Zwischensignale des Betriebs des Fünf-Bit-Beispiels der Operation aus 11 sind in der unten stehenden Tabelle 4 gezeigt.
  • Figure 00420001
    Tabelle 4
  • Da in vielen Anwendungen die Null-Vorausberechnungs-Zwisehenerfassungsergebnisse, die für die verschiedenen Bitstellen in der obersten Zellenzeile verfügbar sind, nicht benötigt werden, kann in diesen Fällen allein die linke oberste Zelle (in 11 die Zelle CC(4, 0)) als ein Operator gehalten werden, während eine oder mehrere der verbleibenden Zellen in dieser Zeile (wo die Zwischener gebnisse nicht benötigt werden) durch Operatoren "o" ersetzt werden, um unnötige Logik zu vermeiden und die Gesamtleistung zu verbessern. Allerdings können an spezifischen Bitstellen, wo in einer Ausführungsform Null-Vorausberechnungs-Zwischenergebnisse für Zwischenbitstellen benötigt werden, "u"-Operatorzellen vorgesehen sein.
  • 12 ist ein schematischer Blockschaltplan eines Beispiels einer Schaltungsanordnung 1450, die Logikgatter zur Realisierung des Operators "u" in einer der "CC"-Zellen 1420 aus 11A enthält. In diesem Diagramm sind die in 11A gezeigten Eingänge 1422 und 1424 auf der linken Seite der Figur vorgesehen, während die Ausgänge 1426 und 1428 auf der rechten Seite gezeigt sind. Wie in 12 zu sehen ist, enthält die Schaltungsanordnung für den Operator einen Inverter, vier UND-Gatter und zwei ODER-Gatter. Es ist zu sehen, dass die vorstehenden Gatter den Operator "u" implementieren. Natürlich können andere Gatterkombinationen verwendet werden, um den Operator "u" zu implementieren.
  • 13 ist ein schematischer Blockschaltplan eines Beispiels einer Schaltungsanordnung 1460 zur Implementierung einer der Pufferzellen CB aus 11B. In diesem Diagramm sind die in 13 gezeigten vertikalen Eingänge 1432 auf der linken Seite der Figur vorgesehen, während die horizontalen und vertikalen Ausgänge 1436 und 1438 auf der rechten Seite gezeigt sind. Wie in 13 zu sehen ist, enthält die Schaltungsanordnung drei Pufferschaltungen (Verzögerungsschaltungen), eine für jeden der Eingänge 1432 g_r, p_r und z_r. Der Verzögerungsfaktor für die Pufferschaltungen wird so gewählt, dass er an die durch die Schaltungsanordnung zum Ausführen der Operation "u" auferlegte Verzögerung angepasst ist. Die Ausgaben von den Pufferschaltungen werden je nach Lage der Pufferzelle CB in dem in 11 veranschaulichten Feld den horizontalen und/oder vertikalen Ausgängen 1436 und 1438 zugeführt.
  • 14 ist ein schematischer Blockschaltplan eines repräsentativen Beispiels einer Null-Erfassungsschaltung für eine letzte Vierzig-Bit-Addiererstufe 140 einer Multiplikations- und Akkumulationseinheit 100. In diesem Beispiel ist die Null-Vorausberechnung mit vierzig Bits und außerdem mit sechzehn Bits erforderlich.
  • In 14 liefert eine erste Null-Vorausberechnungsstufe 1472 anhand der ihr zugeführten 16 Bits B0–B15 eine Null-Vorausberechnungsausgabe. Diese sechzehn Bits B0–B15, für die Signale geliefert werden, entsprechen den sechzehn niedrigstwertigen Bits des Ergebnisses der Arithmetikeinheit. Außerdem werden die Arithmetikergebnisbits der Sättigungsstufe des MAC zugeführt. Bei 1477 wird das Null-Vorausberechnungs-Ergebnissignal 1473 in 16 Bits ausgegeben. Außerdem wird es einem logischen UND-Gatter 1478 zugeführt, wo das Signal mit einem Teil-Null-Vorausberechnungs-Ergebnissignal 1475 von einer zweiten Null-Vorausberechnungsstufe 1474 addiert wird. Die zweite Null-Vorausberechnungsstufe 1474 liefert anhand der Signale für ihr zugeführte 24 Bits eine Null-Vorausberechnungsausgabe. Die vierundzwanzig Bits, für die Signale geliefert werden, entsprechen den vierundzwanzig höchstwertigen Bits B16–B39 des Vierzig-Bit-Arithmetikeinheitsergebnisses. Die Arithmetikergebnisbits B16–B39 werden ebenfalls der letzten Addiererstufe 140 des MAC zugeführt, wobei die Ausgabe der letzten Addiererstufe das Ergebnis Pr ist, das daraufhin an die Sättigungsstufe übergeben wird.
  • Durch Kombination des 16-Bit-Null-Vorausberechnungs-Ergebnissignals mit dem 24-Bit-Null-Vorausberechnungs-Ergebnissignal in dem UND-Gatter 1478 kann an dem Ausgang des UND-Gatters 1478 ein globales Null-Vorausberechnungs-Ergebnissignal 1479 in 40 Bits erzeugt werden.
  • 15 veranschaulicht ausführlicher den Anschluss des Null-Varausberechnungsmechanismus aus 14 in einer MAC-Einheit 100. Die Ausgaben von einem Partialprodukt-Reduzierungsbaum 130 des MAC werden dem letzten Vierzig-Bit-Addierer 140 und dem Null-Vorausberechnungsmechanismus 1470 zugeführt. Die Ausgaben des letzten Addierers und des Null-Vorausberechnungsmechanismus umfassen den globalen Null-Vorausberechnungsmerker 1479 für den Akkumulator an vierzig Bits, das Ergebnis des letzten Addierers und den Null-Vorausberechnungsmerker des 16-ten Bits. Die Ergebnisse von dem letzten Addierer 1482 und der Null-Vorausberechnungsmerker 1477 des 16-ten-Bits werden der Sättigungsstufe 1476/150 des MAC zugeführt, von der die Ausgabe 1483/154 einem Akkumulatorregister 1484 zugeführt wird.
  • In der letzten Sättigungsstufe 150 wird vorzugsweise ein Überlauf an den Erweiterungsbits [Bitstellen 39:32] erfasst und das endgültige Ergebnis entweder auf eine 32-Bit-Maximaldarstellung von "0x7fffffff" oder von "0x80000000" oder auf eine 40-Bit-Maximaldarstellung von "0x7ffffffffff" oder von "0x8000000000" gezwungen, falls die Sättigungsbetriebsart aktiv oder "ein" ist. Falls die Rundungsbetriebsart "ein" (oder aktiv) ist, werden die 16 lsbs in dieser Stufe gelöscht.
  • 16 zeigt eine Schaltung zum Decodieren der Erweiterungsbitstellen des endgültigen Ergebnisses, um bei Bedarf ein Überlaufbit zu erzeugen. Weiter sind in 16 zwei Eingangsabschnitte zu sehen, wo die Bitstellen des Ergebnisses Add31–Add34 an ein erstes NAND-Gatter 1210 und daraufhin getrennt an ein erstes NOR-Gatter 1214 geliefert werden. Ähnlich werden die Bitstellen des Ergebnisses Add36–Add39 an ein zweites NAND-Gatter 1212 und daraufhin getrennt an ein zweites NOR-Gatter 1216 geliefert. Die verbleibende Bitstelle des Ergebnisses Add35 wird an einen ersten Inverter 1218 und daraufhin getrennt an einen zweiten Inverter 1220 geliefert. Die Ausgaben der zwei NAND-Gatter 1210, 1212 und die Ausgabe des ersten Inverters 1218 werden als die Eingaben an das ODER-Gatter 1222 geliefert. Die Ausgabe des ODER-Gatters 1222 wird als eine Eingabe in ein Zweieingangs-UND-Gatter 1226 und als eine Eingabe in ein Dreieingangs-UND-Gatter 1228 geliefert. Die Ausgaben der zwei NOR-Gatter 1214, 1216 und die Ausgabe des zweiten Inverters 1220 werden als die Eingaben in ein NAND-Gatter 1224 geliefert. Die Ausgabe des NAND-Gatters 1224 wird als die zweite Eingabe in das Zweieingangs-UND-Gatter 1226 und als die zweite Eingabe in das Dreieingangs-UND-Gatter 1228 geliefert. Die dritte Eingabe in das Dreieingangs-UND-Gatter 1228 ist ein Sättigungsbetriebsartsignal 1230. Vorzugsweise entspricht dieses Sättigungssignal einem Sättigungsbetriebsartbit, das auf einen logischen Pegel von Eins "eingestellt" wird, um bei Überläufen oder Unterläufen gesättigte Ergebnisse zu erzeugen. Die Ausgabe des Zweieingangs-UND-Gatters 1226 ist der Überlaufmerker oder das Überlaufsignal 1232 (144 in 1) für die Erweiterungsbits, wobei eine "Null" keinen Überlauf und somit keine Sättigung angibt, während eine "Eins" einen Überlauf und ein gesättigtes Ergebnis angibt, wenn die Sättigungsbetriebsart aktiv ist. Die Ausgabe des Dreieingangs-UND-Gatters 1228 ist ein Sättigungssteuersignal 1234 Satc. Dieses Sättigungssteuersignal wird als eine Eingabe den hier später diskutierten Sättigungssteuerschaltungen zugeführt.
  • Wie in 16 gezeigt ist, wird der Überlauf in den Erweiterungsbits 39–31 begonnen, wenn das in 16 durch Add39–Add31 repräsentierte endgültige Ergebnis entweder von "0x1ff' oder von "0x000" verschieden ist. Daraufhin wird anhand des Vorzeichens des Ergebnisses an der Bitstelle 39 (Add39) der Klemmwert gewählt. Falls das Steuersignal Rnd hoch (auf einem logischen Pegel von eins) ist, wird das endgültige Ergebnis in den lsb-Bitstellen Add15–Add0 in allen Fällen auf "0x0000" eingestellt.
  • Um diese verschiedenen Sättigungswerte zu erzeugen, sind spezielle Sättigungsschaltungen erzeugt worden. Insbesondere werden eine Sättigungssteuerschaltung für die Bitstellen 39 bis 17 und eine Sättigungssteuerschaltung für die Bitstellen 15 bis 0 bereitgestellt. 17A zeigt eine Sättigungssteuerschaltung für Bitstellen niedriger als 15 und 17B zeigt eine für die Bitstellen 39–17. 17C zeigt eine Sättigungssteuerschaltung für die Bitstelle 16.
  • In 17A ist nun eine Schaltung 1340 für die Sättigungssteuerung zu sehen, die für die Bitstellen 39–17 nutzbar ist. Genauer ist ein Eingangssignal Addi zu sehen, das das Ergebnisbit für die i-te Bitstelle ist. Das Signal Sg ist das durch das Bit Addi für die Bitstelle 39 (d. h. Add39) repräsentierte Vorzeichenbit. Das Signal Satc ist das durch die Überlauferfassungslogik aus 16 erzeugte Sättigungssteuersignal. Das Signal Fi ist der Wert, auf den die Bitstelle "gezwungen" wird, wenn Sättigung auftritt. Das Signal Addi ist eine Eingabe in ein Zweieingangs-UND-Gatter 1320. Das Signal Satc ist eine Eingabe in einen Inverter 1328, eine Eingabe in ein erstes Dreieingangs-UND-Gatter 1322 und eine Eingabe in ein zweites Dreieingangs-UND-Gatter 1324. Die Ausgabe des Inverters 1328 ist die zweite Eingabe in das UND-Gatter 1320. Das Signal Sg ist die Eingabe in einen Inverter 1330 und eine zweite Eingabe in das zweite Dreieingangs-UND-Gatter 1324. Das verbleibende Eingangssignal Fi ist die dritte Eingabe in das erste Dreieingangs-UND-Gatter 1322 und die Eingabe in den Inverter 1332. Die Ausgabe des Inverters 1332 ist die dritte Eingabe in das zweite Dreieingangs-UND-Gatter 1324. Die Ausgaben der drei UND-Gatter 1320, 1322, 1324 werden als die Eingaben in das ODER-Gatter 1326 geliefert, dessen Ausgabe die Sättigungswertausgabe So ist.
  • In 17B ist nun eine Schaltung 1350 zur Sättigungssteuerung zu sehen, die für die Bitstellen 15–0 nutzbar ist. Genauer ist ein Eingangssignal Addi zu sehen, das das Ergebnisbit für die i-te Bitstelle ist. Das Signal Sg ist das durch das Bit Addi für die Stelle 39 (d. h. Add39) repräsentierte Vorzeichenbit. Das Signal Satc ist das durch die Überlauferfassungslogik aus 16 erzeugte Sättigungssteuersignal. Das Signal Fi ist der Wert, auf den die Bitstelle "gezwungen" wird, wenn Sättigung auftritt. Das Signal Addi ist eine Eingabe in ein Dreieingangs-UND-Gatter 1360. Das Signal Satc ist eine Eingabe in einen Inverter 1368, eine Eingabe in ein erstes Viereingangs-UND-Gatter 1362 und eine Eingabe in ein zweites Viereingangs-UND-Gatter 1364. Die Ausgabe des Inverters 1368 ist die zweite Eingabe in das Dreieingangs-UND-Gatter 1360. Das Signal Sg ist die Eingabe in den Inverter 1370 und eine zweite Eingabe in das zweite Viereingangs-UND-Gatter 1364. Das verbleibende Eingangssignal Fi ist die dritte Eingabe in das erste Viereingangs-UND-Gatter 1362 und die Eingabe in den Inverter 1372. Die Ausgabe des Inverters 1372 ist die dritte Eingabe in das zweite Viereingangs-UND-Gatter 1364. Das Rundungsbetriebsart-Steuersignal (Rnd) ist die Eingabe in den Inverter 1374. Das Rundungsbetriebsart-Steuersignal (Rnd) ist das Signal, das die Rundung, d. h. die Addition von 2+15 zu dem Ergebnis, steuert und wird verwendet, um die 16 lsbs unabhängig von dem Wert des Signals Fi auf eine "Null" zu zwingen. Die Ausgabe des Inverters 1374 ist die dritte Eingabe in das Dreieingangs-UND-Gatter 1360, die vierte Eingabe in das erste Viereingangs-UND-Gatter 1362 und die vierte Eingabe in das zweite Viereingangs-UND-Gatter 1364. Die Ausgaben der drei UND-Gatter 1360, 1362, 1364 werden als die Eingaben in das ODER-Gatter 1366 geliefert, dessen Ausgabe die Sättigungswertausgabe So ist.
  • In 17C ist nun eine Schaltung 1380 zur Sättigungssteuerung zu sehen, die für die Bitstelle 16 nutzbar ist. Genauer ist zu sehen, dass 13C abgesehen davon, dass das dem Inverter 1374 aus 17B zugeführte Signal Rnd durch das Ausgangssignal UR von einem Zweieingangs-UND-Gatter 1382 ersetzt worden ist, nahezu gleich 17B ist. Die zwei Eingaben in das UND-Gatter 1382 sind das Signal für die Rundungsbetriebsart ohne systematische Abweichung (URM) und ein Signal Z16, das eine Ausgabe eines Abschnitts der ZRA-Schaltung ist, die angibt, dass die Bitstellen 15–0 (die ersten 16 Bits) null sind. Das URM-Signal ist aktiv, wenn eine Rundung ohne systematische Abweichung gewünscht ist (z. B., wenn die Rundungsbetriebsart ohne systematische Abweichung aktiv ist). Die Wirkung des Signals UR ist es, zu verhindern, dass der Wert Addi zur Ausgabe So wird, da die Sättigung Vorrang gegenüber Rundung ohne systematische Abweichung hat. Somit wird ein gerundetes Ergebnis, das überläuft, gesättigt, z. B. für 32 Bits auf einen Wert 7fff0000 und nicht auf 7ffe0000 gezwungen, da die Bitstelle 16 (das 17-te Bit) des letzten Addierers auf null gezwungen wird.
  • Die Werte der 16 lsbs Fi sind für einen Überlauf eine "Eins" und für einen Unterlauf eine "Null". Die Werke der msbs über der Bitstelle 16 hängen davon ab, ob ein Überlauf oder ein Unterlauf aufgetreten ist, und außerdem davon, ob die Sättigung für 32 Bits oder 40 Bits ist.
  • Wenn die Rundungsbetriebsart ohne systematische Abweichung ausgewählt ist (RDM aktiviert ist) und die Bitstellen 15 bis 0 alle null sind (d. h. das Signal Z16 aktiv ist), ist die Ausgabe eines UND-Gatters 1382, das das Signal UR bildet, hoch. Das Signal UR wird durch den Inverter 1374 invertiert, um das Signal UR zu erzeugen, das in diesem Fall tief ist. Das Tief-Signal hat die Wirkung, die UND-Gatter 1360, 1362, 1364 in der Weise zu dominieren, dass die Ausgabe des ODER-Gatters 1366 null ist, was die Wirkung hat, die Bitstelle 16 auf null zu zwingen.
  • Wenn entweder die Rundungsbetriebsart ohne systematische Abweichung nicht ausgewählt ist (RDM nicht aktiviert ist) oder die Bitstellen 15 bis 0 nicht alle null sind (das Signal Z16 ist dann nicht aktiv), ist die Ausgabe des UND-Gatters 1362, das das Signal UR bildet, tief. Das invertierte Signal UR von dem Inverter 1374, d. h. das Signal UR, ist dann hoch, so dass das Signal UR die UND-Gatter 1360, 1362, 1364 nicht dominiert. Im Ergebnis wird die Einstellung der Bitstelle 16 gemäß der Sättigungsbetriebsart in der gleichen Weise wie für die Bitstellen 39 bis 17 gesteuert. Es ist klar, dass die Zelle für die Bitstelle 16 ohne das Signal UR und die Schaltungsanordnung zum Erzeugen dieses Signals der der Bitstellen 39 bis 17 entspricht.
  • Die Anwesenheit der wie oben beschriebenen speziellen Sättigungszelle aus 17C, um das 17-te Bit (Bitstelle 16) auf null zu zwingen, kann zusammen mit der Null-Vorausberechnungs-Schaltungsanordnung verwendet werden, um auf effiziente Weise eine Rundung ohne systematische Abweichung zu liefern. Es besteht ein Bedarf daran, eine Rundung zu liefern, die keine systematische Abweichung einführt und effizient implementiert werden kann. Die Schaffung der vorstehenden Struktur schafft diese Funktionalität.
  • Dementsprechend folgt nun eine Erläuterung, was eine Rundung ohne systematische Abweichung ist und ihrer Wirkung. Die Rundung ohne systematische Abweichung unterscheidet sich von der herkömmlichen Rundung nur in einem wie in 18A veranschaulichten Fall. 18A zeigt, wenn ein Rechenergebnis genau P,5 ist, wobei P,5 der Wert halb zwischen P und P + 1 ist, wobei P ein Wert ist, der mit einer vorgegebenen Genauigkeit ausgedrückt ist. In dem besonderen Beispiel ist P ein Binärwert, für den die 16 lsbs null sind.
  • Wenn die Rundung ohne systematische Abweichung ausgewählt ist und in den 16 lsbs eines Rechenergebnisses eine Null erfasst wird, wird das 17-te Bit (Bitstelle 16) auf 0 gezwungen. Dadurch, dass in dem letzten 32-Bit-Addierer bereits eine Addition von 1 an der Bitstelle 15 aufgetreten ist und die 16 lsbs einen Wert 0 haben, führt dies zu einer Rundung ohne systematische Abweichung. Die 18B und 18C veranschaulichen die zwei alternativen Zustände für die Bit stelle 16 und veranschaulichen, dass unabhängig davon, welcher Wert in der Bitstelle 16 ist, dieser auf 0 gezwungen werden muss, falls eine Null-Erfassung in den Bitstellen 15–0 stattgefunden hat.
  • Die Bestimmung, ob die 16 lsb-Bitstellen null sind, wird unter Verwendung des zuvor anhand der 11 bis 15 erwähnten Null-Ergebnis-Vorausberechnungsansatzes erfasst.
  • Insbesondere wird die Null-Vorausberechnung an einem Fortpflanzungsbaum einer Carry-Look-Ahead-Struktur ausgeführt, die ein Abschnitt des letzten Addierers 140 ist. Dieser verwendet den Übertrag und die Summe, die aus dem Partialprodukt-Reduzierungsbaum erzeugt werden. Aus dem Übertrag und aus der Summe wird durch Abbilden des Fortpflanzungsbaums auf das Eins-Null-Ergebnis der ersten 16 Bits ein Null-Ergebnis für die Bitstelle 16 vorausberechnet. Dies liefert eine Fortpflanzungsgeschwindigkeit, die wenigstens so hoch wie die Übertragsfortpflanzung des letzten Addierers ist. Aus dem Null-Ergebnis kann vorausgesagt werden, ob die Bitstelle 16 auf null gezwungen werden muss.
  • Außerdem wird eine Erfassung eines Überlaufs in 40 Bits geschaffen. Ein Steuerbit ovf40 ermöglicht einen Überlauf in 32 Bits, wenn es aus ist, oder einen Überlauf in 40 Bits, falls es ein ist. Diese Erfassung findet in den letzten 8 Bits des letzten Addierers statt. Ein 40-Bit-Überlauf tritt auf, wenn die endgültige Summe für das Bit 39, S39, verschieden von der endgültigen Summe für das Bit 40, S40, ist. S40 wird nicht berechnet, sondern kann, wie durch die in 19A gezeigte Schaltung und die Logik aus 19B angegeben ist, gefolgert werden. Ovf ist dann direkt mit 2 XOR-Gattern implementiert. Das endgültige Ergebnis wird dann auf 0x7ffffffffff oder 0x8000000000 gezwungen, falls die Sättigung (ovm) ein ist.
  • Nachdem nun die MAC-Einheit 100 in Bezug auf ihre Architektur, Untereinheiten und spezifischen Schaltungen zur Verwendung in den Untereinheiten beschrieben worden ist, geht die Diskussion nun dazu über, die MAC-Einheit 100 als einen Block zu betrachten und daraufhin zu identifizieren, welche Signale die sem Block als Eingaben zugeführt werden und welche Signale dieser Block ausgibt. Darauf folgt eine Diskussion des gemeinsamen Anordnens zweier dieser Blöcke und des Identifizierens von Signalen für diese duale MAC-Konfiguration. Darauf folgt eine kurze Diskussion eines bevorzugten DSP-Kerns, der eine duale MAC-Einheit der vorliegenden Erfindung nutzt.
  • In 20 ist nun ein Diagramm der Eingangs- und Ausgangssignale für eine MAC-Einheit 100 der vorliegenden Erfindung zu sehen. Genauer ist ein höherer Funktionsblockschaltplan einer MAC-Einheit 100 der vorliegenden Erfindung zu sehen, der die Signale, die dem MAC als Eingaben zugeführt werden, und die Signale, die von dem MAC als Ausgaben geliefert werden, zeigt.
  • Wie aus 20 zu sehen ist, werden drei Operanden als Eingaben in die MAC-Einheit, eine 17-Bit-Eingabe 102 des X-Operanden 0, eine 17-Bit-Eingabe 104 des Y-Operanden 1 und ein 40-Bit-Operand 142 der dritten Zahl, geliefert. Die Ausgaben sind ein endgültiges 40-Bit-Ergebnis 154, eine Null-Erfassung für 40 Bits (Z40), eine Null-Erfassung für 32 Bits (Z32) und ein Überlaufmerker (OV). Die Eingangsstatussignale sind st1sb_tr[1] – st1sb_tr[5] und entsprechen den Statusbits GSM, RDM, FRCT, M40 und SATD. Das Signal rndm1 entspricht dem Rundungsbetriebsart-Auswahlsteuersignal. Das Signal gm1 entspricht dem Steuersignal zur Auswahl zwischen 32-Bit-Operationen oder 40-Bit-Operationen. Das Additions/Subtraktions-Signal 122b wird ebenfalls als ein Eingangssignal geliefert. Außerdem werden auch verschiedene Signale geliefert, die auswählen, ob die Operanden vorzeichenbehaftet oder vorzeichenlos sind, und den durch die MAC-Einheit 100 auszuführenden Betrieb bestimmen (obgleich sie in 20 nicht gezeigt sind). Ferner werden an die MAC-Einheit 100 verschiedene Taktsignale geliefert (die in 20 nicht gezeigt sind).
  • In 21 ist nun ein vereinfachter Blockschaltplan der MAC-Einheit 100 der vorliegenden Erfindung zu sehen, der mit verschiedenen Bussen für Datenquellen und Datenziele verbunden ist. Außerdem ist eine zweite MAC-Einheit 100 zu sehen, die mit derselben Busstruktur verbunden ist. Diese zweite MAC-Einheit 100b ist die gleiche wie die hier beschriebene MAC-Einheit und ihr Betrieb mit der ersten MAC-Einheit wird hier später beschrieben. Wie in 21 zu sehen ist, können die zwei Operanden für die erste MAC-Einheit 100 aus mehreren Quellen einschließlich der Busse B 2110, D 2112, C 2114, K 2116, DR 2118, ACR0 2130 und ACR1 2132 kommen. ACR0 und ACR1 sind die Lesebusse für die Datenregister, die vorzugsweise die Akkumulatorregister enthalten. ACW0 2134 und ACW1 2136 sind die Schreibbusse für diese Datenregister. Der DR-Bus 2118 überträgt Werte von einem Universalregisterbereich. Die Zweieingangsoperanden-Multiplizierer 2160, 2162 wählen aus, welcher Bus einen Operanden an die MAC-Einheit liefert. Das endgültige Ergebnis von der MAC-Einheit wird durch tristabile Treiber 2150 an ACW0 2134 geliefert. Außerdem ist zu sehen, dass ACR1 der MAC-Einheit die dritte Zahl 142 zuführt. Außerdem sind die Verbindungen für die Eingangsstatussignaie und für die Ausgangsmerker zu sehen. Schließlich kann ein Multiplexer 2120 verwendet werden, der zwischen dem Bus D oder C als eine mögliche Eingabe in den Multiplexer 2160 wählt.
  • Auch die zweite MAC-Einheit 100b ist auf ähnliche Weise mit der Busstruktur und mit den Eingangsstatussignalen und mit den Ausgangsmerkern verbunden.
  • In 22 ist nun ein vereinfachter Blockschaltplan der vier derzeit bevorzugten Akkumulatorregister AC0-AC3 22122216 zu sehen. Diese Register sind mit einem Abschnitt der Busstruktur aus 21 verbunden. Somit veranschaulicht 22, wie sich Daten von einem Akkumulator über die Busstruktur zu der MAC-Einheit (oder zu den MAC-Einheiten) und zurück zu dem gleichen oder zu einem anderen Akkumulator bewegen können. 22 veranschaulicht, dass jeder Akkumulator einen Tief-Abschnitt (L-Abschnitt) (15–0), einen Hoch-Abschnitt (H-Abschnitt) (31–16) und einen Schutzbit-Abschnitt (G-Abschnitt) (39–32) hat. Zum Ansteuern der Daten in einem Akkumulator auf verschiedene der Busse können wieder tristabile Treiber (2220) verwendet werden.
  • Vorzugsweise ist eine MAC-Einheit 100 der vorliegenden Erfindung mit zwei Akkumulatoren implementiert. Ein weiteres Merkmal der Erfindung ist die Fähigkeit zum Übertragen des Inhalts aus einem Akkumulator in den anderen. Diese Fähigkeit ist nützlich in Anwendungen wie der Berechnung von Fourier-Transformationen.
  • In einer bevorzugten Ausführungsform ist ein schneller 17 × 17-Bit-Festkomma-Multiplizierer-Akkumulator in CMOS-Technologie hergestellt. Bei seinem Betrieb werden zwei 17-Bit-Operanden, von denen jeder vorzeichenlos oder vorzeichenbehaftet sein kann, multipliziert, um ein 34-Bit-Ergebnis zu liefern. Dieses Ergebnis kann in einen oder in beide 40-Bit-Akkumulatoren geladen werden. Diese Ergebnisse können außerdem zu jedem Akkumulator addiert oder von ihm subtrahiert werden und an einen oder an beide Akkumulatoren zurückgegeben werden. Übertragungs- oder Arithmetikoperationen können eine 16-Bit-Schiebeoperation des Quellakkumulatorinhalts enthalten. Irgendeine Akkumulatoroperation enthält die Bereitstellung einer Rundung auf das nächste 16- oder 32-Bit-Ergebnis.
  • Die Operanden werden an jedem Eingangsport aus einem von zwei Registern ausgewählt. Alle 40 Bits des Akkumulators sind zur parallelen Ausgabe verfügbar. Der 40-Bit- oder 6-msb-Akkumulatorinhalt wird auf Vorzeichen, Null und Überlauf getestet, wobei drei Statusmerker erzeugt werden. Der Überlauf kann durch automatische Ersetzung eines Sättigungswerts anstelle des übergelaufenen Werts korrigiert werden. Rundung und Überlauf werden gemäß spezifischen Steuersignalen begonnen.
  • Die Begrenzung vorzeichenbehafteter Daten im 40-Bit-Format oder in der 16-Bit-Darstellung aus internen Registern wird Sättigung genannt und durch den Merker SATD oder durch spezifische Befehle gesteuert. Der Sättigungsbereich wird durch einen Sättigungsbetriebsartmerker gesteuert, der M40 genannt wird. Die Sättigung begrenzt für jeden 16-Bit-Teil des Ergebnisses den 40-Bit-Wert in dem Bereich von –231 bis 231 – 1 und den dualen 16-Bit-Wert in dem Bereich von –215 bis 215 – 1, falls der Merker M40 aus ist. Falls er ein ist, werden die Werte in dem Bereich von –239 bis –239 – 1 oder von –215 bis 215 – 1 für die duale Darstellung gesättigt. Für den MAC wird das Vorzeichen der Eingangsoperanden wie folgt bestimmt: SI = !UNS UND (Eingabebit 15). M40 wählt zwischen 40-Bit-Opera tionen (wenn "eins") und 32-Bit-Operationen (wenn "null"). Wie oben angemerkt wurde, hängt die Überlauferfassung ebenso wie die Vorzeichen- und Null-Erfassung von M40 ab.
  • Um von einer 40-Bit-Darstellung zu einer 16-Bit-Darstellung zu gehen, muss eine Rundung stattfinden, um die Genauigkeit während der Berechnungen zu erhalten. Die Rundung kann über einen Befehlssatz, über ein dediziertes Bitfeld und über einen RDM (für Rundung ohne systematische Abweichung) genannten Merker gemanagt werden. Deren Kombination führt zu den folgenden Betriebsarten:
    Wenn Rundung (rnd) "ein" ist:
    RDM = 0: erzeugt Rundung auf + unendlich
    Für einen 40-Bit-Datenwert heißt das die Addition von 215 während die 16 niedrigstwertigen Bits (lsbs) auf null gelöscht werden.
    RDM = 1: erzeugt Rundung auf den Nächsten
    Für einen 40-Bit-Datenwert ist dies eine Wahr-Analyse der 16 lsbs,
    um zu erfassen, ob sie in dem Bereich von (i) 215 – 1 bis 0 sind (Wert kleiner als 0,5),
    wo keine Rundung stattfindet, (ii) 215 + 1 bis 216 – 1 (Wert größer als 0,5)
    wo eine Rundung durch Addition von 215 zu dem 40-Bit-Wert stattfindet oder (iii) 215
    (Wert gleich 0,5), wo eine Rundung, durch Addieren von 215 zu dem Datenwert stattfindet, falls der hohe 16-Bit-Teil des 40-
    Bit-Werts ungerade ist.
  • Die 16 lsbs werden für alle drei Fälle unabhängig von der Sättigung auf null gelöscht.
  • Wenn die Rundungsbetriebsart "aus" ist, wird nichts getan.
  • Das Statusbit FRCT (oder FRACT) wird verwendet, um eine Bruchbetriebsart anzugeben. Wenn dieses Statusbit gesetzt ist, wird die Multipliziererausgabe um ein Bit nach links verschoben, um ein zusätzliches Vorzeichenbit zu kompensieren.
  • Die Multiplikationsoperationen arbeiten mit vorzeichenbehafteten oder vorzeichenlosen 16-Bit-Daten (als Operanden für den Multiplizierer) und mit einem 40-Bit-Wert von internen Registern (Register sind Akkumulator). Das Ergebnis wird vorzugsweise in einem der 40-Bit-Akkumulatoren gespeichert. Multiplikation oder Multiplikation/Akkumulation erfolgen gemäß der Steuerung der Betriebsartsteuersignale FRACT, SATD und Runden. Multiplikation oder Multiplikation/Akkumulation werden ebenfalls durch die GSM-Betriebsart beeinflusst, die eine Sättigung des endgültigen Ergebnisses auf "00 7FFF FFFF" (hexa) erzeugt, wenn die zwei Multiplikationsoperanden beide gleich –215 sind und die Betriebsarten FRACT und SATD an sind.
  • Für die Vorzeichenbehandlung werden die Multiplikationsoperanden tatsächlich in 17 Bits codiert (so dass das Vorzeichen für vorzeichenbehaftete 16-Bit-Daten verdoppelt wird). Wenn es nicht anders durch einen Befehl gesteuert wird, werden diese Operanden immer als vorzeichenbehaftet betrachtet. Wenn die Quelle dieser Werte ein internes Register ist, ist eine vorzeichenbehaftete genaue 17-Bit-Berechnung verwendbar. Die in Multiplikations- und Akkumulationsschaltungen der vorliegenden Erfindung verfügbaren Funktionsoperationen sind: MPY – Multiplikationsoperation, MAC – Multiplikation und Addition zum Akkumulatorinhalt und MAS – Subtraktion des Multiplikationsergebnisses von dem Akkumulatorinhalt.
  • Die folgende Tabelle 5 zeigt alle möglichen Kombinationen und entsprechenden Operationen. Die Multiplikations- und die "Multiplikations- und Akkumula tions"-Operationen geben zwei Statusbits oder -merker, d. h. die Null- und Überlauf-(OVF-)Erfassung, zurück.
  • Figure 00560001
    Tabelle 5 rndRDM(): Rundung gemäß Steuerung des Merkers RDM
    • rndRDM(): Rundung gemäß Steuerung des Merkers RDM
    • satM40(): Sättigung gemäß Steuerung des Merkers M40.
  • Vorzugsweise führt die Multiplikations- und Akkumulationseinheit 100 ihre Aufgabe in einem CPU-Taktzyklus aus. Die Eingangsoperanden verwenden eine vorzeichenbehaftete 17-Bit-Darstellung, während die Akkumulation für 40 Bits ist. Arithmetikbetriebsarten, Ausnahmen und Statusmerker werden ebenfalls behandelt. Die Sättigungsbetriebsartauswahl kann ebenfalls dynamisch in dem Befehl definiert werden.
  • Im Folgenden werden mögliche Quellen von Operanden definiert:
  • Figure 00570001
  • Die an MAC-Befehlen beteiligten Schiebeoperationen um 16 zu den lsbs werden alle in der MAC-Einheit ausgeführt, wobei die Vorzeichenfortpflanzung immer ausgeführt wird und das Bit 39 verwendet.
  • Das Ziel der Ergebnisse ist immer eines der internen Datenregister. Tabelle 6 zeigt die zulässigen Kombinationen von Eingaben (x-, y-Ports). Der Akkumulator "a" ist immer ein internes Datenregister; er kann vor der Verwendung um 16 Stellen zu den lsbs verschoben werden.
  • Figure 00580001
    Tabelle 6
  • Aus dem Speicher kommende Daten werden über die Busse D und C übertragen. Um eine automatische Adressierung der Koeffizienten zu ermöglichen, ohne einen Zeiger zu opfern, ist ein dritter dedizierter Bus vorgesehen, der der Bus B genannt wird. Die Koeffizienten- und Datenlieferung kombiniert die Busse B und D wie in 23 gezeigt. Der Bus B ist einer gegebenen Bank der Speicherorganisation zugeordnet. Diese Bank wird als "dynamischer" Speicherbereich für Koeffizienten verwendet.
  • Der Zugriff auf den Bus B wird parallel zu einem Einfach-, Doppelt- oder Lang-Zugriff auf einen anderen Teil des Speicherraums und nur mit einem Einfach-Zugriff auf die zugeordnete Speicherbank unterstützt. Die Adressierungsbetriebsart zum Liefern des Werts B verwendet zum Abtasten der Tabelle eine in einem Spezialzeiger (Mcoef-Speicherkoeffizientenregister) gespeicherte Basisadresse (16 Bits) und einen Inkrementor. Dieser Zeiger wird getrennt gemanagt und kann zum Holen von Daten (typisch "Koeffizienten") inkrementiert oder dekrementiert werden. Um auf den Bussen B, C und D die erforderliche Datenbandbreite zum Holen bereitzustellen, sollte der B-Zugriff an einer anderen Speicherbank als die zwei anderen ausgeführt werden.
  • In 23 ist nun ein vereinfachter Blockschaltplan zu sehen, der die Bus-, Speicher- und Registernutzung durch eine MAC-Einheit der vorliegenden Erfindung zeigt. Genauer ist zu sehen, dass eine erste RAM-Bank verwendet wird, um einen Operanden über den Bus B zuzuführen, während ein zweiter Operand über den Bus D von einer zweiten RAM-Bank (nicht gezeigt) zugeführt wird. Die Ausgabe der MAC-Einheit wird über den Bus 2134 an ein Register (vorzugsweise einen Akkumulator) übergeben und der Registerwert über den Bus 2132 dem MAC zugeführt.
  • Zur Unterstützung des zunehmenden Bedarfs an Rechenleistung und um die Fähigkeit, bei Bedarf die niedrigste (Fläche und Leistung) zu erhalten, kann die MAC-Einheit duale Multiplikations- und Akkumulationsoperationen auf eine konfigurierbare Weise unterstützen. Dies beruht auf mehreren Merkmalen:
    • – Es ist möglich, eine zweite MAC-Hardware mit der gleichen Konnektivität zu den Operandenquellen und -zielen wie die Haupthardware anzuschließen,
    • – der angeschlossene Operator wird angehalten, wenn während der Algorithmusausführung nur ein MAC pro Zyklus benötigt wird,
    • – die Steuerung des zweiten MAC wird über eine Befehlsklasse "dualer MAC" ausgeführt, die Kombinationen der Operationen MPY/MAC/MAS an den zwei Operatoren ermöglicht, deren Decodierung erforderliche Steuersignale zur Torsteuerung des Ausführungstakts des zweiten MAC erzeugt,
    • – hinsichtlich des Durchsatzes erfordert die effizienteste Verwendung der dualen MAC-Ausführung für DSP-Algorithmen eine ununterbrochene Lieferung von 3 Operanden pro Zyklus sowie zwei Akkumulatorinhalten. Das B-Bussystem, das die Architektur der gesamten Busse nicht verletzt, während es weiter eine Zunahme an Rechenleistung bietet, gibt die beste Flexibilität zur Anpassung an diese Durchsatzanforderung. Somit werden der "Koeffizienten"-Bus und seine zugeordnete Speicherbank wie in 24 beschrieben von den zwei Operatoren gemeinsam genutzt.
  • Der Befehl, der diese Ausführung steuert, bietet eine duale Adressierung auf den Bussen D und C sowie alle möglichen Kombinationen für das Operationspaar unter den Operationen MPY, MPYSU, MAC und MAS und vorzeichenbehafteten oder vorzeichenlosen Operationen. Die Ziele (Akkumulatoren) in den Datenregistern können getrennt pro Operation eingestellt werden, wobei aber Akkumulatorenquellen und -ziele gleich sind. Die Rundung ist für beide Operationen gemeinsam. Der CFP-Zeiger- und -Aktualisierungsmechanismus enthält Inkrement/Dekrement oder nicht des vorangehenden Werts und eine Modulo-Operation. Schließlich zeigt Tabelle 7 eine Anwendung des in 24 gezeigten Schemas auf verschiedene Algorithmen und die RAM-Speicherorganisiation.
  • Figure 00610001
    Tabelle 7
  • Für die Behandlung von Ausnahmen und Statusbits erzeugt die duale MAC-Konfiguration einen doppelten Satz von Merkern, einen pro Akkumulatorziel.
  • In 24 ist nun ein vereinfachter Blockschaltplan zu sehen, der die Bus-, Speicher- und Registernutzung durch eine duale MAC-Einheit der vorliegenden Erfindung zeigt. Insbesondere ist zu sehen, dass eine erste RAM-Bank beiden MAC-Einheiten einen ersten Operanden zuführt. Eine zweite RAM-Bank führt der ersten MAC-Einheit über den Bus D einen zweiten Operanden zu. Ähnlich führt eine dritte RAM-Bank der zweiten MAC-Einheit über den Bus C einen zweiten Operanden zu. Beide MACs liefern über jeweilige Ausgabebusse Ausgaben an die Register (vorzugsweise Akkumulatoren) und empfangen über die jeweiligen Eingangsbusse Eingaben von den Registern.
  • In 25 ist nun ein vereinfachter Blockschaltplan zu sehen, der die Busverbindungen für eine derzeit bevorzugte duale MAC-Anordnung der vorliegenden Erfindung zeigt. Insbesondere ist zu sehen, dass die Anzahl der Datenquellen für den zweiten MAC gegenüber jenen aus 21 reduziert worden ist.
  • In 26 ist nun ein DSP zu sehen, der die duale MAC-Einheit der vorliegenden Erfindung nutzt. 26 veranschaulicht die Funktions- und Ausführungseinheiten, die P-Einheit 26108, die A-Einheit 26110 und die D-Einheit 26112 eines Verarbeitungskerns 26102, und zeigt die Busstruktur, die die verschiedenen Elemente des Verarbeitungskerns 26102 verbindet. Die P-Einheit 26108 enthält z. B. eine Schleifensteuerschaltungsanordnung, eine GoTo/Verzweigungs-Steuerschaltungsanordnung und verschiedene Register zum Steuern und Überwachen des Programmablaufs wie etwa Wiederholungszählerregister und Unterbrechungsmasken-, Merker- oder Vektorregister. Die P-Einheit 26108 ist mit Universal-Datenschreibbussen (EB, FB) 26130, 26132, Datenlesebussen (CB, DB) 26134, 26136 und einem Koeffizientenprogrammbus (BB) 26138 gekoppelt. Außerdem ist die P-Einheit 26108 über verschiedene mit CSR, ACB und RGD bezeichnete Busse mit Untereinheiten in der A-Einheit 26110 und in der D-Einheit 26112 gekoppelt.
  • Wie in 26 veranschaulicht ist, enthält die A-Einheit 26110 in der vorliegenden Ausführungsform drei Untereinheiten, d. h. eine Registerdatei 2630, eine Datenadressenerzeugungs-Untereinheit (DAGEN) 2632 und eine Arithmetik-Logik-Einheit (ALU) 2634. Die A-Einheits-Registerdatei 2630 enthält verschiedene Register, unter denen 16-Bit-Zeigerregister (AR0, ..., AR7) und Datenregister (DR0, ..., DR3) sind, die ebenfalls für den Datenfluss sowie für die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei 16-Bit-Zirkulärpufferregister und 7-Bit-Datenseitenregister. Ebenso wie die Universalbusse (EB, FB, CB, DB) 26130, 26132, 26134, 26136 sind ein Koeffizientendatenbus 26140 und ein Koeffizientenadressenbus 26142 mit der A-Einheits-Registerdatei 2630 gekoppelt. Die A-Einheits-Registerdatei 2630 ist über unidirektionale Busse 26144 bzw. 26146, die jeweils in entgegengesetzten Richtungen arbeiten, mit der A-Einheits-DAGEN-Einheit 2632 gekoppelt. Die DAGEN-Einheit 2632 enthält z. B. 16-Bit-X/Y-Register und Koeffizienten- und Stapelzeigerregister zum Steuern und Überwachen der Adressenerzeugung in der Verarbeitungsmaschine 26100.
  • Außerdem umfasst die A-Einheit 26110 eine dritte Einheit, die ALU 2634, die eine Schiebefunktion sowie die Funktionen, die einer ALU typisch zugeordnet sind, wie etwa Addition, Subtraktion und UND-, ODER- und XOR-Logikoperationen enthält. Die ALU 2634 ist ebenfalls mit den Universalbussen (EB, DB) 26130, 26136 und mit einem Befehlskonstanten-Datenbus (KDB) 26140 gekoppelt. Die A-Einheits-ALU ist über einen PDA-Bus zum Empfang des Registerinhalts von der Registerdatei der P-Einheit 26108 mit der P-Einheit 26108 gekoppelt. Außerdem ist die ALU 2634 über Busse RGA und RGB zum Empfangen von Adressen- und Datenregisterinhalten und über einen Bus RGD zum Weiterleiten von Adressen und Daten an Register in der Registerdatei 2630 mit der A-Einheits-Registerdatei 2630 gekoppelt.
  • In Übereinstimmung mit der veranschaulichten Ausführungsform der Erfindung enthält die D-Einheit 26112 die fünf Elemente, d. h. eine D-Einheits-Registerdatei 2636, eine D-Einheits-ALU 2638, eine D-Einheits-Schiebeeinrichtung 2640 und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44. Die D-Einheits-Registerdatei 2636, die D-Einheits-ALU 2638 und die D-Einheits-Schiebeeinrichtung 2640 sind mit Bussen (EB, FB, CB, DB und KDB) 26130, 26132, 26134, 26136 und 26140 gekoppelt und die MAC-Einheiten 2642 und 2644 sind mit den Bussen (CB, DB, KDB) 26134, 26136, 26140 und mit einem Datenlesebus (BB) 26144 gekoppelt. Die D-Einheits-Registerdatei 2636 enthält vier 40-Bit-Akkumulatoren (AC0, ..., AC3) und ein 16-Bit-Übergangsregister. Außer den 40-Bit-Akkumulatoren kann die D-Einheit 26112 auch die 16-Bit-Zeigerregister und -Datenregister in der A-Einheit 26110 als Quell- oder Zielregister nutzen. Die D-Einheits-Registerdatei 2636 empfängt über den Akkumulatorschreibbus (ACW0, ACW1) 26146, 26148 Daten von der D-Einheits-ALU 2638 und von den MACs 1 und 2 2642, 2644 und über den Akkumulatorschreibbus (ACW1) 26148 von der D-Einheits-Schiebeeinrichtung 2640. Die Daten werden von den D-Einheits-Registerdatei-Akkumulatoren über die Akkumulatorlesebusse (ACR0, ACR1) 26150, 26152 in die D-Einheits-ALU 2638, in die D-Einheits-Schiebeeinrichtung 2640 und in die MACs 1 und 2 2642, 2644 gelesen. Die D-Einheits-ALU 2638 und die D-Einheits-Schiebeeinrichtung 2640 sind ebenfalls über mit EFC, DRB, DR2 und ACB bezeichnete Busse mit den Untereinheiten der A-Einheit 26108 gekoppelt.
  • In 27 ist nun der DSP aus 26, jedoch mit hervorgehobenen Datenwegen für dualen MAC-Betrieb, zu sehen. Der duale MAC-Befehl ist im rechten oberen Abschnitt von 27 gezeigt. Wenn ein Befehl den Betrieb des zweiten MAC nicht erfordert, wird er durch Abschalten seiner Taktbäume ausgeschaltet, um den Leistungsverbrauch durch den DSP zu reduzieren.
  • Obgleich die vorliegende Erfindung und ihre Vorteile ausführlich beschrieben worden sind, können daran selbstverständlich verschiedene Änderungen, Ersetzungen und Abwandlungen vorgenommen werden, ohne von der wie in den beigefügten Ansprüchen definierten Erfindung abzuweichen.

Claims (9)

  1. Digitales System, das eine Multiplikations-Akkumulations-Einheit besitzt, wobei die Multiplikations-Akkumulations-Einheit umfasst: einen ersten Eingang (102) für einen ersten binären Operanden; einen zweiten Eingang (104) für einen zweiten binären Operanden; einen dritten Eingang (142) für einen dritten binären Operanden; eine Booth-Recode-Logik (120) zum Erzeugen mehrerer Partialprodukte aus dem ersten und dem zweiten Operanden, um ein binäres Ergebnis zu erzeugen; einen Wallace-Baum-Addierer (130) zum Reduzieren der Partialprodukte und zum wahlweisen arithmetischen Kombinieren der reduzierten Partialprodukte mit dem dritten Operanden, um ein endgültiges Partialprodukt zu schaffen, einen letzten Addierer (140), der so betreibbar ist, dass er einen Bit-Ausgang (134) des Wallace-Baum-Addierers (130) und einen Abschnitt vom dritten Eingang (142) empfängt, um eine endgültige Summe zu erzeugen; gekennzeichnet durch eine Sättigungsschaltungsanordnung (150) zum wahlweisen Runden oder Sättigen der endgültigen Summe; und eine Decodiererschaltung (132c), die so angeschlossen ist, dass sie den ersten binären Operanden und den zweiten binären Operanden empfängt, und einen Ausgang (760) besitzt, der mit dem Wallace-Baum-Addierer verbunden ist, wobei die Decodierungsschaltung so betreibbar ist, dass sie erfasst, dass der erste binäre Operand gleich dem Hexadezimalwert x18000 ist und der zweite binäre Operand gleich dem Hexadezimalwert x18000 ist, wobei diese Bedingung einem speziellen Fall einer GSM-Sättigung entspricht; und wobei die Schaltung für das niedrigstwertige Bit einer ersten Stufe des Wallace-Baum-Addierers von dem ersten Bit der Booth-Decodierungslogik, das in Reaktion auf den Ausgang (756) der Decodierungsschaltung geändert wird, eine Übertrageingabe (sg.) empfängt, um ein erstes Partialprodukt zu erzeugen, bei dem sämtliche Bits den gleichen logischen Pegel haben, um ein gesättigtes endgültiges Partialprodukt zu bilden, wenn der spezielle Fall einer GSM-Sättigung erfasst wird.
  2. Digitales System nach Anspruch 1, bei dem der letzte Addierer und die Sättigungsschaltung in Reaktion auf das gesättigte endgültige Partialprodukt eine gesättigte Summe von "00 7FFF FFFF" (hex) gemäß dem speziellen Fall der GSM-Sättigung bilden.
  3. Digitales System nach Anspruch 1 oder 2, bei dem die Decodierungsschaltung so betreibbar ist, dass sie das Komplement eines Vorzeichenbits der Übertrageingabe vom ersten Bit der Booth-Decodierungslogik bildet, wenn der spezielle Fall einer GSM-Sättigung erfasst wird.
  4. Digitales System nach Anspruch 1, 2 oder 3, bei dem die Decodierungsschaltung durch ein Betriebsart-Steuersignal (132d) freigegeben wird.
  5. Digitales System nach einem vorhergehenden Anspruch, das eine Befehlsverarbeitungseinheit und eine zweite Multiplikations-Akkumulations-Einheit (100b) besitzt, die mit der ersten. Multiplikations-Akkumulations-Einheit (100) eine duale Multiplikations-Akkumulations-Einheit bildet, wobei die duale Multiplikations-Akkuniulations-Einheit umfasst: eine erste Mehrzahl wählbarer Eingänge (2110, 2112), die der ersten Multiplikations-Akkumulations-Einheit zugeordnet sind, um eine erste Ausgabe (2134) zu erzeugen; eine zweite Mehrzahl wählbarer Eingänge (2110, 2114), die der zweiten Multiplikations-Akkuniulations-Einheit zugeordnet sind, um eine zweite Ausgabe (2136) zu erzeugen; einen ersten Akkumulator, um die erste Ausgabe zu empfangen; und einen zweiten Akkumulator, um die zweite Ausgabe zu empfangen; wobei die erste und die zweite Multiplikations-Akkumulations-Einheit (100, 100b) jeweils auf einen einzelnen Befehl für eine duale Multiplikations-Akkumulations-Einheit, der durch die Befehlsverarbeitungseinheit verarbeitet wird, ansprechen.
  6. Digitales System nach Anspruch 5, bei dem die erste Multiplikations-Akkumulations-Einheit (100) so betreibbar ist, dass sie einen ersten Koeffizienten für die Multiplikation in Reaktion auf einen ersten Befehl der dualen Multiplikations-Akkumulations-Einheit auswählt, und bei dem die zweite Multiplikations-Akkumulations-Einheit (100b) den gleichen ersten Koeffizienten für die Multiplikation in Reaktion auf den ersten Befehl des für die duale Multiplikations-Akkumulations-Einheit geeigneten Typs gemeinsam nutzen muss.
  7. Digitales System nach einem der Ansprüche 5 oder 6, bei dem die erste Multiplikations-Akkmnulations-Einheit (100) und die zweite Multiplikations-Akkumulations-Einheit (100b) jeweils so konfiguriert sind, dass sie von einer ersten Speicherbank denselben Operanden empfangen.
  8. Digitales System nach einem der Ansprüche 5 bis 7, das ferner umfasst: einen Takt-Baum zum Verteilen eines Taktsignals an die zweite Multiplikations-Akkumulations-Einheit (100b), wobei die zweite Multiplikations-Akkumulations-Einheit (100b) in Reaktion auf das Taktsignal arbeitet; und eine Takt-Torsteuerungsschaltungsanordnung, die mit dem Takt-Baum verbunden ist und auf ein Signal anspricht, das erzeugt wird, wenn ein Befehl des für die duale Multiplikations-Akkumulations-Einheit geeigneten Typs ausgeführt wird, derart, dass das Taktsignal zu der zweiten Multiplikations-Akkumulations-Einheit (100b) auf EIN torgesteuert wird, wenn der Befehl des für die duale Multiplikations-Akkumulations-Einheit geeigneten Typs ausgeführt wird, und auf AUS torgesteuert wird, falls der Befehl des für die duale Multiplikations-Akkumulations-Einheit geeigneten Typs nicht ausgeführt wird.
  9. Digitales System nach einem der Ansprüche 5 bis 8, bei dem die zweite Multiplikations-Akkumulations-Einheit (100b) so betreibbar ist, dass sie ausgeschaltet wird, wenn ein Befehl keinen Betrieb der zweiten Multiplikations-Akkumulations-Einheit (100b) erfordert.
DE1998632985 1998-10-06 1998-10-06 Multiplizier-Akkumulatorschaltungen Expired - Lifetime DE69832985T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98402452A EP0992885B1 (de) 1998-10-06 1998-10-06 Multiplizier-Akkumulatorschaltungen

Publications (2)

Publication Number Publication Date
DE69832985D1 DE69832985D1 (de) 2006-02-02
DE69832985T2 true DE69832985T2 (de) 2006-08-17

Family

ID=8235509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1998632985 Expired - Lifetime DE69832985T2 (de) 1998-10-06 1998-10-06 Multiplizier-Akkumulatorschaltungen

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483442B2 (en) 2013-09-13 2016-11-01 Kabushiki Kaisha Toshiba Matrix operation apparatus

Families Citing this family (64)

* 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
US8266198B2 (en) * 2006-02-09 2012-09-11 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
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry
EP1984810B1 (de) * 2006-02-15 2017-03-22 QUALCOMM Incorporated Booth-multiplizierer mit schaltkreis für verbesserte partialproduktreduktion
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
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 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
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
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8805916B2 (en) 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
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
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix 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
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
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
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 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
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
US11327718B2 (en) 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations
RU2744815C1 (ru) * 2020-06-22 2021-03-16 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Устройство для перевода чисел из системы остаточных классов и расширения оснований
US20230177106A1 (en) * 2021-12-08 2023-06-08 Tenstorrent Inc. Computational circuit with hierarchical accumulator

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619799B2 (ja) * 1984-02-06 1994-03-16 ソニー株式会社 高速フ−リエ変換装置
JPS61241879A (ja) * 1985-04-18 1986-10-28 Fanuc Ltd 空間積和演算装置
JPH0738217B2 (ja) * 1985-04-18 1995-04-26 ファナック株式会社 空間積和演算装置
US4802111A (en) * 1986-03-10 1989-01-31 Zoran Corporation Cascadable digital filter processor employing moving coefficients
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 中央処理装置
US4876660A (en) * 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JPH01126819A (ja) * 1987-11-12 1989-05-18 Matsushita Electric Ind Co Ltd ディジタル信号処理装置
JPH01267728A (ja) * 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
JP2698835B2 (ja) * 1988-12-27 1998-01-19 カシオ計算機株式会社 バタフライ演算装置
JPH10207859A (ja) * 1989-12-15 1998-08-07 Hitachi Ltd 消費電力制御方法,半導体集積回路装置およびマイクロプロセッサ
JP2646778B2 (ja) * 1990-01-17 1997-08-27 日本電気株式会社 ディジタル信号処理装置
JP2570893B2 (ja) * 1990-08-16 1997-01-16 日本電気株式会社 信号処理装置
JPH04127210A (ja) * 1990-09-19 1992-04-28 Hitachi Ltd 低消費電力プロセッサ
JP2822684B2 (ja) * 1991-04-05 1998-11-11 日本電気株式会社 離散コサイン変換装置および逆離散コサイン変換装置
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 (de) * 1996-05-06 1997-11-12 Motorola, Inc. Verfahren und Vorrichtung für eine Multiplizier- und Akkumulierschaltung mit einem dynamischen Sättigungsbereich
JP3092534B2 (ja) * 1996-12-13 2000-09-25 日本電気株式会社 ブロックiirプロセッサ
US5933797A (en) * 1997-02-28 1999-08-03 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive dual filter echo cancellation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483442B2 (en) 2013-09-13 2016-11-01 Kabushiki Kaisha Toshiba Matrix operation apparatus

Also Published As

Publication number Publication date
DE69832985D1 (de) 2006-02-02
JP5273866B2 (ja) 2013-08-28
EP0992885B1 (de) 2005-12-28
JP2000215028A (ja) 2000-08-04
JP2010086547A (ja) 2010-04-15
EP0992885A1 (de) 2000-04-12

Similar Documents

Publication Publication Date Title
DE69832985T2 (de) Multiplizier-Akkumulatorschaltungen
DE69416283T2 (de) Überlaufsteuerung für arithmetische Operationen
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE60116742T2 (de) Digitaler signalprozessor mit gekoppelten multiplizier-addier einheiten
DE69632978T2 (de) Multi-Operand-Addierer, der Parallelzähler benutzt
DE69327996T2 (de) Verfahren zur Feststellung eines nullwertigen Ergebnisses als Folge einer arithmetischen oder logischen Berechnung und Schaltung hierfür
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
US6009451A (en) Method for generating barrel shifter result flags directly from input data
DE69811877T2 (de) ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert.
DE69030128T2 (de) Signalprozessor
DE69132129T2 (de) In der Grundzahl 4 arbeitende Übertragvorgriffsbäume
DE102020113922A1 (de) Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen
DE3789132T2 (de) Digitale Multipliziererarchitektur mit Dreifachgitter zur Summation von Teilprodukten.
US4761760A (en) Digital adder-subtracter with tentative result correction circuit
US6411980B2 (en) Data split parallel shifter and parallel adder/subtractor
DE69324730T2 (de) Multiplizier-Akkumulator
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE3888230T2 (de) Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung.
US5038315A (en) Multiplier circuit
DE69300069T2 (de) Digitaler Rechnervorgang und arithmetische Einheit zur dessen Ausführung.
DE69324992T2 (de) Datenverarbeitungssystem und -verfahren zur Berechnung der Summe von Basis und Versatz
DE69225638T2 (de) Abrundungsschaltung in einem Gleitkommamultiplizierer
DE69616942T2 (de) Bit-suche durch 8, 16 oder 32 bit-operanden mit einem 32 bit-datenpfad
DE69030337T2 (de) Register- und Arithmetische-Logik-Einheit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition