DE4243374A1 - - Google Patents

Info

Publication number
DE4243374A1
DE4243374A1 DE4243374A DE4243374A DE4243374A1 DE 4243374 A1 DE4243374 A1 DE 4243374A1 DE 4243374 A DE4243374 A DE 4243374A DE 4243374 A DE4243374 A DE 4243374A DE 4243374 A1 DE4243374 A1 DE 4243374A1
Authority
DE
Germany
Prior art keywords
rounding
bit
bits
normalized
mantissa
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
DE4243374A
Other languages
English (en)
Other versions
DE4243374C2 (de
Inventor
Carlos Gamez
Roland Pang
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 DE4243374A1 publication Critical patent/DE4243374A1/de
Application granted granted Critical
Publication of DE4243374C2 publication Critical patent/DE4243374C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/49957Implementation of IEEE-754 Standard

Description

Die Erfindung betrifft das Gebiet der Halbleiter-Mikropro­ zessoren. Insbesondere befaßt sich die Erfindung mit einer von einem Mikroprozessor bei Gleitkommaoperationen ausgeführten Rundungsfunktion.
Die Erfindung umfaßt ein Schema zum Runden von Operanden variabler Länge. Ein Operand ist als eine Zahl definiert, an welcher eine mathematische Operation ausgeführt wird. Das Run­ den eines Operanden löscht eines oder mehrere der am geringsten bewerteten Bits und stellt den verbliebenen Anteil gemäß eini­ ger spezifizierter Regeln ein.
Die Erfindung ist in die Architektur des Intel 80586-Mikro­ prozessors, auch bekannt als 586er Prozessor, aufgenommen.
Ein Zweck des Rundens ist das Reduzieren der Anzahl der Ziffern in dem Operanden, so daß sich der gerundete Operand in die Wortgröße des Mikroprozessors einpaßt. Ein anderer Zweck des Rundens ist es, die mit den Gleitkommaoperationen des Mi­ kroprozessors verbundene Genauigkeit wiederherzustellen. Die Gleitkomma-Notation ist eine Methode zum Schreiben numerischer Größen mit Hilfe einer Kennziffer und einer Mantisse. Die Kenn­ ziffer stellt den ganzzahligen Wert und die Mantisse den Dezi­ malwert der Zahl dar. Beispielsweise besteht die Zahl 6,3124 aus einer Kennziffer von 6 und einer Mantisse von 3124.
In vielen Fällen überschreitet das Ergebnis einer Gleitkom­ maoperation die Wortgröße des Mikroprozessors. Beispielsweise kann die Addition von zwei n-Bit-Zahlen in einer Summe mit n+1 Bits resultieren. Folglich ergibt sich ein Überlauf, wenn die Wortgröße nur n Bits beträgt. Um den Überlauf anzupassen, muß die Zahl um eine Position nach rechts verschoben, das am ge­ ringsten bewertete Bit (LSB) gelöscht und der Exponent erhöht werden. Um das LSB bei Bewahrung exakter Ergebnisse zu beseiti­ gen, wird die Zahl durch eines von mehreren Rundungsverfahren gerundet.
Ein weiterer Grund für das Runden ist das Einstellen der Mantissenlänge auf eine bestimmte Genauigkeit. Je länger die Mantisse ist, desto genauer wird sie. Der Nachteil ist jedoch, daß die Rechnungen länger dauern, weil mehr Bits zu manipulie­ ren sind. Im allgemeinen werden Genauigkeiten entsprechend der Spezifikationen angenommen, die in dem IEEE-Standard 754 ausge­ führt sind. Der Standard spezifiziert vier Genauigkeiten: eine einfache, eine einfache erweiterte, eine doppelte und eine dop­ pelte erweiterte. Implementierungen müssen nicht alle vier Ge­ nauigkeiten aufweisen.
Zur Veranschaulichung: die einfache Genauigkeit hat eine Länge von 24 Bit. Die doppelte Genauigkeit besteht aus 53 Bit und die erweiterte Genauigkeit aus 64 Bit. Wenn ein Benutzer die einfache Genauigkeit auswählt, wird folglich jedes Bit hin­ ter dem LSB "43" (Bits 42-0 einer 68-Bit-Zahl) gelöscht und auf "0" gesetzt. Das LSB wird in Abhängigkeit von dem ausgewählten Rundungsverfahren gerundet. In ähnlicher Weise wird, wenn der Benutzer die doppelte Genauigkeit wählt, das Bit "14" zum LSB, und die nachfolgenden Bits "13-0" werden auf 0 gesetzt. Dann wird die geeignete Rundung implementiert. Das gleiche Verfahren findet statt auf, wenn die erweiterte Genauigkeit ausgewählt ist. Der einzige Unterschied ist der, daß das LSB das Bit "3" ist und daß die Bits "2-0" auf "0" gesetzt werden. Wiederum wird die geeignete Rundung ausgeführt. Demzufolge wird ein Ver­ fahren gebraucht, um eine Binärzahl auf der Basis der Mikropro­ zessor-Wortlänge, der Überlaufbedingungen und der spezifizier­ ten Genauigkeitsformate zu runden.
Sobald festgestellt wird, daß eine Zahl gerundet werden soll, muß ein Rundungsverfahren ausgewählt werden. Einige der üblicheren Rundungsverfahren sind: 1) Abschneiden, 2) Aufrun­ den, 3) Abrunden und 4) Runden zur Nächsten/zur Geraden. Folg­ lich ist ein Mittel zum Runden einer Binärzahl entsprechend dem Rundungsmodus erforderlich.
Ein bekanntes Verfahren zum Runden besteht darin, einen speziellen Addierer zu implementieren, welcher eine "1" zu je­ der gewünschten Bitposition addieren kann. Ein anderes Verfah­ ren zum Runden besteht im Speichern von Rundungskoeffizienten innerhalb einer ROM-Nachschlagetabelle. In Abhängigkeit vom Rundungsmodus, den beim Runden ausgeführten Berechnungen, ob eine "1" addiert werden soll oder nicht, und der zu rundenden Bitposition (d. h. Genauigkeit) kann folglich der spezielle Ad­ dierer eine "1" zu einer angezeigten Position addieren bzw. der geeignete Koeffizient wird aus dem ROM geholt und zu der Binär­ zahl addiert. Jedoch haben beide oben erwähnten Verfahren den Nachteil, daß sie die Fähigkeit zum Addieren einer "1" zu ir­ gendeiner von mehreren verschiedenen Bitpositionen erfordern. Folglich wird ein Verfahren benötigt, um die Rundungsoperation einfacher und schneller zu machen, indem eine "1" (falls erfor­ derlich) unter allen Umständen nur zu einer spezifizierten Bit­ position addiert wird.
Ein anderes, bekannten Rundungsverfahren anhaftendes Pro­ blem besteht darin, daß die Rundungsberechnungen zunächst be­ stimmen müssen, ob eine "1" zu addieren ist oder nicht. Als nächstes muß die Bitposition bestimmt werden. Dann erfolgt er­ forderlichenfalls die Addition. Typischerweise nimmt die Imple­ mentierung dieses Prozesses ungefähr sieben Taktzyklen in An­ spruch. Folglich ist ein Verfahren erforderlich, um sämtliche drei Schritte parallel zu bearbeiten, so daß der Gesamtprozeß nur einen Taktzyklus erfordert.
Aufgabe der Erfindung ist es, eine Binärzahl entsprechend einem Rundungsmodus auf der Grundlage der Wortgröße des Mikro­ prozessors, der Überlaufbedingung und spezifizierter Genauig­ keiten zu runden und dabei die Rundungsoperationen zu vereinfa­ chen und/oder schneller zu machen. Hierbei soll eine "1" (wenn erforderlich) stets nur zu einer spezifizierten Bitposition ad­ diert wird.
Es wird ein Mikroprozessor beschrieben, welcher eine Ein­ richtung zum Runden einer 68-Bit-Binärzahl enthält. Bei einem Ausführungsbeispiel wird die 68-Bit-Zahl normiert, indem sie so verschoben wird, daß ihr Überlauf- und J-Bits "0" bzw. "1" sind. Der Exponent wird entsprechend eingestellt, so daß er bei einer Rechtsverschiebung um eins inkrementiert und bei einer Linksverschiebung um eins dekrementiert wird. Diese normierte 68-Bit-Zahl wird wie folgt parallel verarbeitet: Das Rundungs­ bit wird aus ihr gewonnen; die Zahl wird abgerundet; und die Zahl wird aufgerundet. Auf der Grundlage des Rundungsbits wird entweder die abgerundete oder die aufgerundete Zahl ausgewählt - je nachdem, welche von beiden der korrekt gerundeten 68-Bit- Zahl entspricht. Das Rundungsbit basiert auf der Genauigkeit, dem ausgewählten Rundungsmodus und Schutz-, Rundungs- und Haft- Bits (Guard-, Round- und Sticky-Bits bzw. GRS-Bits).
Bei einem bevorzugten Ausführungsbeispiel wird in Abhängig­ keit von der ausgewählten Genauigkeit eine Anzahl von Komma­ stellen-Bits im Falle des Abrundens auf "0" gesetzt. Im Falle des Aufrundens wird in Abhängigkeit von der ausgewählten Genau­ igkeit eine Anzahl der Kommastellen-Bits auf "1" gesetzt. Dann wird die Zahl um eins inkrementiert. Durch paralleles Bearbei­ ten dieser drei Schritte kann eine Binärzahl viel schneller ge­ rundet werden, als wenn dies nacheinander ausgeführt würde. Darüberhinaus wird die Schaltung vereinfacht, weil ein Inkre­ mentierer (welcher ungeachtet der Genauigkeit um eins inkremen­ tiert) anstelle eines Addierers (welcher in Abhängigkeit von der Genauigkeit eine 1 zu unterschiedlichen Bitpositionen addiert) implementiert ist.
Die vorliegende Erfindung definiert eine spezifizierte Bit­ position, zu welcher eine "1" addiert werden kann, so daß an­ stelle eines Addierers ein Inkrementierer verwendet wird. Sämt­ liche Rundungsschritte werden gleichzeitig bearbeitet, so daß das Runden nur einen Taktzyklus anstelle der typischen sieben Taktzyklen beansprucht.
Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Ausführungsbeispielen näher beschrieben. In der Zeichnung zeigen:
Fig. 1 eine nicht gerundete 68-Bit-Binärzahl mit Über­ laufbit, J-Bit, Binärkomma und den unterschied­ lichen Positionen, die die KLGRS-Bits in Abhän­ gigkeit von der ausgewählten Genauigkeit einneh­ men können;
Fig. 2 ein Blockschaltbild der Schnittstelle zwischen dem Rundungsabschnitt und anderen relevanten Ab­ schnitten innerhalb des Mikroprozessors;
Fig. 3 ein Blockschaltbild eines bevorzugten Ausfüh­ rungsbeispiels der Erfindung, das die interne Struktur der Rundungseinrichtung detailliert wiedergibt;
Fig. 4 ein Blockschaltbild des Vor-Rundungs-Normierers;
Fig. 5 ein Blockschaltbild der Rundungslogik;
Fig. 6 ein Blockschaltbild des Rundungspfads, für den Fall, daß die Mantisse nicht inkrementiert (nicht aufgerundet) wird;
Fig. 7 ein Blockschaltbild des Rundungspfads für den Fall, daß die Mantisse inkrementiert (aufgerundet) wird;
Fig. 8 ein Blockschaltbild des Inkrementier-und-Nor­ mier-Blocks;
Fig. 9 ein Blockschaltbild des Mantissenauswahlblocks;
Fig. 10 eine Blockschaltung des Ergebnis-Null-Detektors; und
Fig. 11 ein Blockschaltbild des Exponent-Steuergenera­ tors.
Es wird eine Einrichtung innerhalb eines Mikroprozessors zum Runden einer 68-Bit-Binärzahl beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details, wie bei­ spielsweise spezielle Bitlängen, Registerinhalte, Logikdia­ gramme, Formate usw. beschrieben, um ein besseres Verständnis der Erfindung zu ermöglichen. Für den Fachmann ist es jedoch klar, daß diese speziellen Details zur Ausführung der Erfindung nicht verwendet werden müssen. An anderen Stellen werden be­ kannte Strukturen und Schaltungen nicht im Detail gezeigt, um das Verständnis der Erfindung nicht unnötig zu erschweren.
Kurzbeschreibung des Rundungsverfahrens und der üblichen Termi­ nologie
Das Runden einer Zahl löscht eines oder mehrere der am ge­ ringsten bewerteten Bits einer Zahl und stellt den verbliebenen Teil entsprechend einigen spezifizierten Regeln ein. Eine An­ zahl von Ziffern geringer Ordnung werden beseitigt, während ein möglichst genaues Ergebnis erhalten bleibt, das eine durch die Maschine vorgegebene begrenzte Anzahl von Ziffern aufweist.
Es gibt grundsätzlich drei Fälle, bei welchen ein Runden auftreten kann. Der erste Fall erfordert ein Runden infolge ei­ nes Übertrags auf der linken Seite. Der zweite Fall erfordert ein Runden infolge ungleicher Exponenten. Der dritte Fall tritt dann auf, wenn sowohl die erste als auch die zweite Bedingung gleichzeitig auftreten. Gewöhnlich sind in jedem Fall drei Plätze ausreichend, um die Rundungsberechnungen zu verarbeiten. Somit sind zwei zusätzliche Bits erforderlich. Diese zusätz­ lichen Bits werden Schutz- und Runde-Bit (G- und R-Bit) ge­ nannt. Jedoch ist es im Runde-auf-Gerade-Modus notwendig, zu wissen, ob es irgendwelche Bits ungleich 0 hinter den Schutz- und Runde-Positionen gibt. Diese Information kann in einem ein­ zelnen Bit gespeichert werden, das das Haft-Bit (Sticky- bzw. S-Bit) genannt wird. Dieses wird dadurch erzeugt, daß jedes Bit beim Ausschicken überprüft wird. Sobald ein Bit ungleich 0 er­ scheint, wird das Haft-Bit gesetzt und bleibt gesetzt. Um ein Runden auf gerade Zahlen zu implementieren, wird einfach unmit­ telbar vor dem Runden das Haft-Bit rechts vom Runde-Bit ange­ hängt.
Einige bei der Rundungsprozedur verwendete allgemeine Be­ griffe sind:
Mantisse: die Dezimalstellen eines Zehnerlogarithmus, sofern der Logarithmus als Summe einer gan­ zen Zahl und eines Dezimalteils geschrieben wird;
L-Bit: das am niedrigsten bewertete Bit der Man­ tisse - in Abhängigkeit von der verwendeten Genauigkeitseinstellung ist dessen Bitposi­ tion unterschiedlich;
K-Bit: das dem L-Bit links benachbarte Bit;
GRS-Bits: die zur Ausführung der durch die IEEE defi­ nierten Rundung verwendeten Schutz-, Runde- und Haft-Bits; sie sind rechts neben dem L-Bit angeordnet;
J-Bit: das Bit links neben dem Binärkomma;
Überlaufbit: Bit "67" der Mantisse;
Rundungsbit: die Ausgabe der Rundungslogik, die zu der Mantisse an der L-Bitposition addiert wer­ den soll (nicht zu verwechseln mit dem R- oder Runde-Bit).
Diese Definitionen sind mit dem IEEE-754-Standard konsi­ stent, dessen Terminologie und Standards hier zum Zweck der Er­ läuterung verwendet wurden.
Im allgemeinen werden die KLGRS-Bits zusammen mit dem Vor­ zeichenbit verwendet, um das Rundungsbit zu berechnen. Die Po­ sition dieser Bits variiert in Abhängigkeit von der durch den Benutzer ausgewählten Genauigkeit. In einem bevorzugten Ausfüh­ rungsbeispiel der Erfindung sind drei Genauigkeitsgrade verfüg­ bar. Dies sind die einfache, die doppelte und die erweiterte Genauigkeit. Fig. 1 zeigt eine zu rundende 68-Bit-Zahl. Unter Bezugnahme auf Fig. 1 kann man erkennen, daß die einfache Ge­ nauigkeit am wenigsten genau ist und nur eine Genauigkeit von 24 Bit hat im Gegensatz zur doppelten Genauigkeit, die 53 Bit hat, und der erweiterten Genauigkeit, die 64 Bit Genauigkeit hat. Fig. 1 zeigt außerdem das Überlaufbit, das J-Bit, das Binärkomma und die unterschiedlichen Positionen, die die KLGRS- Bits in Abhängigkeit von der ausgewählten Genauigkeit einnehmen können. Die folgende Tabelle gibt die Bitpositionen jedes der KLGRS-Bits bei jeder Genauigkeit detailliert an.
Tabelle 1
Das Rundungsbit hängt außerdem von dem durch den Benutzer ausgewählten Rundungsmodus ab. Das bevorzugte Ausführungsbei­ spiel der Erfindung unterstützt vier Rundungsmoden, die in dem IEEE-754-Standard definiert sind. Diese sind: 1) Abhack-Runden in Richtung 0, 2) Aufrunden in Richtung +α, 3) Abrunden in Richtung -α und 4) Runden zur nächsten oder geraden. Tabelle 2 beschreibt die Gleichungen zum Berechnen des Rundungsbits für die verschiedenen Fälle.
Tabelle 2
Im nicht-normierten Fall ist sowohl das Überlauf-Bit als auch das J-Bit gleich "0". Im normierten Fall ist das Überlauf-Bit "0" und das J-Bit "1". In den Überlauf-Fällen ist das Überlauf- Bit "1", während das J-Bit entweder "1" oder "0" sein kann.
Ein anderes das Runden betreffendes relevantes Konzept ist das des Normierens. Eine Zahl ist normiert, wenn das Bit links vom Binärkomma (J-Bit) "1" ist und das Überlauf-Bit "0". Wenn das Überlauf-Bit gesetzt ist (was bedeutet, daß die Mantisse übergelaufen ist) oder wenn sowohl das Überlauf- als auch das J-Bit "0" sind, ist die Zahl nicht normiert. Im bevorzugten Ausführungsbeispiel der Erfindung muß in reellen Operationen die zu rundende Zahl vor der Rundungsoperation normiert sein. Wenn die Zahl nicht normiert ist, wird sie mit der entsprechen­ den Korrektur des Exponenten verschoben, um normiert zu werden. Unter bestimmten Umständen, bei denen die Hardware in bestimm­ ter Weise konfiguriert sein muß, die als primitive Mikro-Opera­ tionen bekannt ist, braucht die Mantisse nicht vollständig oder überhaupt nicht eingestellt zu werden.
Schnittstelle zwischen der Rundungseinrichtung und anderen Ein­ heiten innerhalb des Mikroprozessors
Eine Rundungseinrichtung (Runder) muß eine ungerundete Man­ tisse entgegennehmen, sie normieren, die Rundung entsprechend der Genauigkeit und dem Rundungsmodus ausführen und das Ergeb­ nis in eine Registerdatei schreiben. Ein diese Funktionen und das gegenwärtig bevorzugte Ausführungsbeispiel der Schnitt­ stelle zwischen der Rundungseinrichtung und anderen relevanten Komponenten innerhalb des Mikroprozessors veranschaulichendes Blockschaltbild ist in Fig. 2 gezeigt. Gemäß Fig. 2 erhält der Runder 100 Eingabedaten von einem Addierer 120, Dividierer 130 und der Exponenteneinheit 140 und sendet seine Ergebnisse an die Exponenteneinheit 140, die Steuereinrichtung/Registerdatei 150 und den Multiplizierer 160. Der Runder 100 wird durch die Exponenteneinheit 140 aktiviert, wenn die Ergebnismantisse be­ arbeitet werden kann. Der Addierer 120 multiplext seine Ergeb­ nismantisse mit der Ergebnismantisse vom Dividierer 130 und treibt dann die Ausgabe des Multiplexers zum Runder 100. Dar­ aufhin nimmt der Runder 100 die ungerundete Mantisse vom Addie­ rer 120 auf und erhält Steuersignale, wie beispielsweise die Genauigkeits- und Rundungssteuersignale, ein Steuersignal für die primitive Mikro-Operation, das Vorzeichen des Ergebnisses und Freigaben zum Normieren, Runden und Normieren nach dem Run­ den. Diese Signale werden während der Rundungsbitberechnung und Mantisseneinstellung verwendet. Die Ergebnismantisse wird an den Multiplizierer 160 ausgegeben.
Die Ergebnismantisse aus dem Runder 100 ist 68 Bits breit und enthält ein Mantissen-Überlauf-Bit, ein explizites Füh­ rungsbit (auch J-Bit genannt), die Kommastellen-Bits und die Schutz-, Runde- und Haft-Bits. Die Werte all dieser Bits hängen von der Art der durch den Addierer 120 und den Dividierer 130 ausgeführten Mikro-Operationen ab. Im Fall einer reellen Mikro- Operation führt der Runder 100 die Normierung, Rundung und die Normierung nach dem Runden an der eingegebenen Mantisse aus. In diesem Fall garantiert der Runder 100, daß die Werte der Über­ lauf-, Schutz-, Runde- und Haft-Bits "0" sind und daß der Wert des J-Bits "1" ist.
Im Fall einer primitiven Mikro-Operation fordern die von der Exponenteneinheit 140 empfangenen Steuersignale zur Run­ dung, Genauigkeit und einfachen Mikro-Operation den Runder 100 auf, eine Kombination von Normierungs- und Rundungs-Aktivitäten an der Mantisse auszuführen. Folglich ist nicht sichergestellt, daß die Überlauf-, J-, Schutz-, Runde- und Haft-Bits der Man­ tisse einen zuvor definierten Wert annehmen. Die sich ergebende Mantisse wird an den Multiplizierer 160 gesendet, um mit der Ausgabe des Multiplizierers 160 gemultiplext und dann in die Steuereinrichtung/Registerdatei 150 geschrieben zu werden. Der Runder 100 versorgt die Steuereinrichtung/Registerdatei 150 mit zusätzlichen Informationen über das Ergebnis, nämlich ob die Mantisse aufgerundet wurde, ob das Ergebnis gleich 0 ist und ob das Ergebnis ungenau ist. Darüberhinaus instruiert der Runder 100 auf der Grundlage der an der Mantisse gemachten Einstellun­ gen die Exponenteneinheit 140 darüber, wie der Ergebnisexponent eingestellt werden soll, bevor er an die Steuereinrich­ tung/Registerdatei 150 gesendet wird.
Die Rundungseinrichtung
Die Rundungseinrichtung (Runder) soll im folgenden detail­ lierter erörtert werden. Der Runder hat drei Hauptfunktionen: Rundungsbitberechnung, Erzeugen der Exponentensteuersignale und Einstellen der Ergebnismantisse. Fig. 3 zeigt ein Blockschalt­ bild der internen Struktur des Runders 100. Die drei Hauptfunk­ tionen werden durch eine Rundungslogik 10, eine Exponenten­ steuerung 11 und eine Mantisseneinstellung 12 ausgeführt. Wie bereits oben erörtert, kommt die ungerundete 68-Bit-Mantisse vom Addierer. Sie wird dann durch das Latch 13 zwischengespei­ chert. Diese zwischengespeicherte, ungerundete Mantisse gelangt durch den Vor-Rundungs-Normierer 14.
Ein detailliertes Blockschaltbild des Vor-Rundungs-Normie­ rers 14 ist in Fig. 4 gezeigt. Wie aus Fig. 4 zu sehen ist, weist der Vor-Rundungs-Normierer 14 einen Logikblock 20 und einen 3:1-Multiplexer 21 auf. Dieser Multiplexer 21 wird von den Bits 67 und 66 der ungerundeten Mantisse und vom Signal FRDONTNRM 17 gesteuert. Das Signal FRDONTNRM 17 ist für einige der primitiven Mikro-Operationen gesetzt und zeigt an, daß die Mantisse nicht normiert werden darf. Bei reellen Mikro-Opera­ tionen benötigt die ungerundete Mantisse normalerweise ungefähr eine Verschiebung, um normiert zu werden. Ein Decodierblock 15 nimmt die Bits 67 und 66 der ungerundeten Mantisse auf und er­ zeugt drei Signale. Das erste Signal wird erzeugt, wenn die Bits 67 und 66 beide gleich Null sind (Fall 00). Die Mantisse muß einmal nach links verschoben werden, um normiert zu werden. Zweitens, wenn die Bits 67 und 66 Null bzw. Eins sind (Fall 01), ist die eingehende Mantisse bereits normiert und benötigt keine Einstellung. Drittens, wenn das Bit 67 Eins ist (Fall 1x), weist die eingehende Mantisse einen Überlauf auf und die Mantisse muß nach rechts verschoben werden. Die folgende Ta­ belle zeigt die an der ungerundeten Mantisse erforderlichen Operationen als eine Funktion der Bits 67 und 66 und des Si­ gnals FRDONTNRM 17.
Tabelle 3
Die Ausgabe vom Vor-Rundungs-Normierer 14 ist FRNRMNT 23 (eine normierte ungerundete 68-Bit-Zahl) und FR1XLSB 24. Das Signal FR1XLSB 24 wird verwendet, wenn die Mantisse nach rechts ver­ schoben ist. Es bewahrt das LSB, welches hinausgeschoben worden ist, so daß später das (Haft)-Bit in geeigneter Weise berechnet werden kann. In allen anderen Fällen ist dieses Signal auf "0" gesetzt.
Im folgenden wird wieder auf Fig. 3 Bezug genommen, aus der zu entnehmen ist, daß die normierte ungerundete Zahl FRNRMNT 23 parallel zur Rundungslogik 10, zur Mantisseneinstellung 12 und zur Exponentensteuerung 11 gesendet wird. Im bevorzugten Aus­ führungsbeispiel der Erfindung führt jeder dieser Blöcke seine Operationen parallel, d. h. gleichzeitig auf der Grundlage des Signals FRNRMNT und der Steuersignale aus. Jeder dieser Blöcke wird im folgenden näher erörtert.
Fig. 5 ist ein detailliertes Blockschaltbild der Rundungs­ logik 10. Der Zweck dieses Blocks ist die Berechnung von FRRBIT 30, welches das zur Mantisse zu addierende Rundungsbit ist, so­ fern ein Runden gestattet ist. Wie oben gesagt, ist die in die­ sem Block eingegebene Mantisse FRNRMNT 23 aus dem Vor-Rundungs- Normierblock, welcher sicherstellt, daß für reelle Operationen die in die Rundungslogik eingegebene Mantisse normiert ist (01- Fälle). Gemäß Tabelle 2 sind die LGRS-Bits und das Vorzeichen­ bit erforderlich, um das Rundungsbit im 01-Fall zu berechnen. Die LG-Bits werden entsprechend dem Genauigkeitssteuersignal 132 aus dem FRNRMNT 23 über den 3:1-Multiplexer 31 herausgezo­ gen. Das Vorzeichenbit wird aus dem Exponenten-Steuerblock auf­ genommen. Bei der doppelten und der einfachen Genauigkeit ist das Haft-Bit das Ergebnis einer ODER-Operation an einer Anzahl von Kommastellen-Bits. Zu beachten ist, daß diese ODER-Opera­ tion auch FR1XLSB 24 einschließt, welches das LSB des 1x-Falls vor der Vor-Rundungs-Normierung ist. Bei jeder Genauigkeit wer­ den die entsprechenden Kommastellen-Bits aus FRNRMNT 23 heraus­ gezogen und zusammen mit FR1XLSB 24 einer ODER-Operation unter­ zogen. Die drei Ergebnisse werden dann durch einen 3:1-Multi­ plexer 35 durchgeleitet, welcher entsprechend dem Genauigkeits­ steuersignal 132 das korrekte Haft-Bit auswählt.
Im gegenwärtig bevorzugten Ausführungsbeispiel der Erfin­ dung wird die zeitliche Verschlechterung infolge des Umstands, daß auf den Abschluß der ODER-Operation gewartet werden muß, bevor mit der Rundungsbitberechnung begonnen werden kann, durch Implementieren zweier paralleler Einheiten minimiert. Eine Ein­ heit nimmt an, daß das Haft-Bit "1" ist, und die andere Ein­ heit, daß das Haft-Bit "0" ist. Die logische Gleichung für die beiden parallelen Einheiten kann ferner dadurch vereinfacht werden, daß das R-Bit in die Haft-Bit-Berechnung aufgenommen wird. Jede Einheit erzeugt mit Hilfe der in untenstehender Ta­ belle 4 gezeigten Gleichungen vier mögliche Rundungsbits. Diese Gleichungen zeigen, wie das Rundungsbit zu berechnen ist, wenn die eingegebene Mantisse normiert ist (01-Fall).
Tabelle 4
Bei primitiven Mikro-Operationen, die kein Normieren der Mantisse aber ein Runden erfordern, wird das Rundungsbit ohne Rücksicht auf die durch die unabgeglichene Mantisse erzeugte Ungenauigkeit berechnet. Der 4:1-Multiplexer 36 des Pfades für Haft-Bit = "0" und der 4:1-Multiplexer 37 des Pfades für Haft- Bit = "1" werden verwendet, um entsprechend dem Rundungssteuer­ signal 38 eines aus den vier möglichen Rundungsbits auszuwäh­ len. Das Rundungssteuersignal 38 ist die Kombination der vom Exponent-Block empfangenen decodierten Rundungssteuerung 18 und des Signals FRDONTRND 19. Das Signal FRDONTRND ist während ei­ niger primitiver Mikro-Operationen gesetzt und zeigt an, daß die Mantisse nicht gerundet werden darf. Das endgültige Run­ dungsbit FRRBIT 30 wird mit einem 2:1-Multiplexer 39 unter Ver­ wendung des S-Bits (dem Ergebniswert der Haft-Bit-Berechnung) ausgewählt.
Als nächstes wird der Mantisseneinstellungs-Block beschrie­ ben. Es wird wieder auf Fig. 3 Bezug genommen, aus der zu ent­ nehmen ist, daß die Mantisseneinstellung 12 die folgenden Ein­ heiten aufweist: Einheit zum Auffüllen von Nullen 40, Einheiten zum Auffüllen von Einsen 50, Inkrementier-und-Normier-Einheit 60 und Mantissenauswahl-Einheit 70. In diesem Block wird die Mantisse entsprechend dem Wert des Rundungsbits FRRBIT gerun­ det. Zusätzlich wird die Mantisse ggf. nach dem Runden nor­ miert. Bevor das Runden stattfindet, müssen eine Anzahl von Kommastellen-Bits entsprechend dem Genauigkeitssteuersignal auf Null gesetzt werden. Dann wird das Rundungsbit an der der Ge­ nauigkeit entsprechenden L-Bit-Position addiert. Die in diesem Block eingegebene Mantisse ist wiederum FRNRMNT.
Im gegenwärtig bevorzugten Ausführungsbeispiel der Erfin­ dung wird die Mantisse parallel durch zwei getrennte Einheiten verarbeitet, um das Verfahren des Rundens auf die Genauigkeit und des Normierens nach dem Runden zu beschleunigen. Eine Ein­ heit nimmt an, daß die Mantisse entsprechend der Genauigkeit gekürzt wird, und die andere Einheit nimmt an, daß die Mantisse aufgerundet wird. Die Normierung nach dem Runden wird dann an der Mantisse aus der Aufrundungseinheit ausgeführt. Die letzt­ lich ausgegebene Mantisse wird dann mit Hilfe des Werts des Si­ gnals FRRBIT ausgewählt. Die Mantisse wird entsprechend der Ge­ nauigkeit gekürzt, wenn entweder ein Runden nicht freigegeben ist (FRDONTRND 19 ist in Abhängigkeit von der ausgeführten Mi­ kro-Operation gesetzt), die Rundungssteuerung ein Abschneiden (in Richtung 0) anzeigt oder der Wert von FRRBIT "0" ist.
Fig. 6 zeigt eine Blockdarstellung der Einheit, welche an­ nimmt, daß die Mantisse entsprechend der Genauigkeit gekürzt wird. Die entsprechenden Kommastellen-Bits werden mit Hilfe des 2:1-Multiplexers 41 und des 2:1-Multiplexers 42 auf "0" ge­ setzt. Die beiden Multiplexer werden durch den Logikblock 43 gesteuert, welcher das Genauigkeitssteuersignal 132 und das Si­ gnal FRDONTRND decodiert. Die folgenden zwei Wahrheitstabellen beschreiben, wie die Multiplexer gesteuert werden. Die Doppel­ punkte bedeuten "bis", z. B. FRNRMNT[13:3] bedeutet Bits 13 bis 3 des Busses FRNRMNT. Tabelle 5 beschreibt die Arbeitsweise des Multiplexers 41 und Tabelle 6 die des Multiplexers 42.
Tabelle 5
Tabelle 6
Das Signal FRP0MNT 44 ist das Ausgangssignal, angenommen wird, daß die Mantisse entsprechend der Genauigkeit gekürzt wird. Die Mantisse gemäß FRP0MNT [67 : 3] wird zur Auswahl der endgültigen Mantisse ausgegeben. Die Bits [2 : 0] werden igno­ riert, da sie nur für die endgültige Mantissenauswahloperation relevant sind, wo sie erforderlichenfalls auf "0" gesetzt wer­ den.
Im anderen Pfad wird angenommen, daß die Mantisse aufgerun­ det werden soll. Demzufolge wird eine Anzahl von Kommastellen- Bits der Mantisse FRNRMNT entsprechend dem Genauigkeitssteuer­ signal durch Einsen ersetzt. Dies wird ausgeführt, um die Man­ tisse für den Inkrementierer vorzubereiten, und zu gewährlei­ sten, daß das Runden an dem der ausgewählten Genauigkeit ent­ sprechenden L-Bit geschieht. Diese Arbeitsweise ist sehr ähn­ lich der des zuvor erörterten Pfades des Auffüllens der Man­ tisse mit Nullen, mit der Ausnahme, daß das Signal FRDONTRND keine Rolle spielt, weil dieser Pfad nur im Fall eines Aufrun­ dens ausgewählt wird. Folglich ist, wie in dem Blockschaltbild gemäß Fig. 7 gezeigt ist, nur das Genauigkeitssteuersignal 132 erforderlich, um die beiden 2:1-Multiplexer 51 und 52 zu steu­ ern, nachdem es durch den Logikblock 53 decodiert worden ist. Das Ausgangssignal FRP1MNT 54 wird an den Inkrementier-und-Nor­ mier-Block gesendet. Zu beachten ist, daß die Bits [2:0] nicht erforderlich sind, da die Mikro-Operationen, die diesen Pfad ausführen würden, diese Bits auf "0" setzen würden. Die Tabel­ len 7 und 8 beschreiben die Arbeitsweise der Multiplexer 51 bzw. 52.
Tabelle 7
Genauigkeit
FRP1MNT[13:3]
erweitert
FRNRMNT[13:3]
nicht erweitert '1::11
Tabelle 8
Genauigkeit
FRP1MNT[42:14]
einfache|'1::29
nicht einfache FRNRMNT[42:14]
Nachdem die Mantisse in geeigneter Weise mit Einsen aufge­ füllt worden ist, wird sie durch den Inkrementier-und-Normier- Block durchgeleitet, der im Detail in Fig. 8 gezeigt ist. Die­ ser Block enthält einen Bit-Addierer 61, welcher dem Zweck des Inkrementierens der Mantisse an der dem Genauigkeitssteuersi­ gnal entsprechenden L-Bit-Position dient. Es ist möglich, daß die inkrementierte Mantisse FRINCMT 62 erneut zu normieren ist. Dieser Fall wird mit einem Übertrag des Inkrementierers FRHCOUT 63 festgestellt und mit den Signalen FRWFKILLV 64 und FRDONTNRM 17 über den Logikblock 69 gesteuert. Das Signal FRWFKILLV 64 ist während der Ausführung einer Anzahl von primitiven Mikro- Operationen gesetzt und zeigt an, daß eine Normierung nach dem Runden nicht ausgeführt werden darf. Wenn das Signal FRDONTNRM 17 gleich "0" ist, dann muß die ungerundete Mantisse normiert werden. Die Bits FRPIMNT [67, 66] werden hinsichtlich eines Werts "01" überprüft und mit den Signalen FRWFKILLV 64 und FRDONTNRM 17 kombiniert, um FRADJMNT 65 zu berechnen, welches an­ zeigt, daß die Mantisse nach dem Runden eingestellt werden soll. Das von der Ergebnis-Null-Feststellungslogik 80 kommende Signal FRLMONES 81 zeigt an, das die Bits FRP1MNT [65 : 3] sämt­ lich gleich 1 sind. Das Signal FRRBIT 30 ist das Rundungsbit aus der Rundungsbit-Logik. Diese Signale werden mit FRHCOUT 63 (dem Übertrag des 64-Bit-Addierers/Inkrementierers 61), FRP1MNT [67] und Bit [66] aus dem 64-Bit-Addierer/Inkrementierer 61 kombiniert, um durch den Normier-Block 68 die zwei neuen Werte von FRINCMT [67, 66] zu berechnen. Nach dem Normierschritt wird das Signal FRINCMT [67 : 3] 62 an den Mantissenauswahlblock aus­ gegeben. Die unten gezeigte Wahrheitstabelle zeigt an, wie ein Festlegen der Mantisse im Falle der Normierung nach dem Runden nötig ist.
Tabelle 9
Die in Tabelle 9 erscheinenden geschweiften Klammern bezeichnen die zwei möglichen Ausgaben des Mantisseninkrements. Die als xxxxx markierten Fälle sind die, in welchen der Wert für die Bits [67, 66] bei gegebenem Wert des Signals FRDONTNRM 17 un­ möglich zu erreichen wäre. Wenn beispielsweise das Signal FR­ DONTNRM 17 gleich 1 ist und die Bits FRP1NMT [67, 66] beide gleich 0 sind, könnten die resultierenden Bits FRINCMT [67, 66] (nach dem Inkrement) entweder 00 oder 01 sein. Aber ein Signal FRDONTNRM 17 gleich 0 garantiert, daß die Bits FRP1MNT [67, 66] 01 sein sollen, so daß dieser Fall als xxxxx in der Tabelle markiert ist.
Gegebenenfalls liefern beide Einheiten ihre Ausgangssignale an den Mantissenauswahlblock, welcher in Fig. 9 gezeigt ist. Der 2:1-Multiplexer 71 wählt auf der Grundlage des Werts des Rundungsbits (FRRBIT 30) zwischen der mit Nullen aufgefüllten Mantisse (FRPOMNT 44) und der aus dem Inkrementierer kommenden Mantisse (FRINCMT 62). Der Multiplexer 72 wird verwendet, um die Bits [2 : 0] der Ergebnismantisse entweder auf "0" im Falle der Freigabe des Rundens (FRDONTRND 19 = "0") oder gleich FRNRMNT [2 : 0] 23 im Falle des Sperrens des Rundens zu setzen.
Im folgenden wird wieder auf Fig. 3 Bezug genommen. Der letzte Hauptblock des Runders 100 ist die Exponentensteuerung 11. Die Exponentensteuerung enthält den Ergebnis-Null-Detektor 80 und den Exponentensteuersignal-Erzeugungsblock 90. Die Expo­ nentensteuersignale werden aus den Bits [67, 66] über den Deco­ dierblock 15 in Kombination mit einer Startanzeige aus dem Ex­ ponent- oder Dividier-Abschnitt, mit FRDONTNRM (Nicht-Normier- Signal) und FRRESZERO 91 (Ergebnis ist 0) gewonnen. Diese Si­ gnale werden an den Exponent-Abschnitt angelegt, um den Expo­ nent entsprechend den im Runder 100 ausgeführten Mantissenein­ stellungen einzustellen.
Fig. 10 ist ein Blockdiagramm des Ergebnis-Null-Detektor­ blocks. Dieser Abschnitt führt eine Alles-Einsen-Erkennung am FRP1MNT 54 (Mantisse mit aufgefüllten Einsen) aus und eine Null-Erkennung an FRPOMNT 44 (Mantisse mit aufgefüllten Nullen) mit Hilfe der Informationen von der Alles-Einsen-Erkennung aus. Bits von FRNRMNT 23 werden ebenfalls verwendet. Das Signal FRLMONES 81 aus der Alles-Einsen-Erkennung zeigt an, daß FRP1MNT [65:3] nur Einsen aufweist, und das Signal FROJONES 82 zeigt an, daß die Bits FRNMNT [67, 66] Einsen sind.
Die Alles-Einsen- und die Nullen-Erkennungen werden an der Mantisse (FRPOMNT 44 und FRP1MNT 54) ausgeführt, die bereits entsprechend der Genauigkeitssteuerung modifiziert worden ist, weil - in Abhängigkeit von der ausgewählten Genauigkeit - das Auffüllen einer Mantisse mit Nullen oder Einsen die Mantisse in eine Null oder in eine Zahl aus lauter Einsen transformieren könnte. Die Alles-Einsen-Information ist für die Nullen-Erken­ nung erforderlich, weil das Runden auch bewirken kann, daß eine Mantisse eine Null wird.
Fig. 11 zeigt die Exponenten-Steuersignalerzeugung 90. Die in dem Vor-Rundungs-Normierblock verwendeten decodierten Bits FRMUBUS (67, 66) werden auch hier verwendet, um die Exponenten- Steuersignale zu berechnen. Die Steuersignale werden angelegt, wenn eine Normierung gestattet ist (FRDONTNRM = 0), vorausge­ setzt, es gibt ein Startsignal (FRWFSTRT = 1) und das Ergebnis ist nicht 0 (FRRESZERO = 0). Die folgende Wahrheitstabelle be­ schreibt die Exponentensteuerung auf der Basis dieser Signale.
Tabelle 10
Drei der Exponenten-Steuersignale (FREXPM1 92, FREXPASIS 93 und FREXPP1 94) beruhen auf dem Zustand der Bits [67, 66] der ungerundeten Mantisse und bewirken, daß der Exponent um 1 de­ krementiert, unverändert gelassen oder um 1 inkrementiert wird. Ein viertes Signal (FRMROVFNN 95) wird auf der Grundlage des Zustands der Bits [67, 66] in dem Normierungsschritt nach dem Runden erzeugt. Dieses Signal zeigt an, daß die Nach-Rundungs- Normierung einen Mantissenüberlauf erzeugt hat, und somit der Exponentenabschnitt den Exponenten dementsprechend einstellen muß (d. h. ihn inkrementieren). Beispielsweise veranlaßt FRMROVFNN 95 zusammen mit FREXPP1 94 ein Inkrementieren des Ex­ ponenten um zwei. Dieses Signal ist dadurch qualifiziert, daß die Vor-Rundungs-Normierung freigegeben ist (FRDONTNRM = 0), die Nach-Rundungs-Normierung freigegeben ist (FRWFKILLV = 0) und daß das Ergebnis ungleich 0 ist (FRRESZERO = 0). Die fol­ gende Tabelle ist eine Wahrheitstabelle für den Überlauf beim Runden.
Tabelle 11
Im gegenwärtig bevorzugten Ausführungsbeispiel der Erfindung unterscheidet sich die Funktionalität des Runders bei reellen Operationen von der bei primitiven Operationen.
Bei reellen Mikro-Operationen sind sowohl das Runden als auch die Normierung freigegeben (FRDONTNRM, FRDONTRND und FRWFKILLV sind alle gleich 0). Da alle reellen arithmetischen Operationen mit Hilfe normierter Operanden in einem internen Genauigkeitsformat ausgeführt werden, wird in einem bevorzugten Ausführungsbeispiel der Erfindung gesichert, daß die in den Runder eingehende Mantisse zur Vor-Rundungs-Normierung keine Verschiebung größer als eine Position (entweder nach links oder nach rechts) erfordert. Folglich ist FRNRMNT (die Mantisse hin­ ter dem Normierungsblock) eine normierte Zahl.
Die geeigneten Bits werden aus FRNRMNT gewonnen und (gemeinsam mit dem Vorzeichen, dem Genauigkeitssteuersignal und dem Rundungssteuersignal) verwendet, um das Rundungsbit FRRBIT zu berechnen. Die Mantissen FRPOMNT (entsprechend dem Genauig­ keitssteuersignal mit Nullen aufgefüllte Mantisse) und FRP1MNT (entsprechend dem Genauigkeitssteuersignal mit Einsen aufge­ füllte Mantisse) werden gebildet, und FRP1MNT wird durch den Block des 64-Bit-Inkrementierers und Nach-Rundungs-Normierers geleitet. Wenn während der Rundung ein Überlauf entsteht, stellt der Runder-Abschnitt die Mantisse erneut ein. Folglich ist die aus dem Inkrementier-und-Normier-Block kommende Man­ tisse (FRINCMT) normiert. Das Rundungsbit FRRBIT wird verwen­ det, um die endgültige Ergebnismantisse FRMZBUS [67 : 3] zwischen der gerundeten Mantisse FRINCMT [67 : 3] und der mit Nullen auf­ gefüllten Mantisse FRPOMNT [67 : 3] zu wählen. Das Signal FRDONTRND wird verwendet, um den Wert der Bits FRMZBUS [2 : 0] auszuwählen. Für reelle Operationen sind diese drei Bits auf 0 gesetzt.
Bei primitiven Mikro-Operationen kann es sein, daß das Run­ den und das Normieren nicht gleichzeitig freigegeben sind, d. h. FRDONTNRM, FRDONTRND und FRWFKILLV können eine Anzahl von Wert­ kombinationen annehmen. Wenn sowohl das Runden als auch das Normieren erlaubt sind, ist das Verhalten das gleiche wie im Fall der reellen Mikro-Operationen. Wenn sowohl das Runden als auch das Normieren gesperrt sind, so wird die Mantisse ungeän­ dert durch den Runder geleitet. Wenn die Normierung nicht ge­ stattet ist und das Runden freigegeben ist, passiert die in den Rundungsabschnitt kommende Zahl unverändert den Normierungs­ block. In diesem Fall verwendet die Rundungsbit-Berechnungslo­ gik Bits, die außerhalb ihrer zuvor definierten richtigen Posi­ tionen liegen. Wenn während des Rundens ein Überlauf entsteht und eine Nach-Rundungs-Normierung gesperrt ist (FRWFKILLV = 1), dann wird die Mantisse nicht rückgewandelt.
Wenn die Normierung freigegeben ist, aber das Runden ge­ sperrt ist, erkennt der Rundungsabschnitt diesen Fall, und das Rundungsbit FRRBIT wird auf 0 gesetzt. Folglich ist die ausge­ wählte Ergebnismantisse FRPOMNT die, die nicht durch den Inkre­ mentier-und-Normier-Block gelaufen ist. In diesem Fall werden die Bits [2 : 0] des Ergebnisses nicht auf 0 gesetzt, aber statt­ dessen aus den durchgeleiteten Bits [2 : 0] der normierten Man­ tisse gebildet.
Ein Beispiel
Dieser Unterabschnitt beschreibt anhand eines Beispiels, wie ein binärer Operand entsprechend dem aktuellen Ausführungs­ beispiel der Erfindung gerundet wird. Bei einem beliebigen 64- Bit-Operanden und einer vom Benutzer ausgewählten einfachen Ge­ nauigkeit und einer Rundung zum Nächsten funktioniert das aktu­ elle Ausführungsbeispiel der Erfindung wie folgt. Es sei ange­ nommen, daß die Bits 44-40 des beliebigen 64-Bit-Operanden 0, 0, 1, 1 bzw. 0 sind. Dies definiert die Werte der Bits wie folgt: K=0, L=0, G=1, R=1 und S=0. Der 64-Bit-Operand wird zunächst zwischengespeichert und dann gleichzeitig über einen 64-Bit-Bus an die drei Abschnitte gesandt.
Der erste Abschnitt berechnet das Rundungsbit. Das Run­ dungsbit wird auf "1" gesetzt, wenn der Operand aufgerundet werden soll. Anderenfalls wird es auf "0" gesetzt (was anzeigt, daß der Operand entsprechend der Genauigkeit zu kürzen ist). Das Rundungsbit wird durch die in Tabelle 2 gegebenen Gleichun­ gen bestimmt. In unserem Beispiel wird unter Annahme eines nor­ malen Falls das Rundungsbit mit der Gleichung G(R+S)+LG(R+S)′ berechnet. Ein Einsetzen der gegebenen Bits ergibt die folgen­ den logischen Operationen: {[1 UND (1 ODER 0)] ODER [(0 UND 1) UND NICHT (1 ODER 0)]}. Ein Lösen dieser Gleichung ergibt (1 UND 1) ODER (0 UND NICHT 1), was weiter reduziert werden kann zu 1 ODER (0 UND 0), was gleich (1 ODER 0) ist, wobei sich ein Endergebnis von 1 ergibt. Folglich wird das Rundungsbit auf "1" gesetzt, was anzeigt, das der Operand aufzurunden ist.
Gleichzeitig wird der gleiche 64-Bit-Operand über zwei se­ parate Pfade zu zwei unterschiedlichen Abschnitten geschickt. In einem Pfad wird angenommen, daß der Operand entsprechend der Genauigkeit abgeschnitten werden soll. Unter Verwendung unseres Beispiels werden die Bits 42-3 mit Nullen aufgefüllt. In unse­ rem Beispiel bleiben die Bits 67-43, wie sie sind, und die Bits 42-3 werden auf "0" gesetzt.
Im anderen Pfad wird angenommen, daß der Operand aufgerun­ det werden soll. In unserem Beispiel werden die Bits 42-3 mit Einsen aufgefüllt. Als nächstes wird die aufgefüllte Mantisse um 1 inkrementiert. Die Wirkung des Inkrementierens ist eine Addition von 1 zum am niedrigsten bewerteten Bit (es wird auf­ gerundet) und ein Setzen der restlichen Bits auf 0 (1+1=0 mit einem Übertrag usw.). In unserem Beispiel wird eine "1" zum Bit 43 addiert. Dies führt dazu, daß die Bits 67-42 bleiben, wie sie sind, d. h. das Bit 43 eine "1" ist und die Bits 42-3 auf "0" gesetzt sind.
Schließlich wird entweder der aufgerundete oder der abge­ rundete Pfad als Ausgang ausgewählt. Die Auswahl basiert auf dem Rundungsbit. In unserem Beispiel ist das Rundungsbit eine "1", was der Auswahl des aufrundenden Pfades entspricht. Das Ergebnis ist ein in geeigneter Weise gerundeter Operand mit der geeigneten Genauigkeit, d. h. die Bits 67-44 bleiben die glei­ chen, das Bit 43 ist auf eine "1" gesetzt und die Bits 42-3 sind auf Nullen gesetzt.

Claims (12)

1. Rundungseinrichtung (100) in einem Halbleiterbauelement, dadurch gekennzeichnet,
daß Mittel (14) zum Normieren einer ungerundeten Zahl mit einem Bus gekoppelt sind;
daß Mittel (10) zum Berechnen eines Rundungsbits (FRRBIT; 30) mit dem Bus gekoppelt sind, wobei das Rundungsbit (30) festlegt, ob die normierte ungerundete Zahl (FRNRMNT; 23) auf­ gerundet werden soll;
daß eine erste Einheit (40) zum Abrunden der normierten un­ gerundeten Zahl (23) und Ausgeben des Ergebnisses (FRPOMNT; 44) vorgesehen und mit dem Bus gekoppelt ist;
daß eine zweite Einheit (50, 60) zum Aufrunden der normier­ ten ungerundeten Zahl (23) und zum Ausgeben des Ergebnisses (FRINCMT; 62) vorgesehen und mit dem Bus gekoppelt ist; und
daß ein Auswahlmittel (70), welches zwischen den Ausgaben der ersten Einheit (40) und der zweiten Einheit (50, 60) auf der Grundlage des Rundungsbits (FRRBIT; 30) auswählt mit der ersten und der zweiten Einheit gekoppelt ist.
2. Rundungseinrichtung nach Anspruch 1, dadurch gekenn­ zeichnet, daß die ungerundete Zahl eine 68-Bit-Binärzahl ist.
3. Rundungseinrichtung nach Anspruch 1 oder 2, dadurch ge­ kennzeichnet, daß ein Latch (13) zum Zwischenspeichern der un­ gerundeten Zahl vorgesehen ist.
4. Rundungseinrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Mittel (10) zum Berechnen des Rundungsbits (FRRBIT; 30) so ausgebildet sind, daß sie die Be­ rechnung auf der Grundlage eines Rundungsmodus, der Genauigkeit und von Schutz-, Runde- und Haft-Bits (G-, R-, B-Bit) ausfüh­ ren.
5. Rundungseinrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die erste Einheit (40) die nor­ mierte ungerundete Zahl (FRNRNMT; 23) kürzt und die entfernten Bitstellen Bitstellen mit Nullen auffüllt, so daß entsprechend der ausgewählten Genauigkeit eine Anzahl von Kommastellen-Bits auf Null gesetzt sind.
6. Rundungseinrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die zweite Einheit (50, 60) die normierte ungerundete Zahl (23) aufrundet, indem sie die Man­ tisse mit Einsen auffüllt, so daß entsprechend der ausgewählten Genauigkeit eine Anzahl von Kommastellen-Bits auf 1 gesetzt sind.
7. Rundungseinrichtung nach Anspruch 6, dadurch gekenn­ zeichnet, daß die zweite Einheit (50, 60) Mittel (60) zum In­ krementieren der mit Einsen aufgefüllte Mantisse (FRP1MNT; 54) aufweist.
8. Rundungseinrichtung nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die erste Einheit (40), die zweite Einheit (50, 60) und die Mittel (10) zum Berechnen des Run­ dungsbits beim Runden der normierten ungerundeten Zahl (FRNRNMT; 23) parallel arbeiten.
9. Verfahren zum Runden einer Binärzahl in einem Mikropro­ zessor, dadurch gekennzeichnet,
daß die Binärzahl normiert wird,
daß ein Rundungsbit (FRRBIT) für die normierte Binärzahl (FRNRMNT) so bestimmt wird, daß das Rundungsbit festlegt, ob die Binärzahl aufgerundet oder entsprechend einer ausgewählten Genauigkeit gekürzt werden soll;
daß die normierte Binärzahl (FRNRMNT) so eingestellt wird,
daß sie aufgerundet wird;
daß die normierte Binärzahl (FRNRMNT) so eingestellt wird,
daß sie entsprechend der Genauigkeit gekürzt wird; und
daß nach Maßgabe des Rundungsbits (FRRBIT) eine Auswahl un­ ter den aufgerundeten (FRINCMT) und gekürzten (FRPOMNT) Zahlen getroffen wird.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die normierte Binärzahl (FRNRMNT) dadurch gekürzt wird, daß ei­ nige Kommastellen-Bits der normierten Binärzahl entsprechend einer vom Benutzer gewählten Genauigkeit auf Null gesetzt wer­ den.
11. Verfahren nach Anspruch 9 oder 10, dadurch gekennzeich­ net, daß die normierte Binärzahl (FRNRMNT) dadurch aufgerundet wird, daß einige Kommastellen-Bits der normierten Binärzahl entsprechend einer durch den Benutzer ausgewählten Genauigkeit durch Einsen ersetzt werden und daß die so erzeugte Zahl (FRP1MNT) anschließend um Eins inkrementiert wird.
12. Verfahren nach einem der Ansprüche 9 bis 11, dadurch gekennzeichnet, daß die Bestimmung des Rundungsbits (FRRBIT), das Aufrunden, das Einstellen des Kürzens und ein Normierungs­ schritt nach dem Runden parallel zueinander ausgeführt werden, so daß alle vier Schritte in einem einzigen Taktzyklus ausge­ führt werden.
DE4243374A 1991-12-23 1992-12-21 Rundungseinrichtung für eine Gleitkommazahl und Verfahren Expired - Lifetime DE4243374C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/814,361 US5258943A (en) 1991-12-23 1991-12-23 Apparatus and method for rounding operands

Publications (2)

Publication Number Publication Date
DE4243374A1 true DE4243374A1 (de) 1993-06-24
DE4243374C2 DE4243374C2 (de) 1999-09-30

Family

ID=25214837

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4243374A Expired - Lifetime DE4243374C2 (de) 1991-12-23 1992-12-21 Rundungseinrichtung für eine Gleitkommazahl und Verfahren

Country Status (4)

Country Link
US (1) US5258943A (de)
JP (1) JPH05250143A (de)
DE (1) DE4243374C2 (de)
GB (1) GB2262823B (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348455A (ja) * 1993-06-14 1994-12-22 Matsushita Electric Ind Co Ltd 乗算における丸め込み方法及び乗算回路
US5644522A (en) * 1993-11-30 1997-07-01 Texas Instruments Incorporated Method, apparatus and system for multiply rounding using redundant coded multiply result
US5487022A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5511016A (en) * 1994-11-30 1996-04-23 International Business Machines Corporation Method for store rounding and circuit therefor
US5563818A (en) * 1994-12-12 1996-10-08 International Business Machines Corporation Method and system for performing floating-point division using selected approximation values
US5668984A (en) * 1995-02-27 1997-09-16 International Business Machines Corporation Variable stage load path and method of operation
US5761103A (en) * 1995-03-08 1998-06-02 Texas Instruments Incorporated Left and right justification of single precision mantissa in a double precision rounding unit
DE69521027T2 (de) * 1995-03-28 2001-09-06 Cons Ric Microelettronica Verfahren zur Speicherung von Zugehörigkeitsfunktionen und verwandte Schaltung zum Berechnen vom Zugehörigkeitsgrad der Vorbedingungen von Fuzzy-Regeln
US5729481A (en) * 1995-03-31 1998-03-17 International Business Machines Corporation Method and system of rounding for quadratically converging division or square root
US5757682A (en) * 1995-03-31 1998-05-26 International Business Machines Corporation Parallel calculation of exponent and sticky bit during normalization
US5867722A (en) * 1995-04-25 1999-02-02 United Microelectronics Corporation Sticky bit detector for a floating-point processor
US5635858A (en) * 1995-06-07 1997-06-03 International Business Machines, Corporation Zero-stopping incrementers
US5671171A (en) * 1995-07-05 1997-09-23 Sun Microsystems, Inc. Shared rounding hardware for multiplier and divider/square root unit using conditional sum adder
US5892697A (en) * 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
US6128726A (en) 1996-06-04 2000-10-03 Sigma Designs, Inc. Accurate high speed digital signal processor
US5917741A (en) * 1996-08-29 1999-06-29 Intel Corporation Method and apparatus for performing floating-point rounding operations for multiple precisions using incrementers
KR100224278B1 (ko) * 1996-12-18 1999-10-15 윤종용 패스 트랜지스터 로직을 사용하는 조건 합 가산기 및 그것을 구비한 집적 회로
US6209017B1 (en) * 1997-08-30 2001-03-27 Lg Electronics Inc. High speed digital signal processor
US6151615A (en) * 1997-09-02 2000-11-21 Intrinsity, Inc. Method and apparatus for formatting an intermediate result for parallel normalization and rounding technique for floating point arithmetic operations
US5966085A (en) * 1998-04-09 1999-10-12 Lockheed Martin Corporation Methods and apparatus for performing fast floating point operations
JP2000010762A (ja) * 1998-06-19 2000-01-14 Mitsubishi Electric Corp 浮動小数点演算装置
US6219684B1 (en) * 1998-09-30 2001-04-17 Intel Corporation Optimized rounding in underflow handlers
JP2000347832A (ja) * 1999-06-09 2000-12-15 Mitsubishi Electric Corp 浮動小数点演算方式ならびに浮動小数点演算装置およびそれを備える半導体集積回路装置
KR100465371B1 (ko) * 2001-01-26 2005-01-13 학교법인연세대학교 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US7003539B1 (en) * 2001-08-08 2006-02-21 Pasternak Solutions Llc Efficiently determining a floor for a floating-point number
US7752250B2 (en) * 2006-01-12 2010-07-06 International Business Machines Corporation Rounding floating point division results
US8732226B2 (en) * 2006-06-06 2014-05-20 Intel Corporation Integer rounding operation
US20080028014A1 (en) * 2006-07-26 2008-01-31 Hilt Jason W N-BIT 2's COMPLEMENT SYMMETRIC ROUNDING METHOD AND LOGIC FOR IMPLEMENTING THE SAME
US8352531B2 (en) * 2008-07-22 2013-01-08 International Business Machines Corporation Efficient forcing of corner cases in a floating point rounder
US8554821B2 (en) 2010-08-09 2013-10-08 International Business Machines Corporation Expanded scope incrementor
US9354875B2 (en) * 2012-12-27 2016-05-31 Intel Corporation Enhanced loop streaming detector to drive logic optimization
JP2016057831A (ja) * 2014-09-09 2016-04-21 株式会社東芝 浮動小数点演算装置、及び情報処理システム
US9450601B1 (en) 2015-04-02 2016-09-20 Microsoft Technology Licensing, Llc Continuous rounding of differing bit lengths

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796217A (en) * 1984-07-12 1989-01-03 Nec Corporation Rounding unit for use in arithmetic processing of floating point data
US4839846A (en) * 1985-03-18 1989-06-13 Hitachi, Ltd. Apparatus for performing floating point arithmetic operations and rounding the result thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562553A (en) * 1984-03-19 1985-12-31 Analogic Corporation Floating point arithmetic system and method with rounding anticipation
JPH0776911B2 (ja) * 1988-03-23 1995-08-16 松下電器産業株式会社 浮動小数点演算装置
US4926370A (en) * 1989-04-17 1990-05-15 International Business Machines Corporation Method and apparatus for processing postnormalization and rounding in parallel
US4977535A (en) * 1989-12-08 1990-12-11 Motorola, Inc. Method of computation of normalized numbers
US5128889A (en) * 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796217A (en) * 1984-07-12 1989-01-03 Nec Corporation Rounding unit for use in arithmetic processing of floating point data
US4839846A (en) * 1985-03-18 1989-06-13 Hitachi, Ltd. Apparatus for performing floating point arithmetic operations and rounding the result thereof

Also Published As

Publication number Publication date
JPH05250143A (ja) 1993-09-28
GB2262823B (en) 1996-01-10
GB9220905D0 (en) 1992-11-18
US5258943A (en) 1993-11-02
DE4243374C2 (de) 1999-09-30
GB2262823A (en) 1993-06-30

Similar Documents

Publication Publication Date Title
DE4243374A1 (de)
DE2616717C2 (de) Digitales Addierwerk
DE2712224A1 (de) Datenverarbeitungsanlage
DE3700323C2 (de)
DE2246968A1 (de) Einrichtung zur kombination, insbesondere multiplikation, zweier gleitkommazahlen
DE2658248C2 (de)
DE102014100108A1 (de) Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur
AT413895B (de) Digitale signalverarbeitungseinrichtung
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE3641072A1 (de) Verfahren und schaltungsanordnung zur frequenzmessung
DE2626432A1 (de) Arithmetische einheit fuer automatische rechengeraete
DE2758130A1 (de) Binaerer und dezimaler hochgeschwindigkeitsaddierer
DE19748484A1 (de) Schaltung und Verfahren zur Überlauferfassung bei einem digitalen Signalprozessor
DE3447634C2 (de)
DE2830334C2 (de)
DE19618120A1 (de) Parallelverarbeitungs-Divisionsschaltung
DE3303269A1 (de) Verfahren und vorrichtung zur division von bcd-zahlen
DE2705989C2 (de) Schaltungsanordnung zum parallelen Addieren oder Subtrahieren von mindestens zwei Eingangszahlen
DE102013212840B4 (de) Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
DE1549485C3 (de) Anordnung zur Division binärer Operanden ohne Rückstellung des Restes
DE1549449A1 (de) Einrichtung zur Verarbeitung von Gleitkommazahlen
EP0051154A1 (de) Verfahren und Anordnung zur Verknüpfung von Operanden variabler Länge in Datenverarbeitungsanlagen
DE19910620C2 (de) Vorrichtung zur Durchführung von Rechenvorgängen
DE2737483C3 (de) Korrektur-Schaltungsanordnung für Additions- oder Substraktionsoperationen mit nicht-hexadezimalen Operanden in hexadezimalen Rechenwerken
DE19758016C2 (de) Quadratwurzelberechnungsschaltung und Fließkomma-Quadratwurzelberechnungsvorrichtung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 7/48

D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right
R071 Expiry of right