DE3926876A1 - Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikation - Google Patents
Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikationInfo
- Publication number
- DE3926876A1 DE3926876A1 DE3926876A DE3926876A DE3926876A1 DE 3926876 A1 DE3926876 A1 DE 3926876A1 DE 3926876 A DE3926876 A DE 3926876A DE 3926876 A DE3926876 A DE 3926876A DE 3926876 A1 DE3926876 A1 DE 3926876A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- zero
- encoder
- mantissa
- operand
- 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/52—Multiplying; Dividing
-
- 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/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- 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/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49952—Sticky bit
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung bezieht sich auf das Gebiet digitaler Multipli
zierer und insbesondere auf die Vorhersage eines Sticky-Bits.
Die Multiplikation von zwei Zahlen ist eine arithmetische
Grundoperation. Die Implementierung einer solchen Operation in
einem Computer oder in einem Prozessor bringt die Schwierig
keit der Verwendung einer Hardware-Schaltung zur Erzeugung des
Produktes von zwei Zahlen mit sich. Da Prozessoren auf Hard
ware-Bauelemente, d.h. Siliciumchips reduziert werden, spielen
zusätzliche Abhängigkeiten eine Rolle bei der Bestimmung des
besten Schemata zum Multiplizieren von zwei Zahlen. Unter den
zahlreichen Schemata zur Multiplikation von zwei Zahlen ist
eine der bekanntesten Methoden die Verwendung einer Baumstruk
tur, z. B. eines Wallace-Baums zur Berechnung des Produkts.
Immer wenn hochgenaue Berechnungen oder Berechnungen mit sehr
großen und kleinen Zahlen notwendig sind, implementieren Pro
zessoren Fließpunktmultiplikation zur Verbesserung der Lei
stungsfähigkeit bei der Produktbildung.
Typischerweise werden bei einer Fließpunkt-Multiplizierein
richtung die Mantissen des Multiplikanden und der Multiplika
tor unter Verwendung einer schnellen, baumartigen Multipli
ziereinrichtung zur Ableitung des Produkts multipliziert. Es
stehen verschiedene Fließpunkt-Standards zur Verfügung, und
einer der bekanntesten ist der IEEE (Institute of Electrical
and Electronic Engineers, Inc.) binäre Fließpunkt-Standard
754. Die Abrundungsbedingungen dieses Fließpunkt-Standards
erfordern die Verwendung eines Rundungsbits (round bit) und
eines Sticky-Bits bei der Ausführung einer Fließpunktmultipli
kation. Das Rundungsbit ist definiert als das Bit des ungerun
deten Mantissenprodukts, welches eine Stelle niedriger als das
in der Resultatmantisse benutzte niedrigste Bit ist. Das
Sticky-Bit ist definiert als die ODER-Verknüpfung aller Bits
im ungerundeten Mantissenprodukt, das niedriger als das ge
rundete Bit ist. Die existierenden bekannten Implementierungen
bedingen die Berechnung des gesamten oder eines Teils des
Mantissenprodukts vor einer Berechnung des Sticky-Bits. Das
bedeutet, daß die geeigneten Bits nach der Berechnung des
Mantissenprodukts ODER-verknüpft werden, um das Sticky-Bit zu
bestimmen.
Bei einer anderen, schneller arbeitenden Implementierung be
kannter Art wird das Sticky-Bit berechnet, während das Produkt
in mehreren Schritten berechnet wird. Diese bekannte Methode
berechnet die wenigen niedrigsten Bits des Mantissenprodukts
in einem ersten Taktzyklus, und während eines zweiten Taktzy
klus werden die nächsten wenigen Bits des Mantissenprodukts
berechnet; die ODER-Verknüpfung der Mantissenproduktbits aus
dem ersten Taktzyklus wird während des zweiten Taktzyklus
berechnet. In jedem zusätzlichen Taktzyklus werden wenige
weitere Bits des Mantissenprodukts berechnet und die während
des vorhergehenden Taktzyklus berechneten Mantissenbits ODER-verknüpft.
Es ist kein Problem, das Sticky-Bit mit dieser
Methode zu berechnen, da einige Taktzyklen zur Berechnung des
Produkts benötigt werden. Jedoch muß auch mit der Implementie
rung dieser schnelleren Methode das Mantissenprodukt oder ein
Teil des Mantissenproduktes noch berechnet werden, bevor die
ODER-Verknüpfung zur Bestimmung des Sticky-Bits durchgeführt
werden kann.
Offensichtlich liegt der Nachteil der bekannten Methode darin,
daß das Sticky-Bit erst nach der Berechnung des Mantissenpro
dukts berechnet werden kann. Dies bedingt eine zusätzliche
Verzögerung in der Verarbeitungsoperation, da die Ab- oder
Aufrundungsoperation (Rundungsoperation) nicht beginnen kann,
bis das Sticky-Bit bekannt ist, und das Sticky-Bit kann erst
bestimmt werden, wenn die untere Hälfte des Mantissenprodukts
bekannt ist. Daher wäre es vorteilhaft, die Möglichkeit zu
schaffen, daß das Sticky-Bit vor oder gleichzeitig mit der
Ableitung des Produkts zu berechnen. Einfach ausgedrückt, ist
ein paralleles Verarbeitungsverfahren zur Bestimmung des
Sticky-Bits erwünscht, während der Prozessor das Produkt der
beiden Mantissen bestimmt. Dies würde eine Reduktion der Zeit
für die Multiplikationsoperation eines Prozessors ermöglichen,
da das Sticky-Bit bereits bekannt wäre, wenn die niedrigere
Hälfte des Mantissenprodukts berechnet wird. Ein neues Verfah
ren ist besonders wichtig bei zunehmender Prozessorgeschwin
digkeit und dann, wenn die Operationen in kürzerer Zeit als
beim Stande der Technik durchgeführt werden sollen.
Die Erfindung stellt eine Schaltung und ein Verfahren zum
Vorhersagen des Werts eines Sticky-Bits bei einer Fließpunkt
multiplikation zur Verfügung. Eine Multiplikandenoperandenman
tisse und eine Multiplikatoroperandenmantisse werden jeweils
als Eingänge an einen Endnullen-Codierer (trailing zero
encoder) angelegt. Jeder Endnullen-Codierer bestimmt die An
zahl von Endnullen in seiner entsprechenden Mantisse. Diese
Anzahl wird als Endnullen-Zählung von den beiden Endnullen-Co
dierern geliefert. Die Anzahl von Endnullen aus jeder Operan
denmantisse wird dann mit einer Konstanten verglichen, um das
Sticky-Bit zu bestimmen.
Die Erfindung implementiert eine besondere Schaltung für jeden
der Endnullen-Codierer zur Lieferung des Endnullen-Zählwerts.
Jeder Endnullen-Codierer besteht aus mehreren Codierern, die
in mehreren Zeilen angeordnet sind. Die Operandenmantisse wird
als Eingang an eine erste Codiererzeile angelegt, und der
Ausgang jeder Codiererzeile wird mit den Codierern einer nach
folgenden Zeile gekoppelt. Die erste Codiererzeile liefert die
am niedrigsten bewerteten Bits der Endnullen-Zählung, und jede
nachfolgende Zeile liefert aufeinanderfolgend höher bewertete
Bits der Endnullen-Zählung, bis die letzte Zeile erreicht ist,
wo der Codierer die am höchsten bewerteten Bits der Endnullen-Zählung
erzeugt. Auch Multiplexer sind mit den verschiedenen
Codierern gekoppelt, um den Ausgang des Codierers mit dem am
niedrigsten bewerteten Nicht-Null-Bit auszuwählen.
Im folgenden wird die Erfindung anhand von in der Zeichnung
dargestellten Ausführungsbeispielen näher erläutert. In der
Zeichnung zeigen:
Fig. 1 ein Diagramm einer Multiplikationsoperation von
zwei Operandenmantissen und einem resultieren
den Produkt;
Fig. 2 ein Diagramm einer Ableitung einer Endnullen-Zählung
durch Summation von Endnullen in den
Operandenmantissen;
Fig. 3 ein Blockschaltbild einer Sticky-Bit-Prädikator-Schaltung
gemäß einem bevorzugten Ausfüh
rungsbeispiel der Erfindung.
Fig. 4 ein Blockschaltbild eines Bestandteils des
Ausführungsbeispiels gemäß Fig. 3 bildenden
Endnullen-Codierers; und
Fig. 5 ein Blockschaltbild einer alternativen Ausfüh
rungsform einer Sticky-Bit-Prädikator-Schal
tung.
Beschrieben wird eine Schaltung und ein Verfahren zum Vorher
sagen des einer Fließpunktmultiplikation. In der folgenden
Beschreibung werden zahlreiche spezielle Einzelheiten, bei
spielsweise spezielle Schaltungen usw. angegeben, um das Ver
ständnis für das Wesen der Erfindung zu vertiefen. Es ist
jedoch klar, daß die Erfindung auch ohne diese besonderen
Einzelheiten realisierbar ist. In anderen Fällen werden be
kannte Strukturen und Verfahren nicht im einzelnen beschrie
ben, um die Erfindung nicht mit unnötigen Einzelheiten zu
belasten.
In Fig. 1 ist eine Multiplikationsoperation von zwei Zahlen X
und Y gezeigt. Die erste Zahl X ist der Multiplikand, und die
zweite Zahl Y ist bei diesem Beispiel der Multiplikator. Beide
Zahlen X und Y haben bei diesem Beispiel acht numerische Stel
len. Sowohl X als auch Y sind normalisierte Zahlen, da sie
größer als oder gleich Eins und eindeutig kleiner als Zwei
sind. Wenn X 0-X 6 alles Nullen wären, so wäre X exakt
gleich Eins. Wenn X 0-X 6 ausschließlich aus Einsen bestün
den, so wäre X etwas kleiner als Zwei. Der Bereich möglicher
Werte von X kann durch die Notation [1, 2) beschrieben wer
den, wobei die eckige Klammer angibt, daß 1 in das Intervall
einbezogen ist, und die runde Klammer angibt, daß 2 in das
Intervall nicht einbezogen ist.
Wenn die Multiplikationsoperation an diesen beiden Zahlen X
und Y durchgeführt wird, so wird ein Produkt Z gewonnen. Das
Produkt Z hat 16 numerische Stellen. Da X und Y im Bereich
[1, 2) liegen, ist das Produkt von X und Y im Bereich von
[1, 4). Das am höchsten bewertete Bit des Produkts aus X und
Y, Z 15 in diesem Beispiel, bestimmt, ob das Produkt im Be
reich 1, 2) oder im Bereich [2, 4) ist. Wenn Z 15 0 ist, so
ist das Produkt Z im Bereich [1, 2). Wenn Z 15 1 ist, so
ist das Produkt im Bereich [2, 4).
Wenn das Produkt Z abgeleitet wird, wird typischerweise nur
der obere Mantissenteil des Produkts benutzt. Wenn beispiels
weise X und Y durch 8 Ziffern-Positionen 0-7 dargestellt sind,
so hat auch das Produkt 8 Ziffern-Positionen. Außerdem ist das
Produkt Z typischerweise eine normalisierte Zahl, so daß unge
rundeten Produktbits entweder Z 8-Z 15 oder Z 7-Z 14 sind,
je nachdem ob Z 15 Eins ist. Das am höchsten bewertete Bit
einer normalisierten Zahl muß Eins sein. Die untere Hälfte der
Mantisse, entweder Z 7-Z 0 oder Z 6-Z 0 sind in dem aktu
ellen Produkt nicht repräsentiert. Das am höchsten bewertete
Bit der unbenutzten Ziffern wird als Rundungsbit bezeichnet.
Das Sticky-Bit ist die ODER-Verknüpfung aller Bits, die nie
driger als das Abrundungsbit bewertet sind. Wenn Z 15 Null
ist, ist das Rundungsbit Z 6 und das Sticky-Bit wäre die
ODER-Verknüpfung von Bits Z 0-Z 5. Wenn Z 15 Eins ist, wäre
das Rundungsbit Z 7 und Sticky-Bit wäre die ODER-Verknüpfung
von Bits Z 0-Z 6.
Das Rundungsbit und das Sticky-Bit bestimmen, ob der obere
Teil des Mantissenprodukts entweder inkrementiert oder ungeän
dert gelassen wird, um die Rundungsoperation durchzuführen. So
wird beispielsweise bei dem Modus der Positivrundung nach
Unendlich gemäß IEEE Fließ-Standard 754 der obere Teil des
Mantissenprodukts inkrementiert, wenn das Produkt positiv und
entweder das Rundungsbit oder das Sticky-Bit Eins ist. Eine
Eins des Sticky-Bits bedeutet, daß das exakte Mantissenprodukt
(Z 0-Z 15) größer als der obere Teil des Mantissenprodukts
ist. Daher muß bei der Rundung in Richtung Positiv-Unendlich
der obere Teil des Mantissenprodukts inkrementiert werden,
wenn das Resultat positiv ist und das Sticky-Bit Eins ist.
Wie in der Beschreibungseinleitung gesagt, bedingen bekannte
Methoden eine Lösung des Produkts vor der Bestimmung des
Sticky-Bits. Dies bedeutet, daß die niedriger als das Run
dungsbit bewerteten Bits nur durch tatsächliche Durchführung
der gesamten oder eines Teils der Multiplikation berechnet
werden kann. Die Erfindung sagt das Sticky-Bit aus der Operan
denmantisse unter der Annahme voraus, daß das Mantissenprodukt
im Bereich [1, 2) ist. Diese Vorhersage des Sticky-Bits ge
schieht parallel zur Berechnung des Mantissenprodukts.
Im folgenden wird auf Fig. 2 Bezug genommen. Die Erfindung
zieht in Betracht, daß die Anzahl von Endnullen in einem Pro
dukt gleich der Summe der Endnullen im Multiplikanden und im
Multiplikator ist. Ein hypothetisches Beispiel ist in Fig. 2
gezeigt. Wenn X 5 Endnullen und Y 4 Endnullen hat, so hat das
Produkt insgesamt 9 (5 + 4) Endnullen. Da das Sticky-Bit die
ODER-Verknüpfung der Bits Z 0-Z 5 ist (unter der Annahme,
daß das Mantissenprodukt im Bereich [1, 2)) liegt, so wird
das Sticky-Bit Null, wenn das Mantissenprodukt 6 oder mehr
Nullen hat. Da das Mantissenprodukt bei diesem Beispiel 9
Nullen hat, so ist das Sticky-Bit Null. Daher kann der Wert
des Sticky-Bits durch Zählen der Anzahl von Endnullen in den
Multiplikanden- und Multiplikatormantissen und Vergleichen der
Summe von Endnullen mit einer Konstanten vorhergesagt werden.
Diese Vorhersage läßt sich mit Hilfe einer separaten Schaltung
treffen, während die beiden Zahlen unter Verwendung herkömmli
cher Technologie multipliziert werden, so daß die Parallelbe
stimmung des Sticky-Bits mit der Multiplikation der beiden
Zahlen erreicht wird. Es ist daher Zweck der Erfindung, den
Sticky-Bit-Wert durch Bestimmung der Gesamtzahl von Endnullen
im Multiplikanden und Multiplikator vorherzusagen. Dies bedeu
tet, daß das Sticky-Bit aus den Operandenmantissen abgeleitet
wird, anstatt aus einer ODER-Verknüpfung der Bits des niedri
geren Mantissenprodukts.
In Fig. 3 ist ein Blockschaltbild der erfindungsgemäßen Schal
tung gezeigt. Schaltung 10 weist Endnullen-Codierer 11 und 12
auf. Der Endnullen-Codierer 11 ist so geschaltet, daß er die
Multiplikandenmantissen als Eingänge aufnimmt, während der
Codierer 12 so geschaltet ist, daß er die Multiplikatormantis
sen als Eingänge aufnimmt. Jeder der Codierer 11 und 12 be
stimmt die Anzahl von Endnullen in seiner zugehörigen Operan
denmantisse. Ausgangsseitig sind die beiden Codierer 11 und 12
mit einem Übertragssicherungsaddierer (carry save adder) 13
gekoppelt, in welchem ein Ausgang jedes der Codierer 11 und 12
die Anzahl von Endnullen in seiner Operandenmantisse liefert.
Der Übertragssicherungsaddierer 13 erhält an einem weiteren
Eingang eine Konstante. Die Konstante ist so gewählt, daß sie
einen Übertrag am Ausgang einer Übertragsvorausschauschaltung
16 für den Fall ausgibt, daß das Sticky-Bit eine Null ist. Der
Übertragssicherungsaddierer 13 liefert zwei Zahlen (C und S),
deren Summe gleich der Summe seiner drei Eingangsgrößen ist.
Die Operation eines Übertragssicherungsaddierers ist bei
spielsweise aus Introduction to Arithmetric for Digital Sy
stems Designers von Shlomo Waser und Michael Flynn, 1982,
Seiten 103, 104, bekannt.
Die beiden Ausgänge des Übertragssicherungsaddierers 13 sind
mit einer Übertragsvorausschauschaltung 16 gekoppelt, die
daraus das Sticky-Bit bestimmt. Wenn beispielsweise die Ope
randenmantissen entsprechend der Darstellung in Fig. 1 8-Bit-Zahlen
wären, so wäre das Sticky-Bit Null, wenn die Summe der
Endnullen-Zählwerte größer als oder gleich 6 wäre. Bei diesem
Beispiel könnte eine Konstante von 10 zur Summe der Endnullen-Zählwerte
addiert werden. Die Übertragsvorausschauschaltung
würde bestimmen, ob die Summe der beiden Endnullen-Zählwerte
und der Konstanten 10 größer als oder gleich 16 ist. Wenn die
Summe dieser drei Zahlen größer als oder gleich 16 ist, so ist
das Sticky-Bit Null.
Zweck des Übertragssicherungsaddierers 13 und der Übertrags
vorausschauschaltung 16 ist die Feststellung, ob die Summe der
beiden Endnullen-Zählwerte größer als seine Konstante ist.
Diese Funktion kann, wie der Fachmann weiß, durch verschiedene
abgewandelte Schaltungen realisiert werden. Eine Abwandlung
ist in Fig. 5 gezeigt. Es ist jedoch klar, daß die Erfindung
nicht auf die beiden hier anhand der Fig. 3 und 5 beschriebe
nen Ausführungsbeispiele beschränkt ist.
In Fig. 5 ist ein alternatives Ausführungsbeispiel der Schal
tung zum Vorhersagen des Sticky-Bits gezeigt. Die Ausgänge der
beiden Endnullen-Codierer, wie die Codierer 11 und 12 in Fig. 3,
werden an einen Addierer 47 angelegt, der die Gesamtzählung
der Nullen addiert und das an seinem Ausgang erscheinende
Ergebnis an einen Komparator 48 anlegt. Der Komparator ist
außerdem so angeordnet, daß er eine Konstante als weiteren
Eingang erhält. Der Ausgang des Komparators liefert den
Sticky-Bit-Wert. Für das Beispiel gemäß Fig. 1 wäre die Kon
stante in der Schaltung gemäß Fig. 5 eine 6. Der Komparator
würde das Sticky-Bit zu Null machen, wenn die Summe der End
nullen-Zählungen aus dem Addierer 47 größer als oder gleich 6
ist.
In Fig. 4 ist eine Schaltung 20 zur Bestimmung der Endnullen-Zählung
gezeigt. Die Schaltung 20 ist in jedem der Endnullen-Codierer 11
und 12 in Fig. 3 vorhanden. Das erste Niveau der
Schaltung 20 besteht aus mehreren Codierern 21-1 zur Aufnahme
einer der Operandenmantissen als Eingangssignal. 13 Codierer
21-1 sind gezeigt, wobei jeder Codierer 4 unterschiedliche
Bits der Mantisse aufnimmt. Insgesamt 13 Codierer 21 sind
vorgesehen, um eine 52-Bit-Operandenmantisse aufzunehmen, da
der Prozessor bei dem beschriebenen Ausführungsbeispiel so
konstruiert ist, daß er eine 52-Bit-Operandenmantisse für die
Fließpunktmultiplikation verarbeitet. Obwohl eine spezielle
Anzahl von Bits bei diesem Beispiel als Operandenmantisse
vorgesehen ist, ist es klar, daß die Zahl der die Operanden
mantisse bildenden Bits ein Konstruktionsparameter ist, der
von der tatsächlichen Prozessorausbildung abhängig ist.
Jeder Codierer nimmt eingangsseitig 4 Bits auf und erzeugt
eine 2-Bit-Ausgabe sowie ein Setzsignal. Das Setzsignal aus
jedem Codierer 21 ist das Resultat der ODER-Verknüpfung seiner
4 Eingänge. Wenn alle 4 Eingänge Null sind, so ist das Setz
signal ebenfalls Null. Wenn jedoch wenigstens einer der 4
Eingänge des Codierers 21 den Wert von 1 hat, so hat auch das
Setzsignal einen Wert von 1. Wenn das Setzsignal eine 1 ist,
so liefern die anderen beiden Ausgangsleitungen des Codierers
21 einen Code zur Identifizierung der Bitposition der ersten
1, die zu berücksichtigen ist. Verschiedene bekannte Codierer
können zur Erfüllung der Funktion des Codierers 21 verwendet
werden; ein derartiger Codierer wird von der Firma Texas In
struments, Inc. unter der Bauteilnummer 74 148 angeboten.
Wenn als hypothetisches Beispiel 21 Endnullen bei einer vorge
gebenen Operandenmantisse vorhanden sind, so tritt das erste
1-Bit an der Bitposition 22 auf (die auch mit dem Bezugszei
chen 22 bezeichnet ist), so daß der aus dem Codierer 23 kom
mende Setzwert eine 1 ist, und die Ausgabe des Codierers 23
einen Wert von beispielweis 01 hat, um zu kennzeichnen, daß
sein zweiter Eingang die vom Codierer 23 festgestellte erste 1
führt. Wenn Bit 22 einen Wert von 1 hat, so sind die nachfol
genden Bitwerte für die Bestimmung der Endnullen-Zählung ohne
Bedeutung. Bei diesem Beispiel hat der Setzsignalwert der
niedriger als der Codierer 23 bewerteten anderen Codierer
einen Wert von 0, so daß die Ausgabe aus diesen Codierern der
Bedingung "unbeachtlich" unterliegt.
Mehrere Codierer 21-2 sind auf einem zweiten Niveau vorgesehen
und nehmen die Setzsignale aus den Codierern 21-1 des Niveaus
1 als Eingänge auf. Da die Codierer 21-2 den Codierern 21-1
des Niveaus 1 äquivalent sind, sind sie ebenfalls so ausgebil
det, daß sie vier Eingänge bzw. Eingaben aufnehmen und ein
Setzsignal sowie den Positionscode zur Bezeichnung der Posi
tion des ersten Setzsignals des Niveaus 1 mit einem Wert 1
erzeugen. Drei Codierer 21-2 werden auf dem Niveau 2 verwen
det, wobei Setzsignale aus 12 der Codierer 21-1 des Niveaus 1
als Eingangssignale an die Codierer 21-2 des Niveaus 2 ange
legt werden. Die tatsächlich Anzahl von Codierern 21, die in
den verschiedenen Niveaus verwendet werden, hängt natürlich
von der aktuellen Anzahl von Bits der Operandenmantisse ab.
Die Setzsignale aus den Niveau-2-Codierern 21-2 werden an
einen Niveau-3-Codierer 21-3 angelegt. Der verbleibende Codie
rer des Niveaus 1 (die 13te Codiererposition) ist mit dem
vierten Eingang des Codierers 21-3 des Niveaus 3 gekoppelt.
Ein Niveau-2-Codierer ist für diesen 13ten Codierer des Ni
veaus 1 nicht notwendig, da er ein Einzelcodierer ist, wenn
die Codierer 21-1 jeweils in Vierergruppen unterteilt sind.
Selbstverständlich müßte ein Niveau-2-Codierer bei Vorhanden
sein eines weiteren Codierers auf dem Niveau 1 für die 13ten
und 14ten Codierer des Niveaus 1 verwendet werden. Zu beachten
ist, daß die verschiedenen Codierer auf den verschiedenen
Niveaus so angeordnet sind, daß die Codierer mit den höher
bewerteten Bitpositionen als Eingänge der höher bewerteten
Eingabeposition mit dem Codierer des nächsten Niveaus gekop
pelt sind. Dies ist notwendig, um die relative Position des
ersten Mantissenbits mit dem Wert von 1 aufrechtzuerhalten, da
dieses Bit die Tatsache umsetzt, daß alle niedriger als dieses
erste Bit bewerteten Bits einen Wert von 0 haben.
Zwei Niveaus von Vier-zu-Eins Multiplexern (MUX) 25 werden zur
Auswahl der geeigneten Codiererausgabe verwendet. In der
Schaltung 20 ist ein Vier-zu-Eins MUX 25-2 für jeden Codierer
des Niveaus 2 vorgesehen. Der Ausgang jedes Codiererniveaus 1
ist entsprechend dem zugehörigen Codierer 21-2 mit dem MUX
25-2 gekoppelt. Geeignete Steuersignale (CTL) werden vom zuge
hörigen Codierer 21-2 an den entsprechenden MUX 25-2 angelegt,
um den Ausgang des Niveau-1-Codierers auszuwählen, der den
ersten Setzwert von 1 hat. Daher ist für das obige Beispiel,
bei dem das erste Einzelbit an der Bitposition 22 auftritt,
das Ausgangssignal dieses Codierers 23 über den MUX 25-2 ge
koppelt, der dem Codierer 23 zugeordnet ist.
Der dem Codierer 21-3 auf dem dritten Niveau zugeordnete MUX
25-3 erhält Eingangssignale direkt aus dem Niveau-2-Codierer
21-2 und auch von entsprechenden Niveau-1-Codierern 21-1 über
die dem Niveau-2-Codierer zugeordneten Multiplexer 25-2. Auch
der am höchsten bewertete Codierer des Niveaus 1 ist ausgangs
seitig mit dem Multiplexer 25-3 gekoppelt. Da es keinen Ni
veau-2-Codierer in Zuordnung zu dem am höchsten bewerteten
Codierer des Niveaus 1 gibt, werden zwei Nullen, entsprechend
der Darstellung in Fig. 4, in den MUX 25-3 eingegeben. Der
Ausgang des Codierers 21-3 des Niveaus 3 liefert die am höch
sten bewerteten Bits für die Endnullen-Zählung, während der
dem Niveau-3-Codierer 21-3 zugeordnete Vier-zu-Eins-MUX 25-3
die beiden Bitpaare liefert, die auch die Endnullen-Zählung
bestimmen. Steuer (CTL)-Leitungen von Muttercodierern 21 sind
mit den Multiplexern 25 verbunden und liefern Steuersignale an
die Multiplexer 25.
Von den die Endnullen-Zählung bestimmenden sechs Bits bestim
men die beiden am höchsten bewerteten Bits, welche der vier
Gruppen von Niveau-1-Codierern das erste 1-Bit (am niedrigsten
bewerteter 1-Bitwert) in der Operandenmantisse hat. Die mitt
leren beiden Bits bezeichnen den Codierer 21-1 im Niveau 1,
der das am niedrigsten bewertete 1-Bit hat. Schließlich kenn
zeichnen die am niedrigsten bewerteten beiden Bits, welches
Bit des ausgewählten Codierers 21-1 des Niveaus das am nie
drigsten bewertete 1-Bit hat. Daher bestimmen die sechs Lei
tungen das Bit, das das am niedrigsten bewertete 1-Bit in der
Operandenmantisse ist. Alle niedrigeren Bits als das am nie
drigsten bewertete 1-Bit haben einen Wert von 0.
Es ist einleuchtend, daß bei einer anderen Bitzahl in der
Operandenmantisse als bei dem beschriebenen Beispiel weniger
oder mehr Schaltungskomponenten in der Anordnung gemäß Fig. 4
benötigt werden. Die tatsächliche Zahl von Niveaus sowie die
Anzahl von Codierern 21 und Multiplexern 25 auf jedem der
Niveaus werden durch die tatsächliche Anzahl von Bits in der
Operandenmantisse und durch die Art der verwendeten Codierer
und Multiplexer bestimmt.
Durch Vorhersagen des Sticky-Bits mit Hilfe der Mittel der
vorliegenden Erfindung wird die Berechnung des Sticky-Bits aus
der kritischen Phase der Multiplikationsoperation entfernt, so
daß das Sticky-Bit bereits zur Verfügung steht, wenn das End
produkt berechnet wird. Die Verwendung der Parallelverarbei
tung zur Vorhersage des Sticky-Bits ist bei Prozessoren kri
tisch, welche die Gleitpunktmultiplikation in einer kurzen
Anzahl von Taktzyklen oder sogar in einem Taktzyklus durchfüh
ren. In der beschriebenen Implementierung wird der Sticky-Bit-
Prädiktor in einem Prozessor verwendet, der eine neue Multi
plikation mit einfacher Genauigkeit in einem Einzeltakt und
eine Multiplikation mit doppelter Präzision in zwei Taktzyklen
zu beenden vermag. Die Latenz der Einzel- und Doppelpräzi
sionsmultiplikation mit dem die Erfindung benutzenden numeri
schen Prozessor ist 3 bzw. 4 Takte.
Wie weiter oben erläutert, sagt der Sticky-Bit-Prädiktor das
Sticky-Bit unter der Annahme voraus, daß das Mantissenprodukt
im Bereich [1, 2) liegt. Um das Sticky-Bit für den Mantissen
produktbereich [2, 4) zu ermitteln, könnte ein Vergleich der
Summe der Endnullen-Zählungen mit einer anderen Konstante
vorgenommen werden. Ein anderer Weg zur Ermittlung des
Sticky-Bits für den Mantissenbereich [2, 4) ist die ODER-Ver
knüpfung des Sticky-Bits für den Bereich [1, 2) mit dem Run
dungsbit für den Bereich [1, 2). In Anwendung der Erfindung
wird dieser zweite Weg gewählt. Zwei 8-Bit Übertragsvoraus
schauschaltungen dienen zur Bestimmung des Bereichs des Man
tissenprodukts und des Abrundungsbits in 99,6% der Operati
onen. Wenn diese Übertragsvorausschauschaltungen weder den
Bereich noch das Rundungsbit bestimmen können, werden zwei
extra Taktzyklen zur Durchführung dieser Berechnungen verwen
det.
In dem Normalfall, daß das Sticky-Bit und das Rundungsbit
ausreichend rasch berechnet werden, so daß eine einzelne Über
tragsaddierung zur Durchführung sowohl der Rundung als auch
der Addierung der beiden Zahlen verwendet werden kann, deren
Summe der obere Abschnitt des Mantissenprodukts ist. Der
Sticky-Bit-Prädiktor macht es möglich, das Mantissenprodukt
parallel mit einer Berechnung dafür durchzuführen, ob der
obere Abschnitt des Mantissenprodukts für die Rundung inkre
mentiert werden soll.
Es ist klar, daß auch verschiedene andere Anordnungen zur
Bestimmung der Anzahl von Endnullen verwendet werden können
und daß der Endnullen-Codierer in der Ausführung gemäß Fig. 4
nur ein mögliches Schaltungsschema zum Zählen der Anzahl von
Endnullen darstellt.
Claims (9)
1. Schaltung zum Vorhersagen eines Sticky-Bit-Wertes beim
Multiplizieren von zwei Zahlen,
dadurch gekennzeichnet,
daß ein erster Endnullen-Codierer (11) zur Bestimmung einer
Anzahl von Endnullen in einer ersten Operandenmantisse und ein
zweiter Endnullen-Codierer (12) zur Bestimmung einer Anzahl
von Endnullen in einer zweiten Operandenmantisse vorgesehen
sind, und daß den beiden Codierern (11, 12) ein Addierer (13; 47)
derart nachgeschaltet ist, daß er die Ausgangssignale der
ersten und zweiten Endnullen-Codierer aufnimmt und eine Summe
aus den Ausgangssignalen zur Bestimmung der Gesamtzahl von
Endnullen in beiden Operandenmantissen bildet, und daß eine
Komparatoreinrichtung (16; 48) mit dem Addierer (47) zur Be
stimmung des Sticky-Bit-Wertes gekoppelt ist.
2. Schaltung nach Anspruch 1, dadurch gekennzeichnet, daß
der Addierer aus einem Übertragssicherungsaddierer (13) be
steht.
3. Schaltung nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die Komparatoreinrichtung als Übertragsvorausschauschal
tung (16) ausgebildet ist.
4. Schaltung, insbesondere nach einem der Ansprüche 1 bis 3,
zur Vorhersage eines Wertes eines Sticky-Bits, das als
Oder-Verknüpfung von niedriger als das Rundungsbit bewerteten Bits
eines Produkts der beiden aus einem Multiplikanden und einem
Multiplikator bestehenden Operandenmantissen definiert ist,
dadurch gekennzeichnet, daß die Komparatoreinrichtung (16; 48)
so ausgebildet und angeordnet ist, daß sie die Summe der Ge
samtzahl von Endnullen der Operandenmantissen mit einer Kon
stanten vergleicht und den Sticky-Bit-Wert danach bestimmt, ob
die Summe größer als die Konstante ist.
5. Schaltung nach Anspruch 4, dadurch gekennzeichnet, daß
die Endnullen-Codierer (11, 12) mehrere Zeilen mit jeweils
wenigstens einem Codierer (21-1, 21-2, 21-3) aufweisen, und
daß die Codierer eine am niedrigsten bewertete Bitposition
einer Operandenmantisse mit einem von Null abweichenden Wert
bestimmen, und daß alle Bits, die niedriger sind als das am
niedrigsten bewertete Nicht-Null-Bit einen Wert von Null ha
ben.
6. Schaltung nach Anspruch 5, dadurch gekennzeichnet, daß
die Codierer einer ersten Zeile (21-1) die Operandenmantisse
aufnehmen und eine Ausgabe zur Bestimmung der am niedrigsten
bewerteten Bits einer Endnullen-Zählung erzeugen, die die
Anzahl von Endnullen ergibt, daß Codierer aus jeder Zeile
gruppiert und mit Codierern (21-2, 21-3) einer nachfolgenden
Zeile gekoppelt sind, wobei die Ausgabe aus jeder nachfolgen
den Codiererzeile aufeinanderfolgend höher bewertete Bits der
Endnullen-Zählung ergibt und daß ein Codierer (21-3) einer
letzten Zeile die am höchsten bewerteten Bits der
Endnullen-Zählung erzeugt.
7. Verfahren zur Vorhersage eines Wertes eines Sticky-Bits,
das definiert ist als ODER-Verknüpfung von niedriger als das
Rundungsbit bewerteten Bits eines Produkts aus einer Multipli
kandenoperandenmantisse und einer Multiplikatoroperandenman
tisse, die bei der Durchführung einer Gleitpunkt-Multiplika
tionsoperation multipliziert werden,
dadurch gekennzeichnet,
daß zur Bestimmung einer Anzahl von Endnullen in jeweiligen
Operandenmantissen Endnullen-Codierer für jede Operandenman
tisse bereitgestellt werden, daß die Operandenmantissen in die
zugehörigen Endnullen-Codierer eingegeben werden, daß in jedem
der Endnullen-Codierer ein am niedrigsten bewertetes
Nicht-Null-Bit der zugehörigen Operandenmantisse bestimmt wird, daß
aus jedem Endnullen-Codierer ein Zählwert einer Anzahl von
Bits gebildet wird, die niedriger als das niedrigste
Nicht-Null-Bit sind, wobei der Zählwert eine Anzahl von Endnullen
der zugehörigen Operandenmantisse ist, daß die Zahlen der
Endnullen der beiden Mantissen zur Bildung einer Summe addiert
werden und daß die Summe mit einer Konstanten verglichen wird,
um den Wert des Sticky-Bits zu bestimmen.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß
die Addition der beiden Endnullen-Zählwerte und der Vergleich
mit einer Konstanten so durchgeführt werden, daß zunächst die
beiden Endnullen-Zählwerte an zwei Eingänge und eine Konstante
an einen dritten Eingang eines Übertragssicherungsaddierers
angelegt werden, wobei die Konstante so gewählt wird, daß das
am höchsten bewertete Bit der Summe der beiden Ausgangssignale
des Übertragssicherungsaddierers dann und nur dann einen Wert
von 1 hat, wenn das Sticky-Bit Null ist, und daß die beiden
Ausgänge des Übertragssicherungsaddierers an eine Schaltung
angelegt werden, die feststellt, ob das am höchsten bewertete
Bit der Summe der beiden Ausgänge des Übertragssicherungs
addierers Eins ist.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
als Bestimmungsschaltung eine Übertragsvorhersageschaltung
verwendet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/248,740 US4928259A (en) | 1988-09-23 | 1988-09-23 | Sticky bit predictor for floating-point multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3926876A1 true DE3926876A1 (de) | 1990-03-29 |
DE3926876C2 DE3926876C2 (de) | 1996-08-14 |
Family
ID=22940472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3926876A Expired - Fee Related DE3926876C2 (de) | 1988-09-23 | 1989-08-16 | Schaltung und Verfahren zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation |
Country Status (5)
Country | Link |
---|---|
US (1) | US4928259A (de) |
JP (1) | JP2676410B2 (de) |
KR (1) | KR0138903B1 (de) |
DE (1) | DE3926876C2 (de) |
GB (1) | GB2223111B (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212661A (en) * | 1989-10-16 | 1993-05-18 | Matsushita Electric Industrial Co., Ltd. | Apparatus for performing floating point arithmetic operation and rounding the result thereof |
US5128889A (en) * | 1990-02-22 | 1992-07-07 | Matsushita Electric Industrial Co., Ltd. | Floating-point arithmetic apparatus with compensation for mantissa truncation |
US5113364A (en) * | 1990-10-29 | 1992-05-12 | Motorola, Inc. | Concurrent sticky-bit detection and multiplication in a multiplier circuit |
US5218564A (en) * | 1991-06-07 | 1993-06-08 | National Semiconductor Corporation | Layout efficient 32-bit shifter/register with 16-bit interface |
CA2122139C (en) * | 1991-10-24 | 2000-08-29 | David Leroy Sprague | Data processing system |
US5361370A (en) * | 1991-10-24 | 1994-11-01 | Intel Corporation | Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port |
US5260889A (en) * | 1992-03-31 | 1993-11-09 | Intel Corporation | Computation of sticky-bit in parallel with partial products in a floating point multiplier unit |
US5359548A (en) * | 1992-04-15 | 1994-10-25 | Fujitsu Limited | Floating-point arithmetic system having multiple-input addition and subtraction means |
US5568410A (en) * | 1994-09-29 | 1996-10-22 | International Business Machines Corporation | Method and apparatus for determining the amount of leading zeros or ones in a binary data field |
US5867722A (en) * | 1995-04-25 | 1999-02-02 | United Microelectronics Corporation | Sticky bit detector for a floating-point processor |
US5742537A (en) * | 1995-06-30 | 1998-04-21 | Wolrich; Gilbert M. | Fast determination of floating point sticky bit from input operands |
JPH09204295A (ja) * | 1996-01-29 | 1997-08-05 | Kofu Nippon Denki Kk | スティッキービット検出回路 |
US6044391A (en) * | 1997-06-25 | 2000-03-28 | Sun Microsystems, Inc. | Method of generating the sticky-bit from the input operands |
US5944773A (en) * | 1997-06-25 | 1999-08-31 | Sun Microsystems, Inc. | Floating-point multiplier circuit for generating the sticky-bit from the input operands |
JP3418711B2 (ja) * | 1998-12-25 | 2003-06-23 | 富士通株式会社 | スティッキービット値予測回路及びこれを備えた半導体装置 |
TW569090B (en) * | 2001-07-17 | 2004-01-01 | Taiwan Semiconductor Mfg | Priority address encoder and method of the same |
EP1739547A1 (de) * | 2005-07-01 | 2007-01-03 | STMicroelectronics (Research & Development) Limited | Ausführen von Abrundung in einer aritmetischen Operation |
US20230359436A1 (en) * | 2022-05-05 | 2023-11-09 | SiFive, Inc. | Floating-point multiplier using zero counters |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4758972A (en) * | 1986-06-02 | 1988-07-19 | Raytheon Company | Precision rounding in a floating point arithmetic unit |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4270167A (en) * | 1978-06-30 | 1981-05-26 | Intel Corporation | Apparatus and method for cooperative and concurrent coprocessing of digital information |
US4338675A (en) * | 1980-02-13 | 1982-07-06 | Intel Corporation | Numeric data processor |
US4484259A (en) * | 1980-02-13 | 1984-11-20 | Intel Corporation | Fraction bus for use in a numeric data processor |
US4748575A (en) * | 1984-12-21 | 1988-05-31 | Zilog, Inc. | Circuit for detecting trailing zeros in numbers |
-
1988
- 1988-09-23 US US07/248,740 patent/US4928259A/en not_active Expired - Lifetime
-
1989
- 1989-04-26 GB GB8909516A patent/GB2223111B/en not_active Expired - Fee Related
- 1989-08-16 DE DE3926876A patent/DE3926876C2/de not_active Expired - Fee Related
- 1989-08-17 KR KR1019890011710A patent/KR0138903B1/ko not_active IP Right Cessation
- 1989-08-29 JP JP1220508A patent/JP2676410B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4758972A (en) * | 1986-06-02 | 1988-07-19 | Raytheon Company | Precision rounding in a floating point arithmetic unit |
Also Published As
Publication number | Publication date |
---|---|
US4928259A (en) | 1990-05-22 |
GB8909516D0 (en) | 1989-06-14 |
DE3926876C2 (de) | 1996-08-14 |
JPH02115928A (ja) | 1990-04-27 |
KR900005284A (ko) | 1990-04-13 |
GB2223111A (en) | 1990-03-28 |
KR0138903B1 (ko) | 1998-06-15 |
GB2223111B (en) | 1992-07-22 |
JP2676410B2 (ja) | 1997-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3926876C2 (de) | Schaltung und Verfahren zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation | |
DE69132517T2 (de) | Gleitkommaprozessor | |
DE2616717C2 (de) | Digitales Addierwerk | |
DE3486211T2 (de) | Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher. | |
DE69131187T2 (de) | Hochgeschwindigkeitsdividierer | |
DE68924477T2 (de) | Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition. | |
DE2246968A1 (de) | Einrichtung zur kombination, insbesondere multiplikation, zweier gleitkommazahlen | |
DE2658248C2 (de) | ||
DE3927009A1 (de) | Addierschaltung | |
DE3700991A1 (de) | Digitaler uebertragsvorgriffsaddierer | |
DE69032890T2 (de) | Verfahren und Gerät zur Ausführung der Quadratwurzelfunktion mit Hilfe eines Multiplizierers rechteckigen Seitenverhältnisses | |
DE2946846A1 (de) | Rundungs-korrekturlogik fuer multiplizierer fuer modifizierten booth-algorithmus | |
DE19781794C2 (de) | Verfahren und Einrichtung zur Division von Gleitkomma- oder ganzen Zahlen | |
DE69903866T2 (de) | Multiplizierer mit niedriger Leistung für CPU und DSP | |
DE10013068C2 (de) | Potenzierungsoperationsvorrichtung | |
DE3852576T2 (de) | Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen. | |
DE69501581T2 (de) | Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode | |
DE69030169T2 (de) | Hochleistungsaddierer mit Carry-Vorhersage | |
DE69230520T2 (de) | Verfahren und Anordung zur Erzeugung von Summeinformation-/Rundungskontrolle-Signal | |
DE69225638T2 (de) | Abrundungsschaltung in einem Gleitkommamultiplizierer | |
DE3889746T2 (de) | Zähler. | |
DE3132611C2 (de) | ||
DE19711005C2 (de) | Baumschaltung zur Addition von Teilprodukten im Booth-Algorithmus | |
DE69906027T2 (de) | Schaltung zum Vorhersagen des "Sticky Bit"-Wertes | |
DE69031021T2 (de) | Elektronischer Rechner |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |