DE3700323A1 - Gleitpunktzahlenakkumulatorschaltung - Google Patents
GleitpunktzahlenakkumulatorschaltungInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
- G06F7/5095—Adding; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3832—Less usual number representations
- G06F2207/3836—One's complement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation 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.
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)
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)
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)
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 | フロ−テイング加算器 |
-
1986
- 1986-01-13 US US06/818,284 patent/US4825400A/en not_active Expired - Fee Related
-
1987
- 1987-01-08 DE DE19873700323 patent/DE3700323A1/de active Granted
- 1987-01-08 GB GB8700365A patent/GB2185338B/en not_active Expired
- 1987-01-13 JP JP62004235A patent/JPS62196767A/ja active Pending
Patent Citations (1)
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)
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 |