DE68928376T2 - Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel - Google Patents
Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzelInfo
- Publication number
- DE68928376T2 DE68928376T2 DE68928376T DE68928376T DE68928376T2 DE 68928376 T2 DE68928376 T2 DE 68928376T2 DE 68928376 T DE68928376 T DE 68928376T DE 68928376 T DE68928376 T DE 68928376T DE 68928376 T2 DE68928376 T2 DE 68928376T2
- Authority
- DE
- Germany
- Prior art keywords
- multiplier
- bits
- bit
- multiplication
- square root
- 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
- 238000004364 calculation method Methods 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 26
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000000295 complement effect Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 description 60
- 238000000605 extraction Methods 0.000 description 29
- 230000014509 gene expression Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 238000012986 modification Methods 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 108091029614 miR-52 stem-loop Proteins 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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/3816—Accepting numbers of variable word length
-
- 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/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
- Diese Erfindung bezieht sich auf eine Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß der im Oberbegriff des Patentanspruchs 1 bezeichneten Art.
- Eine solche Vorrichtung ist bekannt aus dem Artikel "Single Chip Accelerators Speed Floating-Point and Binary Computations", von D. Quong u. a., Electronic Design, Bd. 32, Nr. 23, November 1984.
- Der Stand der Technik zur Durchführung der Division mittels Näherung unter Verwendung eines Multiplizierers ist offenbart im US-Patent Nr. 3.828.175, erteilt an Amdahl u. a.
- Zur Steigerung der Multiplikationsgeschwindigkeit verwendet die arithmetische Vorrichtung den Multiplizierer zusätzlich zu einem Addierer. Ferner wird zur Steigerung der Geschwindigkeit der Division und der Ziehung der Quadratwurzel ein Verfahren der Näherung verwendet, wobei die Näherung mittels des Multiplizierers bewerkstelligt wird.
- Ein bekanntes Verfahren der Näherung ist die Newton- Raphson-Iteration. Die Newton-Raphson-Iteration ist ein Verfahren zum Lösen einer Funktion unter Verwendung einer Gleichung für eine Tangente an die Funktion. Genauer wird die Funktion f(x) gelöst durch Lösen der folgenden Rekursionsformel
- Unter Verwendung dieses Verfahrens zum Dividieren von A durch B schreiben wir zuerst A:B um zu
- und verwenden die Newton-Raphson-Iteration, um 1/B zu finden.
- Unter der Voraussetzung, daß f(x) = B - (1/x) = 0 gilt, ergibt sich die Rekursionsformel wie folgt:
- Xi+1 = xi (2 - Bxi) (3)
- Somit kann unter Verwendung dieses Verfahrens die Division ausschließlich unter Verwendung der Multiplikation und Division durchgeführt werden.
- Im Fall des Ziehens der Quadratwurzel und der Vorgabe, daß
- f(x) = A - x² = 0 (4)
- gilt, ergibt sich die Rekursionsformel zu
- wobei ein Divisionsausdruck A/xi übrig bleibt. Unter Verwendung der Beziehung
- wird anschließend 1/A mittels Newton-Raphson-Iteration erhalten.
- Unter der Voraussetzung, daß
- gilt, ergibt sich die Rekursionsformel zu
- wobei es möglich wird, die Quadratwurzel nur mittels Multiplikation, Subtraktion und einer Halbierungsberechnung zu erhalten. Die Halbierungsberechnung kann in einem Binärcomputer einfach durch eine Schiebeoperation verwirklicht werden.
- Wenn eine Multiplikation, eine Division und ein Ziehen der Quadratwurzel durch die arithmetische Einheit bewerkstelligt werden, nimmt die erforderliche Größe der arithmetischen Einheit mit der Genauigkeit der Berechnung zu, wobei die Anzahl der zu behandelnden Bits zunimmt. Wenn andererseits eine Berechnung mit geringer Genauigkeit mit z. B. einer Breite von 33 Bits unter Verwendung einer arithmetischen Einheit mit hoher Genauigkeit mit einer Breite 66 Bits durchgeführt wird, ist die für die Berechnung mit geringer Genauigkeit erforderliche Zeitspanne die gleiche wie diejenige, die für die Berechnung mit hoher Genauigkeit erforderlich ist. Dies bedeutet, daß ein Kompromiß entsteht zwischen der Genauigkeitserhöhung der arithmetischen Einheit zur Beschleunigung von Berechnungen mit hoher Genauigkeit begleitet durch die Verhinderung der Hochgeschwindigkeitsverarbeitung bei Berechnungen mit geringer Genauigkeit und der Genauigkeitssteigerung der arithmetischen Einheit zur Beschleunigung von Berechnungen mit geringer Genauigkeit begleitet durch die Verhinderung der Hochgeschwindigkeitsverarbeitung bei Berechnungen mit hoher Genauigkeit.
- Aufgrund des Fortschritts in der Halbleiterbaustein- Integrationstechnik ist es nicht mehr schwierig, die Genauigkeit einer arithmetischen Einheit, die auf einem kleinen Chip ausgeführt wird, zu steigern. Es besteht jedoch ein starker Bedarf an einer Beschleunigung der Operation der arithmetischen Einheit und somit eine dringende Notwendigkeit zur Lösung des obenerwähnten Kompromißproblems.
- Da außerdem die Verwirklichung der Hochgeschwindigkeitsverarbeitung erfordert, daß die Bestandteile der arithmetischen Einheit parallel arbeiten, sind in dieser Richtung ferner Gegenmaßnahmen erforderlich.
- Der Artikel von D. Quong offenbart eine Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel, die für die Ausführung von Multiplikations-, Divisions- und Quadratwurzelberechnungen durch Iteration mittels wiederholter Multiplikation, Addition und Subtraktion Näherungslösungen von Multiplikations-, Divisions- und Quadratwurzelfunktionen berechnet, mit
- einem Multiplizierer mit vorgeschriebener Bitbreite für die Ausführung einer Multiplikation zwischen Daten mit einer vorgeschriebenen Anzahl von Bits,
- einem Subtrahierter mit vorgeschriebener Bitbreite, der an den Multiplizierer angeschlossen ist, um den Ausgangswert des Multiplizierers von einem vorgeschriebenen Wert zu subtrahieren und um das Subtraktionsergebnis auszugeben; und
- einer Datenübertragungsvorrichtung zum Übertragen des Ausgangs des Subtrahierers zum Eingang des Multiplizierers.
- Es ist eine Aufgabe der vorliegenden Erfindung, eine arithmetische Vorrichtung zu schaffen, die bei der Näherungsberechnung mittels Newton-Raphson-Iteration eine Multiplikations- und Subtraktionsverarbeitung kontinuierlich durchführen kann.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel zu schaffen, die durch Vereinfachung der Subtraktionsoperationen mittels der Subtraktionsverarbeitung auferlegter Beschränkungen die für die Subtraktion erforderliche Zeitspanne innerhalb der für die Verarbeitung der Multiplikation erforderlichen Einheitszeit halten kann.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine Einrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel, die sowohl Berechnungen mit geringer Genauigkeit als auch Berechnungen mit hoher Genauigkeit mit hoher Geschwindigkeit durchführen kann, sowie eine damit zu verwendende Busvorrichtung zu schaffen.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel zu schaffen, die das Mischen von Berechnungen mit geringer Genauigkeit und von Berechnungen mit großer Genauigkeit in einer Serie von Näherungsberechnungen kontrolliert.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine arithmetische Gleitkommazahl-Vorrichtung zu schaffen, die mit einer Datenbusvorrichtung ausgerüstet ist, die verarbeitete Daten so übertragen kann, daß die parallele Ausführung der Multiplikationsverarbeitung und anderer arithmetischer Verarbeitungen sichergestellt werden kann.
- Die obenerwähnten Aufgaben werden gelöst durch eine Vorrichtung gemäß Anspruch 1.
- Die abhängigen Ansprüche sind auf Merkmale bevorzugter Ausführungsformen der Erfindung gerichtet.
- Fig. 1 ist ein Blockschaltbild der Grundanordnung der vorliegenden Erfindung;
- Fig. 2 ist ein Blockschaltbild einer Ausführungsform der vorliegenden Erfindung;
- Fig. 3 ist ein Schaubild, das die Operation des Multiplizierers zeigt;
- Fig. 4 ist ein genaues Blockschaltbild der Subtraktions/Schiebe-Schaltung;
- Fig. 5 ist ein Subtraktionsflußdiagramm;
- Fig. 6 ist ein Flußdiagramm für das Ziehen der Quadratwurzel;
- Fig. 7 und 8 sind Blockschaltbilder, die Grundanordnungen anderer Ausführungsformen der vorliegenden Erfindung zeigen;
- Fig. 9 ist ein Blockschaltbild einer Ausführungsform der vorliegenden Erfindung, die auf eine arithmetische Gleitkommavorrichtung angewendet wird;
- Fig. 10 ist ein Blockschaltbild, das die Grundanordnung der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß einer weiteren Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 11 ist ein Blockschaltbild, das Einzelheiten der Fig. 10 zeigt;
- Fig. 12 ist ein Schaubild zur Erläuterung einer (2n Bits) mal (2n Bits) Multiplikation;
- Fig. 13 ist ein Flußdiagramm, das Verarbeitungsschritte für die Multiplikation zeigt;
- Fig. 14 ist ein Flußdiagramm, das Verarbeitungsschritte für die Division zeigt;
- Fig. 15 ist ein Flußdiagramm, das die Verarbeitungsschritte zum Ziehen der Quadratwurzel zeigt;
- Fig. 16 ist ein Flußdiagramm, das die Verarbeitungsschritte zur Näherung von 1/B zeigt;
- Fig. 17 ist ein Flußdiagramm, das die Verarbeitungsschritte zur Näherung von 1/A zeigt;
- Fig. 18 ist ein Schaubild, das die Darstellungsweise der Gleitkommazahl zeigt;
- Fig. 19 ist ein Schaubild, das ein Datenformat zum Erhalten strenger Lösungen unter Verwendung von Operationsbetriebsmitteln mit endlicher Länge zeigt;
- Fig. 20 ist ein Schaubild, das einen Rundungsalgorithmus zeigt;
- Fig. 21 ist ein Schaubild, das das Prinzip der Dichotomie zeigt;
- Fig. 22 ist ein Schaubild, das einen schematischen Fluß des Algorithmus zeigt;
- Fig. 23 ist ein Schaubild, das den internen Aufbau des Gleitkommaprozessors zeigt;
- Fig. 24 ist ein Schaubild, das den internen Aufbau des Gleitkommaprozessors zeigt;
- Fig. 25 ist ein Schaubild, das die Zwischenwerte beim Berechnen einer Quadratwurzel zeigt;
- Fig. 26 ist ein Schaubild, das ein genaues Flußdiagramm zeigt, wenn die Ergebnisse der Näherung ausreichende Genauigkeiten aufweisen; und
- Fig. 27 und 28 sind Schaubilder, die ein genaues Flußdiagramm zeigen, wenn die Ergebnisse der Näherung keine ausreichenden Genauigkeiten aufweisen.
- Im folgenden werden mit Bezug auf die beigefügten Zeichnungen Ausführungsformen der Erfindung erläutert.
- Fig. 1 zeigt die Grundanordnung einer Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß dieser Erfindung. Die Hauptbestandteile der Vorrichtung sind ein Multiplizierer (MULT) 10, eine Subtraktions/Schiebe-Schaltung (SBSF) 11, ein Multipliziererquellenregister X (MSRX) 12, ein Multipliziererquellenregister Y (MSRY) 13 sowie ein Bus (BUS) 14.
- Der Multiplizierer oder MULT 10 führt eine Multiplikation von n Bits mal n Bits aus und gibt Ergebnisse mit 2n Bits aus. Die SBSF 11 führt eine Subtraktions- und Schiebeoperation aus, deren Einzelheiten später erläutert werden. Das MSRX 12 und das MSRY 13 sind n-Bit-Register zum Halten der in den Multiplizierer 10 eingegeben Werte. Der BUS 14 überträgt Daten zwischen der SBSF 11 und den jeweiligen Multiplikationsquellenregistern MSRX 12 und MSRY 13. Obwohl die Datenbreite des BUS 14 in dieser Ausführungsform 2n beträgt, ist die Datenbreite kein wesentliches Merkmal der vorliegenden Erfindung.
- Fig. 2 zeigt die Gesamtanordnung der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel genauer. Zum Lösen der Rekursionsformel mittels Newton- Raphson-Iteration ist ein Anfangswert erforderlich. In dieser Ausführungsform wird der Anfangswert mittels einer konstanten Tabelle (CT) 20 erzeugt. Die CT 20 umfaßt ein Konstantentabellenadreßregister (CTAR) 201, einen Konstantentabellenspeicher (CTM) 202 sowie ein Konstantentabellenausgangsregister (CTOR) 203 und ist mit dem BUS 14 verbunden. Das CTAR 201 empfängt Daten vom BUS 14 als Adresse für den Zugriff auf die Tabelle. Die Inhalte des CTAR 201 werden als Adresse zum Auslesen einer Konstanten aus dem CTM 202 und zum Weiterleiten derselben zum CTOR 203 verwendet, wobei die Inhalte des CTOR 203 auf den BUS 14 ausgegeben werden. Die Datenbreite des BUS 14 beträgt 2n Bits, wobei n Bits höherer Ordnung einem BUS (H) 14H und n Bits niedrigerer Ordnung einem BUS (L) 14L zugeordnet sind. In dieser Ausführungsform ist die Eingangsseite des CTAR 201 mit dem BUS 14H verbunden, während die Ausgangsseite des CTOR 203 mit dem BUS (H) 14H und dem BUS (L) 14L verbunden ist, die Eingangsseite des MSRX 12 mit dem BUS 14H verbunden ist, die Eingangsseite des MSRY 13 mit dem BUS 14H und dem BUS 14L und die Ausgangsseite der SBSF 11 mit dem BUS 14H und dem BUS 14L verbunden ist.
- Die Operation der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel wird durch eine Steuervorrichtung (CTRL) 21 gesteuert. Die CTRL 21 enthält einen Schleifenzähler (LC) 211 und einen Dekrementzähler (DEC) 212 zum Steuern der Anzahl der Näherungsberechungswiederholungen. In den LC 211 wird ein vorgegebener Wert eingesetzt, wobei der DEC 212 diesen Wert dekrementiert. Wenn der Wert des LC 211 gleich 0 wird, führt die CTRL 21 eine vorgeschriebene Steueroperation aus. Es ist zu beachten, daß es nicht notwendig ist, daß der Schleifenzähler in der Steuervorrichtung enthalten ist. Es reicht aus, innerhalb der gesamten Vorrichtung, die die Vorrichtung zum Multiplizieren, Dividieren, und Ziehen der Quadratwurzel enthält, eine Steuereinrichtung vorzusehen, die ähnlich wie der Schleifenzähler funktioniert.
- Die von dieser Ausführungsform gehandhabten Daten sind Gleitkommazahlen, die dargestellt werden durch S M 2E (wobei S das Vorzeichen, M die Mantisse und E der Exponent ist). Bei der vorliegenden Ausführungsform werden das Vorzeichen und der Exponent außerhalb der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel verarbeitet, wobei nur die Mantisse der Gleitkommazahl in der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel behandelt wird. Ferner liegt die Position des Binärpunktes mit Ausnahme des Falls der Ausgabe des Multiplizierers unterhalb des MSB (höchstwertiges Bit). Das heißt, das Ganzzahlbit umfaßt ein Bit. Da der Binärpunkt auch im MSRX 12 und im MSRY 13 unterhalb des MSB liegt, ist der Binärpunkt in der Ausgabe des Multiplizierers 10, wie in Fig. 3 gezeigt, unterhalb des Bits MSB - 1 angeordnet. Mit anderen Worten, der Ausgang des Multiplizierers 10 besitzt ein Ganzzahlbit, das 2 Bits umfaßt.
- Die Funktion der SBSF 11 wird im folgenden erläutert. Der Aufbau der SBSF 11 ist in Fig. 4 genauer gezeigt. Sie umfaßt einen Subtrahierer (SUB) 111, eine Schiebevorrichtung (SFT) 112, ein Ausgangsregister (SSOR) 113 sowie ein Register für den herausgeschobenen Übertrag (SFC) 114. Der SUB 111 führt eine Subtraktion bezüglich des Ausgangs des MULT 10 durch, während die SFT 112 eine Schiebeoperation bezüglich der Ergebnisse der Subtraktion ausführt und die Ergebnisse im SSOR 113 und SFC 114 speichert.
- Im Fall der Division einer n-Bit-Zahl durch eine n-Bit- Zahl und einem Ziehen der Quadratwurzel mit einer Genauigkeit kleiner als die Quadratwurzel einer n-Bit-Zahl zieht der SUB 111 den Ausgang des Multiplizierers 10 entsprechend von 2 oder 3 ab. Diese Operation wird wie folgt durchgeführt. Die Subtraktion von 2 entspricht dem Nehmen des Zweierkomplements, so daß dann, wenn der Ausgang des Multiplizierers 10 dargestellt wird als
- (wobei der Binärpunkt ist), sich ergibt:
- (wobei i gleich bi invertiert ist und 2-(2n-2) der Übertragseingang vom LSB ist). Da die Subtraktion von 3 gleich 3 - a = 1 + (2 - a) ergibt, reicht es aus, zum Ergebnis von 2 - a eine 1 zu addieren. Da sich x an 1/ A annähert, wird der Ausdruck A xi² in der Gleichung (8) zu einer Zahl, die sich 1 nähert, so daß gilt 1/2 (3 - A xi²) 1. Durch Richten der Aufmerksamkeit auf die Tatsache, daß b2n-1 nicht 1 wird (d. h. die Ergebnisse der Multiplikation überschreiten 2 nicht), kann geschrieben werden:
- Andererseits ist die Größe des Übertrags 2-(2n-2) kleiner als der Fehler durch die Newton-Raphson-Iterationsnäherung, so daß das Weglassen der Addition von 2-(2n-2) die Berechnungsgenauigkeit nicht beeinträchtigt. Es reicht daher aus, wenn in bezug auf das Ausgangsergebnis
- vom Multiplizierer 10 der SUB 111
- für die Subtraktion von 2 bzw.
- für die Subtraktion von 3 ausgibt. Wenn diese Subtraktion nicht ausgeführt wird, ist der Ausgang des SUB 111 der gleiche wie derjenige des Multiplizierers 10. Da ferner dann, wenn die Annäherung nur auf m Bits (2n > m), die Lieferung irgendeines Wertes, der sich auf die unteren 2n + m - 2 Bits bezieht, bedeutungslos ist, kann die Operation des SUB 111 auf nur die oberen 2n - m + 2 Bits beschränkt werden.
- Da der Binärpunkt des Ausgangs des SUB 111 unterhalb des Bits (MSB - 1) liegt, ist es für die Verwendung dieses Werts in der weiteren Berechnung erforderlich, den Binärpunkt nach unterhalb des MSB zu verschieben. Zu diesem Zweck verschiebt die SFT 112 den Ausgang des SUB 111 um ein Bit nach links, wobei das durch die Verschiebung leer werdende Bit mit einer 0 aufgefüllt wird. Das Ergebnis wird an das SSOR 113 ausgegeben. Zu diesem Zeitpunkt wird ein Bit des MSB des Ausgangs des SUB 111 als herausgeschobener Übertrag zum SFC 114 gesendet. Auf diese Weise wird der Binärpunkt angepaßt. Da der Ausdruck 2 - B in der Gleichung (3) nahezu 1 ist, nimmt das SFC 114 nicht den Wert 1 an. Im Fall eines Ziehens der Quadratwurzel wird die Operation der Multiplikation mit 1/2 in der Rekursionsformel durchgeführt, indem der Ausgang des SUB 111 ohne Verschiebung direkt an das SSOR 113 ausgegeben wird. Dies bewirkt, daß der Binärpunkt offensichtlich um ein Bit nach links verschoben wird, was die gleiche Operation bewirkt wie ein Multiplizieren mit 1/2. Da bei dieser Ausführungsform die Position des Binärpunktes auf dem Bus bezüglich des Multipliziererausgangs um 1 Bit nach links verschoben ist, ist es im Fall eines Ziehens der Quadratwurzel nicht erforderlich, eine Schiebeoperation auszuführen. Wenn sich jedoch die Binärpunktpositionsbeziehung von derjenigen in dieser Ausführungsform unterscheidet, kann es notwendig werden, im Fall des Ziehens der Quadratwurzel den Binärpunkt um 1 Bit nach links zu verschieben.
- Im folgenden wird das Verfahren beschrieben, bei dem die Division und das Ziehen der Quadratwurzel unter Verwendung dieser Ausführungsform durchgeführt werden.
- Zuerst wird auf das Flußdiagramm der Fig. 5 Bezug genommen, das sich auf die Division bezieht. In der in Fig. 5 gezeigten Routine wird die Division A:D durchgeführt, indem zuerst gemäß der Rekursionsformel (3) 1/B berechnet wird, und anschließend (1/B) A berechnet wird. Die Prozedur wird mit Bezug auf die Figur im folgenden erläutert.
- Zuerst wird die Anzahl der Wiederholungen der Berechnung gemäß der Rekursionsformel im LC 211 der CTRL 21 gesetzt. Die Anzahl der Wiederholungen wird in Abhängigkeit von der Genauigkeit des Anfangswerts und der Genauigkeit des zu erhaltenden Werts vorgegeben (501). Als nächstes wird der Anfangswert für die Berechnung gemäß der Rekursionsformel aus der CT 20 gelesen. Der Divisor B wird am BUS 14 angelegt. Wenn die Daten auf BUS (H) 14H gleich b2n-1 b2n-2 ... bn+i bn sind, werden die (m-1)-Bit-Daten b2n-2 b2n-3 ... b2n-m in das CTAR 201 eingegeben. Dies geschieht, da diese Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel Gleitkommazahl-Mantissendaten so handhabt, daß das Ganzzahlbit, d. h. b2n-1, auf dem BUS 14H immer gleich 1 ist. Ein Anfangswert von l-Bit, der den Inhalten des CTAR 201 entspricht, wird aus dem CTM 202 gelesen. Der Ausgang des CTM 202 wird in das CTOR 203 eingesetzt. Obwohl die Datenbreite des CTOR 203 gleich 2n Bits ist, kann sie auch schmaler sein. Die Ausgangsdatenbreite l des CTM 202 beträgt m - 1 oder mehr. Im Fall der Division beträgt jedoch der Wertebereich, aus dem der Anfangswert ausgewählt werden kann, 1/2 < x ≤ 1. Die Dezimalzahl 1 wird in der binären Schreibweise dargestellt als 1 0,111... . Daher sind beim Anfangswert das Ganzzahlbit und das erste Bit unterhalb des Binärpunkts gleich 0 bzw. 1. Die Datenbreite l des CTM 202 kann auf die zweite Position unterhalb des Binärpunkts oder darunter eingestellt sein. Der CTM 202 besitzt eine Logikschaltung, die zum Zeitpunkt des Speicherns des Anfangsdivisionswerts im CTOR 203 eine 0 oder 1 in das Ganzzahlbit und das erste Bit unterhalb des Binärpunkts eingibt. Alternativ ist es möglich, die Genauigkeit des Anfangswerts zu erhöhen, ohne die Datenbreite l zu ändern. Ein vorgegebener fester Wert wird in die unteren 2n - l - 2 Bits des CTOR 203 eingegeben (502). Der aus dem CTOR 203 gelesene Anfangswert wird über den BUS 14 in das MSRX 12 eingegeben (503). Das MSRY 13 empfängt den Divisor B (504). Die Werte im MSRX 12 und im MSRY 13 werden multipliziert. Als Ergebnis wird der Ausdruck B xi in Gleichung (2) berechnet (505). Als nächstes subtrahiert der SUB 111 das Ergebnis der Multiplikation von 2, so daß der Ausdruck 2 - B xi der Gleichung (3) berechnet wird (506). Die SFT 112 verschiebt das Ergebnis der Subtraktion um 1 Bit nach links, wobei sie mit Nullen auffüllt, und setzt das verschobene Ergebnis in das SFC 114 und das SSOR 113 ein. Somit wird die Position des Binärpunkts angepaßt (507). Die oberen n Bits der Inhalte des SSOR 113 werden über den BUS (H) 14H an das MSRY 13 weitergeleitet (508). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Da das MSRX 12 den Wert von xi in der Gleichung (3) hält, wird die Berechnung der rechten Seite der Gleichung 2, xi (2 - B xi), abgeschlossen (509). Der SUB 111 führt mit den Ergebnissen der Multiplikation keine Operation durch, statt dessen führt die SFT 112 eine Linksverschiebung durch, um die Position des Binärpunkts anzupassen (510). Die oberen n Bits des SSOR 113 werden über den BUS (H) 14H an das MSRX 12 weitergeleitet. Als Ergebnis wird das Einsetzen der rechten Seite in die linke Seite der Rekursionsformel abgeschlossen (511). Der Inhalt des LC 211 wird vom DEC 212 dekrementiert, wobei der resultierende Wert in den LC 211 eingegeben wird (512). Wenn die Inhalte des LC 211 die Bedingung für das Beenden der Berechnung erfüllen, veranlaßt die CTRL 21, daß die Prozedur zum Schritt (514) vorrückt. Ansonsten kehrt die Prozedur zum Schritt (504) zurück (513). Der Wert des dividierten A wird in das MSRY 13 eingegeben (515). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Als Ergebnis werden das durch die Näherung erhaltene 1/B und A multipliziert, wodurch die Division A:B abgeschlossen ist (515). Die SFT 112 verschickt das Ergebnis der Multiplikation nach links und gibt das verschobene Ergebnis in das SFC 114 und das SSOR 113 ein. Als Folge hiervon wird das Endergebnis der Division gemäß der vorliegenden Ausführungsform im SSOR 113 gespeichert (516).
- Im folgenden wird mit Bezug auf das Flußdiagramm der Fig. 6 das Ziehen der Quadratwurzel erläutert. In der in Fig. 6 gezeigten Routine wird A berechnet, indem zuerst 1/ A gemäß der Rekursionsformel (8) erhalten wird und anschließend das Ergebnis mit A multipliziert wird. Die Prozedur wird im folgenden mit Bezug auf die Figur erläutert.
- Zuerst wird die Anzahl der Wiederholungen der Berechnung gemäß der Rekursionsformel im LC 211 der CTRL 21 gesetzt. Wie im Fall der Division wird die Anzahl der Wiederholungen im voraus vorgegeben (601). Als nächstes wird der Anfangswert für die Berechnung gemäß der Rekursionsformel aus der CT 20 gelesen. Die Prozedur ist im Grunde die gleiche wie diejenige der Division. Beim Ziehen der Quadratwurzel ist jedoch dann, wenn der Exponent eine ungerade Zahl ist und wenn anschließend das Verfahren verwendet wird, bei dem die Berechnung durchgeführt wird, nachdem die Mantisse mittels Division durch 2 zu einer geraden Zahl modifiziert worden ist, das Ganzzahlbit der Mantisse nicht unbedingt gleich 1. Während somit der Wert der Zahl A, deren Wurzel berechnet werden soll, auf den BUS 14 gelegt wird, werden die (m-1)-Bit-Daten b2n-1 b2n-2 ... b2n-(m+1) in das CTAR 201 eingegeben, vorausgesetzt, daß die Daten auf dem BUS (H) 14H gleich b2n-1 b2n-2 ... bn+1 bn sind. Die Inhalte des CTAR 201 werden als Adresse zum Auslesen eines l-Bit-Anfangswerts aus dem CTM 202 verwendet. Der Ausgang des CTM 202 wird in das CTOR 203 eingesetzt, da jedoch beim Ziehen der Quadratwurzel der Bereich, aus dem die Anfangswerte ausgewählt werden können, gleich 1/ 2 < x ≤ 2 ist, ist das Ganzzahlbit des Anfangswertes nicht unbedingt 1. Im Unterschied zum Fall der Division kann daher das Ganzzahlbit nicht im voraus gesetzt werden (602). Der aus dem CTOR 203 gelesene Anfangswert wird über den BUS 14 an das MSRY 12 weitergeleitet (603). Die Zahl A, deren Wurzel gefunden werden soll, wird in das MSRY 13 eingegeben (604). Die Inhalte des MSRX 12 und die Inhalte des MSRY13 werden multipliziert. Somit wird der Ausdruck A xi der Gleichung (8) berechnet (605). Die SFT 112 führt eine Linksverschiebung um 1 Bit bezüglich des Ergebnisses der Multiplikation durch, um die Position des Binärpunktes anzupassen. Das Ergebnis wird in das SFC 114 und das SSOR 113 eingegeben (606). Die oberen n Bits der Inhalte des SSOR 113 werden über den BUS (H) 14H an das MSRY 13 weitergeleitet (607). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Da das MSRX 12 den Wert von xi in der Gleichung (4) hält, wird der Ausdruck A xi² der Gleichung (8) erhalten (608). Als nächstes subtrahiert der SUB 111 das Ergebnis der Multiplikation von 3. Somit wird der Ausdruck 3 - A xi² der Gleichung (8) berechnet (609). Die SFT 112 gibt das Ergebnis der Subtraktion ohne Verschiebung in das SSOR 113 ein. Als Folge hiervon wird das Ergebnis der Subtraktion relativ um 1 Bit nach rechts verschoben, wobei der Ausdruck 1/2 (3 - A xi²) in der Gleichung (8) berechnet wird (610). Die oberen n Bits des SSOR 113 werden über den BUS (H) 14H an das MSRY 13 weitergeleitet (611). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Da das MSRX 12 den Wert von xi in der Gleichung (8) hält, wird der Ausdruck xi 1/2 (3 - A xi²) auf der rechten Seite der Gleichung (8) erhalten (612). Die SFT 112 führt eine Linksverschiebung bezüglich des Ergebnisses der Multiplikation durch, um die Position des Binärpunkts anzupassen (613). Die oberen n Bits des SSOR 113 werden über den BUS (H) 14H an das MSRX 12 weitergeleitet. Als Ergebnis wird das Einsetzen der rechten Seite in die linke Seite der Rekursionsformel durchgeführt (614). Der Inhalt des LC 211 wird vom DEC 212 dekrementiert, wobei der Ergebniswert in den LC 211 eingegeben wird (615). Wenn die Inhalte des LC 211 die Bedingung für das Beenden der Berechnung erfüllen, veranlaßt die CTRL 21, daß die Prozedur zum Schritt (617) vorrückt. Ansonsten kehrt die Prozedur im Schritt (616) zum Schritt (604) zurück. Der Wert der Zahl A, deren Wurzel gefunden werden soll, wird in das MSRY 13 eingegeben (617). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Als Ergebnis werden das durch die Näherung erhaltene 1/ A und A multipliziert, wodurch die Berechnung von A abgeschlossen wird (618). Die SFT 112 verschiebt das Ergebnis der Multiplikation nach links und gibt das verschobene Ergebnis in das SFC 114 und das SSOR 113 ein. Als Folge hiervon wird das Endergebnis des Ziehens der Quadratwurzel gemäß der vorliegenden Erfindung im SSOR 113 gespeichert (619).
- Aus der vorangehenden genauen Erläuterung wird klar, daß die vorliegende Ausführungsform eine Division und ein Ziehen der Quadratwurzel durchführt.
- Im folgenden werden andere Ausführungsformen mit Bezug auf die Fig. 7 und 8 beschrieben.
- In den in Fig. 7 und 8 gezeigten Ausführungsformen ist die Subtraktions/Verschiebe-Schaltung der vorangehenden Ausführungsform in einen Subtrahierer und eine Schiebevorrichtung aufgeteilt. Die Schiebevorrichtung 30 in den Fig. 7 und 8 ist ähnlich konstruiert wie die SFT 112, das SSOR 113 und das SFC 114 in der vorangehenden Ausführungsform. Der Subtrahierer 31 in den Fig. 7 und 8 ist auf die gleiche Weise aufgebaut wie der SUB 111 in der vorangehenden Ausführungsform. In der vorliegenden Ausführungsform beträgt jedoch die Datenbreite n Bits. Da ferner die Verschiebung im voraus ausgeführt wird, wird die Subtraktion von 2 durchgeführt, indem alle Bits von b2n-1 bis bn invertiert werden. In der Ausführungsform der Fig. 7 ist der Subtrahierer 31 zwischen dem Ausgang der Schiebevorrichtung 30 und dem Eingang des MSRY 13 angeordnet. In der Ausführungsform der Fig. 8 ist er zwischen dem Ausgang des MSRY 13 und dem Eingang des Multiplizierers 10 angeordnet.
- Das Dividieren und das Ziehen der Quadratwurzel wird in den Ausführungsformen der Fig. 7 und 8 in der gleichen Weise durchgeführt wie in der vorangehenden Ausführungsform.
- Als nächstes wird eine Ausführungsform eines Gleitkommaprozessors erläutert, der das Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß der Erfindung verwendet. Die Grundanordnung dieser Ausführungsform ist in Fig. 9 gezeigt.
- Die Hauptkomponenten des Gleitkommaprozessors sind ein Exponentenprozessor, ein Mantissenprozessor, eine Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel sowie eine Steuereinheit. Die Grundkomponenten des Exponentenprozessors sind eine Exponentenregistergruppe (ERF) 40, eine Exponentenarithmetikeinheit (EAU) 41, ein Exponenteneingangsregister (EIR) 42, ein Exponentenausgangsregister (EOR) 43, ein Exponent-A-Bus (EABUS) 44 und ein Exponent-B-Bus (EBBUS) 45. Die Grundkomponenten des Mantissenprozessors sind eine Mantissenregistergruppe (MRF) 50, eine Mantissen-Arithmetik-Schiebevorrichtung (MASF) 51, ein Mantisseneingangsregister (MIR) 52, ein Mantissenausgangsregister (MOR) 53, ein Mantisse-A-Bus (MABUS) 54 sowie ein Mantisse-B-Bus (MBBUS) 55. Die ERF 50 speichert die Exponentendaten. Die EAU 41 verarbeitet bei der Gleitkommaverarbeitung den Exponentenabschnitt. Das EIR 42 empfängt Daten vom BUS 14. Das EOR 43 sendet Daten zum BUS 14. Der EABUS 44 und der EBBUS 45 sind Busse zum Übertragen von Daten zwischen der ERF 40, der EAU 41, dem EIR 42 und dem EOR 43. Die MRF 50 speichert Mantissendaten. Die MASF 51 verarbeitet die Mantisse und führt bei der Gleitkommaverarbeitung die Schiebeoperation durch. Das MIR 52 empfängt Daten vom BUS 14. Das MOR 53 sendet Daten zum BUS 14. Der MABUS 54 und der MBBUS 55 sind Busse zum Übertragen von Daten zwischen der MRF 50, der MASF 51, dem MIR 52 und dem MOR 53. Bei dieser Ausführungsform handhabt der BUS 14 die Übertragung von Daten zwischen dem Exponentenprozessor, dem Mantissenprozessor und der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel. Da der Exponentenprozessor, der Mantissenprozessor und die Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel in dieser Ausführungsform unabhängig voneinander operieren, kann die Gleitkommaverarbeitung mit hoher Geschwindigkeit ausgeführt werden.
- Fig. 10 ist ein Blockschaltbild, das die Grundanordnung der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß einer weiteren Ausführungsform der Erfindung zeigt. Wie bei der in Fig. 1 gezeigten ersten Ausführungsform multipliziert ein Multiplizierer 10, der mehrere Multiplikationsverarbeitungen pipeline- artig ausführt, die Inhalte eines n-Bit- Multipliziererquellenregisters (MSR) 12 mit den Inhalten eines n-Bit- Multipliziererquellenregisters (MSR) 13 und gibt das Ergebnis an eine Subtraktions/Schiebe-Schaltung (SBSF) 11 aus. Da der Multiplizierer 10 pipeline-artig multipliziert, wird die Verarbeitungsgeschwindigkeit proportional erhöht. In Abhängigkeit davon, ob die ausgeführte Berechnung eine Division oder ein Ziehen der Quadratwurzel ist, subtrahiert die Subtraktions/Schiebe-Schaltung 11 den Ausgangswert des Multiplizierers 10 entweder von 2 oder von 3, paßt anschließend den Binärpunkt an und liefert die Ergebnisse an den 2n-Bit-BUS 14. Eine variable Schiebevorrichtung (VSFT) 15 verschiebt die vom BUS 14 empfangenen Daten um eine gewünschte Anzahl von Bits nach links oder rechts, rundet die nach rechts verschobenen Daten und gibt die Ergebnisse an eine Arithmetik-Logik-Einheit (ALU) 16 aus. Die ALU 16 führt arithmetische und/oder logische 2n-Bit- Operationen mit den vom BUS 14 entnommenen Daten oder mit den von der variablen Schiebevorrichtung 15 ausgegebenen Daten durch und gibt die Ergebnisse auf den BUS 14 aus. Die ALU 16 und die Schiebevorrichtung sind mit einem BUS 14' verbunden, der über einen Schalter 217 mit dem BUS 14 verbunden ist.
- Die Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel, die mit Bezug auf Fig. 10 erläutert worden ist, ist in Fig. 11 genauer gezeigt. Zusätzlich zu den vorher in Verbindung mit der im Blockschaltbild der Fig. 2 gezeigten Anordnung erläuterten Komponenten besitzt die Anordnung der Fig. 11 ferner die variable Schiebevorrichtung 15, die an ihrer Eingangsseite mit dem BUS 14H' und dem BUS 171' verbunden ist, sowie die ALU 16, die sowohl an ihrer Eingangs- als auch Ausgangsseite mit den gleichen Bussen verbunden ist.
- Die ALU 16 umfaßt einen 2n-Bit-Quellenzwischenspeicher 17 mit der Fähigkeit zum Links- und Rechtsschieben um 1 Bit und mit der Fähigkeit zum Invertieren, einen Quellenzwischenspeicher 18, der zusätzlich zu den obenerwähnten Fähigkeiten eine Zweiwege-Multiplexer-Funktion besitzt, um den einen oder den anderen der zwei Eingänge auszuwählen (den Eingang vom BUS 14H' und vom BUS 14L' sowie den Eingang von der VSFT 15), sowie einen Addierer 19 zum Addieren der Eingänge von den beiden Quellenzwischenspeichern 17 und 18.
- Die Steuervorrichtung (CTRL) 21 zum Steuern der Operation der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel enthält einen Schleifenzähler (LC) 211 und einen Dekrementierungszähler (DEC) 212 zum Steuern der Anzahl der Näherungsberechnungswiederholungen. In den LC 211 wird ein vorgeschriebener Wert eingesetzt, wobei der DEC 212 diesen Wert dekrementiert. Wenn der Wert des LC 211 gleich 0 wird, führt die CTRL 21 eine vorgeschriebene Steueroperation aus. Es ist zu beachten, daß es nicht erforderlich ist, daß der Schleifenzähler 211 in der Steuervorrichtung 21 enthalten ist. Es ist ausreichend, wenn irgendwo innerhalb der gesamten Vorrichtung, die die Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel enthält, eine Wiederholungssteuereinrichtung vorhanden ist, die die gleiche Funktion wie der Schleifenzähler besitzt. Wie im Fall der vorangehenden ersten Ausführungsform handhabt die vorliegende Ausführungsform ebenfalls nur die Mantisse M der Gleitkommazahl. Im folgenden wird die Funktion der VSFT 15 erläutert, die zusätzlich zu den Bestandteilen der ersten Ausführungsform vorgesehen ist. Zur Durchführung der Näherung über n Bits ist es erforderlich, die Multiplikation mit derselben Genauigkeit auszuführen. Im folgenden werden die 2n Bit mal 2n Bit Multiplikation, die 2n Bit mal 2n Bit Division und das Ziehen der 2n-Bit-Quadratwurzel gemäß der vorliegenden Erfindung erläutert. Die 2n Bit mal 2n Bit Multiplikation wird wie in Fig. 12 gezeigt durchgeführt. Beim Multiplizieren eines 2n-Bit-Multiplikanden X mit einem 2n-Bit-Multiplizierer Y wird X in die oberen n Bits XH und in die unteren n Bits XL aufgeteilt, während Y in die oberen n Bits YH und die unteren n Bits YL aufgeteilt wird. Anschließend werden die Partialprodukte XH YH, XH YL, XL YH, XL YL berechnet und zur Ziffernanpassung addiert, um das Ergebnis der Multiplikation X Y zu erhalten. Wenn die Partialprodukte XL YL und XL YH addiert werden, ist es erforderlich, die Ziffern anzupassen, indem der vom MULT 10 ausgegebene Wert XL YL nach rechts verschoben wird, während die leeren Bits mit Nullen gefüllt werden. In der vorliegenden Ausführungsform werden unter der Berücksichtigung der Tatsache, daß die behandelten Daten Gleitkommadaten sind, zum Zeitpunkt des Verschiebens zur Ziffernanpassung die Daten gerundet, die 2n Bits oder mehr unterhalb des MSB liegen. In ähnlicher Weise wird beim Addieren des Partialprodukts XH YH und der kumulativen Summe der Partialprodukte XL YL, XL YH und XH YL eine Verschie bung zur Ziffernanpassung und ein Runden derjenigen Daten ausgeführt, die 2n Bits oder mehr unterhalb des MSB angeordnet sind. Diese Operationen werden von der VSFT 15 bewerkstelligt. Die VSFT 15 bereitet ferner die binären Daten für die "3" auf, die im Fall des Ziehens der Quadratwurzel verwendet werden.
- Im folgenden wird die Funktion der ALU 16 erläutert. Bei der Multiplikation mit einer Genauigkeit größer als n Bits mal n Bits addiert der Addierer 19 der ALU 16 dann, wenn ein vom Multiplizierer 10 berechnetes Partialprodukt zur Ziffernanpassung in der VSFT 15 verschoben worden ist und anschließend in den SL 18 eingegeben worden ist und ein Partialprodukt vom Multiplizierer 10 in den SL 17 eingegeben worden ist, die Inhalte des SL 17 und die Inhalte des SL 18. Das Ergebnis wird zum SL 18 zurück übertragen und zum nächsten Partialprodukt addiert. In dem Fall, in dem eine Verschiebung zur Ziffernanpassung vor dem Addieren zum nächsten Partialprodukt erforderlich ist, wird jedoch das Ergebnis der Addition über den BUS 14' zur BSFT 15 gesendet und nach einer Verschiebung zum SL 18 übertragen.
- Beim Dividieren mit einer größeren Genauigkeit als n Bits geteilt durch n Bits führt andererseits die ALU 16 eine Subtraktion des Multiplikationsergebnisses von 2 in Ausdrücken von 2n Bits anstelle der Subtraktion mittels der SBSF 11 in Ausdrücken von n Bits in der gleichen Anzahl von Maschinenzyklen durch. Wenn der Ausdruck B xi der Gleichung (3) für die 2n Bit mal 2n Bit Multiplikation gilt, wird er als Ausgang vom Addierer 19 erhalten, um diesen von 2 zu subtrahieren, wobei es erforderlich ist, ein Zweierkomplement zu berechnen. Genauer wird der Ausgang des Addierers 19 zum SL 17 oder zum SL 18 übertragen, wobei die entsprechenden Bits invertiert werden. Wie oben in Verbindung mit der Erläuterung der Funktion der SBSF 11 erwähnt worden ist, wird die Addition einer 1 weggelassen.
- Beim Ziehen der Quadratwurzel mit einer größeren Genauigkeit als n Bits führt die ALU 16 die Berechnung des Ausdrucks 1/2 (3 - A Ai²) der Gleichung (8) aus. Der Ausdruck 1/3 (3 - A xi²) wird modifiziert zu 3/2 - (A xi²)/2, woraufhin die ALU 16 die folgenden Operationen ausführt. Das Produkt der 2n Bit mal 2n Bit Multiplikation A xi² wird als Ausgang der AU 19 erhalten. Anschließend wird der von der BSFT 15 erzeugte Wert 3 zum SL 18 übertragen, der Ausgang der AU 19 zum SL 17 übertragen, beide Werte um 1 Bit nach rechts verschoben, der Ausgang der AU 19 vom SL 17 invertiert und die Inhalte des SL 17 und die Inhalte des SL 18 von der AU 19 addiert. Dies schließt die Berechnung von 3/2 - (A xi²)/2 ab.
- Da die ALU 16 zusätzliche zu den obenbeschriebenen Fähigkeiten weitere Fähigkeiten besitzen kann, kann die Vielseitigkeit der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel offensichtlich verbessert werden.
- Die Prozedur der obenerwähnten Multiplikation, Division und des Ziehens der Quadratwurzel wird im folgenden mit Bezug auf die Flußdiagramme erläutert.
- Fig. 13 ist ein Flußdiagramm, das die Berechnungsprozedur der Multiplikation zeigt. In der vorliegenden Ausführungsform der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel ist die Prozedur zum Erhalten des Produktes X Y unterschiedlich, in Abhängigkeit davon, ob die Anzahl der Bits von X oder Y größer als n ist.
- Hierzu wird ermittelt, ob eine der Eingangsdaten X oder Y größer als n Bits ist (581). Wenn keine der Daten größer als n Bits ist, rückt die Prozedur zum Schritt 582 vor, in dem X in das MSRX 12 und Y in das MSRY 13 eingegeben werden. Anschließend werden der Inhalt (X) des MSRX 12 und der Inhalt (Y) des MSRY 13 im MULT 10 multipliziert (583). Dies schließt die Multiplikation in dem Fall ab, in dem keine der multiplizierten Daten größer als n Bits ist.
- In dem Fall, in dem entweder X oder Y oder beide größer als n Bits sind (in dieser Ausführungsform werden zur Erläuterung beispielsweise Daten mit 2n Bits verwendet), rückt die Prozedur vom Schritt 583 zum Schritt 584 vor, in dem XL in das MSRX 12 und YL in das MSRY 13 eingegeben werden (584). Anschließend werden der Inhalt XL des MSRX 12 und der Inhalt YL des MSRY 13 im MULT 10 multipliziert und das Ergebnis XL YL an die SBSF 11 ausgegeben (bei einer Multiplikation, bei der die Anzahl der Bits der Quellendaten größer als n ist, führt die SBSF 11 keine Operation durch und das Ergebnis wird vom MULT 10 unverändert ausgegeben) und anschließend über den BUS 14 an die BSFT 15 ausgegeben, in der es n Bits nach rechts verschoben wird, wobei mit Nullen aufgefüllt wird (585).
- Im folgenden Schritt 586 werden die Inhalte des MSRY 13 durch YH ersetzt, die Inhalte des MSRX 12 und die Inhalte des MSRY 13 multipliziert, das Ergebnis der Multiplikation XL YH zum SL 17 übertragen, die Ergebnisse des Schrittes 585 zum SL 18 übertragen und die Inhalte des SL 17 und des SL 18 in der AU 19 addiert (587).
- Als nächstes wird XH in das MSRX 12 und YL in das MSRY 13 eingegeben (588). Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 multipliziert, das Ergebnis der Multiplikation XH YL über den BUS 14 zum SL 18 übertragen, das im Schritt 587 erhaltene Ergebnis der Addition über den BUS 14 im Verlauf dieser Multiplikation zum SL 17 übertragen und die Inhalte des SL 17 und die Inhalte des SL 18 in der AU 19 addiert (589). Das Ergebnis dieser Addition wird über den BUS 14 zur BSFT 15 übertragen, in der es um (n - 1) Bits nach rechts verschoben wird, wobei mit Nullen aufgefüllt wird (590).
- Als nächstes wird YH in das MSRY 13 eingegeben (Schritt 591), die Inhalte des MSRX 12 und die Inhalte des MSRY 13 multipliziert, das Ergebnis der Multiplikation XH YH zum SL 17 übertragen, das Ergebnis der Verschiebung im Schritt 590 im Verlauf dieser Multiplikation zum SL 18 übertragen und schließlich die Inhalte des SL 17 und der Inhalt des SL 18 in der AU 19 addiert (592).
- Dies schließt die Multiplikation X Y ab.
- Fig. 14 ist ein Flußdiagramm, das die Berechnungsprozedur der Division zeigt. In der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß der vorliegenden Erfindung ist die Prozedur für die Division A:B unterschiedlich, in Abhängigkeit davon, ob die Anzahl der Bits der Eingangsdaten A oder B größer als n ist. Bei der Berechnung von A:B wird zuerst 1/B mit der Rekursionsformel (3) berechnet, woraufhin (1/B) A berechnet wird.
- Hierzu wird unabhängig von der Anzahl der Bits von A und B die Näherung 1/B auf der Grundlage der Rekursionsformel (3) unter der Annahme ausgeführt, daß die Anzahl der signifikanten Ziffern n oder weniger beträgt. Die Annahme besteht darin, daß die Anzahl der Bits von B gleich n oder weniger ist, wobei die Berechnung unter Verwendung einer n Bit mal n Bit Multiplikation ausgeführt wird (701). Dieser Schritt 701 wird mit Bezug auf Fig. 16 genauer erläutert.
- Beginnend im Flußdiagramm der Fig. 16 wird die Anzahl der Wiederholungen der Berechnung gemäß der Rekursionsformel im LC 211 der CTRL 21 gesetzt (901). Die Anzahl der Wiederholungen wird hinsichtlich der Genauigkeit des Anfangswerts und der Genauigkeit des zu berechnenden Werts im voraus bestimmt. In der vorliegenden Ausführungsform wird die Anzahl der Wiederholungen gesetzt, um die maximale Genauigkeit zu erhalten, die bei der Berechnung unter Verwendung einer n Bit mal n Bit Multiplikation möglich ist.
- Als nächstes wird der Anfangswert (xi; i = 0) in der Berechnung gemäß der Rekursionsformel aus der CT 20 in der folgenden Weise gelesen (902). Der Divisor B ist bereits auf den BUS 14 gelegt worden. Unter der Annahme, daß die Daten auf dem BUS 14H zum Zeitpunkt des Lesens des Anfangswerts gleich b2n-1 b2n-2 ... bn+1 bn sind, werden die (m- ) -Bit-Daten b2n-2 b2n-3 ... b2n-m in das CTAR 201 eingegeben. Dies beruht darauf, daß die Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel Gleitkomma-Mantissendaten handhabt, so daß der Wert des Ganzzahlbits b2n-1 auf dem BUS 14H unveränderlich gleich 1 ist. Die l-Bit-Anfangsdaten, die der mittels des CTAR 201 gelesenen Adresse entsprechen, werden aus dem CTM 202 gelesen. Der Ausgang des CTM 202 wird in das CTOR 203 eingesetzt. Die Datenbreite des CTOR 203 beträgt in dieser Ausführungsform 2n Bits, kann jedoch schmaler sein. Die Datenbreite l der vom CTM 202 ausgegebenen Daten beträgt (m - 1) Bits oder mehr. Im Fall der Division beträgt jedoch der Bereich, aus dem der Anfangswert gewählt werden kann, hinsichtlich des Reziprokwertes eine Zahl zwischen 1 und 2 gleich 1/2 < x ≤ 1. Der Anfangswert von dezimal 1 ist in der Binärschreibweise definiert als 0,111... . Daher sind das Ganzzahlbit und das erste Bit unterhalb des Binärpunkts des Anfangswertes gleich 0 bzw. 1. Der CTM 202 besitzt eine Logikschaltung, die zum Zeitpunkt der Speicherung des Anfangswerts im CTOR 203 für eine Division, bei der die Datenbreite des CTM 202 auf das zweite Zeichen oder weniger unterhalb des Binärpunktes eingestellt sein kann, in das Ganzzahlbit und das erste Bit unterhalb des Binärpunktes eine 0 bzw. 1 eingibt. Alternativ ist es möglich, die Genauigkeit des Anfangswertes zu erhöhen, ohne die Datenbreite l zu ändern. Ein vorgegebener fester Wert wird in die unteren 2n - l - 2 Bits des CTOR 203 eingegeben.
- Der im CTOR 203 gesetzte Anfangswert wird über den BUS 14 in das MSRX 12 eingegeben (903). Andererseits wird der Divisor B in das MSRY 13 eingegeben (904). Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im MULT 10 multipliziert (905). Somit wird der Ausdruck B xi der Gleichung (3) berechnet.
- Als nächstes wird das Ergebnis der Multiplikation B xi mittels des SUB 111 von 2 subtrahiert, um den Ausdruck (2 - B xi) in Gleichung (3) zu berechnen (906). Die SFT 112 verschiebt das Ergebnis der Subtraktion (2 - B xi) um 1 Bit nach links, während mit Nullen aufgefüllt wird, woraufhin das Ergebnis in das SFC 114 und das SSOR 113 eingesetzt wird (907). Somit wird der Binärpunkt angepaßt. Anschließend werden die oberen n Bits der Inhalte des SSOR 113 über den BUS 14H in das MSRY 13 eingegeben (908).
- Im folgenden Schritt 909 werden die Inhalte des MSRX 12 und die Inhalte MSRY 13 im MULT 10 multipliziert. Da xi zu diesem Zeitpunkt im MSRX 12 verbleibt, ergibt die Multiplikation im Schritt 909 xi (2 - B xi). Der SUB 111 leitet das Ergebnis dieser Multiplikation an die SFT 112 weiter, ohne irgendeine Operation damit durchzuführen, wobei die SFT 112 ein Linksverschiebung zur Anpassung der Binärpunktposition durchführt (910). Das verschobene Ergebnis wird in das SSOR 113 eingesetzt, wobei die oberen n Bits der Inhalte des SSOR 113 über den BUS 14H in das MSRX 12 eingegeben werden (911). Als Ergebnis der vorangehenden Prozedur wird die Einsetzung (xi (2 - B xi) T xi+1) der rechten Seite der Rekursionsformel (3) in die linke Seite durchgeführt.
- Als nächstes wird der Inhalt des LC 211 vom DEC 212 im Söhritt 912 dekrementiert, wobei der dekrementierte Wert in den LC 211 eingesetzt wird, woraufhin die Prozedur zum Schritt 904 zurückkehrt (913). Die obenerwähnten Schritte 904 bis 913 werden wiederholt, bis der Wert des LC 211 gleich 0 wird. Wenn die Inhalte des LC 211 die Bedingung zum Beenden der Berechnung erfüllen, beendet die CTRL 21 die Operation und veranlaßt die Prozedur, zum Schritt 702 in Fig. 14 vorzurücken.
- Im Schritt 702 der Fig. 14 wird ermittelt, ob die Anzahl der Bits von A oder B größer als n ist. Falls nicht, geht die Prozedur zum Schritt 703 über, in dem A in das MSRY 13 eingegeben wird. Zu diesem Zeitpunkt hält das MSRX 12 den Wert (= xi+1) von 1/B der signifikanten Ziffernzahl, die gleich n Bits oder weniger beträgt, als Ergebnis der in Verbindung mit Schritt 701 beschriebenen Prozedur. Anschließend werden im folgenden Schritt 704 die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im MULT 10 multipliziert. Das Ergebnis dieser Multiplikation wird über die dem MULT 10 folgende SBSF 11 ohne Modifikation weitergeleitet und in die SFT 112 eingegeben, in der eine Linksverschiebung ausgeführt wird, um die Binärpunktposition anzupassen (705), und wird anschließend in das SFC 114 und das SSOR 113 eingegeben. Dies schließt die Division A:B ab.
- In dem Fall, in dem A oder B größer als n Bits ist, geht die Prozedur vom Schritt 702 zum Schritt 706 über, in dem die unteren Bits BL des Divisors B in das MSRY 13 eingegeben werden. Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im MULT 10 multipliziert (707). Das Ergebnis dieser Multiplikation BL xi wird über die SBSF 11 und die SFT 112 ohne Modifikation zur BSFT 15 weitergeleitet, wo es um (n - 1) Bits nach rechts verschoben wird, wobei mit Nullen aufgefüllt wird, um die Ziffernanpassung und ein Runden durchzuführen (707). Im folgenden Schritt 708 werden die oberen Bits BH des Divisors B in das MSRY 13 eingegeben. Anschließend werden in derselben Weise wie oben die Inhalte des MSRX 12 und die Inhalte MSRY 13 multipliziert, das Ergebnis der Multiplikation BH xi über den BUS 14 zum SL 17 übertragen, das Ergebnis der Schiebeoperation im Schritt 707 von der SBFT 15 im Verlauf dieser Multiplikation zum SL 18 übertragen und die Inhalte des SL 17 und die Inhalte des SL 18 in der AU 19 addiert (709). Das Ergebnis dieser Multiplikation (BH + BL) xi wird über den Bus 14 zum SL 17 übertragen, um es zur Bildung des Einerkomplements oder zur Bildung des Zweierkomplements zu invertieren, wobei der Ausdruck (2 - B xi) der Gleichung (3) in der AU 19 erhalten wird (710).
- Als nächstes wird für die Multiplikation das Ergebnis dieser Berechnung AU = (2 - B xi) mit xi der genäherte Wert von 1/B, der in MSRX 12 gespeichert ist, und die unteren n Bits von AU, AUL, über den BUS 14L zum MSRY 13 übertragen (711). Der MULT 10 multipliziert anschließend die Inhalte des MSRX 12 und die Inhalte des MSRY 13, wobei das Ergebnis der Multiplikation AUL xi ohne Modifikation zur BSFT 15 zur Ziffernanpassung (Verschiebung um (n - 1) Bits nach rechts und Auffüllen mit Nullen) und zur Rundung gesendet wird (712). Als nächstes werden die oberen n Bits der AU, AUH, über den BUS 14 zum MSRY 13 übertragen (713), woraufhin die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im MULT 10 multipliziert werden. Im Verlauf dieser Multiplikation wird das Ergebnis der Schiebeoperation im Schritt 712 von der BSFT 15 zum SL 18 übertragen, während das Ergebnis der laufenden Multiplikation AUH xi zum SL 17 übertragen wird, woraufhin die beiden in der AU 19 addiert werden (714).
- Als nächstes wird im Schritt 715 der 2-n-Bit-Wert A und AU xi = 1/B, die auf die obenbeschriebene Weise erhalten wurden, in der mit Bezug auf Fig. 13 erläuterten Weise multipliziert (715), wodurch die Berechnung der Division A:B abgeschlossen wird.
- Fig. 15 ist ein Flußdiagramm, das die Berechnungsprozedur des Ziehens der Quadratwurzel zeigt. In der Vorrichtung zum Multiplizieren, Dividieren und Ziehen der Quadratwurzel gemäß der vorliegenden Erfindung ist die Prozedur des Ziehens der Quadratwurzel unterschiedlich, in Abhängigkeit davon, ob die Anzahl der Bits der Eingangsdaten A größer als n ist. Zuerst wird 1/ A unter Verwendung der Rekursionsformel (8) der Gleichung (7) erhalten, woraufhin das Ergebnis mit A multipliziert wird, um A zu erhalten. Zu Beginn wird unabhängig von der Anzahl der Bits von A die Näherung von 1/ A auf der Grundlage der Rekursionsformel (8) unter der Annahme ausgeführt, daß die Anzahl der signifikanten Ziffern gleich n oder kleiner ist (801). Die Annahme besteht darin, daß die Anzahl der Bits von A gleich n oder kleiner ist, wobei die Berechnung unter Verwendung einer n Bit mal n Bit Multiplikation ausgeführt wird. Dieser Schritt 801 wird mit Bezug auf das Flußdiagramm der Fig. 17 genauer erläutert.
- Zu Beginn wird wie im Flußdiagramm der Fig. 17 gezeigt die Anzahl der Wiederholungen der Berechnung gemäß der Rekursionsformel (8) in das LC 211 der CTRL 21 eingesetzt. Wie bei der Division wird die Anzahl der Wiederholungen im voraus festgelegt. Als nächstes wird der Anfangswert (xi; i = 0) in der Berechnung gemäß der Rekursionsformel (8) aus der CT 20 gelesen (1002). Die Prozedur ist die gleiche wie diejenige für die Division. Beim Ziehen der Quadratwurzel ist jedoch dann, wenn der Exponent eine ungerade Zahl ist und das Verfahren verwendet wird, bei dem die Berechnung durchgeführt wird, nachdem der Exponent durch Dividieren der Mantisse durch 2 in eine gerade Zahl überführt worden ist, das Ganzzahlbit der Mantisse nicht unbedingt gleich 1. Während der Wert der Zahl A, deren Wurzel zu berechnen ist, auf den BUS 14 gelegt wird, werden somit dann, wenn die Daten auf dem BUS 14H gleich b2n-1 b2n-2 ... bn+1 bn sind, die (m-1)-Bit- Daten b2n-1 b2n-2 ... b2n-(m+1) in das CTAR 201 eingegeben. Die Inhalte des CTAR 201 werden als Adresse zum Auslesen des entsprechenden l-Bit-Anfangswerts aus dem CTM 202 verwendet. Da beim Ziehen der Quadratwurzel der Bereich, aus dem die Anfangswerte gewählt werden können, gleich 1/ 2 < x ≤ 2 ist, ist das Ganzzahlbit des Anfangswerts nicht unbedingt 1, während der Ausgang des CTM 202 in das CTOR 203 eingesetzt wird. Anders als im Fall der Division kann daher das Ganzzahlbit nicht im voraus gesetzt werden.
- Der aus dem CTOR 203 gelesene Anfangswert wird über den BUS 14 an das MSRX 12 weitergeleitet (1003). Die Zahl A, deren Wurzel berechnet werden soll, wird in das MSRY 13 eingegeben (1004). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert. Somit wird der Ausdruck A xi der Gleichung (8) berechnet (1005). Die SFT 112 führt eine Verschiebung nach links um 1 Bit bezüglich des Ergebnisses der Multiplikation durch, um die Position des Binärpunkt anzupassen. Das Ergebnis wird in das SFT 114 und das SSOR 113 eingegeben (1006). Die oberen n Bits der Inhalte des SSOR 113 werden über den BUS 14H an das MSRY 13 weitergeleitet (1007). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert (1008). Da das MSRX 12 den Wert von x hält, wird der Ausdruck A xi² der Gleichung (8) erhalten.
- Als nächstes subtrahiert der SUB 111 das Ergebnis A xi² der Multiplikation von 3 (1009). Somit wird der Ausdruck (3 - A xi²) der Gleichung (8) berechnet. In diesem Fall gibt die SFT 112 das Ergebnis der Subtraktion ohne Durchführung einer Verschiebung in das SSOR 113 ein. Als Folge hiervon wird das Ergebnis der Subtraktion relativ um ein Bit nach rechts verschoben, wobei der Ausdruck 1/2 (3 - A xi²) der Gleichung (8) berechnet wird (1010).
- Die oberen n Bits des SSOR 113 werden über den BUS 14H an das MSRY 13 weitergeleitet (1011). Die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden multipliziert (1012). Da das MSRX 12 den Wert von x&sub1; 1/2 (3 - A xi²) hält, wird der Ausdruck auf der rechten Seite der Gleichung (8) erhalten. Die SFT 112 führt eine Verschiebung um links bezüglich des Ergebnisses der Multiplikation aus, um die Position des Binärpunktes anzupassen (1013). Die oberen n Bits der Inhalte des SSOR 113 werden anschließend über den BUS 14H an das MSRY 12 weitergeleitet (1014). Als Folge hiervon wird das Einsetzen der rechten Seite in die linke Seite der Rekursionsformel durchgeführt. Der Inhalt des LC 211 wird vom DEC 212 dekrementiert, wobei der resultierende Wert in den LC 211 eingegeben wird (1015). Wenn die Inhalte des LC 211 die Bedingung zum Beenden der Berechnung erfüllen, beendet die CTRL 21 die Prozedur. Ansonsten kehrt die Prozedur zum Schritt 1004 zurück (1016). Dies schließt die Prozedur zum Nähern von 1/ A ab, wobei die Prozedur zum Schritt 802 in Fig. 15 übergeht. Bei Beendigung der Prozedur der Fig. 17 hält das MSRX 12 den genäherten Wert von A.
- Im Schritt 802 in Fig. 15 wird ermittelt, ob die Anzahl der Bits von A größer als n ist. Wenn A n Bits oder weniger umfaßt, geht die Prozedur zum Schritt 803 über, in dem A in das MSRY 13 eingegeben wird. Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 vom MULT 10 multipliziert (804). Zu diesem Zeitpunkt hält das MSRX 12 den genäherten Wert von 1/ A, der im Schritt 801 worden ist. Das Ergebnis der Multiplikation wird ohne Modifikation über den SUB 111 zur SFT 112 weitergeleitet, in der es zur Binärpunktanpassung nach links verschoben wird, wobei mit Nullen aufgefüllt wird (805). Das verschobene Ergebnis wird in das SFC 114 und das SSOR 113 eingegeben, womit das Ziehen der Quadratwurzel abgeschlossen ist. Als Folge hiervon hält das SSOR 113 die Quadratwurzel A.
- Wenn im Schritt 802 festgestellt wird, daß A mehr als n Bits umfaßt, rückt die Prozedur zum Schritt 806 vor, in dem die unteren n Bits AL von A in das MSRY 13 eingesetzt werden. Als nächstes werden die Inhalte des SL 17 und die Inhalte des SL 18 im MULT 10 multipliziert, wobei das Ergebnis der Multiplikation ohne Modifikation zur BSFT 15 weitergeleitet wird, in der es zur Ziffernanpassung um (n - 1) Bits nach rechts verschoben wird und mit Nullen aufgefüllt und gerundet wird (807). Anschließend werden die oberen n Bits AH von A in das MSRY 13 eingegeben (808), die Inhalte des MSRX 12 und die Inhalte des MSRY 13 werden vom MULT 10 multipliziert und das Ergebnis der Verschiebeoperation seitens der BSFT 15 im Schritt 807 im Verlauf dieser Multiplikation zum SL 18 übertragen. Ferner wird das Ergebnis der vorliegenden Multiplikation über den SUB 111 ohne Modifikation zur Verschiebung für die Binärpunktanpassung in der SFT 112 weitergeleitet und über den BUS 114 zum SL 17 übertragen. Als nächstes werden die Inhalte des SL 17 und die Inhalte des SL 18 in der AU 19 addiert (809). Das Ergebnis der Addition wird mit "AU" bezeichnet.
- Anschließend werden die unteren n Bits AUL des Ergebnisses der Addition von AU durch den Addierer 19 über den BUS 14L zum MSRY 13 übertragen, wo sie gespeichert werden (810). Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im MULT 10 multipliziert und das Ergebnis der Multiplikation ohne Modifikation zur BSFT 15 übertragen, in der es zur Ziffernanpassung um n Bits nach rechts verschoben wird, wobei mit Nullen aufgefüllt wird (811).
- Als nächstes werden die unteren n Bits AUH des Ausgangs AU der AU 19 über den BUS 14H zur Speicherung zum MSRY 13 übertragen (812). Anschließend werden die Inhalte des MSRX 12 und die Inhalte des MSRY 13 im Multiplizierer 10 multipliziert und das Ergebnis der Multiplikation ohne Modifikation über den SUB 111 zur SFT 112 weitergeleitet, wo es zur Binärpunktpositionsanpassung verschoben wird, und anschließend über den BUS 14 zum SL 17 übertragen. Im Verlauf der Multiplikation wird das im Schritt 811 in der BSFT 15 erhaltene Ergebnis zum SL 18 übertragen. Anschließend werden die Inhalte des SL 17 und die Inhalte des SL 18 in der AU 19 addiert (813). Das Ergebnis dieser Addition wird über den BUS 14 zum SL 17 ausgegeben und zur Halbierungverarbeitung das am weitesten links liegende Bit mit Null aufgefüllt und eine Verschiebung um 1 Bit nach rechts sowie eine Invertierung ausgeführt. Ferner wird der Dezimalwert von 3/2, der in der BSFT 15 durch Verschieben um 1 Bit nach rechts und Auffüllen des am weitesten links liegenden Bits mit 0 erzeugt worden ist, in den SL 18 übertragen, woraufhin die Inhalte des SL 17 und die Inhalte des SL 18 in der AU 19 addiert werden (814). Als Folge hiervon werden die Subtraktion von 3 und die Halbierungsverarbeitung bewerkstelligt.
- Anschließend werden genau die gleichen Prozeduren wie in den Schritten 810 bis 813 unter Verwendung des Ergebnisses der Addition, das in der AU 19 im Schritt 814 erhalten worden ist, und des im MSRX 12 gespeicherten Werts (der Näherung von 1/ A) wiederholt (815-818). Das Ergebnis der Addition, das in Schritt 818 erhalten wird, ist die Näherung von 1/ A und ist doppelt so genau wie der in Schritt 801 erhaltene genäherte Wert. Wenn das 2n-Bit- Ergebnis der Addition, das in Schritt 818 erhalten wird, und die Zahl A (2n Bits), deren Quadratwurzel berechnet werden soll, wie in Verbindung mit Fig. 13 erläutert, multipliziert werden, kann somit die gewünschte 2n-Bit- Quadratwurzel A als Ergebnis von der AU 19 erhalten werden (819).
- Im folgenden wird zuerst eine weitere Ausführungsform beschrieben, wobei die Beziehung zwischen der Arithmetikeinheit und einer hierdurch erhaltenen Lösung betrachtet wird.
- Für gewöhnliche Programmierer ist es schwierig, ein Gleitkommaoperationsprogramm für Gleitkommadaten, wie es in Fig. 18 gezeigt ist, zu beschreiben, da Expertenwissen erforderlich ist, weshalb es üblich war, daß ein Programmierexperte Bibliotheken erstellt hat und ein gewöhnlicher Programmierer diese genutzt hat. Derzeit umfassen diese Bibliotheken nicht nur die Funktionen zur Durchführung der Addition, der Subtraktion, der Multiplikation und der Division, sondern auch diejenige des Ziehens der Quadratwurzel sowie elementare Funktionen.
- Ferner ist seit den letzten Jahren ein Computer verfügbar, der die Funktion zur Durchführung von funktionellen Operationen unter Verwendung von Gleitkommadaten als Befehl enthält.
- Die derzeit verwendete Technik zur Verwirklichung des Ziehens der Quadratwurzel und der Division wird prinzipiell in zwei Verfahren klassifiziert. Eines ist die Dichotomie, die das Theorem des Zwischenwerts und die Intervallreduzierungstechnik verwendet, um ein ziffernweises Auflösen durchzuführen, während die andere die Näherung ist, wie sie durch die Newton-Raphson-Iteration dargestellt wird.
- In den Hauptrahmen und den Minicomputern sind die Datenformate für die Gleitkommazahl und die Operationsgenauigkeiten hierfür bei unterschiedlichen Herstellern verschieden, weshalb ein Austausch von Programmen und Daten nicht zulässig ist, wodurch die Übersetzungsfähigkeit der Software herabgesetzt wird. Die bestehenden Probleme spiegeln sich in der Industrie wieder, wobei eine Normung in der Industrie konform zur allgemeinen internationalen Norm (IEEE-Norm 754) gefördert wurde. Die IEEE-Norm 754 regelt das Datenformat, die arithmetischen Ergebnisse, Verzweigungsbedingungen, das Verfahren der Ausnahmeverarbeitung und dergleichen, um eine sehr hohe Übertragungsfähigkeit sicherzustellen. Bisher hat sich in der gesamten Mikrocomputerindustrie die Normierung konform zur IEEE-Norm weiterentwickelt, wobei die Anwendung dieser Norm weiter ausgedehnt wird. Die IEEE-Norm 754 fordert strikte Lösungen in der grundlegenden Arithmetikverarbeitung, die die Addition, die Subtraktion, die Multiplikation und die Division sowie das Ziehen der Quadratwurzel umfaßt. Die strengen Lösungen stimmen mit der Antwort überein, die für gerundete arithmetische Ergebnisse steht, die mit unendlicher Genauigkeit und über einen unendlichen Ausdrucksbereich ausgedrückt werden können.
- In der Praxis ist es unmöglich, Lösungen mit unendlicher Genauigkeit zu erhalten, um strenge Lösungen beim Dividieren und Ziehen der Quadratwurzel zu erhalten. Daher wird zur Lösung die Dichotomie verwendet, die die Genauigkeit bis zur benötigten Ziffer bilden kann, wobei Zwischenergebnisse der Dichotomie verwendet werden, um eine Lösung zu erhalten, die mit derjenigen mit unendlicher Genauigkeit zusammenfällt.
- Das IEEE-Komittee tritt für ein Verfahren ein, das drei Merker verwendet, um eine Berechnung mit einer Gleitkomma-Arithmetikeinheit von endlicher Datenformatlänge durchzuführen. Die Fig. 19 zeigt eine Datenausdrucksform, die zum Erhalten strenger Lösungen mit endlichen arithmetischen Betriebsmitteln verwendet wird. In Fig. 19 bezeichnet 1 ein Überlaufbit, 2 ein MSB-Bit, 3 ein LSB-Bit, 4 ein G-Bit (Schutzbit), 5 ein R-Bit (Rundungsbit) und 6 ein S-Bit (Sticky-Bit). Die Mantisse umfaßt n + 3 Bits, wobei die 3 Bits mit kleineren Gewichtungen als das LSB mit G-, R- und S-Merker bezeichnet werden. Das G-Bit und das R-Bit stellen das (n+1)-te und das (n+2)-te Bit dar, während das S-Bit die Ergebnisse der Oder-Verknüpfung der unendlich kleinen Bits beginnend beim (n+3)-ten Bit speichert.
- Durch richtiges Erhalten der obenerwähnten (n+3)-Bit- Kette und Anwenden der anschließenden Rundungsoperation auf die Bitkette kann eine genaue n-Bit-Lösung erhalten werden. Die IEEE-Norm 754 regelt den Rundungsmodus. Fig. 4 zeigt eine Tabelle zum Erhalten der Ergebnisse des Rundens aus den G-, R- und S-Bits entsprechend unterschiedlichen Rundungsmodi. Es ist zu beachten, daß "-" in Fig. 20 keine Änderung anzeigt.
- Das Prinzip der Dichotomie wird mit Bezug auf Fig. 21 beschrieben. Die Dichotomie ist die Anwendung der mathematischen Theoreme, die als Theorem der Zwischenwert- und Intervallreduktionstechnik bezeichnet werden und auf die auf den Seiten 56 bis 76 der Literatur Bezug genommen wird, die bei (b) in der Spalte "Referenzliteratur" angegeben ist, wie später beschrieben wird. Wie in Fig. 21 gezeigt, wird bei der Dichotomie ein geschlossenes Intervall I0 = [a,b] halbiert und eine der Hälften als I1 = [a1,b1] definiert. Anschließend wird I1 ebenfalls halbiert, um eine der Hälften zu erzeugen, die als I2 definiert wird, wobei die obige Prozedur wiederholt wird, um eine reduzierte Intervallkette von I0 I1 ... zu erzeugen.
- Wenn f(x) innerhalb eines Intervalls [a,b] stetig ist und f(a) ≤ y0, f(b) > y0 gilt, existiert ein ξ, das f(ξ) = y0 ohne Fehlstelle innerhalb eines Intervalls a ≤ ξ < b erfüllt. Wenn die Berechnung wiederholt wird, wobei für Zentralpunkte cj, die bezüglich einzelner Intervalle Ij = [aj,bj] (a0 = a, b0 = b) genommen werden,
- aj+1 = cj und bj+1 = bj eingesetzt werden,
- wenn f(cj) ≤ y0 gilt und
- aj+1 = aj und bj+1 = bj eingesetzt werden,
- wenn f(cj) > y0 gilt,
- und anschließend
- Ij = [aj+1,bj+1]
- festgelegt wird, wird das ξ als gemeinsamer Teil (Grenze) der reduzierten Intervallkette von I0 I1 ... erhalten.
- Es stehen verschiedene Verfahren zum Erhalten von Näherungslösungen für die Division und die Quadratwurzel zur Verfügung, wie z. B. die Newton-Raphson-Iteration, das CORDIC-Verfahren und die Taylor-Erweiterung, wobei insbesondere die obenerwähnte Newton-Raphson-Iteration aufgrund der Konvergenzgeschwindigkeit häufig verwendet wird.
- Für das obenerwähnte Studium ist die folgende Referenzliteratur nützlich.
- (a) IEEE-Norm 754-1985 für Binär-Gleitkommaarithmetik, IEEE, 1985.
- (b) "Numerical Calculation of Elementary Function" von Hitotsu Matsu, Educational Publish, 1984.
- (c) Coonen, J. I., "An Implementation Guide to a Proposed Standard for Floating-Point Arithmetics", IEEE-Computer, Januar 1980.
- Die Dichotomie ist effizient, um strenge Lösungen zu erhalten, jedoch erfordert sie Bedingungsentscheidungs- Operationen, die in ihrer Anzahl häufiger sind als die Ziffernanzahl, die erhalten werden sollen, mit dem Ergebnis, daß die Operationsgeschwindigkeit proportional zur Anzahl der Ziffern ist und Lösungen nicht mit hohen Geschwindigkeiten erhalten werden können. Obwohl dank der Entwicklung der Arithmetikhardware, die auf die Multiplikation und ähnliche Verarbeitungen gerichtet ist, die für die Multiplikation und ähnliche Verarbeitungen erforderliche Zeitspanne drastisch gesenkt worden ist, muß einmal während eines Maschinenzyklus eine Bedingungsentscheidung durchgeführt werden, wobei die Kosten der Entscheidung hoch bleiben.
- Andererseits ist eine Näherung wie z. B. die Newton- Raphson-Iteration effizient, um bei der Operation der Division und des Ziehens der Quadratwurzel Lösungen mit hohen Geschwindigkeiten zu erhalten, wobei jedoch die Bitkette der erhaltenen Ziffern manchmal nicht richtig ist und keine strengen Lösungen erhalten werden können.
- Es besteht Bedarf an einem arithmetischen Algorithmus, bei dem die Anzahl der Iterationen im Gegensatz zur Dichotomie für die Verarbeitung oder Berechnung strenger Lösungen für das Ziehen der Quadratwurzel und die Division mit hoher Effizienz verringert werden kann, wobei alle Bits korrekt ermittelt werden können. Diese Ausführungsform schafft einen solchen arithmetischen Algorithmus.
- Um einen sehr effizienten Algorithmus zum Dividieren und Ziehen der Quadratwurzel zu schaffen, werden Näherungslösungen mittels z. B. der Newton-Raphson-Iteration berechnet, wobei die resultierende Bitkette unter Verwendung der Addition, Subtraktion und Multiplikation korrigiert wird. Wenn die Genauigkeiten der Näherungslösungen hoch sind, können alle Bits richtig korrigiert werden. Wenn die Genauigkeiten der Näherungslösungen gering sind, wird nur eine höhere Bitkette korrigiert und anschließend die Dichotomie erneut gestartet.
- Die obenerwähnte Prozedur wird im folgenden durch folgende Schritte genauer erläutert.
- Verschiedene Verfahren der Berechnung von Näherungslösungen stehen zur Verfügung und können die berechneten Näherungslösungen mit einem konstanten Fehlerbereich um den wahren Wert liefern. Ferner kann die Größe bezüglich der Gewichtungen bestimmter Bits der Mantisse konstant eingestellt werden. Somit kann durch Verwendung der Näherungslösung und des maximalen Fehlers der Bereich, in dem die strenge Lösung existiert, eingeschränkt werden.
- Es wird ermittelt, welcher der numerischen Werte, die im Existenzbereich des strengen Werts vorhanden sind und aus der Näherungslösung und dem maximalen Fehler ausgesucht werden, der strengen Lösung entspricht, indem einzelne numerische Werte in Umkehrfunktionen eingesetzt werden und die Umkehrfunktionswerte mit den Argumenten verglichen werden.
- Wenn ein maximaler Fehler relativ groß ist, existieren viele numerische Wertausdrücke in dem Bereich, innerhalb dem die strenge Lösung existieren kann. Daher kann die Dichotomie effektiv verwendet werden, um die strenge Lösung aus den numerischen Ausdruckswerten auszuwählen.
- Zum Auswählen der strengen Lösung wird der bestehende Bereich eingeengt durch die Anzahl der Ziffern, die zwei Ziffern größer ist als die Anzahl der Ziffern der zu ermittelnden strengen Lösung, wobei die Werte der G- und R-Bits ermittelt werden. Ferner wird ein ermittelter Wert y, der die G- und R-Bits enthält, in eine Umkehrfunktion eingesetzt, wobei das S-Bit durch Ermitteln von f&supmin;¹(y') - x erhalten wird.
- Die strenge Lösung wird durch den Rundungsmodus aus dem G-, R- und S-Bits ermittelt.
- In der arithmetischen Prozedur gemäß der vorliegenden Erfindung kann der Zyklus der Entscheidungsverarbeitung im Verlauf der Operation verringert werden, wie im folgenden beschrieben wird. Die Dichotomie ermöglicht es, Informationen für nur ein Bit aus einer Operation zu ziehen, weshalb 55 Zyklen der Entscheidungsverarbeitung erforderlich sind, um strenge Lösungen für das Ziehen der Quadratwurzel und das Dividieren unter Verwendung von z. B. dem doppelten Genauigkeitsformat entsprechend der IEEE-Norm 754 zu erhalten.
- Andererseits benötigt ein Hybridverfahren gemäß der vorliegenden Ausführungsform sechs bis sieben Zyklen der Entscheidungsverarbeitung, um die gleichen Ergebnisse zu erhalten. Der Unterschied in der Anzahl der Entscheidungsverarbeitungen ergibt direkt die mögliche Einsparung beim arithmetischen Maschinenzyklus.
- Das Vorsehen eines dedizierten Multiplizierers kann ermöglichen, daß die Multiplikation unabhängig von der Anzahl der Ziffern des Arguments in einem Maschinenzyklus abgeschlossen wird. In der Vergangenheit war die Multiplikation eine Verarbeitung, die viele Maschinenzyklen in Anspruch genommen hat, wobei jedoch heute dank der Entwicklung in der LSI-Technologie die Multiplikation ähnlich wie eine Addition oder Subtraktion durchgeführt werden kann. Dementsprechend führt die Verwendung der Multiplikation durch die vorliegende Ausführungsform zu keinem Nachteil.
- Im folgenden wird der Fall des Ziehens der Quadratwurzel genauer beschrieben.
- Fig. 22 zeigt einen schematischen Fluß des Algorithmus, wobei in der Figur f(x) eine zu bestimmende Funktion bezeichnet, g(x) eine Näherungsfunktion von f(x) bezeichnet, wobei g(x) - f(x) ≤ ε&sub0; gilt, und f&supmin;¹(x) eine Umkehrfunktion der zu ermittelnden Funktion bezeichnet. In der Fig. 4 stellt der Schritt 1201 die Berechnung der Näherungslösungen dar, während 1202 die Verwendung der Umkehrfunktion, 1203 den Vergleich des Umkehrfunktionswertes mit dem Argument, 1204 die Modifikation der Bitkette, 1205 die Verwendung der Umkehrfunktion, 1206 den Vergleich des Umkehrfunktionswertes mit dem Argument, 1207 und 1208 die Ermittlung des S-Bits und 1209 die Rundungsoperation darstellen.
- Fig. 23 zeigt ein Beispiel eines Systems, das den Gleitkommaprozessor verwendet. Das System umfaßt einen Mikroprozessor 1231, im folgenden einfach als MPU bezeichnet, einen Gleitkommaprozessor 1232 sowie ein Speichersystem 1333. Der Gleitkommaprozessor 1232 ist dem Mikroprozessor 1231 untergeordnet und antwortet auf Befehle, die er von der MPU 1231 über Prozessorsteuerleitungen 1234 und 1238 empfängt, um an der Ausführung von Befehlen der MPU teilzunehmen.
- Fig. 24 zeigt den inneren Aufbau des Gleitkommaprozessors 1232. Der Gleitkommaprozessor besteht aus drei Hauptabschnitten. Ein Bussteuerabschnitt 1301 ist ein Abschnitt, 4er als Schnittstelle nach außerhalb einschließlich der MPU dient. Ein Mikrosequenzerabschnitt 1302 ist ein Abschnitt zum Speichern des Algorithmus in Form eines Mikroprogramms zur Gleitkommaberechnung und zum Ausführen der gespeicherten Inhalte. Ein Arithmetikabschnitt 1303 ist ein Abschnitt, der aktuelle Operationen unter dem Kommando des Mikrosequenzers 1302 ausführt. Der Arithmetikabschnitt enthält eine Datentypoperationseinheit 1304, eine Exponentenoperationseinheit 1305, eine Mantissenoperationseinheit 1306, einen Konstanten-ROM 130 und einen Multiplizierer 1308. Die Datentypoperationseinheit 1304 erkennt das positive/negative Vorzeichen von Spezialdaten, wie z. B. Unendlichkeit, keine Zahl und Null, was durch das Datenformat des Gleitkommaprozessors ausgedrückt werden kann, und führt die logische Operation mit diesen Werten aus. Die Exponentenoperationseinheit 1305 antwortet auf Befehle eines Mikro-ROM 1310, um eine Operationsverarbeitung für den Exponenten der Gleitkommadaten auszuführen. Die Mantissenoperationseinheit 1306 antwortet auf Befehle des Mikro-ROM 1310, um eine Operationsverarbeitung für die Mantisse der Gleitkommadaten auszuführen. Das Konstanten-ROM ist ein ROM zum Speichern von Konstanten, die für die Arithmetikoperationen erforderlich sind. Der Multiplizierer 1308 führt die Multiplikation für die Mantisse der Gleitkommazahl aus.
- Fig. 25 zeigt ein Format des Zwischenwerts (nur der Mantisse), das verwendet wird, wenn die Quadratwurzel berechnet werden soll. Fig. 26 zeigt ein Verfahren zur Berechnung der Quadratwurzel, wenn die Genauigkeit der Näherungslösung ausreichend größer ist als die Auflösung der strengen Lösung, während die Fig. 27 und 28 ein Verfahren zur Berechnung der Quadratwurzel zeigen, wenn die Genauigkeit der Näherungslösung geringer ist als die Auflösung der strengen Lösung. Fig. 26 zeigt ein Beispiel, in dem die Daten, die kürzer sind als die Genauigkeit der Newton-Raphson-Iteration, zu berechnen sind, wobei in der Figur n die Anzahl der Bits der zu berechnenden Mantisse bezeichnet. Die Fig. 27 und 28 zeigen ein Beispiel, bei dem Daten zu ermitteln sind, die länger sind als die Genauigkeit der Newton-Raphson-Iteration, wobei in der Figur a den β-Wert oder geringere Werte bezeichnet, wobei ±2-β die Genauigkeit der Newton- Raphson-Iteration darstellt.
- Voraussetzung ist folgendes:
- wobei xi der Exponent des Arguments und xj der Bitwert der j-ten Ziffer unterhalb des Binärpunkts in der Mantisse des Arguments ist,
- wobei ye der resultierende Exponent ist und yj der Bitwert der j-ten Ziffer unterhalb des Binärpunkts in der resultierenden Mantisse ist, und
- x0 = y0 = 1.
- In dem Fall, in dem die Genauigkeit der Näherungslösung ausreichend größer ist als die Auflösung der strengen Lösung wird die Quadratwurzel gemäß dem folgenden Berechnungsverfahren ermittelt.
- Es wird nun angenommen, daß die Ziffernzahl des Arguments 1501 für das Ziehen der Quadratwurzel gleich m Bits beträgt und die Ziffernzahl des Bereichs der Quadratwur zel werte 1502 gleich n Bits ist. Die Newton-Raphson- Iteration wird auf der Grundlage des Arguments durchgeführt, um das Ergebnis 1503 von z. B. m Bits zu erhalten (Fig. 25a) (m > n).
- Das obige Ergebnis wird auf eine Länge von (n + 2) Bit gerundet, wobei die Bits, die dem (n+3)-ten Bit folgen, mit Nullen aufgefüllt werden, wodurch eine Näherungslösung a' erhalten wird, 1504. Die Näherungslösung a' wird quadriert, um A zu erhalten, 1505. Eine Ziffernanpassung (4), die zur internen Verarbeitung auf der Grundlage der Newton-Raphson-Iteration konform ist, wird ausgeführt, um 1506 oder 1507 zu erhalten, woraufhin der quadrierte Wert A mit dem Argument x verglichen wird.
- Wenn x = A, 1612, wird der Wert von a' auf eine Länge von n Bit gerundet, um Y zu erhalten.
- Wenn x > A, 1615, wird der Wert von a' und der resultierende Wert quadriert, um ein neues A zu erhalten. Anschließend wird das Argument A erneut mit A verglichen. Falls x - A, 1616, wird der Wert von a' auf eine Länge von n Bits gerundet, um Y zu erhalten.
- Wenn x > A, 1617, wird der Wert von a' auf einen Wert eingestellt, der nahe bei a' liegt und kleiner ist als a', wobei der resultierende Wert auf eine Länge von n Bit gerundet wird.
- In dem Fall, in dem die Genauigkeit der Näherungslösung geringer ist als die Auflösung der strengen Lösung, wird die Quadratwurzel gemäß dem folgenden Berechnungsverfahren ermittelt.
- Dies ist dasselbe wie im Fall von (3), mit der Ausnahme, daß nach dem Abschluß des Vergleichs erneut die Dichotomie verwendet wird. Für Einzelheiten soll auf das Flußdiagramm (Fig. 27 und 28) Bezug genommen werden.
Claims (7)
1. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel, die für die Ausführung von
Multiplikations-, Divisions- und
Quadratwurzelberechnungen durch Iteration mittels wiederholter Multiplikation,
Addition und Subtraktion Näherungslösungen von
Multiplikations-, Divisions- und Quadratwurzelfunktionen
berechnet,
mit:
einem Multiplizierer (10) mit vorgeschriebener Bitbreite
für die Ausführung einer Multiplikation zwischen Daten
mit einer vorgeschriebenen Anzahl von Bits,
einem Subtrahierer (11) mit vorgeschriebener Bitbreite,
der an den Multiplizierer angeschlossen ist, um den
Ausgangswert des Multiplizierers von einem
vorgeschriebenen Wert zu subtrahieren und um das Subtraktionsergebnis
auszugeben; und
einer Datenübertragungsvorrichtung (14) zum übertragen
des Ausgangs des Subtrahierers (11) an den Eingang des
Multiplizierers (10)
dadurch gekennzeichnet, daß
der Subtrahierer (11) eine Subtraktionseinrichtung (111)
besitzt, die den Ausgang des Multiplizierers (10) von 2
oder 3 subtrahiert, wenn eine Operation einer iterativen
Näherung in einer Divisions- bzw. Quadratwurzeloperation
ausgeführt wird, und die Subtraktionseinrichtung (111)
eine Einserkomplementeinrichtung besitzt, die die
Subtraktion des Ausgangs des Multiplizierers (10) von 2
approximiert, indem sie das Einserkomplement des Ausgangs
bildet.
2. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 1, ferner mit
einem Schieber (30), der an den Multiplizierer (10)
angeschlossen ist, um den Ausgang des Multiplizierers
(10) nach rechts oder nach links zu schieben.
3. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 2, bei der der
Schieber (30) eine Einrichtung zum Schieben des Ausgangs
des Multiplizierers um ein Bit nach rechts oder nach
links besitzt.
4. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 1, ferner mit:
einer zweiten Datenübertragungsvorrichtung (14H', 14L'),
die an die Datenübertragungsvorrichtung über eine
Schalteinrichtung (217) angeschlossen ist;
einer Schiebeeinrichtung (15) mit einer zweiten
Bitbreite, die größer als die vorgeschriebene Bitbreite ist,
die das Ausgangsergebnis des Subtrahierers über die
zweite Datenübertragungsvorrichtung empfängt und das
empfangene Ausgangsergebnis verschiebt; und
einer Arithmetik- und Logikeinrichtung (16) mit der
zweiten Bitbreite, die an die Schiebeeinrichtung
angeschlossen ist, um den Ausgang der Schiebeeinrichtung und
die von der zweiten Datenübertragungsvorrichtung
empfangenen Daten zu verarbeiten.
5. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 4, bei der die
Schiebeeinrichtung (15) eine Abrundungseinrichtung zum
Verschieben der Daten um ein oder mehr Bits und zum
Abrunden der hinausgeschobenen Daten besitzt.
6. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 4, bei der die
Verarbeitung durch die Schiebeeinrichung (15) und die
Arithmetik- und Logikeinrichtung (16) sowie die
Verarbeitung durch den Multiplizierer (10) und den Subtrahierer
(11) während einer Periode, in der die erste
Datenübertragungseinrichtung und die zweite
Datenübertragungseinrichtung durch den Schalter (217) getrennt sind, parallel
ausgeführt werden.
7. Vorrichtung zum Multiplizieren, Dividieren und
Ziehen der Quadratwurzel nach Anspruch 6, bei der der
Multiplizierer (10) mehrere Multiplikationen in einer
Pipeline-Verarbeitung ausführt.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63277242A JPH02125331A (ja) | 1988-11-04 | 1988-11-04 | 乗除算開平器 |
JP63290248A JP2837415B2 (ja) | 1988-11-18 | 1988-11-18 | 乗除算開平算装置 |
JP63309968A JPH02156375A (ja) | 1988-12-09 | 1988-12-09 | ハイブリッド式関数演算法 |
PCT/JP1989/001134 WO1990005335A1 (en) | 1988-11-04 | 1989-11-02 | Apparatus for multiplication, division and extraction of square root |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68928376D1 DE68928376D1 (de) | 1997-11-13 |
DE68928376T2 true DE68928376T2 (de) | 1998-04-02 |
Family
ID=27336437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68928376T Expired - Fee Related DE68928376T2 (de) | 1988-11-04 | 1989-11-02 | Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel |
Country Status (5)
Country | Link |
---|---|
US (3) | US5293558A (de) |
EP (1) | EP0394499B1 (de) |
KR (1) | KR100198472B1 (de) |
DE (1) | DE68928376T2 (de) |
WO (1) | WO1990005335A1 (de) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212661A (en) * | 1989-10-16 | 1993-05-18 | Matsushita Electric Industrial Co., Ltd. | Apparatus for performing floating point arithmetic operation and rounding the result thereof |
US5606677A (en) * | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
US5386375A (en) * | 1993-11-01 | 1995-01-31 | Motorola, Inc. | Floating point data processor and a method for performing a floating point square root operation within the data processor |
US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
GB2294138B (en) * | 1994-09-23 | 1997-01-15 | Cambridge Consultants | Processor core embedded in an integrated circuit, simulator and emulator for the processor |
GB9419246D0 (en) * | 1994-09-23 | 1994-11-09 | Cambridge Consultants | Data processing circuits and interfaces |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6237016B1 (en) | 1995-09-05 | 2001-05-22 | Intel Corporation | Method and apparatus for multiplying and accumulating data samples and complex coefficients |
US6470370B2 (en) | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US5983253A (en) * | 1995-09-05 | 1999-11-09 | Intel Corporation | Computer system for performing complex digital filters |
US6058408A (en) * | 1995-09-05 | 2000-05-02 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US5936872A (en) * | 1995-09-05 | 1999-08-10 | Intel Corporation | Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations |
US5822459A (en) * | 1995-09-28 | 1998-10-13 | Intel Corporation | Method for processing wavelet bands |
US5621674A (en) * | 1996-02-15 | 1997-04-15 | Intel Corporation | Computer implemented method for compressing 24 bit pixels to 16 bit pixels |
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 |
US6230175B1 (en) * | 1997-11-11 | 2001-05-08 | Matsushita Electric Industrial Co., Ltd. | Reconfigurable digit-serial arithmetic system having a plurality of digit-serial arithmetic units |
US6173271B1 (en) | 1997-11-26 | 2001-01-09 | California Institute Of Technology | Television advertising automated billing system |
US6490607B1 (en) * | 1998-01-28 | 2002-12-03 | Advanced Micro Devices, Inc. | Shared FP and SIMD 3D multiplier |
AU2001289045A1 (en) * | 2000-09-08 | 2002-03-22 | Avaz Networks | Hardware function generator support in a dsp |
US7076516B2 (en) * | 2000-09-19 | 2006-07-11 | California Institute Of Technology | Efficient method of identifying non-solution or non-optimal regions of the domain of a function |
US20030023653A1 (en) * | 2001-01-29 | 2003-01-30 | Andrew Dunlop | System, method and article of manufacture for a single-cycle floating point library |
US6915320B2 (en) * | 2001-08-09 | 2005-07-05 | Sun Microsystems, Inc. | Termination criteria for the one-dimensional interval version of newton's method |
US6920472B2 (en) * | 2001-09-13 | 2005-07-19 | Sun Microsystems, Inc | Termination criteria for the interval version of Newton's method for solving systems of non-linear equations |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US6941334B2 (en) * | 2002-02-01 | 2005-09-06 | Broadcom Corporation | Higher precision divide and square root approximations |
KR100402799B1 (ko) * | 2002-02-09 | 2003-10-22 | 삼성전자주식회사 | 오차를 최소화할 수 있는 제곱근기 |
TWI220479B (en) * | 2003-07-09 | 2004-08-21 | Mediatek Inc | Digital signal processor based on jumping floating point arithmetic |
US7587443B1 (en) * | 2004-03-23 | 2009-09-08 | Altera Corporation | Digital signal processor with efficient multi-modal multiplier |
US7747667B2 (en) * | 2005-02-16 | 2010-06-29 | Arm Limited | Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation |
US8015228B2 (en) * | 2005-02-16 | 2011-09-06 | Arm Limited | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value |
KR100640807B1 (ko) * | 2005-08-09 | 2006-11-02 | 엘지전자 주식회사 | 선형보간을 이용한 루트연산방법 및 이를 구현할 수 있는이동통신단말기 |
US7899859B2 (en) * | 2005-12-20 | 2011-03-01 | Oracle America, Inc. | Efficient error-check and exact-check for Newton-Raphson divide and square-root operations |
US8156171B1 (en) * | 2007-11-20 | 2012-04-10 | Altera Corporation | Digital logic circuit |
US8667046B2 (en) * | 2008-02-21 | 2014-03-04 | Ecole Polytechnique Federale De Lausanne/Service Des Relations Industrielles | Generalized programmable counter arrays |
US8150902B2 (en) | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
GB2543849B (en) | 2015-11-02 | 2021-08-11 | Johnson Matthey Plc | Oxidation catalyst |
PL3585916T3 (pl) | 2017-02-27 | 2021-05-04 | Nucor Corporation | Cykl termiczny do rozdrabniania ziaren austenitu |
CN108897524B (zh) * | 2018-05-31 | 2021-01-22 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 除法函数处理电路、方法、芯片以及*** |
CN116700664B (zh) * | 2022-02-24 | 2024-06-21 | 象帝先计算技术(重庆)有限公司 | 一种确定浮点数平方根的方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3590229A (en) * | 1968-03-28 | 1971-06-29 | Electronics Lab Inc | Digital differentiator |
US3631230A (en) * | 1970-09-24 | 1971-12-28 | Ibm | Binary arithmetic unit implementing a multiplicative steration for the exponential, logarithm, quotient and square root functions |
US3828175A (en) * | 1972-10-30 | 1974-08-06 | Amdahl Corp | Method and apparatus for division employing table-lookup and functional iteration |
DE2401936A1 (de) * | 1973-01-17 | 1974-07-18 | Auray Didier | Vorrichtung zum berechnen der aufeinanderfolgenden ableitungen einer funktion einer variablen, insbesondere fuer die regelung oder steuerung der funktion |
JPS49122382A (de) * | 1973-03-22 | 1974-11-22 | ||
US4477879A (en) * | 1981-12-28 | 1984-10-16 | Sperry Corporation | Floating point processor architecture which performs square root by hardware |
DE3274164D1 (en) * | 1982-12-23 | 1986-12-11 | Ibm | Method and apparatus for division operations |
JPS61262930A (ja) * | 1985-05-17 | 1986-11-20 | Nec Corp | 除算装置 |
US4884231A (en) * | 1986-09-26 | 1989-11-28 | Performance Semiconductor Corporation | Microprocessor system with extended arithmetic logic unit |
US4878190A (en) * | 1988-01-29 | 1989-10-31 | Texas Instruments Incorporated | Floating point/integer processor with divide and square root functions |
US4901267A (en) * | 1988-03-14 | 1990-02-13 | Weitek Corporation | Floating point circuit with configurable number of multiplier cycles and variable divide cycle ratio |
US4949296A (en) * | 1988-05-18 | 1990-08-14 | Harris Corporation | Method and apparatus for computing square roots of binary numbers |
US4999801A (en) * | 1988-07-15 | 1991-03-12 | Fujitsu Limited | Floating point operation unit in division and square root operations |
US5047973A (en) * | 1989-04-26 | 1991-09-10 | Texas Instruments Incorporated | High speed numerical processor for performing a plurality of numeric functions |
US5060182A (en) * | 1989-09-05 | 1991-10-22 | Cyrix Corporation | Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier |
-
1989
- 1989-11-02 US US07/536,565 patent/US5293558A/en not_active Expired - Fee Related
- 1989-11-02 DE DE68928376T patent/DE68928376T2/de not_active Expired - Fee Related
- 1989-11-02 EP EP89912134A patent/EP0394499B1/de not_active Expired - Lifetime
- 1989-11-02 WO PCT/JP1989/001134 patent/WO1990005335A1/ja active IP Right Grant
-
1990
- 1990-07-04 KR KR1019900701428A patent/KR100198472B1/ko not_active IP Right Cessation
-
1993
- 1993-08-12 US US08/089,103 patent/US5631858A/en not_active Expired - Lifetime
-
1997
- 1997-01-31 US US08/797,653 patent/US5956263A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5293558A (en) | 1994-03-08 |
US5956263A (en) | 1999-09-21 |
US5631858A (en) | 1997-05-20 |
KR100198472B1 (en) | 1999-06-15 |
EP0394499A4 (en) | 1993-02-24 |
DE68928376D1 (de) | 1997-11-13 |
EP0394499B1 (de) | 1997-10-08 |
EP0394499A1 (de) | 1990-10-31 |
KR900702451A (ko) | 1990-12-07 |
WO1990005335A1 (en) | 1990-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68928376T2 (de) | Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel | |
DE69032891T2 (de) | Verfahren und Gerät zur Ausführung mathematischer Funktionen mit Hilfe polynomialer Annäherung und eines Multiplizierers rechteckigen Seitenverhältnisses | |
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE3144015C2 (de) | ||
DE69131187T2 (de) | Hochgeschwindigkeitsdividierer | |
DE68927966T2 (de) | Prozessor für Gleitkommazahlen und ganze Zahlen mit Dividier- und Quadratwurzelfunktionen | |
DE4414172C2 (de) | Gleit-Komma-Arithmetikeinheit und Verfahren zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet | |
DE19983175B4 (de) | Verfahren, Prozessor und Einrichtung für Gleitkommaoperationen und Formatkonvertierungsoperationen | |
DE69132517T2 (de) | Gleitkommaprozessor | |
DE69131736T2 (de) | Gleitkomma-Verarbeitungseinheit mit Normalisierung | |
DE68924477T2 (de) | Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition. | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE69811877T2 (de) | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. | |
DE69326314T2 (de) | Durchführung aritmetische Operationen auf Daten | |
DE69130510T2 (de) | Arithmetisches Gerät zur Berechnung von transzendenten Elementarfunktionen | |
DE2900324A1 (de) | Mikroprogrammierbare arithmetische fliesskommaeinheit | |
DE69430053T2 (de) | Ganzzahldivisionsvorrichtung und -verfahren | |
DE3306084A1 (de) | Rechnerarchitektur zur gleitkomma -addition | |
DE68928058T2 (de) | Gerät und verfahren zur prädiktion von gleitkommanormalisierung | |
DE69032890T2 (de) | Verfahren und Gerät zur Ausführung der Quadratwurzelfunktion mit Hilfe eines Multiplizierers rechteckigen Seitenverhältnisses | |
DE69321241T2 (de) | Hochleistungsmantissendividierer. | |
DE69227348T2 (de) | DIVIDIERSCHALTUNG FüR GLEITKOMMAZAHLEN | |
DE3853379T2 (de) | Mit Pseudo-Division arbeitender arithmetischer Prozessor für trigonometrische Funktionen. | |
DE19781794C2 (de) | Verfahren und Einrichtung zur Division von Gleitkomma- oder ganzen Zahlen | |
DE3852576T2 (de) | Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |