DE4001232C2 - Gleitkommaeinheit - Google Patents
GleitkommaeinheitInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/386—Special constructional features
- G06F2207/3884—Pipelining
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.
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.
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.
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)
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)
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 |
-
1990
- 1990-01-18 DE DE19904001232 patent/DE4001232C2/de not_active Expired - Fee Related
- 1990-02-13 JP JP3229690A patent/JPH02235174A/ja active Pending
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 |