DE3926876C2 - Schaltung und Verfahren zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation - Google Patents

Schaltung und Verfahren zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation

Info

Publication number
DE3926876C2
DE3926876C2 DE3926876A DE3926876A DE3926876C2 DE 3926876 C2 DE3926876 C2 DE 3926876C2 DE 3926876 A DE3926876 A DE 3926876A DE 3926876 A DE3926876 A DE 3926876A DE 3926876 C2 DE3926876 C2 DE 3926876C2
Authority
DE
Germany
Prior art keywords
zero
bit
encoder
bits
encoders
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3926876A
Other languages
English (en)
Other versions
DE3926876A1 (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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (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 betrifft eine Schaltung zum Vorhersagen eines Sticky-Bit-Wertes bei der Gleitkommamultiplikation von zwei Zahlen nach dem Oberbegriff des Anspruchs 1 sowie ein Verfahren zur Vorhersage eines Wertes eines Sticky-Bits nach dem Oberbegriff des Anspruchs 7.
Die Multiplikation von zwei Zahlen ist eine arithmeti­ sche Grundoperation. Die Implementierung einer solchen Ope­ ration in einem Computer oder in einem Prozessor bringt die Schwierigkeit der Verwendung einer Hardware-Schaltung zur Erzeugung des Produktes von zwei Zahlen mit sich. Da Prozes­ soren als Hardware-Bauelemente, d. h. Siliziumchips reali­ siert werden, spielen zusätzliche Einschränkungen eine Rolle bei der Bestimmung der besten Schemata zum Multiplizieren von zwei Zahlen. Unter den zahlreichen Schemata zur Multi­ plikation von zwei Zahlen ist eine der bekanntesten Methoden die Verwendung einer Baumstruktur, z. B. eines Wallace-Baums zur Berechnung des Produkts. Immer, wenn hochgenaue Berech­ nungen oder Berechnungen mit sehr großen oder kleinen Zahlen notwendig sind; implementieren Prozessoren eine Gleitkomma-Mul­ tiplikation zur Verbesserung der Leistungsfähigkeit bei der Produktbildung.
Typischerweise werden bei einer Einrichtung zur Gleit­ kommamultiplikation (engl. Gleitpunkt) die Mantissen des Multiplikanden und des Multiplikators multipliziert, indem eine schnelle, baumartige Multipliziereinrichtung zur Gewin­ nung des Produkts verwendet wird. Es stehen verschiedene Gleitkomma-Standards zur Verfügung, und einer der bekannte­ sten ist der IEEE binäre Gleitkomma-Standard 754. Die Run­ dungsanforderungen dieses Gleitkomma-Standards erfordern die Verwendung eines Rundungsbits und eines Sticky-Bits bei der Ausführung einer Gleitkommamultiplikation. Das Rundungsbit ist definiert als das Bit des ungerundeten Mantissenpro­ dukts, welches eine Stelle niedriger als das in der Resul­ tatsmantisse benutzte niedrigste Bit ist. Das Sticky-Bit ist definiert als die ODER-Verknüpfung aller Bits im ungerunde­ ten Mantissenprodukt, die geringer bewertet als das Run­ dungsbit sind. Aus US 4,758,972 A1 ist eine Gleitkomma-Arithme­ tikeinheit bekannt, bei der ein Sticky-Bit (Indikator I) bestimmt wird, um verschiedene Rundungsoperationen auszu­ führen. Die existierenden bekannten Implantierungen bedingen die Berechnung des gesamten oder eines Teils des Mantissen­ produkts vor einer Berechnung des Sticky-Bits. Das bedeutet, daß die entsprechenden Bits nach der Berechnung des Mantis­ senprodukts ODER-verknüpft werden, um das Sticky-Bit zu be­ stimmen.
Bei einer anderen, schneller arbeitenden Implementierung bekannter Art wird das Sticky-Bit berechnet, während das Produkt in mehreren Schritten berechnet wird. Diese bekannte Methode berechnet einige am niedrigsten bewertete Bits des Mantissenprodukts in einem ersten Taktzyklus und während eines zweiten Taktzyklus′ werden einige der nächsten Bits des Mantissenprodukts berechnet; die ODER-Verknüpfung der in dem ersten Taktzyklus berechneten Mantissenproduktbits wird während des zweiten Taktzyklus′ ausgeführt. In jedem zusätz­ lichen Taktzyklus werden einige weitere Bits des Mantissen­ produkts berechnet und die während des vorhergehenden Takt­ zyklus′ berechneten Mantissenbits ODER-verknüpft. Es ist kein Problem, das Sticky-Bit mit dieser Methode zu berech­ nen, da einige Taktzyklen zur Berechnung des Produkts benö­ tigt werden. Jedoch muß auch mit der Implementierung 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 wer­ den kann.
Offensichtlich liegt der Nachteil der bekannten Methode darin, daß das Sticky-Bit erst nach der Berechnung des Man­ tissenprodukts berechnet werden kann. Dies bedingt eine zu­ sätzliche Verzögerung in der Verarbeitungsoperation, da die Rundungsoperation nicht beginnen kann, solange das Sticky-Bit nicht bekannt ist, und das Sticky-Bit erst bestimmt wer­ den kann, wenn die untere Hälfte des Mantissenprodukts be­ kannt ist.
Aufgabe der Erfindung ist es, eine Schaltung bzw. ein Verfahren für eine Gleitkommamultiplikation zu schaffen, die bzw. das ein Sticky-Bit vor oder während der Berechnung des Mantissenprodukts vorhersagt.
Diese Erfindung wird erfindungsgemäß durch eine Schaltung mit den Merkmalen des Anspruchs 1 bzw. ein Verfahren mit den Merkmalen des Anspruchs 7 gelöst.
Die Erfindung stellt eine Schaltung und ein Verfahren zum Vorhersagen des Werts eines Sticky-Bits bei einer Gleit­ kommamultiplikation zur Verfügung. Eine Multiplikandenope­ randenmantisse und eine Multiplikatoroperandenmantisse wer­ den jeweils als Eingänge an einen Endnullen-Codierer (trailing zero encoder) angelegt. Jeder Endnullen-Codierer bestimmt die Anzahl von Endnullen in seiner entsprechenden Mantisse. Diese Anzahl wird als Endnullen-Zählung von den beiden Endnullen-Codierern geliefert. Die Summe der Anzahlen der Endnullen aus jeder Operandenmantisse wird dann mit einer Konstanten verglichen, um das Sticky-Bit zu bestimmen.
Eine besondere Schaltung für jeden der Endnullen-Codie­ rer liefert den Endnullen-Zählwert. Jeder Endnullen-Codierer besteht aus mehreren Codierern, die in mehreren Zeilen ange­ ordnet sind. Die Operandenmantisse wird als Eingang an eine erste Codierzeile angelegt, und der Ausgang jeder Codierer­ zeile wird mit den Codierern einer nachfolgenden Zeile ge­ koppelt. 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äh­ lung 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 Zeich­ nung dargestellten Ausführungsbeispielen näher erläutert. In der Zeichnung zeigen:
Fig. 1 ein Diagramm einer Multiplikationsoperation von zwei Operandenmantissen und einem resul­ tierenden Produkt;
Fig. 2 ein Diagramm einer Ableitung einer Endnullen-Zäh­ lung durch Summation von Endnullen in den Operandenmantissen;
Fig. 3 ein Blockschaltbild einer Sticky-Bit-Vorher­ sage-Schaltung gemäß einem bevorzugten Aus­ führungsbeispiel der Erfindung;
Fig. 4 ein Blockschaltbild eines Bestandteil des Ausführungsbeispiels gemäß Fig. 3 bildenden Endnullen-Codierers; und
Fig. 5 ein Blockschaltbild einer alternativen Aus­ führungsform einer Sticky-Bit-Vorhersage-Schal­ tung.
Beschrieben wird eine Schaltung und ein Verfahren zum Vorhersagen des Sticky-Bits bei einer Gleitkommamultiplika­ tion.
In Fig. 1 ist eine Multiplikationsoperation von zwei Zahlen X und Y gezeigt. Die erste Zahl X ist der Multipli­ kand, und die zweite Zahl Y ist bei diesem Beispiel der Mul­ tiplikator. Beide Zahlen X und Y haben bei diesem Beispiel acht numerische Stellen. Sowohl X als auch Y sind normierte Zahlen, da sie größer als oder gleich Eins und kleiner als Zwei sind. Wenn X₀-X₆ alles Nullen wären, so wäre X exakt gleich Eines. Wenn X₀-X₆ 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 Zah­ len X und Y durchgeführt wird, so wird ein Produkt Z gewon­ nen. 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₁₅ in diesem Beispiel, bestimmt, ob das Produkt im Intervall [1, 2) oder im Bereich [2, 4) liegt. Wenn Z₁₅ = 0 ist, so ist das Produkt Z im Bereich [1, 2). Wenn Z₁₅ = 1 ist, so ist das Produkt im Bereich [2, 4).
Wenn das Produkt Z bestimmt wird, wird typischerweise nur der obere Mantissenteil des Produkts benutzt. Wenn bei­ spielsweise X und Y durch 8 Ziffern-Positionen 0-7 darge­ stellt sind, so hat auch das Produkt 8 Ziffern-Positionen. Außerdem ist das Produkt Z typischerweise eine normierte Zahl, so daß die Bits des ungerundeten Produkts entweder Z₈-Z₁₅ oder Z₇-Z₁₄ sind, je nach dem ob Z₁₅ Eins ist. Das am höchsten bewertete Bit einer normalisierten Zahl muß Eins sein. Die untere Hälfte der Mantisse, entweder Z₇-Z₀ oder Z₆-Z₀ sind in dem aktuellen 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₁₅ Null ist, ist das Rundungsbit Z₆ und das Sticky-Bit wäre die ODER-Verknüpfung von Bits Z₀-Z₅. Wenn Z₁₅ Eins ist, wäre das Rundungsbit Z₇ und Sticky-Bit wäre die ODER-Verknüpfung von Bits Z₀-Z₆.
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₀-Z₁₅) 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 wir 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₀-Z₅ 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ähl­ werte 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äh­ lung gezeigt. Die Schaltung 20 ist in jedem der Endnullen-Co­ dierer 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 Taxas In­ struments, Inc. unter der Bauteilnummer 74148 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 beispielweise 01 hat, um zu kennzeichnen, daß sein zweiter Eingang die vom Codierer 23 festgestellte erste 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 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 bei der Gleitkomma-Multiplikation von zwei Zahlen, wobei das Sticky-Bit als ODER-Verknüpfung von niedriger als das Run­ dungsbit bewerteten Bits eines Produkts der beiden aus einem Multiplikanden und einem Multiplikator bestehenden Operan­ denmantissen definiert ist, 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 vor­ gesehen sind, und daß den beiden Codierern (11, 12) ein Addierer (13; 47) derart nachgeschaltet ist, daß er die Aus­ gangssignale der ersten und zweiten Endnullen-Codierer auf­ nimmt 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 Bestimmung des Sticky-Bit-Wertes gekoppelt ist.
2. Schaltung nach Anspruch 1, dadurch gekennzeichnet, daß der Addierer aus einem Übertragssicherungsaddierer (13) besteht.
3. Schaltung nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß die Komparatoreinrichtung als Übertragsvor­ hersageschaltung (16) ausgebildet ist.
4. Schaltung nach einem der Ansprüche 1 bis 3, 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 in Abhängigkeit davon 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 je­ weils wenigstens einem Codierer (21-1, 21-2, 21-3) aufwei­ sen, und daß die Codierer eine am niedrigsten bewertete Bit­ position einer Operandenmantisse mit einem von Null abwei­ chenden Wert bestimmen, wobei alle Bits, die niedriger sind als dieses am niedrigsten bewertete Nicht-Null-Bit einen Wert von Null haben.
6. Schaltung nach Anspruch 5, dadurch gekennzeichnet, daß die Codierer einer ersten Zeile (21-1) die Operandenman­ tisse aufnehmen und eine Ausgabe zur Bestimmung der am niedrigsten bewerteten Bits einer Endnullen-Zählung erzeu­ gen, 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 nachfolgenden Codiererzeile aufeinanderfolgend höher bewertete Bits der Endnullen-Zählung ergibt und daß ein Co­ dierer (21-3) einer letzten Zeile die am höchsten bewerteten Bits der Endnullen-Zählung erzeugt.
7. Verfahren für eine Schaltung bei der Gleitkomma-Mul­ tiplikation 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 Multi­ plikandenoperandenmantisse und einer Multiplikatoroperanden­ mantisse, die bei der Durchführung einer Gleitkomma-Multi­ plikationsoperation multipliziert werden, dadurch gekennzeichnet, daß zur Bestimmung einer Anzahl von Endnullen in jewei­ ligen Operandenmantissen Endnullen-Codierer für jede Operan­ denmantisse bereitgestellt werden, daß die Operandenmantis­ sen in die zugehörigen Endnullen-Codierer eingegeben werden, daß in jedem der Endnullen-Codierer ein am niedrigsten be­ wertetes 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 DE3926876A1 (de) 1990-03-29
DE3926876C2 true 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

Family Cites Families (5)

* 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
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
JPH02115928A (ja) 1990-04-27
KR900005284A (ko) 1990-04-13
GB2223111A (en) 1990-03-28
DE3926876A1 (de) 1990-03-29
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
DE69327996T2 (de) Verfahren zur Feststellung eines nullwertigen Ergebnisses als Folge einer arithmetischen oder logischen Berechnung und Schaltung hierfür
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE68924477T2 (de) Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition.
DE2616717C2 (de) Digitales Addierwerk
EP0079471B1 (de) Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit
DE69132517T2 (de) Gleitkommaprozessor
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE3910863C2 (de)
DE3927009A1 (de) Addierschaltung
DE2658248C2 (de)
DE10105945A1 (de) Linearsummierungsmultipliziererarrayimplementie-rung sowohl zur vorzeichenbehafteten als auch zur vorzeichenlosen Multipliaktion
EP0049216B1 (de) Rechenwerkeinheit mit einer parallelen bidirektionalen Schiebeeinrichtung
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
DE3886194T2 (de) Vorrichtung und verfahren zum verwenden einer einzelübertragskette für führende "eins"-detektierung und für "sticky" bit-berechnung.
DE19781794C2 (de) Verfahren und Einrichtung zur Division von Gleitkomma- oder ganzen Zahlen
DE69903866T2 (de) Multiplizierer mit niedriger Leistung für CPU und DSP
DE2405858A1 (de) Normalisierendes verschiebezaehlernetzwerk
DE69030169T2 (de) Hochleistungsaddierer mit Carry-Vorhersage
DE69230520T2 (de) Verfahren und Anordung zur Erzeugung von Summeinformation-/Rundungskontrolle-Signal
DE69225638T2 (de) Abrundungsschaltung in einem Gleitkommamultiplizierer
DE3132611C2 (de)
DE3889746T2 (de) Zähler.
EP0256455B1 (de) Verfahren zur schnellen Division langer Operanden in Datenverarbeitungsanlagen und Schaltungsanordnung zur Durchführung des Verfahrens

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