DE19910451C2 - Multiprozessor - Google Patents
MultiprozessorInfo
- Publication number
- DE19910451C2 DE19910451C2 DE1999110451 DE19910451A DE19910451C2 DE 19910451 C2 DE19910451 C2 DE 19910451C2 DE 1999110451 DE1999110451 DE 1999110451 DE 19910451 A DE19910451 A DE 19910451A DE 19910451 C2 DE19910451 C2 DE 19910451C2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- data
- multiprocessor
- execution unit
- execution
- 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
- 238000013144 data compression Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 5
- 238000013506 data mapping Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Description
Die Erfindung betrifft einen Multiprozessor nach dem
Oberbegriff des Patentanspruchs 1.
Fig. 1 zeigt einen einfachen, superskalaren Prozessor 10
mit einer einzelnen Befehlswarteschlange und einem
einzelnen, vereinheitlichten Cachespeicher. Diese Erfindung
kann auf weitaus kompliziertere Prozessorstrukturen
angewendet werden. Die Befehle werden aus dem Cachespeicher-
Bereich 12, der einen einzelnen Port hat,
abgerufen und über den Ergebnisbus 16 in die
Befehlswarteschlange 14 geladen. Die Breite der Daten, die
aus dem Cachespeicher-Bereich gelesen werden und die Breite
des Ergebnisbusses ist viel größer als ein einzelner 32-
Bit-Befehl, z. B. 256 Bits. Somit könnten bis zu 4 Befehle
pro Lesezyklus aus dem Cachespeicher erledigt werden, der
in dieser Abbildung ein einzelner Maschinenzyklus ist. Drei
Ausführungseinheiten empfangen Bereitbefehle von der
Dispatch-Logik mit einer Geschwindigkeit von bis zu einem
Befehl pro Ausführungseinheit und Maschinenzyklus. Diese
Einheiten sind eine Verzweigungseinheit 18, eine
Festkommaausführungseinheit mit Festkommaregisterdatei 20
und einer Gleitkommaeinheit mit Gleitkommaregisterdatei 22.
Die Speicherbefehle, welche die Berechnung einer effektiven
Adresse erfordern, werden an die Festkommaeinheit
geschickt, und die daraus resultierende Adresse wird dann
an die Speicherverwaltungseinheit (MMU) 24 gesendet.
Ebenso werden die Befehlsadressen in der
Befehlsabrufeinheit 26 erzeugt. Sowohl die MMU als auch die
Befehlsabrufeinheit senden die Adressen an die
Cachespeicher-Etiketten 28 und somit an die
Bereichsadressierungslogik. Ein Treffer bei den
Etikettenergebnissen in den Daten aus dem Bereich wird in
dem Ergebnisbus 16 plaziert. Ein Verfehlen bei den
Cachespeicher-Etiketten resultiert in einer
Speicheranforderung, die in die Speicherwarteschlange 30
gesetzt und über die Busschnittstelleneinheit an den
externen Adreß- und Datenbus 32 übertragen wird. Jede die
ser Einheiten ist in der Lage, gleichzeitig zu operieren,
was in einem superskalaren Pipeline-Prozessor mit einer
Spitzenausführungsrate von 3 Befehlen pro Zyklus
resultiert. Wenn die Gleitkomma-Ausführungseinheit 22 eine
Latenz von 2 Zyklen hat, dann wäre die Pipelinereihenfolge:
abrufen, verschicken, decodieren, ausführen 1, ausführen 2
und writeback.
Fig. 2 zeigt diesen einfachen Prozessor 10a, der durch
eine sättigende, arithmetische Multimedia-
Befehlsausführungseinheit 34, SIMD, mit ihrer Registerdatei
erweitert worden ist. Die Operation dieser Einheit ist
ähnlich wie die der Gleitkommaeinheit 22. Die Befehle für
diese Einheit treten normalerweise nicht in unmittelbarer
Nähe von Gleitkommaoperationen in der Ausführungssequenz
von gewöhnlichen Programmen auf. In der Tat sind in der
IntelTM MMX Architektur die MMX-Register in dem Gleitkomma-
Registerraum abgebildet, und es ist eine explizite
Kontextschaltung notwendig, um MMX-Befehle zu ermöglichen,
nachdem Gleitkommabefehle ausgeführt wurden und umgekehrt.
Wird ein Multiprozessor in eine einzelne Form gesetzt, so
würde dies einen Chip ähnlich dem ergeben, der in den
Fig. 3 oder 4 abgebildet ist. Offensichtliche gemeinsame
Elemente, wie zum Beispiel die Schnittstelle 36 im externen
Bus, werden gemeinsam benutzt. Das konventionelle Design
würde auch nur ein Objekt auf dem Chip der Taktgenerierung
haben, der Testprozessor oder die
Grenzenabtastungssteuerung usw. Es ist zu beachten, daß an
genommen wird, daß die Etikettenlogik und die MMU die
richtige gemeinsame Datenbenutzungsprotokoll-Logik (z. B.
MESI) für einen Multiprozessor haben. Umfangreiche
Änderungen sind möglich, wenn mehr als ein Prozessor in
eine Form gelegt wird, wie zum Beispiel das Hinzufügen
zusätzlicher Stufen zur Cachespeicherung oder mehr externe
Busse. Ein solcher Chip wäre groß und hätte nicht die
doppelte Leistung eines einzelnen Prozessors aufgrund der
bekannten Multiprozessoreffekte. Wenn jedoch der Bereich
deutlich reduziert werden könnte, dann wären die Befehle,
die pro Sekunde pro Siliziumbereich ausgeführt würden, d. h.
Kosten/Leistung, gleich oder besser als bei einem Einzel
prozessor. Dies könnte geschehen, indem bereichsintensive
Einheiten, z. B. die Gleitkommaeinheit, zwischen den beiden
Prozessoren gemeinsam benutzt werden.
Unglücklicherweise ist bereits die Datenzuordnung zwischen
zwei CPUs ein komplexes Problem. Besonders im Fall einer
Gleitkommaeinheit, wo Befehle sehr lange brauchen, kann,
sobald die erste CPU von der Gleitkommaeinheit bedient
worden ist, die zweite CPU eine lange Zeit aussetzen,
selbst wenn die zweite CPU einige kurze Befehle hat, die
ausgeführt werden müssen. Wenn jedoch die zweite CPU
Priorität hat, die kurze Befehle ausgibt, dann kann
andererseits die erste CPU niemals bedient werden und muß
lange Zeit aussetzen.
Die Schnittstelle, die entwickelt werden muß, damit die
eine oder die andere CPU aussetzt, ist ebenfalls eine
komplexe Aufgabe und sehr anfällig für Fehler.
Die Datenzuordnung unter den Prozessoren mit komplexen
Schemata führt manchmal zu Blockierungssituationen, die
dazu neigen, zu spät erkannt zu werden, z. B. zum Zeitpunkt
des Versands oder des Austestens der Hardware. Die Behebung
solcher Fehler ist zeitraubend und teuer.
Die Leistung eines Multiprozessorsystems, das zwei oder
mehr CPUs enthält, kann sich erheblich verschlechtern, wenn
eine gleitkommaintensive Anwendung (bei der viele kurze und
schnelle Befehle benutzt werden) gleichzeitig mit einer
anderen Anwendung läuft, die einige lang laufende
Gleitkommabefehle benutzt. Dieser
Warteschlangenbildungseffekt wird auch in konventionellen
Multiprozessorsystemen beobachtet, die einen Speicherbus
oder ein Speichersystem gemeinsam benutzen, z. B. den
gleichen L2-Cachespeicher gemeinsam benutzen.
Obgleich die gemeinsame Benutzung eines Speichersystems in
bekannten Multiprozessorsystemen bereits mit
Schwierigkeiten verbunden sein kann, ist schließlich die
gemeinsame Benutzung einer Verarbeitungseinheit, z. B. eine
Gleitkomma-, Multimedia- oder eine
Datenkompressionseinheit, eine weitaus komplexere Aufgabe.
Diese Einheiten haben eigene Registerdateien, Status
register, Programmzähler usw. und haben alle Sequentialisie
rungseffekte. Demgemäß erfordert die gemeinsame Benutzung
wenigstens einen separaten Satz Register mit einer
speziellen Zuordnung für jede CPU. Vom Gesichtspunkt der
Implementierung aus gibt es viele Probleme, z. B. Bereich und
Zeitmessung mit einem extra Bedarf an Datenmultiplexern und
einer Synchronisierungssteuerlogik.
Ein aus der US 3,980,992 A bekannter Multiprozessor weist
vier gleiche Prozessoren auf, die gemeinsam eine
Ausführungseinheit benutzen. Bei der von allen vier
Prozessoren gemeinsam benutzten Ausführungseinheit handelt
es sich insbesondere um die sogenannte ALU (Arithmetic Logic
Unit), die arithmetische Operationen auf der Basis von Daten
durchführt, die von den vier Prozessoren an diese
übermittelt werden. In einem ersten Taktzyklus werden Daten
des ersten Prozessors von der ALU verarbeitet, in einem
zweiten Taktzyklus Daten des zweiten Prozessors, in einem
dritten Taktzyklus Daten des dritten Prozessors, in einem
vierten Taktzyklus Daten des vierten Prozessors und in einem
fünften Taktzyklus wiederum Daten des ersten Prozessors usw.
An diesem bekannten Multiprozessor ist nachteilig, daß die
Daten eines jeden Prozessors nur in jedem vierten Taktzyklus
verarbeitet werden. Durch die gemeinsame Benutzung einer
einzigen ALU von vier Prozessoren sinkt die
Verarbeitungsgeschwindigkeit eines jeden Prozessors
gegenüber einem Prozessor, der eine eigene ALU aufweist, auf
25% oder weniger.
Aufgabe der Erfindung ist die Bereitstellung eines
Multiprozessors mit einer platzsparenden und damit
kostengünstigen Ausführungseinheit, die dennoch von den
Prozessoren des Multiprozessors in günstiger Weise gemeinsam
genutzt werden kann.
Diese Einheit kann eine Gleitkomma- und/oder eine
Datenkompressionseinheit oder eine andere Einheit sein,
deren Flächenbedarf auf dem Chip im Verhältnis zur
Häufigkeit der Nutzung durch die Prozessoren ungünstig ist.
Die Aufgabe wird durch einen Multiprozessor mit den
Merkmalen des Anspruchs 1 gelöst. Vorteilhafte
Ausgestaltungen der Erfindung sind in den Unteransprüchen
angegeben.
Die Effizienz bekannter Multiprozessoren wird
erfindungsgemäß verbessert, indem Ausführungseinheiten, die
weniger oft von dem Multiprozessor benötigt werden,
gestrippt und von mehreren symmetrischen Mikroprozessoren
des Multiprozessors gemeinsam benutzt werden. Hierdurch kann
jede CPU einen kleineren Bereich belegen; die symmetrische
Struktur der Prozessoren im Multiprozessor und die damit
einhergehenden Vorteile einer einfacheren Softwarestruktur
für Multiprozessoren bleiben dennoch erhalten.
Zum besseren Verständnis der vorliegenden Erfindung und für
weitere Details und Vorteile derselben wird jetzt Bezug auf
die folgende ausführliche Beschreibung in Verbindung mit den
beiliegenden Zeichnungen genommen, in denen
Fig. 1 ein Schema eines typischen Mikroprozessors zeigt;
Fig. 2 einen typischen Mikroprozessor mit einer
Multimedia-Befehlseinheit zeigt;
Fig. 3 zwei Mikroprozessoren auf einem Einzelchip zeigt,
jeden mit seiner eigenen FPU und FXU;
Fig. 4 zwei Mikroprozessoren auf einem Einzelchip zeigt,
jeden mit seiner eigenen FPU, FXU und MMXU;
Fig. 5 zwei Mikroprozessoren zeigt, die gemeinsam eine
einzelne FPU gemäß der vorliegenden Erfindung
zeigt; und
Fig. 6 die FPU zeigt, wie diese in Fig. 5 abgebildet
ist, wobei ihr Pipeline-Feedbackschema
ausführlicher dargestellt ist.
Die Fig. 5 und 6 zeigen ein Ausführungsbeispiel der
vorliegenden Erfindung. Es ist bekannt, daß in den meisten
Programmen Fließkommabefehle in Bündeln auftreten, die
durch Festkomma- und Steuerbefehle getrennt sind. Je öfter
der Betriebssystemcode ausgeführt wird, desto weniger
häufig ist die Frequenz bei der Ausführung von
Fließkommabefehlen. Unter Verwendung dieser Betrachtung
kann der Bereich des Chips 10, der in Fig. 3 abgebildet
ist, erheblich reduziert werden, indem dieser neu struk
turiert wird, wie dies in Fig. 5 schematisch dargestellt
ist.
Der schematisch dargestellte Multiprozessor 100, der in
Fig. 5 abgebildet ist, enthält einen ersten Prozessor 101,
einen zweiten Prozessor 102, einen Multiplexer 105, eine
Fließkommaeinheit 106 und einen Demultiplexer 107. Der
erste Prozessor 101 wird über einen ersten Datenbus 103 mit
dem Eingang des Multiplexers 105 verbunden, und der zweite
Prozessor 102 wird über einen zweiten Datenbus 104 mit dem
Eingang des Multiplexers 105 verbunden. Der Ausgang des
Multiplexers 105 wird mit dem Eingang der Fließkommaeinheit
106 verbunden, und der Ausgang der Fließkommaeinheit 106
wird mit dem Eingang des Demultiplexers 107 gekoppelt. Der
Demultiplexer 107 enthält zwei Ausgänge, von denen einer
über einen Datenbus 107a mit dem ersten Prozessor 101
verbunden ist und über einen Datenbus 107b mit dem zweiten
Prozessor 102 gekoppelt ist. Die Fließkommaeinheit 106
enthält mehrere Filterstufen, wie dies durch eine erste
Stufe 106_1, eine zweite Stufe 106_2, eine dritte Stufe
106_3 und weitere Stufen, falls notwendig, angegeben ist.
Der Ausgang des Multiplexers 105 ist über einen Datenbus
106a mit dem Eingang der ersten Filterstufe 106_1
verbunden, der Ausgang der ersten Filterstufe 106_1 ist
über einen Datenbus 106b mit dem Eingang der zweiten
Filterstufe 106_2 verbunden, und der Ausgang der zweiten
Stufe ist über einen Datenbus 106c mit dem Eingang der
dritten Stufe 106_3 verbunden usw. Der Ausgang der Endstufe
106_n der Fließkommaeinheit 106 ist über einen Datenbus 109
mit dem Eingang des Demultiplexers 107 verbunden.
Wie aus Fig. 5 hervorgeht, wird die Fließkommaeinheit aus
jedem Prozessor 101 und 102 entfernt, und in jedem
Prozessor verbleibt nur eine lokale Registerdatei (ohne
Abbildung). Die einzelne Fließkommaeinheit wird an eine
optimale physische Stelle zwischen den beiden Prozessoren
gesetzt, um die Bewegungszeit der elektrischen Signale von
jedem Prozessor zu der Fließkommaeinheit 106 auszugleichen.
Bei jedem ungeraden Taktzyklus überträgt der erste
Prozessor 101 Daten, die von der Fließkommaeinheit 106 zu
verarbeiten sind, über den Multiplexer 105. Auf der anderen
Seite überträgt der zweite Prozessor 102 bei jedem geraden
Taktzyklus seine Daten, die von der Fließkommaeinheit 106
zu verarbeiten sind, über den Multiplexer 105. Nachdem die
zu verarbeitenden Daten vollständig von der Fließ
kommaeinheit 106 verarbeitet worden sind, werden die
verarbeiteten Daten an den Demultiplexer 107 übertragen.
Bei jedem ungeraden Taktzyklus werden die Daten von dem
ersten Prozessor, die bereits vollständig von der
Fließkommaeinheit 106 verarbeitet worden sind, über den
Demultiplexer 107 und den Datenbus 107a zurück an den
ersten Prozessor 101 übertragen. Bei jedem geraden
Taktzyklus werden die Daten von dem zweiten Prozessor 102,
die bereits vollständig von der Fließkommaeinheit 106 ver
arbeitet worden sind, vom Ausgang der Fließkommaeinheit 106
über den Demultiplexer 107 und den Datenbus 107b zurück an
den zweiten Prozessor 102 übertragen. Gemäß der Erfindung
ist nach jeweils zwei Taktzyklen jeder Prozessor (CPU) in
der Lage, auf die Fließkommaeinheit 106 zuzugreifen, und es
muß kein Prozessor aussetzen. Da in den meisten Programmen
Fließkommabefehle im Vergleich mit Festkommabefehlen
weitaus weniger häufig vorkommen, sind die beiden CPUs die
meiste Zeit in der Lage, mit ihrer normalen Leistung zu
arbeiten, und nur wenn die Fließkommabefehle verarbeitet
werden müssen, besteht der Engpaß einer einzelnen
Fließkommaeinheit bei zwei CPUs. Der Vorschlag aus der
Erfindung ermöglicht daher eine deutliche Reduzierung von
Kosten/Leistung bei einem solchen Einchip-Multiprozessor.
Fig. 6 zeigt ausführlicher die Fließkommaeinheit 106 aus
Fig. 5. Gemäß der Erfindung werden die resultierenden
Daten von jeder zweiten Filterstufe zurück zum Eingang der
Filterstufe 106_1 der Fließkommaeinheit 106 gekoppelt, und
das gesamte interne Feedback der Daten von jedem Prozessor
wird nach jeweils zwei Taktzyklen über die Datenbusse 108a,
108b und 108c ausgeführt.
Während eines ersten Taktzyklus treten die Fließkommadaten
aus dem Prozessor 101 in die erste Filterstufe 106_1 ein.
Während eines zweiten Taktzyklus werden die Daten, die von
der ersten Stufe verarbeitet werden, an die nächste
Filterstufe 106_2 geschickt, während die Fließkommadaten
aus dem zweiten Prozessor 102 in die erste Filterstufe
106_1 eintreten. Während eines dritten Taktzyklus werden
die Fließkommadaten aus dem ersten Prozessor 101, die von
der zweiten Filterstufe 106_2 verarbeitet werden, über den
Datenbus 108a an den Eingang der ersten Filterstufe 106_1
zurückgeschickt und ebenfalls an die dritte Filterstufe
106_3 zur weiteren Verarbeitung gesendet. Während des
dritten Taktzyklus ermöglicht es der Multiplexer 105 dem
ersten Prozessor 101 wiederum, auf die Fließkommaeinheit
106 zuzugreifen und so weiter. Während eines vierten
Taktzyklus werden die Fließkommadaten aus dem ersten
Prozessor 101, die von der dritten Stufe 106_3 verarbeitet
werden, an die vierte Filterstufe 106_4 geschickt, während
die Fließkommadaten aus dem zweiten Prozessor 102, die
bereits von der ersten und zweiten Filterstufe 106_1 und
106_2 verarbeitet werden, an den Eingang der ersten
Filterstufe 106_1 gesendet und an den Eingang der dritten
Filterstufe 106_3 zur weiteren Verarbeitung. Während des
vierten Taktzyklus wird es dem zweiten Prozessor wiederum
ermöglicht, über den Multiplexer 105 auf die Fließkom
maeinheit 106 zuzugreifen.
Während eines fünften Taktzyklus werden die Fließkommadaten
aus dem ersten Prozessor 101 an die fünfte Filterstufe
106_5 gesendet und von dem Ausgang der vierten Filterstufe
106_4 mit dem Eingang der ersten Filterstufe 106_1 über den
Datenbus 108b zurückgekoppelt.
Während eines sechsten Taktzyklus werden die
Fließkommadaten aus dem zweiten Prozessor 102, die von der
vierten Filterstufe 106_4 verarbeitet werden, mit dem
Eingang der ersten Filterstufe 106_1 über den Datenbus 108b
zurückgekoppelt und an die nächste Filterstufe gesendet.
Das gleiche findet in bezug auf die weiteren Filterstufen
und die Feedback-Schleifen der Fließkommaeinheit in
weiteren Taktzyklen Anwendung. Die Leitungen, die mit einem
"X" gekennzeichnet sind, geben an, daß das Feedback der
Daten durch eine ungerade Anzahl von Stufen untersagt ist,
um sicherzustellen, daß die Daten des ersten Prozessors 101
und des zweiten Prozessors 102 an verschiedene Filterstufen
während jedes Taktzyklus gesendet werden, und daher sind
die Daten aus verschiedenen Prozessoren streng voneinander
getrennt.
Da es eine strenge Trennung des Fließkomma-
Ausführungsprozesses von Daten aus dem ersten Prozessor 101
und von Daten aus dem zweiten Prozessor 102 bei geraden und
ungeraden Taktzyklen und des entsprechenden Designs des
Filter-Feedbacks gibt, besteht kein Bedarf an einer
besonderen Synchronisierung oder einer Extrazuordnung von
Steuerbits für die Identifizierung der Daten von jeder CPU.
Somit kann die Fließkommaeinheit 106 aus der Erfindung als
unintelligentes Element betrachtet werden, zum Beispiel ein
Speicher oder Cache-Speicher, der einfach von zwei CPUs
gemeinsam benutzt werden kann.
Es ist klar, daß das Konzept aus der Erfindung auch für
einen Multiprozessor benutzt werden kann, der mehr als zwei
Prozessoren enthält, wenn die Fließkommaeinheit und die
beschriebenen Feedback-Schleifen der Fließkommaeinheit gemäß
der Erfindung geändert werden, um die Trennung der Daten von
jeder CPU aufrechtzuerhalten. Gleiches gilt, wenn eine
unterschiedliche Anzahl von Taktzyklen jeder CPU oder jedem
Prozessor zugeordnet wird. Das Konzept aus der Erfindung
ermöglicht es, eine einfache Verbindung herzustellen, um
beide CPUs auf einem Chip ohne komplexe Datenzuordnung zu
bedienen. Der für einen Multiprozessor erforderliche
Chipbereich kann ohne einen separaten, dedizierten Satz von
Registern deutlich reduziert werden. Das Design aus der
Erfindung ermöglicht niedrige Zykluszeiten, ohne daß das
Multiplexen von Daten notwendig ist. Das heißt, daß der
Filter nicht leer sein muß, bevor die Befehle der anderen
CPU gestartet werden können. Out-of-Order-Verarbeitung kann
einfach implementiert werden, und es kommt zu keiner
Verriegelung, die Blockierungsprobleme verursachen kann.
Claims (18)
1. Ein Multiprozessor (100) mit mindestens:
einem Mittel (105), um die ersten Daten von dem ersten Prozessor (101) zur Ausführung zu dieser gemeinsam benutzten Ausführungseinheit (106) in einem ersten Taktzyklus zu steuern, und um die zweiten Daten von dem zweiten Prozessor (102) zur Ausführung zu dieser gemeinsam benutzten Ausführungseinheit (106) in einem zweiten Taktzyklus zu steuern,
dadurch gekennzeichnet,
daß die gemeinsam benutzte Ausführungseinheit (106) mindestens zwei aufeinanderfolgende Ausführungsstufen (106_1, . . ., 106_n) aufweist, von denen jede einen Eingangs- und einen Ausgangsdatenbus (106a, . . ., 106n) hat, und der Ausgangsdatenbus (106b) einer vorhergehenden Ausführungsstufe (106_1) mit dem Eingangsdatenbus (106b) der nachfolgenden Ausführungsstufe (106_2) gekoppelt ist, wobei die eine Ausführungsstufe (106_2) die Daten des ersten Prozessors (101) und die andere Ausführungsstufe (106_1) die Daten des zweiten Prozessors (102) im gleichen Taktzyklus verarbeitet.
- a) einem ersten Prozessor (101);
- b) einem zweiten Prozessor (102);
einem Mittel (105), um die ersten Daten von dem ersten Prozessor (101) zur Ausführung zu dieser gemeinsam benutzten Ausführungseinheit (106) in einem ersten Taktzyklus zu steuern, und um die zweiten Daten von dem zweiten Prozessor (102) zur Ausführung zu dieser gemeinsam benutzten Ausführungseinheit (106) in einem zweiten Taktzyklus zu steuern,
dadurch gekennzeichnet,
daß die gemeinsam benutzte Ausführungseinheit (106) mindestens zwei aufeinanderfolgende Ausführungsstufen (106_1, . . ., 106_n) aufweist, von denen jede einen Eingangs- und einen Ausgangsdatenbus (106a, . . ., 106n) hat, und der Ausgangsdatenbus (106b) einer vorhergehenden Ausführungsstufe (106_1) mit dem Eingangsdatenbus (106b) der nachfolgenden Ausführungsstufe (106_2) gekoppelt ist, wobei die eine Ausführungsstufe (106_2) die Daten des ersten Prozessors (101) und die andere Ausführungsstufe (106_1) die Daten des zweiten Prozessors (102) im gleichen Taktzyklus verarbeitet.
2. Multiprozessor nach Anspruch 1, wobei die Daten aus dem
ersten Prozessor (101) bei allen ungeraden Taktzyklen
an die gemeinsam benutzte Ausführungseinheit (106)
übertragen werden, und Daten aus dem zweiten Prozessor
(102) bei allen geraden Taktzyklen an die gemeinsam
benutzte Ausführungseinheit (106) übertragen werden.
3. Multiprozessor nach Anspruch 1, wobei bei einer ersten
Anzahl von Taktzyklen die Daten aus dem ersten
Prozessor (101) und bei einer zweiten Anzahl von
Taktzyklen die Daten aus dem zweiten Prozessor (102)
von der gemeinsam benutzten Ausführungseinheit (106)
verarbeitet werden.
4. Multiprozessor nach Anspruch 3, wobei sich die erste
Anzahl von Taktzyklen von der zweiten Anzahl von
Taktzyklen unterscheidet.
5. Multiprozessor nach Anspruch 1, wobei die Registerdatei
in jedem Prozessor (101, 102) behalten wird, und die
Mittel zur Steuerung (105) nur die ersten und zweiten
Daten senden, die von der gemeinsam benutzten
Ausführungseinheit (106) zu verarbeiten sind.
6. Multiprozessor nach Anspruch 1, wobei die Daten, die
von der gemeinsam benutzten Ausführungseinheit (106)
verarbeitet worden sind, über einen Demultiplexer (107)
an den zugeordneten ersten oder zweiten Prozessor (101,
102) übertragen werden.
7. Multiprozessor nach Anspruch 1, wobei der
Ausgangsdatenbus jeder zweiten Ausführungsstufe (106_2,
106_4, 106_6) mit dem Eingangsdatenbus der ersten
Ausführungsstufe (106_1) gekoppelt ist.
8. Multiprozessor nach Anspruch 7, wobei die Ausgangsdaten
von jeder zweiten Ausführungsstufe (106_2, 106_4, . . .
106_n) nach jeweils zwei Taktzyklen oder nach jedem
Vielfachen von zwei Taktzyklen an den Eingang der
ersten Ausführungsstufe (106_1, 106_3, . . ., 106_n - 1)
übertragen werden.
9. Multiprozessor nach Anspruch 1, wobei die Ausführungs
stufen Filterstufen (106_1, . . ., 106_n) sind.
10. Multiprozessor nach Anspruch 1, wobei die gemeinsam
benutzte Ausführungseinheit (106) zwischen dem ersten
und zweiten Prozessor (101, 102) angeordnet ist.
11. Multiprozessor nach Anspruch 1, wobei die gemeinsam
benutzte Ausführungseinheit eine Fließkommaeinheit
(106) ist.
12. Multiprozessor nach Anspruch 1, wobei die gemeinsam
benutzte Ausführungseinheit eine
Datenkompressionseinheit ist.
13. Multiprozessor nach Anspruch 1, wobei die gemeinsam
benutzte Ausführungseinheit eine Multimedia-
Ausführungseinheit ist.
14. Multiprozessor nach Anspruch 1, wobei der erste und
zweite Prozessor (101, 102) eine lokale Registerdatei
(20, 22) enthält.
15. Multiprozessor nach Anspruch 1, wobei das Steuermittel
ein Multiplexer (105) ist.
16. Multiprozessor nach Anspruch 1, der außerdem Mittel
(107) enthält, die ein Ergebnis von einer gemeinsam
benutzten Ausführungseinheit (106) entweder an den
ersten oder an den zweiten Prozessor (101, 102) steuern.
17. Multiprozessor nach Anspruch 16, wobei das Steuermittel
ein Demultiplexer (107) ist.
18. Multiprozessor nach Anspruch 14, wobei sowohl der erste
als auch der zweite Prozessor (101, 102) eine Kopie von
seinen Fließkomma-, Multimedia- und/oder
Datenkompressionsregistern (20, 22) behält.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98108047 | 1998-05-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19910451A1 DE19910451A1 (de) | 1999-11-04 |
DE19910451C2 true DE19910451C2 (de) | 2003-08-14 |
Family
ID=8231870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1999110451 Expired - Fee Related DE19910451C2 (de) | 1998-05-02 | 1999-03-10 | Multiprozessor |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19910451C2 (de) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3980992A (en) * | 1974-11-26 | 1976-09-14 | Burroughs Corporation | Multi-microprocessing unit on a single semiconductor chip |
-
1999
- 1999-03-10 DE DE1999110451 patent/DE19910451C2/de not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3980992A (en) * | 1974-11-26 | 1976-09-14 | Burroughs Corporation | Multi-microprocessing unit on a single semiconductor chip |
Also Published As
Publication number | Publication date |
---|---|
DE19910451A1 (de) | 1999-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68929215T2 (de) | Datenprozessor | |
DE112005000706B4 (de) | Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE3689923T2 (de) | Dreiphasen-Pipeline-Signalprozessor. | |
DE69724355T2 (de) | Erweiterte symmetrische Multiprozessorarchitektur | |
DE69132195T2 (de) | System für verteilte Mehrfachrechnerkommunikation | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE69701141T2 (de) | Multithreaded mikroprozessor ausgestaltet zur ausführung von unterbrechungsverarbeitungsroutinen als threads | |
DE69701078T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren | |
DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
DE69229244T2 (de) | Multiprozessor mit effizienter Verwendung von Prozessoren mit unterschiedlichen Leistungseigenschaften | |
DE69735575T2 (de) | Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern | |
DE2847216C2 (de) | Datenverarbeitungsanlage mit Mehrprogrammbetrieb | |
DE69305366T2 (de) | System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung | |
DE3852928T2 (de) | Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen. | |
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE102009049078B4 (de) | Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen | |
DE112005002432B4 (de) | Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE602004012563T2 (de) | Mehrfädiges DMA | |
DE3789490T2 (de) | Steuerungssystem für ein Vektorprozessor. | |
DE69219848T2 (de) | Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau | |
DE3741850A1 (de) | Ausfuehrungseinheit fuer einen i/o-prozessor | |
DE102020103521A1 (de) | Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8304 | Grant after examination procedure | ||
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |