-
Die vorliegende Erfindung betrifft
im Allgemeinen ein Verfahren und ein System zur Datenverarbeitung und
insbesondere die Datenverarbeitung mit einem Datenverarbeitungssystem
mit nichtuniformem Speicherzugriff (NUMA). Insbesondere betrifft
die vorliegende Erfindung noch ein NUMA-Datenverarbeitungssystem und
ein Kommunikationsverfahren in einem NUMA-Datenverarbeitungssystem, in dem Leseanforderungen spekulativ
an einen fernen Speicher weitergeleitet werden.
-
In der Computertechnik ist es bereits
bekannt, dass eine höhere
Computersystemleistung erreicht werden kann, indem die Verarbeitungsleistung
von mehreren einzelnen Prozessoren in einer Tandemanordnung genutzt
wird. Mehrprozessor- (MP-) Computersysteme können mit mehreren verschiedenen
Topologien gestaltet werden, von denen einige in Abhängigkeit
von den Leistungsanforderungen und den Softwareanforderungen jeder
Anwendung für
bestimmte Anwendungen besser geeignet sind. Eine der häufigsten
MP-Computertopologien ist eine symmetrische Mehrprozessor- (SMP-)
Konfiguration, bei der mehrere Prozessoren allgemeine Ressourcen
gemeinsam nutzen, beispielsweise einen Systemspeicher und ein Ein-/Ausgabe(E/A-) Teilsystem,
die normalerweise mit einer gemeinsam genutzten Systemverbindung
verbunden sind. Solche Computersysteme werden als symmetrisch bezeichnet,
da alle Prozessoren in einem SMP-Computersystem bezüglich im
gemeinsam genutzten Systemspeicher gespeicherter Daten Idealerweise
dieselbe Zugriffslatenzzeit aufweisen.
-
Obwohl SMP-Computersysteme die Verwendung
von verhältnismäßig einfachen
Methodiken der Interprozessorkommunikation und der gemeinsamen Datennutzung
ermöglichen,
weisen sie eine begrenzte Skalierbarkeit auf. Mit anderen Worten,
obwohl die Leistung eines typischen SMP-Computersystems im Allgemeinen
durch eine Skalierung (d.h. durch Hinzufügung von mehr Prozessoren)
erwartungsgemäß verbessert wird,
verhindern innewohnende Bus-, Speicher- und Ein-/Ausgabe- (E/A-)
Bandbreitenbegrenzungen das Erreichen eines deutlichen Vorteils,
indem ein SMP über
eine ausführungsabhängige Größe hinaus
skaliert wird, bei der die Verwendung dieser gemeinsam genutzten
Ressourcen optimiert wird. Folglich sind in der SMP-Topologie selbst
leider in einem gewissen Ausmaß Begrenzungen
der Bandbreite festzustellen, insbesondere im Systemspeicher, wenn
die Systemskalierung zunimmt. Vom Standpunkt einer leistungsfähigen Herstellung aus
lassen sich SMP-Computersysteme
außerdem
nicht gut skalieren. Obwohl beispielsweise einige Komponenten zur
Verwendung in Einprozessor- und SMP-Computersystemen mit geringer
Skalierung (small-scale SMP Computer Systems) optimiert werden können, sind
solche Komponenten oftmals für
die Verwendung in Großrechner-SMPs
nicht leistungsfähig.
Umgekehrt sind Komponenten, die für die Verwendung in Großrechner-SMP-Computersystemen
entwickelt wurden, vom Kostenstandpunkt aus unpraktisch für die Verwendung in
kleineren Systemen.
-
Infolgedessen ist eine als nichtuniformer
Speicherzugriff (NUMA) bekannte MP-Computersystemtopologie als alternative Ausführung entstanden,
die auf Kosten einer zusätzlichen
Komplexität
viele der Begrenzungen von SMP-Computersystemen angeht. Ein typisches
NUMA-Computersystem enthält
eine Anzahl von miteinander verbundenen Knoten, die jeweils einen
oder mehrere Prozessoren und einen lokalen "System"-Speicher enthalten.
Der Speicherzugriff solcher Computersysteme wird als nichtuniform
bezeichnet, da jeder Prozessor in Bezug auf Daten, die in seinem
lokalen Knoten im Systemspeicher gespeichert sind, eine geringere
Zugriffslatenzzeit aufweist als in Bezug auf Daten, die in einem
fernen Knoten im Systemspeicher gespeichert sind. NUMA-Systeme können außerdem als
nichtkohärent
oder cachespeicher-kohärent
klassifiziert werden, je. nachdem, ob zwischen Cachespeichern in
verschiedenen Knoten eine Datenkohärenz aufrechterhalten wird.
Die Komplexität
von cachespeicher-kohärenten
NUMA- (CC-NUMA-) Systemen ist in hohem Maße der zusätzlichen Kommunikation zuzuschreiben,
die für
Hardware zur Aufrechterhaltung der Datenkohärenz nicht nur zwischen den
verschiedenen Ebenen von Cachespeicher und Systemspeicher in jedem Knoten,
sondern auch zwischen Cache- und Systemspeichern in anderen Knoten
benötigt
wird. NUMA-Computersysteme adressieren jedoch die Begrenzungen der
Skalierbarkeit von herkömmlichen
SMP-Computersystemen, da jeder Knoten in einem NUMA-Computersystem
als ein kleineres SMP-System realisiert werden kann. Folglich können die
gemeinsam genutzten Komponenten in jedem Knoten zur Verwendung durch
nur wenige Prozessoren optimiert werden, während das Gesamtsystem aus
der Verfügbarkeit
einer höheren
Parallelität
(larger scale parallelism) Nutzen zieht, wobei eine verhältnismäßig kurze
Latenzzeit eingehalten wird.
-
Ein wichtiger Punkt hinsichtlich
der Leistungsfähigkeit
bei CC-NUMA-Computersystemen ist die mit Kommunikationstransaktionen,
die über
die die Knoten verbindende Zwischenverbindung übertragen werden, verbundene
Latenzzeit. Insbesondere Lesetransaktionen, die bei weitem der häufigste
Transaktionstyp sind, können
im Vergleich zu Lesetransaktionen, deren Zieldaten sich im lokalen
Systemspeicher befinden, eine doppelt so lange Latenzzeit aufweisen;
wenn die Zieldaten sich in einem fernen Systemspeicher befinden.
Die Europäische
Patentanmeldung EP-A-0817072
beschreibt beispielsweise ein Mehrprozessorsystem mit einem Steuereinheit-Teilknoten,
der die Schnittstelle zwischen dem Verarbeitungsknoten und dem restlichen
System verwaltet. Wenn eine Transaktion im Verarbeitungsknoten eingeleitet
wird, wird eine Prüfung
ausgeführt,
um festzustellen, ob die Transaktion lokal ausgeführt werden
kann; ist dies nicht der Fall, ist ein ferner Zugriff erforderlich.
Vor der Feststellung, ob die Anforderung lokal bearbeitet werden
kann, wird nichts unternommen. Aufgrund der verhältnismäßig langen Latenzzeit, die
im Vergleich zu auf lokalen Zwischenverbindungen übertragenen
Leseanforderungen mit über
die Knotenzwischenverbindung übertragenen
Leseanforderungen verbunden ist, ist eine Verringerung der Latenzzeit
von über
die Knotenzwischenverbindung übertragenen
Leseanforderungen hilfreich und wünschenswert. Die Europäische Patentanmeldung
EP-A-0379771 geht dieses Problem teilweise an, wobei versucht wird,
die Latenzzeit zu verringern, falls eine geänderte Version von angeforderten
Daten in einem Cachespeicher aufbewahrt wird.
-
Eine Aufgabe der vorliegenden Erfindung
ist die Bereitstellung eines Verfahrens, das die obigen Nachteile
des Standes der Technik mildert.
-
Unter einem ersten Aspekt stellt
die Erfindung ein Computersystem mit nichtuniformem Speicherzugriff
(NUMA) bereit, das Folgendes umfasst: eine Knotenzwischenverbindung;
und mindestens einen lokalen Knoten und einen fernen Knoten, die
jeweils mit der Knotenzwischenverbindung verbunden sind, wobei der lokale
Knoten eine lokale Zwischenverbindung und der lokale und ferne Knoten
jeweils eine oder mehrere Abhöreinrichtungen
(snoopers) umfasst, wobei die eine oder mehreren Abhöreinrichtungen
des lokalen Knotens eine Knotensteuereinheit enthalten, die zwischen
die lokale Zwischenverbindung und die Knotenzwischenverbindung geschaltet
ist, wobei die Knotensteuereinheit eine von der lokalen Zwischenverbindung
empfangene Anforderungstransaktion vor der Feststellung einer Antwort
des lokalen Knotens spekulativ über
die Knotenzwischenverbindung an den fernen Knoten überträgt, wobei
Abhöreinrichtungen
im lokalen Knoten und im fernen Knoten die Anforderungstransaktion
unabhängig
voneinander verarbeiten, um die Antwort des lokalen Knotens im lokalen
Knoten und. eine Antwort des fernen Knotens im fernen Knoten zu
erhalten, und wobei die Knotensteuereinheit im lokalen Knoten die
Antwort des fernen Knotens auf die Anforderungstransaktion entsprechend
der Antwort des lokalen Knotens bearbeitet.
-
Unter einem zweiten Aspekt stellt
die Erfindung ein Verfahren zur Kommunikation in einem NUMA-Computersystem
bereit, das Folgendes enthält:
eine Knotenzwischenverbindung, die mindestens einen lokalen Knoten
und einen fernen Knoten verbindet, die jeweils eine oder mehrere
Abhöreinrichtungen
enthalten, wobei die eine oder mehreren Abhöreinrichtungen im lokalen Knoten
eine zwischen eine lokale Zwischenverbindung und die Knotenzwischenverbindung
geschaltete Knotensteuereinheit enthalten, wobei das Verfahren Folgendes umfasst:
das spekulative Übertragen
einer von der lokalen Zwischenverbindung empfangenen Anforderungstransaktion über die
Knotenzwischenverbindung zum fernen Knoten vor der Feststellung
einer Antwort des lokalen Knotens; das unabhängige Verarbeiten der Anforderungstransaktion
durch Abhöreinrichtungen
des lokalen Knotens, um die Antwort des lokalen Knotens im lokalen
Knoten und eine ferne Antwort im fernen Knoten zu erhalten; und
auf den Empfang der Antwort des fernen Knotens im lokalen Knoten
hin Bearbeiten der Antwort des fernen Knotens entsprechend der Antwort
des lokalen Knotens.
-
Die neuen Merkmale, die als kennzeichnend
für die
Erfindung betrachtet werden, werden in den angehängten Ansprüchen dargelegt. Die Erfindung
selbst jedoch sowie eine bevorzugte Verwendungsart, weitere Aufgaben
und Vorteile davon, werden am besten mit Bezugnahme auf die folgende
ausführliche
Beschreibung einer veranschaulichenden Ausführungsform verstanden, wenn
sie in Verbindung mit den begleitenden Zeichnungen gelesen wird,
in denen:
-
1 eine
veranschaulichende Ausführungsform
eines NUMA-Computersystems
gemäß der vorliegenden
Erfindung zeigt;
-
2 ein
ausführlicheres
Blockschaltbild der in 1 gezeigten
Knotensteuereinheit ist;
die 3A und 3B logische Übersichts-Flussdiagramme
sind, die zusammen ein beispielhaftes Verfahren zur Verarbeitung
von Anforderungstransaktionen darstellen, in denen Leseanforderungen
in einem Quellenverarbeitungsknoten spekulativ an einen fernen Verarbeitungsknoten
weitergeleitet werden; und
die 4A bis 4D zusammen ein beispielhaftes
Verarbeitungsszenario gemäß dem in
den 3A und 3B dargestellten Verfahren
zeigen.
-
Systemübersicht
-
Mit Bezugnahme auf die Figuren und
insbesondere mit Bezugnahme auf 1 wird
nun eine veranschaulichende Ausführungsform
eines NUMA-Computersystems gemäß der vorliegenden
Erfindung dargestellt. Die dargestellte Ausführungsform kann beispielsweise
als Datenstation, Server oder Großrechner realisiert werden.
Wie dargestellt wird, enthält
ein NUMA-Computersystem 6 eine
Anzahl (Nm2) von Verarbeitungsknoten 8a bis 8n,
die durch eine Knotenzwischenverbindung 22 miteinander
verbunden sind. Die Verarbeitungsknoten 8a bis 8n können jeweils
M (M ≥ 0)
Prozessoren 10, eine lokale Zwischenverbindung 16 und
einen Systemspeicher 18 enthalten, auf den über eine
Speichersteuereinheit 17 zugegriffen wird. Die Prozessoren 10a bis
lOm sind vorzugsweise (jedoch nicht unbedingt) identisch und können einen
Prozessor aus der PowerPCTM-Reihe von Prozessoren
enthalten, die von International Business Machines (IBM) Corporation
von Armonk, New York, erhältlich
sind. Außer
den zum Ausführen
von Programmbefehlen verwendeten Registern, Befehlsflusslogik- und
Ausführungseinheiten,
die im Allgemeinen als der Prozessorkern 12 bezeichnet
werden, enthält
jeder der Prozessoren 10a bis lOm außerdem eine auf dem Chip integrierte Cachespeicherhierarchie,
die zum Zwischenspeichern von Daten zum zugeordneten Prozessorkern 12 aus
den Systemspeichern 18 verwendet wird. Jede Cachespeicherhierarchie 14 kann
beispielsweise einen (L1-) Cachespeicher der Ebene 1 und
einen (L2-) Cachespeicher der Ebene 2 enthalten, die Speicherkapazitäten zwischen
8 und 32 Kilobyte (kB) bzw. 1 bis 16 Megabyte (MB) aufweisen.
-
Jeder der Verarbeitungsknoten 8a bis
8m enthält
außerdem
eine entsprechende Knotensteuereinheit 20, die zwischen
die lokale Zwischenverbindung 16 und eine Knotenzwischenverbindung 22 geschaltet
ist. Jede Knotensteuereinheit 20 dient als lokaler Agent
für ferne
Verarbeitungsknoten 8, indem sie mindestens zwei Funktionen
ausübt.
Als Erstes hört
jede Knotensteuereinheit 20 die zugeordnete lokale Zwischenverbindung 16 ab
und erleichtert die Übertragung
von lokalen Kommunikationstransaktionen zu fernen Verarbeitungsknoten
B. Als Zweites hört
jede Knotensteuereinheit 20 Kommunikationstransaktionen
auf der Knotenzwischenverbindung 22 ab und überträgt (masters)
entsprechende Kommunikationstransaktionen auf die zugeordnete lokale
Zwischenverbindung 16. Die Kommunikation auf jeder lokalen
Zwischenverbindung 16 wird von einer Zuteilungseinrichtung
(arbiter) 24 gesteuert. Zuteilungseinrichtungen 24 regeln
den Zugriff auf lokale Zwischenverbindungen 16 aufgrund
von Busanforderungssignalen, die von den Prozessoren 10 erzeugt
werden, und kompilieren Kohärenzantworten
für abgehörte Kommunikationstransaktionen
auf den lokalen Zwischenverbindungen 16, wie im Folgenden
erläutert
wird.
-
Die lokale Zwischenverbindung 16 ist über eine
Zwischenbusbrücke
(mezzanine bus bridge) 26 mit einem Zwischenbus (mezzanine bus)
30 verbunden, der beispielsweise als ein lokaler Peripheral Component Interconnection-
(PCI-) Bus ausgeführt
werden kann. Die Zwischenbusbrücke 26 stellt
sowohl einen Pfad mit geringer Latenzzeit bereit, durch den die
Prozessoren 10 direkt auf Einheiten unter den E/A-Einheiten 32 und den
Speichereinheiten 34 zugreifen können, die auf den Busspeicher
und/oder E/A-Adressräume
abgebildet werden, als auch einen Pfad mit hoher Bandbreite, durch
den die E/A-Einheiten 32 und die Speichereinheiten 34 auf
den Systemspeicher 18 zugreifen können. Die E/A-Einheiten 32
können
beispielsweise eine Anzeigeeinheit, eine Tastatur, einen grafischen
Zeiger und serielle und parallele Anschlüsse zur Verbindung zu externen
Netzwerken oder angeschlossenen Einheiten beinhalten. Die Speichereinheiten 34 können andererseits optische
Platten oder Magnetplatten enthalten, die einen nichtflüchtigen
Speicher für
das Betriebssystem und Anwendungssoftware bereitstellen.
-
Speicherorganisation
-
Alle Prozessoren 10 im NUMA-Computersystem 6 nutzen
gemeinsam einen einzigen physischen Speicherbereich, was bedeutet,
dass jeder physischen Adresse nur eine einzige Position in einem
der Systemspeicher 18 zugeordnet wird. Folglich kann der
Gesamtinhalt des Systemspeichers, auf den im Allgemeinen jeder Prozessor 10 im
NUMA-Computersystem zugreifen kann, als zwischen den Systemspeichern 18 aufgeteilt
betrachtet werden. In einer veranschaulichenden Ausführungsform
der vorliegenden Erfindung mit vier Verarbeitungsknoten 8 kann
das NUMA-Computersystem
beispielsweise einen physischen Adressraum von 16 Gigabyte (GB)
aufweisen, zu dem sowohl ein allgemeiner Speicherbereich als auch
ein reservierter Bereich gehören.
Der allgemeine Speicherbereich ist in Segmente von 500 MB unterteilt,
wobei jedem der vier Verarbeitungsknoten jedes vierte Segment zugeordnet
wird. Zum reservierten Bereich, der etwa 2 GB enthalten kann, gehören Systemsteuerungsbereiche
und periphere Speicher- und E/A-Bereiche, die jeweils einem entsprechenden
der Verarbeitungsknoten 8 zugeordnet werden.
-
Für
die vorliegende Erläuterung
ist der Verarbeitungsknoten 8, der ein bestimmtes Datenelement
in seinem Systemspeicher 18 speichert, der Heimknoten für dieses
Datenelement; im Gegensatz dazu sind andere der Verarbeitungsknoten 8a bis 8n bezüglich des
bestimmten Datenelementes ferne Knoten.
-
Speicherkohärenz
-
Da die in jedem Systemspeicher 18 gespeicherten
Daten angefordert werden können,
auf diese zugegriffen werden kann und diese von jedem Prozessor 10 im
NUMA-Computersystem 6 geändert werden können, realisiert
das NUMA-Computersystem 6 ein Cachespeicher-Kohärenzprotokoll,
um eine Kohärenz
zwischen den Cachespeichern im selben Verarbeitungsknoten und zwischen
Cachespeichern in verschiedenen Verarbeitungsknoten aufrechtzuerhalten.
Folglich wird das NUMA-Computersystem 6 ordnungsgemäß als ein CC-NUMA-Computersystem
klassifiziert. Das realisierte Cachespeicher-Kohärenzprotokoll ist ausführungsabhängig und
kann beispielsweise das bereits bekannte "Modified, Exclusive, Shared,
Invalid Protocol" (MESI-Protokoll) oder eine Variante desselben
umfassen. Im Folgenden wird vorausgesetzt, dass Cachespeicherhierarchien 14 und
Zuteilungseinrichtung 24 das herkömmliche MESI-Protokoll realisieren,
von dem die Knotensteuereinheiten 20 die M-, Sund I-Zustände erkennen
und den E-Zustand der Richtigkeit halber mit dem M-Zustand verbinden.
Das heißt,
die Knotensteuereinheiten 20 setzen voraus, dass Daten,
die ausschließlich von
einem fernen Cachespeicher zwischengespeichert werden, geändert wurden,
und zwar unabhängig
davon, ob die Daten tatsächlich
geändert
wurden.
-
Verbindungsarchitektur
-
Lokale Zwischenverbindungen 16 und
Knotenzwischenverbindungen 22 können mit jeder bus-basierten
(bus based broadcast architecture) Rundsendearchitektur, vermittlungs-basierten
(switch-based) Rundsendearchitektur oder vermittlungsbasierten Nicht-Rundsendearchitektur
realisiert werden. In einer bevorzugten Ausführungsform wird jedoch mindestens
die Knotenzwischenverbindung 22 als eine vermittlungs-basierte Nichtrundsende-Zwischenverbindung
realisiert, die von dem von IBM Corporation entwickelten 6xx-Übertragungsprotokoll
gesteuert wird. Die lokalen Zwischenverbindungen 16 und
die Knotenzwischenverbindung 22 ermöglichen geteilte Transaktionen,
was bedeutet, dass es keinen feststehenden zeitlichen Zusammenhang zwischen
eine Kommunikationstransaktion umfassendem Adressen- und Datenbesitz
(tenures) gibt und dass Datenpakete auf andere Weise als die zugeordneten
Adressenpakete angefordert werden können. Außerdem wird die Verwendung
von lokalen Zwischenverbindungen 16 und der Knotenzwischenverbindung 22 vorzugsweise
durch eine Pipeline-Verarbeitung von Kommunikationstransaktionen
verbessert, wodurch es ermöglicht wird,
dass eine nachfolgende Kommunikationstransaktion übertragen
werden kann, bevor der Sender einer vorhergehenden Kommunikationstransaktion
Kohärenzantworten
von jedem Empfänger
empfängt.
-
Unabhängig vom realisierten Typ bzw.
von den realisierten Typen der Verbindungsarchitektur werden mindestens
drei Typen von "Paketen" (Paket wird hier generisch verwendet, um
eine einzelne Informationseinheit zu bezeichnen) – Adresse,
Daten und Kohärenzantwort – verwendet,
um Daten über
die Knotenzwischenverbindung
22 zwischen den Verarbeitungsknoten
8 und über die
lokalen Zwischenverbindungen
16 zwischen den Abhöreinrichtungen
zu übertragen.
Mit Bezugnahme auf die Tabellen I und II wird nun eine Zusammenfassung
von wichtigen Feldern und Definitionen für Adressen- bzw. Datenpakete
gegeben. TABELLE
I
Feldname | Beschreibung |
Adresse <0:7> | Änderungswerte,
die Attribute einer Kommunikationstransaktion für Kohärenz, Write-Through und Schutz
definieren. |
Adresse <8:15> | Kennzeichnung,
die zum Kennzeichnen aller Pakete in einer Kommunikationstransaktion
verwendet wird. |
Adresse <16:63> | Adressenteil,
der die physische, virtuelle oder E/A-Adresse in einer Anforderung
anzeigt. |
A-Parität <0:2> | Zeigt
Parität
für Adressenbits <0:63> an. |
T-Deskriptoren | Zeigen
die Größe und den
Typ der Kommunikationstransaktion an. |
TABELLE
II
Feldname | Beschreibung |
Daten <0:127> | Daten
für Lese-
und Schreibtransaktionen |
Datenparität <0:15> | Zeigt
die Parität
für Datenzeilen <0:127> an. |
D-Kennzeichnung <0:7> | Kennzeichnung,
die zum Vergleichen eines Datenpaketes mit einem Adressenpaket verwendet
wird. |
D-gültig <0:1> | Zeigt
an, ob gültige
Daten in Daten-und D-Kennzeichnungsfeldern vorhanden sind. |
-
Wie in den Tabellen I und II angegeben
wird, wird jedes Paket in einer Kommunikationstransaktion mit einer
Transaktionskennzeichnung gekennzeichnet, um es zu ermöglichen,
dass ein Empfängerknoten
oder eine Abhöreinrichtung
die Kommunikationstransaktion ermitteln können, zu der jedes Paket gehört. Fachleute werden
verstehen, dass eine zusätzliche
Flusssteuerlogik und damit verbundene Flusssteuersignale verwendet
werden können,
um die Nutzung der begrenzten Kommunikationsressourcen zu regeln.
-
In jedem Verarbeitungsknoten
8 werden
zwischen jeder Abhöreinrichtung
und der lokalen Zuteilungseinrichtung
24 Status- und Kohärenzantworten übertragen.
Die für
die Statusund Kohärenzkommunikation
verwendeten Signalleitungen in den lokalen Zwischenverbindungen
16 werden
im Folgenden in der Tabelle III zusammengefasst. TABELLE
III
Signalname | Beschreibung |
AStatOut <0:1> | Codierte
Signale, die von jedem Busempfänger
aktiviert werden, um der Zuteilungseinrichtung die Flusssteuerung
oder Fehlerinformationen anzuzeigen. |
AStatIn <0:1> | Codierte
Signale, die von der Zuteilungseinrichtung auf das Zählen der
von den Busempfängern
aktivierten AStatOut-Signale hin aktiviert werden. |
ARespOut <0:2> | Codierte
Signale, die von jedem Busempfänger
aktiviert werden, um der Zuteilungseinrichtung Kohärenzinformationen
anzuzeigen. |
ARespIn <0:2> | Codierte
Signale, die von der Zuteilungseinrichtung auf das Zählen der
von den Busempfängern
aktivierten ARespOut-Signale hin aktiviert werden. |
-
Status- und Kohärenzantworten, die über die
AResp- und AStat-Leitungen
der lokalen Zwischenverbindungen 16 übertragen werden, weisen vorzugsweise
einen feststehenden, jedoch programmierbaren Zeitzusammenhang mit
den zugeordneten Adressenpaketen auf. Beispielsweise werden die
AStatOut-Voten, die eine vorläufige
Anzeige darüber
bereitstellen, ob jede Abhöreinrichtung
ein auf der lokalen Zwischenverbindung 16 übertragenes
Adressenpaket erfolgreich empfangen hat, möglicherweise im zweiten Zyklus
benötigt, der
auf den Empfang des Adressenpaketes folgt. Die Zuteilungseinrichtung 24 kompiliert
die AStatOut-Voten und gibt sodann nach einer feststehenden, jedoch
programmierbaren Anzahl von Zyklen (z. B.
-
nach einem Zyklus) das AStatIn-Votum
aus. Mögliche
AStatOut-Voten werden
unten in Tabelle IV zusammengefasst. TABELLE
IV
AStat-Votum | Bedeutung |
Null | Frei |
Ack | Transaktion
von Abhöreinrichtung
angenommen |
Error | Paritätsfehler
in Transaktion erkannt |
Retry | Transaktion
wiederholen, normalerweise für
Flusssteuerung. |
-
Nach der AStatIn-Periode werden möglicherweise
nach einer feststehenden, jedoch programmierbaren Anzahl von Zyklen
(z. B. nach 2 Zyklen) die ARespOut-Voten benötigt. Außerdem kompiliert die Zuteilungseinrichtung
24 vorzugsweise
während
des nächsten
Zyklus die ARespOut-Voten von jeder Abhöreinrichtung und liefert ein
ARespIn-Votum. Die möglichen
AResp-Voten enthalten vorzugsweise die in Tabelle v aufgelisteten
Kohärenzantworten.
TABELLE
V
Kohärenzantwort | Bedeutung |
Retry | Quelle
der Anforderung muss Transaktion wiederholen – normalerweise aus Gründen der
Flusssteuerung |
Modified
Intervention | Zeile
wird im Cachespeicher geändert
und wird zum Anforderer übertragen |
Shared | Zeile
wird zur gemeinsamen Nutzung im Cachespeicher zwischengespeichert. |
Null | Zeile
ist ungültig
im Cachespeicher |
ReRun | Abgehörte Anforderung
hat eine lange Latenzzeit und Quelle der Anforderung wird angewiesen,
die Transaktion zu einem späteren
Zeitpunkt erneut auszugeben. |
-
Das AResp-Votum "ReRun", das normalerweise
von einer Knotensteuereinheit 20 ausgegeben wird, zeigt
an, dass die abgehörte
Anforderung eine lange Latenzzeit aufweist und dass die Quelle der
Anforderung angewiesen wird, die Transaktion zu einem späteren Zeitpunkt
erneut auszugeben. Im Gegensatz zu einem AResp-Votum "Retry" macht
ein "ReRun" folglich den Empfänger
einer Transaktion, der "ReRun" wählte
(und nicht den Sender der Transaktion) dafür verantwortlich, dass eine
erneute Ausgabe der Kommunikationstransaktion zu einem späteren Zeitpunkt
veranlasst wird.
-
Knotensteuereinheit
-
Mit Bezugnahme auf 2 wird nun ein ausführlicheres Blockschaltbild
einer Knotensteuereinheit 20 im NUMA-Computersystem 6 von 1 dargestellt. Wie in 2 gezeigt wird, enthält jede
Knotensteuereinheit 20, die zwischen eine lokale Zwischenverbindung 16 und
eine Knotenzwischenverbindung 22 geschaltet ist, eine Transaktionsempfangseinheit
(transaction receive unit) (TRU) 40, eine Transaktionsübertragungseinheit
(transaction send unit) (TSU) 42, eine Datenempfangseinheit
(DRU) 44 und eine Datenübertragungseinheit
(DSU) 46. Die TRU 40, die TSU 42, die
DRU 44 und die DSU 46 können beispielsweise mit Field-Programmable Gate
Arrays (FPGAs) oder anwendungsspezifischen integrierten Schaltkreisen
(ASICs) realisiert werden. Wie gezeigt wird, sind die Adressen-
und Datenpfade durch die Knotensteuereinheit 20 gegabelt,
wobei Adressen- (und Kohärenz-)
Pakete von der TRU 40 und der TSU 42 und Datenpakete
von der DSU 44 und der DRU 46 verarbeitet werden.
-
Die TRU 40, die so gestaltet
ist, dass sie den Transaktionsfluss aus der Knotenzwischenverbindung 22 anzeigt,
ist für
das Annehmen von Adressen- und Kohärenzpaketen von der Knotenzwischenverbindung 22,
das Ausgeben von Transaktion auf die lokale Zwischenverbindung 16 und
das Weiterleiten von Antworten an die TSU 42 zuständig. Die
TRU 40 enthält
einen Antwortmultiplexer (mux) 52, der Pakete von der Knotenzwischenverbindung 22 empfängt und
ausgewählte
Pakete an den Busmaster 54 und an eine Kohärenzantwortlogik 56 in
der TSU 42 weiterleitet. Auf den Empfang eines Adressenpaketes
vom Antwortmultiplexer 52 hin kann der Busmaster 54 eine
Kommunikationstransaktion auf seiner lokalen Zwischenverbindung 16 einleiten,
die identisch mit oder verschieden von dem Typ von Kommunikationstransaktion
ist, der vom empfangenen Adressenpaket angezeigt wird.
-
Die TSU 42, die, wie durch
ihre Nomenklatur angezeigt wird, ein Kanal für auf die Knotenzwischenverbindung 22 fließende Transaktionen
ist, enthält
einen Wartepuffer 60 mit mehreren Einträgen (multiple-entry pending
buffer), der Attribute von auf die Knotenzwischenverbindung 22 ausgegebenen
Kommunikationstransaktionen vorübergehend
speichert, die noch ausgeführt
werden müssen.
Die in einem Eintrag des Wartepuffers 60 gespeicherten
Transaktionsattribute enthalten vorzugsweise zumindest die Adresse
(einschließlich
der Kennzeichnung) der Transaktion, den Typ der Transaktion und
die Anzahl von erwarteten Kohärenzantworten. Jeder
Wartepuffereintrag hat einen zugeordneten Status, der auf "Null"
gesetzt werden kann, wodurch angezeigt wird, dass der Wartepuffereintrag
gelöscht
werden kann, oder auf "ReRun", wodurch angezeigt wird, dass die
Transaktion noch immer anstehend ist. Außer der Ausgabe von Adressenpaketen
auf die Knotenzwischenverbindung 22 steht die TSU 42 in
Wechselwirkung mit der TRU 40, um Speicheranforderungstransaktionen zu
verarbeiten, und gibt Befehle an die DRU 44 und die DSU 46 aus,
um die Übertragung
von Daten zwischen der lokalen Zwischenverbindung 16 und
der Knotenzwischenverbindung 22 zu steuern. Die TSU 42 realisiert außerdem das
ausgewählte
(z. B. MSI-) Kohärenzprotokoll
für die
Knotenzwischenverbindung 22 mit der Kohärenzantwortlogik 56 und
verwaltet das Kohärenzverzeichnis 50 mit
der Kohärenzsteuerlogik 58.
-
Das Kohärenzverzeichnis 50 speichert
Meldungen der Systemspeicheradressen von Daten (z. B. Cachespeicherzeilen),
die Cachespeichern in fernen Knoten entnommen wurden, für die der
lokale Verarbeitungsknoten der Heimknoten ist. Die Adressenmeldung
für jede
Cachespeicherzeile wird in Verbindung mit einem Kennzeichner von
jedem fernen Verarbeitungsknoten, der eine Kopie der Cachespeicherzeile
aufweist, und dem Kohärenzstatus
der Cachespeicherzeile in jedem solchen fernen Verarbeitungsknoten
gespeichert. Mögliche
Kohärenzzustände für Einträge im Kohärenzverzeichnis 50 werden
in der Tabelle VI zusammengefasst.
-
-
Wie in Tabelle VI angegeben wird,
ist die Kenntnis der Kohärenzzustände von
in fernen Verarbeitungsknoten zwischengespeicherten Cachespeicherzeilen
ungenau. Der Grund für
diese Ungenauigkeit besteht darin, dass eine fern zwischengespeicherte
Cachespeicherzeile einen Übergang
von S nach I, von E nach I oder von E nach M ausführen kann,
ohne die Knotensteuereinheit 20 des Heimknotens zu benachrichtigen.
-
Verarbeitung von Leseanforderungstransaktionen
-
Mit Bezugnahme auf die 3A und 3H werden
nun zwei logische Übersichts-Flussdiagramme
dargestellt, die zusammen ein beispielhaftes Verfahren zur Verarbeitung
von Leseanforderungstransaktionen gemäß der vorliegenden Erfindung
zeigen. Mit Bezugnahme auf 3A beginnt
der Prozess als Erstes beim Block 70 und geht anschließend weiter
zum Block 72, der einen Prozessor 10 darstellt,
beispielsweise den Prozessor 10a des Verarbeitungsknotens 8a,
der eine Leseanforderungstransaktion auf seine lokale Zwischenverbindung 16 ausgibt.
Die Leseanforderungstransaktion wird von der Knotensteuereinheit 20 und
den restlichen mit der lokalen Zwischenverbindung 16 des
Verarbeitungsknotens 8a verbundenen Abhöreinrichtungen empfangen. Auf
den Empfang der Leseanforderung hin steuern die Abhöreinrichtungen
AStatOut-Voten an, die
von der Zuteilungseinrichtung 24 kompiliert werden, um
ein AStatIn-Votum zu erzeugen, wie beim Block 74 gezeigt
wird. Bevor die Knotensteuereinheit 20 ein AStatOut-Votum "Ack" überträgt, um zu
ermöglichen,
dass die Leseanforderung weitergeht, ordnet sie dem Wartepuffer 60 sowohl
einen Leseeintrag als auch einen "Write-with-clean"-Eintrag zu, falls
die Leseanforderung eine Adresse in einem fernen Systemspeicher 18 angibt. Wie
im Folgenden erläutert
wird, kann die Knotensteuereinheit 20 die Leseanforderung
durch die Zuordnung beider Einträge
spekulativ an den Heimknoten der angeforderten Cachespeicherzeile
weiterleiten und die Antwort auf die Leseanforderung unabhängig vom
Ergebnis des anschließenden
RResp-Votums im Verarbeitungsknoten 8a korrekt bearbeiten.
-
Mit Bezugnahme auf Block 76 wird
nun die Leseanforderung im Grund genommen abgebrochen, falls das
beim Block 74 erzeugte AStatIn-Votum "Retry" ist, zugeordnete
Einträge
im Wartepuffer 60 werden gegebenenfalls freigegeben, und
der Prozess kehrt zurück
zum beschriebenen Block 72. In diesem Fall muss der Prozessor 10a die
Leseanforderung zu einem späteren
Zeitpunkt erneut ausgeben. Falls das beim Block 74 erzeugte
AStatIn-Votum andererseits
nicht "Retry" ist, geht der Prozess vom Block 76 weiter
zum Block 78, der darstellt, wie die Knotensteuereinheit 20 durch
Bezugnahme auf die Speicherabbildung (memory map) feststellt, ob
ihr Verarbeitungsknoten 8 der Heimknoten der in der Leseanforderung
angegebenen physischen Adresse ist. Ist dies der Fall, geht der
Prozess weiter zum Block 80; falls der lokale Verarbeitungsknoten 8 jedoch
nicht der Heimknoten für
die Leseanforderung ist, geht der Prozess weiter zum Block 100.
-
Mit Bezugnahme auf Block 80 stellen
nun die Abhöreinrichtungen
im Verarbeitungsknoten 8a ihre ARespOut-Voten bereit, die
die Zuteilungseinrichtung 24 kompiliert, um ein ARespIn-Votum
zu erzeugen. Falls das Kohärenzverzeichnis 50 anzeigt,
dass die Cachespeicherzeile, die durch die in der Leseanforderung
angegebene Adresse gekennzeichnet wird, zu mindestens einem fernen
Verarbeitungsknoten 8 entnommen wird, wählt die Knotensteuereinheit 20"ReRun",
falls die Bearbeitung der Leseanforderung eine Kommunikation mit
einem fernen Verarbeitungsknoten 8 erforderlich macht.
Falls das Kohärenzverzeichnis 50 beispielsweise
anzeigt, dass eine angeforderte Cachespeicherzeile in einem fernen
Verarbeitungsknoten 8 geändert wird, zieht die Bearbeitung
einer Leseanforderung die Weiterleitung derselben an den fernen
Verarbeitungsknoten 8 nach sich. Falls das Kohärenzverzeichnis 50 anzeigt,
dass eine angeforderte Cachespeicherzeile in einem fernen Verarbeitungsknoten 8 gemeinsam
genutzt wird, zieht die Bearbeitung einer "Readwith-intent-to-modify"-
(RWITM-) Anforderung die Übertragung
eines Abbruchbefehls (Kill command) an den fernen Verarbeitungsknoten 8 nach
sich, um die ferne(n) Kopie(n) der angeforderten Cachespeicherzeile
ungültig
zu machen. Wie beim Block 82 gezeigt wird, geht der Prozess
weiter zum unten beschriebenen Block 90, falls das ARespIn-Votum
nicht "ReRun" ist; falls das ARespIn-Votum "ReRun" ist, geht der
Prozess weiter zum Block 84.
-
Der Block 84 stellt dar,
wie die Knotensteuereinheit 20 über die Knotenzwischenverbindung 22 eine entsprechende
Transaktion zu dem einen oder den mehreren fernen Verarbeitungsknoten 8 überträgt, die
die angeforderte Cachespeicherzeile entnommen haben. Wie oben angemerkt
wurde, kann die Transaktion entweder ein Cachespeicherbefehl (z.
B. Abbruch) oder eine Leseanforderungstransaktion sein. Der Prozess
wird sodann beim Block 86 so lange wiederholt, bis von
der Knotensteuereinheit 20 eine Antwort von jedem fernen Verarbeitungsknoten 8 empfangen
wurde, an den beim Block 84 eine Transaktion übertragen.
wurde. Nach dem Empfang der entsprechenden Anzahl von Antworten,
die den Empfang einer Kopie der angeforderten Cachespeicherzeile
beinhalten können, überträgt die Knotensteuereinheit 20 eine
"ReRun"-Anforderung auf der lokalen Zwischenverbindung 16,
die den anfordernden Prozessor 10a anweist, die Leseanforderung
erneut auszugeben. Wie beim Block 88 angezeigt wird, antwortet
der anfordernde Prozessor 10a auf die "ReRun"-Anforderung,
indem er Leseanforderungstransaktion auf der lokalen Zwischenverbindung 16 erneut
ausgibt. Nach den AStat- und AResp-Perioden wird die Leseanforderung
beim Block 90 bearbeitet, entweder indem die Knotensteuereinheit 20 eine
von einem fernen Verarbeitungsknoten 8 empfangene Kopie
der angeforderten Cachespeicherzeile überträgt oder indem eine andere lokale
Abhöreinrichtung
im Verarbeitungsknoten 8 (z. B. der Speichersteuereinheit 17 oder
einer Cachespeicherhierarchie 14) die angeforderte Cachespeicherzeile überträgt. Anschließend endet
der Prozess beim Block 150.
-
Mit Bezugnahme auf Block 100 leitet
die Knotensteuereinheit 20 des Verarbeitungsknotens 8a die
Leseanforderungstransaktion nun spekulativ an den fernen Verarbeitungsknoten 8 weiter,
der der Heimknoten für die
angeforderte Cachespeicherzeile ist, falls sie feststellt, dass
der Verarbeitungsknoten 8a nicht der Heimknoten für die angeforderte
Cachespeicherzeile ist. Wie in 3A gezeigt
wird, wird die Leseanforderung von der Knotensteuereinheit 20 zumindest
gleichzeitig mit der ARespIn-Periode
weitergeleitet und wird vorzugsweise unmittelbar nach dem Empfang
des AStatIn-Votums von der Zuteilungseinrichtung 24 und
vor der ARespOut-Periode weitergeleitet. Wenn die Leseanforderung
weitergeleitet wird, wird der Status des Leseeintrags im Wartepuffer 60 auf
"ReRun "aktualisiert. Wie beim Block 102 gezeigt wird, stellen die
Abhöreinrichtungen anschließend ihre
ARespOut-Voten bereit, die die Zuteilungseinrichtung 24 kompiliert,
um ein ARespIn-Votum zu erzeugen. Wie beim Block 110 und
den folgenden Blöcken
dargestellt wird, überträgt der Heimknoten
eine Antwort auf die Leseanforderung, und die Knotensteuereinheit 20 bearbeitet
die Antwort gemäß dem ARespIn-Votum
für die
Leseanforderung im Verarbeitungsknoten 8a.
-
Falls das ARespIn-Votum "Retry" ist,
wird die Leseanforderung im Verarbeitungsknoten 8a im Grunde genommen
abgebrochen. Folglich wird der Status der im Wartepuffer 60 zugeordneten
Lese- und Schreibeinträge
auf den Empfang eines ARespIn-Votums "Retry" hin auf Null aktualisiert.
Der Prozess geht sodann vom Block 110 weiter zu den Blöcken 112 und 114,
die darstellen, wie die Knotensteuereinheit 20 darauf wartet,
die angeforderte Cachespeicherzeile vom Heimknoten zu empfangen,
und die Cachespeicherzeile löscht,
wenn sie auf den Nullstatus des Leseeintrags im Wartepuffer 60 hin
empfangen wurde. Der Prozess endet sodann beim Block 150.
-
Falls das ARespIn-Votum "Modified
Intervention" ist, kann die Leseanforderung lokal im Verarbeitungsknoten 8a bearbeitet
werden, ohne (veraltete) Daten vom Heimknoten zu verwenden. Folglich
wird der Status des Leseeintrags im Warteschlangepuffer 60 auf
einen Empfang eines ARespIn-Votums "Modified Intervention" hin auf
"Null" aktualisiert, und der Prozess geht vom Block 102 durch
die Blöcke 110 und 120 zum Block 122.
Der Block 122 stellt die Abhöreinrichtung dar, die während der
ARespOut-Periode "Modified Intervention" wählte, wobei die angeforderte
Cachespeicherzeile auf der lokalen Zwischenverbindung 16 des
Verarbeitungsknotens 8a bereitgestellt wurde. Der Kohärenzstatus
der angeforderten Cachespeicherzeile in der diese bereitstellenden
Abhöreinrichtung
wird sodann von "Modified" auf "Shared" aktualisiert. Auf den Empfang
der angeforderten Cachespeicherzeile hin lädt der anfordernde Prozessor 10a diese
in seine Cachespeicherhierarchie 14, wie beim Block 124 dargestellt
wird. Außerdem
erfasst die Knotensteuereinheit 20 die angeforderte Cachespeicherzeile
von der lokalen Zwischenverbindung 16 und gibt eine diese
enthaltende "Writewith-clean"-Transaktion zum Heimknoten aus, um
den Systemspeicher 18 des Heimknotens mit der geänderten
Cachespeicherzeile zu aktualisieren, wie beim Block 126 gezeigt
wird. Der Prozess geht sodann weiter zum bereits beschriebenen Block 112.
-
Das vom Computersystem 6 realisierte
Kohärenzprotokoll
kann wahlweise "Shared Intervention" unterstützen, das heißt, die
Bearbeitung einer Leseanforderungstransaktion durch eine lokale
Cachespeicherhierarchie 14, die die angeforderte Cachespeicherzeile
in einem gemeinsam genutzten Status zwischenspeichert. Falls "Shared
Intervention" vom Cachespeicher-Kohärenzprotokoll des Computersystems 6 unterstützt wird und
das ARespIn-Votum für
die Anforderungstransaktion "Shared" ist (d.h. "Shared Intervention"),
stellt die Abhöreinrichtung,
die "Shared" wählte,
die angeforderte Cachespeicherzeile auf der lokalen Zwischenverbindung 16 bereit,
wie beim Block 132 gezeigt wird. Auf den Empfang der angeforderten
Cachespeicherzeile hin lädt der
anfordernde Prozessor 10a diese in seine Cachespeicherhierarchie 14,
wie beim Block 134 dargestellt wird. Wenn keine Aktualisierung
des Systemspeichers 18 erforderlich ist, wird der Status
der zugeordneten Lese- und Schreibeinträge im Wartepuffer 60 auf
"Null" aktualisiert, und der Prozess endet beim Block 150.
-
Falls das ARespIn-Votum für die Anforderungstransaktion
im Verarbeitungsknoten 8a"ReRun" ist, wird der Status des
Schreibeintrags im Wartepuffer 60 schließlich auf
"Null" aktualisiert und derjenige des Leseeintrags wird auf "ReRun"
gesetzt. Dir Prozess geht sodann vom Block 102 durch die
Blöcke 110, 120, 130 weiter zum
Block 142, der darstellt, wie die Knotensteuereinheit 20 des
Verarbeitungsknotens 8a wartet, bis die angeforderte Cachespeicherzeile
vom Heimknoten empfangen wird. Auf den Empfang der angeforderten
Cachespeicherzeile vom Heimknoten über die Knotenzwischenverbindung 22 hin überträgt die Knotensteuereinheit 20 diese über die
lokale Zwischenverbindung 16 zum anfordernden Prozessor 10a,
wie beim Block 144 gezeigt wird. Auf den Empfang der angeforderten
Cachespeicherzeile hin lädt
der anfordernde Prozessor 10a diese in seine Cachespeicherhierarchie 14,
wie beim Block 146 dargestellt wird. Der Prozess endet
sodann beim Block 150.
-
Mit Bezugnahme auf 3B wird nun ein logisches Übersichts-Flussdiagramm dargestellt,
das zeigt, wie der Heimknoten eine von einem anderen Verarbeitungsknoten
empfangene Transaktion verarbeitet. Wie dargestellt wird, beginnt
der Prozess beim Block 160 und geht anschließend weiter
zum Block 162, der eine Feststellung zeigt, ob der Heimknoten
eine Transaktion von einem anderen Verarbeitungsknoten über die
Knotenzwischenverbindung 22 empfangen hat. Falls nicht,
wird der Prozess einfach beim Block 162 so lange wiederholt,
bis eine Transaktion von einem anderen Verarbeitungsknoten 8 empfangen
wird. Auf den Empfang einer Transaktion von einem fernen Verarbeitungsknoten 8 durch
die Knotensteuereinheit 20 des Heimknotens hin geht der
Prozess weiter zum Block 164, der darstellt, wie die Knotensteuereinheit 20 des
Heimknotens die beim Block 162 empfangene Transaktion auf
die lokale Zwischenverbindung 16 des Heimknotens überträgt. Falls
die auf die lokale Zwischenverbindung 16 ausgegebene Transaktion
eine Lesetransaktion ist, geht der Prozess weiter zum Block 172,
der darstellt, wie die Leseanforderung von einer Abhöreinrichtung
bearbeitet wird, die eine Kopie der angeforderten Cachespeicherzeile
zur Knotensteuereinheit 20 des Heimknotens überträgt, wie
durch den Entscheidungsblock 170 gezeigt wird. Auf den
Empfang der angeforderten Cachespeicherzeile hin überträgt die Knotensteuereinheit 20 diese über die
Knotenzwischenverbindung 22 zum anfordernden Verarbeitungsknoten 8,
wie beim Block 174 dargestellt wird. Anschließend endet
der Prozess beim Block 190.
-
Falls die auf der lokalen Zwischenverbindung 16 des
Heimknotens übertragene
Transaktion eine Schreib- (z. B. "Write-with-clean"-) Transaktion
ist, geht der Prozess mit erneuter Bezugnahme auf Block 164 durch
die Blöcke 170 und 180 weiter
zum Block 184, der darstellt, wie die Speichersteuereinheit 17 den
Systemspeicher 18 mit der in der Schreibtransaktion enthaltenen
Cachespeicherzeile aktualisiert. Der Prozess endet sodann beim Block 190.
Falls die auf der lokalen Zwischenverbindung 16 des Heimknotens übertragene Transaktion
weder eine Lese- noch eine Schreibtransaktion ist, führt der
Heimknoten den(die) durch die Transaktion beim Block 182 angegebenen
Vorgang(Vorgänge)
aus, und der Prozess endet beim Block 190. Zu den Vorgängen, die
auf eine andere Transaktion als eine Lese- oder Schreibtransaktion
hin ausgeführt
werden können,
gehören
beispielsweise Aktualisierungen der Kohärenzstati von Cachespeicherzeilen,
die in den Cachespeicherhierarchien 14 des Heimknotens
zwischengespeichert werden.
-
Mit Bezugnahme auf die 4A bis 4D wird nun ein beispielhaftes Verarbeitungsszenario
gemäß der vorliegenden
Erfindung dargestellt. Der Klarheit halber wird das beispielhafte
Verarbeitungsszenario im Folgenden unter Verwendung einer vereinfachten
Darstellung des Computersystems 6 mit zwei Verarbeitungsknoten 8a und 8b erläutert, die
jeweils zwei Prozessoren 10a und lOb enthalten. Der Kohärenzstatus
der angeforderten Cachespeicherzeile wird innerhalb der Cachespeicherhierarchie 14 jedes
Prozessors 10 und innerhalb des Kohärenzverzeichnisses 50 des
Heimknotens 8a gezeigt.
-
Wie in 4A gezeigt
wird, gibt der Prozessor lOb des Verarbeitungsknotens 8b als
Erstes eine Leseanforderung für
eine Cachespeicherzeile aus, die in seiner Cachespeicherhierarchie 14 ungültig (d.h.
nicht vorhanden) ist. Auf den Empfang der Leseanforderung hin überträgt die Knotensteuereinheit 20 des
Verarbeitungsknotens 8b die Leseanforderung spekulativ
zum Verarbeitungsknoten 8a, der der Heimknoten der in der Leseanforderung
angegebenen Cachespeicherzeile ist. Nach der spekulativen Weiterleitung
der Leseanforderung zum Verarbeitungsknoten 8a wählt der
Prozessor 10a"Modified Intervention" während der ARespOut-Periode, da seine
Cachespeicherhierarchie 14 die angeforderte Cachespeicherzeile
im geänderten
Status zwischengespeichert hat. Die Zuteilungseinrichtung des Verarbeitungsknotens 8b kompiliert
die ARespout-Voten und überträgt ein ARespIn-Votum
"Modified Intervention" zu jeder Abhöreinrichtung im Verarbeitungsknoten 8b.
-
Wie in 4B gezeigt
wird, empfängt
die Knotensteuereinheit 20 des Verarbeitungsknotens 8a als Nächstes die
spekulativ weitergeleitete Leseanforderung und gibt die Leseanforderung
auf ihre lokale Zwischenverbindung 16 aus. Wie in 4H gezeigt wird, wählt die Knotensteuereinheit 20 auf
eine Anzeige des Kohärenzverzeichnisses 50 hin,
dass die in der Leseanforderung angegebene Cachespeicherzeile im
Verarbeitungsknoten 8b geändert wurde, während der
ARespOut-Periode
"Null". Indem die Knotensteuereinheit 20 diese spezielle
Bedingung erkennt, ist die weitere Verarbeitung der Leseanforderung
möglich,
wie im Folgenden mit Bezugnahme auf 4D erläutert wird.
-
Wie in 4C dargestellt
wird, antwortet der Prozessor 10a des Verarbeitungsknotens 8b unabhängig von
(und möglicherweise
vor, gleichzeitig mit oder nach) der spekulativen Weiterleitung
der Leseanforderung zum Verarbeitungsknoten 8a auf diese,
indem er die angeforderte Cachespeicherzeile auf die lokale Zwischenverbindung 16 überträgt und den
Kohärenzstatus
der angeforderten Cachespeicherzeile in seiner Cacheespeicherhierarchie
14 auf "Shared" aktualisiert. Auf das Abhören der angeforderten Cachespeicherzeile
hin lädt der
anfordernde Prozessor 10b diese in seine Cachespeicherhierarchie 14 und
setzt den zugeordneten Kohärenzstatus
auf "Shared". Außerdem
erfasst die Knotersteuereinheit 20 des Verarbeitungsknotens 8b die
Cachespeicherzeile und gibt eine "Write-with-clean"-Transa.ktion zum
Verarbeitungsknoten 8a aus, die die geänderte Cachespeicherzeile enthält. Auf
den Empfang der "Write-withclean"-Transaktion hin gibt die Knotensteuereinheit 20 des
Verarbeitungsknotens 8a diese über
ihre lokale Zwischenverbindung 16 an den Systemspeicher 18 aus.
Der Systemspeicher 18 des Heimknotens 8a aktualisiert sodann
die entsprechende Speicherzeile mit den geänderten Daten.
-
Mit Bezugnahme auf 4D antwortet der Systemspeicher 18 des
Verarbeitungsknotens 8a unabhängig von (und möglicherweise
vor, gleichzeitig mit oder nach) der in 4A dargestellten Speicheraktualisierung
auf die Leseanforderung, indem er eine möglicherweise veraltete Kopie
der angeforderten Cachespeicherzeile über die lokale Zwischenverbindung 16 an
die Knotensteuereinheit 20 des Verarbeitungsknotens 8a überträgt. Die
Knotensteuereinheit 20 des Verarbeitungsknotens 8a leitet
die Kopie der angeforderten Cachespeicherzeile sodann an die Knotensteuereinheit
des Verarbeitungsknotens 8b weiter, der auf die in ihrem Wartepuffer 60 mit „Null"
markierte Leseanforderung hin die Cachespeicherzeile löscht.
-
Wie beschrieben wurde, stellt die
vorliegende Erfindung ein verbessertes NUMA-Computersystem und eine
verbesserte Kommunikationsmethodik in einem NUMA-Computersystem
bereit. Gemäß der vorliegenden
Erfindung wird eine Leseanforderungstransaktion vor einer Feststellung,
ob die Leseanforderung lokal ohne Eingriff des fernen Verarbeitungsknotens
bearbeitet werden kann, über
die Knotenzwischenverbindung spekulativ an einen fernen (d.h. Heim-)
Verarbeitungsknoten ausgegeben. Wenn der ferne Verarbeitungsknoten
auf die spekulativ weitergeleitete Leseanforderung antwortet, bearbeitet
der anfordernde Verarbeitungsknoten die Antwort gemäß der lokalen
Kohärenzantwort
für die
Leseanforderung. Auf diese Weise kann die Latenzzeit von Kommunikationstransaktionen
erheblich verringert werden.
-
Wie außerdem beschrieben wurde, stellt
die Erfindung ein Computersystem mit nichtuniformen Speicherzugriff
(NUMA) bereit, das mindestens einen lokalen Verarbeitungsknoten
und einen fernen Verarbeitungsknoten enthält, die jeweils mit einer Knotenzwischenverbindung
verbunden sind. Der lokale Verarbeitungsknoten enthält eine
lokale Zwischenverbindung, einen Prozessor und einen mit der lokalen
Zwischenverbindung verbundenen Systemspeicher und eine Knotensteuereinheit,
die zwischen die lokale Zwischenverbindung und die Knotenzwischenverbindung
geschaltet ist. Auf den Empfang einer Leseanforderung von der lokalen
Zwischenverbindung hin überträgt die Knotensteuereinheit
die Leseanforderung über
die Knotenzwischenverbindung spekulativ zum fernen Verarbeitungsknoten.
Auf den Empfang einer Antwort auf die Leseanforderung vom fernen
Verarbeitungsknoten hin bearbeitet die Knotensteuereinheit anschließend die
Antwort gemäß einer
Auswertung der Leseanforderung im lokalen Verarbeitungsknoten. In
einem Verarbeitungsszenario werden beispielsweise Daten, die in
der vom fernen Verarbeitungsknoten empfangenen Antwort enthalten
sind, von der Knotensteuereinheit gelöscht, falls im lokalen Verarbeitungsknoten
eine Kohärenzantwort "Modified
Intervention" empfangen wird.