DE4001232C2 - Gleitkommaeinheit - Google Patents

Gleitkommaeinheit

Info

Publication number
DE4001232C2
DE4001232C2 DE19904001232 DE4001232A DE4001232C2 DE 4001232 C2 DE4001232 C2 DE 4001232C2 DE 19904001232 DE19904001232 DE 19904001232 DE 4001232 A DE4001232 A DE 4001232A DE 4001232 C2 DE4001232 C2 DE 4001232C2
Authority
DE
Germany
Prior art keywords
operands
operand
result
floating point
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19904001232
Other languages
English (en)
Other versions
DE4001232A1 (de
Inventor
Leslie D Kohn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4001232A1 publication Critical patent/DE4001232A1/de
Application granted granted Critical
Publication of DE4001232C2 publication Critical patent/DE4001232C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Description

Die Erfindung bezieht sich auf eine Gleitkommaeinheit.
Eine Gleitkommaeinheit ist ein Bestandteil eines Mikroprozessors zur Ausführung arithmetischer Operationen, insbesondere an Gleitkommazahlen.
Der im Zusammenhang mit der Erfindung benutzte Mikroprozessor ist der Intel 860 Mikroprozessor, der häufig als N10-Prozessor bezeichnet wird.
Der N10-Prozessor ist ein IEEE-kompatibler 32/64-Bit-Gleitkommaprozessor, ein 32-Bit-RISC-Ganzzahlprozessor und ein dreidimensionaler 64-Bit-Graphikprozessor. Als Prozessor, der sowohl für Vektor- als auch Skalaroperationen optimiert ist, stellt er für die Industrie den ersten integrierten Hochleistungsvektorprozessor mit über einer Million Transistoren dar und bietet etwa die halbe Leistung des Cray1 auf einem einzigen Chip. Der N10-Prozessor verwendet Pipeline-Gleitkommaeinheiten zur Erzielung extrem hoher Ausführungsgeschwindigkeiten.
Wie zu sehen sein wird, schafft die Erfindung eine hochoptimierte Busmatrix für Gleitkommahardware des N10-Prozessors. Diese Busmatrix unterstützt die simultane (duale) Operation eines Multiplizierers und einer Addiereinheit. Diese Dualoperationen unterstützen die am häufigsten benutzten Softwarealgorithmen, wie Produktsummen, DAXPY, FFT usw.
Normalerweise werden in den Anweisungen eines Mikroprozessors die Quellenoperanden und Bestimmungsoperanden als von einem Satz von Gleitkommaregistern kommend spezifiziert. In den meisten Systemen liefert dieser Satz von Gleitkommaregistern üblicherweise die beiden Quellenoperanden und einen Bestimmungsoperanden. Die Drei-Operanden-Anordnung reicht aus, um einfache Additions- oder Multiplikationsoperationen durchzuführen. Zur Durchführung von Dualoperationen, beispielsweise einer gleichzeitigen Addition oder Multiplikation, müssen drei Operanden zusätzlich (insgesamt also sechs Operanden) geliefert werden. Da es ineffizient wäre, die Verarbeitung von sechs Operanden durch die Gleitkommaregisterdatei zu verlangen, führten bekannte Mikroprozessoren in typischer Ausführung Dualoperationen seriell durch. Mit anderen Worten, eine zunächst ausgeführte Addition wird gefolgt von einer Multiplikation oder umgekehrt.
Eine Alternative für den seriellen Betrieb ist die parallele Durchführung sowohl von Multiplikations- als auch Additionsoperationen. Eine umfassend angewandte Lösung wird als kumulative Multiplikationsoperation bezeichnet. Bei der kumulativen Multiplikationsoperation erhält der Multiplikator zwei Quellen- Operanden aus der Gleitkommaregisterdatei. Einer der Operandeneingänge des Addierers erhält das Multiplikationsergebnis vom Ausgang des Multiplizierers. Der andere Quellenoperandeneingang des Addierers ist mit dem Ergebnisausgang des Addierers selbst gekoppelt, wobei es sich um eine Art Rückkopplungsanordnung handelt. Die simulierte arithmetische Operation ist im Prinzip eine Kumulation der Summe von Produkten. Eine Anordnung dieser Art ist beispielsweise aus DE 33 06 306 C2 bekannt, wo sie für ein rekursives Digitalfilter bei der Signalverarbeitung Anwendung findet. Der Hauptnachteil der kumulativen Multiplikationsoperation besteht darin, daß sie nur zur Implementierung einer einfachen Operationsart, d. h. einer Summe von Produkten, geeignet ist. Dies liegt daran, daß die Verbindungen generell in einer festen Anordnung "fest verdrahtet" sind.
Der Erfindung liegt die Aufgabe zugrunde, eine Gleitkommaeinheit zu schaffen, die eine Vielzahl von eine gleichzeitige Ausführung von Additions- und Multiplikationsoperationen erfordernden Algorithmen mit hoher Geschwindigkeit ausführen kann.
Diese Aufgabe wird erfindungsgemäß durch eine Gleitkommaeinheit mit den Merkmalen des Anspruchs 1 gelöst.
Die Gleitkommaeinheit des Mikroprozessors liefert erste und zweite Gleitkomma-Quellenanweisungsoperanden und ein Gleitkomma-Bestimmungsregister. Eine Multiplizierschaltung dient zur Multiplikation erster und zweiter Operanden zur Erzeugung eines ersten Ergebnisses. Eine Additionsschaltung dient zur Addition dritter und vierter Operanden zur Erzeugung eines zweiten Ergebnisses. Die Erfindung weist auch Halteregister zur Speicherung realer und imaginärer Teile einer zur Durchführung innerer Schleifenberechnungen für einen vorgegebenen Algorithmus verwendeten Konstanten und zum zeitweiligen Speichern des vom Multiplizierer erzeugten ersten Ergebnisses auf. Eine Datenweg- Steuereinrichtung dient zur Auswahl jeweils eines von mehreren Operanden, der mit den jeweiligen Operandeneingängen des Multiplizierers und Addierers zu koppeln ist, um einen vorgegebenen Algorithmus in paralleler Form zu realisieren. Dieser Aspekt der Erfindung ermöglicht die Implementierung einer großen Vielfalt von Algorithmen, Kombinationen sowohl von Multiplikations- als auch Additionsoperationen im Parallelbetrieb.
Schließlich sind Verbindungen in der Buseinrichtung vorgesehen, um die Mehrzahl von Operanden (zu denen das erste Ergebnis, das zweite Ergebnis, die ersten und zweiten Quellenoperanden, eine Konstante und ein zeitweilig gespeichertes erstes Ergebnis gehören können) mit den Eingängen zu koppeln. Bei einer vorgegebenen Algorithmusimplementierung bestimmt die Datenweg-Steuereinrichtung, welcher spezielle Operand mit dem richtigen Eingang des Multiplizierers oder des Addierers zu koppeln ist. So sind beispielsweise sechzehn verschiedene Datenwege, welche sechzehn unterschiedliche Softwareanweisungen oder Algorithmen implementieren, entsprechend der Lehre der Erfindung gezeigt.
Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Beispielen näher erläutert. In der Zeichnung zeigen:
Fig. 1 die Pipeline-Architektur des Prozessors in Zuordnung zu der Gleitkomma-Buseinrichtung gemäß einem Ausführungsbeispiel der Erfindung, wobei drei Pipelinestufen gezeigt sind;
Fig. 2 ein bevorzugtes Ausführungsbeispiel;
Fig. 3 einen für die mnemotechnischen Größen R2P1 und R2S1 ausgewählten aktuellen Datenweg entsprechend Tabelle 1, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 4 den für die mnemotechnischen Größen R2PT und R2ST entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 5 den für die mnemotechnischen Größen R2AP1 und R2AS1 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 6 den für die mnemotechnischen Größen R2APT und R2AST entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 7 den für die mnemotechnischen Größen I2P1 und I2S1 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 8 den für die mnemotechnischen Größen I2PT und I2ST entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 9 den für die mnemotechnischen Größen I2AP1 und I2AS1 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 10 den für die mnemotechnischen Größen I2APT und I2AST entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 11 den für die mnemotechnischen Größen RAT1P2 und RAT1S2 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 12 den für die mnemotechnischen Größen M12APM und M12ASM entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 13 den für die mnemotechnischen Größen RA1P2 und RA1S2 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 14 den für die mnemotechnischen Größen M12TTPA und M12TTSA entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 15 den für die mnemotechnischen Größen IAT1P2 und IAT1S2 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 16 den für die mnemotechnischen Größen M12TMP und M12TSm entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 17 den für die mnemotechnischen Größen IA1P2 und IA2S2 entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Fig. 18 den für die mnemotechnischen Größen M12TPA und M12TSA entsprechend Tabelle 1 ausgewählten aktuellen Datenweg, wobei jede mnemotechnische Größe eine spezielle Softwareanweisung darstellt;
Eine Gleitkommaeinheit zur Verwendung bei der Durchführung paralleler arithmetischer Operationen wird beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Einzelheiten angegeben, beispielsweise spezielle Datenwege usw., um das Verständnis für die vorliegende Erfindung zu vertiefen. Es ist jedoch für den Fachmann klar, daß diese speziellen Einzelheiten zur Realisierung der Erfindung nicht erforderlich sind. In anderen Fällen sind bekannte Strukturen und Schaltungen, beispielsweise Addierer und Multiplizierer, nicht im einzelnen gezeigt, um die Erfindung nicht mit bekannten Details zu belasten.
In der Architektur vieler moderner Mikroprozessoren benutzt die Gleitkommaeinheit parallele Verfahren zur Erhöhung der Geschwindigkeit, mit der Operationen in die Einheit eingeführt werden können. Eine Art von Parallelverfahren ist als "Pipelining" bekannt. Die Pipeline-Architektur behandelt jede Operation als Serie primitiverer Operationen (genannt "Stufen"), die parallel ausgeführt werden kann. Als Beispiel sei die Gleitkomma-Addiereinheit eines Prozessors betrachtet. Anstelle die Operation des Addierers dar. Die Stufen sollen durch A₁, A₂ und A₃ dargestellt sein. Die Stufen sind so bezeichnet, daß Ai+1 für eine Addiereranweisung parallel zu Ai für die nächste Addiereranweisung ausgeführt werden kann. Außerdem kann jedes Ai gerade in einem Takt ausgeführt werden. Die Pipeline-Operation innerhalb der Multiplizierer- und Vektorganzzahleinheiten (vector integer units) des Prozessors kann in ähnlicher Weise beschrieben werden, mit der Ausnahme, daß die Zahl von Stufen unterschiedlich sein kann.
Fig. 1 stellt ein Drei-Stufen-Pipelining dar, wie man es bei dem Gleitkommaaddierer des Prozessors in der erfindungsgemäßen Realisierung vorfindet (auch beim Gleitkommamultiplizierer, wenn Eingangsoperanden mit einfacher Genauigkeit verwendet werden). Jede Spalte in Fig. 1 stellt eine der drei Stufen der Pipeline dar. Jede Stufe hält Zwischenergebnisse und (bei Einführung in die erste Stufe durch Software) Statusinformationen, welche sich auf jede Ergebnisse beziehen. In der Fig. 1 ist angenommen, daß der Anweisungsstrom aus einer Folge von Gleitkommaanweisungen besteht, die alle von einem Typ sind (d. h. alles Addiereranweisungen oder alles Einfachpräzisionsmultipliziereranweisungen). Die Zeitbeziehung der Anweisungen wird als i, i+1, i+2 usw. dargestellt. Die Zeilen in Fig. 1 stellen die Zustände der Einheit bei aufeinanderfolgenden Taktzyklen dar. Bei jeder Durchführung einer Pipelineoperation wird der Zustand der letzten Stufe für ein Zustandsregister verfügbar (beispielsweise beim N10-Prozessor wird das Ergebnis in dem Gleitkomma-Zustandsregister "FSR" verfügbar). Das Ergebnis der letzten Pipelinestufe wird in RDEST gespeichert, die Pipeline um eine Stufe vorgerückt, und die Eingangsoperanden SRC1 und SRC2 werden in die erste Stufe der Pipeline übertragen. Die mnemotechnischen Größen SRC1 und SRC2 und RDEST beziehen sich auf eines der zweiunddreißig Gleitkommaregister, die im N10-Prozessor angeordnet sind.
In dem N10-Prozessor kann die Anzahl von Pipelinestufen im Bereich von eins bis drei liegen. Eine Pipeline-Operation mit einer Drei-Stufen-Pipeline speichert das Ergebnis der drittletzten Operation. Eine Pipeline-Operation mit einer Zwei-Stufen- Pipeline speichert das Ergebnis der vorletzten Operation. Eine Pipeline-Operation mit einer Ein-Stufen-Pipeline speichert die Ergebnisse der letzten Operation. Der N10-Prozessor hat vier Gleitkomma-Pipelines: eine für den Multiplizierer, eine für den Addierer, eine für die Vektor-Ganzzahl-Einheit und eine für Gleitkommaladungen (floating-point loads). Die Addierer-Pipeline hat drei Stufen. Die Anzahl von Stufen in der Multiplizierer-Pipeline hängt von der Genauigkeit der Quellenoperanden in der Pipeline ab; entweder zwei oder drei Stufen. Die Vektor-Ganzzahl-Einheit hat eine Stufe bei allen Genauigkeiten. Die Ladepipeline hat drei Stufen für alle Genauigkeiten.
Im folgenden wird auf Fig. 2 Bezug genommen, in der ein bevorzugtes Ausführungsbeispiel der Erfindung gezeigt ist. Die Gleitkomma-Busmatrix gemäß Fig. 2 weist eine Multipliziereinheit 24 und eine Addiereinheit 32 auf. Der innere Aufbau der Einheiten 24 und 32 ist an sich bekannt und braucht hier nicht diskutiert zu werden. Einfach ausgedrückt, können sie irgendeinen üblichen Digitalmultiplizierer oder Addierer enthalten.
Wie dargestellt, weist die Busmatrix auch drei Spezialregister auf: KR-Register 22, KI-Register 21 und T-Register 30. (KI steht für konstant imaginär, KR für konstant real und T für temporär.) Diese Register können Werte aus einer Dualoperationsanweisung speichern und sie als Eingangsgrößen für nachfolgende Dualoperationsanweisungen anlegen. Die Konstanten-Register 22 und 21 können zur Speicherung der Real- bzw. Imaginärteile eines Operanden SRC1 verwendet werden. Diese Werte können dann nachfolgend anstelle von SRC1 an die Multiplizier-Pipeline angelegt werden. Das T (temporäre) Register 30 dient zur Speicherung des Ergebnisses der letzten Stufe der Multiplizier- Pipeline und danach zum Anlegen des Wertes an die Addier-Pipeline anstelle von SRC1.
Ebenfalls gezeigt in Fig. 2 sind Datenweg-Steuerelemente 23, 25, 31 und 33. Datenweg-Steuerelemente 23, 25, 31 und 33 dienen zur Ansteuerung der Operandeneingänge sowohl zur Multipliziereinheit als auch zur Addiereinheit. Jedes dieser Steuerelemente (in Fig. 2 als einzelne Horizontallinie gezeigt) kann in typischer Ausführung ein Schaltelement, wie einen Multiplexer oder einen steuerbaren Bus aufweisen. Bei dem beschriebenen Ausführungsbeispiel werden gewöhnlich Multiplexer von im Stande der Technik bekannter Bauart verwendet.
Im Betrieb wird einer aus einer Vielzahl von Operanden (gezeigt durch Pfeile, die in die von den Datenweg-Steuergliedern dargestellten Horizontallinien gerichtet sind) ausgewählt und entweder in die Multipliziereinheit oder in die Addiereinheit gekoppelt. So liefert beispielsweise das Datenweg-Steuerelement 23 entweder den in KI gespeicherten konstanten Imaginärwert, den in KR gespeicherten konstanten Realwert oder den Quellenoperanden SRC1 an den ersten Operandeneingang der Multipliziereinheit 24, was davon abhängig ist, welcher Algorithmus zu implementieren ist. Bei dem bevorzugten Ausführungsbeispiel wird die Steuerung für jeden der Multiplexer 23, 25, 31 und 33 durch ein 4-Bit-Datenweg-Steuerfeld (DPC) im Befehlscode gebildet. Das DPC spezifiziert die Operanden und auch das Laden der Spezialregister.
Fig. 2 zeigt die vollständige Busverbindungsmatrix, wie sie zur Realisierung aller möglichen Algorithmen des beschriebenen Ausführungsbeispiels der Erfindung verwendet wird. Daher wird der Operand 1 der Multipliziereinheit 24 ausgewählt unter entweder KR vom Register 22, KI vom Register 21 oder SRC1, zugeführt über die Leitung 20. Die Bestimmung des jeweils einen aus diesen Werten ausgewählten Operanden 1 (OP1) des Multiplizierers ist fest durch die besondere Codierung des DPC. In ähnlicher Weise kann der Operand 2 (OP2) des Multiplizierers entweder SRC2, zugeführt von der Leitung 26, oder das Ergebnis der letzten Stufe der Addierer-Pipeline sein, das auf der Leitung 34 erscheint. Steuerelement 25 bestimmt, welcher dieser beiden Werte zum Operanden 2 wird. Operand 1 des Addierers kann entweder SRC1, übertragen über Leitung 20, der im T-Register 30 gespeicherte temporäre Ergebniswert oder das Ergebnis der letzten Stufe des Addierer-Pipeline-Eingangs auf der Leitung 34 sein. Das Steuerelement 31 dient zur Auswahl des geeigneten Datenweges für die Operanden-1-Eingabe der Addiereinheit 32. Schließlich wird der Operand 2 des Addierers 32 entweder aus SRC2 von der Leitung 26, dem Ergebnis der letzten Stufe der Multiplizierer-Pipeline auf der Leitung 27 oder dem Ergebnis der letzten Stufe der Addierer-Pipeline auf der Leitung 34 ausgewählt. Das Steuerelement oder der Multiplexer 33 wird vom DPC so gesteuert, daß es den als Operanden 2 der Addiereinheit 32 vorgesehenen Eingabeoperanden auswählt. Das von der Addiereinheit 32 auf der Leitung 34 ausgegebene Ergebnis stellt den RDEST-Wert dar, der an eines der zweiunddreißig Gleitkommaregister des Prozessors angelegt wird.
Tabelle 1 zeigt, wie verschiedene Codierungen des Datenweg- Steuerfeldes DPC verschiedene Datenwege auswählen und dadurch unterschiedliche Algorithmen implementieren. Jedem Wert von DPC ist ein besonderer Satz von mnemotechnischen Größen zugeordnet. Die mnemotechnischen Größen PFAM und PFSM entsprechen den Dualoperationsanweisungen "Pipeline-Gleitkomma-Addition- und Multiplikation" und "Pipeline-Gleitkomma-Subtraktion- und- Multiplikation". Die für die Dualoperationsanweisungen realisierten tatsächlichen Datenwege sind durch die mnemotechnischen Größen gemäß Tabelle 1 angegeben und in Fig. 3 bis 18 gezeigt.
Zu Illustrationszwecken sei ein Beispiel angenommen, bei dem ein Programmierer eine Matrixinversion durchzuführen wünscht. Unter Verwendung der Erfindung geschieht dies mit Hilfe der Softwareanweisung R2P1, dargestellt in dem aktuellen Datenweg gemäß Fig. 3. Bei der Durchführung einer Matrixinversion nimmt die innere Schleife des Algorithmus die nachfolgend angegebene mathematische Beziehung an:
kV₁+V₂ → V₂
Hierbei stellt K eine Realzahlkonstante dar, während V₁ und V₂ Vektorelemente sind. Die Durchführung einer Matrixinversion beinhaltet das Multiplizieren jedes Elements eines Vektors mit einer bestimmten Konstante und danach die Addition des Ergebnisses mit einem zweiten Vektor, wodurch das Ergebnis in den zweiten Vektorspeicherplatz zurückgespeichert wird. Um diese Anweisung zu Implementieren, ist das KR-Register gemäß Darstellung in Fig. 3 direkt mit dem OP1-Eingang der Multipliziereinheit gekoppelt. Der andere Eingang (OP2) der Multipliziereinheit ist mit dem Gleitkommaanweisungsoperanden SRC2 gekoppelt. Das Ausgangsergebnis der Multipliziereinheit wird an den OP2-Eingang der Addiereinheit angelegt, und der OP1-Eingang der Addiereinheit ist mit dem SRC1-Anweisungsoperanden der Gleitkommaeinheit gekoppelt. Die SRC1- und SRC2-Operanden entsprechen V₂ und V₁ in der obigen Gleichung. Das Ergebnis aus der Addiereinheit wird an das RDEST-Register angelegt, wo es den neuen Wert für den Vektor V₂ bildet.
Die Matrixinversion liefert ein gutes Beispiel für eine Dualoperation mit inneren Schleifenkonstanten, die mit der erfindungsgemäßen Busmatrix problemlos durchgeführt werden kann, deren Durchführung unter Verwendung der traditionellen kumulativen Multiplikationsoperation jedoch Probleme bereitet. Die kumulative Multiplikationsalternative ist deshalb weniger geeignet, da sie generell weniger genau, schwieriger zu programmieren und bis zur Erzeugung der Ergebnisse langsamer ist. (Zu beachten ist, daß die traditionelle kumulative Multiplikationsoperation (multiply cumulate operation) durch die M12APN-Softwareanweisung implementiert wird, die an die erfindungsgemäße Busmatrix angelegt wird.)

Claims (3)

1. Gleitkommaeinheit mit einer mit einem ersten Quellenbus (20), einem zweiten Quellenbus (26) und einem Ergebnisbus (34) gekoppelten Gleitkommaregisterdatei (SRC1, SRC2, RDEST) zum Anlegen eines ersten Quellenoperanden an den ersten Quellenbus (20) und eines zweiten Quellenoperanden an den zweiten Quellenbus (26),
einem mehrstufigen Multiplizierer (24) mit einem ersten und einem zweiten Operandeneingang (OP1, OP2 von 24) zum Multiplizieren zweier Operanden zum Erzeugen eines Multiplikationsergebnisses an einer letzten Multipliziererstufe,
einem mehrstufigen Addierer (32) mit einem dritten und einem vierten Operandeneingang (OP1, OP2 von 32) zum Addieren zweier Operanden zum Erzeugen eines Additionsergebnisses, das von einer letzten Addiererstufe an den Ergebnisbus (34) angelegt wird, und
einer Buseinrichtung zum Implementieren von gleichzeitige Additions- und Multiplikationsoperationen erfordernden Algorithmen,
wobei die Buseinrichtung aufweist:
ein erstes Halteregister (22; KR) zum Speichern einer Konstanten mit einem mit dem ersten Quellenbus (20) gekoppelten Eingang;
ein zweites Halteregister (30; T) zum Speichern des Multiplikationsergebnisses mit einem mit der letzten Stufe des Multiplizierers (24) gekoppelten Eingang;
einen ersten Multiplexer (23) zum selektiven Einkoppeln eines ersten von mehreren, den ersten Quellenoperanden und die in dem ersten Halteregister gespeicherte Konstante einschließenden Operanden in den ersten Operandeneingang des Multiplizierers (24),
einen zweiten Multiplexer (25) zum selektiven Einkoppeln eines zweiten von mehreren, den zweiten Quellenoperanden und den Operanden auf dem Ergebnisbus einschließenden Operanden in den zweiten Operandeneingang,
einen dritten Multiplexer (31) zum selektiven Einkoppeln eines dritten von mehreren, den ersten Quellenoperanden, das in dem temporären Haltregister gespeicherte Multiplizierergebnis und das Additionsergebnis einschließenden Operanden in den dritten Operandeneingang,
einem vierten Multiplexer (33) zum selektiven Einkoppeln eines vierten von mehreren, das Multiplizierergebnis, das Addierergebnis und den zweiten Quellenoperanden einschließenden Operanden in den vierten Operandeneingang; und
mit dem ersten, dem zweiten, dem dritten und dem vierten Multiplexer(23, 25, 31, 33) gekoppelte Steuereinrichtungen zum Auswählen des ersten, zweiten, dritten und vierten Operanden.
2. Gleitkommaeinheit nach Anspruch 1, dadurch gekennzeichnet,
daß ein drittes Halteregister (21; KI) mit einem mit dem ersten Quellenbus (20; SRC1) gekoppelten Eingang zum Speichern eines Imaginärteils einer Konstanten vorgesehen ist, wobei das erste Halteregister (22; KR) den Realteil der Konstanten speichert; und
daß der erste Multiplexer (23) eine Einrichtung zum selektiven Koppeln des Ausgangs des dritten Halteregisters (21; KI) mit dem ersten Operandeneingang aufweist.
3. Gleitkommaeinheit nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß das Addiererergebnis in einem Zielregister innerhalb der Gleitkommaregisterdatei zur Verfügung steht.
DE19904001232 1989-02-10 1990-01-18 Gleitkommaeinheit Expired - Fee Related DE4001232C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US30943089A 1989-02-10 1989-02-10

Publications (2)

Publication Number Publication Date
DE4001232A1 DE4001232A1 (de) 1990-08-16
DE4001232C2 true DE4001232C2 (de) 1996-05-30

Family

ID=23198205

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19904001232 Expired - Fee Related DE4001232C2 (de) 1989-02-10 1990-01-18 Gleitkommaeinheit

Country Status (2)

Country Link
JP (1) JPH02235174A (de)
DE (1) DE4001232C2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0474246A2 (de) * 1990-09-06 1992-03-11 Matsushita Electric Industrial Co., Ltd. Bildsignalverarbeitungsgerät
KR950015181B1 (ko) * 1991-07-01 1995-12-23 후지쓰 가부시끼가이샤 곱셈-합 연산장치
WO1999008204A1 (en) * 1997-08-05 1999-02-18 Hitachi, Ltd. Device and method for processing data

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4561065A (en) * 1982-02-23 1985-12-24 Tokyo Shibaura Denki Kabushiki Kaisha Arithmetic processing device using sampled input data and several previous output data
GB8612453D0 (en) * 1986-05-22 1986-07-02 Inmos Ltd Multistage digital signal multiplication & addition

Also Published As

Publication number Publication date
JPH02235174A (ja) 1990-09-18
DE4001232A1 (de) 1990-08-16

Similar Documents

Publication Publication Date Title
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE2755273C2 (de)
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE2724125C2 (de)
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE60116742T2 (de) Digitaler signalprozessor mit gekoppelten multiplizier-addier einheiten
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE112013006309T5 (de) Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE19524862A1 (de) SIMD-Prozessor, welcher mit einer Mehrzahl von Parallelverarbeitungselementen in Synchronisation in Betrieb ist
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE102007014808A1 (de) Multiplizier- und Multiplizier- und Addiereinheit
DE3507584C2 (de)
DE4345029C2 (de) Schaltkreis für diskrete Kosinustransformation
DE69823302T2 (de) Verfahren und Vorrichtung zum Verschieben von Daten
DE102007056104A1 (de) Verfahren und Vorrichtung zur Multiplikation von Binäroperanden
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE1549508B2 (de) Anordnung zur uebertragsberechnung mit kurzer signallaufzeit
DE4001232C2 (de) Gleitkommaeinheit
DE60316342T2 (de) Multiplizierer mit nachschlagetabellen
EP0629943B1 (de) Multiplizierer für reelle und komplexe Zahlen
DE10206830B4 (de) Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
DE3609056C2 (de)

Legal Events

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

Ipc: G06F 7/48

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee