DE3700323A1 - Gleitpunktzahlenakkumulatorschaltung - Google Patents

Gleitpunktzahlenakkumulatorschaltung

Info

Publication number
DE3700323A1
DE3700323A1 DE19873700323 DE3700323A DE3700323A1 DE 3700323 A1 DE3700323 A1 DE 3700323A1 DE 19873700323 DE19873700323 DE 19873700323 DE 3700323 A DE3700323 A DE 3700323A DE 3700323 A1 DE3700323 A1 DE 3700323A1
Authority
DE
Germany
Prior art keywords
exponent
section
input
circuit
floating point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19873700323
Other languages
English (en)
Other versions
DE3700323C2 (de
Inventor
Paul Andrew Simoncic
Walter Robert Steiner
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.)
STAR TECHNOLOGIES, INC., STERLING, VA., US
Original Assignee
General Electric Co
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 General Electric Co filed Critical General Electric Co
Publication of DE3700323A1 publication Critical patent/DE3700323A1/de
Application granted granted Critical
Publication of DE3700323C2 publication Critical patent/DE3700323C2/de
Granted 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • G06F7/5095Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
    • 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/3832Less usual number representations
    • G06F2207/3836One's complement
    • 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/386Special constructional features
    • G06F2207/3884Pipelining
    • 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/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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/49936Normalisation mentioned as feature only

Landscapes

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

Description

Die Erfindung bezieht sich auf elektronische Akkumulatorschaltungen und betrifft insbesondere eine integrierte Gleitpunkt- oder Fließkommaakkumulatorschaltung.
Im Stand der Technik werden elektronische Akkumulatoren typisch als Leiterplattenprodukte entworfen, die typisch eine Gesamtarchitektur ähnlich der in Fig. 1 gezeigten haben. In solchen Systemen werden die Gleitpunktzahlen akkumuliert durch Vergleichen der Exponenten von zwei Gleitpunktzahlen, Ausrichten des Binärpunkts für beide Zahlen, Addieren der beiden Zahlen, Normalisieren des Ergebnisses zu einer Gleitpunktzahl und Abgeben des Ergebnisses, das außerdem zur Addition zu der nächsten Zahleneingabe in die Schaltung zum Eingang zurückgeleitet wird.
Bei einem extrem schnellen Computersystem ist es erwünscht, Gleitpunktzahlen in nicht mehr als einem Taktzyklus des Systemhaupttaktgebers akkumulieren zu können. In dem vorstehend angegebenen Stand der Technik ist es entweder extrem teuer oder praktisch unmöglich, eine Akkumulatorschaltung zu entwerfen, die diese Eigenschaft hat.
Mit dem Fortschritt in der Technologie ist nun die Schaltungsanordnung von einem Leiterplattenprodukt auf einen einzelnen Chip in Form einer integrierten Schaltung geschrumpft. Das Reduzieren der Größe der Schaltungsanordnung führt von Haus aus zu einer schnelleren Verarbeitungsgeschwindigkeit. In einigen Fällen, beispielsweise bei schnellen Spezialgraphikverarbeitungscomputern, sind jedoch noch höhere Geschwindigkeiten erwünscht. Die vorliegende Erfindung schafft deshalb einen neuen Schaltungsentwurf, mit dem ein sehr schneller Betrieb erzielt wird, indem eine Pipeline-Architektur benutzt und das Ausgangssignal der Addierschaltung zu dem Eingang der Akkumulatorschaltung zurückgeleitet wird, bevor die Normalisierung erfolgt. Das führt zu etwas Verlust an Genauigkeit, beschleunigt aber beträchtlich den Akkumulationsprozeß, was eine schnellere Taktfrequenz und eine Akkumulation in einem Taktzyklus gestattet. In vielen Fällen ist der Verlust an Genauigkeit vernachlässigbar oder tolerierbar und wiegen die Vorteile des schnelleren Betriebes diesen Verlust auf.
Es ist Aufgabe der Erfindung, einen schnellen Einzeltaktzyklus- Gleitpunktakkumulator mit Pipeline-Architektur zu schaffen, der eine nichtnormalisierte Rückkopplungsschleife hat.
Die Erfindung kann allgemein als eine integrierte Gleitpunktakkumulatorschaltung mit Pipeline-Archiektur beschrieben werden, die eine Pipeline-Latenzzeit von 400 Nanosekunden und eine Durchsatzzeit von 100 Nanosekunden bei einer Taktfrequenz von 10 MHz hat (unter Verwendung von 32-Bit-Gleitpunktzahlen in der bevorzugten Ausführungsform). Allgemein kann die Pipeline-Architektur der Schaltung nach der Erfindung als aus fünf voneinander abhängigen Abschnitten bestehend beschrieben werden. Es handelt sich um den Eingangsabschnitt, den Exponentenvergleichs- und Zweierkomplementierungsabschnitt, den Akkumulationsabschnitt, den Normalisierungs- oder Standardisierungsabschnitt und den Ausgangsabschnitt.
Der Eingangsabschnitt besteht aus einem Speicherflipflop oder Latch, einem Multiplexer und einem Eingangsregister. Das Speicherflipflop wird nur benutzt, wenn Daten in den Chip in zeitmultiplexierter Form eintreten. Daten- und Steuersignale werden in dem Eingangsregister zur Verwendung in dem nächsten Abschnitt gespeichert. Der Exponentenvergleichs- oder Zweierkomplementierungsabschnitt wird benutzt, um festzustellen, welche Mantisse, nämlich die der Eingangsgleitpunktzahl oder die der akkumulierten Zahl, verschoben werden muß, um die Binärpunkte auszurichten, so daß die Addition in dem Akkumulationsabschnitt erfolgen kann. Der Zweierkomplementteil desselben Abschnitts wandelt die Mantisse aus einer mit Vorzeichen versehenen Zahl in eine Zweierkomplementzahl um, um die Addition in dem Akkumulationsabschnitt zu vereinfachen. Ein Register an dem Ende dieses Abschnitts speichert die Zweierkomplementmantisse, eine Verschiebungscodegruppe, einige Steuersignale zum Anzeigen, welche der Mantissen die kleinere ist (und deshalb verschoben werden muß), und den größten Exponenten (der ebenfalls zu diesem Abschnitt für den nächsten Expontenvergleich rückgekoppelt wird).
Der Akkumulationsabschnitt empfängt Eingangssignale aus dem Exponentenvergleichs- und Zweierkomplementierungsabschnitt und aufgrund der Rückkopplung aus einem Akkumulatorregister. Die Mantisse, die dem kleineren Exponenten entspricht, (was in dem vorangehenden Abschnitt bestimmt worden ist), wird in einen Rechtsverschieber eingegeben und gemäß der Festlegung durch die berechnete Verschiebungscodegruppe verschoben. Die verschobene Mantisse und die unverschobene Mantisse werden dann addiert. Unter richtiger Berücksichtigung des Überlaufs der beiden addierten Zahlen wird das Ausgangssignal in einem Akkumulatorregister gespeichert. Der größte Exponent, der in dem Exponentenvergleichsabschnitt bestimmt worden ist, wird ungeändert durch den Akkumulationsabschnitt hindurchgeleitet und ebenfalls in einem Register gespeichert.
Der Standardisierungsabschnitt wandelt die Zweierkomplementmantisse des Akkumulationsabschnitts wieder in ein Format aus Größe mit Vorzeichen um. Der größte Exponent wird um eins vergrößert, wenn das Akkumulatorregister eine Überlaufanzeige hatte. Das Vorzeichen, der Exponent und die Mantisse werden zu einer Gleitpunktzahl kombiniert. Wenn ein Exponentenüberlauf oder -unterlauf aufgetreten ist, stellt dieser Abschnitt den Zustand fest und setzt das Ausgangssignal dieses Abschnitts auf negativ oder positiv unendlich (in dem Falle eines Überlaufs) oder auf null (in dem Falle eines Unterlaufs). Die aus diesem Abschnitt resultierende Zahl wird in einem Ausgangsregister gespeichert.
Der Ausgangsabschnitt speichert die Resultate des vorhergehenden Standardisierungsabschnitts und steuert die Ausgangssignalleitungen an.
Die vorliegende Erfindung benutzt das vorgeschlagene IEEE- Standardgleitpunkt- oder Fließkommaformat, das aus 23 Bits der Mantisse, 8 Bits des Exponenten und einem Vorzeichenbit (sign) besteht. In diesem Format wird ein Binärpunkt als zwischen den Bitpositionen 22 und 23 vorhanden aufgefaßt. Für die Darstellung einer Gleitpunktzahl gibt es eine der folgenden Möglichkeiten:
  • 1. Wenn der Exponent ungleich null ist, gilt: Zahl = {(-1)(sign) × 2(exponent-127) × (1.data)}
  • 2. Wenn der Exponent null ist, aber die Daten ungleich null sind, (was eine denormalisierte Zahl angibt), gilt: Zahl = {(-1)(sign) × 2(-127) × (0.data)}
  • 3. Wenn sowohl der Exponent als auch die Daten null sind, gilt: Zahl = 0.0
  • 4. Wenn der Exponent FF 16 und die Mantisse null ist, gilt:
    Die Zahl wird betrachtet als: (+ oder -) unendlich.
  • 5. Wenn die Zahl FF 16 und die Mantisse ungleich null ist, gilt:
    Die Zahl wird betrachtet als: keine Zahl.
Zur Vereinfachung der Schaltungsanordnung nach der Erfindung wird eine denormalisierte Zahl auf null gebracht, und jede Zahl mit einem Exponenten von FF 16 wird auf (+ oder -) unendlich gebracht, je nach dem Vorzeichenbit.
Die Akkumulatorschaltung nach der Erfindung wird "n" positive Zahlen ohne Fehler addieren, vorausgesetzt, daß das Ergebnis nicht die Grenze des Gleitpunktzahlensystems übersteigt. Wenn eine negative Zahl zu der akkumulierten Summe addiert wird, tritt ein gewisser Fehler auf, und zwar aufgrund der folgenden Approximationen, die gemacht worden sind, um die Geschwindigkeit der Schaltung zu erhöhen:
  • 1. Die Zahlen werden erst normalisiert, bevor sie den Chip verlassen. Sie sind während der Akkumulation nicht normalisiert.
  • 2. In dem Entwurf ist keine Abrundungsschaltungsanordnung enthalten.
  • 3. Negative Zahlen werden zurück in ein Format aus Vorzeichen und Größe mit einer Einerkomplementoperation statt mit einer Zweierkomplementoperation umgewandelt. Intern wird die Mantisse auf 25 Bits gebracht (23 Bits Eingangsdaten, ein verborgenes Bit und ein Schutzbit, wenn notwendig). Der Exponent wird aus Genauigkeitsgründen auf 9 Bits bis zu dem Normalisierungsabschnitt gebracht, wo ein weiteres Bit zur Unterlauferkennung addiert wird.Ein Ausführungsbeispiel der Erfindung wird im folgenden unter Bezugnahme auf die Zeichnungen näher beschrieben. Es zeigen:Fig. 1 ein Blockschaltbild einer bekannten Akkumulator- Architektur undFig. 2a und 2b ausführliche Blockschaltbilder der Akkumulatorschaltung nach der Erfindung.Die Fig. 2a und 2b zeigen ein ausführliches Blockschaltbild der Schaltung nach der Erfindung. In der bevorzugten Ausführungsform der Schaltung nach der Erfindung ist eine Extraschaltungsanordnung für die Bequemlichkeit des Endbenutzers hinzugefügt. Das Vorhandensein dieser Extraschaltungsanordnung stellt keine Beschränkung der grundlegenden Erfindung dar. In einer Version der Erfindung als integrierte Schaltung gibt es 49 Eingänge und 34 Ausgänge. Von den 49 Eingängen dienen 32 Eingänge für Daten. Von diesen 32 Eingängen können 16 bei Bedarf außer Betracht bleiben, und 32 Datenbits können zeitmultiplexiert über die übrigen 16 Eingänge eingegeben werden. Die anderen 17 Eingänge dienen für Steuersignale, ein Taktsignal, ein Abtastsignal STROBE und als ein serieller Eingang an den Ausgangsregistern für Testdaten. Die 34 Ausgänge umfassen den 32-Bit-Datenausgang (d. h. eine Gleitpunkt- oder Fließkommazahl), einen seriellen Ausgang aus den Abtastregistern für Testzwecke und ein Steuersignal.Unter den Steuersignalen an dem Eingangsteil der Schaltungsanordnung gibt es folgende: Flag des ersten Gliedes (FT) -- bedeutet das erste Glied einer Akkumulation. Eine logische "1" initialisiert die Akkumulatorschaltung.Bypass -- wenn es mit dem Flag des ersten Gliedes benutzt wird, werden die in die Schaltung eingegebenen Daten durch die Schaltung hindurchgehen, ohne verändert zu werden, und an den Ausgängen der Schaltung drei Taktzyklen nach dem Eintakten erscheinen.Vorzeichenänderung (CHSign) -- benutzt zum Subtrahieren der Eingangszahl von der akkumulierten Zahl; veranlaßt die Schaltung, das Vorzeichen der Eingangsmantisse zu verändern.
    No- oder Nulloperation (NOOP) -- bedeutet, daß die in die Schaltung eingegebenen Daten ungültig und nicht zu akkumulieren sind.
    HoldIn -- bewirkt, daß die Eingangsdaten in dem Eingangsregister als Daten für die nächste Operation gehalten werden.
    HoldOut -- hält die Ausgangsdaten in dem Ausgangsregister. Die Schaltung fährt fort, Daten zu akkumulieren, aber die Ausgangssignale der Schaltung ändern sich nicht.
    Multiplexierwahl (MULTPX) -- benutzt zum Wählen der zeitmultiplexierten Eingangsbetriebsart.Der Eingangsabschnitt der Akkumulatorschaltung weist einen Speicherflipflop (Latch) 1, einen Multiplexer 2, ein Eingangsregister 3 und ein Eingangs-UND-Gatter 4 auf. Die Eingangssignalleitungen an dem Eingangsabschnitt umfassen die 16 höchstwertigen Bits MSB der Eingangsdaten (d. h. einer Gleitpunktzahl) über einem ersten Satz von Datenleitungen 5 und die 16 niedrigstwertigen Bits LSB über einen zweiten Satz von Datenleitungen 6. Eine Multiplexsteuerleitung (MULTPX) 7 wird benutzt, um festzustellen, ob die Dateneingaben in einem 16-Bit-Zeitmultiplexformat oder als 32 Eingangssignale während eines einzelnen Taktzyklus akzeptiert werden. Wenn die Multiplexsignalleitung 7 aktiv ist, werden die 16 niedrigstwertigen Datenbits in das Speicherflipflop 1 an der abfallenden Flanke eines Abtastsignals eingegeben. Das vereinfacht den Gebrauch, da die Takt- und Abtastsignale mit demselben Signal extern in einer normalen Multiplexkonfiguration verknüpft werden können. Nachdem die 16 niedrigstwertigen Bits in das Speicherflipflop 1 eingegeben worden sind, treten die 16 höchstwertigen Datenbits direkt in das Eingangsregister 3 über den zweiten Satz von Signalleitungen 6 ein, während das Ausgangssignal des Speicherflipflops 1 gleichzeitig in das Eingangsregister 3 über den Multiplexer 2 eingegeben wird. In einem nichtmultiplexierten System werden die 16 höchstwertigen Bits in das Eingangsregister 3 durch den Multiplexer 2 über den ersten Satz von Signalleitungen 5 eingegeben, und zwar gleichzeitig mit dem Eingeben der 16 niedrigstwertigen Bits in das Eingangsregister 3 über den zweiten Satz von Signalleitungen 6. In diesem letzteren Fall wird das Speicherflipflop 1 nicht benutzt.Das Speicherflipflop 1 und der Multiplexer 2 dienen einfach dem Zweck, in dem Eingangsregister 3 alle 32 Datenbits zu speichern, aus denen die zu akkumulierende Gleitpunktzahl besteht.Das Eingangs-UND-Gatter 4 vor dem Takteingang des Eingangsregisters 3 steuert das Takten dieses Registers. Die logischen Zustände einer No-Operation-Signal (NOOP)-Leitung 8 und einer HoldIn1-Signalleitung 9 steuern das Übertragen des Taktsignals zu dem Eingangsregister 3. Das HoldIn1- Signal ist mit dem Hold-In-Signal identisch, aber eine Pipeline-Stufe verzögert. Die übrigen Steuereingangssignale der Schaltung werden in dem Eingangsregister 3 zum späteren Gebrauch in der Schaltung abgespeichert, wenn die No-Operation-Signal-Leitung 8 und die HoldIn1-Signal-Leitung 9 aktiviert sind, um das Übertragen des Taktsignals durch das Eingans-UND-Gatter 4 zu gestatten.Der zweite Abschnitt der Schaltung beinhaltet die Exponentenvergleichs- und Zweierkomplementierungsschaltungsanordnung. Die Eingangssignale dieses Abschnitts umfassen die Daten- und Steuersignale aus dem Eingangsregister 3. Sofern nicht die gegenwärtige Eingangszahl aus dem Eingangsregister 3 das erste Glied einer Akkumulation ist, ist eine zusätzliche Eingabe in diesen Abschnitt ein Glied größten Exponentens (LGEXP2) und ein Überlaufsignal (OFLW2), die aus dem nächsten Abschnitt, dem Akkumulationsabschnitt, rückgekoppelt werden. Die Ausgangssignale des zweiten Abschnitts sind der neue größte Exponent, eine berechnete Verschiebungscodegruppe, Löschbarer-Multiplexer-Steuersignale und eine Zweierkomplementmantisse. Der Akkumulationsabschnitt benutzt die Verschiebungscodegruppe, um die Binärpunkte der Addenden der neuen Mantisse und der akkumulierten Daten auszurichten (selbstverständlich sofern nicht die laufende Eingangszahl das erste Glied einer Akkumulation ist).Der Exponentenvergleich bezieht sich auf die Differenz zwischen dem größten Exponenten in einer Berechnung und dem Exponenten der laufenden Eingangsgleitpunktzahl aus dem Eingangsregister 3. Die Schaltung muß dem größten Exponenten folgen, der seit der ersten Eingangszahl in einer Serie von Akkumulationen aufgetreten ist.Die Eingangsgleitpunktzahl wird etwas anders behandelt, wenn das Erstgliedflag-Steuersignal FT aktiv ist. Wenn die Eingangsgleitpunktzahl das erste Glied einer Akkumlationsserie ist, wird sie automatisch als den größten Exponenten aufweisend betrachtet, und der Exponent geht durch die Exponentenvergleichsschaltung hindurch zu dem nächsten Abschnitt ohne Änderung. In diesem Fall wird die Verschiebungscodegruppe auf null gesetzt, und die Steuersignale, die in dem Akkumulationssignal benutzt werden, werden gesetzt, um den vorher akkumulierten Wert zu löschen.Ob nun die Eingangszahl das erste Glied einer Akkumulationsserie ist oder nicht, dieser Abschnitt berechnet zuerst, um festzustellen, ob die Eingangszahl null äquivalent ist, mittels eines Test-NOR-Gatters 20. Da die Akkumulatorschaltung denomalisierte Zahlen auf null bringt, braucht die Nulltestberechnung nur die acht Exponentenbits der Eingangszahl zu überprüfen. Wenn die Exponentenbits alle null sind, wird ein Zero1-Signal aktiviert, um anzuzeigen, daß das Eingangssignal null ist, vorausgesetzt, daß das Bypass-Signal nicht aktiv ist. Das Zero1-Signal dient dem Zweck, alle Bits (Vorzeichen, Exponent und Mantisse) der Eingangszahl auf null zu setzen.Das Zero1-Signal wird zusammen mit dem Bypass-Signal benutzt, um die Berechnung des Vorzeichens für den Ausgangs- Exponenten zu steuern. Wenn die gesamte Schaltung umgangen werden soll, kann das Vorzeichen der Eingangszahl unter allen Umständen nicht geändert werden. Das Ausgangssignal SIGN1 eines Vorzeichen-UND-Gatters 22 zeigt das Vorzeichen des Exponenten an, sofern er nicht durch das Zero1-Signal auf null gebracht worden ist oder wenn die Schaltung umgangen werden soll, was durch das Bypass-Signal angezeigt wird. Das Vorzeichenänderung-Signal CHSign steuert außerdem, ob das Signal SIGN1 gesetzt wird, um eine negative Zahl oder eine positive Zahl anzuzeigen.Da die Mantisse einer Eingangsgleitpunktzahl durch eine Größe mit Vorzeichen dargestellt ist und da der Addierer des Akkumulationsabschnitts Zahlen verarbeitet, die in Zweierkomplementform dargeboten werden, bestimmt das Signal SIGN1 auch, ob oder ob nicht die Mantisse negiert und um eins erhöht (d. h. in das Zweierkomplementformat umgeformt) werden sollte, und zwar durch ein Zweierkomplementschaltungselement 23. Wenn die Eingangsmantisse negativ ist, dann muß die Mantisse durch das Komplementierungsschaltungselement 23 in die Zweierkomplementform umgeformt werden.Die Mantisse der Eingangszahl, die vorübergehend in dem Eingangsregister 3 gespeichert worden ist, hat eine logische "1" in der Position des höchstwertigen Bits aufgenommen, die die im vorgeschlagenen IEEE-32-Bit-Gleitpunktzahlenstandard vorgesehene "1" ersetzt hat, bevor sie in das Zweierkomplementschaltungselement 23 gelangt ist.Der Vergleich der Eingangsexponenten mit dem größten vorherigen Exponenten erfolgt in einem Komparator 24. Das Ausgangssignal des Komparators 24 ist die Differenz zwischen dem größten vorherigen Exponenten und dem Exponenten der laufenden Eingangszahl. Wenn das Ausgangssignal des Komparators 24 negativ ist (bestimmt durch das Vorzeichenbit der Differenz, DIFF(9)) oder wenn die Eingangszahl das erste Glied einer Akkumulationsserie ist, werden ein erster 9- Bit-Multiplexer 25 und ein zweiter 9-Bit-Multiplexer 26 sofort gesetzt, um den Exponenten der Eingangszahl als den größten Exponenten durchzulassen. In diesen beiden Fällen ist der Exponent der Eingangszahl immer der größte Exponent einer Summe.Wenn die Eingangszahl nicht das erste Glied ist und wenn das Ausgangssignal des Exponentenkomparators 24 nicht negativ ist, wird der vorherige größte Exponent LGEXP2 als Ausgangssignal des ersten Multiplexers 25 gewählt. Das Ausgangssignal des zweiten Multiplexers 26 wird aus zwei Potentialeingangssignalen auf der Basis des Wertes eines Überlaufsignals (OFLW2) 27 ausgewählt. Wenn das Überlaufsignal aktiv ist (was anzeigt, daß die Summe der Mantisse in dem früheren Taktzyklus ein Überlaufsignal verursacht hat), muß der größte Exponent um eins erhöht werden. Das erfolgt durch eine Addierschaltung 28. In diesem Fall wird das Ausgangssignal des zweiten Multiplexers 26 aus der Addierschaltung 28 ausgewählt; anderenfalls wird das Ausgangssignal des ersten Multiplexers 25 ausgewählt. Das Ausgangssignal des zweiten Multiplexers 26 besteht aus dem neuen "größten Exponenten" LGEXP1, der in einem Zwischenregister 29 gespeichert wird.Parallel zu der Bestimmung des nächsten größten Exponenten wird eine Verschiebungscodegruppe berechnet, die in dem Akkumulationsabschnitt zum Ausrichten der Binärpunkte der beiden Addenden benutzt wird. Das Ausgangssignal des Exponentenkomparators 24 stellt dar, wieweit rechts der Binärpunkt der Mantisse der Eingangszahl (ausgedrückt in Bitpositionen) von dem Binärpunkt der in dem Akkumulatorregister in dem nächsten Abschnitt gespeicherten Zahl entfernt ist. Diese Differenz zeigt, wie oft die Mantisse der kleineren Zahl verschoben werden sollte, um ihren Binärpunkt auf den Binärpunkt der größeren Zahl auszurichten. In der hier beschriebenen Ausführungsform wird lediglich eine Rechtsverschiebungsschaltung benutzt, was die Gesamtschaltung vereinfacht. Weil nur eine Rechtsverschiebungsschaltung benutzt wird, wird, wenn das Ausgangssignal des Exponentenkomparators 24 negativ ist, statt die Mantisse der Eingangszahl zu verschieben, die Mantisse der akkumulierten Zahl verschoben, so daß deren Binärpunkt auf den Binärpunkt der Eingangszahl ausgerichtet wird.Die Verschiebungscodegruppe basiert auf der Größe der Differenz zwischen den Exponenten, die in dem Exponentenkomparator 24 miteinander verglichen werden. In der bevorzugten Ausführungsform wird für einen schnelleren Betrieb das Ausgangssignal des Exponentenkomparators 24 zu zwei separaten Schaltungen geleitet, so daß die parallele Berechnung erfolgen kann. Die erste Schaltung ist grundsätzlich ein Addierer 30, der zu dem Ausgangssignal des Exponentenkomparators 24 eins addiert. Wenn die Differenz zwischen den in den Komparator 24 eingegebenen Exponenten positiv ist, ist das Ausgangssignal des Addierers 30 einfach die Differenz plus eins. Wenn die Differenz negativ ist, bewirkt das Addieren von "eins" im wesentlichen, daß das Einserkomplement der Differenz von dem Addierer 30 abgegeben wird.Ein Ausgangssignal der Addierschaltung 30 ist ein Signal CLRB, das aktiviert wird, wenn das Ausgangssignal der Addierschaltung 30 größer als vierundzwanzig ist. Die Signifikanz der Zahl vierundzwanzig ist, daß, wenn die Differenz zwischen den beiden verglichenen Exponenten größer als vierundzwanzig ist, das Verschieben der kleineren Mantisse (die 24 Bits in der bevorzugten Ausführungsform umfaßt), um ihren Binärpunkt mit dem Binärpunkt der größeren Zahl auszurichten, die kleinere Zahl vollständig aus dem Trommelverschieber hinausschieben würde, so daß die kleinere Zahl ungefähr gleich null ist. Diese Approximation ist akzeptabel, da sie bedeutet, daß die größere Zahl vierundzwanzig binäre Größenordnungen größer ist als die kleinere Zahl. Die Schaltung löscht deshalb die kleinere Zahl auf null durch Aktivieren des Signals CLRB.Das Ausgangssignal des Exponentenvergleichers 24 wird außerdem zu einer bedingten Komplementierschaltung 31 geleitet, die die Differenz ungeändert durchläßt, wenn die Differenz positiv ist, aber das Zweierkomplement der Differenz abgibt, wenn sie negativ ist. Ähnlich wie die Addierschaltung 30 hat die bedingte Komplementierschaltung 31 ein Signal CLRA, das aktiviert wird, wenn ihr Ausgang größer als vierundzwanzig ist. Die Ausgangssignale der Addierschaltung 30 und der bedingten Komplementierschaltung 31 werden zu einer löschbaren 6-Bit-Multiplexerschaltung 32 geleitet. Das Eingangssignal, das gewählt wird, um von dem Multiplexer 32 abgegeben zu werden, wird auf der Basis des Überlaufsignals OFLW2 gewählt. Wenn kein Überlauf auftritt, wird das Ausgangssignal der bedingten Komplementierschaltung 31 durch den löschbaren Multiplexer 32 ausgewählt. In diesem Fall wird, wenn die Exponentendifferenz positiv ist, die Differenz die Verschiebungscodegruppe. Wenn die Exponentendifferenz negativ ist, ist die Verschiebungscodegruppe das Zweierkomplement der Differenz. (Da nur ein Rechtsverschieber benutzt wird, werden negative Differenzen komplementiert, um sie in positive Zahlen umzuformen).Wenn ein Überlauf der addierten Mantissen in dem früheren Taktzyklus auftritt, wird das Ausgangssignal der Addierschaltung 30 durch den löschbaren Multiplexer 32 gewählt. In diesem Fall wird, wenn die Exponentendifferenz positiv ist, "eins" zu dem Exponent addiert, damit sich eine Verschiebungscodegruppe ergibt, die bewirkt, daß der Rechtsverschieber einige Bitpositionen mehr in der Mantissensumme berücksichtigt (die Überlaufbitposition). Wenn die Differenz negativ ist, ist die Verschiebungscodegruppe das Einserkomplement der Differenz.Die Ausgangsverschiebungscodegruppe des löschbaren Multiplexers 32 wird in dem Zwischenregister 29 für den nächsten Abschnitt gespeichert. Das Verschiebungscodegruppenausgangssignal des löschbaren Multiplexers 32 kann auf null gelöscht werden, wenn das Erstgliedsignal FT1 aktiv ist.Das Signal CLRA oder das Signal CLRB wird auch durch die löschbare Multiplexerschaltung 32 gleichzeitig mit der Auswahl der 5-Bit-Eingangssignale aus der Addierschaltung 30 und der bedingten Komplementierschaltung 31 ausgewählt und bildet ein Ausgangssignal, das nun mit "CLRC" bezeichnet wird. Das Ausgangssignal CLRC des löschbaren Multiplexers 32 wird auf null gesetzt, wenn das Signal ZERO1 aktiv ist. Das Signal CLRC wird mit dem Differentialvorzeichensignal DIFF(9) und dem Erstgliedflagsignal FT1 über zwei UND- Gatter 33, 34 zu einem Signal MUXCLR1 verknüpft. Das Signal MUXCLR1 wird benutzt, um den Multiplexer in dem Akkumulationsabschnitt zu löschen, der die Mantisse auswählt, die aus dem kleineren Exponenten kommt (und die Mantissen, die den Eingangsdaten des ersten Gliedes zugeordnet sind), und diese Signale zu der Verschiebeschaltung leitet.Das Signal MUXCLR1 wird nur aktiviert, wenn das Signal CLRC aktiv und entweder die Exponentendifferenz positiv oder die in das Eingangsregister 3 eingegebene Zahl das erste Glied einer Akkumulationsserie ist. In dem ersten Fall, wenn die Exponentendifferenz positiv und das Signal CLRC aktiv ist, bedeutet das, daß der vorherige größte Exponent größer genug ist als der Exponent der Eingangszahl, so daß der Verschieber die neue Zahl vollständig weg verschieben würde, so daß die neue Zahl auf null gelöscht wird. In dem zweiten Fall, in welchem das Erstgliedflag-Signal FT1 aktiv und das Signal CLRC aktiv ist, wird das Glied in dem Akkumulationsregister 40 als null betrachtet und muß gelöscht werden. Ein Signal, das aus der Kombination des Differenzvorzeichensignals DIFF(9) des Exponentenkomparators 24 und dem Erstgliedflag-Signal FT1 (gebildet durch das UND-Gatter 33) gebildet wird, wird benutzt, um einen Multiplexer in dem Akkumulationsabschnitt zu steuern. Dieses Signal, das Signal MUXSEL1, ist immer inaktiviert, wenn das Erstgliedflag- Signal FT1 aktiviert ist, anderenfalls ist es dasselbe wie das Vorzeichenbit der Exponentendifferenz. Das gewährleistet, daß in dem Akkumulationsabschnitt die Eingangszahl einer Erstgliedzahl oder die Zahl mit dem kleineren Exponenten in allen anderen Fällen immer zu dem Trommelverschieber geht.Andere Signale, die in dem Zwischenregister 29 gespeichert sind, sind das Bypass-Signal, das Erstgliedflag-Signal FT1, das Eingangsvorzeichensignal INSIGN1 und das No-Operation- Signal NOOP1.Der nächste Abschnitt der Schaltung ist der Akkumulationsabschnitt. Die Eingangssignale dieses Abschnitts sind diejenigen Signale, die in dem Zwischenregister 29 aus dem Exponentenvergleichs- und Zweierkomplementierungsabschnitt gespeichert wurden. Darüber hinaus ist ein Eingangssignal dieses Abschnitts die akkumulierte Summe von früheren Eingangszahlen, die aus dem Akkumulatorregister 40 rückgekoppelt werden. Die Ausgangssignale dieses Abschnitts sind die denomalisierte akkumulierte Mantisse, das neue Vorzeichen und die akkumulierte Zahl NSIGN2, der akkumulierte größte Exponente LGEXP2 und ein Überlaufsignal OFLW2. Ebenfalls gespeichert in dem Akkumulatorregister 40 sind das Bypass- Signal und das Eingangsvorzeichensignal INSIGN2.Ein erster 25-Bit-Multiplexer 41 und ein zweiter 25-Bit- Multiplexer 42 werden benutzt, um auszuwählen, welchen Pfad die beiden Addenden (die Mantisse aus dem vorherigen Abschnitt und die akkumulierende Mantisse aus dem Akkumulatorregister 40) nehmen werden. Das Signal MUXSEL2 aus dem vorherigen Abschnitt wird als das Wählsignal für beide Multiplexer 41, 42 benutzt. Wenn das Signal MUXSEL2 nicht aktiv ist, dann geht die Mantisse aus der neuen Zahl durch den ersten Multiplexer 41 durch, und die Mantisse der akkumulierten Zahl geht durch den zweiten Multiplexer 42 durch. Das ist immer der Fall zu jeder Zeit, zu der es ein aktives Erstgliedflag-Signal FT2 gibt, oder wenn der Exponent der neuen Zahl kleiner war als der größte akkumulierte Exponent. In allen anderen Fällen ist der Datenfluß durch die beiden Multiplexer 41, 42 umgekehrt.Wenn das Erstgliedflag-Signal FT2 aktiviert ist, werden sämtliche akkumulierten Daten in dem zweiten Multiplexer 42 gelöscht, was dazu führt, daß das Ausgangssignal dieses Multiplexers nur aus Nullen besteht. Das führt dazu, daß die neue Eingangszahl zu null addiert wird. Ebenso wird das Ausgangssignal des ersten Multiplexers 41 gelöscht, wenn das Signal MUXCLR2 aktiv ist, was bewirkt, daß die akkumulierten Daten zu Null addiert werden.Der Ausgang des ersten Multiplexers 41 ist mit einer 25-Bit- Rechtsverschiebeschaltung 43 verbunden. Die Verschiebungscodegruppe aus dem vorherigen Abschnitt steuert, wie oft die Eingangszahl an dem Rechtsverschieber 43 verschoben wird. Wenn die Eingangszahl nach rechts verschoben wird, wird der Wert des höchstwertigen Bits (des Vorzeichenbits) benutzt, um die oberen Bitpositionen der verschobenen Zahl zu füllen, damit ihre Zweierkomplementdatendarstellung bewahrt wird. Die Ausgangssignale des Verschiebers 43 und des zweiten Multiplexers 42 liegen als Eingangssignale an einer 26-Bit-Addierschaltung 44 an. Innerhalb dieser Addierschaltung werden die beiden Eingangszahlen von fünfundzwanzig Bits auf sechsundzwanzig Bits erweitert, und zwar durch Wiederholen des Vorzeichenbits jeder Zahl, um sicherzustellen, daß das Vorzeichen des Resultats für alle möglichen Addenden gültig sein wird. Das Bit 26 wird immer das korrekte Vorzeichen für die Summe sein, das Ausgangssignal des 26-Bit-Addierers 44 besteht aus der Summe der beiden Eingangszahlen, einem Überlaufsignal OFLW2, das erzeugt wird, wenn das Bit 25 von dem Bit 26 verschieden ist, und einem Neues-Vorzeichen-Signal NSIGN2. Das 25-Bit-Ausgangssignal des 26-Bit-Addierers 44 wird an einen 24-Bit-Multiplexer 45 angelegt, so daß das "A"-Eingangssignal des Multiplexers 45 aus den Bits 0 bis 23 der Summe besteht und das "B"-Eingangssignal des Multiplexers 45 aus den Bits 1 bis 24 besteht. Wenn kein Überlauf auftritt, wird das "A"-Eingangssignal des 24-Bit-Multiplexers 45 als die akkumulierte Summe abgegeben. Wenn das Überlaufsignal aktiv ist, wird dieses Signal das "B"-Eingangssignal des Multiplexers 44 als Ausgangssignal wählen (das niedrigstwertige Bit wird außer Betracht gelassen). Der größte Exponentenwert aus dem vorherigen Abschnitt, das "Neues-Vorzeichen-Signal NSIGN2 aus dem 26-Bit-Addierer 44, das Überlaufsignal OFLW2 und die akkumulierte Mantisse werden alle in dem Akkumulatorregister 40 für die nächste Pipeline-Stufe gespeichert. Das Überlaufsignal OFLW2 wird außerdem sofort in den früheren Pipeline-Abschnitt rückgekoppelt (den Exponentenvergleichs- und Zweierkomplementierungsabschnitt).Das Taktsignal an dem Akkumulatorregister 40 wird durch ein UND-Gatter 46 durch das No-Operation-Signal NOOP2 gesteuert, das, wenn es aktiviert ist, Änderungen des Akkumulatorregisters 40 verhindert.Der nächste Abschnitt der Schaltung nach der Erfindung ist der Normalisierungsabschnitt. Die Eingangssignale dieses Abschnitts sind die Ausgangssignale des Akkumulatorregisters 40. Der Normalisierungsabschnitt dient dem Zweck, die akkumulierte Summe wieder zurück in ein Gleitpunktformat umzuformen.Vierundzwanzig und fünfundzwanzig Bits der Mantisse, die in dem Akkumulatorregister 40 gespeichert sind, werden an einen bedingten Einserkomplemetierer 50 angelegt (das Vorzeichen- Bit wird nicht benutzt). Darüber hinaus werden alle fünfunzwanzig Bits der Mantisse (einschließlich des Vorzeichen- Bits) zu dem vorherigen Akkumulatorabschnitt als ein Eingangssignal des ersten Multiplexers 41 und des zweiten Multiplexers 42 rückgekoppelt.Das Neues-Vorzeichen-Signal NSIGN3 aus dem Akkumulatorregister 40 bestimmt, ob die Mantisse in der bedingten Einserkomplementschaltung 50 ungeändert durchgeht (in dem Fall einer positiven Zahl) oder ob jedes Bit der Mantisse invertiert wird, um die Einserkomplementdarstellung zu bilden (wenn die Mantisse negativ ist). (Im Idealfall sollte das Zweierkomplement der Mantisse genommen werden, wegen der zeitlichen Beschränkung in der gegenwärtigen Implementierungstechnik ist aber eine Einerkomplementschaltung benutzt worden).Das Ausgangssignal der bedingten Einerkomplementschaltung 50 wird an einen Prioritätscodierer 51 und an einen Linksverschieber 52 angelegt. Der Linksverschieber 52 wird durch den Prioritätscodierer 51 aktiviert. Der Prioritätscodierer 51 bestimmt eine Verschiebungscodegruppe, die gleich der Zahl der führenden Nullen in dem Ausgangssignal der bedingten Einerkomplementschaltung 50 ist. Ein Spezialsignal ZERO3 wird aktiviert, wenn sämtliche Bits des Eingangssignals des Prioritätscodierers 51 null sind, was ein Ergebnis von null bedeutet. Die Verschiebungscodegruppe, die durch den Prioritätscodierer 51 festgelegt wird, wird an den Linksverschieber 52 angelegt, der das Ausgangssignal der Einer-Komplementschaltung 50 um die Größe der Verschiebungscodegruppe nach links verschiebt. Nullen werden in die niedrigstwertigen Bitpositionen geschoben. Das Ausgangssignal des Linksverschiebers 52 wird daher die normalisierte Form der Mantisse haben, die ursprünglich in dem Akkumulatorregister 40 gespeichert wurde. Da sämtliche führenden Nullen des Eingangssignals des Linksverschiebers 52 hinausgeschoben worden sind, wird das höchstwertige Bit des Ausgangssignals des Linksverschiebers 52, das daher eine "1" sein muß, als die implizierte "1" der Gleitpunktzahlendarstellung behandelt und außer Betracht gelassen. Ein Vorzeichenbit wird jedoch mit dem Ausgangssignal des Linksverschiebers 52 vereinigt, um die endgültige normalisierte Mantisse für die Akkumulationssumme zu bilden. Dieses Vorzeichenbit ist das Neues-Vorzeichen-Signal NSIGN3, das in dem Akkumulationsabschnitt berechnet wird, wenn die Schaltung nicht in der Bypass-Betriebsart ist, und anderenfalls wird das Eingangsvorzeichen INSIGN3 der ursprünglichen Zahl in die Schaltung eingegeben, wenn die Bypass-Betriebsart aktiv ist. In diesem letzteren Fall ist das Vorzeichen dasselbe wie das ursprünglich eingegebene Vorzeichen, das sämtliche Registerverzögerungen der Schaltung durchlaufen hat. Welches der beiden Vorzeichen gewählt wird, wird durch das Bypass-Signal bestimmt, das die Aktivierung eines 1-Bit-Multiplexers 53 steuert, dessen beide Eingangssignale das Neues-Vorzeichen-Signal, welches in dem Akkumulationsabschnitt erzeugt wird, und das ursprüngliche Eingangsvorzeichen sind.Die Verschiebungscodegruppe, die durch den Prioritätscodierer 51 erzeugt wird, wird außerdem zum Berechnen des Ausgangsexponenten benutzt. Zuerst wird der größte Exponent LGEXP3, der in dem Akkumulatorregister 40 gespeichert ist, einer Addierschaltung 54 zugeführt und zu dem Überlaufsignal OFLW3 addiert. Wenn das Überlaufsignal aktiv ist, erhöht das effektiv den größten Exponenten um eins. Danach wird das Ausgangssignal des Addierers 54 an einen Eingang einer Subtrahierschaltung 55 angelegt, die von der neuen größten Exponentenzahl die Verschiebungscodegruppe subtrahiert, die durch den Prioritätscodierer 51 erzeugt wird, wodurch der Exponent eingestellt wird, um die Verschiebung im Binärpunkt der Mantisse nach der Normalisierung zu berücksichtigen. Das Ausgangssignal des Subtrahierers 55 wird dann mit dem Ausgangssignal des Linksverschiebers 52 und dem des 1-Bit-Multiplexers 53 vereinigt, um die vollständige Gleitpunktzahl zu bilden, die durch die Schaltung akkumuliert wird. Diese vollständige Zahl wird dem Eingang eines 32-Bit-Multiplexers 56 zugeführt. Die anderen Eingangssignale an dem Multiplexer bestehen aus vorbestimmten Signalen, welche die Grenzen des Systems darstellen. Ein Klemmsignal "clamping" wird erzeugt, um das Ausgangssignal des 32-Bit-Multiplexers 56 entweder als die akkumulierte Gleitpunktzahl oder als eine Darstellung von plus oder minus unendlich oder null auszuwählen. Das Klemmsignal, das durch ein ODER-Gatter 59 erzeugt wird, ist aktiv, wenn das Signal ZERO3 aus dem Prioritätscodierer 51 aktiv ist oder wenn der berechnete Exponent größer als der höchste zulässige Exponent ist oder wenn der Exponent negativ ist oder wenn die Exponentenbits entweder alles Nullen oder alles Einsen sind, während die Schaltung nicht in der Bypass-Betriebsart ist.In allen Fällen ist die Mantisse an dem "B"-Eingang des 32- Bit-Multiplexers 56 immer auf Null gesetzt. Der Exponent des Klemmwertes ist null, wenn der Exponent der akkumulierten Zahl negativ ist, wenn das Signal ZERO3 aus dem Prioritätscodierer 51 aktiv ist oder wenn die Exponentenbits alle null sind. In allen anderen Fällen des Klemmens werden die Exponentenbits für den Klemmwert auf Einsen gesetzt. Das Vorzeichen des Klemmwertes ist null, wenn die Exponentenbits alle null sind, anderenfalls ist das Vorzeichen gleich dem Wert des Neues-Vorzeichen-Signal NSIGN3 aus dem Akkumulatorregister 40.Das Ausgangssignal des 32-Bit-Multiplexers 56 wird an ein Ausgangsregister 60 angelegt, welches den Ausgang der gesamten Schaltung bildet. Das Taktsignal an dem Ausgangsregister 60 wird über ein UND-Gatter 61 durch das No-Operation- Signal NOOP3 und durch das HoldOut-Signal gesteuert. Wenn jedes Signal aktiviert ist, ist der Eingang an dem Ausgangsregister 60 gesperrt, und der Ausgang der gesamten Schaltung bleibt ungeändert.Im Rahmen der Erfindung sind verschiedene Modifizierungen der beschriebenen bevorzugten Ausführungsform möglich. Beispielsweise könnte die grundlegende Schaltung nach der Erfindung leicht an einen Aufbau ohne Pipeline-Architektur angepaßt werden.

Claims (12)

1. Gleitpunktzahlenakkumulatorschaltung mit Pipeline-Architektur zum Summieren von mehreren Gleitpunktzahlen, die ein Vorzeichen, einen Exponenten und eine Mantisse aufweisen, gekennzeichnet durch:
  • a) einen Eingangsabschnitt zum Empfangen und vorübergehenden Speichern einer Eingangsgleitpunktzahl;
  • b) einen Exponentenvergleichsabschnitt, der mit dem Ausgang des Eingangsabschnitts und eines Zwischenregisters (29) verbunden ist, zum Bestimmen einer Verschiebungscodegruppe, die von dem Exponent der Eingangszahl und dem Exponent des zuvor in der Schaltung akkumulierten numerischen Ergebnisses den größeren angibt, und zum vorübergehenden Speichern des größeren Exponenten und der Verschiebungscodegruppe in dem Zwischenregister (29);
  • c) einen Akkumulationsabschnitt, der mit dem Ausgang des Exponentenvergleichsabschnitts und eines Akkumulatorregisters (40) verbunden ist, zum Verschieben der Mantisse der Eingangszahl oder des früher akkumulierten, nichtnormalisierten numerischen Ergebnisses, je nach dem, was kleiner ist, um die Größe der Verschiebungscodegruppe, um die Binärpunkte beider Zahlen aufeinander auszurichten, und zum Summieren der beiden ausgerichteten Zahlen und zum Akkumulieren des nichtnormalisierten numerischen Ergebnisses in dem Akkumulatorregister (40);
  • d) einen Normalisierungsabschnitt, der mit dem Akkumulatorregister (40) verbunden ist, zum Umformen des numerischen Ergebnisses des Akkumulationsabschnitts in die Form einer normalisierten Gleitpunktzahl; und
  • e) einen Ausgangsabschnitt, der mit dem Ausgang des Normalisierungsabschnitts verbunden ist, zum vorübergehenden Speichern des normalisierten Ergebnisses in einem Ausgangsregister (60) und zum Abgeben des normalisierten Ergebnisses aus der Schaltung.
2. Gleitpunktzahlenakkumulatorschaltung nach Anspruch 1, dadurch gekennzeichnet, daß der Exponentenvergleichsabschnitt weiter eine bedingte Zweierkomplementschaltung (23) zum Berechnen des Zweierkomplements der Mantisse der Eingangszahl, wenn die Eingangszahl negativ ist, enthält.
3. Gleitpunktzahlenakkumulatorschaltung nach Anspruch 2, dadurch gekennzeichnet, daß die Normalisierungsschaltung eine Einrichtung enthält zum Umwandeln des nichtnormalisierten numerischen Ergebnisses in normalisierte Form, mit:
  • a) einer bedingten Komplementschaltung (50) zum Berechnen des Komplements der Mantisse des numerischen Ergebnisses, wenn das Ergebnis negativ ist;
  • b) einer Schaltungseinrichtung (52) zum Verschieben der Mantisse des Ergebnisses; bis alle führenden Nullbits entfernt sind; und
  • c) einer Exponenteneinstelleinrichtung (55) zum Einstellen des Exponenten des numerischen Ergebnisses um die Größe der Nullbeseitungsverschiebung.
4. Gleitpunktzahlenakkumulatorschaltung nach Anspruch 1, dadurch gekennzeichnet, daß der Normalisierungsabschnitt eine Einrichtung enthält zum Umwandeln des nichtnormalisierten numerischen Ergebnisses in normalisierte Form, mit:
a) einer Schaltungseinrichtung (52) zum Verschieben der Mantisse des Ergebnisses, bis alle führenden Nullbits beseitigt sind, und
b) einer Exponenteneinstelleinrichtung (55) zum Einstellen des Exponenten des numerischen Ergebnisses um die Größe der Nullbeseitigungsverschiebung.
5. Gleitpunktzahlenakkumulatorschaltung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der Eingangsabschnitt weiter eine Schaltungseinrichtung (3) enthält zum Empfangen von Teilen der Eingangszahl in einer zeitmultiplexierten Folge.
6. Gleitpunktzahlenakkumulatorschaltung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß der Exponentenvergleichsabschnitt weiter eine Schaltungseinrichtung (32) enthält zum Einstellen der Verschiebungscodegruppe, wenn die Summe aus dem Akkumulationsabschnitt überläuft.
7. Gleitpunktzahlenakkumulatorschaltung mit Pipeline-Architektur zum Summieren von mehreren Gleitpunktzahlen, die ein Vorzeichen, einen Exponenten und eine Mantisse aufweisen, gekennzeichnet durch:
  • a) einen Eingangsabschnitt zum Empfangen und vorübergehenden Speichern einer Eingangsgleitpunktzahl;
  • b) einen Exponentenvergleichs- und Zweierkomplementabschnitt, der mit dem Ausgang des Eingangsabschnitt und einem Zwischenregisters (29) verbunden ist, zum Bestimmen einer Verschiebungscodegruppe, die von dem Exponent der Eingangszahl und dem Exponent des früher in der Schaltung akkumulierten numerischen Resultats den größeren Exponenten angibt, zum Berechnen des Zweierkomplements der Mantisse der Eingangszahl, wenn die Eingangszahl negativ ist, und zum vorübergehenden Speichern der sich ergebenden Mantisse, des größeren Exponenten und der Verschiebungscodegruppe in dem Zwischenregister (29);
  • c) einen Akkumulationsabschnitt, der mit dem Ausgang des Exponentenvergleichsabschnitts und eines Akkumulatorregisters (40) verbunden ist, zum Verschieben der Mantisse der Eingangszahl oder des vorher akkumulierten, nichtnormalisierten numerischen Ergebnisses, je nach dem, was kleiner ist, um die Größe der Verschiebungscodegruppe, um die Binärpunkte beider Zahlen aufeinander auszurichten, und zum Summieren der beiden ausgerichteten Zahlen und zum Akkumulieren des nichtnormalisierten numerischen Ergebnisses in dem Akkumulatorregister (40);
  • d) einen Normalisierungsabschnitt, der mit dem Akkumulatorregister (40) verbunden ist, zum Umwandeln des numerischen Resultats des Akkumulationsabschnitts in die Form einer normalisierten Gleitpunktzahl, mit einer bedingten Komplementschaltung (50) zum Berechnen des Komplements der Mantisse des numerischen Resultats, wenn das Resultat negativ ist, einer Schaltungseinrichtung (52) zum Verschieben der Mantisse des Resultats, bis sämtliche führenden Nullbits beseitigt sind, und einer Exponenteneinstelleinrichtung (55) zum Einstellen des Exponenten des numerischen Resultats um die Größe der Nullbeseitigungsverschiebung; und
  • e) einen Ausgangsabschnitt, der mit dem Ausgang des Normalisierungsabschnitts verbunden ist, zum vorübergehenden Speichern des normalisierten Resultats in einem Ausgangsregister (60) und zum Abgeben des normalisierten Resultats aus der Schaltung
8. Gleitpunktzahlenakkumulatorschaltung nach Anspruch 7, dadurch gekennzeichnet, daß der Eingangsabschnitt weiter eine Schaltungseinrichtung (3) aufweist zum Empfangen von Teilen der Eingangszahl in einer zeitmultiplexierten Folge.
9. Gleitpunktzahlenakkumulatorschaltung nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß der Exponentenvergleichsabschnitt weiter eine Schaltungseinrichtung (32) aufweist zum Einstellen der Verschiebungscodegruppe, wenn die Summe aus dem Akkumulationsabschnitt überläuft.
10. Gleitpunktzahlenakkumulatorschaltung zum Summieren von mehreren Gleitpunktzahlen, die ein Vorzeichen, einen Exponenten und eine Mantisse aufweisen, gekennzeichnet durch:
  • a) einen Eingangsabschnitt zum Empfangen einer Eingangsgleitpunktzahl;
  • b) einen Exponentenvergleichsabschnitt, der mit dem Ausgang des Eingangsabschnitts und mit einem anschließenden Akkumulationsabschnitt verbunden ist, zum Bestimmen einer Verschiebungscodegruppe, die von dem Exponent der Eingangszahl und dem Exponent des zuvor in der Schaltung akkumulierten numerischen Resultats den größeren Exponent abgibt;
  • c) einen Akkumulationsabschnitt, der mit dem Ausgang des Exponentenvergleichsabschnitts und eines Akkumulatorregisters (40) verbunden ist, zum Verschieben der Mantisse der Eingangszahl oder des zuvor akkumulierten, nichtnormalisierten numerischen Ergebnisses, je nach dem, was kleiner ist, um die Größe der Verschiebungscodegruppe, um die Binärpunkte der beiden Zahlen aufeinander auszurichten, und zum Summieren der beiden ausgerichteten Zahlen und zum Akkumulieren des nichtnormalisierten numerischen Resultats in dem Akkumulatorregister (40);
  • d) einen Normalisierungsabschnitt, der mit dem Akkumulatorregister (40) verbunden ist, zum Umwandeln des numerischen Resultats des Akkumulationsabschnitts in die Form einer normalisierten Gleitpunktzahl; und
  • e) einen Ausgangsabschnitt, der mit dem Ausgang des Normalisierungsabschnitts verbunden ist, zum Abgeben des normalisierten Resultats aus der Schaltung.
DE19873700323 1986-01-13 1987-01-08 Gleitpunktzahlenakkumulatorschaltung Granted DE3700323A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/818,284 US4825400A (en) 1986-01-13 1986-01-13 Floating point accumulator circuit

Publications (2)

Publication Number Publication Date
DE3700323A1 true DE3700323A1 (de) 1987-07-16
DE3700323C2 DE3700323C2 (de) 1992-05-07

Family

ID=25225150

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19873700323 Granted DE3700323A1 (de) 1986-01-13 1987-01-08 Gleitpunktzahlenakkumulatorschaltung

Country Status (4)

Country Link
US (1) US4825400A (de)
JP (1) JPS62196767A (de)
DE (1) DE3700323A1 (de)
GB (1) GB2185338B (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999802A (en) * 1989-01-13 1991-03-12 International Business Machines Corporation Floating point arithmetic two cycle data flow
US5212662A (en) * 1989-01-13 1993-05-18 International Business Machines Corporation Floating point arithmetic two cycle data flow
JPH03136166A (ja) * 1989-10-23 1991-06-10 Nec Corp 演算回路
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5481488A (en) * 1994-10-21 1996-01-02 United Microelectronics Corporation Block floating point mechanism for fast Fourier transform processor
US5940312A (en) * 1995-10-10 1999-08-17 Microunity Systems Engineering, Inc. Signed binary logarithm system
US5835389A (en) * 1996-04-22 1998-11-10 Samsung Electronics Company, Ltd. Calculating the absolute difference of two integer numbers in a single instruction cycle
US6243731B1 (en) * 1998-03-20 2001-06-05 Texas Instruments Incorporated Apparatus and method for extending register dynamic range
JP3600026B2 (ja) * 1998-08-12 2004-12-08 株式会社東芝 浮動小数点演算器
GB2396708B (en) 2002-12-05 2006-06-21 Micron Technology Inc Hybrid arithmetic logic unit
US7912887B2 (en) * 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
US8432403B2 (en) * 2008-12-15 2013-04-30 Leonovus Usa Inc. Media action script acceleration apparatus
US20100149215A1 (en) * 2008-12-15 2010-06-17 Personal Web Systems, Inc. Media Action Script Acceleration Apparatus, System and Method
US8487941B2 (en) * 2008-12-15 2013-07-16 Leonovus Usa Inc. Media action script acceleration apparatus
US8487942B2 (en) * 2008-12-15 2013-07-16 Leonovus Usa Inc. Media action script acceleration system
US9021000B2 (en) 2012-06-29 2015-04-28 International Business Machines Corporation High speed and low power circuit structure for barrel shifter
US9575725B1 (en) * 2014-03-18 2017-02-21 Altera Corporation Specialized processing block with embedded pipelined accumulator circuitry
US10175944B2 (en) * 2017-04-12 2019-01-08 Intel Corporation Mixed-precision floating-point arithmetic circuitry in specialized processing blocks

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1549478B1 (de) * 1966-09-13 1970-08-27 Ibm Gleitkomma-Rechenwerk zur schnellen Addition oder Subtraktion binaerer Operanden

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4054787A (en) * 1975-06-06 1977-10-18 The United States Of America As Represented By The Secretary Of The Navy Apparatus for computing an arithmetically accumulated sequence of numbers
JPS6022371B2 (ja) * 1980-08-18 1985-06-01 株式会社日立製作所 ディジタル微分解析機
JPS5776634A (en) * 1980-10-31 1982-05-13 Hitachi Ltd Digital signal processor
JPS5947643A (ja) * 1982-09-13 1984-03-17 Hitachi Ltd 演算処理方式
JPS59188740A (ja) * 1983-04-11 1984-10-26 Hitachi Ltd フロ−テイング加算器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1549478B1 (de) * 1966-09-13 1970-08-27 Ibm Gleitkomma-Rechenwerk zur schnellen Addition oder Subtraktion binaerer Operanden

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
US 35 51 665 (Deckblatt) *
US-Z.: IBM Technical Disclosure Bulletin, Vol. 14, No. 10, March 1972, S. 2934-2936 *

Also Published As

Publication number Publication date
JPS62196767A (ja) 1987-08-31
DE3700323C2 (de) 1992-05-07
GB2185338B (en) 1989-10-18
GB2185338A (en) 1987-07-15
GB8700365D0 (en) 1987-02-11
US4825400A (en) 1989-04-25

Similar Documents

Publication Publication Date Title
DE3700323A1 (de) Gleitpunktzahlenakkumulatorschaltung
DE19983175B4 (de) Verfahren, Prozessor und Einrichtung für Gleitkommaoperationen und Formatkonvertierungsoperationen
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
EP0079471B1 (de) Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE2900324A1 (de) Mikroprogrammierbare arithmetische fliesskommaeinheit
DE1162111B (de) Gleitkomma-Recheneinrichtung
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE3143223A1 (de) Gleitpunkt-multiplizierschaltkreis
DE3701599C2 (de)
DE2612750A1 (de) Multipliziereinrichtung
EP0453641A2 (de) CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
DE2310553A1 (de) Vorrichtung zur durchfuehrung arithmetischer und logischer operationen
DE4019646C2 (de) Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung
DE60125442T2 (de) Dreifachredundante selbstschrubbende integrierte Schaltung
DE3933172A1 (de) Akkumulator fuer komplexe zahlen
DE3132611C2 (de)
EP0176821B1 (de) DPCM-Codierer mit verringerter interner Rechenzeit
DE69633479T2 (de) ODER-Gatter mit kontrollierbarer Breite
DE1125685B (de) Rechenmaschine
DE1135217B (de) UEberlaufanzeige
DE3700740A1 (de) Linearapproximationsumformschaltung
DE1549449A1 (de) Einrichtung zur Verarbeitung von Gleitkommazahlen
DE4416143A1 (de) Verfahren zum Entwerfen von Pipeline - Stufen in einem Computer-unterstützten Entwurfssystem
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: STAR TECHNOLOGIES, INC., STERLING, VA., US

8128 New person/name/address of the agent

Representative=s name: REINHARD, H., DIPL.-CHEM. DR.RER.NAT. SKUHRA, U.,

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee