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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49952—Sticky bit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation 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.
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).
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.
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.
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.
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 (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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
1991
- 1991-12-23 US US07/814,361 patent/US5258943A/en not_active Expired - Lifetime
-
1992
- 1992-10-05 GB GB9220905A patent/GB2262823B/en not_active Expired - Lifetime
- 1992-12-11 JP JP4352484A patent/JPH05250143A/ja active Pending
- 1992-12-21 DE DE4243374A patent/DE4243374C2/de not_active Expired - Lifetime
Patent Citations (2)
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 |