-
Die Erfindung betrifft ein Mehrprozessorsystem zum
gemeinsamen Bearbeiten eines Prozesses durch mehrere
Prozessoreinheiten, wobei die Daten dieses gemeinsamen Prozesses in einem
geteilten Arbeitsspeicher (englisch: SHARED MEMORY)
abgearbeitet werden, auf den alle am Prozeß beteiligten
Prozessoreinheiten zugreifen.
-
In einem Mehrprozessorsystem (englisch: MULTI PROCESSOR
SYSTEM) arbeiten mehrere Prozessoren zusammen. Auf diese
Weise kann die Rechenleistung des Systems erhöht werden, weil
durch gemeinsamen Einsatz mehrerer parallel arbeitender
Prozessoren ein höherer Datendurchsatz erreicht werden kann, als
mit einem einzigen Prozessor des gleichen Typs. Die meisten
von Digitalcomputern bearbeiteten Algorithmen und Prozesse
können auch parallel bearbeitet werden. Da die von der
Taktfrequenz und der Anzahl der gleichzeitig bearbeiteten Bits
abhängige Prozessorgeschwindigkeit oberhalb eines bestimmten
Wertes nur noch mit erheblichem finanziellem Aufwand
gesteigert werden kann, ist es wirtschaftlich interessanter,
Prozesse durch mehrere parallel arbeitende langsamere
Prozessoren abarbeiten zu lassen. Einige der aufgrund des parallelen
Einsatzes mehrerer Prozessoren erzielten Vorteile werden
jedoch auf Kosten von Nachteilen wie geringerer
Systemzuverlässigkeit oder größerem Programmieraufwand erkauft. Solche
Nachteile sind meist zurückzuführen auf die hierarchische
Organisation der einzelnen Prozessoren.
-
Üblicherweise sind Mehrprozessorsysteme auf eine von zwei
Arten gekoppelt, nämlich lose gekoppelt oder eng gekoppelt
-
Bei lose gekoppelten Mehrprozessorsystemen (englisch: LOSELY
COUPLED MULTIPROCESSORSYSTEMS) verfügt jeder Prozessor über
einen eigenen, ihm zugeordneten Arbeitsspeicher, eigene Ein-
/Ausgabeeinheiten und ein separates Betriebssystem. Die
Prozessoren kommunizieren über geteilte Verbindungen in Form lokaler
Netze oder Clusternetze. Beispielsweise die US 5,036,459
beschreibt ein solches Mehrprozessorsystem mit
verteiltem Speicher. In solchen Systemen sind Flexibilität und
Leistungsfähigkeit durch die Geschwindigkeit des Koppelnetzes
beschränkt. Außerdem können nicht ohne die Übertragung
enormer Datenmengen und Informationsmengen mehrere Prozessoren
effizient denselben Task bearbeiten.
-
In eng gekoppelten Mehrprozessorsystemen (englisch: TIGHTLY
COUPLED MULTIPROCESSORSYSTEMS) greifen wenige Prozessoren auf
einen geteilten großen Arbeitsspeicher zu. Diese Prozessoren
sind räumlich nahe zueinander angeordnet und verwenden einen
gemeinsamen Speicherbus, gemeinsame Ein-/Ausgabeeinrichtungen
und ein gemeinsames Betriebssystem. Alle Prozessoren und
Prozesse teilen sich den Zugriff auf den gemeinsamen
Hauptspeicher, die Netzschnittstellen, Ein-/Ausgabeeinrichtungen und
den Massenspeicher. In einem solchen System kann jeder
Prozessor jederzeit für jeden Prozeß verwendet werden. Solche
Mehrprozessorsysteme benötigen einen sehr schnellen
Speicherbus und eine zuverlässige Arbitrierungseinrichtung, um durch
gerechtes Arbitrieren des Speicherzugriffs sicherzustellen,
daß keiner Prozessoreinheit dauerhaft der Zugriff verweigert
wird.
-
Aus US 5,067,071 ist ein Mehrprozessorsystem bekannt, bei dem
eine Vielzahl von Prozessoreinheiten, jeweils bestehend aus
zwei Prozessoren und einem CACHE-Speicher zum
Zwischenspeichern häufig lokal benötigter Daten, über einen gemeinsame
Systembus auf einen geteilten großen Arbeitsspeicher
zugreifen. Der einen Datenbus, einen Vektorbus, einen Adreßbus und
einen Steuerbus beinhaltende Systembus wird über eine
Systemsteuerung mit Busarbiter gesteuert.
-
Die US 4,214,305 beschreibt ein Mehrprozessorsystem, bei dem
mehrere Prozessoren jeweils einen Arbeitsspeicher zugeordnet
haben, und diese Prozessoren jeweils über einen Busarbiter
und einen gemeinsamen Systembus auf einen geteilten Arbeitsspeicher
zugreifen können. Der Busarbiter stellt hierbei
sicher, daß zu jedem Zeitpunkt immer nur ein Prozessor auf den
gemeinsamen Systembus zugreifen kann.
-
Die US 4,414,624 beschreibt ebenfalls ein solches System,
wobei jedem Prozessor ein Taskmanager für den gemeinsamen
Prozeß zugeordnet ist und der gemeinsame Prozeß von einem
System-Zustands-Steuercomputer gesteuert wird. Dieser System-
Zustands-Steuercomputer greift wie die übrigen Prozessoren
von einem Arbitermodul gesteuert über den Systembus auf den
geteilten Speicher zu.
-
Ein Busarbiter und dessen Arbeitsweise sind beispielsweise in
der US 4,229,791 beschrieben.
-
Die US 5,884,027 beschreibt ein eng gekoppeltes
Mehrprozessorsystem mit einem PCI-Bus und mit PCI/PCI-Bridge genannter
Übergangseinrichtungen zum Verbinden mehrerer PCI-
Bussegmente. Der Begriff Bridge wird üblicherweise verwendet
für eine Einheit zum Ermöglichen von Datenverkehr zwischen
Netzeinheiten auf der Grundlage von DLL-Informationen. DLL
steht für Data Link Layer und entspricht der Schicht 2 des
OSI-7-Schichtenmodells. Diese Schicht 2 ist aufgeteilt in
eine obere Teilschicht Logical Link Control LLC und eine untere
Teilschicht Media Access Control MAC.
-
Eine PCI/PCI-Bridge teilt ein PCI-Bussystem auf in ein dem
Host-Prozessor und Host-Speicher zugewandtes primärer PCI-Bus
genanntes Segment, und ein PCI-Peripherieeinheiten
zugewandtes, sekundärer PCI-Bus genanntes Segment.
-
PCI ist eine Abkürzung des englischsprachigen Ausdruckes
Peripheral Component Interconnect und ein PCI-Bus ist ein
standardisierter lokaler Bus zum Verbinden von
Peripherieeinheiten an einen Personalcomputer. Aus technischer Sicht ist ein
PCI-Bus kein Bus, sondern eine Bridge-Funktion mit
Pufferspeichern zum Entkoppeln der "schnellen" Prozessorseite von
einer "langsameren" Peripheriegeräteseite. Der PCI-Bus
ermöglicht somit den asynchronen Betrieb von Peripherieeinheiten
und Prozessor mit Arbeitsspeicher. Mit Peripherieeinheiten
(englisch: PERIPHERAL DEVICE oder DEVICE) wird hierbei jeder
Teil eines Computers außer dem Prozessor und dem
Arbeitsspeicher bezeichnet, beispielsweise Diskettenlaufwerk,
Tastatureinheit, Maus, Monitor, Drucker, Scanner, Mikrofon,
Lautsprecher, Kamera, Videokarte, Modem oder Netzwerkkarte.
-
Ein PCI-Bus oder PCI-System besteht aus drei wesentlichen
Komponentengruppen;
dem Leitungssystem mit den PCI-Steckplätzen zum Ankoppeln von
PCI-Peripheriekomponenten;
dem Hauptkartenchipsatz zur Realisierung der
Koppelkomponenten North-Bridge und South-Bridge; und
PCI-Bridges zum Regeln eines Zusammenspiels zwischen dem
Betriebssystem und PCI-Komponenten. PCI-Bridges können z. B.
PCI/EISA-Bridges zum Anschließen eines EISA-Busses, PCI/SCSI-
Bridges zum Anschließen von SCSI-Komponenten oder PCI/PCI-
Bridges zum Erweitern des PCI-Systems sein.
-
Die North-Bridge ist üblicherweise eine integrierte
Schaltung, die eine Prozessoreinheit und ihren Systemspeicher über
einen Host-Bus mit PCI-Bussen und optional mit einem
Graphikport (englisch: ACCELLERATED GRAPHIC PORT AGP) verbindet. Die
South-Bridge ist üblicherweise eine integrierte Schaltung zum
Steuern von IDE-Bus, universellem seriellem Bus USB, PLUG-
and-PLAY-Funktionalität, PCI/EISA-Bridge, Tastatur/Maus-
Steuereinheit, Energieverwaltung und vielen anderen
Leistungsmerkmalen.
-
Eine vorzugsweise Ausgestaltung einer Erweiterung eines PCI-
Bussystems durch PCI/PCI-Bridges ist beispielsweise in der US 6,189,063 B1
beschrieben.
-
Die Funktionsweise der PCI-Informationsflußsteuerung in PCI-
Bussystemen mit mehreren PCI/PCI-Bridges wird in US 5,878,237
insbesondere im Zusammenhang mit den Fig. 4, 4A, 5, 5A und
5B und der zugehörigen Beschreibung in den Spalten 17 bis 20
beschrieben. Die dort beschriebene PCI-
Informationsflußsteuerung besteht aus den Einheiten PCI-
ADDRESS-Komparator, PCI-Target-Flow-Controller und PCI-
Arbiter und dient dem Vermeiden von Zugriffskollisionen sowie
zur Steuerung eines geordneten PCI-Buszugriffs für alle
angeschlossenen Komponenten.
-
Die US 5,828,865 beschreibt insbesondere unter Bezugnahme auf
die Fig. 2 und 3 in den Spalten 4 und 5 ein eng
gekoppeltes Mehrprozessorsystem, bei dem eine Vielzahl von eine
Prozessoreinheit bildenden Prozessoren miteinander verbunden
sind und auf einen Host-Bus zugreifen, der unter Verwendung
einer Cluster-Steuereinheit "Cluster Attachement" mit
weiteren Prozessoreinheiten verbindbar ist. Dieser Host-Bus ist
über ein spezielles PCI/Host-Bridgesystem mit bis zu vier
PCI-Bussegmenten verbunden. Hierbei übernehmen eine Bridge-
Steuereinheit und zwei Expansionseinheiten die Funktion einer
speziellen South-Bridge.
-
Den vorstehend beschriebenen lose gekoppelten
Mehrprozessorsystemen ist gemeinsam, daß der Zugriff auf einen geteilten
Speicher für die Prozessoren länger dauert als der Zugriff
auf ihren lokal zugeordneten Arbeitsspeicher oder CACHE-
Speicher. Solche Systeme sind folglich eher geeignet, wenn
zwischen den einzelnen Prozessoreinheiten und dem geteilten
Speicher größere Datenmengen nicht allzu häufig übertragen
werden sollen. Für die Ankopplung einer Prozessoreinheit mit
hoher Zugriffshäufigkeit auf den geteilten Speicher, also
einer Prozessoreinheit, die viele einzelne Operationen im
geteilten Speicher ausführt, ist ein bekanntes lose gekoppeltes
Mehrprozessorsystem weniger geeignet.
-
Aufgabe der Erfindung ist es, ein Mehrprozessorsystem der
eingangs genannten Art anzugeben, das der Anbindung eines
Prozessorsystems mit hoher Zugriffshäufigkeit an einen geteilten
Speicher und auch der Anbindung eines
Prozessorsystems mit großem Datenmengenübertragungsbedarf an diesen
geteilten Speicher Rechnung trägt.
-
Diese Aufgabe wird gelöst durch ein Mehrprozessorsystem, bei
dem mindestens eine Prozessoreinheit derart priorisiert ist,
daß der geteilte Speicher in ihrem lokal zugeordneten
Arbeitsspeicher realisiert ist. Hierbei ist der lokale
Arbeitsspeicher dieser priorisierten Prozessoreinheit vorzugsweise
derart konfiguriert, daß die übrigen Prozessoreinheiten nur
auf einen Teil dieses Arbeitsspeichers zugreifen können.
Erfindungsgemäß sind alle beteiligten Prozessorsysteme über ein
Peripheriebussystem verbunden, um den Zugriff der nicht
priorisierten Prozessoreinheiten auf den geteilten Speicher im
Arbeitsspeicher der priorisierten Prozessoreinheit zu
ermöglichen.
-
Durch die Realisierung des geteilten Speichers im
Arbeitsspeicher einer der Prozessoreinheiten kann diese priorisierte
Prozessoreinheit mit hoher Geschwindigkeit auf diesen
geteilten Speicher zugreifen. Der Zugriff dieser Prozessoreinheit
auf den geteilten Speicher erfolgt nämlich über den
Speicherbus des Prozessors, beispielsweise einen Front-Side-Bus mit
133 MHz Taktfrequenz. Somit ist die Anbindung des geteilten
Speichers an diese priorisierte Prozessoreinheit optimiert
für hohe Zugriffshäufigkeit und Zugriffe mit geringen
Datenmengen.
-
Die nichtpriorisierten Prozessoreinheiten greifen über ein
Peripheriebussystem auf den geteilten Speicher zu und sind
somit eher bezüglich seltenerer Speicherzugriffe mit größeren
Datenmengen optimiert.
-
In einer besonders günstigen Ausgestaltungsform eines
erfindungsgemäßen Mehrprozessorsystems sind die Prozessoreinheiten
unmittelbar über ein PCI-Bussystem miteinander verbunden. Ein
solches PCI-Bussystem ist sehr einfach und kostengünstig zu
realisieren. Neuere PCI-Busse mit bis zu 64 Bit Busbreite und
bis zu 66 MHz Taktfrequenz sind auch ausreichend schnell, um
größere Datenmengen zu übertragen. Darüber hinaus übernehmen
standardisierte Massenbauelemente die Funktionen des
Bussystems, wie z. B. North-Bridge, South-Bridge, PCI-Steckplätze,
PCI/PCI-Bridge etc.. Ein PCI-Bussystem ist sehr einfach zu
konfigurieren und seine Initialisierung erfolgt beim Starten
des Betriebssystems automatisch. Im Gegensatz zu den
bekannten, eingangs beschriebenen Mehrprozessorsystemen, die einen
PCI-Bus nur zum Anschließen von Peripherieeinrichtungen
verwenden oder als zwischengeschaltete Buseinheit zwischen einer
Prozessoreinheit und einem Ethernet-Bus, werden hier die
Prozessoreinheiten unmittelbar über ein PCI-Bussystem verbunden.
-
In einer Weiterbildung eines erfindungsgemäßen
Prozessorsystems greift eine nicht priorisierte Prozessoreinheit
vorzugsweise über eine PCI/PCI-Bridge, den primären PCI-Bus der
priorisierten Prozessoreinheit und eine PCI-North-Bridge
dieser priorisierten Prozessoreinheit auf den geteilten Speicher
zu. Dadurch kann beispielsweise jede PCI/PCI-Bridge als
Pufferspeicher für die jeweils angeschlossene Prozessoreinheit
dienen. Gegebenenfalls können außerdem die PCI/PCI-Bridges,
wie in der eingangs erwähnten US 6,189,063 B1 beschrieben,
von der priorisierten Prozessoreinheit konfiguriert werden.
Durch das Anschließen der übrigen Prozessoreinheiten an den
primären PCI-Bus der priorisierten Prozessoreinheit, kann
diese priorisierte Prozessoreinheit bzw. deren primärer PCI-
Bus die Zugriffsverwaltung auf den geteilten Speicher
übernehmen.
-
Eine Prozessoreinheit im Sinne der vorliegenden Erfindung
kann sowohl ein einzelner Prozessor sein, aber auch eine
Anordnung mehrerer eng gekoppelter Prozessoren, die einen
einzigen Arbeitsspeicher und ein einziges Betriebssystem haben.
Ein auf einen Anwendungsfall optimiertes System kann hierbei
bedarfsweise als priorisierte Prozessoreinheit oder aber auch
bedarfsweise als eine oder mehrere der nichtpriorisierten
Prozessoreinheiten eine eng gekoppelte Mehrprozessoranordnung
verwenden.
-
Sofern es für das gemeinsame Abarbeiten eines Prozesse
sinnvoll ist, mehrere Prozessoreinheiten mit hohe
Zugriffshäufigkeit auf den geteilten Speicher vorzusehen, kann in einer
Weiterbildung der Erfindung der geteilte Speicher auch auf
zwei oder ggf. mehrere Arbeitsspeicher einzelner
Prozessoreinheiten verteilt werden. Das kann erreicht werden durch die
Zugriffsmöglichkeit aller an einem Prozeß beteiligten
Prozessoreinheiten über das PCI-Bussystem auf die lokalen
Arbeitsspeicher mindestens zweier Prozessoreinheiten. Hierzu müssen
die Bridges (PCI/PCI-Bridge bzw. Northbridge) zu den
Arbeitsspeichern, auf die ein allgemeiner Zugriff möglich sein soll,
sowohl als "Master" als auch als "Target" konfiguriert sein.
Falls der gemeinsame Arbeitsspeicher in dieser Weise verteilt
angeordnet ist, sollten die selben Daten nicht gleichzeitig
an mehreren Stellen im gemeinsamen Speicher abgelegt sein, um
aufwendige Synchronisationen der einzelner Teile des
gemeinsamen Speichers zu vermeiden.
-
Nachstehend wird die Erfindung unter Bezugnahme auf die Figur
der Zeichnung anhand eines Ausführungsbeispiels näher
erläutert.
-
Die Figur zeigt in schematischer Blockdarstellung ein
Ausführungsbeispiel eines Mehrprozessorsystems gemäß der Erfindung.
-
Das in der Figur dargestellte Mehrprozessorsystem hat drei
Prozessoreinheiten CPU1, CPU2, CPUn, die über ein PCI-
Bussystem PCI gekoppelt sind. Jede der Prozessoreinheiten
CPU1, CPU2, CPUn hat einen lokal zugeordneten Cache-Speicher
SC1, SC2, SCn und einen lokal zugeordneten Arbeitsspeicher
RAM1, RAM2, RAMn. Jede Prozessoreinheit CPU1, CPU2, CPUn ist
mit ihrem Arbeitsspeicher RAM1, RAM2, RAMn, ihrem Cache-
Speicher SC1, SC2, SCn und einer ihr zugeordneten PCI-North-
Bridge PCINB1, PCINB2, PCINBn jeweils über einen lokalen
Speicherbus FSB1, FSB2, FSBn verbunden. Ein solcher lokaler
Speicherbus kann beispielsweise ein standardisierter Front-
Side-Bus mit 133 MHz Taktfrequenz sein.
-
Die erwähnten PCI-North-Bridges PCINB1, PCINB2, PCINBn bilden
jeweils mit Leiteranordnungen und PCI-Steckplätzen und
gegebenenfalls mit einer nicht dargestellten South-Bridge für die
angeschlossene Prozessoreinheit CPU1, CPU2, CPUn einen
primären PCI-Bus PCI1, PCI2, PCIn.
-
Im in der Figur dargestellten Ausführungsbeispiel ist im
Arbeitsspeicher RAM2 ein geteilter Speicherbereich SM
vorgesehen, auf den alle Prozessoreinheiten CPU1, CPU2, CPUn
zugreifen können. Die Prozessoreinheit CPU2 ist demnach gemäß der
Erfindung eine priorisierte Prozessoreinheit.
-
Der primäre PCI-Bus PCI2 der priorisierten Prozessoreinheit
CPU2 ist über eine erste PCI/PCI-Bridge PCIB1 mit dem
primären PCI-Bus PCI1 der ersten Prozessoreinheit CPU1 verbunden
und über eine weitere PCI/PCI-Bridge PCIBn mit dem primären
PCI-Bus der weiteren Prozessoreinheit CPUn verbunden.
-
Demgemäß bilden die primären PCI-Busse PCI1, PCI2 und PCIn
der einzelnen Prozessoreinheiten CPU1, CPU2, CPUn mit den
PCI-Bridges PCIB1, PCIBn ein PCI-Bussystem PCI, wobei jeweils
der primäre PCI-Bus PCI1, PCIn der ersten Prozessoreinheit
CPU1 und der weiteren Prozessoreinheit CPUn aus der Sicht der
priorisierten Prozessoreinheit CPU2 sekundäre PCI-Bussegmente
sind.
-
Um einen Lesezugriff und Schreibzugriff der ersten
Prozessoreinheit CPU1 und der weiteren Prozessoreinheit CPUn auf den
geteilten Speicher SM zu gewährleisten, ist im dargestellten
Ausführungsbeispiel die North-Bridge PCINB2 der priorisierten
Prozessoreinheit CPU2 sowohl als "Master" als auch als
"Target" konfiguriert. Da ein Zugriff auf den Arbeitsspeicher
RAM1 der ersten Prozessoreinheit CPU1 oder auf den Arbeitsspeicher
RAMn der weiteren Prozessoreinheit CPUn von anderen
Prozessoreinheiten nicht vorgesehen ist, genügt es, die
PCI/PCI-Bridge PCIB1 und auch die PCI/PCI-Bridge PCIBn als
"Master" und nicht als "Target" zu konfigurieren.
-
Wenn das in der Figur gezeigte und vorstehend beschriebene
Mehrprozessorsystem zum gemeinsamen Abarbeiten eines
Prozesses vorgesehen ist, dessen Prozeßdaten im geteilten Speicher
SM verwaltet werden, wird durch die PCI-Target-Funktionalität
der North-Bridge PCINB2 ein Speicherzugriff auf den geteilten
Speicher SM durch die externen Busteilnehmer CPU1 und CPUn
ermöglicht. Der in jedem PCI-Bus vorgesehene PCI-Busarbiter
übernimmt die Arbitrierungsfunktion für den geteilten
Speicher SM. Außerdem muß als geteilter Speicher kein separater
Speicher physikalisch vorgesehen werden.
-
Wenn in einem abzuarbeitenden Prozeß die priorisierte
Prozessoreinheit CPU2 die Aufgabe hat, viele Bitoperationen, also
Speicherzugriff auf kleine Datenblöcke, auszuführen, kommt
dieser Prozessoreinheit CPU2 der direkte Zugriff auf den
geteilten Speicher im eigenen Arbeitsspeicher RAM2 zugute.
Außerdem kann die priorisierte Prozessoreinheit CPU2 ihren
Cache-Speicher SC2 in einem solchen Prozeß optimal nutzen, da
auch der Cache-Speicher SC2 die priorisierte Anbindung über
den Speicherbus FSB2 an den geteilten Speicher SM hat. Für
Prozeßabläufe mit großer Speicherzugriffshäufigkeit kann
diese Anordnung folglich optimal genutzt werden.
-
Für die übrigen am Prozeß beteiligten Prozessoreinheiten
CPU1, CPUn ist die beschriebene Konstellation für
Speicherzugriffe auf den geteilten Speicher SM mit großen Datenmengen
optimiert. Die Verwendung eines Peripheriebussystems mit
hoher Übertragungskapazität, wie z. B. eines PCI-Busses zur
Anbindung dieser nicht priorisierten Prozessoreinheiten CPU1,
CPUn an den geteilten Speicher SM ermöglicht die Übertragung
großer Datenmenge bei wenigen Einzelzugriffen.
Bezugszeichenliste
CPU1 erste Prozessoreinheit
CPU2 priorisierte Prozessoreinheit
CPUn weitere Prozessoreinheit
PCI PCI-Bussystem, Peripheriebussystem
SC1, SC2, SCn lokal zugeordneter Cache-Speicher
RAM1, RAM2, RAMn lokal zugeordneter Arbeitsspeicher
PCINB1, PCINB2, PCINBn PCI-North-Bridge
FSB1, FSB2, FSBn lokaler Speicherbus
PCI1, PCI2, PCIn primärer PCI-Bus
SM geteilter Speicherbereich
PCIB1 erste PCI/PCI-Bridge
PCIBn weitere PCI/PCI-Bridge