DE3926876A1 - Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikation - Google Patents

Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikation

Info

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
Application number
DE3926876A
Other languages
English (en)
Other versions
DE3926876C2 (de
Inventor
David Galbi
Les Kohn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE3926876A1 publication Critical patent/DE3926876A1/de
Application granted granted Critical
Publication of DE3926876C2 publication Critical patent/DE3926876C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49952Sticky 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.
DE3926876A 1988-09-23 1989-08-16 Schaltung und Verfahren zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation Expired - Fee Related DE3926876C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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