-
Rechensysteme
gibt es in vielen Variationen, z.B. Mehrzweck-Rechensysteme oder
algorithmische Vorrichtungen, die für spezifischere Aufgaben gedacht
sind. Zusammen mit den Kosten ist eine der wichtigsten Charakteristika
jedes Computersystems jedoch seine Leistungsfähigkeit. Die Leistungsfähigkeit
bzw. Arbeitsgeschwindigkeit wird oft anhand einer Anzahl von Vorgängen quantifiziert,
die das System während
eines bestimmten Zeitraums ausführen kann.
Die Leistungsfähigkeit
typischer Computersysteme, die eine einzige primäre Verarbeitungseinheit einsetzen,
nimmt auf Grund einer Anzahl von Faktoren seit vielen Jahren ständig zu.
Beispielsweise haben Verbesserungen der rohen Arbeitsgeschwindigkeit
verschiedener Systemkomponenten wie z.B. der Verarbeitungseinheit
selbst, eines Datenspeichers, von Eingabe-/Ausgabe-(I/O-)Peripheriegeräten und anderen
Teilen des Systems zu der erhöhten
Leistungsfähigkeit
beigetragen. Außerdem
haben Fortschritte bei der Innenstruktur der Verarbeitungseinheit,
einschließlich
des verwendeten Anweisungssatzes, der Anzahl von integrierten internen
Datenregistern usw., die Computerleistungsfähigkeit verbessert. Andere
strukturelle Belange wie z.B. die Verwendung eines hierarchischen
Datenspeicherungssystems, das einen oder mehrere Cache-Speicher
für Daten, auf
die oft zugegriffen wird, einsetzt, haben ebenfalls zu diesen Verbesserungen
der Leistungsfähigkeit beigetragen.
-
Um
größere Verbesserungen
der Computerausführungsgeschwindigkeit,
die über
das Einzelprozessormodell hinausgehen, zu erzielen, wurden bereits
zahlreiche Multiprozessor-Rechensystemarchitekturen,
bei denen mehrere Verarbeitungseinheiten miteinander gekoppelt sind,
um auf eine gewisse kooperative Weise zu arbeiten, vorgeschlagen
und implemen tiert. Um eine gemeinsame Aufgabe zu erfüllen, kommunizieren
die Verarbeitungseinheiten normalerweise miteinander, indem sie
bestimmte Arten von Informationen gemeinsam verwenden, was es den
Verarbeitungseinheiten ermöglicht,
ihre Aktivitäten
zu koordinieren. Viele dieser ersonnenen Architekturen implementieren
die gemeinsame Verwendung von Daten, zusammen mit Ausführungssteuerungs-
und Statusinformationen, seitens der Verarbeitungseinheiten mittels
eines gemeinsamen Speicheradressraums.
-
Normalerweise
besteht ein Ziel eines Mehrfachverarbeitungscomputersystems in einer
extremen Verringerung der Ausführungszeit
für eine
bestimmte Aufgabe gegenüber
einem Einzelprozessorcomputer. Diese Verringerung nähert sich
an eine theoretische Grenze eines Faktors an, der gleich der Anzahl
von verwendeten Verarbeitungseinheiten ist. Ungünstigerweise können Probleme,
die bei Einzelprozessorsystemen nicht angetroffen werden, z.B. die
Konkurrenz zwischen den mehreren Verarbeitungseinheiten um denselben
Anteil eines gemeinsam verwendeten Adressraums, die Ausführung einer
oder mehrerer der Verarbeitungseinheiten verlangsamen, wodurch die
erreichbare Zunahme der Leistungsfähigkeit behindert wird.
-
Um
dieses Problem anzugehen, ermöglichen
manche Rechensysteme, dass in dem System mehrere Kopien derselben
Daten existieren, so dass jegliche Konkurrenz um einen Zugriff auf
dieselben Daten zwischen Verarbeitungseinheiten abgemildert werden
kann. Wenn jedoch jede der Verarbeitungseinheiten eine oder mehrere
der in dem System vorliegenden Datenkopien ändern kann, kann ohne einige
Regeln bezüglich
des Vorliegens der Kopien und Einschränkungen bezüglich der Modifizierung dieser Daten
die Kohärenz
oder Einheitlichkeit der Daten beeinträchtigt werden. Diese Regeln
tendieren wiederum dazu, die Effektivität eines Ermöglichens von mehreren Kopien
der Daten zu verringern.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein Rechensystem
und ein Verfahren mit verbesserten Charakteristika zu liefern.
-
Diese
Aufgabe wird durch ein Rechensystem gemäß Anspruch 1 oder durch ein
Verfahren gemäß 6 Anspruch
gelöst.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines Rechensystems gemäß einem Ausführungsbeispiel
der Erfindung;
-
2 ein
Flussdiagramm eines Verfahrens zum Betreiben eines Rechensystems
gemäß einem Ausführungsbeispiel
der Erfindung;
-
3 ein
Blockdiagramm eines Rechensystems gemäß einem weiteren Ausführungsbeispiel der
Erfindung;
-
4 ein
Blockdiagramm einer Verarbeitungseinheit des Rechensystems der 3 gemäß einem
weiteren Ausführungsbeispiel
der Erfindung;
-
5 ein
Flussdiagramm eines Verfahrens zum Betreiben des Rechensystems der 3 und 4 gemäß einem
Ausführungsbeispiel
der Erfindung.
-
Ein
Ausführungsbeispiel
der Erfindung ist ein Rechensystem 100, wie es in 1 gezeigt
ist. In dem Rechensystem 100 ist eine Mehrzahl von Verarbeitungseinheiten 100a, 100b, 100c enthalten.
Obwohl in 1 zumindest drei Verarbeitungseinheiten gezeigt
sind, kann bei anderen Ausführungsbeispielen
ein Minimum von zwei verwendet werden. Ein Schaltsystem 120,
das einen Speicher 130 umfasst, ist mit jeder Verarbeitungseinheit 110 gekoppelt. Jede
der Verarbeitungseinheiten 110 ist dahin gehend konfiguriert,
durch das Schaltsystem 120 auf Daten von einer anderen
der Verarbeitungseinheiten 110 zuzugreifen. Das Schaltsystem 120 ist
dahin gehend konfiguriert, eine Kopie der Daten in den Speicher 130 einzuspeichern,
während
die Daten zwischen den Verarbeitungseinheiten 110 durch
das Schaltsystem 120 gelangen. Ferner ist jede der Verarbeitungseinheiten 110 außerdem dahin
gehend konfiguriert, auf die Kopie der Daten in dem Speicher 130 des
Schaltsystems 120 zuzugreifen.
-
Anhand
eines Flussdiagramms veranschaulicht 2 ein Verfahren 200 zum
Betreiben eines Rechensystems, z.B. des Systems 100 der 1. Jedoch
können
bei anderen Ausführungsbeispielen andere
Systeme zum Ausführen
des Verfahrens 200 eingesetzt werden. Zunächst wird
eine Mehrzahl von Verarbeitungseinheiten mittels eines Schaltsystems miteinander
gekoppelt (Vorgang 202). In jeder der Verarbeitungseinheiten
wird durch das Schaltsystem auf Daten in einer anderen der Verarbeitungseinheiten
zugegriffen (Vorgang 204). Bei dem Schaltsystem wird eine
Kopie der Daten gespeichert, während
die Daten zwischen den Verarbeitungseinheiten durch das Schaltsystem
gelangen (Vorgang 206). Ferner wird in jeder der Verarbeitungseinheiten
auf die Kopie der Daten, die in dem Schaltsystem gespeichert sind, zugegriffen
(Vorgang 208).
-
3 zeigt
ein bestimmtes Rechensystem 300 gemäß einem weiteren Ausführungsbeispiel
der Erfindung. Obwohl das Rechensystem 300 nachstehend
spezifisch beschrieben ist, z.B. die Anzahl von Verarbeitungseinheiten,
die Art von Schaltsystem, das zum Verbinden der Verarbeitungseinheiten
miteinander verwendet wird, und so weiter, sind auch andere Ausführungsbeispiele
möglich,
die Variationen der nachstehend dargelegten Einzelheiten verwenden.
-
Das
Rechensystem 300 umfasst vier Verarbeitungseinheiten 310a, 310b, 310c, 310d.
Jede der Verarbeitungseinheiten ist mit einem Kreuzschienenschalter 320 gekoppelt.
Ein Speicher 330 ist in den Kreuzschienenschalter 320 integriert
oder direkt mit demselben gekoppelt. In dem Schalter 320 befinden sich
ferner eine Steuerlogik 340 und eine Kennungsbank 350,
deren Funktionalität
nachstehend beschrieben wird. Eine Systemarchitektur, die mehrere Verarbeitungseinheiten
und einen Schalter gemäß der Darstellung
in 3 verwendet, wird oft als „Symmetrische-Mehrfachverarbeitung"-System bzw. SMP-System (SMP = symmetric
multiprocessing) bezeichnet. Dieser Begriff wird üblicherweise
auf Rechensysteme angewendet, die eine beliebige Anzahl mehrerer
identischer Verarbeitungseinheiten verwenden, die einen gemeinsamen
Speicheradressraum verwenden. SMP-Architekturen werden üblicherweise
bei UNIX- und NT/2000-Rechensystemen eingesetzt. Obwohl 3 spezifisch
das Vorliegen von vier Verarbeitungseinheiten 310 angibt,
können bei
anderen Ausführungsbeispielen
mehr Verarbeitungseinheiten 310 oder nur zwei Verarbeitungseinheiten 310 verwendet
werden.
-
Der
Kreuzschienenschalter 320 fungiert als Schaltsystem, das
dahin gehend konfiguriert ist, eine Kommunikation, z.B. einen Datentransfer,
zwischen beliebigen zwei der Verarbeitungseinheiten 310 zu ermöglichen.
Ferner kann eine Kommunikation zwischen beliebigen der Verarbeitungseinheiten 310 gleichzeitig
durch den Kreuzschienenschalter 320 erfolgen. Andere Informationen
wie z.B. Status- und Steuerinformationen, Nachrichten zwischen einzelnen
Prozessoren und dergleichen können
bei anderen Implementierungen durch den Schalter 320 zwischen
den Verarbeitungseinheiten 310 weitergeleitet werden. Bei
wieder anderen Ausführungsbeispielen können andere
Schalter als Kreuzschienenschalter verwendet werden, die das Weiterleiten
von Daten zwischen den Verarbeitungseinheiten 310 ermöglichen.
Bei einer anderen Implementierung können mehr als ein Schalter 320,
von denen einer oder mehrere einen Speicher 330 enthält bzw.
enthalten, verwendet werden und dahin gehend konfiguriert sein,
ein Schaltsystem oder „Gewebe” zu bilden,
das die verschiedenen Verarbeitungseinheiten 310 miteinander
koppelt. Bei diesem Szenario kann der Speicher 330 zwischen
zwei o der mehreren der Schalter, die das Schaltgewebe oder -system
bilden, verteilt sein.
-
Der
Speicher 330 des Kreuzschienenschalters 320 kann
ein beliebiger Speicher sein, der in der Lage ist, einen Teil von
Daten, die zwischen den Verarbeitungseinheiten 310 durch
den Schalter 320 gelangen, zu speichern. Bei einer Implementierung
beträgt
die Speicherungskapazität
des Speichers 320 zumindest ein Gigabyte (GB). Als Speicher 320 können beliebige
einer Anzahl von Speichertechnologien verwendet werden, einschließlich, aber
nicht ausschließlich,
eines dynamischen Direktzugriffsspeichers (DRAM – dynamic random access memory) und
eines statischen Direktzugriffsspeichers (SRAM – static random access memory)
sowie Einzelreihen-Speichermodule (SIMMs – single in-line memory modules)
und Doppelreihen-Speichermodule (DIMMs – dual in-line memory modules), die entweder DRAMs
oder SRAMs verwenden.
-
Eine
ausführlichere
Darstellung einer der Verarbeitungseinheiten 310a wird
in dem Blockdiagramm der 4 präsentiert. Manche oder alle
der anderen Verarbeitungseinheiten 310 der 3 können dieselbe
Architektur aufweisen oder können
eine gänzlich
andere innere Struktur verwenden. Bei 4 umfasst
die Verarbeitungseinheit 310a vier Prozessoren 312a, 312b, 312c, 312d,
von denen jeder wiederum einen Cache-Speicher 314a, 314b, 314c bzw. 314d umfasst.
Ferner ist jeder der Prozessoren 312 mit einer Speichersteuerung 316 gekoppelt.
Die Speichersteuerung 316 wiederum ist mit jedem eines
lokalen Speichers 318 gekoppelt, der sich in der Verarbeitungseinheit 310a befindet
oder eng mit derselben gekoppelt ist, und mit dem in 3 angezeigten
Kreuzschienenschalter 320. Bei anderen Ausführungsbeispielen
kann jede Verarbeitungseinheit 310 oder einen oder mehrere
Prozessoren 312 aufweisen.
-
Allgemein
greift jede der Verarbeitungseinheiten 310 des bestimmten
Systems 300 der 3 auf denselben gemeinsam verwendeten
Speicheradressraum zu. Der gemeinsam verwendete Adressraum ist unter
manchen oder allen der lokalen Speicher 318 der Verarbeitungseinheiten 310 verteilt
oder denselben zugewiesen. Bei einer Implementierung enthält der lokale
Speicher 318 jeder Verarbeitungseinheit 310 die
Daten, die einem ausschließlichen Teil
des Speicheradressraums zugeordnet sind, der von den Verarbeitungseinheiten 310 gemeinsam
verwendet wird. Für
diesen Teil des Adressraums kann die zugeordnete Verarbeitungseinheit 310 als „Ausgangs"-Position für diese
Daten angesehen werden, von der aus die anderen Verarbeitungseinheiten 310 durch
den Schalter 320 auf diese Daten zugreifen können. In
manchen Fällen
ist die jüngste
Version eines angeforderten Teils von Daten eventuell nicht an der
Ausgangs-Verarbeitungseinheit 310 angeordnet, sondern
an einer anderen Verarbeitungseinheit 310. Jedoch hält die Ausgangs-Verarbeitungseinheit 310 und/oder
der Schalter 320 bei einem derartigen Ausführungsbeispiel
Informationen in einem Verzeichnis oder einer ähnlichen Datenstruktur, die
die Position der jüngsten
Version der Daten angibt. Bei einem anderen Ausführungsbeispiel kann jede der
Verarbeitungseinheiten 310 auch ihren lokalen Speicher 318 als
Cache für
Daten verwenden, die bei einer anderen Verarbeitungseinheit 310 beheimatet
sind und auf die zuvor von einer anderen Verarbeitungseinheit 310 zugegriffen
wurde. Somit können
für beliebige
jeweilige Daten, auf die durch eine der Verarbeitungseinheiten 310 in
diesem gemeinsam verwendeten Adressraum zugegriffen wird, die Daten
in der Verarbeitungseinheit 310, die die Daten anfordert,
oder in einer anderen der Verarbeitungseinheiten 310 befindlich
sein, oder beides. Außerdem
kann jede der Verarbeitungseinheiten 310 Zugriff auf einen
für ihre eigene
Verwendung reservierten Datenspeicher haben, der in 4 nicht
explizit gezeigt ist.
-
5 zeigt
eine Ansicht, auf hoher Ebene, eines Verfahrens 500 zum
Betreiben des Systems 300 der 3. Bezüglich der
in 4 veranschaulichten Verarbeitungseinheit 310a kann
jeder Prozessor 312, wenn er auf ein bestimmtes Datum in
dem gemeinsam verwendeten Speicherraum zugreift (z.B. ein solches
liest), zuerst seinen eigenen Cache-Speicher 314 durchsuchen (Vorgang 502).
Falls sie in dem Cache 314 angetroffen werden, wird auf die
Daten zugegriffen (Vorgang 504). Andernfalls empfängt die
Speichersteuerung 316 die Datenanforderung von dem Prozessor 312 (Vorgang 506).
Ansprechend darauf kann die Speichersteuerung 316 zuerst
den lokalen Speicher 318 der Verarbeitungseinheit 310 durchsuchen
(Vorgang 508). Falls die Suche nach den angeforderten Daten
in dem lokalen Speicher 318 erfolgreich ist, wird auf die
Daten zugegriffen, und dieselben werden zu dem Prozessor 312 zurückgeführt (Vorgang 510);
andernfalls kann die Anforderung dann an den Kreuzschienenschalter 320 weitergeleitet
werden (Vorgang 512).
-
Nachdem
der Kreuzschienenschalter 320 eine Speicheranforderung
von der Verarbeitungseinheit 310a empfängt, kann der Schalter 320 seinen Speicher 330 nach
den angeforderten Daten durchsuchen (Vorgang 514). Falls
die Daten in dem Speicher 330 gespeichert sind, wird auf
die Daten zugegriffen, und dieselben werden zu der anfordernden Verarbeitungseinheit 310 zurückgeführt (Vorgang 516).
Falls sie nicht gefunden werden, kann der Schalter 320 bestimmen,
welche der verbleibenden Verarbeitungseinheiten 310 die
Daten besitzt (Vorgang 518), beispielsweise die jeweilige
Verarbeitungseinheit 310, die als Ausgangsposition für die angeforderten
Daten agiert, und kann die Anforderung an dieselbe leiten (Vorgang 520).
Die Verarbeitungseinheit 310, die die Anforderung empfängt, greift
auf die angeforderten Daten zu und führt sie zu dem Schalter 320 zurück (Vorgang 522),
der wiederum die angeforderten Daten an die anfordernde Verarbeitungseinheit 310 weiterleitet
(Vorgang 524). Außerdem
kann der Schalter 320 auch eine Kopie der Daten, die zu
der anfordernden Verarbeitungseinheit 310 zurückgeführt werden,
in seinem Speicher 330 speichern (Vorgang 526).
Beliebige der Verarbeitungseinheiten 310 können anschließend auf
die Kopie der in dem Speicher 330 gespeicherten Daten zugreifen
(Vorgang 528).
-
In
dem Fall, in dem die jüngste
Version der angeforderten Daten nicht an der Ausgangsverarbeitungseinheit 310 angeordnet
ist, kann die Ausgangseinheit 310 die Anforderung mittels
des Schalters 320 an die jeweilige Verarbeitungseinheit 310 weiterleiten,
die die jüngste
Version der angeforderten Daten hält. Bei einer anderen Implementierung
kann der Schalter 320 diese Anforderung direkt weiterleiten, ohne
die Ausgangseinheit 310 zu involvieren. Die Einheit 310,
die die jüngste
Version hält,
kann dann die angeforderten Daten an den Schalter 320 zurückführen, der
die Daten dann direkt an die anfordernde Einheit 310 übermitteln
kann. Bei einem weiteren Ausführungsbeispiel
kann der Schalter 320 die jüngste Version auch an die Ausgangseinheit 310 weiterleiten,
die dann ihre Kopie der Daten aktualisieren kann.
-
Bei
Ausführungsbeispielen,
bei denen mehr als ein Schalter 320 in dem Rechensystem 300 verwendet
wird, können
mehr als einer der Schalter 320 an einem Transferieren
von Datenanforderungen und Antworten zwischen den verschiedenen
Verarbeitungseinheiten 310 beteiligt sein. Beispielsweise kann
einer der Schalter 320 auf einen Empfang einer Anforderung
bezüglich
Daten von einer der Verarbeitungseinheiten 310 hin die
Anforderung an eine andere Verarbeitungseinheit 310 weiterleiten,
entweder direkt oder mittels eines anderen Schalters 320.
Daten, die ansprechend auf eine derartige Anforderung durch eine
Verarbeitungseinheit 310 zurückgeführt werden, können auf ähnliche
Weise zu der anfordernden Verarbeitungseinheit 310 zurückgeführt werden.
Ferner kann einer oder können
mehrere der Schalter 320, durch den bzw. die die Daten
gelangen, eine Kopie dieser Daten zur späteren Wiedergewinnung durch
eine andere Verarbeitungseinheit 310, die diese Daten später anfordert,
speichern.
-
Angesichts
der Tatsache, dass der einzige gemeinsam verwendete Speicherraum
unter den mehreren Verarbeitungseinheiten 310 aufgeteilt
ist, und auch dass jede Verarbeitungseinheit 310 vorübergehende
Kopien der Daten in ihren zugeordneten Cache-Speichern 314 oder
ihrem lokalen Speicher 318 Cachespeichern kann, kann ein
potentielles Cache-Kohärenzproblem
resultieren. Mit anderen Worten können mehrere Kopien derselben
Daten existieren, von denen jede potentiell unterschiedliche Werte aufweist.
Wenn beispielsweise eine Verarbeitungseinheit 310 auf Daten
zugreift, die in dem lokalen Speicher 318 einer anderen
Verarbeitungseinheit 310 durch den Schalter 320 gespeichert
sind, besteht eine Frage bezüglich
dessen, ob diese Daten letztlich in der anfordernden Verarbeitungseinheit 310 Cache-gespeichert
werden, z.B. in einem der Cache-Speicher 314 oder dem lokalen
Speicher 318 der Verarbeitungseinheit 310a. Ein
lokales Cache-Speichern
der Daten führt
zu mehreren Kopien der Daten in dem System 300. Ein Sichern
einer Kopie der Daten in dem Speicher 330 des Schalters 320 führt ebenfalls
potentiell zu demselben Problem.
-
Um
mögliche
Cache-Kohärenzprobleme
anzugehen, kann der Schalter 320 auswählen, welche der Daten, die
durch den Schalter 320 zwischen den Verarbeitungseinheiten 310 gelangen,
in dem Speicher 330 gespeichert werden. Bei einem Ausführungsbeispiel
kann eine derartige Auswahl von Informationen abhängen, die
durch den Schalter 320 von der Verarbeitungseinheit 310,
die die Daten anfordert, empfangen werden. Beispielsweise kann auf die
angeforderten Daten in einem von zwei unterschiedlichen Modi zugegriffen
werden: Exklusiv-Modus und Gemeinsame-Verwendung-Modus. Bei dem Gemeinsame-Verwendung-Modus
gibt die anfordernde Verarbeitungseinheit 310 an, dass
sie den Wert der Daten, nachdem sie gelesen wurden, nicht ändern wird.
Im Gegensatz dazu gibt ein Anfordern eines Zugriffs auf Daten in
dem Exklusiv-Modus an, dass die Verarbeitungseinheit 310 beabsichtigt,
den Wert der anforderten Daten zu ändern. Folglich weisen mehrere
Kopien dieser spezifischen Daten, auf die in dem Gemeinsame-Verwendung-Modus
zugegriffen wird, allesamt denselben einheitlichen Wert auf, wohingegen
Kopiedaten, die in dem Exklusiv-Modus erlangt werden, wahrscheinlich
verändert werden,
was bewirkt, dass andere Kopien derselben Daten ungültig werden.
-
Bei
einem Ausführungsbeispiel,
das diese beiden Modi verwendet, kann der Schalter 320 Daten,
die in dem Gemeinsame-Verwendung-Modus angefordert
werden, in dem Speicher 330 speichern, wenn in dem Speicher 330 genügend Platz
vorhanden ist. Dagegen werden durch den Schalter 320 gelangende
Daten, auf die in dem Exklusiv-Modus zugegriffen wird, nicht in
dem Speicher 330 gespeichert. Demgemäß sind Daten in dem Speicher 330 des
Schalters 320, der dazu verwendet wird, weitere Datenanforderungen
von einer oder mehreren Verarbeitungseinheiten 310 zu erfüllen, auf
Grund einer Änderung
durch eine andere Verarbeitungseinheit 310 davor geschützt, ungültig gemacht
zu werden.
-
Dadurch,
dass zumindest ein Teil der durch den Schalter 320 gelangenden
Daten in dem Speicher 330 gespeichert wird, kann der Schalter 320 nachfolgende
Anforderungen nach diesen selben Daten erfüllen, indem er die Daten direkt
aus dem Speicher 330 ausliest und die Daten an die anfordernde
Verarbeitungseinheit 310 transferiert. Andernfalls würde die
Anforderung an die Verarbeitungseinheit 310, die die Daten
besitzt, weitergeleitet werden, wonach die Verarbeitungseinheit 310,
die die Anforderung bedient, die Daten aus ihrem eigenen lokalen
Speicher 318 lesen würde
und die Daten an den Schalter 320 transferieren würde, wie
oben beschrieben wurde. Erst dann wäre der Schalter 320 in
der Lage, die Daten an die anfordernde Verarbeitungseinheit 310 zu
transferieren. Somit ist in Situationen, in denen der Speicher 330 die
angeforderten Daten enthält,
eine Latenzzeit zwischen einer Datenanforderung und einer Erfüllung dieser
Anforderung beträchtlich
verringert. Außerdem
werden folglich Gesamtverkehrsaufkommen zwischen den Verarbeitungseinheiten 310 und
dem Schalter 320 auf Grund der ge ringeren Anzahl von Datenanforderungen,
die an andere Verarbeitungseinheiten 310 weitergeleitet werden,
beträchtlich
verringert, wodurch der Durchsatz und die Leistungsfähigkeit
des Systems 310 verbessert werden.
-
Wenn
man davon ausgeht, dass ein endliches Maß an Datenspeicherung in dem
Speicher 330 des Schalters 320 zur Verfügung steht,
ist es wahrscheinlich, dass der Speicher 330 irgendwann
voll wird und somit eine Bestimmung bezüglich dessen erfordert, welche
der in dem Speicher 330 gespeicherten Daten durch neue
Daten zu ersetzen sind. Um dieses Problem anzugehen, kann der Schalter 320 bei
einem Ausführungsbeispiel
die bereits in dem Speicher 330 gespeicherten Daten unter
zumindest einer Cache-Ersetzungsstrategie ersetzen. Beispielsweise
kann der Schalter 320 eine „Am-Längsten-Ungenutzt"-Strategie (LRU-Strategie,
LRU = least-recently-used)
anwenden, bei der Daten in dem Speicher 330, deren Zugriff
am längsten
zurückliegt, durch
die neuesten Daten, die in den Speicher 330 eingespeichert
werden sollen, ersetzt werden. Bei einer anderen Implementierung
kann der Schalter 320 eine „In-Letzter-Zeit-Nicht-Benutzt"-Strategie" (NRU-Strategie, NRU = not-recently-used)
verwenden, bei der Daten in dem Speicher 330, auf die innerhalb
eines vorbestimmten Zeitraums in letzter Zeit nicht zugegriffen
wurde, zufällig
für einen
Ersatz durch die neuen Daten ausgewählt werden. Andere Cache-Ersetzungsstrategien,
einschließlich,
aber nicht beschränkt
auf, FIFO (first-in-first-out),
Zweite-Chance und Nicht-Häufig-Benutzt
(NFU – not-frequently-used),
können
bei anderen Ausführungsbeispielen
verwendet werden.
-
Wie
bei manchen obigen Ausführungsbeispielen
beschrieben ist, kann der Speicher 330 als eine Art Cache-Speicher
implementiert werden. Folglich kann der Speicher 330 auf
eine ähnliche
Weise wie ein Externer-Cache-Speicher entworfen sein, z.B. ein Cache-Speicher
einer Ebene 4 (L4), der manchmal in Zentralverarbeitungseinheit-(CPU(central
processing unit))-Computerkonsolen integriert ist.
-
Bei
einem Ausführungsbeispiel
verwendet der Schalter 320 eine Steuerlogik 340,
die jede Anforderung bezüglich
Daten, die von den Verarbeitungseinheiten 310 empfangen
wird, analysiert, um zu bestimmen, an welche der Verarbeitungseinheiten 310 die
Anforderung geleitet werden soll. Diese Funktion kann bei einem
Beispiel dadurch erfüllt
werden, dass die Adresse der Daten, auf die zugegriffen werden soll,
mit einer Tabelle verglichen wird, die Adressen oder Adressbereiche
des gemeinsam verwendeten Adressraums, der bestimmten Verarbeitungseinheiten 310 zugeordnet
ist, verglichen wird. Als Teil dieser Analyse kann die Steuerlogik 340 auch
die Adresse der angeforderten Daten mit einer „Kennungsbank" 350 vergleichen,
die Informationen bezüglich dessen
umfasst, ob sich die Daten in dem Speicher 330 befinden,
und die, falls dies der Fall ist, die Position dieser Daten in dem
Speicher 330 umfasst. Bei einem Beispiel ist ein nicht-sequentielles
Kennungsnachschlagschema implementiert, um die Zeit, die benötigt wird,
um die Kennungsbank 350 nach Informationen bezüglich der
angeforderten Daten zu durchsuchen, zu verringern.
-
Um
die in der Kennungsbank 350 benötigte Menge an Informationen
zu verringern, kann der gemeinsam verwendete Speicherbereich und
folglich der Speicher 330 des Schalters 320 in
Cache-„Zeilen” organisiert
sein, wobei jede Zeile Daten von mehreren zusammenhängenden
Adresspositionen des gemeinsam verwendeten Adressraums umfasst. Ein
Gruppieren von Positionen des Adressraums auf eine derartige Weise
ermöglicht,
dass eine kleinere Kennungsbank 350 unterhalten und durchsucht
wird.
-
Obwohl
hierin mehrere Ausführungsbeispiele
der Erfindung erörtert
wurden, sind andere Ausführungsbeispiele
möglich,
die in dem Schutzumfang der Erfindung enthalten sind. Obwohl beispielsweise spezifische
Ausführungsbeispiele
der Erfindung, die in Verbindung mit 3 und 4 beschrieben
wurden, ein SMP-System mit einem einzigen Kreuzschienen schalter 320 verwenden,
können
andere Rechensystemarchitekturen, die mehrere Prozessoren verwenden,
die mit einem oder mehreren Schaltern oder anderen Verbindungsvorrichtungen,
die als Schaltsystem oder -gewebe konfiguriert sind, gekoppelt sind,
von den hierin präsentierten
Ausführungsbeispielen
profitieren. Außerdem
können
Aspekte eines Ausführungsbeispiels
mit denen anderer hierin erörterter
Ausführungsbeispiele
kombiniert werden, um weitere Implementierungen der vorliegenden
Erfindung zu erzeugen. Obwohl die vorliegende Erfindung also im
Zusammenhang mit spezifischen Ausführungsbeispielen beschrieben
wurde, sind derartige Beschreibungen lediglich zu Veranschaulichungs- und
nicht zu Einschränkungszwecken
vorgesehen. Demgemäß wird der
eigentliche Schutzumfang der Erfindung lediglich durch die folgenden
Patentansprüche
begrenzt.