DE4414172C2 - Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet - Google Patents
Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendetInfo
- Publication number
- DE4414172C2 DE4414172C2 DE4414172A DE4414172A DE4414172C2 DE 4414172 C2 DE4414172 C2 DE 4414172C2 DE 4414172 A DE4414172 A DE 4414172A DE 4414172 A DE4414172 A DE 4414172A DE 4414172 C2 DE4414172 C2 DE 4414172C2
- Authority
- DE
- Germany
- Prior art keywords
- square root
- reciprocal
- bits
- estimated
- approximation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- 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/544—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 for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5355—Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/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/49936—Normalisation mentioned as feature only
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
Die vorliegende Erfindung bezieht sich auf ein Datenverar
beitungssystem mit einer Gleit-Komma-Arithmetikeinheit und
insbesondere auf ein Verfahren und eine Vorrichtung zum
Durchführen von Gleit-Komma-Divisions- und Quadratwurzel
operationen.
Gleit-Komma-Arithmetikeinheiten sind seit langem dazu fähig,
Divisions- und Quadratwurzeloperationen durchzuführen. Ob
wohl zweckorientierte Divisions- und Quadratwurzelschal
tungen bei Datenverarbeitungssystemen verwendet wurden, um
Divisions- und Quadratwurzeloperationen durchzuführen, geht
der derzeitige Trend dahin, diese Operationen unter Ver
wendung einer Schaltung, die der Multiplikation und Addition
zugeordnet ist, durchzuführen. Beispiele von Datenverarbei
tungssystemen, die einen Multiplizierer und Addierer ver
wenden, um eine Division oder Quadratwurzeloperation durch
zuführen, sind in der Europäischen Patentanmeldung
89313402.3 (EPA-Veröffentlichungsnummer 0377992 A2), der
Europäischen Patentanmeldung 85106938.5 (EPA-Veröffent
lichungsnummer 0166999 A2) und in der Europäischen Pa
tentanmeldung 82111929.4 (EPA-Veröffentlichungsnummer
0111587 A1) enthalten.
Durch das Ausschließen der zweckorientierten Divisions- und
Quadratwurzelschaltung aus den Entwürfen von Gleit-Komma-
Arithmetikeinheiten können Entwickler von Datenverarbei
tungssystemen nicht nur die Kosten reduzieren, sondern eben
falls Platz auf der Platine oder dem Baustein einsparen. Bei
diesen Datenverarbeitungssystemen werden die Divisions- und
Quadratwurzeloperationen unter Verwendung des Multiplizie
rers und Addierers der Gleit-Komma-Arithmetikeinheit durch
geführt. Dies ermöglicht es, mehr Entwurfszeit, Leistung und
Fläche auf die wesentlich häufiger verwendete Addierer- und
Multiplizierer-Hardware zu konzentrieren. Nachdem herausge
funden wurde, daß etwa nur jede zehnte Operation, die in
einem Datenverarbeitungssystem durchgeführt wird, eine Divi
sions- oder Quadratwurzeloperation einschließt, sind solche
Entwürfe realisierbar. Ein ständiges Problem bei diesem An
satz besteht jedoch darin, daß Divisions- und Quadratwur
zeloperationen eine erheblich längere Zeit zur Berechnung
benötigen als dies Additions- und Multiplikationsoperationen
tun. Dieser Unterschied der Berechnungszeit beruht auf der
Tatsache, daß die Additions- und Multiplikationsoperationen
direkt berechnet werden, während Divisions- und Quadratwur
zeloperationen mittels einer iterativen Prozedur indirekt
berechnet werden.
Iterative Prozeduren zur Division können abhängig von ihrem
iterativen Operator in unterschiedliche Klassen eingeteilt
werden. Eine Klasse verwendet die Subtraktion als iterativen
Operator (z. B. nicht- umspeichernde Division), und eine an
dere Klasse verwendet die Multiplikation als iterativen Ope
rator. Die iterativen Prozeduren, die die Multiplikation als
iterativen Operator verwenden, werden bevorzugt, weil sie
die Ergebnisse wesentlich schneller berechnen. Genauer ge
sagt werden für die Division diese iterativen Prozeduren
verwendet, um einen Reziprokwert des Divisors zu erhalten
und dann den Quotienten zu erhalten, wobei der sich erge
bende Reziprokwert mit den Dividenden multipliziert wird. Es
gibt zwei gut bekannte iterative Verfahren, die die Multi
plikation als Iterativoperator verwenden, um den Reziprok
wert zu bestimmen, nämlich die Serienerweiterung und Newton-
Raphson. Von diesen iterativen Verfahren wird das Newton-
Raphson-Verfahren am häufigsten verwendet. Eine allgemeine
Beschreibung von iterativen Prozeduren zur Division kann bei
Waser und Flynn, "Introduction to Arithmetic For Digital Sy
stems Designers", New York, 1982, gefunden werden.
Das Newton-Raphson-Verfahren ist ein besonders attraktives
Berechnungsverfahren für einen sehr schnellen Computer mit
einem Gleit-Komma-Multiplizierer und einem Gleit-Komma-
Addierer-Subtrahierer. Das Newton-Raphson-Verfahren wird
nicht nur für die Division verwendet sondern ebenfalls für
die Quadratwurzeloperation. Bei jeder Iteration konvergiert
das Newton-Raphson-Verfahren quadratisch auf sein Ergebnis.
Herkömmlicherweise wird die Newton-Raphson-Iteration verwen
det, um eine Näherung an den Nenner, im Fall der Division,
oder die inverse Quadratwurzel, im Fall der Quadratwurzel,
zu erreichen. Danach erhöht jede nachfolgende Newton-Raph
son-Iteration die Genauigkeit des inversen Wertes. Sobald
die erwünschte Genauigkeit erreicht ist, wird der inverse
Wert mit dem Nenner, im Fall der Division, oder dem Ein
gangsargument, im Fall der Quadratwurzeloperation, multipli
ziert. Obwohl der herkömmliche Ansatz recht gut arbeitet,
wenn die Ergebnisse auf eine Genauigkeit berechnet werden,
die durch die der Addition und Multiplikation zugeordneten
Hardware angeboten wird, ist der herkömmliche Ansatz unbe
friedigend, wenn Ergebnisse mit höherer Präzision benötigt
werden. Insbesondere erfordert es einen ungeheueren Zeitauf
wand, um die abschließende Multiplikation (abschließender
inverser Wert mal dem Nenner) für Resultate mit höherer Ge
nauigkeit durchzuführen.
Es besteht folglich ein bestimmter Bedarf an einer verbes
serten Technik zum Erhalten von sehr genauen Ergebnissen von
Divisions- und Quadratwurzeloperationen, die mit einer er
heblich höheren Geschwindigkeit arbeiten als der herkömm
liche Ansatz.
Die EP 0,395,240 A2 offenbart einen numerischen Hochge
schwindigkeitsprozessor für Divisions- und Quadratwurzelbe
rechnungen mit einer Mehrzahl von Registern und einem Multi
plizierer 38. Die Divisions- oder Quadratwurzelberechnung
erfolgt derart, daß in einem ersten Schritt ein Startwert S
ausgewählt wird, der das Ergebnis einer Multiplikation des
Divisors mit dem Startwert Eins treibt. In den nachfolgenden
Schritten erfolgt eine Iteration, die bewirkt, daß der aus
gewählte Startwert so an einen Endwert angenähert wird, daß
das Ergebnis einer Multiplikation von S mit dem Divisor Y
näherungsweise 1 wird. Bei der Berechnung einer Quadratwur
zel wird ein ausgewählter Startwert S an den Multiplizierer
ausgegeben. Der numerische Prozessor über eine Operandensi
gnalführung, eine Startwerterzeugungseinrichtung und eine Lo
gikschaltung gesteuert.
Die US 5,157,624 betrifft ein Maschinenverfahren zum
Durchführen von Newton-Iterationen für reziproke Quadratwur
zeln. Eine Vorrichtung umfaßt eine Mehrzahl von Registern,
Gleit-Komma-Multiplizierer, Gleit-Komma-Addierer und Sub
trahierereinheiten zur Berechnung einer reziproken Quadrat
wurzel. Die Berechnung gemäß dem Newton-Verfahren umfaßt das
Auswählen eines Startwertes für den Reziprokwert der Qua
dratwurzel und die Annäherung dieses ausgewählten Start
wertes an einen Zielwert, wobei sich hierbei die Genauigkeit
des angenäherten Wertes erhöht.
Die US 4,999,801 betrifft eine Gleit-Komma-Operationsein
heit für Divisions- und Quadratwurzeloperationen, die die
Betriebsgeschwindigkeit bei einer Divisions- oder Quadrat
wurzeloperation durch eine Reduzierung der Anzahl von Zyklen
durch Operationen erhöht.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, eine
Vorrichtung und ein Verfahren zu schaffen, das die sehr ge
naue und die sehr schnelle Erzeugung von Divisions- und Qua
dratwurzeloperationen ermöglicht.
Diese Aufgabe wird durch eine Gleit-Komma-Arithmetikeinheit
gemäß Anspruch 1 und Anspruch 2 sowie gemäß einem Verfahren
nach Anspruch 7 oder Anspruch 8 gelöst.
Allgemein erzielt die Erfindung sehr genaue Divisions- und
Quadratwurzelergebnisse, wobei eine modifizierte Form des
Newton-Raphson-Verfahrens verwendet wird, bei dem keine Mul
tiplikationen von Zahlen mit der Genauigkeit des Ergebnisses
erforderlich sind.
Ein Ausführungsbeispiel der Erfindung führt Gleit-Komma-
Divisions- und -Quadratwurzeloperationen in einem arith
metischen Verarbeitungssystem mit einer Multipliziererein
heit und einer Addierereinheit durch. Um die Divisions- und
Quadratwurzel-Befehle auszuführen, schließt der Divisions- und
Quadratwurzel-Mikrocode iterative Prozeduren ein, die
sowohl auf der herkömmlichen Form des Newton-Raphson-Verfah
rens und auch der modifizierten Form des Newton-Raphson-Ver
fahrens basieren. Durch Verwendung der modifizierten Form
des Newton-Raphson-Verfahrens erreicht die Erfindung eine
wesentliche Verbesserung der Geschwindigkeit, mit der die
Ergebnisse für eine sehr genaue Division und Quadratwurzel
berechnet werden. Die Erfindung ermöglicht ebenfalls eine
praktische Hardwareausführung, weil ein ungefähres Ergebnis
mit fast 2N-Bits Genauigkeit ohne einen 2N-auf-2N breiten
Multiplizierer erreicht werden kann.
Als Vorrichtung ist die Erfindung einer Gleit-Komma-Arithme
tikeinheit zugeordnet. Die Erfindung ermöglicht es der
Gleit-Komma-Arithmetikeinheit eine Gleit-Komma-Division
eines Dividenden durch einen Divisor, um einen bestimmten
Quotienten zu erzeugen, oder eine Gleit-Komma-Quadratwurzel
operation eines Wertes, um eine bestimmte Quadratwurzel zu
erzeugen, durchzuführen. Die Vorrichtung schließt ein Spei
cherbauelement mit mehreren Anschlüssen zum Speichern von
Daten, eine arithmetische Einrichtung zum Multiplizieren von
zwei Zahlen, um ein Produkt zu erzeugen, und zum Addieren
von zwei Zahlen, um eine Summe zu erzeugen, einen Divisions- und
Quadratwurzel-Mikrocode, der die iterativen Prozeduren
zum Durchführen der Dividierer- und Quadratwurzeloperationen
enthält, eine Reziprokwertnäherungseinrichtung zum Enthalten
der anfänglichen Näherungen der Reziprokwerte des Divisors
und der Reziprokwerte der Quadratwurzel des Wertes, und eine
Steuerungseinheit zum Steuern der Gleit-Komma-Einheit ein.
Die iterativen Prozeduren, die in dem Divisions- und Qua
dratwurzel-Mikrocode enthalten sind, führen die Divisions- und
Quadratwurzel-Operationen aus, um den bestimmten Quo
tienten und die Quadratwurzel mit einer Genauigkeit in der
Nähe von 2N-Bits zu erzeugen, ohne daß 2N-mal-2N-Bit Multi
plikationen erforderlich sind.
Als Verfahren führt die Erfindung eine Divisions- oder Qua
dratwurzeloperation in einem Datenverarbeitungssystem aus,
um ein sehr genaues Ergebnis zu erzeugen. Anfänglich wird
eine Näherung eines Reziprokwertes erhalten. Die Näherung
des Reziprokwertes kann zum Beispiel aus eines Reziprokwert
näherungstabelle erhalten werden. Als nächstes werden eine
oder mehrere Iterationen eines herkömmlichen Newton-
Raphson-Verfahrens durchgeführt, um die Genauigkeit des Re
ziprokwertes zu erhöhen. Danach wird eine zusätzliche
Iteration unter Verwendung eines modifizierten Newton-Raph
son-Verfahrens durchgeführt, um das sehr genaue Ergebnis zu
erzeugen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer Gleit-Komma-Arithmetikein
heit gemäß einem ersten Ausführungsbeispiel der Er
findung;
Fig. 2 ein Blockdiagramm einer Gleit-Komma-Arithmetikein
heit gemäß einem zweiten Ausführungsbeispiel der
Erfindung;
Fig. 3 ein Flußdiagramm der grundsätzlichen Operationen,
die durch eine Steuerungseinheit ausgeführt werden;
Fig. 4 ein Flußdiagramm der grundsätzlichen Operationen,
die durch den Divisions- und Quadratwurzel-Mikro
code ausgeführt werden;
Fig. 5 ein Flußdiagramm der detaillierten Operationen, die
durch den Divisions-Mikrocode ausgeführt werden;
und
Fig. 6 ein Flußdiagramm der detaillierten Operationen, die
durch den Quadratwurzel-Mikrocode ausgeführt wer
den.
Die Erfindung ist zur Verwendung in einer Gleit-Komma-Arith
metikeinheit vorgesehen. Die Erfindung ermöglicht es einer
Gleit-Komma-Arithmetikeinheit, Ergebnisse mit einer Genauig
keit zu produzieren, die mindestens zweimal derjenigen ent
spricht, die durch die Hardware angeboten wird. Bevorzugter
weise erzeugt die Erfindung eine 2N-Bit Näherung (volle Ge
nauigkeit) aus einer N-Bit Näherung (Halb-Genauigkeit). Wenn
die Hardware zum Beispiel fähig ist, doppelt genaue Erge
bnisse bereit zu stellen, wird die Erfindung vierfach genaue
Ergebnisse erzeugen. Die Erfindung ist ebenso auf mehrfach
genaue Zahlen anwendbar. Mehrfach genaue Zahlen sind Zahlen
mit einer Genauigkeit größer als die Vierfachgenauigkeit.
Diese Zahlen können in einem einfach genauen Gleit-Komma-
Array gespeichert sein. Bei einer Ausführung ist das erste
Wort in dem Array eine Gleit-Komma-Zahl mit ganzzahligem
Wert, deren Absolutwert die Anzahl der Wörter in der Man
tisse darstellt. Das Vorzeichen des ersten Worts ist das
Vorzeichen der mehrfach genauen Zahl. Das nächste Wort ist
eine Gleit-Komma-Zahl mit ganzzahligem Wert, die den Ex
ponenten der Basis darstellt. Der Dezimalpunkt folgt dem
ersten Mantissenwort. Bekannte Softwarebibliotheksroutinen
sind erhältlich, um mathematische Operationen bezüglich
dieser Zahlen auszuführen. Siehe zum Beispiel Bailey, "A
Portable High Performance Multiprecision Package", RNR
Technical Report RNR-90-022, NAS Applied Research Branch,
NASA Ames Research Center, Moffett Field, Kalifornien, Mai
1992.
Ausführungsbeispiele der Erfindung werden im Folgenden in
den Fig. 1 bis 6 beschrieben. Für Fachleute ist es jedoch
offensichtlich, daß die hier gegebene detaillierte Beschrei
bung bezüglich dieser Figuren aus erklärenden Gründen er
folgt, nachdem sich die Erfindung über diese beschränkten
Ausführungsbeispiele hinaus erstreckt.
Fig. 1 stellt ein erstes Ausführungsbeispiel einer Gleit-
Komma-Arithmetikeinheit 100 dar. Dieses Ausführungsbeispiel
speichert vierfach genaue Zahlen in einem Doppel-Doppel-For
mat. Die Arithmetikeinheit 100 schließt eine getrennte
Schaltung für die Multiplikation und Addition ein.
Eine Registerdatei 102 mit mehreren Anschlüssen schließt
Leseanschlüsse A, B, C, D und E und Schreibanschlüsse F, G,
H und I ein. Die Registerdatei 102 speichert Daten mit einer
N-Bit Wortgröße. Eine Multiplikationseinheit 104 ist mit den
Leseanschlüssen A und B verbunden, um jeweils einen Multi
plikanden und einen Multiplikator zu empfangen. Die Multi
plikationseinheit 104 stellt einem Übertragübergabeaddierer
(CPA = Carry Propagate Adder) 106 ein hohes Teilprodukt und
ein niedriges Teilprodukt bereit. Der CPA 106 addiert das
hohe und das niedrige Teilprodukt. Die durch den CPA 106 er
zeugte Summe wird dann durch einen Rundungsaufwärtszähler
108 auf 2N-Bits gerundet.
Das gerundete Ergebnis besteht aus zwei N-Bitabschnitten,
die jeweils in einem Zwischenspeicher für ein hohes Produkt 110
und in einen Zwischenspeicher für ein niedriges Produkt
112 enthalten sind. Ein Multiplexer 114 empfängt die zwi
schengespeicherten N-Bitabschnitte von den Zwischenspeichern
110, 112. Der Ausgang des Multiplexers 114 ist mit dem
Schreibanschluß F der Registerdatei 102 verbunden, so daß
die zwei N-Bitabschnitte der Multiplikationsoperationen in
der Registerdatei 102 in zwei Schreiboperationen, eine für
den hohen Abschnitt und eine für den niedrigen Abschnitt,
gespeichert werden können.
Entsprechend stellen die Leseanschlüsse A und B der Multi
plikationseinheit 104 den Multiplikanden und den Multipli
kator bereit. Die Ergebnisse der Multiplikation bestehen aus
zwei N-Bitwerten, die gerundet sind und an den Schreiban
schluß F der Registerdatei 102 zur vorübergehenden Spei
cherung weitergegeben werden.
Andere Anschlüsse der Registerdatei 102 sind der Additions
schaltung der Gleit-Komma-Arithmetikeinheit 100 zugeordnet.
Ein Synchronisationsschieber 116 empfängt die Summanden von
den Leseanschlüssen C und D der Registerdatei 102 und syn
chronisiert sie für die Addition. Ein Übertragübergabead
dierer (CPA) 118 addiert dann die synchronisierten Werte und
führt eine Summe einem Normalisierungsschieber 120 zu. Die
normalisierte Summe wird dann durch einen Rundungsaufwärts
zähler auf 2N-Bits gerundet, um eine gerundete Summe zu er
zeugen. Die ersten N-Bits der gerundeten Summe werden in
einem Zwischenspeicher 124 für eine hohen Abschnitt zwi
schengespeichert und die zweiten N-Bits der gerundeten Summe
werden in einem Zwischenspeicher 126 für einen niedrigen
Abschnitt zwischengespeichert. Ein Multiplexer 128 empfängt
die zwischengespeicherten Summen von den Zwischenspeichern
124, 126 als Eingangssignale und gibt die zwischengespei
cherten Summen in zwei Durchgängen zurück an den Schreiban
schluß G.
Eine Steuerungseinheit 130 empfängt auszuführende Befehle
und gibt die notwendigen Steuerungssignale 132 an die ver
schiedenen Schaltungen, die in Fig. 1 gezeigt sind. Die
Steuerungseinheit 130 steuert daher die Multiplikations- und
Additionsschaltung, um die Befehle auszuführen.
Um die Gleit-Komma-Arithmetikeinheit anzupassen, so daß sie
Divisions- und Quadratwurzel-Befehle unter Verwendung ihrer
Multiplikations- und Additionsschaltung ordnungsgemäß aus
führt, kann durch die Steuerungseinheit 130 auf einen Divi
sions- und Quadratwurzel-Mikrocode 134 zugegriffen werden.
Die iterativen Prozeduren, die innerhalb des Divisions- und
Quadratwurzel-Mikrocodes 134 enthalten sind, werden später
genauer beschrieben. Nachdem die iterativen Prozeduren mit
einem anfänglichen Schätzwert oder Näherung eines Reziprok
wertes oder einer reziproken Quadratwurzel beginnen, sind
Näherungstabellen 136 für den Reziprokwert oder die Rezi
prokquadratwurzel innerhalb der Gleit-Komma-Arithmetik
schaltung 100 eingeschlossen. Diese Näherungswerte werden
der Registerdatei 102 zugeführt, so daß sie entweder in der
Multiplikationsschaltung oder der Additionsschaltung ver
wendet werden können.
Tabelle 1 zeigt einige Beispiele (im dezimalen Format) einer
Reziprokwertnäherungstabelle und Tabelle 2 stellt dasselbe
für eine Näherungstabelle für eine reziproke Quadratwurzel
dar.
A | |
Näherung | |
0.1 | 10.0 |
0.2 | 5.0 |
0.3 | 3.33 |
0.4 | 2.50 |
0.5 | 2.00 |
0.6 | 1.67 |
0,7 | 1.43 |
0,8 | 1.25 |
0.9 | 1.11 |
1.0 | 1.0 |
A | |
Näherung √U/A | |
0.1 | 3.16 |
0.2 | 2.24 |
0.3 | 1.83 |
0.4 | 1.58 |
0.5 | 1.41 |
0.6 | 1.29 |
0,7 | 1.20 |
0,8 | 1.12 |
0.9 | 1.05 |
1.0 | 1.00 |
Die tatsächlichen Näherungstabellen würden viel mehr Ein
träge in der hexadezimalen Darstellung enthalten, wie etwa
im Anhang A der Europäischen Patentanmeldung 89313402.3
(EPA-Veröffentlichungsnummer 0377992 A2), deren Offenba
rungsgehalt hiermit durch Bezugnahme aufgenommen ist.
In jedem Fall stellen die Näherungen, die in den Näherungs
tabellen 136 gespeichert sind, lediglich die ersten wenigen
Bits des erwünschten Reziprokwertes dar. Nachdem eine Ta
belle für alle möglichen Gleit-Komma-Zahlen unpraktisch groß
wäre, ist ein Exponenteinsteller 138 vorgesehen, um den Ex
ponenten herauszuziehen und einzustellen. Der Exponentein
steller 138 speichert und erhält Daten von der Registerdatei
102 über den Schreibanschluß I bzw. den Leseanschluß E.
Durch getrenntes Behandeln des Exponenten- und Mantissen-
Feldes der Gleit-Komma-Zahlen können die Näherungstabellen
in einer verwaltbaren Größe aufgebaut werden. Für die Divi
sion werden die Mantissenbits verwendet, um die entsprechen
den Einträge aus den Näherungstabellen 136 auszuwählen und
der Exponenteinsteller 138 zieht den Exponenten heraus und
stellt ihn durch Verwenden des negativen Exponenten ein. Für
die Quadratwurzeloperation wird wiederum die Mantisse ver
wendet, um die geeigneten Einträge aus den Näherungstabellen
136 auszuwählen, der Exponenteinsteller ist aber kompli
zierter. Wenn der Exponent gerade ist, reduziert der Expo
nenteinsteller 138 den Exponenten um eine Hälfte. Wenn der
Exponent ungerade ist, modifiziert der Exponenteinsteller
138 den Exponenten derart, daß vom Exponenten Eins abgezogen
wird und der Exponent dann um die Hälfte reduziert wird. In
jedem Fall ist der eingestellte Exponent mit der iterativen
Prozedur verbunden, bevor die Näherung verwendet wird.
Fig. 2 ist ein Blockdiagramm einer Gleit-Komma-Arithmetik
einheit 200 gemäß einem zweiten Ausführungsbeispiel der
Erfindung. Die Gleit-Komma-Arithmetikeinheit 200, die in
Fig. 2 dargestellt ist, weist einen verschmolzenen Multipli
kations-Additionsentwurf auf (MAF = multiply-add-fused
design). Das heißt, eine Multiplikationseinheit und ein Ad
dierer sind zusammen verschmolzen, so daß die Multiplikation
und die Addition als eine Operation auftreten können.
Eine Registerdatei mit mehreren Anschlüssen 202 schließt Le
seanschlüsse A, B, C und D und Schreibanschlüsse E, F und G
ein. Eine Multiplikationseinheit 204 empfängt einen Multi
plikanden und einen Multiplikator von den Leseanschlüssen A
und B und erzeugt ein Produkt. Ein Synchronisationsschieber
206 empfängt einen Summanden von dem Leseanschluß D und
synchronisiert den Summanden gemäß dem Exponenten des Pro
dukts, unter Verwendung eines Signals 207 von der Multipli
kationseinheit 204.
Ein 3 : 2-Übertragsicherungsaddierer 208 empfängt Eingangs
signale von der Multiplikationseinheit 204 und dem Synchro
nisationsschieber 206 und stellt einem Übertragübergabead
dierer 210 mindestens 2N-Bits eines Ausgangssignals bereit.
Die Erfindung erfordert lediglich die Verwendung der füh
renden 2N-Bits des Übertragsicherungsaddierers 208. Der
Übertragübergabeaddierer 210 erzeugt ein 2N-Bit Ergebnis,
das dann durch einen Normalisierungsschieber 212 normali
siert wird und durch einen Rundungsaufwärtszähler 214 auf
ein 2N-Bit Ergebnis gerundet wird. Das gerundete Ergebnis
wird dann in zwei N-Bit Abschnitten einem Zwischenspeicher
216 für einen hohen Abschnitt bzw. einem Zwischenspeicher
218 für einen niedrigen Abschnitt zugeführt. Ein Multiplexer
220 empfängt die zwischengespeicherten N-Bit Abschnitte von
den Zwischenspeichern 216, 218. Der Ausgang des Multiplexers
220 ist mit dem Schreibanschluß F der Registerdatei 202 ver
bunden, so daß die zwei N-Bits Abschnitte in der Register
datei 202 in zwei Schreiboperationen, eine für den hohen
Abschnitt und eine für den niedrigen Abschnitt, gespeichert
werden können.
Eine Steuerungseinheit 222 empfängt einen Befehl und führt
diesen aus. Genauer gesagt steuert die Steuerungseinheit 222
die Schaltung der Gleit-Komma-Arithmetikeinheit 200 unter
Verwendung verschiedener Steuerungssignale 224. Wenn der an
der Steuerungseinheit 222 empfangene Befehl entweder ein
Divisions-Befehl oder ein Quadratwurzel-Befehl ist, greift
die Steuerungseinheit 222 auf den Divisions- und Quadratwur
zel-Mikrocode 226 zu, um die iterativen Prozeduren auszufüh
ren, die erforderlich sind, um die Divisions- und Quadrat
wurzeloperation unter Verwendung der Multiplikations- und
Additions-Schaltung durchzuführen.
Obwohl die erforderlichen iterativen Prozeduren später be
schrieben werden, erfordern die iterativen Prozeduren die
Verwendung von anfänglichen Näherungen oder Schätzwerten für
einen Reziprokwert oder einen Reziprokwert für die Quadrat
wurzel, die in den Näherungstabellen 228 für den Reziprok
wert und die reziproke Quadratwurzel gespeichert sind. Ta
belle 1 und 2 enthalten ein Beispiel einer Näherungstabelle
für einen Reziprokwert und einer Näherungstabelle für eine
reziproke Quadratwurzel. Die geeigneten Näherungen werden
durch die Steuerungseinheit 222 (über die Steuerungssignale
224) ausgewählt und dem Schreibanschluß G zugeführt, so daß
die Gleit-Komma-Arithmetikeinheit 200 die durch den Mikro
code 226 angeforderten iterativen Prozeduren ausführen kann.
Ein Exponenteinsteller 230 ist mit dem Leseanschluß C und
dem Schreibanschluß E der Registerdatei 202 verbunden und
ist genauso wirksam wie der oben beschriebene Exponentein
steller 138.
Aus Verhaltensgründen können das erste und das zweite Aus
führungsbeispiel (Fig. 1 und 2) unter Verwendung einer gut
bekannten Schaltung weiter verbessert werden. Um zum Bei
spiel die Verarbeitung von Befehlsfolgen zu vereinfachen,
können zusätzliche Zwischenspeicher zwischen die Register
datei und die Multiplikationseinheit oder den Synchronisie
rungsschieber hinzugefügt werden. Es könnten ebenfalls Mul
tiplexer zwischen die Registerdatei 102 und die Multiplika
tionseinheit 104 und den Synchronisierungsschieber eingefügt
werden, um die Multiplikationseinheit oder den Synchroni
sierungsschieber schneller mit Eingangssignalen zu versor
gen. Nichtsdestoweniger sind diese und zahlreiche andere gut
bekannte Verbesserungen kein Teil der Erfindung, sondern
sind hauptsächlich Entwurfsauswahlen für die Hardware und
sind aus diesem Grund hier nicht weiter beschrieben.
Obwohl das erste und das zweite Ausführungsbeispiel (Fig. 1
und Fig. 2) mit Näherungstabellen 136, 228 für die Rezi
prokwerte beschrieben sind, kann der anfängliche Schätzwert
oder die Näherung eines Reziprokwertes oder einer reziproken
Quadratwurzel auch durch andere Einrichtungen erhalten wer
den. Es ist in Fachkreisen zum Beispiel bekannt, daß solche
Näherungen unter Verwendung einer polynomen Gleichung er
haltbar sind, um die Koeffizienten zu erhalten, die ver
wendet werden, um die Näherung zu erzeugen. Siehe zum Bei
spiel Cody und Waite, "Software Manual for the Elementary
Functions", Seiten 17-27, 1980; A. Karp, "Speeding up
N-Body Calculations on Machines without Hardware Square
Root", IBM Scientific Center, Doc. No. G320-3565, April
1992.
Fig. 3 ist ein Flußdiagramm der grundsätzlichen Prozeduren,
die durch die Steuerungseinheit 130, 222 durchgeführt oder
gesteuert werden. Wenn die Steuerungseinheit 130, 222 einen
Befehl empfängt, treten verschiedene Operationen in einer
Gleit-Komma-Arithmetikeinheit auf. Anfänglich wird der Be
fehl decodiert 302 und seine Operanden werden gelesen 304.
Als nächstes wird eine Entscheidung 306 getroffen, die da
rauf basiert, ob ein spezieller Fall existiert oder nicht.
Ein spezieller Fall existiert, wenn die Operanden keine
normalen Zahlen sind. Wenn die Operanden keine normalen
Zahlen sind, erfolgt gemäß dem IEEE-Standard 754-1985 ein
"Fix-up" 308 und die Flußsteuerung fährt fort, als ob die
Zahlen anfänglich normal wären. Wenn zum Beispiel eine der
Zahlen 0,02×10⁻3 ist, würde ein "Fix-up" auf 0,2×10⁻4
erfolgen (in diesem Fall normalisiert), bevor die Verarbei
tung weiter geht.
Als nächstes wird eine Entscheidung getroffen 310, die dar
auf basiert, ob der Befehl ein Divisions-Befehl ist oder
nicht. Wenn der Befehl ein Divisions-Befehl ist, führt die
Steuerungseinheit 130, 222 den Divisions-Mikrocode 156, 238
aus 312. Nach der Vollendung des Divisions-Mikrocodes 134,
226 kehrt die Flußsteuerung zum Schritt 302 zurück, um den
nächsten Befehl zu decodieren.
Wenn die Entscheidung 310 feststellt, daß der Befehl kein
Divisions-Befehl ist, wird eine Entscheidung 314 durchge
führt, die darauf basiert, ob der Befehl ein Quadratwurzel-
Befehl ist oder nicht. Wenn der Befehl ein Quadratwurzel-Be
fehl ist, führt die Steuerungeinheit 130, 222 den Quadrat
wurzel-Mikrocode 134, 226 aus, und der Steuerungsfluß kehrt
dann zum Schritt 302 zurück, um den nächsten Befehl zu de
codieren. Wenn andererseits erkannt wird 314, daß der Befehl
kein Quadratwurzel-Befehl ist, dann wird eine Multiplika
tionsoperation 318 und/oder eine Additionsoperation 320 auf
herkömmliche Art durch die Multiplikationseinheit 104, 204
und den Addierer 118, 208, die in Fig. 1 und 2 dargestellt
sind, ausgeführt. Danach wird ein Ergebnis zur vorübergehen
den Speicherung in die Registerdatei 102, 202 zurückge
schrieben 322.
Fig. 4 ist ein Flußdiagramm der grundsätzlichen Prozedur,
die durch den Divisions- und Quadratwurzel-Mikrocode 134,
226 aufgerufen wird. Die Prozedur beginnt mit dem Erhalten
eines genäherten Reziprokwertes 402. Die anfänglichen Rezi
prokwerte für den Divisor im Fall der Division oder die
Quadratwurzel selbst im Fall der Quadratwurzel sind in den
Näherungstabellen 136, 228 für den Reziprokwert und die re
ziproke Quadratwurzel gespeichert. Beispiele dieser Tabellen
136, 228 sind in den Tabellen 1 und 2 enthalten, die oben
beschrieben wurden. Wenn ein Divisions- oder Quadratwurzel-
Befehl durch die Steuerungseinheit 130, 222 empfangen wird,
greift die Steuerungeinheit 103, 222 auf die Näherungsta
bellen 136, 228 für den Reziprokwert oder die reziproke Qua
dratwurzel zu, um einen genäherten Reziprokwert zu erhalten
402. Wenn zum Beispiel ein Befehl empfangen wird, um 1 durch
0,9 zu teilen, würde die Steuerungeinheit 130, 222 unter
Verwendung des Divisors als Index auf die Tabelle 136, 228
zugreifen, um den Wert 1,11 auszulesen.
Als nächstes ist die Prozedur wirksam, um n Iterationen des
Newton-Raphson-Verfahrens durchzuführen 404, um die Genauig
keit des Reziprokwertes zu verbessern. Diese n Iterationen
verwenden eine herkömmliche Form des Newton-Raphson-Verfah
rens, die Fachleuten bekannt ist. Die Verbesserung der Ge
nauigkeit des Reziprokwertes konvergiert unter Verwendung
des Newton-Raphson-Verfahrens geometrisch. Sobald die ersten
n Iterationen des Newton-Raphson-Verfahrens durchgeführt
wurden, wird die letzte oder (n + 1)-te Iteration unter Ver
wendung eines modifizierten Newton-Raphson-Verfahrens aus
geführt 406. Diese letzte Operation ist direkt wirksam, um
das Ergebnis zu erzeugen, das heißt, den Wert des Quotienten
oder der Quadratwurzel.
Der Vorteil der Erfindung besteht darin, daß die letzte Ope
ration wirksam ist, um zwei Zahlen mit halber Genauigkeit zu
multiplizieren, wohingegen die herkömmliche Technik es er
fordern würde, die Multiplikation von zwei Zahlen mit voll
ständiger Genauigkeit als Trennungsschritt nach der letzten
Iteration des Newton-Raphson-Verfahrens durchzuführen, das
in dem herkömmlichen Fall lediglich den Reziprokwert
schafft.
Die durch die Erfindung verwendete Prozedur, um einen Quo
tienten oder eine Quadratwurzel zu erhalten, enthält ver
schiedene Kombinationen von Genauigkeiten der Multiplika
tionsoperationen. Einige dieser Kombinationen der Genauig
keiten sind in Tabelle 3 dargestellt.
Tabelle 3
In der Tabelle 3 werden folgende Bezeichnungen verwendet. A
und B sind Zahlen mit vollständiger Genauigkeit mit 2N Stel
len, während a und b Zahlen mit halber Genauigkeit mit N
Stellen sind. Der Index (kd) zeigt die Anzahl (k) von Wör
tern mit halber Genauigkeit in dem Ergebnis an, wobei (d)
die Hardwaregenauigkeit bezeichnet. Vd kann zum Beispiel
hardwaremäßig berechnet sein, und U2d kann hardwaremäßig er
hältlich sein, aber wenn dies nicht der Fall ist, kann eine
Software (unten beschrieben) eine Einzel-Einzel Darstellung
verwenden, um das gleiche zu erzeugen. Die Aufwandsab
schätzungen, die in Tabelle 3 enthalten sind, sind für Ope
rationen mit doppelter Genauigkeit, die Ergebnisse mit vier
facher Genauigkeit, die hardwaremäßig (Qh) und softwaremäßig
(Qs) erhalten wurden, zurückgeben. Zusätzlich sind die Auf
wandsabschätzungen für herkömmliche Operationen mit mehr
facher Genauigkeit bis zu einigen hundert Stellen (C) und
für die schnelle Fouriertransformationsmultiplikation für
Zahlen mit mehr als einigen hundert Stellen (F) angegeben.
Der relative Aufwand ist relativ zu einer Halbgenauigkeit
mal Halbgenauigkeits-Multiplikation, von der angenommen
wird, während einer Zeiteinheit stattzufinden.
Die Operationen, die dem Divisions- und Quadratwurzel-Mikro
code 134, 226 zugeordnet sind, werden im Folgenden getrennt
beschrieben. Der Divisions-Mikrocode wird ausgeführt, um
einen Divisions-Befehl auszuführen, während der Quadrat
wurzel-Mikrocode ausgeführt wird, um einen Quadratwurzel-Be
fehl durchzuführen.
Die durch den Divisions-Mikrocode durchgeführten Operationen
werden im Folgenden in Fig. 5 beschrieben, die ein Flußdia
gramm der detaillierten Operationen darstellt, die durch den
Divisions-Mikrocode ausgeführt werden. Der Division-Mikro
code schließt sowohl das herkömmliche Newton-Raphson-Ver
fahren und das modifizierte Newton-Raphson-Verfahren ein, um
die Vorteile der Erfindung zu erzeugen.
Um eine Division durchzuführen, bestimmt das Newton-Raphson-
Verfahren zuerst einen Reziprokwert des Divisors und dann
wird der sich ergebende Reziprokwert mit dem Dividenden
multipliziert. Das Divisionsverfahren kann durch die folgen
de Gleichung dargestellt werden.
Im allgemeinen kann jede Iteration für den Reziprokwert des
Wertes (A) gemäß dem Newton-Raphson-Verfahren durch die
folgende Gleichung ausgedrückt werden.
xn+1 = xn+xn(1-Axn)
Die ersten n Iterationen (d. h. alle außer der letzten Ite
ration) einer Berechnung mit hoher Genauigkeit werden unter
Verwendung der obigen Gleichung durchgeführt 404, wie es
herkömmlich gemacht wird. Jede Iteration schließt folgende
Operationen ein: Erhalten 502 eines anfänglichen Schätzwer
tes für einen Reziprokwert des Divisors gemäß einer Rezi
prokwerttabelle, wie sie in Tabelle 1 gezeigt ist, Bestimmen 504
eines Restfehlers für den Schätzwert und Erhöhen 506 der
Genauigkeit des Schätzwertes auf der Grundlage des Restfeh
lers und des vorhandenen Schätzwertes.
Die Anzahl der erforderlichen Iterationen, um das Ergebnis
mit einer bestimmten Genauigkeit zu erzeugen, hängt von der
Genauigkeit des anfänglichen Schätzwertes ab. Wenn der an
fängliche Schätzwert aus der Reziprokwerttabelle zum Bei
spiel auf 8-Bits genau ist und das Ergebnis 128 Bits sein
soll, dann ist eine Gesamtheit von vier Iterationen notwen
dig. In diesem Fall verwenden die ersten drei (d. h. n) Ite
rationen das herkömmliche Newton-Raphson-Verfahren und die
letzte und vierte Iteration verwendet das modifizierte New
ton-Raphson-Verfahren. Nachdem sich die Genauigkeit bei je
der Iteration verdoppelt, ist dann, wenn die Genauigkeit als
größer oder gleich N-Bits festgestellt wird 508, nur eine
weitere Iteration notwendig, um ein Ergebnis mit einer Ge
nauigkeit von 2N-Bits zu erhalten. Mit Bezug auf das obige
Beispiel können die Iterationen des herkömmlichen Newton-
Raphson-Verfahrens eingestellt werden, wenn die Genauigkeit
des Schätzwertes gleich 64 Bits ist oder diese überschrei
tet.
Solange die Näherung ungenauer ist als das Basiszahlenformat
(d. h. < N) verwenden frühe Iterationen bevorzugterweise die
Hardware-Addition und -Multiplikation. Bei jeder Iteration
nach dieser Genauigkeit wird die Anzahl der übertragenen
Stellen verdoppelt, um mit der Genauigkeit der Näherung
übereinzustimmen, siehe Bailey, "A Portable High Performance
Multiprecision Package", RNR Technical Report RNR-90-022,
NAS Applied Research Branch, NASA Ames Research Center,
Moffett Field, Kalifornien, Mai 1992.
Die Erfindung modifiziert das herkömmliche Newton-Raphson-
Verfahren durch Durchführen der Multiplikation mit dem Wert
(B) vor der letzten Iteration ((n+1)-te Iteration) bei der
Bestimmung des Reziprokwertes des Wertes (A). Die folgenden
Gleichungen zeigen, wie die letzte Iteration für die Rezi
prokwertberechnung durch das bevorzugte Ausführungsbeispiel
der Erfindung modifiziert ist.
Herkömmlicherweise kann die letzte Iteration wie folgt aus
gedrückt werden.
xn+1 = xn+xn(1-Axn)
Zu diesem Zeitpunkt, bevor die letzte Iteration ausgeführt
wird, wie es herkömmlicherweise gemacht würde, wird die
letzte Iteration mit dem Wert (B) multipliziert. Die letzte
Iteration kann dann wie folgt ausgedrückt werden.
Bxn+1 = Bxn+Bxn(1-Axn)
Danach wird die obige Gleichung durch Hineinziehen des
Wertes (B) in die Klammer vereinfacht. Als ein Ergebnis kann
die obige Gleichung wie folgt geschrieben werden.
Bxn+1 = Bxn+xn(B-A(Bxn))
Die obige Gleichung kann durch Zuordnen von yn=Bxn weiter
vereinfacht werden. Die abschließende Iteration nach New
ton-Raphson für die Division gemäß der Erfindung kann dann
durch die folgende Gleichung ausgedrückt werden.
yn+1 = yn+xn(B-Ayn)
Es ist wichtig, den Multiplikanden in die Klammern zu brin
gen. Das Ergebnis ist nämlich, daß der Restfehler (B-Ayn)
auf der Grundlage der Zahl, die korrigiert wird, d. h. yn,
berechnet wird. Daher wird yn+1 mit fast 2N-Bits richtig
sein, sogar wenn yn nur aus N-Bits berechnet ist.
Weiterhin ist yn+1 das erwünschte genäherte Endergebnis der
Division von B/A, das fast bis zu der Anzahl von Stellen
einer Zahl mit vollständiger Genauigkeit genau ist. Das End
ergebnis ist speziell bis auf wenige hintere Stellen (ULP =
Units in the Last Place) genau.
Die einzelnen Operationen für die abschließende Iteration
des modifizierten Newton-Raphson-Verfahrens können gemäß der
folgenden Schritte aus Tabelle 4 durchgeführt werden 406.
Tabelle 4
Bei einem verschmolzenen Multiplikations-Additions-Entwurf
(MAF) (Fig. 2) können sowohl der Schritt 2 und der Schritt
3, als auch die Schritte 4 und 5 miteinander verschmolzen
sein.
In Fig. 5 bestimmt der Schritt 1 510 einen abgeschätzten
Quotienten (yn) unter Verwendung des Schätzwertes (xn) und
des Dividenden (B). Dann bestimmen die Schritte 2 und 3 512
einen Restfehler (B-Ayn) für den abgeschätzten Quotienten.
Bei den Schritten 4 und 5 wird abschließend die Genauigkeit
des abgeschätzten Quotienten auf fast 2N-Bits erhöht 514.
Folglich liegt die einzige aufwendige Operation für die
Division, die bei der letzten Iteration notwendig ist, beim
Schritt 2, wo eine Zahl A mit vollständiger Genauigkeit mit
einer Zahl yn mit halber Genauigkeit multipliziert wird, um
ein Ergebnis mit vollständiger Genauigkeit zu erzeugen.
Folglich erreicht das modifizierte Newton-Raphson-Verfahren
erhebliche Zeiteinsparungen (der Verarbeitungszeit), weil
die aufwendige Multiplikation von zwei Zahlen mit vollstän
diger Genauigkeit (nämlich einer vollständig genauen Zahl
xn+1 multipliziert mit einer vollständig genauen Zahl B),
die herkömmlicherweise erforderlich war, vermieden wird.
Folglich beschleunigt der modifizierte Ansatz der Erfindung
die letzte Iteration um einen Faktor 10.
Die Operationen, die durch den Quadratwurzel-Mikrocode
durchgeführt werden, werden im Folgenden mit Bezug auf Fig.
6 beschrieben, die ein Flußdiagramm der detaillierten Opera
tionen ist, die durch den Quadratwurzel-Mikrocode ausgeführt
werden. Der Quadratwurzel-Mikrocode verwendet sowohl das
herkömmliche Newton-Raphson-Verfahren als auch das modifi
zierte Newton-Raphton-Verfahren, um die Vorteile der Erfin
dung zu erzeugen.
Um eine Quadratwurzel eines Wertes (A) zu bestimmen, be
stimmt das Newton-Raphson-Verfahren zuerst einen Reziprok
wert der Quadratwurzel des Wertes und der sich ergebende
Reziprokwert wird dann mit dem Wert multipliziert. Das Qua
dratwurzel-Verfahren kann durch die folgende Gleichung aus
gedrückt werden.
Die Iterationen für den Reziprokwert der Quadratwurzel des
Wertes (A) gemäß dem herkömmlichen Newton-Raphson-Verfahren
können durch die folgende Gleichung ausgedrückt werden.
Die ersten n Iterationen (d. h., alle außer der letzten Ite
ration) einer Berechnung mit hoher Genauigkeit werden unter
Verwendung der obigen Gleichung durchgeführt 404, wie es
herkömmlich gemacht wird. Die erste Iteration schließt fol
gende Operationen ein: Erhalten 602 eines anfänglichen
Schätzwertes für einen Reziprokwert der Quadratwurzel aus
der Reziprokwerttabelle, wie zum Beispiel aus der oben ge
zeigten Tabelle 2. Alle ersten n Iterationen schließen die
folgenden Operationen ein: Bestimmen 604 eines Restfehlers
für den Schätzwert und Erhöhen 606 der Genauigkeit des
Schätzwertes auf der Grundlage des Restfehlers und des vor
handenen Schätzwertes.
Wie im Fall der Division hängt die Anzahl der Iterationen,
die erforderlich ist, um das Quadratwurzelergebnis mit einer
bestimmten Genauigkeit zu erzeugen, von der Genauigkeit des
anfänglichen Schätzwertes ab. Nachdem sich die Genauigkeit
mit jeder Iteration verdoppelt, ist dann, wenn die Genauig
keit als größer oder gleich N-Bits bestimmt wird 608, ledig
lich eine weitere Iteration notwendig, um das Ergebnis mit
einer Genauigkeit von 2N-Bits zu erhalten.
Solange die Näherung ungenauer als das Basiszahlenformat
(d. h. < N) ist, verwenden die frühen Iterationen bevor
zugterweise die Hardwareaddition und -Multiplikation. Bei
jeder Iteration nach dieser Genauigkeit wird die Anzahl der
übertragenen Stellen verdoppelt, um die Genauigkeit der
Näherung anzupassen, siehe Bailey oben.
Die Erfindung modifiziert das herkömmliche Newton-Raphson-
Verfahren durch Durchführen der Multiplikation mit A vor der
letzten (n+1)-ten Iteration. Bevorzugterweise ist es die
letzte Iteration des herkömmlichen Newton-Raphson-Verfahrens
für die Reziprokwertberechnung, die durch die Erfindung mo
difiziert ist. Vor dem Durchführen der letzten Iteration
wird die letzte Iteration nämlich mit dem Wert (A) multi
pliziert. Durch die Multiplikation mit dem Wert (A) wird die
obige Gleichung für die letzte Iteration die Folgende.
Als nächstes wird der Wert (A) in die Klammern gezogen, wo
durch die Gleichung wie folgt geschrieben werden kann.
Danach kann die Gleichung durch Zuordnung von yn = Axn ver
einfacht werden. Die abschließende Iteration des Newton-
Raphson-Verfahrens für die Quadratwurzel gemäß der Erfindung
wird dann durch die folgende Gleichung ausgedrückt.
Wie im Fall der Division ist es bedeutend, den Multiplikan
den in die Klammern zu bringen. Der Effekt besteht nämlich
darin, daß der Restfehler (A-y2 n) auf der Grundlage der Zahl
die korrigiert wird, d. h. yn, berechnet wird.
Die einzelnen Operationen für die abschließende Itertion des
modifizierten Newton-Raphson-Verfahrens können dann gemäß
den folgenden Schritten der Tabelle 5 durchgeführt werden
406.
Tabelle 5
Bei einem verschmolzenen Multiplikations-Additions-Entwurf
(MAF, Fig. 2) können sowohl die Schritte 2 und 3 als auch
die Schritte 4 und 5 miteinander verschmolzen sein.
Das Ergebnis, das im Schritt 5 erzeugt wird, ist die er
wünschte Quadratwurzel, die fast so genau ist wie die Anzahl
der Stellen einer Zahl mit vollständiger Genauigkeit. Insbe
sondere ist das abschließende Ergebnis bis auf wenige hinte
re Stellen (ULP) genau.
In Fig. 6 bestimmt der Schritt 1 610 eine geschätzte Qua
dratwurzel (yn) unter Verwendung des Schätzwertes (xn) und
des Wertes (A). Dann bestimmen die Schritte 2 und 3 612
einen Restfehler (A-y2 n) für die abgeschätzte Quadratwurzel.
Abschließend wird in den Schritten 4 und 5 die Genauigkeit
der abgeschätzten Quadratwurzel auf fast 2N-Bits erhöht 614.
Die einzig notwendige aufwendige Operation für die Quadrat
wurzeloperation erfolgt folglich im Schritt 2, bei dem ein
Produkt einer Zahl mit vollständiger Genauigkeit y2 n aus
zwei Zahlen mit halber Genauigkeit erhalten wird. Daher wird
die aufwendige Multiplikation einer Zahl xn+1 mit vollstän
diger Genauigkeit mal einer Zahl A mit vollständiger Genau
igkeit, wie es herkömmlich erforderlich ist, durch die Er
findung vermieden.
Die Erfindung nimmt an, daß die Hardware sowohl alle Stellen
in einem Produkt von zwei Zahlen mit Hardwaregenauigkeit als
auch den führenden Teil einer Summe mit vierfacher Genauig
keit (z. B. 2N) bereitstellen kann. Einige existierende Com
puter haben Hardware-Befehle, die das Ergebnis mit vierfa
cher Genauigkeit (d. h. alle Stellen) der Multiplikation von
zwei doppelt genauen Zahlen zurückgeben, wohingegen andere
Computer keine solche Befehle haben. Einige Computer (z. B.
IBM S/370) haben Befehle, die den vierfach genauen Teil der
Summe von zwei Zahlen zurückgeben.
Obwohl es bevorzugt ist, daß die Hardware diese Anforderung
unterstützt, kann dann, wenn die Hardware eines Computers
nicht fähig ist, diese Anforderungen zu unterstützen, Soft
ware in Verbindung mit der Hardware verwendet werden, um
selbige bereitzustellen. Ein Beispiel eines Codes, der ver
wendet werden kann, um die Hardware zu vergrößern, um ein
vierfach genaues Ergebnis des Produkts von zwei doppelt ge
nauen Zahlen zurückzugeben, ist der Folgende. In diesem Fall
sind die Variablen als einfach genaue Zahlen gespeichert.
Der C-Programmiersprachencode zur Zurückgabe aller Bits
eines Produkts mit doppelt genauen Zahlen, die in dem Ein
fach-Einfach Format gespeichert sind, liest sich wie folgt.
Daher wird das Ergebnis als vier einfach genaue Zahlen zu
rückgegeben. Dieser Ansatz nimmt an, daß das doppelt genaue
Format mindestens zwei Stellen mehr als das Produkt von zwei
einfach genauen Zahlen enthält, eine Bedingung, die durch
IEEE-Vorschrift "Gleit-Komma" erfüllt wird.
Eine Summe kann eine sehr große Anzahl von Stellen enthal
ten, wenn sich die Exponenten erheblich voneinander unter
scheiden. Der führende vierfach genaue Teil (z. B. 2N-Bits)
des Ergebnisses wird von der Erfindung benötigt. Nachdem die
Hardware die Wiedergewinnung der führenden 2N-Bits nicht di
rekt unterstützen kann, liest sich daher ein Beispiel eines
C-Programmiersprachencodes, der verwendet werden kann, um
den führenden vierfach genauen Teil der Summe von zwei dop
pelt genauen Zahlen zurückzugeben, wie folgt.
Bei diesem Beispiel sind die höheren und niedrigeren Teile
der Eingaben in getrennten einfach genauen Wörtern gespei
chert, die hohen und niedrigen Teile werden dann addiert,
wobei der Übertrag der niedrigen Ordnung auf die höhere Ord
nung übertragen wird. Die Summe wird als vier einfach genaue
Zahlen gespeichert.
Obwohl die Erfindung Zugriff auf alle Stellen in einem Pro
dukt von zwei Hardware-genauen Zahlen als auch auf den füh
renden 2N-Bits (z. B. vierfach) genauen Teil einer Summe er
fordert, erfordert die Erfindung keine spezielle Hardware
(nach der Multiplizierer- und Addierer-Subtrahierer-Einheit)
innerhalb der Gleit-Komma-Arithmetikeinheit, weil die Soft
ware die Defizite der Hardware ausgleichen kann. Die Ver
wendung einer solchen Software wird jedoch das Verhalten
verschlechtern.
Die Erfindung ist ebenfalls unabhängig vom Rundungsmodus.
Nichtsdestotrotz gibt es, als Hintergrundinformation, vier
gut bekannte Rundungsmoden. Der erste Modus wird als
"Runde-auf-das-nächste" bezeichnet, der die nächstliegende,
darstellbare Zahl in der Mantisse auswählt. Die zweite
Möglichkeit ist ein "Runde-auf-Null", der die Teil-Bits, die
nicht in die Mantisse passen, löscht. Diese zweite Möglich
keit ist allgemein als Abschneiden bekannt. Ein dritter Run
dungsmodus ist die "Runde-auf-Positive große Größe", was
bedeutet, daß das Runden durch Runden auf die nächst
größere, darstellbare Zahl erfolgt. Die vierte Möglichkeit
ist die "Runde-auf-Negative große Zahl", was auf die nächst
kleinere, darstellbare Zahl rundet. In der Praxis ist der
Runde-aufnächsten-Modus der am schwierigsten ausführbare.
Eine Multiplikations-Additions-Operation kann weiterhin als
eine Multiplikations-Operation gefolgt durch eine Additions-
Operation, der eine Rundungsoperation zugeordnet ist, durch
geführt werden. Wenn verschmolzene Multiplikations-Addi
tions-Operationen durch die Gleit-Komma-Arithmetikeinheit
unterstützt werden, ist alternativ nur eine Rundung not
wendig.
Die Divisions- und Quadratwurzel-Prozeduren, die oben be
schrieben wurden, sind auf verschiedene Arten ausführbar.
Eine Art ist es, die Prozeduren in einem Mikrocode auszu
führen, wie es oben beschrieben wurde. Wenn zum Beispiel ein
Divisions- oder ein Quadratwurzel-Befehl ausgeführt werden
soll, greift eine Steuerungseinheit auf den Divisions- und
Quadratwurzel-Mikrocode zu, der innerhalb der Gleit-Komma-
Arithmetikeinheit gespeichert ist. Ein weiterer Weg ist es,
einen Compiler zu haben, der den Objektcode direkt unter
Verwendung der gleichen Prozeduren erzeugt. Beim Compelieren
des Codes würde zum Beispiel irgendeine Abfrage einer Divi
dierer- oder Quadratwurzel-Operation durch die geeignete
Folge von Additions- und Multiplikations-Operationen gemäß
der herkömmlichen und modifizierten Form des Newton-Raph
son-Verfahrens ersetzt.
Die Erfindung schafft eine verbesserte Technik zum Erhalten
von sehr genauen Ergebnissen von Divisions- und Quadrat
wurzel-Operationen, die mit einer erheblich höhere Ge
schwindigkeit betrieben werden als beim herkömmlichen An
satz. Dieser Erhöhung der Berechnungsgeschwindigkeit liegt
hauptsächlich die Tatsache zugrunde, daß es die Erfindung
einer Gleit-Komma-Einheit ermöglicht, ein Ergebnis mit einer
Genauigkeit von fast 2N-Bits zu erzeugen, ohne irgendeine
2N-mal-2N Bit-Multiplikation durchführen zu müssen. Folglich
macht die Erfindung die Gleit-Komma-Hardware praktischer,
weniger komplex und weniger teuer als herkömmlicherweise
erforderte, weil ein 2N-mal-2N Bit breiter Multiplizierer
durch die Erfindung nicht erforderlich ist.
Claims (9)
1. Gleit-Komma-Arithmetikeinheit (100; 200) zum Durch
führen einer Quadratwurzel-Operation eines Wertes, um
eine geschätzte Quadratwurzel zu erzeugen, mit:
einem Speichergerät (102; 202) mit mehreren Anschlüssen zum Speichern von Daten;
einer Arithmetikeinrichtung (104; 118; 204; 208) zum Multiplizieren von zwei Zahlen, die jeweils in dem Speichergerät (102; 202) mit mehreren Anschlüssen ge speichert sind, um ein Produkt zu erzeugen, und zum Addieren von zwei Zahlen, die jeweils in dem Speicher gerät (102; 202) mit mehreren Anschlüssen gespeichert sind, um eine Summe zu erzeugen;
einer Reziprokwertnäherungseinrichtung (136; 228) zum Zuführen einer anfänglichen Näherung für einen Rezi prokwert der Quadratwurzel des Wertes zu dem Speicher gerät (102; 202) mit mehreren Anschlüssen;
einer Steuerungseinheit (130; 222), die durch einen Quadratwurzel-Mikrocode programmiert ist, zur Steuerung der Gleit-Komma-Arithmetikeinheit (100; 200); und
einem Quadratwurzel-Mikrocode (134; 226), der die ite rativen Prozeduren zum Durchführen einer Quadratwur zel-Operation enthält, wobei der Quadratwurzel-Mikro code folgende Merkmale aufweist:
eine Prozedur (602) zum Erhalt einer anfänglichen Nä herung für einen Reziprokwert für die Quadratwurzel des Wertes;
eine Prozedur (604) zur Veranlassung, daß ein erster Restfehler für die Näherung des Reziprokwertes der Quadratwurzel bestimmt wird;
eine Prozedur (606) zur Veranlassung, daß die Genauigkeit der Näherung für den Reziprokwert der Quadratwurzel unter Verwendung des ersten Restfehlers und der vorhandenen Näherung für den Reziprokwert der Quadratwurzel erhöht wird;
und die dadurch gekennzeichnet ist, daß
der Quadratwurzel-Mikrocode (134; 226), der die ite rativen Prozeduren zum Durchführen einer Quadratwur zel-Operation enthält, auch die folgenden Merkmale aufweist:
eine Prozedur (610) zur Veranlassung, daß eine abge schätzte Quadratwurzel unter Verwendung der revi dierten Näherung für den Reziprokwert der Quadrat wurzel und des Wertes bestimmt wird;
eine Prozedur (612) zur Veranlassung, daß ein zweiter Restfehler für die abgeschätzte Quadratwurzel unter Verwendung des Wertes und der abgeschätzten Quadrat wurzel bestimmt wird; und
eine Prozedur (614) zur Veranlassung, daß die Genauigkeit der abgeschätzten Quadratwurzel unter Verwendung der abgeschätzten Quadratwurzel, der revidierten Näherung für den Reziprokwert der Quadratwurzel und des zweiten Restfehlers für die abgeschätzte Quadratwurzel erhöht wird.
einem Speichergerät (102; 202) mit mehreren Anschlüssen zum Speichern von Daten;
einer Arithmetikeinrichtung (104; 118; 204; 208) zum Multiplizieren von zwei Zahlen, die jeweils in dem Speichergerät (102; 202) mit mehreren Anschlüssen ge speichert sind, um ein Produkt zu erzeugen, und zum Addieren von zwei Zahlen, die jeweils in dem Speicher gerät (102; 202) mit mehreren Anschlüssen gespeichert sind, um eine Summe zu erzeugen;
einer Reziprokwertnäherungseinrichtung (136; 228) zum Zuführen einer anfänglichen Näherung für einen Rezi prokwert der Quadratwurzel des Wertes zu dem Speicher gerät (102; 202) mit mehreren Anschlüssen;
einer Steuerungseinheit (130; 222), die durch einen Quadratwurzel-Mikrocode programmiert ist, zur Steuerung der Gleit-Komma-Arithmetikeinheit (100; 200); und
einem Quadratwurzel-Mikrocode (134; 226), der die ite rativen Prozeduren zum Durchführen einer Quadratwur zel-Operation enthält, wobei der Quadratwurzel-Mikro code folgende Merkmale aufweist:
eine Prozedur (602) zum Erhalt einer anfänglichen Nä herung für einen Reziprokwert für die Quadratwurzel des Wertes;
eine Prozedur (604) zur Veranlassung, daß ein erster Restfehler für die Näherung des Reziprokwertes der Quadratwurzel bestimmt wird;
eine Prozedur (606) zur Veranlassung, daß die Genauigkeit der Näherung für den Reziprokwert der Quadratwurzel unter Verwendung des ersten Restfehlers und der vorhandenen Näherung für den Reziprokwert der Quadratwurzel erhöht wird;
und die dadurch gekennzeichnet ist, daß
der Quadratwurzel-Mikrocode (134; 226), der die ite rativen Prozeduren zum Durchführen einer Quadratwur zel-Operation enthält, auch die folgenden Merkmale aufweist:
eine Prozedur (610) zur Veranlassung, daß eine abge schätzte Quadratwurzel unter Verwendung der revi dierten Näherung für den Reziprokwert der Quadrat wurzel und des Wertes bestimmt wird;
eine Prozedur (612) zur Veranlassung, daß ein zweiter Restfehler für die abgeschätzte Quadratwurzel unter Verwendung des Wertes und der abgeschätzten Quadrat wurzel bestimmt wird; und
eine Prozedur (614) zur Veranlassung, daß die Genauigkeit der abgeschätzten Quadratwurzel unter Verwendung der abgeschätzten Quadratwurzel, der revidierten Näherung für den Reziprokwert der Quadratwurzel und des zweiten Restfehlers für die abgeschätzte Quadratwurzel erhöht wird.
2. Gleit-Komma-Arithmetikeinheit (100; 200) zum Durch
führen einer Divisions-Operation eines Wertes, um einen
Dividenden durch einen Divisor zu teilen, um einen
geschätzten Quotienten zu erzeugen, mit:
einem Speichergerät (102; 202) mit mehreren Anschlüssen zum Speichern von Daten;
einer Arithmetikeinrichtung (104; 118; 204; 208) zum Multiplizieren von zwei Zahlen, die jeweils in dem Speichergerät (102; 202) mit mehreren Anschlüssen ge speichert sind, um ein Produkt zu erzeugen, und zum Addieren von zwei Zahlen, die jeweils in dem Speicher gerät (102; 202) mit mehreren Anschlüssen gespeichert sind, um eine Summe zu erzeugen;
einer Reziprokwertnäherungseinrichtung (136; 228) zum Zuführen einer anfänglichen Näherung für einen Rezi prokwert des Divisors zu dem Speichergerät (102; 202) mit mehreren Anschlüssen;
einer Steuerungseinheit (130; 222), die durch einen Divisions-Mikrocode programmiert ist, zur Steuerung der Gleit-Komma-Arithmetikeinheit (100; 200); und
einem Divisions-Mikrocode (134; 226), der die iterati ven Prozeduren zum Durchführen einer Divisions-Opera tion enthält, wobei der Divisions-Mikrocode (134; 226) folgende Merkmale aufweist:
eine Prozedur (502) zum Erhalt einer anfänglichen Nä herung für einen Reziprokwert des Divisors;
eine Prozedur (504) zur Veranlassung, daß ein erster Restfehler für die Näherung des Reziprokwertes des Divisors bestimmt wird;
eine Prozedur (506) zur Veranlassung, daß die Genauigkeit der Näherung für den Reziprokwert des Divisors aufgrund des ersten Restfehlers und der vorhandenen Näherung für den Reziprokwert des Divisors erhöht wird;
und die dadurch gekennzeichnet ist, daß
der Divisions-Mikrocode (134; 226), der die iterativen Prozeduren zum Durchführen einer Divisions-Operation enthält, auch die folgenden Merkmale aufweist:
eine Prozedur (510) zur Veranlassung, daß ein abge schätzter Quotient unter Verwendung der revidierten Näherung für den Reziprokwert des Divisors und des Dividenden bestimmt wird;
eine Prozedur (512) zur Veranlassung, daß ein zweiter Restfehler für den abgeschätzten Quotienten unter Verwendung des Dividenden, des Divisors und des abge schätzten Quotienten bestimmt wird; und
eine Prozedur (514) zur Veranlassung, daß die Genauigkeit des abgeschätzten Quotienten unter Verwendung des abgeschätzten Quotienten, der revidierten Näherung für den Reziprokwert des Divisors und des zweiten Restfehlers für den abgeschätzten Quotienten erhöht wird.
einem Speichergerät (102; 202) mit mehreren Anschlüssen zum Speichern von Daten;
einer Arithmetikeinrichtung (104; 118; 204; 208) zum Multiplizieren von zwei Zahlen, die jeweils in dem Speichergerät (102; 202) mit mehreren Anschlüssen ge speichert sind, um ein Produkt zu erzeugen, und zum Addieren von zwei Zahlen, die jeweils in dem Speicher gerät (102; 202) mit mehreren Anschlüssen gespeichert sind, um eine Summe zu erzeugen;
einer Reziprokwertnäherungseinrichtung (136; 228) zum Zuführen einer anfänglichen Näherung für einen Rezi prokwert des Divisors zu dem Speichergerät (102; 202) mit mehreren Anschlüssen;
einer Steuerungseinheit (130; 222), die durch einen Divisions-Mikrocode programmiert ist, zur Steuerung der Gleit-Komma-Arithmetikeinheit (100; 200); und
einem Divisions-Mikrocode (134; 226), der die iterati ven Prozeduren zum Durchführen einer Divisions-Opera tion enthält, wobei der Divisions-Mikrocode (134; 226) folgende Merkmale aufweist:
eine Prozedur (502) zum Erhalt einer anfänglichen Nä herung für einen Reziprokwert des Divisors;
eine Prozedur (504) zur Veranlassung, daß ein erster Restfehler für die Näherung des Reziprokwertes des Divisors bestimmt wird;
eine Prozedur (506) zur Veranlassung, daß die Genauigkeit der Näherung für den Reziprokwert des Divisors aufgrund des ersten Restfehlers und der vorhandenen Näherung für den Reziprokwert des Divisors erhöht wird;
und die dadurch gekennzeichnet ist, daß
der Divisions-Mikrocode (134; 226), der die iterativen Prozeduren zum Durchführen einer Divisions-Operation enthält, auch die folgenden Merkmale aufweist:
eine Prozedur (510) zur Veranlassung, daß ein abge schätzter Quotient unter Verwendung der revidierten Näherung für den Reziprokwert des Divisors und des Dividenden bestimmt wird;
eine Prozedur (512) zur Veranlassung, daß ein zweiter Restfehler für den abgeschätzten Quotienten unter Verwendung des Dividenden, des Divisors und des abge schätzten Quotienten bestimmt wird; und
eine Prozedur (514) zur Veranlassung, daß die Genauigkeit des abgeschätzten Quotienten unter Verwendung des abgeschätzten Quotienten, der revidierten Näherung für den Reziprokwert des Divisors und des zweiten Restfehlers für den abgeschätzten Quotienten erhöht wird.
3. Gleit-Komma-Arithmetikeinheit (100) nach Anspruch 1
oder 2, bei der das Speichergerät (102) mit mehreren
Anschlüssen Daten speichert, die N-Bits breit sind, und
bei dem die arithmetische Einrichtung folgende Merkmale
aufweist:
einen Multiplizierer (104), der wirksam mit dem Spei chergerät (102) mit mehreren Anschlüssen verbunden ist, zum Multiplizieren von zwei N-Bit-Zahlen, um ein Pro dukt zu erzeugen;
einen ersten Rundungsaufwärtszähler (108), der mit dem Multiplizierer (104) wirksam verbunden ist, zum Runden des Produkts auf 2N-Bits;
einen ersten Zwischenspeicher (110) für einen hohen Ab schnitt, der wirksam mit dem ersten Rundungsaufwärts zähler (108) verbunden ist, zum Speichern der ersten N-Bits des Produkts;
einen ersten Zwischenspeicher (112) für den niedrigen Abschnitt, der wirksam mit dem ersten Rundungsaufwärts zähler (108) verbunden ist, zum Speichern der zweiten N-Bits des Produkts; und
einen ersten Multiplexer (114), der wirksam mit den Zwischenspeichern (110, 112) für den hohen und den nie drigen Abschnitt verbunden ist, zum Auswählen eines er sten Zwischenspeichers (110) für einen hohen Abschnitt oder eines ersten Zwischenspeichers (112) für einen niedrigen Abschnitt zum Speichern der ersten oder zwei ten N-Bits des Produkts in dem Speichergerät (102) mit mehreren Anschlüssen.
einen Multiplizierer (104), der wirksam mit dem Spei chergerät (102) mit mehreren Anschlüssen verbunden ist, zum Multiplizieren von zwei N-Bit-Zahlen, um ein Pro dukt zu erzeugen;
einen ersten Rundungsaufwärtszähler (108), der mit dem Multiplizierer (104) wirksam verbunden ist, zum Runden des Produkts auf 2N-Bits;
einen ersten Zwischenspeicher (110) für einen hohen Ab schnitt, der wirksam mit dem ersten Rundungsaufwärts zähler (108) verbunden ist, zum Speichern der ersten N-Bits des Produkts;
einen ersten Zwischenspeicher (112) für den niedrigen Abschnitt, der wirksam mit dem ersten Rundungsaufwärts zähler (108) verbunden ist, zum Speichern der zweiten N-Bits des Produkts; und
einen ersten Multiplexer (114), der wirksam mit den Zwischenspeichern (110, 112) für den hohen und den nie drigen Abschnitt verbunden ist, zum Auswählen eines er sten Zwischenspeichers (110) für einen hohen Abschnitt oder eines ersten Zwischenspeichers (112) für einen niedrigen Abschnitt zum Speichern der ersten oder zwei ten N-Bits des Produkts in dem Speichergerät (102) mit mehreren Anschlüssen.
4. Gleit-Komma-Arithmetikeinheit (100) nach Anspruch 1, 2
oder 3, bei der die Arithmetikeinrichtung folgende
Merkmale aufweist:
einen Synchronisationsschieber (116), der wirksam mit dem Speichergerät (102) mit mehreren Anschlüssen ver bunden ist, zum Synchronisieren des ersten und zweiten N-Bit Summanden, der von dem Speichergerät (102) mit mehreren Anschlüssen empfangen wird;
einen Addierer (118), der wirksam mit dem Synchronisa tionsschieber (116) verbunden ist, zum Addieren des er sten und zweiten N-Bit Summanden, um die Summe zu er zeugen;
einen zweiten Rundungsaufwärtszähler (122), der wirksam mit dem Addierer (118) verbunden ist, zum Runden der Summe auf 2N-Bits;
einen zweiten Zwischenspeicher (124) für den hohen Ab schnitt, der wirksam mit dem zweiten Rundungsaufwärts zähler (122) verbunden ist, zum Speichern der ersten N-Bits der Summe;
einen zweiten Zwischenspeicher (126) für den niedrigen Abschnitt, der wirksam mit dem zweiten Rundungsauf wärtszähler (122) verbunden ist, zum Speichern der zweiten N-Bits der Summe; und
einen zweiten Multiplexer (128), der wirksam mit den zweiten Zwischenspeichern (124, 126) für den hohen und niederen Abschnitt verbunden ist, zum Auswählen des zweiten Zwischenspeichers (124) für den hohen Abschnitt oder des zweiten Zwischenspeichers (126) für den nied rigen Abschnitt, zum Speichern der ersten oder zweiten N-Bits der Summe in dem Speichergerät (102) mit mehre ren Anschlüssen.
einen Synchronisationsschieber (116), der wirksam mit dem Speichergerät (102) mit mehreren Anschlüssen ver bunden ist, zum Synchronisieren des ersten und zweiten N-Bit Summanden, der von dem Speichergerät (102) mit mehreren Anschlüssen empfangen wird;
einen Addierer (118), der wirksam mit dem Synchronisa tionsschieber (116) verbunden ist, zum Addieren des er sten und zweiten N-Bit Summanden, um die Summe zu er zeugen;
einen zweiten Rundungsaufwärtszähler (122), der wirksam mit dem Addierer (118) verbunden ist, zum Runden der Summe auf 2N-Bits;
einen zweiten Zwischenspeicher (124) für den hohen Ab schnitt, der wirksam mit dem zweiten Rundungsaufwärts zähler (122) verbunden ist, zum Speichern der ersten N-Bits der Summe;
einen zweiten Zwischenspeicher (126) für den niedrigen Abschnitt, der wirksam mit dem zweiten Rundungsauf wärtszähler (122) verbunden ist, zum Speichern der zweiten N-Bits der Summe; und
einen zweiten Multiplexer (128), der wirksam mit den zweiten Zwischenspeichern (124, 126) für den hohen und niederen Abschnitt verbunden ist, zum Auswählen des zweiten Zwischenspeichers (124) für den hohen Abschnitt oder des zweiten Zwischenspeichers (126) für den nied rigen Abschnitt, zum Speichern der ersten oder zweiten N-Bits der Summe in dem Speichergerät (102) mit mehre ren Anschlüssen.
5. Gleit-Komma-Arithmetikeinheit (200) nach Anspruch 1
oder 2, bei der das Speichergerät (202) mit mehreren
Anschlüssen Daten speichert, die N-Bits breit sind, und
bei der die Arithmetikeinrichtung folgende Merkmale
aufweist:
einen Multiplizierer (204), der wirksam mit dem Spei chergerät (202) mit mehreren Anschlüssen verbunden ist, zum Multiplizieren von zwei Zahlen, um das Produkt zu erzeugen;
einen Synchronisationsschieber (206), der wirksam mit dem Speichergerät (202) mit mehreren Anschlüssen ver bunden ist, zum Synchronisieren eines Summanden gemäß dem Exponenten des Produkts;
einen Addierer (208), der wirksam mit dem Multiplizie rer (204) und dem Synchronisationsschieber (206) ver bunden ist, zum Addieren des Produkts und des synchro nisierten Summanden, um ein Ergebnis zu erzeugen;
einen Rundungsaufwärtszähler (214), der wirksam mit dem Addierer (208) verbunden ist, zum Runden des Ergebnis ses auf 2N-Bits;
einen Zwischenspeicher (216) für den hohen Abschnitt, der wirksam mit dem Rundungsaufwärtszähler (214) ver bunden ist, um die ersten N-Bits des Ergebnisses zu speichern;
einen Zwischenspeicher (218) für den niedrigen Ab schnitt, der wirksam mit dem Rundungsaufwärtszähler (214) verbunden ist, zum Speichern der zweiten N-Bits des Ergebnisses; und
einen Multiplexer (220), der wirksam mit den Zwischen speichern (216, 218) für den hohen und den niedrigen Abschnitt verbunden ist, zum Auswählen des Zwischen speichers (216) für den hohen Abschnitt oder des Zwi schenspeichers (218) für den niedrigen Abschnitt zum Speichern der ersten oder zweiten N-Bits des Ergebnis ses in dem Speichergerät (202) mit mehreren Anschlüs sen.
einen Multiplizierer (204), der wirksam mit dem Spei chergerät (202) mit mehreren Anschlüssen verbunden ist, zum Multiplizieren von zwei Zahlen, um das Produkt zu erzeugen;
einen Synchronisationsschieber (206), der wirksam mit dem Speichergerät (202) mit mehreren Anschlüssen ver bunden ist, zum Synchronisieren eines Summanden gemäß dem Exponenten des Produkts;
einen Addierer (208), der wirksam mit dem Multiplizie rer (204) und dem Synchronisationsschieber (206) ver bunden ist, zum Addieren des Produkts und des synchro nisierten Summanden, um ein Ergebnis zu erzeugen;
einen Rundungsaufwärtszähler (214), der wirksam mit dem Addierer (208) verbunden ist, zum Runden des Ergebnis ses auf 2N-Bits;
einen Zwischenspeicher (216) für den hohen Abschnitt, der wirksam mit dem Rundungsaufwärtszähler (214) ver bunden ist, um die ersten N-Bits des Ergebnisses zu speichern;
einen Zwischenspeicher (218) für den niedrigen Ab schnitt, der wirksam mit dem Rundungsaufwärtszähler (214) verbunden ist, zum Speichern der zweiten N-Bits des Ergebnisses; und
einen Multiplexer (220), der wirksam mit den Zwischen speichern (216, 218) für den hohen und den niedrigen Abschnitt verbunden ist, zum Auswählen des Zwischen speichers (216) für den hohen Abschnitt oder des Zwi schenspeichers (218) für den niedrigen Abschnitt zum Speichern der ersten oder zweiten N-Bits des Ergebnis ses in dem Speichergerät (202) mit mehreren Anschlüs sen.
6. Gleit-Komma-Arithmetikeinheit (100; 200) nach einem der
Ansprüche 1 bis 5, bei dem der Divisions- und Quadrat
wurzel-Mikrocode (134; 226) folgende Merkmale aufweist:
eine Prozedur (404) zum Durchführen von n Iterationen des Newton-Raphson-Verfahrens, um die Genauigkeit der Näherung des Reziprokwertes geometrisch zu verbessern; und
eine Prozedur (406) zum Durchführen einer zusätzlichen Iteration unter Verwendung eines modifizierten Newton- Raphson-Verfahrens, um das abschließende Näherungser gebnis zu erzeugen.
eine Prozedur (404) zum Durchführen von n Iterationen des Newton-Raphson-Verfahrens, um die Genauigkeit der Näherung des Reziprokwertes geometrisch zu verbessern; und
eine Prozedur (406) zum Durchführen einer zusätzlichen Iteration unter Verwendung eines modifizierten Newton- Raphson-Verfahrens, um das abschließende Näherungser gebnis zu erzeugen.
7. Verfahren zur Durchführung einer Gleit-Komma-Division
eines Dividenden durch einen Divisor zur Erzeugung eines
Quotienten mit einer Mantisse mit einer Genauigkeit von
nahezu 2N-Bits, wobei das Verfahren in einer Gleit-
Komma-Arithmetikeinheit durchgeführt wird und dabei
zunächst folgende Schritte aufweist:
- (a) Erhalt (502) eines derzeitigen Schätzwertes eines Reziprokwertes des Divisors;
- (b) Erhöhung (506) der Genauigkeit des derzeitigen Schätzwertes des Reziprokwertes durch Berechnung (504) eines Fehlerparameters und Berechnung eines revidierten Schätzwertes des Reziprokwertes aus dem Fehlerparameter und dem derzeitigen Schätzwert des Reziprokwertes;
- (c) Wiederholung (508) des Schrittes (b) bis die
Genauigkeit des revidierten Schätzwertes des
Reziprokwertes mindestens im wesentlichen nahe an
N-Bits kommt;
und dadurch gekennzeichnet ist, daß das Verfahren im weiteren noch die folgenden Schritte aufweist: - (d) Bestimmung (510) eines anfänglichen Schätzwertes des Quotienten aus dem revidierten Schätzwert des Rezi prokwertes mal dem Dividenden;
- (e) Bestimmung (512) eines Restfehlers für den anfäng lichen Schätzwert des Quotienten auf der Grundlage des anfänglichen Schätzwertes des Quotienten; und
- (f) Bestimmung (514) des Quotienten aus dem anfänglichen Schätzwert des Quotienten plus dem revidierten Schätzwert des Reziprokwertes mal dem Restfehler.
8. Verfahren zur Durchführung der Gleit-Komma-Quadratwurzel
operation eines Wertes, um eine Quadratwurzel mit einer
Mantisse mit einer Genauigkeit von fast 2N-Bits zu er
zeugen, wobei das Verfahren in einer Gleit-Komma-Arithme
tikeinheit ausgeführt wird und dabei zunächst folgende
Schritte aufweist:
- (a) Erhalt (602) eines derzeitigen Schätzwertes eines Reziprokwertes der Quadratwurzel;
- (b) Erhöhung (606) der Genauigkeit des derzeitigen Schätzwertes des Reziprokwertes durch Berechnung (604) eines Fehlerparameters und Berechnen eines re vidierten Schätzwertes des Reziprokwertes aus dem Fehlerparameter und dem derzeitigen Schätzwert des Reziprokwertes;
- (c) Wiederholung (608) des Schrittes (b) bis die
Genauigkeit des revidierten Schätzwertes des
Reziprokwertes mindestens im wesentlichen nahe an
N-Bits kommt;
und dadurch gekennzeichnet ist, daß das Verfahren im weiteren noch die folgenden Schritte aufweist: - (d) Bestimmung (610) eines anfänglichen Schätzwertes der Quadratwurzel aus dem revidierten Schätzwert des Re ziprokwertes mal dem Wert;
- (e) Bestimmung (612) eines Restfehlers als dem anfäng lichen Schätzwert der Quadratwurzel auf der Grundla ge des Wertes und des anfänglichen Schätzwertes der Quadratwurzel; und
- (f) Bestimmung (614) der Quadratwurzel aus dem anfäng lichen Schätzwert der Quadratwurzel plus einer Häl fte des Produkts des revidierten Schätzwertes des Reziprokwertes mal dem Restfehler.
9. Gleit-Komma-Arithmetikeinheit zur Durchführung des Ver
fahrens gemäß Anspruch 7 oder 8, mit einer Additionsein
heit (118; 208), einer Multiplikationseinheit (102; 204)
und einer Steuerungseinheit (130; 222), die eine itera
tive Newton-Raphson-Routine verwendet, um jeweils einen
abgeschätzten Reziprokwert unter Verwendung der Addi
tionseinheit (118; 208) und der Multiplikationseinheit
(102; 204) zu erzeugen, wenn die Steuerungseinheit (130;
222) einen auszuführenden Divisions- oder Quadratwurzel-
Befehl erfaßt, wobei die letzte Iteration der iterativen
Newton-Raphson-Routine derart modifiziert ist, daß ein
abschließender Näherungsquotient oder eine abschließende
Näherungsquadratwurzel durch die letzte Iteration durch
Abschätzen des Quotienten oder der Quadratwurzel und dann
durch Verbessern der Genauigkeit des abgeschätzten Quo
tienten oder der Quadratwurzel gemäß einem Restfehler er
zeugt werden, der aufgrund des abgeschätzten Quotienten
oder der Quadratwurzel erzeugt wird, wodurch der ab
schließende Näherungsquotient oder die abschließende Qua
dratwurzel erzeugt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/058,164 US5341321A (en) | 1993-05-05 | 1993-05-05 | Floating point arithmetic unit using modified Newton-Raphson technique for division and square root |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4414172A1 DE4414172A1 (de) | 1994-11-10 |
DE4414172C2 true DE4414172C2 (de) | 1998-09-03 |
Family
ID=22015095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4414172A Expired - Fee Related DE4414172C2 (de) | 1993-05-05 | 1994-04-22 | Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet |
Country Status (4)
Country | Link |
---|---|
US (2) | US5341321A (de) |
JP (1) | JP3626769B2 (de) |
DE (1) | DE4414172C2 (de) |
GB (1) | GB2278940B (de) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5539684A (en) * | 1993-12-10 | 1996-07-23 | Motorola, Inc. | Method and apparatus for calculating floating point exponent values |
US5631859A (en) * | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
GB9501832D0 (en) * | 1995-01-31 | 1995-03-22 | Videologic Ltd | Texturing and shading of 3-d images |
US5729481A (en) * | 1995-03-31 | 1998-03-17 | International Business Machines Corporation | Method and system of rounding for quadratically converging division or square root |
US6643677B2 (en) * | 1995-06-05 | 2003-11-04 | Kabushiki Kaisha Toshiba | Digital arithmetic integrated circuit |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6240338B1 (en) | 1995-08-22 | 2001-05-29 | Micron Technology, Inc. | Seed ROM for reciprocal computation |
US5729724A (en) * | 1995-12-20 | 1998-03-17 | Intel Corporation | Adaptive 128-bit floating point load and store operations for quadruple precision compatibility |
US5764555A (en) * | 1996-03-13 | 1998-06-09 | International Business Machines Corporation | Method and system of rounding for division or square root: eliminating remainder calculation |
US5880983A (en) * | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US5790445A (en) * | 1996-04-30 | 1998-08-04 | International Business Machines Corporation | Method and system for performing a high speed floating point add operation |
US8908872B2 (en) * | 1996-06-07 | 2014-12-09 | That Corporation | BTSC encoder |
US5796842A (en) * | 1996-06-07 | 1998-08-18 | That Corporation | BTSC encoder |
US5768170A (en) * | 1996-07-25 | 1998-06-16 | Motorola Inc. | Method and apparatus for performing microprocessor integer division operations using floating point hardware |
US5847979A (en) * | 1996-10-31 | 1998-12-08 | Samsung Electronics Company, Ltd. | Method and apparatus for generating an initial estimate for a floating point reciprocal of a square root |
US5936627A (en) * | 1997-02-28 | 1999-08-10 | International Business Machines Corporation | Method and system for performing perspective divide operations on three-dimensional graphical object data within a computer system |
JP4313467B2 (ja) * | 1998-06-23 | 2009-08-12 | 航 尾形 | 小容量メモリを用いた除算方式 |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US6732259B1 (en) | 1999-07-30 | 2004-05-04 | Mips Technologies, Inc. | Processor having a conditional branch extension of an instruction set architecture |
US6735610B1 (en) * | 1999-04-29 | 2004-05-11 | Walter E. Pelton | Apparatus, methods, and computer program products for determining the coefficients of a function with decreased latency |
US6389443B1 (en) | 1999-06-07 | 2002-05-14 | Telefonaktiebolaget Lm Ericsson | Method and apparatus for an efficient square-root computation |
US6697832B1 (en) | 1999-07-30 | 2004-02-24 | Mips Technologies, Inc. | Floating-point processor with improved intermediate result handling |
US6714197B1 (en) | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
US6912559B1 (en) * | 1999-07-30 | 2005-06-28 | Mips Technologies, Inc. | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit |
US6631392B1 (en) | 1999-07-30 | 2003-10-07 | Mips Technologies, Inc. | Method and apparatus for predicting floating-point exceptions |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
JP3598096B2 (ja) * | 1999-12-22 | 2004-12-08 | 航 尾形 | ニュートンラフソン法を用いた演算方式 |
US6598065B1 (en) | 1999-12-23 | 2003-07-22 | Intel Corporation | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal |
US6922712B2 (en) | 2000-02-26 | 2005-07-26 | Walter E. Pelton | Apparatus, methods, and computer program products for accurately determining the coefficients of a function |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
AU2001275444A1 (en) * | 2000-06-09 | 2001-12-17 | K. Walt Herridge | Apparatus, methods and computer program products for performing high speed division calculations |
US6820104B2 (en) * | 2000-06-09 | 2004-11-16 | Walter Eugene Pelton | Apparatus, methods, and computer program products for reducing the number of computations and number of required stored values for information processing methods |
US6654777B1 (en) * | 2000-07-27 | 2003-11-25 | International Business Machines Corporation | Single precision inverse square root generator |
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
CA2329104C (en) | 2000-12-20 | 2005-05-24 | Sicon Video Corporation | Method and apparatus for calculating a reciprocal |
KR100456035B1 (ko) * | 2002-10-11 | 2004-11-08 | 주식회사 모티스 | 나눗셈 장치 |
KR100480724B1 (ko) * | 2002-10-31 | 2005-04-07 | 엘지전자 주식회사 | 가변 스텝사이즈 적응형 역수기 |
US7610407B2 (en) * | 2003-12-11 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants |
US20050228844A1 (en) * | 2004-04-08 | 2005-10-13 | International Business Machines Corporation | Fast operand formatting for a high performance multiply-add floating point-unit |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
US7941642B1 (en) | 2004-06-30 | 2011-05-10 | Oracle America, Inc. | Method for selecting between divide instructions associated with respective threads in a multi-threaded processor |
US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7478225B1 (en) | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7353364B1 (en) | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded processor |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7216216B1 (en) | 2004-06-30 | 2007-05-08 | Sun Microsystems, Inc. | Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window |
US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7533248B1 (en) | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded processor |
US7467174B2 (en) * | 2004-09-23 | 2008-12-16 | Wisconsin Alumni Research Foundation | Processing unit having decimal floating-point divider using Newton-Raphson iteration |
US7526340B2 (en) * | 2004-10-29 | 2009-04-28 | Medtronic, Inc. | Division approximation for implantable medical devices |
US20060129624A1 (en) * | 2004-12-09 | 2006-06-15 | Abdallah Mohammad A | Method and apparatus for performing a divide instruction |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
US7539720B2 (en) * | 2004-12-15 | 2009-05-26 | Sun Microsystems, Inc. | Low latency integer divider and integration with floating point divider and method |
US20060179092A1 (en) * | 2005-02-10 | 2006-08-10 | Schmookler Martin S | System and method for executing fixed point divide operations using a floating point multiply-add pipeline |
EA014117B1 (ru) * | 2005-03-15 | 2010-10-29 | Шеврон Ю.Эс.Эй. Инк. | Способ и устройство для моделирования имитатора коллектора |
US7406589B2 (en) * | 2005-05-12 | 2008-07-29 | International Business Machines Corporation | Processor having efficient function estimate instructions |
US7873687B2 (en) * | 2005-07-25 | 2011-01-18 | International Business Machines Corporation | Method for calculating a result of a division with a floating point unit with fused multiply-add |
US20070055723A1 (en) * | 2005-09-07 | 2007-03-08 | Marius Cornea-Hasegan | Method and system for performing quad precision floating-point operations in microprocessors |
US7752250B2 (en) * | 2006-01-12 | 2010-07-06 | International Business Machines Corporation | Rounding floating point division results |
KR100901478B1 (ko) * | 2006-12-07 | 2009-06-08 | 한국전자통신연구원 | 나눗셈기의 평균값 출력 장치 및 출력 방법 |
WO2008069390A1 (en) * | 2006-12-07 | 2008-06-12 | Electronics And Telecommunications Research Institute | Apparatus and method for generating mean value |
US8838663B2 (en) * | 2007-03-30 | 2014-09-16 | Intel Corporation | Method and apparatus for performing multiplicative functions |
US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
US8478948B2 (en) * | 2008-12-04 | 2013-07-02 | Oracle America, Inc. | Method and system for efficient tracing and profiling of memory accesses during program execution |
US8452831B2 (en) * | 2009-03-31 | 2013-05-28 | Oracle America, Inc. | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations |
US8812575B2 (en) * | 2010-07-06 | 2014-08-19 | Silminds, Llc, Egypt | Decimal floating-point square-root unit using Newton-Raphson iterations |
US20120059866A1 (en) * | 2010-09-03 | 2012-03-08 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating-point division |
US8681973B2 (en) * | 2010-09-15 | 2014-03-25 | At&T Intellectual Property I, L.P. | Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations |
US8775494B2 (en) | 2011-03-01 | 2014-07-08 | Nvidia Corporation | System and method for testing whether a result is correctly rounded |
US9086890B2 (en) | 2012-01-06 | 2015-07-21 | Oracle International Corporation | Division unit with normalization circuit and plural divide engines for receiving instructions when divide engine availability is indicated |
US20140067894A1 (en) * | 2012-08-30 | 2014-03-06 | Qualcomm Incorporated | Operations for efficient floating point computations |
US9904512B1 (en) * | 2013-05-31 | 2018-02-27 | Altera Corporation | Methods and apparatus for performing floating point operations |
US9612800B2 (en) * | 2014-08-05 | 2017-04-04 | Imagination Technologies Limited | Implementing a square root operation in a computer system |
US9875083B2 (en) * | 2014-08-05 | 2018-01-23 | Imagination Technologies Limited | Performing a comparison computation in a computer system |
US9996320B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Fused multiply-add (FMA) low functional unit |
US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
US10289386B2 (en) | 2016-04-21 | 2019-05-14 | Oracle International Corporation | Iterative division with reduced latency |
CN106775587B (zh) * | 2016-11-30 | 2020-04-14 | 上海兆芯集成电路有限公司 | 计算机指令的执行方法以及使用此方法的装置 |
US10503473B1 (en) | 2018-05-30 | 2019-12-10 | Apple Inc. | Floating-point division alternative techniques |
GB2582146B (en) * | 2019-03-11 | 2021-08-18 | Graphcore Ltd | Execution Unit for Evaluating Functions Using Newton Raphson Iterations |
CN113407235B (zh) * | 2021-06-28 | 2022-07-08 | 珠海一微半导体股份有限公司 | 一种基于硬件加速的运算电路系统及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0395240A2 (de) * | 1989-04-26 | 1990-10-31 | Texas Instruments Incorporated | Hochgeschwindiger digitaler Prozessor |
US4999801A (en) * | 1988-07-15 | 1991-03-12 | Fujitsu Limited | Floating point operation unit in division and square root operations |
US5157624A (en) * | 1990-12-13 | 1992-10-20 | Micron Technology, Inc. | Machine method to perform newton iterations for reciprocal square roots |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3274164D1 (en) * | 1982-12-23 | 1986-12-11 | Ibm | Method and apparatus for division operations |
US4594680A (en) * | 1983-05-04 | 1986-06-10 | Sperry Corporation | Apparatus for performing quadratic convergence division in a large data processing system |
JPS6120134A (ja) * | 1984-06-29 | 1986-01-28 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 平方根計算装置 |
US4999802A (en) * | 1989-01-13 | 1991-03-12 | International Business Machines Corporation | Floating point arithmetic two cycle data flow |
EP0377992B1 (de) * | 1989-01-13 | 1996-04-17 | International Business Machines Corporation | Gleitkommadivisions-Verfahren und -Anordnung |
US5042001A (en) * | 1989-10-02 | 1991-08-20 | Cyrix Corporation | Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier |
US5220524A (en) * | 1990-12-13 | 1993-06-15 | Micron Technology, Inc. | Machine method to perform newton iterations for reciprocals |
-
1993
- 1993-05-05 US US08/058,164 patent/US5341321A/en not_active Expired - Lifetime
-
1994
- 1994-04-22 DE DE4414172A patent/DE4414172C2/de not_active Expired - Fee Related
- 1994-05-03 GB GB9408712A patent/GB2278940B/en not_active Expired - Fee Related
- 1994-05-06 JP JP09423394A patent/JP3626769B2/ja not_active Expired - Fee Related
-
1995
- 1995-09-08 US US08/524,966 patent/US5515308A/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4999801A (en) * | 1988-07-15 | 1991-03-12 | Fujitsu Limited | Floating point operation unit in division and square root operations |
EP0395240A2 (de) * | 1989-04-26 | 1990-10-31 | Texas Instruments Incorporated | Hochgeschwindiger digitaler Prozessor |
US5157624A (en) * | 1990-12-13 | 1992-10-20 | Micron Technology, Inc. | Machine method to perform newton iterations for reciprocal square roots |
Also Published As
Publication number | Publication date |
---|---|
DE4414172A1 (de) | 1994-11-10 |
GB2278940B (en) | 1997-11-19 |
GB2278940A (en) | 1994-12-14 |
GB9408712D0 (en) | 1994-06-22 |
US5515308A (en) | 1996-05-07 |
JP3626769B2 (ja) | 2005-03-09 |
US5341321A (en) | 1994-08-23 |
JPH0749772A (ja) | 1995-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4414172C2 (de) | Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet | |
DE102019114243A1 (de) | Architektur für tiefe neuronale Netze unter Verwendung stückweiser linearer Approximation | |
DE3144015C2 (de) | ||
DE10085322B4 (de) | Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form | |
EP0377837B1 (de) | Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition | |
DE60318494T2 (de) | Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen | |
US5220524A (en) | Machine method to perform newton iterations for reciprocals | |
DE69435047T2 (de) | Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung | |
US5206823A (en) | Apparatus to perform Newton iterations for reciprocal and reciprocal square root | |
DE2900324A1 (de) | Mikroprogrammierbare arithmetische fliesskommaeinheit | |
DE112011103196T5 (de) | Funktionseinheit für eine Multiply-ADD-Anweisung für ganzzahlige Vektoren | |
DE112018000140T5 (de) | Verschmolzene Multiplikations-Additions-Gleitkommaoperationen auf 128 BIT breiten Operanden | |
DE112020003600T5 (de) | Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung | |
DE112011103206T5 (de) | Multiplizieraddierfunktionseinheit zum Ausführen von Scale-, Round-, Getexp-, Round-, Getmant-,Reduce-, Range- und Class-Befehlen | |
DE102014100108A1 (de) | Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur | |
DE112011103195T5 (de) | Funktionseinheit zur Berechnung von führenden Nullen von Vektoren, von abschließenden Nullen von Vektoren, der Anzahl von Einsen von Vektoroperanden und der Vektorparität | |
DE19781794C2 (de) | Verfahren und Einrichtung zur Division von Gleitkomma- oder ganzen Zahlen | |
DE10013068C2 (de) | Potenzierungsoperationsvorrichtung | |
EP1499954B1 (de) | Berechnung eines ergebnisses einer modularen multiplikation | |
DE19746054B4 (de) | Verfahren und Vorrichtung zum Ausführen einer Operation mit doppelter Genauigkeit | |
DE112019000382T5 (de) | GANZZAHLIGER MULTIPLIKATOR MIT MEHRFACHER GENAUIGKEIT DURCH MATRIX-MATRIX-MULTIPLIKATIONEN UNTER VERWENDUNG EINES 16-BIT-FLIEßKOMMA-MULTIPLIKATORS | |
DE60316342T2 (de) | Multiplizierer mit nachschlagetabellen | |
EP1474741B1 (de) | Vorrichtung und verfahren zum berechnen eines ergebnisses aus einer division | |
DE2523755C3 (de) | Divisionsvorrichtung unter Verwendung einer Näherungsgleichung | |
DE112022002300T5 (de) | Verarbeitung einer speicheränderung bei der programmereignisaufzeichnung für eine anweisung eines beschleunigers in einem neuronalen netzwerk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |